<?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>CGWebPush</name>
	<version>1.1.3</version>
    <mincmsversion>2.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgaXMgdGhpcz88L2gzPgo8cD5UaGlzIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHByb3ZpZGVzIGEgc2ltcGxlIGFuZCBjb252ZW5pZW50IHdheSB0bzo8L3A+Cjx1bD4KICAgPGxpPkFsbG93IGxvZ2dlZCBpbiBGRVUgdXNlcnMgdG8gc3Vic2NyaWJlIHRvIHB1c2ggbm90aWZpY2F0aW9ucy48L2xpPgogICA8bGk+U2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMgdG8gYSBncm91cCBvZiBGRVUgdXNlcnMgKHdobyBoYXZlIHN1YnNjcmliZWQgd2l0aCBvbmUgb3IgbW9yZSBkZXZpY2VzKS48L2xpPgo8L3VsPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCB0aGUgc2FtZSBhcyBtb2JpbGUgcHVzaCBub3RpZmljYXRpb25zIG9uIEFuZHJvaWQgYW5kIElPUyAod2hpY2ggYm90aCB1c2UgZGlmZmVyZW50IG1ldGhvZG9sb2dpZXMpLiAgVGhpcyB0ZWNobm9sb2d5IGlzIHByb3ZpZGVkIGJ5IHRoZSBicm93c2VyJ3MgamF2YXNjcmlwdCBlbmdpbmUuICAgVGhlcmUgaXMgc3VwcG9ydCBmb3Igd2ViLXB1c2ggb24gQW5kcm9pZCBkZXZpY2VzIHVzaW5nIEZpcmVmb3ggb3IgQ2hyb21lIGJyb3dzZXJzLiAgV2ViLXB1c2ggaXMgYWxzbyBzdXBwb3J0ZWQgb24gbW9zdCBtYWpvciBkZXNrdG9wIGJyb3dzZXJzLjwvcD4KCjxoMz5Ib3cgZG8gSSB1c2UgaXQ/PC9oMz4KPHVsPgogIDxsaT5JbiB5b3VyIHBhZ2UgdGVtcGxhdGUgKG9yIG9uIHNwZWNpZmllZCBwYWdlcykgY2FsbCA8Y29kZT57Q0dXZWJQdXNoIGFjdGlvbj1qc308L2NvZGU+LgogICAgIDxwPlRoaXMgd2lsbCBpbnNlcnQgdGhlIGphdmFzY3JpcHQgdG8gcmVnaXN0ZXIgdGhlIHNlcnZpY2Ugd29ya2VyIGFuZCB0aGUgcmVxdWlyZWQgamF2YXNjcmlwdCB0byB3b3JrIHdpdGggc3Vic2NyaXB0aW9ucy48cD4KICA8L2xpPgogIDxsaT5PbiBhdCBsZWFzdCBvbmUgcGFnZSB0aGF0IGlzIHZpc2libGUgdG8gRkVVIHVzZXJzIGNhbGwgPGNvZGU+e0NHV2ViUHVzaCBhY3Rpb249c3Vic2NyaWJlfTwvY29kZT4uCiAgICAgPHA+VGhpcyB3aWxsIGRpc3BsYXkgYSBzaW1wbGUgYnV0dG9uIHRoYXQgYWxsb3dzIEZFVSB1c2VycyB0byBzdWJzY3JpYmUgYW5kIHVuc3Vic2NyaWJlIHRvIHdlYiBub2ZpY2F0aW9ucyBmcm9tIHlvdXIgd2Vic2l0ZS4KICAgICAgICBJZiB0aGUgYnJvd3NlciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgdGhlbiB0aGUgYnV0dG9uIHdpbGwgYmUgZGlzYWJsZWQsIGFuZCB0aGUgdGl0bGUgb2YgdGhlIGJ1dHRvbiB3aWxsIHN0YXRlIHRoZSBzdGF0dXMuCiAgICAgPC9wPgogIDwvbGk+CiAgPGxpPlZpc2l0IHRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbCBhbmQgc2V0IGFuIG9wdGlvbmFsIHRpdGxlLCBhbmQgaWNvbi4KICAgICA8cD5UaGUgdGl0bGUgc2hvdWxkIGJlIHJlbGF0aXZlbHkgYnJpZWYuICBJZiBvbmUgaXMgbm90IHN1cHBsaWVkLCBhbmQgbm90IHN1cHBsaWVkIHdpdGggaW5kaXZpZHVhbCBtZXNzYWdlcywgdGhlbiB0aGUgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZC48L3A+CiAgICAgPHA+VGhlIGljb24sIGlmIHVzZWQgc2hvdWxkIGJlIGEgc3F1YXJlIGltYWdlIG9mIGF0IGxlYXN0IDk2eDk2IHBpeGVscywgYnV0IG5vdCB0b28gbGFyZ2UgZWl0aGVyLiAgSSByZWNvbW1lbmQgbm8gbGFyZ2VyIHRoYW4gMjU2eDI1NiBhdCB0aGlzIHRpbWUuPC9wPgogIDwvbGk+CiAgPGxpPlZpc2l0IHRoZSBwYWdlIHlvdSBjcmVhdGVkIGluIHN0ZXAgMiBhYm92ZSB3aXRoIGEgc3VwcG9ydGVkIGJyb3dzZXIsIGxvZ2luIHRvIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSwgYW5kIHN1YnNjcmliZSB0byBwdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+VXNlIHRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbCB0byBzZW5kIGEgdGVzdCBub3RpZmljYXRpb24uPC9saT4KICA8bGk+WW91IGNhbiBvcHRpb25hbGx5IHVzZSA8Y29kZT48YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Ntc2NsaSI+Y21zY2xpPC9hPiB3ZWJwdXNoLWZldS1ncm91cDwvY29kZT4gdG8gc2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLjwvbGk+CjwvdWw+Cgo8aDM+U2V0dGluZ3MgYW5kIFNlcnZpY2UgV29ya2VyPC9oMz4KPHA+VGhlIHNldHRpbmdzIHRhYiBpbiB0aGlzIG1vZHVsZSdzIGFkbWluIHBhbmVsIGFsbG93cyBzZXR0aW5nIGEgdGl0bGUsIGFuZCBhbiBpY29uLjxwPgo8cD5UaGUgdGl0bGUgaXMgYSBzdHJpbmcgdG8gdXNlIGFzIHRoZSBkZWZhdWx0IHRpdGxlIGZvciBub3RpZmljYXRpb25zIGlmIGl0IGlzIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkLiAgSWYgdGhpcyBmaWVsZCBpcyBsZWZ0IGVtcHR5IHRoZW4gdGhlIHNpdGUgbmFtZSB3aWxsIGJlIHVzZWQuPC9wPgo8cD5UaGUgaWNvbiBpcyBhIFVSTCB0byBhIHNxdWFyZSBpY29uIChtaW5pbXVtIHJlY29tbWVuZGVkIHNpemUgb2YgOTZ4OTYpIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gZWFjaCBhbmQgZXZlcnkgbm90aWZpY2F0aW9uLjwvcD4KPHA+RWFjaCB0aW1lIHRoZXNlIHNldHRpbmdzIGFyZSBjaGFuZ2VkIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaXMgcmUtZ2VuZXJhdGVkLDwvcD4KPHA+V2hlbiB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0IGlzIHJlLWdlbmVyYXRlZCBpdCBtYXkgbm90IGJlIHJlZnJlc2hlZCBvbiB0aGUgdXNlcnMgYnJvd3NlciB1bnRpbCB0aGUgbmV4dCB0aW1lIGEgdmlzaXRzIGEgcGFnZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBqYXZhc2NyaXB0IHRhZ3Mgd2hlcmUgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIHJlZ2lzdGVyZWQuPC9wPgoKPGgzPlNlbmRpbmcgd2ViLXB1c2ggbm90aWZmaWNhdGlvbnMuPC9oMz4KPHA+QSB0YWIgaW4gdGhlIG1vZHVsZSdzIGFkbWluIHBhbmVsIGFsbG93cyBzZW5kaW5nIGEgd2ViIHB1c2ggbm90aWZpY2F0aW9uIHRvIGFuIEZFVSBncm91cC4gIEl0IHByb3ZpZGVzIGZvciBmaWVsZHMgdG8gc3BlY2lmeSBhIHJlcXVpcmVkIG1lc3NhZ2UgYm9keSAodXAgdG8gMTAwMCBjaGFycyksIGFuIG9wdGlvbmFsIHRpdGxlLCBhbmQgYSBVUkwgdG8gb3BlbiB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgY2xpY2tlZCBvbi48L3A+Cgo8aDM+UmVxdWlyZW1lbnRzOjwvaDM+Cjx1bD4KICA8bGk+WW91ciBzaXRlIG11c3QgYmUgdXNpbmcgSFRUUFMuPC9saT4KICA8bGk+VGhlIGh0dHAgcHJvY2VzcyBtdXN0IGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHJvb3Qgb2YgeW91ciBDTVNNUyBpbnN0YWxsYXRpb24uPC9saT4KICA8bGk+T3BlblNTTCwgY3VybCwgbXVsdGlieXRlIHN1cHBvcnQsIG1jcnlwdCwgYW5kIG90aGVyIGxpYnJhcmllcyBpbnN0YWxsZWQgaW4gdGhlIFBIUCBlbnZpcm9ubWVudC48L2xpPgogIDxsaT5JbiBvcmRlciB0byByZWNlaXZlIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMsIHVzZXJzIG11c3QgaGF2ZSB0aGUgc3VwcG9ydGVkIGJyb3dzZXIgdGhhdCB0aGV5IHVzZWQgdG8gc3Vic2NyaWJlIG9wZW4gYW5kIHJ1bm5pbmcuICBCdXQgdGhleSBkbyBub3QgaGF2ZSB0byBoYXZlIGEgdGFiIG9yIGEgd2luZG93IGFjdGl2ZWx5IHBvaW50aW5nIHRvIHlvdXIgd2Vic2l0ZS48L2xpPgo8L3VsPgoKPGgzPkF2YWlsYWJsZSBBY3Rpb25zPC9oMz4KPHVsPgogIDxsaT5qcyAtIEluc2VydHMgdGhlIGphdmFzY3JpcHQgcmVxdWlyZWQgdG8gcmVnaXN0ZXIgYW5kIGFjdGl2YXRlIHRoZSBzZXJ2aWNlIHdvcmtlciwgIGFuZCB0byB3b3JrIHdpdGggdGhlIHN1YnNjcmlwdGlvbiBVSS48L2xpPgogIDxsaT5zdWJzY3JpYmUgLSBEaXNwbGF5cyBhIGJ1dHRvbiB0aGF0IGFsbG93cyBhIGxvZ2dlZCBpbiBGRVUgdXNlciB0byBzdWJzY3JpYmUgYW5kIHVuc3Vic2NyaWJlLiAgV2lsbCBhbHNvIGRpc3BsYXkgYSBzdGF0dXMgaWYgdGhlIGJyb3dzZXIgaXMgbm90IGNvbXBhdGlibGUuPC9saT4KICA8bGk+dW5zdWJzY3JpYmVfYWxsIC0gQSBzaW1wbGUgYWN0aW9uIHRvIGFsbG93IGEgbG9nZ2VkIGluIEZFVSB1c2VyIHRvIHVuc3Vic2NyaWJlIGZyb20gYWxsIG5vdGlmaWNhdGlvbnMgZnJvbSBhbGwgb2YgaGlzIHJlZ2lzdGVyZWQgZGV2aWNlcy4gIE9uY2UgY29tcGxldGUsIHRoaXMgYWN0aW9uIHdpbGwgcmVkaXJlY3QgYmFjayB0byB0aGUgb3JpZ2luYWwgY29udGVudCBwYWdlLjwvbGk+CjwvdWw+Cgo8aDM+QnJvd3NlciBjb21wYXRpYmlsaXR5PC9oMz4KPHA+Q3VycmVudGx5IHdlYi1wdXNoIHRlY2hub2xvZ3kgaXMgc3VwcG9ydGVkIGJ5IG9ubHkgc29tZSBicm93c2Vycy4gICBNb3N0IG9mIHRoZXNlIGFyZTo8L3A+Cjx1bD4KICAgPGxpPkNocm9tZSBvbiBBbmRyb2lkLCBXaW5kb3dzLCBMaW51eCwgYW5kIE1hY09TPC9saT4KICAgPGxpPkZpcmVmb3ggb24gQW5kcm9pZCwgV2luZG93cywgTGludXgsIGFuZCBNYWNPUzwvbGk+CiAgIDxsaT5TYWZhcmkgb24gTWFjT1MgYW5kIExpbnV4PC9saT4KPC91bD4KPHA+SW9zIHN1cHBvcnQgaXMgcHVycG9ydGVkbHkgJnF1b3Q7aW4gZGV2ZWxvcG1lbnQmcXVvdDsgc28gc3RheSB0dW5lZC48L3A+Cgo8aDM+T3RoZXIgY2FwYWJpbGl0aWVzPC9oMz4KPHVsPgogIDxsaT5UaGlzIG1vZHVsZSBjYW4gYWN0IGFzIGEgbm90aWZpY2F0aW9uLXRyYW5zcG9ydCBmb3IgdGhlIENHTm90aWZpZXIgbW9kdWxlLgogICAgICA8cD5UaGlzIGFsbG93cyBzZW5kaW5nIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgdG8gYWRtaW4gdXNlcnMgb3IgZnJvbnRlbmQgdXNlcnMgd2hlbiB2YXJpb3VzIGV2ZW50cyBoYXBwZW4gaW4geW91ciB3ZWJzaXRlLjwvcD4KICA8L2xpPgogIDxsaT5UaGlzIG1vZHVsZSBjYW4gYWN0IGFzIGEgY2dzb2NpYWxibGFzdGVyLXRyYW5zcG9ydCBmb3IgdGhlIFNvY2lhbEJsYXN0ZXIgbW9kdWxlLgogICAgICA8cD5UaGlzIGFsbG93cyBzZW5kaW5nIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgYXQgdGhlIHNhbWUgdGltZSBhcyB1c2luZyBvdGhlciB0cmFuc3BvcnQgbWVjaGFuaXNtcyB0byBibGFzdCBtZXNzYWdlcyB0byB5b3VyIHVzZXJzIG9uIG11bHRpcGxlIG1lZGlhIGZyb20gb25lIGxvY2F0aW9uLjwvcD4KICA8L2xpPgo8L3VsPgoKPGgzPkNhdmVhdHM8L2gzPgo8cD5TZW5kaW5nIGxhcmdlIGFtb3VudHMgb2Ygbm90aWZpY2F0aW9ucyBjYW4gYmUgcGFydGljdWxhcmx5IHNsb3cgZHVlIHRvIHRoZSBuZWVkIHRvIHBlcmZvcm0gbXVsdGlwbGUgb3V0Z29pbmcgcmVxdWVzdHMuICBUaGVyZWZvcmUgaXQgaXMgYmVzdCBpZiB5b3UgdXNlIHRoZSAid2VicHVzaC1mZXUtZ3JvdXAiIGNvbW1hbmQgcHJvdmlkZWQgYnkgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jbXNjbGkiPmNtc2NsaTwvYT4uIEFzIHRoZXJlIGFyZSBubyB0aW1lIHJlc3RyaWN0aW9ucyBpbiB0aGUgQ0xJIGVudmlyb25tZW50IGFzIG9wcG9zZWQgdG8gdGhlIHdlYiBlbnZpcm9ubWVudC48L3A+Cgo8aDM+SmF2YXNjcmlwdCBBUEk8L2gzPgo8cD5hbGwgZnVuY3Rpb25zIGFyZSBjb250YWluZWQgd2l0aGluIHRoZSBnbG9iYWwgamF2YXNjcmlwdCBvYmplY3QgbmFtZWQgJnF1b3Q7Y2dXZWJQdXNoJnF1b3Q7LiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZ1bmN0aW9ucyBhcmU6PC9wPgo8dWw+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLmlzX3N1YnNjcmliZWQoKTwvY29kZT4gLSBBIGZ1bmN0aW9uIHRvIHJldHVybiBpZiB0aGUgdXNlciBpcyBzdWJzY3JpYmVkIG9yIG5vdC4gIFdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIHVzZXIgaGFzIGNvbXBsZXRlZCBhbGwgc3RlcHMgaW4gdGhpcyBicm93c2VyIHRvIHN1YnNjcmliZSB0byBwdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+PGNvZGU+Ym9vbCBjZ1dlYlB1c2guaXNfY29tcGF0aWJsZSgpPC9jb2RlPiAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+PGNvZGU+Ym9vbCBjZ1dlYlB1c2guaXNfZGVuaWVkKCk8L2NvZGU+IC0gUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGhhcyBhY3RpdmVseSBkZW5pZWQgcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLnN1YnNjcmliZSgpPC9jb2RlPiAtIFdpbGwgc3Vic2NyaWJlIGEgdXNlciwgaWYgdGhleSBoYXZlIG5vdCBleHBsaWNpdGx5IGJsb2NrZWQgcHVzaCBub3RpZmljYXRpb25zIEFORCB0aGUgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+PGNvZGU+Ym9vbCBjZ1dlYlB1c2gudW5zdWJzY3JpYmUoKTwvY29kZT4gLSBXaWxsIHVuc3Vic2NyaWJlIGEgc3Vic2NyaWJlZCB1c2VyLCBpZiB0aGUgYnJvd3NlciBwZXJtaXRzIGl0LjwvbGk+CjwvdWw+Cgo8aDM+UEhQIEFQSTwvaDM+CjxwPlRoaXMgbW9kdWxlIGhhcyBhIHNpbXBsZSBBUEkgdG8gYWxsb3cgY3JlYXRpbmcgYW5kIHNlbmRpbmcgd2ViLXB1c2ggbm90aWZpY3Rpb25zLiAgIERvY3VtZW50YXRpb24gY29taW5nIHNvb24uPC9wPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGUgbW9kdWxlIGF1dGhvciBpcyBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiAgSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkEgYnVnIHRyYWNraW5nIGFuZCBmZWF0dXJlIHJlcXVlc3Qgc3lzdGVtIGhhcyBiZWVuIGNyZWF0ZWQgZm9yIHRoaXMgbW9kdWxlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZnJvbnRlbmR1c2VycyI+aGVyZTwvYT4uICBQbGVhc2UgYmUgdmVyYm9zZSBhbmQgZGVzY3JpcHRpdmUgd2hlbiBzdWJtaXR0aW5nIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzLCBhbmQgZm9yIGJ1ZyByZXBvcnRzIGVuc3VyZSB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBpc3N1ZS48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LiAgV2hlbiBkZXNjcmliaW5nIGFuIGlzc3VlIHBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byBwcm92aWRlIGFsbCByZWxhdmFudCBpbmZvcm1hdGlvbiwgYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0IG9yIHlvdXIgZGlzY3Vzc2lvbiBtYXkgYmUgaWdub3JlZC48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LiAgSG93ZXZlciwgcGxlYXNlIHVzZSB0aGlzIGFzIGEgbGFzdCByZXNvcnQsIGFuZCBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBmb2xsb3dlZCBhbGwgYXBwbGljYWJsZSBpbnN0cnVjdGlvbnMgb24gdGhlIGZvcmdlLCBpbiB0aGUgZm9ydW1zLCBldGMuPC9saT4KPC91bD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgpzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+CjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuNTcuMTwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMS4zPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgogICA8bGk+VmVyc2lvbiAxLjAuMCAtIEluaXRpYWwgcmVsZWFzZS48L2xpPgogICA8bGk+VmVyc2lvbiAxLjEKIAk8dWw+Cgk8bGk+Tm93IGFjdHMgYXMgYSBzb2NpYWwgYmxhc3QgdHJhbnNwb3J0IGZvciB0aGUgQ0dTb2NpYWxCbGFzdCBtb2R1bGUuPC9saT4KCTxsaT5Ob3cgYWN0cyBhcyBhIG5vdGlmaWVyIHRyYW5zcG9ydCBmb3IgdGhlIENHTm90aWZpdGVyIG1vZHVsZS48L2xpPgoJPGxpPk5vdyBzdXBwb3J0cyBpbWFnZXMuPC9saT4KCTxsaT5DYW4gbm93IHNlbmQgd2ViIHB1c2ggbWVzc2FnZXMgdG8gYWRtaW4gdXNlcnMuPC9saT4KCTxsaT5ObyBsb25nZXIgZGVwZW5kcyBvbiBGRVUuPC9saT4KCTwvdWw+CiAgIDwvbGk+CjwvdWw+CjxiciAvPg==]]></about>
	<description><![CDATA[Send notifications to users browsers, even when not visiting your site.]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.57.1</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycgKSApIGV4aXQ7CiR0aGlzLT5TZXRDdXJyZW50VGFiKCdwcmVmcycpOwoKJGRldmVsb3Blcl9tb2RlID0gJGNvbmZpZ1snZGV2ZWxvcGVyX21vZGUnXTsKaWYoICRkZXZlbG9wZXJfbW9kZSAmJiBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywndXBkYXRlc3cnKSAgKSB7CiAgICBcQ0dXZWJQdXNoXHV0aWxzOjp3cml0ZV9zZXJ2aWNlV29ya2VyKCk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CmlmKCBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywnbmV3a2V5cycpICkgewogICAgcmVxdWlyZV9vbmNlKCAndmVuZG9yL2F1dG9sb2FkLnBocCcgKTsKICAgICRrZXlzID0gXE1pbmlzaGxpbmtcV2ViUHVzaFxWQVBJRDo6Y3JlYXRlVmFwaWRLZXlzKCkgOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZhcGlkX3B1YmxpYycsICRrZXlzWydwdWJsaWNLZXknXSApOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZhcGlkX3ByaXZhdGUnLCAka2V5c1sncHJpdmF0ZUtleSddICk7CiAgICAkdGhpcy0+UmVkaXJlY3RUb1RhYigpOwp9CmlmKCBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywnc3VibWl0JykgKSB7CiAgICAkdGl0bGUgPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCRwYXJhbXMsJ3RpdGxlJyk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgndGl0bGUnLCR0aXRsZSk7CiAgICAkaWNvbiA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoJHBhcmFtcywnaWNvbicpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2ljb24nLCRpY29uKTsKICAgIFxDR1dlYlB1c2hcdXRpbHM6OndyaXRlX3NlcnZpY2VXb3JrZXIoKTsKICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7Cn0KCiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX3ByZWZzLnRwbCcpOwokdHBsLT5hc3NpZ24oJ2hhdmVfa2V5cycsIFxDR1dlYlB1c2hcdXRpbHM6OmhhdmVLZXlzKCkgKTsKJHRwbC0+YXNzaWduKCd0aXRsZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlJykpOwokdHBsLT5hc3NpZ24oJ2ljb24nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpY29uJykpOwokdHBsLT5hc3NpZ24oJ2RldmVsb3Blcl9tb2RlJywkZGV2ZWxvcGVyX21vZGUpOwokdHBsLT5kaXNwbGF5KCk7]]></data>
	</file>
	<file>
	  <filename>/action.admin_push.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oIFxDR1dlYlB1c2g6OlNFTkRfUEVSTSApICkgZXhpdDsKCiRtc2cgPSBuZXcgUHVzaE1lc3NhZ2U7CmlmKCBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywnc3VibWl0JykgKSB7CiAgICB0cnkgewogICAgICAgICRzZW5kdG8gPSBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCAkcGFyYW1zLCAnc2VuZHRvJyApOwogICAgICAgICRncm91cCA9IFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICdncm91cCcgKTsKICAgICAgICAkbXNnID0gJG1zZy0+YWRqdXN0V2l0aCggJ3RpdGxlJywgXGNnZV9wYXJhbTo6Z2V0X3N0cmluZyggJHBhcmFtcywgJ3RpdGxlJykgKTsKICAgICAgICAkbXNnID0gJG1zZy0+YWRqdXN0V2l0aCggJ2JvZHknLCBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCAkcGFyYW1zLCAnYm9keScpICk7CiAgICAgICAgJG1zZyA9ICRtc2ctPmFkanVzdFdpdGgoICd1cmwnLCBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCAkcGFyYW1zLCAndXJsJykgKTsKICAgICAgICAkbXNnID0gJG1zZy0+YWRqdXN0V2l0aCggJ3RvcGljJywgXGNnZV9wYXJhbTo6Z2V0X3N0cmluZyggJHBhcmFtcywgJ3RvcGljJykgKTsKCiAgICAgICAgJGxpc3QgPSBudWxsOwogICAgICAgIGlmKCAkZ3JvdXAgKSB7CiAgICAgICAgICAgIHN3aXRjaCggJHNlbmR0byApIHsKICAgICAgICAgICAgY2FzZSAnYWRtaW5fZ3JvdXAnOgogICAgICAgICAgICAgICAgaWYoICRncm91cCApIHsKICAgICAgICAgICAgICAgICAgICAkYWxsX2dyb3VwcyA9IFxHcm91cE9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpLT5Mb2FkR3JvdXBzKCk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCggJGFsbF9ncm91cHMgYXMgJG9iaiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIHN0cnRvbG93ZXIoJG9iai0+bmFtZSkgPT0gc3RydG9sb3dlcigkZ3JvdXApICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGxpc3QgPSAkdGhpcy0+c3RvcmFnZS0+bG9hZF9mb3JfYWRtaW5fZ3JvdXAoICRvYmotPmlkICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnZmV1X2dyb3VwJzoKICAgICAgICAgICAgICAgIGlmKCAkZ3JvdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKICAgICAgICAgICAgICAgICAgICBpZiggJGZldSApICRnaWQgPSAoaW50KSAkZmV1LT5HZXRHcm91cElEKCAkZ3JvdXAgKTsKICAgICAgICAgICAgICAgICAgICBpZiggJGdpZCApICRsaXN0ID0gJHRoaXMtPnN0b3JhZ2UtPmxvYWRfZm9yX2dyb3VwKCAkZ2lkICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiggISRsaXN0ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDb3VsZCBub3QgZmluZCBhbnkgdmFsaWQgdXNlcnMnKTsKICAgICAgICB9CgoKICAgICAgICBpZiggISRtc2ctPmJvZHkgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJHRoaXMtPkxhbmcoJ2Vycl9ib2R5cmVxdWlyZWQnKSk7CiAgICAgICAgaWYoICEkZ3JvdXAgKSAkbGlzdCA9ICR0aGlzLT5zdG9yYWdlLT5sb2FkX2FsbCgpOwoKICAgICAgICAkbl9zZW50ID0gMDsKICAgICAgICBpZiggJGxpc3QgKSB7CiAgICAgICAgICAgICRkaXNwYXRjaGVyID0gbmV3IFdlYlB1c2hEaXNwYXRjaGVyKCAkbGlzdCwgJG1zZyApOwogICAgICAgICAgICAkbl9zZW50ID0gJGRpc3BhdGNoZXItPmRpc3BhdGNoKCk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5TZXRNZXNzYWdlKCAkdGhpcy0+TGFuZygncHVzaF9zdWNjZXNzZnVsX24nLCAkbl9zZW50KSApOwogICAgICAgICR0aGlzLT5SZWRpcmVjdFRvVGFiKCk7CiAgICB9CiAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCAkZS0+R2V0bWVzc2FnZSgpICk7CiAgICB9Cn0KCiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX3B1c2gudHBsJyk7CiR0cGwtPmFzc2lnbignZGF0YScsJG1zZyk7CiR0cGwtPmRpc3BsYXkoKTs=]]></data>
	</file>
	<file>
	  <filename>/action.admin_use_push.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oIENHV2ViUHVzaDo6VVNFX1BFUk0gKSApIGV4aXQ7CgokdHBsID0gJHRoaXMtPkNyZWF0ZVNtYXJ0eVRlbXBsYXRlKCdhZG1pbl91c2VfcHVzaC50cGwnKTsKJHRwbC0+ZGlzcGxheSgpOw==]]></data>
	</file>
	<file>
	  <filename>/action.ajax_subscribe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKdHJ5IHsKICAgICRzdWJzY3JpcHRpb24gPSBqc29uX2RlY29kZShmaWxlX2dldF9jb250ZW50cygncGhwOi8vaW5wdXQnKSk7CiAgICBpZiAoICFpc3NldCgkc3Vic2NyaXB0aW9uLT5lbmRwb2ludCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJOb3QgYSBzdWJzY3JpcHRpb24iKTsKCiAgICAkYWRtaW5fdWlkID0gKGludCkgZ2V0X3VzZXJpZCggRkFMU0UgKTsKICAgICRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiAgICBpZiggJGZldSApICRmZXVfdWlkID0gJGZldS0+TG9nZ2VkSW5JZCgpOwoKICAgICRzdWJzY3JpcHRpb25zID0gW107CiAgICAka2V5ID0gbWQ1KCRzdWJzY3JpcHRpb24tPmVuZHBvaW50KTsKICAgICRtZXRob2QgPSAkX1NFUlZFUlsnUkVRVUVTVF9NRVRIT0QnXTsKICAgIHN3aXRjaCggJG1ldGhvZCApIHsKICAgIGNhc2UgJ1BPU1QnOgogICAgY2FzZSAnUFVUJzoKICAgICAgICAkb2JqID0gbmV3IFN1YnNjcmlwdGlvbjsKICAgICAgICAkb2JqLT5zdWJzY3JpcHRpb24gPSAkc3Vic2NyaXB0aW9uOwogICAgICAgICRvYmotPmZldV91aWQgPSAkZmV1X3VpZDsKICAgICAgICAkb2JqLT5hZG1pbl91aWQgPSAkYWRtaW5fdWlkOwogICAgICAgICR0aGlzLT5zdG9yYWdlLT5zYXZlKCAkb2JqICk7CiAgICAgICAgYXVkaXQoJGZldV91aWQsJ0NHV2ViUHVzaCcsJ1N1YnNjcmlwdGlvbiBhZGRlZCcpOwogICAgICAgIGJyZWFrOwoKICAgIGNhc2UgJ0RFTEVURSc6CiAgICAgICAgJHRoaXMtPnN0b3JhZ2UtPmRlbGV0ZSggJGtleSApOwogICAgICAgIGF1ZGl0KCdDR1dlYlB1c2gnLCdTdWJzY3JpcHRpb24gZGVsZXRlZCcpOwogICAgICAgIGJyZWFrOwoKICAgIGRlZmF1bHQ6CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigicmVxdWVzdCBtZXRob2QgJG1ldGhvZCBub3QgaGFuZGxlZCIpOwogICAgfQp9CmNhdGNoKCBcUnVudGltZUV4Y2VwdGlvbiAkZSApIHsKICAgIFxjZ2VfdXRpbHM6OmxvZ19leGNlcHRpb24oICRlICk7CiAgICBoZWFkZXIoIkhUVFAvMS4wIDQwMyAiLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgaGVhZGVyKCJTdGF0dXM6IDQwMyAiLiRlLT5HZXRNZXNzYWdlKCkpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgXGNnZV91dGlsczo6bG9nX2V4Y2VwdGlvbiggJGUgKTsKICAgIGhlYWRlcigiSFRUUC8xLjAgNTAwICIuJGUtPkdldE1lc3NhZ2UoKSk7CiAgICBoZWFkZXIoIlN0YXR1czogNTAwICIuJGUtPkdldE1lc3NhZ2UoKSk7Cn0KZXhpdCgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSApIGV4aXQ7CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIENHV2ViUHVzaDo6VVNFX1BFUk0gKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigndXNlJywkdGhpcy0+TGFuZygndGFiX3VzZXB1c2gnKSk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIENHV2ViUHVzaDo6U0VORF9QRVJNICkgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NlbmQnLCR0aGlzLT5MYW5nKCd0YWJfc2VuZHB1c2gnKSk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycgKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncHJlZnMnLCR0aGlzLT5MYW5nKCd0YWJfcHJlZnMnKSk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCBDR1dlYlB1c2g6OlVTRV9QRVJNICkgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigndXNlJywkcGFyYW1zKTsKICAgIGluY2x1ZGVfb25jZSggX19ESVJfXy4nL2FjdGlvbi5hZG1pbl91c2VfcHVzaC5waHAnICk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggQ0dXZWJQdXNoOjpTRU5EX1BFUk0gKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzZW5kJywkcGFyYW1zKTsKICAgIGluY2x1ZGVfb25jZSggX19ESVJfXy4nL2FjdGlvbi5hZG1pbl9wdXNoLnBocCcgKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCAnTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnICkgKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigncHJlZnMnKTsKICAgIGluY2x1ZGVfb25jZShfX0RJUl9fLicvYWN0aW9uLmFkbWluX3ByZWZzLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.js.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyBcQ0dXZWJQdXNoXHV0aWxzOjpnZXRfaGVhZF9qYXZhc2NyaXB0KCAkcmV0dXJuaWQgKTsKLyoKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnanMudHBsJyk7CiR0cGwtPmFzc2lnbigncHVibGljX2tleScsIFxDR1dlYlB1c2hcdXRpbHM6OmdldF9wdWJsaWNfdmFwaWRfa2V5KCkgKTsKJHRwbC0+YXNzaWduKCdtb2R1bGVfdXJsX3BhdGgnLCR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkpOwokdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoICdjbnRudDAxJywgJ2FqYXhfc3Vic2NyaWJlJywgJHJldHVybmlkICk7CiR1cmwgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywkdXJsKS4nJnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiR0cGwtPmFzc2lnbignYWpheF91cmwnLCR1cmwpOwokdHBsLT5kaXNwbGF5KCk7Ciov]]></data>
	</file>
	<file>
	  <filename>/action.subscribe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJHRlbXBsYXRlID0gXGNnZV9wYXJhbTo6Z2V0X3N0cmluZygkcGFyYW1zLCd0ZW1wbGF0ZScsJ3N1YnNjcmliZS50cGwnKTsKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgkdGVtcGxhdGUpOwokdHBsLT5kaXNwbGF5KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.unsubscribe_all.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZmV1ID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfRlJPTlRFTkRVU0VSUyk7CmlmKCAhJGZldSApIHJldHVybjsKJHVpZCA9ICRmZXUtPkxvZ2dlZEluSWQoKTsKaWYoICEkdWlkICkgewogICAgYXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKSwnU3Vic2NyaXB0aW9uIHJlcXVpcmVzIGxvZ2luIHRvIEZFVScpOwogICAgcmV0dXJuOwp9CgokZmV1LT5EZWxldGVVc2VyUHJvcGVydHlGdWxsKCBDR1dlYlB1c2g6OlBVU0hfUFJPUEVSVFksICR1aWQgKTsKJHRoaXMtPlJlZGlyZWN0Q29udGVudCggJHVpZCApOw==]]></data>
	</file>
	<file>
	  <filename>/CGWebPush.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNpYm1wbGVEaWdpdGFsUHJvZHVjdHMgLSBBIHNpbXBsZSBtb2R1bGUgZm9yIGhhbmRsaW5nIHB1cmNoYXNlIG9mIGRpZ2l0YWwgcHJvZHVjdHMKIyBWZXJzaW9uOiAxLjAsIGNhbGd1eTEwMDAgPGNhbGd1eTEwMDBAaG90bWFpbC5jb20+CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZpbmFsIGNsYXNzIENHV2ViUHVzaCBleHRlbmRzIENHRXh0ZW5zaW9ucwp7CiAgICBwcm90ZWN0ZWQgJHN0b3JhZ2U7CiAgICBjb25zdCBTRU5EX1BFUk0gPSAnU2VuZCBXZWJQdXNoIE5vdGlmaWNhdGlvbnMnOwogICAgY29uc3QgVVNFX1BFUk0gPSAnUmVjZWl2ZSBXZWJQdXNoIE5vdGlmaWNhdGlvbnMnOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgpOwogICAgICAgICRzbWFydHkgPSBcQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+R2V0U21hcnR5KCk7CiAgICAgICAgaWYoICEkc21hcnR5ICkgcmV0dXJuOwoKICAgICAgICAkdGhpcy0+c3RvcmFnZSA9IG5ldyBcQ0dXZWJQdXNoXFN1YnNjcmlwdGlvblN0b3JhZ2UoICR0aGlzLT5HZXREYigpICk7CiAgICB9CgogICAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9CiAgICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzEuMS4zJzsgfQogICAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ2NhbGd1eTEwMDAnOyB9CiAgICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJzsgfQogICAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiB0cnVlOyB9CiAgICBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIHRydWU7IH0KICAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgfQogICAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMi4yJzsgfQogICAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7IH0KICAgIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOyB9CiAgICBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIGZ1bmN0aW9uIExhenlMb2FkRnJvbnRlbmQoKSB7IHJldHVybiBGQUxTRTsgfQogICAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgeyByZXR1cm4gWyAnQ0dFeHRlbnNpb25zJz0+JzEuNTcuMScgXTsgfQoKICAgIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIHNlbGY6OlVTRV9QRVJNICkgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggc2VsZjo6U0VORF9QRVJNICkKICAgICAgICAgICAgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUFkbWluKCkKICAgIHsKICAgICAgICBcQ01TTVNcSG9va01hbmFnZXI6OmFkZF9ob29rKCdhZG1pbl9hZGRfaGVhZHRleHQnLGZ1bmN0aW9uKCl7CiAgICAgICAgICAgICAgICAkZGZsdF9jb250ZW50X2lkID0gXENvbnRlbnRPcGVyYXRpb25zOjpnZXRfaW5zdGFuY2UoKS0+R2V0RGVmYXVsdENvbnRlbnQoKTsKICAgICAgICAgICAgICAgICRvdXQgPSBcQ0dXZWJQdXNoXHV0aWxzOjpnZXRfaGVhZF9qYXZhc2NyaXB0KCAkZGZsdF9jb250ZW50X2lkICk7CiAgICAgICAgICAgICAgICByZXR1cm4gJG91dDsKICAgICAgICB9KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkKICAgIHsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndGVtcGxhdGUnLENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEhhc0NhcGFiaWxpdHkoJGNhcGFiaWxpdHksJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgaWYoICRjYXBhYmlsaXR5ID09ICdjbGljb21tYW5kcycgKSByZXR1cm4gdHJ1ZTsKICAgICAgICBpZiggJGNhcGFiaWxpdHkgPT0gJ25vdGlmaWNhdGlvbl90cmFuc3BvcnQnICkgcmV0dXJuIFRSVUU7CiAgICAgICAgaWYoICRjYXBhYmlsaXR5ID09ICdjZ19zb2NpYWxibGFzdF90cmFuc3BvcnQnICkgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9jbGlfY29tbWFuZHMoICRhcHAgKQogICAgewogICAgICAgIGlmKCAhICRhcHAgaW5zdGFuY2VvZiBcQ01TTVNcQ0xJXEFwcCApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oX19NRVRIT0RfXy4nIENhbGxlZCBmcm9tIG91dHNpZGUgb2YgY21zY2xpJyk7CiAgICAgICAgaWYoICFjbGFzc19leGlzdHMoJ1xcQ01TTVNcXENMSVxcR2V0T3B0RXh0XFxDb21tYW5kJykgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKF9fTUVUSE9EX18uJyBDYWxsZWQgZnJvbSBvdXRzaWRlIG9mIGNtc2NsaScpOwoKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgJG91dFtdID0gbmV3IFxDR1dlYlB1c2hcV2ViUHVzaENvbW1hbmQoICRhcHAsICR0aGlzLT5zdG9yYWdlICk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0X3RyYW5zcG9ydF9uYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3RyYW5zcG9ydF9uYW1lJyk7IH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3RyYW5zcG9ydF9wcm9maWxlKCkKICAgIHsKICAgICAgICAkcHJvZmlsZSA9IG5ldyBcQ0dOb3RpZmllclx0cmFuc3BvcnRfcHJvZmlsZTsKICAgICAgICAkcHJvZmlsZS0+bW9kdWxlID0gJHRoaXMtPkdldE5hbWUoKTsKICAgICAgICAkcHJvZmlsZS0+dHJhbnNwb3J0X2Rlc2MgPSAkdGhpcy0+TGFuZygndHJhbnNwb3J0X2Rlc2MnKTsKICAgICAgICAkcHJvZmlsZS0+dHJhbnNwb3J0ID0gJ3dlYi1wdXNoJzsKICAgICAgICAkcHJvZmlsZS0+Y2hhcmxpbWl0ID0gMTAyNDsKICAgICAgICAkcHJvZmlsZS0+dGl0bGUgPSB0cnVlOwogICAgICAgICRwcm9maWxlLT5waWN0dXJlID0gdHJ1ZTsKICAgICAgICAkcHJvZmlsZS0+bGluayA9IHRydWU7CiAgICAgICAgcmV0dXJuICRwcm9maWxlOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldF9zZW5kZXJfaW5mbygpCiAgICB7CiAgICAgICAgJHJlcyA9IG5ldyBzYl9zZW5kZXJfaW5mbygkdGhpcy0+R2V0TmFtZSgpLCdXZWIgUHVzaCBOb3RpZmljYXRpb24nLDEwMjQsMSk7CiAgICAgICAgJHJlc1snbGluayddID0gJHJlc1sndGl0bGUnXSA9IDE7CiAgICAgICAgJHJlc1snaW5mb19tZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnaW5mb19zZW5kZXJfd2VicHVzaCcpOwogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIC8vIGNnbm90aWZpZXIKICAgIGZ1bmN0aW9uIHNlbmRfbWVzc2FnZShub3RpZmljYXRpb25fbWVzc2FnZSAkbXNnLCRwcmVwYXJlZCA9IGZhbHNlKQogICAgewogICAgICAgICRtc2cgPSBcQ0dXZWJQdXNoXFB1c2hNZXNzYWdlOjpmcm9tX25vdGlmaWNhdGlvbiggJG1zZyApOwoKICAgICAgICAkZGF0YSA9IG51bGw7CiAgICAgICAgaWYoICEkbXNnLT50byApIHJldHVybjsKICAgICAgICBpZiggJG1zZy0+dG8gPiAwICkgewogICAgICAgICAgICAkZGF0YSA9ICR0aGlzLT5zdG9yYWdlLT5sb2FkX2Zvcl91c2VyKCAkbXNnLT50byApOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmKCAkbXNnLT50byA8IDAgKSB7CiAgICAgICAgICAgIC8vIHNpbGVudGx5IGlnbm9yZQogICAgICAgICAgICAkZGF0YSA9ICR0aGlzLT5zdG9yYWdlLT5sb2FkX2Zvcl9hZG1pbl91c2VyKCAkbXNnLT50byAqIC0xICk7CiAgICAgICAgfQoKICAgICAgICBpZiggIWNvdW50KCRkYXRhKSApIHJldHVybjsKICAgICAgICAkZGlzcGF0Y2hlciA9IG5ldyBcQ0dXZWJQdXNoXFdlYlB1c2hEaXNwYXRjaGVyKCAkZGF0YSwgJG1zZyApOwogICAgICAgICRkaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwogICAgICAgIHJldHVybiBUUlVFOwogICAgfQoKICAgIC8vIGNnc29jaWFsYmxhc3RlcgogICAgcHVibGljIGZ1bmN0aW9uIGJyb2FkY2FzdF9tZXNzYWdlKG5vdGlmaWNhdGlvbl9tZXNzYWdlICRtc2cpCiAgICB7CiAgICAgICAgLy8gaWdub3JlcyB0aGUgdG8sIGFuZCB0b19ncm91cCBmb3JtYXQuLi4gYW5kIHNlbmRzIGEgd2ViIHB1c2ggdG8gZXZlcnkgZGV2aWNlIHdlIGtub3cgYWJvdXQuCiAgICAgICAgJG1zZyA9IFxDR1dlYlB1c2hcUHVzaE1lc3NhZ2U6OmZyb21fbm90aWZpY2F0aW9uKCAkbXNnICk7CiAgICAgICAgJGxpc3QgPSAkdGhpcy0+c3RvcmFnZS0+bG9hZF9hbGwoKTsKICAgICAgICBpZiggIWNvdW50KCRsaXN0KSApIHJldHVybjsKICAgICAgICAkZGlzcGF0Y2hlciA9IG5ldyBcQ0dXZWJQdXNoXFdlYlB1c2hEaXNwYXRjaGVyKCAkbGlzdCwgJG1zZyApOwogICAgICAgICRkaXNwYXRjaGVyLT5kaXNwYXRjaCgpOwogICAgfQoKfSAvLyBjbGFzcwo=]]></data>
	</file>
	<file>
	  <filename>/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInJlcXVpcmUiOiB7CiAgICAgICAgIm1pbmlzaGxpbmsvd2ViLXB1c2giOiAiXjEuNCIKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNjb21wb3Nlci1sb2NrLXRoZS1sb2NrLWZpbGUiLAogICAgICAgICJUaGlzIGZpbGUgaXMgQGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IgogICAgXSwKICAgICJjb250ZW50LWhhc2giOiAiZjQxNGM2YTA4NTdhODY4OWIxOWI1OTM0NzBmNTA2ZmMiLAogICAgInBhY2thZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiYmViZXJsZWkvYXNzZXJ0IiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuOS42IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iZWJlcmxlaS9hc3NlcnQuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWM5ZTRjZjBiNjM4OTBlZGNlODQ0ZWUzOTIyZTJiOTVhNTI2ZTkzNiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2JlYmVybGVpL2Fzc2VydC96aXBiYWxsL2VjOWU0Y2YwYjYzODkwZWRjZTg0NGVlMzkyMmUyYjk1YTUyNmU5MzYiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJlYzllNGNmMGI2Mzg5MGVkY2U4NDRlZTM5MjJlMmI5NWE1MjZlOTM2IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtbWJzdHJpbmciOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC44LjM1fF41LjciCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkFzc2VydFxcIjogImxpYi9Bc3NlcnQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJsaWIvQXNzZXJ0L2Z1bmN0aW9ucy5waHAiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTItQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJCZW5qYW1pbiBFYmVybGVpIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAia29udGFrdEBiZWJlcmxlaS5kZSIsCiAgICAgICAgICAgICAgICAgICAgInJvbGUiOiAiTGVhZCBEZXZlbG9wZXIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlJpY2hhcmQgUXVhZGxpbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJycXVhZGxpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJDb2xsYWJvcmF0b3IiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGluIGFzc2VydGlvbiBsaWJyYXJ5IGZvciBpbnB1dCB2YWxpZGF0aW9uIGluIGJ1c2luZXNzIG1vZGVscy4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiYXNzZXJ0IiwKICAgICAgICAgICAgICAgICJhc3NlcnRpb24iLAogICAgICAgICAgICAgICAgInZhbGlkYXRpb24iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTgtMDYtMTFUMTc6MTU6MjUrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImZncm9zc2UvcGhwYXNuMSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS4zIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDAyNDQ1MDAzODRmOGI5NmY1OTUyMDc2ZjNlMDVmYjU2YTgxNWM1NSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2Zncm9zc2UvUEhQQVNOMS96aXBiYWxsLzQwMjQ0NTAwMzg0ZjhiOTZmNTk1MjA3NmYzZTA1ZmI1NmE4MTVjNTUiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDI0NDUwMDM4NGY4Yjk2ZjU5NTIwNzZmM2UwNWZiNTZhODE1YzU1IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuNi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjUiLAogICAgICAgICAgICAgICAgInNhdG9vc2hpL3BocC1jb3ZlcmFsbHMiOiAiZGV2LW1hc3RlciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAicGhwLWN1cmwiOiAiRm9yIGxvYWRpbmcgT0lEIGluZm9ybWF0aW9uIGZyb20gdGhlIHdlYiBpZiB0aGV5IGhhdmUgbm90IGJlZSBkZWZpbmVkIHN0YXRpY2FsbHkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNS54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJGR1xcIjogImxpYi8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGcmllZHJpY2ggR3Jvw59lIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZnJpZWRyaWNoLmdyb3NzZUBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZSIsCiAgICAgICAgICAgICAgICAgICAgInJvbGUiOiAiQXV0aG9yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UvUEhQQVNOMS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIFBIUCBGcmFtZXdvcmsgdGhhdCBhbGxvd3MgeW91IHRvIGVuY29kZSBhbmQgZGVjb2RlIGFyYml0cmFyeSBBU04uMSBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBJVFUtVCBYLjY5MCBFbmNvZGluZyBSdWxlcy4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UvUEhQQVNOMSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJERVIiLAogICAgICAgICAgICAgICAgImFzbi4xIiwKICAgICAgICAgICAgICAgICJhc24xIiwKICAgICAgICAgICAgICAgICJiZXIiLAogICAgICAgICAgICAgICAgImJpbmFyeSIsCiAgICAgICAgICAgICAgICAiZGVjb2RpbmciLAogICAgICAgICAgICAgICAgImVuY29kaW5nIiwKICAgICAgICAgICAgICAgICJ4LjUwOSIsCiAgICAgICAgICAgICAgICAieC42OTAiLAogICAgICAgICAgICAgICAgIng1MDkiLAogICAgICAgICAgICAgICAgIng2OTAiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMTItMTdUMTA6MTg6MjArMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImd1enpsZWh0dHAvZ3V6emxlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiNi4zLjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDA3YjBjYjg4MGFjZTg1YzliNjNjNWY5NTUxZGI0OThjYjJkNTBiYSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUvemlwYmFsbC80MDdiMGNiODgwYWNlODVjOWI2M2M1Zjk1NTFkYjQ5OGNiMmQ1MGJhIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDA3YjBjYjg4MGFjZTg1YzliNjNjNWY5NTUxZGI0OThjYjJkNTBiYSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9wcm9taXNlcyI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjEuNCIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS41IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWN1cmwiOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjguMzUgfHwgXjUuNyB8fCBeNi40IHx8IF43LjAiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiXjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAicHNyL2xvZyI6ICJSZXF1aXJlZCBmb3IgdXNpbmcgdGhlIExvZyBtaWRkbGV3YXJlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICI2LjMtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIGlzIGEgUEhQIEhUVFAgY2xpZW50IGxpYnJhcnkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL2d1enpsZXBocC5vcmcvIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNsaWVudCIsCiAgICAgICAgICAgICAgICAiY3VybCIsCiAgICAgICAgICAgICAgICAiZnJhbWV3b3JrIiwKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJodHRwIGNsaWVudCIsCiAgICAgICAgICAgICAgICAicmVzdCIsCiAgICAgICAgICAgICAgICAid2ViIHNlcnZpY2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTgtMDQtMjJUMTU6NDY6NTYrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImd1enpsZWh0dHAvcHJvbWlzZXMiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2MS4zLjEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJhNTlkYTZjZjYxZDgwMDYwNjQ3ZmY0ZDNlYjJjMDNhMmJjNjk0NjQ2IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL3Byb21pc2VzL3ppcGJhbGwvYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImE1OWRhNmNmNjFkODAwNjA2NDdmZjRkM2ViMmMwM2EyYmM2OTQ2NDYiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuNS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcUHJvbWlzZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibXRkb3dsaW5nQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHdXp6bGUgcHJvbWlzZXMgbGlicmFyeSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJwcm9taXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE2LTEyLTIwVDEwOjA3OjExKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3BzcjciLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuMiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZjViOGE4NTEyZTJiNThiMDA3MWE3MjgwZTM5ZjE0ZjcyZTA1ZDg3YyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9wc3I3L3ppcGJhbGwvZjViOGE4NTEyZTJiNThiMDA3MWE3MjgwZTM5ZjE0ZjcyZTA1ZDg3YyIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImY1YjhhODUxMmUyYjU4YjAwNzFhNzI4MGUzOWYxNGY3MmUwNWQ4N2MiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuNC4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlIjogIn4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJwcm92aWRlIjogewogICAgICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UtaW1wbGVtZW50YXRpb24iOiAiMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcUHNyN1xcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibXRkb3dsaW5nQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQU1ItNyBtZXNzYWdlIGltcGxlbWVudGF0aW9uIHRoYXQgYWxzbyBwcm92aWRlcyBjb21tb24gdXRpbGl0eSBtZXRob2RzIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiLAogICAgICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAgICAgInJlc3BvbnNlIiwKICAgICAgICAgICAgICAgICJzdHJlYW0iLAogICAgICAgICAgICAgICAgInVyaSIsCiAgICAgICAgICAgICAgICAidXJsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE3LTAzLTIwVDE3OjEwOjQ2KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJtZGFudGVyL2VjYyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYwLjQuNSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5ZWQ2MDE3ZmJhZTJmZDExMDVlMGQ4MWU3MDMwMDdkMzUzYjc1ODdiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwZWNjL3BocGVjYy96aXBiYWxsLzllZDYwMTdmYmFlMmZkMTEwNWUwZDgxZTcwMzAwN2QzNTNiNzU4N2IiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5ZWQ2MDE3ZmJhZTJmZDExMDVlMGQ4MWU3MDMwMDdkMzUzYjc1ODdiIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIioiLAogICAgICAgICAgICAgICAgImZncm9zc2UvcGhwYXNuMSI6ICJ+MS41IiwKICAgICAgICAgICAgICAgICJwYXJhZ29uaWUvcmFuZG9tX2NvbXBhdCI6ICJeMXxeMiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS42LjAsIDw3LjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuMXx+NS4wIiwKICAgICAgICAgICAgICAgICJzcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyIjogIn4yIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3lhbWwiOiAifjIuNnx+My4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJNZGFudGVyXFxFY2NcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWF0eWFzIERhbnRlciIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9tYXRlamRhbnRlci5jb20vIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJBdXRob3IiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRoaWJhdWQgRmFicmUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ0aGliYXVkQGF6dGVjaC5pbyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9henRlY2guaW8iLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogIk1haW50YWluZXIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQSFAgRWxsaXB0aWMgQ3VydmUgQ3J5cHRvZ3JhcGh5IGxpYnJhcnkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiRGlmZmllIiwKICAgICAgICAgICAgICAgICJFQ0RTQSIsCiAgICAgICAgICAgICAgICAiSGVsbG1hbiIsCiAgICAgICAgICAgICAgICAiY3VydmUiLAogICAgICAgICAgICAgICAgImVjZGgiLAogICAgICAgICAgICAgICAgImVsbGlwdGljIiwKICAgICAgICAgICAgICAgICJuaXN0cDE5MiIsCiAgICAgICAgICAgICAgICAibmlzdHAyMjQiLAogICAgICAgICAgICAgICAgIm5pc3RwMjU2IiwKICAgICAgICAgICAgICAgICJuaXN0cDUyMSIsCiAgICAgICAgICAgICAgICAicGhwZWNjIiwKICAgICAgICAgICAgICAgICJzZWNwMjU2azEiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMTItMTJUMTI6MTM6MzArMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIm1pbmlzaGxpbmsvd2ViLXB1c2giLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2MS40LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjY1ZmNkODBmY2NlY2MyOWE0ZGY3ZmJmNDdjM2ZiYzk1NThlMDdkOTQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC96aXBiYWxsLzY1ZmNkODBmY2NlY2MyOWE0ZGY3ZmJmNDdjM2ZiYzk1NThlMDdkOTQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2NWZjZDgwZmNjZWNjMjlhNGRmN2ZiZjQ3YzNmYmM5NTU4ZTA3ZDk0IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNi4yIiwKICAgICAgICAgICAgICAgICJsaWItb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJtZGFudGVyL2VjYyI6ICJeMC40LjAiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNS42IHx8IF43LjAiLAogICAgICAgICAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9qb3NlIjogIl42LjAiLAogICAgICAgICAgICAgICAgInNwb21reS1sYWJzL3BocC1hZXMtZ2NtIjogIl4xLjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiNS43LioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIk1pbmlzaGxpbmtcXFdlYlB1c2hcXCI6ICJzcmMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJMb3VpcyBMYWdyYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImxhZ3JhbmdlLmxvdWlzQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiV2ViIFB1c2ggbGlicmFyeSBmb3IgUEhQIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJQdXNoIEFQSSIsCiAgICAgICAgICAgICAgICAiV2ViUHVzaCIsCiAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9ucyIsCiAgICAgICAgICAgICAgICAicHVzaCIsCiAgICAgICAgICAgICAgICAid2ViIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE3LTA2LTI4VDE5OjAzOjQwKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwYXJhZ29uaWUvcmFuZG9tX2NvbXBhdCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjAuMTciLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcmFnb25pZS9yYW5kb21fY29tcGF0LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjI5YWYyNGYyNWJhYjgzNGZjYmIzOGFkMmE2OWZhOTNiODY3ZTA3MGQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9wYXJhZ29uaWUvcmFuZG9tX2NvbXBhdC96aXBiYWxsLzI5YWYyNGYyNWJhYjgzNGZjYmIzOGFkMmE2OWZhOTNiODY3ZTA3MGQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyOWFmMjRmMjViYWI4MzRmY2JiMzhhZDJhNjlmYTkzYjg2N2UwNzBkIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICI0Lip8NS4qIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtbGlic29kaXVtIjogIlByb3ZpZGVzIGEgbW9kZXJuIGNyeXB0byBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSByYW5kb20gYnl0ZXMuIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJsaWIvcmFuZG9tLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlBhcmFnb24gSW5pdGlhdGl2ZSBFbnRlcnByaXNlcyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlY3VyaXR5QHBhcmFnb25pZS5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3BhcmFnb25pZS5jb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQSFAgNS54IHBvbHlmaWxsIGZvciByYW5kb21fYnl0ZXMoKSBhbmQgcmFuZG9tX2ludCgpIGZyb20gUEhQIDciLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiY3Nwcm5nIiwKICAgICAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAicHNldWRvcmFuZG9tIiwKICAgICAgICAgICAgICAgICJyYW5kb20iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTgtMDctMDRUMTY6MzE6MzcrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBzci9jYWNoZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2NhY2hlLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQxMWI1MGFkMjIzMjUwY2YxN2I4NmUzODM4MzQxM2Y1YTY3NjRiZjgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2NhY2hlL3ppcGJhbGwvZDExYjUwYWQyMjMyNTBjZjE3Yjg2ZTM4MzgzNDEzZjVhNjc2NGJmOCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQxMWI1MGFkMjIzMjUwY2YxN2I4NmUzODM4MzQxM2Y1YTY3NjRiZjgiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxDYWNoZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBjYWNoaW5nIGxpYnJhcmllcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjYWNoZSIsCiAgICAgICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgICAgICJwc3ItNiIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0wOC0wNlQyMDoyNDoxMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicHNyL2h0dHAtbWVzc2FnZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNjU2MWJmMjhkNTIwMTU0ZTRiMGVjNzJiZTk1NDE4YWJlNmQ5MzYzIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLW1lc3NhZ2UvemlwYmFsbC9mNjU2MWJmMjhkNTIwMTU0ZTRiMGVjNzJiZTk1NDE4YWJlNmQ5MzYzIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZjY1NjFiZjI4ZDUyMDE1NGU0YjBlYzcyYmU5NTQxOGFiZTZkOTM2MyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXE1lc3NhZ2VcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUEhQLUZJRyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci03IiwKICAgICAgICAgICAgICAgICJyZXF1ZXN0IiwKICAgICAgICAgICAgICAgICJyZXNwb25zZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0wOC0wNlQxNDozOTo1MSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYWVzLWtleS13cmFwIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjMuMC4zIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9hZXMta2V5LXdyYXAuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDcyZTMxMmVhMTE5YzRjYzMzMDEyZWRjNWU3ZThjM2YzZGVmMGQ2NiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC96aXBiYWxsLzA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwNzJlMzEyZWExMTljNGNjMzMwMTJlZGM1ZTdlOGMzZjNkZWYwZDY2IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJiZWJlcmxlaS9hc3NlcnQiOiAiXjIuNCIsCiAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAgICAgImxpYi1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNS40fF43LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuNXxeNS4wIiwKICAgICAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjMuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJBRVNLV1xcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBRVMgS2V5IFdyYXAgZm9yIFBIUC4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJBMTI4S1ciLAogICAgICAgICAgICAgICAgIkExOTJLVyIsCiAgICAgICAgICAgICAgICAiQTI1NktXIiwKICAgICAgICAgICAgICAgICJSRkMzMzk0IiwKICAgICAgICAgICAgICAgICJSRkM1NjQ5IiwKICAgICAgICAgICAgICAgICJhZXMiLAogICAgICAgICAgICAgICAgImtleSIsCiAgICAgICAgICAgICAgICAicGFkZGluZyIsCiAgICAgICAgICAgICAgICAid3JhcCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMy0yNVQyMTowNzoxMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMC4yIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Jhc2U2NHVybC96aXBiYWxsL2VmNmQ1ZmI5Mzg5NDA2M2Q5Y2VlOTk2MDIyMjU5ZmQwOGQ2NjQ2ZWEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJlZjZkNWZiOTM4OTQwNjNkOWNlZTk5NjAyMjI1OWZkMDhkNjY0NmVhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuM3xeNy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjB8XjUuMCIsCiAgICAgICAgICAgICAgICAic2F0b29zaGkvcGhwLWNvdmVyYWxscyI6ICJeMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiQmFzZTY0VXJsXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkJhc2UgNjQgVVJMIFNhZmUgRW5jb2RpbmcvZGVjb2RpbmcgUEhQIExpYnJhcnkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJiYXNlNjQiLAogICAgICAgICAgICAgICAgInJmYzQ2NDgiLAogICAgICAgICAgICAgICAgInNhZmUiLAogICAgICAgICAgICAgICAgInVybCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0wMS0yMVQxOTo1MDozMCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvam9zZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInY2LjEuNyIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvam9zZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxMDhiZGU5MGU2NzZjYzQ1ZjA3OWY5NThiYWU5Yjc1YWM5YmMxNzg4IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvam9zZS96aXBiYWxsLzEwOGJkZTkwZTY3NmNjNDVmMDc5Zjk1OGJhZTliNzVhYzliYzE3ODgiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxMDhiZGU5MGU2NzZjYzQ1ZjA3OWY5NThiYWU5Yjc1YWM5YmMxNzg4IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJiZWJlcmxlaS9hc3NlcnQiOiAiXjIuNCIsCiAgICAgICAgICAgICAgICAiZmdyb3NzZS9waHBhc24xIjogIl4xLjUiLAogICAgICAgICAgICAgICAgImxpYi1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAgICAgIm1kYW50ZXIvZWNjIjogIjAuNC4qIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuNnxeNy4wIiwKICAgICAgICAgICAgICAgICJwc3IvY2FjaGUiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAic3BvbWt5LWxhYnMvYWVzLWtleS13cmFwIjogIl4zLjAiLAogICAgICAgICAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9waHAtYWVzLWdjbSI6ICJeMS4yIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIl4xLjEiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtcGhwNzAiOiAiXjEuMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNS4wIiwKICAgICAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvY2FjaGUiOiAiXjIuMHxeMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtY3J5cHRvIjogIkhpZ2hseSByZWNvbW1lbmRlZCB3aGVuIHlvdSB1c2UgQUVTIEdDTSBiYXNlZCBhbGdvcml0aG1zLiIsCiAgICAgICAgICAgICAgICAiZXh0LWN1cnZlMjU1MTkiOiAiRm9yIEVkRFNBIHdpdGggWDI1NTE5IGN1cnZlcyBzdXBwb3J0LiIsCiAgICAgICAgICAgICAgICAiZXh0LWVkMjU1MTkiOiAiRm9yIEVkRFNBIHdpdGggRWQyNTUxOSBjdXJ2ZXMgc3VwcG9ydC4iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjYuMS54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2pvc2UvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSlNPTiBPYmplY3QgU2lnbmluZyBhbmQgRW5jcnlwdGlvbiBsaWJyYXJ5IGZvciBQSFAuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9Kb3NlIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkpPU0UiLAogICAgICAgICAgICAgICAgIkpXRSIsCiAgICAgICAgICAgICAgICAiSldLIiwKICAgICAgICAgICAgICAgICJKV0tTZXQiLAogICAgICAgICAgICAgICAgIkpXUyIsCiAgICAgICAgICAgICAgICAiSm90IiwKICAgICAgICAgICAgICAgICJSRkM3NTE1IiwKICAgICAgICAgICAgICAgICJSRkM3NTE2IiwKICAgICAgICAgICAgICAgICJSRkM3NTE3IiwKICAgICAgICAgICAgICAgICJSRkM3NTE4IiwKICAgICAgICAgICAgICAgICJSRkM3NTE5IiwKICAgICAgICAgICAgICAgICJSRkM3NTIwIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxOC0wMi0xOVQwOToyMzoyNyswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvcGhwLWFlcy1nY20iLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2MS4yLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImI2NTViZWYwZDRmMGZhMmYzNmMxMWM1MTIyZTI4NDk1MWU4MTk2MWMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9TcG9ta3ktTGFicy9waHAtYWVzLWdjbS96aXBiYWxsL2I2NTViZWYwZDRmMGZhMmYzNmMxMWM1MTIyZTI4NDk1MWU4MTk2MWMiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiNjU1YmVmMGQ0ZjBmYTJmMzZjMTFjNTEyMmUyODQ5NTFlODE5NjFjIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJiZWJlcmxlaS9hc3NlcnQiOiAiXjIuNCIsCiAgICAgICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS40IiwKICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIl4xLjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuNXxeNS4wIiwKICAgICAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1jcnlwdG8iOiAiSGlnaGx5IHJlY29tbWVuZGVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjIueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiQUVTR0NNXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFFUyBHQ00gKEdhbG9pcyBDb3VudGVyIE1vZGUpIFBIUCBpbXBsZW1lbnRhdGlvbi4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkFFUy1HQ00iLAogICAgICAgICAgICAgICAgIkdhbG9pcyBDb3VudGVyIE1vZGUiLAogICAgICAgICAgICAgICAgImFlcyIsCiAgICAgICAgICAgICAgICAiZ2NtIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE2LTExLTIyVDIxOjExOjExKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuOC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjMyOTZhZGY2YTY0NTRhMDUwNjc5Y2RlOTBmOTUzNTBhZDYwNGIxNzEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nL3ppcGJhbGwvMzI5NmFkZjZhNjQ1NGEwNTA2NzljZGU5MGY5NTM1MGFkNjA0YjE3MSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjMyOTZhZGY2YTY0NTRhMDUwNjc5Y2RlOTBmOTUzNTBhZDYwNGIxNzEiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtbWJzdHJpbmciOiAiRm9yIGJlc3QgcGVyZm9ybWFuY2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuOC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcUG9seWZpbGxcXE1ic3RyaW5nXFwiOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgcG9seWZpbGwgZm9yIHRoZSBNYnN0cmluZyBleHRlbnNpb24iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjb21wYXRpYmlsaXR5IiwKICAgICAgICAgICAgICAgICJtYnN0cmluZyIsCiAgICAgICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAgICAgInBvcnRhYmxlIiwKICAgICAgICAgICAgICAgICJzaGltIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE4LTA0LTI2VDEwOjA2OjI4KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLXBocDcwIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuOC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLXBocDcwLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjc3NDU0NjkzZDhmMTBkZDIzYmIyNDk1NWNmZmQyZDgyZGIxMDA3YTYiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L3BvbHlmaWxsLXBocDcwL3ppcGJhbGwvNzc0NTQ2OTNkOGYxMGRkMjNiYjI0OTU1Y2ZmZDJkODJkYjEwMDdhNiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjc3NDU0NjkzZDhmMTBkZDIzYmIyNDk1NWNmZmQyZDgyZGIxMDA3YTYiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBhcmFnb25pZS9yYW5kb21fY29tcGF0IjogIn4xLjB8fjIuMCIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuOC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcUG9seWZpbGxcXFBocDcwXFwiOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgIlJlc291cmNlcy9zdHVicyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgcG9seWZpbGwgYmFja3BvcnRpbmcgc29tZSBQSFAgNy4wKyBmZWF0dXJlcyB0byBsb3dlciBQSFAgdmVyc2lvbnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjb21wYXRpYmlsaXR5IiwKICAgICAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAgICAgInNoaW0iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTgtMDQtMjZUMTA6MDY6MjgrMDA6MDAiCiAgICAgICAgfQogICAgXSwKICAgICJwYWNrYWdlcy1kZXYiOiBbXSwKICAgICJhbGlhc2VzIjogW10sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAic3RhYmxlIiwKICAgICJzdGFiaWxpdHktZmxhZ3MiOiBbXSwKICAgICJwcmVmZXItc3RhYmxlIjogZmFsc2UsCiAgICAicHJlZmVyLWxvd2VzdCI6IGZhbHNlLAogICAgInBsYXRmb3JtIjogW10sCiAgICAicGxhdGZvcm0tZGV2IjogW10KfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogICA8bGk+VmVyc2lvbiAxLjAuMCAtIEluaXRpYWwgcmVsZWFzZS48L2xpPgogICA8bGk+VmVyc2lvbiAxLjEKIAk8dWw+Cgk8bGk+Tm93IGFjdHMgYXMgYSBzb2NpYWwgYmxhc3QgdHJhbnNwb3J0IGZvciB0aGUgQ0dTb2NpYWxCbGFzdCBtb2R1bGUuPC9saT4KCTxsaT5Ob3cgYWN0cyBhcyBhIG5vdGlmaWVyIHRyYW5zcG9ydCBmb3IgdGhlIENHTm90aWZpdGVyIG1vZHVsZS48L2xpPgoJPGxpPk5vdyBzdXBwb3J0cyBpbWFnZXMuPC9saT4KCTxsaT5DYW4gbm93IHNlbmQgd2ViIHB1c2ggbWVzc2FnZXMgdG8gYWRtaW4gdXNlcnMuPC9saT4KCTxsaT5ObyBsb25nZXIgZGVwZW5kcyBvbiBGRVUuPC9saT4KCTwvdWw+CiAgIDwvbGk+CjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMiwgSnVuZSAxOTkxCgogQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUKCiAgVGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFyZSBkZXNpZ25lZCB0byB0YWtlIGF3YXkgeW91cgpmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgaXQuICBCeSBjb250cmFzdCwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwpMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlCnNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuICBUaGlzCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8KdXNpbmcgaXQuICAoU29tZSBvdGhlciBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gc29mdHdhcmUgaXMgY292ZXJlZCBieQp0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2FudCBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgogIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGlmIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgcmVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZWN0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kCigyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWNoIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZnR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2VkIG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3QgdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4gIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBvciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgQ09QWUlORywgRElTVFJJQlVUSU9OIEFORCBNT0RJRklDQVRJT04KCiAgMC4gVGhpcyBMaWNlbnNlIGFwcGxpZXMgdG8gYW55IHByb2dyYW0gb3Igb3RoZXIgd29yayB3aGljaCBjb250YWlucwphIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZAp1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csCnJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIgptZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3Ogp0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LAplaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlcgpsYW5ndWFnZS4gIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluCnRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLgoKQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QKY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZgpydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtCmlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuCldoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLgoKICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MKc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91CmNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUKY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQpub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7CmFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4KCllvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksIGFuZAp5b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLgoKICAyLiBZb3UgbWF5IG1vZGlmeSB5b3VyIGNvcHkgb3IgY29waWVzIG9mIHRoZSBQcm9ncmFtIG9yIGFueSBwb3J0aW9uCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQKZGlzdHJpYnV0ZSBzdWNoIG1vZGlmaWNhdGlvbnMgb3Igd29yayB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbiAxCmFib3ZlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgWW91IG11c3QgY2F1c2UgdGhlIG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCiAgICBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLgoKICAgIGIpIFlvdSBtdXN0IGNhdXNlIGFueSB3b3JrIHRoYXQgeW91IGRpc3RyaWJ1dGUgb3IgcHVibGlzaCwgdGhhdCBpbgogICAgd2hvbGUgb3IgaW4gcGFydCBjb250YWlucyBvciBpcyBkZXJpdmVkIGZyb20gdGhlIFByb2dyYW0gb3IgYW55CiAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZAogICAgcGFydGllcyB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgoKICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkKICAgIHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2gKICAgIGludGVyYWN0aXZlIHVzZSBpbiB0aGUgbW9zdCBvcmRpbmFyeSB3YXksIHRvIHByaW50IG9yIGRpc3BsYXkgYW4KICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQogICAgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlCiAgICBhIHdhcnJhbnR5KSBhbmQgdGhhdCB1c2VycyBtYXkgcmVkaXN0cmlidXRlIHRoZSBwcm9ncmFtIHVuZGVyCiAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcwogICAgTGljZW5zZS4gIChFeGNlcHRpb246IGlmIHRoZSBQcm9ncmFtIGl0c2VsZiBpcyBpbnRlcmFjdGl2ZSBidXQKICAgIGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24KICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQoKVGhlc2UgcmVxdWlyZW1lbnRzIGFwcGx5IHRvIHRoZSBtb2RpZmllZCB3b3JrIGFzIGEgd2hvbGUuICBJZgppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLAphbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4KdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UKZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkCm9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZgp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQplbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuCgpUaHVzLCBpdCBpcyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb24sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9yIGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2UgY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0aW9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMKdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhlc2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCBvbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1vZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCBwZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzdGVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGRpc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMKb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2dyYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFByb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGlmZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVElPTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEClRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKICAgICAgICAgICAgICAgICAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TCgogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKCiAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdApwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0CmZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgoKICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdAp0byBhdHRhY2ggdGhlbSB0byB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgZmlsZSB0byBtb3N0IGVmZmVjdGl2ZWx5CmNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLgoKICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+CiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIDxzaWduYXR1cmUgb2YgVHkgQ29vbj4sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/doc/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgaXMgdGhpcz88L2gzPgo8cD5UaGlzIG1vZHVsZSBmb3IgQ01TIE1hZGUgU2ltcGxlIHByb3ZpZGVzIGEgc2ltcGxlIGFuZCBjb252ZW5pZW50IHdheSB0bzo8L3A+Cjx1bD4KICAgPGxpPkFsbG93IGxvZ2dlZCBpbiBGRVUgdXNlcnMgdG8gc3Vic2NyaWJlIHRvIHB1c2ggbm90aWZpY2F0aW9ucy48L2xpPgogICA8bGk+U2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMgdG8gYSBncm91cCBvZiBGRVUgdXNlcnMgKHdobyBoYXZlIHN1YnNjcmliZWQgd2l0aCBvbmUgb3IgbW9yZSBkZXZpY2VzKS48L2xpPgo8L3VsPgo8cD48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IFdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCB0aGUgc2FtZSBhcyBtb2JpbGUgcHVzaCBub3RpZmljYXRpb25zIG9uIEFuZHJvaWQgYW5kIElPUyAod2hpY2ggYm90aCB1c2UgZGlmZmVyZW50IG1ldGhvZG9sb2dpZXMpLiAgVGhpcyB0ZWNobm9sb2d5IGlzIHByb3ZpZGVkIGJ5IHRoZSBicm93c2VyJ3MgamF2YXNjcmlwdCBlbmdpbmUuICAgVGhlcmUgaXMgc3VwcG9ydCBmb3Igd2ViLXB1c2ggb24gQW5kcm9pZCBkZXZpY2VzIHVzaW5nIEZpcmVmb3ggb3IgQ2hyb21lIGJyb3dzZXJzLiAgV2ViLXB1c2ggaXMgYWxzbyBzdXBwb3J0ZWQgb24gbW9zdCBtYWpvciBkZXNrdG9wIGJyb3dzZXJzLjwvcD4KCjxoMz5Ib3cgZG8gSSB1c2UgaXQ/PC9oMz4KPHVsPgogIDxsaT5JbiB5b3VyIHBhZ2UgdGVtcGxhdGUgKG9yIG9uIHNwZWNpZmllZCBwYWdlcykgY2FsbCA8Y29kZT57Q0dXZWJQdXNoIGFjdGlvbj1qc308L2NvZGU+LgogICAgIDxwPlRoaXMgd2lsbCBpbnNlcnQgdGhlIGphdmFzY3JpcHQgdG8gcmVnaXN0ZXIgdGhlIHNlcnZpY2Ugd29ya2VyIGFuZCB0aGUgcmVxdWlyZWQgamF2YXNjcmlwdCB0byB3b3JrIHdpdGggc3Vic2NyaXB0aW9ucy48cD4KICA8L2xpPgogIDxsaT5PbiBhdCBsZWFzdCBvbmUgcGFnZSB0aGF0IGlzIHZpc2libGUgdG8gRkVVIHVzZXJzIGNhbGwgPGNvZGU+e0NHV2ViUHVzaCBhY3Rpb249c3Vic2NyaWJlfTwvY29kZT4uCiAgICAgPHA+VGhpcyB3aWxsIGRpc3BsYXkgYSBzaW1wbGUgYnV0dG9uIHRoYXQgYWxsb3dzIEZFVSB1c2VycyB0byBzdWJzY3JpYmUgYW5kIHVuc3Vic2NyaWJlIHRvIHdlYiBub2ZpY2F0aW9ucyBmcm9tIHlvdXIgd2Vic2l0ZS4KICAgICAgICBJZiB0aGUgYnJvd3NlciBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgdGhlbiB0aGUgYnV0dG9uIHdpbGwgYmUgZGlzYWJsZWQsIGFuZCB0aGUgdGl0bGUgb2YgdGhlIGJ1dHRvbiB3aWxsIHN0YXRlIHRoZSBzdGF0dXMuCiAgICAgPC9wPgogIDwvbGk+CiAgPGxpPlZpc2l0IHRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbCBhbmQgc2V0IGFuIG9wdGlvbmFsIHRpdGxlLCBhbmQgaWNvbi4KICAgICA8cD5UaGUgdGl0bGUgc2hvdWxkIGJlIHJlbGF0aXZlbHkgYnJpZWYuICBJZiBvbmUgaXMgbm90IHN1cHBsaWVkLCBhbmQgbm90IHN1cHBsaWVkIHdpdGggaW5kaXZpZHVhbCBtZXNzYWdlcywgdGhlbiB0aGUgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZC48L3A+CiAgICAgPHA+VGhlIGljb24sIGlmIHVzZWQgc2hvdWxkIGJlIGEgc3F1YXJlIGltYWdlIG9mIGF0IGxlYXN0IDk2eDk2IHBpeGVscywgYnV0IG5vdCB0b28gbGFyZ2UgZWl0aGVyLiAgSSByZWNvbW1lbmQgbm8gbGFyZ2VyIHRoYW4gMjU2eDI1NiBhdCB0aGlzIHRpbWUuPC9wPgogIDwvbGk+CiAgPGxpPlZpc2l0IHRoZSBwYWdlIHlvdSBjcmVhdGVkIGluIHN0ZXAgMiBhYm92ZSB3aXRoIGEgc3VwcG9ydGVkIGJyb3dzZXIsIGxvZ2luIHRvIHRoZSBGcm9udEVuZFVzZXJzIG1vZHVsZSwgYW5kIHN1YnNjcmliZSB0byBwdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+VXNlIHRoZSBtb2R1bGUncyBhZG1pbiBwYW5lbCB0byBzZW5kIGEgdGVzdCBub3RpZmljYXRpb24uPC9saT4KICA8bGk+WW91IGNhbiBvcHRpb25hbGx5IHVzZSA8Y29kZT48YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Ntc2NsaSI+Y21zY2xpPC9hPiB3ZWJwdXNoLWZldS1ncm91cDwvY29kZT4gdG8gc2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLjwvbGk+CjwvdWw+Cgo8aDM+U2V0dGluZ3MgYW5kIFNlcnZpY2UgV29ya2VyPC9oMz4KPHA+VGhlIHNldHRpbmdzIHRhYiBpbiB0aGlzIG1vZHVsZSdzIGFkbWluIHBhbmVsIGFsbG93cyBzZXR0aW5nIGEgdGl0bGUsIGFuZCBhbiBpY29uLjxwPgo8cD5UaGUgdGl0bGUgaXMgYSBzdHJpbmcgdG8gdXNlIGFzIHRoZSBkZWZhdWx0IHRpdGxlIGZvciBub3RpZmljYXRpb25zIGlmIGl0IGlzIG5vdCBvdGhlcndpc2Ugc3BlY2lmaWVkLiAgSWYgdGhpcyBmaWVsZCBpcyBsZWZ0IGVtcHR5IHRoZW4gdGhlIHNpdGUgbmFtZSB3aWxsIGJlIHVzZWQuPC9wPgo8cD5UaGUgaWNvbiBpcyBhIFVSTCB0byBhIHNxdWFyZSBpY29uIChtaW5pbXVtIHJlY29tbWVuZGVkIHNpemUgb2YgOTZ4OTYpIHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgb24gZWFjaCBhbmQgZXZlcnkgbm90aWZpY2F0aW9uLjwvcD4KPHA+RWFjaCB0aW1lIHRoZXNlIHNldHRpbmdzIGFyZSBjaGFuZ2VkIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaXMgcmUtZ2VuZXJhdGVkLDwvcD4KPHA+V2hlbiB0aGUgc2VydmljZSB3b3JrZXIgc2NyaXB0IGlzIHJlLWdlbmVyYXRlZCBpdCBtYXkgbm90IGJlIHJlZnJlc2hlZCBvbiB0aGUgdXNlcnMgYnJvd3NlciB1bnRpbCB0aGUgbmV4dCB0aW1lIGEgdmlzaXRzIGEgcGFnZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBqYXZhc2NyaXB0IHRhZ3Mgd2hlcmUgdGhlIHNlcnZpY2Ugd29ya2VyIGlzIHJlZ2lzdGVyZWQuPC9wPgoKPGgzPlNlbmRpbmcgd2ViLXB1c2ggbm90aWZmaWNhdGlvbnMuPC9oMz4KPHA+QSB0YWIgaW4gdGhlIG1vZHVsZSdzIGFkbWluIHBhbmVsIGFsbG93cyBzZW5kaW5nIGEgd2ViIHB1c2ggbm90aWZpY2F0aW9uIHRvIGFuIEZFVSBncm91cC4gIEl0IHByb3ZpZGVzIGZvciBmaWVsZHMgdG8gc3BlY2lmeSBhIHJlcXVpcmVkIG1lc3NhZ2UgYm9keSAodXAgdG8gMTAwMCBjaGFycyksIGFuIG9wdGlvbmFsIHRpdGxlLCBhbmQgYSBVUkwgdG8gb3BlbiB3aGVuIHRoZSBub3RpZmljYXRpb24gaXMgY2xpY2tlZCBvbi48L3A+Cgo8aDM+UmVxdWlyZW1lbnRzOjwvaDM+Cjx1bD4KICA8bGk+WW91ciBzaXRlIG11c3QgYmUgdXNpbmcgSFRUUFMuPC9saT4KICA8bGk+VGhlIGh0dHAgcHJvY2VzcyBtdXN0IGJlIGFibGUgdG8gd3JpdGUgdG8gdGhlIHJvb3Qgb2YgeW91ciBDTVNNUyBpbnN0YWxsYXRpb24uPC9saT4KICA8bGk+T3BlblNTTCwgY3VybCwgbXVsdGlieXRlIHN1cHBvcnQsIG1jcnlwdCwgYW5kIG90aGVyIGxpYnJhcmllcyBpbnN0YWxsZWQgaW4gdGhlIFBIUCBlbnZpcm9ubWVudC48L2xpPgogIDxsaT5JbiBvcmRlciB0byByZWNlaXZlIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMsIHVzZXJzIG11c3QgaGF2ZSB0aGUgc3VwcG9ydGVkIGJyb3dzZXIgdGhhdCB0aGV5IHVzZWQgdG8gc3Vic2NyaWJlIG9wZW4gYW5kIHJ1bm5pbmcuICBCdXQgdGhleSBkbyBub3QgaGF2ZSB0byBoYXZlIGEgdGFiIG9yIGEgd2luZG93IGFjdGl2ZWx5IHBvaW50aW5nIHRvIHlvdXIgd2Vic2l0ZS48L2xpPgo8L3VsPgoKPGgzPkF2YWlsYWJsZSBBY3Rpb25zPC9oMz4KPHVsPgogIDxsaT5qcyAtIEluc2VydHMgdGhlIGphdmFzY3JpcHQgcmVxdWlyZWQgdG8gcmVnaXN0ZXIgYW5kIGFjdGl2YXRlIHRoZSBzZXJ2aWNlIHdvcmtlciwgIGFuZCB0byB3b3JrIHdpdGggdGhlIHN1YnNjcmlwdGlvbiBVSS48L2xpPgogIDxsaT5zdWJzY3JpYmUgLSBEaXNwbGF5cyBhIGJ1dHRvbiB0aGF0IGFsbG93cyBhIGxvZ2dlZCBpbiBGRVUgdXNlciB0byBzdWJzY3JpYmUgYW5kIHVuc3Vic2NyaWJlLiAgV2lsbCBhbHNvIGRpc3BsYXkgYSBzdGF0dXMgaWYgdGhlIGJyb3dzZXIgaXMgbm90IGNvbXBhdGlibGUuPC9saT4KICA8bGk+dW5zdWJzY3JpYmVfYWxsIC0gQSBzaW1wbGUgYWN0aW9uIHRvIGFsbG93IGEgbG9nZ2VkIGluIEZFVSB1c2VyIHRvIHVuc3Vic2NyaWJlIGZyb20gYWxsIG5vdGlmaWNhdGlvbnMgZnJvbSBhbGwgb2YgaGlzIHJlZ2lzdGVyZWQgZGV2aWNlcy4gIE9uY2UgY29tcGxldGUsIHRoaXMgYWN0aW9uIHdpbGwgcmVkaXJlY3QgYmFjayB0byB0aGUgb3JpZ2luYWwgY29udGVudCBwYWdlLjwvbGk+CjwvdWw+Cgo8aDM+QnJvd3NlciBjb21wYXRpYmlsaXR5PC9oMz4KPHA+Q3VycmVudGx5IHdlYi1wdXNoIHRlY2hub2xvZ3kgaXMgc3VwcG9ydGVkIGJ5IG9ubHkgc29tZSBicm93c2Vycy4gICBNb3N0IG9mIHRoZXNlIGFyZTo8L3A+Cjx1bD4KICAgPGxpPkNocm9tZSBvbiBBbmRyb2lkLCBXaW5kb3dzLCBMaW51eCwgYW5kIE1hY09TPC9saT4KICAgPGxpPkZpcmVmb3ggb24gQW5kcm9pZCwgV2luZG93cywgTGludXgsIGFuZCBNYWNPUzwvbGk+CiAgIDxsaT5TYWZhcmkgb24gTWFjT1MgYW5kIExpbnV4PC9saT4KPC91bD4KPHA+SW9zIHN1cHBvcnQgaXMgcHVycG9ydGVkbHkgJnF1b3Q7aW4gZGV2ZWxvcG1lbnQmcXVvdDsgc28gc3RheSB0dW5lZC48L3A+Cgo8aDM+T3RoZXIgY2FwYWJpbGl0aWVzPC9oMz4KPHVsPgogIDxsaT5UaGlzIG1vZHVsZSBjYW4gYWN0IGFzIGEgbm90aWZpY2F0aW9uLXRyYW5zcG9ydCBmb3IgdGhlIENHTm90aWZpZXIgbW9kdWxlLgogICAgICA8cD5UaGlzIGFsbG93cyBzZW5kaW5nIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgdG8gYWRtaW4gdXNlcnMgb3IgZnJvbnRlbmQgdXNlcnMgd2hlbiB2YXJpb3VzIGV2ZW50cyBoYXBwZW4gaW4geW91ciB3ZWJzaXRlLjwvcD4KICA8L2xpPgogIDxsaT5UaGlzIG1vZHVsZSBjYW4gYWN0IGFzIGEgY2dzb2NpYWxibGFzdGVyLXRyYW5zcG9ydCBmb3IgdGhlIFNvY2lhbEJsYXN0ZXIgbW9kdWxlLgogICAgICA8cD5UaGlzIGFsbG93cyBzZW5kaW5nIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMgYXQgdGhlIHNhbWUgdGltZSBhcyB1c2luZyBvdGhlciB0cmFuc3BvcnQgbWVjaGFuaXNtcyB0byBibGFzdCBtZXNzYWdlcyB0byB5b3VyIHVzZXJzIG9uIG11bHRpcGxlIG1lZGlhIGZyb20gb25lIGxvY2F0aW9uLjwvcD4KICA8L2xpPgo8L3VsPgoKPGgzPkNhdmVhdHM8L2gzPgo8cD5TZW5kaW5nIGxhcmdlIGFtb3VudHMgb2Ygbm90aWZpY2F0aW9ucyBjYW4gYmUgcGFydGljdWxhcmx5IHNsb3cgZHVlIHRvIHRoZSBuZWVkIHRvIHBlcmZvcm0gbXVsdGlwbGUgb3V0Z29pbmcgcmVxdWVzdHMuICBUaGVyZWZvcmUgaXQgaXMgYmVzdCBpZiB5b3UgdXNlIHRoZSAid2VicHVzaC1mZXUtZ3JvdXAiIGNvbW1hbmQgcHJvdmlkZWQgYnkgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9jbXNjbGkiPmNtc2NsaTwvYT4uIEFzIHRoZXJlIGFyZSBubyB0aW1lIHJlc3RyaWN0aW9ucyBpbiB0aGUgQ0xJIGVudmlyb25tZW50IGFzIG9wcG9zZWQgdG8gdGhlIHdlYiBlbnZpcm9ubWVudC48L3A+Cgo8aDM+SmF2YXNjcmlwdCBBUEk8L2gzPgo8cD5hbGwgZnVuY3Rpb25zIGFyZSBjb250YWluZWQgd2l0aGluIHRoZSBnbG9iYWwgamF2YXNjcmlwdCBvYmplY3QgbmFtZWQgJnF1b3Q7Y2dXZWJQdXNoJnF1b3Q7LiAgVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZ1bmN0aW9ucyBhcmU6PC9wPgo8dWw+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLmlzX3N1YnNjcmliZWQoKTwvY29kZT4gLSBBIGZ1bmN0aW9uIHRvIHJldHVybiBpZiB0aGUgdXNlciBpcyBzdWJzY3JpYmVkIG9yIG5vdC4gIFdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIHVzZXIgaGFzIGNvbXBsZXRlZCBhbGwgc3RlcHMgaW4gdGhpcyBicm93c2VyIHRvIHN1YnNjcmliZSB0byBwdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+PGNvZGU+Ym9vbCBjZ1dlYlB1c2guaXNfY29tcGF0aWJsZSgpPC9jb2RlPiAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+PGNvZGU+Ym9vbCBjZ1dlYlB1c2guaXNfZGVuaWVkKCk8L2NvZGU+IC0gUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIGhhcyBhY3RpdmVseSBkZW5pZWQgcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLnN1YnNjcmliZSgpPC9jb2RlPiAtIFdpbGwgc3Vic2NyaWJlIGEgdXNlciwgaWYgdGhleSBoYXZlIG5vdCBleHBsaWNpdGx5IGJsb2NrZWQgcHVzaCBub3RpZmljYXRpb25zIEFORCB0aGUgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIHdlYi1wdXNoIG5vdGlmaWNhdGlvbnMuPC9saT4KICA8bGk+PGNvZGU+Ym9vbCBjZ1dlYlB1c2gudW5zdWJzY3JpYmUoKTwvY29kZT4gLSBXaWxsIHVuc3Vic2NyaWJlIGEgc3Vic2NyaWJlZCB1c2VyLCBpZiB0aGUgYnJvd3NlciBwZXJtaXRzIGl0LjwvbGk+CjwvdWw+Cgo8aDM+UEhQIEFQSTwvaDM+CjxwPlRoaXMgbW9kdWxlIGhhcyBhIHNpbXBsZSBBUEkgdG8gYWxsb3cgY3JlYXRpbmcgYW5kIHNlbmRpbmcgd2ViLXB1c2ggbm90aWZpY3Rpb25zLiAgIERvY3VtZW50YXRpb24gY29taW5nIHNvb24uPC9wPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGUgbW9kdWxlIGF1dGhvciBpcyBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiAgSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkEgYnVnIHRyYWNraW5nIGFuZCBmZWF0dXJlIHJlcXVlc3Qgc3lzdGVtIGhhcyBiZWVuIGNyZWF0ZWQgZm9yIHRoaXMgbW9kdWxlIDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvZnJvbnRlbmR1c2VycyI+aGVyZTwvYT4uICBQbGVhc2UgYmUgdmVyYm9zZSBhbmQgZGVzY3JpcHRpdmUgd2hlbiBzdWJtaXR0aW5nIGJ1ZyByZXBvcnRzIGFuZCBmZWF0dXJlIHJlcXVlc3RzLCBhbmQgZm9yIGJ1ZyByZXBvcnRzIGVuc3VyZSB0aGF0IHlvdSBoYXZlIHByb3ZpZGVkIHN1ZmZpY2llbnQgaW5mb3JtYXRpb24gdG8gcmVsaWFibHkgcmVwcm9kdWNlIHRoZSBpc3N1ZS48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LiAgV2hlbiBkZXNjcmliaW5nIGFuIGlzc3VlIHBsZWFzZSBtYWtlIGFuIGVmZm9ydCB0byBwcm92aWRlIGFsbCByZWxhdmFudCBpbmZvcm1hdGlvbiwgYSB0aG9yb3VnaCBkZXNjcmlwdGlvbiBvZiB5b3VyIGlzc3VlLCBhbmQgc3RlcHMgdG8gcmVwcm9kdWNlIGl0IG9yIHlvdXIgZGlzY3Vzc2lvbiBtYXkgYmUgaWdub3JlZC48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LiAgSG93ZXZlciwgcGxlYXNlIHVzZSB0aGlzIGFzIGEgbGFzdCByZXNvcnQsIGFuZCBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBmb2xsb3dlZCBhbGwgYXBwbGljYWJsZSBpbnN0cnVjdGlvbnMgb24gdGhlIGZvcmdlLCBpbiB0aGUgZm9ydW1zLCBldGMuPC9saT4KPC91bD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgsIFJvYmVydCBDYW1wYmVsbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgpzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCk1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKT3IgcmVhZCBpdCA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPm9ubGluZTwvYT48L3A+Cg==]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/cgWebPush.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIGNnV2ViUHVzaCA9IG5ldyBmdW5jdGlvbigpIHsKICAgIHZhciAgX2VsLCBfa2V5LCBfYWpheF91cmwsIF9zdWJzY3JpYmVkLCBfZGVuaWVkLCBfY29tcGF0aWJsZTsKCiAgICBmdW5jdGlvbiB1cmxCYXNlNjRUb1VpbnQ4QXJyYXkoYmFzZTY0U3RyaW5nKSB7CiAgICAgICAgY29uc3QgcGFkZGluZyA9ICc9Jy5yZXBlYXQoKDQgLSBiYXNlNjRTdHJpbmcubGVuZ3RoICUgNCkgJSA0KTsKICAgICAgICBjb25zdCBiYXNlNjQgPSAoYmFzZTY0U3RyaW5nICsgcGFkZGluZykKICAgICAgICAgICAgLnJlcGxhY2UoL1wtL2csICcrJykKICAgICAgICAgICAgLnJlcGxhY2UoL18vZywgJy8nKTsKCiAgICAgICAgY29uc3QgcmF3RGF0YSA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7CiAgICAgICAgY29uc3Qgb3V0cHV0QXJyYXkgPSBuZXcgVWludDhBcnJheShyYXdEYXRhLmxlbmd0aCk7CgogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmF3RGF0YS5sZW5ndGg7ICsraSkgewogICAgICAgICAgICBvdXRwdXRBcnJheVtpXSA9IHJhd0RhdGEuY2hhckNvZGVBdChpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG91dHB1dEFycmF5OwogICAgfQoKICAgIHRoaXMuc2VydmljZVdvcmtlclJlYWR5ID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHk7CiAgICB9CgogICAgdGhpcy5nZXRTdWJzY3JpcHRpb24gPSBmdW5jdGlvbigpIHsKCXJldHVybiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLmdldFN1YnNjcmlwdGlvbigpLnRoZW4oc3Vic2NyID0+IHsKCSAgICBpZiggc3Vic2NyICkgX3N1YnNjcmliZWQgPSAxOwoJfSk7CiAgICB9CgogICAgdGhpcy5zZW5kU3Vic2NyaXB0aW9uID0gZnVuY3Rpb24oIHN1YnNjcmlwdGlvbiwgbWV0aG9kICkgewogICAgICAgIGNvbnN0IGtleSA9IHN1YnNjcmlwdGlvbi5nZXRLZXkoJ3AyNTZkaCcpOwogICAgICAgIGNvbnN0IHRva2VuID0gc3Vic2NyaXB0aW9uLmdldEtleSgnYXV0aCcpOwoJaWYoICEgX2FqYXhfdXJsICkgcmV0dXJuOwoJaWYoIHR5cGVvZiBtZXRob2QgPT0gJ3VuZGVmaW5lZCcgKSBtZXRob2QgPSAnUE9TVCc7CgogICAgICAgIHJldHVybiBmZXRjaCggX2FqYXhfdXJsLCB7CiAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHN1YnNjcmlwdGlvbi5lbmRwb2ludCwKICAgICAgICAgICAgICAgIGtleToga2V5ID8gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIG5ldyBVaW50OEFycmF5KGtleSkpKSA6IG51bGwsCiAgICAgICAgICAgICAgICB0b2tlbjogdG9rZW4gPyBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQ4QXJyYXkodG9rZW4pKSkgOiBudWxsCiAgICAgICAgICAgIH0pLAoJICAgIGhlYWRlcnM6IHsKCQknQWNjZXB0JzogICdhcHBsaWNhdGlvbi9qc29uJywKCQknQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLAoJCSdDYWNoZSc6ICduby1jYWNoZScJICAgIH0sCgkgICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicKICAgICAgICB9KS50aGVuKCgpID0+IHN1YnNjcmlwdGlvbik7CiAgICB9CgogICAgdGhpcy5zZXRfdmFwaWRfa2V5ID0gZnVuY3Rpb24oIGtleSApIHsKCV9rZXkgPSBrZXk7CiAgICB9CgogICAgdGhpcy5zZXRfZWxlbWVudCA9IGZ1bmN0aW9uKCBlbGVtZW50ICkgewoJX2VsID0gJChlbGVtZW50KTsKICAgIH0KCiAgICB0aGlzLnNldF9hamF4X3VybCA9IGZ1bmN0aW9uKCB1cmwgKSB7CglfYWpheF91cmwgPSB1cmw7CiAgICB9CgogICAgdGhpcy5pc1N1YnNjcmliZWQgPSBmdW5jdGlvbigpIHsKCWlmKCBfY29tcGF0aWJsZSApIHJldHVybiBfc3Vic2NyaWJlZDsKICAgIH0KCiAgICB0aGlzLnVuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gVG8gdW5zdWJzY3JpYmUgZnJvbSBwdXNoIG1lc3NhZ2luZywgeW91IG5lZWQgdG8gZ2V0IHRoZSBzdWJzY3JpcHRpb24gb2JqZWN0Cgl2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlYWR5CiAgICAgICAgICAgIC50aGVuKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gPT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5wdXNoTWFuYWdlci5nZXRTdWJzY3JpcHRpb24oKSkKICAgICAgICAgICAgLnRoZW4oc3Vic2NyaXB0aW9uID0+IHsKCQkvLyBDaGVjayB0aGF0IHdlIGhhdmUgYSBzdWJzY3JpcHRpb24gdG8gdW5zdWJzY3JpYmUKCQlpZiAoIXN1YnNjcmlwdGlvbikgewoJCSAgICBfc3Vic2NyaWJlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKCQl9CgoJCXJldHVybiBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKQoJCSAgICAudGhlbihmdW5jdGlvbigpewoJCQlyZXR1cm4gc2VsZi5zZW5kU3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbiwnREVMRVRFJykKCQkJICAgIC50aGVuKGZ1bmN0aW9uKCl7CgkJCQlfc3Vic2NyaWJlZCA9IGZhbHNlOwoJCQkJcmV0dXJuOwoJCQkgICAgfSk7CgkJICAgIH0pCgogICAgICAgICAgICB9KQogICAgICAgICAgICAuY2F0Y2goZSA9PiB7CgkJLy8gV2UgZmFpbGVkIHRvIHVuc3Vic2NyaWJlLCB0aGlzIGNhbiBsZWFkIHRvCgkJLy8gYW4gdW51c3VhbCBzdGF0ZSwgc28gIGl0IG1heSBiZSBiZXN0IHRvIHJlbW92ZQoJCS8vIHRoZSB1c2VycyBkYXRhIGZyb20geW91ciBkYXRhIHN0b3JlIGFuZAoJCS8vIGluZm9ybSB0aGUgdXNlciB0aGF0IHlvdSBoYXZlIGRvbmUgc28KCQlfc3Vic2NyaWJlZCA9IGZhbHNlOwogICAgICAgICAgICB9KTsKICAgIH0KCiAgICB0aGlzLnN1YnNjcmliZSA9IGZ1bmN0aW9uKCkgewoJdmFyIHNlbGYgPSB0aGlzOwogICAgICAgIHJldHVybiBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeQogICAgICAgICAgICAudGhlbihzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uID0+IHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24ucHVzaE1hbmFnZXIuc3Vic2NyaWJlKHsKCQl1c2VyVmlzaWJsZU9ubHk6IHRydWUsCgkJYXBwbGljYXRpb25TZXJ2ZXJLZXk6IHVybEJhc2U2NFRvVWludDhBcnJheShfa2V5KSwKICAgICAgICAgICAgfSkpCiAgICAgICAgICAgIC50aGVuKHN1YnNjcmlwdGlvbiA9PiB7CgkJLy8gU3Vic2NyaXB0aW9uIHdhcyBzdWNjZXNzZnVsCgkJLy8gY3JlYXRlIHN1YnNjcmlwdGlvbiBvbiB5b3VyIHNlcnZlcgoJCXJldHVybiBzZWxmLnNlbmRTdWJzY3JpcHRpb24oc3Vic2NyaXB0aW9uLCAnUE9TVCcpOwogICAgICAgICAgICB9KQogICAgICAgICAgICAudGhlbihzdWJzY3JpcHRpb24gPT4gewoJCWlmKCBzdWJzY3JpcHRpb24gKSB7CgkJICAgIF9zdWJzY3JpYmVkID0gdHJ1ZTsKCQl9CgkgICAgfSkKICAgICAgICAgICAgLmNhdGNoKGUgPT4gewoJCV9zdWJzY3JpYmVkID0gZmFsc2U7CgkJaWYgKE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09PSAnZGVuaWVkJykgewoJCSAgICBfZGVuaWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdXNlciBkZW5pZWQgdGhlIG5vdGlmaWNhdGlvbiBwZXJtaXNzaW9uIHdoaWNoCiAgICAgICAgICAgICAgICAgICAgLy8gbWVhbnMgd2UgZmFpbGVkIHRvIHN1YnNjcmliZSBhbmQgdGhlIHVzZXIgd2lsbCBuZWVkCiAgICAgICAgICAgICAgICAgICAgLy8gdG8gbWFudWFsbHkgY2hhbmdlIHRoZSBub3RpZmljYXRpb24gcGVybWlzc2lvbiB0bwogICAgICAgICAgICAgICAgICAgIC8vIHN1YnNjcmliZSB0byBwdXNoIG1lc3NhZ2VzCiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdOb3RpZmljYXRpb25zIGFyZSBkZW5pZWQgYnkgdGhlIHVzZXIuJyk7CgkJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBBIHByb2JsZW0gb2NjdXJyZWQgd2l0aCB0aGUgc3Vic2NyaXB0aW9uOyBjb21tb24gcmVhc29ucwogICAgICAgICAgICAgICAgICAgIC8vIGluY2x1ZGUgbmV0d29yayBlcnJvcnMgb3IgdGhlIHVzZXIgc2tpcHBlZCB0aGUgcGVybWlzc2lvbgogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ltcG9zc2libGUgdG8gc3Vic2NyaWJlIHRvIHB1c2ggbm90aWZpY2F0aW9ucycsIGUpOwoJCX0KICAgICAgICAgICAgfSk7CiAgICB9CgogICAgdGhpcy5jaGVja0NvbXBhdGlibGUgPSBmdW5jdGlvbigpIHsKCWlmKCAhKCdzZXJ2aWNlV29ya2VyJyBpbiBuYXZpZ2F0b3IpICkgdGhyb3cgJ1NlcnZpY2Ugd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXInOwoJaWYoICEoJ1B1c2hNYW5hZ2VyJyBpbiB3aW5kb3cpICkgdGhyb3cgJ1B1c2ggbm90aWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXInOwoJaWYoICEoJ3Nob3dOb3RpZmljYXRpb24nIGluIFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24ucHJvdG90eXBlKSApIHRocm93ICdOb3RpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlcic7CglfY29tcGF0aWJsZSA9IHRydWU7CiAgICB9CgogICAgdGhpcy5yZWdpc3RlcldvcmtlciA9IGZ1bmN0aW9uKCkgewoJLy8gY2FsbGVkIG9uIHN0YXJ0dXAuCglyZXR1cm4gbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoImNnX3B1c2hTZXJ2aWNlV29ya2VyLmpzIikKCSAgICAudGhlbigoKSA9PiB7CgkgICAgfSwgZSA9PiB7CgkgICAgfSk7CiAgICB9CgogICAgdGhpcy5jaGVja0RlbmllZCA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIChOb3RpZmljYXRpb24ucGVybWlzc2lvbiA9PT0gJ2RlbmllZCcpOwogICAgfQp9IC8vIGVuZCBvZiBjZ1dlYlB1c2gKCgovLwovLyBiZWdpbiBqcXVlcnkgcGx1Z2luCi8vCihmdW5jdGlvbiAoICQgKSB7CgogICAgJC5fY2dXZWJQdXNoID0gZnVuY3Rpb24oIGVsZW1lbnQsIG9wdGlvbnMgKSB7Cgl2YXIgcGx1Z2luID0gdGhpczsKCXZhciAkZWxlbWVudCA9ICQoZWxlbWVudCk7CgoJdmFyIHNldHRpbmdzID0gJC5leHRlbmQoewogICAgICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIGRlZmF1bHRzLgoJICAgIGNoYW5nZUJ1dHRvblN0YXRlOiBudWxsCiAgICAgICAgfSwgb3B0aW9ucyApOwoKCXZhciBjaGFuZ2VCdXR0b25TdGF0ZSA9IGZ1bmN0aW9uKCBzdGF0ZSApIHsKCSAgICB2YXIgZWwgPSBlbGVtZW50OwogICAgICAgICAgICBzd2l0Y2ggKHN0YXRlKSB7CiAgICAgICAgICAgIGNhc2UgJ2VuYWJsZWQnOgoJCS8vIHB1c2ggbm90aWZpY2F0aW9ucyBlbmFibGVkCgkJZWwuZGlzYWJsZWQgPSBmYWxzZTsKCQkkZWxlbWVudC5yZW1vdmVDbGFzcygncHVzaF9kaXNhYmxlZCBwdXNoX2NvbXB1dGluZyBwdXNoX2luY29tcGF0aWJsZSBwdXNoX2VuYWJsZWQnKS5hZGRDbGFzcygncHVzaF9lbmFibGVkJyk7CgkJYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2Rpc2FibGVkJzoKCQkvLyBwdXNoIG5vdGlmaWNhdGlvbnMgZGlzYWJsZWQKCQllbC5kaXNhYmxlZCA9IGZhbHNlOwoJCSRlbGVtZW50LnJlbW92ZUNsYXNzKCdwdXNoX2Rpc2FibGVkIHB1c2hfY29tcHV0aW5nIHB1c2hfaW5jb21wYXRpYmxlIHB1c2hfZW5hYmxlZCcpLmFkZENsYXNzKCdwdXNoX2Rpc2FibGVkJyk7CgkJYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2NvbXB1dGluZyc6CgkJZWwuZGlzYWJsZWQgPSB0cnVlOwoJCSRlbGVtZW50LnJlbW92ZUNsYXNzKCdwdXNoX2Rpc2FibGVkIHB1c2hfY29tcHV0aW5nIHB1c2hfaW5jb21wYXRpYmxlIHB1c2hfZW5hYmxlZCcpLmFkZENsYXNzKCdwdXNoX2NvbXB1dGluZycpOwoJCWJyZWFrOwogICAgICAgICAgICBjYXNlICdpbmNvbXBhdGlibGUnOgoJCWVsLmRpc2FibGVkID0gdHJ1ZTsKCQkkZWxlbWVudC5yZW1vdmVDbGFzcygncHVzaF9kaXNhYmxlZCBwdXNoX2NvbXB1dGluZyBwdXNoX2luY29tcGF0aWJsZSBwdXNoX2VuYWJsZWQnKS5hZGRDbGFzcygncHVzaF9pbmNvbXBhdGlibGUnKTsKCQlicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKCQl0aHJvdyAnVW5oYW5kbGVkIHB1c2ggYnV0dG9uIHN0YXRlICcrc3RhdGU7CiAgICAgICAgICAgIH0KCgkgICAgaWYoIHR5cGVvZiBzZXR0aW5ncy5jaGFuZ2VCdXR0b25TdGF0ZSA9PSAnZnVuY3Rpb24nICkgewoJCXNldHRpbmdzLmNoYW5nZUJ1dHRvblN0YXRlLmNhbGwoICRlbGVtZW50LCBzdGF0ZSApOwoJICAgIH0KCX07CgoJLy8gcHJpdmF0ZSBtZXRob2QuCgl2YXIgb25DbGljayA9IGZ1bmN0aW9uKGV2KSB7CgkgICAgZXYucHJldmVudERlZmF1bHQoKTsKCSAgICBpZiggY2dXZWJQdXNoLmlzU3Vic2NyaWJlZCgpICkgewoJCWNnV2ViUHVzaC51bnN1YnNjcmliZSgpLnRoZW4oKCkgPT4gewoJCSAgICBjaGFuZ2VCdXR0b25TdGF0ZSgnZGlzYWJsZWQnKTsKCQl9KQoJICAgIH0gZWxzZSB7CgkJY2dXZWJQdXNoLnN1YnNjcmliZSgpLnRoZW4oKCkgPT4gewoJCSAgICBjaGFuZ2VCdXR0b25TdGF0ZSgnZW5hYmxlZCcpOwoJCX0pCgkgICAgfQoJfTsKCgkvLyBwcml2YXRlIG1ldGhvZC4KCXZhciBpbml0ID0gZnVuY3Rpb24oKSB7CgkgICAgdHJ5IHsKCQkvLyBzZXR1cCBjbGljayBoYW5kbGVyCgkJJGVsZW1lbnQuY2xpY2soIG9uQ2xpY2sgKTsKCgkJY2hhbmdlQnV0dG9uU3RhdGUoICdjb21wdXRpbmcnICk7CgkJY2dXZWJQdXNoLmNoZWNrQ29tcGF0aWJsZSgpOwoJCWlmKCBjZ1dlYlB1c2guY2hlY2tEZW5pZWQoKSApIHRocm93ICdVc2VyIGRlbmllZCBwdXNoIG5vdGlmaWNhdGlvbnMgZm9yIHRoaXMgc2l0ZSc7CgkJY2dXZWJQdXNoLnJlZ2lzdGVyV29ya2VyKCkudGhlbigoKSA9PiB7CgkJICAgIGNnV2ViUHVzaC5zZXJ2aWNlV29ya2VyUmVhZHkoKS50aGVuKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gPT4gewoJCQlzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLmdldFN1YnNjcmlwdGlvbigpLnRoZW4oc3Vic2NyID0+IHsKICAgCQkJICAgIGlmKCAhc3Vic2NyICkgewoJCQkgICAgICAgIGNoYW5nZUJ1dHRvblN0YXRlKCdkaXNhYmxlZCcpOwoJCQkgICAgfSBlbHNlIHsKCQkJICAgICAgICBjZ1dlYlB1c2guc2VuZFN1YnNjcmlwdGlvbiggc3Vic2NyICkudGhlbigoKSA9PiB7CgkJCQkgICAgY2hhbmdlQnV0dG9uU3RhdGUoJ2VuYWJsZWQnKTsKCQkJICAgICAgICB9LCBlID0+IHsKCQkJCSAgICB0aHJvdyAnRXJyb3Igc2VuZGluZyBzdWJzY3JpcHRpb24gdG8gc2VydmVyICcgKyBlOwoJCQkgICAgICAgIH0pCgkJCSAgICB9CgkJCX0pCgkJICAgIH0sIGUgPT4gewoJCQljb25zb2xlLmVycm9yKCAndGVzdCAnICk7CgkJCWNvbnNvbGUuZXJyb3IoIGUgKTsKCQkgICAgfSkKCQl9LCBlID0+IHsKCQkgICAgdGhyb3cgJ1tTV10gU2VydmljZSB3b3JrZXIgcmVnaXN0cmF0aW9uIGZhaWxlZCAnICsgZTsKCQl9KTsKCSAgICB9CgkgICAgY2F0Y2goIGVyciApIHsKCQljb25zb2xlLmVycm9yKCBlcnIgKTsKCQljaGFuZ2VCdXR0b25TdGF0ZSgnaW5jb21wYXRpYmxlJyk7CgkgICAgfQoJfQoKCWluaXQoKTsKICAgIH07CgogICAgJC5mbi5jZ1dlYlB1c2ggPSBmdW5jdGlvbiggb3B0aW9ucyApIHsKCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXsKCSAgICBpZiggdW5kZWZpbmVkID09ICQodGhpcykuZGF0YSgnY2dXZWJQdXNoJykgKSB7CgkJdmFyIHBsdWdpbiA9IG5ldyAkLl9jZ1dlYlB1c2goIHRoaXMsIG9wdGlvbnMgKTsKCQkkKHRoaXMpLmRhdGEoJ2NnV2ViUHVzaCcscGx1Z2luKTsKCSAgICB9Cgl9KTsKICAgIH0KfSggalF1ZXJ5ICkpOwoKJChmdW5jdGlvbigpewogICAgLy8gcmVnaXN0ZXIgdGhlIHNlcnZpY2Ugd29ya2VyCiAgICB0cnkgewoJaWYoICEoJ3NlcnZpY2VXb3JrZXInIGluIG5hdmlnYXRvcikgKSB0aHJvdyAnU2VydmljZSB3b3JrZXJzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3Nlcic7CgljZ1dlYlB1c2gucmVnaXN0ZXJXb3JrZXIoKTsKICAgIH0KICAgIGNhdGNoKCBlcnIgKSB7Cgljb25zb2xlLmxvZyggJ1dBUk5JTkc6ICcrZXJyKTsKICAgIH0KfSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2dyb3VwJ10gPSAnR3JvdXAnOwokbGFuZ1snYWRtaW5fZ3JvdXAnXSA9ICdBZG1pbiBHcm91cCc7CiRsYW5nWydzZW5kdG8nXSA9ICdTZW5kIHRvJzsKJGxhbmdbJ3RhYl91c2VwdXNoJ10gPSAnU3Vic2NyaWJlJzsKJGxhbmdbJ3Byb21wdF9zdWJzY3JpYmUnXSA9ICdTdWJzY3JpYmUnOwokbGFuZ1sncHJvbXB0X3Vuc3Vic2NyaWJlJ10gPSAnVW5zdWJzY3JpYmUnOwokbGFuZ1sncHJvbXB0X2Rpc2FibGVkJ10gPSAnRGlzYWJsZWQnOwokbGFuZ1sncHJvbXB0X2luY29tcGF0aWJsZSddID0gJ0luY29tcGF0aWJsZSc7CiRsYW5nWydwcm9tcHRfbG9hZGluZyddID0gJ0xvYWRpbmcnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdTZW5kIG5vdGlmaWNhdGlvbnMgdG8gdXNlcnMgYnJvd3NlcnMsIGV2ZW4gd2hlbiBub3QgdmlzaXRpbmcgeW91ciBzaXRlLic7CiRsYW5nWydpbmZvX3NlbmRlcl93ZWJwdXNoJ10gPSAnV2ViIFB1c2ggbm90aWZpY2F0aW9ucyBhcmUgc2VudCB0byBGRVUgdXNlcnMgd2hvIGhhdmUgaW5kaWNhdGVkIHRoYXQgdGhleSB3b3VsZCBsaWtlIHRvIHJlY2VpdmUgcHVzaCBub3RpZmljYXRpb25zLiAgVXNlcnMgZG8gbm90IG5lZWQgdG8gYmUgbG9nZ2VkIGluIHRvIHJlY2VpdmUgdGhlc2UgbWVzc2FnZXMuPGJyLz5JZiBhIGxpbmsgaXMgZW50ZXJlZCwgdGhlbiB1c2VycyB3aWxsIGJlIGRpcmVjdGVkIHRvIHRoYXQgbGluayBpZiB0aGV5IGNsaWNrIG9uIHRoZSBub3RpZmljYXRpb24uICBJZiBhbiBpbWFnZSBpcyBzZWxlY3RlZCwgYSBwcmV2aWV3IG9mIHRoYXQgaW1hZ2Ugd2lsbCBiZSBkaXNwbGF5ZWQgaW4gdGhlIG5vdGlmaWNhdGlvbi4nOwokbGFuZ1sndHJhbnNwb3J0X25hbWUnXSA9ICdXZWIgUHVzaCBOb3RpZmljYXRpb24nOwokbGFuZ1sndHJhbnNwb3J0X2Rlc2MnXSA9ICdTZW5kIFdlYi1QdXNoIG5vdGlmaWNhdGlvbnMgdG8gc3Vic2NyaWJlZCB1c2Vycyc7CiRsYW5nWyd0b3BpYyddID0gJ1RvcGljJzsKJGxhbmdbJ3B1c2hfc3VjY2Vzc2Z1bF9uJ10gPSAnU2VudCAlZCBwdXNoIG5vdGlmaWNhdGlvbnMnOwokbGFuZ1snZmV1X2dyb3VwJ10gPSAnRkVVIEdyb3VwJzsKJGxhbmdbJ3NlbmQnXSA9ICdTZW5kJzsKJGxhbmdbJ2JvZHknXSA9ICdCb2R5JzsKJGxhbmdbJ3VybCddID0gJ1VSTCc7CiRsYW5nWyd0YWJfc2VuZHB1c2gnXSA9ICdTZW5kIFdlYlB1c2ggTm90aWZpY2F0aW9ucyc7CiRsYW5nWyd0YWJfcHJlZnMnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWyd1cGRhdGVfc3cnXSA9ICdVcGRhdGUgU2VydmljZSBXb3JrZXInOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBtb2R1bGUuIEFsbCBWQVBJRCBrZXlzIGFuZCBzdWJzY3JpcHRpb24gaW5mb3JtYXRpb24gd2lsbCBiZSBsb3N0JzsKJGxhbmdbJ2luZm9fdGl0bGUnXSA9ICdTcGVjaWZ5IGEgdGl0bGUgdG8gdXNlIGZvciBhbGwgbm90aWZpY2F0aW9ucy4gIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBzaXRlIG5hbWUgd2lsbCBiZSB1c2VkJzsKJGxhbmdbJ2luZm9faWNvbiddID0gJ0FuIG9wdGlvbmFsIGljb24gdG8gZGlzcGxheSBmb3IgYWxsIG5vdGlmaWNhdGlvbnMuICBQbGVhc2Ugc2VsZWN0IGEgc3F1YXJlIGltYWdlIG9mIHNpemUgOTZ4OTYgb3IgZ3JlYXRlci4nOwokbGFuZ1snZ2VuZXJhdGVfa2V5cyddID0gJ0dlbmVyYXRlIGtleXMnOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdDR1dlYlB1c2ggaXMgaW5zdGFsbGVkLiAgUGxlYXNlIHZpc2l0IHRoZSBhZG1pbiBwYW5lbCBvZiB0aGlzIG1vZHVsZSBmb3IgY29uZmlndXJhdGlvbic7CiRsYW5nWyd3YXJuX25va2V5cyddID0gJ1lvdSBoYXZlIG5vdCBjcmVhdGVkIGFueSBtZXNzYWdpbmcga2V5cy4gIFRoaXMgbW9kdWxlIGlzIGN1cnJlbnRseSBub3QgZnVuY3Rpb25hbCc7CiRsYW5nWydjb25maXJtX25ld2tleXMnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZ2VuZXJhdGUgbmV3IGtleXMuICBZb3VyIGN1cnJlbnQgc3Vic2NyaWJlciBpbmZvcm1hdGlvbiB3aWxsIGJlIGNvbXBsZXRlbHkgaW52YWxpZGF0ZWQgaWYgeW91IGNvbnRpbnVlPyc7CiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdDR1dlYlB1c2gnOwokbGFuZ1sndGl0bGUnXSA9ICdUaXRsZSc7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snaWNvbiddID0gJ0ljb24nOw==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.FeuGroupPushMessage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCmNsYXNzIEZldUdyb3VwUHVzaE1lc3NhZ2UgZXh0ZW5kcyBQdXNoTWVzc2FnZQp7CiAgICBwcml2YXRlICRfZGF0YSA9IFsgJ2dpZCc9Pm51bGwgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRkYXRhID0gbnVsbCApCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCggJGRhdGEgKTsKICAgICAgICBpZiggaXNfYXJyYXkoICRkYXRhICYmIGNvdW50KCRkYXRhKSkgKSB7CiAgICAgICAgICAgICRnaWQgPSBcY2dlX3BhcmFtOjpnZXRfaW50KCAkcGFyYW1zLCAnZ2lkJyApOwogICAgICAgICAgICBpZiggJGdpZCA+IDAgKSAkdGhpcy0+X2RhdGFbJ2dpZCddID0gJGdpZDsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCAka2V5ICkKICAgIHsKICAgICAgICBpZiggJGtleSA9PSAnZ2lkJyApIHJldHVybiAkdGhpcy0+X2RhdGFbJ2dpZCddOwogICAgICAgIHJldHVybiBwYXJlbnQ6Ol9fZ2V0KCAka2V5ICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkanVzdFdpdGgoICRrZXksICR2YWx1ZSApCiAgICB7CiAgICAgICAgaWYoICRrZXkgPT0gJ2dpZCcgKSB7CiAgICAgICAgICAgICRvYmogPSBjbG9uZSAkdGhpczsKICAgICAgICAgICAgJG9iai0+X2RhdGFbJ2dpZCddID0gKGludCkgJHZhbHVlOwogICAgICAgICAgICByZXR1cm4gJG9iajsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYXJlbnQ6OmFkanVzdFdpdGgoICRrZXksICR2YWx1ZSApOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.PushMessage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCmNsYXNzIFB1c2hNZXNzYWdlCnsKICAgIHByaXZhdGUgJF9kYXRhID0gWyd0aXRsZSc9Pm51bGwsICdib2R5Jz0+bnVsbCwgJ3VybCc9Pm51bGwsICdpY29uJz0+bnVsbCwgJ3RvcGljJz0+bnVsbCwgJ2ltYWdlJz0+bnVsbCwgJ3R0bCc9Pm51bGwgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRkYXRhID0gbnVsbCApCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCRkYXRhKSAmJiBjb3VudCgkZGF0YSkgKSB7CiAgICAgICAgICAgIGZvcmVhY2goICRkYXRhIGFzICRrZXkgPT4gJHZhbHVlICkgewogICAgICAgICAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgICAgICAgICAgY2FzZSAndGl0bGUnOgogICAgICAgICAgICAgICAgY2FzZSAnYm9keSc6CiAgICAgICAgICAgICAgICBjYXNlICd1cmwnOgogICAgICAgICAgICAgICAgY2FzZSAnaWNvbic6CiAgICAgICAgICAgICAgICBjYXNlICd0b3BpYyc6CiAgICAgICAgICAgICAgICBjYXNlICdpbWFnZSc6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ3R0bCc6CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9kYXRhWyRrZXldID0gbWF4KDAsKGludCkgJHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoICRrZXkgKQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICd0aXRsZSc6CiAgICAgICAgY2FzZSAnYm9keSc6CiAgICAgICAgY2FzZSAndXJsJzoKICAgICAgICBjYXNlICdpY29uJzoKICAgICAgICBjYXNlICd0b3BpYyc6CiAgICAgICAgY2FzZSAnaW1hZ2UnOgogICAgICAgICAgICByZXR1cm4gdHJpbSgkdGhpcy0+X2RhdGFbJGtleV0pOwoKICAgICAgICBjYXNlICd0dGwnOgogICAgICAgICAgICByZXR1cm4gKGludCkgJHRoaXMtPl9kYXRhWyRrZXldOwogICAgICAgIH0KICAgIH0KCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gX19zZXQoICRrZXksICR2YWx1ZSApCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBtZW1iZXIgb2YgIi5nZXRfY2xhc3MoJHRoaXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRqdXN0V2l0aCggJGtleSwgJHZhbHVlICkKICAgIHsKICAgICAgICAkb2JqID0gY2xvbmUgJHRoaXM7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3RpdGxlJzoKICAgICAgICBjYXNlICdib2R5JzoKICAgICAgICBjYXNlICd1cmwnOgogICAgICAgIGNhc2UgJ2ljb24nOgogICAgICAgIGNhc2UgJ3RvcGljJzoKICAgICAgICBjYXNlICdpbWFnZSc6CiAgICAgICAgICAgICRvYmotPl9kYXRhWyRrZXldID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSAndHRsJzoKICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSBtYXgoMCwoaW50KSAkdmFsdWUpOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvYmo7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldF9vcHRpb25zKCkKICAgIHsKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgJG91dFsnYmF0Y2hTaXplJ10gPSA1MDA7CiAgICAgICAgaWYoICR0aGlzLT50dGwgPiAwICkgJG91dFsnVFRMJ10gPSAoaW50KSAkdGhpcy0+dHRsICogMzYwMDsKICAgICAgICBpZiggJHRoaXMtPmljb24gKSAkb3V0WydpY29uJ10gPSAkdGhpcy0+aWNvbjsKICAgICAgICBpZiggJHRoaXMtPnRvcGljICkgJG91dFsndG9waWMnXSA9ICR0aGlzLT50b3BpYzsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3BheWxvYWRfYXJyKCkKICAgIHsKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgaWYoICR0aGlzLT50aXRsZSApICRvdXRbJ3RpdGxlJ10gPSB0cmltKHN0cmlwX3RhZ3MoJHRoaXMtPnRpdGxlKSk7CiAgICAgICAgaWYoICR0aGlzLT5ib2R5ICkgJG91dFsnbXNnJ10gPSAkdGhpcy0+Ym9keTsKICAgICAgICBpZiggJHRoaXMtPnVybCApICRvdXRbJ3VybCddID0gJHRoaXMtPnVybDsKICAgICAgICBpZiggJHRoaXMtPmltYWdlICkgJG91dFsnaW1hZ2UnXSA9ICR0aGlzLT5pbWFnZTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X3BheWxvYWQoKQogICAgewogICAgICAgIHJldHVybiBqc29uX2VuY29kZSgkdGhpcy0+Z2V0X3BheWxvYWRfYXJyKCkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbV9ub3RpZmljYXRpb24oIFxub3RpZmljYXRpb25fbWVzc2FnZSAkaW4gKQogICAgewogICAgICAgICRhcnJbJ3RpdGxlJ10gPSAkaW4tPnN1YmplY3Q7CiAgICAgICAgaWYoICEkYXJyWyd0aXRsZSddICkgJGFyclsndGl0bGUnXSA9IFxjbXNfc2l0ZXByZWZzOjpnZXQoJ3NpdGVuYW1lJyk7CgogICAgICAgICRhcnJbJ2JvZHknXSA9ICRpbi0+Ym9keTsKCiAgICAgICAgaWYoICRpbi0+bGluayApICRhcnJbJ3VybCddID0gJGluLT5saW5rOwogICAgICAgIGlmKCAkaW4tPnBpY3R1cmUgKSAkYXJyWydpbWFnZSddID0gJGluLT5waWN0dXJlOwoKICAgICAgICAkb2JqID0gbmV3IHNlbGYoKTsKICAgICAgICAkb2JqLT5fZGF0YSA9IGFycmF5X21lcmdlKCRvYmotPl9kYXRhLCRhcnIpOwogICAgICAgIHJldHVybiAkb2JqOwogICAgfQp9IC8vIGNsYXNz]]></data>
	</file>
	<file>
	  <filename>/lib/class.Subscription.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCmNsYXNzIFN1YnNjcmlwdGlvbgp7CiAgICBwcml2YXRlICRfZGF0YSA9IFsnaWQnPT5udWxsLCAnc3Vic2NyaXB0aW9uJz0+bnVsbCwgJ2ZldV91aWQnPT5udWxsLCAnYWRtaW5fdWlkJz0+bnVsbCBdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCggJGtleSApCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ2lkJzoKICAgICAgICBjYXNlICdzdWJzY3JpcHRpb24nOgogICAgICAgIGNhc2UgJ2ZldV91aWQnOgogICAgICAgIGNhc2UgJ2FkbWluX3VpZCc6CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBnZXR0YWJsZSBtZW1iZXIgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19zZXQoICRrZXksICR2YWwgKQogICAgewogICAgICAgIHN3aXRjaCggJGtleSApIHsKICAgICAgICBjYXNlICdzdWJzY3JpcHRpb24nOgogICAgICAgICAgICBpZiggIWlzX29iamVjdCggJHZhbCApIHx8ICFpc3NldCgkdmFsLT5lbmRwb2ludCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIHN1YnNjcmlwdGlvbiBkYXRhIHNwZWNpZmllZCBmb3IgYSBzdWJzY3JpcHRpb24gb2JqZWN0Jyk7CiAgICAgICAgICAgIGlmKCAhJHRoaXMtPl9kYXRhWyRrZXldICkgewogICAgICAgICAgICAgICAgJHNpZyA9IG1kNSgkdmFsLT5lbmRwb2ludCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJ2lkJ10gPSAkc2lnOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5fZGF0YVska2V5XSA9ICR2YWw7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdmZXVfdWlkJzoKICAgICAgICBjYXNlICdhZG1pbl91aWQnOgogICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSAoaW50KSAkdmFsOwogICAgICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiJGtleSBpcyBub3QgYSBzZXR0YWJsZSBtZW1iZXIgb2YgIi5fX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/lib/class.SubscriptionStorage.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCmNsYXNzIFN1YnNjcmlwdGlvblN0b3JhZ2UKewogICAgcHJpdmF0ZSAkX2RiOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChcQ01TTVNcRGF0YWJhc2VcQ29ubmVjdGlvbiAkZGIpCiAgICB7CiAgICAgICAgJHRoaXMtPl9kYiA9ICRkYjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSggU3Vic2NyaXB0aW9uICRvYmogKQogICAgewogICAgICAgIC8vIHJldHVybiB2b2lkLgogICAgICAgICRzcWwgPSAnSU5TRVJ0IElOVE8gJy5zZWxmOjp0YWJsZV9uYW1lKCkuJyAoaWQsc3Vic2NyaXB0aW9uLGZldV91aWQsYWRtaW5fdWlkKSBWQUxVRVMgKD8sPyw/LD8pJzsKICAgICAgICAkdGhpcy0+X2RiLT5FeGVjdXRlKCAkc3FsLCBbICRvYmotPmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsaXplKCRvYmotPnN1YnNjcmlwdGlvbiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb2JqLT5mZXVfdWlkLCAkb2JqLT5hZG1pbl91aWQgXSApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGUoICRpZCApCiAgICB7CiAgICAgICAgLy8gcmV0dXJuIHZvaWQKICAgICAgICAkc3FsID0gJ0RFTEVURSBGUk9NICcuc2VsZjo6dGFibGVfbmFtZSgpLicgV0hFUkUgaWQgPSA/JzsKICAgICAgICAkdGhpcy0+X2RiLT5FeGVjdXRlKCAkc3FsLCBbICRpZCBdICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRfZm9yX3VzZXIoICRmZXVfdWlkICkKICAgIHsKICAgICAgICAvLyByZXR1cm5zIGFuIGFycmF5IG9mIHN1YnNjcmlwdGlvbiBvYmplY3RzCiAgICAgICAgJHNxbCA9ICdTRUxFQ1QgKiBGUk9NICcuc2VsZjo6dGFibGVfbmFtZSgpLicgV0hFUkUgZmV1X3VpZCA9ID8nOwogICAgICAgICR0bXAgPSAkdGhpcy0+X2RiLT5HZXRBcnJheSggJHNxbCwgWyAoaW50KSAkZmV1X3VpZCBdICk7CiAgICAgICAgaWYoICEkdG1wICkgcmV0dXJuOwoKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAkcm93ICkgewogICAgICAgICAgICAkb2JqID0gbmV3IFN1YnNjcmlwdGlvbjsKICAgICAgICAgICAgJG9iai0+c3Vic2NyaXB0aW9uID0gdW5zZXJpYWxpemUoICRyb3dbJ3N1YnNjcmlwdGlvbiddICk7CiAgICAgICAgICAgICRvYmotPmZldV91aWQgPSAoaW50KSAkcm93WydmZXVfdWlkJ107CiAgICAgICAgICAgICRvYmotPmFkbWluX3VpZCA9IChpbnQpICRyb3dbJ2FkbWluX3VpZCddOwogICAgICAgICAgICAkb3V0W10gPSAkb2JqOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZF9mb3JfYWRtaW5fdXNlciggJGFkbWluX3VpZCApCiAgICB7CiAgICAgICAgLy8gcmV0dXJucyBhbiBhcnJheSBvZiBzdWJzY3JpcHRpb24gb2JqZWN0cwogICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnLnNlbGY6OnRhYmxlX25hbWUoKS4nIFdIRVJFIGFkbWluX3VpZCA9ID8nOwogICAgICAgICR0bXAgPSAkdGhpcy0+X2RiLT5HZXRBcnJheSggJHNxbCwgWyAoaW50KSAkZmV1X3VpZCBdICk7CiAgICAgICAgaWYoICEkdG1wICkgcmV0dXJuOwoKICAgICAgICAkb3V0ID0gW107CiAgICAgICAgZm9yZWFjaCggJHRtcCBhcyAkcm93ICkgewogICAgICAgICAgICAkb2JqID0gbmV3IFN1YnNjcmlwdGlvbjsKICAgICAgICAgICAgJG9iai0+c3Vic2NyaXB0aW9uID0gdW5zZXJpYWxpemUoICRyb3dbJ3N1YnNjcmlwdGlvbiddICk7CiAgICAgICAgICAgICRvYmotPmZldV91aWQgPSAoaW50KSAkcm93WydmZXVfdWlkJ107CiAgICAgICAgICAgICRvYmotPmFkbWluX3VpZCA9IChpbnQpICRyb3dbJ2FkbWluX3VpZCddOwogICAgICAgICAgICAkb3V0W10gPSAkb2JqOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZF9mb3JfZ3JvdXAoICRmZXVfZ2lkICkKICAgIHsKICAgICAgICAvLyByZXR1cm5zIGFuIGFycmF5IG9mIHN1YnNjcmlwdGlvbiBvYmplY3RzCiAgICAgICAgJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0ZST05URU5EVVNFUlMpOwogICAgICAgIGlmKCAhJGZldSApIHJldHVybjsKCiAgICAgICAgJHF1ZXJ5ID0gbmV3IFxmZXVfdXNlcl9xdWVyeTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBcZmV1X3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9HUk9VUElELCAkZmV1X2dpZCApOwogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoIFxmZXVfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEVYUElSRUQgKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBcZmV1X3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RESVNBQkxFRCApOwogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgICR0bXAgPSBudWxsOwogICAgICAgIHdoaWxlKCAhJHJzLT5FT0YoKSApIHsKICAgICAgICAgICAgJHJvdyA9ICRycy0+ZmllbGRzOwogICAgICAgICAgICAkdG1wW10gPSAoaW50KSAkcm93WydpZCddOwogICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7CiAgICAgICAgfQogICAgICAgIHVuc2V0KCAkcXVlcnksICRycywgJGZldSApOwoKICAgICAgICAkc3FsID0gJ1NFTEVDVCAqIEZST00gJy5zZWxmOjp0YWJsZV9uYW1lKCkuJyBXSEVSRSBmZXVfdWlkIElOICgnLmltcGxvZGUoJywnLCR0bXApLicpJzsKICAgICAgICAkdG1wID0gJHRoaXMtPl9kYi0+R2V0QXJyYXkoICRzcWwgKTsKICAgICAgICBpZiggISR0bXAgKSByZXR1cm47CgogICAgICAgICRvdXQgPSBbXTsKICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRyb3cgKSB7CiAgICAgICAgICAgICRvYmogPSBuZXcgU3Vic2NyaXB0aW9uOwogICAgICAgICAgICAkb2JqLT5zdWJzY3JpcHRpb24gPSB1bnNlcmlhbGl6ZSggJHJvd1snc3Vic2NyaXB0aW9uJ10gKTsKICAgICAgICAgICAgJG9iai0+ZmV1X3VpZCA9IChpbnQpICRyb3dbJ2ZldV91aWQnXTsKICAgICAgICAgICAgJG9iai0+YWRtaW5fdWlkID0gKGludCkgJHJvd1snYWRtaW5fdWlkJ107CiAgICAgICAgICAgICRvdXRbXSA9ICRvYmo7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkX2Zvcl9hZG1pbl9ncm91cCggJGFkbWluX2dpZCApCiAgICB7CiAgICAgICAgJHVzZXJvcHMgPSBcVXNlck9wZXJhdGlvbnM6OmdldF9pbnN0YW5jZSgpOwogICAgICAgICR1c2VycyA9ICR1c2Vyb3BzLT5Mb2FkVXNlcnNJbkdyb3VwKCAkYWRtaW5fZ2lkICk7CiAgICAgICAgaWYoICFjb3VudCggJHVzZXJzICkgKSByZXR1cm47CgogICAgICAgICR1aWRfbGlzdCA9IG51bGw7CiAgICAgICAgZm9yZWFjaCggJHVzZXJzIGFzICR1c2VyICkgewogICAgICAgICAgICAkdWlkX2xpc3RbXSA9IChpbnQpICR1c2VyLT5pZDsKICAgICAgICB9CgogICAgICAgICRzcWwgPSAnU0VMRUNUICogRlJPTSAnLnNlbGY6OnRhYmxlX25hbWUoKS4nIFdIRVJFIGFkbWluX3VpZCBJTiAoJy5pbXBsb2RlKCcsJywkdWlkX2xpc3QpLicpJzsKICAgICAgICAkdG1wID0gJHRoaXMtPl9kYi0+R2V0QXJyYXkoICRzcWwgKTsKICAgICAgICBpZiggISR0bXAgKSByZXR1cm47CgogICAgICAgICRvdXQgPSBbXTsKICAgICAgICBmb3JlYWNoKCAkdG1wIGFzICRyb3cgKSB7CiAgICAgICAgICAgICRvYmogPSBuZXcgU3Vic2NyaXB0aW9uOwogICAgICAgICAgICAkb2JqLT5zdWJzY3JpcHRpb24gPSB1bnNlcmlhbGl6ZSggJHJvd1snc3Vic2NyaXB0aW9uJ10gKTsKICAgICAgICAgICAgJG9iai0+ZmV1X3VpZCA9IChpbnQpICRyb3dbJ2ZldV91aWQnXTsKICAgICAgICAgICAgJG9iai0+YWRtaW5fdWlkID0gKGludCkgJHJvd1snYWRtaW5fdWlkJ107CiAgICAgICAgICAgICRvdXRbXSA9ICRvYmo7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkX2FsbCgpCiAgICB7CiAgICAgICAgJHNxbCA9ICdTRUxFQ1QgKiBGUk9NICcuc2VsZjo6dGFibGVfbmFtZSgpOwogICAgICAgICR0bXAgPSAkdGhpcy0+X2RiLT5HZXRBcnJheSggJHNxbCApOwogICAgICAgIGlmKCAhJHRtcCApIHJldHVybjsKCiAgICAgICAgJG91dCA9IFtdOwogICAgICAgIGZvcmVhY2goICR0bXAgYXMgJHJvdyApIHsKICAgICAgICAgICAgJG9iaiA9IG5ldyBTdWJzY3JpcHRpb247CiAgICAgICAgICAgICRvYmotPnN1YnNjcmlwdGlvbiA9IHVuc2VyaWFsaXplKCAkcm93WydzdWJzY3JpcHRpb24nXSApOwogICAgICAgICAgICAkb2JqLT5mZXVfdWlkID0gKGludCkgJHJvd1snZmV1X3VpZCddOwogICAgICAgICAgICAkb2JqLT5hZG1pbl91aWQgPSAoaW50KSAkcm93WydhZG1pbl91aWQnXTsKICAgICAgICAgICAgJG91dFtdID0gJG9iajsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0YWJsZV9uYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gQ01TX0RCX1BSRUZJWC4nbW9kX2Nnd2VicHVzaCc7CiAgICB9Cn0gLy8gY2xhc3M=]]></data>
	</file>
	<file>
	  <filename>/lib/class.utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCmZpbmFsIGNsYXNzIHV0aWxzCnsKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3B1YmxpY192YXBpZF9rZXkoKQogICAgewogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR1dFQlBVU0gpOwogICAgICAgICRvdXQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCd2YXBpZF9wdWJsaWMnKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9wcml2YXRlX3ZhcGlkX2tleSgpCiAgICB7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHV0VCUFVTSCk7CiAgICAgICAgcmV0dXJuICRtb2QtPkdldFByZWZlcmVuY2UoJ3ZhcGlkX3ByaXZhdGUnKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhdmVLZXlzKCkKICAgIHsKICAgICAgICAkYSA9IHNlbGY6OmdldF9wdWJsaWNfdmFwaWRfa2V5KCk7CiAgICAgICAgJGIgPSBzZWxmOjpnZXRfcHJpdmF0ZV92YXBpZF9rZXkoKTsKICAgICAgICByZXR1cm4gKCRhICYmICRiKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEF1dGgoKQogICAgewogICAgICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJHN1YmplY3QgPSAkY29uZmlnWydyb290X3VybCddOwogICAgICAgICRvdXQgPSBbICdWQVBJRCcgPT4gWwogICAgICAgICAgICAgICAgJ3N1YmplY3QnID0+ICRzdWJqZWN0LAogICAgICAgICAgICAgICAgJ3B1YmxpY0tleScgPT4gc2VsZjo6Z2V0X3B1YmxpY192YXBpZF9rZXkoKSwKICAgICAgICAgICAgICAgICdwcml2YXRlS2V5JyA9PiBzZWxmOjpnZXRfcHJpdmF0ZV92YXBpZF9rZXkoKSwKICAgICAgICAgICAgICAgIF0gXTsKICAgICAgICAvL2lmKCAhJG91dFsnVkFQSUQnXVsnc3ViamVjdCddICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGRldGVybWluZSBhdXRoIHN1YmplY3QuJyk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3cml0ZV9zZXJ2aWNlV29ya2VyKCkKICAgIHsKICAgICAgICAkb3V0ZmlsZSA9IENNU19ST09UX1BBVEguJy9jZ19wdXNoU2VydmljZVdvcmtlci5qcyc7CiAgICAgICAgaWYoIGlzX2ZpbGUoJG91dGZpbGUpICkgewogICAgICAgICAgICBpZiggIWlzX3dyaXRhYmxlKCRvdXRmaWxlKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiJG91dGZpbGUgaXMgbm90IHdyaXRhYmxlIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICFpc193cml0YWJsZSggQ01TX1JPT1RfUEFUSCApICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIiRvdXRmaWxlIGlzIG5vdCB3cml0YWJsZSIpOwogICAgICAgIH0KCiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHV2ViUHVzaCcpOyAvLyBkbyBub3QgdXNlIGRlZmluZSBoZXJlLgogICAgICAgICR0cGwgPSAkbW9kLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnc2VydmljZVdvcmtlci50cGwnKTsKCiAgICAgICAgJHRpdGxlID0gdHJpbSgkbW9kLT5HZXRQcmVmZXJlbmNlKCd0aXRsZScpKTsKICAgICAgICBpZiggISR0aXRsZSApICR0aXRsZSA9IHRyaW0oXGNtc19zaXRlcHJlZnM6OmdldCgnc2l0ZW5hbWUnLCdDTVNNUyBTaXRlJykpOwogICAgICAgICR0cGwtPmFzc2lnbignbXNnX3RpdGxlJywkdGl0bGUpOwoKICAgICAgICAkaWNvbiA9IHRyaW0oJG1vZC0+R2V0UHJlZmVyZW5jZSgnaWNvbicpKTsKICAgICAgICBpZiggJGljb24gKSB7CiAgICAgICAgICAgICRpY29uID0gInVwbG9hZHMvJGljb24iOwogICAgICAgIH0KICAgICAgICAkdHBsLT5hc3NpZ24oJ2ljb24nLCRpY29uKTsKCiAgICAgICAgJHR4dCA9ICR0cGwtPmZldGNoKCk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoICRvdXRmaWxlLCAkdHh0ICk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfaGVhZF9qYXZhc2NyaXB0KCAkcmV0dXJuaWQgKQogICAgewogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR1dFQlBVU0gpOwoJaWYoICEkbW9kICkgcmV0dXJuOwogICAgICAgICR0cGwgPSAkbW9kLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnanMudHBsJyk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdwdWJsaWNfa2V5Jywgc2VsZjo6Z2V0X3B1YmxpY192YXBpZF9rZXkoKSApOwogICAgICAgICR0cGwtPmFzc2lnbignbW9kdWxlX3VybF9wYXRoJywkbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCkpOwogICAgICAgICR1cmwgPSAkbW9kLT5jcmVhdGVfdXJsKCAnY250bnQwMScsICdhamF4X3N1YnNjcmliZScsICRyZXR1cm5pZCApOwogICAgICAgICR1cmwgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywkdXJsKS4nJnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiAgICAgICAgJHRwbC0+YXNzaWduKCdhamF4X3VybCcsJHVybCk7CiAgICAgICAgcmV0dXJuICR0cGwtPmZldGNoKCk7CiAgICB9Cn0gLy8gZW5kIG9mIGNsYXNzCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.WebPushCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCiRkaXIgPSBkaXJuYW1lKF9fRElSX18pOwpyZXF1aXJlX29uY2UoICIkZGlyL3ZlbmRvci9hdXRvbG9hZC5waHAiICk7CnVzZSBcQ01TTVNcQ0xJXEFwcDsKdXNlIFxDTVNNU1xDTElcR2V0T3B0RXh0XENvbW1hbmQ7CnVzZSBcQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBcQ01TTVNcQ0xJXEdldE9wdEV4dFxHZXRPcHQ7CnVzZSBcR2V0T3B0XE9wZXJhbmQ7CnVzZSBNaW5pc2hsaW5rXFdlYlB1c2hcV2ViUHVzaDsKCmNsYXNzIFdlYlB1c2hDb21tYW5kIGV4dGVuZHMgQ29tbWFuZAp7CiAgICBwcml2YXRlICRzdG9yYWdlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggQXBwICRhcHAsIFN1YnNjcmlwdGlvblN0b3JhZ2UgJHN0b3JhZ2UgKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoICRhcHAsICd3ZWJwdXNoLWZldS1ncm91cCcgKTsKICAgICAgICAkdGhpcy0+c2V0RGVzY3JpcHRpb24oJ1NlbmQgYSBtZXNzYWdlIHZpYSB3ZWJwdXNoJyk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwndHRsJywgR2V0T3B0OjpSRVFVSVJFRF9BUkdVTUVOVCApLT5zZXREZXNjcmlwdGlvbignU2V0IHRpbWUtdG8tbGl2ZSBpbiBob3VycycpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wdGlvbiggT3B0aW9uOjpDcmVhdGUobnVsbCwndG9waWMnLCBHZXRPcHQ6OlJFUVVJUkVEX0FSR1VNRU5UICktPnNldERlc2NyaXB0aW9uKCdTZXQgdG9waWMnKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKG51bGwsJ3VybCcsIEdldE9wdDo6UkVRVUlSRURfQVJHVU1FTlQgKS0+c2V0RGVzY3JpcHRpb24oJ1VSTCB0byBuYXZpZ2F0ZSB0byB3aGVuIG5vdGlmaWNhdGlvbiBpcyBjbGlja2VkJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdmZXVncm91cCcsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgICAgICAkdGhpcy0+YWRkT3BlcmFuZCggbmV3IE9wZXJhbmQoICdtZXNzYWdlJywgT3BlcmFuZDo6UkVRVUlSRUQgKSApOwoKICAgICAgICAkdGhpcy0+c3RvcmFnZSA9ICRzdG9yYWdlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYW5kbGUoKQogICAgewogICAgICAgICRmZXVncm91cCA9ICR0aGlzLT5nZXRPcGVyYW5kKCAnZmV1Z3JvdXAnICktPnZhbHVlKCk7CiAgICAgICAgJG1lc3NhZ2UgPSAkdGhpcy0+Z2V0T3BlcmFuZCggJ21lc3NhZ2UnICktPnZhbHVlKCk7CgogICAgICAgICRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiAgICAgICAgaWYoICEkZmV1ICkgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdUaGlzIGNvbW1hbmQgY2Fubm90IGJlIGV4ZWN1dGVkIGJlY2F1c2UgdGhlIEZFVSBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZScpOwogICAgICAgICRmZXVfZ2lkID0gJGZldS0+R2V0R3JvdXBJZCggJGZldWdyb3VwICk7CiAgICAgICAgaWYoICRmZXVfZ2lkIDwgMSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiR3JvdXAgJGZldWdyb3VwIG5vdCBmb3VuZCIpOwogICAgICAgICRsaXN0ID0gJHRoaXMtPnN0b3JhZ2UtPmxvYWRfZm9yX2dyb3VwKCAkZmV1X2dpZCApOwogICAgICAgIGlmKCAhJGxpc3QgKSByZXR1cm47CgogICAgICAgICRtc2cgPSBuZXcgUHVzaE1lc3NhZ2UoIFsgJ2JvZHknPT4kbWVzc2FnZSBdICk7CiAgICAgICAgJHVybCA9ICR0aGlzLT5nZXRPcHRpb24oJ3VybCcpLT52YWx1ZSgpOwogICAgICAgIGlmKCAkdXJsICkgJG1zZyA9ICRtc2ctPmFkanVzdFdpdGgoICd1cmwnLCAkdXJsICk7CiAgICAgICAgaWYoICgkdG9waWMgPSAkdGhpcy0+Z2V0T3B0aW9uKCd0b3BpYycpLT52YWx1ZSgpKSApIHsKICAgICAgICAgICAgJHRvcGljID0gdHJpbSgkdG9waWMpOwogICAgICAgICAgICAkbXNnID0gJG1zZy0+YWRqdXN0V2l0aCggJ3RvcGljJywgJHRvcGljICk7CiAgICAgICAgfQoKICAgICAgICAkZGlzcGF0Y2hlciA9IG5ldyBXZWJQdXNoRGlzcGF0Y2hlciggJGxpc3QsICRtc2cgKTsKICAgICAgICAkZGlzcGF0Y2hlci0+ZGlzcGF0Y2goKTsKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3Mu]]></data>
	</file>
	<file>
	  <filename>/lib/class.WebPushDispatcher.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCiRkaXIgPSBkaXJuYW1lKF9fRElSX18pOwpyZXF1aXJlX29uY2UoICIkZGlyL3ZlbmRvci9hdXRvbG9hZC5waHAiICk7CnVzZSBcQ0dXZWJQdXNoXHV0aWxzOwp1c2UgTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2g7CgpjbGFzcyBXZWJQdXNoRGlzcGF0Y2hlcgp7CiAgICBwcml2YXRlICRfbGlzdDsKICAgIHByaXZhdGUgJF9tc2c7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBhcnJheSAkbGlzdCwgUHVzaE1lc3NhZ2UgJG1zZyApCiAgICB7CiAgICAgICAgaWYoICFjb3VudCgkbGlzdCkgKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIGFycmF5IHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgIGlmKCAhaXNzZXQoJGxpc3RbMF0pIHx8ICEgJGxpc3RbMF0gaW5zdGFuY2VvZiBTdWJzY3JpcHRpb24gKSB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdJbnZhbGlkIGFycmF5IHBhc3NlZCB0byAnLl9fTUVUSE9EX18pOwogICAgICAgICR0aGlzLT5fbGlzdCA9ICRsaXN0OwogICAgICAgICR0aGlzLT5fbXNnID0gJG1zZzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzcGF0Y2goKQogICAgewogICAgICAgICRvcHRpb25zID0gJHRoaXMtPl9tc2ctPmdldF9vcHRpb25zKCk7CiAgICAgICAgJG91dCA9ICR0aGlzLT5fbXNnLT5nZXRfcGF5bG9hZCgpOwogICAgICAgICRhdXRoID0gdXRpbHM6OmdldEF1dGgoKTsKICAgICAgICAkd2ViUHVzaCA9IG5ldyBXZWJQdXNoKCAkYXV0aCwgJG9wdGlvbnMgKTsKICAgICAgICAkbl9zZW50ID0gMDsKICAgICAgICBmb3JlYWNoKCAkdGhpcy0+X2xpc3QgYXMgJG9iaiApIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRzdWJzY3JpcHRpb24gPSAkb2JqLT5zdWJzY3JpcHRpb247CiAgICAgICAgICAgICAgICBpZiggISRzdWJzY3JpcHRpb24gKSBjb250aW51ZTsKCiAgICAgICAgICAgICAgICAkd2ViUHVzaC0+c2VuZE5vdGlmaWNhdGlvbiggJHN1YnNjcmlwdGlvbi0+ZW5kcG9pbnQsICRvdXQsICRzdWJzY3JpcHRpb24tPmtleSwgJHN1YnNjcmlwdGlvbi0+dG9rZW4sIHRydWUgKTsKICAgICAgICAgICAgICAgICRuX3NlbnQrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgIGF1ZGl0KCcnLCdDR1dlYlB1c2gnLCdQcm9ibGVtIHNlbmRpbmcgcHVzaCBub3RpZmljYXRpb24gdG8gJy4kcm93Wyd1c2VybmFtZSddKTsKICAgICAgICAgICAgICAgIFxjZ2VfdXRpbHM6OmxvZ19leGNlcHRpb24oICRlICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRuX3NlbnQ7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oIENHV2ViUHVzaDo6U0VORF9QRVJNLCBDR1dlYlB1c2g6OlNFTkRfUEVSTSApOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbiggQ0dXZWJQdXNoOjpVU0VfUEVSTSwgQ0dXZWJQdXNoOjpVU0VfUEVSTSApOwoKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKJGZsZHMgPSAiCiAgICBpZCBDKDI1NSkgS0VZIE5PVE5VTEwsCiAgICBzdWJzY3JpcHRpb24gWCBOT1ROVUxMLAogICAgZmV1X3VpZCBJLAogICAgYWRtaW5fdWlkIEknOwoiOwokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPUlubm9EQicpOwokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoXENHV2ViUHVzaFxTdWJzY3JpcHRpb25TdG9yYWdlOjp0YWJsZV9uYW1lKCksICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgpcQ0dXZWJQdXNoXHV0aWxzOjp3cml0ZV9zZXJ2aWNlV29ya2VyKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oIENHV2ViUHVzaDo6U0VORF9QRVJNICk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCBDR1dlYlB1c2g6OlVTRV9QRVJNICk7CgokZGIgPSBcY2dlX3V0aWxzOjpnZXRfZGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoXENHV2ViUHVzaFxTdWJzY3JpcHRpb25TdG9yYWdlOjp0YWJsZV9uYW1lKCkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSxGQUxTRSk7Cgokb3V0ZmlsZSA9IENNU19ST09UX1BBVEguJy9jZ19wdXNoU2VydmljZVdvcmtlci5qcyc7CmlmKCBpc19maWxlKCAkb3V0ZmlsZSApICYmIGlzX3dyaXRhYmxlKCAkb3V0ZmlsZSApICkgdW5saW5rKCAkb3V0ZmlsZSApOw==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKaWYoIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwnMS4xJykgPCAwICkgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiAgICAkZmxkcyA9ICIKICAgICAgICBpZCBDKDI1NSkgS0VZIE5PVE5VTEwsCiAgICAgICAgc3Vic2NyaXB0aW9uIFggTk9UTlVMTCwKICAgICAgICBmZXVfdWlkIEknOwogICAgIjsgLy8gaWNvbiBpcyBubyBsb25nZXIgdXNlZC4KICAgICR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9SW5ub0RCJyk7CiAgICAkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoXENHV2ViUHVzaFxTdWJzY3JpcHRpb25TdG9yYWdlOjp0YWJsZV9uYW1lKCksICRmbGRzLCAkdGFib3B0YXJyYXkpOwogICAgJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKICAgICRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdGcm9udEVuZFVzZXJzJyk7CiAgICBpZiggJGZldSApIHsKICAgICAgICAkcXVlcnkgPSBuZXcgXGZldV91c2VyX3F1ZXJ5OwogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoIFxmZXVfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEVYUElSRUQgKTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBcZmV1X3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9OT1RESVNBQkxFRCApOwogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoIFxmZXVfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX1BST1BFUlRZLCAnX19jZ3B1c2h0ZXN0X18nICk7CiAgICAgICAgJHJzID0gJHF1ZXJ5LT5leGVjdXRlKCk7CiAgICAgICAgd2hpbGUoICEkcnMtPkVPRigpICkgewogICAgICAgICAgICAkcm93ID0gJHJzLT5maWVsZHM7CiAgICAgICAgICAgICR1aWQgPSAkcm93WydpZCddOwogICAgICAgICAgICAkZGF0YSA9ICRmZXUtPkdldFVzZXJQcm9wZXJ0eUZ1bGwoICdfX2NncHVzaHRlc3RfXycsICR1aWQgKTsKICAgICAgICAgICAgaWYoICEkZGF0YSApIGNvbnRpbnVlOwogICAgICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCAkZGF0YSApOwogICAgICAgICAgICBmb3JlYWNoKCAkZGF0YSBhcyAkc3Vic2NyICkgewogICAgICAgICAgICAgICAgaWYoICEkc3Vic2NyICkgY29udGludWU7CgogICAgICAgICAgICAgICAgJG9iaiA9IG5ldyBcQ0dXZWJQdXNoXFN1YnNjcmlwdGlvbjsKICAgICAgICAgICAgICAgICRvYmotPnN1YnNjcmlwdGlvbiA9ICRzdWJzY3I7CiAgICAgICAgICAgICAgICAkb2JqLT5mZXVfdWlkID0gJHVpZDsKICAgICAgICAgICAgICAgICR0aGlzLT5zdG9yYWdlLT5zYXZlKCAkb2JqICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJzLT5Nb3ZlTmV4dCgpOwogICAgICAgIH0KCiAgICAgICAgJGZldS0+RGVsZXRlUHJvcGVydHlEZWZuKCAnX19jZ3B1c2h0ZXN0X18nICk7CiAgICB9Cn0KCmlmKCB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sJzEuMS4xJykgPCAwICkgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCiAgICAkc3FsYXJyID0gJGRpY3QtPkFkZENvbHVtblNRTCggXENHV2ViUHVzaFxTdWJzY3JpcHRpb25TdG9yYWdlOjp0YWJsZV9uYW1lKCksICdhZG1pbl91aWQgSScgKTsKICAgICRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnIgKTsKCiAgICAkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbiggQ0dXZWJQdXNoOjpVU0VfUEVSTSwgQ0dXZWJQdXNoOjpVU0VfUEVSTSApOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR1dlYlB1c2giCnZlcnNpb24gPSAiMS4xLjMiCmF1dGhvciA9ICJjYWxndXkxMDAwIgphdXRob3JlbWFpbCA9ICJjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIgptaW5jbXN2ZXJzaW9uID0gMi4yCmxhenlsb2FkYWRtaW4gPSAwCmxhenlsb2FkZnJvbnRlbmQgPSAwCltkZXBlbmRzXQpDR0V4dGVuc2lvbnMgPSAiMS41Ny4xIgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_prefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdD4KJChmdW5jdGlvbigpewogIHtpZiAkaGF2ZV9rZXlzfQogICQoZG9jdW1lbnQpLm9uKCdjbGljaycsJyNuZXdrZXlzJyxmdW5jdGlvbihldil7CiAgICAgIHJldHVybiBjb25maXJtKCd7JG1vZC0+TGFuZygnY29uZmlybV9uZXdrZXlzJyl9Jyk7CiAgfSkKICB7L2lmfQp9KQo8L3NjcmlwdD4KCntpZiAhJGhhdmVfa2V5c30KICA8ZGl2IGNsYXNzPSJ3YXJuaW5nIj57JG1vZC0+TGFuZygnd2Fybl9ub2tleXMnKX08L2Rpdj4Key9pZn0KCntmb3JtX3N0YXJ0IGFjdGlvbj1hZG1pbl9wcmVmc30KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzIiPnskbW9kLT5MYW5nKCd0aXRsZScpfTo8L2xhYmVsPgogICA8ZGl2IGNsYXNzPSJncmlkXzkiPgogICAgIDxpbnB1dCB0eXBlPSJ0ZXhUIiBjbGFzcz0iZ3JpZF8xMiIgbmFtZT0ieyRhY3Rpb25pZH10aXRsZSIgdmFsdWU9InskdGl0bGV9Ii8+CiAgICAgPGRpdiBjbGFzcz0iZ3JpZF8xMiI+eyRtb2QtPkxhbmcoJ2luZm9fdGl0bGUnKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8aHIvPgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMiI+eyRtb2QtPkxhbmcoJ2ljb24nKX06PC9sYWJlbD4KICAgPGRpdiBjbGFzcz0iZ3JpZF85Ij4KICAgICB7Y21zX2ZpbGVwaWNrZXIgcHJlZml4PSRhY3Rpb25pZCBuYW1lPWljb24gdmFsdWU9JGljb24gdHlwZT0naW1hZ2UnfQogICAgIDxkaXYgY2xhc3M9ImdyaWRfMTIiPnskbW9kLT5MYW5nKCdpbmZvX2ljb24nKX08L2Rpdj4KICAgPC9kaXY+CjwvZGl2Pgo8aHIvPgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9c3VibWl0IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3N1Ym1pdCcpfSIvPgogIDxpbnB1dCB0eXBlPSJzdWJtaXQiIGlkPSJuZXdrZXlzIiBuYW1lPSJ7JGFjdGlvbmlkfW5ld2tleXMiIHZhbHVlPSJ7JG1vZC0+TGFuZygnZ2VuZXJhdGVfa2V5cycpfSIvPgogIHtpZiAkZGV2ZWxvcGVyX21vZGV9CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXVwZGF0ZXN3IiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ3VwZGF0ZV9zdycpfSIvPgogIHsvaWZ9CjwvZGl2Pgp7Zm9ybV9lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/admin_push.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2Zvcm1fc3RhcnQgYWN0aW9uPWFkbWluX3B1c2h9CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8yIj57JG1vZC0+TGFuZygnYm9keScpfTo8L2xhYmVsPgogICA8dGV4dGFyZWEgY2xhc3M9ImdyaWRfOSIgbmFtZT0ieyRhY3Rpb25pZH1ib2R5IiBtYXhsZW5ndGg9IjEwMjQiIHJvd3M9IjMiPjwvdGV4dGFyZWE+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzIiPnskbW9kLT5MYW5nKCdzZW5kdG8nKX06PC9sYWJlbD4KICAgPHNlbGVjdCBjbGFzcz0iZ3JpZF85IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbmR0byI+CiAgICAgIDxvcHRpb24gdmFsdWU9ImFkbWluX2dyb3VwIj57JG1vZC0+TGFuZygnYWRtaW5fZ3JvdXAnKX08L29wdGlvbj4KICAgICAgPG9wdGlvbiB2YWx1ZT0iZmV1X2dyb3VwIj57JG1vZC0+TGFuZygnZmV1X2dyb3VwJyl9PC9vcHRpb24+CiAgIDwvc2VsZWN0Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8yIj57JG1vZC0+TGFuZygnZ3JvdXAnKX06PC9sYWJlbD4KICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9Z3JvdXAiIHZhbHVlPSIiIGNsYXNzPSJncmlkXzkiLz4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8yIj57JG1vZC0+TGFuZygndGl0bGUnKX06PC9sYWJlbD4KICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dGl0bGUiIHZhbHVlPSIiIGNsYXNzPSJncmlkXzkiLz4KPC9kaXY+CjxkaXYgY2xhc3M9ImNfZnVsbCBjZiI+CiAgIDxsYWJlbCBjbGFzcz0iZ3JpZF8yIj57JG1vZC0+TGFuZygndXJsJyl9OjwvbGFiZWw+CiAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXVybCIgdmFsdWU9IiIgY2xhc3M9ImdyaWRfOSIvPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzIiPnskbW9kLT5MYW5nKCd0b3BpYycpfTo8L2xhYmVsPgogICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH10b3BpYyIgdmFsdWU9IiIgY2xhc3M9ImdyaWRfOSIvPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2VuZCcpfSIvPgo8L2Rpdj4Ke2Zvcm1fZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_use_push.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ic3Vic2NyaWJlLXpvbmUiIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KICAgPGEgaWQ9InN1YnNjcmliZS1idG4iPjwvYT4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiQoZnVuY3Rpb24oKXsKICAgaWYoIHR5cGVvZiBjZ1dlYlB1c2ggIT0gJ3VuZGVmaW5lZCcgKSB7CiAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUganF1ZXJ5IHBsdWdpbi4KICAgICAgICAkKCcjc3Vic2NyaWJlLWJ0bicpLmNnV2ViUHVzaCh7CgkgICBjaGFuZ2VCdXR0b25TdGF0ZTogZnVuY3Rpb24oIHN0YXRlICkgewoJICAgICAgc3dpdGNoKCBzdGF0ZSApIHsKCSAgICAgICAgICBjYXNlICdlbmFibGVkJzoKCQkgICAgICQodGhpcykudGV4dCggJ3skbW9kLT5MYW5nKCdwcm9tcHRfdW5zdWJzY3JpYmUnKX0nICk7CgkJICAgICBicmVhazsKCQkgIGNhc2UgJ2Rpc2FibGVkJzoKCQkgICAgICQodGhpcykudGV4dCggJ3skbW9kLT5MYW5nKCdwcm9tcHRfc3Vic2NyaWJlJyl9JyApOwoJCSAgICAgYnJlYWs7CgkJICBjYXNlICdpbmNvbXBhdGlibGUnOgoJCSAgICAgJCh0aGlzKS50ZXh0KCAneyRtb2QtPkxhbmcoJ3Byb21wdF9pbmNvbXBhdGlibGUnKX0nICk7CgkJICAgICBicmVhazsKCQkgIGNhc2UgJ2NvbXB1dGluZyc6CgkJICBjYXNlICdsb2FkaW5nJzoKCQkgICAgICQodGhpcykudGV4dCggJ3skbW9kLT5MYW5nKCdwcm9tcHRfbG9hZGluZycpfScgKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgIH0pOwogICB9Cn0pCjwvc2NyaXB0Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/js.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ie3Jvb3RfdXJsfS9jZ19wdXNoU2VydmljZVdvcmtlci5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InskbW9kdWxlX3VybF9wYXRofS9qcy9jZ1dlYlB1c2guanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+e2pzbWlufQokKGZ1bmN0aW9uKCl7CiAgIGlmKCB0eXBlb2YgY2dXZWJQdXNoICE9ICd1bmRlZmluZWQnICkgewogICAgICAgIHZhciBlbCA9ICQoJyNzdWJzY3JpYmUtYnRuJylbMF07CgljZ1dlYlB1c2guc2V0X2FqYXhfdXJsKCAneyRhamF4X3VybH0nICk7CiAgICAgICAgY2dXZWJQdXNoLnNldF92YXBpZF9rZXkoICd7JHB1YmxpY19rZXl9JyApOwogICB9Cn0pCnsvanNtaW59PC9zY3JpcHQ+]]></data>
	</file>
	<file>
	  <filename>/templates/serviceWorker.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[c2VsZi5hZGRFdmVudExpc3RlbmVyKCdwdXNoJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBpZiAoIShzZWxmLk5vdGlmaWNhdGlvbiAmJiBzZWxmLk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09PSAnZ3JhbnRlZCcpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChldmVudC5kYXRhKSB7CiAgICAgICAgdmFyIHRpdGxlID0gInskbXNnX3RpdGxlfSI7Cgl2YXIgaWNvbiA9ICJ7JGljb259IjsKCgl2YXIgdXJsID0gbnVsbDsKCXZhciBpbWFnZSA9IG51bGw7Cgl2YXIgbWVzc2FnZSA9IGV2ZW50LmRhdGEudGV4dCgpOwoJdmFyIG9iaiA9IEpTT04ucGFyc2UoIG1lc3NhZ2UgKTsKCWlmKCBvYmogJiYgb2JqLnRpdGxlICkgdGl0bGUgPSBvYmoudGl0bGU7CglpZiggb2JqICYmIG9iai5pY29uICkgaWNvbiA9IG9iai5pY29uOwoJaWYoIG9iaiAmJiBvYmoubXNnICkgbWVzc2FnZSA9IG9iai5tc2c7CglpZiggb2JqICYmIG9iai51cmwgKSB1cmwgPSBvYmoudXJsOwoJaWYoIG9iaiAmJiBvYmouaW1hZ2UgKSBpbWFnZSA9IG9iai5pbWFnZTsKCgl2YXIgb3B0aW9ucyA9IHsKCSAgICAgJ2JvZHknOiBtZXNzYWdlLAoJICAgICAnaWNvbic6IGljb24sCgkgICAgICdpbWFnZSc6IGltYWdlLAoJICAgICAnZGF0YSc6IHsKCSAgICAgICAgICd1cmwnOiB1cmwKICAgICAgICAgICAgIH0sCiAgICAgICAgfQogICAgICAgIGV2ZW50LndhaXRVbnRpbCggc2VsZi5yZWdpc3RyYXRpb24uc2hvd05vdGlmaWNhdGlvbih0aXRsZSwgb3B0aW9ucykgKTsKICAgIH0KfSk7CgpzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBldmVudC5ub3RpZmljYXRpb24uY2xvc2UoKTsKICAgIHZhciBkYXRhID0gZXZlbnQubm90aWZpY2F0aW9uLmRhdGE7CiAgICBpZiggISBkYXRhIHx8ICEgZGF0YS51cmwgKSByZXR1cm47CgogICAgZXZlbnQud2FpdFVudGlsKAogICAgICAgIGNsaWVudHMubWF0Y2hBbGwoeyB0eXBlOiAnd2luZG93JyB9KS50aGVuKCB3aW5kb3dDbGllbnRzID0+IHsKCSAgICBmb3IoIHZhciBpID0gMDsgaSA8IHdpbmRvd0NsaWVudHMubGVuZ3RoOyBpKysgKSB7CgkgICAgICAgIHZhciBjbGllbnQgPSB3aW5kb3dDbGllbnRzW2ldOwoJCWlmKCBjbGllbnQudXJsID09IGRhdGEudXJsICYmICdmb2N1cycgaW4gY2xpZW50ICkgcmV0dXJuIGNsaWVudC5mb2N1cygpOwogICAgICAgICAgICB9CgkgICAgaWYoIGNsaWVudHMub3BlbldpbmRvdyApIGNsaWVudHMub3BlbldpbmRvdyggZGF0YS51cmwgKTsKICAgICAgICB9KQogICAgKQp9KTsK]]></data>
	</file>
	<file>
	  <filename>/templates/subscribe.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ic3Vic2NyaWJlLXpvbmUiPgogICA8YSBpZD0ic3Vic2NyaWJlLWJ0biI+PC9hbgo8L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGZ1bmN0aW9uKCl7CiAgIGlmKCB0eXBlb2YgY2dXZWJQdXNoICE9ICd1bmRlZmluZWQnICkgewogICAgICAgIC8vIGluaXRpYWxpemUgdGhlIGpxdWVyeSBwbHVnaW4uCiAgICAgICAgJCgnI3N1YnNjcmliZS1idG4nKS5jZ1dlYlB1c2goewoJICAgY2hhbmdlQnV0dG9uU3RhdGU6IGZ1bmN0aW9uKCBzdGF0ZSApIHsKCSAgICAgIHN3aXRjaCggc3RhdGUgKSB7CgkgICAgICAgICAgY2FzZSAnZW5hYmxlZCc6CgkJICAgICAkKHRoaXMpLnRleHQoICd7JG1vZC0+TGFuZygncHJvbXB0X3Vuc3Vic2NyaWJlJyl9JyApOwoJCSAgICAgYnJlYWs7CgkJICBjYXNlICdkaXNhYmxlZCc6CgkJICAgICAkKHRoaXMpLnRleHQoICd7JG1vZC0+TGFuZygncHJvbXB0X3N1YnNjcmliZScpfScgKTsKCQkgICAgIGJyZWFrOwoJCSAgY2FzZSAnaW5jb21wYXRpYmxlJzoKCQkgICAgICQodGhpcykudGV4dCggJ3skbW9kLT5MYW5nKCdwcm9tcHRfaW5jb21wYXRpYmxlJyl9JyApOwoJCSAgICAgYnJlYWs7CgkJICBjYXNlICdjb21wdXRpbmcnOgoJCSAgY2FzZSAnbG9hZGluZyc6CgkJICAgICAkKHRoaXMpLnRleHQoICd7JG1vZC0+TGFuZygncHJvbXB0X2xvYWRpbmcnKX0nICk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgIH0KICAgICAgICB9KTsKCS8vIHZhciBlbCA9ICQoJyNzdWJzY3JpYmUtYnRuJylbMF07CiAgICAgICAgLy8gY2dXZWJQdXNoLnNldF9lbGVtZW50KCBlbCApOwogICB9Cn0pCjwvc2NyaXB0Pg==]]></data>
	</file>
	<file>
	  <filename>/vapid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIE1pbmlzaGxpbmtcV2ViUHVzaDsKcmVxdWlyZV9vbmNlKCAndmVuZG9yL2F1dG9sb2FkLnBocCcgKTsKCiRrZXlzID0gVkFQSUQ6OmNyZWF0ZVZhcGlkS2V5cygpIDsKZmlsZV9wdXRfY29udGVudHMoICdfa2V5cy9wdWJsaWNfa2V5LnR4dCcsIHN1YnN0ciggJGtleXNbJ3B1YmxpY0tleSddLCAwLCAtMSApKTsKZmlsZV9wdXRfY29udGVudHMoICdfa2V5cy9wcml2YXRlX2tleS50eHQnLCBzdWJzdHIoICRrZXlzWydwcml2YXRlS2V5J10sIDAsIC0xICkpOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/autoload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvY29tcG9zZXIvYXV0b2xvYWRfcmVhbC5waHAnOwoKcmV0dXJuIENvbXBvc2VyQXV0b2xvYWRlckluaXQyMTk0N2QwYjE2NWViODAxMzg0MWU0MmE0NDhhYTJjNzo6Z2V0TG9hZGVyKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogImJlYmVybGVpL2Fzc2VydCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW4gYXNzZXJ0aW9uIGxpYnJhcnkgZm9yIGlucHV0IHZhbGlkYXRpb24gaW4gYnVzaW5lc3MgbW9kZWxzLiIsCiAgInZlcnNpb24iOiAidjIuOS42IiwKICAiYXV0aG9ycyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiQmVuamFtaW4gRWJlcmxlaSIsCiAgICAgICJlbWFpbCI6ICJrb250YWt0QGJlYmVybGVpLmRlIiwKICAgICAgInJvbGUiOiAiTGVhZCBEZXZlbG9wZXIiCiAgICB9LAogICAgewogICAgICAibmFtZSI6ICJSaWNoYXJkIFF1YWRsaW5nIiwKICAgICAgImVtYWlsIjogInJxdWFkbGluZ0BnbWFpbC5jb20iLAogICAgICAicm9sZSI6ICJDb2xsYWJvcmF0b3IiCiAgICB9CiAgXSwKICAibGljZW5zZSI6ICJCU0QtMi1DbGF1c2UiLAogICJrZXl3b3JkcyI6IFsKICAgICJhc3NlcnQiLAogICAgImFzc2VydGlvbiIsCiAgICAidmFsaWRhdGlvbiIKICBdLAogICJjb25maWciOiB7CiAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICB9LAogICJyZXF1aXJlIjogewogICAgInBocCI6ICI+PTUuMyIsCiAgICAiZXh0LW1ic3RyaW5nIjogIioiCiAgfSwKICAicmVxdWlyZS1kZXYiOiB7CiAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xLjEiLAogICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC44LjM1fF41LjciCiAgfSwKICAiYXV0b2xvYWQiOiB7CiAgICAicHNyLTQiOiB7CiAgICAgICJBc3NlcnRcXCI6ICJsaWIvQXNzZXJ0IgogICAgfSwKICAgICJmaWxlcyI6IFsKICAgICAgImxpYi9Bc3NlcnQvZnVuY3Rpb25zLnBocCIKICAgIF0KICB9LAogICJhdXRvbG9hZC1kZXYiOiB7CiAgICAicHNyLTQiOiB7CiAgICAgICJBc3NlcnRcXFRlc3RzXFwiOiAidGVzdHMvQXNzZXJ0L1Rlc3RzIgogICAgfSwKICAgICJmaWxlcyI6IFsKICAgICAgInRlc3RzL0Fzc2VydC9UZXN0cy9GaXh0dXJlcy9mdW5jdGlvbnMucGhwIgogICAgXQogIH0sCiAgInNjcmlwdHMiOiB7CiAgICAiYXNzZXJ0OmdlbmVyYXRlLWRvY3MiOiAicGhwIGJpbi9nZW5lcmF0ZV9tZXRob2RfZG9jcy5waHAiLAogICAgImFzc2VydDpjcy1saW50IjogInBocC1jcy1maXhlciBmaXggLS1kaWZmIC12dnYgLS1kcnktcnVuIiwKICAgICJhc3NlcnQ6Y3MtZml4IjogInBocC1jcy1maXhlciBmaXggLiAtdnZ2IHx8IHRydWUiCiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/Assert.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKLyoqCiAqIEFzc2VydGlvbkNoYWluIGZhY3RvcnkuCiAqLwphYnN0cmFjdCBjbGFzcyBBc3NlcnQKewogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRsYXp5QXNzZXJ0aW9uRXhjZXB0aW9uQ2xhc3MgPSAnQXNzZXJ0XExhenlBc3NlcnRpb25FeGNlcHRpb24nOwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkYXNzZXJ0aW9uQ2xhc3MgPSAnQXNzZXJ0XEFzc2VydGlvbic7CgogICAgLyoqCiAgICAgKiBTdGFydCB2YWxpZGF0aW9uIG9uIGEgdmFsdWUsIHJldHVybnMge0BsaW5rIEFzc2VydGlvbkNoYWlufS4KICAgICAqCiAgICAgKiBUaGUgaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBzdGFydHMgYW4gYXNzZXJ0aW9uIGNoYWluCiAgICAgKiB0aGF0IGlzIGhhcHBlbmluZyBvbiB0aGUgcGFzc2VkIHZhbHVlLgogICAgICoKICAgICAqIEBleGFtcGxlCiAgICAgKgogICAgICogIEFzc2VydDo6dGhhdCgkdmFsdWUpLT5ub3RFbXB0eSgpLT5pbnRlZ2VyKCk7CiAgICAgKiAgQXNzZXJ0Ojp0aGF0KCR2YWx1ZSktPm51bGxPcigpLT5zdHJpbmcoKS0+c3RhcnRzV2l0aCgiRm9vIik7CiAgICAgKgogICAgICogVGhlIGFzc2VydGlvbiBjaGFpbiBjYW4gYmUgc3RhdGVmdWwsIHRoYXQgbWVhbnMgYmUgY2FyZWZ1bCB3aGVuIHlvdSByZXVzZQogICAgICogaXQuIFlvdSBzaG91bGQgbmV2ZXIgcGFzcyBhcm91bmQgdGhlIGNoYWluLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0TWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZyAkZGVmYXVsdFByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxBc3NlcnRpb25DaGFpbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRoYXQoJHZhbHVlLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsLCAkZGVmYXVsdFByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgJGFzc2VydGlvbkNoYWluID0gbmV3IEFzc2VydGlvbkNoYWluKCR2YWx1ZSwgJGRlZmF1bHRNZXNzYWdlLCAkZGVmYXVsdFByb3BlcnR5UGF0aCk7CgogICAgICAgIHJldHVybiAkYXNzZXJ0aW9uQ2hhaW4KICAgICAgICAgICAgLT5zZXRBc3NlcnRpb25DbGFzc05hbWUoc3RhdGljOjokYXNzZXJ0aW9uQ2xhc3MpCiAgICAgICAgOwogICAgfQoKICAgIC8qKgogICAgICogU3RhcnQgdmFsaWRhdGlvbiBvbiBhIHNldCBvZiB2YWx1ZXMsIHJldHVybnMge0BsaW5rIEFzc2VydGlvbkNoYWlufS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR2YWx1ZXMKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRlZmF1bHRNZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0UHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBcQXNzZXJ0XEFzc2VydGlvbkNoYWluCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGhhdEFsbCgkdmFsdWVzLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsLCAkZGVmYXVsdFByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYzo6dGhhdCgkdmFsdWVzLCAkZGVmYXVsdE1lc3NhZ2UsICRkZWZhdWx0UHJvcGVydHlQYXRoKS0+YWxsKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdGFydCB2YWxpZGF0aW9uIGFuZCBhbGxvdyBOVUxMLCByZXR1cm5zIHtAbGluayBBc3NlcnRpb25DaGFpbn0uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRlZmF1bHRNZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0UHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBcQXNzZXJ0XEFzc2VydGlvbkNoYWluCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGhhdE51bGxPcigkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljOjp0aGF0KCR2YWx1ZSwgJGRlZmF1bHRNZXNzYWdlLCAkZGVmYXVsdFByb3BlcnR5UGF0aCktPm51bGxPcigpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbGF6eSBhc3NlcnRpb24gb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxMYXp5QXNzZXJ0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGF6eSgpCiAgICB7CiAgICAgICAgJGxhenlBc3NlcnRpb24gPSBuZXcgTGF6eUFzc2VydGlvbigpOwoKICAgICAgICByZXR1cm4gJGxhenlBc3NlcnRpb24KICAgICAgICAgICAgLT5zZXRBc3NlcnRDbGFzcyhcZ2V0X2NhbGxlZF9jbGFzcygpKQogICAgICAgICAgICAtPnNldEV4Y2VwdGlvbkNsYXNzKHN0YXRpYzo6JGxhenlBc3NlcnRpb25FeGNlcHRpb25DbGFzcykKICAgICAgICA7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/Assertion.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKdXNlIEJhZE1ldGhvZENhbGxFeGNlcHRpb247CgovKioKICogQXNzZXJ0IGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgQmVuamFtaW4gRWJlcmxlaSA8a29udGFrdEBiZWJlcmxlaS5kZT4KICoKICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxBbG51bShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYWxwaGFudW1lcmljIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEJhc2U2NChzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxCZXR3ZWVuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxvd2VyTGltaXQsIG1peGVkICR1cHBlckxpbWl0LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGEgbG93ZXIgbGltaXQsIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYW4gdXBwZXIgbGltaXQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsQmV0d2VlbkV4Y2x1c2l2ZShtaXhlZCAkdmFsdWUsIG1peGVkICRsb3dlckxpbWl0LCBtaXhlZCAkdXBwZXJMaW1pdCwgc3RyaW5nICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBhIGxvd2VyIGxpbWl0LCBhbmQgbGVzcyB0aGFuIGFuIHVwcGVyIGxpbWl0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEJldHdlZW5MZW5ndGgobWl4ZWQgJHZhbHVlLCBpbnQgJG1pbkxlbmd0aCwgaW50ICRtYXhMZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGxlbmd0aCBpcyBiZXR3ZWVuIG1pbixtYXggbGVuZ3RocyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxCb29sZWFuKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBwaHAgYm9vbGVhbiBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxDaG9pY2UobWl4ZWQgJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiBhcnJheSBvZiBjaG9pY2VzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbENob2ljZXNOb3RFbXB0eShhcnJheSAkdmFsdWVzLCBhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZXMgYXJyYXkgaGFzIGV2ZXJ5IGNob2ljZSBhcyBrZXkgYW5kIHRoYXQgdGhpcyBjaG9pY2UgaGFzIGNvbnRlbnQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsQ2xhc3NFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBleGlzdHMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsQ29udGFpbnMobWl4ZWQgJHN0cmluZywgc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgY2hhcnMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsQ291bnQoYXJyYXl8XENvdW50YWJsZSAkY291bnRhYmxlLCBpbnQgJGNvdW50LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjb3VudCBvZiBjb3VudGFibGUgaXMgZXF1YWwgdG8gY291bnQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsRGF0ZShzdHJpbmcgJHZhbHVlLCBzdHJpbmcgJGZvcm1hdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBkYXRlIGlzIHZhbGlkIGFuZCBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gZm9ybWF0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbERlZmluZWQobWl4ZWQgJGNvbnN0YW50LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxEaWdpdChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgVmFsaWRhdGVzIGlmIGFuIGludGVnZXIgb3IgaW50ZWdlcmlzaCBpcyBhIGRpZ2l0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbERpcmVjdG9yeShzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgZGlyZWN0b3J5IGV4aXN0cyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxFMTY0KHN0cmluZyAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIEUxNjQgUGhvbmUgTnVtYmVyIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEVtYWlsKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBlbWFpbCBhZGRyZXNzICh1c2luZyBpbnB1dF9maWx0ZXIvRklMVEVSX1ZBTElEQVRFX0VNQUlMKSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxFbmRzV2l0aChtaXhlZCAkc3RyaW5nLCBzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgZW5kcyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcnMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsRXEobWl4ZWQgJHZhbHVlLCBtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIGVxdWFsICh1c2luZyA9PSApIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEV4dGVuc2lvbkxvYWRlZChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgZXh0ZW5zaW9uIGlzIGxvYWRlZCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxFeHRlbnNpb25WZXJzaW9uKHN0cmluZyAkZXh0ZW5zaW9uLCBzdHJpbmcgJG9wZXJhdG9yLCBtaXhlZCAkdmVyc2lvbiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBleHRlbnNpb24gaXMgbG9hZGVkIGFuZCBhIHNwZWNpZmljIHZlcnNpb24gaXMgaW5zdGFsbGVkIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEZhbHNlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYm9vbGVhbiBGYWxzZSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxGaWxlKHN0cmluZyAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSBmaWxlIGV4aXN0cyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxGbG9hdChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgZmxvYXQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsR3JlYXRlck9yRXF1YWxUaGFuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBnaXZlbiBsaW1pdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxHcmVhdGVyVGhhbihtaXhlZCAkdmFsdWUsIG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gZ2l2ZW4gbGltaXQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSW1wbGVtZW50c0ludGVyZmFjZShtaXhlZCAkY2xhc3MsIHN0cmluZyAkaW50ZXJmYWNlTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgY2xhc3MgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEluQXJyYXkobWl4ZWQgJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiBhcnJheSBvZiBjaG9pY2VzLiBUaGlzIGlzIGFuIGFsaWFzIG9mIEFzc2VydGlvbjo6Y2hvaWNlKCkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSW50ZWdlcihtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgaW50ZWdlciBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJbnRlZ2VyaXNoKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBpbnRlZ2VyJ2lzaCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJbnRlcmZhY2VFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBpbnRlcmZhY2UgZXhpc3RzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbElwKHN0cmluZyAkdmFsdWUsIGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXB2NChzdHJpbmcgJHZhbHVlLCBpbnQgJGZsYWcgPSBudWxsLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjQgYWRkcmVzcyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJcHY2KHN0cmluZyAkdmFsdWUsIGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NiBhZGRyZXNzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbElzQXJyYXkobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbElzQXJyYXlBY2Nlc3NpYmxlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheSBvciBhbiBhcnJheS1hY2Nlc3NpYmxlIG9iamVjdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJc0NhbGxhYmxlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGNhbGxhYmxlIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbElzSW5zdGFuY2VPZihtaXhlZCAkdmFsdWUsIHN0cmluZyAkY2xhc3NOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluc3RhbmNlIG9mIGdpdmVuIGNsYXNzLW5hbWUgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXNKc29uU3RyaW5nKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQganNvbiBzdHJpbmcgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXNPYmplY3QobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgYW4gb2JqZWN0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbElzUmVzb3VyY2UobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcmVzb3VyY2UgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXNUcmF2ZXJzYWJsZShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYSB0cmF2ZXJzYWJsZSBvYmplY3QgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsS2V5RXhpc3RzKG1peGVkICR2YWx1ZSwgc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsS2V5SXNzZXQobWl4ZWQgJHZhbHVlLCBzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheS9hcnJheS1hY2Nlc3NpYmxlIG9iamVjdCB1c2luZyBpc3NldCgpIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEtleU5vdEV4aXN0cyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZG9lcyBub3QgZXhpc3QgaW4gYW4gYXJyYXkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTGVuZ3RoKG1peGVkICR2YWx1ZSwgaW50ICRsZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGhhcyBhIGdpdmVuIGxlbmd0aCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxMZXNzT3JFcXVhbFRoYW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgbGVzcyBvciBlcXVhbCB0aGFuIGdpdmVuIGxpbWl0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbExlc3NUaGFuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiBnaXZlbiBsaW1pdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxNYXgobWl4ZWQgJHZhbHVlLCBtaXhlZCAkbWF4VmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSBudW1iZXIgaXMgc21hbGxlciBhcyBhIGdpdmVuIGxpbWl0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE1heExlbmd0aChtaXhlZCAkdmFsdWUsIGludCAkbWF4TGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyB2YWx1ZSBpcyBub3QgbG9uZ2VyIHRoYW4gJG1heExlbmd0aCBjaGFycyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxNZXRob2RFeGlzdHMoc3RyaW5nICR2YWx1ZSwgbWl4ZWQgJG9iamVjdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIG5hbWVkIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3QgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTWluKG1peGVkICR2YWx1ZSwgbWl4ZWQgJG1pblZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgYXQgbGVhc3QgYXMgYmlnIGFzIGEgZ2l2ZW4gbGltaXQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTWluTGVuZ3RoKG1peGVkICR2YWx1ZSwgaW50ICRtaW5MZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgYSBzdHJpbmcgaXMgYXQgbGVhc3QgJG1pbkxlbmd0aCBjaGFycyBsb25nIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE5vQ29udGVudChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgZW1wdHkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm90QmxhbmsobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBibGFuayBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxOb3RFbXB0eShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGVtcHR5IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE5vdEVtcHR5S2V5KG1peGVkICR2YWx1ZSwgc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgYW5kIGl0cyB2YWx1ZSBpcyBub3QgZW1wdHkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm90RXEobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgZXF1YWwgKHVzaW5nID09ICkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm90SW5BcnJheShtaXhlZCAkdmFsdWUsIGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBpbiBhcnJheSBvZiBjaG9pY2VzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE5vdElzSW5zdGFuY2VPZihtaXhlZCAkdmFsdWUsIHN0cmluZyAkY2xhc3NOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE5vdE51bGwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBudWxsIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE5vdFNhbWUobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgdGhlIHNhbWUgKHVzaW5nID09PSApIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE51bGwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG51bGwgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTnVtZXJpYyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbnVtZXJpYyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxPYmplY3RPckNsYXNzKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0LCBvciBhIGNsYXNzIHRoYXQgZXhpc3RzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFBocFZlcnNpb24oc3RyaW5nICRvcGVyYXRvciwgbWl4ZWQgJHZlcnNpb24sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IG9uIFBIUCB2ZXJzaW9uIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFByb3BlcnRpZXNFeGlzdChtaXhlZCAkdmFsdWUsIGFycmF5ICRwcm9wZXJ0aWVzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3Qgb3IgY2xhc3MsIGFuZCB0aGF0IHRoZSBwcm9wZXJ0aWVzIGFsbCBleGlzdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxQcm9wZXJ0eUV4aXN0cyhtaXhlZCAkdmFsdWUsIHN0cmluZyAkcHJvcGVydHksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnR5IGV4aXN0cyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxSYW5nZShtaXhlZCAkdmFsdWUsIG1peGVkICRtaW5WYWx1ZSwgbWl4ZWQgJG1heFZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIHJhbmdlIG9mIG51bWJlcnMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsUmVhZGFibGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHJlYWRhYmxlIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFJlZ2V4KG1peGVkICR2YWx1ZSwgc3RyaW5nICRwYXR0ZXJuLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIG1hdGNoZXMgYSByZWdleCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxTYW1lKG1peGVkICR2YWx1ZSwgbWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSB0aGUgc2FtZSAodXNpbmcgPT09KSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxTYXRpc2Z5KG1peGVkICR2YWx1ZSwgY2FsbGFibGUgJGNhbGxiYWNrLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyB2YWxpZCBhY2NvcmRpbmcgdG8gYSBjYWxsYmFjayBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxTY2FsYXIobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgUEhQIHNjYWxhciBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxTdGFydHNXaXRoKG1peGVkICRzdHJpbmcsIHN0cmluZyAkbmVlZGxlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBzdGFydHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFN0cmluZyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBzdHJpbmcgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsU3ViY2xhc3NPZihtaXhlZCAkdmFsdWUsIHN0cmluZyAkY2xhc3NOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIHN1YmNsYXNzIG9mIGdpdmVuIGNsYXNzLW5hbWUgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsVHJ1ZShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGJvb2xlYW4gVHJ1ZSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxVcmwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIFVSTCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxVdWlkKHN0cmluZyAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIFVVSUQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsVmVyc2lvbihzdHJpbmcgJHZlcnNpb24xLCBzdHJpbmcgJG9wZXJhdG9yLCBzdHJpbmcgJHZlcnNpb24yLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCBjb21wYXJpc29uIG9mIHR3byB2ZXJzaW9ucyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxXcml0ZWFibGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHdyaXRlYWJsZSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JBbG51bShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYWxwaGFudW1lcmljIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQmFzZTY0KHN0cmluZyAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSBjb25zdGFudCBpcyBkZWZpbmVkIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQmV0d2VlbihtaXhlZCAkdmFsdWUsIG1peGVkICRsb3dlckxpbWl0LCBtaXhlZCAkdXBwZXJMaW1pdCwgc3RyaW5nICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBhIGxvd2VyIGxpbWl0LCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGFuIHVwcGVyIGxpbWl0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQmV0d2VlbkV4Y2x1c2l2ZShtaXhlZCAkdmFsdWUsIG1peGVkICRsb3dlckxpbWl0LCBtaXhlZCAkdXBwZXJMaW1pdCwgc3RyaW5nICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBhIGxvd2VyIGxpbWl0LCBhbmQgbGVzcyB0aGFuIGFuIHVwcGVyIGxpbWl0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQmV0d2Vlbkxlbmd0aChtaXhlZCAkdmFsdWUsIGludCAkbWluTGVuZ3RoLCBpbnQgJG1heExlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgbGVuZ3RoIGlzIGJldHdlZW4gbWluLG1heCBsZW5ndGhzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQm9vbGVhbihtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgcGhwIGJvb2xlYW4gb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JDaG9pY2UobWl4ZWQgJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiBhcnJheSBvZiBjaG9pY2VzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQ2hvaWNlc05vdEVtcHR5KGFycmF5ICR2YWx1ZXMsIGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlcyBhcnJheSBoYXMgZXZlcnkgY2hvaWNlIGFzIGtleSBhbmQgdGhhdCB0aGlzIGNob2ljZSBoYXMgY29udGVudCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckNsYXNzRXhpc3RzKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgY2xhc3MgZXhpc3RzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQ29udGFpbnMobWl4ZWQgJHN0cmluZywgc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgY2hhcnMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JDb3VudChhcnJheXxcQ291bnRhYmxlICRjb3VudGFibGUsIGludCAkY291bnQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNvdW50IG9mIGNvdW50YWJsZSBpcyBlcXVhbCB0byBjb3VudCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckRhdGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nICRmb3JtYXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgZGF0ZSBpcyB2YWxpZCBhbmQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGZvcm1hdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckRlZmluZWQobWl4ZWQgJGNvbnN0YW50LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckRpZ2l0KG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBWYWxpZGF0ZXMgaWYgYW4gaW50ZWdlciBvciBpbnRlZ2VyaXNoIGlzIGEgZGlnaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JEaXJlY3Rvcnkoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGRpcmVjdG9yeSBleGlzdHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JFMTY0KHN0cmluZyAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIEUxNjQgUGhvbmUgTnVtYmVyIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRW1haWwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGVtYWlsIGFkZHJlc3MgKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfRU1BSUwpIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRW5kc1dpdGgobWl4ZWQgJHN0cmluZywgc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGVuZHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRXEobWl4ZWQgJHZhbHVlLCBtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIGVxdWFsICh1c2luZyA9PSApIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRXh0ZW5zaW9uTG9hZGVkKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBleHRlbnNpb24gaXMgbG9hZGVkIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRXh0ZW5zaW9uVmVyc2lvbihzdHJpbmcgJGV4dGVuc2lvbiwgc3RyaW5nICRvcGVyYXRvciwgbWl4ZWQgJHZlcnNpb24sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgZXh0ZW5zaW9uIGlzIGxvYWRlZCBhbmQgYSBzcGVjaWZpYyB2ZXJzaW9uIGlzIGluc3RhbGxlZCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckZhbHNlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYm9vbGVhbiBGYWxzZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckZpbGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGZpbGUgZXhpc3RzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRmxvYXQobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGZsb2F0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yR3JlYXRlck9yRXF1YWxUaGFuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBnaXZlbiBsaW1pdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckdyZWF0ZXJUaGFuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBnaXZlbiBsaW1pdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckltcGxlbWVudHNJbnRlcmZhY2UobWl4ZWQgJGNsYXNzLCBzdHJpbmcgJGludGVyZmFjZU5hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNsYXNzIGltcGxlbWVudHMgdGhlIGludGVyZmFjZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckluQXJyYXkobWl4ZWQgJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiBhcnJheSBvZiBjaG9pY2VzLiBUaGlzIGlzIGFuIGFsaWFzIG9mIEFzc2VydGlvbjo6Y2hvaWNlKCkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJbnRlZ2VyKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBpbnRlZ2VyIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySW50ZWdlcmlzaChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgaW50ZWdlcidpc2ggb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJbnRlcmZhY2VFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBpbnRlcmZhY2UgZXhpc3RzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXAoc3RyaW5nICR2YWx1ZSwgaW50ICRmbGFnID0gbnVsbCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcklwdjQoc3RyaW5nICR2YWx1ZSwgaW50ICRmbGFnID0gbnVsbCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY0IGFkZHJlc3Mgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJcHY2KHN0cmluZyAkdmFsdWUsIGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NiBhZGRyZXNzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXNBcnJheShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJc0FycmF5QWNjZXNzaWJsZShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYW4gYXJyYXktYWNjZXNzaWJsZSBvYmplY3Qgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJc0NhbGxhYmxlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGNhbGxhYmxlIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXNJbnN0YW5jZU9mKG1peGVkICR2YWx1ZSwgc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW5zdGFuY2Ugb2YgZ2l2ZW4gY2xhc3MtbmFtZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcklzSnNvblN0cmluZyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIGpzb24gc3RyaW5nIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXNPYmplY3QobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXNSZXNvdXJjZShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSByZXNvdXJjZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcklzVHJhdmVyc2FibGUobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5IG9yIGEgdHJhdmVyc2FibGUgb2JqZWN0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yS2V5RXhpc3RzKG1peGVkICR2YWx1ZSwgc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JLZXlJc3NldChtaXhlZCAkdmFsdWUsIHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5L2FycmF5LWFjY2Vzc2libGUgb2JqZWN0IHVzaW5nIGlzc2V0KCkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JLZXlOb3RFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGRvZXMgbm90IGV4aXN0IGluIGFuIGFycmF5IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTGVuZ3RoKG1peGVkICR2YWx1ZSwgaW50ICRsZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGhhcyBhIGdpdmVuIGxlbmd0aCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckxlc3NPckVxdWFsVGhhbihtaXhlZCAkdmFsdWUsIG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIG9yIGVxdWFsIHRoYW4gZ2l2ZW4gbGltaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JMZXNzVGhhbihtaXhlZCAkdmFsdWUsIG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIHRoYW4gZ2l2ZW4gbGltaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JNYXgobWl4ZWQgJHZhbHVlLCBtaXhlZCAkbWF4VmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSBudW1iZXIgaXMgc21hbGxlciBhcyBhIGdpdmVuIGxpbWl0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTWF4TGVuZ3RoKG1peGVkICR2YWx1ZSwgaW50ICRtYXhMZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIHZhbHVlIGlzIG5vdCBsb25nZXIgdGhhbiAkbWF4TGVuZ3RoIGNoYXJzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTWV0aG9kRXhpc3RzKHN0cmluZyAkdmFsdWUsIG1peGVkICRvYmplY3QsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyB0aGF0IHRoZSBuYW1lZCBtZXRob2QgaXMgZGVmaW5lZCBpbiB0aGUgcHJvdmlkZWQgb2JqZWN0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTWluKG1peGVkICR2YWx1ZSwgbWl4ZWQgJG1pblZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgYXQgbGVhc3QgYXMgYmlnIGFzIGEgZ2l2ZW4gbGltaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JNaW5MZW5ndGgobWl4ZWQgJHZhbHVlLCBpbnQgJG1pbkxlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBhIHN0cmluZyBpcyBhdCBsZWFzdCAkbWluTGVuZ3RoIGNoYXJzIGxvbmcgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOb0NvbnRlbnQobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGVtcHR5IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTm90QmxhbmsobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBibGFuayBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck5vdEVtcHR5KG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgZW1wdHkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOb3RFbXB0eUtleShtaXhlZCAkdmFsdWUsIHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5L2FycmF5LWFjY2Vzc2libGUgb2JqZWN0IGFuZCBpdHMgdmFsdWUgaXMgbm90IGVtcHR5IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTm90RXEobWl4ZWQgJHZhbHVlMSwgbWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgZXF1YWwgKHVzaW5nID09ICkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOb3RJbkFycmF5KG1peGVkICR2YWx1ZSwgYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluIGFycmF5IG9mIGNob2ljZXMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOb3RJc0luc3RhbmNlT2YobWl4ZWQgJHZhbHVlLCBzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgaW5zdGFuY2Ugb2YgZ2l2ZW4gY2xhc3MtbmFtZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck5vdE51bGwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBudWxsIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTm90U2FtZShtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCB0aGUgc2FtZSAodXNpbmcgPT09ICkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOdWxsKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudWxsIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTnVtZXJpYyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbnVtZXJpYyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck9iamVjdE9yQ2xhc3MobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QsIG9yIGEgY2xhc3MgdGhhdCBleGlzdHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JQaHBWZXJzaW9uKHN0cmluZyAkb3BlcmF0b3IsIG1peGVkICR2ZXJzaW9uLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCBvbiBQSFAgdmVyc2lvbiBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclByb3BlcnRpZXNFeGlzdChtaXhlZCAkdmFsdWUsIGFycmF5ICRwcm9wZXJ0aWVzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3Qgb3IgY2xhc3MsIGFuZCB0aGF0IHRoZSBwcm9wZXJ0aWVzIGFsbCBleGlzdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclByb3BlcnR5RXhpc3RzKG1peGVkICR2YWx1ZSwgc3RyaW5nICRwcm9wZXJ0eSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIGNsYXNzLCBhbmQgdGhhdCB0aGUgcHJvcGVydHkgZXhpc3RzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yUmFuZ2UobWl4ZWQgJHZhbHVlLCBtaXhlZCAkbWluVmFsdWUsIG1peGVkICRtYXhWYWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiByYW5nZSBvZiBudW1iZXJzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yUmVhZGFibGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHJlYWRhYmxlIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yUmVnZXgobWl4ZWQgJHZhbHVlLCBzdHJpbmcgJHBhdHRlcm4sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgbWF0Y2hlcyBhIHJlZ2V4IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yU2FtZShtaXhlZCAkdmFsdWUsIG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgdGhlIHNhbWUgKHVzaW5nID09PSkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JTYXRpc2Z5KG1peGVkICR2YWx1ZSwgY2FsbGFibGUgJGNhbGxiYWNrLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyB2YWxpZCBhY2NvcmRpbmcgdG8gYSBjYWxsYmFjayBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclNjYWxhcihtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBQSFAgc2NhbGFyIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yU3RhcnRzV2l0aChtaXhlZCAkc3RyaW5nLCBzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgc3RhcnRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclN0cmluZyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBzdHJpbmcgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JTdWJjbGFzc09mKG1peGVkICR2YWx1ZSwgc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgc3ViY2xhc3Mgb2YgZ2l2ZW4gY2xhc3MtbmFtZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclRydWUobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIFRydWUgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JVcmwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIFVSTCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclV1aWQoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQgVVVJRCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclZlcnNpb24oc3RyaW5nICR2ZXJzaW9uMSwgc3RyaW5nICRvcGVyYXRvciwgc3RyaW5nICR2ZXJzaW9uMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgY29tcGFyaXNvbiBvZiB0d28gdmVyc2lvbnMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JXcml0ZWFibGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHdyaXRlYWJsZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKi8KY2xhc3MgQXNzZXJ0aW9uCnsKICAgIGNvbnN0IElOVkFMSURfRkxPQVQgPSA5OwogICAgY29uc3QgSU5WQUxJRF9JTlRFR0VSID0gMTA7CiAgICBjb25zdCBJTlZBTElEX0RJR0lUID0gMTE7CiAgICBjb25zdCBJTlZBTElEX0lOVEVHRVJJU0ggPSAxMjsKICAgIGNvbnN0IElOVkFMSURfQk9PTEVBTiA9IDEzOwogICAgY29uc3QgVkFMVUVfRU1QVFkgPSAxNDsKICAgIGNvbnN0IFZBTFVFX05VTEwgPSAxNTsKICAgIGNvbnN0IFZBTFVFX05PVF9OVUxMID0gMjU7CiAgICBjb25zdCBJTlZBTElEX1NUUklORyA9IDE2OwogICAgY29uc3QgSU5WQUxJRF9SRUdFWCA9IDE3OwogICAgY29uc3QgSU5WQUxJRF9NSU5fTEVOR1RIID0gMTg7CiAgICBjb25zdCBJTlZBTElEX01BWF9MRU5HVEggPSAxOTsKICAgIGNvbnN0IElOVkFMSURfU1RSSU5HX1NUQVJUID0gMjA7CiAgICBjb25zdCBJTlZBTElEX1NUUklOR19DT05UQUlOUyA9IDIxOwogICAgY29uc3QgSU5WQUxJRF9DSE9JQ0UgPSAyMjsKICAgIGNvbnN0IElOVkFMSURfTlVNRVJJQyA9IDIzOwogICAgY29uc3QgSU5WQUxJRF9BUlJBWSA9IDI0OwogICAgY29uc3QgSU5WQUxJRF9LRVlfRVhJU1RTID0gMjY7CiAgICBjb25zdCBJTlZBTElEX05PVF9CTEFOSyA9IDI3OwogICAgY29uc3QgSU5WQUxJRF9JTlNUQU5DRV9PRiA9IDI4OwogICAgY29uc3QgSU5WQUxJRF9TVUJDTEFTU19PRiA9IDI5OwogICAgY29uc3QgSU5WQUxJRF9SQU5HRSA9IDMwOwogICAgY29uc3QgSU5WQUxJRF9BTE5VTSA9IDMxOwogICAgY29uc3QgSU5WQUxJRF9UUlVFID0gMzI7CiAgICBjb25zdCBJTlZBTElEX0VRID0gMzM7CiAgICBjb25zdCBJTlZBTElEX1NBTUUgPSAzNDsKICAgIGNvbnN0IElOVkFMSURfTUlOID0gMzU7CiAgICBjb25zdCBJTlZBTElEX01BWCA9IDM2OwogICAgY29uc3QgSU5WQUxJRF9MRU5HVEggPSAzNzsKICAgIGNvbnN0IElOVkFMSURfRkFMU0UgPSAzODsKICAgIGNvbnN0IElOVkFMSURfU1RSSU5HX0VORCA9IDM5OwogICAgY29uc3QgSU5WQUxJRF9VVUlEID0gNDA7CiAgICBjb25zdCBJTlZBTElEX0NPVU5UID0gNDE7CiAgICBjb25zdCBJTlZBTElEX05PVF9FUSA9IDQyOwogICAgY29uc3QgSU5WQUxJRF9OT1RfU0FNRSA9IDQzOwogICAgY29uc3QgSU5WQUxJRF9UUkFWRVJTQUJMRSA9IDQ0OwogICAgY29uc3QgSU5WQUxJRF9BUlJBWV9BQ0NFU1NJQkxFID0gNDU7CiAgICBjb25zdCBJTlZBTElEX0tFWV9JU1NFVCA9IDQ2OwogICAgY29uc3QgSU5WQUxJRF9WQUxVRV9JTl9BUlJBWSA9IDQ3OwogICAgY29uc3QgSU5WQUxJRF9FMTY0ID0gNDg7CiAgICBjb25zdCBJTlZBTElEX0JBU0U2NCA9IDQ5OwogICAgY29uc3QgSU5WQUxJRF9ESVJFQ1RPUlkgPSAxMDE7CiAgICBjb25zdCBJTlZBTElEX0ZJTEUgPSAxMDI7CiAgICBjb25zdCBJTlZBTElEX1JFQURBQkxFID0gMTAzOwogICAgY29uc3QgSU5WQUxJRF9XUklURUFCTEUgPSAxMDQ7CiAgICBjb25zdCBJTlZBTElEX0NMQVNTID0gMTA1OwogICAgY29uc3QgSU5WQUxJRF9JTlRFUkZBQ0UgPSAxMDY7CiAgICBjb25zdCBJTlZBTElEX0VNQUlMID0gMjAxOwogICAgY29uc3QgSU5URVJGQUNFX05PVF9JTVBMRU1FTlRFRCA9IDIwMjsKICAgIGNvbnN0IElOVkFMSURfVVJMID0gMjAzOwogICAgY29uc3QgSU5WQUxJRF9OT1RfSU5TVEFOQ0VfT0YgPSAyMDQ7CiAgICBjb25zdCBWQUxVRV9OT1RfRU1QVFkgPSAyMDU7CiAgICBjb25zdCBJTlZBTElEX0pTT05fU1RSSU5HID0gMjA2OwogICAgY29uc3QgSU5WQUxJRF9PQkpFQ1QgPSAyMDc7CiAgICBjb25zdCBJTlZBTElEX01FVEhPRCA9IDIwODsKICAgIGNvbnN0IElOVkFMSURfU0NBTEFSID0gMjA5OwogICAgY29uc3QgSU5WQUxJRF9MRVNTID0gMjEwOwogICAgY29uc3QgSU5WQUxJRF9MRVNTX09SX0VRVUFMID0gMjExOwogICAgY29uc3QgSU5WQUxJRF9HUkVBVEVSID0gMjEyOwogICAgY29uc3QgSU5WQUxJRF9HUkVBVEVSX09SX0VRVUFMID0gMjEzOwogICAgY29uc3QgSU5WQUxJRF9EQVRFID0gMjE0OwogICAgY29uc3QgSU5WQUxJRF9DQUxMQUJMRSA9IDIxNTsKICAgIGNvbnN0IElOVkFMSURfS0VZX05PVF9FWElTVFMgPSAyMTY7CiAgICBjb25zdCBJTlZBTElEX1NBVElTRlkgPSAyMTc7CiAgICBjb25zdCBJTlZBTElEX0lQID0gMjE4OwogICAgY29uc3QgSU5WQUxJRF9CRVRXRUVOID0gMjE5OwogICAgY29uc3QgSU5WQUxJRF9CRVRXRUVOX0VYQ0xVU0lWRSA9IDIyMDsKICAgIGNvbnN0IElOVkFMSURfRVhURU5TSU9OID0gMjIyOwogICAgY29uc3QgSU5WQUxJRF9DT05TVEFOVCA9IDIyMTsKICAgIGNvbnN0IElOVkFMSURfVkVSU0lPTiA9IDIyMzsKICAgIGNvbnN0IElOVkFMSURfUFJPUEVSVFkgPSAyMjQ7CiAgICBjb25zdCBJTlZBTElEX1JFU09VUkNFID0gMjI1OwoKICAgIC8qKgogICAgICogRXhjZXB0aW9uIHRvIHRocm93IHdoZW4gYW4gYXNzZXJ0aW9uIGZhaWxlZC4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljICRleGNlcHRpb25DbGFzcyA9ICdBc3NlcnRcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uJzsKCiAgICAvKioKICAgICAqIEhlbHBlciBtZXRob2QgdGhhdCBoYW5kbGVzIGJ1aWxkaW5nIHRoZSBhc3NlcnRpb24gZmFpbHVyZSBleGNlcHRpb25zLgogICAgICogVGhleSBhcmUgcmV0dXJuZWQgZnJvbSB0aGlzIG1ldGhvZCBzbyB0aGF0IHRoZSBzdGFjayB0cmFjZSBzdGlsbCBzaG93cwogICAgICogdGhlIGFzc2VydGlvbnMgbWV0aG9kLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICRjb2RlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgJGNvbnN0cmFpbnRzCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCAkY29kZSwgJHByb3BlcnR5UGF0aCA9IG51bGwsIGFycmF5ICRjb25zdHJhaW50cyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJGV4Y2VwdGlvbkNsYXNzID0gc3RhdGljOjokZXhjZXB0aW9uQ2xhc3M7CgogICAgICAgIHJldHVybiBuZXcgJGV4Y2VwdGlvbkNsYXNzKCRtZXNzYWdlLCAkY29kZSwgJHByb3BlcnR5UGF0aCwgJHZhbHVlLCAkY29uc3RyYWludHMpOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgZXF1YWwgKHVzaW5nID09ICkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZTIKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXEoJHZhbHVlLCAkdmFsdWUyLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgIT0gJHZhbHVlMikgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgZG9lcyBub3QgZXF1YWwgZXhwZWN0ZWQgdmFsdWUgIiVzIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUyKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0VRLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnZXhwZWN0ZWQnID0+ICR2YWx1ZTIpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgdGhlIHNhbWUgKHVzaW5nID09PSkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZTIKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2FtZSgkdmFsdWUsICR2YWx1ZTIsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gJHZhbHVlMikgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IHRoZSBzYW1lIGFzIGV4cGVjdGVkIHZhbHVlICIlcyIuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlMikKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9TQU1FLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnZXhwZWN0ZWQnID0+ICR2YWx1ZTIpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IGVxdWFsICh1c2luZyA9PSApLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUxCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlMgogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3RFcSgkdmFsdWUxLCAkdmFsdWUyLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUxID09ICR2YWx1ZTIpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIGVxdWFsIHRvIGV4cGVjdGVkIHZhbHVlICIlcyIuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUxKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZTIpCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZTEsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTk9UX0VRLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnZXhwZWN0ZWQnID0+ICR2YWx1ZTIpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IHRoZSBzYW1lICh1c2luZyA9PT0gKS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlMQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZTIKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90U2FtZSgkdmFsdWUxLCAkdmFsdWUyLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUxID09PSAkdmFsdWUyKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyB0aGUgc2FtZSBhcyBleHBlY3RlZCB2YWx1ZSAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlMSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUyKQogICAgICAgICAgICApOwogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUxLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX05PVF9TQU1FLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnZXhwZWN0ZWQnID0+ICR2YWx1ZTIpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluIGFycmF5IG9mIGNob2ljZXMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICRjaG9pY2VzCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdEluQXJyYXkoJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAodHJ1ZSA9PT0gXGluX2FycmF5KCR2YWx1ZSwgJGNob2ljZXMpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBpbiBnaXZlbiAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRjaG9pY2VzKQogICAgICAgICAgICApOwogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfVkFMVUVfSU5fQVJSQVksICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdjaG9pY2VzJyA9PiAkY2hvaWNlcykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBpbnRlZ2VyLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW50ZWdlcigkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfaW50KCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhbiBpbnRlZ2VyLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0lOVEVHRVIsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBmbG9hdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZsb2F0KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19mbG9hdCgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYSBmbG9hdC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9GTE9BVCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFZhbGlkYXRlcyBpZiBhbiBpbnRlZ2VyIG9yIGludGVnZXJpc2ggaXMgYSBkaWdpdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRpZ2l0KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxjdHlwZV9kaWdpdCgoc3RyaW5nKSAkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYSBkaWdpdC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9ESUdJVCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGludGVnZXInaXNoLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW50ZWdlcmlzaCgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKAogICAgICAgICAgICBcaXNfcmVzb3VyY2UoJHZhbHVlKSB8fAogICAgICAgICAgICBcaXNfb2JqZWN0KCR2YWx1ZSkgfHwKICAgICAgICAgICAgXGlzX2Jvb2woJHZhbHVlKSB8fAogICAgICAgICAgICBcaXNfbnVsbCgkdmFsdWUpIHx8CiAgICAgICAgICAgIFxpc19hcnJheSgkdmFsdWUpIHx8CiAgICAgICAgICAgIChcaXNfc3RyaW5nKCR2YWx1ZSkgJiYgJycgPT0gJHZhbHVlKSB8fAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICBcc3RydmFsKFxpbnR2YWwoJHZhbHVlKSkgIT09IFxzdHJ2YWwoJHZhbHVlKSAmJgogICAgICAgICAgICAgICAgXHN0cnZhbChcaW50dmFsKCR2YWx1ZSkpICE9PSBcc3RydmFsKFxsdHJpbSgkdmFsdWUsICcwJykpICYmCiAgICAgICAgICAgICAgICAnJyAhPT0gXHN0cnZhbChcaW50dmFsKCR2YWx1ZSkpICYmCiAgICAgICAgICAgICAgICAnJyAhPT0gXHN0cnZhbChcbHRyaW0oJHZhbHVlLCAnMCcpKQogICAgICAgICAgICApCiAgICAgICAgKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYW4gaW50ZWdlciBvciBhIG51bWJlciBjYXN0YWJsZSB0byBpbnRlZ2VyLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0lOVEVHRVJJU0gsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBwaHAgYm9vbGVhbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJvb2xlYW4oJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGlzX2Jvb2woJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGEgYm9vbGVhbi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9CT09MRUFOLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBQSFAgc2NhbGFyLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2NhbGFyKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19zY2FsYXIoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGEgc2NhbGFyLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1NDQUxBUiwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBlbXB0eS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdEVtcHR5KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoZW1wdHkoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgZW1wdHksIGJ1dCBub24gZW1wdHkgdmFsdWUgd2FzIGV4cGVjdGVkLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpWQUxVRV9FTVBUWSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGVtcHR5LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm9Db250ZW50KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBlbXB0eSwgYnV0IGVtcHR5IHZhbHVlIHdhcyBleHBlY3RlZC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6VkFMVUVfTk9UX0VNUFRZLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbnVsbC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG51bGwoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsICE9PSAkdmFsdWUpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBudWxsLCBidXQgbnVsbCB2YWx1ZSB3YXMgZXhwZWN0ZWQuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OlZBTFVFX05PVF9OVUxMLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IG51bGwuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3ROdWxsKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHZhbHVlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBudWxsLCBidXQgbm9uIG51bGwgdmFsdWUgd2FzIGV4cGVjdGVkLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpWQUxVRV9OVUxMLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBleHBlY3RlZCB0byBiZSBzdHJpbmcsIHR5cGUgJXMgZ2l2ZW4uJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgXGdldHR5cGUoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1NUUklORywgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIG1hdGNoZXMgYSByZWdleC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHBhdHRlcm4KICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVnZXgoJHZhbHVlLCAkcGF0dGVybiwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OnN0cmluZygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCFccHJlZ19tYXRjaCgkcGF0dGVybiwgJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgZG9lcyBub3QgbWF0Y2ggZXhwcmVzc2lvbi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9SRUdFWCwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ3BhdHRlcm4nID0+ICRwYXR0ZXJuKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHN0cmluZyBoYXMgYSBnaXZlbiBsZW5ndGguCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICRsZW5ndGgKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGVuZ3RoKCR2YWx1ZSwgJGxlbmd0aCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCwgJGVuY29kaW5nID0gJ3V0ZjgnKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoXG1iX3N0cmxlbigkdmFsdWUsICRlbmNvZGluZykgIT09ICRsZW5ndGgpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGhhcyB0byBiZSAlZCBleGFjdGx5IGNoYXJhY3RlcnMgbG9uZywgYnV0IGxlbmd0aCBpcyAlZC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICAkbGVuZ3RoLAogICAgICAgICAgICAgICAgXG1iX3N0cmxlbigkdmFsdWUsICRlbmNvZGluZykKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9MRU5HVEgsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdsZW5ndGgnID0+ICRsZW5ndGgsICdlbmNvZGluZycgPT4gJGVuY29kaW5nKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGEgc3RyaW5nIGlzIGF0IGxlYXN0ICRtaW5MZW5ndGggY2hhcnMgbG9uZy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgJG1pbkxlbmd0aAogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtaW5MZW5ndGgoJHZhbHVlLCAkbWluTGVuZ3RoLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsLCAkZW5jb2RpbmcgPSAndXRmOCcpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmIChcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKSA8ICRtaW5MZW5ndGgpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIHRvbyBzaG9ydCwgaXQgc2hvdWxkIGhhdmUgYXQgbGVhc3QgJWQgY2hhcmFjdGVycywgYnV0IG9ubHkgaGFzICVkIGNoYXJhY3RlcnMuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgJG1pbkxlbmd0aCwKICAgICAgICAgICAgICAgIFxtYl9zdHJsZW4oJHZhbHVlLCAkZW5jb2RpbmcpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTUlOX0xFTkdUSCwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ21pbl9sZW5ndGgnID0+ICRtaW5MZW5ndGgsICdlbmNvZGluZycgPT4gJGVuY29kaW5nKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHN0cmluZyB2YWx1ZSBpcyBub3QgbG9uZ2VyIHRoYW4gJG1heExlbmd0aCBjaGFycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgJG1heExlbmd0aAogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYXhMZW5ndGgoJHZhbHVlLCAkbWF4TGVuZ3RoLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsLCAkZW5jb2RpbmcgPSAndXRmOCcpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmIChcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKSA+ICRtYXhMZW5ndGgpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIHRvbyBsb25nLCBpdCBzaG91bGQgaGF2ZSBubyBtb3JlIHRoYW4gJWQgY2hhcmFjdGVycywgYnV0IGhhcyAlZCBjaGFyYWN0ZXJzLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgICRtYXhMZW5ndGgsCiAgICAgICAgICAgICAgICBcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX01BWF9MRU5HVEgsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdtYXhfbGVuZ3RoJyA9PiAkbWF4TGVuZ3RoLCAnZW5jb2RpbmcnID0+ICRlbmNvZGluZykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBzdHJpbmcgbGVuZ3RoIGlzIGJldHdlZW4gbWluLG1heCBsZW5ndGhzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAkbWluTGVuZ3RoCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgJG1heExlbmd0aAogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBiZXR3ZWVuTGVuZ3RoKCR2YWx1ZSwgJG1pbkxlbmd0aCwgJG1heExlbmd0aCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCwgJGVuY29kaW5nID0gJ3V0ZjgnKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIHN0YXRpYzo6bWluTGVuZ3RoKCR2YWx1ZSwgJG1pbkxlbmd0aCwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgsICRlbmNvZGluZyk7CiAgICAgICAgc3RhdGljOjptYXhMZW5ndGgoJHZhbHVlLCAkbWF4TGVuZ3RoLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCwgJGVuY29kaW5nKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBzdHJpbmcgc3RhcnRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHN0cmluZwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRuZWVkbGUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3RhcnRzV2l0aCgkc3RyaW5nLCAkbmVlZGxlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsLCAkZW5jb2RpbmcgPSAndXRmOCcpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHN0cmluZywgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoMCAhPT0gXG1iX3N0cnBvcygkc3RyaW5nLCAkbmVlZGxlLCBudWxsLCAkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBkb2VzIG5vdCBzdGFydCB3aXRoICIlcyIuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkc3RyaW5nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRuZWVkbGUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkc3RyaW5nLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1NUUklOR19TVEFSVCwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ25lZWRsZScgPT4gJG5lZWRsZSwgJ2VuY29kaW5nJyA9PiAkZW5jb2RpbmcpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgc3RyaW5nIGVuZHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkc3RyaW5nCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJG5lZWRsZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmRzV2l0aCgkc3RyaW5nLCAkbmVlZGxlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsLCAkZW5jb2RpbmcgPSAndXRmOCcpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHN0cmluZywgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICAkc3RyaW5nUG9zaXRpb24gPSBcbWJfc3RybGVuKCRzdHJpbmcsICRlbmNvZGluZykgLSBcbWJfc3RybGVuKCRuZWVkbGUsICRlbmNvZGluZyk7CgogICAgICAgIGlmIChcbWJfc3Rycmlwb3MoJHN0cmluZywgJG5lZWRsZSwgbnVsbCwgJGVuY29kaW5nKSAhPT0gJHN0cmluZ1Bvc2l0aW9uKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBkb2VzIG5vdCBlbmQgd2l0aCAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHN0cmluZyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbmVlZGxlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHN0cmluZywgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9TVFJJTkdfRU5ELCAkcHJvcGVydHlQYXRoLCBhcnJheSgnbmVlZGxlJyA9PiAkbmVlZGxlLCAnZW5jb2RpbmcnID0+ICRlbmNvZGluZykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBzdHJpbmcgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHN0cmluZwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRuZWVkbGUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29udGFpbnMoJHN0cmluZywgJG5lZWRsZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCwgJGVuY29kaW5nID0gJ3V0ZjgnKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCRzdHJpbmcsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKGZhbHNlID09PSBcbWJfc3RycG9zKCRzdHJpbmcsICRuZWVkbGUsIG51bGwsICRlbmNvZGluZykpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGRvZXMgbm90IGNvbnRhaW4gIiVzIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRzdHJpbmcpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG5lZWRsZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCRzdHJpbmcsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfU1RSSU5HX0NPTlRBSU5TLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnbmVlZGxlJyA9PiAkbmVlZGxlLCAnZW5jb2RpbmcnID0+ICRlbmNvZGluZykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiBhcnJheSBvZiBjaG9pY2VzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAkY2hvaWNlcwogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaG9pY2UoJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpbl9hcnJheSgkdmFsdWUsICRjaG9pY2VzLCB0cnVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGFuIGVsZW1lbnQgb2YgdGhlIHZhbGlkIHZhbHVlczogJXMnKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBcaW1wbG9kZSgnLCAnLCBcYXJyYXlfbWFwKGFycmF5KFxnZXRfY2FsbGVkX2NsYXNzKCksICdzdHJpbmdpZnknKSwgJGNob2ljZXMpKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0NIT0lDRSwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2Nob2ljZXMnID0+ICRjaG9pY2VzKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMuCiAgICAgKgogICAgICogVGhpcyBpcyBhbiBhbGlhcyBvZiB7QHNlZSBjaG9pY2UoKX0uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICRjaG9pY2VzCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5BcnJheSgkdmFsdWUsIGFycmF5ICRjaG9pY2VzLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBzdGF0aWM6OmNob2ljZSgkdmFsdWUsICRjaG9pY2VzLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudW1lcmljLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbnVtZXJpYygkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfbnVtZXJpYygkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgbnVtZXJpYy4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9OVU1FUklDLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSByZXNvdXJjZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUmVzb3VyY2UoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGlzX3Jlc291cmNlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhIHJlc291cmNlLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1JFU09VUkNFLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0FycmF5KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYW4gYXJyYXkuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQVJSQVksICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheSBvciBhIHRyYXZlcnNhYmxlIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVHJhdmVyc2FibGUoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGlzX2FycmF5KCR2YWx1ZSkgJiYgISR2YWx1ZSBpbnN0YW5jZW9mIFxUcmF2ZXJzYWJsZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGFuIGFycmF5IGFuZCBkb2VzIG5vdCBpbXBsZW1lbnQgVHJhdmVyc2FibGUuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfVFJBVkVSU0FCTEUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheSBvciBhbiBhcnJheS1hY2Nlc3NpYmxlIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQXJyYXlBY2Nlc3NpYmxlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19hcnJheSgkdmFsdWUpICYmICEkdmFsdWUgaW5zdGFuY2VvZiBcQXJyYXlBY2Nlc3MpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhbiBhcnJheSBhbmQgZG9lcyBub3QgaW1wbGVtZW50IEFycmF5QWNjZXNzLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0FSUkFZX0FDQ0VTU0lCTEUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8aW50ICAgICAgICAgICAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGtleUV4aXN0cygkdmFsdWUsICRrZXksICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjppc0FycmF5KCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxhcnJheV9rZXlfZXhpc3RzKCRrZXksICR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdBcnJheSBkb2VzIG5vdCBjb250YWluIGFuIGVsZW1lbnQgd2l0aCBrZXkgIiVzIicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJGtleSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9LRVlfRVhJU1RTLCAkcHJvcGVydHlQYXRoLCBhcnJheSgna2V5JyA9PiAka2V5KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGtleSBkb2VzIG5vdCBleGlzdCBpbiBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGludCAgICAgICAgICAgJGtleQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBrZXlOb3RFeGlzdHMoJHZhbHVlLCAka2V5LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6aXNBcnJheSgkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKFxhcnJheV9rZXlfZXhpc3RzKCRrZXksICR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdBcnJheSBjb250YWlucyBhbiBlbGVtZW50IHdpdGgga2V5ICIlcyInKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRrZXkpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfS0VZX05PVF9FWElTVFMsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdrZXknID0+ICRrZXkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheS9hcnJheS1hY2Nlc3NpYmxlIG9iamVjdCB1c2luZyBpc3NldCgpLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8aW50ICAgICAgICAgICAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGtleUlzc2V0KCR2YWx1ZSwgJGtleSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OmlzQXJyYXlBY2Nlc3NpYmxlKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIWlzc2V0KCR2YWx1ZVska2V5XSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdUaGUgZWxlbWVudCB3aXRoIGtleSAiJXMiIHdhcyBub3QgZm91bmQnKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRrZXkpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfS0VZX0lTU0VULCAkcHJvcGVydHlQYXRoLCBhcnJheSgna2V5JyA9PiAka2V5KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgYW5kIGl0cyB2YWx1ZSBpcyBub3QgZW1wdHkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgICAgICAgICAgICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90RW1wdHlLZXkoJHZhbHVlLCAka2V5LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6a2V5SXNzZXQoJHZhbHVlLCAka2V5LCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgc3RhdGljOjpub3RFbXB0eSgkdmFsdWVbJGtleV0sICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgYmxhbmsuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3RCbGFuaygkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKGZhbHNlID09PSAkdmFsdWUgfHwgKGVtcHR5KCR2YWx1ZSkgJiYgJzAnICE9ICR2YWx1ZSkgfHwgKFxpc19zdHJpbmcoJHZhbHVlKSAmJiAnJyA9PT0gXHRyaW0oJHZhbHVlKSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIGJsYW5rLCBidXQgd2FzIGV4cGVjdGVkIHRvIGNvbnRhaW4gYSB2YWx1ZS4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9OT1RfQkxBTkssICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkY2xhc3NOYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzSW5zdGFuY2VPZigkdmFsdWUsICRjbGFzc05hbWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCEoJHZhbHVlIGluc3RhbmNlb2YgJGNsYXNzTmFtZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdDbGFzcyAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBpbnN0YW5jZW9mIG9mICIlcyIgYnV0IGlzIG5vdC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICAkY2xhc3NOYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfSU5TVEFOQ0VfT0YsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdjbGFzcycgPT4gJGNsYXNzTmFtZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgaW5zdGFuY2Ugb2YgZ2l2ZW4gY2xhc3MtbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJGNsYXNzTmFtZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3RJc0luc3RhbmNlT2YoJHZhbHVlLCAkY2xhc3NOYW1lLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiAkY2xhc3NOYW1lKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnQ2xhc3MgIiVzIiB3YXMgbm90IGV4cGVjdGVkIHRvIGJlIGluc3RhbmNlb2Ygb2YgIiVzIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICAkY2xhc3NOYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTk9UX0lOU1RBTkNFX09GLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnY2xhc3MnID0+ICRjbGFzc05hbWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgc3ViY2xhc3Mgb2YgZ2l2ZW4gY2xhc3MtbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJGNsYXNzTmFtZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdWJjbGFzc09mKCR2YWx1ZSwgJGNsYXNzTmFtZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19zdWJjbGFzc19vZigkdmFsdWUsICRjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnQ2xhc3MgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgc3ViY2xhc3Mgb2YgIiVzIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICAkY2xhc3NOYW1lCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfU1VCQ0xBU1NfT0YsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdjbGFzcycgPT4gJGNsYXNzTmFtZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiByYW5nZSBvZiBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkbWluVmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkbWF4VmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmFuZ2UoJHZhbHVlLCAkbWluVmFsdWUsICRtYXhWYWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6Om51bWVyaWMoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmICgkdmFsdWUgPCAkbWluVmFsdWUgfHwgJHZhbHVlID4gJG1heFZhbHVlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnTnVtYmVyICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGF0IGxlYXN0ICIlZCIgYW5kIGF0IG1vc3QgIiVkIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbWluVmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG1heFZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1JBTkdFLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnbWluJyA9PiAkbWluVmFsdWUsICdtYXgnID0+ICRtYXhWYWx1ZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGF0IGxlYXN0IGFzIGJpZyBhcyBhIGdpdmVuIGxpbWl0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkbWluVmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWluKCR2YWx1ZSwgJG1pblZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6bnVtZXJpYygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCR2YWx1ZSA8ICRtaW5WYWx1ZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ051bWJlciAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBhdCBsZWFzdCAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRtaW5WYWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9NSU4sICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdtaW4nID0+ICRtaW5WYWx1ZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBhIG51bWJlciBpcyBzbWFsbGVyIGFzIGEgZ2l2ZW4gbGltaXQuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICRtYXhWYWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYXgoJHZhbHVlLCAkbWF4VmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpudW1lcmljKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoJHZhbHVlID4gJG1heFZhbHVlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnTnVtYmVyICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGF0IG1vc3QgIiVzIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbWF4VmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTUFYLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnbWF4JyA9PiAkbWF4VmFsdWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSBmaWxlIGV4aXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbGUoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIHN0YXRpYzo6bm90RW1wdHkoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmICghXGlzX2ZpbGUoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ0ZpbGUgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gZXhpc3QuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRklMRSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGEgZGlyZWN0b3J5IGV4aXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRpcmVjdG9yeSgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmICghXGlzX2RpcigkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnUGF0aCAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBhIGRpcmVjdG9yeS4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9ESVJFQ1RPUlksICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHJlYWRhYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVhZGFibGUoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxpc19yZWFkYWJsZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnUGF0aCAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSByZWFkYWJsZS4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9SRUFEQUJMRSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgd3JpdGVhYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd3JpdGVhYmxlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OnN0cmluZygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCFcaXNfd3JpdGFibGUoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1BhdGggIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgd3JpdGVhYmxlLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1dSSVRFQUJMRSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGVtYWlsIGFkZHJlc3MgKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfRU1BSUwpLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW1haWwoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxmaWx0ZXJfdmFyKCR2YWx1ZSwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRU1BSUwsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRob3N0ID0gXHN1YnN0cigkdmFsdWUsIFxzdHJwb3MoJHZhbHVlLCAnQCcpICsgMSk7CgogICAgICAgICAgICAvLyBMaWtlbHkgbm90IGEgRlFETiwgYnVnIGluIFBIUCBGSUxURVJfVkFMSURBVEVfRU1BSUwgcHJpb3IgdG8gUEhQIDUuMy4zCiAgICAgICAgICAgIGlmIChcdmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNS4zLjMnLCAnPCcpICYmIGZhbHNlID09PSBcc3RycG9zKCRob3N0LCAnLicpKSB7CiAgICAgICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLicpLAogICAgICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0VNQUlMLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBVUkwuCiAgICAgKgogICAgICogVGhpcyBjb2RlIHNuaXBwZWQgd2FzIHRha2VuIGZyb20gdGhlIFN5bWZvbnkgcHJvamVjdCBhbmQgbW9kaWZpZWQgdG8gdGhlIHNwZWNpYWwgZGVtYW5kcyBvZiB0aGlzIG1ldGhvZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvVmFsaWRhdG9yL2Jsb2IvbWFzdGVyL0NvbnN0cmFpbnRzL1VybFZhbGlkYXRvci5waHAKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvVmFsaWRhdG9yL2Jsb2IvbWFzdGVyL0NvbnN0cmFpbnRzL1VybC5waHAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cmwoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICAkcHJvdG9jb2xzID0gYXJyYXkoJ2h0dHAnLCAnaHR0cHMnKTsKCiAgICAgICAgJHBhdHRlcm4gPSAnfl4KICAgICAgICAgICAgKCVzKTovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByb3RvY29sCiAgICAgICAgICAgICgoW1wuXHBMXHBOLV0rOik/KFtcLlxwTFxwTi1dKylAKT8gICAgICAgICAgIyBiYXNpYyBhdXRoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIChbXHBMXHBOXHBTLVwuXSkrKFwuPyhbXHBMXHBOXXx4blwtXC1bXHBMXHBOLV0rKStcLj8pICMgYSBkb21haW4gbmFtZQogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcgogICAgICAgICAgICAgICAgXGR7MSwzfVwuXGR7MSwzfVwuXGR7MSwzfVwuXGR7MSwzfSAgICAgICAgICAgICAgICAgICAgIyBhbiBJUCBhZGRyZXNzCiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9yCiAgICAgICAgICAgICAgICBcWwogICAgICAgICAgICAgICAgICAgICg/Oig/Oig/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezZ9KSg/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTooPzooPzpbMC05YS1mXXsxLDR9KSkpfCg/Oig/Oig/Oig/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKVwuKXszfSg/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKSkpKSkpfCg/Oig/Ojo6KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7NX0pKD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOig/Oig/OlswLTlhLWZdezEsNH0pKSl8KD86KD86KD86KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpXC4pezN9KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpKSkpKSl8KD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpKT86Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezR9KSg/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTooPzooPzpbMC05YS1mXXsxLDR9KSkpfCg/Oig/Oig/Oig/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKVwuKXszfSg/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKSkpKSkpfCg/Oig/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezAsMX0oPzooPzpbMC05YS1mXXsxLDR9KSkpPzo6KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7M30pKD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOig/Oig/OlswLTlhLWZdezEsNH0pKSl8KD86KD86KD86KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpXC4pezN9KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpKSkpKSl8KD86KD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7MCwyfSg/Oig/OlswLTlhLWZdezEsNH0pKSk/OjooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KXsyfSkoPzooPzooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KD86KD86WzAtOWEtZl17MSw0fSkpKXwoPzooPzooPzooPzooPzoyNVswLTVdfCg/OlsxLTldfDFbMC05XXwyWzAtNF0pP1swLTldKSlcLil7M30oPzooPzoyNVswLTVdfCg/OlsxLTldfDFbMC05XXwyWzAtNF0pP1swLTldKSkpKSkpKXwoPzooPzooPzooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KXswLDN9KD86KD86WzAtOWEtZl17MSw0fSkpKT86Oig/Oig/OlswLTlhLWZdezEsNH0pKTopKD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOig/Oig/OlswLTlhLWZdezEsNH0pKSl8KD86KD86KD86KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpXC4pezN9KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpKSkpKSl8KD86KD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7MCw0fSg/Oig/OlswLTlhLWZdezEsNH0pKSk/OjopKD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOig/Oig/OlswLTlhLWZdezEsNH0pKSl8KD86KD86KD86KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpXC4pezN9KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpKSkpKSl8KD86KD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7MCw1fSg/Oig/OlswLTlhLWZdezEsNH0pKSk/OjopKD86KD86WzAtOWEtZl17MSw0fSkpKXwoPzooPzooPzooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KXswLDZ9KD86KD86WzAtOWEtZl17MSw0fSkpKT86OikpKSkKICAgICAgICAgICAgICAgIFxdICAjIGFuIElQdjYgYWRkcmVzcwogICAgICAgICAgICApCiAgICAgICAgICAgICg6WzAtOV0rKT8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGEgcG9ydCAob3B0aW9uYWwpCiAgICAgICAgICAgICgvP3wvXFMrfFw/XFMqfFwjXFMqKSAgICAgICAgICAgICAgICAgICAjIGEgLywgbm90aGluZywgYSAvIHdpdGggc29tZXRoaW5nLCBhIHF1ZXJ5IG9yIGEgZnJhZ21lbnQKICAgICAgICAkfml4dSc7CgogICAgICAgICRwYXR0ZXJuID0gXHNwcmludGYoJHBhdHRlcm4sIFxpbXBsb2RlKCd8JywgJHByb3RvY29scykpOwoKICAgICAgICBpZiAoIVxwcmVnX21hdGNoKCRwYXR0ZXJuLCAkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBVUkwgc3RhcnRpbmcgd2l0aCBodHRwIG9yIGh0dHBzJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfVVJMLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYWxwaGFudW1lcmljLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWxudW0oJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHN0YXRpYzo6cmVnZXgoJHZhbHVlLCAnKF4oW2EtekEtWl17MX1bYS16QS1aMC05XSopJCknLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfSBjYXRjaCAoQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYWxwaGFudW1lcmljLCBzdGFydGluZyB3aXRoIGxldHRlcnMgYW5kIGNvbnRhaW5pbmcgb25seSBsZXR0ZXJzIGFuZCBudW1iZXJzLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0FMTlVNLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGJvb2xlYW4gVHJ1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRydWUoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICh0cnVlICE9PSAkdmFsdWUpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBUUlVFLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1RSVUUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYm9vbGVhbiBGYWxzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhbHNlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoZmFsc2UgIT09ICR2YWx1ZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IEZBTFNFLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0ZBTFNFLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIGNsYXNzIGV4aXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsYXNzRXhpc3RzKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxjbGFzc19leGlzdHMoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ0NsYXNzICIlcyIgZG9lcyBub3QgZXhpc3QuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQ0xBU1MsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgaW50ZXJmYWNlIGV4aXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludGVyZmFjZUV4aXN0cygkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaW50ZXJmYWNlX2V4aXN0cygkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnSW50ZXJmYWNlICIlcyIgZG9lcyBub3QgZXhpc3QuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfSU5URVJGQUNFLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIGNsYXNzIGltcGxlbWVudHMgdGhlIGludGVyZmFjZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGNsYXNzCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJGludGVyZmFjZU5hbWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW1wbGVtZW50c0ludGVyZmFjZSgkY2xhc3MsICRpbnRlcmZhY2VOYW1lLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgICRyZWZsZWN0aW9uID0gbmV3IFxSZWZsZWN0aW9uQ2xhc3MoJGNsYXNzKTsKICAgICAgICBpZiAoISRyZWZsZWN0aW9uLT5pbXBsZW1lbnRzSW50ZXJmYWNlKCRpbnRlcmZhY2VOYW1lKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ0NsYXNzICIlcyIgZG9lcyBub3QgaW1wbGVtZW50IGludGVyZmFjZSAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJGNsYXNzKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRpbnRlcmZhY2VOYW1lKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJGNsYXNzLCAkbWVzc2FnZSwgc3RhdGljOjpJTlRFUkZBQ0VfTk9UX0lNUExFTUVOVEVELCAkcHJvcGVydHlQYXRoLCBhcnJheSgnaW50ZXJmYWNlJyA9PiAkaW50ZXJmYWNlTmFtZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQganNvbiBzdHJpbmcuCiAgICAgKgogICAgICogTk9USUNFOgogICAgICogU2luY2UgdGhpcyBkb2VzIGEganNvbl9kZWNvZGUgdG8gZGV0ZXJtaW5lIGl0cyB2YWxpZGl0eQogICAgICogeW91IHByb2JhYmx5IHNob3VsZCBjb25zaWRlciwgd2hlbiB1c2luZyB0aGUgdmFyaWFibGUKICAgICAqIGNvbnRlbnQgYWZ0ZXJ3YXJkcywganVzdCB0byBkZWNvZGUgYW5kIGNoZWNrIGZvciB5b3Vyc2VsZiBpbnN0ZWFkCiAgICAgKiBvZiB1c2luZyB0aGlzIGFzc2VydGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzSnNvblN0cmluZygkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09IFxqc29uX2RlY29kZSgkdmFsdWUpICYmIEpTT05fRVJST1JfTk9ORSAhPT0gXGpzb25fbGFzdF9lcnJvcigpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYSB2YWxpZCBKU09OIHN0cmluZy4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9KU09OX1NUUklORywgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBVVUlELgogICAgICoKICAgICAqIFVzZXMgY29kZSBmcm9tIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vcmFtc2V5L3V1aWR9IHRoYXQgaXMgTUlUIGxpY2Vuc2VkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXVpZCgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgJHZhbHVlID0gXHN0cl9yZXBsYWNlKGFycmF5KCd1cm46JywgJ3V1aWQ6JywgJ3snLCAnfScpLCAnJywgJHZhbHVlKTsKCiAgICAgICAgaWYgKCcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnID09PSAkdmFsdWUpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxwcmVnX21hdGNoKCcvXlswLTlBLUZhLWZdezh9LVswLTlBLUZhLWZdezR9LVswLTlBLUZhLWZdezR9LVswLTlBLUZhLWZdezR9LVswLTlBLUZhLWZdezEyfSQvJywgJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGEgdmFsaWQgVVVJRC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9VVUlELCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIEUxNjQgUGhvbmUgTnVtYmVyLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRS4xNjQKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGUxNjQoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXHByZWdfbWF0Y2goJy9eXCs/WzEtOV1cZHsxLDE0fSQvJywgJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGEgdmFsaWQgRTE2NC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9FMTY0LCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIGNvdW50IG9mIGNvdW50YWJsZSBpcyBlcXVhbCB0byBjb3VudC4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXl8XENvdW50YWJsZSAkY291bnRhYmxlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAkY291bnQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvdW50KCRjb3VudGFibGUsICRjb3VudCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGNvdW50ICE9PSBcY291bnQoJGNvdW50YWJsZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdMaXN0IGRvZXMgbm90IGNvbnRhaW4gZXhhY3RseSAlZCBlbGVtZW50cyAoJWQgZ2l2ZW4pLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJGNvdW50KSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KFxjb3VudCgkY291bnRhYmxlKSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCRjb3VudGFibGUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQ09VTlQsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdjb3VudCcgPT4gJGNvdW50KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHN0YXRpYyBjYWxsIGhhbmRsZXIgdG8gaW1wbGVtZW50OgogICAgICogIC0gIm51bGwgb3IgYXNzZXJ0aW9uIiBkZWxlZ2F0aW9uCiAgICAgKiAgLSAiYWxsIiBkZWxlZ2F0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1ldGhvZAogICAgICogQHBhcmFtIGFycmF5ICAkYXJncwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxtaXhlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9fY2FsbFN0YXRpYygkbWV0aG9kLCAkYXJncykKICAgIHsKICAgICAgICBpZiAoMCA9PT0gXHN0cnBvcygkbWV0aG9kLCAnbnVsbE9yJykpIHsKICAgICAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygwLCAkYXJncykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCdNaXNzaW5nIHRoZSBmaXJzdCBhcmd1bWVudC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRhcmdzWzBdKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1ldGhvZCA9IFxzdWJzdHIoJG1ldGhvZCwgNik7CgogICAgICAgICAgICByZXR1cm4gXGNhbGxfdXNlcl9mdW5jX2FycmF5KGFycmF5KFxnZXRfY2FsbGVkX2NsYXNzKCksICRtZXRob2QpLCAkYXJncyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoMCA9PT0gXHN0cnBvcygkbWV0aG9kLCAnYWxsJykpIHsKICAgICAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygwLCAkYXJncykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCdNaXNzaW5nIHRoZSBmaXJzdCBhcmd1bWVudC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RhdGljOjppc1RyYXZlcnNhYmxlKCRhcmdzWzBdKTsKCiAgICAgICAgICAgICRtZXRob2QgPSBcc3Vic3RyKCRtZXRob2QsIDMpOwogICAgICAgICAgICAkdmFsdWVzID0gXGFycmF5X3NoaWZ0KCRhcmdzKTsKICAgICAgICAgICAgJGNhbGxlZENsYXNzID0gXGdldF9jYWxsZWRfY2xhc3MoKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBcY2FsbF91c2VyX2Z1bmNfYXJyYXkoYXJyYXkoJGNhbGxlZENsYXNzLCAkbWV0aG9kKSwgXGFycmF5X21lcmdlKGFycmF5KCR2YWx1ZSksICRhcmdzKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IEJhZE1ldGhvZENhbGxFeGNlcHRpb24oJ05vIGFzc2VydGlvbiBBc3NlcnRpb24jJyAuICRtZXRob2QgLiAnIGV4aXN0cy4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlcyBhcnJheSBoYXMgZXZlcnkgY2hvaWNlIGFzIGtleSBhbmQgdGhhdCB0aGlzIGNob2ljZSBoYXMgY29udGVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgJHZhbHVlcwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICRjaG9pY2VzCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hvaWNlc05vdEVtcHR5KGFycmF5ICR2YWx1ZXMsIGFycmF5ICRjaG9pY2VzLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6bm90RW1wdHkoJHZhbHVlcywgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBmb3JlYWNoICgkY2hvaWNlcyBhcyAkY2hvaWNlKSB7CiAgICAgICAgICAgIHN0YXRpYzo6bm90RW1wdHlLZXkoJHZhbHVlcywgJGNob2ljZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmVzIHRoYXQgdGhlIG5hbWVkIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICRvYmplY3QKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtZXRob2RFeGlzdHMoJHZhbHVlLCAkb2JqZWN0LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6aXNPYmplY3QoJG9iamVjdCwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxtZXRob2RfZXhpc3RzKCRvYmplY3QsICR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdFeHBlY3RlZCAiJXMiIGRvZXMgbm90IGV4aXN0IGluIHByb3ZpZGVkIG9iamVjdC4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9NRVRIT0QsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdvYmplY3QnID0+IFxnZXRfY2xhc3MoJG9iamVjdCkpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhbiBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzT2JqZWN0KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19vYmplY3QoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1Byb3ZpZGVkICIlcyIgaXMgbm90IGEgdmFsaWQgb2JqZWN0LicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX09CSkVDVCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiBnaXZlbiBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGxpbWl0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGVzc1RoYW4oJHZhbHVlLCAkbGltaXQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA+PSAkbGltaXQpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdQcm92aWRlZCAiJXMiIGlzIG5vdCBsZXNzIHRoYW4gIiVzIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTEVTUywgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2xpbWl0JyA9PiAkbGltaXQpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgbGVzcyBvciBlcXVhbCB0aGFuIGdpdmVuIGxpbWl0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkbGltaXQKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsZXNzT3JFcXVhbFRoYW4oJHZhbHVlLCAkbGltaXQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA+ICRsaW1pdCkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1Byb3ZpZGVkICIlcyIgaXMgbm90IGxlc3Mgb3IgZXF1YWwgdGhhbiAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRsaW1pdCkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9MRVNTX09SX0VRVUFMLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnbGltaXQnID0+ICRsaW1pdCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gZ2l2ZW4gbGltaXQuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICRsaW1pdAogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdyZWF0ZXJUaGFuKCR2YWx1ZSwgJGxpbWl0LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPD0gJGxpbWl0KSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnUHJvdmlkZWQgIiVzIiBpcyBub3QgZ3JlYXRlciB0aGFuICIlcyIuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJGxpbWl0KQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0dSRUFURVIsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdsaW1pdCcgPT4gJGxpbWl0KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBnaXZlbiBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGxpbWl0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ3JlYXRlck9yRXF1YWxUaGFuKCR2YWx1ZSwgJGxpbWl0LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPCAkbGltaXQpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdQcm92aWRlZCAiJXMiIGlzIG5vdCBncmVhdGVyIG9yIGVxdWFsIHRoYW4gIiVzIi4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfR1JFQVRFUl9PUl9FUVVBTCwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2xpbWl0JyA9PiAkbGltaXQpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4gYSBsb3dlciBsaW1pdCwgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbiB1cHBlciBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAkbG93ZXJMaW1pdAogICAgICogQHBhcmFtIG1peGVkICAkdXBwZXJMaW1pdAogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZyAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYmV0d2VlbigkdmFsdWUsICRsb3dlckxpbWl0LCAkdXBwZXJMaW1pdCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGxvd2VyTGltaXQgPiAkdmFsdWUgfHwgJHZhbHVlID4gJHVwcGVyTGltaXQpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdQcm92aWRlZCAiJXMiIGlzIG5laXRoZXIgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICIlcyIgbm9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRsb3dlckxpbWl0KSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR1cHBlckxpbWl0KQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0JFVFdFRU4sICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdsb3dlcicgPT4gJGxvd2VyTGltaXQsICd1cHBlcicgPT4gJHVwcGVyTGltaXQpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gYSBsb3dlciBsaW1pdCwgYW5kIGxlc3MgdGhhbiBhbiB1cHBlciBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAkbG93ZXJMaW1pdAogICAgICogQHBhcmFtIG1peGVkICAkdXBwZXJMaW1pdAogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZyAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYmV0d2VlbkV4Y2x1c2l2ZSgkdmFsdWUsICRsb3dlckxpbWl0LCAkdXBwZXJMaW1pdCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGxvd2VyTGltaXQgPj0gJHZhbHVlIHx8ICR2YWx1ZSA+PSAkdXBwZXJMaW1pdCkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1Byb3ZpZGVkICIlcyIgaXMgbmVpdGhlciBncmVhdGVyIHRoYW4gIiVzIiBub3IgbGVzcyB0aGFuICIlcyIuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJGxvd2VyTGltaXQpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHVwcGVyTGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQkVUV0VFTl9FWENMVVNJVkUsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdsb3dlcicgPT4gJGxvd2VyTGltaXQsICd1cHBlcicgPT4gJHVwcGVyTGltaXQpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgZXh0ZW5zaW9uIGlzIGxvYWRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4dGVuc2lvbkxvYWRlZCgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcZXh0ZW5zaW9uX2xvYWRlZCgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnRXh0ZW5zaW9uICIlcyIgaXMgcmVxdWlyZWQuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRVhURU5TSU9OLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgZGF0ZSBpcyB2YWxpZCBhbmQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGZvcm1hdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJGZvcm1hdCAgICAgICBzdXBwb3J0cyBhbGwgb2YgdGhlIG9wdGlvbnMgZGF0ZSgpLCBleGNlcHQgZm9yIHRoZSBmb2xsb3dpbmc6CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOLCB3LCBXLCB0LCBMLCBvLCBCLCBhLCBBLCBnLCBoLCBJLCBPLCBQLCBaLCBjLCByCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZnVuY3Rpb24uZGF0ZS5waHAjcmVmc2VjdDEtZnVuY3Rpb24uZGF0ZS1wYXJhbWV0ZXJzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGF0ZSgkdmFsdWUsICRmb3JtYXQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJGZvcm1hdCwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICAkZGF0ZVRpbWUgPSBcRGF0ZVRpbWU6OmNyZWF0ZUZyb21Gb3JtYXQoJyEnIC4gJGZvcm1hdCwgJHZhbHVlKTsKCiAgICAgICAgaWYgKGZhbHNlID09PSAkZGF0ZVRpbWUgfHwgJHZhbHVlICE9PSAkZGF0ZVRpbWUtPmZvcm1hdCgkZm9ybWF0KSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ0RhdGUgIiVzIiBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IG1hdGNoIGZvcm1hdCAiJXMiLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRmb3JtYXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfREFURSwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2Zvcm1hdCcgPT4gJGZvcm1hdCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0LCBvciBhIGNsYXNzIHRoYXQgZXhpc3RzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb2JqZWN0T3JDbGFzcygkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfb2JqZWN0KCR2YWx1ZSkpIHsKICAgICAgICAgICAgc3RhdGljOjpjbGFzc0V4aXN0cygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnR5IGV4aXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHByb3BlcnR5CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5RXhpc3RzKCR2YWx1ZSwgJHByb3BlcnR5LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6b2JqZWN0T3JDbGFzcygkdmFsdWUpOwoKICAgICAgICBpZiAoIVxwcm9wZXJ0eV9leGlzdHMoJHZhbHVlLCAkcHJvcGVydHkpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnQ2xhc3MgIiVzIiBkb2VzIG5vdCBoYXZlIHByb3BlcnR5ICIlcyIuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHByb3BlcnR5KQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1BST1BFUlRZLCAkcHJvcGVydHlQYXRoLCBhcnJheSgncHJvcGVydHknID0+ICRwcm9wZXJ0eSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIGNsYXNzLCBhbmQgdGhhdCB0aGUgcHJvcGVydGllcyBhbGwgZXhpc3QuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICRwcm9wZXJ0aWVzCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByb3BlcnRpZXNFeGlzdCgkdmFsdWUsIGFycmF5ICRwcm9wZXJ0aWVzLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6b2JqZWN0T3JDbGFzcygkdmFsdWUpOwogICAgICAgIHN0YXRpYzo6YWxsU3RyaW5nKCRwcm9wZXJ0aWVzLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgICRpbnZhbGlkUHJvcGVydGllcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJHByb3BlcnRpZXMgYXMgJHByb3BlcnR5KSB7CiAgICAgICAgICAgIGlmICghXHByb3BlcnR5X2V4aXN0cygkdmFsdWUsICRwcm9wZXJ0eSkpIHsKICAgICAgICAgICAgICAgICRpbnZhbGlkUHJvcGVydGllc1tdID0gJHByb3BlcnR5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGludmFsaWRQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnQ2xhc3MgIiVzIiBkb2VzIG5vdCBoYXZlIHRoZXNlIHByb3BlcnRpZXM6ICVzLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KFxpbXBsb2RlKCcsICcsICRpbnZhbGlkUHJvcGVydGllcykpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfUFJPUEVSVFksICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdwcm9wZXJ0aWVzJyA9PiAkcHJvcGVydGllcykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgY29tcGFyaXNvbiBvZiB0d28gdmVyc2lvbnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2ZXJzaW9uMQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRvcGVyYXRvcgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2ZXJzaW9uMgogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2ZXJzaW9uKCR2ZXJzaW9uMSwgJG9wZXJhdG9yLCAkdmVyc2lvbjIsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpub3RFbXB0eSgkb3BlcmF0b3IsICd2ZXJzaW9uQ29tcGFyZSBvcGVyYXRvciBpcyByZXF1aXJlZCBhbmQgY2Fubm90IGJlIGVtcHR5LicpOwoKICAgICAgICBpZiAodHJ1ZSAhPT0gXHZlcnNpb25fY29tcGFyZSgkdmVyc2lvbjEsICR2ZXJzaW9uMiwgJG9wZXJhdG9yKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZlcnNpb24gIiVzIiBpcyBub3QgIiVzIiB2ZXJzaW9uICIlcyIuJyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmVyc2lvbjEpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG9wZXJhdG9yKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2ZXJzaW9uMikKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2ZXJzaW9uMSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9WRVJTSU9OLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnb3BlcmF0b3InID0+ICRvcGVyYXRvciwgJ3ZlcnNpb24nID0+ICR2ZXJzaW9uMikpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgb24gUEhQIHZlcnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRvcGVyYXRvcgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2ZXJzaW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBocFZlcnNpb24oJG9wZXJhdG9yLCAkdmVyc2lvbiwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OmRlZmluZWQoJ1BIUF9WRVJTSU9OJyk7CgogICAgICAgIHJldHVybiBzdGF0aWM6OnZlcnNpb24oUEhQX1ZFUlNJT04sICRvcGVyYXRvciwgJHZlcnNpb24sICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQgYW5kIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBpbnN0YWxsZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRleHRlbnNpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkb3BlcmF0b3IKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmVyc2lvbgogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHRlbnNpb25WZXJzaW9uKCRleHRlbnNpb24sICRvcGVyYXRvciwgJHZlcnNpb24sICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpleHRlbnNpb25Mb2FkZWQoJGV4dGVuc2lvbiwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICByZXR1cm4gc3RhdGljOjp2ZXJzaW9uKFxwaHB2ZXJzaW9uKCRleHRlbnNpb24pLCAkb3BlcmF0b3IsICR2ZXJzaW9uLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmVzIHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGNhbGxhYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0NhbGxhYmxlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19jYWxsYWJsZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnUHJvdmlkZWQgIiVzIiBpcyBub3QgYSBjYWxsYWJsZS4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9DQUxMQUJMRSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyB2YWxpZCBhY2NvcmRpbmcgdG8gYSBjYWxsYmFjay4KICAgICAqCiAgICAgKiBJZiB0aGUgY2FsbGJhY2sgcmV0dXJucyBgZmFsc2VgIHRoZSBhc3NlcnRpb24gd2lsbCBmYWlsLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAgICAgICAgICAgICAkY2FsbGJhY2sKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYXRpc2Z5KCR2YWx1ZSwgJGNhbGxiYWNrLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6aXNDYWxsYWJsZSgkY2FsbGJhY2spOwoKICAgICAgICBpZiAoZmFsc2UgPT09IFxjYWxsX3VzZXJfZnVuYygkY2FsbGJhY2ssICR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlID86ICdQcm92aWRlZCAiJXMiIGlzIGludmFsaWQgYWNjb3JkaW5nIHRvIGN1c3RvbSBydWxlLicpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1NBVElTRlksICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcwogICAgICogKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfSVApLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAkZmxhZwogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvbWFudWFsL2ZpbHRlci5maWx0ZXJzLmZsYWdzLnBocAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlwKCR2YWx1ZSwgJGZsYWcgPSBudWxsLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIGlmICghXGZpbHRlcl92YXIoJHZhbHVlLCBGSUxURVJfVkFMSURBVEVfSVAsICRmbGFnKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgSVAgYWRkcmVzcy4nKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0lQLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnZmxhZycgPT4gJGZsYWcpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBhZGRyZXNzCiAgICAgKiAodXNpbmcgaW5wdXRfZmlsdGVyL0ZJTFRFUl9WQUxJREFURV9JUCkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICRmbGFnCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZmlsdGVyLmZpbHRlcnMuZmxhZ3MucGhwCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXB2NCgkdmFsdWUsICRmbGFnID0gbnVsbCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OmlwKCR2YWx1ZSwgJGZsYWcgfCBGSUxURVJfRkxBR19JUFY0LCBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBJUHY0IGFkZHJlc3MuJyksICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjYgYWRkcmVzcwogICAgICogKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfSVApLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAkZmxhZwogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvbWFudWFsL2ZpbHRlci5maWx0ZXJzLmZsYWdzLnBocAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlwdjYoJHZhbHVlLCAkZmxhZyA9IG51bGwsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjppcCgkdmFsdWUsICRmbGFnIHwgRklMVEVSX0ZMQUdfSVBWNiwgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzLicpLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIGEgc3RyaW5nIHZlcnNpb24gb2YgYSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBzdHJpbmdpZnkoJHZhbHVlKQogICAgewogICAgICAgICRyZXN1bHQgPSBcZ2V0dHlwZSgkdmFsdWUpOwoKICAgICAgICBpZiAoXGlzX2Jvb2woJHZhbHVlKSkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHZhbHVlID8gJzxUUlVFPicgOiAnPEZBTFNFPic7CiAgICAgICAgfSBlbHNlaWYgKFxpc19zY2FsYXIoJHZhbHVlKSkgewogICAgICAgICAgICAkdmFsID0gKHN0cmluZykgJHZhbHVlOwoKICAgICAgICAgICAgaWYgKFxzdHJsZW4oJHZhbCkgPiAxMDApIHsKICAgICAgICAgICAgICAgICR2YWwgPSBcc3Vic3RyKCR2YWwsIDAsIDk3KSAuICcuLi4nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0ID0gJHZhbDsKICAgICAgICB9IGVsc2VpZiAoXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICc8QVJSQVk+JzsKICAgICAgICB9IGVsc2VpZiAoXGlzX29iamVjdCgkdmFsdWUpKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSBcZ2V0X2NsYXNzKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlaWYgKFxpc19yZXNvdXJjZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSBcZ2V0X3Jlc291cmNlX3R5cGUoJHZhbHVlKTsKICAgICAgICB9IGVsc2VpZiAobnVsbCA9PT0gJHZhbHVlKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAnPE5VTEw+JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSBjb25zdGFudCBpcyBkZWZpbmVkLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkY29uc3RhbnQKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVmaW5lZCgkY29uc3RhbnQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcZGVmaW5lZCgkY29uc3RhbnQpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPzogJ1ZhbHVlICIlcyIgZXhwZWN0ZWQgdG8gYmUgYSBkZWZpbmVkIGNvbnN0YW50LicpLCAkY29uc3RhbnQpOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJGNvbnN0YW50LCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0NPTlNUQU5ULCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSBjb25zdGFudCBpcyBkZWZpbmVkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYmFzZTY0KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoZmFsc2UgPT09IFxiYXNlNjRfZGVjb2RlKCR2YWx1ZSwgdHJ1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZihzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYSB2YWxpZCBiYXNlNjQgc3RyaW5nLicpLCAkdmFsdWUpOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0JBU0U2NCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlIHRoZSBtZXNzYWdlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPSBudWxsKQogICAgewogICAgICAgIGlmIChcaXNfY2FsbGFibGUoJG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICR0cmFjZXMgPSBcZGVidWdfYmFja3RyYWNlKDApOwoKICAgICAgICAgICAgJHBhcmFtZXRlcnMgPSBhcnJheSgpOwoKICAgICAgICAgICAgJHJlZmxlY3Rpb24gPSBuZXcgXFJlZmxlY3Rpb25DbGFzcygkdHJhY2VzWzFdWydjbGFzcyddKTsKICAgICAgICAgICAgJG1ldGhvZCA9ICRyZWZsZWN0aW9uLT5nZXRNZXRob2QoJHRyYWNlc1sxXVsnZnVuY3Rpb24nXSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRtZXRob2QtPmdldFBhcmFtZXRlcnMoKSBhcyAkaW5kZXggPT4gJHBhcmFtZXRlcikgewogICAgICAgICAgICAgICAgaWYgKCdtZXNzYWdlJyAhPT0gJHBhcmFtZXRlci0+Z2V0TmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlcnNbJHBhcmFtZXRlci0+Z2V0TmFtZSgpXSA9IFxhcnJheV9rZXlfZXhpc3RzKCRpbmRleCwgJHRyYWNlc1sxXVsnYXJncyddKQogICAgICAgICAgICAgICAgICAgICAgICA/ICR0cmFjZXNbMV1bJ2FyZ3MnXVskaW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAgIDogJHBhcmFtZXRlci0+Z2V0RGVmYXVsdFZhbHVlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJhbWV0ZXJzWyc6OmFzc2VydGlvbiddID0gXHNwcmludGYoJyVzJXMlcycsICR0cmFjZXNbMV1bJ2NsYXNzJ10sICR0cmFjZXNbMV1bJ3R5cGUnXSwgJHRyYWNlc1sxXVsnZnVuY3Rpb24nXSk7CgogICAgICAgICAgICAkbWVzc2FnZSA9IFxjYWxsX3VzZXJfZnVuY19hcnJheSgkbWVzc2FnZSwgYXJyYXkoJHBhcmFtZXRlcnMpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcaXNfbnVsbCgkbWVzc2FnZSkgPyBudWxsIDogKHN0cmluZykgJG1lc3NhZ2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/AssertionChain.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKdXNlIExvZ2ljRXhjZXB0aW9uOwp1c2UgUmVmbGVjdGlvbkNsYXNzOwoKLyoqCiAqIENoYWluaW5nIGJ1aWxkZXIgZm9yIGFzc2VydGlvbnMuCiAqCiAqIEBhdXRob3IgQmVuamFtaW4gRWJlcmxlaSA8a29udGFrdEBiZWJlcmxlaS5kZT4KICoKICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBhbG51bShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFscGhhbnVtZXJpYy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBiYXNlNjQoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGNvbnN0YW50IGlzIGRlZmluZWQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gYmV0d2VlbihtaXhlZCAkbG93ZXJMaW1pdCwgbWl4ZWQgJHVwcGVyTGltaXQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4gYSBsb3dlciBsaW1pdCwgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbiB1cHBlciBsaW1pdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBiZXR3ZWVuRXhjbHVzaXZlKG1peGVkICRsb3dlckxpbWl0LCBtaXhlZCAkdXBwZXJMaW1pdCwgc3RyaW5nICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBhIGxvd2VyIGxpbWl0LCBhbmQgbGVzcyB0aGFuIGFuIHVwcGVyIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGJldHdlZW5MZW5ndGgoaW50ICRtaW5MZW5ndGgsIGludCAkbWF4TGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBsZW5ndGggaXMgYmV0d2VlbiBtaW4sbWF4IGxlbmd0aHMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gYm9vbGVhbihzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIHBocCBib29sZWFuLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGNob2ljZShhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiBhcnJheSBvZiBjaG9pY2VzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGNob2ljZXNOb3RFbXB0eShhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZXMgYXJyYXkgaGFzIGV2ZXJ5IGNob2ljZSBhcyBrZXkgYW5kIHRoYXQgdGhpcyBjaG9pY2UgaGFzIGNvbnRlbnQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gY2xhc3NFeGlzdHMoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgY2xhc3MgZXhpc3RzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGNvbnRhaW5zKHN0cmluZyAkbmVlZGxlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBjb250YWlucyBhIHNlcXVlbmNlIG9mIGNoYXJzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGNvdW50KGludCAkY291bnQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNvdW50IG9mIGNvdW50YWJsZSBpcyBlcXVhbCB0byBjb3VudC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBkYXRlKHN0cmluZyAkZm9ybWF0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGRhdGUgaXMgdmFsaWQgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBmb3JtYXQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZGVmaW5lZChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBkaWdpdChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIFZhbGlkYXRlcyBpZiBhbiBpbnRlZ2VyIG9yIGludGVnZXJpc2ggaXMgYSBkaWdpdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBkaXJlY3Rvcnkoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGRpcmVjdG9yeSBleGlzdHMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZTE2NChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBFMTY0IFBob25lIE51bWJlci4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBlbWFpbChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGVtYWlsIGFkZHJlc3MgKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfRU1BSUwpLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGVuZHNXaXRoKHN0cmluZyAkbmVlZGxlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBlbmRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBlcShtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIGVxdWFsICh1c2luZyA9PSApLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGV4dGVuc2lvbkxvYWRlZChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZXh0ZW5zaW9uVmVyc2lvbihzdHJpbmcgJG9wZXJhdG9yLCBtaXhlZCAkdmVyc2lvbiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBleHRlbnNpb24gaXMgbG9hZGVkIGFuZCBhIHNwZWNpZmljIHZlcnNpb24gaXMgaW5zdGFsbGVkLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGZhbHNlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGJvb2xlYW4gRmFsc2UuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZmlsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgZmlsZSBleGlzdHMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZmxvYXQoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBmbG9hdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBncmVhdGVyT3JFcXVhbFRoYW4obWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBnaXZlbiBsaW1pdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBncmVhdGVyVGhhbihtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGltcGxlbWVudHNJbnRlcmZhY2Uoc3RyaW5nICRpbnRlcmZhY2VOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaW5BcnJheShhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiBhcnJheSBvZiBjaG9pY2VzLiBUaGlzIGlzIGFuIGFsaWFzIG9mIEFzc2VydGlvbjo6Y2hvaWNlKCkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaW50ZWdlcihzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGludGVnZXIuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaW50ZWdlcmlzaChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGludGVnZXInaXNoLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGludGVyZmFjZUV4aXN0cyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBpbnRlcmZhY2UgZXhpc3RzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlwKGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXB2NChpbnQgJGZsYWcgPSBudWxsLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjQgYWRkcmVzcy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBpcHY2KGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NiBhZGRyZXNzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzQXJyYXkoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBpc0FycmF5QWNjZXNzaWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5IG9yIGFuIGFycmF5LWFjY2Vzc2libGUgb2JqZWN0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzQ2FsbGFibGUoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGNhbGxhYmxlLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzSW5zdGFuY2VPZihzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzSnNvblN0cmluZyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBqc29uIHN0cmluZy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBpc09iamVjdChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgYW4gb2JqZWN0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzUmVzb3VyY2Uoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHJlc291cmNlLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzVHJhdmVyc2FibGUoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheSBvciBhIHRyYXZlcnNhYmxlIG9iamVjdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBrZXlFeGlzdHMoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4ga2V5SXNzZXQoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgdXNpbmcgaXNzZXQoKS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBrZXlOb3RFeGlzdHMoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBkb2VzIG5vdCBleGlzdCBpbiBhbiBhcnJheS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBsZW5ndGgoaW50ICRsZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGhhcyBhIGdpdmVuIGxlbmd0aC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBsZXNzT3JFcXVhbFRoYW4obWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3Mgb3IgZXF1YWwgdGhhbiBnaXZlbiBsaW1pdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBsZXNzVGhhbihtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgbGVzcyB0aGFuIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG1heChtaXhlZCAkbWF4VmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSBudW1iZXIgaXMgc21hbGxlciBhcyBhIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG1heExlbmd0aChpbnQgJG1heExlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgdmFsdWUgaXMgbm90IGxvbmdlciB0aGFuICRtYXhMZW5ndGggY2hhcnMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbWV0aG9kRXhpc3RzKG1peGVkICRvYmplY3QsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyB0aGF0IHRoZSBuYW1lZCBtZXRob2QgaXMgZGVmaW5lZCBpbiB0aGUgcHJvdmlkZWQgb2JqZWN0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG1pbihtaXhlZCAkbWluVmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBhdCBsZWFzdCBhcyBiaWcgYXMgYSBnaXZlbiBsaW1pdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBtaW5MZW5ndGgoaW50ICRtaW5MZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgYSBzdHJpbmcgaXMgYXQgbGVhc3QgJG1pbkxlbmd0aCBjaGFycyBsb25nLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vQ29udGVudChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGVtcHR5LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vdEJsYW5rKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGJsYW5rLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vdEVtcHR5KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGVtcHR5LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vdEVtcHR5S2V5KHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5L2FycmF5LWFjY2Vzc2libGUgb2JqZWN0IGFuZCBpdHMgdmFsdWUgaXMgbm90IGVtcHR5LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vdEVxKG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IGVxdWFsICh1c2luZyA9PSApLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vdEluQXJyYXkoYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluIGFycmF5IG9mIGNob2ljZXMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm90SXNJbnN0YW5jZU9mKHN0cmluZyAkY2xhc3NOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vdE51bGwoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgbnVsbC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBub3RTYW1lKG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IHRoZSBzYW1lICh1c2luZyA9PT0gKS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBudWxsKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBudW1lcmljKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbnVtZXJpYy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBvYmplY3RPckNsYXNzKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCwgb3IgYSBjbGFzcyB0aGF0IGV4aXN0cy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBwaHBWZXJzaW9uKG1peGVkICR2ZXJzaW9uLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCBvbiBQSFAgdmVyc2lvbi4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBwcm9wZXJ0aWVzRXhpc3QoYXJyYXkgJHByb3BlcnRpZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnRpZXMgYWxsIGV4aXN0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHByb3BlcnR5RXhpc3RzKHN0cmluZyAkcHJvcGVydHksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnR5IGV4aXN0cy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiByYW5nZShtaXhlZCAkbWluVmFsdWUsIG1peGVkICRtYXhWYWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbiByYW5nZSBvZiBudW1iZXJzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHJlYWRhYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIHNvbWV0aGluZyByZWFkYWJsZS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiByZWdleChzdHJpbmcgJHBhdHRlcm4sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgbWF0Y2hlcyBhIHJlZ2V4LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHNhbWUobWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSB0aGUgc2FtZSAodXNpbmcgPT09KS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBzYXRpc2Z5KGNhbGxhYmxlICRjYWxsYmFjaywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgdmFsaWQgYWNjb3JkaW5nIHRvIGEgY2FsbGJhY2suCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gc2NhbGFyKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBQSFAgc2NhbGFyLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHN0YXJ0c1dpdGgoc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIHN0YXJ0cyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcnMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gc3RyaW5nKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBzdHJpbmcuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gc3ViY2xhc3NPZihzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBzdWJjbGFzcyBvZiBnaXZlbiBjbGFzcy1uYW1lLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHRydWUoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYm9vbGVhbiBUcnVlLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHVybChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIFVSTC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiB1dWlkKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIFVVSUQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gdmVyc2lvbihzdHJpbmcgJG9wZXJhdG9yLCBzdHJpbmcgJHZlcnNpb24yLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCBjb21wYXJpc29uIG9mIHR3byB2ZXJzaW9ucy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiB3cml0ZWFibGUoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHdyaXRlYWJsZS4KICovCmNsYXNzIEFzc2VydGlvbkNoYWluCnsKICAgIHByaXZhdGUgJHZhbHVlOwogICAgcHJpdmF0ZSAkZGVmYXVsdE1lc3NhZ2U7CiAgICBwcml2YXRlICRkZWZhdWx0UHJvcGVydHlQYXRoOwoKICAgIC8qKgogICAgICogUmV0dXJuIGVhY2ggYXNzZXJ0aW9uIGFzIGFsd2F5cyB2YWxpZC4KICAgICAqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSAkYWx3YXlzVmFsaWQgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIFBlcmZvcm0gYXNzZXJ0aW9uIG9uIGV2ZXJ5IGVsZW1lbnQgb2YgYXJyYXkgb3IgdHJhdmVyc2FibGUuCiAgICAgKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGFsbCA9IGZhbHNlOwoKICAgIC8qKiBAdmFyIHN0cmluZ3xBc3NlcnRpb24gQ2xhc3MgdG8gdXNlIGZvciBhc3NlcnRpb24gY2FsbHMgKi8KICAgIHByaXZhdGUgJGFzc2VydGlvbkNsYXNzTmFtZSA9ICdBc3NlcnRcQXNzZXJ0aW9uJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsLCAkZGVmYXVsdFByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5kZWZhdWx0TWVzc2FnZSA9ICRkZWZhdWx0TWVzc2FnZTsKICAgICAgICAkdGhpcy0+ZGVmYXVsdFByb3BlcnR5UGF0aCA9ICRkZWZhdWx0UHJvcGVydHlQYXRoOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsbCBhc3NlcnRpb24gb24gdGhlIGN1cnJlbnQgdmFsdWUgaW4gdGhlIGNoYWluLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1ldGhvZE5hbWUKICAgICAqIEBwYXJhbSBhcnJheSAgJGFyZ3MKICAgICAqCiAgICAgKiBAcmV0dXJuIFxBc3NlcnRcQXNzZXJ0aW9uQ2hhaW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkbWV0aG9kTmFtZSwgJGFyZ3MpCiAgICB7CiAgICAgICAgaWYgKHRydWUgPT09ICR0aGlzLT5hbHdheXNWYWxpZCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxtZXRob2RfZXhpc3RzKCR0aGlzLT5hc3NlcnRpb25DbGFzc05hbWUsICRtZXRob2ROYW1lKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkFzc2VydGlvbiAnIiAuICRtZXRob2ROYW1lIC4gIicgZG9lcyBub3QgZXhpc3QuIik7CiAgICAgICAgfQoKICAgICAgICAkcmVmbENsYXNzID0gbmV3IFJlZmxlY3Rpb25DbGFzcygkdGhpcy0+YXNzZXJ0aW9uQ2xhc3NOYW1lKTsKICAgICAgICAkbWV0aG9kID0gJHJlZmxDbGFzcy0+Z2V0TWV0aG9kKCRtZXRob2ROYW1lKTsKCiAgICAgICAgXGFycmF5X3Vuc2hpZnQoJGFyZ3MsICR0aGlzLT52YWx1ZSk7CiAgICAgICAgJHBhcmFtcyA9ICRtZXRob2QtPmdldFBhcmFtZXRlcnMoKTsKCiAgICAgICAgZm9yZWFjaCAoJHBhcmFtcyBhcyAkaWR4ID0+ICRwYXJhbSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJGFyZ3NbJGlkeF0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCdtZXNzYWdlJyA9PSAkcGFyYW0tPmdldE5hbWUoKSkgewogICAgICAgICAgICAgICAgJGFyZ3NbJGlkeF0gPSAkdGhpcy0+ZGVmYXVsdE1lc3NhZ2U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgncHJvcGVydHlQYXRoJyA9PSAkcGFyYW0tPmdldE5hbWUoKSkgewogICAgICAgICAgICAgICAgJGFyZ3NbJGlkeF0gPSAkdGhpcy0+ZGVmYXVsdFByb3BlcnR5UGF0aDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5hbGwpIHsKICAgICAgICAgICAgJG1ldGhvZE5hbWUgPSAnYWxsJyAuICRtZXRob2ROYW1lOwogICAgICAgIH0KCiAgICAgICAgXGNhbGxfdXNlcl9mdW5jX2FycmF5KGFycmF5KCR0aGlzLT5hc3NlcnRpb25DbGFzc05hbWUsICRtZXRob2ROYW1lKSwgJGFyZ3MpOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBTd2l0Y2ggY2hhaW4gaW50byB2YWxpZGF0aW9uIG1vZGUgZm9yIGFuIGFycmF5IG9mIHZhbHVlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxBc3NlcnRcQXNzZXJ0aW9uQ2hhaW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsbCA9IHRydWU7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFN3aXRjaCBjaGFpbiBpbnRvIG1vZGUgYWxsb3dpbmcgbnVsbHMsIGlnbm9yaW5nIGZ1cnRoZXIgYXNzZXJ0aW9ucy4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxBc3NlcnRcQXNzZXJ0aW9uQ2hhaW4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG51bGxPcigpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICR0aGlzLT52YWx1ZSkgewogICAgICAgICAgICAkdGhpcy0+YWx3YXlzVmFsaWQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NOYW1lCiAgICAgKgogICAgICogQHJldHVybiAkdGhpcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0QXNzZXJ0aW9uQ2xhc3NOYW1lKCRjbGFzc05hbWUpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCRjbGFzc05hbWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbignRXhjZXB0aW9uIGNsYXNzIG5hbWUgbXVzdCBiZSBwYXNzZWQgYXMgYSBzdHJpbmcnKTsKICAgICAgICB9CgogICAgICAgIGlmICgnQXNzZXJ0XEFzc2VydGlvbicgIT09ICRjbGFzc05hbWUgJiYgIVxpc19zdWJjbGFzc19vZigkY2xhc3NOYW1lLCAnQXNzZXJ0XEFzc2VydGlvbicpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbigkY2xhc3NOYW1lIC4gJyBpcyBub3QgKGEgc3ViY2xhc3Mgb2YpIEFzc2VydFxBc3NlcnRpb24nKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5hc3NlcnRpb25DbGFzc05hbWUgPSAkY2xhc3NOYW1lOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/AssertionFailedException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKaW50ZXJmYWNlIEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvcGVydHlQYXRoKCk7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCk7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnN0cmFpbnRzKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKLyoqCiAqIFN0YXJ0IHZhbGlkYXRpb24gb24gYSB2YWx1ZSwgcmV0dXJucyB7QGxpbmsgQXNzZXJ0aW9uQ2hhaW59LgogKgogKiBUaGUgaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBzdGFydHMgYW4gYXNzZXJ0aW9uIGNoYWluCiAqIHRoYXQgaXMgaGFwcGVuaW5nIG9uIHRoZSBwYXNzZWQgdmFsdWUuCiAqCiAqIEBleGFtcGxlCiAqCiAqICBcQXNzZXJ0XHRoYXQoJHZhbHVlKS0+bm90RW1wdHkoKS0+aW50ZWdlcigpOwogKiAgXEFzc2VydFx0aGF0KCR2YWx1ZSktPm51bGxPcigpLT5zdHJpbmcoKS0+c3RhcnRzV2l0aCgiRm9vIik7CiAqCiAqIFRoZSBhc3NlcnRpb24gY2hhaW4gY2FuIGJlIHN0YXRlZnVsLCB0aGF0IG1lYW5zIGJlIGNhcmVmdWwgd2hlbiB5b3UgcmV1c2UKICogaXQuIFlvdSBzaG91bGQgbmV2ZXIgcGFzcyBhcm91bmQgdGhlIGNoYWluLgogKgogKiBAcGFyYW0gbWl4ZWQgICR2YWx1ZQogKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0TWVzc2FnZQogKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0UHJvcGVydHlQYXRoCiAqCiAqIEByZXR1cm4gXEFzc2VydFxBc3NlcnRpb25DaGFpbgogKi8KZnVuY3Rpb24gdGhhdCgkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKewogICAgcmV0dXJuIEFzc2VydDo6dGhhdCgkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSwgJGRlZmF1bHRQcm9wZXJ0eVBhdGgpOwp9CgovKioKICogU3RhcnQgdmFsaWRhdGlvbiBvbiBhIHNldCBvZiB2YWx1ZXMsIHJldHVybnMge0BsaW5rIEFzc2VydGlvbkNoYWlufS4KICoKICogQHBhcmFtIG1peGVkICAkdmFsdWVzCiAqIEBwYXJhbSBzdHJpbmcgJGRlZmF1bHRNZXNzYWdlCiAqIEBwYXJhbSBzdHJpbmcgJGRlZmF1bHRQcm9wZXJ0eVBhdGgKICoKICogQHJldHVybiBcQXNzZXJ0XEFzc2VydGlvbkNoYWluCiAqLwpmdW5jdGlvbiB0aGF0QWxsKCR2YWx1ZXMsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKewogICAgcmV0dXJuIEFzc2VydDo6dGhhdEFsbCgkdmFsdWVzLCAkZGVmYXVsdE1lc3NhZ2UsICRkZWZhdWx0UHJvcGVydHlQYXRoKTsKfQoKLyoqCiAqIFN0YXJ0IHZhbGlkYXRpb24gYW5kIGFsbG93IE5VTEwsIHJldHVybnMge0BsaW5rIEFzc2VydGlvbkNoYWlufS4KICoKICogQHBhcmFtIG1peGVkICAkdmFsdWUKICogQHBhcmFtIHN0cmluZyAkZGVmYXVsdE1lc3NhZ2UKICogQHBhcmFtIHN0cmluZyAkZGVmYXVsdFByb3BlcnR5UGF0aAogKgogKiBAcmV0dXJuIFxBc3NlcnRcQXNzZXJ0aW9uQ2hhaW4KICoKICogQGRlcHJlY2F0ZWQgSW4gZmF2b3VyIG9mIEFzc2VydDo6dGhhdE51bGxPcigkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKICovCmZ1bmN0aW9uIHRoYXROdWxsT3IoJHZhbHVlLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsLCAkZGVmYXVsdFByb3BlcnR5UGF0aCA9IG51bGwpCnsKICAgIHJldHVybiBBc3NlcnQ6OnRoYXROdWxsT3IoJHZhbHVlLCAkZGVmYXVsdE1lc3NhZ2UsICRkZWZhdWx0UHJvcGVydHlQYXRoKTsKfQoKLyoqCiAqIENyZWF0ZSBhIGxhenkgYXNzZXJ0aW9uIG9iamVjdC4KICoKICogQHJldHVybiBcQXNzZXJ0XExhenlBc3NlcnRpb24KICovCmZ1bmN0aW9uIGxhenkoKQp7CiAgICByZXR1cm4gQXNzZXJ0OjpsYXp5KCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/InvalidArgumentException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKY2xhc3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGV4dGVuZHMgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpbXBsZW1lbnRzIEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgp7CiAgICBwcml2YXRlICRwcm9wZXJ0eVBhdGg7CiAgICBwcml2YXRlICR2YWx1ZTsKICAgIHByaXZhdGUgJGNvbnN0cmFpbnRzOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJGNvZGUsICRwcm9wZXJ0eVBhdGgsICR2YWx1ZSwgYXJyYXkgJGNvbnN0cmFpbnRzID0gYXJyYXkoKSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAkY29kZSk7CgogICAgICAgICR0aGlzLT5wcm9wZXJ0eVBhdGggPSAkcHJvcGVydHlQYXRoOwogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgICAkdGhpcy0+Y29uc3RyYWludHMgPSAkY29uc3RyYWludHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBVc2VyIGNvbnRyb2xsZWQgd2F5IHRvIGRlZmluZSBhIHN1Yi1wcm9wZXJ0eSBjYXVzaW5nCiAgICAgKiB0aGUgZmFpbHVyZSBvZiBhIGN1cnJlbnRseSBhc3NlcnRlZCBvYmplY3RzLgogICAgICoKICAgICAqIFVzZWZ1bCB0byB0cmFuc3BvcnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5hdHVyZSBvZiB0aGUgZXJyb3IKICAgICAqIGJhY2sgdG8gaGlnaGVyIGxheWVycy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvcGVydHlQYXRoKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByb3BlcnR5UGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgdmFsdWUgdGhhdCBjYXVzZWQgdGhlIGFzc2VydGlvbiB0byBmYWlsLgogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb25zdHJhaW50cyB0aGF0IGFwcGxpZWQgdG8gdGhlIGZhaWxlZCBhc3NlcnRpb24uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29uc3RyYWludHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29uc3RyYWludHM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/LazyAssertion.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKdXNlIExvZ2ljRXhjZXB0aW9uOwoKLyoqCiAqIENoYWluaW5nIGJ1aWxkZXIgZm9yIGxhenkgYXNzZXJ0aW9ucy4KICoKICogQGF1dGhvciBCZW5qYW1pbiBFYmVybGVpIDxrb250YWt0QGJlYmVybGVpLmRlPgogKgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gYWxudW0oc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbHBoYW51bWVyaWMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBiYXNlNjQoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGNvbnN0YW50IGlzIGRlZmluZWQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBiZXR3ZWVuKG1peGVkICRsb3dlckxpbWl0LCBtaXhlZCAkdXBwZXJMaW1pdCwgc3RyaW5nICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBhIGxvd2VyIGxpbWl0LCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGFuIHVwcGVyIGxpbWl0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gYmV0d2VlbkV4Y2x1c2l2ZShtaXhlZCAkbG93ZXJMaW1pdCwgbWl4ZWQgJHVwcGVyTGltaXQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gYSBsb3dlciBsaW1pdCwgYW5kIGxlc3MgdGhhbiBhbiB1cHBlciBsaW1pdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGJldHdlZW5MZW5ndGgoaW50ICRtaW5MZW5ndGgsIGludCAkbWF4TGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBsZW5ndGggaXMgYmV0d2VlbiBtaW4sbWF4IGxlbmd0aHMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBib29sZWFuKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgcGhwIGJvb2xlYW4uCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBjaG9pY2UoYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW4gYXJyYXkgb2YgY2hvaWNlcy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGNob2ljZXNOb3RFbXB0eShhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZXMgYXJyYXkgaGFzIGV2ZXJ5IGNob2ljZSBhcyBrZXkgYW5kIHRoYXQgdGhpcyBjaG9pY2UgaGFzIGNvbnRlbnQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBjbGFzc0V4aXN0cyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBleGlzdHMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBjb250YWlucyhzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFycy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGNvdW50KGludCAkY291bnQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNvdW50IG9mIGNvdW50YWJsZSBpcyBlcXVhbCB0byBjb3VudC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGRhdGUoc3RyaW5nICRmb3JtYXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgZGF0ZSBpcyB2YWxpZCBhbmQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGZvcm1hdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGRlZmluZWQoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGNvbnN0YW50IGlzIGRlZmluZWQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBkaWdpdChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIFZhbGlkYXRlcyBpZiBhbiBpbnRlZ2VyIG9yIGludGVnZXJpc2ggaXMgYSBkaWdpdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGRpcmVjdG9yeShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgZGlyZWN0b3J5IGV4aXN0cy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGUxNjQoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQgRTE2NCBQaG9uZSBOdW1iZXIuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBlbWFpbChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGVtYWlsIGFkZHJlc3MgKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfRU1BSUwpLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZW5kc1dpdGgoc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGVuZHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZXEobWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSBlcXVhbCAodXNpbmcgPT0gKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGV4dGVuc2lvbkxvYWRlZChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBleHRlbnNpb25WZXJzaW9uKHN0cmluZyAkb3BlcmF0b3IsIG1peGVkICR2ZXJzaW9uLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQgYW5kIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBpbnN0YWxsZWQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBmYWxzZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIEZhbHNlLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZmlsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgZmlsZSBleGlzdHMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBmbG9hdChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGZsb2F0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZ3JlYXRlck9yRXF1YWxUaGFuKG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4gZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBncmVhdGVyVGhhbihtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaW1wbGVtZW50c0ludGVyZmFjZShzdHJpbmcgJGludGVyZmFjZU5hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNsYXNzIGltcGxlbWVudHMgdGhlIGludGVyZmFjZS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGluQXJyYXkoYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW4gYXJyYXkgb2YgY2hvaWNlcy4gVGhpcyBpcyBhbiBhbGlhcyBvZiBBc3NlcnRpb246OmNob2ljZSgpLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaW50ZWdlcihzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGludGVnZXIuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpbnRlZ2VyaXNoKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgaW50ZWdlcidpc2guCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpbnRlcmZhY2VFeGlzdHMoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgaW50ZXJmYWNlIGV4aXN0cy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlwKGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpcHY0KGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBhZGRyZXNzLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXB2NihpbnQgJGZsYWcgPSBudWxsLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjYgYWRkcmVzcy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzQXJyYXkoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzQXJyYXlBY2Nlc3NpYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYW4gYXJyYXktYWNjZXNzaWJsZSBvYmplY3QuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpc0NhbGxhYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBjYWxsYWJsZS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzSW5zdGFuY2VPZihzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXNKc29uU3RyaW5nKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIGpzb24gc3RyaW5nLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXNPYmplY3Qoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGFuIG9iamVjdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzUmVzb3VyY2Uoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHJlc291cmNlLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXNUcmF2ZXJzYWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5IG9yIGEgdHJhdmVyc2FibGUgb2JqZWN0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24ga2V5RXhpc3RzKHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24ga2V5SXNzZXQoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgdXNpbmcgaXNzZXQoKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGtleU5vdEV4aXN0cyhzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGRvZXMgbm90IGV4aXN0IGluIGFuIGFycmF5LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbGVuZ3RoKGludCAkbGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBoYXMgYSBnaXZlbiBsZW5ndGguCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBsZXNzT3JFcXVhbFRoYW4obWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3Mgb3IgZXF1YWwgdGhhbiBnaXZlbiBsaW1pdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGxlc3NUaGFuKG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIHRoYW4gZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtYXgobWl4ZWQgJG1heFZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgbnVtYmVyIGlzIHNtYWxsZXIgYXMgYSBnaXZlbiBsaW1pdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG1heExlbmd0aChpbnQgJG1heExlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgdmFsdWUgaXMgbm90IGxvbmdlciB0aGFuICRtYXhMZW5ndGggY2hhcnMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtZXRob2RFeGlzdHMobWl4ZWQgJG9iamVjdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIG5hbWVkIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3QuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtaW4obWl4ZWQgJG1pblZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgYXQgbGVhc3QgYXMgYmlnIGFzIGEgZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtaW5MZW5ndGgoaW50ICRtaW5MZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgYSBzdHJpbmcgaXMgYXQgbGVhc3QgJG1pbkxlbmd0aCBjaGFycyBsb25nLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbm9Db250ZW50KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgZW1wdHkuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RCbGFuayhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBibGFuay4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG5vdEVtcHR5KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGVtcHR5LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbm90RW1wdHlLZXkoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgYW5kIGl0cyB2YWx1ZSBpcyBub3QgZW1wdHkuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RFcShtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCBlcXVhbCAodXNpbmcgPT0gKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG5vdEluQXJyYXkoYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluIGFycmF5IG9mIGNob2ljZXMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RJc0luc3RhbmNlT2Yoc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluc3RhbmNlIG9mIGdpdmVuIGNsYXNzLW5hbWUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3ROdWxsKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IG51bGwuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RTYW1lKG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IHRoZSBzYW1lICh1c2luZyA9PT0gKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG51bGwoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbnVtZXJpYyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG51bWVyaWMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBvYmplY3RPckNsYXNzKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCwgb3IgYSBjbGFzcyB0aGF0IGV4aXN0cy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHBocFZlcnNpb24obWl4ZWQgJHZlcnNpb24sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IG9uIFBIUCB2ZXJzaW9uLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gcHJvcGVydGllc0V4aXN0KGFycmF5ICRwcm9wZXJ0aWVzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3Qgb3IgY2xhc3MsIGFuZCB0aGF0IHRoZSBwcm9wZXJ0aWVzIGFsbCBleGlzdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHByb3BlcnR5RXhpc3RzKHN0cmluZyAkcHJvcGVydHksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnR5IGV4aXN0cy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHJhbmdlKG1peGVkICRtaW5WYWx1ZSwgbWl4ZWQgJG1heFZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIHJhbmdlIG9mIG51bWJlcnMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiByZWFkYWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgcmVhZGFibGUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiByZWdleChzdHJpbmcgJHBhdHRlcm4sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgbWF0Y2hlcyBhIHJlZ2V4LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc2FtZShtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lICh1c2luZyA9PT0pLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc2F0aXNmeShjYWxsYWJsZSAkY2FsbGJhY2ssIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIHZhbGlkIGFjY29yZGluZyB0byBhIGNhbGxiYWNrLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc2NhbGFyKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBQSFAgc2NhbGFyLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc3RhcnRzV2l0aChzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgc3RhcnRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHN0cmluZyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgc3RyaW5nLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc3ViY2xhc3NPZihzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBzdWJjbGFzcyBvZiBnaXZlbiBjbGFzcy1uYW1lLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gdHJ1ZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIFRydWUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiB1cmwoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBVUkwuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiB1dWlkKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIFVVSUQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiB2ZXJzaW9uKHN0cmluZyAkb3BlcmF0b3IsIHN0cmluZyAkdmVyc2lvbjIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IGNvbXBhcmlzb24gb2YgdHdvIHZlcnNpb25zLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gd3JpdGVhYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIHNvbWV0aGluZyB3cml0ZWFibGUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBhbGwoKSBTd2l0Y2ggY2hhaW4gaW50byB2YWxpZGF0aW9uIG1vZGUgZm9yIGFuIGFycmF5IG9mIHZhbHVlcy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG51bGxPcigpIFN3aXRjaCBjaGFpbiBpbnRvIG1vZGUgYWxsb3dpbmcgbnVsbHMsIGlnbm9yaW5nIGZ1cnRoZXIgYXNzZXJ0aW9ucy4KICovCmNsYXNzIExhenlBc3NlcnRpb24KewogICAgcHJpdmF0ZSAkY3VycmVudENoYWluRmFpbGVkID0gZmFsc2U7CiAgICBwcml2YXRlICRhbHdheXNUcnlBbGwgPSBmYWxzZTsKICAgIHByaXZhdGUgJHRoaXNDaGFpblRyeUFsbCA9IGZhbHNlOwogICAgcHJpdmF0ZSAkY3VycmVudENoYWluOwogICAgcHJpdmF0ZSAkZXJyb3JzID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBzdHJpbmcgVGhlIGNsYXNzIHRvIHVzZSBhcyBBc3NlcnRpb25DaGFpbiBmYWN0b3J5ICovCiAgICBwcml2YXRlICRhc3NlcnRDbGFzcyA9ICdBc3NlcnRcQXNzZXJ0JzsKCiAgICAvKiogQHZhciBzdHJpbmd8TGF6eUFzc2VydGlvbkV4Y2VwdGlvbiBUaGUgY2xhc3MgdG8gdXNlIGZvciBleGNlcHRpb25zICovCiAgICBwcml2YXRlICRleGNlcHRpb25DbGFzcyA9ICdBc3NlcnRcTGF6eUFzc2VydGlvbkV4Y2VwdGlvbic7CgogICAgcHVibGljIGZ1bmN0aW9uIHRoYXQoJHZhbHVlLCAkcHJvcGVydHlQYXRoLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jdXJyZW50Q2hhaW5GYWlsZWQgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+dGhpc0NoYWluVHJ5QWxsID0gZmFsc2U7CiAgICAgICAgJGFzc2VydENsYXNzID0gJHRoaXMtPmFzc2VydENsYXNzOwogICAgICAgICR0aGlzLT5jdXJyZW50Q2hhaW4gPSAkYXNzZXJ0Q2xhc3M6OnRoYXQoJHZhbHVlLCAkZGVmYXVsdE1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRyeUFsbCgpCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+Y3VycmVudENoYWluKSB7CiAgICAgICAgICAgICR0aGlzLT5hbHdheXNUcnlBbGwgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnRoaXNDaGFpblRyeUFsbCA9IHRydWU7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCRtZXRob2QsICRhcmdzKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gJHRoaXMtPmFsd2F5c1RyeUFsbAogICAgICAgICAgICAmJiBmYWxzZSA9PT0gJHRoaXMtPnRoaXNDaGFpblRyeUFsbAogICAgICAgICAgICAmJiB0cnVlID09PSAkdGhpcy0+Y3VycmVudENoYWluRmFpbGVkCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFxjYWxsX3VzZXJfZnVuY19hcnJheShhcnJheSgkdGhpcy0+Y3VycmVudENoYWluLCAkbWV0aG9kKSwgJGFyZ3MpOwogICAgICAgIH0gY2F0Y2ggKEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkdGhpcy0+ZXJyb3JzW10gPSAkZTsKICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRDaGFpbkZhaWxlZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcTGF6eUFzc2VydGlvbkV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5Tm93KCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmVycm9ycykgewogICAgICAgICAgICB0aHJvdyBcY2FsbF91c2VyX2Z1bmMoYXJyYXkoJHRoaXMtPmV4Y2VwdGlvbkNsYXNzLCAnZnJvbUVycm9ycycpLCAkdGhpcy0+ZXJyb3JzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NOYW1lCiAgICAgKgogICAgICogQHJldHVybiAkdGhpcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0QXNzZXJ0Q2xhc3MoJGNsYXNzTmFtZSkKICAgIHsKICAgICAgICBpZiAoIVxpc19zdHJpbmcoJGNsYXNzTmFtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKCdBc3NlcnQgY2xhc3MgbmFtZSBtdXN0IGJlIHBhc3NlZCBhcyBhIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdBc3NlcnRcQXNzZXJ0JyAhPT0gJGNsYXNzTmFtZSAmJiAhXGlzX3N1YmNsYXNzX29mKCRjbGFzc05hbWUsICdBc3NlcnRcQXNzZXJ0JykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKCRjbGFzc05hbWUgLiAnIGlzIG5vdCAoYSBzdWJjbGFzcyBvZikgQXNzZXJ0XEFzc2VydCcpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmFzc2VydENsYXNzID0gJGNsYXNzTmFtZTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xhc3NOYW1lCiAgICAgKgogICAgICogQHJldHVybiAkdGhpcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RXhjZXB0aW9uQ2xhc3MoJGNsYXNzTmFtZSkKICAgIHsKICAgICAgICBpZiAoIVxpc19zdHJpbmcoJGNsYXNzTmFtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKCdFeGNlcHRpb24gY2xhc3MgbmFtZSBtdXN0IGJlIHBhc3NlZCBhcyBhIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdBc3NlcnRcTGF6eUFzc2VydGlvbkV4Y2VwdGlvbicgIT09ICRjbGFzc05hbWUgJiYgIVxpc19zdWJjbGFzc19vZigkY2xhc3NOYW1lLCAnQXNzZXJ0XExhenlBc3NlcnRpb25FeGNlcHRpb24nKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJGNsYXNzTmFtZSAuICcgaXMgbm90IChhIHN1YmNsYXNzIG9mKSBBc3NlcnRcTGF6eUFzc2VydGlvbkV4Y2VwdGlvbicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmV4Y2VwdGlvbkNsYXNzID0gJGNsYXNzTmFtZTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/LazyAssertionException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKY2xhc3MgTGF6eUFzc2VydGlvbkV4Y2VwdGlvbiBleHRlbmRzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgp7CiAgICAvKioKICAgICAqIEB2YXIgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uW10KICAgICAqLwogICAgcHJpdmF0ZSAkZXJyb3JzID0gYXJyYXkoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb25bXSAkZXJyb3JzCiAgICAgKgogICAgICogQHJldHVybiBzZWxmCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUVycm9ycyhhcnJheSAkZXJyb3JzKQogICAgewogICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoJ1RoZSBmb2xsb3dpbmcgJWQgYXNzZXJ0aW9ucyBmYWlsZWQ6JywgXGNvdW50KCRlcnJvcnMpKSAuICJcbiI7CgogICAgICAgICRpID0gMTsKICAgICAgICBmb3JlYWNoICgkZXJyb3JzIGFzICRlcnJvcikgewogICAgICAgICAgICAkbWVzc2FnZSAuPSBcc3ByaW50ZigiJWQpICVzOiAlc1xuIiwgJGkrKywgJGVycm9yLT5nZXRQcm9wZXJ0eVBhdGgoKSwgJGVycm9yLT5nZXRNZXNzYWdlKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzdGF0aWMoJG1lc3NhZ2UsICRlcnJvcnMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbWVzc2FnZSwgYXJyYXkgJGVycm9ycykKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAwLCBudWxsLCBudWxsKTsKCiAgICAgICAgJHRoaXMtPmVycm9ycyA9ICRlcnJvcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9yRXhjZXB0aW9ucygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lcnJvcnM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDExLTIwMTMsIEJlbmphbWluIEViZXJsZWkKQWxsIHJpZ2h0cyByZXNlcnZlZC4KClJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAptb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKCi0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzCiAgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K]]></data>
	</file>
	<file>
	  <filename>/vendor/bin/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/composer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_classmap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2NsYXNzbWFwLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSk7CiRiYXNlRGlyID0gZGlybmFtZSgkdmVuZG9yRGlyKTsKCnJldHVybiBhcnJheSgKICAgICdBcml0aG1ldGljRXJyb3InID0+ICR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL0FyaXRobWV0aWNFcnJvci5waHAnLAogICAgJ0Fzc2VydGlvbkVycm9yJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9Bc3NlcnRpb25FcnJvci5waHAnLAogICAgJ0RpdmlzaW9uQnlaZXJvRXJyb3InID0+ICR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL0RpdmlzaW9uQnlaZXJvRXJyb3IucGhwJywKICAgICdFcnJvcicgPT4gJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9SZXNvdXJjZXMvc3R1YnMvRXJyb3IucGhwJywKICAgICdQYXJzZUVycm9yJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9QYXJzZUVycm9yLnBocCcsCiAgICAnU2Vzc2lvblVwZGF0ZVRpbWVzdGFtcEhhbmRsZXJJbnRlcmZhY2UnID0+ICR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL1Nlc3Npb25VcGRhdGVUaW1lc3RhbXBIYW5kbGVySW50ZXJmYWNlLnBocCcsCiAgICAnVHlwZUVycm9yJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9UeXBlRXJyb3IucGhwJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_files.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2ZpbGVzLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSk7CiRiYXNlRGlyID0gZGlybmFtZSgkdmVuZG9yRGlyKTsKCnJldHVybiBhcnJheSgKICAgICdhNGVjYWVhZmI4Y2ZiMDA5YWQwZTA1MmM5MDM1NWU5OCcgPT4gJHZlbmRvckRpciAuICcvYmViZXJsZWkvYXNzZXJ0L2xpYi9Bc3NlcnQvZnVuY3Rpb25zLnBocCcsCiAgICAnNTI1NWMzOGEwZmFlYmE4Njc2NzFiNjFkZmRhNmQ4NjQnID0+ICR2ZW5kb3JEaXIgLiAnL3BhcmFnb25pZS9yYW5kb21fY29tcGF0L2xpYi9yYW5kb20ucGhwJywKICAgICcwZTZkN2JmNGE1ODExYmZhNWNmNDBjNWNjZDZmYWU2YScgPT4gJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZy9ib290c3RyYXAucGhwJywKICAgICdjOTY0ZWUwZWRlZGYyOGM5NmViZDlkYjUwOTllZjkxMCcgPT4gJHZlbmRvckRpciAuICcvZ3V6emxlaHR0cC9wcm9taXNlcy9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKICAgICdhMGVkYzgzMDljYzVlMWQ2MGUzMDQ3YjVkZjZiNzA1MicgPT4gJHZlbmRvckRpciAuICcvZ3V6emxlaHR0cC9wc3I3L3NyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAnLAogICAgJzAyM2QyN2RjYTgwNjZlZjI5ZTY3MzkzMzVlYTczYmFkJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL2Jvb3RzdHJhcC5waHAnLAogICAgJzM3YTNkYzUxMTFmZThmNzA3YWI0YzEzMmVmMWRiYzYyJyA9PiAkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_namespaces.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX25hbWVzcGFjZXMucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAopOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_psr4.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3BzcjQucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKGRpcm5hbWUoX19GSUxFX18pKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJ1N5bWZvbnlcXFBvbHlmaWxsXFxQaHA3MFxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwJyksCiAgICAnU3ltZm9ueVxcUG9seWZpbGxcXE1ic3RyaW5nXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcnKSwKICAgICdQc3JcXEh0dHBcXE1lc3NhZ2VcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvcHNyL2h0dHAtbWVzc2FnZS9zcmMnKSwKICAgICdQc3JcXENhY2hlXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Bzci9jYWNoZS9zcmMnKSwKICAgICdNaW5pc2hsaW5rXFxXZWJQdXNoXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL21pbmlzaGxpbmsvd2ViLXB1c2gvc3JjJyksCiAgICAnTWRhbnRlclxcRWNjXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL21kYW50ZXIvZWNjL3NyYycpLAogICAgJ0pvc2VcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvc3BvbWt5LWxhYnMvam9zZS9zcmMnKSwKICAgICdHdXp6bGVIdHRwXFxQc3I3XFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL2d1enpsZWh0dHAvcHNyNy9zcmMnKSwKICAgICdHdXp6bGVIdHRwXFxQcm9taXNlXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL2d1enpsZWh0dHAvcHJvbWlzZXMvc3JjJyksCiAgICAnR3V6emxlSHR0cFxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMnKSwKICAgICdGR1xcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9mZ3Jvc3NlL3BocGFzbjEvbGliJyksCiAgICAnQmFzZTY0VXJsXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Nwb21reS1sYWJzL2Jhc2U2NHVybC9zcmMnKSwKICAgICdBc3NlcnRcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvYmViZXJsZWkvYXNzZXJ0L2xpYi9Bc3NlcnQnKSwKICAgICdBRVNLV1xcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9zcG9ta3ktbGFicy9hZXMta2V5LXdyYXAvc3JjJyksCiAgICAnQUVTR0NNXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Nwb21reS1sYWJzL3BocC1hZXMtZ2NtL3NyYycpLAopOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_real.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3JlYWwucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCmNsYXNzIENvbXBvc2VyQXV0b2xvYWRlckluaXQyMTk0N2QwYjE2NWViODAxMzg0MWU0MmE0NDhhYTJjNwp7CiAgICBwcml2YXRlIHN0YXRpYyAkbG9hZGVyOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZENsYXNzTG9hZGVyKCRjbGFzcykKICAgIHsKICAgICAgICBpZiAoJ0NvbXBvc2VyXEF1dG9sb2FkXENsYXNzTG9hZGVyJyA9PT0gJGNsYXNzKSB7CiAgICAgICAgICAgIHJlcXVpcmUgX19ESVJfXyAuICcvQ2xhc3NMb2FkZXIucGhwJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRMb2FkZXIoKQogICAgewogICAgICAgIGlmIChudWxsICE9PSBzZWxmOjokbG9hZGVyKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokbG9hZGVyOwogICAgICAgIH0KCiAgICAgICAgc3BsX2F1dG9sb2FkX3JlZ2lzdGVyKGFycmF5KCdDb21wb3NlckF1dG9sb2FkZXJJbml0MjE5NDdkMGIxNjVlYjgwMTM4NDFlNDJhNDQ4YWEyYzcnLCAnbG9hZENsYXNzTG9hZGVyJyksIHRydWUsIHRydWUpOwogICAgICAgIHNlbGY6OiRsb2FkZXIgPSAkbG9hZGVyID0gbmV3IFxDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcigpOwogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCdDb21wb3NlckF1dG9sb2FkZXJJbml0MjE5NDdkMGIxNjVlYjgwMTM4NDFlNDJhNDQ4YWEyYzcnLCAnbG9hZENsYXNzTG9hZGVyJykpOwoKICAgICAgICAkdXNlU3RhdGljTG9hZGVyID0gUEhQX1ZFUlNJT05fSUQgPj0gNTA2MDAgJiYgIWRlZmluZWQoJ0hIVk1fVkVSU0lPTicpICYmICghZnVuY3Rpb25fZXhpc3RzKCd6ZW5kX2xvYWRlcl9maWxlX2VuY29kZWQnKSB8fCAhemVuZF9sb2FkZXJfZmlsZV9lbmNvZGVkKCkpOwogICAgICAgIGlmICgkdXNlU3RhdGljTG9hZGVyKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9hdXRvbG9hZF9zdGF0aWMucGhwJzsKCiAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jKFxDb21wb3NlclxBdXRvbG9hZFxDb21wb3NlclN0YXRpY0luaXQyMTk0N2QwYjE2NWViODAxMzg0MWU0MmE0NDhhYTJjNzo6Z2V0SW5pdGlhbGl6ZXIoJGxvYWRlcikpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRtYXAgPSByZXF1aXJlIF9fRElSX18gLiAnL2F1dG9sb2FkX25hbWVzcGFjZXMucGhwJzsKICAgICAgICAgICAgZm9yZWFjaCAoJG1hcCBhcyAkbmFtZXNwYWNlID0+ICRwYXRoKSB7CiAgICAgICAgICAgICAgICAkbG9hZGVyLT5zZXQoJG5hbWVzcGFjZSwgJHBhdGgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbWFwID0gcmVxdWlyZSBfX0RJUl9fIC4gJy9hdXRvbG9hZF9wc3I0LnBocCc7CiAgICAgICAgICAgIGZvcmVhY2ggKCRtYXAgYXMgJG5hbWVzcGFjZSA9PiAkcGF0aCkgewogICAgICAgICAgICAgICAgJGxvYWRlci0+c2V0UHNyNCgkbmFtZXNwYWNlLCAkcGF0aCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjbGFzc01hcCA9IHJlcXVpcmUgX19ESVJfXyAuICcvYXV0b2xvYWRfY2xhc3NtYXAucGhwJzsKICAgICAgICAgICAgaWYgKCRjbGFzc01hcCkgewogICAgICAgICAgICAgICAgJGxvYWRlci0+YWRkQ2xhc3NNYXAoJGNsYXNzTWFwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGxvYWRlci0+cmVnaXN0ZXIodHJ1ZSk7CgogICAgICAgIGlmICgkdXNlU3RhdGljTG9hZGVyKSB7CiAgICAgICAgICAgICRpbmNsdWRlRmlsZXMgPSBDb21wb3NlclxBdXRvbG9hZFxDb21wb3NlclN0YXRpY0luaXQyMTk0N2QwYjE2NWViODAxMzg0MWU0MmE0NDhhYTJjNzo6JGZpbGVzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpbmNsdWRlRmlsZXMgPSByZXF1aXJlIF9fRElSX18gLiAnL2F1dG9sb2FkX2ZpbGVzLnBocCc7CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKCRpbmNsdWRlRmlsZXMgYXMgJGZpbGVJZGVudGlmaWVyID0+ICRmaWxlKSB7CiAgICAgICAgICAgIGNvbXBvc2VyUmVxdWlyZTIxOTQ3ZDBiMTY1ZWI4MDEzODQxZTQyYTQ0OGFhMmM3KCRmaWxlSWRlbnRpZmllciwgJGZpbGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsb2FkZXI7CiAgICB9Cn0KCmZ1bmN0aW9uIGNvbXBvc2VyUmVxdWlyZTIxOTQ3ZDBiMTY1ZWI4MDEzODQxZTQyYTQ0OGFhMmM3KCRmaWxlSWRlbnRpZmllciwgJGZpbGUpCnsKICAgIGlmIChlbXB0eSgkR0xPQkFMU1snX19jb21wb3Nlcl9hdXRvbG9hZF9maWxlcyddWyRmaWxlSWRlbnRpZmllcl0pKSB7CiAgICAgICAgcmVxdWlyZSAkZmlsZTsKCiAgICAgICAgJEdMT0JBTFNbJ19fY29tcG9zZXJfYXV0b2xvYWRfZmlsZXMnXVskZmlsZUlkZW50aWZpZXJdID0gdHJ1ZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_static.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3N0YXRpYy5waHAgQGdlbmVyYXRlZCBieSBDb21wb3NlcgoKbmFtZXNwYWNlIENvbXBvc2VyXEF1dG9sb2FkOwoKY2xhc3MgQ29tcG9zZXJTdGF0aWNJbml0MjE5NDdkMGIxNjVlYjgwMTM4NDFlNDJhNDQ4YWEyYzcKewogICAgcHVibGljIHN0YXRpYyAkZmlsZXMgPSBhcnJheSAoCiAgICAgICAgJ2E0ZWNhZWFmYjhjZmIwMDlhZDBlMDUyYzkwMzU1ZTk4JyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2JlYmVybGVpL2Fzc2VydC9saWIvQXNzZXJ0L2Z1bmN0aW9ucy5waHAnLAogICAgICAgICc1MjU1YzM4YTBmYWViYTg2NzY3MWI2MWRmZGE2ZDg2NCcgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9wYXJhZ29uaWUvcmFuZG9tX2NvbXBhdC9saWIvcmFuZG9tLnBocCcsCiAgICAgICAgJzBlNmQ3YmY0YTU4MTFiZmE1Y2Y0MGM1Y2NkNmZhZTZhJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcvYm9vdHN0cmFwLnBocCcsCiAgICAgICAgJ2M5NjRlZTBlZGVkZjI4Yzk2ZWJkOWRiNTA5OWVmOTEwJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvcHJvbWlzZXMvc3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCcsCiAgICAgICAgJ2EwZWRjODMwOWNjNWUxZDYwZTMwNDdiNWRmNmI3MDUyJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvcHNyNy9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKICAgICAgICAnMDIzZDI3ZGNhODA2NmVmMjllNjczOTMzNWVhNzNiYWQnID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9ib290c3RyYXAucGhwJywKICAgICAgICAnMzdhM2RjNTExMWZlOGY3MDdhYjRjMTMyZWYxZGJjNjInID0+IF9fRElSX18gLiAnLy4uJyAuICcvZ3V6emxlaHR0cC9ndXp6bGUvc3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCcsCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgJHByZWZpeExlbmd0aHNQc3I0ID0gYXJyYXkgKAogICAgICAgICdTJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcUGhwNzBcXCcgPT4gMjMsCiAgICAgICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCcgPT4gMjYsCiAgICAgICAgKSwKICAgICAgICAnUCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+IDE3LAogICAgICAgICAgICAnUHNyXFxDYWNoZVxcJyA9PiAxMCwKICAgICAgICApLAogICAgICAgICdNJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdNaW5pc2hsaW5rXFxXZWJQdXNoXFwnID0+IDE5LAogICAgICAgICAgICAnTWRhbnRlclxcRWNjXFwnID0+IDEyLAogICAgICAgICksCiAgICAgICAgJ0onID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ0pvc2VcXCcgPT4gNSwKICAgICAgICApLAogICAgICAgICdHJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdHdXp6bGVIdHRwXFxQc3I3XFwnID0+IDE2LAogICAgICAgICAgICAnR3V6emxlSHR0cFxcUHJvbWlzZVxcJyA9PiAxOSwKICAgICAgICAgICAgJ0d1enpsZUh0dHBcXCcgPT4gMTEsCiAgICAgICAgKSwKICAgICAgICAnRicgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnRkdcXCcgPT4gMywKICAgICAgICApLAogICAgICAgICdCJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdCYXNlNjRVcmxcXCcgPT4gMTAsCiAgICAgICAgKSwKICAgICAgICAnQScgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnQXNzZXJ0XFwnID0+IDcsCiAgICAgICAgICAgICdBRVNLV1xcJyA9PiA2LAogICAgICAgICAgICAnQUVTR0NNXFwnID0+IDcsCiAgICAgICAgKSwKICAgICk7CgogICAgcHVibGljIHN0YXRpYyAkcHJlZml4RGlyc1BzcjQgPSBhcnJheSAoCiAgICAgICAgJ1N5bWZvbnlcXFBvbHlmaWxsXFxQaHA3MFxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwJywKICAgICAgICApLAogICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZycsCiAgICAgICAgKSwKICAgICAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3Bzci9odHRwLW1lc3NhZ2Uvc3JjJywKICAgICAgICApLAogICAgICAgICdQc3JcXENhY2hlXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3Bzci9jYWNoZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ01pbmlzaGxpbmtcXFdlYlB1c2hcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvbWluaXNobGluay93ZWItcHVzaC9zcmMnLAogICAgICAgICksCiAgICAgICAgJ01kYW50ZXJcXEVjY1xcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9tZGFudGVyL2VjYy9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0pvc2VcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3BvbWt5LWxhYnMvam9zZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0d1enpsZUh0dHBcXFBzcjdcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvZ3V6emxlaHR0cC9wc3I3L3NyYycsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcUHJvbWlzZVxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9ndXp6bGVodHRwL3Byb21pc2VzL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0ZHXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2Zncm9zc2UvcGhwYXNuMS9saWInLAogICAgICAgICksCiAgICAgICAgJ0Jhc2U2NFVybFxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zcG9ta3ktbGFicy9iYXNlNjR1cmwvc3JjJywKICAgICAgICApLAogICAgICAgICdBc3NlcnRcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvYmViZXJsZWkvYXNzZXJ0L2xpYi9Bc3NlcnQnLAogICAgICAgICksCiAgICAgICAgJ0FFU0tXXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3Nwb21reS1sYWJzL2Flcy1rZXktd3JhcC9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0FFU0dDTVxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zcG9ta3ktbGFicy9waHAtYWVzLWdjbS9zcmMnLAogICAgICAgICksCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgJGNsYXNzTWFwID0gYXJyYXkgKAogICAgICAgICdBcml0aG1ldGljRXJyb3InID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9SZXNvdXJjZXMvc3R1YnMvQXJpdGhtZXRpY0Vycm9yLnBocCcsCiAgICAgICAgJ0Fzc2VydGlvbkVycm9yJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL0Fzc2VydGlvbkVycm9yLnBocCcsCiAgICAgICAgJ0RpdmlzaW9uQnlaZXJvRXJyb3InID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9SZXNvdXJjZXMvc3R1YnMvRGl2aXNpb25CeVplcm9FcnJvci5waHAnLAogICAgICAgICdFcnJvcicgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9FcnJvci5waHAnLAogICAgICAgICdQYXJzZUVycm9yJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL1BhcnNlRXJyb3IucGhwJywKICAgICAgICAnU2Vzc2lvblVwZGF0ZVRpbWVzdGFtcEhhbmRsZXJJbnRlcmZhY2UnID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9SZXNvdXJjZXMvc3R1YnMvU2Vzc2lvblVwZGF0ZVRpbWVzdGFtcEhhbmRsZXJJbnRlcmZhY2UucGhwJywKICAgICAgICAnVHlwZUVycm9yJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL1R5cGVFcnJvci5waHAnLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluaXRpYWxpemVyKENsYXNzTG9hZGVyICRsb2FkZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIFxDbG9zdXJlOjpiaW5kKGZ1bmN0aW9uICgpIHVzZSAoJGxvYWRlcikgewogICAgICAgICAgICAkbG9hZGVyLT5wcmVmaXhMZW5ndGhzUHNyNCA9IENvbXBvc2VyU3RhdGljSW5pdDIxOTQ3ZDBiMTY1ZWI4MDEzODQxZTQyYTQ0OGFhMmM3OjokcHJlZml4TGVuZ3Roc1BzcjQ7CiAgICAgICAgICAgICRsb2FkZXItPnByZWZpeERpcnNQc3I0ID0gQ29tcG9zZXJTdGF0aWNJbml0MjE5NDdkMGIxNjVlYjgwMTM4NDFlNDJhNDQ4YWEyYzc6OiRwcmVmaXhEaXJzUHNyNDsKICAgICAgICAgICAgJGxvYWRlci0+Y2xhc3NNYXAgPSBDb21wb3NlclN0YXRpY0luaXQyMTk0N2QwYjE2NWViODAxMzg0MWU0MmE0NDhhYTJjNzo6JGNsYXNzTWFwOwoKICAgICAgICB9LCBudWxsLCBDbGFzc0xvYWRlcjo6Y2xhc3MpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/ClassLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXJcQXV0b2xvYWQ7CgovKioKICogQ2xhc3NMb2FkZXIgaW1wbGVtZW50cyBhIFBTUi0wLCBQU1ItNCBhbmQgY2xhc3NtYXAgY2xhc3MgbG9hZGVyLgogKgogKiAgICAgJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoKTsKICoKICogICAgIC8vIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBuYW1lc3BhY2VzCiAqICAgICAkbG9hZGVyLT5hZGQoJ1N5bWZvbnlcQ29tcG9uZW50JywgX19ESVJfXy4nL2NvbXBvbmVudCcpOwogKiAgICAgJGxvYWRlci0+YWRkKCdTeW1mb255JywgICAgICAgICAgIF9fRElSX18uJy9mcmFtZXdvcmsnKTsKICoKICogICAgIC8vIGFjdGl2YXRlIHRoZSBhdXRvbG9hZGVyCiAqICAgICAkbG9hZGVyLT5yZWdpc3RlcigpOwogKgogKiAgICAgLy8gdG8gZW5hYmxlIHNlYXJjaGluZyB0aGUgaW5jbHVkZSBwYXRoIChlZy4gZm9yIFBFQVIgcGFja2FnZXMpCiAqICAgICAkbG9hZGVyLT5zZXRVc2VJbmNsdWRlUGF0aCh0cnVlKTsKICoKICogSW4gdGhpcyBleGFtcGxlLCBpZiB5b3UgdHJ5IHRvIHVzZSBhIGNsYXNzIGluIHRoZSBTeW1mb255XENvbXBvbmVudAogKiBuYW1lc3BhY2Ugb3Igb25lIG9mIGl0cyBjaGlsZHJlbiAoU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZSBmb3IgaW5zdGFuY2UpLAogKiB0aGUgYXV0b2xvYWRlciB3aWxsIGZpcnN0IGxvb2sgZm9yIHRoZSBjbGFzcyB1bmRlciB0aGUgY29tcG9uZW50LwogKiBkaXJlY3RvcnksIGFuZCBpdCB3aWxsIHRoZW4gZmFsbGJhY2sgdG8gdGhlIGZyYW1ld29yay8gZGlyZWN0b3J5IGlmIG5vdAogKiBmb3VuZCBiZWZvcmUgZ2l2aW5nIHVwLgogKgogKiBUaGlzIGNsYXNzIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlIFN5bWZvbnkgVW5pdmVyc2FsQ2xhc3NMb2FkZXIuCiAqCiAqIEBhdXRob3IgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKiBAYXV0aG9yIEpvcmRpIEJvZ2dpYW5vIDxqLmJvZ2dpYW5vQHNlbGQuYmU+CiAqIEBzZWUgICAgaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTAvCiAqIEBzZWUgICAgaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTQvCiAqLwpjbGFzcyBDbGFzc0xvYWRlcgp7CiAgICAvLyBQU1ItNAogICAgcHJpdmF0ZSAkcHJlZml4TGVuZ3Roc1BzcjQgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkcHJlZml4RGlyc1BzcjQgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkZmFsbGJhY2tEaXJzUHNyNCA9IGFycmF5KCk7CgogICAgLy8gUFNSLTAKICAgIHByaXZhdGUgJHByZWZpeGVzUHNyMCA9IGFycmF5KCk7CiAgICBwcml2YXRlICRmYWxsYmFja0RpcnNQc3IwID0gYXJyYXkoKTsKCiAgICBwcml2YXRlICR1c2VJbmNsdWRlUGF0aCA9IGZhbHNlOwogICAgcHJpdmF0ZSAkY2xhc3NNYXAgPSBhcnJheSgpOwogICAgcHJpdmF0ZSAkY2xhc3NNYXBBdXRob3JpdGF0aXZlID0gZmFsc2U7CiAgICBwcml2YXRlICRtaXNzaW5nQ2xhc3NlcyA9IGFycmF5KCk7CiAgICBwcml2YXRlICRhcGN1UHJlZml4OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmVmaXhlcygpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+cHJlZml4ZXNQc3IwKSkgewogICAgICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmNfYXJyYXkoJ2FycmF5X21lcmdlJywgJHRoaXMtPnByZWZpeGVzUHNyMCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlZml4ZXNQc3I0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByZWZpeERpcnNQc3I0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGYWxsYmFja0RpcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RmFsbGJhY2tEaXJzUHNyNCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGFzc01hcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY2xhc3NNYXAgQ2xhc3MgdG8gZmlsZW5hbWUgbWFwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDbGFzc01hcChhcnJheSAkY2xhc3NNYXApCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jbGFzc01hcCkgewogICAgICAgICAgICAkdGhpcy0+Y2xhc3NNYXAgPSBhcnJheV9tZXJnZSgkdGhpcy0+Y2xhc3NNYXAsICRjbGFzc01hcCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmNsYXNzTWFwID0gJGNsYXNzTWFwOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyBhIHNldCBvZiBQU1ItMCBkaXJlY3RvcmllcyBmb3IgYSBnaXZlbiBwcmVmaXgsIGVpdGhlcgogICAgICogYXBwZW5kaW5nIG9yIHByZXBlbmRpbmcgdG8gdGhlIG9uZXMgcHJldmlvdXNseSBzZXQgZm9yIHRoaXMgcHJlZml4LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHByZWZpeCAgVGhlIHByZWZpeAogICAgICogQHBhcmFtIGFycmF5fHN0cmluZyAkcGF0aHMgICBUaGUgUFNSLTAgcm9vdCBkaXJlY3RvcmllcwogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAkcHJlcGVuZCBXaGV0aGVyIHRvIHByZXBlbmQgdGhlIGRpcmVjdG9yaWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoJHByZWZpeCwgJHBhdGhzLCAkcHJlcGVuZCA9IGZhbHNlKQogICAgewogICAgICAgIGlmICghJHByZWZpeCkgewogICAgICAgICAgICBpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgKGFycmF5KSAkcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjAKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwLAogICAgICAgICAgICAgICAgICAgIChhcnJheSkgJHBhdGhzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkZmlyc3QgPSAkcHJlZml4WzBdOwogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdKSkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSAoYXJyYXkpICRwYXRoczsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgKGFycmF5KSAkcGF0aHMsCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XSwKICAgICAgICAgICAgICAgIChhcnJheSkgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi00IGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIG5hbWVzcGFjZSwgZWl0aGVyCiAgICAgKiBhcHBlbmRpbmcgb3IgcHJlcGVuZGluZyB0byB0aGUgb25lcyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAkcHJlZml4ICBUaGUgcHJlZml4L25hbWVzcGFjZSwgd2l0aCB0cmFpbGluZyAnXFwnCiAgICAgKiBAcGFyYW0gYXJyYXl8c3RyaW5nICRwYXRocyAgIFRoZSBQU1ItNCBiYXNlIGRpcmVjdG9yaWVzCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFBzcjQoJHByZWZpeCwgJHBhdGhzLCAkcHJlcGVuZCA9IGZhbHNlKQogICAgewogICAgICAgIGlmICghJHByZWZpeCkgewogICAgICAgICAgICAvLyBSZWdpc3RlciBkaXJlY3RvcmllcyBmb3IgdGhlIHJvb3QgbmFtZXNwYWNlLgogICAgICAgICAgICBpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0ID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgKGFycmF5KSAkcGF0aHMsCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNCA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0LAogICAgICAgICAgICAgICAgICAgIChhcnJheSkgJHBhdGhzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCFpc3NldCgkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0pKSB7CiAgICAgICAgICAgIC8vIFJlZ2lzdGVyIGRpcmVjdG9yaWVzIGZvciBhIG5ldyBuYW1lc3BhY2UuCiAgICAgICAgICAgICRsZW5ndGggPSBzdHJsZW4oJHByZWZpeCk7CiAgICAgICAgICAgIGlmICgnXFwnICE9PSAkcHJlZml4WyRsZW5ndGggLSAxXSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIkEgbm9uLWVtcHR5IFBTUi00IHByZWZpeCBtdXN0IGVuZCB3aXRoIGEgbmFtZXNwYWNlIHNlcGFyYXRvci4iKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+cHJlZml4TGVuZ3Roc1BzcjRbJHByZWZpeFswXV1bJHByZWZpeF0gPSAkbGVuZ3RoOwogICAgICAgICAgICAkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0gPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2VpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgLy8gUHJlcGVuZCBkaXJlY3RvcmllcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIG5hbWVzcGFjZS4KICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAoYXJyYXkpICRwYXRocywKICAgICAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XQogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEFwcGVuZCBkaXJlY3RvcmllcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIG5hbWVzcGFjZS4KICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0sCiAgICAgICAgICAgICAgICAoYXJyYXkpICRwYXRocwogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyBhIHNldCBvZiBQU1ItMCBkaXJlY3RvcmllcyBmb3IgYSBnaXZlbiBwcmVmaXgsCiAgICAgKiByZXBsYWNpbmcgYW55IG90aGVycyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBwcmVmaXguCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAkcHJlZml4IFRoZSBwcmVmaXgKICAgICAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJHBhdGhzICBUaGUgUFNSLTAgYmFzZSBkaXJlY3RvcmllcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0KCRwcmVmaXgsICRwYXRocykKICAgIHsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjAgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRwcmVmaXhbMF1dWyRwcmVmaXhdID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi00IGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIG5hbWVzcGFjZSwKICAgICAqIHJlcGxhY2luZyBhbnkgb3RoZXJzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIG5hbWVzcGFjZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICRwcmVmaXggVGhlIHByZWZpeC9uYW1lc3BhY2UsIHdpdGggdHJhaWxpbmcgJ1xcJwogICAgICogQHBhcmFtIGFycmF5fHN0cmluZyAkcGF0aHMgIFRoZSBQU1ItNCBiYXNlIGRpcmVjdG9yaWVzCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRQc3I0KCRwcmVmaXgsICRwYXRocykKICAgIHsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCRwcmVmaXgpOwogICAgICAgICAgICBpZiAoJ1xcJyAhPT0gJHByZWZpeFskbGVuZ3RoIC0gMV0pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJBIG5vbi1lbXB0eSBQU1ItNCBwcmVmaXggbXVzdCBlbmQgd2l0aCBhIG5hbWVzcGFjZSBzZXBhcmF0b3IuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnByZWZpeExlbmd0aHNQc3I0WyRwcmVmaXhbMF1dWyRwcmVmaXhdID0gJGxlbmd0aDsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVHVybnMgb24gc2VhcmNoaW5nIHRoZSBpbmNsdWRlIHBhdGggZm9yIGNsYXNzIGZpbGVzLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICR1c2VJbmNsdWRlUGF0aAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VXNlSW5jbHVkZVBhdGgoJHVzZUluY2x1ZGVQYXRoKQogICAgewogICAgICAgICR0aGlzLT51c2VJbmNsdWRlUGF0aCA9ICR1c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBhdXRvbG9hZGVyIHVzZXMgdGhlIGluY2x1ZGUgcGF0aCB0byBjaGVjawogICAgICogZm9yIGNsYXNzZXMuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VJbmNsdWRlUGF0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFR1cm5zIG9mZiBzZWFyY2hpbmcgdGhlIHByZWZpeCBhbmQgZmFsbGJhY2sgZGlyZWN0b3JpZXMgZm9yIGNsYXNzZXMKICAgICAqIHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGNsYXNzIG1hcC4KICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbCAkY2xhc3NNYXBBdXRob3JpdGF0aXZlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzc01hcEF1dGhvcml0YXRpdmUoJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlID0gJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNob3VsZCBjbGFzcyBsb29rdXAgZmFpbCBpZiBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgY2xhc3MgbWFwPwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDbGFzc01hcEF1dGhvcml0YXRpdmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlOwogICAgfQoKICAgIC8qKgogICAgICogQVBDdSBwcmVmaXggdG8gdXNlIHRvIGNhY2hlIGZvdW5kL25vdC1mb3VuZCBjbGFzc2VzLCBpZiB0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRhcGN1UHJlZml4CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBcGN1UHJlZml4KCRhcGN1UHJlZml4KQogICAgewogICAgICAgICR0aGlzLT5hcGN1UHJlZml4ID0gZnVuY3Rpb25fZXhpc3RzKCdhcGN1X2ZldGNoJykgJiYgaW5pX2dldCgnYXBjLmVuYWJsZWQnKSA/ICRhcGN1UHJlZml4IDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBBUEN1IHByZWZpeCBpbiB1c2UsIG9yIG51bGwgaWYgQVBDdSBjYWNoaW5nIGlzIG5vdCBlbmFibGVkLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFwY3VQcmVmaXgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXBjdVByZWZpeDsKICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyB0aGlzIGluc3RhbmNlIGFzIGFuIGF1dG9sb2FkZXIuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHByZXBlbmQgV2hldGhlciB0byBwcmVwZW5kIHRoZSBhdXRvbG9hZGVyIG9yIG5vdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXIoJHByZXBlbmQgPSBmYWxzZSkKICAgIHsKICAgICAgICBzcGxfYXV0b2xvYWRfcmVnaXN0ZXIoYXJyYXkoJHRoaXMsICdsb2FkQ2xhc3MnKSwgdHJ1ZSwgJHByZXBlbmQpOwogICAgfQoKICAgIC8qKgogICAgICogVW5yZWdpc3RlcnMgdGhpcyBpbnN0YW5jZSBhcyBhbiBhdXRvbG9hZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5yZWdpc3RlcigpCiAgICB7CiAgICAgICAgc3BsX2F1dG9sb2FkX3VucmVnaXN0ZXIoYXJyYXkoJHRoaXMsICdsb2FkQ2xhc3MnKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2FkcyB0aGUgZ2l2ZW4gY2xhc3Mgb3IgaW50ZXJmYWNlLgogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICRjbGFzcyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MKICAgICAqIEByZXR1cm4gYm9vbHxudWxsIFRydWUgaWYgbG9hZGVkLCBudWxsIG90aGVyd2lzZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZENsYXNzKCRjbGFzcykKICAgIHsKICAgICAgICBpZiAoJGZpbGUgPSAkdGhpcy0+ZmluZEZpbGUoJGNsYXNzKSkgewogICAgICAgICAgICBpbmNsdWRlRmlsZSgkZmlsZSk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyB0aGUgcGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgY2xhc3MgaXMgZGVmaW5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSBUaGUgcGF0aCBpZiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaW5kRmlsZSgkY2xhc3MpCiAgICB7CiAgICAgICAgLy8gY2xhc3MgbWFwIGxvb2t1cAogICAgICAgIGlmIChpc3NldCgkdGhpcy0+Y2xhc3NNYXBbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcFskY2xhc3NdOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPmNsYXNzTWFwQXV0aG9yaXRhdGl2ZSB8fCBpc3NldCgkdGhpcy0+bWlzc2luZ0NsYXNzZXNbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgJGZpbGUgPSBhcGN1X2ZldGNoKCR0aGlzLT5hcGN1UHJlZml4LiRjbGFzcywgJGhpdCk7CiAgICAgICAgICAgIGlmICgkaGl0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRmaWxlID0gJHRoaXMtPmZpbmRGaWxlV2l0aEV4dGVuc2lvbigkY2xhc3MsICcucGhwJyk7CgogICAgICAgIC8vIFNlYXJjaCBmb3IgSGFjayBmaWxlcyBpZiB3ZSBhcmUgcnVubmluZyBvbiBISFZNCiAgICAgICAgaWYgKGZhbHNlID09PSAkZmlsZSAmJiBkZWZpbmVkKCdISFZNX1ZFUlNJT04nKSkgewogICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5maW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAnLmhoJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgYXBjdV9hZGQoJHRoaXMtPmFwY3VQcmVmaXguJGNsYXNzLCAkZmlsZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmFsc2UgPT09ICRmaWxlKSB7CiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoYXQgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgICAgJHRoaXMtPm1pc3NpbmdDbGFzc2VzWyRjbGFzc10gPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWxlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZEZpbGVXaXRoRXh0ZW5zaW9uKCRjbGFzcywgJGV4dCkKICAgIHsKICAgICAgICAvLyBQU1ItNCBsb29rdXAKICAgICAgICAkbG9naWNhbFBhdGhQc3I0ID0gc3RydHIoJGNsYXNzLCAnXFwnLCBESVJFQ1RPUllfU0VQQVJBVE9SKSAuICRleHQ7CgogICAgICAgICRmaXJzdCA9ICRjbGFzc1swXTsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeExlbmd0aHNQc3I0WyRmaXJzdF0pKSB7CiAgICAgICAgICAgICRzdWJQYXRoID0gJGNsYXNzOwogICAgICAgICAgICB3aGlsZSAoZmFsc2UgIT09ICRsYXN0UG9zID0gc3RycnBvcygkc3ViUGF0aCwgJ1xcJykpIHsKICAgICAgICAgICAgICAgICRzdWJQYXRoID0gc3Vic3RyKCRzdWJQYXRoLCAwLCAkbGFzdFBvcyk7CiAgICAgICAgICAgICAgICAkc2VhcmNoID0gJHN1YlBhdGguJ1xcJzsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHNlYXJjaF0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhdGhFbmQgPSBESVJFQ1RPUllfU0VQQVJBVE9SIC4gc3Vic3RyKCRsb2dpY2FsUGF0aFBzcjQsICRsYXN0UG9zICsgMSk7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnByZWZpeERpcnNQc3I0WyRzZWFyY2hdIGFzICRkaXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuICRwYXRoRW5kKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItNCBmYWxsYmFjayBkaXJzCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgYXMgJGRpcikgewogICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRsb2dpY2FsUGF0aFBzcjQpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFBTUi0wIGxvb2t1cAogICAgICAgIGlmIChmYWxzZSAhPT0gJHBvcyA9IHN0cnJwb3MoJGNsYXNzLCAnXFwnKSkgewogICAgICAgICAgICAvLyBuYW1lc3BhY2VkIGNsYXNzIG5hbWUKICAgICAgICAgICAgJGxvZ2ljYWxQYXRoUHNyMCA9IHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAwLCAkcG9zICsgMSkKICAgICAgICAgICAgICAgIC4gc3RydHIoc3Vic3RyKCRsb2dpY2FsUGF0aFBzcjQsICRwb3MgKyAxKSwgJ18nLCBESVJFQ1RPUllfU0VQQVJBVE9SKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBQRUFSLWxpa2UgY2xhc3MgbmFtZQogICAgICAgICAgICAkbG9naWNhbFBhdGhQc3IwID0gc3RydHIoJGNsYXNzLCAnXycsIERJUkVDVE9SWV9TRVBBUkFUT1IpIC4gJGV4dDsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF0pKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XSBhcyAkcHJlZml4ID0+ICRkaXJzKSB7CiAgICAgICAgICAgICAgICBpZiAoMCA9PT0gc3RycG9zKCRjbGFzcywgJHByZWZpeCkpIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZGlycyBhcyAkZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTAgZmFsbGJhY2sgZGlycwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mYWxsYmFja0RpcnNQc3IwIGFzICRkaXIpIHsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbG9naWNhbFBhdGhQc3IwKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItMCBpbmNsdWRlIHBhdGhzLgogICAgICAgIGlmICgkdGhpcy0+dXNlSW5jbHVkZVBhdGggJiYgJGZpbGUgPSBzdHJlYW1fcmVzb2x2ZV9pbmNsdWRlX3BhdGgoJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9CgovKioKICogU2NvcGUgaXNvbGF0ZWQgaW5jbHVkZS4KICoKICogUHJldmVudHMgYWNjZXNzIHRvICR0aGlzL3NlbGYgZnJvbSBpbmNsdWRlZCBmaWxlcy4KICovCmZ1bmN0aW9uIGluY2x1ZGVGaWxlKCRmaWxlKQp7CiAgICBpbmNsdWRlICRmaWxlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/installed.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WwogICAgewogICAgICAgICJuYW1lIjogImJlYmVybGVpL2Fzc2VydCIsCiAgICAgICAgInZlcnNpb24iOiAidjIuOS42IiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuOS42LjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JlYmVybGVpL2Fzc2VydC5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImVjOWU0Y2YwYjYzODkwZWRjZTg0NGVlMzkyMmUyYjk1YTUyNmU5MzYiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2JlYmVybGVpL2Fzc2VydC96aXBiYWxsL2VjOWU0Y2YwYjYzODkwZWRjZTg0NGVlMzkyMmUyYjk1YTUyNmU5MzYiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImVjOWU0Y2YwYjYzODkwZWRjZTg0NGVlMzkyMmUyYjk1YTUyNmU5MzYiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAicGhwIjogIj49NS4zIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xLjEiLAogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjguMzV8XjUuNyIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTgtMDYtMTFUMTc6MTU6MjUrMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkFzc2VydFxcIjogImxpYi9Bc3NlcnQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICJsaWIvQXNzZXJ0L2Z1bmN0aW9ucy5waHAiCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIkJTRC0yLUNsYXVzZSIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJCZW5qYW1pbiBFYmVybGVpIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJrb250YWt0QGJlYmVybGVpLmRlIiwKICAgICAgICAgICAgICAgICJyb2xlIjogIkxlYWQgRGV2ZWxvcGVyIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJSaWNoYXJkIFF1YWRsaW5nIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJycXVhZGxpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICJyb2xlIjogIkNvbGxhYm9yYXRvciIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaW4gYXNzZXJ0aW9uIGxpYnJhcnkgZm9yIGlucHV0IHZhbGlkYXRpb24gaW4gYnVzaW5lc3MgbW9kZWxzLiIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiYXNzZXJ0IiwKICAgICAgICAgICAgImFzc2VydGlvbiIsCiAgICAgICAgICAgICJ2YWxpZGF0aW9uIgogICAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICAgIm5hbWUiOiAiZmdyb3NzZS9waHBhc24xIiwKICAgICAgICAidmVyc2lvbiI6ICIxLjUuMyIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjUuMy4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEuZ2l0IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDI0NDUwMDM4NGY4Yjk2ZjU5NTIwNzZmM2UwNWZiNTZhODE1YzU1IgogICAgICAgIH0sCiAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9mZ3Jvc3NlL1BIUEFTTjEvemlwYmFsbC80MDI0NDUwMDM4NGY4Yjk2ZjU5NTIwNzZmM2UwNWZiNTZhODE1YzU1IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDI0NDUwMDM4NGY4Yjk2ZjU5NTIwNzZmM2UwNWZiNTZhODE1YzU1IiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgImV4dC1nbXAiOiAiKiIsCiAgICAgICAgICAgICJwaHAiOiAiPj01LjYuMCIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC41IiwKICAgICAgICAgICAgInNhdG9vc2hpL3BocC1jb3ZlcmFsbHMiOiAiZGV2LW1hc3RlciIKICAgICAgICB9LAogICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAicGhwLWN1cmwiOiAiRm9yIGxvYWRpbmcgT0lEIGluZm9ybWF0aW9uIGZyb20gdGhlIHdlYiBpZiB0aGV5IGhhdmUgbm90IGJlZSBkZWZpbmVkIHN0YXRpY2FsbHkiCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE3LTEyLTE3VDEwOjE4OjIwKzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjUueC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkZHXFwiOiAibGliLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkZyaWVkcmljaCBHcm/Dn2UiLAogICAgICAgICAgICAgICAgImVtYWlsIjogImZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZSIsCiAgICAgICAgICAgICAgICAicm9sZSI6ICJBdXRob3IiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEvY29udHJpYnV0b3JzIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBQSFAgRnJhbWV3b3JrIHRoYXQgYWxsb3dzIHlvdSB0byBlbmNvZGUgYW5kIGRlY29kZSBhcmJpdHJhcnkgQVNOLjEgc3RydWN0dXJlcyB1c2luZyB0aGUgSVRVLVQgWC42OTAgRW5jb2RpbmcgUnVsZXMuIiwKICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UvUEhQQVNOMSIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiREVSIiwKICAgICAgICAgICAgImFzbi4xIiwKICAgICAgICAgICAgImFzbjEiLAogICAgICAgICAgICAiYmVyIiwKICAgICAgICAgICAgImJpbmFyeSIsCiAgICAgICAgICAgICJkZWNvZGluZyIsCiAgICAgICAgICAgICJlbmNvZGluZyIsCiAgICAgICAgICAgICJ4LjUwOSIsCiAgICAgICAgICAgICJ4LjY5MCIsCiAgICAgICAgICAgICJ4NTA5IiwKICAgICAgICAgICAgIng2OTAiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL2d1enpsZSIsCiAgICAgICAgInZlcnNpb24iOiAiNi4zLjMiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiNi4zLjMuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjQwN2IwY2I4ODBhY2U4NWM5YjYzYzVmOTU1MWRiNDk4Y2IyZDUwYmEiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUvemlwYmFsbC80MDdiMGNiODgwYWNlODVjOWI2M2M1Zjk1NTFkYjQ5OGNiMmQ1MGJhIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDdiMGNiODgwYWNlODVjOWI2M2M1Zjk1NTFkYjQ5OGNiMmQ1MGJhIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgImd1enpsZWh0dHAvcHJvbWlzZXMiOiAiXjEuMCIsCiAgICAgICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjEuNCIsCiAgICAgICAgICAgICJwaHAiOiAiPj01LjUiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICJleHQtY3VybCI6ICIqIiwKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC44LjM1IHx8IF41LjcgfHwgXjYuNCB8fCBeNy4wIiwKICAgICAgICAgICAgInBzci9sb2ciOiAiXjEuMCIKICAgICAgICB9LAogICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAicHNyL2xvZyI6ICJSZXF1aXJlZCBmb3IgdXNpbmcgdGhlIExvZyBtaWRkbGV3YXJlIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxOC0wNC0yMlQxNTo0Njo1NiswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNi4zLWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAic3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkd1enpsZUh0dHBcXCI6ICJzcmMvIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICJNSVQiCiAgICAgICAgXSwKICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIGlzIGEgUEhQIEhUVFAgY2xpZW50IGxpYnJhcnkiLAogICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vZ3V6emxlcGhwLm9yZy8iLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgImNsaWVudCIsCiAgICAgICAgICAgICJjdXJsIiwKICAgICAgICAgICAgImZyYW1ld29yayIsCiAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgImh0dHAgY2xpZW50IiwKICAgICAgICAgICAgInJlc3QiLAogICAgICAgICAgICAid2ViIHNlcnZpY2UiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3Byb21pc2VzIiwKICAgICAgICAidmVyc2lvbiI6ICJ2MS4zLjEiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4zLjEuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL3Byb21pc2VzL3ppcGJhbGwvYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJwaHAiOiAiPj01LjUuMCIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC4wIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNi0xMi0yMFQxMDowNzoxMSswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS40LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcUHJvbWlzZVxcIjogInNyYy8iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICJNSVQiCiAgICAgICAgXSwKICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIHByb21pc2VzIGxpYnJhcnkiLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgInByb21pc2UiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3BzcjciLAogICAgICAgICJ2ZXJzaW9uIjogIjEuNC4yIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjEuNC4yLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3LmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZjViOGE4NTEyZTJiNThiMDA3MWE3MjgwZTM5ZjE0ZjcyZTA1ZDg3YyIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL3BzcjcvemlwYmFsbC9mNWI4YTg1MTJlMmI1OGIwMDcxYTcyODBlMzlmMTRmNzJlMDVkODdjIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNWI4YTg1MTJlMmI1OGIwMDcxYTcyODBlMzlmMTRmNzJlMDVkODdjIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBocCI6ICI+PTUuNC4wIiwKICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAifjEuMCIKICAgICAgICB9LAogICAgICAgICJwcm92aWRlIjogewogICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZS1pbXBsZW1lbnRhdGlvbiI6ICIxLjAiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuMCIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTctMDMtMjBUMTc6MTA6NDYrMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkd1enpsZUh0dHBcXFBzcjdcXCI6ICJzcmMvIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAic3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCIKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAibXRkb3dsaW5nQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIFNjaHVsdHplIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vVG9iaW9uIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTcgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsc28gcHJvdmlkZXMgY29tbW9uIHV0aWxpdHkgbWV0aG9kcyIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAicmVzcG9uc2UiLAogICAgICAgICAgICAic3RyZWFtIiwKICAgICAgICAgICAgInVyaSIsCiAgICAgICAgICAgICJ1cmwiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJtZGFudGVyL2VjYyIsCiAgICAgICAgInZlcnNpb24iOiAidjAuNC41IiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjAuNC41LjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MuZ2l0IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5ZWQ2MDE3ZmJhZTJmZDExMDVlMGQ4MWU3MDMwMDdkMzUzYjc1ODdiIgogICAgICAgIH0sCiAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHBlY2MvcGhwZWNjL3ppcGJhbGwvOWVkNjAxN2ZiYWUyZmQxMTA1ZTBkODFlNzAzMDA3ZDM1M2I3NTg3YiIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOWVkNjAxN2ZiYWUyZmQxMTA1ZTBkODFlNzAzMDA3ZDM1M2I3NTg3YiIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJleHQtZ21wIjogIioiLAogICAgICAgICAgICAiZmdyb3NzZS9waHBhc24xIjogIn4xLjUiLAogICAgICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiOiAiXjF8XjIiLAogICAgICAgICAgICAicGhwIjogIj49NS42LjAsIDw3LjIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuMXx+NS4wIiwKICAgICAgICAgICAgInNxdWl6bGFicy9waHBfY29kZXNuaWZmZXIiOiAifjIiLAogICAgICAgICAgICAic3ltZm9ueS95YW1sIjogIn4yLjZ8fjMuMCIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTctMTItMTJUMTI6MTM6MzArMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIk1kYW50ZXJcXEVjY1xcIjogInNyYy8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJNYXR5YXMgRGFudGVyIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vbWF0ZWpkYW50ZXIuY29tLyIsCiAgICAgICAgICAgICAgICAicm9sZSI6ICJBdXRob3IiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlRoaWJhdWQgRmFicmUiLAogICAgICAgICAgICAgICAgImVtYWlsIjogInRoaWJhdWRAYXp0ZWNoLmlvIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vYXp0ZWNoLmlvIiwKICAgICAgICAgICAgICAgICJyb2xlIjogIk1haW50YWluZXIiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJQSFAgRWxsaXB0aWMgQ3VydmUgQ3J5cHRvZ3JhcGh5IGxpYnJhcnkiLAogICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYyIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiRGlmZmllIiwKICAgICAgICAgICAgIkVDRFNBIiwKICAgICAgICAgICAgIkhlbGxtYW4iLAogICAgICAgICAgICAiY3VydmUiLAogICAgICAgICAgICAiZWNkaCIsCiAgICAgICAgICAgICJlbGxpcHRpYyIsCiAgICAgICAgICAgICJuaXN0cDE5MiIsCiAgICAgICAgICAgICJuaXN0cDIyNCIsCiAgICAgICAgICAgICJuaXN0cDI1NiIsCiAgICAgICAgICAgICJuaXN0cDUyMSIsCiAgICAgICAgICAgICJwaHBlY2MiLAogICAgICAgICAgICAic2VjcDI1NmsxIgogICAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICAgIm5hbWUiOiAibWluaXNobGluay93ZWItcHVzaCIsCiAgICAgICAgInZlcnNpb24iOiAidjEuNC4zIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjEuNC4zLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjVmY2Q4MGZjY2VjYzI5YTRkZjdmYmY0N2MzZmJjOTU1OGUwN2Q5NCIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAvemlwYmFsbC82NWZjZDgwZmNjZWNjMjlhNGRmN2ZiZjQ3YzNmYmM5NTU4ZTA3ZDk0IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2NWZjZDgwZmNjZWNjMjlhNGRmN2ZiZjQ3YzNmYmM5NTU4ZTA3ZDk0IiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgImd1enpsZWh0dHAvZ3V6emxlIjogIl42LjIiLAogICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICJtZGFudGVyL2VjYyI6ICJeMC40LjAiLAogICAgICAgICAgICAicGhwIjogIl41LjYgfHwgXjcuMCIsCiAgICAgICAgICAgICJzcG9ta3ktbGFicy9iYXNlNjR1cmwiOiAiXjEuMCIsCiAgICAgICAgICAgICJzcG9ta3ktbGFicy9qb3NlIjogIl42LjAiLAogICAgICAgICAgICAic3BvbWt5LWxhYnMvcGhwLWFlcy1nY20iOiAiXjEuMiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICI1LjcuKiIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTctMDYtMjhUMTk6MDM6NDArMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIk1pbmlzaGxpbmtcXFdlYlB1c2hcXCI6ICJzcmMiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJMb3VpcyBMYWdyYW5nZSIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAibGFncmFuZ2UubG91aXNAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vTWluaXNobGluayIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIldlYiBQdXNoIGxpYnJhcnkgZm9yIFBIUCIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiUHVzaCBBUEkiLAogICAgICAgICAgICAiV2ViUHVzaCIsCiAgICAgICAgICAgICJub3RpZmljYXRpb25zIiwKICAgICAgICAgICAgInB1c2giLAogICAgICAgICAgICAid2ViIgogICAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICAgIm5hbWUiOiAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiLAogICAgICAgICJ2ZXJzaW9uIjogInYyLjAuMTciLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMi4wLjE3LjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcmFnb25pZS9yYW5kb21fY29tcGF0LmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMjlhZjI0ZjI1YmFiODM0ZmNiYjM4YWQyYTY5ZmE5M2I4NjdlMDcwZCIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGFyYWdvbmllL3JhbmRvbV9jb21wYXQvemlwYmFsbC8yOWFmMjRmMjViYWI4MzRmY2JiMzhhZDJhNjlmYTkzYjg2N2UwNzBkIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyOWFmMjRmMjViYWI4MzRmY2JiMzhhZDJhNjlmYTkzYjg2N2UwNzBkIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBocCI6ICI+PTUuMi4wIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIjQuKnw1LioiCiAgICAgICAgfSwKICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgImV4dC1saWJzb2RpdW0iOiAiUHJvdmlkZXMgYSBtb2Rlcm4gY3J5cHRvIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIHJhbmRvbSBieXRlcy4iCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE4LTA3LTA0VDE2OjMxOjM3KzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICJsaWIvcmFuZG9tLnBocCIKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlBhcmFnb24gSW5pdGlhdGl2ZSBFbnRlcnByaXNlcyIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAic2VjdXJpdHlAcGFyYWdvbmllLmNvbSIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9wYXJhZ29uaWUuY29tIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiUEhQIDUueCBwb2x5ZmlsbCBmb3IgcmFuZG9tX2J5dGVzKCkgYW5kIHJhbmRvbV9pbnQoKSBmcm9tIFBIUCA3IiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJjc3BybmciLAogICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAicHNldWRvcmFuZG9tIiwKICAgICAgICAgICAgInJhbmRvbSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInBzci9jYWNoZSIsCiAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4wLjEuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9jYWNoZS5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImQxMWI1MGFkMjIzMjUwY2YxN2I4NmUzODM4MzQxM2Y1YTY3NjRiZjgiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocC1maWcvY2FjaGUvemlwYmFsbC9kMTFiNTBhZDIyMzI1MGNmMTdiODZlMzgzODM0MTNmNWE2NzY0YmY4IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJkMTFiNTBhZDIyMzI1MGNmMTdiODZlMzgzODM0MTNmNWE2NzY0YmY4IiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBocCI6ICI+PTUuMy4wIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNi0wOC0wNlQyMDoyNDoxMSswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4wLngtZGV2IgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICJQc3JcXENhY2hlXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgY2FjaGluZyBsaWJyYXJpZXMiLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgImNhY2hlIiwKICAgICAgICAgICAgInBzciIsCiAgICAgICAgICAgICJwc3ItNiIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInBzci9odHRwLW1lc3NhZ2UiLAogICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjEuMC4xLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZjY1NjFiZjI4ZDUyMDE1NGU0YjBlYzcyYmU5NTQxOGFiZTZkOTM2MyIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLW1lc3NhZ2UvemlwYmFsbC9mNjU2MWJmMjhkNTIwMTU0ZTRiMGVjNzJiZTk1NDE4YWJlNmQ5MzYzIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNjU2MWJmMjhkNTIwMTU0ZTRiMGVjNzJiZTk1NDE4YWJlNmQ5MzYzIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBocCI6ICI+PTUuMy4wIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNi0wOC0wNlQxNDozOTo1MSswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4wLngtZGV2IgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXE1lc3NhZ2VcXCI6ICJzcmMvIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICJNSVQiCiAgICAgICAgXSwKICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiUEhQLUZJRyIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBIVFRQIG1lc3NhZ2VzIiwKICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlIiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgImh0dHAtbWVzc2FnZSIsCiAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICJyZXNwb25zZSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInNwb21reS1sYWJzL2Flcy1rZXktd3JhcCIsCiAgICAgICAgInZlcnNpb24iOiAidjMuMC4zIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjMuMC4zLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC96aXBiYWxsLzA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAiYmViZXJsZWkvYXNzZXJ0IjogIl4yLjQiLAogICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICJwaHAiOiAiXjUuNHxeNy4wIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjV8XjUuMCIsCiAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE3LTAzLTI1VDIxOjA3OjExKzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIzLjAueC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkFFU0tXXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9hZXMta2V5LXdyYXAvY29udHJpYnV0b3JzIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiQUVTIEtleSBXcmFwIGZvciBQSFAuIiwKICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcCIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiQTEyOEtXIiwKICAgICAgICAgICAgIkExOTJLVyIsCiAgICAgICAgICAgICJBMjU2S1ciLAogICAgICAgICAgICAiUkZDMzM5NCIsCiAgICAgICAgICAgICJSRkM1NjQ5IiwKICAgICAgICAgICAgImFlcyIsCiAgICAgICAgICAgICJrZXkiLAogICAgICAgICAgICAicGFkZGluZyIsCiAgICAgICAgICAgICJ3cmFwIgogICAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAidmVyc2lvbiI6ICJ2MS4wLjIiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4wLjIuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvYmFzZTY0dXJsL3ppcGJhbGwvZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJwaHAiOiAiXjUuM3xeNy4wIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjB8XjUuMCIsCiAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE2LTAxLTIxVDE5OjUwOjMwKzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkJhc2U2NFVybFxcIjogInNyYy8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkJhc2UgNjQgVVJMIFNhZmUgRW5jb2RpbmcvZGVjb2RpbmcgUEhQIExpYnJhcnkiLAogICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJiYXNlNjQiLAogICAgICAgICAgICAicmZjNDY0OCIsCiAgICAgICAgICAgICJzYWZlIiwKICAgICAgICAgICAgInVybCIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInNwb21reS1sYWJzL2pvc2UiLAogICAgICAgICJ2ZXJzaW9uIjogInY2LjEuNyIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICI2LjEuNy4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9qb3NlLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTA4YmRlOTBlNjc2Y2M0NWYwNzlmOTU4YmFlOWI3NWFjOWJjMTc4OCIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvam9zZS96aXBiYWxsLzEwOGJkZTkwZTY3NmNjNDVmMDc5Zjk1OGJhZTliNzVhYzliYzE3ODgiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjEwOGJkZTkwZTY3NmNjNDVmMDc5Zjk1OGJhZTliNzVhYzliYzE3ODgiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAiYmViZXJsZWkvYXNzZXJ0IjogIl4yLjQiLAogICAgICAgICAgICAiZmdyb3NzZS9waHBhc24xIjogIl4xLjUiLAogICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICJtZGFudGVyL2VjYyI6ICIwLjQuKiIsCiAgICAgICAgICAgICJwaHAiOiAiXjUuNnxeNy4wIiwKICAgICAgICAgICAgInBzci9jYWNoZSI6ICJeMS4wIiwKICAgICAgICAgICAgInNwb21reS1sYWJzL2Flcy1rZXktd3JhcCI6ICJeMy4wIiwKICAgICAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wIiwKICAgICAgICAgICAgInNwb21reS1sYWJzL3BocC1hZXMtZ2NtIjogIl4xLjIiLAogICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZyI6ICJeMS4xIiwKICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtcGhwNzAiOiAiXjEuMSIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNS4wIiwKICAgICAgICAgICAgInNhdG9vc2hpL3BocC1jb3ZlcmFsbHMiOiAiXjEuMCIsCiAgICAgICAgICAgICJzeW1mb255L2NhY2hlIjogIl4yLjB8XjMuMCIKICAgICAgICB9LAogICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAiZXh0LWNyeXB0byI6ICJIaWdobHkgcmVjb21tZW5kZWQgd2hlbiB5b3UgdXNlIEFFUyBHQ00gYmFzZWQgYWxnb3JpdGhtcy4iLAogICAgICAgICAgICAiZXh0LWN1cnZlMjU1MTkiOiAiRm9yIEVkRFNBIHdpdGggWDI1NTE5IGN1cnZlcyBzdXBwb3J0LiIsCiAgICAgICAgICAgICJleHQtZWQyNTUxOSI6ICJGb3IgRWREU0Egd2l0aCBFZDI1NTE5IGN1cnZlcyBzdXBwb3J0LiIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTgtMDItMTlUMDk6MjM6MjcrMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjYuMS54LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiSm9zZVxcIjogInNyYy8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvam9zZS9jb250cmlidXRvcnMiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJKU09OIE9iamVjdCBTaWduaW5nIGFuZCBFbmNyeXB0aW9uIGxpYnJhcnkgZm9yIFBIUC4iLAogICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvSm9zZSIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAiSldLIiwKICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAiSm90IiwKICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICJSRkM3NTE3IiwKICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICJSRkM3NTIwIiwKICAgICAgICAgICAgImp3YSIsCiAgICAgICAgICAgICJqd3QiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJzcG9ta3ktbGFicy9waHAtYWVzLWdjbSIsCiAgICAgICAgInZlcnNpb24iOiAidjEuMi4wIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjEuMi4wLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYjY1NWJlZjBkNGYwZmEyZjM2YzExYzUxMjJlMjg0OTUxZTgxOTYxYyIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvcGhwLWFlcy1nY20vemlwYmFsbC9iNjU1YmVmMGQ0ZjBmYTJmMzZjMTFjNTEyMmUyODQ5NTFlODE5NjFjIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiNjU1YmVmMGQ0ZjBmYTJmMzZjMTFjNTEyMmUyODQ5NTFlODE5NjFjIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgImJlYmVybGVpL2Fzc2VydCI6ICJeMi40IiwKICAgICAgICAgICAgImxpYi1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAicGhwIjogIj49NS40IiwKICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmciOiAiXjEuMSIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC41fF41LjAiLAogICAgICAgICAgICAic2F0b29zaGkvcGhwLWNvdmVyYWxscyI6ICJeMS4wIgogICAgICAgIH0sCiAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICJleHQtY3J5cHRvIjogIkhpZ2hseSByZWNvbW1lbmRlZCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLiIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTYtMTEtMjJUMjE6MTE6MTErMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMi54LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiQUVTR0NNXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9waHAtYWVzLWdjbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJBRVMgR0NNIChHYWxvaXMgQ291bnRlciBNb2RlKSBQSFAgaW1wbGVtZW50YXRpb24uIiwKICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtIiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJBRVMtR0NNIiwKICAgICAgICAgICAgIkdhbG9pcyBDb3VudGVyIE1vZGUiLAogICAgICAgICAgICAiYWVzIiwKICAgICAgICAgICAgImdjbSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmciLAogICAgICAgICJ2ZXJzaW9uIjogInYxLjguMCIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjguMC4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMzI5NmFkZjZhNjQ1NGEwNTA2NzljZGU5MGY5NTM1MGFkNjA0YjE3MSIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZy96aXBiYWxsLzMyOTZhZGY2YTY0NTRhMDUwNjc5Y2RlOTBmOTUzNTBhZDYwNGIxNzEiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjMyOTZhZGY2YTY0NTRhMDUwNjc5Y2RlOTBmOTUzNTBhZDYwNGIxNzEiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgfSwKICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICJGb3IgYmVzdCBwZXJmb3JtYW5jZSIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTgtMDQtMjZUMTA6MDY6MjgrMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuOC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIlN5bWZvbnlcXFBvbHlmaWxsXFxNYnN0cmluZ1xcIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgImJvb3RzdHJhcC5waHAiCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBwb2x5ZmlsbCBmb3IgdGhlIE1ic3RyaW5nIGV4dGVuc2lvbiIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgImNvbXBhdGliaWxpdHkiLAogICAgICAgICAgICAibWJzdHJpbmciLAogICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAic2hpbSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwtcGhwNzAiLAogICAgICAgICJ2ZXJzaW9uIjogInYxLjguMCIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjguMC4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLXBocDcwLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNzc0NTQ2OTNkOGYxMGRkMjNiYjI0OTU1Y2ZmZDJkODJkYjEwMDdhNiIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC96aXBiYWxsLzc3NDU0NjkzZDhmMTBkZDIzYmIyNDk1NWNmZmQyZDgyZGIxMDA3YTYiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjc3NDU0NjkzZDhmMTBkZDIzYmIyNDk1NWNmZmQyZDgyZGIxMDA3YTYiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiOiAifjEuMHx+Mi4wIiwKICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxOC0wNC0yNlQxMDowNjoyOCswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS44LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiU3ltZm9ueVxcUG9seWZpbGxcXFBocDcwXFwiOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgIlJlc291cmNlcy9zdHVicyIKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGJhY2twb3J0aW5nIHNvbWUgUEhQIDcuMCsgZmVhdHVyZXMgdG8gbG93ZXIgUEhQIHZlcnNpb25zIiwKICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiY29tcGF0aWJpbGl0eSIsCiAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICJwb3J0YWJsZSIsCiAgICAgICAgICAgICJzaGltIgogICAgICAgIF0KICAgIH0KXQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkNvcHlyaWdodCAoYykgTmlscyBBZGVybWFubiwgSm9yZGkgQm9nZ2lhbm8KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQKdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgpUSEUgU09GVFdBUkUuCgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMjIyB2LjEuNS4yICgyMDE2LTEwLTI5KQoqIGFsbG93IGVtcHR5IG9jdGV0IHN0cmluZ3MKCiMjIyMgdi4xLjUuMSAoMjAxNS0xMC0wMikKKiBhZGQga2V5d29yZHMgdG8gY29tcG9zZXIuanNvbiAodGhpcyBpcyBhIHZlcnNpb24gb24gaXRzIG93biBzbyB0aGUga2V5d29yZHMgYXJlIGZvdW5kIG9uIGEgc3RhYmxlIHZlcnNpb24gYXQgcGFja2FnaXN0Lm9yZykKCiMjIyMgdi4xLjUuMCAoMjAxNS0xMC0zMCkKKiBmaXggYSBidWcgdGhhdCB3b3VsZCBwcmV2ZW50IHlvdSBmcm9tIGRlY29kaW5nIGNvbnRleHQgc3BlY2lmaWMgdGFncyBvbiBtdWx0aXBsZSBvYmplY3RzIFsjNTddKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvaXNzdWVzLzU3KQogIC0gYEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6Ol9fY29uc3RydWN0YCBkb2VzIG5vdyBhY2NlcHQgbXVsdGlwbGUgb2JqZWN0cyB0byBiZSB0YWdnZWQgd2l0aCBhIHNpbmdsZSB0YWcKICAtIGBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0OjpnZXRDb250ZW50YCB3aWxsIG5vdyBhbHdheXMgcmV0dXJuIGFuIGFycmF5IChldmVuIGlmIG9ubHkgb25lIG9iamVjdCBpcyB0YWdnZWQpCgojIyMjIHYuMS40LjIgKDIwMTUtMDktMjkpCiogZml4IGEgYnVnIHRoYXQgd291bGQgcHJldmVudCB5b3UgZnJvbSBkZWNvZGluZyBlbXB0eSB0YWdnZWQgb2JqZWN0cyBbIzU3XShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2lzc3Vlcy81NykKCiMjIyMgdi4xLjQuMQoqIGltcHJvdmUgZXhjZXB0aW9uIG1lc3NhZ2VzIGFuZCBnZW5lcmFsIGVycm9yIGhhbmRsaW5nIFsjNTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvcHVsbC81NSkKCiMjIyMgdi4xLjQuMAoqICoqcmVxdWlyZSBQSFAgNS42KioKKiBzdXBwb3J0IGJpZyBpbnRlZ2VycyAoY2xvc2VzICMxIGFuZCAjMzcpCiogZW5mb3JjZSBvbmUgY29kZSBzdHlsZSB2aWEgW3N0eWxlY2kuaW9dWzldCiogdHJhY2sgY29kZSBjb3ZlcmFnZSB2aWEgW2NvdmVyYWxscy5pb11bMTBdCiogcmVwbGFjZSBvYnNvbGV0ZSBgRkdcQVNOMVxFeGNlcHRpb25cR2VuZXJhbEV4Y2VwdGlvbmAgd2l0aCBgXEV4Y2VwdGlvbmAKKiBgQ29uc3RydWN0YCAoYFNlcXVlbmNlYCwgYFNldGApIGRvZXMgbm93IGltcGxlbWVudCBgQXJyYXlBY2Nlc3NgLCBgQ291bnRhYmxlYCBhbmQgYEl0ZXJhdG9yYCBzbyBpdHMgZWFzaWVyIHRvIHVzZQoqIGFkZCBbYFRlbXBsYXRlUGFyc2VyYF1bMTFdCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZmdyb3NzZS9waHBhc24xIiwKICAgICJkZXNjcmlwdGlvbiI6ICJBIFBIUCBGcmFtZXdvcmsgdGhhdCBhbGxvd3MgeW91IHRvIGVuY29kZSBhbmQgZGVjb2RlIGFyYml0cmFyeSBBU04uMSBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBJVFUtVCBYLjY5MCBFbmNvZGluZyBSdWxlcy4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UvUEhQQVNOMSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGcmllZHJpY2ggR3Jvw59lIiwKICAgICAgICAgICAgImVtYWlsIjogImZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlIiwKICAgICAgICAgICAgInJvbGUiOiAiQXV0aG9yIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEvY29udHJpYnV0b3JzIgogICAgICAgIH0KICAgIF0sCiAgICAia2V5d29yZHMiOiBbICJ4NjkwIiwgInguNjkwIiwgInguNTA5IiwgIng1MDkiLCAiYXNuMSIsICJhc24uMSIsICJiZXIiLCAiZGVyIiwgImJpbmFyeSIsICJlbmNvZGluZyIsICJkZWNvZGluZyIgXSwKCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIj49NS42LjAiLAogICAgICAgICJleHQtZ21wIjogIioiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuNSIsCiAgICAgICAgInNhdG9vc2hpL3BocC1jb3ZlcmFsbHMiOiAiZGV2LW1hc3RlciIKICAgIH0sCiAgICAic3VnZ2VzdCI6IHsKICAgICAgICAicGhwLWN1cmwiOiAiRm9yIGxvYWRpbmcgT0lEIGluZm9ybWF0aW9uIGZyb20gdGhlIHdlYiBpZiB0aGV5IGhhdmUgbm90IGJlZSBkZWZpbmVkIHN0YXRpY2FsbHkiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkZHXFwiOiAibGliLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJGR1xcVGVzdFxcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNS54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNjb21wb3Nlci1sb2NrLXRoZS1sb2NrLWZpbGUiLAogICAgICAgICJUaGlzIGZpbGUgaXMgQGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IgogICAgXSwKICAgICJoYXNoIjogIjNiMzFlODUxNWRjMzU2NTc1YzhhZGRmNzY3MzMyNThkIiwKICAgICJjb250ZW50LWhhc2giOiAiYTMzOGI1ZDBkMGJjYmJjMzRkODhmYjlkZWE2YzQyMWQiLAogICAgInBhY2thZ2VzIjogW10sCiAgICAicGFja2FnZXMtZGV2IjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZG9jdHJpbmUvaW5zdGFudGlhdG9yIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RvY3RyaW5lL2luc3RhbnRpYXRvci5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI4ZTg4NGU3OGY5ZjBlYjEzMjllNDQ1NjE5ZTA0NDU2ZTY0ZDgwNTFkIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZG9jdHJpbmUvaW5zdGFudGlhdG9yL3ppcGJhbGwvOGU4ODRlNzhmOWYwZWIxMzI5ZTQ0NTYxOWUwNDQ1NmU2NGQ4MDUxZCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjhlODg0ZTc4ZjlmMGViMTMyOWU0NDU2MTllMDQ0NTZlNjRkODA1MWQiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMyw8OC4wLURFViIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImF0aGxldGljL2F0aGxldGljIjogIn4wLjEuOCIsCiAgICAgICAgICAgICAgICAiZXh0LXBkbyI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtcGhhciI6ICIqIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuMCIsCiAgICAgICAgICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJ+Mi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiRG9jdHJpbmVcXEluc3RhbnRpYXRvclxcIjogInNyYy9Eb2N0cmluZS9JbnN0YW50aWF0b3IvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWFyY28gUGl2ZXR0YSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm9jcmFtaXVzQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9vY3JhbWl1cy5naXRodWIuY29tLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgc21hbGwsIGxpZ2h0d2VpZ2h0IHV0aWxpdHkgdG8gaW5zdGFudGlhdGUgb2JqZWN0cyBpbiBQSFAgd2l0aG91dCBpbnZva2luZyB0aGVpciBjb25zdHJ1Y3RvcnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2RvY3RyaW5lL2luc3RhbnRpYXRvciIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjb25zdHJ1Y3RvciIsCiAgICAgICAgICAgICAgICAiaW5zdGFudGlhdGUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDYtMTQgMjE6MTc6MDEiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImd1enpsZS9ndXp6bGUiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2My45LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUzLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjA2NDViNzBkOTUzYmMxYzA2N2JiYzhkNWJjNTMxOTQ3MDZiNjI4ZDkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvZ3V6emxlMy96aXBiYWxsLzA2NDViNzBkOTUzYmMxYzA2N2JiYzhkNWJjNTMxOTQ3MDZiNjI4ZDkiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwNjQ1YjcwZDk1M2JjMWMwNjdiYmM4ZDViYzUzMTk0NzA2YjYyOGQ5IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtY3VybCI6ICIqIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMyIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9ldmVudC1kaXNwYXRjaGVyIjogIn4yLjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXBsYWNlIjogewogICAgICAgICAgICAgICAgImd1enpsZS9iYXRjaCI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9jYWNoZSI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9jb21tb24iOiAic2VsZi52ZXJzaW9uIiwKICAgICAgICAgICAgICAgICJndXp6bGUvaHR0cCI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9pbmZsZWN0aW9uIjogInNlbGYudmVyc2lvbiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlL2l0ZXJhdG9yIjogInNlbGYudmVyc2lvbiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlL2xvZyI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9wYXJzZXIiOiAic2VsZi52ZXJzaW9uIiwKICAgICAgICAgICAgICAgICJndXp6bGUvcGx1Z2luIjogInNlbGYudmVyc2lvbiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlL3BsdWdpbi1hc3luYyI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9wbHVnaW4tYmFja29mZiI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9wbHVnaW4tY2FjaGUiOiAic2VsZi52ZXJzaW9uIiwKICAgICAgICAgICAgICAgICJndXp6bGUvcGx1Z2luLWNvb2tpZSI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9wbHVnaW4tY3VybGF1dGgiOiAic2VsZi52ZXJzaW9uIiwKICAgICAgICAgICAgICAgICJndXp6bGUvcGx1Z2luLWVycm9yLXJlc3BvbnNlIjogInNlbGYudmVyc2lvbiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlL3BsdWdpbi1oaXN0b3J5IjogInNlbGYudmVyc2lvbiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlL3BsdWdpbi1sb2ciOiAic2VsZi52ZXJzaW9uIiwKICAgICAgICAgICAgICAgICJndXp6bGUvcGx1Z2luLW1kNSI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9wbHVnaW4tbW9jayI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9wbHVnaW4tb2F1dGgiOiAic2VsZi52ZXJzaW9uIiwKICAgICAgICAgICAgICAgICJndXp6bGUvc2VydmljZSI6ICJzZWxmLnZlcnNpb24iLAogICAgICAgICAgICAgICAgImd1enpsZS9zdHJlYW0iOiAic2VsZi52ZXJzaW9uIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiZG9jdHJpbmUvY2FjaGUiOiAifjEuMyIsCiAgICAgICAgICAgICAgICAibW9ub2xvZy9tb25vbG9nIjogIn4xLjAiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICIzLjcuKiIsCiAgICAgICAgICAgICAgICAicHNyL2xvZyI6ICJ+MS4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2NsYXNzLWxvYWRlciI6ICJ+Mi4xIiwKICAgICAgICAgICAgICAgICJ6ZW5kZnJhbWV3b3JrL3plbmQtY2FjaGUiOiAiMi4qLDwyLjMiLAogICAgICAgICAgICAgICAgInplbmRmcmFtZXdvcmsvemVuZC1sb2ciOiAiMi4qLDwyLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImd1enpsZWh0dHAvZ3V6emxlIjogIkd1enpsZSA1IGhhcyBtb3ZlZCB0byBhIG5ldyBwYWNrYWdlIG5hbWUuIFRoZSBwYWNrYWdlIHlvdSBoYXZlIGluc3RhbGxlZCwgR3V6emxlIDMsIGlzIGRlcHJlY2F0ZWQuIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIzLjktZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTAiOiB7CiAgICAgICAgICAgICAgICAgICAgIkd1enpsZSI6ICJzcmMvIiwKICAgICAgICAgICAgICAgICAgICAiR3V6emxlXFxUZXN0cyI6ICJ0ZXN0cy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR3V6emxlIENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBIUCBIVFRQIGNsaWVudC4gVGhpcyBsaWJyYXJ5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2d1enpsZWh0dHAvZ3V6emxlIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9ndXp6bGVwaHAub3JnLyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjbGllbnQiLAogICAgICAgICAgICAgICAgImN1cmwiLAogICAgICAgICAgICAgICAgImZyYW1ld29yayIsCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cCBjbGllbnQiLAogICAgICAgICAgICAgICAgInJlc3QiLAogICAgICAgICAgICAgICAgIndlYiBzZXJ2aWNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE1LTAzLTE4IDE4OjIzOjUwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwaHBkb2N1bWVudG9yL3JlZmxlY3Rpb24tZG9jYmxvY2siLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwRG9jdW1lbnRvci9SZWZsZWN0aW9uRG9jQmxvY2suZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZDY4ZGJkYzUzZGMzNThhODE2ZjAwYjMwMDcwNDcwMmIyZWFmZjdiOCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocERvY3VtZW50b3IvUmVmbGVjdGlvbkRvY0Jsb2NrL3ppcGJhbGwvZDY4ZGJkYzUzZGMzNThhODE2ZjAwYjMwMDcwNDcwMmIyZWFmZjdiOCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQ2OGRiZGM1M2RjMzU4YTgxNmYwMGIzMDA3MDQ3MDJiMmVhZmY3YjgiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImRmbHlkZXYvbWFya2Rvd24iOiAifjEuMCIsCiAgICAgICAgICAgICAgICAiZXJ1c2V2L3BhcnNlZG93biI6ICJ+MS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItMCI6IHsKICAgICAgICAgICAgICAgICAgICAicGhwRG9jdW1lbnRvciI6IFsKICAgICAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTWlrZSB2YW4gUmllbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1pa2UudmFucmllbEBuYWVuaXVzLmNvbSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wMi0wMyAxMjoxMDo1MCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwc3BlYy9wcm9waGVjeSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYxLjUuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwc3BlYy9wcm9waGVjeS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0NzQ1ZGVkOTMwNzc4NmI3MzBkN2E2MGRmNWNiNWE2YzQzY2Y5NWY3IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwc3BlYy9wcm9waGVjeS96aXBiYWxsLzQ3NDVkZWQ5MzA3Nzg2YjczMGQ3YTYwZGY1Y2I1YTZjNDNjZjk1ZjciLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0NzQ1ZGVkOTMwNzc4NmI3MzBkN2E2MGRmNWNiNWE2YzQzY2Y5NWY3IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJkb2N0cmluZS9pbnN0YW50aWF0b3IiOiAiXjEuMC4yIiwKICAgICAgICAgICAgICAgICJwaHBkb2N1bWVudG9yL3JlZmxlY3Rpb24tZG9jYmxvY2siOiAifjIuMCIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL2NvbXBhcmF0b3IiOiAifjEuMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHNwZWMvcGhwc3BlYyI6ICJ+Mi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjQueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItMCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHJvcGhlY3lcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiS29uc3RhbnRpbiBLdWRyeWFzaG92IiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZXZlci56ZXRAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL2V2ZXJ6ZXQuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNYXJjZWxsbyBEdWFydGUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtYXJjZWxsby5kdWFydGVAZ21haWwuY29tIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSGlnaGx5IG9waW5pb25hdGVkIG1vY2tpbmcgZnJhbWV3b3JrIGZvciBQSFAgNS4zKyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwc3BlYy9wcm9waGVjeSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJEb3VibGUiLAogICAgICAgICAgICAgICAgIkR1bW15IiwKICAgICAgICAgICAgICAgICJmYWtlIiwKICAgICAgICAgICAgICAgICJtb2NrIiwKICAgICAgICAgICAgICAgICJzcHkiLAogICAgICAgICAgICAgICAgInN0dWIiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDgtMTMgMTA6MDc6NDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBocHVuaXQvcGhwLWNvZGUtY292ZXJhZ2UiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwLWNvZGUtY292ZXJhZ2UuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmQ3YzAzYzBlNGUwODA5MDFiOGYzM2IyODk3YjA1NzdiZTE4YTEzYyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3BocC1jb2RlLWNvdmVyYWdlL3ppcGJhbGwvMmQ3YzAzYzBlNGUwODA5MDFiOGYzM2IyODk3YjA1NzdiZTE4YTEzYyIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjJkN2MwM2MwZTRlMDgwOTAxYjhmMzNiMjg5N2IwNTc3YmUxOGExM2MiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocC1maWxlLWl0ZXJhdG9yIjogIn4xLjMiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwLXRleHQtdGVtcGxhdGUiOiAifjEuMiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHAtdG9rZW4tc3RyZWFtIjogIn4xLjMiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9lbnZpcm9ubWVudCI6ICJeMS4zLjIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi92ZXJzaW9uIjogIn4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJleHQteGRlYnVnIjogIj49Mi4xLjQiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWRvbSI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQteGRlYnVnIjogIj49Mi4yLjEiLAogICAgICAgICAgICAgICAgImV4dC14bWx3cml0ZXIiOiAiKiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMi4yLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzYkBzZWJhc3RpYW4tYmVyZ21hbm4uZGUiLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogImxlYWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJMaWJyYXJ5IHRoYXQgcHJvdmlkZXMgY29sbGVjdGlvbiwgcHJvY2Vzc2luZywgYW5kIHJlbmRlcmluZyBmdW5jdGlvbmFsaXR5IGZvciBQSFAgY29kZSBjb3ZlcmFnZSBpbmZvcm1hdGlvbi4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC1jb2RlLWNvdmVyYWdlIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNvdmVyYWdlIiwKICAgICAgICAgICAgICAgICJ0ZXN0aW5nIiwKICAgICAgICAgICAgICAgICJ4dW5pdCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wOC0wNCAwMzo0MjozOSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwdW5pdC9waHAtZmlsZS1pdGVyYXRvciIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtZmlsZS1pdGVyYXRvci5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MTUwYmYyYzM1ZDNmYzM3OWU1MGM3NjAyYjc1Y2FjZWFhMzlkYmYwIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwLWZpbGUtaXRlcmF0b3IvemlwYmFsbC82MTUwYmYyYzM1ZDNmYzM3OWU1MGM3NjAyYjc1Y2FjZWFhMzlkYmYwIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjE1MGJmMmMzNWQzZmMzNzllNTBjNzYwMmI3NWNhY2VhYTM5ZGJmMCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2JAc2ViYXN0aWFuLWJlcmdtYW5uLmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRmlsdGVySXRlcmF0b3IgaW1wbGVtZW50YXRpb24gdGhhdCBmaWx0ZXJzIGZpbGVzIGJhc2VkIG9uIGEgbGlzdCBvZiBzdWZmaXhlcy4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC1maWxlLWl0ZXJhdG9yLyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJmaWxlc3lzdGVtIiwKICAgICAgICAgICAgICAgICJpdGVyYXRvciIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wNi0yMSAxMzowODo0MyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwdW5pdC9waHAtdGV4dC10ZW1wbGF0ZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtdGV4dC10ZW1wbGF0ZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIzMWY4YjcxN2U1MWQ5YTJhZmNhNmM5ZjA0NmY1ZDY5ZmMyN2M4Njg2IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwLXRleHQtdGVtcGxhdGUvemlwYmFsbC8zMWY4YjcxN2U1MWQ5YTJhZmNhNmM5ZjA0NmY1ZDY5ZmMyN2M4Njg2IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMzFmOGI3MTdlNTFkOWEyYWZjYTZjOWYwNDZmNWQ2OWZjMjdjODY4NiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWJhc3RpYW5AcGhwdW5pdC5kZSIsCiAgICAgICAgICAgICAgICAgICAgInJvbGUiOiAibGVhZCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNpbXBsZSB0ZW1wbGF0ZSBlbmdpbmUuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtdGV4dC10ZW1wbGF0ZS8iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAidGVtcGxhdGUiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDYtMjEgMTM6NTA6MzQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBocHVuaXQvcGhwLXRpbWVyIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjciLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC10aW1lci5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIzZTgyZjRlOWZjOTI2NjVmYWZkOTE1NzU2OGU0ZGNiMDFkMDE0ZTViIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwLXRpbWVyL3ppcGJhbGwvM2U4MmY0ZTlmYzkyNjY1ZmFmZDkxNTc1NjhlNGRjYjAxZDAxNGU1YiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjNlODJmNGU5ZmM5MjY2NWZhZmQ5MTU3NTY4ZTRkY2IwMWQwMTRlNWIiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2JAc2ViYXN0aWFuLWJlcmdtYW5uLmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiVXRpbGl0eSBjbGFzcyBmb3IgdGltaW5nIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9waHAtdGltZXIvIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgInRpbWVyIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE1LTA2LTIxIDA4OjAxOjEyIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwaHB1bml0L3BocC10b2tlbi1zdHJlYW0iLAogICAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuNiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwLXRva2VuLXN0cmVhbS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIzYWI3MmM2MmU1NTAzNzBhNmNkNWRjODczZTFhMDRhYjU3NTYyZjViIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vcGhwLXRva2VuLXN0cmVhbS96aXBiYWxsLzNhYjcyYzYyZTU1MDM3MGE2Y2Q1ZGM4NzNlMWEwNGFiNTc1NjJmNWIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIzYWI3MmM2MmU1NTAzNzBhNmNkNWRjODczZTFhMDRhYjU3NTYyZjViIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtdG9rZW5pemVyIjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiV3JhcHBlciBhcm91bmQgUEhQJ3MgdG9rZW5pemVyIGV4dGVuc2lvbi4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocC10b2tlbi1zdHJlYW0vIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgInRva2VuaXplciIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wOC0xNiAwODo1MTowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGhwdW5pdC9waHB1bml0IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiNC44LjQiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3BocHVuaXQuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNTViZjFkNjA5MmIwZTEzYTFmMjZiZDVlYWZmZWVmM2Q4YWQ4NWVhNyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3BocHVuaXQvemlwYmFsbC81NWJmMWQ2MDkyYjBlMTNhMWYyNmJkNWVhZmZlZWYzZDhhZDg1ZWE3IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNTViZjFkNjA5MmIwZTEzYTFmMjZiZDVlYWZmZWVmM2Q4YWQ4NWVhNyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWRvbSI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtanNvbiI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtcGNyZSI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtcmVmbGVjdGlvbiI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtc3BsIjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAgICAgICAgICJwaHBzcGVjL3Byb3BoZWN5IjogIl4xLjMuMSIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHAtY29kZS1jb3ZlcmFnZSI6ICJ+Mi4xIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocC1maWxlLWl0ZXJhdG9yIjogIn4xLjQiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwLXRleHQtdGVtcGxhdGUiOiAifjEuMiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHAtdGltZXIiOiAiPj0xLjAuNiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0LW1vY2stb2JqZWN0cyI6ICJ+Mi4zIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vY29tcGFyYXRvciI6ICJ+MS4xIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vZGlmZiI6ICJ+MS4yIiwKICAgICAgICAgICAgICAgICJzZWJhc3RpYW4vZW52aXJvbm1lbnQiOiAifjEuMyIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL2V4cG9ydGVyIjogIn4xLjIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9nbG9iYWwtc3RhdGUiOiAifjEuMCIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL3ZlcnNpb24iOiAifjEuMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS95YW1sIjogIn4yLjF8fjMuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHAtaW52b2tlciI6ICJ+MS4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiYmluIjogWwogICAgICAgICAgICAgICAgInBocHVuaXQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjQuOC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2ViYXN0aWFuQHBocHVuaXQuZGUiLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogImxlYWQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJUaGUgUEhQIFVuaXQgVGVzdGluZyBmcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vcGhwdW5pdC5kZS8iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAicGhwdW5pdCIsCiAgICAgICAgICAgICAgICAidGVzdGluZyIsCiAgICAgICAgICAgICAgICAieHVuaXQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDgtMTUgMDQ6MjE6MjMiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBocHVuaXQvcGhwdW5pdC1tb2NrLW9iamVjdHMiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjMuNiIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdC1tb2NrLW9iamVjdHMuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMThkZmJjYjgxZDA1ZTIyOTZjMGJjZGRkNGRiOTZjYWRlNzVlNmY0MiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3BocHVuaXQtbW9jay1vYmplY3RzL3ppcGJhbGwvMThkZmJjYjgxZDA1ZTIyOTZjMGJjZGRkNGRiOTZjYWRlNzVlNmY0MiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjE4ZGZiY2I4MWQwNWUyMjk2YzBiY2RkZDRkYjk2Y2FkZTc1ZTZmNDIiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImRvY3RyaW5lL2luc3RhbnRpYXRvciI6ICJ+MS4wLD49MS4wLjIiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocC10ZXh0LXRlbXBsYXRlIjogIn4xLjIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9leHBvcnRlciI6ICJ+MS4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1zb2FwIjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuMy54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2JAc2ViYXN0aWFuLWJlcmdtYW5uLmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTW9jayBPYmplY3QgbGlicmFyeSBmb3IgUEhQVW5pdCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vcGhwdW5pdC1tb2NrLW9iamVjdHMvIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIm1vY2siLAogICAgICAgICAgICAgICAgInh1bml0IgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE1LTA3LTEwIDA2OjU0OjI0IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwc3IvbG9nIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvbG9nLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImZlMDkzNmVlMjY2NDMyNDllOTE2ODQ5ZDQ4ZTNhNTFkNWY1ZTI3OGIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2xvZy96aXBiYWxsL2ZlMDkzNmVlMjY2NDMyNDllOTE2ODQ5ZDQ4ZTNhNTFkNWY1ZTI3OGIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmZTA5MzZlZTI2NjQzMjQ5ZTkxNjg0OWQ0OGUzYTUxZDVmNWUyNzhiIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci0wIjogewogICAgICAgICAgICAgICAgICAgICJQc3JcXExvZ1xcIjogIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vd3d3LnBocC1maWcub3JnLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNvbW1vbiBpbnRlcmZhY2UgZm9yIGxvZ2dpbmcgbGlicmFyaWVzIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImxvZyIsCiAgICAgICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgICAgICJwc3ItMyIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxMi0xMi0yMSAxMTo0MDo1MSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic2F0b29zaGkvcGhwLWNvdmVyYWxscyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogImRldi1tYXN0ZXIiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhdG9vc2hpL3BocC1jb3ZlcmFsbHMuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmZiZjgwMzgwM2QxNzlhYjEwODI4MDczMDhhNjdiYmQ1YTc2MGM3MCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NhdG9vc2hpL3BocC1jb3ZlcmFsbHMvemlwYmFsbC8yZmJmODAzODAzZDE3OWFiMTA4MjgwNzMwOGE2N2JiZDVhNzYwYzcwIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmZiZjgwMzgwM2QxNzlhYjEwODI4MDczMDhhNjdiYmQ1YTc2MGM3MCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAiZXh0LXNpbXBsZXhtbCI6ICIqIiwKICAgICAgICAgICAgICAgICJndXp6bGUvZ3V6emxlIjogIj49Mi43IiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiMS4wLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvY29uZmlnIjogIj49Mi4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2NvbnNvbGUiOiAiPj0yLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvc3RvcHdhdGNoIjogIj49Mi4yIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3lhbWwiOiAiPj0yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJhcGlnZW4vYXBpZ2VuIjogIjIuOC4qQHN0YWJsZSIsCiAgICAgICAgICAgICAgICAicGRlcGVuZC9wZGVwZW5kIjogImRldi1tYXN0ZXIgYXMgMi4wLjAiLAogICAgICAgICAgICAgICAgInBocG1kL3BocG1kIjogImRldi1tYXN0ZXIiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwLWludm9rZXIiOiAiPj0xLjEuMCw8MS4yLjAiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICIzLjcuKkBzdGFibGUiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9maW5kZXItZmFjYWRlIjogImRldi1tYXN0ZXIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9waHBjcGQiOiAiMS40LipAc3RhYmxlIiwKICAgICAgICAgICAgICAgICJzcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyIjogIjEuNC4qQHN0YWJsZSIsCiAgICAgICAgICAgICAgICAidGhlc2Vlci9mZG9tZG9jdW1lbnQiOiAiZGV2LW1hc3RlciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAic3ltZm9ueS9odHRwLWtlcm5lbCI6ICJBbGxvd3MgU3ltZm9ueSBpbnRlZ3JhdGlvbiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImJpbiI6IFsKICAgICAgICAgICAgICAgICJjb21wb3Nlci9iaW4vY292ZXJhbGxzIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIwLjctZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTAiOiB7CiAgICAgICAgICAgICAgICAgICAgIlNhdG9vc2hpXFxDb21wb25lbnQiOiAic3JjLyIsCiAgICAgICAgICAgICAgICAgICAgIlNhdG9vc2hpXFxCdW5kbGUiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIktpdGFtdXJhIFNhdG9zaGkiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3aXRoLm5vLnBhcmFjaHV0ZUBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5mYWNlYm9vay5jb20vc2F0b29zaGkuanAiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQSFAgY2xpZW50IGxpYnJhcnkgZm9yIENvdmVyYWxscyBBUEkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhdG9vc2hpL3BocC1jb3ZlcmFsbHMiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiY2kiLAogICAgICAgICAgICAgICAgImNvdmVyYWdlIiwKICAgICAgICAgICAgICAgICJnaXRodWIiLAogICAgICAgICAgICAgICAgInRlc3QiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTQtMTEtMTEgMTU6MzU6MzQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNlYmFzdGlhbi9jb21wYXJhdG9yIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2NvbXBhcmF0b3IuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOTM3ZWZiMjc5YmQzN2EzNzViY2FkZjU4NGRlYzA3MjZmODRkYmYyMiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL2NvbXBhcmF0b3IvemlwYmFsbC85MzdlZmIyNzliZDM3YTM3NWJjYWRmNTg0ZGVjMDcyNmY4NGRiZjIyIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiOTM3ZWZiMjc5YmQzN2EzNzViY2FkZjU4NGRlYzA3MjZmODRkYmYyMiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9kaWZmIjogIn4xLjIiLAogICAgICAgICAgICAgICAgInNlYmFzdGlhbi9leHBvcnRlciI6ICJ+MS4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMi54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSmVmZiBXZWxjaCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndoYXR0aGVqZWZmQGdtYWlsLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVm9sa2VyIER1c2NoIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ2l0aHViQHdhbGxiYXNoLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQmVybmhhcmQgU2NodXNzZWsiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJic2NodXNzZWtAMmJlcHVibGlzaGVkLmF0IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWJhc3RpYW5AcGhwdW5pdC5kZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNvbXBhcmUgUEhQIHZhbHVlcyBmb3IgZXF1YWxpdHkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2NvbXBhcmF0b3IiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiY29tcGFyYXRvciIsCiAgICAgICAgICAgICAgICAiY29tcGFyZSIsCiAgICAgICAgICAgICAgICAiZXF1YWxpdHkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDctMjYgMTU6NDg6NDQiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNlYmFzdGlhbi9kaWZmIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2RpZmYuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiODYzZGY5Njg3ODM1YzYyYWE0MjNhMjI0MTJkMjZmYTJlYmRlM2ZkMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL2RpZmYvemlwYmFsbC84NjNkZjk2ODc4MzVjNjJhYTQyM2EyMjQxMmQyNmZhMmViZGUzZmQzIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiODYzZGY5Njg3ODM1YzYyYWE0MjNhMjI0MTJkMjZmYTJlYmRlM2ZkMyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuMiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4zLWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImNsYXNzbWFwIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIkJTRC0zLUNsYXVzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiS29yZSBOb3JkbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1haWxAa29yZS1ub3JkbWFubi5kZSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU2ViYXN0aWFuIEJlcmdtYW5uIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAic2ViYXN0aWFuQHBocHVuaXQuZGUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJEaWZmIGltcGxlbWVudGF0aW9uIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9kaWZmIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImRpZmYiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDItMjIgMTU6MTM6NTMiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNlYmFzdGlhbi9lbnZpcm9ubWVudCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4yIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9lbnZpcm9ubWVudC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MzI0YzkwN2NlN2E1MjQ3OGVlZWFlZGU3NjRmNDg3MzNlZjVhZTQ0IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vZW52aXJvbm1lbnQvemlwYmFsbC82MzI0YzkwN2NlN2E1MjQ3OGVlZWFlZGU3NjRmNDg3MzNlZjVhZTQ0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjMyNGM5MDdjZTdhNTI0NzhlZWVhZWRlNzY0ZjQ4NzMzZWY1YWU0NCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4zLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTZWJhc3RpYW4gQmVyZ21hbm4iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWJhc3RpYW5AcGhwdW5pdC5kZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gaGFuZGxlIEhIVk0vUEhQIGVudmlyb25tZW50cyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vd3d3LmdpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vZW52aXJvbm1lbnQiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiWGRlYnVnIiwKICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudCIsCiAgICAgICAgICAgICAgICAiaGh2bSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wOC0wMyAwNjoxNDo1MSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic2ViYXN0aWFuL2V4cG9ydGVyIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2V4cG9ydGVyLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjdhZTU1MTMzMjdjYjUzNjQzMTg0N2JjYzBjMTBlZGJhMjcwMTA2NGUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zZWJhc3RpYW5iZXJnbWFubi9leHBvcnRlci96aXBiYWxsLzdhZTU1MTMzMjdjYjUzNjQzMTg0N2JjYzBjMTBlZGJhMjcwMTA2NGUiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3YWU1NTEzMzI3Y2I1MzY0MzE4NDdiY2MwYzEwZWRiYTI3MDEwNjRlIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMyIsCiAgICAgICAgICAgICAgICAic2ViYXN0aWFuL3JlY3Vyc2lvbi1jb250ZXh0IjogIn4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4yLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy8iCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiQlNELTMtQ2xhdXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJKZWZmIFdlbGNoIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAid2hhdHRoZWplZmZAZ21haWwuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJWb2xrZXIgRHVzY2giLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJnaXRodWJAd2FsbGJhc2guY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJCZXJuaGFyZCBTY2h1c3NlayIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImJzY2h1c3Nla0AyYmVwdWJsaXNoZWQuYXQiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBZGFtIEhhcnZleSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFoYXJ2ZXlAcGhwLm5ldCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGV4cG9ydCBQSFAgdmFyaWFibGVzIGZvciB2aXN1YWxpemF0aW9uIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9leHBvcnRlciIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJleHBvcnQiLAogICAgICAgICAgICAgICAgImV4cG9ydGVyIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE1LTA2LTIxIDA3OjU1OjUzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzZWJhc3RpYW4vZ2xvYmFsLXN0YXRlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL2dsb2JhbC1zdGF0ZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJjNzQyOGFjZGI2MmVjZTBhNDVlNjMwNmYxYWU4NWUxYzA1YjA5YzAxIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc2ViYXN0aWFuYmVyZ21hbm4vZ2xvYmFsLXN0YXRlL3ppcGJhbGwvYzc0MjhhY2RiNjJlY2UwYTQ1ZTYzMDZmMWFlODVlMWMwNWIwOWMwMSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImM3NDI4YWNkYjYyZWNlMGE0NWU2MzA2ZjFhZTg1ZTFjMDViMDljMDEiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC11b3B6IjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU25hcHNob3R0aW5nIG9mIGdsb2JhbCBzdGF0ZSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vd3d3LmdpdGh1Yi5jb20vc2ViYXN0aWFuYmVyZ21hbm4vZ2xvYmFsLXN0YXRlIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImdsb2JhbCBzdGF0ZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNC0xMC0wNiAwOToyMzo1MCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic2ViYXN0aWFuL3JlY3Vyc2lvbi1jb250ZXh0IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3JlY3Vyc2lvbi1jb250ZXh0LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjk5NGQ0YTgxMWJhZmU4MDFmYjA2ZGNjYmVlNzk3ODYzYmEyNzkyYmEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zZWJhc3RpYW5iZXJnbWFubi9yZWN1cnNpb24tY29udGV4dC96aXBiYWxsLzk5NGQ0YTgxMWJhZmU4MDFmYjA2ZGNjYmVlNzk3ODYzYmEyNzkyYmEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5OTRkNGE4MTFiYWZlODAxZmIwNmRjY2JlZTc5Nzg2M2JhMjc5MmJhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkplZmYgV2VsY2giLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3aGF0dGhlamVmZkBnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBZGFtIEhhcnZleSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImFoYXJ2ZXlAcGhwLm5ldCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gcmVjdXJzaXZlbHkgcHJvY2VzcyBQSFAgdmFyaWFibGVzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cuZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi9yZWN1cnNpb24tY29udGV4dCIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDYtMjEgMDg6MDQ6NTAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInNlYmFzdGlhbi92ZXJzaW9uIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjYiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NlYmFzdGlhbmJlcmdtYW5uL3ZlcnNpb24uZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNThiM2E4NWU3OTk5NzU3ZDZhZDgxYzc4N2ExZmJmNWZmNmM2MjhjNiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3NlYmFzdGlhbmJlcmdtYW5uL3ZlcnNpb24vemlwYmFsbC81OGIzYTg1ZTc5OTk3NTdkNmFkODFjNzg3YTFmYmY1ZmY2YzYyOGM2IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNThiM2E4NWU3OTk5NzU3ZDZhZDgxYzc4N2ExZmJmNWZmNmM2MjhjNiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjLyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMy1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlNlYmFzdGlhbiBCZXJnbWFubiIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInNlYmFzdGlhbkBwaHB1bml0LmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJsZWFkIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiTGlicmFyeSB0aGF0IGhlbHBzIHdpdGggbWFuYWdpbmcgdGhlIHZlcnNpb24gbnVtYmVyIG9mIEdpdC1ob3N0ZWQgUEhQIHByb2plY3RzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zZWJhc3RpYW5iZXJnbWFubi92ZXJzaW9uIiwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wNi0yMSAxMzo1OTo0NiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9jb25maWciLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi43LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvY29uZmlnLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjZjOTA1YmJlZDFlNzI4MjI2ZGU2NTZlNGMwN2Q2MjBkZmU5ZTgwZDkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L2NvbmZpZy96aXBiYWxsLzZjOTA1YmJlZDFlNzI4MjI2ZGU2NTZlNGMwN2Q2MjBkZmU5ZTgwZDkiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2YzkwNWJiZWQxZTcyODIyNmRlNjU2ZTRjMDdkNjIwZGZlOWU4MGQ5IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuOSIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9maWxlc3lzdGVtIjogIn4yLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJzeW1mb255L3BocHVuaXQtYnJpZGdlIjogIn4yLjciCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuNy1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcQ29tcG9uZW50XFxDb25maWdcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGYWJpZW4gUG90ZW5jaWVyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZmFiaWVuQHN5bWZvbnkuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBDb25maWcgQ29tcG9uZW50IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAidGltZSI6ICIyMDE1LTA3LTA5IDE2OjA3OjQwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L2NvbnNvbGUiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi43LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvY29uc29sZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJkNmNmMDJmZTczNjM0Yzk2Njc3ZTQyOGY4NDA3MDRiZmJjYWVjMjllIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9jb25zb2xlL3ppcGJhbGwvZDZjZjAyZmU3MzYzNGM5NjY3N2U0MjhmODQwNzA0YmZiY2FlYzI5ZSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQ2Y2YwMmZlNzM2MzRjOTY2NzdlNDI4Zjg0MDcwNGJmYmNhZWMyOWUiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy45IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicHNyL2xvZyI6ICJ+MS4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2V2ZW50LWRpc3BhdGNoZXIiOiAifjIuMSIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9waHB1bml0LWJyaWRnZSI6ICJ+Mi43IiwKICAgICAgICAgICAgICAgICJzeW1mb255L3Byb2Nlc3MiOiAifjIuMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAicHNyL2xvZyI6ICJGb3IgdXNpbmcgdGhlIGNvbnNvbGUgbG9nZ2VyIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2V2ZW50LWRpc3BhdGNoZXIiOiAiIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3Byb2Nlc3MiOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjctZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlN5bWZvbnlcXENvbXBvbmVudFxcQ29uc29sZVxcIjogIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZhYmllbiBQb3RlbmNpZXIiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmYWJpZW5Ac3ltZm9ueS5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IENvbnNvbGUgQ29tcG9uZW50IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAidGltZSI6ICIyMDE1LTA3LTI4IDE1OjE4OjEyIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L2V2ZW50LWRpc3BhdGNoZXIiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi43LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvZXZlbnQtZGlzcGF0Y2hlci5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MzEwYjVmOWE4N2VjMmVhNzVkMjBmZWMwYjAwMTdjNzdjNjZkYWMzIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9ldmVudC1kaXNwYXRjaGVyL3ppcGJhbGwvOTMxMGI1ZjlhODdlYzJlYTc1ZDIwZmVjMGIwMDE3Yzc3YzY2ZGFjMyIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjkzMTBiNWY5YTg3ZWMyZWE3NWQyMGZlYzBiMDAxN2M3N2M2NmRhYzMiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy45IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicHNyL2xvZyI6ICJ+MS4wIiwKICAgICAgICAgICAgICAgICJzeW1mb255L2NvbmZpZyI6ICJ+Mi4wLD49Mi4wLjUiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvZGVwZW5kZW5jeS1pbmplY3Rpb24iOiAifjIuNiIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9leHByZXNzaW9uLWxhbmd1YWdlIjogIn4yLjYiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcGhwdW5pdC1icmlkZ2UiOiAifjIuNyIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9zdG9wd2F0Y2giOiAifjIuMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAic3ltZm9ueS9kZXBlbmRlbmN5LWluamVjdGlvbiI6ICIiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvaHR0cC1rZXJuZWwiOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjctZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlN5bWZvbnlcXENvbXBvbmVudFxcRXZlbnREaXNwYXRjaGVyXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmFiaWVuIFBvdGVuY2llciIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZhYmllbkBzeW1mb255LmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgRXZlbnREaXNwYXRjaGVyIENvbXBvbmVudCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tIiwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wNi0xOCAxOToyMTo1NiIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9maWxlc3lzdGVtIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuNy4zIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2ZpbGVzeXN0ZW0uZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmQ3YjJkZGFmM2Y1NDhmNDI5MmRmNDlhOTlkMTljODUzZDQzZjBiOCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvZmlsZXN5c3RlbS96aXBiYWxsLzJkN2IyZGRhZjNmNTQ4ZjQyOTJkZjQ5YTk5ZDE5Yzg1M2Q0M2YwYjgiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyZDdiMmRkYWYzZjU0OGY0MjkyZGY0OWE5OWQxOWM4NTNkNDNmMGI4IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuOSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInN5bWZvbnkvcGhwdW5pdC1icmlkZ2UiOiAifjIuNyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMi43LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxDb21wb25lbnRcXEZpbGVzeXN0ZW1cXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGYWJpZW4gUG90ZW5jaWVyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZmFiaWVuQHN5bWZvbnkuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBGaWxlc3lzdGVtIENvbXBvbmVudCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tIiwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNS0wNy0wOSAxNjowNzo0MCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9zdG9wd2F0Y2giLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi43LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvU3RvcHdhdGNoLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImIwN2E4NjY3MTliYmFjNTI5NGM2Nzc3MzM0MGY5N2I4NzE3MzMzMTAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L1N0b3B3YXRjaC96aXBiYWxsL2IwN2E4NjY3MTliYmFjNTI5NGM2Nzc3MzM0MGY5N2I4NzE3MzMzMTAiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiMDdhODY2NzE5YmJhYzUyOTRjNjc3NzMzNDBmOTdiODcxNzMzMzEwIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjMuOSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInN5bWZvbnkvcGhwdW5pdC1icmlkZ2UiOiAifjIuNyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMi43LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJTeW1mb255XFxDb21wb25lbnRcXFN0b3B3YXRjaFxcIjogIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZhYmllbiBQb3RlbmNpZXIiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmYWJpZW5Ac3ltZm9ueS5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IFN0b3B3YXRjaCBDb21wb25lbnQiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDctMDEgMTg6MjM6MTYiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkveWFtbCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjcuMyIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9ZYW1sLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjcxMzQwZTk5NjE3MTQ3NGE1M2YzZDI5MTExZDA0NmJlNGFkOGEwZmYiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L1lhbWwvemlwYmFsbC83MTM0MGU5OTYxNzE0NzRhNTNmM2QyOTExMWQwNDZiZTRhZDhhMGZmIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNzEzNDBlOTk2MTcxNDc0YTUzZjNkMjkxMTFkMDQ2YmU0YWQ4YTBmZiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJzeW1mb255L3BocHVuaXQtYnJpZGdlIjogIn4yLjciCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuNy1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcQ29tcG9uZW50XFxZYW1sXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmFiaWVuIFBvdGVuY2llciIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZhYmllbkBzeW1mb255LmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgWWFtbCBDb21wb25lbnQiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTUtMDctMjggMTQ6MDc6MDciCiAgICAgICAgfQogICAgXSwKICAgICJhbGlhc2VzIjogW10sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAic3RhYmxlIiwKICAgICJzdGFiaWxpdHktZmxhZ3MiOiB7CiAgICAgICAgInNhdG9vc2hpL3BocC1jb3ZlcmFsbHMiOiAyMAogICAgfSwKICAgICJwcmVmZXItc3RhYmxlIjogZmFsc2UsCiAgICAicHJlZmVyLWxvd2VzdCI6IGZhbHNlLAogICAgInBsYXRmb3JtIjogewogICAgICAgICJwaHAiOiAiPj01LjYuMCIsCiAgICAgICAgImV4dC1nbXAiOiAiKiIKICAgIH0sCiAgICAicGxhdGZvcm0tZGV2IjogW10KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/AbstractString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CgphYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFN0cmluZyBleHRlbmRzIE9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJvdGVjdGVkICR2YWx1ZTsKICAgIHByaXZhdGUgJGNoZWNrU3RyaW5nRm9ySWxsZWdhbENoYXJzID0gdHJ1ZTsKICAgIHByaXZhdGUgJGFsbG93ZWRDaGFyYWN0ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBUaGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgQVNOLjEgY2xhc3NlcyB3aGljaCByZXByZXNlbnQgc29tZSBzdHJpbmcgb2YgY2hhcmFjdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhbGxvd0NoYXJhY3RlcigkY2hhcmFjdGVyKQogICAgewogICAgICAgICR0aGlzLT5hbGxvd2VkQ2hhcmFjdGVyc1tdID0gJGNoYXJhY3RlcjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dDaGFyYWN0ZXJzKC4uLiRjaGFyYWN0ZXJzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRjaGFyYWN0ZXJzIGFzICRjaGFyYWN0ZXIpIHsKICAgICAgICAgICAgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzW10gPSAkY2hhcmFjdGVyOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dOdW1iZXJzKCkKICAgIHsKICAgICAgICBmb3JlYWNoIChyYW5nZSgnMCcsICc5JykgYXMgJGNoYXIpIHsKICAgICAgICAgICAgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzW10gPSAoc3RyaW5nKSAkY2hhcjsKICAgICAgICB9CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFsbG93QWxsTGV0dGVycygpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsbG93U21hbGxMZXR0ZXJzKCk7CiAgICAgICAgJHRoaXMtPmFsbG93Q2FwaXRhbExldHRlcnMoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dTbWFsbExldHRlcnMoKQogICAgewogICAgICAgIGZvcmVhY2ggKHJhbmdlKCdhJywgJ3onKSBhcyAkY2hhcikgewogICAgICAgICAgICAkdGhpcy0+YWxsb3dlZENoYXJhY3RlcnNbXSA9ICRjaGFyOwogICAgICAgIH0KICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYWxsb3dDYXBpdGFsTGV0dGVycygpCiAgICB7CiAgICAgICAgZm9yZWFjaCAocmFuZ2UoJ0EnLCAnWicpIGFzICRjaGFyKSB7CiAgICAgICAgICAgICR0aGlzLT5hbGxvd2VkQ2hhcmFjdGVyc1tdID0gJGNoYXI7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBhbGxvd1NwYWNlcygpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzW10gPSAnICc7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGFsbG93QWxsKCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tTdHJpbmdGb3JJbGxlZ2FsQ2hhcnMgPSBmYWxzZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmxlbigkdGhpcy0+dmFsdWUpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y2hlY2tTdHJpbmdGb3JJbGxlZ2FsQ2hhcnMpIHsKICAgICAgICAgICAgJHRoaXMtPmNoZWNrU3RyaW5nKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjaGVja1N0cmluZygpCiAgICB7CiAgICAgICAgJHN0cmluZ0xlbmd0aCA9ICR0aGlzLT5nZXRDb250ZW50TGVuZ3RoKCk7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHN0cmluZ0xlbmd0aDsgJGkrKykgewogICAgICAgICAgICBpZiAoaW5fYXJyYXkoJHRoaXMtPnZhbHVlWyRpXSwgJHRoaXMtPmFsbG93ZWRDaGFyYWN0ZXJzKSA9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHR5cGVOYW1lID0gSWRlbnRpZmllcjo6Z2V0TmFtZSgkdGhpcy0+Z2V0VHlwZSgpKTsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkNvdWxkIG5vdCBjcmVhdGUgYSB7JHR5cGVOYW1lfSBmcm9tIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgJ3skdGhpcy0+dmFsdWV9Jy4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygnJyk7CgogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCAkcGFyc2VkT2JqZWN0LT5nZXRUeXBlKCksICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkc3RyaW5nID0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsICRjb250ZW50TGVuZ3RoKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gJGNvbnRlbnRMZW5ndGg7CgogICAgICAgICRwYXJzZWRPYmplY3QtPnZhbHVlID0gJHN0cmluZzsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKICAgICAgICByZXR1cm4gJHBhcnNlZE9iamVjdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWQoJHN0cmluZykKICAgIHsKICAgICAgICAkdGVzdE9iamVjdCA9IG5ldyBzdGF0aWMoJHN0cmluZyk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRlc3RPYmplY3QtPmNoZWNrU3RyaW5nKCk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGV4Y2VwdGlvbikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/AbstractTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBEYXRlSW50ZXJ2YWw7CnVzZSBEYXRlVGltZTsKdXNlIERhdGVUaW1lWm9uZTsKdXNlIEV4Y2VwdGlvbjsKCmFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGltZSBleHRlbmRzIE9iamVjdAp7CiAgICAvKiogQHZhciBEYXRlVGltZSAqLwogICAgcHJvdGVjdGVkICR2YWx1ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRhdGVUaW1lID0gbnVsbCwgJGRhdGVUaW1lWm9uZSA9ICdVVEMnKQogICAgewogICAgICAgIGlmICgkZGF0ZVRpbWUgPT0gbnVsbCB8fCBpc19zdHJpbmcoJGRhdGVUaW1lKSkgewogICAgICAgICAgICAkdGltZVpvbmUgPSBuZXcgRGF0ZVRpbWVab25lKCRkYXRlVGltZVpvbmUpOwogICAgICAgICAgICAkZGF0ZVRpbWVPYmplY3QgPSBuZXcgRGF0ZVRpbWUoJGRhdGVUaW1lLCAkdGltZVpvbmUpOwogICAgICAgICAgICBpZiAoJGRhdGVUaW1lT2JqZWN0ID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZXJyb3JNZXNzYWdlID0gJHRoaXMtPmdldExhc3REYXRlVGltZUVycm9ycygpOwogICAgICAgICAgICAgICAgJGNsYXNzTmFtZSA9IElkZW50aWZpZXI6OmdldE5hbWUoJHRoaXMtPmdldFR5cGUoKSk7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKHNwcmludGYoIkNvdWxkIG5vdCBjcmVhdGUgJXMgZnJvbSBkYXRlIHRpbWUgc3RyaW5nICclcyc6ICVzIiwgJGNsYXNzTmFtZSwgJGRhdGVUaW1lLCAkZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRhdGVUaW1lID0gJGRhdGVUaW1lT2JqZWN0OwogICAgICAgIH0gZWxzZWlmICghJGRhdGVUaW1lIGluc3RhbmNlb2YgRGF0ZVRpbWUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBmaXJzdCBhcmd1bWVudCBmb3Igc29tZSBpbnN0YW5jZSBvZiBBU05fQWJzdHJhY3RUaW1lIGNvbnN0cnVjdG9yJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkZGF0ZVRpbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldExhc3REYXRlVGltZUVycm9ycygpCiAgICB7CiAgICAgICAgJG1lc3NhZ2VzID0gJyc7CiAgICAgICAgJGxhc3RFcnJvcnMgPSBEYXRlVGltZTo6Z2V0TGFzdEVycm9ycygpOwogICAgICAgIGZvcmVhY2ggKCRsYXN0RXJyb3JzWydlcnJvcnMnXSBhcyAkZXJyb3JNZXNzYWdlKSB7CiAgICAgICAgICAgICRtZXNzYWdlcyAuPSAieyRlcnJvck1lc3NhZ2V9LCAiOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN1YnN0cigkbWVzc2FnZXMsIDAsIC0yKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZS0+Zm9ybWF0KCJZLW0tZFx0SDppOnMiKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGV4dHJhY3RUaW1lWm9uZURhdGEoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4LCBEYXRlVGltZSAkZGF0ZVRpbWUpCiAgICB7CiAgICAgICAgJHNpZ24gPSAkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXgrK107CiAgICAgICAgJHRpbWVPZmZzZXRIb3VycyAgID0gaW50dmFsKHN1YnN0cigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAyKSk7CiAgICAgICAgJHRpbWVPZmZzZXRNaW51dGVzID0gaW50dmFsKHN1YnN0cigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4ICsgMiwgMikpOwogICAgICAgICRvZmZzZXRJbmRleCArPSA0OwoKICAgICAgICAkaW50ZXJ2YWwgPSBuZXcgRGF0ZUludGVydmFsKCJQVHskdGltZU9mZnNldEhvdXJzfUh7JHRpbWVPZmZzZXRNaW51dGVzfU0iKTsKICAgICAgICBpZiAoJHNpZ24gPT0gJysnKSB7CiAgICAgICAgICAgICRkYXRlVGltZS0+c3ViKCRpbnRlcnZhbCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGRhdGVUaW1lLT5hZGQoJGludGVydmFsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGF0ZVRpbWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Base128.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBGR1xBU04xOwoKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKCi8qKgogKiBBIGJhc2UtMTI4IGRlY29kZXIuCiAqLwpjbGFzcyBCYXNlMTI4CnsKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX2luaXQoJHZhbHVlLCAxMCk7CiAgICAgICAgJG9jdGV0cyA9IGNocihnbXBfc3RydmFsKGdtcF9hbmQoJHZhbHVlLCAweDdmKSwgMTApKTsKCiAgICAgICAgJHJpZ2h0U2hpZnQgPSBmdW5jdGlvbiAoJG51bWJlciwgJHBvc2l0aW9ucykgewogICAgICAgICAgICByZXR1cm4gZ21wX2RpdigkbnVtYmVyLCBnbXBfcG93KDIsICRwb3NpdGlvbnMpKTsKICAgICAgICB9OwoKICAgICAgICAkdmFsdWUgPSAkcmlnaHRTaGlmdCgkdmFsdWUsIDcpOwogICAgICAgIHdoaWxlIChnbXBfY21wKCR2YWx1ZSwgMCkgPiAwKSB7CiAgICAgICAgICAgICRvY3RldHMgLj0gY2hyKGdtcF9zdHJ2YWwoZ21wX29yKDB4ODAsIGdtcF9hbmQoJHZhbHVlLCAweDdmKSksIDEwKSk7CiAgICAgICAgICAgICR2YWx1ZSA9ICRyaWdodFNoaWZ0KCR2YWx1ZSwgNyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RycmV2KCRvY3RldHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkb2N0ZXRzCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGdpdmVuIG9jdGV0cyByZXByZXNlbnQgYSBtYWxmb3JtZWQgYmFzZS0xMjggdmFsdWUgb3IgdGhlIGRlY29kZWQgdmFsdWUgd291bGQgZXhjZWVkIHRoZSB0aGUgbWF4aW11bSBpbnRlZ2VyIGxlbmd0aAogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKCRvY3RldHMpCiAgICB7CiAgICAgICAgJGJpdHNQZXJPY3RldCA9IDc7CiAgICAgICAgJHZhbHVlID0gZ21wX2luaXQoMCwgMTApOwogICAgICAgICRpID0gMDsKCiAgICAgICAgJGxlZnRTaGlmdCA9IGZ1bmN0aW9uICgkbnVtYmVyLCAkcG9zaXRpb25zKSB7CiAgICAgICAgICAgIHJldHVybiBnbXBfbXVsKCRudW1iZXIsIGdtcF9wb3coMiwgJHBvc2l0aW9ucykpOwogICAgICAgIH07CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJG9jdGV0c1skaV0pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ01hbGZvcm1lZCBiYXNlLTEyOCBlbmNvZGVkIHZhbHVlICgweCVzKS4nLCBzdHJ0b3VwcGVyKGJpbjJoZXgoJG9jdGV0cykpID86ICcwJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkb2N0ZXQgPSBnbXBfaW5pdChvcmQoJG9jdGV0c1skaSsrXSksIDEwKTsKCiAgICAgICAgICAgICRsMSA9ICRsZWZ0U2hpZnQoJHZhbHVlLCAkYml0c1Blck9jdGV0KTsKICAgICAgICAgICAgJHIxID0gZ21wX2FuZCgkb2N0ZXQsIDB4N2YpOwogICAgICAgICAgICAkdmFsdWUgPSBnbXBfYWRkKCRsMSwgJHIxKTsKCiAgICAgICAgICAgIGlmICgwID09PSBnbXBfY21wKGdtcF9hbmQoJG9jdGV0LCAweDgwKSwgMCkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZ21wX3N0cnZhbCgkdmFsdWUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/AttributeTypeAndValue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBPYmplY3RJZGVudGlmaWVyfHN0cmluZyAkb2JqSWRlbnRpZmllcgogICAgICogQHBhcmFtIFxGR1xBU04xXE9iamVjdCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmpJZGVudGlmaWVyLCBPYmplY3QgJHZhbHVlKQogICAgewogICAgICAgIGlmICgkb2JqSWRlbnRpZmllciBpbnN0YW5jZW9mIE9iamVjdElkZW50aWZpZXIgPT0gZmFsc2UpIHsKICAgICAgICAgICAgJG9iaklkZW50aWZpZXIgPSBuZXcgT2JqZWN0SWRlbnRpZmllcigkb2JqSWRlbnRpZmllcik7CiAgICAgICAgfQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG9iaklkZW50aWZpZXIsICR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2hpbGRyZW5bMF0uJzogJy4kdGhpcy0+Y2hpbGRyZW5bMV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/RDNString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVVRGOFN0cmluZzsKCmNsYXNzIFJETlN0cmluZyBleHRlbmRzIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyICRvYmplY3RJZGVudGlmaWVyU3RyaW5nCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXE9iamVjdCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmplY3RJZGVudGlmaWVyU3RyaW5nLCAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKFByaW50YWJsZVN0cmluZzo6aXNWYWxpZCgkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBQcmludGFibGVTdHJpbmcoJHZhbHVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoSUE1U3RyaW5nOjppc1ZhbGlkKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBJQTVTdHJpbmcoJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBVVEY4U3RyaW5nKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG9iamVjdElkZW50aWZpZXJTdHJpbmcsICR2YWx1ZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/RelativeDistinguishedName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxFeGNlcHRpb25cTm90SW1wbGVtZW50ZWRFeGNlcHRpb247CnVzZSBGR1xBU04xXE9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNldDsKCmNsYXNzIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgZXh0ZW5kcyBTZXQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyICRvYmpJZGVudGlmaWVyU3RyaW5nCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcT2JqZWN0ICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG9iaklkZW50aWZpZXJTdHJpbmcsIE9iamVjdCAkdmFsdWUpCiAgICB7CiAgICAgICAgLy8gVE9ETzogVGhpcyBkb2VzIG9ubHkgc3VwcG9ydCBvbmUgZWxlbWVudCBpbiB0aGUgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSBTZXQgYnV0IGl0IGl0IGlzIGRlZmluZWQgYXMgZm9sbG93czoKICAgICAgICAvLyBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lIDo6PSBTRVQgU0laRSAoMS4uTUFYKSBPRiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KG5ldyBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUoJG9iaklkZW50aWZpZXJTdHJpbmcsICR2YWx1ZSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICAvKiogQHZhciBcRkdcQVNOMVxPYmplY3QgJGZpcnN0T2JqZWN0ICovCiAgICAgICAgJGZpcnN0T2JqZWN0ID0gJHRoaXMtPmNoaWxkcmVuWzBdOwogICAgICAgIHJldHVybiAkZmlyc3RPYmplY3QtPl9fdG9TdHJpbmcoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEF0IHRoZSBjdXJyZW50IHZlcnNpb24gdGhpcyBjb2RlIGNhbiBub3Qgd29yayBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ29uc3RydWN0IHJlcXVpcmVzCiAgICAgKiB0aGUgY2xhc3MgdG8gc3VwcG9ydCBhIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHRoaXMgZnVuY3Rpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZCEgRmVlbCBmcmVlIHRvIHN1Ym1pdCBhIHB1bGwgcmVxdWVzdCBvbiBnaXRodWIKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKiBAdGhyb3dzIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Construct.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBBcnJheUFjY2VzczsKdXNlIEFycmF5SXRlcmF0b3I7CnVzZSBDb3VudGFibGU7CnVzZSBJdGVyYXRvcjsKCmFic3RyYWN0IGNsYXNzIENvbnN0cnVjdCBleHRlbmRzIE9iamVjdCBpbXBsZW1lbnRzIENvdW50YWJsZSwgQXJyYXlBY2Nlc3MsIEl0ZXJhdG9yLCBQYXJzYWJsZQp7CiAgICAvKiogQHZhciBcRkdcQVNOMVxPYmplY3RbXSAqLwogICAgcHJvdGVjdGVkICRjaGlsZHJlbjsKICAgIHByaXZhdGUgJGl0ZXJhdG9yUG9zaXRpb247CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcT2JqZWN0W10gJGNoaWxkcmVuIHRoZSB2YXJpYWRpYyB0eXBlIGhpbnQgaXMgY29tbWVudGVkIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svaGh2bS9pc3N1ZXMvNDg1OAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoLyogSEhfRklYTUVbNDg1OF06IHZhcmlhZGljICsgc3RyaWN0ICovIC4uLiRjaGlsZHJlbikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hpbGRyZW4gPSAkY2hpbGRyZW47CiAgICAgICAgJHRoaXMtPml0ZXJhdG9yUG9zaXRpb24gPSAwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQogICAgewogICAgICAgICR0aGlzLT5pdGVyYXRvclBvc2l0aW9uID0gMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaGlsZHJlblskdGhpcy0+aXRlcmF0b3JQb3NpdGlvbl07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGtleSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pdGVyYXRvclBvc2l0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBuZXh0KCkKICAgIHsKICAgICAgICAkdGhpcy0+aXRlcmF0b3JQb3NpdGlvbisrOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGlzc2V0KCR0aGlzLT5jaGlsZHJlblskdGhpcy0+aXRlcmF0b3JQb3NpdGlvbl0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRFeGlzdHMoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkb2Zmc2V0LCAkdGhpcy0+Y2hpbGRyZW4pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRHZXQoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuWyRvZmZzZXRdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRTZXQoJG9mZnNldCwgJHZhbHVlKQogICAgewogICAgICAgIGlmICgkb2Zmc2V0ID09PSBudWxsKSB7CiAgICAgICAgICAgICRvZmZzZXQgPSBjb3VudCgkdGhpcy0+Y2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNoaWxkcmVuWyRvZmZzZXRdID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCgkb2Zmc2V0KQogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5jaGlsZHJlblskb2Zmc2V0XSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgICRsZW5ndGggPSAwOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jaGlsZHJlbiBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRsZW5ndGggKz0gJGNvbXBvbmVudC0+Z2V0T2JqZWN0TGVuZ3RoKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNoaWxkcmVuIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkY29tcG9uZW50LT5nZXRCaW5hcnkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDaGlsZChPYmplY3QgJGNoaWxkKQogICAgewogICAgICAgICR0aGlzLT5jaGlsZHJlbltdID0gJGNoaWxkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDaGlsZHJlbihhcnJheSAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJGNoaWxkKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRuck9mQ2hpbGRyZW4gPSAkdGhpcy0+Z2V0TnVtYmVyT2ZDaGlsZHJlbigpOwogICAgICAgICRjaGlsZFN0cmluZyA9ICRuck9mQ2hpbGRyZW4gPT0gMSA/ICdjaGlsZCcgOiAnY2hpbGRyZW4nOwoKICAgICAgICByZXR1cm4gIlt7JG5yT2ZDaGlsZHJlbn0geyRjaGlsZFN0cmluZ31dIjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDaGlsZHJlbigpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5jaGlsZHJlbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxGR1xBU04xXE9iamVjdFtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDaGlsZHJlbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaGlsZHJlbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEZHXEFTTjFcT2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGaXJzdENoaWxkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuWzBdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5RGF0YQogICAgICogQHBhcmFtIGludCAkb2Zmc2V0SW5kZXgKICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIENvbnN0cnVjdHxzdGF0aWMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzdGF0aWMoKTsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgJHBhcnNlZE9iamVjdC0+Z2V0VHlwZSgpLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICRjaGlsZHJlbiA9IFtdOwogICAgICAgICRvY3RldHNUb1JlYWQgPSAkY29udGVudExlbmd0aDsKICAgICAgICB3aGlsZSAoJG9jdGV0c1RvUmVhZCA+IDApIHsKICAgICAgICAgICAgJG5ld0NoaWxkID0gT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICAkb2N0ZXRzVG9SZWFkIC09ICRuZXdDaGlsZC0+Z2V0T2JqZWN0TGVuZ3RoKCk7CiAgICAgICAgICAgICRjaGlsZHJlbltdID0gJG5ld0NoaWxkOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkQ2hpbGRyZW4oJGNoaWxkcmVuKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCRtb2RlID0gQ09VTlRfTk9STUFMKQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+Y2hpbGRyZW4sICRtb2RlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXRlcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiBuZXcgQXJyYXlJdGVyYXRvcigkdGhpcy0+Y2hpbGRyZW4pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Exception/NotImplementedException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxFeGNlcHRpb247CgpjbGFzcyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbiBleHRlbmRzIFxFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Exception/ParserException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxFeGNlcHRpb247CgpjbGFzcyBQYXJzZXJFeGNlcHRpb24gZXh0ZW5kcyBcRXhjZXB0aW9uCnsKICAgIHByaXZhdGUgJGVycm9yTWVzc2FnZTsKICAgIHByaXZhdGUgJG9mZnNldDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGVycm9yTWVzc2FnZSwgJG9mZnNldCkKICAgIHsKICAgICAgICAkdGhpcy0+ZXJyb3JNZXNzYWdlID0gJGVycm9yTWVzc2FnZTsKICAgICAgICAkdGhpcy0+b2Zmc2V0ID0gJG9mZnNldDsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCJBU04uMSBQYXJzZXIgRXhjZXB0aW9uIGF0IG9mZnNldCB7JHRoaXMtPm9mZnNldH06IHskdGhpcy0+ZXJyb3JNZXNzYWdlfSIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPZmZzZXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b2Zmc2V0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/ExplicitlyTaggedObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CgovKioKICogQ2xhc3MgRXhwbGljaXRseVRhZ2dlZE9iamVjdCBkZWNvcmF0ZSBhbiBpbm5lciBvYmplY3Qgd2l0aCBhbiBhZGRpdGlvbmFsIHRhZyB0aGF0IGdpdmVzIGluZm9ybWF0aW9uIGFib3V0CiAqIGl0cyBjb250ZXh0IHNwZWNpZmljIG1lYW5pbmcuCiAqCiAqIEV4cGxhbmF0aW9uIHRha2VuIGZyb20gQSBMYXltYW4ncyBHdWlkZSB0byBhIFN1YnNldCBvZiBBU04uMSwgQkVSLCBhbmQgREVSOgogKiA+Pj4gQW4gUlNBIExhYm9yYXRvcmllcyBUZWNobmljYWwgTm90ZQogKiA+Pj4gQnVydG9uIFMuIEthbGlza2kgSnIuCiAqID4+PiBSZXZpc2VkIE5vdmVtYmVyIDEsIDE5OTMKICoKICogWy4uLl0KICogRXhwbGljaXRseSB0YWdnZWQgdHlwZXMgYXJlIGRlcml2ZWQgZnJvbSBvdGhlciB0eXBlcyBieSBhZGRpbmcgYW4gb3V0ZXIgdGFnIHRvIHRoZSB1bmRlcmx5aW5nIHR5cGUuCiAqIEluIGVmZmVjdCwgZXhwbGljaXRseSB0YWdnZWQgdHlwZXMgYXJlIHN0cnVjdHVyZWQgdHlwZXMgY29uc2lzdGluZyBvZiBvbmUgY29tcG9uZW50LCB0aGUgdW5kZXJseWluZyB0eXBlLgogKiBFeHBsaWNpdCB0YWdnaW5nIGlzIGRlbm90ZWQgYnkgdGhlIEFTTi4xIGtleXdvcmRzIFtjbGFzcyBudW1iZXJdIEVYUExJQ0lUIChzZWUgU2VjdGlvbiA1LjIpLgogKiBbLi4uXQogKgogKiBAc2VlIGh0dHA6Ly9sdWNhLm50b3Aub3JnL1RlYWNoaW5nL0FwcHVudGkvYXNuMS5odG1sCiAqLwpjbGFzcyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0IGV4dGVuZHMgT2JqZWN0CnsKICAgIC8qKiBAdmFyIFxGR1xBU04xXE9iamVjdFtdICovCiAgICBwcml2YXRlICRkZWNvcmF0ZWRPYmplY3RzOwogICAgcHJpdmF0ZSAkdGFnOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkdGFnCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcT2JqZWN0ICRvYmplY3RzLC4uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHRhZywgLyogSEhfRklYTUVbNDg1OF06IHZhcmlhZGljICsgc3RyaWN0ICovIC4uLiRvYmplY3RzKQogICAgewogICAgICAgICR0aGlzLT50YWcgPSAkdGFnOwogICAgICAgICR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzID0gJG9iamVjdHM7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgICRsZW5ndGggPSAwOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzIGFzICRvYmplY3QpIHsKICAgICAgICAgICAgJGxlbmd0aCArPSAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGVuZ3RoOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICRlbmNvZGVkID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRlY29yYXRlZE9iamVjdHMgYXMgJG9iamVjdCkgewogICAgICAgICAgICAkZW5jb2RlZCAuPSAkb2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZW5jb2RlZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRsZW5ndGggPSBjb3VudCgkdGhpcy0+ZGVjb3JhdGVkT2JqZWN0cykpIHsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHJldHVybiAiQ29udGV4dCBzcGVjaWZpYyBlbXB0eSBvYmplY3Qgd2l0aCB0YWcgW3skdGhpcy0+dGFnfV0iOwogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgJGRlY29yYXRlZFR5cGUgPSBJZGVudGlmaWVyOjpnZXRTaG9ydE5hbWUoJHRoaXMtPmRlY29yYXRlZE9iamVjdHNbMF0tPmdldFR5cGUoKSk7CiAgICAgICAgICAgIHJldHVybiAiQ29udGV4dCBzcGVjaWZpYyAkZGVjb3JhdGVkVHlwZSB3aXRoIHRhZyBbeyR0aGlzLT50YWd9XSI7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuICIkbGVuZ3RoIGNvbnRleHQgc3BlY2lmaWMgb2JqZWN0cyB3aXRoIHRhZyBbeyR0aGlzLT50YWd9XSI7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gb3JkKCR0aGlzLT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmNyZWF0ZShJZGVudGlmaWVyOjpDTEFTU19DT05URVhUX1NQRUNJRklDLCB0cnVlLCAkdGhpcy0+dGFnKTsKCiAgICAgICAgcmV0dXJuIGlzX2ludCgkaWRlbnRpZmllcikgPyBjaHIoJGlkZW50aWZpZXIpIDogJGlkZW50aWZpZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRhZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50YWc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXIgPSBzZWxmOjpwYXJzZUJpbmFyeUlkZW50aWZpZXIoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgJGZpcnN0SWRlbnRpZmllck9jdGV0ID0gb3JkKCRpZGVudGlmaWVyKTsKICAgICAgICBhc3NlcnQoSWRlbnRpZmllcjo6aXNDb250ZXh0U3BlY2lmaWNDbGFzcygkZmlyc3RJZGVudGlmaWVyT2N0ZXQpLCAnaWRlbnRpZmllciBvY3RldCBzaG91bGQgaW5kaWNhdGUgY29udGV4dCBzcGVjaWZpYyBjbGFzcycpOwogICAgICAgIGFzc2VydChJZGVudGlmaWVyOjppc0NvbnN0cnVjdGVkKCRmaXJzdElkZW50aWZpZXJPY3RldCksICdpZGVudGlmaWVyIG9jdGV0IHNob3VsZCBpbmRpY2F0ZSBjb25zdHJ1Y3RlZCBvYmplY3QnKTsKICAgICAgICAkdGFnID0gSWRlbnRpZmllcjo6Z2V0VGFnTnVtYmVyKCRpZGVudGlmaWVyKTsKCiAgICAgICAgJHRvdGFsQ29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkcmVtYWluaW5nQ29udGVudExlbmd0aCA9ICR0b3RhbENvbnRlbnRMZW5ndGg7CgogICAgICAgICRvZmZzZXRJbmRleE9mRGVjb3JhdGVkT2JqZWN0ID0gJG9mZnNldEluZGV4OwogICAgICAgICRkZWNvcmF0ZWRPYmplY3RzID0gW107CgogICAgICAgIHdoaWxlICgkcmVtYWluaW5nQ29udGVudExlbmd0aCA+IDApIHsKICAgICAgICAgICAgJG5leHRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRyZW1haW5pbmdDb250ZW50TGVuZ3RoIC09ICRuZXh0T2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGRlY29yYXRlZE9iamVjdHNbXSA9ICRuZXh0T2JqZWN0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZW1haW5pbmdDb250ZW50TGVuZ3RoICE9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQ29udGV4dC1TcGVjaWZpYyBleHBsaWNpdGx5IHRhZ2dlZCBvYmplY3QgWyR0YWddIHN0YXJ0aW5nIGF0IG9mZnNldCAkb2Zmc2V0SW5kZXhPZkRlY29yYXRlZE9iamVjdCBzcGVjaWZpZXMgYSBsZW5ndGggb2YgJHRvdGFsQ29udGVudExlbmd0aCBvY3RldHMgYnV0ICRyZW1haW5pbmdDb250ZW50TGVuZ3RoIHJlbWFpbiBhZnRlciBwYXJzaW5nIHRoZSBjb250ZW50IiwgJG9mZnNldEluZGV4T2ZEZWNvcmF0ZWRPYmplY3QpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCR0YWcsIC4uLiRkZWNvcmF0ZWRPYmplY3RzKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCR0b3RhbENvbnRlbnRMZW5ndGgpOwogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Identifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CgovKioKICogVGhlIElkZW50aWZpZXIgZW5jb2RlcyB0aGUgQVNOLjEgdGFnIChjbGFzcyBhbmQgbnVtYmVyKSBvZiB0aGUgdHlwZSBvZiBhIGRhdGEgdmFsdWUuCiAqCiAqIEV2ZXJ5IGlkZW50aWZpZXIgd2hvc2UgbnVtYmVyIGlzIGluIHRoZSByYW5nZSAwIHRvIDMwIGhhcyB0aGUgZm9sbG93aW5nIHN0cnVjdHVyZToKICoKICogQml0czogICAgOCAgNyAgICA2ICAgIDUgIDQgIDMgIDIgIDEKICogICAgICAgfCBDbGFzcyB8IFAvQyB8ICAgVGFnIG51bWJlciAgfAogKiAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAqCiAqIEJpdHMgOCBhbmQgNyBkZWZpbmUgdGhlIGNsYXNzIG9mIHRoaXMgdHlwZSAoIFVuaXZlcnNhbCwgQXBwbGljYXRpb24sIENvbnRleHQtc3BlY2lmaWMgb3IgUHJpdmF0ZSkuCiAqIEJpdCA2IGVuY29kZWQgd2hldGhlciB0aGlzIHR5cGUgaXMgcHJpbWl0aXZlIG9yIGNvbnN0cnVjdGVkCiAqIFRoZSByZW1haW5pbmcgYml0cyA1IC0gMSBlbmNvZGUgdGhlIHRhZyBudW1iZXIKICovCmNsYXNzIElkZW50aWZpZXIKewogICAgY29uc3QgQ0xBU1NfVU5JVkVSU0FMICAgICAgICA9IDB4MDA7CiAgICBjb25zdCBDTEFTU19BUFBMSUNBVElPTiAgICAgID0gMHgwMTsKICAgIGNvbnN0IENMQVNTX0NPTlRFWFRfU1BFQ0lGSUMgPSAweDAyOwogICAgY29uc3QgQ0xBU1NfUFJJVkFURSAgICAgICAgICA9IDB4MDM7CgogICAgY29uc3QgRU9DICAgICAgICAgICAgICAgPSAweDAwOyAvLyB1bnN1cHBvcnRlZCBmb3Igbm93CiAgICBjb25zdCBCT09MRUFOICAgICAgICAgICA9IDB4MDE7CiAgICBjb25zdCBJTlRFR0VSICAgICAgICAgICA9IDB4MDI7CiAgICBjb25zdCBCSVRTVFJJTkcgICAgICAgICA9IDB4MDM7CiAgICBjb25zdCBPQ1RFVFNUUklORyAgICAgICA9IDB4MDQ7CiAgICBjb25zdCBOVUxMICAgICAgICAgICAgICA9IDB4MDU7CiAgICBjb25zdCBPQkpFQ1RfSURFTlRJRklFUiA9IDB4MDY7CiAgICBjb25zdCBPQkpFQ1RfREVTQ1JJUFRPUiA9IDB4MDc7CiAgICBjb25zdCBFWFRFUk5BTCAgICAgICAgICA9IDB4MDg7IC8vIHVuc3VwcG9ydGVkIGZvciBub3cKICAgIGNvbnN0IFJFQUwgICAgICAgICAgICAgID0gMHgwOTsgLy8gdW5zdXBwb3J0ZWQgZm9yIG5vdwogICAgY29uc3QgRU5VTUVSQVRFRCAgICAgICAgPSAweDBBOwogICAgY29uc3QgRU1CRURERURfUERWICAgICAgPSAweDBCOyAvLyB1bnN1cHBvcnRlZCBmb3Igbm93CiAgICBjb25zdCBVVEY4X1NUUklORyAgICAgICA9IDB4MEM7CiAgICBjb25zdCBSRUxBVElWRV9PSUQgICAgICA9IDB4MEQ7CiAgICAvLyB2YWx1ZSAweDBFIGFuZCAweDBGIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZQoKICAgIGNvbnN0IFNFUVVFTkNFICAgICAgICAgID0gMHgzMDsKICAgIGNvbnN0IFNFVCAgICAgICAgICAgICAgID0gMHgzMTsKICAgIGNvbnN0IE5VTUVSSUNfU1RSSU5HICAgID0gMHgxMjsKICAgIGNvbnN0IFBSSU5UQUJMRV9TVFJJTkcgID0gMHgxMzsKICAgIGNvbnN0IFQ2MV9TVFJJTkcgICAgICAgID0gMHgxNDsgLy8gc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFRlbGV0ZXh0U3RyaW5nCiAgICBjb25zdCBWSURFT1RFWFRfU1RSSU5HICA9IDB4MTU7CiAgICBjb25zdCBJQTVfU1RSSU5HICAgICAgICA9IDB4MTY7CiAgICBjb25zdCBVVENfVElNRSAgICAgICAgICA9IDB4MTc7CiAgICBjb25zdCBHRU5FUkFMSVpFRF9USU1FICA9IDB4MTg7CiAgICBjb25zdCBHUkFQSElDX1NUUklORyAgICA9IDB4MTk7CiAgICBjb25zdCBWSVNJQkxFX1NUUklORyAgICA9IDB4MUE7CiAgICBjb25zdCBHRU5FUkFMX1NUUklORyAgICA9IDB4MUI7CiAgICBjb25zdCBVTklWRVJTQUxfU1RSSU5HICA9IDB4MUM7CiAgICBjb25zdCBDSEFSQUNURVJfU1RSSU5HICA9IDB4MUQ7IC8vIFVucmVzdHJpY3RlZCBjaGFyYWN0ZXIgdHlwZQogICAgY29uc3QgQk1QX1NUUklORyAgICAgICAgPSAweDFFOwoKICAgIGNvbnN0IExPTkdfRk9STSAgICAgICAgID0gMHgxRjsKICAgIGNvbnN0IElTX0NPTlNUUlVDVEVEICAgID0gMHgyMDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW4gaWRlbnRpZmllci4gU2hvcnQgZm9ybSBpZGVudGlmaWVycyBhcmUgcmV0dXJuZWQgYXMgaW50ZWdlcnMKICAgICAqIGZvciBCQywgbG9uZyBmb3JtIGlkZW50aWZpZXJzIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBzdHJpbmcgb2Ygb2N0ZXRzLgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGNsYXNzCiAgICAgKiBAcGFyYW0gYm9vbCAkaXNDb25zdHJ1Y3RlZAogICAgICogQHBhcmFtIGludCAkdGFnTnVtYmVyCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24gaWYgdGhlIGdpdmVuIGFyZ3VtZW50cyBhcmUgaW52YWxpZAogICAgICoKICAgICAqIEByZXR1cm4gaW50fHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZSgkY2xhc3MsICRpc0NvbnN0cnVjdGVkLCAkdGFnTnVtYmVyKQogICAgewogICAgICAgIGlmICghaXNfbnVtZXJpYygkY2xhc3MpIHx8ICRjbGFzcyA8IHNlbGY6OkNMQVNTX1VOSVZFUlNBTCB8fCAkY2xhc3MgPiBzZWxmOjpDTEFTU19QUklWQVRFKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oc3ByaW50ZignSW52YWxpZCBjbGFzcyAlZCBnaXZlbicsICRjbGFzcykpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc19ib29sKCRpc0NvbnN0cnVjdGVkKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJcJGlzQ29uc3RydWN0ZWQgbXVzdCBiZSBhIGJvb2xlYW4gdmFsdWUgKCRpc0NvbnN0cnVjdGVkIGdpdmVuKSIpOwogICAgICAgIH0KCiAgICAgICAgJHRhZ051bWJlciA9IHNlbGY6Om1ha2VOdW1lcmljKCR0YWdOdW1iZXIpOwogICAgICAgIGlmICgkdGFnTnVtYmVyIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKHNwcmludGYoJ0ludmFsaWQgJHRhZ051bWJlciAlZCBnaXZlbi4gWW91IGNhbiBvbmx5IHVzZSBwb3NpdGl2ZSBpbnRlZ2Vycy4nLCAkdGFnTnVtYmVyKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRhZ051bWJlciA8IHNlbGY6OkxPTkdfRk9STSkgewogICAgICAgICAgICByZXR1cm4gKCRjbGFzcyA8PCA2KSB8ICgkaXNDb25zdHJ1Y3RlZCA8PCA1KSB8ICR0YWdOdW1iZXI7CiAgICAgICAgfQoKICAgICAgICAkZmlyc3RPY3RldCA9ICgkY2xhc3MgPDwgNikgfCAoJGlzQ29uc3RydWN0ZWQgPDwgNSkgfCBzZWxmOjpMT05HX0ZPUk07CgogICAgICAgIC8vIFRhZyBudW1iZXJzIGZvcm1hdHRlZCBpbiBsb25nIGZvcm0gYXJlIGJhc2UtMTI4IGVuY29kZWQuIFNlZSBYLjYwOSM4LjEuMi40CiAgICAgICAgcmV0dXJuIGNocigkZmlyc3RPY3RldCkuQmFzZTEyODo6ZW5jb2RlKCR0YWdOdW1iZXIpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDb25zdHJ1Y3RlZCgkaWRlbnRpZmllck9jdGV0KQogICAgewogICAgICAgIHJldHVybiAoJGlkZW50aWZpZXJPY3RldCAmIHNlbGY6OklTX0NPTlNUUlVDVEVEKSA9PT0gc2VsZjo6SVNfQ09OU1RSVUNURUQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0xvbmdGb3JtKCRpZGVudGlmaWVyT2N0ZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICgkaWRlbnRpZmllck9jdGV0ICYgc2VsZjo6TE9OR19GT1JNKSA9PT0gc2VsZjo6TE9OR19GT1JNOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBtYXBwZWQgQVNOLjEgdHlwZSB3aXRoIGEgcHJlY2VkaW5nICJBU04uMSAiLgogICAgICoKICAgICAqIEV4YW1wbGU6IEFTTi4xIE9jdGV0IFN0cmluZwogICAgICoKICAgICAqIEBzZWUgSWRlbnRpZmllcjo6Z2V0U2hvcnROYW1lKCkKICAgICAqCiAgICAgKiBAcGFyYW0gaW50fHN0cmluZyAkaWRlbnRpZmllcgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0TmFtZSgkaWRlbnRpZmllcikKICAgIHsKICAgICAgICAkaWRlbnRpZmllck9jdGV0ID0gc2VsZjo6bWFrZU51bWVyaWMoJGlkZW50aWZpZXIpOwoKICAgICAgICAkdHlwZU5hbWUgPSBzdGF0aWM6OmdldFNob3J0TmFtZSgkaWRlbnRpZmllcik7CgogICAgICAgIGlmICgoJGlkZW50aWZpZXJPY3RldCAmIHNlbGY6OkxPTkdfRk9STSkgPCBzZWxmOjpMT05HX0ZPUk0pIHsKICAgICAgICAgICAgJHR5cGVOYW1lID0gIkFTTi4xIHskdHlwZU5hbWV9IjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdHlwZU5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHNob3J0IHZlcnNpb24gb2YgdGhlIHR5cGUgbmFtZS4KICAgICAqCiAgICAgKiBJZiB0aGUgZ2l2ZW4gaWRlbnRpZmllciBvY3RldCBjYW4gYmUgbWFwcGVkIHRvIGEga25vd24gdW5pdmVyc2FsIHR5cGUgdGhpcyB3aWxsCiAgICAgKiByZXR1cm4gaXRzIG5hbWUuIEVsc2UgSWRlbnRpZmllcjo6Z2V0Q2xhc3NEZXNjcmlwdGlvbigpIGlzIHVzZWQgdG8gcmV0cmlldmUKICAgICAqIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpZGVudGlmaWVyLgogICAgICoKICAgICAqIEBzZWUgSWRlbnRpZmllcjo6Z2V0TmFtZSgpCiAgICAgKiBAc2VlIElkZW50aWZpZXI6OmdldENsYXNzRGVzY3JpcHRpb24oKQogICAgICoKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpZGVudGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTaG9ydE5hbWUoJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXJPY3RldCA9IHNlbGY6Om1ha2VOdW1lcmljKCRpZGVudGlmaWVyKTsKCiAgICAgICAgc3dpdGNoICgkaWRlbnRpZmllck9jdGV0KSB7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6RU9DOgogICAgICAgICAgICAgICAgcmV0dXJuICdFbmQtb2YtY29udGVudHMgb2N0ZXQnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkJPT0xFQU46CiAgICAgICAgICAgICAgICByZXR1cm4gJ0Jvb2xlYW4nOwogICAgICAgICAgICBjYXNlIHNlbGY6OklOVEVHRVI6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0ludGVnZXInOwogICAgICAgICAgICBjYXNlIHNlbGY6OkJJVFNUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiAnQml0IFN0cmluZyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6T0NURVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ09jdGV0IFN0cmluZyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6TlVMTDoKICAgICAgICAgICAgICAgIHJldHVybiAnTlVMTCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6T0JKRUNUX0lERU5USUZJRVI6CiAgICAgICAgICAgICAgICByZXR1cm4gJ09iamVjdCBJZGVudGlmaWVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpPQkpFQ1RfREVTQ1JJUFRPUjoKICAgICAgICAgICAgICAgIHJldHVybiAnT2JqZWN0IERlc2NyaXB0b3InOwogICAgICAgICAgICBjYXNlIHNlbGY6OkVYVEVSTkFMOgogICAgICAgICAgICAgICAgcmV0dXJuICdFeHRlcm5hbCBUeXBlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpSRUFMOgogICAgICAgICAgICAgICAgcmV0dXJuICdSZWFsJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpFTlVNRVJBVEVEOgogICAgICAgICAgICAgICAgcmV0dXJuICdFbnVtZXJhdGVkJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpFTUJFRERFRF9QRFY6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0VtYmVkZGVkIFBEVic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6VVRGOF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1VURjggU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpSRUxBVElWRV9PSUQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1JlbGF0aXZlIE9JRCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U0VRVUVOQ0U6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NlcXVlbmNlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpTRVQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NldCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6TlVNRVJJQ19TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ051bWVyaWMgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQUklOVEFCTEVfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdQcmludGFibGUgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpUNjFfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdUNjEgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpWSURFT1RFWFRfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdWaWRlb3RleHQgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpJQTVfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdJQTUgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpVVENfVElNRToKICAgICAgICAgICAgICAgIHJldHVybiAnVVRDIFRpbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkdFTkVSQUxJWkVEX1RJTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0dlbmVyYWxpemVkIFRpbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkdSQVBISUNfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuICdHcmFwaGljIFN0cmluZyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6VklTSUJMRV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1Zpc2libGUgU3RyaW5nJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpHRU5FUkFMX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiAnR2VuZXJhbCBTdHJpbmcnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlVOSVZFUlNBTF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1VuaXZlcnNhbCBTdHJpbmcnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNIQVJBQ1RFUl9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0NoYXJhY3RlciBTdHJpbmcnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkJNUF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0JNUCBTdHJpbmcnOwoKICAgICAgICAgICAgY2FzZSAweDBFOgogICAgICAgICAgICAgICAgcmV0dXJuICdSRVNFUlZFRCAoMHgwRSknOwogICAgICAgICAgICBjYXNlIDB4MEY6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1JFU0VSVkVEICgweDBGKSc7CgogICAgICAgICAgICBjYXNlIHNlbGY6OkxPTkdfRk9STToKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRjbGFzc0Rlc2NyaXB0aW9uID0gc2VsZjo6Z2V0Q2xhc3NEZXNjcmlwdGlvbigkaWRlbnRpZmllcik7CgogICAgICAgICAgICAgICAgaWYgKGlzX2ludCgkaWRlbnRpZmllcikpIHsKICAgICAgICAgICAgICAgICAgICAkaWRlbnRpZmllciA9IGNocigkaWRlbnRpZmllcik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICIkY2xhc3NEZXNjcmlwdGlvbiAoMHgiLnN0cnRvdXBwZXIoYmluMmhleCgkaWRlbnRpZmllcikpLicpJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mb3JtYXRpb24gZW5jb2RlZCBpbiBhIGdpdmVuIGlkZW50aWZpZXIgb2N0ZXQuCiAgICAgKgogICAgICogVGhlIGZpcnN0IHRocmVlIChtb3N0IHNpZ25pZmljYW50KSBieXRlcyBhcmUgZXZhbHVhdGVkIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGEKICAgICAqIGNvbnN0cnVjdGVkIG9yIHByaW1pdGl2ZSB0eXBlIGFuZCBpZiBpdCBpcyBlaXRoZXIgdW5pdmVyc2FsLCBhcHBsaWNhdGlvbiwgY29udGV4dC1zcGVjaWZpYyBvcgogICAgICogcHJpdmF0ZS4KICAgICAqCiAgICAgKiBFeGFtcGxlOgogICAgICogICAgIENvbnN0cnVjdGVkIGNvbnRleHQtc3BlY2lmaWMKICAgICAqICAgICBQcmltaXRpdmUgdW5pdmVyc2FsCiAgICAgKgogICAgICogQHBhcmFtIGludHxzdHJpbmcgJGlkZW50aWZpZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldENsYXNzRGVzY3JpcHRpb24oJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXJPY3RldCA9IHNlbGY6Om1ha2VOdW1lcmljKCRpZGVudGlmaWVyKTsKCiAgICAgICAgaWYgKHNlbGY6OmlzQ29uc3RydWN0ZWQoJGlkZW50aWZpZXJPY3RldCkpIHsKICAgICAgICAgICAgJGNsYXNzRGVzY3JpcHRpb24gPSAnQ29uc3RydWN0ZWQgJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2xhc3NEZXNjcmlwdGlvbiA9ICdQcmltaXRpdmUgJzsKICAgICAgICB9CiAgICAgICAgJGNsYXNzQml0cyA9ICRpZGVudGlmaWVyT2N0ZXQgPj4gNjsKICAgICAgICBzd2l0Y2ggKCRjbGFzc0JpdHMpIHsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDTEFTU19VTklWRVJTQUw6CiAgICAgICAgICAgICAgICAkY2xhc3NEZXNjcmlwdGlvbiAuPSAndW5pdmVyc2FsJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNMQVNTX0FQUExJQ0FUSU9OOgogICAgICAgICAgICAgICAgJGNsYXNzRGVzY3JpcHRpb24gLj0gJ2FwcGxpY2F0aW9uJzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNMQVNTX0NPTlRFWFRfU1BFQ0lGSUM6CiAgICAgICAgICAgICAgICAkdGFnTnVtYmVyID0gc2VsZjo6Z2V0VGFnTnVtYmVyKCRpZGVudGlmaWVyKTsKICAgICAgICAgICAgICAgICRjbGFzc0Rlc2NyaXB0aW9uID0gIlskdGFnTnVtYmVyXSBDb250ZXh0LXNwZWNpZmljIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNMQVNTX1BSSVZBVEU6CiAgICAgICAgICAgICAgICAkY2xhc3NEZXNjcmlwdGlvbiAuPSAncHJpdmF0ZSc7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gIklOVkFMSUQgSURFTlRJRklFUiBPQ1RFVDogeyRpZGVudGlmaWVyT2N0ZXR9IjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY2xhc3NEZXNjcmlwdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpZGVudGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRUYWdOdW1iZXIoJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGZpcnN0T2N0ZXQgPSBzZWxmOjptYWtlTnVtZXJpYygkaWRlbnRpZmllcik7CiAgICAgICAgJHRhZ051bWJlciA9ICRmaXJzdE9jdGV0ICYgc2VsZjo6TE9OR19GT1JNOwoKICAgICAgICBpZiAoJHRhZ051bWJlciA8IHNlbGY6OkxPTkdfRk9STSkgewogICAgICAgICAgICByZXR1cm4gJHRhZ051bWJlcjsKICAgICAgICB9CgogICAgICAgIGlmIChpc19udW1lcmljKCRpZGVudGlmaWVyKSkgewogICAgICAgICAgICAkaWRlbnRpZmllciA9IGNocigkaWRlbnRpZmllcik7CiAgICAgICAgfQogICAgICAgIHJldHVybiBCYXNlMTI4OjpkZWNvZGUoc3Vic3RyKCRpZGVudGlmaWVyLCAxKSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1VuaXZlcnNhbENsYXNzKCRpZGVudGlmaWVyKQogICAgewogICAgICAgICRpZGVudGlmaWVyID0gc2VsZjo6bWFrZU51bWVyaWMoJGlkZW50aWZpZXIpOwoKICAgICAgICByZXR1cm4gJGlkZW50aWZpZXIgPj4gNiA9PSBzZWxmOjpDTEFTU19VTklWRVJTQUw7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0FwcGxpY2F0aW9uQ2xhc3MoJGlkZW50aWZpZXIpCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXIgPSBzZWxmOjptYWtlTnVtZXJpYygkaWRlbnRpZmllcik7CgogICAgICAgIHJldHVybiAkaWRlbnRpZmllciA+PiA2ID09IHNlbGY6OkNMQVNTX0FQUExJQ0FUSU9OOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDb250ZXh0U3BlY2lmaWNDbGFzcygkaWRlbnRpZmllcikKICAgIHsKICAgICAgICAkaWRlbnRpZmllciA9IHNlbGY6Om1ha2VOdW1lcmljKCRpZGVudGlmaWVyKTsKCiAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyID4+IDYgPT0gc2VsZjo6Q0xBU1NfQ09OVEVYVF9TUEVDSUZJQzsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUHJpdmF0ZUNsYXNzKCRpZGVudGlmaWVyKQogICAgewogICAgICAgICRpZGVudGlmaWVyID0gc2VsZjo6bWFrZU51bWVyaWMoJGlkZW50aWZpZXIpOwoKICAgICAgICByZXR1cm4gJGlkZW50aWZpZXIgPj4gNiA9PSBzZWxmOjpDTEFTU19QUklWQVRFOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG1ha2VOdW1lcmljKCRpZGVudGlmaWVyT2N0ZXQpCiAgICB7CiAgICAgICAgaWYgKCFpc19udW1lcmljKCRpZGVudGlmaWVyT2N0ZXQpKSB7CiAgICAgICAgICAgIHJldHVybiBvcmQoJGlkZW50aWZpZXJPY3RldCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyT2N0ZXQ7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Object.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCaXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCb29sZWFuOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcRW51bWVyYXRlZDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdlbmVyYWxpemVkVGltZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXQ7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxVVENUaW1lOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcTnVtZXJpY1N0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFVURjhTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxVbml2ZXJzYWxTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxDaGFyYWN0ZXJTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxHZW5lcmFsU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVmlzaWJsZVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdyYXBoaWNTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCTVBTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxUNjFTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3REZXNjcmlwdG9yOwp1c2UgTG9naWNFeGNlcHRpb247CgovKioKICogQ2xhc3MgT2JqZWN0IGlzIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgY29uY3JldGUgQVNOLjEgb2JqZWN0cy4KICovCmFic3RyYWN0IGNsYXNzIE9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJGNvbnRlbnRMZW5ndGg7CiAgICBwcml2YXRlICRuck9mTGVuZ3RoT2N0ZXRzOwoKICAgIC8qKgogICAgICogTXVzdCByZXR1cm4gdGhlIG51bWJlciBvZiBvY3RldHMgb2YgdGhlIGNvbnRlbnQgcGFydC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpOwoKICAgIC8qKgogICAgICogRW5jb2RlIHRoZSBvYmplY3QgdXNpbmcgREVSIGVuY29kaW5nLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLjY5MCNERVJfZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdHMgdmFsdWUKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoaXMgb2JqZWN0IGluIGEgbm9uIGVuY29kZWQgZm9ybS4KICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJpbnQgdGhlIHZhbHVlIGluIGh1bWFuIHJlYWRhYmxlIGZvcm0uCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBvYmplY3QgdHlwZSBvY3RldC4KICAgICAqIFRoaXMgc2hvdWxkIHVzZSB0aGUgY2xhc3MgY29uc3RhbnRzIG9mIElkZW50aWZpZXIuCiAgICAgKgogICAgICogQHNlZSBJZGVudGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIGlkZW50aWZpZXIgb2N0ZXRzLiBJZiBhbiBpbmhlcml0aW5nIGNsYXNzIG1vZGVscyBhIHRhZyB3aXRoCiAgICAgKiB0aGUgbG9uZyBmb3JtIGlkZW50aWZpZXIgZm9ybWF0LCBpdCBNVVNUIHJlaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvCiAgICAgKiByZXR1cm4gYWxsIG9jdGV0cyBvZiB0aGUgaWRlbnRpZmllci4KICAgICAqCiAgICAgKiBAdGhyb3dzIExvZ2ljRXhjZXB0aW9uIElmIHRoZSBpZGVudGlmaWVyIGZvcm1hdCBpcyBsb25nIGZvcm0KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBJZGVudGlmaWVyIGFzIGEgc2V0IG9mIG9jdGV0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJGZpcnN0T2N0ZXQgPSAkdGhpcy0+Z2V0VHlwZSgpOwoKICAgICAgICBpZiAoSWRlbnRpZmllcjo6aXNMb25nRm9ybSgkZmlyc3RPY3RldCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKHNwcmludGYoJ0lkZW50aWZpZXIgb2YgJXMgdXNlcyB0aGUgbG9uZyBmb3JtIGFuZCBtdXN0IHRoZXJlZm9yIG92ZXJyaWRlICJPYmplY3Q6OmdldElkZW50aWZpZXIoKSIuJywgZ2V0X2NsYXNzKCR0aGlzKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNocigkZmlyc3RPY3RldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgdGhpcyBvYmplY3QgdXNpbmcgREVSIGVuY29kaW5nLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIHRoZSBmdWxsIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcGxldGUgb2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCaW5hcnkoKQogICAgewogICAgICAgICRyZXN1bHQgID0gJHRoaXMtPmdldElkZW50aWZpZXIoKTsKICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5jcmVhdGVMZW5ndGhQYXJ0KCk7CiAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+Z2V0RW5jb2RlZFZhbHVlKCk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlTGVuZ3RoUGFydCgpCiAgICB7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSAkdGhpcy0+Z2V0Q29udGVudExlbmd0aCgpOwogICAgICAgICRuck9mTGVuZ3RoT2N0ZXRzID0gJHRoaXMtPmdldE51bWJlck9mTGVuZ3RoT2N0ZXRzKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgaWYgKCRuck9mTGVuZ3RoT2N0ZXRzID09IDEpIHsKICAgICAgICAgICAgcmV0dXJuIGNocigkY29udGVudExlbmd0aCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gdGhlIGZpcnN0IGxlbmd0aCBvY3RldCBkZXRlcm1pbmVzIHRoZSBudW1iZXIgc3Vic2VxdWVudCBsZW5ndGggb2N0ZXRzCiAgICAgICAgICAgICRsZW5ndGhPY3RldHMgPSBjaHIoMHg4MCB8ICgkbnJPZkxlbmd0aE9jdGV0cyAtIDEpKTsKICAgICAgICAgICAgZm9yICgkc2hpZnRMZW5ndGggPSA4ICogKCRuck9mTGVuZ3RoT2N0ZXRzIC0gMik7ICRzaGlmdExlbmd0aCA+PSAwOyAkc2hpZnRMZW5ndGggLT0gOCkgewogICAgICAgICAgICAgICAgJGxlbmd0aE9jdGV0cyAuPSBjaHIoJGNvbnRlbnRMZW5ndGggPj4gJHNoaWZ0TGVuZ3RoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRsZW5ndGhPY3RldHM7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkY29udGVudExlbmd0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+bnJPZkxlbmd0aE9jdGV0cykpIHsKICAgICAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoID09IG51bGwpIHsKICAgICAgICAgICAgICAgICRjb250ZW50TGVuZ3RoID0gJHRoaXMtPmdldENvbnRlbnRMZW5ndGgoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHMgPSAxOwogICAgICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPiAxMjcpIHsKICAgICAgICAgICAgICAgIGRvIHsgLy8gbG9uZyBmb3JtCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHMrKzsKICAgICAgICAgICAgICAgICAgICAkY29udGVudExlbmd0aCA9ICRjb250ZW50TGVuZ3RoID4+IDg7CiAgICAgICAgICAgICAgICB9IHdoaWxlICgkY29udGVudExlbmd0aCA+IDApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHM7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldENvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmNvbnRlbnRMZW5ndGgpKSB7CiAgICAgICAgICAgICR0aGlzLT5jb250ZW50TGVuZ3RoID0gJHRoaXMtPmNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudExlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0Q29udGVudExlbmd0aCgkbmV3Q29udGVudExlbmd0aCkKICAgIHsKICAgICAgICAkdGhpcy0+Y29udGVudExlbmd0aCA9ICRuZXdDb250ZW50TGVuZ3RoOwogICAgICAgICR0aGlzLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkbmV3Q29udGVudExlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHdob2xlIG9iamVjdCAoaW5jbHVkaW5nIHRoZSBpZGVudGlmaWVyIGFuZCBsZW5ndGggb2N0ZXRzKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJG5yT2ZJZGVudGlmaWVyT2N0ZXRzID0gc3RybGVuKCR0aGlzLT5nZXRJZGVudGlmaWVyKCkpOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gJHRoaXMtPmdldENvbnRlbnRMZW5ndGgoKTsKICAgICAgICAkbnJPZkxlbmd0aE9jdGV0cyA9ICR0aGlzLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkbnJPZklkZW50aWZpZXJPY3RldHMgKyAkbnJPZkxlbmd0aE9jdGV0cyArICRjb250ZW50TGVuZ3RoOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENvbnRlbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIEFTTi4xIFR5cGUgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHNlZSBJZGVudGlmaWVyOjpnZXROYW1lKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGVOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6Z2V0TmFtZSgkdGhpcy0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKgogICAgICogQHRocm93cyBQYXJzZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIFxGR1xBU04xXE9iamVjdAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBpZiAoc3RybGVuKCRiaW5hcnlEYXRhKSA8PSAkb2Zmc2V0SW5kZXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignQ2FuIG5vdCBwYXJzZSBiaW5hcnkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaWRlbnRpZmllck9jdGV0ID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pOwogICAgICAgIGlmIChJZGVudGlmaWVyOjppc0NvbnRleHRTcGVjaWZpY0NsYXNzKCRpZGVudGlmaWVyT2N0ZXQpICYmIElkZW50aWZpZXI6OmlzQ29uc3RydWN0ZWQoJGlkZW50aWZpZXJPY3RldCkpIHsKICAgICAgICAgICAgcmV0dXJuIEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRpZGVudGlmaWVyT2N0ZXQpIHsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpCSVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gQml0U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OkJPT0xFQU46CiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpFTlVNRVJBVEVEOgogICAgICAgICAgICAgICAgcmV0dXJuIEVudW1lcmF0ZWQ6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6SU5URUdFUjoKICAgICAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6Ok5VTEw6CiAgICAgICAgICAgICAgICByZXR1cm4gTnVsbE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUjoKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlJFTEFUSVZFX09JRDoKICAgICAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZU9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6T0NURVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gT2N0ZXRTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6U0VRVUVOQ0U6CiAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2U6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6U0VUOgogICAgICAgICAgICAgICAgcmV0dXJuIFNldDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpVVENfVElNRToKICAgICAgICAgICAgICAgIHJldHVybiBVVENUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJhbGl6ZWRUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OklBNV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gSUE1U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlBSSU5UQUJMRV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gUHJpbnRhYmxlU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6Ok5VTUVSSUNfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIE51bWVyaWNTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6VVRGOF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gVVRGOFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpVTklWRVJTQUxfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFVuaXZlcnNhbFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpDSEFSQUNURVJfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIENoYXJhY3RlclN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpHRU5FUkFMX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiBHZW5lcmFsU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlZJU0lCTEVfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6R1JBUEhJQ19TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gR3JhcGhpY1N0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpCTVBfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIEJNUFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpUNjFfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFQ2MVN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUjoKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3REZXNjcmlwdG9yOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaWRlbnRpZmllciBtYXkgYmUgPjEgYnl0ZS4KICAgICAgICAgICAgICAgIGlmIChJZGVudGlmaWVyOjppc0NvbnN0cnVjdGVkKCRpZGVudGlmaWVyT2N0ZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmtub3duQ29uc3RydWN0ZWRPYmplY3QoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyID0gc2VsZjo6cGFyc2VCaW5hcnlJZGVudGlmaWVyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICRsZW5ndGhPZlVua25vd25PYmplY3QgPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgJG9mZnNldEluZGV4ICs9ICRsZW5ndGhPZlVua25vd25PYmplY3Q7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5rbm93bk9iamVjdCgkaWRlbnRpZmllciwgJGxlbmd0aE9mVW5rbm93bk9iamVjdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VJZGVudGlmaWVyKCRpZGVudGlmaWVyT2N0ZXQsICRleHBlY3RlZElkZW50aWZpZXIsICRvZmZzZXRGb3JFeGNlcHRpb25IYW5kbGluZykKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRpZGVudGlmaWVyT2N0ZXQpIHx8IGlzX251bWVyaWMoJGlkZW50aWZpZXJPY3RldCkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGlkZW50aWZpZXJPY3RldCA9IG9yZCgkaWRlbnRpZmllck9jdGV0KTsKICAgICAgICB9CgogICAgICAgIGlmICgkaWRlbnRpZmllck9jdGV0ICE9ICRleHBlY3RlZElkZW50aWZpZXIpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSAnQ2FuIG5vdCBjcmVhdGUgYW4gJy5JZGVudGlmaWVyOjpnZXROYW1lKCRleHBlY3RlZElkZW50aWZpZXIpLicgZnJvbSBhbiAnLklkZW50aWZpZXI6OmdldE5hbWUoJGlkZW50aWZpZXJPY3RldCk7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJG1lc3NhZ2UsICRvZmZzZXRGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VCaW5hcnlJZGVudGlmaWVyKCRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4KQogICAgewogICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGlkZW50aWZpZXIgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaWRlbnRpZmllciA9ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXTsKCiAgICAgICAgaWYgKElkZW50aWZpZXI6OmlzTG9uZ0Zvcm0ob3JkKCRpZGVudGlmaWVyKSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgaWYgKHN0cmxlbigkYmluYXJ5RGF0YSkgPD0gJG9mZnNldEluZGV4KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGlkZW50aWZpZXIgKGxvbmcgZm9ybSkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG5leHRPY3RldCA9ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXTsKICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJG5leHRPY3RldDsKCiAgICAgICAgICAgIGlmICgob3JkKCRuZXh0T2N0ZXQpICYgMHg4MCkgPT09IDApIHsKICAgICAgICAgICAgICAgIC8vIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpcyAwIHRvIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VDb250ZW50TGVuZ3RoKCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCwgJG1pbmltdW1MZW5ndGggPSAwKQogICAgewogICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGNvbnRlbnQgbGVuZ3RoIGZyb20gZGF0YTogT2Zmc2V0IGluZGV4IGxhcmdlciB0aGFuIGlucHV0IHNpemUnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKTsKICAgICAgICBpZiAoKCRjb250ZW50TGVuZ3RoICYgMHg4MCkgIT0gMCkgewogICAgICAgICAgICAvLyBiaXQgOCBpcyBzZXQgLT4gdGhpcyBpcyB0aGUgbG9uZyBmb3JtCiAgICAgICAgICAgICRuck9mTGVuZ3RoT2N0ZXRzID0gJGNvbnRlbnRMZW5ndGggJiAweDdGOwogICAgICAgICAgICAkY29udGVudExlbmd0aCA9IDB4MDA7CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuck9mTGVuZ3RoT2N0ZXRzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRiaW5hcnlEYXRhKSA8PSAkb2Zmc2V0SW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGNvbnRlbnQgbGVuZ3RoIChsb25nIGZvcm0pIGZyb20gZGF0YTogT2Zmc2V0IGluZGV4IGxhcmdlciB0aGFuIGlucHV0IHNpemUnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGNvbnRlbnRMZW5ndGggPSAoJGNvbnRlbnRMZW5ndGggPDwgOCkgKyBvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoIDwgJG1pbmltdW1MZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignQSAnLmdldF9jYWxsZWRfY2xhc3MoKS4iIHNob3VsZCBoYXZlIGEgY29udGVudCBsZW5ndGggb2YgYXQgbGVhc3QgeyRtaW5pbXVtTGVuZ3RofS4gRXh0cmFjdGVkIGxlbmd0aCB3YXMgeyRjb250ZW50TGVuZ3RofSIsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbnRlbnRMZW5ndGg7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/OID.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIE9JRAp7CiAgICBjb25zdCBSU0FfRU5DUllQVElPTiAgICAgICAgICAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOwogICAgY29uc3QgTUQ1X1dJVEhfUlNBX0VOQ1JZUFRJT04gICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuMS40JzsKICAgIGNvbnN0IFNIQTFfV0lUSF9SU0FfU0lHTkFUVVJFICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjEuNSc7CiAgICBjb25zdCBQS0NTOV9FTUFJTCAgICAgICAgICAgICAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS45LjEnOwogICAgY29uc3QgUEtDUzlfVU5TVFJVQ1RVUkVEX05BTUUgICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4yJzsKICAgIGNvbnN0IFBLQ1M5X0NPTlRFTlRfVFlQRSAgICAgICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjkuMyc7CiAgICBjb25zdCBQS0NTOV9NRVNTQUdFX0RJR0VTVCAgICAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS45LjQnOwogICAgY29uc3QgUEtDUzlfU0lHTklOR19USU1FICAgICAgICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuOS41JzsKICAgIGNvbnN0IFBLQ1M5X0VYVEVOU0lPTl9SRVFVRVNUICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjkuMTQnOwoKICAgIC8vIGNlcnRpZmljYXRlIGV4dGVuc2lvbiBpZGVudGlmaWVyCiAgICBjb25zdCBDRVJUX0VYVF9TVUJKRUNUX0RJUkVDVE9SWV9BVFRSICAgPSAnMi41LjI5LjknOwogICAgY29uc3QgQ0VSVF9FWFRfU1VCSkVDVF9LRVlfSURFTlRJRklFUiAgID0gJzIuNS4yOS4xNCc7CiAgICBjb25zdCBDRVJUX0VYVF9LRVlfVVNBR0UgICAgICAgICAgICAgICAgPSAnMi41LjI5LjE1JzsKICAgIGNvbnN0IENFUlRfRVhUX1BSSVZBVEVfS0VZX1VTQUdFX1BFUklPRCA9ICcyLjUuMjkuMTYnOwogICAgY29uc3QgQ0VSVF9FWFRfU1VCSkVDVF9BTFRfTkFNRSAgICAgICAgID0gJzIuNS4yOS4xNyc7CiAgICBjb25zdCBDRVJUX0VYVF9JU1NVRVJfQUxUX05BTUUgICAgICAgICAgPSAnMi41LjI5LjE4JzsKICAgIGNvbnN0IENFUlRfRVhUX0JBU0lDX0NPTlNUUkFJTlRTICAgICAgICA9ICcyLjUuMjkuMTknOwogICAgY29uc3QgQ0VSVF9FWFRfQ1JMX05VTUJFUiAgICAgICAgICAgICAgID0gJzIuNS4yOS4yMCc7CiAgICBjb25zdCBDRVJUX0VYVF9SRUFTT05fQ09ERSAgICAgICAgICAgICAgPSAnMi41LjI5LjIxJzsKICAgIGNvbnN0IENFUlRfRVhUX0lOVkFMSURJVFlfREFURSAgICAgICAgICA9ICcyLjUuMjkuMjQnOwogICAgY29uc3QgQ0VSVF9FWFRfREVMVEFfQ1JMX0lORElDQVRPUiAgICAgID0gJzIuNS4yOS4yNyc7CiAgICBjb25zdCBDRVJUX0VYVF9JU1NVSU5HX0RJU1RfUE9JTlQgICAgICAgPSAnMi41LjI5LjI4JzsKICAgIGNvbnN0IENFUlRfRVhUX0NFUlRfSVNTVUVSICAgICAgICAgICAgICA9ICcyLjUuMjkuMjknOwogICAgY29uc3QgQ0VSVF9FWFRfTkFNRV9DT05TVFJBSU5UUyAgICAgICAgID0gJzIuNS4yOS4zMCc7CiAgICBjb25zdCBDRVJUX0VYVF9DUkxfRElTVFJJQlVUSU9OX1BPSU5UUyAgPSAnMi41LjI5LjMxJzsKICAgIGNvbnN0IENFUlRfRVhUX0NFUlRfUE9MSUNJRVMgICAgICAgICAgICA9ICcyLjUuMjkuMzInOwogICAgY29uc3QgQ0VSVF9FWFRfQVVUSE9SSVRZX0tFWV9JREVOVElGSUVSID0gJzIuNS4yOS4zNSc7CiAgICBjb25zdCBDRVJUX0VYVF9FWFRFTkRFRF9LRVlfVVNBR0UgICAgICAgPSAnMi41LjI5LjM3JzsKCiAgICAvLyBzdGFuZGFyZCBjZXJ0aWZpY2F0ZSBmaWxlcwogICAgY29uc3QgQ09NTU9OX05BTUUgICAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjMnOwogICAgY29uc3QgU1VSTkFNRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjQnOwogICAgY29uc3QgU0VSSUFMX05VTUJFUiAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjUnOwogICAgY29uc3QgQ09VTlRSWV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjYnOwogICAgY29uc3QgTE9DQUxJVFlfTkFNRSAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjcnOwogICAgY29uc3QgU1RBVEVfT1JfUFJPVklOQ0VfTkFNRSAgICAgICAgICAgID0gJzIuNS40LjgnOwogICAgY29uc3QgU1RSRUVUX0FERFJFU1MgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjknOwogICAgY29uc3QgT1JHQU5JWkFUSU9OX05BTUUgICAgICAgICAgICAgICAgID0gJzIuNS40LjEwJzsKICAgIGNvbnN0IE9VX05BTUUgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICcyLjUuNC4xMSc7CiAgICBjb25zdCBUSVRMRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuMTInOwogICAgY29uc3QgREVTQ1JJUFRJT04gICAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjEzJzsKICAgIGNvbnN0IFBPU1RBTF9BRERSRVNTICAgICAgICAgICAgICAgICAgICA9ICcyLjUuNC4xNic7CiAgICBjb25zdCBQT1NUQUxfQ09ERSAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuMTcnOwogICAgY29uc3QgQVVUSE9SSVRZX1JFVk9DQVRJT05fTElTVCAgICAgICAgID0gJzIuNS40LjM4JzsKCiAgICBjb25zdCBBVVRIT1JJVFlfSU5GT1JNQVRJT05fQUNDRVNTICAgICAgPSAnMS4zLjYuMS41LjUuNy4xLjEnOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgZ2l2ZW4gb2JqZWN0IGlkZW50aWZpZXIuCiAgICAgKgogICAgICogU29tZSBPSURzIGFyZSBzYXZlZCBhcyBjbGFzcyBjb25zdGFudHMgaW4gdGhpcyBjbGFzcy4KICAgICAqIElmIHRoZSB3YW50ZWQgb2lkU3RyaW5nIGlzIG5vdCBhbW9uZyB0aGVtLCB0aGlzIG1ldGhvZCB3aWxsCiAgICAgKiBxdWVyeSBodHRwOi8vb2lkLWluZm8uY29tIGZvciB0aGUgcmlnaHQgbmFtZS4KICAgICAqIFRoaXMgYmVoYXZpb3IgY2FuIGJlIHN1cHByZXNzZWQgYnkgc2V0dGluZyB0aGUgc2Vjb25kIG1ldGhvZCBwYXJhbWV0ZXIgdG8gZmFsc2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkb2lkU3RyaW5nCiAgICAgKiBAcGFyYW0gYm9vbCAkbG9hZEZyb21XZWIKICAgICAqCiAgICAgKiBAc2VlIHNlbGY6OmxvYWRGcm9tV2ViKCRvaWRTdHJpbmcpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXROYW1lKCRvaWRTdHJpbmcsICRsb2FkRnJvbVdlYiA9IHRydWUpCiAgICB7CiAgICAgICAgc3dpdGNoICgkb2lkU3RyaW5nKSB7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UlNBX0VOQ1JZUFRJT046CiAgICAgICAgICAgICAgICByZXR1cm4gJ1JTQSBFbmNyeXB0aW9uJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpNRDVfV0lUSF9SU0FfRU5DUllQVElPTjoKICAgICAgICAgICAgICAgIHJldHVybiAnTUQ1IHdpdGggUlNBIEVuY3J5cHRpb24nOwogICAgICAgICAgICBjYXNlIHNlbGY6OlNIQTFfV0lUSF9SU0FfU0lHTkFUVVJFOgogICAgICAgICAgICAgICAgcmV0dXJuICdTSEEtMSB3aXRoIFJTQSBTaWduYXR1cmUnOwoKICAgICAgICAgICAgY2FzZSBzZWxmOjpQS0NTOV9FTUFJTDoKICAgICAgICAgICAgICAgIHJldHVybiAnUEtDUyAjOSBFbWFpbCBBZGRyZXNzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQS0NTOV9VTlNUUlVDVFVSRURfTkFNRToKICAgICAgICAgICAgICAgIHJldHVybiAnUEtDUyAjOSBVbnN0cnVjdHVyZWQgTmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UEtDUzlfQ09OVEVOVF9UWVBFOgogICAgICAgICAgICAgICAgcmV0dXJuICdQS0NTICM5IENvbnRlbnQgVHlwZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UEtDUzlfTUVTU0FHRV9ESUdFU1Q6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1BLQ1MgIzkgTWVzc2FnZSBEaWdlc3QnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlBLQ1M5X1NJR05JTkdfVElNRToKICAgICAgICAgICAgICAgIHJldHVybiAnUEtDUyAjOSBTaWduaW5nIFRpbWUnOwoKICAgICAgICAgICAgY2FzZSBzZWxmOjpDT01NT05fTkFNRToKICAgICAgICAgICAgICAgIHJldHVybiAnQ29tbW9uIE5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlNVUk5BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1N1cm5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlNFUklBTF9OVU1CRVI6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NlcmlhbCBOdW1iZXInOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNPVU5UUllfTkFNRToKICAgICAgICAgICAgICAgIHJldHVybiAnQ291bnRyeSBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpMT0NBTElUWV9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdMb2NhbGl0eSBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpTVEFURV9PUl9QUk9WSU5DRV9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdGF0ZSBvciBQcm92aW5jZSBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpTVFJFRVRfQUREUkVTUzoKICAgICAgICAgICAgICAgIHJldHVybiAnU3RyZWV0IEFkZHJlc3MnOwogICAgICAgICAgICBjYXNlIHNlbGY6Ok9SR0FOSVpBVElPTl9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdPcmdhbml6YXRpb24gTmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6T1VfTkFNRToKICAgICAgICAgICAgICAgIHJldHVybiAnT3JnYW5pemF0aW9uIFVuaXQgTmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6VElUTEU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1RpdGxlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpERVNDUklQVElPTjoKICAgICAgICAgICAgICAgIHJldHVybiAnRGVzY3JpcHRpb24nOwogICAgICAgICAgICBjYXNlIHNlbGY6OlBPU1RBTF9BRERSRVNTOgogICAgICAgICAgICAgICAgcmV0dXJuICdQb3N0YWwgQWRkcmVzcyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UE9TVEFMX0NPREU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1Bvc3RhbCBDb2RlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpBVVRIT1JJVFlfUkVWT0NBVElPTl9MSVNUOgogICAgICAgICAgICAgICAgcmV0dXJuICdBdXRob3JpdHkgUmV2b2NhdGlvbiBMaXN0JzsKCiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfU1VCSkVDVF9ESVJFQ1RPUllfQVRUUjoKICAgICAgICAgICAgICAgIHJldHVybiAnU3ViamVjdCBkaXJlY3RvcnkgYXR0cmlidXRlcyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfU1VCSkVDVF9LRVlfSURFTlRJRklFUjoKICAgICAgICAgICAgICAgIHJldHVybiAnU3ViamVjdCBrZXkgaWRlbnRpZmllcic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfS0VZX1VTQUdFOgogICAgICAgICAgICAgICAgcmV0dXJuICdLZXkgdXNhZ2UgY2VydGlmaWNhdGUgZXh0ZW5zaW9uJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9QUklWQVRFX0tFWV9VU0FHRV9QRVJJT0Q6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1ByaXZhdGUga2V5IHVzYWdlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUgKFNBTiknOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0lTU1VFUl9BTFRfTkFNRToKICAgICAgICAgICAgICAgIHJldHVybiAnSXNzdWVyIGFsdGVybmF0aXZlIG5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0JBU0lDX0NPTlNUUkFJTlRTOgogICAgICAgICAgICAgICAgcmV0dXJuICdCYXNpYyBjb25zdHJhaW50cyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfQ1JMX05VTUJFUjoKICAgICAgICAgICAgICAgIHJldHVybiAnQ1JMIG51bWJlcic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfUkVBU09OX0NPREU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1JlYXNvbiBjb2RlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9JTlZBTElESVRZX0RBVEU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0ludmFsaWRpdHkgY29kZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfREVMVEFfQ1JMX0lORElDQVRPUjoKICAgICAgICAgICAgICAgIHJldHVybiAnRGVsdGEgQ1JMIGluZGljYXRvcic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfSVNTVUlOR19ESVNUX1BPSU5UOgogICAgICAgICAgICAgICAgcmV0dXJuICdJc3N1aW5nIGRpc3RyaWJ1dGlvbiBwb2ludCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfQ0VSVF9JU1NVRVI6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0NlcnRpZmljYXRlIGlzc3Vlcic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfTkFNRV9DT05TVFJBSU5UUzoKICAgICAgICAgICAgICAgIHJldHVybiAnTmFtZSBjb25zdHJhaW50cyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfQ1JMX0RJU1RSSUJVVElPTl9QT0lOVFM6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0NSTCBkaXN0cmlidXRpb24gcG9pbnRzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9DRVJUX1BPTElDSUVTOgogICAgICAgICAgICAgICAgcmV0dXJuICdDZXJ0aWZpY2F0ZSBwb2xpY2llcyAnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0FVVEhPUklUWV9LRVlfSURFTlRJRklFUjoKICAgICAgICAgICAgICAgIHJldHVybiAnQXV0aG9yaXR5IGtleSBpZGVudGlmaWVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9FWFRFTkRFRF9LRVlfVVNBR0U6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0V4dGVuZGVkIGtleSB1c2FnZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6QVVUSE9SSVRZX0lORk9STUFUSU9OX0FDQ0VTUzoKICAgICAgICAgICAgICAgIHJldHVybiAnQ2VydGlmaWNhdGUgQXV0aG9yaXR5IEluZm9ybWF0aW9uIEFjY2VzcyAoQUlBKSc7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgaWYgKCRsb2FkRnJvbVdlYikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjpsb2FkRnJvbVdlYigkb2lkU3RyaW5nKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRvaWRTdHJpbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21XZWIoJG9pZFN0cmluZykKICAgIHsKICAgICAgICAkY2ggPSBjdXJsX2luaXQoImh0dHA6Ly9vaWQtaW5mby5jb20vZ2V0L3skb2lkU3RyaW5nfSIpOwoKICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIDEpOwogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9IRUFERVIsIDApOwoKICAgICAgICAkY29udGVudHMgPSBjdXJsX2V4ZWMoJGNoKTsKICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CgogICAgICAgIC8vIFRoaXMgcGF0dGVybiBuZWVkcyB0byBiZSB1cGRhdGVkIGFzIHNvb24gYXMgdGhlIHdlYnNpdGUgbGF5b3V0IG9mIG9pZC1pbmZvLmNvbSBjaGFuZ2VzCiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJyM8dHQ+KC4rKVwoXGQrXCk8L3R0PiNzaScsICRjb250ZW50cywgJG9pZE5hbWUpOwoKICAgICAgICBpZiAoZW1wdHkoJG9pZE5hbWVbMV0pKSB7CiAgICAgICAgICAgIHJldHVybiAieyRvaWRTdHJpbmd9ICh1bmtub3duKSI7CiAgICAgICAgfQoKICAgICAgICAkb2lkTmFtZSA9IHVjZmlyc3Qoc3RydG9sb3dlcihwcmVnX3JlcGxhY2UoJy8oW0EtWl1bYS16XSkvJywgJyAkMScsICRvaWROYW1lWzFdWzBdKSkpOwogICAgICAgICRvaWROYW1lID0gc3RyX3JlcGxhY2UoJy0nLCAnICcsICRvaWROYW1lKTsKCiAgICAgICAgcmV0dXJuICJ7JG9pZE5hbWV9ICh7JG9pZFN0cmluZ30pIjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Parsable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CgovKioKICogVGhlIFBhcnNhYmxlIGludGVyZmFjZSBkZXNjcmliZXMgY2xhc3NlcyB0aGF0IGNhbiBiZSBwYXJzZWQgZnJvbSB0aGVpciBiaW5hcnkgREVSIHJlcHJlc2VudGF0aW9uLgogKi8KaW50ZXJmYWNlIFBhcnNhYmxlCnsKICAgIC8qKgogICAgICogUGFyc2UgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBmcm9tIGl0cyBiaW5hcnkgREVSIGVuY29kZWQgcmVwcmVzZW50YXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5RGF0YQogICAgICogQHBhcmFtIGludCAkb2Zmc2V0SW5kZXggdGhlIG9mZnNldCBhdCB3aGljaCBwYXJzaW5nIG9mIHRoZSAkYmluYXJ5RGF0YSBpcyBzdGFydGVkLiBUaGlzIHBhcmFtZXRlciBpbGwgYmUgbW9kaWZpZWQKICAgICAqICAgICAgICAgICAgdG8gY29udGFpbiB0aGUgb2Zmc2V0IGluZGV4IG9mIHRoZSBuZXh0IG9iamVjdCBhZnRlciB0aGlzIG9iamVjdCBoYXMgYmVlbiBwYXJzZWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4gYmluYXJ5IGRhdGEgaXMgZWl0aGVyIGludmFsaWQgb3Igbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/TemplateParser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCmNsYXNzIFRlbXBsYXRlUGFyc2VyCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YQogICAgICogQHBhcmFtIGFycmF5ICR0ZW1wbGF0ZQogICAgICogQHJldHVybiBcRkdcQVNOMVxPYmplY3R8U2VxdWVuY2UKICAgICAqIEB0aHJvd3MgUGFyc2VyRXhjZXB0aW9uIGlmIHRoZXJlIHdhcyBhbiBpc3N1ZSBwYXJzaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZUJhc2U2NCgkZGF0YSwgYXJyYXkgJHRlbXBsYXRlKQogICAgewogICAgICAgIC8vIFRPRE8gdGVzdCB3aXRoIGludmFsaWQgZGF0YQogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VCaW5hcnkoYmFzZTY0X2RlY29kZSgkZGF0YSksICR0ZW1wbGF0ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiaW5hcnkKICAgICAqIEBwYXJhbSBhcnJheSAkdGVtcGxhdGUKICAgICAqIEByZXR1cm4gXEZHXEFTTjFcT2JqZWN0fFNlcXVlbmNlCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbiBpZiB0aGVyZSB3YXMgYW4gaXNzdWUgcGFyc2luZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VCaW5hcnkoJGJpbmFyeSwgYXJyYXkgJHRlbXBsYXRlKQogICAgewogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeSk7CgogICAgICAgIGZvcmVhY2ggKCR0ZW1wbGF0ZSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkdGhpcy0+dmFsaWRhdGUoJHBhcnNlZE9iamVjdCwgJGtleSwgJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGUoT2JqZWN0ICRvYmplY3QsICRrZXksICR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHlwZUlkKCRrZXksICRvYmplY3QpOwoKICAgICAgICAgICAgLyogQHZhciBDb25zdHJ1Y3QgJG9iamVjdCAqLwogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJGtleSA9PiAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT52YWxpZGF0ZSgkb2JqZWN0LT5jdXJyZW50KCksICRrZXksICRjaGlsZCk7CiAgICAgICAgICAgICAgICAkb2JqZWN0LT5uZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHlwZUlkKCR2YWx1ZSwgJG9iamVjdCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0VHlwZUlkKCRleHBlY3RlZFR5cGVJZCwgT2JqZWN0ICRvYmplY3QpCiAgICB7CiAgICAgICAgJGFjdHVhbFR5cGUgPSAkb2JqZWN0LT5nZXRUeXBlKCk7CiAgICAgICAgaWYgKCRleHBlY3RlZFR5cGVJZCAhPSAkYWN0dWFsVHlwZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJFeHBlY3RlZCB0eXBlICgkZXhwZWN0ZWRUeXBlSWQpIGRvZXMgbm90IG1hdGNoIGFjdHVhbCB0eXBlICgkYWN0dWFsVHlwZSIpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/BitString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEJpdFN0cmluZyBleHRlbmRzIE9jdGV0U3RyaW5nIGltcGxlbWVudHMgUGFyc2FibGUKewogICAgcHJpdmF0ZSAkbnJPZlVudXNlZEJpdHM7CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IEFTTi4xIEJpdFN0cmluZyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgJHZhbHVlIEVpdGhlciB0aGUgaGV4YWRlY2ltYWwgdmFsdWUgYXMgYSBzdHJpbmcgKHNwYWNlcyBhcmUgYWxsb3dlZCAtIGxlYWRpbmcgMHggaXMgb3B0aW9uYWwpIG9yIGEgbnVtZXJpYyB2YWx1ZQogICAgICogQHBhcmFtIGludCAkbnJPZlVudXNlZEJpdHMgdGhlIG51bWJlciBvZiB1bnVzZWQgYml0cyBpbiB0aGUgbGFzdCBvY3RldCBbb3B0aW9uYWxdLgogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vIHBvc2l0aXZlIG51bWVyaWMgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSwgJG5yT2ZVbnVzZWRCaXRzID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR2YWx1ZSk7CgogICAgICAgIGlmICghaXNfbnVtZXJpYygkbnJPZlVudXNlZEJpdHMpIHx8ICRuck9mVW51c2VkQml0cyA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQml0U3RyaW5nOiBzZWNvbmQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGEgcG9zaXRpdmUgbnVtYmVyIChvciB6ZXJvKSEnKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5uck9mVW51c2VkQml0cyA9ICRuck9mVW51c2VkQml0czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OkJJVFNUUklORzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgLy8gYWRkIG9uZSB0byB0aGUgbGVuZ3RoIGZvciB0aGUgZmlyc3Qgb2N0ZXQgd2hpY2ggZW5jb2RlcyB0aGUgbnVtYmVyIG9mIHVudXNlZCBiaXRzIGluIHRoZSBsYXN0IG9jdGV0CiAgICAgICAgcmV0dXJuIHBhcmVudDo6Y2FsY3VsYXRlQ29udGVudExlbmd0aCgpICsgMTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICAvLyB0aGUgZmlyc3Qgb2N0ZXQgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHVudXNlZCBiaXRzCiAgICAgICAgJG5yT2ZVbnVzZWRCaXRzT2N0ZXQgPSBjaHIoJHRoaXMtPm5yT2ZVbnVzZWRCaXRzKTsKICAgICAgICAkYWN0dWFsQ29udGVudCA9IHBhcmVudDo6Z2V0RW5jb2RlZFZhbHVlKCk7CgogICAgICAgIHJldHVybiAkbnJPZlVudXNlZEJpdHNPY3RldC4kYWN0dWFsQ29udGVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtYmVyT2ZVbnVzZWRCaXRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5yT2ZVbnVzZWRCaXRzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpCSVRTVFJJTkcsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAyKTsKCiAgICAgICAgJG5yT2ZVbnVzZWRCaXRzID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pOwogICAgICAgICR2YWx1ZSA9IHN1YnN0cigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4ICsgMSwgJGNvbnRlbnRMZW5ndGggLSAxKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gJGNvbnRlbnRMZW5ndGg7CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZihiaW4yaGV4KCR2YWx1ZSksICRuck9mVW51c2VkQml0cyk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/BMPString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEJNUFN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBCTVAgU3RyaW5nLgogICAgICoKICAgICAqIEJNUFN0cmluZyBpcyBhIHN1YnR5cGUgb2YgVW5pdmVyc2FsU3RyaW5nIHRoYXQgaGFzIGl0cyBvd24KICAgICAqIHVuaXF1ZSB0YWcgYW5kIGNvbnRhaW5zIG9ubHkgdGhlIGNoYXJhY3RlcnMgaW4gdGhlCiAgICAgKiBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKHRob3NlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0CiAgICAgKiA2NEstMiBjZWxscywgbGVzcyBjZWxscyB3aG9zZSBlbmNvZGluZyBpcyB1c2VkIHRvIGFkZHJlc3MKICAgICAqIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lKSBvZiBJU08vSUVDIDEwNjQ2LTEuCiAgICAgKgogICAgICogVE9ETyBUaGUgZW5jb2RhYmxlIGNoYXJhY3RlcnMgb2YgdGhpcyB0eXBlIGFyZSBub3QgeWV0IGNoZWNrZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpCTVBfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Boolean.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgQm9vbGVhbiBleHRlbmRzIE9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJHZhbHVlOwoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6Qk9PTEVBTjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSA9PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gY2hyKDB4MDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBjaHIoMHhGRik7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuICdUUlVFJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJ0ZBTFNFJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6OkJPT0xFQU4sICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQW4gQVNOLjEgQm9vbGVhbiBzaG91bGQgbm90IGhhdmUgYSBsZW5ndGggb3RoZXIgdGhhbiBvbmUuIEV4dHJhY3RlZCBsZW5ndGggd2FzIHskY29udGVudExlbmd0aH0iLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSk7CiAgICAgICAgJGJvb2xlYW5WYWx1ZSA9ICR2YWx1ZSA9PSAweEZGID8gdHJ1ZSA6IGZhbHNlOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJGJvb2xlYW5WYWx1ZSk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/CharacterString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIENoYXJhY3RlclN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpDSEFSQUNURVJfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Enumerated.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgRW51bWVyYXRlZCBleHRlbmRzIEludGVnZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpFTlVNRVJBVEVEOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/GeneralizedTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFRpbWU7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKLyoqCiAqIFRoaXMgQVNOLjEgdW5pdmVyc2FsIHR5cGUgY29udGFpbnMgZGF0ZSBhbmQgdGltZSBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gSVNPIDg2MDEuCiAqCiAqIFRoZSB0eXBlIGNvbnNpc3RzIG9mIHZhbHVlcyByZXByZXNlbnRpbmc6CiAqIGEpIGEgY2FsZW5kYXIgZGF0ZSwgYXMgZGVmaW5lZCBpbiBJU08gODYwMTsgYW5kCiAqIGIpIGEgdGltZSBvZiBkYXksIHRvIGFueSBvZiB0aGUgcHJlY2lzaW9ucyBkZWZpbmVkIGluIElTTyA4NjAxLCBleGNlcHQgZm9yIHRoZSBob3VycyB2YWx1ZSAyNCB3aGljaCBzaGFsbCBub3QgYmUgdXNlZDsgYW5kCiAqIGMpIHRoZSBsb2NhbCB0aW1lIGRpZmZlcmVudGlhbCBmYWN0b3IgYXMgZGVmaW5lZCBpbiBJU08gODYwMS4KICoKICogRGVjb2Rpbmcgb2YgdGhpcyB0eXBlIHdpbGwgYWNjZXB0IHRoZSBCYXNpYyBFbmNvZGluZyBSdWxlcyAoQkVSKQogKiBUaGUgZW5jb2Rpbmcgd2lsbCBjb21wbHkgd2l0aCB0aGUgRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcyAoREVSKS4KICovCmNsYXNzIEdlbmVyYWxpemVkVGltZSBleHRlbmRzIEFic3RyYWN0VGltZSBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJG1pY3Jvc2Vjb25kczsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRhdGVUaW1lID0gbnVsbCwgJGRhdGVUaW1lWm9uZSA9ICdVVEMnKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGRhdGVUaW1lLCAkZGF0ZVRpbWVab25lKTsKICAgICAgICAkdGhpcy0+bWljcm9zZWNvbmRzID0gJHRoaXMtPnZhbHVlLT5mb3JtYXQoJ3UnKTsKICAgICAgICBpZiAoJHRoaXMtPmNvbnRhaW5zRnJhY3Rpb25hbFNlY29uZHNFbGVtZW50KCkpIHsKICAgICAgICAgICAgLy8gREVSIHJlcXVpcmVzIHVzIHRvIHJlbW92ZSB0cmFpbGluZyB6ZXJvcwogICAgICAgICAgICAkdGhpcy0+bWljcm9zZWNvbmRzID0gcHJlZ19yZXBsYWNlKCcvKFsxLTldKykwKyQvJywgJyQxJywgJHRoaXMtPm1pY3Jvc2Vjb25kcyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6R0VORVJBTElaRURfVElNRTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgJGNvbnRlbnRTaXplID0gMTU7IC8vIFlZWVlNTURESEhtbVNTWgoKICAgICAgICBpZiAoJHRoaXMtPmNvbnRhaW5zRnJhY3Rpb25hbFNlY29uZHNFbGVtZW50KCkpIHsKICAgICAgICAgICAgJGNvbnRlbnRTaXplICs9IDEgKyBzdHJsZW4oJHRoaXMtPm1pY3Jvc2Vjb25kcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbnRlbnRTaXplOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb250YWluc0ZyYWN0aW9uYWxTZWNvbmRzRWxlbWVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGludHZhbCgkdGhpcy0+bWljcm9zZWNvbmRzKSA+IDA7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgJGVuY29kZWRDb250ZW50ID0gJHRoaXMtPnZhbHVlLT5mb3JtYXQoJ1ltZEhpcycpOwogICAgICAgIGlmICgkdGhpcy0+Y29udGFpbnNGcmFjdGlvbmFsU2Vjb25kc0VsZW1lbnQoKSkgewogICAgICAgICAgICAkZW5jb2RlZENvbnRlbnQgLj0gIi57JHRoaXMtPm1pY3Jvc2Vjb25kc30iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbmNvZGVkQ29udGVudC4nWic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y29udGFpbnNGcmFjdGlvbmFsU2Vjb25kc0VsZW1lbnQoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5mb3JtYXQoIlktbS1kXHRIOmk6cy51UCIpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmZvcm1hdCgiWS1tLWRcdEg6aTpzUCIpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6R0VORVJBTElaRURfVElNRSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRsZW5ndGhPZk1pbmltdW1UaW1lU3RyaW5nID0gMTQ7IC8vIFlZWVlNTURESEhtbVNTCiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgJGxlbmd0aE9mTWluaW11bVRpbWVTdHJpbmcpOwogICAgICAgICRtYXhpbXVtQnl0ZXNUb1JlYWQgPSAkY29udGVudExlbmd0aDsKCiAgICAgICAgJGZvcm1hdCA9ICdZbWRHaXMnOwogICAgICAgICRjb250ZW50ID0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsICRjb250ZW50TGVuZ3RoKTsKICAgICAgICAkZGF0ZVRpbWVTdHJpbmcgPSBzdWJzdHIoJGNvbnRlbnQsIDAsICRsZW5ndGhPZk1pbmltdW1UaW1lU3RyaW5nKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gJGxlbmd0aE9mTWluaW11bVRpbWVTdHJpbmc7CiAgICAgICAgJG1heGltdW1CeXRlc1RvUmVhZCAtPSAkbGVuZ3RoT2ZNaW5pbXVtVGltZVN0cmluZzsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoID09ICRsZW5ndGhPZk1pbmltdW1UaW1lU3RyaW5nKSB7CiAgICAgICAgICAgICRsb2NhbFRpbWVab25lID0gbmV3IFxEYXRlVGltZVpvbmUoZGF0ZV9kZWZhdWx0X3RpbWV6b25lX2dldCgpKTsKICAgICAgICAgICAgJGRhdGVUaW1lID0gXERhdGVUaW1lOjpjcmVhdGVGcm9tRm9ybWF0KCRmb3JtYXQsICRkYXRlVGltZVN0cmluZywgJGxvY2FsVGltZVpvbmUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmICgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdID09ICcuJykgewogICAgICAgICAgICAgICAgJG1heGltdW1CeXRlc1RvUmVhZC0tOyAvLyBhY2NvdW50IGZvciB0aGUgJy4nCiAgICAgICAgICAgICAgICAkbnJPZkZyYWN0aW9uYWxTZWNvbmRFbGVtZW50cyA9IDE7IC8vIGFjY291bnQgZm9yIHRoZSAnLicKCiAgICAgICAgICAgICAgICB3aGlsZSAoJG1heGltdW1CeXRlc1RvUmVhZCA+IDAKICAgICAgICAgICAgICAgICAgICAgICYmICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCArICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzXSAhPSAnKycKICAgICAgICAgICAgICAgICAgICAgICYmICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCArICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzXSAhPSAnLScKICAgICAgICAgICAgICAgICAgICAgICYmICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCArICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzXSAhPSAnWicpIHsKICAgICAgICAgICAgICAgICAgICAkbnJPZkZyYWN0aW9uYWxTZWNvbmRFbGVtZW50cysrOwogICAgICAgICAgICAgICAgICAgICRtYXhpbXVtQnl0ZXNUb1JlYWQtLTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZGF0ZVRpbWVTdHJpbmcgLj0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsICRuck9mRnJhY3Rpb25hbFNlY29uZEVsZW1lbnRzKTsKICAgICAgICAgICAgICAgICRvZmZzZXRJbmRleCArPSAkbnJPZkZyYWN0aW9uYWxTZWNvbmRFbGVtZW50czsKICAgICAgICAgICAgICAgICRmb3JtYXQgLj0gJy51JzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGRhdGVUaW1lID0gXERhdGVUaW1lOjpjcmVhdGVGcm9tRm9ybWF0KCRmb3JtYXQsICRkYXRlVGltZVN0cmluZywgbmV3IFxEYXRlVGltZVpvbmUoJ1VUQycpKTsKCiAgICAgICAgICAgIGlmICgkbWF4aW11bUJ5dGVzVG9SZWFkID4gMCkgewogICAgICAgICAgICAgICAgaWYgKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0gPT0gJysnCiAgICAgICAgICAgICAgICB8fCAkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdID09ICctJykgewogICAgICAgICAgICAgICAgICAgICRkYXRlVGltZSA9IHN0YXRpYzo6ZXh0cmFjdFRpbWVab25lRGF0YSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkZGF0ZVRpbWUpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSAhPSAnWicpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdJbnZhbGlkIElTTyA4NjAxIFRpbWUgU3RyaW5nJywgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCRkYXRlVGltZSk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/GeneralString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEdlbmVyYWxTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgR2VuZXJhbFN0cmluZy4KICAgICAqIFRPRE8gVGhlIGVuY29kYWJsZSBjaGFyYWN0ZXJzIG9mIHRoaXMgdHlwZSBhcmUgbm90IHlldCBjaGVja2VkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgICAgICR0aGlzLT5hbGxvd0FsbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6R0VORVJBTF9TVFJJTkc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/GraphicString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEdyYXBoaWNTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgR3JhcGhpYyBTdHJpbmcuCiAgICAgKiBUT0RPIFRoZSBlbmNvZGFibGUgY2hhcmFjdGVycyBvZiB0aGlzIHR5cGUgYXJlIG5vdCB5ZXQgY2hlY2tlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJpbmcpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHN0cmluZzsKICAgICAgICAkdGhpcy0+YWxsb3dBbGwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OkdSQVBISUNfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/IA5String.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCi8qKgogKiBUaGUgSW50ZXJuYXRpb25hbCBBbHBoYWJldCBOby41IChJQTUpIHJlZmVyZW5jZXMgdGhlIGVuY29kaW5nIG9mIHRoZSBBU0NJSSBjaGFyYWN0ZXJzLgogKgogKiBFYWNoIGNoYXJhY3RlciBpbiB0aGUgZGF0YSBpcyBlbmNvZGVkIGFzIDEgYnl0ZS4KICovCmNsYXNzIElBNVN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJHN0cmluZyk7CiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDwgMTI4OyAkaSsrKSB7CiAgICAgICAgICAgICR0aGlzLT5hbGxvd0NoYXJhY3RlcihjaHIoJGkpKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpJQTVfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Integer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgSW50ZWdlciBleHRlbmRzIE9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICR2YWx1ZQogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSB2YWx1ZSBpcyBub3QgbnVtZXJpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKQogICAgewogICAgICAgIGlmIChpc19udW1lcmljKCR2YWx1ZSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiSW52YWxpZCBWQUxVRSBbeyR2YWx1ZX1dIGZvciBBU04xX0lOVEVHRVIiKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6SU5URUdFUjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgJG5yT2ZPY3RldHMgPSAxOyAvLyB3ZSBuZWVkIGF0IGxlYXN0IG9uZSBvY3RldAogICAgICAgICR0bXBWYWx1ZSA9IGdtcF9hYnMoZ21wX2luaXQoJHRoaXMtPnZhbHVlLCAxMCkpOwogICAgICAgIHdoaWxlIChnbXBfY21wKCR0bXBWYWx1ZSwgMTI3KSA+IDApIHsKICAgICAgICAgICAgJHRtcFZhbHVlID0gJHRoaXMtPnJpZ2h0U2hpZnQoJHRtcFZhbHVlLCA4KTsKICAgICAgICAgICAgJG5yT2ZPY3RldHMrKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRuck9mT2N0ZXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHJlc291cmNlfFxHTVAgJG51bWJlcgogICAgICogQHBhcmFtIGludCAkcG9zaXRpb25zCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZXxcR01QCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmlnaHRTaGlmdCgkbnVtYmVyLCAkcG9zaXRpb25zKQogICAgewogICAgICAgIC8vIFNoaWZ0IDEgcmlnaHQgPSBkaXYgLyAyCiAgICAgICAgcmV0dXJuIGdtcF9kaXYoJG51bWJlciwgZ21wX3BvdygyLCAoaW50KSAkcG9zaXRpb25zKSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgJG51bWVyaWNWYWx1ZSA9IGdtcF9pbml0KCR0aGlzLT52YWx1ZSwgMTApOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gJHRoaXMtPmdldENvbnRlbnRMZW5ndGgoKTsKCiAgICAgICAgaWYgKGdtcF9zaWduKCRudW1lcmljVmFsdWUpIDwgMCkgewogICAgICAgICAgICAkbnVtZXJpY1ZhbHVlID0gZ21wX2FkZCgkbnVtZXJpY1ZhbHVlLCAoZ21wX3N1YihnbXBfcG93KDIsIDggKiAkY29udGVudExlbmd0aCksIDEpKSk7CiAgICAgICAgICAgICRudW1lcmljVmFsdWUgPSBnbXBfYWRkKCRudW1lcmljVmFsdWUsIDEpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICcnOwogICAgICAgIGZvciAoJHNoaWZ0TGVuZ3RoID0gKCRjb250ZW50TGVuZ3RoIC0gMSkgKiA4OyAkc2hpZnRMZW5ndGggPj0gMDsgJHNoaWZ0TGVuZ3RoIC09IDgpIHsKICAgICAgICAgICAgJG9jdGV0ID0gZ21wX3N0cnZhbChnbXBfbW9kKCR0aGlzLT5yaWdodFNoaWZ0KCRudW1lcmljVmFsdWUsICRzaGlmdExlbmd0aCksIDI1NikpOwogICAgICAgICAgICAkcmVzdWx0IC49IGNocigkb2N0ZXQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzdGF0aWMoMCk7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sICRwYXJzZWRPYmplY3QtPmdldFR5cGUoKSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsIDEpOwoKICAgICAgICAkaXNOZWdhdGl2ZSA9IChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSkgJiAweDgwKSAhPSAweDAwOwogICAgICAgICRudW1iZXIgPSBnbXBfaW5pdChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKSAmIDB4N0YsIDEwKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGNvbnRlbnRMZW5ndGggLSAxOyAkaSsrKSB7CiAgICAgICAgICAgICRudW1iZXIgPSBnbXBfb3IoZ21wX211bCgkbnVtYmVyLCAweDEwMCksIG9yZCgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXgrK10pKTsKICAgICAgICB9CgogICAgICAgIGlmICgkaXNOZWdhdGl2ZSkgewogICAgICAgICAgICAkbnVtYmVyID0gZ21wX3N1YigkbnVtYmVyLCBnbXBfcG93KDIsIDggKiAkY29udGVudExlbmd0aCAtIDEpKTsKICAgICAgICB9CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc3RhdGljKGdtcF9zdHJ2YWwoJG51bWJlciwgMTApKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Null.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7CgovKioKICogQGRlcHJlY2F0ZWQgRGVwcmVjYXRlZCBmb3IgZnV0dXJlIFBIUCA3IGNvbXBhdGliaWxpdHkuIFVzZSB7QGxpbmsgTnVsbE9iamVjdH0gaW5zdGVhZC4KICovCmNsYXNzIE51bGwgZXh0ZW5kcyBOdWxsT2JqZWN0CnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/NullObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgTnVsbE9iamVjdCBleHRlbmRzIE9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6TlVMTDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAnTlVMTCc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6Ok5VTEwsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQW4gQVNOLjEgTnVsbCBzaG91bGQgbm90IGhhdmUgYSBsZW5ndGggb3RoZXIgdGhhbiB6ZXJvLiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyB7JGNvbnRlbnRMZW5ndGh9IiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZigpOwogICAgICAgICRwYXJzZWRPYmplY3QtPnNldENvbnRlbnRMZW5ndGgoMCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/NumericString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIE51bWVyaWNTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgTnVtZXJpY1N0cmluZy4KICAgICAqCiAgICAgKiBUaGUgZm9sbG93aW5nIGNoYXJhY3RlcnMgYXJlIHBlcm1pdHRlZDoKICAgICAqIERpZ2l0cyAgICAgICAgICAgICAgICAwLDEsIC4uLiA5CiAgICAgKiBTUEFDRSAgICAgICAgICAgICAgICAgKHNwYWNlKQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgICAgICR0aGlzLT5hbGxvd051bWJlcnMoKTsKICAgICAgICAkdGhpcy0+YWxsb3dTcGFjZXMoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok5VTUVSSUNfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/ObjectDescriptor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgT2JqZWN0RGVzY3JpcHRvciBleHRlbmRzIEdyYXBoaWNTdHJpbmcKewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmplY3REZXNjcmlwdGlvbikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRvYmplY3REZXNjcmlwdGlvbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/ObjectIdentifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxCYXNlMTI4Owp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXE9iamVjdDsKdXNlIEZHXEFTTjFcUGFyc2FibGU7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CgpjbGFzcyBPYmplY3RJZGVudGlmaWVyIGV4dGVuZHMgT2JqZWN0IGltcGxlbWVudHMgUGFyc2FibGUKewogICAgcHJvdGVjdGVkICRzdWJJZGVudGlmaWVyczsKICAgIHByb3RlY3RlZCAkdmFsdWU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnMgPSBleHBsb2RlKCcuJywgJHZhbHVlKTsKICAgICAgICAkbnJPZlN1YklkZW50aWZpZXJzID0gY291bnQoJHRoaXMtPnN1YklkZW50aWZpZXJzKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5yT2ZTdWJJZGVudGlmaWVyczsgJGkrKykgewogICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldKSkgewogICAgICAgICAgICAgICAgLy8gZW5mb3JjZSB0aGUgaW50ZWdlciB0eXBlCiAgICAgICAgICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldID0gaW50dmFsKCR0aGlzLT5zdWJJZGVudGlmaWVyc1skaV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiW3skdmFsdWV9XSBpcyBubyB2YWxpZCBvYmplY3QgaWRlbnRpZmllciAoc3ViIGlkZW50aWZpZXIgIi4oJGkgKyAxKS4nIGlzIG5vdCBudW1lcmljKSEnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gTWVyZ2UgdGhlIGZpcnN0IHRvIGFyY3Mgb2YgdGhlIE9JRCByZWdpc3RyYXRpb24gdHJlZSAocGVyIEFTTiBkZWZpbml0aW9uISkKICAgICAgICBpZiAoJG5yT2ZTdWJJZGVudGlmaWVycyA+PSAyKSB7CiAgICAgICAgICAgICR0aGlzLT5zdWJJZGVudGlmaWVyc1sxXSA9ICgkdGhpcy0+c3ViSWRlbnRpZmllcnNbMF0gKiA0MCkgKyAkdGhpcy0+c3ViSWRlbnRpZmllcnNbMV07CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5zdWJJZGVudGlmaWVyc1swXSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgJGxlbmd0aCA9IDA7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnN1YklkZW50aWZpZXJzIGFzICRzdWJJZGVudGlmaWVyKSB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRzdWJJZGVudGlmaWVyID0gJHN1YklkZW50aWZpZXIgPj4gNzsKICAgICAgICAgICAgICAgICRsZW5ndGgrKzsKICAgICAgICAgICAgfSB3aGlsZSAoJHN1YklkZW50aWZpZXIgPiAwKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGVuZ3RoOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICRlbmNvZGVkVmFsdWUgPSAnJzsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3ViSWRlbnRpZmllcnMgYXMgJHN1YklkZW50aWZpZXIpIHsKICAgICAgICAgICAgJGVuY29kZWRWYWx1ZSAuPSBCYXNlMTI4OjplbmNvZGUoJHN1YklkZW50aWZpZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbmNvZGVkVmFsdWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiBPSUQ6OmdldE5hbWUoJHRoaXMtPnZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAxKTsKCiAgICAgICAgJGZpcnN0T2N0ZXQgPSBvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKTsKICAgICAgICAkb2lkU3RyaW5nID0gZmxvb3IoJGZpcnN0T2N0ZXQgLyA0MCkuJy4nLigkZmlyc3RPY3RldCAlIDQwKTsKICAgICAgICAkb2lkU3RyaW5nIC49ICcuJy5zZWxmOjpwYXJzZU9pZCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkY29udGVudExlbmd0aCAtIDEpOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJG9pZFN0cmluZyk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGFuIG9iamVjdCBpZGVudGlmaWVyIGV4Y2VwdCBmb3IgdGhlIGZpcnN0IG9jdGV0LCB3aGljaCBpcyBwYXJzZWQKICAgICAqIGRpZmZlcmVudGx5LiBUaGlzIHdheSByZWxhdGl2ZSBvYmplY3QgaWRlbnRpZmllcnMgY2FuIGFsc28gYmUgcGFyc2VkCiAgICAgKiB1c2luZyB0aGlzLgogICAgICoKICAgICAqIEBwYXJhbSAkYmluYXJ5RGF0YQogICAgICogQHBhcmFtICRvZmZzZXRJbmRleAogICAgICogQHBhcmFtICRvY3RldHNUb1JlYWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VPaWQoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4LCAkb2N0ZXRzVG9SZWFkKQogICAgewogICAgICAgICRvaWQgPSAnJzsKCiAgICAgICAgd2hpbGUgKCRvY3RldHNUb1JlYWQgPiAwKSB7CiAgICAgICAgICAgICRvY3RldHMgPSAnJzsKCiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIGlmICgwID09PSAkb2N0ZXRzVG9SZWFkKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignTWFsZm9ybWVkIEFTTi4xIE9iamVjdCBJZGVudGlmaWVyJywgJG9mZnNldEluZGV4IC0gMSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJG9jdGV0c1RvUmVhZC0tOwogICAgICAgICAgICAgICAgJG9jdGV0ID0gJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdOwogICAgICAgICAgICAgICAgJG9jdGV0cyAuPSAkb2N0ZXQ7CiAgICAgICAgICAgIH0gd2hpbGUgKG9yZCgkb2N0ZXQpICYgMHg4MCk7CgogICAgICAgICAgICAkb2lkIC49IHNwcmludGYoJyVkLicsIEJhc2UxMjg6OmRlY29kZSgkb2N0ZXRzKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgdHJhaWxpbmcgJy4nCiAgICAgICAgcmV0dXJuIHN1YnN0cigkb2lkLCAwLCAtMSkgPzogJyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/OctetString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgT2N0ZXRTdHJpbmcgZXh0ZW5kcyBPYmplY3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcm90ZWN0ZWQgJHZhbHVlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgIC8vIHJlbW92ZSBnYXBzIGJldHdlZW4gaGV4IGRpZ2l0cwogICAgICAgICAgICAkdmFsdWUgPSBwcmVnX3JlcGxhY2UoJy9cc3wweC8nLCAnJywgJHZhbHVlKTsKICAgICAgICB9IGVsc2VpZiAoaXNfbnVtZXJpYygkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IGRlY2hleCgkdmFsdWUpOwogICAgICAgIH0gZWxzZWlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ09jdGV0U3RyaW5nOiB1bnJlY29nbml6ZWQgaW5wdXQgdHlwZSEnKTsKICAgICAgICB9CgogICAgICAgIGlmIChzdHJsZW4oJHZhbHVlKSAlIDIgIT0gMCkgewogICAgICAgICAgICAvLyB0cmFuc2Zvcm0gdmFsdWVzIGxpa2UgMUYyIHRvIDAxRjIKICAgICAgICAgICAgJHZhbHVlID0gJzAnLiR2YWx1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWxjdWxhdGVDb250ZW50TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RybGVuKCR0aGlzLT52YWx1ZSkgLyAyOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgIC8vQWN0dWFsIGNvbnRlbnQKICAgICAgICB3aGlsZSAoc3RybGVuKCR2YWx1ZSkgPj0gMikgewogICAgICAgICAgICAvLyBnZXQgdGhlIGhleCB2YWx1ZSBieXRlIGJ5IGJ5dGUgZnJvbSB0aGUgc3RyaW5nIGFuZCBhbmQgYWRkIGl0IHRvIGJpbmFyeSByZXN1bHQKICAgICAgICAgICAgJHJlc3VsdCAuPSBjaHIoaGV4ZGVjKHN1YnN0cigkdmFsdWUsIDAsIDIpKSk7CiAgICAgICAgICAgICR2YWx1ZSA9IHN1YnN0cigkdmFsdWUsIDIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiBzdHJ0b3VwcGVyKCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJpbmFyeUNvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RW5jb2RlZFZhbHVlKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICR2YWx1ZSA9IHN1YnN0cigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkY29udGVudExlbmd0aCk7CiAgICAgICAgJG9mZnNldEluZGV4ICs9ICRjb250ZW50TGVuZ3RoOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoYmluMmhleCgkdmFsdWUpKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/PrintableString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFByaW50YWJsZVN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBQcmludGFibGVTdHJpbmcuCiAgICAgKgogICAgICogVGhlIElUVS1UIFguNjgwIFRhYmxlIDggcGVybWl0cyB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6CiAgICAgKiBMYXRpbiBjYXBpdGFsIGxldHRlcnMgQSxCLCAuLi4gWgogICAgICogTGF0aW4gc21hbGwgbGV0dGVycyAgIGEsYiwgLi4uIHoKICAgICAqIERpZ2l0cyAgICAgICAgICAgICAgICAwLDEsIC4uLiA5CiAgICAgKiBTUEFDRSAgICAgICAgICAgICAgICAgKHNwYWNlKQogICAgICogQVBPU1RST1BIRSAgICAgICAgICAgICcKICAgICAqIExFRlQgUEFSRU5USEVTSVMgICAgICAoCiAgICAgKiBSSUdIVCBQQVJFTlRIRVNJUyAgICAgKQogICAgICogUExVUyBTSUdOICAgICAgICAgICAgICsKICAgICAqIENPTU1BICAgICAgICAgICAgICAgICAsCiAgICAgKiBIWVBIRU4tTUlOVVMgICAgICAgICAgLQogICAgICogRlVMTCBTVE9QICAgICAgICAgICAgIC4KICAgICAqIFNPTElEVVMgICAgICAgICAgICAgICAvCiAgICAgKiBDT0xPTiAgICAgICAgICAgICAgICAgOgogICAgICogRVFVQUxTIFNJR04gICAgICAgICAgID0KICAgICAqIFFVRVNUSU9OIE1BUksgICAgICAgICA/CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93TnVtYmVycygpOwogICAgICAgICR0aGlzLT5hbGxvd0FsbExldHRlcnMoKTsKICAgICAgICAkdGhpcy0+YWxsb3dTcGFjZXMoKTsKICAgICAgICAkdGhpcy0+YWxsb3dDaGFyYWN0ZXJzKCInIiwgJygnLCAnKScsICcrJywgJy0nLCAnLicsICcsJywgJy8nLCAnOicsICc9JywgJz8nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlBSSU5UQUJMRV9TVFJJTkc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/RelativeObjectIdentifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbjsKCmNsYXNzIFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllciBleHRlbmRzIE9iamVjdElkZW50aWZpZXIgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN1YklkZW50aWZpZXJzKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdWJJZGVudGlmaWVyczsKICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnMgPSBleHBsb2RlKCcuJywgJHN1YklkZW50aWZpZXJzKTsKICAgICAgICAkbnJPZlN1YklkZW50aWZpZXJzID0gY291bnQoJHRoaXMtPnN1YklkZW50aWZpZXJzKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5yT2ZTdWJJZGVudGlmaWVyczsgJGkrKykgewogICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldKSkgewogICAgICAgICAgICAgICAgLy8gZW5mb3JjZSB0aGUgaW50ZWdlciB0eXBlCiAgICAgICAgICAgICAgICAkdGhpcy0+c3ViSWRlbnRpZmllcnNbJGldID0gaW50dmFsKCR0aGlzLT5zdWJJZGVudGlmaWVyc1skaV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiW3skc3ViSWRlbnRpZmllcnN9XSBpcyBubyB2YWxpZCBvYmplY3QgaWRlbnRpZmllciAoc3ViIGlkZW50aWZpZXIgIi4oJGkgKyAxKS4nIGlzIG5vdCBudW1lcmljKSEnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlJFTEFUSVZFX09JRDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6UkVMQVRJVkVfT0lELCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgMSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRvaWRTdHJpbmcgPSBzZWxmOjpwYXJzZU9pZCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkY29udGVudExlbmd0aCk7CiAgICAgICAgfSBjYXRjaCAoUGFyc2VyRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ01hbGZvcm1lZCBBU04uMSBSZWxhdGl2ZSBPYmplY3QgSWRlbnRpZmllcicsICRlLT5nZXRPZmZzZXQoKSk7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJG9pZFN0cmluZyk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Sequence.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxDb25zdHJ1Y3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgU2VxdWVuY2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlNFUVVFTkNFOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/Set.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgU2V0IGV4dGVuZHMgU2VxdWVuY2UKewogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpTRVQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/T61String.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFQ2MVN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBUNjEgU3RyaW5nLgogICAgICogVE9ETyBUaGUgZW5jb2RhYmxlIGNoYXJhY3RlcnMgb2YgdGhpcyB0eXBlIGFyZSBub3QgeWV0IGNoZWNrZWQuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lUVV9ULjYxCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpUNjFfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/UniversalString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFVuaXZlcnNhbFN0cmluZyBleHRlbmRzIEFic3RyYWN0U3RyaW5nCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBBU04uMSBVbml2ZXJzYWwgU3RyaW5nLgogICAgICogVE9ETyBUaGUgZW5jb2RhYmxlIGNoYXJhY3RlcnMgb2YgdGhpcyB0eXBlIGFyZSBub3QgeWV0IGNoZWNrZWQuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaXZlcnNhbF9DaGFyYWN0ZXJfU2V0CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkc3RyaW5nKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICRzdHJpbmc7CiAgICAgICAgJHRoaXMtPmFsbG93QWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBJZGVudGlmaWVyOjpVTklWRVJTQUxfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/UTCTime.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFRpbWU7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKLyoqCiAqIFRoaXMgQVNOLjEgdW5pdmVyc2FsIHR5cGUgY29udGFpbnMgdGhlIGNhbGVuZGFyIGRhdGUgYW5kIHRpbWUuCiAqCiAqIFRoZSBwcmVjaXNpb24gaXMgb25lIG1pbnV0ZSBvciBvbmUgc2Vjb25kIGFuZCBvcHRpb25hbGx5IGEKICogbG9jYWwgdGltZSBkaWZmZXJlbnRpYWwgZnJvbSBjb29yZGluYXRlZCB1bml2ZXJzYWwgdGltZS4KICoKICogRGVjb2Rpbmcgb2YgdGhpcyB0eXBlIHdpbGwgYWNjZXB0IHRoZSBCYXNpYyBFbmNvZGluZyBSdWxlcyAoQkVSKQogKiBUaGUgZW5jb2Rpbmcgd2lsbCBjb21wbHkgd2l0aCB0aGUgRGlzdGluZ3Vpc2hlZCBFbmNvZGluZyBSdWxlcyAoREVSKS4KICovCmNsYXNzIFVUQ1RpbWUgZXh0ZW5kcyBBYnN0cmFjdFRpbWUgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlVUQ19USU1FOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWxjdWxhdGVDb250ZW50TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gMTM7IC8vIENvbnRlbnQgaXMgYSBzdHJpbmcgbyB0aGUgZm9sbG93aW5nIGZvcm1hdDogWVlNTUREaGhtbXNzWiAoMTMgb2N0ZXRzKQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmZvcm1hdCgneW1kSGlzJykuJ1onOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpVVENfVElNRSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsIDExKTsKCiAgICAgICAgJGZvcm1hdCA9ICd5bWRHaSc7CiAgICAgICAgJGRhdGVUaW1lU3RyaW5nID0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsIDEwKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gMTA7CgogICAgICAgIC8vIGV4dHJhY3Qgb3B0aW9uYWwgc2Vjb25kcyBwYXJ0CiAgICAgICAgaWYgKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0gIT0gJ1onCiAgICAgICAgJiYgJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSAhPSAnKycKICAgICAgICAmJiAkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdICE9ICctJykgewogICAgICAgICAgICAkZGF0ZVRpbWVTdHJpbmcgLj0gc3Vic3RyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgsIDIpOwogICAgICAgICAgICAkb2Zmc2V0SW5kZXggKz0gMjsKICAgICAgICAgICAgJGZvcm1hdCAuPSAncyc7CiAgICAgICAgfQoKICAgICAgICAkZGF0ZVRpbWUgPSBcRGF0ZVRpbWU6OmNyZWF0ZUZyb21Gb3JtYXQoJGZvcm1hdCwgJGRhdGVUaW1lU3RyaW5nLCBuZXcgXERhdGVUaW1lWm9uZSgnVVRDJykpOwoKICAgICAgICAvLyBleHRyYWN0IHRpbWUgem9uZSBzZXR0aW5ncwogICAgICAgIGlmICgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdID09ICcrJwogICAgICAgIHx8ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0gPT0gJy0nKSB7CiAgICAgICAgICAgICRkYXRlVGltZSA9IHN0YXRpYzo6ZXh0cmFjdFRpbWVab25lRGF0YSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAkZGF0ZVRpbWUpOwogICAgICAgIH0gZWxzZWlmICgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXgrK10gIT0gJ1onKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0ludmFsaWQgVVRDIFN0cmluZycsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJGRhdGVUaW1lKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/UTF8String.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFVURjhTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgVW5pdmVyc2FsIFN0cmluZy4KICAgICAqIFRPRE8gVGhlIGVuY29kYWJsZSBjaGFyYWN0ZXJzIG9mIHRoaXMgdHlwZSBhcmUgbm90IHlldCBjaGVja2VkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkc3RyaW5nOwogICAgICAgICR0aGlzLT5hbGxvd0FsbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6VVRGOF9TVFJJTkc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/VisibleString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBYnN0cmFjdFN0cmluZzsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIFZpc2libGVTdHJpbmcgZXh0ZW5kcyBBYnN0cmFjdFN0cmluZwp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgQVNOLjEgVmlzaWJsZSBTdHJpbmcuCiAgICAgKiBUT0RPIFRoZSBlbmNvZGFibGUgY2hhcmFjdGVycyBvZiB0aGlzIHR5cGUgYXJlIG5vdCB5ZXQgY2hlY2tlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJpbmcpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHN0cmluZzsKICAgICAgICAkdGhpcy0+YWxsb3dBbGwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OlZJU0lCTEVfU1RSSU5HOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/UnknownConstructedObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIFVua25vd25Db25zdHJ1Y3RlZE9iamVjdCBleHRlbmRzIENvbnN0cnVjdAp7CiAgICBwcml2YXRlICRpZGVudGlmaWVyOwogICAgcHJpdmF0ZSAkY29udGVudExlbmd0aDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKgogICAgICogQHRocm93cyBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCkKICAgIHsKICAgICAgICAkdGhpcy0+aWRlbnRpZmllciA9IHNlbGY6OnBhcnNlQmluYXJ5SWRlbnRpZmllcigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkdGhpcy0+Y29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgJGNoaWxkcmVuID0gW107CiAgICAgICAgJG9jdGV0c1RvUmVhZCA9ICR0aGlzLT5jb250ZW50TGVuZ3RoOwogICAgICAgIHdoaWxlICgkb2N0ZXRzVG9SZWFkID4gMCkgewogICAgICAgICAgICAkbmV3Q2hpbGQgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvY3RldHNUb1JlYWQgLT0gJG5ld0NoaWxkLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkbmV3Q2hpbGQ7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KC4uLiRjaGlsZHJlbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBvcmQoJHRoaXMtPmlkZW50aWZpZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlkZW50aWZpZXI7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudExlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/UnknownObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIFVua25vd25PYmplY3QgZXh0ZW5kcyBPYmplY3QKewogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICR2YWx1ZTsKCiAgICBwcml2YXRlICRpZGVudGlmaWVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgJGlkZW50aWZpZXIgRWl0aGVyIHRoZSBmaXJzdCBpZGVudGlmaWVyIG9jdGV0IGFzIGludCBvciBhbGwgaWRlbnRpZmllciBieXRlcyBhcyBhIHN0cmluZwogICAgICogQHBhcmFtIGludCAgICAgICAgJGNvbnRlbnRMZW5ndGgKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpZGVudGlmaWVyLCAkY29udGVudExlbmd0aCkKICAgIHsKICAgICAgICBpZiAoaXNfaW50KCRpZGVudGlmaWVyKSkgewogICAgICAgICAgICAkaWRlbnRpZmllciA9IGNocigkaWRlbnRpZmllcik7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aWRlbnRpZmllciA9ICRpZGVudGlmaWVyOwogICAgICAgICR0aGlzLT52YWx1ZSA9ICJVbnBhcnNhYmxlIE9iamVjdCAoeyRjb250ZW50TGVuZ3RofSBieXRlcykiOwogICAgICAgICR0aGlzLT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG9yZCgkdGhpcy0+aWRlbnRpZmllclswXSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldElkZW50aWZpZXIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aWRlbnRpZmllcjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50TGVuZ3RoKCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICcnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/AlgorithmIdentifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxDb21wb3NpdGVcQXR0cmlidXRlVHlwZUFuZFZhbHVlOwoKY2xhc3MgQWxnb3JpdGhtSWRlbnRpZmllciBleHRlbmRzIEF0dHJpYnV0ZVR5cGVBbmRWYWx1ZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG9iamVjdElkZW50aWZpZXJTdHJpbmcpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkb2JqZWN0SWRlbnRpZmllclN0cmluZywgbmV3IE51bGxPYmplY3QoKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CertificateExtensions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcT2JqZWN0Owp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcWDUwOVxTQU5cU3ViamVjdEFsdGVybmF0aXZlTmFtZXM7CgpjbGFzcyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMgZXh0ZW5kcyBTZXQgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcml2YXRlICRpbm5lclNlcXVlbmNlOwogICAgcHJpdmF0ZSAkZXh0ZW5zaW9ucyA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmlubmVyU2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR0aGlzLT5pbm5lclNlcXVlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoU3ViamVjdEFsdGVybmF0aXZlTmFtZXMgJHNhbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkZEV4dGVuc2lvbihPSUQ6OkNFUlRfRVhUX1NVQkpFQ1RfQUxUX05BTUUsICRzYW5zKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZEV4dGVuc2lvbigkb2lkU3RyaW5nLCBPYmplY3QgJGV4dGVuc2lvbikKICAgIHsKICAgICAgICAkc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkc2VxdWVuY2UtPmFkZENoaWxkKG5ldyBPYmplY3RJZGVudGlmaWVyKCRvaWRTdHJpbmcpKTsKICAgICAgICAkc2VxdWVuY2UtPmFkZENoaWxkKCRleHRlbnNpb24pOwoKICAgICAgICAkdGhpcy0+aW5uZXJTZXF1ZW5jZS0+YWRkQ2hpbGQoJHNlcXVlbmNlKTsKICAgICAgICAkdGhpcy0+ZXh0ZW5zaW9uc1tdID0gJGV4dGVuc2lvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5leHRlbnNpb25zOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpTRVQsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICR0bXBPZmZzZXQgPSAkb2Zmc2V0SW5kZXg7CiAgICAgICAgJGV4dGVuc2lvbnMgPSBTZXF1ZW5jZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkdG1wT2Zmc2V0ICs9IDEgKyAkZXh0ZW5zaW9ucy0+Z2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMoKTsKCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgZm9yZWFjaCAoJGV4dGVuc2lvbnMgYXMgJGV4dGVuc2lvbikgewogICAgICAgICAgICBpZiAoJGV4dGVuc2lvbi0+Z2V0VHlwZSgpICE9IElkZW50aWZpZXI6OlNFUVVFTkNFKSB7CiAgICAgICAgICAgICAgICAvL0ZJWE1FIHdyb25nIG9mZnNldCBpbmRleAogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignQ291bGQgbm90IHBhcnNlIENlcnRpZmljYXRlIEV4dGVuc2lvbnM6IEV4cGVjdGVkIEFTTi4xIFNlcXVlbmNlIGJ1dCBnb3QgJy4kZXh0ZW5zaW9uLT5nZXRUeXBlTmFtZSgpLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdG1wT2Zmc2V0ICs9IDEgKyAkZXh0ZW5zaW9uLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygpOwogICAgICAgICAgICAkY2hpbGRyZW4gPSAkZXh0ZW5zaW9uLT5nZXRDaGlsZHJlbigpOwogICAgICAgICAgICBpZiAoY291bnQoJGNoaWxkcmVuKSA8IDIpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NvdWxkIG5vdCBwYXJzZSBDZXJ0aWZpY2F0ZSBFeHRlbnNpb25zOiBOZWVkcyBhdCBsZWFzdCB0d28gY2hpbGQgZWxlbWVudHMgcGVyIGV4dGVuc2lvbiBzZXF1ZW5jZSAob2JqZWN0IGlkZW50aWZpZXIgYW5kIG9jdGV0IHN0cmluZyknLCAkdG1wT2Zmc2V0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvKiogQHZhciBcRkdcQVNOMVxPYmplY3QgJG9iamVjdElkZW50aWZpZXIgKi8KICAgICAgICAgICAgJG9iamVjdElkZW50aWZpZXIgPSAkY2hpbGRyZW5bMF07CgogICAgICAgICAgICAvKiogQHZhciBPY3RldFN0cmluZyAkb2N0ZXRTdHJpbmcgKi8KICAgICAgICAgICAgJG9jdGV0U3RyaW5nID0gJGNoaWxkcmVuWzFdOwoKICAgICAgICAgICAgaWYgKCRvYmplY3RJZGVudGlmaWVyLT5nZXRUeXBlKCkgIT0gSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NvdWxkIG5vdCBwYXJzZSBDZXJ0aWZpY2F0ZSBFeHRlbnNpb25zOiBFeHBlY3RlZCBBU04uMSBPYmplY3QgSWRlbnRpZmllciBidXQgZ290ICcuJGV4dGVuc2lvbi0+Z2V0VHlwZU5hbWUoKSwgJHRtcE9mZnNldCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0bXBPZmZzZXQgKz0gJG9iamVjdElkZW50aWZpZXItPmdldE9iamVjdExlbmd0aCgpOwoKICAgICAgICAgICAgaWYgKCRvYmplY3RJZGVudGlmaWVyLT5nZXRDb250ZW50KCkgPT0gT0lEOjpDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FKSB7CiAgICAgICAgICAgICAgICAkc2FucyA9IFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkdG1wT2Zmc2V0KTsKICAgICAgICAgICAgICAgICRwYXJzZWRPYmplY3QtPmFkZFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCRzYW5zKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIGNhbiBub3cgb25seSBwYXJzZSBTQU5zLiBUaGVyZSBtaWdodCBiZSBtb3JlIGluIHRoZSBmdXR1cmUKICAgICAgICAgICAgICAgICR0bXBPZmZzZXQgKz0gJG9jdGV0U3RyaW5nLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+Z2V0QmluYXJ5KCk7IC8vIERldGVybWluZSB0aGUgbnVtYmVyIG9mIGNvbnRlbnQgb2N0ZXRzIGFuZCBvYmplY3Qgc2l6ZXMgb25jZSAoanVzdCB0byBsZXQgdGhlIGVxdWFsaXR5IHVuaXQgdGVzdHMgcGFzcyA6LyApCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CertificateSubject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXENvbXBvc2l0ZVxSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxDb21wb3NpdGVcUkROU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CgpjbGFzcyBDZXJ0aWZpY2F0ZVN1YmplY3QgZXh0ZW5kcyBTZXF1ZW5jZSBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJGNvbW1vbk5hbWU7CiAgICBwcml2YXRlICRlbWFpbDsKICAgIHByaXZhdGUgJG9yZ2FuaXphdGlvbjsKICAgIHByaXZhdGUgJGxvY2FsaXR5OwogICAgcHJpdmF0ZSAkc3RhdGU7CiAgICBwcml2YXRlICRjb3VudHJ5OwogICAgcHJpdmF0ZSAkb3JnYW5pemF0aW9uYWxVbml0OwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY29tbW9uTmFtZQogICAgICogQHBhcmFtIHN0cmluZyAkZW1haWwKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9yZ2FuaXphdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAkbG9jYWxpdHkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0YXRlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb3VudHJ5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRvcmdhbml6YXRpb25hbFVuaXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb21tb25OYW1lLCAkZW1haWwsICRvcmdhbml6YXRpb24sICRsb2NhbGl0eSwgJHN0YXRlLCAkY291bnRyeSwgJG9yZ2FuaXphdGlvbmFsVW5pdCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KAogICAgICAgICAgICBuZXcgUkROU3RyaW5nKE9JRDo6Q09VTlRSWV9OQU1FLCAkY291bnRyeSksCiAgICAgICAgICAgIG5ldyBSRE5TdHJpbmcoT0lEOjpTVEFURV9PUl9QUk9WSU5DRV9OQU1FLCAkc3RhdGUpLAogICAgICAgICAgICBuZXcgUkROU3RyaW5nKE9JRDo6TE9DQUxJVFlfTkFNRSwgJGxvY2FsaXR5KSwKICAgICAgICAgICAgbmV3IFJETlN0cmluZyhPSUQ6Ok9SR0FOSVpBVElPTl9OQU1FLCAkb3JnYW5pemF0aW9uKSwKICAgICAgICAgICAgbmV3IFJETlN0cmluZyhPSUQ6Ok9VX05BTUUsICRvcmdhbml6YXRpb25hbFVuaXQpLAogICAgICAgICAgICBuZXcgUkROU3RyaW5nKE9JRDo6Q09NTU9OX05BTUUsICRjb21tb25OYW1lKSwKICAgICAgICAgICAgbmV3IFJETlN0cmluZyhPSUQ6OlBLQ1M5X0VNQUlMLCAkZW1haWwpCiAgICAgICAgKTsKCiAgICAgICAgJHRoaXMtPmNvbW1vbk5hbWUgPSAkY29tbW9uTmFtZTsKICAgICAgICAkdGhpcy0+ZW1haWwgPSAkZW1haWw7CiAgICAgICAgJHRoaXMtPm9yZ2FuaXphdGlvbiA9ICRvcmdhbml6YXRpb247CiAgICAgICAgJHRoaXMtPmxvY2FsaXR5ID0gJGxvY2FsaXR5OwogICAgICAgICR0aGlzLT5zdGF0ZSA9ICRzdGF0ZTsKICAgICAgICAkdGhpcy0+Y291bnRyeSA9ICRjb3VudHJ5OwogICAgICAgICR0aGlzLT5vcmdhbml6YXRpb25hbFVuaXQgPSAkb3JnYW5pemF0aW9uYWxVbml0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21tb25OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbW1vbk5hbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEVtYWlsKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVtYWlsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmdhbml6YXRpb24oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b3JnYW5pemF0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2NhbGl0eSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sb2NhbGl0eTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RhdGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvdW50cnkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y291bnRyeTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JnYW5pemF0aW9uYWxVbml0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9yZ2FuaXphdGlvbmFsVW5pdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgSWRlbnRpZmllcjo6U0VRVUVOQ0UsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgJG5hbWVzID0gW107CiAgICAgICAgJG9jdGV0c1RvUmVhZCA9ICRjb250ZW50TGVuZ3RoOwogICAgICAgIHdoaWxlICgkb2N0ZXRzVG9SZWFkID4gMCkgewogICAgICAgICAgICAkcmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSA9IFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvY3RldHNUb1JlYWQgLT0gJHJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUtPmdldE9iamVjdExlbmd0aCgpOwogICAgICAgICAgICAkbmFtZXNbXSA9ICRyZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CSR/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CSR/Attributes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxDU1I7Cgp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xYNTA5XENlcnRpZmljYXRlRXh0ZW5zaW9uczsKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcQ29uc3RydWN0Owp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwoKY2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gMHhBMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQXR0cmlidXRlKCRvYmplY3RJZGVudGlmaWVyLCBTZXQgJGF0dHJpYnV0ZSkKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRvYmplY3RJZGVudGlmaWVyKSkgewogICAgICAgICAgICAkb2JqZWN0SWRlbnRpZmllciA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCRvYmplY3RJZGVudGlmaWVyKTsKICAgICAgICB9CiAgICAgICAgJGF0dHJpYnV0ZVNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCRvYmplY3RJZGVudGlmaWVyLCAkYXR0cmlidXRlKTsKICAgICAgICAkYXR0cmlidXRlU2VxdWVuY2UtPmdldE51bWJlck9mTGVuZ3RoT2N0ZXRzKCk7ICAvLyBsZW5ndGggYW5kIG51bWJlciBvZiBsZW5ndGggb2N0ZXRzIGlzIGNhbGN1bGF0ZWQKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJGF0dHJpYnV0ZVNlcXVlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgMHhBMCwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICRvY3RldHNUb1JlYWQgPSAkY29udGVudExlbmd0aDsKCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgd2hpbGUgKCRvY3RldHNUb1JlYWQgPiAwKSB7CiAgICAgICAgICAgICRpbml0aWFsT2Zmc2V0ID0gJG9mZnNldEluZGV4OyAvLyB1c2VkIHRvIGNhbGN1bGF0ZSBob3cgbXVjaCBiaXRzIGhhdmUgYmVlbiByZWFkCiAgICAgICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpTRVFVRU5DRSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICAgICBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICAgICAkb2JqZWN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvaWRTdHJpbmcgPSAkb2JqZWN0SWRlbnRpZmllci0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICBpZiAoJG9pZFN0cmluZyA9PSBPSUQ6OlBLQ1M5X0VYVEVOU0lPTl9SRVFVRVNUKSB7CiAgICAgICAgICAgICAgICAkYXR0cmlidXRlID0gQ2VydGlmaWNhdGVFeHRlbnNpb25zOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGF0dHJpYnV0ZSA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkQXR0cmlidXRlKCRvYmplY3RJZGVudGlmaWVyLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgJG9jdGV0c1RvUmVhZCAtPSAoJG9mZnNldEluZGV4IC0gJGluaXRpYWxPZmZzZXQpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CSR/CSR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxDU1I7Cgp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxJbnRlZ2VyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xYNTA5XENlcnRpZmljYXRlU3ViamVjdDsKdXNlIEZHXFg1MDlcQWxnb3JpdGhtSWRlbnRpZmllcjsKdXNlIEZHXFg1MDlcUHVibGljS2V5OwoKY2xhc3MgQ1NSIGV4dGVuZHMgU2VxdWVuY2UKewogICAgY29uc3QgQ1NSX1ZFUlNJT05fTlIgPSAwOwoKICAgIHByb3RlY3RlZCAkc3ViamVjdDsKICAgIHByb3RlY3RlZCAkcHVibGljS2V5OwogICAgcHJvdGVjdGVkICRzaWduYXR1cmU7CiAgICBwcm90ZWN0ZWQgJHNpZ25hdHVyZUFsZ29yaXRobTsKCiAgICBwcm90ZWN0ZWQgJHN0YXJ0U2VxdWVuY2U7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb21tb25OYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbWFpbAogICAgICogQHBhcmFtIHN0cmluZyAkb3JnYW5pemF0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsb2NhbGl0eQogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvdW50cnkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9yZ2FuaXphdGlvbmFsVW5pdAogICAgICogQHBhcmFtIHN0cmluZyAkcHVibGljS2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaWduYXR1cmUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNpZ25hdHVyZUFsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbW1vbk5hbWUsICRlbWFpbCwgJG9yZ2FuaXphdGlvbiwgJGxvY2FsaXR5LCAkc3RhdGUsICRjb3VudHJ5LCAkb3JnYW5pemF0aW9uYWxVbml0LCAkcHVibGljS2V5LCAkc2lnbmF0dXJlLCAkc2lnbmF0dXJlQWxnb3JpdGhtID0gT0lEOjpTSEExX1dJVEhfUlNBX1NJR05BVFVSRSkKICAgIHsKICAgICAgICAkdGhpcy0+c3ViamVjdCA9IG5ldyBDZXJ0aWZpY2F0ZVN1YmplY3QoCiAgICAgICAgICAgICRjb21tb25OYW1lLAogICAgICAgICAgICAkZW1haWwsCiAgICAgICAgICAgICRvcmdhbml6YXRpb24sCiAgICAgICAgICAgICRsb2NhbGl0eSwKICAgICAgICAgICAgJHN0YXRlLAogICAgICAgICAgICAkY291bnRyeSwKICAgICAgICAgICAgJG9yZ2FuaXphdGlvbmFsVW5pdAogICAgICAgICk7CiAgICAgICAgJHRoaXMtPnB1YmxpY0tleSA9ICRwdWJsaWNLZXk7CiAgICAgICAgJHRoaXMtPnNpZ25hdHVyZSA9ICRzaWduYXR1cmU7CiAgICAgICAgJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobSA9ICRzaWduYXR1cmVBbGdvcml0aG07CgogICAgICAgICR0aGlzLT5jcmVhdGVDU1JTZXF1ZW5jZSgpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVDU1JTZXF1ZW5jZSgpCiAgICB7CiAgICAgICAgJHZlcnNpb25OciAgICAgICAgICAgID0gbmV3IEludGVnZXIoc2VsZjo6Q1NSX1ZFUlNJT05fTlIpOwogICAgICAgICRwdWJsaWNLZXkgICAgICAgICAgICA9IG5ldyBQdWJsaWNLZXkoJHRoaXMtPnB1YmxpY0tleSk7CiAgICAgICAgJHNpZ25hdHVyZSAgICAgICAgICAgID0gbmV3IEJpdFN0cmluZygkdGhpcy0+c2lnbmF0dXJlKTsKICAgICAgICAkc2lnbmF0dXJlQWxnb3JpdGhtICAgID0gbmV3IEFsZ29yaXRobUlkZW50aWZpZXIoJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobSk7CgogICAgICAgICRjZXJ0UmVxdWVzdEluZm8gID0gbmV3IFNlcXVlbmNlKCR2ZXJzaW9uTnIsICR0aGlzLT5zdWJqZWN0LCAkcHVibGljS2V5KTsKCiAgICAgICAgJHRoaXMtPmFkZENoaWxkKCRjZXJ0UmVxdWVzdEluZm8pOwogICAgICAgICR0aGlzLT5hZGRDaGlsZCgkc2lnbmF0dXJlQWxnb3JpdGhtKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJHNpZ25hdHVyZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICR0bXAgPSBiYXNlNjRfZW5jb2RlKCR0aGlzLT5nZXRCaW5hcnkoKSk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IHN0cmxlbigkdG1wKTsgJGkrKykgewogICAgICAgICAgICBpZiAoKCRpICsgMikgJSA2NSA9PSAwKSB7CiAgICAgICAgICAgICAgICAkdG1wID0gc3Vic3RyKCR0bXAsIDAsICRpICsgMSkuIlxuIi5zdWJzdHIoJHRtcCwgJGkgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICctLS0tLUJFR0lOIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLScuUEhQX0VPTDsKICAgICAgICAkcmVzdWx0IC49ICR0bXAuUEhQX0VPTDsKICAgICAgICAkcmVzdWx0IC49ICctLS0tLUVORCBDRVJUSUZJQ0FURSBSRVFVRVNULS0tLS0nOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VmVyc2lvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OkNTUl9WRVJTSU9OX05SOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmdhbml6YXRpb25OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YmplY3QtPmdldE9yZ2FuaXphdGlvbigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2NhbE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3ViamVjdC0+Z2V0TG9jYWxpdHkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3ViamVjdC0+Z2V0U3RhdGUoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q291bnRyeSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdWJqZWN0LT5nZXRDb3VudHJ5KCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yZ2FuaXphdGlvbmFsVW5pdCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdWJqZWN0LT5nZXRPcmdhbml6YXRpb25hbFVuaXQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHVibGljS2V5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnB1YmxpY0tleTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpZ25hdHVyZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlQWxnb3JpdGhtKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/PrivateKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBQcml2YXRlS2V5IGV4dGVuZHMgU2VxdWVuY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRoZXhLZXkKICAgICAqIEBwYXJhbSBcRkdcQVNOMVxPYmplY3R8c3RyaW5nICRhbGdvcml0aG1JZGVudGlmaWVyU3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaGV4S2V5LCAkYWxnb3JpdGhtSWRlbnRpZmllclN0cmluZyA9IE9JRDo6UlNBX0VOQ1JZUFRJT04pCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgKICAgICAgICAgICAgbmV3IFNlcXVlbmNlKAogICAgICAgICAgICAgICAgbmV3IE9iamVjdElkZW50aWZpZXIoJGFsZ29yaXRobUlkZW50aWZpZXJTdHJpbmcpLAogICAgICAgICAgICAgICAgbmV3IE51bGxPYmplY3QoKQogICAgICAgICAgICApLAogICAgICAgICAgICBuZXcgQml0U3RyaW5nKCRoZXhLZXkpCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/PublicKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBQdWJsaWNLZXkgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGhleEtleQogICAgICogQHBhcmFtIFxGR1xBU04xXE9iamVjdHxzdHJpbmcgJGFsZ29yaXRobUlkZW50aWZpZXJTdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRoZXhLZXksICRhbGdvcml0aG1JZGVudGlmaWVyU3RyaW5nID0gT0lEOjpSU0FfRU5DUllQVElPTikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KAogICAgICAgICAgICBuZXcgU2VxdWVuY2UoCiAgICAgICAgICAgICAgICBuZXcgT2JqZWN0SWRlbnRpZmllcigkYWxnb3JpdGhtSWRlbnRpZmllclN0cmluZyksCiAgICAgICAgICAgICAgICBuZXcgTnVsbE9iamVjdCgpCiAgICAgICAgICAgICksCiAgICAgICAgICAgIG5ldyBCaXRTdHJpbmcoJGhleEtleSkKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/DNSName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcR2VuZXJhbFN0cmluZzsKCmNsYXNzIEROU05hbWUgZXh0ZW5kcyBHZW5lcmFsU3RyaW5nCnsKICAgIGNvbnN0IElERU5USUZJRVIgPSAweDgyOyAvLyBub3Qgc3VyZSB5ZXQgd2h5IHRoaXMgaXMgdGhlIGlkZW50aWZpZXIgdXNlZCBpbiBTQU4gZXh0ZW5zaW9ucwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZG5zTmFtZVN0cmluZykKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRkbnNOYW1lU3RyaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OklERU5USUZJRVI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/IPAddress.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgSVBBZGRyZXNzIGV4dGVuZHMgT2JqZWN0IGltcGxlbWVudHMgUGFyc2FibGUKewogICAgY29uc3QgSURFTlRJRklFUiA9IDB4ODc7IC8vIG5vdCBzdXJlIHlldCB3aHkgdGhpcyBpcyB0aGUgaWRlbnRpZmllciB1c2VkIGluIFNBTiBleHRlbnNpb25zCgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICR2YWx1ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlwQWRkcmVzc1N0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkaXBBZGRyZXNzU3RyaW5nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6SURFTlRJRklFUjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgJGlwUGFydHMgPSBleHBsb2RlKCcuJywgJHRoaXMtPnZhbHVlKTsKICAgICAgICAkYmluYXJ5ICA9IGNocigkaXBQYXJ0c1swXSk7CiAgICAgICAgJGJpbmFyeSAuPSBjaHIoJGlwUGFydHNbMV0pOwogICAgICAgICRiaW5hcnkgLj0gY2hyKCRpcFBhcnRzWzJdKTsKICAgICAgICAkYmluYXJ5IC49IGNocigkaXBQYXJ0c1szXSk7CgogICAgICAgIHJldHVybiAkYmluYXJ5OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBzZWxmOjpJREVOVElGSUVSLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQSBGR1xcWDUwOVxTQU5cSVBBZGRyZXNzIHNob3VsZCBoYXZlIGEgY29udGVudCBsZW5ndGggb2YgNC4gRXh0cmFjdGVkIGxlbmd0aCB3YXMgeyRjb250ZW50TGVuZ3RofSIsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaXBBZGRyZXNzU3RyaW5nID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSk7CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZigkaXBBZGRyZXNzU3RyaW5nKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/SubjectAlternativeNames.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcUGFyc2FibGU7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCi8qKgogKiBTZWUgc2VjdGlvbiA4LjMuMi4xIG9mIElUVS1UIFguNTA5LgogKi8KY2xhc3MgU3ViamVjdEFsdGVybmF0aXZlTmFtZXMgZXh0ZW5kcyBPYmplY3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcml2YXRlICRhbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2U7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGREb21haW5OYW1lKEROU05hbWUgJGRvbWFpbk5hbWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsdGVybmF0aXZlTmFtZXNTZXF1ZW5jZS0+YWRkQ2hpbGQoJGRvbWFpbk5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRJUChJUEFkZHJlc3MgJGlwKQogICAgewogICAgICAgICR0aGlzLT5hbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2UtPmFkZENoaWxkKCRpcCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlLT5nZXRDb250ZW50KCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2UtPmdldEJpbmFyeSgpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpPQ1RFVFNUUklORywgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwoKICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPCAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lczogVGhlIFNlcXVlbmNlIHdpdGhpbiB0aGUgb2N0ZXQgc3RyaW5nIGFmdGVyIHRoZSBPYmplY3QgaWRlbnRpZmllciAnLk9JRDo6Q0VSVF9FWFRfU1VCSkVDVF9BTFRfTkFNRS4iIGlzIHRvbyBzaG9ydCAoeyRjb250ZW50TGVuZ3RofSBvY3RldHMpIiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRvZmZzZXRPZlNlcXVlbmNlID0gJG9mZnNldEluZGV4OwogICAgICAgICRzZXF1ZW5jZSA9IFNlcXVlbmNlOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICRvZmZzZXRPZlNlcXVlbmNlICs9ICRzZXF1ZW5jZS0+Z2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMoKSArIDE7CgogICAgICAgIGlmICgkc2VxdWVuY2UtPmdldE9iamVjdExlbmd0aCgpICE9ICRjb250ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lczogVGhlIFNlcXVlbmNlIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCB0aGUgbGVuZ3RoIG9mIHRoZSBzdXJyb3VuZGluZyBvY3RldCBzdHJpbmcnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgLyoqIEB2YXIgXEZHXEFTTjFcT2JqZWN0ICRvYmplY3QgKi8KICAgICAgICBmb3JlYWNoICgkc2VxdWVuY2UgYXMgJG9iamVjdCkgewogICAgICAgICAgICBpZiAoJG9iamVjdC0+Z2V0VHlwZSgpID09IEROU05hbWU6OklERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgICRkb21haW5OYW1lID0gRE5TTmFtZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldE9mU2VxdWVuY2UpOwogICAgICAgICAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkRG9tYWluTmFtZSgkZG9tYWluTmFtZSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkb2JqZWN0LT5nZXRUeXBlKCkgPT0gSVBBZGRyZXNzOjpJREVOVElGSUVSKSB7CiAgICAgICAgICAgICAgICAkaXAgPSBJUEFkZHJlc3M6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRPZlNlcXVlbmNlKTsKICAgICAgICAgICAgICAgICRwYXJzZWRPYmplY3QtPmFkZElQKCRpcCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDb3VsZCBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiBPbmx5IEROU05hbWUgYW5kIElQIFNBTnMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0LT5nZXRCaW5hcnkoKTsgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgY29udGVudCBvY3RldHMgYW5kIG9iamVjdCBzaXplcyBvbmNlIChqdXN0IHRvIGxldCB0aGUgZXF1YWxpdHkgdW5pdCB0ZXN0cyBwYXNzIDovICkKICAgICAgICByZXR1cm4gJHBhcnNlZE9iamVjdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDEyLTIwMTUgRnJpZWRyaWNoIEdyb8OfZSA8ZnJpZWRyaWNoLmdyb3NzZUBnbWFpbC5jb20+CgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQQVNOMQo9PT09PT09CgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vc2VjdXJlLnRyYXZpcy1jaS5vcmcvZmdyb3NzZS9QSFBBU04xLnBuZz9icmFuY2g9bWFzdGVyKV0oaHR0cDovL3RyYXZpcy1jaS5vcmcvZmdyb3NzZS9QSFBBU04xKQpbIVtISFZNIFN0YXR1c10oaHR0cDovL2hodm0uaDRjYy5kZS9iYWRnZS9mZ3Jvc3NlL3BocGFzbjEucG5nKV0oaHR0cDovL2hodm0uaDRjYy5kZS9wYWNrYWdlL2Zncm9zc2UvcGhwYXNuMSkKWyFbUEhQIDcgcmVhZHldKGh0dHA6Ly9waHA3cmVhZHkudGltZXNwbGludGVyLmNoL2Zncm9zc2UvUEhQQVNOMS9iYWRnZS5zdmcpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZmdyb3NzZS9QSFBBU04xKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2Zncm9zc2UvUEhQQVNOMS9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlciZzZXJ2aWNlPWdpdGh1YildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9mZ3Jvc3NlL1BIUEFTTjE/YnJhbmNoPW1hc3RlcikKClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9mZ3Jvc3NlL3BocGFzbjEvdi9zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbVG90YWwgRG93bmxvYWRzXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2Zncm9zc2UvcGhwYXNuMS9kb3dubG9hZHMucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbTGF0ZXN0IFVuc3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvZmdyb3NzZS9waHBhc24xL3YvdW5zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9mZ3Jvc3NlL3BocGFzbjEvbGljZW5zZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvZmdyb3NzZS9waHBhc24xKQoKQSBQSFAgRnJhbWV3b3JrIHRoYXQgYWxsb3dzIHlvdSB0byBlbmNvZGUgYW5kIGRlY29kZSBhcmJpdHJhcnkgW0FTTi4xXVszXSBzdHJ1Y3R1cmVzCnVzaW5nIHRoZSBbSVRVLVQgWC42OTAgRW5jb2RpbmcgUnVsZXNdWzRdLgpUaGlzIGVuY29kaW5nIGlzIHZlcnkgZnJlcXVlbnRseSB1c2VkIGluIFtYLjUwOSBQS0kgZW52aXJvbm1lbnRzXVs1XSBvciB0aGUgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGhldGVyb2dlbmVvdXMgY29tcHV0ZXIgc3lzdGVtcy4KClRoZSBBUEkgYWxsb3dzIHlvdSB0byBlbmNvZGUgQVNOLjEgc3RydWN0dXJlcyB0byBjcmVhdGUgYmluYXJ5IGRhdGEgc3VjaCBhcyBjZXJ0aWZpY2F0ZQpzaWduaW5nIHJlcXVlc3RzIChDU1IpLCBYLjUwOSBjZXJ0aWZpY2F0ZXMgb3IgY2VydGlmaWNhdGUgcmV2b2NhdGlvbiBsaXN0cyAoQ1JMKS4KUEhQQVNOMSBjYW4gYWxzbyByZWFkIFtCRVIgZW5jb2RlZF1bNl0gYmluYXJ5IGRhdGEgaW50byBzZXBhcmF0ZSBQSFAgb2JqZWN0cyB0aGF0IGNhbiBiZSBtYW5pcHVsYXRlZCBieSB0aGUgdXNlciBhbmQgcmVlbmNvZGVkIGFmdGVyd2FyZHMuCgpUaGUgKipjaGFuZ2Vsb2cqKiBjYW4gbm93IGJlIGZvdW5kIGF0IFtDSEFOR0VMT0cubWRdKENIQU5HRUxPRy5tZCkuCgojIyBEZXBlbmRlbmNpZXMKClBIUEFTTjEgcmVxdWlyZXMgYXQgbGVhc3QgYFBIUCA1LjZgIGFuZCB0aGUgYGdtcGAgZXh0ZW5zaW9uLgpJdCBoYXMgYWxzbyBiZWVuIHN1Y2Nlc3NmdWxseSB0ZXN0ZWQgdXNpbmcgYFBIUCA3YCBhbmQgYEhIVk1gCkZvciB0aGUgbG9hZGluZyBvZiBvYmplY3QgaWRlbnRpZmllciBuYW1lcyBkaXJlY3RseSBmcm9tIHRoZSB3ZWIgW2N1cmxdWzddIGlzIHVzZWQuCgojIyBJbnN0YWxsYXRpb24KClRoZSBwcmVmZXJyZWQgd2F5IHRvIGluc3RhbGwgdGhpcyBsaWJyYXJ5IGlzIHRvIHJlbHkgb24gW0NvbXBvc2VyXVsyXToKCmBgYGJhc2gKJCBjb21wb3NlciByZXF1aXJlIGZncm9zc2UvcGhwYXNuMQpgYGAKCiMjIFVzYWdlCgojIyMgRW5jb2RpbmcgQVNOLjEgU3RydWN0dXJlcwoKUEhQQVNOMSBvZmZlcnMgeW91IGEgY2xhc3MgZm9yIGVhY2ggb2YgdGhlIGltcGxlbWVudGVkIEFTTi4xIHVuaXZlcnNhbCB0eXBlcy4KVGhlIGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgcHJldHR5IHNlbGYgZXhwbGFuYXRvcnkgc28geW91IHNob3VsZCBoYXZlIG5vIGJpZyB0cm91YmxlIGdldHRpbmcgc3RhcnRlZC4KQWxsIGRhdGEgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIFtERVIgZW5jb2RpbmddWzhdCgpgYGBwaHAKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxFbnVtZXJhdGVkOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFByaW50YWJsZVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcTnVsbE9iamVjdDsKCiRpbnRlZ2VyID0gbmV3IEludGVnZXIoMTIzNDU2KTsgICAgICAgIAokYm9vbGVhbiA9IG5ldyBCb29sZWFuKHRydWUpOwokZW51bSA9IG5ldyBFbnVtZXJhdGVkKDEpOwokaWE1U3RyaW5nID0gbmV3IElBNVN0cmluZygnSGVsbG8gd29ybGQnKTsKCiRhc25OdWxsID0gbmV3IE51bGxPYmplY3QoKTsKJG9iamVjdElkZW50aWZpZXIxID0gbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMi4yNTAuMS4xNi45Jyk7CiRvYmplY3RJZGVudGlmaWVyMiA9IG5ldyBPYmplY3RJZGVudGlmaWVyKE9JRDo6UlNBX0VOQ1JZUFRJT04pOwokcHJpbnRhYmxlU3RyaW5nID0gbmV3IFByaW50YWJsZVN0cmluZygnRm9vIGJhcicpOwoKJHNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCRpbnRlZ2VyLCAkYm9vbGVhbiwgJGVudW0sICRpYTVTdHJpbmcpOwokc2V0ID0gbmV3IFNldCgkc2VxdWVuY2UsICRhc25OdWxsLCAkb2JqZWN0SWRlbnRpZmllcjEsICRvYmplY3RJZGVudGlmaWVyMiwgJHByaW50YWJsZVN0cmluZyk7CgokbXlCaW5hcnkgID0gJHNlcXVlbmNlLT5nZXRCaW5hcnkoKTsKJG15QmluYXJ5IC49ICRzZXQtPmdldEJpbmFyeSgpOwoKZWNobyBiYXNlNjRfZW5jb2RlKCRteUJpbmFyeSk7CmBgYAoKCiMjIyBEZWNvZGluZyBiaW5hcnkgZGF0YQoKRGVjb2RpbmcgQkVSIGVuY29kZWQgYmluYXJ5IGRhdGEgaXMganVzdCBhcyBlYXN5IGFzIGVuY29kaW5nIGl0OgoKYGBgcGhwCnVzZSBGR1xBU04xXE9iamVjdDsKCiRiYXNlNjRTdHJpbmcgPSAuLi4KJGJpbmFyeURhdGEgPSBiYXNlNjRfZGVjb2RlKCRiYXNlNjRTdHJpbmcpOyAgICAgICAgCiRhc25PYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwovLyBkbyBzdHVmZgpgYGAKCklmIHlvdSBhbHJlYWR5IGtub3cgZXhhY3RseSBob3cgeW91ciBleHBlY3RlZCBkYXRhIHNob3VsZCBsb29rIGxpa2UgeW91IGNhbiB1c2UgdGhlIGBGR1xBU04xXFRlbXBsYXRlUGFyc2VyYDoKCmBgYHBocAp1c2UgRkdcQVNOMVxUZW1wbGF0ZVBhcnNlcjsKCi8vIGZpcnN0IGRlZmluZSB5b3VyIHRlbXBsYXRlCiR0ZW1wbGF0ZSA9IFsKICAgIElkZW50aWZpZXI6OlNFUVVFTkNFID0+IFsKICAgICAgICBJZGVudGlmaWVyOjpTRVQgPT4gWwogICAgICAgICAgICBJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUiwKICAgICAgICAgICAgSWRlbnRpZmllcjo6U0VRVUVOQ0UgPT4gWwogICAgICAgICAgICAgICAgSWRlbnRpZmllcjo6SU5URUdFUiwKICAgICAgICAgICAgICAgIElkZW50aWZpZXI6OkJJVFNUUklORywKICAgICAgICAgICAgXQogICAgICAgIF0KICAgIF0KXTsKCi8vIGlmIHlvdXIgYmluYXJ5IGRhdGEgaXMgbm90IG1hdGNoaW5nIHRoZSB0ZW1wbGF0ZSB5b3UgcHJvdmlkZWQgdGhpcyB3aWxsIHRocm93IGFuIGBcRXhjZXB0aW9uYDoKJHBhcnNlciA9IG5ldyBUZW1wbGF0ZVBhcnNlcigpOwokb2JqZWN0ID0gJHBhcnNlci0+cGFyc2VCaW5hcnkoJGRhdGEsICR0ZW1wbGF0ZSk7CgovLyB0aGVyZSBpcyBhbHNvIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gaWYgeW91IHBhcnNlIGJpbmFyeSBkYXRhIGZyb20gYmFzZTY0Ogokb2JqZWN0ID0gJHBhcnNlci0+cGFyc2VCYXNlNjQoJGRhdGEsICR0ZW1wbGF0ZSk7CmBgYAoKWW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBtYWtlIHN1cmUgeW91ciBkYXRhIGhhcyBleGFjdGx5IHRoZSBmb3JtYXQgeW91IGFyZSBleHBlY3RpbmcuCgojIyMgTmF2aWdhdGluZyBkZWNvZGVkIGRhdGEKCkFsbCBjb25zdHJ1Y3RlZCBjbGFzc2VzIChpLmUuIGBTZXF1ZW5jZWAgYW5kIGBTZXRgKSBjYW4gYmUgbmF2aWdhdGVkIGJ5IGFycmF5IGFjY2VzcyBvciB1c2luZyBhbiBpdGVyYXRvci4KWW91IGNhbiBmaW5kIGV4YW1wbGVzCltoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2Jsb2IvZjY0NDJjYWRkYTlkMzZmMzUxOGM3MzdlMzJmMjgzMDBhNTg4Yjc3Ny90ZXN0cy9BU04xL1VuaXZlcnNhbC9TZXF1ZW5jZVRlc3QucGhwI0wxNDgtMTQ4KSwKW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvYmxvYi9mNjQ0MmNhZGRhOWQzNmYzNTE4YzczN2UzMmYyODMwMGE1ODhiNzc3L3Rlc3RzL0FTTjEvVW5pdmVyc2FsL1NlcXVlbmNlVGVzdC5waHAjTDEyMSkgYW5kIApbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9ibG9iL2Y2NDQyY2FkZGE5ZDM2ZjM1MThjNzM3ZTMyZjI4MzAwYTU4OGI3NzcvdGVzdHMvQVNOMS9UZW1wbGF0ZVBhcnNlclRlc3QucGhwI0w0NSkuCgoKIyMjIEdpdmUgbWUgbW9yZSBleGFtcGxlcyEKClRvIHNlZSBzb21lIGV4YW1wbGUgdXNhZ2Ugb2YgdGhlIEFQSSBjbGFzc2VzIG9yIHNvbWUgZ2VuZXJhdGVkIG91dHB1dCBjaGVjayBvdXQgdGhlIFtleGFtcGxlc10oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS90cmVlL21hc3Rlci9leGFtcGxlcykuCgoKIyMjIEhvdyBkbyBJIGNvbnRyaWJ1dGU/CgpJZiB5b3UgZm91bmQgYW4gaXNzdWUgb3IgaGF2ZSBhIHF1ZXN0aW9uIHN1Ym1pdCBhIGdpdGh1YiBpc3N1ZSB3aXRoIGRldGFpbGVkIGluZm9ybWF0aW9uLgoKSW4gY2FzZSB5b3UgYWxyZWFkeSBrbm93IHdoYXQgY2F1c2VkIHRoZSBpc3N1ZSBhbmQgZmVlbCBpbiB0aGUgbW9vZCB0byBmaXggaXQsIHlvdXIgY29kZSBjb250cmlidXRpb25zIGFyZSBhbHdheXMgd2VsY29tZS4gSnVzdCBmb3JrIHRoZSByZXBvc2l0b3J5LCBpbXBsZW1lbnQgeW91ciBjaGFuZ2VzIGFuZCBtYWtlIHN1cmUgdGhhdCB5b3UgY292ZXJlZCBldmVyeXRoaW5nIHdpdGggdGVzdHMuCkFmdGVyd2FyZHMgc3VibWl0IGEgcHVsbCByZXF1ZXN0IHZpYSBnaXRodWIgYW5kIGJlIGEgbGl0dGxlIHBhdGllbnQgOikgSSB1c3VhbGx5IHRyeSB0byBjb21tZW50IGFuZC9vciBtZXJnZSBhcyBzb29uIGFzIHBvc3NpYmxlLgoKIyMjIyBNYWlsaW5nIGxpc3QKCk5ldyBmZWF0dXJlcyBvciBxdWVzdGlvbnMgY2FuIGJlIGRpc2N1c3NlZCBpbiBbdGhpcyBnb29nbGUgZ3JvdXAvbWFpbGluZyBsaXN0XVsxMl0uCgojIyMgVGhhbmtzCgpUbyBbYWxsIGNvbnRyaWJ1dG9yc11bMV0gc28gZmFyIQoKIyMgTGljZW5zZQoKVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBbTUlUIExpY2Vuc2VdKExJQ0VOU0UpLgoKWzFdOiBodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2dyYXBocy9jb250cmlidXRvcnMKWzJdOiBodHRwczovL2dldGNvbXBvc2VyLm9yZy8KWzNdOiBodHRwOi8vd3d3Lml0dS5pbnQvSVRVLVQvYXNuMS8KWzRdOiBodHRwOi8vd3d3Lml0dS5pbnQvSVRVLVQvcmVjb21tZW5kYXRpb25zL3JlYy5hc3B4P3JlYz14LjY5MApbNV06IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWC41MDkKWzZdOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1guNjkwI0JFUl9lbmNvZGluZwpbN106IGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9ib29rLmN1cmwucGhwCls4XTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLjY5MCNERVJfZW5jb2RpbmcKWzldOiBodHRwczovL3N0eWxlY2kuaW8KWzEwXTogaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vZ2l0aHViL2Zncm9zc2UvUEhQQVNOMQpbMTFdOiBodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2Jsb2IvbWFzdGVyL3Rlc3RzL0FTTjEvVGVtcGxhdGVQYXJzZXJUZXN0LnBocCNMMTYKWzEyXTogaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL2ZvcnVtL3BocGFzbjEK]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2UgTG9nCgojIyA2LjMuMyAtIDIwMTgtMDQtMjIKCiogRml4OiBEZWZhdWx0IGhlYWRlcnMgd2hlbiBkZWNvZGVfY29udGVudCBpcyBzcGVjaWZpZWQKCgojIyA2LjMuMiAtIDIwMTgtMDMtMjYKCiogRml4OiBSZWxlYXNlIHByb2Nlc3MKCgojIyA2LjMuMSAtIDIwMTgtMDMtMjYKCiogQnVnIGZpeDogUGFyc2luZyAwIGVwb2NoIGV4cGlyeSB0aW1lcyBpbiBjb29raWVzIFsjMjAxNF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMDE0KQoqIEltcHJvdmVtZW50OiBCZXR0ZXIgQ29ubmVjdEV4Y2VwdGlvbiBkZXRlY3Rpb24gWyMyMDEyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIwMTIpCiogQnVnIGZpeDogTWFsZm9ybWVkIGRvbWFpbiB0aGF0IGNvbnRhaW5zIGEgIi8iIFsjMTk5OV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xOTk5KQoqIEJ1ZyBmaXg6IFVuZGVmaW5lZCBvZmZzZXQgd2hlbiBhIGNvb2tpZSBoYXMgbm8gZmlyc3Qga2V5LXZhbHVlIHBhaXIgWyMxOTk4XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE5OTgpCiogSW1wcm92ZW1lbnQ6IFN1cHBvcnQgUEhQVW5pdCA2IFsjMTk1M10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xOTUzKQoqIEJ1ZyBmaXg6IFN1cHBvcnQgZW1wdHkgaGVhZGVycyBbIzE5MTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTkxNSkKKiBCdWcgZml4OiBJZ25vcmUgY2FzZSBkdXJpbmcgaGVhZGVyIG1vZGlmaWNhdGlvbnMgWyMxOTE2XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE5MTYpCgorIE1pbm9yIGNvZGUgY2xlYW51cHMsIGRvY3VtZW50YXRpb24gZml4ZXMgYW5kIGNsYXJpZmljYXRpb25zLgoKCiMjIDYuMy4wIC0gMjAxNy0wNi0yMgoKKiBGZWF0dXJlOiBmb3JjZSBJUCByZXNvbHV0aW9uIChpcHY0IG9yIGlwdjYpIFsjMTYwOF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjA4KSwgWyMxNjU5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2NTkpCiogSW1wcm92ZW1lbnQ6IERvbid0IGluY2x1ZGUgc3VtbWFyeSBpbiBleGNlcHRpb24gbWVzc2FnZSB3aGVuIGJvZHkgaXMgZW1wdHkgWyMxNjIxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2MjEpCiogSW1wcm92ZW1lbnQ6IEhhbmRsZSBgb25faGVhZGVyc2Agb3B0aW9uIGluIE1vY2tIYW5kbGVyIFsjMTU4MF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNTgwKQoqIEltcHJvdmVtZW50OiBBZGRlZCBTVVNFIExpbnV4IENBIHBhdGggWyMxNjA5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTYwOSkKKiBJbXByb3ZlbWVudDogVXNlIGNsYXNzIHJlZmVyZW5jZSBmb3IgZ2V0dGluZyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgaW5zdGVhZCBvZiB1c2luZyBoYXJkY29kZWQgc3RyaW5ncyBbIzE2NDFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY0MSkKKiBGZWF0dXJlOiBBZGRlZCBgcmVhZF90aW1lb3V0YCBvcHRpb24gWyMxNjExXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2MTEpCiogQnVnIGZpeDogUEhQIDcueCBmaXhlcyBbIzE2ODVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY4NSksIFsjMTY4Nl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjg2KSwgWyMxODExXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE4MTEpCiogRGVwcmVjYXRpb246IEJhZFJlc3BvbnNlRXhjZXB0aW9uIGluc3RhbnRpYXRpb24gd2l0aG91dCBhIHJlc3BvbnNlIFsjMTY0Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjQyKQoqIEZlYXR1cmU6IEFkZGVkIE5UTE0gYXV0aCBbIzE1NjldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTU2OSkKKiBGZWF0dXJlOiBUcmFjayByZWRpcmVjdCBIVFRQIHN0YXR1cyBjb2RlcyBbIzE3MTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTcxMSkKKiBJbXByb3ZlbWVudDogQ2hlY2sgaGFuZGxlciB0eXBlIGR1cmluZyBjb25zdHJ1Y3Rpb24gWyMxNzQ1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE3NDUpCiogSW1wcm92ZW1lbnQ6IEFsd2F5cyBpbmNsdWRlIHRoZSBDb250ZW50LUxlbmd0aCBpZiB0aGVyZSdzIGEgYm9keSBbIzE3MjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTcyMSkKKiBGZWF0dXJlOiBBZGRlZCBjb252ZW5pZW5jZSBtZXRob2QgdG8gYWNjZXNzIGEgY29va2llIGJ5IG5hbWUgWyMxMzE4XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEzMTgpCiogQnVnIGZpeDogRmlsbCBgQ1VSTE9QVF9DQVBBVEhgIGFuZCBgQ1VSTE9QVF9DQUlORk9gIHByb3Blcmx5IFsjMTY4NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjg0KQoqIEltcHJvdmVtZW50OiAgCVVzZSBgXEd1enpsZUh0dHBcUHJvbWlzZVxyZWplY3Rpb25fZm9yYCBmdW5jdGlvbiBpbnN0ZWFkIG9mIG9iamVjdCBpbml0IFsjMTgyN10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xODI3KQoKCisgTWlub3IgY29kZSBjbGVhbnVwcywgZG9jdW1lbnRhdGlvbiBmaXhlcyBhbmQgY2xhcmlmaWNhdGlvbnMuCgojIyA2LjIuMyAtIDIwMTctMDItMjgKCiogRml4IGRlcHJlY2F0aW9ucyB3aXRoIGd1enpsZS9wc3I3IHZlcnNpb24gMS40CgojIyA2LjIuMiAtIDIwMTYtMTAtMDgKCiogQWxsb3cgdG8gcGFzcyBudWxsYWJsZSBSZXNwb25zZSB0byBkZWxheSBjYWxsYWJsZQoqIE9ubHkgYWRkIHNjaGVtZSB3aGVuIGhvc3QgaXMgcHJlc2VudAoqIEZpeCBkcmFpbiBjYXNlIHdoZXJlIGNvbnRlbnQtbGVuZ3RoIGlzIHRoZSBsaXRlcmFsIHN0cmluZyB6ZXJvCiogT2JmdXNjYXRlIGluLVVSTCBjcmVkZW50aWFscyBpbiBleGNlcHRpb25zCgojIyA2LjIuMSAtIDIwMTYtMDctMTgKCiogQWRkcmVzcyBIVFRQX1BST1hZIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIENWRS0yMDE2LTUzODU6CiAgaHR0cHM6Ly9odHRwb3h5Lm9yZy8KKiBGaXhpbmcgdGltZW91dCBidWcgd2l0aCBTdHJlYW1IYW5kbGVyOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQ4OAoqIE9ubHkgcmVhZCB1cCB0byBgQ29udGVudC1MZW5ndGhgIGluIFBIUCBTdHJlYW1IYW5kbGVyIHRvIGF2b2lkIHRpbWVvdXRzIHdoZW4KICBhIHNlcnZlciBkb2VzIG5vdCBob25vciBgQ29ubmVjdGlvbjogY2xvc2VgLgoqIElnbm9yZSBVUkkgZnJhZ21lbnQgd2hlbiBzZW5kaW5nIHJlcXVlc3RzLgoKIyMgNi4yLjAgLSAyMDE2LTAzLTIxCgoqIEZlYXR1cmU6IGFkZGVkIGBHdXp6bGVIdHRwXGpzb25fZW5jb2RlYCBhbmQgYEd1enpsZUh0dHBcanNvbl9kZWNvZGVgLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTM4OQoqIEJ1ZyBmaXg6IEZpeCBzbGVlcCBjYWxjdWxhdGlvbiB3aGVuIHdhaXRpbmcgZm9yIGRlbGF5ZWQgcmVxdWVzdHMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzI0CiogRmVhdHVyZTogTW9yZSBmbGV4aWJsZSBoaXN0b3J5IGNvbnRhaW5lcnMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzczCiogQnVnIGZpeDogZGVmZXIgc2luayBzdHJlYW0gb3BlbmluZyBpbiBTdHJlYW1IYW5kbGVyLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTM3NwoqIEJ1ZyBmaXg6IGRvIG5vdCBhdHRlbXB0IHRvIGVzY2FwZSBjb29raWUgdmFsdWVzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQwNgoqIEZlYXR1cmU6IHJlcG9ydCBvcmlnaW5hbCBjb250ZW50IGVuY29kaW5nIGFuZCBsZW5ndGggb24gZGVjb2RlZCByZXNwb25zZXMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNDA5CiogQnVnIGZpeDogcmV3aW5kIHNlZWthYmxlIHJlcXVlc3QgYm9kaWVzIGJlZm9yZSBkaXNwYXRjaGluZyB0byBjVVJMLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQyMgoqIEJ1ZyBmaXg6IHByb3ZpZGUgYW4gZW1wdHkgc3RyaW5nIHRvIGBodHRwX2J1aWxkX3F1ZXJ5YCBmb3IgSEhWTSB3b3JrYXJvdW5kLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTM2NwoKIyMgNi4xLjEgLSAyMDE1LTExLTIyCgoqIEJ1ZyBmaXg6IFByb3h5Ojp3cmFwU3luYygpIG5vdyBjb3JyZWN0bHkgcHJveGllcyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2NvbW1pdC85MTFiY2JjOGI0MzRhZGNlNjRlMjIzYTZkMWQxNGU5YThmNjNlNGU0CiogRmVhdHVyZTogSGFuZGxlclN0YWNrIGlzIG5vdyBtb3JlIGdlbmVyaWMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvY29tbWl0L2YyMTAyOTQxMzMxY2RhNTQ0NzQ1ZWVkZDk3ZmM4ZmQ0NmUxZWUzM2UKKiBCdWcgZml4OiBzZXR0aW5nIHZlcmlmeSB0byBmYWxzZSBpbiB0aGUgU3RyZWFtSGFuZGxlciBub3cgZGlzYWJsZXMgcGVlcgogIHZlcmlmaWNhdGlvbi4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzEyNTYKKiBGZWF0dXJlOiBNaWRkbGV3YXJlIG5vdyB1c2VzIGFuIGV4Y2VwdGlvbiBmYWN0b3J5LCBpbmNsdWRpbmcgbW9yZSBlcnJvcgogIGNvbnRleHQuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTI4MgoqIEZlYXR1cmU6IGJldHRlciBzdXBwb3J0IGZvciBkaXNhYmxlZCBmdW5jdGlvbnMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjg3CiogQnVnIGZpeDogZml4ZWQgcmVncmVzc2lvbiB3aGVyZSBNb2NrSGFuZGxlciB3YXMgbm90IHVzaW5nIGBzaW5rYC4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyOTIKCiMjIDYuMS4wIC0gMjAxNS0wOS0wOAoKKiBGZWF0dXJlOiBBZGRlZCB0aGUgYG9uX3N0YXRzYCByZXF1ZXN0IG9wdGlvbiB0byBwcm92aWRlIGFjY2VzcyB0byB0cmFuc2ZlcgogIHN0YXRpc3RpY3MgZm9yIHJlcXVlc3RzLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMDIKKiBGZWF0dXJlOiBBZGRlZCB0aGUgYWJpbGl0eSB0byBwZXJzaXN0IHNlc3Npb24gY29va2llcyBpbiBDb29raWVKYXJzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE5NQoqIEZlYXR1cmU6IFNvbWUgY29tcGF0aWJpbGl0eSB1cGRhdGVzIGZvciBHb29nbGUgQVBQIEVuZ2luZQogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIxNgoqIEZlYXR1cmU6IEFkZGVkIHN1cHBvcnQgZm9yIE5PX1BST1hZIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBhIHByb3h5IGJhc2VkIG9uCiAgYSBzaW1wbGUgc2V0IG9mIHJ1bGVzLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExOTcKKiBGZWF0dXJlOiBDb29raWVzIGNhbiBub3cgY29udGFpbiBzcXVhcmUgYnJhY2tldHMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjM3CiogQnVnIGZpeDogTm93IGNvcnJlY3RseSBwYXJzaW5nIGA9YCBpbnNpZGUgb2YgcXVvdGVzIGluIENvb2tpZXMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjMyCiogQnVnIGZpeDogQ3Vzb3RtIGNVUkwgb3B0aW9ucyBub3cgY29ycmVjdGx5IG92ZXJyaWRlIGN1cmwgb3B0aW9ucyBvZiB0aGUKICBzYW1lIG5hbWUuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIyMQoqIEJ1ZyBmaXg6IENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgbm93IGFkZGVkIHdoZW4gdXNpbmcgYW4gZXhwbGljaXRseSBwcm92aWRlZAogIG11bHRpcGFydCBib2R5LiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMTgKKiBCdWcgZml4OiBOb3cgaWdub3JpbmcgU2V0LUNvb2tpZSBoZWFkZXJzIHRoYXQgaGF2ZSBubyBuYW1lLgoqIEJ1ZyBmaXg6IFJlYXNvbiBwaHJhc2UgaXMgbm8gbG9uZ2VyIGNhc3QgdG8gYW4gaW50IGluIHNvbWUgY2FzZXMgaW4gdGhlCiAgY1VSTCBoYW5kbGVyLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExODcKKiBCdWcgZml4OiBSZW1vdmUgdGhlIEF1dGhvcml6YXRpb24gaGVhZGVyIHdoZW4gcmVkaXJlY3RpbmcgaWYgdGhlIEhvc3QKICBoZWFkZXIgY2hhbmdlcy4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjA3CiogQnVnIGZpeDogQ29va2llIHBhdGggbWF0Y2hpbmcgZml4ZXMKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTEyOQoqIEJ1ZyBmaXg6IEZpeGluZyB0aGUgY1VSTCBgYm9keV9hc19zdHJpbmdgIHNldHRpbmcKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMDEKKiBCdWcgZml4OiBxdW90ZXMgYXJlIG5vIGxvbmdlciBzdHJpcHBlZCB3aGVuIHBhcnNpbmcgY29va2llcy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTE3MgoqIEJ1ZyBmaXg6IGBmb3JtX3BhcmFtc2AgYW5kIGBxdWVyeWAgbm93IGFsd2F5cyB1c2VzIHRoZSBgJmAgc2VwYXJhdG9yLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE2MwoqIEJ1ZyBmaXg6IEFkZGluZyBhIENvbnRlbnQtTGVuZ3RoIHRvIFBIUCBzdHJlYW0gd3JhcHBlciByZXF1ZXN0cyBpZiBub3Qgc2V0LgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE4OQoKIyMgNi4wLjIgLSAyMDE1LTA3LTA0CgoqIEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGN1cmwgaGFuZGxlcnMgaW4gd2hpY2ggcmVmZXJlbmNlcyB0byBjYWxsYmFja3MKICB3ZXJlIG5vdCBiZWluZyByZW1vdmVkIGJ5IGBjdXJsX3Jlc2V0YC4KKiBDb29raWVzIGFyZSBub3cgZXh0cmFjdGVkIHByb3Blcmx5IGJlZm9yZSByZWRpcmVjdHMuCiogQ29va2llcyBub3cgYWxsb3cgbW9yZSBjaGFyYWN0ZXIgcmFuZ2VzLgoqIERlY29kZWQgQ29udGVudC1FbmNvZGluZyByZXNwb25zZXMgYXJlIG5vdyBtb2RpZmllZCB0byBjb3JyZWN0bHkgcmVmbGVjdAogIHRoZWlyIHN0YXRlIGlmIHRoZSBlbmNvZGluZyB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkIGJ5IGEgaGFuZGxlci4gVGhpcwogIG1lYW5zIHRoYXQgdGhlIGBDb250ZW50LUVuY29kaW5nYCBoZWFkZXIgbWF5IGJlIHJlbW92ZWQgYW4gdGhlCiAgYENvbnRlbnQtTGVuZ3RoYCBtb2RpZmllZCB0byByZWZsZWN0IHRoZSBtZXNzYWdlIHNpemUgYWZ0ZXIgcmVtb3ZpbmcgdGhlCiAgZW5jb2RpbmcuCiogQWRkZWQgYSBtb3JlIGV4cGxpY2l0IGVycm9yIG1lc3NhZ2Ugd2hlbiB0cnlpbmcgdG8gdXNlIGBmb3JtX3BhcmFtc2AgYW5kCiAgYG11bHRpcGFydGAgaW4gdGhlIHNhbWUgcmVxdWVzdC4KKiBTZXZlcmFsIGZpeGVzIGZvciBISFZNIHN1cHBvcnQuCiogRnVuY3Rpb25zIGFyZSBub3cgY29uZGl0aW9uYWxseSByZXF1aXJlZCB1c2luZyBhbiBhZGRpdGlvbmFsIGxldmVsIG9mCiAgaW5kaXJlY3Rpb24gdG8gaGVscCB3aXRoIGdsb2JhbCBDb21wb3NlciBpbnN0YWxsYXRpb25zLgoKIyMgNi4wLjEgLSAyMDE1LTA1LTI3CgoqIEZpeGVkIGEgYnVnIHdpdGggc2VyaWFsaXppbmcgdGhlIGBxdWVyeWAgcmVxdWVzdCBvcHRpb24gd2hlcmUgdGhlIGAmYAogIHNlcGFyYXRvciB3YXMgbWlzc2luZy4KKiBBZGRlZCBhIGJldHRlciBlcnJvciBtZXNzYWdlIGZvciB3aGVuIGBib2R5YCBpcyBwcm92aWRlZCBhcyBhbiBhcnJheS4gUGxlYXNlCiAgdXNlIGBmb3JtX3BhcmFtc2Agb3IgYG11bHRpcGFydGAgaW5zdGVhZC4KKiBWYXJpb3VzIGRvYyBmaXhlcy4KCiMjIDYuMC4wIC0gMjAxNS0wNS0yNgoKKiBTZWUgdGhlIFVQR1JBRElORy5tZCBkb2N1bWVudCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKiBBZGRlZCBgbXVsdGlwYXJ0YCBhbmQgYGZvcm1fcGFyYW1zYCByZXF1ZXN0IG9wdGlvbnMuCiogQWRkZWQgYHN5bmNocm9ub3VzYCByZXF1ZXN0IG9wdGlvbi4KKiBBZGRlZCB0aGUgYG9uX2hlYWRlcnNgIHJlcXVlc3Qgb3B0aW9uLgoqIEZpeGVkIGBleHBlY3RgIGhhbmRsaW5nLgoqIE5vIGxvbmdlciBhZGRpbmcgZGVmYXVsdCBtaWRkbGV3YXJlcyBpbiB0aGUgY2xpZW50IGN0b3IuIFRoZXNlIG5lZWQgdG8gYmUKICBwcmVzZW50IG9uIHRoZSBwcm92aWRlZCBoYW5kbGVyIGluIG9yZGVyIHRvIHdvcmsuCiogUmVxdWVzdHMgYXJlIG5vIGxvbmdlciBpbml0aWF0ZWQgd2hlbiBzZW5kaW5nIGFzeW5jIHJlcXVlc3RzIHdpdGggdGhlCiAgQ3VybE11bHRpSGFuZGxlci4gVGhpcyBwcmV2ZW50cyB1bmV4cGVjdGVkIHJlY3Vyc2lvbiBmcm9tIHJlcXVlc3RzIGNvbXBsZXRpbmcKICB3aGlsZSB0aWNraW5nIHRoZSBjVVJMIGxvb3AuCiogUmVtb3ZlZCB0aGUgc2VtYW50aWNzIG9mIHNldHRpbmcgYGRlZmF1bHRgIHRvIGB0cnVlYC4gVGhpcyBpcyBubyBsb25nZXIKICByZXF1aXJlZCBub3cgdGhhdCB0aGUgY1VSTCBsb29wIGlzIG5vdCB0aWNrZWQgZm9yIGFzeW5jIHJlcXVlc3RzLgoqIEFkZGVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2dpbmcgbWlkZGxld2FyZS4KKiBObyBsb25nZXIgYWxsb3dpbmcgc2VsZiBzaWduZWQgY2VydGlmaWNhdGVzIHdoZW4gdXNpbmcgdGhlIFN0cmVhbUhhbmRsZXIuCiogRW5zdXJpbmcgdGhhdCBgc2lua2AgaXMgdmFsaWQgaWYgc2F2aW5nIHRvIGEgZmlsZS4KKiBSZXF1ZXN0IGV4Y2VwdGlvbnMgbm93IGluY2x1ZGUgYSAiaGFuZGxlciBjb250ZXh0IiB3aGljaCBwcm92aWRlcyBoYW5kbGVyCiAgc3BlY2lmaWMgY29udGV4dHVhbCBpbmZvcm1hdGlvbi4KKiBBZGRlZCBgR3V6emxlSHR0cFxSZXF1ZXN0T3B0aW9uc2AgdG8gYWxsb3cgcmVxdWVzdCBvcHRpb25zIHRvIGJlIGFwcGxpZWQKICB1c2luZyBjb25zdGFudHMuCiogYCRtYXhIYW5kbGVzYCBoYXMgYmVlbiByZW1vdmVkIGZyb20gQ3VybE11bHRpSGFuZGxlci4KKiBgTXVsdGlwYXJ0UG9zdEJvZHlgIGlzIG5vdyBwYXJ0IG9mIHRoZSBgZ3V6emxlaHR0cC9wc3I3YCBwYWNrYWdlLgoKIyMgNS4zLjAgLSAyMDE1LTA1LTE5CgoqIE1vY2sgbm93IHN1cHBvcnRzIGBzYXZlX3RvYAoqIE1hcmtlZCBgQWJzdHJhY3RSZXF1ZXN0RXZlbnQ6OmdldFRyYW5zYWN0aW9uKClgIGFzIHB1YmxpYy4KKiBGaXhlZCBhIGJ1ZyBpbiB3aGljaCBtdWx0aXBsZSBoZWFkZXJzIHVzaW5nIGRpZmZlcmVudCBjYXNpbmcgd291bGQgb3ZlcndyaXRlCiAgcHJldmlvdXMgaGVhZGVycyBpbiB0aGUgYXNzb2NpYXRpdmUgYXJyYXkuCiogQWRkZWQgYFV0aWxzOjpnZXREZWZhdWx0SGFuZGxlcigpYAoqIE1hcmtlZCBgR3V6emxlSHR0cFxDbGllbnQ6OmdldERlZmF1bHRVc2VyQWdlbnRgIGFzIGRlcHJlY2F0ZWQuCiogVVJMIHNjaGVtZSBpcyBub3cgYWx3YXlzIGxvd2VyY2FzZWQuCgojIyA2LjAuMC1iZXRhLjEKCiogUmVxdWlyZXMgUEhQID49IDUuNQoqIFVwZGF0ZWQgdG8gdXNlIFBTUi03CiAgKiBSZXF1aXJlcyBpbW11dGFibGUgbWVzc2FnZXMsIHdoaWNoIGJhc2ljYWxseSBtZWFucyBhbiBldmVudCBiYXNlZCBzeXN0ZW0KICAgIG93bmVkIGJ5IGEgcmVxdWVzdCBpbnN0YW5jZSBpcyBubyBsb25nZXIgcG9zc2libGUuCiAgKiBVdGlsaXppbmcgdGhlIFtHdXp6bGUgUFNSLTcgcGFja2FnZV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3KS4KICAqIFJlbW92ZWQgdGhlIGRlcGVuZGVuY3kgb24gYGd1enpsZWh0dHAvc3RyZWFtc2AuIFRoZXNlIHN0cmVhbSBhYnN0cmFjdGlvbnMKICAgIGFyZSBhdmFpbGFibGUgaW4gdGhlIGBndXp6bGVodHRwL3BzcjdgIHBhY2thZ2UgdW5kZXIgdGhlIGBHdXp6bGVIdHRwXFBzcjdgCiAgICBuYW1lc3BhY2UuCiogQWRkZWQgbWlkZGxld2FyZSBhbmQgaGFuZGxlciBzeXN0ZW0KICAqIFJlcGxhY2VkIHRoZSBHdXp6bGUgZXZlbnQgYW5kIHN1YnNjcmliZXIgc3lzdGVtIHdpdGggYSBtaWRkbGV3YXJlIHN5c3RlbS4KICAqIE5vIGxvbmdlciBkZXBlbmRzIG9uIFJpbmdQSFAsIGJ1dCByYXRoZXIgcGxhY2VzIHRoZSBIVFRQIGhhbmRsZXJzIGRpcmVjdGx5CiAgICBpbiBHdXp6bGUsIG9wZXJhdGluZyBvbiBQU1ItNyBtZXNzYWdlcy4KICAqIFJldHJ5IGxvZ2ljIGlzIG5vdyBlbmNhcHN1bGF0ZWQgaW4gYEd1enpsZUh0dHBcTWlkZGxld2FyZTo6cmV0cnlgLCB3aGljaAogICAgbWVhbnMgdGhlIGBndXp6bGVodHRwL3JldHJ5LXN1YnNjcmliZXJgIGlzIG5vdyBvYnNvbGV0ZS4KICAqIE1vY2tpbmcgcmVzcG9uc2VzIGlzIG5vdyBoYW5kbGVkIHVzaW5nIGBHdXp6bGVIdHRwXEhhbmRsZXJcTW9ja0hhbmRsZXJgLgoqIEFzeW5jaHJvbm91cyByZXNwb25zZXMKICAqIE5vIGxvbmdlciBzdXBwb3J0cyB0aGUgYGZ1dHVyZWAgcmVxdWVzdCBvcHRpb24gdG8gc2VuZCBhbiBhc3luYyByZXF1ZXN0LgogICAgSW5zdGVhZCwgdXNlIG9uZSBvZiB0aGUgYCpBc3luY2AgbWV0aG9kcyBvZiBhIGNsaWVudCAoZS5nLiwgYHJlcXVlc3RBc3luY2AsCiAgICBgZ2V0QXN5bmNgLCBldGMuKS4KICAqIFV0aWxpemluZyBgR3V6emxlSHR0cFxQcm9taXNlYCBpbnN0ZWFkIG9mIFJlYWN0J3MgcHJvbWlzZSBsaWJyYXJ5IHRvIGF2b2lkCiAgICByZWN1cnNpb24gcmVxdWlyZWQgYnkgY2hhaW5pbmcgYW5kIGZvcndhcmRpbmcgcmVhY3QgcHJvbWlzZXMuIFNlZQogICAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcwogICogQWRkZWQgYHJlcXVlc3RBc3luY2AgYW5kIGBzZW5kQXN5bmNgIHRvIHNlbmQgcmVxdWVzdCBhc3luY2hyb25vdXNseS4KICAqIEFkZGVkIG1hZ2ljIG1ldGhvZHMgZm9yIGBnZXRBc3luYygpYCwgYHBvc3RBc3luYygpYCwgZXRjLiB0byBzZW5kIHJlcXVlc3RzCiAgICBhc3luY2hyb25vdXNseS4KKiBSZXF1ZXN0IG9wdGlvbnMKICAqIFBPU1QgYW5kIGZvcm0gdXBkYXRlcwogICAgKiBBZGRlZCB0aGUgYGZvcm1fZmllbGRzYCBhbmQgYGZvcm1fZmlsZXNgIHJlcXVlc3Qgb3B0aW9ucy4KICAgICogUmVtb3ZlZCB0aGUgYEd1enpsZUh0dHBcUG9zdGAgbmFtZXNwYWNlLgogICAgKiBUaGUgYGJvZHlgIHJlcXVlc3Qgb3B0aW9uIG5vIGxvbmdlciBhY2NlcHRzIGFuIGFycmF5IGZvciBQT1NUIHJlcXVlc3RzLgogICogVGhlIGBleGNlcHRpb25zYCByZXF1ZXN0IG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZQogICAgYGh0dHBfZXJyb3JzYCByZXF1ZXN0IG9wdGlvbnMuCiAgKiBUaGUgYHNhdmVfdG9gIHJlcXVlc3Qgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYHNpbmtgIHJlcXVlc3QKICAgIG9wdGlvbi4KKiBDbGllbnRzIG5vIGxvbmdlciBhY2NlcHQgYW4gYXJyYXkgb2YgVVJJIHRlbXBsYXRlIHN0cmluZyBhbmQgdmFyaWFibGVzIGZvcgogIFVSSSB2YXJpYWJsZXMuIFlvdSB3aWxsIG5lZWQgdG8gZXhwYW5kIFVSSSB0ZW1wbGF0ZXMgYmVmb3JlIHBhc3NpbmcgdGhlbQogIGludG8gYSBjbGllbnQgY29uc3RydWN0b3Igb3IgcmVxdWVzdCBtZXRob2QuCiogQ2xpZW50IG1ldGhvZHMgYGdldCgpYCwgYHBvc3QoKWAsIGBwdXQoKWAsIGBwYXRjaCgpYCwgYG9wdGlvbnMoKWAsIGV0Yy4gYXJlCiAgbm93IG1hZ2ljIG1ldGhvZHMgdGhhdCB3aWxsIHNlbmQgc3luY2hyb25vdXMgcmVxdWVzdHMuCiogUmVwbGFjZWQgYFV0aWxzLnBocGAgd2l0aCBwbGFpbiBmdW5jdGlvbnMgaW4gYGZ1bmN0aW9ucy5waHBgLgoqIFJlbW92ZWQgYEd1enpsZUh0dHBcQ29sbGVjdGlvbmAuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxCYXRjaFJlc3VsdHNgLiBCYXRjaGVkIHBvb2wgcmVzdWx0cyBhcmUgbm93IHJldHVybmVkIGFzCiAgYW4gYXJyYXkuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxRdWVyeWAuIFF1ZXJ5IHN0cmluZyBoYW5kbGluZyBpcyBub3cgaGFuZGxlZCB1c2luZyBhbgogIGFzc29jaWF0aXZlIGFycmF5IHBhc3NlZCBpbnRvIHRoZSBgcXVlcnlgIHJlcXVlc3Qgb3B0aW9uLiBUaGUgcXVlcnkgc3RyaW5nCiAgaXMgc2VyaWFsaXplZCB1c2luZyBQSFAncyBgaHR0cF9idWlsZF9xdWVyeWAuIElmIHlvdSBuZWVkIG1vcmUgY29udHJvbCwgeW91CiAgY2FuIHBhc3MgdGhlIHF1ZXJ5IHN0cmluZyBpbiBhcyBhIHN0cmluZy4KKiBgR3V6emxlSHR0cFxRdWVyeVBhcnNlcmAgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCB0aGUKICBgR3V6emxlSHR0cFxQc3I3XHBhcnNlX3F1ZXJ5YC4KCiMjIDUuMi4wIC0gMjAxNS0wMS0yNwoKKiBBZGRlZCBgQXBwbGllc0hlYWRlcnNJbnRlcmZhY2VgIHRvIG1ha2UgYXBwbHlpbmcgaGVhZGVycyB0byBhIHJlcXVlc3QgYmFzZWQKICBvbiB0aGUgYm9keSBtb3JlIGdlbmVyaWMgYW5kIG5vdCBzcGVjaWZpYyB0byBgUG9zdEJvZHlJbnRlcmZhY2VgLgoqIFJlZHVjZWQgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgbmVlZGVkIHRvIHNlbmQgcmVxdWVzdHMuCiogTmVzdGVkIGZ1dHVyZXMgYXJlIG5vdyByZXNvbHZlZCBpbiB0aGUgY2xpZW50IHJhdGhlciB0aGFuIHRoZSBSZXF1ZXN0RnNtCiogRmluaXNoaW5nIHN0YXRlIHRyYW5zaXRpb25zIGlzIG5vdyBoYW5kbGVkIGluIHRoZSBSZXF1ZXN0RnNtIHJhdGhlciB0aGFuIHRoZQogIFJpbmdCcmlkZ2UuCiogQWRkZWQgYSBndWFyZCBpbiB0aGUgUG9vbCBjbGFzcyB0byBub3QgdXNlIHJlY3Vyc2lvbiBmb3IgcmVxdWVzdCByZXRyaWVzLgoKIyMgNS4xLjAgLSAyMDE0LTEyLTE5CgoqIFBvb2wgY2xhc3Mgbm8gbG9uZ2VyIHVzZXMgcmVjdXJzaW9uIHdoZW4gYSByZXF1ZXN0IGlzIGludGVyY2VwdGVkLgoqIFRoZSBzaXplIG9mIGEgUG9vbCBjYW4gbm93IGJlIGR5bmFtaWNhbGx5IGFkanVzdGVkIHVzaW5nIGEgY2FsbGJhY2suCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvOTQzLgoqIFNldHRpbmcgYSByZXF1ZXN0IG9wdGlvbiB0byBgbnVsbGAgd2hlbiBjcmVhdGluZyBhIHJlcXVlc3Qgd2l0aCBhIGNsaWVudCB3aWxsCiAgZW5zdXJlIHRoYXQgdGhlIG9wdGlvbiBpcyBub3Qgc2V0LiBUaGlzIGFsbG93cyB5b3UgdG8gb3ZlcndyaXRlIGRlZmF1bHQKICByZXF1ZXN0IG9wdGlvbnMgb24gYSBwZXItcmVxdWVzdCBiYXNpcy4KICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC85MzcuCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gbGltaXQgd2hpY2ggcHJvdG9jb2xzIGFyZSBhbGxvd2VkIGZvciByZWRpcmVjdHMgYnkKICBzcGVjaWZ5aW5nIGEgYHByb3RvY29sc2AgYXJyYXkgaW4gdGhlIGBhbGxvd19yZWRpcmVjdHNgIHJlcXVlc3Qgb3B0aW9uLgoqIE5lc3RlZCBmdXR1cmVzIGR1ZSB0byByZXRyaWVzIGFyZSBub3cgcmVzb2x2ZWQgd2hlbiB3YWl0aW5nIGZvciBzeW5jaHJvbm91cwogIHJlc3BvbnNlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvOTQ3LgoqIGAiMCJgIGlzIG5vdyBhbiBhbGxvd2VkIFVSSSBwYXRoLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzkzNS4KKiBgUXVlcnlgIG5vIGxvbmdlciB0eXBlaGludHMgb24gdGhlIGAkcXVlcnlgIGFyZ3VtZW50IGluIHRoZSBjb25zdHJ1Y3RvciwKICBhbGxvd2luZyBmb3Igc3RyaW5ncyBhbmQgYXJyYXlzLgoqIEV4Y2VwdGlvbnMgdGhyb3duIGluIHRoZSBgZW5kYCBldmVudCBhcmUgbm93IGNvcnJlY3RseSB3cmFwcGVkIHdpdGggR3V6emxlCiAgc3BlY2lmaWMgZXhjZXB0aW9ucyBpZiBuZWNlc3NhcnkuCgojIyA1LjAuMyAtIDIwMTQtMTEtMDMKClRoaXMgY2hhbmdlIHVwZGF0ZXMgcXVlcnkgc3RyaW5ncyBzbyB0aGF0IHRoZXkgYXJlIHRyZWF0ZWQgYXMgdW4tZW5jb2RlZCB2YWx1ZXMKYnkgZGVmYXVsdCB3aGVyZSB0aGUgdmFsdWUgcmVwcmVzZW50cyBhbiB1bi1lbmNvZGVkIHZhbHVlIHRvIHNlbmQgb3ZlciB0aGUKd2lyZS4gQSBRdWVyeSBvYmplY3QgdGhlbiBlbmNvZGVzIHRoZSB2YWx1ZSBiZWZvcmUgc2VuZGluZyBvdmVyIHRoZSB3aXJlLiBUaGlzCm1lYW5zIHRoYXQgZXZlbiB2YWx1ZSBxdWVyeSBzdHJpbmcgdmFsdWVzIChlLmcuLCAiOiIpIGFyZSB1cmwgZW5jb2RlZC4gVGhpcwptYWtlcyB0aGUgUXVlcnkgY2xhc3MgbWF0Y2ggUEhQJ3MgaHR0cF9idWlsZF9xdWVyeSBmdW5jdGlvbi4gSG93ZXZlciwgaWYgeW91CndhbnQgdG8gc2VuZCByZXF1ZXN0cyBvdmVyIHRoZSB3aXJlIHVzaW5nIHZhbGlkIHF1ZXJ5IHN0cmluZyBjaGFyYWN0ZXJzIHRoYXQgZG8Kbm90IG5lZWQgdG8gYmUgZW5jb2RlZCwgdGhlbiB5b3UgY2FuIHByb3ZpZGUgYSBzdHJpbmcgdG8gVXJsOjpzZXRRdWVyeSgpIGFuZApwYXNzIHRydWUgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzcGVjaWZ5IHRoYXQgdGhlIHF1ZXJ5IHN0cmluZyBpcyBhIHJhdwpzdHJpbmcgdGhhdCBzaG91bGQgbm90IGJlIHBhcnNlZCBvciBlbmNvZGVkICh1bmxlc3MgYSBjYWxsIHRvIGdldFF1ZXJ5KCkgaXMKc3Vic2VxdWVudGx5IG1hZGUsIGZvcmNpbmcgdGhlIHF1ZXJ5LXN0cmluZyB0byBiZSBjb252ZXJ0ZWQgaW50byBhIFF1ZXJ5Cm9iamVjdCkuCgojIyA1LjAuMiAtIDIwMTQtMTAtMzAKCiogQWRkZWQgYSB0cmFpbGluZyBgXHJcbmAgdG8gbXVsdGlwYXJ0L2Zvcm0tZGF0YSBwYXlsb2Fkcy4gU2VlCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC84NzEKKiBBZGRlZCBhIGBHdXp6bGVIdHRwXFBvb2w6OnNlbmQoKWAgY29udmVuaWVuY2UgbWV0aG9kIHRvIG1hdGNoIHRoZSBkb2NzLgoqIFN0YXR1cyBjb2RlcyBhcmUgbm93IHJldHVybmVkIGFzIGludGVnZXJzLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODgxCiogTm8gbG9uZ2VyIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGhlYWRlcgogIHdoZW4gc2VuZGluZyBQT1NUIHJlcXVlc3RzLCBhbGxvd2luZyBmb3IgY3VzdG9taXplZCBoZWFkZXJzLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODc3CiogSW1wcm92ZWQgcGF0aCBVUkwgc2VyaWFsaXphdGlvbi4KCiAgKiBObyBsb25nZXIgZG91YmxlIHBlcmNlbnQtZW5jb2RpbmcgY2hhcmFjdGVycyBpbiB0aGUgcGF0aCBvciBxdWVyeSBzdHJpbmcgaWYKICAgIHRoZXkgYXJlIGFscmVhZHkgZW5jb2RlZC4KICAqIE5vdyBwcm9wZXJseSBlbmNvZGluZyB0aGUgc3VwcGxpZWQgcGF0aCB0byBhIFVSTCBvYmplY3QsIGluc3RlYWQgb2Ygb25seQogICAgZW5jb2RpbmcgJyAnIGFuZCAnPycuCiAgKiBOb3RlOiBUaGlzIGhhcyBiZWVuIGNoYW5nZWQgaW4gNS4wLjMgdG8gbm93IGVuY29kZSBxdWVyeSBzdHJpbmcgdmFsdWVzIGJ5CiAgICBkZWZhdWx0IHVubGVzcyB0aGUgYHJhd1N0cmluZ2AgYXJndW1lbnQgaXMgcHJvdmlkZWQgd2hlbiBzZXR0aW5nIHRoZSBxdWVyeQogICAgc3RyaW5nIG9uIGEgVVJMOiBOb3cgYWxsb3dpbmcgbWFueSBtb3JlIGNoYXJhY3RlcnMgdG8gYmUgcHJlc2VudCBpbiB0aGUKICAgIHF1ZXJ5IHN0cmluZyB3aXRob3V0IGJlaW5nIHBlcmNlbnQgZW5jb2RlZC4gU2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjYXBwZW5kaXgtQQoKIyMgNS4wLjEgLSAyMDE0LTEwLTE2CgpCdWdmaXggcmVsZWFzZS4KCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgY29ubmVjdGlvbiBlcnJvcnMgc3RpbGwgcmV0dXJuZWQgcmVzcG9uc2Ugb2JqZWN0IGluCiAgZXJyb3IgYW5kIGVuZCBldmVudHMgZXZlbnQgdGhvdWdoIHRoZSByZXNwb25zZSBpcyB1bnVzYWJsZS4gVGhpcyBoYXMgYmVlbgogIGNvcnJlY3RlZCBzbyB0aGF0IGEgcmVzcG9uc2UgaXMgbm90IHJldHVybmVkIGluIHRoZSBgZ2V0UmVzcG9uc2VgIG1ldGhvZCBvZgogIHRoZXNlIGV2ZW50cyBpZiB0aGUgcmVzcG9uc2UgZGlkIG5vdCBjb21wbGV0ZS4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzg2NwoqIEZpeGVkIGFuIGlzc3VlIHdoZXJlIHRyYW5zZmVyIHN0YXRpc3RpY3Mgd2VyZSBub3QgYmVpbmcgcG9wdWxhdGVkIGluIHRoZQogIFJpbmdCcmlkZ2UuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy84NjYKCiMjIDUuMC4wIC0gMjAxNC0xMC0xMgoKQWRkaW5nIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyByZXNwb25zZXMgYW5kIHNvbWUgbWlub3IgQVBJIGNsZWFudXAuCgojIyMgTmV3IEZlYXR1cmVzCgoqIEFkZGVkIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyByZXNwb25zZXMgYmFzZWQgb24gYGd1enpsZWh0dHAvZ3V6emxlLXJpbmdgLgoqIEFkZGVkIGEgcHVibGljIEFQSSBmb3IgY3JlYXRpbmcgYSBkZWZhdWx0IEhUVFAgYWRhcHRlci4KKiBVcGRhdGVkIHRoZSByZWRpcmVjdCBwbHVnaW4gdG8gYmUgbm9uLWJsb2NraW5nIHNvIHRoYXQgcmVkaXJlY3RzIGFyZSBzZW50CiAgY29uY3VycmVudGx5LiBPdGhlciBwbHVnaW5zIGxpa2UgdGhpcyBjYW4gbm93IGJlIHVwZGF0ZWQgdG8gYmUgbm9uLWJsb2NraW5nLgoqIEFkZGVkIGEgInByb2dyZXNzIiBldmVudCBzbyB0aGF0IHlvdSBjYW4gZ2V0IHVwbG9hZCBhbmQgZG93bmxvYWQgcHJvZ3Jlc3MKICBldmVudHMuCiogQWRkZWQgYEd1enpsZUh0dHBcUG9vbGAgd2hpY2ggaW1wbGVtZW50cyBGdXR1cmVJbnRlcmZhY2UgYW5kIHRyYW5zZmVycwogIHJlcXVlc3RzIGNvbmN1cnJlbnRseSB1c2luZyBhIGNhcHBlZCBwb29sIHNpemUgYXMgZWZmaWNpZW50bHkgYXMgcG9zc2libGUuCiogQWRkZWQgYGhhc0xpc3RlbmVycygpYCB0byBFbWl0dGVySW50ZXJmYWNlLgoqIFJlbW92ZWQgYEd1enpsZUh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZW5kQWxsYCBhbmQgbWFya2VkCiAgYEd1enpsZUh0dHBcQ2xpZW50OjpzZW5kQWxsYCBhcyBkZXByZWNhdGVkIChpdCdzIHN0aWxsIHRoZXJlLCBqdXN0IG5vdCB0aGUKICByZWNvbW1lbmRlZCB3YXkpLgoKIyMjIEJyZWFraW5nIGNoYW5nZXMKClRoZSBicmVha2luZyBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSBhcmUgcmVsYXRpdmVseSBtaW5vci4gVGhlIGJpZ2dlc3QgdGhpbmcgdG8KbG9vayBvdXQgZm9yIGlzIHRoYXQgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyBubyBsb25nZXIgaW1wbGVtZW50IGZsdWVudAppbnRlcmZhY2VzLgoKKiBSZW1vdmVkIHRoZSBmbHVlbnQgaW50ZXJmYWNlcyAoaS5lLiwgYHJldHVybiAkdGhpc2ApIGZyb20gcmVxdWVzdHMsCiAgcmVzcG9uc2VzLCBgR3V6emxlSHR0cFxDb2xsZWN0aW9uYCwgYEd1enpsZUh0dHBcVXJsYCwKICBgR3V6emxlSHR0cFxRdWVyeWAsIGBHdXp6bGVIdHRwXFBvc3RcUG9zdEJvZHlgLCBhbmQKICBgR3V6emxlSHR0cFxDb29raWVcU2V0Q29va2llYC4gVGhpcyBibG9nIHBvc3QgcHJvdmlkZXMgYSBnb29kIG91dGxpbmUgb2YKICB3aHkgSSBkaWQgdGhpczogaHR0cDovL29jcmFtaXVzLmdpdGh1Yi5pby9ibG9nL2ZsdWVudC1pbnRlcmZhY2VzLWFyZS1ldmlsLy4KICBUaGlzIGFsc28gbWFrZXMgdGhlIEd1enpsZSBtZXNzYWdlIGludGVyZmFjZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50CiAgUFNSLTcgbWVzc2FnZSBwcm9wb3NhbC4KKiBSZW1vdmVkICJmdW5jdGlvbnMucGhwIiwgc28gdGhhdCBHdXp6bGUgaXMgdHJ1bHkgUFNSLTQgY29tcGxpYW50LiBFeGNlcHQKICBmb3IgdGhlIEhUVFAgcmVxdWVzdCBmdW5jdGlvbnMgZnJvbSBmdW5jdGlvbi5waHAsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93CiAgaW1wbGVtZW50ZWQgaW4gYEd1enpsZUh0dHBcVXRpbHNgIHVzaW5nIGNhbWVsQ2FzZS4gYEd1enpsZUh0dHBcanNvbl9kZWNvZGVgCiAgbW92ZWQgdG8gYEd1enpsZUh0dHBcVXRpbHM6Ompzb25EZWNvZGVgLiBgR3V6emxlSHR0cFxnZXRfcGF0aGAgbW92ZWQgdG8KICBgR3V6emxlSHR0cFxVdGlsczo6Z2V0UGF0aGAuIGBHdXp6bGVIdHRwXHNldF9wYXRoYCBtb3ZlZCB0bwogIGBHdXp6bGVIdHRwXFV0aWxzOjpzZXRQYXRoYC4gYEd1enpsZUh0dHBcYmF0Y2hgIHNob3VsZCBub3cgYmUKICBgR3V6emxlSHR0cFxQb29sOjpiYXRjaGAsIHdoaWNoIHJldHVybnMgYW4gYG9iamVjdFN0b3JhZ2VgLiBVc2luZyBmdW5jdGlvbnMucGhwCiAgY2F1c2VkIHByb2JsZW1zIGZvciBtYW55IHVzZXJzOiB0aGV5IGFyZW4ndCBQU1ItNCBjb21wbGlhbnQsIHJlcXVpcmUgYW4KICBleHBsaWNpdCBpbmNsdWRlLCBhbmQgbmVlZGVkIGFuIGlmLWd1YXJkIHRvIGVuc3VyZSB0aGF0IHRoZSBmdW5jdGlvbnMgYXJlIG5vdAogIGRlY2xhcmVkIG11bHRpcGxlIHRpbWVzLgoqIFJld3JvdGUgYWRhcHRlciBsYXllci4KICAgICogUmVtb3ZpbmcgYWxsIGNsYXNzZXMgZnJvbSBgR3V6emxlSHR0cFxBZGFwdGVyYCwgdGhlc2UgYXJlIG5vdwogICAgICBpbXBsZW1lbnRlZCBhcyBjYWxsYWJsZXMgdGhhdCBhcmUgc3RvcmVkIGluIGBHdXp6bGVIdHRwXFJpbmdcQ2xpZW50YC4KICAgICogUmVtb3ZlZCB0aGUgY29uY2VwdCBvZiAicGFyYWxsZWwgYWRhcHRlcnMiLiBTZW5kaW5nIHJlcXVlc3RzIHNlcmlhbGx5IG9yCiAgICAgIGNvbmN1cnJlbnRseSBpcyBub3cgaGFuZGxlZCB1c2luZyBhIHNpbmdsZSBhZGFwdGVyLgogICAgKiBNb3ZlZCBgR3V6emxlSHR0cFxBZGFwdGVyXFRyYW5zYWN0aW9uYCB0byBgR3V6emxlSHR0cFxUcmFuc2FjdGlvbmAuIFRoZQogICAgICBUcmFuc2FjdGlvbiBvYmplY3Qgbm93IGV4cG9zZXMgdGhlIHJlcXVlc3QsIHJlc3BvbnNlLCBhbmQgY2xpZW50IGFzIHB1YmxpYwogICAgICBwcm9wZXJ0aWVzLiBUaGUgZ2V0dGVycyBhbmQgc2V0dGVycyBoYXZlIGJlZW4gcmVtb3ZlZC4KKiBSZW1vdmVkIHRoZSAiaGVhZGVycyIgZXZlbnQuIFRoaXMgZXZlbnQgd2FzIG9ubHkgdXNlZnVsIGZvciBjaGFuZ2luZyB0aGUKICBib2R5IGEgcmVzcG9uc2Ugb25jZSB0aGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2Ugd2VyZSBrbm93bi4gWW91IGNhbiBpbXBsZW1lbnQKICBhIHNpbWlsYXIgYmVoYXZpb3IgaW4gYSBudW1iZXIgb2Ygd2F5cy4gT25lIGV4YW1wbGUgbWlnaHQgYmUgdG8gdXNlIGEKICBGblN0cmVhbSB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIHNlbnQuIEZvciBleGFtcGxlLCB3aGVuIHRoZQogIGZpcnN0IGJ5dGUgaXMgd3JpdHRlbiwgeW91IGNvdWxkIGNoZWNrIGlmIHRoZSByZXNwb25zZSBoZWFkZXJzIG1hdGNoIHlvdXIKICBleHBlY3RhdGlvbnMsIGFuZCBpZiBzbywgY2hhbmdlIHRoZSBhY3R1YWwgc3RyZWFtIGJvZHkgdGhhdCBpcyBiZWluZwogIHdyaXR0ZW4gdG8uCiogUmVtb3ZlZCB0aGUgYGFzQXJyYXlgIHBhcmFtZXRlciBmcm9tCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXJgLiBJZiB5b3Ugd2FudCB0byBnZXQgYSBoZWFkZXIKICB2YWx1ZSBhcyBhbiBhcnJheSwgdGhlbiB1c2UgdGhlIG5ld2x5IGFkZGVkIGBnZXRIZWFkZXJBc0FycmF5KClgIG1ldGhvZCBvZgogIGBNZXNzYWdlSW50ZXJmYWNlYC4gVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIEd1enpsZSBpbnRlcmZhY2VzIGNvbXBhdGlibGUgd2l0aAogIHRoZSBQU1ItNyBpbnRlcmZhY2VzLgoqIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3RvcnlgIG5vIGxvbmdlciBhbGxvd3Mgc3ViY2xhc3NlcyB0byBhZGQKICBjdXN0b20gcmVxdWVzdCBvcHRpb25zIHVzaW5nIGRvdWJsZS1kaXNwYXRjaCAodGhpcyB3YXMgYW4gaW1wbGVtZW50YXRpb24KICBkZXRhaWwpLiBJbnN0ZWFkLCB5b3Ugc2hvdWxkIG5vdyBwcm92aWRlIGFuIGFzc29jaWF0aXZlIGFycmF5IHRvIHRoZQogIGNvbnN0cnVjdG9yIHdoaWNoIGlzIGEgbWFwcGluZyBvZiB0aGUgcmVxdWVzdCBvcHRpb24gbmFtZSBtYXBwaW5nIHRvIGEKICBmdW5jdGlvbiB0aGF0IGFwcGxpZXMgdGhlIG9wdGlvbiB2YWx1ZSB0byBhIHJlcXVlc3QuCiogUmVtb3ZlZCB0aGUgY29uY2VwdCBvZiAidGhyb3dJbW1lZGlhdGVseSIgZnJvbSBleGNlcHRpb25zIGFuZCBlcnJvciBldmVudHMuCiAgVGhpcyBjb250cm9sIG1lY2hhbmlzbSB3YXMgdXNlZCB0byBzdG9wIGEgdHJhbnNmZXIgb2YgY29uY3VycmVudCByZXF1ZXN0cwogIGZyb20gY29tcGxldGluZy4gVGhpcyBjYW4gbm93IGJlIGhhbmRsZWQgYnkgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBvciBieQogIGNhbmNlbGxpbmcgYSBwb29sIG9mIHJlcXVlc3RzIG9yIGVhY2ggb3V0c3RhbmRpbmcgZnV0dXJlIHJlcXVlc3QgaW5kaXZpZHVhbGx5LgoqIFVwZGF0ZWQgdG8gIkd1enpsZUh0dHBcU3RyZWFtcyIgMy4wLgogICAgKiBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlOjpnZXRDb250ZW50cygpYCBubyBsb25nZXIgYWNjZXB0cyBhCiAgICAgIGBtYXhMZW5gIHBhcmFtZXRlci4gVGhpcyB1cGRhdGUgbWFrZXMgdGhlIEd1enpsZSBzdHJlYW1zIHByb2plY3QKICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IFBTUi03IHByb3Bvc2FsLgogICAgKiBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtOjpfX2NvbnN0cnVjdGAsCiAgICAgIGBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW06OmZhY3RvcnlgLCBhbmQKICAgICAgYEd1enpsZUh0dHBcU3RyZWFtXFV0aWxzOjpjcmVhdGVgIG5vIGxvbmdlciBhY2NlcHQgYSBzaXplIGluIHRoZSBzZWNvbmQKICAgICAgYXJndW1lbnQuIFRoZXkgbm93IGFjY2VwdCBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zLCBpbmNsdWRpbmcgdGhlCiAgICAgICJzaXplIiBrZXkgYW5kICJtZXRhZGF0YSIga2V5IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgY3VzdG9tIG1ldGFkYXRhLgoKIyMgNC4yLjIgLSAyMDE0LTA5LTA4CgoqIEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIEN1cmxBZGFwdGVyIHdoZW4gcmV1c2luZyBjVVJMIGhhbmRsZXMuCiogTm8gbG9uZ2VyIHVzaW5nIGByZXF1ZXN0X2Z1bGx1cmlgIGluIHN0cmVhbSBhZGFwdGVyIHByb3hpZXMuCiogUmVsYXRpdmUgcmVkaXJlY3RzIGFyZSBub3cgYmFzZWQgb24gdGhlIGxhc3QgcmVzcG9uc2UsIG5vdCB0aGUgZmlyc3QgcmVzcG9uc2UuCgojIyA0LjIuMSAtIDIwMTQtMDgtMTkKCiogRW5zdXJpbmcgdGhhdCB0aGUgU3RyZWFtQWRhcHRlciBkb2VzIG5vdCBhbHdheXMgYWRkIGEgQ29udGVudC1UeXBlIGhlYWRlcgoqIEFkZGluZyBhdXRvbWF0ZWQgZ2l0aHViIHJlbGVhc2VzIHdpdGggYSBwaGFyIGFuZCB6aXAKCiMjIDQuMi4wIC0gMjAxNC0wOC0xNwoKKiBOb3cgbWVyZ2luZyBpbiBkZWZhdWx0IG9wdGlvbnMgdXNpbmcgYSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCiAgQ2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjcKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGRlY29kZSBgQ29udGVudC1FbmNvZGluZ2AgcmVzcG9uc2UgYm9kaWVzCiAgdXNpbmcgdGhlIGBkZWNvZGVfY29udGVudGAgcmVxdWVzdCBvcHRpb24uIFRoaXMgaXMgc2V0IHRvIGB0cnVlYCBieSBkZWZhdWx0CiAgdG8gZGVjb2RlIHRoZSByZXNwb25zZSBib2R5IGlmIGl0IGNvbWVzIG92ZXIgdGhlIHdpcmUgd2l0aCBhCiAgYENvbnRlbnQtRW5jb2RpbmdgLiBTZXQgdGhpcyB2YWx1ZSB0byBgZmFsc2VgIHRvIGRpc2FibGUgZGVjb2RpbmcgdGhlCiAgcmVzcG9uc2UgY29udGVudCwgYW5kIHBhc3MgYSBzdHJpbmcgdG8gcHJvdmlkZSBhIHJlcXVlc3QgYEFjY2VwdC1FbmNvZGluZ2AKICBoZWFkZXIgYW5kIHR1cm4gb24gYXV0b21hdGljIHJlc3BvbnNlIGRlY29kaW5nLiBUaGlzIGZlYXR1cmUgbm93IGFsbG93cyB5b3UKICB0byBwYXNzIGFuIGBBY2NlcHQtRW5jb2RpbmdgIGhlYWRlciBpbiB0aGUgaGVhZGVycyBvZiBhIHJlcXVlc3QgYnV0IHN0aWxsCiAgZGlzYWJsZSBhdXRvbWF0aWMgcmVzcG9uc2UgZGVjb2RpbmcuCiAgQ2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjQKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byB0aHJvdyBhbiBleGNlcHRpb24gaW1tZWRpYXRlbHkgd2hlbiB0cmFuc2ZlcnJpbmcKICByZXF1ZXN0cyBpbiBwYXJhbGxlbC4gQ2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjAKKiBVcGRhdGluZyBndXp6bGVodHRwL3N0cmVhbXMgZGVwZW5kZW5jeSB0byB+Mi4xCiogTm8gbG9uZ2VyIHV0aWxpemluZyB0aGUgbm93IGRlcHJlY2F0ZWQgbmFtZXNwYWNlZCBtZXRob2RzIGZyb20gdGhlIHN0cmVhbQogIHBhY2thZ2UuCgojIyA0LjEuOCAtIDIwMTQtMDgtMTQKCiogRml4ZWQgYW4gaXNzdWUgaW4gdGhlIEN1cmxGYWN0b3J5IHRoYXQgY2F1c2VkIHNldHRpbmcgdGhlIGBzdHJlYW09ZmFsc2VgCiAgcmVxdWVzdCBvcHRpb24gdG8gdGhyb3cgYW4gZXhjZXB0aW9uLgogIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzc2OQoqIFRyYW5zYWN0aW9uSXRlcmF0b3Igbm93IGNhbGxzIHJld2luZCBvbiB0aGUgaW5uZXIgaXRlcmF0b3IuCiAgU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzc2NQoqIFlvdSBjYW4gbm93IHNldCB0aGUgYENvbnRlbnQtVHlwZWAgaGVhZGVyIHRvIGBtdWx0aXBhcnQvZm9ybS1kYXRhYAogIHdoZW4gY3JlYXRpbmcgUE9TVCByZXF1ZXN0cyB0byBmb3JjZSBtdWx0aXBhcnQgYm9kaWVzLgogIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvNzY4CgojIyA0LjEuNyAtIDIwMTQtMDgtMDcKCiogRml4ZWQgYW4gZXJyb3IgaW4gdGhlIEhpc3RvcnlQbHVnaW4gdGhhdCBjYXVzZWQgdGhlIHNhbWUgcmVxdWVzdCBhbmQgcmVzcG9uc2UKICB0byBiZSBsb2dnZWQgbXVsdGlwbGUgdGltZXMgd2hlbiBhbiBIVFRQIHByb3RvY29sIGVycm9yIG9jY3Vycy4KKiBFbnN1cmluZyB0aGF0IGNVUkwgZG9lcyBub3QgYWRkIGEgZGVmYXVsdCBDb250ZW50LVR5cGUgd2hlbiBubyBDb250ZW50LVR5cGUKICBoYXMgYmVlbiBzdXBwbGllZCBieSB0aGUgdXNlci4gVGhpcyBwcmV2ZW50cyB0aGUgYWRhcHRlciBsYXllciBmcm9tIG1vZGlmeWluZwogIHRoZSByZXF1ZXN0IHRoYXQgaXMgc2VudCBvdmVyIHRoZSB3aXJlIGFmdGVyIGFueSBsaXN0ZW5lcnMgbWF5IGhhdmUgYWxyZWFkeQogIHB1dCB0aGUgcmVxdWVzdCBpbiBhIGRlc2lyZWQgc3RhdGUgKGUuZy4sIHNpZ25lZCB0aGUgcmVxdWVzdCkuCiogVGhyb3dpbmcgYW4gZXhjZXB0aW9uIHdoZW4geW91IGF0dGVtcHQgdG8gc2VuZCByZXF1ZXN0cyB0aGF0IGhhdmUgdGhlCiAgInN0cmVhbSIgc2V0IHRvIHRydWUgaW4gcGFyYWxsZWwgdXNpbmcgdGhlIE11bHRpQWRhcHRlci4KKiBPbmx5IGNhbGxpbmcgY3VybF9tdWx0aV9zZWxlY3Qgd2hlbiB0aGVyZSBhcmUgYWN0aXZlIGNVUkwgaGFuZGxlcy4gVGhpcyB3YXMKICBwcmV2aW91c2x5IGNoYW5nZWQgYW5kIGNhdXNlZCBwZXJmb3JtYW5jZSBwcm9ibGVtcyBvbiBzb21lIHN5c3RlbXMgZHVlIHRvIFBIUAogIGFsd2F5cyBzZWxlY3RpbmcgdW50aWwgdGhlIG1heGltdW0gc2VsZWN0IHRpbWVvdXQuCiogRml4ZWQgYSBidWcgd2hlcmUgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBQT1NUIGZpZWxkcyB3ZXJlIG5vdCBjb3JyZWN0bHkKICBhZ2dyZWdhdGVkIChlLmcuLCB2YWx1ZXMgd2l0aCAiJiIpLgoKIyMgNC4xLjYgLSAyMDE0LTA4LTAzCgoqIEFkZGVkIGhlbHBlciBtZXRob2RzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJlcHJlc2VudCBtZXNzYWdlcyBhcyBzdHJpbmdzLAogIGluY2x1ZGluZyBnZXR0aW5nIHRoZSBzdGFydCBsaW5lIGFuZCBnZXR0aW5nIGhlYWRlcnMgYXMgYSBzdHJpbmcuCgojIyA0LjEuNSAtIDIwMTQtMDgtMDIKCiogQXV0b21hdGljYWxseSByZXRyeWluZyBjVVJMICJDb25uZWN0aW9uIGRpZWQsIHJldHJ5aW5nIGEgZnJlc2ggY29ubmVjdCIKICBlcnJvcnMgd2hlbiBwb3NzaWJsZS4KKiBjVVJMIGltcGxlbWVudGF0aW9uIGNsZWFudXAKKiBBbGxvd2luZyBtdWx0aXBsZSBldmVudCBzdWJzY3JpYmVyIGxpc3RlbmVycyB0byBiZSByZWdpc3RlcmVkIHBlciBldmVudCBieQogIHBhc3NpbmcgYW4gYXJyYXkgb2YgYXJyYXlzIG9mIGxpc3RlbmVyIGNvbmZpZ3VyYXRpb24uCgojIyA0LjEuNCAtIDIwMTQtMDctMjIKCiogRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQgbXVsdGktcGFydCBQT1NUIHJlcXVlc3RzIHdpdGggbW9yZSB0aGFuIG9uZSBmaWVsZCB0bwogIHNlcmlhbGl6ZSBpbmNvcnJlY3RseS4KKiBQYXRocyBjYW4gbm93IGJlIHNldCB0byAiMCIKKiBgUmVzcG9uc2VJbnRlcmZhY2U6OnhtbGAgbm93IGFjY2VwdHMgYSBgbGlieG1sX29wdGlvbnNgIG9wdGlvbiBhbmQgYWRkZWQgYQogIG1pc3NpbmcgZGVmYXVsdCBhcmd1bWVudCB0aGF0IHdhcyByZXF1aXJlZCB3aGVuIHBhcnNpbmcgWE1MIHJlc3BvbnNlIGJvZGllcy4KKiBBIGBzYXZlX3RvYCBzdHJlYW0gaXMgbm93IGNyZWF0ZWQgbGF6aWx5LCB3aGljaCBtZWFucyB0aGF0IGZpbGVzIGFyZSBub3QKICBjcmVhdGVkIG9uIGRpc2sgdW5sZXNzIGEgcmVxdWVzdCBzdWNjZWVkcy4KCiMjIDQuMS4zIC0gMjAxNC0wNy0xNQoKKiBWYXJpb3VzIGZpeGVzIHRvIG11bHRpcGFydC9mb3JtLWRhdGEgUE9TVCB1cGxvYWRzCiogV3JhcHBpbmcgZnVuY3Rpb24ucGhwIGluIGFuIGlmLXN0YXRlbWVudCB0byBlbnN1cmUgR3V6emxlIGNhbiBiZSB1c2VkCiAgZ2xvYmFsbHkgYW5kIGluIGEgQ29tcG9zZXIgaW5zdGFsbAoqIEZpeGVkIGFuIGlzc3VlIHdpdGggZ2VuZXJhdGluZyBhbmQgbWVyZ2luZyBpbiBldmVudHMgdG8gYW4gZXZlbnQgYXJyYXkKKiBQT1NUIGhlYWRlcnMgYXJlIG9ubHkgYXBwbGllZCBiZWZvcmUgc2VuZGluZyBhIHJlcXVlc3QgdG8gYWxsb3cgeW91IHRvIGNoYW5nZQogIHRoZSBxdWVyeSBhZ2dyZWdhdG9yIHVzZWQgYmVmb3JlIHVwbG9hZGluZwoqIEFkZGVkIG11Y2ggbW9yZSByb2J1c3QgcXVlcnkgc3RyaW5nIHBhcnNpbmcKKiBGaXhlZCB2YXJpb3VzIHBhcnNpbmcgYW5kIG5vcm1hbGl6YXRpb24gaXNzdWVzIHdpdGggVVJMcwoqIEZpeGluZyBhbiBpc3N1ZSB3aGVyZSBtdWx0aS12YWx1ZWQgaGVhZGVycyB3ZXJlIG5vdCBiZWluZyB1dGlsaXplZCBjb3JyZWN0bHkKICBpbiB0aGUgU3RyZWFtQWRhcHRlcgoKIyMgNC4xLjIgLSAyMDE0LTA2LTE4CgoqIEFkZGVkIHN1cHBvcnQgZm9yIHNlbmRpbmcgcGF5bG9hZHMgd2l0aCBHRVQgcmVxdWVzdHMKCiMjIDQuMS4xIC0gMjAxNC0wNi0wOAoKKiBGaXhlZCBhbiBpc3N1ZSByZWxhdGVkIHRvIHVzaW5nIGN1c3RvbSBtZXNzYWdlIGZhY3Rvcnkgb3B0aW9ucyBpbiBzdWJjbGFzc2VzCiogRml4ZWQgYW4gaXNzdWUgd2l0aCBuZXN0ZWQgZm9ybSBmaWVsZHMgaW4gYSBtdWx0aS1wYXJ0IFBPU1QKKiBGaXhlZCBhbiBpc3N1ZSB3aXRoIHVzaW5nIHRoZSBganNvbmAgcmVxdWVzdCBvcHRpb24gZm9yIFBPU1QgcmVxdWVzdHMKKiBBZGRlZCBgVG9BcnJheUludGVyZmFjZWAgdG8gYEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphcmAKCiMjIDQuMS4wIC0gMjAxNC0wNS0yNwoKKiBBZGRlZCBhIGBqc29uYCByZXF1ZXN0IG9wdGlvbiB0byBlYXNpbHkgc2VyaWFsaXplIEpTT04gcGF5bG9hZHMuCiogQWRkZWQgYSBgR3V6emxlSHR0cFxqc29uX2RlY29kZSgpYCB3cmFwcGVyIHRvIHNhZmVseSBwYXJzZSBKU09OLgoqIEFkZGVkIGBzZXRQb3J0KClgIGFuZCBgZ2V0UG9ydCgpYCB0byBgR3V6emxlSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2VgLgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHByb3ZpZGUgYW4gZW1pdHRlciB0byBhIGNsaWVudCBpbiB0aGUgY2xpZW50IGNvbnN0cnVjdG9yLgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHBlcnNpc3QgYSBjb29raWUgc2Vzc2lvbiB1c2luZyAkX1NFU1NJT04uCiogQWRkZWQgYSB0cmFpdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGFkZCBldmVudCBsaXN0ZW5lcnMgdG8gYW4gaXRlcmF0b3IuCiogUmVtb3ZlZCByZXF1ZXN0IG1ldGhvZCBjb25zdGFudHMgZnJvbSBSZXF1ZXN0SW50ZXJmYWNlLgoqIEZpeGVkIHdhcm5pbmcgd2hlbiBpbnZhbGlkIHJlcXVlc3Qgc3RhcnQtbGluZXMgYXJlIHJlY2VpdmVkLgoqIFVwZGF0ZWQgTWVzc2FnZUZhY3RvcnkgdG8gd29yayB3aXRoIGN1c3RvbSByZXF1ZXN0IG9wdGlvbiBtZXRob2RzLgoqIFVwZGF0ZWQgY2FjZXJ0IGJ1bmRsZSB0byBsYXRlc3QgYnVpbGQuCgo0LjAuMiAoMjAxNC0wNC0xNikKLS0tLS0tLS0tLS0tLS0tLS0tCgoqIFByb3h5IHJlcXVlc3RzIHVzaW5nIHRoZSBTdHJlYW1BZGFwdGVyIG5vdyBwcm9wZXJseSB1c2UgcmVxdWVzdF9mdWxsdXJpICgjNjMyKQoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNldCBzY2FsYXJzIGFzIFBPU1QgZmllbGRzICgjNjI4KQoKIyMgNC4wLjEgLSAyMDE0LTA0LTA0CgoqIFRoZSBIVFRQIHN0YXR1cyBjb2RlIG9mIGEgcmVzcG9uc2UgaXMgbm93IHNldCBhcyB0aGUgZXhjZXB0aW9uIGNvZGUgb2YKICBSZXF1ZXN0RXhjZXB0aW9uIG9iamVjdHMuCiogMzAzIHJlZGlyZWN0cyB3aWxsIG5vdyBjb3JyZWN0bHkgc3dpdGNoIGZyb20gUE9TVCB0byBHRVQgcmVxdWVzdHMuCiogVGhlIGRlZmF1bHQgcGFyYWxsZWwgYWRhcHRlciBvZiBhIGNsaWVudCBub3cgY29ycmVjdGx5IHVzZXMgdGhlIE11bHRpQWRhcHRlci4KKiBIYXNEYXRhVHJhaXQgbm93IGluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBkYXRhIGFycmF5IGFzIGFuIGVtcHR5IGFycmF5IHNvCiAgdGhhdCB0aGUgdG9BcnJheSgpIG1ldGhvZCBhbHdheXMgcmV0dXJucyBhbiBhcnJheS4KCiMjIDQuMC4wIC0gMjAxNC0wMy0yOQoKKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgNC4wIHRyYW5zaXRpb24sIHNlZToKICBodHRwOi8vbXRkb3dsaW5nLmNvbS9ibG9nLzIwMTQvMDMvMTUvZ3V6emxlLTQtcmMvCiogRm9yIGluZm9ybWF0aW9uIG9uIGNoYW5nZXMgYW5kIHVwZ3JhZGluZywgc2VlOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2Jsb2IvbWFzdGVyL1VQR1JBRElORy5tZCMzeC10by00MAoqIEFkZGVkIGBHdXp6bGVIdHRwXGJhdGNoKClgIGFzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gZm9yIHNlbmRpbmcgcmVxdWVzdHMgaW4KICBwYXJhbGxlbCB3aXRob3V0IG5lZWRpbmcgdG8gd3JpdGUgYXN5bmNocm9ub3VzIGNvZGUuCiogUmVzdHJ1Y3R1cmVkIGhvdyBldmVudHMgYXJlIGFkZGVkIHRvIGBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZTo6c2VuZEFsbCgpYC4KICBZb3UgY2FuIG5vdyBwYXNzIGEgY2FsbGFibGUgb3IgYW4gYXJyYXkgb2YgYXNzb2NpYXRpdmUgYXJyYXlzIHdoZXJlIGVhY2gKICBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWlucyB0aGUgImZuIiwgInByaW9yaXR5IiwgYW5kICJvbmNlIiBrZXlzLgoKIyMgNC4wLjAucmMtMiAtIDIwMTQtMDMtMjUKCiogUmVtb3ZlZCBgZ2V0Q29uZmlnKClgIGFuZCBgc2V0Q29uZmlnKClgIGZyb20gY2xpZW50cyB0byBhdm9pZCBjb25mdXNpb24KICBhcm91bmQgd2hldGhlciB0aGluZ3MgbGlrZSBiYXNlX3VybCwgbWVzc2FnZV9mYWN0b3J5LCBldGMuIHNob3VsZCBiZSBhYmxlIHRvCiAgYmUgcmV0cmlldmVkIG9yIG1vZGlmaWVkLgoqIEFkZGVkIGBnZXREZWZhdWx0T3B0aW9uKClgIGFuZCBgc2V0RGVmYXVsdE9wdGlvbigpYCB0byBDbGllbnRJbnRlcmZhY2UKKiBmdW5jdGlvbnMucGhwIGZ1bmN0aW9ucyB3ZXJlIHJlbmFtZWQgdXNpbmcgc25ha2VfY2FzZSB0byBtYXRjaCBQSFAgaWRpb21zCiogQWRkZWQgc3VwcG9ydCBmb3IgYEhUVFBfUFJPWFlgLCBgSFRUUFNfUFJPWFlgLCBhbmQKICBgR1VaWkxFX0NVUkxfU0VMRUNUX1RJTUVPVVRgIGVudmlyb25tZW50IHZhcmlhYmxlcwoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNwZWNpZnkgY3VzdG9tIGBzZW5kQWxsKClgIGV2ZW50IHByaW9yaXRpZXMKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGN1c3RvbSBzdHJlYW0gY29udGV4dCBvcHRpb25zIHRvIHRoZSBzdHJlYW0KICBhZGFwdGVyLgoqIEFkZGVkIGEgZnVuY3Rpb25zLnBocCBmdW5jdGlvbiBmb3IgYGdldF9wYXRoKClgIGFuZCBgc2V0X3BhdGgoKWAKKiBDdXJsQWRhcHRlciBhbmQgTXVsdGlBZGFwdGVyIG5vdyB1c2UgYSBjYWxsYWJsZSB0byBnZW5lcmF0ZSBjdXJsIHJlc291cmNlcwoqIE1vY2tBZGFwdGVyIG5vdyBwcm9wZXJseSByZWFkcyBhIGJvZHkgYW5kIGVtaXRzIGEgYGhlYWRlcnNgIGV2ZW50CiogVXBkYXRlZCBVcmwgY2xhc3MgdG8gY2hlY2sgaWYgYSBzY2hlbWUgYW5kIGhvc3QgYXJlIHNldCBiZWZvcmUgYWRkaW5nICI6IgogIGFuZCAiLy8iLiBUaGlzIGFsbG93cyBlbXB0eSBVcmwgKGUuZy4sICIiKSB0byBiZSBzZXJpYWxpemVkIGFzICIiLgoqIFBhcnNpbmcgaW52YWxpZCBYTUwgbm8gbG9uZ2VyIGVtaXRzIHdhcm5pbmdzCiogQ3VybCBjbGFzc2VzIG5vdyBwcm9wZXJseSB0aHJvdyBBZGFwdGVyRXhjZXB0aW9ucwoqIFZhcmlvdXMgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9ucwoqIFN0cmVhbXMgYXJlIGNyZWF0ZWQgd2l0aCB0aGUgZmFzdGVyIGBTdHJlYW1cY3JlYXRlKClgIGZ1bmN0aW9uCiogTWFya2VkIGRlcHJlY2F0aW9uX3Byb3h5KCkgYXMgaW50ZXJuYWwKKiBUZXN0IHNlcnZlciBpcyBub3cgYSBjb2xsZWN0aW9uIG9mIHN0YXRpYyBtZXRob2RzIG9uIGEgY2xhc3MKCiMjIDQuMC4wLXJjLjEgLSAyMDE0LTAzLTE1CgoqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9ibG9iL21hc3Rlci9VUEdSQURJTkcubWQjM3gtdG8tNDAKCiMjIDMuOC4xIC0gMjAxNC0wMS0yOAoKKiBCdWc6IEFsd2F5cyB1c2luZyBHRVQgcmVxdWVzdHMgd2hlbiByZWRpcmVjdGluZyBmcm9tIGEgMzAzIHJlc3BvbnNlCiogQnVnOiBDVVJMT1BUX1NTTF9WRVJJRllIT1NUIGlzIG5vdyBjb3JyZWN0bHkgc2V0IHRvIGZhbHNlIHdoZW4gc2V0dGluZyBgJGNlcnRpZmljYXRlQXV0aG9yaXR5YCB0byBmYWxzZSBpbgogIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldFNzbFZlcmlmaWNhdGlvbigpYAoqIEJ1ZzogUmVkaXJlY3RQbHVnaW4gbm93IHVzZXMgc3RyaWN0IFJGQyAzOTg2IGNvbXBsaWFuY2Ugd2hlbiBjb21iaW5pbmcgYSBiYXNlIFVSTCB3aXRoIGEgcmVsYXRpdmUgVVJMCiogQnVnOiBUaGUgYm9keSBvZiBhIHJlcXVlc3QgY2FuIG5vdyBiZSBzZXQgdG8gYCIwImAKKiBTZW5kaW5nIFBIUCBzdHJlYW0gcmVxdWVzdHMgbm8gbG9uZ2VyIGZvcmNlcyBgSFRUUC8xLjBgCiogQWRkaW5nIG1vcmUgaW5mb3JtYXRpb24gdG8gRXhjZXB0aW9uQ29sbGVjdGlvbiBleGNlcHRpb25zIHNvIHRoYXQgdXNlcnMgaGF2ZSBtb3JlIGNvbnRleHQsIGluY2x1ZGluZyBhIHN0YWNrIHRyYWNlIG9mCiAgZWFjaCBzdWItZXhjZXB0aW9uCiogVXBkYXRlZCB0aGUgYCRyZWZgIGF0dHJpYnV0ZSBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9ucyB0byBtZXJnZSBvdmVyIGFueSBleGlzdGluZyBwYXJhbWV0ZXJzIG9mIGEgc2NoZW1hIChyYXRoZXIgdGhhbgogIGNsb2JiZXJpbmcgZXZlcnl0aGluZykuCiogTWVyZ2luZyBVUkxzIHdpbGwgbm93IHVzZSB0aGUgcXVlcnkgc3RyaW5nIG9iamVjdCBmcm9tIHRoZSByZWxhdGl2ZSBVUkwgKHRodXMgYWxsb3dpbmcgY3VzdG9tIHF1ZXJ5IGFnZ3JlZ2F0b3JzKQoqIFF1ZXJ5IHN0cmluZ3MgYXJlIG5vdyBwYXJzZWQgaW4gYSB3YXkgdGhhdCB0aGV5IGRvIG5vIGNvbnZlcnQgZW1wdHkga2V5cyB3aXRoIG5vIHZhbHVlIHRvIGhhdmUgYSBkYW5nbGluZyBgPWAuCiAgRm9yIGV4YW1wbGUgYGZvbyZiYXI9YmF6YCBpcyBub3cgY29ycmVjdGx5IHBhcnNlZCBhbmQgcmVjb2duaXplZCBhcyBgZm9vJmJhcj1iYXpgIHJhdGhlciB0aGFuIGBmb289JmJhcj1iYXpgLgoqIE5vdyBwcm9wZXJseSBlc2NhcGluZyB0aGUgcmVndWxhciBleHByZXNzaW9uIGRlbGltaXRlciB3aGVuIG1hdGNoaW5nIENvb2tpZSBkb21haW5zLgoqIE5ldHdvcmsgYWNjZXNzIGlzIG5vdyBkaXNhYmxlZCB3aGVuIGxvYWRpbmcgWE1MIGRvY3VtZW50cwoKIyMgMy44LjAgLSAyMDEzLTEyLTA1CgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBhIFBPU1QgbmFtZSBmb3IgYSBmaWxlCiogSlNPTiByZXNwb25zZSBwYXJzaW5nIG5vdyBwcm9wZXJseSB3YWxrcyBhZGRpdGlvbmFsUHJvcGVydGllcwoqIGNVUkwgZXJyb3IgY29kZSAxOCBpcyBub3cgcmV0cmllZCBhdXRvbWF0aWNhbGx5IGluIHRoZSBCYWNrb2ZmUGx1Z2luCiogRml4ZWQgYSBjVVJMIGVycm9yIHdoZW4gVVJMcyBjb250YWluIGZyYWdtZW50cwoqIEZpeGVkIGFuIGlzc3VlIGluIHRoZSBCYWNrb2ZmUGx1Z2luIHJldHJ5IGV2ZW50IHdoZXJlIGl0IHdhcyB0cnlpbmcgdG8gYWNjZXNzIGFsbCBleGNlcHRpb25zIGFzIGlmIHRoZXkgd2VyZQogIEN1cmxFeGNlcHRpb25zCiogQ1VSTE9QVF9QUk9HUkVTUyBmdW5jdGlvbiBmaXggZm9yIFBIUCA1LjUgKDY5ZmNjMWUpCiogQWRkZWQgdGhlIGFiaWxpdHkgZm9yIEd1enpsZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgY1VSTCB0aGF0IGRvIG5vdCBzdXBwb3J0IGBDVVJMT1BUX1RJTUVPVVRfTVNgCiogRml4ZWQgYSBidWcgdGhhdCB3YXMgZW5jb3VudGVyZWQgd2hlbiBwYXJzaW5nIGVtcHR5IGhlYWRlciBwYXJhbWV0ZXJzCiogVXJpVGVtcGxhdGUgbm93IGhhcyBhIGBzZXRSZWdleCgpYCBtZXRob2QgdG8gbWF0Y2ggdGhlIGRvY3MKKiBUaGUgYGRlYnVnYCByZXF1ZXN0IHBhcmFtZXRlciBub3cgY2hlY2tzIGlmIGl0IGlzIHRydXRoeSByYXRoZXIgdGhhbiBpZiBpdCBleGlzdHMKKiBTZXR0aW5nIHRoZSBgZGVidWdgIHJlcXVlc3QgcGFyYW1ldGVyIHRvIHRydWUgc2hvd3MgdmVyYm9zZSBjVVJMIG91dHB1dCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBMb2dQbHVnaW4KKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBjb21iaW5lIFVSTHMgdXNpbmcgc3RyaWN0IFJGQyAzOTg2IGNvbXBsaWFuY2UKKiBDb21tYW5kIG9iamVjdHMgY2FuIG5vdyByZXR1cm4gdGhlIHZhbGlkYXRpb24gZXJyb3JzIGVuY291bnRlcmVkIGJ5IHRoZSBjb21tYW5kCiogVmFyaW91cyBmaXhlcyB0byBjYWNoZSByZXZhbGlkYXRpb24gKCM0MzcgYW5kIDI5Nzk3ZTUpCiogVmFyaW91cyBmaXhlcyB0byB0aGUgQXN5bmNQbHVnaW4KKiBDbGVhbmVkIHVwIGJ1aWxkIHNjcmlwdHMKCiMjIDMuNy40IC0gMjAxMy0xMC0wMgoKKiBCdWcgZml4OiAwIGlzIG5vdyBhbiBhbGxvd2VkIHZhbHVlIGluIGEgZGVzY3JpcHRpb24gcGFyYW1ldGVyIHRoYXQgaGFzIGEgZGVmYXVsdCB2YWx1ZSAoIzQzMCkKKiBCdWcgZml4OiBTY2hlbWFGb3JtYXR0ZXIgbm93IHJldHVybnMgYW4gaW50ZWdlciB3aGVuIGZvcm1hdHRpbmcgdG8gYSBVbml4IHRpbWVzdGFtcAogIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3Mtc2RrLXBocC9pc3N1ZXMvMTQ3KQoqIEJ1ZyBmaXg6IENsZWFuZWQgdXAgYW5kIGZpeGVkIFVSTCBkb3Qgc2VnbWVudCByZW1vdmFsIHRvIHByb3Blcmx5IHJlc29sdmUgaW50ZXJuYWwgZG90cwoqIE1pbmltdW0gUEhQIHZlcnNpb24gaXMgbm93IHByb3Blcmx5IHNwZWNpZmllZCBhcyA1LjMuMyAodXAgZnJvbSA1LjMuMikgKCM0MjApCiogVXBkYXRlZCB0aGUgYnVuZGxlZCBjYWNlcnQucGVtICgjNDE5KQoqIE9hdXRoUGx1Z2luIG5vdyBzdXBwb3J0cyBhZGRpbmcgYXV0aGVudGljYXRpb24gdG8gaGVhZGVycyBvciBxdWVyeSBzdHJpbmcgKCM0MjUpCgojIyAzLjcuMyAtIDIwMTMtMDktMDgKCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gZ2V0IHRoZSBleGNlcHRpb24gYXNzb2NpYXRlZCB3aXRoIGEgcmVxdWVzdC9jb21tYW5kIHdoZW4gdXNpbmcgYE11bHRpVHJhbnNmZXJFeGNlcHRpb25gIGFuZAogIGBDb21tYW5kVHJhbnNmZXJFeGNlcHRpb25gLgoqIFNldHRpbmcgYGFkZGl0aW9uYWxQYXJhbWV0ZXJzYCBvZiBhIHJlc3BvbnNlIHRvIGZhbHNlIGlzIG5vdyBob25vcmVkIHdoZW4gcGFyc2luZyByZXNwb25zZXMgd2l0aCBhIHNlcnZpY2UgZGVzY3JpcHRpb24KKiBTY2hlbWFzIGFyZSBvbmx5IGluamVjdGVkIGludG8gcmVzcG9uc2UgbW9kZWxzIHdoZW4gZXhwbGljaXRseSBjb25maWd1cmVkLgoqIE5vIGxvbmdlciBndWVzc2luZyBDb250ZW50LVR5cGUgYmFzZWQgb24gdGhlIHBhdGggb2YgYSByZXF1ZXN0LiBDb250ZW50LVR5cGUgaXMgbm93IG9ubHkgZ3Vlc3NlZCBiYXNlZCBvbiB0aGUgcGF0aCBvZgogIGFuIEVudGl0eUJvZHkuCiogQnVnIGZpeDogQ2h1bmtlZEl0ZXJhdG9yIGNhbiBub3cgcHJvcGVybHkgY2h1bmsgYSBcVHJhdmVyc2FibGUgYXMgd2VsbCBhcyBhbiBcSXRlcmF0b3IuCiogQnVnIGZpeDogRmlsdGVySXRlcmF0b3Igbm93IHJlbGllcyBvbiBgXEl0ZXJhdG9yYCBpbnN0ZWFkIG9mIGBcVHJhdmVyc2FibGVgLgoqIEJ1ZyBmaXg6IEdyYWNlZnVsbHkgaGFuZGxpbmcgbWFsZm9ybWVkIHJlc3BvbnNlcyBpbiBSZXF1ZXN0TWVkaWF0b3I6OndyaXRlUmVzcG9uc2VCb2R5KCkKKiBCdWcgZml4OiBSZXBsYWNlZCBjYWxsIHRvIGNhbkNhY2hlIHdpdGggY2FuQ2FjaGVSZXF1ZXN0IGluIHRoZSBDYWxsYmFja0NhbkNhY2hlU3RyYXRlZ3kgb2YgdGhlIENhY2hlUGx1Z2luCiogQnVnIGZpeDogVmlzaXRpbmcgWE1MIGF0dHJpYnV0ZXMgZmlyc3QgYmVmb3JlIHZpc2l0aW5nIFhNTCBjaGlsZHJlbiB3aGVuIHNlcmlhbGl6aW5nIHJlcXVlc3RzCiogQnVnIGZpeDogUHJvcGVybHkgcGFyc2luZyBoZWFkZXJzIHRoYXQgY29udGFpbiBjb21tYXMgY29udGFpbmVkIGluIHF1b3RlcwoqIEJ1ZyBmaXg6IG1pbWV0eXBlIGd1ZXNzaW5nIGJhc2VkIG9uIGEgZmlsZW5hbWUgaXMgbm93IGNhc2UtaW5zZW5zaXRpdmUKCiMjIDMuNy4yIC0gMjAxMy0wOC0wMgoKKiBCdWcgZml4OiBQcm9wZXJseSBVUkwgZW5jb2RpbmcgcGF0aHMgd2hlbiB1c2luZyB0aGUgUEhQLW9ubHkgdmVyc2lvbiBvZiB0aGUgVXJpVGVtcGxhdGUgZXhwYW5kZXIKICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzM3MQoqIEJ1ZyBmaXg6IENvb2tpZSBkb21haW5zIGFyZSBub3cgbWF0Y2hlZCBjb3JyZWN0bHkgYWNjb3JkaW5nIHRvIFJGQyA2MjY1CiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy8zNzcKKiBCdWcgZml4OiBHRVQgcGFyYW1ldGVycyBhcmUgbm93IHVzZWQgd2hlbiBjYWxjdWxhdGluZyBhbiBPQXV0aCBzaWduYXR1cmUKKiBCdWcgZml4OiBGaXhlZCBhbiBpc3N1ZSB3aXRoIGNhY2hlIHJldmFsaWRhdGlvbiB3aGVyZSB0aGUgSWYtTm9uZS1NYXRjaCBoZWFkZXIgd2FzIGJlaW5nIGRvdWJsZSBxdW90ZWQKKiBgR3V6emxlXENvbW1vblxBYnN0cmFjdEhhc0Rpc3BhdGNoZXI6OmRpc3BhdGNoKClgIG5vdyByZXR1cm5zIHRoZSBldmVudCB0aGF0IHdhcyBkaXNwYXRjaGVkCiogYEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nOjpmYWN0b3J5KClgIG5vdyBndWVzc2VzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHF1ZXJ5IGFnZ3JlZ2F0b3IgdG8gdXNlZCBiYXNlZCBvbiB0aGUgaW5wdXQuCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy8zNzkKKiBBZGRlZCBhIHdheSB0byBhZGQgY3VzdG9tIGRvbWFpbiBvYmplY3RzIHRvIHNlcnZpY2UgZGVzY3JpcHRpb24gcGFyc2luZyB1c2luZyB0aGUgYG9wZXJhdGlvbi5wYXJzZV9jbGFzc2AgZXZlbnQuIFNlZQogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMzgwCiogY1VSTCBtdWx0aSBjbGVhbnVwIGFuZCBvcHRpbWl6YXRpb25zCgojIyAzLjcuMSAtIDIwMTMtMDctMDUKCiogQnVnIGZpeDogU2V0dGluZyBkZWZhdWx0IG9wdGlvbnMgb24gYSBjbGllbnQgbm93IHdvcmtzCiogQnVnIGZpeDogU2V0dGluZyBvcHRpb25zIG9uIEhFQUQgcmVxdWVzdHMgbm93IHdvcmtzLiBTZWUgIzM1MgoqIEJ1ZyBmaXg6IE1vdmluZyBzdHJlYW0gZmFjdG9yeSBiZWZvcmUgc2VuZCBldmVudCB0byBiZWZvcmUgYnVpbGRpbmcgdGhlIHN0cmVhbS4gU2VlICMzNTMKKiBCdWcgZml4OiBDb29raWVzIG5vIGxvbmdlciBtYXRjaCBvbiBJUCBhZGRyZXNzZXMgcGVyIFJGQyA2MjY1CiogQnVnIGZpeDogQ29ycmVjdGx5IHBhcnNpbmcgaGVhZGVyIHBhcmFtZXRlcnMgdGhhdCBhcmUgaW4gYDw+YCBhbmQgcXVvdGVzCiogQWRkZWQgYGNlcnRgIGFuZCBgc3NsX2tleWAgYXMgcmVxdWVzdCBvcHRpb25zCiogYEhvc3RgIGhlYWRlciBjYW4gbm93IGRpdmVyZ2UgZnJvbSB0aGUgaG9zdCBwYXJ0IG9mIGEgVVJMIGlmIHRoZSBoZWFkZXIgaXMgc2V0IG1hbnVhbGx5CiogYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcTG9jYXRpb25WaXNpdG9yXFJlcXVlc3RcWG1sVmlzaXRvcmAgd2FzIHJld3JpdHRlbiB0byBjaGFuZ2UgZnJvbSB1c2luZyBTaW1wbGVYTUwgdG8gWE1MV3JpdGVyCiogT0F1dGggcGFyYW1ldGVycyBhcmUgb25seSBhZGRlZCB2aWEgdGhlIHBsdWdpbiBpZiB0aGV5IGFyZW4ndCBhbHJlYWR5IHNldAoqIEV4Y2VwdGlvbnMgYXJlIG5vdyB0aHJvd24gd2hlbiBhIFVSTCBjYW5ub3QgYmUgcGFyc2VkCiogUmV0dXJuaW5nIGBmYWxzZWAgaWYgYEd1enpsZVxIdHRwXEVudGl0eUJvZHk6OmdldENvbnRlbnRNZDUoKWAgZmFpbHMKKiBOb3Qgc2V0dGluZyBhIGBDb250ZW50LU1ENWAgb24gYSBjb21tYW5kIGlmIGNhbGN1bGF0aW5nIHRoZSBDb250ZW50LU1ENSBmYWlscyB2aWEgdGhlIENvbW1hbmRDb250ZW50TWQ1UGx1Z2luCgojIyAzLjcuMCAtIDIwMTMtMDYtMTAKCiogU2VlIFVQR1JBRElORy5tZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBob3cgdG8gdXBncmFkZS4KKiBSZXF1ZXN0cyBub3cgc3VwcG9ydCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGFuIGFycmF5IG9mICRvcHRpb25zIHdoZW4gY3JlYXRpbmcgYSByZXF1ZXN0IHRvIG1vcmUgZWFzaWx5IG1vZGlmeSBhCiAgcmVxdWVzdC4gWW91IGNhbiBwYXNzIGEgJ3JlcXVlc3Qub3B0aW9ucycgY29uZmlndXJhdGlvbiBzZXR0aW5nIHRvIGEgY2xpZW50IHRvIGFwcGx5IGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIHRvCiAgZXZlcnkgcmVxdWVzdCBjcmVhdGVkIGJ5IGEgY2xpZW50IChlLmcuIGRlZmF1bHQgcXVlcnkgc3RyaW5nIHZhcmlhYmxlcywgaGVhZGVycywgY3VybCBvcHRpb25zLCBldGMuKS4KKiBBZGRlZCBhIHN0YXRpYyBmYWNhZGUgY2xhc3MgdGhhdCBhbGxvd3MgeW91IHRvIHVzZSBHdXp6bGUgd2l0aCBzdGF0aWMgbWV0aG9kcyBhbmQgbW91bnQgdGhlIGNsYXNzIHRvIGBcR3V6emxlYC4KICBTZWUgYEd1enpsZVxIdHRwXFN0YXRpY0NsaWVudDo6bW91bnRgLgoqIEFkZGVkIGBjb21tYW5kLnJlcXVlc3Rfb3B0aW9uc2AgdG8gYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQWJzdHJhY3RDb21tYW5kYCB0byBwYXNzIHJlcXVlc3Qgb3B0aW9ucyB0byByZXF1ZXN0cwogICAgICBjcmVhdGVkIGJ5IGEgY29tbWFuZCAoZS5nLiBjdXN0b20gaGVhZGVycywgcXVlcnkgc3RyaW5nIHZhcmlhYmxlcywgdGltZW91dCBzZXR0aW5ncywgZXRjLikuCiogU3RyZWFtIHNpemUgaW4gYEd1enpsZVxTdHJlYW1cUGhwU3RyZWFtUmVxdWVzdEZhY3RvcnlgIHdpbGwgbm93IGJlIHNldCBpZiBDb250ZW50LUxlbmd0aCBpcyByZXR1cm5lZCBpbiB0aGUKICBoZWFkZXJzIG9mIGEgcmVzcG9uc2UKKiBBZGRlZCBgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjpzZXRQYXRoKCRwYXRoLCAkdmFsdWUpYCB0byBzZXQgYSB2YWx1ZSBpbnRvIGFuIGFycmF5IHVzaW5nIGEgbmVzdGVkIGtleQogIChlLmcuIGAkY29sbGVjdGlvbi0+c2V0UGF0aCgnZm9vL2Jhei9iYXInLCAndGVzdCcpOyBlY2hvICRjb2xsZWN0aW9uWydmb28nXVsnYmFyJ11bJ2JhciddO2ApCiogU2VydmljZUJ1aWxkZXJzIG5vdyBzdXBwb3J0IHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgYXJiaXRyYXJ5IGRhdGEKKiBDYWNoZVBsdWdpbiBjYW4gbm93IHB1cmdlIGFsbCByZXNvdXJjZXMgZm9yIGEgZ2l2ZW4gVVJJCiogQ2FjaGVQbHVnaW4gY2FuIGF1dG9tYXRpY2FsbHkgcHVyZ2UgbWF0Y2hpbmcgY2FjaGVkIGl0ZW1zIHdoZW4gYSBub24taWRlbXBvdGVudCByZXF1ZXN0IGlzIHNlbnQgdG8gYSByZXNvdXJjZQoqIENhY2hlUGx1Z2luIG5vdyB1c2VzIHRoZSBWYXJ5IGhlYWRlciB0byBkZXRlcm1pbmUgaWYgYSByZXNvdXJjZSBpcyBhIGNhY2hlIGhpdAoqIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlc3BvbnNlYCBub3cgaW1wbGVtZW50cyBgXFNlcmlhbGl6YWJsZWAKKiBBZGRlZCBgR3V6emxlXENhY2hlXENhY2hlQWRhcHRlckZhY3Rvcnk6OmZyb21DYWNoZSgpYCB0byBtb3JlIGVhc2lseSBjcmVhdGUgY2FjaGUgYWRhcHRlcnMKKiBgR3V6emxlXFNlcnZpY2VcQ2xpZW50SW50ZXJmYWNlOjpleGVjdXRlKClgIG5vdyBhY2NlcHRzIGFuIGFycmF5LCBzaW5nbGUgY29tbWFuZCwgb3IgVHJhdmVyc2FibGUKKiBGaXhlZCBhIGJ1ZyBpbiBgR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXJcTGluazo6YWRkTGluaygpYAoqIEJldHRlciBoYW5kbGluZyBvZiBjYWxjdWxhdGluZyB0aGUgc2l6ZSBvZiBhIHN0cmVhbSBpbiBgR3V6emxlXFN0cmVhbVxTdHJlYW1gIHVzaW5nIGZzdGF0KCkgYW5kIGNhY2hpbmcgdGhlIHNpemUKKiBgR3V6emxlXENvbW1vblxFeGNlcHRpb25cRXhjZXB0aW9uQ29sbGVjdGlvbmAgbm93IGNyZWF0ZXMgYSBtb3JlIHJlYWRhYmxlIGV4Y2VwdGlvbiBtZXNzYWdlCiogRml4aW5nIEJDIGJyZWFrOiBBZGRlZCBiYWNrIHRoZSBNb25vbG9nTG9nQWRhcHRlciBpbXBsZW1lbnRhdGlvbiByYXRoZXIgdGhhbiBleHRlbmRpbmcgZnJvbSBQc3JMb2cgc28gdGhhdCBvbGRlcgogIFN5bWZvbnkgdXNlcnMgY2FuIHN0aWxsIHVzZSB0aGUgb2xkIHZlcnNpb24gb2YgTW9ub2xvZy4KKiBGaXhpbmcgQkMgYnJlYWs6IEFkZGVkIHRoZSBpbXBsZW1lbnRhdGlvbiBiYWNrIGluIGZvciBgR3V6emxlXEh0dHBcTWVzc2FnZVxBYnN0cmFjdE1lc3NhZ2U6OmdldFRva2VuaXplZEhlYWRlcigpYC4KICBOb3cgdHJpZ2dlcmluZyBhbiBFX1VTRVJfREVQUkVDQVRFRCB3YXJuaW5nIHdoZW4gdXNlZC4gVXNlIGAkbWVzc2FnZS0+Z2V0SGVhZGVyKCktPnBhcnNlUGFyYW1zKClgLgoqIFNldmVyYWwgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzIHRvIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb25gCiogQWRkZWQgYW4gYCRvcHRpb25zYCBhcmd1bWVudCB0byB0aGUgZW5kIG9mIHRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvZiBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlYDoKICBjcmVhdGVSZXF1ZXN0LCBoZWFkLCBkZWxldGUsIHB1dCwgcGF0Y2gsIHBvc3QsIG9wdGlvbnMsIHByZXBhcmVSZXF1ZXN0CiogQWRkZWQgYW4gYCRvcHRpb25zYCBhcmd1bWVudCB0byB0aGUgZW5kIG9mIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RcUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2U6OmNyZWF0ZVJlcXVlc3QoKWAKKiBBZGRlZCBhbiBgYXBwbHlPcHRpb25zKClgIG1ldGhvZCB0byBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0XFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlYAoqIENoYW5nZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0KCR1cmkgPSBudWxsLCAkaGVhZGVycyA9IG51bGwsICRib2R5ID0gbnVsbClgIHRvCiAgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0KCR1cmkgPSBudWxsLCAkaGVhZGVycyA9IG51bGwsICRvcHRpb25zID0gYXJyYXkoKSlgLiBZb3UgY2FuIHN0aWxsIHBhc3MgaW4gYQogIHJlc291cmNlLCBzdHJpbmcsIG9yIEVudGl0eUJvZHkgaW50byB0aGUgJG9wdGlvbnMgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhlIGRvd25sb2FkIGxvY2F0aW9uIG9mIHRoZSByZXNwb25zZS4KKiBDaGFuZ2VkIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246Ol9fY29uc3RydWN0KCRkYXRhKWAgdG8gbm8gbG9uZ2VyIGFjY2VwdHMgYSBudWxsIHZhbHVlIGZvciBgJGRhdGFgIGJ1dCBhCiAgZGVmYXVsdCBgYXJyYXkoKWAKKiBBZGRlZCBgR3V6emxlXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2U6OmlzUmVwZWF0YWJsZWAKKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldERlZmF1bHRIZWFkZXJzKCkuIFVzZQogICRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycy97aGVhZGVyX25hbWV9JywgJ3ZhbHVlJylgLiBvcgogICRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycycsIGFycmF5KCdoZWFkZXJfbmFtZScgPT4gJ3ZhbHVlJykpYC4KKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldERlZmF1bHRIZWFkZXJzKCkuIFVzZSAkY2xpZW50LT5nZXRDb25maWcoKS0+Z2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2hlYWRlcnMnKWAuCiogUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpleHBhbmRUZW1wbGF0ZSgpYAoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0UmVxdWVzdEZhY3RvcnkoKWAKKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldEN1cmxNdWx0aSgpYAoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6Y2FuQ2FjaGVgCiogUmVtb3ZlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjpzZXRJc1JlZGlyZWN0YAoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6aXNSZWRpcmVjdGAKKiBNYWRlIGBHdXp6bGVcSHR0cFxDbGllbnQ6OmV4cGFuZFRlbXBsYXRlYCBhbmQgYGdldFVyaVRlbXBsYXRlYCBwcm90ZWN0ZWQgbWV0aG9kcy4KKiBZb3UgY2FuIG5vdyBlbmFibGUgRV9VU0VSX0RFUFJFQ0FURUQgd2FybmluZ3MgdG8gc2VlIGlmIHlvdSBhcmUgdXNpbmcgYSBkZXByZWNhdGVkIG1ldGhvZCBieSBzZXR0aW5nCiAgYEd1enpsZVxDb21tb25cVmVyc2lvbjo6JGVtaXRXYXJuaW5nc2AgdG8gdHJ1ZS4KKiBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6aXNSZXNwb25zZUJvZHlSZXBlYXRhYmxlKClgIGFzIGRlcHJlY2F0ZWQuIFVzZQogICAgICBgJHJlcXVlc3QtPmdldFJlc3BvbnNlQm9keSgpLT5pc1JlcGVhdGFibGUoKWAgaW5zdGVhZC4KKiBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6Y2FuQ2FjaGUoKWAgYXMgZGVwcmVjYXRlZC4gVXNlCiAgYEd1enpsZVxQbHVnaW5cQ2FjaGVcRGVmYXVsdENhbkNhY2hlU3RyYXRlZ3ktPmNhbkNhY2hlUmVxdWVzdCgpYCBpbnN0ZWFkLgoqIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpjYW5DYWNoZSgpYCBhcyBkZXByZWNhdGVkLiBVc2UKICBgR3V6emxlXFBsdWdpblxDYWNoZVxEZWZhdWx0Q2FuQ2FjaGVTdHJhdGVneS0+Y2FuQ2FjaGVSZXF1ZXN0KClgIGluc3RlYWQuCiogTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnNldElzUmVkaXJlY3QoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luIGluc3RlYWQuCiogTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmlzUmVkaXJlY3QoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luIGluc3RlYWQuCiogTWFya2VkIGBHdXp6bGVcQ2FjaGVcQ2FjaGVBZGFwdGVyRmFjdG9yeTo6ZmFjdG9yeSgpYCBhcyBkZXByZWNhdGVkCiogTWFya2VkICdjb21tYW5kLmhlYWRlcnMnLCAnY29tbWFuZC5yZXNwb25zZV9ib2R5JyBhbmQgJ2NvbW1hbmQub25fY29tcGxldGUnIGFzIGRlcHJlY2F0ZWQgZm9yIEFic3RyYWN0Q29tbWFuZC4KICBUaGVzZSB3aWxsIHdvcmsgdGhyb3VnaCBHdXp6bGUgNC4wCiogTWFya2VkICdyZXF1ZXN0LnBhcmFtcycgZm9yIGBHdXp6bGVcSHR0cFxDbGllbnRgIGFzIGRlcHJlY2F0ZWQuIFVzZSBbcmVxdWVzdC5vcHRpb25zXVtwYXJhbXNdLgoqIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjplbmFibGVNYWdpY01ldGhvZHMoKWAgYXMgZGVwcmVjYXRlZC4gTWFnaWMgbWV0aG9kcyBjYW4gbm8gbG9uZ2VyIGJlIGRpc2FibGVkIG9uIGEgR3V6emxlXFNlcnZpY2VcQ2xpZW50LgoqIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjpnZXREZWZhdWx0SGVhZGVycygpYCBhcyBkZXByZWNhdGVkLiBVc2UgJGNsaWVudC0+Z2V0Q29uZmlnKCktPmdldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzJylgLgoqIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjpzZXREZWZhdWx0SGVhZGVycygpYCBhcyBkZXByZWNhdGVkLiBVc2UgJGNsaWVudC0+Z2V0Q29uZmlnKCktPnNldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzL3toZWFkZXJfbmFtZX0nLCAndmFsdWUnKWAuCiogTWFya2VkIGBHdXp6bGVcUGFyc2VyXFVybFxVcmxQYXJzZXJgIGFzIGRlcHJlY2F0ZWQuIEp1c3QgdXNlIFBIUCdzIGBwYXJzZV91cmwoKWAgYW5kIHBlcmNlbnQgZW5jb2RlIHlvdXIgVVRGLTguCiogTWFya2VkIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmluamVjdCgpYCBhcyBkZXByZWNhdGVkLgoqIE1hcmtlZCBgR3V6emxlXFBsdWdpblxDdXJsQXV0aFxDdXJsQXV0aFBsdWdpbmAgYXMgZGVwcmVjYXRlZC4gVXNlIGAkY2xpZW50LT5nZXRDb25maWcoKS0+c2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2F1dGgnLCBhcnJheSgndXNlcicsICdwYXNzJywgJ0Jhc2ljfERpZ2VzdCcpO2AKKiBDYWNoZUtleVByb3ZpZGVySW50ZXJmYWNlIGFuZCBEZWZhdWx0Q2FjaGVLZXlQcm92aWRlciBhcmUgbm8gbG9uZ2VyIHVzZWQuIEFsbCBvZiB0aGlzIGxvZ2ljIGlzIGhhbmRsZWQgaW4gYQogIENhY2hlU3RvcmFnZUludGVyZmFjZS4gVGhlc2UgdHdvIG9iamVjdHMgYW5kIGludGVyZmFjZSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4KKiBBbHdheXMgc2V0dGluZyBYLWNhY2hlIGhlYWRlcnMgb24gY2FjaGVkIHJlc3BvbnNlcwoqIERlZmF1bHQgY2FjaGUgVFRMcyBhcmUgbm93IGhhbmRsZWQgYnkgdGhlIENhY2hlU3RvcmFnZUludGVyZmFjZSBvZiBhIENhY2hlUGx1Z2luCiogYENhY2hlU3RvcmFnZUludGVyZmFjZTo6Y2FjaGUoJGtleSwgUmVzcG9uc2UgJHJlc3BvbnNlLCAkdHRsID0gbnVsbClgIGhhcyBjaGFuZ2VkIHRvIGBjYWNoZShSZXF1ZXN0SW50ZXJmYWNlCiAgJHJlcXVlc3QsIFJlc3BvbnNlICRyZXNwb25zZSk7YAoqIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmZldGNoKCRrZXkpYCBoYXMgY2hhbmdlZCB0byBgZmV0Y2goUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk7YAoqIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmRlbGV0ZSgka2V5KWAgaGFzIGNoYW5nZWQgdG8gYGRlbGV0ZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTtgCiogQWRkZWQgYENhY2hlU3RvcmFnZUludGVyZmFjZTo6cHVyZ2UoJHVybClgCiogYERlZmF1bHRSZXZhbGlkYXRpb246Ol9fY29uc3RydWN0KENhY2hlS2V5UHJvdmlkZXJJbnRlcmZhY2UgJGNhY2hlS2V5LCBDYWNoZVN0b3JhZ2VJbnRlcmZhY2UgJGNhY2hlLCBDYWNoZVBsdWdpbgogICRwbHVnaW4pYCBoYXMgY2hhbmdlZCB0byBgRGVmYXVsdFJldmFsaWRhdGlvbjo6X19jb25zdHJ1Y3QoQ2FjaGVTdG9yYWdlSW50ZXJmYWNlICRjYWNoZSwKICBDYW5DYWNoZVN0cmF0ZWd5SW50ZXJmYWNlICRjYW5DYWNoZSA9IG51bGwpYAoqIEFkZGVkIGBSZXZhbGlkYXRpb25JbnRlcmZhY2U6OnNob3VsZFJldmFsaWRhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgUmVzcG9uc2UgJHJlc3BvbnNlKWAKCiMjIDMuNi4wIC0gMjAxMy0wNS0yOQoKKiBTZXJ2aWNlRGVzY3JpcHRpb24gbm93IGltcGxlbWVudHMgVG9BcnJheUludGVyZmFjZQoqIEFkZGVkIGNvbW1hbmQuaGlkZGVuX3BhcmFtcyB0byBibGFja2xpc3QgY2VydGFpbiBoZWFkZXJzIGZyb20gYmVpbmcgdHJlYXRlZCBhcyBhZGRpdGlvbmFsUGFyYW1ldGVycwoqIEd1enpsZSBjYW4gbm93IGNvcnJlY3RseSBwYXJzZSBpbmNvbXBsZXRlIFVSTHMKKiBNaXhlZCBjYXNpbmcgb2YgaGVhZGVycyBhcmUgbm93IGZvcmNlZCB0byBiZSBhIHNpbmdsZSBjb25zaXN0ZW50IGNhc2luZyBhY3Jvc3MgYWxsIHZhbHVlcyBmb3IgdGhhdCBoZWFkZXIuCiogTWVzc2FnZXMgaW50ZXJuYWxseSB1c2UgYSBIZWFkZXJDb2xsZWN0aW9uIG9iamVjdCB0byBkZWxlZ2F0ZSBoYW5kbGluZyBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciByZXNvbHV0aW9uCiogUmVtb3ZlZCB0aGUgd2hvbGUgY2hhbmdlZEhlYWRlcigpIGZ1bmN0aW9uIHN5c3RlbSBvZiBtZXNzYWdlcyBiZWNhdXNlIGFsbCBoZWFkZXIgY2hhbmdlcyBub3cgZ28gdGhyb3VnaCBhZGRIZWFkZXIoKS4KKiBTcGVjaWZpYyBoZWFkZXIgaW1wbGVtZW50YXRpb25zIGNhbiBiZSBjcmVhdGVkIGZvciBjb21wbGV4IGhlYWRlcnMuIFdoZW4gYSBtZXNzYWdlIGNyZWF0ZXMgYSBoZWFkZXIsIGl0IHVzZXMgYQogIEhlYWRlckZhY3Rvcnkgd2hpY2ggY2FuIG1hcCBzcGVjaWZpYyBoZWFkZXJzIHRvIHNwZWNpZmljIGhlYWRlciBjbGFzc2VzLiBUaGVyZSBpcyBub3cgYSBMaW5rIGhlYWRlciBhbmQKICBDYWNoZUNvbnRyb2wgaGVhZGVyIGltcGxlbWVudGF0aW9uLgoqIFJlbW92ZWQgZnJvbSBpbnRlcmZhY2U6IEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0VXJpVGVtcGxhdGUKKiBSZW1vdmVkIGZyb20gaW50ZXJmYWNlOiBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldEN1cmxNdWx0aSgpCiogUmVtb3ZlZCBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnJlY2VpdmVkUmVxdWVzdEhlYWRlcigpIGFuZCBpbXBsZW1lbnRlZCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4KICBHdXp6bGVcSHR0cFxDdXJsXFJlcXVlc3RNZWRpYXRvcgoqIFJlbW92ZWQgdGhlIG9wdGlvbmFsICRhc1N0cmluZyBwYXJhbWV0ZXIgZnJvbSBNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXIoKS4gSnVzdCBjYXN0IHRoZSBoZWFkZXIgdG8gYSBzdHJpbmcuCiogUmVtb3ZlZCB0aGUgb3B0aW9uYWwgJHRyeUNodW5rZWRUcmFuc2ZlciBvcHRpb24gZnJvbSBHdXp6bGVcSHR0cFxNZXNzYWdlXEVudGl0eUVuY2xvc2luZ1JlcXVlc3RJbnRlcmZhY2UKKiBSZW1vdmVkIHRoZSAkYXNPYmplY3RzIGFyZ3VtZW50IGZyb20gR3V6emxlXEh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXJzKCkKKiBSZW1vdmVkIEd1enpsZVxQYXJzZXJcUGFyc2VyUmVnaXN0ZXI6OmdldCgpLiBVc2UgZ2V0UGFyc2VyKCkKKiBSZW1vdmVkIEd1enpsZVxQYXJzZXJcUGFyc2VyUmVnaXN0ZXI6OnNldCgpLiBVc2UgcmVnaXN0ZXJQYXJzZXIoKS4KKiBBbGwgcmVzcG9uc2UgaGVhZGVyIGhlbHBlciBmdW5jdGlvbnMgcmV0dXJuIGEgc3RyaW5nIHJhdGhlciB0aGFuIG1peGluZyBIZWFkZXIgb2JqZWN0cyBhbmQgc3RyaW5ncyBpbmNvbnNpc3RlbnRseQoqIFJlbW92ZWQgY1VSTCBibGFja2xpc3Qgc3VwcG9ydC4gVGhpcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IG5vdyB0aGF0IEV4cGVjdCwgQWNjZXB0LCBldGMuIGFyZSBtYW5hZ2VkIGJ5IEd1enpsZQogIGRpcmVjdGx5IHZpYSBpbnRlcmZhY2VzCiogUmVtb3ZlZCB0aGUgaW5qZWN0aW5nIG9mIGEgcmVxdWVzdCBvYmplY3Qgb250byBhIHJlc3BvbnNlIG9iamVjdC4gVGhlIG1ldGhvZHMgdG8gZ2V0IGFuZCBzZXQgYSByZXF1ZXN0IHN0aWxsIGV4aXN0CiAgYnV0IGFyZSBhIG5vLW9wIHVudGlsIHJlbW92ZWQuCiogTW9zdCBjbGFzc2VzIHRoYXQgdXNlZCB0byByZXF1aXJlIGEgYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQ29tbWFuZEludGVyZmFjZWAgdHlwZWhpbnQgbm93IHJlcXVlc3QgYQogIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXEFycmF5Q29tbWFuZEludGVyZmFjZWAuCiogQWRkZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6c3RhcnRSZXNwb25zZSgpYCB0byB0aGUgUmVxdWVzdEludGVyZmFjZSB0byBoYW5kbGUgaW5qZWN0aW5nIGEgcmVzcG9uc2UKICBvbiBhIHJlcXVlc3Qgd2hpbGUgdGhlIHJlcXVlc3QgaXMgc3RpbGwgYmVpbmcgdHJhbnNmZXJyZWQKKiBUaGUgYWJpbGl0eSB0byBjYXNlLWluc2Vuc2l0aXZlbHkgc2VhcmNoIGZvciBoZWFkZXIgdmFsdWVzCiogR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXI6Omhhc0V4YWN0SGVhZGVyCiogR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXI6OnJhdy4gVXNlIGdldEFsbCgpCiogRGVwcmVjYXRlZCBjYWNoZSBjb250cm9sIHNwZWNpZmljIG1ldGhvZHMgb24gR3V6emxlXEh0dHBcTWVzc2FnZVxBYnN0cmFjdE1lc3NhZ2UuIFVzZSB0aGUgQ2FjaGVDb250cm9sIGhlYWRlciBvYmplY3QKICBpbnN0ZWFkLgoqIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXENvbW1hbmRJbnRlcmZhY2VgIG5vdyBleHRlbmRzIGZyb20gVG9BcnJheUludGVyZmFjZSBhbmQgQXJyYXlBY2Nlc3MKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBjYXN0IE1vZGVsIG9iamVjdHMgdG8gYSBzdHJpbmcgdG8gdmlldyBkZWJ1ZyBpbmZvcm1hdGlvbi4KCiMjIDMuNS4wIC0gMjAxMy0wNS0xMwoKKiBCdWc6IEZpeGVkIGEgcmVncmVzc2lvbiBzbyB0aGF0IHJlcXVlc3QgcmVzcG9uc2VzIGFyZSBwYXJzZWQgb25seSBvbmNlIHBlciBvbmNvbXBsZXRlIGV2ZW50IHJhdGhlciB0aGFuIG11bHRpcGxlIHRpbWVzCiogQnVnOiBCZXR0ZXIgY2xlYW51cCBvZiBvbmUtdGltZSBldmVudHMgYWNyb3NzIHRoZSBib2FyZCAod2hlbiBhbiBldmVudCBpcyBtZWFudCB0byBmaXJlIG9uY2UsIGl0IHdpbGwgbm93IHJlbW92ZQogIGl0c2VsZiBmcm9tIHRoZSBFdmVudERpc3BhdGNoZXIpCiogQnVnOiBgR3V6emxlXExvZ1xNZXNzYWdlRm9ybWF0dGVyYCBub3cgcHJvcGVybHkgd3JpdGVzICJ0b3RhbF90aW1lIiBhbmQgImNvbm5lY3RfdGltZSIgdmFsdWVzCiogQnVnOiBDbG9uaW5nIGFuIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgbm93IGNsb25lcyB0aGUgRW50aXR5Qm9keSB0b28KKiBCdWc6IEZpeGVkIGFuIHVuZGVmaW5lZCBpbmRleCBlcnJvciB3aGVuIHBhcnNpbmcgbmVzdGVkIEpTT04gcmVzcG9uc2VzIHdpdGggYSBzZW50QXMgcGFyYW1ldGVyIHRoYXQgcmVmZXJlbmNlIGEKICBub24tZXhpc3RlbnQga2V5CiogQnVnOiBBbGwgX19jYWxsKCkgbWV0aG9kIGFyZ3VtZW50cyBhcmUgbm93IHJlcXVpcmVkIChoZWxwcyB3aXRoIG1vY2tpbmcgZnJhbWV3b3JrcykKKiBEZXByZWNhdGluZyBSZXNwb25zZTo6Z2V0UmVxdWVzdCgpIGFuZCBub3cgdXNpbmcgYSBzaGFsbG93IGNsb25lIG9mIGEgcmVxdWVzdCBvYmplY3QgdG8gcmVtb3ZlIGEgY2lyY3VsYXIgcmVmZXJlbmNlCiAgdG8gaGVscCB3aXRoIHJlZmNvdW50IGJhc2VkIGdhcmJhZ2UgY29sbGVjdGlvbiBvZiByZXNvdXJjZXMgY3JlYXRlZCBieSBzZW5kaW5nIGEgcmVxdWVzdAoqIERlcHJlY2F0aW5nIFpGMSBjYWNoZSBhbmQgbG9nIGFkYXB0ZXJzLiBUaGVzZSB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgdmVyc2lvbi4KKiBEZXByZWNhdGluZyBgUmVzcG9uc2U6OmdldFByZXZpb3VzUmVzcG9uc2UoKWAgKG1ldGhvZCBzaWduYXR1cmUgc3RpbGwgZXhpc3RzLCBidXQgaXQncyBkZXByZWNhdGVkKS4gVXNlIHRoZQogIEhpc3RvcnlQbHVnaW4gZm9yIGEgaGlzdG9yeS4KKiBBZGRlZCBhIGByZXNwb25zZUJvZHlgIGFsaWFzIGZvciB0aGUgYHJlc3BvbnNlX2JvZHlgIGxvY2F0aW9uCiogUmVmYWN0b3JlZCBpbnRlcm5hbHMgdG8gbm8gbG9uZ2VyIHJlbHkgb24gUmVzcG9uc2U6OmdldFJlcXVlc3QoKQoqIEhpc3RvcnlQbHVnaW4gY2FuIG5vdyBiZSBjYXN0IHRvIGEgc3RyaW5nCiogSGlzdG9yeVBsdWdpbiBub3cgbG9ncyB0cmFuc2FjdGlvbnMgcmF0aGVyIHRoYW4gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyB0byBtb3JlIGFjY3VyYXRlbHkga2VlcCB0cmFjayBvZiB0aGUgcmVxdWVzdHMKICBhbmQgcmVzcG9uc2VzIHRoYXQgYXJlIHNlbnQgb3ZlciB0aGUgd2lyZQoqIEFkZGVkIGBnZXRFZmZlY3RpdmVVcmwoKWAgYW5kIGBnZXRSZWRpcmVjdENvdW50KClgIHRvIFJlc3BvbnNlIG9iamVjdHMKCiMjIDMuNC4zIC0gMjAxMy0wNC0zMAoKKiBCdWcgZml4OiBGaXhpbmcgYnVnIGludHJvZHVjZWQgaW4gMy40LjIgd2hlcmUgcmVkaXJlY3QgcmVzcG9uc2VzIGFyZSBkdXBsaWNhdGVkIG9uIHRoZSBmaW5hbCByZWRpcmVjdGVkIHJlc3BvbnNlCiogQWRkZWQgYSBjaGVjayB0byByZS1leHRyYWN0IHRoZSB0ZW1wIGNhY2VydCBidW5kbGUgZnJvbSB0aGUgcGhhciBiZWZvcmUgc2VuZGluZyBlYWNoIHJlcXVlc3QKCiMjIDMuNC4yIC0gMjAxMy0wNC0yOQoKKiBCdWcgZml4OiBTdHJlYW0gb2JqZWN0cyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCAiYSIgYW5kICJhKyIgbW9kZXMKKiBCdWcgZml4OiBSZW1vdmluZyBgVHJhbnNmZXItRW5jb2Rpbmc6IGNodW5rZWRgIGhlYWRlciB3aGVuIGEgQ29udGVudC1MZW5ndGggaXMgcHJlc2VudAoqIEJ1ZyBmaXg6IEFzeW5jUGx1Z2luIG5vIGxvbmdlciBmb3JjZXMgSEVBRCByZXF1ZXN0cwoqIEJ1ZyBmaXg6IERhdGVUaW1lIHRpbWV6b25lcyBhcmUgbm93IHByb3Blcmx5IGhhbmRsZWQgd2hlbiB1c2luZyB0aGUgc2VydmljZSBkZXNjcmlwdGlvbiBzY2hlbWEgZm9ybWF0dGVyCiogQnVnIGZpeDogQ2FjaGVQbHVnaW4gbm93IHByb3Blcmx5IGhhbmRsZXMgc3RhbGUtaWYtZXJyb3IgZGlyZWN0aXZlcyB3aGVuIGEgcmVxdWVzdCB0byB0aGUgb3JpZ2luIHNlcnZlciBmYWlscwoqIFNldHRpbmcgYSByZXNwb25zZSBvbiBhIHJlcXVlc3Qgd2lsbCB3cml0ZSB0byB0aGUgY3VzdG9tIHJlcXVlc3QgYm9keSBmcm9tIHRoZSByZXNwb25zZSBib2R5IGlmIG9uZSBpcyBzcGVjaWZpZWQKKiBMb2dQbHVnaW4gbm93IHdyaXRlcyB0byBwaHA6Ly9vdXRwdXQgd2hlbiBTVERFUlIgaXMgdW5kZWZpbmVkCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IG11bHRpcGxlIFBPU1QgZmlsZXMgZm9yIHRoZSBzYW1lIGtleSBpbiBhIHNpbmdsZSBjYWxsCiogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIFBPU1RzIG5vdyB1c2UgdGhlIHV0Zi04IGNoYXJzZXQgYnkgZGVmYXVsdAoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHF1ZXVlIEN1cmxFeGNlcHRpb25zIHRvIHRoZSBNb2NrUGx1Z2luCiogQ2xlYW5lZCB1cCBob3cgbWFudWFsIHJlc3BvbnNlcyBhcmUgcXVldWVkIG9uIHJlcXVlc3RzIChyZW1vdmVkICJxdWV1ZWRfcmVzcG9uc2UiIGFuZCBub3cgdXNpbmcgcmVxdWVzdC5iZWZvcmVfc2VuZCkKKiBDb25maWd1cmF0aW9uIGxvYWRpbmcgbm93IGFsbG93cyByZW1vdGUgZmlsZXMKCiMjIDMuNC4xIC0gMjAxMy0wNC0xNgoKKiBMYXJnZSByZWZhY3RvcmluZyB0byBob3cgQ3VybE11bHRpIGhhbmRsZXMgd29yay4gVGhlcmUgaXMgbm93IGEgcHJveHkgdGhhdCBzaXRzIGluIGZyb250IG9mIGEgcG9vbCBvZiBDdXJsTXVsdGkKICBoYW5kbGVzLiBUaGlzIGdyZWF0bHkgc2ltcGxpZmllcyB0aGUgaW1wbGVtZW50YXRpb24sIGZpeGVzIGEgY291cGxlIGJ1Z3MsIGFuZCBwcm92aWRlcyBhIHNtYWxsIHBlcmZvcm1hbmNlIGJvb3N0LgoqIEV4Y2VwdGlvbnMgYXJlIG5vdyBwcm9wZXJseSBncm91cGVkIHdoZW4gc2VuZGluZyByZXF1ZXN0cyBpbiBwYXJhbGxlbAoqIFJlZGlyZWN0cyBhcmUgbm93IHByb3Blcmx5IGFnZ3JlZ2F0ZWQgd2hlbiBhIG11bHRpIHRyYW5zYWN0aW9uIGZhaWxzCiogUmVkaXJlY3RzIG5vdyBzZXQgdGhlIHJlc3BvbnNlIG9uIHRoZSBvcmlnaW5hbCBvYmplY3QgZXZlbiBpbiB0aGUgZXZlbnQgb2YgYSBmYWlsdXJlCiogQnVnIGZpeDogTW9kZWwgbmFtZXMgYXJlIG5vdyBwcm9wZXJseSBzZXQgZXZlbiB3aGVuIHVzaW5nICRyZWZzCiogQWRkZWQgc3VwcG9ydCBmb3IgUEhQIDUuNSdzIEN1cmxGaWxlIHRvIHByZXZlbnQgd2FybmluZ3Mgd2l0aCB0aGUgZGVwcmVjYXRlZCBAIHN5bnRheAoqIEFkZGVkIHN1cHBvcnQgZm9yIG9hdXRoX2NhbGxiYWNrIGluIE9BdXRoIHNpZ25hdHVyZXMKKiBBZGRlZCBzdXBwb3J0IGZvciBvYXV0aF92ZXJpZmllciBpbiBPQXV0aCBzaWduYXR1cmVzCiogQWRkZWQgc3VwcG9ydCB0byBhdHRlbXB0IHRvIHJldHJpZXZlIGEgY29tbWFuZCBmaXJzdCBsaXRlcmFsbHksIHRoZW4gdWNmaXJzdCwgdGhlIHdpdGggaW5mbGVjdGlvbgoKIyMgMy40LjAgLSAyMDEzLTA0LTExCgoqIEJ1ZyBmaXg6IFVSTHMgYXJlIG5vdyByZXNvbHZlZCBjb3JyZWN0bHkgYmFzZWQgb24gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4gIzI4OQoqIEJ1ZyBmaXg6IEFic29sdXRlIFVSTHMgd2l0aCBhIHBhdGggaW4gYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIHdpbGwgbm93IHByb3Blcmx5IG92ZXJyaWRlIHRoZSBiYXNlIFVSTC4gIzI4OQoqIEJ1ZyBmaXg6IFBhcnNpbmcgYSBxdWVyeSBzdHJpbmcgd2l0aCBhIHNpbmdsZSBQSFAgYXJyYXkgdmFsdWUgd2lsbCBub3cgcmVzdWx0IGluIGFuIGFycmF5LiAjMjYzCiogQnVnIGZpeDogQmV0dGVyIG5vcm1hbGl6YXRpb24gb2YgdGhlIFVzZXItQWdlbnQgaGVhZGVyIHRvIHByZXZlbnQgZHVwbGljYXRlIGhlYWRlcnMuICMyNjQuCiogQnVnIGZpeDogQWRkZWQgYG51bWJlcmAgdHlwZSB0byBzZXJ2aWNlIGRlc2NyaXB0aW9ucy4KKiBCdWcgZml4OiBlbXB0eSBwYXJhbWV0ZXJzIGFyZSByZW1vdmVkIGZyb20gYW4gT0F1dGggc2lnbmF0dXJlCiogQnVnIGZpeDogUmV2YWxpZGF0aW5nIGEgY2FjaGUgZW50cnkgcHJlZmVycyB0aGUgTGFzdC1Nb2RpZmllZCBvdmVyIHRoZSBEYXRlIGhlYWRlcgoqIEJ1ZyBmaXg6IEZpeGVkICJhcnJheSB0byBzdHJpbmciIGVycm9yIHdoZW4gdmFsaWRhdGluZyBhIHVuaW9uIG9mIHR5cGVzIGluIGEgc2VydmljZSBkZXNjcmlwdGlvbgoqIEJ1ZyBmaXg6IFJlbW92ZWQgY29kZSB0aGF0IGF0dGVtcHRlZCB0byBkZXRlcm1pbmUgdGhlIHNpemUgb2YgYSBzdHJlYW0gd2hlbiBkYXRhIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbQoqIEJ1ZyBmaXg6IE5vdCBpbmNsdWRpbmcgYW4gYG9hdXRoX3Rva2VuYCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBpbiB0aGUgT2F1dGhQbHVnaW4uCiogQnVnIGZpeDogTm93IGNvcnJlY3RseSBhZ2dyZWdhdGluZyBzdWNjZXNzZnVsIHJlcXVlc3RzIGFuZCBmYWlsZWQgcmVxdWVzdHMgaW4gQ3VybE11bHRpIHdoZW4gYSByZWRpcmVjdCBvY2N1cnMuCiogVGhlIG5ldyBkZWZhdWx0IENVUkxPUFRfVElNRU9VVCBzZXR0aW5nIGhhcyBiZWVuIGluY3JlYXNlZCB0byAxNTAgc2Vjb25kcyBzbyB0aGF0IEd1enpsZSB3b3JrcyBvbiBwb29yIGNvbm5lY3Rpb25zLgoqIEFkZGVkIGEgZmVhdHVyZSB0byBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0OjpzZXRCb2R5KCkgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBDb250ZW50LVR5cGUgb2YgdGhlIHJlcXVlc3QgaWYKICB0aGUgQ29udGVudC1UeXBlIGNhbiBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBlbnRpdHkgYm9keSBvciB0aGUgcGF0aCBvZiB0aGUgcmVxdWVzdC4KKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBvdmVyd3JpdGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBpbiBhIGNsaWVudCB3aGVuIGdyYWJiaW5nIGEgdGhyb3dhd2F5IGNsaWVudCBmcm9tIGEgYnVpbGRlci4KKiBBZGRlZCBzdXBwb3J0IGZvciBhIFBTUi0zIExvZ0FkYXB0ZXIuCiogQWRkZWQgYSBgY29tbWFuZC5hZnRlcl9wcmVwYXJlYCBldmVudAoqIEFkZGVkIGBvYXV0aF9jYWxsYmFja2AgcGFyYW1ldGVyIHRvIHRoZSBPYXV0aFBsdWdpbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhIGN1c3RvbSBzdHJlYW0gY2xhc3Mgd2hlbiB1c2luZyBhIHN0cmVhbSBmYWN0b3J5CiogQWRkZWQgYSBDYWNoaW5nRW50aXR5Qm9keSBkZWNvcmF0b3IKKiBBZGRlZCBzdXBwb3J0IGZvciBgYWRkaXRpb25hbFBhcmFtZXRlcnNgIGluIHNlcnZpY2UgZGVzY3JpcHRpb25zIHRvIGRlZmluZSBob3cgY3VzdG9tIHBhcmFtZXRlcnMgYXJlIHNlcmlhbGl6ZWQuCiogVGhlIGJ1bmRsZWQgU1NMIGNlcnRpZmljYXRlIGlzIG5vdyBwcm92aWRlZCBpbiB0aGUgcGhhciBmaWxlIGFuZCBleHRyYWN0ZWQgd2hlbiBydW5uaW5nIEd1enpsZSBmcm9tIGEgcGhhci4KKiBZb3UgY2FuIG5vdyBzZW5kIGFueSBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IHdpdGggUE9TVCBmaWVsZHMgb3IgUE9TVCBmaWxlcyBhbmQgY1VSTCB3aWxsIGhhbmRsZSBjcmVhdGluZyBib2RpZXMKKiBQT1NUIHJlcXVlc3RzIHVzaW5nIGEgY3VzdG9tIGVudGl0eSBib2R5IGFyZSBub3cgdHJlYXRlZCBleGFjdGx5IGxpa2UgUFVUIHJlcXVlc3RzIGJ1dCB3aXRoIGEgY3VzdG9tIGNVUkwgbWV0aG9kLiBUaGlzCiAgbWVhbnMgdGhhdCB0aGUgcmVkaXJlY3QgYmVoYXZpb3Igb2YgUE9TVCByZXF1ZXN0cyB3aXRoIGN1c3RvbSBib2RpZXMgd2lsbCBub3QgYmUgdGhlIHNhbWUgYXMgUE9TVCByZXF1ZXN0cyB0aGF0IHVzZQogIFBPU1QgZmllbGRzIG9yIGZpbGVzICh0aGUgbGF0dGVyIGlzIG9ubHkgdXNlZCB3aGVuIGVtdWxhdGluZyBhIGZvcm0gUE9TVCBpbiB0aGUgYnJvd3NlcikuCiogTG90cyBvZiBjbGVhbnVwIHRvIEN1cmxIYW5kbGU6OmZhY3RvcnkgYW5kIFJlcXVlc3RGYWN0b3J5OjpjcmVhdGVSZXF1ZXN0CgojIyAzLjMuMSAtIDIwMTMtMDMtMTAKCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIFBIUCBzdHJlYW1pbmcgcmVzcG9uc2VzIGZyb20gSFRUUCByZXF1ZXN0cwoqIEJ1ZyBmaXg6IFJ1bm5pbmcgYW55IGZpbHRlcnMgd2hlbiBwYXJzaW5nIHJlc3BvbnNlIGhlYWRlcnMgd2l0aCBzZXJ2aWNlIGRlc2NyaXB0aW9ucwoqIEJ1ZyBmaXg6IE9hdXRoUGx1Z2luIGZpeGVzIHRvIGFsbG93IGZvciBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSBzaWduaW5nLCBhbmQgc29ydGluZyBwYXJhbWV0ZXJzIGJlZm9yZSBzaWduaW5nCiogQnVnIGZpeDogUmVtb3ZlZCB0aGUgYWRkaW5nIG9mIGRlZmF1bHQgZW1wdHkgYXJyYXlzIGFuZCBmYWxzZSBCb29sZWFucyB0byByZXNwb25zZXMgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudCBhY3Jvc3MKICByZXNwb25zZSBsb2NhdGlvbiB2aXNpdG9ycy4KKiBCdWcgZml4OiBSZW1vdmVkIHRoZSBwb3NzaWJpbGl0eSBvZiBjcmVhdGluZyBjb25maWd1cmF0aW9uIGZpbGVzIHdpdGggY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiogUmVxdWVzdEZhY3Rvcnk6OmNyZWF0ZSgpIG5vdyB1c2VzIHRoZSBrZXkgb2YgYSBQT1NUIGZpbGUgd2hlbiBzZXR0aW5nIHRoZSBQT1NUIGZpbGUgbmFtZQoqIEFkZGVkIHhtbEFsbG93RW1wdHkgdG8gc2VyaWFsaXplIGFuIFhNTCBib2R5IGV2ZW4gaWYgbm8gWE1MIHNwZWNpZmljIHBhcmFtZXRlcnMgYXJlIHNldAoKIyMgMy4zLjAgLSAyMDEzLTAzLTAzCgoqIEEgbGFyZ2UgbnVtYmVyIG9mIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgaGF2ZSBiZWVuIG1hZGUKKiBCdWcgZml4OiBBZGRlZCAnd2InIGFzIGEgdmFsaWQgd3JpdGUgbW9kZSBmb3Igc3RyZWFtcwoqIEJ1ZyBmaXg6IGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpqc29uKClgIG5vdyBhbGxvd3Mgc2NhbGFyIHZhbHVlcyB0byBiZSByZXR1cm5lZAoqIEJ1ZyBmaXg6IEZpeGVkIGJ1ZyBpbiBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXNwb25zZWAgd2hlcmUgd3JhcHBpbmcgcXVvdGVzIHdlcmUgc3RyaXBwZWQgZnJvbSBgZ2V0RXRhZygpYAoqIEJDOiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxVdGlsc2AgY2xhc3MKKiBCQzogU2V0dGluZyBhIHNlcnZpY2UgZGVzY3JpcHRpb24gb24gYSBjbGllbnQgd2lsbCBubyBsb25nZXIgbW9kaWZ5IHRoZSBjbGllbnQncyBjb21tYW5kIGZhY3Rvcmllcy4KKiBCQzogRW1pdHRpbmcgSU8gZXZlbnRzIGZyb20gYSBSZXF1ZXN0TWVkaWF0b3IgaXMgbm93IGEgcGFyYW1ldGVyIHRoYXQgbXVzdCBiZSBzZXQgaW4gYSByZXF1ZXN0J3MgY3VybCBvcHRpb25zIHVzaW5nCiAgdGhlICdlbWl0X2lvJyBrZXkuIFRoaXMgd2FzIHByZXZpb3VzbHkgc2V0IHVuZGVyIGEgcmVxdWVzdCdzIHBhcmFtZXRlcnMgdXNpbmcgJ2N1cmwuZW1pdF9pbycKKiBCQzogYEd1enpsZVxTdHJlYW1cU3RyZWFtOjpnZXRXcmFwcGVyKClgIGFuZCBgR3V6emxlXFN0cmVhbVxTdHJlYW06OmdldFN0ZWFtVHlwZSgpYCBhcmUgbm8gbG9uZ2VyIGNvbnZlcnRlZCB0bwogIGxvd2VyY2FzZQoqIE9wZXJhdGlvbiBwYXJhbWV0ZXIgb2JqZWN0cyBhcmUgbm93IGxhenkgbG9hZGVkIGludGVybmFsbHkKKiBBZGRlZCBFcnJvclJlc3BvbnNlUGx1Z2luIHRoYXQgY2FuIHRocm93IGVycm9ycyBmb3IgcmVzcG9uc2VzIGRlZmluZWQgaW4gc2VydmljZSBkZXNjcmlwdGlvbiBvcGVyYXRpb25zJyBlcnJvclJlc3BvbnNlcwoqIEFkZGVkIHN1cHBvcnQgZm9yIGluc3RhbnRpYXRpbmcgcmVzcG9uc2VUeXBlPWNsYXNzIHJlc3BvbnNlQ2xhc3MgY2xhc3Nlcy4gQ2xhc3NlcyBtdXN0IGltcGxlbWVudAogIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXFJlc3BvbnNlQ2xhc3NJbnRlcmZhY2VgCiogQWRkZWQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbFByb3BlcnRpZXMgZm9yIHRvcC1sZXZlbCBwYXJhbWV0ZXJzIGluIHJlc3BvbnNlVHlwZT1tb2RlbCByZXNwb25zZUNsYXNzZXMuIFRoZXNlCiAgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFsc28gc3VwcG9ydCBsb2NhdGlvbnMgYW5kIGNhbiBiZSB1c2VkIHRvIHBhcnNlIEpTT04gcmVzcG9uc2VzIHdoZXJlIHRoZSBvdXRlcm1vc3QgcGFydCBvZiB0aGUKICBKU09OIGlzIGFuIGFycmF5CiogQWRkZWQgc3VwcG9ydCBmb3IgbmVzdGVkIHJlbmFtaW5nIG9mIEpTT04gbW9kZWxzIChyZW5hbWUgc2VudEFzIHRvIG5hbWUpCiogQ2FjaGVQbHVnaW4KICAgICogQWRkZWQgc3VwcG9ydCBmb3Igc3RhbGUtaWYtZXJyb3Igc28gdGhhdCB0aGUgQ2FjaGVQbHVnaW4gY2FuIG5vdyBzZXJ2ZSBzdGFsZSBjb250ZW50IGZyb20gdGhlIGNhY2hlIG9uIGVycm9yCiAgICAqIERlYnVnIGhlYWRlcnMgY2FuIG5vdyBhZGRlZCB0byBjYWNoZWQgcmVzcG9uc2UgaW4gdGhlIENhY2hlUGx1Z2luCgojIyAzLjIuMCAtIDIwMTMtMDItMTQKCiogQ3VybE11bHRpIGlzIG5vIGxvbmdlciByZXVzZWQgZ2xvYmFsbHkuIEEgbmV3IG11bHRpIG9iamVjdCBpcyBjcmVhdGVkIHBlci1jbGllbnQuIFRoaXMgaGVscHMgdG8gaXNvbGF0ZSBjbGllbnRzLgoqIFVSTHMgd2l0aCBubyBwYXRoIG5vIGxvbmdlciBjb250YWluIGEgIi8iIGJ5IGRlZmF1bHQKKiBHdXp6bGVcSHR0cFxRdWVyeVN0cmluZyBkb2VzIG5vIGxvbmdlciBtYW5hZ2VzIHRoZSBsZWFkaW5nICI/Ii4gVGhpcyBpcyBub3cgaGFuZGxlZCBpbiBHdXp6bGVcSHR0cFxVcmwuCiogQmFkUmVzcG9uc2VFeGNlcHRpb24gbm8gbG9uZ2VyIGluY2x1ZGVzIHRoZSBmdWxsIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG1lc3NhZ2UKKiBBZGRpbmcgc2V0RGF0YSgpIHRvIEd1enpsZVxTZXJ2aWNlXERlc2NyaXB0aW9uXFNlcnZpY2VEZXNjcmlwdGlvbkludGVyZmFjZQoqIEFkZGluZyBnZXRSZXNwb25zZUJvZHkoKSB0byBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2UKKiBWYXJpb3VzIHVwZGF0ZXMgdG8gY2xhc3NlcyB0byB1c2UgU2VydmljZURlc2NyaXB0aW9uSW50ZXJmYWNlIHR5cGUgaGludHMgcmF0aGVyIHRoYW4gU2VydmljZURlc2NyaXB0aW9uCiogSGVhZGVyIHZhbHVlcyBjYW4gbm93IGJlIG5vcm1hbGl6ZWQgaW50byBkaXN0aW5jdCB2YWx1ZXMgd2hlbiBtdWx0aXBsZSBoZWFkZXJzIGFyZSBjb21iaW5lZCB3aXRoIGEgY29tbWEgc2VwYXJhdGVkIGxpc3QKKiB4bWxFbmNvZGluZyBjYW4gbm93IGJlIGN1c3RvbWl6ZWQgZm9yIHRoZSBYTUwgZGVjbGFyYXRpb24gb2YgYSBYTUwgc2VydmljZSBkZXNjcmlwdGlvbiBvcGVyYXRpb24KKiBHdXp6bGVcSHR0cFxRdWVyeVN0cmluZyBub3cgdXNlcyBHdXp6bGVcSHR0cFxRdWVyeUFnZ3JlZ2F0b3JcUXVlcnlBZ2dyZWdhdG9ySW50ZXJmYWNlIG9iamVjdHMgdG8gYWRkIGN1c3RvbSB2YWx1ZQogIGFnZ3JlZ2F0aW9uIGFuZCBubyBsb25nZXIgdXNlcyBjYWxsYmFja3MKKiBUaGUgVVJMIGVuY29kaW5nIGltcGxlbWVudGF0aW9uIG9mIEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nIGNhbiBub3cgYmUgY3VzdG9taXplZAoqIEJ1ZyBmaXg6IEZpbHRlcnMgd2VyZSBub3QgYWx3YXlzIGludm9rZWQgZm9yIGFycmF5IHNlcnZpY2UgZGVzY3JpcHRpb24gcGFyYW1ldGVycwoqIEJ1ZyBmaXg6IFJlZGlyZWN0cyBub3cgdXNlIGEgdGFyZ2V0IHJlc3BvbnNlIGJvZHkgcmF0aGVyIHRoYW4gYSB0ZW1wb3JhcnkgcmVzcG9uc2UgYm9keQoqIEJ1ZyBmaXg6IFRoZSBkZWZhdWx0IGV4cG9uZW50aWFsIGJhY2tvZmYgQmFja29mZlBsdWdpbiB3YXMgbm90IGdpdmluZyB3aGVuIHRoZSByZXF1ZXN0IHRocmVzaG9sZCB3YXMgZXhjZWVkZWQKKiBCdWcgZml4OiBHdXp6bGUgbm93IHRha2VzIHRoZSBmaXJzdCBmb3VuZCB2YWx1ZSB3aGVuIGdyYWJiaW5nIENhY2hlLUNvbnRyb2wgZGlyZWN0aXZlcwoKIyMgMy4xLjIgLSAyMDEzLTAxLTI3CgoqIFJlZmFjdG9yZWQgaG93IG9wZXJhdGlvbiByZXNwb25zZXMgYXJlIHBhcnNlZC4gVmlzaXRvcnMgbm93IGluY2x1ZGUgYSBiZWZvcmUoKSBtZXRob2QgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhlCiAgcmVzcG9uc2UgYm9keS4gRm9yIGV4YW1wbGUsIHRoZSBYbWxWaXNpdG9yIG5vdyBwYXJzZXMgdGhlIFhNTCByZXNwb25zZSBpbnRvIGFuIGFycmF5IGluIHRoZSBiZWZvcmUoKSBtZXRob2QuCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgY1VSTCB3b3VsZCBub3QgYXV0b21hdGljYWxseSBkZWNvbXByZXNzIHJlc3BvbnNlcyB3aGVuIHRoZSBBY2NlcHQtRW5jb2RpbmcgaGVhZGVyIHdhcyBzZW50CiogQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCBpcyBuZXZlciBzZXQgdG8gMSBiZWNhdXNlIGl0IGlzIGRlcHJlY2F0ZWQgKHNlZSA1ZTBmZjJlZjIwZjgzOWUxOWQxZWViMjk4ZjkwYmEzNTk4Nzg0NDQ0KQoqIEZpeGVkIGEgYnVnIHdoZXJlIHJlZGlyZWN0IHJlc3BvbnNlcyB3ZXJlIG5vdCBjaGFpbmVkIGNvcnJlY3RseSB1c2luZyBnZXRQcmV2aW91c1Jlc3BvbnNlKCkKKiBTZXR0aW5nIGRlZmF1bHQgaGVhZGVycyBvbiBhIGNsaWVudCBhZnRlciBzZXR0aW5nIHRoZSB1c2VyLWFnZW50IHdpbGwgbm90IGVyYXNlIHRoZSB1c2VyLWFnZW50IHNldHRpbmcKCiMjIDMuMS4xIC0gMjAxMy0wMS0yMAoKKiBBZGRpbmcgd2lsZGNhcmQgc3VwcG9ydCB0byBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmdldFBhdGgoKQoqIEFkZGluZyBhbGlhcyBzdXBwb3J0IHRvIFNlcnZpY2VCdWlsZGVyIGNvbmZpZ3MKKiBBZGRpbmcgR3V6emxlXFNlcnZpY2VcUmVzb3VyY2VcQ29tcG9zaXRlUmVzb3VyY2VJdGVyYXRvckZhY3RvcnkgYW5kIGNsZWFuaW5nIHVwIGZhY3RvcnkgaW50ZXJmYWNlCgojIyAzLjEuMCAtIDIwMTMtMDEtMTIKCiogQkM6IEN1cmxFeGNlcHRpb24gbm93IGV4dGVuZHMgZnJvbSBSZXF1ZXN0RXhjZXB0aW9uIHJhdGhlciB0aGFuIEJhZFJlc3BvbnNlRXhjZXB0aW9uCiogQkM6IFJlbmFtZWQgR3V6emxlXFBsdWdpblxDYWNoZVxDYW5DYWNoZVN0cmF0ZWd5SW50ZXJmYWNlOjpjYW5DYWNoZSgpIHRvIGNhbkNhY2hlUmVxdWVzdCgpIGFuZCBhZGRlZCBDYW5DYWNoZVJlc3BvbnNlKCkKKiBBZGRlZCBnZXREYXRhIHRvIFNlcnZpY2VEZXNjcmlwdGlvbkludGVyZmFjZQoqIEFkZGVkIGNvbnRleHQgYXJyYXkgdG8gUmVxdWVzdEludGVyZmFjZTo6c2V0U3RhdGUoKQoqIEJ1ZzogUmVtb3ZpbmcgaGFyZCBkZXBlbmRlbmN5IG9uIHRoZSBCYWNrb2ZmUGx1Z2luIGZyb20gR3V6emxlXEh0dHAKKiBCdWc6IEFkZGluZyByZXF1aXJlZCBjb250ZW50LXR5cGUgd2hlbiBKU09OIHJlcXVlc3QgdmlzaXRvciBhZGRzIEpTT04gdG8gYSBjb21tYW5kCiogQnVnOiBGaXhpbmcgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIHdpdGggY3VzdG9tIGRhdGEKKiBNYWRlIGl0IGVhc2llciB0byBkZWFsIHdpdGggZXhjZXB0aW9ucyB0aHJvd24gd2hlbiB0cmFuc2ZlcnJpbmcgY29tbWFuZHMgb3IgcmVxdWVzdHMgaW4gcGFyYWxsZWwgYnkgcHJvdmlkaW5nCiAgYW4gYXJyYXkgb2Ygc3VjY2Vzc2Z1bCBhbmQgZmFpbGVkIHJlc3BvbnNlcwoqIE1vdmVkIGdldFBhdGggZnJvbSBHdXp6bGVcU2VydmljZVxSZXNvdXJjZVxNb2RlbCB0byBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb24KKiBBZGRlZCBHdXp6bGVcSHR0cFxJb0VtaXR0aW5nRW50aXR5Qm9keQoqIE1vdmVkIGNvbW1hbmQgZmlsdHJhdGlvbiBmcm9tIHZhbGlkYXRvcnMgdG8gbG9jYXRpb24gdmlzaXRvcnMKKiBBZGRlZCBgZXh0ZW5kc2AgYXR0cmlidXRlcyB0byBzZXJ2aWNlIGRlc2NyaXB0aW9uIHBhcmFtZXRlcnMKKiBBZGRlZCBnZXRNb2RlbHMgdG8gU2VydmljZURlc2NyaXB0aW9uSW50ZXJmYWNlCgojIyAzLjAuNyAtIDIwMTItMTItMTkKCiogRml4aW5nIHBoYXIgZGV0ZWN0aW9uIHdoZW4gZm9yY2luZyBhIGNhY2VydCB0byBzeXN0ZW0gaWYgbnVsbCBvciB0cnVlCiogQWxsb3dpbmcgZmlsZW5hbWUgdG8gYmUgcGFzc2VkIHRvIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnNldFJlc3BvbnNlQm9keSgpYAoqIENsZWFuaW5nIHVwIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmluamVjdGAgbWV0aG9kCiogQWRkaW5nIGEgcmVzcG9uc2VfYm9keSBsb2NhdGlvbiB0byBzZXJ2aWNlIGRlc2NyaXB0aW9ucwoKIyMgMy4wLjYgLSAyMDEyLTEyLTA5CgoqIEN1cmxNdWx0aSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMKKiBBZGRpbmcgc2V0RXJyb3JSZXNwb25zZXMoKSB0byBPcGVyYXRpb24KKiBjb21wb3Nlci5qc29uIHR3ZWFrcwoKIyMgMy4wLjUgLSAyMDEyLTExLTE4CgoqIEJ1ZzogRml4aW5nIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBidWcgY2F1c2VkIGZyb20gcmV2YWxpZGF0aW5nIHdpdGggdGhlIENhY2hlUGx1Z2luCiogQnVnOiBSZXNwb25zZSBib2R5IGNhbiBub3cgYmUgYSBzdHJpbmcgY29udGFpbmluZyAiMCIKKiBCdWc6IFVzaW5nIEd1enpsZSBpbnNpZGUgb2YgYSBwaGFyIHVzZXMgc3lzdGVtIGJ5IGRlZmF1bHQgYnV0IG5vdyBhbGxvd3MgZm9yIGEgY3VzdG9tIGNhY2VydAoqIEJ1ZzogUXVlcnlTdHJpbmc6OmZyb21TdHJpbmcgbm93IHByb3Blcmx5IHBhcnNlcyBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycyB0aGF0IGNvbnRhaW4gZXF1YWwgc2lnbnMKKiBBZGRlZCBzdXBwb3J0IGZvciBYTUwgYXR0cmlidXRlcyBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9uIHJlc3BvbnNlcwoqIERlZmF1bHRSZXF1ZXN0U2VyaWFsaXplciBub3cgc3VwcG9ydHMgYXJyYXkgVVJJIHBhcmFtZXRlciB2YWx1ZXMgZm9yIFVSSSB0ZW1wbGF0ZSBleHBhbnNpb24KKiBBZGRlZCBiZXR0ZXIgbWltZXR5cGUgZ3Vlc3NpbmcgdG8gcmVxdWVzdHMgYW5kIHBvc3QgZmlsZXMKCiMjIDMuMC40IC0gMjAxMi0xMS0xMQoKKiBCdWc6IEZpeGVkIGEgYnVnIHdoZW4gYWRkaW5nIG11bHRpcGxlIGNvb2tpZXMgdG8gYSByZXF1ZXN0IHRvIHVzZSB0aGUgY29ycmVjdCBnbHVlIHZhbHVlCiogQnVnOiBDb29raWVzIGNhbiBub3cgYmUgYWRkZWQgdGhhdCBoYXZlIGEgbmFtZSwgZG9tYWluLCBvciB2YWx1ZSBzZXQgdG8gIjAiCiogQnVnOiBVc2luZyB0aGUgc3lzdGVtIGNhY2VydCBidW5kbGUgd2hlbiB1c2luZyB0aGUgUGhhcgoqIEFkZGVkIGpzb24gYW5kIHhtbCBtZXRob2RzIHRvIFJlc3BvbnNlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHBhcnNlIEpTT04gYW5kIFhNTCByZXNwb25zZSBkYXRhIGludG8gZGF0YSBzdHJ1Y3R1cmVzCiogRW5oYW5jZWQgY29va2llIGphciBkZS1kdXBsaWNhdGlvbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGVuYWJsZSBzdHJpY3QgY29va2llIGphcnMgdGhhdCB0aHJvdyBleGNlcHRpb25zIHdoZW4gaW52YWxpZCBjb29raWVzIGFyZSBhZGRlZAoqIEFkZGVkIHNldFN0cmVhbSB0byBTdHJlYW1JbnRlcmZhY2UgdG8gYWN0dWFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgY3VzdG9tIHJld2luZCBiZWhhdmlvciBmb3IgZW50aXR5IGJvZGllcwoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhbnkgc29ydCBvZiBoYXNoIGZvciBhIHN0cmVhbSByYXRoZXIgdGhhbiBqdXN0IGFuIE1ENSBoYXNoCgojIyAzLjAuMyAtIDIwMTItMTEtMDQKCiogSW1wbGVtZW50aW5nIHJlZGlyZWN0cyBpbiBQSFAgcmF0aGVyIHRoYW4gY1VSTAoqIEFkZGVkIFBFQ0wgVVJJIHRlbXBsYXRlIGV4dGVuc2lvbiBhbmQgdXNpbmcgYXMgZGVmYXVsdCBwYXJzZXIgaWYgYXZhaWxhYmxlCiogQnVnOiBGaXhlZCBDb250ZW50LUxlbmd0aCBwYXJzaW5nIG9mIFJlc3BvbnNlIGZhY3RvcnkKKiBBZGRpbmcgcmV3aW5kKCkgbWV0aG9kIHRvIGVudGl0eSBib2RpZXMgYW5kIHN0cmVhbXMuIEFsbG93cyBmb3IgY3VzdG9tIHJld2luZGluZyBvZiBub24tcmVwZWF0YWJsZSBzdHJlYW1zLgoqIEFkZGluZyBUb0FycmF5SW50ZXJmYWNlIHRocm91Z2hvdXQgbGlicmFyeQoqIEZpeGluZyBPYXV0aFBsdWdpbiB0byBjcmVhdGUgdW5pcXVlIG5vbmNlIHZhbHVlcyBwZXIgcmVxdWVzdAoKIyMgMy4wLjIgLSAyMDEyLTEwLTI1CgoqIE1hZ2ljIG1ldGhvZHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBjbGllbnRzCiogTWFnaWMgbWV0aG9kcyByZXR1cm4gdGhlIHJlc3VsdCBvZiBhIGNvbW1hbmQKKiBTZXJ2aWNlIGNsaWVudHMgbm8gbG9uZ2VyIHJlcXVpcmUgYSBiYXNlX3VybCBvcHRpb24gaW4gdGhlIGZhY3RvcnkKKiBCdWc6IEZpeGVkIGFuIGlzc3VlIHdpdGggVVJJIHRlbXBsYXRlcyB3aGVyZSBudWxsIHRlbXBsYXRlIHZhcmlhYmxlcyB3ZXJlIGJlaW5nIGV4cGFuZGVkCgojIyAzLjAuMSAtIDIwMTItMTAtMjIKCiogTW9kZWxzIGNhbiBub3cgYmUgdXNlZCBsaWtlIHJlZ3VsYXIgY29sbGVjdGlvbiBvYmplY3RzIGJ5IGNhbGxpbmcgZmlsdGVyLCBtYXAsIGV0Yy4KKiBNb2RlbHMgbm8gbG9uZ2VyIHJlcXVpcmUgYSBQYXJhbWV0ZXIgc3RydWN0dXJlIG9yIGluaXRpYWwgZGF0YSBpbiB0aGUgY29uc3RydWN0b3IKKiBBZGRlZCBhIGN1c3RvbSBBcHBlbmRJdGVyYXRvciB0byBnZXQgYXJvdW5kIGEgUEhQIGJ1ZyB3aXRoIHRoZSBgXEFwcGVuZEl0ZXJhdG9yYAoKIyMgMy4wLjAgLSAyMDEyLTEwLTE1CgoqIFJld3JvdGUgc2VydmljZSBkZXNjcmlwdGlvbiBmb3JtYXQgdG8gYmUgYmFzZWQgb24gU3dhZ2dlcgogICAgKiBOb3cgYmFzZWQgb24gSlNPTiBzY2hlbWEKICAgICogQWRkZWQgbmVzdGVkIGlucHV0IHN0cnVjdHVyZXMgYW5kIG5lc3RlZCByZXNwb25zZSBtb2RlbHMKICAgICogU3VwcG9ydCBmb3IgSlNPTiBhbmQgWE1MIGlucHV0IGFuZCBvdXRwdXQgbW9kZWxzCiAgICAqIFJlbmFtZWQgYGNvbW1hbmRzYCB0byBgb3BlcmF0aW9uc2AKICAgICogUmVtb3ZlZCBkb3QgY2xhc3Mgbm90YXRpb24KICAgICogUmVtb3ZlZCBjdXN0b20gdHlwZXMKKiBCcm9rZSB0aGUgcHJvamVjdCBpbnRvIHNtYWxsZXIgdG9wLWxldmVsIG5hbWVzcGFjZXMgdG8gYmUgbW9yZSBjb21wb25lbnQgZnJpZW5kbHkKKiBSZW1vdmVkIHN1cHBvcnQgZm9yIFhNTCBjb25maWdzIGFuZCBkZXNjcmlwdGlvbnMuIFVzZSBhcnJheXMgb3IgSlNPTiBmaWxlcy4KKiBSZW1vdmVkIHRoZSBWYWxpZGF0aW9uIGNvbXBvbmVudCBhbmQgSW5zcGVjdG9yCiogTW92ZWQgYWxsIGNvb2tpZSBjb2RlIHRvIEd1enpsZVxQbHVnaW5cQ29va2llCiogTWFnaWMgbWV0aG9kcyBvbiBhIEd1enpsZVxTZXJ2aWNlXENsaWVudCBub3cgcmV0dXJuIHRoZSBjb21tYW5kIHVuLWV4ZWN1dGVkLgoqIENhbGxpbmcgZ2V0UmVzdWx0KCkgb3IgZ2V0UmVzcG9uc2UoKSBvbiBhIGNvbW1hbmQgd2lsbCBsYXppbHkgZXhlY3V0ZSB0aGUgY29tbWFuZCBpZiBuZWVkZWQuCiogTm93IHNoaXBwaW5nIHdpdGggY1VSTCdzIENBIGNlcnRzIGFuZCB1c2luZyBpdCBieSBkZWZhdWx0CiogQWRkZWQgcHJldmlvdXNSZXNwb25zZSgpIG1ldGhvZCB0byByZXNwb25zZSBvYmplY3RzCiogTm8gbG9uZ2VyIHNlbmRpbmcgQWNjZXB0IGFuZCBBY2NlcHQtRW5jb2RpbmcgaGVhZGVycyBvbiBldmVyeSByZXF1ZXN0CiogT25seSBzZW5kaW5nIGFuIEV4cGVjdCBoZWFkZXIgYnkgZGVmYXVsdCB3aGVuIGEgcGF5bG9hZCBpcyBncmVhdGVyIHRoYW4gMU1CCiogQWRkZWQvbW92ZWQgY2xpZW50IG9wdGlvbnM6CiAgICAqIGN1cmwuYmxhY2tsaXN0IHRvIGN1cmwub3B0aW9uLmJsYWNrbGlzdAogICAgKiBBZGRlZCBzc2wuY2VydGlmaWNhdGVfYXV0aG9yaXR5CiogQWRkZWQgYSBHdXp6bGVcSXRlcmF0b3IgY29tcG9uZW50CiogTW92ZWQgcGx1Z2lucyBmcm9tIEd1enpsZVxIdHRwXFBsdWdpbiB0byBHdXp6bGVcUGx1Z2luCiogQWRkZWQgYSBtb3JlIHJvYnVzdCBiYWNrb2ZmIHJldHJ5IHN0cmF0ZWd5IChyZXBsYWNlZCB0aGUgRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luKQoqIEFkZGVkIGEgbW9yZSByb2J1c3QgY2FjaGluZyBwbHVnaW4KKiBBZGRlZCBzZXRCb2R5IHRvIHJlc3BvbnNlIG9iamVjdHMKKiBVcGRhdGluZyBMb2dQbHVnaW4gdG8gdXNlIGEgbW9yZSBmbGV4aWJsZSBNZXNzYWdlRm9ybWF0dGVyCiogQWRkZWQgYSBjb21wbGV0ZWx5IHJldmFtcGVkIGJ1aWxkIHByb2Nlc3MKKiBDbGVhbmluZyB1cCBDb2xsZWN0aW9uIGNsYXNzIGFuZCByZW1vdmluZyBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBnZXQgbWV0aG9kCiogRml4ZWQgWkYyIGNhY2hlIGFkYXB0ZXJzCgojIyAyLjguOCAtIDIwMTItMTAtMTUKCiogQnVnOiBGaXhlZCBhIGNvb2tpZSBpc3N1ZSB0aGF0IGNhdXNlZCBkb3QgcHJlZml4ZWQgZG9tYWlucyB0byBub3QgbWF0Y2ggd2hlcmUgcG9wdWxhciBicm93c2VycyBkaWQKCiMjIDIuOC43IC0gMjAxMi0wOS0zMAoKKiBCdWc6IEZpeGVkIGNvbmZpZyBmaWxlIGFsaWFzZXMgZm9yIEpTT04gaW5jbHVkZXMKKiBCdWc6IEZpeGVkIGNvb2tpZSBidWcgb24gYSByZXF1ZXN0IG9iamVjdCBieSB1c2luZyBDb29raWVQYXJzZXIgdG8gcGFyc2UgY29va2llcyBvbiByZXF1ZXN0cwoqIEJ1ZzogUmVtb3ZpbmcgdGhlIHBhdGggdG8gYSBmaWxlIHdoZW4gc2VuZGluZyBhIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyIG9uIGEgUE9TVCB1cGxvYWQKKiBCdWc6IEhhcmRlbmluZyByZXF1ZXN0IGFuZCByZXNwb25zZSBwYXJzaW5nIHRvIGFjY291bnQgZm9yIG1pc3NpbmcgcGFydHMKKiBCdWc6IEZpeGVkIFBFQVIgcGFja2FnaW5nCiogQnVnOiBGaXhlZCBSZXF1ZXN0OjpnZXRJbmZvCiogQnVnOiBGaXhlZCBjYXNlcyB3aGVyZSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0gcmV0dXJuIGNvZGVzIHdlcmUgY2F1c2luZyBjdXJsIHRyYW5zYWN0aW9ucyB0byBmYWlsCiogQWRkaW5nIHRoZSBhYmlsaXR5IGZvciB0aGUgbmFtZXNwYWNlIEl0ZXJhdG9yIGZhY3RvcnkgdG8gbG9vayBpbiBtdWx0aXBsZSBkaXJlY3RvcmllcwoqIEFkZGVkIG1vcmUgZ2V0dGVycy9zZXR0ZXJzL3JlbW92ZXJzIGZyb20gc2VydmljZSBkZXNjcmlwdGlvbnMKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byByZW1vdmUgUE9TVCBmaWVsZHMgZnJvbSBPQXV0aCBzaWduYXR1cmVzCiogT0F1dGggcGx1Z2luIG5vdyBzdXBwb3J0cyAyLWxlZ2dlZCBPQXV0aAoKIyMgMi44LjYgLSAyMDEyLTA5LTA1CgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSBhbmQgYnVpbGQgc2VydmljZSBkZXNjcmlwdGlvbnMKKiBBZGRlZCB0aGUgdXNlIG9mIHZpc2l0b3JzIHRvIGFwcGx5IHBhcmFtZXRlcnMgdG8gbG9jYXRpb25zIGluIHNlcnZpY2UgZGVzY3JpcHRpb25zIHVzaW5nIHRoZSBkeW5hbWljIGNvbW1hbmQKKiBBZGRlZCBhIGBqc29uYCBwYXJhbWV0ZXIgbG9jYXRpb24KKiBOb3cgYWxsb3dpbmcgZG90IG5vdGF0aW9uIGZvciBjbGFzc2VzIGluIHRoZSBDYWNoZUFkYXB0ZXJGYWN0b3J5CiogVXNpbmcgdGhlIHVuaW9uIG9mIHR3byBhcnJheXMgcmF0aGVyIHRoYW4gYW4gYXJyYXlfbWVyZ2Ugd2hlbiBleHRlbmRpbmcgc2VydmljZSBidWlsZGVyIHNlcnZpY2VzIGFuZCBzZXJ2aWNlIHBhcmFtcwoqIEVuc3VyaW5nIHRoYXQgYSBzZXJ2aWNlIGlzIGEgc3RyaW5nIGJlZm9yZSBkb2luZyBzdHJwb3MoKSBjaGVja3Mgb24gaXQgd2hlbiBzdWJzdGl0dXRpbmcgc2VydmljZXMgZm9yIHJlZmVyZW5jZXMKICBpbiBzZXJ2aWNlIGJ1aWxkZXIgY29uZmlnIGZpbGVzLgoqIFNlcnZpY2VzIGRlZmluZWQgaW4gdHdvIGRpZmZlcmVudCBjb25maWcgZmlsZXMgdGhhdCBpbmNsdWRlIG9uZSBhbm90aGVyIHdpbGwgYnkgZGVmYXVsdCByZXBsYWNlIHRoZSBwcmV2aW91c2x5CiAgZGVmaW5lZCBzZXJ2aWNlLCBidXQgeW91IGNhbiBub3cgY3JlYXRlIHNlcnZpY2VzIHRoYXQgZXh0ZW5kIHRoZW1zZWx2ZXMgYW5kIG1lcmdlIHRoZWlyIHNldHRpbmdzIG92ZXIgdGhlIHByZXZpb3VzCiogVGhlIEpzb25Mb2FkZXIgbm93IHN1cHBvcnRzIGFsaWFzaW5nIGZpbGVuYW1lcyB3aXRoIGRpZmZlcmVudCBmaWxlbmFtZXMuIFRoaXMgYWxsb3dzIHlvdSB0byBhbGlhcyBzb21ldGhpbmcgbGlrZQogICdfZGVmYXVsdCcgd2l0aCBhIGRlZmF1bHQgSlNPTiBjb25maWd1cmF0aW9uIGZpbGUuCgojIyAyLjguNSAtIDIwMTItMDgtMjkKCiogQnVnOiBTdXBwcmVzc2VkIGVtcHR5IGFycmF5cyBmcm9tIFVSSSB0ZW1wbGF0ZXMKKiBCdWc6IEFkZGVkIHRoZSBtaXNzaW5nICRvcHRpb25zIGFyZ3VtZW50IGZyb20gU2VydmljZURlc2NyaXB0aW9uOjpmYWN0b3J5IHRvIGVuYWJsZSBjYWNoaW5nCiogQWRkZWQgc3VwcG9ydCBmb3IgSFRUUCByZXNwb25zZXMgdGhhdCBkbyBub3QgY29udGFpbiBhIHJlYXNvbiBwaHJhc2UgaW4gdGhlIHN0YXJ0LWxpbmUKKiBBYnN0cmFjdENvbW1hbmQgY29tbWFuZHMgYXJlIG5vdyBpbnZva2FibGUKKiBBZGRlZCBhIHdheSB0byBnZXQgdGhlIGRhdGEgdXNlZCB3aGVuIHNpZ25pbmcgYW4gT2F1dGggcmVxdWVzdCBiZWZvcmUgYSByZXF1ZXN0IGlzIHNlbnQKCiMjIDIuOC40IC0gMjAxMi0wOC0xNQoKKiBCdWc6IEN1c3RvbSBkZWxheSB0aW1lIGNhbGN1bGF0aW9ucyBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQgaW4gdGhlIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHRyYW5zZmVyIGVudGl0eSBib2RpZXMgYXMgYSBzdHJpbmcgcmF0aGVyIHRoYW4gc3RyZWFtZWQuIFRoaXMgZ2V0cyBhcm91bmQgY3VybCBlcnJvciA2NS4gU2V0IGBib2R5X2FzX3N0cmluZ2AgaW4gYSByZXF1ZXN0J3MgY3VybCBvcHRpb25zIHRvIGVuYWJsZS4KKiBBZGRlZCBhIFN0cmVhbUludGVyZmFjZSwgRW50aXR5Qm9keUludGVyZmFjZSwgYW5kIGFkZGVkIGZ0ZWxsKCkgdG8gR3V6emxlXENvbW1vblxTdHJlYW0KKiBBZGRlZCBhbiBBYnN0cmFjdEVudGl0eUJvZHlEZWNvcmF0b3IgYW5kIGEgUmVhZExpbWl0RW50aXR5Qm9keSBkZWNvcmF0b3IgdG8gdHJhbnNmZXIgb25seSBhIHN1YnNldCBvZiBhIGRlY29yYXRlZCBzdHJlYW0KKiBTdHJlYW0gYW5kIEVudGl0eUJvZHkgb2JqZWN0cyB3aWxsIG5vdyByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24gdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uIGFmdGVyIGEgcmVhZCByZXF1aXJlZCBvcGVyYXRpb24gKGUuZy4gZ2V0Q29udGVudE1kNSgpKQoqIEFkZGVkIGFkZGl0aW9uYWwgcmVzcG9uc2Ugc3RhdHVzIGNvZGVzCiogUmVtb3ZlZCBTU0wgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGVmYXVsdCBVc2VyLUFnZW50IGhlYWRlcgoqIERFTEVURSByZXF1ZXN0cyBjYW4gbm93IHNlbmQgYW4gZW50aXR5IGJvZHkKKiBBZGRlZCBhbiBFdmVudERpc3BhdGNoZXIgdG8gdGhlIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbiBhbmQgYWRkZWQgYW4gRXhwb25lbnRpYWxCYWNrb2ZmTG9nZ2VyIHRvIGxvZyBiYWNrb2ZmIHJldHJpZXMKKiBBZGRlZCB0aGUgYWJpbGl0eSBvZiB0aGUgTW9ja1BsdWdpbiB0byBjb25zdW1lIG1vY2tlZCByZXF1ZXN0IGJvZGllcwoqIExvZ1BsdWdpbiBub3cgZXhwb3NlcyByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIGluIHRoZSBleHRyYXMgYXJyYXkKCiMjIDIuOC4zIC0gMjAxMi0wNy0zMAoKKiBCdWc6IEZpeGVkIGEgY2FzZSB3aGVyZSBlbXB0eSBQT1NUIHJlcXVlc3RzIHdlcmUgc2VudCBhcyBHRVQgcmVxdWVzdHMKKiBCdWc6IEZpeGVkIGEgYnVnIGluIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbiB0aGF0IGNhdXNlZCBmYXRhbCBlcnJvcnMgd2hlbiByZXRyeWluZyBhbiBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IHRoYXQgZG9lcyBub3QgaGF2ZSBhIGJvZHkKKiBCdWc6IFNldHRpbmcgdGhlIHJlc3BvbnNlIGJvZHkgb2YgYSByZXF1ZXN0IHRvIG51bGwgYWZ0ZXIgY29tcGxldGluZyBhIHJlcXVlc3QsIG5vdCB3aGVuIHNldHRpbmcgdGhlIHN0YXRlIG9mIGEgcmVxdWVzdCB0byBuZXcKKiBBZGRlZCBtdWx0aXBsZSBpbmhlcml0YW5jZSB0byBzZXJ2aWNlIGRlc2NyaXB0aW9uIGNvbW1hbmRzCiogQWRkZWQgYW4gQXBpQ29tbWFuZEludGVyZmFjZSBhbmQgYWRkZWQgYGdldFBhcmFtTmFtZXMoKWAgYW5kIGBoYXNQYXJhbSgpYAoqIFJlbW92ZWQgdGhlIGRlZmF1bHQgMm1iIHNpemUgY3V0b2ZmIGZyb20gdGhlIE1kNVZhbGlkYXRvclBsdWdpbiBzbyB0aGF0IGl0IG5vdyBkZWZhdWx0cyB0byB2YWxpZGF0aW5nIGV2ZXJ5dGhpbmcKKiBDaGFuZ2VkIEN1cmxNdWx0aTo6cGVyZm9ybSB0byBwYXNzIGEgc21hbGxlciB0aW1lb3V0IHRvIEN1cmxNdWx0aTo6ZXhlY3V0ZUhhbmRsZXMKCiMjIDIuOC4yIC0gMjAxMi0wNy0yNAoKKiBCdWc6IFF1ZXJ5IHN0cmluZyB2YWx1ZXMgc2V0IHRvIDAgYXJlIG5vIGxvbmdlciBkcm9wcGVkIGZyb20gdGhlIHF1ZXJ5IHN0cmluZwoqIEJ1ZzogQSBDb2xsZWN0aW9uIG9iamVjdCBpcyBubyBsb25nZXIgY3JlYXRlZCBlYWNoIHRpbWUgYSBjYWxsIGlzIG1hZGUgdG8gYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQWJzdHJhY3RDb21tYW5kOjpnZXRSZXF1ZXN0SGVhZGVycygpYAoqIEJ1ZzogYCtgIGlzIG5vdyB0cmVhdGVkIGFzIGFuIGVuY29kZWQgc3BhY2Ugd2hlbiBwYXJzaW5nIHF1ZXJ5IHN0cmluZ3MKKiBRdWVyeVN0cmluZyBhbmQgQ29sbGVjdGlvbiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMKKiBBbGxvd2luZyBkb3Qgbm90YXRpb24gZm9yIGNsYXNzIHBhdGhzIGluIGZpbHRlcnMgYXR0cmlidXRlIG9mIGEgc2VydmljZSBkZXNjcmlwdGlvbnMKCiMjIDIuOC4xIC0gMjAxMi0wNy0xNgoKKiBMb29zZW5pbmcgRXZlbnQgRGlzcGF0Y2hlciBkZXBlbmRlbmN5CiogUE9TVCByZWRpcmVjdHMgY2FuIG5vdyBiZSBjdXN0b21pemVkIHVzaW5nIENVUkxPUFRfUE9TVFJFRElSCgojIyAyLjguMCAtIDIwMTItMDctMTUKCiogQkM6IEd1enpsZVxIdHRwXFF1ZXJ5CiAgICAqIFF1ZXJ5IHN0cmluZ3Mgd2l0aCBlbXB0eSB2YXJpYWJsZXMgd2lsbCBhbHdheXMgc2hvdyBhbiBlcXVhbCBzaWduIHVubGVzcyB0aGUgdmFyaWFibGUgaXMgc2V0IHRvIFF1ZXJ5U3RyaW5nOjpCTEFOSyAoZS5nLiA/YWNsPSB2cyA/YWNsKQogICAgKiBDaGFuZ2VkIGlzRW5jb2RpbmdWYWx1ZXMoKSBhbmQgaXNFbmNvZGluZ0ZpZWxkcygpIHRvIGlzVXJsRW5jb2RpbmcoKQogICAgKiBDaGFuZ2VkIHNldEVuY29kZVZhbHVlcyhib29sKSBhbmQgc2V0RW5jb2RlRmllbGRzKGJvb2wpIHRvIHVzZVVybEVuY29kaW5nKGJvb2wpCiAgICAqIENoYW5nZWQgdGhlIGFnZ3JlZ2F0aW9uIGZ1bmN0aW9ucyBvZiBRdWVyeVN0cmluZyB0byBiZSBzdGF0aWMgbWV0aG9kcwogICAgKiBDYW4gbm93IHVzZSBmcm9tU3RyaW5nKCkgd2l0aCBxdWVyeXN0cmluZ3MgdGhhdCBoYXZlIGEgbGVhZGluZyA/CiogY1VSTCBjb25maWd1cmF0aW9uIHZhbHVlcyBjYW4gYmUgc3BlY2lmaWVkIGluIHNlcnZpY2UgZGVzY3JpcHRpb25zIHVzaW5nIGBjdXJsLmAgcHJlZml4ZWQgcGFyYW1ldGVycwoqIENvbnRlbnQtTGVuZ3RoIGlzIHNldCB0byAwIGJlZm9yZSBlbWl0dGluZyB0aGUgcmVxdWVzdC5iZWZvcmVfc2VuZCBldmVudCB3aGVuIHNlbmRpbmcgYW4gZW1wdHkgcmVxdWVzdCBib2R5CiogQ29va2llcyBhcmUgbm8gbG9uZ2VyIFVSTCBkZWNvZGVkIGJ5IGRlZmF1bHQKKiBCdWc6IFVSSSB0ZW1wbGF0ZSB2YXJpYWJsZXMgc2V0IHRvIG51bGwgYXJlIG5vIGxvbmdlciBleHBhbmRlZAoKIyMgMi43LjIgLSAyMDEyLTA3LTAyCgoqIEJDOiBNb3ZpbmcgdGhpbmdzIHRvIGdldCByZWFkeSBmb3Igc3VidHJlZSBzcGxpdHMuIE1vdmluZyBJbmZsZWN0aW9uIGludG8gQ29tbW9uLiBNb3ZpbmcgR3V6emxlXEh0dHBcUGFyc2VyIHRvIEd1enpsZVxQYXJzZXIuCiogQkM6IFJlbW92aW5nIEd1enpsZVxDb21tb25cQmF0Y2hcQmF0Y2g6OmNvdW50KCkgYW5kIHJlcGxhY2luZyBpdCB3aXRoIGlzRW1wdHkoKQoqIENhY2hlUGx1Z2luIG5vdyBhbGxvd3MgZm9yIGEgY3VzdG9tIHJlcXVlc3QgcGFyYW1ldGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgcmVxdWVzdCBjYW4gYmUgY2FjaGVkCiogQnVnIGZpeDogQ2FjaGVQbHVnaW4gbm93IG9ubHkgY2FjaGVzIEdFVCBhbmQgSEVBRCByZXF1ZXN0cyBieSBkZWZhdWx0CiogQnVnIGZpeDogVXNpbmcgaGVhZGVyIGdsdWUgd2hlbiB0cmFuc2ZlcnJpbmcgaGVhZGVycyBvdmVyIHRoZSB3aXJlCiogQWxsb3dpbmcgZGVlcGx5IG5lc3RlZCBhcnJheXMgZm9yIGNvbXBvc2l0ZSB2YXJpYWJsZXMgaW4gVVJJIHRlbXBsYXRlcwoqIEJhdGNoIGRpdmlzb3JzIGNhbiBub3cgcmV0dXJuIGl0ZXJhdG9ycyBvciBhcnJheXMKCiMjIDIuNy4xIC0gMjAxMi0wNi0yNgoKKiBNaW5vciBwYXRjaCB0byB1cGRhdGUgdmVyc2lvbiBudW1iZXIgaW4gVUEgc3RyaW5nCiogVXBkYXRpbmcgYnVpbGQgcHJvY2VzcwoKIyMgMi43LjAgLSAyMDEyLTA2LTI1CgoqIEJDOiBJbmZsZWN0aW9uIGNsYXNzZXMgbW92ZWQgdG8gR3V6emxlXEluZmxlY3Rpb24uIE5vIGxvbmdlciBzdGF0aWMgbWV0aG9kcy4gQ2FuIG5vdyBpbmplY3QgY3VzdG9tIGluZmxlY3RvcnMgaW50byBjbGFzc2VzLgoqIEJDOiBSZW1vdmVkIG1hZ2ljIHNldFggbWV0aG9kcyBmcm9tIGNvbW1hbmRzCiogQkM6IE1hZ2ljIG1ldGhvZHMgbWFwcGVkIHRvIHNlcnZpY2UgZGVzY3JpcHRpb24gY29tbWFuZHMgYXJlIG5vdyBpbmZsZWN0ZWQgaW4gdGhlIGNvbW1hbmQgZmFjdG9yeSByYXRoZXIgdGhhbiB0aGUgY2xpZW50IF9fY2FsbCgpIG1ldGhvZAoqIFZlcmJvc2UgY1VSTCBvcHRpb25zIGFyZSBubyBsb25nZXIgZW5hYmxlZCBieSBkZWZhdWx0LiBTZXQgY3VybC5kZWJ1ZyB0byB0cnVlIG9uIGEgY2xpZW50IHRvIGVuYWJsZS4KKiBCdWc6IE5vdyBhbGxvd2luZyBjb2xvbnMgaW4gYSByZXNwb25zZSBzdGFydC1saW5lIChlLmcuIEhUVFAvMS4xIDUwMyBTZXJ2aWNlIFVuYXZhaWxhYmxlOiBCYWNrLWVuZCBzZXJ2ZXIgaXMgYXQgY2FwYWNpdHkpCiogR3V6emxlXFNlcnZpY2VcUmVzb3VyY2VcUmVzb3VyY2VJdGVyYXRvckFwcGx5QmF0Y2hlZCBub3cgaW50ZXJuYWxseSB1c2VzIHRoZSBHdXp6bGVcQ29tbW9uXEJhdGNoIG5hbWVzcGFjZQoqIEFkZGVkIEd1enpsZVxTZXJ2aWNlXFBsdWdpbiBuYW1lc3BhY2UgYW5kIGEgUGx1Z2luQ29sbGVjdGlvblBsdWdpbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNldCBQT1NUIGZpZWxkcyBhbmQgZmlsZXMgaW4gYSBzZXJ2aWNlIGRlc2NyaXB0aW9uCiogR3V6emxlXEh0dHBcRW50aXR5Qm9keTo6ZmFjdG9yeSgpIG5vdyBhY2NlcHRzIG9iamVjdHMgd2l0aCBhIF9fdG9TdHJpbmcoKSBtZXRob2QKKiBBZGRpbmcgYSBjb21tYW5kLmJlZm9yZV9wcmVwYXJlIGV2ZW50IHRvIGNsaWVudHMKKiBBZGRlZCBCYXRjaENsb3N1cmVUcmFuc2ZlciBhbmQgQmF0Y2hDbG9zdXJlRGl2aXNvcgoqIEJhdGNoVHJhbnNmZXJFeGNlcHRpb24gbm93IGluY2x1ZGVzIHJlZmVyZW5jZXMgdG8gdGhlIGJhdGNoIGRpdmlzb3IgYW5kIHRyYW5zZmVyIHN0cmF0ZWdpZXMKKiBGaXhlZCBzb21lIHRlc3RzIHNvIHRoYXQgdGhleSBwYXNzIG1vcmUgcmVsaWFibHkKKiBBZGRlZCBHdXp6bGVcQ29tbW9uXExvZ1xBcnJheUxvZ0FkYXB0ZXIKCiMjIDIuNi42IC0gMjAxMi0wNi0xMAoKKiBCQzogUmVtb3ZpbmcgR3V6emxlXEh0dHBcUGx1Z2luXEJhdGNoUXVldWVQbHVnaW4KKiBCQzogUmVtb3ZpbmcgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxDb21tYW5kU2V0CiogQWRkaW5nIGdlbmVyaWMgYmF0Y2hpbmcgc3lzdGVtIChyZXBsYWNlcyB0aGUgYmF0Y2ggcXVldWUgcGx1Z2luIGFuZCBjb21tYW5kIHNldCkKKiBVcGRhdGluZyBaRiBjYWNoZSBhbmQgbG9nIGFkYXB0ZXJzIGFuZCBub3cgdXNpbmcgWkYncyBjb21wb3NlciByZXBvc2l0b3J5CiogQnVnOiBTZXR0aW5nIHRoZSBuYW1lIG9mIGVhY2ggQXBpUGFyYW0gd2hlbiBjcmVhdGluZyB0aHJvdWdoIGFuIEFwaUNvbW1hbmQKKiBBZGRpbmcgcmVzdWx0X3R5cGUsIHJlc3VsdF9kb2MsIGRlcHJlY2F0ZWQsIGFuZCBkb2NfdXJsIHRvIHNlcnZpY2UgZGVzY3JpcHRpb25zCiogQnVnOiBDaGFuZ2VkIHRoZSBkZWZhdWx0IGNvb2tpZSBoZWFkZXIgY2FzaW5nIGJhY2sgdG8gJ0Nvb2tpZScKCiMjIDIuNi41IC0gMjAxMi0wNi0wMwoKKiBCQzogUmVuYW1pbmcgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjpnZXRSZXNvdXJjZVVyaSgpIHRvIGdldFJlc291cmNlKCkKKiBCQzogUmVtb3ZpbmcgdW51c2VkIEFVVEhfQkFTSUMgYW5kIEFVVEhfRElHRVNUIGNvbnN0YW50cyBmcm9tCiogQkM6IEd1enpsZVxIdHRwXENvb2tpZSBpcyBub3cgdXNlZCB0byBtYW5hZ2UgU2V0LUNvb2tpZSBkYXRhLCBub3QgQ29va2llIGRhdGEKKiBCQzogUmVuYW1pbmcgbWV0aG9kcyBpbiB0aGUgQ29va2llSmFySW50ZXJmYWNlCiogTW92aW5nIGFsbW9zdCBhbGwgY29va2llIGxvZ2ljIG91dCBvZiB0aGUgQ29va2llUGx1Z2luIGFuZCBpbnRvIHRoZSBDb29raWUgb3IgQ29va2llSmFyIGltcGxlbWVudGF0aW9ucwoqIE1ha2luZyB0aGUgZGVmYXVsdCBnbHVlIGZvciBIVFRQIGhlYWRlcnMgJzsnIGluc3RlYWQgb2YgJywnCiogQWRkaW5nIGEgcmVtb3ZlVmFsdWUgdG8gR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXIKKiBBZGRpbmcgZ2V0Q29va2llcygpIHRvIHJlcXVlc3QgaW50ZXJmYWNlLgoqIE1ha2luZyBpdCBlYXNpZXIgdG8gYWRkIGV2ZW50IHN1YnNjcmliZXJzIHRvIEhhc0Rpc3BhdGNoZXJJbnRlcmZhY2UgY2xhc3Nlcy4gQ2FuIG5vdyBkaXJlY3RseSBjYWxsIGFkZFN1YnNjcmliZXIoKQoKIyMgMi42LjQgLSAyMDEyLTA1LTMwCgoqIEJDOiBDbGVhbmluZyB1cCBob3cgUE9TVCBmaWxlcyBhcmUgc3RvcmVkIGluIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgb2JqZWN0cy4gQWRkaW5nIFBvc3RGaWxlIGNsYXNzLgoqIEJDOiBNb3ZpbmcgQXBpQ29tbWFuZCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIEluc3BlY3RvciBhbmQgb24gdG8gdGhlIEFwaUNvbW1hbmQKKiBCdWc6IEZpeGluZyBtYWdpYyBtZXRob2QgY29tbWFuZCBjYWxscyBvbiBjbGllbnRzCiogQnVnOiBFbWFpbCBjb25zdHJhaW50IG9ubHkgdmFsaWRhdGVzIHN0cmluZ3MKKiBCdWc6IEFnZ3JlZ2F0ZSBQT1NUIGZpZWxkcyB3aGVuIFBPU1QgZmlsZXMgYXJlIHByZXNlbnQgaW4gY3VybCBoYW5kbGUKKiBCdWc6IEZpeGluZyBkZWZhdWx0IFVzZXItQWdlbnQgaGVhZGVyCiogQnVnOiBPbmx5IGFwcGVuZGluZyBvciBwcmVwZW5kaW5nIHBhcmFtZXRlcnMgaW4gY29tbWFuZHMgaWYgdGhleSBhcmUgc3BlY2lmaWVkCiogQnVnOiBOb3QgcmVxdWlyaW5nIHJlc3BvbnNlIHJlYXNvbiBwaHJhc2VzIG9yIHN0YXR1cyBjb2RlcyB0byBtYXRjaCBhIHByZWRlZmluZWQgbGlzdCBvZiBjb2RlcwoqIEFsbG93aW5nIHRoZSB1c2Ugb2YgZG90IG5vdGF0aW9uIGZvciBjbGFzcyBuYW1lc3BhY2VzIHdoZW4gdXNpbmcgaW5zdGFuY2Vfb2YgY29uc3RyYWludAoqIEFkZGVkIGFueV9tYXRjaCB2YWxpZGF0aW9uIGNvbnN0cmFpbnQKKiBBZGRlZCBhbiBBc3luY1BsdWdpbgoqIFBhc3NpbmcgcmVxdWVzdCBvYmplY3QgdG8gdGhlIGNhbGN1bGF0ZVdhaXQgbWV0aG9kIG9mIHRoZSBFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW4KKiBBbGxvd2luZyB0aGUgcmVzdWx0IG9mIGEgY29tbWFuZCBvYmplY3QgdG8gYmUgY2hhbmdlZAoqIFBhcnNpbmcgbG9jYXRpb24gYW5kIHR5cGUgc3ViIHZhbHVlcyB3aGVuIGluc3RhbnRpYXRpbmcgYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIHJhdGhlciB0aGFuIG92ZXIgYW5kIG92ZXIgYXQgcnVudGltZQoKIyMgMi42LjMgLSAyMDEyLTA1LTIzCgoqIFtCQ10gR3V6emxlXENvbW1vblxGcm9tQ29uZmlnSW50ZXJmYWNlIG5vIGxvbmdlciByZXF1aXJlcyBhbnkgY29uZmlnIG9wdGlvbnMuCiogW0JDXSBSZWZhY3RvcmluZyBob3cgUE9TVCBmaWxlcyBhcmUgc3RvcmVkIG9uIGFuIEVudGl0eUVuY2xvc2luZ1JlcXVlc3QuIFRoZXkgYXJlIG5vdyBzZXBhcmF0ZSBmcm9tIFBPU1QgZmllbGRzLgoqIFlvdSBjYW4gbm93IHVzZSBhbiBhcnJheSBvZiBkYXRhIHdoZW4gY3JlYXRpbmcgUFVUIHJlcXVlc3QgYm9kaWVzIGluIHRoZSByZXF1ZXN0IGZhY3RvcnkuCiogUmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IHRoYXQgSFRUUFMgcmVxdWVzdHMgbmVlZGVkIGEgQ2FjaGUtQ29udHJvbDogcHVibGljIGRpcmVjdGl2ZSB0byBiZSBjYWNoZWFibGUuCiogW0h0dHBdIEFkZGluZyBzdXBwb3J0IGZvciBDb250ZW50LVR5cGUgaW4gbXVsdGlwYXJ0IFBPU1QgdXBsb2FkcyBwZXIgdXBsb2FkCiogW0h0dHBdIEFkZGVkIHN1cHBvcnQgZm9yIHVwbG9hZGluZyBtdWx0aXBsZSBmaWxlcyB1c2luZyB0aGUgc2FtZSBuYW1lIChmb29bMF0sIGZvb1sxXSkKKiBBZGRpbmcgbW9yZSBQT1NUIGRhdGEgb3BlcmF0aW9ucyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbiBvZiBQT1NUIGRhdGEuCiogWW91IGNhbiBub3cgc2V0IGVtcHR5IFBPU1QgZmllbGRzLgoqIFRoZSBib2R5IG9mIGEgcmVxdWVzdCBpcyBvbmx5IHNob3duIG9uIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgb2JqZWN0cyB0aGF0IGRvIG5vdCB1c2UgUE9TVCBmaWxlcy4KKiBTcGxpdCB0aGUgR3V6emxlXFNlcnZpY2VcSW5zcGVjdG9yOjp2YWxpZGF0ZUNvbmZpZyBtZXRob2QgaW50byB0d28gbWV0aG9kcy4gT25lIHRvIGluaXRpYWxpemUgd2hlbiBhIGNvbW1hbmQgaXMgY3JlYXRlZCwgYW5kIG9uZSB0byB2YWxpZGF0ZS4KKiBDUyB1cGRhdGVzCgojIyAyLjYuMiAtIDIwMTItMDUtMTkKCiogW0h0dHBdIEJldHRlciBoYW5kbGluZyBvZiBuZXN0ZWQgc2NvcGUgcmVxdWVzdHMgaW4gQ3VybE11bHRpLiAgUmVxdWVzdHMgYXJlIG5vdyBhbHdheXMgcHJlcGFyZXMgaW4gdGhlIHNlbmQoKSBtZXRob2QgcmF0aGVyIHRoYW4gdGhlIGFkZFJlcXVlc3QoKSBtZXRob2QuCgojIyAyLjYuMSAtIDIwMTItMDUtMTkKCiogW0JDXSBSZW1vdmluZyAncGF0aCcgc3VwcG9ydCBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9ucy4gIFVzZSAndXJpJy4KKiBbQkNdIEd1enpsZVxTZXJ2aWNlXEluc3BlY3Rvcjo6cGFyc2VEb2NCbG9jayBpcyBub3cgcHJvdGVjdGVkLiBBZGRpbmcgZ2V0QXBpUGFyYW1zRm9yQ2xhc3MoKSB3aXRoIGNhY2hlLgoqIFtCQ10gUmVtb3ZpbmcgR3V6emxlXENvbW1vblxOdWxsT2JqZWN0LiAgVXNlIGh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmcvTnVsbE9iamVjdCBpZiB5b3UgbmVlZCBpdC4KKiBbQkNdIFJlbW92aW5nIEd1enpsZVxDb21tb25cWG1sRWxlbWVudC4KKiBBbGwgY29tbWFuZHMsIGJvdGggZHluYW1pYyBhbmQgY29uY3JldGUsIGhhdmUgQXBpQ29tbWFuZCBvYmplY3RzLgoqIEFkZGluZyBhIGZpeCBmb3IgQ3VybE11bHRpIHNvIHRoYXQgaWYgYWxsIG9mIHRoZSBjb25uZWN0aW9ucyBlbmNvdW50ZXIgc29tZSBzb3J0IG9mIGN1cmwgZXJyb3IsIHRoZW4gdGhlIGxvb3AgZXhpdHMuCiogQWRkaW5nIGNoZWNrcyB0byBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IHNvIHRoYXQgZW1wdHkgUE9TVCBmaWxlcyBhbmQgZmllbGRzIGFyZSBpZ25vcmVkLgoqIE1ha2luZyB0aGUgbWV0aG9kIHNpZ25hdHVyZSBvZiBHdXp6bGVcU2VydmljZVxCdWlsZGVyXFNlcnZpY2VCdWlsZGVyOjpmYWN0b3J5IG1vcmUgZmxleGlibGUuCgojIyAyLjYuMCAtIDIwMTItMDUtMTUKCiogW0JDXSBNb3ZpbmcgR3V6emxlXFNlcnZpY2VcQnVpbGRlciB0byBHdXp6bGVcU2VydmljZVxCdWlsZGVyXFNlcnZpY2VCdWlsZGVyCiogW0JDXSBFeGVjdXRpbmcgYSBDb21tYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tbWFuZCByYXRoZXIgdGhhbiB0aGUgY29tbWFuZAoqIFtCQ10gTW92aW5nIGFsbCBIVFRQIHBhcnNpbmcgbG9naWMgdG8gR3V6emxlXEh0dHBcUGFyc2Vycy4gQWxsb3dzIGZvciBmYXN0ZXIgQyBpbXBsZW1lbnRhdGlvbnMgaWYgbmVlZGVkLgoqIFtCQ10gQ2hhbmdpbmcgdGhlIEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OnNldFByb3RvY29sKCkgbWV0aG9kIHRvIGFjY2VwdCBhIHByb3RvY29sIGFuZCB2ZXJzaW9uIGluIHNlcGFyYXRlIGFyZ3MuCiogW0JDXSBNb3ZpbmcgUmVzb3VyY2VJdGVyYXRvciogdG8gR3V6emxlXFNlcnZpY2VcUmVzb3VyY2UKKiBbQkNdIENvbXBsZXRlbHkgcmVmYWN0b3JlZCBSZXNvdXJjZUl0ZXJhdG9ycyB0byBpdGVyYXRlIG92ZXIgYSBjbG9uZWQgY29tbWFuZCBvYmplY3QKKiBbQkNdIE1vdmVkIEd1enpsZVxIdHRwXFVyaVRlbXBsYXRlIHRvIEd1enpsZVxIdHRwXFBhcnNlclxVcmlUZW1wbGF0ZVxVcmlUZW1wbGF0ZQoqIFtCQ10gR3V6emxlXEd1enpsZSBpcyBub3cgZGVwcmVjYXRlZAoqIE1vdmluZyBHdXp6bGVcQ29tbW9uXEd1enpsZTo6aW5qZWN0IHRvIEd1enpsZVxDb21tb25cQ29sbGVjdGlvbjo6aW5qZWN0CiogQWRkaW5nIEd1enpsZVxWZXJzaW9uIGNsYXNzIHRvIGdpdmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBhYm91dCBHdXp6bGUKKiBBZGRpbmcgR3V6emxlXEh0dHBcVXRpbHMgY2xhc3MgdG8gcHJvdmlkZSBnZXREZWZhdWx0VXNlckFnZW50KCkgYW5kIGdldEh0dHBEYXRlKCkKKiBBZGRpbmcgR3V6emxlXEN1cmxcQ3VybFZlcnNpb24gdG8gbWFuYWdlIGNhY2hpbmcgY3VybF92ZXJzaW9uKCkgZGF0YQoqIFNlcnZpY2VEZXNjcmlwdGlvbiBhbmQgU2VydmljZUJ1aWxkZXIgYXJlIG5vdyBjYWNoZWFibGUgdXNpbmcgc2ltaWxhciBjb25maWdzCiogQ2hhbmdpbmcgdGhlIGZvcm1hdCBvZiBYTUwgYW5kIEpTT04gc2VydmljZSBidWlsZGVyIGNvbmZpZ3MuICBCYWNrd2FyZHMgY29tcGF0aWJsZS4KKiBDbGVhbmVkIHVwIENvb2tpZSBwYXJzaW5nCiogVHJpbW1pbmcgdGhlIGRlZmF1bHQgR3V6emxlIFVzZXItQWdlbnQgaGVhZGVyCiogQWRkaW5nIGEgc2V0T25Db21wbGV0ZSgpIG1ldGhvZCB0byBDb21tYW5kcyB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgY29tbWFuZCBjb21wbGV0ZXMKKiBLZWVwaW5nIHRyYWNrIG9mIHJlcXVlc3RzIHRoYXQgd2VyZSBtb2NrZWQgaW4gdGhlIE1vY2tQbHVnaW4KKiBGaXhlZCBhIGNhY2hpbmcgYnVnIGluIHRoZSBDYWNoZUFkYXB0ZXJGYWN0b3J5CiogSW5zcGVjdG9yIG9iamVjdHMgY2FuIGJlIGluamVjdGVkIGludG8gYSBDb21tYW5kIG9iamVjdAoqIFJlZmFjdG9yaW5nIGEgbG90IG9mIGNvZGUgYW5kIHRlc3RzIHRvIGJlIGNhc2UgaW5zZW5zaXRpdmUgd2hlbiBkZWFsaW5nIHdpdGggaGVhZGVycwoqIEFkZGluZyBHdXp6bGVcSHR0cFxNZXNzYWdlXEhlYWRlckNvbXBhcmlzb24gZm9yIGVhc3kgY29tcGFyaXNvbiBvZiBIVFRQIGhlYWRlcnMgdXNpbmcgYSBEU0wKKiBBZGRpbmcgdGhlIGFiaWxpdHkgdG8gc2V0IGdsb2JhbCBvcHRpb24gb3ZlcnJpZGVzIHRvIHNlcnZpY2UgYnVpbGRlciBjb25maWdzCiogQWRkaW5nIHRoZSBhYmlsaXR5IHRvIGluY2x1ZGUgb3RoZXIgc2VydmljZSBidWlsZGVyIGNvbmZpZyBmaWxlcyBmcm9tIHdpdGhpbiBYTUwgYW5kIEpTT04gZmlsZXMKKiBNb3ZpbmcgdGhlIHBhcnNlUXVlcnkgbWV0aG9kIG91dCBvZiBVcmwgYW5kIG9uIHRvIFF1ZXJ5U3RyaW5nOjpmcm9tU3RyaW5nKCkgYXMgYSBzdGF0aWMgZmFjdG9yeSBtZXRob2QuCgojIyAyLjUuMCAtIDIwMTItMDUtMDgKCiogTWFqb3IgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzCiogW0JDXSBTaW1wbGlmeWluZyBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb24uICBQbGVhc2UgY2hlY2sgdG8gc2VlIGlmIHlvdSBhcmUgdXNpbmcgZmVhdHVyZXMgdGhhdCBhcmUgbm93IGRlcHJlY2F0ZWQuCiogW0JDXSBVc2luZyBhIGN1c3RvbSB2YWxpZGF0aW9uIHN5c3RlbSB0aGF0IGFsbG93cyBhIGZseXdlaWdodCBpbXBsZW1lbnRhdGlvbiBmb3IgbXVjaCBmYXN0ZXIgdmFsaWRhdGlvbi4gTm8gbG9uZ2VyIHVzaW5nIFN5bWZvbnkyIFZhbGlkYXRpb24gY29tcG9uZW50LgoqIFtCQ10gTm8gbG9uZ2VyIHN1cHBvcnRpbmcgInt7IH19IiBmb3IgaW5qZWN0aW5nIGludG8gY29tbWFuZCBvciBVcmlUZW1wbGF0ZXMuICBVc2UgInt9IgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHBhc3NlZCBwYXJhbWV0ZXJzIHRvIGFsbCByZXF1ZXN0cyBjcmVhdGVkIGJ5IGEgY2xpZW50CiogQWRkZWQgY2FsbGJhY2sgZnVuY3Rpb25hbGl0eSB0byB0aGUgRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luCiogVXNpbmcgbWljcm90aW1lIGluIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbiB0byBhbGxvdyBtb3JlIGdyYW51bGFyIGJhY2tvZmYgc3RyYXRlZ2llcy4KKiBSZXdpbmRpbmcgcmVxdWVzdCBzdHJlYW0gYm9kaWVzIHdoZW4gcmV0cnlpbmcgcmVxdWVzdHMKKiBFeGNlcHRpb24gaXMgdGhyb3duIHdoZW4gSlNPTiByZXNwb25zZSBib2R5IGNhbm5vdCBiZSBkZWNvZGVkCiogQWRkZWQgY29uZmlndXJhYmxlIG1hZ2ljIG1ldGhvZCBjYWxscyB0byBjbGllbnRzIGFuZCBjb21tYW5kcy4gIFRoaXMgaXMgb2ZmIGJ5IGRlZmF1bHQuCiogRml4ZWQgYSBkZWZlY3QgdGhhdCBhZGRlZCBhIGhhc2ggdG8gZXZlcnkgcGFyc2VkIFVSTCBwYXJ0CiogRml4ZWQgZHVwbGljYXRlIG5vbmUgZ2VuZXJhdGlvbiBmb3IgT2F1dGhQbHVnaW4uCiogRW1pdHRpbmcgYW4gZXZlbnQgZWFjaCB0aW1lIGEgY2xpZW50IGlzIGdlbmVyYXRlZCBieSBhIFNlcnZpY2VCdWlsZGVyCiogVXNpbmcgYW4gQXBpUGFyYW1zIG9iamVjdCBpbnN0ZWFkIG9mIGEgQ29sbGVjdGlvbiBmb3IgcGFyYW1ldGVycyBvZiBhbiBBcGlDb21tYW5kCiogY2FjaGUuKiByZXF1ZXN0IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlbmFtZWQgdG8gcGFyYW1zLmNhY2hlLioKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBzZXQgYXJiaXRyYXJ5IGN1cmwgb3B0aW9ucyBvbiByZXF1ZXN0cyAoZGlzYWJsZV93aXJlLCBwcm9ncmVzcywgZXRjLikuIFNlZSBDdXJsSGFuZGxlLgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgdHlwZSB2YWxpZGF0aW9uIG9mIHNlcnZpY2UgZGVzY3JpcHRpb25zCiogU2VydmljZURlc2NyaXB0aW9ucyBhbmQgU2VydmljZUJ1aWxkZXJzIGFyZSBub3cgU2VyaWFsaXphYmxlCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9ndXp6bGUiLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIGlzIGEgUEhQIEhUVFAgY2xpZW50IGxpYnJhcnkiLAogICAgImtleXdvcmRzIjogWyJmcmFtZXdvcmsiLCAiaHR0cCIsICJyZXN0IiwgIndlYiBzZXJ2aWNlIiwgImN1cmwiLCAiY2xpZW50IiwgIkhUVFAgY2xpZW50Il0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL2d1enpsZXBocC5vcmcvIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj01LjUiLAogICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjEuNCIsCiAgICAgICAgImd1enpsZWh0dHAvcHJvbWlzZXMiOiAiXjEuMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuOC4zNSB8fCBeNS43IHx8IF42LjQgfHwgXjcuMCIsCiAgICAgICAgInBzci9sb2ciOiAiXjEuMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgImZpbGVzIjogWyJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIl0sCiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJhdXRvbG9hZC1kZXYiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcVGVzdHNcXCI6ICJ0ZXN0cy8iCiAgICAgICAgfQogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJwc3IvbG9nIjogIlJlcXVpcmVkIGZvciB1c2luZyB0aGUgTG9nIG1pZGRsZXdhcmUiCiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjYuMy1kZXYiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDExLTIwMTggTWljaGFlbCBEb3dsaW5nLCBodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R3V6emxlLCBQSFAgSFRUUCBjbGllbnQKPT09PT09PT09PT09PT09PT09PT09PT0KClshW0xhdGVzdCBWZXJzaW9uXShodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9yZWxlYXNlL2d1enpsZS9ndXp6bGUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcmVsZWFzZXMpClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby90cmF2aXMvZ3V6emxlL2d1enpsZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZ3V6emxlL2d1enpsZSkKWyFbVG90YWwgRG93bmxvYWRzXShodHRwczovL2ltZy5zaGllbGRzLmlvL3BhY2thZ2lzdC9kdC9ndXp6bGVodHRwL2d1enpsZS5zdmc/c3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvZ3V6emxlaHR0cC9ndXp6bGUpCgpHdXp6bGUgaXMgYSBQSFAgSFRUUCBjbGllbnQgdGhhdCBtYWtlcyBpdCBlYXN5IHRvIHNlbmQgSFRUUCByZXF1ZXN0cyBhbmQKdHJpdmlhbCB0byBpbnRlZ3JhdGUgd2l0aCB3ZWIgc2VydmljZXMuCgotIFNpbXBsZSBpbnRlcmZhY2UgZm9yIGJ1aWxkaW5nIHF1ZXJ5IHN0cmluZ3MsIFBPU1QgcmVxdWVzdHMsIHN0cmVhbWluZyBsYXJnZQogIHVwbG9hZHMsIHN0cmVhbWluZyBsYXJnZSBkb3dubG9hZHMsIHVzaW5nIEhUVFAgY29va2llcywgdXBsb2FkaW5nIEpTT04gZGF0YSwKICBldGMuLi4KLSBDYW4gc2VuZCBib3RoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgcmVxdWVzdHMgdXNpbmcgdGhlIHNhbWUgaW50ZXJmYWNlLgotIFVzZXMgUFNSLTcgaW50ZXJmYWNlcyBmb3IgcmVxdWVzdHMsIHJlc3BvbnNlcywgYW5kIHN0cmVhbXMuIFRoaXMgYWxsb3dzIHlvdQogIHRvIHV0aWxpemUgb3RoZXIgUFNSLTcgY29tcGF0aWJsZSBsaWJyYXJpZXMgd2l0aCBHdXp6bGUuCi0gQWJzdHJhY3RzIGF3YXkgdGhlIHVuZGVybHlpbmcgSFRUUCB0cmFuc3BvcnQsIGFsbG93aW5nIHlvdSB0byB3cml0ZQogIGVudmlyb25tZW50IGFuZCB0cmFuc3BvcnQgYWdub3N0aWMgY29kZTsgaS5lLiwgbm8gaGFyZCBkZXBlbmRlbmN5IG9uIGNVUkwsCiAgUEhQIHN0cmVhbXMsIHNvY2tldHMsIG9yIG5vbi1ibG9ja2luZyBldmVudCBsb29wcy4KLSBNaWRkbGV3YXJlIHN5c3RlbSBhbGxvd3MgeW91IHRvIGF1Z21lbnQgYW5kIGNvbXBvc2UgY2xpZW50IGJlaGF2aW9yLgoKYGBgcGhwCiRjbGllbnQgPSBuZXcgXEd1enpsZUh0dHBcQ2xpZW50KCk7CiRyZXMgPSAkY2xpZW50LT5yZXF1ZXN0KCdHRVQnLCAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvZ3V6emxlJyk7CmVjaG8gJHJlcy0+Z2V0U3RhdHVzQ29kZSgpOwovLyAyMDAKZWNobyAkcmVzLT5nZXRIZWFkZXJMaW5lKCdjb250ZW50LXR5cGUnKTsKLy8gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmOCcKZWNobyAkcmVzLT5nZXRCb2R5KCk7Ci8vICd7ImlkIjogMTQyMDA1MywgIm5hbWUiOiAiZ3V6emxlIiwgLi4ufScKCi8vIFNlbmQgYW4gYXN5bmNocm9ub3VzIHJlcXVlc3QuCiRyZXF1ZXN0ID0gbmV3IFxHdXp6bGVIdHRwXFBzcjdcUmVxdWVzdCgnR0VUJywgJ2h0dHA6Ly9odHRwYmluLm9yZycpOwokcHJvbWlzZSA9ICRjbGllbnQtPnNlbmRBc3luYygkcmVxdWVzdCktPnRoZW4oZnVuY3Rpb24gKCRyZXNwb25zZSkgewogICAgZWNobyAnSSBjb21wbGV0ZWQhICcgLiAkcmVzcG9uc2UtPmdldEJvZHkoKTsKfSk7CiRwcm9taXNlLT53YWl0KCk7CmBgYAoKIyMgSGVscCBhbmQgZG9jcwoKLSBbRG9jdW1lbnRhdGlvbl0oaHR0cDovL2d1enpsZXBocC5vcmcvKQotIFtTdGFjayBPdmVyZmxvd10oaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvZ3V6emxlKQotIFtHaXR0ZXJdKGh0dHBzOi8vZ2l0dGVyLmltL2d1enpsZS9ndXp6bGUpCgoKIyMgSW5zdGFsbGluZyBHdXp6bGUKClRoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zdGFsbCBHdXp6bGUgaXMgdGhyb3VnaApbQ29tcG9zZXJdKGh0dHA6Ly9nZXRjb21wb3Nlci5vcmcpLgoKYGBgYmFzaAojIEluc3RhbGwgQ29tcG9zZXIKY3VybCAtc1MgaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvaW5zdGFsbGVyIHwgcGhwCmBgYAoKTmV4dCwgcnVuIHRoZSBDb21wb3NlciBjb21tYW5kIHRvIGluc3RhbGwgdGhlIGxhdGVzdCBzdGFibGUgdmVyc2lvbiBvZiBHdXp6bGU6CgpgYGBiYXNoCnBocCBjb21wb3Nlci5waGFyIHJlcXVpcmUgZ3V6emxlaHR0cC9ndXp6bGUKYGBgCgpBZnRlciBpbnN0YWxsaW5nLCB5b3UgbmVlZCB0byByZXF1aXJlIENvbXBvc2VyJ3MgYXV0b2xvYWRlcjoKCmBgYHBocApyZXF1aXJlICd2ZW5kb3IvYXV0b2xvYWQucGhwJzsKYGBgCgpZb3UgY2FuIHRoZW4gbGF0ZXIgdXBkYXRlIEd1enpsZSB1c2luZyBjb21wb3NlcjoKCiBgYGBiYXNoCmNvbXBvc2VyLnBoYXIgdXBkYXRlCiBgYGAKCgojIyBWZXJzaW9uIEd1aWRhbmNlCgp8IFZlcnNpb24gfCBTdGF0dXMgICAgIHwgUGFja2FnaXN0ICAgICAgICAgICB8IE5hbWVzcGFjZSAgICB8IFJlcG8gICAgICAgICAgICAgICAgfCBEb2NzICAgICAgICAgICAgICAgIHwgUFNSLTcgfCBQSFAgVmVyc2lvbiB8CnwtLS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCAzLnggICAgIHwgRU9MICAgICAgICB8IGBndXp6bGUvZ3V6emxlYCAgICAgfCBgR3V6emxlYCAgICAgfCBbdjNdW2d1enpsZS0zLXJlcG9dIHwgW3YzXVtndXp6bGUtMy1kb2NzXSB8IE5vICAgIHwgPj0gNS4zLjMgICAgfAp8IDQueCAgICAgfCBFT0wgICAgICAgIHwgYGd1enpsZWh0dHAvZ3V6emxlYCB8IGBHdXp6bGVIdHRwYCB8IFt2NF1bZ3V6emxlLTQtcmVwb10gfCBOL0EgICAgICAgICAgICAgICAgIHwgTm8gICAgfCA+PSA1LjQgICAgICB8CnwgNS54ICAgICB8IE1haW50YWluZWQgfCBgZ3V6emxlaHR0cC9ndXp6bGVgIHwgYEd1enpsZUh0dHBgIHwgW3Y1XVtndXp6bGUtNS1yZXBvXSB8IFt2NV1bZ3V6emxlLTUtZG9jc10gfCBObyAgICB8ID49IDUuNCAgICAgIHwKfCA2LnggICAgIHwgTGF0ZXN0ICAgICB8IGBndXp6bGVodHRwL2d1enpsZWAgfCBgR3V6emxlSHR0cGAgfCBbdjZdW2d1enpsZS02LXJlcG9dIHwgW3Y2XVtndXp6bGUtNi1kb2NzXSB8IFllcyAgIHwgPj0gNS41ICAgICAgfAoKW2d1enpsZS0zLXJlcG9dOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZTMKW2d1enpsZS00LXJlcG9dOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS90cmVlLzQueApbZ3V6emxlLTUtcmVwb106IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3RyZWUvNS4zCltndXp6bGUtNi1yZXBvXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUKW2d1enpsZS0zLWRvY3NdOiBodHRwOi8vZ3V6emxlMy5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0LwpbZ3V6emxlLTUtZG9jc106IGh0dHA6Ly9ndXp6bGUucmVhZHRoZWRvY3Mub3JnL2VuLzUuMy8KW2d1enpsZS02LWRvY3NdOiBodHRwOi8vZ3V6emxlLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Client.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxDb29raWVcQ29va2llSmFyOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQc3I3Owp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIEBtZXRob2QgUmVzcG9uc2VJbnRlcmZhY2UgZ2V0KHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICogQG1ldGhvZCBSZXNwb25zZUludGVyZmFjZSBoZWFkKHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICogQG1ldGhvZCBSZXNwb25zZUludGVyZmFjZSBwdXQoc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKQogKiBAbWV0aG9kIFJlc3BvbnNlSW50ZXJmYWNlIHBvc3Qoc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKQogKiBAbWV0aG9kIFJlc3BvbnNlSW50ZXJmYWNlIHBhdGNoKHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICogQG1ldGhvZCBSZXNwb25zZUludGVyZmFjZSBkZWxldGUoc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKQogKiBAbWV0aG9kIFByb21pc2VcUHJvbWlzZUludGVyZmFjZSBnZXRBc3luYyhzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmksIGFycmF5ICRvcHRpb25zID0gW10pCiAqIEBtZXRob2QgUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlIGhlYWRBc3luYyhzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmksIGFycmF5ICRvcHRpb25zID0gW10pCiAqIEBtZXRob2QgUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlIHB1dEFzeW5jKHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICogQG1ldGhvZCBQcm9taXNlXFByb21pc2VJbnRlcmZhY2UgcG9zdEFzeW5jKHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICogQG1ldGhvZCBQcm9taXNlXFByb21pc2VJbnRlcmZhY2UgcGF0Y2hBc3luYyhzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmksIGFycmF5ICRvcHRpb25zID0gW10pCiAqIEBtZXRob2QgUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlIGRlbGV0ZUFzeW5jKHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICovCmNsYXNzIENsaWVudCBpbXBsZW1lbnRzIENsaWVudEludGVyZmFjZQp7CiAgICAvKiogQHZhciBhcnJheSBEZWZhdWx0IHJlcXVlc3Qgb3B0aW9ucyAqLwogICAgcHJpdmF0ZSAkY29uZmlnOwoKICAgIC8qKgogICAgICogQ2xpZW50cyBhY2NlcHQgYW4gYXJyYXkgb2YgY29uc3RydWN0b3IgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBjcmVhdGluZyBhIGNsaWVudCB1c2luZyBhIGJhc2VfdXJpIGFuZCBhbiBhcnJheSBvZgogICAgICogZGVmYXVsdCByZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gZWFjaCByZXF1ZXN0OgogICAgICoKICAgICAqICAgICAkY2xpZW50ID0gbmV3IENsaWVudChbCiAgICAgKiAgICAgICAgICdiYXNlX3VyaScgICAgICAgID0+ICdodHRwOi8vd3d3LmZvby5jb20vMS4wLycsCiAgICAgKiAgICAgICAgICd0aW1lb3V0JyAgICAgICAgID0+IDAsCiAgICAgKiAgICAgICAgICdhbGxvd19yZWRpcmVjdHMnID0+IGZhbHNlLAogICAgICogICAgICAgICAncHJveHknICAgICAgICAgICA9PiAnMTkyLjE2OC4xNi4xOjEwJwogICAgICogICAgIF0pOwogICAgICoKICAgICAqIENsaWVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBvcHRpb25zOgogICAgICoKICAgICAqIC0gaGFuZGxlcjogKGNhbGxhYmxlKSBGdW5jdGlvbiB0aGF0IHRyYW5zZmVycyBIVFRQIHJlcXVlc3RzIG92ZXIgdGhlCiAgICAgKiAgIHdpcmUuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIFBzcjdcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2UKICAgICAqICAgYW5kIGFycmF5IG9mIHRyYW5zZmVyIG9wdGlvbnMsIGFuZCBtdXN0IHJldHVybiBhCiAgICAgKiAgIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlIHRoYXQgaXMgZnVsZmlsbGVkIHdpdGggYQogICAgICogICBQc3I3XEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZSBvbiBzdWNjZXNzLiAiaGFuZGxlciIgaXMgYQogICAgICogICBjb25zdHJ1Y3RvciBvbmx5IG9wdGlvbiB0aGF0IGNhbm5vdCBiZSBvdmVycmlkZGVuIGluIHBlci9yZXF1ZXN0CiAgICAgKiAgIG9wdGlvbnMuIElmIG5vIGhhbmRsZXIgaXMgcHJvdmlkZWQsIGEgZGVmYXVsdCBoYW5kbGVyIHdpbGwgYmUgY3JlYXRlZAogICAgICogICB0aGF0IGVuYWJsZXMgYWxsIG9mIHRoZSByZXF1ZXN0IG9wdGlvbnMgYmVsb3cgYnkgYXR0YWNoaW5nIGFsbCBvZiB0aGUKICAgICAqICAgZGVmYXVsdCBtaWRkbGV3YXJlIHRvIHRoZSBoYW5kbGVyLgogICAgICogLSBiYXNlX3VyaTogKHN0cmluZ3xVcmlJbnRlcmZhY2UpIEJhc2UgVVJJIG9mIHRoZSBjbGllbnQgdGhhdCBpcyBtZXJnZWQKICAgICAqICAgaW50byByZWxhdGl2ZSBVUklzLiBDYW4gYmUgYSBzdHJpbmcgb3IgaW5zdGFuY2Ugb2YgVXJpSW50ZXJmYWNlLgogICAgICogLSAqKjogYW55IHJlcXVlc3Qgb3B0aW9uCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjb25maWcgQ2xpZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MuCiAgICAgKgogICAgICogQHNlZSBcR3V6emxlSHR0cFxSZXF1ZXN0T3B0aW9ucyBmb3IgYSBsaXN0IG9mIGF2YWlsYWJsZSByZXF1ZXN0IG9wdGlvbnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkY29uZmlnID0gW10pCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkY29uZmlnWydoYW5kbGVyJ10pKSB7CiAgICAgICAgICAgICRjb25maWdbJ2hhbmRsZXInXSA9IEhhbmRsZXJTdGFjazo6Y3JlYXRlKCk7CiAgICAgICAgfSBlbHNlaWYgKCFpc19jYWxsYWJsZSgkY29uZmlnWydoYW5kbGVyJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdoYW5kbGVyIG11c3QgYmUgYSBjYWxsYWJsZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ29udmVydCB0aGUgYmFzZV91cmkgdG8gYSBVcmlJbnRlcmZhY2UKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1snYmFzZV91cmknXSkpIHsKICAgICAgICAgICAgJGNvbmZpZ1snYmFzZV91cmknXSA9IFBzcjdcdXJpX2ZvcigkY29uZmlnWydiYXNlX3VyaSddKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jb25maWd1cmVEZWZhdWx0cygkY29uZmlnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCRtZXRob2QsICRhcmdzKQogICAgewogICAgICAgIGlmIChjb3VudCgkYXJncykgPCAxKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdNYWdpYyByZXF1ZXN0IG1ldGhvZHMgcmVxdWlyZSBhIFVSSSBhbmQgb3B0aW9uYWwgb3B0aW9ucyBhcnJheScpOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9ICRhcmdzWzBdOwogICAgICAgICRvcHRzID0gaXNzZXQoJGFyZ3NbMV0pID8gJGFyZ3NbMV0gOiBbXTsKCiAgICAgICAgcmV0dXJuIHN1YnN0cigkbWV0aG9kLCAtNSkgPT09ICdBc3luYycKICAgICAgICAgICAgPyAkdGhpcy0+cmVxdWVzdEFzeW5jKHN1YnN0cigkbWV0aG9kLCAwLCAtNSksICR1cmksICRvcHRzKQogICAgICAgICAgICA6ICR0aGlzLT5yZXF1ZXN0KCRtZXRob2QsICR1cmksICRvcHRzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEFzeW5jKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgLy8gTWVyZ2UgdGhlIGJhc2UgVVJJIGludG8gdGhlIHJlcXVlc3QgVVJJIGlmIG5lZWRlZC4KICAgICAgICAkb3B0aW9ucyA9ICR0aGlzLT5wcmVwYXJlRGVmYXVsdHMoJG9wdGlvbnMpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnRyYW5zZmVyKAogICAgICAgICAgICAkcmVxdWVzdC0+d2l0aFVyaSgkdGhpcy0+YnVpbGRVcmkoJHJlcXVlc3QtPmdldFVyaSgpLCAkb3B0aW9ucyksICRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0hvc3QnKSksCiAgICAgICAgICAgICRvcHRpb25zCiAgICAgICAgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICRvcHRpb25zW1JlcXVlc3RPcHRpb25zOjpTWU5DSFJPTk9VU10gPSB0cnVlOwogICAgICAgIHJldHVybiAkdGhpcy0+c2VuZEFzeW5jKCRyZXF1ZXN0LCAkb3B0aW9ucyktPndhaXQoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVxdWVzdEFzeW5jKCRtZXRob2QsICR1cmkgPSAnJywgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICAkb3B0aW9ucyA9ICR0aGlzLT5wcmVwYXJlRGVmYXVsdHMoJG9wdGlvbnMpOwogICAgICAgIC8vIFJlbW92ZSByZXF1ZXN0IG1vZGlmeWluZyBwYXJhbWV0ZXIgYmVjYXVzZSBpdCBjYW4gYmUgZG9uZSB1cC1mcm9udC4KICAgICAgICAkaGVhZGVycyA9IGlzc2V0KCRvcHRpb25zWydoZWFkZXJzJ10pID8gJG9wdGlvbnNbJ2hlYWRlcnMnXSA6IFtdOwogICAgICAgICRib2R5ID0gaXNzZXQoJG9wdGlvbnNbJ2JvZHknXSkgPyAkb3B0aW9uc1snYm9keSddIDogbnVsbDsKICAgICAgICAkdmVyc2lvbiA9IGlzc2V0KCRvcHRpb25zWyd2ZXJzaW9uJ10pID8gJG9wdGlvbnNbJ3ZlcnNpb24nXSA6ICcxLjEnOwogICAgICAgIC8vIE1lcmdlIHRoZSBVUkkgaW50byB0aGUgYmFzZSBVUkkuCiAgICAgICAgJHVyaSA9ICR0aGlzLT5idWlsZFVyaSgkdXJpLCAkb3B0aW9ucyk7CiAgICAgICAgaWYgKGlzX2FycmF5KCRib2R5KSkgewogICAgICAgICAgICAkdGhpcy0+aW52YWxpZEJvZHkoKTsKICAgICAgICB9CiAgICAgICAgJHJlcXVlc3QgPSBuZXcgUHNyN1xSZXF1ZXN0KCRtZXRob2QsICR1cmksICRoZWFkZXJzLCAkYm9keSwgJHZlcnNpb24pOwogICAgICAgIC8vIFJlbW92ZSB0aGUgb3B0aW9uIHNvIHRoYXQgdGhleSBhcmUgbm90IGRvdWJseS1hcHBsaWVkLgogICAgICAgIHVuc2V0KCRvcHRpb25zWydoZWFkZXJzJ10sICRvcHRpb25zWydib2R5J10sICRvcHRpb25zWyd2ZXJzaW9uJ10pOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnRyYW5zZmVyKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3QoJG1ldGhvZCwgJHVyaSA9ICcnLCBhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICRvcHRpb25zW1JlcXVlc3RPcHRpb25zOjpTWU5DSFJPTk9VU10gPSB0cnVlOwogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdEFzeW5jKCRtZXRob2QsICR1cmksICRvcHRpb25zKS0+d2FpdCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWcoJG9wdGlvbiA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuICRvcHRpb24gPT09IG51bGwKICAgICAgICAgICAgPyAkdGhpcy0+Y29uZmlnCiAgICAgICAgICAgIDogKGlzc2V0KCR0aGlzLT5jb25maWdbJG9wdGlvbl0pID8gJHRoaXMtPmNvbmZpZ1skb3B0aW9uXSA6IG51bGwpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYnVpbGRVcmkoJHVyaSwgYXJyYXkgJGNvbmZpZykKICAgIHsKICAgICAgICAvLyBmb3IgQkMgd2UgYWNjZXB0IG51bGwgd2hpY2ggd291bGQgb3RoZXJ3aXNlIGZhaWwgaW4gdXJpX2ZvcgogICAgICAgICR1cmkgPSBQc3I3XHVyaV9mb3IoJHVyaSA9PT0gbnVsbCA/ICcnIDogJHVyaSk7CgogICAgICAgIGlmIChpc3NldCgkY29uZmlnWydiYXNlX3VyaSddKSkgewogICAgICAgICAgICAkdXJpID0gUHNyN1xVcmlSZXNvbHZlcjo6cmVzb2x2ZShQc3I3XHVyaV9mb3IoJGNvbmZpZ1snYmFzZV91cmknXSksICR1cmkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmktPmdldFNjaGVtZSgpID09PSAnJyAmJiAkdXJpLT5nZXRIb3N0KCkgIT09ICcnID8gJHVyaS0+d2l0aFNjaGVtZSgnaHR0cCcpIDogJHVyaTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbmZpZ3VyZXMgdGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgYSBjbGllbnQuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjb25maWcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb25maWd1cmVEZWZhdWx0cyhhcnJheSAkY29uZmlnKQogICAgewogICAgICAgICRkZWZhdWx0cyA9IFsKICAgICAgICAgICAgJ2FsbG93X3JlZGlyZWN0cycgPT4gUmVkaXJlY3RNaWRkbGV3YXJlOjokZGVmYXVsdFNldHRpbmdzLAogICAgICAgICAgICAnaHR0cF9lcnJvcnMnICAgICA9PiB0cnVlLAogICAgICAgICAgICAnZGVjb2RlX2NvbnRlbnQnICA9PiB0cnVlLAogICAgICAgICAgICAndmVyaWZ5JyAgICAgICAgICA9PiB0cnVlLAogICAgICAgICAgICAnY29va2llcycgICAgICAgICA9PiBmYWxzZQogICAgICAgIF07CgogICAgICAgIC8vIFVzZSB0aGUgc3RhbmRhcmQgTGludXggSFRUUF9QUk9YWSBhbmQgSFRUUFNfUFJPWFkgaWYgc2V0LgoKICAgICAgICAvLyBXZSBjYW4gb25seSB0cnVzdCB0aGUgSFRUUF9QUk9YWSBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBhIENMSQogICAgICAgIC8vIHByb2Nlc3MgZHVlIHRvIHRoZSBmYWN0IHRoYXQgUEhQIGhhcyBubyByZWxpYWJsZSBtZWNoYW5pc20gdG8KICAgICAgICAvLyBnZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRoYXQgc3RhcnQgd2l0aCAiSFRUUF8iLgogICAgICAgIGlmIChwaHBfc2FwaV9uYW1lKCkgPT0gJ2NsaScgJiYgZ2V0ZW52KCdIVFRQX1BST1hZJykpIHsKICAgICAgICAgICAgJGRlZmF1bHRzWydwcm94eSddWydodHRwJ10gPSBnZXRlbnYoJ0hUVFBfUFJPWFknKTsKICAgICAgICB9CgogICAgICAgIGlmICgkcHJveHkgPSBnZXRlbnYoJ0hUVFBTX1BST1hZJykpIHsKICAgICAgICAgICAgJGRlZmF1bHRzWydwcm94eSddWydodHRwcyddID0gJHByb3h5OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRub1Byb3h5ID0gZ2V0ZW52KCdOT19QUk9YWScpKSB7CiAgICAgICAgICAgICRjbGVhbmVkTm9Qcm94eSA9IHN0cl9yZXBsYWNlKCcgJywgJycsICRub1Byb3h5KTsKICAgICAgICAgICAgJGRlZmF1bHRzWydwcm94eSddWydubyddID0gZXhwbG9kZSgnLCcsICRjbGVhbmVkTm9Qcm94eSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y29uZmlnID0gJGNvbmZpZyArICRkZWZhdWx0czsKCiAgICAgICAgaWYgKCFlbXB0eSgkY29uZmlnWydjb29raWVzJ10pICYmICRjb25maWdbJ2Nvb2tpZXMnXSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAkdGhpcy0+Y29uZmlnWydjb29raWVzJ10gPSBuZXcgQ29va2llSmFyKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgdGhlIGRlZmF1bHQgdXNlci1hZ2VudCBoZWFkZXIuCiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+Y29uZmlnWydoZWFkZXJzJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5jb25maWdbJ2hlYWRlcnMnXSA9IFsnVXNlci1BZ2VudCcgPT4gZGVmYXVsdF91c2VyX2FnZW50KCldOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEFkZCB0aGUgVXNlci1BZ2VudCBoZWFkZXIgaWYgb25lIHdhcyBub3QgYWxyZWFkeSBzZXQuCiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddKSBhcyAkbmFtZSkgewogICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoJG5hbWUpID09PSAndXNlci1hZ2VudCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddWydVc2VyLUFnZW50J10gPSBkZWZhdWx0X3VzZXJfYWdlbnQoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBNZXJnZXMgZGVmYXVsdCBvcHRpb25zIGludG8gdGhlIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBPcHRpb25zIHRvIG1vZGlmeSBieSByZWZlcmVuY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcHJlcGFyZURlZmF1bHRzKCRvcHRpb25zKQogICAgewogICAgICAgICRkZWZhdWx0cyA9ICR0aGlzLT5jb25maWc7CgogICAgICAgIGlmICghZW1wdHkoJGRlZmF1bHRzWydoZWFkZXJzJ10pKSB7CiAgICAgICAgICAgIC8vIERlZmF1bHQgaGVhZGVycyBhcmUgb25seSBhZGRlZCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudC4KICAgICAgICAgICAgJGRlZmF1bHRzWydfY29uZGl0aW9uYWwnXSA9ICRkZWZhdWx0c1snaGVhZGVycyddOwogICAgICAgICAgICB1bnNldCgkZGVmYXVsdHNbJ2hlYWRlcnMnXSk7CiAgICAgICAgfQoKICAgICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBoZWFkZXJzIGlzIHJlcXVpcmVkIGFzIHRoZXkgYXJlIGFkZGVkIGFzCiAgICAgICAgLy8gY29uZGl0aW9uYWwgaGVhZGVycyBhbmQgYXMgaGVhZGVycyBwYXNzZWQgdG8gYSByZXF1ZXN0IGN0b3IuCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcnMnLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgLy8gQWxsb3dzIGRlZmF1bHQgaGVhZGVycyB0byBiZSB1bnNldC4KICAgICAgICAgICAgaWYgKCRvcHRpb25zWydoZWFkZXJzJ10gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRkZWZhdWx0c1snX2NvbmRpdGlvbmFsJ10gPSBudWxsOwogICAgICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2hlYWRlcnMnXSk7CiAgICAgICAgICAgIH0gZWxzZWlmICghaXNfYXJyYXkoJG9wdGlvbnNbJ2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdoZWFkZXJzIG11c3QgYmUgYW4gYXJyYXknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gU2hhbGxvdyBtZXJnZSBkZWZhdWx0cyB1bmRlcm5lYXRoIG9wdGlvbnMuCiAgICAgICAgJHJlc3VsdCA9ICRvcHRpb25zICsgJGRlZmF1bHRzOwoKICAgICAgICAvLyBSZW1vdmUgbnVsbCB2YWx1ZXMuCiAgICAgICAgZm9yZWFjaCAoJHJlc3VsdCBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoJHYgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRyZXN1bHRbJGtdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmFuc2ZlcnMgdGhlIGdpdmVuIHJlcXVlc3QgYW5kIGFwcGxpZXMgcmVxdWVzdCBvcHRpb25zLgogICAgICoKICAgICAqIFRoZSBVUkkgb2YgdGhlIHJlcXVlc3QgaXMgbm90IG1vZGlmaWVkIGFuZCB0aGUgcmVxdWVzdCBvcHRpb25zIGFyZSB1c2VkCiAgICAgKiBhcy1pcyB3aXRob3V0IG1lcmdpbmcgaW4gZGVmYXVsdCBvcHRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkb3B0aW9ucwogICAgICoKICAgICAqIEByZXR1cm4gUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJhbnNmZXIoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpCiAgICB7CiAgICAgICAgLy8gc2F2ZV90byAtPiBzaW5rCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzYXZlX3RvJ10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydzaW5rJ10gPSAkb3B0aW9uc1snc2F2ZV90byddOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snc2F2ZV90byddKTsKICAgICAgICB9CgogICAgICAgIC8vIGV4Y2VwdGlvbnMgLT4gaHR0cF9lcnJvcnMKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2V4Y2VwdGlvbnMnXSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ2h0dHBfZXJyb3JzJ10gPSAkb3B0aW9uc1snZXhjZXB0aW9ucyddOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snZXhjZXB0aW9ucyddKTsKICAgICAgICB9CgogICAgICAgICRyZXF1ZXN0ID0gJHRoaXMtPmFwcGx5T3B0aW9ucygkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICRoYW5kbGVyID0gJG9wdGlvbnNbJ2hhbmRsZXInXTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2VccHJvbWlzZV9mb3IoJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKSk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gUHJvbWlzZVxyZWplY3Rpb25fZm9yKCRlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBsaWVzIHRoZSBhcnJheSBvZiByZXF1ZXN0IG9wdGlvbnMgdG8gYSByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkb3B0aW9ucwogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5T3B0aW9ucyhSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMpCiAgICB7CiAgICAgICAgJG1vZGlmeSA9IFsKICAgICAgICAgICAgJ3NldF9oZWFkZXJzJyA9PiBbXSwKICAgICAgICBdOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXSA9ICRvcHRpb25zWydoZWFkZXJzJ107CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydoZWFkZXJzJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydmb3JtX3BhcmFtcyddKSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ211bHRpcGFydCddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1lvdSBjYW5ub3QgdXNlICcKICAgICAgICAgICAgICAgICAgICAuICdmb3JtX3BhcmFtcyBhbmQgbXVsdGlwYXJ0IGF0IHRoZSBzYW1lIHRpbWUuIFVzZSB0aGUgJwogICAgICAgICAgICAgICAgICAgIC4gJ2Zvcm1fcGFyYW1zIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBzZW5kIGFwcGxpY2F0aW9uLycKICAgICAgICAgICAgICAgICAgICAuICd4LXd3dy1mb3JtLXVybGVuY29kZWQgcmVxdWVzdHMsIGFuZCB0aGUgbXVsdGlwYXJ0ICcKICAgICAgICAgICAgICAgICAgICAuICdvcHRpb24gdG8gc2VuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHJlcXVlc3RzLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvcHRpb25zWydib2R5J10gPSBodHRwX2J1aWxkX3F1ZXJ5KCRvcHRpb25zWydmb3JtX3BhcmFtcyddLCAnJywgJyYnKTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2Zvcm1fcGFyYW1zJ10pOwogICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBkb24ndCBoYXZlIHRoZSBoZWFkZXIgaW4gZGlmZmVyZW50IGNhc2UgYW5kIHNldCB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10gPSBQc3I3XF9jYXNlbGVzc19yZW1vdmUoWydDb250ZW50LVR5cGUnXSwgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddKTsKICAgICAgICAgICAgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydtdWx0aXBhcnQnXSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ2JvZHknXSA9IG5ldyBQc3I3XE11bHRpcGFydFN0cmVhbSgkb3B0aW9uc1snbXVsdGlwYXJ0J10pOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snbXVsdGlwYXJ0J10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydqc29uJ10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydib2R5J10gPSBcR3V6emxlSHR0cFxqc29uX2VuY29kZSgkb3B0aW9uc1snanNvbiddKTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2pzb24nXSk7CiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgdGhlIGhlYWRlciBpbiBkaWZmZXJlbnQgY2FzZSBhbmQgc2V0IHRoZSBuZXcgdmFsdWUuCiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcX2Nhc2VsZXNzX3JlbW92ZShbJ0NvbnRlbnQtVHlwZSddLCAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pOwogICAgICAgICAgICAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ11bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXSkKICAgICAgICAgICAgJiYgJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10gIT09IHRydWUKICAgICAgICApIHsKICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0aGUgaGVhZGVyIGluIGRpZmZlcmVudCBjYXNlIGFuZCBzZXQgdGhlIG5ldyB2YWx1ZS4KICAgICAgICAgICAgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddID0gUHNyN1xfY2FzZWxlc3NfcmVtb3ZlKFsnQWNjZXB0LUVuY29kaW5nJ10sICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0FjY2VwdC1FbmNvZGluZyddID0gJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J107CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2JvZHknXSkpIHsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRvcHRpb25zWydib2R5J10pKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW52YWxpZEJvZHkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbW9kaWZ5Wydib2R5J10gPSBQc3I3XHN0cmVhbV9mb3IoJG9wdGlvbnNbJ2JvZHknXSk7CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydib2R5J10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snYXV0aCddKSAmJiBpc19hcnJheSgkb3B0aW9uc1snYXV0aCddKSkgewogICAgICAgICAgICAkdmFsdWUgPSAkb3B0aW9uc1snYXV0aCddOwogICAgICAgICAgICAkdHlwZSA9IGlzc2V0KCR2YWx1ZVsyXSkgPyBzdHJ0b2xvd2VyKCR2YWx1ZVsyXSkgOiAnYmFzaWMnOwogICAgICAgICAgICBzd2l0Y2ggKCR0eXBlKSB7CiAgICAgICAgICAgICAgICBjYXNlICdiYXNpYyc6CiAgICAgICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0aGUgaGVhZGVyIGluIGRpZmZlcmVudCBjYXNlIGFuZCBzZXQgdGhlIG5ldyB2YWx1ZS4KICAgICAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddID0gUHNyN1xfY2FzZWxlc3NfcmVtb3ZlKFsnQXV0aG9yaXphdGlvbiddLCAkbW9kaWZ5WydzZXRfaGVhZGVycyddKTsKICAgICAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydBdXRob3JpemF0aW9uJ10gPSAnQmFzaWMgJwogICAgICAgICAgICAgICAgICAgICAgICAuIGJhc2U2NF9lbmNvZGUoIiR2YWx1ZVswXTokdmFsdWVbMV0iKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2RpZ2VzdCc6CiAgICAgICAgICAgICAgICAgICAgLy8gQHRvZG86IERvIG5vdCByZWx5IG9uIGN1cmwKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1snY3VybCddW0NVUkxPUFRfSFRUUEFVVEhdID0gQ1VSTEFVVEhfRElHRVNUOwogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bQ1VSTE9QVF9VU0VSUFdEXSA9ICIkdmFsdWVbMF06JHZhbHVlWzFdIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ250bG0nOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bQ1VSTE9QVF9IVFRQQVVUSF0gPSBDVVJMQVVUSF9OVExNOwogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bQ1VSTE9QVF9VU0VSUFdEXSA9ICIkdmFsdWVbMF06JHZhbHVlWzFdIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydxdWVyeSddKSkgewogICAgICAgICAgICAkdmFsdWUgPSAkb3B0aW9uc1sncXVlcnknXTsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IGh0dHBfYnVpbGRfcXVlcnkoJHZhbHVlLCBudWxsLCAnJicsIFBIUF9RVUVSWV9SRkMzOTg2KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigncXVlcnkgbXVzdCBiZSBhIHN0cmluZyBvciBhcnJheScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtb2RpZnlbJ3F1ZXJ5J10gPSAkdmFsdWU7CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydxdWVyeSddKTsKICAgICAgICB9CgogICAgICAgIC8vIEVuc3VyZSB0aGF0IHNpbmsgaXMgbm90IGFuIGludmFsaWQgdmFsdWUuCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzaW5rJ10pKSB7CiAgICAgICAgICAgIC8vIFRPRE86IEFkZCBtb3JlIHNpbmsgdmFsaWRhdGlvbj8KICAgICAgICAgICAgaWYgKGlzX2Jvb2woJG9wdGlvbnNbJ3NpbmsnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdzaW5rIG11c3Qgbm90IGJlIGEgYm9vbGVhbicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcmVxdWVzdCA9IFBzcjdcbW9kaWZ5X3JlcXVlc3QoJHJlcXVlc3QsICRtb2RpZnkpOwogICAgICAgIGlmICgkcmVxdWVzdC0+Z2V0Qm9keSgpIGluc3RhbmNlb2YgUHNyN1xNdWx0aXBhcnRTdHJlYW0pIHsKICAgICAgICAgICAgLy8gVXNlIGEgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBQT1NUIGlmIGEgQ29udGVudC1UeXBlIGlzIG5vdCBzZXQuCiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgdGhlIGhlYWRlciBpbiBkaWZmZXJlbnQgY2FzZSBhbmQgc2V0IHRoZSBuZXcgdmFsdWUuCiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcX2Nhc2VsZXNzX3JlbW92ZShbJ0NvbnRlbnQtVHlwZSddLCAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pOwogICAgICAgICAgICAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ11bJ0NvbnRlbnQtVHlwZSddID0gJ211bHRpcGFydC9mb3JtLWRhdGE7IGJvdW5kYXJ5PScKICAgICAgICAgICAgICAgIC4gJHJlcXVlc3QtPmdldEJvZHkoKS0+Z2V0Qm91bmRhcnkoKTsKICAgICAgICB9CgogICAgICAgIC8vIE1lcmdlIGluIGNvbmRpdGlvbmFsIGhlYWRlcnMgaWYgdGhleSBhcmUgbm90IHByZXNlbnQuCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydfY29uZGl0aW9uYWwnXSkpIHsKICAgICAgICAgICAgLy8gQnVpbGQgdXAgdGhlIGNoYW5nZXMgc28gaXQncyBpbiBhIHNpbmdsZSBjbG9uZSBvZiB0aGUgbWVzc2FnZS4KICAgICAgICAgICAgJG1vZGlmeSA9IFtdOwogICAgICAgICAgICBmb3JlYWNoICgkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10gYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcigkaykpIHsKICAgICAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWyRrXSA9ICR2OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZXF1ZXN0ID0gUHNyN1xtb2RpZnlfcmVxdWVzdCgkcmVxdWVzdCwgJG1vZGlmeSk7CiAgICAgICAgICAgIC8vIERvbid0IHBhc3MgdGhpcyBpbnRlcm5hbCB2YWx1ZSBhbG9uZyB0byBtaWRkbGV3YXJlL2hhbmRsZXJzLgogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXF1ZXN0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW52YWxpZEJvZHkoKQogICAgewogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdQYXNzaW5nIGluIHRoZSAiYm9keSIgcmVxdWVzdCAnCiAgICAgICAgICAgIC4gJ29wdGlvbiBhcyBhbiBhcnJheSB0byBzZW5kIGEgUE9TVCByZXF1ZXN0IGhhcyBiZWVuIGRlcHJlY2F0ZWQuICcKICAgICAgICAgICAgLiAnUGxlYXNlIHVzZSB0aGUgImZvcm1fcGFyYW1zIiByZXF1ZXN0IG9wdGlvbiB0byBzZW5kIGEgJwogICAgICAgICAgICAuICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgcmVxdWVzdCwgb3IgdGhlICJtdWx0aXBhcnQiICcKICAgICAgICAgICAgLiAncmVxdWVzdCBvcHRpb24gdG8gc2VuZCBhIG11bHRpcGFydC9mb3JtLWRhdGEgcmVxdWVzdC4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/ClientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxHdXp6bGVFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogQ2xpZW50IGludGVyZmFjZSBmb3Igc2VuZGluZyBIVFRQIHJlcXVlc3RzLgogKi8KaW50ZXJmYWNlIENsaWVudEludGVyZmFjZQp7CiAgICBjb25zdCBWRVJTSU9OID0gJzYuMy4zJzsKCiAgICAvKioKICAgICAqIFNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gc2VuZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5IHRvIHRoZSBnaXZlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBhbmQgdG8gdGhlIHRyYW5zZmVyLgogICAgICoKICAgICAqIEByZXR1cm4gUmVzcG9uc2VJbnRlcmZhY2UKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pOwoKICAgIC8qKgogICAgICogQXN5bmNocm9ub3VzbHkgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdCB0byBzZW5kCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGdpdmVuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGFuZCB0byB0aGUgdHJhbnNmZXIuCiAgICAgKgogICAgICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kQXN5bmMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJG1ldGhvZCAgSFRUUCBtZXRob2QuCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlc3BvbnNlSW50ZXJmYWNlCiAgICAgKiBAdGhyb3dzIEd1enpsZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVxdWVzdCgkbWV0aG9kLCAkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3RBc3luYygkbWV0aG9kLCAkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTsKCiAgICAvKioKICAgICAqIEdldCBhIGNsaWVudCBjb25maWd1cmF0aW9uIG9wdGlvbi4KICAgICAqCiAgICAgKiBUaGVzZSBvcHRpb25zIGluY2x1ZGUgZGVmYXVsdCByZXF1ZXN0IG9wdGlvbnMgb2YgdGhlIGNsaWVudCwgYSAiaGFuZGxlciIKICAgICAqIChpZiB1dGlsaXplZCBieSB0aGUgY29uY3JldGUgY2xpZW50KSwgYW5kIGEgImJhc2VfdXJpIiBpZiB1dGlsaXplZCBieQogICAgICogdGhlIGNvbmNyZXRlIGNsaWVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG9wdGlvbiBUaGUgY29uZmlnIG9wdGlvbiB0byByZXRyaWV2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWcoJG9wdGlvbiA9IG51bGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/CookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcQ29va2llOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CgovKioKICogQ29va2llIGphciB0aGF0IHN0b3JlcyBjb29raWVzIGFzIGFuIGFycmF5CiAqLwpjbGFzcyBDb29raWVKYXIgaW1wbGVtZW50cyBDb29raWVKYXJJbnRlcmZhY2UKewogICAgLyoqIEB2YXIgU2V0Q29va2llW10gTG9hZGVkIGNvb2tpZSBkYXRhICovCiAgICBwcml2YXRlICRjb29raWVzID0gW107CgogICAgLyoqIEB2YXIgYm9vbCAqLwogICAgcHJpdmF0ZSAkc3RyaWN0TW9kZTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBib29sICRzdHJpY3RNb2RlICAgU2V0IHRvIHRydWUgdG8gdGhyb3cgZXhjZXB0aW9ucyB3aGVuIGludmFsaWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2llcyBhcmUgYWRkZWQgdG8gdGhlIGNvb2tpZSBqYXIuCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvb2tpZUFycmF5IEFycmF5IG9mIFNldENvb2tpZSBvYmplY3RzIG9yIGEgaGFzaCBvZgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheXMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBTZXRDb29raWUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RydWN0b3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJpY3RNb2RlID0gZmFsc2UsICRjb29raWVBcnJheSA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5zdHJpY3RNb2RlID0gJHN0cmljdE1vZGU7CgogICAgICAgIGZvcmVhY2ggKCRjb29raWVBcnJheSBhcyAkY29va2llKSB7CiAgICAgICAgICAgIGlmICghKCRjb29raWUgaW5zdGFuY2VvZiBTZXRDb29raWUpKSB7CiAgICAgICAgICAgICAgICAkY29va2llID0gbmV3IFNldENvb2tpZSgkY29va2llKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+c2V0Q29va2llKCRjb29raWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBDb29raWUgamFyIGZyb20gYW4gYXNzb2NpYXRpdmUgYXJyYXkgYW5kIGRvbWFpbi4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICRjb29raWVzIENvb2tpZXMgdG8gY3JlYXRlIHRoZSBqYXIgZnJvbQogICAgICogQHBhcmFtIHN0cmluZyAkZG9tYWluICBEb21haW4gdG8gc2V0IHRoZSBjb29raWVzIHRvCiAgICAgKgogICAgICogQHJldHVybiBzZWxmCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUFycmF5KGFycmF5ICRjb29raWVzLCAkZG9tYWluKQogICAgewogICAgICAgICRjb29raWVKYXIgPSBuZXcgc2VsZigpOwogICAgICAgIGZvcmVhY2ggKCRjb29raWVzIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkY29va2llSmFyLT5zZXRDb29raWUobmV3IFNldENvb2tpZShbCiAgICAgICAgICAgICAgICAnRG9tYWluJyAgPT4gJGRvbWFpbiwKICAgICAgICAgICAgICAgICdOYW1lJyAgICA9PiAkbmFtZSwKICAgICAgICAgICAgICAgICdWYWx1ZScgICA9PiAkdmFsdWUsCiAgICAgICAgICAgICAgICAnRGlzY2FyZCcgPT4gdHJ1ZQogICAgICAgICAgICBdKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvb2tpZUphcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29va2llVmFsdWUoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBFdmFsdWF0ZSBpZiB0aGlzIGNvb2tpZSBzaG91bGQgYmUgcGVyc2lzdGVkIHRvIHN0b3JhZ2UKICAgICAqIHRoYXQgc3Vydml2ZXMgYmV0d2VlbiByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gU2V0Q29va2llICRjb29raWUgQmVpbmcgZXZhbHVhdGVkLgogICAgICogQHBhcmFtIGJvb2wgJGFsbG93U2Vzc2lvbkNvb2tpZXMgSWYgd2Ugc2hvdWxkIHBlcnNpc3Qgc2Vzc2lvbiBjb29raWVzCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaG91bGRQZXJzaXN0KAogICAgICAgIFNldENvb2tpZSAkY29va2llLAogICAgICAgICRhbGxvd1Nlc3Npb25Db29raWVzID0gZmFsc2UKICAgICkgewogICAgICAgIGlmICgkY29va2llLT5nZXRFeHBpcmVzKCkgfHwgJGFsbG93U2Vzc2lvbkNvb2tpZXMpIHsKICAgICAgICAgICAgaWYgKCEkY29va2llLT5nZXREaXNjYXJkKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyBhbmQgcmV0dXJucyB0aGUgY29va2llIGJhc2VkIG9uIHRoZSBuYW1lCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBjb29raWUgbmFtZSB0byBzZWFyY2ggZm9yCiAgICAgKiBAcmV0dXJuIFNldENvb2tpZXxudWxsIGNvb2tpZSB0aGF0IHdhcyBmb3VuZCBvciBudWxsIGlmIG5vdCBmb3VuZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29va2llQnlOYW1lKCRuYW1lKQogICAgewogICAgICAgIC8vIGRvbid0IGFsbG93IGEgbnVsbCBuYW1lCiAgICAgICAgaWYgKCRuYW1lID09PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y29va2llcyBhcyAkY29va2llKSB7CiAgICAgICAgICAgIGlmICgkY29va2llLT5nZXROYW1lKCkgIT09IG51bGwgJiYgc3RyY2FzZWNtcCgkY29va2llLT5nZXROYW1lKCksICRuYW1lKSA9PT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjb29raWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvQXJyYXkoKQogICAgewogICAgICAgIHJldHVybiBhcnJheV9tYXAoZnVuY3Rpb24gKFNldENvb2tpZSAkY29va2llKSB7CiAgICAgICAgICAgIHJldHVybiAkY29va2llLT50b0FycmF5KCk7CiAgICAgICAgfSwgJHRoaXMtPmdldEl0ZXJhdG9yKCktPmdldEFycmF5Q29weSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXIoJGRvbWFpbiA9IG51bGwsICRwYXRoID0gbnVsbCwgJG5hbWUgPSBudWxsKQogICAgewogICAgICAgIGlmICghJGRvbWFpbikgewogICAgICAgICAgICAkdGhpcy0+Y29va2llcyA9IFtdOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlaWYgKCEkcGF0aCkgewogICAgICAgICAgICAkdGhpcy0+Y29va2llcyA9IGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgICAgICR0aGlzLT5jb29raWVzLAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKFNldENvb2tpZSAkY29va2llKSB1c2UgKCRwYXRoLCAkZG9tYWluKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEkY29va2llLT5tYXRjaGVzRG9tYWluKCRkb21haW4pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZWlmICghJG5hbWUpIHsKICAgICAgICAgICAgJHRoaXMtPmNvb2tpZXMgPSBhcnJheV9maWx0ZXIoCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29va2llcywKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChTZXRDb29raWUgJGNvb2tpZSkgdXNlICgkcGF0aCwgJGRvbWFpbikgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKCRjb29raWUtPm1hdGNoZXNQYXRoKCRwYXRoKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAkY29va2llLT5tYXRjaGVzRG9tYWluKCRkb21haW4pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+Y29va2llcyA9IGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgICAgICR0aGlzLT5jb29raWVzLAogICAgICAgICAgICAgICAgZnVuY3Rpb24gKFNldENvb2tpZSAkY29va2llKSB1c2UgKCRwYXRoLCAkZG9tYWluLCAkbmFtZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKCRjb29raWUtPmdldE5hbWUoKSA9PSAkbmFtZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAkY29va2llLT5tYXRjaGVzUGF0aCgkcGF0aCkgJiYKICAgICAgICAgICAgICAgICAgICAgICAgJGNvb2tpZS0+bWF0Y2hlc0RvbWFpbigkZG9tYWluKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhclNlc3Npb25Db29raWVzKCkKICAgIHsKICAgICAgICAkdGhpcy0+Y29va2llcyA9IGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgJHRoaXMtPmNvb2tpZXMsCiAgICAgICAgICAgIGZ1bmN0aW9uIChTZXRDb29raWUgJGNvb2tpZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICEkY29va2llLT5nZXREaXNjYXJkKCkgJiYgJGNvb2tpZS0+Z2V0RXhwaXJlcygpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0Q29va2llKFNldENvb2tpZSAkY29va2llKQogICAgewogICAgICAgIC8vIElmIHRoZSBuYW1lIHN0cmluZyBpcyBlbXB0eSAoYnV0IG5vdCAwKSwgaWdub3JlIHRoZSBzZXQtY29va2llCiAgICAgICAgLy8gc3RyaW5nIGVudGlyZWx5LgogICAgICAgICRuYW1lID0gJGNvb2tpZS0+Z2V0TmFtZSgpOwogICAgICAgIGlmICghJG5hbWUgJiYgJG5hbWUgIT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBPbmx5IGFsbG93IGNvb2tpZXMgd2l0aCBzZXQgYW5kIHZhbGlkIGRvbWFpbiwgbmFtZSwgdmFsdWUKICAgICAgICAkcmVzdWx0ID0gJGNvb2tpZS0+dmFsaWRhdGUoKTsKICAgICAgICBpZiAoJHJlc3VsdCAhPT0gdHJ1ZSkgewogICAgICAgICAgICBpZiAoJHRoaXMtPnN0cmljdE1vZGUpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb29raWU6ICcgLiAkcmVzdWx0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZW1vdmVDb29raWVJZkVtcHR5KCRjb29raWUpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBSZXNvbHZlIGNvbmZsaWN0cyB3aXRoIHByZXZpb3VzbHkgc2V0IGNvb2tpZXMKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y29va2llcyBhcyAkaSA9PiAkYykgewoKICAgICAgICAgICAgLy8gVHdvIGNvb2tpZXMgYXJlIGlkZW50aWNhbCwgd2hlbiB0aGVpciBwYXRoLCBhbmQgZG9tYWluIGFyZQogICAgICAgICAgICAvLyBpZGVudGljYWwuCiAgICAgICAgICAgIGlmICgkYy0+Z2V0UGF0aCgpICE9ICRjb29raWUtPmdldFBhdGgoKSB8fAogICAgICAgICAgICAgICAgJGMtPmdldERvbWFpbigpICE9ICRjb29raWUtPmdldERvbWFpbigpIHx8CiAgICAgICAgICAgICAgICAkYy0+Z2V0TmFtZSgpICE9ICRjb29raWUtPmdldE5hbWUoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBUaGUgcHJldmlvdXNseSBzZXQgY29va2llIGlzIGEgZGlzY2FyZCBjb29raWUgYW5kIHRoaXMgb25lIGlzCiAgICAgICAgICAgIC8vIG5vdCBzbyBhbGxvdyB0aGUgbmV3IGNvb2tpZSB0byBiZSBzZXQKICAgICAgICAgICAgaWYgKCEkY29va2llLT5nZXREaXNjYXJkKCkgJiYgJGMtPmdldERpc2NhcmQoKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmNvb2tpZXNbJGldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgbmV3IGNvb2tpZSdzIGV4cGlyYXRpb24gaXMgZnVydGhlciBpbnRvIHRoZSBmdXR1cmUsIHRoZW4KICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgb2xkIGNvb2tpZQogICAgICAgICAgICBpZiAoJGNvb2tpZS0+Z2V0RXhwaXJlcygpID4gJGMtPmdldEV4cGlyZXMoKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmNvb2tpZXNbJGldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQsIHdlIGJldHRlciBjaGFuZ2UgaXQKICAgICAgICAgICAgaWYgKCRjb29raWUtPmdldFZhbHVlKCkgIT09ICRjLT5nZXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+Y29va2llc1skaV0pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFRoZSBjb29raWUgZXhpc3RzLCBzbyBubyBuZWVkIHRvIGNvbnRpbnVlCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jb29raWVzW10gPSAkY29va2llOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+Y29va2llcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEl0ZXJhdG9yKCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFxBcnJheUl0ZXJhdG9yKGFycmF5X3ZhbHVlcygkdGhpcy0+Y29va2llcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBleHRyYWN0Q29va2llcygKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZQogICAgKSB7CiAgICAgICAgaWYgKCRjb29raWVIZWFkZXIgPSAkcmVzcG9uc2UtPmdldEhlYWRlcignU2V0LUNvb2tpZScpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRjb29raWVIZWFkZXIgYXMgJGNvb2tpZSkgewogICAgICAgICAgICAgICAgJHNjID0gU2V0Q29va2llOjpmcm9tU3RyaW5nKCRjb29raWUpOwogICAgICAgICAgICAgICAgaWYgKCEkc2MtPmdldERvbWFpbigpKSB7CiAgICAgICAgICAgICAgICAgICAgJHNjLT5zZXREb21haW4oJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRIb3N0KCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKDAgIT09IHN0cnBvcygkc2MtPmdldFBhdGgoKSwgJy8nKSkgewogICAgICAgICAgICAgICAgICAgICRzYy0+c2V0UGF0aCgkdGhpcy0+Z2V0Q29va2llUGF0aEZyb21SZXF1ZXN0KCRyZXF1ZXN0KSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0Q29va2llKCRzYyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wdXRlcyBjb29raWUgcGF0aCBmb2xsb3dpbmcgUkZDIDYyNjUgc2VjdGlvbiA1LjEuNAogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4xLjQKICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRDb29raWVQYXRoRnJvbVJlcXVlc3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCkKICAgIHsKICAgICAgICAkdXJpUGF0aCA9ICRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0UGF0aCgpOwogICAgICAgIGlmICgnJyAgPT09ICR1cmlQYXRoKSB7CiAgICAgICAgICAgIHJldHVybiAnLyc7CiAgICAgICAgfQogICAgICAgIGlmICgwICE9PSBzdHJwb3MoJHVyaVBhdGgsICcvJykpIHsKICAgICAgICAgICAgcmV0dXJuICcvJzsKICAgICAgICB9CiAgICAgICAgaWYgKCcvJyA9PT0gJHVyaVBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuICcvJzsKICAgICAgICB9CiAgICAgICAgaWYgKDAgPT09ICRsYXN0U2xhc2hQb3MgPSBzdHJycG9zKCR1cmlQYXRoLCAnLycpKSB7CiAgICAgICAgICAgIHJldHVybiAnLyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3Vic3RyKCR1cmlQYXRoLCAwLCAkbGFzdFNsYXNoUG9zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENvb2tpZUhlYWRlcihSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KQogICAgewogICAgICAgICR2YWx1ZXMgPSBbXTsKICAgICAgICAkdXJpID0gJHJlcXVlc3QtPmdldFVyaSgpOwogICAgICAgICRzY2hlbWUgPSAkdXJpLT5nZXRTY2hlbWUoKTsKICAgICAgICAkaG9zdCA9ICR1cmktPmdldEhvc3QoKTsKICAgICAgICAkcGF0aCA9ICR1cmktPmdldFBhdGgoKSA/OiAnLyc7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb29raWVzIGFzICRjb29raWUpIHsKICAgICAgICAgICAgaWYgKCRjb29raWUtPm1hdGNoZXNQYXRoKCRwYXRoKSAmJgogICAgICAgICAgICAgICAgJGNvb2tpZS0+bWF0Y2hlc0RvbWFpbigkaG9zdCkgJiYKICAgICAgICAgICAgICAgICEkY29va2llLT5pc0V4cGlyZWQoKSAmJgogICAgICAgICAgICAgICAgKCEkY29va2llLT5nZXRTZWN1cmUoKSB8fCAkc2NoZW1lID09PSAnaHR0cHMnKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICRjb29raWUtPmdldE5hbWUoKSAuICc9JwogICAgICAgICAgICAgICAgICAgIC4gJGNvb2tpZS0+Z2V0VmFsdWUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZXMKICAgICAgICAgICAgPyAkcmVxdWVzdC0+d2l0aEhlYWRlcignQ29va2llJywgaW1wbG9kZSgnOyAnLCAkdmFsdWVzKSkKICAgICAgICAgICAgOiAkcmVxdWVzdDsKICAgIH0KCiAgICAvKioKICAgICAqIElmIGEgY29va2llIGFscmVhZHkgZXhpc3RzIGFuZCB0aGUgc2VydmVyIGFza3MgdG8gc2V0IGl0IGFnYWluIHdpdGggYQogICAgICogbnVsbCB2YWx1ZSwgdGhlIGNvb2tpZSBtdXN0IGJlIGRlbGV0ZWQuCiAgICAgKgogICAgICogQHBhcmFtIFNldENvb2tpZSAkY29va2llCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcmVtb3ZlQ29va2llSWZFbXB0eShTZXRDb29raWUgJGNvb2tpZSkKICAgIHsKICAgICAgICAkY29va2llVmFsdWUgPSAkY29va2llLT5nZXRWYWx1ZSgpOwogICAgICAgIGlmICgkY29va2llVmFsdWUgPT09IG51bGwgfHwgJGNvb2tpZVZhbHVlID09PSAnJykgewogICAgICAgICAgICAkdGhpcy0+Y2xlYXIoCiAgICAgICAgICAgICAgICAkY29va2llLT5nZXREb21haW4oKSwKICAgICAgICAgICAgICAgICRjb29raWUtPmdldFBhdGgoKSwKICAgICAgICAgICAgICAgICRjb29raWUtPmdldE5hbWUoKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcQ29va2llOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CgovKioKICogU3RvcmVzIEhUVFAgY29va2llcy4KICoKICogSXQgZXh0cmFjdHMgY29va2llcyBmcm9tIEhUVFAgcmVxdWVzdHMsIGFuZCByZXR1cm5zIHRoZW0gaW4gSFRUUCByZXNwb25zZXMuCiAqIENvb2tpZUphckludGVyZmFjZSBpbnN0YW5jZXMgYXV0b21hdGljYWxseSBleHBpcmUgY29udGFpbmVkIGNvb2tpZXMgd2hlbgogKiBuZWNlc3NhcnkuIFN1YmNsYXNzZXMgYXJlIGFsc28gcmVzcG9uc2libGUgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcKICogY29va2llcyBmcm9tIGEgZmlsZSwgZGF0YWJhc2UsIGV0Yy4KICoKICogQGxpbmsgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8yL2xpYnJhcnkvY29va2llbGliLmh0bWwgSW5zcGlyYXRpb24KICovCmludGVyZmFjZSBDb29raWVKYXJJbnRlcmZhY2UgZXh0ZW5kcyBcQ291bnRhYmxlLCBcSXRlcmF0b3JBZ2dyZWdhdGUKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSByZXF1ZXN0IHdpdGggYWRkZWQgY29va2llIGhlYWRlcnMuCiAgICAgKgogICAgICogSWYgbm8gbWF0Y2hpbmcgY29va2llcyBhcmUgZm91bmQgaW4gdGhlIGNvb2tpZSBqYXIsIHRoZW4gbm8gQ29va2llCiAgICAgKiBoZWFkZXIgaXMgYWRkZWQgdG8gdGhlIHJlcXVlc3QgYW5kIHRoZSBzYW1lIHJlcXVlc3QgaXMgcmV0dXJuZWQuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdCBvYmplY3QgdG8gbW9kaWZ5LgogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZSByZXR1cm5zIHRoZSBtb2RpZmllZCByZXF1ZXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENvb2tpZUhlYWRlcihSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTsKCiAgICAvKioKICAgICAqIEV4dHJhY3QgY29va2llcyBmcm9tIGFuIEhUVFAgcmVzcG9uc2UgYW5kIHN0b3JlIHRoZW0gaW4gdGhlIENvb2tpZUphci4KICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAgJHJlcXVlc3QgIFJlcXVlc3QgdGhhdCB3YXMgc2VudAogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSBSZXNwb25zZSB0aGF0IHdhcyByZWNlaXZlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXh0cmFjdENvb2tpZXMoCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UKICAgICk7CgogICAgLyoqCiAgICAgKiBTZXRzIGEgY29va2llIGluIHRoZSBjb29raWUgamFyLgogICAgICoKICAgICAqIEBwYXJhbSBTZXRDb29raWUgJGNvb2tpZSBDb29raWUgdG8gc2V0LgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCBSZXR1cm5zIHRydWUgb24gc3VjY2VzcyBvciBmYWxzZSBvbiBmYWlsdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDb29raWUoU2V0Q29va2llICRjb29raWUpOwoKICAgIC8qKgogICAgICogUmVtb3ZlIGNvb2tpZXMgY3VycmVudGx5IGhlbGQgaW4gdGhlIGNvb2tpZSBqYXIuCiAgICAgKgogICAgICogSW52b2tpbmcgdGhpcyBtZXRob2Qgd2l0aG91dCBhcmd1bWVudHMgd2lsbCBlbXB0eSB0aGUgd2hvbGUgY29va2llIGphci4KICAgICAqIElmIGdpdmVuIGEgJGRvbWFpbiBhcmd1bWVudCBvbmx5IGNvb2tpZXMgYmVsb25naW5nIHRvIHRoYXQgZG9tYWluIHdpbGwKICAgICAqIGJlIHJlbW92ZWQuIElmIGdpdmVuIGEgJGRvbWFpbiBhbmQgJHBhdGggYXJndW1lbnQsIGNvb2tpZXMgYmVsb25naW5nIHRvCiAgICAgKiB0aGUgc3BlY2lmaWVkIHBhdGggd2l0aGluIHRoYXQgZG9tYWluIGFyZSByZW1vdmVkLiBJZiBnaXZlbiBhbGwgdGhyZWUKICAgICAqIGFyZ3VtZW50cywgdGhlbiB0aGUgY29va2llIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLCBwYXRoIGFuZCBkb21haW4gaXMKICAgICAqIHJlbW92ZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZG9tYWluIENsZWFycyBjb29raWVzIG1hdGNoaW5nIGEgZG9tYWluCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoICAgQ2xlYXJzIGNvb2tpZXMgbWF0Y2hpbmcgYSBkb21haW4gYW5kIHBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICBDbGVhcnMgY29va2llcyBtYXRjaGluZyBhIGRvbWFpbiwgcGF0aCwgYW5kIG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIENvb2tpZUphckludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXIoJGRvbWFpbiA9IG51bGwsICRwYXRoID0gbnVsbCwgJG5hbWUgPSBudWxsKTsKCiAgICAvKioKICAgICAqIERpc2NhcmQgYWxsIHNlc3Npb25zIGNvb2tpZXMuCiAgICAgKgogICAgICogUmVtb3ZlcyBjb29raWVzIHRoYXQgZG9uJ3QgaGF2ZSBhbiBleHBpcmUgZmllbGQgb3IgYSBoYXZlIGEgZGlzY2FyZAogICAgICogZmllbGQgc2V0IHRvIHRydWUuIFRvIGJlIGNhbGxlZCB3aGVuIHRoZSB1c2VyIGFnZW50IHNodXRzIGRvd24gYWNjb3JkaW5nCiAgICAgKiB0byBSRkMgMjk2NS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyU2Vzc2lvbkNvb2tpZXMoKTsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBjb29raWUgamFyIHRvIGFuIGFycmF5LgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQXJyYXkoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcQ29va2llOwoKLyoqCiAqIFBlcnNpc3RzIG5vbi1zZXNzaW9uIGNvb2tpZXMgdXNpbmcgYSBKU09OIGZvcm1hdHRlZCBmaWxlCiAqLwpjbGFzcyBGaWxlQ29va2llSmFyIGV4dGVuZHMgQ29va2llSmFyCnsKICAgIC8qKiBAdmFyIHN0cmluZyBmaWxlbmFtZSAqLwogICAgcHJpdmF0ZSAkZmlsZW5hbWU7CgogICAgLyoqIEB2YXIgYm9vbCBDb250cm9sIHdoZXRoZXIgdG8gcGVyc2lzdCBzZXNzaW9uIGNvb2tpZXMgb3Igbm90LiAqLwogICAgcHJpdmF0ZSAkc3RvcmVTZXNzaW9uQ29va2llczsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBGaWxlQ29va2llSmFyIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvb2tpZUZpbGUgICAgICAgIEZpbGUgdG8gc3RvcmUgdGhlIGNvb2tpZSBkYXRhCiAgICAgKiBAcGFyYW0gYm9vbCAkc3RvcmVTZXNzaW9uQ29va2llcyBTZXQgdG8gdHJ1ZSB0byBzdG9yZSBzZXNzaW9uIGNvb2tpZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBjb29raWUgamFyLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yIGNyZWF0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb29raWVGaWxlLCAkc3RvcmVTZXNzaW9uQ29va2llcyA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5maWxlbmFtZSA9ICRjb29raWVGaWxlOwogICAgICAgICR0aGlzLT5zdG9yZVNlc3Npb25Db29raWVzID0gJHN0b3JlU2Vzc2lvbkNvb2tpZXM7CgogICAgICAgIGlmIChmaWxlX2V4aXN0cygkY29va2llRmlsZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmxvYWQoJGNvb2tpZUZpbGUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFNhdmVzIHRoZSBmaWxlIHdoZW4gc2h1dHRpbmcgZG93bgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnNhdmUoJHRoaXMtPmZpbGVuYW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNhdmVzIHRoZSBjb29raWVzIHRvIGEgZmlsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBGaWxlIHRvIHNhdmUKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yIGNyZWF0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoJGZpbGVuYW1lKQogICAgewogICAgICAgICRqc29uID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMgYXMgJGNvb2tpZSkgewogICAgICAgICAgICAvKiogQHZhciBTZXRDb29raWUgJGNvb2tpZSAqLwogICAgICAgICAgICBpZiAoQ29va2llSmFyOjpzaG91bGRQZXJzaXN0KCRjb29raWUsICR0aGlzLT5zdG9yZVNlc3Npb25Db29raWVzKSkgewogICAgICAgICAgICAgICAgJGpzb25bXSA9ICRjb29raWUtPnRvQXJyYXkoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGpzb25TdHIgPSBcR3V6emxlSHR0cFxqc29uX2VuY29kZSgkanNvbik7CiAgICAgICAgaWYgKGZhbHNlID09PSBmaWxlX3B1dF9jb250ZW50cygkZmlsZW5hbWUsICRqc29uU3RyKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIlVuYWJsZSB0byBzYXZlIGZpbGUgeyRmaWxlbmFtZX0iKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBMb2FkIGNvb2tpZXMgZnJvbSBhIEpTT04gZm9ybWF0dGVkIGZpbGUuCiAgICAgKgogICAgICogT2xkIGNvb2tpZXMgYXJlIGtlcHQgdW5sZXNzIG92ZXJ3cml0dGVuIGJ5IG5ld2x5IGxvYWRlZCBvbmVzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIENvb2tpZSBmaWxlIHRvIGxvYWQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBmaWxlIGNhbm5vdCBiZSBsb2FkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkKCRmaWxlbmFtZSkKICAgIHsKICAgICAgICAkanNvbiA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlbmFtZSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkanNvbikgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIlVuYWJsZSB0byBsb2FkIGZpbGUgeyRmaWxlbmFtZX0iKTsKICAgICAgICB9IGVsc2VpZiAoJGpzb24gPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRkYXRhID0gXEd1enpsZUh0dHBcanNvbl9kZWNvZGUoJGpzb24sIHRydWUpOwogICAgICAgIGlmIChpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoanNvbl9kZWNvZGUoJGpzb24sIHRydWUpIGFzICRjb29raWUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRDb29raWUobmV3IFNldENvb2tpZSgkY29va2llKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoc3RybGVuKCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkludmFsaWQgY29va2llIGZpbGU6IHskZmlsZW5hbWV9Iik7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcQ29va2llOwoKLyoqCiAqIFBlcnNpc3RzIGNvb2tpZXMgaW4gdGhlIGNsaWVudCBzZXNzaW9uCiAqLwpjbGFzcyBTZXNzaW9uQ29va2llSmFyIGV4dGVuZHMgQ29va2llSmFyCnsKICAgIC8qKiBAdmFyIHN0cmluZyBzZXNzaW9uIGtleSAqLwogICAgcHJpdmF0ZSAkc2Vzc2lvbktleTsKICAgIAogICAgLyoqIEB2YXIgYm9vbCBDb250cm9sIHdoZXRoZXIgdG8gcGVyc2lzdCBzZXNzaW9uIGNvb2tpZXMgb3Igbm90LiAqLwogICAgcHJpdmF0ZSAkc3RvcmVTZXNzaW9uQ29va2llczsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBTZXNzaW9uQ29va2llSmFyIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNlc3Npb25LZXkgICAgICAgIFNlc3Npb24ga2V5IG5hbWUgdG8gc3RvcmUgdGhlIGNvb2tpZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSBpbiBzZXNzaW9uCiAgICAgKiBAcGFyYW0gYm9vbCAkc3RvcmVTZXNzaW9uQ29va2llcyBTZXQgdG8gdHJ1ZSB0byBzdG9yZSBzZXNzaW9uIGNvb2tpZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBjb29raWUgamFyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHNlc3Npb25LZXksICRzdG9yZVNlc3Npb25Db29raWVzID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHRoaXMtPnNlc3Npb25LZXkgPSAkc2Vzc2lvbktleTsKICAgICAgICAkdGhpcy0+c3RvcmVTZXNzaW9uQ29va2llcyA9ICRzdG9yZVNlc3Npb25Db29raWVzOwogICAgICAgICR0aGlzLT5sb2FkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYXZlcyBjb29raWVzIHRvIHNlc3Npb24gd2hlbiBzaHV0dGluZyBkb3duCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+c2F2ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZSBjb29raWVzIHRvIHRoZSBjbGllbnQgc2Vzc2lvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpCiAgICB7CiAgICAgICAgJGpzb24gPSBbXTsKICAgICAgICBmb3JlYWNoICgkdGhpcyBhcyAkY29va2llKSB7CiAgICAgICAgICAgIC8qKiBAdmFyIFNldENvb2tpZSAkY29va2llICovCiAgICAgICAgICAgIGlmIChDb29raWVKYXI6OnNob3VsZFBlcnNpc3QoJGNvb2tpZSwgJHRoaXMtPnN0b3JlU2Vzc2lvbkNvb2tpZXMpKSB7CiAgICAgICAgICAgICAgICAkanNvbltdID0gJGNvb2tpZS0+dG9BcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkX1NFU1NJT05bJHRoaXMtPnNlc3Npb25LZXldID0ganNvbl9lbmNvZGUoJGpzb24pOwogICAgfQoKICAgIC8qKgogICAgICogTG9hZCB0aGUgY29udGVudHMgb2YgdGhlIGNsaWVudCBzZXNzaW9uIGludG8gdGhlIGRhdGEgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxvYWQoKQogICAgewogICAgICAgIGlmICghaXNzZXQoJF9TRVNTSU9OWyR0aGlzLT5zZXNzaW9uS2V5XSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRfU0VTU0lPTlskdGhpcy0+c2Vzc2lvbktleV0sIHRydWUpOwogICAgICAgIGlmIChpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGRhdGEgYXMgJGNvb2tpZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNldENvb2tpZShuZXcgU2V0Q29va2llKCRjb29raWUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChzdHJsZW4oJGRhdGEpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBjb29raWUgZGF0YSIpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcQ29va2llOwoKLyoqCiAqIFNldC1Db29raWUgb2JqZWN0CiAqLwpjbGFzcyBTZXRDb29raWUKewogICAgLyoqIEB2YXIgYXJyYXkgKi8KICAgIHByaXZhdGUgc3RhdGljICRkZWZhdWx0cyA9IFsKICAgICAgICAnTmFtZScgICAgID0+IG51bGwsCiAgICAgICAgJ1ZhbHVlJyAgICA9PiBudWxsLAogICAgICAgICdEb21haW4nICAgPT4gbnVsbCwKICAgICAgICAnUGF0aCcgICAgID0+ICcvJywKICAgICAgICAnTWF4LUFnZScgID0+IG51bGwsCiAgICAgICAgJ0V4cGlyZXMnICA9PiBudWxsLAogICAgICAgICdTZWN1cmUnICAgPT4gZmFsc2UsCiAgICAgICAgJ0Rpc2NhcmQnICA9PiBmYWxzZSwKICAgICAgICAnSHR0cE9ubHknID0+IGZhbHNlCiAgICBdOwoKICAgIC8qKiBAdmFyIGFycmF5IENvb2tpZSBkYXRhICovCiAgICBwcml2YXRlICRkYXRhOwoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IFNldENvb2tpZSBvYmplY3QgZnJvbSBhIHN0cmluZwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvb2tpZSBTZXQtQ29va2llIGhlYWRlciBzdHJpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHNlbGYKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tU3RyaW5nKCRjb29raWUpCiAgICB7CiAgICAgICAgLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IHJldHVybiBhcnJheQogICAgICAgICRkYXRhID0gc2VsZjo6JGRlZmF1bHRzOwogICAgICAgIC8vIEV4cGxvZGUgdGhlIGNvb2tpZSBzdHJpbmcgdXNpbmcgYSBzZXJpZXMgb2Ygc2VtaWNvbG9ucwogICAgICAgICRwaWVjZXMgPSBhcnJheV9maWx0ZXIoYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnOycsICRjb29raWUpKSk7CiAgICAgICAgLy8gVGhlIG5hbWUgb2YgdGhlIGNvb2tpZSAoZmlyc3Qga3ZwKSBtdXN0IGV4aXN0IGFuZCBpbmNsdWRlIGFuIGVxdWFsIHNpZ24uCiAgICAgICAgaWYgKGVtcHR5KCRwaWVjZXNbMF0pIHx8ICFzdHJwb3MoJHBpZWNlc1swXSwgJz0nKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSBjb29raWUgcGllY2VzIGludG8gdGhlIHBhcnNlZCBkYXRhIGFycmF5CiAgICAgICAgZm9yZWFjaCAoJHBpZWNlcyBhcyAkcGFydCkgewogICAgICAgICAgICAkY29va2llUGFydHMgPSBleHBsb2RlKCc9JywgJHBhcnQsIDIpOwogICAgICAgICAgICAka2V5ID0gdHJpbSgkY29va2llUGFydHNbMF0pOwogICAgICAgICAgICAkdmFsdWUgPSBpc3NldCgkY29va2llUGFydHNbMV0pCiAgICAgICAgICAgICAgICA/IHRyaW0oJGNvb2tpZVBhcnRzWzFdLCAiIFxuXHJcdFwwXHgwQiIpCiAgICAgICAgICAgICAgICA6IHRydWU7CgogICAgICAgICAgICAvLyBPbmx5IGNoZWNrIGZvciBub24tY29va2llcyB3aGVuIGNvb2tpZXMgaGF2ZSBiZWVuIGZvdW5kCiAgICAgICAgICAgIGlmIChlbXB0eSgkZGF0YVsnTmFtZSddKSkgewogICAgICAgICAgICAgICAgJGRhdGFbJ05hbWUnXSA9ICRrZXk7CiAgICAgICAgICAgICAgICAkZGF0YVsnVmFsdWUnXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoc2VsZjo6JGRlZmF1bHRzKSBhcyAkc2VhcmNoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKCRzZWFyY2gsICRrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhWyRzZWFyY2hdID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRkYXRhWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkYXRhIEFycmF5IG9mIGNvb2tpZSBkYXRhIHByb3ZpZGVkIGJ5IGEgQ29va2llIHBhcnNlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhdGEgPSBbXSkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YSA9IGFycmF5X3JlcGxhY2Uoc2VsZjo6JGRlZmF1bHRzLCAkZGF0YSk7CiAgICAgICAgLy8gRXh0cmFjdCB0aGUgRXhwaXJlcyB2YWx1ZSBhbmQgdHVybiBpdCBpbnRvIGEgVU5JWCB0aW1lc3RhbXAgaWYgbmVlZGVkCiAgICAgICAgaWYgKCEkdGhpcy0+Z2V0RXhwaXJlcygpICYmICR0aGlzLT5nZXRNYXhBZ2UoKSkgewogICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIEV4cGlyZXMgZGF0ZQogICAgICAgICAgICAkdGhpcy0+c2V0RXhwaXJlcyh0aW1lKCkgKyAkdGhpcy0+Z2V0TWF4QWdlKCkpOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+Z2V0RXhwaXJlcygpICYmICFpc19udW1lcmljKCR0aGlzLT5nZXRFeHBpcmVzKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKCR0aGlzLT5nZXRFeHBpcmVzKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgJHN0ciA9ICR0aGlzLT5kYXRhWydOYW1lJ10gLiAnPScgLiAkdGhpcy0+ZGF0YVsnVmFsdWUnXSAuICc7ICc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRhdGEgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCRrICE9PSAnTmFtZScgJiYgJGsgIT09ICdWYWx1ZScgJiYgJHYgIT09IG51bGwgJiYgJHYgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBpZiAoJGsgPT09ICdFeHBpcmVzJykgewogICAgICAgICAgICAgICAgICAgICRzdHIgLj0gJ0V4cGlyZXM9JyAuIGdtZGF0ZSgnRCwgZCBNIFkgSDppOnMgXEdcTVxUJywgJHYpIC4gJzsgJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHN0ciAuPSAoJHYgPT09IHRydWUgPyAkayA6ICJ7JGt9PXskdn0iKSAuICc7ICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBydHJpbSgkc3RyLCAnOyAnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb29raWUgbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ05hbWUnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgY29va2llIG5hbWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENvb2tpZSBuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXROYW1lKCRuYW1lKQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydOYW1lJ10gPSAkbmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY29va2llIHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ1ZhbHVlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGNvb2tpZSB2YWx1ZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlIENvb2tpZSB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWUoJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydWYWx1ZSddID0gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkb21haW4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREb21haW4oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnRG9tYWluJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRvbWFpbiBvZiB0aGUgY29va2llCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZG9tYWluCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREb21haW4oJGRvbWFpbikKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnRG9tYWluJ10gPSAkZG9tYWluOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhdGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnUGF0aCddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwYXRoIG9mIHRoZSBjb29raWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFBhdGggb2YgdGhlIGNvb2tpZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UGF0aCgkcGF0aCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnUGF0aCddID0gJHBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXhpbXVtIGxpZmV0aW1lIG9mIHRoZSBjb29raWUgaW4gc2Vjb25kcwogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1heEFnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydNYXgtQWdlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG1heC1hZ2Ugb2YgdGhlIGNvb2tpZQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJG1heEFnZSBNYXggYWdlIG9mIHRoZSBjb29raWUgaW4gc2Vjb25kcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TWF4QWdlKCRtYXhBZ2UpCiAgICB7CiAgICAgICAgJHRoaXMtPmRhdGFbJ01heC1BZ2UnXSA9ICRtYXhBZ2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgVU5JWCB0aW1lc3RhbXAgd2hlbiB0aGUgY29va2llIEV4cGlyZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHBpcmVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ0V4cGlyZXMnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgdW5peCB0aW1lc3RhbXAgZm9yIHdoaWNoIHRoZSBjb29raWUgd2lsbCBleHBpcmUKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICR0aW1lc3RhbXAgVW5peCB0aW1lc3RhbXAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEV4cGlyZXMoJHRpbWVzdGFtcCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnRXhwaXJlcyddID0gaXNfbnVtZXJpYygkdGltZXN0YW1wKQogICAgICAgICAgICA/IChpbnQpICR0aW1lc3RhbXAKICAgICAgICAgICAgOiBzdHJ0b3RpbWUoJHRpbWVzdGFtcCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhIHNlY3VyZSBjb29raWUKICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8Ym9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VjdXJlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ1NlY3VyZSddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRoZSBjb29raWUgaXMgc2VjdXJlCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHNlY3VyZSBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiBzZWN1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFNlY3VyZSgkc2VjdXJlKQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydTZWN1cmUnXSA9ICRzZWN1cmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhIHNlc3Npb24gY29va2llCiAgICAgKgogICAgICogQHJldHVybiBudWxsfGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERpc2NhcmQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnRGlzY2FyZCddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYSBzZXNzaW9uIGNvb2tpZQogICAgICoKICAgICAqIEBwYXJhbSBib29sICRkaXNjYXJkIFNldCB0byB0cnVlIG9yIGZhbHNlIGlmIHRoaXMgaXMgYSBzZXNzaW9uIGNvb2tpZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RGlzY2FyZCgkZGlzY2FyZCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnRGlzY2FyZCddID0gJGRpc2NhcmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBIVFRQIG9ubHkgY29va2llCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIdHRwT25seSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydIdHRwT25seSddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYW4gSFRUUCBvbmx5IGNvb2tpZQogICAgICoKICAgICAqIEBwYXJhbSBib29sICRodHRwT25seSBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiB0aGlzIGlzIEhUVFAgb25seQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SHR0cE9ubHkoJGh0dHBPbmx5KQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydIdHRwT25seSddID0gJGh0dHBPbmx5OwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgdGhlIGNvb2tpZSBtYXRjaGVzIGEgcGF0aCB2YWx1ZS4KICAgICAqCiAgICAgKiBBIHJlcXVlc3QtcGF0aCBwYXRoLW1hdGNoZXMgYSBnaXZlbiBjb29raWUtcGF0aCBpZiBhdCBsZWFzdCBvbmUgb2YKICAgICAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBob2xkczoKICAgICAqCiAgICAgKiAtIFRoZSBjb29raWUtcGF0aCBhbmQgdGhlIHJlcXVlc3QtcGF0aCBhcmUgaWRlbnRpY2FsLgogICAgICogLSBUaGUgY29va2llLXBhdGggaXMgYSBwcmVmaXggb2YgdGhlIHJlcXVlc3QtcGF0aCwgYW5kIHRoZSBsYXN0CiAgICAgKiAgIGNoYXJhY3RlciBvZiB0aGUgY29va2llLXBhdGggaXMgJXgyRiAoIi8iKS4KICAgICAqIC0gVGhlIGNvb2tpZS1wYXRoIGlzIGEgcHJlZml4IG9mIHRoZSByZXF1ZXN0LXBhdGgsIGFuZCB0aGUgZmlyc3QKICAgICAqICAgY2hhcmFjdGVyIG9mIHRoZSByZXF1ZXN0LXBhdGggdGhhdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGNvb2tpZS0KICAgICAqICAgcGF0aCBpcyBhICV4MkYgKCIvIikgY2hhcmFjdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJlcXVlc3RQYXRoIFBhdGggdG8gY2hlY2sgYWdhaW5zdAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWF0Y2hlc1BhdGgoJHJlcXVlc3RQYXRoKQogICAgewogICAgICAgICRjb29raWVQYXRoID0gJHRoaXMtPmdldFBhdGgoKTsKCiAgICAgICAgLy8gTWF0Y2ggb24gZXhhY3QgbWF0Y2hlcyBvciB3aGVuIHBhdGggaXMgdGhlIGRlZmF1bHQgZW1wdHkgIi8iCiAgICAgICAgaWYgKCRjb29raWVQYXRoID09PSAnLycgfHwgJGNvb2tpZVBhdGggPT0gJHJlcXVlc3RQYXRoKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGNvb2tpZS1wYXRoIGlzIGEgcHJlZml4IG9mIHRoZSByZXF1ZXN0IHBhdGguCiAgICAgICAgaWYgKDAgIT09IHN0cnBvcygkcmVxdWVzdFBhdGgsICRjb29raWVQYXRoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBNYXRjaCBpZiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGNvb2tpZS1wYXRoIGlzICIvIgogICAgICAgIGlmIChzdWJzdHIoJGNvb2tpZVBhdGgsIC0xLCAxKSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gTWF0Y2ggaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBub3QgaW5jbHVkZWQgaW4gY29va2llIHBhdGggaXMgIi8iCiAgICAgICAgcmV0dXJuIHN1YnN0cigkcmVxdWVzdFBhdGgsIHN0cmxlbigkY29va2llUGF0aCksIDEpID09PSAnLyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGUgY29va2llIG1hdGNoZXMgYSBkb21haW4gdmFsdWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkb21haW4gRG9tYWluIHRvIGNoZWNrIGFnYWluc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1hdGNoZXNEb21haW4oJGRvbWFpbikKICAgIHsKICAgICAgICAvLyBSZW1vdmUgdGhlIGxlYWRpbmcgJy4nIGFzIHBlciBzcGVjIGluIFJGQyA2MjY1LgogICAgICAgIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYyNjUjc2VjdGlvbi01LjIuMwogICAgICAgICRjb29raWVEb21haW4gPSBsdHJpbSgkdGhpcy0+Z2V0RG9tYWluKCksICcuJyk7CgogICAgICAgIC8vIERvbWFpbiBub3Qgc2V0IG9yIGV4YWN0IG1hdGNoLgogICAgICAgIGlmICghJGNvb2tpZURvbWFpbiB8fCAhc3RyY2FzZWNtcCgkZG9tYWluLCAkY29va2llRG9tYWluKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIE1hdGNoaW5nIHRoZSBzdWJkb21haW4gYWNjb3JkaW5nIHRvIFJGQyA2MjY1LgogICAgICAgIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYyNjUjc2VjdGlvbi01LjEuMwogICAgICAgIGlmIChmaWx0ZXJfdmFyKCRkb21haW4sIEZJTFRFUl9WQUxJREFURV9JUCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChib29sKSBwcmVnX21hdGNoKCcvXC4nIC4gcHJlZ19xdW90ZSgkY29va2llRG9tYWluLCAnLycpIC4gJyQvJywgJGRvbWFpbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGUgY29va2llIGlzIGV4cGlyZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRXhwaXJlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRFeHBpcmVzKCkgIT09IG51bGwgJiYgdGltZSgpID4gJHRoaXMtPmdldEV4cGlyZXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIHRoZSBjb29raWUgaXMgdmFsaWQgYWNjb3JkaW5nIHRvIFJGQyA2MjY1CiAgICAgKgogICAgICogQHJldHVybiBib29sfHN0cmluZyBSZXR1cm5zIHRydWUgaWYgdmFsaWQgb3IgYW4gZXJyb3IgbWVzc2FnZSBpZiBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZSgpCiAgICB7CiAgICAgICAgLy8gTmFtZXMgbXVzdCBub3QgYmUgZW1wdHksIGJ1dCBjYW4gYmUgMAogICAgICAgICRuYW1lID0gJHRoaXMtPmdldE5hbWUoKTsKICAgICAgICBpZiAoZW1wdHkoJG5hbWUpICYmICFpc19udW1lcmljKCRuYW1lKSkgewogICAgICAgICAgICByZXR1cm4gJ1RoZSBjb29raWUgbmFtZSBtdXN0IG5vdCBiZSBlbXB0eSc7CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVjayBpZiBhbnkgb2YgdGhlIGludmFsaWQgY2hhcmFjdGVycyBhcmUgcHJlc2VudCBpbiB0aGUgY29va2llIG5hbWUKICAgICAgICBpZiAocHJlZ19tYXRjaCgKICAgICAgICAgICAgJy9bXHgwMC1ceDIwXHgyMlx4MjgtXHgyOVx4MmNceDJmXHgzYS1ceDQwXHg1Y1x4N2JceDdkXHg3Zl0vJywKICAgICAgICAgICAgJG5hbWUKICAgICAgICApKSB7CiAgICAgICAgICAgIHJldHVybiAnQ29va2llIG5hbWUgbXVzdCBub3QgY29udGFpbiBpbnZhbGlkIGNoYXJhY3RlcnM6IEFTQ0lJICcKICAgICAgICAgICAgICAgIC4gJ0NvbnRyb2wgY2hhcmFjdGVycyAoMC0zMTsxMjcpLCBzcGFjZSwgdGFiIGFuZCB0aGUgJwogICAgICAgICAgICAgICAgLiAnZm9sbG93aW5nIGNoYXJhY3RlcnM6ICgpPD5ALDs6XCIvPz17fSc7CiAgICAgICAgfQoKICAgICAgICAvLyBWYWx1ZSBtdXN0IG5vdCBiZSBlbXB0eSwgYnV0IGNhbiBiZSAwCiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmdldFZhbHVlKCk7CiAgICAgICAgaWYgKGVtcHR5KCR2YWx1ZSkgJiYgIWlzX251bWVyaWMoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gJ1RoZSBjb29raWUgdmFsdWUgbXVzdCBub3QgYmUgZW1wdHknOwogICAgICAgIH0KCiAgICAgICAgLy8gRG9tYWlucyBtdXN0IG5vdCBiZSBlbXB0eSwgYnV0IGNhbiBiZSAwCiAgICAgICAgLy8gQSAiMCIgaXMgbm90IGEgdmFsaWQgaW50ZXJuZXQgZG9tYWluLCBidXQgbWF5IGJlIHVzZWQgYXMgc2VydmVyIG5hbWUKICAgICAgICAvLyBpbiBhIHByaXZhdGUgbmV0d29yay4KICAgICAgICAkZG9tYWluID0gJHRoaXMtPmdldERvbWFpbigpOwogICAgICAgIGlmIChlbXB0eSgkZG9tYWluKSAmJiAhaXNfbnVtZXJpYygkZG9tYWluKSkgewogICAgICAgICAgICByZXR1cm4gJ1RoZSBjb29raWUgZG9tYWluIG11c3Qgbm90IGJlIGVtcHR5JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/BadResponseException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CgovKioKICogRXhjZXB0aW9uIHdoZW4gYW4gSFRUUCBlcnJvciBvY2N1cnMgKDR4eCBvciA1eHggZXJyb3IpCiAqLwpjbGFzcyBCYWRSZXNwb25zZUV4Y2VwdGlvbiBleHRlbmRzIFJlcXVlc3RFeGNlcHRpb24KewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgICRtZXNzYWdlLAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICBcRXhjZXB0aW9uICRwcmV2aW91cyA9IG51bGwsCiAgICAgICAgYXJyYXkgJGhhbmRsZXJDb250ZXh0ID0gW10KICAgICkgewogICAgICAgIGlmIChudWxsID09PSAkcmVzcG9uc2UpIHsKICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3IoCiAgICAgICAgICAgICAgICAnSW5zdGFudGlhdGluZyB0aGUgJyAuIF9fQ0xBU1NfXyAuICcgY2xhc3Mgd2l0aG91dCBhIFJlc3BvbnNlIGlzIGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiA2LjMgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiA3LjAuJywKICAgICAgICAgICAgICAgIEVfVVNFUl9ERVBSRUNBVEVECiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG1lc3NhZ2UsICRyZXF1ZXN0LCAkcmVzcG9uc2UsICRwcmV2aW91cywgJGhhbmRsZXJDb250ZXh0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB3aGVuIGEgY2xpZW50IGVycm9yIGlzIGVuY291bnRlcmVkICg0eHggY29kZXMpCiAqLwpjbGFzcyBDbGllbnRFeGNlcHRpb24gZXh0ZW5kcyBCYWRSZXNwb25zZUV4Y2VwdGlvbiB7fQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gYSBjb25uZWN0aW9uIGNhbm5vdCBiZSBlc3RhYmxpc2hlZC4KICoKICogTm90ZSB0aGF0IG5vIHJlc3BvbnNlIGlzIHByZXNlbnQgZm9yIGEgQ29ubmVjdEV4Y2VwdGlvbgogKi8KY2xhc3MgQ29ubmVjdEV4Y2VwdGlvbiBleHRlbmRzIFJlcXVlc3RFeGNlcHRpb24KewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgICRtZXNzYWdlLAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgXEV4Y2VwdGlvbiAkcHJldmlvdXMgPSBudWxsLAogICAgICAgIGFycmF5ICRoYW5kbGVyQ29udGV4dCA9IFtdCiAgICApIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAkcmVxdWVzdCwgbnVsbCwgJHByZXZpb3VzLCAkaGFuZGxlckNvbnRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXNwb25zZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Jlc3BvbnNlKCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKLyoqCiAqIEBtZXRob2Qgc3RyaW5nIGdldE1lc3NhZ2UoKQogKiBAbWV0aG9kIFxUaHJvd2FibGV8bnVsbCBnZXRQcmV2aW91cygpCiAqIEBtZXRob2QgbWl4ZWQgZ2V0Q29kZSgpCiAqIEBtZXRob2Qgc3RyaW5nIGdldEZpbGUoKQogKiBAbWV0aG9kIGludCBnZXRMaW5lKCkKICogQG1ldGhvZCBhcnJheSBnZXRUcmFjZSgpCiAqIEBtZXRob2Qgc3RyaW5nIGdldFRyYWNlQXNTdHJpbmcoKQogKi8KaW50ZXJmYWNlIEd1enpsZUV4Y2VwdGlvbiB7fQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIEhUVFAgUmVxdWVzdCBleGNlcHRpb24KICovCmNsYXNzIFJlcXVlc3RFeGNlcHRpb24gZXh0ZW5kcyBUcmFuc2ZlckV4Y2VwdGlvbgp7CiAgICAvKiogQHZhciBSZXF1ZXN0SW50ZXJmYWNlICovCiAgICBwcml2YXRlICRyZXF1ZXN0OwoKICAgIC8qKiBAdmFyIFJlc3BvbnNlSW50ZXJmYWNlICovCiAgICBwcml2YXRlICRyZXNwb25zZTsKCiAgICAvKiogQHZhciBhcnJheSAqLwogICAgcHJpdmF0ZSAkaGFuZGxlckNvbnRleHQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgICRtZXNzYWdlLAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICBcRXhjZXB0aW9uICRwcmV2aW91cyA9IG51bGwsCiAgICAgICAgYXJyYXkgJGhhbmRsZXJDb250ZXh0ID0gW10KICAgICkgewogICAgICAgIC8vIFNldCB0aGUgY29kZSBvZiB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXNwb25zZSBpcyBzZXQgYW5kIG5vdCBmdXR1cmUuCiAgICAgICAgJGNvZGUgPSAkcmVzcG9uc2UgJiYgISgkcmVzcG9uc2UgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlKQogICAgICAgICAgICA/ICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpCiAgICAgICAgICAgIDogMDsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlLCAkY29kZSwgJHByZXZpb3VzKTsKICAgICAgICAkdGhpcy0+cmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5yZXNwb25zZSA9ICRyZXNwb25zZTsKICAgICAgICAkdGhpcy0+aGFuZGxlckNvbnRleHQgPSAkaGFuZGxlckNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBXcmFwIG5vbi1SZXF1ZXN0RXhjZXB0aW9ucyB3aXRoIGEgUmVxdWVzdEV4Y2VwdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gXEV4Y2VwdGlvbiAgICAgICAkZQogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdyYXBFeGNlcHRpb24oUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgXEV4Y2VwdGlvbiAkZSkKICAgIHsKICAgICAgICByZXR1cm4gJGUgaW5zdGFuY2VvZiBSZXF1ZXN0RXhjZXB0aW9uCiAgICAgICAgICAgID8gJGUKICAgICAgICAgICAgOiBuZXcgUmVxdWVzdEV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpLCAkcmVxdWVzdCwgbnVsbCwgJGUpOwogICAgfQoKICAgIC8qKgogICAgICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IGV4Y2VwdGlvbiB3aXRoIGEgbm9ybWFsaXplZCBlcnJvciBtZXNzYWdlCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICRyZXF1ZXN0ICBSZXF1ZXN0CiAgICAgKiBAcGFyYW0gUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlIFJlc3BvbnNlIHJlY2VpdmVkCiAgICAgKiBAcGFyYW0gXEV4Y2VwdGlvbiAgICAgICAgJHByZXZpb3VzIFByZXZpb3VzIGV4Y2VwdGlvbgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICRjdHggICAgICBPcHRpb25hbCBoYW5kbGVyIGNvbnRleHQuCiAgICAgKgogICAgICogQHJldHVybiBzZWxmCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICBcRXhjZXB0aW9uICRwcmV2aW91cyA9IG51bGwsCiAgICAgICAgYXJyYXkgJGN0eCA9IFtdCiAgICApIHsKICAgICAgICBpZiAoISRyZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICAnRXJyb3IgY29tcGxldGluZyByZXF1ZXN0JywKICAgICAgICAgICAgICAgICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICRwcmV2aW91cywKICAgICAgICAgICAgICAgICRjdHgKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRsZXZlbCA9IChpbnQpIGZsb29yKCRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpIC8gMTAwKTsKICAgICAgICBpZiAoJGxldmVsID09PSA0KSB7CiAgICAgICAgICAgICRsYWJlbCA9ICdDbGllbnQgZXJyb3InOwogICAgICAgICAgICAkY2xhc3NOYW1lID0gQ2xpZW50RXhjZXB0aW9uOjpjbGFzczsKICAgICAgICB9IGVsc2VpZiAoJGxldmVsID09PSA1KSB7CiAgICAgICAgICAgICRsYWJlbCA9ICdTZXJ2ZXIgZXJyb3InOwogICAgICAgICAgICAkY2xhc3NOYW1lID0gU2VydmVyRXhjZXB0aW9uOjpjbGFzczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGFiZWwgPSAnVW5zdWNjZXNzZnVsIHJlcXVlc3QnOwogICAgICAgICAgICAkY2xhc3NOYW1lID0gX19DTEFTU19fOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9ICRyZXF1ZXN0LT5nZXRVcmkoKTsKICAgICAgICAkdXJpID0gc3RhdGljOjpvYmZ1c2NhdGVVcmkoJHVyaSk7CgogICAgICAgIC8vIENsaWVudCBFcnJvcjogYEdFVCAvYCByZXN1bHRlZCBpbiBhIGA0MDQgTm90IEZvdW5kYCByZXNwb25zZToKICAgICAgICAvLyA8aHRtbD4gLi4uICh0cnVuY2F0ZWQpCiAgICAgICAgJG1lc3NhZ2UgPSBzcHJpbnRmKAogICAgICAgICAgICAnJXM6IGAlcyAlc2AgcmVzdWx0ZWQgaW4gYSBgJXMgJXNgIHJlc3BvbnNlJywKICAgICAgICAgICAgJGxhYmVsLAogICAgICAgICAgICAkcmVxdWVzdC0+Z2V0TWV0aG9kKCksCiAgICAgICAgICAgICR1cmksCiAgICAgICAgICAgICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpLAogICAgICAgICAgICAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpCiAgICAgICAgKTsKCiAgICAgICAgJHN1bW1hcnkgPSBzdGF0aWM6OmdldFJlc3BvbnNlQm9keVN1bW1hcnkoJHJlc3BvbnNlKTsKCiAgICAgICAgaWYgKCRzdW1tYXJ5ICE9PSBudWxsKSB7CiAgICAgICAgICAgICRtZXNzYWdlIC49ICI6XG57JHN1bW1hcnl9XG4iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyAkY2xhc3NOYW1lKCRtZXNzYWdlLCAkcmVxdWVzdCwgJHJlc3BvbnNlLCAkcHJldmlvdXMsICRjdHgpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGEgc2hvcnQgc3VtbWFyeSBvZiB0aGUgcmVzcG9uc2UKICAgICAqCiAgICAgKiBXaWxsIHJldHVybiBgbnVsbGAgaWYgdGhlIHJlc3BvbnNlIGlzIG5vdCBwcmludGFibGUuCiAgICAgKgogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZXNwb25zZUJvZHlTdW1tYXJ5KFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSkKICAgIHsKICAgICAgICAkYm9keSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwoKICAgICAgICBpZiAoISRib2R5LT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkc2l6ZSA9ICRib2R5LT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkc2l6ZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRzdW1tYXJ5ID0gJGJvZHktPnJlYWQoMTIwKTsKICAgICAgICAkYm9keS0+cmV3aW5kKCk7CgogICAgICAgIGlmICgkc2l6ZSA+IDEyMCkgewogICAgICAgICAgICAkc3VtbWFyeSAuPSAnICh0cnVuY2F0ZWQuLi4pJzsKICAgICAgICB9CgogICAgICAgIC8vIE1hdGNoZXMgYW55IHByaW50YWJsZSBjaGFyYWN0ZXIsIGluY2x1ZGluZyB1bmljb2RlIGNoYXJhY3RlcnM6CiAgICAgICAgLy8gbGV0dGVycywgbWFya3MsIG51bWJlcnMsIHB1bmN0dWF0aW9uLCBzcGFjaW5nLCBhbmQgc2VwYXJhdG9ycy4KICAgICAgICBpZiAocHJlZ19tYXRjaCgnL1teXHBMXHBNXHBOXHBQXHBTXHBaXG5cclx0XS8nLCAkc3VtbWFyeSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN1bW1hcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBPYmZ1c2NhdGVzIFVSSSBpZiB0aGVyZSBpcyBhbiB1c2VybmFtZSBhbmQgYSBwYXNzd29yZCBwcmVzZW50CiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpCiAgICAgKgogICAgICogQHJldHVybiBVcmlJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gb2JmdXNjYXRlVXJpKCR1cmkpCiAgICB7CiAgICAgICAgJHVzZXJJbmZvID0gJHVyaS0+Z2V0VXNlckluZm8oKTsKCiAgICAgICAgaWYgKGZhbHNlICE9PSAoJHBvcyA9IHN0cnBvcygkdXNlckluZm8sICc6JykpKSB7CiAgICAgICAgICAgIHJldHVybiAkdXJpLT53aXRoVXNlckluZm8oc3Vic3RyKCR1c2VySW5mbywgMCwgJHBvcyksICcqKionKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBleGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlcXVlc3QoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgYXNzb2NpYXRlZCByZXNwb25zZQogICAgICoKICAgICAqIEByZXR1cm4gUmVzcG9uc2VJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVzcG9uc2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiBhIHJlc3BvbnNlIHdhcyByZWNlaXZlZAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzUmVzcG9uc2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2UgIT09IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IgZnJvbSB0aGUgdW5kZXJseWluZyBoYW5kbGVyLgogICAgICoKICAgICAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGFycmF5IHdpbGwgdmFyeSBkZXBlbmRpbmcgb24gd2hpY2ggaGFuZGxlciB5b3UgYXJlCiAgICAgKiB1c2luZy4gSXQgbWF5IGFsc28gYmUganVzdCBhbiBlbXB0eSBhcnJheS4gUmVseWluZyBvbiB0aGlzIGRhdGEgd2lsbAogICAgICogY291cGxlIHlvdSB0byBhIHNwZWNpZmljIGhhbmRsZXIsIGJ1dCBjYW4gZ2l2ZSBtb3JlIGRlYnVnIGluZm9ybWF0aW9uCiAgICAgKiB3aGVuIG5lZWRlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyQ29udGV4dCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyQ29udGV4dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/SeekException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhIHNlZWsgZmFpbHMgb24gYSBzdHJlYW0uCiAqLwpjbGFzcyBTZWVrRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24gaW1wbGVtZW50cyBHdXp6bGVFeGNlcHRpb24KewogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgJHBvcyA9IDAsICRtc2cgPSAnJykKICAgIHsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbTsKICAgICAgICAkbXNnID0gJG1zZyA/OiAnQ291bGQgbm90IHNlZWsgdGhlIHN0cmVhbSB0byBwb3NpdGlvbiAnIC4gJHBvczsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtc2cpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBTdHJlYW1JbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0cmVhbSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB3aGVuIGEgc2VydmVyIGVycm9yIGlzIGVuY291bnRlcmVkICg1eHggY29kZXMpCiAqLwpjbGFzcyBTZXJ2ZXJFeGNlcHRpb24gZXh0ZW5kcyBCYWRSZXNwb25zZUV4Y2VwdGlvbiB7fQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKY2xhc3MgVG9vTWFueVJlZGlyZWN0c0V4Y2VwdGlvbiBleHRlbmRzIFJlcXVlc3RFeGNlcHRpb24ge30K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKY2xhc3MgVHJhbnNmZXJFeGNlcHRpb24gZXh0ZW5kcyBcUnVudGltZUV4Y2VwdGlvbiBpbXBsZW1lbnRzIEd1enpsZUV4Y2VwdGlvbiB7fQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXEN1cmxIYW5kbGVyOwp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXEN1cmxNdWx0aUhhbmRsZXI7CnVzZSBHdXp6bGVIdHRwXEhhbmRsZXJcUHJveHk7CnVzZSBHdXp6bGVIdHRwXEhhbmRsZXJcU3RyZWFtSGFuZGxlcjsKCi8qKgogKiBFeHBhbmRzIGEgVVJJIHRlbXBsYXRlCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHRlbXBsYXRlICBVUkkgdGVtcGxhdGUKICogQHBhcmFtIGFycmF5ICAkdmFyaWFibGVzIFRlbXBsYXRlIHZhcmlhYmxlcwogKgogKiBAcmV0dXJuIHN0cmluZwogKi8KZnVuY3Rpb24gdXJpX3RlbXBsYXRlKCR0ZW1wbGF0ZSwgYXJyYXkgJHZhcmlhYmxlcykKewogICAgaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ3VyaV90ZW1wbGF0ZScpKSB7CiAgICAgICAgLy8gQGNvZGVDb3ZlcmFnZUlnbm9yZVN0YXJ0CiAgICAgICAgcmV0dXJuIFx1cmlfdGVtcGxhdGUoJHRlbXBsYXRlLCAkdmFyaWFibGVzKTsKICAgICAgICAvLyBAY29kZUNvdmVyYWdlSWdub3JlRW5kCiAgICB9CgogICAgc3RhdGljICR1cmlUZW1wbGF0ZTsKICAgIGlmICghJHVyaVRlbXBsYXRlKSB7CiAgICAgICAgJHVyaVRlbXBsYXRlID0gbmV3IFVyaVRlbXBsYXRlKCk7CiAgICB9CgogICAgcmV0dXJuICR1cmlUZW1wbGF0ZS0+ZXhwYW5kKCR0ZW1wbGF0ZSwgJHZhcmlhYmxlcyk7Cn0KCi8qKgogKiBEZWJ1ZyBmdW5jdGlvbiB1c2VkIHRvIGRlc2NyaWJlIHRoZSBwcm92aWRlZCB2YWx1ZSB0eXBlIGFuZCBjbGFzcy4KICoKICogQHBhcmFtIG1peGVkICRpbnB1dAogKgogKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHR5cGUgb2YgdGhlIHZhcmlhYmxlIGFuZAogKiAgICAgICAgICAgICAgICBpZiBhIGNsYXNzIGlzIHByb3ZpZGVkLCB0aGUgY2xhc3MgbmFtZS4KICovCmZ1bmN0aW9uIGRlc2NyaWJlX3R5cGUoJGlucHV0KQp7CiAgICBzd2l0Y2ggKGdldHR5cGUoJGlucHV0KSkgewogICAgICAgIGNhc2UgJ29iamVjdCc6CiAgICAgICAgICAgIHJldHVybiAnb2JqZWN0KCcgLiBnZXRfY2xhc3MoJGlucHV0KSAuICcpJzsKICAgICAgICBjYXNlICdhcnJheSc6CiAgICAgICAgICAgIHJldHVybiAnYXJyYXkoJyAuIGNvdW50KCRpbnB1dCkgLiAnKSc7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgb2Jfc3RhcnQoKTsKICAgICAgICAgICAgdmFyX2R1bXAoJGlucHV0KTsKICAgICAgICAgICAgLy8gbm9ybWFsaXplIGZsb2F0IHZzIGRvdWJsZQogICAgICAgICAgICByZXR1cm4gc3RyX3JlcGxhY2UoJ2RvdWJsZSgnLCAnZmxvYXQoJywgcnRyaW0ob2JfZ2V0X2NsZWFuKCkpKTsKICAgIH0KfQoKLyoqCiAqIFBhcnNlcyBhbiBhcnJheSBvZiBoZWFkZXIgbGluZXMgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBoZWFkZXJzLgogKgogKiBAcGFyYW0gYXJyYXkgJGxpbmVzIEhlYWRlciBsaW5lcyBhcnJheSBvZiBzdHJpbmdzIGluIHRoZSBmb2xsb3dpbmcKICogICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICJOYW1lOiBWYWx1ZSIKICogQHJldHVybiBhcnJheQogKi8KZnVuY3Rpb24gaGVhZGVyc19mcm9tX2xpbmVzKCRsaW5lcykKewogICAgJGhlYWRlcnMgPSBbXTsKCiAgICBmb3JlYWNoICgkbGluZXMgYXMgJGxpbmUpIHsKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCc6JywgJGxpbmUsIDIpOwogICAgICAgICRoZWFkZXJzW3RyaW0oJHBhcnRzWzBdKV1bXSA9IGlzc2V0KCRwYXJ0c1sxXSkKICAgICAgICAgICAgPyB0cmltKCRwYXJ0c1sxXSkKICAgICAgICAgICAgOiBudWxsOwogICAgfQoKICAgIHJldHVybiAkaGVhZGVyczsKfQoKLyoqCiAqIFJldHVybnMgYSBkZWJ1ZyBzdHJlYW0gYmFzZWQgb24gdGhlIHByb3ZpZGVkIHZhcmlhYmxlLgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIE9wdGlvbmFsIHZhbHVlCiAqCiAqIEByZXR1cm4gcmVzb3VyY2UKICovCmZ1bmN0aW9uIGRlYnVnX3Jlc291cmNlKCR2YWx1ZSA9IG51bGwpCnsKICAgIGlmIChpc19yZXNvdXJjZSgkdmFsdWUpKSB7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0gZWxzZWlmIChkZWZpbmVkKCdTVERPVVQnKSkgewogICAgICAgIHJldHVybiBTVERPVVQ7CiAgICB9CgogICAgcmV0dXJuIGZvcGVuKCdwaHA6Ly9vdXRwdXQnLCAndycpOwp9CgovKioKICogQ2hvb3NlcyBhbmQgY3JlYXRlcyBhIGRlZmF1bHQgaGFuZGxlciB0byB1c2UgYmFzZWQgb24gdGhlIGVudmlyb25tZW50LgogKgogKiBUaGUgcmV0dXJuZWQgaGFuZGxlciBpcyBub3Qgd3JhcHBlZCBieSBhbnkgZGVmYXVsdCBtaWRkbGV3YXJlcy4KICoKICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBubyB2aWFibGUgSGFuZGxlciBpcyBhdmFpbGFibGUuCiAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyB0aGUgYmVzdCBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gc3lzdGVtLgogKi8KZnVuY3Rpb24gY2hvb3NlX2hhbmRsZXIoKQp7CiAgICAkaGFuZGxlciA9IG51bGw7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdjdXJsX211bHRpX2V4ZWMnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKSB7CiAgICAgICAgJGhhbmRsZXIgPSBQcm94eTo6d3JhcFN5bmMobmV3IEN1cmxNdWx0aUhhbmRsZXIoKSwgbmV3IEN1cmxIYW5kbGVyKCkpOwogICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAgICAkaGFuZGxlciA9IG5ldyBDdXJsSGFuZGxlcigpOwogICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9tdWx0aV9leGVjJykpIHsKICAgICAgICAkaGFuZGxlciA9IG5ldyBDdXJsTXVsdGlIYW5kbGVyKCk7CiAgICB9CgogICAgaWYgKGluaV9nZXQoJ2FsbG93X3VybF9mb3BlbicpKSB7CiAgICAgICAgJGhhbmRsZXIgPSAkaGFuZGxlcgogICAgICAgICAgICA/IFByb3h5Ojp3cmFwU3RyZWFtaW5nKCRoYW5kbGVyLCBuZXcgU3RyZWFtSGFuZGxlcigpKQogICAgICAgICAgICA6IG5ldyBTdHJlYW1IYW5kbGVyKCk7CiAgICB9IGVsc2VpZiAoISRoYW5kbGVyKSB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdHdXp6bGVIdHRwIHJlcXVpcmVzIGNVUkwsIHRoZSAnCiAgICAgICAgICAgIC4gJ2FsbG93X3VybF9mb3BlbiBpbmkgc2V0dGluZywgb3IgYSBjdXN0b20gSFRUUCBoYW5kbGVyLicpOwogICAgfQoKICAgIHJldHVybiAkaGFuZGxlcjsKfQoKLyoqCiAqIEdldCB0aGUgZGVmYXVsdCBVc2VyLUFnZW50IHN0cmluZyB0byB1c2Ugd2l0aCBHdXp6bGUKICoKICogQHJldHVybiBzdHJpbmcKICovCmZ1bmN0aW9uIGRlZmF1bHRfdXNlcl9hZ2VudCgpCnsKICAgIHN0YXRpYyAkZGVmYXVsdEFnZW50ID0gJyc7CgogICAgaWYgKCEkZGVmYXVsdEFnZW50KSB7CiAgICAgICAgJGRlZmF1bHRBZ2VudCA9ICdHdXp6bGVIdHRwLycgLiBDbGllbnQ6OlZFUlNJT047CiAgICAgICAgaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ2N1cmwnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKSB7CiAgICAgICAgICAgICRkZWZhdWx0QWdlbnQgLj0gJyBjdXJsLycgLiBcY3VybF92ZXJzaW9uKClbJ3ZlcnNpb24nXTsKICAgICAgICB9CiAgICAgICAgJGRlZmF1bHRBZ2VudCAuPSAnIFBIUC8nIC4gUEhQX1ZFUlNJT047CiAgICB9CgogICAgcmV0dXJuICRkZWZhdWx0QWdlbnQ7Cn0KCi8qKgogKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGNhY2VydCBidW5kbGUgZm9yIHRoZSBjdXJyZW50IHN5c3RlbS4KICoKICogRmlyc3QsIHRoZSBvcGVuc3NsLmNhZmlsZSBhbmQgY3VybC5jYWluZm8gcGhwLmluaSBzZXR0aW5ncyBhcmUgY2hlY2tlZC4KICogSWYgdGhvc2Ugc2V0dGluZ3MgYXJlIG5vdCBjb25maWd1cmVkLCB0aGVuIHRoZSBjb21tb24gbG9jYXRpb25zIGZvcgogKiBidW5kbGVzIGZvdW5kIG9uIFJlZCBIYXQsIENlbnRPUywgRmVkb3JhLCBVYnVudHUsIERlYmlhbiwgRnJlZUJTRCwgT1MgWAogKiBhbmQgV2luZG93cyBhcmUgY2hlY2tlZC4gSWYgYW55IG9mIHRoZXNlIGZpbGUgbG9jYXRpb25zIGFyZSBmb3VuZCBvbgogKiBkaXNrLCB0aGV5IHdpbGwgYmUgdXRpbGl6ZWQuCiAqCiAqIE5vdGU6IHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCiAqCiAqIEByZXR1cm4gc3RyaW5nCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgbm8gYnVuZGxlIGNhbiBiZSBmb3VuZC4KICovCmZ1bmN0aW9uIGRlZmF1bHRfY2FfYnVuZGxlKCkKewogICAgc3RhdGljICRjYWNoZWQgPSBudWxsOwogICAgc3RhdGljICRjYWZpbGVzID0gWwogICAgICAgIC8vIFJlZCBIYXQsIENlbnRPUywgRmVkb3JhIChwcm92aWRlZCBieSB0aGUgY2EtY2VydGlmaWNhdGVzIHBhY2thZ2UpCiAgICAgICAgJy9ldGMvcGtpL3Rscy9jZXJ0cy9jYS1idW5kbGUuY3J0JywKICAgICAgICAvLyBVYnVudHUsIERlYmlhbiAocHJvdmlkZWQgYnkgdGhlIGNhLWNlcnRpZmljYXRlcyBwYWNrYWdlKQogICAgICAgICcvZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0JywKICAgICAgICAvLyBGcmVlQlNEIChwcm92aWRlZCBieSB0aGUgY2Ffcm9vdF9uc3MgcGFja2FnZSkKICAgICAgICAnL3Vzci9sb2NhbC9zaGFyZS9jZXJ0cy9jYS1yb290LW5zcy5jcnQnLAogICAgICAgIC8vIFNMRVMgMTIgKHByb3ZpZGVkIGJ5IHRoZSBjYS1jZXJ0aWZpY2F0ZXMgcGFja2FnZSkKICAgICAgICAnL3Zhci9saWIvY2EtY2VydGlmaWNhdGVzL2NhLWJ1bmRsZS5wZW0nLAogICAgICAgIC8vIE9TIFggcHJvdmlkZWQgYnkgaG9tZWJyZXcgKHVzaW5nIHRoZSBkZWZhdWx0IHBhdGgpCiAgICAgICAgJy91c3IvbG9jYWwvZXRjL29wZW5zc2wvY2VydC5wZW0nLAogICAgICAgIC8vIEdvb2dsZSBhcHAgZW5naW5lCiAgICAgICAgJy9ldGMvY2EtY2VydGlmaWNhdGVzLmNydCcsCiAgICAgICAgLy8gV2luZG93cz8KICAgICAgICAnQzpcXHdpbmRvd3NcXHN5c3RlbTMyXFxjdXJsLWNhLWJ1bmRsZS5jcnQnLAogICAgICAgICdDOlxcd2luZG93c1xcY3VybC1jYS1idW5kbGUuY3J0JywKICAgIF07CgogICAgaWYgKCRjYWNoZWQpIHsKICAgICAgICByZXR1cm4gJGNhY2hlZDsKICAgIH0KCiAgICBpZiAoJGNhID0gaW5pX2dldCgnb3BlbnNzbC5jYWZpbGUnKSkgewogICAgICAgIHJldHVybiAkY2FjaGVkID0gJGNhOwogICAgfQoKICAgIGlmICgkY2EgPSBpbmlfZ2V0KCdjdXJsLmNhaW5mbycpKSB7CiAgICAgICAgcmV0dXJuICRjYWNoZWQgPSAkY2E7CiAgICB9CgogICAgZm9yZWFjaCAoJGNhZmlsZXMgYXMgJGZpbGVuYW1lKSB7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsKICAgICAgICAgICAgcmV0dXJuICRjYWNoZWQgPSAkZmlsZW5hbWU7CiAgICAgICAgfQogICAgfQoKICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbig8PDwgRU9UCk5vIHN5c3RlbSBDQSBidW5kbGUgY291bGQgYmUgZm91bmQgaW4gYW55IG9mIHRoZSB0aGUgY29tbW9uIHN5c3RlbSBsb2NhdGlvbnMuClBIUCB2ZXJzaW9ucyBlYXJsaWVyIHRoYW4gNS42IGFyZSBub3QgcHJvcGVybHkgY29uZmlndXJlZCB0byB1c2UgdGhlIHN5c3RlbSdzCkNBIGJ1bmRsZSBieSBkZWZhdWx0LiBJbiBvcmRlciB0byB2ZXJpZnkgcGVlciBjZXJ0aWZpY2F0ZXMsIHlvdSB3aWxsIG5lZWQgdG8Kc3VwcGx5IHRoZSBwYXRoIG9uIGRpc2sgdG8gYSBjZXJ0aWZpY2F0ZSBidW5kbGUgdG8gdGhlICd2ZXJpZnknIHJlcXVlc3QKb3B0aW9uOiBodHRwOi8vZG9jcy5ndXp6bGVwaHAub3JnL2VuL2xhdGVzdC9jbGllbnRzLmh0bWwjdmVyaWZ5LiBJZiB5b3UgZG8gbm90Cm5lZWQgYSBzcGVjaWZpYyBjZXJ0aWZpY2F0ZSBidW5kbGUsIHRoZW4gTW96aWxsYSBwcm92aWRlcyBhIGNvbW1vbmx5IHVzZWQgQ0EKYnVuZGxlIHdoaWNoIGNhbiBiZSBkb3dubG9hZGVkIGhlcmUgKHByb3ZpZGVkIGJ5IHRoZSBtYWludGFpbmVyIG9mIGNVUkwpOgpodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmFnZGVyL2NhLWJ1bmRsZS9tYXN0ZXIvY2EtYnVuZGxlLmNydC4gT25jZQp5b3UgaGF2ZSBhIENBIGJ1bmRsZSBhdmFpbGFibGUgb24gZGlzaywgeW91IGNhbiBzZXQgdGhlICdvcGVuc3NsLmNhZmlsZScgUEhQCmluaSBzZXR0aW5nIHRvIHBvaW50IHRvIHRoZSBwYXRoIHRvIHRoZSBmaWxlLCBhbGxvd2luZyB5b3UgdG8gb21pdCB0aGUgJ3ZlcmlmeScKcmVxdWVzdCBvcHRpb24uIFNlZSBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbCBmb3IgbW9yZQppbmZvcm1hdGlvbi4KRU9UCiAgICApOwp9CgovKioKICogQ3JlYXRlcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBsb3dlcmNhc2UgaGVhZGVyIG5hbWVzIHRvIHRoZSBhY3R1YWwKICogaGVhZGVyIGNhc2luZy4KICoKICogQHBhcmFtIGFycmF5ICRoZWFkZXJzCiAqCiAqIEByZXR1cm4gYXJyYXkKICovCmZ1bmN0aW9uIG5vcm1hbGl6ZV9oZWFkZXJfa2V5cyhhcnJheSAkaGVhZGVycykKewogICAgJHJlc3VsdCA9IFtdOwogICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkaGVhZGVycykgYXMgJGtleSkgewogICAgICAgICRyZXN1bHRbc3RydG9sb3dlcigka2V5KV0gPSAka2V5OwogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCBob3N0IG1hdGNoZXMgYW55IG9mIHRoZSBubyBwcm94eSBhcmVhcy4KICoKICogVGhpcyBtZXRob2Qgd2lsbCBzdHJpcCBhIHBvcnQgZnJvbSB0aGUgaG9zdCBpZiBpdCBpcyBwcmVzZW50LiBFYWNoIHBhdHRlcm4KICogY2FuIGJlIG1hdGNoZWQgd2l0aCBhbiBleGFjdCBtYXRjaCAoZS5nLiwgImZvby5jb20iID09ICJmb28uY29tIikgb3IgYQogKiBwYXJ0aWFsIG1hdGNoOiAoZS5nLiwgImZvby5jb20iID09ICJiYXouZm9vLmNvbSIgYW5kICIuZm9vLmNvbSIgPT0KICogImJhei5mb28uY29tIiwgYnV0ICIuZm9vLmNvbSIgIT0gImZvby5jb20iKS4KICoKICogQXJlYXMgYXJlIG1hdGNoZWQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKICogMS4gIioiICh3aXRob3V0IHF1b3RlcykgYWx3YXlzIG1hdGNoZXMgYW55IGhvc3RzLgogKiAyLiBBbiBleGFjdCBtYXRjaC4KICogMy4gVGhlIGFyZWEgc3RhcnRzIHdpdGggIi4iIGFuZCB0aGUgYXJlYSBpcyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBob3N0LiBlLmcuCiAqICAgICcubWl0LmVkdScgd2lsbCBtYXRjaCBhbnkgaG9zdCB0aGF0IGVuZHMgd2l0aCAnLm1pdC5lZHUnLgogKgogKiBAcGFyYW0gc3RyaW5nICRob3N0ICAgICAgICAgSG9zdCB0byBjaGVjayBhZ2FpbnN0IHRoZSBwYXR0ZXJucy4KICogQHBhcmFtIGFycmF5ICAkbm9Qcm94eUFycmF5IEFuIGFycmF5IG9mIGhvc3QgcGF0dGVybnMuCiAqCiAqIEByZXR1cm4gYm9vbAogKi8KZnVuY3Rpb24gaXNfaG9zdF9pbl9ub3Byb3h5KCRob3N0LCBhcnJheSAkbm9Qcm94eUFycmF5KQp7CiAgICBpZiAoc3RybGVuKCRob3N0KSA9PT0gMCkgewogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFbXB0eSBob3N0IHByb3ZpZGVkJyk7CiAgICB9CgogICAgLy8gU3RyaXAgcG9ydCBpZiBwcmVzZW50LgogICAgaWYgKHN0cnBvcygkaG9zdCwgJzonKSkgewogICAgICAgICRob3N0ID0gZXhwbG9kZSgkaG9zdCwgJzonLCAyKVswXTsKICAgIH0KCiAgICBmb3JlYWNoICgkbm9Qcm94eUFycmF5IGFzICRhcmVhKSB7CiAgICAgICAgLy8gQWx3YXlzIG1hdGNoIG9uIHdpbGRjYXJkcy4KICAgICAgICBpZiAoJGFyZWEgPT09ICcqJykgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2VpZiAoZW1wdHkoJGFyZWEpKSB7CiAgICAgICAgICAgIC8vIERvbid0IG1hdGNoIG9uIGVtcHR5IHZhbHVlcy4KICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfSBlbHNlaWYgKCRhcmVhID09PSAkaG9zdCkgewogICAgICAgICAgICAvLyBFeGFjdCBtYXRjaGVzLgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBTcGVjaWFsIG1hdGNoIGlmIHRoZSBhcmVhIHdoZW4gcHJlZml4ZWQgd2l0aCAiLiIuIFJlbW92ZSBhbnkKICAgICAgICAgICAgLy8gZXhpc3RpbmcgbGVhZGluZyAiLiIgYW5kIGFkZCBhIG5ldyBsZWFkaW5nICIuIi4KICAgICAgICAgICAgJGFyZWEgPSAnLicgLiBsdHJpbSgkYXJlYSwgJy4nKTsKICAgICAgICAgICAgaWYgKHN1YnN0cigkaG9zdCwgLShzdHJsZW4oJGFyZWEpKSkgPT09ICRhcmVhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBqc29uX2RlY29kZSB0aGF0IHRocm93cyB3aGVuIGFuIGVycm9yIG9jY3Vycy4KICoKICogQHBhcmFtIHN0cmluZyAkanNvbiAgICBKU09OIGRhdGEgdG8gcGFyc2UKICogQHBhcmFtIGJvb2wgJGFzc29jICAgICBXaGVuIHRydWUsIHJldHVybmVkIG9iamVjdHMgd2lsbCBiZSBjb252ZXJ0ZWQKICogICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGFzc29jaWF0aXZlIGFycmF5cy4KICogQHBhcmFtIGludCAgICAkZGVwdGggICBVc2VyIHNwZWNpZmllZCByZWN1cnNpb24gZGVwdGguCiAqIEBwYXJhbSBpbnQgICAgJG9wdGlvbnMgQml0bWFzayBvZiBKU09OIGRlY29kZSBvcHRpb25zLgogKgogKiBAcmV0dXJuIG1peGVkCiAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSlNPTiBjYW5ub3QgYmUgZGVjb2RlZC4KICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5qc29uLWRlY29kZS5waHAKICovCmZ1bmN0aW9uIGpzb25fZGVjb2RlKCRqc29uLCAkYXNzb2MgPSBmYWxzZSwgJGRlcHRoID0gNTEyLCAkb3B0aW9ucyA9IDApCnsKICAgICRkYXRhID0gXGpzb25fZGVjb2RlKCRqc29uLCAkYXNzb2MsICRkZXB0aCwgJG9wdGlvbnMpOwogICAgaWYgKEpTT05fRVJST1JfTk9ORSAhPT0ganNvbl9sYXN0X2Vycm9yKCkpIHsKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgJ2pzb25fZGVjb2RlIGVycm9yOiAnIC4ganNvbl9sYXN0X2Vycm9yX21zZygpCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJGRhdGE7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBKU09OIGVuY29kaW5nIHRoYXQgdGhyb3dzIHdoZW4gYW4gZXJyb3Igb2NjdXJzLgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlICAgVGhlIHZhbHVlIGJlaW5nIGVuY29kZWQKICogQHBhcmFtIGludCAgICAkb3B0aW9ucyBKU09OIGVuY29kZSBvcHRpb24gYml0bWFzawogKiBAcGFyYW0gaW50ICAgICRkZXB0aCAgIFNldCB0aGUgbWF4aW11bSBkZXB0aC4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KICoKICogQHJldHVybiBzdHJpbmcKICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBKU09OIGNhbm5vdCBiZSBlbmNvZGVkLgogKiBAbGluayBodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmpzb24tZW5jb2RlLnBocAogKi8KZnVuY3Rpb24ganNvbl9lbmNvZGUoJHZhbHVlLCAkb3B0aW9ucyA9IDAsICRkZXB0aCA9IDUxMikKewogICAgJGpzb24gPSBcanNvbl9lbmNvZGUoJHZhbHVlLCAkb3B0aW9ucywgJGRlcHRoKTsKICAgIGlmIChKU09OX0VSUk9SX05PTkUgIT09IGpzb25fbGFzdF9lcnJvcigpKSB7CiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICdqc29uX2VuY29kZSBlcnJvcjogJyAuIGpzb25fbGFzdF9lcnJvcl9tc2coKQogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRqc29uOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/functions_include.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIERvbid0IHJlZGVmaW5lIHRoZSBmdW5jdGlvbnMgaWYgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCmlmICghZnVuY3Rpb25fZXhpc3RzKCdHdXp6bGVIdHRwXHVyaV90ZW1wbGF0ZScpKSB7CiAgICByZXF1aXJlIF9fRElSX18gLiAnL2Z1bmN0aW9ucy5waHAnOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxSZXF1ZXN0RXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQc3I3Owp1c2UgR3V6emxlSHR0cFxQc3I3XExhenlPcGVuU3RyZWFtOwp1c2UgR3V6emxlSHR0cFxUcmFuc2ZlclN0YXRzOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIENyZWF0ZXMgY3VybCByZXNvdXJjZXMgZnJvbSBhIHJlcXVlc3QKICovCmNsYXNzIEN1cmxGYWN0b3J5IGltcGxlbWVudHMgQ3VybEZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqIEB2YXIgYXJyYXkgKi8KICAgIHByaXZhdGUgJGhhbmRsZXMgPSBbXTsKCiAgICAvKiogQHZhciBpbnQgVG90YWwgbnVtYmVyIG9mIGlkbGUgaGFuZGxlcyB0byBrZWVwIGluIGNhY2hlICovCiAgICBwcml2YXRlICRtYXhIYW5kbGVzOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkbWF4SGFuZGxlcyBNYXhpbXVtIG51bWJlciBvZiBpZGxlIGhhbmRsZXMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbWF4SGFuZGxlcykKICAgIHsKICAgICAgICAkdGhpcy0+bWF4SGFuZGxlcyA9ICRtYXhIYW5kbGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydjdXJsJ11bJ2JvZHlfYXNfc3RyaW5nJ10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydfYm9keV9hc19zdHJpbmcnXSA9ICRvcHRpb25zWydjdXJsJ11bJ2JvZHlfYXNfc3RyaW5nJ107CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydjdXJsJ11bJ2JvZHlfYXNfc3RyaW5nJ10pOwogICAgICAgIH0KCiAgICAgICAgJGVhc3kgPSBuZXcgRWFzeUhhbmRsZTsKICAgICAgICAkZWFzeS0+cmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICRlYXN5LT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgJGNvbmYgPSAkdGhpcy0+Z2V0RGVmYXVsdENvbmYoJGVhc3kpOwogICAgICAgICR0aGlzLT5hcHBseU1ldGhvZCgkZWFzeSwgJGNvbmYpOwogICAgICAgICR0aGlzLT5hcHBseUhhbmRsZXJPcHRpb25zKCRlYXN5LCAkY29uZik7CiAgICAgICAgJHRoaXMtPmFwcGx5SGVhZGVycygkZWFzeSwgJGNvbmYpOwogICAgICAgIHVuc2V0KCRjb25mWydfaGVhZGVycyddKTsKCiAgICAgICAgLy8gQWRkIGhhbmRsZXIgb3B0aW9ucyBmcm9tIHRoZSByZXF1ZXN0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucwogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snY3VybCddKSkgewogICAgICAgICAgICAkY29uZiA9IGFycmF5X3JlcGxhY2UoJGNvbmYsICRvcHRpb25zWydjdXJsJ10pOwogICAgICAgIH0KCiAgICAgICAgJGNvbmZbQ1VSTE9QVF9IRUFERVJGVU5DVElPTl0gPSAkdGhpcy0+Y3JlYXRlSGVhZGVyRm4oJGVhc3kpOwogICAgICAgICRlYXN5LT5oYW5kbGUgPSAkdGhpcy0+aGFuZGxlcwogICAgICAgICAgICA/IGFycmF5X3BvcCgkdGhpcy0+aGFuZGxlcykKICAgICAgICAgICAgOiBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkZWFzeS0+aGFuZGxlLCAkY29uZik7CgogICAgICAgIHJldHVybiAkZWFzeTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVsZWFzZShFYXN5SGFuZGxlICRlYXN5KQogICAgewogICAgICAgICRyZXNvdXJjZSA9ICRlYXN5LT5oYW5kbGU7CiAgICAgICAgdW5zZXQoJGVhc3ktPmhhbmRsZSk7CgogICAgICAgIGlmIChjb3VudCgkdGhpcy0+aGFuZGxlcykgPj0gJHRoaXMtPm1heEhhbmRsZXMpIHsKICAgICAgICAgICAgY3VybF9jbG9zZSgkcmVzb3VyY2UpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY2FsbGJhY2sgZnVuY3Rpb25zIGFzIHRoZXkgY2FuIGhvbGQgb250byByZWZlcmVuY2VzCiAgICAgICAgICAgIC8vIGFuZCBhcmUgbm90IGNsZWFuZWQgdXAgYnkgY3VybF9yZXNldC4gVXNpbmcgY3VybF9zZXRvcHRfYXJyYXkKICAgICAgICAgICAgLy8gZG9lcyBub3Qgd29yayBmb3Igc29tZSByZWFzb24sIHNvIHJlbW92aW5nIGVhY2ggb25lCiAgICAgICAgICAgIC8vIGluZGl2aWR1YWxseS4KICAgICAgICAgICAgY3VybF9zZXRvcHQoJHJlc291cmNlLCBDVVJMT1BUX0hFQURFUkZVTkNUSU9OLCBudWxsKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJHJlc291cmNlLCBDVVJMT1BUX1JFQURGVU5DVElPTiwgbnVsbCk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgQ1VSTE9QVF9XUklURUZVTkNUSU9OLCBudWxsKTsKICAgICAgICAgICAgY3VybF9zZXRvcHQoJHJlc291cmNlLCBDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT04sIG51bGwpOwogICAgICAgICAgICBjdXJsX3Jlc2V0KCRyZXNvdXJjZSk7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVzW10gPSAkcmVzb3VyY2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29tcGxldGVzIGEgY1VSTCB0cmFuc2FjdGlvbiwgZWl0aGVyIHJldHVybmluZyBhIHJlc3BvbnNlIHByb21pc2Ugb3IgYQogICAgICogcmVqZWN0ZWQgcHJvbWlzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgICAgICAgICAgICAgJGhhbmRsZXIKICAgICAqIEBwYXJhbSBFYXN5SGFuZGxlICAgICAgICAgICAkZWFzeQogICAgICogQHBhcmFtIEN1cmxGYWN0b3J5SW50ZXJmYWNlICRmYWN0b3J5IERpY3RhdGVzIGhvdyB0aGUgaGFuZGxlIGlzIHJlbGVhc2VkCiAgICAgKgogICAgICogQHJldHVybiBcR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmaW5pc2goCiAgICAgICAgY2FsbGFibGUgJGhhbmRsZXIsCiAgICAgICAgRWFzeUhhbmRsZSAkZWFzeSwKICAgICAgICBDdXJsRmFjdG9yeUludGVyZmFjZSAkZmFjdG9yeQogICAgKSB7CiAgICAgICAgaWYgKGlzc2V0KCRlYXN5LT5vcHRpb25zWydvbl9zdGF0cyddKSkgewogICAgICAgICAgICBzZWxmOjppbnZva2VTdGF0cygkZWFzeSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRlYXN5LT5yZXNwb25zZSB8fCAkZWFzeS0+ZXJybm8pIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmZpbmlzaEVycm9yKCRoYW5kbGVyLCAkZWFzeSwgJGZhY3RvcnkpOwogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIHRoZSByZXNwb25zZSBpZiBpdCBpcyBwcmVzZW50IGFuZCB0aGVyZSBpcyBubyBlcnJvci4KICAgICAgICAkZmFjdG9yeS0+cmVsZWFzZSgkZWFzeSk7CgogICAgICAgIC8vIFJld2luZCB0aGUgYm9keSBvZiB0aGUgcmVzcG9uc2UgaWYgcG9zc2libGUuCiAgICAgICAgJGJvZHkgPSAkZWFzeS0+cmVzcG9uc2UtPmdldEJvZHkoKTsKICAgICAgICBpZiAoJGJvZHktPmlzU2Vla2FibGUoKSkgewogICAgICAgICAgICAkYm9keS0+cmV3aW5kKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEZ1bGZpbGxlZFByb21pc2UoJGVhc3ktPnJlc3BvbnNlKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpbnZva2VTdGF0cyhFYXN5SGFuZGxlICRlYXN5KQogICAgewogICAgICAgICRjdXJsU3RhdHMgPSBjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJHN0YXRzID0gbmV3IFRyYW5zZmVyU3RhdHMoCiAgICAgICAgICAgICRlYXN5LT5yZXF1ZXN0LAogICAgICAgICAgICAkZWFzeS0+cmVzcG9uc2UsCiAgICAgICAgICAgICRjdXJsU3RhdHNbJ3RvdGFsX3RpbWUnXSwKICAgICAgICAgICAgJGVhc3ktPmVycm5vLAogICAgICAgICAgICAkY3VybFN0YXRzCiAgICAgICAgKTsKICAgICAgICBjYWxsX3VzZXJfZnVuYygkZWFzeS0+b3B0aW9uc1snb25fc3RhdHMnXSwgJHN0YXRzKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmaW5pc2hFcnJvcigKICAgICAgICBjYWxsYWJsZSAkaGFuZGxlciwKICAgICAgICBFYXN5SGFuZGxlICRlYXN5LAogICAgICAgIEN1cmxGYWN0b3J5SW50ZXJmYWNlICRmYWN0b3J5CiAgICApIHsKICAgICAgICAvLyBHZXQgZXJyb3IgaW5mb3JtYXRpb24gYW5kIHJlbGVhc2UgdGhlIGhhbmRsZSB0byB0aGUgZmFjdG9yeS4KICAgICAgICAkY3R4ID0gWwogICAgICAgICAgICAnZXJybm8nID0+ICRlYXN5LT5lcnJubywKICAgICAgICAgICAgJ2Vycm9yJyA9PiBjdXJsX2Vycm9yKCRlYXN5LT5oYW5kbGUpLAogICAgICAgIF0gKyBjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGZhY3RvcnktPnJlbGVhc2UoJGVhc3kpOwoKICAgICAgICAvLyBSZXRyeSB3aGVuIG5vdGhpbmcgaXMgcHJlc2VudCBvciB3aGVuIGN1cmwgZmFpbGVkIHRvIHJld2luZC4KICAgICAgICBpZiAoZW1wdHkoJGVhc3ktPm9wdGlvbnNbJ19lcnJfbWVzc2FnZSddKQogICAgICAgICAgICAmJiAoISRlYXN5LT5lcnJubyB8fCAkZWFzeS0+ZXJybm8gPT0gNjUpCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpyZXRyeUZhaWxlZFJld2luZCgkaGFuZGxlciwgJGVhc3ksICRjdHgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZVJlamVjdGlvbigkZWFzeSwgJGN0eCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVqZWN0aW9uKEVhc3lIYW5kbGUgJGVhc3ksIGFycmF5ICRjdHgpCiAgICB7CiAgICAgICAgc3RhdGljICRjb25uZWN0aW9uRXJyb3JzID0gWwogICAgICAgICAgICBDVVJMRV9PUEVSQVRJT05fVElNRU9VVEVEICA9PiB0cnVlLAogICAgICAgICAgICBDVVJMRV9DT1VMRE5UX1JFU09MVkVfSE9TVCA9PiB0cnVlLAogICAgICAgICAgICBDVVJMRV9DT1VMRE5UX0NPTk5FQ1QgICAgICA9PiB0cnVlLAogICAgICAgICAgICBDVVJMRV9TU0xfQ09OTkVDVF9FUlJPUiAgICA9PiB0cnVlLAogICAgICAgICAgICBDVVJMRV9HT1RfTk9USElORyAgICAgICAgICA9PiB0cnVlLAogICAgICAgIF07CgogICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiB3YXMgZW5jb3VudGVyZWQgZHVyaW5nIHRoZSBvbkhlYWRlcnMgZXZlbnQsIHRoZW4KICAgICAgICAvLyByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlIHRoYXQgd3JhcHMgdGhhdCBleGNlcHRpb24uCiAgICAgICAgaWYgKCRlYXN5LT5vbkhlYWRlcnNFeGNlcHRpb24pIHsKICAgICAgICAgICAgcmV0dXJuIFxHdXp6bGVIdHRwXFByb21pc2VccmVqZWN0aW9uX2ZvcigKICAgICAgICAgICAgICAgIG5ldyBSZXF1ZXN0RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICdBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgZHVyaW5nIHRoZSBvbl9oZWFkZXJzIGV2ZW50JywKICAgICAgICAgICAgICAgICAgICAkZWFzeS0+cmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAkZWFzeS0+cmVzcG9uc2UsCiAgICAgICAgICAgICAgICAgICAgJGVhc3ktPm9uSGVhZGVyc0V4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAkY3R4CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkbWVzc2FnZSA9IHNwcmludGYoCiAgICAgICAgICAgICdjVVJMIGVycm9yICVzOiAlcyAoJXMpJywKICAgICAgICAgICAgJGN0eFsnZXJybm8nXSwKICAgICAgICAgICAgJGN0eFsnZXJyb3InXSwKICAgICAgICAgICAgJ3NlZSBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9saWJjdXJsLWVycm9ycy5odG1sJwogICAgICAgICk7CgogICAgICAgIC8vIENyZWF0ZSBhIGNvbm5lY3Rpb24gZXhjZXB0aW9uIGlmIGl0IHdhcyBhIHNwZWNpZmljIGVycm9yIGNvZGUuCiAgICAgICAgJGVycm9yID0gaXNzZXQoJGNvbm5lY3Rpb25FcnJvcnNbJGVhc3ktPmVycm5vXSkKICAgICAgICAgICAgPyBuZXcgQ29ubmVjdEV4Y2VwdGlvbigkbWVzc2FnZSwgJGVhc3ktPnJlcXVlc3QsIG51bGwsICRjdHgpCiAgICAgICAgICAgIDogbmV3IFJlcXVlc3RFeGNlcHRpb24oJG1lc3NhZ2UsICRlYXN5LT5yZXF1ZXN0LCAkZWFzeS0+cmVzcG9uc2UsIG51bGwsICRjdHgpOwoKICAgICAgICByZXR1cm4gXEd1enpsZUh0dHBcUHJvbWlzZVxyZWplY3Rpb25fZm9yKCRlcnJvcik7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXREZWZhdWx0Q29uZihFYXN5SGFuZGxlICRlYXN5KQogICAgewogICAgICAgICRjb25mID0gWwogICAgICAgICAgICAnX2hlYWRlcnMnICAgICAgICAgICAgID0+ICRlYXN5LT5yZXF1ZXN0LT5nZXRIZWFkZXJzKCksCiAgICAgICAgICAgIENVUkxPUFRfQ1VTVE9NUkVRVUVTVCAgPT4gJGVhc3ktPnJlcXVlc3QtPmdldE1ldGhvZCgpLAogICAgICAgICAgICBDVVJMT1BUX1VSTCAgICAgICAgICAgID0+IChzdHJpbmcpICRlYXN5LT5yZXF1ZXN0LT5nZXRVcmkoKS0+d2l0aEZyYWdtZW50KCcnKSwKICAgICAgICAgICAgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiBmYWxzZSwKICAgICAgICAgICAgQ1VSTE9QVF9IRUFERVIgICAgICAgICA9PiBmYWxzZSwKICAgICAgICAgICAgQ1VSTE9QVF9DT05ORUNUVElNRU9VVCA9PiAxNTAsCiAgICAgICAgXTsKCiAgICAgICAgaWYgKGRlZmluZWQoJ0NVUkxPUFRfUFJPVE9DT0xTJykpIHsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9QUk9UT0NPTFNdID0gQ1VSTFBST1RPX0hUVFAgfCBDVVJMUFJPVE9fSFRUUFM7CiAgICAgICAgfQoKICAgICAgICAkdmVyc2lvbiA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKTsKICAgICAgICBpZiAoJHZlcnNpb24gPT0gMS4xKSB7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSFRUUF9WRVJTSU9OXSA9IENVUkxfSFRUUF9WRVJTSU9OXzFfMTsKICAgICAgICB9IGVsc2VpZiAoJHZlcnNpb24gPT0gMi4wKSB7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSFRUUF9WRVJTSU9OXSA9IENVUkxfSFRUUF9WRVJTSU9OXzJfMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBfVkVSU0lPTl0gPSBDVVJMX0hUVFBfVkVSU0lPTl8xXzA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbmY7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhcHBseU1ldGhvZChFYXN5SGFuZGxlICRlYXN5LCBhcnJheSAmJGNvbmYpCiAgICB7CiAgICAgICAgJGJvZHkgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0Qm9keSgpOwogICAgICAgICRzaXplID0gJGJvZHktPmdldFNpemUoKTsKCiAgICAgICAgaWYgKCRzaXplID09PSBudWxsIHx8ICRzaXplID4gMCkgewogICAgICAgICAgICAkdGhpcy0+YXBwbHlCb2R5KCRlYXN5LT5yZXF1ZXN0LCAkZWFzeS0+b3B0aW9ucywgJGNvbmYpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkbWV0aG9kID0gJGVhc3ktPnJlcXVlc3QtPmdldE1ldGhvZCgpOwogICAgICAgIGlmICgkbWV0aG9kID09PSAnUFVUJyB8fCAkbWV0aG9kID09PSAnUE9TVCcpIHsKICAgICAgICAgICAgLy8gU2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjMuMgogICAgICAgICAgICBpZiAoISRlYXN5LT5yZXF1ZXN0LT5oYXNIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJykpIHsKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdDb250ZW50LUxlbmd0aDogMCc7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJG1ldGhvZCA9PT0gJ0hFQUQnKSB7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfTk9CT0RZXSA9IHRydWU7CiAgICAgICAgICAgIHVuc2V0KAogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9XUklURUZVTkNUSU9OXSwKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfUkVBREZVTkNUSU9OXSwKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfRklMRV0sCiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0lORklMRV0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhcHBseUJvZHkoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMsIGFycmF5ICYkY29uZikKICAgIHsKICAgICAgICAkc2l6ZSA9ICRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJykKICAgICAgICAgICAgPyAoaW50KSAkcmVxdWVzdC0+Z2V0SGVhZGVyTGluZSgnQ29udGVudC1MZW5ndGgnKQogICAgICAgICAgICA6IG51bGw7CgogICAgICAgIC8vIFNlbmQgdGhlIGJvZHkgYXMgYSBzdHJpbmcgaWYgdGhlIHNpemUgaXMgbGVzcyB0aGFuIDFNQiBPUiBpZiB0aGUKICAgICAgICAvLyBbY3VybF1bYm9keV9hc19zdHJpbmddIHJlcXVlc3QgdmFsdWUgaXMgc2V0LgogICAgICAgIGlmICgoJHNpemUgIT09IG51bGwgJiYgJHNpemUgPCAxMDAwMDAwKSB8fAogICAgICAgICAgICAhZW1wdHkoJG9wdGlvbnNbJ19ib2R5X2FzX3N0cmluZyddKQogICAgICAgICkgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX1BPU1RGSUVMRFNdID0gKHN0cmluZykgJHJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAgICAgLy8gRG9uJ3QgZHVwbGljYXRlIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIKICAgICAgICAgICAgJHRoaXMtPnJlbW92ZUhlYWRlcignQ29udGVudC1MZW5ndGgnLCAkY29uZik7CiAgICAgICAgICAgICR0aGlzLT5yZW1vdmVIZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJywgJGNvbmYpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfVVBMT0FEXSA9IHRydWU7CiAgICAgICAgICAgIGlmICgkc2l6ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9JTkZJTEVTSVpFXSA9ICRzaXplOwogICAgICAgICAgICAgICAgJHRoaXMtPnJlbW92ZUhlYWRlcignQ29udGVudC1MZW5ndGgnLCAkY29uZik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGJvZHkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpOwogICAgICAgICAgICBpZiAoJGJvZHktPmlzU2Vla2FibGUoKSkgewogICAgICAgICAgICAgICAgJGJvZHktPnJld2luZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfUkVBREZVTkNUSU9OXSA9IGZ1bmN0aW9uICgkY2gsICRmZCwgJGxlbmd0aCkgdXNlICgkYm9keSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRib2R5LT5yZWFkKCRsZW5ndGgpOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIEV4cGVjdCBoZWFkZXIgaXMgbm90IHByZXNlbnQsIHByZXZlbnQgY3VybCBmcm9tIGFkZGluZyBpdAogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignRXhwZWN0JykpIHsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9IVFRQSEVBREVSXVtdID0gJ0V4cGVjdDonOwogICAgICAgIH0KCiAgICAgICAgLy8gY1VSTCBzb21ldGltZXMgYWRkcyBhIGNvbnRlbnQtdHlwZSBieSBkZWZhdWx0LiBQcmV2ZW50IHRoaXMuCiAgICAgICAgaWYgKCEkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb250ZW50LVR5cGUnKSkgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAnQ29udGVudC1UeXBlOic7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlIZWFkZXJzKEVhc3lIYW5kbGUgJGVhc3ksIGFycmF5ICYkY29uZikKICAgIHsKICAgICAgICBmb3JlYWNoICgkY29uZlsnX2hlYWRlcnMnXSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAoc3RyaW5nKSAkdmFsdWU7CiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID09PSAnJykgewogICAgICAgICAgICAgICAgICAgIC8vIGNVUkwgcmVxdWlyZXMgYSBzcGVjaWFsIGZvcm1hdCBmb3IgZW1wdHkgaGVhZGVycy4KICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzE4ODIgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAiJG5hbWU7IjsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9IVFRQSEVBREVSXVtdID0gIiRuYW1lOiAkdmFsdWUiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgdGhlIEFjY2VwdCBoZWFkZXIgaWYgb25lIHdhcyBub3Qgc2V0CiAgICAgICAgaWYgKCEkZWFzeS0+cmVxdWVzdC0+aGFzSGVhZGVyKCdBY2NlcHQnKSkgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAnQWNjZXB0Oic7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgaGVhZGVyIGZyb20gdGhlIG9wdGlvbnMgYXJyYXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSAgICBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciB0byByZW1vdmUKICAgICAqIEBwYXJhbSBhcnJheSAgJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucyB0byBtb2RpZnkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZW1vdmVIZWFkZXIoJG5hbWUsIGFycmF5ICYkb3B0aW9ucykKICAgIHsKICAgICAgICBmb3JlYWNoIChhcnJheV9rZXlzKCRvcHRpb25zWydfaGVhZGVycyddKSBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcCgka2V5LCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydfaGVhZGVycyddWyRrZXldKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5SGFuZGxlck9wdGlvbnMoRWFzeUhhbmRsZSAkZWFzeSwgYXJyYXkgJiRjb25mKQogICAgewogICAgICAgICRvcHRpb25zID0gJGVhc3ktPm9wdGlvbnM7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWyd2ZXJpZnknXSkpIHsKICAgICAgICAgICAgaWYgKCRvcHRpb25zWyd2ZXJpZnknXSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRjb25mW0NVUkxPUFRfQ0FJTkZPXSk7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1NTTF9WRVJJRllIT1NUXSA9IDA7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1NTTF9WRVJJRllQRUVSXSA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVF0gPSAyOwogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUl0gPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIGZpbGUvZm9sZGVyL2xpbmsgcGF0aCBpcyBub3QgdmFsaWQgb3IgZG9lc24ndCBleGlzdC4KICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRvcHRpb25zWyd2ZXJpZnknXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1NMIENBIGJ1bmRsZSBub3QgZm91bmQ6IHskb3B0aW9uc1sndmVyaWZ5J119IgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIGEgZGlyZWN0b3J5IG9yIGEgbGluayB0byBhIGRpcmVjdG9yeSB1c2UgQ1VSTE9QVF9DQVBBVEguCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90LCBpdCdzIHByb2JhYmx5IGEgZmlsZSwgb3IgYSBsaW5rIHRvIGEgZmlsZSwgc28gdXNlIENVUkxPUFRfQ0FJTkZPLgogICAgICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJG9wdGlvbnNbJ3ZlcmlmeSddKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoaXNfbGluaygkb3B0aW9uc1sndmVyaWZ5J10pICYmIGlzX2RpcihyZWFkbGluaygkb3B0aW9uc1sndmVyaWZ5J10pKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9DQVBBVEhdID0gJG9wdGlvbnNbJ3ZlcmlmeSddOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfQ0FJTkZPXSA9ICRvcHRpb25zWyd2ZXJpZnknXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10pKSB7CiAgICAgICAgICAgICRhY2NlcHQgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0SGVhZGVyTGluZSgnQWNjZXB0LUVuY29kaW5nJyk7CiAgICAgICAgICAgIGlmICgkYWNjZXB0KSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0VOQ09ESU5HXSA9ICRhY2NlcHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0VOQ09ESU5HXSA9ICcnOwogICAgICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IGN1cmwgc2VuZCB0aGUgaGVhZGVyIG92ZXIgdGhlIHdpcmUKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdBY2NlcHQtRW5jb2Rpbmc6JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzaW5rJ10pKSB7CiAgICAgICAgICAgICRzaW5rID0gJG9wdGlvbnNbJ3NpbmsnXTsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJHNpbmspKSB7CiAgICAgICAgICAgICAgICAkc2luayA9IFxHdXp6bGVIdHRwXFBzcjdcc3RyZWFtX2Zvcigkc2luayk7CiAgICAgICAgICAgIH0gZWxzZWlmICghaXNfZGlyKGRpcm5hbWUoJHNpbmspKSkgewogICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGRpcmVjdG9yeSBleGlzdHMgYmVmb3JlIGZhaWxpbmcgaW4gY3VybC4KICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdEaXJlY3RvcnkgJXMgZG9lcyBub3QgZXhpc3QgZm9yIHNpbmsgdmFsdWUgb2YgJXMnLAogICAgICAgICAgICAgICAgICAgIGRpcm5hbWUoJHNpbmspLAogICAgICAgICAgICAgICAgICAgICRzaW5rCiAgICAgICAgICAgICAgICApKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzaW5rID0gbmV3IExhenlPcGVuU3RyZWFtKCRzaW5rLCAndysnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZWFzeS0+c2luayA9ICRzaW5rOwogICAgICAgICAgICAkY29uZltDVVJMT1BUX1dSSVRFRlVOQ1RJT05dID0gZnVuY3Rpb24gKCRjaCwgJHdyaXRlKSB1c2UgKCRzaW5rKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHNpbmstPndyaXRlKCR3cml0ZSk7CiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gVXNlIGEgZGVmYXVsdCB0ZW1wIHN0cmVhbSBpZiBubyBzaW5rIHdhcyBzZXQuCiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfRklMRV0gPSBmb3BlbigncGhwOi8vdGVtcCcsICd3KycpOwogICAgICAgICAgICAkZWFzeS0+c2luayA9IFBzcjdcc3RyZWFtX2ZvcigkY29uZltDVVJMT1BUX0ZJTEVdKTsKICAgICAgICB9CiAgICAgICAgJHRpbWVvdXRSZXF1aXJlc05vU2lnbmFsID0gZmFsc2U7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWyd0aW1lb3V0J10pKSB7CiAgICAgICAgICAgICR0aW1lb3V0UmVxdWlyZXNOb1NpZ25hbCB8PSAkb3B0aW9uc1sndGltZW91dCddIDwgMTsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9USU1FT1VUX01TXSA9ICRvcHRpb25zWyd0aW1lb3V0J10gKiAxMDAwOwogICAgICAgIH0KCiAgICAgICAgLy8gQ1VSTCBkZWZhdWx0IHZhbHVlIGlzIENVUkxfSVBSRVNPTFZFX1dIQVRFVkVSCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pKSB7CiAgICAgICAgICAgIGlmICgndjQnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0lQUkVTT0xWRV0gPSBDVVJMX0lQUkVTT0xWRV9WNDsKICAgICAgICAgICAgfSBlbHNlaWYgKCd2NicgPT09ICRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pIHsKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSVBSRVNPTFZFXSA9IENVUkxfSVBSRVNPTFZFX1Y2OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2Nvbm5lY3RfdGltZW91dCddKSkgewogICAgICAgICAgICAkdGltZW91dFJlcXVpcmVzTm9TaWduYWwgfD0gJG9wdGlvbnNbJ2Nvbm5lY3RfdGltZW91dCddIDwgMTsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9DT05ORUNUVElNRU9VVF9NU10gPSAkb3B0aW9uc1snY29ubmVjdF90aW1lb3V0J10gKiAxMDAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aW1lb3V0UmVxdWlyZXNOb1NpZ25hbCAmJiBzdHJ0b3VwcGVyKHN1YnN0cihQSFBfT1MsIDAsIDMpKSAhPT0gJ1dJTicpIHsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9OT1NJR05BTF0gPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydwcm94eSddKSkgewogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRvcHRpb25zWydwcm94eSddKSkgewogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9QUk9YWV0gPSAkb3B0aW9uc1sncHJveHknXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzY2hlbWUgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0VXJpKCktPmdldFNjaGVtZSgpOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydwcm94eSddWyRzY2hlbWVdKSkgewogICAgICAgICAgICAgICAgICAgICRob3N0ID0gJGVhc3ktPnJlcXVlc3QtPmdldFVyaSgpLT5nZXRIb3N0KCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1sncHJveHknXVsnbm8nXSkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIVxHdXp6bGVIdHRwXGlzX2hvc3RfaW5fbm9wcm94eSgkaG9zdCwgJG9wdGlvbnNbJ3Byb3h5J11bJ25vJ10pCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfUFJPWFldID0gJG9wdGlvbnNbJ3Byb3h5J11bJHNjaGVtZV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2NlcnQnXSkpIHsKICAgICAgICAgICAgJGNlcnQgPSAkb3B0aW9uc1snY2VydCddOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJGNlcnQpKSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1NTTENFUlRQQVNTV0RdID0gJGNlcnRbMV07CiAgICAgICAgICAgICAgICAkY2VydCA9ICRjZXJ0WzBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZmlsZV9leGlzdHMoJGNlcnQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiU1NMIGNlcnRpZmljYXRlIG5vdCBmb3VuZDogeyRjZXJ0fSIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TU0xDRVJUXSA9ICRjZXJ0OwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzc2xfa2V5J10pKSB7CiAgICAgICAgICAgICRzc2xLZXkgPSAkb3B0aW9uc1snc3NsX2tleSddOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHNzbEtleSkpIHsKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfU1NMS0VZUEFTU1dEXSA9ICRzc2xLZXlbMV07CiAgICAgICAgICAgICAgICAkc3NsS2V5ID0gJHNzbEtleVswXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRzc2xLZXkpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiU1NMIHByaXZhdGUga2V5IG5vdCBmb3VuZDogeyRzc2xLZXl9IgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29uZltDVVJMT1BUX1NTTEtFWV0gPSAkc3NsS2V5OwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydwcm9ncmVzcyddKSkgewogICAgICAgICAgICAkcHJvZ3Jlc3MgPSAkb3B0aW9uc1sncHJvZ3Jlc3MnXTsKICAgICAgICAgICAgaWYgKCFpc19jYWxsYWJsZSgkcHJvZ3Jlc3MpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAncHJvZ3Jlc3MgY2xpZW50IG9wdGlvbiBtdXN0IGJlIGNhbGxhYmxlJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29uZltDVVJMT1BUX05PUFJPR1JFU1NdID0gZmFsc2U7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfUFJPR1JFU1NGVU5DVElPTl0gPSBmdW5jdGlvbiAoKSB1c2UgKCRwcm9ncmVzcykgewogICAgICAgICAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CiAgICAgICAgICAgICAgICAvLyBQSFAgNS41IHB1c2hlZCB0aGUgaGFuZGxlIG9udG8gdGhlIHN0YXJ0IG9mIHRoZSBhcmdzCiAgICAgICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJGFyZ3NbMF0pKSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXlfc2hpZnQoJGFyZ3MpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmNfYXJyYXkoJHByb2dyZXNzLCAkYXJncyk7CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydkZWJ1ZyddKSkgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX1NUREVSUl0gPSBcR3V6emxlSHR0cFxkZWJ1Z19yZXNvdXJjZSgkb3B0aW9uc1snZGVidWcnXSk7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfVkVSQk9TRV0gPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGF0IGEgcmVzcG9uc2Ugd2FzIHNldCBvbiBhIHRyYW5zYWN0aW9uLiBJZiBvbmUKICAgICAqIHdhcyBub3Qgc2V0LCB0aGVuIHRoZSByZXF1ZXN0IGlzIHJldHJpZWQgaWYgcG9zc2libGUuIFRoaXMgZXJyb3IKICAgICAqIHR5cGljYWxseSBtZWFucyB5b3UgYXJlIHNlbmRpbmcgYSBwYXlsb2FkLCBjdXJsIGVuY291bnRlcmVkIGEKICAgICAqICJDb25uZWN0aW9uIGRpZWQsIHJldHJ5aW5nIGEgZnJlc2ggY29ubmVjdCIgZXJyb3IsIHRyaWVkIHRvIHJld2luZCB0aGUKICAgICAqIHN0cmVhbSwgYW5kIHRoZW4gZW5jb3VudGVyZWQgYSAibmVjZXNzYXJ5IGRhdGEgcmV3aW5kIHdhc24ndCBwb3NzaWJsZSIKICAgICAqIGVycm9yLCBjYXVzaW5nIHRoZSByZXF1ZXN0IHRvIGJlIHNlbnQgdGhyb3VnaCBjdXJsX211bHRpX2luZm9fcmVhZCgpCiAgICAgKiB3aXRob3V0IGFuIGVycm9yIHN0YXR1cy4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmV0cnlGYWlsZWRSZXdpbmQoCiAgICAgICAgY2FsbGFibGUgJGhhbmRsZXIsCiAgICAgICAgRWFzeUhhbmRsZSAkZWFzeSwKICAgICAgICBhcnJheSAkY3R4CiAgICApIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvLyBPbmx5IHJld2luZCBpZiB0aGUgYm9keSBoYXMgYmVlbiByZWFkIGZyb20uCiAgICAgICAgICAgICRib2R5ID0gJGVhc3ktPnJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAgICAgaWYgKCRib2R5LT50ZWxsKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAkYm9keS0+cmV3aW5kKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChcUnVudGltZUV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkY3R4WydlcnJvciddID0gJ1RoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRseSBmYWlsZWQgd2l0aG91dCAnCiAgICAgICAgICAgICAgICAuICdwcm92aWRpbmcgYW4gZXJyb3IuIFRoZSByZXF1ZXN0IHdvdWxkIGhhdmUgYmVlbiByZXRyaWVkLCAnCiAgICAgICAgICAgICAgICAuICdidXQgYXR0ZW1wdGluZyB0byByZXdpbmQgdGhlIHJlcXVlc3QgYm9keSBmYWlsZWQuICcKICAgICAgICAgICAgICAgIC4gJ0V4Y2VwdGlvbjogJyAuICRlOwogICAgICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlUmVqZWN0aW9uKCRlYXN5LCAkY3R4KTsKICAgICAgICB9CgogICAgICAgIC8vIFJldHJ5IG5vIG1vcmUgdGhhbiAzIHRpbWVzIGJlZm9yZSBnaXZpbmcgdXAuCiAgICAgICAgaWYgKCFpc3NldCgkZWFzeS0+b3B0aW9uc1snX2N1cmxfcmV0cmllcyddKSkgewogICAgICAgICAgICAkZWFzeS0+b3B0aW9uc1snX2N1cmxfcmV0cmllcyddID0gMTsKICAgICAgICB9IGVsc2VpZiAoJGVhc3ktPm9wdGlvbnNbJ19jdXJsX3JldHJpZXMnXSA9PSAyKSB7CiAgICAgICAgICAgICRjdHhbJ2Vycm9yJ10gPSAnVGhlIGNVUkwgcmVxdWVzdCB3YXMgcmV0cmllZCAzIHRpbWVzICcKICAgICAgICAgICAgICAgIC4gJ2FuZCBkaWQgbm90IHN1Y2NlZWQuIFRoZSBtb3N0IGxpa2VseSByZWFzb24gZm9yIHRoZSBmYWlsdXJlICcKICAgICAgICAgICAgICAgIC4gJ2lzIHRoYXQgY1VSTCB3YXMgdW5hYmxlIHRvIHJld2luZCB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdCAnCiAgICAgICAgICAgICAgICAuICdhbmQgc3Vic2VxdWVudCByZXRyaWVzIHJlc3VsdGVkIGluIHRoZSBzYW1lIGVycm9yLiBUdXJuIG9uICcKICAgICAgICAgICAgICAgIC4gJ3RoZSBkZWJ1ZyBvcHRpb24gdG8gc2VlIHdoYXQgd2VudCB3cm9uZy4gU2VlICcKICAgICAgICAgICAgICAgIC4gJ2h0dHBzOi8vYnVncy5waHAubmV0L2J1Zy5waHA/aWQ9NDcyMDQgZm9yIG1vcmUgaW5mb3JtYXRpb24uJzsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZVJlamVjdGlvbigkZWFzeSwgJGN0eCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGVhc3ktPm9wdGlvbnNbJ19jdXJsX3JldHJpZXMnXSsrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRlYXN5LT5yZXF1ZXN0LCAkZWFzeS0+b3B0aW9ucyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVIZWFkZXJGbihFYXN5SGFuZGxlICRlYXN5KQogICAgewogICAgICAgIGlmIChpc3NldCgkZWFzeS0+b3B0aW9uc1snb25faGVhZGVycyddKSkgewogICAgICAgICAgICAkb25IZWFkZXJzID0gJGVhc3ktPm9wdGlvbnNbJ29uX2hlYWRlcnMnXTsKCiAgICAgICAgICAgIGlmICghaXNfY2FsbGFibGUoJG9uSGVhZGVycykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdvbl9oZWFkZXJzIG11c3QgYmUgY2FsbGFibGUnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRvbkhlYWRlcnMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkY2gsICRoKSB1c2UgKAogICAgICAgICAgICAkb25IZWFkZXJzLAogICAgICAgICAgICAkZWFzeSwKICAgICAgICAgICAgJiRzdGFydGluZ1Jlc3BvbnNlCiAgICAgICAgKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHRyaW0oJGgpOwogICAgICAgICAgICBpZiAoJHZhbHVlID09PSAnJykgewogICAgICAgICAgICAgICAgJHN0YXJ0aW5nUmVzcG9uc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgJGVhc3ktPmNyZWF0ZVJlc3BvbnNlKCk7CiAgICAgICAgICAgICAgICBpZiAoJG9uSGVhZGVycyAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvbkhlYWRlcnMoJGVhc3ktPnJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgZXhjZXB0aW9uIHdpdGggdGhlIGhhbmRsZSBhbmQgdHJpZ2dlcgogICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGN1cmwgaGVhZGVyIHdyaXRlIGVycm9yIGJ5IHJldHVybmluZyAwLgogICAgICAgICAgICAgICAgICAgICAgICAkZWFzeS0+b25IZWFkZXJzRXhjZXB0aW9uID0gJGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgkc3RhcnRpbmdSZXNwb25zZSkgewogICAgICAgICAgICAgICAgJHN0YXJ0aW5nUmVzcG9uc2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgICRlYXN5LT5oZWFkZXJzID0gWyR2YWx1ZV07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZWFzeS0+aGVhZGVyc1tdID0gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzdHJsZW4oJGgpOwogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgppbnRlcmZhY2UgQ3VybEZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgY1VSTCBoYW5kbGUgcmVzb3VyY2UuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgVHJhbnNmZXIgb3B0aW9ucwogICAgICoKICAgICAqIEByZXR1cm4gRWFzeUhhbmRsZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiB3aGVuIGFuIG9wdGlvbiBjYW5ub3QgYmUgYXBwbGllZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKTsKCiAgICAvKioKICAgICAqIFJlbGVhc2UgYW4gZWFzeSBoYW5kbGUsIGFsbG93aW5nIGl0IHRvIGJlIHJldXNlZCBvciBjbG9zZWQuCiAgICAgKgogICAgICogVGhpcyBmdW5jdGlvbiBtdXN0IGNhbGwgdW5zZXQgb24gdGhlIGVhc3kgaGFuZGxlJ3MgImhhbmRsZSIgcHJvcGVydHkuCiAgICAgKgogICAgICogQHBhcmFtIEVhc3lIYW5kbGUgJGVhc3kKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbGVhc2UoRWFzeUhhbmRsZSAkZWFzeSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogSFRUUCBoYW5kbGVyIHRoYXQgdXNlcyBjVVJMIGVhc3kgaGFuZGxlcyBhcyBhIHRyYW5zcG9ydCBsYXllci4KICoKICogV2hlbiB1c2luZyB0aGUgQ3VybEhhbmRsZXIsIGN1c3RvbSBjdXJsIG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBhcyBhbgogKiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBjdXJsIG9wdGlvbiBjb25zdGFudHMgbWFwcGluZyB0byB2YWx1ZXMgaW4gdGhlCiAqICoqY3VybCoqIGtleSBvZiB0aGUgImNsaWVudCIga2V5IG9mIHRoZSByZXF1ZXN0LgogKi8KY2xhc3MgQ3VybEhhbmRsZXIKewogICAgLyoqIEB2YXIgQ3VybEZhY3RvcnlJbnRlcmZhY2UgKi8KICAgIHByaXZhdGUgJGZhY3Rvcnk7CgogICAgLyoqCiAgICAgKiBBY2NlcHRzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnM6CiAgICAgKgogICAgICogLSBmYWN0b3J5OiBPcHRpb25hbCBjdXJsIGZhY3RvcnkgdXNlZCB0byBjcmVhdGUgY1VSTCBoYW5kbGVzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBBcnJheSBvZiBvcHRpb25zIHRvIHVzZSB3aXRoIHRoZSBoYW5kbGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5mYWN0b3J5ID0gaXNzZXQoJG9wdGlvbnNbJ2hhbmRsZV9mYWN0b3J5J10pCiAgICAgICAgICAgID8gJG9wdGlvbnNbJ2hhbmRsZV9mYWN0b3J5J10KICAgICAgICAgICAgOiBuZXcgQ3VybEZhY3RvcnkoMyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snZGVsYXknXSkpIHsKICAgICAgICAgICAgdXNsZWVwKCRvcHRpb25zWydkZWxheSddICogMTAwMCk7CiAgICAgICAgfQoKICAgICAgICAkZWFzeSA9ICR0aGlzLT5mYWN0b3J5LT5jcmVhdGUoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICBjdXJsX2V4ZWMoJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGVhc3ktPmVycm5vID0gY3VybF9lcnJubygkZWFzeS0+aGFuZGxlKTsKCiAgICAgICAgcmV0dXJuIEN1cmxGYWN0b3J5OjpmaW5pc2goJHRoaXMsICRlYXN5LCAkdGhpcy0+ZmFjdG9yeSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXFByb21pc2UgYXMgUDsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQc3I3Owp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFJldHVybnMgYW4gYXN5bmNocm9ub3VzIHJlc3BvbnNlIHVzaW5nIGN1cmxfbXVsdGlfKiBmdW5jdGlvbnMuCiAqCiAqIFdoZW4gdXNpbmcgdGhlIEN1cmxNdWx0aUhhbmRsZXIsIGN1c3RvbSBjdXJsIG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBhcyBhbgogKiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBjdXJsIG9wdGlvbiBjb25zdGFudHMgbWFwcGluZyB0byB2YWx1ZXMgaW4gdGhlCiAqICoqY3VybCoqIGtleSBvZiB0aGUgcHJvdmlkZWQgcmVxdWVzdCBvcHRpb25zLgogKgogKiBAcHJvcGVydHkgcmVzb3VyY2UgJF9taCBJbnRlcm5hbCB1c2Ugb25seS4gTGF6eSBsb2FkZWQgbXVsdGktaGFuZGxlLgogKi8KY2xhc3MgQ3VybE11bHRpSGFuZGxlcgp7CiAgICAvKiogQHZhciBDdXJsRmFjdG9yeUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkZmFjdG9yeTsKICAgIHByaXZhdGUgJHNlbGVjdFRpbWVvdXQ7CiAgICBwcml2YXRlICRhY3RpdmU7CiAgICBwcml2YXRlICRoYW5kbGVzID0gW107CiAgICBwcml2YXRlICRkZWxheXMgPSBbXTsKCiAgICAvKioKICAgICAqIFRoaXMgaGFuZGxlciBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKICAgICAqCiAgICAgKiAtIGhhbmRsZV9mYWN0b3J5OiBBbiBvcHRpb25hbCBmYWN0b3J5ICB1c2VkIHRvIGNyZWF0ZSBjdXJsIGhhbmRsZXMKICAgICAqIC0gc2VsZWN0X3RpbWVvdXQ6IE9wdGlvbmFsIHRpbWVvdXQgKGluIHNlY29uZHMpIHRvIGJsb2NrIGJlZm9yZSB0aW1pbmcKICAgICAqICAgb3V0IHdoaWxlIHNlbGVjdGluZyBjdXJsIGhhbmRsZXMuIERlZmF1bHRzIHRvIDEgc2Vjb25kLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJG9wdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICAkdGhpcy0+ZmFjdG9yeSA9IGlzc2V0KCRvcHRpb25zWydoYW5kbGVfZmFjdG9yeSddKQogICAgICAgICAgICA/ICRvcHRpb25zWydoYW5kbGVfZmFjdG9yeSddIDogbmV3IEN1cmxGYWN0b3J5KDUwKTsKICAgICAgICAkdGhpcy0+c2VsZWN0VGltZW91dCA9IGlzc2V0KCRvcHRpb25zWydzZWxlY3RfdGltZW91dCddKQogICAgICAgICAgICA/ICRvcHRpb25zWydzZWxlY3RfdGltZW91dCddIDogMTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJG5hbWUpCiAgICB7CiAgICAgICAgaWYgKCRuYW1lID09PSAnX21oJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPl9taCA9IGN1cmxfbXVsdGlfaW5pdCgpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+X21oKSkgewogICAgICAgICAgICBjdXJsX211bHRpX2Nsb3NlKCR0aGlzLT5fbWgpOwogICAgICAgICAgICB1bnNldCgkdGhpcy0+X21oKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgICRlYXN5ID0gJHRoaXMtPmZhY3RvcnktPmNyZWF0ZSgkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICRpZCA9IChpbnQpICRlYXN5LT5oYW5kbGU7CgogICAgICAgICRwcm9taXNlID0gbmV3IFByb21pc2UoCiAgICAgICAgICAgIFskdGhpcywgJ2V4ZWN1dGUnXSwKICAgICAgICAgICAgZnVuY3Rpb24gKCkgdXNlICgkaWQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y2FuY2VsKCRpZCk7CiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICAkdGhpcy0+YWRkUmVxdWVzdChbJ2Vhc3knID0+ICRlYXN5LCAnZGVmZXJyZWQnID0+ICRwcm9taXNlXSk7CgogICAgICAgIHJldHVybiAkcHJvbWlzZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRpY2tzIHRoZSBjdXJsIGV2ZW50IGxvb3AuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0aWNrKCkKICAgIHsKICAgICAgICAvLyBBZGQgYW55IGRlbGF5ZWQgaGFuZGxlcyBpZiBuZWVkZWQuCiAgICAgICAgaWYgKCR0aGlzLT5kZWxheXMpIHsKICAgICAgICAgICAgJGN1cnJlbnRUaW1lID0gbWljcm90aW1lKHRydWUpOwogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZGVsYXlzIGFzICRpZCA9PiAkZGVsYXkpIHsKICAgICAgICAgICAgICAgIGlmICgkY3VycmVudFRpbWUgPj0gJGRlbGF5KSB7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmRlbGF5c1skaWRdKTsKICAgICAgICAgICAgICAgICAgICBjdXJsX211bHRpX2FkZF9oYW5kbGUoCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5fbWgsCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5oYW5kbGVzWyRpZF1bJ2Vhc3knXS0+aGFuZGxlCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gU3RlcCB0aHJvdWdoIHRoZSB0YXNrIHF1ZXVlIHdoaWNoIG1heSBhZGQgYWRkaXRpb25hbCByZXF1ZXN0cy4KICAgICAgICBQXHF1ZXVlKCktPnJ1bigpOwoKICAgICAgICBpZiAoJHRoaXMtPmFjdGl2ZSAmJgogICAgICAgICAgICBjdXJsX211bHRpX3NlbGVjdCgkdGhpcy0+X21oLCAkdGhpcy0+c2VsZWN0VGltZW91dCkgPT09IC0xCiAgICAgICAgKSB7CiAgICAgICAgICAgIC8vIFBlcmZvcm0gYSB1c2xlZXAgaWYgYSBzZWxlY3QgcmV0dXJucyAtMS4KICAgICAgICAgICAgLy8gU2VlOiBodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTYxMTQxCiAgICAgICAgICAgIHVzbGVlcCgyNTApOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKGN1cmxfbXVsdGlfZXhlYygkdGhpcy0+X21oLCAkdGhpcy0+YWN0aXZlKSA9PT0gQ1VSTE1fQ0FMTF9NVUxUSV9QRVJGT1JNKTsKCiAgICAgICAgJHRoaXMtPnByb2Nlc3NNZXNzYWdlcygpOwogICAgfQoKICAgIC8qKgogICAgICogUnVucyB1bnRpbCBhbGwgb3V0c3RhbmRpbmcgY29ubmVjdGlvbnMgaGF2ZSBjb21wbGV0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCkKICAgIHsKICAgICAgICAkcXVldWUgPSBQXHF1ZXVlKCk7CgogICAgICAgIHdoaWxlICgkdGhpcy0+aGFuZGxlcyB8fCAhJHF1ZXVlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRyYW5zZmVycywgdGhlbiBzbGVlcCBmb3IgdGhlIG5leHQgZGVsYXkKICAgICAgICAgICAgaWYgKCEkdGhpcy0+YWN0aXZlICYmICR0aGlzLT5kZWxheXMpIHsKICAgICAgICAgICAgICAgIHVzbGVlcCgkdGhpcy0+dGltZVRvTmV4dCgpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+dGljaygpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZFJlcXVlc3QoYXJyYXkgJGVudHJ5KQogICAgewogICAgICAgICRlYXN5ID0gJGVudHJ5WydlYXN5J107CiAgICAgICAgJGlkID0gKGludCkgJGVhc3ktPmhhbmRsZTsKICAgICAgICAkdGhpcy0+aGFuZGxlc1skaWRdID0gJGVudHJ5OwogICAgICAgIGlmIChlbXB0eSgkZWFzeS0+b3B0aW9uc1snZGVsYXknXSkpIHsKICAgICAgICAgICAgY3VybF9tdWx0aV9hZGRfaGFuZGxlKCR0aGlzLT5fbWgsICRlYXN5LT5oYW5kbGUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5kZWxheXNbJGlkXSA9IG1pY3JvdGltZSh0cnVlKSArICgkZWFzeS0+b3B0aW9uc1snZGVsYXknXSAvIDEwMDApOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENhbmNlbHMgYSBoYW5kbGUgZnJvbSBzZW5kaW5nIGFuZCByZW1vdmVzIHJlZmVyZW5jZXMgdG8gaXQuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkaWQgSGFuZGxlIElEIHRvIGNhbmNlbCBhbmQgcmVtb3ZlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCBUcnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2FuY2VsKCRpZCkKICAgIHsKICAgICAgICAvLyBDYW5ub3QgY2FuY2VsIGlmIGl0IGhhcyBiZWVuIHByb2Nlc3NlZC4KICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5oYW5kbGVzWyRpZF0pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRoYW5kbGUgPSAkdGhpcy0+aGFuZGxlc1skaWRdWydlYXN5J10tPmhhbmRsZTsKICAgICAgICB1bnNldCgkdGhpcy0+ZGVsYXlzWyRpZF0sICR0aGlzLT5oYW5kbGVzWyRpZF0pOwogICAgICAgIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgkdGhpcy0+X21oLCAkaGFuZGxlKTsKICAgICAgICBjdXJsX2Nsb3NlKCRoYW5kbGUpOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHByb2Nlc3NNZXNzYWdlcygpCiAgICB7CiAgICAgICAgd2hpbGUgKCRkb25lID0gY3VybF9tdWx0aV9pbmZvX3JlYWQoJHRoaXMtPl9taCkpIHsKICAgICAgICAgICAgJGlkID0gKGludCkgJGRvbmVbJ2hhbmRsZSddOwogICAgICAgICAgICBjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoJHRoaXMtPl9taCwgJGRvbmVbJ2hhbmRsZSddKTsKCiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhhbmRsZXNbJGlkXSkpIHsKICAgICAgICAgICAgICAgIC8vIFByb2JhYmx5IHdhcyBjYW5jZWxsZWQuCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVudHJ5ID0gJHRoaXMtPmhhbmRsZXNbJGlkXTsKICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmhhbmRsZXNbJGlkXSwgJHRoaXMtPmRlbGF5c1skaWRdKTsKICAgICAgICAgICAgJGVudHJ5WydlYXN5J10tPmVycm5vID0gJGRvbmVbJ3Jlc3VsdCddOwogICAgICAgICAgICAkZW50cnlbJ2RlZmVycmVkJ10tPnJlc29sdmUoCiAgICAgICAgICAgICAgICBDdXJsRmFjdG9yeTo6ZmluaXNoKAogICAgICAgICAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAgICAgICAgICRlbnRyeVsnZWFzeSddLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWN0b3J5CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdGltZVRvTmV4dCgpCiAgICB7CiAgICAgICAgJGN1cnJlbnRUaW1lID0gbWljcm90aW1lKHRydWUpOwogICAgICAgICRuZXh0VGltZSA9IFBIUF9JTlRfTUFYOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kZWxheXMgYXMgJHRpbWUpIHsKICAgICAgICAgICAgaWYgKCR0aW1lIDwgJG5leHRUaW1lKSB7CiAgICAgICAgICAgICAgICAkbmV4dFRpbWUgPSAkdGltZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG1heCgwLCAkbmV4dFRpbWUgLSAkY3VycmVudFRpbWUpICogMTAwMDAwMDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXFBzcjdcUmVzcG9uc2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CgovKioKICogUmVwcmVzZW50cyBhIGNVUkwgZWFzeSBoYW5kbGUgYW5kIHRoZSBkYXRhIGl0IHBvcHVsYXRlcy4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBFYXN5SGFuZGxlCnsKICAgIC8qKiBAdmFyIHJlc291cmNlIGNVUkwgcmVzb3VyY2UgKi8KICAgIHB1YmxpYyAkaGFuZGxlOwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSBXaGVyZSBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4gKi8KICAgIHB1YmxpYyAkc2luazsKCiAgICAvKiogQHZhciBhcnJheSBSZWNlaXZlZCBIVFRQIGhlYWRlcnMgc28gZmFyICovCiAgICBwdWJsaWMgJGhlYWRlcnMgPSBbXTsKCiAgICAvKiogQHZhciBSZXNwb25zZUludGVyZmFjZSBSZWNlaXZlZCByZXNwb25zZSAoaWYgYW55KSAqLwogICAgcHVibGljICRyZXNwb25zZTsKCiAgICAvKiogQHZhciBSZXF1ZXN0SW50ZXJmYWNlIFJlcXVlc3QgYmVpbmcgc2VudCAqLwogICAgcHVibGljICRyZXF1ZXN0OwoKICAgIC8qKiBAdmFyIGFycmF5IFJlcXVlc3Qgb3B0aW9ucyAqLwogICAgcHVibGljICRvcHRpb25zID0gW107CgogICAgLyoqIEB2YXIgaW50IGNVUkwgZXJyb3IgbnVtYmVyIChpZiBhbnkpICovCiAgICBwdWJsaWMgJGVycm5vID0gMDsKCiAgICAvKiogQHZhciBcRXhjZXB0aW9uIEV4Y2VwdGlvbiBkdXJpbmcgb25faGVhZGVycyAoaWYgYW55KSAqLwogICAgcHVibGljICRvbkhlYWRlcnNFeGNlcHRpb247CgogICAgLyoqCiAgICAgKiBBdHRhY2ggYSByZXNwb25zZSB0byB0aGUgZWFzeSBoYW5kbGUgYmFzZWQgb24gdGhlIHJlY2VpdmVkIGhlYWRlcnMuCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBubyBoZWFkZXJzIGhhdmUgYmVlbiByZWNlaXZlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlKCkKICAgIHsKICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPmhlYWRlcnMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignTm8gaGVhZGVycyBoYXZlIGJlZW4gcmVjZWl2ZWQnKTsKICAgICAgICB9CgogICAgICAgIC8vIEhUVFAtdmVyc2lvbiBTUCBzdGF0dXMtY29kZSBTUCByZWFzb24tcGhyYXNlCiAgICAgICAgJHN0YXJ0TGluZSA9IGV4cGxvZGUoJyAnLCBhcnJheV9zaGlmdCgkdGhpcy0+aGVhZGVycyksIDMpOwogICAgICAgICRoZWFkZXJzID0gXEd1enpsZUh0dHBcaGVhZGVyc19mcm9tX2xpbmVzKCR0aGlzLT5oZWFkZXJzKTsKICAgICAgICAkbm9ybWFsaXplZEtleXMgPSBcR3V6emxlSHR0cFxub3JtYWxpemVfaGVhZGVyX2tleXMoJGhlYWRlcnMpOwoKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5vcHRpb25zWydkZWNvZGVfY29udGVudCddKQogICAgICAgICAgICAmJiBpc3NldCgkbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXSkKICAgICAgICApIHsKICAgICAgICAgICAgJGhlYWRlcnNbJ3gtZW5jb2RlZC1jb250ZW50LWVuY29kaW5nJ10KICAgICAgICAgICAgICAgID0gJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ11dOwogICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV0pOwogICAgICAgICAgICBpZiAoaXNzZXQoJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ3gtZW5jb2RlZC1jb250ZW50LWxlbmd0aCddCiAgICAgICAgICAgICAgICAgICAgPSAkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtbGVuZ3RoJ11dOwoKICAgICAgICAgICAgICAgICRib2R5TGVuZ3RoID0gKGludCkgJHRoaXMtPnNpbmstPmdldFNpemUoKTsKICAgICAgICAgICAgICAgIGlmICgkYm9keUxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXV0gPSAkYm9keUxlbmd0aDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEF0dGFjaCBhIHJlc3BvbnNlIHRvIHRoZSBlYXN5IGhhbmRsZSB3aXRoIHRoZSBwYXJzZWQgaGVhZGVycy4KICAgICAgICAkdGhpcy0+cmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UoCiAgICAgICAgICAgICRzdGFydExpbmVbMV0sCiAgICAgICAgICAgICRoZWFkZXJzLAogICAgICAgICAgICAkdGhpcy0+c2luaywKICAgICAgICAgICAgc3Vic3RyKCRzdGFydExpbmVbMF0sIDUpLAogICAgICAgICAgICBpc3NldCgkc3RhcnRMaW5lWzJdKSA/IChzdHJpbmcpICRzdGFydExpbmVbMl0gOiBudWxsCiAgICAgICAgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJG5hbWUpCiAgICB7CiAgICAgICAgJG1zZyA9ICRuYW1lID09PSAnaGFuZGxlJwogICAgICAgICAgICA/ICdUaGUgRWFzeUhhbmRsZSBoYXMgYmVlbiByZWxlYXNlZCcKICAgICAgICAgICAgOiAnSW52YWxpZCBwcm9wZXJ0eTogJyAuICRuYW1lOwogICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbigkbXNnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxSZXF1ZXN0RXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxIYW5kbGVyU3RhY2s7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZUludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxSZWplY3RlZFByb21pc2U7CnVzZSBHdXp6bGVIdHRwXFRyYW5zZmVyU3RhdHM7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIEhhbmRsZXIgdGhhdCByZXR1cm5zIHJlc3BvbnNlcyBvciB0aHJvdyBleGNlcHRpb25zIGZyb20gYSBxdWV1ZS4KICovCmNsYXNzIE1vY2tIYW5kbGVyIGltcGxlbWVudHMgXENvdW50YWJsZQp7CiAgICBwcml2YXRlICRxdWV1ZSA9IFtdOwogICAgcHJpdmF0ZSAkbGFzdFJlcXVlc3Q7CiAgICBwcml2YXRlICRsYXN0T3B0aW9uczsKICAgIHByaXZhdGUgJG9uRnVsZmlsbGVkOwogICAgcHJpdmF0ZSAkb25SZWplY3RlZDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgTW9ja0hhbmRsZXIgdGhhdCB1c2VzIHRoZSBkZWZhdWx0IGhhbmRsZXIgc3RhY2sgbGlzdCBvZgogICAgICogbWlkZGxld2FyZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRxdWV1ZSBBcnJheSBvZiByZXNwb25zZXMsIGNhbGxhYmxlcywgb3IgZXhjZXB0aW9ucy4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkb25GdWxmaWxsZWQgQ2FsbGJhY2sgdG8gaW52b2tlIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBmdWxmaWxsZWQuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG9uUmVqZWN0ZWQgIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgcmVqZWN0ZWQuCiAgICAgKgogICAgICogQHJldHVybiBIYW5kbGVyU3RhY2sKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVXaXRoTWlkZGxld2FyZSgKICAgICAgICBhcnJheSAkcXVldWUgPSBudWxsLAogICAgICAgIGNhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICAgICAgY2FsbGFibGUgJG9uUmVqZWN0ZWQgPSBudWxsCiAgICApIHsKICAgICAgICByZXR1cm4gSGFuZGxlclN0YWNrOjpjcmVhdGUobmV3IHNlbGYoJHF1ZXVlLCAkb25GdWxmaWxsZWQsICRvblJlamVjdGVkKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgcGFzc2VkIGluIHZhbHVlIG11c3QgYmUgYW4gYXJyYXkgb2YKICAgICAqIHtAc2VlIFBzcjdcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlfSBvYmplY3RzLCBFeGNlcHRpb25zLAogICAgICogY2FsbGFibGVzLCBvciBQcm9taXNlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXVlCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG9uRnVsZmlsbGVkIENhbGxiYWNrIHRvIGludm9rZSB3aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgZnVsZmlsbGVkLgogICAgICogQHBhcmFtIGNhbGxhYmxlICRvblJlamVjdGVkICBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIHJlamVjdGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgYXJyYXkgJHF1ZXVlID0gbnVsbCwKICAgICAgICBjYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgIGNhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPm9uRnVsZmlsbGVkID0gJG9uRnVsZmlsbGVkOwogICAgICAgICR0aGlzLT5vblJlamVjdGVkID0gJG9uUmVqZWN0ZWQ7CgogICAgICAgIGlmICgkcXVldWUpIHsKICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmNfYXJyYXkoWyR0aGlzLCAnYXBwZW5kJ10sICRxdWV1ZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5xdWV1ZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mQm91bmRzRXhjZXB0aW9uKCdNb2NrIHF1ZXVlIGlzIGVtcHR5Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2RlbGF5J10pKSB7CiAgICAgICAgICAgIHVzbGVlcCgkb3B0aW9uc1snZGVsYXknXSAqIDEwMDApOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmxhc3RSZXF1ZXN0ID0gJHJlcXVlc3Q7CiAgICAgICAgJHRoaXMtPmxhc3RPcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgJHJlc3BvbnNlID0gYXJyYXlfc2hpZnQoJHRoaXMtPnF1ZXVlKTsKCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydvbl9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgIGlmICghaXNfY2FsbGFibGUoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdvbl9oZWFkZXJzIG11c3QgYmUgY2FsbGFibGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSgkcmVzcG9uc2UpOwogICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAkbXNnID0gJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIG9uX2hlYWRlcnMgZXZlbnQnOwogICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gbmV3IFJlcXVlc3RFeGNlcHRpb24oJG1zZywgJHJlcXVlc3QsICRyZXNwb25zZSwgJGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfY2FsbGFibGUoJHJlc3BvbnNlKSkgewogICAgICAgICAgICAkcmVzcG9uc2UgPSBjYWxsX3VzZXJfZnVuYygkcmVzcG9uc2UsICRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkcmVzcG9uc2UgPSAkcmVzcG9uc2UgaW5zdGFuY2VvZiBcRXhjZXB0aW9uCiAgICAgICAgICAgID8gXEd1enpsZUh0dHBcUHJvbWlzZVxyZWplY3Rpb25fZm9yKCRyZXNwb25zZSkKICAgICAgICAgICAgOiBcR3V6emxlSHR0cFxQcm9taXNlXHByb21pc2VfZm9yKCRyZXNwb25zZSk7CgogICAgICAgIHJldHVybiAkcmVzcG9uc2UtPnRoZW4oCiAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJHJlcXVlc3QsICRvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+aW52b2tlU3RhdHMoJHJlcXVlc3QsICRvcHRpb25zLCAkdmFsdWUpOwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vbkZ1bGZpbGxlZCkgewogICAgICAgICAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5vbkZ1bGZpbGxlZCwgJHZhbHVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snc2luayddKSkgewogICAgICAgICAgICAgICAgICAgICRjb250ZW50cyA9IChzdHJpbmcpICR2YWx1ZS0+Z2V0Qm9keSgpOwogICAgICAgICAgICAgICAgICAgICRzaW5rID0gJG9wdGlvbnNbJ3NpbmsnXTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRzaW5rKSkgewogICAgICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJHNpbmssICRjb250ZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKGlzX3N0cmluZygkc2luaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJHNpbmssICRjb250ZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzaW5rIGluc3RhbmNlb2YgXFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzaW5rLT53cml0ZSgkY29udGVudHMpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgICAgICB9LAogICAgICAgICAgICBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgkcmVxdWVzdCwgJG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5pbnZva2VTdGF0cygkcmVxdWVzdCwgJG9wdGlvbnMsIG51bGwsICRyZWFzb24pOwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vblJlamVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmMoJHRoaXMtPm9uUmVqZWN0ZWQsICRyZWFzb24pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIFxHdXp6bGVIdHRwXFByb21pc2VccmVqZWN0aW9uX2ZvcigkcmVhc29uKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIG9uZSBvciBtb3JlIHZhcmlhZGljIHJlcXVlc3RzLCBleGNlcHRpb25zLCBjYWxsYWJsZXMsIG9yIHByb21pc2VzCiAgICAgKiB0byB0aGUgcXVldWUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhcHBlbmQoKQogICAgewogICAgICAgIGZvcmVhY2ggKGZ1bmNfZ2V0X2FyZ3MoKSBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFJlc3BvbnNlSW50ZXJmYWNlCiAgICAgICAgICAgICAgICB8fCAkdmFsdWUgaW5zdGFuY2VvZiBcRXhjZXB0aW9uCiAgICAgICAgICAgICAgICB8fCAkdmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlCiAgICAgICAgICAgICAgICB8fCBpc19jYWxsYWJsZSgkdmFsdWUpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJHRoaXMtPnF1ZXVlW10gPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRXhwZWN0ZWQgYSByZXNwb25zZSBvciAnCiAgICAgICAgICAgICAgICAgICAgLiAnZXhjZXB0aW9uLiBGb3VuZCAnIC4gXEd1enpsZUh0dHBcZGVzY3JpYmVfdHlwZSgkdmFsdWUpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgbGFzdCByZWNlaXZlZCByZXF1ZXN0LgogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFzdFJlcXVlc3QoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGFzdFJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxhc3QgcmVjZWl2ZWQgcmVxdWVzdCBvcHRpb25zLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldExhc3RPcHRpb25zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxhc3RPcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBpdGVtcyBpbiB0aGUgcXVldWUuCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCkKICAgIHsKICAgICAgICByZXR1cm4gY291bnQoJHRoaXMtPnF1ZXVlKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludm9rZVN0YXRzKAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgYXJyYXkgJG9wdGlvbnMsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICAkcmVhc29uID0gbnVsbAogICAgKSB7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydvbl9zdGF0cyddKSkgewogICAgICAgICAgICAkc3RhdHMgPSBuZXcgVHJhbnNmZXJTdGF0cygkcmVxdWVzdCwgJHJlc3BvbnNlLCAwLCAkcmVhc29uKTsKICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmMoJG9wdGlvbnNbJ29uX3N0YXRzJ10sICRzdGF0cyk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXFJlcXVlc3RPcHRpb25zOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFByb3ZpZGVzIGJhc2ljIHByb3hpZXMgZm9yIGhhbmRsZXJzLgogKi8KY2xhc3MgUHJveHkKewogICAgLyoqCiAgICAgKiBTZW5kcyBzeW5jaHJvbm91cyByZXF1ZXN0cyB0byBhIHNwZWNpZmljIGhhbmRsZXIgd2hpbGUgc2VuZGluZyBhbGwgb3RoZXIKICAgICAqIHJlcXVlc3RzIHRvIGFub3RoZXIgaGFuZGxlci4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGRlZmF1bHQgSGFuZGxlciB1c2VkIGZvciBub3JtYWwgcmVzcG9uc2VzCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJHN5bmMgICAgSGFuZGxlciB1c2VkIGZvciBzeW5jaHJvbm91cyByZXNwb25zZXMuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIHRoZSBjb21wb3NlZCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdyYXBTeW5jKAogICAgICAgIGNhbGxhYmxlICRkZWZhdWx0LAogICAgICAgIGNhbGxhYmxlICRzeW5jCiAgICApIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRkZWZhdWx0LCAkc3luYykgewogICAgICAgICAgICByZXR1cm4gZW1wdHkoJG9wdGlvbnNbUmVxdWVzdE9wdGlvbnM6OlNZTkNIUk9OT1VTXSkKICAgICAgICAgICAgICAgID8gJGRlZmF1bHQoJHJlcXVlc3QsICRvcHRpb25zKQogICAgICAgICAgICAgICAgOiAkc3luYygkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBTZW5kcyBzdHJlYW1pbmcgcmVxdWVzdHMgdG8gYSBzdHJlYW1pbmcgY29tcGF0aWJsZSBoYW5kbGVyIHdoaWxlIHNlbmRpbmcKICAgICAqIGFsbCBvdGhlciByZXF1ZXN0cyB0byBhIGRlZmF1bHQgaGFuZGxlci4KICAgICAqCiAgICAgKiBUaGlzLCBmb3IgZXhhbXBsZSwgY291bGQgYmUgdXNlZnVsIGZvciB0YWtpbmcgYWR2YW50YWdlIG9mIHRoZQogICAgICogcGVyZm9ybWFuY2UgYmVuZWZpdHMgb2YgY3VybCB3aGlsZSBzdGlsbCBzdXBwb3J0aW5nIHRydWUgc3RyZWFtaW5nCiAgICAgKiB0aHJvdWdoIHRoZSBTdHJlYW1IYW5kbGVyLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkZGVmYXVsdCAgIEhhbmRsZXIgdXNlZCBmb3Igbm9uLXN0cmVhbWluZyByZXNwb25zZXMKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkc3RyZWFtaW5nIEhhbmRsZXIgdXNlZCBmb3Igc3RyZWFtaW5nIHJlc3BvbnNlcwogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyB0aGUgY29tcG9zZWQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3cmFwU3RyZWFtaW5nKAogICAgICAgIGNhbGxhYmxlICRkZWZhdWx0LAogICAgICAgIGNhbGxhYmxlICRzdHJlYW1pbmcKICAgICkgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGRlZmF1bHQsICRzdHJlYW1pbmcpIHsKICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCRvcHRpb25zWydzdHJlYW0nXSkKICAgICAgICAgICAgICAgID8gJGRlZmF1bHQoJHJlcXVlc3QsICRvcHRpb25zKQogICAgICAgICAgICAgICAgOiAkc3RyZWFtaW5nKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxSZXF1ZXN0RXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBHdXp6bGVIdHRwXFRyYW5zZmVyU3RhdHM7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CgovKioKICogSFRUUCBoYW5kbGVyIHRoYXQgdXNlcyBQSFAncyBIVFRQIHN0cmVhbSB3cmFwcGVyLgogKi8KY2xhc3MgU3RyZWFtSGFuZGxlcgp7CiAgICBwcml2YXRlICRsYXN0SGVhZGVycyA9IFtdOwoKICAgIC8qKgogICAgICogU2VuZHMgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gc2VuZC4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3QgdHJhbnNmZXIgb3B0aW9ucy4KICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgIC8vIFNsZWVwIGlmIHRoZXJlIGlzIGEgZGVsYXkgc3BlY2lmaWVkLgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snZGVsYXknXSkpIHsKICAgICAgICAgICAgdXNsZWVwKCRvcHRpb25zWydkZWxheSddICogMTAwMCk7CiAgICAgICAgfQoKICAgICAgICAkc3RhcnRUaW1lID0gaXNzZXQoJG9wdGlvbnNbJ29uX3N0YXRzJ10pID8gbWljcm90aW1lKHRydWUpIDogbnVsbDsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gRG9lcyBub3Qgc3VwcG9ydCB0aGUgZXhwZWN0IGhlYWRlci4KICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aG91dEhlYWRlcignRXhwZWN0Jyk7CgogICAgICAgICAgICAvLyBBcHBlbmQgYSBjb250ZW50LWxlbmd0aCBoZWFkZXIgaWYgYm9keSBzaXplIGlzIHplcm8gdG8gbWF0Y2gKICAgICAgICAgICAgLy8gY1VSTCdzIGJlaGF2aW9yLgogICAgICAgICAgICBpZiAoMCA9PT0gJHJlcXVlc3QtPmdldEJvZHkoKS0+Z2V0U2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAkcmVxdWVzdCA9ICRyZXF1ZXN0LT53aXRoSGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIDApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNyZWF0ZVJlc3BvbnNlKAogICAgICAgICAgICAgICAgJHJlcXVlc3QsCiAgICAgICAgICAgICAgICAkb3B0aW9ucywKICAgICAgICAgICAgICAgICR0aGlzLT5jcmVhdGVTdHJlYW0oJHJlcXVlc3QsICRvcHRpb25zKSwKICAgICAgICAgICAgICAgICRzdGFydFRpbWUKICAgICAgICAgICAgKTsKICAgICAgICB9IGNhdGNoIChcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBlcnJvciB3YXMgYSBuZXR3b3JraW5nIGVycm9yLgogICAgICAgICAgICAkbWVzc2FnZSA9ICRlLT5nZXRNZXNzYWdlKCk7CiAgICAgICAgICAgIC8vIFRoaXMgbGlzdCBjYW4gcHJvYmFibHkgZ2V0IG1vcmUgY29tcHJlaGVuc2l2ZS4KICAgICAgICAgICAgaWYgKHN0cnBvcygkbWVzc2FnZSwgJ2dldGFkZHJpbmZvJykgLy8gRE5TIGxvb2t1cCBmYWlsZWQKICAgICAgICAgICAgICAgIHx8IHN0cnBvcygkbWVzc2FnZSwgJ0Nvbm5lY3Rpb24gcmVmdXNlZCcpCiAgICAgICAgICAgICAgICB8fCBzdHJwb3MoJG1lc3NhZ2UsICJjb3VsZG4ndCBjb25uZWN0IHRvIGhvc3QiKSAvLyBlcnJvciBvbiBISFZNCiAgICAgICAgICAgICAgICB8fCBzdHJwb3MoJG1lc3NhZ2UsICJjb25uZWN0aW9uIGF0dGVtcHQgZmFpbGVkIikKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkZSA9IG5ldyBDb25uZWN0RXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCksICRyZXF1ZXN0LCAkZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGUgPSBSZXF1ZXN0RXhjZXB0aW9uOjp3cmFwRXhjZXB0aW9uKCRyZXF1ZXN0LCAkZSk7CiAgICAgICAgICAgICR0aGlzLT5pbnZva2VTdGF0cygkb3B0aW9ucywgJHJlcXVlc3QsICRzdGFydFRpbWUsIG51bGwsICRlKTsKCiAgICAgICAgICAgIHJldHVybiBcR3V6emxlSHR0cFxQcm9taXNlXHJlamVjdGlvbl9mb3IoJGUpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludm9rZVN0YXRzKAogICAgICAgIGFycmF5ICRvcHRpb25zLAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgJHN0YXJ0VGltZSwKICAgICAgICBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgPSBudWxsLAogICAgICAgICRlcnJvciA9IG51bGwKICAgICkgewogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snb25fc3RhdHMnXSkpIHsKICAgICAgICAgICAgJHN0YXRzID0gbmV3IFRyYW5zZmVyU3RhdHMoCiAgICAgICAgICAgICAgICAkcmVxdWVzdCwKICAgICAgICAgICAgICAgICRyZXNwb25zZSwKICAgICAgICAgICAgICAgIG1pY3JvdGltZSh0cnVlKSAtICRzdGFydFRpbWUsCiAgICAgICAgICAgICAgICAkZXJyb3IsCiAgICAgICAgICAgICAgICBbXQogICAgICAgICAgICApOwogICAgICAgICAgICBjYWxsX3VzZXJfZnVuYygkb3B0aW9uc1snb25fc3RhdHMnXSwgJHN0YXRzKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVSZXNwb25zZSgKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgIGFycmF5ICRvcHRpb25zLAogICAgICAgICRzdHJlYW0sCiAgICAgICAgJHN0YXJ0VGltZQogICAgKSB7CiAgICAgICAgJGhkcnMgPSAkdGhpcy0+bGFzdEhlYWRlcnM7CiAgICAgICAgJHRoaXMtPmxhc3RIZWFkZXJzID0gW107CiAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnICcsIGFycmF5X3NoaWZ0KCRoZHJzKSwgMyk7CiAgICAgICAgJHZlciA9IGV4cGxvZGUoJy8nLCAkcGFydHNbMF0pWzFdOwogICAgICAgICRzdGF0dXMgPSAkcGFydHNbMV07CiAgICAgICAgJHJlYXNvbiA9IGlzc2V0KCRwYXJ0c1syXSkgPyAkcGFydHNbMl0gOiBudWxsOwogICAgICAgICRoZWFkZXJzID0gXEd1enpsZUh0dHBcaGVhZGVyc19mcm9tX2xpbmVzKCRoZHJzKTsKICAgICAgICBsaXN0KCRzdHJlYW0sICRoZWFkZXJzKSA9ICR0aGlzLT5jaGVja0RlY29kZSgkb3B0aW9ucywgJGhlYWRlcnMsICRzdHJlYW0pOwogICAgICAgICRzdHJlYW0gPSBQc3I3XHN0cmVhbV9mb3IoJHN0cmVhbSk7CiAgICAgICAgJHNpbmsgPSAkc3RyZWFtOwoKICAgICAgICBpZiAoc3RyY2FzZWNtcCgnSEVBRCcsICRyZXF1ZXN0LT5nZXRNZXRob2QoKSkpIHsKICAgICAgICAgICAgJHNpbmsgPSAkdGhpcy0+Y3JlYXRlU2luaygkc3RyZWFtLCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkcmVzcG9uc2UgPSBuZXcgUHNyN1xSZXNwb25zZSgkc3RhdHVzLCAkaGVhZGVycywgJHNpbmssICR2ZXIsICRyZWFzb24pOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRvcHRpb25zWydvbl9oZWFkZXJzJ10oJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgJG1zZyA9ICdBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgZHVyaW5nIHRoZSBvbl9oZWFkZXJzIGV2ZW50JzsKICAgICAgICAgICAgICAgICRleCA9IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKCRtc2csICRyZXF1ZXN0LCAkcmVzcG9uc2UsICRlKTsKICAgICAgICAgICAgICAgIHJldHVybiBcR3V6emxlSHR0cFxQcm9taXNlXHJlamVjdGlvbl9mb3IoJGV4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gRG8gbm90IGRyYWluIHdoZW4gdGhlIHJlcXVlc3QgaXMgYSBIRUFEIHJlcXVlc3QgYmVjYXVzZSB0aGV5IGhhdmUKICAgICAgICAvLyBubyBib2R5LgogICAgICAgIGlmICgkc2luayAhPT0gJHN0cmVhbSkgewogICAgICAgICAgICAkdGhpcy0+ZHJhaW4oCiAgICAgICAgICAgICAgICAkc3RyZWFtLAogICAgICAgICAgICAgICAgJHNpbmssCiAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtTGVuZ3RoJykKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbnZva2VTdGF0cygkb3B0aW9ucywgJHJlcXVlc3QsICRzdGFydFRpbWUsICRyZXNwb25zZSwgbnVsbCk7CgogICAgICAgIHJldHVybiBuZXcgRnVsZmlsbGVkUHJvbWlzZSgkcmVzcG9uc2UpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlU2luayhTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgYXJyYXkgJG9wdGlvbnMpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snc3RyZWFtJ10pKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RyZWFtOwogICAgICAgIH0KCiAgICAgICAgJHNpbmsgPSBpc3NldCgkb3B0aW9uc1snc2luayddKQogICAgICAgICAgICA/ICRvcHRpb25zWydzaW5rJ10KICAgICAgICAgICAgOiBmb3BlbigncGhwOi8vdGVtcCcsICdyKycpOwoKICAgICAgICByZXR1cm4gaXNfc3RyaW5nKCRzaW5rKQogICAgICAgICAgICA/IG5ldyBQc3I3XExhenlPcGVuU3RyZWFtKCRzaW5rLCAndysnKQogICAgICAgICAgICA6IFBzcjdcc3RyZWFtX2Zvcigkc2luayk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0RlY29kZShhcnJheSAkb3B0aW9ucywgYXJyYXkgJGhlYWRlcnMsICRzdHJlYW0pCiAgICB7CiAgICAgICAgLy8gQXV0b21hdGljYWxseSBkZWNvZGUgcmVzcG9uc2VzIHdoZW4gaW5zdHJ1Y3RlZC4KICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydkZWNvZGVfY29udGVudCddKSkgewogICAgICAgICAgICAkbm9ybWFsaXplZEtleXMgPSBcR3V6emxlSHR0cFxub3JtYWxpemVfaGVhZGVyX2tleXMoJGhlYWRlcnMpOwogICAgICAgICAgICBpZiAoaXNzZXQoJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ10pKSB7CiAgICAgICAgICAgICAgICAkZW5jb2RpbmcgPSAkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV07CiAgICAgICAgICAgICAgICBpZiAoJGVuY29kaW5nWzBdID09PSAnZ3ppcCcgfHwgJGVuY29kaW5nWzBdID09PSAnZGVmbGF0ZScpIHsKICAgICAgICAgICAgICAgICAgICAkc3RyZWFtID0gbmV3IFBzcjdcSW5mbGF0ZVN0cmVhbSgKICAgICAgICAgICAgICAgICAgICAgICAgUHNyN1xzdHJlYW1fZm9yKCRzdHJlYW0pCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1sneC1lbmNvZGVkLWNvbnRlbnQtZW5jb2RpbmcnXQogICAgICAgICAgICAgICAgICAgICAgICA9ICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1lbmNvZGluZyddXTsKICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgY29udGVudC1lbmNvZGluZyBoZWFkZXIKICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV0pOwogICAgICAgICAgICAgICAgICAgIC8vIEZpeCBjb250ZW50LWxlbmd0aCBoZWFkZXIKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1sneC1lbmNvZGVkLWNvbnRlbnQtbGVuZ3RoJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRsZW5ndGggPSAoaW50KSAkc3RyZWFtLT5nZXRTaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtbGVuZ3RoJ11dKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXV0gPSBbJGxlbmd0aF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHN0cmVhbSwgJGhlYWRlcnNdOwogICAgfQoKICAgIC8qKgogICAgICogRHJhaW5zIHRoZSBzb3VyY2Ugc3RyZWFtIGludG8gdGhlICJzaW5rIiBjbGllbnQgb3B0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHNvdXJjZQogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc2luawogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAkY29udGVudExlbmd0aCBIZWFkZXIgc3BlY2lmeWluZyB0aGUgYW1vdW50IG9mCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgdG8gcmVhZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiB3aGVuIHRoZSBzaW5rIG9wdGlvbiBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRyYWluKAogICAgICAgIFN0cmVhbUludGVyZmFjZSAkc291cmNlLAogICAgICAgIFN0cmVhbUludGVyZmFjZSAkc2luaywKICAgICAgICAkY29udGVudExlbmd0aAogICAgKSB7CiAgICAgICAgLy8gSWYgYSBjb250ZW50LWxlbmd0aCBoZWFkZXIgaXMgcHJvdmlkZWQsIHRoZW4gc3RvcCByZWFkaW5nIG9uY2UKICAgICAgICAvLyB0aGF0IG51bWJlciBvZiBieXRlcyBoYXMgYmVlbiByZWFkLiBUaGlzIGNhbiBwcmV2ZW50IGluZmluaXRlbHkKICAgICAgICAvLyByZWFkaW5nIGZyb20gYSBzdHJlYW0gd2hlbiBkZWFsaW5nIHdpdGggc2VydmVycyB0aGF0IGRvIG5vdCBob25vcgogICAgICAgIC8vIENvbm5lY3Rpb246IENsb3NlIGhlYWRlcnMuCiAgICAgICAgUHNyN1xjb3B5X3RvX3N0cmVhbSgKICAgICAgICAgICAgJHNvdXJjZSwKICAgICAgICAgICAgJHNpbmssCiAgICAgICAgICAgIChzdHJsZW4oJGNvbnRlbnRMZW5ndGgpID4gMCAmJiAoaW50KSAkY29udGVudExlbmd0aCA+IDApID8gKGludCkgJGNvbnRlbnRMZW5ndGggOiAtMQogICAgICAgICk7CgogICAgICAgICRzaW5rLT5zZWVrKDApOwogICAgICAgICRzb3VyY2UtPmNsb3NlKCk7CgogICAgICAgIHJldHVybiAkc2luazsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIHJlc291cmNlIGFuZCBjaGVjayB0byBlbnN1cmUgaXQgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5CiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRjYWxsYmFjayBDYWxsYWJsZSB0aGF0IHJldHVybnMgc3RyZWFtIHJlc291cmNlCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBvbiBlcnJvcgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlKGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICAkZXJyb3JzID0gbnVsbDsKICAgICAgICBzZXRfZXJyb3JfaGFuZGxlcihmdW5jdGlvbiAoJF8sICRtc2csICRmaWxlLCAkbGluZSkgdXNlICgmJGVycm9ycykgewogICAgICAgICAgICAkZXJyb3JzW10gPSBbCiAgICAgICAgICAgICAgICAnbWVzc2FnZScgPT4gJG1zZywKICAgICAgICAgICAgICAgICdmaWxlJyAgICA9PiAkZmlsZSwKICAgICAgICAgICAgICAgICdsaW5lJyAgICA9PiAkbGluZQogICAgICAgICAgICBdOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9KTsKCiAgICAgICAgJHJlc291cmNlID0gJGNhbGxiYWNrKCk7CiAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CgogICAgICAgIGlmICghJHJlc291cmNlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gJ0Vycm9yIGNyZWF0aW5nIHJlc291cmNlOiAnOwogICAgICAgICAgICBmb3JlYWNoICgkZXJyb3JzIGFzICRlcnIpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlcnIgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSAuPSAiWyRrZXldICR2YWx1ZSIgLiBQSFBfRU9MOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbih0cmltKCRtZXNzYWdlKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc291cmNlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlU3RyZWFtKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgIHN0YXRpYyAkbWV0aG9kczsKICAgICAgICBpZiAoISRtZXRob2RzKSB7CiAgICAgICAgICAgICRtZXRob2RzID0gYXJyYXlfZmxpcChnZXRfY2xhc3NfbWV0aG9kcyhfX0NMQVNTX18pKTsKICAgICAgICB9CgogICAgICAgIC8vIEhUVFAvMS4xIHN0cmVhbXMgdXNpbmcgdGhlIFBIUCBzdHJlYW0gd3JhcHBlciByZXF1aXJlIGEKICAgICAgICAvLyBDb25uZWN0aW9uOiBjbG9zZSBoZWFkZXIKICAgICAgICBpZiAoJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpID09ICcxLjEnCiAgICAgICAgICAgICYmICEkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb25uZWN0aW9uJykKICAgICAgICApIHsKICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aEhlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIFNTTCBpcyB2ZXJpZmllZCBieSBkZWZhdWx0CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWyd2ZXJpZnknXSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkcGFyYW1zID0gW107CiAgICAgICAgJGNvbnRleHQgPSAkdGhpcy0+Z2V0RGVmYXVsdENvbnRleHQoJHJlcXVlc3QpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkgJiYgIWlzX2NhbGxhYmxlKCRvcHRpb25zWydvbl9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdvbl9oZWFkZXJzIG11c3QgYmUgY2FsbGFibGUnKTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnMpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRvcHRpb25zIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkbWV0aG9kID0gImFkZF97JGtleX0iOwogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRtZXRob2RzWyRtZXRob2RdKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT57JG1ldGhvZH0oJHJlcXVlc3QsICRjb250ZXh0LCAkdmFsdWUsICRwYXJhbXMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3N0cmVhbV9jb250ZXh0J10pKSB7CiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJG9wdGlvbnNbJ3N0cmVhbV9jb250ZXh0J10pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignc3RyZWFtX2NvbnRleHQgbXVzdCBiZSBhbiBhcnJheScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb250ZXh0ID0gYXJyYXlfcmVwbGFjZV9yZWN1cnNpdmUoCiAgICAgICAgICAgICAgICAkY29udGV4dCwKICAgICAgICAgICAgICAgICRvcHRpb25zWydzdHJlYW1fY29udGV4dCddCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvLyBNaWNyb3NvZnQgTlRMTSBhdXRoZW50aWNhdGlvbiBvbmx5IHN1cHBvcnRlZCB3aXRoIGN1cmwgaGFuZGxlcgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snYXV0aCddKQogICAgICAgICAgICAmJiBpc19hcnJheSgkb3B0aW9uc1snYXV0aCddKQogICAgICAgICAgICAmJiBpc3NldCgkb3B0aW9uc1snYXV0aCddWzJdKQogICAgICAgICAgICAmJiAnbnRsbScgPT0gJG9wdGlvbnNbJ2F1dGgnXVsyXQogICAgICAgICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignTWljcm9zb2Z0IE5UTE0gYXV0aGVudGljYXRpb24gb25seSBzdXBwb3J0ZWQgd2l0aCBjdXJsIGhhbmRsZXInKTsKICAgICAgICB9CgogICAgICAgICR1cmkgPSAkdGhpcy0+cmVzb2x2ZUhvc3QoJHJlcXVlc3QsICRvcHRpb25zKTsKCiAgICAgICAgJGNvbnRleHQgPSAkdGhpcy0+Y3JlYXRlUmVzb3VyY2UoCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHVzZSAoJGNvbnRleHQsICRwYXJhbXMpIHsKICAgICAgICAgICAgICAgIHJldHVybiBzdHJlYW1fY29udGV4dF9jcmVhdGUoJGNvbnRleHQsICRwYXJhbXMpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVSZXNvdXJjZSgKICAgICAgICAgICAgZnVuY3Rpb24gKCkgdXNlICgkdXJpLCAmJGh0dHBfcmVzcG9uc2VfaGVhZGVyLCAkY29udGV4dCwgJG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICRyZXNvdXJjZSA9IGZvcGVuKChzdHJpbmcpICR1cmksICdyJywgbnVsbCwgJGNvbnRleHQpOwogICAgICAgICAgICAgICAgJHRoaXMtPmxhc3RIZWFkZXJzID0gJGh0dHBfcmVzcG9uc2VfaGVhZGVyOwoKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncmVhZF90aW1lb3V0J10pKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlYWRUaW1lb3V0ID0gJG9wdGlvbnNbJ3JlYWRfdGltZW91dCddOwogICAgICAgICAgICAgICAgICAgICRzZWMgPSAoaW50KSAkcmVhZFRpbWVvdXQ7CiAgICAgICAgICAgICAgICAgICAgJHVzZWMgPSAoJHJlYWRUaW1lb3V0IC0gJHNlYykgKiAxMDAwMDA7CiAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3NldF90aW1lb3V0KCRyZXNvdXJjZSwgJHNlYywgJHVzZWMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkcmVzb3VyY2U7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmVzb2x2ZUhvc3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpCiAgICB7CiAgICAgICAgJHVyaSA9ICRyZXF1ZXN0LT5nZXRVcmkoKTsKCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pICYmICFmaWx0ZXJfdmFyKCR1cmktPmdldEhvc3QoKSwgRklMVEVSX1ZBTElEQVRFX0lQKSkgewogICAgICAgICAgICBpZiAoJ3Y0JyA9PT0gJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkgewogICAgICAgICAgICAgICAgJHJlY29yZHMgPSBkbnNfZ2V0X3JlY29yZCgkdXJpLT5nZXRIb3N0KCksIEROU19BKTsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJHJlY29yZHNbMF1bJ2lwJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbm5lY3RFeGNlcHRpb24oc3ByaW50ZigiQ291bGQgbm90IHJlc29sdmUgSVB2NCBhZGRyZXNzIGZvciBob3N0ICclcyciLCAkdXJpLT5nZXRIb3N0KCkpLCAkcmVxdWVzdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aEhvc3QoJHJlY29yZHNbMF1bJ2lwJ10pOwogICAgICAgICAgICB9IGVsc2VpZiAoJ3Y2JyA9PT0gJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkgewogICAgICAgICAgICAgICAgJHJlY29yZHMgPSBkbnNfZ2V0X3JlY29yZCgkdXJpLT5nZXRIb3N0KCksIEROU19BQUFBKTsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJHJlY29yZHNbMF1bJ2lwdjYnXSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29ubmVjdEV4Y2VwdGlvbihzcHJpbnRmKCJDb3VsZCBub3QgcmVzb2x2ZSBJUHY2IGFkZHJlc3MgZm9yIGhvc3QgJyVzJyIsICR1cmktPmdldEhvc3QoKSksICRyZXF1ZXN0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgnWycgLiAkcmVjb3Jkc1swXVsnaXB2NiddIC4gJ10nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXREZWZhdWx0Q29udGV4dChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KQogICAgewogICAgICAgICRoZWFkZXJzID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHJlcXVlc3QtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlIGFzICR2YWwpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzIC49ICIkbmFtZTogJHZhbFxyXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY29udGV4dCA9IFsKICAgICAgICAgICAgJ2h0dHAnID0+IFsKICAgICAgICAgICAgICAgICdtZXRob2QnICAgICAgICAgICA9PiAkcmVxdWVzdC0+Z2V0TWV0aG9kKCksCiAgICAgICAgICAgICAgICAnaGVhZGVyJyAgICAgICAgICAgPT4gJGhlYWRlcnMsCiAgICAgICAgICAgICAgICAncHJvdG9jb2xfdmVyc2lvbicgPT4gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpLAogICAgICAgICAgICAgICAgJ2lnbm9yZV9lcnJvcnMnICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICAnZm9sbG93X2xvY2F0aW9uJyAgPT4gMCwKICAgICAgICAgICAgXSwKICAgICAgICBdOwoKICAgICAgICAkYm9keSA9IChzdHJpbmcpICRyZXF1ZXN0LT5nZXRCb2R5KCk7CgogICAgICAgIGlmICghZW1wdHkoJGJvZHkpKSB7CiAgICAgICAgICAgICRjb250ZXh0WydodHRwJ11bJ2NvbnRlbnQnXSA9ICRib2R5OwogICAgICAgICAgICAvLyBQcmV2ZW50IHRoZSBIVFRQIGhhbmRsZXIgZnJvbSBhZGRpbmcgYSBDb250ZW50LVR5cGUgaGVhZGVyLgogICAgICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0NvbnRlbnQtVHlwZScpKSB7CiAgICAgICAgICAgICAgICAkY29udGV4dFsnaHR0cCddWydoZWFkZXInXSAuPSAiQ29udGVudC1UeXBlOlxyXG4iOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY29udGV4dFsnaHR0cCddWydoZWFkZXInXSA9IHJ0cmltKCRjb250ZXh0WydodHRwJ11bJ2hlYWRlciddKTsKCiAgICAgICAgcmV0dXJuICRjb250ZXh0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX3Byb3h5KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsICYkb3B0aW9ucywgJHZhbHVlLCAmJHBhcmFtcykKICAgIHsKICAgICAgICBpZiAoIWlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ2h0dHAnXVsncHJveHknXSA9ICR2YWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc2NoZW1lID0gJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRTY2hlbWUoKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWx1ZVskc2NoZW1lXSkpIHsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJHZhbHVlWydubyddKQogICAgICAgICAgICAgICAgICAgIHx8ICFcR3V6emxlSHR0cFxpc19ob3N0X2luX25vcHJveHkoCiAgICAgICAgICAgICAgICAgICAgICAgICRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpLAogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWVbJ25vJ10KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1snaHR0cCddWydwcm94eSddID0gJHZhbHVlWyRzY2hlbWVdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX3RpbWVvdXQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgJiRvcHRpb25zLCAkdmFsdWUsICYkcGFyYW1zKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPiAwKSB7CiAgICAgICAgICAgICRvcHRpb25zWydodHRwJ11bJ3RpbWVvdXQnXSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfdmVyaWZ5KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsICYkb3B0aW9ucywgJHZhbHVlLCAmJHBhcmFtcykKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSB0cnVlKSB7CiAgICAgICAgICAgIC8vIFBIUCA1LjYgb3IgZ3JlYXRlciB3aWxsIGZpbmQgdGhlIHN5c3RlbSBjZXJ0IGJ5IGRlZmF1bHQuIFdoZW4KICAgICAgICAgICAgLy8gPCA1LjYsIHVzZSB0aGUgR3V6emxlIGJ1bmRsZWQgY2FjZXJ0LgogICAgICAgICAgICBpZiAoUEhQX1ZFUlNJT05fSUQgPCA1MDYwMCkgewogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ3NzbCddWydjYWZpbGUnXSA9IFxHdXp6bGVIdHRwXGRlZmF1bHRfY2FfYnVuZGxlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ3NzbCddWydjYWZpbGUnXSA9ICR2YWx1ZTsKICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIlNTTCBDQSBidW5kbGUgbm90IGZvdW5kOiAkdmFsdWUiKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkdmFsdWUgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXInXSA9IGZhbHNlOwogICAgICAgICAgICAkb3B0aW9uc1snc3NsJ11bJ3ZlcmlmeV9wZWVyX25hbWUnXSA9IGZhbHNlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgdmVyaWZ5IHJlcXVlc3Qgb3B0aW9uJyk7CiAgICAgICAgfQoKICAgICAgICAkb3B0aW9uc1snc3NsJ11bJ3ZlcmlmeV9wZWVyJ10gPSB0cnVlOwogICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXJfbmFtZSddID0gdHJ1ZTsKICAgICAgICAkb3B0aW9uc1snc3NsJ11bJ2FsbG93X3NlbGZfc2lnbmVkJ10gPSBmYWxzZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9jZXJ0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsICYkb3B0aW9ucywgJHZhbHVlLCAmJHBhcmFtcykKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkb3B0aW9uc1snc3NsJ11bJ3Bhc3NwaHJhc2UnXSA9ICR2YWx1ZVsxXTsKICAgICAgICAgICAgJHZhbHVlID0gJHZhbHVlWzBdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkdmFsdWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiU1NMIGNlcnRpZmljYXRlIG5vdCBmb3VuZDogeyR2YWx1ZX0iKTsKICAgICAgICB9CgogICAgICAgICRvcHRpb25zWydzc2wnXVsnbG9jYWxfY2VydCddID0gJHZhbHVlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX3Byb2dyZXNzKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsICYkb3B0aW9ucywgJHZhbHVlLCAmJHBhcmFtcykKICAgIHsKICAgICAgICAkdGhpcy0+YWRkTm90aWZpY2F0aW9uKAogICAgICAgICAgICAkcGFyYW1zLAogICAgICAgICAgICBmdW5jdGlvbiAoJGNvZGUsICRhLCAkYiwgJGMsICR0cmFuc2ZlcnJlZCwgJHRvdGFsKSB1c2UgKCR2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKCRjb2RlID09IFNUUkVBTV9OT1RJRllfUFJPR1JFU1MpIHsKICAgICAgICAgICAgICAgICAgICAkdmFsdWUoJHRvdGFsLCAkdHJhbnNmZXJyZWQsIG51bGwsIG51bGwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9kZWJ1ZyhSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCAmJG9wdGlvbnMsICR2YWx1ZSwgJiRwYXJhbXMpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljICRtYXAgPSBbCiAgICAgICAgICAgIFNUUkVBTV9OT1RJRllfQ09OTkVDVCAgICAgICA9PiAnQ09OTkVDVCcsCiAgICAgICAgICAgIFNUUkVBTV9OT1RJRllfQVVUSF9SRVFVSVJFRCA9PiAnQVVUSF9SRVFVSVJFRCcsCiAgICAgICAgICAgIFNUUkVBTV9OT1RJRllfQVVUSF9SRVNVTFQgICA9PiAnQVVUSF9SRVNVTFQnLAogICAgICAgICAgICBTVFJFQU1fTk9USUZZX01JTUVfVFlQRV9JUyAgPT4gJ01JTUVfVFlQRV9JUycsCiAgICAgICAgICAgIFNUUkVBTV9OT1RJRllfRklMRV9TSVpFX0lTICA9PiAnRklMRV9TSVpFX0lTJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9SRURJUkVDVEVEICAgID0+ICdSRURJUkVDVEVEJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9QUk9HUkVTUyAgICAgID0+ICdQUk9HUkVTUycsCiAgICAgICAgICAgIFNUUkVBTV9OT1RJRllfRkFJTFVSRSAgICAgICA9PiAnRkFJTFVSRScsCiAgICAgICAgICAgIFNUUkVBTV9OT1RJRllfQ09NUExFVEVEICAgICA9PiAnQ09NUExFVEVEJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9SRVNPTFZFICAgICAgID0+ICdSRVNPTFZFJywKICAgICAgICBdOwogICAgICAgIHN0YXRpYyAkYXJncyA9IFsnc2V2ZXJpdHknLCAnbWVzc2FnZScsICdtZXNzYWdlX2NvZGUnLAogICAgICAgICAgICAnYnl0ZXNfdHJhbnNmZXJyZWQnLCAnYnl0ZXNfbWF4J107CgogICAgICAgICR2YWx1ZSA9IFxHdXp6bGVIdHRwXGRlYnVnX3Jlc291cmNlKCR2YWx1ZSk7CiAgICAgICAgJGlkZW50ID0gJHJlcXVlc3QtPmdldE1ldGhvZCgpIC4gJyAnIC4gJHJlcXVlc3QtPmdldFVyaSgpLT53aXRoRnJhZ21lbnQoJycpOwogICAgICAgICR0aGlzLT5hZGROb3RpZmljYXRpb24oCiAgICAgICAgICAgICRwYXJhbXMsCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHVzZSAoJGlkZW50LCAkdmFsdWUsICRtYXAsICRhcmdzKSB7CiAgICAgICAgICAgICAgICAkcGFzc2VkID0gZnVuY19nZXRfYXJncygpOwogICAgICAgICAgICAgICAgJGNvZGUgPSBhcnJheV9zaGlmdCgkcGFzc2VkKTsKICAgICAgICAgICAgICAgIGZwcmludGYoJHZhbHVlLCAnPCVzPiBbJXNdICcsICRpZGVudCwgJG1hcFskY29kZV0pOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXlfZmlsdGVyKCRwYXNzZWQpIGFzICRpID0+ICR2KSB7CiAgICAgICAgICAgICAgICAgICAgZndyaXRlKCR2YWx1ZSwgJGFyZ3NbJGldIC4gJzogIicgLiAkdiAuICciICcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZndyaXRlKCR2YWx1ZSwgIlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkTm90aWZpY2F0aW9uKGFycmF5ICYkcGFyYW1zLCBjYWxsYWJsZSAkbm90aWZ5KQogICAgewogICAgICAgIC8vIFdyYXAgdGhlIGV4aXN0aW5nIGZ1bmN0aW9uIGlmIG5lZWRlZC4KICAgICAgICBpZiAoIWlzc2V0KCRwYXJhbXNbJ25vdGlmaWNhdGlvbiddKSkgewogICAgICAgICAgICAkcGFyYW1zWydub3RpZmljYXRpb24nXSA9ICRub3RpZnk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHBhcmFtc1snbm90aWZpY2F0aW9uJ10gPSAkdGhpcy0+Y2FsbEFycmF5KFsKICAgICAgICAgICAgICAgICRwYXJhbXNbJ25vdGlmaWNhdGlvbiddLAogICAgICAgICAgICAgICAgJG5vdGlmeQogICAgICAgICAgICBdKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYWxsQXJyYXkoYXJyYXkgJGZ1bmN0aW9ucykKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgdXNlICgkZnVuY3Rpb25zKSB7CiAgICAgICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwogICAgICAgICAgICBmb3JlYWNoICgkZnVuY3Rpb25zIGFzICRmbikgewogICAgICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmNfYXJyYXkoJGZuLCAkYXJncyk7CiAgICAgICAgICAgIH0KICAgICAgICB9OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/HandlerStack.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIENyZWF0ZXMgYSBjb21wb3NlZCBHdXp6bGUgaGFuZGxlciBmdW5jdGlvbiBieSBzdGFja2luZyBtaWRkbGV3YXJlcyBvbiB0b3Agb2YKICogYW4gSFRUUCBoYW5kbGVyIGZ1bmN0aW9uLgogKi8KY2xhc3MgSGFuZGxlclN0YWNrCnsKICAgIC8qKiBAdmFyIGNhbGxhYmxlICovCiAgICBwcml2YXRlICRoYW5kbGVyOwoKICAgIC8qKiBAdmFyIGFycmF5ICovCiAgICBwcml2YXRlICRzdGFjayA9IFtdOwoKICAgIC8qKiBAdmFyIGNhbGxhYmxlfG51bGwgKi8KICAgIHByaXZhdGUgJGNhY2hlZDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBkZWZhdWx0IGhhbmRsZXIgc3RhY2sgdGhhdCBjYW4gYmUgdXNlZCBieSBjbGllbnRzLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBoYW5kbGVyIHdpbGwgd3JhcCB0aGUgcHJvdmlkZWQgaGFuZGxlciBvciB1c2UgdGhlIG1vc3QKICAgICAqIGFwcHJvcHJpYXRlIGRlZmF1bHQgaGFuZGxlciBmb3IgeW91ciBzeXN0ZW0uIFRoZSByZXR1cm5lZCBIYW5kbGVyU3RhY2sgaGFzCiAgICAgKiBzdXBwb3J0IGZvciBjb29raWVzLCByZWRpcmVjdHMsIEhUVFAgZXJyb3IgZXhjZXB0aW9ucywgYW5kIHByZXBhcmluZyBhIGJvZHkKICAgICAqIGJlZm9yZSBzZW5kaW5nLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBoYW5kbGVyIHN0YWNrIGNhbiBiZSBwYXNzZWQgdG8gYSBjbGllbnQgaW4gdGhlICJoYW5kbGVyIgogICAgICogb3B0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkaGFuZGxlciBIVFRQIGhhbmRsZXIgZnVuY3Rpb24gdG8gdXNlIHdpdGggdGhlIHN0YWNrLiBJZiBubwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgaXMgcHJvdmlkZWQsIHRoZSBiZXN0IGhhbmRsZXIgZm9yIHlvdXIKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gd2lsbCBiZSB1dGlsaXplZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEhhbmRsZXJTdGFjawogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZShjYWxsYWJsZSAkaGFuZGxlciA9IG51bGwpCiAgICB7CiAgICAgICAgJHN0YWNrID0gbmV3IHNlbGYoJGhhbmRsZXIgPzogY2hvb3NlX2hhbmRsZXIoKSk7CiAgICAgICAgJHN0YWNrLT5wdXNoKE1pZGRsZXdhcmU6Omh0dHBFcnJvcnMoKSwgJ2h0dHBfZXJyb3JzJyk7CiAgICAgICAgJHN0YWNrLT5wdXNoKE1pZGRsZXdhcmU6OnJlZGlyZWN0KCksICdhbGxvd19yZWRpcmVjdHMnKTsKICAgICAgICAkc3RhY2stPnB1c2goTWlkZGxld2FyZTo6Y29va2llcygpLCAnY29va2llcycpOwogICAgICAgICRzdGFjay0+cHVzaChNaWRkbGV3YXJlOjpwcmVwYXJlQm9keSgpLCAncHJlcGFyZV9ib2R5Jyk7CgogICAgICAgIHJldHVybiAkc3RhY2s7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGhhbmRsZXIgVW5kZXJseWluZyBIVFRQIGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChjYWxsYWJsZSAkaGFuZGxlciA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPmhhbmRsZXIgPSAkaGFuZGxlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEludm9rZXMgdGhlIGhhbmRsZXIgc3RhY2sgYXMgYSBjb21wb3NlZCBoYW5kbGVyCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICRvcHRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykKICAgIHsKICAgICAgICAkaGFuZGxlciA9ICR0aGlzLT5yZXNvbHZlKCk7CgogICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgfQoKICAgIC8qKgogICAgICogRHVtcHMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHN0YWNrLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICAkZGVwdGggPSAwOwogICAgICAgICRzdGFjayA9IFtdOwogICAgICAgIGlmICgkdGhpcy0+aGFuZGxlcikgewogICAgICAgICAgICAkc3RhY2tbXSA9ICIwKSBIYW5kbGVyOiAiIC4gJHRoaXMtPmRlYnVnQ2FsbGFibGUoJHRoaXMtPmhhbmRsZXIpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICcnOwogICAgICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJHRoaXMtPnN0YWNrKSBhcyAkdHVwbGUpIHsKICAgICAgICAgICAgJGRlcHRoKys7CiAgICAgICAgICAgICRzdHIgPSAieyRkZXB0aH0pIE5hbWU6ICd7JHR1cGxlWzFdfScsICI7CiAgICAgICAgICAgICRzdHIgLj0gIkZ1bmN0aW9uOiAiIC4gJHRoaXMtPmRlYnVnQ2FsbGFibGUoJHR1cGxlWzBdKTsKICAgICAgICAgICAgJHJlc3VsdCA9ICI+IHskc3RyfVxueyRyZXN1bHR9IjsKICAgICAgICAgICAgJHN0YWNrW10gPSAkc3RyOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkc3RhY2spIGFzICRrKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gIjwgeyRzdGFja1ska119XG4iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIEhUVFAgaGFuZGxlciB0aGF0IGFjdHVhbGx5IHJldHVybnMgYSBwcm9taXNlLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkaGFuZGxlciBBY2NlcHRzIGEgcmVxdWVzdCBhbmQgYXJyYXkgb2Ygb3B0aW9ucyBhbmQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgUHJvbWlzZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEhhbmRsZXIoY2FsbGFibGUgJGhhbmRsZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmhhbmRsZXIgPSAkaGFuZGxlcjsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYnVpbGRlciBoYXMgYSBoYW5kbGVyLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGFuZGxlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIChib29sKSAkdGhpcy0+aGFuZGxlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFVuc2hpZnQgYSBtaWRkbGV3YXJlIHRvIHRoZSBib3R0b20gb2YgdGhlIHN0YWNrLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkbWlkZGxld2FyZSBNaWRkbGV3YXJlIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJG5hbWUgICAgICAgTmFtZSB0byByZWdpc3RlciBmb3IgdGhpcyBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zaGlmdChjYWxsYWJsZSAkbWlkZGxld2FyZSwgJG5hbWUgPSBudWxsKQogICAgewogICAgICAgIGFycmF5X3Vuc2hpZnQoJHRoaXMtPnN0YWNrLCBbJG1pZGRsZXdhcmUsICRuYW1lXSk7CiAgICAgICAgJHRoaXMtPmNhY2hlZCA9IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGEgbWlkZGxld2FyZSB0byB0aGUgdG9wIG9mIHRoZSBzdGFjay4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG1pZGRsZXdhcmUgTWlkZGxld2FyZSBmdW5jdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICRuYW1lICAgICAgIE5hbWUgdG8gcmVnaXN0ZXIgZm9yIHRoaXMgbWlkZGxld2FyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHB1c2goY2FsbGFibGUgJG1pZGRsZXdhcmUsICRuYW1lID0gJycpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0YWNrW10gPSBbJG1pZGRsZXdhcmUsICRuYW1lXTsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIG1pZGRsZXdhcmUgYmVmb3JlIGFub3RoZXIgbWlkZGxld2FyZSBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkZmluZE5hbWUgICBNaWRkbGV3YXJlIHRvIGZpbmQKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkbWlkZGxld2FyZSBNaWRkbGV3YXJlIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJHdpdGhOYW1lICAgTmFtZSB0byByZWdpc3RlciBmb3IgdGhpcyBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYmVmb3JlKCRmaW5kTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsICR3aXRoTmFtZSA9ICcnKQogICAgewogICAgICAgICR0aGlzLT5zcGxpY2UoJGZpbmROYW1lLCAkd2l0aE5hbWUsICRtaWRkbGV3YXJlLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBhIG1pZGRsZXdhcmUgYWZ0ZXIgYW5vdGhlciBtaWRkbGV3YXJlIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICRmaW5kTmFtZSAgIE1pZGRsZXdhcmUgdG8gZmluZAogICAgICogQHBhcmFtIGNhbGxhYmxlICRtaWRkbGV3YXJlIE1pZGRsZXdhcmUgZnVuY3Rpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgICAkd2l0aE5hbWUgICBOYW1lIHRvIHJlZ2lzdGVyIGZvciB0aGlzIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZnRlcigkZmluZE5hbWUsIGNhbGxhYmxlICRtaWRkbGV3YXJlLCAkd2l0aE5hbWUgPSAnJykKICAgIHsKICAgICAgICAkdGhpcy0+c3BsaWNlKCRmaW5kTmFtZSwgJHdpdGhOYW1lLCAkbWlkZGxld2FyZSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgbWlkZGxld2FyZSBieSBpbnN0YW5jZSBvciBuYW1lIGZyb20gdGhlIHN0YWNrLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZXxzdHJpbmcgJHJlbW92ZSBNaWRkbGV3YXJlIHRvIHJlbW92ZSBieSBpbnN0YW5jZSBvciBuYW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlKCRyZW1vdmUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNhY2hlZCA9IG51bGw7CiAgICAgICAgJGlkeCA9IGlzX2NhbGxhYmxlKCRyZW1vdmUpID8gMCA6IDE7CiAgICAgICAgJHRoaXMtPnN0YWNrID0gYXJyYXlfdmFsdWVzKGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgJHRoaXMtPnN0YWNrLAogICAgICAgICAgICBmdW5jdGlvbiAoJHR1cGxlKSB1c2UgKCRpZHgsICRyZW1vdmUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdHVwbGVbJGlkeF0gIT09ICRyZW1vdmU7CiAgICAgICAgICAgIH0KICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBvc2UgdGhlIG1pZGRsZXdhcmUgYW5kIGhhbmRsZXIgaW50byBhIHNpbmdsZSBjYWxsYWJsZSBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jYWNoZWQpIHsKICAgICAgICAgICAgaWYgKCEoJHByZXYgPSAkdGhpcy0+aGFuZGxlcikpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ05vIGhhbmRsZXIgaGFzIGJlZW4gc3BlY2lmaWVkJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X3JldmVyc2UoJHRoaXMtPnN0YWNrKSBhcyAkZm4pIHsKICAgICAgICAgICAgICAgICRwcmV2ID0gJGZuWzBdKCRwcmV2KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNhY2hlZCA9ICRwcmV2OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5jYWNoZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJG5hbWUKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZEJ5TmFtZSgkbmFtZSkKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3RhY2sgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCR2WzFdID09PSAkbmFtZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiTWlkZGxld2FyZSBub3QgZm91bmQ6ICRuYW1lIik7CiAgICB9CgogICAgLyoqCiAgICAgKiBTcGxpY2VzIGEgZnVuY3Rpb24gaW50byB0aGUgbWlkZGxld2FyZSBsaXN0IGF0IGEgc3BlY2lmaWMgcG9zaXRpb24uCiAgICAgKgogICAgICogQHBhcmFtICAgICAgICAgICRmaW5kTmFtZQogICAgICogQHBhcmFtICAgICAgICAgICR3aXRoTmFtZQogICAgICogQHBhcmFtIGNhbGxhYmxlICRtaWRkbGV3YXJlCiAgICAgKiBAcGFyYW0gICAgICAgICAgJGJlZm9yZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNwbGljZSgkZmluZE5hbWUsICR3aXRoTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsICRiZWZvcmUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNhY2hlZCA9IG51bGw7CiAgICAgICAgJGlkeCA9ICR0aGlzLT5maW5kQnlOYW1lKCRmaW5kTmFtZSk7CiAgICAgICAgJHR1cGxlID0gWyRtaWRkbGV3YXJlLCAkd2l0aE5hbWVdOwoKICAgICAgICBpZiAoJGJlZm9yZSkgewogICAgICAgICAgICBpZiAoJGlkeCA9PT0gMCkgewogICAgICAgICAgICAgICAgYXJyYXlfdW5zaGlmdCgkdGhpcy0+c3RhY2ssICR0dXBsZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVwbGFjZW1lbnQgPSBbJHR1cGxlLCAkdGhpcy0+c3RhY2tbJGlkeF1dOwogICAgICAgICAgICAgICAgYXJyYXlfc3BsaWNlKCR0aGlzLT5zdGFjaywgJGlkeCwgMSwgJHJlcGxhY2VtZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkaWR4ID09PSBjb3VudCgkdGhpcy0+c3RhY2spIC0gMSkgewogICAgICAgICAgICAkdGhpcy0+c3RhY2tbXSA9ICR0dXBsZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVwbGFjZW1lbnQgPSBbJHRoaXMtPnN0YWNrWyRpZHhdLCAkdHVwbGVdOwogICAgICAgICAgICBhcnJheV9zcGxpY2UoJHRoaXMtPnN0YWNrLCAkaWR4LCAxLCAkcmVwbGFjZW1lbnQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFByb3ZpZGVzIGEgZGVidWcgc3RyaW5nIGZvciBhIGdpdmVuIGNhbGxhYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxjYWxsYWJsZSAkZm4gRnVuY3Rpb24gdG8gd3JpdGUgYXMgYSBzdHJpbmcuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWJ1Z0NhbGxhYmxlKCRmbikKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRmbikpIHsKICAgICAgICAgICAgcmV0dXJuICJjYWxsYWJsZSh7JGZufSkiOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX2FycmF5KCRmbikpIHsKICAgICAgICAgICAgcmV0dXJuIGlzX3N0cmluZygkZm5bMF0pCiAgICAgICAgICAgICAgICA/ICJjYWxsYWJsZSh7JGZuWzBdfTo6eyRmblsxXX0pIgogICAgICAgICAgICAgICAgOiAiY2FsbGFibGUoWyciIC4gZ2V0X2NsYXNzKCRmblswXSkgLiAiJywgJ3skZm5bMV19J10pIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnY2FsbGFibGUoJyAuIHNwbF9vYmplY3RfaGFzaCgkZm4pIC4gJyknOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/MessageFormatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCi8qKgogKiBGb3JtYXRzIGxvZyBtZXNzYWdlcyB1c2luZyB2YXJpYWJsZSBzdWJzdGl0dXRpb25zIGZvciByZXF1ZXN0cywgcmVzcG9uc2VzLAogKiBhbmQgb3RoZXIgdHJhbnNhY3Rpb25hbCBkYXRhLgogKgogKiBUaGUgZm9sbG93aW5nIHZhcmlhYmxlIHN1YnN0aXR1dGlvbnMgYXJlIHN1cHBvcnRlZDoKICoKICogLSB7cmVxdWVzdH06ICAgICAgICBGdWxsIEhUVFAgcmVxdWVzdCBtZXNzYWdlCiAqIC0ge3Jlc3BvbnNlfTogICAgICAgRnVsbCBIVFRQIHJlc3BvbnNlIG1lc3NhZ2UKICogLSB7dHN9OiAgICAgICAgICAgICBJU08gODYwMSBkYXRlIGluIEdNVAogKiAtIHtkYXRlX2lzb184NjAxfSAgIElTTyA4NjAxIGRhdGUgaW4gR01UCiAqIC0ge2RhdGVfY29tbW9uX2xvZ30gQXBhY2hlIGNvbW1vbiBsb2cgZGF0ZSB1c2luZyB0aGUgY29uZmlndXJlZCB0aW1lem9uZS4KICogLSB7aG9zdH06ICAgICAgICAgICBIb3N0IG9mIHRoZSByZXF1ZXN0CiAqIC0ge21ldGhvZH06ICAgICAgICAgTWV0aG9kIG9mIHRoZSByZXF1ZXN0CiAqIC0ge3VyaX06ICAgICAgICAgICAgVVJJIG9mIHRoZSByZXF1ZXN0CiAqIC0ge3ZlcnNpb259OiAgICAgICAgUHJvdG9jb2wgdmVyc2lvbgogKiAtIHt0YXJnZXR9OiAgICAgICAgIFJlcXVlc3QgdGFyZ2V0IG9mIHRoZSByZXF1ZXN0IChwYXRoICsgcXVlcnkgKyBmcmFnbWVudCkKICogLSB7aG9zdG5hbWV9OiAgICAgICBIb3N0bmFtZSBvZiB0aGUgbWFjaGluZSB0aGF0IHNlbnQgdGhlIHJlcXVlc3QKICogLSB7Y29kZX06ICAgICAgICAgICBTdGF0dXMgY29kZSBvZiB0aGUgcmVzcG9uc2UgKGlmIGF2YWlsYWJsZSkKICogLSB7cGhyYXNlfTogICAgICAgICBSZWFzb24gcGhyYXNlIG9mIHRoZSByZXNwb25zZSAgKGlmIGF2YWlsYWJsZSkKICogLSB7ZXJyb3J9OiAgICAgICAgICBBbnkgZXJyb3IgbWVzc2FnZXMgKGlmIGF2YWlsYWJsZSkKICogLSB7cmVxX2hlYWRlcl8qfTogICBSZXBsYWNlIGAqYCB3aXRoIHRoZSBsb3dlcmNhc2VkIG5hbWUgb2YgYSByZXF1ZXN0IGhlYWRlciB0byBhZGQgdG8gdGhlIG1lc3NhZ2UKICogLSB7cmVzX2hlYWRlcl8qfTogICBSZXBsYWNlIGAqYCB3aXRoIHRoZSBsb3dlcmNhc2VkIG5hbWUgb2YgYSByZXNwb25zZSBoZWFkZXIgdG8gYWRkIHRvIHRoZSBtZXNzYWdlCiAqIC0ge3JlcV9oZWFkZXJzfTogICAgUmVxdWVzdCBoZWFkZXJzCiAqIC0ge3Jlc19oZWFkZXJzfTogICAgUmVzcG9uc2UgaGVhZGVycwogKiAtIHtyZXFfYm9keX06ICAgICAgIFJlcXVlc3QgYm9keQogKiAtIHtyZXNfYm9keX06ICAgICAgIFJlc3BvbnNlIGJvZHkKICovCmNsYXNzIE1lc3NhZ2VGb3JtYXR0ZXIKewogICAgLyoqCiAgICAgKiBBcGFjaGUgQ29tbW9uIExvZyBGb3JtYXQuCiAgICAgKiBAbGluayBodHRwOi8vaHR0cGQuYXBhY2hlLm9yZy9kb2NzLzIuNC9sb2dzLmh0bWwjY29tbW9uCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBjb25zdCBDTEYgPSAie2hvc3RuYW1lfSB7cmVxX2hlYWRlcl9Vc2VyLUFnZW50fSAtIFt7ZGF0ZV9jb21tb25fbG9nfV0gXCJ7bWV0aG9kfSB7dGFyZ2V0fSBIVFRQL3t2ZXJzaW9ufVwiIHtjb2RlfSB7cmVzX2hlYWRlcl9Db250ZW50LUxlbmd0aH0iOwogICAgY29uc3QgREVCVUcgPSAiPj4+Pj4+Pj5cbntyZXF1ZXN0fVxuPDw8PDw8PDxcbntyZXNwb25zZX1cbi0tLS0tLS0tXG57ZXJyb3J9IjsKICAgIGNvbnN0IFNIT1JUID0gJ1t7dHN9XSAie21ldGhvZH0ge3RhcmdldH0gSFRUUC97dmVyc2lvbn0iIHtjb2RlfSc7CgogICAgLyoqIEB2YXIgc3RyaW5nIFRlbXBsYXRlIHVzZWQgdG8gZm9ybWF0IGxvZyBtZXNzYWdlcyAqLwogICAgcHJpdmF0ZSAkdGVtcGxhdGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZW1wbGF0ZSBMb2cgbWVzc2FnZSB0ZW1wbGF0ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHRlbXBsYXRlID0gc2VsZjo6Q0xGKQogICAgewogICAgICAgICR0aGlzLT50ZW1wbGF0ZSA9ICR0ZW1wbGF0ZSA/OiBzZWxmOjpDTEY7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgZm9ybWF0dGVkIG1lc3NhZ2Ugc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICAkcmVxdWVzdCAgUmVxdWVzdCB0aGF0IHdhcyBzZW50CiAgICAgKiBAcGFyYW0gUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlIFJlc3BvbnNlIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKiBAcGFyYW0gXEV4Y2VwdGlvbiAgICAgICAgJGVycm9yICAgIEV4Y2VwdGlvbiB0aGF0IHdhcyByZWNlaXZlZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmb3JtYXQoCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgPSBudWxsLAogICAgICAgIFxFeGNlcHRpb24gJGVycm9yID0gbnVsbAogICAgKSB7CiAgICAgICAgJGNhY2hlID0gW107CgogICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcve1xzKihbQS1aYS16X1wtXC4wLTldKylccyp9LycsCiAgICAgICAgICAgIGZ1bmN0aW9uIChhcnJheSAkbWF0Y2hlcykgdXNlICgkcmVxdWVzdCwgJHJlc3BvbnNlLCAkZXJyb3IsICYkY2FjaGUpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2FjaGVbJG1hdGNoZXNbMV1dKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2FjaGVbJG1hdGNoZXNbMV1dOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJG1hdGNoZXNbMV0pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IFBzcjdcc3RyKCRyZXF1ZXN0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVzcG9uc2UnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlID8gUHNyN1xzdHIoJHJlc3BvbnNlKSA6ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXFfaGVhZGVycyc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSB0cmltKCRyZXF1ZXN0LT5nZXRNZXRob2QoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyAnIC4gJHJlcXVlc3QtPmdldFJlcXVlc3RUYXJnZXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyBIVFRQLycgLiAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCkgLiAiXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJHRoaXMtPmhlYWRlcnMoJHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNfaGVhZGVycyc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSFRUUC8lcyAlZCAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlLT5nZXRQcm90b2NvbFZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC4gIlxyXG4iIC4gJHRoaXMtPmhlYWRlcnMoJHJlc3BvbnNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcV9ib2R5JzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRCb2R5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc19ib2R5JzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXNwb25zZSA/ICRyZXNwb25zZS0+Z2V0Qm9keSgpIDogJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd0cyc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGF0ZV9pc29fODYwMSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSBnbWRhdGUoJ2MnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGF0ZV9jb21tb25fbG9nJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IGRhdGUoJ2QvTS9ZOkg6aTpzIE8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWV0aG9kJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRNZXRob2QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVyc2lvbic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VyaSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndXJsJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRVcmkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndGFyZ2V0JzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRSZXF1ZXN0VGFyZ2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcV92ZXJzaW9uJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVzX3ZlcnNpb24nOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICRyZXNwb25zZS0+Z2V0UHJvdG9jb2xWZXJzaW9uKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdob3N0JzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRIZWFkZXJMaW5lKCdIb3N0Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvc3RuYW1lJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IGdldGhvc3RuYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvZGUnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlID8gJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3BocmFzZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPyAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpIDogJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZXJyb3IgPyAkZXJyb3ItPmdldE1lc3NhZ2UoKSA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHByZWZpeGVkIGR5bmFtaWMgaGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RycG9zKCRtYXRjaGVzWzFdLCAncmVxX2hlYWRlcl8nKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRIZWFkZXJMaW5lKHN1YnN0cigkbWF0Y2hlc1sxXSwgMTEpKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkbWF0Y2hlc1sxXSwgJ3Jlc19oZWFkZXJfJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICRyZXNwb25zZS0+Z2V0SGVhZGVyTGluZShzdWJzdHIoJG1hdGNoZXNbMV0sIDExKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjYWNoZVskbWF0Y2hlc1sxXV0gPSAkcmVzdWx0OwogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICR0aGlzLT50ZW1wbGF0ZQogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBoZWFkZXJzKE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICcnOwogICAgICAgIGZvcmVhY2ggKCRtZXNzYWdlLT5nZXRIZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVlcykgewogICAgICAgICAgICAkcmVzdWx0IC49ICRuYW1lIC4gJzogJyAuIGltcGxvZGUoJywgJywgJHZhbHVlcykgLiAiXHJcbiI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJpbSgkcmVzdWx0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Middleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxDb29raWVcQ29va2llSmFySW50ZXJmYWNlOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxSZWplY3RlZFByb21pc2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXExvZ1xMb2dnZXJJbnRlcmZhY2U7CnVzZSBQc3JcTG9nXExvZ0xldmVsOwoKLyoqCiAqIEZ1bmN0aW9ucyB1c2VkIHRvIGNyZWF0ZSBhbmQgd3JhcCBoYW5kbGVycyB3aXRoIGhhbmRsZXIgbWlkZGxld2FyZS4KICovCmZpbmFsIGNsYXNzIE1pZGRsZXdhcmUKewogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYWRkcyBjb29raWVzIHRvIHJlcXVlc3RzLgogICAgICoKICAgICAqIFRoZSBvcHRpb25zIGFycmF5IG11c3QgYmUgc2V0IHRvIGEgQ29va2llSmFySW50ZXJmYWNlIGluIG9yZGVyIHRvIHVzZQogICAgICogY29va2llcy4gVGhpcyBpcyB0eXBpY2FsbHkgaGFuZGxlZCBmb3IgeW91IGJ5IGEgY2xpZW50LgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvb2tpZXMoKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkb3B0aW9uc1snY29va2llcyddKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCEoJG9wdGlvbnNbJ2Nvb2tpZXMnXSBpbnN0YW5jZW9mIENvb2tpZUphckludGVyZmFjZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignY29va2llcyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphckludGVyZmFjZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGNvb2tpZUphciA9ICRvcHRpb25zWydjb29raWVzJ107CiAgICAgICAgICAgICAgICAkcmVxdWVzdCA9ICRjb29raWVKYXItPndpdGhDb29raWVIZWFkZXIoJHJlcXVlc3QpOwogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucykKICAgICAgICAgICAgICAgICAgICAtPnRoZW4oCiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVzcG9uc2UpIHVzZSAoJGNvb2tpZUphciwgJHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb29raWVKYXItPmV4dHJhY3RDb29raWVzKCRyZXF1ZXN0LCAkcmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IHRocm93cyBleGNlcHRpb25zIGZvciA0eHggb3IgNXh4IHJlc3BvbnNlcyB3aGVuIHRoZQogICAgICogImh0dHBfZXJyb3IiIHJlcXVlc3Qgb3B0aW9uIGlzIHNldCB0byB0cnVlLgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGh0dHBFcnJvcnMoKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkb3B0aW9uc1snaHR0cF9lcnJvcnMnXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpLT50aGVuKAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UpIHVzZSAoJHJlcXVlc3QsICRoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb2RlID0gJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY29kZSA8IDQwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBSZXF1ZXN0RXhjZXB0aW9uOjpjcmVhdGUoJHJlcXVlc3QsICRyZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IHB1c2hlcyBoaXN0b3J5IGRhdGEgdG8gYW4gQXJyYXlBY2Nlc3MgY29udGFpbmVyLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxcQXJyYXlBY2Nlc3MgJGNvbnRhaW5lciBDb250YWluZXIgdG8gaG9sZCB0aGUgaGlzdG9yeSAoYnkgcmVmZXJlbmNlKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiBjb250YWluZXIgaXMgbm90IGFuIGFycmF5IG9yIEFycmF5QWNjZXNzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhpc3RvcnkoJiRjb250YWluZXIpCiAgICB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkY29udGFpbmVyKSAmJiAhJGNvbnRhaW5lciBpbnN0YW5jZW9mIFxBcnJheUFjY2VzcykgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignaGlzdG9yeSBjb250YWluZXIgbXVzdCBiZSBhbiBhcnJheSBvciBvYmplY3QgaW1wbGVtZW50aW5nIEFycmF5QWNjZXNzJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCYkY29udGFpbmVyKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAmJGNvbnRhaW5lcikgewogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyktPnRoZW4oCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkcmVxdWVzdCwgJiRjb250YWluZXIsICRvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJbXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0JyAgPT4gJHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzcG9uc2UnID0+ICR2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcicgICAgPT4gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25zJyAgPT4gJG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVhc29uKSB1c2UgKCRyZXF1ZXN0LCAmJGNvbnRhaW5lciwgJG9wdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbnRhaW5lcltdID0gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVlc3QnICA9PiAkcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXNwb25zZScgPT4gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcicgICAgPT4gJHJlYXNvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25zJyAgPT4gJG9wdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxHdXp6bGVIdHRwXFByb21pc2VccmVqZWN0aW9uX2ZvcigkcmVhc29uKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgaW52b2tlcyBhIGNhbGxiYWNrIGJlZm9yZSBhbmQgYWZ0ZXIgc2VuZGluZyBhIHJlcXVlc3QuCiAgICAgKgogICAgICogVGhlIHByb3ZpZGVkIGxpc3RlbmVyIGNhbm5vdCBtb2RpZnkgb3IgYWx0ZXIgdGhlIHJlc3BvbnNlLiBJdCBzaW1wbHkKICAgICAqICJ0YXBzIiBpbnRvIHRoZSBjaGFpbiB0byBiZSBub3RpZmllZCBiZWZvcmUgcmV0dXJuaW5nIHRoZSBwcm9taXNlLiBUaGUKICAgICAqIGJlZm9yZSBsaXN0ZW5lciBhY2NlcHRzIGEgcmVxdWVzdCBhbmQgb3B0aW9ucyBhcnJheSwgYW5kIHRoZSBhZnRlcgogICAgICogbGlzdGVuZXIgYWNjZXB0cyBhIHJlcXVlc3QsIG9wdGlvbnMgYXJyYXksIGFuZCByZXNwb25zZSBwcm9taXNlLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkYmVmb3JlIEZ1bmN0aW9uIHRvIGludm9rZSBiZWZvcmUgZm9yd2FyZGluZyB0aGUgcmVxdWVzdC4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkYWZ0ZXIgIEZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgZm9yd2FyZGluZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0YXAoY2FsbGFibGUgJGJlZm9yZSA9IG51bGwsIGNhbGxhYmxlICRhZnRlciA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgkYmVmb3JlLCAkYWZ0ZXIpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIsICRiZWZvcmUsICRhZnRlcikgewogICAgICAgICAgICAgICAgaWYgKCRiZWZvcmUpIHsKICAgICAgICAgICAgICAgICAgICAkYmVmb3JlKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKCRhZnRlcikgewogICAgICAgICAgICAgICAgICAgICRhZnRlcigkcmVxdWVzdCwgJG9wdGlvbnMsICRyZXNwb25zZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3BvbnNlOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgaGFuZGxlcyByZXF1ZXN0IHJlZGlyZWN0cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWRpcmVjdCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgewogICAgICAgICAgICByZXR1cm4gbmV3IFJlZGlyZWN0TWlkZGxld2FyZSgkaGFuZGxlcik7CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIE1pZGRsZXdhcmUgdGhhdCByZXRyaWVzIHJlcXVlc3RzIGJhc2VkIG9uIHRoZSBib29sZWFuIHJlc3VsdCBvZgogICAgICogaW52b2tpbmcgdGhlIHByb3ZpZGVkICJkZWNpZGVyIiBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBJZiBubyBkZWxheSBmdW5jdGlvbiBpcyBwcm92aWRlZCwgYSBzaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgZXhwb25lbnRpYWwKICAgICAqIGJhY2tvZmYgd2lsbCBiZSB1dGlsaXplZC4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGRlY2lkZXIgRnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBudW1iZXIgb2YgcmV0cmllcywKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBhIHJlcXVlc3QsIFtyZXNwb25zZV0sIGFuZCBbZXhjZXB0aW9uXSBhbmQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIHRydWUgaWYgdGhlIHJlcXVlc3QgaXMgdG8gYmUgcmV0cmllZC4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkZGVsYXkgICBGdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG51bWJlciBvZiByZXRyaWVzIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmV0cnkoY2FsbGFibGUgJGRlY2lkZXIsIGNhbGxhYmxlICRkZWxheSA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgkZGVjaWRlciwgJGRlbGF5KSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUmV0cnlNaWRkbGV3YXJlKCRkZWNpZGVyLCAkaGFuZGxlciwgJGRlbGF5KTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGxvZ3MgcmVxdWVzdHMsIHJlc3BvbnNlcywgYW5kIGVycm9ycyB1c2luZyBhIG1lc3NhZ2UKICAgICAqIGZvcm1hdHRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gTG9nZ2VySW50ZXJmYWNlICAkbG9nZ2VyIExvZ3MgbWVzc2FnZXMuCiAgICAgKiBAcGFyYW0gTWVzc2FnZUZvcm1hdHRlciAkZm9ybWF0dGVyIEZvcm1hdHRlciB1c2VkIHRvIGNyZWF0ZSBtZXNzYWdlIHN0cmluZ3MuCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAkbG9nTGV2ZWwgTGV2ZWwgYXQgd2hpY2ggdG8gbG9nIHJlcXVlc3RzLgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvZyhMb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciwgTWVzc2FnZUZvcm1hdHRlciAkZm9ybWF0dGVyLCAkbG9nTGV2ZWwgPSBMb2dMZXZlbDo6SU5GTykKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCRsb2dnZXIsICRmb3JtYXR0ZXIsICRsb2dMZXZlbCkgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykgdXNlICgkaGFuZGxlciwgJGxvZ2dlciwgJGZvcm1hdHRlciwgJGxvZ0xldmVsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKS0+dGhlbigKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHJlc3BvbnNlKSB1c2UgKCRsb2dnZXIsICRyZXF1ZXN0LCAkZm9ybWF0dGVyLCAkbG9nTGV2ZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAkZm9ybWF0dGVyLT5mb3JtYXQoJHJlcXVlc3QsICRyZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICRsb2dnZXItPmxvZygkbG9nTGV2ZWwsICRtZXNzYWdlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVhc29uKSB1c2UgKCRsb2dnZXIsICRyZXF1ZXN0LCAkZm9ybWF0dGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZSA9ICRyZWFzb24gaW5zdGFuY2VvZiBSZXF1ZXN0RXhjZXB0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICRyZWFzb24tPmdldFJlc3BvbnNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgJG1lc3NhZ2UgPSAkZm9ybWF0dGVyLT5mb3JtYXQoJHJlcXVlc3QsICRyZXNwb25zZSwgJHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgICAgICRsb2dnZXItPm5vdGljZSgkbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcR3V6emxlSHR0cFxQcm9taXNlXHJlamVjdGlvbl9mb3IoJHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtaWRkbGV3YXJlIGFkZHMgYSBkZWZhdWx0IGNvbnRlbnQtdHlwZSBpZiBwb3NzaWJsZSwgYSBkZWZhdWx0CiAgICAgKiBjb250ZW50LWxlbmd0aCBvciB0cmFuc2Zlci1lbmNvZGluZyBoZWFkZXIsIGFuZCB0aGUgZXhwZWN0IGhlYWRlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJlcGFyZUJvZHkoKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBQcmVwYXJlQm9keU1pZGRsZXdhcmUoJGhhbmRsZXIpOwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYXBwbGllcyBhIG1hcCBmdW5jdGlvbiB0byB0aGUgcmVxdWVzdCBiZWZvcmUgcGFzc2luZyB0bwogICAgICogdGhlIG5leHQgaGFuZGxlci4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGZuIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIFJlcXVlc3RJbnRlcmZhY2UgYW5kIHJldHVybnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgYSBSZXF1ZXN0SW50ZXJmYWNlLgogICAgICogQHJldHVybiBjYWxsYWJsZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1hcFJlcXVlc3QoY2FsbGFibGUgJGZuKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGZuKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAkZm4pIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkZm4oJHJlcXVlc3QpLCAkb3B0aW9ucyk7CiAgICAgICAgICAgIH07CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIE1pZGRsZXdhcmUgdGhhdCBhcHBsaWVzIGEgbWFwIGZ1bmN0aW9uIHRvIHRoZSByZXNvbHZlZCBwcm9taXNlJ3MKICAgICAqIHJlc3BvbnNlLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkZm4gRnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgUmVzcG9uc2VJbnRlcmZhY2UgYW5kCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHJldHVybnMgYSBSZXNwb25zZUludGVyZmFjZS4KICAgICAqIEByZXR1cm4gY2FsbGFibGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYXBSZXNwb25zZShjYWxsYWJsZSAkZm4pCiAgICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgkZm4pIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIsICRmbikgewogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyktPnRoZW4oJGZuKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Pool.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc29ySW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXEVhY2hQcm9taXNlOwoKLyoqCiAqIFNlbmRzIGFuZCBpdGVyYXRvciBvZiByZXF1ZXN0cyBjb25jdXJyZW50bHkgdXNpbmcgYSBjYXBwZWQgcG9vbCBzaXplLgogKgogKiBUaGUgcG9vbCB3aWxsIHJlYWQgZnJvbSBhbiBpdGVyYXRvciB1bnRpbCBpdCBpcyBjYW5jZWxsZWQgb3IgdW50aWwgdGhlCiAqIGl0ZXJhdG9yIGlzIGNvbnN1bWVkLiBXaGVuIGEgcmVxdWVzdCBpcyB5aWVsZGVkLCB0aGUgcmVxdWVzdCBpcyBzZW50IGFmdGVyCiAqIGFwcGx5aW5nIHRoZSAicmVxdWVzdF9vcHRpb25zIiByZXF1ZXN0IG9wdGlvbnMgKGlmIHByb3ZpZGVkIGluIHRoZSBjdG9yKS4KICoKICogV2hlbiBhIGZ1bmN0aW9uIGlzIHlpZWxkZWQgYnkgdGhlIGl0ZXJhdG9yLCB0aGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdGhlCiAqICJyZXF1ZXN0X29wdGlvbnMiIGFycmF5IHRoYXQgc2hvdWxkIGJlIG1lcmdlZCBvbiB0b3Agb2YgYW55IGV4aXN0aW5nCiAqIG9wdGlvbnMsIGFuZCB0aGUgZnVuY3Rpb24gTVVTVCB0aGVuIHJldHVybiBhIHdhaXQtYWJsZSBwcm9taXNlLgogKi8KY2xhc3MgUG9vbCBpbXBsZW1lbnRzIFByb21pc29ySW50ZXJmYWNlCnsKICAgIC8qKiBAdmFyIEVhY2hQcm9taXNlICovCiAgICBwcml2YXRlICRlYWNoOwoKICAgIC8qKgogICAgICogQHBhcmFtIENsaWVudEludGVyZmFjZSAkY2xpZW50ICAgQ2xpZW50IHVzZWQgdG8gc2VuZCB0aGUgcmVxdWVzdHMuCiAgICAgKiBAcGFyYW0gYXJyYXl8XEl0ZXJhdG9yICRyZXF1ZXN0cyBSZXF1ZXN0cyBvciBmdW5jdGlvbnMgdGhhdCByZXR1cm4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzIHRvIHNlbmQgY29uY3VycmVudGx5LgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAkY29uZmlnICAgQXNzb2NpYXRpdmUgYXJyYXkgb2Ygb3B0aW9ucwogICAgICogICAgIC0gY29uY3VycmVuY3k6IChpbnQpIE1heGltdW0gbnVtYmVyIG9mIHJlcXVlc3RzIHRvIHNlbmQgY29uY3VycmVudGx5CiAgICAgKiAgICAgLSBvcHRpb25zOiBBcnJheSBvZiByZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gZWFjaCByZXF1ZXN0LgogICAgICogICAgIC0gZnVsZmlsbGVkOiAoY2FsbGFibGUpIEZ1bmN0aW9uIHRvIGludm9rZSB3aGVuIGEgcmVxdWVzdCBjb21wbGV0ZXMuCiAgICAgKiAgICAgLSByZWplY3RlZDogKGNhbGxhYmxlKSBGdW5jdGlvbiB0byBpbnZva2Ugd2hlbiBhIHJlcXVlc3QgaXMgcmVqZWN0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBDbGllbnRJbnRlcmZhY2UgJGNsaWVudCwKICAgICAgICAkcmVxdWVzdHMsCiAgICAgICAgYXJyYXkgJGNvbmZpZyA9IFtdCiAgICApIHsKICAgICAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4KICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1sncG9vbF9zaXplJ10pKSB7CiAgICAgICAgICAgICRjb25maWdbJ2NvbmN1cnJlbmN5J10gPSAkY29uZmlnWydwb29sX3NpemUnXTsKICAgICAgICB9IGVsc2VpZiAoIWlzc2V0KCRjb25maWdbJ2NvbmN1cnJlbmN5J10pKSB7CiAgICAgICAgICAgICRjb25maWdbJ2NvbmN1cnJlbmN5J10gPSAyNTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkY29uZmlnWydvcHRpb25zJ10pKSB7CiAgICAgICAgICAgICRvcHRzID0gJGNvbmZpZ1snb3B0aW9ucyddOwogICAgICAgICAgICB1bnNldCgkY29uZmlnWydvcHRpb25zJ10pOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRvcHRzID0gW107CiAgICAgICAgfQoKICAgICAgICAkaXRlcmFibGUgPSBcR3V6emxlSHR0cFxQcm9taXNlXGl0ZXJfZm9yKCRyZXF1ZXN0cyk7CiAgICAgICAgJHJlcXVlc3RzID0gZnVuY3Rpb24gKCkgdXNlICgkaXRlcmFibGUsICRjbGllbnQsICRvcHRzKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRpdGVyYWJsZSBhcyAka2V5ID0+ICRyZm4pIHsKICAgICAgICAgICAgICAgIGlmICgkcmZuIGluc3RhbmNlb2YgUmVxdWVzdEludGVyZmFjZSkgewogICAgICAgICAgICAgICAgICAgIHlpZWxkICRrZXkgPT4gJGNsaWVudC0+c2VuZEFzeW5jKCRyZm4sICRvcHRzKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChpc19jYWxsYWJsZSgkcmZuKSkgewogICAgICAgICAgICAgICAgICAgIHlpZWxkICRrZXkgPT4gJHJmbigkb3B0cyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFYWNoIHZhbHVlIHlpZWxkZWQgYnkgJwogICAgICAgICAgICAgICAgICAgICAgICAuICd0aGUgaXRlcmF0b3IgbXVzdCBiZSBhIFBzcjdcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2UgJwogICAgICAgICAgICAgICAgICAgICAgICAuICdvciBhIGNhbGxhYmxlIHRoYXQgcmV0dXJucyBhIHByb21pc2UgdGhhdCBmdWxmaWxscyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ3dpdGggYSBQc3I3XE1lc3NhZ2VcSHR0cFxSZXNwb25zZUludGVyZmFjZSBvYmplY3QuJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9OwoKICAgICAgICAkdGhpcy0+ZWFjaCA9IG5ldyBFYWNoUHJvbWlzZSgkcmVxdWVzdHMoKSwgJGNvbmZpZyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHByb21pc2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZWFjaC0+cHJvbWlzZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2VuZHMgbXVsdGlwbGUgcmVxdWVzdHMgY29uY3VycmVudGx5IGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHJlc3BvbnNlcwogICAgICogYW5kIGV4Y2VwdGlvbnMgdGhhdCB1c2VzIHRoZSBzYW1lIG9yZGVyaW5nIGFzIHRoZSBwcm92aWRlZCByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBJTVBPUlRBTlQ6IFRoaXMgbWV0aG9kIGtlZXBzIGV2ZXJ5IHJlcXVlc3QgYW5kIHJlc3BvbnNlIGluIG1lbW9yeSwgYW5kCiAgICAgKiBhcyBzdWNoLCBpcyBOT1QgcmVjb21tZW5kZWQgd2hlbiBzZW5kaW5nIGEgbGFyZ2UgbnVtYmVyIG9yIGFuCiAgICAgKiBpbmRldGVybWluYXRlIG51bWJlciBvZiByZXF1ZXN0cyBjb25jdXJyZW50bHkuCiAgICAgKgogICAgICogQHBhcmFtIENsaWVudEludGVyZmFjZSAkY2xpZW50ICAgQ2xpZW50IHVzZWQgdG8gc2VuZCB0aGUgcmVxdWVzdHMKICAgICAqIEBwYXJhbSBhcnJheXxcSXRlcmF0b3IgJHJlcXVlc3RzIFJlcXVlc3RzIHRvIHNlbmQgY29uY3VycmVudGx5LgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAkb3B0aW9ucyAgUGFzc2VzIHRocm91Z2ggdGhlIG9wdGlvbnMgYXZhaWxhYmxlIGluCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7QHNlZSBHdXp6bGVIdHRwXFBvb2w6Ol9fY29uc3RydWN0fQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSByZXNwb25zZSBvciBhbiBleGNlcHRpb24KICAgICAqICAgICAgICAgICAgICAgaW4gdGhlIHNhbWUgb3JkZXIgdGhhdCB0aGUgcmVxdWVzdHMgd2VyZSBzZW50LgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBldmVudCBmb3JtYXQgaXMgaW5jb3JyZWN0LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJhdGNoKAogICAgICAgIENsaWVudEludGVyZmFjZSAkY2xpZW50LAogICAgICAgICRyZXF1ZXN0cywKICAgICAgICBhcnJheSAkb3B0aW9ucyA9IFtdCiAgICApIHsKICAgICAgICAkcmVzID0gW107CiAgICAgICAgc2VsZjo6Y21wQ2FsbGJhY2soJG9wdGlvbnMsICdmdWxmaWxsZWQnLCAkcmVzKTsKICAgICAgICBzZWxmOjpjbXBDYWxsYmFjaygkb3B0aW9ucywgJ3JlamVjdGVkJywgJHJlcyk7CiAgICAgICAgJHBvb2wgPSBuZXcgc3RhdGljKCRjbGllbnQsICRyZXF1ZXN0cywgJG9wdGlvbnMpOwogICAgICAgICRwb29sLT5wcm9taXNlKCktPndhaXQoKTsKICAgICAgICBrc29ydCgkcmVzKTsKCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY21wQ2FsbGJhY2soYXJyYXkgJiRvcHRpb25zLCAkbmFtZSwgYXJyYXkgJiRyZXN1bHRzKQogICAgewogICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJG5hbWVdKSkgewogICAgICAgICAgICAkb3B0aW9uc1skbmFtZV0gPSBmdW5jdGlvbiAoJHYsICRrKSB1c2UgKCYkcmVzdWx0cykgewogICAgICAgICAgICAgICAgJHJlc3VsdHNbJGtdID0gJHY7CiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGN1cnJlbnRGbiA9ICRvcHRpb25zWyRuYW1lXTsKICAgICAgICAgICAgJG9wdGlvbnNbJG5hbWVdID0gZnVuY3Rpb24gKCR2LCAkaykgdXNlICgmJHJlc3VsdHMsICRjdXJyZW50Rm4pIHsKICAgICAgICAgICAgICAgICRjdXJyZW50Rm4oJHYsICRrKTsKICAgICAgICAgICAgICAgICRyZXN1bHRzWyRrXSA9ICR2OwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogUHJlcGFyZXMgcmVxdWVzdHMgdGhhdCBjb250YWluIGEgYm9keSwgYWRkaW5nIHRoZSBDb250ZW50LUxlbmd0aCwKICogQ29udGVudC1UeXBlLCBhbmQgRXhwZWN0IGhlYWRlcnMuCiAqLwpjbGFzcyBQcmVwYXJlQm9keU1pZGRsZXdhcmUKewogICAgLyoqIEB2YXIgY2FsbGFibGUgICovCiAgICBwcml2YXRlICRuZXh0SGFuZGxlcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkbmV4dEhhbmRsZXIgTmV4dCBoYW5kbGVyIHRvIGludm9rZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRuZXh0SGFuZGxlcikKICAgIHsKICAgICAgICAkdGhpcy0+bmV4dEhhbmRsZXIgPSAkbmV4dEhhbmRsZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgICRmbiA9ICR0aGlzLT5uZXh0SGFuZGxlcjsKCiAgICAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlIHJlcXVlc3QgaGFzIG5vIGJvZHkuCiAgICAgICAgaWYgKCRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldFNpemUoKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJGZuKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkbW9kaWZ5ID0gW107CgogICAgICAgIC8vIEFkZCBhIGRlZmF1bHQgY29udGVudC10eXBlIGlmIHBvc3NpYmxlLgogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1UeXBlJykpIHsKICAgICAgICAgICAgaWYgKCR1cmkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRNZXRhZGF0YSgndXJpJykpIHsKICAgICAgICAgICAgICAgIGlmICgkdHlwZSA9IFBzcjdcbWltZXR5cGVfZnJvbV9maWxlbmFtZSgkdXJpKSkgewogICAgICAgICAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0NvbnRlbnQtVHlwZSddID0gJHR5cGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEFkZCBhIGRlZmF1bHQgY29udGVudC1sZW5ndGggb3IgdHJhbnNmZXItZW5jb2RpbmcgaGVhZGVyLgogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1MZW5ndGgnKQogICAgICAgICAgICAmJiAhJHJlcXVlc3QtPmhhc0hlYWRlcignVHJhbnNmZXItRW5jb2RpbmcnKQogICAgICAgICkgewogICAgICAgICAgICAkc2l6ZSA9ICRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldFNpemUoKTsKICAgICAgICAgICAgaWYgKCRzaXplICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydDb250ZW50LUxlbmd0aCddID0gJHNpemU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydUcmFuc2Zlci1FbmNvZGluZyddID0gJ2NodW5rZWQnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgdGhlIGV4cGVjdCBoZWFkZXIgaWYgbmVlZGVkLgogICAgICAgICR0aGlzLT5hZGRFeHBlY3RIZWFkZXIoJHJlcXVlc3QsICRvcHRpb25zLCAkbW9kaWZ5KTsKCiAgICAgICAgcmV0dXJuICRmbihQc3I3XG1vZGlmeV9yZXF1ZXN0KCRyZXF1ZXN0LCAkbW9kaWZ5KSwgJG9wdGlvbnMpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkRXhwZWN0SGVhZGVyKAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgYXJyYXkgJG9wdGlvbnMsCiAgICAgICAgYXJyYXkgJiRtb2RpZnkKICAgICkgewogICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgRXhwZWN0IGhlYWRlciBzaG91bGQgYmUgdXNlZAogICAgICAgIGlmICgkcmVxdWVzdC0+aGFzSGVhZGVyKCdFeHBlY3QnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkZXhwZWN0ID0gaXNzZXQoJG9wdGlvbnNbJ2V4cGVjdCddKSA/ICRvcHRpb25zWydleHBlY3QnXSA6IG51bGw7CgogICAgICAgIC8vIFJldHVybiBpZiBkaXNhYmxlZCBvciBpZiB5b3UncmUgbm90IHVzaW5nIEhUVFAvMS4xIG9yIEhUVFAvMi4wCiAgICAgICAgaWYgKCRleHBlY3QgPT09IGZhbHNlIHx8ICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKSA8IDEuMSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgZXhwZWN0IGhlYWRlciBpcyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZAogICAgICAgIGlmICgkZXhwZWN0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0V4cGVjdCddID0gJzEwMC1Db250aW51ZSc7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIEJ5IGRlZmF1bHQsIHNlbmQgdGhlIGV4cGVjdCBoZWFkZXIgd2hlbiB0aGUgcGF5bG9hZCBpcyA+IDFtYgogICAgICAgIGlmICgkZXhwZWN0ID09PSBudWxsKSB7CiAgICAgICAgICAgICRleHBlY3QgPSAxMDQ4NTc2OwogICAgICAgIH0KCiAgICAgICAgLy8gQWx3YXlzIGFkZCBpZiB0aGUgYm9keSBjYW5ub3QgYmUgcmV3b3VuZCwgdGhlIHNpemUgY2Fubm90IGJlCiAgICAgICAgLy8gZGV0ZXJtaW5lZCwgb3IgdGhlIHNpemUgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXRvZmYgdGhyZXNob2xkCiAgICAgICAgJGJvZHkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpOwogICAgICAgICRzaXplID0gJGJvZHktPmdldFNpemUoKTsKCiAgICAgICAgaWYgKCRzaXplID09PSBudWxsIHx8ICRzaXplID49IChpbnQpICRleHBlY3QgfHwgISRib2R5LT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnRXhwZWN0J10gPSAnMTAwLUNvbnRpbnVlJzsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQmFkUmVzcG9uc2VFeGNlcHRpb247CnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxUb29NYW55UmVkaXJlY3RzRXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogUmVxdWVzdCByZWRpcmVjdCBtaWRkbGV3YXJlLgogKgogKiBBcHBseSB0aGlzIG1pZGRsZXdhcmUgbGlrZSBvdGhlciBtaWRkbGV3YXJlIHVzaW5nCiAqIHtAc2VlIEd1enpsZUh0dHBcTWlkZGxld2FyZTo6cmVkaXJlY3QoKX0uCiAqLwpjbGFzcyBSZWRpcmVjdE1pZGRsZXdhcmUKewogICAgY29uc3QgSElTVE9SWV9IRUFERVIgPSAnWC1HdXp6bGUtUmVkaXJlY3QtSGlzdG9yeSc7CgogICAgY29uc3QgU1RBVFVTX0hJU1RPUllfSEVBREVSID0gJ1gtR3V6emxlLVJlZGlyZWN0LVN0YXR1cy1IaXN0b3J5JzsKCiAgICBwdWJsaWMgc3RhdGljICRkZWZhdWx0U2V0dGluZ3MgPSBbCiAgICAgICAgJ21heCcgICAgICAgICAgICAgPT4gNSwKICAgICAgICAncHJvdG9jb2xzJyAgICAgICA9PiBbJ2h0dHAnLCAnaHR0cHMnXSwKICAgICAgICAnc3RyaWN0JyAgICAgICAgICA9PiBmYWxzZSwKICAgICAgICAncmVmZXJlcicgICAgICAgICA9PiBmYWxzZSwKICAgICAgICAndHJhY2tfcmVkaXJlY3RzJyA9PiBmYWxzZSwKICAgIF07CgogICAgLyoqIEB2YXIgY2FsbGFibGUgICovCiAgICBwcml2YXRlICRuZXh0SGFuZGxlcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkbmV4dEhhbmRsZXIgTmV4dCBoYW5kbGVyIHRvIGludm9rZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRuZXh0SGFuZGxlcikKICAgIHsKICAgICAgICAkdGhpcy0+bmV4dEhhbmRsZXIgPSAkbmV4dEhhbmRsZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgICRmbiA9ICR0aGlzLT5uZXh0SGFuZGxlcjsKCiAgICAgICAgaWYgKGVtcHR5KCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ10gPSBzZWxmOjokZGVmYXVsdFNldHRpbmdzOwogICAgICAgIH0gZWxzZWlmICghaXNfYXJyYXkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignYWxsb3dfcmVkaXJlY3RzIG11c3QgYmUgdHJ1ZSwgZmFsc2UsIG9yIGFycmF5Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGRlZmF1bHQgc2V0dGluZ3Mgd2l0aCB0aGUgcHJvdmlkZWQgc2V0dGluZ3MKICAgICAgICAgICAgJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddICs9IHNlbGY6OiRkZWZhdWx0U2V0dGluZ3M7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddWydtYXgnXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpCiAgICAgICAgICAgIC0+dGhlbihmdW5jdGlvbiAoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKSB1c2UgKCRyZXF1ZXN0LCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jaGVja1JlZGlyZWN0KCRyZXF1ZXN0LCAkb3B0aW9ucywgJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAgJHJlcXVlc3QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAkb3B0aW9ucwogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlfFByb21pc2VJbnRlcmZhY2UgJHJlc3BvbnNlCiAgICAgKgogICAgICogQHJldHVybiBSZXNwb25zZUludGVyZmFjZXxQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja1JlZGlyZWN0KAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgYXJyYXkgJG9wdGlvbnMsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlCiAgICApIHsKICAgICAgICBpZiAoc3Vic3RyKCRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpLCAwLCAxKSAhPSAnMycKICAgICAgICAgICAgfHwgISRyZXNwb25zZS0+aGFzSGVhZGVyKCdMb2NhdGlvbicpCiAgICAgICAgKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzcG9uc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Z3VhcmRNYXgoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAkbmV4dFJlcXVlc3QgPSAkdGhpcy0+bW9kaWZ5UmVxdWVzdCgkcmVxdWVzdCwgJG9wdGlvbnMsICRyZXNwb25zZSk7CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ29uX3JlZGlyZWN0J10pKSB7CiAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddWydvbl9yZWRpcmVjdCddLAogICAgICAgICAgICAgICAgJHJlcXVlc3QsCiAgICAgICAgICAgICAgICAkcmVzcG9uc2UsCiAgICAgICAgICAgICAgICAkbmV4dFJlcXVlc3QtPmdldFVyaSgpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBQcm9taXNlSW50ZXJmYWNlfFJlc3BvbnNlSW50ZXJmYWNlICRwcm9taXNlICovCiAgICAgICAgJHByb21pc2UgPSAkdGhpcygkbmV4dFJlcXVlc3QsICRvcHRpb25zKTsKCiAgICAgICAgLy8gQWRkIGhlYWRlcnMgdG8gYmUgYWJsZSB0byB0cmFjayBoaXN0b3J5IG9mIHJlZGlyZWN0cy4KICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsndHJhY2tfcmVkaXJlY3RzJ10pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFRyYWNraW5nKAogICAgICAgICAgICAgICAgJHByb21pc2UsCiAgICAgICAgICAgICAgICAoc3RyaW5nKSAkbmV4dFJlcXVlc3QtPmdldFVyaSgpLAogICAgICAgICAgICAgICAgJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcHJvbWlzZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdpdGhUcmFja2luZyhQcm9taXNlSW50ZXJmYWNlICRwcm9taXNlLCAkdXJpLCAkc3RhdHVzQ29kZSkKICAgIHsKICAgICAgICByZXR1cm4gJHByb21pc2UtPnRoZW4oCiAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UpIHVzZSAoJHVyaSwgJHN0YXR1c0NvZGUpIHsKICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBhcmUgcHVzaGluZyB0byB0aGUgZnJvbnQgb2YgdGhlIGxpc3QgYXMgdGhpcwogICAgICAgICAgICAgICAgLy8gd291bGQgYmUgYW4gZWFybGllciByZXNwb25zZSB0aGFuIHdoYXQgaXMgY3VycmVudGx5IHByZXNlbnQKICAgICAgICAgICAgICAgIC8vIGluIHRoZSBoaXN0b3J5IGhlYWRlci4KICAgICAgICAgICAgICAgICRoaXN0b3J5SGVhZGVyID0gJHJlc3BvbnNlLT5nZXRIZWFkZXIoc2VsZjo6SElTVE9SWV9IRUFERVIpOwogICAgICAgICAgICAgICAgJHN0YXR1c0hlYWRlciA9ICRyZXNwb25zZS0+Z2V0SGVhZGVyKHNlbGY6OlNUQVRVU19ISVNUT1JZX0hFQURFUik7CiAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCRoaXN0b3J5SGVhZGVyLCAkdXJpKTsKICAgICAgICAgICAgICAgIGFycmF5X3Vuc2hpZnQoJHN0YXR1c0hlYWRlciwgJHN0YXR1c0NvZGUpOwogICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZS0+d2l0aEhlYWRlcihzZWxmOjpISVNUT1JZX0hFQURFUiwgJGhpc3RvcnlIZWFkZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT53aXRoSGVhZGVyKHNlbGY6OlNUQVRVU19ISVNUT1JZX0hFQURFUiwgJHN0YXR1c0hlYWRlcik7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ3VhcmRNYXgoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zKQogICAgewogICAgICAgICRjdXJyZW50ID0gaXNzZXQoJG9wdGlvbnNbJ19fcmVkaXJlY3RfY291bnQnXSkKICAgICAgICAgICAgPyAkb3B0aW9uc1snX19yZWRpcmVjdF9jb3VudCddCiAgICAgICAgICAgIDogMDsKICAgICAgICAkb3B0aW9uc1snX19yZWRpcmVjdF9jb3VudCddID0gJGN1cnJlbnQgKyAxOwogICAgICAgICRtYXggPSAkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ21heCddOwoKICAgICAgICBpZiAoJG9wdGlvbnNbJ19fcmVkaXJlY3RfY291bnQnXSA+ICRtYXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFRvb01hbnlSZWRpcmVjdHNFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAiV2lsbCBub3QgZm9sbG93IG1vcmUgdGhhbiB7JG1heH0gcmVkaXJlY3RzIiwKICAgICAgICAgICAgICAgICRyZXF1ZXN0CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgJG9wdGlvbnMKICAgICAqIEBwYXJhbSBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UKICAgICAqCiAgICAgKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZGlmeVJlcXVlc3QoCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICBhcnJheSAkb3B0aW9ucywKICAgICAgICBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UKICAgICkgewogICAgICAgIC8vIFJlcXVlc3QgbW9kaWZpY2F0aW9ucyB0byBhcHBseS4KICAgICAgICAkbW9kaWZ5ID0gW107CiAgICAgICAgJHByb3RvY29scyA9ICRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsncHJvdG9jb2xzJ107CgogICAgICAgIC8vIFVzZSBhIEdFVCByZXF1ZXN0IGlmIHRoaXMgaXMgYW4gZW50aXR5IGVuY2xvc2luZyByZXF1ZXN0IGFuZCB3ZSBhcmUKICAgICAgICAvLyBub3QgZm9yY2luZyBSRkMgY29tcGxpYW5jZSwgYnV0IHJhdGhlciBlbXVsYXRpbmcgd2hhdCBhbGwgYnJvd3NlcnMKICAgICAgICAvLyB3b3VsZCBkby4KICAgICAgICAkc3RhdHVzQ29kZSA9ICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpOwogICAgICAgIGlmICgkc3RhdHVzQ29kZSA9PSAzMDMgfHwKICAgICAgICAgICAgKCRzdGF0dXNDb2RlIDw9IDMwMiAmJiAkcmVxdWVzdC0+Z2V0Qm9keSgpICYmICEkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ3N0cmljdCddKQogICAgICAgICkgewogICAgICAgICAgICAkbW9kaWZ5WydtZXRob2QnXSA9ICdHRVQnOwogICAgICAgICAgICAkbW9kaWZ5Wydib2R5J10gPSAnJzsKICAgICAgICB9CgogICAgICAgICRtb2RpZnlbJ3VyaSddID0gJHRoaXMtPnJlZGlyZWN0VXJpKCRyZXF1ZXN0LCAkcmVzcG9uc2UsICRwcm90b2NvbHMpOwogICAgICAgIFBzcjdccmV3aW5kX2JvZHkoJHJlcXVlc3QpOwoKICAgICAgICAvLyBBZGQgdGhlIFJlZmVyZXIgaGVhZGVyIGlmIGl0IGlzIHRvbGQgdG8gZG8gc28gYW5kIG9ubHkKICAgICAgICAvLyBhZGQgdGhlIGhlYWRlciBpZiB3ZSBhcmUgbm90IHJlZGlyZWN0aW5nIGZyb20gaHR0cHMgdG8gaHR0cC4KICAgICAgICBpZiAoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddWydyZWZlcmVyJ10KICAgICAgICAgICAgJiYgJG1vZGlmeVsndXJpJ10tPmdldFNjaGVtZSgpID09PSAkcmVxdWVzdC0+Z2V0VXJpKCktPmdldFNjaGVtZSgpCiAgICAgICAgKSB7CiAgICAgICAgICAgICR1cmkgPSAkcmVxdWVzdC0+Z2V0VXJpKCktPndpdGhVc2VySW5mbygnJywgJycpOwogICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydSZWZlcmVyJ10gPSAoc3RyaW5nKSAkdXJpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3JlbW92ZV9oZWFkZXJzJ11bXSA9ICdSZWZlcmVyJzsKICAgICAgICB9CgogICAgICAgIC8vIFJlbW92ZSBBdXRob3JpemF0aW9uIGhlYWRlciBpZiBob3N0IGlzIGRpZmZlcmVudC4KICAgICAgICBpZiAoJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRIb3N0KCkgIT09ICRtb2RpZnlbJ3VyaSddLT5nZXRIb3N0KCkpIHsKICAgICAgICAgICAgJG1vZGlmeVsncmVtb3ZlX2hlYWRlcnMnXVtdID0gJ0F1dGhvcml6YXRpb24nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFBzcjdcbW9kaWZ5X3JlcXVlc3QoJHJlcXVlc3QsICRtb2RpZnkpOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBhcHByb3ByaWF0ZSBVUkwgb24gdGhlIHJlcXVlc3QgYmFzZWQgb24gdGhlIGxvY2F0aW9uIGhlYWRlcgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICAkcmVxdWVzdAogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICRwcm90b2NvbHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFVyaUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlZGlyZWN0VXJpKAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlLAogICAgICAgIGFycmF5ICRwcm90b2NvbHMKICAgICkgewogICAgICAgICRsb2NhdGlvbiA9IFBzcjdcVXJpUmVzb2x2ZXI6OnJlc29sdmUoCiAgICAgICAgICAgICRyZXF1ZXN0LT5nZXRVcmkoKSwKICAgICAgICAgICAgbmV3IFBzcjdcVXJpKCRyZXNwb25zZS0+Z2V0SGVhZGVyTGluZSgnTG9jYXRpb24nKSkKICAgICAgICApOwoKICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVkaXJlY3QgVVJJIGlzIGFsbG93ZWQgYmFzZWQgb24gdGhlIHByb3RvY29scy4KICAgICAgICBpZiAoIWluX2FycmF5KCRsb2NhdGlvbi0+Z2V0U2NoZW1lKCksICRwcm90b2NvbHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBCYWRSZXNwb25zZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgJ1JlZGlyZWN0IFVSSSwgJXMsIGRvZXMgbm90IHVzZSBvbmUgb2YgdGhlIGFsbG93ZWQgcmVkaXJlY3QgcHJvdG9jb2xzOiAlcycsCiAgICAgICAgICAgICAgICAgICAgJGxvY2F0aW9uLAogICAgICAgICAgICAgICAgICAgIGltcGxvZGUoJywgJywgJHByb3RvY29scykKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAkcmVxdWVzdCwKICAgICAgICAgICAgICAgICRyZXNwb25zZQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsb2NhdGlvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RequestOptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7CgovKioKICogVGhpcyBjbGFzcyBjb250YWlucyBhIGxpc3Qgb2YgYnVpbHQtaW4gR3V6emxlIHJlcXVlc3Qgb3B0aW9ucy4KICoKICogTW9yZSBkb2N1bWVudGF0aW9uIGZvciBlYWNoIG9wdGlvbiBjYW4gYmUgZm91bmQgYXQgaHR0cDovL2d1enpsZXBocC5vcmcvLgogKgogKiBAbGluayBodHRwOi8vZG9jcy5ndXp6bGVwaHAub3JnL2VuL3Y2L3JlcXVlc3Qtb3B0aW9ucy5odG1sCiAqLwpmaW5hbCBjbGFzcyBSZXF1ZXN0T3B0aW9ucwp7CiAgICAvKioKICAgICAqIGFsbG93X3JlZGlyZWN0czogKGJvb2x8YXJyYXkpIENvbnRyb2xzIHJlZGlyZWN0IGJlaGF2aW9yLiBQYXNzIGZhbHNlCiAgICAgKiB0byBkaXNhYmxlIHJlZGlyZWN0cywgcGFzcyB0cnVlIHRvIGVuYWJsZSByZWRpcmVjdHMsIHBhc3MgYW4KICAgICAqIGFzc29jaWF0aXZlIHRvIHByb3ZpZGUgY3VzdG9tIHJlZGlyZWN0IHNldHRpbmdzLiBEZWZhdWx0cyB0byAiZmFsc2UiLgogICAgICogVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiB5b3VyIGhhbmRsZXIgaGFzIHRoZSBSZWRpcmVjdE1pZGRsZXdhcmUuIFdoZW4KICAgICAqIHBhc3NpbmcgYW4gYXNzb2NpYXRpdmUgYXJyYXksIHlvdSBjYW4gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGtleSB2YWx1ZQogICAgICogcGFpcnM6CiAgICAgKgogICAgICogLSBtYXg6IChpbnQsIGRlZmF1bHQ9NSkgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCByZWRpcmVjdHMuCiAgICAgKiAtIHN0cmljdDogKGJvb2wsIGRlZmF1bHQ9ZmFsc2UpIFNldCB0byB0cnVlIHRvIHVzZSBzdHJpY3QgcmVkaXJlY3RzCiAgICAgKiAgIG1lYW5pbmcgcmVkaXJlY3QgUE9TVCByZXF1ZXN0cyB3aXRoIFBPU1QgcmVxdWVzdHMgdnMuIGRvaW5nIHdoYXQgbW9zdAogICAgICogICBicm93c2VycyBkbyB3aGljaCBpcyByZWRpcmVjdCBQT1NUIHJlcXVlc3RzIHdpdGggR0VUIHJlcXVlc3RzCiAgICAgKiAtIHJlZmVyZXI6IChib29sLCBkZWZhdWx0PXRydWUpIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIHRoZSBSZWZlcmVyCiAgICAgKiAgIGhlYWRlci4KICAgICAqIC0gcHJvdG9jb2xzOiAoYXJyYXksIGRlZmF1bHQ9WydodHRwJywgJ2h0dHBzJ10pIEFsbG93ZWQgcmVkaXJlY3QKICAgICAqICAgcHJvdG9jb2xzLgogICAgICogLSBvbl9yZWRpcmVjdDogKGNhbGxhYmxlKSBQSFAgY2FsbGFibGUgdGhhdCBpcyBpbnZva2VkIHdoZW4gYSByZWRpcmVjdAogICAgICogICBpcyBlbmNvdW50ZXJlZC4gVGhlIGNhbGxhYmxlIGlzIGludm9rZWQgd2l0aCB0aGUgcmVxdWVzdCwgdGhlIHJlZGlyZWN0CiAgICAgKiAgIHJlc3BvbnNlIHRoYXQgd2FzIHJlY2VpdmVkLCBhbmQgdGhlIGVmZmVjdGl2ZSBVUkkuIEFueSByZXR1cm4gdmFsdWUKICAgICAqICAgZnJvbSB0aGUgb25fcmVkaXJlY3QgZnVuY3Rpb24gaXMgaWdub3JlZC4KICAgICAqLwogICAgY29uc3QgQUxMT1dfUkVESVJFQ1RTID0gJ2FsbG93X3JlZGlyZWN0cyc7CgogICAgLyoqCiAgICAgKiBhdXRoOiAoYXJyYXkpIFBhc3MgYW4gYXJyYXkgb2YgSFRUUCBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIHRvIHVzZQogICAgICogd2l0aCB0aGUgcmVxdWVzdC4gVGhlIGFycmF5IG11c3QgY29udGFpbiB0aGUgdXNlcm5hbWUgaW4gaW5kZXggWzBdLAogICAgICogdGhlIHBhc3N3b3JkIGluIGluZGV4IFsxXSwgYW5kIHlvdSBjYW4gb3B0aW9uYWxseSBwcm92aWRlIGEgYnVpbHQtaW4KICAgICAqIGF1dGhlbnRpY2F0aW9uIHR5cGUgaW4gaW5kZXggWzJdLiBQYXNzIG51bGwgdG8gZGlzYWJsZSBhdXRoZW50aWNhdGlvbgogICAgICogZm9yIGEgcmVxdWVzdC4KICAgICAqLwogICAgY29uc3QgQVVUSCA9ICdhdXRoJzsKCiAgICAvKioKICAgICAqIGJvZHk6IChyZXNvdXJjZXxzdHJpbmd8bnVsbHxpbnR8ZmxvYXR8U3RyZWFtSW50ZXJmYWNlfGNhbGxhYmxlfFxJdGVyYXRvcikKICAgICAqIEJvZHkgdG8gc2VuZCBpbiB0aGUgcmVxdWVzdC4KICAgICAqLwogICAgY29uc3QgQk9EWSA9ICdib2R5JzsKCiAgICAvKioKICAgICAqIGNlcnQ6IChzdHJpbmd8YXJyYXkpIFNldCB0byBhIHN0cmluZyB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIGEgZmlsZQogICAgICogY29udGFpbmluZyBhIFBFTSBmb3JtYXR0ZWQgU1NMIGNsaWVudCBzaWRlIGNlcnRpZmljYXRlLiBJZiBhIHBhc3N3b3JkCiAgICAgKiBpcyByZXF1aXJlZCwgdGhlbiBzZXQgY2VydCB0byBhbiBhcnJheSBjb250YWluaW5nIHRoZSBwYXRoIHRvIHRoZSBQRU0KICAgICAqIGZpbGUgaW4gdGhlIGZpcnN0IGFycmF5IGVsZW1lbnQgZm9sbG93ZWQgYnkgdGhlIGNlcnRpZmljYXRlIHBhc3N3b3JkCiAgICAgKiBpbiB0aGUgc2Vjb25kIGFycmF5IGVsZW1lbnQuCiAgICAgKi8KICAgIGNvbnN0IENFUlQgPSAnY2VydCc7CgogICAgLyoqCiAgICAgKiBjb29raWVzOiAoYm9vbHxHdXp6bGVIdHRwXENvb2tpZVxDb29raWVKYXJJbnRlcmZhY2UsIGRlZmF1bHQ9ZmFsc2UpCiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgY29va2llcyBhcmUgdXNlZCBpbiBhIHJlcXVlc3Qgb3Igd2hhdCBjb29raWUKICAgICAqIGphciB0byB1c2Ugb3Igd2hhdCBjb29raWVzIHRvIHNlbmQuIFRoaXMgb3B0aW9uIG9ubHkgd29ya3MgaWYgeW91cgogICAgICogaGFuZGxlciBoYXMgdGhlIGBjb29raWVgIG1pZGRsZXdhcmUuIFZhbGlkIHZhbHVlcyBhcmUgYGZhbHNlYCBhbmQKICAgICAqIGFuIGluc3RhbmNlIG9mIHtAc2VlIEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphckludGVyZmFjZX0uCiAgICAgKi8KICAgIGNvbnN0IENPT0tJRVMgPSAnY29va2llcyc7CgogICAgLyoqCiAgICAgKiBjb25uZWN0X3RpbWVvdXQ6IChmbG9hdCwgZGVmYXVsdD0wKSBGbG9hdCBkZXNjcmliaW5nIHRoZSBudW1iZXIgb2YKICAgICAqIHNlY29uZHMgdG8gd2FpdCB3aGlsZSB0cnlpbmcgdG8gY29ubmVjdCB0byBhIHNlcnZlci4gVXNlIDAgdG8gd2FpdAogICAgICogaW5kZWZpbml0ZWx5ICh0aGUgZGVmYXVsdCBiZWhhdmlvcikuCiAgICAgKi8KICAgIGNvbnN0IENPTk5FQ1RfVElNRU9VVCA9ICdjb25uZWN0X3RpbWVvdXQnOwoKICAgIC8qKgogICAgICogZGVidWc6IChib29sfHJlc291cmNlKSBTZXQgdG8gdHJ1ZSBvciBzZXQgdG8gYSBQSFAgc3RyZWFtIHJldHVybmVkIGJ5CiAgICAgKiBmb3BlbigpICBlbmFibGUgZGVidWcgb3V0cHV0IHdpdGggdGhlIEhUVFAgaGFuZGxlciB1c2VkIHRvIHNlbmQgYQogICAgICogcmVxdWVzdC4KICAgICAqLwogICAgY29uc3QgREVCVUcgPSAnZGVidWcnOwoKICAgIC8qKgogICAgICogZGVjb2RlX2NvbnRlbnQ6IChib29sLCBkZWZhdWx0PXRydWUpIFNwZWNpZnkgd2hldGhlciBvciBub3QKICAgICAqIENvbnRlbnQtRW5jb2RpbmcgcmVzcG9uc2VzIChnemlwLCBkZWZsYXRlLCBldGMuKSBhcmUgYXV0b21hdGljYWxseQogICAgICogZGVjb2RlZC4KICAgICAqLwogICAgY29uc3QgREVDT0RFX0NPTlRFTlQgPSAnZGVjb2RlX2NvbnRlbnQnOwoKICAgIC8qKgogICAgICogZGVsYXk6IChpbnQpIFRoZSBhbW91bnQgb2YgdGltZSB0byBkZWxheSBiZWZvcmUgc2VuZGluZyBpbiBtaWxsaXNlY29uZHMuCiAgICAgKi8KICAgIGNvbnN0IERFTEFZID0gJ2RlbGF5JzsKCiAgICAvKioKICAgICAqIGV4cGVjdDogKGJvb2x8aW50ZWdlcikgQ29udHJvbHMgdGhlIGJlaGF2aW9yIG9mIHRoZQogICAgICogIkV4cGVjdDogMTAwLUNvbnRpbnVlIiBoZWFkZXIuCiAgICAgKgogICAgICogU2V0IHRvIGB0cnVlYCB0byBlbmFibGUgdGhlICJFeHBlY3Q6IDEwMC1Db250aW51ZSIgaGVhZGVyIGZvciBhbGwKICAgICAqIHJlcXVlc3RzIHRoYXQgc2VuZHMgYSBib2R5LiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoZQogICAgICogIkV4cGVjdDogMTAwLUNvbnRpbnVlIiBoZWFkZXIgZm9yIGFsbCByZXF1ZXN0cy4gU2V0IHRvIGEgbnVtYmVyIHNvIHRoYXQKICAgICAqIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgaW4gb3JkZXIgdG8gc2VuZAogICAgICogdGhlIEV4cGVjdCBoZWFkZXIuIFNldHRpbmcgdG8gYSBudW1iZXIgd2lsbCBzZW5kIHRoZSBFeHBlY3QgaGVhZGVyIGZvcgogICAgICogYWxsIHJlcXVlc3RzIGluIHdoaWNoIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkIGNhbm5vdCBiZSBkZXRlcm1pbmVkIG9yCiAgICAgKiB3aGVyZSB0aGUgYm9keSBpcyBub3QgcmV3aW5kYWJsZS4KICAgICAqCiAgICAgKiBCeSBkZWZhdWx0LCBHdXp6bGUgd2lsbCBhZGQgdGhlICJFeHBlY3Q6IDEwMC1Db250aW51ZSIgaGVhZGVyIHdoZW4gdGhlCiAgICAgKiBzaXplIG9mIHRoZSBib2R5IG9mIGEgcmVxdWVzdCBpcyBncmVhdGVyIHRoYW4gMSBNQiBhbmQgYSByZXF1ZXN0IGlzCiAgICAgKiB1c2luZyBIVFRQLzEuMS4KICAgICAqLwogICAgY29uc3QgRVhQRUNUID0gJ2V4cGVjdCc7CgogICAgLyoqCiAgICAgKiBmb3JtX3BhcmFtczogKGFycmF5KSBBc3NvY2lhdGl2ZSBhcnJheSBvZiBmb3JtIGZpZWxkIG5hbWVzIHRvIHZhbHVlcwogICAgICogd2hlcmUgZWFjaCB2YWx1ZSBpcyBhIHN0cmluZyBvciBhcnJheSBvZiBzdHJpbmdzLiBTZXRzIHRoZSBDb250ZW50LVR5cGUKICAgICAqIGhlYWRlciB0byBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgd2hlbiBubyBDb250ZW50LVR5cGUgaGVhZGVyCiAgICAgKiBpcyBhbHJlYWR5IHByZXNlbnQuCiAgICAgKi8KICAgIGNvbnN0IEZPUk1fUEFSQU1TID0gJ2Zvcm1fcGFyYW1zJzsKCiAgICAvKioKICAgICAqIGhlYWRlcnM6IChhcnJheSkgQXNzb2NpYXRpdmUgYXJyYXkgb2YgSFRUUCBoZWFkZXJzLiBFYWNoIHZhbHVlIE1VU1QgYmUKICAgICAqIGEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MuCiAgICAgKi8KICAgIGNvbnN0IEhFQURFUlMgPSAnaGVhZGVycyc7CgogICAgLyoqCiAgICAgKiBodHRwX2Vycm9yczogKGJvb2wsIGRlZmF1bHQ9dHJ1ZSkgU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgZXhjZXB0aW9ucwogICAgICogd2hlbiBhIG5vbi0gc3VjY2Vzc2Z1bCBIVFRQIHJlc3BvbnNlIGlzIHJlY2VpdmVkLiBCeSBkZWZhdWx0LAogICAgICogZXhjZXB0aW9ucyB3aWxsIGJlIHRocm93biBmb3IgNHh4IGFuZCA1eHggcmVzcG9uc2VzLiBUaGlzIG9wdGlvbiBvbmx5CiAgICAgKiB3b3JrcyBpZiB5b3VyIGhhbmRsZXIgaGFzIHRoZSBgaHR0cEVycm9yc2AgbWlkZGxld2FyZS4KICAgICAqLwogICAgY29uc3QgSFRUUF9FUlJPUlMgPSAnaHR0cF9lcnJvcnMnOwoKICAgIC8qKgogICAgICoganNvbjogKG1peGVkKSBBZGRzIEpTT04gZGF0YSB0byBhIHJlcXVlc3QuIFRoZSBwcm92aWRlZCB2YWx1ZSBpcyBKU09OCiAgICAgKiBlbmNvZGVkIGFuZCBhIENvbnRlbnQtVHlwZSBoZWFkZXIgb2YgYXBwbGljYXRpb24vanNvbiB3aWxsIGJlIGFkZGVkIHRvCiAgICAgKiB0aGUgcmVxdWVzdCBpZiBubyBDb250ZW50LVR5cGUgaGVhZGVyIGlzIGFscmVhZHkgcHJlc2VudC4KICAgICAqLwogICAgY29uc3QgSlNPTiA9ICdqc29uJzsKCiAgICAvKioKICAgICAqIG11bHRpcGFydDogKGFycmF5KSBBcnJheSBvZiBhc3NvY2lhdGl2ZSBhcnJheXMsIGVhY2ggY29udGFpbmluZyBhCiAgICAgKiByZXF1aXJlZCAibmFtZSIga2V5IG1hcHBpbmcgdG8gdGhlIGZvcm0gZmllbGQsIG5hbWUsIGEgcmVxdWlyZWQKICAgICAqICJjb250ZW50cyIga2V5IG1hcHBpbmcgdG8gYSBTdHJlYW1JbnRlcmZhY2V8cmVzb3VyY2V8c3RyaW5nLCBhbgogICAgICogb3B0aW9uYWwgImhlYWRlcnMiIGFzc29jaWF0aXZlIGFycmF5IG9mIGN1c3RvbSBoZWFkZXJzLCBhbmQgYW4KICAgICAqIG9wdGlvbmFsICJmaWxlbmFtZSIga2V5IG1hcHBpbmcgdG8gYSBzdHJpbmcgdG8gc2VuZCBhcyB0aGUgZmlsZW5hbWUgaW4KICAgICAqIHRoZSBwYXJ0LiBJZiBubyAiZmlsZW5hbWUiIGtleSBpcyBwcmVzZW50LCB0aGVuIG5vICJmaWxlbmFtZSIgYXR0cmlidXRlCiAgICAgKiB3aWxsIGJlIGFkZGVkIHRvIHRoZSBwYXJ0LgogICAgICovCiAgICBjb25zdCBNVUxUSVBBUlQgPSAnbXVsdGlwYXJ0JzsKCiAgICAvKioKICAgICAqIG9uX2hlYWRlcnM6IChjYWxsYWJsZSkgQSBjYWxsYWJsZSB0aGF0IGlzIGludm9rZWQgd2hlbiB0aGUgSFRUUCBoZWFkZXJzCiAgICAgKiBvZiB0aGUgcmVzcG9uc2UgaGF2ZSBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgYm9keSBoYXMgbm90IHlldCBiZWd1biB0bwogICAgICogZG93bmxvYWQuCiAgICAgKi8KICAgIGNvbnN0IE9OX0hFQURFUlMgPSAnb25faGVhZGVycyc7CgogICAgLyoqCiAgICAgKiBvbl9zdGF0czogKGNhbGxhYmxlKSBhbGxvd3MgeW91IHRvIGdldCBhY2Nlc3MgdG8gdHJhbnNmZXIgc3RhdGlzdGljcyBvZgogICAgICogYSByZXF1ZXN0IGFuZCBhY2Nlc3MgdGhlIGxvd2VyIGxldmVsIHRyYW5zZmVyIGRldGFpbHMgb2YgdGhlIGhhbmRsZXIKICAgICAqIGFzc29jaWF0ZWQgd2l0aCB5b3VyIGNsaWVudC4gYGBvbl9zdGF0c2BgIGlzIGEgY2FsbGFibGUgdGhhdCBpcyBpbnZva2VkCiAgICAgKiB3aGVuIGEgaGFuZGxlciBoYXMgZmluaXNoZWQgc2VuZGluZyBhIHJlcXVlc3QuIFRoZSBjYWxsYmFjayBpcyBpbnZva2VkCiAgICAgKiB3aXRoIHRyYW5zZmVyIHN0YXRpc3RpY3MgYWJvdXQgdGhlIHJlcXVlc3QsIHRoZSByZXNwb25zZSByZWNlaXZlZCwgb3IKICAgICAqIHRoZSBlcnJvciBlbmNvdW50ZXJlZC4gSW5jbHVkZWQgaW4gdGhlIGRhdGEgaXMgdGhlIHRvdGFsIGFtb3VudCBvZiB0aW1lCiAgICAgKiB0YWtlbiB0byBzZW5kIHRoZSByZXF1ZXN0LgogICAgICovCiAgICBjb25zdCBPTl9TVEFUUyA9ICdvbl9zdGF0cyc7CgogICAgLyoqCiAgICAgKiBwcm9ncmVzczogKGNhbGxhYmxlKSBEZWZpbmVzIGEgZnVuY3Rpb24gdG8gaW52b2tlIHdoZW4gdHJhbnNmZXIKICAgICAqIHByb2dyZXNzIGlzIG1hZGUuIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgcG9zaXRpb25hbAogICAgICogYXJndW1lbnRzOiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIGRvd25sb2FkZWQsIHRoZQogICAgICogbnVtYmVyIG9mIGJ5dGVzIGRvd25sb2FkZWQgc28gZmFyLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlCiAgICAgKiB1cGxvYWRlZCwgdGhlIG51bWJlciBvZiBieXRlcyB1cGxvYWRlZCBzbyBmYXIuCiAgICAgKi8KICAgIGNvbnN0IFBST0dSRVNTID0gJ3Byb2dyZXNzJzsKCiAgICAvKioKICAgICAqIHByb3h5OiAoc3RyaW5nfGFycmF5KSBQYXNzIGEgc3RyaW5nIHRvIHNwZWNpZnkgYW4gSFRUUCBwcm94eSwgb3IgYW4KICAgICAqIGFycmF5IHRvIHNwZWNpZnkgZGlmZmVyZW50IHByb3hpZXMgZm9yIGRpZmZlcmVudCBwcm90b2NvbHMgKHdoZXJlIHRoZQogICAgICoga2V5IGlzIHRoZSBwcm90b2NvbCBhbmQgdGhlIHZhbHVlIGlzIGEgcHJveHkgc3RyaW5nKS4KICAgICAqLwogICAgY29uc3QgUFJPWFkgPSAncHJveHknOwoKICAgIC8qKgogICAgICogcXVlcnk6IChhcnJheXxzdHJpbmcpIEFzc29jaWF0aXZlIGFycmF5IG9mIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgdG8gYWRkCiAgICAgKiB0byB0aGUgcmVxdWVzdC4gVGhpcyBvcHRpb24gdXNlcyBQSFAncyBodHRwX2J1aWxkX3F1ZXJ5KCkgdG8gY3JlYXRlCiAgICAgKiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBQYXNzIGEgc3RyaW5nIHZhbHVlIGlmIHlvdSBuZWVkIG1vcmUKICAgICAqIGNvbnRyb2wgdGhhbiB3aGF0IHRoaXMgbWV0aG9kIHByb3ZpZGVzCiAgICAgKi8KICAgIGNvbnN0IFFVRVJZID0gJ3F1ZXJ5JzsKCiAgICAvKioKICAgICAqIHNpbms6IChyZXNvdXJjZXxzdHJpbmd8U3RyZWFtSW50ZXJmYWNlKSBXaGVyZSB0aGUgZGF0YSBvZiB0aGUKICAgICAqIHJlc3BvbnNlIGlzIHdyaXR0ZW4gdG8uIERlZmF1bHRzIHRvIGEgUEhQIHRlbXAgc3RyZWFtLiBQcm92aWRpbmcgYQogICAgICogc3RyaW5nIHdpbGwgd3JpdGUgZGF0YSB0byBhIGZpbGUgYnkgdGhlIGdpdmVuIG5hbWUuCiAgICAgKi8KICAgIGNvbnN0IFNJTksgPSAnc2luayc7CgogICAgLyoqCiAgICAgKiBzeW5jaHJvbm91czogKGJvb2wpIFNldCB0byB0cnVlIHRvIGluZm9ybSBIVFRQIGhhbmRsZXJzIHRoYXQgeW91IGludGVuZAogICAgICogb24gd2FpdGluZyBvbiB0aGUgcmVzcG9uc2UuIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igb3B0aW1pemF0aW9ucy4gTm90ZQogICAgICogdGhhdCBhIHByb21pc2UgaXMgc3RpbGwgcmV0dXJuZWQgaWYgeW91IGFyZSB1c2luZyBvbmUgb2YgdGhlIGFzeW5jCiAgICAgKiBjbGllbnQgbWV0aG9kcy4KICAgICAqLwogICAgY29uc3QgU1lOQ0hST05PVVMgPSAnc3luY2hyb25vdXMnOwoKICAgIC8qKgogICAgICogc3NsX2tleTogKGFycmF5fHN0cmluZykgU3BlY2lmeSB0aGUgcGF0aCB0byBhIGZpbGUgY29udGFpbmluZyBhIHByaXZhdGUKICAgICAqIFNTTCBrZXkgaW4gUEVNIGZvcm1hdC4gSWYgYSBwYXNzd29yZCBpcyByZXF1aXJlZCwgdGhlbiBzZXQgdG8gYW4gYXJyYXkKICAgICAqIGNvbnRhaW5pbmcgdGhlIHBhdGggdG8gdGhlIFNTTCBrZXkgaW4gdGhlIGZpcnN0IGFycmF5IGVsZW1lbnQgZm9sbG93ZWQKICAgICAqIGJ5IHRoZSBwYXNzd29yZCByZXF1aXJlZCBmb3IgdGhlIGNlcnRpZmljYXRlIGluIHRoZSBzZWNvbmQgZWxlbWVudC4KICAgICAqLwogICAgY29uc3QgU1NMX0tFWSA9ICdzc2xfa2V5JzsKCiAgICAvKioKICAgICAqIHN0cmVhbTogU2V0IHRvIHRydWUgdG8gYXR0ZW1wdCB0byBzdHJlYW0gYSByZXNwb25zZSByYXRoZXIgdGhhbgogICAgICogZG93bmxvYWQgaXQgYWxsIHVwLWZyb250LgogICAgICovCiAgICBjb25zdCBTVFJFQU0gPSAnc3RyZWFtJzsKCiAgICAvKioKICAgICAqIHZlcmlmeTogKGJvb2x8c3RyaW5nLCBkZWZhdWx0PXRydWUpIERlc2NyaWJlcyB0aGUgU1NMIGNlcnRpZmljYXRlCiAgICAgKiB2ZXJpZmljYXRpb24gYmVoYXZpb3Igb2YgYSByZXF1ZXN0LiBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgU1NMCiAgICAgKiBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gdXNpbmcgdGhlIHN5c3RlbSBDQSBidW5kbGUgd2hlbiBhdmFpbGFibGUKICAgICAqICh0aGUgZGVmYXVsdCkuIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiAodGhpcwogICAgICogaXMgaW5zZWN1cmUhKS4gU2V0IHRvIGEgc3RyaW5nIHRvIHByb3ZpZGUgdGhlIHBhdGggdG8gYSBDQSBidW5kbGUgb24KICAgICAqIGRpc2sgdG8gZW5hYmxlIHZlcmlmaWNhdGlvbiB1c2luZyBhIGN1c3RvbSBjZXJ0aWZpY2F0ZS4KICAgICAqLwogICAgY29uc3QgVkVSSUZZID0gJ3ZlcmlmeSc7CgogICAgLyoqCiAgICAgKiB0aW1lb3V0OiAoZmxvYXQsIGRlZmF1bHQ9MCkgRmxvYXQgZGVzY3JpYmluZyB0aGUgdGltZW91dCBvZiB0aGUKICAgICAqIHJlcXVlc3QgaW4gc2Vjb25kcy4gVXNlIDAgdG8gd2FpdCBpbmRlZmluaXRlbHkgKHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4KICAgICAqLwogICAgY29uc3QgVElNRU9VVCA9ICd0aW1lb3V0JzsKCiAgICAvKioKICAgICAqIHJlYWRfdGltZW91dDogKGZsb2F0LCBkZWZhdWx0PWRlZmF1bHRfc29ja2V0X3RpbWVvdXQgaW5pIHNldHRpbmcpIEZsb2F0IGRlc2NyaWJpbmcKICAgICAqIHRoZSBib2R5IHJlYWQgdGltZW91dCwgZm9yIHN0cmVhbSByZXF1ZXN0cy4KICAgICAqLwogICAgY29uc3QgUkVBRF9USU1FT1VUID0gJ3JlYWRfdGltZW91dCc7CgogICAgLyoqCiAgICAgKiB2ZXJzaW9uOiAoZmxvYXQpIFNwZWNpZmllcyB0aGUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uIHRvIGF0dGVtcHQgdG8gdXNlLgogICAgICovCiAgICBjb25zdCBWRVJTSU9OID0gJ3ZlcnNpb24nOwoKICAgIC8qKgogICAgICogZm9yY2VfaXBfcmVzb2x2ZTogKGJvb2wpIEZvcmNlIGNsaWVudCB0byB1c2Ugb25seSBpcHY0IG9yIGlwdjYgcHJvdG9jb2wKICAgICAqLwogICAgY29uc3QgRk9SQ0VfSVBfUkVTT0xWRSA9ICdmb3JjZV9pcF9yZXNvbHZlJzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0ZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQc3I3Owp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCi8qKgogKiBNaWRkbGV3YXJlIHRoYXQgcmV0cmllcyByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgYm9vbGVhbiByZXN1bHQgb2YKICogaW52b2tpbmcgdGhlIHByb3ZpZGVkICJkZWNpZGVyIiBmdW5jdGlvbi4KICovCmNsYXNzIFJldHJ5TWlkZGxld2FyZQp7CiAgICAvKiogQHZhciBjYWxsYWJsZSAgKi8KICAgIHByaXZhdGUgJG5leHRIYW5kbGVyOwoKICAgIC8qKiBAdmFyIGNhbGxhYmxlICovCiAgICBwcml2YXRlICRkZWNpZGVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRkZWNpZGVyICAgICBGdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG51bWJlciBvZiByZXRyaWVzLAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhIHJlcXVlc3QsIFtyZXNwb25zZV0sIGFuZCBbZXhjZXB0aW9uXSBhbmQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyB0cnVlIGlmIHRoZSByZXF1ZXN0IGlzIHRvIGJlCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJpZWQuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG5leHRIYW5kbGVyIE5leHQgaGFuZGxlciB0byBpbnZva2UuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGRlbGF5ICAgICAgIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbnVtYmVyIG9mIHJldHJpZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIFtyZXNwb25zZV0gYW5kIHJldHVybnMgdGhlIG51bWJlciBvZgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHMgdG8gZGVsYXkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBjYWxsYWJsZSAkZGVjaWRlciwKICAgICAgICBjYWxsYWJsZSAkbmV4dEhhbmRsZXIsCiAgICAgICAgY2FsbGFibGUgJGRlbGF5ID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPmRlY2lkZXIgPSAkZGVjaWRlcjsKICAgICAgICAkdGhpcy0+bmV4dEhhbmRsZXIgPSAkbmV4dEhhbmRsZXI7CiAgICAgICAgJHRoaXMtPmRlbGF5ID0gJGRlbGF5ID86IF9fQ0xBU1NfXyAuICc6OmV4cG9uZW50aWFsRGVsYXknOwogICAgfQoKICAgIC8qKgogICAgICogRGVmYXVsdCBleHBvbmVudGlhbCBiYWNrb2ZmIGRlbGF5IGZ1bmN0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSAkcmV0cmllcwogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhwb25lbnRpYWxEZWxheSgkcmV0cmllcykKICAgIHsKICAgICAgICByZXR1cm4gKGludCkgcG93KDIsICRyZXRyaWVzIC0gMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJ3JldHJpZXMnXSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ3JldHJpZXMnXSA9IDA7CiAgICAgICAgfQoKICAgICAgICAkZm4gPSAkdGhpcy0+bmV4dEhhbmRsZXI7CiAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpCiAgICAgICAgICAgIC0+dGhlbigKICAgICAgICAgICAgICAgICR0aGlzLT5vbkZ1bGZpbGxlZCgkcmVxdWVzdCwgJG9wdGlvbnMpLAogICAgICAgICAgICAgICAgJHRoaXMtPm9uUmVqZWN0ZWQoJHJlcXVlc3QsICRvcHRpb25zKQogICAgICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gb25GdWxmaWxsZWQoUmVxdWVzdEludGVyZmFjZSAkcmVxLCBhcnJheSAkb3B0aW9ucykKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkcmVxLCAkb3B0aW9ucykgewogICAgICAgICAgICBpZiAoIWNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICAgICAgJHRoaXMtPmRlY2lkZXIsCiAgICAgICAgICAgICAgICAkb3B0aW9uc1sncmV0cmllcyddLAogICAgICAgICAgICAgICAgJHJlcSwKICAgICAgICAgICAgICAgICR2YWx1ZSwKICAgICAgICAgICAgICAgIG51bGwKICAgICAgICAgICAgKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmRvUmV0cnkoJHJlcSwgJG9wdGlvbnMsICR2YWx1ZSk7CiAgICAgICAgfTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoUmVxdWVzdEludGVyZmFjZSAkcmVxLCBhcnJheSAkb3B0aW9ucykKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJHJlcSwgJG9wdGlvbnMpIHsKICAgICAgICAgICAgaWYgKCFjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgICAgICR0aGlzLT5kZWNpZGVyLAogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ3JldHJpZXMnXSwKICAgICAgICAgICAgICAgICRyZXEsCiAgICAgICAgICAgICAgICBudWxsLAogICAgICAgICAgICAgICAgJHJlYXNvbgogICAgICAgICAgICApKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gXEd1enpsZUh0dHBcUHJvbWlzZVxyZWplY3Rpb25fZm9yKCRyZWFzb24pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZG9SZXRyeSgkcmVxLCAkb3B0aW9ucyk7CiAgICAgICAgfTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRvUmV0cnkoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMsIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwpCiAgICB7CiAgICAgICAgJG9wdGlvbnNbJ2RlbGF5J10gPSBjYWxsX3VzZXJfZnVuYygkdGhpcy0+ZGVsYXksICsrJG9wdGlvbnNbJ3JldHJpZXMnXSwgJHJlc3BvbnNlKTsKCiAgICAgICAgcmV0dXJuICR0aGlzKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/TransferStats.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFJlcHJlc2VudHMgZGF0YSBhdCB0aGUgcG9pbnQgYWZ0ZXIgaXQgd2FzIHRyYW5zZmVycmVkIGVpdGhlciBzdWNjZXNzZnVsbHkKICogb3IgYWZ0ZXIgYSBuZXR3b3JrIGVycm9yLgogKi8KZmluYWwgY2xhc3MgVHJhbnNmZXJTdGF0cwp7CiAgICBwcml2YXRlICRyZXF1ZXN0OwogICAgcHJpdmF0ZSAkcmVzcG9uc2U7CiAgICBwcml2YXRlICR0cmFuc2ZlclRpbWU7CiAgICBwcml2YXRlICRoYW5kbGVyU3RhdHM7CiAgICBwcml2YXRlICRoYW5kbGVyRXJyb3JEYXRhOwoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICRyZXF1ZXN0ICAgICAgICAgIFJlcXVlc3QgdGhhdCB3YXMgc2VudC4KICAgICAqIEBwYXJhbSBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgICAgICAgICBSZXNwb25zZSByZWNlaXZlZCAoaWYgYW55KQogICAgICogQHBhcmFtIG51bGwgICAgICAgICAgICAgICR0cmFuc2ZlclRpbWUgICAgIFRvdGFsIGhhbmRsZXIgdHJhbnNmZXIgdGltZS4KICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAkaGFuZGxlckVycm9yRGF0YSBIYW5kbGVyIGVycm9yIGRhdGEuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgJGhhbmRsZXJTdGF0cyAgICAgSGFuZGxlciBzcGVjaWZpYyBzdGF0cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICAkdHJhbnNmZXJUaW1lID0gbnVsbCwKICAgICAgICAkaGFuZGxlckVycm9yRGF0YSA9IG51bGwsCiAgICAgICAgJGhhbmRsZXJTdGF0cyA9IFtdCiAgICApIHsKICAgICAgICAkdGhpcy0+cmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5yZXNwb25zZSA9ICRyZXNwb25zZTsKICAgICAgICAkdGhpcy0+dHJhbnNmZXJUaW1lID0gJHRyYW5zZmVyVGltZTsKICAgICAgICAkdGhpcy0+aGFuZGxlckVycm9yRGF0YSA9ICRoYW5kbGVyRXJyb3JEYXRhOwogICAgICAgICR0aGlzLT5oYW5kbGVyU3RhdHMgPSAkaGFuZGxlclN0YXRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSZXF1ZXN0SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNwb25zZSB0aGF0IHdhcyByZWNlaXZlZCAoaWYgYW55KS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3BvbnNlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3BvbnNlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGEgcmVzcG9uc2Ugd2FzIHJlY2VpdmVkLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzUmVzcG9uc2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2UgIT09IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIGhhbmRsZXIgc3BlY2lmaWMgZXJyb3IgZGF0YS4KICAgICAqCiAgICAgKiBUaGlzIG1pZ2h0IGJlIGFuIGV4Y2VwdGlvbiwgYSBpbnRlZ2VyIHJlcHJlc2VudGluZyBhbiBlcnJvciBjb2RlLCBvcgogICAgICogYW55dGhpbmcgZWxzZS4gUmVseWluZyBvbiB0aGlzIHZhbHVlIGFzc3VtZXMgdGhhdCB5b3Uga25vdyB3aGF0IGhhbmRsZXIKICAgICAqIHlvdSBhcmUgdXNpbmcuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGFuZGxlckVycm9yRGF0YSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyRXJyb3JEYXRhOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBlZmZlY3RpdmUgVVJJIHRoZSByZXF1ZXN0IHdhcyBzZW50IHRvLgogICAgICoKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFZmZlY3RpdmVVcmkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdC0+Z2V0VXJpKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGVzdGltYXRlZCB0aW1lIHRoZSByZXF1ZXN0IHdhcyBiZWluZyB0cmFuc2ZlcnJlZCBieSB0aGUgaGFuZGxlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIGZsb2F0IFRpbWUgaW4gc2Vjb25kcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFRyYW5zZmVyVGltZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50cmFuc2ZlclRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFsbCBvZiB0aGUgaGFuZGxlciBzcGVjaWZpYyB0cmFuc2ZlciBkYXRhLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhhbmRsZXJTdGF0cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyU3RhdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBzcGVjaWZpYyBoYW5kbGVyIHN0YXRpc3RpYyBmcm9tIHRoZSBoYW5kbGVyIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdCBIYW5kbGVyIHNwZWNpZmljIHRyYW5zZmVyIHN0YXQgdG8gcmV0cmlldmUuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyU3RhdCgkc3RhdCkKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPmhhbmRsZXJTdGF0c1skc3RhdF0pCiAgICAgICAgICAgID8gJHRoaXMtPmhhbmRsZXJTdGF0c1skc3RhdF0KICAgICAgICAgICAgOiBudWxsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/UriTemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7CgovKioKICogRXhwYW5kcyBVUkkgdGVtcGxhdGVzLiBVc2VybGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBQRUNMIHVyaV90ZW1wbGF0ZS4KICoKICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjU3MAogKi8KY2xhc3MgVXJpVGVtcGxhdGUKewogICAgLyoqIEB2YXIgc3RyaW5nIFVSSSB0ZW1wbGF0ZSAqLwogICAgcHJpdmF0ZSAkdGVtcGxhdGU7CgogICAgLyoqIEB2YXIgYXJyYXkgVmFyaWFibGVzIHRvIHVzZSBpbiB0aGUgdGVtcGxhdGUgZXhwYW5zaW9uICovCiAgICBwcml2YXRlICR2YXJpYWJsZXM7CgogICAgLyoqIEB2YXIgYXJyYXkgSGFzaCBmb3IgcXVpY2sgb3BlcmF0b3IgbG9va3VwcyAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJG9wZXJhdG9ySGFzaCA9IFsKICAgICAgICAnJyAgPT4gWydwcmVmaXgnID0+ICcnLCAgJ2pvaW5lcicgPT4gJywnLCAncXVlcnknID0+IGZhbHNlXSwKICAgICAgICAnKycgPT4gWydwcmVmaXgnID0+ICcnLCAgJ2pvaW5lcicgPT4gJywnLCAncXVlcnknID0+IGZhbHNlXSwKICAgICAgICAnIycgPT4gWydwcmVmaXgnID0+ICcjJywgJ2pvaW5lcicgPT4gJywnLCAncXVlcnknID0+IGZhbHNlXSwKICAgICAgICAnLicgPT4gWydwcmVmaXgnID0+ICcuJywgJ2pvaW5lcicgPT4gJy4nLCAncXVlcnknID0+IGZhbHNlXSwKICAgICAgICAnLycgPT4gWydwcmVmaXgnID0+ICcvJywgJ2pvaW5lcicgPT4gJy8nLCAncXVlcnknID0+IGZhbHNlXSwKICAgICAgICAnOycgPT4gWydwcmVmaXgnID0+ICc7JywgJ2pvaW5lcicgPT4gJzsnLCAncXVlcnknID0+IHRydWVdLAogICAgICAgICc/JyA9PiBbJ3ByZWZpeCcgPT4gJz8nLCAnam9pbmVyJyA9PiAnJicsICdxdWVyeScgPT4gdHJ1ZV0sCiAgICAgICAgJyYnID0+IFsncHJlZml4JyA9PiAnJicsICdqb2luZXInID0+ICcmJywgJ3F1ZXJ5JyA9PiB0cnVlXQogICAgXTsKCiAgICAvKiogQHZhciBhcnJheSBEZWxpbWl0ZXJzICovCiAgICBwcml2YXRlIHN0YXRpYyAkZGVsaW1zID0gWyc6JywgJy8nLCAnPycsICcjJywgJ1snLCAnXScsICdAJywgJyEnLCAnJCcsCiAgICAgICAgJyYnLCAnXCcnLCAnKCcsICcpJywgJyonLCAnKycsICcsJywgJzsnLCAnPSddOwoKICAgIC8qKiBAdmFyIGFycmF5IFBlcmNlbnQgZW5jb2RlZCBkZWxpbWl0ZXJzICovCiAgICBwcml2YXRlIHN0YXRpYyAkZGVsaW1zUGN0ID0gWyclM0EnLCAnJTJGJywgJyUzRicsICclMjMnLCAnJTVCJywgJyU1RCcsCiAgICAgICAgJyU0MCcsICclMjEnLCAnJTI0JywgJyUyNicsICclMjcnLCAnJTI4JywgJyUyOScsICclMkEnLCAnJTJCJywgJyUyQycsCiAgICAgICAgJyUzQicsICclM0QnXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhwYW5kKCR0ZW1wbGF0ZSwgYXJyYXkgJHZhcmlhYmxlcykKICAgIHsKICAgICAgICBpZiAoZmFsc2UgPT09IHN0cnBvcygkdGVtcGxhdGUsICd7JykpIHsKICAgICAgICAgICAgcmV0dXJuICR0ZW1wbGF0ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT50ZW1wbGF0ZSA9ICR0ZW1wbGF0ZTsKICAgICAgICAkdGhpcy0+dmFyaWFibGVzID0gJHZhcmlhYmxlczsKCiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy9ceyhbXlx9XSspXH0vJywKICAgICAgICAgICAgWyR0aGlzLCAnZXhwYW5kTWF0Y2gnXSwKICAgICAgICAgICAgJHRoaXMtPnRlbXBsYXRlCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGFuIGV4cHJlc3Npb24gaW50byBwYXJ0cwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byBwYXJzZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBwYXJ0cwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigkZXhwcmVzc2lvbikKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CgogICAgICAgIGlmIChpc3NldChzZWxmOjokb3BlcmF0b3JIYXNoWyRleHByZXNzaW9uWzBdXSkpIHsKICAgICAgICAgICAgJHJlc3VsdFsnb3BlcmF0b3InXSA9ICRleHByZXNzaW9uWzBdOwogICAgICAgICAgICAkZXhwcmVzc2lvbiA9IHN1YnN0cigkZXhwcmVzc2lvbiwgMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlc3VsdFsnb3BlcmF0b3InXSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRleHByZXNzaW9uKSBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgJHZhbHVlID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICAkdmFyc3BlYyA9IFtdOwogICAgICAgICAgICBpZiAoJGNvbG9uUG9zID0gc3RycG9zKCR2YWx1ZSwgJzonKSkgewogICAgICAgICAgICAgICAgJHZhcnNwZWNbJ3ZhbHVlJ10gPSBzdWJzdHIoJHZhbHVlLCAwLCAkY29sb25Qb3MpOwogICAgICAgICAgICAgICAgJHZhcnNwZWNbJ21vZGlmaWVyJ10gPSAnOic7CiAgICAgICAgICAgICAgICAkdmFyc3BlY1sncG9zaXRpb24nXSA9IChpbnQpIHN1YnN0cigkdmFsdWUsICRjb2xvblBvcyArIDEpOwogICAgICAgICAgICB9IGVsc2VpZiAoc3Vic3RyKCR2YWx1ZSwgLTEpID09PSAnKicpIHsKICAgICAgICAgICAgICAgICR2YXJzcGVjWydtb2RpZmllciddID0gJyonOwogICAgICAgICAgICAgICAgJHZhcnNwZWNbJ3ZhbHVlJ10gPSBzdWJzdHIoJHZhbHVlLCAwLCAtMSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdmFyc3BlY1sndmFsdWUnXSA9IChzdHJpbmcpICR2YWx1ZTsKICAgICAgICAgICAgICAgICR2YXJzcGVjWydtb2RpZmllciddID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlc3VsdFsndmFsdWVzJ11bXSA9ICR2YXJzcGVjOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQcm9jZXNzIGFuIGV4cGFuc2lvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbWF0Y2hlcyBNYXRjaGVzIG1ldCBpbiB0aGUgcHJlZ19yZXBsYWNlX2NhbGxiYWNrCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXhwYW5kTWF0Y2goYXJyYXkgJG1hdGNoZXMpCiAgICB7CiAgICAgICAgc3RhdGljICRyZmMxNzM4dG8zOTg2ID0gWycrJyA9PiAnJTIwJywgJyU3ZScgPT4gJ34nXTsKCiAgICAgICAgJHJlcGxhY2VtZW50cyA9IFtdOwogICAgICAgICRwYXJzZWQgPSBzZWxmOjpwYXJzZUV4cHJlc3Npb24oJG1hdGNoZXNbMV0pOwogICAgICAgICRwcmVmaXggPSBzZWxmOjokb3BlcmF0b3JIYXNoWyRwYXJzZWRbJ29wZXJhdG9yJ11dWydwcmVmaXgnXTsKICAgICAgICAkam9pbmVyID0gc2VsZjo6JG9wZXJhdG9ySGFzaFskcGFyc2VkWydvcGVyYXRvciddXVsnam9pbmVyJ107CiAgICAgICAgJHVzZVF1ZXJ5ID0gc2VsZjo6JG9wZXJhdG9ySGFzaFskcGFyc2VkWydvcGVyYXRvciddXVsncXVlcnknXTsKCiAgICAgICAgZm9yZWFjaCAoJHBhcnNlZFsndmFsdWVzJ10gYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnZhcmlhYmxlc1skdmFsdWVbJ3ZhbHVlJ11dKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR2YXJpYWJsZSA9ICR0aGlzLT52YXJpYWJsZXNbJHZhbHVlWyd2YWx1ZSddXTsKICAgICAgICAgICAgJGFjdHVhbGx5VXNlUXVlcnkgPSAkdXNlUXVlcnk7CiAgICAgICAgICAgICRleHBhbmRlZCA9ICcnOwoKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YXJpYWJsZSkpIHsKICAgICAgICAgICAgICAgICRpc0Fzc29jID0gJHRoaXMtPmlzQXNzb2MoJHZhcmlhYmxlKTsKICAgICAgICAgICAgICAgICRrdnAgPSBbXTsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2YXJpYWJsZSBhcyAka2V5ID0+ICR2YXIpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGlzQXNzb2MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGtleSA9IHJhd3VybGVuY29kZSgka2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgJGlzTmVzdGVkQXJyYXkgPSBpc19hcnJheSgkdmFyKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkaXNOZXN0ZWRBcnJheSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCEkaXNOZXN0ZWRBcnJheSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdmFyID0gcmF3dXJsZW5jb2RlKCR2YXIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBhcnNlZFsnb3BlcmF0b3InXSA9PT0gJysnIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyc2VkWydvcGVyYXRvciddID09PSAnIycKICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFyID0gJHRoaXMtPmRlY29kZVJlc2VydmVkKCR2YXIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWydtb2RpZmllciddID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc0Fzc29jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTmVzdGVkQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXN0ZWQgYXJyYXlzIG11c3QgYWxsb3cgZm9yIGRlZXBseSBuZXN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YXIgPSBzdHJ0cigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9idWlsZF9xdWVyeShbJGtleSA9PiAkdmFyXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZmMxNzM4dG8zOTg2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhciA9ICRrZXkgLiAnPScgLiAkdmFyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGtleSA+IDAgJiYgJGFjdHVhbGx5VXNlUXVlcnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YXIgPSAkdmFsdWVbJ3ZhbHVlJ10gLiAnPScgLiAkdmFyOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAka3ZwWyRrZXldID0gJHZhcjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHZhcmlhYmxlKSkgewogICAgICAgICAgICAgICAgICAgICRhY3R1YWxseVVzZVF1ZXJ5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHZhbHVlWydtb2RpZmllciddID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwYW5kZWQgPSBpbXBsb2RlKCRqb2luZXIsICRrdnApOwogICAgICAgICAgICAgICAgICAgIGlmICgkaXNBc3NvYykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBwcmVwZW5kIHRoZSB2YWx1ZSBuYW1lIHdoZW4gdXNpbmcgdGhlIGV4cGxvZGUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kaWZpZXIgd2l0aCBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KICAgICAgICAgICAgICAgICAgICAgICAgJGFjdHVhbGx5VXNlUXVlcnkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkaXNBc3NvYykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIGFuIGFzc29jaWF0aXZlIGFycmF5IGlzIGVuY291bnRlcmVkIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwbG9kZSBtb2RpZmllciBpcyBub3Qgc2V0LCB0aGVuIHRoZSByZXN1bHQgbXVzdCBiZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGtleXMgZm9sbG93ZWQgYnkgdGhlaXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzcGVjdGl2ZSB2YWx1ZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRrdnAgYXMgJGsgPT4gJiR2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdiA9ICRrIC4gJywnIC4gJHY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGV4cGFuZGVkID0gaW1wbG9kZSgnLCcsICRrdnApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVsnbW9kaWZpZXInXSA9PT0gJzonKSB7CiAgICAgICAgICAgICAgICAgICAgJHZhcmlhYmxlID0gc3Vic3RyKCR2YXJpYWJsZSwgMCwgJHZhbHVlWydwb3NpdGlvbiddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRleHBhbmRlZCA9IHJhd3VybGVuY29kZSgkdmFyaWFibGUpOwogICAgICAgICAgICAgICAgaWYgKCRwYXJzZWRbJ29wZXJhdG9yJ10gPT09ICcrJyB8fCAkcGFyc2VkWydvcGVyYXRvciddID09PSAnIycpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwYW5kZWQgPSAkdGhpcy0+ZGVjb2RlUmVzZXJ2ZWQoJGV4cGFuZGVkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRhY3R1YWxseVVzZVF1ZXJ5KSB7CiAgICAgICAgICAgICAgICBpZiAoISRleHBhbmRlZCAmJiAkam9pbmVyICE9PSAnJicpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwYW5kZWQgPSAkdmFsdWVbJ3ZhbHVlJ107CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRleHBhbmRlZCA9ICR2YWx1ZVsndmFsdWUnXSAuICc9JyAuICRleHBhbmRlZDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlcGxhY2VtZW50c1tdID0gJGV4cGFuZGVkOwogICAgICAgIH0KCiAgICAgICAgJHJldCA9IGltcGxvZGUoJGpvaW5lciwgJHJlcGxhY2VtZW50cyk7CiAgICAgICAgaWYgKCRyZXQgJiYgJHByZWZpeCkgewogICAgICAgICAgICByZXR1cm4gJHByZWZpeCAuICRyZXQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgYW4gYXJyYXkgaXMgYXNzb2NpYXRpdmUuCiAgICAgKgogICAgICogVGhpcyBtYWtlcyB0aGUgYXNzdW1wdGlvbiB0aGF0IGlucHV0IGFycmF5cyBhcmUgc2VxdWVuY2VzIG9yIGhhc2hlcy4KICAgICAqIFRoaXMgYXNzdW1wdGlvbiBpcyBhIHRyYWRlb2ZmIGZvciBhY2N1cmFjeSBpbiBmYXZvciBvZiBzcGVlZCwgYnV0IGl0CiAgICAgKiBzaG91bGQgd29yayBpbiBhbG1vc3QgZXZlcnkgY2FzZSB3aGVyZSBpbnB1dCBpcyBzdXBwbGllZCBmb3IgYSBVUkkKICAgICAqIHRlbXBsYXRlLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkYXJyYXkgQXJyYXkgdG8gY2hlY2sKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc0Fzc29jKGFycmF5ICRhcnJheSkKICAgIHsKICAgICAgICByZXR1cm4gJGFycmF5ICYmIGFycmF5X2tleXMoJGFycmF5KVswXSAhPT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIFJlbW92ZXMgcGVyY2VudCBlbmNvZGluZyBvbiByZXNlcnZlZCBjaGFyYWN0ZXJzICh1c2VkIHdpdGggKyBhbmQgIwogICAgICogbW9kaWZpZXJzKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHJpbmcgU3RyaW5nIHRvIGZpeAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZGVjb2RlUmVzZXJ2ZWQoJHN0cmluZykKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3JlcGxhY2Uoc2VsZjo6JGRlbGltc1BjdCwgc2VsZjo6JGRlbGltcywgJHN0cmluZyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/UPGRADING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R3V6emxlIFVwZ3JhZGUgR3VpZGUKPT09PT09PT09PT09PT09PT09PT0KCjUuMCB0byA2LjAKLS0tLS0tLS0tLQoKR3V6emxlIG5vdyB1c2VzIFtQU1ItN10oaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTcvKSBmb3IgSFRUUCBtZXNzYWdlcy4KRHVlIHRvIHRoZSBmYWN0IHRoYXQgdGhlc2UgbWVzc2FnZXMgYXJlIGltbXV0YWJsZSwgdGhpcyBwcm9tcHRlZCBhIHJlZmFjdG9yaW5nCm9mIEd1enpsZSB0byB1c2UgYSBtaWRkbGV3YXJlIGJhc2VkIHN5c3RlbSByYXRoZXIgdGhhbiBhbiBldmVudCBzeXN0ZW0uIEFueQpIVFRQIG1lc3NhZ2UgaW50ZXJhY3Rpb24gKGUuZy4sIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVxdWVzdGApIG5lZWQgdG8gYmUKdXBkYXRlZCB0byB3b3JrIHdpdGggdGhlIG5ldyBpbW11dGFibGUgUFNSLTcgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cy4gQW55CmV2ZW50IGxpc3RlbmVycyBvciBzdWJzY3JpYmVycyBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gYmVjb21lIG1pZGRsZXdhcmUKZnVuY3Rpb25zIHRoYXQgd3JhcCBoYW5kbGVycyAob3IgYXJlIGluamVjdGVkIGludG8gYQpgR3V6emxlSHR0cFxIYW5kbGVyU3RhY2tgKS4KCi0gUmVtb3ZlZCBgR3V6emxlSHR0cFxCYXRjaFJlc3VsdHNgCi0gUmVtb3ZlZCBgR3V6emxlSHR0cFxDb2xsZWN0aW9uYAotIFJlbW92ZWQgYEd1enpsZUh0dHBcSGFzRGF0YVRyYWl0YAotIFJlbW92ZWQgYEd1enpsZUh0dHBcVG9BcnJheUludGVyZmFjZWAKLSBUaGUgYGd1enpsZWh0dHAvc3RyZWFtc2AgZGVwZW5kZW5jeSBoYXMgYmVlbiByZW1vdmVkLiBTdHJlYW0gZnVuY3Rpb25hbGl0eQogIGlzIG5vdyBwcmVzZW50IGluIHRoZSBgR3V6emxlSHR0cFxQc3I3YCBuYW1lc3BhY2UgcHJvdmlkZWQgYnkgdGhlCiAgYGd1enpsZWh0dHAvcHNyN2AgcGFja2FnZS4KLSBHdXp6bGUgbm8gbG9uZ2VyIHVzZXMgUmVhY3RQSFAgcHJvbWlzZXMgYW5kIG5vdyB1c2VzIHRoZQogIGBndXp6bGVodHRwL3Byb21pc2VzYCBsaWJyYXJ5LiBXZSB1c2UgYSBjdXN0b20gcHJvbWlzZSBsaWJyYXJ5IGZvciB0aHJlZQogIHNpZ25pZmljYW50IHJlYXNvbnM6CiAgMS4gUmVhY3QgcHJvbWlzZXMgKGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgdGhpcykgYXJlIHJlY3Vyc2l2ZS4gUHJvbWlzZQogICAgIGNoYWluaW5nIGFuZCBwcm9taXNlIHJlc29sdXRpb24gd2lsbCBldmVudHVhbGx5IGJsb3cgdGhlIHN0YWNrLiBHdXp6bGUKICAgICBwcm9taXNlcyBhcmUgbm90IHJlY3Vyc2l2ZSBhcyB0aGV5IHVzZSBhIHNvcnQgb2YgdHJhbXBvbGluaW5nIHRlY2huaXF1ZS4KICAgICBOb3RlOiB0aGVyZSBoYXMgYmVlbiBtb3ZlbWVudCBpbiB0aGUgUmVhY3QgcHJvamVjdCB0byBtb2RpZnkgcHJvbWlzZXMgdG8KICAgICBubyBsb25nZXIgdXRpbGl6ZSByZWN1cnNpb24uCiAgMi4gR3V6emxlIG5lZWRzIHRvIGhhdmUgdGhlIGFiaWxpdHkgdG8gc3luY2hyb25vdXNseSBibG9jayBvbiBhIHByb21pc2UgdG8KICAgICB3YWl0IGZvciBhIHJlc3VsdC4gR3V6emxlIHByb21pc2VzIGFsbG93cyB0aGlzIGZ1bmN0aW9uYWxpdHkgKGFuZCBkb2VzCiAgICAgbm90IHJlcXVpcmUgdGhlIHVzZSBvZiByZWN1cnNpb24pLgogIDMuIEJlY2F1c2Ugd2UgbmVlZCB0byBiZSBhYmxlIHRvIHdhaXQgb24gYSByZXN1bHQsIGRvaW5nIHNvIHVzaW5nIFJlYWN0CiAgICAgcHJvbWlzZXMgcmVxdWlyZXMgd3JhcHBpbmcgcmVhY3QgcHJvbWlzZXMgd2l0aCBSaW5nUEhQIGZ1dHVyZXMuIFRoaXMKICAgICBvdmVyaGVhZCBpcyBubyBsb25nZXIgbmVlZGVkLCByZWR1Y2luZyBzdGFjayBzaXplcywgcmVkdWNpbmcgY29tcGxleGl0eSwKICAgICBhbmQgaW1wcm92aW5nIHBlcmZvcm1hbmNlLgotIGBHdXp6bGVIdHRwXE1pbWV0eXBlc2AgaGFzIGJlZW4gbW92ZWQgdG8gYSBmdW5jdGlvbiBpbgogIGBHdXp6bGVIdHRwXFBzcjdcbWltZXR5cGVfZnJvbV9leHRlbnNpb25gIGFuZAogIGBHdXp6bGVIdHRwXFBzcjdcbWltZXR5cGVfZnJvbV9maWxlbmFtZWAuCi0gYEd1enpsZUh0dHBcUXVlcnlgIGFuZCBgR3V6emxlSHR0cFxRdWVyeVBhcnNlcmAgaGF2ZSBiZWVuIHJlbW92ZWQuIFF1ZXJ5CiAgc3RyaW5ncyBtdXN0IG5vdyBiZSBwYXNzZWQgaW50byByZXF1ZXN0IG9iamVjdHMgYXMgc3RyaW5ncywgb3IgcHJvdmlkZWQgdG8KICB0aGUgYHF1ZXJ5YCByZXF1ZXN0IG9wdGlvbiB3aGVuIGNyZWF0aW5nIHJlcXVlc3RzIHdpdGggY2xpZW50cy4gVGhlIGBxdWVyeWAKICBvcHRpb24gdXNlcyBQSFAncyBgaHR0cF9idWlsZF9xdWVyeWAgdG8gY29udmVydCBhbiBhcnJheSB0byBhIHN0cmluZy4gSWYgeW91CiAgbmVlZCBhIGRpZmZlcmVudCBzZXJpYWxpemF0aW9uIHRlY2huaXF1ZSwgeW91IHdpbGwgbmVlZCB0byBwYXNzIHRoZSBxdWVyeQogIHN0cmluZyBpbiBhcyBhIHN0cmluZy4gVGhlcmUgYXJlIGEgY291cGxlIGhlbHBlciBmdW5jdGlvbnMgdGhhdCB3aWxsIG1ha2UKICB3b3JraW5nIHdpdGggcXVlcnkgc3RyaW5ncyBlYXNpZXI6IGBHdXp6bGVIdHRwXFBzcjdccGFyc2VfcXVlcnlgIGFuZAogIGBHdXp6bGVIdHRwXFBzcjdcYnVpbGRfcXVlcnlgLgotIEd1enpsZSBubyBsb25nZXIgaGFzIGEgZGVwZW5kZW5jeSBvbiBSaW5nUEhQLiBEdWUgdG8gdGhlIHVzZSBvZiBhIG1pZGRsZXdhcmUKICBzeXN0ZW0gYmFzZWQgb24gUFNSLTcsIHVzaW5nIFJpbmdQSFAgYW5kIGl0J3MgbWlkZGxld2FyZSBzeXN0ZW0gYXMgd2VsbCBhZGRzCiAgbW9yZSBjb21wbGV4aXR5IHRoYW4gdGhlIGJlbmVmaXRzIGl0IHByb3ZpZGVzLiBBbGwgSFRUUCBoYW5kbGVycyB0aGF0IHdlcmUKICBwcmVzZW50IGluIFJpbmdQSFAgaGF2ZSBiZWVuIG1vZGlmaWVkIHRvIHdvcmsgZGlyZWN0bHkgd2l0aCBQU1ItNyBtZXNzYWdlcwogIGFuZCBwbGFjZWQgaW4gdGhlIGBHdXp6bGVIdHRwXEhhbmRsZXJgIG5hbWVzcGFjZS4gVGhpcyBzaWduaWZpY2FudGx5IHJlZHVjZXMKICBjb21wbGV4aXR5IGluIEd1enpsZSwgcmVtb3ZlcyBhIGRlcGVuZGVuY3ksIGFuZCBpbXByb3ZlcyBwZXJmb3JtYW5jZS4gUmluZ1BIUAogIHdpbGwgYmUgbWFpbnRhaW5lZCBmb3IgR3V6emxlIDUgc3VwcG9ydCwgYnV0IHdpbGwgbm8gbG9uZ2VyIGJlIGEgcGFydCBvZgogIEd1enpsZSA2LgotIEFzIEd1enpsZSBub3cgdXNlcyBhIG1pZGRsZXdhcmUgYmFzZWQgc3lzdGVtcyB0aGUgZXZlbnQgc3lzdGVtIGFuZCBSaW5nUEhQCiAgaW50ZWdyYXRpb24gaGFzIGJlZW4gcmVtb3ZlZC4gTm90ZTogd2hpbGUgdGhlIGV2ZW50IHN5c3RlbSBoYXMgYmVlbiByZW1vdmVkLAogIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCB5b3VyIG93biB0eXBlIG9mIGV2ZW50IHN5c3RlbSB0aGF0IGlzIHBvd2VyZWQgYnkgdGhlCiAgbWlkZGxld2FyZSBzeXN0ZW0uCiAgLSBSZW1vdmVkIHRoZSBgRXZlbnRgIG5hbWVzcGFjZS4KICAtIFJlbW92ZWQgdGhlIGBTdWJzY3JpYmVyYCBuYW1lc3BhY2UuCiAgLSBSZW1vdmVkIGBUcmFuc2FjdGlvbmAgY2xhc3MKICAtIFJlbW92ZWQgYFJlcXVlc3RGc21gCiAgLSBSZW1vdmVkIGBSaW5nQnJpZGdlYAogIC0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxDb29raWVgIGlzIG5vdyBwcm92aWRlZCBieQogICAgYEd1enpsZUh0dHBcTWlkZGxld2FyZTo6Y29va2llc2AKICAtIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcSHR0cEVycm9yYCBpcyBub3cgcHJvdmlkZWQgYnkKICAgIGBHdXp6bGVIdHRwXE1pZGRsZXdhcmU6Omh0dHBFcnJvcmAKICAtIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcSGlzdG9yeWAgaXMgbm93IHByb3ZpZGVkIGJ5CiAgICBgR3V6emxlSHR0cFxNaWRkbGV3YXJlOjpoaXN0b3J5YAogIC0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxNb2NrYCBpcyBub3cgcHJvdmlkZWQgYnkKICAgIGBHdXp6bGVIdHRwXEhhbmRsZXJcTW9ja0hhbmRsZXJgCiAgLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXFByZXBhcmVgIGlzIG5vdyBwcm92aWRlZCBieQogICAgYEd1enpsZUh0dHBcUHJlcGFyZUJvZHlNaWRkbGV3YXJlYAogIC0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxSZWRpcmVjdGAgaXMgbm93IHByb3ZpZGVkIGJ5CiAgICBgR3V6emxlSHR0cFxSZWRpcmVjdE1pZGRsZXdhcmVgCi0gR3V6emxlIG5vdyB1c2VzIGBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZWAgKGltcGxlbWVudHMgaW4KICBgR3V6emxlSHR0cFxQc3I3XFVyaWApIGZvciBVUkkgc3VwcG9ydC4gYEd1enpsZUh0dHBcVXJsYCBpcyBub3cgZ29uZS4KLSBTdGF0aWMgZnVuY3Rpb25zIGluIGBHdXp6bGVIdHRwXFV0aWxzYCBoYXZlIGJlZW4gbW92ZWQgdG8gbmFtZXNwYWNlZAogIGZ1bmN0aW9ucyB1bmRlciB0aGUgYEd1enpsZUh0dHBgIG5hbWVzcGFjZS4gVGhpcyByZXF1aXJlcyBlaXRoZXIgYSBDb21wb3NlcgogIGJhc2VkIGF1dG9sb2FkZXIgb3IgeW91IHRvIGluY2x1ZGUgZnVuY3Rpb25zLnBocC4KLSBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldERlZmF1bHRPcHRpb25gIGhhcyBiZWVuIHJlbmFtZWQgdG8KICBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldENvbmZpZ2AuCi0gYEd1enpsZUh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXREZWZhdWx0T3B0aW9uYCBoYXMgYmVlbiByZW1vdmVkLgotIFRoZSBganNvbmAgYW5kIGB4bWxgIG1ldGhvZHMgb2YgcmVzcG9uc2Ugb2JqZWN0cyBoYXMgYmVlbiByZW1vdmVkLiBXaXRoIHRoZQogIG1pZ3JhdGlvbiB0byBzdHJpY3RseSBhZGhlcmluZyB0byBQU1ItNyBhcyB0aGUgaW50ZXJmYWNlIGZvciBHdXp6bGUgbWVzc2FnZXMsCiAgYWRkaW5nIG1ldGhvZHMgdG8gbWVzc2FnZSBpbnRlcmZhY2VzIHdvdWxkIGFjdHVhbGx5IHJlcXVpcmUgR3V6emxlIG1lc3NhZ2VzCiAgdG8gZXh0ZW5kIGZyb20gUFNSLTcgbWVzc2FnZXMgcmF0aGVyIHRoZW4gd29yayB3aXRoIHRoZW0gZGlyZWN0bHkuCgojIyBNaWdyYXRpbmcgdG8gbWlkZGxld2FyZQoKVGhlIGNoYW5nZSB0byBQU1ItNyB1bmZvcnR1bmF0ZWx5IHJlcXVpcmVkIHNpZ25pZmljYW50IHJlZmFjdG9yaW5nIHRvIEd1enpsZQpkdWUgdG8gdGhlIGZhY3QgdGhhdCBQU1ItNyBtZXNzYWdlcyBhcmUgaW1tdXRhYmxlLiBHdXp6bGUgNSByZWxpZWQgb24gYW4gZXZlbnQKc3lzdGVtIGZyb20gcGx1Z2lucy4gVGhlIGV2ZW50IHN5c3RlbSByZWxpZWQgb24gbXV0YWJpbGl0eSBvZiBIVFRQIG1lc3NhZ2VzIGFuZApzaWRlIGVmZmVjdHMgaW4gb3JkZXIgdG8gd29yay4gV2l0aCBpbW11dGFibGUgbWVzc2FnZXMsIHlvdSBoYXZlIHRvIGNoYW5nZSB5b3VyCndvcmtmbG93IHRvIGJlY29tZSBtb3JlIGFib3V0IGVpdGhlciByZXR1cm5pbmcgYSB2YWx1ZSAoZS5nLiwgZnVuY3Rpb25hbAptaWRkbGV3YXJlcykgb3Igc2V0dGluZyBhIHZhbHVlIG9uIGFuIG9iamVjdC4gR3V6emxlIHY2IGhhcyBjaG9zZW4gdGhlCmZ1bmN0aW9uYWwgbWlkZGxld2FyZSBhcHByb2FjaC4KCkluc3RlYWQgb2YgdXNpbmcgdGhlIGV2ZW50IHN5c3RlbSB0byBsaXN0ZW4gZm9yIHRoaW5ncyBsaWtlIHRoZSBgYmVmb3JlYCBldmVudCwKeW91IG5vdyBjcmVhdGUgYSBzdGFjayBiYXNlZCBtaWRkbGV3YXJlIGZ1bmN0aW9uIHRoYXQgaW50ZXJjZXB0cyBhIHJlcXVlc3Qgb24KdGhlIHdheSBpbiBhbmQgdGhlIHByb21pc2Ugb2YgdGhlIHJlc3BvbnNlIG9uIHRoZSB3YXkgb3V0LiBUaGlzIGlzIGEgbXVjaApzaW1wbGVyIGFuZCBtb3JlIHByZWRpY3RhYmxlIGFwcHJvYWNoIHRoYW4gdGhlIGV2ZW50IHN5c3RlbSBhbmQgd29ya3MgbmljZWx5CndpdGggUFNSLTcgbWlkZGxld2FyZS4gRHVlIHRvIHRoZSB1c2Ugb2YgcHJvbWlzZXMsIHRoZSBtaWRkbGV3YXJlIHN5c3RlbSBpcwphbHNvIGFzeW5jaHJvbm91cy4KCnY1OgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXEV2ZW50XEJlZm9yZUV2ZW50OwokY2xpZW50ID0gbmV3IEd1enpsZUh0dHBcQ2xpZW50KCk7Ci8vIEdldCB0aGUgZW1pdHRlciBhbmQgbGlzdGVuIHRvIHRoZSBiZWZvcmUgZXZlbnQuCiRjbGllbnQtPmdldEVtaXR0ZXIoKS0+b24oJ2JlZm9yZScsIGZ1bmN0aW9uIChCZWZvcmVFdmVudCAkZSkgewogICAgLy8gR3V6emxlIHY1IGV2ZW50cyByZWxpZWQgb24gbXV0YXRpb24KICAgICRlLT5nZXRSZXF1ZXN0KCktPnNldEhlYWRlcignWC1Gb28nLCAnQmFyJyk7Cn0pOwpgYGAKCnY2OgoKSW4gdjYsIHlvdSBjYW4gbW9kaWZ5IHRoZSByZXF1ZXN0IGJlZm9yZSBpdCBpcyBzZW50IHVzaW5nIHRoZSBgbWFwUmVxdWVzdGAKbWlkZGxld2FyZS4gVGhlIGlkaW9tYXRpYyB3YXkgaW4gdjYgdG8gbW9kaWZ5IHRoZSByZXF1ZXN0L3Jlc3BvbnNlIGxpZmVjeWNsZSBpcwp0byBzZXR1cCBhIGhhbmRsZXIgbWlkZGxld2FyZSBzdGFjayB1cCBmcm9udCBhbmQgaW5qZWN0IHRoZSBoYW5kbGVyIGludG8gYQpjbGllbnQuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcTWlkZGxld2FyZTsKLy8gQ3JlYXRlIGEgaGFuZGxlciBzdGFjayB0aGF0IGhhcyBhbGwgb2YgdGhlIGRlZmF1bHQgbWlkZGxld2FyZXMgYXR0YWNoZWQKJGhhbmRsZXIgPSBHdXp6bGVIdHRwXEhhbmRsZXJTdGFjazo6Y3JlYXRlKCk7Ci8vIFB1c2ggdGhlIGhhbmRsZXIgb250byB0aGUgaGFuZGxlciBzdGFjawokaGFuZGxlci0+cHVzaChNaWRkbGV3YXJlOjptYXBSZXF1ZXN0KGZ1bmN0aW9uIChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KSB7CiAgICAvLyBOb3RpY2UgdGhhdCB3ZSBoYXZlIHRvIHJldHVybiBhIHJlcXVlc3Qgb2JqZWN0CiAgICByZXR1cm4gJHJlcXVlc3QtPndpdGhIZWFkZXIoJ1gtRm9vJywgJ0JhcicpOwp9KSk7Ci8vIEluamVjdCB0aGUgaGFuZGxlciBpbnRvIHRoZSBjbGllbnQKJGNsaWVudCA9IG5ldyBHdXp6bGVIdHRwXENsaWVudChbJ2hhbmRsZXInID0+ICRoYW5kbGVyXSk7CmBgYAoKIyMgUE9TVCBSZXF1ZXN0cwoKVGhpcyB2ZXJzaW9uIGFkZGVkIHRoZSBbYGZvcm1fcGFyYW1zYF0oaHR0cDovL2d1enpsZS5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0L3JlcXVlc3Qtb3B0aW9ucy5odG1sI2Zvcm1fcGFyYW1zKQphbmQgYG11bHRpcGFydGAgcmVxdWVzdCBvcHRpb25zLiBgZm9ybV9wYXJhbXNgIGlzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mCnN0cmluZ3Mgb3IgYXJyYXkgb2Ygc3RyaW5ncyBhbmQgaXMgdXNlZCB0byBzZXJpYWxpemUgYW4KYGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgUE9TVCByZXF1ZXN0LiBUaGUKW2BtdWx0aXBhcnRgXShodHRwOi8vZ3V6emxlLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvcmVxdWVzdC1vcHRpb25zLmh0bWwjbXVsdGlwYXJ0KQpvcHRpb24gaXMgbm93IHVzZWQgdG8gc2VuZCBhIG11bHRpcGFydC9mb3JtLWRhdGEgUE9TVCByZXF1ZXN0LgoKYEd1enpsZUh0dHBcUG9zdFxQb3N0RmlsZWAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBgbXVsdGlwYXJ0YCBvcHRpb24gdG8gYWRkClBPU1QgZmlsZXMgdG8gYSBtdWx0aXBhcnQvZm9ybS1kYXRhIHJlcXVlc3QuCgpUaGUgYGJvZHlgIG9wdGlvbiBubyBsb25nZXIgYWNjZXB0cyBhbiBhcnJheSB0byBzZW5kIFBPU1QgcmVxdWVzdHMuIFBsZWFzZSB1c2UKYG11bHRpcGFydGAgb3IgYGZvcm1fcGFyYW1zYCBpbnN0ZWFkLgoKVGhlIGBiYXNlX3VybGAgb3B0aW9uIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGJhc2VfdXJpYC4KCjQueCB0byA1LjAKLS0tLS0tLS0tLQoKIyMgUmV3cml0dGVuIEFkYXB0ZXIgTGF5ZXIKCkd1enpsZSBub3cgdXNlcyBbUmluZ1BIUF0oaHR0cDovL3JpbmdwaHAucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdCkgdG8gc2VuZApIVFRQIHJlcXVlc3RzLiBUaGUgYGFkYXB0ZXJgIG9wdGlvbiBpbiBhIGBHdXp6bGVIdHRwXENsaWVudGAgY29uc3RydWN0b3IKaXMgc3RpbGwgc3VwcG9ydGVkLCBidXQgaXQgaGFzIG5vdyBiZWVuIHJlbmFtZWQgdG8gYGhhbmRsZXJgLiBJbnN0ZWFkIG9mCnBhc3NpbmcgYSBgR3V6emxlSHR0cFxBZGFwdGVyXEFkYXB0ZXJJbnRlcmZhY2VgLCB5b3UgbXVzdCBub3cgcGFzcyBhIFBIUApgY2FsbGFibGVgIHRoYXQgZm9sbG93cyB0aGUgUmluZ1BIUCBzcGVjaWZpY2F0aW9uLgoKIyMgUmVtb3ZlZCBGbHVlbnQgSW50ZXJmYWNlcwoKW0ZsdWVudCBpbnRlcmZhY2VzIHdlcmUgcmVtb3ZlZF0oaHR0cDovL29jcmFtaXVzLmdpdGh1Yi5pby9ibG9nL2ZsdWVudC1pbnRlcmZhY2VzLWFyZS1ldmlsKQpmcm9tIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKCi0gYEd1enpsZUh0dHBcQ29sbGVjdGlvbmAKLSBgR3V6emxlSHR0cFxVcmxgCi0gYEd1enpsZUh0dHBcUXVlcnlgCi0gYEd1enpsZUh0dHBcUG9zdFxQb3N0Qm9keWAKLSBgR3V6emxlSHR0cFxDb29raWVcU2V0Q29va2llYAoKIyMgUmVtb3ZlZCBmdW5jdGlvbnMucGhwCgpSZW1vdmVkICJmdW5jdGlvbnMucGhwIiwgc28gdGhhdCBHdXp6bGUgaXMgdHJ1bHkgUFNSLTQgY29tcGxpYW50LiBUaGUgZm9sbG93aW5nCmZ1bmN0aW9ucyBjYW4gYmUgdXNlZCBhcyByZXBsYWNlbWVudHMuCgotIGBHdXp6bGVIdHRwXGpzb25fZGVjb2RlYCAtPiBgR3V6emxlSHR0cFxVdGlsczo6anNvbkRlY29kZWAKLSBgR3V6emxlSHR0cFxnZXRfcGF0aGAgLT4gYEd1enpsZUh0dHBcVXRpbHM6OmdldFBhdGhgCi0gYEd1enpsZUh0dHBcVXRpbHM6OnNldFBhdGhgIC0+IGBHdXp6bGVIdHRwXHNldF9wYXRoYAotIGBHdXp6bGVIdHRwXFBvb2w6OmJhdGNoYCAtPiBgR3V6emxlSHR0cFxiYXRjaGAuIFRoaXMgZnVuY3Rpb24gaXMsIGhvd2V2ZXIsCiAgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB1c2luZyBgR3V6emxlSHR0cFxQb29sOjpiYXRjaCgpYC4KClRoZSAicHJvY2VkdXJhbCIgZ2xvYmFsIGNsaWVudCBoYXMgYmVlbiByZW1vdmVkIHdpdGggbm8gcmVwbGFjZW1lbnQgKGUuZy4sCmBHdXp6bGVIdHRwXGdldCgpYCwgYEd1enpsZUh0dHBccG9zdCgpYCwgZXRjLikuIFVzZSBhIGBHdXp6bGVIdHRwXENsaWVudGAKb2JqZWN0IGFzIGEgcmVwbGFjZW1lbnQuCgojIyBgdGhyb3dJbW1lZGlhdGVseWAgaGFzIGJlZW4gcmVtb3ZlZAoKVGhlIGNvbmNlcHQgb2YgInRocm93SW1tZWRpYXRlbHkiIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBleGNlcHRpb25zIGFuZCBlcnJvcgpldmVudHMuIFRoaXMgY29udHJvbCBtZWNoYW5pc20gd2FzIHVzZWQgdG8gc3RvcCBhIHRyYW5zZmVyIG9mIGNvbmN1cnJlbnQKcmVxdWVzdHMgZnJvbSBjb21wbGV0aW5nLiBUaGlzIGNhbiBub3cgYmUgaGFuZGxlZCBieSB0aHJvd2luZyB0aGUgZXhjZXB0aW9uIG9yCmJ5IGNhbmNlbGxpbmcgYSBwb29sIG9mIHJlcXVlc3RzIG9yIGVhY2ggb3V0c3RhbmRpbmcgZnV0dXJlIHJlcXVlc3QKaW5kaXZpZHVhbGx5LgoKIyMgaGVhZGVycyBldmVudCBoYXMgYmVlbiByZW1vdmVkCgpSZW1vdmVkIHRoZSAiaGVhZGVycyIgZXZlbnQuIFRoaXMgZXZlbnQgd2FzIG9ubHkgdXNlZnVsIGZvciBjaGFuZ2luZyB0aGUKYm9keSBhIHJlc3BvbnNlIG9uY2UgdGhlIGhlYWRlcnMgb2YgdGhlIHJlc3BvbnNlIHdlcmUga25vd24uIFlvdSBjYW4gaW1wbGVtZW50CmEgc2ltaWxhciBiZWhhdmlvciBpbiBhIG51bWJlciBvZiB3YXlzLiBPbmUgZXhhbXBsZSBtaWdodCBiZSB0byB1c2UgYQpGblN0cmVhbSB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIHNlbnQuIEZvciBleGFtcGxlLCB3aGVuIHRoZQpmaXJzdCBieXRlIGlzIHdyaXR0ZW4sIHlvdSBjb3VsZCBjaGVjayBpZiB0aGUgcmVzcG9uc2UgaGVhZGVycyBtYXRjaCB5b3VyCmV4cGVjdGF0aW9ucywgYW5kIGlmIHNvLCBjaGFuZ2UgdGhlIGFjdHVhbCBzdHJlYW0gYm9keSB0aGF0IGlzIGJlaW5nCndyaXR0ZW4gdG8uCgojIyBVcGRhdGVzIHRvIEhUVFAgTWVzc2FnZXMKClJlbW92ZWQgdGhlIGBhc0FycmF5YCBwYXJhbWV0ZXIgZnJvbQpgR3V6emxlSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2U6OmdldEhlYWRlcmAuIElmIHlvdSB3YW50IHRvIGdldCBhIGhlYWRlcgp2YWx1ZSBhcyBhbiBhcnJheSwgdGhlbiB1c2UgdGhlIG5ld2x5IGFkZGVkIGBnZXRIZWFkZXJBc0FycmF5KClgIG1ldGhvZCBvZgpgTWVzc2FnZUludGVyZmFjZWAuIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBHdXp6bGUgaW50ZXJmYWNlcyBjb21wYXRpYmxlIHdpdGgKdGhlIFBTUi03IGludGVyZmFjZXMuCgozLnggdG8gNC4wCi0tLS0tLS0tLS0KCiMjIE92ZXJhcmNoaW5nIGNoYW5nZXM6CgotIE5vdyByZXF1aXJlcyBQSFAgNS40IG9yIGdyZWF0ZXIuCi0gTm8gbG9uZ2VyIHJlcXVpcmVzIGNVUkwgdG8gc2VuZCByZXF1ZXN0cy4KLSBHdXp6bGUgbm8gbG9uZ2VyIHdyYXBzIGV2ZXJ5IGV4Y2VwdGlvbiBpdCB0aHJvd3MuIE9ubHkgZXhjZXB0aW9ucyB0aGF0IGFyZQogIHJlY292ZXJhYmxlIGFyZSBub3cgd3JhcHBlZCBieSBHdXp6bGUuCi0gVmFyaW91cyBuYW1lc3BhY2VzIGhhdmUgYmVlbiByZW1vdmVkIG9yIHJlbmFtZWQuCi0gTm8gbG9uZ2VyIHJlcXVpcmluZyB0aGUgU3ltZm9ueSBFdmVudERpc3BhdGNoZXIuIEEgY3VzdG9tIGV2ZW50IGRpc3BhdGNoZXIKICBiYXNlZCBvbiB0aGUgU3ltZm9ueSBFdmVudERpc3BhdGNoZXIgaXMKICBub3cgdXRpbGl6ZWQgaW4gYEd1enpsZUh0dHBcRXZlbnRcRW1pdHRlckludGVyZmFjZWAgKHJlc3VsdGluZyBpbiBzaWduaWZpY2FudAogIHNwZWVkIGFuZCBmdW5jdGlvbmFsaXR5IGltcHJvdmVtZW50cykuCgpDaGFuZ2VzIHBlciBHdXp6bGUgMy54IG5hbWVzcGFjZSBhcmUgZGVzY3JpYmVkIGJlbG93LgoKIyMgQmF0Y2gKClRoZSBgR3V6emxlXEJhdGNoYCBuYW1lc3BhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gVGhpcyBpcyBiZXN0IGxlZnQgdG8KdGhpcmQtcGFydGllcyB0byBpbXBsZW1lbnQgb24gdG9wIG9mIEd1enpsZSdzIGNvcmUgSFRUUCBsaWJyYXJ5LgoKIyMgQ2FjaGUKClRoZSBgR3V6emxlXENhY2hlYCBuYW1lc3BhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gKFRvZG86IE5vIHN1aXRhYmxlIHJlcGxhY2VtZW50CmhhcyBiZWVuIGltcGxlbWVudGVkIHlldCwgYnV0IGhvcGluZyB0byB1dGlsaXplIGEgUFNSIGNhY2hlIGludGVyZmFjZSkuCgojIyBDb21tb24KCi0gUmVtb3ZlZCBhbGwgb2YgdGhlIHdyYXBwZWQgZXhjZXB0aW9ucy4gSXQncyBiZXR0ZXIgdG8gdXNlIHRoZSBzdGFuZGFyZCBQSFAKICBsaWJyYXJ5IGZvciB1bnJlY292ZXJhYmxlIGV4Y2VwdGlvbnMuCi0gYEZyb21Db25maWdJbnRlcmZhY2VgIGhhcyBiZWVuIHJlbW92ZWQuCi0gYEd1enpsZVxDb21tb25cVmVyc2lvbmAgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIFZFUlNJT04gY29uc3RhbnQgY2FuIGJlIGZvdW5kCiAgYXQgYEd1enpsZUh0dHBcQ2xpZW50SW50ZXJmYWNlOjpWRVJTSU9OYC4KCiMjIyBDb2xsZWN0aW9uCgotIGBnZXRBbGxgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBgdG9BcnJheWAgdG8gY29udmVydCBhIGNvbGxlY3Rpb24gdG8gYW4gYXJyYXkuCi0gYGluamVjdGAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBga2V5U2VhcmNoYCBoYXMgYmVlbiByZW1vdmVkLgotIGBnZXRQYXRoYCBubyBsb25nZXIgc3VwcG9ydHMgd2lsZGNhcmQgZXhwcmVzc2lvbnMuIFVzZSBzb21ldGhpbmcgYmV0dGVyIGxpa2UKICBKTUVTUGF0aCBmb3IgdGhpcy4KLSBgc2V0UGF0aGAgbm93IHN1cHBvcnRzIGFwcGVuZGluZyB0byBhbiBleGlzdGluZyBhcnJheSB2aWEgdGhlIGBbXWAgbm90YXRpb24uCgojIyMgRXZlbnRzCgpHdXp6bGUgbm8gbG9uZ2VyIHJlcXVpcmVzIFN5bWZvbnkncyBFdmVudERpc3BhdGNoZXIgY29tcG9uZW50LiBHdXp6bGUgbm93IHVzZXMKYEd1enpsZUh0dHBcRXZlbnRcRW1pdHRlcmAuCgotIGBTeW1mb255XENvbXBvbmVudFxFdmVudERpc3BhdGNoZXJcRXZlbnREaXNwYXRjaGVySW50ZXJmYWNlYCBpcyByZXBsYWNlZCBieQogIGBHdXp6bGVIdHRwXEV2ZW50XEVtaXR0ZXJJbnRlcmZhY2VgLgotIGBTeW1mb255XENvbXBvbmVudFxFdmVudERpc3BhdGNoZXJcRXZlbnREaXNwYXRjaGVyYCBpcyByZXBsYWNlZCBieQogIGBHdXp6bGVIdHRwXEV2ZW50XEVtaXR0ZXJgLgotIGBTeW1mb255XENvbXBvbmVudFxFdmVudERpc3BhdGNoZXJcRXZlbnRgIGlzIHJlcGxhY2VkIGJ5CiAgYEd1enpsZUh0dHBcRXZlbnRcRXZlbnRgLCBhbmQgR3V6emxlIG5vdyBoYXMgYW4gRXZlbnRJbnRlcmZhY2UgaW4KICBgR3V6emxlSHR0cFxFdmVudFxFdmVudEludGVyZmFjZWAuCi0gYEFic3RyYWN0SGFzRGlzcGF0Y2hlcmAgaGFzIG1vdmVkIHRvIGEgdHJhaXQsIGBIYXNFbWl0dGVyVHJhaXRgLCBhbmQKICBgSGFzRGlzcGF0Y2hlckludGVyZmFjZWAgaGFzIG1vdmVkIHRvIGBIYXNFbWl0dGVySW50ZXJmYWNlYC4gUmV0cmlldmluZyB0aGUKICBldmVudCBlbWl0dGVyIG9mIGEgcmVxdWVzdCwgY2xpZW50LCBldGMuIG5vdyB1c2VzIHRoZSBgZ2V0RW1pdHRlcmAgbWV0aG9kCiAgcmF0aGVyIHRoYW4gdGhlIGBnZXREaXNwYXRjaGVyYCBtZXRob2QuCgojIyMjIEVtaXR0ZXIKCi0gVXNlIHRoZSBgb25jZSgpYCBtZXRob2QgdG8gYWRkIGEgbGlzdGVuZXIgdGhhdCBhdXRvbWF0aWNhbGx5IHJlbW92ZXMgaXRzZWxmCiAgdGhlIGZpcnN0IHRpbWUgaXQgaXMgaW52b2tlZC4KLSBVc2UgdGhlIGBsaXN0ZW5lcnMoKWAgbWV0aG9kIHRvIHJldHJpZXZlIGEgbGlzdCBvZiBldmVudCBsaXN0ZW5lcnMgcmF0aGVyIHRoYW4KICB0aGUgYGdldExpc3RlbmVycygpYCBtZXRob2QuCi0gVXNlIGBlbWl0KClgIGluc3RlYWQgb2YgYGRpc3BhdGNoKClgIHRvIGVtaXQgYW4gZXZlbnQgZnJvbSBhbiBlbWl0dGVyLgotIFVzZSBgYXR0YWNoKClgIGluc3RlYWQgb2YgYGFkZFN1YnNjcmliZXIoKWAgYW5kIGBkZXRhY2goKWAgaW5zdGVhZCBvZgogIGByZW1vdmVTdWJzY3JpYmVyKClgLgoKYGBgcGhwCiRtb2NrID0gbmV3IE1vY2soKTsKLy8gMy54CiRyZXF1ZXN0LT5nZXRFdmVudERpc3BhdGNoZXIoKS0+YWRkU3Vic2NyaWJlcigkbW9jayk7CiRyZXF1ZXN0LT5nZXRFdmVudERpc3BhdGNoZXIoKS0+cmVtb3ZlU3Vic2NyaWJlcigkbW9jayk7Ci8vIDQueAokcmVxdWVzdC0+Z2V0RW1pdHRlcigpLT5hdHRhY2goJG1vY2spOwokcmVxdWVzdC0+Z2V0RW1pdHRlcigpLT5kZXRhY2goJG1vY2spOwpgYGAKClVzZSB0aGUgYG9uKClgIG1ldGhvZCB0byBhZGQgYSBsaXN0ZW5lciByYXRoZXIgdGhhbiB0aGUgYGFkZExpc3RlbmVyKClgIG1ldGhvZC4KCmBgYHBocAovLyAzLngKJHJlcXVlc3QtPmdldEV2ZW50RGlzcGF0Y2hlcigpLT5hZGRMaXN0ZW5lcignZm9vJywgZnVuY3Rpb24gKEV2ZW50ICRldmVudCkgeyAvKiAuLi4gKi8gfSApOwovLyA0LngKJHJlcXVlc3QtPmdldEVtaXR0ZXIoKS0+b24oJ2ZvbycsIGZ1bmN0aW9uIChFdmVudCAkZXZlbnQsICRuYW1lKSB7IC8qIC4uLiAqLyB9ICk7CmBgYAoKIyMgSHR0cAoKIyMjIEdlbmVyYWwgY2hhbmdlcwoKLSBUaGUgY2FjZXJ0LnBlbSBjZXJ0aWZpY2F0ZSBoYXMgYmVlbiBtb3ZlZCB0byBgc3JjL2NhY2VydC5wZW1gLgotIEFkZGVkIHRoZSBjb25jZXB0IG9mIGFkYXB0ZXJzIHRoYXQgYXJlIHVzZWQgdG8gdHJhbnNmZXIgcmVxdWVzdHMgb3ZlciB0aGUKICB3aXJlLgotIFNpbXBsaWZpZWQgdGhlIGV2ZW50IHN5c3RlbS4KLSBTZW5kaW5nIHJlcXVlc3RzIGluIHBhcmFsbGVsIGlzIHN0aWxsIHBvc3NpYmxlLCBidXQgYmF0Y2hpbmcgaXMgbm8gbG9uZ2VyIGEKICBjb25jZXB0IG9mIHRoZSBIVFRQIGxheWVyLiBJbnN0ZWFkLCB5b3UgbXVzdCB1c2UgdGhlIGBjb21wbGV0ZWAgYW5kIGBlcnJvcmAKICBldmVudHMgdG8gYXN5bmNocm9ub3VzbHkgbWFuYWdlIHBhcmFsbGVsIHJlcXVlc3QgdHJhbnNmZXJzLgotIGBHdXp6bGVcSHR0cFxVcmxgIGhhcyBtb3ZlZCB0byBgR3V6emxlSHR0cFxVcmxgLgotIGBHdXp6bGVcSHR0cFxRdWVyeVN0cmluZ2AgaGFzIG1vdmVkIHRvIGBHdXp6bGVIdHRwXFF1ZXJ5YC4KLSBRdWVyeUFnZ3JlZ2F0b3JzIGhhdmUgYmVlbiByZXdyaXR0ZW4gc28gdGhhdCB0aGV5IGFyZSBzaW1wbHkgY2FsbGFibGUKICBmdW5jdGlvbnMuCi0gYEd1enpsZUh0dHBcU3RhdGljQ2xpZW50YCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGZ1bmN0aW9ucyBwcm92aWRlZCBpbgogIGBmdW5jdGlvbnMucGhwYCBmb3IgYW4gZWFzeSB0byB1c2Ugc3RhdGljIGNsaWVudCBpbnN0YW5jZS4KLSBFeGNlcHRpb25zIGluIGBHdXp6bGVIdHRwXEV4Y2VwdGlvbmAgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gYWxsIGV4dGVuZCBmcm9tCiAgYEd1enpsZUh0dHBcRXhjZXB0aW9uXFRyYW5zZmVyRXhjZXB0aW9uYC4KCiMjIyBDbGllbnQKCkNhbGxpbmcgbWV0aG9kcyBsaWtlIGBnZXQoKWAsIGBwb3N0KClgLCBgaGVhZCgpYCwgZXRjLiBubyBsb25nZXIgY3JlYXRlIGFuZApyZXR1cm4gYSByZXF1ZXN0LCBidXQgcmF0aGVyIGNyZWF0ZXMgYSByZXF1ZXN0LCBzZW5kcyB0aGUgcmVxdWVzdCwgYW5kIHJldHVybnMKdGhlIHJlc3BvbnNlLgoKYGBgcGhwCi8vIDMuMAokcmVxdWVzdCA9ICRjbGllbnQtPmdldCgnLycpOwokcmVzcG9uc2UgPSAkcmVxdWVzdC0+c2VuZCgpOwoKLy8gNC4wCiRyZXNwb25zZSA9ICRjbGllbnQtPmdldCgnLycpOwoKLy8gb3IsIHRvIG1pcnJvciB0aGUgcHJldmlvdXMgYmVoYXZpb3IKJHJlcXVlc3QgPSAkY2xpZW50LT5jcmVhdGVSZXF1ZXN0KCdHRVQnLCAnLycpOwokcmVzcG9uc2UgPSAkY2xpZW50LT5zZW5kKCRyZXF1ZXN0KTsKYGBgCgpgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2VgIGhhcyBjaGFuZ2VkLgoKLSBUaGUgYHNlbmRgIG1ldGhvZCBubyBsb25nZXIgYWNjZXB0cyBtb3JlIHRoYW4gb25lIHJlcXVlc3QuIFVzZSBgc2VuZEFsbGAgdG8KICBzZW5kIG11bHRpcGxlIHJlcXVlc3RzIGluIHBhcmFsbGVsLgotIGBzZXRVc2VyQWdlbnQoKWAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGEgZGVmYXVsdCByZXF1ZXN0IG9wdGlvbiBpbnN0ZWFkLiBZb3UKICBjb3VsZCwgZm9yIGV4YW1wbGUsIGRvIHNvbWV0aGluZyBsaWtlOgogIGAkY2xpZW50LT5zZXRDb25maWcoJ2RlZmF1bHRzL2hlYWRlcnMvVXNlci1BZ2VudCcsICdGb28vQmFyICcgLiAkY2xpZW50OjpnZXREZWZhdWx0VXNlckFnZW50KCkpYC4KLSBgc2V0U3NsVmVyaWZpY2F0aW9uKClgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBkZWZhdWx0IHJlcXVlc3Qgb3B0aW9ucyBpbnN0ZWFkLAogIGxpa2UgYCRjbGllbnQtPnNldENvbmZpZygnZGVmYXVsdHMvdmVyaWZ5JywgdHJ1ZSlgLgoKYEd1enpsZUh0dHBcQ2xpZW50YCBoYXMgY2hhbmdlZC4KCi0gVGhlIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIG9ubHkgYW4gYXNzb2NpYXRpdmUgYXJyYXkuIFlvdSBjYW4gaW5jbHVkZSBhCiAgYGJhc2VfdXJsYCBzdHJpbmcgb3IgYXJyYXkgdG8gdXNlIGEgVVJJIHRlbXBsYXRlIGFzIHRoZSBiYXNlIFVSTCBvZiBhIGNsaWVudC4KICBZb3UgY2FuIGFsc28gc3BlY2lmeSBhIGBkZWZhdWx0c2Aga2V5IHRoYXQgaXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgZGVmYXVsdAogIHJlcXVlc3Qgb3B0aW9ucy4gWW91IGNhbiBwYXNzIGFuIGBhZGFwdGVyYCB0byB1c2UgYSBjdXN0b20gYWRhcHRlciwKICBgYmF0Y2hfYWRhcHRlcmAgdG8gdXNlIGEgY3VzdG9tIGFkYXB0ZXIgZm9yIHNlbmRpbmcgcmVxdWVzdHMgaW4gcGFyYWxsZWwsIG9yCiAgYSBgbWVzc2FnZV9mYWN0b3J5YCB0byBjaGFuZ2UgdGhlIGZhY3RvcnkgdXNlZCB0byBjcmVhdGUgSFRUUCByZXF1ZXN0cyBhbmQKICByZXNwb25zZXMuCi0gVGhlIGNsaWVudCBubyBsb25nZXIgZW1pdHMgYSBgY2xpZW50LmNyZWF0ZV9yZXF1ZXN0YCBldmVudC4KLSBDcmVhdGluZyByZXF1ZXN0cyB3aXRoIGEgY2xpZW50IG5vIGxvbmdlciBhdXRvbWF0aWNhbGx5IHV0aWxpemUgYSBVUkkKICB0ZW1wbGF0ZS4gWW91IG11c3QgcGFzcyBhbiBhcnJheSBpbnRvIGEgY3JlYXRpb25hbCBtZXRob2QgKGUuZy4sCiAgYGNyZWF0ZVJlcXVlc3RgLCBgZ2V0YCwgYHB1dGAsIGV0Yy4pIGluIG9yZGVyIHRvIGV4cGFuZCBhIFVSSSB0ZW1wbGF0ZS4KCiMjIyBNZXNzYWdlcwoKTWVzc2FnZXMgbm8gbG9uZ2VyIGhhdmUgcmVmZXJlbmNlcyB0byB0aGVpciBjb3VudGVycGFydHMgKGkuZS4sIGEgcmVxdWVzdCBubwpsb25nZXIgaGFzIGEgcmVmZXJlbmNlIHRvIGl0J3MgcmVzcG9uc2UsIGFuZCBhIHJlc3BvbnNlIG5vIGxvZ2VyIGhhcyBhCnJlZmVyZW5jZSB0byBpdHMgcmVxdWVzdCkuIFRoaXMgYXNzb2NpYXRpb24gaXMgbm93IG1hbmFnZWQgdGhyb3VnaCBhCmBHdXp6bGVIdHRwXEFkYXB0ZXJcVHJhbnNhY3Rpb25JbnRlcmZhY2VgIG9iamVjdC4gWW91IGNhbiBnZXQgcmVmZXJlbmNlcyB0bwp0aGVzZSB0cmFuc2FjdGlvbiBvYmplY3RzIHVzaW5nIHJlcXVlc3QgZXZlbnRzIHRoYXQgYXJlIGVtaXR0ZWQgb3ZlciB0aGUKbGlmZWN5Y2xlIG9mIGEgcmVxdWVzdC4KCiMjIyMgUmVxdWVzdHMgd2l0aCBhIGJvZHkKCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0YCBhbmQKICBgR3V6emxlSHR0cFxNZXNzYWdlXEVudGl0eUVuY2xvc2luZ1JlcXVlc3RJbnRlcmZhY2VgIGhhdmUgYmVlbiByZW1vdmVkLiBUaGUKICBzZXBhcmF0aW9uIGJldHdlZW4gcmVxdWVzdHMgdGhhdCBjb250YWluIGEgYm9keSBhbmQgcmVxdWVzdHMgdGhhdCBkbyBub3QKICBjb250YWluIGEgYm9keSBoYXMgYmVlbiByZW1vdmVkLCBhbmQgbm93IGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAKICBoYW5kbGVzIGJvdGggdXNlIGNhc2VzLgotIEFueSBtZXRob2QgdGhhdCBwcmV2aW91c2x5IGFjY2VwdHMgYSBgR3V6emxlSHR0cFxSZXNwb25zZWAgb2JqZWN0IG5vdyBhY2NlcHQgYQogIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2VgLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2VgIGhhcyBiZWVuIHJlbmFtZWQgdG8KICBgR3V6emxlSHR0cFxNZXNzYWdlXE1lc3NhZ2VGYWN0b3J5SW50ZXJmYWNlYC4gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCB0byBjcmVhdGUKICBib3RoIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgYW5kIGlzIGltcGxlbWVudGVkIGluCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxNZXNzYWdlRmFjdG9yeWAuCi0gUE9TVCBmaWVsZCBhbmQgZmlsZSBtZXRob2RzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIHJlcXVlc3Qgb2JqZWN0LiBZb3UKICBtdXN0IG5vdyB1c2UgdGhlIG1ldGhvZHMgbWFkZSBhdmFpbGFibGUgdG8gYEd1enpsZUh0dHBcUG9zdFxQb3N0Qm9keUludGVyZmFjZWAKICB0byBjb250cm9sIHRoZSBmb3JtYXQgb2YgYSBQT1NUIGJvZHkuIFJlcXVlc3RzIHRoYXQgYXJlIGNyZWF0ZWQgdXNpbmcgYQogIHN0YW5kYXJkIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3RvcnlJbnRlcmZhY2VgIHdpbGwgYXV0b21hdGljYWxseSB1c2UKICBhIGBHdXp6bGVIdHRwXFBvc3RcUG9zdEJvZHlgIGJvZHkgaWYgdGhlIGJvZHkgd2FzIHBhc3NlZCBhcyBhbiBhcnJheSBvciBpZgogIHRoZSBtZXRob2QgaXMgUE9TVCBhbmQgbm8gYm9keSBpcyBwcm92aWRlZC4KCmBgYHBocAokcmVxdWVzdCA9ICRjbGllbnQtPmNyZWF0ZVJlcXVlc3QoJ1BPU1QnLCAnLycpOwokcmVxdWVzdC0+Z2V0Qm9keSgpLT5zZXRGaWVsZCgnZm9vJywgJ2JhcicpOwokcmVxdWVzdC0+Z2V0Qm9keSgpLT5hZGRGaWxlKG5ldyBQb3N0RmlsZSgnZmlsZV9rZXknLCBmb3BlbignL3BhdGgvdG8vY29udGVudCcsICdyJykpKTsKYGBgCgojIyMjIEhlYWRlcnMKCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxIZWFkZXJgIGhhcyBiZWVuIHJlbW92ZWQuIEhlYWRlciB2YWx1ZXMgYXJlIG5vdyBzaW1wbHkKICByZXByZXNlbnRlZCBieSBhbiBhcnJheSBvZiB2YWx1ZXMgb3IgYXMgYSBzdHJpbmcuIEhlYWRlciB2YWx1ZXMgYXJlIHJldHVybmVkCiAgYXMgYSBzdHJpbmcgYnkgZGVmYXVsdCB3aGVuIHJldHJpZXZpbmcgYSBoZWFkZXIgdmFsdWUgZnJvbSBhIG1lc3NhZ2UuIFlvdSBjYW4KICBwYXNzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IG9mIGB0cnVlYCB0byByZXRyaWV2ZSBhIGhlYWRlciB2YWx1ZSBhcyBhbiBhcnJheQogIG9mIHN0cmluZ3MgaW5zdGVhZCBvZiBhIHNpbmdsZSBjb25jYXRlbmF0ZWQgc3RyaW5nLgotIGBHdXp6bGVIdHRwXFBvc3RGaWxlYCBhbmQgYEd1enpsZUh0dHBcUG9zdEZpbGVJbnRlcmZhY2VgIGhhdmUgYmVlbiBtb3ZlZCB0bwogIGBHdXp6bGVIdHRwXFBvc3RgLiBUaGlzIGludGVyZmFjZSBoYXMgYmVlbiBzaW1wbGlmaWVkIGFuZCBub3cgYWxsb3dzIHRoZQogIGFkZGl0aW9uIG9mIGFyYml0cmFyeSBoZWFkZXJzLgotIEN1c3RvbSBoZWFkZXJzIGxpa2UgYEd1enpsZUh0dHBcTWVzc2FnZVxIZWFkZXJcTGlua2AgaGF2ZSBiZWVuIHJlbW92ZWQuIE1vc3QKICBvZiB0aGUgY3VzdG9tIGhlYWRlcnMgYXJlIG5vdyBoYW5kbGVkIHNlcGFyYXRlbHkgaW4gc3BlY2lmaWMKICBzdWJzY3JpYmVycy9wbHVnaW5zLCBhbmQgYEd1enpsZUh0dHBcTWVzc2FnZVxIZWFkZXJWYWx1ZXM6OnBhcnNlUGFyYW1zKClgIGhhcwogIGJlZW4gdXBkYXRlZCB0byBwcm9wZXJseSBoYW5kbGUgaGVhZGVycyB0aGF0IGNvbnRhaW4gcGFyYW1ldGVycyAobGlrZSB0aGUKICBgTGlua2AgaGVhZGVyKS4KCiMjIyMgUmVzcG9uc2VzCgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmdldEluZm8oKWAgYW5kCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6c2V0SW5mbygpYCBoYXZlIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBldmVudAogIHN5c3RlbSB0byByZXRyaWV2ZSB0aGlzIHR5cGUgb2YgaW5mb3JtYXRpb24uCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0UmF3SGVhZGVycygpYCBoYXMgYmVlbiByZW1vdmVkLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmdldE1lc3NhZ2UoKWAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpjYWxjdWxhdGVBZ2UoKWAgYW5kIG90aGVyIGNhY2hlIHNwZWNpZmljCiAgbWV0aG9kcyBoYXZlIG1vdmVkIHRvIHRoZSBDYWNoZVN1YnNjcmliZXIuCi0gSGVhZGVyIHNwZWNpZmljIGhlbHBlciBmdW5jdGlvbnMgbGlrZSBgZ2V0Q29udGVudE1kNSgpYCBoYXZlIGJlZW4gcmVtb3ZlZC4KICBKdXN0IHVzZSBgZ2V0SGVhZGVyKCdDb250ZW50LU1ENScpYCBpbnN0ZWFkLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OnNldFJlcXVlc3QoKWAgYW5kCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0UmVxdWVzdCgpYCBoYXZlIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZSBldmVudAogIHN5c3RlbSB0byB3b3JrIHdpdGggcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyBhcyBhIHRyYW5zYWN0aW9uLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmdldFJlZGlyZWN0Q291bnQoKWAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIHRoZQogIFJlZGlyZWN0IHN1YnNjcmliZXIgaW5zdGVhZC4KLSBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjppc1N1Y2Nlc3NmdWwoKWAgYW5kIG90aGVyIHJlbGF0ZWQgbWV0aG9kcyBoYXZlCiAgYmVlbiByZW1vdmVkLiBVc2UgYGdldFN0YXR1c0NvZGUoKWAgaW5zdGVhZC4KCiMjIyMgU3RyZWFtaW5nIHJlc3BvbnNlcwoKU3RyZWFtaW5nIHJlcXVlc3RzIGNhbiBub3cgYmUgY3JlYXRlZCBieSBhIGNsaWVudCBkaXJlY3RseSwgcmV0dXJuaW5nIGEKYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZWAgb2JqZWN0IHRoYXQgY29udGFpbnMgYSBib2R5IHN0cmVhbQpyZWZlcmVuY2luZyBhbiBvcGVuIFBIUCBIVFRQIHN0cmVhbS4KCmBgYHBocAovLyAzLjAKdXNlIEd1enpsZVxTdHJlYW1cUGhwU3RyZWFtUmVxdWVzdEZhY3Rvcnk7CiRyZXF1ZXN0ID0gJGNsaWVudC0+Z2V0KCcvJyk7CiRmYWN0b3J5ID0gbmV3IFBocFN0cmVhbVJlcXVlc3RGYWN0b3J5KCk7CiRzdHJlYW0gPSAkZmFjdG9yeS0+ZnJvbVJlcXVlc3QoJHJlcXVlc3QpOwokZGF0YSA9ICRzdHJlYW0tPnJlYWQoMTAyNCk7CgovLyA0LjAKJHJlc3BvbnNlID0gJGNsaWVudC0+Z2V0KCcvJywgWydzdHJlYW0nID0+IHRydWVdKTsKLy8gUmVhZCBzb21lIGRhdGEgb2ZmIG9mIHRoZSBzdHJlYW0gaW4gdGhlIHJlc3BvbnNlIGJvZHkKJGRhdGEgPSAkcmVzcG9uc2UtPmdldEJvZHkoKS0+cmVhZCgxMDI0KTsKYGBgCgojIyMjIFJlZGlyZWN0cwoKVGhlIGBjb25maWd1cmVSZWRpcmVjdHMoKWAgbWV0aG9kIGhhcyBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YgYQpgYWxsb3dfcmVkaXJlY3RzYCByZXF1ZXN0IG9wdGlvbi4KCmBgYHBocAovLyBTdGFuZGFyZCByZWRpcmVjdHMgd2l0aCBhIGRlZmF1bHQgb2YgYSBtYXggb2YgNSByZWRpcmVjdHMKJHJlcXVlc3QgPSAkY2xpZW50LT5jcmVhdGVSZXF1ZXN0KCdHRVQnLCAnLycsIFsnYWxsb3dfcmVkaXJlY3RzJyA9PiB0cnVlXSk7CgovLyBTdHJpY3QgcmVkaXJlY3RzIHdpdGggYSBjdXN0b20gbnVtYmVyIG9mIHJlZGlyZWN0cwokcmVxdWVzdCA9ICRjbGllbnQtPmNyZWF0ZVJlcXVlc3QoJ0dFVCcsICcvJywgWwogICAgJ2FsbG93X3JlZGlyZWN0cycgPT4gWydtYXgnID0+IDUsICdzdHJpY3QnID0+IHRydWVdCl0pOwpgYGAKCiMjIyMgRW50aXR5Qm9keQoKRW50aXR5Qm9keSBpbnRlcmZhY2VzIGFuZCBjbGFzc2VzIGhhdmUgYmVlbiByZW1vdmVkIG9yIG1vdmVkIHRvCmBHdXp6bGVIdHRwXFN0cmVhbWAuIEFsbCBjbGFzc2VzIGFuZCBpbnRlcmZhY2VzIHRoYXQgb25jZSByZXF1aXJlZApgR3V6emxlSHR0cFxFbnRpdHlCb2R5SW50ZXJmYWNlYCBub3cgcmVxdWlyZQpgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlYC4gQ3JlYXRpbmcgYSBuZXcgYm9keSBmb3IgYSByZXF1ZXN0IG5vCmxvbmdlciB1c2VzIGBHdXp6bGVIdHRwXEVudGl0eUJvZHk6OmZhY3RvcnlgIGJ1dCBub3cgdXNlcwpgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtOjpmYWN0b3J5YCBvciBldmVuIGJldHRlcjoKYEd1enpsZUh0dHBcU3RyZWFtXGNyZWF0ZSgpYC4KCi0gYEd1enpsZVxIdHRwXEVudGl0eUJvZHlJbnRlcmZhY2VgIGlzIG5vdyBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlYAotIGBHdXp6bGVcSHR0cFxFbnRpdHlCb2R5YCBpcyBub3cgYEd1enpsZUh0dHBcU3RyZWFtXFN0cmVhbWAKLSBgR3V6emxlXEh0dHBcQ2FjaGluZ0VudGl0eUJvZHlgIGlzIG5vdyBgR3V6emxlSHR0cFxTdHJlYW1cQ2FjaGluZ1N0cmVhbWAKLSBgR3V6emxlXEh0dHBcUmVhZExpbWl0RW50aXR5Qm9keWAgaXMgbm93IGBHdXp6bGVIdHRwXFN0cmVhbVxMaW1pdFN0cmVhbWAKLSBgR3V6emxlXEh0dHBcSW9FbWl0dHlpbkVudGl0eUJvZHlgIGhhcyBiZWVuIHJlbW92ZWQuCgojIyMjIFJlcXVlc3QgbGlmZWN5Y2xlIGV2ZW50cwoKUmVxdWVzdHMgcHJldmlvdXNseSBzdWJtaXR0ZWQgYSBsYXJnZSBudW1iZXIgb2YgcmVxdWVzdHMuIFRoZSBudW1iZXIgb2YgZXZlbnRzCmVtaXR0ZWQgb3ZlciB0aGUgbGlmZWN5Y2xlIG9mIGEgcmVxdWVzdCBoYXMgYmVlbiBzaWduaWZpY2FudGx5IHJlZHVjZWQgdG8gbWFrZQppdCBlYXNpZXIgdG8gdW5kZXJzdGFuZCBob3cgdG8gZXh0ZW5kIHRoZSBiZWhhdmlvciBvZiBhIHJlcXVlc3QuIEFsbCBldmVudHMKZW1pdHRlZCBkdXJpbmcgdGhlIGxpZmVjeWNsZSBvZiBhIHJlcXVlc3Qgbm93IGVtaXQgYSBjdXN0b20KYEd1enpsZUh0dHBcRXZlbnRcRXZlbnRJbnRlcmZhY2VgIG9iamVjdCB0aGF0IGNvbnRhaW5zIGNvbnRleHQgcHJvdmlkaW5nCm1ldGhvZHMgYW5kIGEgd2F5IGluIHdoaWNoIHRvIG1vZGlmeSB0aGUgdHJhbnNhY3Rpb24gYXQgdGhhdCBzcGVjaWZpYyBwb2ludCBpbgp0aW1lIChlLmcuLCBpbnRlcmNlcHQgdGhlIHJlcXVlc3QgYW5kIHNldCBhIHJlc3BvbnNlIG9uIHRoZSB0cmFuc2FjdGlvbikuCgotIGByZXF1ZXN0LmJlZm9yZV9zZW5kYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBiZWZvcmVgIGFuZCBub3cgZW1pdHMgYQogIGBHdXp6bGVIdHRwXEV2ZW50XEJlZm9yZUV2ZW50YAotIGByZXF1ZXN0LmNvbXBsZXRlYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBjb21wbGV0ZWAgYW5kIG5vdyBlbWl0cyBhCiAgYEd1enpsZUh0dHBcRXZlbnRcQ29tcGxldGVFdmVudGAuCi0gYHJlcXVlc3Quc2VudGAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGBjb21wbGV0ZWAuCi0gYHJlcXVlc3Quc3VjY2Vzc2AgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGBjb21wbGV0ZWAuCi0gYGVycm9yYCBpcyBub3cgYW4gZXZlbnQgdGhhdCBlbWl0cyBhIGBHdXp6bGVIdHRwXEV2ZW50XEVycm9yRXZlbnRgLgotIGByZXF1ZXN0LmV4Y2VwdGlvbmAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGBlcnJvcmAuCi0gYHJlcXVlc3QucmVjZWl2ZS5zdGF0dXNfbGluZWAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBgY3VybC5jYWxsYmFjay5wcm9ncmVzc2AgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGEgY3VzdG9tIGBTdHJlYW1JbnRlcmZhY2VgIHRvCiAgbWFpbnRhaW4gYSBzdGF0dXMgdXBkYXRlLgotIGBjdXJsLmNhbGxiYWNrLndyaXRlYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYSBjdXN0b20gYFN0cmVhbUludGVyZmFjZWAgdG8KICBpbnRlcmNlcHQgd3JpdGVzLgotIGBjdXJsLmNhbGxiYWNrLnJlYWRgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhIGN1c3RvbSBgU3RyZWFtSW50ZXJmYWNlYCB0bwogIGludGVyY2VwdCByZWFkcy4KCmBoZWFkZXJzYCBpcyBhIG5ldyBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYWZ0ZXIgdGhlIHJlc3BvbnNlIGhlYWRlcnMgb2YgYQpyZXF1ZXN0IGhhdmUgYmVlbiByZWNlaXZlZCBiZWZvcmUgdGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlIGlzIGRvd25sb2FkZWQuIFRoaXMKZXZlbnQgZW1pdHMgYSBgR3V6emxlSHR0cFxFdmVudFxIZWFkZXJzRXZlbnRgLgoKWW91IGNhbiBpbnRlcmNlcHQgYSByZXF1ZXN0IGFuZCBpbmplY3QgYSByZXNwb25zZSB1c2luZyB0aGUgYGludGVyY2VwdCgpYCBldmVudApvZiBhIGBHdXp6bGVIdHRwXEV2ZW50XEJlZm9yZUV2ZW50YCwgYEd1enpsZUh0dHBcRXZlbnRcQ29tcGxldGVFdmVudGAsIGFuZApgR3V6emxlSHR0cFxFdmVudFxFcnJvckV2ZW50YCBldmVudC4KClNlZTogaHR0cDovL2RvY3MuZ3V6emxlcGhwLm9yZy9lbi9sYXRlc3QvZXZlbnRzLmh0bWwKCiMjIEluZmxlY3Rpb24KClRoZSBgR3V6emxlXEluZmxlY3Rpb25gIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLiBUaGlzIGlzIG5vdCBhIGNvcmUgY29uY2VybgpvZiBHdXp6bGUuCgojIyBJdGVyYXRvcgoKVGhlIGBHdXp6bGVcSXRlcmF0b3JgIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLgoKLSBgR3V6emxlXEl0ZXJhdG9yXEFwcGVuZEl0ZXJhdG9yYCwgYEd1enpsZVxJdGVyYXRvclxDaHVua2VkSXRlcmF0b3JgLCBhbmQKICBgR3V6emxlXEl0ZXJhdG9yXE1ldGhvZFByb3h5SXRlcmF0b3JgIGFyZSBuaWNlLCBidXQgbm90IGEgY29yZSByZXF1aXJlbWVudCBvZgogIEd1enpsZSBpdHNlbGYuCi0gYEd1enpsZVxJdGVyYXRvclxGaWx0ZXJJdGVyYXRvcmAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBiZWNhdXNlIGFuIGVxdWl2YWxlbnQKICBjbGFzcyBpcyBzaGlwcGVkIHdpdGggUEhQIDUuNC4KLSBgR3V6emxlXEl0ZXJhdG9yXE1hcEl0ZXJhdG9yYCBpcyBub3QgcmVhbGx5IG5lZWRlZCB3aGVuIHVzaW5nIFBIUCA1LjUgYmVjYXVzZQogIGl0J3MgZWFzaWVyIHRvIGp1c3Qgd3JhcCBhbiBpdGVyYXRvciBpbiBhIGdlbmVyYXRvciB0aGF0IG1hcHMgdmFsdWVzLgoKRm9yIGEgcmVwbGFjZW1lbnQgb2YgdGhlc2UgaXRlcmF0b3JzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25pa2ljL2l0ZXIKCiMjIExvZwoKVGhlIExvZ1BsdWdpbiBoYXMgbW92ZWQgdG8gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9sb2ctc3Vic2NyaWJlci4gVGhlCmBHdXp6bGVcTG9nYCBuYW1lc3BhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gR3V6emxlIG5vdyByZWxpZXMgb24KYFBzclxMb2dcTG9nZ2VySW50ZXJmYWNlYCBmb3IgYWxsIGxvZ2dpbmcuIFRoZSBNZXNzYWdlRm9ybWF0dGVyIGNsYXNzIGhhcyBiZWVuCm1vdmVkIHRvIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcTG9nXEZvcm1hdHRlcmAuCgojIyBQYXJzZXIKClRoZSBgR3V6emxlXFBhcnNlcmAgbmFtZXNwYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFRoaXMgd2FzIHByZXZpb3VzbHkgdXNlZCB0bwptYWtlIGl0IHBvc3NpYmxlIHRvIHBsdWcgaW4gY3VzdG9tIHBhcnNlcnMgZm9yIGNvb2tpZXMsIG1lc3NhZ2VzLCBVUkkKdGVtcGxhdGVzLCBhbmQgVVJMczsgaG93ZXZlciwgdGhpcyBsZXZlbCBvZiBjb21wbGV4aXR5IGlzIG5vdCBuZWVkZWQgaW4gR3V6emxlCnNvIGl0IGhhcyBiZWVuIHJlbW92ZWQuCgotIENvb2tpZTogQ29va2llIHBhcnNpbmcgbG9naWMgaGFzIGJlZW4gbW92ZWQgdG8KICBgR3V6emxlSHR0cFxDb29raWVcU2V0Q29va2llOjpmcm9tU3RyaW5nYC4KLSBNZXNzYWdlOiBNZXNzYWdlIHBhcnNpbmcgbG9naWMgZm9yIGJvdGggcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBoYXMgYmVlbiBtb3ZlZAogIHRvIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3Rvcnk6OmZyb21NZXNzYWdlYC4gTWVzc2FnZSBwYXJzaW5nIGlzIG9ubHkKICB1c2VkIGluIGRlYnVnZ2luZyBvciBkZXNlcmlhbGl6aW5nIG1lc3NhZ2VzLCBzbyBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yCiAgR3V6emxlIGFzIGEgbGlicmFyeSB0byBhZGQgdGhpcyBsZXZlbCBvZiBjb21wbGV4aXR5IHRvIHBhcnNpbmcgbWVzc2FnZXMuCi0gVXJpVGVtcGxhdGU6IFVSSSB0ZW1wbGF0ZSBwYXJzaW5nIGhhcyBiZWVuIG1vdmVkIHRvCiAgYEd1enpsZUh0dHBcVXJpVGVtcGxhdGVgLiBUaGUgR3V6emxlIGxpYnJhcnkgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgUEVDTAogIFVSSSB0ZW1wbGF0ZSBsaWJyYXJ5IGlmIGl0IGlzIGluc3RhbGxlZC4KLSBVcmw6IFVSTCBwYXJzaW5nIGlzIG5vdyBwZXJmb3JtZWQgaW4gYEd1enpsZUh0dHBcVXJsOjpmcm9tU3RyaW5nYCAocHJldmlvdXNseQogIGl0IHdhcyBgR3V6emxlXEh0dHBcVXJsOjpmYWN0b3J5KClgKS4gSWYgY3VzdG9tIFVSTCBwYXJzaW5nIGlzIG5lY2Vzc2FyeSwKICB0aGVuIGRldmVsb3BlcnMgYXJlIGZyZWUgdG8gc3ViY2xhc3MgYEd1enpsZUh0dHBcVXJsYC4KCiMjIFBsdWdpbgoKVGhlIGBHdXp6bGVcUGx1Z2luYCBuYW1lc3BhY2UgaGFzIGJlZW4gcmVuYW1lZCB0byBgR3V6emxlSHR0cFxTdWJzY3JpYmVyYC4KU2V2ZXJhbCBwbHVnaW5zIGFyZSBzaGlwcGluZyB3aXRoIHRoZSBjb3JlIEd1enpsZSBsaWJyYXJ5IHVuZGVyIHRoaXMgbmFtZXNwYWNlLgoKLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXENvb2tpZWA6IFJlcGxhY2VzIHRoZSBvbGQgQ29va2llUGx1Z2luLiBDb29raWUgamFyCiAgY29kZSBoYXMgbW92ZWQgdG8gYEd1enpsZUh0dHBcQ29va2llYC4KLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXEhpc3RvcnlgOiBSZXBsYWNlcyB0aGUgb2xkIEhpc3RvcnlQbHVnaW4uCi0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxIdHRwRXJyb3JgOiBUaHJvd3MgZXJyb3JzIHdoZW4gYSBiYWQgSFRUUCByZXNwb25zZSBpcwogIHJlY2VpdmVkLgotIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcTW9ja2A6IFJlcGxhY2VzIHRoZSBvbGQgTW9ja1BsdWdpbi4KLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXFByZXBhcmVgOiBQcmVwYXJlcyB0aGUgYm9keSBvZiBhIHJlcXVlc3QganVzdCBiZWZvcmUKICBzZW5kaW5nLiBUaGlzIHN1YnNjcmliZXIgaXMgYXR0YWNoZWQgdG8gYWxsIHJlcXVlc3RzIGJ5IGRlZmF1bHQuCi0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxSZWRpcmVjdGA6IFJlcGxhY2VzIHRoZSBSZWRpcmVjdFBsdWdpbi4KClRoZSBmb2xsb3dpbmcgcGx1Z2lucyBoYXZlIGJlZW4gcmVtb3ZlZCAodGhpcmQtcGFydGllcyBhcmUgZnJlZSB0byByZS1pbXBsZW1lbnQKdGhlc2UgaWYgbmVlZGVkKToKCi0gYEd1enpsZUh0dHBcUGx1Z2luXEFzeW5jYCBoYXMgYmVlbiByZW1vdmVkLgotIGBHdXp6bGVIdHRwXFBsdWdpblxDdXJsQXV0aGAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBgR3V6emxlSHR0cFxQbHVnaW5cRXJyb3JSZXNwb25zZVxFcnJvclJlc3BvbnNlUGx1Z2luYCBoYXMgYmVlbiByZW1vdmVkLiBUaGlzCiAgZnVuY3Rpb25hbGl0eSBzaG91bGQgaW5zdGVhZCBiZSBpbXBsZW1lbnRlZCB3aXRoIGV2ZW50IGxpc3RlbmVycyB0aGF0IG9jY3VyCiAgYWZ0ZXIgbm9ybWFsIHJlc3BvbnNlIHBhcnNpbmcgb2NjdXJzIGluIHRoZSBndXp6bGUvY29tbWFuZCBwYWNrYWdlLgoKVGhlIGZvbGxvd2luZyBwbHVnaW5zIGFyZSBub3QgcGFydCBvZiB0aGUgY29yZSBHdXp6bGUgcGFja2FnZSwgYnV0IGFyZSBwcm92aWRlZAppbiBzZXBhcmF0ZSByZXBvc2l0b3JpZXM6CgotIGBHdXp6bGVcSHR0cFxQbHVnaW5cQmFja29mZlBsdWdpbmAgaGFzIGJlZW4gcmV3cml0dGVuIHRvIGJlIG11Y2ggc2ltcGxlcgogIHRvIGJ1aWxkIGN1c3RvbSByZXRyeSBwb2xpY2llcyB1c2luZyBzaW1wbGUgZnVuY3Rpb25zIHJhdGhlciB0aGFuIHZhcmlvdXMKICBjaGFpbmVkIGNsYXNzZXMuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9yZXRyeS1zdWJzY3JpYmVyCi0gYEd1enpsZVxIdHRwXFBsdWdpblxDYWNoZVxDYWNoZVBsdWdpbmAgaGFzIG1vdmVkIHRvCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9jYWNoZS1zdWJzY3JpYmVyCi0gYEd1enpsZVxIdHRwXFBsdWdpblxMb2dcTG9nUGx1Z2luYCBoYXMgbW92ZWQgdG8KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2xvZy1zdWJzY3JpYmVyCi0gYEd1enpsZVxIdHRwXFBsdWdpblxNZDVcTWQ1UGx1Z2luYCBoYXMgbW92ZWQgdG8KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL21lc3NhZ2UtaW50ZWdyaXR5LXN1YnNjcmliZXIKLSBgR3V6emxlXEh0dHBcUGx1Z2luXE1vY2tcTW9ja1BsdWdpbmAgaGFzIG1vdmVkIHRvCiAgYEd1enpsZUh0dHBcU3Vic2NyaWJlclxNb2NrU3Vic2NyaWJlcmAuCi0gYEd1enpsZVxIdHRwXFBsdWdpblxPYXV0aFxPYXV0aFBsdWdpbmAgaGFzIG1vdmVkIHRvCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9vYXV0aC1zdWJzY3JpYmVyCgojIyBTZXJ2aWNlCgpUaGUgc2VydmljZSBkZXNjcmlwdGlvbiBsYXllciBvZiBHdXp6bGUgaGFzIG1vdmVkIGludG8gdHdvIHNlcGFyYXRlIHBhY2thZ2VzOgoKLSBodHRwOi8vZ2l0aHViLmNvbS9ndXp6bGUvY29tbWFuZCBQcm92aWRlcyBhIGhpZ2ggbGV2ZWwgYWJzdHJhY3Rpb24gb3ZlciB3ZWIKICBzZXJ2aWNlcyBieSByZXByZXNlbnRpbmcgd2ViIHNlcnZpY2Ugb3BlcmF0aW9ucyB1c2luZyBjb21tYW5kcy4KLSBodHRwOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlLXNlcnZpY2VzIFByb3ZpZGVzIGFuIGltcGxlbWVudGF0aW9uIG9mCiAgZ3V6emxlL2NvbW1hbmQgdGhhdCBwcm92aWRlcyByZXF1ZXN0IHNlcmlhbGl6YXRpb24gYW5kIHJlc3BvbnNlIHBhcnNpbmcgdXNpbmcKICBHdXp6bGUgc2VydmljZSBkZXNjcmlwdGlvbnMuCgojIyBTdHJlYW0KClN0cmVhbSBoYXZlIG1vdmVkIHRvIGEgc2VwYXJhdGUgcGFja2FnZSBhdmFpbGFibGUgYXQKaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9zdHJlYW1zLgoKYEd1enpsZVxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlYCBoYXMgYmVlbiBnaXZlbiBhIGxhcmdlIHVwZGF0ZSB0byBjbGVhbmx5IHRha2UKb24gdGhlIHJlc3BvbnNpYmlsaXRpZXMgb2YgYEd1enpsZVxIdHRwXEVudGl0eUJvZHlgIGFuZApgR3V6emxlXEh0dHBcRW50aXR5Qm9keUludGVyZmFjZWAgbm93IHRoYXQgdGhleSBoYXZlIGJlZW4gcmVtb3ZlZC4gVGhlIG51bWJlcgpvZiBtZXRob2RzIGltcGxlbWVudGVkIGJ5IHRoZSBgU3RyZWFtSW50ZXJmYWNlYCBoYXMgYmVlbiBkcmFzdGljYWxseSByZWR1Y2VkIHRvCmFsbG93IGRldmVsb3BlcnMgdG8gbW9yZSBlYXNpbHkgZXh0ZW5kIGFuZCBkZWNvcmF0ZSBzdHJlYW0gYmVoYXZpb3IuCgojIyBSZW1vdmVkIG1ldGhvZHMgZnJvbSBTdHJlYW1JbnRlcmZhY2UKCi0gYGdldFN0cmVhbWAgYW5kIGBzZXRTdHJlYW1gIGhhdmUgYmVlbiByZW1vdmVkIHRvIGJldHRlciBlbmNhcHN1bGF0ZSBzdHJlYW1zLgotIGBnZXRNZXRhZGF0YWAgYW5kIGBzZXRNZXRhZGF0YWAgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gZmF2b3Igb2YKICBgR3V6emxlSHR0cFxTdHJlYW1cTWV0YWRhdGFTdHJlYW1JbnRlcmZhY2VgLgotIGBnZXRXcmFwcGVyYCwgYGdldFdyYXBwZXJEYXRhYCwgYGdldFN0cmVhbVR5cGVgLCBhbmQgYGdldFVyaWAgaGF2ZSBhbGwgYmVlbgogIHJlbW92ZWQuIFRoaXMgZGF0YSBpcyBhY2Nlc3NpYmxlIHdoZW4KICB1c2luZyBzdHJlYW1zIHRoYXQgaW1wbGVtZW50IGBHdXp6bGVIdHRwXFN0cmVhbVxNZXRhZGF0YVN0cmVhbUludGVyZmFjZWAuCi0gYHJld2luZGAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGBzZWVrKDApYCBmb3IgYSBzaW1pbGFyIGJlaGF2aW9yLgoKIyMgUmVuYW1lZCBtZXRob2RzCgotIGBkZXRhY2hTdHJlYW1gIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGRldGFjaGAuCi0gYGZlb2ZgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGVvZmAuCi0gYGZ0ZWxsYCBoYXMgYmVlbiByZW5hbWVkIHRvIGB0ZWxsYC4KLSBgcmVhZExpbmVgIGhhcyBtb3ZlZCBmcm9tIGFuIGluc3RhbmNlIG1ldGhvZCB0byBhIHN0YXRpYyBjbGFzcyBtZXRob2Qgb2YKICBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtYC4KCiMjIE1ldGFkYXRhIHN0cmVhbXMKCmBHdXp6bGVIdHRwXFN0cmVhbVxNZXRhZGF0YVN0cmVhbUludGVyZmFjZWAgaGFzIGJlZW4gYWRkZWQgdG8gZGVub3RlIHN0cmVhbXMKdGhhdCBjb250YWluIGFkZGl0aW9uYWwgbWV0YWRhdGEgYWNjZXNzaWJsZSB2aWEgYGdldE1ldGFkYXRhKClgLgpgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlOjpnZXRNZXRhZGF0YWAgYW5kCmBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2U6OnNldE1ldGFkYXRhYCBoYXZlIGJlZW4gcmVtb3ZlZC4KCiMjIFN0cmVhbVJlcXVlc3RGYWN0b3J5CgpUaGUgZW50aXJlIGNvbmNlcHQgb2YgdGhlIFN0cmVhbVJlcXVlc3RGYWN0b3J5IGhhcyBiZWVuIHJlbW92ZWQuIFRoZSB3YXkgdGhpcwp3YXMgdXNlZCBpbiBHdXp6bGUgMyBicm9rZSB0aGUgYWN0dWFsIGludGVyZmFjZSBvZiBzZW5kaW5nIHN0cmVhbWluZyByZXF1ZXN0cwooaW5zdGVhZCBvZiBnZXR0aW5nIGJhY2sgYSBSZXNwb25zZSwgeW91IGdvdCBhIFN0cmVhbUludGVyZmFjZSkuIFN0cmVhbWluZwpQSFAgcmVxdWVzdHMgYXJlIG5vdyBpbXBsZW1lbnRlZCB0aHJvdWdoIHRoZSBgR3V6emxlSHR0cFxBZGFwdGVyXFN0cmVhbUFkYXB0ZXJgLgoKMy42IHRvIDMuNwotLS0tLS0tLS0tCgojIyMgRGVwcmVjYXRpb25zCgotIFlvdSBjYW4gbm93IGVuYWJsZSBFX1VTRVJfREVQUkVDQVRFRCB3YXJuaW5ncyB0byBzZWUgaWYgeW91IGFyZSB1c2luZyBhbnkgZGVwcmVjYXRlZCBtZXRob2RzLjoKCmBgYHBocApcR3V6emxlXENvbW1vblxWZXJzaW9uOjokZW1pdFdhcm5pbmdzID0gdHJ1ZTsKYGBgCgpUaGUgZm9sbG93aW5nIEFQSXMgYW5kIG9wdGlvbnMgaGF2ZSBiZWVuIG1hcmtlZCBhcyBkZXByZWNhdGVkOgoKLSBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6aXNSZXNwb25zZUJvZHlSZXBlYXRhYmxlKClgIGFzIGRlcHJlY2F0ZWQuIFVzZSBgJHJlcXVlc3QtPmdldFJlc3BvbnNlQm9keSgpLT5pc1JlcGVhdGFibGUoKWAgaW5zdGVhZC4KLSBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6Y2FuQ2FjaGUoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIGBHdXp6bGVcUGx1Z2luXENhY2hlXERlZmF1bHRDYW5DYWNoZVN0cmF0ZWd5LT5jYW5DYWNoZVJlcXVlc3QoKWAgaW5zdGVhZC4KLSBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6Y2FuQ2FjaGUoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIGBHdXp6bGVcUGx1Z2luXENhY2hlXERlZmF1bHRDYW5DYWNoZVN0cmF0ZWd5LT5jYW5DYWNoZVJlcXVlc3QoKWAgaW5zdGVhZC4KLSBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6c2V0SXNSZWRpcmVjdCgpYCBhcyBkZXByZWNhdGVkLiBVc2UgdGhlIEhpc3RvcnlQbHVnaW4gaW5zdGVhZC4KLSBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6aXNSZWRpcmVjdCgpYCBhcyBkZXByZWNhdGVkLiBVc2UgdGhlIEhpc3RvcnlQbHVnaW4gaW5zdGVhZC4KLSBNYXJrZWQgYEd1enpsZVxDYWNoZVxDYWNoZUFkYXB0ZXJGYWN0b3J5OjpmYWN0b3J5KClgIGFzIGRlcHJlY2F0ZWQKLSBNYXJrZWQgYEd1enpsZVxTZXJ2aWNlXENsaWVudDo6ZW5hYmxlTWFnaWNNZXRob2RzKClgIGFzIGRlcHJlY2F0ZWQuIE1hZ2ljIG1ldGhvZHMgY2FuIG5vIGxvbmdlciBiZSBkaXNhYmxlZCBvbiBhIEd1enpsZVxTZXJ2aWNlXENsaWVudC4KLSBNYXJrZWQgYEd1enpsZVxQYXJzZXJcVXJsXFVybFBhcnNlcmAgYXMgZGVwcmVjYXRlZC4gSnVzdCB1c2UgUEhQJ3MgYHBhcnNlX3VybCgpYCBhbmQgcGVyY2VudCBlbmNvZGUgeW91ciBVVEYtOC4KLSBNYXJrZWQgYEd1enpsZVxDb21tb25cQ29sbGVjdGlvbjo6aW5qZWN0KClgIGFzIGRlcHJlY2F0ZWQuCi0gTWFya2VkIGBHdXp6bGVcUGx1Z2luXEN1cmxBdXRoXEN1cmxBdXRoUGx1Z2luYCBhcyBkZXByZWNhdGVkLiBVc2UKICBgJGNsaWVudC0+Z2V0Q29uZmlnKCktPnNldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9hdXRoJywgYXJyYXkoJ3VzZXInLCAncGFzcycsICdCYXNpY3xEaWdlc3R8TlRMTXxBbnknKSk7YCBvcgogIGAkY2xpZW50LT5zZXREZWZhdWx0T3B0aW9uKCdhdXRoJywgYXJyYXkoJ3VzZXInLCAncGFzcycsICdCYXNpY3xEaWdlc3R8TlRMTXxBbnknKSk7YAoKMy43IGludHJvZHVjZXMgYHJlcXVlc3Qub3B0aW9uc2AgYXMgYSBwYXJhbWV0ZXIgZm9yIGEgY2xpZW50IGNvbmZpZ3VyYXRpb24gYW5kIGFzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIGFsbCBjcmVhdGlvbmFsCnJlcXVlc3QgbWV0aG9kcy4gV2hlbiBwYWlyZWQgd2l0aCBhIGNsaWVudCdzIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MsIHRoZXNlIG9wdGlvbnMgYWxsb3cgeW91IHRvIHNwZWNpZnkgZGVmYXVsdCBzZXR0aW5ncwpmb3IgdmFyaW91cyBhc3BlY3RzIG9mIGEgcmVxdWVzdC4gQmVjYXVzZSB0aGVzZSBvcHRpb25zIG1ha2Ugb3RoZXIgcHJldmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlZHVuZGFudCwgc2V2ZXJhbApjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIG1ldGhvZHMgb2YgYSBjbGllbnQgYW5kIEFic3RyYWN0Q29tbWFuZCBoYXZlIGJlZW4gZGVwcmVjYXRlZC4KCi0gTWFya2VkIGBHdXp6bGVcU2VydmljZVxDbGllbnQ6OmdldERlZmF1bHRIZWFkZXJzKClgIGFzIGRlcHJlY2F0ZWQuIFVzZSBgJGNsaWVudC0+Z2V0RGVmYXVsdE9wdGlvbignaGVhZGVycycpYC4KLSBNYXJrZWQgYEd1enpsZVxTZXJ2aWNlXENsaWVudDo6c2V0RGVmYXVsdEhlYWRlcnMoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIGAkY2xpZW50LT5zZXREZWZhdWx0T3B0aW9uKCdoZWFkZXJzL3toZWFkZXJfbmFtZX0nLCAndmFsdWUnKWAuCi0gTWFya2VkICdyZXF1ZXN0LnBhcmFtcycgZm9yIGBHdXp6bGVcSHR0cFxDbGllbnRgIGFzIGRlcHJlY2F0ZWQuIFVzZSBgJGNsaWVudC0+c2V0RGVmYXVsdE9wdGlvbigncGFyYW1zL3twYXJhbV9uYW1lfScsICd2YWx1ZScpYAotIE1hcmtlZCAnY29tbWFuZC5oZWFkZXJzJywgJ2NvbW1hbmQucmVzcG9uc2VfYm9keScgYW5kICdjb21tYW5kLm9uX2NvbXBsZXRlJyBhcyBkZXByZWNhdGVkIGZvciBBYnN0cmFjdENvbW1hbmQuIFRoZXNlIHdpbGwgd29yayB0aHJvdWdoIEd1enpsZSA0LjAKCiAgICAgICAgJGNvbW1hbmQgPSAkY2xpZW50LT5nZXRDb21tYW5kKCdmb28nLCBhcnJheSgKICAgICAgICAgICAgJ2NvbW1hbmQuaGVhZGVycycgPT4gYXJyYXkoJ1Rlc3QnID0+ICcxMjMnKSwKICAgICAgICAgICAgJ2NvbW1hbmQucmVzcG9uc2VfYm9keScgPT4gJy9wYXRoL3RvL2ZpbGUnCiAgICAgICAgKSk7CgogICAgICAgIC8vIFNob3VsZCBiZSBjaGFuZ2VkIHRvOgoKICAgICAgICAkY29tbWFuZCA9ICRjbGllbnQtPmdldENvbW1hbmQoJ2ZvbycsIGFycmF5KAogICAgICAgICAgICAnY29tbWFuZC5yZXF1ZXN0X29wdGlvbnMnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ2hlYWRlcnMnID0+IGFycmF5KCdUZXN0JyA9PiAnMTIzJyksCiAgICAgICAgICAgICAgICAnc2F2ZV9hcycgPT4gJy9wYXRoL3RvL2ZpbGUnCiAgICAgICAgICAgICkKICAgICAgICApKTsKCiMjIyBJbnRlcmZhY2UgY2hhbmdlcwoKQWRkaXRpb25zIGFuZCBjaGFuZ2VzICh5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSBhbnkgaW1wbGVtZW50YXRpb25zIG9yIHN1YmNsYXNzZXMgeW91IG1heSBoYXZlIGNyZWF0ZWQpOgoKLSBBZGRlZCBhbiBgJG9wdGlvbnNgIGFyZ3VtZW50IHRvIHRoZSBlbmQgb2YgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2VgOgogIGNyZWF0ZVJlcXVlc3QsIGhlYWQsIGRlbGV0ZSwgcHV0LCBwYXRjaCwgcG9zdCwgb3B0aW9ucywgcHJlcGFyZVJlcXVlc3QKLSBBZGRlZCBhbiBgJG9wdGlvbnNgIGFyZ3VtZW50IHRvIHRoZSBlbmQgb2YgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdFxSZXF1ZXN0RmFjdG9yeUludGVyZmFjZTo6Y3JlYXRlUmVxdWVzdCgpYAotIEFkZGVkIGFuIGBhcHBseU9wdGlvbnMoKWAgbWV0aG9kIHRvIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RcUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2VgCi0gQ2hhbmdlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXQoJHVyaSA9IG51bGwsICRoZWFkZXJzID0gbnVsbCwgJGJvZHkgPSBudWxsKWAgdG8KICBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXQoJHVyaSA9IG51bGwsICRoZWFkZXJzID0gbnVsbCwgJG9wdGlvbnMgPSBhcnJheSgpKWAuIFlvdSBjYW4gc3RpbGwgcGFzcyBpbiBhCiAgcmVzb3VyY2UsIHN0cmluZywgb3IgRW50aXR5Qm9keSBpbnRvIHRoZSAkb3B0aW9ucyBwYXJhbWV0ZXIgdG8gc3BlY2lmeSB0aGUgZG93bmxvYWQgbG9jYXRpb24gb2YgdGhlIHJlc3BvbnNlLgotIENoYW5nZWQgYEd1enpsZVxDb21tb25cQ29sbGVjdGlvbjo6X19jb25zdHJ1Y3QoJGRhdGEpYCB0byBubyBsb25nZXIgYWNjZXB0cyBhIG51bGwgdmFsdWUgZm9yIGAkZGF0YWAgYnV0IGEKICBkZWZhdWx0IGBhcnJheSgpYAotIEFkZGVkIGBHdXp6bGVcU3RyZWFtXFN0cmVhbUludGVyZmFjZTo6aXNSZXBlYXRhYmxlYAotIE1hZGUgYEd1enpsZVxIdHRwXENsaWVudDo6ZXhwYW5kVGVtcGxhdGVgIGFuZCBgZ2V0VXJpVGVtcGxhdGVgIHByb3RlY3RlZCBtZXRob2RzLgoKVGhlIGZvbGxvd2luZyBtZXRob2RzIHdlcmUgcmVtb3ZlZCBmcm9tIGludGVyZmFjZXMuIEFsbCBvZiB0aGVzZSBtZXRob2RzIGFyZSBzdGlsbCBhdmFpbGFibGUgaW4gdGhlIGNvbmNyZXRlIGNsYXNzZXMKdGhhdCBpbXBsZW1lbnQgdGhlbSwgYnV0IHlvdSBzaG91bGQgdXBkYXRlIHlvdXIgY29kZSB0byB1c2UgYWx0ZXJuYXRpdmUgbWV0aG9kczoKCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXREZWZhdWx0SGVhZGVycygpLiBVc2UKICBgJGNsaWVudC0+Z2V0Q29uZmlnKCktPnNldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzL3toZWFkZXJfbmFtZX0nLCAndmFsdWUnKWAuIG9yCiAgYCRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycycsIGFycmF5KCdoZWFkZXJfbmFtZScgPT4gJ3ZhbHVlJykpYCBvcgogIGAkY2xpZW50LT5zZXREZWZhdWx0T3B0aW9uKCdoZWFkZXJzL3toZWFkZXJfbmFtZX0nLCAndmFsdWUnKWAuIG9yCiAgYCRjbGllbnQtPnNldERlZmF1bHRPcHRpb24oJ2hlYWRlcnMnLCBhcnJheSgnaGVhZGVyX25hbWUnID0+ICd2YWx1ZScpKWAuCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXREZWZhdWx0SGVhZGVycygpLiBVc2UgYCRjbGllbnQtPmdldENvbmZpZygpLT5nZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycycpYC4KLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmV4cGFuZFRlbXBsYXRlKClgLiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldFJlcXVlc3RGYWN0b3J5KClgLiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4KLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldEN1cmxNdWx0aSgpYC4gVGhpcyBpcyBhIHZlcnkgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZGV0YWlsLgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6Y2FuQ2FjaGVgLiBVc2UgdGhlIENhY2hlUGx1Z2luLgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6c2V0SXNSZWRpcmVjdGAuIFVzZSB0aGUgSGlzdG9yeVBsdWdpbi4KLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OmlzUmVkaXJlY3RgLiBVc2UgdGhlIEhpc3RvcnlQbHVnaW4uCgojIyMgQ2FjaGUgcGx1Z2luIGJyZWFraW5nIGNoYW5nZXMKCi0gQ2FjaGVLZXlQcm92aWRlckludGVyZmFjZSBhbmQgRGVmYXVsdENhY2hlS2V5UHJvdmlkZXIgYXJlIG5vIGxvbmdlciB1c2VkLiBBbGwgb2YgdGhpcyBsb2dpYyBpcyBoYW5kbGVkIGluIGEKICBDYWNoZVN0b3JhZ2VJbnRlcmZhY2UuIFRoZXNlIHR3byBvYmplY3RzIGFuZCBpbnRlcmZhY2Ugd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uCi0gQWx3YXlzIHNldHRpbmcgWC1jYWNoZSBoZWFkZXJzIG9uIGNhY2hlZCByZXNwb25zZXMKLSBEZWZhdWx0IGNhY2hlIFRUTHMgYXJlIG5vdyBoYW5kbGVkIGJ5IHRoZSBDYWNoZVN0b3JhZ2VJbnRlcmZhY2Ugb2YgYSBDYWNoZVBsdWdpbgotIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmNhY2hlKCRrZXksIFJlc3BvbnNlICRyZXNwb25zZSwgJHR0bCA9IG51bGwpYCBoYXMgY2hhbmdlZCB0byBgY2FjaGUoUmVxdWVzdEludGVyZmFjZQogICRyZXF1ZXN0LCBSZXNwb25zZSAkcmVzcG9uc2UpO2AKLSBgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlOjpmZXRjaCgka2V5KWAgaGFzIGNoYW5nZWQgdG8gYGZldGNoKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpO2AKLSBgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlOjpkZWxldGUoJGtleSlgIGhhcyBjaGFuZ2VkIHRvIGBkZWxldGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk7YAotIEFkZGVkIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OnB1cmdlKCR1cmwpYAotIGBEZWZhdWx0UmV2YWxpZGF0aW9uOjpfX2NvbnN0cnVjdChDYWNoZUtleVByb3ZpZGVySW50ZXJmYWNlICRjYWNoZUtleSwgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlICRjYWNoZSwgQ2FjaGVQbHVnaW4KICAkcGx1Z2luKWAgaGFzIGNoYW5nZWQgdG8gYERlZmF1bHRSZXZhbGlkYXRpb246Ol9fY29uc3RydWN0KENhY2hlU3RvcmFnZUludGVyZmFjZSAkY2FjaGUsCiAgQ2FuQ2FjaGVTdHJhdGVneUludGVyZmFjZSAkY2FuQ2FjaGUgPSBudWxsKWAKLSBBZGRlZCBgUmV2YWxpZGF0aW9uSW50ZXJmYWNlOjpzaG91bGRSZXZhbGlkYXRlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIFJlc3BvbnNlICRyZXNwb25zZSlgCgozLjUgdG8gMy42Ci0tLS0tLS0tLS0KCiogTWl4ZWQgY2FzaW5nIG9mIGhlYWRlcnMgYXJlIG5vdyBmb3JjZWQgdG8gYmUgYSBzaW5nbGUgY29uc2lzdGVudCBjYXNpbmcgYWNyb3NzIGFsbCB2YWx1ZXMgZm9yIHRoYXQgaGVhZGVyLgoqIE1lc3NhZ2VzIGludGVybmFsbHkgdXNlIGEgSGVhZGVyQ29sbGVjdGlvbiBvYmplY3QgdG8gZGVsZWdhdGUgaGFuZGxpbmcgY2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgcmVzb2x1dGlvbgoqIFJlbW92ZWQgdGhlIHdob2xlIGNoYW5nZWRIZWFkZXIoKSBmdW5jdGlvbiBzeXN0ZW0gb2YgbWVzc2FnZXMgYmVjYXVzZSBhbGwgaGVhZGVyIGNoYW5nZXMgbm93IGdvIHRocm91Z2ggYWRkSGVhZGVyKCkuCiAgRm9yIGV4YW1wbGUsIHNldEhlYWRlcigpIGZpcnN0IHJlbW92ZXMgdGhlIGhlYWRlciB1c2luZyB1bnNldCBvbiBhIEhlYWRlckNvbGxlY3Rpb24gYW5kIHRoZW4gY2FsbHMgYWRkSGVhZGVyKCkuCiAgS2VlcGluZyB0aGUgSG9zdCBoZWFkZXIgYW5kIFVSTCBob3N0IGluIHN5bmMgaXMgbm93IGhhbmRsZWQgYnkgb3ZlcnJpZGluZyB0aGUgYWRkSGVhZGVyIG1ldGhvZCBpbiBSZXF1ZXN0LgoqIFNwZWNpZmljIGhlYWRlciBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGNyZWF0ZWQgZm9yIGNvbXBsZXggaGVhZGVycy4gV2hlbiBhIG1lc3NhZ2UgY3JlYXRlcyBhIGhlYWRlciwgaXQgdXNlcyBhCiAgSGVhZGVyRmFjdG9yeSB3aGljaCBjYW4gbWFwIHNwZWNpZmljIGhlYWRlcnMgdG8gc3BlY2lmaWMgaGVhZGVyIGNsYXNzZXMuIFRoZXJlIGlzIG5vdyBhIExpbmsgaGVhZGVyIGFuZAogIENhY2hlQ29udHJvbCBoZWFkZXIgaW1wbGVtZW50YXRpb24uCiogTW92ZWQgZ2V0TGlua3MoKSBmcm9tIFJlc3BvbnNlIHRvIGp1c3QgYmUgdXNlZCBvbiBhIExpbmsgaGVhZGVyIG9iamVjdC4KCklmIHlvdSBwcmV2aW91c2x5IHJlbGllZCBvbiBHdXp6bGVcSHR0cFxNZXNzYWdlXEhlYWRlcjo6cmF3KCksIHRoZW4geW91IHdpbGwgbmVlZCB0byB1cGRhdGUgeW91ciBjb2RlIHRvIHVzZSB0aGUKSGVhZGVySW50ZXJmYWNlIChlLmcuIHRvQXJyYXkoKSwgZ2V0QWxsKCksIGV0Yy4pLgoKIyMjIEludGVyZmFjZSBjaGFuZ2VzCgoqIFJlbW92ZWQgZnJvbSBpbnRlcmZhY2U6IEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0VXJpVGVtcGxhdGUKKiBSZW1vdmVkIGZyb20gaW50ZXJmYWNlOiBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldEN1cmxNdWx0aSgpCiogUmVtb3ZlZCBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnJlY2VpdmVkUmVxdWVzdEhlYWRlcigpIGFuZCBpbXBsZW1lbnRlZCB0aGlzIGZ1bmN0aW9uYWxpdHkgaW4KICBHdXp6bGVcSHR0cFxDdXJsXFJlcXVlc3RNZWRpYXRvcgoqIFJlbW92ZWQgdGhlIG9wdGlvbmFsICRhc1N0cmluZyBwYXJhbWV0ZXIgZnJvbSBNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXIoKS4gSnVzdCBjYXN0IHRoZSBoZWFkZXIgdG8gYSBzdHJpbmcuCiogUmVtb3ZlZCB0aGUgb3B0aW9uYWwgJHRyeUNodW5rZWRUcmFuc2ZlciBvcHRpb24gZnJvbSBHdXp6bGVcSHR0cFxNZXNzYWdlXEVudGl0eUVuY2xvc2luZ1JlcXVlc3RJbnRlcmZhY2UKKiBSZW1vdmVkIHRoZSAkYXNPYmplY3RzIGFyZ3VtZW50IGZyb20gR3V6emxlXEh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXJzKCkKCiMjIyBSZW1vdmVkIGRlcHJlY2F0ZWQgZnVuY3Rpb25zCgoqIFJlbW92ZWQgR3V6emxlXFBhcnNlclxQYXJzZXJSZWdpc3Rlcjo6Z2V0KCkuIFVzZSBnZXRQYXJzZXIoKQoqIFJlbW92ZWQgR3V6emxlXFBhcnNlclxQYXJzZXJSZWdpc3Rlcjo6c2V0KCkuIFVzZSByZWdpc3RlclBhcnNlcigpLgoKIyMjIERlcHJlY2F0aW9ucwoKKiBUaGUgYWJpbGl0eSB0byBjYXNlLWluc2Vuc2l0aXZlbHkgc2VhcmNoIGZvciBoZWFkZXIgdmFsdWVzCiogR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXI6Omhhc0V4YWN0SGVhZGVyCiogR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXI6OnJhdy4gVXNlIGdldEFsbCgpCiogRGVwcmVjYXRlZCBjYWNoZSBjb250cm9sIHNwZWNpZmljIG1ldGhvZHMgb24gR3V6emxlXEh0dHBcTWVzc2FnZVxBYnN0cmFjdE1lc3NhZ2UuIFVzZSB0aGUgQ2FjaGVDb250cm9sIGhlYWRlciBvYmplY3QKICBpbnN0ZWFkLgoKIyMjIE90aGVyIGNoYW5nZXMKCiogQWxsIHJlc3BvbnNlIGhlYWRlciBoZWxwZXIgZnVuY3Rpb25zIHJldHVybiBhIHN0cmluZyByYXRoZXIgdGhhbiBtaXhpbmcgSGVhZGVyIG9iamVjdHMgYW5kIHN0cmluZ3MgaW5jb25zaXN0ZW50bHkKKiBSZW1vdmVkIGNVUkwgYmxhY2tsaXN0IHN1cHBvcnQuIFRoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBub3cgdGhhdCBFeHBlY3QsIEFjY2VwdCwgZXRjLiBhcmUgbWFuYWdlZCBieSBHdXp6bGUKICBkaXJlY3RseSB2aWEgaW50ZXJmYWNlcwoqIFJlbW92ZWQgdGhlIGluamVjdGluZyBvZiBhIHJlcXVlc3Qgb2JqZWN0IG9udG8gYSByZXNwb25zZSBvYmplY3QuIFRoZSBtZXRob2RzIHRvIGdldCBhbmQgc2V0IGEgcmVxdWVzdCBzdGlsbCBleGlzdAogIGJ1dCBhcmUgYSBuby1vcCB1bnRpbCByZW1vdmVkLgoqIE1vc3QgY2xhc3NlcyB0aGF0IHVzZWQgdG8gcmVxdWlyZSBhIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXENvbW1hbmRJbnRlcmZhY2VgIHR5cGVoaW50IG5vdyByZXF1ZXN0IGEKICBgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxBcnJheUNvbW1hbmRJbnRlcmZhY2VgLgoqIEFkZGVkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OnN0YXJ0UmVzcG9uc2UoKWAgdG8gdGhlIFJlcXVlc3RJbnRlcmZhY2UgdG8gaGFuZGxlIGluamVjdGluZyBhIHJlc3BvbnNlCiAgb24gYSByZXF1ZXN0IHdoaWxlIHRoZSByZXF1ZXN0IGlzIHN0aWxsIGJlaW5nIHRyYW5zZmVycmVkCiogYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQ29tbWFuZEludGVyZmFjZWAgbm93IGV4dGVuZHMgZnJvbSBUb0FycmF5SW50ZXJmYWNlIGFuZCBBcnJheUFjY2VzcwoKMy4zIHRvIDMuNAotLS0tLS0tLS0tCgpCYXNlIFVSTHMgb2YgYSBjbGllbnQgbm93IGZvbGxvdyB0aGUgcnVsZXMgb2YgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4yIHdoZW4gbWVyZ2luZyBVUkxzLgoKMy4yIHRvIDMuMwotLS0tLS0tLS0tCgojIyMgUmVzcG9uc2U6OmdldEV0YWcoKSBxdW90ZSBzdHJpcHBpbmcgcmVtb3ZlZAoKYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmdldEV0YWcoKWAgbm8gbG9uZ2VyIHN0cmlwcyBxdW90ZXMgYXJvdW5kIHRoZSBFVGFnIHJlc3BvbnNlIGhlYWRlcgoKIyMjIFJlbW92ZWQgYEd1enpsZVxIdHRwXFV0aWxzYAoKVGhlIGBHdXp6bGVcSHR0cFxVdGlsc2AgY2xhc3Mgd2FzIHJlbW92ZWQuIFRoaXMgY2xhc3Mgd2FzIG9ubHkgdXNlZCBmb3IgdGVzdGluZy4KCiMjIyBTdHJlYW0gd3JhcHBlciBhbmQgdHlwZQoKYEd1enpsZVxTdHJlYW1cU3RyZWFtOjpnZXRXcmFwcGVyKClgIGFuZCBgR3V6emxlXFN0cmVhbVxTdHJlYW06OmdldFN0cmVhbVR5cGUoKWAgYXJlIG5vIGxvbmdlciBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLgoKIyMjIGN1cmwuZW1pdF9pbyBiZWNhbWUgZW1pdF9pbwoKRW1pdHRpbmcgSU8gZXZlbnRzIGZyb20gYSBSZXF1ZXN0TWVkaWF0b3IgaXMgbm93IGEgcGFyYW1ldGVyIHRoYXQgbXVzdCBiZSBzZXQgaW4gYSByZXF1ZXN0J3MgY3VybCBvcHRpb25zIHVzaW5nIHRoZQonZW1pdF9pbycga2V5LiBUaGlzIHdhcyBwcmV2aW91c2x5IHNldCB1bmRlciBhIHJlcXVlc3QncyBwYXJhbWV0ZXJzIHVzaW5nICdjdXJsLmVtaXRfaW8nCgozLjEgdG8gMy4yCi0tLS0tLS0tLS0KCiMjIyBDdXJsTXVsdGkgaXMgbm8gbG9uZ2VyIHJldXNlZCBnbG9iYWxseQoKQmVmb3JlIDMuMiwgdGhlIHNhbWUgQ3VybE11bHRpIG9iamVjdCB3YXMgcmV1c2VkIGdsb2JhbGx5IGZvciBlYWNoIGNsaWVudC4gVGhpcyBjYW4gY2F1c2UgaXNzdWUgd2hlcmUgcGx1Z2lucyBhZGRlZAp0byBhIHNpbmdsZSBjbGllbnQgY2FuIHBvbGx1dGUgcmVxdWVzdHMgZGlzcGF0Y2hlZCBmcm9tIG90aGVyIGNsaWVudHMuCgpJZiB5b3Ugc3RpbGwgd2lzaCB0byByZXVzZSB0aGUgc2FtZSBDdXJsTXVsdGkgb2JqZWN0IHdpdGggZWFjaCBjbGllbnQsIHRoZW4geW91IGNhbiBhZGQgYSBsaXN0ZW5lciB0byB0aGUKU2VydmljZUJ1aWxkZXIncyBgc2VydmljZV9idWlsZGVyLmNyZWF0ZV9jbGllbnRgIGV2ZW50IHRvIGluamVjdCBhIGN1c3RvbSBDdXJsTXVsdGkgb2JqZWN0IGludG8gZWFjaCBjbGllbnQgYXMgaXQgaXMKY3JlYXRlZC4KCmBgYHBocAokbXVsdGkgPSBuZXcgR3V6emxlXEh0dHBcQ3VybFxDdXJsTXVsdGkoKTsKJGJ1aWxkZXIgPSBHdXp6bGVcU2VydmljZVxCdWlsZGVyXFNlcnZpY2VCdWlsZGVyOjpmYWN0b3J5KCcvcGF0aC90by9jb25maWcuanNvbicpOwokYnVpbGRlci0+YWRkTGlzdGVuZXIoJ3NlcnZpY2VfYnVpbGRlci5jcmVhdGVfY2xpZW50JywgZnVuY3Rpb24gKCRldmVudCkgdXNlICgkbXVsdGkpIHsKICAgICRldmVudFsnY2xpZW50J10tPnNldEN1cmxNdWx0aSgkbXVsdGkpOwp9Cn0pOwpgYGAKCiMjIyBObyBkZWZhdWx0IHBhdGgKClVSTHMgbm8gbG9uZ2VyIGhhdmUgYSBkZWZhdWx0IHBhdGggdmFsdWUgb2YgJy8nIGlmIG5vIHBhdGggd2FzIHNwZWNpZmllZC4KCkJlZm9yZToKCmBgYHBocAokcmVxdWVzdCA9ICRjbGllbnQtPmdldCgnaHR0cDovL3d3dy5mb28uY29tJyk7CmVjaG8gJHJlcXVlc3QtPmdldFVybCgpOwovLyA+PiBodHRwOi8vd3d3LmZvby5jb20vCmBgYAoKQWZ0ZXI6CgpgYGBwaHAKJHJlcXVlc3QgPSAkY2xpZW50LT5nZXQoJ2h0dHA6Ly93d3cuZm9vLmNvbScpOwplY2hvICRyZXF1ZXN0LT5nZXRVcmwoKTsKLy8gPj4gaHR0cDovL3d3dy5mb28uY29tCmBgYAoKIyMjIExlc3MgdmVyYm9zZSBCYWRSZXNwb25zZUV4Y2VwdGlvbgoKVGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGZvciBgR3V6emxlXEh0dHBcRXhjZXB0aW9uXEJhZFJlc3BvbnNlRXhjZXB0aW9uYCBubyBsb25nZXIgY29udGFpbnMgdGhlIGZ1bGwgSFRUUCByZXF1ZXN0IGFuZApyZXNwb25zZSBpbmZvcm1hdGlvbi4gWW91IGNhbiwgaG93ZXZlciwgZ2V0IGFjY2VzcyB0byB0aGUgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0IGJ5IGNhbGxpbmcgYGdldFJlcXVlc3QoKWAgb3IKYGdldFJlc3BvbnNlKClgIG9uIHRoZSBleGNlcHRpb24gb2JqZWN0LgoKIyMjIFF1ZXJ5IHBhcmFtZXRlciBhZ2dyZWdhdGlvbgoKTXVsdGktdmFsdWVkIHF1ZXJ5IHBhcmFtZXRlcnMgYXJlIG5vIGxvbmdlciBhZ2dyZWdhdGVkIHVzaW5nIGEgY2FsbGJhY2sgZnVuY3Rpb24uIGBHdXp6bGVcSHR0cFxRdWVyeWAgbm93IGhhcyBhCnNldEFnZ3JlZ2F0b3IoKSBtZXRob2QgdGhhdCBhY2NlcHRzIGEgYEd1enpsZVxIdHRwXFF1ZXJ5QWdncmVnYXRvclxRdWVyeUFnZ3JlZ2F0b3JJbnRlcmZhY2VgIG9iamVjdC4gVGhpcyBvYmplY3QgaXMKcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHRoZSBhZ2dyZWdhdGlvbiBvZiBtdWx0aS12YWx1ZWQgcXVlcnkgc3RyaW5nIHZhcmlhYmxlcyBpbnRvIGEgZmxhdHRlbmVkIGhhc2guCgoyLjggdG8gMy54Ci0tLS0tLS0tLS0KCiMjIyBHdXp6bGVcU2VydmljZVxJbnNwZWN0b3IKCkNoYW5nZSBgXEd1enpsZVxTZXJ2aWNlXEluc3BlY3Rvcjo6ZnJvbUNvbmZpZ2AgdG8gYFxHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmZyb21Db25maWdgCgoqKkJlZm9yZSoqCgpgYGBwaHAKdXNlIEd1enpsZVxTZXJ2aWNlXEluc3BlY3RvcjsKCmNsYXNzIFlvdXJDbGllbnQgZXh0ZW5kcyBcR3V6emxlXFNlcnZpY2VcQ2xpZW50CnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmFjdG9yeSgkY29uZmlnID0gYXJyYXkoKSkKICAgIHsKICAgICAgICAkZGVmYXVsdCA9IGFycmF5KCk7CiAgICAgICAgJHJlcXVpcmVkID0gYXJyYXkoJ2Jhc2VfdXJsJywgJ3VzZXJuYW1lJywgJ2FwaV9rZXknKTsKICAgICAgICAkY29uZmlnID0gSW5zcGVjdG9yOjpmcm9tQ29uZmlnKCRjb25maWcsICRkZWZhdWx0LCAkcmVxdWlyZWQpOwoKICAgICAgICAkY2xpZW50ID0gbmV3IHNlbGYoCiAgICAgICAgICAgICRjb25maWctPmdldCgnYmFzZV91cmwnKSwKICAgICAgICAgICAgJGNvbmZpZy0+Z2V0KCd1c2VybmFtZScpLAogICAgICAgICAgICAkY29uZmlnLT5nZXQoJ2FwaV9rZXknKQogICAgICAgICk7CiAgICAgICAgJGNsaWVudC0+c2V0Q29uZmlnKCRjb25maWcpOwoKICAgICAgICAkY2xpZW50LT5zZXREZXNjcmlwdGlvbihTZXJ2aWNlRGVzY3JpcHRpb246OmZhY3RvcnkoX19ESVJfXyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnY2xpZW50Lmpzb24nKSk7CgogICAgICAgIHJldHVybiAkY2xpZW50OwogICAgfQpgYGAKCioqQWZ0ZXIqKgoKYGBgcGhwCnVzZSBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb247CgpjbGFzcyBZb3VyQ2xpZW50IGV4dGVuZHMgXEd1enpsZVxTZXJ2aWNlXENsaWVudAp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhY3RvcnkoJGNvbmZpZyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJGRlZmF1bHQgPSBhcnJheSgpOwogICAgICAgICRyZXF1aXJlZCA9IGFycmF5KCdiYXNlX3VybCcsICd1c2VybmFtZScsICdhcGlfa2V5Jyk7CiAgICAgICAgJGNvbmZpZyA9IENvbGxlY3Rpb246OmZyb21Db25maWcoJGNvbmZpZywgJGRlZmF1bHQsICRyZXF1aXJlZCk7CgogICAgICAgICRjbGllbnQgPSBuZXcgc2VsZigKICAgICAgICAgICAgJGNvbmZpZy0+Z2V0KCdiYXNlX3VybCcpLAogICAgICAgICAgICAkY29uZmlnLT5nZXQoJ3VzZXJuYW1lJyksCiAgICAgICAgICAgICRjb25maWctPmdldCgnYXBpX2tleScpCiAgICAgICAgKTsKICAgICAgICAkY2xpZW50LT5zZXRDb25maWcoJGNvbmZpZyk7CgogICAgICAgICRjbGllbnQtPnNldERlc2NyaXB0aW9uKFNlcnZpY2VEZXNjcmlwdGlvbjo6ZmFjdG9yeShfX0RJUl9fIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdjbGllbnQuanNvbicpKTsKCiAgICAgICAgcmV0dXJuICRjbGllbnQ7CiAgICB9CmBgYAoKIyMjIENvbnZlcnQgWE1MIFNlcnZpY2UgRGVzY3JpcHRpb25zIHRvIEpTT04KCioqQmVmb3JlKioKCmBgYHhtbAo8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8Y2xpZW50PgogICAgPGNvbW1hbmRzPgogICAgICAgIDwhLS0gR3JvdXBzIC0tPgogICAgICAgIDxjb21tYW5kIG5hbWU9Imxpc3RfZ3JvdXBzIiBtZXRob2Q9IkdFVCIgdXJpPSJncm91cHMuanNvbiI+CiAgICAgICAgICAgIDxkb2M+R2V0IGEgbGlzdCBvZiBncm91cHM8L2RvYz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgPGNvbW1hbmQgbmFtZT0ic2VhcmNoX2dyb3VwcyIgbWV0aG9kPSJHRVQiIHVyaT0nc2VhcmNoLmpzb24/cXVlcnk9Int7cXVlcnl9fSB0eXBlOmdyb3VwIic+CiAgICAgICAgICAgIDxkb2M+VXNlcyBhIHNlYXJjaCBxdWVyeSB0byBnZXQgYSBsaXN0IG9mIGdyb3VwczwvZG9jPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0icXVlcnkiIHR5cGU9InN0cmluZyIgcmVxdWlyZWQ9InRydWUiIC8+CiAgICAgICAgPC9jb21tYW5kPgogICAgICAgIDxjb21tYW5kIG5hbWU9ImNyZWF0ZV9ncm91cCIgbWV0aG9kPSJQT1NUIiB1cmk9Imdyb3Vwcy5qc29uIj4KICAgICAgICAgICAgPGRvYz5DcmVhdGUgYSBncm91cDwvZG9jPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0iZGF0YSIgdHlwZT0iYXJyYXkiIGxvY2F0aW9uPSJib2R5IiBmaWx0ZXJzPSJqc29uX2VuY29kZSIgZG9jPSJHcm91cCBKU09OIi8+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJDb250ZW50LVR5cGUiIGxvY2F0aW9uPSJoZWFkZXIiIHN0YXRpYz0iYXBwbGljYXRpb24vanNvbiIvPgogICAgICAgIDwvY29tbWFuZD4KICAgICAgICA8Y29tbWFuZCBuYW1lPSJkZWxldGVfZ3JvdXAiIG1ldGhvZD0iREVMRVRFIiB1cmk9Imdyb3Vwcy97e2lkfX0uanNvbiI+CiAgICAgICAgICAgIDxkb2M+RGVsZXRlIGEgZ3JvdXAgYnkgSUQ8L2RvYz4KICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImlkIiB0eXBlPSJpbnRlZ2VyIiByZXF1aXJlZD0idHJ1ZSIvPgogICAgICAgIDwvY29tbWFuZD4KICAgICAgICA8Y29tbWFuZCBuYW1lPSJnZXRfZ3JvdXAiIG1ldGhvZD0iR0VUIiB1cmk9Imdyb3Vwcy97e2lkfX0uanNvbiI+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJpZCIgdHlwZT0iaW50ZWdlciIgcmVxdWlyZWQ9InRydWUiLz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgPGNvbW1hbmQgbmFtZT0idXBkYXRlX2dyb3VwIiBtZXRob2Q9IlBVVCIgdXJpPSJncm91cHMve3tpZH19Lmpzb24iPgogICAgICAgICAgICA8ZG9jPlVwZGF0ZSBhIGdyb3VwPC9kb2M+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJpZCIgdHlwZT0iaW50ZWdlciIgcmVxdWlyZWQ9InRydWUiLz4KICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImRhdGEiIHR5cGU9ImFycmF5IiBsb2NhdGlvbj0iYm9keSIgZmlsdGVycz0ianNvbl9lbmNvZGUiIGRvYz0iR3JvdXAgSlNPTiIvPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0iQ29udGVudC1UeXBlIiBsb2NhdGlvbj0iaGVhZGVyIiBzdGF0aWM9ImFwcGxpY2F0aW9uL2pzb24iLz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICA8L2NvbW1hbmRzPgo8L2NsaWVudD4KYGBgCgoqKkFmdGVyKioKCmBgYGpzb24KewogICAgIm5hbWUiOiAgICAgICAiWmVuZGVzayBSRVNUIEFQSSB2MiIsCiAgICAiYXBpVmVyc2lvbiI6ICIyMDEyLTEyLTMxIiwKICAgICJkZXNjcmlwdGlvbiI6IlByb3ZpZGVzIGFjY2VzcyB0byBaZW5kZXNrIHZpZXdzLCBncm91cHMsIHRpY2tldHMsIHRpY2tldCBmaWVsZHMsIGFuZCB1c2VycyIsCiAgICAib3BlcmF0aW9ucyI6IHsKICAgICAgICAibGlzdF9ncm91cHMiOiAgewogICAgICAgICAgICAiaHR0cE1ldGhvZCI6IkdFVCIsCiAgICAgICAgICAgICJ1cmkiOiAgICAgICAiZ3JvdXBzLmpzb24iLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIkdldCBhIGxpc3Qgb2YgZ3JvdXBzIgogICAgICAgIH0sCiAgICAgICAgInNlYXJjaF9ncm91cHMiOnsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJHRVQiLAogICAgICAgICAgICAidXJpIjogICAgICAgInNlYXJjaC5qc29uP3F1ZXJ5PVwie3F1ZXJ5fSB0eXBlOmdyb3VwXCIiLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIlVzZXMgYSBzZWFyY2ggcXVlcnkgdG8gZ2V0IGEgbGlzdCBvZiBncm91cHMiLAogICAgICAgICAgICAicGFyYW1ldGVycyI6ewogICAgICAgICAgICAgICAgInF1ZXJ5Ijp7CiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogICAidXJpIiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJaZW5kZXNrIFNlYXJjaCBRdWVyeSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAgICAgICAic3RyaW5nIiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiAgIHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImNyZWF0ZV9ncm91cCI6IHsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJQT1NUIiwKICAgICAgICAgICAgInVyaSI6ICAgICAgICJncm91cHMuanNvbiIsCiAgICAgICAgICAgICJzdW1tYXJ5IjogICAiQ3JlYXRlIGEgZ3JvdXAiLAogICAgICAgICAgICAicGFyYW1ldGVycyI6ewogICAgICAgICAgICAgICAgImRhdGEiOiAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICAgICAibG9jYXRpb24iOiAgICJib2R5IiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJHcm91cCBKU09OIiwKICAgICAgICAgICAgICAgICAgICAiZmlsdGVycyI6ICAgICJqc29uX2VuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjoiaGVhZGVyIiwKICAgICAgICAgICAgICAgICAgICAic3RhdGljIjogICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiZGVsZXRlX2dyb3VwIjogewogICAgICAgICAgICAiaHR0cE1ldGhvZCI6IkRFTEVURSIsCiAgICAgICAgICAgICJ1cmkiOiAgICAgICAiZ3JvdXBzL3tpZH0uanNvbiIsCiAgICAgICAgICAgICJzdW1tYXJ5IjogICAiRGVsZXRlIGEgZ3JvdXAiLAogICAgICAgICAgICAicGFyYW1ldGVycyI6ewogICAgICAgICAgICAgICAgImlkIjp7CiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogICAidXJpIiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJHcm91cCB0byBkZWxldGUgYnkgSUQiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgImludGVnZXIiLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6ICAgdHJ1ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiZ2V0X2dyb3VwIjogICAgewogICAgICAgICAgICAiaHR0cE1ldGhvZCI6IkdFVCIsCiAgICAgICAgICAgICJ1cmkiOiAgICAgICAiZ3JvdXBzL3tpZH0uanNvbiIsCiAgICAgICAgICAgICJzdW1tYXJ5IjogICAiR2V0IGEgdGlja2V0IiwKICAgICAgICAgICAgInBhcmFtZXRlcnMiOnsKICAgICAgICAgICAgICAgICJpZCI6ewogICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiI6ICAgInVyaSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjoiR3JvdXAgdG8gZ2V0IGJ5IElEIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICAgICAgICJpbnRlZ2VyIiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiAgIHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgInVwZGF0ZV9ncm91cCI6IHsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJQVVQiLAogICAgICAgICAgICAidXJpIjogICAgICAgImdyb3Vwcy97aWR9Lmpzb24iLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIlVwZGF0ZSBhIGdyb3VwIiwKICAgICAgICAgICAgInBhcmFtZXRlcnMiOnsKICAgICAgICAgICAgICAgICJpZCI6ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibG9jYXRpb24iOiAgICJ1cmkiLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6Ikdyb3VwIHRvIHVwZGF0ZSBieSBJRCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAgICAgICAiaW50ZWdlciIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImRhdGEiOiAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgImFycmF5IiwKICAgICAgICAgICAgICAgICAgICAibG9jYXRpb24iOiAgICJib2R5IiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJHcm91cCBKU09OIiwKICAgICAgICAgICAgICAgICAgICAiZmlsdGVycyI6ICAgICJqc29uX2VuY29kZSIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgIkNvbnRlbnQtVHlwZSI6ewogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjoiaGVhZGVyIiwKICAgICAgICAgICAgICAgICAgICAic3RhdGljIjogICJhcHBsaWNhdGlvbi9qc29uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQp9CmBgYAoKIyMjIEd1enpsZVxTZXJ2aWNlXERlc2NyaXB0aW9uXFNlcnZpY2VEZXNjcmlwdGlvbgoKQ29tbWFuZHMgYXJlIG5vdyBjYWxsZWQgT3BlcmF0aW9ucwoKKipCZWZvcmUqKgoKYGBgcGhwCnVzZSBHdXp6bGVcU2VydmljZVxEZXNjcmlwdGlvblxTZXJ2aWNlRGVzY3JpcHRpb247Cgokc2QgPSBuZXcgU2VydmljZURlc2NyaXB0aW9uKCk7CiRzZC0+Z2V0Q29tbWFuZHMoKTsgICAgIC8vIEByZXR1cm5zIEFwaUNvbW1hbmRJbnRlcmZhY2VbXQokc2QtPmhhc0NvbW1hbmQoJG5hbWUpOwokc2QtPmdldENvbW1hbmQoJG5hbWUpOyAvLyBAcmV0dXJucyBBcGlDb21tYW5kSW50ZXJmYWNlfG51bGwKJHNkLT5hZGRDb21tYW5kKCRjb21tYW5kKTsgLy8gQHBhcmFtIEFwaUNvbW1hbmRJbnRlcmZhY2UgJGNvbW1hbmQKYGBgCgoqKkFmdGVyKioKCmBgYHBocAp1c2UgR3V6emxlXFNlcnZpY2VcRGVzY3JpcHRpb25cU2VydmljZURlc2NyaXB0aW9uOwoKJHNkID0gbmV3IFNlcnZpY2VEZXNjcmlwdGlvbigpOwokc2QtPmdldE9wZXJhdGlvbnMoKTsgICAgICAgICAgIC8vIEByZXR1cm5zIE9wZXJhdGlvbkludGVyZmFjZVtdCiRzZC0+aGFzT3BlcmF0aW9uKCRuYW1lKTsKJHNkLT5nZXRPcGVyYXRpb24oJG5hbWUpOyAgICAgICAvLyBAcmV0dXJucyBPcGVyYXRpb25JbnRlcmZhY2V8bnVsbAokc2QtPmFkZE9wZXJhdGlvbigkb3BlcmF0aW9uKTsgIC8vIEBwYXJhbSBPcGVyYXRpb25JbnRlcmZhY2UgJG9wZXJhdGlvbgpgYGAKCiMjIyBHdXp6bGVcQ29tbW9uXEluZmxlY3Rpb25cSW5mbGVjdG9yCgpOYW1lc3BhY2UgaXMgbm93IGBHdXp6bGVcSW5mbGVjdGlvblxJbmZsZWN0b3JgCgojIyMgR3V6emxlXEh0dHBcUGx1Z2luCgpOYW1lc3BhY2UgaXMgbm93IGBHdXp6bGVcUGx1Z2luYC4gTWFueSBvdGhlciBjaGFuZ2VzIG9jY3VyIHdpdGhpbiB0aGlzIG5hbWVzcGFjZSBhbmQgYXJlIGRldGFpbGVkIGluIHRoZWlyIG93biBzZWN0aW9ucyBiZWxvdy4KCiMjIyBHdXp6bGVcSHR0cFxQbHVnaW5cTG9nUGx1Z2luIGFuZCBHdXp6bGVcQ29tbW9uXExvZwoKTm93IGBHdXp6bGVcUGx1Z2luXExvZ1xMb2dQbHVnaW5gIGFuZCBgR3V6emxlXExvZ2AgcmVzcGVjdGl2ZWx5LgoKKipCZWZvcmUqKgoKYGBgcGhwCnVzZSBHdXp6bGVcQ29tbW9uXExvZ1xDbG9zdXJlTG9nQWRhcHRlcjsKdXNlIEd1enpsZVxIdHRwXFBsdWdpblxMb2dQbHVnaW47CgovKiogQHZhciBcR3V6emxlXEh0dHBcQ2xpZW50ICovCiRjbGllbnQ7CgovLyAkdmVyYm9zaXR5IGlzIGFuIGludGVnZXIgaW5kaWNhdGluZyBkZXNpcmVkIG1lc3NhZ2UgdmVyYm9zaXR5IGxldmVsCiRjbGllbnQtPmFkZFN1YnNjcmliZXIobmV3IExvZ1BsdWdpbihuZXcgQ2xvc3VyZUxvZ0FkYXB0ZXIoZnVuY3Rpb24oJG0pIHsgZWNobyAkbTsgfSwgJHZlcmJvc2l0eSA9IExvZ1BsdWdpbjo6TE9HX1ZFUkJPU0UpOwpgYGAKCioqQWZ0ZXIqKgoKYGBgcGhwCnVzZSBHdXp6bGVcTG9nXENsb3N1cmVMb2dBZGFwdGVyOwp1c2UgR3V6emxlXExvZ1xNZXNzYWdlRm9ybWF0dGVyOwp1c2UgR3V6emxlXFBsdWdpblxMb2dcTG9nUGx1Z2luOwoKLyoqIEB2YXIgXEd1enpsZVxIdHRwXENsaWVudCAqLwokY2xpZW50OwoKLy8gJGZvcm1hdCBpcyBhIHN0cmluZyBpbmRpY2F0aW5nIGRlc2lyZWQgbWVzc2FnZSBmb3JtYXQgLS0gQHNlZSBNZXNzYWdlRm9ybWF0dGVyCiRjbGllbnQtPmFkZFN1YnNjcmliZXIobmV3IExvZ1BsdWdpbihuZXcgQ2xvc3VyZUxvZ0FkYXB0ZXIoZnVuY3Rpb24oJG0pIHsgZWNobyAkbTsgfSwgJGZvcm1hdCA9IE1lc3NhZ2VGb3JtYXR0ZXI6OkRFQlVHX0ZPUk1BVCk7CmBgYAoKIyMjIEd1enpsZVxIdHRwXFBsdWdpblxDdXJsQXV0aFBsdWdpbgoKTm93IGBHdXp6bGVcUGx1Z2luXEN1cmxBdXRoXEN1cmxBdXRoUGx1Z2luYC4KCiMjIyBHdXp6bGVcSHR0cFxQbHVnaW5cRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luCgpOb3cgYEd1enpsZVxQbHVnaW5cQmFja29mZlxCYWNrb2ZmUGx1Z2luYCwgYW5kIG90aGVyIGNoYW5nZXMuCgoqKkJlZm9yZSoqCgpgYGBwaHAKdXNlIEd1enpsZVxIdHRwXFBsdWdpblxFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW47CgokYmFja29mZlBsdWdpbiA9IG5ldyBFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW4oJG1heFJldHJpZXMsIGFycmF5X21lcmdlKAogICAgICAgIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbjo6Z2V0RGVmYXVsdEZhaWx1cmVDb2RlcygpLCBhcnJheSg0MjkpCiAgICApKTsKCiRjbGllbnQtPmFkZFN1YnNjcmliZXIoJGJhY2tvZmZQbHVnaW4pOwpgYGAKCioqQWZ0ZXIqKgoKYGBgcGhwCnVzZSBHdXp6bGVcUGx1Z2luXEJhY2tvZmZcQmFja29mZlBsdWdpbjsKdXNlIEd1enpsZVxQbHVnaW5cQmFja29mZlxIdHRwQmFja29mZlN0cmF0ZWd5OwoKLy8gVXNlIGNvbnZlbmllbnQgZmFjdG9yeSBtZXRob2QgaW5zdGVhZCAtLSBzZWUgaW1wbGVtZW50YXRpb24gZm9yIGlkZWFzIG9mIHdoYXQKLy8geW91IGNhbiBkbyB3aXRoIGNoYWluaW5nIGJhY2tvZmYgc3RyYXRlZ2llcwokYmFja29mZlBsdWdpbiA9IEJhY2tvZmZQbHVnaW46OmdldEV4cG9uZW50aWFsQmFja29mZigkbWF4UmV0cmllcywgYXJyYXlfbWVyZ2UoCiAgICAgICAgSHR0cEJhY2tvZmZTdHJhdGVneTo6Z2V0RGVmYXVsdEZhaWx1cmVDb2RlcygpLCBhcnJheSg0MjkpCiAgICApKTsKJGNsaWVudC0+YWRkU3Vic2NyaWJlcigkYmFja29mZlBsdWdpbik7CmBgYAoKIyMjIEtub3duIElzc3VlcwoKIyMjIyBbQlVHXSBBY2NlcHQtRW5jb2RpbmcgaGVhZGVyIGJlaGF2aW9yIGNoYW5nZWQgdW5pbnRlbnRpb25hbGx5LgoKKFNlZSAjMjE3KSAoRml4ZWQgaW4gMDlkYWViOGM2NjZmYjQ0NDk5YTA2NDZkNjU1YThhZTM2NDU2NTc1ZSkKCkluIHZlcnNpb24gMi44IHNldHRpbmcgdGhlIGBBY2NlcHQtRW5jb2RpbmdgIGhlYWRlciB3b3VsZCBzZXQgdGhlIENVUkxPUFRfRU5DT0RJTkcgb3B0aW9uLCB3aGljaCBwZXJtaXR0ZWQgY1VSTCB0bwpwcm9wZXJseSBoYW5kbGUgZ3ppcC9kZWZsYXRlIGNvbXByZXNzZWQgcmVzcG9uc2VzIGZyb20gdGhlIHNlcnZlci4gSW4gdmVyc2lvbnMgYWZmZWN0ZWQgYnkgdGhpcyBidWcgdGhpcyBkb2VzIG5vdCBoYXBwZW4uClNlZSBpc3N1ZSAjMjE3IGZvciBhIHdvcmthcm91bmQsIG9yIHVzZSBhIHZlcnNpb24gY29udGFpbmluZyB0aGUgZml4Lgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDSEFOR0VMT0cKCgojIyAxLjMuMSAtIDIwMTYtMTItMjAKCiMjIyBGaXhlZAoKLSBgd2FpdCgpYCBmb3JlaWduIHByb21pc2UgY29tcGF0aWJpbGl0eQoKCiMjIDEuMy4wIC0gMjAxNi0xMS0xOAoKIyMjIEFkZGVkCgotIEFkZHMgc3VwcG9ydCBmb3IgY3VzdG9tIHRhc2sgcXVldWVzLgoKIyMjIEZpeGVkCgotIEZpeGVkIGNvcm91dGluZSBwcm9taXNlIG1lbW9yeSBsZWFrLgoKCiMjIDEuMi4wIC0gMjAxNi0wNS0xOAoKIyMjIENoYW5nZWQKCi0gVXBkYXRlIHRvIG5vdyBjYXRjaCBgXFRocm93YWJsZWAgb24gUEhQIDcrCgoKIyMgMS4xLjAgLSAyMDE2LTAzLTA3CgojIyMgQ2hhbmdlZAoKLSBVcGRhdGUgRWFjaFByb21pc2UgdG8gcHJldmVudCByZWN1cnJpbmcgb24gYSBpdGVyYXRvciB3aGVuIGFkdmFuY2luZywgYXMgdGhpcwogIGNvdWxkIHRyaWdnZXIgZmF0YWwgZ2VuZXJhdG9yIGVycm9ycy4KLSBVcGRhdGUgUHJvbWlzZSB0byBhbGxvdyByZWN1cnNpdmUgd2FpdGluZyB3aXRob3V0IHVud3JhcHBpbmcgZXhjZXB0aW9ucy4KCgojIyAxLjAuMyAtIDIwMTUtMTAtMTUKCiMjIyBDaGFuZ2VkCgotIFVwZGF0ZSBFYWNoUHJvbWlzZSB0byBpbW1lZGlhdGVseSByZXNvbHZlIHdoZW4gdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBpdGVyYXRvcgogIGlzIGVtcHR5LiBQcmV2aW91c2x5LCBzdWNoIGEgcHJvbWlzZSB3b3VsZCB0aHJvdyBhbiBleGNlcHRpb24gd2hlbiBpdHMgYHdhaXRgCiAgZnVuY3Rpb24gd2FzIGNhbGxlZC4KCgojIyAxLjAuMiAtIDIwMTUtMDUtMTUKCiMjIyBDaGFuZ2VkCgotIENvbmRpdGlvbmFsbHkgcmVxdWlyZSBmdW5jdGlvbnMucGhwLgoKCiMjIDEuMC4xIC0gMjAxNS0wNi0yNAoKIyMjIENoYW5nZWQKCi0gVXBkYXRpbmcgRWFjaFByb21pc2UgdG8gY2FsbCBuZXh0IG9uIHRoZSB1bmRlcmx5aW5nIHByb21pc2UgaXRlcmF0b3IgYXMgbGF0ZQogIGFzIHBvc3NpYmxlIHRvIGVuc3VyZSB0aGF0IGdlbmVyYXRvcnMgdGhhdCBnZW5lcmF0ZSBuZXcgcmVxdWVzdHMgYmFzZWQgb24KICBjYWxsYmFja3MgYXJlIG5vdCBpdGVyYXRlZCB1bnRpbCBhZnRlciBjYWxsYmFja3MgYXJlIGludm9rZWQuCgoKIyMgMS4wLjAgLSAyMDE1LTA1LTEyCgotIEluaXRpYWwgcmVsZWFzZQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wcm9taXNlcyIsCiAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIHByb21pc2VzIGxpYnJhcnkiLAogICAgImtleXdvcmRzIjogWyJwcm9taXNlIl0sCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAiZW1haWwiOiAibXRkb3dsaW5nQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIj49NS41LjAiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcUHJvbWlzZVxcIjogInNyYy8iCiAgICAgICAgfSwKICAgICAgICAiZmlsZXMiOiBbInNyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAiXQogICAgfSwKICAgICJzY3JpcHRzIjogewogICAgICAgICJ0ZXN0IjogInZlbmRvci9iaW4vcGhwdW5pdCIsCiAgICAgICAgInRlc3QtY2kiOiAidmVuZG9yL2Jpbi9waHB1bml0IC0tY292ZXJhZ2UtdGV4dCIKICAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS40LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1LTIwMTYgTWljaGFlbCBEb3dsaW5nLCBodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/Makefile</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[YWxsOiBjbGVhbiB0ZXN0Cgp0ZXN0OgoJdmVuZG9yL2Jpbi9waHB1bml0Cgpjb3ZlcmFnZToKCXZlbmRvci9iaW4vcGhwdW5pdCAtLWNvdmVyYWdlLWh0bWw9YXJ0aWZhY3RzL2NvdmVyYWdlCgp2aWV3LWNvdmVyYWdlOgoJb3BlbiBhcnRpZmFjdHMvY292ZXJhZ2UvaW5kZXguaHRtbAoKY2xlYW46CglybSAtcmYgYXJ0aWZhY3RzLyoK]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBHdXp6bGUgUHJvbWlzZXMKCltQcm9taXNlcy9BK10oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pIGltcGxlbWVudGF0aW9uIHRoYXQgaGFuZGxlcyBwcm9taXNlCmNoYWluaW5nIGFuZCByZXNvbHV0aW9uIGl0ZXJhdGl2ZWx5LCBhbGxvd2luZyBmb3IgImluZmluaXRlIiBwcm9taXNlIGNoYWluaW5nCndoaWxlIGtlZXBpbmcgdGhlIHN0YWNrIHNpemUgY29uc3RhbnQuIFJlYWQgW3RoaXMgYmxvZyBwb3N0XShodHRwczovL2Jsb2cuZG9tZW5pYy5tZS95b3VyZS1taXNzaW5nLXRoZS1wb2ludC1vZi1wcm9taXNlcy8pCmZvciBhIGdlbmVyYWwgaW50cm9kdWN0aW9uIHRvIHByb21pc2VzLgoKLSBbRmVhdHVyZXNdKCNmZWF0dXJlcykKLSBbUXVpY2sgc3RhcnRdKCNxdWljay1zdGFydCkKLSBbU3luY2hyb25vdXMgd2FpdF0oI3N5bmNocm9ub3VzLXdhaXQpCi0gW0NhbmNlbGxhdGlvbl0oI2NhbmNlbGxhdGlvbikKLSBbQVBJXSgjYXBpKQogIC0gW1Byb21pc2VdKCNwcm9taXNlKQogIC0gW0Z1bGZpbGxlZFByb21pc2VdKCNmdWxmaWxsZWRwcm9taXNlKQogIC0gW1JlamVjdGVkUHJvbWlzZV0oI3JlamVjdGVkcHJvbWlzZSkKLSBbUHJvbWlzZSBpbnRlcm9wXSgjcHJvbWlzZS1pbnRlcm9wKQotIFtJbXBsZW1lbnRhdGlvbiBub3Rlc10oI2ltcGxlbWVudGF0aW9uLW5vdGVzKQoKCiMgRmVhdHVyZXMKCi0gW1Byb21pc2VzL0ErXShodHRwczovL3Byb21pc2VzYXBsdXMuY29tLykgaW1wbGVtZW50YXRpb24uCi0gUHJvbWlzZSByZXNvbHV0aW9uIGFuZCBjaGFpbmluZyBpcyBoYW5kbGVkIGl0ZXJhdGl2ZWx5LCBhbGxvd2luZyBmb3IKICAiaW5maW5pdGUiIHByb21pc2UgY2hhaW5pbmcuCi0gUHJvbWlzZXMgaGF2ZSBhIHN5bmNocm9ub3VzIGB3YWl0YCBtZXRob2QuCi0gUHJvbWlzZXMgY2FuIGJlIGNhbmNlbGxlZC4KLSBXb3JrcyB3aXRoIGFueSBvYmplY3QgdGhhdCBoYXMgYSBgdGhlbmAgZnVuY3Rpb24uCi0gQyMgc3R5bGUgYXN5bmMvYXdhaXQgY29yb3V0aW5lIHByb21pc2VzIHVzaW5nCiAgYEd1enpsZUh0dHBcUHJvbWlzZVxjb3JvdXRpbmUoKWAuCgoKIyBRdWljayBzdGFydAoKQSAqcHJvbWlzZSogcmVwcmVzZW50cyB0aGUgZXZlbnR1YWwgcmVzdWx0IG9mIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uIFRoZQpwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyBgdGhlbmAgbWV0aG9kLCB3aGljaApyZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZSByZWFzb24Kd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuCgoKIyMgQ2FsbGJhY2tzCgpDYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYHRoZW5gIG1ldGhvZCBieSBwcm92aWRpbmcgYW4gb3B0aW9uYWwgCmAkb25GdWxmaWxsZWRgIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGAkb25SZWplY3RlZGAgZnVuY3Rpb24uCgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UtPnRoZW4oCiAgICAvLyAkb25GdWxmaWxsZWQKICAgIGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICBlY2hvICdUaGUgcHJvbWlzZSB3YXMgZnVsZmlsbGVkLic7CiAgICB9LAogICAgLy8gJG9uUmVqZWN0ZWQKICAgIGZ1bmN0aW9uICgkcmVhc29uKSB7CiAgICAgICAgZWNobyAnVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkLic7CiAgICB9Cik7CmBgYAoKKlJlc29sdmluZyogYSBwcm9taXNlIG1lYW5zIHRoYXQgeW91IGVpdGhlciBmdWxmaWxsIGEgcHJvbWlzZSB3aXRoIGEgKnZhbHVlKiBvcgpyZWplY3QgYSBwcm9taXNlIHdpdGggYSAqcmVhc29uKi4gUmVzb2x2aW5nIGEgcHJvbWlzZXMgdHJpZ2dlcnMgY2FsbGJhY2tzCnJlZ2lzdGVyZWQgd2l0aCB0aGUgcHJvbWlzZXMncyBgdGhlbmAgbWV0aG9kLiBUaGVzZSBjYWxsYmFja3MgYXJlIHRyaWdnZXJlZApvbmx5IG9uY2UgYW5kIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IHdlcmUgYWRkZWQuCgoKIyMgUmVzb2x2aW5nIGEgcHJvbWlzZQoKUHJvbWlzZXMgYXJlIGZ1bGZpbGxlZCB1c2luZyB0aGUgYHJlc29sdmUoJHZhbHVlKWAgbWV0aG9kLiBSZXNvbHZpbmcgYSBwcm9taXNlCndpdGggYW55IHZhbHVlIG90aGVyIHRoYW4gYSBgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGVkUHJvbWlzZWAgd2lsbCB0cmlnZ2VyCmFsbCBvZiB0aGUgb25GdWxmaWxsZWQgY2FsbGJhY2tzIChyZXNvbHZpbmcgYSBwcm9taXNlIHdpdGggYSByZWplY3RlZCBwcm9taXNlCndpbGwgcmVqZWN0IHRoZSBwcm9taXNlIGFuZCB0cmlnZ2VyIHRoZSBgJG9uUmVqZWN0ZWRgIGNhbGxiYWNrcykuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZQogICAgLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICAvLyBSZXR1cm4gYSB2YWx1ZSBhbmQgZG9uJ3QgYnJlYWsgdGhlIGNoYWluCiAgICAgICAgcmV0dXJuICJIZWxsbywgIiAuICR2YWx1ZTsKICAgIH0pCiAgICAvLyBUaGlzIHRoZW4gaXMgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGZpcnN0IHRoZW4gYW5kIHJlY2VpdmVzIHRoZSB2YWx1ZQogICAgLy8gcmV0dXJuZWQgZnJvbSB0aGUgZmlyc3QgdGhlbi4KICAgIC0+dGhlbihmdW5jdGlvbiAoJHZhbHVlKSB7CiAgICAgICAgZWNobyAkdmFsdWU7CiAgICB9KTsKCi8vIFJlc29sdmluZyB0aGUgcHJvbWlzZSB0cmlnZ2VycyB0aGUgJG9uRnVsZmlsbGVkIGNhbGxiYWNrcyBhbmQgb3V0cHV0cwovLyAiSGVsbG8sIHJlYWRlciIuCiRwcm9taXNlLT5yZXNvbHZlKCdyZWFkZXIuJyk7CmBgYAoKCiMjIFByb21pc2UgZm9yd2FyZGluZwoKUHJvbWlzZXMgY2FuIGJlIGNoYWluZWQgb25lIGFmdGVyIHRoZSBvdGhlci4gRWFjaCB0aGVuIGluIHRoZSBjaGFpbiBpcyBhIG5ldwpwcm9taXNlLiBUaGUgcmV0dXJuIHZhbHVlIG9mIGEgcHJvbWlzZSBpcyB3aGF0J3MgZm9yd2FyZGVkIHRvIHRoZSBuZXh0CnByb21pc2UgaW4gdGhlIGNoYWluLiBSZXR1cm5pbmcgYSBwcm9taXNlIGluIGEgYHRoZW5gIGNhbGxiYWNrIHdpbGwgY2F1c2UgdGhlCnN1YnNlcXVlbnQgcHJvbWlzZXMgaW4gdGhlIGNoYWluIHRvIG9ubHkgYmUgZnVsZmlsbGVkIHdoZW4gdGhlIHJldHVybmVkIHByb21pc2UKaGFzIGJlZW4gZnVsZmlsbGVkLiBUaGUgbmV4dCBwcm9taXNlIGluIHRoZSBjaGFpbiB3aWxsIGJlIGludm9rZWQgd2l0aCB0aGUKcmVzb2x2ZWQgdmFsdWUgb2YgdGhlIHByb21pc2UuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokbmV4dFByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwoKJHByb21pc2UKICAgIC0+dGhlbihmdW5jdGlvbiAoJHZhbHVlKSB1c2UgKCRuZXh0UHJvbWlzZSkgewogICAgICAgIGVjaG8gJHZhbHVlOwogICAgICAgIHJldHVybiAkbmV4dFByb21pc2U7CiAgICB9KQogICAgLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICBlY2hvICR2YWx1ZTsKICAgIH0pOwoKLy8gVHJpZ2dlcnMgdGhlIGZpcnN0IGNhbGxiYWNrIGFuZCBvdXRwdXRzICJBIgokcHJvbWlzZS0+cmVzb2x2ZSgnQScpOwovLyBUcmlnZ2VycyB0aGUgc2Vjb25kIGNhbGxiYWNrIGFuZCBvdXRwdXRzICJCIgokbmV4dFByb21pc2UtPnJlc29sdmUoJ0InKTsKYGBgCgojIyBQcm9taXNlIHJlamVjdGlvbgoKV2hlbiBhIHByb21pc2UgaXMgcmVqZWN0ZWQsIHRoZSBgJG9uUmVqZWN0ZWRgIGNhbGxiYWNrcyBhcmUgaW52b2tlZCB3aXRoIHRoZQpyZWplY3Rpb24gcmVhc29uLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UtPnRoZW4obnVsbCwgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgIGVjaG8gJHJlYXNvbjsKfSk7CgokcHJvbWlzZS0+cmVqZWN0KCdFcnJvciEnKTsKLy8gT3V0cHV0cyAiRXJyb3IhIgpgYGAKCiMjIFJlamVjdGlvbiBmb3J3YXJkaW5nCgpJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGluIGFuIGAkb25SZWplY3RlZGAgY2FsbGJhY2ssIHN1YnNlcXVlbnQKYCRvblJlamVjdGVkYCBjYWxsYmFja3MgYXJlIGludm9rZWQgd2l0aCB0aGUgdGhyb3duIGV4Y2VwdGlvbiBhcyB0aGUgcmVhc29uLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UtPnRoZW4obnVsbCwgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCRyZWFzb24pOwp9KS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgYXNzZXJ0KCRyZWFzb24tPmdldE1lc3NhZ2UoKSA9PT0gJ0Vycm9yIScpOwp9KTsKCiRwcm9taXNlLT5yZWplY3QoJ0Vycm9yIScpOwpgYGAKCllvdSBjYW4gYWxzbyBmb3J3YXJkIGEgcmVqZWN0aW9uIGRvd24gdGhlIHByb21pc2UgY2hhaW4gYnkgcmV0dXJuaW5nIGEKYEd1enpsZUh0dHBcUHJvbWlzZVxSZWplY3RlZFByb21pc2VgIGluIGVpdGhlciBhbiBgJG9uRnVsZmlsbGVkYCBvcgpgJG9uUmVqZWN0ZWRgIGNhbGxiYWNrLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxSZWplY3RlZFByb21pc2U7CgokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT50aGVuKG51bGwsIGZ1bmN0aW9uICgkcmVhc29uKSB7CiAgICByZXR1cm4gbmV3IFJlamVjdGVkUHJvbWlzZSgkcmVhc29uKTsKfSktPnRoZW4obnVsbCwgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgIGFzc2VydCgkcmVhc29uID09PSAnRXJyb3IhJyk7Cn0pOwoKJHByb21pc2UtPnJlamVjdCgnRXJyb3IhJyk7CmBgYAoKSWYgYW4gZXhjZXB0aW9uIGlzIG5vdCB0aHJvd24gaW4gYSBgJG9uUmVqZWN0ZWRgIGNhbGxiYWNrIGFuZCB0aGUgY2FsbGJhY2sKZG9lcyBub3QgcmV0dXJuIGEgcmVqZWN0ZWQgcHJvbWlzZSwgZG93bnN0cmVhbSBgJG9uRnVsZmlsbGVkYCBjYWxsYmFja3MgYXJlCmludm9rZWQgdXNpbmcgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gdGhlIGAkb25SZWplY3RlZGAgY2FsbGJhY2suCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGVkUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UKICAgIC0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgICAgIHJldHVybiAiSXQncyBvayI7CiAgICB9KQogICAgLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICBhc3NlcnQoJHZhbHVlID09PSAiSXQncyBvayIpOwogICAgfSk7CgokcHJvbWlzZS0+cmVqZWN0KCdFcnJvciEnKTsKYGBgCgojIFN5bmNocm9ub3VzIHdhaXQKCllvdSBjYW4gc3luY2hyb25vdXNseSBmb3JjZSBwcm9taXNlcyB0byBjb21wbGV0ZSB1c2luZyBhIHByb21pc2UncyBgd2FpdGAKbWV0aG9kLiBXaGVuIGNyZWF0aW5nIGEgcHJvbWlzZSwgeW91IGNhbiBwcm92aWRlIGEgd2FpdCBmdW5jdGlvbiB0aGF0IGlzIHVzZWQKdG8gc3luY2hyb25vdXNseSBmb3JjZSBhIHByb21pc2UgdG8gY29tcGxldGUuIFdoZW4gYSB3YWl0IGZ1bmN0aW9uIGlzIGludm9rZWQKaXQgaXMgZXhwZWN0ZWQgdG8gZGVsaXZlciBhIHZhbHVlIHRvIHRoZSBwcm9taXNlIG9yIHJlamVjdCB0aGUgcHJvbWlzZS4gSWYgdGhlCndhaXQgZnVuY3Rpb24gZG9lcyBub3QgZGVsaXZlciBhIHZhbHVlLCB0aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uIFRoZSB3YWl0CmZ1bmN0aW9uIHByb3ZpZGVkIHRvIGEgcHJvbWlzZSBjb25zdHJ1Y3RvciBpcyBpbnZva2VkIHdoZW4gdGhlIGB3YWl0YCBmdW5jdGlvbgpvZiB0aGUgcHJvbWlzZSBpcyBjYWxsZWQuCgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB1c2UgKCYkcHJvbWlzZSkgewogICAgJHByb21pc2UtPnJlc29sdmUoJ2ZvbycpOwp9KTsKCi8vIENhbGxpbmcgd2FpdCB3aWxsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHByb21pc2UuCmVjaG8gJHByb21pc2UtPndhaXQoKTsgLy8gb3V0cHV0cyAiZm9vIgpgYGAKCklmIGFuIGV4Y2VwdGlvbiBpcyBlbmNvdW50ZXJlZCB3aGlsZSBpbnZva2luZyB0aGUgd2FpdCBmdW5jdGlvbiBvZiBhIHByb21pc2UsCnRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBhbmQgdGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24uCgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB1c2UgKCYkcHJvbWlzZSkgewogICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ2ZvbycpOwp9KTsKCiRwcm9taXNlLT53YWl0KCk7IC8vIHRocm93cyB0aGUgZXhjZXB0aW9uLgpgYGAKCkNhbGxpbmcgYHdhaXRgIG9uIGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuIGZ1bGZpbGxlZCB3aWxsIG5vdCB0cmlnZ2VyIHRoZSB3YWl0CmZ1bmN0aW9uLiBJdCB3aWxsIHNpbXBseSByZXR1cm4gdGhlIHByZXZpb3VzbHkgcmVzb2x2ZWQgdmFsdWUuCgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB7IGRpZSgndGhpcyBpcyBub3QgY2FsbGVkIScpOyB9KTsKJHByb21pc2UtPnJlc29sdmUoJ2ZvbycpOwplY2hvICRwcm9taXNlLT53YWl0KCk7IC8vIG91dHB1dHMgImZvbyIKYGBgCgpDYWxsaW5nIGB3YWl0YCBvbiBhIHByb21pc2UgdGhhdCBoYXMgYmVlbiByZWplY3RlZCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbi4gSWYKdGhlIHJlamVjdGlvbiByZWFzb24gaXMgYW4gaW5zdGFuY2Ugb2YgYFxFeGNlcHRpb25gIHRoZSByZWFzb24gaXMgdGhyb3duLgpPdGhlcndpc2UsIGEgYEd1enpsZUh0dHBcUHJvbWlzZVxSZWplY3Rpb25FeGNlcHRpb25gIGlzIHRocm93biBhbmQgdGhlIHJlYXNvbgpjYW4gYmUgb2J0YWluZWQgYnkgY2FsbGluZyB0aGUgYGdldFJlYXNvbmAgbWV0aG9kIG9mIHRoZSBleGNlcHRpb24uCgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZS0+cmVqZWN0KCdmb28nKTsKJHByb21pc2UtPndhaXQoKTsKYGBgCgo+IFBIUCBGYXRhbCBlcnJvcjogIFVuY2F1Z2h0IGV4Y2VwdGlvbiAnR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGlvbkV4Y2VwdGlvbicgd2l0aCBtZXNzYWdlICdUaGUgcHJvbWlzZSB3YXMgcmVqZWN0ZWQgd2l0aCB2YWx1ZTogZm9vJwoKCiMjIFVud3JhcHBpbmcgYSBwcm9taXNlCgpXaGVuIHN5bmNocm9ub3VzbHkgd2FpdGluZyBvbiBhIHByb21pc2UsIHlvdSBhcmUgam9pbmluZyB0aGUgc3RhdGUgb2YgdGhlCnByb21pc2UgaW50byB0aGUgY3VycmVudCBzdGF0ZSBvZiBleGVjdXRpb24gKGkuZS4sIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlCnByb21pc2UgaWYgaXQgd2FzIGZ1bGZpbGxlZCBvciB0aHJvdyBhbiBleGNlcHRpb24gaWYgaXQgd2FzIHJlamVjdGVkKS4gVGhpcyBpcwpjYWxsZWQgInVud3JhcHBpbmciIHRoZSBwcm9taXNlLiBXYWl0aW5nIG9uIGEgcHJvbWlzZSB3aWxsIGJ5IGRlZmF1bHQgdW53cmFwCnRoZSBwcm9taXNlIHN0YXRlLgoKWW91IGNhbiBmb3JjZSBhIHByb21pc2UgdG8gcmVzb2x2ZSBhbmQgKm5vdCogdW53cmFwIHRoZSBzdGF0ZSBvZiB0aGUgcHJvbWlzZQpieSBwYXNzaW5nIGBmYWxzZWAgdG8gdGhlIGZpcnN0IGFyZ3VtZW50IG9mIHRoZSBgd2FpdGAgZnVuY3Rpb246CgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZS0+cmVqZWN0KCdmb28nKTsKLy8gVGhpcyB3aWxsIG5vdCB0aHJvdyBhbiBleGNlcHRpb24uIEl0IHNpbXBseSBlbnN1cmVzIHRoZSBwcm9taXNlIGhhcwovLyBiZWVuIHJlc29sdmVkLgokcHJvbWlzZS0+d2FpdChmYWxzZSk7CmBgYAoKV2hlbiB1bndyYXBwaW5nIGEgcHJvbWlzZSwgdGhlIHJlc29sdmVkIHZhbHVlIG9mIHRoZSBwcm9taXNlIHdpbGwgYmUgd2FpdGVkCnVwb24gdW50aWwgdGhlIHVud3JhcHBlZCB2YWx1ZSBpcyBub3QgYSBwcm9taXNlLiBUaGlzIG1lYW5zIHRoYXQgaWYgeW91IHJlc29sdmUKcHJvbWlzZSBBIHdpdGggYSBwcm9taXNlIEIgYW5kIHVud3JhcCBwcm9taXNlIEEsIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUKd2FpdCBmdW5jdGlvbiB3aWxsIGJlIHRoZSB2YWx1ZSBkZWxpdmVyZWQgdG8gcHJvbWlzZSBCLgoKKipOb3RlKio6IHdoZW4geW91IGRvIG5vdCB1bndyYXAgdGhlIHByb21pc2UsIG5vIHZhbHVlIGlzIHJldHVybmVkLgoKCiMgQ2FuY2VsbGF0aW9uCgpZb3UgY2FuIGNhbmNlbCBhIHByb21pc2UgdGhhdCBoYXMgbm90IHlldCBiZWVuIGZ1bGZpbGxlZCB1c2luZyB0aGUgYGNhbmNlbCgpYAptZXRob2Qgb2YgYSBwcm9taXNlLiBXaGVuIGNyZWF0aW5nIGEgcHJvbWlzZSB5b3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwKY2FuY2VsIGZ1bmN0aW9uIHRoYXQgd2hlbiBpbnZva2VkIGNhbmNlbHMgdGhlIGFjdGlvbiBvZiBjb21wdXRpbmcgYSByZXNvbHV0aW9uCm9mIHRoZSBwcm9taXNlLgoKCiMgQVBJCgoKIyMgUHJvbWlzZQoKV2hlbiBjcmVhdGluZyBhIHByb21pc2Ugb2JqZWN0LCB5b3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwgYCR3YWl0Rm5gIGFuZApgJGNhbmNlbEZuYC4gYCR3YWl0Rm5gIGlzIGEgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBpcwpleHBlY3RlZCB0byByZXNvbHZlIHRoZSBwcm9taXNlLiBgJGNhbmNlbEZuYCBpcyBhIGZ1bmN0aW9uIHdpdGggbm8gYXJndW1lbnRzCnRoYXQgaXMgZXhwZWN0ZWQgdG8gY2FuY2VsIHRoZSBjb21wdXRhdGlvbiBvZiBhIHByb21pc2UuIEl0IGlzIGludm9rZWQgd2hlbiB0aGUKYGNhbmNlbCgpYCBtZXRob2Qgb2YgYSBwcm9taXNlIGlzIGNhbGxlZC4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2U7CgokcHJvbWlzZSA9IG5ldyBQcm9taXNlKAogICAgZnVuY3Rpb24gKCkgdXNlICgmJHByb21pc2UpIHsKICAgICAgICAkcHJvbWlzZS0+cmVzb2x2ZSgnd2FpdGVkJyk7CiAgICB9LAogICAgZnVuY3Rpb24gKCkgewogICAgICAgIC8vIGRvIHNvbWV0aGluZyB0aGF0IHdpbGwgY2FuY2VsIHRoZSBwcm9taXNlIGNvbXB1dGF0aW9uIChlLmcuLCBjbG9zZQogICAgICAgIC8vIGEgc29ja2V0LCBjYW5jZWwgYSBkYXRhYmFzZSBxdWVyeSwgZXRjLi4uKQogICAgfQopOwoKYXNzZXJ0KCd3YWl0ZWQnID09PSAkcHJvbWlzZS0+d2FpdCgpKTsKYGBgCgpBIHByb21pc2UgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKCi0gYHRoZW4oY2FsbGFibGUgJG9uRnVsZmlsbGVkLCBjYWxsYWJsZSAkb25SZWplY3RlZCkgOiBQcm9taXNlSW50ZXJmYWNlYAogIAogIEFwcGVuZHMgZnVsZmlsbG1lbnQgYW5kIHJlamVjdGlvbiBoYW5kbGVycyB0byB0aGUgcHJvbWlzZSwgYW5kIHJldHVybnMgYSBuZXcgcHJvbWlzZSByZXNvbHZpbmcgdG8gdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgY2FsbGVkIGhhbmRsZXIuCgotIGBvdGhlcndpc2UoY2FsbGFibGUgJG9uUmVqZWN0ZWQpIDogUHJvbWlzZUludGVyZmFjZWAKICAKICBBcHBlbmRzIGEgcmVqZWN0aW9uIGhhbmRsZXIgY2FsbGJhY2sgdG8gdGhlIHByb21pc2UsIGFuZCByZXR1cm5zIGEgbmV3IHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxiYWNrIGlmIGl0IGlzIGNhbGxlZCwgb3IgdG8gaXRzIG9yaWdpbmFsIGZ1bGZpbGxtZW50IHZhbHVlIGlmIHRoZSBwcm9taXNlIGlzIGluc3RlYWQgZnVsZmlsbGVkLgoKLSBgd2FpdCgkdW53cmFwID0gdHJ1ZSkgOiBtaXhlZGAKCiAgU3luY2hyb25vdXNseSB3YWl0cyBvbiB0aGUgcHJvbWlzZSB0byBjb21wbGV0ZS4KICAKICBgJHVud3JhcGAgY29udHJvbHMgd2hldGhlciBvciBub3QgdGhlIHZhbHVlIG9mIHRoZSBwcm9taXNlIGlzIHJldHVybmVkIGZvciBhCiAgZnVsZmlsbGVkIHByb21pc2Ugb3IgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KICBUaGlzIGlzIHNldCB0byBgdHJ1ZWAgYnkgZGVmYXVsdC4KCi0gYGNhbmNlbCgpYAoKICBBdHRlbXB0cyB0byBjYW5jZWwgdGhlIHByb21pc2UgaWYgcG9zc2libGUuIFRoZSBwcm9taXNlIGJlaW5nIGNhbmNlbGxlZCBhbmQKICB0aGUgcGFyZW50IG1vc3QgYW5jZXN0b3IgdGhhdCBoYXMgbm90IHlldCBiZWVuIHJlc29sdmVkIHdpbGwgYWxzbyBiZQogIGNhbmNlbGxlZC4gQW55IHByb21pc2VzIHdhaXRpbmcgb24gdGhlIGNhbmNlbGxlZCBwcm9taXNlIHRvIHJlc29sdmUgd2lsbCBhbHNvCiAgYmUgY2FuY2VsbGVkLgoKLSBgZ2V0U3RhdGUoKSA6IHN0cmluZ2AKCiAgUmV0dXJucyB0aGUgc3RhdGUgb2YgdGhlIHByb21pc2UuIE9uZSBvZiBgcGVuZGluZ2AsIGBmdWxmaWxsZWRgLCBvcgogIGByZWplY3RlZGAuCgotIGByZXNvbHZlKCR2YWx1ZSlgCgogIEZ1bGZpbGxzIHRoZSBwcm9taXNlIHdpdGggdGhlIGdpdmVuIGAkdmFsdWVgLgoKLSBgcmVqZWN0KCRyZWFzb24pYAoKICBSZWplY3RzIHRoZSBwcm9taXNlIHdpdGggdGhlIGdpdmVuIGAkcmVhc29uYC4KCgojIyBGdWxmaWxsZWRQcm9taXNlCgpBIGZ1bGZpbGxlZCBwcm9taXNlIGNhbiBiZSBjcmVhdGVkIHRvIHJlcHJlc2VudCBhIHByb21pc2UgdGhhdCBoYXMgYmVlbgpmdWxmaWxsZWQuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgRnVsZmlsbGVkUHJvbWlzZSgndmFsdWUnKTsKCi8vIEZ1bGZpbGxlZCBjYWxsYmFja3MgYXJlIGltbWVkaWF0ZWx5IGludm9rZWQuCiRwcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgIGVjaG8gJHZhbHVlOwp9KTsKYGBgCgoKIyMgUmVqZWN0ZWRQcm9taXNlCgpBIHJlamVjdGVkIHByb21pc2UgY2FuIGJlIGNyZWF0ZWQgdG8gcmVwcmVzZW50IGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuCnJlamVjdGVkLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0ZWRQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUmVqZWN0ZWRQcm9taXNlKCdFcnJvcicpOwoKLy8gUmVqZWN0ZWQgY2FsbGJhY2tzIGFyZSBpbW1lZGlhdGVseSBpbnZva2VkLgokcHJvbWlzZS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgZWNobyAkcmVhc29uOwp9KTsKYGBgCgoKIyBQcm9taXNlIGludGVyb3AKClRoaXMgbGlicmFyeSB3b3JrcyB3aXRoIGZvcmVpZ24gcHJvbWlzZXMgdGhhdCBoYXZlIGEgYHRoZW5gIG1ldGhvZC4gVGhpcyBtZWFucwp5b3UgY2FuIHVzZSBHdXp6bGUgcHJvbWlzZXMgd2l0aCBbUmVhY3QgcHJvbWlzZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdHBocC9wcm9taXNlKQpmb3IgZXhhbXBsZS4gV2hlbiBhIGZvcmVpZ24gcHJvbWlzZSBpcyByZXR1cm5lZCBpbnNpZGUgb2YgYSB0aGVuIG1ldGhvZApjYWxsYmFjaywgcHJvbWlzZSByZXNvbHV0aW9uIHdpbGwgb2NjdXIgcmVjdXJzaXZlbHkuCgpgYGBwaHAKLy8gQ3JlYXRlIGEgUmVhY3QgcHJvbWlzZQokZGVmZXJyZWQgPSBuZXcgUmVhY3RcUHJvbWlzZVxEZWZlcnJlZCgpOwokcmVhY3RQcm9taXNlID0gJGRlZmVycmVkLT5wcm9taXNlKCk7CgovLyBDcmVhdGUgYSBHdXp6bGUgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCB3aXRoIGEgUmVhY3QgcHJvbWlzZS4KJGd1enpsZVByb21pc2UgPSBuZXcgXEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlKCk7CiRndXp6bGVQcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJHJlYWN0UHJvbWlzZSkgewogICAgLy8gRG8gc29tZXRoaW5nIHNvbWV0aGluZyB3aXRoIHRoZSB2YWx1ZS4uLgogICAgLy8gUmV0dXJuIHRoZSBSZWFjdCBwcm9taXNlCiAgICByZXR1cm4gJHJlYWN0UHJvbWlzZTsKfSk7CmBgYAoKUGxlYXNlIG5vdGUgdGhhdCB3YWl0IGFuZCBjYW5jZWwgY2hhaW5pbmcgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHdoZW4gZm9yd2FyZGluZwphIGZvcmVpZ24gcHJvbWlzZS4gWW91IHdpbGwgbmVlZCB0byB3cmFwIGEgdGhpcmQtcGFydHkgcHJvbWlzZSB3aXRoIGEgR3V6emxlCnByb21pc2UgaW4gb3JkZXIgdG8gdXRpbGl6ZSB3YWl0IGFuZCBjYW5jZWwgZnVuY3Rpb25zIHdpdGggZm9yZWlnbiBwcm9taXNlcy4KCgojIyBFdmVudCBMb29wIEludGVncmF0aW9uCgpJbiBvcmRlciB0byBrZWVwIHRoZSBzdGFjayBzaXplIGNvbnN0YW50LCBHdXp6bGUgcHJvbWlzZXMgYXJlIHJlc29sdmVkCmFzeW5jaHJvbm91c2x5IHVzaW5nIGEgdGFzayBxdWV1ZS4gV2hlbiB3YWl0aW5nIG9uIHByb21pc2VzIHN5bmNocm9ub3VzbHksIHRoZQp0YXNrIHF1ZXVlIHdpbGwgYmUgYXV0b21hdGljYWxseSBydW4gdG8gZW5zdXJlIHRoYXQgdGhlIGJsb2NraW5nIHByb21pc2UgYW5kCmFueSBmb3J3YXJkZWQgcHJvbWlzZXMgYXJlIHJlc29sdmVkLiBXaGVuIHVzaW5nIHByb21pc2VzIGFzeW5jaHJvbm91c2x5IGluIGFuCmV2ZW50IGxvb3AsIHlvdSB3aWxsIG5lZWQgdG8gcnVuIHRoZSB0YXNrIHF1ZXVlIG9uIGVhY2ggdGljayBvZiB0aGUgbG9vcC4gSWYKeW91IGRvIG5vdCBydW4gdGhlIHRhc2sgcXVldWUsIHRoZW4gcHJvbWlzZXMgd2lsbCBub3QgYmUgcmVzb2x2ZWQuCgpZb3UgY2FuIHJ1biB0aGUgdGFzayBxdWV1ZSB1c2luZyB0aGUgYHJ1bigpYCBtZXRob2Qgb2YgdGhlIGdsb2JhbCB0YXNrIHF1ZXVlCmluc3RhbmNlLgoKYGBgcGhwCi8vIEdldCB0aGUgZ2xvYmFsIHRhc2sgcXVldWUKJHF1ZXVlID0gXEd1enpsZUh0dHBcUHJvbWlzZVxxdWV1ZSgpOwokcXVldWUtPnJ1bigpOwpgYGAKCkZvciBleGFtcGxlLCB5b3UgY291bGQgdXNlIEd1enpsZSBwcm9taXNlcyB3aXRoIFJlYWN0IHVzaW5nIGEgcGVyaW9kaWMgdGltZXI6CgpgYGBwaHAKJGxvb3AgPSBSZWFjdFxFdmVudExvb3BcRmFjdG9yeTo6Y3JlYXRlKCk7CiRsb29wLT5hZGRQZXJpb2RpY1RpbWVyKDAsIFskcXVldWUsICdydW4nXSk7CmBgYAoKKlRPRE8qOiBQZXJoYXBzIGFkZGluZyBhIGBmdXR1cmVUaWNrKClgIG9uIGVhY2ggdGljayB3b3VsZCBiZSBmYXN0ZXI/CgoKIyBJbXBsZW1lbnRhdGlvbiBub3RlcwoKCiMjIFByb21pc2UgcmVzb2x1dGlvbiBhbmQgY2hhaW5pbmcgaXMgaGFuZGxlZCBpdGVyYXRpdmVseQoKQnkgc2h1ZmZsaW5nIHBlbmRpbmcgaGFuZGxlcnMgZnJvbSBvbmUgb3duZXIgdG8gYW5vdGhlciwgcHJvbWlzZXMgYXJlCnJlc29sdmVkIGl0ZXJhdGl2ZWx5LCBhbGxvd2luZyBmb3IgImluZmluaXRlIiB0aGVuIGNoYWluaW5nLgoKYGBgcGhwCjw/cGhwCnJlcXVpcmUgJ3ZlbmRvci9hdXRvbG9hZC5waHAnOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHBhcmVudCA9IG5ldyBQcm9taXNlKCk7CiRwID0gJHBhcmVudDsKCmZvciAoJGkgPSAwOyAkaSA8IDEwMDA7ICRpKyspIHsKICAgICRwID0gJHAtPnRoZW4oZnVuY3Rpb24gKCR2KSB7CiAgICAgICAgLy8gVGhlIHN0YWNrIHNpemUgcmVtYWlucyBjb25zdGFudCAoYSBnb29kIHRoaW5nKQogICAgICAgIGVjaG8geGRlYnVnX2dldF9zdGFja19kZXB0aCgpIC4gJywgJzsKICAgICAgICByZXR1cm4gJHYgKyAxOwogICAgfSk7Cn0KCiRwYXJlbnQtPnJlc29sdmUoMCk7CnZhcl9kdW1wKCRwLT53YWl0KCkpOyAvLyBpbnQoMTAwMCkKCmBgYAoKV2hlbiBhIHByb21pc2UgaXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIHdpdGggYSBub24tcHJvbWlzZSB2YWx1ZSwgdGhlIHByb21pc2UKdGhlbiB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGhhbmRsZXJzIG9mIGVhY2ggY2hpbGQgcHJvbWlzZSBhbmQgZGVsaXZlcnMgdmFsdWVzCmRvd24gdGhlIGNoYWluIHdpdGhvdXQgdXNpbmcgcmVjdXJzaW9uLgoKV2hlbiBhIHByb21pc2UgaXMgcmVzb2x2ZWQgd2l0aCBhbm90aGVyIHByb21pc2UsIHRoZSBvcmlnaW5hbCBwcm9taXNlIHRyYW5zZmVycwphbGwgb2YgaXRzIHBlbmRpbmcgaGFuZGxlcnMgdG8gdGhlIG5ldyBwcm9taXNlLiBXaGVuIHRoZSBuZXcgcHJvbWlzZSBpcwpldmVudHVhbGx5IHJlc29sdmVkLCBhbGwgb2YgdGhlIHBlbmRpbmcgaGFuZGxlcnMgYXJlIGRlbGl2ZXJlZCB0aGUgZm9yd2FyZGVkCnZhbHVlLgoKCiMjIEEgcHJvbWlzZSBpcyB0aGUgZGVmZXJyZWQuCgpTb21lIHByb21pc2UgbGlicmFyaWVzIGltcGxlbWVudCBwcm9taXNlcyB1c2luZyBhIGRlZmVycmVkIG9iamVjdCB0byByZXByZXNlbnQKYSBjb21wdXRhdGlvbiBhbmQgYSBwcm9taXNlIG9iamVjdCB0byByZXByZXNlbnQgdGhlIGRlbGl2ZXJ5IG9mIHRoZSByZXN1bHQgb2YKdGhlIGNvbXB1dGF0aW9uLiBUaGlzIGlzIGEgbmljZSBzZXBhcmF0aW9uIG9mIGNvbXB1dGF0aW9uIGFuZCBkZWxpdmVyeSBiZWNhdXNlCmNvbnN1bWVycyBvZiB0aGUgcHJvbWlzZSBjYW5ub3QgbW9kaWZ5IHRoZSB2YWx1ZSB0aGF0IHdpbGwgYmUgZXZlbnR1YWxseQpkZWxpdmVyZWQuCgpPbmUgc2lkZSBlZmZlY3Qgb2YgYmVpbmcgYWJsZSB0byBpbXBsZW1lbnQgcHJvbWlzZSByZXNvbHV0aW9uIGFuZCBjaGFpbmluZwppdGVyYXRpdmVseSBpcyB0aGF0IHlvdSBuZWVkIHRvIGJlIGFibGUgZm9yIG9uZSBwcm9taXNlIHRvIHJlYWNoIGludG8gdGhlIHN0YXRlCm9mIGFub3RoZXIgcHJvbWlzZSB0byBzaHVmZmxlIGFyb3VuZCBvd25lcnNoaXAgb2YgaGFuZGxlcnMuIEluIG9yZGVyIHRvIGFjaGlldmUKdGhpcyB3aXRob3V0IG1ha2luZyB0aGUgaGFuZGxlcnMgb2YgYSBwcm9taXNlIHB1YmxpY2x5IG11dGFibGUsIGEgcHJvbWlzZSBpcwphbHNvIHRoZSBkZWZlcnJlZCB2YWx1ZSwgYWxsb3dpbmcgcHJvbWlzZXMgb2YgdGhlIHNhbWUgcGFyZW50IGNsYXNzIHRvIHJlYWNoCmludG8gYW5kIG1vZGlmeSB0aGUgcHJpdmF0ZSBwcm9wZXJ0aWVzIG9mIHByb21pc2VzIG9mIHRoZSBzYW1lIHR5cGUuIFdoaWxlIHRoaXMKZG9lcyBhbGxvdyBjb25zdW1lcnMgb2YgdGhlIHZhbHVlIHRvIG1vZGlmeSB0aGUgcmVzb2x1dGlvbiBvciByZWplY3Rpb24gb2YgdGhlCmRlZmVycmVkLCBpdCBpcyBhIHNtYWxsIHByaWNlIHRvIHBheSBmb3Iga2VlcGluZyB0aGUgc3RhY2sgc2l6ZSBjb25zdGFudC4KCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHsgZWNobyAkdmFsdWU7IH0pOwovLyBUaGUgcHJvbWlzZSBpcyB0aGUgZGVmZXJyZWQgdmFsdWUsIHNvIHlvdSBjYW4gZGVsaXZlciBhIHZhbHVlIHRvIGl0LgokcHJvbWlzZS0+cmVzb2x2ZSgnZm9vJyk7Ci8vIHByaW50cyAiZm9vIgpgYGAK]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/AggregateException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gdG9vIG1hbnkgZXJyb3JzIG9jY3VyIGluIHRoZSBzb21lKCkgb3IgYW55KCkgbWV0aG9kcy4KICovCmNsYXNzIEFnZ3JlZ2F0ZUV4Y2VwdGlvbiBleHRlbmRzIFJlamVjdGlvbkV4Y2VwdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1zZywgYXJyYXkgJHJlYXNvbnMpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgKICAgICAgICAgICAgJHJlYXNvbnMsCiAgICAgICAgICAgIHNwcmludGYoJyVzOyAlZCByZWplY3RlZCBwcm9taXNlcycsICRtc2csIGNvdW50KCRyZWFzb25zKSkKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/CancellationException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBFeGNlcHRpb24gdGhhdCBpcyBzZXQgYXMgdGhlIHJlYXNvbiBmb3IgYSBwcm9taXNlIHRoYXQgaGFzIGJlZW4gY2FuY2VsbGVkLgogKi8KY2xhc3MgQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIGV4dGVuZHMgUmVqZWN0aW9uRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Coroutine.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCnVzZSBFeGNlcHRpb247CnVzZSBHZW5lcmF0b3I7CnVzZSBUaHJvd2FibGU7CgovKioKICogQ3JlYXRlcyBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB1c2luZyBhIGdlbmVyYXRvciB0aGF0IHlpZWxkcyB2YWx1ZXMgb3IKICogcHJvbWlzZXMgKHNvbWV3aGF0IHNpbWlsYXIgdG8gQyMncyBhc3luYyBrZXl3b3JkKS4KICoKICogV2hlbiBjYWxsZWQsIHRoZSBjb3JvdXRpbmUgZnVuY3Rpb24gd2lsbCBzdGFydCBhbiBpbnN0YW5jZSBvZiB0aGUgZ2VuZXJhdG9yCiAqIGFuZCByZXR1cm5zIGEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCB3aXRoIGl0cyBmaW5hbCB5aWVsZGVkIHZhbHVlLgogKgogKiBDb250cm9sIGlzIHJldHVybmVkIGJhY2sgdG8gdGhlIGdlbmVyYXRvciB3aGVuIHRoZSB5aWVsZGVkIHByb21pc2Ugc2V0dGxlcy4KICogVGhpcyBjYW4gbGVhZCB0byBsZXNzIHZlcmJvc2UgY29kZSB3aGVuIGRvaW5nIGxvdHMgb2Ygc2VxdWVudGlhbCBhc3luYyBjYWxscwogKiB3aXRoIG1pbmltYWwgcHJvY2Vzc2luZyBpbiBiZXR3ZWVuLgogKgogKiAgICAgdXNlIEd1enpsZUh0dHBcUHJvbWlzZTsKICoKICogICAgIGZ1bmN0aW9uIGNyZWF0ZVByb21pc2UoJHZhbHVlKSB7CiAqICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlXEZ1bGZpbGxlZFByb21pc2UoJHZhbHVlKTsKICogICAgIH0KICoKICogICAgICRwcm9taXNlID0gUHJvbWlzZVxjb3JvdXRpbmUoZnVuY3Rpb24gKCkgewogKiAgICAgICAgICR2YWx1ZSA9ICh5aWVsZCBjcmVhdGVQcm9taXNlKCdhJykpOwogKiAgICAgICAgIHRyeSB7CiAqICAgICAgICAgICAgICR2YWx1ZSA9ICh5aWVsZCBjcmVhdGVQcm9taXNlKCR2YWx1ZSAuICdiJykpOwogKiAgICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICogICAgICAgICAgICAgLy8gVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkLgogKiAgICAgICAgIH0KICogICAgICAgICB5aWVsZCAkdmFsdWUgLiAnYyc7CiAqICAgICB9KTsKICoKICogICAgIC8vIE91dHB1dHMgImFiYyIKICogICAgICRwcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdikgeyBlY2hvICR2OyB9KTsKICoKICogQHBhcmFtIGNhbGxhYmxlICRnZW5lcmF0b3JGbiBHZW5lcmF0b3IgZnVuY3Rpb24gdG8gd3JhcCBpbnRvIGEgcHJvbWlzZS4KICoKICogQHJldHVybiBQcm9taXNlCiAqIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9wZXRrYWFudG9ub3YvYmx1ZWJpcmQvYmxvYi9tYXN0ZXIvQVBJLm1kI2dlbmVyYXRvcnMgaW5zcGlyYXRpb24KICovCmZpbmFsIGNsYXNzIENvcm91dGluZSBpbXBsZW1lbnRzIFByb21pc2VJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIFByb21pc2VJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlICRjdXJyZW50UHJvbWlzZTsKCiAgICAvKioKICAgICAqIEB2YXIgR2VuZXJhdG9yCiAgICAgKi8KICAgIHByaXZhdGUgJGdlbmVyYXRvcjsKCiAgICAvKioKICAgICAqIEB2YXIgUHJvbWlzZQogICAgICovCiAgICBwcml2YXRlICRyZXN1bHQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRnZW5lcmF0b3JGbikKICAgIHsKICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yID0gJGdlbmVyYXRvckZuKCk7CiAgICAgICAgJHRoaXMtPnJlc3VsdCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgd2hpbGUgKGlzc2V0KCR0aGlzLT5jdXJyZW50UHJvbWlzZSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5jdXJyZW50UHJvbWlzZS0+d2FpdCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgJHRoaXMtPm5leHRDb3JvdXRpbmUoJHRoaXMtPmdlbmVyYXRvci0+Y3VycmVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGhlbigKICAgICAgICBjYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgIGNhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKSB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXN1bHQtPnRoZW4oJG9uRnVsZmlsbGVkLCAkb25SZWplY3RlZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG90aGVyd2lzZShjYWxsYWJsZSAkb25SZWplY3RlZCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3VsdC0+b3RoZXJ3aXNlKCRvblJlamVjdGVkKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FpdCgkdW53cmFwID0gdHJ1ZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3VsdC0+d2FpdCgkdW53cmFwKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0LT5nZXRTdGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZXNvbHZlKCR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlamVjdCgkcmVhc29uKQogICAgewogICAgICAgICR0aGlzLT5yZXN1bHQtPnJlamVjdCgkcmVhc29uKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCkKICAgIHsKICAgICAgICAkdGhpcy0+Y3VycmVudFByb21pc2UtPmNhbmNlbCgpOwogICAgICAgICR0aGlzLT5yZXN1bHQtPmNhbmNlbCgpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gbmV4dENvcm91dGluZSgkeWllbGRlZCkKICAgIHsKICAgICAgICAkdGhpcy0+Y3VycmVudFByb21pc2UgPSBwcm9taXNlX2ZvcigkeWllbGRlZCkKICAgICAgICAgICAgLT50aGVuKFskdGhpcywgJ19oYW5kbGVTdWNjZXNzJ10sIFskdGhpcywgJ19oYW5kbGVGYWlsdXJlJ10pOwogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfaGFuZGxlU3VjY2VzcygkdmFsdWUpCiAgICB7CiAgICAgICAgdW5zZXQoJHRoaXMtPmN1cnJlbnRQcm9taXNlKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkbmV4dCA9ICR0aGlzLT5nZW5lcmF0b3ItPnNlbmQoJHZhbHVlKTsKICAgICAgICAgICAgaWYgKCR0aGlzLT5nZW5lcmF0b3ItPnZhbGlkKCkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5uZXh0Q29yb3V0aW5lKCRuZXh0KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHQtPnJlc29sdmUoJHZhbHVlKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICR0aGlzLT5yZXN1bHQtPnJlamVjdCgkZXhjZXB0aW9uKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJHRocm93YWJsZSkgewogICAgICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZWplY3QoJHRocm93YWJsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfaGFuZGxlRmFpbHVyZSgkcmVhc29uKQogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5jdXJyZW50UHJvbWlzZSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG5leHRZaWVsZCA9ICR0aGlzLT5nZW5lcmF0b3ItPnRocm93KGV4Y2VwdGlvbl9mb3IoJHJlYXNvbikpOwogICAgICAgICAgICAvLyBUaGUgdGhyb3cgd2FzIGNhdWdodCwgc28ga2VlcCBpdGVyYXRpbmcgb24gdGhlIGNvcm91dGluZQogICAgICAgICAgICAkdGhpcy0+bmV4dENvcm91dGluZSgkbmV4dFlpZWxkKTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGV4Y2VwdGlvbikgewogICAgICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZWplY3QoJGV4Y2VwdGlvbik7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICR0aHJvd2FibGUpIHsKICAgICAgICAgICAgJHRoaXMtPnJlc3VsdC0+cmVqZWN0KCR0aHJvd2FibGUpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/EachPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBSZXByZXNlbnRzIGEgcHJvbWlzZSB0aGF0IGl0ZXJhdGVzIG92ZXIgbWFueSBwcm9taXNlcyBhbmQgaW52b2tlcwogKiBzaWRlLWVmZmVjdCBmdW5jdGlvbnMgaW4gdGhlIHByb2Nlc3MuCiAqLwpjbGFzcyBFYWNoUHJvbWlzZSBpbXBsZW1lbnRzIFByb21pc29ySW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHBlbmRpbmcgPSBbXTsKCiAgICAvKiogQHZhciBcSXRlcmF0b3IgKi8KICAgIHByaXZhdGUgJGl0ZXJhYmxlOwoKICAgIC8qKiBAdmFyIGNhbGxhYmxlfGludCAqLwogICAgcHJpdmF0ZSAkY29uY3VycmVuY3k7CgogICAgLyoqIEB2YXIgY2FsbGFibGUgKi8KICAgIHByaXZhdGUgJG9uRnVsZmlsbGVkOwoKICAgIC8qKiBAdmFyIGNhbGxhYmxlICovCiAgICBwcml2YXRlICRvblJlamVjdGVkOwoKICAgIC8qKiBAdmFyIFByb21pc2UgKi8KICAgIHByaXZhdGUgJGFnZ3JlZ2F0ZTsKCiAgICAvKiogQHZhciBib29sICovCiAgICBwcml2YXRlICRtdXRleDsKCiAgICAvKioKICAgICAqIENvbmZpZ3VyYXRpb24gaGFzaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGtleSB2YWx1ZSBwYWlyczoKICAgICAqCiAgICAgKiAtIGZ1bGZpbGxlZDogKGNhbGxhYmxlKSBJbnZva2VkIHdoZW4gYSBwcm9taXNlIGZ1bGZpbGxzLiBUaGUgZnVuY3Rpb24KICAgICAqICAgaXMgaW52b2tlZCB3aXRoIHRocmVlIGFyZ3VtZW50czogdGhlIGZ1bGZpbGxtZW50IHZhbHVlLCB0aGUgaW5kZXgKICAgICAqICAgcG9zaXRpb24gZnJvbSB0aGUgaXRlcmFibGUgbGlzdCBvZiB0aGUgcHJvbWlzZSwgYW5kIHRoZSBhZ2dyZWdhdGUKICAgICAqICAgcHJvbWlzZSB0aGF0IG1hbmFnZXMgYWxsIG9mIHRoZSBwcm9taXNlcy4gVGhlIGFnZ3JlZ2F0ZSBwcm9taXNlIG1heQogICAgICogICBiZSByZXNvbHZlZCBmcm9tIHdpdGhpbiB0aGUgY2FsbGJhY2sgdG8gc2hvcnQtY2lyY3VpdCB0aGUgcHJvbWlzZS4KICAgICAqIC0gcmVqZWN0ZWQ6IChjYWxsYWJsZSkgSW52b2tlZCB3aGVuIGEgcHJvbWlzZSBpcyByZWplY3RlZC4gVGhlCiAgICAgKiAgIGZ1bmN0aW9uIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6IHRoZSByZWplY3Rpb24gcmVhc29uLCB0aGUKICAgICAqICAgaW5kZXggcG9zaXRpb24gZnJvbSB0aGUgaXRlcmFibGUgbGlzdCBvZiB0aGUgcHJvbWlzZSwgYW5kIHRoZQogICAgICogICBhZ2dyZWdhdGUgcHJvbWlzZSB0aGF0IG1hbmFnZXMgYWxsIG9mIHRoZSBwcm9taXNlcy4gVGhlIGFnZ3JlZ2F0ZQogICAgICogICBwcm9taXNlIG1heSBiZSByZXNvbHZlZCBmcm9tIHdpdGhpbiB0aGUgY2FsbGJhY2sgdG8gc2hvcnQtY2lyY3VpdAogICAgICogICB0aGUgcHJvbWlzZS4KICAgICAqIC0gY29uY3VycmVuY3k6IChpbnRlZ2VyKSBQYXNzIHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gbGltaXQgdGhlCiAgICAgKiAgIGFsbG93ZWQgbnVtYmVyIG9mIG91dHN0YW5kaW5nIGNvbmN1cnJlbnRseSBleGVjdXRpbmcgcHJvbWlzZXMsCiAgICAgKiAgIGNyZWF0aW5nIGEgY2FwcGVkIHBvb2wgb2YgcHJvbWlzZXMuIFRoZXJlIGlzIG5vIGxpbWl0IGJ5IGRlZmF1bHQuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICRpdGVyYWJsZSBQcm9taXNlcyBvciB2YWx1ZXMgdG8gaXRlcmF0ZS4KICAgICAqIEBwYXJhbSBhcnJheSAgICAkY29uZmlnICAgQ29uZmlndXJhdGlvbiBvcHRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaXRlcmFibGUsIGFycmF5ICRjb25maWcgPSBbXSkKICAgIHsKICAgICAgICAkdGhpcy0+aXRlcmFibGUgPSBpdGVyX2ZvcigkaXRlcmFibGUpOwoKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1snY29uY3VycmVuY3knXSkpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbmN1cnJlbmN5ID0gJGNvbmZpZ1snY29uY3VycmVuY3knXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkY29uZmlnWydmdWxmaWxsZWQnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPm9uRnVsZmlsbGVkID0gJGNvbmZpZ1snZnVsZmlsbGVkJ107CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1sncmVqZWN0ZWQnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPm9uUmVqZWN0ZWQgPSAkY29uZmlnWydyZWplY3RlZCddOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvbWlzZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5hZ2dyZWdhdGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5hZ2dyZWdhdGU7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+Y3JlYXRlUHJvbWlzZSgpOwogICAgICAgICAgICAkdGhpcy0+aXRlcmFibGUtPnJld2luZCgpOwogICAgICAgICAgICAkdGhpcy0+cmVmaWxsUGVuZGluZygpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgJHRoaXMtPmFnZ3JlZ2F0ZS0+cmVqZWN0KCRlKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUtPnJlamVjdCgkZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmFnZ3JlZ2F0ZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVByb21pc2UoKQogICAgewogICAgICAgICR0aGlzLT5tdXRleCA9IGZhbHNlOwogICAgICAgICR0aGlzLT5hZ2dyZWdhdGUgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJlc2V0KCR0aGlzLT5wZW5kaW5nKTsKICAgICAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5wZW5kaW5nKSAmJiAhJHRoaXMtPml0ZXJhYmxlLT52YWxpZCgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWdncmVnYXRlLT5yZXNvbHZlKG51bGwpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBDb25zdW1lIGEgcG90ZW50aWFsbHkgZmx1Y3R1YXRpbmcgbGlzdCBvZiBwcm9taXNlcyB3aGlsZQogICAgICAgICAgICAvLyBlbnN1cmluZyB0aGF0IGluZGV4ZXMgYXJlIG1haW50YWluZWQgKHByZWNsdWRpbmcgYXJyYXlfc2hpZnQpLgogICAgICAgICAgICB3aGlsZSAoJHByb21pc2UgPSBjdXJyZW50KCR0aGlzLT5wZW5kaW5nKSkgewogICAgICAgICAgICAgICAgbmV4dCgkdGhpcy0+cGVuZGluZyk7CiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+d2FpdCgpOwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5hZ2dyZWdhdGUtPmdldFN0YXRlKCkgIT09IFByb21pc2VJbnRlcmZhY2U6OlBFTkRJTkcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gQ2xlYXIgdGhlIHJlZmVyZW5jZXMgd2hlbiB0aGUgcHJvbWlzZSBpcyByZXNvbHZlZC4KICAgICAgICAkY2xlYXJGbiA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJHRoaXMtPml0ZXJhYmxlID0gJHRoaXMtPmNvbmN1cnJlbmN5ID0gJHRoaXMtPnBlbmRpbmcgPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+b25GdWxmaWxsZWQgPSAkdGhpcy0+b25SZWplY3RlZCA9IG51bGw7CiAgICAgICAgfTsKCiAgICAgICAgJHRoaXMtPmFnZ3JlZ2F0ZS0+dGhlbigkY2xlYXJGbiwgJGNsZWFyRm4pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmVmaWxsUGVuZGluZygpCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+Y29uY3VycmVuY3kpIHsKICAgICAgICAgICAgLy8gQWRkIGFsbCBwZW5kaW5nIHByb21pc2VzLgogICAgICAgICAgICB3aGlsZSAoJHRoaXMtPmFkZFBlbmRpbmcoKSAmJiAkdGhpcy0+YWR2YW5jZUl0ZXJhdG9yKCkpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgb25seSB1cCB0byBOIHBlbmRpbmcgcHJvbWlzZXMuCiAgICAgICAgJGNvbmN1cnJlbmN5ID0gaXNfY2FsbGFibGUoJHRoaXMtPmNvbmN1cnJlbmN5KQogICAgICAgICAgICA/IGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jb25jdXJyZW5jeSwgY291bnQoJHRoaXMtPnBlbmRpbmcpKQogICAgICAgICAgICA6ICR0aGlzLT5jb25jdXJyZW5jeTsKICAgICAgICAkY29uY3VycmVuY3kgPSBtYXgoJGNvbmN1cnJlbmN5IC0gY291bnQoJHRoaXMtPnBlbmRpbmcpLCAwKTsKICAgICAgICAvLyBDb25jdXJyZW5jeSBtYXkgYmUgc2V0IHRvIDAgdG8gZGlzYWxsb3cgbmV3IHByb21pc2VzLgogICAgICAgIGlmICghJGNvbmN1cnJlbmN5KSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgLy8gQWRkIHRoZSBmaXJzdCBwZW5kaW5nIHByb21pc2UuCiAgICAgICAgJHRoaXMtPmFkZFBlbmRpbmcoKTsKICAgICAgICAvLyBOb3RlIHRoaXMgaXMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY29uY3VycmVuY3k9MSBzbyB0aGF0IHdlIGRvCiAgICAgICAgLy8gbm90IGFkdmFuY2UgdGhlIGl0ZXJhdG9yIGFmdGVyIGFkZGluZyB0aGUgZmlyc3QgcHJvbWlzZS4gVGhpcwogICAgICAgIC8vIGhlbHBzIHdvcmsgYXJvdW5kIGlzc3VlcyB3aXRoIGdlbmVyYXRvcnMgdGhhdCBtaWdodCBub3QgaGF2ZSB0aGUKICAgICAgICAvLyBuZXh0IHZhbHVlIHRvIHlpZWxkIHVudGlsIHByb21pc2UgY2FsbGJhY2tzIGFyZSBjYWxsZWQuCiAgICAgICAgd2hpbGUgKC0tJGNvbmN1cnJlbmN5CiAgICAgICAgICAgICYmICR0aGlzLT5hZHZhbmNlSXRlcmF0b3IoKQogICAgICAgICAgICAmJiAkdGhpcy0+YWRkUGVuZGluZygpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZFBlbmRpbmcoKQogICAgewogICAgICAgIGlmICghJHRoaXMtPml0ZXJhYmxlIHx8ICEkdGhpcy0+aXRlcmFibGUtPnZhbGlkKCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHByb21pc2UgPSBwcm9taXNlX2ZvcigkdGhpcy0+aXRlcmFibGUtPmN1cnJlbnQoKSk7CiAgICAgICAgJGlkeCA9ICR0aGlzLT5pdGVyYWJsZS0+a2V5KCk7CgogICAgICAgICR0aGlzLT5wZW5kaW5nWyRpZHhdID0gJHByb21pc2UtPnRoZW4oCiAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJGlkeCkgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vbkZ1bGZpbGxlZCkgewogICAgICAgICAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+b25GdWxmaWxsZWQsICR2YWx1ZSwgJGlkeCwgJHRoaXMtPmFnZ3JlZ2F0ZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RlcCgkaWR4KTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJGlkeCkgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vblJlamVjdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5vblJlamVjdGVkLCAkcmVhc29uLCAkaWR4LCAkdGhpcy0+YWdncmVnYXRlCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5zdGVwKCRpZHgpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZHZhbmNlSXRlcmF0b3IoKQogICAgewogICAgICAgIC8vIFBsYWNlIGEgbG9jayBvbiB0aGUgaXRlcmF0b3Igc28gdGhhdCB3ZSBlbnN1cmUgdG8gbm90IHJlY3Vyc2UsCiAgICAgICAgLy8gcHJldmVudGluZyBmYXRhbCBnZW5lcmF0b3IgZXJyb3JzLgogICAgICAgIGlmICgkdGhpcy0+bXV0ZXgpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm11dGV4ID0gdHJ1ZTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRoaXMtPml0ZXJhYmxlLT5uZXh0KCk7CiAgICAgICAgICAgICR0aGlzLT5tdXRleCA9IGZhbHNlOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUtPnJlamVjdCgkZSk7CiAgICAgICAgICAgICR0aGlzLT5tdXRleCA9IGZhbHNlOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkdGhpcy0+YWdncmVnYXRlLT5yZWplY3QoJGUpOwogICAgICAgICAgICAkdGhpcy0+bXV0ZXggPSBmYWxzZTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN0ZXAoJGlkeCkKICAgIHsKICAgICAgICAvLyBJZiB0aGUgcHJvbWlzZSB3YXMgYWxyZWFkeSByZXNvbHZlZCwgdGhlbiBpZ25vcmUgdGhpcyBzdGVwLgogICAgICAgIGlmICgkdGhpcy0+YWdncmVnYXRlLT5nZXRTdGF0ZSgpICE9PSBQcm9taXNlSW50ZXJmYWNlOjpQRU5ESU5HKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHVuc2V0KCR0aGlzLT5wZW5kaW5nWyRpZHhdKTsKCiAgICAgICAgLy8gT25seSByZWZpbGwgcGVuZGluZyBwcm9taXNlcyBpZiB3ZSBhcmUgbm90IGxvY2tlZCwgcHJldmVudGluZyB0aGUKICAgICAgICAvLyBFYWNoUHJvbWlzZSB0byByZWN1cnNpdmVseSBpbnZva2UgdGhlIHByb3ZpZGVkIGl0ZXJhdG9yLCB3aGljaAogICAgICAgIC8vIGNhdXNlIGEgZmF0YWwgZXJyb3I6ICJDYW5ub3QgcmVzdW1lIGFuIGFscmVhZHkgcnVubmluZyBnZW5lcmF0b3IiCiAgICAgICAgaWYgKCR0aGlzLT5hZHZhbmNlSXRlcmF0b3IoKSAmJiAhJHRoaXMtPmNoZWNrSWZGaW5pc2hlZCgpKSB7CiAgICAgICAgICAgIC8vIEFkZCBtb3JlIHBlbmRpbmcgcHJvbWlzZXMgaWYgcG9zc2libGUuCiAgICAgICAgICAgICR0aGlzLT5yZWZpbGxQZW5kaW5nKCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tJZkZpbmlzaGVkKCkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5wZW5kaW5nICYmICEkdGhpcy0+aXRlcmFibGUtPnZhbGlkKCkpIHsKICAgICAgICAgICAgLy8gUmVzb2x2ZSB0aGUgcHJvbWlzZSBpZiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkby4KICAgICAgICAgICAgJHRoaXMtPmFnZ3JlZ2F0ZS0+cmVzb2x2ZShudWxsKTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/FulfilledPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgdGhhdCBoYXMgYmVlbiBmdWxmaWxsZWQuCiAqCiAqIFRoZW5uaW5nIG9mZiBvZiB0aGlzIHByb21pc2Ugd2lsbCBpbnZva2UgdGhlIG9uRnVsZmlsbGVkIGNhbGxiYWNrCiAqIGltbWVkaWF0ZWx5IGFuZCBpZ25vcmUgb3RoZXIgY2FsbGJhY2tzLgogKi8KY2xhc3MgRnVsZmlsbGVkUHJvbWlzZSBpbXBsZW1lbnRzIFByb21pc2VJbnRlcmZhY2UKewogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdmFsdWUsICd0aGVuJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAnWW91IGNhbm5vdCBjcmVhdGUgYSBGdWxmaWxsZWRQcm9taXNlIHdpdGggYSBwcm9taXNlLicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgIGNhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICAgICAgY2FsbGFibGUgJG9uUmVqZWN0ZWQgPSBudWxsCiAgICApIHsKICAgICAgICAvLyBSZXR1cm4gaXRzZWxmIGlmIHRoZXJlIGlzIG5vIG9uRnVsZmlsbGVkIGZ1bmN0aW9uLgogICAgICAgIGlmICghJG9uRnVsZmlsbGVkKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRxdWV1ZSA9IHF1ZXVlKCk7CiAgICAgICAgJHAgPSBuZXcgUHJvbWlzZShbJHF1ZXVlLCAncnVuJ10pOwogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkcXVldWUtPmFkZChzdGF0aWMgZnVuY3Rpb24gKCkgdXNlICgkcCwgJHZhbHVlLCAkb25GdWxmaWxsZWQpIHsKICAgICAgICAgICAgaWYgKCRwLT5nZXRTdGF0ZSgpID09PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICRwLT5yZXNvbHZlKCRvbkZ1bGZpbGxlZCgkdmFsdWUpKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICAgICAkcC0+cmVqZWN0KCRlKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICAgICAkcC0+cmVqZWN0KCRlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gJHA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG90aGVyd2lzZShjYWxsYWJsZSAkb25SZWplY3RlZCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRoZW4obnVsbCwgJG9uUmVqZWN0ZWQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YWl0KCR1bndyYXAgPSB0cnVlLCAkZGVmYXVsdERlbGl2ZXJ5ID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJHVud3JhcCA/ICR0aGlzLT52YWx1ZSA6IG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6RlVMRklMTEVEOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlICE9PSAkdGhpcy0+dmFsdWUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiQ2Fubm90IHJlc29sdmUgYSBmdWxmaWxsZWQgcHJvbWlzZSIpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVqZWN0KCRyZWFzb24pCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiQ2Fubm90IHJlamVjdCBhIGZ1bGZpbGxlZCBwcm9taXNlIik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNhbmNlbCgpCiAgICB7CiAgICAgICAgLy8gcGFzcwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBHZXQgdGhlIGdsb2JhbCB0YXNrIHF1ZXVlIHVzZWQgZm9yIHByb21pc2UgcmVzb2x1dGlvbi4KICoKICogVGhpcyB0YXNrIHF1ZXVlIE1VU1QgYmUgcnVuIGluIGFuIGV2ZW50IGxvb3AgaW4gb3JkZXIgZm9yIHByb21pc2VzIHRvIGJlCiAqIHNldHRsZWQgYXN5bmNocm9ub3VzbHkuIEl0IHdpbGwgYmUgYXV0b21hdGljYWxseSBydW4gd2hlbiBzeW5jaHJvbm91c2x5CiAqIHdhaXRpbmcgb24gYSBwcm9taXNlLgogKgogKiA8Y29kZT4KICogd2hpbGUgKCRldmVudExvb3AtPmlzUnVubmluZygpKSB7CiAqICAgICBHdXp6bGVIdHRwXFByb21pc2VccXVldWUoKS0+cnVuKCk7CiAqIH0KICogPC9jb2RlPgogKgogKiBAcGFyYW0gVGFza1F1ZXVlSW50ZXJmYWNlICRhc3NpZ24gT3B0aW9uYWxseSBzcGVjaWZ5IGEgbmV3IHF1ZXVlIGluc3RhbmNlLgogKgogKiBAcmV0dXJuIFRhc2tRdWV1ZUludGVyZmFjZQogKi8KZnVuY3Rpb24gcXVldWUoVGFza1F1ZXVlSW50ZXJmYWNlICRhc3NpZ24gPSBudWxsKQp7CiAgICBzdGF0aWMgJHF1ZXVlOwoKICAgIGlmICgkYXNzaWduKSB7CiAgICAgICAgJHF1ZXVlID0gJGFzc2lnbjsKICAgIH0gZWxzZWlmICghJHF1ZXVlKSB7CiAgICAgICAgJHF1ZXVlID0gbmV3IFRhc2tRdWV1ZSgpOwogICAgfQoKICAgIHJldHVybiAkcXVldWU7Cn0KCi8qKgogKiBBZGRzIGEgZnVuY3Rpb24gdG8gcnVuIGluIHRoZSB0YXNrIHF1ZXVlIHdoZW4gaXQgaXMgbmV4dCBgcnVuKClgIGFuZCByZXR1cm5zCiAqIGEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCBvciByZWplY3RlZCB3aXRoIHRoZSByZXN1bHQuCiAqCiAqIEBwYXJhbSBjYWxsYWJsZSAkdGFzayBUYXNrIGZ1bmN0aW9uIHRvIHJ1bi4KICoKICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlCiAqLwpmdW5jdGlvbiB0YXNrKGNhbGxhYmxlICR0YXNrKQp7CiAgICAkcXVldWUgPSBxdWV1ZSgpOwogICAgJHByb21pc2UgPSBuZXcgUHJvbWlzZShbJHF1ZXVlLCAncnVuJ10pOwogICAgJHF1ZXVlLT5hZGQoZnVuY3Rpb24gKCkgdXNlICgkdGFzaywgJHByb21pc2UpIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkcHJvbWlzZS0+cmVzb2x2ZSgkdGFzaygpKTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICRwcm9taXNlLT5yZWplY3QoJGUpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgJHByb21pc2UtPnJlamVjdCgkZSk7CiAgICAgICAgfQogICAgfSk7CgogICAgcmV0dXJuICRwcm9taXNlOwp9CgovKioKICogQ3JlYXRlcyBhIHByb21pc2UgZm9yIGEgdmFsdWUgaWYgdGhlIHZhbHVlIGlzIG5vdCBhIHByb21pc2UuCiAqCiAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgUHJvbWlzZSBvciB2YWx1ZS4KICoKICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlCiAqLwpmdW5jdGlvbiBwcm9taXNlX2ZvcigkdmFsdWUpCnsKICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlKSB7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0KCiAgICAvLyBSZXR1cm4gYSBHdXp6bGUgcHJvbWlzZSB0aGF0IHNoYWRvd3MgdGhlIGdpdmVuIHByb21pc2UuCiAgICBpZiAobWV0aG9kX2V4aXN0cygkdmFsdWUsICd0aGVuJykpIHsKICAgICAgICAkd2ZuID0gbWV0aG9kX2V4aXN0cygkdmFsdWUsICd3YWl0JykgPyBbJHZhbHVlLCAnd2FpdCddIDogbnVsbDsKICAgICAgICAkY2ZuID0gbWV0aG9kX2V4aXN0cygkdmFsdWUsICdjYW5jZWwnKSA/IFskdmFsdWUsICdjYW5jZWwnXSA6IG51bGw7CiAgICAgICAgJHByb21pc2UgPSBuZXcgUHJvbWlzZSgkd2ZuLCAkY2ZuKTsKICAgICAgICAkdmFsdWUtPnRoZW4oWyRwcm9taXNlLCAncmVzb2x2ZSddLCBbJHByb21pc2UsICdyZWplY3QnXSk7CiAgICAgICAgcmV0dXJuICRwcm9taXNlOwogICAgfQoKICAgIHJldHVybiBuZXcgRnVsZmlsbGVkUHJvbWlzZSgkdmFsdWUpOwp9CgovKioKICogQ3JlYXRlcyBhIHJlamVjdGVkIHByb21pc2UgZm9yIGEgcmVhc29uIGlmIHRoZSByZWFzb24gaXMgbm90IGEgcHJvbWlzZS4gSWYKICogdGhlIHByb3ZpZGVkIHJlYXNvbiBpcyBhIHByb21pc2UsIHRoZW4gaXQgaXMgcmV0dXJuZWQgYXMtaXMuCiAqCiAqIEBwYXJhbSBtaXhlZCAkcmVhc29uIFByb21pc2Ugb3IgcmVhc29uLgogKgogKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICovCmZ1bmN0aW9uIHJlamVjdGlvbl9mb3IoJHJlYXNvbikKewogICAgaWYgKCRyZWFzb24gaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlKSB7CiAgICAgICAgcmV0dXJuICRyZWFzb247CiAgICB9CgogICAgcmV0dXJuIG5ldyBSZWplY3RlZFByb21pc2UoJHJlYXNvbik7Cn0KCi8qKgogKiBDcmVhdGUgYW4gZXhjZXB0aW9uIGZvciBhIHJlamVjdGVkIHByb21pc2UgdmFsdWUuCiAqCiAqIEBwYXJhbSBtaXhlZCAkcmVhc29uCiAqCiAqIEByZXR1cm4gXEV4Y2VwdGlvbnxcVGhyb3dhYmxlCiAqLwpmdW5jdGlvbiBleGNlcHRpb25fZm9yKCRyZWFzb24pCnsKICAgIHJldHVybiAkcmVhc29uIGluc3RhbmNlb2YgXEV4Y2VwdGlvbiB8fCAkcmVhc29uIGluc3RhbmNlb2YgXFRocm93YWJsZQogICAgICAgID8gJHJlYXNvbgogICAgICAgIDogbmV3IFJlamVjdGlvbkV4Y2VwdGlvbigkcmVhc29uKTsKfQoKLyoqCiAqIFJldHVybnMgYW4gaXRlcmF0b3IgZm9yIHRoZSBnaXZlbiB2YWx1ZS4KICoKICogQHBhcmFtIG1peGVkICR2YWx1ZQogKgogKiBAcmV0dXJuIFxJdGVyYXRvcgogKi8KZnVuY3Rpb24gaXRlcl9mb3IoJHZhbHVlKQp7CiAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgXEl0ZXJhdG9yKSB7CiAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgIH0gZWxzZWlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBcQXJyYXlJdGVyYXRvcigkdmFsdWUpOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gbmV3IFxBcnJheUl0ZXJhdG9yKFskdmFsdWVdKTsKICAgIH0KfQoKLyoqCiAqIFN5bmNocm9ub3VzbHkgd2FpdHMgb24gYSBwcm9taXNlIHRvIHJlc29sdmUgYW5kIHJldHVybnMgYW4gaW5zcGVjdGlvbiBzdGF0ZQogKiBhcnJheS4KICoKICogUmV0dXJucyBhIHN0YXRlIGFzc29jaWF0aXZlIGFycmF5IGNvbnRhaW5pbmcgYSAic3RhdGUiIGtleSBtYXBwaW5nIHRvIGEKICogdmFsaWQgcHJvbWlzZSBzdGF0ZS4gSWYgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlIGlzICJmdWxmaWxsZWQiLCB0aGUgYXJyYXkKICogd2lsbCBjb250YWluIGEgInZhbHVlIiBrZXkgbWFwcGluZyB0byB0aGUgZnVsZmlsbGVkIHZhbHVlIG9mIHRoZSBwcm9taXNlLiBJZgogKiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZCwgdGhlIGFycmF5IHdpbGwgY29udGFpbiBhICJyZWFzb24iIGtleSBtYXBwaW5nIHRvCiAqIHRoZSByZWplY3Rpb24gcmVhc29uIG9mIHRoZSBwcm9taXNlLgogKgogKiBAcGFyYW0gUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZSBQcm9taXNlIG9yIHZhbHVlLgogKgogKiBAcmV0dXJuIGFycmF5CiAqLwpmdW5jdGlvbiBpbnNwZWN0KFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpCnsKICAgIHRyeSB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3N0YXRlJyA9PiBQcm9taXNlSW50ZXJmYWNlOjpGVUxGSUxMRUQsCiAgICAgICAgICAgICd2YWx1ZScgPT4gJHByb21pc2UtPndhaXQoKQogICAgICAgIF07CiAgICB9IGNhdGNoIChSZWplY3Rpb25FeGNlcHRpb24gJGUpIHsKICAgICAgICByZXR1cm4gWydzdGF0ZScgPT4gUHJvbWlzZUludGVyZmFjZTo6UkVKRUNURUQsICdyZWFzb24nID0+ICRlLT5nZXRSZWFzb24oKV07CiAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgcmV0dXJuIFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OlJFSkVDVEVELCAncmVhc29uJyA9PiAkZV07CiAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgcmV0dXJuIFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OlJFSkVDVEVELCAncmVhc29uJyA9PiAkZV07CiAgICB9Cn0KCi8qKgogKiBXYWl0cyBvbiBhbGwgb2YgdGhlIHByb3ZpZGVkIHByb21pc2VzLCBidXQgZG9lcyBub3QgdW53cmFwIHJlamVjdGVkIHByb21pc2VzCiAqIGFzIHRocm93biBleGNlcHRpb24uCiAqCiAqIFJldHVybnMgYW4gYXJyYXkgb2YgaW5zcGVjdGlvbiBzdGF0ZSBhcnJheXMuCiAqCiAqIEBwYXJhbSBQcm9taXNlSW50ZXJmYWNlW10gJHByb21pc2VzIFRyYXZlcnNhYmxlIG9mIHByb21pc2VzIHRvIHdhaXQgdXBvbi4KICoKICogQHJldHVybiBhcnJheQogKiBAc2VlIEd1enpsZUh0dHBcUHJvbWlzZVxpbnNwZWN0IGZvciB0aGUgaW5zcGVjdGlvbiBzdGF0ZSBhcnJheSBmb3JtYXQuCiAqLwpmdW5jdGlvbiBpbnNwZWN0X2FsbCgkcHJvbWlzZXMpCnsKICAgICRyZXN1bHRzID0gW107CiAgICBmb3JlYWNoICgkcHJvbWlzZXMgYXMgJGtleSA9PiAkcHJvbWlzZSkgewogICAgICAgICRyZXN1bHRzWyRrZXldID0gaW5zcGVjdCgkcHJvbWlzZSk7CiAgICB9CgogICAgcmV0dXJuICRyZXN1bHRzOwp9CgovKioKICogV2FpdHMgb24gYWxsIG9mIHRoZSBwcm92aWRlZCBwcm9taXNlcyBhbmQgcmV0dXJucyB0aGUgZnVsZmlsbGVkIHZhbHVlcy4KICoKICogUmV0dXJucyBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiBlYWNoIHByb21pc2UgKGluIHRoZSBzYW1lIG9yZGVyCiAqIHRoZSBwcm9taXNlcyB3ZXJlIHByb3ZpZGVkKS4gQW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBhbnkgb2YgdGhlIHByb21pc2VzCiAqIGFyZSByZWplY3RlZC4KICoKICogQHBhcmFtIG1peGVkICRwcm9taXNlcyBJdGVyYWJsZSBvZiBQcm9taXNlSW50ZXJmYWNlIG9iamVjdHMgdG8gd2FpdCBvbi4KICoKICogQHJldHVybiBhcnJheQogKiBAdGhyb3dzIFxFeGNlcHRpb24gb24gZXJyb3IKICogQHRocm93cyBcVGhyb3dhYmxlIG9uIGVycm9yIGluIFBIUCA+PTcKICovCmZ1bmN0aW9uIHVud3JhcCgkcHJvbWlzZXMpCnsKICAgICRyZXN1bHRzID0gW107CiAgICBmb3JlYWNoICgkcHJvbWlzZXMgYXMgJGtleSA9PiAkcHJvbWlzZSkgewogICAgICAgICRyZXN1bHRzWyRrZXldID0gJHByb21pc2UtPndhaXQoKTsKICAgIH0KCiAgICByZXR1cm4gJHJlc3VsdHM7Cn0KCi8qKgogKiBHaXZlbiBhbiBhcnJheSBvZiBwcm9taXNlcywgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIGZ1bGZpbGxlZCB3aGVuIGFsbCB0aGUKICogaXRlbXMgaW4gdGhlIGFycmF5IGFyZSBmdWxmaWxsZWQuCiAqCiAqIFRoZSBwcm9taXNlJ3MgZnVsZmlsbG1lbnQgdmFsdWUgaXMgYW4gYXJyYXkgd2l0aCBmdWxmaWxsbWVudCB2YWx1ZXMgYXQKICogcmVzcGVjdGl2ZSBwb3NpdGlvbnMgdG8gdGhlIG9yaWdpbmFsIGFycmF5LiBJZiBhbnkgcHJvbWlzZSBpbiB0aGUgYXJyYXkKICogcmVqZWN0cywgdGhlIHJldHVybmVkIHByb21pc2UgaXMgcmVqZWN0ZWQgd2l0aCB0aGUgcmVqZWN0aW9uIHJlYXNvbi4KICoKICogQHBhcmFtIG1peGVkICRwcm9taXNlcyBQcm9taXNlcyBvciB2YWx1ZXMuCiAqCiAqIEByZXR1cm4gUHJvbWlzZUludGVyZmFjZQogKi8KZnVuY3Rpb24gYWxsKCRwcm9taXNlcykKewogICAgJHJlc3VsdHMgPSBbXTsKICAgIHJldHVybiBlYWNoKAogICAgICAgICRwcm9taXNlcywKICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAkaWR4KSB1c2UgKCYkcmVzdWx0cykgewogICAgICAgICAgICAkcmVzdWx0c1skaWR4XSA9ICR2YWx1ZTsKICAgICAgICB9LAogICAgICAgIGZ1bmN0aW9uICgkcmVhc29uLCAkaWR4LCBQcm9taXNlICRhZ2dyZWdhdGUpIHsKICAgICAgICAgICAgJGFnZ3JlZ2F0ZS0+cmVqZWN0KCRyZWFzb24pOwogICAgICAgIH0KICAgICktPnRoZW4oZnVuY3Rpb24gKCkgdXNlICgmJHJlc3VsdHMpIHsKICAgICAgICBrc29ydCgkcmVzdWx0cyk7CiAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgfSk7Cn0KCi8qKgogKiBJbml0aWF0ZSBhIGNvbXBldGl0aXZlIHJhY2UgYmV0d2VlbiBtdWx0aXBsZSBwcm9taXNlcyBvciB2YWx1ZXMgKHZhbHVlcyB3aWxsCiAqIGJlY29tZSBpbW1lZGlhdGVseSBmdWxmaWxsZWQgcHJvbWlzZXMpLgogKgogKiBXaGVuIGNvdW50IGFtb3VudCBvZiBwcm9taXNlcyBoYXZlIGJlZW4gZnVsZmlsbGVkLCB0aGUgcmV0dXJuZWQgcHJvbWlzZSBpcwogKiBmdWxmaWxsZWQgd2l0aCBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBmdWxmaWxsbWVudCB2YWx1ZXMgb2YgdGhlIHdpbm5lcnMKICogaW4gb3JkZXIgb2YgcmVzb2x1dGlvbi4KICoKICogVGhpcyBwcm9tbWlzZSBpcyByZWplY3RlZCB3aXRoIGEge0BzZWUgR3V6emxlSHR0cFxQcm9taXNlXEFnZ3JlZ2F0ZUV4Y2VwdGlvbn0KICogaWYgdGhlIG51bWJlciBvZiBmdWxmaWxsZWQgcHJvbWlzZXMgaXMgbGVzcyB0aGFuIHRoZSBkZXNpcmVkICRjb3VudC4KICoKICogQHBhcmFtIGludCAgICRjb3VudCAgICBUb3RhbCBudW1iZXIgb2YgcHJvbWlzZXMuCiAqIEBwYXJhbSBtaXhlZCAkcHJvbWlzZXMgUHJvbWlzZXMgb3IgdmFsdWVzLgogKgogKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICovCmZ1bmN0aW9uIHNvbWUoJGNvdW50LCAkcHJvbWlzZXMpCnsKICAgICRyZXN1bHRzID0gW107CiAgICAkcmVqZWN0aW9ucyA9IFtdOwoKICAgIHJldHVybiBlYWNoKAogICAgICAgICRwcm9taXNlcywKICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAkaWR4LCBQcm9taXNlSW50ZXJmYWNlICRwKSB1c2UgKCYkcmVzdWx0cywgJGNvdW50KSB7CiAgICAgICAgICAgIGlmICgkcC0+Z2V0U3RhdGUoKSAhPT0gUHJvbWlzZUludGVyZmFjZTo6UEVORElORykgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZXN1bHRzWyRpZHhdID0gJHZhbHVlOwogICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdHMpID49ICRjb3VudCkgewogICAgICAgICAgICAgICAgJHAtPnJlc29sdmUobnVsbCk7CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIGZ1bmN0aW9uICgkcmVhc29uKSB1c2UgKCYkcmVqZWN0aW9ucykgewogICAgICAgICAgICAkcmVqZWN0aW9uc1tdID0gJHJlYXNvbjsKICAgICAgICB9CiAgICApLT50aGVuKAogICAgICAgIGZ1bmN0aW9uICgpIHVzZSAoJiRyZXN1bHRzLCAmJHJlamVjdGlvbnMsICRjb3VudCkgewogICAgICAgICAgICBpZiAoY291bnQoJHJlc3VsdHMpICE9PSAkY291bnQpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBBZ2dyZWdhdGVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgJ05vdCBlbm91Z2ggcHJvbWlzZXMgdG8gZnVsZmlsbCBjb3VudCcsCiAgICAgICAgICAgICAgICAgICAgJHJlamVjdGlvbnMKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAga3NvcnQoJHJlc3VsdHMpOwogICAgICAgICAgICByZXR1cm4gYXJyYXlfdmFsdWVzKCRyZXN1bHRzKTsKICAgICAgICB9CiAgICApOwp9CgovKioKICogTGlrZSBzb21lKCksIHdpdGggMSBhcyBjb3VudC4gSG93ZXZlciwgaWYgdGhlIHByb21pc2UgZnVsZmlsbHMsIHRoZQogKiBmdWxmaWxsbWVudCB2YWx1ZSBpcyBub3QgYW4gYXJyYXkgb2YgMSBidXQgdGhlIHZhbHVlIGRpcmVjdGx5LgogKgogKiBAcGFyYW0gbWl4ZWQgJHByb21pc2VzIFByb21pc2VzIG9yIHZhbHVlcy4KICoKICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlCiAqLwpmdW5jdGlvbiBhbnkoJHByb21pc2VzKQp7CiAgICByZXR1cm4gc29tZSgxLCAkcHJvbWlzZXMpLT50aGVuKGZ1bmN0aW9uICgkdmFsdWVzKSB7IHJldHVybiAkdmFsdWVzWzBdOyB9KTsKfQoKLyoqCiAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gYWxsIG9mIHRoZSBwcm92aWRlZCBwcm9taXNlcyBoYXZlCiAqIGJlZW4gZnVsZmlsbGVkIG9yIHJlamVjdGVkLgogKgogKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBmdWxmaWxsZWQgd2l0aCBhbiBhcnJheSBvZiBpbnNwZWN0aW9uIHN0YXRlIGFycmF5cy4KICoKICogQHBhcmFtIG1peGVkICRwcm9taXNlcyBQcm9taXNlcyBvciB2YWx1ZXMuCiAqCiAqIEByZXR1cm4gUHJvbWlzZUludGVyZmFjZQogKiBAc2VlIEd1enpsZUh0dHBcUHJvbWlzZVxpbnNwZWN0IGZvciB0aGUgaW5zcGVjdGlvbiBzdGF0ZSBhcnJheSBmb3JtYXQuCiAqLwpmdW5jdGlvbiBzZXR0bGUoJHByb21pc2VzKQp7CiAgICAkcmVzdWx0cyA9IFtdOwoKICAgIHJldHVybiBlYWNoKAogICAgICAgICRwcm9taXNlcywKICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAkaWR4KSB1c2UgKCYkcmVzdWx0cykgewogICAgICAgICAgICAkcmVzdWx0c1skaWR4XSA9IFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OkZVTEZJTExFRCwgJ3ZhbHVlJyA9PiAkdmFsdWVdOwogICAgICAgIH0sCiAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24sICRpZHgpIHVzZSAoJiRyZXN1bHRzKSB7CiAgICAgICAgICAgICRyZXN1bHRzWyRpZHhdID0gWydzdGF0ZScgPT4gUHJvbWlzZUludGVyZmFjZTo6UkVKRUNURUQsICdyZWFzb24nID0+ICRyZWFzb25dOwogICAgICAgIH0KICAgICktPnRoZW4oZnVuY3Rpb24gKCkgdXNlICgmJHJlc3VsdHMpIHsKICAgICAgICBrc29ydCgkcmVzdWx0cyk7CiAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgfSk7Cn0KCi8qKgogKiBHaXZlbiBhbiBpdGVyYXRvciB0aGF0IHlpZWxkcyBwcm9taXNlcyBvciB2YWx1ZXMsIHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMKICogZnVsZmlsbGVkIHdpdGggYSBudWxsIHZhbHVlIHdoZW4gdGhlIGl0ZXJhdG9yIGhhcyBiZWVuIGNvbnN1bWVkIG9yIHRoZQogKiBhZ2dyZWdhdGUgcHJvbWlzZSBoYXMgYmVlbiBmdWxmaWxsZWQgb3IgcmVqZWN0ZWQuCiAqCiAqICRvbkZ1bGZpbGxlZCBpcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgZnVsZmlsbGVkIHZhbHVlLCBpdGVyYXRvcgogKiBpbmRleCwgYW5kIHRoZSBhZ2dyZWdhdGUgcHJvbWlzZS4gVGhlIGNhbGxiYWNrIGNhbiBpbnZva2UgYW55IG5lY2Vzc2FyeSBzaWRlCiAqIGVmZmVjdHMgYW5kIGNob29zZSB0byByZXNvbHZlIG9yIHJlamVjdCB0aGUgYWdncmVnYXRlIHByb21pc2UgaWYgbmVlZGVkLgogKgogKiAkb25SZWplY3RlZCBpcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcmVqZWN0aW9uIHJlYXNvbiwgaXRlcmF0b3IKICogaW5kZXgsIGFuZCB0aGUgYWdncmVnYXRlIHByb21pc2UuIFRoZSBjYWxsYmFjayBjYW4gaW52b2tlIGFueSBuZWNlc3Nhcnkgc2lkZQogKiBlZmZlY3RzIGFuZCBjaG9vc2UgdG8gcmVzb2x2ZSBvciByZWplY3QgdGhlIGFnZ3JlZ2F0ZSBwcm9taXNlIGlmIG5lZWRlZC4KICoKICogQHBhcmFtIG1peGVkICAgICRpdGVyYWJsZSAgICBJdGVyYXRvciBvciBhcnJheSB0byBpdGVyYXRlIG92ZXIuCiAqIEBwYXJhbSBjYWxsYWJsZSAkb25GdWxmaWxsZWQKICogQHBhcmFtIGNhbGxhYmxlICRvblJlamVjdGVkCiAqCiAqIEByZXR1cm4gUHJvbWlzZUludGVyZmFjZQogKi8KZnVuY3Rpb24gZWFjaCgKICAgICRpdGVyYWJsZSwKICAgIGNhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICBjYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKKSB7CiAgICByZXR1cm4gKG5ldyBFYWNoUHJvbWlzZSgkaXRlcmFibGUsIFsKICAgICAgICAnZnVsZmlsbGVkJyA9PiAkb25GdWxmaWxsZWQsCiAgICAgICAgJ3JlamVjdGVkJyAgPT4gJG9uUmVqZWN0ZWQKICAgIF0pKS0+cHJvbWlzZSgpOwp9CgovKioKICogTGlrZSBlYWNoLCBidXQgb25seSBhbGxvd3MgYSBjZXJ0YWluIG51bWJlciBvZiBvdXRzdGFuZGluZyBwcm9taXNlcyBhdCBhbnkKICogZ2l2ZW4gdGltZS4KICoKICogJGNvbmN1cnJlbmN5IG1heSBiZSBhbiBpbnRlZ2VyIG9yIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBudW1iZXIgb2YKICogcGVuZGluZyBwcm9taXNlcyBhbmQgcmV0dXJucyBhIG51bWVyaWMgY29uY3VycmVuY3kgbGltaXQgdmFsdWUgdG8gYWxsb3cgZm9yCiAqIGR5bmFtaWMgYSBjb25jdXJyZW5jeSBzaXplLgogKgogKiBAcGFyYW0gbWl4ZWQgICAgICAgICRpdGVyYWJsZQogKiBAcGFyYW0gaW50fGNhbGxhYmxlICRjb25jdXJyZW5jeQogKiBAcGFyYW0gY2FsbGFibGUgICAgICRvbkZ1bGZpbGxlZAogKiBAcGFyYW0gY2FsbGFibGUgICAgICRvblJlamVjdGVkCiAqCiAqIEByZXR1cm4gUHJvbWlzZUludGVyZmFjZQogKi8KZnVuY3Rpb24gZWFjaF9saW1pdCgKICAgICRpdGVyYWJsZSwKICAgICRjb25jdXJyZW5jeSwKICAgIGNhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICBjYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKKSB7CiAgICByZXR1cm4gKG5ldyBFYWNoUHJvbWlzZSgkaXRlcmFibGUsIFsKICAgICAgICAnZnVsZmlsbGVkJyAgID0+ICRvbkZ1bGZpbGxlZCwKICAgICAgICAncmVqZWN0ZWQnICAgID0+ICRvblJlamVjdGVkLAogICAgICAgICdjb25jdXJyZW5jeScgPT4gJGNvbmN1cnJlbmN5CiAgICBdKSktPnByb21pc2UoKTsKfQoKLyoqCiAqIExpa2UgZWFjaF9saW1pdCwgYnV0IGVuc3VyZXMgdGhhdCBubyBwcm9taXNlIGluIHRoZSBnaXZlbiAkaXRlcmFibGUgYXJndW1lbnQKICogaXMgcmVqZWN0ZWQuIElmIGFueSBwcm9taXNlIGlzIHJlamVjdGVkLCB0aGVuIHRoZSBhZ2dyZWdhdGUgcHJvbWlzZSBpcwogKiByZWplY3RlZCB3aXRoIHRoZSBlbmNvdW50ZXJlZCByZWplY3Rpb24uCiAqCiAqIEBwYXJhbSBtaXhlZCAgICAgICAgJGl0ZXJhYmxlCiAqIEBwYXJhbSBpbnR8Y2FsbGFibGUgJGNvbmN1cnJlbmN5CiAqIEBwYXJhbSBjYWxsYWJsZSAgICAgJG9uRnVsZmlsbGVkCiAqCiAqIEByZXR1cm4gUHJvbWlzZUludGVyZmFjZQogKi8KZnVuY3Rpb24gZWFjaF9saW1pdF9hbGwoCiAgICAkaXRlcmFibGUsCiAgICAkY29uY3VycmVuY3ksCiAgICBjYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsCikgewogICAgcmV0dXJuIGVhY2hfbGltaXQoCiAgICAgICAgJGl0ZXJhYmxlLAogICAgICAgICRjb25jdXJyZW5jeSwKICAgICAgICAkb25GdWxmaWxsZWQsCiAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24sICRpZHgsIFByb21pc2VJbnRlcmZhY2UgJGFnZ3JlZ2F0ZSkgewogICAgICAgICAgICAkYWdncmVnYXRlLT5yZWplY3QoJHJlYXNvbik7CiAgICAgICAgfQogICAgKTsKfQoKLyoqCiAqIFJldHVybnMgdHJ1ZSBpZiBhIHByb21pc2UgaXMgZnVsZmlsbGVkLgogKgogKiBAcGFyYW0gUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZQogKgogKiBAcmV0dXJuIGJvb2wKICovCmZ1bmN0aW9uIGlzX2Z1bGZpbGxlZChQcm9taXNlSW50ZXJmYWNlICRwcm9taXNlKQp7CiAgICByZXR1cm4gJHByb21pc2UtPmdldFN0YXRlKCkgPT09IFByb21pc2VJbnRlcmZhY2U6OkZVTEZJTExFRDsKfQoKLyoqCiAqIFJldHVybnMgdHJ1ZSBpZiBhIHByb21pc2UgaXMgcmVqZWN0ZWQuCiAqCiAqIEBwYXJhbSBQcm9taXNlSW50ZXJmYWNlICRwcm9taXNlCiAqCiAqIEByZXR1cm4gYm9vbAogKi8KZnVuY3Rpb24gaXNfcmVqZWN0ZWQoUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZSkKewogICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpID09PSBQcm9taXNlSW50ZXJmYWNlOjpSRUpFQ1RFRDsKfQoKLyoqCiAqIFJldHVybnMgdHJ1ZSBpZiBhIHByb21pc2UgaXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkLgogKgogKiBAcGFyYW0gUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZQogKgogKiBAcmV0dXJuIGJvb2wKICovCmZ1bmN0aW9uIGlzX3NldHRsZWQoUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZSkKewogICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpICE9PSBQcm9taXNlSW50ZXJmYWNlOjpQRU5ESU5HOwp9CgovKioKICogQHNlZSBDb3JvdXRpbmUKICoKICogQHBhcmFtIGNhbGxhYmxlICRnZW5lcmF0b3JGbgogKgogKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICovCmZ1bmN0aW9uIGNvcm91dGluZShjYWxsYWJsZSAkZ2VuZXJhdG9yRm4pCnsKICAgIHJldHVybiBuZXcgQ29yb3V0aW5lKCRnZW5lcmF0b3JGbik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/functions_include.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIERvbid0IHJlZGVmaW5lIHRoZSBmdW5jdGlvbnMgaWYgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCmlmICghZnVuY3Rpb25fZXhpc3RzKCdHdXp6bGVIdHRwXFByb21pc2VccHJvbWlzZV9mb3InKSkgewogICAgcmVxdWlyZSBfX0RJUl9fIC4gJy9mdW5jdGlvbnMucGhwJzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Promise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBQcm9taXNlcy9BKyBpbXBsZW1lbnRhdGlvbiB0aGF0IGF2b2lkcyByZWN1cnNpb24gd2hlbiBwb3NzaWJsZS4KICoKICogQGxpbmsgaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8KICovCmNsYXNzIFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHN0YXRlID0gc2VsZjo6UEVORElORzsKICAgIHByaXZhdGUgJHJlc3VsdDsKICAgIHByaXZhdGUgJGNhbmNlbEZuOwogICAgcHJpdmF0ZSAkd2FpdEZuOwogICAgcHJpdmF0ZSAkd2FpdExpc3Q7CiAgICBwcml2YXRlICRoYW5kbGVycyA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlICR3YWl0Rm4gICBGbiB0aGF0IHdoZW4gaW52b2tlZCByZXNvbHZlcyB0aGUgcHJvbWlzZS4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkY2FuY2VsRm4gRm4gdGhhdCB3aGVuIGludm9rZWQgY2FuY2VscyB0aGUgcHJvbWlzZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIGNhbGxhYmxlICR3YWl0Rm4gPSBudWxsLAogICAgICAgIGNhbGxhYmxlICRjYW5jZWxGbiA9IG51bGwKICAgICkgewogICAgICAgICR0aGlzLT53YWl0Rm4gPSAkd2FpdEZuOwogICAgICAgICR0aGlzLT5jYW5jZWxGbiA9ICRjYW5jZWxGbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGhlbigKICAgICAgICBjYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgIGNhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKSB7CiAgICAgICAgaWYgKCR0aGlzLT5zdGF0ZSA9PT0gc2VsZjo6UEVORElORykgewogICAgICAgICAgICAkcCA9IG5ldyBQcm9taXNlKG51bGwsIFskdGhpcywgJ2NhbmNlbCddKTsKICAgICAgICAgICAgJHRoaXMtPmhhbmRsZXJzW10gPSBbJHAsICRvbkZ1bGZpbGxlZCwgJG9uUmVqZWN0ZWRdOwogICAgICAgICAgICAkcC0+d2FpdExpc3QgPSAkdGhpcy0+d2FpdExpc3Q7CiAgICAgICAgICAgICRwLT53YWl0TGlzdFtdID0gJHRoaXM7CiAgICAgICAgICAgIHJldHVybiAkcDsKICAgICAgICB9CgogICAgICAgIC8vIFJldHVybiBhIGZ1bGZpbGxlZCBwcm9taXNlIGFuZCBpbW1lZGlhdGVseSBpbnZva2UgYW55IGNhbGxiYWNrcy4KICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpGVUxGSUxMRUQpIHsKICAgICAgICAgICAgcmV0dXJuICRvbkZ1bGZpbGxlZAogICAgICAgICAgICAgICAgPyBwcm9taXNlX2ZvcigkdGhpcy0+cmVzdWx0KS0+dGhlbigkb25GdWxmaWxsZWQpCiAgICAgICAgICAgICAgICA6IHByb21pc2VfZm9yKCR0aGlzLT5yZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgLy8gSXQncyBlaXRoZXIgY2FuY2VsbGVkIG9yIHJlamVjdGVkLCBzbyByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlCiAgICAgICAgLy8gYW5kIGltbWVkaWF0ZWx5IGludm9rZSBhbnkgY2FsbGJhY2tzLgogICAgICAgICRyZWplY3Rpb24gPSByZWplY3Rpb25fZm9yKCR0aGlzLT5yZXN1bHQpOwogICAgICAgIHJldHVybiAkb25SZWplY3RlZCA/ICRyZWplY3Rpb24tPnRoZW4obnVsbCwgJG9uUmVqZWN0ZWQpIDogJHJlamVjdGlvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb3RoZXJ3aXNlKGNhbGxhYmxlICRvblJlamVjdGVkKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGhlbihudWxsLCAkb25SZWplY3RlZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdhaXQoJHVud3JhcCA9IHRydWUpCiAgICB7CiAgICAgICAgJHRoaXMtPndhaXRJZlBlbmRpbmcoKTsKCiAgICAgICAgJGlubmVyID0gJHRoaXMtPnJlc3VsdCBpbnN0YW5jZW9mIFByb21pc2VJbnRlcmZhY2UKICAgICAgICAgICAgPyAkdGhpcy0+cmVzdWx0LT53YWl0KCR1bndyYXApCiAgICAgICAgICAgIDogJHRoaXMtPnJlc3VsdDsKCiAgICAgICAgaWYgKCR1bndyYXApIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5yZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlCiAgICAgICAgICAgICAgICB8fCAkdGhpcy0+c3RhdGUgPT09IHNlbGY6OkZVTEZJTExFRAogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaW5uZXI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBJdCdzIHJlamVjdGVkIHNvICJ1bndyYXAiIGFuZCB0aHJvdyBhbiBleGNlcHRpb24uCiAgICAgICAgICAgICAgICB0aHJvdyBleGNlcHRpb25fZm9yKCRpbm5lcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXRlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjYW5jZWwoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgIT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndhaXRGbiA9ICR0aGlzLT53YWl0TGlzdCA9IG51bGw7CgogICAgICAgIGlmICgkdGhpcy0+Y2FuY2VsRm4pIHsKICAgICAgICAgICAgJGZuID0gJHRoaXMtPmNhbmNlbEZuOwogICAgICAgICAgICAkdGhpcy0+Y2FuY2VsRm4gPSBudWxsOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGZuKCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJGUpOwogICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cmVqZWN0KCRlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUmVqZWN0IHRoZSBwcm9taXNlIG9ubHkgaWYgaXQgd2Fzbid0IHJlamVjdGVkIGluIGEgdGhlbiBjYWxsYmFjay4KICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgICR0aGlzLT5yZWplY3QobmV3IENhbmNlbGxhdGlvbkV4Y2VwdGlvbignUHJvbWlzZSBoYXMgYmVlbiBjYW5jZWxsZWQnKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0dGxlKHNlbGY6OkZVTEZJTExFRCwgJHZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVqZWN0KCRyZWFzb24pCiAgICB7CiAgICAgICAgJHRoaXMtPnNldHRsZShzZWxmOjpSRUpFQ1RFRCwgJHJlYXNvbik7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXR0bGUoJHN0YXRlLCAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zdGF0ZSAhPT0gc2VsZjo6UEVORElORykgewogICAgICAgICAgICAvLyBJZ25vcmUgY2FsbHMgd2l0aCB0aGUgc2FtZSByZXNvbHV0aW9uLgogICAgICAgICAgICBpZiAoJHN0YXRlID09PSAkdGhpcy0+c3RhdGUgJiYgJHZhbHVlID09PSAkdGhpcy0+cmVzdWx0KSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhyb3cgJHRoaXMtPnN0YXRlID09PSAkc3RhdGUKICAgICAgICAgICAgICAgID8gbmV3IFxMb2dpY0V4Y2VwdGlvbigiVGhlIHByb21pc2UgaXMgYWxyZWFkeSB7JHN0YXRlfS4iKQogICAgICAgICAgICAgICAgOiBuZXcgXExvZ2ljRXhjZXB0aW9uKCJDYW5ub3QgY2hhbmdlIGEgeyR0aGlzLT5zdGF0ZX0gcHJvbWlzZSB0byB7JHN0YXRlfSIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gJHRoaXMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ2Fubm90IGZ1bGZpbGwgb3IgcmVqZWN0IGEgcHJvbWlzZSB3aXRoIGl0c2VsZicpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2xlYXIgb3V0IHRoZSBzdGF0ZSBvZiB0aGUgcHJvbWlzZSBidXQgc3Rhc2ggdGhlIGhhbmRsZXJzLgogICAgICAgICR0aGlzLT5zdGF0ZSA9ICRzdGF0ZTsKICAgICAgICAkdGhpcy0+cmVzdWx0ID0gJHZhbHVlOwogICAgICAgICRoYW5kbGVycyA9ICR0aGlzLT5oYW5kbGVyczsKICAgICAgICAkdGhpcy0+aGFuZGxlcnMgPSBudWxsOwogICAgICAgICR0aGlzLT53YWl0TGlzdCA9ICR0aGlzLT53YWl0Rm4gPSBudWxsOwogICAgICAgICR0aGlzLT5jYW5jZWxGbiA9IG51bGw7CgogICAgICAgIGlmICghJGhhbmRsZXJzKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSB2YWx1ZSB3YXMgbm90IGEgc2V0dGxlZCBwcm9taXNlIG9yIGEgdGhlbmFibGUsIHRoZW4gcmVzb2x2ZQogICAgICAgIC8vIGl0IGluIHRoZSB0YXNrIHF1ZXVlIHVzaW5nIHRoZSBjb3JyZWN0IElELgogICAgICAgIGlmICghbWV0aG9kX2V4aXN0cygkdmFsdWUsICd0aGVuJykpIHsKICAgICAgICAgICAgJGlkID0gJHN0YXRlID09PSBzZWxmOjpGVUxGSUxMRUQgPyAxIDogMjsKICAgICAgICAgICAgLy8gSXQncyBhIHN1Y2Nlc3MsIHNvIHJlc29sdmUgdGhlIGhhbmRsZXJzIGluIHRoZSBxdWV1ZS4KICAgICAgICAgICAgcXVldWUoKS0+YWRkKHN0YXRpYyBmdW5jdGlvbiAoKSB1c2UgKCRpZCwgJHZhbHVlLCAkaGFuZGxlcnMpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRoYW5kbGVycyBhcyAkaGFuZGxlcikgewogICAgICAgICAgICAgICAgICAgIHNlbGY6OmNhbGxIYW5kbGVyKCRpZCwgJHZhbHVlLCAkaGFuZGxlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0gZWxzZWlmICgkdmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlCiAgICAgICAgICAgICYmICR2YWx1ZS0+Z2V0U3RhdGUoKSA9PT0gc2VsZjo6UEVORElORwogICAgICAgICkgewogICAgICAgICAgICAvLyBXZSBjYW4ganVzdCBtZXJnZSBvdXIgaGFuZGxlcnMgb250byB0aGUgbmV4dCBwcm9taXNlLgogICAgICAgICAgICAkdmFsdWUtPmhhbmRsZXJzID0gYXJyYXlfbWVyZ2UoJHZhbHVlLT5oYW5kbGVycywgJGhhbmRsZXJzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBoYW5kbGVycyB3aGVuIHRoZSBmb3J3YXJkZWQgcHJvbWlzZSBpcyByZXNvbHZlZC4KICAgICAgICAgICAgJHZhbHVlLT50aGVuKAogICAgICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJGhhbmRsZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGhhbmRsZXJzIGFzICRoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6OmNhbGxIYW5kbGVyKDEsICR2YWx1ZSwgJGhhbmRsZXIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJGhhbmRsZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGhhbmRsZXJzIGFzICRoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6OmNhbGxIYW5kbGVyKDIsICRyZWFzb24sICRoYW5kbGVyKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2FsbCBhIHN0YWNrIG9mIGhhbmRsZXJzIHVzaW5nIGEgc3BlY2lmaWMgY2FsbGJhY2sgaW5kZXggYW5kIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgICAkaW5kZXggICAxIChyZXNvbHZlKSBvciAyIChyZWplY3QpLgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSAgIFZhbHVlIHRvIHBhc3MgdG8gdGhlIGNhbGxiYWNrLgogICAgICogQHBhcmFtIGFycmF5ICRoYW5kbGVyIEFycmF5IG9mIGhhbmRsZXIgZGF0YSAocHJvbWlzZSBhbmQgY2FsbGJhY2tzKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgdGhlIG5leHQgZ3JvdXAgdG8gcmVzb2x2ZS4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2FsbEhhbmRsZXIoJGluZGV4LCAkdmFsdWUsIGFycmF5ICRoYW5kbGVyKQogICAgewogICAgICAgIC8qKiBAdmFyIFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UgKi8KICAgICAgICAkcHJvbWlzZSA9ICRoYW5kbGVyWzBdOwoKICAgICAgICAvLyBUaGUgcHJvbWlzZSBtYXkgaGF2ZSBiZWVuIGNhbmNlbGxlZCBvciByZXNvbHZlZCBiZWZvcmUgcGxhY2luZwogICAgICAgIC8vIHRoaXMgdGh1bmsgaW4gdGhlIHF1ZXVlLgogICAgICAgIGlmICgkcHJvbWlzZS0+Z2V0U3RhdGUoKSAhPT0gc2VsZjo6UEVORElORykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoaXNzZXQoJGhhbmRsZXJbJGluZGV4XSkpIHsKICAgICAgICAgICAgICAgICRwcm9taXNlLT5yZXNvbHZlKCRoYW5kbGVyWyRpbmRleF0oJHZhbHVlKSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkaW5kZXggPT09IDEpIHsKICAgICAgICAgICAgICAgIC8vIEZvcndhcmQgcmVzb2x1dGlvbiB2YWx1ZXMgYXMtaXMuCiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+cmVzb2x2ZSgkdmFsdWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gRm9yd2FyZCByZWplY3Rpb25zIGRvd24gdGhlIGNoYWluLgogICAgICAgICAgICAgICAgJHByb21pc2UtPnJlamVjdCgkdmFsdWUpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkcmVhc29uKSB7CiAgICAgICAgICAgICRwcm9taXNlLT5yZWplY3QoJHJlYXNvbik7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkcmVhc29uKSB7CiAgICAgICAgICAgICRwcm9taXNlLT5yZWplY3QoJHJlYXNvbik7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gd2FpdElmUGVuZGluZygpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zdGF0ZSAhPT0gc2VsZjo6UEVORElORykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT53YWl0Rm4pIHsKICAgICAgICAgICAgJHRoaXMtPmludm9rZVdhaXRGbigpOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+d2FpdExpc3QpIHsKICAgICAgICAgICAgJHRoaXMtPmludm9rZVdhaXRMaXN0KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gSWYgdGhlcmUncyBub3Qgd2FpdCBmdW5jdGlvbiwgdGhlbiByZWplY3QgdGhlIHByb21pc2UuCiAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJ0Nhbm5vdCB3YWl0IG9uIGEgcHJvbWlzZSB0aGF0IGhhcyAnCiAgICAgICAgICAgICAgICAuICdubyBpbnRlcm5hbCB3YWl0IGZ1bmN0aW9uLiBZb3UgbXVzdCBwcm92aWRlIGEgd2FpdCAnCiAgICAgICAgICAgICAgICAuICdmdW5jdGlvbiB3aGVuIGNvbnN0cnVjdGluZyB0aGUgcHJvbWlzZSB0byBiZSBhYmxlIHRvICcKICAgICAgICAgICAgICAgIC4gJ3dhaXQgb24gYSBwcm9taXNlLicpOwogICAgICAgIH0KCiAgICAgICAgcXVldWUoKS0+cnVuKCk7CgogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgPT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgJHRoaXMtPnJlamVjdCgnSW52b2tpbmcgdGhlIHdhaXQgY2FsbGJhY2sgZGlkIG5vdCByZXNvbHZlIHRoZSBwcm9taXNlJyk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW52b2tlV2FpdEZuKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkd2ZuID0gJHRoaXMtPndhaXRGbjsKICAgICAgICAgICAgJHRoaXMtPndhaXRGbiA9IG51bGw7CiAgICAgICAgICAgICR3Zm4odHJ1ZSk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkcmVhc29uKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+c3RhdGUgPT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIGhhcyBub3QgYmVlbiByZXNvbHZlZCB5ZXQsIHNvIHJlamVjdCB0aGUgcHJvbWlzZQogICAgICAgICAgICAgICAgLy8gd2l0aCB0aGUgZXhjZXB0aW9uLgogICAgICAgICAgICAgICAgJHRoaXMtPnJlamVjdCgkcmVhc29uKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIFRoZSBwcm9taXNlIHdhcyBhbHJlYWR5IHJlc29sdmVkLCBzbyB0aGVyZSdzIGEgcHJvYmxlbSBpbgogICAgICAgICAgICAgICAgLy8gdGhlIGFwcGxpY2F0aW9uLgogICAgICAgICAgICAgICAgdGhyb3cgJHJlYXNvbjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludm9rZVdhaXRMaXN0KCkKICAgIHsKICAgICAgICAkd2FpdExpc3QgPSAkdGhpcy0+d2FpdExpc3Q7CiAgICAgICAgJHRoaXMtPndhaXRMaXN0ID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJHdhaXRMaXN0IGFzICRyZXN1bHQpIHsKICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgICRyZXN1bHQtPndhaXRJZlBlbmRpbmcoKTsKCiAgICAgICAgICAgICAgICBpZiAoJHJlc3VsdC0+cmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkgewogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzdWx0LT5yZXN1bHQ7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkcmVzdWx0LT5yZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQtPnJlc3VsdC0+d2FpdChmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/PromiseInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgcmVwcmVzZW50cyB0aGUgZXZlbnR1YWwgcmVzdWx0IG9mIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uCiAqCiAqIFRoZSBwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyB0aGVuIG1ldGhvZCwKICogd2hpY2ggcmVnaXN0ZXJzIGNhbGxiYWNrcyB0byByZWNlaXZlIGVpdGhlciBhIHByb21pc2XigJlzIGV2ZW50dWFsIHZhbHVlIG9yCiAqIHRoZSByZWFzb24gd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuCiAqCiAqIEBsaW5rIGh0dHBzOi8vcHJvbWlzZXNhcGx1cy5jb20vCiAqLwppbnRlcmZhY2UgUHJvbWlzZUludGVyZmFjZQp7CiAgICBjb25zdCBQRU5ESU5HID0gJ3BlbmRpbmcnOwogICAgY29uc3QgRlVMRklMTEVEID0gJ2Z1bGZpbGxlZCc7CiAgICBjb25zdCBSRUpFQ1RFRCA9ICdyZWplY3RlZCc7CgogICAgLyoqCiAgICAgKiBBcHBlbmRzIGZ1bGZpbGxtZW50IGFuZCByZWplY3Rpb24gaGFuZGxlcnMgdG8gdGhlIHByb21pc2UsIGFuZCByZXR1cm5zCiAgICAgKiBhIG5ldyBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsZWQgaGFuZGxlci4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG9uRnVsZmlsbGVkIEludm9rZWQgd2hlbiB0aGUgcHJvbWlzZSBmdWxmaWxscy4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkb25SZWplY3RlZCAgSW52b2tlZCB3aGVuIHRoZSBwcm9taXNlIGlzIHJlamVjdGVkLgogICAgICoKICAgICAqIEByZXR1cm4gUHJvbWlzZUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGhlbigKICAgICAgICBjYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgIGNhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKTsKCiAgICAvKioKICAgICAqIEFwcGVuZHMgYSByZWplY3Rpb24gaGFuZGxlciBjYWxsYmFjayB0byB0aGUgcHJvbWlzZSwgYW5kIHJldHVybnMgYSBuZXcKICAgICAqIHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxiYWNrIGlmIGl0IGlzIGNhbGxlZCwKICAgICAqIG9yIHRvIGl0cyBvcmlnaW5hbCBmdWxmaWxsbWVudCB2YWx1ZSBpZiB0aGUgcHJvbWlzZSBpcyBpbnN0ZWFkCiAgICAgKiBmdWxmaWxsZWQuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRvblJlamVjdGVkIEludm9rZWQgd2hlbiB0aGUgcHJvbWlzZSBpcyByZWplY3RlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG90aGVyd2lzZShjYWxsYWJsZSAkb25SZWplY3RlZCk7CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlICgicGVuZGluZyIsICJyZWplY3RlZCIsIG9yICJmdWxmaWxsZWQiKS4KICAgICAqCiAgICAgKiBUaGUgdGhyZWUgc3RhdGVzIGNhbiBiZSBjaGVja2VkIGFnYWluc3QgdGhlIGNvbnN0YW50cyBkZWZpbmVkIG9uCiAgICAgKiBQcm9taXNlSW50ZXJmYWNlOiBQRU5ESU5HLCBGVUxGSUxMRUQsIGFuZCBSRUpFQ1RFRC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGUoKTsKCiAgICAvKioKICAgICAqIFJlc29sdmUgdGhlIHByb21pc2Ugd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgcHJvbWlzZSBpcyBhbHJlYWR5IHJlc29sdmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZSgkdmFsdWUpOwoKICAgIC8qKgogICAgICogUmVqZWN0IHRoZSBwcm9taXNlIHdpdGggdGhlIGdpdmVuIHJlYXNvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHJlYXNvbgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgcHJvbWlzZSBpcyBhbHJlYWR5IHJlc29sdmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVqZWN0KCRyZWFzb24pOwoKICAgIC8qKgogICAgICogQ2FuY2VscyB0aGUgcHJvbWlzZSBpZiBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvY2FuY2VsbGF0aW9uLXNwZWMvaXNzdWVzLzcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNhbmNlbCgpOwoKICAgIC8qKgogICAgICogV2FpdHMgdW50aWwgdGhlIHByb21pc2UgY29tcGxldGVzIGlmIHBvc3NpYmxlLgogICAgICoKICAgICAqIFBhc3MgJHVud3JhcCBhcyB0cnVlIHRvIHVud3JhcCB0aGUgcmVzdWx0IG9mIHRoZSBwcm9taXNlLCBlaXRoZXIKICAgICAqIHJldHVybmluZyB0aGUgcmVzb2x2ZWQgdmFsdWUgb3IgdGhyb3dpbmcgdGhlIHJlamVjdGVkIGV4Y2VwdGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGUgcHJvbWlzZSBjYW5ub3QgYmUgd2FpdGVkIG9uLCB0aGVuIHRoZSBwcm9taXNlIHdpbGwgYmUgcmVqZWN0ZWQuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHVud3JhcAogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uIGlmIHRoZSBwcm9taXNlIGhhcyBubyB3YWl0IGZ1bmN0aW9uIG9yIGlmIHRoZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZSBkb2VzIG5vdCBzZXR0bGUgYWZ0ZXIgd2FpdGluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdhaXQoJHVud3JhcCA9IHRydWUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/PromisorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBJbnRlcmZhY2UgdXNlZCB3aXRoIGNsYXNzZXMgdGhhdCByZXR1cm4gYSBwcm9taXNlLgogKi8KaW50ZXJmYWNlIFByb21pc29ySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyBhIHByb21pc2UuCiAgICAgKgogICAgICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9taXNlKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/RejectedPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgdGhhdCBoYXMgYmVlbiByZWplY3RlZC4KICoKICogVGhlbm5pbmcgb2ZmIG9mIHRoaXMgcHJvbWlzZSB3aWxsIGludm9rZSB0aGUgb25SZWplY3RlZCBjYWxsYmFjawogKiBpbW1lZGlhdGVseSBhbmQgaWdub3JlIG90aGVyIGNhbGxiYWNrcy4KICovCmNsYXNzIFJlamVjdGVkUHJvbWlzZSBpbXBsZW1lbnRzIFByb21pc2VJbnRlcmZhY2UKewogICAgcHJpdmF0ZSAkcmVhc29uOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmVhc29uKQogICAgewogICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCRyZWFzb24sICd0aGVuJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAnWW91IGNhbm5vdCBjcmVhdGUgYSBSZWplY3RlZFByb21pc2Ugd2l0aCBhIHByb21pc2UuJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cmVhc29uID0gJHJlYXNvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGhlbigKICAgICAgICBjYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgIGNhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKSB7CiAgICAgICAgLy8gSWYgdGhlcmUncyBubyBvblJlamVjdGVkIGNhbGxiYWNrIHRoZW4ganVzdCByZXR1cm4gc2VsZi4KICAgICAgICBpZiAoISRvblJlamVjdGVkKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRxdWV1ZSA9IHF1ZXVlKCk7CiAgICAgICAgJHJlYXNvbiA9ICR0aGlzLT5yZWFzb247CiAgICAgICAgJHAgPSBuZXcgUHJvbWlzZShbJHF1ZXVlLCAncnVuJ10pOwogICAgICAgICRxdWV1ZS0+YWRkKHN0YXRpYyBmdW5jdGlvbiAoKSB1c2UgKCRwLCAkcmVhc29uLCAkb25SZWplY3RlZCkgewogICAgICAgICAgICBpZiAoJHAtPmdldFN0YXRlKCkgPT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSBpZiBvblJlamVjdGVkIGRvZXMgbm90IHRocm93LgogICAgICAgICAgICAgICAgICAgICRwLT5yZXNvbHZlKCRvblJlamVjdGVkKCRyZWFzb24pKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBvblJlamVjdGVkIHRocmV3LCBzbyByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlLgogICAgICAgICAgICAgICAgICAgICRwLT5yZWplY3QoJGUpOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgIC8vIG9uUmVqZWN0ZWQgdGhyZXcsIHNvIHJldHVybiBhIHJlamVjdGVkIHByb21pc2UuCiAgICAgICAgICAgICAgICAgICAgJHAtPnJlamVjdCgkZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICRwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvdGhlcndpc2UoY2FsbGFibGUgJG9uUmVqZWN0ZWQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50aGVuKG51bGwsICRvblJlamVjdGVkKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FpdCgkdW53cmFwID0gdHJ1ZSwgJGRlZmF1bHREZWxpdmVyeSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR1bndyYXApIHsKICAgICAgICAgICAgdGhyb3cgZXhjZXB0aW9uX2ZvcigkdGhpcy0+cmVhc29uKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6UkVKRUNURUQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlc29sdmUoJHZhbHVlKQogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oIkNhbm5vdCByZXNvbHZlIGEgcmVqZWN0ZWQgcHJvbWlzZSIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWplY3QoJHJlYXNvbikKICAgIHsKICAgICAgICBpZiAoJHJlYXNvbiAhPT0gJHRoaXMtPnJlYXNvbikgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJDYW5ub3QgcmVqZWN0IGEgcmVqZWN0ZWQgcHJvbWlzZSIpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCkKICAgIHsKICAgICAgICAvLyBwYXNzCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/RejectionException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHNwZWNpYWwgZXhjZXB0aW9uIHRoYXQgaXMgdGhyb3duIHdoZW4gd2FpdGluZyBvbiBhIHJlamVjdGVkIHByb21pc2UuCiAqCiAqIFRoZSByZWFzb24gdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB0aGUgZ2V0UmVhc29uKCkgbWV0aG9kLgogKi8KY2xhc3MgUmVqZWN0aW9uRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24KewogICAgLyoqIEB2YXIgbWl4ZWQgUmVqZWN0aW9uIHJlYXNvbi4gKi8KICAgIHByaXZhdGUgJHJlYXNvbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkcmVhc29uICAgICAgIFJlamVjdGlvbiByZWFzb24uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZXNjcmlwdGlvbiBPcHRpb25hbCBkZXNjcmlwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHJlYXNvbiwgJGRlc2NyaXB0aW9uID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+cmVhc29uID0gJHJlYXNvbjsKCiAgICAgICAgJG1lc3NhZ2UgPSAnVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkJzsKCiAgICAgICAgaWYgKCRkZXNjcmlwdGlvbikgewogICAgICAgICAgICAkbWVzc2FnZSAuPSAnIHdpdGggcmVhc29uOiAnIC4gJGRlc2NyaXB0aW9uOwogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJHJlYXNvbikKICAgICAgICAgICAgfHwgKGlzX29iamVjdCgkcmVhc29uKSAmJiBtZXRob2RfZXhpc3RzKCRyZWFzb24sICdfX3RvU3RyaW5nJykpCiAgICAgICAgKSB7CiAgICAgICAgICAgICRtZXNzYWdlIC49ICcgd2l0aCByZWFzb246ICcgLiAkdGhpcy0+cmVhc29uOwogICAgICAgIH0gZWxzZWlmICgkcmVhc29uIGluc3RhbmNlb2YgXEpzb25TZXJpYWxpemFibGUpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gJyB3aXRoIHJlYXNvbjogJwogICAgICAgICAgICAgICAgLiBqc29uX2VuY29kZSgkdGhpcy0+cmVhc29uLCBKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlamVjdGlvbiByZWFzb24uCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVhc29uKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlYXNvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/TaskQueue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHRhc2sgcXVldWUgdGhhdCBleGVjdXRlcyB0YXNrcyBpbiBhIEZJRk8gb3JkZXIuCiAqCiAqIFRoaXMgdGFzayBxdWV1ZSBjbGFzcyBpcyB1c2VkIHRvIHNldHRsZSBwcm9taXNlcyBhc3luY2hyb25vdXNseSBhbmQKICogbWFpbnRhaW5zIGEgY29uc3RhbnQgc3RhY2sgc2l6ZS4gWW91IGNhbiB1c2UgdGhlIHRhc2sgcXVldWUgYXN5bmNocm9ub3VzbHkKICogYnkgY2FsbGluZyB0aGUgYHJ1bigpYCBmdW5jdGlvbiBvZiB0aGUgZ2xvYmFsIHRhc2sgcXVldWUgaW4gYW4gZXZlbnQgbG9vcC4KICoKICogICAgIEd1enpsZUh0dHBcUHJvbWlzZVxxdWV1ZSgpLT5ydW4oKTsKICovCmNsYXNzIFRhc2tRdWV1ZSBpbXBsZW1lbnRzIFRhc2tRdWV1ZUludGVyZmFjZQp7CiAgICBwcml2YXRlICRlbmFibGVTaHV0ZG93biA9IHRydWU7CiAgICBwcml2YXRlICRxdWV1ZSA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkd2l0aFNodXRkb3duID0gdHJ1ZSkKICAgIHsKICAgICAgICBpZiAoJHdpdGhTaHV0ZG93bikgewogICAgICAgICAgICByZWdpc3Rlcl9zaHV0ZG93bl9mdW5jdGlvbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmVuYWJsZVNodXRkb3duKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gT25seSBydW4gdGhlIHRhc2tzIGlmIGFuIEVfRVJST1IgZGlkbid0IG9jY3VyLgogICAgICAgICAgICAgICAgICAgICRlcnIgPSBlcnJvcl9nZXRfbGFzdCgpOwogICAgICAgICAgICAgICAgICAgIGlmICghJGVyciB8fCAoJGVyclsndHlwZSddIF4gRV9FUlJPUikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJ1bigpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VtcHR5KCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT5xdWV1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKGNhbGxhYmxlICR0YXNrKQogICAgewogICAgICAgICR0aGlzLT5xdWV1ZVtdID0gJHRhc2s7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJ1bigpCiAgICB7CiAgICAgICAgLyoqIEB2YXIgY2FsbGFibGUgJHRhc2sgKi8KICAgICAgICB3aGlsZSAoJHRhc2sgPSBhcnJheV9zaGlmdCgkdGhpcy0+cXVldWUpKSB7CiAgICAgICAgICAgICR0YXNrKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGhlIHRhc2sgcXVldWUgd2lsbCBiZSBydW4gYW5kIGV4aGF1c3RlZCBieSBkZWZhdWx0IHdoZW4gdGhlIHByb2Nlc3MKICAgICAqIGV4aXRzIElGRiB0aGUgZXhpdCBpcyBub3QgdGhlIHJlc3VsdCBvZiBhIFBIUCBFX0VSUk9SIGVycm9yLgogICAgICoKICAgICAqIFlvdSBjYW4gZGlzYWJsZSBydW5uaW5nIHRoZSBhdXRvbWF0aWMgc2h1dGRvd24gb2YgdGhlIHF1ZXVlIGJ5IGNhbGxpbmcKICAgICAqIHRoaXMgZnVuY3Rpb24uIElmIHlvdSBkaXNhYmxlIHRoZSB0YXNrIHF1ZXVlIHNodXRkb3duIHByb2Nlc3MsIHRoZW4geW91CiAgICAgKiBNVVNUIGVpdGhlciBydW4gdGhlIHRhc2sgcXVldWUgKGFzIGEgcmVzdWx0IG9mIHJ1bm5pbmcgeW91ciBldmVudCBsb29wCiAgICAgKiBvciBtYW51YWxseSB1c2luZyB0aGUgcnVuKCkgbWV0aG9kKSBvciB3YWl0IG9uIGVhY2ggb3V0c3RhbmRpbmcgcHJvbWlzZS4KICAgICAqCiAgICAgKiBOb3RlOiBUaGlzIHNodXRkb3duIHdpbGwgb2NjdXIgYmVmb3JlIGFueSBkZXN0cnVjdG9ycyBhcmUgdHJpZ2dlcmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzYWJsZVNodXRkb3duKCkKICAgIHsKICAgICAgICAkdGhpcy0+ZW5hYmxlU2h1dGRvd24gPSBmYWxzZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/TaskQueueInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmludGVyZmFjZSBUYXNrUXVldWVJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOwoKICAgIC8qKgogICAgICogQWRkcyBhIHRhc2sgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB0aGUgbmV4dCB0aW1lIHJ1biBpcwogICAgICogY2FsbGVkLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkdGFzawogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKGNhbGxhYmxlICR0YXNrKTsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgYWxsIG9mIHRoZSBwZW5kaW5nIHRhc2sgaW4gdGhlIHF1ZXVlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcnVuKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDSEFOR0VMT0cKCiMjIDEuNC4yIC0gMjAxNy0wMy0yMAoKKiBSZXZlcnRlZCBCQyBicmVhayB0byBgVXJpOjpyZXNvbHZlYCBhbmQgYFVyaTo6cmVtb3ZlRG90U2VnbWVudHNgIGJ5IHJlbW92aW5nIAogIGNhbGxzIHRvIGB0cmlnZ2VyX2Vycm9yYCB3aGVuIGRlcHJlY2F0ZWQgbWV0aG9kcyBhcmUgaW52b2tlZC4KCiMjIDEuNC4xIC0gMjAxNy0wMi0yNwoKKiBSZXZlcnRlZCBCQyBicmVhayBieSByZWludHJvZHVjaW5nIGJlaGF2aW9yIHRvIGF1dG9tYWdpY2FsbHkgZml4IGEgVVJJIHdpdGggYQogIHJlbGF0aXZlIHBhdGggYW5kIGFuIGF1dGhvcml0eSBieSBhZGRpbmcgYSBsZWFkaW5nIHNsYXNoIHRvIHRoZSBwYXRoLiBJdCdzIG9ubHkKICBkZXByZWNhdGVkIG5vdy4KKiBBZGRlZCB0cmlnZ2VyaW5nIG9mIHNpbGVuY2VkIGRlcHJlY2F0aW9uIHdhcm5pbmdzLgoKIyMgMS40LjAgLSAyMDE3LTAyLTIxCgoqIEZpeCBgU3RyZWFtOjpyZWFkYCB3aGVuIGxlbmd0aCBwYXJhbWV0ZXIgPD0gMC4KKiBgY29weV90b19zdHJlYW1gIHJlYWRzIGJ5dGVzIGluIGNodW5rcyBpbnN0ZWFkIG9mIGBtYXhMZW5gIGludG8gbWVtb3J5LgoqIEZpeCBgU2VydmVyUmVxdWVzdDo6Z2V0VXJpRnJvbUdsb2JhbHNgIHdoZW4gYEhvc3RgIGhlYWRlciBjb250YWlucyBwb3J0LgoqIEVuc3VyZSBgU2VydmVyUmVxdWVzdDo6Z2V0VXJpRnJvbUdsb2JhbHNgIHJldHVybnMgYSBVUkkgaW4gYWJzb2x1dGUgZm9ybS4KKiBBbGxvdyBgcGFyc2VfcmVzcG9uc2VgIHRvIHBhcnNlIGEgcmVzcG9uc2Ugd2l0aG91dCBkZWxpbWl0aW5nIHNwYWNlIGFuZCByZWFzb24uCiogRW5zdXJlIGVhY2ggVVJJIG1vZGlmaWNhdGlvbiByZXN1bHRzIGluIGEgdmFsaWQgVVJJIGFjY29yZGluZyB0byBQU1ItNyBkaXNjdXNzaW9ucy4KICBJbnZhbGlkIG1vZGlmaWNhdGlvbnMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaW5zdGVhZCBvZiByZXR1cm5pbmcgYSB3cm9uZyBVUkkgb3IKICBkb2luZyBzb21lIG1hZ2ljLgogIC0gYChuZXcgVXJpKS0+d2l0aFBhdGgoJ2ZvbycpLT53aXRoSG9zdCgnZXhhbXBsZS5jb20nKWAgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24KICAgIGJlY2F1c2UgdGhlIHBhdGggb2YgYSBVUkkgd2l0aCBhbiBhdXRob3JpdHkgbXVzdCBzdGFydCB3aXRoIGEgc2xhc2ggIi8iIG9yIGJlIGVtcHR5CiAgLSBgKG5ldyBVcmkoKSktPndpdGhTY2hlbWUoJ2h0dHAnKWAgd2lsbCByZXR1cm4gYCdodHRwOi8vbG9jYWxob3N0J2AKKiBGaXggY29tcGF0aWJpbGl0eSBvZiBVUklzIHdpdGggYGZpbGVgIHNjaGVtZSBhbmQgZW1wdHkgaG9zdC4KKiBBZGRlZCBjb21tb24gVVJJIHV0aWxpdHkgbWV0aG9kcyBiYXNlZCBvbiBSRkMgMzk4NiAoc2VlIGRvY3VtZW50YXRpb24gaW4gdGhlIHJlYWRtZSk6CiAgLSBgVXJpOjppc0RlZmF1bHRQb3J0YAogIC0gYFVyaTo6aXNBYnNvbHV0ZWAKICAtIGBVcmk6OmlzTmV0d29ya1BhdGhSZWZlcmVuY2VgCiAgLSBgVXJpOjppc0Fic29sdXRlUGF0aFJlZmVyZW5jZWAKICAtIGBVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlYAogIC0gYFVyaTo6aXNTYW1lRG9jdW1lbnRSZWZlcmVuY2VgCiAgLSBgVXJpOjpjb21wb3NlQ29tcG9uZW50c2AKICAtIGBVcmlOb3JtYWxpemVyOjpub3JtYWxpemVgCiAgLSBgVXJpTm9ybWFsaXplcjo6aXNFcXVpdmFsZW50YAogIC0gYFVyaVJlc29sdmVyOjpyZWxhdGl2aXplYAoqIERlcHJlY2F0ZWQgYFVyaTo6cmVzb2x2ZWAgaW4gZmF2b3Igb2YgYFVyaVJlc29sdmVyOjpyZXNvbHZlYAoqIERlcHJlY2F0ZWQgYFVyaTo6cmVtb3ZlRG90U2VnbWVudHNgIGluIGZhdm9yIG9mIGBVcmlSZXNvbHZlcjo6cmVtb3ZlRG90U2VnbWVudHNgCgojIyAxLjMuMSAtIDIwMTYtMDYtMjUKCiogRml4IGBVcmk6Ol9fdG9TdHJpbmdgIGZvciBuZXR3b3JrIHBhdGggcmVmZXJlbmNlcywgZS5nLiBgLy9leGFtcGxlLm9yZ2AuCiogRml4IG1pc3NpbmcgbG93ZXJjYXNlIG5vcm1hbGl6YXRpb24gZm9yIGhvc3QuCiogRml4IGhhbmRsaW5nIG9mIFVSSSBjb21wb25lbnRzIGluIGNhc2UgdGhleSBhcmUgYCcwJ2AgaW4gYSBsb3Qgb2YgcGxhY2VzLAogIGUuZy4gYXMgYSB1c2VyIGluZm8gcGFzc3dvcmQuCiogRml4IGBVcmk6OndpdGhBZGRlZEhlYWRlcmAgdG8gY29ycmVjdGx5IG1lcmdlIGhlYWRlcnMgd2l0aCBkaWZmZXJlbnQgY2FzZS4KKiBGaXggdHJpbW1pbmcgb2YgaGVhZGVyIHZhbHVlcyBpbiBgVXJpOjp3aXRoQWRkZWRIZWFkZXJgLiBIZWFkZXIgdmFsdWVzIG1heQogIGJlIHN1cnJvdW5kZWQgYnkgd2hpdGVzcGFjZSB3aGljaCBzaG91bGQgYmUgaWdub3JlZCBhY2NvcmRpbmcgdG8gUkZDIDcyMzAKICBTZWN0aW9uIDMuMi40LiBUaGlzIGRvZXMgbm90IGFwcGx5IHRvIGhlYWRlciBuYW1lcy4KKiBGaXggYFVyaTo6d2l0aEFkZGVkSGVhZGVyYCB3aXRoIGFuIGFycmF5IG9mIGhlYWRlciB2YWx1ZXMuCiogRml4IGBVcmk6OnJlc29sdmVgIHdoZW4gYmFzZSBwYXRoIGhhcyBubyBzbGFzaCBhbmQgaGFuZGxpbmcgb2YgZnJhZ21lbnQuCiogRml4IGhhbmRsaW5nIG9mIGVuY29kaW5nIGluIGBVcmk6OndpdGgob3V0KVF1ZXJ5VmFsdWVgIHNvIG9uZSBjYW4gcGFzcyB0aGUKICBrZXkvdmFsdWUgYm90aCBpbiBlbmNvZGVkIGFzIHdlbGwgYXMgZGVjb2RlZCBmb3JtIHRvIHRob3NlIG1ldGhvZHMuIFRoaXMgaXMKICBjb25zaXN0ZW50IHdpdGggd2l0aFBhdGgsIHdpdGhRdWVyeSBldGMuCiogRml4IGBTZXJ2ZXJSZXF1ZXN0Ojp3aXRob3V0QXR0cmlidXRlYCB3aGVuIGF0dHJpYnV0ZSB2YWx1ZSBpcyBudWxsLgoKIyMgMS4zLjAgLSAyMDE2LTA0LTEzCgoqIEFkZGVkIHJlbWFpbmluZyBpbnRlcmZhY2VzIG5lZWRlZCBmb3IgZnVsbCBQU1I3IGNvbXBhdGliaWxpdHkKICAoU2VydmVyUmVxdWVzdEludGVyZmFjZSwgVXBsb2FkZWRGaWxlSW50ZXJmYWNlLCBldGMuKS4KKiBBZGRlZCBzdXBwb3J0IGZvciBzdHJlYW1fZm9yIGZyb20gc2NhbGFycy4KKiBDYW4gbm93IGV4dGVuZCBVcmkuCiogRml4ZWQgYSBidWcgaW4gdmFsaWRhdGluZyByZXF1ZXN0IG1ldGhvZHMgYnkgbWFraW5nIGl0IG1vcmUgcGVybWlzc2l2ZS4KCiMjIDEuMi4zIC0gMjAxNi0wMi0xOAoKKiBGaXhlZCBzdXBwb3J0IGluIGBHdXp6bGVIdHRwXFBzcjdcQ2FjaGluZ1N0cmVhbWAgZm9yIHNlZWtpbmcgZm9yd2FyZCBvbiByZW1vdGUKICBzdHJlYW1zLCB3aGljaCBjYW4gc29tZXRpbWVzIHJldHVybiBmZXdlciBieXRlcyB0aGFuIHJlcXVlc3RlZCB3aXRoIGBmcmVhZGAuCiogRml4ZWQgaGFuZGxpbmcgb2YgZ3ppcHBlZCByZXNwb25zZXMgd2l0aCBGTkFNRSBoZWFkZXJzLgoKIyMgMS4yLjIgLSAyMDE2LTAxLTIyCgoqIEFkZGVkIHN1cHBvcnQgZm9yIFVSSXMgd2l0aG91dCBhbnkgYXV0aG9yaXR5LgoqIEFkZGVkIHN1cHBvcnQgZm9yIEhUVFAgNDUxICdVbmF2YWlsYWJsZSBGb3IgTGVnYWwgUmVhc29ucy4nCiogQWRkZWQgc3VwcG9ydCBmb3IgdXNpbmcgJzAnIGFzIGEgZmlsZW5hbWUuCiogQWRkZWQgc3VwcG9ydCBmb3IgaW5jbHVkaW5nIG5vbi1zdGFuZGFyZCBwb3J0cyBpbiBIb3N0IGhlYWRlcnMuCgojIyAxLjIuMSAtIDIwMTUtMTEtMDIKCiogTm93IHN1cHBvcnRpbmcgbmVnYXRpdmUgb2Zmc2V0cyB3aGVuIHNlZWtpbmcgdG8gU0VFS19FTkQuCgojIyAxLjIuMCAtIDIwMTUtMDgtMTUKCiogQm9keSBhcyBgIjAiYCBpcyBub3cgcHJvcGVybHkgYWRkZWQgdG8gYSByZXNwb25zZS4KKiBOb3cgYWxsb3dpbmcgZm9yd2FyZCBzZWVraW5nIGluIENhY2hpbmdTdHJlYW0uCiogTm93IHByb3Blcmx5IHBhcnNpbmcgSFRUUCByZXF1ZXN0cyB0aGF0IGNvbnRhaW4gcHJveHkgdGFyZ2V0cyBpbgogIGBwYXJzZV9yZXF1ZXN0YC4KKiBmdW5jdGlvbnMucGhwIGlzIG5vdyBjb25kaXRpb25hbGx5IHJlcXVpcmVkLgoqIHVzZXItaW5mbyBpcyBubyBsb25nZXIgZHJvcHBlZCB3aGVuIHJlc29sdmluZyBVUklzLgoKIyMgMS4xLjAgLSAyMDE1LTA2LTI0CgoqIFVSSXMgY2FuIG5vdyBiZSByZWxhdGl2ZS4KKiBgbXVsdGlwYXJ0L2Zvcm0tZGF0YWAgaGVhZGVycyBhcmUgbm93IG92ZXJyaWRkZW4gY2FzZS1pbnNlbnNpdGl2ZWx5LgoqIFVSSSBwYXRocyBubyBsb25nZXIgZW5jb2RlIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVycyBiZWNhdXNlIHRoZXkgYXJlIGFsbG93ZWQKICBpbiBVUklzOiAiKCIsICIpIiwgIioiLCAiISIsICInIgoqIEEgcG9ydCBpcyBubyBsb25nZXIgYWRkZWQgdG8gYSBVUkkgd2hlbiB0aGUgc2NoZW1lIGlzIG1pc3NpbmcgYW5kIG5vIHBvcnQgaXMKICBwcmVzZW50LgoKIyMgMS4wLjAgLSAyMDE1LTA1LTE5CgpJbml0aWFsIHJlbGVhc2UuCgpDdXJyZW50bHkgdW5zdXBwb3J0ZWQ6CgotIGBQc3JcSHR0cFxNZXNzYWdlXFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgCi0gYFBzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlYAo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wc3I3IiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImRlc2NyaXB0aW9uIjogIlBTUi03IG1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdGhhdCBhbHNvIHByb3ZpZGVzIGNvbW1vbiB1dGlsaXR5IG1ldGhvZHMiLAogICAgImtleXdvcmRzIjogWyJyZXF1ZXN0IiwgInJlc3BvbnNlIiwgIm1lc3NhZ2UiLCAic3RyZWFtIiwgImh0dHAiLCAidXJpIiwgInVybCJdLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIFNjaHVsdHplIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj01LjQuMCIsCiAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAifjEuMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC4wIgogICAgfSwKICAgICJwcm92aWRlIjogewogICAgICAgICJwc3IvaHR0cC1tZXNzYWdlLWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcUHNyN1xcIjogInNyYy8iCiAgICAgICAgfSwKICAgICAgICAiZmlsZXMiOiBbInNyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAiXQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjQtZGV2IgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IE1pY2hhZWwgRG93bGluZywgaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyA8bXRkb3dsaW5nQGdtYWlsLmNvbT4KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgpUSEUgU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBQU1ItNyBNZXNzYWdlIEltcGxlbWVudGF0aW9uCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgYSBmdWxsIFtQU1ItN10oaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTcvKQptZXNzYWdlIGltcGxlbWVudGF0aW9uLCBzZXZlcmFsIHN0cmVhbSBkZWNvcmF0b3JzLCBhbmQgc29tZSBoZWxwZnVsCmZ1bmN0aW9uYWxpdHkgbGlrZSBxdWVyeSBzdHJpbmcgcGFyc2luZy4KCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9ndXp6bGUvcHNyNy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9ndXp6bGUvcHNyNykKCgojIFN0cmVhbSBpbXBsZW1lbnRhdGlvbgoKVGhpcyBwYWNrYWdlIGNvbWVzIHdpdGggYSBudW1iZXIgb2Ygc3RyZWFtIGltcGxlbWVudGF0aW9ucyBhbmQgc3RyZWFtCmRlY29yYXRvcnMuCgoKIyMgQXBwZW5kU3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XEFwcGVuZFN0cmVhbWAKClJlYWRzIGZyb20gbXVsdGlwbGUgc3RyZWFtcywgb25lIGFmdGVyIHRoZSBvdGhlci4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJGEgPSBQc3I3XHN0cmVhbV9mb3IoJ2FiYywgJyk7CiRiID0gUHNyN1xzdHJlYW1fZm9yKCcxMjMuJyk7CiRjb21wb3NlZCA9IG5ldyBQc3I3XEFwcGVuZFN0cmVhbShbJGEsICRiXSk7CgokY29tcG9zZWQtPmFkZFN0cmVhbShQc3I3XHN0cmVhbV9mb3IoJyBBYm92ZSBhbGwgbGlzdGVuIHRvIG1lJykpOwoKZWNobyAkY29tcG9zZWQ7IC8vIGFiYywgMTIzLiBBYm92ZSBhbGwgbGlzdGVuIHRvIG1lLgpgYGAKCgojIyBCdWZmZXJTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcQnVmZmVyU3RyZWFtYAoKUHJvdmlkZXMgYSBidWZmZXIgc3RyZWFtIHRoYXQgY2FuIGJlIHdyaXR0ZW4gdG8gZmlsbCBhIGJ1ZmZlciwgYW5kIHJlYWQKZnJvbSB0byByZW1vdmUgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLgoKVGhpcyBzdHJlYW0gcmV0dXJucyBhICJod20iIG1ldGFkYXRhIHZhbHVlIHRoYXQgdGVsbHMgdXBzdHJlYW0gY29uc3VtZXJzCndoYXQgdGhlIGNvbmZpZ3VyZWQgaGlnaCB3YXRlciBtYXJrIG9mIHRoZSBzdHJlYW0gaXMsIG9yIHRoZSBtYXhpbXVtCnByZWZlcnJlZCBzaXplIG9mIHRoZSBidWZmZXIuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyNzsKCi8vIFdoZW4gbW9yZSB0aGFuIDEwMjQgYnl0ZXMgYXJlIGluIHRoZSBidWZmZXIsIGl0IHdpbGwgYmVnaW4gcmV0dXJuaW5nCi8vIGZhbHNlIHRvIHdyaXRlcy4gVGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgd3JpdGVycyBzaG91bGQgc2xvdyBkb3duLgokYnVmZmVyID0gbmV3IFBzcjdcQnVmZmVyU3RyZWFtKDEwMjQpOwpgYGAKCgojIyBDYWNoaW5nU3RyZWFtCgpUaGUgQ2FjaGluZ1N0cmVhbSBpcyB1c2VkIHRvIGFsbG93IHNlZWtpbmcgb3ZlciBwcmV2aW91c2x5IHJlYWQgYnl0ZXMgb24Kbm9uLXNlZWthYmxlIHN0cmVhbXMuIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHRyYW5zZmVycmluZyBhIG5vbi1zZWVrYWJsZQplbnRpdHkgYm9keSBmYWlscyBkdWUgdG8gbmVlZGluZyB0byByZXdpbmQgdGhlIHN0cmVhbSAoZm9yIGV4YW1wbGUsIHJlc3VsdGluZwpmcm9tIGEgcmVkaXJlY3QpLiBEYXRhIHRoYXQgaXMgcmVhZCBmcm9tIHRoZSByZW1vdGUgc3RyZWFtIHdpbGwgYmUgYnVmZmVyZWQgaW4KYSBQSFAgdGVtcCBzdHJlYW0gc28gdGhhdCBwcmV2aW91c2x5IHJlYWQgYnl0ZXMgYXJlIGNhY2hlZCBmaXJzdCBpbiBtZW1vcnksCnRoZW4gb24gZGlzay4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJG9yaWdpbmFsID0gUHNyN1xzdHJlYW1fZm9yKGZvcGVuKCdodHRwOi8vd3d3Lmdvb2dsZS5jb20nLCAncicpKTsKJHN0cmVhbSA9IG5ldyBQc3I3XENhY2hpbmdTdHJlYW0oJG9yaWdpbmFsKTsKCiRzdHJlYW0tPnJlYWQoMTAyNCk7CmVjaG8gJHN0cmVhbS0+dGVsbCgpOwovLyAxMDI0Cgokc3RyZWFtLT5zZWVrKDApOwplY2hvICRzdHJlYW0tPnRlbGwoKTsKLy8gMApgYGAKCgojIyBEcm9wcGluZ1N0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xEcm9wcGluZ1N0cmVhbWAKClN0cmVhbSBkZWNvcmF0b3IgdGhhdCBiZWdpbnMgZHJvcHBpbmcgZGF0YSBvbmNlIHRoZSBzaXplIG9mIHRoZSB1bmRlcmx5aW5nCnN0cmVhbSBiZWNvbWVzIHRvbyBmdWxsLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjc7CgovLyBDcmVhdGUgYW4gZW1wdHkgc3RyZWFtCiRzdHJlYW0gPSBQc3I3XHN0cmVhbV9mb3IoKTsKCi8vIFN0YXJ0IGRyb3BwaW5nIGRhdGEgd2hlbiB0aGUgc3RyZWFtIGhhcyBtb3JlIHRoYW4gMTAgYnl0ZXMKJGRyb3BwaW5nID0gbmV3IFBzcjdcRHJvcHBpbmdTdHJlYW0oJHN0cmVhbSwgMTApOwoKJGRyb3BwaW5nLT53cml0ZSgnMDEyMzQ1Njc4OTAxMjM0NTY3ODknKTsKZWNobyAkc3RyZWFtOyAvLyAwMTIzNDU2Nzg5CmBgYAoKCiMjIEZuU3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XEZuU3RyZWFtYAoKQ29tcG9zZSBzdHJlYW0gaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIGEgaGFzaCBvZiBmdW5jdGlvbnMuCgpBbGxvd3MgZm9yIGVhc3kgdGVzdGluZyBhbmQgZXh0ZW5zaW9uIG9mIGEgcHJvdmlkZWQgc3RyZWFtIHdpdGhvdXQgbmVlZGluZwp0byBjcmVhdGUgYSBjb25jcmV0ZSBjbGFzcyBmb3IgYSBzaW1wbGUgZXh0ZW5zaW9uIHBvaW50LgoKYGBgcGhwCgp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJHN0cmVhbSA9IFBzcjdcc3RyZWFtX2ZvcignaGknKTsKJGZuU3RyZWFtID0gUHNyN1xGblN0cmVhbTo6ZGVjb3JhdGUoJHN0cmVhbSwgWwogICAgJ3Jld2luZCcgPT4gZnVuY3Rpb24gKCkgdXNlICgkc3RyZWFtKSB7CiAgICAgICAgZWNobyAnQWJvdXQgdG8gcmV3aW5kIC0gJzsKICAgICAgICAkc3RyZWFtLT5yZXdpbmQoKTsKICAgICAgICBlY2hvICdyZXdvdW5kISc7CiAgICB9Cl0pOwoKJGZuU3RyZWFtLT5yZXdpbmQoKTsKLy8gT3V0cHV0czogQWJvdXQgdG8gcmV3aW5kIC0gcmV3b3VuZCEKYGBgCgoKIyMgSW5mbGF0ZVN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xJbmZsYXRlU3RyZWFtYAoKVXNlcyBQSFAncyB6bGliLmluZmxhdGUgZmlsdGVyIHRvIGluZmxhdGUgZGVmbGF0ZSBvciBnemlwcGVkIGNvbnRlbnQuCgpUaGlzIHN0cmVhbSBkZWNvcmF0b3Igc2tpcHMgdGhlIGZpcnN0IDEwIGJ5dGVzIG9mIHRoZSBnaXZlbiBzdHJlYW0gdG8gcmVtb3ZlCnRoZSBnemlwIGhlYWRlciwgY29udmVydHMgdGhlIHByb3ZpZGVkIHN0cmVhbSB0byBhIFBIUCBzdHJlYW0gcmVzb3VyY2UsCnRoZW4gYXBwZW5kcyB0aGUgemxpYi5pbmZsYXRlIGZpbHRlci4gVGhlIHN0cmVhbSBpcyB0aGVuIGNvbnZlcnRlZCBiYWNrCnRvIGEgR3V6emxlIHN0cmVhbSByZXNvdXJjZSB0byBiZSB1c2VkIGFzIGEgR3V6emxlIHN0cmVhbS4KCgojIyBMYXp5T3BlblN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xMYXp5T3BlblN0cmVhbWAKCkxhemlseSByZWFkcyBvciB3cml0ZXMgdG8gYSBmaWxlIHRoYXQgaXMgb3BlbmVkIG9ubHkgYWZ0ZXIgYW4gSU8gb3BlcmF0aW9uCnRha2UgcGxhY2Ugb24gdGhlIHN0cmVhbS4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJHN0cmVhbSA9IG5ldyBQc3I3XExhenlPcGVuU3RyZWFtKCcvcGF0aC90by9maWxlJywgJ3InKTsKLy8gVGhlIGZpbGUgaGFzIG5vdCB5ZXQgYmVlbiBvcGVuZWQuLi4KCmVjaG8gJHN0cmVhbS0+cmVhZCgxMCk7Ci8vIFRoZSBmaWxlIGlzIG9wZW5lZCBhbmQgcmVhZCBmcm9tIG9ubHkgd2hlbiBuZWVkZWQuCmBgYAoKCiMjIExpbWl0U3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XExpbWl0U3RyZWFtYAoKTGltaXRTdHJlYW0gY2FuIGJlIHVzZWQgdG8gcmVhZCBhIHN1YnNldCBvciBzbGljZSBvZiBhbiBleGlzdGluZyBzdHJlYW0gb2JqZWN0LgpUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGJyZWFraW5nIGEgbGFyZ2UgZmlsZSBpbnRvIHNtYWxsZXIgcGllY2VzIHRvIGJlIHNlbnQgaW4KY2h1bmtzIChlLmcuIEFtYXpvbiBTMydzIG11bHRpcGFydCB1cGxvYWQgQVBJKS4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJG9yaWdpbmFsID0gUHNyN1xzdHJlYW1fZm9yKGZvcGVuKCcvdG1wL3Rlc3QudHh0JywgJ3IrJykpOwplY2hvICRvcmlnaW5hbC0+Z2V0U2l6ZSgpOwovLyA+Pj4gMTA0ODU3NgoKLy8gTGltaXQgdGhlIHNpemUgb2YgdGhlIGJvZHkgdG8gMTAyNCBieXRlcyBhbmQgc3RhcnQgcmVhZGluZyBmcm9tIGJ5dGUgMjA0OAokc3RyZWFtID0gbmV3IFBzcjdcTGltaXRTdHJlYW0oJG9yaWdpbmFsLCAxMDI0LCAyMDQ4KTsKZWNobyAkc3RyZWFtLT5nZXRTaXplKCk7Ci8vID4+PiAxMDI0CmVjaG8gJHN0cmVhbS0+dGVsbCgpOwovLyA+Pj4gMApgYGAKCgojIyBNdWx0aXBhcnRTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcTXVsdGlwYXJ0U3RyZWFtYAoKU3RyZWFtIHRoYXQgd2hlbiByZWFkIHJldHVybnMgYnl0ZXMgZm9yIGEgc3RyZWFtaW5nIG11bHRpcGFydCBvcgptdWx0aXBhcnQvZm9ybS1kYXRhIHN0cmVhbS4KCgojIyBOb1NlZWtTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcTm9TZWVrU3RyZWFtYAoKTm9TZWVrU3RyZWFtIHdyYXBzIGEgc3RyZWFtIGFuZCBkb2VzIG5vdCBhbGxvdyBzZWVraW5nLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjc7Cgokb3JpZ2luYWwgPSBQc3I3XHN0cmVhbV9mb3IoJ2ZvbycpOwokbm9TZWVrID0gbmV3IFBzcjdcTm9TZWVrU3RyZWFtKCRvcmlnaW5hbCk7CgplY2hvICRub1NlZWstPnJlYWQoMyk7Ci8vIGZvbwp2YXJfZXhwb3J0KCRub1NlZWstPmlzU2Vla2FibGUoKSk7Ci8vIGZhbHNlCiRub1NlZWstPnNlZWsoMCk7CnZhcl9leHBvcnQoJG5vU2Vlay0+cmVhZCgzKSk7Ci8vIE5VTEwKYGBgCgoKIyMgUHVtcFN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xQdW1wU3RyZWFtYAoKUHJvdmlkZXMgYSByZWFkIG9ubHkgc3RyZWFtIHRoYXQgcHVtcHMgZGF0YSBmcm9tIGEgUEhQIGNhbGxhYmxlLgoKV2hlbiBpbnZva2luZyB0aGUgcHJvdmlkZWQgY2FsbGFibGUsIHRoZSBQdW1wU3RyZWFtIHdpbGwgcGFzcyB0aGUgYW1vdW50IG9mCmRhdGEgcmVxdWVzdGVkIHRvIHJlYWQgdG8gdGhlIGNhbGxhYmxlLiBUaGUgY2FsbGFibGUgY2FuIGNob29zZSB0byBpZ25vcmUKdGhpcyB2YWx1ZSBhbmQgcmV0dXJuIGZld2VyIG9yIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuIEFueSBleHRyYSBkYXRhCnJldHVybmVkIGJ5IHRoZSBwcm92aWRlZCBjYWxsYWJsZSBpcyBidWZmZXJlZCBpbnRlcm5hbGx5IHVudGlsIGRyYWluZWQgdXNpbmcKdGhlIHJlYWQoKSBmdW5jdGlvbiBvZiB0aGUgUHVtcFN0cmVhbS4gVGhlIHByb3ZpZGVkIGNhbGxhYmxlIE1VU1QgcmV0dXJuCmZhbHNlIHdoZW4gdGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJlYWQuCgoKIyMgSW1wbGVtZW50aW5nIHN0cmVhbSBkZWNvcmF0b3JzCgpDcmVhdGluZyBhIHN0cmVhbSBkZWNvcmF0b3IgaXMgdmVyeSBlYXN5IHRoYW5rcyB0byB0aGUKYEd1enpsZUh0dHBcUHNyN1xTdHJlYW1EZWNvcmF0b3JUcmFpdGAuIFRoaXMgdHJhaXQgcHJvdmlkZXMgbWV0aG9kcyB0aGF0CmltcGxlbWVudCBgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2VgIGJ5IHByb3h5aW5nIHRvIGFuIHVuZGVybHlpbmcKc3RyZWFtLiBKdXN0IGB1c2VgIHRoZSBgU3RyZWFtRGVjb3JhdG9yVHJhaXRgIGFuZCBpbXBsZW1lbnQgeW91ciBjdXN0b20KbWV0aG9kcy4KCkZvciBleGFtcGxlLCBsZXQncyBzYXkgd2Ugd2FudGVkIHRvIGNhbGwgYSBzcGVjaWZpYyBmdW5jdGlvbiBlYWNoIHRpbWUgdGhlIGxhc3QKYnl0ZSBpcyByZWFkIGZyb20gYSBzdHJlYW0uIFRoaXMgY291bGQgYmUgaW1wbGVtZW50ZWQgYnkgb3ZlcnJpZGluZyB0aGUKYHJlYWQoKWAgbWV0aG9kLgoKYGBgcGhwCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcUHNyN1xTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCmNsYXNzIEVvZkNhbGxiYWNrU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICBwcml2YXRlICRjYWxsYmFjazsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sIGNhbGxhYmxlICRjYikKICAgIHsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbTsKICAgICAgICAkdGhpcy0+Y2FsbGJhY2sgPSAkY2I7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlYWQoJGxlbmd0aCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnN0cmVhbS0+cmVhZCgkbGVuZ3RoKTsKCiAgICAgICAgLy8gSW52b2tlIHRoZSBjYWxsYmFjayB3aGVuIEVPRiBpcyBoaXQuCiAgICAgICAgaWYgKCR0aGlzLT5lb2YoKSkgewogICAgICAgICAgICBjYWxsX3VzZXJfZnVuYygkdGhpcy0+Y2FsbGJhY2spOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9Cn0KYGBgCgpUaGlzIGRlY29yYXRvciBjb3VsZCBiZSBhZGRlZCB0byBhbnkgZXhpc3Rpbmcgc3RyZWFtIGFuZCB1c2VkIGxpa2Ugc286CgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyNzsKCiRvcmlnaW5hbCA9IFBzcjdcc3RyZWFtX2ZvcignZm9vJyk7CgokZW9mU3RyZWFtID0gbmV3IEVvZkNhbGxiYWNrU3RyZWFtKCRvcmlnaW5hbCwgZnVuY3Rpb24gKCkgewogICAgZWNobyAnRU9GISc7Cn0pOwoKJGVvZlN0cmVhbS0+cmVhZCgyKTsKJGVvZlN0cmVhbS0+cmVhZCgxKTsKLy8gZWNob2VzICJFT0YhIgokZW9mU3RyZWFtLT5zZWVrKDApOwokZW9mU3RyZWFtLT5yZWFkKDMpOwovLyBlY2hvZXMgIkVPRiEiCmBgYAoKCiMjIFBIUCBTdHJlYW1XcmFwcGVyCgpZb3UgY2FuIHVzZSB0aGUgYEd1enpsZUh0dHBcUHNyN1xTdHJlYW1XcmFwcGVyYCBjbGFzcyBpZiB5b3UgbmVlZCB0byB1c2UgYQpQU1ItNyBzdHJlYW0gYXMgYSBQSFAgc3RyZWFtIHJlc291cmNlLgoKVXNlIHRoZSBgR3V6emxlSHR0cFxQc3I3XFN0cmVhbVdyYXBwZXI6OmdldFJlc291cmNlKClgIG1ldGhvZCB0byBjcmVhdGUgYSBQSFAKc3RyZWFtIGZyb20gYSBQU1ItNyBzdHJlYW0uCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyN1xTdHJlYW1XcmFwcGVyOwoKJHN0cmVhbSA9IEd1enpsZUh0dHBcUHNyN1xzdHJlYW1fZm9yKCdoZWxsbyEnKTsKJHJlc291cmNlID0gU3RyZWFtV3JhcHBlcjo6Z2V0UmVzb3VyY2UoJHN0cmVhbSk7CmVjaG8gZnJlYWQoJHJlc291cmNlLCA2KTsgLy8gb3V0cHV0cyBoZWxsbyEKYGBgCgoKIyBGdW5jdGlvbiBBUEkKClRoZXJlIGFyZSB2YXJpb3VzIGZ1bmN0aW9ucyBhdmFpbGFibGUgdW5kZXIgdGhlIGBHdXp6bGVIdHRwXFBzcjdgIG5hbWVzcGFjZS4KCgojIyBgZnVuY3Rpb24gc3RyYAoKYGZ1bmN0aW9uIHN0cihNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlKWAKClJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBIVFRQIG1lc3NhZ2UuCgpgYGBwaHAKJHJlcXVlc3QgPSBuZXcgR3V6emxlSHR0cFxQc3I3XFJlcXVlc3QoJ0dFVCcsICdodHRwOi8vZXhhbXBsZS5jb20nKTsKZWNobyBHdXp6bGVIdHRwXFBzcjdcc3RyKCRyZXF1ZXN0KTsKYGBgCgoKIyMgYGZ1bmN0aW9uIHVyaV9mb3JgCgpgZnVuY3Rpb24gdXJpX2ZvcigkdXJpKWAKClRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhIHN0cmluZyBvciBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIGFuZCByZXR1cm5zIGEKVXJpSW50ZXJmYWNlIGZvciB0aGUgZ2l2ZW4gdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IGEgYFVyaUludGVyZmFjZWAsIGl0CmlzIHJldHVybmVkIGFzLWlzLgoKYGBgcGhwCiR1cmkgPSBHdXp6bGVIdHRwXFBzcjdcdXJpX2ZvcignaHR0cDovL2V4YW1wbGUuY29tJyk7CmFzc2VydCgkdXJpID09PSBHdXp6bGVIdHRwXFBzcjdcdXJpX2ZvcigkdXJpKSk7CmBgYAoKCiMjIGBmdW5jdGlvbiBzdHJlYW1fZm9yYAoKYGZ1bmN0aW9uIHN0cmVhbV9mb3IoJHJlc291cmNlID0gJycsIGFycmF5ICRvcHRpb25zID0gW10pYAoKQ3JlYXRlIGEgbmV3IHN0cmVhbSBiYXNlZCBvbiB0aGUgaW5wdXQgdHlwZS4KCk9wdGlvbnMgaXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgdGhhdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CgoqIC0gbWV0YWRhdGE6IEFycmF5IG9mIGN1c3RvbSBtZXRhZGF0YS4KKiAtIHNpemU6IFNpemUgb2YgdGhlIHN0cmVhbS4KClRoaXMgbWV0aG9kIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBgJHJlc291cmNlYCB0eXBlczoKCi0gYFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlYDogUmV0dXJucyB0aGUgdmFsdWUgYXMtaXMuCi0gYHN0cmluZ2A6IENyZWF0ZXMgYSBzdHJlYW0gb2JqZWN0IHRoYXQgdXNlcyB0aGUgZ2l2ZW4gc3RyaW5nIGFzIHRoZSBjb250ZW50cy4KLSBgcmVzb3VyY2VgOiBDcmVhdGVzIGEgc3RyZWFtIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBQSFAgc3RyZWFtIHJlc291cmNlLgotIGBJdGVyYXRvcmA6IElmIHRoZSBwcm92aWRlZCB2YWx1ZSBpbXBsZW1lbnRzIGBJdGVyYXRvcmAsIHRoZW4gYSByZWFkLW9ubHkKICBzdHJlYW0gb2JqZWN0IHdpbGwgYmUgY3JlYXRlZCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBpdGVyYWJsZS4gRWFjaCB0aW1lIHRoZQogIHN0cmVhbSBpcyByZWFkIGZyb20sIGRhdGEgZnJvbSB0aGUgaXRlcmF0b3Igd2lsbCBmaWxsIGEgYnVmZmVyIGFuZCB3aWxsIGJlCiAgY29udGludW91c2x5IGNhbGxlZCB1bnRpbCB0aGUgYnVmZmVyIGlzIGVxdWFsIHRvIHRoZSByZXF1ZXN0ZWQgcmVhZCBzaXplLgogIFN1YnNlcXVlbnQgcmVhZCBjYWxscyB3aWxsIGZpcnN0IHJlYWQgZnJvbSB0aGUgYnVmZmVyIGFuZCB0aGVuIGNhbGwgYG5leHRgCiAgb24gdGhlIHVuZGVybHlpbmcgaXRlcmF0b3IgdW50aWwgaXQgaXMgZXhoYXVzdGVkLgotIGBvYmplY3RgIHdpdGggYF9fdG9TdHJpbmcoKWA6IElmIHRoZSBvYmplY3QgaGFzIHRoZSBgX190b1N0cmluZygpYCBtZXRob2QsCiAgdGhlIG9iamVjdCB3aWxsIGJlIGNhc3QgdG8gYSBzdHJpbmcgYW5kIHRoZW4gYSBzdHJlYW0gd2lsbCBiZSByZXR1cm5lZCB0aGF0CiAgdXNlcyB0aGUgc3RyaW5nIHZhbHVlLgotIGBOVUxMYDogV2hlbiBgbnVsbGAgaXMgcGFzc2VkLCBhbiBlbXB0eSBzdHJlYW0gb2JqZWN0IGlzIHJldHVybmVkLgotIGBjYWxsYWJsZWAgV2hlbiBhIGNhbGxhYmxlIGlzIHBhc3NlZCwgYSByZWFkLW9ubHkgc3RyZWFtIG9iamVjdCB3aWxsIGJlCiAgY3JlYXRlZCB0aGF0IGludm9rZXMgdGhlIGdpdmVuIGNhbGxhYmxlLiBUaGUgY2FsbGFibGUgaXMgaW52b2tlZCB3aXRoIHRoZQogIG51bWJlciBvZiBzdWdnZXN0ZWQgYnl0ZXMgdG8gcmVhZC4gVGhlIGNhbGxhYmxlIGNhbiByZXR1cm4gYW55IG51bWJlciBvZgogIGJ5dGVzLCBidXQgTVVTVCByZXR1cm4gYGZhbHNlYCB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4uIFRoZQogIHN0cmVhbSBvYmplY3QgdGhhdCB3cmFwcyB0aGUgY2FsbGFibGUgd2lsbCBpbnZva2UgdGhlIGNhbGxhYmxlIHVudGlsIHRoZQogIG51bWJlciBvZiByZXF1ZXN0ZWQgYnl0ZXMgYXJlIGF2YWlsYWJsZS4gQW55IGFkZGl0aW9uYWwgYnl0ZXMgd2lsbCBiZQogIGJ1ZmZlcmVkIGFuZCB1c2VkIGluIHN1YnNlcXVlbnQgcmVhZHMuCgpgYGBwaHAKJHN0cmVhbSA9IEd1enpsZUh0dHBcUHNyN1xzdHJlYW1fZm9yKCdmb28nKTsKJHN0cmVhbSA9IEd1enpsZUh0dHBcUHNyN1xzdHJlYW1fZm9yKGZvcGVuKCcvcGF0aC90by9maWxlJywgJ3InKSk7CgokZ2VuZXJhdG9yIGZ1bmN0aW9uICgkYnl0ZXMpIHsKICAgIGZvciAoJGkgPSAwOyAkaSA8ICRieXRlczsgJGkrKykgewogICAgICAgIHlpZWxkICcgJzsKICAgIH0KfQoKJHN0cmVhbSA9IEd1enpsZUh0dHBcUHNyN1xzdHJlYW1fZm9yKCRnZW5lcmF0b3IoMTAwKSk7CmBgYAoKCiMjIGBmdW5jdGlvbiBwYXJzZV9oZWFkZXJgCgpgZnVuY3Rpb24gcGFyc2VfaGVhZGVyKCRoZWFkZXIpYAoKUGFyc2UgYW4gYXJyYXkgb2YgaGVhZGVyIHZhbHVlcyBjb250YWluaW5nICI7IiBzZXBhcmF0ZWQgZGF0YSBpbnRvIGFuIGFycmF5IG9mCmFzc29jaWF0aXZlIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGhlYWRlciBrZXkgdmFsdWUgcGFpciBkYXRhIG9mIHRoZSBoZWFkZXIuCldoZW4gYSBwYXJhbWV0ZXIgZG9lcyBub3QgY29udGFpbiBhIHZhbHVlLCBidXQganVzdCBjb250YWlucyBhIGtleSwgdGhpcwpmdW5jdGlvbiB3aWxsIGluamVjdCBhIGtleSB3aXRoIGEgJycgc3RyaW5nIHZhbHVlLgoKCiMjIGBmdW5jdGlvbiBub3JtYWxpemVfaGVhZGVyYAoKYGZ1bmN0aW9uIG5vcm1hbGl6ZV9oZWFkZXIoJGhlYWRlcilgCgpDb252ZXJ0cyBhbiBhcnJheSBvZiBoZWFkZXIgdmFsdWVzIHRoYXQgbWF5IGNvbnRhaW4gY29tbWEgc2VwYXJhdGVkIGhlYWRlcnMKaW50byBhbiBhcnJheSBvZiBoZWFkZXJzIHdpdGggbm8gY29tbWEgc2VwYXJhdGVkIHZhbHVlcy4KCgojIyBgZnVuY3Rpb24gbW9kaWZ5X3JlcXVlc3RgCgpgZnVuY3Rpb24gbW9kaWZ5X3JlcXVlc3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJGNoYW5nZXMpYAoKQ2xvbmUgYW5kIG1vZGlmeSBhIHJlcXVlc3Qgd2l0aCB0aGUgZ2l2ZW4gY2hhbmdlcy4gVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvcgpyZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNsb25lcyBuZWVkZWQgdG8gbXV0YXRlIGEgbWVzc2FnZS4KClRoZSBjaGFuZ2VzIGNhbiBiZSBvbmUgb2Y6CgotIG1ldGhvZDogKHN0cmluZykgQ2hhbmdlcyB0aGUgSFRUUCBtZXRob2QuCi0gc2V0X2hlYWRlcnM6IChhcnJheSkgU2V0cyB0aGUgZ2l2ZW4gaGVhZGVycy4KLSByZW1vdmVfaGVhZGVyczogKGFycmF5KSBSZW1vdmUgdGhlIGdpdmVuIGhlYWRlcnMuCi0gYm9keTogKG1peGVkKSBTZXRzIHRoZSBnaXZlbiBib2R5LgotIHVyaTogKFVyaUludGVyZmFjZSkgU2V0IHRoZSBVUkkuCi0gcXVlcnk6IChzdHJpbmcpIFNldCB0aGUgcXVlcnkgc3RyaW5nIHZhbHVlIG9mIHRoZSBVUkkuCi0gdmVyc2lvbjogKHN0cmluZykgU2V0IHRoZSBwcm90b2NvbCB2ZXJzaW9uLgoKCiMjIGBmdW5jdGlvbiByZXdpbmRfYm9keWAKCmBmdW5jdGlvbiByZXdpbmRfYm9keShNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlKWAKCkF0dGVtcHRzIHRvIHJld2luZCBhIG1lc3NhZ2UgYm9keSBhbmQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLiBUaGUgYm9keQpvZiB0aGUgbWVzc2FnZSB3aWxsIG9ubHkgYmUgcmV3b3VuZCBpZiBhIGNhbGwgdG8gYHRlbGwoKWAgcmV0dXJucyBhIHZhbHVlIG90aGVyCnRoYW4gYDBgLgoKCiMjIGBmdW5jdGlvbiB0cnlfZm9wZW5gCgpgZnVuY3Rpb24gdHJ5X2ZvcGVuKCRmaWxlbmFtZSwgJG1vZGUpYAoKU2FmZWx5IG9wZW5zIGEgUEhQIHN0cmVhbSByZXNvdXJjZSB1c2luZyBhIGZpbGVuYW1lLgoKV2hlbiBmb3BlbiBmYWlscywgUEhQIG5vcm1hbGx5IHJhaXNlcyBhIHdhcm5pbmcuIFRoaXMgZnVuY3Rpb24gYWRkcyBhbiBlcnJvcgpoYW5kbGVyIHRoYXQgY2hlY2tzIGZvciBlcnJvcnMgYW5kIHRocm93cyBhbiBleGNlcHRpb24gaW5zdGVhZC4KCgojIyBgZnVuY3Rpb24gY29weV90b19zdHJpbmdgCgpgZnVuY3Rpb24gY29weV90b19zdHJpbmcoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sICRtYXhMZW4gPSAtMSlgCgpDb3B5IHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBpbnRvIGEgc3RyaW5nIHVudGlsIHRoZSBnaXZlbiBudW1iZXIgb2YgYnl0ZXMKaGF2ZSBiZWVuIHJlYWQuCgoKIyMgYGZ1bmN0aW9uIGNvcHlfdG9fc3RyZWFtYAoKYGZ1bmN0aW9uIGNvcHlfdG9fc3RyZWFtKFN0cmVhbUludGVyZmFjZSAkc291cmNlLCBTdHJlYW1JbnRlcmZhY2UgJGRlc3QsICRtYXhMZW4gPSAtMSlgCgpDb3B5IHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBpbnRvIGFub3RoZXIgc3RyZWFtIHVudGlsIHRoZSBnaXZlbiBudW1iZXIgb2YKYnl0ZXMgaGF2ZSBiZWVuIHJlYWQuCgoKIyMgYGZ1bmN0aW9uIGhhc2hgCgpgZnVuY3Rpb24gaGFzaChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgJGFsZ28sICRyYXdPdXRwdXQgPSBmYWxzZSlgCgpDYWxjdWxhdGUgYSBoYXNoIG9mIGEgU3RyZWFtLiBUaGlzIG1ldGhvZCByZWFkcyB0aGUgZW50aXJlIHN0cmVhbSB0byBjYWxjdWxhdGUKYSByb2xsaW5nIGhhc2ggKGJhc2VkIG9uIFBIUCdzIGhhc2hfaW5pdCBmdW5jdGlvbnMpLgoKCiMjIGBmdW5jdGlvbiByZWFkbGluZWAKCmBmdW5jdGlvbiByZWFkbGluZShTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgJG1heExlbmd0aCA9IG51bGwpYAoKUmVhZCBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtIHVwIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgYnVmZmVyIGxlbmd0aC4KCgojIyBgZnVuY3Rpb24gcGFyc2VfcmVxdWVzdGAKCmBmdW5jdGlvbiBwYXJzZV9yZXF1ZXN0KCRtZXNzYWdlKWAKClBhcnNlcyBhIHJlcXVlc3QgbWVzc2FnZSBzdHJpbmcgaW50byBhIHJlcXVlc3Qgb2JqZWN0LgoKCiMjIGBmdW5jdGlvbiBwYXJzZV9yZXNwb25zZWAKCmBmdW5jdGlvbiBwYXJzZV9yZXNwb25zZSgkbWVzc2FnZSlgCgpQYXJzZXMgYSByZXNwb25zZSBtZXNzYWdlIHN0cmluZyBpbnRvIGEgcmVzcG9uc2Ugb2JqZWN0LgoKCiMjIGBmdW5jdGlvbiBwYXJzZV9xdWVyeWAKCmBmdW5jdGlvbiBwYXJzZV9xdWVyeSgkc3RyLCAkdXJsRW5jb2RpbmcgPSB0cnVlKWAKClBhcnNlIGEgcXVlcnkgc3RyaW5nIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkuCgpJZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIGZvdW5kIGZvciB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSBvZiB0aGF0IGtleSB2YWx1ZSBwYWlyCndpbGwgYmVjb21lIGFuIGFycmF5LiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBhcnNlIG5lc3RlZCBQSFAgc3R5bGUgYXJyYXlzIGludG8KYW4gYXNzb2NpYXRpdmUgYXJyYXkgKGUuZy4sIGBmb29bYV09MSZmb29bYl09MmAgd2lsbCBiZSBwYXJzZWQgaW50bwpgWydmb29bYV0nID0+ICcxJywgJ2Zvb1tiXScgPT4gJzInXWApLgoKCiMjIGBmdW5jdGlvbiBidWlsZF9xdWVyeWAKCmBmdW5jdGlvbiBidWlsZF9xdWVyeShhcnJheSAkcGFyYW1zLCAkZW5jb2RpbmcgPSBQSFBfUVVFUllfUkZDMzk4NilgCgpCdWlsZCBhIHF1ZXJ5IHN0cmluZyBmcm9tIGFuIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycy4KClRoaXMgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHBhcnNlX3F1ZXJ5KCkgdG8gYnVpbGQgYSBxdWVyeSBzdHJpbmcuClRoaXMgZnVuY3Rpb24gZG9lcyBub3QgbW9kaWZ5IHRoZSBwcm92aWRlZCBrZXlzIHdoZW4gYW4gYXJyYXkgaXMgZW5jb3VudGVyZWQKKGxpa2UgaHR0cF9idWlsZF9xdWVyeSB3b3VsZCkuCgoKIyMgYGZ1bmN0aW9uIG1pbWV0eXBlX2Zyb21fZmlsZW5hbWVgCgpgZnVuY3Rpb24gbWltZXR5cGVfZnJvbV9maWxlbmFtZSgkZmlsZW5hbWUpYAoKRGV0ZXJtaW5lcyB0aGUgbWltZXR5cGUgb2YgYSBmaWxlIGJ5IGxvb2tpbmcgYXQgaXRzIGV4dGVuc2lvbi4KCgojIyBgZnVuY3Rpb24gbWltZXR5cGVfZnJvbV9leHRlbnNpb25gCgpgZnVuY3Rpb24gbWltZXR5cGVfZnJvbV9leHRlbnNpb24oJGV4dGVuc2lvbilgCgpNYXBzIGEgZmlsZSBleHRlbnNpb25zIHRvIGEgbWltZXR5cGUuCgoKIyBBZGRpdGlvbmFsIFVSSSBNZXRob2RzCgpBc2lkZSBmcm9tIHRoZSBzdGFuZGFyZCBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIGltcGxlbWVudGF0aW9uIGluIGZvcm0gb2YgdGhlIGBHdXp6bGVIdHRwXFBzcjdcVXJpYCBjbGFzcywKdGhpcyBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHdoZW4gd29ya2luZyB3aXRoIFVSSXMgYXMgc3RhdGljIG1ldGhvZHMuCgojIyBVUkkgVHlwZXMKCkFuIGluc3RhbmNlIG9mIGBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZWAgY2FuIGVpdGhlciBiZSBhbiBhYnNvbHV0ZSBVUkkgb3IgYSByZWxhdGl2ZSByZWZlcmVuY2UuCkFuIGFic29sdXRlIFVSSSBoYXMgYSBzY2hlbWUuIEEgcmVsYXRpdmUgcmVmZXJlbmNlIGlzIHVzZWQgdG8gZXhwcmVzcyBhIFVSSSByZWxhdGl2ZSB0byBhbm90aGVyIFVSSSwKdGhlIGJhc2UgVVJJLiBSZWxhdGl2ZSByZWZlcmVuY2VzIGNhbiBiZSBkaXZpZGVkIGludG8gc2V2ZXJhbCBmb3JtcyBhY2NvcmRpbmcgdG8KW1JGQyAzOTg2IFNlY3Rpb24gNC4yXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMik6CgotIG5ldHdvcmstcGF0aCByZWZlcmVuY2VzLCBlLmcuIGAvL2V4YW1wbGUuY29tL3BhdGhgCi0gYWJzb2x1dGUtcGF0aCByZWZlcmVuY2VzLCBlLmcuIGAvcGF0aGAKLSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZXMsIGUuZy4gYHN1YnBhdGhgCgpUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHR5cGUgb2YgdGhlIFVSSS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6aXNBYnNvbHV0ZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQWJzb2x1dGUoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sYAoKV2hldGhlciB0aGUgVVJJIGlzIGFic29sdXRlLCBpLmUuIGl0IGhhcyBhIHNjaGVtZS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6aXNOZXR3b3JrUGF0aFJlZmVyZW5jZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzTmV0d29ya1BhdGhSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sYAoKV2hldGhlciB0aGUgVVJJIGlzIGEgbmV0d29yay1wYXRoIHJlZmVyZW5jZS4gQSByZWxhdGl2ZSByZWZlcmVuY2UgdGhhdCBiZWdpbnMgd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyBpcwp0ZXJtZWQgYW4gbmV0d29yay1wYXRoIHJlZmVyZW5jZS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6aXNBYnNvbHV0ZVBhdGhSZWZlcmVuY2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Fic29sdXRlUGF0aFJlZmVyZW5jZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2xgCgpXaGV0aGVyIHRoZSBVUkkgaXMgYSBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZS4gQSByZWxhdGl2ZSByZWZlcmVuY2UgdGhhdCBiZWdpbnMgd2l0aCBhIHNpbmdsZSBzbGFzaCBjaGFyYWN0ZXIgaXMKdGVybWVkIGFuIGFic29sdXRlLXBhdGggcmVmZXJlbmNlLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjppc1JlbGF0aXZlUGF0aFJlZmVyZW5jZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpKTogYm9vbGAKCldoZXRoZXIgdGhlIFVSSSBpcyBhIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlLiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGRvZXMgbm90IGJlZ2luIHdpdGggYSBzbGFzaCBjaGFyYWN0ZXIgaXMKdGVybWVkIGEgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmlzU2FtZURvY3VtZW50UmVmZXJlbmNlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNTYW1lRG9jdW1lbnRSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmksIFVyaUludGVyZmFjZSAkYmFzZSA9IG51bGwpOiBib29sYAoKV2hldGhlciB0aGUgVVJJIGlzIGEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UuIEEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UgcmVmZXJzIHRvIGEgVVJJIHRoYXQgaXMsIGFzaWRlIGZyb20gaXRzCmZyYWdtZW50IGNvbXBvbmVudCwgaWRlbnRpY2FsIHRvIHRoZSBiYXNlIFVSSS4gV2hlbiBubyBiYXNlIFVSSSBpcyBnaXZlbiwgb25seSBhbiBlbXB0eSBVUkkgcmVmZXJlbmNlCihhcGFydCBmcm9tIGl0cyBmcmFnbWVudCkgaXMgY29uc2lkZXJlZCBhIHNhbWUtZG9jdW1lbnQgcmVmZXJlbmNlLgoKIyMgVVJJIENvbXBvbmVudHMKCkFkZGl0aW9uYWwgbWV0aG9kcyB0byB3b3JrIHdpdGggVVJJIGNvbXBvbmVudHMuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmlzRGVmYXVsdFBvcnRgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0RlZmF1bHRQb3J0KFVyaUludGVyZmFjZSAkdXJpKTogYm9vbGAKCldoZXRoZXIgdGhlIFVSSSBoYXMgdGhlIGRlZmF1bHQgcG9ydCBvZiB0aGUgY3VycmVudCBzY2hlbWUuIGBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTo6Z2V0UG9ydGAgbWF5IHJldHVybiBudWxsCm9yIHRoZSBzdGFuZGFyZCBwb3J0LiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBpbmRlcGVuZGVudGx5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6Y29tcG9zZUNvbXBvbmVudHNgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wb3NlQ29tcG9uZW50cygkc2NoZW1lLCAkYXV0aG9yaXR5LCAkcGF0aCwgJHF1ZXJ5LCAkZnJhZ21lbnQpOiBzdHJpbmdgCgpDb21wb3NlcyBhIFVSSSByZWZlcmVuY2Ugc3RyaW5nIGZyb20gaXRzIHZhcmlvdXMgY29tcG9uZW50cyBhY2NvcmRpbmcgdG8KW1JGQyAzOTg2IFNlY3Rpb24gNS4zXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMykuIFVzdWFsbHkgdGhpcyBtZXRob2QgZG9lcyBub3QgbmVlZCB0byBiZSBjYWxsZWQKbWFudWFsbHkgYnV0IGluc3RlYWQgaXMgdXNlZCBpbmRpcmVjdGx5IHZpYSBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U6Ol9fdG9TdHJpbmdgLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjpmcm9tUGFydHNgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tUGFydHMoYXJyYXkgJHBhcnRzKTogVXJpSW50ZXJmYWNlYAoKQ3JlYXRlcyBhIFVSSSBmcm9tIGEgaGFzaCBvZiBbYHBhcnNlX3VybGBdKGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5wYXJzZS11cmwucGhwKSBjb21wb25lbnRzLgoKCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6d2l0aFF1ZXJ5VmFsdWVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRoUXVlcnlWYWx1ZShVcmlJbnRlcmZhY2UgJHVyaSwgJGtleSwgJHZhbHVlKTogVXJpSW50ZXJmYWNlYAoKQ3JlYXRlcyBhIG5ldyBVUkkgd2l0aCBhIHNwZWNpZmljIHF1ZXJ5IHN0cmluZyB2YWx1ZS4gQW55IGV4aXN0aW5nIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgdGhhdCBleGFjdGx5IG1hdGNoIHRoZQpwcm92aWRlZCBrZXkgYXJlIHJlbW92ZWQgYW5kIHJlcGxhY2VkIHdpdGggdGhlIGdpdmVuIGtleSB2YWx1ZSBwYWlyLiBBIHZhbHVlIG9mIG51bGwgd2lsbCBzZXQgdGhlIHF1ZXJ5IHN0cmluZwprZXkgd2l0aG91dCBhIHZhbHVlLCBlLmcuICJrZXkiIGluc3RlYWQgb2YgImtleT12YWx1ZSIuCgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjp3aXRob3V0UXVlcnlWYWx1ZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdpdGhvdXRRdWVyeVZhbHVlKFVyaUludGVyZmFjZSAkdXJpLCAka2V5KTogVXJpSW50ZXJmYWNlYAoKQ3JlYXRlcyBhIG5ldyBVUkkgd2l0aCBhIHNwZWNpZmljIHF1ZXJ5IHN0cmluZyB2YWx1ZSByZW1vdmVkLiBBbnkgZXhpc3RpbmcgcXVlcnkgc3RyaW5nIHZhbHVlcyB0aGF0IGV4YWN0bHkgbWF0Y2ggdGhlCnByb3ZpZGVkIGtleSBhcmUgcmVtb3ZlZC4KCiMjIFJlZmVyZW5jZSBSZXNvbHV0aW9uCgpgR3V6emxlSHR0cFxQc3I3XFVyaVJlc29sdmVyYCBwcm92aWRlcyBtZXRob2RzIHRvIHJlc29sdmUgYSBVUkkgcmVmZXJlbmNlIGluIHRoZSBjb250ZXh0IG9mIGEgYmFzZSBVUkkgYWNjb3JkaW5nCnRvIFtSRkMgMzk4NiBTZWN0aW9uIDVdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNSkuIFRoaXMgaXMgZm9yIGV4YW1wbGUgYWxzbyB3aGF0IHdlYiBicm93c2VycwpkbyB3aGVuIHJlc29sdmluZyBhIGxpbmsgaW4gYSB3ZWJzaXRlIGJhc2VkIG9uIHRoZSBjdXJyZW50IHJlcXVlc3QgVVJJLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpUmVzb2x2ZXI6OnJlc29sdmVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICRyZWwpOiBVcmlJbnRlcmZhY2VgCgpDb252ZXJ0cyB0aGUgcmVsYXRpdmUgVVJJIGludG8gYSBuZXcgVVJJIHRoYXQgaXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgYmFzZSBVUkkuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlSZXNvbHZlcjo6cmVtb3ZlRG90U2VnbWVudHNgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZW1vdmVEb3RTZWdtZW50cyhzdHJpbmcgJHBhdGgpOiBzdHJpbmdgCgpSZW1vdmVzIGRvdCBzZWdtZW50cyBmcm9tIGEgcGF0aCBhbmQgcmV0dXJucyB0aGUgbmV3IHBhdGggYWNjb3JkaW5nIHRvCltSRkMgMzk4NiBTZWN0aW9uIDUuMi40XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40KS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaVJlc29sdmVyOjpyZWxhdGl2aXplYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVsYXRpdml6ZShVcmlJbnRlcmZhY2UgJGJhc2UsIFVyaUludGVyZmFjZSAkdGFyZ2V0KTogVXJpSW50ZXJmYWNlYAoKUmV0dXJucyB0aGUgdGFyZ2V0IFVSSSBhcyBhIHJlbGF0aXZlIHJlZmVyZW5jZSBmcm9tIHRoZSBiYXNlIFVSSS4gVGhpcyBtZXRob2QgaXMgdGhlIGNvdW50ZXJwYXJ0IHRvIHJlc29sdmUoKToKCmBgYHBocAooc3RyaW5nKSAkdGFyZ2V0ID09PSAoc3RyaW5nKSBVcmlSZXNvbHZlcjo6cmVzb2x2ZSgkYmFzZSwgVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsICR0YXJnZXQpKQpgYGAKCk9uZSB1c2UtY2FzZSBpcyB0byB1c2UgdGhlIGN1cnJlbnQgcmVxdWVzdCBVUkkgYXMgYmFzZSBVUkkgYW5kIHRoZW4gZ2VuZXJhdGUgcmVsYXRpdmUgbGlua3MgaW4geW91ciBkb2N1bWVudHMKdG8gcmVkdWNlIHRoZSBkb2N1bWVudCBzaXplIG9yIG9mZmVyIHNlbGYtY29udGFpbmVkIGRvd25sb2FkYWJsZSBkb2N1bWVudCBhcmNoaXZlcy4KCmBgYHBocAokYmFzZSA9IG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLmNvbS9hL2IvJyk7CmVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLmNvbS9hL2IvYycpKTsgIC8vIHByaW50cyAnYycuCmVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLmNvbS9hL3gveScpKTsgIC8vIHByaW50cyAnLi4veC95Jy4KZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi8/cScpKTsgLy8gcHJpbnRzICc/cScuCmVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLm9yZy9hL2IvJykpOyAgIC8vIHByaW50cyAnLy9leGFtcGxlLm9yZy9hL2IvJy4KYGBgCgojIyBOb3JtYWxpemF0aW9uIGFuZCBDb21wYXJpc29uCgpgR3V6emxlSHR0cFxQc3I3XFVyaU5vcm1hbGl6ZXJgIHByb3ZpZGVzIG1ldGhvZHMgdG8gbm9ybWFsaXplIGFuZCBjb21wYXJlIFVSSXMgYWNjb3JkaW5nIHRvCltSRkMgMzk4NiBTZWN0aW9uIDZdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNikuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlOb3JtYWxpemVyOjpub3JtYWxpemVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoVXJpSW50ZXJmYWNlICR1cmksICRmbGFncyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBVcmlJbnRlcmZhY2VgCgpSZXR1cm5zIGEgbm9ybWFsaXplZCBVUkkuIFRoZSBzY2hlbWUgYW5kIGhvc3QgY29tcG9uZW50IGFyZSBhbHJlYWR5IG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlIHBlciBQU1ItNyBVcmlJbnRlcmZhY2UuClRoaXMgbWV0aG9kcyBhZGRzIGFkZGl0aW9uYWwgbm9ybWFsaXphdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSBgJGZsYWdzYCBwYXJhbWV0ZXIgd2hpY2ggaXMgYSBiaXRtYXNrCm9mIG5vcm1hbGl6YXRpb25zIHRvIGFwcGx5LiBUaGUgZm9sbG93aW5nIG5vcm1hbGl6YXRpb25zIGFyZSBhdmFpbGFibGU6CgotIGBVcmlOb3JtYWxpemVyOjpQUkVTRVJWSU5HX05PUk1BTElaQVRJT05TYAoKICAgIERlZmF1bHQgbm9ybWFsaXphdGlvbnMgd2hpY2ggb25seSBpbmNsdWRlIHRoZSBvbmVzIHRoYXQgcHJlc2VydmUgc2VtYW50aWNzLgoKLSBgVXJpTm9ybWFsaXplcjo6Q0FQSVRBTElaRV9QRVJDRU5UX0VOQ09ESU5HYAoKICAgIEFsbCBsZXR0ZXJzIHdpdGhpbiBhIHBlcmNlbnQtZW5jb2RpbmcgdHJpcGxldCAoZS5nLiwgIiUzQSIpIGFyZSBjYXNlLWluc2Vuc2l0aXZlLCBhbmQgc2hvdWxkIGJlIGNhcGl0YWxpemVkLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmcvYSVjMiViMWJgIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL2ElQzIlQjFiYAoKLSBgVXJpTm9ybWFsaXplcjo6REVDT0RFX1VOUkVTRVJWRURfQ0hBUkFDVEVSU2AKCiAgICBEZWNvZGVzIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgb2YgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzLiBGb3IgY29uc2lzdGVuY3ksIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgaW4gdGhlIHJhbmdlcyBvZgogICAgQUxQSEEgKCU0MeKAkyU1QSBhbmQgJTYx4oCTJTdBKSwgRElHSVQgKCUzMOKAkyUzOSksIGh5cGhlbiAoJTJEKSwgcGVyaW9kICglMkUpLCB1bmRlcnNjb3JlICglNUYpLCBvciB0aWxkZSAoJTdFKSBzaG91bGQKICAgIG5vdCBiZSBjcmVhdGVkIGJ5IFVSSSBwcm9kdWNlcnMgYW5kLCB3aGVuIGZvdW5kIGluIGEgVVJJLCBzaG91bGQgYmUgZGVjb2RlZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIHVucmVzZXJ2ZWQKICAgIGNoYXJhY3RlcnMgYnkgVVJJIG5vcm1hbGl6ZXJzLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmcvJTdFdXNlcm4lNjFtZS9gIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL351c2VybmFtZS9gCgotIGBVcmlOb3JtYWxpemVyOjpDT05WRVJUX0VNUFRZX1BBVEhgCgogICAgQ29udmVydHMgdGhlIGVtcHR5IHBhdGggdG8gIi8iIGZvciBodHRwIGFuZCBodHRwcyBVUklzLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmdgIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL2AKCi0gYFVyaU5vcm1hbGl6ZXI6OlJFTU9WRV9ERUZBVUxUX0hPU1RgCgogICAgUmVtb3ZlcyB0aGUgZGVmYXVsdCBob3N0IG9mIHRoZSBnaXZlbiBVUkkgc2NoZW1lIGZyb20gdGhlIFVSSS4gT25seSB0aGUgImZpbGUiIHNjaGVtZSBkZWZpbmVzIHRoZSBkZWZhdWx0IGhvc3QKICAgICJsb2NhbGhvc3QiLiBBbGwgb2YgYGZpbGU6L215ZmlsZWAsIGBmaWxlOi8vL215ZmlsZWAsIGFuZCBgZmlsZTovL2xvY2FsaG9zdC9teWZpbGVgIGFyZSBlcXVpdmFsZW50IGFjY29yZGluZyB0bwogICAgUkZDIDM5ODYuCgogICAgRXhhbXBsZTogYGZpbGU6Ly9sb2NhbGhvc3QvbXlmaWxlYCDihpIgYGZpbGU6Ly8vbXlmaWxlYAoKLSBgVXJpTm9ybWFsaXplcjo6UkVNT1ZFX0RFRkFVTFRfUE9SVGAKCiAgICBSZW1vdmVzIHRoZSBkZWZhdWx0IHBvcnQgb2YgdGhlIGdpdmVuIFVSSSBzY2hlbWUgZnJvbSB0aGUgVVJJLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmc6ODAvYCDihpIgYGh0dHA6Ly9leGFtcGxlLm9yZy9gCgotIGBVcmlOb3JtYWxpemVyOjpSRU1PVkVfRE9UX1NFR01FTlRTYAoKICAgIFJlbW92ZXMgdW5uZWNlc3NhcnkgZG90LXNlZ21lbnRzLiBEb3Qtc2VnbWVudHMgaW4gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzIGFyZSBub3QgcmVtb3ZlZCBhcyBpdCB3b3VsZAogICAgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSByZWZlcmVuY2UuCgogICAgRXhhbXBsZTogYGh0dHA6Ly9leGFtcGxlLm9yZy8uLi9hL2IvLi4vYy8uL2QuaHRtbGAg4oaSIGBodHRwOi8vZXhhbXBsZS5vcmcvYS9jL2QuaHRtbGAKCi0gYFVyaU5vcm1hbGl6ZXI6OlJFTU9WRV9EVVBMSUNBVEVfU0xBU0hFU2AKCiAgICBQYXRocyB3aGljaCBpbmNsdWRlIHR3byBvciBtb3JlIGFkamFjZW50IHNsYXNoZXMgYXJlIGNvbnZlcnRlZCB0byBvbmUuIFdlYnNlcnZlcnMgdXN1YWxseSBpZ25vcmUgZHVwbGljYXRlIHNsYXNoZXMKICAgIGFuZCB0cmVhdCB0aG9zZSBVUklzIGVxdWl2YWxlbnQuIEJ1dCBpbiB0aGVvcnkgdGhvc2UgVVJJcyBkbyBub3QgbmVlZCB0byBiZSBlcXVpdmFsZW50LiBTbyB0aGlzIG5vcm1hbGl6YXRpb24KICAgIG1heSBjaGFuZ2UgdGhlIHNlbWFudGljcy4gRW5jb2RlZCBzbGFzaGVzICglMkYpIGFyZSBub3QgcmVtb3ZlZC4KCiAgICBFeGFtcGxlOiBgaHR0cDovL2V4YW1wbGUub3JnLy9mb28vLy9iYXIuaHRtbGAg4oaSIGBodHRwOi8vZXhhbXBsZS5vcmcvZm9vL2Jhci5odG1sYAoKLSBgVXJpTm9ybWFsaXplcjo6U09SVF9RVUVSWV9QQVJBTUVURVJTYAoKICAgIFNvcnQgcXVlcnkgcGFyYW1ldGVycyB3aXRoIHRoZWlyIHZhbHVlcyBpbiBhbHBoYWJldGljYWwgb3JkZXIuIEhvd2V2ZXIsIHRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGluIGEgVVJJIG1heSBiZQogICAgc2lnbmlmaWNhbnQgKHRoaXMgaXMgbm90IGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkKS4gU28gdGhpcyBub3JtYWxpemF0aW9uIGlzIG5vdCBzYWZlIGFuZCBtYXkgY2hhbmdlIHRoZSBzZW1hbnRpY3MKICAgIG9mIHRoZSBVUkkuCgogICAgRXhhbXBsZTogYD9sYW5nPWVuJmFydGljbGU9ZnJlZGAg4oaSIGA/YXJ0aWNsZT1mcmVkJmxhbmc9ZW5gCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlOb3JtYWxpemVyOjppc0VxdWl2YWxlbnRgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0VxdWl2YWxlbnQoVXJpSW50ZXJmYWNlICR1cmkxLCBVcmlJbnRlcmZhY2UgJHVyaTIsICRub3JtYWxpemF0aW9ucyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBib29sYAoKV2hldGhlciB0d28gVVJJcyBjYW4gYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LiBCb3RoIFVSSXMgYXJlIG5vcm1hbGl6ZWQgYXV0b21hdGljYWxseSBiZWZvcmUgY29tcGFyaXNvbiB3aXRoIHRoZSBnaXZlbgpgJG5vcm1hbGl6YXRpb25zYCBiaXRtYXNrLiBUaGUgbWV0aG9kIGFsc28gYWNjZXB0cyByZWxhdGl2ZSBVUkkgcmVmZXJlbmNlcyBhbmQgcmV0dXJucyB0cnVlIHdoZW4gdGhleSBhcmUgZXF1aXZhbGVudC4KVGhpcyBvZiBjb3Vyc2UgYXNzdW1lcyB0aGV5IHdpbGwgYmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgc2FtZSBiYXNlIFVSSS4gSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGRldGVybWluYXRpb24gb2YKZXF1aXZhbGVuY2Ugb3IgZGlmZmVyZW5jZSBvZiByZWxhdGl2ZSByZWZlcmVuY2VzIGRvZXMgbm90IG1lYW4gYW55dGhpbmcuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/AppendStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBSZWFkcyBmcm9tIG11bHRpcGxlIHN0cmVhbXMsIG9uZSBhZnRlciB0aGUgb3RoZXIuCiAqCiAqIFRoaXMgaXMgYSByZWFkLW9ubHkgc3RyZWFtIGRlY29yYXRvci4KICovCmNsYXNzIEFwcGVuZFN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKiogQHZhciBTdHJlYW1JbnRlcmZhY2VbXSBTdHJlYW1zIGJlaW5nIGRlY29yYXRlZCAqLwogICAgcHJpdmF0ZSAkc3RyZWFtcyA9IFtdOwoKICAgIHByaXZhdGUgJHNlZWthYmxlID0gdHJ1ZTsKICAgIHByaXZhdGUgJGN1cnJlbnQgPSAwOwogICAgcHJpdmF0ZSAkcG9zID0gMDsKICAgIHByaXZhdGUgJGRldGFjaGVkID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlW10gJHN0cmVhbXMgU3RyZWFtcyB0byBkZWNvcmF0ZS4gRWFjaCBzdHJlYW0gbXVzdAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHJlYWRhYmxlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJHN0cmVhbXMgPSBbXSkKICAgIHsKICAgICAgICBmb3JlYWNoICgkc3RyZWFtcyBhcyAkc3RyZWFtKSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRTdHJlYW0oJHN0cmVhbSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+cmV3aW5kKCk7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q29udGVudHMoKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBzdHJlYW0gdG8gdGhlIEFwcGVuZFN0cmVhbQogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSBTdHJlYW0gdG8gYXBwZW5kLiBNdXN0IGJlIHJlYWRhYmxlLgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgc3RyZWFtIGlzIG5vdCByZWFkYWJsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3RyZWFtKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtKQogICAgewogICAgICAgIGlmICghJHN0cmVhbS0+aXNSZWFkYWJsZSgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFYWNoIHN0cmVhbSBtdXN0IGJlIHJlYWRhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgc3RyZWFtIGlzIG9ubHkgc2Vla2FibGUgaWYgYWxsIHN0cmVhbXMgYXJlIHNlZWthYmxlCiAgICAgICAgaWYgKCEkc3RyZWFtLT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c3RyZWFtc1tdID0gJHN0cmVhbTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKQogICAgewogICAgICAgIHJldHVybiBjb3B5X3RvX3N0cmluZygkdGhpcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbG9zZXMgZWFjaCBhdHRhY2hlZCBzdHJlYW0uCiAgICAgKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKQogICAgewogICAgICAgICR0aGlzLT5wb3MgPSAkdGhpcy0+Y3VycmVudCA9IDA7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zdHJlYW1zIGFzICRzdHJlYW0pIHsKICAgICAgICAgICAgJHN0cmVhbS0+Y2xvc2UoKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zdHJlYW1zID0gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRhY2hlcyBlYWNoIGF0dGFjaGVkIHN0cmVhbQogICAgICoKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRldGFjaCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmNsb3NlKCk7CiAgICAgICAgJHRoaXMtPmRldGFjaGVkID0gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wb3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmllcyB0byBjYWxjdWxhdGUgdGhlIHNpemUgYnkgYWRkaW5nIHRoZSBzaXplIG9mIGVhY2ggc3RyZWFtLgogICAgICoKICAgICAqIElmIGFueSBvZiB0aGUgc3RyZWFtcyBkbyBub3QgcmV0dXJuIGEgdmFsaWQgbnVtYmVyLCB0aGVuIHRoZSBzaXplIG9mIHRoZQogICAgICogYXBwZW5kIHN0cmVhbSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBhbmQgbnVsbCBpcyByZXR1cm5lZC4KICAgICAqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCkKICAgIHsKICAgICAgICAkc2l6ZSA9IDA7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zdHJlYW1zIGFzICRzdHJlYW0pIHsKICAgICAgICAgICAgJHMgPSAkc3RyZWFtLT5nZXRTaXplKCk7CiAgICAgICAgICAgIGlmICgkcyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNpemUgKz0gJHM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNpemU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+c3RyZWFtcyB8fAogICAgICAgICAgICAoJHRoaXMtPmN1cnJlbnQgPj0gY291bnQoJHRoaXMtPnN0cmVhbXMpIC0gMSAmJgogICAgICAgICAgICAgJHRoaXMtPnN0cmVhbXNbJHRoaXMtPmN1cnJlbnRdLT5lb2YoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBdHRlbXB0cyB0byBzZWVrIHRvIHRoZSBnaXZlbiBwb3NpdGlvbi4gT25seSBzdXBwb3J0cyBTRUVLX1NFVC4KICAgICAqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5zZWVrYWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1RoaXMgQXBwZW5kU3RyZWFtIGlzIG5vdCBzZWVrYWJsZScpOwogICAgICAgIH0gZWxzZWlmICgkd2hlbmNlICE9PSBTRUVLX1NFVCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBBcHBlbmRTdHJlYW0gY2FuIG9ubHkgc2VlayB3aXRoIFNFRUtfU0VUJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cG9zID0gJHRoaXMtPmN1cnJlbnQgPSAwOwoKICAgICAgICAvLyBSZXdpbmQgZWFjaCBzdHJlYW0KICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3RyZWFtcyBhcyAkaSA9PiAkc3RyZWFtKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkc3RyZWFtLT5yZXdpbmQoKTsKICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gc2VlayBzdHJlYW0gJwogICAgICAgICAgICAgICAgICAgIC4gJGkgLiAnIG9mIHRoZSBBcHBlbmRTdHJlYW0nLCAwLCAkZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFNlZWsgdG8gdGhlIGFjdHVhbCBwb3NpdGlvbiBieSByZWFkaW5nIGZyb20gZWFjaCBzdHJlYW0KICAgICAgICB3aGlsZSAoJHRoaXMtPnBvcyA8ICRvZmZzZXQgJiYgISR0aGlzLT5lb2YoKSkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnJlYWQobWluKDgwOTYsICRvZmZzZXQgLSAkdGhpcy0+cG9zKSk7CiAgICAgICAgICAgIGlmICgkcmVzdWx0ID09PSAnJykgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWFkcyBmcm9tIGFsbCBvZiB0aGUgYXBwZW5kZWQgc3RyZWFtcyB1bnRpbCB0aGUgbGVuZ3RoIGlzIG1ldCBvciBFT0YuCiAgICAgKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKQogICAgewogICAgICAgICRidWZmZXIgPSAnJzsKICAgICAgICAkdG90YWwgPSBjb3VudCgkdGhpcy0+c3RyZWFtcykgLSAxOwogICAgICAgICRyZW1haW5pbmcgPSAkbGVuZ3RoOwogICAgICAgICRwcm9ncmVzc1RvTmV4dCA9IGZhbHNlOwoKICAgICAgICB3aGlsZSAoJHJlbWFpbmluZyA+IDApIHsKCiAgICAgICAgICAgIC8vIFByb2dyZXNzIHRvIHRoZSBuZXh0IHN0cmVhbSBpZiBuZWVkZWQuCiAgICAgICAgICAgIGlmICgkcHJvZ3Jlc3NUb05leHQgfHwgJHRoaXMtPnN0cmVhbXNbJHRoaXMtPmN1cnJlbnRdLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJHByb2dyZXNzVG9OZXh0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPmN1cnJlbnQgPT09ICR0b3RhbCkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnQrKzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5zdHJlYW1zWyR0aGlzLT5jdXJyZW50XS0+cmVhZCgkcmVtYWluaW5nKTsKCiAgICAgICAgICAgIC8vIFVzaW5nIGEgbG9vc2UgY29tcGFyaXNvbiBoZXJlIHRvIG1hdGNoIG9uICcnLCBmYWxzZSwgYW5kIG51bGwKICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHByb2dyZXNzVG9OZXh0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYnVmZmVyIC49ICRyZXN1bHQ7CiAgICAgICAgICAgICRyZW1haW5pbmcgPSAkbGVuZ3RoIC0gc3RybGVuKCRidWZmZXIpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnBvcyArPSBzdHJsZW4oJGJ1ZmZlcik7CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlYWRhYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlZWthYmxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkc3RyaW5nKQogICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHdyaXRlIHRvIGFuIEFwcGVuZFN0cmVhbScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRhZGF0YSgka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJGtleSA/IG51bGwgOiBbXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/BufferStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBhIGJ1ZmZlciBzdHJlYW0gdGhhdCBjYW4gYmUgd3JpdHRlbiB0byB0byBmaWxsIGEgYnVmZmVyLCBhbmQgcmVhZAogKiBmcm9tIHRvIHJlbW92ZSBieXRlcyBmcm9tIHRoZSBidWZmZXIuCiAqCiAqIFRoaXMgc3RyZWFtIHJldHVybnMgYSAiaHdtIiBtZXRhZGF0YSB2YWx1ZSB0aGF0IHRlbGxzIHVwc3RyZWFtIGNvbnN1bWVycwogKiB3aGF0IHRoZSBjb25maWd1cmVkIGhpZ2ggd2F0ZXIgbWFyayBvZiB0aGUgc3RyZWFtIGlzLCBvciB0aGUgbWF4aW11bQogKiBwcmVmZXJyZWQgc2l6ZSBvZiB0aGUgYnVmZmVyLgogKi8KY2xhc3MgQnVmZmVyU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJGh3bTsKICAgIHByaXZhdGUgJGJ1ZmZlciA9ICcnOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaHdtIEhpZ2ggd2F0ZXIgbWFyaywgcmVwcmVzZW50aW5nIHRoZSBwcmVmZXJyZWQgbWF4aW11bQogICAgICogICAgICAgICAgICAgICAgIGJ1ZmZlciBzaXplLiBJZiB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIGV4Y2VlZHMgdGhlIGhpZ2gKICAgICAqICAgICAgICAgICAgICAgICB3YXRlciBtYXJrLCB0aGVuIGNhbGxzIHRvIHdyaXRlIHdpbGwgY29udGludWUgdG8gc3VjY2VlZAogICAgICogICAgICAgICAgICAgICAgIGJ1dCB3aWxsIHJldHVybiBmYWxzZSB0byBpbmZvcm0gd3JpdGVycyB0byBzbG93IGRvd24KICAgICAqICAgICAgICAgICAgICAgICB1bnRpbCB0aGUgYnVmZmVyIGhhcyBiZWVuIGRyYWluZWQgYnkgcmVhZGluZyBmcm9tIGl0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGh3bSA9IDE2Mzg0KQogICAgewogICAgICAgICR0aGlzLT5od20gPSAkaHdtOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENvbnRlbnRzKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCkKICAgIHsKICAgICAgICAkYnVmZmVyID0gJHRoaXMtPmJ1ZmZlcjsKICAgICAgICAkdGhpcy0+YnVmZmVyID0gJyc7CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciA9ICcnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgICR0aGlzLT5jbG9zZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RybGVuKCR0aGlzLT5idWZmZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlYWRhYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV3aW5kKCkKICAgIHsKICAgICAgICAkdGhpcy0+c2VlaygwKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Vlaygkb2Zmc2V0LCAkd2hlbmNlID0gU0VFS19TRVQpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3Qgc2VlayBhIEJ1ZmZlclN0cmVhbScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKQogICAgewogICAgICAgIHJldHVybiBzdHJsZW4oJHRoaXMtPmJ1ZmZlcikgPT09IDA7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlbGwoKQogICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IGRldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYSBCdWZmZXJTdHJlYW0nKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlYWRzIGRhdGEgZnJvbSB0aGUgYnVmZmVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKQogICAgewogICAgICAgICRjdXJyZW50TGVuZ3RoID0gc3RybGVuKCR0aGlzLT5idWZmZXIpOwoKICAgICAgICBpZiAoJGxlbmd0aCA+PSAkY3VycmVudExlbmd0aCkgewogICAgICAgICAgICAvLyBObyBuZWVkIHRvIHNsaWNlIHRoZSBidWZmZXIgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGVub3VnaCBkYXRhLgogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmJ1ZmZlcjsKICAgICAgICAgICAgJHRoaXMtPmJ1ZmZlciA9ICcnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFNsaWNlIHVwIHRoZSByZXN1bHQgdG8gcHJvdmlkZSBhIHN1YnNldCBvZiB0aGUgYnVmZmVyLgogICAgICAgICAgICAkcmVzdWx0ID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsIDAsICRsZW5ndGgpOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyID0gc3Vic3RyKCR0aGlzLT5idWZmZXIsICRsZW5ndGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBXcml0ZXMgZGF0YSB0byB0aGUgYnVmZmVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+YnVmZmVyIC49ICRzdHJpbmc7CgogICAgICAgIC8vIFRPRE86IFdoYXQgc2hvdWxkIGhhcHBlbiBoZXJlPwogICAgICAgIGlmIChzdHJsZW4oJHRoaXMtPmJ1ZmZlcikgPj0gJHRoaXMtPmh3bSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RybGVuKCRzdHJpbmcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRhZGF0YSgka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGtleSA9PSAnaHdtJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmh3bTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAka2V5ID8gbnVsbCA6IFtdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/CachingStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgY2FuIGNhY2hlIHByZXZpb3VzbHkgcmVhZCBieXRlcyBmcm9tIGEgc2VxdWVudGlhbGx5CiAqIHJlYWQgc3RyZWFtLgogKi8KY2xhc3MgQ2FjaGluZ1N0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgLyoqIEB2YXIgU3RyZWFtSW50ZXJmYWNlIFN0cmVhbSBiZWluZyB3cmFwcGVkICovCiAgICBwcml2YXRlICRyZW1vdGVTdHJlYW07CgogICAgLyoqIEB2YXIgaW50IE51bWJlciBvZiBieXRlcyB0byBza2lwIHJlYWRpbmcgZHVlIHRvIGEgd3JpdGUgb24gdGhlIGJ1ZmZlciAqLwogICAgcHJpdmF0ZSAkc2tpcFJlYWRCeXRlcyA9IDA7CgogICAgLyoqCiAgICAgKiBXZSB3aWxsIHRyZWF0IHRoZSBidWZmZXIgb2JqZWN0IGFzIHRoZSBib2R5IG9mIHRoZSBzdHJlYW0KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gU3RyZWFtIHRvIGNhY2hlCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICR0YXJnZXQgT3B0aW9uYWxseSBzcGVjaWZ5IHdoZXJlIGRhdGEgaXMgY2FjaGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwKICAgICAgICBTdHJlYW1JbnRlcmZhY2UgJHRhcmdldCA9IG51bGwKICAgICkgewogICAgICAgICR0aGlzLT5yZW1vdGVTdHJlYW0gPSAkc3RyZWFtOwogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkdGFyZ2V0ID86IG5ldyBTdHJlYW0oZm9wZW4oJ3BocDovL3RlbXAnLCAncisnKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKQogICAgewogICAgICAgIHJldHVybiBtYXgoJHRoaXMtPnN0cmVhbS0+Z2V0U2l6ZSgpLCAkdGhpcy0+cmVtb3RlU3RyZWFtLT5nZXRTaXplKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQogICAgewogICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCkKICAgIHsKICAgICAgICBpZiAoJHdoZW5jZSA9PSBTRUVLX1NFVCkgewogICAgICAgICAgICAkYnl0ZSA9ICRvZmZzZXQ7CiAgICAgICAgfSBlbHNlaWYgKCR3aGVuY2UgPT0gU0VFS19DVVIpIHsKICAgICAgICAgICAgJGJ5dGUgPSAkb2Zmc2V0ICsgJHRoaXMtPnRlbGwoKTsKICAgICAgICB9IGVsc2VpZiAoJHdoZW5jZSA9PSBTRUVLX0VORCkgewogICAgICAgICAgICAkc2l6ZSA9ICR0aGlzLT5yZW1vdGVTdHJlYW0tPmdldFNpemUoKTsKICAgICAgICAgICAgaWYgKCRzaXplID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkc2l6ZSA9ICR0aGlzLT5jYWNoZUVudGlyZVN0cmVhbSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRieXRlID0gJHNpemUgKyAkb2Zmc2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHdoZW5jZScpOwogICAgICAgIH0KCiAgICAgICAgJGRpZmYgPSAkYnl0ZSAtICR0aGlzLT5zdHJlYW0tPmdldFNpemUoKTsKCiAgICAgICAgaWYgKCRkaWZmID4gMCkgewogICAgICAgICAgICAvLyBSZWFkIHRoZSByZW1vdGVTdHJlYW0gdW50aWwgd2UgaGF2ZSByZWFkIGluIGF0IGxlYXN0IHRoZSBhbW91bnQKICAgICAgICAgICAgLy8gb2YgYnl0ZXMgcmVxdWVzdGVkLCBvciB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBmaWxlLgogICAgICAgICAgICB3aGlsZSAoJGRpZmYgPiAwICYmICEkdGhpcy0+cmVtb3RlU3RyZWFtLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnJlYWQoJGRpZmYpOwogICAgICAgICAgICAgICAgJGRpZmYgPSAkYnl0ZSAtICR0aGlzLT5zdHJlYW0tPmdldFNpemUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IGRvIGEgbm9ybWFsIHNlZWsgc2luY2Ugd2UndmUgYWxyZWFkeSBzZWVuIHRoaXMgYnl0ZS4KICAgICAgICAgICAgJHRoaXMtPnN0cmVhbS0+c2VlaygkYnl0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpCiAgICB7CiAgICAgICAgLy8gUGVyZm9ybSBhIHJlZ3VsYXIgcmVhZCBvbiBhbnkgcHJldmlvdXNseSByZWFkIGRhdGEgZnJvbSB0aGUgYnVmZmVyCiAgICAgICAgJGRhdGEgPSAkdGhpcy0+c3RyZWFtLT5yZWFkKCRsZW5ndGgpOwogICAgICAgICRyZW1haW5pbmcgPSAkbGVuZ3RoIC0gc3RybGVuKCRkYXRhKTsKCiAgICAgICAgLy8gTW9yZSBkYXRhIHdhcyByZXF1ZXN0ZWQgc28gcmVhZCBmcm9tIHRoZSByZW1vdGUgc3RyZWFtCiAgICAgICAgaWYgKCRyZW1haW5pbmcpIHsKICAgICAgICAgICAgLy8gSWYgZGF0YSB3YXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyIGluIGEgcG9zaXRpb24gdGhhdCB3b3VsZCBoYXZlCiAgICAgICAgICAgIC8vIGJlZW4gZmlsbGVkIGZyb20gdGhlIHJlbW90ZSBzdHJlYW0sIHRoZW4gd2UgbXVzdCBza2lwIGJ5dGVzIG9uCiAgICAgICAgICAgIC8vIHRoZSByZW1vdGUgc3RyZWFtIHRvIGVtdWxhdGUgb3ZlcndyaXRpbmcgYnl0ZXMgZnJvbSB0aGF0CiAgICAgICAgICAgIC8vIHBvc2l0aW9uLiBUaGlzIG1pbWljcyB0aGUgYmVoYXZpb3Igb2Ygb3RoZXIgUEhQIHN0cmVhbSB3cmFwcGVycy4KICAgICAgICAgICAgJHJlbW90ZURhdGEgPSAkdGhpcy0+cmVtb3RlU3RyZWFtLT5yZWFkKAogICAgICAgICAgICAgICAgJHJlbWFpbmluZyArICR0aGlzLT5za2lwUmVhZEJ5dGVzCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJHRoaXMtPnNraXBSZWFkQnl0ZXMpIHsKICAgICAgICAgICAgICAgICRsZW4gPSBzdHJsZW4oJHJlbW90ZURhdGEpOwogICAgICAgICAgICAgICAgJHJlbW90ZURhdGEgPSBzdWJzdHIoJHJlbW90ZURhdGEsICR0aGlzLT5za2lwUmVhZEJ5dGVzKTsKICAgICAgICAgICAgICAgICR0aGlzLT5za2lwUmVhZEJ5dGVzID0gbWF4KDAsICR0aGlzLT5za2lwUmVhZEJ5dGVzIC0gJGxlbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRkYXRhIC49ICRyZW1vdGVEYXRhOwogICAgICAgICAgICAkdGhpcy0+c3RyZWFtLT53cml0ZSgkcmVtb3RlRGF0YSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpCiAgICB7CiAgICAgICAgLy8gV2hlbiBhcHBlbmRpbmcgdG8gdGhlIGVuZCBvZiB0aGUgY3VycmVudGx5IHJlYWQgc3RyZWFtLCB5b3UnbGwgd2FudAogICAgICAgIC8vIHRvIHNraXAgYnl0ZXMgZnJvbSBiZWluZyByZWFkIGZyb20gdGhlIHJlbW90ZSBzdHJlYW0gdG8gZW11bGF0ZQogICAgICAgIC8vIG90aGVyIHN0cmVhbSB3cmFwcGVycy4gQmFzaWNhbGx5IHJlcGxhY2luZyBieXRlcyBvZiBkYXRhIG9mIGEgZml4ZWQKICAgICAgICAvLyBsZW5ndGguCiAgICAgICAgJG92ZXJmbG93ID0gKHN0cmxlbigkc3RyaW5nKSArICR0aGlzLT50ZWxsKCkpIC0gJHRoaXMtPnJlbW90ZVN0cmVhbS0+dGVsbCgpOwogICAgICAgIGlmICgkb3ZlcmZsb3cgPiAwKSB7CiAgICAgICAgICAgICR0aGlzLT5za2lwUmVhZEJ5dGVzICs9ICRvdmVyZmxvdzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT53cml0ZSgkc3RyaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZW9mKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+ZW9mKCkgJiYgJHRoaXMtPnJlbW90ZVN0cmVhbS0+ZW9mKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDbG9zZSBib3RoIHRoZSByZW1vdGUgc3RyZWFtIGFuZCBidWZmZXIgc3RyZWFtCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW90ZVN0cmVhbS0+Y2xvc2UoKSAmJiAkdGhpcy0+c3RyZWFtLT5jbG9zZSgpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY2FjaGVFbnRpcmVTdHJlYW0oKQogICAgewogICAgICAgICR0YXJnZXQgPSBuZXcgRm5TdHJlYW0oWyd3cml0ZScgPT4gJ3N0cmxlbiddKTsKICAgICAgICBjb3B5X3RvX3N0cmVhbSgkdGhpcywgJHRhcmdldCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dGVsbCgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/DroppingStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgYmVnaW5zIGRyb3BwaW5nIGRhdGEgb25jZSB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZwogKiBzdHJlYW0gYmVjb21lcyB0b28gZnVsbC4KICovCmNsYXNzIERyb3BwaW5nU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICBwcml2YXRlICRtYXhMZW5ndGg7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gICAgVW5kZXJseWluZyBzdHJlYW0gdG8gZGVjb3JhdGUuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICRtYXhMZW5ndGggTWF4aW11bSBzaXplIGJlZm9yZSBkcm9wcGluZyBkYXRhLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sICRtYXhMZW5ndGgpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW07CiAgICAgICAgJHRoaXMtPm1heExlbmd0aCA9ICRtYXhMZW5ndGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpCiAgICB7CiAgICAgICAgJGRpZmYgPSAkdGhpcy0+bWF4TGVuZ3RoIC0gJHRoaXMtPnN0cmVhbS0+Z2V0U2l6ZSgpOwoKICAgICAgICAvLyBCZWdpbiByZXR1cm5pbmcgMCB3aGVuIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBpcyB0b28gbGFyZ2UuCiAgICAgICAgaWYgKCRkaWZmIDw9IDApIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICAvLyBXcml0ZSB0aGUgc3RyZWFtIG9yIGEgc3Vic2V0IG9mIHRoZSBzdHJlYW0gaWYgbmVlZGVkLgogICAgICAgIGlmIChzdHJsZW4oJHN0cmluZykgPCAkZGlmZikgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+d3JpdGUoJHN0cmluZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+d3JpdGUoc3Vic3RyKCRzdHJpbmcsIDAsICRkaWZmKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/FnStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBDb21wb3NlIHN0cmVhbSBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gYSBoYXNoIG9mIGZ1bmN0aW9ucy4KICoKICogQWxsb3dzIGZvciBlYXN5IHRlc3RpbmcgYW5kIGV4dGVuc2lvbiBvZiBhIHByb3ZpZGVkIHN0cmVhbSB3aXRob3V0IG5lZWRpbmcKICogdG8gY3JlYXRlIGEgY29uY3JldGUgY2xhc3MgZm9yIGEgc2ltcGxlIGV4dGVuc2lvbiBwb2ludC4KICovCmNsYXNzIEZuU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIC8qKiBAdmFyIGFycmF5ICovCiAgICBwcml2YXRlICRtZXRob2RzOwoKICAgIC8qKiBAdmFyIGFycmF5IE1ldGhvZHMgdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIGluIHRoZSBnaXZlbiBhcnJheSAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJHNsb3RzID0gWydfX3RvU3RyaW5nJywgJ2Nsb3NlJywgJ2RldGFjaCcsICdyZXdpbmQnLAogICAgICAgICdnZXRTaXplJywgJ3RlbGwnLCAnZW9mJywgJ2lzU2Vla2FibGUnLCAnc2VlaycsICdpc1dyaXRhYmxlJywgJ3dyaXRlJywKICAgICAgICAnaXNSZWFkYWJsZScsICdyZWFkJywgJ2dldENvbnRlbnRzJywgJ2dldE1ldGFkYXRhJ107CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG1ldGhvZHMgSGFzaCBvZiBtZXRob2QgbmFtZSB0byBhIGNhbGxhYmxlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJG1ldGhvZHMpCiAgICB7CiAgICAgICAgJHRoaXMtPm1ldGhvZHMgPSAkbWV0aG9kczsKCiAgICAgICAgLy8gQ3JlYXRlIHRoZSBmdW5jdGlvbnMgb24gdGhlIGNsYXNzCiAgICAgICAgZm9yZWFjaCAoJG1ldGhvZHMgYXMgJG5hbWUgPT4gJGZuKSB7CiAgICAgICAgICAgICR0aGlzLT57J19mbl8nIC4gJG5hbWV9ID0gJGZuOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExhemlseSBkZXRlcm1pbmUgd2hpY2ggbWV0aG9kcyBhcmUgbm90IGltcGxlbWVudGVkLgogICAgICogQHRocm93cyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJG5hbWUpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uKHN0cl9yZXBsYWNlKCdfZm5fJywgJycsICRuYW1lKQogICAgICAgICAgICAuICcoKSBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIEZuU3RyZWFtJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgY2xvc2UgbWV0aG9kIGlzIGNhbGxlZCBvbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gb25seSBpZiBwb3NzaWJsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+X2ZuX2Nsb3NlKSkgewogICAgICAgICAgICBjYWxsX3VzZXJfZnVuYygkdGhpcy0+X2ZuX2Nsb3NlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIGN1c3RvbSBmdW5jdGlvbmFsaXR5IHRvIGFuIHVuZGVybHlpbmcgc3RyZWFtIGJ5IGludGVyY2VwdGluZwogICAgICogc3BlY2lmaWMgbWV0aG9kIGNhbGxzLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSAgU3RyZWFtIHRvIGRlY29yYXRlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICRtZXRob2RzIEhhc2ggb2YgbWV0aG9kIG5hbWUgdG8gYSBjbG9zdXJlCiAgICAgKgogICAgICogQHJldHVybiBGblN0cmVhbQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29yYXRlKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCBhcnJheSAkbWV0aG9kcykKICAgIHsKICAgICAgICAvLyBJZiBhbnkgb2YgdGhlIHJlcXVpcmVkIG1ldGhvZHMgd2VyZSBub3QgcHJvdmlkZWQsIHRoZW4gc2ltcGx5CiAgICAgICAgLy8gcHJveHkgdG8gdGhlIGRlY29yYXRlZCBzdHJlYW0uCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfZGlmZihzZWxmOjokc2xvdHMsIGFycmF5X2tleXMoJG1ldGhvZHMpKSBhcyAkZGlmZikgewogICAgICAgICAgICAkbWV0aG9kc1skZGlmZl0gPSBbJHN0cmVhbSwgJGRpZmZdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRtZXRob2RzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5fZm5fX190b1N0cmluZyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNsb3NlKCkKICAgIHsKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoJHRoaXMtPl9mbl9jbG9zZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRldGFjaCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5fZm5fZGV0YWNoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5fZm5fZ2V0U2l6ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlbGwoKQogICAgewogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygkdGhpcy0+X2ZuX3RlbGwpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKQogICAgewogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygkdGhpcy0+X2ZuX2VvZik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKQogICAgewogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygkdGhpcy0+X2ZuX2lzU2Vla2FibGUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQogICAgewogICAgICAgIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5fZm5fcmV3aW5kKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Vlaygkb2Zmc2V0LCAkd2hlbmNlID0gU0VFS19TRVQpCiAgICB7CiAgICAgICAgY2FsbF91c2VyX2Z1bmMoJHRoaXMtPl9mbl9zZWVrLCAkb2Zmc2V0LCAkd2hlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5fZm5faXNXcml0YWJsZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpCiAgICB7CiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5fZm5fd3JpdGUsICRzdHJpbmcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlYWRhYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoJHRoaXMtPl9mbl9pc1JlYWRhYmxlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKQogICAgewogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygkdGhpcy0+X2ZuX3JlYWQsICRsZW5ndGgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5fZm5fZ2V0Q29udGVudHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRhZGF0YSgka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoJHRoaXMtPl9mbl9nZXRNZXRhZGF0YSwgJGtleSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gSFRUUCBtZXNzYWdlLgogKgogKiBAcGFyYW0gTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSBNZXNzYWdlIHRvIGNvbnZlcnQgdG8gYSBzdHJpbmcuCiAqCiAqIEByZXR1cm4gc3RyaW5nCiAqLwpmdW5jdGlvbiBzdHIoTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSkKewogICAgaWYgKCRtZXNzYWdlIGluc3RhbmNlb2YgUmVxdWVzdEludGVyZmFjZSkgewogICAgICAgICRtc2cgPSB0cmltKCRtZXNzYWdlLT5nZXRNZXRob2QoKSAuICcgJwogICAgICAgICAgICAgICAgLiAkbWVzc2FnZS0+Z2V0UmVxdWVzdFRhcmdldCgpKQogICAgICAgICAgICAuICcgSFRUUC8nIC4gJG1lc3NhZ2UtPmdldFByb3RvY29sVmVyc2lvbigpOwogICAgICAgIGlmICghJG1lc3NhZ2UtPmhhc0hlYWRlcignaG9zdCcpKSB7CiAgICAgICAgICAgICRtc2cgLj0gIlxyXG5Ib3N0OiAiIC4gJG1lc3NhZ2UtPmdldFVyaSgpLT5nZXRIb3N0KCk7CiAgICAgICAgfQogICAgfSBlbHNlaWYgKCRtZXNzYWdlIGluc3RhbmNlb2YgUmVzcG9uc2VJbnRlcmZhY2UpIHsKICAgICAgICAkbXNnID0gJ0hUVFAvJyAuICRtZXNzYWdlLT5nZXRQcm90b2NvbFZlcnNpb24oKSAuICcgJwogICAgICAgICAgICAuICRtZXNzYWdlLT5nZXRTdGF0dXNDb2RlKCkgLiAnICcKICAgICAgICAgICAgLiAkbWVzc2FnZS0+Z2V0UmVhc29uUGhyYXNlKCk7CiAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmtub3duIG1lc3NhZ2UgdHlwZScpOwogICAgfQoKICAgIGZvcmVhY2ggKCRtZXNzYWdlLT5nZXRIZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVlcykgewogICAgICAgICRtc2cgLj0gIlxyXG57JG5hbWV9OiAiIC4gaW1wbG9kZSgnLCAnLCAkdmFsdWVzKTsKICAgIH0KCiAgICByZXR1cm4gInskbXNnfVxyXG5cclxuIiAuICRtZXNzYWdlLT5nZXRCb2R5KCk7Cn0KCi8qKgogKiBSZXR1cm5zIGEgVXJpSW50ZXJmYWNlIGZvciB0aGUgZ2l2ZW4gdmFsdWUuCiAqCiAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhIHN0cmluZyBvciB7QHNlZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZX0gYW5kCiAqIHJldHVybnMgYSBVcmlJbnRlcmZhY2UgZm9yIHRoZSBnaXZlbiB2YWx1ZS4gSWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgYQogKiBgVXJpSW50ZXJmYWNlYCwgaXQgaXMgcmV0dXJuZWQgYXMtaXMuCiAqCiAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkKICoKICogQHJldHVybiBVcmlJbnRlcmZhY2UKICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAqLwpmdW5jdGlvbiB1cmlfZm9yKCR1cmkpCnsKICAgIGlmICgkdXJpIGluc3RhbmNlb2YgVXJpSW50ZXJmYWNlKSB7CiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9IGVsc2VpZiAoaXNfc3RyaW5nKCR1cmkpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBVcmkoJHVyaSk7CiAgICB9CgogICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VSSSBtdXN0IGJlIGEgc3RyaW5nIG9yIFVyaUludGVyZmFjZScpOwp9CgovKioKICogQ3JlYXRlIGEgbmV3IHN0cmVhbSBiYXNlZCBvbiB0aGUgaW5wdXQgdHlwZS4KICoKICogT3B0aW9ucyBpcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSB0aGF0IGNhbiBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKICogLSBtZXRhZGF0YTogQXJyYXkgb2YgY3VzdG9tIG1ldGFkYXRhLgogKiAtIHNpemU6IFNpemUgb2YgdGhlIHN0cmVhbS4KICoKICogQHBhcmFtIHJlc291cmNlfHN0cmluZ3xudWxsfGludHxmbG9hdHxib29sfFN0cmVhbUludGVyZmFjZXxjYWxsYWJsZSAkcmVzb3VyY2UgRW50aXR5IGJvZHkgZGF0YQogKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb25zICBBZGRpdGlvbmFsIG9wdGlvbnMKICoKICogQHJldHVybiBTdHJlYW0KICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSAkcmVzb3VyY2UgYXJnIGlzIG5vdCB2YWxpZC4KICovCmZ1bmN0aW9uIHN0cmVhbV9mb3IoJHJlc291cmNlID0gJycsIGFycmF5ICRvcHRpb25zID0gW10pCnsKICAgIGlmIChpc19zY2FsYXIoJHJlc291cmNlKSkgewogICAgICAgICRzdHJlYW0gPSBmb3BlbigncGhwOi8vdGVtcCcsICdyKycpOwogICAgICAgIGlmICgkcmVzb3VyY2UgIT09ICcnKSB7CiAgICAgICAgICAgIGZ3cml0ZSgkc3RyZWFtLCAkcmVzb3VyY2UpOwogICAgICAgICAgICBmc2Vlaygkc3RyZWFtLCAwKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0oJHN0cmVhbSwgJG9wdGlvbnMpOwogICAgfQoKICAgIHN3aXRjaCAoZ2V0dHlwZSgkcmVzb3VyY2UpKSB7CiAgICAgICAgY2FzZSAncmVzb3VyY2UnOgogICAgICAgICAgICByZXR1cm4gbmV3IFN0cmVhbSgkcmVzb3VyY2UsICRvcHRpb25zKTsKICAgICAgICBjYXNlICdvYmplY3QnOgogICAgICAgICAgICBpZiAoJHJlc291cmNlIGluc3RhbmNlb2YgU3RyZWFtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc291cmNlOwogICAgICAgICAgICB9IGVsc2VpZiAoJHJlc291cmNlIGluc3RhbmNlb2YgXEl0ZXJhdG9yKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFB1bXBTdHJlYW0oZnVuY3Rpb24gKCkgdXNlICgkcmVzb3VyY2UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoISRyZXNvdXJjZS0+dmFsaWQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzb3VyY2UtPmN1cnJlbnQoKTsKICAgICAgICAgICAgICAgICAgICAkcmVzb3VyY2UtPm5leHQoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgICAgIH0sICRvcHRpb25zKTsKICAgICAgICAgICAgfSBlbHNlaWYgKG1ldGhvZF9leGlzdHMoJHJlc291cmNlLCAnX190b1N0cmluZycpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3RyZWFtX2Zvcigoc3RyaW5nKSAkcmVzb3VyY2UsICRvcHRpb25zKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBicmVhazsKICAgICAgICBjYXNlICdOVUxMJzoKICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW0oZm9wZW4oJ3BocDovL3RlbXAnLCAncisnKSwgJG9wdGlvbnMpOwogICAgfQoKICAgIGlmIChpc19jYWxsYWJsZSgkcmVzb3VyY2UpKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQdW1wU3RyZWFtKCRyZXNvdXJjZSwgJG9wdGlvbnMpOwogICAgfQoKICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHJlc291cmNlIHR5cGU6ICcgLiBnZXR0eXBlKCRyZXNvdXJjZSkpOwp9CgovKioKICogUGFyc2UgYW4gYXJyYXkgb2YgaGVhZGVyIHZhbHVlcyBjb250YWluaW5nICI7IiBzZXBhcmF0ZWQgZGF0YSBpbnRvIGFuCiAqIGFycmF5IG9mIGFzc29jaWF0aXZlIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGhlYWRlciBrZXkgdmFsdWUgcGFpcgogKiBkYXRhIG9mIHRoZSBoZWFkZXIuIFdoZW4gYSBwYXJhbWV0ZXIgZG9lcyBub3QgY29udGFpbiBhIHZhbHVlLCBidXQganVzdAogKiBjb250YWlucyBhIGtleSwgdGhpcyBmdW5jdGlvbiB3aWxsIGluamVjdCBhIGtleSB3aXRoIGEgJycgc3RyaW5nIHZhbHVlLgogKgogKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRoZWFkZXIgSGVhZGVyIHRvIHBhcnNlIGludG8gY29tcG9uZW50cy4KICoKICogQHJldHVybiBhcnJheSBSZXR1cm5zIHRoZSBwYXJzZWQgaGVhZGVyIHZhbHVlcy4KICovCmZ1bmN0aW9uIHBhcnNlX2hlYWRlcigkaGVhZGVyKQp7CiAgICBzdGF0aWMgJHRyaW1tZWQgPSAiXCInICBcblx0XHIiOwogICAgJHBhcmFtcyA9ICRtYXRjaGVzID0gW107CgogICAgZm9yZWFjaCAobm9ybWFsaXplX2hlYWRlcigkaGVhZGVyKSBhcyAkdmFsKSB7CiAgICAgICAgJHBhcnQgPSBbXTsKICAgICAgICBmb3JlYWNoIChwcmVnX3NwbGl0KCcvOyg/PShbXiJdKiJbXiJdKiIpKlteIl0qJCkvJywgJHZhbCkgYXMgJGt2cCkgewogICAgICAgICAgICBpZiAocHJlZ19tYXRjaF9hbGwoJy88W14+XSs+fFtePV0rLycsICRrdnAsICRtYXRjaGVzKSkgewogICAgICAgICAgICAgICAgJG0gPSAkbWF0Y2hlc1swXTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbVsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcGFydFt0cmltKCRtWzBdLCAkdHJpbW1lZCldID0gdHJpbSgkbVsxXSwgJHRyaW1tZWQpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkcGFydFtdID0gdHJpbSgkbVswXSwgJHRyaW1tZWQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgkcGFydCkgewogICAgICAgICAgICAkcGFyYW1zW10gPSAkcGFydDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRwYXJhbXM7Cn0KCi8qKgogKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBoZWFkZXIgdmFsdWVzIHRoYXQgbWF5IGNvbnRhaW4gY29tbWEgc2VwYXJhdGVkCiAqIGhlYWRlcnMgaW50byBhbiBhcnJheSBvZiBoZWFkZXJzIHdpdGggbm8gY29tbWEgc2VwYXJhdGVkIHZhbHVlcy4KICoKICogQHBhcmFtIHN0cmluZ3xhcnJheSAkaGVhZGVyIEhlYWRlciB0byBub3JtYWxpemUuCiAqCiAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyB0aGUgbm9ybWFsaXplZCBoZWFkZXIgZmllbGQgdmFsdWVzLgogKi8KZnVuY3Rpb24gbm9ybWFsaXplX2hlYWRlcigkaGVhZGVyKQp7CiAgICBpZiAoIWlzX2FycmF5KCRoZWFkZXIpKSB7CiAgICAgICAgcmV0dXJuIGFycmF5X21hcCgndHJpbScsIGV4cGxvZGUoJywnLCAkaGVhZGVyKSk7CiAgICB9CgogICAgJHJlc3VsdCA9IFtdOwogICAgZm9yZWFjaCAoJGhlYWRlciBhcyAkdmFsdWUpIHsKICAgICAgICBmb3JlYWNoICgoYXJyYXkpICR2YWx1ZSBhcyAkdikgewogICAgICAgICAgICBpZiAoc3RycG9zKCR2LCAnLCcpID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJHY7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3JlYWNoIChwcmVnX3NwbGl0KCcvLCg/PShbXiJdKiJbXiJdKiIpKlteIl0qJCkvJywgJHYpIGFzICR2dikgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gdHJpbSgkdnYpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CgovKioKICogQ2xvbmUgYW5kIG1vZGlmeSBhIHJlcXVlc3Qgd2l0aCB0aGUgZ2l2ZW4gY2hhbmdlcy4KICoKICogVGhlIGNoYW5nZXMgY2FuIGJlIG9uZSBvZjoKICogLSBtZXRob2Q6IChzdHJpbmcpIENoYW5nZXMgdGhlIEhUVFAgbWV0aG9kLgogKiAtIHNldF9oZWFkZXJzOiAoYXJyYXkpIFNldHMgdGhlIGdpdmVuIGhlYWRlcnMuCiAqIC0gcmVtb3ZlX2hlYWRlcnM6IChhcnJheSkgUmVtb3ZlIHRoZSBnaXZlbiBoZWFkZXJzLgogKiAtIGJvZHk6IChtaXhlZCkgU2V0cyB0aGUgZ2l2ZW4gYm9keS4KICogLSB1cmk6IChVcmlJbnRlcmZhY2UpIFNldCB0aGUgVVJJLgogKiAtIHF1ZXJ5OiAoc3RyaW5nKSBTZXQgdGhlIHF1ZXJ5IHN0cmluZyB2YWx1ZSBvZiB0aGUgVVJJLgogKiAtIHZlcnNpb246IChzdHJpbmcpIFNldCB0aGUgcHJvdG9jb2wgdmVyc2lvbi4KICoKICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdCB0byBjbG9uZSBhbmQgbW9kaWZ5LgogKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkY2hhbmdlcyBDaGFuZ2VzIHRvIGFwcGx5LgogKgogKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UKICovCmZ1bmN0aW9uIG1vZGlmeV9yZXF1ZXN0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRjaGFuZ2VzKQp7CiAgICBpZiAoISRjaGFuZ2VzKSB7CiAgICAgICAgcmV0dXJuICRyZXF1ZXN0OwogICAgfQoKICAgICRoZWFkZXJzID0gJHJlcXVlc3QtPmdldEhlYWRlcnMoKTsKCiAgICBpZiAoIWlzc2V0KCRjaGFuZ2VzWyd1cmknXSkpIHsKICAgICAgICAkdXJpID0gJHJlcXVlc3QtPmdldFVyaSgpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBSZW1vdmUgdGhlIGhvc3QgaGVhZGVyIGlmIG9uZSBpcyBvbiB0aGUgVVJJCiAgICAgICAgaWYgKCRob3N0ID0gJGNoYW5nZXNbJ3VyaSddLT5nZXRIb3N0KCkpIHsKICAgICAgICAgICAgJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ11bJ0hvc3QnXSA9ICRob3N0OwoKICAgICAgICAgICAgaWYgKCRwb3J0ID0gJGNoYW5nZXNbJ3VyaSddLT5nZXRQb3J0KCkpIHsKICAgICAgICAgICAgICAgICRzdGFuZGFyZFBvcnRzID0gWydodHRwJyA9PiA4MCwgJ2h0dHBzJyA9PiA0NDNdOwogICAgICAgICAgICAgICAgJHNjaGVtZSA9ICRjaGFuZ2VzWyd1cmknXS0+Z2V0U2NoZW1lKCk7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHN0YW5kYXJkUG9ydHNbJHNjaGVtZV0pICYmICRwb3J0ICE9ICRzdGFuZGFyZFBvcnRzWyRzY2hlbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ11bJ0hvc3QnXSAuPSAnOicuJHBvcnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHVyaSA9ICRjaGFuZ2VzWyd1cmknXTsKICAgIH0KCiAgICBpZiAoIWVtcHR5KCRjaGFuZ2VzWydyZW1vdmVfaGVhZGVycyddKSkgewogICAgICAgICRoZWFkZXJzID0gX2Nhc2VsZXNzX3JlbW92ZSgkY2hhbmdlc1sncmVtb3ZlX2hlYWRlcnMnXSwgJGhlYWRlcnMpOwogICAgfQoKICAgIGlmICghZW1wdHkoJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ10pKSB7CiAgICAgICAgJGhlYWRlcnMgPSBfY2FzZWxlc3NfcmVtb3ZlKGFycmF5X2tleXMoJGNoYW5nZXNbJ3NldF9oZWFkZXJzJ10pLCAkaGVhZGVycyk7CiAgICAgICAgJGhlYWRlcnMgPSAkY2hhbmdlc1snc2V0X2hlYWRlcnMnXSArICRoZWFkZXJzOwogICAgfQoKICAgIGlmIChpc3NldCgkY2hhbmdlc1sncXVlcnknXSkpIHsKICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFF1ZXJ5KCRjaGFuZ2VzWydxdWVyeSddKTsKICAgIH0KCiAgICBpZiAoJHJlcXVlc3QgaW5zdGFuY2VvZiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlKSB7CiAgICAgICAgcmV0dXJuIG5ldyBTZXJ2ZXJSZXF1ZXN0KAogICAgICAgICAgICBpc3NldCgkY2hhbmdlc1snbWV0aG9kJ10pID8gJGNoYW5nZXNbJ21ldGhvZCddIDogJHJlcXVlc3QtPmdldE1ldGhvZCgpLAogICAgICAgICAgICAkdXJpLAogICAgICAgICAgICAkaGVhZGVycywKICAgICAgICAgICAgaXNzZXQoJGNoYW5nZXNbJ2JvZHknXSkgPyAkY2hhbmdlc1snYm9keSddIDogJHJlcXVlc3QtPmdldEJvZHkoKSwKICAgICAgICAgICAgaXNzZXQoJGNoYW5nZXNbJ3ZlcnNpb24nXSkKICAgICAgICAgICAgICAgID8gJGNoYW5nZXNbJ3ZlcnNpb24nXQogICAgICAgICAgICAgICAgOiAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCksCiAgICAgICAgICAgICRyZXF1ZXN0LT5nZXRTZXJ2ZXJQYXJhbXMoKQogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIG5ldyBSZXF1ZXN0KAogICAgICAgIGlzc2V0KCRjaGFuZ2VzWydtZXRob2QnXSkgPyAkY2hhbmdlc1snbWV0aG9kJ10gOiAkcmVxdWVzdC0+Z2V0TWV0aG9kKCksCiAgICAgICAgJHVyaSwKICAgICAgICAkaGVhZGVycywKICAgICAgICBpc3NldCgkY2hhbmdlc1snYm9keSddKSA/ICRjaGFuZ2VzWydib2R5J10gOiAkcmVxdWVzdC0+Z2V0Qm9keSgpLAogICAgICAgIGlzc2V0KCRjaGFuZ2VzWyd2ZXJzaW9uJ10pCiAgICAgICAgICAgID8gJGNoYW5nZXNbJ3ZlcnNpb24nXQogICAgICAgICAgICA6ICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKQogICAgKTsKfQoKLyoqCiAqIEF0dGVtcHRzIHRvIHJld2luZCBhIG1lc3NhZ2UgYm9keSBhbmQgdGhyb3dzIGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLgogKgogKiBUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSB3aWxsIG9ubHkgYmUgcmV3b3VuZCBpZiBhIGNhbGwgdG8gYHRlbGwoKWAgcmV0dXJucyBhCiAqIHZhbHVlIG90aGVyIHRoYW4gYDBgLgogKgogKiBAcGFyYW0gTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSBNZXNzYWdlIHRvIHJld2luZAogKgogKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uCiAqLwpmdW5jdGlvbiByZXdpbmRfYm9keShNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlKQp7CiAgICAkYm9keSA9ICRtZXNzYWdlLT5nZXRCb2R5KCk7CgogICAgaWYgKCRib2R5LT50ZWxsKCkpIHsKICAgICAgICAkYm9keS0+cmV3aW5kKCk7CiAgICB9Cn0KCi8qKgogKiBTYWZlbHkgb3BlbnMgYSBQSFAgc3RyZWFtIHJlc291cmNlIHVzaW5nIGEgZmlsZW5hbWUuCiAqCiAqIFdoZW4gZm9wZW4gZmFpbHMsIFBIUCBub3JtYWxseSByYWlzZXMgYSB3YXJuaW5nLiBUaGlzIGZ1bmN0aW9uIGFkZHMgYW4KICogZXJyb3IgaGFuZGxlciB0aGF0IGNoZWNrcyBmb3IgZXJyb3JzIGFuZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluc3RlYWQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIEZpbGUgdG8gb3BlbgogKiBAcGFyYW0gc3RyaW5nICRtb2RlICAgICBNb2RlIHVzZWQgdG8gb3BlbiB0aGUgZmlsZQogKgogKiBAcmV0dXJuIHJlc291cmNlCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIG9wZW5lZAogKi8KZnVuY3Rpb24gdHJ5X2ZvcGVuKCRmaWxlbmFtZSwgJG1vZGUpCnsKICAgICRleCA9IG51bGw7CiAgICBzZXRfZXJyb3JfaGFuZGxlcihmdW5jdGlvbiAoKSB1c2UgKCRmaWxlbmFtZSwgJG1vZGUsICYkZXgpIHsKICAgICAgICAkZXggPSBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgJ1VuYWJsZSB0byBvcGVuICVzIHVzaW5nIG1vZGUgJXM6ICVzJywKICAgICAgICAgICAgJGZpbGVuYW1lLAogICAgICAgICAgICAkbW9kZSwKICAgICAgICAgICAgZnVuY19nZXRfYXJncygpWzFdCiAgICAgICAgKSk7CiAgICB9KTsKCiAgICAkaGFuZGxlID0gZm9wZW4oJGZpbGVuYW1lLCAkbW9kZSk7CiAgICByZXN0b3JlX2Vycm9yX2hhbmRsZXIoKTsKCiAgICBpZiAoJGV4KSB7CiAgICAgICAgLyoqIEB2YXIgJGV4IFxSdW50aW1lRXhjZXB0aW9uICovCiAgICAgICAgdGhyb3cgJGV4OwogICAgfQoKICAgIHJldHVybiAkaGFuZGxlOwp9CgovKioKICogQ29weSB0aGUgY29udGVudHMgb2YgYSBzdHJlYW0gaW50byBhIHN0cmluZyB1bnRpbCB0aGUgZ2l2ZW4gbnVtYmVyIG9mCiAqIGJ5dGVzIGhhdmUgYmVlbiByZWFkLgogKgogKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gU3RyZWFtIHRvIHJlYWQKICogQHBhcmFtIGludCAgICAgICAgICAgICAkbWF4TGVuIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQuIFBhc3MgLTEKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHJlYWQgdGhlIGVudGlyZSBzdHJlYW0uCiAqIEByZXR1cm4gc3RyaW5nCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IuCiAqLwpmdW5jdGlvbiBjb3B5X3RvX3N0cmluZyhTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgJG1heExlbiA9IC0xKQp7CiAgICAkYnVmZmVyID0gJyc7CgogICAgaWYgKCRtYXhMZW4gPT09IC0xKSB7CiAgICAgICAgd2hpbGUgKCEkc3RyZWFtLT5lb2YoKSkgewogICAgICAgICAgICAkYnVmID0gJHN0cmVhbS0+cmVhZCgxMDQ4NTc2KTsKICAgICAgICAgICAgLy8gVXNpbmcgYSBsb29zZSBlcXVhbGl0eSBoZXJlIHRvIG1hdGNoIG9uICcnIGFuZCBmYWxzZS4KICAgICAgICAgICAgaWYgKCRidWYgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGJ1ZmZlciAuPSAkYnVmOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KCiAgICAkbGVuID0gMDsKICAgIHdoaWxlICghJHN0cmVhbS0+ZW9mKCkgJiYgJGxlbiA8ICRtYXhMZW4pIHsKICAgICAgICAkYnVmID0gJHN0cmVhbS0+cmVhZCgkbWF4TGVuIC0gJGxlbik7CiAgICAgICAgLy8gVXNpbmcgYSBsb29zZSBlcXVhbGl0eSBoZXJlIHRvIG1hdGNoIG9uICcnIGFuZCBmYWxzZS4KICAgICAgICBpZiAoJGJ1ZiA9PSBudWxsKSB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICAkYnVmZmVyIC49ICRidWY7CiAgICAgICAgJGxlbiA9IHN0cmxlbigkYnVmZmVyKTsKICAgIH0KCiAgICByZXR1cm4gJGJ1ZmZlcjsKfQoKLyoqCiAqIENvcHkgdGhlIGNvbnRlbnRzIG9mIGEgc3RyZWFtIGludG8gYW5vdGhlciBzdHJlYW0gdW50aWwgdGhlIGdpdmVuIG51bWJlcgogKiBvZiBieXRlcyBoYXZlIGJlZW4gcmVhZC4KICoKICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc291cmNlIFN0cmVhbSB0byByZWFkIGZyb20KICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkZGVzdCAgIFN0cmVhbSB0byB3cml0ZSB0bwogKiBAcGFyYW0gaW50ICAgICAgICAgICAgICRtYXhMZW4gTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZC4gUGFzcyAtMQogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gcmVhZCB0aGUgZW50aXJlIHN0cmVhbS4KICoKICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBvbiBlcnJvci4KICovCmZ1bmN0aW9uIGNvcHlfdG9fc3RyZWFtKAogICAgU3RyZWFtSW50ZXJmYWNlICRzb3VyY2UsCiAgICBTdHJlYW1JbnRlcmZhY2UgJGRlc3QsCiAgICAkbWF4TGVuID0gLTEKKSB7CiAgICAkYnVmZmVyU2l6ZSA9IDgxOTI7CgogICAgaWYgKCRtYXhMZW4gPT09IC0xKSB7CiAgICAgICAgd2hpbGUgKCEkc291cmNlLT5lb2YoKSkgewogICAgICAgICAgICBpZiAoISRkZXN0LT53cml0ZSgkc291cmNlLT5yZWFkKCRidWZmZXJTaXplKSkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkcmVtYWluaW5nID0gJG1heExlbjsKICAgICAgICB3aGlsZSAoJHJlbWFpbmluZyA+IDAgJiYgISRzb3VyY2UtPmVvZigpKSB7CiAgICAgICAgICAgICRidWYgPSAkc291cmNlLT5yZWFkKG1pbigkYnVmZmVyU2l6ZSwgJHJlbWFpbmluZykpOwogICAgICAgICAgICAkbGVuID0gc3RybGVuKCRidWYpOwogICAgICAgICAgICBpZiAoISRsZW4pIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZW1haW5pbmcgLT0gJGxlbjsKICAgICAgICAgICAgJGRlc3QtPndyaXRlKCRidWYpOwogICAgICAgIH0KICAgIH0KfQoKLyoqCiAqIENhbGN1bGF0ZSBhIGhhc2ggb2YgYSBTdHJlYW0KICoKICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtICAgIFN0cmVhbSB0byBjYWxjdWxhdGUgdGhlIGhhc2ggZm9yCiAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgJGFsZ28gICAgICBIYXNoIGFsZ29yaXRobSAoZS5nLiBtZDUsIGNyYzMyLCBldGMpCiAqIEBwYXJhbSBib29sICAgICAgICAgICAgJHJhd091dHB1dCBXaGV0aGVyIG9yIG5vdCB0byB1c2UgcmF3IG91dHB1dAogKgogKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBoYXNoIG9mIHRoZSBzdHJlYW0KICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBvbiBlcnJvci4KICovCmZ1bmN0aW9uIGhhc2goCiAgICBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwKICAgICRhbGdvLAogICAgJHJhd091dHB1dCA9IGZhbHNlCikgewogICAgJHBvcyA9ICRzdHJlYW0tPnRlbGwoKTsKCiAgICBpZiAoJHBvcyA+IDApIHsKICAgICAgICAkc3RyZWFtLT5yZXdpbmQoKTsKICAgIH0KCiAgICAkY3R4ID0gaGFzaF9pbml0KCRhbGdvKTsKICAgIHdoaWxlICghJHN0cmVhbS0+ZW9mKCkpIHsKICAgICAgICBoYXNoX3VwZGF0ZSgkY3R4LCAkc3RyZWFtLT5yZWFkKDEwNDg1NzYpKTsKICAgIH0KCiAgICAkb3V0ID0gaGFzaF9maW5hbCgkY3R4LCAoYm9vbCkgJHJhd091dHB1dCk7CiAgICAkc3RyZWFtLT5zZWVrKCRwb3MpOwoKICAgIHJldHVybiAkb3V0Owp9CgovKioKICogUmVhZCBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtIHVwIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgYnVmZmVyIGxlbmd0aAogKgogKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gICAgU3RyZWFtIHRvIHJlYWQgZnJvbQogKiBAcGFyYW0gaW50ICAgICAgICAgICAgICRtYXhMZW5ndGggTWF4aW11bSBidWZmZXIgbGVuZ3RoCiAqCiAqIEByZXR1cm4gc3RyaW5nfGJvb2wKICovCmZ1bmN0aW9uIHJlYWRsaW5lKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCAkbWF4TGVuZ3RoID0gbnVsbCkKewogICAgJGJ1ZmZlciA9ICcnOwogICAgJHNpemUgPSAwOwoKICAgIHdoaWxlICghJHN0cmVhbS0+ZW9mKCkpIHsKICAgICAgICAvLyBVc2luZyBhIGxvb3NlIGVxdWFsaXR5IGhlcmUgdG8gbWF0Y2ggb24gJycgYW5kIGZhbHNlLgogICAgICAgIGlmIChudWxsID09ICgkYnl0ZSA9ICRzdHJlYW0tPnJlYWQoMSkpKSB7CiAgICAgICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgICAgIH0KICAgICAgICAkYnVmZmVyIC49ICRieXRlOwogICAgICAgIC8vIEJyZWFrIHdoZW4gYSBuZXcgbGluZSBpcyBmb3VuZCBvciB0aGUgbWF4IGxlbmd0aCAtIDEgaXMgcmVhY2hlZAogICAgICAgIGlmICgkYnl0ZSA9PT0gIlxuIiB8fCArKyRzaXplID09PSAkbWF4TGVuZ3RoIC0gMSkgewogICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRidWZmZXI7Cn0KCi8qKgogKiBQYXJzZXMgYSByZXF1ZXN0IG1lc3NhZ2Ugc3RyaW5nIGludG8gYSByZXF1ZXN0IG9iamVjdC4KICoKICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2Ugc3RyaW5nLgogKgogKiBAcmV0dXJuIFJlcXVlc3QKICovCmZ1bmN0aW9uIHBhcnNlX3JlcXVlc3QoJG1lc3NhZ2UpCnsKICAgICRkYXRhID0gX3BhcnNlX21lc3NhZ2UoJG1lc3NhZ2UpOwogICAgJG1hdGNoZXMgPSBbXTsKICAgIGlmICghcHJlZ19tYXRjaCgnL15bXFNdK1xzKyhbYS16QS1aXSs6XC9cL3xcLykuKi8nLCAkZGF0YVsnc3RhcnQtbGluZSddLCAkbWF0Y2hlcykpIHsKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByZXF1ZXN0IHN0cmluZycpOwogICAgfQogICAgJHBhcnRzID0gZXhwbG9kZSgnICcsICRkYXRhWydzdGFydC1saW5lJ10sIDMpOwogICAgJHZlcnNpb24gPSBpc3NldCgkcGFydHNbMl0pID8gZXhwbG9kZSgnLycsICRwYXJ0c1syXSlbMV0gOiAnMS4xJzsKCiAgICAkcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KAogICAgICAgICRwYXJ0c1swXSwKICAgICAgICAkbWF0Y2hlc1sxXSA9PT0gJy8nID8gX3BhcnNlX3JlcXVlc3RfdXJpKCRwYXJ0c1sxXSwgJGRhdGFbJ2hlYWRlcnMnXSkgOiAkcGFydHNbMV0sCiAgICAgICAgJGRhdGFbJ2hlYWRlcnMnXSwKICAgICAgICAkZGF0YVsnYm9keSddLAogICAgICAgICR2ZXJzaW9uCiAgICApOwoKICAgIHJldHVybiAkbWF0Y2hlc1sxXSA9PT0gJy8nID8gJHJlcXVlc3QgOiAkcmVxdWVzdC0+d2l0aFJlcXVlc3RUYXJnZXQoJHBhcnRzWzFdKTsKfQoKLyoqCiAqIFBhcnNlcyBhIHJlc3BvbnNlIG1lc3NhZ2Ugc3RyaW5nIGludG8gYSByZXNwb25zZSBvYmplY3QuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgUmVzcG9uc2UgbWVzc2FnZSBzdHJpbmcuCiAqCiAqIEByZXR1cm4gUmVzcG9uc2UKICovCmZ1bmN0aW9uIHBhcnNlX3Jlc3BvbnNlKCRtZXNzYWdlKQp7CiAgICAkZGF0YSA9IF9wYXJzZV9tZXNzYWdlKCRtZXNzYWdlKTsKICAgIC8vIEFjY29yZGluZyB0byBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMS4yIHRoZSBzcGFjZQogICAgLy8gYmV0d2VlbiBzdGF0dXMtY29kZSBhbmQgcmVhc29uLXBocmFzZSBpcyByZXF1aXJlZC4gQnV0IGJyb3dzZXJzIGFjY2VwdAogICAgLy8gcmVzcG9uc2VzIHdpdGhvdXQgc3BhY2UgYW5kIHJlYXNvbiBhcyB3ZWxsLgogICAgaWYgKCFwcmVnX21hdGNoKCcvXkhUVFBcLy4qIFswLTldezN9KCAuKnwkKS8nLCAkZGF0YVsnc3RhcnQtbGluZSddKSkgewogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHJlc3BvbnNlIHN0cmluZycpOwogICAgfQogICAgJHBhcnRzID0gZXhwbG9kZSgnICcsICRkYXRhWydzdGFydC1saW5lJ10sIDMpOwoKICAgIHJldHVybiBuZXcgUmVzcG9uc2UoCiAgICAgICAgJHBhcnRzWzFdLAogICAgICAgICRkYXRhWydoZWFkZXJzJ10sCiAgICAgICAgJGRhdGFbJ2JvZHknXSwKICAgICAgICBleHBsb2RlKCcvJywgJHBhcnRzWzBdKVsxXSwKICAgICAgICBpc3NldCgkcGFydHNbMl0pID8gJHBhcnRzWzJdIDogbnVsbAogICAgKTsKfQoKLyoqCiAqIFBhcnNlIGEgcXVlcnkgc3RyaW5nIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkuCiAqCiAqIElmIG11bHRpcGxlIHZhbHVlcyBhcmUgZm91bmQgZm9yIHRoZSBzYW1lIGtleSwgdGhlIHZhbHVlIG9mIHRoYXQga2V5CiAqIHZhbHVlIHBhaXIgd2lsbCBiZWNvbWUgYW4gYXJyYXkuIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcGFyc2UgbmVzdGVkCiAqIFBIUCBzdHlsZSBhcnJheXMgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheSAoZS5nLiwgZm9vW2FdPTEmZm9vW2JdPTIgd2lsbAogKiBiZSBwYXJzZWQgaW50byBbJ2Zvb1thXScgPT4gJzEnLCAnZm9vW2JdJyA9PiAnMiddKS4KICoKICogQHBhcmFtIHN0cmluZyAgICAgICRzdHIgICAgICAgICBRdWVyeSBzdHJpbmcgdG8gcGFyc2UKICogQHBhcmFtIGJvb2x8c3RyaW5nICR1cmxFbmNvZGluZyBIb3cgdGhlIHF1ZXJ5IHN0cmluZyBpcyBlbmNvZGVkCiAqCiAqIEByZXR1cm4gYXJyYXkKICovCmZ1bmN0aW9uIHBhcnNlX3F1ZXJ5KCRzdHIsICR1cmxFbmNvZGluZyA9IHRydWUpCnsKICAgICRyZXN1bHQgPSBbXTsKCiAgICBpZiAoJHN0ciA9PT0gJycpIHsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBpZiAoJHVybEVuY29kaW5nID09PSB0cnVlKSB7CiAgICAgICAgJGRlY29kZXIgPSBmdW5jdGlvbiAoJHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiByYXd1cmxkZWNvZGUoc3RyX3JlcGxhY2UoJysnLCAnICcsICR2YWx1ZSkpOwogICAgICAgIH07CiAgICB9IGVsc2VpZiAoJHVybEVuY29kaW5nID09IFBIUF9RVUVSWV9SRkMzOTg2KSB7CiAgICAgICAgJGRlY29kZXIgPSAncmF3dXJsZGVjb2RlJzsKICAgIH0gZWxzZWlmICgkdXJsRW5jb2RpbmcgPT0gUEhQX1FVRVJZX1JGQzE3MzgpIHsKICAgICAgICAkZGVjb2RlciA9ICd1cmxkZWNvZGUnOwogICAgfSBlbHNlIHsKICAgICAgICAkZGVjb2RlciA9IGZ1bmN0aW9uICgkc3RyKSB7IHJldHVybiAkc3RyOyB9OwogICAgfQoKICAgIGZvcmVhY2ggKGV4cGxvZGUoJyYnLCAkc3RyKSBhcyAka3ZwKSB7CiAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnPScsICRrdnAsIDIpOwogICAgICAgICRrZXkgPSAkZGVjb2RlcigkcGFydHNbMF0pOwogICAgICAgICR2YWx1ZSA9IGlzc2V0KCRwYXJ0c1sxXSkgPyAkZGVjb2RlcigkcGFydHNbMV0pIDogbnVsbDsKICAgICAgICBpZiAoIWlzc2V0KCRyZXN1bHRbJGtleV0pKSB7CiAgICAgICAgICAgICRyZXN1bHRbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkcmVzdWx0WyRrZXldKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFska2V5XSA9IFskcmVzdWx0WyRrZXldXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcmVzdWx0WyRrZXldW10gPSAkdmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CgovKioKICogQnVpbGQgYSBxdWVyeSBzdHJpbmcgZnJvbSBhbiBhcnJheSBvZiBrZXkgdmFsdWUgcGFpcnMuCiAqCiAqIFRoaXMgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIHBhcnNlX3F1ZXJ5KCkgdG8gYnVpbGQgYSBxdWVyeQogKiBzdHJpbmcuIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgbW9kaWZ5IHRoZSBwcm92aWRlZCBrZXlzIHdoZW4gYW4gYXJyYXkgaXMKICogZW5jb3VudGVyZWQgKGxpa2UgaHR0cF9idWlsZF9xdWVyeSB3b3VsZCkuCiAqCiAqIEBwYXJhbSBhcnJheSAgICAgJHBhcmFtcyAgIFF1ZXJ5IHN0cmluZyBwYXJhbWV0ZXJzLgogKiBAcGFyYW0gaW50fGZhbHNlICRlbmNvZGluZyBTZXQgdG8gZmFsc2UgdG8gbm90IGVuY29kZSwgUEhQX1FVRVJZX1JGQzM5ODYKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZW5jb2RlIHVzaW5nIFJGQzM5ODYsIG9yIFBIUF9RVUVSWV9SRkMxNzM4CiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGVuY29kZSB1c2luZyBSRkMxNzM4LgogKiBAcmV0dXJuIHN0cmluZwogKi8KZnVuY3Rpb24gYnVpbGRfcXVlcnkoYXJyYXkgJHBhcmFtcywgJGVuY29kaW5nID0gUEhQX1FVRVJZX1JGQzM5ODYpCnsKICAgIGlmICghJHBhcmFtcykgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KCiAgICBpZiAoJGVuY29kaW5nID09PSBmYWxzZSkgewogICAgICAgICRlbmNvZGVyID0gZnVuY3Rpb24gKCRzdHIpIHsgcmV0dXJuICRzdHI7IH07CiAgICB9IGVsc2VpZiAoJGVuY29kaW5nID09PSBQSFBfUVVFUllfUkZDMzk4NikgewogICAgICAgICRlbmNvZGVyID0gJ3Jhd3VybGVuY29kZSc7CiAgICB9IGVsc2VpZiAoJGVuY29kaW5nID09PSBQSFBfUVVFUllfUkZDMTczOCkgewogICAgICAgICRlbmNvZGVyID0gJ3VybGVuY29kZSc7CiAgICB9IGVsc2UgewogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHR5cGUnKTsKICAgIH0KCiAgICAkcXMgPSAnJzsKICAgIGZvcmVhY2ggKCRwYXJhbXMgYXMgJGsgPT4gJHYpIHsKICAgICAgICAkayA9ICRlbmNvZGVyKCRrKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCR2KSkgewogICAgICAgICAgICAkcXMgLj0gJGs7CiAgICAgICAgICAgIGlmICgkdiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJHFzIC49ICc9JyAuICRlbmNvZGVyKCR2KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcXMgLj0gJyYnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR2IGFzICR2dikgewogICAgICAgICAgICAgICAgJHFzIC49ICRrOwogICAgICAgICAgICAgICAgaWYgKCR2diAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRxcyAuPSAnPScgLiAkZW5jb2RlcigkdnYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHFzIC49ICcmJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJHFzID8gKHN0cmluZykgc3Vic3RyKCRxcywgMCwgLTEpIDogJyc7Cn0KCi8qKgogKiBEZXRlcm1pbmVzIHRoZSBtaW1ldHlwZSBvZiBhIGZpbGUgYnkgbG9va2luZyBhdCBpdHMgZXh0ZW5zaW9uLgogKgogKiBAcGFyYW0gJGZpbGVuYW1lCiAqCiAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICovCmZ1bmN0aW9uIG1pbWV0eXBlX2Zyb21fZmlsZW5hbWUoJGZpbGVuYW1lKQp7CiAgICByZXR1cm4gbWltZXR5cGVfZnJvbV9leHRlbnNpb24ocGF0aGluZm8oJGZpbGVuYW1lLCBQQVRISU5GT19FWFRFTlNJT04pKTsKfQoKLyoqCiAqIE1hcHMgYSBmaWxlIGV4dGVuc2lvbnMgdG8gYSBtaW1ldHlwZS4KICoKICogQHBhcmFtICRleHRlbnNpb24gc3RyaW5nIFRoZSBmaWxlIGV4dGVuc2lvbi4KICoKICogQHJldHVybiBzdHJpbmd8bnVsbAogKiBAbGluayBodHRwOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL2h0dHBkL2h0dHBkL2JyYW5jaGVzLzEuMy54L2NvbmYvbWltZS50eXBlcwogKi8KZnVuY3Rpb24gbWltZXR5cGVfZnJvbV9leHRlbnNpb24oJGV4dGVuc2lvbikKewogICAgc3RhdGljICRtaW1ldHlwZXMgPSBbCiAgICAgICAgJzd6JyA9PiAnYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkJywKICAgICAgICAnYWFjJyA9PiAnYXVkaW8veC1hYWMnLAogICAgICAgICdhaScgPT4gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnLAogICAgICAgICdhaWYnID0+ICdhdWRpby94LWFpZmYnLAogICAgICAgICdhc2MnID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnYXNmJyA9PiAndmlkZW8veC1tcy1hc2YnLAogICAgICAgICdhdG9tJyA9PiAnYXBwbGljYXRpb24vYXRvbSt4bWwnLAogICAgICAgICdhdmknID0+ICd2aWRlby94LW1zdmlkZW8nLAogICAgICAgICdibXAnID0+ICdpbWFnZS9ibXAnLAogICAgICAgICdiejInID0+ICdhcHBsaWNhdGlvbi94LWJ6aXAyJywKICAgICAgICAnY2VyJyA9PiAnYXBwbGljYXRpb24vcGtpeC1jZXJ0JywKICAgICAgICAnY3JsJyA9PiAnYXBwbGljYXRpb24vcGtpeC1jcmwnLAogICAgICAgICdjcnQnID0+ICdhcHBsaWNhdGlvbi94LXg1MDktY2EtY2VydCcsCiAgICAgICAgJ2NzcycgPT4gJ3RleHQvY3NzJywKICAgICAgICAnY3N2JyA9PiAndGV4dC9jc3YnLAogICAgICAgICdjdScgPT4gJ2FwcGxpY2F0aW9uL2N1LXNlZW1lJywKICAgICAgICAnZGViJyA9PiAnYXBwbGljYXRpb24veC1kZWJpYW4tcGFja2FnZScsCiAgICAgICAgJ2RvYycgPT4gJ2FwcGxpY2F0aW9uL21zd29yZCcsCiAgICAgICAgJ2RvY3gnID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsCiAgICAgICAgJ2R2aScgPT4gJ2FwcGxpY2F0aW9uL3gtZHZpJywKICAgICAgICAnZW90JyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLAogICAgICAgICdlcHMnID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAnZXB1YicgPT4gJ2FwcGxpY2F0aW9uL2VwdWIremlwJywKICAgICAgICAnZXR4JyA9PiAndGV4dC94LXNldGV4dCcsCiAgICAgICAgJ2ZsYWMnID0+ICdhdWRpby9mbGFjJywKICAgICAgICAnZmx2JyA9PiAndmlkZW8veC1mbHYnLAogICAgICAgICdnaWYnID0+ICdpbWFnZS9naWYnLAogICAgICAgICdneicgPT4gJ2FwcGxpY2F0aW9uL2d6aXAnLAogICAgICAgICdodG0nID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICdodG1sJyA9PiAndGV4dC9odG1sJywKICAgICAgICAnaWNvJyA9PiAnaW1hZ2UveC1pY29uJywKICAgICAgICAnaWNzJyA9PiAndGV4dC9jYWxlbmRhcicsCiAgICAgICAgJ2luaScgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICdpc28nID0+ICdhcHBsaWNhdGlvbi94LWlzbzk2NjAtaW1hZ2UnLAogICAgICAgICdqYXInID0+ICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnLAogICAgICAgICdqcGUnID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAnanBlZycgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICdqcGcnID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAnanMnID0+ICd0ZXh0L2phdmFzY3JpcHQnLAogICAgICAgICdqc29uJyA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgJ2xhdGV4JyA9PiAnYXBwbGljYXRpb24veC1sYXRleCcsCiAgICAgICAgJ2xvZycgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICdtNGEnID0+ICdhdWRpby9tcDQnLAogICAgICAgICdtNHYnID0+ICd2aWRlby9tcDQnLAogICAgICAgICdtaWQnID0+ICdhdWRpby9taWRpJywKICAgICAgICAnbWlkaScgPT4gJ2F1ZGlvL21pZGknLAogICAgICAgICdtb3YnID0+ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICdtcDMnID0+ICdhdWRpby9tcGVnJywKICAgICAgICAnbXA0JyA9PiAndmlkZW8vbXA0JywKICAgICAgICAnbXA0YScgPT4gJ2F1ZGlvL21wNCcsCiAgICAgICAgJ21wNHYnID0+ICd2aWRlby9tcDQnLAogICAgICAgICdtcGUnID0+ICd2aWRlby9tcGVnJywKICAgICAgICAnbXBlZycgPT4gJ3ZpZGVvL21wZWcnLAogICAgICAgICdtcGcnID0+ICd2aWRlby9tcGVnJywKICAgICAgICAnbXBnNCcgPT4gJ3ZpZGVvL21wNCcsCiAgICAgICAgJ29nYScgPT4gJ2F1ZGlvL29nZycsCiAgICAgICAgJ29nZycgPT4gJ2F1ZGlvL29nZycsCiAgICAgICAgJ29ndicgPT4gJ3ZpZGVvL29nZycsCiAgICAgICAgJ29neCcgPT4gJ2FwcGxpY2F0aW9uL29nZycsCiAgICAgICAgJ3BibScgPT4gJ2ltYWdlL3gtcG9ydGFibGUtYml0bWFwJywKICAgICAgICAncGRmJyA9PiAnYXBwbGljYXRpb24vcGRmJywKICAgICAgICAncGdtJyA9PiAnaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwJywKICAgICAgICAncG5nJyA9PiAnaW1hZ2UvcG5nJywKICAgICAgICAncG5tJyA9PiAnaW1hZ2UveC1wb3J0YWJsZS1hbnltYXAnLAogICAgICAgICdwcG0nID0+ICdpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCcsCiAgICAgICAgJ3BwdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAncHB0eCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nLAogICAgICAgICdwcycgPT4gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnLAogICAgICAgICdxdCcgPT4gJ3ZpZGVvL3F1aWNrdGltZScsCiAgICAgICAgJ3JhcicgPT4gJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLAogICAgICAgICdyYXMnID0+ICdpbWFnZS94LWNtdS1yYXN0ZXInLAogICAgICAgICdyc3MnID0+ICdhcHBsaWNhdGlvbi9yc3MreG1sJywKICAgICAgICAncnRmJyA9PiAnYXBwbGljYXRpb24vcnRmJywKICAgICAgICAnc2dtJyA9PiAndGV4dC9zZ21sJywKICAgICAgICAnc2dtbCcgPT4gJ3RleHQvc2dtbCcsCiAgICAgICAgJ3N2ZycgPT4gJ2ltYWdlL3N2Zyt4bWwnLAogICAgICAgICdzd2YnID0+ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsCiAgICAgICAgJ3RhcicgPT4gJ2FwcGxpY2F0aW9uL3gtdGFyJywKICAgICAgICAndGlmJyA9PiAnaW1hZ2UvdGlmZicsCiAgICAgICAgJ3RpZmYnID0+ICdpbWFnZS90aWZmJywKICAgICAgICAndG9ycmVudCcgPT4gJ2FwcGxpY2F0aW9uL3gtYml0dG9ycmVudCcsCiAgICAgICAgJ3R0ZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10dGYnLAogICAgICAgICd0eHQnID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnd2F2JyA9PiAnYXVkaW8veC13YXYnLAogICAgICAgICd3ZWJtJyA9PiAndmlkZW8vd2VibScsCiAgICAgICAgJ3dtYScgPT4gJ2F1ZGlvL3gtbXMtd21hJywKICAgICAgICAnd212JyA9PiAndmlkZW8veC1tcy13bXYnLAogICAgICAgICd3b2ZmJyA9PiAnYXBwbGljYXRpb24veC1mb250LXdvZmYnLAogICAgICAgICd3c2RsJyA9PiAnYXBwbGljYXRpb24vd3NkbCt4bWwnLAogICAgICAgICd4Ym0nID0+ICdpbWFnZS94LXhiaXRtYXAnLAogICAgICAgICd4bHMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLAogICAgICAgICd4bHN4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQnLAogICAgICAgICd4bWwnID0+ICdhcHBsaWNhdGlvbi94bWwnLAogICAgICAgICd4cG0nID0+ICdpbWFnZS94LXhwaXhtYXAnLAogICAgICAgICd4d2QnID0+ICdpbWFnZS94LXh3aW5kb3dkdW1wJywKICAgICAgICAneWFtbCcgPT4gJ3RleHQveWFtbCcsCiAgICAgICAgJ3ltbCcgPT4gJ3RleHQveWFtbCcsCiAgICAgICAgJ3ppcCcgPT4gJ2FwcGxpY2F0aW9uL3ppcCcsCiAgICBdOwoKICAgICRleHRlbnNpb24gPSBzdHJ0b2xvd2VyKCRleHRlbnNpb24pOwoKICAgIHJldHVybiBpc3NldCgkbWltZXR5cGVzWyRleHRlbnNpb25dKQogICAgICAgID8gJG1pbWV0eXBlc1skZXh0ZW5zaW9uXQogICAgICAgIDogbnVsbDsKfQoKLyoqCiAqIFBhcnNlcyBhbiBIVFRQIG1lc3NhZ2UgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KICoKICogVGhlIGFycmF5IGNvbnRhaW5zIHRoZSAic3RhcnQtbGluZSIga2V5IGNvbnRhaW5pbmcgdGhlIHN0YXJ0IGxpbmUgb2YKICogdGhlIG1lc3NhZ2UsICJoZWFkZXJzIiBrZXkgY29udGFpbmluZyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBoZWFkZXIKICogYXJyYXkgdmFsdWVzLCBhbmQgYSAiYm9keSIga2V5IGNvbnRhaW5pbmcgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgSFRUUCByZXF1ZXN0IG9yIHJlc3BvbnNlIHRvIHBhcnNlLgogKgogKiBAcmV0dXJuIGFycmF5CiAqIEBpbnRlcm5hbAogKi8KZnVuY3Rpb24gX3BhcnNlX21lc3NhZ2UoJG1lc3NhZ2UpCnsKICAgIGlmICghJG1lc3NhZ2UpIHsKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBtZXNzYWdlJyk7CiAgICB9CgogICAgLy8gSXRlcmF0ZSBvdmVyIGVhY2ggbGluZSBpbiB0aGUgbWVzc2FnZSwgYWNjb3VudGluZyBmb3IgbGluZSBlbmRpbmdzCiAgICAkbGluZXMgPSBwcmVnX3NwbGl0KCcvKFxccj9cXG4pLycsICRtZXNzYWdlLCAtMSwgUFJFR19TUExJVF9ERUxJTV9DQVBUVVJFKTsKICAgICRyZXN1bHQgPSBbJ3N0YXJ0LWxpbmUnID0+IGFycmF5X3NoaWZ0KCRsaW5lcyksICdoZWFkZXJzJyA9PiBbXSwgJ2JvZHknID0+ICcnXTsKICAgIGFycmF5X3NoaWZ0KCRsaW5lcyk7CgogICAgZm9yICgkaSA9IDAsICR0b3RhbExpbmVzID0gY291bnQoJGxpbmVzKTsgJGkgPCAkdG90YWxMaW5lczsgJGkgKz0gMikgewogICAgICAgICRsaW5lID0gJGxpbmVzWyRpXTsKICAgICAgICAvLyBJZiB0d28gbGluZSBicmVha3Mgd2VyZSBlbmNvdW50ZXJlZCwgdGhlbiB0aGlzIGlzIHRoZSBlbmQgb2YgYm9keQogICAgICAgIGlmIChlbXB0eSgkbGluZSkpIHsKICAgICAgICAgICAgaWYgKCRpIDwgJHRvdGFsTGluZXMgLSAxKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0Wydib2R5J10gPSBpbXBsb2RlKCcnLCBhcnJheV9zbGljZSgkbGluZXMsICRpICsgMikpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBpZiAoc3RycG9zKCRsaW5lLCAnOicpKSB7CiAgICAgICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJzonLCAkbGluZSwgMik7CiAgICAgICAgICAgICRrZXkgPSB0cmltKCRwYXJ0c1swXSk7CiAgICAgICAgICAgICR2YWx1ZSA9IGlzc2V0KCRwYXJ0c1sxXSkgPyB0cmltKCRwYXJ0c1sxXSkgOiAnJzsKICAgICAgICAgICAgJHJlc3VsdFsnaGVhZGVycyddWyRrZXldW10gPSAkdmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CgovKioKICogQ29uc3RydWN0cyBhIFVSSSBmb3IgYW4gSFRUUCByZXF1ZXN0IG1lc3NhZ2UuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHBhdGggICAgUGF0aCBmcm9tIHRoZSBzdGFydC1saW5lCiAqIEBwYXJhbSBhcnJheSAgJGhlYWRlcnMgQXJyYXkgb2YgaGVhZGVycyAoZWFjaCB2YWx1ZSBhbiBhcnJheSkuCiAqCiAqIEByZXR1cm4gc3RyaW5nCiAqIEBpbnRlcm5hbAogKi8KZnVuY3Rpb24gX3BhcnNlX3JlcXVlc3RfdXJpKCRwYXRoLCBhcnJheSAkaGVhZGVycykKewogICAgJGhvc3RLZXkgPSBhcnJheV9maWx0ZXIoYXJyYXlfa2V5cygkaGVhZGVycyksIGZ1bmN0aW9uICgkaykgewogICAgICAgIHJldHVybiBzdHJ0b2xvd2VyKCRrKSA9PT0gJ2hvc3QnOwogICAgfSk7CgogICAgLy8gSWYgbm8gaG9zdCBpcyBmb3VuZCwgdGhlbiBhIGZ1bGwgVVJJIGNhbm5vdCBiZSBjb25zdHJ1Y3RlZC4KICAgIGlmICghJGhvc3RLZXkpIHsKICAgICAgICByZXR1cm4gJHBhdGg7CiAgICB9CgogICAgJGhvc3QgPSAkaGVhZGVyc1tyZXNldCgkaG9zdEtleSldWzBdOwogICAgJHNjaGVtZSA9IHN1YnN0cigkaG9zdCwgLTQpID09PSAnOjQ0MycgPyAnaHR0cHMnIDogJ2h0dHAnOwoKICAgIHJldHVybiAkc2NoZW1lIC4gJzovLycgLiAkaG9zdCAuICcvJyAuIGx0cmltKCRwYXRoLCAnLycpOwp9CgovKiogQGludGVybmFsICovCmZ1bmN0aW9uIF9jYXNlbGVzc19yZW1vdmUoJGtleXMsIGFycmF5ICRkYXRhKQp7CiAgICAkcmVzdWx0ID0gW107CgogICAgZm9yZWFjaCAoJGtleXMgYXMgJiRrZXkpIHsKICAgICAgICAka2V5ID0gc3RydG9sb3dlcigka2V5KTsKICAgIH0KCiAgICBmb3JlYWNoICgkZGF0YSBhcyAkayA9PiAkdikgewogICAgICAgIGlmICghaW5fYXJyYXkoc3RydG9sb3dlcigkayksICRrZXlzKSkgewogICAgICAgICAgICAkcmVzdWx0WyRrXSA9ICR2OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJHJlc3VsdDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/functions_include.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIERvbid0IHJlZGVmaW5lIHRoZSBmdW5jdGlvbnMgaWYgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCmlmICghZnVuY3Rpb25fZXhpc3RzKCdHdXp6bGVIdHRwXFBzcjdcc3RyJykpIHsKICAgIHJlcXVpcmUgX19ESVJfXyAuICcvZnVuY3Rpb25zLnBocCc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/InflateStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBVc2VzIFBIUCdzIHpsaWIuaW5mbGF0ZSBmaWx0ZXIgdG8gaW5mbGF0ZSBkZWZsYXRlIG9yIGd6aXBwZWQgY29udGVudC4KICoKICogVGhpcyBzdHJlYW0gZGVjb3JhdG9yIHNraXBzIHRoZSBmaXJzdCAxMCBieXRlcyBvZiB0aGUgZ2l2ZW4gc3RyZWFtIHRvIHJlbW92ZQogKiB0aGUgZ3ppcCBoZWFkZXIsIGNvbnZlcnRzIHRoZSBwcm92aWRlZCBzdHJlYW0gdG8gYSBQSFAgc3RyZWFtIHJlc291cmNlLAogKiB0aGVuIGFwcGVuZHMgdGhlIHpsaWIuaW5mbGF0ZSBmaWx0ZXIuIFRoZSBzdHJlYW0gaXMgdGhlbiBjb252ZXJ0ZWQgYmFjawogKiB0byBhIEd1enpsZSBzdHJlYW0gcmVzb3VyY2UgdG8gYmUgdXNlZCBhcyBhIEd1enpsZSBzdHJlYW0uCiAqCiAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzE5NTIKICogQGxpbmsgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2ZpbHRlcnMuY29tcHJlc3Npb24ucGhwCiAqLwpjbGFzcyBJbmZsYXRlU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0pCiAgICB7CiAgICAgICAgLy8gcmVhZCB0aGUgZmlyc3QgMTAgYnl0ZXMsIGllLiBnemlwIGhlYWRlcgogICAgICAgICRoZWFkZXIgPSAkc3RyZWFtLT5yZWFkKDEwKTsKICAgICAgICAkZmlsZW5hbWVIZWFkZXJMZW5ndGggPSAkdGhpcy0+Z2V0TGVuZ3RoT2ZQb3NzaWJsZUZpbGVuYW1lSGVhZGVyKCRzdHJlYW0sICRoZWFkZXIpOwogICAgICAgIC8vIFNraXAgdGhlIGhlYWRlciwgdGhhdCBpcyAxMCArIGxlbmd0aCBvZiBmaWxlbmFtZSArIDEgKG5pbCkgYnl0ZXMKICAgICAgICAkc3RyZWFtID0gbmV3IExpbWl0U3RyZWFtKCRzdHJlYW0sIC0xLCAxMCArICRmaWxlbmFtZUhlYWRlckxlbmd0aCk7CiAgICAgICAgJHJlc291cmNlID0gU3RyZWFtV3JhcHBlcjo6Z2V0UmVzb3VyY2UoJHN0cmVhbSk7CiAgICAgICAgc3RyZWFtX2ZpbHRlcl9hcHBlbmQoJHJlc291cmNlLCAnemxpYi5pbmZsYXRlJywgU1RSRUFNX0ZJTFRFUl9SRUFEKTsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gbmV3IFN0cmVhbSgkcmVzb3VyY2UpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtCiAgICAgKiBAcGFyYW0gJGhlYWRlcgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRMZW5ndGhPZlBvc3NpYmxlRmlsZW5hbWVIZWFkZXIoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sICRoZWFkZXIpCiAgICB7CiAgICAgICAgJGZpbGVuYW1lX2hlYWRlcl9sZW5ndGggPSAwOwoKICAgICAgICBpZiAoc3Vic3RyKGJpbjJoZXgoJGhlYWRlciksIDYsIDIpID09PSAnMDgnKSB7CiAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBmaWxlbmFtZSwgcmVhZCB1bnRpbCBuaWwKICAgICAgICAgICAgJGZpbGVuYW1lX2hlYWRlcl9sZW5ndGggPSAxOwogICAgICAgICAgICB3aGlsZSAoJHN0cmVhbS0+cmVhZCgxKSAhPT0gY2hyKDApKSB7CiAgICAgICAgICAgICAgICAkZmlsZW5hbWVfaGVhZGVyX2xlbmd0aCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGZpbGVuYW1lX2hlYWRlcl9sZW5ndGg7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/LazyOpenStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBMYXppbHkgcmVhZHMgb3Igd3JpdGVzIHRvIGEgZmlsZSB0aGF0IGlzIG9wZW5lZCBvbmx5IGFmdGVyIGFuIElPIG9wZXJhdGlvbgogKiB0YWtlIHBsYWNlIG9uIHRoZSBzdHJlYW0uCiAqLwpjbGFzcyBMYXp5T3BlblN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgLyoqIEB2YXIgc3RyaW5nIEZpbGUgdG8gb3BlbiAqLwogICAgcHJpdmF0ZSAkZmlsZW5hbWU7CgogICAgLyoqIEB2YXIgc3RyaW5nICRtb2RlICovCiAgICBwcml2YXRlICRtb2RlOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgRmlsZSB0byBsYXppbHkgb3BlbgogICAgICogQHBhcmFtIHN0cmluZyAkbW9kZSAgICAgZm9wZW4gbW9kZSB0byB1c2Ugd2hlbiBvcGVuaW5nIHRoZSBzdHJlYW0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmaWxlbmFtZSwgJG1vZGUpCiAgICB7CiAgICAgICAgJHRoaXMtPmZpbGVuYW1lID0gJGZpbGVuYW1lOwogICAgICAgICR0aGlzLT5tb2RlID0gJG1vZGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBsYXppbHkgd2hlbiByZXF1aXJlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlU3RyZWFtKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RyZWFtX2Zvcih0cnlfZm9wZW4oJHRoaXMtPmZpbGVuYW1lLCAkdGhpcy0+bW9kZSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/LimitStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCgovKioKICogRGVjb3JhdG9yIHVzZWQgdG8gcmV0dXJuIG9ubHkgYSBzdWJzZXQgb2YgYSBzdHJlYW0KICovCmNsYXNzIExpbWl0U3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBpbnQgT2Zmc2V0IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSAqLwogICAgcHJpdmF0ZSAkb2Zmc2V0OwoKICAgIC8qKiBAdmFyIGludCBMaW1pdCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHJlYWQgKi8KICAgIHByaXZhdGUgJGxpbWl0OwoKICAgIC8qKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtIFN0cmVhbSB0byB3cmFwCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICRsaW1pdCAgVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG93IHRvIGJlIHJlYWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdHJlYW0uIFBhc3MgLTEgZm9yIG5vIGxpbWl0LgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkb2Zmc2V0IFBvc2l0aW9uIHRvIHNlZWsgdG8gYmVmb3JlIHJlYWRpbmcgKG9ubHkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrcyBvbiBzZWVrYWJsZSBzdHJlYW1zKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLAogICAgICAgICRsaW1pdCA9IC0xLAogICAgICAgICRvZmZzZXQgPSAwCiAgICApIHsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbTsKICAgICAgICAkdGhpcy0+c2V0TGltaXQoJGxpbWl0KTsKICAgICAgICAkdGhpcy0+c2V0T2Zmc2V0KCRvZmZzZXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKQogICAgewogICAgICAgIC8vIEFsd2F5cyByZXR1cm4gdHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBzdHJlYW0gaXMgRU9GCiAgICAgICAgaWYgKCR0aGlzLT5zdHJlYW0tPmVvZigpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gTm8gbGltaXQgYW5kIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBpcyBub3QgYXQgRU9GCiAgICAgICAgaWYgKCR0aGlzLT5saW1pdCA9PSAtMSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+dGVsbCgpID49ICR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBsaW1pdGVkIHN1YnNldCBvZiBkYXRhCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gKCRsZW5ndGggPSAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+bGltaXQgPT0gLTEpIHsKICAgICAgICAgICAgcmV0dXJuICRsZW5ndGggLSAkdGhpcy0+b2Zmc2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBtaW4oJHRoaXMtPmxpbWl0LCAkbGVuZ3RoIC0gJHRoaXMtPm9mZnNldCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQWxsb3cgZm9yIGEgYm91bmRlZCBzZWVrIG9uIHRoZSByZWFkIGxpbWl0ZWQgc3RyZWFtCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCkKICAgIHsKICAgICAgICBpZiAoJHdoZW5jZSAhPT0gU0VFS19TRVQgfHwgJG9mZnNldCA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICAgICAnQ2Fubm90IHNlZWsgdG8gb2Zmc2V0ICUgd2l0aCB3aGVuY2UgJXMnLAogICAgICAgICAgICAgICAgJG9mZnNldCwKICAgICAgICAgICAgICAgICR3aGVuY2UKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICAkb2Zmc2V0ICs9ICR0aGlzLT5vZmZzZXQ7CgogICAgICAgIGlmICgkdGhpcy0+bGltaXQgIT09IC0xKSB7CiAgICAgICAgICAgIGlmICgkb2Zmc2V0ID4gJHRoaXMtPm9mZnNldCArICR0aGlzLT5saW1pdCkgewogICAgICAgICAgICAgICAgJG9mZnNldCA9ICR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zdHJlYW0tPnNlZWsoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHaXZlIGEgcmVsYXRpdmUgdGVsbCgpCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+dGVsbCgpIC0gJHRoaXMtPm9mZnNldDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgb2Zmc2V0IHRvIHN0YXJ0IGxpbWl0aW5nIGZyb20KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRvZmZzZXQgT2Zmc2V0IHRvIHNlZWsgdG8gYW5kIGJlZ2luIGJ5dGUgbGltaXRpbmcgZnJvbQogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHN0cmVhbSBjYW5ub3QgYmUgc2Vla2VkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0T2Zmc2V0KCRvZmZzZXQpCiAgICB7CiAgICAgICAgJGN1cnJlbnQgPSAkdGhpcy0+c3RyZWFtLT50ZWxsKCk7CgogICAgICAgIGlmICgkY3VycmVudCAhPT0gJG9mZnNldCkgewogICAgICAgICAgICAvLyBJZiB0aGUgc3RyZWFtIGNhbm5vdCBzZWVrIHRvIHRoZSBvZmZzZXQgcG9zaXRpb24sIHRoZW4gcmVhZCB0byBpdAogICAgICAgICAgICBpZiAoJHRoaXMtPnN0cmVhbS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RyZWFtLT5zZWVrKCRvZmZzZXQpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGN1cnJlbnQgPiAkb2Zmc2V0KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBzZWVrIHRvIHN0cmVhbSBvZmZzZXQgJG9mZnNldCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPnN0cmVhbS0+cmVhZCgkb2Zmc2V0IC0gJGN1cnJlbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+b2Zmc2V0ID0gJG9mZnNldDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgbGltaXQgb2YgYnl0ZXMgdGhhdCB0aGUgZGVjb3JhdG9yIGFsbG93cyB0byBiZSByZWFkIGZyb20gdGhlCiAgICAgKiBzdHJlYW0uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbGltaXQgTnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG93IHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLgogICAgICogICAgICAgICAgICAgICAgICAgVXNlIC0xIGZvciBubyBsaW1pdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldExpbWl0KCRsaW1pdCkKICAgIHsKICAgICAgICAkdGhpcy0+bGltaXQgPSAkbGltaXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlYWQoJGxlbmd0aCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmxpbWl0ID09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5yZWFkKCRsZW5ndGgpOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcG9zaXRpb24gaXMgbGVzcyB0aGFuIHRoZSB0b3RhbCBhbGxvd2VkCiAgICAgICAgLy8gYnl0ZXMgKyBvcmlnaW5hbCBvZmZzZXQKICAgICAgICAkcmVtYWluaW5nID0gKCR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQpIC0gJHRoaXMtPnN0cmVhbS0+dGVsbCgpOwogICAgICAgIGlmICgkcmVtYWluaW5nID4gMCkgewogICAgICAgICAgICAvLyBPbmx5IHJldHVybiB0aGUgYW1vdW50IG9mIHJlcXVlc3RlZCBkYXRhLCBlbnN1cmluZyB0aGF0IHRoZSBieXRlCiAgICAgICAgICAgIC8vIGxpbWl0IGlzIG5vdCBleGNlZWRlZAogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+cmVhZChtaW4oJHJlbWFpbmluZywgJGxlbmd0aCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICcnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MessageTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBUcmFpdCBpbXBsZW1lbnRpbmcgZnVuY3Rpb25hbGl0eSBjb21tb24gdG8gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KICovCnRyYWl0IE1lc3NhZ2VUcmFpdAp7CiAgICAvKiogQHZhciBhcnJheSBNYXAgb2YgYWxsIHJlZ2lzdGVyZWQgaGVhZGVycywgYXMgb3JpZ2luYWwgbmFtZSA9PiBhcnJheSBvZiB2YWx1ZXMgKi8KICAgIHByaXZhdGUgJGhlYWRlcnMgPSBbXTsKCiAgICAvKiogQHZhciBhcnJheSBNYXAgb2YgbG93ZXJjYXNlIGhlYWRlciBuYW1lID0+IG9yaWdpbmFsIG5hbWUgYXQgcmVnaXN0cmF0aW9uICovCiAgICBwcml2YXRlICRoZWFkZXJOYW1lcyAgPSBbXTsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJHByb3RvY29sID0gJzEuMSc7CgogICAgLyoqIEB2YXIgU3RyZWFtSW50ZXJmYWNlICovCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb3RvY29sVmVyc2lvbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcm90b2NvbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFByb3RvY29sVmVyc2lvbigkdmVyc2lvbikKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnByb3RvY29sID09PSAkdmVyc2lvbikgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cHJvdG9jb2wgPSAkdmVyc2lvbjsKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWFkZXJzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNIZWFkZXIoJGhlYWRlcikKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzW3N0cnRvbG93ZXIoJGhlYWRlcildKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKCRoZWFkZXIpCiAgICB7CiAgICAgICAgJGhlYWRlciA9IHN0cnRvbG93ZXIoJGhlYWRlcik7CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWyRoZWFkZXJdKSkgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkaGVhZGVyID0gJHRoaXMtPmhlYWRlck5hbWVzWyRoZWFkZXJdOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl07CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlckxpbmUoJGhlYWRlcikKICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLCAnLCAkdGhpcy0+Z2V0SGVhZGVyKCRoZWFkZXIpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhlYWRlcigkaGVhZGVyLCAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IFskdmFsdWVdOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnRyaW1IZWFkZXJWYWx1ZXMoJHZhbHVlKTsKICAgICAgICAkbm9ybWFsaXplZCA9IHN0cnRvbG93ZXIoJGhlYWRlcik7CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICBpZiAoaXNzZXQoJG5ldy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdKSkgewogICAgICAgICAgICB1bnNldCgkbmV3LT5oZWFkZXJzWyRuZXctPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXV0pOwogICAgICAgIH0KICAgICAgICAkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0gPSAkaGVhZGVyOwogICAgICAgICRuZXctPmhlYWRlcnNbJGhlYWRlcl0gPSAkdmFsdWU7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQWRkZWRIZWFkZXIoJGhlYWRlciwgJHZhbHVlKQogICAgewogICAgICAgIGlmICghaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkdmFsdWUgPSBbJHZhbHVlXTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT50cmltSGVhZGVyVmFsdWVzKCR2YWx1ZSk7CiAgICAgICAgJG5vcm1hbGl6ZWQgPSBzdHJ0b2xvd2VyKCRoZWFkZXIpOwoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgaWYgKGlzc2V0KCRuZXctPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSkpIHsKICAgICAgICAgICAgJGhlYWRlciA9ICR0aGlzLT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF07CiAgICAgICAgICAgICRuZXctPmhlYWRlcnNbJGhlYWRlcl0gPSBhcnJheV9tZXJnZSgkdGhpcy0+aGVhZGVyc1skaGVhZGVyXSwgJHZhbHVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0gPSAkaGVhZGVyOwogICAgICAgICAgICAkbmV3LT5oZWFkZXJzWyRoZWFkZXJdID0gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRIZWFkZXIoJGhlYWRlcikKICAgIHsKICAgICAgICAkbm9ybWFsaXplZCA9IHN0cnRvbG93ZXIoJGhlYWRlcik7CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlciA9ICR0aGlzLT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF07CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICB1bnNldCgkbmV3LT5oZWFkZXJzWyRoZWFkZXJdLCAkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0pOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Qm9keSgpCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+c3RyZWFtKSB7CiAgICAgICAgICAgICR0aGlzLT5zdHJlYW0gPSBzdHJlYW1fZm9yKCcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpCiAgICB7CiAgICAgICAgaWYgKCRib2R5ID09PSAkdGhpcy0+c3RyZWFtKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT5zdHJlYW0gPSAkYm9keTsKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldEhlYWRlcnMoYXJyYXkgJGhlYWRlcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmhlYWRlck5hbWVzID0gJHRoaXMtPmhlYWRlcnMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkaGVhZGVycyBhcyAkaGVhZGVyID0+ICR2YWx1ZSkgewogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IFskdmFsdWVdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dHJpbUhlYWRlclZhbHVlcygkdmFsdWUpOwogICAgICAgICAgICAkbm9ybWFsaXplZCA9IHN0cnRvbG93ZXIoJGhlYWRlcik7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGhpcy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdKSkgewogICAgICAgICAgICAgICAgJGhlYWRlciA9ICR0aGlzLT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF07CiAgICAgICAgICAgICAgICAkdGhpcy0+aGVhZGVyc1skaGVhZGVyXSA9IGFycmF5X21lcmdlKCR0aGlzLT5oZWFkZXJzWyRoZWFkZXJdLCAkdmFsdWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSA9ICRoZWFkZXI7CiAgICAgICAgICAgICAgICAkdGhpcy0+aGVhZGVyc1skaGVhZGVyXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFRyaW1zIHdoaXRlc3BhY2UgZnJvbSB0aGUgaGVhZGVyIHZhbHVlcy4KICAgICAqCiAgICAgKiBTcGFjZXMgYW5kIHRhYnMgb3VnaHQgdG8gYmUgZXhjbHVkZWQgYnkgcGFyc2VycyB3aGVuIGV4dHJhY3RpbmcgdGhlIGZpZWxkIHZhbHVlIGZyb20gYSBoZWFkZXIgZmllbGQuCiAgICAgKgogICAgICogaGVhZGVyLWZpZWxkID0gZmllbGQtbmFtZSAiOiIgT1dTIGZpZWxkLXZhbHVlIE9XUwogICAgICogT1dTICAgICAgICAgID0gKiggU1AgLyBIVEFCICkKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJHZhbHVlcyBIZWFkZXIgdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXSBUcmltbWVkIGhlYWRlciB2YWx1ZXMKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yLjQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0cmltSGVhZGVyVmFsdWVzKGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X21hcChmdW5jdGlvbiAoJHZhbHVlKSB7CiAgICAgICAgICAgIHJldHVybiB0cmltKCR2YWx1ZSwgIiBcdCIpOwogICAgICAgIH0sICR2YWx1ZXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MultipartStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gdGhhdCB3aGVuIHJlYWQgcmV0dXJucyBieXRlcyBmb3IgYSBzdHJlYW1pbmcgbXVsdGlwYXJ0IG9yCiAqIG11bHRpcGFydC9mb3JtLWRhdGEgc3RyZWFtLgogKi8KY2xhc3MgTXVsdGlwYXJ0U3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICBwcml2YXRlICRib3VuZGFyeTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAgJGVsZW1lbnRzIEFycmF5IG9mIGFzc29jaWF0aXZlIGFycmF5cywgZWFjaCBjb250YWluaW5nIGEKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkICJuYW1lIiBrZXkgbWFwcGluZyB0byB0aGUgZm9ybSBmaWVsZCwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGEgcmVxdWlyZWQgImNvbnRlbnRzIiBrZXkgbWFwcGluZyB0byBhCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBTdHJlYW1JbnRlcmZhY2UvcmVzb3VyY2Uvc3RyaW5nLCBhbiBvcHRpb25hbAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgImhlYWRlcnMiIGFzc29jaWF0aXZlIGFycmF5IG9mIGN1c3RvbSBoZWFkZXJzLAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFuIG9wdGlvbmFsICJmaWxlbmFtZSIga2V5IG1hcHBpbmcgdG8gYQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nIHRvIHNlbmQgYXMgdGhlIGZpbGVuYW1lIGluIHRoZSBwYXJ0LgogICAgICogQHBhcmFtIHN0cmluZyAkYm91bmRhcnkgWW91IGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgYSBzcGVjaWZpYyBib3VuZGFyeQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGVsZW1lbnRzID0gW10sICRib3VuZGFyeSA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPmJvdW5kYXJ5ID0gJGJvdW5kYXJ5ID86IHNoYTEodW5pcWlkKCcnLCB0cnVlKSk7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICR0aGlzLT5jcmVhdGVTdHJlYW0oJGVsZW1lbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgYm91bmRhcnkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Qm91bmRhcnkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Ym91bmRhcnk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV3JpdGFibGUoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaGVhZGVycyBuZWVkZWQgYmVmb3JlIHRyYW5zZmVycmluZyB0aGUgY29udGVudCBvZiBhIFBPU1QgZmlsZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEhlYWRlcnMoYXJyYXkgJGhlYWRlcnMpCiAgICB7CiAgICAgICAgJHN0ciA9ICcnOwogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICRzdHIgLj0gInska2V5fTogeyR2YWx1ZX1cclxuIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAiLS17JHRoaXMtPmJvdW5kYXJ5fVxyXG4iIC4gdHJpbSgkc3RyKSAuICJcclxuXHJcbiI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgdGhlIGFnZ3JlZ2F0ZSBzdHJlYW0gdGhhdCB3aWxsIGJlIHVzZWQgdG8gdXBsb2FkIHRoZSBQT1NUIGRhdGEKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbShhcnJheSAkZWxlbWVudHMpCiAgICB7CiAgICAgICAgJHN0cmVhbSA9IG5ldyBBcHBlbmRTdHJlYW0oKTsKCiAgICAgICAgZm9yZWFjaCAoJGVsZW1lbnRzIGFzICRlbGVtZW50KSB7CiAgICAgICAgICAgICR0aGlzLT5hZGRFbGVtZW50KCRzdHJlYW0sICRlbGVtZW50KTsKICAgICAgICB9CgogICAgICAgIC8vIEFkZCB0aGUgdHJhaWxpbmcgYm91bmRhcnkgd2l0aCBDUkxGCiAgICAgICAgJHN0cmVhbS0+YWRkU3RyZWFtKHN0cmVhbV9mb3IoIi0teyR0aGlzLT5ib3VuZGFyeX0tLVxyXG4iKSk7CgogICAgICAgIHJldHVybiAkc3RyZWFtOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkRWxlbWVudChBcHBlbmRTdHJlYW0gJHN0cmVhbSwgYXJyYXkgJGVsZW1lbnQpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoWydjb250ZW50cycsICduYW1lJ10gYXMgJGtleSkgewogICAgICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiQSAneyRrZXl9JyBrZXkgaXMgcmVxdWlyZWQiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGVsZW1lbnRbJ2NvbnRlbnRzJ10gPSBzdHJlYW1fZm9yKCRlbGVtZW50Wydjb250ZW50cyddKTsKCiAgICAgICAgaWYgKGVtcHR5KCRlbGVtZW50WydmaWxlbmFtZSddKSkgewogICAgICAgICAgICAkdXJpID0gJGVsZW1lbnRbJ2NvbnRlbnRzJ10tPmdldE1ldGFkYXRhKCd1cmknKTsKICAgICAgICAgICAgaWYgKHN1YnN0cigkdXJpLCAwLCA2KSAhPT0gJ3BocDovLycpIHsKICAgICAgICAgICAgICAgICRlbGVtZW50WydmaWxlbmFtZSddID0gJHVyaTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbGlzdCgkYm9keSwgJGhlYWRlcnMpID0gJHRoaXMtPmNyZWF0ZUVsZW1lbnQoCiAgICAgICAgICAgICRlbGVtZW50WyduYW1lJ10sCiAgICAgICAgICAgICRlbGVtZW50Wydjb250ZW50cyddLAogICAgICAgICAgICBpc3NldCgkZWxlbWVudFsnZmlsZW5hbWUnXSkgPyAkZWxlbWVudFsnZmlsZW5hbWUnXSA6IG51bGwsCiAgICAgICAgICAgIGlzc2V0KCRlbGVtZW50WydoZWFkZXJzJ10pID8gJGVsZW1lbnRbJ2hlYWRlcnMnXSA6IFtdCiAgICAgICAgKTsKCiAgICAgICAgJHN0cmVhbS0+YWRkU3RyZWFtKHN0cmVhbV9mb3IoJHRoaXMtPmdldEhlYWRlcnMoJGhlYWRlcnMpKSk7CiAgICAgICAgJHN0cmVhbS0+YWRkU3RyZWFtKCRib2R5KTsKICAgICAgICAkc3RyZWFtLT5hZGRTdHJlYW0oc3RyZWFtX2ZvcigiXHJcbiIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVFbGVtZW50KCRuYW1lLCBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgJGZpbGVuYW1lLCBhcnJheSAkaGVhZGVycykKICAgIHsKICAgICAgICAvLyBTZXQgYSBkZWZhdWx0IGNvbnRlbnQtZGlzcG9zaXRpb24gaGVhZGVyIGlmIG9uZSB3YXMgbm8gcHJvdmlkZWQKICAgICAgICAkZGlzcG9zaXRpb24gPSAkdGhpcy0+Z2V0SGVhZGVyKCRoZWFkZXJzLCAnY29udGVudC1kaXNwb3NpdGlvbicpOwogICAgICAgIGlmICghJGRpc3Bvc2l0aW9uKSB7CiAgICAgICAgICAgICRoZWFkZXJzWydDb250ZW50LURpc3Bvc2l0aW9uJ10gPSAoJGZpbGVuYW1lID09PSAnMCcgfHwgJGZpbGVuYW1lKQogICAgICAgICAgICAgICAgPyBzcHJpbnRmKCdmb3JtLWRhdGE7IG5hbWU9IiVzIjsgZmlsZW5hbWU9IiVzIicsCiAgICAgICAgICAgICAgICAgICAgJG5hbWUsCiAgICAgICAgICAgICAgICAgICAgYmFzZW5hbWUoJGZpbGVuYW1lKSkKICAgICAgICAgICAgICAgIDogImZvcm0tZGF0YTsgbmFtZT1cInskbmFtZX1cIiI7CiAgICAgICAgfQoKICAgICAgICAvLyBTZXQgYSBkZWZhdWx0IGNvbnRlbnQtbGVuZ3RoIGhlYWRlciBpZiBvbmUgd2FzIG5vIHByb3ZpZGVkCiAgICAgICAgJGxlbmd0aCA9ICR0aGlzLT5nZXRIZWFkZXIoJGhlYWRlcnMsICdjb250ZW50LWxlbmd0aCcpOwogICAgICAgIGlmICghJGxlbmd0aCkgewogICAgICAgICAgICBpZiAoJGxlbmd0aCA9ICRzdHJlYW0tPmdldFNpemUoKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSAoc3RyaW5nKSAkbGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBTZXQgYSBkZWZhdWx0IENvbnRlbnQtVHlwZSBpZiBvbmUgd2FzIG5vdCBzdXBwbGllZAogICAgICAgICR0eXBlID0gJHRoaXMtPmdldEhlYWRlcigkaGVhZGVycywgJ2NvbnRlbnQtdHlwZScpOwogICAgICAgIGlmICghJHR5cGUgJiYgKCRmaWxlbmFtZSA9PT0gJzAnIHx8ICRmaWxlbmFtZSkpIHsKICAgICAgICAgICAgaWYgKCR0eXBlID0gbWltZXR5cGVfZnJvbV9maWxlbmFtZSgkZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICAkaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSAkdHlwZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskc3RyZWFtLCAkaGVhZGVyc107CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRIZWFkZXIoYXJyYXkgJGhlYWRlcnMsICRrZXkpCiAgICB7CiAgICAgICAgJGxvd2VyY2FzZUhlYWRlciA9IHN0cnRvbG93ZXIoJGtleSk7CiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoJGspID09PSAkbG93ZXJjYXNlSGVhZGVyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/NoSeekStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgcHJldmVudHMgYSBzdHJlYW0gZnJvbSBiZWluZyBzZWVrZWQKICovCmNsYXNzIE5vU2Vla1N0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKQogICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHNlZWsgYSBOb1NlZWtTdHJlYW0nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZWVrYWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/PumpStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBhIHJlYWQgb25seSBzdHJlYW0gdGhhdCBwdW1wcyBkYXRhIGZyb20gYSBQSFAgY2FsbGFibGUuCiAqCiAqIFdoZW4gaW52b2tpbmcgdGhlIHByb3ZpZGVkIGNhbGxhYmxlLCB0aGUgUHVtcFN0cmVhbSB3aWxsIHBhc3MgdGhlIGFtb3VudCBvZgogKiBkYXRhIHJlcXVlc3RlZCB0byByZWFkIHRvIHRoZSBjYWxsYWJsZS4gVGhlIGNhbGxhYmxlIGNhbiBjaG9vc2UgdG8gaWdub3JlCiAqIHRoaXMgdmFsdWUgYW5kIHJldHVybiBmZXdlciBvciBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLiBBbnkgZXh0cmEgZGF0YQogKiByZXR1cm5lZCBieSB0aGUgcHJvdmlkZWQgY2FsbGFibGUgaXMgYnVmZmVyZWQgaW50ZXJuYWxseSB1bnRpbCBkcmFpbmVkIHVzaW5nCiAqIHRoZSByZWFkKCkgZnVuY3Rpb24gb2YgdGhlIFB1bXBTdHJlYW0uIFRoZSBwcm92aWRlZCBjYWxsYWJsZSBNVVNUIHJldHVybgogKiBmYWxzZSB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZWFkLgogKi8KY2xhc3MgUHVtcFN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKiogQHZhciBjYWxsYWJsZSAqLwogICAgcHJpdmF0ZSAkc291cmNlOwoKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkc2l6ZTsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJHRlbGxQb3MgPSAwOwoKICAgIC8qKiBAdmFyIGFycmF5ICovCiAgICBwcml2YXRlICRtZXRhZGF0YTsKCiAgICAvKiogQHZhciBCdWZmZXJTdHJlYW0gKi8KICAgIHByaXZhdGUgJGJ1ZmZlcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkc291cmNlIFNvdXJjZSBvZiB0aGUgc3RyZWFtIGRhdGEuIFRoZSBjYWxsYWJsZSBNQVkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdCBhbiBpbnRlZ2VyIGFyZ3VtZW50IHVzZWQgdG8gY29udHJvbCB0aGUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBkYXRhIHRvIHJldHVybi4gVGhlIGNhbGxhYmxlIE1VU1QKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhIHN0cmluZyB3aGVuIGNhbGxlZCwgb3IgZmFsc2Ugb24gZXJyb3IKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIG9yIEVPRi4KICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyAgIFN0cmVhbSBvcHRpb25zOgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgLSBtZXRhZGF0YTogSGFzaCBvZiBtZXRhZGF0YSB0byB1c2Ugd2l0aCBzdHJlYW0uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAtIHNpemU6IFNpemUgb2YgdGhlIHN0cmVhbSwgaWYga25vd24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChjYWxsYWJsZSAkc291cmNlLCBhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5zb3VyY2UgPSAkc291cmNlOwogICAgICAgICR0aGlzLT5zaXplID0gaXNzZXQoJG9wdGlvbnNbJ3NpemUnXSkgPyAkb3B0aW9uc1snc2l6ZSddIDogbnVsbDsKICAgICAgICAkdGhpcy0+bWV0YWRhdGEgPSBpc3NldCgkb3B0aW9uc1snbWV0YWRhdGEnXSkgPyAkb3B0aW9uc1snbWV0YWRhdGEnXSA6IFtdOwogICAgICAgICR0aGlzLT5idWZmZXIgPSBuZXcgQnVmZmVyU3RyZWFtKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBjb3B5X3RvX3N0cmluZygkdGhpcyk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmRldGFjaCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgICR0aGlzLT50ZWxsUG9zID0gZmFsc2U7CiAgICAgICAgJHRoaXMtPnNvdXJjZSA9IG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2l6ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50ZWxsUG9zOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKQogICAgewogICAgICAgIHJldHVybiAhJHRoaXMtPnNvdXJjZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZWVrYWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQogICAgewogICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBzZWVrIGEgUHVtcFN0cmVhbScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1dyaXRhYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3Qgd3JpdGUgdG8gYSBQdW1wU3RyZWFtJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpCiAgICB7CiAgICAgICAgJGRhdGEgPSAkdGhpcy0+YnVmZmVyLT5yZWFkKCRsZW5ndGgpOwogICAgICAgICRyZWFkTGVuID0gc3RybGVuKCRkYXRhKTsKICAgICAgICAkdGhpcy0+dGVsbFBvcyArPSAkcmVhZExlbjsKICAgICAgICAkcmVtYWluaW5nID0gJGxlbmd0aCAtICRyZWFkTGVuOwoKICAgICAgICBpZiAoJHJlbWFpbmluZykgewogICAgICAgICAgICAkdGhpcy0+cHVtcCgkcmVtYWluaW5nKTsKICAgICAgICAgICAgJGRhdGEgLj0gJHRoaXMtPmJ1ZmZlci0+cmVhZCgkcmVtYWluaW5nKTsKICAgICAgICAgICAgJHRoaXMtPnRlbGxQb3MgKz0gc3RybGVuKCRkYXRhKSAtICRyZWFkTGVuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICcnOwogICAgICAgIHdoaWxlICghJHRoaXMtPmVvZigpKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJHRoaXMtPnJlYWQoMTAwMDAwMCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCEka2V5KSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bWV0YWRhdGE7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPm1ldGFkYXRhWyRrZXldKSA/ICR0aGlzLT5tZXRhZGF0YVska2V5XSA6IG51bGw7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwdW1wKCRsZW5ndGgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zb3VyY2UpIHsKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgJGRhdGEgPSBjYWxsX3VzZXJfZnVuYygkdGhpcy0+c291cmNlLCAkbGVuZ3RoKTsKICAgICAgICAgICAgICAgIGlmICgkZGF0YSA9PT0gZmFsc2UgfHwgJGRhdGEgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+c291cmNlID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGhpcy0+YnVmZmVyLT53cml0ZSgkZGF0YSk7CiAgICAgICAgICAgICAgICAkbGVuZ3RoIC09IHN0cmxlbigkZGF0YSk7CiAgICAgICAgICAgIH0gd2hpbGUgKCRsZW5ndGggPiAwKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Request.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFBTUi03IHJlcXVlc3QgaW1wbGVtZW50YXRpb24uCiAqLwpjbGFzcyBSZXF1ZXN0IGltcGxlbWVudHMgUmVxdWVzdEludGVyZmFjZQp7CiAgICB1c2UgTWVzc2FnZVRyYWl0OwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkbWV0aG9kOwoKICAgIC8qKiBAdmFyIG51bGx8c3RyaW5nICovCiAgICBwcml2YXRlICRyZXF1ZXN0VGFyZ2V0OwoKICAgIC8qKiBAdmFyIFVyaUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkdXJpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kICBIVFRQIG1ldGhvZAogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAkdXJpICAgICBVUkkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnMgUmVxdWVzdCBoZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGx8cmVzb3VyY2V8U3RyZWFtSW50ZXJmYWNlICRib2R5ICAgIFJlcXVlc3QgYm9keQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmVyc2lvbiBQcm90b2NvbCB2ZXJzaW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICAkbWV0aG9kLAogICAgICAgICR1cmksCiAgICAgICAgYXJyYXkgJGhlYWRlcnMgPSBbXSwKICAgICAgICAkYm9keSA9IG51bGwsCiAgICAgICAgJHZlcnNpb24gPSAnMS4xJwogICAgKSB7CiAgICAgICAgaWYgKCEoJHVyaSBpbnN0YW5jZW9mIFVyaUludGVyZmFjZSkpIHsKICAgICAgICAgICAgJHVyaSA9IG5ldyBVcmkoJHVyaSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bWV0aG9kID0gc3RydG91cHBlcigkbWV0aG9kKTsKICAgICAgICAkdGhpcy0+dXJpID0gJHVyaTsKICAgICAgICAkdGhpcy0+c2V0SGVhZGVycygkaGVhZGVycyk7CiAgICAgICAgJHRoaXMtPnByb3RvY29sID0gJHZlcnNpb247CgogICAgICAgIGlmICghJHRoaXMtPmhhc0hlYWRlcignSG9zdCcpKSB7CiAgICAgICAgICAgICR0aGlzLT51cGRhdGVIb3N0RnJvbVVyaSgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRib2R5ICE9PSAnJyAmJiAkYm9keSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c3RyZWFtID0gc3RyZWFtX2ZvcigkYm9keSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0VGFyZ2V0KCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnJlcXVlc3RUYXJnZXQgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0VGFyZ2V0OwogICAgICAgIH0KCiAgICAgICAgJHRhcmdldCA9ICR0aGlzLT51cmktPmdldFBhdGgoKTsKICAgICAgICBpZiAoJHRhcmdldCA9PSAnJykgewogICAgICAgICAgICAkdGFyZ2V0ID0gJy8nOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPnVyaS0+Z2V0UXVlcnkoKSAhPSAnJykgewogICAgICAgICAgICAkdGFyZ2V0IC49ICc/JyAuICR0aGlzLT51cmktPmdldFF1ZXJ5KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRhcmdldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFJlcXVlc3RUYXJnZXQoJHJlcXVlc3RUYXJnZXQpCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJyNccyMnLCAkcmVxdWVzdFRhcmdldCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdJbnZhbGlkIHJlcXVlc3QgdGFyZ2V0IHByb3ZpZGVkOyBjYW5ub3QgY29udGFpbiB3aGl0ZXNwYWNlJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnJlcXVlc3RUYXJnZXQgPSAkcmVxdWVzdFRhcmdldDsKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0aG9kKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1ldGhvZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aE1ldGhvZCgkbWV0aG9kKQogICAgewogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT5tZXRob2QgPSBzdHJ0b3VwcGVyKCRtZXRob2QpOwogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVcmkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXJpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoVXJpKFVyaUludGVyZmFjZSAkdXJpLCAkcHJlc2VydmVIb3N0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKCR1cmkgPT09ICR0aGlzLT51cmkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnVyaSA9ICR1cmk7CgogICAgICAgIGlmICghJHByZXNlcnZlSG9zdCkgewogICAgICAgICAgICAkbmV3LT51cGRhdGVIb3N0RnJvbVVyaSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGVIb3N0RnJvbVVyaSgpCiAgICB7CiAgICAgICAgJGhvc3QgPSAkdGhpcy0+dXJpLT5nZXRIb3N0KCk7CgogICAgICAgIGlmICgkaG9zdCA9PSAnJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoKCRwb3J0ID0gJHRoaXMtPnVyaS0+Z2V0UG9ydCgpKSAhPT0gbnVsbCkgewogICAgICAgICAgICAkaG9zdCAuPSAnOicgLiAkcG9ydDsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkdGhpcy0+aGVhZGVyTmFtZXNbJ2hvc3QnXSkpIHsKICAgICAgICAgICAgJGhlYWRlciA9ICR0aGlzLT5oZWFkZXJOYW1lc1snaG9zdCddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRoZWFkZXIgPSAnSG9zdCc7CiAgICAgICAgICAgICR0aGlzLT5oZWFkZXJOYW1lc1snaG9zdCddID0gJ0hvc3QnOwogICAgICAgIH0KICAgICAgICAvLyBFbnN1cmUgSG9zdCBpcyB0aGUgZmlyc3QgaGVhZGVyLgogICAgICAgIC8vIFNlZTogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTUuNAogICAgICAgICR0aGlzLT5oZWFkZXJzID0gWyRoZWFkZXIgPT4gWyRob3N0XV0gKyAkdGhpcy0+aGVhZGVyczsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Response.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CgovKioKICogUFNSLTcgcmVzcG9uc2UgaW1wbGVtZW50YXRpb24uCiAqLwpjbGFzcyBSZXNwb25zZSBpbXBsZW1lbnRzIFJlc3BvbnNlSW50ZXJmYWNlCnsKICAgIHVzZSBNZXNzYWdlVHJhaXQ7CgogICAgLyoqIEB2YXIgYXJyYXkgTWFwIG9mIHN0YW5kYXJkIEhUVFAgc3RhdHVzIGNvZGUvcmVhc29uIHBocmFzZXMgKi8KICAgIHByaXZhdGUgc3RhdGljICRwaHJhc2VzID0gWwogICAgICAgIDEwMCA9PiAnQ29udGludWUnLAogICAgICAgIDEwMSA9PiAnU3dpdGNoaW5nIFByb3RvY29scycsCiAgICAgICAgMTAyID0+ICdQcm9jZXNzaW5nJywKICAgICAgICAyMDAgPT4gJ09LJywKICAgICAgICAyMDEgPT4gJ0NyZWF0ZWQnLAogICAgICAgIDIwMiA9PiAnQWNjZXB0ZWQnLAogICAgICAgIDIwMyA9PiAnTm9uLUF1dGhvcml0YXRpdmUgSW5mb3JtYXRpb24nLAogICAgICAgIDIwNCA9PiAnTm8gQ29udGVudCcsCiAgICAgICAgMjA1ID0+ICdSZXNldCBDb250ZW50JywKICAgICAgICAyMDYgPT4gJ1BhcnRpYWwgQ29udGVudCcsCiAgICAgICAgMjA3ID0+ICdNdWx0aS1zdGF0dXMnLAogICAgICAgIDIwOCA9PiAnQWxyZWFkeSBSZXBvcnRlZCcsCiAgICAgICAgMzAwID0+ICdNdWx0aXBsZSBDaG9pY2VzJywKICAgICAgICAzMDEgPT4gJ01vdmVkIFBlcm1hbmVudGx5JywKICAgICAgICAzMDIgPT4gJ0ZvdW5kJywKICAgICAgICAzMDMgPT4gJ1NlZSBPdGhlcicsCiAgICAgICAgMzA0ID0+ICdOb3QgTW9kaWZpZWQnLAogICAgICAgIDMwNSA9PiAnVXNlIFByb3h5JywKICAgICAgICAzMDYgPT4gJ1N3aXRjaCBQcm94eScsCiAgICAgICAgMzA3ID0+ICdUZW1wb3JhcnkgUmVkaXJlY3QnLAogICAgICAgIDQwMCA9PiAnQmFkIFJlcXVlc3QnLAogICAgICAgIDQwMSA9PiAnVW5hdXRob3JpemVkJywKICAgICAgICA0MDIgPT4gJ1BheW1lbnQgUmVxdWlyZWQnLAogICAgICAgIDQwMyA9PiAnRm9yYmlkZGVuJywKICAgICAgICA0MDQgPT4gJ05vdCBGb3VuZCcsCiAgICAgICAgNDA1ID0+ICdNZXRob2QgTm90IEFsbG93ZWQnLAogICAgICAgIDQwNiA9PiAnTm90IEFjY2VwdGFibGUnLAogICAgICAgIDQwNyA9PiAnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAogICAgICAgIDQwOCA9PiAnUmVxdWVzdCBUaW1lLW91dCcsCiAgICAgICAgNDA5ID0+ICdDb25mbGljdCcsCiAgICAgICAgNDEwID0+ICdHb25lJywKICAgICAgICA0MTEgPT4gJ0xlbmd0aCBSZXF1aXJlZCcsCiAgICAgICAgNDEyID0+ICdQcmVjb25kaXRpb24gRmFpbGVkJywKICAgICAgICA0MTMgPT4gJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScsCiAgICAgICAgNDE0ID0+ICdSZXF1ZXN0LVVSSSBUb28gTGFyZ2UnLAogICAgICAgIDQxNSA9PiAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCiAgICAgICAgNDE2ID0+ICdSZXF1ZXN0ZWQgcmFuZ2Ugbm90IHNhdGlzZmlhYmxlJywKICAgICAgICA0MTcgPT4gJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCiAgICAgICAgNDE4ID0+ICdJXCdtIGEgdGVhcG90JywKICAgICAgICA0MjIgPT4gJ1VucHJvY2Vzc2FibGUgRW50aXR5JywKICAgICAgICA0MjMgPT4gJ0xvY2tlZCcsCiAgICAgICAgNDI0ID0+ICdGYWlsZWQgRGVwZW5kZW5jeScsCiAgICAgICAgNDI1ID0+ICdVbm9yZGVyZWQgQ29sbGVjdGlvbicsCiAgICAgICAgNDI2ID0+ICdVcGdyYWRlIFJlcXVpcmVkJywKICAgICAgICA0MjggPT4gJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCiAgICAgICAgNDI5ID0+ICdUb28gTWFueSBSZXF1ZXN0cycsCiAgICAgICAgNDMxID0+ICdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywKICAgICAgICA0NTEgPT4gJ1VuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zJywKICAgICAgICA1MDAgPT4gJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCiAgICAgICAgNTAxID0+ICdOb3QgSW1wbGVtZW50ZWQnLAogICAgICAgIDUwMiA9PiAnQmFkIEdhdGV3YXknLAogICAgICAgIDUwMyA9PiAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgICAgNTA0ID0+ICdHYXRld2F5IFRpbWUtb3V0JywKICAgICAgICA1MDUgPT4gJ0hUVFAgVmVyc2lvbiBub3Qgc3VwcG9ydGVkJywKICAgICAgICA1MDYgPT4gJ1ZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzJywKICAgICAgICA1MDcgPT4gJ0luc3VmZmljaWVudCBTdG9yYWdlJywKICAgICAgICA1MDggPT4gJ0xvb3AgRGV0ZWN0ZWQnLAogICAgICAgIDUxMSA9PiAnTmV0d29yayBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCcsCiAgICBdOwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkcmVhc29uUGhyYXNlID0gJyc7CgogICAgLyoqIEB2YXIgaW50ICovCiAgICBwcml2YXRlICRzdGF0dXNDb2RlID0gMjAwOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhdHVzICBTdGF0dXMgY29kZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVycyBSZXNwb25zZSBoZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGx8cmVzb3VyY2V8U3RyZWFtSW50ZXJmYWNlICRib2R5ICAgIFJlc3BvbnNlIGJvZHkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZlcnNpb24gUHJvdG9jb2wgdmVyc2lvbgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVhc29uICBSZWFzb24gcGhyYXNlICh3aGVuIGVtcHR5IGEgZGVmYXVsdCB3aWxsIGJlIHVzZWQgYmFzZWQgb24gdGhlIHN0YXR1cyBjb2RlKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgJHN0YXR1cyA9IDIwMCwKICAgICAgICBhcnJheSAkaGVhZGVycyA9IFtdLAogICAgICAgICRib2R5ID0gbnVsbCwKICAgICAgICAkdmVyc2lvbiA9ICcxLjEnLAogICAgICAgICRyZWFzb24gPSBudWxsCiAgICApIHsKICAgICAgICAkdGhpcy0+c3RhdHVzQ29kZSA9IChpbnQpICRzdGF0dXM7CgogICAgICAgIGlmICgkYm9keSAhPT0gJycgJiYgJGJvZHkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9IHN0cmVhbV9mb3IoJGJvZHkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNldEhlYWRlcnMoJGhlYWRlcnMpOwogICAgICAgIGlmICgkcmVhc29uID09ICcnICYmIGlzc2V0KHNlbGY6OiRwaHJhc2VzWyR0aGlzLT5zdGF0dXNDb2RlXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnJlYXNvblBocmFzZSA9IHNlbGY6OiRwaHJhc2VzWyR0aGlzLT5zdGF0dXNDb2RlXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+cmVhc29uUGhyYXNlID0gKHN0cmluZykgJHJlYXNvbjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5wcm90b2NvbCA9ICR2ZXJzaW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0dXNDb2RlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXR1c0NvZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlYXNvblBocmFzZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWFzb25QaHJhc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTdGF0dXMoJGNvZGUsICRyZWFzb25QaHJhc2UgPSAnJykKICAgIHsKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+c3RhdHVzQ29kZSA9IChpbnQpICRjb2RlOwogICAgICAgIGlmICgkcmVhc29uUGhyYXNlID09ICcnICYmIGlzc2V0KHNlbGY6OiRwaHJhc2VzWyRuZXctPnN0YXR1c0NvZGVdKSkgewogICAgICAgICAgICAkcmVhc29uUGhyYXNlID0gc2VsZjo6JHBocmFzZXNbJG5ldy0+c3RhdHVzQ29kZV07CiAgICAgICAgfQogICAgICAgICRuZXctPnJlYXNvblBocmFzZSA9ICRyZWFzb25QaHJhc2U7CiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/ServerRequest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXFBzcjc7Cgp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlOwoKLyoqCiAqIFNlcnZlci1zaWRlIEhUVFAgcmVxdWVzdAogKgogKiBFeHRlbmRzIHRoZSBSZXF1ZXN0IGRlZmluaXRpb24gdG8gYWRkIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBpbmNvbWluZyBkYXRhLAogKiBzcGVjaWZpY2FsbHkgc2VydmVyIHBhcmFtZXRlcnMsIGNvb2tpZXMsIG1hdGNoZWQgcGF0aCBwYXJhbWV0ZXJzLCBxdWVyeQogKiBzdHJpbmcgYXJndW1lbnRzLCBib2R5IHBhcmFtZXRlcnMsIGFuZCB1cGxvYWQgZmlsZSBpbmZvcm1hdGlvbi4KICoKICogIkF0dHJpYnV0ZXMiIGFyZSBkaXNjb3ZlcmVkIHZpYSBkZWNvbXBvc2luZyB0aGUgcmVxdWVzdCAoYW5kIHVzdWFsbHkKICogc3BlY2lmaWNhbGx5IHRoZSBVUkkgcGF0aCksIGFuZCB0eXBpY2FsbHkgd2lsbCBiZSBpbmplY3RlZCBieSB0aGUgYXBwbGljYXRpb24uCiAqCiAqIFJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGltbXV0YWJsZTsgYWxsIG1ldGhvZHMgdGhhdCBtaWdodCBjaGFuZ2Ugc3RhdGUgYXJlCiAqIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGEgbmV3IGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqLwpjbGFzcyBTZXJ2ZXJSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCBpbXBsZW1lbnRzIFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGF0dHJpYnV0ZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkY29va2llUGFyYW1zID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8YXJyYXl8b2JqZWN0CiAgICAgKi8KICAgIHByaXZhdGUgJHBhcnNlZEJvZHk7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHF1ZXJ5UGFyYW1zID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHNlcnZlclBhcmFtczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkdXBsb2FkZWRGaWxlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kICAgICAgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAgICAgICAgICAgICAgICAgICR1cmkgICAgICAgICAgVVJJCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJzICAgICAgUmVxdWVzdCBoZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGx8cmVzb3VyY2V8U3RyZWFtSW50ZXJmYWNlICRib2R5ICAgICAgICAgUmVxdWVzdCBib2R5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2ZXJzaW9uICAgICAgUHJvdG9jb2wgdmVyc2lvbgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2VydmVyUGFyYW1zIFR5cGljYWxseSB0aGUgJF9TRVJWRVIgc3VwZXJnbG9iYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgICRtZXRob2QsCiAgICAgICAgJHVyaSwKICAgICAgICBhcnJheSAkaGVhZGVycyA9IFtdLAogICAgICAgICRib2R5ID0gbnVsbCwKICAgICAgICAkdmVyc2lvbiA9ICcxLjEnLAogICAgICAgIGFycmF5ICRzZXJ2ZXJQYXJhbXMgPSBbXQogICAgKSB7CiAgICAgICAgJHRoaXMtPnNlcnZlclBhcmFtcyA9ICRzZXJ2ZXJQYXJhbXM7CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG1ldGhvZCwgJHVyaSwgJGhlYWRlcnMsICRib2R5LCAkdmVyc2lvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gVXBsb2FkZWRGaWxlIGluc3RhbmNlIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkZmlsZXMgQSBhcnJheSB3aGljaCByZXNwZWN0ICRfRklMRVMgc3RydWN0dXJlCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgdW5yZWNvZ25pemVkIHZhbHVlcwogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZUZpbGVzKGFycmF5ICRmaWxlcykKICAgIHsKICAgICAgICAkbm9ybWFsaXplZCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFVwbG9hZGVkRmlsZUludGVyZmFjZSkgewogICAgICAgICAgICAgICAgJG5vcm1hbGl6ZWRbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZWlmIChpc19hcnJheSgkdmFsdWUpICYmIGlzc2V0KCR2YWx1ZVsndG1wX25hbWUnXSkpIHsKICAgICAgICAgICAgICAgICRub3JtYWxpemVkWyRrZXldID0gc2VsZjo6Y3JlYXRlVXBsb2FkZWRGaWxlRnJvbVNwZWMoJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICRub3JtYWxpemVkWyRrZXldID0gc2VsZjo6bm9ybWFsaXplRmlsZXMoJHZhbHVlKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB2YWx1ZSBpbiBmaWxlcyBzcGVjaWZpY2F0aW9uJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkbm9ybWFsaXplZDsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgcmV0dXJuIGFuIFVwbG9hZGVkRmlsZSBpbnN0YW5jZSBmcm9tIGEgJF9GSUxFUyBzcGVjaWZpY2F0aW9uLgogICAgICoKICAgICAqIElmIHRoZSBzcGVjaWZpY2F0aW9uIHJlcHJlc2VudHMgYW4gYXJyYXkgb2YgdmFsdWVzLCB0aGlzIG1ldGhvZCB3aWxsCiAgICAgKiBkZWxlZ2F0ZSB0byBub3JtYWxpemVOZXN0ZWRGaWxlU3BlYygpIGFuZCByZXR1cm4gdGhhdCByZXR1cm4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZSAkX0ZJTEVTIHN0cnVjdAogICAgICogQHJldHVybiBhcnJheXxVcGxvYWRlZEZpbGVJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlVXBsb2FkZWRGaWxlRnJvbVNwZWMoYXJyYXkgJHZhbHVlKQogICAgewogICAgICAgIGlmIChpc19hcnJheSgkdmFsdWVbJ3RtcF9uYW1lJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpub3JtYWxpemVOZXN0ZWRGaWxlU3BlYygkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBVcGxvYWRlZEZpbGUoCiAgICAgICAgICAgICR2YWx1ZVsndG1wX25hbWUnXSwKICAgICAgICAgICAgKGludCkgJHZhbHVlWydzaXplJ10sCiAgICAgICAgICAgIChpbnQpICR2YWx1ZVsnZXJyb3InXSwKICAgICAgICAgICAgJHZhbHVlWyduYW1lJ10sCiAgICAgICAgICAgICR2YWx1ZVsndHlwZSddCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIE5vcm1hbGl6ZSBhbiBhcnJheSBvZiBmaWxlIHNwZWNpZmljYXRpb25zLgogICAgICoKICAgICAqIExvb3BzIHRocm91Z2ggYWxsIG5lc3RlZCBmaWxlcyBhbmQgcmV0dXJucyBhIG5vcm1hbGl6ZWQgYXJyYXkgb2YKICAgICAqIFVwbG9hZGVkRmlsZUludGVyZmFjZSBpbnN0YW5jZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRmaWxlcwogICAgICogQHJldHVybiBVcGxvYWRlZEZpbGVJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVOZXN0ZWRGaWxlU3BlYyhhcnJheSAkZmlsZXMgPSBbXSkKICAgIHsKICAgICAgICAkbm9ybWFsaXplZEZpbGVzID0gW107CgogICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGZpbGVzWyd0bXBfbmFtZSddKSBhcyAka2V5KSB7CiAgICAgICAgICAgICRzcGVjID0gWwogICAgICAgICAgICAgICAgJ3RtcF9uYW1lJyA9PiAkZmlsZXNbJ3RtcF9uYW1lJ11bJGtleV0sCiAgICAgICAgICAgICAgICAnc2l6ZScgICAgID0+ICRmaWxlc1snc2l6ZSddWyRrZXldLAogICAgICAgICAgICAgICAgJ2Vycm9yJyAgICA9PiAkZmlsZXNbJ2Vycm9yJ11bJGtleV0sCiAgICAgICAgICAgICAgICAnbmFtZScgICAgID0+ICRmaWxlc1snbmFtZSddWyRrZXldLAogICAgICAgICAgICAgICAgJ3R5cGUnICAgICA9PiAkZmlsZXNbJ3R5cGUnXVska2V5XSwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgJG5vcm1hbGl6ZWRGaWxlc1ska2V5XSA9IHNlbGY6OmNyZWF0ZVVwbG9hZGVkRmlsZUZyb21TcGVjKCRzcGVjKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbm9ybWFsaXplZEZpbGVzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGEgU2VydmVyUmVxdWVzdCBwb3B1bGF0ZWQgd2l0aCBzdXBlcmdsb2JhbHM6CiAgICAgKiAkX0dFVAogICAgICogJF9QT1NUCiAgICAgKiAkX0NPT0tJRQogICAgICogJF9GSUxFUwogICAgICogJF9TRVJWRVIKICAgICAqCiAgICAgKiBAcmV0dXJuIFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tR2xvYmFscygpCiAgICB7CiAgICAgICAgJG1ldGhvZCA9IGlzc2V0KCRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddKSA/ICRfU0VSVkVSWydSRVFVRVNUX01FVEhPRCddIDogJ0dFVCc7CiAgICAgICAgJGhlYWRlcnMgPSBmdW5jdGlvbl9leGlzdHMoJ2dldGFsbGhlYWRlcnMnKSA/IGdldGFsbGhlYWRlcnMoKSA6IFtdOwogICAgICAgICR1cmkgPSBzZWxmOjpnZXRVcmlGcm9tR2xvYmFscygpOwogICAgICAgICRib2R5ID0gbmV3IExhenlPcGVuU3RyZWFtKCdwaHA6Ly9pbnB1dCcsICdyKycpOwogICAgICAgICRwcm90b2NvbCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXSkgPyBzdHJfcmVwbGFjZSgnSFRUUC8nLCAnJywgJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddKSA6ICcxLjEnOwoKICAgICAgICAkc2VydmVyUmVxdWVzdCA9IG5ldyBTZXJ2ZXJSZXF1ZXN0KCRtZXRob2QsICR1cmksICRoZWFkZXJzLCAkYm9keSwgJHByb3RvY29sLCAkX1NFUlZFUik7CgogICAgICAgIHJldHVybiAkc2VydmVyUmVxdWVzdAogICAgICAgICAgICAtPndpdGhDb29raWVQYXJhbXMoJF9DT09LSUUpCiAgICAgICAgICAgIC0+d2l0aFF1ZXJ5UGFyYW1zKCRfR0VUKQogICAgICAgICAgICAtPndpdGhQYXJzZWRCb2R5KCRfUE9TVCkKICAgICAgICAgICAgLT53aXRoVXBsb2FkZWRGaWxlcyhzZWxmOjpub3JtYWxpemVGaWxlcygkX0ZJTEVTKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBVcmkgcG9wdWxhdGVkIHdpdGggdmFsdWVzIGZyb20gJF9TRVJWRVIuCiAgICAgKgogICAgICogQHJldHVybiBVcmlJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRVcmlGcm9tR2xvYmFscygpIHsKICAgICAgICAkdXJpID0gbmV3IFVyaSgnJyk7CgogICAgICAgICR1cmkgPSAkdXJpLT53aXRoU2NoZW1lKCFlbXB0eSgkX1NFUlZFUlsnSFRUUFMnXSkgJiYgJF9TRVJWRVJbJ0hUVFBTJ10gIT09ICdvZmYnID8gJ2h0dHBzJyA6ICdodHRwJyk7CgogICAgICAgICRoYXNQb3J0ID0gZmFsc2U7CiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX0hPU1QnXSkpIHsKICAgICAgICAgICAgJGhvc3RIZWFkZXJQYXJ0cyA9IGV4cGxvZGUoJzonLCAkX1NFUlZFUlsnSFRUUF9IT1NUJ10pOwogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aEhvc3QoJGhvc3RIZWFkZXJQYXJ0c1swXSk7CiAgICAgICAgICAgIGlmIChpc3NldCgkaG9zdEhlYWRlclBhcnRzWzFdKSkgewogICAgICAgICAgICAgICAgJGhhc1BvcnQgPSB0cnVlOwogICAgICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQb3J0KCRob3N0SGVhZGVyUGFydHNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfTkFNRSddKSkgewogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aEhvc3QoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pOwogICAgICAgIH0gZWxzZWlmIChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX0FERFInXSkpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhIb3N0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKTsKICAgICAgICB9CgogICAgICAgIGlmICghJGhhc1BvcnQgJiYgaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10pKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUG9ydCgkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSk7CiAgICAgICAgfQoKICAgICAgICAkaGFzUXVlcnkgPSBmYWxzZTsKICAgICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pKSB7CiAgICAgICAgICAgICRyZXF1ZXN0VXJpUGFydHMgPSBleHBsb2RlKCc/JywgJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10pOwogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFBhdGgoJHJlcXVlc3RVcmlQYXJ0c1swXSk7CiAgICAgICAgICAgIGlmIChpc3NldCgkcmVxdWVzdFVyaVBhcnRzWzFdKSkgewogICAgICAgICAgICAgICAgJGhhc1F1ZXJ5ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUXVlcnkoJHJlcXVlc3RVcmlQYXJ0c1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghJGhhc1F1ZXJ5ICYmIGlzc2V0KCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSkpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhRdWVyeSgkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9CgoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VydmVyUGFyYW1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlcnZlclBhcmFtczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVwbG9hZGVkRmlsZXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXBsb2FkZWRGaWxlczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVcGxvYWRlZEZpbGVzKGFycmF5ICR1cGxvYWRlZEZpbGVzKQogICAgewogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT51cGxvYWRlZEZpbGVzID0gJHVwbG9hZGVkRmlsZXM7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29va2llUGFyYW1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvb2tpZVBhcmFtczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhDb29raWVQYXJhbXMoYXJyYXkgJGNvb2tpZXMpCiAgICB7CiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPmNvb2tpZVBhcmFtcyA9ICRjb29raWVzOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnF1ZXJ5UGFyYW1zOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSkKICAgIHsKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cXVlcnlQYXJhbXMgPSAkcXVlcnk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyc2VkQm9keSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJzZWRCb2R5OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhcnNlZEJvZHkoJGRhdGEpCiAgICB7CiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnBhcnNlZEJvZHkgPSAkZGF0YTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmF0dHJpYnV0ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUoJGF0dHJpYnV0ZSwgJGRlZmF1bHQgPSBudWxsKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gYXJyYXlfa2V5X2V4aXN0cygkYXR0cmlidXRlLCAkdGhpcy0+YXR0cmlidXRlcykpIHsKICAgICAgICAgICAgcmV0dXJuICRkZWZhdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5hdHRyaWJ1dGVzWyRhdHRyaWJ1dGVdOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEF0dHJpYnV0ZSgkYXR0cmlidXRlLCAkdmFsdWUpCiAgICB7CiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPmF0dHJpYnV0ZXNbJGF0dHJpYnV0ZV0gPSAkdmFsdWU7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dEF0dHJpYnV0ZSgkYXR0cmlidXRlKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gYXJyYXlfa2V5X2V4aXN0cygkYXR0cmlidXRlLCAkdGhpcy0+YXR0cmlidXRlcykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgIHVuc2V0KCRuZXctPmF0dHJpYnV0ZXNbJGF0dHJpYnV0ZV0pOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Stream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQSFAgc3RyZWFtIGltcGxlbWVudGF0aW9uLgogKgogKiBAdmFyICRzdHJlYW0KICovCmNsYXNzIFN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICBwcml2YXRlICRzdHJlYW07CiAgICBwcml2YXRlICRzaXplOwogICAgcHJpdmF0ZSAkc2Vla2FibGU7CiAgICBwcml2YXRlICRyZWFkYWJsZTsKICAgIHByaXZhdGUgJHdyaXRhYmxlOwogICAgcHJpdmF0ZSAkdXJpOwogICAgcHJpdmF0ZSAkY3VzdG9tTWV0YWRhdGE7CgogICAgLyoqIEB2YXIgYXJyYXkgSGFzaCBvZiByZWFkYWJsZSBhbmQgd3JpdGFibGUgc3RyZWFtIHR5cGVzICovCiAgICBwcml2YXRlIHN0YXRpYyAkcmVhZFdyaXRlSGFzaCA9IFsKICAgICAgICAncmVhZCcgPT4gWwogICAgICAgICAgICAncicgPT4gdHJ1ZSwgJ3crJyA9PiB0cnVlLCAncisnID0+IHRydWUsICd4KycgPT4gdHJ1ZSwgJ2MrJyA9PiB0cnVlLAogICAgICAgICAgICAncmInID0+IHRydWUsICd3K2InID0+IHRydWUsICdyK2InID0+IHRydWUsICd4K2InID0+IHRydWUsCiAgICAgICAgICAgICdjK2InID0+IHRydWUsICdydCcgPT4gdHJ1ZSwgJ3crdCcgPT4gdHJ1ZSwgJ3IrdCcgPT4gdHJ1ZSwKICAgICAgICAgICAgJ3grdCcgPT4gdHJ1ZSwgJ2MrdCcgPT4gdHJ1ZSwgJ2ErJyA9PiB0cnVlCiAgICAgICAgXSwKICAgICAgICAnd3JpdGUnID0+IFsKICAgICAgICAgICAgJ3cnID0+IHRydWUsICd3KycgPT4gdHJ1ZSwgJ3J3JyA9PiB0cnVlLCAncisnID0+IHRydWUsICd4KycgPT4gdHJ1ZSwKICAgICAgICAgICAgJ2MrJyA9PiB0cnVlLCAnd2InID0+IHRydWUsICd3K2InID0+IHRydWUsICdyK2InID0+IHRydWUsCiAgICAgICAgICAgICd4K2InID0+IHRydWUsICdjK2InID0+IHRydWUsICd3K3QnID0+IHRydWUsICdyK3QnID0+IHRydWUsCiAgICAgICAgICAgICd4K3QnID0+IHRydWUsICdjK3QnID0+IHRydWUsICdhJyA9PiB0cnVlLCAnYSsnID0+IHRydWUKICAgICAgICBdCiAgICBdOwoKICAgIC8qKgogICAgICogVGhpcyBjb25zdHJ1Y3RvciBhY2NlcHRzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnMuCiAgICAgKgogICAgICogLSBzaXplOiAoaW50KSBJZiBhIHJlYWQgc3RyZWFtIHdvdWxkIG90aGVyd2lzZSBoYXZlIGFuIGluZGV0ZXJtaW5hdGUKICAgICAqICAgc2l6ZSwgYnV0IHRoZSBzaXplIGlzIGtub3duIGR1ZSB0byBmb3Jla25vd2xlZGdlLCB0aGVuIHlvdSBjYW4KICAgICAqICAgcHJvdmlkZSB0aGF0IHNpemUsIGluIGJ5dGVzLgogICAgICogLSBtZXRhZGF0YTogKGFycmF5KSBBbnkgYWRkaXRpb25hbCBtZXRhZGF0YSB0byByZXR1cm4gd2hlbiB0aGUgbWV0YWRhdGEKICAgICAqICAgb2YgdGhlIHN0cmVhbSBpcyBhY2Nlc3NlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHN0cmVhbSAgU3RyZWFtIHJlc291cmNlIHRvIHdyYXAuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgJG9wdGlvbnMgQXNzb2NpYXRpdmUgYXJyYXkgb2Ygb3B0aW9ucy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHN0cmVhbSBpcyBub3QgYSBzdHJlYW0gcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJlYW0sICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgaWYgKCFpc19yZXNvdXJjZSgkc3RyZWFtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignU3RyZWFtIG11c3QgYmUgYSByZXNvdXJjZScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzaXplJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zaXplID0gJG9wdGlvbnNbJ3NpemUnXTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jdXN0b21NZXRhZGF0YSA9IGlzc2V0KCRvcHRpb25zWydtZXRhZGF0YSddKQogICAgICAgICAgICA/ICRvcHRpb25zWydtZXRhZGF0YSddCiAgICAgICAgICAgIDogW107CgogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkc3RyZWFtOwogICAgICAgICRtZXRhID0gc3RyZWFtX2dldF9tZXRhX2RhdGEoJHRoaXMtPnN0cmVhbSk7CiAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gJG1ldGFbJ3NlZWthYmxlJ107CiAgICAgICAgJHRoaXMtPnJlYWRhYmxlID0gaXNzZXQoc2VsZjo6JHJlYWRXcml0ZUhhc2hbJ3JlYWQnXVskbWV0YVsnbW9kZSddXSk7CiAgICAgICAgJHRoaXMtPndyaXRhYmxlID0gaXNzZXQoc2VsZjo6JHJlYWRXcml0ZUhhc2hbJ3dyaXRlJ11bJG1ldGFbJ21vZGUnXV0pOwogICAgICAgICR0aGlzLT51cmkgPSAkdGhpcy0+Z2V0TWV0YWRhdGEoJ3VyaScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoJG5hbWUgPT0gJ3N0cmVhbScpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdUaGUgc3RyZWFtIGlzIGRldGFjaGVkJyk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oJ05vIHZhbHVlIGZvciAnIC4gJG5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xvc2VzIHRoZSBzdHJlYW0gd2hlbiB0aGUgZGVzdHJ1Y3RlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmNsb3NlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgICAgICAgICByZXR1cm4gKHN0cmluZykgc3RyZWFtX2dldF9jb250ZW50cygkdGhpcy0+c3RyZWFtKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCkKICAgIHsKICAgICAgICAkY29udGVudHMgPSBzdHJlYW1fZ2V0X2NvbnRlbnRzKCR0aGlzLT5zdHJlYW0pOwoKICAgICAgICBpZiAoJGNvbnRlbnRzID09PSBmYWxzZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byByZWFkIHN0cmVhbSBjb250ZW50cycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb250ZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgICAgIGZjbG9zZSgkdGhpcy0+c3RyZWFtKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+ZGV0YWNoKCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnN0cmVhbTsKICAgICAgICB1bnNldCgkdGhpcy0+c3RyZWFtKTsKICAgICAgICAkdGhpcy0+c2l6ZSA9ICR0aGlzLT51cmkgPSBudWxsOwogICAgICAgICR0aGlzLT5yZWFkYWJsZSA9ICR0aGlzLT53cml0YWJsZSA9ICR0aGlzLT5zZWVrYWJsZSA9IGZhbHNlOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zaXplICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2l6ZTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhciB0aGUgc3RhdCBjYWNoZSBpZiB0aGUgc3RyZWFtIGhhcyBhIFVSSQogICAgICAgIGlmICgkdGhpcy0+dXJpKSB7CiAgICAgICAgICAgIGNsZWFyc3RhdGNhY2hlKHRydWUsICR0aGlzLT51cmkpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXRzID0gZnN0YXQoJHRoaXMtPnN0cmVhbSk7CiAgICAgICAgaWYgKGlzc2V0KCRzdGF0c1snc2l6ZSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2l6ZSA9ICRzdGF0c1snc2l6ZSddOwogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNpemU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWFkYWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWFkYWJsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT53cml0YWJsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZWVrYWJsZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWVrYWJsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZW9mKCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT5zdHJlYW0gfHwgZmVvZigkdGhpcy0+c3RyZWFtKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IGZ0ZWxsKCR0aGlzLT5zdHJlYW0pOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gZGV0ZXJtaW5lIHN0cmVhbSBwb3NpdGlvbicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKQogICAgewogICAgICAgIGlmICghJHRoaXMtPnNlZWthYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignU3RyZWFtIGlzIG5vdCBzZWVrYWJsZScpOwogICAgICAgIH0gZWxzZWlmIChmc2VlaygkdGhpcy0+c3RyZWFtLCAkb2Zmc2V0LCAkd2hlbmNlKSA9PT0gLTEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gc2VlayB0byBzdHJlYW0gcG9zaXRpb24gJwogICAgICAgICAgICAgICAgLiAkb2Zmc2V0IC4gJyB3aXRoIHdoZW5jZSAnIC4gdmFyX2V4cG9ydCgkd2hlbmNlLCB0cnVlKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+cmVhZGFibGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3QgcmVhZCBmcm9tIG5vbi1yZWFkYWJsZSBzdHJlYW0nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRsZW5ndGggPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignTGVuZ3RoIHBhcmFtZXRlciBjYW5ub3QgYmUgbmVnYXRpdmUnKTsKICAgICAgICB9CgogICAgICAgIGlmICgwID09PSAkbGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICRzdHJpbmcgPSBmcmVhZCgkdGhpcy0+c3RyZWFtLCAkbGVuZ3RoKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRzdHJpbmcpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gcmVhZCBmcm9tIHN0cmVhbScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzdHJpbmc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+d3JpdGFibGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3Qgd3JpdGUgdG8gYSBub24td3JpdGFibGUgc3RyZWFtJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBXZSBjYW4ndCBrbm93IHRoZSBzaXplIGFmdGVyIHdyaXRpbmcgYW55dGhpbmcKICAgICAgICAkdGhpcy0+c2l6ZSA9IG51bGw7CiAgICAgICAgJHJlc3VsdCA9IGZ3cml0ZSgkdGhpcy0+c3RyZWFtLCAkc3RyaW5nKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIHdyaXRlIHRvIHN0cmVhbScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGFkYXRhKCRrZXkgPSBudWxsKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgcmV0dXJuICRrZXkgPyBudWxsIDogW107CiAgICAgICAgfSBlbHNlaWYgKCEka2V5KSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y3VzdG9tTWV0YWRhdGEgKyBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkdGhpcy0+c3RyZWFtKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPmN1c3RvbU1ldGFkYXRhWyRrZXldKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmN1c3RvbU1ldGFkYXRhWyRrZXldOwogICAgICAgIH0KCiAgICAgICAgJG1ldGEgPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkdGhpcy0+c3RyZWFtKTsKCiAgICAgICAgcmV0dXJuIGlzc2V0KCRtZXRhWyRrZXldKSA/ICRtZXRhWyRrZXldIDogbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRyYWl0CiAqIEBwcm9wZXJ0eSBTdHJlYW1JbnRlcmZhY2Ugc3RyZWFtCiAqLwp0cmFpdCBTdHJlYW1EZWNvcmF0b3JUcmFpdAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSBTdHJlYW0gdG8gZGVjb3JhdGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFN0cmVhbUludGVyZmFjZSAkc3RyZWFtKQogICAgewogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkc3RyZWFtOwogICAgfQoKICAgIC8qKgogICAgICogTWFnaWMgbWV0aG9kIHVzZWQgdG8gY3JlYXRlIGEgbmV3IHN0cmVhbSBpZiBzdHJlYW1zIGFyZSBub3QgYWRkZWQgaW4KICAgICAqIHRoZSBjb25zdHJ1Y3RvciBvZiBhIGRlY29yYXRvciAoZS5nLiwgTGF6eU9wZW5TdHJlYW0pLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgTmFtZSBvZiB0aGUgcHJvcGVydHkgKGFsbG93cyAic3RyZWFtIiBvbmx5KS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJG5hbWUpCiAgICB7CiAgICAgICAgaWYgKCRuYW1lID09ICdzdHJlYW0nKSB7CiAgICAgICAgICAgICR0aGlzLT5zdHJlYW0gPSAkdGhpcy0+Y3JlYXRlU3RyZWFtKCk7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oIiRuYW1lIG5vdCBmb3VuZCBvbiBjbGFzcyIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoJHRoaXMtPmlzU2Vla2FibGUoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgLy8gUmVhbGx5LCBQSFA/IGh0dHBzOi8vYnVncy5waHAubmV0L2J1Zy5waHA/aWQ9NTM2NDgKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcignU3RyZWFtRGVjb3JhdG9yOjpfX3RvU3RyaW5nIGV4Y2VwdGlvbjogJwogICAgICAgICAgICAgICAgLiAoc3RyaW5nKSAkZSwgRV9VU0VSX0VSUk9SKTsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKQogICAgewogICAgICAgIHJldHVybiBjb3B5X3RvX3N0cmluZygkdGhpcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBbGxvdyBkZWNvcmF0b3JzIHRvIGltcGxlbWVudCBjdXN0b20gbWV0aG9kcwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1ldGhvZCBNaXNzaW5nIG1ldGhvZCBuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICRhcmdzICAgTWV0aG9kIGFyZ3VtZW50cwogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY2FsbCgkbWV0aG9kLCBhcnJheSAkYXJncykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gY2FsbF91c2VyX2Z1bmNfYXJyYXkoWyR0aGlzLT5zdHJlYW0sICRtZXRob2RdLCAkYXJncyk7CgogICAgICAgIC8vIEFsd2F5cyByZXR1cm4gdGhlIHdyYXBwZWQgb2JqZWN0IGlmIHRoZSByZXN1bHQgaXMgYSByZXR1cm4gJHRoaXMKICAgICAgICByZXR1cm4gJHJlc3VsdCA9PT0gJHRoaXMtPnN0cmVhbSA/ICR0aGlzIDogJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKQogICAgewogICAgICAgICR0aGlzLT5zdHJlYW0tPmNsb3NlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGFkYXRhKCRrZXkgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5nZXRNZXRhZGF0YSgka2V5KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGV0YWNoKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+ZGV0YWNoKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmVvZigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+dGVsbCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlYWRhYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+aXNSZWFkYWJsZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1dyaXRhYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+aXNXcml0YWJsZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+aXNTZWVrYWJsZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQogICAgewogICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCkKICAgIHsKICAgICAgICAkdGhpcy0+c3RyZWFtLT5zZWVrKCRvZmZzZXQsICR3aGVuY2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPnJlYWQoJGxlbmd0aCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPndyaXRlKCRzdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICogSW1wbGVtZW50IGluIHN1YmNsYXNzZXMgdG8gZHluYW1pY2FsbHkgY3JlYXRlIHN0cmVhbXMgd2hlbiByZXF1ZXN0ZWQuCiAgICAgKgogICAgICogQHJldHVybiBTdHJlYW1JbnRlcmZhY2UKICAgICAqIEB0aHJvd3MgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbSgpCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCdOb3QgaW1wbGVtZW50ZWQnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/StreamWrapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBDb252ZXJ0cyBHdXp6bGUgc3RyZWFtcyBpbnRvIFBIUCBzdHJlYW0gcmVzb3VyY2VzLgogKi8KY2xhc3MgU3RyZWFtV3JhcHBlcgp7CiAgICAvKiogQHZhciByZXNvdXJjZSAqLwogICAgcHVibGljICRjb250ZXh0OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIC8qKiBAdmFyIHN0cmluZyByLCByKywgb3IgdyAqLwogICAgcHJpdmF0ZSAkbW9kZTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYSByZXNvdXJjZSByZXByZXNlbnRpbmcgdGhlIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gVGhlIHN0cmVhbSB0byBnZXQgYSByZXNvdXJjZSBmb3IKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgc3RyZWFtIGlzIG5vdCByZWFkYWJsZSBvciB3cml0YWJsZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFJlc291cmNlKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtKQogICAgewogICAgICAgIHNlbGY6OnJlZ2lzdGVyKCk7CgogICAgICAgIGlmICgkc3RyZWFtLT5pc1JlYWRhYmxlKCkpIHsKICAgICAgICAgICAgJG1vZGUgPSAkc3RyZWFtLT5pc1dyaXRhYmxlKCkgPyAncisnIDogJ3InOwogICAgICAgIH0gZWxzZWlmICgkc3RyZWFtLT5pc1dyaXRhYmxlKCkpIHsKICAgICAgICAgICAgJG1vZGUgPSAndyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBzdHJlYW0gbXVzdCBiZSByZWFkYWJsZSwgJwogICAgICAgICAgICAgICAgLiAnd3JpdGFibGUsIG9yIGJvdGguJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZm9wZW4oJ2d1enpsZTovL3N0cmVhbScsICRtb2RlLCBudWxsLCBzdHJlYW1fY29udGV4dF9jcmVhdGUoWwogICAgICAgICAgICAnZ3V6emxlJyA9PiBbJ3N0cmVhbScgPT4gJHN0cmVhbV0KICAgICAgICBdKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgdGhlIHN0cmVhbSB3cmFwcGVyIGlmIG5lZWRlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlZ2lzdGVyKCkKICAgIHsKICAgICAgICBpZiAoIWluX2FycmF5KCdndXp6bGUnLCBzdHJlYW1fZ2V0X3dyYXBwZXJzKCkpKSB7CiAgICAgICAgICAgIHN0cmVhbV93cmFwcGVyX3JlZ2lzdGVyKCdndXp6bGUnLCBfX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX29wZW4oJHBhdGgsICRtb2RlLCAkb3B0aW9ucywgJiRvcGVuZWRfcGF0aCkKICAgIHsKICAgICAgICAkb3B0aW9ucyA9IHN0cmVhbV9jb250ZXh0X2dldF9vcHRpb25zKCR0aGlzLT5jb250ZXh0KTsKCiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1snZ3V6emxlJ11bJ3N0cmVhbSddKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bW9kZSA9ICRtb2RlOwogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkb3B0aW9uc1snZ3V6emxlJ11bJ3N0cmVhbSddOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX3JlYWQoJGNvdW50KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5yZWFkKCRjb3VudCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN0cmVhbV93cml0ZSgkZGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gKGludCkgJHRoaXMtPnN0cmVhbS0+d3JpdGUoJGRhdGEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fdGVsbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPnRlbGwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX2VvZigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmVvZigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fc2Vlaygkb2Zmc2V0LCAkd2hlbmNlKQogICAgewogICAgICAgICR0aGlzLT5zdHJlYW0tPnNlZWsoJG9mZnNldCwgJHdoZW5jZSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fc3RhdCgpCiAgICB7CiAgICAgICAgc3RhdGljICRtb2RlTWFwID0gWwogICAgICAgICAgICAncicgID0+IDMzMDYwLAogICAgICAgICAgICAncisnID0+IDMzMjA2LAogICAgICAgICAgICAndycgID0+IDMzMTg4CiAgICAgICAgXTsKCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ2RldicgICAgID0+IDAsCiAgICAgICAgICAgICdpbm8nICAgICA9PiAwLAogICAgICAgICAgICAnbW9kZScgICAgPT4gJG1vZGVNYXBbJHRoaXMtPm1vZGVdLAogICAgICAgICAgICAnbmxpbmsnICAgPT4gMCwKICAgICAgICAgICAgJ3VpZCcgICAgID0+IDAsCiAgICAgICAgICAgICdnaWQnICAgICA9PiAwLAogICAgICAgICAgICAncmRldicgICAgPT4gMCwKICAgICAgICAgICAgJ3NpemUnICAgID0+ICR0aGlzLT5zdHJlYW0tPmdldFNpemUoKSA/OiAwLAogICAgICAgICAgICAnYXRpbWUnICAgPT4gMCwKICAgICAgICAgICAgJ210aW1lJyAgID0+IDAsCiAgICAgICAgICAgICdjdGltZScgICA9PiAwLAogICAgICAgICAgICAnYmxrc2l6ZScgPT4gMCwKICAgICAgICAgICAgJ2Jsb2NrcycgID0+IDAKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UploadedFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCmNsYXNzIFVwbG9hZGVkRmlsZSBpbXBsZW1lbnRzIFVwbG9hZGVkRmlsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgaW50W10KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJGVycm9ycyA9IFsKICAgICAgICBVUExPQURfRVJSX09LLAogICAgICAgIFVQTE9BRF9FUlJfSU5JX1NJWkUsCiAgICAgICAgVVBMT0FEX0VSUl9GT1JNX1NJWkUsCiAgICAgICAgVVBMT0FEX0VSUl9QQVJUSUFMLAogICAgICAgIFVQTE9BRF9FUlJfTk9fRklMRSwKICAgICAgICBVUExPQURfRVJSX05PX1RNUF9ESVIsCiAgICAgICAgVVBMT0FEX0VSUl9DQU5UX1dSSVRFLAogICAgICAgIFVQTE9BRF9FUlJfRVhURU5TSU9OLAogICAgXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJGNsaWVudEZpbGVuYW1lOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkY2xpZW50TWVkaWFUeXBlOwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkZXJyb3I7CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJGZpbGU7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSAkbW92ZWQgPSBmYWxzZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJHNpemU7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2V8c3RyaW5nfHJlc291cmNlICRzdHJlYW1PckZpbGUKICAgICAqIEBwYXJhbSBpbnQgJHNpemUKICAgICAqIEBwYXJhbSBpbnQgJGVycm9yU3RhdHVzCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNsaWVudEZpbGVuYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNsaWVudE1lZGlhVHlwZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgJHN0cmVhbU9yRmlsZSwKICAgICAgICAkc2l6ZSwKICAgICAgICAkZXJyb3JTdGF0dXMsCiAgICAgICAgJGNsaWVudEZpbGVuYW1lID0gbnVsbCwKICAgICAgICAkY2xpZW50TWVkaWFUeXBlID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPnNldEVycm9yKCRlcnJvclN0YXR1cyk7CiAgICAgICAgJHRoaXMtPnNldFNpemUoJHNpemUpOwogICAgICAgICR0aGlzLT5zZXRDbGllbnRGaWxlbmFtZSgkY2xpZW50RmlsZW5hbWUpOwogICAgICAgICR0aGlzLT5zZXRDbGllbnRNZWRpYVR5cGUoJGNsaWVudE1lZGlhVHlwZSk7CgogICAgICAgIGlmICgkdGhpcy0+aXNPaygpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRTdHJlYW1PckZpbGUoJHN0cmVhbU9yRmlsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBzZXQgZmlsZSBvciBzdHJlYW0gdmFyaWFibGUKICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHN0cmVhbU9yRmlsZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRTdHJlYW1PckZpbGUoJHN0cmVhbU9yRmlsZSkKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRzdHJlYW1PckZpbGUpKSB7CiAgICAgICAgICAgICR0aGlzLT5maWxlID0gJHN0cmVhbU9yRmlsZTsKICAgICAgICB9IGVsc2VpZiAoaXNfcmVzb3VyY2UoJHN0cmVhbU9yRmlsZSkpIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9IG5ldyBTdHJlYW0oJHN0cmVhbU9yRmlsZSk7CiAgICAgICAgfSBlbHNlaWYgKCRzdHJlYW1PckZpbGUgaW5zdGFuY2VvZiBTdHJlYW1JbnRlcmZhY2UpIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW1PckZpbGU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdJbnZhbGlkIHN0cmVhbSBvciBmaWxlIHByb3ZpZGVkIGZvciBVcGxvYWRlZEZpbGUnCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkZXJyb3IKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0RXJyb3IoJGVycm9yKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gaXNfaW50KCRlcnJvcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdVcGxvYWQgZmlsZSBlcnJvciBzdGF0dXMgbXVzdCBiZSBhbiBpbnRlZ2VyJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlID09PSBpbl9hcnJheSgkZXJyb3IsIFVwbG9hZGVkRmlsZTo6JGVycm9ycykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdJbnZhbGlkIGVycm9yIHN0YXR1cyBmb3IgVXBsb2FkZWRGaWxlJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmVycm9yID0gJGVycm9yOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkc2l6ZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRTaXplKCRzaXplKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gaXNfaW50KCRzaXplKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ1VwbG9hZCBmaWxlIHNpemUgbXVzdCBiZSBhbiBpbnRlZ2VyJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNpemUgPSAkc2l6ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkcGFyYW0KICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzU3RyaW5nT3JOdWxsKCRwYXJhbSkKICAgIHsKICAgICAgICByZXR1cm4gaW5fYXJyYXkoZ2V0dHlwZSgkcGFyYW0pLCBbJ3N0cmluZycsICdOVUxMJ10pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRwYXJhbQogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNTdHJpbmdOb3RFbXB0eSgkcGFyYW0pCiAgICB7CiAgICAgICAgcmV0dXJuIGlzX3N0cmluZygkcGFyYW0pICYmIGZhbHNlID09PSBlbXB0eSgkcGFyYW0pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRjbGllbnRGaWxlbmFtZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRDbGllbnRGaWxlbmFtZSgkY2xpZW50RmlsZW5hbWUpCiAgICB7CiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+aXNTdHJpbmdPck51bGwoJGNsaWVudEZpbGVuYW1lKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ1VwbG9hZCBmaWxlIGNsaWVudCBmaWxlbmFtZSBtdXN0IGJlIGEgc3RyaW5nIG9yIG51bGwnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y2xpZW50RmlsZW5hbWUgPSAkY2xpZW50RmlsZW5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNsaWVudE1lZGlhVHlwZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRDbGllbnRNZWRpYVR5cGUoJGNsaWVudE1lZGlhVHlwZSkKICAgIHsKICAgICAgICBpZiAoZmFsc2UgPT09ICR0aGlzLT5pc1N0cmluZ09yTnVsbCgkY2xpZW50TWVkaWFUeXBlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ1VwbG9hZCBmaWxlIGNsaWVudCBtZWRpYSB0eXBlIG11c3QgYmUgYSBzdHJpbmcgb3IgbnVsbCcKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jbGllbnRNZWRpYVR5cGUgPSAkY2xpZW50TWVkaWFUeXBlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgbm8gdXBsb2FkIGVycm9yCiAgICAgKgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNPaygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lcnJvciA9PT0gVVBMT0FEX0VSUl9PSzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNNb3ZlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tb3ZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiBpcyBtb3ZlZCBvciBub3Qgb2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB2YWxpZGF0ZUFjdGl2ZSgpCiAgICB7CiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+aXNPaygpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3QgcmV0cmlldmUgc3RyZWFtIGR1ZSB0byB1cGxvYWQgZXJyb3InKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aXNNb3ZlZCgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3QgcmV0cmlldmUgc3RyZWFtIGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gbW92ZWQnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHVwbG9hZCB3YXMgbm90IHN1Y2Nlc3NmdWwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJlYW0oKQogICAgewogICAgICAgICR0aGlzLT52YWxpZGF0ZUFjdGl2ZSgpOwoKICAgICAgICBpZiAoJHRoaXMtPnN0cmVhbSBpbnN0YW5jZW9mIFN0cmVhbUludGVyZmFjZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgTGF6eU9wZW5TdHJlYW0oJHRoaXMtPmZpbGUsICdyKycpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvaXNfdXBsb2FkZWRfZmlsZQogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tb3ZlX3VwbG9hZGVkX2ZpbGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHRhcmdldFBhdGggUGF0aCB0byB3aGljaCB0byBtb3ZlIHRoZSB1cGxvYWRlZCBmaWxlLgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSB1cGxvYWQgd2FzIG5vdCBzdWNjZXNzZnVsLgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlICRwYXRoIHNwZWNpZmllZCBpcyBpbnZhbGlkLgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIG9uIGFueSBlcnJvciBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLCBvciBvbgogICAgICogICAgIHRoZSBzZWNvbmQgb3Igc3Vic2VxdWVudCBjYWxsIHRvIHRoZSBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVG8oJHRhcmdldFBhdGgpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbGlkYXRlQWN0aXZlKCk7CgogICAgICAgIGlmIChmYWxzZSA9PT0gJHRoaXMtPmlzU3RyaW5nTm90RW1wdHkoJHRhcmdldFBhdGgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAnSW52YWxpZCBwYXRoIHByb3ZpZGVkIGZvciBtb3ZlIG9wZXJhdGlvbjsgbXVzdCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmZpbGUpIHsKICAgICAgICAgICAgJHRoaXMtPm1vdmVkID0gcGhwX3NhcGlfbmFtZSgpID09ICdjbGknCiAgICAgICAgICAgICAgICA/IHJlbmFtZSgkdGhpcy0+ZmlsZSwgJHRhcmdldFBhdGgpCiAgICAgICAgICAgICAgICA6IG1vdmVfdXBsb2FkZWRfZmlsZSgkdGhpcy0+ZmlsZSwgJHRhcmdldFBhdGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvcHlfdG9fc3RyZWFtKAogICAgICAgICAgICAgICAgJHRoaXMtPmdldFN0cmVhbSgpLAogICAgICAgICAgICAgICAgbmV3IExhenlPcGVuU3RyZWFtKCR0YXJnZXRQYXRoLCAndycpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkdGhpcy0+bW92ZWQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+bW92ZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCdVcGxvYWRlZCBmaWxlIGNvdWxkIG5vdCBiZSBtb3ZlZCB0byAlcycsICR0YXJnZXRQYXRoKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxudWxsIFRoZSBmaWxlIHNpemUgaW4gYnl0ZXMgb3IgbnVsbCBpZiB1bmtub3duLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaXplOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2ZlYXR1cmVzLmZpbGUtdXBsb2FkLmVycm9ycy5waHAKICAgICAqIEByZXR1cm4gaW50IE9uZSBvZiBQSFAncyBVUExPQURfRVJSX1hYWCBjb25zdGFudHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFcnJvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lcnJvcjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFRoZSBmaWxlbmFtZSBzZW50IGJ5IHRoZSBjbGllbnQgb3IgbnVsbCBpZiBub25lCiAgICAgKiAgICAgd2FzIHByb3ZpZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2xpZW50RmlsZW5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2xpZW50RmlsZW5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGllbnRNZWRpYVR5cGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2xpZW50TWVkaWFUeXBlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Uri.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBQU1ItNyBVUkkgaW1wbGVtZW50YXRpb24uCiAqCiAqIEBhdXRob3IgTWljaGFlbCBEb3dsaW5nCiAqIEBhdXRob3IgVG9iaWFzIFNjaHVsdHplCiAqIEBhdXRob3IgTWF0dGhldyBXZWllciBPJ1BoaW5uZXkKICovCmNsYXNzIFVyaSBpbXBsZW1lbnRzIFVyaUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEFic29sdXRlIGh0dHAgYW5kIGh0dHBzIFVSSXMgcmVxdWlyZSBhIGhvc3QgcGVyIFJGQyA3MjMwIFNlY3Rpb24gMi43CiAgICAgKiBidXQgaW4gZ2VuZXJpYyBVUklzIHRoZSBob3N0IGNhbiBiZSBlbXB0eS4gU28gZm9yIGh0dHAocykgVVJJcwogICAgICogd2UgYXBwbHkgdGhpcyBkZWZhdWx0IGhvc3Qgd2hlbiBubyBob3N0IGlzIGdpdmVuIHlldCB0byBmb3JtIGEKICAgICAqIHZhbGlkIFVSSS4KICAgICAqLwogICAgY29uc3QgSFRUUF9ERUZBVUxUX0hPU1QgPSAnbG9jYWxob3N0JzsKCiAgICBwcml2YXRlIHN0YXRpYyAkZGVmYXVsdFBvcnRzID0gWwogICAgICAgICdodHRwJyAgPT4gODAsCiAgICAgICAgJ2h0dHBzJyA9PiA0NDMsCiAgICAgICAgJ2Z0cCcgPT4gMjEsCiAgICAgICAgJ2dvcGhlcicgPT4gNzAsCiAgICAgICAgJ25udHAnID0+IDExOSwKICAgICAgICAnbmV3cycgPT4gMTE5LAogICAgICAgICd0ZWxuZXQnID0+IDIzLAogICAgICAgICd0bjMyNzAnID0+IDIzLAogICAgICAgICdpbWFwJyA9PiAxNDMsCiAgICAgICAgJ3BvcCcgPT4gMTEwLAogICAgICAgICdsZGFwJyA9PiAzODksCiAgICBdOwoKICAgIHByaXZhdGUgc3RhdGljICRjaGFyVW5yZXNlcnZlZCA9ICdhLXpBLVowLTlfXC1cLn4nOwogICAgcHJpdmF0ZSBzdGF0aWMgJGNoYXJTdWJEZWxpbXMgPSAnIVwkJlwnXChcKVwqXCssOz0nOwogICAgcHJpdmF0ZSBzdGF0aWMgJHJlcGxhY2VRdWVyeSA9IFsnPScgPT4gJyUzRCcsICcmJyA9PiAnJTI2J107CgogICAgLyoqIEB2YXIgc3RyaW5nIFVyaSBzY2hlbWUuICovCiAgICBwcml2YXRlICRzY2hlbWUgPSAnJzsKCiAgICAvKiogQHZhciBzdHJpbmcgVXJpIHVzZXIgaW5mby4gKi8KICAgIHByaXZhdGUgJHVzZXJJbmZvID0gJyc7CgogICAgLyoqIEB2YXIgc3RyaW5nIFVyaSBob3N0LiAqLwogICAgcHJpdmF0ZSAkaG9zdCA9ICcnOwoKICAgIC8qKiBAdmFyIGludHxudWxsIFVyaSBwb3J0LiAqLwogICAgcHJpdmF0ZSAkcG9ydDsKCiAgICAvKiogQHZhciBzdHJpbmcgVXJpIHBhdGguICovCiAgICBwcml2YXRlICRwYXRoID0gJyc7CgogICAgLyoqIEB2YXIgc3RyaW5nIFVyaSBxdWVyeSBzdHJpbmcuICovCiAgICBwcml2YXRlICRxdWVyeSA9ICcnOwoKICAgIC8qKiBAdmFyIHN0cmluZyBVcmkgZnJhZ21lbnQuICovCiAgICBwcml2YXRlICRmcmFnbWVudCA9ICcnOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdXJpIFVSSSB0byBwYXJzZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHVyaSA9ICcnKQogICAgewogICAgICAgIC8vIHdlYWsgdHlwZSBjaGVjayB0byBhbHNvIGFjY2VwdCBudWxsIHVudGlsIHdlIGNhbiBhZGQgc2NhbGFyIHR5cGUgaGludHMKICAgICAgICBpZiAoJHVyaSAhPSAnJykgewogICAgICAgICAgICAkcGFydHMgPSBwYXJzZV91cmwoJHVyaSk7CiAgICAgICAgICAgIGlmICgkcGFydHMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVW5hYmxlIHRvIHBhcnNlIFVSSTogJHVyaSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5hcHBseVBhcnRzKCRwYXJ0cyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Y29tcG9zZUNvbXBvbmVudHMoCiAgICAgICAgICAgICR0aGlzLT5zY2hlbWUsCiAgICAgICAgICAgICR0aGlzLT5nZXRBdXRob3JpdHkoKSwKICAgICAgICAgICAgJHRoaXMtPnBhdGgsCiAgICAgICAgICAgICR0aGlzLT5xdWVyeSwKICAgICAgICAgICAgJHRoaXMtPmZyYWdtZW50CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBvc2VzIGEgVVJJIHJlZmVyZW5jZSBzdHJpbmcgZnJvbSBpdHMgdmFyaW91cyBjb21wb25lbnRzLgogICAgICoKICAgICAqIFVzdWFsbHkgdGhpcyBtZXRob2QgZG9lcyBub3QgbmVlZCB0byBiZSBjYWxsZWQgbWFudWFsbHkgYnV0IGluc3RlYWQgaXMgdXNlZCBpbmRpcmVjdGx5IHZpYQogICAgICogYFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOjpfX3RvU3RyaW5nYC4KICAgICAqCiAgICAgKiBQU1ItNyBVcmlJbnRlcmZhY2UgdHJlYXRzIGFuIGVtcHR5IGNvbXBvbmVudCB0aGUgc2FtZSBhcyBhIG1pc3NpbmcgY29tcG9uZW50IGFzCiAgICAgKiBnZXRRdWVyeSgpLCBnZXRGcmFnbWVudCgpIGV0Yy4gYWx3YXlzIHJldHVybiBhIHN0cmluZy4gVGhpcyBleHBsYWlucyB0aGUgc2xpZ2h0CiAgICAgKiBkaWZmZXJlbmNlIHRvIFJGQyAzOTg2IFNlY3Rpb24gNS4zLgogICAgICoKICAgICAqIEFub3RoZXIgYWRqdXN0bWVudCBpcyB0aGF0IHRoZSBhdXRob3JpdHkgc2VwYXJhdG9yIGlzIGFkZGVkIGV2ZW4gd2hlbiB0aGUgYXV0aG9yaXR5IGlzIG1pc3NpbmcvZW1wdHkKICAgICAqIGZvciB0aGUgImZpbGUiIHNjaGVtZS4gVGhpcyBpcyBiZWNhdXNlIFBIUCBzdHJlYW0gZnVuY3Rpb25zIGxpa2UgYGZpbGVfZ2V0X2NvbnRlbnRzYCBvbmx5IHdvcmsgd2l0aAogICAgICogYGZpbGU6Ly8vbXlmaWxlYCBidXQgbm90IHdpdGggYGZpbGU6L215ZmlsZWAgYWx0aG91Z2ggdGhleSBhcmUgZXF1aXZhbGVudCBhY2NvcmRpbmcgdG8gUkZDIDM5ODYuIEJ1dAogICAgICogYGZpbGU6Ly8vYCBpcyB0aGUgbW9yZSBjb21tb24gc3ludGF4IGZvciB0aGUgZmlsZSBzY2hlbWUgYW55d2F5IChDaHJvbWUgZm9yIGV4YW1wbGUgcmVkaXJlY3RzIHRvCiAgICAgKiB0aGF0IGZvcm1hdCkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc2NoZW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhdXRob3JpdHkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRmcmFnbWVudAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wb3NlQ29tcG9uZW50cygkc2NoZW1lLCAkYXV0aG9yaXR5LCAkcGF0aCwgJHF1ZXJ5LCAkZnJhZ21lbnQpCiAgICB7CiAgICAgICAgJHVyaSA9ICcnOwoKICAgICAgICAvLyB3ZWFrIHR5cGUgY2hlY2tzIHRvIGFsc28gYWNjZXB0IG51bGwgdW50aWwgd2UgY2FuIGFkZCBzY2FsYXIgdHlwZSBoaW50cwogICAgICAgIGlmICgkc2NoZW1lICE9ICcnKSB7CiAgICAgICAgICAgICR1cmkgLj0gJHNjaGVtZSAuICc6JzsKICAgICAgICB9CgogICAgICAgIGlmICgkYXV0aG9yaXR5ICE9ICcnfHwgJHNjaGVtZSA9PT0gJ2ZpbGUnKSB7CiAgICAgICAgICAgICR1cmkgLj0gJy8vJyAuICRhdXRob3JpdHk7CiAgICAgICAgfQoKICAgICAgICAkdXJpIC49ICRwYXRoOwoKICAgICAgICBpZiAoJHF1ZXJ5ICE9ICcnKSB7CiAgICAgICAgICAgICR1cmkgLj0gJz8nIC4gJHF1ZXJ5OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmcmFnbWVudCAhPSAnJykgewogICAgICAgICAgICAkdXJpIC49ICcjJyAuICRmcmFnbWVudDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgVVJJIGhhcyB0aGUgZGVmYXVsdCBwb3J0IG9mIHRoZSBjdXJyZW50IHNjaGVtZS4KICAgICAqCiAgICAgKiBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U6OmdldFBvcnRgIG1heSByZXR1cm4gbnVsbCBvciB0aGUgc3RhbmRhcmQgcG9ydC4gVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQKICAgICAqIGluZGVwZW5kZW50bHkgb2YgdGhlIGltcGxlbWVudGF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzRGVmYXVsdFBvcnQoVXJpSW50ZXJmYWNlICR1cmkpCiAgICB7CiAgICAgICAgcmV0dXJuICR1cmktPmdldFBvcnQoKSA9PT0gbnVsbAogICAgICAgICAgICB8fCAoaXNzZXQoc2VsZjo6JGRlZmF1bHRQb3J0c1skdXJpLT5nZXRTY2hlbWUoKV0pICYmICR1cmktPmdldFBvcnQoKSA9PT0gc2VsZjo6JGRlZmF1bHRQb3J0c1skdXJpLT5nZXRTY2hlbWUoKV0pOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgVVJJIGlzIGFic29sdXRlLCBpLmUuIGl0IGhhcyBhIHNjaGVtZS4KICAgICAqCiAgICAgKiBBbiBpbnN0YW5jZSBvZiBVcmlJbnRlcmZhY2UgY2FuIGVpdGhlciBiZSBhbiBhYnNvbHV0ZSBVUkkgb3IgYSByZWxhdGl2ZSByZWZlcmVuY2UuIFRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZQogICAgICogaWYgaXQgaXMgdGhlIGZvcm1lci4gQW4gYWJzb2x1dGUgVVJJIGhhcyBhIHNjaGVtZS4gQSByZWxhdGl2ZSByZWZlcmVuY2UgaXMgdXNlZCB0byBleHByZXNzIGEgVVJJIHJlbGF0aXZlCiAgICAgKiB0byBhbm90aGVyIFVSSSwgdGhlIGJhc2UgVVJJLiBSZWxhdGl2ZSByZWZlcmVuY2VzIGNhbiBiZSBkaXZpZGVkIGludG8gc2V2ZXJhbCBmb3JtczoKICAgICAqIC0gbmV0d29yay1wYXRoIHJlZmVyZW5jZXMsIGUuZy4gJy8vZXhhbXBsZS5jb20vcGF0aCcKICAgICAqIC0gYWJzb2x1dGUtcGF0aCByZWZlcmVuY2VzLCBlLmcuICcvcGF0aCcKICAgICAqIC0gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzLCBlLmcuICdzdWJwYXRoJwogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogQHNlZSBVcmk6OmlzTmV0d29ya1BhdGhSZWZlcmVuY2UKICAgICAqIEBzZWUgVXJpOjppc0Fic29sdXRlUGF0aFJlZmVyZW5jZQogICAgICogQHNlZSBVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Fic29sdXRlKFVyaUludGVyZmFjZSAkdXJpKQogICAgewogICAgICAgIHJldHVybiAkdXJpLT5nZXRTY2hlbWUoKSAhPT0gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBVUkkgaXMgYSBuZXR3b3JrLXBhdGggcmVmZXJlbmNlLgogICAgICoKICAgICAqIEEgcmVsYXRpdmUgcmVmZXJlbmNlIHRoYXQgYmVnaW5zIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgaXMgdGVybWVkIGFuIG5ldHdvcmstcGF0aCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzTmV0d29ya1BhdGhSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmkpCiAgICB7CiAgICAgICAgcmV0dXJuICR1cmktPmdldFNjaGVtZSgpID09PSAnJyAmJiAkdXJpLT5nZXRBdXRob3JpdHkoKSAhPT0gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBVUkkgaXMgYSBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGJlZ2lucyB3aXRoIGEgc2luZ2xlIHNsYXNoIGNoYXJhY3RlciBpcyB0ZXJtZWQgYW4gYWJzb2x1dGUtcGF0aCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQWJzb2x1dGVQYXRoUmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpKQogICAgewogICAgICAgIHJldHVybiAkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJycKICAgICAgICAgICAgJiYgJHVyaS0+Z2V0QXV0aG9yaXR5KCkgPT09ICcnCiAgICAgICAgICAgICYmIGlzc2V0KCR1cmktPmdldFBhdGgoKVswXSkKICAgICAgICAgICAgJiYgJHVyaS0+Z2V0UGF0aCgpWzBdID09PSAnLyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBVUkkgaXMgYSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGRvZXMgbm90IGJlZ2luIHdpdGggYSBzbGFzaCBjaGFyYWN0ZXIgaXMgdGVybWVkIGEgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpKQogICAgewogICAgICAgIHJldHVybiAkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJycKICAgICAgICAgICAgJiYgJHVyaS0+Z2V0QXV0aG9yaXR5KCkgPT09ICcnCiAgICAgICAgICAgICYmICghaXNzZXQoJHVyaS0+Z2V0UGF0aCgpWzBdKSB8fCAkdXJpLT5nZXRQYXRoKClbMF0gIT09ICcvJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBVUkkgaXMgYSBzYW1lLWRvY3VtZW50IHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBBIHNhbWUtZG9jdW1lbnQgcmVmZXJlbmNlIHJlZmVycyB0byBhIFVSSSB0aGF0IGlzLCBhc2lkZSBmcm9tIGl0cyBmcmFnbWVudAogICAgICogY29tcG9uZW50LCBpZGVudGljYWwgdG8gdGhlIGJhc2UgVVJJLiBXaGVuIG5vIGJhc2UgVVJJIGlzIGdpdmVuLCBvbmx5IGFuIGVtcHR5CiAgICAgKiBVUkkgcmVmZXJlbmNlIChhcGFydCBmcm9tIGl0cyBmcmFnbWVudCkgaXMgY29uc2lkZXJlZCBhIHNhbWUtZG9jdW1lbnQgcmVmZXJlbmNlLgogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgICAgICAkdXJpICBUaGUgVVJJIHRvIGNoZWNrCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlfG51bGwgJGJhc2UgQW4gb3B0aW9uYWwgYmFzZSBVUkkgdG8gY29tcGFyZSBhZ2FpbnN0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuNAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzU2FtZURvY3VtZW50UmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpLCBVcmlJbnRlcmZhY2UgJGJhc2UgPSBudWxsKQogICAgewogICAgICAgIGlmICgkYmFzZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkdXJpID0gVXJpUmVzb2x2ZXI6OnJlc29sdmUoJGJhc2UsICR1cmkpOwoKICAgICAgICAgICAgcmV0dXJuICgkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJGJhc2UtPmdldFNjaGVtZSgpKQogICAgICAgICAgICAgICAgJiYgKCR1cmktPmdldEF1dGhvcml0eSgpID09PSAkYmFzZS0+Z2V0QXV0aG9yaXR5KCkpCiAgICAgICAgICAgICAgICAmJiAoJHVyaS0+Z2V0UGF0aCgpID09PSAkYmFzZS0+Z2V0UGF0aCgpKQogICAgICAgICAgICAgICAgJiYgKCR1cmktPmdldFF1ZXJ5KCkgPT09ICRiYXNlLT5nZXRRdWVyeSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJycgJiYgJHVyaS0+Z2V0QXV0aG9yaXR5KCkgPT09ICcnICYmICR1cmktPmdldFBhdGgoKSA9PT0gJycgJiYgJHVyaS0+Z2V0UXVlcnkoKSA9PT0gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIGRvdCBzZWdtZW50cyBmcm9tIGEgcGF0aCBhbmQgcmV0dXJucyB0aGUgbmV3IHBhdGguCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGF0aAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxLjQuIFVzZSBVcmlSZXNvbHZlcjo6cmVtb3ZlRG90U2VnbWVudHMgaW5zdGVhZC4KICAgICAqIEBzZWUgVXJpUmVzb2x2ZXI6OnJlbW92ZURvdFNlZ21lbnRzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoJHBhdGgpCiAgICB7CiAgICAgICAgcmV0dXJuIFVyaVJlc29sdmVyOjpyZW1vdmVEb3RTZWdtZW50cygkcGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGUgcmVsYXRpdmUgVVJJIGludG8gYSBuZXcgVVJJIHRoYXQgaXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgYmFzZSBVUkkuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAgICAgICAgJGJhc2UgQmFzZSBVUkkKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICRyZWwgIFJlbGF0aXZlIFVSSQogICAgICoKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAxLjQuIFVzZSBVcmlSZXNvbHZlcjo6cmVzb2x2ZSBpbnN0ZWFkLgogICAgICogQHNlZSBVcmlSZXNvbHZlcjo6cmVzb2x2ZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmUoVXJpSW50ZXJmYWNlICRiYXNlLCAkcmVsKQogICAgewogICAgICAgIGlmICghKCRyZWwgaW5zdGFuY2VvZiBVcmlJbnRlcmZhY2UpKSB7CiAgICAgICAgICAgICRyZWwgPSBuZXcgc2VsZigkcmVsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBVcmlSZXNvbHZlcjo6cmVzb2x2ZSgkYmFzZSwgJHJlbCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IFVSSSB3aXRoIGEgc3BlY2lmaWMgcXVlcnkgc3RyaW5nIHZhbHVlIHJlbW92ZWQuCiAgICAgKgogICAgICogQW55IGV4aXN0aW5nIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgdGhhdCBleGFjdGx5IG1hdGNoIHRoZSBwcm92aWRlZCBrZXkgYXJlCiAgICAgKiByZW1vdmVkLgogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaSBVUkkgdG8gdXNlIGFzIGEgYmFzZS4KICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgJGtleSBRdWVyeSBzdHJpbmcga2V5IHRvIHJlbW92ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFVyaUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdpdGhvdXRRdWVyeVZhbHVlKFVyaUludGVyZmFjZSAkdXJpLCAka2V5KQogICAgewogICAgICAgICRjdXJyZW50ID0gJHVyaS0+Z2V0UXVlcnkoKTsKICAgICAgICBpZiAoJGN1cnJlbnQgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkdXJpOwogICAgICAgIH0KCiAgICAgICAgJGRlY29kZWRLZXkgPSByYXd1cmxkZWNvZGUoJGtleSk7CiAgICAgICAgJHJlc3VsdCA9IGFycmF5X2ZpbHRlcihleHBsb2RlKCcmJywgJGN1cnJlbnQpLCBmdW5jdGlvbiAoJHBhcnQpIHVzZSAoJGRlY29kZWRLZXkpIHsKICAgICAgICAgICAgcmV0dXJuIHJhd3VybGRlY29kZShleHBsb2RlKCc9JywgJHBhcnQpWzBdKSAhPT0gJGRlY29kZWRLZXk7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiAkdXJpLT53aXRoUXVlcnkoaW1wbG9kZSgnJicsICRyZXN1bHQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBuZXcgVVJJIHdpdGggYSBzcGVjaWZpYyBxdWVyeSBzdHJpbmcgdmFsdWUuCiAgICAgKgogICAgICogQW55IGV4aXN0aW5nIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgdGhhdCBleGFjdGx5IG1hdGNoIHRoZSBwcm92aWRlZCBrZXkgYXJlCiAgICAgKiByZW1vdmVkIGFuZCByZXBsYWNlZCB3aXRoIHRoZSBnaXZlbiBrZXkgdmFsdWUgcGFpci4KICAgICAqCiAgICAgKiBBIHZhbHVlIG9mIG51bGwgd2lsbCBzZXQgdGhlIHF1ZXJ5IHN0cmluZyBrZXkgd2l0aG91dCBhIHZhbHVlLCBlLmcuICJrZXkiCiAgICAgKiBpbnN0ZWFkIG9mICJrZXk9dmFsdWUiLgogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaSAgIFVSSSB0byB1c2UgYXMgYSBiYXNlLgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAka2V5ICAgS2V5IHRvIHNldC4KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgJHZhbHVlIFZhbHVlIHRvIHNldAogICAgICoKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd2l0aFF1ZXJ5VmFsdWUoVXJpSW50ZXJmYWNlICR1cmksICRrZXksICR2YWx1ZSkKICAgIHsKICAgICAgICAkY3VycmVudCA9ICR1cmktPmdldFF1ZXJ5KCk7CgogICAgICAgIGlmICgkY3VycmVudCA9PT0gJycpIHsKICAgICAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkZWNvZGVkS2V5ID0gcmF3dXJsZGVjb2RlKCRrZXkpOwogICAgICAgICAgICAkcmVzdWx0ID0gYXJyYXlfZmlsdGVyKGV4cGxvZGUoJyYnLCAkY3VycmVudCksIGZ1bmN0aW9uICgkcGFydCkgdXNlICgkZGVjb2RlZEtleSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHJhd3VybGRlY29kZShleHBsb2RlKCc9JywgJHBhcnQpWzBdKSAhPT0gJGRlY29kZWRLZXk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgLy8gUXVlcnkgc3RyaW5nIHNlcGFyYXRvcnMgKCI9IiwgIiYiKSB3aXRoaW4gdGhlIGtleSBvciB2YWx1ZSBuZWVkIHRvIGJlIGVuY29kZWQKICAgICAgICAvLyAod2hpbGUgcHJldmVudGluZyBkb3VibGUtZW5jb2RpbmcpIGJlZm9yZSBzZXR0aW5nIHRoZSBxdWVyeSBzdHJpbmcuIEFsbCBvdGhlcgogICAgICAgIC8vIGNoYXJzIHRoYXQgbmVlZCBwZXJjZW50LWVuY29kaW5nIHdpbGwgYmUgZW5jb2RlZCBieSB3aXRoUXVlcnkoKS4KICAgICAgICAka2V5ID0gc3RydHIoJGtleSwgc2VsZjo6JHJlcGxhY2VRdWVyeSk7CgogICAgICAgIGlmICgkdmFsdWUgIT09IG51bGwpIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJGtleSAuICc9JyAuIHN0cnRyKCR2YWx1ZSwgc2VsZjo6JHJlcGxhY2VRdWVyeSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gJGtleTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpLT53aXRoUXVlcnkoaW1wbG9kZSgnJicsICRyZXN1bHQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBVUkkgZnJvbSBhIGhhc2ggb2YgYHBhcnNlX3VybGAgY29tcG9uZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcnRzCiAgICAgKgogICAgICogQHJldHVybiBVcmlJbnRlcmZhY2UKICAgICAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5wYXJzZS11cmwucGhwCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBjb21wb25lbnRzIGRvIG5vdCBmb3JtIGEgdmFsaWQgVVJJLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21QYXJ0cyhhcnJheSAkcGFydHMpCiAgICB7CiAgICAgICAgJHVyaSA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHVyaS0+YXBwbHlQYXJ0cygkcGFydHMpOwogICAgICAgICR1cmktPnZhbGlkYXRlU3RhdGUoKTsKCiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNjaGVtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zY2hlbWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGhvcml0eSgpCiAgICB7CiAgICAgICAgJGF1dGhvcml0eSA9ICR0aGlzLT5ob3N0OwogICAgICAgIGlmICgkdGhpcy0+dXNlckluZm8gIT09ICcnKSB7CiAgICAgICAgICAgICRhdXRob3JpdHkgPSAkdGhpcy0+dXNlckluZm8gLiAnQCcgLiAkYXV0aG9yaXR5OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5wb3J0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICRhdXRob3JpdHkgLj0gJzonIC4gJHRoaXMtPnBvcnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGF1dGhvcml0eTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlckluZm8oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXNlckluZm87CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEhvc3QoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aG9zdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG9ydCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wb3J0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXRoKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBhdGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJ5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnF1ZXJ5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFnbWVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mcmFnbWVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNjaGVtZSgkc2NoZW1lKQogICAgewogICAgICAgICRzY2hlbWUgPSAkdGhpcy0+ZmlsdGVyU2NoZW1lKCRzY2hlbWUpOwoKICAgICAgICBpZiAoJHRoaXMtPnNjaGVtZSA9PT0gJHNjaGVtZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+c2NoZW1lID0gJHNjaGVtZTsKICAgICAgICAkbmV3LT5yZW1vdmVEZWZhdWx0UG9ydCgpOwogICAgICAgICRuZXctPnZhbGlkYXRlU3RhdGUoKTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbygkdXNlciwgJHBhc3N3b3JkID0gbnVsbCkKICAgIHsKICAgICAgICAkaW5mbyA9ICR1c2VyOwogICAgICAgIGlmICgkcGFzc3dvcmQgIT0gJycpIHsKICAgICAgICAgICAgJGluZm8gLj0gJzonIC4gJHBhc3N3b3JkOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT51c2VySW5mbyA9PT0gJGluZm8pIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnVzZXJJbmZvID0gJGluZm87CiAgICAgICAgJG5ldy0+dmFsaWRhdGVTdGF0ZSgpOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhvc3QoJGhvc3QpCiAgICB7CiAgICAgICAgJGhvc3QgPSAkdGhpcy0+ZmlsdGVySG9zdCgkaG9zdCk7CgogICAgICAgIGlmICgkdGhpcy0+aG9zdCA9PT0gJGhvc3QpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPmhvc3QgPSAkaG9zdDsKICAgICAgICAkbmV3LT52YWxpZGF0ZVN0YXRlKCk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUG9ydCgkcG9ydCkKICAgIHsKICAgICAgICAkcG9ydCA9ICR0aGlzLT5maWx0ZXJQb3J0KCRwb3J0KTsKCiAgICAgICAgaWYgKCR0aGlzLT5wb3J0ID09PSAkcG9ydCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cG9ydCA9ICRwb3J0OwogICAgICAgICRuZXctPnJlbW92ZURlZmF1bHRQb3J0KCk7CiAgICAgICAgJG5ldy0+dmFsaWRhdGVTdGF0ZSgpOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhdGgoJHBhdGgpCiAgICB7CiAgICAgICAgJHBhdGggPSAkdGhpcy0+ZmlsdGVyUGF0aCgkcGF0aCk7CgogICAgICAgIGlmICgkdGhpcy0+cGF0aCA9PT0gJHBhdGgpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnBhdGggPSAkcGF0aDsKICAgICAgICAkbmV3LT52YWxpZGF0ZVN0YXRlKCk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUXVlcnkoJHF1ZXJ5KQogICAgewogICAgICAgICRxdWVyeSA9ICR0aGlzLT5maWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRxdWVyeSk7CgogICAgICAgIGlmICgkdGhpcy0+cXVlcnkgPT09ICRxdWVyeSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cXVlcnkgPSAkcXVlcnk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoRnJhZ21lbnQoJGZyYWdtZW50KQogICAgewogICAgICAgICRmcmFnbWVudCA9ICR0aGlzLT5maWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRmcmFnbWVudCk7CgogICAgICAgIGlmICgkdGhpcy0+ZnJhZ21lbnQgPT09ICRmcmFnbWVudCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+ZnJhZ21lbnQgPSAkZnJhZ21lbnQ7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICogQXBwbHkgcGFyc2VfdXJsIHBhcnRzIHRvIGEgVVJJLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkcGFydHMgQXJyYXkgb2YgcGFyc2VfdXJsIHBhcnRzIHRvIGFwcGx5LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5UGFydHMoYXJyYXkgJHBhcnRzKQogICAgewogICAgICAgICR0aGlzLT5zY2hlbWUgPSBpc3NldCgkcGFydHNbJ3NjaGVtZSddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJTY2hlbWUoJHBhcnRzWydzY2hlbWUnXSkKICAgICAgICAgICAgOiAnJzsKICAgICAgICAkdGhpcy0+dXNlckluZm8gPSBpc3NldCgkcGFydHNbJ3VzZXInXSkgPyAkcGFydHNbJ3VzZXInXSA6ICcnOwogICAgICAgICR0aGlzLT5ob3N0ID0gaXNzZXQoJHBhcnRzWydob3N0J10pCiAgICAgICAgICAgID8gJHRoaXMtPmZpbHRlckhvc3QoJHBhcnRzWydob3N0J10pCiAgICAgICAgICAgIDogJyc7CiAgICAgICAgJHRoaXMtPnBvcnQgPSBpc3NldCgkcGFydHNbJ3BvcnQnXSkKICAgICAgICAgICAgPyAkdGhpcy0+ZmlsdGVyUG9ydCgkcGFydHNbJ3BvcnQnXSkKICAgICAgICAgICAgOiBudWxsOwogICAgICAgICR0aGlzLT5wYXRoID0gaXNzZXQoJHBhcnRzWydwYXRoJ10pCiAgICAgICAgICAgID8gJHRoaXMtPmZpbHRlclBhdGgoJHBhcnRzWydwYXRoJ10pCiAgICAgICAgICAgIDogJyc7CiAgICAgICAgJHRoaXMtPnF1ZXJ5ID0gaXNzZXQoJHBhcnRzWydxdWVyeSddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRwYXJ0c1sncXVlcnknXSkKICAgICAgICAgICAgOiAnJzsKICAgICAgICAkdGhpcy0+ZnJhZ21lbnQgPSBpc3NldCgkcGFydHNbJ2ZyYWdtZW50J10pCiAgICAgICAgICAgID8gJHRoaXMtPmZpbHRlclF1ZXJ5QW5kRnJhZ21lbnQoJHBhcnRzWydmcmFnbWVudCddKQogICAgICAgICAgICA6ICcnOwogICAgICAgIGlmIChpc3NldCgkcGFydHNbJ3Bhc3MnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnVzZXJJbmZvIC49ICc6JyAuICRwYXJ0c1sncGFzcyddOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnJlbW92ZURlZmF1bHRQb3J0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzY2hlbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgc2NoZW1lIGlzIGludmFsaWQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmlsdGVyU2NoZW1lKCRzY2hlbWUpCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHNjaGVtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1NjaGVtZSBtdXN0IGJlIGEgc3RyaW5nJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RydG9sb3dlcigkc2NoZW1lKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGhvc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgaG9zdCBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlckhvc3QoJGhvc3QpCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGhvc3QpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdIb3N0IG11c3QgYmUgYSBzdHJpbmcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdHJ0b2xvd2VyKCRob3N0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnR8bnVsbCAkcG9ydAogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIHBvcnQgaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJQb3J0KCRwb3J0KQogICAgewogICAgICAgIGlmICgkcG9ydCA9PT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRwb3J0ID0gKGludCkgJHBvcnQ7CiAgICAgICAgaWYgKDEgPiAkcG9ydCB8fCAweGZmZmYgPCAkcG9ydCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIHNwcmludGYoJ0ludmFsaWQgcG9ydDogJWQuIE11c3QgYmUgYmV0d2VlbiAxIGFuZCA2NTUzNScsICRwb3J0KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwb3J0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmVtb3ZlRGVmYXVsdFBvcnQoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+cG9ydCAhPT0gbnVsbCAmJiBzZWxmOjppc0RlZmF1bHRQb3J0KCR0aGlzKSkgewogICAgICAgICAgICAkdGhpcy0+cG9ydCA9IG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRmlsdGVycyB0aGUgcGF0aCBvZiBhIFVSSQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgcGF0aCBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlclBhdGgoJHBhdGgpCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHBhdGgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdQYXRoIG11c3QgYmUgYSBzdHJpbmcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcvKD86W14nIC4gc2VsZjo6JGNoYXJVbnJlc2VydmVkIC4gc2VsZjo6JGNoYXJTdWJEZWxpbXMgLiAnJTpAXC9dKyt8JSg/IVtBLUZhLWYwLTldezJ9KSkvJywKICAgICAgICAgICAgWyR0aGlzLCAncmF3dXJsZW5jb2RlTWF0Y2haZXJvJ10sCiAgICAgICAgICAgICRwYXRoCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlcnMgdGhlIHF1ZXJ5IHN0cmluZyBvciBmcmFnbWVudCBvZiBhIFVSSS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgcXVlcnkgb3IgZnJhZ21lbnQgaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRzdHIpCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHN0cikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1F1ZXJ5IGFuZCBmcmFnbWVudCBtdXN0IGJlIGEgc3RyaW5nJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKAogICAgICAgICAgICAnLyg/OlteJyAuIHNlbGY6OiRjaGFyVW5yZXNlcnZlZCAuIHNlbGY6OiRjaGFyU3ViRGVsaW1zIC4gJyU6QFwvXD9dKyt8JSg/IVtBLUZhLWYwLTldezJ9KSkvJywKICAgICAgICAgICAgWyR0aGlzLCAncmF3dXJsZW5jb2RlTWF0Y2haZXJvJ10sCiAgICAgICAgICAgICRzdHIKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmF3dXJsZW5jb2RlTWF0Y2haZXJvKGFycmF5ICRtYXRjaCkKICAgIHsKICAgICAgICByZXR1cm4gcmF3dXJsZW5jb2RlKCRtYXRjaFswXSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB2YWxpZGF0ZVN0YXRlKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmhvc3QgPT09ICcnICYmICgkdGhpcy0+c2NoZW1lID09PSAnaHR0cCcgfHwgJHRoaXMtPnNjaGVtZSA9PT0gJ2h0dHBzJykpIHsKICAgICAgICAgICAgJHRoaXMtPmhvc3QgPSBzZWxmOjpIVFRQX0RFRkFVTFRfSE9TVDsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+Z2V0QXV0aG9yaXR5KCkgPT09ICcnKSB7CiAgICAgICAgICAgIGlmICgwID09PSBzdHJwb3MoJHRoaXMtPnBhdGgsICcvLycpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIHBhdGggb2YgYSBVUkkgd2l0aG91dCBhbiBhdXRob3JpdHkgbXVzdCBub3Qgc3RhcnQgd2l0aCB0d28gc2xhc2hlcyAiLy8iJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCR0aGlzLT5zY2hlbWUgPT09ICcnICYmIGZhbHNlICE9PSBzdHJwb3MoZXhwbG9kZSgnLycsICR0aGlzLT5wYXRoLCAyKVswXSwgJzonKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0EgcmVsYXRpdmUgVVJJIG11c3Qgbm90IGhhdmUgYSBwYXRoIGJlZ2lubmluZyB3aXRoIGEgc2VnbWVudCBjb250YWluaW5nIGEgY29sb24nKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChpc3NldCgkdGhpcy0+cGF0aFswXSkgJiYgJHRoaXMtPnBhdGhbMF0gIT09ICcvJykgewogICAgICAgICAgICBAdHJpZ2dlcl9lcnJvcigKICAgICAgICAgICAgICAgICdUaGUgcGF0aCBvZiBhIFVSSSB3aXRoIGFuIGF1dGhvcml0eSBtdXN0IHN0YXJ0IHdpdGggYSBzbGFzaCAiLyIgb3IgYmUgZW1wdHkuIEF1dG9tYWdpY2FsbHkgZml4aW5nIHRoZSBVUkkgJyAuCiAgICAgICAgICAgICAgICAnYnkgYWRkaW5nIGEgbGVhZGluZyBzbGFzaCB0byB0aGUgcGF0aCBpcyBkZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMS40IGFuZCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpbnN0ZWFkLicsCiAgICAgICAgICAgICAgICBFX1VTRVJfREVQUkVDQVRFRAogICAgICAgICAgICApOwogICAgICAgICAgICAkdGhpcy0+cGF0aCA9ICcvJy4gJHRoaXMtPnBhdGg7CiAgICAgICAgICAgIC8vdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBwYXRoIG9mIGEgVVJJIHdpdGggYW4gYXV0aG9yaXR5IG11c3Qgc3RhcnQgd2l0aCBhIHNsYXNoICIvIiBvciBiZSBlbXB0eScpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriNormalizer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBtZXRob2RzIHRvIG5vcm1hbGl6ZSBhbmQgY29tcGFyZSBVUklzLgogKgogKiBAYXV0aG9yIFRvYmlhcyBTY2h1bHR6ZQogKgogKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTYKICovCmZpbmFsIGNsYXNzIFVyaU5vcm1hbGl6ZXIKewogICAgLyoqCiAgICAgKiBEZWZhdWx0IG5vcm1hbGl6YXRpb25zIHdoaWNoIG9ubHkgaW5jbHVkZSB0aGUgb25lcyB0aGF0IHByZXNlcnZlIHNlbWFudGljcy4KICAgICAqCiAgICAgKiBzZWxmOjpDQVBJVEFMSVpFX1BFUkNFTlRfRU5DT0RJTkcgfCBzZWxmOjpERUNPREVfVU5SRVNFUlZFRF9DSEFSQUNURVJTIHwgc2VsZjo6Q09OVkVSVF9FTVBUWV9QQVRIIHwKICAgICAqIHNlbGY6OlJFTU9WRV9ERUZBVUxUX0hPU1QgfCBzZWxmOjpSRU1PVkVfREVGQVVMVF9QT1JUIHwgc2VsZjo6UkVNT1ZFX0RPVF9TRUdNRU5UUwogICAgICovCiAgICBjb25zdCBQUkVTRVJWSU5HX05PUk1BTElaQVRJT05TID0gNjM7CgogICAgLyoqCiAgICAgKiBBbGwgbGV0dGVycyB3aXRoaW4gYSBwZXJjZW50LWVuY29kaW5nIHRyaXBsZXQgKGUuZy4sICIlM0EiKSBhcmUgY2FzZS1pbnNlbnNpdGl2ZSwgYW5kIHNob3VsZCBiZSBjYXBpdGFsaXplZC4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcvYSVjMiViMWIg4oaSIGh0dHA6Ly9leGFtcGxlLm9yZy9hJUMyJUIxYgogICAgICovCiAgICBjb25zdCBDQVBJVEFMSVpFX1BFUkNFTlRfRU5DT0RJTkcgPSAxOwoKICAgIC8qKgogICAgICogRGVjb2RlcyBwZXJjZW50LWVuY29kZWQgb2N0ZXRzIG9mIHVucmVzZXJ2ZWQgY2hhcmFjdGVycy4KICAgICAqCiAgICAgKiBGb3IgY29uc2lzdGVuY3ksIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgaW4gdGhlIHJhbmdlcyBvZiBBTFBIQSAoJTQx4oCTJTVBIGFuZCAlNjHigJMlN0EpLCBESUdJVCAoJTMw4oCTJTM5KSwKICAgICAqIGh5cGhlbiAoJTJEKSwgcGVyaW9kICglMkUpLCB1bmRlcnNjb3JlICglNUYpLCBvciB0aWxkZSAoJTdFKSBzaG91bGQgbm90IGJlIGNyZWF0ZWQgYnkgVVJJIHByb2R1Y2VycyBhbmQsCiAgICAgKiB3aGVuIGZvdW5kIGluIGEgVVJJLCBzaG91bGQgYmUgZGVjb2RlZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIHVucmVzZXJ2ZWQgY2hhcmFjdGVycyBieSBVUkkgbm9ybWFsaXplcnMuCiAgICAgKgogICAgICogRXhhbXBsZTogaHR0cDovL2V4YW1wbGUub3JnLyU3RXVzZXJuJTYxbWUvIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvfnVzZXJuYW1lLwogICAgICovCiAgICBjb25zdCBERUNPREVfVU5SRVNFUlZFRF9DSEFSQUNURVJTID0gMjsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBlbXB0eSBwYXRoIHRvICIvIiBmb3IgaHR0cCBhbmQgaHR0cHMgVVJJcy4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcg4oaSIGh0dHA6Ly9leGFtcGxlLm9yZy8KICAgICAqLwogICAgY29uc3QgQ09OVkVSVF9FTVBUWV9QQVRIID0gNDsKCiAgICAvKioKICAgICAqIFJlbW92ZXMgdGhlIGRlZmF1bHQgaG9zdCBvZiB0aGUgZ2l2ZW4gVVJJIHNjaGVtZSBmcm9tIHRoZSBVUkkuCiAgICAgKgogICAgICogT25seSB0aGUgImZpbGUiIHNjaGVtZSBkZWZpbmVzIHRoZSBkZWZhdWx0IGhvc3QgImxvY2FsaG9zdCIuCiAgICAgKiBBbGwgb2YgYGZpbGU6L215ZmlsZWAsIGBmaWxlOi8vL215ZmlsZWAsIGFuZCBgZmlsZTovL2xvY2FsaG9zdC9teWZpbGVgCiAgICAgKiBhcmUgZXF1aXZhbGVudCBhY2NvcmRpbmcgdG8gUkZDIDM5ODYuIFRoZSBmaXJzdCBmb3JtYXQgaXMgbm90IGFjY2VwdGVkCiAgICAgKiBieSBQSFBzIHN0cmVhbSBmdW5jdGlvbnMgYW5kIHRodXMgYWxyZWFkeSBub3JtYWxpemVkIGltcGxpY2l0bHkgdG8gdGhlCiAgICAgKiBzZWNvbmQgZm9ybWF0IGluIHRoZSBVcmkgY2xhc3MuIFNlZSBgR3V6emxlSHR0cFxQc3I3XFVyaTo6Y29tcG9zZUNvbXBvbmVudHNgLgogICAgICoKICAgICAqIEV4YW1wbGU6IGZpbGU6Ly9sb2NhbGhvc3QvbXlmaWxlIOKGkiBmaWxlOi8vL215ZmlsZQogICAgICovCiAgICBjb25zdCBSRU1PVkVfREVGQVVMVF9IT1NUID0gODsKCiAgICAvKioKICAgICAqIFJlbW92ZXMgdGhlIGRlZmF1bHQgcG9ydCBvZiB0aGUgZ2l2ZW4gVVJJIHNjaGVtZSBmcm9tIHRoZSBVUkkuCiAgICAgKgogICAgICogRXhhbXBsZTogaHR0cDovL2V4YW1wbGUub3JnOjgwLyDihpIgaHR0cDovL2V4YW1wbGUub3JnLwogICAgICovCiAgICBjb25zdCBSRU1PVkVfREVGQVVMVF9QT1JUID0gMTY7CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIHVubmVjZXNzYXJ5IGRvdC1zZWdtZW50cy4KICAgICAqCiAgICAgKiBEb3Qtc2VnbWVudHMgaW4gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzIGFyZSBub3QgcmVtb3ZlZCBhcyBpdCB3b3VsZAogICAgICogY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogRXhhbXBsZTogaHR0cDovL2V4YW1wbGUub3JnLy4uL2EvYi8uLi9jLy4vZC5odG1sIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvYS9jL2QuaHRtbAogICAgICovCiAgICBjb25zdCBSRU1PVkVfRE9UX1NFR01FTlRTID0gMzI7CgogICAgLyoqCiAgICAgKiBQYXRocyB3aGljaCBpbmNsdWRlIHR3byBvciBtb3JlIGFkamFjZW50IHNsYXNoZXMgYXJlIGNvbnZlcnRlZCB0byBvbmUuCiAgICAgKgogICAgICogV2Vic2VydmVycyB1c3VhbGx5IGlnbm9yZSBkdXBsaWNhdGUgc2xhc2hlcyBhbmQgdHJlYXQgdGhvc2UgVVJJcyBlcXVpdmFsZW50LgogICAgICogQnV0IGluIHRoZW9yeSB0aG9zZSBVUklzIGRvIG5vdCBuZWVkIHRvIGJlIGVxdWl2YWxlbnQuIFNvIHRoaXMgbm9ybWFsaXphdGlvbgogICAgICogbWF5IGNoYW5nZSB0aGUgc2VtYW50aWNzLiBFbmNvZGVkIHNsYXNoZXMgKCUyRikgYXJlIG5vdCByZW1vdmVkLgogICAgICoKICAgICAqIEV4YW1wbGU6IGh0dHA6Ly9leGFtcGxlLm9yZy8vZm9vLy8vYmFyLmh0bWwg4oaSIGh0dHA6Ly9leGFtcGxlLm9yZy9mb28vYmFyLmh0bWwKICAgICAqLwogICAgY29uc3QgUkVNT1ZFX0RVUExJQ0FURV9TTEFTSEVTID0gNjQ7CgogICAgLyoqCiAgICAgKiBTb3J0IHF1ZXJ5IHBhcmFtZXRlcnMgd2l0aCB0aGVpciB2YWx1ZXMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyLgogICAgICoKICAgICAqIEhvd2V2ZXIsIHRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGluIGEgVVJJIG1heSBiZSBzaWduaWZpY2FudCAodGhpcyBpcyBub3QgZGVmaW5lZCBieSB0aGUgc3RhbmRhcmQpLgogICAgICogU28gdGhpcyBub3JtYWxpemF0aW9uIGlzIG5vdCBzYWZlIGFuZCBtYXkgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBFeGFtcGxlOiA/bGFuZz1lbiZhcnRpY2xlPWZyZWQg4oaSID9hcnRpY2xlPWZyZWQmbGFuZz1lbgogICAgICoKICAgICAqIE5vdGU6IFRoZSBzb3J0aW5nIGlzIG5laXRoZXIgbG9jYWxlIG5vciBVbmljb2RlIGF3YXJlICh0aGUgVVJJIHF1ZXJ5IGRvZXMgbm90IGdldCBkZWNvZGVkIGF0IGFsbCkgYXMgdGhlCiAgICAgKiBwdXJwb3NlIGlzIHRvIGJlIGFibGUgdG8gY29tcGFyZSBVUklzIGluIGEgcmVwcm9kdWNpYmxlIHdheSwgbm90IHRvIGhhdmUgdGhlIHBhcmFtcyBzb3J0ZWQgcGVyZmVjdGx5LgogICAgICovCiAgICBjb25zdCBTT1JUX1FVRVJZX1BBUkFNRVRFUlMgPSAxMjg7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbm9ybWFsaXplZCBVUkkuCiAgICAgKgogICAgICogVGhlIHNjaGVtZSBhbmQgaG9zdCBjb21wb25lbnQgYXJlIGFscmVhZHkgbm9ybWFsaXplZCB0byBsb3dlcmNhc2UgcGVyIFBTUi03IFVyaUludGVyZmFjZS4KICAgICAqIFRoaXMgbWV0aG9kcyBhZGRzIGFkZGl0aW9uYWwgbm9ybWFsaXphdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSAkZmxhZ3MgcGFyYW1ldGVyLgogICAgICoKICAgICAqIFBTUi03IFVyaUludGVyZmFjZSBjYW5ub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBjb21wb25lbnQgYW5kIGEgbWlzc2luZyBjb21wb25lbnQgYXMKICAgICAqIGdldFF1ZXJ5KCksIGdldEZyYWdtZW50KCkgZXRjLiBhbHdheXMgcmV0dXJuIGEgc3RyaW5nLiBUaGlzIG1lYW5zIHRoZSBVUklzICIvPyMiIGFuZCAiLyIgYXJlCiAgICAgKiB0cmVhdGVkIGVxdWl2YWxlbnQgd2hpY2ggaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgYWNjb3JkaW5nIHRvIFJGQyAzOTg2LiBCdXQgdGhhdCBkaWZmZXJlbmNlCiAgICAgKiBpcyBoaWdobHkgdW5jb21tb24gaW4gcmVhbGl0eS4gU28gdGhpcyBwb3RlbnRpYWwgbm9ybWFsaXphdGlvbiBpcyBpbXBsaWVkIGluIFBTUi03IGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpICAgVGhlIFVSSSB0byBub3JtYWxpemUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgJGZsYWdzIEEgYml0bWFzayBvZiBub3JtYWxpemF0aW9ucyB0byBhcHBseSwgc2VlIGNvbnN0YW50cwogICAgICoKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlIFRoZSBub3JtYWxpemVkIFVSSQogICAgICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi02LjIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoVXJpSW50ZXJmYWNlICR1cmksICRmbGFncyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpCiAgICB7CiAgICAgICAgaWYgKCRmbGFncyAmIHNlbGY6OkNBUElUQUxJWkVfUEVSQ0VOVF9FTkNPRElORykgewogICAgICAgICAgICAkdXJpID0gc2VsZjo6Y2FwaXRhbGl6ZVBlcmNlbnRFbmNvZGluZygkdXJpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpERUNPREVfVU5SRVNFUlZFRF9DSEFSQUNURVJTKSB7CiAgICAgICAgICAgICR1cmkgPSBzZWxmOjpkZWNvZGVVbnJlc2VydmVkQ2hhcmFjdGVycygkdXJpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpDT05WRVJUX0VNUFRZX1BBVEggJiYgJHVyaS0+Z2V0UGF0aCgpID09PSAnJyAmJgogICAgICAgICAgICAoJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICdodHRwJyB8fCAkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJ2h0dHBzJykKICAgICAgICApIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQYXRoKCcvJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6UkVNT1ZFX0RFRkFVTFRfSE9TVCAmJiAkdXJpLT5nZXRTY2hlbWUoKSA9PT0gJ2ZpbGUnICYmICR1cmktPmdldEhvc3QoKSA9PT0gJ2xvY2FsaG9zdCcpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhIb3N0KCcnKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpSRU1PVkVfREVGQVVMVF9QT1JUICYmICR1cmktPmdldFBvcnQoKSAhPT0gbnVsbCAmJiBVcmk6OmlzRGVmYXVsdFBvcnQoJHVyaSkpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQb3J0KG51bGwpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmbGFncyAmIHNlbGY6OlJFTU9WRV9ET1RfU0VHTUVOVFMgJiYgIVVyaTo6aXNSZWxhdGl2ZVBhdGhSZWZlcmVuY2UoJHVyaSkpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQYXRoKFVyaVJlc29sdmVyOjpyZW1vdmVEb3RTZWdtZW50cygkdXJpLT5nZXRQYXRoKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpSRU1PVkVfRFVQTElDQVRFX1NMQVNIRVMpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQYXRoKHByZWdfcmVwbGFjZSgnIy8vKysjJywgJy8nLCAkdXJpLT5nZXRQYXRoKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpTT1JUX1FVRVJZX1BBUkFNRVRFUlMgJiYgJHVyaS0+Z2V0UXVlcnkoKSAhPT0gJycpIHsKICAgICAgICAgICAgJHF1ZXJ5S2V5VmFsdWVzID0gZXhwbG9kZSgnJicsICR1cmktPmdldFF1ZXJ5KCkpOwogICAgICAgICAgICBzb3J0KCRxdWVyeUtleVZhbHVlcyk7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUXVlcnkoaW1wbG9kZSgnJicsICRxdWVyeUtleVZhbHVlcykpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHR3byBVUklzIGNhbiBiZSBjb25zaWRlcmVkIGVxdWl2YWxlbnQuCiAgICAgKgogICAgICogQm90aCBVUklzIGFyZSBub3JtYWxpemVkIGF1dG9tYXRpY2FsbHkgYmVmb3JlIGNvbXBhcmlzb24gd2l0aCB0aGUgZ2l2ZW4gJG5vcm1hbGl6YXRpb25zIGJpdG1hc2suIFRoZSBtZXRob2QgYWxzbwogICAgICogYWNjZXB0cyByZWxhdGl2ZSBVUkkgcmVmZXJlbmNlcyBhbmQgcmV0dXJucyB0cnVlIHdoZW4gdGhleSBhcmUgZXF1aXZhbGVudC4gVGhpcyBvZiBjb3Vyc2UgYXNzdW1lcyB0aGV5IHdpbGwgYmUKICAgICAqIHJlc29sdmVkIGFnYWluc3QgdGhlIHNhbWUgYmFzZSBVUkkuIElmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBkZXRlcm1pbmF0aW9uIG9mIGVxdWl2YWxlbmNlIG9yIGRpZmZlcmVuY2Ugb2YKICAgICAqIHJlbGF0aXZlIHJlZmVyZW5jZXMgZG9lcyBub3QgbWVhbiBhbnl0aGluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlICR1cmkxICAgICAgICAgICBBbiBVUkkgdG8gY29tcGFyZQogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpMiAgICAgICAgICAgQW4gVVJJIHRvIGNvbXBhcmUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgJG5vcm1hbGl6YXRpb25zIEEgYml0bWFzayBvZiBub3JtYWxpemF0aW9ucyB0byBhcHBseSwgc2VlIGNvbnN0YW50cwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi02LjEKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0VxdWl2YWxlbnQoVXJpSW50ZXJmYWNlICR1cmkxLCBVcmlJbnRlcmZhY2UgJHVyaTIsICRub3JtYWxpemF0aW9ucyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpCiAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpIHNlbGY6Om5vcm1hbGl6ZSgkdXJpMSwgJG5vcm1hbGl6YXRpb25zKSA9PT0gKHN0cmluZykgc2VsZjo6bm9ybWFsaXplKCR1cmkyLCAkbm9ybWFsaXphdGlvbnMpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNhcGl0YWxpemVQZXJjZW50RW5jb2RpbmcoVXJpSW50ZXJmYWNlICR1cmkpCiAgICB7CiAgICAgICAgJHJlZ2V4ID0gJy8oPzolW0EtRmEtZjAtOV17Mn0pKysvJzsKCiAgICAgICAgJGNhbGxiYWNrID0gZnVuY3Rpb24gKGFycmF5ICRtYXRjaCkgewogICAgICAgICAgICByZXR1cm4gc3RydG91cHBlcigkbWF0Y2hbMF0pOwogICAgICAgIH07CgogICAgICAgIHJldHVybgogICAgICAgICAgICAkdXJpLT53aXRoUGF0aCgKICAgICAgICAgICAgICAgIHByZWdfcmVwbGFjZV9jYWxsYmFjaygkcmVnZXgsICRjYWxsYmFjaywgJHVyaS0+Z2V0UGF0aCgpKQogICAgICAgICAgICApLT53aXRoUXVlcnkoCiAgICAgICAgICAgICAgICBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHJlZ2V4LCAkY2FsbGJhY2ssICR1cmktPmdldFF1ZXJ5KCkpCiAgICAgICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlVW5yZXNlcnZlZENoYXJhY3RlcnMoVXJpSW50ZXJmYWNlICR1cmkpCiAgICB7CiAgICAgICAgJHJlZ2V4ID0gJy8lKD86MkR8MkV8NUZ8N0V8M1swLTldfFs0Nl1bMS05QS1GXXxbNTddWzAtOUFdKS9pJzsKCiAgICAgICAgJGNhbGxiYWNrID0gZnVuY3Rpb24gKGFycmF5ICRtYXRjaCkgewogICAgICAgICAgICByZXR1cm4gcmF3dXJsZGVjb2RlKCRtYXRjaFswXSk7CiAgICAgICAgfTsKCiAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICR1cmktPndpdGhQYXRoKAogICAgICAgICAgICAgICAgcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRyZWdleCwgJGNhbGxiYWNrLCAkdXJpLT5nZXRQYXRoKCkpCiAgICAgICAgICAgICktPndpdGhRdWVyeSgKICAgICAgICAgICAgICAgIHByZWdfcmVwbGFjZV9jYWxsYmFjaygkcmVnZXgsICRjYWxsYmFjaywgJHVyaS0+Z2V0UXVlcnkoKSkKICAgICAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAvLyBjYW5ub3QgYmUgaW5zdGFudGlhdGVkCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriResolver.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBSZXNvbHZlcyBhIFVSSSByZWZlcmVuY2UgaW4gdGhlIGNvbnRleHQgb2YgYSBiYXNlIFVSSSBhbmQgdGhlIG9wcG9zaXRlIHdheS4KICoKICogQGF1dGhvciBUb2JpYXMgU2NodWx0emUKICoKICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01CiAqLwpmaW5hbCBjbGFzcyBVcmlSZXNvbHZlcgp7CiAgICAvKioKICAgICAqIFJlbW92ZXMgZG90IHNlZ21lbnRzIGZyb20gYSBwYXRoIGFuZCByZXR1cm5zIHRoZSBuZXcgcGF0aC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuNAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbW92ZURvdFNlZ21lbnRzKCRwYXRoKQogICAgewogICAgICAgIGlmICgkcGF0aCA9PT0gJycgfHwgJHBhdGggPT09ICcvJykgewogICAgICAgICAgICByZXR1cm4gJHBhdGg7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0cyA9IFtdOwogICAgICAgICRzZWdtZW50cyA9IGV4cGxvZGUoJy8nLCAkcGF0aCk7CiAgICAgICAgZm9yZWFjaCAoJHNlZ21lbnRzIGFzICRzZWdtZW50KSB7CiAgICAgICAgICAgIGlmICgkc2VnbWVudCA9PT0gJy4uJykgewogICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRyZXN1bHRzKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRzZWdtZW50ICE9PSAnLicpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRzW10gPSAkc2VnbWVudDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJG5ld1BhdGggPSBpbXBsb2RlKCcvJywgJHJlc3VsdHMpOwoKICAgICAgICBpZiAoJHBhdGhbMF0gPT09ICcvJyAmJiAoIWlzc2V0KCRuZXdQYXRoWzBdKSB8fCAkbmV3UGF0aFswXSAhPT0gJy8nKSkgewogICAgICAgICAgICAvLyBSZS1hZGQgdGhlIGxlYWRpbmcgc2xhc2ggaWYgbmVjZXNzYXJ5IGZvciBjYXNlcyBsaWtlICIvLi4iCiAgICAgICAgICAgICRuZXdQYXRoID0gJy8nIC4gJG5ld1BhdGg7CiAgICAgICAgfSBlbHNlaWYgKCRuZXdQYXRoICE9PSAnJyAmJiAoJHNlZ21lbnQgPT09ICcuJyB8fCAkc2VnbWVudCA9PT0gJy4uJykpIHsKICAgICAgICAgICAgLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgLy8gSWYgbmV3UGF0aCBpcyBub3QgZW1wdHksIHRoZW4gJHNlZ21lbnQgbXVzdCBiZSBzZXQgYW5kIGlzIHRoZSBsYXN0IHNlZ21lbnQgZnJvbSB0aGUgZm9yZWFjaAogICAgICAgICAgICAkbmV3UGF0aCAuPSAnLyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5ld1BhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGUgcmVsYXRpdmUgVVJJIGludG8gYSBuZXcgVVJJIHRoYXQgaXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgYmFzZSBVUkkuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkYmFzZSBCYXNlIFVSSQogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkcmVsICBSZWxhdGl2ZSBVUkkKICAgICAqCiAgICAgKiBAcmV0dXJuIFVyaUludGVyZmFjZQogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlc29sdmUoVXJpSW50ZXJmYWNlICRiYXNlLCBVcmlJbnRlcmZhY2UgJHJlbCkKICAgIHsKICAgICAgICBpZiAoKHN0cmluZykgJHJlbCA9PT0gJycpIHsKICAgICAgICAgICAgLy8gd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHNhbWUgYmFzZSBVUkkgaW5zdGFuY2UgZm9yIHRoaXMgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UKICAgICAgICAgICAgcmV0dXJuICRiYXNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZWwtPmdldFNjaGVtZSgpICE9ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVsLT53aXRoUGF0aChzZWxmOjpyZW1vdmVEb3RTZWdtZW50cygkcmVsLT5nZXRQYXRoKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkcmVsLT5nZXRBdXRob3JpdHkoKSAhPSAnJykgewogICAgICAgICAgICAkdGFyZ2V0QXV0aG9yaXR5ID0gJHJlbC0+Z2V0QXV0aG9yaXR5KCk7CiAgICAgICAgICAgICR0YXJnZXRQYXRoID0gc2VsZjo6cmVtb3ZlRG90U2VnbWVudHMoJHJlbC0+Z2V0UGF0aCgpKTsKICAgICAgICAgICAgJHRhcmdldFF1ZXJ5ID0gJHJlbC0+Z2V0UXVlcnkoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGFyZ2V0QXV0aG9yaXR5ID0gJGJhc2UtPmdldEF1dGhvcml0eSgpOwogICAgICAgICAgICBpZiAoJHJlbC0+Z2V0UGF0aCgpID09PSAnJykgewogICAgICAgICAgICAgICAgJHRhcmdldFBhdGggPSAkYmFzZS0+Z2V0UGF0aCgpOwogICAgICAgICAgICAgICAgJHRhcmdldFF1ZXJ5ID0gJHJlbC0+Z2V0UXVlcnkoKSAhPSAnJyA/ICRyZWwtPmdldFF1ZXJ5KCkgOiAkYmFzZS0+Z2V0UXVlcnkoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkcmVsLT5nZXRQYXRoKClbMF0gPT09ICcvJykgewogICAgICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gJHJlbC0+Z2V0UGF0aCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRhcmdldEF1dGhvcml0eSAhPSAnJyAmJiAkYmFzZS0+Z2V0UGF0aCgpID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0UGF0aCA9ICcvJyAuICRyZWwtPmdldFBhdGgoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkbGFzdFNsYXNoUG9zID0gc3RycnBvcygkYmFzZS0+Z2V0UGF0aCgpLCAnLycpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGxhc3RTbGFzaFBvcyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gJHJlbC0+Z2V0UGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRhcmdldFBhdGggPSBzdWJzdHIoJGJhc2UtPmdldFBhdGgoKSwgMCwgJGxhc3RTbGFzaFBvcyArIDEpIC4gJHJlbC0+Z2V0UGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRhcmdldFBhdGggPSBzZWxmOjpyZW1vdmVEb3RTZWdtZW50cygkdGFyZ2V0UGF0aCk7CiAgICAgICAgICAgICAgICAkdGFyZ2V0UXVlcnkgPSAkcmVsLT5nZXRRdWVyeSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFVyaShVcmk6OmNvbXBvc2VDb21wb25lbnRzKAogICAgICAgICAgICAkYmFzZS0+Z2V0U2NoZW1lKCksCiAgICAgICAgICAgICR0YXJnZXRBdXRob3JpdHksCiAgICAgICAgICAgICR0YXJnZXRQYXRoLAogICAgICAgICAgICAkdGFyZ2V0UXVlcnksCiAgICAgICAgICAgICRyZWwtPmdldEZyYWdtZW50KCkKICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHRhcmdldCBVUkkgYXMgYSByZWxhdGl2ZSByZWZlcmVuY2UgZnJvbSB0aGUgYmFzZSBVUkkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgaXMgdGhlIGNvdW50ZXJwYXJ0IHRvIHJlc29sdmUoKToKICAgICAqCiAgICAgKiAgICAoc3RyaW5nKSAkdGFyZ2V0ID09PSAoc3RyaW5nKSBVcmlSZXNvbHZlcjo6cmVzb2x2ZSgkYmFzZSwgVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsICR0YXJnZXQpKQogICAgICoKICAgICAqIE9uZSB1c2UtY2FzZSBpcyB0byB1c2UgdGhlIGN1cnJlbnQgcmVxdWVzdCBVUkkgYXMgYmFzZSBVUkkgYW5kIHRoZW4gZ2VuZXJhdGUgcmVsYXRpdmUgbGlua3MgaW4geW91ciBkb2N1bWVudHMKICAgICAqIHRvIHJlZHVjZSB0aGUgZG9jdW1lbnQgc2l6ZSBvciBvZmZlciBzZWxmLWNvbnRhaW5lZCBkb3dubG9hZGFibGUgZG9jdW1lbnQgYXJjaGl2ZXMuCiAgICAgKgogICAgICogICAgJGJhc2UgPSBuZXcgVXJpKCdodHRwOi8vZXhhbXBsZS5jb20vYS9iLycpOwogICAgICogICAgZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi9jJykpOyAgLy8gcHJpbnRzICdjJy4KICAgICAqICAgIGVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLmNvbS9hL3gveScpKTsgIC8vIHByaW50cyAnLi4veC95Jy4KICAgICAqICAgIGVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLmNvbS9hL2IvP3EnKSk7IC8vIHByaW50cyAnP3EnLgogICAgICogICAgZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUub3JnL2EvYi8nKSk7ICAgLy8gcHJpbnRzICcvL2V4YW1wbGUub3JnL2EvYi8nLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsc28gYWNjZXB0cyBhIHRhcmdldCB0aGF0IGlzIGFscmVhZHkgcmVsYXRpdmUgYW5kIHdpbGwgdHJ5IHRvIHJlbGF0aXZpemUgaXQgZnVydGhlci4gT25seSBhCiAgICAgKiByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZSB3aWxsIGJlIHJldHVybmVkIGFzLWlzLgogICAgICoKICAgICAqICAgIGVjaG8gVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemUoJGJhc2UsIG5ldyBVcmkoJy9hL2IvYycpKTsgIC8vIHByaW50cyAnYycgYXMgd2VsbAogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJGJhc2UgICBCYXNlIFVSSQogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdGFyZ2V0IFRhcmdldCBVUkkKICAgICAqCiAgICAgKiBAcmV0dXJuIFVyaUludGVyZmFjZSBUaGUgcmVsYXRpdmUgVVJJIHJlZmVyZW5jZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbGF0aXZpemUoVXJpSW50ZXJmYWNlICRiYXNlLCBVcmlJbnRlcmZhY2UgJHRhcmdldCkKICAgIHsKICAgICAgICBpZiAoJHRhcmdldC0+Z2V0U2NoZW1lKCkgIT09ICcnICYmCiAgICAgICAgICAgICgkYmFzZS0+Z2V0U2NoZW1lKCkgIT09ICR0YXJnZXQtPmdldFNjaGVtZSgpIHx8ICR0YXJnZXQtPmdldEF1dGhvcml0eSgpID09PSAnJyAmJiAkYmFzZS0+Z2V0QXV0aG9yaXR5KCkgIT09ICcnKQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gJHRhcmdldDsKICAgICAgICB9CgogICAgICAgIGlmIChVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlKCR0YXJnZXQpKSB7CiAgICAgICAgICAgIC8vIEFzIHRoZSB0YXJnZXQgaXMgYWxyZWFkeSBoaWdobHkgcmVsYXRpdmUgd2UgcmV0dXJuIGl0IGFzLWlzLiBJdCB3b3VsZCBiZSBwb3NzaWJsZSB0byByZXNvbHZlCiAgICAgICAgICAgIC8vIHRoZSB0YXJnZXQgd2l0aCBgJHRhcmdldCA9IHNlbGY6OnJlc29sdmUoJGJhc2UsICR0YXJnZXQpO2AgYW5kIHRoZW4gdHJ5IG1ha2UgaXQgbW9yZSByZWxhdGl2ZQogICAgICAgICAgICAvLyBieSByZW1vdmluZyBhIGR1cGxpY2F0ZSBxdWVyeS4gQnV0IGxldCdzIG5vdCBkbyB0aGF0IGF1dG9tYXRpY2FsbHkuCiAgICAgICAgICAgIHJldHVybiAkdGFyZ2V0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0YXJnZXQtPmdldEF1dGhvcml0eSgpICE9PSAnJyAmJiAkYmFzZS0+Z2V0QXV0aG9yaXR5KCkgIT09ICR0YXJnZXQtPmdldEF1dGhvcml0eSgpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGFyZ2V0LT53aXRoU2NoZW1lKCcnKTsKICAgICAgICB9CgogICAgICAgIC8vIFdlIG11c3QgcmVtb3ZlIHRoZSBwYXRoIGJlZm9yZSByZW1vdmluZyB0aGUgYXV0aG9yaXR5IGJlY2F1c2UgaWYgdGhlIHBhdGggc3RhcnRzIHdpdGggdHdvIHNsYXNoZXMsIHRoZSBVUkkKICAgICAgICAvLyB3b3VsZCB0dXJuIGludmFsaWQuIEFuZCB3ZSBhbHNvIGNhbm5vdCBzZXQgYSByZWxhdGl2ZSBwYXRoIGJlZm9yZSByZW1vdmluZyB0aGUgYXV0aG9yaXR5LCBhcyB0aGF0IGlzIGFsc28KICAgICAgICAvLyBpbnZhbGlkLgogICAgICAgICRlbXB0eVBhdGhVcmkgPSAkdGFyZ2V0LT53aXRoU2NoZW1lKCcnKS0+d2l0aFBhdGgoJycpLT53aXRoVXNlckluZm8oJycpLT53aXRoUG9ydChudWxsKS0+d2l0aEhvc3QoJycpOwoKICAgICAgICBpZiAoJGJhc2UtPmdldFBhdGgoKSAhPT0gJHRhcmdldC0+Z2V0UGF0aCgpKSB7CiAgICAgICAgICAgIHJldHVybiAkZW1wdHlQYXRoVXJpLT53aXRoUGF0aChzZWxmOjpnZXRSZWxhdGl2ZVBhdGgoJGJhc2UsICR0YXJnZXQpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYmFzZS0+Z2V0UXVlcnkoKSA9PT0gJHRhcmdldC0+Z2V0UXVlcnkoKSkgewogICAgICAgICAgICAvLyBPbmx5IHRoZSB0YXJnZXQgZnJhZ21lbnQgaXMgbGVmdC4gQW5kIGl0IG11c3QgYmUgcmV0dXJuZWQgZXZlbiBpZiBiYXNlIGFuZCB0YXJnZXQgZnJhZ21lbnQgYXJlIHRoZSBzYW1lLgogICAgICAgICAgICByZXR1cm4gJGVtcHR5UGF0aFVyaS0+d2l0aFF1ZXJ5KCcnKTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBiYXNlIFVSSSBoYXMgYSBxdWVyeSBidXQgdGhlIHRhcmdldCBoYXMgbm9uZSwgd2UgY2Fubm90IHJldHVybiBhbiBlbXB0eSBwYXRoIHJlZmVyZW5jZSBhcyBpdCB3b3VsZAogICAgICAgIC8vIGluaGVyaXQgdGhlIGJhc2UgcXVlcnkgY29tcG9uZW50IHdoZW4gcmVzb2x2aW5nLgogICAgICAgIGlmICgkdGFyZ2V0LT5nZXRRdWVyeSgpID09PSAnJykgewogICAgICAgICAgICAkc2VnbWVudHMgPSBleHBsb2RlKCcvJywgJHRhcmdldC0+Z2V0UGF0aCgpKTsKICAgICAgICAgICAgJGxhc3RTZWdtZW50ID0gZW5kKCRzZWdtZW50cyk7CgogICAgICAgICAgICByZXR1cm4gJGVtcHR5UGF0aFVyaS0+d2l0aFBhdGgoJGxhc3RTZWdtZW50ID09PSAnJyA/ICcuLycgOiAkbGFzdFNlZ21lbnQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbXB0eVBhdGhVcmk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0UmVsYXRpdmVQYXRoKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICR0YXJnZXQpCiAgICB7CiAgICAgICAgJHNvdXJjZVNlZ21lbnRzID0gZXhwbG9kZSgnLycsICRiYXNlLT5nZXRQYXRoKCkpOwogICAgICAgICR0YXJnZXRTZWdtZW50cyA9IGV4cGxvZGUoJy8nLCAkdGFyZ2V0LT5nZXRQYXRoKCkpOwogICAgICAgIGFycmF5X3BvcCgkc291cmNlU2VnbWVudHMpOwogICAgICAgICR0YXJnZXRMYXN0U2VnbWVudCA9IGFycmF5X3BvcCgkdGFyZ2V0U2VnbWVudHMpOwogICAgICAgIGZvcmVhY2ggKCRzb3VyY2VTZWdtZW50cyBhcyAkaSA9PiAkc2VnbWVudCkgewogICAgICAgICAgICBpZiAoaXNzZXQoJHRhcmdldFNlZ21lbnRzWyRpXSkgJiYgJHNlZ21lbnQgPT09ICR0YXJnZXRTZWdtZW50c1skaV0pIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRzb3VyY2VTZWdtZW50c1skaV0sICR0YXJnZXRTZWdtZW50c1skaV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRhcmdldFNlZ21lbnRzW10gPSAkdGFyZ2V0TGFzdFNlZ21lbnQ7CiAgICAgICAgJHJlbGF0aXZlUGF0aCA9IHN0cl9yZXBlYXQoJy4uLycsIGNvdW50KCRzb3VyY2VTZWdtZW50cykpIC4gaW1wbG9kZSgnLycsICR0YXJnZXRTZWdtZW50cyk7CgogICAgICAgIC8vIEEgcmVmZXJlbmNlIHRvIGFtIGVtcHR5IGxhc3Qgc2VnbWVudCBvciBhbiBlbXB0eSBmaXJzdCBzdWItc2VnbWVudCBtdXN0IGJlIHByZWZpeGVkIHdpdGggIi4vIi4KICAgICAgICAvLyBUaGlzIGFsc28gYXBwbGllcyB0byBhIHNlZ21lbnQgd2l0aCBhIGNvbG9uIGNoYXJhY3RlciAoZS5nLiwgImZpbGU6Y29sb24iKSB0aGF0IGNhbm5vdCBiZSB1c2VkCiAgICAgICAgLy8gYXMgdGhlIGZpcnN0IHNlZ21lbnQgb2YgYSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZSwgYXMgaXQgd291bGQgYmUgbWlzdGFrZW4gZm9yIGEgc2NoZW1lIG5hbWUuCiAgICAgICAgaWYgKCcnID09PSAkcmVsYXRpdmVQYXRoIHx8IGZhbHNlICE9PSBzdHJwb3MoZXhwbG9kZSgnLycsICRyZWxhdGl2ZVBhdGgsIDIpWzBdLCAnOicpKSB7CiAgICAgICAgICAgICRyZWxhdGl2ZVBhdGggPSAiLi8kcmVsYXRpdmVQYXRoIjsKICAgICAgICB9IGVsc2VpZiAoJy8nID09PSAkcmVsYXRpdmVQYXRoWzBdKSB7CiAgICAgICAgICAgIGlmICgkYmFzZS0+Z2V0QXV0aG9yaXR5KCkgIT0gJycgJiYgJGJhc2UtPmdldFBhdGgoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBhbiBleHRyYSBzbGFzaCBpcyBhZGRlZCBieSByZXNvbHZlKCkgYXV0b21hdGljYWxseS4gU28gd2UgbXVzdCBub3QgYWRkIG9uZSBoZXJlLgogICAgICAgICAgICAgICAgJHJlbGF0aXZlUGF0aCA9ICIuJHJlbGF0aXZlUGF0aCI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVsYXRpdmVQYXRoID0gIi4vJHJlbGF0aXZlUGF0aCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVsYXRpdmVQYXRoOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIC8vIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/.scrutinizer.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyAuc2NydXRpbml6ZXIueW1sCgpmaWx0ZXI6CiAgICBleGNsdWRlZF9wYXRoczogW3ZlbmRvci8qLCBkb2MvKiwgdGVzdHMvKl0KCmJlZm9yZV9jb21tYW5kczoKICAgIC0gImNvbXBvc2VyIGluc3RhbGwgLS1wcmVmZXItc291cmNlIC0tbm8tZGV2IgoKdG9vbHM6CiAgICBwaHBfY3BkOiB0cnVlCiAgICBwaHBfcGRlcGVuZDogdHJ1ZQogICAgcGhwX2FuYWx5emVyOiB0cnVlCiAgICBwaHBfc2ltOiB0cnVlCiAgICBwaHBfY2hhbmdldHJhY2tpbmc6IHRydWUKICAgIHBocF9tZXNzX2RldGVjdG9yOiB0cnVlCiAgICBwaHBfY29kZV9zbmlmZmVyOiB0cnVlCiAgICBzZW5zaW9sYWJzX3NlY3VyaXR5X2NoZWNrZXI6IHRydWUKICAgIHBocF9jb2RlX2NvdmVyYWdlOiB0cnVlCiAgICBwaHBfcGRlcGVuZDoKICAgICAgICBleGNsdWRlZF9kaXJzOiBbdmVuZG9yLCBkb2MsIHRlc3RzXQogICAgZXh0ZXJuYWxfY29kZV9jb3ZlcmFnZToKICAgICAgICB0aW1lb3V0OiAxMzAwCiAgICAgICAgcnVuczogMgoKY2hhbmdldHJhY2tpbmc6CiAgICBidWdfcGF0dGVybnM6IFsiXGJmaXgoPzplc3xlZCk/XGIiXQogICAgZmVhdHVyZV9wYXR0ZXJuczogWyJcYmFkZCg/OnN8ZWQpP1xiIiwgIlxiaW1wbGVtZW50KD86c3xlZCk/XGIiXQoK]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/.travis.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bGFuZ3VhZ2U6IHBocAoKZGlzdDogdHJ1c3R5IApwaHA6CiAgICAtIDUuNgogICAgLSA3LjAKICAgIC0gNy4xCiAgICAtIGhodm0KCmRpc3Q6IHRydXN0eSAKCmVudjoKICAgICMgVGhlIGRlZmF1bHQgZW52IGJlaGF2aW91cjogcGhwdW5pdCwgbm8gY292ZXJhZ2UsIG5vIHN0eWxlIGNoZWNrcwogIC0gUEhQVU5JVD10cnVlCgptYXRyaXg6CiAgZmFzdF9maW5pc2g6IHRydWUKCiAgZXhjbHVkZToKICAgICAgIyBEaXNhYmxlIHBocHVuaXQgdGVzdCBvbiA1LjYsIHJlZW5hYmxlIHdpdGggQ09WRVJBR0UKICAgIC0gcGhwOiA1LjYKICAgICAgZW52OiBQSFBVTklUPXRydWUKCiAgaW5jbHVkZToKICAgICAgIyBUaGlzIHJlZW5hYmxlcyBwaHA1LjYvcGhwdW5pdCB0ZXN0IHdpdGggQ09WRVJBR0UKICAgIC0gcGhwOiA1LjYKICAgICAgZW52OiBQSFBVTklUPXRydWUgQ09WRVJBR0VfU0hBUkRTPTEwIENPVkVSQUdFPXRydWUKCiAgICAgICMgVGhpcyBydW5zIHBocGNzIG9uIHBocDcuMCAtIG9ubHkgY29kZSBzdHlsZQogICAgLSBwaHA6IDUuNgogICAgICBlbnY6IENPREVTVFlMRT10cnVlCgpzdWRvOiBmYWxzZQoKYmVmb3JlX3NjcmlwdDoKICAgIC0gdHJhdmlzX3JldHJ5IGNvbXBvc2VyIHNlbGZ1cGRhdGUKICAgIC0gdHJhdmlzX3JldHJ5IGNvbXBvc2VyIGluc3RhbGwgLS1wcmVmZXItc291cmNlCiAgICAtIGlmIFsgIiR7Q09WRVJBR0V9IiAhPSAidHJ1ZSIgXTsgdGhlbiBwaHBlbnYgY29uZmlnLXJtIHhkZWJ1Zy5pbmkgJiYgZWNobyAieGRlYnVnIGRpc2FibGVkIiB8fCBlY2hvICJ4ZGVidWcgd2Fzbid0IGVuYWJsZWQiOyBmaQoKc2NyaXB0OgogICAgLSBpZiBbICIke1BIUFVOSVR9IiA9ICJ0cnVlIiBdOyB0aGVuIHZlbmRvci9iaW4vcGhwdW5pdCAtLWNvdmVyYWdlLXRleHQgLS1jb3ZlcmFnZS1jbG92ZXI9dGVzdHMvb3V0cHV0L2NvdmVyYWdlLmNsb3ZlcjsgZmkKICAgIC0gLi92YWxpZGF0ZV9leGFtcGxlcy5zaAoKYWZ0ZXJfc3VjY2VzczoKICAgIC0gd2dldCBodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9vY3VsYXIucGhhcgogICAgLSBpZiBbICIke0NPVkVSQUdFfSIgPSAidHJ1ZSIgXSAmJiBbICIkVFJBVklTX1BIUF9WRVJTSU9OIiAhPSAiaGh2bSIgXSAmJiBbICIkVFJBVklTX1BIUF9WRVJTSU9OIiAhPSAibmlnaHRseSIgXTsgdGhlbiBwaHAgb2N1bGFyLnBoYXIgY29kZS1jb3ZlcmFnZTp1cGxvYWQgLS1mb3JtYXQ9cGhwLWNsb3ZlciBjb3ZlcmFnZS5jbG92ZXI7IGZpOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAibWRhbnRlci9lY2MiLAogICAgImRlc2NyaXB0aW9uIjogIlBIUCBFbGxpcHRpYyBDdXJ2ZSBDcnlwdG9ncmFwaHkgbGlicmFyeSIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYyIsCiAgICAia2V5d29yZHMiOiBbInNlY3AyNTZrMSIsICJuaXN0cDE5MiIsICJuaXN0cDIyNCIsICJuaXN0cDI1NiIsICJuaXN0cDUyMSIsICJFQ0RTQSIsICJkaWZmaWUiLCAiaGVsbG1hbiIsICJFQ0RIIiwgImVsbGlwdGljIiwgImN1cnZlIiwgInBocGVjYyJdLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWF0eWFzIERhbnRlciIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vbWF0ZWpkYW50ZXIuY29tLyIsCiAgICAgICAgICAgICJyb2xlIjogIkF1dGhvciIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVGhpYmF1ZCBGYWJyZSIsCiAgICAgICAgICAgICJlbWFpbCI6ICJ0aGliYXVkQGF6dGVjaC5pbyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vYXp0ZWNoLmlvIiwKICAgICAgICAgICAgInJvbGUiOiAiTWFpbnRhaW5lciIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTUuNi4wLCA8Ny4yIiwKICAgICAgICAiZXh0LWdtcCI6ICIqIiwKICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiOiAiXjF8XjIiLAogICAgICAgICJmZ3Jvc3NlL3BocGFzbjEiOiAifjEuNSIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC4xfH41LjAiLAogICAgICAgICJzcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyIjogIn4yIiwKICAgICAgICAic3ltZm9ueS95YW1sIjogIn4yLjZ8fjMuMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiTWRhbnRlclxcRWNjXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJNZGFudGVyXFxFY2NcXFRlc3RzXFwiOiAidGVzdHMvdW5pdCIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/Makefile</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGVzdDogcGhwdW5pdCBwaHBjcwoKLlBIT05ZOiB0ZXN0IHBocHVuaXQgcGhwY3MKCnByZXRlc3Q6CgkJY29tcG9zZXIgaW5zdGFsbAoKcGhwdW5pdDogcHJldGVzdAoJCW1rZGlyIC1wIHRlc3RzL291dHB1dAoJCXZlbmRvci9iaW4vcGhwdW5pdCAtLWNvdmVyYWdlLXRleHQgLS1jb3ZlcmFnZS1jbG92ZXI9dGVzdHMvb3V0cHV0L2NvdmVyYWdlLmNsb3ZlciAtLWNvdmVyYWdlLWh0bWw9dGVzdHMvb3V0cHV0L1Jlc3VsdHMKCmlmbmRlZiBTVFJJQ1QKU1RSSUNUID0gMAplbmRpZgoKaWZlcSAiJChTVFJJQ1QpIiAiMSIKcGhwY3M6IHByZXRlc3QKCQl2ZW5kb3IvYmluL3BocGNzIC0tc3RhbmRhcmQ9UFNSMiBzcmMKZWxzZQpwaHBjczogcHJldGVzdAoJCXZlbmRvci9iaW4vcGhwY3MgLS1zdGFuZGFyZD1QU1IyIC1uIHNyYwplbmRpZgoKcGhwY2JmOiBwcmV0ZXN0CgkJdmVuZG9yL2Jpbi9waHBjYmYgLS1zdGFuZGFyZD1QU1IyIC1uIHNyYwoKaWZkZWYgT0NVTEFSX1RPS0VOCnNjcnV0aW5pemVyOiBvY3VsYXIKCQlAcGhwIG9jdWxhci5waGFyIGNvZGUtY292ZXJhZ2U6dXBsb2FkIC0tZm9ybWF0PXBocC1jbG92ZXIgdGVzdHMvb3V0cHV0L2NvdmVyYWdlLmNsb3ZlciAtLWFjY2Vzcy10b2tlbj0kKE9DVUxBUl9UT0tFTik7CmVsc2UKc2NydXRpbml6ZXI6IG9jdWxhcgoJCXBocCBvY3VsYXIucGhhciBjb2RlLWNvdmVyYWdlOnVwbG9hZCAtLWZvcm1hdD1waHAtY2xvdmVyIHRlc3RzL291dHB1dC9jb3ZlcmFnZS5jbG92ZXI7CmVuZGlmCgpjbGVhbjogY2xlYW4tZW52IGNsZWFuLWRlcHMKCmNsZWFuLWVudjoKCQlybSAtcmYgY292ZXJhZ2UuY2xvdmVyCgkJcm0gLXJmIG9jdWxhci5waGFyCgkJcm0gLXJmIHRlc3RzL291dHB1dC8KCmNsZWFuLWRlcHM6CgkJcm0gLXJmIHZlbmRvci8K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/phpunit.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHBocHVuaXQgYm9vdHN0cmFwPSJ0ZXN0cy9ib290c3RyYXAucGhwIiBjb2xvcnM9InRydWUiCiAgY29udmVydEVycm9yc1RvRXhjZXB0aW9ucz0idHJ1ZSIgY29udmVydE5vdGljZXNUb0V4Y2VwdGlvbnM9InRydWUiCiAgY29udmVydFdhcm5pbmdzVG9FeGNlcHRpb25zPSJ0cnVlIiBwcm9jZXNzSXNvbGF0aW9uPSJmYWxzZSIKICBzdG9wT25GYWlsdXJlPSJmYWxzZSI+CiAgPHBocD4KICAgIDxjb25zdCBuYW1lPSJQSFBVTklUX0RFQlVHIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8aW5pIG5hbWU9ImRpc3BsYXlfZXJyb3JzIiB2YWx1ZT0iT24iIC8+CiAgICA8aW5pIG5hbWU9ImVycm9yX3JlcG9ydGluZyIgdmFsdWU9IjMyNzY3IiAvPgogIDwvcGhwPgogIDx0ZXN0c3VpdGVzPgogICAgPHRlc3RzdWl0ZSBuYW1lPSJBbGwiPgogICAgICA8ZGlyZWN0b3J5IHN1ZmZpeD0iVGVzdC5waHAiPi4vdGVzdHMvdW5pdDwvZGlyZWN0b3J5PgogICAgPC90ZXN0c3VpdGU+CiAgPC90ZXN0c3VpdGVzPgogIDxsb2dnaW5nPgogICAgPGxvZyB0eXBlPSJjb3ZlcmFnZS1odG1sIiB0YXJnZXQ9Ii4vdGVzdHMvb3V0cHV0L0NvdmVyYWdlLyIKICAgICAgY2hhcnNldD0iVVRGLTgiIHl1aT0idHJ1ZSIgaGlnaGxpZ2h0PSJ0cnVlIiAvPgogICAgPGxvZyB0eXBlPSJqdW5pdCIgdGFyZ2V0PSIuL3Rlc3RzL291dHB1dC9SZXN1bHRzL1Jlc3VsdHMueG1sIgogICAgICBsb2dJbmNvbXBsZXRlU2tpcHBlZD0idHJ1ZSIgLz4KICA8L2xvZ2dpbmc+CiAgPGZpbHRlcj4KICAgIDx3aGl0ZWxpc3QgYWRkVW5jb3ZlcmVkRmlsZXNGcm9tV2hpdGVsaXN0PSJ0cnVlIj4KICAgICAgPGRpcmVjdG9yeSBzdWZmaXg9Ii5waHAiPnNyYy88L2RpcmVjdG9yeT4KICAgIDwvd2hpdGVsaXN0PgogIDwvZmlsdGVyPgo8L3BocHVuaXQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMgUHVyZSBQSFAgRWxsaXB0aWMgQ3VydmUgRFNBIGFuZCBESAoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvcGhwZWNjL3BocGVjYy5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9waHBlY2MvcGhwZWNjKQpbIVtISFZNIFN0YXR1c10oaHR0cDovL2hodm0uaDRjYy5kZS9iYWRnZS9tZGFudGVyL2VjYy5zdmcpXShodHRwOi8vaGh2bS5oNGNjLmRlL3BhY2thZ2UvbWRhbnRlci9lY2MpCgpbIVtTY3J1dGluaXplciBDb2RlIFF1YWxpdHldKGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL2cvcGhwZWNjL3BocGVjYy9iYWRnZXMvcXVhbGl0eS1zY29yZS5wbmc/Yj1tYXN0ZXIpXShodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nL3BocGVjYy9waHBlY2M/YnJhbmNoPW1hc3RlcikKWyFbQ29kZSBDb3ZlcmFnZV0oaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy9waHBlY2MvcGhwZWNjL2JhZGdlcy9jb3ZlcmFnZS5wbmc/Yj1tYXN0ZXIpXShodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nL3BocGVjYy9waHBlY2MvP2JyYW5jaD1tYXN0ZXIpCgpbIVtMYXRlc3QgU3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2Mvdi9zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL21kYW50ZXIvZWNjKQpbIVtUb3RhbCBEb3dubG9hZHNdKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2MvZG93bmxvYWRzLnBuZyldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9tZGFudGVyL2VjYykKWyFbTGF0ZXN0IFVuc3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2Mvdi91bnN0YWJsZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbWRhbnRlci9lY2MpClshW0xpY2Vuc2VdKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2MvbGljZW5zZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbWRhbnRlci9lY2MpCgojIyMgSW5mb3JtYXRpb24KClRoaXMgbGlicmFyeSBpcyBhIHJld3JpdGUvdXBkYXRlIG9mIE1hdHlhcyBEYW50ZXIncyBFQ0MgbGlicmFyeS4gQWxsIGNyZWRpdCBnb2VzIHRvIGhpbS4KCkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEVsbGlwdGljIEN1cnZlIENyeXB0b2dyYXBoeSBwbGVhc2UgcmVhZCBbdGhpcyBmaW5lIGFydGljbGVdKGh0dHA6Ly93d3cubWF0eWFzZGFudGVyLmNvbS8yMDEwLzEyL2VsbGlwdGljLWN1cnZlLXBocC1vb3AtZHNhLWFuZC1kaWZmaWUtaGVsbG1hbi8pLgoKVGhlIGxpYnJhcnkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBjdXJ2ZXM6CgogLSBzZWNwMTEycjEKIC0gc2VjcDI1NmsxCiAtIG5pc3RwMTkyCiAtIG5pc3RwMjI0CiAtIG5pc3RwMjU2IC8gc2VjZzI1NnIxCiAtIG5pc3RwMzg0IC8gc2VjZzM4NHIxCiAtIG5pc3RwNTIxCgpUaGUgbGlicmFyeSBleHBvc2VzIGEgY2xhc3MgZm9yIHJhbmRvbSBieXRlIGdlbmVyYXRpb24sIGZvciBQSFA3KyB1c2VycyBpcyBwcm92aWRlZCBieSBgcmFuZG9tX2J5dGVzYC4gClBIUDUuNiB1c2VycyB3aWxsIHVzZSB0aGUgcGFyYWdvbmllL3JhbmRvbV9ieXRlcyBwb2x5ZmlsbC4gCgpEdXJpbmcgRUNEU0EsIGEgcmFuZG9tIHZhbHVlIGBrYCBpcyByZXF1aXJlZC4gSXQgaXMgYWNjZXB0YWJsZSB0byB1c2UgYSB0cnVlIFJORyB0byBnZW5lcmF0ZSB0aGlzIHZhbHVlLCBidXQgCnNob3VsZCB0aGUgc2FtZSBga2AgdmFsdWUgZXZlciBiZSByZXBlYXRlZGx5IHVzZWQgZm9yIGEga2V5LCBhbiBhdHRhY2tlciBjYW4gcmVjb3ZlciB0aGF0IHNpZ25pbmcga2V5LiAKVGhlIEhNQUMgcmFuZG9tIGdlbmVyYXRvciBjYW4gZGVyaXZlIGEgZGV0ZXJtaW5pc3RpYyBrIHZhbHVlIGZyb20gdGhlIG1lc3NhZ2UgaGFzaCBhbmQgcHJpdmF0ZSBrZXksIHZvaWRpbmcKdGhpcyBjb25jZXJuLgoKVGhlIGxpYnJhcnkgdXNlcyBhIG5vbi1icmFuY2hpbmcgTW9udGdvbWVyeSBsYWRkZXIgZm9yIHNjYWxhciBtdWx0aXBsaWNhdGlvbiwgYXMgaXQncyBjb25zdGFudCB0aW1lIGFuZCBhdm9pZHMgc2VjcmV0IApkZXBlbmRhbnQgYnJhbmNoZXMuIAoKIyMjIENvbXBhdGliaWxpdHkgbm90aWNlOgoKQSBkZXBlbmRlbmN5IHVzZWQgYnkgdGhpcyBsaWJyYXJ5IGluIHYwLjQueCBpbnRlcmFjdHMgd2l0aCBhIG5ld2x5IHJlc2VydmVkIGtleXdvcmQgaW4gUEhQIDcuMi4gVGhlcmVmb3JlIHRoZSBsaWJyYXJ5CmNhbm5vdCBiZSB1c2VkIG9uIDcuMi4gRm9yIGEgUEhQNy4wKyBicmFuY2gsIHlvdSBzaG91bGQgdXBncmFkZSB0byBbdjAuNS54XShodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYy9yZWxlYXNlcy90YWcvdjAuNS4wKQoKIAojIyMgTGljZW5zZQoKVGhpcyBwYWNrYWdlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KCiMjIyBSZXF1aXJlbWVudHMKCiogUEhQIDUuNisKKiBjb21wb3NlcgoqIGV4dC1nbXAKCiMjIyBJbnN0YWxsYXRpb24KCllvdSBjYW4gaW5zdGFsbCB0aGlzIGxpYnJhcnkgdmlhIENvbXBvc2VyIDoKCmBjb21wb3NlciByZXF1aXJlIG1kYW50ZXIvZWNjYAoKIyMjIENvbnRyaWJ1dGUKCldoZW4gc2VuZGluZyBpbiBwdWxsIHJlcXVlc3RzLCBwbGVhc2UgbWFrZSBzdXJlIHRvIHJ1biB0aGUgYG1ha2VgIGNvbW1hbmQuCgpUaGUgZGVmYXVsdCB0YXJnZXQgcnVucyBhbGwgUEhQVW5pdCBhbmQgUEhQQ1MgdGVzdHMuIEFsbCB0ZXN0cwptdXN0IHZhbGlkYXRlIGZvciB5b3VyIGNvbnRyaWJ1dGlvbiB0byBiZSBhY2NlcHRlZC4KCkl0J3MgYWxzbyBhbHdheXMgYSBnb29kIGlkZWEgdG8gY2hlY2sgdGhlIHJlc3VsdHMgb2YgdGhlIFtTY3J1dGluaXplciBhbmFseXNpc10oaHR0cHM6Ly9zY3J1dGluaXplci1jaS5jb20vZy9waHBlY2MvcGhwZWNjLykgZm9yIHlvdXIgcHVsbCByZXF1ZXN0cy4KCiMjIyBVc2FnZQoKRXhhbXBsZXM6CiAqIFtLZXkgZ2VuZXJhdGlvbl0oLi9leGFtcGxlcy9rZXlfZ2VuZXJhdGlvbi5waHApCiAqIFtFQ0RIIGV4Y2hhbmdlXSguL2V4YW1wbGVzL2VjZGhfZXhjaGFuZ2UucGhwKQogKiBbU2lnbmF0dXJlIGNyZWF0aW9uXSguL2V4YW1wbGVzL2NyZWF0aW5nX3NpZ25hdHVyZS5waHApCiAqIFtTaWduYXR1cmUgdmVyaWZpY2F0aW9uXSguL2V4YW1wbGVzL3ZlcmlmeV9zaWduYXR1cmUucGhwKQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/EcDH/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/EcDH/EcDH.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cRWNESDsKCi8qKgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHlhcyBEYW50ZXIKICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHJpdmF0ZUtleUludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5SW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwoKLyoqCiAqIFRoaXMgY2xhc3MgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEVDREguCiAqIEVjREggaXMgc2FmZSBrZXkgZXhjaGFuZ2UgYW5kIGFjaGlldmVzCiAqIHRoYXQgYSBrZXkgaXMgdHJhbnNwb3J0ZWQgc2VjdXJlbHkgYmV0d2VlbiB0d28gcGFydGllcy4KICogVGhlIGtleSB0aGVuIGNhbiBiZSBoYXNoZWQgYW5kIHVzZWQgYXMgYSBiYXNpcyBpbgogKiBhIGR1YWwgZW5jcnlwdGlvbiBzY2hlbWUsIGFsb25nIHdpdGggQUVTIGZvciBmYXN0ZXIKICogdHdvLSB3YXkgZW5jcnlwdGlvbi4KICovCmNsYXNzIEVjREggaW1wbGVtZW50cyBFY0RISW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQWRhcHRlciB1c2VkIGZvciBtYXRoIGNhbGN1bGF0aW9ucwogICAgICoKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICogU2VjcmV0IGtleSBiZXR3ZWVuIHRoZSB0d28gcGFydGllcwogICAgICoKICAgICAqIEB2YXIgUHVibGljS2V5SW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJHNlY3JldEtleSA9IG51bGw7CgogICAgLyoqCiAgICAgKgogICAgICogQHZhciBQdWJsaWNLZXlJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVjaXBpZW50S2V5OwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgUHJpdmF0ZUtleUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRzZW5kZXJLZXk7CgogICAgLyoqCiAgICAgKiBJbml0aWFsaXplIGEgbmV3IGV4Y2hhbmdlIGZyb20gYSBnZW5lcmF0b3IgcG9pbnQuCiAgICAgKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIgQSBtYXRoIGFkYXB0ZXIgaW5zdGFuY2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyKQogICAgewogICAgICAgICR0aGlzLT5hZGFwdGVyID0gJGFkYXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cRWNESFxFY0RISW50ZXJmYWNlOjpjYWxjdWxhdGVTaGFyZWRLZXkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FsY3VsYXRlU2hhcmVkS2V5KCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2FsY3VsYXRlS2V5KCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+c2VjcmV0S2V5LT5nZXRQb2ludCgpLT5nZXRYKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cRWNESFxFY0RISW50ZXJmYWNlOjpjcmVhdGVNdWx0aVBhcnR5S2V5KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZU11bHRpUGFydHlLZXkoKQogICAgewogICAgICAgICR0aGlzLT5jYWxjdWxhdGVLZXkoKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWNyZXRLZXk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cRWNESFxFY0RISW50ZXJmYWNlOjpzZXRSZWNpcGllbnRLZXkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UmVjaXBpZW50S2V5KFB1YmxpY0tleUludGVyZmFjZSAka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+cmVjaXBpZW50S2V5ID0gJGtleTsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cRWNESFxFY0RISW50ZXJmYWNlOjpzZXRTZW5kZXJLZXkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2VuZGVyS2V5KFByaXZhdGVLZXlJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAkdGhpcy0+c2VuZGVyS2V5ID0gJGtleTsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhbGN1bGF0ZUtleSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrRXhjaGFuZ2VTdGF0ZSgpOwoKICAgICAgICBpZiAoJHRoaXMtPnNlY3JldEtleSA9PT0gbnVsbCkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy8gTXVsdGlwbHkgb3VyIHNlY3JldCB3aXRoIHJlY2lwaWVudHMgcHVibGljIGtleQogICAgICAgICAgICAgICAgJHBvaW50ID0gJHRoaXMtPnJlY2lwaWVudEtleS0+Z2V0UG9pbnQoKS0+bXVsKCR0aGlzLT5zZW5kZXJLZXktPmdldFNlY3JldCgpKTsKCiAgICAgICAgICAgICAgICAvLyBFbnN1cmUgd2UgY29tcGxldGVkIGEgdmFsaWQgZXhjaGFuZ2UsIGVuc3VyZSB3ZSBjYW4gY3JlYXRlIGEKICAgICAgICAgICAgICAgIC8vIHB1YmxpYyBrZXkgaW5zdGFuY2UgZm9yIHRoZSBzaGFyZWQgc2VjcmV0IHVzaW5nIG91ciBnZW5lcmF0b3IuCiAgICAgICAgICAgICAgICAkdGhpcy0+c2VjcmV0S2V5ID0gJHRoaXMtPnNlbmRlcktleS0+Z2V0UG9pbnQoKS0+Z2V0UHVibGljS2V5RnJvbSgkcG9pbnQtPmdldFgoKSwgJHBvaW50LT5nZXRZKCkpOwogICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkludmFsaWQgRUNESCBleGNoYW5nZSIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVmVyaWZpZXMgdGhhdCB0aGUgc2hhcmVkIHNlY3JldCBpcyBrbm93biwgb3IgdGhhdCB0aGUgcmVxdWlyZWQga2V5cyBhcmUgYXZhaWxhYmxlCiAgICAgKiB0byBjYWxjdWxhdGUgdGhlIHNoYXJlZCBzZWNyZXQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIHdoZW4gdGhlIGV4Y2hhbmdlIGhhcyBub3QgYmVlbiBtYWRlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrRXhjaGFuZ2VTdGF0ZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zZWNyZXRLZXkgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5zZW5kZXJLZXkgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdTZW5kZXIga2V5IG5vdCBzZXQuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnJlY2lwaWVudEtleSA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1JlY2lwaWVudCBrZXkgbm90IHNldC4nKTsKICAgICAgICB9CgogICAgICAgIC8vIENoZWNrIHRoZSBwb2ludCBleGlzdHMgb24gb3VyIGN1cnZlLgogICAgICAgICRwb2ludCA9ICR0aGlzLT5yZWNpcGllbnRLZXktPmdldFBvaW50KCk7CiAgICAgICAgaWYgKCEkdGhpcy0+c2VuZGVyS2V5LT5nZXRQb2ludCgpLT5nZXRDdXJ2ZSgpLT5jb250YWlucygkcG9pbnQtPmdldFgoKSwgJHBvaW50LT5nZXRZKCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiSW52YWxpZCBFQ0RIIGV4Y2hhbmdlIC0gUG9pbnQgZG9lcyBub3QgZXhpc3Qgb24gb3VyIGN1cnZlIik7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/EcDH/EcDHInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cRWNESDsKCi8qKgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHlhcyBEYW50ZXIKICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQdWJsaWNLZXlJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFByaXZhdGVLZXlJbnRlcmZhY2U7CgovKioKICogVGhpcyBpcyB0aGUgY29udHJhY3QgZm9yIGltcGxlbWVudGluZyBFY0RIIChFQyBEaWZmaWUgSGVsbG1hbikuCiAqLwppbnRlcmZhY2UgRWNESEludGVyZmFjZQp7CgogICAgLyoqCiAgICAgKiBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBzaGFyZWQga2V5IGZvciB0aGUgZXhjaGFuZ2UuCiAgICAgKgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjYWxjdWxhdGVTaGFyZWRLZXkoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gUHVibGljS2V5SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVNdWx0aVBhcnR5S2V5KCk7CgogICAgLyoqCiAgICAgKiBTZXRzIHRoZSBzZW5kZXIncyBrZXkuCiAgICAgKgogICAgICogQHBhcmFtIFByaXZhdGVLZXlJbnRlcmZhY2UgJGtleQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2VuZGVyS2V5KFByaXZhdGVLZXlJbnRlcmZhY2UgJGtleSk7CgogICAgLyoqCiAgICAgKiBTZXRzIHRoZSByZWNpcGllbnQga2V5LgogICAgICoKICAgICAqIEBwYXJhbSAgUHVibGljS2V5SW50ZXJmYWNlICRrZXkKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UmVjaXBpZW50S2V5KFB1YmxpY0tleUludGVyZmFjZSAka2V5KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Key/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Key/PrivateKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5OwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEVjREhcRWNESDsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQ7CgovKioKICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgcHVibGljIC0gcHJpdmF0ZSBrZXkgZXhjaGFuZ2UgZm9yIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uCiAqLwpjbGFzcyBQcml2YXRlS2V5IGltcGxlbWVudHMgUHJpdmF0ZUtleUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHJpdmF0ZSAkZ2VuZXJhdG9yOwoKICAgIC8qKgogICAgICogQHZhciBcR01QCiAgICAgKi8KICAgIHByaXZhdGUgJHNlY3JldE11bHRpcGxpZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIEdtcE1hdGhJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkYWRhcHRlcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyCiAgICAgKiBAcGFyYW0gR2VuZXJhdG9yUG9pbnQgJGdlbmVyYXRvcgogICAgICogQHBhcmFtIFxHTVAgJHNlY3JldE11bHRpcGxpZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsIEdlbmVyYXRvclBvaW50ICRnZW5lcmF0b3IsIFxHTVAgJHNlY3JldE11bHRpcGxpZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yID0gJGdlbmVyYXRvcjsKICAgICAgICAkdGhpcy0+c2VjcmV0TXVsdGlwbGllciA9ICRzZWNyZXRNdWx0aXBsaWVyOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5SW50ZXJmYWNlOjpnZXRQdWJsaWNLZXkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHVibGljS2V5KCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleSgkdGhpcy0+YWRhcHRlciwgJHRoaXMtPmdlbmVyYXRvciwgJHRoaXMtPmdlbmVyYXRvci0+bXVsKCR0aGlzLT5zZWNyZXRNdWx0aXBsaWVyKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFByaXZhdGVLZXlJbnRlcmZhY2U6OmdldFBvaW50KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvaW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdlbmVyYXRvcjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHJpdmF0ZUtleUludGVyZmFjZTo6Z2V0Q3VydmUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q3VydmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2VuZXJhdG9yLT5nZXRDdXJ2ZSgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5SW50ZXJmYWNlOjpnZXRTZWNyZXQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VjcmV0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlY3JldE11bHRpcGxpZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFByaXZhdGVLZXlJbnRlcmZhY2U6OmNyZWF0ZUV4Y2hhbmdlKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZUV4Y2hhbmdlKFB1YmxpY0tleUludGVyZmFjZSAkcmVjaXBpZW50ID0gbnVsbCkKICAgIHsKICAgICAgICAkZWNkaCA9IG5ldyBFY0RIKCR0aGlzLT5hZGFwdGVyKTsKICAgICAgICAkZWNkaAogICAgICAgICAgICAtPnNldFNlbmRlcktleSgkdGhpcykKICAgICAgICAgICAgLT5zZXRSZWNpcGllbnRLZXkoJHJlY2lwaWVudCk7CgogICAgICAgIHJldHVybiAkZWNkaDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Key/PrivateKeyInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5OwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEVjREhcRWNESEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQ7CgovKioKICogVGhpcyBpcyBhIGNvbnRyYWN0IGZvciB0aGUgUHJpdmF0ZUtleSBwb3J0aW9uIG9mIEVDRFNBLgogKi8KaW50ZXJmYWNlIFByaXZhdGVLZXlJbnRlcmZhY2UKewoKICAgIC8qKgogICAgICogQHJldHVybiBQdWJsaWNLZXlJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFB1YmxpY0tleSgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG9pbnQoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VjcmV0KCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIFB1YmxpY0tleUludGVyZmFjZSAkcmVjaXBpZW50CiAgICAgKiBAcmV0dXJuIEVjREhJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZUV4Y2hhbmdlKFB1YmxpY0tleUludGVyZmFjZSAkcmVjaXBpZW50KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Key/PublicKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5OwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludDsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcUG9pbnRJbnRlcmZhY2U7CgovKioKICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgcHVibGljLSBwcml2YXRlIGtleSBleGNoYW5nZSBmb3Igc2lnbmF0dXJlIHZlcmlmaWNhdGlvbgogKi8KY2xhc3MgUHVibGljS2V5IGltcGxlbWVudHMgUHVibGljS2V5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgQ3VydmVGcEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJGN1cnZlOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRnZW5lcmF0b3I7CgogICAgLyoqCiAgICAgKgogICAgICogQHZhciBQb2ludEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJHBvaW50OwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJGFkYXB0ZXI7CgogICAgLyoqCiAgICAgKiBJbml0aWFsaXplIGEgbmV3IFB1YmxpY0tleSBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gIEdtcE1hdGhJbnRlcmZhY2UgICRhZGFwdGVyCiAgICAgKiBAcGFyYW0gIEdlbmVyYXRvclBvaW50ICAgICRnZW5lcmF0b3IKICAgICAqIEBwYXJhbSAgUG9pbnRJbnRlcmZhY2UgICAgJHBvaW50CiAgICAgKiBAdGhyb3dzIFxMb2dpY0V4Y2VwdGlvbgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciwgR2VuZXJhdG9yUG9pbnQgJGdlbmVyYXRvciwgUG9pbnRJbnRlcmZhY2UgJHBvaW50KQogICAgewogICAgICAgICR0aGlzLT5jdXJ2ZSA9ICRnZW5lcmF0b3ItPmdldEN1cnZlKCk7CiAgICAgICAgJHRoaXMtPmdlbmVyYXRvciA9ICRnZW5lcmF0b3I7CiAgICAgICAgJHRoaXMtPnBvaW50ID0gJHBvaW50OwogICAgICAgICR0aGlzLT5hZGFwdGVyID0gJGFkYXB0ZXI7CgogICAgICAgICRuID0gJGdlbmVyYXRvci0+Z2V0T3JkZXIoKTsKCiAgICAgICAgaWYgKCRhZGFwdGVyLT5jbXAoJHBvaW50LT5nZXRYKCksIGdtcF9pbml0KDAsIDEwKSkgPCAwIHx8ICRhZGFwdGVyLT5jbXAoJG4sICRwb2ludC0+Z2V0WCgpKSA8PSAwCiAgICAgICAgICAgIHx8ICRhZGFwdGVyLT5jbXAoJHBvaW50LT5nZXRZKCksIGdtcF9pbml0KDAsIDEwKSkgPCAwIHx8ICRhZGFwdGVyLT5jbXAoJG4sICRwb2ludC0+Z2V0WSgpKSA8PSAwCiAgICAgICAgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiR2VuZXJhdG9yIHBvaW50IGhhcyB4IGFuZCB5IG91dCBvZiByYW5nZS4iKTsKICAgICAgICB9CgogICAgICAgIC8vIFNhbml0eSBjaGVjay4gUG9pbnQgKHgseSkgdmFsdWVzIGFyZSBxdWFsaWZpZWQgYWdhaW5zdCBpdCdzCiAgICAgICAgLy8gZ2VuZXJhdG9yIGFuZCBjdXJ2ZS4gSGVyZSB3ZSBlbnN1cmUgdGhlIFBvaW50IGFuZCBHZW5lcmF0b3IKICAgICAgICAvLyBhcmUgdGhlIHNhbWUuCiAgICAgICAgaWYgKCEkZ2VuZXJhdG9yLT5nZXRDdXJ2ZSgpLT5lcXVhbHMoJHBvaW50LT5nZXRDdXJ2ZSgpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkN1cnZlIGZvciBnaXZlbiBwb2ludCBub3QgaW4gY29tbW9uIHdpdGggR2VuZXJhdG9yUG9pbnQiKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFB1YmxpY0tleUludGVyZmFjZTo6Z2V0Q3VydmUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q3VydmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y3VydmU7CiAgICB9CgogICAgLyoqCiAgICAgKiB7JGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFB1YmxpY0tleUludGVyZmFjZTo6Z2V0R2VuZXJhdG9yKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEdlbmVyYXRvcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZW5lcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFB1YmxpY0tleUludGVyZmFjZTo6Z2V0UG9pbnQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG9pbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9pbnQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Key/PublicKeyInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5OwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnBJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXFBvaW50SW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludDsKCi8qKgogKiBUaGlzIGlzIHRoZSBjb250cmFjdCBmb3IgdGhlIFB1YmxpY0tleSBwb3J0aW9uIG9mIEVDRFNBLgogKi8KaW50ZXJmYWNlIFB1YmxpY0tleUludGVyZmFjZQp7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEN1cnZlRnBJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEN1cnZlKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFBvaW50SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb2ludCgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Signature/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Signature/Signature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICogUGxhaW4gT2xkIFBIUCBPYmplY3QgdGhhdCBzdG9yZXMgdGhlIHNpZ25hdHVyZSByLHMgZm9yIEVDRFNBCiAqLwpjbGFzcyBTaWduYXR1cmUgaW1wbGVtZW50cyBTaWduYXR1cmVJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIFxHTVAKICAgICAqLwogICAgcHJvdGVjdGVkICRyOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgXEdNUAogICAgICovCiAgICBwcm90ZWN0ZWQgJHM7CgogICAgLyoqCiAgICAgKiBJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlIHdpdGggdmFsdWVzCiAgICAgKgogICAgICogQHBhcmFtIFxHTVAgJHIKICAgICAqIEBwYXJhbSBcR01QICRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChcR01QICRyLCBcR01QICRzKQogICAgewogICAgICAgICR0aGlzLT5yID0gJHI7CiAgICAgICAgJHRoaXMtPnMgPSAkczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xTaWduYXR1cmVcU2lnbmF0dXJlSW50ZXJmYWNlOjpnZXRSKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xTaWduYXR1cmVcU2lnbmF0dXJlSW50ZXJmYWNlOjpnZXRTKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+czsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Signature/SignatureInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICogVGhpcyBpcyB0aGUgY29udHJhY3QgZm9yIGRlc2NyaWJpbmcgYSBzaWduYXR1cmUgdXNlZCBpbiBFQ0RTQS4KICovCmludGVyZmFjZSBTaWduYXR1cmVJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByIHBhcmFtZXRlciBvZiB0aGUgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UigpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcyBwYXJhbWV0ZXIgb2YgdGhlIHNpZ25hdHVyZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFMoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Crypto/Signature/Signer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHJpdmF0ZUtleUludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5SW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludDsKdXNlIE1kYW50ZXJcRWNjXFV0aWxcTnVtYmVyU2l6ZTsKdXNlIE1kYW50ZXJcRWNjXFV0aWxcQmluYXJ5U3RyaW5nOwoKY2xhc3MgU2lnbmVyCnsKCiAgICAvKioKICAgICAqCiAgICAgKiBAdmFyIEdtcE1hdGhJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkYWRhcHRlcjsKCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICAkdGhpcy0+YWRhcHRlciA9ICRhZGFwdGVyOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEdlbmVyYXRvclBvaW50ICRHCiAgICAgKiBAcGFyYW0gXEdNUCAkaGFzaAogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0cnVuY2F0ZUhhc2goR2VuZXJhdG9yUG9pbnQgJEcsIFxHTVAgJGhhc2gpCiAgICB7CiAgICAgICAgJGRlYyA9ICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkaGFzaCk7CiAgICAgICAgJGhleFNpemUgPSAoaW50KSBjZWlsKEJpbmFyeVN0cmluZzo6bGVuZ3RoKCR0aGlzLT5hZGFwdGVyLT5kZWNIZXgoJGRlYykpIC8gNCkgKiA0OwoKICAgICAgICAkaGFzaEJpdHMgPSAkdGhpcy0+YWRhcHRlci0+YmFzZUNvbnZlcnQoJGRlYywgMTAsIDIpOwogICAgICAgIGlmIChCaW5hcnlTdHJpbmc6Omxlbmd0aCgkaGFzaEJpdHMpIDwgJGhleFNpemUgKiA0KSB7CiAgICAgICAgICAgICRoYXNoQml0cyA9IHN0cl9wYWQoJGhhc2hCaXRzLCAkaGV4U2l6ZSAqIDQsICcwJywgU1RSX1BBRF9MRUZUKTsKICAgICAgICB9CgogICAgICAgICRtZXNzYWdlSGFzaCA9IGdtcF9pbml0KEJpbmFyeVN0cmluZzo6c3Vic3RyaW5nKCRoYXNoQml0cywgMCwgTnVtYmVyU2l6ZTo6Ym5OdW1CaXRzKCR0aGlzLT5hZGFwdGVyLCAkRy0+Z2V0T3JkZXIoKSkpLCAyKTsKICAgICAgICByZXR1cm4gJG1lc3NhZ2VIYXNoOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEdlbmVyYXRvclBvaW50ICRHCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0KICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzaERhdGEoR2VuZXJhdG9yUG9pbnQgJEcsICRhbGdvcml0aG0sICRkYXRhKQogICAgewogICAgICAgIGlmICghaW5fYXJyYXkoJGFsZ29yaXRobSwgaGFzaF9hbGdvcygpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaGFzaGluZyBhbGdvcml0aG0nKTsKICAgICAgICB9CgogICAgICAgICRoYXNoID0gZ21wX2luaXQoaGFzaCgkYWxnb3JpdGhtLCAkZGF0YSwgZmFsc2UpLCAxNik7CiAgICAgICAgcmV0dXJuICR0aGlzLT50cnVuY2F0ZUhhc2goJEcsICRoYXNoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQcml2YXRlS2V5SW50ZXJmYWNlICRrZXkKICAgICAqIEBwYXJhbSBcR01QICRoYXNoCiAgICAgKiBAcGFyYW0gXEdNUCAkcmFuZG9tSwogICAgICogQHJldHVybiBTaWduYXR1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oUHJpdmF0ZUtleUludGVyZmFjZSAka2V5LCBcR01QICRoYXNoLCBcR01QICRyYW5kb21LKQogICAgewogICAgICAgICRtYXRoID0gJHRoaXMtPmFkYXB0ZXI7CiAgICAgICAgJGdlbmVyYXRvciA9ICRrZXktPmdldFBvaW50KCk7CiAgICAgICAgJG1vZE1hdGggPSAkbWF0aC0+Z2V0TW9kdWxhckFyaXRobWV0aWMoJGdlbmVyYXRvci0+Z2V0T3JkZXIoKSk7CgogICAgICAgICRoYXNoID0gJHRoaXMtPnRydW5jYXRlSGFzaCgkZ2VuZXJhdG9yLCAkaGFzaCk7CiAgICAgICAgJGsgPSAkbWF0aC0+bW9kKCRyYW5kb21LLCAkZ2VuZXJhdG9yLT5nZXRPcmRlcigpKTsKICAgICAgICAkcDEgPSAkZ2VuZXJhdG9yLT5tdWwoJGspOwogICAgICAgICRyID0gJHAxLT5nZXRYKCk7CiAgICAgICAgJHplcm8gPSBnbXBfaW5pdCgwLCAxMCk7CiAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJHIsICR6ZXJvKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkVycm9yOiByYW5kb20gbnVtYmVyIFIgPSAwIik7CiAgICAgICAgfQoKICAgICAgICAkaGFzaCA9ICR0aGlzLT50cnVuY2F0ZUhhc2goJGdlbmVyYXRvciwgJGhhc2gpOwogICAgICAgICRzID0gJG1vZE1hdGgtPmRpdigkbW9kTWF0aC0+YWRkKCRoYXNoLCAkbWF0aC0+bXVsKCRrZXktPmdldFNlY3JldCgpLCAkcikpLCAkayk7CiAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJHMsICR6ZXJvKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkVycm9yOiByYW5kb20gbnVtYmVyIFMgPSAwIik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNpZ25hdHVyZSgkciwgJHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFB1YmxpY0tleUludGVyZmFjZSAka2V5CiAgICAgKiBAcGFyYW0gU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqIEBwYXJhbSBcR01QICRoYXNoCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShQdWJsaWNLZXlJbnRlcmZhY2UgJGtleSwgU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUsIFxHTVAgJGhhc2gpCiAgICB7CgogICAgICAgICRnZW5lcmF0b3IgPSAka2V5LT5nZXRHZW5lcmF0b3IoKTsKICAgICAgICAkbiA9ICRnZW5lcmF0b3ItPmdldE9yZGVyKCk7CiAgICAgICAgJHIgPSAkc2lnbmF0dXJlLT5nZXRSKCk7CiAgICAgICAgJHMgPSAkc2lnbmF0dXJlLT5nZXRTKCk7CgogICAgICAgICRtYXRoID0gJHRoaXMtPmFkYXB0ZXI7CiAgICAgICAgJG9uZSA9IGdtcF9pbml0KDEsIDEwKTsKICAgICAgICBpZiAoJG1hdGgtPmNtcCgkciwgJG9uZSkgPCAxIHx8ICRtYXRoLT5jbXAoJHIsICRtYXRoLT5zdWIoJG4sICRvbmUpKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtYXRoLT5jbXAoJHMsICRvbmUpIDwgMSB8fCAkbWF0aC0+Y21wKCRzLCAkbWF0aC0+c3ViKCRuLCAkb25lKSkgPiAwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRtb2RNYXRoID0gJG1hdGgtPmdldE1vZHVsYXJBcml0aG1ldGljKCRuKTsKICAgICAgICAkYyA9ICRtYXRoLT5pbnZlcnNlTW9kKCRzLCAkbik7CiAgICAgICAgJHUxID0gJG1vZE1hdGgtPm11bCgkaGFzaCwgJGMpOwogICAgICAgICR1MiA9ICRtb2RNYXRoLT5tdWwoJHIsICRjKTsKICAgICAgICAkeHkgPSAkZ2VuZXJhdG9yLT5tdWwoJHUxKS0+YWRkKCRrZXktPmdldFBvaW50KCktPm11bCgkdTIpKTsKICAgICAgICAkdiA9ICRtYXRoLT5tb2QoJHh5LT5nZXRYKCksICRuKTsKCiAgICAgICAgcmV0dXJuIEJpbmFyeVN0cmluZzo6Y29uc3RhbnRUaW1lQ29tcGFyZSgkbWF0aC0+dG9TdHJpbmcoJHYpLCAkbWF0aC0+dG9TdHJpbmcoJHIpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Curves/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Curves/CurveFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcTWF0aFxNYXRoQWRhcHRlckZhY3Rvcnk7CgpjbGFzcyBDdXJ2ZUZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAcGFyYW0gJG5hbWUKICAgICAqIEByZXR1cm4gTmFtZWRDdXJ2ZUZwfFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnB8XE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVGcEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEN1cnZlQnlOYW1lKCRuYW1lKQogICAgewogICAgICAgICRhZGFwdGVyID0gTWF0aEFkYXB0ZXJGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiAgICAgICAgJG5pc3RGYWN0b3J5ID0gc2VsZjo6Z2V0TmlzdEZhY3RvcnkoJGFkYXB0ZXIpOwogICAgICAgICRzZWNwRmFjdG9yeSA9IHNlbGY6OmdldFNlY3BGYWN0b3J5KCRhZGFwdGVyKTsKCiAgICAgICAgc3dpdGNoICgkbmFtZSkgewogICAgICAgICAgICBjYXNlIE5pc3RDdXJ2ZTo6TkFNRV9QMTkyOgogICAgICAgICAgICAgICAgcmV0dXJuICRuaXN0RmFjdG9yeS0+Y3VydmUxOTIoKTsKICAgICAgICAgICAgY2FzZSBOaXN0Q3VydmU6Ok5BTUVfUDIyNDoKICAgICAgICAgICAgICAgIHJldHVybiAkbmlzdEZhY3RvcnktPmN1cnZlMjI0KCk7CiAgICAgICAgICAgIGNhc2UgTmlzdEN1cnZlOjpOQU1FX1AyNTY6CiAgICAgICAgICAgICAgICByZXR1cm4gJG5pc3RGYWN0b3J5LT5jdXJ2ZTI1NigpOwogICAgICAgICAgICBjYXNlIE5pc3RDdXJ2ZTo6TkFNRV9QMzg0OgogICAgICAgICAgICAgICAgcmV0dXJuICRuaXN0RmFjdG9yeS0+Y3VydmUzODQoKTsKICAgICAgICAgICAgY2FzZSBOaXN0Q3VydmU6Ok5BTUVfUDUyMToKICAgICAgICAgICAgICAgIHJldHVybiAkbmlzdEZhY3RvcnktPmN1cnZlNTIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTEyUjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTExMnIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTkySzE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTE5MmsxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2SzE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTI1NmsxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2UjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTI1NnIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMzg0UjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTM4NHIxKCk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Vua25vd24gY3VydmUuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtICRuYW1lCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yQnlOYW1lKCRuYW1lKQogICAgewogICAgICAgICRhZGFwdGVyID0gTWF0aEFkYXB0ZXJGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiAgICAgICAgJG5pc3RGYWN0b3J5ID0gc2VsZjo6Z2V0TmlzdEZhY3RvcnkoJGFkYXB0ZXIpOwogICAgICAgICRzZWNwRmFjdG9yeSA9IHNlbGY6OmdldFNlY3BGYWN0b3J5KCRhZGFwdGVyKTsKCiAgICAgICAgc3dpdGNoICgkbmFtZSkgewogICAgICAgICAgICBjYXNlIE5pc3RDdXJ2ZTo6TkFNRV9QMTkyOgogICAgICAgICAgICAgICAgcmV0dXJuICRuaXN0RmFjdG9yeS0+Z2VuZXJhdG9yMTkyKCk7CiAgICAgICAgICAgIGNhc2UgTmlzdEN1cnZlOjpOQU1FX1AyMjQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJG5pc3RGYWN0b3J5LT5nZW5lcmF0b3IyMjQoKTsKICAgICAgICAgICAgY2FzZSBOaXN0Q3VydmU6Ok5BTUVfUDI1NjoKICAgICAgICAgICAgICAgIHJldHVybiAkbmlzdEZhY3RvcnktPmdlbmVyYXRvcjI1NigpOwogICAgICAgICAgICBjYXNlIE5pc3RDdXJ2ZTo6TkFNRV9QMzg0OgogICAgICAgICAgICAgICAgcmV0dXJuICRuaXN0RmFjdG9yeS0+Z2VuZXJhdG9yMzg0KCk7CiAgICAgICAgICAgIGNhc2UgTmlzdEN1cnZlOjpOQU1FX1A1MjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJG5pc3RGYWN0b3J5LT5nZW5lcmF0b3I1MjEoKTsKICAgICAgICAgICAgY2FzZSBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8xMTJSMToKICAgICAgICAgICAgICAgIHJldHVybiAkc2VjcEZhY3RvcnktPmdlbmVyYXRvcjExMnIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTkySzE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5nZW5lcmF0b3IxOTJrMSgpOwogICAgICAgICAgICBjYXNlIFNlY2dDdXJ2ZTo6TkFNRV9TRUNQXzI1NksxOgogICAgICAgICAgICAgICAgcmV0dXJuICRzZWNwRmFjdG9yeS0+Z2VuZXJhdG9yMjU2azEoKTsKICAgICAgICAgICAgY2FzZSBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8yNTZSMToKICAgICAgICAgICAgICAgIHJldHVybiAkc2VjcEZhY3RvcnktPmdlbmVyYXRvcjI1NnIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMzg0UjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5nZW5lcmF0b3IzODRyMSgpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmtub3duIGdlbmVyYXRvci4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIE5pc3RDdXJ2ZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXROaXN0RmFjdG9yeShHbXBNYXRoSW50ZXJmYWNlICRtYXRoKQogICAgewogICAgICAgIHJldHVybiBuZXcgTmlzdEN1cnZlKCRtYXRoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gU2VjZ0N1cnZlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFNlY3BGYWN0b3J5KEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTZWNnQ3VydmUoJG1hdGgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Curves/NamedCurveFp.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZVBhcmFtZXRlcnM7CgpjbGFzcyBOYW1lZEN1cnZlRnAgZXh0ZW5kcyBDdXJ2ZUZwCnsKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkbmFtZTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICRuYW1lCiAgICAgKiBAcGFyYW0gQ3VydmVQYXJhbWV0ZXJzICAkcGFyYW1ldGVycwogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lLCBDdXJ2ZVBhcmFtZXRlcnMgJHBhcmFtZXRlcnMsIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKCiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkcGFyYW1ldGVycywgJGFkYXB0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmFtZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Curves/NistCurve.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIE1kYW50ZXJcRWNjXEN1cnZlczsKCnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGhJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnA7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnBJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlUGFyYW1ldGVyczsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQ7CnVzZSBNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICogVGhpcyBjbGFzcyBlbmNhcHN1bGF0ZXMgdGhlIE5JU1QgcmVjb21tZW5kZWQgY3VydmVzCiAqIC0gZmllbGRzIGFyZSBNZXJzZW5uZSBwcmltZXMsIGkuZS4KICogZm9yIHNvbWUgcCwgTWVyc2VubmVfcHJpbmUgPSAyXnAgLSAxCiAqLwpjbGFzcyBOaXN0Q3VydmUKewoKICAgIGNvbnN0IE5BTUVfUDE5MiA9ICduaXN0cDE5Mic7CiAgICBjb25zdCBOQU1FX1AyMjQgPSAnbmlzdHAyMjQnOwogICAgY29uc3QgTkFNRV9QMjU2ID0gJ25pc3RwMjU2JzsKICAgIGNvbnN0IE5BTUVfUDM4NCA9ICduaXN0cDM4NCc7CiAgICBjb25zdCBOQU1FX1A1MjEgPSAnbmlzdHA1MjEnOwoKICAgIC8qKgogICAgICogQHZhciBHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGFkYXB0ZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICAkdGhpcy0+YWRhcHRlciA9ICRhZGFwdGVyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBOSVNUIFAtMTkyIGN1cnZlLgogICAgICoKICAgICAqIEByZXR1cm4gQ3VydmVGcEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VydmUxOTIoKQogICAgewogICAgICAgICRwID0gZ21wX2luaXQoJzYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMyMDc2NjY0MTYwODM5MDg3MDAzOTAzMjQ5NjEyNzknLCAxMCk7CiAgICAgICAgJGIgPSBnbXBfaW5pdCgnNjQyMTA1MTllNTljODBlNzBmYTdlOWFiNzIyNDMwNDlmZWI4ZGVlY2MxNDZiOWIxJywgMTYpOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMTkyLCAkcCwgZ21wX2luaXQoJy0zJywgMTApLCAkYik7CgogICAgICAgIHJldHVybiBuZXcgTmFtZWRDdXJ2ZUZwKHNlbGY6Ok5BTUVfUDE5MiwgJHBhcmFtZXRlcnMsICR0aGlzLT5hZGFwdGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gTklTVCBQLTE5MiBnZW5lcmF0b3IuCiAgICAgKgogICAgICogQHBhcmFtICBSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvcgogICAgICogQHJldHVybiBHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdG9yMTkyKFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yID0gbnVsbCkKICAgIHsKICAgICAgICAkY3VydmUgPSAkdGhpcy0+Y3VydmUxOTIoKTsKICAgICAgICAkb3JkZXIgPSBnbXBfaW5pdCgnNjI3NzEwMTczNTM4NjY4MDc2MzgzNTc4OTQyMzE3NjA1OTAxMzc2NzE5NDc3MzE4Mjg0MjI4NDA4MScsIDEwKTsKCiAgICAgICAgJHggPSBnbXBfaW5pdCgnMTg4ZGE4MGViMDMwOTBmNjdjYmYyMGViNDNhMTg4MDBmNGZmMGFmZDgyZmYxMDEyJywgMTYpOwogICAgICAgICR5ID0gZ21wX2luaXQoJzA3MTkyYjk1ZmZjOGRhNzg2MzEwMTFlZDZiMjRjZGQ1NzNmOTc3YTExZTc5NDgxMScsIDE2KTsKCiAgICAgICAgcmV0dXJuICRjdXJ2ZS0+Z2V0R2VuZXJhdG9yKCR4LCAkeSwgJG9yZGVyLCAkcmFuZG9tR2VuZXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gTklTVCBQLTIyNCBjdXJ2ZQogICAgICoKICAgICAqIEByZXR1cm4gQ3VydmVGcEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VydmUyMjQoKQogICAgewogICAgICAgICRwID0gZ21wX2luaXQoJzI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjMwNjczNTU3OTE2MjYwMDI2MzA4MTQzNTEwMDY2Mjk4ODgxJywgMTApOwogICAgICAgICRiID0gZ21wX2luaXQoJ2I0MDUwYTg1MGMwNGIzYWJmNTQxMzI1NjUwNDRiMGI3ZDdiZmQ4YmEyNzBiMzk0MzIzNTVmZmI0JywgMTYpOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMjI0LCAkcCwgZ21wX2luaXQoLTMsIDEwKSwgJGIpOwoKICAgICAgICByZXR1cm4gbmV3IE5hbWVkQ3VydmVGcChzZWxmOjpOQU1FX1AyMjQsICRwYXJhbWV0ZXJzLCAkdGhpcy0+YWRhcHRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIE5JU1QgUC0yMjQgZ2VuZXJhdG9yLgogICAgICoKICAgICAqIEBwYXJhbSAgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IKICAgICAqIEByZXR1cm4gR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRvcjIyNChSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJGN1cnZlID0gJHRoaXMtPmN1cnZlMjI0KCk7CiAgICAgICAgJG9yZGVyID0gZ21wX2luaXQoJzI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDYxJywgMTApOwoKICAgICAgICAkeCA9IGdtcF9pbml0KCdiNzBlMGNiZDZiYjRiZjdmMzIxMzkwYjk0YTAzYzFkMzU2YzIxMTIyMzQzMjgwZDYxMTVjMWQyMScsIDE2KTsKICAgICAgICAkeSA9IGdtcF9pbml0KCdiZDM3NjM4OGI1ZjcyM2ZiNGMyMmRmZTZjZDQzNzVhMDVhMDc0NzY0NDRkNTgxOTk4NTAwN2UzNCcsIDE2KTsKCiAgICAgICAgcmV0dXJuICRjdXJ2ZS0+Z2V0R2VuZXJhdG9yKCR4LCAkeSwgJG9yZGVyLCAkcmFuZG9tR2VuZXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gTklTVCBQLTI1NiBjdXJ2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEN1cnZlRnAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGN1cnZlMjU2KCkKICAgIHsKICAgICAgICAkcCA9IGdtcF9pbml0KCcxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1MzAwODYxNDM0MTUyOTAzMTQxOTU1MzM2MzEzMDg4NjcwOTc4NTM5NTEnLCAxMCk7CiAgICAgICAgJGIgPSBnbXBfaW5pdCgnMHg1YWM2MzVkOGFhM2E5M2U3YjNlYmJkNTU3Njk4ODZiYzY1MWQwNmIwY2M1M2IwZjYzYmNlM2MzZTI3ZDI2MDRiJywgMTYpOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMjU2LCAkcCwgZ21wX2luaXQoLTMsIDEwKSwgJGIpOwoKICAgICAgICByZXR1cm4gbmV3IE5hbWVkQ3VydmVGcChzZWxmOjpOQU1FX1AyNTYsICRwYXJhbWV0ZXJzLCAkdGhpcy0+YWRhcHRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIE5JU1QgUC0yNTYgZ2VuZXJhdG9yLgogICAgICoKICAgICAqIEBwYXJhbSAgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IKICAgICAqIEByZXR1cm4gR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRvcjI1NihSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJGN1cnZlID0gJHRoaXMtPmN1cnZlMjU2KCk7CiAgICAgICAgJG9yZGVyID0gZ21wX2luaXQoJzExNTc5MjA4OTIxMDM1NjI0ODc2MjY5NzQ0Njk0OTQwNzU3MzUyOTk5Njk1NTIyNDEzNTc2MDM0MjQyMjI1OTA2MTA2ODUxMjA0NDM2OScsIDEwKTsKCiAgICAgICAgJHggPSBnbXBfaW5pdCgnMHg2YjE3ZDFmMmUxMmM0MjQ3ZjhiY2U2ZTU2M2E0NDBmMjc3MDM3ZDgxMmRlYjMzYTBmNGExMzk0NWQ4OThjMjk2JywgMTYpOwogICAgICAgICR5ID0gZ21wX2luaXQoJzB4NGZlMzQyZTJmZTFhN2Y5YjhlZTdlYjRhN2MwZjllMTYyYmNlMzM1NzZiMzE1ZWNlY2JiNjQwNjgzN2JmNTFmNScsIDE2KTsKCiAgICAgICAgcmV0dXJuICRjdXJ2ZS0+Z2V0R2VuZXJhdG9yKCR4LCAkeSwgJG9yZGVyLCAkcmFuZG9tR2VuZXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gTklTVCBQLTM4NCBjdXJ2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEN1cnZlRnAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGN1cnZlMzg0KCkKICAgIHsKICAgICAgICAkcCA9IGdtcF9pbml0KCczOTQwMjAwNjE5NjM5NDQ3OTIxMjI3OTA0MDEwMDE0MzYxMzgwNTA3OTczOTI3MDQ2NTQ0NjY2Nzk0ODI5MzQwNDI0NTcyMTc3MTQ5Njg3MDMyOTA0NzI2NjA4ODI1ODkzODAwMTg2MTYwNjk3MzExMjMxOScsIDEwKTsKICAgICAgICAkYiA9IGdtcF9pbml0KCcweGIzMzEyZmE3ZTIzZWU3ZTQ5ODhlMDU2YmUzZjgyZDE5MTgxZDljNmVmZTgxNDExMjAzMTQwODhmNTAxMzg3NWFjNjU2Mzk4ZDhhMmVkMTlkMmE4NWM4ZWRkM2VjMmFlZicsIDE2KTsKCiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKDM4NCwgJHAsIGdtcF9pbml0KC0zLCAxMCksICRiKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZEN1cnZlRnAoc2VsZjo6TkFNRV9QMzg0LCAkcGFyYW1ldGVycywgJHRoaXMtPmFkYXB0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBOSVNUIFAtMzg0IGdlbmVyYXRvci4KICAgICAqCiAgICAgKiBAcGFyYW0gIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yCiAgICAgKiBAcmV0dXJuIEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0b3IzODQoUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IgPSBudWxsKQogICAgewogICAgICAgICRjdXJ2ZSA9ICR0aGlzLT5jdXJ2ZTM4NCgpOwogICAgICAgICRvcmRlciA9IGdtcF9pbml0KCczOTQwMjAwNjE5NjM5NDQ3OTIxMjI3OTA0MDEwMDE0MzYxMzgwNTA3OTczOTI3MDQ2NTQ0NjY2Nzk0NjkwNTI3OTYyNzY1OTM5OTExMzI2MzU2OTM5ODk1NjMwODE1MjI5NDkxMzU1NDQzMzY1Mzk0MjY0MycsIDEwKTsKCiAgICAgICAgJHggPSBnbXBfaW5pdCgnMHhhYTg3Y2EyMmJlOGIwNTM3OGViMWM3MWVmMzIwYWQ3NDZlMWQzYjYyOGJhNzliOTg1OWY3NDFlMDgyNTQyYTM4NTUwMmYyNWRiZjU1Mjk2YzNhNTQ1ZTM4NzI3NjBhYjcnLCAxNik7CiAgICAgICAgJHkgPSBnbXBfaW5pdCgnMHgzNjE3ZGU0YTk2MjYyYzZmNWQ5ZTk4YmY5MjkyZGMyOWY4ZjQxZGJkMjg5YTE0N2NlOWRhMzExM2I1ZjBiOGMwMGE2MGIxY2UxZDdlODE5ZDdhNDMxZDdjOTBlYTBlNWYnLCAxNik7CgogICAgICAgIHJldHVybiAkY3VydmUtPmdldEdlbmVyYXRvcigkeCwgJHksICRvcmRlciwgJHJhbmRvbUdlbmVyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIE5JU1QgUC01MjEgY3VydmUuCiAgICAgKgogICAgICogQHJldHVybiBDdXJ2ZUZwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJ2ZTUyMSgpCiAgICB7CiAgICAgICAgJHAgPSBnbXBfaW5pdCgnNjg2NDc5NzY2MDEzMDYwOTcxNDk4MTkwMDc5OTA4MTM5MzIxNzI2OTQzNTMwMDE0MzMwNTQwOTM5NDQ2MzQ1OTE4NTU0MzE4MzM5NzY1NjA1MjEyMjU1OTY0MDY2MTQ1NDU1NDk3NzI5NjMxMTM5MTQ4MDg1ODAzNzEyMTk4Nzk5OTcxNjY0MzgxMjU3NDAyODI5MTExNTA1NzE1MScsIDEwKTsKICAgICAgICAkYiA9IGdtcF9pbml0KCcweDA1MTk1M2ViOTYxOGUxYzlhMWY5MjlhMjFhMGI2ODU0MGVlYTJkYTcyNWI5OWIzMTVmM2I4YjQ4OTkxOGVmMTA5ZTE1NjE5Mzk1MWVjN2U5MzdiMTY1MmMwYmQzYmIxYmYwNzM1NzNkZjg4M2QyYzM0ZjFlZjQ1MWZkNDZiNTAzZjAwJywgMTYpOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoNTIxLCAkcCwgZ21wX2luaXQoLTMsIDEwKSwgJGIpOwoKICAgICAgICByZXR1cm4gbmV3IE5hbWVkQ3VydmVGcChzZWxmOjpOQU1FX1A1MjEsICRwYXJhbWV0ZXJzLCAkdGhpcy0+YWRhcHRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIE5JU1QgUC01MjEgZ2VuZXJhdG9yLgogICAgICoKICAgICAqIEBwYXJhbSAgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IKICAgICAqIEByZXR1cm4gR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRvcjUyMShSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJGN1cnZlID0gJHRoaXMtPmN1cnZlNTIxKCk7CiAgICAgICAgJG9yZGVyID0gZ21wX2luaXQoJzY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0NDknLCAxMCk7CgogICAgICAgICR4ID0gZ21wX2luaXQoJzB4YzY4NThlMDZiNzA0MDRlOWNkOWUzZWNiNjYyMzk1YjQ0MjljNjQ4MTM5MDUzZmI1MjFmODI4YWY2MDZiNGQzZGJhYTE0YjVlNzdlZmU3NTkyOGZlMWRjMTI3YTJmZmE4ZGUzMzQ4YjNjMTg1NmE0MjliZjk3ZTdlMzFjMmU1YmQ2NicsIDE2KTsKICAgICAgICAkeSA9IGdtcF9pbml0KCcweDExODM5Mjk2YTc4OWEzYmMwMDQ1YzhhNWZiNDJjN2QxYmQ5OThmNTQ0NDk1NzliNDQ2ODE3YWZiZDE3MjczZTY2MmM5N2VlNzI5OTVlZjQyNjQwYzU1MGI5MDEzZmFkMDc2MTM1M2M3MDg2YTI3MmMyNDA4OGJlOTQ3NjlmZDE2NjUwJywgMTYpOwoKICAgICAgICByZXR1cm4gJGN1cnZlLT5nZXRHZW5lcmF0b3IoJHgsICR5LCAkb3JkZXIsICRyYW5kb21HZW5lcmF0b3IpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Curves/SecgCurve.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZVBhcmFtZXRlcnM7CnVzZSBNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICoKICovCmNsYXNzIFNlY2dDdXJ2ZQp7CiAgICAvKioKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIGNvbnN0IE5BTUVfU0VDUF8xMTJSMSA9ICdzZWNwMTEycjEnOwogICAgY29uc3QgTkFNRV9TRUNQXzE5MksxID0gJ3NlY3AxOTJrMSc7CiAgICBjb25zdCBOQU1FX1NFQ1BfMjU2SzEgPSAnc2VjcDI1NmsxJzsKICAgIGNvbnN0IE5BTUVfU0VDUF8yNTZSMSA9ICdzZWNwMjU2cjEnOwogICAgY29uc3QgTkFNRV9TRUNQXzM4NFIxID0gJ3NlY3AzODRyMSc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICAkdGhpcy0+YWRhcHRlciA9ICRhZGFwdGVyOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBOYW1lZEN1cnZlRnAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGN1cnZlMTEycjEoKQogICAgewogICAgICAgICRwID0gZ21wX2luaXQoJzB4REI3QzJBQkY2MkUzNUU2NjgwNzZCRUFEMjA4QicsIDE2KTsKICAgICAgICAkYSA9IGdtcF9pbml0KCcweERCN0MyQUJGNjJFMzVFNjY4MDc2QkVBRDIwODgnLCAxNik7CiAgICAgICAgJGIgPSBnbXBfaW5pdCgnMHg2NTlFRjhCQTA0MzkxNkVFREU4OTExNzAyQjIyJywgMTYpOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMTEyLCAkcCwgJGEsICRiKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZEN1cnZlRnAoc2VsZjo6TkFNRV9TRUNQXzExMlIxLCAkcGFyYW1ldGVycywgJHRoaXMtPmFkYXB0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0b3IxMTJyMShSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJGN1cnZlID0gJHRoaXMtPmN1cnZlMTEycjEoKTsKCiAgICAgICAgJG9yZGVyID0gZ21wX2luaXQoJzB4REI3QzJBQkY2MkUzNUU3NjI4REZBQzY1NjFDNScsIDE2KTsKICAgICAgICAkeCA9IGdtcF9pbml0KCcweDA5NDg3MjM5OTk1QTVFRTc2QjU1RjlDMkYwOTgnLCAxNik7CiAgICAgICAgJHkgPSBnbXBfaW5pdCgnMHhBODlDRTVBRjg3MjRDMEEyM0UwRTBGRjc3NTAwJywgMTYpOwoKICAgICAgICByZXR1cm4gJGN1cnZlLT5nZXRHZW5lcmF0b3IoJHgsICR5LCAkb3JkZXIsICRyYW5kb21HZW5lcmF0b3IpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJ2ZTE5MmsxKCkKICAgIHsKICAgICAgICAkcCA9IGdtcF9pbml0KCcweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVGRkZGRUUzNycsIDE2KTsKICAgICAgICAkYSA9IGdtcF9pbml0KDAsIDEwKTsKICAgICAgICAkYiA9IGdtcF9pbml0KDMsIDEwKTsKCiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKDE5MiwgJHAsICRhLCAkYik7CgogICAgICAgIHJldHVybiBuZXcgTmFtZWRDdXJ2ZUZwKHNlbGY6Ok5BTUVfU0VDUF8xOTJLMSwgJHBhcmFtZXRlcnMsICR0aGlzLT5hZGFwdGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvcgogICAgICogQHJldHVybiBcTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdG9yMTkyazEoUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IgPSBudWxsKQogICAgewogICAgICAgICRjdXJ2ZSA9ICR0aGlzLT5jdXJ2ZTE5MmsxKCk7CgogICAgICAgICRvcmRlciA9IGdtcF9pbml0KCcweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRTI2RjJGQzE3MEY2OTQ2NkE3NERFRkQ4RCcsIDE2KTsKICAgICAgICAkeCA9IGdtcF9pbml0KCcweERCNEZGMTBFQzA1N0U5QUUyNkIwN0QwMjgwQjdGNDM0MURBNUQxQjFFQUUwNkM3RCcsIDE2KTsKICAgICAgICAkeSA9IGdtcF9pbml0KCcweDlCMkYyRjZEOUM1NjI4QTc4NDQxNjNEMDE1QkU4NjM0NDA4MkFBODhEOTVFMkY5RCcsIDE2KTsKCiAgICAgICAgcmV0dXJuICRjdXJ2ZS0+Z2V0R2VuZXJhdG9yKCR4LCAkeSwgJG9yZGVyLCAkcmFuZG9tR2VuZXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gTmFtZWRDdXJ2ZUZwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJ2ZTI1NmsxKCkKICAgIHsKICAgICAgICAkcCA9IGdtcF9pbml0KCcweEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZDMkYnLCAxNik7CiAgICAgICAgJGEgPSBnbXBfaW5pdCgwLCAxMCk7CiAgICAgICAgJGIgPSBnbXBfaW5pdCg3LCAxMCk7CgogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygyNTYsICRwLCAkYSwgJGIpOwoKICAgICAgICByZXR1cm4gbmV3IE5hbWVkQ3VydmVGcChzZWxmOjpOQU1FX1NFQ1BfMjU2SzEsICRwYXJhbWV0ZXJzLCAkdGhpcy0+YWRhcHRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IKICAgICAqIEByZXR1cm4gXE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRvcjI1NmsxKFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yID0gbnVsbCkKICAgIHsKICAgICAgICAkY3VydmUgPSAkdGhpcy0+Y3VydmUyNTZrMSgpOwoKICAgICAgICAkb3JkZXIgPSBnbXBfaW5pdCgnMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRUJBQUVEQ0U2QUY0OEEwM0JCRkQyNUU4Q0QwMzY0MTQxJywgMTYpOwogICAgICAgICR4ID0gZ21wX2luaXQoJzB4NzlCRTY2N0VGOURDQkJBQzU1QTA2Mjk1Q0U4NzBCMDcwMjlCRkNEQjJEQ0UyOEQ5NTlGMjgxNUIxNkY4MTc5OCcsIDE2KTsKICAgICAgICAkeSA9IGdtcF9pbml0KCcweDQ4M0FEQTc3MjZBM0M0NjU1REE0RkJGQzBFMTEwOEE4RkQxN0I0NDhBNjg1NTQxOTlDNDdEMDhGRkIxMEQ0QjgnLCAxNik7CgogICAgICAgIHJldHVybiAkY3VydmUtPmdldEdlbmVyYXRvcigkeCwgJHksICRvcmRlciwgJHJhbmRvbUdlbmVyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIE5hbWVkQ3VydmVGcAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VydmUyNTZyMSgpCiAgICB7CiAgICAgICAgJHAgPSBnbXBfaW5pdCgnMHhGRkZGRkZGRjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGJywgMTYpOwogICAgICAgICRhID0gZ21wX2luaXQoJzB4RkZGRkZGRkYwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQycsIDE2KTsKICAgICAgICAkYiA9IGdtcF9pbml0KCcweDVBQzYzNUQ4QUEzQTkzRTdCM0VCQkQ1NTc2OTg4NkJDNjUxRDA2QjBDQzUzQjBGNjNCQ0UzQzNFMjdEMjYwNEInLCAxNik7CgogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygyNTYsICRwLCAkYSwgJGIpOwoKICAgICAgICByZXR1cm4gbmV3IE5hbWVkQ3VydmVGcChzZWxmOjpOQU1FX1NFQ1BfMjU2UjEsICRwYXJhbWV0ZXJzLCAkdGhpcy0+YWRhcHRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IKICAgICAqIEByZXR1cm4gXE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRvcjI1NnIxKFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yID0gbnVsbCkKICAgIHsKICAgICAgICAkY3VydmUgPSAkdGhpcy0+Y3VydmUyNTZyMSgpOwoKICAgICAgICAkb3JkZXIgPSBnbXBfaW5pdCgnMHhGRkZGRkZGRjAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkJDRTZGQUFEQTcxNzlFODRGM0I5Q0FDMkZDNjMyNTUxJywgMTYpOwogICAgICAgICR4ID0gZ21wX2luaXQoJzB4NkIxN0QxRjJFMTJDNDI0N0Y4QkNFNkU1NjNBNDQwRjI3NzAzN0Q4MTJERUIzM0EwRjRBMTM5NDVEODk4QzI5NicsIDE2KTsKICAgICAgICAkeSA9IGdtcF9pbml0KCcweDRGRTM0MkUyRkUxQTdGOUI4RUU3RUI0QTdDMEY5RTE2MkJDRTMzNTc2QjMxNUVDRUNCQjY0MDY4MzdCRjUxRjUnLCAxNik7CgogICAgICAgIHJldHVybiAkY3VydmUtPmdldEdlbmVyYXRvcigkeCwgJHksICRvcmRlciwgJHJhbmRvbUdlbmVyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIE5hbWVkQ3VydmVGcAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VydmUzODRyMSgpCiAgICB7CiAgICAgICAgJHAgPSBnbXBfaW5pdCgnMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkYnLCAxNik7CiAgICAgICAgJGEgPSBnbXBfaW5pdCgnMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkMnLCAxNik7CiAgICAgICAgJGIgPSBnbXBfaW5pdCgnMHhCMzMxMkZBN0UyM0VFN0U0OTg4RTA1NkJFM0Y4MkQxOTE4MUQ5QzZFRkU4MTQxMTIwMzE0MDg4RjUwMTM4NzVBQzY1NjM5OEQ4QTJFRDE5RDJBODVDOEVERDNFQzJBRUYnLCAxNik7CgogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzODQsICRwLCAkYSwgJGIpOwoKICAgICAgICByZXR1cm4gbmV3IE5hbWVkQ3VydmVGcChzZWxmOjpOQU1FX1NFQ1BfMzg0UjEsICRwYXJhbWV0ZXJzLCAkdGhpcy0+YWRhcHRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IKICAgICAqIEByZXR1cm4gXE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRvcjM4NHIxKFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yID0gbnVsbCkKICAgIHsKICAgICAgICAkY3VydmUgPSAkdGhpcy0+Y3VydmUzODRyMSgpOwoKICAgICAgICAkb3JkZXIgPSBnbXBfaW5pdCgnMHhGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZDNzYzNEQ4MUY0MzcyRERGNTgxQTBEQjI0OEIwQTc3QUVDRUMxOTZBQ0NDNTI5NzMnLCAxNik7CiAgICAgICAgJHggPSBnbXBfaW5pdCgnMHhBQTg3Q0EyMkJFOEIwNTM3OEVCMUM3MUVGMzIwQUQ3NDZFMUQzQjYyOEJBNzlCOTg1OUY3NDFFMDgyNTQyQTM4NTUwMkYyNURCRjU1Mjk2QzNBNTQ1RTM4NzI3NjBBQjcnLCAxNik7CiAgICAgICAgJHkgPSBnbXBfaW5pdCgnMHgzNjE3REU0QTk2MjYyQzZGNUQ5RTk4QkY5MjkyREMyOUY4RjQxREJEMjg5QTE0N0NFOURBMzExM0I1RjBCOEMwMEE2MEIxQ0UxRDdFODE5RDdBNDMxRDdDOTBFQTBFNUYnLCAxNik7CgogICAgICAgIHJldHVybiAkY3VydmUtPmdldEdlbmVyYXRvcigkeCwgJHksICRvcmRlciwgJHJhbmRvbUdlbmVyYXRvcik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/EccFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjYzsKCnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25lcjsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xOaXN0Q3VydmU7CnVzZSBNZGFudGVyXEVjY1xDdXJ2ZXNcU2VjZ0N1cnZlOwp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcTWF0aFxNYXRoQWRhcHRlckZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnA7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlUGFyYW1ldGVyczsKCi8qKgogKiBTdGF0aWMgZmFjdG9yeSBjbGFzcyBwcm92aWRpbmcgZmFjdG9yeSBtZXRob2RzIHRvIHdvcmsgd2l0aCBOSVNUIGFuZCBTRUNHIHJlY29tbWVuZGVkIGN1cnZlcy4KICovCmNsYXNzIEVjY0ZhY3RvcnkKewogICAgLyoqCiAgICAgKiBTZWxlY3RzIGFuZCBjcmVhdGVzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGFkYXB0ZXIgZm9yIHRoZSBydW5uaW5nIGVudmlyb25tZW50LgogICAgICoKICAgICAqIEBwYXJhbSAkZGVidWcgW29wdGlvbmFsXSBTZXQgdG8gdHJ1ZSB0byBnZXQgYSB0cmFjZSBvZiBhbGwgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uCiAgICAgKiBAcmV0dXJuIEdtcE1hdGhJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRBZGFwdGVyKCRkZWJ1ZyA9IGZhbHNlKQogICAgewogICAgICAgIHJldHVybiBNYXRoQWRhcHRlckZhY3Rvcnk6OmdldEFkYXB0ZXIoJGRlYnVnKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBmYWN0b3J5IHRvIGNyZWF0ZSBOSVNUIFJlY29tbWVuZGVkIGN1cnZlcyBhbmQgZ2VuZXJhdG9ycy4KICAgICAqCiAgICAgKiBAcGFyYW0gIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIgW29wdGlvbmFsXSBEZWZhdWx0cyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKS4KICAgICAqIEByZXR1cm4gTmlzdEN1cnZlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0TmlzdEN1cnZlcyhHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IE5pc3RDdXJ2ZSgkYWRhcHRlciA/OiBzZWxmOjpnZXRBZGFwdGVyKCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGZhY3RvcnkgdG8gcmV0dXJuIFNFQ0cgUmVjb21tZW5kZWQgY3VydmVzIGFuZCBnZW5lcmF0b3JzLgogICAgICoKICAgICAqIEBwYXJhbSAgR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciBbb3B0aW9uYWxdIERlZmF1bHRzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpLgogICAgICogQHJldHVybiBTZWNnQ3VydmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRTZWNnQ3VydmVzKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBuZXcgU2VjZ0N1cnZlKCRhZGFwdGVyID86IHNlbGY6OmdldEFkYXB0ZXIoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IGN1cnZlIGZyb20gYXJiaXRyYXJ5IHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICAgICAgICAgICAgICRwcmltZQogICAgICogQHBhcmFtICBcR01QICAgICAgICAgICAgICRhCiAgICAgKiBAcGFyYW0gIFxHTVAgICAgICAgICAgICAgJGIKICAgICAqIEBwYXJhbSAgR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciBbb3B0aW9uYWxdIERlZmF1bHRzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpLgogICAgICogQHJldHVybiBcTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQ3VydmUoJGJpdFNpemUsIFxHTVAgJHByaW1lLCBcR01QICRhLCBcR01QICRiLCBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEN1cnZlRnAobmV3IEN1cnZlUGFyYW1ldGVycygkYml0U2l6ZSwgJHByaW1lLCAkYSwgJGIpLCAkYWRhcHRlciA/OiBzZWxmOjpnZXRBZGFwdGVyKCkpOwogICAgfQoKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSAgR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciBbb3B0aW9uYWxdIERlZmF1bHRzIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgRWNjRmFjdG9yeTo6Z2V0QWRhcHRlUigpCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25lcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFNpZ25lcihHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNpZ25lcigkYWRhcHRlciA/OiBzZWxmOjpnZXRBZGFwdGVyKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/DebugDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVGcEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQ7CgovKioKICogRGVidWcgaGVscGVyIGNsYXNzIHRvIHRyYWNlIGFsbCBjYWxscyB0byBtYXRoIGZ1bmN0aW9ucyBhbG9uZyB3aXRoIHRoZSBwcm92aWRlZCBwYXJhbXMgYW5kIHJlc3VsdC4KICovCmNsYXNzIERlYnVnRGVjb3JhdG9yIGltcGxlbWVudHMgR21wTWF0aEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZQogICAgICovCiAgICBwcml2YXRlICR3cml0ZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAgICAgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICAgICAgICAkY2FsbGJhY2sKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsIGNhbGxhYmxlICRjYWxsYmFjayA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKICAgICAgICAkdGhpcy0+d3JpdGVyID0gJGNhbGxiYWNrID86IGZ1bmN0aW9uICgkbWVzc2FnZSkgewogICAgICAgICAgICBlY2hvICRtZXNzYWdlOwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHdyaXRlKCRtZXNzYWdlKQogICAgewogICAgICAgIGNhbGxfdXNlcl9mdW5jKCR0aGlzLT53cml0ZXIsICRtZXNzYWdlKTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAkZnVuYwogICAgICogQHBhcmFtICBhcnJheSAgJGFyZ3MKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYWxsKCRmdW5jLCAkYXJncykKICAgIHsKICAgICAgICAkc3RyQXJncyA9IGFycmF5X21hcCgKICAgICAgICAgICAgZnVuY3Rpb24gKCRhcmcpIHsKICAgICAgICAgICAgICAgIGlmICgkYXJnIGluc3RhbmNlb2YgXEdNUCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJfZXhwb3J0KCR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkYXJnKSwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB2YXJfZXhwb3J0KCRhcmcsIHRydWUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CgogICAgICAgIGlmIChzdHJwb3MoJGZ1bmMsICc6OicpKSB7CiAgICAgICAgICAgIGxpc3QoLCAkZnVuYykgPSBleHBsb2RlKCc6OicsICRmdW5jKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT53cml0ZSgkZnVuYy4nKCcuaW1wbG9kZSgnLCAnLCAkc3RyQXJncykuJyknKTsKCiAgICAgICAgJHJlcyA9IGNhbGxfdXNlcl9mdW5jX2FycmF5KFsgJHRoaXMtPmFkYXB0ZXIsICRmdW5jIF0sICRhcmdzKTsKCiAgICAgICAgaWYgKCRyZXMgaW5zdGFuY2VvZiBcR01QKSB7CiAgICAgICAgICAgICR0aGlzLT53cml0ZSgnID0+ICcgLiB2YXJfZXhwb3J0KCR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkcmVzKSwgdHJ1ZSkgLiBQSFBfRU9MKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+d3JpdGUoJyA9PiAnIC4gdmFyX2V4cG9ydCgkcmVzLCB0cnVlKSAuIFBIUF9FT0wpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpjbXAoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY21wKFxHTVAgJGZpcnN0LCBcR01QICRvdGhlcikKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcR21wTWF0aEludGVyZmFjZTo6Y21wKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjptb2QoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kKFxHTVAgJG51bWJlciwgXEdNUCAkbW9kdWx1cykKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjphZGQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKFxHTVAgJGF1Z2VuZCwgXEdNUCAkYWRkZW5kKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OnN1YigpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdWIoXEdNUCAkbWludWVuZCwgXEdNUCAkc3VidHJhaGVuZCkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjptdWwoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsKFxHTVAgJG11bHRpcGxpZXIsIFxHTVAgJG11bHRpcGxpY2FuZCkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpkaXYoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2KFxHTVAgJGRpdmlkZW5kLCBcR01QICRkaXZpc29yKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OnBvdygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3coXEdNUCAkYmFzZSwgJGV4cG9uZW50KQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmJpdHdpc2VBbmQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYml0d2lzZUFuZChcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkZnVuYywKICAgICAgICAgICAgJGFyZ3MKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcTWF0aEFkYXB0ZXI6OnRvU3RyaW5nKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvU3RyaW5nKFxHTVAgJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRhcHRlci0+dG9TdHJpbmcoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmhleERlYygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoZXhEZWMoJGhleFN0cmluZykKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpkZWNIZXgoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjSGV4KCRkZWNTdHJpbmcpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkZnVuYywKICAgICAgICAgICAgJGFyZ3MKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcR21wTWF0aEludGVyZmFjZTo6cG93bW9kKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvd21vZChcR01QICRiYXNlLCBcR01QICRleHBvbmVudCwgXEdNUCAkbW9kdWx1cykKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjppc1ByaW1lKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUHJpbWUoXEdNUCAkbikKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpuZXh0UHJpbWUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmV4dFByaW1lKFxHTVAgJGN1cnJlbnRQcmltZSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjppbnZlcnNlTW9kKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGludmVyc2VNb2QoXEdNUCAkYSwgXEdNUCAkbSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpqYWNvYmkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gamFjb2JpKFxHTVAgJGEsIFxHTVAgJHApCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkZnVuYywKICAgICAgICAgICAgJGFyZ3MKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcR21wTWF0aEludGVyZmFjZTo6aW50VG9TdHJpbmcoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW50VG9TdHJpbmcoXEdNUCAkeCkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjppbnRUb0ZpeGVkU2l6ZVN0cmluZygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbnRUb0ZpeGVkU2l6ZVN0cmluZyhcR01QICR4LCAkYnl0ZVNpemUpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpzdHJpbmdUb0ludCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJpbmdUb0ludCgkcykKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpkaWdlc3RJbnRlZ2VyKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpZ2VzdEludGVnZXIoXEdNUCAkbSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpnY2QyKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdjZDIoXEdNUCAkYSwgXEdNUCAkbSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpyaWdodFNoaWZ0KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJpZ2h0U2hpZnQoXEdNUCAkbnVtYmVyLCAkcG9zaXRpb25zKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmxlZnRTaGlmdCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsZWZ0U2hpZnQoXEdNUCAkbnVtYmVyLCAkcG9zaXRpb25zKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmJpdHdpc2VYb3IoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYml0d2lzZVhvcihcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpiYXNlQ29udmVydCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiYXNlQ29udmVydCgkdmFsdWUsICRmcm9tQmFzZSwgJHRvQmFzZSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmdldEVjTWF0aCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFY01hdGgoR2VuZXJhdG9yUG9pbnQgJGdlbmVyYXRvclBvaW50LCAkaW5wdXQpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpnZXRQcmltZUZpZWxkQXJpdGhtZXRpYygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZUZpZWxkQXJpdGhtZXRpYyhDdXJ2ZUZwSW50ZXJmYWNlICRjdXJ2ZSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmdldE1vZHVsYXJBcml0aG1ldGljKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsYXJBcml0aG1ldGljKFxHTVAgJG1vZHVsdXMpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAnY2FsbCcKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmdldE51bWJlclRoZW9yeSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROdW1iZXJUaGVvcnkoKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJwogICAgICAgICAgICApLAogICAgICAgICAgICAkZnVuYywKICAgICAgICAgICAgJGFyZ3MKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/GmpMath.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKdXNlIE1kYW50ZXJcRWNjXFV0aWxcQmluYXJ5U3RyaW5nOwp1c2UgTWRhbnRlclxFY2NcVXRpbFxOdW1iZXJTaXplOwoKY2xhc3MgR21wTWF0aCBpbXBsZW1lbnRzIEdtcE1hdGhJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmNtcCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbXAoXEdNUCAkZmlyc3QsIFxHTVAgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiBnbXBfY21wKCRmaXJzdCwgJG90aGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRmaXJzdAogICAgICogQHBhcmFtIFxHTVAgJG90aGVyCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9jbXAoJGZpcnN0LCAkb3RoZXIpID09PSAwOwogICAgfQogICAgCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6bW9kKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZChcR01QICRudW1iZXIsIFxHTVAgJG1vZHVsdXMpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9tb2QoJG51bWJlciwgJG1vZHVsdXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjphZGQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKFxHTVAgJGF1Z2VuZCwgXEdNUCAkYWRkZW5kKQogICAgewogICAgICAgIHJldHVybiBnbXBfYWRkKCRhdWdlbmQsICRhZGRlbmQpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpzdWIoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKFxHTVAgJG1pbnVlbmQsIFxHTVAgJHN1YnRyYWhlbmQpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zdWIoJG1pbnVlbmQsICRzdWJ0cmFoZW5kKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6bXVsKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChcR01QICRtdWx0aXBsaWVyLCBcR01QICRtdWx0aXBsaWNhbmQpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9tdWwoJG11bHRpcGxpZXIsICRtdWx0aXBsaWNhbmQpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpkaXYoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2KFxHTVAgJGRpdmlkZW5kLCBcR01QICRkaXZpc29yKQogICAgewogICAgICAgIHJldHVybiBnbXBfZGl2KCRkaXZpZGVuZCwgJGRpdmlzb3IpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpwb3coKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93KFxHTVAgJGJhc2UsICRleHBvbmVudCkKICAgIHsKICAgICAgICByZXR1cm4gZ21wX3BvdygkYmFzZSwgJGV4cG9uZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6Yml0d2lzZUFuZCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiaXR3aXNlQW5kKFxHTVAgJGZpcnN0LCBcR01QICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gZ21wX2FuZCgkZmlyc3QsICRvdGhlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OnJpZ2h0U2hpZnQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmlnaHRTaGlmdChcR01QICRudW1iZXIsICRwb3NpdGlvbnMpCiAgICB7CiAgICAgICAgLy8gU2hpZnQgMSByaWdodCA9IGRpdiAvIDIKICAgICAgICByZXR1cm4gZ21wX2RpdigkbnVtYmVyLCBnbXBfcG93KGdtcF9pbml0KDIsIDEwKSwgJHBvc2l0aW9ucykpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpiaXR3aXNlWG9yKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJpdHdpc2VYb3IoXEdNUCAkZmlyc3QsIFxHTVAgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiBnbXBfeG9yKCRmaXJzdCwgJG90aGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6bGVmdFNoaWZ0KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxlZnRTaGlmdChcR01QICRudW1iZXIsICRwb3NpdGlvbnMpCiAgICB7CiAgICAgICAgLy8gU2hpZnQgMSBsZWZ0ID0gbXVsIGJ5IDIKICAgICAgICByZXR1cm4gZ21wX211bCgkbnVtYmVyLCBnbXBfcG93KDIsICRwb3NpdGlvbnMpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6dG9TdHJpbmcoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoXEdNUCAkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zdHJ2YWwoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6aGV4RGVjKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhleERlYygkaGV4KQogICAgewogICAgICAgIHJldHVybiBnbXBfc3RydmFsKGdtcF9pbml0KCRoZXgsIDE2KSwgMTApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpkZWNIZXgoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjSGV4KCRkZWMpCiAgICB7CiAgICAgICAgJGRlYyA9IGdtcF9pbml0KCRkZWMsIDEwKTsKCiAgICAgICAgaWYgKGdtcF9jbXAoJGRlYywgMCkgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gY29udmVydCBuZWdhdGl2ZSBpbnRlZ2VyIHRvIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgJGhleCA9IGdtcF9zdHJ2YWwoJGRlYywgMTYpOwoKICAgICAgICBpZiAoQmluYXJ5U3RyaW5nOjpsZW5ndGgoJGhleCkgJSAyICE9IDApIHsKICAgICAgICAgICAgJGhleCA9ICcwJy4kaGV4OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoZXg7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OnBvd21vZCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3dtb2QoXEdNUCAkYmFzZSwgXEdNUCAkZXhwb25lbnQsIFxHTVAgJG1vZHVsdXMpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jbXAoJGV4cG9uZW50LCBnbXBfaW5pdCgwLCAxMCkpIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiTmVnYXRpdmUgZXhwb25lbnRzICgiIC4gJHRoaXMtPnRvU3RyaW5nKCRleHBvbmVudCkgLiAiKSBub3QgYWxsb3dlZC4iKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBnbXBfcG93bSgkYmFzZSwgJGV4cG9uZW50LCAkbW9kdWx1cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmlzUHJpbWUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcmltZShcR01QICRuKQogICAgewogICAgICAgICRwcm9iID0gZ21wX3Byb2JfcHJpbWUoJG4pOwoKICAgICAgICBpZiAoJHByb2IgPiAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpuZXh0UHJpbWUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmV4dFByaW1lKFxHTVAgJHN0YXJ0aW5nX3ZhbHVlKQogICAgewogICAgICAgIHJldHVybiBnbXBfbmV4dHByaW1lKCRzdGFydGluZ192YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmludmVyc2VNb2QoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW52ZXJzZU1vZChcR01QICRhLCBcR01QICRtKQogICAgewogICAgICAgIHJldHVybiBnbXBfaW52ZXJ0KCRhLCAkbSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmphY29iaSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqYWNvYmkoXEdNUCAkYSwgXEdNUCAkbikKICAgIHsKICAgICAgICByZXR1cm4gZ21wX2phY29iaSgkYSwgJG4pOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjppbnRUb0ZpeGVkU2l6ZVN0cmluZygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbnRUb0ZpeGVkU2l6ZVN0cmluZyhcR01QICR4LCAkYnl0ZVNpemUpCiAgICB7CiAgICAgICAgaWYgKCRieXRlU2l6ZSA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJCeXRlIHNpemUgY2Fubm90IGJlIG5lZ2F0aXZlIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoZ21wX2NtcCgkeCwgMCkgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigieCB3YXMgbmVnYXRpdmUgLSBub3QgeWV0IHN1cHBvcnRlZCIpOwogICAgICAgIH0KCiAgICAgICAgJHR3byA9IGdtcF9pbml0KDIpOwogICAgICAgICRyYW5nZSA9IGdtcF9wb3coJHR3bywgJGJ5dGVTaXplICogOCk7CiAgICAgICAgaWYgKE51bWJlclNpemU6OmJuTnVtQml0cygkdGhpcywgJHgpID49IE51bWJlclNpemU6OmJuTnVtQml0cygkdGhpcywgJHJhbmdlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIk51bWJlciBvdmVyZmxvd3MgYnl0ZSBzaXplIik7CiAgICAgICAgfQoKICAgICAgICAkbWFza1NoaWZ0ID0gZ21wX3BvdygkdHdvLCA4KTsKICAgICAgICAkbWFzayA9IGdtcF9tdWwoZ21wX2luaXQoMjU1KSwgJHJhbmdlKTsKCiAgICAgICAgJGJpbmFyeSA9ICcnOwogICAgICAgIGZvciAoJGkgPSAkYnl0ZVNpemUgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgICRtYXNrID0gZ21wX2RpdigkbWFzaywgJG1hc2tTaGlmdCk7CiAgICAgICAgICAgICRiaW5hcnkgLj0gcGFjaygnQycsIGdtcF9zdHJ2YWwoZ21wX2RpdihnbXBfYW5kKCR4LCAkbWFzayksIGdtcF9wb3coJHR3bywgJGkgKiA4KSksIDEwKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJpbmFyeTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6aW50VG9TdHJpbmcoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW50VG9TdHJpbmcoXEdNUCAkeCkKICAgIHsKICAgICAgICBpZiAoZ21wX2NtcCgkeCwgMCkgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gY29udmVydCBuZWdhdGl2ZSBpbnRlZ2VyIHRvIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgJGhleCA9IGdtcF9zdHJ2YWwoJHgsIDE2KTsKCiAgICAgICAgaWYgKEJpbmFyeVN0cmluZzo6bGVuZ3RoKCRoZXgpICUgMiAhPSAwKSB7CiAgICAgICAgICAgICRoZXggPSAnMCcuJGhleDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYWNrKCdIKicsICRoZXgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpzdHJpbmdUb0ludCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJpbmdUb0ludCgkcykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gZ21wX2luaXQoMCwgMTApOwogICAgICAgICRzTGVuID0gQmluYXJ5U3RyaW5nOjpsZW5ndGgoJHMpOwoKICAgICAgICBmb3IgKCRjID0gMDsgJGMgPCAkc0xlbjsgJGMgKyspIHsKICAgICAgICAgICAgJHJlc3VsdCA9IGdtcF9hZGQoZ21wX211bCgyNTYsICRyZXN1bHQpLCBnbXBfaW5pdChvcmQoJHNbJGNdKSwgMTApKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpkaWdlc3RJbnRlZ2VyKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpZ2VzdEludGVnZXIoXEdNUCAkbSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmluZ1RvSW50KGhhc2goJ3NoYTEnLCAkdGhpcy0+aW50VG9TdHJpbmcoJG0pLCB0cnVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmdjZDIoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2NkMihcR01QICRhLCBcR01QICRiKQogICAgewogICAgICAgIHdoaWxlICgkdGhpcy0+Y21wKCRhLCBnbXBfaW5pdCgwKSkgPiAwKSB7CiAgICAgICAgICAgICR0ZW1wID0gJGE7CiAgICAgICAgICAgICRhID0gJHRoaXMtPm1vZCgkYiwgJGEpOwogICAgICAgICAgICAkYiA9ICR0ZW1wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpiYXNlQ29udmVydCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiYXNlQ29udmVydCgkbnVtYmVyLCAkZnJvbSwgJHRvKQogICAgewogICAgICAgIHJldHVybiBnbXBfc3RydmFsKGdtcF9pbml0KCRudW1iZXIsICRmcm9tKSwgJHRvKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6Z2V0TnVtYmVyVGhlb3J5KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE51bWJlclRoZW9yeSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBOdW1iZXJUaGVvcnkoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJG1vZHVsdXMKICAgICAqIEByZXR1cm4gTW9kdWxhckFyaXRobWV0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsYXJBcml0aG1ldGljKFxHTVAgJG1vZHVsdXMpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBNb2R1bGFyQXJpdGhtZXRpYygkdGhpcywgJG1vZHVsdXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/GmpMathInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKaW50ZXJmYWNlIEdtcE1hdGhJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDb21wYXJlcyB0d28gbnVtYmVycwogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkZmlyc3QKICAgICAqIEBwYXJhbSAgXEdNUCAkb3RoZXIKICAgICAqIEByZXR1cm4gaW50ICAgICAgICBsZXNzIHRoYW4gMCBpZiBmaXJzdCBpcyBsZXNzIHRoYW4gc2Vjb25kLCAwIGlmIGVxdWFsLCBncmVhdGVyIHRoYW4gMCBpZiBncmVhdGVyIHRoYW4uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbXAoXEdNUCAkZmlyc3QsIFxHTVAgJG90aGVyKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRmaXJzdAogICAgICogQHBhcmFtIFxHTVAgJG90aGVyCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpOwogICAgCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlbWFpbmRlciBvZiBhIGRpdmlzaW9uCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRudW1iZXIKICAgICAqIEBwYXJhbSAgXEdNUCAkbW9kdWx1cwogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2QoXEdNUCAkbnVtYmVyLCBcR01QICRtb2R1bHVzKTsKCiAgICAvKioKICAgICAqIEFkZHMgdHdvIG51bWJlcnMKICAgICAqCiAgICAgKiBAcGFyYW0gIFxHTVAgJGF1Z2VuZAogICAgICogQHBhcmFtICBcR01QICRhZGRlbmQKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKFxHTVAgJGF1Z2VuZCwgXEdNUCAkYWRkZW5kKTsKCiAgICAvKioKICAgICAqIFN1YnN0cmFjdCBvbmUgbnVtYmVyIGZyb20gYW5vdGhlcgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkbWludWVuZAogICAgICogQHBhcmFtICBcR01QICRzdWJ0cmFoZW5kCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YihcR01QICRtaW51ZW5kLCBcR01QICRzdWJ0cmFoZW5kKTsKCiAgICAvKioKICAgICAqIE11bHRpcGxpZXMgYSBudW1iZXIgYnkgYW5vdGhlci4KICAgICAqCiAgICAgKiBAcGFyYW0gIFxHTVAgJG11bHRpcGxpZXIKICAgICAqIEBwYXJhbSAgXEdNUCAkbXVsdGlwbGljYW5kCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChcR01QICRtdWx0aXBsaWVyLCBcR01QICRtdWx0aXBsaWNhbmQpOwoKICAgIC8qKgogICAgICogRGl2aWRlcyBhIG51bWJlciBieSBhbm90aGVyLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkZGl2aWRlbmQKICAgICAqIEBwYXJhbSAgXEdNUCAkZGl2aXNvcgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXYoXEdNUCAkZGl2aWRlbmQsIFxHTVAgJGRpdmlzb3IpOwoKICAgIC8qKgogICAgICogUmFpc2VzIGEgbnVtYmVyIHRvIGEgcG93ZXIuCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRiYXNlICAgICBUaGUgbnVtYmVyIHRvIHJhaXNlLgogICAgICogQHBhcmFtICBpbnQgJGV4cG9uZW50IFRoZSBwb3dlciB0byByYWlzZSB0aGUgbnVtYmVyIHRvLgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3coXEdNUCAkYmFzZSwgJGV4cG9uZW50KTsKCiAgICAvKioKICAgICAqIFBlcmZvcm1zIGEgbG9naWNhbCBBTkQgYmV0d2VlbiB0d28gdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkZmlyc3QKICAgICAqIEBwYXJhbSAgXEdNUCAkb3RoZXIKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYml0d2lzZUFuZChcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpOwoKICAgIC8qKgogICAgICogUGVyZm9ybXMgYSBsb2dpY2FsIFhPUiBiZXR3ZWVuIHR3byB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRmaXJzdAogICAgICogQHBhcmFtICBcR01QICRvdGhlcgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiaXR3aXNlWG9yKFxHTVAgJGZpcnN0LCBcR01QICRvdGhlcik7CgogICAgLyoqCiAgICAgKiBTaGlmdHMgYml0cyB0byB0aGUgcmlnaHQKICAgICAqIEBwYXJhbSBcR01QICAgICAgICAkbnVtYmVyICAgIE51bWJlciB0byBzaGlmdAogICAgICogQHBhcmFtIGludCAgJHBvc2l0aW9ucyBOdW1iZXIgb2YgcG9zaXRpb25zIHRvIHNoaWZ0CiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJpZ2h0U2hpZnQoXEdNUCAkbnVtYmVyLCAkcG9zaXRpb25zKTsKCiAgICAvKioKICAgICAqIFNoaWZ0cyBiaXRzIHRvIHRoZSBsZWZ0CiAgICAgKiBAcGFyYW0gXEdNUCAgICAgICAkbnVtYmVyICAgIE51bWJlciB0byBzaGlmdAogICAgICogQHBhcmFtIGludCAkcG9zaXRpb25zIE51bWJlciBvZiBwb3NpdGlvbnMgdG8gc2hpZnQKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVmdFNoaWZ0KFxHTVAgJG51bWJlciwgJHBvc2l0aW9ucyk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSByZXR1cm5lZCB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEdNUCAkdmFsdWUKICAgICAqIEByZXR1cm4gaW50fHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoXEdNUCAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQ29udmVydHMgYW4gaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGRlY2ltYWwuCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgJGhleFN0cmluZwogICAgICogQHJldHVybiBpbnR8c3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoZXhEZWMoJGhleFN0cmluZyk7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIGRlY2ltYWwgc3RyaW5nIHRvIGhleGFkZWNpbWFsLgogICAgICoKICAgICAqIEBwYXJhbSAgaW50fHN0cmluZyAkZGVjU3RyaW5nCiAgICAgKiBAcmV0dXJuIGludHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY0hleCgkZGVjU3RyaW5nKTsKCiAgICAvKioKICAgICAqIENhbGN1bGF0ZXMgdGhlIG1vZHVsYXIgZXhwb25lbnQgb2YgYSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIFxHTVAgJGJhc2UKICAgICAqIEBwYXJhbSBcR01QICRleHBvbmVudAogICAgICogQHBhcmFtIFxHTVAgJG1vZHVsdXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvd21vZChcR01QICRiYXNlLCBcR01QICRleHBvbmVudCwgXEdNUCAkbW9kdWx1cyk7CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciBhIG51bWJlciBpcyBhIHByaW1lLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkbgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ByaW1lKFxHTVAgJG4pOwoKICAgIC8qKgogICAgICogR2V0cyB0aGUgbmV4dCBrbm93biBwcmltZSB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBhIGdpdmVuIHByaW1lLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkY3VycmVudFByaW1lCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5leHRQcmltZShcR01QICRjdXJyZW50UHJpbWUpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJGEKICAgICAqIEBwYXJhbSBcR01QICRtCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGludmVyc2VNb2QoXEdNUCAkYSwgXEdNUCAkbSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEdNUCAkYQogICAgICogQHBhcmFtIFxHTVAgJHAKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqYWNvYmkoXEdNUCAkYSwgXEdNUCAkcCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIFxHTVAgJHgKICAgICAqIEBwYXJhbSAgaW50ICAkYnl0ZVNpemUKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGludFRvRml4ZWRTaXplU3RyaW5nKFxHTVAgJHgsICRieXRlU2l6ZSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIFxHTVAgJHgKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGludFRvU3RyaW5nKFxHTVAgJHgpOwoKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSAgaW50fHN0cmluZyAkcwogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJpbmdUb0ludCgkcyk7CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRtCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpZ2VzdEludGVnZXIoXEdNUCAkbSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIFxHTVAgJGEKICAgICAqIEBwYXJhbSAgXEdNUCAkbQogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnY2QyKFxHTVAgJGEsIFxHTVAgJG0pOwoKICAgIC8qKgogICAgICogQHBhcmFtICR2YWx1ZQogICAgICogQHBhcmFtICRmcm9tQmFzZQogICAgICogQHBhcmFtICR0b0Jhc2UKICAgICAqIEByZXR1cm4gaW50fHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYmFzZUNvbnZlcnQoJHZhbHVlLCAkZnJvbUJhc2UsICR0b0Jhc2UpOwoKICAgIC8qKgogICAgICogQHJldHVybiBOdW1iZXJUaGVvcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE51bWJlclRoZW9yeSgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJG1vZHVsdXMKICAgICAqIEByZXR1cm4gTW9kdWxhckFyaXRobWV0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsYXJBcml0aG1ldGljKFxHTVAgJG1vZHVsdXMpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/MathAdapterFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKY2xhc3MgTWF0aEFkYXB0ZXJGYWN0b3J5CnsKICAgIHByaXZhdGUgc3RhdGljICRmb3JjZWRBZGFwdGVyID0gbnVsbDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZm9yY2VBZGFwdGVyKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIgPSBudWxsKQogICAgewogICAgICAgIHNlbGY6OiRmb3JjZWRBZGFwdGVyID0gJGFkYXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYm9vbCAkZGVidWcKICAgICAqIEByZXR1cm4gRGVidWdEZWNvcmF0b3J8R21wTWF0aEludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWRhcHRlcigkZGVidWcgPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAoc2VsZjo6JGZvcmNlZEFkYXB0ZXIgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRmb3JjZWRBZGFwdGVyOwogICAgICAgIH0KCiAgICAgICAgJGFkYXB0ZXIgPSBuZXcgR21wTWF0aCgpOwoKICAgICAgICByZXR1cm4gc2VsZjo6d3JhcEFkYXB0ZXIoJGFkYXB0ZXIsIChib29sKSAkZGVidWcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBib29sICRkZWJ1ZwogICAgICogQHJldHVybiBEZWJ1Z0RlY29yYXRvcnxHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHdyYXBBZGFwdGVyKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsICRkZWJ1ZykKICAgIHsKICAgICAgICBpZiAoJGRlYnVnID09PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgRGVidWdEZWNvcmF0b3IoJGFkYXB0ZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhZGFwdGVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/ModularArithmetic.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKY2xhc3MgTW9kdWxhckFyaXRobWV0aWMKewogICAgLyoqCiAgICAgKiBAdmFyIEdtcE1hdGhJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkYWRhcHRlcjsKCiAgICAvKioKICAgICAqIEB2YXIgXEdNUAogICAgICovCiAgICBwcml2YXRlICRtb2R1bHVzOwoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBcR01QICRtb2R1bHVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyLCBcR01QICRtb2R1bHVzKQogICAgewogICAgICAgICR0aGlzLT5hZGFwdGVyID0gJGFkYXB0ZXI7CiAgICAgICAgJHRoaXMtPm1vZHVsdXMgPSAkbW9kdWx1czsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRhdWdlbmQKICAgICAqIEBwYXJhbSBcR01QICRhZGRlbmQKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKFxHTVAgJGF1Z2VuZCwgXEdNUCAkYWRkZW5kKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRhcHRlci0+bW9kKCR0aGlzLT5hZGFwdGVyLT5hZGQoJGF1Z2VuZCwgJGFkZGVuZCksICR0aGlzLT5tb2R1bHVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRtaW51ZW5kCiAgICAgKiBAcGFyYW0gXEdNUCAkc3VidHJhaGVuZAogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdWIoXEdNUCAkbWludWVuZCwgXEdNUCAkc3VidHJhaGVuZCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkYXB0ZXItPm1vZCgkdGhpcy0+YWRhcHRlci0+c3ViKCRtaW51ZW5kLCAkc3VidHJhaGVuZCksICR0aGlzLT5tb2R1bHVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRtdWx0aXBsaWVyCiAgICAgKiBAcGFyYW0gXEdNUCAkbXVsaXBsaWNhbmQKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsKFxHTVAgJG11bHRpcGxpZXIsIFxHTVAgJG11bGlwbGljYW5kKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWRhcHRlci0+bW9kKCR0aGlzLT5hZGFwdGVyLT5tdWwoJG11bHRpcGxpZXIsICRtdWxpcGxpY2FuZCksICR0aGlzLT5tb2R1bHVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRkaXZpZGVuZAogICAgICogQHBhcmFtIFxHTVAgJGRpdmlzb3IKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2KFxHTVAgJGRpdmlkZW5kLCBcR01QICRkaXZpc29yKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bXVsKCRkaXZpZGVuZCwgJHRoaXMtPmFkYXB0ZXItPmludmVyc2VNb2QoJGRpdmlzb3IsICR0aGlzLT5tb2R1bHVzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEdNUCAkYmFzZQogICAgICogQHBhcmFtIFxHTVAgJGV4cG9uZW50CiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvdyhcR01QICRiYXNlLCBcR01QICRleHBvbmVudCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkYXB0ZXItPnBvd21vZCgkYmFzZSwgJGV4cG9uZW50LCAkdGhpcy0+bW9kdWx1cyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/NumberTheory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgICAgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogICAgICoKICAgICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogICAgICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICAgICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogICAgICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCiAgICAgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICAgICAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAgICAgKgogICAgICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICAgICAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogICAgICoKICAgICAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAgICAgKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICAgICAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCiAgICAgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogICAgICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAgICAgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKICAgICAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKioKICogSW1wbGVtZW50YXRpb24gb2Ygc29tZSBudW1iZXIgdGhlb3JldGljIGFsZ29yaXRobXMKICoKICogQGF1dGhvciBNYXR5YXMgRGFudGVyCiAqLwoKLyoqCiAqIFJld3JpdHRlbiB0byB0YWtlIGEgTWF0aEFkYXB0b3IgdG8gaGFuZGxlIGRpZmZlcmVudCBlbnZpcm9ubWVudHMuIEhhcwogKiBzb21lIGRlc2lyZWFibGUgZnVuY3Rpb25zIGZvciBwdWJsaWMga2V5IGNvbXByZXNzaW9uL3JlY292ZXJ5LgogKi8KY2xhc3MgTnVtYmVyVGhlb3J5CnsKICAgIC8qKgogICAgICogQHZhciBHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHByb3RlY3RlZCAkYWRhcHRlcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyKQogICAgewogICAgICAgICR0aGlzLT5hZGFwdGVyID0gJGFkYXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEdNUFtdICRwb2x5CiAgICAgKiBAcGFyYW0gJHBvbHltb2QKICAgICAqIEBwYXJhbSAkcAogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9seW5vbWlhbFJlZHVjZU1vZCgkcG9seSwgJHBvbHltb2QsICRwKQogICAgewogICAgICAgICRhZGFwdGVyID0gJHRoaXMtPmFkYXB0ZXI7CiAgICAgICAgJGNvdW50X3BvbHltb2QgPSBjb3VudCgkcG9seW1vZCk7CiAgICAgICAgaWYgKCRhZGFwdGVyLT5lcXVhbHMoZW5kKCRwb2x5bW9kKSwgZ21wX2luaXQoMSkpICYmICRjb3VudF9wb2x5bW9kID4gMSkgewogICAgICAgICAgICAkemVybyA9IGdtcF9pbml0KDApOwogICAgICAgICAgICB3aGlsZSAoY291bnQoJHBvbHkpID49ICRjb3VudF9wb2x5bW9kKSB7CiAgICAgICAgICAgICAgICBpZiAoISRhZGFwdGVyLT5lcXVhbHMoZW5kKCRwb2x5KSwgJHplcm8pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9IDI7ICRpIDwgJGNvdW50X3BvbHltb2QgKyAxOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwb2x5W2NvdW50KCRwb2x5KSAtICRpXSA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRhcHRlci0+bW9kKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGFwdGVyLT5zdWIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwb2x5W2NvdW50KCRwb2x5KSAtICRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFkYXB0ZXItPm11bCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCgkcG9seSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcG9seW1vZFskY291bnRfcG9seW1vZCAtICRpXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBvbHkgPSBhcnJheV9zbGljZSgkcG9seSwgMCwgY291bnQoJHBvbHkpIC0gMSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkcG9seTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gY2FsY3VsYXRlIHBvbHlub21pYWxSZWR1Y2VNb2QnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkbTEKICAgICAqIEBwYXJhbSAkbTIKICAgICAqIEBwYXJhbSAkcG9seW1vZAogICAgICogQHBhcmFtICRwCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb2x5bm9taWFsTXVsdGlwbHlNb2QoJG0xLCAkbTIsICRwb2x5bW9kLCAkcCkKICAgIHsKICAgICAgICAkcHJvZCA9IGFycmF5KCk7CiAgICAgICAgJGNtMSA9IGNvdW50KCRtMSk7CiAgICAgICAgJGNtMiA9IGNvdW50KCRtMik7CiAgICAgICAgJHplcm8gPSBnbXBfaW5pdCgwLCAxMCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjbTE7ICRpKyspIHsKICAgICAgICAgICAgZm9yICgkaiA9IDA7ICRqIDwgJGNtMjsgJGorKykgewogICAgICAgICAgICAgICAgJGluZGV4ID0gJGkgKyAkajsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJHByb2RbJGluZGV4XSkpIHsKICAgICAgICAgICAgICAgICAgICAkcHJvZFskaW5kZXhdID0gJHplcm87CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcHJvZFskaW5kZXhdID0KICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YWRhcHRlci0+bW9kKAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+YWRhcHRlci0+YWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHByb2RbJGluZGV4XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5hZGFwdGVyLT5tdWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG0xWyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbTJbJGpdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICRwCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5wb2x5bm9taWFsUmVkdWNlTW9kKCRwcm9kLCAkcG9seW1vZCwgJHApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRiYXNlCiAgICAgKiBAcGFyYW0gXEdNUCAkZXhwb25lbnQKICAgICAqIEBwYXJhbSBhcnJheSAkcG9seW1vZAogICAgICogQHBhcmFtIFxHTVAgJHAKICAgICAqIEByZXR1cm4gYXJyYXl8aW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb2x5bm9taWFsUG93TW9kKCRiYXNlLCBcR01QICRleHBvbmVudCwgJHBvbHltb2QsIFxHTVAgJHApCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSAkdGhpcy0+YWRhcHRlcjsKICAgICAgICAkemVybyA9IGdtcF9pbml0KDAsIDEwKTsKICAgICAgICAkb25lID0gZ21wX2luaXQoMSwgMTApOwogICAgICAgICR0d28gPSBnbXBfaW5pdCgyLCAxMCk7CgogICAgICAgIGlmICgkYWRhcHRlci0+Y21wKCRleHBvbmVudCwgJHApIDwgMCkgewogICAgICAgICAgICBpZiAoJGFkYXB0ZXItPmVxdWFscygkZXhwb25lbnQsICR6ZXJvKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRvbmU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRHID0gJGJhc2U7CiAgICAgICAgICAgICRrID0gJGV4cG9uZW50OwoKICAgICAgICAgICAgaWYgKCRhZGFwdGVyLT5lcXVhbHMoJGFkYXB0ZXItPm1vZCgkaywgJHR3byksICRvbmUpKSB7CiAgICAgICAgICAgICAgICAkcyA9ICRHOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHMgPSBhcnJheSgkb25lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgd2hpbGUgKCRhZGFwdGVyLT5jbXAoJGssICRvbmUpID4gMCkgewogICAgICAgICAgICAgICAgJGsgPSAkYWRhcHRlci0+ZGl2KCRrLCAkdHdvKTsKCiAgICAgICAgICAgICAgICAkRyA9ICR0aGlzLT5wb2x5bm9taWFsTXVsdGlwbHlNb2QoJEcsICRHLCAkcG9seW1vZCwgJHApOwogICAgICAgICAgICAgICAgaWYgKCRhZGFwdGVyLT5lcXVhbHMoJGFkYXB0ZXItPm1vZCgkaywgJHR3byksICRvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHMgPSAkdGhpcy0+cG9seW5vbWlhbE11bHRpcGx5TW9kKCRHLCAkcywgJHBvbHltb2QsICRwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRzOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjYWxjdWxhdGUgcG9seW5vbWlhbFBvd01vZCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJGEKICAgICAqIEBwYXJhbSBcR01QICRwCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNxdWFyZVJvb3RNb2RQKFxHTVAgJGEsIFxHTVAgJHApCiAgICB7CiAgICAgICAgJG1hdGggPSAkdGhpcy0+YWRhcHRlcjsKICAgICAgICAkemVybyA9IGdtcF9pbml0KDAsIDEwKTsKICAgICAgICAkb25lID0gZ21wX2luaXQoMSwgMTApOwogICAgICAgICR0d28gPSBnbXBfaW5pdCgyLCAxMCk7CiAgICAgICAgJGZvdXIgPSBnbXBfaW5pdCg0LCAxMCk7CiAgICAgICAgJGVpZ2h0ID0gZ21wX2luaXQoOCwgMTApOwoKICAgICAgICAkbW9kTWF0aCA9ICRtYXRoLT5nZXRNb2R1bGFyQXJpdGhtZXRpYygkcCk7CiAgICAgICAgaWYgKCRtYXRoLT5jbXAoJG9uZSwgJHApIDwgMCkgewogICAgICAgICAgICBpZiAoJG1hdGgtPmVxdWFscygkYSwgJHplcm8pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHplcm87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbWF0aC0+ZXF1YWxzKCRwLCAkdHdvKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRhOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkamFjID0gJG1hdGgtPmphY29iaSgkYSwgJHApOwogICAgICAgICAgICBpZiAoJGphYyA9PSAtMSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigkbWF0aC0+dG9TdHJpbmcoJGEpLiIgaGFzIG5vIHNxdWFyZSByb290IG1vZHVsbyAiLiRtYXRoLT50b1N0cmluZygkcCkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG1hdGgtPmVxdWFscygkbWF0aC0+bW9kKCRwLCAkZm91ciksIGdtcF9pbml0KDMsIDEwKSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkbW9kTWF0aC0+cG93KCRhLCAkbWF0aC0+ZGl2KCRtYXRoLT5hZGQoJHAsICRvbmUpLCAkZm91cikpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG1hdGgtPmVxdWFscygkbWF0aC0+bW9kKCRwLCAkZWlnaHQpLCBnbXBfaW5pdCg1LCAxMCkpKSB7CiAgICAgICAgICAgICAgICAkZCA9ICRtb2RNYXRoLT5wb3coJGEsICRtYXRoLT5kaXYoJG1hdGgtPnN1YigkcCwgJG9uZSksICRmb3VyKSk7CiAgICAgICAgICAgICAgICBpZiAoJG1hdGgtPmVxdWFscygkZCwgJG9uZSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG1vZE1hdGgtPnBvdygkYSwgJG1hdGgtPmRpdigkbWF0aC0+YWRkKCRwLCBnbXBfaW5pdCgzLCAxMCkpLCAkZWlnaHQpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJG1hdGgtPmVxdWFscygkZCwgJG1hdGgtPnN1YigkcCwgJG9uZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRtb2RNYXRoLT5tdWwoCiAgICAgICAgICAgICAgICAgICAgICAgICRtYXRoLT5tdWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHdvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGEKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1vZE1hdGgtPnBvdygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXRoLT5tdWwoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZvdXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0aC0+ZGl2KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXRoLT5zdWIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbXBfaW5pdCg1LCAxMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRlaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vc2hvdWxkbid0IGdldCBoZXJlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvciAoJGIgPSBnbXBfaW5pdCgyLCAxMCk7ICRtYXRoLT5jbXAoJGIsICRwKSA8IDA7ICRiID0gZ21wX2FkZCgkYiwgZ21wX2luaXQoMSwgMTApKSkgewogICAgICAgICAgICAgICAgaWYgKCRtYXRoLT5qYWNvYmkoCiAgICAgICAgICAgICAgICAgICAgJG1hdGgtPnN1YigKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGgtPm11bCgkYiwgJGIpLAogICAgICAgICAgICAgICAgICAgICAgICAkbWF0aC0+bXVsKCRmb3VyLCAkYSkKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICRwCiAgICAgICAgICAgICAgICApID09IC0xCiAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAkZiA9IGFycmF5KCRhLCAkbWF0aC0+c3ViKCR6ZXJvLCAkYiksICRvbmUpOwoKICAgICAgICAgICAgICAgICAgICAkZmYgPSAkdGhpcy0+cG9seW5vbWlhbFBvd01vZCgKICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJHplcm8sICRvbmUpLAogICAgICAgICAgICAgICAgICAgICAgICAkbWF0aC0+ZGl2KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGgtPmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR3bwogICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAkZiwKICAgICAgICAgICAgICAgICAgICAgICAgJHAKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJG1hdGgtPmVxdWFscygkZmZbMV0sICR6ZXJvKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGZmWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSBnb3QgaGVyZSBubyBiIHdhcyBmb3VuZAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGNhbGN1bGF0ZSBzcXVhcmUgcm9vdCBtb2QgcCEnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Primitives/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Primitives/CurveFp.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCmEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgp0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlClNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAppbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCk9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTApUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwpPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCk9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcTW9kdWxhckFyaXRobWV0aWM7CnVzZSBNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlOwoKLyoqCiAqIFRoaXMgY2xhc3MgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBhbiBFQyBvdmVyIGEgZmllbGQgbW9kdWxvIGEgcHJpbWUgbnVtYmVyCiAqCiAqIEltcG9ydGFudCBvYmplY3RpdmVzIGZvciB0aGlzIGNsYXNzIGFyZToKICogLSBEb2VzIHRoZSBjdXJ2ZSBjb250YWluIGEgcG9pbnQ/CiAqIC0gQ29tcGFyaXNvbiBvZiB0d28gY3VydmVzLgogKi8KY2xhc3MgQ3VydmVGcCBpbXBsZW1lbnRzIEN1cnZlRnBJbnRlcmZhY2UKewoKICAgIC8qKgogICAgICogQHZhciBDdXJ2ZVBhcmFtZXRlcnMKICAgICAqLwogICAgcHJvdGVjdGVkICRwYXJhbWV0ZXJzOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJGFkYXB0ZXIgPSBudWxsOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgTW9kdWxhckFyaXRobWV0aWMKICAgICAqLwogICAgcHJvdGVjdGVkICRtb2RBZGFwdGVyID0gbnVsbDsKCiAgICAvKioKICAgICAqIENvbnN0cnVjdG9yIHRoYXQgc2V0cyB1cCB0aGUgaW5zdGFuY2UgdmFyaWFibGVzLgogICAgICoKICAgICAqIEBwYXJhbSBDdXJ2ZVBhcmFtZXRlcnMgJHBhcmFtZXRlcnMKICAgICAqIEBwYXJhbSBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDdXJ2ZVBhcmFtZXRlcnMgJHBhcmFtZXRlcnMsIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPnBhcmFtZXRlcnMgPSAkcGFyYW1ldGVyczsKICAgICAgICAkdGhpcy0+YWRhcHRlciA9ICRhZGFwdGVyOwogICAgICAgICR0aGlzLT5tb2RBZGFwdGVyID0gbmV3IE1vZHVsYXJBcml0aG1ldGljKCR0aGlzLT5hZGFwdGVyLCAkdGhpcy0+cGFyYW1ldGVycy0+Z2V0UHJpbWUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDdXJ2ZUZwSW50ZXJmYWNlOjpnZXRNb2RBZGFwdGVyKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZEFkYXB0ZXIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kQWRhcHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEN1cnZlRnBJbnRlcmZhY2U6OmdldFBvaW50KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvaW50KFxHTVAgJHgsIFxHTVAgJHksIFxHTVAgJG9yZGVyID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFBvaW50KCR0aGlzLT5hZGFwdGVyLCAkdGhpcywgJHgsICR5LCAkb3JkZXIpOwogICAgfQogICAgCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEN1cnZlRnBJbnRlcmZhY2U6OmdldEluZmluaXR5KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEluZmluaXR5KCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFBvaW50KCR0aGlzLT5hZGFwdGVyLCAkdGhpcywgZ21wX2luaXQoMCwgMTApLCBnbXBfaW5pdCgwLCAxMCksIG51bGwsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcQ3VydmVGcEludGVyZmFjZTo6Z2V0R2VuZXJhdG9yKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEdlbmVyYXRvcihcR01QICR4LCBcR01QICR5LCBcR01QICRvcmRlciwgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBuZXcgR2VuZXJhdG9yUG9pbnQoJHRoaXMtPmFkYXB0ZXIsICR0aGlzLCAkeCwgJHksICRvcmRlciwgJHJhbmRvbUdlbmVyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYm9vbCAkd2FzT2RkCiAgICAgKiBAcGFyYW0gXEdNUCAkeENvb3JkCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlY292ZXJZZnJvbVgoJHdhc09kZCwgXEdNUCAkeENvb3JkKQogICAgewogICAgICAgICRtYXRoID0gJHRoaXMtPmFkYXB0ZXI7CiAgICAgICAgJHByaW1lID0gJHRoaXMtPmdldFByaW1lKCk7CgogICAgICAgICRyb290ID0gJHRoaXMtPmFkYXB0ZXItPmdldE51bWJlclRoZW9yeSgpLT5zcXVhcmVSb290TW9kUCgKICAgICAgICAgICAgJG1hdGgtPmFkZCgKICAgICAgICAgICAgICAgICRtYXRoLT5hZGQoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm1vZEFkYXB0ZXItPnBvdygkeENvb3JkLCBnbXBfaW5pdCgzLCAxMCkpLAogICAgICAgICAgICAgICAgICAgICRtYXRoLT5tdWwoJHRoaXMtPmdldEEoKSwgJHhDb29yZCkKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAkdGhpcy0+Z2V0QigpCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRwcmltZQogICAgICAgICk7CgogICAgICAgIGlmICgkbWF0aC0+ZXF1YWxzKCRtYXRoLT5tb2QoJHJvb3QsIGdtcF9pbml0KDIsIDEwKSksIGdtcF9pbml0KDEpKSA9PT0gJHdhc09kZCkgewogICAgICAgICAgICByZXR1cm4gJHJvb3Q7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRtYXRoLT5zdWIoJHByaW1lLCAkcm9vdCk7CiAgICAgICAgfQogICAgfQogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDdXJ2ZUZwSW50ZXJmYWNlOjpjb250YWlucygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb250YWlucyhcR01QICR4LCBcR01QICR5KQogICAgewogICAgICAgICRtYXRoID0gJHRoaXMtPmFkYXB0ZXI7CgogICAgICAgICRlcV96ZXJvID0gJG1hdGgtPmVxdWFscygKICAgICAgICAgICAgJHRoaXMtPm1vZEFkYXB0ZXItPnN1YigKICAgICAgICAgICAgICAgICRtYXRoLT5wb3coJHksIDIpLAogICAgICAgICAgICAgICAgJG1hdGgtPmFkZCgKICAgICAgICAgICAgICAgICAgICAkbWF0aC0+YWRkKAogICAgICAgICAgICAgICAgICAgICAgICAkbWF0aC0+cG93KCR4LCAzKSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGgtPm11bCgkdGhpcy0+Z2V0QSgpLCAkeCkKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5nZXRCKCkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKSwKICAgICAgICAgICAgZ21wX2luaXQoMCwgMTApCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRlcV96ZXJvOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcQ3VydmVGcEludGVyZmFjZTo6Z2V0QSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcmFtZXRlcnMtPmdldEEoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEN1cnZlRnBJbnRlcmZhY2U6OmdldEIoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJhbWV0ZXJzLT5nZXRCKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDdXJ2ZUZwSW50ZXJmYWNlOjpnZXRQcmltZSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJhbWV0ZXJzLT5nZXRQcmltZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFyYW1ldGVycy0+Z2V0U2l6ZSgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcQ3VydmVGcEludGVyZmFjZTo6Y21wKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNtcChDdXJ2ZUZwSW50ZXJmYWNlICRvdGhlcikKICAgIHsKICAgICAgICAkbWF0aCA9ICR0aGlzLT5hZGFwdGVyOwoKICAgICAgICAkZXF1YWwgID0gJG1hdGgtPmVxdWFscygkdGhpcy0+Z2V0QSgpLCAkb3RoZXItPmdldEEoKSk7CiAgICAgICAgJGVxdWFsICY9ICRtYXRoLT5lcXVhbHMoJHRoaXMtPmdldEIoKSwgJG90aGVyLT5nZXRCKCkpOwogICAgICAgICRlcXVhbCAmPSAkbWF0aC0+ZXF1YWxzKCR0aGlzLT5nZXRQcmltZSgpLCAkb3RoZXItPmdldFByaW1lKCkpOwoKICAgICAgICByZXR1cm4gKCRlcXVhbCkgPyAwIDogMTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEN1cnZlRnBJbnRlcmZhY2U6OmVxdWFscygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMoQ3VydmVGcEludGVyZmFjZSAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbXAoJG90aGVyKSA9PSAwOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcQ3VydmVGcEludGVyZmFjZTo6X190b1N0cmluZygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJ2N1cnZlKCcgLiAkdGhpcy0+YWRhcHRlci0+dG9TdHJpbmcoJHRoaXMtPmdldEEoKSkgLiAnLCAnIC4gJHRoaXMtPmFkYXB0ZXItPnRvU3RyaW5nKCR0aGlzLT5nZXRCKCkpIC4gJywgJyAuICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkdGhpcy0+Z2V0UHJpbWUoKSkgLiAnKSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2RlYnVnSW5mbygpCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ2EnID0+ICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkdGhpcy0+Z2V0QSgpKSwKICAgICAgICAgICAgJ2InID0+ICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkdGhpcy0+Z2V0QigpKSwKICAgICAgICAgICAgJ3ByaW1lJyA9PiAkdGhpcy0+YWRhcHRlci0+dG9TdHJpbmcoJHRoaXMtPmdldFByaW1lKCkpCiAgICAgICAgXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Primitives/CurveFpInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcTW9kdWxhckFyaXRobWV0aWM7CnVzZSBNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICogVGhpcyBpcyB0aGUgY29udHJhY3QgZm9yIGltcGxlbWVudGluZyBDdXJ2ZUZwIChFQyBwcmltZSBmaW5pdGUtZmllbGQpLgogKi8KaW50ZXJmYWNlIEN1cnZlRnBJbnRlcmZhY2UKewoKICAgIC8qKgogICAgICogUmV0dXJucyBhIG1vZHVsYXIgYXJpdGhtZXRpYyBhZGFwdGVyLgogICAgICoKICAgICAqIEByZXR1cm4gTW9kdWxhckFyaXRobWV0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZEFkYXB0ZXIoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHBvaW50IGlkZW50aWZpZWQgYnkgZ2l2ZW4gY29vcmRpbmF0ZXMuCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICR4CiAgICAgKiBAcGFyYW0gIFxHTVAgJHkKICAgICAqIEBwYXJhbSAgXEdNUCAkb3JkZXIKICAgICAqIEByZXR1cm4gUG9pbnRJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvaW50KFxHTVAgJHgsIFxHTVAgJHksIFxHTVAgJG9yZGVyID0gbnVsbCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYm9vbCAkd2FzT2RkCiAgICAgKiBAcGFyYW0gXEdNUCAkeAogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWNvdmVyWWZyb21YKCR3YXNPZGQsIFxHTVAgJHgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHBvaW50IHJlcHJlc2VudGluZyBpbmZpbml0eSBvbiB0aGUgY3VydmUuCiAgICAgKgogICAgICogQHJldHVybiBQb2ludEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SW5maW5pdHkoKTsKCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gIFxHTVAgJHgKICAgICAqIEBwYXJhbSAgXEdNUCAkeQogICAgICogQHBhcmFtICBcR01QICRvcmRlcgogICAgICogQHBhcmFtICBSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvcgogICAgICogQHJldHVybiBHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yKFxHTVAgJHgsIFxHTVAgJHksIFxHTVAgJG9yZGVyLCBSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpOwoKICAgIC8qKgogICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnZlIGNvbnRhaW5zIHRoZSBnaXZlbiBjb29yZGluYXRlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gIFxHTVAgJHgKICAgICAqIEBwYXJhbSAgXEdNUCAkeQogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb250YWlucyhcR01QICR4LCBcR01QICR5KTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGEgcGFyYW1ldGVyIG9mIHRoZSBjdXJ2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEEoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGIgcGFyYW1ldGVyIG9mIHRoZSBjdXJ2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEIoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHByaW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VydmUuCiAgICAgKgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZSgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKTsKCiAgICAvKioKICAgICAqIENvbXBhcmVzIHRoZSBjdXJ2ZSB0byBhbm90aGVyLgogICAgICoKICAgICAqIEBwYXJhbSAgQ3VydmVGcEludGVyZmFjZSAkb3RoZXIKICAgICAqIEByZXR1cm4gaW50ICAgICAgICAgICAgICA8IDAgaWYgJHRoaXMgPCAkb3RoZXIsIDAgaWYgJG90aGVyID09ICR0aGlzLCA+IDAgaWYgJHRoaXMgPiAkb3RoZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNtcChDdXJ2ZUZwSW50ZXJmYWNlICRvdGhlcik7CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgY3VydmUgaXMgZXF1YWwgdG8gYW5vdGhlci4KICAgICAqCiAgICAgKiBAcGFyYW0gIEN1cnZlRnBJbnRlcmZhY2UgJG90aGVyCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhDdXJ2ZUZwSW50ZXJmYWNlICRvdGhlcik7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGN1cnZlIGZvciBkZWJ1Z2dpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Primitives/CurveParameters.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzOwoKY2xhc3MgQ3VydmVQYXJhbWV0ZXJzCnsKICAgIC8qKgogICAgICogRWxsaXB0aWMgY3VydmUgb3ZlciB0aGUgZmllbGQgb2YgaW50ZWdlcnMgbW9kdWxvIGEgcHJpbWUuCiAgICAgKgogICAgICogQHZhciBcR01QCiAgICAgKi8KICAgIHByb3RlY3RlZCAkYTsKCiAgICAvKioKICAgICAqCiAgICAgKiBAdmFyIFxHTVAKICAgICAqLwogICAgcHJvdGVjdGVkICRiOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgXEdNUAogICAgICovCiAgICBwcm90ZWN0ZWQgJHByaW1lOwoKICAgIC8qKgogICAgICogQmluYXJ5IGxlbmd0aCBvZiBrZXlzIGFzc29jaWF0ZWQgd2l0aCB0aGVzZSBjdXJ2ZSBwYXJhbWV0ZXJzCiAgICAgKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRzaXplOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkc2l6ZQogICAgICogQHBhcmFtIFxHTVAgJHByaW1lCiAgICAgKiBAcGFyYW0gXEdNUCAkYQogICAgICogQHBhcmFtIFxHTVAgJGIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzaXplLCBcR01QICRwcmltZSwgXEdNUCAkYSwgXEdNUCAkYikKICAgIHsKICAgICAgICAkdGhpcy0+c2l6ZSA9ICRzaXplOwogICAgICAgICR0aGlzLT5wcmltZSA9ICRwcmltZTsKICAgICAgICAkdGhpcy0+YSA9ICRhOwogICAgICAgICR0aGlzLT5iID0gJGI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEEoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpemU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Primitives/GeneratorPoint.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHJpdmF0ZUtleTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5Owp1c2UgTWRhbnRlclxFY2NcUmFuZG9tXFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlOwoKLyoqCiAqIEN1cnZlIHBvaW50IGZyb20gd2hpY2ggcHVibGljIGFuZCBwcml2YXRlIGtleXMgY2FuIGJlIGRlcml2ZWQuCiAqLwpjbGFzcyBHZW5lcmF0b3JQb2ludCBleHRlbmRzIFBvaW50CnsKICAgIC8qKgogICAgICogQHZhciBcTWRhbnRlclxFY2NcUmFuZG9tXERlYnVnRGVjb3JhdG9yfFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGdlbmVyYXRvcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBHbXBNYXRoSW50ZXJmYWNlICAgICAgICAgICAgICAgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBDdXJ2ZUZwSW50ZXJmYWNlICAgICAgICAgICAgICAgJGN1cnZlCiAgICAgKiBAcGFyYW0gXEdNUCAgICAgICAgICAgICAgICAgICAgICAgICAgICR4CiAgICAgKiBAcGFyYW0gXEdNUCAgICAgICAgICAgICAgICAgICAgICAgICAgICR5CiAgICAgKiBAcGFyYW0gXEdNUCAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcmRlcgogICAgICogQHBhcmFtIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkZ2VuZXJhdG9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyLAogICAgICAgIEN1cnZlRnBJbnRlcmZhY2UgJGN1cnZlLAogICAgICAgIFxHTVAgJHgsCiAgICAgICAgXEdNUCAkeSwKICAgICAgICBcR01QICRvcmRlciwKICAgICAgICBSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJGdlbmVyYXRvciA9IG51bGwKICAgICkgewogICAgICAgICR0aGlzLT5nZW5lcmF0b3IgPSAkZ2VuZXJhdG9yID86IFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk6OmdldFJhbmRvbUdlbmVyYXRvcigpOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJGFkYXB0ZXIsICRjdXJ2ZSwgJHgsICR5LCAkb3JkZXIpOwogICAgfQoKICAgIC8qKgogICAgICogVmVyaWZpZXMgdmFsaWRpdHkgb2YgZ2l2ZW4gY29vcmRpbmF0ZXMgYWdhaW5zdCB0aGUgY3VycmVudCBwb2ludCBhbmQgaXRzIHBvaW50LgogICAgICoKICAgICAqIEB0b2RvICAgQ2hlY2sgaWYgcmVhbGx5IG5lY2Vzc2FyeSBoZXJlIChvbmx5IHVzZWQgZm9yIHRlc3RpbmcgaW4gbGliKQogICAgICogQHBhcmFtICBcR01QICR4CiAgICAgKiBAcGFyYW0gIFxHTVAgJHkKICAgICAqIEByZXR1cm4gYm9vbGVhbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNWYWxpZChcR01QICR4LCBcR01QICR5KQogICAgewogICAgICAgCiAgICAgICAgJG1hdGggPSAkdGhpcy0+Z2V0QWRhcHRlcigpOwoKICAgICAgICAkbiA9ICR0aGlzLT5nZXRPcmRlcigpOwogICAgICAgICR6ZXJvID0gZ21wX2luaXQoMCwgMTApOwogICAgICAgICRjdXJ2ZSA9ICR0aGlzLT5nZXRDdXJ2ZSgpOwoKICAgICAgICBpZiAoJG1hdGgtPmNtcCgkeCwgJHplcm8pIDwgMCB8fCAkbWF0aC0+Y21wKCRuLCAkeCkgPD0gMCB8fCAkbWF0aC0+Y21wKCR5LCAkemVybykgPCAwIHx8ICRtYXRoLT5jbXAoJG4sICR5KSA8PSAwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmICghICRjdXJ2ZS0+Y29udGFpbnMoJHgsICR5KSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkcG9pbnQgPSAkY3VydmUtPmdldFBvaW50KCR4LCAkeSktPm11bCgkbik7CgogICAgICAgIGlmICghICRwb2ludC0+aXNJbmZpbml0eSgpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBQcml2YXRlS2V5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVQcml2YXRlS2V5KCkKICAgIHsKICAgICAgICAkc2VjcmV0ID0gJHRoaXMtPmdlbmVyYXRvci0+Z2VuZXJhdGUoJHRoaXMtPmdldE9yZGVyKCkpOwoKICAgICAgICByZXR1cm4gbmV3IFByaXZhdGVLZXkoJHRoaXMtPmdldEFkYXB0ZXIoKSwgJHRoaXMsICRzZWNyZXQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJHgKICAgICAqIEBwYXJhbSBcR01QICR5CiAgICAgKiBAcmV0dXJuIFB1YmxpY0tleQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHVibGljS2V5RnJvbShcR01QICR4LCBcR01QICR5KQogICAgewogICAgICAgICRwdWJQb2ludCA9ICR0aGlzLT5nZXRDdXJ2ZSgpLT5nZXRQb2ludCgkeCwgJHksICR0aGlzLT5nZXRPcmRlcigpKTsKICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleSgkdGhpcy0+Z2V0QWRhcHRlcigpLCAkdGhpcywgJHB1YlBvaW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRzZWNyZXRNdWx0aXBsaWVyCiAgICAgKiBAcmV0dXJuIFByaXZhdGVLZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByaXZhdGVLZXlGcm9tKFxHTVAgJHNlY3JldE11bHRpcGxpZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBQcml2YXRlS2V5KCR0aGlzLT5nZXRBZGFwdGVyKCksICR0aGlzLCAkc2VjcmV0TXVsdGlwbGllcik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Primitives/Point.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcTW9kdWxhckFyaXRobWV0aWM7CnVzZSBNZGFudGVyXEVjY1xVdGlsXEJpbmFyeVN0cmluZzsKCi8qKgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHlhcyBEYW50ZXIKICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKLyoqCiAqIFRoaXMgY2xhc3MgaXMgd2hlcmUgdGhlIGVsbGlwdGljIGN1cnZlIGFyaXRobWV0aWMgdGFrZXMgcGxhY2UuCiAqIFRoZSBpbXBvcnRhbnQgbWV0aG9kcyBhcmU6CiAqIC0gYWRkOiBhZGRzIHR3byBwb2ludHMgYWNjb3JkaW5nIHRvIGVjIGFyaXRobWV0aWMKICogLSBkb3VibGU6IGRvdWJsZXMgYSBwb2ludCBvbiB0aGUgZWMgZmllbGQgbW9kIHAKICogLSBtdWw6IHVzZXMgZG91YmxlIGFuZCBhZGQgdG8gYWNoaWV2ZSBtdWx0aXBsaWNhdGlvbiBUaGUgcmVzdCBvZiB0aGUgbWV0aG9kcyBhcmUgdGhlcmUgZm9yIHN1cHBvcnRpbmcgdGhlIG9uZXMgYWJvdmUuCiAqLwpjbGFzcyBQb2ludCBpbXBsZW1lbnRzIFBvaW50SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBDdXJ2ZUZwSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGN1cnZlOwoKICAgIC8qKgogICAgICogQHZhciBHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGFkYXB0ZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIE1vZHVsYXJBcml0aG1ldGljCiAgICAgKi8KICAgIHByaXZhdGUgJG1vZEFkYXB0ZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIFxHTVAKICAgICAqLwogICAgcHJpdmF0ZSAkeDsKCiAgICAvKioKICAgICAqIEB2YXIgXEdNUAogICAgICovCiAgICBwcml2YXRlICR5OwoKICAgIC8qKgogICAgICogQHZhciBcR01QCiAgICAgKi8KICAgIHByaXZhdGUgJG9yZGVyOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGluZmluaXR5ID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlCiAgICAgKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgICAgICRhZGFwdGVyCiAgICAgKiBAcGFyYW0gQ3VydmVGcEludGVyZmFjZSAgICAgJGN1cnZlCiAgICAgKiBAcGFyYW0gXEdNUCAgICAgICAgJHgKICAgICAqIEBwYXJhbSBcR01QICAgICAgICAkeQogICAgICogQHBhcmFtIFxHTVAgICAgICAgICRvcmRlcgogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICRpbmZpbml0eQogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gICAgd2hlbiBlaXRoZXIgdGhlIGN1cnZlIGRvZXMgbm90IGNvbnRhaW4gdGhlIGdpdmVuIGNvb3JkaW5hdGVzIG9yCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBvcmRlciBpcyBub3QgbnVsbCBhbmQgUCh4LCB5KSAqIG9yZGVyIGlzIG5vdCBlcXVhbCB0byBpbmZpbml0eS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsIEN1cnZlRnBJbnRlcmZhY2UgJGN1cnZlLCBcR01QICR4LCBcR01QICR5LCBcR01QICRvcmRlciA9IG51bGwsICRpbmZpbml0eSA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5hZGFwdGVyICAgID0gJGFkYXB0ZXI7CiAgICAgICAgJHRoaXMtPm1vZEFkYXB0ZXIgPSAkY3VydmUtPmdldE1vZEFkYXB0ZXIoKTsKICAgICAgICAkdGhpcy0+Y3VydmUgICAgICA9ICRjdXJ2ZTsKICAgICAgICAkdGhpcy0+eCAgICAgICAgICA9ICR4OwogICAgICAgICR0aGlzLT55ICAgICAgICAgID0gJHk7CiAgICAgICAgJHRoaXMtPm9yZGVyICAgICAgPSAkb3JkZXIgIT09IG51bGwgPyAkb3JkZXIgOiBnbXBfaW5pdCgwLCAxMCk7CiAgICAgICAgJHRoaXMtPmluZmluaXR5ICAgPSAoYm9vbCkgJGluZmluaXR5OwogICAgICAgIGlmICghICRpbmZpbml0eSAmJiAhICRjdXJ2ZS0+Y29udGFpbnMoJHgsICR5KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkN1cnZlICIgLiAkY3VydmUgLiAiIGRvZXMgbm90IGNvbnRhaW4gcG9pbnQgKCIgLiAkYWRhcHRlci0+dG9TdHJpbmcoJHgpIC4gIiwgIiAuICRhZGFwdGVyLT50b1N0cmluZygkeSkgLiAiKSIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc19udWxsKCRvcmRlcikpIHsKICAgICAgICAgICAgJG11bCA9ICR0aGlzLT5tdWwoJG9yZGVyKTsKICAgICAgICAgICAgaWYgKCEkbXVsLT5pc0luZmluaXR5KCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiU0VMRiAqIE9SREVSIE1VU1QgRVFVQUwgSU5GSU5JVFkuICgiIC4gKHN0cmluZykkbXVsIC4gIiBmb3VuZCBpbnN0ZWFkKSIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBZGFwdGVyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkYXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xQb2ludEludGVyZmFjZTo6aXNJbmZpbml0eSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0luZmluaXR5KCkKICAgIHsKICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5pbmZpbml0eTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFBvaW50SW50ZXJmYWNlOjpnZXRDdXJ2ZSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDdXJ2ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jdXJ2ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFBvaW50SW50ZXJmYWNlOjpnZXRPcmRlcigpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmRlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5vcmRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFBvaW50SW50ZXJmYWNlOjpnZXRYKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+eDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFBvaW50SW50ZXJmYWNlOjpnZXRZKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+eTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFBvaW50SW50ZXJmYWNlOjphZGQoKQogICAgICogQHJldHVybiBzZWxmCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoUG9pbnRJbnRlcmZhY2UgJGFkZGVuZCkKICAgIHsKICAgICAgICBpZiAoISAkdGhpcy0+Y3VydmUtPmVxdWFscygkYWRkZW5kLT5nZXRDdXJ2ZSgpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIlRoZSBFbGxpcHRpYyBDdXJ2ZXMgZG8gbm90IG1hdGNoLiIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhZGRlbmQtPmlzSW5maW5pdHkoKSkgewogICAgICAgICAgICByZXR1cm4gY2xvbmUgJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmlzSW5maW5pdHkoKSkgewogICAgICAgICAgICByZXR1cm4gY2xvbmUgJGFkZGVuZDsKICAgICAgICB9CgogICAgICAgICRtYXRoID0gJHRoaXMtPmFkYXB0ZXI7CiAgICAgICAgJG1vZE1hdGggPSAkdGhpcy0+bW9kQWRhcHRlcjsKCiAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJGFkZGVuZC0+Z2V0WCgpLCAkdGhpcy0+eCkpIHsKICAgICAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJGFkZGVuZC0+Z2V0WSgpLCAkdGhpcy0+eSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RG91YmxlKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmN1cnZlLT5nZXRJbmZpbml0eSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkc2xvcGUgPSAkbW9kTWF0aC0+ZGl2KAogICAgICAgICAgICAkbWF0aC0+c3ViKCRhZGRlbmQtPmdldFkoKSwgJHRoaXMtPnkpLAogICAgICAgICAgICAkbWF0aC0+c3ViKCRhZGRlbmQtPmdldFgoKSwgJHRoaXMtPngpCiAgICAgICAgKTsKCiAgICAgICAgJHhSID0gJG1vZE1hdGgtPnN1YigKICAgICAgICAgICAgJG1hdGgtPnN1YigkbWF0aC0+cG93KCRzbG9wZSwgMiksICR0aGlzLT54KSwKICAgICAgICAgICAgJGFkZGVuZC0+Z2V0WCgpCiAgICAgICAgKTsKCiAgICAgICAgJHlSID0gJG1vZE1hdGgtPnN1YigKICAgICAgICAgICAgJG1hdGgtPm11bCgkc2xvcGUsICRtYXRoLT5zdWIoJHRoaXMtPngsICR4UikpLAogICAgICAgICAgICAkdGhpcy0+eQogICAgICAgICk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Y3VydmUtPmdldFBvaW50KCR4UiwgJHlSLCAkdGhpcy0+b3JkZXIpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcUG9pbnRJbnRlcmZhY2U6OmNtcCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbXAoUG9pbnRJbnRlcmZhY2UgJG90aGVyKQogICAgewogICAgICAgIGlmICgkb3RoZXItPmlzSW5maW5pdHkoKSAmJiAkdGhpcy0+aXNJbmZpbml0eSgpKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvdGhlci0+aXNJbmZpbml0eSgpIHx8ICR0aGlzLT5pc0luZmluaXR5KCkpIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICAkbWF0aCA9ICR0aGlzLT5hZGFwdGVyOwogICAgICAgICRlcXVhbCA9ICgkbWF0aC0+ZXF1YWxzKCR0aGlzLT54LCAkb3RoZXItPmdldFgoKSkpOwogICAgICAgICRlcXVhbCAmPSAoJG1hdGgtPmVxdWFscygkdGhpcy0+eSwgJG90aGVyLT5nZXRZKCkpKTsKICAgICAgICAkZXF1YWwgJj0gJHRoaXMtPmlzSW5maW5pdHkoKSA9PSAkb3RoZXItPmlzSW5maW5pdHkoKTsKICAgICAgICAkZXF1YWwgJj0gJHRoaXMtPmN1cnZlLT5lcXVhbHMoJG90aGVyLT5nZXRDdXJ2ZSgpKTsKCiAgICAgICAgaWYgKCRlcXVhbCkgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcUG9pbnRJbnRlcmZhY2U6OmVxdWFscygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMoUG9pbnRJbnRlcmZhY2UgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y21wKCRvdGhlcikgPT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFBvaW50SW50ZXJmYWNlOjptdWwoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsKFxHTVAgJG4pCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5pc0luZmluaXR5KCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jdXJ2ZS0+Z2V0SW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgICR6ZXJvID0gZ21wX2luaXQoMCwgMTApOwogICAgICAgIGlmICgkdGhpcy0+YWRhcHRlci0+Y21wKCR0aGlzLT5vcmRlciwgJHplcm8pID4gMCkgewogICAgICAgICAgICAkbiA9ICR0aGlzLT5hZGFwdGVyLT5tb2QoJG4sICR0aGlzLT5vcmRlcik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmFkYXB0ZXItPmVxdWFscygkbiwgJHplcm8pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y3VydmUtPmdldEluZmluaXR5KCk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBQb2ludFtdICRyICovCiAgICAgICAgJHIgPSBbCiAgICAgICAgICAgICR0aGlzLT5jdXJ2ZS0+Z2V0SW5maW5pdHkoKSwKICAgICAgICAgICAgY2xvbmUgJHRoaXMKICAgICAgICBdOwoKICAgICAgICAkayA9ICR0aGlzLT5jdXJ2ZS0+Z2V0U2l6ZSgpOwogICAgICAgICRuID0gc3RyX3BhZCgkdGhpcy0+YWRhcHRlci0+YmFzZUNvbnZlcnQoJHRoaXMtPmFkYXB0ZXItPnRvU3RyaW5nKCRuKSwgMTAsIDIpLCAkaywgJzAnLCBTVFJfUEFEX0xFRlQpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkazsgJGkrKykgewogICAgICAgICAgICAkaiA9ICRuWyRpXTsKCiAgICAgICAgICAgICR0aGlzLT5jc3dhcCgkclswXSwgJHJbMV0sICRqIF4gMSwgJGspOwoKICAgICAgICAgICAgJHJbMF0gPSAkclswXS0+YWRkKCRyWzFdKTsKICAgICAgICAgICAgJHJbMV0gPSAkclsxXS0+Z2V0RG91YmxlKCk7CgogICAgICAgICAgICAkdGhpcy0+Y3N3YXAoJHJbMF0sICRyWzFdLCAkaiBeIDEsICRrKTsKICAgICAgICB9CgogICAgICAgICRyWzBdLT52YWxpZGF0ZSgpOwoKICAgICAgICByZXR1cm4gJHJbMF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUG9pbnQgJGEKICAgICAqIEBwYXJhbSBQb2ludCAkYgogICAgICogQHBhcmFtIGludCAkY29uZAogICAgICogQHBhcmFtIGludCAkY3VydmVTaXplCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY3N3YXAoc2VsZiAkYSwgc2VsZiAkYiwgJGNvbmQsICRjdXJ2ZVNpemUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNzd2FwVmFsdWUoJGEtPngsICRiLT54LCAkY29uZCwgJGN1cnZlU2l6ZSk7CiAgICAgICAgJHRoaXMtPmNzd2FwVmFsdWUoJGEtPnksICRiLT55LCAkY29uZCwgJGN1cnZlU2l6ZSk7CiAgICAgICAgJHRoaXMtPmNzd2FwVmFsdWUoJGEtPm9yZGVyLCAkYi0+b3JkZXIsICRjb25kLCAkY3VydmVTaXplKTsKICAgICAgICAkdGhpcy0+Y3N3YXBWYWx1ZSgkYS0+aW5maW5pdHksICRiLT5pbmZpbml0eSwgJGNvbmQsIDgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2x8XEdNUCAkYQogICAgICogQHBhcmFtIGJvb2x8XEdNUCAkYgogICAgICogQHBhcmFtIGludCAkY29uZAogICAgICogQHBhcmFtIGludCAkbWFza0JpdFNpemUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNzd2FwVmFsdWUoJiAkYSwgJiAkYiwgJGNvbmQsICRtYXNrQml0U2l6ZSA9IG51bGwpCiAgICB7CiAgICAgICAgJGlzR01QID0gaXNfb2JqZWN0KCRhKSAmJiAkYSBpbnN0YW5jZW9mIFxHTVA7CgogICAgICAgICRzYSA9ICRpc0dNUCA/ICRhIDogZ21wX2luaXQoaW50dmFsKCRhKSwgMTApOwogICAgICAgICRzYiA9ICRpc0dNUCA/ICRiIDogZ21wX2luaXQoaW50dmFsKCRiKSwgMTApOwoKICAgICAgICBpZiAobnVsbCA9PT0gJG1hc2tCaXRTaXplKSB7CiAgICAgICAgICAgICRtYXNrQml0U2l6ZSA9IG1heChCaW5hcnlTdHJpbmc6Omxlbmd0aChnbXBfc3RydmFsKCRzYSwgMikpLCBCaW5hcnlTdHJpbmc6Omxlbmd0aChnbXBfc3RydmFsKCRzYiwgMikpKTsKICAgICAgICB9CiAgICAgICAgJG1hc2sgPSBzdHJfcGFkKCcnLCAkbWFza0JpdFNpemUsIChzdHJpbmcpICgxIC0gaW50dmFsKCRjb25kKSksIFNUUl9QQURfTEVGVCk7CiAgICAgICAgJG1hc2sgPSBnbXBfaW5pdCgkbWFzaywgMik7CgogICAgICAgICR0YUEgPSAkdGhpcy0+YWRhcHRlci0+Yml0d2lzZUFuZCgkc2EsICRtYXNrKTsKICAgICAgICAkdGFCID0gJHRoaXMtPmFkYXB0ZXItPmJpdHdpc2VBbmQoJHNiLCAkbWFzayk7CgogICAgICAgICRzYSA9ICR0aGlzLT5hZGFwdGVyLT5iaXR3aXNlWG9yKCR0aGlzLT5hZGFwdGVyLT5iaXR3aXNlWG9yKCRzYSwgJHNiKSwgJHRhQik7CiAgICAgICAgJHNiID0gJHRoaXMtPmFkYXB0ZXItPmJpdHdpc2VYb3IoJHRoaXMtPmFkYXB0ZXItPmJpdHdpc2VYb3IoJHNhLCAkc2IpLCAkdGFBKTsKICAgICAgICAkc2EgPSAkdGhpcy0+YWRhcHRlci0+Yml0d2lzZVhvcigkdGhpcy0+YWRhcHRlci0+Yml0d2lzZVhvcigkc2EsICRzYiksICR0YUIpOwoKICAgICAgICAkYSA9ICRpc0dNUCA/ICRzYSA6IChib29sKSBnbXBfc3RydmFsKCRzYSwgMTApOwogICAgICAgICRiID0gJGlzR01QID8gJHNiIDogKGJvb2wpIGdtcF9zdHJ2YWwoJHNiLCAxMCk7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZhbGlkYXRlKCkKICAgIHsKICAgICAgICBpZiAoISAkdGhpcy0+aW5maW5pdHkgJiYgISAkdGhpcy0+Y3VydmUtPmNvbnRhaW5zKCR0aGlzLT54LCAkdGhpcy0+eSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIHBvaW50Jyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcUG9pbnRJbnRlcmZhY2U6OmdldERvdWJsZSgpCiAgICAgKiBAcmV0dXJuIHNlbGYKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERvdWJsZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5pc0luZmluaXR5KCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jdXJ2ZS0+Z2V0SW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgICRtYXRoID0gJHRoaXMtPmFkYXB0ZXI7CiAgICAgICAgJG1vZE1hdGggPSAkdGhpcy0+bW9kQWRhcHRlcjsKCiAgICAgICAgJGEgPSAkdGhpcy0+Y3VydmUtPmdldEEoKTsKICAgICAgICAkdGhyZWVYMiA9ICRtYXRoLT5tdWwoZ21wX2luaXQoMywgMTApLCAkbWF0aC0+cG93KCR0aGlzLT54LCAyKSk7CgogICAgICAgICR0YW5nZW50ID0gJG1vZE1hdGgtPmRpdigKICAgICAgICAgICAgJG1hdGgtPmFkZCgkdGhyZWVYMiwgJGEpLAogICAgICAgICAgICAkbWF0aC0+bXVsKGdtcF9pbml0KDIsIDEwKSwgJHRoaXMtPnkpCiAgICAgICAgKTsKCiAgICAgICAgJHgzID0gJG1vZE1hdGgtPnN1YigKICAgICAgICAgICAgJG1hdGgtPnBvdygkdGFuZ2VudCwgMiksCiAgICAgICAgICAgICRtYXRoLT5tdWwoZ21wX2luaXQoMiwgMTApLCAkdGhpcy0+eCkKICAgICAgICApOwoKICAgICAgICAkeTMgPSAkbW9kTWF0aC0+c3ViKAogICAgICAgICAgICAkbWF0aC0+bXVsKCR0YW5nZW50LCAkbWF0aC0+c3ViKCR0aGlzLT54LCAkeDMpKSwKICAgICAgICAgICAgJHRoaXMtPnkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmN1cnZlLT5nZXRQb2ludCgkeDMsICR5MywgJHRoaXMtPm9yZGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFBvaW50SW50ZXJmYWNlOjpfX3RvU3RyaW5nKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+aW5maW5pdHkpIHsKICAgICAgICAgICAgcmV0dXJuICdbIChpbmZpbml0eSkgb24gJyAuIChzdHJpbmcpICR0aGlzLT5jdXJ2ZSAuICcgXSc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gIlsgKCIgLiAkdGhpcy0+YWRhcHRlci0+dG9TdHJpbmcoJHRoaXMtPngpIC4gIiwiIC4gJHRoaXMtPmFkYXB0ZXItPnRvU3RyaW5nKCR0aGlzLT55KSAuICcpIG9uICcgLiAoc3RyaW5nKSAkdGhpcy0+Y3VydmUgLiAnIF0nOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19kZWJ1Z0luZm8oKQogICAgewogICAgICAgICRpbmZvID0gWwogICAgICAgICAgICAneCcgPT4gJHRoaXMtPmFkYXB0ZXItPnRvU3RyaW5nKCR0aGlzLT54KSwKICAgICAgICAgICAgJ3knID0+ICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkdGhpcy0+eSksCiAgICAgICAgICAgICd6JyA9PiAkdGhpcy0+YWRhcHRlci0+dG9TdHJpbmcoJHRoaXMtPm9yZGVyKSwKICAgICAgICAgICAgJ2N1cnZlJyA9PiAkdGhpcy0+Y3VydmUKICAgICAgICBdOwoKICAgICAgICBpZiAoJHRoaXMtPmluZmluaXR5KSB7CiAgICAgICAgICAgICRpbmZvWyd4J10gPSAnaW5mICgnIC4gJGluZm9bJ3gnXSAuICcpJzsKICAgICAgICAgICAgJGluZm9bJ3knXSA9ICdpbmYgKCcgLiAkaW5mb1sneSddIC4gJyknOwogICAgICAgICAgICAkaW5mb1sneiddID0gJ2luZiAoJyAuICRpbmZvWyd6J10gLiAnKSc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGluZm87CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Primitives/PointInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICogVGhpcyBpcyB0aGUgY29udHJhY3QgZm9yIGltcGxlbWVudGluZyBQb2ludCwgd2hpY2ggZW5jYXBzdWxhdGVzIGVudGl0aWVzCiAqIGFuZCBvcGVyYXRpb25zIG92ZXIgdGhlIHBvaW50cyBvbiB0aGUgRWxsaXB0aWMgQ3VydmUuIEltcGxlbWVudGF0aW9ucyBtdXN0IGJlIGltbXV0YWJsZS4KICoKICogSW1wbGVtZW50b3JzIG11c3QgYmUgd2FyeSBvZiB0aGUgc3BlY2lhbCAiSW5maW5pdHkiIGltcGxlbWVudGF0aW9uLCB3aGljaCBicmVha3MgTFNQLCBhbmQgc2hvdWxkIGFsd2F5cwogKiBiZSBjaGVja2VkIGFnYWluc3QgKGFuZCBwcm9wZXJseSBoYW5kbGVkKSB3aGVuIHJlY2VpdmluZyBhIFBvaW50SW50ZXJmYWNlIGFzIGFuIGFyZ3VtZW50IG9yIHdoZW4gYSBtZXRob2QgaW5kaWNhdGVzIGl0IGNhbgogKiByZXR1cm4gaW5maW5pdHkuCiAqCiAqIEB0b2RvIEZpeCBMU1AgYnJlYWsgKHBvc3NpYmx5IGRlcml2ZSBhbiBleHRyYSBpbnRlcmZhY2UsIEZpbml0ZVBvaW50SW50ZXJmYWNlIGZyb20gY3VycmVudCBvbmUsIGFuZCBtb3ZlCiAqIGNvb3JkaW5hdGUtcmVsYXRlZCBvcHMgdG8gc3ViLWludGVyZmFjZSkuCiAqLwppbnRlcmZhY2UgUG9pbnRJbnRlcmZhY2UKewoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGluc3RhbmNlIGlzIGFuIG5vbi1maW5pdGUgcG9pbnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0luZmluaXR5KCk7CgogICAgLyoqCiAgICAgKiBBZGRzIGFub3RoZXIgcG9pbnQgdG8gdGhlIGN1cnJlbnQgb25lIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgcG9pbnQuCiAgICAgKgogICAgICogQHBhcmFtICBQb2ludEludGVyZmFjZSAkYWRkZW5kCiAgICAgKiBAcmV0dXJuIFBvaW50SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoUG9pbnRJbnRlcmZhY2UgJGFkZGVuZCk7CgogICAgLyoqCiAgICAgKiBDb21wYXJlcyB0aGUgY3VycmVudCBpbnN0YW5jZSB0byBhbm90aGVyIHBvaW50LgogICAgICoKICAgICAqIEBwYXJhbSAgUG9pbnRJbnRlcmZhY2UgJG90aGVyCiAgICAgKiBAcmV0dXJuIGludHxzdHJpbmcgICAgICAgICAgICAgIEEgbnVtYmVyIGRpZmZlcmVudCB0aGFuIDAgd2hlbiBjdXJyZW50IGluc3RhbmNlIGlzIGxlc3MgdGhhbiB0aGUgZ2l2ZW4gcG9pbnQsIDAgd2hlbiB0aGV5IGFyZSBlcXVhbC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNtcChQb2ludEludGVyZmFjZSAkb3RoZXIpOwoKICAgIC8qKgogICAgICogQ2hlY2tzIHdoZXRoZXIgdGhlIGN1cnJlbnQgaW5zdGFuY2UgaXMgZXF1YWwgdG8gdGhlIGdpdmVuIHBvaW50LgogICAgICoKICAgICAqIEBwYXJhbSAgUG9pbnRJbnRlcmZhY2UgJG90aGVyCiAgICAgKiBAcmV0dXJuIGJvb2wgICAgICAgICAgICAgICAgICAgIHRydWUgd2hlbiBwb2ludHMgYXJlIGVxdWFsLCBmYWxzZSBvdGhlcndpc2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMoUG9pbnRJbnRlcmZhY2UgJG90aGVyKTsKCiAgICAvKioKICAgICAqIE11bHRpcGxpZXMgdGhlIHBvaW50IGJ5IGEgc2NhbGFyIHZhbHVlIGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgcG9pbnQuCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRtdWx0aXBsaWVyCiAgICAgKiBAcmV0dXJuIFBvaW50SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtdWwoXEdNUCAkbXVsdGlwbGllcik7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBjdXJ2ZSB0byB3aGljaCB0aGUgcG9pbnQgYmVsb25ncy4KICAgICAqCiAgICAgKiBAcmV0dXJuIEN1cnZlRnBJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEN1cnZlKCk7CgogICAgLyoqCiAgICAgKiBEb3VibGVzIHRoZSBjdXJyZW50IHBvaW50IGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgcG9pbnQuCiAgICAgKgogICAgICogQHJldHVybiBQb2ludEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RG91YmxlKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBvcmRlciBvZiB0aGUgcG9pbnQuCiAgICAgKgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmRlcigpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgWCBjb29yZGluYXRlIG9mIHRoZSBwb2ludC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFgoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIFkgY29vcmRpbmF0ZSBvZiB0aGUgcG9pbnQuCiAgICAgKgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRZKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIHBvaW50LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Random/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Random/DebugDecorator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xSYW5kb207CgpjbGFzcyBEZWJ1Z0RlY29yYXRvciBpbXBsZW1lbnRzIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGdlbmVyYXRvcjsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJGdlbmVyYXRvck5hbWU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRnZW5lcmF0b3IKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkZ2VuZXJhdG9yLCAkbmFtZSkKICAgIHsKICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yID0gJGdlbmVyYXRvcjsKICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yTmFtZSA9ICRuYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJG1heAogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZShcR01QICRtYXgpCiAgICB7CiAgICAgICAgZWNobyAkdGhpcy0+Z2VuZXJhdG9yTmFtZS4nOjpyYW5kKCkgPSAnOwoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmdlbmVyYXRvci0+Z2VuZXJhdGUoJG1heCk7CgogICAgICAgIGVjaG8gZ21wX3N0cnZhbCgkcmVzdWx0LCAxMCkuUEhQX0VPTDsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Random/HmacRandomNumberGenerator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xSYW5kb207Cgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5SW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcVXRpbFxCaW5hcnlTdHJpbmc7CnVzZSBNZGFudGVyXEVjY1xVdGlsXE51bWJlclNpemU7CgpjbGFzcyBIbWFjUmFuZG9tTnVtYmVyR2VuZXJhdG9yIGltcGxlbWVudHMgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJG1hdGg7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRhbGdvcml0aG07CgogICAgLyoqCiAgICAgKiBAdmFyIFByaXZhdGVLZXlJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcHJpdmF0ZUtleTsKCiAgICAvKioKICAgICAqIEB2YXIgXEdNUAogICAgICovCiAgICBwcml2YXRlICRtZXNzYWdlSGFzaDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkYWxnU2l6ZSA9IGFycmF5KAogICAgICAgICdzaGExJyA9PiAxNjAsCiAgICAgICAgJ3NoYTIyNCcgPT4gMjI0LAogICAgICAgICdzaGEyNTYnID0+IDI1NiwKICAgICAgICAnc2hhMzg0JyA9PiAzODUsCiAgICAgICAgJ3NoYTUxMicgPT4gNTEyCiAgICApOwoKICAgIC8qKgogICAgICogSG1hYyBjb25zdHJ1Y3Rvci4KICAgICAqIEBwYXJhbSBHbXBNYXRoSW50ZXJmYWNlICRtYXRoCiAgICAgKiBAcGFyYW0gUHJpdmF0ZUtleUludGVyZmFjZSAkcHJpdmF0ZUtleQogICAgICogQHBhcmFtIFxHTVAgJG1lc3NhZ2VIYXNoIC0gZGVjaW1hbCBoYXNoIG9mIHRoZSBtZXNzYWdlICgqbWF5KiBiZSB0cnVuY2F0ZWQpCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0gLSBoYXNoaW5nIGFsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoR21wTWF0aEludGVyZmFjZSAkbWF0aCwgUHJpdmF0ZUtleUludGVyZmFjZSAkcHJpdmF0ZUtleSwgXEdNUCAkbWVzc2FnZUhhc2gsICRhbGdvcml0aG0pCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+YWxnU2l6ZVskYWxnb3JpdGhtXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGhhc2hpbmcgYWxnb3JpdGhtJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bWF0aCA9ICRtYXRoOwogICAgICAgICR0aGlzLT5hbGdvcml0aG0gPSAkYWxnb3JpdGhtOwogICAgICAgICR0aGlzLT5wcml2YXRlS2V5ID0gJHByaXZhdGVLZXk7CiAgICAgICAgJHRoaXMtPm1lc3NhZ2VIYXNoID0gJG1lc3NhZ2VIYXNoOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYml0cyAtIGJpbmFyeSBzdHJpbmcgb2YgYml0cwogICAgICogQHBhcmFtIFxHTVAgJHFsZW4gLSBsZW5ndGggb2YgcSBpbiBiaXRzCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJpdHMyaW50KCRiaXRzLCAkcWxlbikKICAgIHsKICAgICAgICAkdmxlbiA9IGdtcF9pbml0KEJpbmFyeVN0cmluZzo6bGVuZ3RoKCRiaXRzKSAqIDgsIDEwKTsKICAgICAgICAkaGV4ID0gYmluMmhleCgkYml0cyk7CiAgICAgICAgJHYgPSBnbXBfaW5pdCgkaGV4LCAxNik7CgogICAgICAgIGlmICgkdGhpcy0+bWF0aC0+Y21wKCR2bGVuLCAkcWxlbikgPiAwKSB7CiAgICAgICAgICAgICR2ID0gJHRoaXMtPm1hdGgtPnJpZ2h0U2hpZnQoJHYsICR0aGlzLT5tYXRoLT50b1N0cmluZygkdGhpcy0+bWF0aC0+c3ViKCR2bGVuLCAkcWxlbikpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRpbnQKICAgICAqIEBwYXJhbSBcR01QICRybGVuIC0gcm91bmRlZCBvY3RldCBsZW5ndGgKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbnQyb2N0ZXRzKFxHTVAgJGludCwgXEdNUCAkcmxlbikKICAgIHsKICAgICAgICAkb3V0ID0gcGFjaygiSCoiLCAkdGhpcy0+bWF0aC0+ZGVjSGV4KGdtcF9zdHJ2YWwoJGludCwgMTApKSk7CiAgICAgICAgJGxlbmd0aCA9IGdtcF9pbml0KEJpbmFyeVN0cmluZzo6bGVuZ3RoKCRvdXQpLCAxMCk7CiAgICAgICAgaWYgKCR0aGlzLT5tYXRoLT5jbXAoJGxlbmd0aCwgJHJsZW4pIDwgMCkgewogICAgICAgICAgICByZXR1cm4gc3RyX3BhZCgnJywgJHRoaXMtPm1hdGgtPnRvU3RyaW5nKCR0aGlzLT5tYXRoLT5zdWIoJHJsZW4sICRsZW5ndGgpKSwgIlx4MDAiKSAuICRvdXQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPm1hdGgtPmNtcCgkbGVuZ3RoLCAkcmxlbikgPiAwKSB7CiAgICAgICAgICAgIHJldHVybiBCaW5hcnlTdHJpbmc6OnN1YnN0cmluZygkb3V0LCAwLCAkdGhpcy0+bWF0aC0+dG9TdHJpbmcoJHJsZW4pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEhhc2hMZW5ndGgoJGFsZ29yaXRobSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFsZ1NpemVbJGFsZ29yaXRobV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEdNUCAkcQogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZShcR01QICRxKQogICAgewogICAgICAgICRxbGVuID0gZ21wX2luaXQoTnVtYmVyU2l6ZTo6Ym5OdW1CaXRzKCR0aGlzLT5tYXRoLCAkcSksIDEwKTsKICAgICAgICAkcmxlbiA9ICR0aGlzLT5tYXRoLT5yaWdodFNoaWZ0KCR0aGlzLT5tYXRoLT5hZGQoJHFsZW4sIGdtcF9pbml0KDcsIDEwKSksIDMpOwogICAgICAgICRobGVuID0gJHRoaXMtPmdldEhhc2hMZW5ndGgoJHRoaXMtPmFsZ29yaXRobSk7CiAgICAgICAgJGJ4ID0gJHRoaXMtPmludDJvY3RldHMoJHRoaXMtPnByaXZhdGVLZXktPmdldFNlY3JldCgpLCAkcmxlbikgLiAkdGhpcy0+aW50Mm9jdGV0cygkdGhpcy0+bWVzc2FnZUhhc2gsICRybGVuKTsKCiAgICAgICAgJHYgPSBzdHJfcGFkKCcnLCAkaGxlbiAvIDgsICJceDAxIiwgU1RSX1BBRF9MRUZUKTsKICAgICAgICAkayA9IHN0cl9wYWQoJycsICRobGVuIC8gOCwgIlx4MDAiLCBTVFJfUEFEX0xFRlQpOwoKICAgICAgICAkayA9IGhhc2hfaG1hYygkdGhpcy0+YWxnb3JpdGhtLCAkdiAuICJceDAwIiAuICRieCwgJGssIHRydWUpOwogICAgICAgICR2ID0gaGFzaF9obWFjKCR0aGlzLT5hbGdvcml0aG0sICR2LCAkaywgdHJ1ZSk7CgogICAgICAgICRrID0gaGFzaF9obWFjKCR0aGlzLT5hbGdvcml0aG0sICR2IC4gIlx4MDEiIC4gJGJ4LCAkaywgdHJ1ZSk7CiAgICAgICAgJHYgPSBoYXNoX2htYWMoJHRoaXMtPmFsZ29yaXRobSwgJHYsICRrLCB0cnVlKTsKCiAgICAgICAgJHQgPSAnJzsKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICR0b2ZmID0gZ21wX2luaXQoMCwgMTApOwogICAgICAgICAgICB3aGlsZSAoJHRoaXMtPm1hdGgtPmNtcCgkdG9mZiwgJHJsZW4pIDwgMCkgewogICAgICAgICAgICAgICAgJHYgPSBoYXNoX2htYWMoJHRoaXMtPmFsZ29yaXRobSwgJHYsICRrLCB0cnVlKTsKCiAgICAgICAgICAgICAgICAkY2MgPSBtaW4oQmluYXJ5U3RyaW5nOjpsZW5ndGgoJHYpLCBnbXBfc3RydmFsKGdtcF9zdWIoJHJsZW4sICR0b2ZmKSwgMTApKTsKICAgICAgICAgICAgICAgICR0IC49IEJpbmFyeVN0cmluZzo6c3Vic3RyaW5nKCR2LCAwLCAkY2MpOwogICAgICAgICAgICAgICAgJHRvZmYgPSBnbXBfYWRkKCR0b2ZmLCAkY2MpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkayA9ICR0aGlzLT5iaXRzMmludCgkdCwgJHFsZW4pOwogICAgICAgICAgICBpZiAoJHRoaXMtPm1hdGgtPmNtcCgkaywgZ21wX2luaXQoMCwgMTApKSA+IDAgJiYgJHRoaXMtPm1hdGgtPmNtcCgkaywgJHEpIDwgMCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkayA9IGhhc2hfaG1hYygkdGhpcy0+YWxnb3JpdGhtLCAkdiAuICJceDAwIiwgJGssIHRydWUpOwogICAgICAgICAgICAkdiA9IGhhc2hfaG1hYygkdGhpcy0+YWxnb3JpdGhtLCAkdiwgJGssIHRydWUpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Random/RandomGeneratorFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xSYW5kb207Cgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5SW50ZXJmYWNlOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcTWF0aEFkYXB0ZXJGYWN0b3J5OwoKY2xhc3MgUmFuZG9tR2VuZXJhdG9yRmFjdG9yeQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBib29sICRkZWJ1ZwogICAgICogQHJldHVybiBEZWJ1Z0RlY29yYXRvcnxSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFJhbmRvbUdlbmVyYXRvcigkZGVidWcgPSBmYWxzZSkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6d3JhcEFkYXB0ZXIoCiAgICAgICAgICAgIG5ldyBSYW5kb21OdW1iZXJHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICBNYXRoQWRhcHRlckZhY3Rvcnk6OmdldEFkYXB0ZXIoJGRlYnVnKQogICAgICAgICAgICApLAogICAgICAgICAgICAncmFuZG9tX2J5dGVzJywKICAgICAgICAgICAgJGRlYnVnCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQcml2YXRlS2V5SW50ZXJmYWNlICRwcml2YXRlS2V5CiAgICAgKiBAcGFyYW0gXEdNUCAgICAgICAgICAgICAgICAkbWVzc2FnZUhhc2gKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRhbGdvCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgICAkZGVidWcKICAgICAqIEByZXR1cm4gRGVidWdEZWNvcmF0b3J8UmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SG1hY1JhbmRvbUdlbmVyYXRvcihQcml2YXRlS2V5SW50ZXJmYWNlICRwcml2YXRlS2V5LCBcR01QICRtZXNzYWdlSGFzaCwgJGFsZ28sICRkZWJ1ZyA9IGZhbHNlKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjp3cmFwQWRhcHRlcigKICAgICAgICAgICAgbmV3IEhtYWNSYW5kb21OdW1iZXJHZW5lcmF0b3IoCiAgICAgICAgICAgICAgICBNYXRoQWRhcHRlckZhY3Rvcnk6OmdldEFkYXB0ZXIoJGRlYnVnKSwKICAgICAgICAgICAgICAgICRwcml2YXRlS2V5LAogICAgICAgICAgICAgICAgJG1lc3NhZ2VIYXNoLAogICAgICAgICAgICAgICAgJGFsZ28KICAgICAgICAgICAgKSwKICAgICAgICAgICAgJ3JmYzY5NzknLAogICAgICAgICAgICAkZGVidWcKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkZ2VuZXJhdG9yCiAgICAgKiBAcGFyYW0gJG5hbWUKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlYnVnCiAgICAgKiBAcmV0dXJuIERlYnVnRGVjb3JhdG9yfFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB3cmFwQWRhcHRlcihSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJGdlbmVyYXRvciwgJG5hbWUsICRkZWJ1ZyA9IGZhbHNlKQogICAgewogICAgICAgIGlmICgkZGVidWcgPT09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBEZWJ1Z0RlY29yYXRvcigkZ2VuZXJhdG9yLCAkbmFtZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGdlbmVyYXRvcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Random/RandomNumberGenerator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xSYW5kb207Cgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcVXRpbFxOdW1iZXJTaXplOwoKY2xhc3MgUmFuZG9tTnVtYmVyR2VuZXJhdG9yIGltcGxlbWVudHMgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGFkYXB0ZXI7CgogICAgLyoqCiAgICAgKiBSYW5kb21OdW1iZXJHZW5lcmF0b3IgY29uc3RydWN0b3IuCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICAkdGhpcy0+YWRhcHRlciA9ICRhZGFwdGVyOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJG1heAogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0ZShcR01QICRtYXgpCiAgICB7CiAgICAgICAgJG51bUJpdHMgPSBOdW1iZXJTaXplOjpibk51bUJpdHMoJHRoaXMtPmFkYXB0ZXIsICRtYXgpOwogICAgICAgICRudW1CeXRlcyA9IGNlaWwoJG51bUJpdHMgLyA4KTsKCiAgICAgICAgLy8gR2VuZXJhdGUgYW4gaW50ZWdlciBvZiBzaXplID49ICRudW1CaXRzCiAgICAgICAgJGJ5dGVzID0gcmFuZG9tX2J5dGVzKCRudW1CeXRlcyk7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPmFkYXB0ZXItPnN0cmluZ1RvSW50KCRieXRlcyk7CgogICAgICAgICRtYXNrID0gZ21wX3N1YihnbXBfcG93KDIsICRudW1CaXRzKSwgMSk7CiAgICAgICAgJGludGVnZXIgPSBnbXBfYW5kKCR2YWx1ZSwgJG1hc2spOwoKICAgICAgICByZXR1cm4gJGludGVnZXI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Random/RandomNumberGeneratorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xSYW5kb207CgppbnRlcmZhY2UgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogR2VuZXJhdGUgYSByYW5kb20gbnVtYmVyIGJldHdlZW4gMCBhbmQgdGhlIHNwZWNpZmllZCB1cHBlciBib3VuZGFyeS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEdNUCAkbWF4IFVwcGVyIGJvdW5kYXJ5LCBpbmNsdXNpdmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdlbmVyYXRlKFxHTVAgJG1heCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Point/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Point/CompressedPointSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFBvaW50OwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVGcEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcUG9pbnRJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFV0aWxcQ3VydmVPaWRNYXBwZXI7CgpjbGFzcyBDb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyIGltcGxlbWVudHMgUG9pbnRTZXJpYWxpemVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBHbXBNYXRoSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGFkYXB0ZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIFxNZGFudGVyXEVjY1xNYXRoXE51bWJlclRoZW9yeQogICAgICovCiAgICBwcml2YXRlICR0aGVvcnk7CgogICAgLyoqCiAgICAgKiBDb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyIGNvbnN0cnVjdG9yLgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKICAgICAgICAkdGhpcy0+dGhlb3J5ID0gJGFkYXB0ZXItPmdldE51bWJlclRoZW9yeSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFBvaW50SW50ZXJmYWNlICRwb2ludAogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByZWZpeChQb2ludEludGVyZmFjZSAkcG9pbnQpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5hZGFwdGVyLT5lcXVhbHMoJHRoaXMtPmFkYXB0ZXItPm1vZCgkcG9pbnQtPmdldFkoKSwgZ21wX2luaXQoMiwgMTApKSwgZ21wX2luaXQoMCkpKSB7CiAgICAgICAgICAgIHJldHVybiAnMDInOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAnMDMnOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQb2ludEludGVyZmFjZSAkcG9pbnQKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoUG9pbnRJbnRlcmZhY2UgJHBvaW50KQogICAgewogICAgICAgICRsZW5ndGggPSBDdXJ2ZU9pZE1hcHBlcjo6Z2V0Qnl0ZVNpemUoJHBvaW50LT5nZXRDdXJ2ZSgpKSAqIDI7CgogICAgICAgICRoZXhTdHJpbmcgPSAkdGhpcy0+Z2V0UHJlZml4KCRwb2ludCk7CiAgICAgICAgJGhleFN0cmluZyAuPSBzdHJfcGFkKGdtcF9zdHJ2YWwoJHBvaW50LT5nZXRYKCksIDE2KSwgJGxlbmd0aCwgJzAnLCBTVFJfUEFEX0xFRlQpOwoKICAgICAgICByZXR1cm4gJGhleFN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBDdXJ2ZUZwSW50ZXJmYWNlICRjdXJ2ZQogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YSAtIGhleCBzZXJpYWxpemVkIGNvbXByZXNzZWQgcG9pbnQKICAgICAqIEByZXR1cm4gUG9pbnRJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplKEN1cnZlRnBJbnRlcmZhY2UgJGN1cnZlLCAkZGF0YSkKICAgIHsKICAgICAgICAkcHJlZml4ID0gc3Vic3RyKCRkYXRhLCAwLCAyKTsKICAgICAgICBpZiAoJHByZWZpeCAhPT0gJzAzJyAmJiAkcHJlZml4ICE9PSAnMDInKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGRhdGE6IG9ubHkgY29tcHJlc3NlZCBrZXlzIGFyZSBzdXBwb3J0ZWQuJyk7CiAgICAgICAgfQoKICAgICAgICAkeCA9IGdtcF9pbml0KHN1YnN0cigkZGF0YSwgMiksIDE2KTsKICAgICAgICAkeSA9ICRjdXJ2ZS0+cmVjb3Zlcllmcm9tWCgkcHJlZml4ID09PSAnMDMnLCAkeCk7CgogICAgICAgIHJldHVybiAkY3VydmUtPmdldFBvaW50KCR4LCAkeSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Point/PointSerializerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFBvaW50OwoKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcUG9pbnRJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnBJbnRlcmZhY2U7CgppbnRlcmZhY2UgUG9pbnRTZXJpYWxpemVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSAgUG9pbnRJbnRlcmZhY2UgJHBvaW50CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKFBvaW50SW50ZXJmYWNlICRwb2ludCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIEN1cnZlRnBJbnRlcmZhY2UgJGN1cnZlICBDdXJ2ZSB0aGF0IGNvbnRhaW5zIHRoZSBzZXJpYWxpemVkIHBvaW50CiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICAgICAgJHN0cmluZwogICAgICogQHJldHVybiBQb2ludEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXJpYWxpemUoQ3VydmVGcEludGVyZmFjZSAkY3VydmUsICRzdHJpbmcpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Point/UncompressedPointSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFBvaW50OwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcUG9pbnRJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnBJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFV0aWxcQ3VydmVPaWRNYXBwZXI7CnVzZSBNZGFudGVyXEVjY1xVdGlsXEJpbmFyeVN0cmluZzsKCmNsYXNzIFVuY29tcHJlc3NlZFBvaW50U2VyaWFsaXplciBpbXBsZW1lbnRzIFBvaW50U2VyaWFsaXplckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgICAgICRhZGFwdGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyKQogICAgewogICAgICAgICR0aGlzLT5hZGFwdGVyID0gJGFkYXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUG9pbnRJbnRlcmZhY2UgJHBvaW50CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKFBvaW50SW50ZXJmYWNlICRwb2ludCkKICAgIHsKICAgICAgICAkbGVuZ3RoID0gQ3VydmVPaWRNYXBwZXI6OmdldEJ5dGVTaXplKCRwb2ludC0+Z2V0Q3VydmUoKSkgKiAyOwoKICAgICAgICAkaGV4U3RyaW5nID0gJzA0JzsKICAgICAgICAkaGV4U3RyaW5nIC49IHN0cl9wYWQoZ21wX3N0cnZhbCgkcG9pbnQtPmdldFgoKSwgMTYpLCAkbGVuZ3RoLCAnMCcsIFNUUl9QQURfTEVGVCk7CiAgICAgICAgJGhleFN0cmluZyAuPSBzdHJfcGFkKGdtcF9zdHJ2YWwoJHBvaW50LT5nZXRZKCksIDE2KSwgJGxlbmd0aCwgJzAnLCBTVFJfUEFEX0xFRlQpOwoKICAgICAgICByZXR1cm4gJGhleFN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBDdXJ2ZUZwSW50ZXJmYWNlICRjdXJ2ZQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgJGRhdGEKICAgICAqIEByZXR1cm4gUG9pbnRJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplKEN1cnZlRnBJbnRlcmZhY2UgJGN1cnZlLCAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoQmluYXJ5U3RyaW5nOjpzdWJzdHJpbmcoJGRhdGEsIDAsIDIpICE9ICcwNCcpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YTogb25seSB1bmNvbXByZXNzZWQga2V5cyBhcmUgc3VwcG9ydGVkLicpOwogICAgICAgIH0KCiAgICAgICAgJGRhdGEgPSBCaW5hcnlTdHJpbmc6OnN1YnN0cmluZygkZGF0YSwgMik7CiAgICAgICAgJGRhdGFMZW5ndGggPSBCaW5hcnlTdHJpbmc6Omxlbmd0aCgkZGF0YSk7CgogICAgICAgICR4ID0gZ21wX2luaXQoQmluYXJ5U3RyaW5nOjpzdWJzdHJpbmcoJGRhdGEsIDAsICRkYXRhTGVuZ3RoIC8gMiksIDE2KTsKICAgICAgICAkeSA9IGdtcF9pbml0KEJpbmFyeVN0cmluZzo6c3Vic3RyaW5nKCRkYXRhLCAkZGF0YUxlbmd0aCAvIDIpLCAxNik7CgogICAgICAgIHJldHVybiAkY3VydmUtPmdldFBvaW50KCR4LCAkeSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PrivateKey/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PrivateKey/DerPrivateKeySerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXk7Cgp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCaXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPY3RldFN0cmluZzsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHJpdmF0ZUtleUludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcTWF0aEFkYXB0ZXJGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxVdGlsXEN1cnZlT2lkTWFwcGVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcUGVtUHVibGljS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHVibGljS2V5XERlclB1YmxpY0tleVNlcmlhbGl6ZXI7CnVzZSBGR1xBU04xXEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q7CgovKioKICogUEVNIFByaXZhdGUga2V5IGZvcm1hdHRlcgogKgogKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTkxNQogKi8KY2xhc3MgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIgaW1wbGVtZW50cyBQcml2YXRlS2V5U2VyaWFsaXplckludGVyZmFjZQp7CgogICAgY29uc3QgVkVSU0lPTiA9IDE7CgogICAgLyoqCiAgICAgKiBAdmFyIEdtcE1hdGhJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICogQHZhciBEZXJQdWJsaWNLZXlTZXJpYWxpemVyCiAgICAgKi8KICAgIHByaXZhdGUgJHB1YktleVNlcmlhbGl6ZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAgICAgICAkYWRhcHRlcgogICAgICogQHBhcmFtIFBlbVB1YmxpY0tleVNlcmlhbGl6ZXIgJHB1YktleVNlcmlhbGl6ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIgPSBudWxsLCBQZW1QdWJsaWNLZXlTZXJpYWxpemVyICRwdWJLZXlTZXJpYWxpemVyID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+YWRhcHRlciA9ICRhZGFwdGVyID86IE1hdGhBZGFwdGVyRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICR0aGlzLT5wdWJLZXlTZXJpYWxpemVyID0gJHB1YktleVNlcmlhbGl6ZXIgPzogbmV3IERlclB1YmxpY0tleVNlcmlhbGl6ZXIoJHRoaXMtPmFkYXB0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcU2VyaWFsaXplclxQcml2YXRlS2V5U2VyaWFsaXplckludGVyZmFjZTo6c2VyaWFsaXplKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZShQcml2YXRlS2V5SW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgJHByaXZhdGVLZXlJbmZvID0gbmV3IFNlcXVlbmNlKAogICAgICAgICAgICBuZXcgSW50ZWdlcihzZWxmOjpWRVJTSU9OKSwKICAgICAgICAgICAgbmV3IE9jdGV0U3RyaW5nKCR0aGlzLT5mb3JtYXRLZXkoJGtleSkpLAogICAgICAgICAgICBuZXcgRXhwbGljaXRseVRhZ2dlZE9iamVjdCgwLCBDdXJ2ZU9pZE1hcHBlcjo6Z2V0Q3VydmVPaWQoJGtleS0+Z2V0UG9pbnQoKS0+Z2V0Q3VydmUoKSkpLAogICAgICAgICAgICBuZXcgRXhwbGljaXRseVRhZ2dlZE9iamVjdCgxLCAkdGhpcy0+ZW5jb2RlUHViS2V5KCRrZXkpKQogICAgICAgICk7CgogICAgICAgIHJldHVybiAkcHJpdmF0ZUtleUluZm8tPmdldEJpbmFyeSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFByaXZhdGVLZXlJbnRlcmZhY2UgJGtleQogICAgICogQHJldHVybiBCaXRTdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBlbmNvZGVQdWJLZXkoUHJpdmF0ZUtleUludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIHJldHVybiBuZXcgQml0U3RyaW5nKAogICAgICAgICAgICAkdGhpcy0+cHViS2V5U2VyaWFsaXplci0+Z2V0VW5jb21wcmVzc2VkS2V5KCRrZXktPmdldFB1YmxpY0tleSgpKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUHJpdmF0ZUtleUludGVyZmFjZSAka2V5CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZvcm1hdEtleShQcml2YXRlS2V5SW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zdHJ2YWwoJGtleS0+Z2V0U2VjcmV0KCksIDE2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHJpdmF0ZUtleVNlcmlhbGl6ZXJJbnRlcmZhY2U6OnBhcnNlKCkKICAgICAqIEB0aHJvd3MgXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoJGRhdGEpCiAgICB7CiAgICAgICAgJGFzbk9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkZGF0YSk7CgogICAgICAgIGlmICghICgkYXNuT2JqZWN0IGluc3RhbmNlb2YgU2VxdWVuY2UpIHx8ICRhc25PYmplY3QtPmdldE51bWJlcm9mQ2hpbGRyZW4oKSAhPT0gNCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgZGF0YS4nKTsKICAgICAgICB9CgogICAgICAgICRjaGlsZHJlbiA9ICRhc25PYmplY3QtPmdldENoaWxkcmVuKCk7CgogICAgICAgICR2ZXJzaW9uID0gJGNoaWxkcmVuWzBdOwoKICAgICAgICBpZiAoJHZlcnNpb24tPmdldENvbnRlbnQoKSAhPSAxKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBkYXRhOiBvbmx5IHZlcnNpb24gMSAoUkZDNTkxNSkga2V5cyBhcmUgc3VwcG9ydGVkLicpOwogICAgICAgIH0KCiAgICAgICAgJGtleSA9IGdtcF9pbml0KCRjaGlsZHJlblsxXS0+Z2V0Q29udGVudCgpLCAxNik7CiAgICAgICAgJG9pZCA9ICRjaGlsZHJlblsyXS0+Z2V0Q29udGVudCgpWzBdOwogICAgICAgICRnZW5lcmF0b3IgPSBDdXJ2ZU9pZE1hcHBlcjo6Z2V0R2VuZXJhdG9yRnJvbU9pZCgkb2lkKTsKCiAgICAgICAgcmV0dXJuICRnZW5lcmF0b3ItPmdldFByaXZhdGVLZXlGcm9tKCRrZXkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PrivateKey/PemPrivateKeySerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXk7Cgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5SW50ZXJmYWNlOwoKLyoqCiAqIFBFTSBQcml2YXRlIGtleSBmb3JtYXR0ZXIKICoKICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzU5MTUKICovCmNsYXNzIFBlbVByaXZhdGVLZXlTZXJpYWxpemVyIGltcGxlbWVudHMgUHJpdmF0ZUtleVNlcmlhbGl6ZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIERlclByaXZhdGVLZXlTZXJpYWxpemVyCiAgICAgKi8KICAgIHByaXZhdGUgJGRlclNlcmlhbGl6ZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIgJGRlclNlcmlhbGl6ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KERlclByaXZhdGVLZXlTZXJpYWxpemVyICRkZXJTZXJpYWxpemVyKQogICAgewogICAgICAgICR0aGlzLT5kZXJTZXJpYWxpemVyID0gJGRlclNlcmlhbGl6ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlTZXJpYWxpemVySW50ZXJmYWNlOjpzZXJpYWxpemUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKFByaXZhdGVLZXlJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAkcHJpdmF0ZUtleUluZm8gPSAkdGhpcy0+ZGVyU2VyaWFsaXplci0+c2VyaWFsaXplKCRrZXkpOwoKICAgICAgICAkY29udGVudCAgPSAnLS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRjb250ZW50IC49IHRyaW0oY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkcHJpdmF0ZUtleUluZm8pLCA2NCwgUEhQX0VPTCkpLlBIUF9FT0w7CiAgICAgICAgJGNvbnRlbnQgLj0gJy0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0nOwoKICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlTZXJpYWxpemVySW50ZXJmYWNlOjpwYXJzZSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgkZm9ybWF0dGVkS2V5KQogICAgewogICAgICAgICRmb3JtYXR0ZWRLZXkgPSBzdHJfcmVwbGFjZSgnLS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tJywgJycsICRmb3JtYXR0ZWRLZXkpOwogICAgICAgICRmb3JtYXR0ZWRLZXkgPSBzdHJfcmVwbGFjZSgnLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLScsICcnLCAkZm9ybWF0dGVkS2V5KTsKCiAgICAgICAgJGRhdGEgPSBiYXNlNjRfZGVjb2RlKCRmb3JtYXR0ZWRLZXkpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmRlclNlcmlhbGl6ZXItPnBhcnNlKCRkYXRhKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PrivateKey/PrivateKeySerializerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXk7Cgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5SW50ZXJmYWNlOwoKaW50ZXJmYWNlIFByaXZhdGVLZXlTZXJpYWxpemVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSAgUHJpdmF0ZUtleUludGVyZmFjZSAka2V5CiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKFByaXZhdGVLZXlJbnRlcmZhY2UgJGtleSk7CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgJGZvcm1hdHRlZEtleQogICAgICogQHJldHVybiBQcml2YXRlS2V5SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgkZm9ybWF0dGVkS2V5KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PublicKey/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PublicKey/Der/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PublicKey/Der/Formatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxEZXI7Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xQb2ludEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5SW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXE5hbWVkQ3VydmVGcDsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcVXRpbFxDdXJ2ZU9pZE1hcHBlcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHVibGljS2V5XERlclB1YmxpY0tleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFBvaW50XFBvaW50U2VyaWFsaXplckludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUG9pbnRcVW5jb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyOwoKY2xhc3MgRm9ybWF0dGVyCnsKCiAgICAvKioKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICogQHZhciBVbmNvbXByZXNzZWRQb2ludFNlcmlhbGl6ZXIKICAgICAqLwogICAgcHJpdmF0ZSAkcG9pbnRTZXJpYWxpemVyOwoKICAgIC8qKgogICAgICogRm9ybWF0dGVyIGNvbnN0cnVjdG9yLgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBQb2ludFNlcmlhbGl6ZXJJbnRlcmZhY2V8bnVsbCAkcG9pbnRTZXJpYWxpemVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyLCBQb2ludFNlcmlhbGl6ZXJJbnRlcmZhY2UgJHBvaW50U2VyaWFsaXplciA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKICAgICAgICAkdGhpcy0+cG9pbnRTZXJpYWxpemVyID0gJHBvaW50U2VyaWFsaXplciA/OiBuZXcgVW5jb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyKCRhZGFwdGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQdWJsaWNLZXlJbnRlcmZhY2UgJGtleQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGZvcm1hdChQdWJsaWNLZXlJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBpZiAoISAoJGtleS0+Z2V0Q3VydmUoKSBpbnN0YW5jZW9mIE5hbWVkQ3VydmVGcCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdOb3QgaW1wbGVtZW50ZWQgZm9yIHVubmFtZWQgY3VydmVzJyk7CiAgICAgICAgfQoKICAgICAgICAkc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoCiAgICAgICAgICAgIG5ldyBTZXF1ZW5jZSgKICAgICAgICAgICAgICAgIG5ldyBPYmplY3RJZGVudGlmaWVyKERlclB1YmxpY0tleVNlcmlhbGl6ZXI6Olg1MDlfRUNEU0FfT0lEKSwKICAgICAgICAgICAgICAgIEN1cnZlT2lkTWFwcGVyOjpnZXRDdXJ2ZU9pZCgka2V5LT5nZXRDdXJ2ZSgpKQogICAgICAgICAgICApLAogICAgICAgICAgICBuZXcgQml0U3RyaW5nKCR0aGlzLT5lbmNvZGVQb2ludCgka2V5LT5nZXRQb2ludCgpKSkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJHNlcXVlbmNlLT5nZXRCaW5hcnkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQb2ludEludGVyZmFjZSAkcG9pbnQKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNvZGVQb2ludChQb2ludEludGVyZmFjZSAkcG9pbnQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wb2ludFNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgkcG9pbnQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PublicKey/Der/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxEZXI7Cgp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcVXRpbFxDdXJ2ZU9pZE1hcHBlcjsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQ7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxEZXJQdWJsaWNLZXlTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQb2ludFxQb2ludFNlcmlhbGl6ZXJJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFBvaW50XFVuY29tcHJlc3NlZFBvaW50U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5OwoKY2xhc3MgUGFyc2VyCnsKCiAgICAvKioKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICogQHZhciBVbmNvbXByZXNzZWRQb2ludFNlcmlhbGl6ZXIKICAgICAqLwogICAgcHJpdmF0ZSAkcG9pbnRTZXJpYWxpemVyOwoKICAgIC8qKgogICAgICogUGFyc2VyIGNvbnN0cnVjdG9yLgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBQb2ludFNlcmlhbGl6ZXJJbnRlcmZhY2V8bnVsbCAkcG9pbnRTZXJpYWxpemVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyLCBQb2ludFNlcmlhbGl6ZXJJbnRlcmZhY2UgJHBvaW50U2VyaWFsaXplciA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKICAgICAgICAkdGhpcy0+cG9pbnRTZXJpYWxpemVyID0gJHBvaW50U2VyaWFsaXplciA/OiBuZXcgVW5jb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyKCRhZGFwdGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEByZXR1cm4gUHVibGljS2V5CiAgICAgKiBAdGhyb3dzIFxGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlKCRiaW5hcnlEYXRhKQogICAgewogICAgICAgICRhc25PYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwoKICAgICAgICBpZiAoISAoJGFzbk9iamVjdCBpbnN0YW5jZW9mIFNlcXVlbmNlKSB8fCAkYXNuT2JqZWN0LT5nZXROdW1iZXJvZkNoaWxkcmVuKCkgIT0gMikgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgZGF0YS4nKTsKICAgICAgICB9CgogICAgICAgICRjaGlsZHJlbiA9ICRhc25PYmplY3QtPmdldENoaWxkcmVuKCk7CgogICAgICAgICRvaWQgPSAkY2hpbGRyZW5bMF0tPmdldENoaWxkcmVuKClbMF07CiAgICAgICAgJGN1cnZlT2lkID0gJGNoaWxkcmVuWzBdLT5nZXRDaGlsZHJlbigpWzFdOwogICAgICAgICRlbmNvZGVkS2V5ID0gJGNoaWxkcmVuWzFdOwoKICAgICAgICBpZiAoJG9pZC0+Z2V0Q29udGVudCgpICE9PSBEZXJQdWJsaWNLZXlTZXJpYWxpemVyOjpYNTA5X0VDRFNBX09JRCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgZGF0YTogbm9uIFg1MDkgZGF0YS4nKTsKICAgICAgICB9CgogICAgICAgICRnZW5lcmF0b3IgPSBDdXJ2ZU9pZE1hcHBlcjo6Z2V0R2VuZXJhdG9yRnJvbU9pZCgkY3VydmVPaWQpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcnNlS2V5KCRnZW5lcmF0b3IsICRlbmNvZGVkS2V5LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEdlbmVyYXRvclBvaW50ICRnZW5lcmF0b3IKICAgICAqIEBwYXJhbSAkZGF0YQogICAgICogQHJldHVybiBQdWJsaWNLZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhcnNlS2V5KEdlbmVyYXRvclBvaW50ICRnZW5lcmF0b3IsICRkYXRhKQogICAgewogICAgICAgICRwb2ludCA9ICR0aGlzLT5wb2ludFNlcmlhbGl6ZXItPnVuc2VyaWFsaXplKCRnZW5lcmF0b3ItPmdldEN1cnZlKCksICRkYXRhKTsKCiAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNLZXkoJHRoaXMtPmFkYXB0ZXIsICRnZW5lcmF0b3IsICRwb2ludCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PublicKey/DerPublicKeySerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleTsKCnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFB1YmxpY0tleUludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcTWF0aEFkYXB0ZXJGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcRGVyXEZvcm1hdHRlcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHVibGljS2V5XERlclxQYXJzZXI7CgovKioKICoKICogQGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzU0ODAjcGFnZS0zCiAqLwpjbGFzcyBEZXJQdWJsaWNLZXlTZXJpYWxpemVyIGltcGxlbWVudHMgUHVibGljS2V5U2VyaWFsaXplckludGVyZmFjZQp7CgogICAgY29uc3QgWDUwOV9FQ0RTQV9PSUQgPSAnMS4yLjg0MC4xMDA0NS4yLjEnOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgRm9ybWF0dGVyCiAgICAgKi8KICAgIHByaXZhdGUgJGZvcm1hdHRlcjsKCiAgICAvKioKICAgICAqCiAgICAgKiBAdmFyIFBhcnNlcgogICAgICovCiAgICBwcml2YXRlICRwYXJzZXI7CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5hZGFwdGVyID0gJGFkYXB0ZXIgPzogTWF0aEFkYXB0ZXJGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CgogICAgICAgICR0aGlzLT5mb3JtYXR0ZXIgPSBuZXcgRm9ybWF0dGVyKCR0aGlzLT5hZGFwdGVyKTsKICAgICAgICAkdGhpcy0+cGFyc2VyID0gbmV3IFBhcnNlcigkdGhpcy0+YWRhcHRlcik7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtICBQdWJsaWNLZXlJbnRlcmZhY2UgJGtleQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZShQdWJsaWNLZXlJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdHRlci0+Zm9ybWF0KCRrZXkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVbmNvbXByZXNzZWRLZXkoUHVibGljS2V5SW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mb3JtYXR0ZXItPmVuY29kZVBvaW50KCRrZXktPmdldFBvaW50KCkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcUHVibGljS2V5U2VyaWFsaXplckludGVyZmFjZTo6cGFyc2UoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoJHN0cmluZykKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBhcnNlci0+cGFyc2UoJHN0cmluZyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PublicKey/PemPublicKeySerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleTsKCnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFB1YmxpY0tleUludGVyZmFjZTsKCi8qKgogKgogKiBAbGluayBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTQ4MCNwYWdlLTMKICovCmNsYXNzIFBlbVB1YmxpY0tleVNlcmlhbGl6ZXIgaW1wbGVtZW50cyBQdWJsaWNLZXlTZXJpYWxpemVySW50ZXJmYWNlCnsKCiAgICAvKioKICAgICAqIEB2YXIgRGVyUHVibGljS2V5U2VyaWFsaXplcgogICAgICovCiAgICBwcml2YXRlICRkZXJTZXJpYWxpemVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIERlclB1YmxpY0tleVNlcmlhbGl6ZXIgJHNlcmlhbGl6ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KERlclB1YmxpY0tleVNlcmlhbGl6ZXIgJHNlcmlhbGl6ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmRlclNlcmlhbGl6ZXIgPSAkc2VyaWFsaXplcjsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAcGFyYW0gIFB1YmxpY0tleUludGVyZmFjZSAka2V5CiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxQdWJsaWNLZXlTZXJpYWxpemVySW50ZXJmYWNlOjpzZXJpYWxpemUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKFB1YmxpY0tleUludGVyZmFjZSAka2V5KQogICAgewogICAgICAgICRwdWJsaWNLZXlJbmZvID0gJHRoaXMtPmRlclNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgka2V5KTsKCiAgICAgICAgJGNvbnRlbnQgID0gJy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRjb250ZW50IC49IHRyaW0oY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkcHVibGljS2V5SW5mbyksIDY0LCBQSFBfRU9MKSkuUEhQX0VPTDsKICAgICAgICAkY29udGVudCAuPSAnLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tJzsKCiAgICAgICAgcmV0dXJuICRjb250ZW50OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcUHVibGljS2V5U2VyaWFsaXplckludGVyZmFjZTo6cGFyc2UoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoJGZvcm1hdHRlZEtleSkKICAgIHsKICAgICAgICAkZm9ybWF0dGVkS2V5ID0gc3RyX3JlcGxhY2UoJy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tJywgJycsICRmb3JtYXR0ZWRLZXkpOwogICAgICAgICRmb3JtYXR0ZWRLZXkgPSBzdHJfcmVwbGFjZSgnLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tJywgJycsICRmb3JtYXR0ZWRLZXkpOwogICAgICAgIAogICAgICAgICRkYXRhID0gYmFzZTY0X2RlY29kZSgkZm9ybWF0dGVkS2V5KTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5kZXJTZXJpYWxpemVyLT5wYXJzZSgkZGF0YSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/PublicKey/PublicKeySerializerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleTsKCnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFB1YmxpY0tleUludGVyZmFjZTsKCmludGVyZmFjZSBQdWJsaWNLZXlTZXJpYWxpemVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSAgUHVibGljS2V5SW50ZXJmYWNlICRrZXkKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoUHVibGljS2V5SW50ZXJmYWNlICRrZXkpOwoKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICRmb3JtYXR0ZWRLZXkKICAgICAqIEByZXR1cm4gUHVibGljS2V5SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgkZm9ybWF0dGVkS2V5KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Signature/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Signature/Der/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Signature/Der/Formatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFNpZ25hdHVyZVxEZXI7Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXFNpZ25hdHVyZVxTaWduYXR1cmVJbnRlcmZhY2U7CgpjbGFzcyBGb3JtYXR0ZXIKewogICAgLyoqCiAgICAgKiBAcGFyYW0gU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqIEByZXR1cm4gU2VxdWVuY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQXNuKFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlKQogICAgewogICAgICAgIHJldHVybiBuZXcgU2VxdWVuY2UoCiAgICAgICAgICAgIG5ldyBJbnRlZ2VyKGdtcF9zdHJ2YWwoJHNpZ25hdHVyZS0+Z2V0UigpLCAxMCkpLAogICAgICAgICAgICBuZXcgSW50ZWdlcihnbXBfc3RydmFsKCRzaWduYXR1cmUtPmdldFMoKSwgMTApKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0Fzbigkc2lnbmF0dXJlKS0+Z2V0QmluYXJ5KCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Signature/Der/Parser.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFNpZ25hdHVyZVxEZXI7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25hdHVyZTsKCmNsYXNzIFBhcnNlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeQogICAgICogQHJldHVybiBTaWduYXR1cmUKICAgICAqIEB0aHJvd3MgXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2UoJGJpbmFyeSkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnkpOwogICAgICAgIGlmICgkb2JqZWN0LT5nZXRUeXBlKCkgIT09IElkZW50aWZpZXI6OlNFUVVFTkNFKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBkYXRhJyk7CiAgICAgICAgfQoKICAgICAgICAkY29udGVudCA9ICRvYmplY3QtPmdldENvbnRlbnQoKTsKICAgICAgICBpZiAoY291bnQoJGNvbnRlbnQpICE9PSAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignRmFpbGVkIHRvIHBhcnNlIHNpZ25hdHVyZScpOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgXEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXIgJHIgICovCiAgICAgICAgLyoqIEB2YXIgXEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXIgJHMgICovCiAgICAgICAgbGlzdCAoJHIsICRzKSA9ICRjb250ZW50OwogICAgICAgIGlmICgkci0+Z2V0VHlwZSgpICE9PSBJZGVudGlmaWVyOjpJTlRFR0VSIHx8ICRzLT5nZXRUeXBlKCkgIT09IElkZW50aWZpZXI6OklOVEVHRVIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdGYWlsZWQgdG8gcGFyc2Ugc2lnbmF0dXJlJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFNpZ25hdHVyZSgKICAgICAgICAgICAgZ21wX2luaXQoJHItPmdldENvbnRlbnQoKSwgMTApLAogICAgICAgICAgICBnbXBfaW5pdCgkcy0+Z2V0Q29udGVudCgpLCAxMCkKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Signature/DerSignatureSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFNpZ25hdHVyZTsKCnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25hdHVyZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xTaWduYXR1cmVcU2lnbmF0dXJlSW50ZXJmYWNlOwoKY2xhc3MgRGVyU2lnbmF0dXJlU2VyaWFsaXplcgp7CiAgICAvKioKICAgICAqIEB2YXIgRGVyXFBhcnNlcgogICAgICovCiAgICBwcml2YXRlICRwYXJzZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIERlclxGb3JtYXR0ZXIKICAgICAqLwogICAgcHJpdmF0ZSAkZm9ybWF0dGVyOwoKICAgIC8qKgogICAgICoKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+cGFyc2VyID0gbmV3IERlclxQYXJzZXIoKTsKICAgICAgICAkdGhpcy0+Zm9ybWF0dGVyID0gbmV3IERlclxGb3JtYXR0ZXIoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZQogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZShTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZvcm1hdHRlci0+c2VyaWFsaXplKCRzaWduYXR1cmUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5CiAgICAgKiBAcmV0dXJuIFNpZ25hdHVyZQogICAgICogQHRocm93cyBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZSgkYmluYXJ5KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VyLT5wYXJzZSgkYmluYXJ5KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Serializer/Util/CurveOidMapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFV0aWw7Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xOYW1lZEN1cnZlRnA7CnVzZSBNZGFudGVyXEVjY1xDdXJ2ZXNcQ3VydmVGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXE5pc3RDdXJ2ZTsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xTZWNnQ3VydmU7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnBJbnRlcmZhY2U7CgpjbGFzcyBDdXJ2ZU9pZE1hcHBlcgp7CgogICAgY29uc3QgTklTVF9QMTkyX09JRCA9ICcxLjIuODQwLjEwMDQ1LjMuMS4xJzsKCiAgICBjb25zdCBOSVNUX1AyMjRfT0lEID0gJzEuMy4xMzIuMC4zMyc7CgogICAgY29uc3QgTklTVF9QMjU2X09JRCA9ICcxLjIuODQwLjEwMDQ1LjMuMS43JzsKCiAgICBjb25zdCBOSVNUX1AzODRfT0lEID0gJzEuMy4xMzIuMC4zNCc7CgogICAgY29uc3QgTklTVF9QNTIxX09JRCA9ICcxLjMuMTMyLjAuMzUnOwoKICAgIGNvbnN0IFNFQ1BfMTEyUjFfT0lEID0gJzEuMy4xMzIuMC42JzsKCiAgICBjb25zdCBTRUNQXzE5MksxX09JRCA9ICcxLjMuMTMyLjAuMzEnOwoKICAgIGNvbnN0IFNFQ1BfMjU2SzFfT0lEID0gJzEuMy4xMzIuMC4xMCc7CgogICAgY29uc3QgU0VDUF8yNTZSMV9PSUQgPSAnMS4yLjg0MC4xMDA0NS4zLjEuNyc7CgogICAgY29uc3QgU0VDUF8zODRSMV9PSUQgPSAnMS4zLjEzMi4wLjM0JzsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJG9pZE1hcCA9IGFycmF5KAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QMTkyID0+IHNlbGY6Ok5JU1RfUDE5Ml9PSUQsCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1AyMjQgPT4gc2VsZjo6TklTVF9QMjI0X09JRCwKICAgICAgICBOaXN0Q3VydmU6Ok5BTUVfUDI1NiA9PiBzZWxmOjpOSVNUX1AyNTZfT0lELAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QMzg0ID0+IHNlbGY6Ok5JU1RfUDM4NF9PSUQsCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1A1MjEgPT4gc2VsZjo6TklTVF9QNTIxX09JRCwKICAgICAgICBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8xMTJSMSA9PiBzZWxmOjpTRUNQXzExMlIxX09JRCwKICAgICAgICBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8xOTJLMSA9PiBzZWxmOjpTRUNQXzE5MksxX09JRCwKICAgICAgICBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8yNTZLMSA9PiBzZWxmOjpTRUNQXzI1NksxX09JRCwKICAgICAgICBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8yNTZSMSA9PiBzZWxmOjpTRUNQXzI1NlIxX09JRCwKICAgICAgICBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8zODRSMSA9PiBzZWxmOjpTRUNQXzM4NFIxX09JRCwKICAgICk7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRzaXplTWFwID0gYXJyYXkoCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1AxOTIgPT4gMjQsCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1AyMjQgPT4gMjgsCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1AyNTYgPT4gMzIsCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1AzODQgPT4gNDgsCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1A1MjEgPT4gNjYsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTEyUjEgPT4gMTQsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTkySzEgPT4gMjQsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2SzEgPT4gMzIsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2UjEgPT4gMzIsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMzg0UjEgPT4gNDgsCiAgICApOwoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE5hbWVzKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5cyhzZWxmOjokb2lkTWFwKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBDdXJ2ZUZwSW50ZXJmYWNlICRjdXJ2ZQogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEJ5dGVTaXplKEN1cnZlRnBJbnRlcmZhY2UgJGN1cnZlKQogICAgewogICAgICAgIGlmICgkY3VydmUgaW5zdGFuY2VvZiBOYW1lZEN1cnZlRnAgJiYgYXJyYXlfa2V5X2V4aXN0cygkY3VydmUtPmdldE5hbWUoKSwgc2VsZjo6JHNpemVNYXApKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokc2l6ZU1hcFskY3VydmUtPmdldE5hbWUoKV07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGN1cnZlIHR5cGUuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTmFtZWRDdXJ2ZUZwICRjdXJ2ZQogICAgICogQHJldHVybiBPYmplY3RJZGVudGlmaWVyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q3VydmVPaWQoTmFtZWRDdXJ2ZUZwICRjdXJ2ZSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkY3VydmUtPmdldE5hbWUoKSwgc2VsZjo6JG9pZE1hcCkpIHsKICAgICAgICAgICAgJG9pZFN0cmluZyA9IHNlbGY6OiRvaWRNYXBbJGN1cnZlLT5nZXROYW1lKCldOwoKICAgICAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RJZGVudGlmaWVyKCRvaWRTdHJpbmcpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBjdXJ2ZSB0eXBlLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE9iamVjdElkZW50aWZpZXIgJG9pZAogICAgICogQHJldHVybiBcTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEN1cnZlRnJvbU9pZChPYmplY3RJZGVudGlmaWVyICRvaWQpCiAgICB7CiAgICAgICAgJG9pZFN0cmluZyA9ICRvaWQtPmdldENvbnRlbnQoKTsKICAgICAgICAkaW52ZXJ0ZWRNYXAgPSBhcnJheV9mbGlwKHNlbGY6OiRvaWRNYXApOwoKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkb2lkU3RyaW5nLCAkaW52ZXJ0ZWRNYXApKSB7CiAgICAgICAgICAgIHJldHVybiBDdXJ2ZUZhY3Rvcnk6OmdldEN1cnZlQnlOYW1lKCRpbnZlcnRlZE1hcFskb2lkU3RyaW5nXSk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgZGF0YTogdW5zdXBwb3J0ZWQgY3VydmUuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gT2JqZWN0SWRlbnRpZmllciAkb2lkCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yRnJvbU9pZChPYmplY3RJZGVudGlmaWVyICRvaWQpCiAgICB7CiAgICAgICAgJG9pZFN0cmluZyA9ICRvaWQtPmdldENvbnRlbnQoKTsKICAgICAgICAkaW52ZXJ0ZWRNYXAgPSBhcnJheV9mbGlwKHNlbGY6OiRvaWRNYXApOwoKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkb2lkU3RyaW5nLCAkaW52ZXJ0ZWRNYXApKSB7CiAgICAgICAgICAgIHJldHVybiBDdXJ2ZUZhY3Rvcnk6OmdldEdlbmVyYXRvckJ5TmFtZSgkaW52ZXJ0ZWRNYXBbJG9pZFN0cmluZ10pOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIGRhdGE6IHVuc3VwcG9ydGVkIGdlbmVyYXRvci4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Util/BinaryString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xVdGlsOwoKY2xhc3MgQmluYXJ5U3RyaW5nCnsKICAgIC8qKgogICAgICogTXVsdGktYnl0ZS1zYWZlIHN0cmluZyBsZW5ndGggY2FsY3VsYXRpb24KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdHIKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGVuZ3RoKCRzdHIpCiAgICB7CiAgICAgICAgLy8gUHJlbWF0dXJlIG9wdGltaXphdGlvbjogY2FjaGUgdGhlIGZ1bmN0aW9uX2V4aXN0cygpIHJlc3VsdAogICAgICAgIHN0YXRpYyAkZXhpc3RzID0gbnVsbDsKICAgICAgICBpZiAoJGV4aXN0cyA9PT0gbnVsbCkgewogICAgICAgICAgICAkZXhpc3RzID0gZnVuY3Rpb25fZXhpc3RzKCdtYl9zdHJsZW4nKTsKICAgICAgICB9CgogICAgICAgIC8vIElmIGl0IGV4aXN0cywgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UncmUgdXNpbmcgOGJpdCBtb2RlCiAgICAgICAgaWYgKCRleGlzdHMpIHsKICAgICAgICAgICAgcmV0dXJuIG1iX3N0cmxlbigkc3RyLCAnOGJpdCcpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gc3RybGVuKCRzdHIpOwogICAgfQoKICAgIC8qKgogICAgICogTXVsdGktYnl0ZS1zYWZlIHN1YnN0cmluZyBjYWxjdWxhdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICogQHBhcmFtIGludCAkc3RhcnQKICAgICAqIEBwYXJhbSBpbnQgJGxlbmd0aCAob3B0aW9uYWwpCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN1YnN0cmluZygkc3RyLCAkc3RhcnQgPSAwLCAkbGVuZ3RoID0gbnVsbCkKICAgIHsKICAgICAgICAvLyBQcmVtYXR1cmUgb3B0aW1pemF0aW9uOiBjYWNoZSB0aGUgZnVuY3Rpb25fZXhpc3RzKCkgcmVzdWx0CiAgICAgICAgc3RhdGljICRleGlzdHMgPSBudWxsOwogICAgICAgIGlmICgkZXhpc3RzID09PSBudWxsKSB7CiAgICAgICAgICAgICRleGlzdHMgPSBmdW5jdGlvbl9leGlzdHMoJ21iX3N1YnN0cicpOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgaXQgZXhpc3RzLCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSdyZSB1c2luZyA4Yml0IG1vZGUKICAgICAgICBpZiAoJGV4aXN0cykgewogICAgICAgICAgICByZXR1cm4gbWJfc3Vic3RyKCRzdHIsICRzdGFydCwgJGxlbmd0aCwgJzhiaXQnKTsKICAgICAgICB9IGVsc2VpZiAoJGxlbmd0aCAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRzdHIsICRzdGFydCwgJGxlbmd0aCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBzdWJzdHIoJHN0ciwgJHN0YXJ0KTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBFcXVpdmFsZW50IHRvIGhhc2hfZXF1YWxzKCkgaW4gUEhQIDUuNgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtub3duU3RyaW5nCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VyU3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29uc3RhbnRUaW1lQ29tcGFyZSgka25vd25TdHJpbmcsICR1c2VyU3RyaW5nKQogICAgewogICAgICAgIHJldHVybiBoYXNoX2VxdWFscygka25vd25TdHJpbmcsICR1c2VyU3RyaW5nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Util/NumberSize.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xVdGlsOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKCmNsYXNzIE51bWJlclNpemUKewoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBcR01QICAgICAgICAgICAgICR4CiAgICAgKiBAcmV0dXJuIGZsb2F0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q2VpbGVkQnl0ZVNpemUoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciwgXEdNUCAkeCkKICAgIHsKICAgICAgICByZXR1cm4gY2VpbChzZWxmOjpibk51bUJpdHMoJGFkYXB0ZXIsICR4KSAvIDgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBcR01QICAgICAgICAgICAgICR4CiAgICAgKiBAcmV0dXJuIGZsb2F0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Rmxvb3JlZEJ5dGVTaXplKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsIFxHTVAgJHgpCiAgICB7CiAgICAgICAgcmV0dXJuIGZsb29yKHNlbGY6OmJuTnVtQml0cygkYWRhcHRlciwgJHgpIC8gOCkgKyAxOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbmludW0gcmVxdWlyZWQgYnl0ZXMgdG8gc3RvcmUgYSBnaXZlbiBudW1iZXIuIE5vbi1zaWduaWZpY2FudCB1cHBlciBiaXRzIGFyZSBub3QgY291bnRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSAgXEdNUCAgICAgICAgICAgICAkeAogICAgICogQHJldHVybiBpbnQKICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by9CTl9udW1fYnl0ZXMuaHRtbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJuTnVtQnl0ZXMoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciwgXEdNUCAkeCkKICAgIHsKICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbHV2aXQvb3BlbnNzbC9ibG9iL21hc3Rlci9vcGVuc3NsL2NyeXB0by9ibi9ibi5oI0w0MDIKICAgICAgICByZXR1cm4gKGludCkgZmxvb3IoKHNlbGY6OmJuTnVtQml0cygkYWRhcHRlciwgJHgpICsgNykgLyA4KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIHVzZWQgdG8gc3RvcmUgdGhpcyBudW1iZXIuIE5vbi1zaW5naWNhbnQgdXBwZXIgYml0cyBhcmUgbm90IGNvdW50ZWQuCiAgICAgKgogICAgICogQHBhcmFtICBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyCiAgICAgKiBAcGFyYW0gIFxHTVAgICAgICAgICAgICAgJHgKICAgICAqIEByZXR1cm4gaW50CiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vQk5fbnVtX2J5dGVzLmh0bWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBibk51bUJpdHMoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciwgXEdNUCAkeCkKICAgIHsKICAgICAgICAkemVybyA9IGdtcF9pbml0KDAsIDEwKTsKICAgICAgICBpZiAoJGFkYXB0ZXItPmVxdWFscygkeCwgJHplcm8pKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgJGxvZzIgPSAwOwogICAgICAgIHdoaWxlIChmYWxzZSA9PT0gJGFkYXB0ZXItPmVxdWFscygkeCwgJHplcm8pKSB7CiAgICAgICAgICAgICR4ID0gJGFkYXB0ZXItPnJpZ2h0U2hpZnQoJHgsIDEpOwogICAgICAgICAgICAkbG9nMisrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRsb2cyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/validate_examples.sh</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvYmluL2Jhc2gKZm9yIGkgaW4gZXhhbXBsZXMvKi5waHA7IGRvCiAgICBwaHAgJGkKICAgIGlmIFsgJD8gIT0gMCBdOyB0aGVuCiAgICAgICAgZWNobyAiRXJyb3IgcnVubmluZyBleGFtcGxlIGNvZGUiOwogICAgICAgIGV4aXQgLTEKICAgIGZpOwpkb25lCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/.travis.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZGlzdDogdHJ1c3R5Cmxhbmd1YWdlOiBwaHAKCiAjIERvd25sb2FkZWQgYnJvd3NlcnMgd2lsbCBiZSBjYWNoZWQgaW4gc2VsZW5pdW0tYXNzaXN0YW50IGJ5CiAjIHdlYi1wdXNoLXRlc3Rpbmctc2VydmljZS4gQ2FjaGluZyB3aWxsIHNwZWVkIHVwIGJ1aWxkIHRpbWUuCmNhY2hlOgogIGRpcmVjdG9yaWVzOgogICAgLSB+Ly5zZWxlbml1bS1hc3Npc3RhbnQKCnBocDoKICAtIDUuNgogIC0gaGh2bQogIC0gNy4wCiAgLSA3LjEKCmVudjoKICAtIFRSQVZJU19OT0RFX1ZFUlNJT049InN0YWJsZSIKCmJlZm9yZV9pbnN0YWxsOgogIC0gbnZtIGluc3RhbGwgbm9kZQoKaW5zdGFsbDoKICAtIG5wbSBpbnN0YWxsIHdlYi1wdXNoLXRlc3Rpbmctc2VydmljZSAtZwoKYmVmb3JlX3NjcmlwdDoKICAtIGNvbXBvc2VyIGluc3RhbGwgLS1wcmVmZXItc291cmNlIC1uCiAgLSAiZXhwb3J0IERJU1BMQVk9Ojk5LjAiCiAgLSAic2ggLWUgL2V0Yy9pbml0LmQveHZmYiBzdGFydCB8fCBlY2hvIFwiVW5hYmxlIHRvIHN0YXJ0IHZpcnR1YWwgZGlzcGxheS5cIiIKICAtIHNsZWVwIDMgIyBnaXZlIHh2ZmIgc29tZSB0aW1lIHRvIHN0YXJ0CgpzY3JpcHQ6CiAgLSB3ZWItcHVzaC10ZXN0aW5nLXNlcnZpY2Ugc3RhcnQgZXhhbXBsZSAtcCA5MDEyCiAgLSBwaHAgLi92ZW5kb3IvcGhwdW5pdC9waHB1bml0L3BocHVuaXQgLWMgcGhwdW5pdC50cmF2aXMueG1sCiAgLSB3ZWItcHVzaC10ZXN0aW5nLXNlcnZpY2Ugc3RvcCBleGFtcGxlCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogIm1pbmlzaGxpbmsvd2ViLXB1c2giLAogICJ0eXBlIjogImxpYnJhcnkiLAogICJkZXNjcmlwdGlvbiI6ICJXZWIgUHVzaCBsaWJyYXJ5IGZvciBQSFAiLAogICJrZXl3b3JkcyI6IFsicHVzaCIsICJub3RpZmljYXRpb25zIiwgIndlYiIsICJXZWJQdXNoIiwgIlB1c2ggQVBJIl0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgImxpY2Vuc2UiOiAiTUlUIiwKICAiYXV0aG9ycyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiTG91aXMgTGFncmFuZ2UiLAogICAgICAiZW1haWwiOiAibGFncmFuZ2UubG91aXNAZ21haWwuY29tIiwKICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rIgogICAgfQogIF0sCiAgInJlcXVpcmUiOiB7CiAgICAicGhwIjogIl41LjYgfHwgXjcuMCIsCiAgICAibWRhbnRlci9lY2MiOiAiXjAuNC4wIiwKICAgICJsaWItb3BlbnNzbCI6ICIqIiwKICAgICJzcG9ta3ktbGFicy9iYXNlNjR1cmwiOiAiXjEuMCIsCiAgICAic3BvbWt5LWxhYnMvcGhwLWFlcy1nY20iOiAiXjEuMiIsCiAgICAic3BvbWt5LWxhYnMvam9zZSI6ICJeNi4wIiwKICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNi4yIgogIH0sCiAgInJlcXVpcmUtZGV2IjogewogICAgInBocHVuaXQvcGhwdW5pdCI6ICI1LjcuKiIKICB9LAogICJhdXRvbG9hZCI6IHsKICAgICJwc3ItNCIgOiB7CiAgICAgICJNaW5pc2hsaW5rXFxXZWJQdXNoXFwiIDogInNyYyIKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/CONTRIBUTING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDb250cmlidXRpbmcgdG8gV2ViUHVzaApXZWJQdXNoIGlzIGFuIG9wZW4gc291cmNlIGxpYnJhcnkuCkZlZWwgZnJlZSB0byBjb250cmlidXRlIGJ5IHN1Ym1pdHRpbmcgYSBwdWxsIHJlcXVlc3Qgb3IgY3JlYXRpbmcgKGFuZCBzb2x2aW5nKSBpc3N1ZXMhCgojIyBSdW5uaW5nIFRlc3RzCgpGaXJzdCwgeW91IHdpbGwgbmVlZCB0byBjcmVhdGUgeW91ciBvd24gY29uZmlndXJhdGlvbiBmaWxlIGJ5IGNvcHlpbmcKcGhwdW5pdC5kaXN0LnhtbCB0byBwaHB1bml0LnhtbCBhbmQgZmlsbGluZyBpbiB0aGUgZmllbGRzIHlvdSBuZWVkIGZvcgp0ZXN0aW5nIChpLmUuIFNUQU5EQVJEX0VORFBPSU5ULCBHQ01fQVBJX0tFWSBldGMuKS4KClRoZW4sIGRvd25sb2FkIFtwaHB1bml0XShodHRwczovL3BocHVuaXQuZGUvKSBhbmQgdGVzdCB3aXRoIG9uZSBvZiB0aGUKZm9sbG93aW5nIGNvbW1hbmRzOgoKKipGb3IgQWxsIFRlc3RzKioKICAgIGBwaHAgcGhwdW5pdC5waGFyYAoKKipGb3IgYSBTcGVjaWZpYyBUZXN0IEZpbGUqKgogICAgYHBocCBwaHB1bml0LnBoYXIgdGVzdHMvRW5jcnlwdGlvblRlc3QucGhwYAoKKipGb3IgYSBTaW5nbGUgVGVzdCoqCiAgICBgcGhwIHBocHVuaXQucGhhciAuIC0tZmlsdGVyICIvOjp0ZXN0UGFkUGF5bG9hZCggLiopPyQvImAgKHJlZ2V4KQoKQnV0IGxvY2FsbHksIHRoZXNlIHRlc3RzIGFyZSBoYW5keS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/ISSUE_TEMPLATE.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KipOT1RFKio6IFBsZWFzZSB0ZXN0IGluIGEgbGVhc3QgdHdvIGJyb3dzZXJzIChpLmUuIENocm9tZSBhbmQgRmlyZWZveCkuIFRoaXMKaGVscHMgd2l0aCBkaWFnbm9zaW5nIHByb2JsZW1zIHF1aWNrZXIuCgo+IFBsZWFzZSBjb25maXJtIHRoZSBmb2xsb3dpbmc6CgotIFsgXSBJIGhhdmUgcmVhZCB0aGUgW1JFQURNRV0oaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwKSBlbnRpcmVseQotIFsgXSBJIGhhdmUgdmVyaWZpZWQgaW4gdGhlIFtpc3N1ZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC9pc3N1ZXMpIHRoYXQgbXkgcHJvYmxlbSBoYXNuJ3QgYWxyZWFkeSBiZWVuIHJlc29sdmVkCgojIFNldHVwCgo+IFBsZWFzZSBwcm92aWRlIHRoZSBmb2xsb3dpbmcgZGV0YWlscywgdGhlIG1vcmUgaW5mbyB5b3UgY2FuIHByb3ZpZGUgdGhlCj4gYmV0dGVyLgoKKiAqT3BlcmF0aW5nIFN5c3RlbSo6IDxMaW51eCB8IFdpbmRvd3MgfCBPUyBYPgoqICpQSFAgVmVyc2lvbio6IDw1LjYgfCA3LjAgfCAuLi4+CiogKndlYi1wdXNoLXBocCBWZXJzaW9uKjogPDEuMC4wPgoKPiBQbGVhc2UgY2hlY2sgdGhhdCB5b3UgaGF2ZSBpbnN0YWxsZWQgYW5kIGVuYWJsZWQgdGhlc2UgUEhQIGV4dGVuc2lvbnMgOgoKLSBbIF0gZ21wCi0gWyBdIG1ic3RyaW5nCi0gWyBdIGN1cmwKLSBbIF0gb3BlbnNzbAoKPiBQbGVhc2Ugc2VsZWN0IGFueSBicm93c2VycyB0aGF0IHlvdSBhcmUgZXhwZXJpZW5jaW5nIHByb2JsZW1zIHdpdGg6CgotIFsgXSBDaHJvbWUKLSBbIF0gRmlyZWZveAotIFsgXSBGaXJlZm94IGZvciBNb2JpbGUKLSBbIF0gT3BlcmEgZm9yIEFuZHJvaWQKLSBbIF0gU2Ftc3VuZyBJbnRlcm5ldCBCcm93c2VyCi0gWyBdIE90aGVyCgo+IFBsZWFzZSBzcGVjaWZ5IHRoZSB2ZXJzaW9ucyAoaS5lLiBDaHJvbWUgQmV0YSwgRmlyZWZveCBCZXRhIGV0YykuCgojIFByb2JsZW0KCj4gUGxlYXNlIGV4cGxhaW4gd2hhdCBiZWhhdmlvdXIgeW91IGFyZSBzZWVpbmcuCgojIEV4cGVjdGVkCgo+IFBsZWFzZSBleHBsYWluIHdoYXQgeW91IGV4cGVjdGVkIHRvIGhhcHBlbgoKIyBGZWF0dXJlcyBVc2VkCgotIFsgXSBWQVBJRCBTdXBwb3J0Ci0gWyBdIEdDTSBBUEkgS2V5Ci0gWyBdIFNlbmRpbmcgd2l0aCBQYXlsb2FkCgojIEV4YW1wbGUgLyBSZXByb2R1Y2UgQ2FzZQoKPiBQbGVhc2UgcHJvdmlkZSBhIGNvZGUgc2FtcGxlIHRoYXQgcmVwcm9kdWNlcyB0aGUgaXNzdWUuIElmIHRoZXJlIGlzIGEKPiByZXBvc2l0b3J5IHRoYXQgcmVwcm9kdWNlcyB0aGUgaXNzdWUgcGxlYXNlIHB1dCB0aGUgbGluayBoZXJlLgoKIyBPdGhlcgoKPiBQbGVhc2UgcHV0IGFueSByZW1haW5pbmcgbm90ZXMgaGVyZS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IExvdWlzIExhZ3JhbmdlCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/phpunit.dist.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHBocHVuaXQgYmFja3VwR2xvYmFscz0iZmFsc2UiCiAgICAgICAgIGJhY2t1cFN0YXRpY0F0dHJpYnV0ZXM9ImZhbHNlIgogICAgICAgICBib290c3RyYXA9InZlbmRvci9hdXRvbG9hZC5waHAiCiAgICAgICAgIGNvbG9ycz0idHJ1ZSIKICAgICAgICAgY29udmVydEVycm9yc1RvRXhjZXB0aW9ucz0idHJ1ZSIKICAgICAgICAgY29udmVydE5vdGljZXNUb0V4Y2VwdGlvbnM9InRydWUiCiAgICAgICAgIGNvbnZlcnRXYXJuaW5nc1RvRXhjZXB0aW9ucz0idHJ1ZSIKICAgICAgICAgcHJvY2Vzc0lzb2xhdGlvbj0iZmFsc2UiCiAgICAgICAgIHN0b3BPbkZhaWx1cmU9ImZhbHNlIgogICAgICAgICBzeW50YXhDaGVjaz0iZmFsc2UiPgogICAgPHRlc3RzdWl0ZXM+CiAgICAgICAgPHRlc3RzdWl0ZSBuYW1lPSJXZWJQdXNoIFRlc3QgU3VpdGUiPgogICAgICAgICAgICA8ZGlyZWN0b3J5IHN1ZmZpeD0iLnBocCI+Li90ZXN0cy88L2RpcmVjdG9yeT4KICAgICAgICA8L3Rlc3RzdWl0ZT4KICAgIDwvdGVzdHN1aXRlcz4KICAgIDxwaHA+CiAgICAgICAgPGVudiBuYW1lPSJTVEFOREFSRF9FTkRQT0lOVCIgdmFsdWU9IiIgLz4KICAgICAgICA8ZW52IG5hbWU9IlVTRVJfUFVCTElDX0tFWSIgdmFsdWU9IiIgLz4KICAgICAgICA8ZW52IG5hbWU9IlVTRVJfQVVUSF9UT0tFTiIgdmFsdWU9IiIgLz4KCiAgICAgICAgPGVudiBuYW1lPSJHQ01fRU5EUE9JTlQiIHZhbHVlPSIiIC8+CiAgICAgICAgPGVudiBuYW1lPSJHQ01fVVNFUl9QVUJMSUNfS0VZIiB2YWx1ZT0iIiAvPgogICAgICAgIDxlbnYgbmFtZT0iR0NNX1VTRVJfQVVUSF9UT0tFTiIgdmFsdWU9IiIgLz4KICAgICAgICA8ZW52IG5hbWU9IkdDTV9BUElfS0VZIiB2YWx1ZT0iIiAvPgoKICAgICAgICA8ZW52IG5hbWU9IlZBUElEX1BVQkxJQ19LRVkiIHZhbHVlPSIiIC8+CiAgICAgICAgPGVudiBuYW1lPSJWQVBJRF9QUklWQVRFX0tFWSIgdmFsdWU9IiIgLz4KICAgIDwvcGhwPgo8L3BocHVuaXQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/phpunit.travis.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHBocHVuaXQgYmFja3VwR2xvYmFscz0iZmFsc2UiCiAgICAgICAgIGJhY2t1cFN0YXRpY0F0dHJpYnV0ZXM9ImZhbHNlIgogICAgICAgICBib290c3RyYXA9InZlbmRvci9hdXRvbG9hZC5waHAiCiAgICAgICAgIGNvbG9ycz0idHJ1ZSIKICAgICAgICAgY29udmVydEVycm9yc1RvRXhjZXB0aW9ucz0idHJ1ZSIKICAgICAgICAgY29udmVydE5vdGljZXNUb0V4Y2VwdGlvbnM9InRydWUiCiAgICAgICAgIGNvbnZlcnRXYXJuaW5nc1RvRXhjZXB0aW9ucz0idHJ1ZSIKICAgICAgICAgcHJvY2Vzc0lzb2xhdGlvbj0iZmFsc2UiCiAgICAgICAgIHN0b3BPbkZhaWx1cmU9ImZhbHNlIgogICAgICAgICBzeW50YXhDaGVjaz0iZmFsc2UiPgogICAgPHRlc3RzdWl0ZXM+CiAgICAgICAgPHRlc3RzdWl0ZSBuYW1lPSJXZWJQdXNoIFRlc3QgU3VpdGUiPgogICAgICAgICAgICA8ZGlyZWN0b3J5IHN1ZmZpeD0iLnBocCI+Li90ZXN0cy88L2RpcmVjdG9yeT4KICAgICAgICA8L3Rlc3RzdWl0ZT4KICAgIDwvdGVzdHN1aXRlcz4KPC9waHB1bml0Pgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBXZWJQdXNoCj4gV2ViIFB1c2ggbGlicmFyeSBmb3IgUEhQCgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC5zdmc/YnJhbmNoPW1hc3RlcildKGh0dHBzOi8vdHJhdmlzLWNpLm9yZy93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCkKWyFbU2Vuc2lvTGFic0luc2lnaHRdKGh0dHBzOi8vaW5zaWdodC5zZW5zaW9sYWJzLmNvbS9wcm9qZWN0cy9kNjBlOGVlYS1hZWExLTQ3MzktOGNlMC1hM2MzYzEyYzZjY2YvbWluaS5wbmcpXShodHRwczovL2luc2lnaHQuc2Vuc2lvbGFicy5jb20vcHJvamVjdHMvZDYwZThlZWEtYWVhMS00NzM5LThjZTAtYTNjM2MxMmM2Y2NmKQoKV2ViUHVzaCBjYW4gYmUgdXNlZCB0byBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gZW5kcG9pbnRzIHdoaWNoIHNlcnZlciBkZWxpdmVycyBXZWIgUHVzaCBub3RpZmljYXRpb25zIGFzIGRlc2NyaWJlZCBpbiAKdGhlIFtXZWIgUHVzaCBwcm90b2NvbF0oaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LXRob21zb24td2VicHVzaC1wcm90b2NvbC0wMCkuCkFzIGl0IGlzIHN0YW5kYXJkaXplZCwgeW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgd2hhdCBzZXJ2ZXIgdHlwZSBpdCByZWxpZXMgb24uCgojIyBSZXF1aXJlbWVudHMKKiBQSFAgNS42CiAgKiBnbXAKICAqIG1ic3RyaW5nCiAgKiBjdXJsCiAgKiBvcGVuc3NsCgpQSFAgNy4xIGlzIHJlY29tbWVuZGVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuCgojIyBJbnN0YWxsYXRpb24KVXNlIFtjb21wb3Nlcl0oaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvKSB0byBkb3dubG9hZCBhbmQgaW5zdGFsbCB0aGUgbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVuY2llcy4KCmBjb21wb3NlciByZXF1aXJlIG1pbmlzaGxpbmsvd2ViLXB1c2hgCgojIyBVc2FnZQpgYGBwaHAKPD9waHAKCnVzZSBNaW5pc2hsaW5rXFdlYlB1c2hcV2ViUHVzaDsKCi8vIGFycmF5IG9mIG5vdGlmaWNhdGlvbnMKJG5vdGlmaWNhdGlvbnMgPSBhcnJheSgKICAgIGFycmF5KAogICAgICAgICdlbmRwb2ludCcgPT4gJ2h0dHBzOi8vdXBkYXRlcy5wdXNoLnNlcnZpY2VzLm1vemlsbGEuY29tL3B1c2gvYWJjLi4uJywgLy8gRmlyZWZveCA0MysKICAgICAgICAncGF5bG9hZCcgPT4gJ2hlbGxvICEnLAogICAgICAgICd1c2VyUHVibGljS2V5JyA9PiAnQlBjTWJuV1FMNUdPWVgvNUxLWlhUNnNMbUhpTXNKU2lFdklGdmZjRHZYN0laOXFxdHE2OG9ucFRQRVlteXhTUU5pSDdVRC85OEFVY1ExMmtCb3h6LzBzPScsIC8vIGJhc2UgNjQgZW5jb2RlZCwgc2hvdWxkIGJlIDg4IGNoYXJzCiAgICAgICAgJ3VzZXJBdXRoVG9rZW4nID0+ICdDeFZYNlFzVlRvRUdFY2pmWVBxWFF3PT0nLCAvLyBiYXNlIDY0IGVuY29kZWQsIHNob3VsZCBiZSAyNCBjaGFycwogICAgKSwgYXJyYXkoCiAgICAgICAgJ2VuZHBvaW50JyA9PiAnaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZWFwaXMuY29tL2djbS9zZW5kL2FiY2RlZi4uLicsIC8vIENocm9tZQogICAgICAgICdwYXlsb2FkJyA9PiBudWxsLAogICAgICAgICd1c2VyUHVibGljS2V5JyA9PiBudWxsLAogICAgICAgICd1c2VyQXV0aFRva2VuJyA9PiBudWxsLAogICAgKSwgYXJyYXkoCiAgICAgICAgJ2VuZHBvaW50JyA9PiAnaHR0cHM6Ly9leGFtcGxlLmNvbS9vdGhlci9lbmRwb2ludC9vZi9hbm90aGVyL3ZlbmRvci9hYmNkZWYuLi4nLAogICAgICAgICdwYXlsb2FkJyA9PiAne21zZzoidGVzdCJ9JywKICAgICAgICAndXNlclB1YmxpY0tleScgPT4gJyhzdHJpbmdPZjg4Q2hhcnMpJywgCiAgICAgICAgJ3VzZXJBdXRoVG9rZW4nID0+ICcoc3RyaW5nT2YyNENoYXJzKScsCiAgICApLAopOwoKJHdlYlB1c2ggPSBuZXcgV2ViUHVzaCgpOwoKLy8gc2VuZCBtdWx0aXBsZSBub3RpZmljYXRpb25zIHdpdGggcGF5bG9hZApmb3JlYWNoICgkbm90aWZpY2F0aW9ucyBhcyAkbm90aWZpY2F0aW9uKSB7CiAgICAkd2ViUHVzaC0+c2VuZE5vdGlmaWNhdGlvbigKICAgICAgICAkbm90aWZpY2F0aW9uWydlbmRwb2ludCddLAogICAgICAgICRub3RpZmljYXRpb25bJ3BheWxvYWQnXSwgLy8gb3B0aW9uYWwgKGRlZmF1bHRzIG51bGwpCiAgICAgICAgJG5vdGlmaWNhdGlvblsndXNlclB1YmxpY0tleSddLCAvLyBvcHRpb25hbCAoZGVmYXVsdHMgbnVsbCkKICAgICAgICAkbm90aWZpY2F0aW9uWyd1c2VyQXV0aFRva2VuJ10gLy8gb3B0aW9uYWwgKGRlZmF1bHRzIG51bGwpCiAgICApOwp9CiR3ZWJQdXNoLT5mbHVzaCgpOwoKLy8gc2VuZCBvbmUgbm90aWZpY2F0aW9uIGFuZCBmbHVzaCBkaXJlY3RseQokd2ViUHVzaC0+c2VuZE5vdGlmaWNhdGlvbigKICAgICRub3RpZmljYXRpb25zWzBdWydlbmRwb2ludCddLAogICAgJG5vdGlmaWNhdGlvbnNbMF1bJ3BheWxvYWQnXSwgLy8gb3B0aW9uYWwgKGRlZmF1bHRzIG51bGwpCiAgICAkbm90aWZpY2F0aW9uc1swXVsndXNlclB1YmxpY0tleSddLCAvLyBvcHRpb25hbCAoZGVmYXVsdHMgbnVsbCkKICAgICRub3RpZmljYXRpb25zWzBdWyd1c2VyQXV0aFRva2VuJ10sIC8vIG9wdGlvbmFsIChkZWZhdWx0cyBudWxsKQogICAgdHJ1ZSAvLyBvcHRpb25hbCAoZGVmYXVsdHMgZmFsc2UpCik7CmBgYAoKIyMjIEZ1bGwgZXhhbXBsZXMgb2YgV2ViIFB1c2ggaW1wbGVtZW50YXRpb25zCiogQW4gZXhhbXBsZSB3aXRoIHdlYi1wdXNoLXBocDogW01pbmlzaGxpbmsvd2ViLXB1c2gtcGhwLWV4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rL3dlYi1wdXNoLXBocC1leGFtcGxlKQoqIE1hdHRoZXcgR2F1bnQncyBbV2ViIFB1c2ggQm9va10oaHR0cHM6Ly93ZWItcHVzaC1ib29rLmdhdW50ZmFjZS5jb20pIC0gYSBtdXN0IHJlYWQKKiBNb3ppbGxhJ3MgW1NlcnZpY2VXb3JrZXIgQ29va2Jvb2tzXShodHRwczovL3NlcnZpY2V3b3JrZS5ycy9wdXNoLXBheWxvYWRfaW5kZXhfZG9jLmh0bWwpIChkb24ndCBtaW5kIHRoZSBgc2VydmVyLmpzYCBmaWxlOiBpdCBzaG91bGQgYmUgcmVwbGFjZWQgYnkgeW91ciBQSFAgc2VydmVyIGNvZGUgd2l0aCB0aGlzIGxpYnJhcnkpCiogR29vZ2xlJ3MgW2ludHJvZHVjdGlvbiB0byBwdXNoIG5vdGlmaWNhdGlvbnNdKGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL3dlYi9mdW5kYW1lbnRhbHMvZ2V0dGluZy1zdGFydGVkL3B1c2gtbm90aWZpY2F0aW9ucy8pIChhcyBvZiAwMy0yMC0yMDE2LCBpdCBkb2Vzbid0IG1lbnRpb24gbm90aWZpY2F0aW9ucyB3aXRoIHBheWxvYWQpCiogeW91IG1heSB3YW50IHRvIHRha2UgYSBsb29rIGF0IG15IG93biBpbXBsZW1lbnRhdGlvbjogW3N3LmpzXShodHRwczovL2dpdGh1Yi5jb20vTWluaXNobGluay9waHlzYm9vay9ibG9iLzAyYTBkNWQ3Y2EwZDVkMmNjNmQzMDhhM2E5YjgxMjQ0YzYzYjNmMTQvd2ViL3NlcnZpY2Utd29ya2VyLmpzKSBhbmQgW2FwcC5qc10oaHR0cHM6Ly9naXRodWIuY29tL01pbmlzaGxpbmsvcGh5c2Jvb2svYmxvYi8wMmEwZDVkN2NhMGQ1ZDJjYzZkMzA4YTNhOWI4MTI0NGM2M2IzZjE0L2FwcC9SZXNvdXJjZXMvcHVibGljL2pzL2FwcC5qcykKCiMjIyBBdXRoZW50aWNhdGlvbiAoVkFQSUQpCkJyb3dzZXJzIG5lZWQgdG8gdmVyaWZ5IHlvdXIgaWRlbnRpdHkuIEEgc3RhbmRhcmQgY2FsbGVkIFZBUElEIGNhbiBhdXRoZW50aWNhdGUgeW91IGZvciBhbGwgYnJvd3NlcnMuIFlvdSdsbCBuZWVkIHRvIGNyZWF0ZSBhbmQgcHJvdmlkZSBhIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXkgZm9yIHlvdXIgc2VydmVyLiBUaGVzZSBrZXlzIG11c3QgYmUgc2FmZWx5IHN0b3JlZCBhbmQgc2hvdWxkIG5vdCBjaGFuZ2UuCgpZb3UgY2FuIHNwZWNpZnkgeW91ciBhdXRoZW50aWNhdGlvbiBkZXRhaWxzIHdoZW4gaW5zdGFudGlhdGluZyBXZWJQdXNoLiBUaGUga2V5cyBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IChyZWNvbW1lbmRlZCksIG9yIHlvdSBjYW4gbG9hZCBhIFBFTSBmaWxlIG9yIGl0cyBjb250ZW50OgpgYGBwaHAKPD9waHAKCnVzZSBNaW5pc2hsaW5rXFdlYlB1c2hcV2ViUHVzaDsKCiRlbmRwb2ludCA9ICdodHRwczovL2FuZHJvaWQuZ29vZ2xlYXBpcy5jb20vZ2NtL3NlbmQvYWJjZGVmLi4uJzsgLy8gQ2hyb21lCgokYXV0aCA9IGFycmF5KAogICAgJ0dDTScgPT4gJ01ZX0dDTV9BUElfS0VZJywgLy8gZGVwcmVjYXRlZCBhbmQgb3B0aW9uYWwsIGl0J3MgaGVyZSBvbmx5IGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMKICAgICdWQVBJRCcgPT4gYXJyYXkoCiAgICAgICAgJ3N1YmplY3QnID0+ICdtYWlsdG86bWVAd2Vic2l0ZS5jb20nLCAvLyBjYW4gYmUgYSBtYWlsdG86IG9yIHlvdXIgd2Vic2l0ZSBhZGRyZXNzCiAgICAgICAgJ3B1YmxpY0tleScgPT4gJ344OCBjaGFycycsIC8vIChyZWNvbW1lbmRlZCkgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkgUC0yNTYgZW5jb2RlZCBpbiBCYXNlNjQtVVJMCiAgICAgICAgJ3ByaXZhdGVLZXknID0+ICd+NDQgY2hhcnMnLCAvLyAocmVjb21tZW5kZWQpIGluIGZhY3QgdGhlIHNlY3JldCBtdWx0aXBsaWVyIG9mIHRoZSBwcml2YXRlIGtleSBlbmNvZGVkIGluIEJhc2U2NC1VUkwKICAgICAgICAncGVtRmlsZScgPT4gJ3BhdGgvdG8vcGVtJywgLy8gaWYgeW91IGhhdmUgYSBQRU0gZmlsZSBhbmQgY2FuIGxpbmsgdG8gaXQgb24geW91ciBmaWxlc3lzdGVtCiAgICAgICAgJ3BlbScgPT4gJ3BlbUZpbGVDb250ZW50JywgLy8gaWYgeW91IGhhdmUgYSBQRU0gZmlsZSBhbmQgd2FudCB0byBoYXJkY29kZSBpdHMgY29udGVudAogICAgKSwKKTsKCiR3ZWJQdXNoID0gbmV3IFdlYlB1c2goJGF1dGgpOwokd2ViUHVzaC0+c2VuZE5vdGlmaWNhdGlvbiguLi4pOwpgYGAKCkluIG9yZGVyIHRvIGdlbmVyYXRlIHRoZSB1bmNvbXByZXNzZWQgcHVibGljIGFuZCBzZWNyZXQga2V5LCBlbmNvZGVkIGluIEJhc2U2NCwgZW50ZXIgdGhlIGZvbGxvd2luZyBpbiB5b3VyIExpbnV4IGJhc2g6CmBgYAokIG9wZW5zc2wgZWNwYXJhbSAtZ2Vua2V5IC1uYW1lIHByaW1lMjU2djEgLW91dCBwcml2YXRlX2tleS5wZW0KJCBvcGVuc3NsIGVjIC1pbiBwcml2YXRlX2tleS5wZW0gLXB1Ym91dCAtb3V0Zm9ybSBERVJ8dGFpbCAtYyA2NXxiYXNlNjR8dHIgLWQgJz0nIHx0ciAnLysnICdfLScgPj4gcHVibGljX2tleS50eHQKJCBvcGVuc3NsIGVjIC1pbiBwcml2YXRlX2tleS5wZW0gLW91dGZvcm0gREVSfHRhaWwgLWMgKzh8aGVhZCAtYyAzMnxiYXNlNjR8dHIgLWQgJz0nIHx0ciAnLysnICdfLScgPj4gcHJpdmF0ZV9rZXkudHh0CmBgYAoKSWYgeW91IGNhbid0IGFjY2VzcyBhIExpbnV4IGJhc2gsIHlvdSBjYW4gcHJpbnQgdGhlIG91dHB1dCBvZiB0aGUgYGNyZWF0ZVZhcGlkS2V5c2AgZnVuY3Rpb246CmBgYHBocAp2YXJfZHVtcChWQVBJRDo6Y3JlYXRlVmFwaWRLZXlzKCkpOyAvLyBzdG9yZSB0aGUga2V5cyBhZnRlcndhcmRzCmBgYAoKT24gdGhlIGNsaWVudC1zaWRlLCBkb24ndCBmb3JnZXQgdG8gc3Vic2NyaWJlIHdpdGggdGhlIFZBUElEIHB1YmxpYyBrZXkgYXMgdGhlIGBhcHBsaWNhdGlvblNlcnZlcktleWA6IChgdXJsQmFzZTY0VG9VaW50OEFycmF5YCBzb3VyY2UgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rL3BoeXNib29rL2Jsb2IvMDJhMGQ1ZDdjYTBkNWQyY2M2ZDMwOGEzYTliODEyNDRjNjNiM2YxNC9hcHAvUmVzb3VyY2VzL3B1YmxpYy9qcy9hcHAuanMjTDE3NykpCmBgYGpzCnNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24ucHVzaE1hbmFnZXIuc3Vic2NyaWJlKHsKICB1c2VyVmlzaWJsZU9ubHk6IHRydWUsCiAgYXBwbGljYXRpb25TZXJ2ZXJLZXk6IHVybEJhc2U2NFRvVWludDhBcnJheSh2YXBpZFB1YmxpY0tleSkKfSkKYGBgCgojIyMgTm90aWZpY2F0aW9ucyBhbmQgZGVmYXVsdCBvcHRpb25zCkVhY2ggbm90aWZpY2F0aW9uIGNhbiBoYXZlIGEgc3BlY2lmaWMgVGltZSBUbyBMaXZlLCB1cmdlbmN5LCBhbmQgdG9waWMuCllvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IG9wdGlvbnMgd2l0aCBgc2V0RGVmYXVsdE9wdGlvbnMoKWAgb3IgaW4gdGhlIGNvbnN0cnVjdG9yOgoKYGBgcGhwCjw/cGhwCgp1c2UgTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2g7CgokZGVmYXVsdE9wdGlvbnMgPSBhcnJheSgKICAgICdUVEwnID0+IDMwMCwgLy8gZGVmYXVsdHMgdG8gNCB3ZWVrcwogICAgJ3VyZ2VuY3knID0+ICdub3JtYWwnLCAvLyBwcm90b2NvbCBkZWZhdWx0cyB0byAibm9ybWFsIgogICAgJ3RvcGljJyA9PiAnbmV3X2V2ZW50JywgLy8gbm90IGRlZmluZWQgYnkgZGVmYXVsdCwKICAgICdiYXRjaFNpemUnID0+IDIwMCwgLy8gZGVmYXVsdHMgdG8gMTAwMAopOwoKLy8gZm9yIGV2ZXJ5IG5vdGlmaWNhdGlvbnMKJHdlYlB1c2ggPSBuZXcgV2ViUHVzaChhcnJheSgpLCAkZGVmYXVsdE9wdGlvbnMpOwokd2ViUHVzaC0+c2V0RGVmYXVsdE9wdGlvbnMoJGRlZmF1bHRPcHRpb25zKTsKCi8vIG9yIGZvciBvbmUgbm90aWZpY2F0aW9uCiR3ZWJQdXNoLT5zZW5kTm90aWZpY2F0aW9uKCRlbmRwb2ludCwgJHBheWxvYWQsICR1c2VyUHVibGljS2V5LCAkdXNlckF1dGhUb2tlbiwgJGZsdXNoLCBhcnJheSgnVFRMJyA9PiA1MDAwKSk7CmBgYAoKIyMjIyBUVEwKVGltZSBUbyBMaXZlIChUVEwsIGluIHNlY29uZHMpIGlzIGhvdyBsb25nIGEgcHVzaCBtZXNzYWdlIGlzIHJldGFpbmVkIGJ5IHRoZSBwdXNoIHNlcnZpY2UgKGVnLiBNb3ppbGxhKSBpbiBjYXNlIHRoZSB1c2VyIGJyb3dzZXIgCmlzIG5vdCB5ZXQgYWNjZXNzaWJsZSAoZWcuIGlzIG5vdCBjb25uZWN0ZWQpLiBZb3UgbWF5IHdhbnQgdG8gdXNlIGEgdmVyeSBsb25nIHRpbWUgZm9yIGltcG9ydGFudCBub3RpZmljYXRpb25zLiBUaGUgZGVmYXVsdCBUVEwgaXMgNCB3ZWVrcy4gCkhvd2V2ZXIsIGlmIHlvdSBzZW5kIG11bHRpcGxlIG5vbmVzc2VudGlhbCBub3RpZmljYXRpb25zLCBzZXQgYSBUVEwgb2YgMDogdGhlIHB1c2ggbm90aWZpY2F0aW9uIHdpbGwgYmUgZGVsaXZlcmVkIG9ubHkgCmlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBjb25uZWN0ZWQuIEZvciBvdGhlciBjYXNlcywgeW91IHNob3VsZCB1c2UgYSBtaW5pbXVtIG9mIG9uZSBkYXkgaWYgeW91ciB1c2VycyBoYXZlIG11bHRpcGxlIHRpbWUgCnpvbmVzLCBhbmQgaWYgdGhleSBkb24ndCBzZXZlcmFsIGhvdXJzIHdpbGwgc3VmZmljZS4KCiMjIyMgdXJnZW5jeQpVcmdlbmN5IGNhbiBiZSBlaXRoZXIgInZlcnktbG93IiwgImxvdyIsICJub3JtYWwiLCBvciAiaGlnaCIuIElmIHRoZSBicm93c2VyIHZlbmRvciBoYXMgaW1wbGVtZW50ZWQgdGhpcyBmZWF0dXJlLCBpdCB3aWxsIHNhdmUgYmF0dGVyeSBsaWZlIG9uIG1vYmlsZSBkZXZpY2VzIChjZi4gW3Byb3RvY29sXShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi13ZWJwdXNoLXByb3RvY29sLTA4I3NlY3Rpb24tNS4zKSkuIAoKIyMjIyB0b3BpYwpTaW1pbGFyIHRvIHRoZSBvbGQgYGNvbGxhcHNlX2tleWAgb24gbGVnYWN5IEdDTSBzZXJ2ZXJzLCB0aGlzIHN0cmluZyB3aWxsIG1ha2UgdGhlIHZlbmRvciBzaG93IHRvIHRoZSB1c2VyIG9ubHkgdGhlIGxhc3Qgbm90aWZpY2F0aW9uIG9mIHRoaXMgdG9waWMgKGNmLiBbcHJvdG9jb2xdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXdlYnB1c2gtcHJvdG9jb2wtMDgjc2VjdGlvbi01LjQpKS4KCiMjIyMgYmF0Y2hTaXplCklmIHlvdSBzZW5kIHRlbnMgb2YgdGhvdXNhbmRzIG5vdGlmaWNhdGlvbnMgYXQgYSB0aW1lLCB5b3UgbWF5IGdldCBtZW1vcnkgb3ZlcmZsb3dzIGR1ZSB0byBob3cgZW5kcG9pbnRzIGFyZSBjYWxsZWQgaW4gR3V6emxlLgpJbiBvcmRlciB0byBmaXggdGhpcywgV2ViUHVzaCBzZW5kcyBub3RpZmljYXRpb25zIGluIGJhdGNoZXMuIFRoZSBkZWZhdWx0IHNpemUgaXMgMTAwMC4gRGVwZW5kaW5nIG9uIHlvdXIgc2VydmVyIGNvbmZpZ3VyYXRpb24gKG1lbW9yeSksIHlvdSBtYXkgd2FudAp0byBkZWNyZWFzZSB0aGlzIG51bWJlci4gRG8gdGhpcyB3aGlsZSBpbnN0YW5jaWF0aW5nIFdlYlB1c2ggb3IgY2FsbGluZyBgc2V0RGVmYXVsdE9wdGlvbnNgLiBPciwgaWYgeW91IHdhbnQgdG8gY3VzdG9taXplIHRoaXMgZm9yIGEgc3BlY2lmaWMgZmx1c2gsIGdpdmUKaXQgYXMgYSBwYXJhbWV0ZXIgOiBgJHdlYlB1c2gtPmZsdXNoKCRiYXRjaFNpemUpYC4KCiMjIyBTZXJ2ZXIgZXJyb3JzCllvdSBjYW4gc2VlIHdoYXQgdGhlIGJyb3dzZXIgdmVuZG9yJ3Mgc2VydmVyIHNlbmRzIGJhY2sgaW4gY2FzZSBpdCBlbmNvdW50ZXJlZCBhbiBlcnJvciAocHVzaCBzdWJzY3JpcHRpb24gZXhwaXJhdGlvbiwgd3JvbmcgcGFyYW1ldGVycy4uLikuCmBzZW5kTm90aWZpY2F0aW9uKClgICh3aXRoIGZsdXNoIGFzIHRydWUpIGFuZCBgZmx1c2goKWAgcmV0dXJucyB0cnVlIGlmIHRoZXJlIHdlcmUgbm8gZXJyb3JzLiBJZiB0aGVyZSBhcmUgZXJyb3JzIGl0IHJldHVybnMgYW4gYXJyYXkgbGlrZSB0aGUgZm9sbG93aW5nLgpUaGUgYGV4cGlyZWRgIGtleSBjYW4gYmUgdXNlZnVsIHRvIGNsZWFuIHlvdXIgZGF0YWJhc2Ugb2YgZXhwaXJlZCBlbmRwb2ludHMuCgpgYGBwaHAKJHJlcyA9IGFycmF5KAogICAgYXJyYXkoIC8vIGZpcnN0IG5vdGlmaWNhdGlvbiAoZmFpbGVkKQogICAgICAgICdzdWNjZXNzJyA9PiBmYWxzZSwKICAgICAgICAnZW5kcG9pbnQnID0+ICR0aGVFbmRwb2ludFRvRGVsZXRlSW5Zb3VyRGF0YWJhc2VJZkV4cGlyZWQKICAgICAgICAnbWVzc2FnZScgPT4gJHJlc3BvbnNlTWVzc2FnZSwKICAgICAgICAnc3RhdHVzQ29kZScgPT4gJHJlc3BvbnNlU3RhdHVzQ29kZSwKICAgICAgICAnaGVhZGVycycgPT4gJHJlc3BvbnNlSGVhZGVycywKICAgICAgICAnY29udGVudCcgPT4gJHJlc3BvbnNlQ29udGVudCwgLy8geW91IG1heSBoYXZlIG1vcmUgaW5mb3MgaGVyZQogICAgICAgICdleHBpcmVkJyA9PiAkaXNUaGVFbmRwb2ludFdyb25nT3JFeHBpcmVkLAogICAgKSwKICAgIGFycmF5KCAvLyBzZWNvbmQgbm90aWZpY2F0aW9uIChzdWNjZWVkZWQpCiAgICAgICAgJ3N1Y2Nlc3MnID0+IHRydWUsCiAgICApLAogICAgYXJyYXkoIC8vIHRoaXJkIG5vdGlmaWNhdGlvbgogICAgICAgIC4uLgogICAgKSwgLi4uCik7CmBgYAoKRmlyZWZveCBlcnJvcnMgYXJlIGxpc3RlZCBpbiB0aGUgW2F1dG9wdXNoIGRvY3VtZW50YXRpb25dKGh0dHBzOi8vYXV0b3B1c2gucmVhZHRoZWRvY3MuaW8vZW4vbGF0ZXN0L2h0dHAuaHRtbCNlcnJvcnMpLgoKIyMjIFBheWxvYWQgbGVuZ3RoLCBzZWN1cml0eSwgYW5kIHBlcmZvcm1hbmNlClBheWxvYWRzIGFyZSBlbmNyeXB0ZWQgYnkgdGhlIGxpYnJhcnkuIFRoZSBtYXhpbXVtIHBheWxvYWQgbGVuZ3RoIGlzIHRoZW9yZXRpY2FsbHkgNDA3OCBieXRlcyAob3IgQVNDSUkgY2hhcmFjdGVycykuCkZvciBbY29tcGF0aWJpbGl0eSByZWFzb25zXShtb3ppbGxhLXNlcnZpY2VzL2F1dG9wdXNoL2lzc3Vlcy83NDgpIHRob3VnaCwgeW91ciBwYXlsb2FkIHNob3VsZCBiZSBsZXNzIHRoYW4gMzA1MiBieXRlcyBsb25nLgoKVGhlIGxpYnJhcnkgcGFkcyB0aGUgcGF5bG9hZCBieSBkZWZhdWx0LiBUaGlzIGlzIG1vcmUgc2VjdXJlIGJ1dCBpdCBkZWNyZWFzZXMgcGVyZm9ybWFuY2UgZm9yIGJvdGggeW91ciBzZXJ2ZXIgYW5kIHlvdXIgdXNlcidzIGRldmljZS4KCiMjIyMgV2h5IGlzIGl0IG1vcmUgc2VjdXJlPwpXaGVuIHlvdSBlbmNyeXB0IGEgc3RyaW5nIG9mIGEgY2VydGFpbiBsZW5ndGgsIHRoZSByZXN1bHRpbmcgc3RyaW5nIHdpbGwgYWx3YXlzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLApubyBtYXR0ZXIgaG93IG1hbnkgdGltZXMgeW91IGVuY3J5cHQgdGhlIGluaXRpYWwgc3RyaW5nLiBUaGlzIGNhbiBtYWtlIGF0dGFja2VycyBndWVzcyB0aGUgY29udGVudCBvZiB0aGUgcGF5bG9hZC4KSW4gb3JkZXIgdG8gY2lyY3VtdmVudCB0aGlzLCB0aGlzIGxpYnJhcnkgYWRkcyBzb21lIG51bGwgcGFkZGluZyB0byB0aGUgaW5pdGlhbCBwYXlsb2FkLCBzbyB0aGF0IGFsbCB0aGUgaW5wdXQgb2YgdGhlIGVuY3J5cHRpb24gcHJvY2Vzcwp3aWxsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiBUaGlzIHdheSwgYWxsIHRoZSBvdXRwdXQgb2YgdGhlIGVuY3J5cHRpb24gcHJvY2VzcyB3aWxsIGFsc28gaGF2ZSB0aGUgc2FtZSBsZW5ndGggYW5kIGF0dGFja2VycyB3b24ndCBiZSBhYmxlIHRvIApndWVzcyB0aGUgY29udGVudCBvZiB5b3VyIHBheWxvYWQuCgojIyMjIFdoeSBkb2VzIGl0IGRlY3JlYXNlIHBlcmZvcm1hbmNlPwpFbmNyeXB0aW5nIG1vcmUgYnl0ZXMgdGFrZXMgbW9yZSBydW50aW1lIG9uIHlvdXIgc2VydmVyLCBhbmQgYWxzbyBzbG93cyBkb3duIHRoZSB1c2VyJ3MgZGV2aWNlIHdpdGggZGVjcnlwdGlvbi4gTW9yZW92ZXIsIHNlbmRpbmcgYW5kIHJlY2VpdmluZyB0aGUgcGFja2V0IHdpbGwgdGFrZSBtb3JlIHRpbWUuCkl0J3MgYWxzbyBub3QgdmVyeSBmcmllbmRseSB3aXRoIHVzZXJzIHdobyBoYXZlIGxpbWl0ZWQgZGF0YSBwbGFucy4KCiMjIyMgSG93IGNhbiBJIGRpc2FibGUgb3IgY3VzdG9taXplIGF1dG9tYXRpYyBwYWRkaW5nPwpZb3UgY2FuIGN1c3RvbWl6ZSBhdXRvbWF0aWMgcGFkZGluZyBpbiBvcmRlciB0byBiZXR0ZXIgZml0IHlvdXIgbmVlZHMuCgpIZXJlIGFyZSBzb21lIGlkZWFzIG9mIHNldHRpbmdzOgoqIChkZWZhdWx0KSBgRW5jcnlwdGlvbjo6TUFYX0NPTVBBVElCSUxJVFlfUEFZTE9BRF9MRU5HVEhgICgzMDUyIGJ5dGVzKSBmb3IgY29tcGF0aWJpbGl0eSBwdXJwb3NlcyB3aXRoIEZpcmVmb3ggZm9yIEFuZHJvaWQKKiBgRW5jcnlwdGlvbjo6TUFYX1BBWUxPQURfTEVOR1RIYCAoNDA3OCBieXRlcykgZm9yIG1heGltdW0gc2VjdXJpdHkKKiBgZmFsc2VgIGZvciBtYXhpbXVtIHBlcmZvcm1hbmNlCiogSWYgeW91IGtub3cgeW91ciBwYXlsb2FkcyB3aWxsIG5vdCBleGNlZWQgYFhgIGJ5dGVzLCB0aGVuIHNldCBpdCB0byBgWGAgZm9yIHRoZSBiZXN0IGJhbGFuY2UgYmV0d2VlbiBzZWN1cml0eSBhbmQgcGVyZm9ybWFuY2UuCgpgYGBwaHAKPD9waHAKCnVzZSBNaW5pc2hsaW5rXFdlYlB1c2hcV2ViUHVzaDsKCiR3ZWJQdXNoID0gbmV3IFdlYlB1c2goKTsKJHdlYlB1c2gtPnNldEF1dG9tYXRpY1BhZGRpbmcoZmFsc2UpOyAvLyBkaXNhYmxlIGF1dG9tYXRpYyBwYWRkaW5nCiR3ZWJQdXNoLT5zZXRBdXRvbWF0aWNQYWRkaW5nKDUxMik7IC8vIGVuYWJsZSBhdXRvbWF0aWMgcGFkZGluZyB0byA1MTIgYnl0ZXMgKHlvdSBzaG91bGQgbWFrZSBzdXJlIHRoYXQgeW91ciBwYXlsb2FkIGlzIGxlc3MgdGhhbiA1MTIgYnl0ZXMsIG9yIGVsc2UgYW4gYXR0YWNrZXIgY291bGQgZ3Vlc3MgdGhlIGNvbnRlbnQpCiR3ZWJQdXNoLT5zZXRBdXRvbWF0aWNQYWRkaW5nKHRydWUpOyAvLyBlbmFibGUgYXV0b21hdGljIHBhZGRpbmcgdG8gZGVmYXVsdCBtYXhpbXVtIGNvbXBhdGliaWxpdHkgbGVuZ3RoCmBgYAoKIyMjIEN1c3RvbWl6aW5nIHRoZSBIVFRQIGNsaWVudApXZWJQdXNoIHVzZXMgW0d1enpsZV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUpLiBJdCB3aWxsIHVzZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBjbGllbnQgaXQgZmluZHMsIAphbmQgbW9zdCBvZiB0aGUgdGltZSBpdCB3aWxsIGJlIGBNdWx0aUN1cmxgLCB3aGljaCBhbGxvd3MgdG8gc2VuZCBtdWx0aXBsZSBub3RpZmljYXRpb25zIGluIHBhcmFsbGVsLgoKWW91IGNhbiBjdXN0b21pemUgdGhlIGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIGFuZCB0aW1lb3V0IHdoZW4gaW5zdGFudGlhdGluZyBXZWJQdXNoOgpgYGBwaHAKPD9waHAKCnVzZSBNaW5pc2hsaW5rXFdlYlB1c2hcV2ViUHVzaDsKCiR0aW1lb3V0ID0gMjA7IC8vIHNlY29uZHMKJGNsaWVudE9wdGlvbnMgPSBhcnJheSgKICAgIFxHdXp6bGVIdHRwXFJlcXVlc3RPcHRpb25zOjpBTExPV19SRURJUkVDVFMgPT4gZmFsc2UsCik7IC8vIHNlZSBcR3V6emxlSHR0cFxSZXF1ZXN0T3B0aW9ucwokd2ViUHVzaCA9IG5ldyBXZWJQdXNoKGFycmF5KCksIGFycmF5KCksICR0aW1lb3V0LCAkY2xpZW50T3B0aW9ucyk7CmBgYAoKIyMgQ29tbW9uIHF1ZXN0aW9ucwoKIyMjIElzIHRoZXJlIGFueSBwbHVnaW4vYnVuZGxlL2V4dGVuc2lvbiBmb3IgbXkgZmF2b3JpdGUgUEhQIGZyYW1ld29yaz8KVGhlIGZvbGxvd2luZyBhcmUgYXZhaWxhYmxlOgoKLSBTeW1mb255OiBbTWluaXNobGlua1dlYlB1c2hCdW5kbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rL3dlYi1wdXNoLWJ1bmRsZSkKLSBMYXJhdmVsOiBbbGFyYXZlbC1ub3RpZmljYXRpb24tY2hhbm5lbHMvd2VicHVzaF0oaHR0cHM6Ly9naXRodWIuY29tL2xhcmF2ZWwtbm90aWZpY2F0aW9uLWNoYW5uZWxzL3dlYnB1c2gpCgpGZWVsIGZyZWUgdG8gYWRkIHlvdXIgb3duIQoKIyMjIElzIHRoZSBBUEkgc3RhYmxlPwpOb3QgdW50aWwgdGhlIFtQdXNoIEFQSSBzcGVjXShodHRwOi8vd3d3LnczLm9yZy9UUi9wdXNoLWFwaS8pIGlzIGZpbmlzaGVkLgoKIyMjIFdoYXQgYWJvdXQgc2VjdXJpdHk/ClBheWxvYWQgaXMgZW5jcnlwdGVkIGFjY29yZGluZyB0byB0aGUgW01lc3NhZ2UgRW5jcnlwdGlvbiBmb3IgV2ViIFB1c2hdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLXdlYnB1c2gtZW5jcnlwdGlvbi0wMSkgc3RhbmRhcmQsCnVzaW5nIHRoZSB1c2VyIHB1YmxpYyBrZXkgYW5kIGF1dGhlbnRpY2F0aW9uIHNlY3JldCB0aGF0IHlvdSBjYW4gZ2V0IGJ5IGZvbGxvd2luZyB0aGUgW1dlYiBQdXNoIEFQSV0oaHR0cDovL3d3dy53My5vcmcvVFIvcHVzaC1hcGkvKSBzcGVjaWZpY2F0aW9uLgoKSW50ZXJuYWxseSwgV2ViUHVzaCB1c2VzIHRoZSBbcGhwZWNjXShodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYykgRWxsaXB0aWMgQ3VydmUgQ3J5cHRvZ3JhcGh5IGxpYnJhcnkgdG8gY3JlYXRlIApsb2NhbCBwdWJsaWMgYW5kIHByaXZhdGUga2V5cyBhbmQgY29tcHV0ZSB0aGUgc2hhcmVkIHNlY3JldC4KVGhlbiwgaWYgeW91IGhhdmUgYSBQSFAgPj0gNy4xLCBXZWJQdXNoIHVzZXMgYG9wZW5zc2xgIGluIG9yZGVyIHRvIGVuY3J5cHQgdGhlIHBheWxvYWQgd2l0aCB0aGUgZW5jcnlwdGlvbiBrZXkuCk90aGVyd2lzZSwgaWYgeW91IGhhdmUgUEhQIDwgNy4xLCBpdCB1c2VzIFtTcG9ta3ktTGFicy9waHAtYWVzLWdjbV0oaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtKSwgd2hpY2ggaXMgc2xvd2VyLgoKIyMjIEhvdyBkbyBJIHNjYWxlPwpIZXJlIGFyZSBzb21lIGlkZWFzOgoKMS4gVXBncmFkZSB0byBQSFAgNy4xCjIuIE1ha2Ugc3VyZSBNdWx0aUN1cmwgaXMgYXZhaWxhYmxlIG9uIHlvdXIgc2VydmVyCjMuIEZpbmQgdGhlIHJpZ2h0IGJhbGFuY2UgZm9yIHlvdXIgbmVlZHMgYmV0d2VlbiBzZWN1cml0eSBhbmQgcGVyZm9ybWFuY2UgKHNlZSBhYm92ZSkKNC4gRmluZCB0aGUgcmlnaHQgYmF0Y2ggc2l6ZSAoc2V0IGl0IGluIGBkZWZhdWx0T3B0aW9uc2Agb3IgYXMgcGFyYW1ldGVyIHRvIGBmbHVzaCgpYCkKCiMjIyBIb3cgdG8gc29sdmUgIlNTTCBjZXJ0aWZpY2F0ZSBwcm9ibGVtOiB1bmFibGUgdG8gZ2V0IGxvY2FsIGlzc3VlciBjZXJ0aWZpY2F0ZSI/CllvdXIgaW5zdGFsbGF0aW9uIGxhY2tzIHNvbWUgY2VydGlmaWNhdGVzLgoKMS4gRG93bmxvYWQgW2NhY2VydC5wZW1dKGh0dHA6Ly9jdXJsLmhheHguc2UvY2EvY2FjZXJ0LnBlbSkuCjIuIEVkaXQgeW91ciBgcGhwLmluaWA6IGFmdGVyIGBbY3VybF1gLCB0eXBlIGBjdXJsLmNhaW5mbyA9IC9wYXRoL3RvL2NhY2VydC5wZW1gLgoKWW91IGNhbiBhbHNvIGZvcmNlIHVzaW5nIGEgY2xpZW50IHdpdGhvdXQgcGVlciB2ZXJpZmljYXRpb24uCgojIyMgSG93IHRvIHNvbHZlICJCYWQga2V5IGVuY3J5cHRpb24ga2V5IGxlbmd0aCIgb3IgIlVuc3VwcG9ydGVkIGtleSB0eXBlIj8KRGlzYWJsZSBgbWJzdHJpbmcuZnVuY19vdmVybG9hZGAgaW4geW91ciBgcGhwLmluaWAuCgojIyMgSG93IHRvIHNvbHZlICJDbGFzcyAnTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2gnIG5vdCBmb3VuZCIKTWFrZSBzdXJlIHRvIHJlcXVpcmUgQ29tcG9zZXIncyBbYXV0b2xvYWRlcl0oaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvZG9jLzAxLWJhc2ljLXVzYWdlLm1kI2F1dG9sb2FkaW5nKS4KCmBgYHBocApyZXF1aXJlIF9fRElSX18gLiAnL3BhdGgvdG8vdmVuZG9yL2F1dG9sb2FkLnBocCc7CmBgYAoKIyMjIEkgbXVzdCB1c2UgUEhQIDUuNCBvciA1LjUuIFdoYXQgY2FuIEkgZG8/CllvdSB3b24ndCBiZSBhYmxlIHRvIHNlbmQgYW55IHBheWxvYWQsIHNvIHlvdSdsbCBvbmx5IGJlIGFibGUgdG8gdXNlIGBzZW5kTm90aWZpY2F0aW9uKCRlbmRwb2ludClgLgpJbnN0YWxsIHRoZSBsaWJyYXJ5IHdpdGggYGNvbXBvc2VyYCB1c2luZyBgLS1pZ25vcmUtcGxhdGZvcm0tcmVxc2AuClRoZSB3b3JrYXJvdW5kIGZvciBnZXR0aW5nIHRoZSBwYXlsb2FkIGlzIHRvIGZldGNoIGl0IGluIHRoZSBzZXJ2aWNlIHdvcmtlciAoW2V4YW1wbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rL3BoeXNib29rL2Jsb2IvMmVkOGI5YThhMjE3NDQ2Yzk3NDdlOTE5MWE1MGQ2MzEyNjUxMTI1ZC93ZWIvc2VydmljZS13b3JrZXIuanMjTDc1KSkuIAoKIyMjIEkgbG9zdCBteSBWQVBJRCBrZXlzIQpTZWUgW2lzc3VlICM1OF0oaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL2lzc3Vlcy81OCkuCgojIyMgSSdtIHVzaW5nIEZpcmViYXNlIHB1c2ggbm90aWZpY2F0aW9ucywgaG93IGRvIEkgdXNlIHRoaXMgbGlicmFyeT8KVGhpcyBsaWJyYXJ5IGlzIG5vdCBkZXNpZ25lZCBmb3IgRmlyZWJhc2UgcHVzaCBub3RpZmljYXRpb25zLgpZb3UgY2FuIHN0aWxsIHVzZSBpdCBmb3IgeW91ciB3ZWIgcHJvamVjdHMgKGZvciBzdGFuZGFyZCBXZWJQdXNoIG5vdGlmaWNhdGlvbnMpLCBidXQgeW91IHNob3VsZCBmb3JnZXQgYW55IGxpbmsgdG8gRmlyZWJhc2Ugd2hpbGUgdXNpbmcgdGhlIGxpYnJhcnkuCgojIyMgSSBuZWVkIHRvIHNlbmQgbm90aWZpY2F0aW9ucyB0byBuYXRpdmUgYXBwcy4gKGVnLiBBUE5TIGZvciBpT1MpCldlYlB1c2ggaXMgZm9yIHdlYiBhcHBzLgpZb3UgbmVlZCBzb21ldGhpbmcgbGlrZSBbUk1TUHVzaE5vdGlmaWNhdGlvbnNCdW5kbGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9yaWNoc2FnZS9STVNQdXNoTm90aWZpY2F0aW9uc0J1bmRsZSkgKFN5bWZvbnkpLgoKIyMjIFRoaXMgaXMgUEhQLi4uIEkgbmVlZCBKYXZhc2NyaXB0IQpUaGlzIGxpYnJhcnkgd2FzIGluc3BpcmVkIGJ5IHRoZSBOb2RlLmpzIFttYXJjby1jL3dlYi1wdXNoXShodHRwczovL2dpdGh1Yi5jb20vbWFyY28tYy93ZWItcHVzaCkgbGlicmFyeS4KCiMjIENvbnRyaWJ1dGluZwpTZWUgW0NPTlRSSUJVVElORy5tZF0oaHR0cHM6Ly9naXRodWIuY29tL01pbmlzaGxpbmsvd2ViLXB1c2gvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kKS4KCiMjIExpY2Vuc2UKW01JVF0oaHR0cHM6Ly9naXRodWIuY29tL01pbmlzaGxpbmsvd2ViLXB1c2gvYmxvYi9tYXN0ZXIvTElDRU5TRSkK]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Encryption.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgTWluaXNobGlua1xXZWJQdXNoOwoKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQb2ludFxVbmNvbXByZXNzZWRQb2ludFNlcmlhbGl6ZXI7CgpmaW5hbCBjbGFzcyBFbmNyeXB0aW9uCnsKICAgIGNvbnN0IE1BWF9QQVlMT0FEX0xFTkdUSCA9IDQwNzg7CiAgICBjb25zdCBNQVhfQ09NUEFUSUJJTElUWV9QQVlMT0FEX0xFTkdUSCA9IDMwNTI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXlsb2FkCiAgICAgKiBAcGFyYW0gYm9vbCAgICRtYXhMZW5ndGhUb1BhZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIHBhZGRlZCBwYXlsb2FkIChwbGFpbnRleHQpCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFkUGF5bG9hZCgkcGF5bG9hZCwgJG1heExlbmd0aFRvUGFkKQogICAgewogICAgICAgICRwYXlsb2FkTGVuID0gVXRpbHM6OnNhZmVTdHJsZW4oJHBheWxvYWQpOwogICAgICAgICRwYWRMZW4gPSAkbWF4TGVuZ3RoVG9QYWQgPyAkbWF4TGVuZ3RoVG9QYWQgLSAkcGF5bG9hZExlbiA6IDA7CgogICAgICAgIHJldHVybiBwYWNrKCduKicsICRwYWRMZW4pLnN0cl9wYWQoJHBheWxvYWQsICRwYWRMZW4gKyAkcGF5bG9hZExlbiwgY2hyKDApLCBTVFJfUEFEX0xFRlQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkcGF5bG9hZCAgICAgICAgICBXaXRoIHBhZGRpbmcKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJQdWJsaWNLZXkgICAgQmFzZSA2NCBlbmNvZGVkIChNSU1FIG9yIFVSTC1zYWZlKQogICAgICogQHBhcmFtIHN0cmluZyAkdXNlckF1dGhUb2tlbiAgICBCYXNlIDY0IGVuY29kZWQgKE1JTUUgb3IgVVJMLXNhZmUpCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY3J5cHQoJHBheWxvYWQsICR1c2VyUHVibGljS2V5LCAkdXNlckF1dGhUb2tlbikKICAgIHsKICAgICAgICAkdXNlclB1YmxpY0tleSA9IEJhc2U2NFVybDo6ZGVjb2RlKCR1c2VyUHVibGljS2V5KTsKICAgICAgICAkdXNlckF1dGhUb2tlbiA9IEJhc2U2NFVybDo6ZGVjb2RlKCR1c2VyQXV0aFRva2VuKTsKCiAgICAgICAgLy8gaW5pdGlhbGl6ZSB1dGlsaXRpZXMKICAgICAgICAkbWF0aCA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkcG9pbnRTZXJpYWxpemVyID0gbmV3IFVuY29tcHJlc3NlZFBvaW50U2VyaWFsaXplcigkbWF0aCk7CiAgICAgICAgJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMjU2KCk7CiAgICAgICAgJGN1cnZlID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5jdXJ2ZTI1NigpOwoKICAgICAgICAvLyBnZXQgbG9jYWwga2V5IHBhaXIKICAgICAgICAkbG9jYWxQcml2YXRlS2V5T2JqZWN0ID0gJGdlbmVyYXRvci0+Y3JlYXRlUHJpdmF0ZUtleSgpOwogICAgICAgICRsb2NhbFB1YmxpY0tleU9iamVjdCA9ICRsb2NhbFByaXZhdGVLZXlPYmplY3QtPmdldFB1YmxpY0tleSgpOwogICAgICAgICRsb2NhbFB1YmxpY0tleSA9IGhleDJiaW4oJHBvaW50U2VyaWFsaXplci0+c2VyaWFsaXplKCRsb2NhbFB1YmxpY0tleU9iamVjdC0+Z2V0UG9pbnQoKSkpOwoKICAgICAgICAvLyBnZXQgdXNlciBwdWJsaWMga2V5IG9iamVjdAogICAgICAgICRwb2ludFVzZXJQdWJsaWNLZXkgPSAkcG9pbnRTZXJpYWxpemVyLT51bnNlcmlhbGl6ZSgkY3VydmUsIGJpbjJoZXgoJHVzZXJQdWJsaWNLZXkpKTsKICAgICAgICAkdXNlclB1YmxpY0tleU9iamVjdCA9ICRnZW5lcmF0b3ItPmdldFB1YmxpY0tleUZyb20oJHBvaW50VXNlclB1YmxpY0tleS0+Z2V0WCgpLCAkcG9pbnRVc2VyUHVibGljS2V5LT5nZXRZKCksICRnZW5lcmF0b3ItPmdldE9yZGVyKCkpOwoKICAgICAgICAvLyBnZXQgc2hhcmVkIHNlY3JldCBmcm9tIHVzZXIgcHVibGljIGtleSBhbmQgbG9jYWwgcHJpdmF0ZSBrZXkKICAgICAgICAkc2hhcmVkU2VjcmV0ID0gaGV4MmJpbigkbWF0aC0+ZGVjSGV4KGdtcF9zdHJ2YWwoJHVzZXJQdWJsaWNLZXlPYmplY3QtPmdldFBvaW50KCktPm11bCgkbG9jYWxQcml2YXRlS2V5T2JqZWN0LT5nZXRTZWNyZXQoKSktPmdldFgoKSkpKTsKCiAgICAgICAgLy8gZ2VuZXJhdGUgc2FsdAogICAgICAgICRzYWx0ID0gb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKDE2KTsKCiAgICAgICAgLy8gc2VjdGlvbiA0LjMKICAgICAgICAkaWttID0gIWVtcHR5KCR1c2VyQXV0aFRva2VuKSA/CiAgICAgICAgICAgIHNlbGY6OmhrZGYoJHVzZXJBdXRoVG9rZW4sICRzaGFyZWRTZWNyZXQsICdDb250ZW50LUVuY29kaW5nOiBhdXRoJy5jaHIoMCksIDMyKSA6CiAgICAgICAgICAgICRzaGFyZWRTZWNyZXQ7CgogICAgICAgIC8vIHNlY3Rpb24gNC4yCiAgICAgICAgJGNvbnRleHQgPSBzZWxmOjpjcmVhdGVDb250ZXh0KCR1c2VyUHVibGljS2V5LCAkbG9jYWxQdWJsaWNLZXkpOwoKICAgICAgICAvLyBkZXJpdmUgdGhlIENvbnRlbnQgRW5jcnlwdGlvbiBLZXkKICAgICAgICAkY29udGVudEVuY3J5cHRpb25LZXlJbmZvID0gc2VsZjo6Y3JlYXRlSW5mbygnYWVzZ2NtJywgJGNvbnRleHQpOwogICAgICAgICRjb250ZW50RW5jcnlwdGlvbktleSA9IHNlbGY6OmhrZGYoJHNhbHQsICRpa20sICRjb250ZW50RW5jcnlwdGlvbktleUluZm8sIDE2KTsKCiAgICAgICAgLy8gc2VjdGlvbiAzLjMsIGRlcml2ZSB0aGUgbm9uY2UKICAgICAgICAkbm9uY2VJbmZvID0gc2VsZjo6Y3JlYXRlSW5mbygnbm9uY2UnLCAkY29udGV4dCk7CiAgICAgICAgJG5vbmNlID0gc2VsZjo6aGtkZigkc2FsdCwgJGlrbSwgJG5vbmNlSW5mbywgMTIpOwoKICAgICAgICAvLyBlbmNyeXB0CiAgICAgICAgLy8gIlRoZSBhZGRpdGlvbmFsIGRhdGEgcGFzc2VkIHRvIGVhY2ggaW52b2NhdGlvbiBvZiBBRUFEX0FFU18xMjhfR0NNIGlzIGEgemVyby1sZW5ndGggb2N0ZXQgc2VxdWVuY2UuIgogICAgICAgIGxpc3QoJGVuY3J5cHRlZFRleHQsICR0YWcpID0gXEFFU0dDTVxBRVNHQ006OmVuY3J5cHQoJGNvbnRlbnRFbmNyeXB0aW9uS2V5LCAkbm9uY2UsICRwYXlsb2FkLCAnJyk7CgogICAgICAgIC8vIHJldHVybiB2YWx1ZXMgaW4gdXJsIHNhZmUgYmFzZTY0CiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAnbG9jYWxQdWJsaWNLZXknID0+IEJhc2U2NFVybDo6ZW5jb2RlKCRsb2NhbFB1YmxpY0tleSksCiAgICAgICAgICAgICdzYWx0JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkc2FsdCksCiAgICAgICAgICAgICdjaXBoZXJUZXh0JyA9PiAkZW5jcnlwdGVkVGV4dC4kdGFnLAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBITUFDLWJhc2VkIEV4dHJhY3QtYW5kLUV4cGFuZCBLZXkgRGVyaXZhdGlvbiBGdW5jdGlvbiAoSEtERikuCiAgICAgKgogICAgICogVGhpcyBpcyB1c2VkIHRvIGRlcml2ZSBhIHNlY3VyZSBlbmNyeXB0aW9uIGtleSBmcm9tIGEgbW9zdGx5LXNlY3VyZSBzaGFyZWQKICAgICAqIHNlY3JldC4KICAgICAqCiAgICAgKiBUaGlzIGlzIGEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBIS0RGIHRhaWxvcmVkIHRvIG91ciBzcGVjaWZpYyBwdXJwb3Nlcy4KICAgICAqIEluIHBhcnRpY3VsYXIsIGZvciB1cyB0aGUgdmFsdWUgb2YgTiB3aWxsIGFsd2F5cyBiZSAxLCBhbmQgdGh1cyBUIGFsd2F5cwogICAgICogZXF1YWxzIEhNQUMtSGFzaChQUkssIGluZm8gfCAweDAxKS4KICAgICAqCiAgICAgKiBTZWUge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM1ODY5LnR4dH0KICAgICAqIEZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWUvcHVzaC1lbmNyeXB0aW9uLW5vZGUvYmxvYi9tYXN0ZXIvc3JjL2VuY3J5cHQuanN9CiAgICAgKgogICAgICogQHBhcmFtICRzYWx0IHN0cmluZyBBIG5vbi1zZWNyZXQgcmFuZG9tIHZhbHVlCiAgICAgKiBAcGFyYW0gJGlrbSBzdHJpbmcgSW5wdXQga2V5aW5nIG1hdGVyaWFsCiAgICAgKiBAcGFyYW0gJGluZm8gc3RyaW5nIEFwcGxpY2F0aW9uLXNwZWNpZmljIGNvbnRleHQKICAgICAqIEBwYXJhbSAkbGVuZ3RoIGludCBUaGUgbGVuZ3RoIChpbiBieXRlcykgb2YgdGhlIHJlcXVpcmVkIG91dHB1dCBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBoa2RmKCRzYWx0LCAkaWttLCAkaW5mbywgJGxlbmd0aCkKICAgIHsKICAgICAgICAvLyBleHRyYWN0CiAgICAgICAgJHByayA9IGhhc2hfaG1hYygnc2hhMjU2JywgJGlrbSwgJHNhbHQsIHRydWUpOwoKICAgICAgICAvLyBleHBhbmQKICAgICAgICByZXR1cm4gbWJfc3Vic3RyKGhhc2hfaG1hYygnc2hhMjU2JywgJGluZm8uY2hyKDEpLCAkcHJrLCB0cnVlKSwgMCwgJGxlbmd0aCwgJzhiaXQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBjb250ZXh0IGZvciBkZXJpdmluZyBlbmN5cHRpb24gcGFyYW1ldGVycy4KICAgICAqIFNlZSBzZWN0aW9uIDQuMiBvZgogICAgICoge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtZW5jcnlwdGlvbi1lbmNvZGluZy0wMH0KICAgICAqIEZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWUvcHVzaC1lbmNyeXB0aW9uLW5vZGUvYmxvYi9tYXN0ZXIvc3JjL2VuY3J5cHQuanN9LgogICAgICoKICAgICAqIEBwYXJhbSAkY2xpZW50UHVibGljS2V5IHN0cmluZyBUaGUgY2xpZW50J3MgcHVibGljIGtleQogICAgICogQHBhcmFtICRzZXJ2ZXJQdWJsaWNLZXkgc3RyaW5nIE91ciBwdWJsaWMga2V5CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVDb250ZXh0KCRjbGllbnRQdWJsaWNLZXksICRzZXJ2ZXJQdWJsaWNLZXkpCiAgICB7CiAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRjbGllbnRQdWJsaWNLZXkpICE9PSA2NSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdJbnZhbGlkIGNsaWVudCBwdWJsaWMga2V5IGxlbmd0aCcpOwogICAgICAgIH0KCiAgICAgICAgLy8gVGhpcyBvbmUgc2hvdWxkIG5ldmVyIGhhcHBlbiwgYmVjYXVzZSBpdCdzIG91ciBjb2RlIHRoYXQgZ2VuZXJhdGVzIHRoZSBrZXkKICAgICAgICBpZiAoVXRpbHM6OnNhZmVTdHJsZW4oJHNlcnZlclB1YmxpY0tleSkgIT09IDY1KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0ludmFsaWQgc2VydmVyIHB1YmxpYyBrZXkgbGVuZ3RoJyk7CiAgICAgICAgfQoKICAgICAgICAkbGVuID0gY2hyKDApLidBJzsgLy8gNjUgYXMgVWludDE2QkUKCiAgICAgICAgcmV0dXJuIGNocigwKS4kbGVuLiRjbGllbnRQdWJsaWNLZXkuJGxlbi4kc2VydmVyUHVibGljS2V5OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbmZvIHJlY29yZC4gU2VlIHNlY3Rpb25zIDMuMiBhbmQgMy4zIG9mCiAgICAgKiB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1lbmNyeXB0aW9uLWVuY29kaW5nLTAwfQogICAgICogRnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZS9wdXNoLWVuY3J5cHRpb24tbm9kZS9ibG9iL21hc3Rlci9zcmMvZW5jcnlwdC5qc30uCiAgICAgKgogICAgICogQHBhcmFtICR0eXBlIHN0cmluZyBUaGUgdHlwZSBvZiB0aGUgaW5mbyByZWNvcmQKICAgICAqIEBwYXJhbSAkY29udGV4dCBzdHJpbmcgVGhlIGNvbnRleHQgZm9yIHRoZSByZWNvcmQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUluZm8oJHR5cGUsICRjb250ZXh0KQogICAgewogICAgICAgIGlmIChVdGlsczo6c2FmZVN0cmxlbigkY29udGV4dCkgIT09IDEzNSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdDb250ZXh0IGFyZ3VtZW50IGhhcyBpbnZhbGlkIHNpemUnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnQ29udGVudC1FbmNvZGluZzogJy4kdHlwZS5jaHIoMCkuJ1AtMjU2Jy4kY29udGV4dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Notification.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgTWluaXNobGlua1xXZWJQdXNoOwoKY2xhc3MgTm90aWZpY2F0aW9uCnsKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkZW5kcG9pbnQ7CgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICRwYXlsb2FkOwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkdXNlclB1YmxpY0tleTsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJHVzZXJBdXRoVG9rZW47CgogICAgLyoqIEB2YXIgYXJyYXkgT3B0aW9ucyA6IFRUTCwgdXJnZW5jeSwgdG9waWMgKi8KICAgIHByaXZhdGUgJG9wdGlvbnM7CgogICAgLyoqIEB2YXIgYXJyYXkgQXV0aCBkZXRhaWxzIDogR0NNLCBWQVBJRCAqLwogICAgcHJpdmF0ZSAkYXV0aDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGVuZHBvaW50LCAkcGF5bG9hZCwgJHVzZXJQdWJsaWNLZXksICR1c2VyQXV0aFRva2VuLCAkb3B0aW9ucywgJGF1dGgpCiAgICB7CiAgICAgICAgJHRoaXMtPmVuZHBvaW50ID0gJGVuZHBvaW50OwogICAgICAgICR0aGlzLT5wYXlsb2FkID0gJHBheWxvYWQ7CiAgICAgICAgJHRoaXMtPnVzZXJQdWJsaWNLZXkgPSAkdXNlclB1YmxpY0tleTsKICAgICAgICAkdGhpcy0+dXNlckF1dGhUb2tlbiA9ICR1c2VyQXV0aFRva2VuOwogICAgICAgICR0aGlzLT5vcHRpb25zID0gJG9wdGlvbnM7CiAgICAgICAgJHRoaXMtPmF1dGggPSAkYXV0aDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmRwb2ludCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmRwb2ludDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBheWxvYWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJQdWJsaWNLZXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXNlclB1YmxpY0tleTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJBdXRoVG9rZW4oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXNlckF1dGhUb2tlbjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGVmYXVsdE9wdGlvbnMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcHRpb25zKGFycmF5ICRkZWZhdWx0T3B0aW9ucyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJG9wdGlvbnMgPSAkdGhpcy0+b3B0aW9uczsKICAgICAgICAkb3B0aW9uc1snVFRMJ10gPSBhcnJheV9rZXlfZXhpc3RzKCdUVEwnLCAkb3B0aW9ucykgPyAkb3B0aW9uc1snVFRMJ10gOiAkZGVmYXVsdE9wdGlvbnNbJ1RUTCddOwogICAgICAgICRvcHRpb25zWyd1cmdlbmN5J10gPSBhcnJheV9rZXlfZXhpc3RzKCd1cmdlbmN5JywgJG9wdGlvbnMpID8gJG9wdGlvbnNbJ3VyZ2VuY3knXSA6ICRkZWZhdWx0T3B0aW9uc1sndXJnZW5jeSddOwogICAgICAgICRvcHRpb25zWyd0b3BpYyddID0gYXJyYXlfa2V5X2V4aXN0cygndG9waWMnLCAkb3B0aW9ucykgPyAkb3B0aW9uc1sndG9waWMnXSA6ICRkZWZhdWx0T3B0aW9uc1sndG9waWMnXTsKCiAgICAgICAgcmV0dXJuICRvcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkZWZhdWx0QXV0aAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGgoYXJyYXkgJGRlZmF1bHRBdXRoKQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+YXV0aCkgPiAwID8gJHRoaXMtPmF1dGggOiAkZGVmYXVsdEF1dGg7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgTWluaXNobGlua1xXZWJQdXNoOwoKY2xhc3MgVXRpbHMKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlU3RybGVuKCRzdHJpbmcpCiAgICB7CiAgICAgICAgcmV0dXJuIG1iX3N0cmxlbigkc3RyaW5nLCAnOGJpdCcpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/VAPID.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgTWluaXNobGlua1xXZWJQdXNoOwoKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXEZhY3RvcnlcSldLRmFjdG9yeTsKdXNlIEpvc2VcRmFjdG9yeVxKV1NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5SW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUG9pbnRcVW5jb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQcml2YXRlS2V5XERlclByaXZhdGVLZXlTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQcml2YXRlS2V5XFBlbVByaXZhdGVLZXlTZXJpYWxpemVyOwoKY2xhc3MgVkFQSUQKewogICAgY29uc3QgUFVCTElDX0tFWV9MRU5HVEggPSA2NTsKICAgIGNvbnN0IFBSSVZBVEVfS0VZX0xFTkdUSCA9IDMyOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YXBpZAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkYXRlKGFycmF5ICR2YXBpZCkKICAgIHsKICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3N1YmplY3QnLCAkdmFwaWQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1tWQVBJRF0gWW91IG11c3QgcHJvdmlkZSBhIHN1YmplY3QgdGhhdCBpcyBlaXRoZXIgYSBtYWlsdG86IG9yIGEgVVJMLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3BlbUZpbGUnLCAkdmFwaWQpKSB7CiAgICAgICAgICAgICR2YXBpZFsncGVtJ10gPSBmaWxlX2dldF9jb250ZW50cygkdmFwaWRbJ3BlbUZpbGUnXSk7CgogICAgICAgICAgICBpZiAoISR2YXBpZFsncGVtJ10pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0Vycm9yIGxvYWRpbmcgUEVNIGZpbGUuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwZW0nLCAkdmFwaWQpKSB7CiAgICAgICAgICAgICRwZW0gPSAkdmFwaWRbJ3BlbSddOwogICAgICAgICAgICAkcG9zU3RhcnRLZXkgPSBzdHJwb3MoJHBlbSwgJy0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLScpOwogICAgICAgICAgICAkcG9zRW5kS2V5ID0gc3RycG9zKCRwZW0sICctLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0tJyk7CgogICAgICAgICAgICBpZiAoJHBvc1N0YXJ0S2V5ID09PSBmYWxzZSB8fCAkcG9zRW5kS2V5ID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignSW52YWxpZCBQRU0gZGF0YS4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBvc1N0YXJ0S2V5ICs9IDMwOyAvLyBsZW5ndGggb2YgJy0tLS0tQkVHSU4gRUMgUFJJVkFURSBLRVktLS0tLScKCiAgICAgICAgICAgICRwZW1TZXJpYWxpemVyID0gbmV3IFBlbVByaXZhdGVLZXlTZXJpYWxpemVyKG5ldyBEZXJQcml2YXRlS2V5U2VyaWFsaXplcigpKTsKICAgICAgICAgICAgJGtleXMgPSBzZWxmOjpnZXRVbmNvbXByZXNzZWRLZXlzKCRwZW1TZXJpYWxpemVyLT5wYXJzZShtYl9zdWJzdHIoJHBlbSwgJHBvc1N0YXJ0S2V5LCAkcG9zRW5kS2V5IC0gJHBvc1N0YXJ0S2V5LCAnOGJpdCcpKSk7CiAgICAgICAgICAgICR2YXBpZFsncHVibGljS2V5J10gPSAka2V5c1sncHVibGljS2V5J107CiAgICAgICAgICAgICR2YXBpZFsncHJpdmF0ZUtleSddID0gJGtleXNbJ3ByaXZhdGVLZXknXTsKICAgICAgICB9CgogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygncHVibGljS2V5JywgJHZhcGlkKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdbVkFQSURdIFlvdSBtdXN0IHByb3ZpZGUgYSBwdWJsaWMga2V5LicpOwogICAgICAgIH0KCiAgICAgICAgJHB1YmxpY0tleSA9IEJhc2U2NFVybDo6ZGVjb2RlKCR2YXBpZFsncHVibGljS2V5J10pOwoKICAgICAgICBpZiAoVXRpbHM6OnNhZmVTdHJsZW4oJHB1YmxpY0tleSkgIT09IHNlbGY6OlBVQkxJQ19LRVlfTEVOR1RIKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1tWQVBJRF0gUHVibGljIGtleSBzaG91bGQgYmUgNjUgYnl0ZXMgbG9uZyB3aGVuIGRlY29kZWQuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3ByaXZhdGVLZXknLCAkdmFwaWQpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1tWQVBJRF0gWW91IG11c3QgcHJvdmlkZSBhIHByaXZhdGUga2V5LicpOwogICAgICAgIH0KCiAgICAgICAgJHByaXZhdGVLZXkgPSBCYXNlNjRVcmw6OmRlY29kZSgkdmFwaWRbJ3ByaXZhdGVLZXknXSk7CgogICAgICAgIGlmIChVdGlsczo6c2FmZVN0cmxlbigkcHJpdmF0ZUtleSkgIT09IHNlbGY6OlBSSVZBVEVfS0VZX0xFTkdUSCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdbVkFQSURdIFByaXZhdGUga2V5IHNob3VsZCBiZSAzMiBieXRlcyBsb25nIHdoZW4gZGVjb2RlZC4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgJ3N1YmplY3QnID0+ICR2YXBpZFsnc3ViamVjdCddLAogICAgICAgICAgICAncHVibGljS2V5JyA9PiAkcHVibGljS2V5LAogICAgICAgICAgICAncHJpdmF0ZUtleScgPT4gJHByaXZhdGVLZXksCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHRha2VzIHRoZSByZXF1aXJlZCBWQVBJRCBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIHRoZSByZXF1aXJlZAogICAgICogaGVhZGVyIHRvIGJlIGFkZGVkIHRvIGEgV2ViIFB1c2ggUHJvdG9jb2wgUmVxdWVzdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhdWRpZW5jZSAgIFRoaXMgbXVzdCBiZSB0aGUgb3JpZ2luIG9mIHRoZSBwdXNoIHNlcnZpY2UKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN1YmplY3QgICAgVGhpcyBzaG91bGQgYmUgYSBVUkwgb3IgYSAnbWFpbHRvOicgZW1haWwgYWRkcmVzcwogICAgICogQHBhcmFtIHN0cmluZyAkcHVibGljS2V5ICBUaGUgZGVjb2RlZCBWQVBJRCBwdWJsaWMga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRwcml2YXRlS2V5IFRoZSBkZWNvZGVkIFZBUElEIHByaXZhdGUga2V5CiAgICAgKiBAcGFyYW0gaW50ICAgICRleHBpcmF0aW9uIFRoZSBleHBpcmF0aW9uIG9mIHRoZSBWQVBJRCBKV1QuIChVTklYIHRpbWVzdGFtcCkKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IFJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgJ0F1dGhvcml6YXRpb24nIGFuZCAnQ3J5cHRvLUtleScgdmFsdWVzIHRvIGJlIHVzZWQgYXMgaGVhZGVycwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFZhcGlkSGVhZGVycygkYXVkaWVuY2UsICRzdWJqZWN0LCAkcHVibGljS2V5LCAkcHJpdmF0ZUtleSwgJGV4cGlyYXRpb24gPSBudWxsKQogICAgewogICAgICAgICRleHBpcmF0aW9uTGltaXQgPSB0aW1lKCkgKyA0MzIwMDsgLy8gZXF1YWwgbWFyZ2luIG9mIGVycm9yIGJldHdlZW4gMCBhbmQgMjRoCiAgICAgICAgaWYgKCFpc3NldCgkZXhwaXJhdGlvbikgfHwgJGV4cGlyYXRpb24gPiAkZXhwaXJhdGlvbkxpbWl0KSB7CiAgICAgICAgICAgICRleHBpcmF0aW9uID0gJGV4cGlyYXRpb25MaW1pdDsKICAgICAgICB9CgogICAgICAgICRoZWFkZXIgPSBhcnJheSgKICAgICAgICAgICAgJ3R5cCcgPT4gJ0pXVCcsCiAgICAgICAgICAgICdhbGcnID0+ICdFUzI1NicsCiAgICAgICAgKTsKCiAgICAgICAgJGp3dFBheWxvYWQgPSBqc29uX2VuY29kZShhcnJheSgKICAgICAgICAgICAgJ2F1ZCcgPT4gJGF1ZGllbmNlLAogICAgICAgICAgICAnZXhwJyA9PiAkZXhwaXJhdGlvbiwKICAgICAgICAgICAgJ3N1YicgPT4gJHN1YmplY3QsCiAgICAgICAgKSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fTlVNRVJJQ19DSEVDSyk7CgogICAgICAgICRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjI1NigpOwogICAgICAgICRwcml2YXRlS2V5T2JqZWN0ID0gJGdlbmVyYXRvci0+Z2V0UHJpdmF0ZUtleUZyb20oZ21wX2luaXQoYmluMmhleCgkcHJpdmF0ZUtleSksIDE2KSk7CiAgICAgICAgJHBlbVNlcmlhbGl6ZSA9IG5ldyBQZW1Qcml2YXRlS2V5U2VyaWFsaXplcihuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoKSk7CiAgICAgICAgJHBlbSA9ICRwZW1TZXJpYWxpemUtPnNlcmlhbGl6ZSgkcHJpdmF0ZUtleU9iamVjdCk7CgogICAgICAgICRqd2sgPSBKV0tGYWN0b3J5OjpjcmVhdGVGcm9tS2V5KCRwZW0sIG51bGwpOwogICAgICAgICRqd3MgPSBKV1NGYWN0b3J5OjpjcmVhdGVKV1NUb0NvbXBhY3RKU09OKCRqd3RQYXlsb2FkLCAkandrLCAkaGVhZGVyKTsKCiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAnQXV0aG9yaXphdGlvbicgPT4gJ1dlYlB1c2ggJy4kandzLAogICAgICAgICAgICAnQ3J5cHRvLUtleScgPT4gJ3AyNTZlY2RzYT0nLkJhc2U2NFVybDo6ZW5jb2RlKCRwdWJsaWNLZXkpLAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIFZBUElEIGtleXMgaW4gY2FzZSB5b3Ugd291bGQgbm90IGJlIGFibGUgdG8gaGF2ZSBhIExpbnV4IGJhc2guCiAgICAgKiBETyBOT1QgY3JlYXRlIGtleXMgYXQgZWFjaCBpbml0aWFsaXphdGlvbiEgU2F2ZSB0aG9zZSBrZXlzIGFuZCByZXVzZSB0aGVtLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVWYXBpZEtleXMoKQogICAgewogICAgICAgICRwcml2YXRlS2V5T2JqZWN0ID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5nZW5lcmF0b3IyNTYoKS0+Y3JlYXRlUHJpdmF0ZUtleSgpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0VW5jb21wcmVzc2VkS2V5cygkcHJpdmF0ZUtleU9iamVjdCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0VW5jb21wcmVzc2VkS2V5cyhQcml2YXRlS2V5SW50ZXJmYWNlICRwcml2YXRlS2V5T2JqZWN0KQogICAgewogICAgICAgICRwb2ludFNlcmlhbGl6ZXIgPSBuZXcgVW5jb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyKEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKSk7CiAgICAgICAgJHZhcGlkWydwdWJsaWNLZXknXSA9IGJhc2U2NF9lbmNvZGUoaGV4MmJpbigkcG9pbnRTZXJpYWxpemVyLT5zZXJpYWxpemUoJHByaXZhdGVLZXlPYmplY3QtPmdldFB1YmxpY0tleSgpLT5nZXRQb2ludCgpKSkpOwogICAgICAgICR2YXBpZFsncHJpdmF0ZUtleSddID0gYmFzZTY0X2VuY29kZShoZXgyYmluKHN0cl9wYWQoZ21wX3N0cnZhbCgkcHJpdmF0ZUtleU9iamVjdC0+Z2V0U2VjcmV0KCksIDE2KSwgMiAqIHNlbGY6OlBSSVZBVEVfS0VZX0xFTkdUSCwgJzAnLCBTVFJfUEFEX0xFRlQpKSk7CgogICAgICAgIHJldHVybiAkdmFwaWQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/WebPush.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgTWluaXNobGlua1xXZWJQdXNoOwoKdXNlIEd1enpsZUh0dHBcQ2xpZW50Owp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHNyN1xSZXF1ZXN0Owp1c2UgR3V6emxlSHR0cFxQcm9taXNlOwoKY2xhc3MgV2ViUHVzaAp7CiAgICBjb25zdCBHQ01fVVJMID0gJ2h0dHBzOi8vYW5kcm9pZC5nb29nbGVhcGlzLmNvbS9nY20vc2VuZCc7CgogICAgLyoqIEB2YXIgQ2xpZW50ICovCiAgICBwcm90ZWN0ZWQgJGNsaWVudDsKCiAgICAvKiogQHZhciBhcnJheSAqLwogICAgcHJvdGVjdGVkICRhdXRoOwoKICAgIC8qKiBAdmFyIGFycmF5IEFycmF5IG9mIGFycmF5IG9mIE5vdGlmaWNhdGlvbnMgKi8KICAgIHByaXZhdGUgJG5vdGlmaWNhdGlvbnM7CgogICAgLyoqIEB2YXIgYXJyYXkgRGVmYXVsdCBvcHRpb25zIDogVFRMLCB1cmdlbmN5LCB0b3BpYywgYmF0Y2hTaXplICovCiAgICBwcml2YXRlICRkZWZhdWx0T3B0aW9uczsKCiAgICAvKiogQHZhciBpbnQgQXV0b21hdGljIHBhZGRpbmcgb2YgcGF5bG9hZHMsIGlmIGRpc2FibGVkLCB0cmFkZSBzZWN1cml0eSBmb3IgYmFuZHdpZHRoICovCiAgICBwcml2YXRlICRhdXRvbWF0aWNQYWRkaW5nID0gRW5jcnlwdGlvbjo6TUFYX0NPTVBBVElCSUxJVFlfUEFZTE9BRF9MRU5HVEg7CgogICAgLyoqCiAgICAgKiBXZWJQdXNoIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRhdXRoICAgICAgICAgICBTb21lIHNlcnZlcnMgbmVlZHMgYXV0aGVudGljYXRpb24KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRkZWZhdWx0T3B0aW9ucyBUVEwsIHVyZ2VuY3ksIHRvcGljLCBiYXRjaFNpemUKICAgICAqIEBwYXJhbSBpbnR8bnVsbCAgICAgICAgICAgICR0aW1lb3V0ICAgICAgICBUaW1lb3V0IG9mIFBPU1QgcmVxdWVzdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJGNsaWVudE9wdGlvbnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRhdXRoID0gYXJyYXkoKSwgJGRlZmF1bHRPcHRpb25zID0gYXJyYXkoKSwgJHRpbWVvdXQgPSAzMCwgJGNsaWVudE9wdGlvbnMgPSBhcnJheSgpKQogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnY3VybCcpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoIltXZWJQdXNoXSBjdXJsIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIGJ1dCBpcyByZXF1aXJlZC4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuIiwgRV9VU0VSX1dBUk5JTkcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdnbXAnKSkgewogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCJbV2ViUHVzaF0gZ21wIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIGJ1dCBpcyByZXF1aXJlZCBmb3Igc2VuZGluZyBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIGZvciBWQVBJRCBhdXRoZW50aWNhdGlvbi4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuIiwgRV9VU0VSX05PVElDRSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoJ21ic3RyaW5nJykpIHsKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcigiW1dlYlB1c2hdIG1ic3RyaW5nIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIGJ1dCBpcyByZXF1aXJlZCBmb3Igc2VuZGluZyBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIGZvciBWQVBJRCBhdXRoZW50aWNhdGlvbi4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuIiwgRV9VU0VSX05PVElDRSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWV4dGVuc2lvbl9sb2FkZWQoJ29wZW5zc2wnKSkgewogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCJbV2ViUHVzaF0gb3BlbnNzbCBleHRlbnNpb24gaXMgbm90IGxvYWRlZCBidXQgaXMgcmVxdWlyZWQgZm9yIHNlbmRpbmcgcHVzaCBub3RpZmljYXRpb25zIHdpdGggcGF5bG9hZCBvciBmb3IgVkFQSUQgYXV0aGVudGljYXRpb24uIFlvdSBjYW4gZml4IHRoaXMgaW4geW91ciBwaHAuaW5pLiIsIEVfVVNFUl9OT1RJQ0UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGluaV9nZXQoJ21ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQnKSA+PSAyKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoIltXZWJQdXNoXSBtYnN0cmluZy5mdW5jX292ZXJsb2FkIGlzIGVuYWJsZWQgZm9yIHN0ciogZnVuY3Rpb25zLiBZb3UgbXVzdCBkaXNhYmxlIGl0IGlmIHlvdSB3YW50IHRvIHNlbmQgcHVzaCBub3RpZmljYXRpb25zIHdpdGggcGF5bG9hZCBvciB1c2UgVkFQSUQuIFlvdSBjYW4gZml4IHRoaXMgaW4geW91ciBwaHAuaW5pLiIsIEVfVVNFUl9OT1RJQ0UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ1ZBUElEJywgJGF1dGgpKSB7CiAgICAgICAgICAgICRhdXRoWydWQVBJRCddID0gVkFQSUQ6OnZhbGlkYXRlKCRhdXRoWydWQVBJRCddKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5hdXRoID0gJGF1dGg7CgogICAgICAgICR0aGlzLT5zZXREZWZhdWx0T3B0aW9ucygkZGVmYXVsdE9wdGlvbnMpOwoKICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3RpbWVvdXQnLCAkY2xpZW50T3B0aW9ucykgJiYgaXNzZXQoJHRpbWVvdXQpKSB7CiAgICAgICAgICAgICRjbGllbnRPcHRpb25zWyd0aW1lb3V0J10gPSAkdGltZW91dDsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmNsaWVudCA9IG5ldyBDbGllbnQoJGNsaWVudE9wdGlvbnMpOwogICAgfQoKICAgIC8qKgogICAgICogU2VuZCBhIG5vdGlmaWNhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGVuZHBvaW50CiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHBheWxvYWQgICAgICAgSWYgeW91IHdhbnQgdG8gc2VuZCBhbiBhcnJheSwganNvbl9lbmNvZGUgaXQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkdXNlclB1YmxpY0tleQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICR1c2VyQXV0aFRva2VuCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgJGZsdXNoICAgICAgICAgSWYgeW91IHdhbnQgdG8gZmx1c2ggZGlyZWN0bHkgKHVzdWFsbHkgd2hlbiB5b3Ugc2VuZCBvbmx5IG9uZSBub3RpZmljYXRpb24pCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgJG9wdGlvbnMgICAgICAgQXJyYXkgd2l0aCBzZXZlcmFsIG9wdGlvbnMgdGllZCB0byB0aGlzIG5vdGlmaWNhdGlvbi4gSWYgbm90IHNldCwgd2lsbCB1c2UgdGhlIGRlZmF1bHQgb3B0aW9ucyB0aGF0IHlvdSBjYW4gc2V0IGluIHRoZSBXZWJQdXNoIG9iamVjdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICRhdXRoICAgICAgICAgIFVzZSB0aGlzIGF1dGggZGV0YWlscyBpbnN0ZWFkIG9mIHdoYXQgeW91IHByb3ZpZGVkIHdoZW4gY3JlYXRpbmcgV2ViUHVzaAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8Ym9vbCBSZXR1cm4gYW4gYXJyYXkgb2YgaW5mb3JtYXRpb24gaWYgJGZsdXNoIGlzIHNldCB0byB0cnVlIGFuZCB0aGUgcXVldWVkIHJlcXVlc3RzIGhhcyBmYWlsZWQuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgRWxzZSByZXR1cm4gdHJ1ZQogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kTm90aWZpY2F0aW9uKCRlbmRwb2ludCwgJHBheWxvYWQgPSBudWxsLCAkdXNlclB1YmxpY0tleSA9IG51bGwsICR1c2VyQXV0aFRva2VuID0gbnVsbCwgJGZsdXNoID0gZmFsc2UsICRvcHRpb25zID0gYXJyYXkoKSwgJGF1dGggPSBhcnJheSgpKQogICAgewogICAgICAgIGlmIChpc3NldCgkcGF5bG9hZCkpIHsKICAgICAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRwYXlsb2FkKSA+IEVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignU2l6ZSBvZiBwYXlsb2FkIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAnLkVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSC4nIG9jdGV0cy4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBheWxvYWQgPSBFbmNyeXB0aW9uOjpwYWRQYXlsb2FkKCRwYXlsb2FkLCAkdGhpcy0+YXV0b21hdGljUGFkZGluZyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnVkFQSUQnLCAkYXV0aCkpIHsKICAgICAgICAgICAgJGF1dGhbJ1ZBUElEJ10gPSBWQVBJRDo6dmFsaWRhdGUoJGF1dGhbJ1ZBUElEJ10pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm5vdGlmaWNhdGlvbnNbXSA9IG5ldyBOb3RpZmljYXRpb24oJGVuZHBvaW50LCAkcGF5bG9hZCwgJHVzZXJQdWJsaWNLZXksICR1c2VyQXV0aFRva2VuLCAkb3B0aW9ucywgJGF1dGgpOwoKICAgICAgICBpZiAoJGZsdXNoKSB7CiAgICAgICAgICAgICRyZXMgPSAkdGhpcy0+Zmx1c2goKTsKCiAgICAgICAgICAgIC8vIGlmIHRoZXJlIGhhcyBiZWVuIGEgcHJvYmxlbSB3aXRoIGF0IGxlYXN0IG9uZSBub3RpZmljYXRpb24KICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRyZXMpKSB7CiAgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSB3YXMgb25seSBvbmUgbm90aWZpY2F0aW9uLCByZXR1cm4gdGhlIGluZm9ybWF0aW9uIGRpcmVjdGx5CiAgICAgICAgICAgICAgICBpZiAoY291bnQoJHJlcykgPT09IDEpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc1swXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHJlczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEZsdXNoIG5vdGlmaWNhdGlvbnMuIFRyaWdnZXJzIHRoZSByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRiYXRjaFNpemUgRGVmYXVsdHMgdGhlIHZhbHVlIGRlZmluZWQgaW4gZGVmYXVsdE9wdGlvbnMgZHVyaW5nIGluc3RhbmNpYXRpb24gKHdoaWNoIGRlZmF1bHRzIHRvIDEwMDApLgogICAgICogQHJldHVybiBhcnJheXxib29sIElmIHRoZXJlIGFyZSBubyBlcnJvcnMsIHJldHVybiB0cnVlLgogICAgICogICAgICAgICAgICAgICAgICAgIElmIHRoZXJlIHdlcmUgbm8gbm90aWZpY2F0aW9ucyBpbiB0aGUgcXVldWUsIHJldHVybiBmYWxzZS4KICAgICAqIEVsc2UgcmV0dXJuIGFuIGFycmF5IG9mIGluZm9ybWF0aW9uIGZvciBlYWNoIG5vdGlmaWNhdGlvbiBzZW50IChzdWNjZXNzLCBzdGF0dXNDb2RlLCBoZWFkZXJzLCBjb250ZW50KQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZmx1c2goJGJhdGNoU2l6ZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5ub3RpZmljYXRpb25zKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzc2V0KCRiYXRjaFNpemUpKSB7CiAgICAgICAgICAgICRiYXRjaFNpemUgPSAkdGhpcy0+ZGVmYXVsdE9wdGlvbnNbJ2JhdGNoU2l6ZSddOwogICAgICAgIH0KCiAgICAgICAgJGJhdGNoZXMgPSBhcnJheV9jaHVuaygkdGhpcy0+bm90aWZpY2F0aW9ucywgJGJhdGNoU2l6ZSk7CiAgICAgICAgJHJldHVybiA9IGFycmF5KCk7CiAgICAgICAgJGNvbXBsZXRlU3VjY2VzcyA9IHRydWU7CiAgICAgICAgZm9yZWFjaCAoJGJhdGNoZXMgYXMgJGJhdGNoKSB7CiAgICAgICAgICAgIC8vIGZvciBlYWNoIGVuZHBvaW50IHNlcnZlciB0eXBlCiAgICAgICAgICAgICRyZXF1ZXN0cyA9ICR0aGlzLT5wcmVwYXJlKCRiYXRjaCk7CiAgICAgICAgICAgICRwcm9taXNlcyA9IFtdOwogICAgICAgICAgICBmb3JlYWNoICgkcmVxdWVzdHMgYXMgJHJlcXVlc3QpIHsKICAgICAgICAgICAgICAgICRwcm9taXNlc1tdID0gJHRoaXMtPmNsaWVudC0+c2VuZEFzeW5jKCRyZXF1ZXN0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkcmVzdWx0cyA9IFByb21pc2Vcc2V0dGxlKCRwcm9taXNlcyktPndhaXQoKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRyZXN1bHRzIGFzICRyZXN1bHQpIHsKICAgICAgICAgICAgICAgIGlmICgkcmVzdWx0WydzdGF0ZSddID09PSAicmVqZWN0ZWQiKSB7CiAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgUmVxdWVzdEV4Y2VwdGlvbiAkcmVhc29uICoqLwogICAgICAgICAgICAgICAgICAgICRyZWFzb24gPSAkcmVzdWx0WydyZWFzb24nXTsKCiAgICAgICAgICAgICAgICAgICAgJGVycm9yID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyA9PiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZHBvaW50JyA9PiAiIi4kcmVhc29uLT5nZXRSZXF1ZXN0KCktPmdldFVyaSgpLAogICAgICAgICAgICAgICAgICAgICAgICAnbWVzc2FnZScgPT4gJHJlYXNvbi0+Z2V0TWVzc2FnZSgpLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRyZXNwb25zZSA9ICRyZWFzb24tPmdldFJlc3BvbnNlKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRyZXNwb25zZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAkc3RhdHVzQ29kZSA9ICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JbJ3N0YXR1c0NvZGUnXSA9ICRzdGF0dXNDb2RlOwogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JbJ2V4cGlyZWQnXSA9IGluX2FycmF5KCRzdGF0dXNDb2RlLCBhcnJheSg0MDQsIDQxMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JbJ2NvbnRlbnQnXSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwogICAgICAgICAgICAgICAgICAgICAgICAkZXJyb3JbJ2hlYWRlcnMnXSA9ICRyZXNwb25zZS0+Z2V0SGVhZGVycygpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHJldHVybltdID0gJGVycm9yOwogICAgICAgICAgICAgICAgICAgICRjb21wbGV0ZVN1Y2Nlc3MgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHJldHVybltdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICdzdWNjZXNzJyA9PiB0cnVlLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHJlc2V0IHF1ZXVlCiAgICAgICAgJHRoaXMtPm5vdGlmaWNhdGlvbnMgPSBudWxsOwoKICAgICAgICByZXR1cm4gJGNvbXBsZXRlU3VjY2VzcyA/IHRydWUgOiAkcmV0dXJuOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcHJlcGFyZShhcnJheSAkbm90aWZpY2F0aW9ucykKICAgIHsKICAgICAgICAkcmVxdWVzdHMgPSBhcnJheSgpOwogICAgICAgIC8qKiBAdmFyIE5vdGlmaWNhdGlvbiAkbm90aWZpY2F0aW9uICovCiAgICAgICAgZm9yZWFjaCAoJG5vdGlmaWNhdGlvbnMgYXMgJG5vdGlmaWNhdGlvbikgewogICAgICAgICAgICAkZW5kcG9pbnQgPSAkbm90aWZpY2F0aW9uLT5nZXRFbmRwb2ludCgpOwogICAgICAgICAgICAkcGF5bG9hZCA9ICRub3RpZmljYXRpb24tPmdldFBheWxvYWQoKTsKICAgICAgICAgICAgJHVzZXJQdWJsaWNLZXkgPSAkbm90aWZpY2F0aW9uLT5nZXRVc2VyUHVibGljS2V5KCk7CiAgICAgICAgICAgICR1c2VyQXV0aFRva2VuID0gJG5vdGlmaWNhdGlvbi0+Z2V0VXNlckF1dGhUb2tlbigpOwogICAgICAgICAgICAkb3B0aW9ucyA9ICRub3RpZmljYXRpb24tPmdldE9wdGlvbnMoJHRoaXMtPmdldERlZmF1bHRPcHRpb25zKCkpOwogICAgICAgICAgICAkYXV0aCA9ICRub3RpZmljYXRpb24tPmdldEF1dGgoJHRoaXMtPmF1dGgpOwoKICAgICAgICAgICAgaWYgKGlzc2V0KCRwYXlsb2FkKSAmJiBpc3NldCgkdXNlclB1YmxpY0tleSkgJiYgaXNzZXQoJHVzZXJBdXRoVG9rZW4pKSB7CiAgICAgICAgICAgICAgICAkZW5jcnlwdGVkID0gRW5jcnlwdGlvbjo6ZW5jcnlwdCgkcGF5bG9hZCwgJHVzZXJQdWJsaWNLZXksICR1c2VyQXV0aFRva2VuKTsKCiAgICAgICAgICAgICAgICAkaGVhZGVycyA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aCcgPT4gVXRpbHM6OnNhZmVTdHJsZW4oJGVuY3J5cHRlZFsnY2lwaGVyVGV4dCddKSwKICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1FbmNvZGluZycgPT4gJ2Flc2djbScsCiAgICAgICAgICAgICAgICAgICAgJ0VuY3J5cHRpb24nID0+ICdzYWx0PScuJGVuY3J5cHRlZFsnc2FsdCddLAogICAgICAgICAgICAgICAgICAgICdDcnlwdG8tS2V5JyA9PiAnZGg9Jy4kZW5jcnlwdGVkWydsb2NhbFB1YmxpY0tleSddLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkY29udGVudCA9ICRlbmNyeXB0ZWRbJ2NpcGhlclRleHQnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtTGVuZ3RoJyA9PiAwLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkY29udGVudCA9ICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkaGVhZGVyc1snVFRMJ10gPSAkb3B0aW9uc1snVFRMJ107CgogICAgICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3VyZ2VuY3knXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWydVcmdlbmN5J10gPSAkb3B0aW9uc1sndXJnZW5jeSddOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3RvcGljJ10pKSB7CiAgICAgICAgICAgICAgICAkaGVhZGVyc1snVG9waWMnXSA9ICRvcHRpb25zWyd0b3BpYyddOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpZiBHQ00KICAgICAgICAgICAgaWYgKHN1YnN0cigkZW5kcG9pbnQsIDAsIHN0cmxlbihzZWxmOjpHQ01fVVJMKSkgPT09IHNlbGY6OkdDTV9VUkwpIHsKICAgICAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdHQ00nLCAkYXV0aCkpIHsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gJ2tleT0nLiRhdXRoWydHQ00nXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignTm8gR0NNIEFQSSBLZXkgc3BlY2lmaWVkLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGlmIFZBUElEIChHQ00gZG9lc24ndCBzdXBwb3J0IGl0IGJ1dCBGQ00gZG9lcykKICAgICAgICAgICAgZWxzZWlmIChhcnJheV9rZXlfZXhpc3RzKCdWQVBJRCcsICRhdXRoKSkgewogICAgICAgICAgICAgICAgJHZhcGlkID0gJGF1dGhbJ1ZBUElEJ107CgogICAgICAgICAgICAgICAgJGF1ZGllbmNlID0gcGFyc2VfdXJsKCRlbmRwb2ludCwgUEhQX1VSTF9TQ0hFTUUpLic6Ly8nLnBhcnNlX3VybCgkZW5kcG9pbnQsIFBIUF9VUkxfSE9TVCk7CgogICAgICAgICAgICAgICAgaWYgKCFwYXJzZV91cmwoJGF1ZGllbmNlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0F1ZGllbmNlICInLiRhdWRpZW5jZS4nIiIgY291bGQgbm90IGJlIGdlbmVyYXRlZC4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkdmFwaWRIZWFkZXJzID0gVkFQSUQ6OmdldFZhcGlkSGVhZGVycygkYXVkaWVuY2UsICR2YXBpZFsnc3ViamVjdCddLCAkdmFwaWRbJ3B1YmxpY0tleSddLCAkdmFwaWRbJ3ByaXZhdGVLZXknXSk7CgogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICR2YXBpZEhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXTsKCiAgICAgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnQ3J5cHRvLUtleScsICRoZWFkZXJzKSkgewogICAgICAgICAgICAgICAgICAgIC8vIEZVVFVSRSByZXBsYWNlICc7JyB3aXRoICcsJwogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWydDcnlwdG8tS2V5J10gLj0gJzsnLiR2YXBpZEhlYWRlcnNbJ0NyeXB0by1LZXknXTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NyeXB0by1LZXknXSA9ICR2YXBpZEhlYWRlcnNbJ0NyeXB0by1LZXknXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlcXVlc3RzW10gPSBuZXcgUmVxdWVzdCgnUE9TVCcsICRlbmRwb2ludCwgJGhlYWRlcnMsICRjb250ZW50KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVxdWVzdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzQXV0b21hdGljUGFkZGluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hdXRvbWF0aWNQYWRkaW5nICE9PSBmYWxzZSAmJiAkdGhpcy0+YXV0b21hdGljUGFkZGluZyAhPT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRvbWF0aWNQYWRkaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmF1dG9tYXRpY1BhZGRpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRhdXRvbWF0aWNQYWRkaW5nIE1heCBwYWRkaW5nIGxlbmd0aAogICAgICoKICAgICAqIEByZXR1cm4gV2ViUHVzaAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0QXV0b21hdGljUGFkZGluZygkYXV0b21hdGljUGFkZGluZykKICAgIHsKICAgICAgICBpZiAoJGF1dG9tYXRpY1BhZGRpbmcgPiBFbmNyeXB0aW9uOjpNQVhfUEFZTE9BRF9MRU5HVEgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ0F1dG9tYXRpYyBwYWRkaW5nIGlzIHRvbyBsYXJnZS4gTWF4IGlzICcuRW5jcnlwdGlvbjo6TUFYX1BBWUxPQURfTEVOR1RILicuIFJlY29tbWVuZGVkIG1heCBpcyAnLkVuY3J5cHRpb246Ok1BWF9DT01QQVRJQklMSVRZX1BBWUxPQURfTEVOR1RILicgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucyAoc2VlIFJFQURNRSkuJyk7CiAgICAgICAgfSBlbHNlaWYgKCRhdXRvbWF0aWNQYWRkaW5nIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignUGFkZGluZyBsZW5ndGggc2hvdWxkIGJlIHBvc2l0aXZlIG9yIHplcm8uJyk7CiAgICAgICAgfSBlbHNlaWYgKCRhdXRvbWF0aWNQYWRkaW5nID09PSB0cnVlKSB7CiAgICAgICAgICAgICR0aGlzLT5hdXRvbWF0aWNQYWRkaW5nID0gRW5jcnlwdGlvbjo6TUFYX0NPTVBBVElCSUxJVFlfUEFZTE9BRF9MRU5HVEg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmF1dG9tYXRpY1BhZGRpbmcgPSAkYXV0b21hdGljUGFkZGluZzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERlZmF1bHRPcHRpb25zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRlZmF1bHRPcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkZWZhdWx0T3B0aW9ucyBLZXlzICdUVEwnIChUaW1lIFRvIExpdmUsIGRlZmF1bHRzIDQgd2Vla3MpLCAndXJnZW5jeScsICd0b3BpYycsICdiYXRjaFNpemUnCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhhcnJheSAkZGVmYXVsdE9wdGlvbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWydUVEwnXSA9IGFycmF5X2tleV9leGlzdHMoJ1RUTCcsICRkZWZhdWx0T3B0aW9ucykgPyAkZGVmYXVsdE9wdGlvbnNbJ1RUTCddIDogMjQxOTIwMDsKICAgICAgICAkdGhpcy0+ZGVmYXVsdE9wdGlvbnNbJ3VyZ2VuY3knXSA9IGFycmF5X2tleV9leGlzdHMoJ3VyZ2VuY3knLCAkZGVmYXVsdE9wdGlvbnMpID8gJGRlZmF1bHRPcHRpb25zWyd1cmdlbmN5J10gOiBudWxsOwogICAgICAgICR0aGlzLT5kZWZhdWx0T3B0aW9uc1sndG9waWMnXSA9IGFycmF5X2tleV9leGlzdHMoJ3RvcGljJywgJGRlZmF1bHRPcHRpb25zKSA/ICRkZWZhdWx0T3B0aW9uc1sndG9waWMnXSA6IG51bGw7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWydiYXRjaFNpemUnXSA9IGFycmF5X2tleV9leGlzdHMoJ2JhdGNoU2l6ZScsICRkZWZhdWx0T3B0aW9ucykgPyAkZGVmYXVsdE9wdGlvbnNbJ2JhdGNoU2l6ZSddIDogMTAwMDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/tests/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/tests/EncryptionTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgp1c2UgTWluaXNobGlua1xXZWJQdXNoXEVuY3J5cHRpb247CnVzZSBNaW5pc2hsaW5rXFdlYlB1c2hcVXRpbHM7CgpjbGFzcyBFbmNyeXB0aW9uVGVzdCBleHRlbmRzIFBIUFVuaXRfRnJhbWV3b3JrX1Rlc3RDYXNlCnsKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBwYXlsb2FkUHJvdmlkZXIKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXlsb2FkCiAgICAgKiBAcGFyYW0gaW50ZWdlciAkbWF4TGVuZ3RoVG9QYWQKICAgICAqIEBwYXJhbSBpbnRlZ2VyICRleHBlY3RlZFJlc0xlbmd0aAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFBhZFBheWxvYWQoJHBheWxvYWQsICRtYXhMZW5ndGhUb1BhZCwgJGV4cGVjdGVkUmVzTGVuZ3RoKQogICAgewogICAgICAgICRyZXMgPSBFbmNyeXB0aW9uOjpwYWRQYXlsb2FkKCRwYXlsb2FkLCAkbWF4TGVuZ3RoVG9QYWQpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0Q29udGFpbnMoJ3Rlc3QnLCAkcmVzKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFJlc0xlbmd0aCwgVXRpbHM6OnNhZmVTdHJsZW4oJHJlcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBwYXlsb2FkUHJvdmlkZXIoKQogICAgewogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgYXJyYXkoJ3Rlc3TDqScsIDAsIDgpLAogICAgICAgICAgICBhcnJheSgndGVzdMOpJywgMSwgOCksCiAgICAgICAgICAgIGFycmF5KCd0ZXN0w6knLCA2LCA4KSwKICAgICAgICAgICAgYXJyYXkoJ3Rlc3TDqScsIDcsIDkpLAogICAgICAgICAgICBhcnJheSgndGVzdMOpJywgRW5jcnlwdGlvbjo6TUFYX0NPTVBBVElCSUxJVFlfUEFZTE9BRF9MRU5HVEgsIEVuY3J5cHRpb246Ok1BWF9DT01QQVRJQklMSVRZX1BBWUxPQURfTEVOR1RIICsgMiksCiAgICAgICAgICAgIGFycmF5KCd0ZXN0w6knLCBFbmNyeXB0aW9uOjpNQVhfUEFZTE9BRF9MRU5HVEgsIEVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSCArIDIpLAogICAgICAgICAgICBhcnJheShzdHJfcmVwZWF0KCd0ZXN0JywgMTAxOSkuJ3RlJywgRW5jcnlwdGlvbjo6TUFYX1BBWUxPQURfTEVOR1RILCBFbmNyeXB0aW9uOjpNQVhfUEFZTE9BRF9MRU5HVEggKyAyKSwKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/tests/PushServiceTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgp1c2UgTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2g7CgpjbGFzcyBQdXNoU2VydmljZVRlc3QgZXh0ZW5kcyBQSFBVbml0X0ZyYW1ld29ya19UZXN0Q2FzZQp7CiAgICBwcml2YXRlIHN0YXRpYyAkdGltZW91dCA9IDMwOwogICAgcHJpdmF0ZSBzdGF0aWMgJHBvcnROdW1iZXIgPSA5MDEyOwogICAgcHJpdmF0ZSBzdGF0aWMgJHRlc3RTdWl0ZUlkOwogICAgcHJpdmF0ZSBzdGF0aWMgJHRlc3RTZXJ2aWNlVXJsOwogICAgcHJpdmF0ZSBzdGF0aWMgJGdjbVNlbmRlcklkID0gJzc1OTA3MTY5MDc1MCc7CiAgICBwcml2YXRlIHN0YXRpYyAkZ2NtQXBpS2V5ID0gJ0FJemFTeUJBVTBWZlhvc2t4VVNnODFLNVZnTGd3YmxIYlpXZTZ0QSc7CiAgICBwcml2YXRlIHN0YXRpYyAkdmFwaWRLZXlzID0gYXJyYXkoCiAgICAgICAgJ3N1YmplY3QnID0+ICdodHRwOi8vdGVzdC5jb20nLAogICAgICAgICdwdWJsaWNLZXknID0+ICdCQTZqdmszNGs2WWpFbEhRNlMwb1p3bXJzcUhkQ05hanhjb2Q2S0puSTc3RGFnaWtmYi0tT19rWVhjUjJlZmxSejZsM1BjSTJyOGZQQ0gzQkVsTFFIRGsnLAogICAgICAgICdwcml2YXRlS2V5JyA9PiAnLTNDZGhGT3Fqeml4Z0FiVVNhMFp2OXppLWR3RFZtV083NjcyYUJ4U0ZQUScsCiAgICApOwoKICAgIC8qKiBAdmFyIFdlYlB1c2ggV2ViUHVzaCB3aXRoIGNvcnJlY3QgYXBpIGtleXMgKi8KICAgIHByaXZhdGUgJHdlYlB1c2g7CgogICAgLyoqCiAgICAgKiBUaGlzIGNoZWNrIGZvcmNlcyB0aGVzZSB0ZXN0cyB0byBvbmx5IHJ1biBvbiBUcmF2aXMuCiAgICAgKiBJZiB3ZSBjYW4gcmVsaWFibHkgc3RhcnQgYW5kIHN0b3Agd2ViLXB1c2gtdGVzdGluZy1zZXJ2aWNlIGFuZAogICAgICogZGV0ZWN0IGN1cnJlbnQgT1MsIHdlIGNhbiBwcm9iYWJseSBydW4gdGhpcyBhdXRvbWF0aWNhbGx5CiAgICAgKiBmb3IgTGludXggYW5kIE9TIFggYXQgYSBsYXRlciBkYXRlLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tSZXF1aXJlbWVudHMoKQogICAgewogICAgICAgIHBhcmVudDo6Y2hlY2tSZXF1aXJlbWVudHMoKTsKCiAgICAgICAgaWYgKCEoZ2V0ZW52KCdUUkFWSVMnKSB8fCBnZXRlbnYoJ0NJJykpKSB7CiAgICAgICAgICAgICR0aGlzLT5tYXJrVGVzdFNraXBwZWQoJ1RoaXMgdGVzdCBkb2VzIG5vdCBydW4gb24gVHJhdmlzLicpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldFVwQmVmb3JlQ2xhc3MoKQogICAgewogICAgICAgIHNlbGY6OiR0ZXN0U2VydmljZVVybCA9ICdodHRwOi8vbG9jYWxob3N0Oicuc2VsZjo6JHBvcnROdW1iZXI7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFVwKCkKICAgIHsKICAgICAgICAkc3RhcnRBcGlDdXJsID0gY3VybF9pbml0KHNlbGY6OiR0ZXN0U2VydmljZVVybC4nL2FwaS9zdGFydC10ZXN0LXN1aXRlLycpOwogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRzdGFydEFwaUN1cmwsIGFycmF5KAogICAgICAgICAgICBDVVJMT1BUX1BPU1QgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTE9QVF9QT1NURklFTERTID0+IGFycmF5KCksCiAgICAgICAgICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTE9QVF9USU1FT1VUID0+IHNlbGY6OiR0aW1lb3V0LAogICAgICAgICkpOwoKICAgICAgICAkcGFyc2VkUmVzcCA9ICR0aGlzLT5nZXRSZXNwb25zZSgkc3RhcnRBcGlDdXJsKTsKICAgICAgICBzZWxmOjokdGVzdFN1aXRlSWQgPSAkcGFyc2VkUmVzcC0+eydkYXRhJ30tPnsndGVzdFN1aXRlSWQnfTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYnJvd3NlclByb3ZpZGVyKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgIC8vIFdlYiBQdXNoCiAgICAgICAgICAgIGFycmF5KCdmaXJlZm94JywgJ3N0YWJsZScsIGFycmF5KCkpLAogICAgICAgICAgICBhcnJheSgnZmlyZWZveCcsICdiZXRhJywgYXJyYXkoKSksCgogICAgICAgICAgICAvLyBXZWIgUHVzaCArIEdDTQogICAgICAgICAgICBhcnJheSgnY2hyb21lJywgJ3N0YWJsZScsIGFycmF5KCdHQ00nID0+IHNlbGY6OiRnY21BcGlLZXkpKSwKICAgICAgICAgICAgYXJyYXkoJ2Nocm9tZScsICdiZXRhJywgYXJyYXkoJ0dDTScgPT4gc2VsZjo6JGdjbUFwaUtleSkpLAoKICAgICAgICAgICAgYXJyYXkoJ2ZpcmVmb3gnLCAnc3RhYmxlJywgYXJyYXkoJ0dDTScgPT4gc2VsZjo6JGdjbUFwaUtleSkpLAogICAgICAgICAgICBhcnJheSgnZmlyZWZveCcsICdiZXRhJywgYXJyYXkoJ0dDTScgPT4gc2VsZjo6JGdjbUFwaUtleSkpLAoKICAgICAgICAgICAgLy8gV2ViIFB1c2ggKyBWQVBJRAogICAgICAgICAgICBhcnJheSgnY2hyb21lJywgJ3N0YWJsZScsIGFycmF5KCdWQVBJRCcgPT4gc2VsZjo6JHZhcGlkS2V5cykpLAogICAgICAgICAgICBhcnJheSgnY2hyb21lJywgJ2JldGEnLCBhcnJheSgnVkFQSUQnID0+IHNlbGY6OiR2YXBpZEtleXMpKSwKCiAgICAgICAgICAgIGFycmF5KCdmaXJlZm94JywgJ3N0YWJsZScsIGFycmF5KCdWQVBJRCcgPT4gc2VsZjo6JHZhcGlkS2V5cykpLAogICAgICAgICAgICBhcnJheSgnZmlyZWZveCcsICdiZXRhJywgYXJyYXkoJ1ZBUElEJyA9PiBzZWxmOjokdmFwaWRLZXlzKSksCgogICAgICAgICAgICAvLyBXZWIgUHVzaCArIEdDTSArIFZBUElECiAgICAgICAgICAgIGFycmF5KCdjaHJvbWUnLCAnc3RhYmxlJywgYXJyYXkoJ0dDTScgPT4gc2VsZjo6JGdjbUFwaUtleSwgJ1ZBUElEJyA9PiBzZWxmOjokdmFwaWRLZXlzKSksCiAgICAgICAgICAgIGFycmF5KCdjaHJvbWUnLCAnYmV0YScsIGFycmF5KCdHQ00nID0+IHNlbGY6OiRnY21BcGlLZXksICdWQVBJRCcgPT4gc2VsZjo6JHZhcGlkS2V5cykpLAoKICAgICAgICAgICAgYXJyYXkoJ2ZpcmVmb3gnLCAnc3RhYmxlJywgYXJyYXkoJ0dDTScgPT4gc2VsZjo6JGdjbUFwaUtleSwgJ1ZBUElEJyA9PiBzZWxmOjokdmFwaWRLZXlzKSksCiAgICAgICAgICAgIGFycmF5KCdmaXJlZm94JywgJ2JldGEnLCBhcnJheSgnR0NNJyA9PiBzZWxmOjokZ2NtQXBpS2V5LCAnVkFQSUQnID0+IHNlbGY6OiR2YXBpZEtleXMpKSwKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogU2VsZW5pdW0gdGVzdHMgYXJlIGZsYWtleSBzbyBhZGQgcmV0cmllcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJldHJ5VGVzdCgkcmV0cnlDb3VudCwgJHRlc3QpCiAgICB7CiAgICAgICAgLy8ganVzdCBsaWtlIGFib3ZlIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGFubm90YXRpb24KICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkcmV0cnlDb3VudDsgJGkrKykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJHRlc3QoKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgLy8gbGFzdCBvbmUgdGhyb3duIGJlbG93CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCRlKSkgewogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGJyb3dzZXJQcm92aWRlcgogICAgICogUnVuIGludGVncmF0aW9uIHRlc3RzIHdpdGggYnJvd3NlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RCcm93c2VycygkYnJvd3NlcklkLCAkYnJvd3NlclZlcnNpb24sICRvcHRpb25zKQogICAgewogICAgICAgICR0aGlzLT5yZXRyeVRlc3QoNCwgJHRoaXMtPmNyZWF0ZUNsb3N1cmVUZXN0KCRicm93c2VySWQsICRicm93c2VyVmVyc2lvbiwgJG9wdGlvbnMpKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlQ2xvc3VyZVRlc3QoJGJyb3dzZXJJZCwgJGJyb3dzZXJWZXJzaW9uLCAkb3B0aW9ucykKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgdXNlICgkYnJvd3NlcklkLCAkYnJvd3NlclZlcnNpb24sICRvcHRpb25zKSB7CiAgICAgICAgICAgICR0aGlzLT53ZWJQdXNoID0gbmV3IFdlYlB1c2goJG9wdGlvbnMpOwogICAgICAgICAgICAkdGhpcy0+d2ViUHVzaC0+c2V0QXV0b21hdGljUGFkZGluZyhmYWxzZSk7CgogICAgICAgICAgICAkc3Vic2NyaXB0aW9uUGFyYW1ldGVycyA9IGFycmF5KAogICAgICAgICAgICAgICAgJ3Rlc3RTdWl0ZUlkJyA9PiBzZWxmOjokdGVzdFN1aXRlSWQsCiAgICAgICAgICAgICAgICAnYnJvd3Nlck5hbWUnID0+ICRicm93c2VySWQsCiAgICAgICAgICAgICAgICAnYnJvd3NlclZlcnNpb24nID0+ICRicm93c2VyVmVyc2lvbiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdHQ00nLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgICAgICRzdWJzY3JpcHRpb25QYXJhbWV0ZXJzWydnY21TZW5kZXJJZCddID0gc2VsZjo6JGdjbVNlbmRlcklkOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnVkFQSUQnLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgICAgICRzdWJzY3JpcHRpb25QYXJhbWV0ZXJzWyd2YXBpZFB1YmxpY0tleSddID0gc2VsZjo6JHZhcGlkS2V5c1sncHVibGljS2V5J107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzdWJzY3JpcHRpb25QYXJhbWV0ZXJzID0ganNvbl9lbmNvZGUoJHN1YnNjcmlwdGlvblBhcmFtZXRlcnMpOwoKICAgICAgICAgICAgJGdldFN1YnNjcmlwdGlvbkN1cmwgPSBjdXJsX2luaXQoc2VsZjo6JHRlc3RTZXJ2aWNlVXJsLicvYXBpL2dldC1zdWJzY3JpcHRpb24vJyk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRnZXRTdWJzY3JpcHRpb25DdXJsLCBhcnJheSgKICAgICAgICAgICAgICAgIENVUkxPUFRfUE9TVCA9PiB0cnVlLAogICAgICAgICAgICAgICAgQ1VSTE9QVF9QT1NURklFTERTID0+ICRzdWJzY3JpcHRpb25QYXJhbWV0ZXJzLAogICAgICAgICAgICAgICAgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLAogICAgICAgICAgICAgICAgQ1VSTE9QVF9IVFRQSEVBREVSID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogJy5zdHJsZW4oJHN1YnNjcmlwdGlvblBhcmFtZXRlcnMpLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIENVUkxPUFRfVElNRU9VVCA9PiBzZWxmOjokdGltZW91dCwKICAgICAgICAgICAgKSk7CgogICAgICAgICAgICAkcGFyc2VkUmVzcCA9ICR0aGlzLT5nZXRSZXNwb25zZSgkZ2V0U3Vic2NyaXB0aW9uQ3VybCk7CiAgICAgICAgICAgICR0ZXN0SWQgPSAkcGFyc2VkUmVzcC0+eydkYXRhJ30tPnsndGVzdElkJ307CiAgICAgICAgICAgICRzdWJzY3JpcHRpb24gPSAkcGFyc2VkUmVzcC0+eydkYXRhJ30tPnsnc3Vic2NyaXB0aW9uJ307CiAgICAgICAgICAgICRlbmRwb2ludCA9ICRzdWJzY3JpcHRpb24tPnsnZW5kcG9pbnQnfTsKICAgICAgICAgICAgJGtleXMgPSAkc3Vic2NyaXB0aW9uLT57J2tleXMnfTsKICAgICAgICAgICAgJGF1dGggPSAka2V5cy0+eydhdXRoJ307CiAgICAgICAgICAgICRwMjU2ZGggPSAka2V5cy0+eydwMjU2ZGgnfTsKCiAgICAgICAgICAgICRwYXlsb2FkID0gJ2hlbGxvJzsKICAgICAgICAgICAgJGdldE5vdGlmaWNhdGlvbkN1cmwgPSBudWxsOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJHNlbmRSZXNwID0gJHRoaXMtPndlYlB1c2gtPnNlbmROb3RpZmljYXRpb24oJGVuZHBvaW50LCAkcGF5bG9hZCwgJHAyNTZkaCwgJGF1dGgsIHRydWUpOwogICAgICAgICAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHNlbmRSZXNwKTsKCiAgICAgICAgICAgICAgICAkZGF0YVN0cmluZyA9IGpzb25fZW5jb2RlKGFycmF5KAogICAgICAgICAgICAgICAgICAgICd0ZXN0U3VpdGVJZCcgPT4gc2VsZjo6JHRlc3RTdWl0ZUlkLAogICAgICAgICAgICAgICAgICAgICd0ZXN0SWQnID0+ICR0ZXN0SWQsCiAgICAgICAgICAgICAgICApKTsKCiAgICAgICAgICAgICAgICAkZ2V0Tm90aWZpY2F0aW9uQ3VybCA9IGN1cmxfaW5pdChzZWxmOjokdGVzdFNlcnZpY2VVcmwuJy9hcGkvZ2V0LW5vdGlmaWNhdGlvbi1zdGF0dXMvJyk7CiAgICAgICAgICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkZ2V0Tm90aWZpY2F0aW9uQ3VybCwgYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgQ1VSTE9QVF9QT1NUID0+IHRydWUsCiAgICAgICAgICAgICAgICAgICAgQ1VSTE9QVF9QT1NURklFTERTID0+ICRkYXRhU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICAgICBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6ICcuc3RybGVuKCRkYXRhU3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIENVUkxPUFRfVElNRU9VVCA9PiBzZWxmOjokdGltZW91dCwKICAgICAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgICAgICRwYXJzZWRSZXNwID0gJHRoaXMtPmdldFJlc3BvbnNlKCRnZXRTdWJzY3JpcHRpb25DdXJsKTsKCiAgICAgICAgICAgICAgICBpZiAoIXByb3BlcnR5X2V4aXN0cygkcGFyc2VkUmVzcC0+eydkYXRhJ30sICdtZXNzYWdlcycpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignd2ViLXB1c2gtdGVzdGluZy1zZXJ2aWNlIGVycm9yLCBubyBtZXNzYWdlczogJy5qc29uX2VuY29kZSgkcGFyc2VkUmVzcCkpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRtZXNzYWdlcyA9ICRwYXJzZWRSZXNwLT57J2RhdGEnfS0+eydtZXNzYWdlcyd9OwogICAgICAgICAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjb3VudCgkbWVzc2FnZXMpLCAxKTsKICAgICAgICAgICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG1lc3NhZ2VzWzBdLCAkcGF5bG9hZCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgaWYgKHN0cnBvcygkZW5kcG9pbnQsICdodHRwczovL2FuZHJvaWQuZ29vZ2xlYXBpcy5jb20vZ2NtL3NlbmQnKSA9PT0gMAogICAgICAgICAgICAgICAgICAgICYmICFhcnJheV9rZXlfZXhpc3RzKCdHQ00nLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGUtPmdldE1lc3NhZ2UoKSAhPT0gJ05vIEdDTSBBUEkgS2V5IHNwZWNpZmllZC4nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGUtPmdldE1lc3NhZ2UoKSwgJ05vIEdDTSBBUEkgS2V5IHNwZWNpZmllZC4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHRlYXJEb3duKCkKICAgIHsKICAgICAgICAkZGF0YVN0cmluZyA9ICd7ICJ0ZXN0U3VpdGVJZCI6ICcuc2VsZjo6JHRlc3RTdWl0ZUlkLicgfSc7CiAgICAgICAgJGN1cmwgPSBjdXJsX2luaXQoc2VsZjo6JHRlc3RTZXJ2aWNlVXJsLicvYXBpL2VuZC10ZXN0LXN1aXRlLycpOwogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjdXJsLCBhcnJheSgKICAgICAgICAgICAgQ1VSTE9QVF9QT1NUID0+IHRydWUsCiAgICAgICAgICAgIENVUkxPUFRfUE9TVEZJRUxEUyA9PiAkZGF0YVN0cmluZywKICAgICAgICAgICAgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLAogICAgICAgICAgICBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogJy5zdHJsZW4oJGRhdGFTdHJpbmcpLAogICAgICAgICAgICApLAogICAgICAgICAgICBDVVJMT1BUX1RJTUVPVVQgPT4gc2VsZjo6JHRpbWVvdXQsCiAgICAgICAgKSk7CiAgICAgICAgJHRoaXMtPmdldFJlc3BvbnNlKCRjdXJsKTsKICAgICAgICBzZWxmOjokdGVzdFN1aXRlSWQgPSBudWxsOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGVhckRvd25BZnRlckNsYXNzKCkKICAgIHsKICAgICAgICBleGVjKCd3ZWItcHVzaC10ZXN0aW5nLXNlcnZpY2Ugc3RvcCBwaHB1bml0Jyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRSZXNwb25zZSgkY2gpCiAgICB7CiAgICAgICAgJHJlc3AgPSBjdXJsX2V4ZWMoJGNoKTsKCiAgICAgICAgaWYgKCEkcmVzcCkgewogICAgICAgICAgICAkZXJyb3IgPSAnQ3VybCBlcnJvcjogbicuY3VybF9lcnJubygkY2gpLicgLSAnLmN1cmxfZXJyb3IoJGNoKTsKICAgICAgICAgICAgY3VybF9jbG9zZSgkY2gpOwogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCRlcnJvcik7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkUmVzcCA9IGpzb25fZGVjb2RlKCRyZXNwKTsKCiAgICAgICAgaWYgKCFwcm9wZXJ0eV9leGlzdHMoJHBhcnNlZFJlc3AsICdkYXRhJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignd2ViLXB1c2gtdGVzdGluZy1zZXJ2aWNlIGVycm9yOiAnLiRyZXNwKTsKICAgICAgICB9CgogICAgICAgIC8vIENsb3NlIHJlcXVlc3QgdG8gY2xlYXIgdXAgc29tZSByZXNvdXJjZXMKICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkUmVzcDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/tests/VAPIDTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgp1c2UgTWluaXNobGlua1xXZWJQdXNoXFV0aWxzOwp1c2UgTWluaXNobGlua1xXZWJQdXNoXFZBUElEOwoKY2xhc3MgVkFQSURUZXN0IGV4dGVuZHMgUEhQVW5pdF9GcmFtZXdvcmtfVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHZhcGlkUHJvdmlkZXIoKQogICAgewogICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAnaHR0cDovL3B1c2guY29tJywKICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICdzdWJqZWN0JyA9PiAnaHR0cDovL3Rlc3QuY29tJywKICAgICAgICAgICAgICAgICAgICAncHVibGljS2V5JyA9PiAnQkE2anZrMzRrNllqRWxIUTZTMG9ad21yc3FIZENOYWp4Y29kNktKbkk3N0RhZ2lrZmItLU9fa1lYY1IyZWZsUno2bDNQY0kycjhmUENIM0JFbExRSERrJywKICAgICAgICAgICAgICAgICAgICAncHJpdmF0ZUtleScgPT4gJy0zQ2RoRk9xanppeGdBYlVTYTBadjl6aS1kd0RWbVdPNzY3MmFCeFNGUFEnLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICcxNDc1NDUyMTY1JywKICAgICAgICAgICAgICAgICdXZWJQdXNoIGV5SjBlWEFpT2lKS1YxUWlMQ0poYkdjaU9pSkZVekkxTmlKOS5leUpoZFdRaU9pSm9kSFJ3T2k4dmNIVnphQzVqYjIwaUxDSmxlSEFpT2pFME56VTBOVEl4TmpVc0luTjFZaUk2SW1oMGRIQTZMeTkwWlhOMExtTnZiU0o5LjRGM1pLamVydTRQOVhNMjBySFBOdkdCY3I5enhoejhfVml5TmZlMTFfeGN1eTdBOXk3S2ZFUHQ2eXVOaWt5VzdlVDl6WVlENW1RWnViREdhLTVIMmNBJywKICAgICAgICAgICAgICAgICdwMjU2ZWNkc2E9QkE2anZrMzRrNllqRWxIUTZTMG9ad21yc3FIZENOYWp4Y29kNktKbkk3N0RhZ2lrZmItLU9fa1lYY1IyZWZsUno2bDNQY0kycjhmUENIM0JFbExRSERrJywKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciB2YXBpZFByb3ZpZGVyCiAgICAgKgogICAgICogQHBhcmFtICRhdWRpZW5jZQogICAgICogQHBhcmFtICR2YXBpZAogICAgICogQHBhcmFtICRleHBpcmF0aW9uCiAgICAgKiBAcGFyYW0gJGV4cGVjdGVkQXV0aG9yaXphdGlvbgogICAgICogQHBhcmFtICRleHBlY3RlZENyeXB0b0tleQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFZhcGlkSGVhZGVycygkYXVkaWVuY2UsICR2YXBpZCwgJGV4cGlyYXRpb24sICRleHBlY3RlZEF1dGhvcml6YXRpb24sICRleHBlY3RlZENyeXB0b0tleSkKICAgIHsKICAgICAgICAkdmFwaWQgPSBWQVBJRDo6dmFsaWRhdGUoJHZhcGlkKTsKICAgICAgICAkaGVhZGVycyA9IFZBUElEOjpnZXRWYXBpZEhlYWRlcnMoJGF1ZGllbmNlLCAkdmFwaWRbJ3N1YmplY3QnXSwgJHZhcGlkWydwdWJsaWNLZXknXSwgJHZhcGlkWydwcml2YXRlS2V5J10sICRleHBpcmF0aW9uKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEFycmF5SGFzS2V5KCdBdXRob3JpemF0aW9uJywgJGhlYWRlcnMpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoVXRpbHM6OnNhZmVTdHJsZW4oJGV4cGVjdGVkQXV0aG9yaXphdGlvbiksIFV0aWxzOjpzYWZlU3RybGVuKCRoZWFkZXJzWydBdXRob3JpemF0aW9uJ10pKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCR0aGlzLT5leHBsb2RlQXV0aG9yaXphdGlvbigkZXhwZWN0ZWRBdXRob3JpemF0aW9uKSwgJHRoaXMtPmV4cGxvZGVBdXRob3JpemF0aW9uKCRoZWFkZXJzWydBdXRob3JpemF0aW9uJ10pKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0QXJyYXlIYXNLZXkoJ0NyeXB0by1LZXknLCAkaGVhZGVycyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRDcnlwdG9LZXksICRoZWFkZXJzWydDcnlwdG8tS2V5J10pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZXhwbG9kZUF1dGhvcml6YXRpb24oJGF1dGgpCiAgICB7CiAgICAgICAgJGF1dGggPSBleHBsb2RlKCcuJywgJGF1dGgpOwogICAgICAgIGFycmF5X3BvcCgkYXV0aCk7IC8vIGRlbGV0ZSB0aGUgc2lnbmF0dXJlIHdoaWNoIGNoYW5nZXMgZWFjaCB0aW1lCiAgICAgICAgcmV0dXJuICRhdXRoOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q3JlYXRlVmFwaWRLZXlzKCkKICAgIHsKICAgICAgICAka2V5cyA9IFZBUElEOjpjcmVhdGVWYXBpZEtleXMoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0QXJyYXlIYXNLZXkoJ3B1YmxpY0tleScsICRrZXlzKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0QXJyYXlIYXNLZXkoJ3ByaXZhdGVLZXknLCAka2V5cyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhzdHJsZW4oJGtleXNbJ3B1YmxpY0tleSddKSwgODgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoc3RybGVuKCRrZXlzWydwcml2YXRlS2V5J10pLCA0NCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/tests/WebPushTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJQdXNoIGxpYnJhcnkuCiAqCiAqIChjKSBMb3VpcyBMYWdyYW5nZSA8bGFncmFuZ2UubG91aXNAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgp1c2UgTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2g7CgpjbGFzcyBXZWJQdXNoVGVzdCBleHRlbmRzIFBIUFVuaXRfRnJhbWV3b3JrX1Rlc3RDYXNlCnsKICAgIHByaXZhdGUgc3RhdGljICRlbmRwb2ludHM7CiAgICBwcml2YXRlIHN0YXRpYyAka2V5czsKICAgIHByaXZhdGUgc3RhdGljICR0b2tlbnM7CgogICAgLyoqIEB2YXIgV2ViUHVzaCBXZWJQdXNoIHdpdGggY29ycmVjdCBhcGkga2V5cyAqLwogICAgcHJpdmF0ZSAkd2ViUHVzaDsKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tSZXF1aXJlbWVudHMoKQogICAgewogICAgICAgIHBhcmVudDo6Y2hlY2tSZXF1aXJlbWVudHMoKTsKCiAgICAgICAgaWYgKGdldGVudignVFJBVklTJykgfHwgZ2V0ZW52KCdDSScpKSB7CiAgICAgICAgICAgICR0aGlzLT5tYXJrVGVzdFNraXBwZWQoJ1RoaXMgdGVzdCBkb2VzIG5vdCBydW4gb24gVHJhdmlzLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFnZXRlbnYoJ1NUQU5EQVJEX0VORFBPSU5UJykpIHsKICAgICAgICAgICAgJHRoaXMtPm1hcmtUZXN0U2tpcHBlZCgnTm8gXCdTVEFOREFSRF9FTkRQT0lOVFwnIGZvdW5kIGluIGVudi4nKTsKICAgICAgICB9CgogICAgICAgIGlmICghZ2V0ZW52KCdHQ01fRU5EUE9JTlQnKSkgewogICAgICAgICAgICAkdGhpcy0+bWFya1Rlc3RTa2lwcGVkKCdObyBcJ0dDTV9FTkRQT0lOVFwnIGZvdW5kIGluIGVudi4nKTsKICAgICAgICB9CgogICAgICAgIGlmICghZ2V0ZW52KCdVU0VSX1BVQkxJQ19LRVknKSkgewogICAgICAgICAgICAkdGhpcy0+bWFya1Rlc3RTa2lwcGVkKCdObyBcJ1VTRVJfUFVCTElDX0tFWVwnIGZvdW5kIGluIGVudi4nKTsKICAgICAgICB9CgogICAgICAgIGlmICghZ2V0ZW52KCdHQ01fVVNFUl9QVUJMSUNfS0VZJykpIHsKICAgICAgICAgICAgJHRoaXMtPm1hcmtUZXN0U2tpcHBlZCgnTm8gXCdHQ01fVVNFUl9QVUJMSUNfS0VZXCcgZm91bmQgaW4gZW52LicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFnZXRlbnYoJ1VTRVJfQVVUSF9UT0tFTicpKSB7CiAgICAgICAgICAgICR0aGlzLT5tYXJrVGVzdFNraXBwZWQoJ05vIFwnVVNFUl9QVUJMSUNfS0VZXCcgZm91bmQgaW4gZW52LicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFnZXRlbnYoJ0dDTV9VU0VSX0FVVEhfVE9LRU4nKSkgewogICAgICAgICAgICAkdGhpcy0+bWFya1Rlc3RTa2lwcGVkKCdObyBcJ0dDTV9VU0VSX0FVVEhfVE9LRU5cJyBmb3VuZCBpbiBlbnYuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWdldGVudignVkFQSURfUFVCTElDX0tFWScpKSB7CiAgICAgICAgICAgICR0aGlzLT5tYXJrVGVzdFNraXBwZWQoJ05vIFwnVkFQSURfUFVCTElDX0tFWVwnIGZvdW5kIGluIGVudi4nKTsKICAgICAgICB9CgogICAgICAgIGlmICghZ2V0ZW52KCdWQVBJRF9QUklWQVRFX0tFWScpKSB7CiAgICAgICAgICAgICR0aGlzLT5tYXJrVGVzdFNraXBwZWQoJ05vIFwnVkFQSURfUFJJVkFURV9LRVlcJyBmb3VuZCBpbiBlbnYuJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2V0VXBCZWZvcmVDbGFzcygpCiAgICB7CiAgICAgICAgc2VsZjo6JGVuZHBvaW50cyA9IGFycmF5KAogICAgICAgICAgICAnc3RhbmRhcmQnID0+IGdldGVudignU1RBTkRBUkRfRU5EUE9JTlQnKSwKICAgICAgICAgICAgJ0dDTScgPT4gZ2V0ZW52KCdHQ01fRU5EUE9JTlQnKSwKICAgICAgICApOwoKICAgICAgICBzZWxmOjoka2V5cyA9IGFycmF5KAogICAgICAgICAgICAnc3RhbmRhcmQnID0+IGdldGVudignVVNFUl9QVUJMSUNfS0VZJyksCiAgICAgICAgICAgICdHQ00nID0+IGdldGVudignR0NNX1VTRVJfUFVCTElDX0tFWScpLAogICAgICAgICk7CgogICAgICAgIHNlbGY6OiR0b2tlbnMgPSBhcnJheSgKICAgICAgICAgICAgJ3N0YW5kYXJkJyA9PiBnZXRlbnYoJ1VTRVJfQVVUSF9UT0tFTicpLAogICAgICAgICAgICAnR0NNJyA9PiBnZXRlbnYoJ0dDTV9VU0VSX0FVVEhfVE9LRU4nKSwKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRVcCgpCiAgICB7CiAgICAgICAgJHRoaXMtPndlYlB1c2ggPSBuZXcgV2ViUHVzaChhcnJheSgKICAgICAgICAgICAgJ0dDTScgPT4gZ2V0ZW52KCdHQ01fQVBJX0tFWScpLAogICAgICAgICAgICAnVkFQSUQnID0+IGFycmF5KAogICAgICAgICAgICAgICAgJ3N1YmplY3QnID0+ICdodHRwczovL2dpdGh1Yi5jb20vTWluaXNobGluay93ZWItcHVzaCcsCiAgICAgICAgICAgICAgICAncHVibGljS2V5JyA9PiBnZXRlbnYoJ1ZBUElEX1BVQkxJQ19LRVknKSwKICAgICAgICAgICAgICAgICdwcml2YXRlS2V5JyA9PiBnZXRlbnYoJ1ZBUElEX1BSSVZBVEVfS0VZJyksCiAgICAgICAgICAgICksCiAgICAgICAgKSk7CiAgICAgICAgJHRoaXMtPndlYlB1c2gtPnNldEF1dG9tYXRpY1BhZGRpbmcoZmFsc2UpOyAvLyBkaXNhYmxlIGF1dG9tYXRpYyBwYWRkaW5nIGluIHRlc3RzIHRvIHNwZWVkIHRoZXNlIHVwCiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5vdGlmaWNhdGlvblByb3ZpZGVyKCkKICAgIHsKICAgICAgICBzZWxmOjpzZXRVcEJlZm9yZUNsYXNzKCk7IC8vIGRpcnR5IGhhY2sgb2YgUEhQVW5pdCBsaW1pdGF0aW9uCiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICBhcnJheShzZWxmOjokZW5kcG9pbnRzWydzdGFuZGFyZCddLCBudWxsLCBudWxsLCBudWxsKSwKICAgICAgICAgICAgYXJyYXkoc2VsZjo6JGVuZHBvaW50c1snc3RhbmRhcmQnXSwgJ3sibWVzc2FnZSI6IkNvbW1lbnQgw6dhIHZhID8iLCJ0YWciOiJnZW5lcmFsIn0nLCBzZWxmOjoka2V5c1snc3RhbmRhcmQnXSwgc2VsZjo6JHRva2Vuc1snc3RhbmRhcmQnXSksCiAgICAgICAgICAgIGFycmF5KHNlbGY6OiRlbmRwb2ludHNbJ0dDTSddLCBudWxsLCBudWxsLCBudWxsKSwKICAgICAgICAgICAgYXJyYXkoc2VsZjo6JGVuZHBvaW50c1snR0NNJ10sICd7Im1lc3NhZ2UiOiJDb21tZW50IMOnYSB2YSA/IiwidGFnIjoiZ2VuZXJhbCJ9Jywgc2VsZjo6JGtleXNbJ0dDTSddLCBzZWxmOjokdG9rZW5zWydHQ00nXSksCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgbm90aWZpY2F0aW9uUHJvdmlkZXIKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmRwb2ludAogICAgICogQHBhcmFtIHN0cmluZyAkcGF5bG9hZAogICAgICogQHBhcmFtIHN0cmluZyAkdXNlclB1YmxpY0tleQogICAgICogQHBhcmFtIHN0cmluZyAkdXNlckF1dGhLZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RTZW5kTm90aWZpY2F0aW9uKCRlbmRwb2ludCwgJHBheWxvYWQsICR1c2VyUHVibGljS2V5LCAkdXNlckF1dGhLZXkpCiAgICB7CiAgICAgICAgJHJlcyA9ICR0aGlzLT53ZWJQdXNoLT5zZW5kTm90aWZpY2F0aW9uKCRlbmRwb2ludCwgJHBheWxvYWQsICR1c2VyUHVibGljS2V5LCAkdXNlckF1dGhLZXksIHRydWUpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkcmVzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFNlbmROb3RpZmljYXRpb25CYXRjaCgpCiAgICB7CiAgICAgICAgJGJhdGNoU2l6ZSA9IDEwOwogICAgICAgICR0b3RhbCA9IDUwOwoKICAgICAgICAkbm90aWZpY2F0aW9ucyA9ICR0aGlzLT5ub3RpZmljYXRpb25Qcm92aWRlcigpOwogICAgICAgICRub3RpZmljYXRpb25zID0gYXJyYXlfZmlsbCgwLCAkdG90YWwsICRub3RpZmljYXRpb25zWzBdKTsKCiAgICAgICAgZm9yZWFjaCAoJG5vdGlmaWNhdGlvbnMgYXMgJG5vdGlmaWNhdGlvbikgewogICAgICAgICAgICAkdGhpcy0+d2ViUHVzaC0+c2VuZE5vdGlmaWNhdGlvbigkbm90aWZpY2F0aW9uWzBdLCAkbm90aWZpY2F0aW9uWzFdLCAkbm90aWZpY2F0aW9uWzJdLCAkbm90aWZpY2F0aW9uWzNdKTsKICAgICAgICB9CgogICAgICAgICRyZXMgPSAkdGhpcy0+d2ViUHVzaC0+Zmx1c2goJGJhdGNoU2l6ZSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRyZXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0U2VuZE5vdGlmaWNhdGlvbldpdGhUb29CaWdQYXlsb2FkKCkKICAgIHsKICAgICAgICAkdGhpcy0+c2V0RXhwZWN0ZWRFeGNlcHRpb24oJ0Vycm9yRXhjZXB0aW9uJywgJ1NpemUgb2YgcGF5bG9hZCBtdXN0IG5vdCBiZSBncmVhdGVyIHRoYW4gNDA3OCBvY3RldHMuJyk7CiAgICAgICAgJHRoaXMtPndlYlB1c2gtPnNlbmROb3RpZmljYXRpb24oCiAgICAgICAgICAgIHNlbGY6OiRlbmRwb2ludHNbJ3N0YW5kYXJkJ10sCiAgICAgICAgICAgIHN0cl9yZXBlYXQoJ3Rlc3QnLCAxMDIwKSwKICAgICAgICAgICAgc2VsZjo6JGtleXNbJ3N0YW5kYXJkJ10sCiAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgIHRydWUKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Rmx1c2goKQogICAgewogICAgICAgICR0aGlzLT53ZWJQdXNoLT5zZW5kTm90aWZpY2F0aW9uKHNlbGY6OiRlbmRwb2ludHNbJ3N0YW5kYXJkJ10pOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCR0aGlzLT53ZWJQdXNoLT5mbHVzaCgpKTsKCiAgICAgICAgLy8gcXVldWUgaGFzIGJlZW4gcmVzZXQKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoJHRoaXMtPndlYlB1c2gtPmZsdXNoKCkpOwoKICAgICAgICAkdGhpcy0+d2ViUHVzaC0+c2VuZE5vdGlmaWNhdGlvbihzZWxmOjokZW5kcG9pbnRzWydzdGFuZGFyZCddKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkdGhpcy0+d2ViUHVzaC0+Zmx1c2goKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RTZW5kR0NNTm90aWZpY2F0aW9uV2l0aG91dEdDTUFwaUtleSgpCiAgICB7CiAgICAgICAgaWYgKHN1YnN0cihzZWxmOjokZW5kcG9pbnRzWydHQ00nXSwgMCwgc3RybGVuKFdlYlB1c2g6OkdDTV9VUkwpKSAhPT0gV2ViUHVzaDo6R0NNX1VSTCkgewogICAgICAgICAgICAkdGhpcy0+bWFya1Rlc3RTa2lwcGVkKCdUaGUgcHJvdmlkZWQgR0NNIFVSTCBpcyBub3QgYSBHQ00gVVJMLCBidXQgcHJvYmFibHkgYSBGQ00gVVJMLicpOwogICAgICAgIH0KCiAgICAgICAgJHdlYlB1c2ggPSBuZXcgV2ViUHVzaCgpOwogICAgICAgICR0aGlzLT5zZXRFeHBlY3RlZEV4Y2VwdGlvbignRXJyb3JFeGNlcHRpb24nLCAnTm8gR0NNIEFQSSBLZXkgc3BlY2lmaWVkLicpOwogICAgICAgICR3ZWJQdXNoLT5zZW5kTm90aWZpY2F0aW9uKHNlbGY6OiRlbmRwb2ludHNbJ0dDTSddLCBudWxsLCBudWxsLCBudWxsLCB0cnVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFNlbmRHQ01Ob3RpZmljYXRpb25XaXRoV3JvbmdHQ01BcGlLZXkoKQogICAgewogICAgICAgIGlmIChzdWJzdHIoc2VsZjo6JGVuZHBvaW50c1snR0NNJ10sIDAsIHN0cmxlbihXZWJQdXNoOjpHQ01fVVJMKSkgIT09IFdlYlB1c2g6OkdDTV9VUkwpIHsKICAgICAgICAgICAgJHRoaXMtPm1hcmtUZXN0U2tpcHBlZCgnVGhlIHByb3ZpZGVkIEdDTSBVUkwgaXMgbm90IGEgR0NNIFVSTCwgYnV0IHByb2JhYmx5IGEgRkNNIFVSTC4nKTsKICAgICAgICB9CgogICAgICAgICR3ZWJQdXNoID0gbmV3IFdlYlB1c2goYXJyYXkoJ0dDTScgPT4gJ2JhcicpKTsKCiAgICAgICAgJHJlcyA9ICR3ZWJQdXNoLT5zZW5kTm90aWZpY2F0aW9uKHNlbGY6OiRlbmRwb2ludHNbJ0dDTSddLCBudWxsLCBudWxsLCBudWxsLCB0cnVlKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaXNfYXJyYXkoJHJlcykpOyAvLyB0aGVyZSBoYXMgYmVlbiBhbiBlcnJvcgogICAgICAgICR0aGlzLT5hc3NlcnRBcnJheUhhc0tleSgnc3VjY2VzcycsICRyZXMpOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZSgkcmVzWydzdWNjZXNzJ10pOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0QXJyYXlIYXNLZXkoJ3N0YXR1c0NvZGUnLCAkcmVzKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDQwMCwgJHJlc1snc3RhdHVzQ29kZSddKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEFycmF5SGFzS2V5KCdoZWFkZXJzJywgJHJlcyk7CgogICAgICAgICR0aGlzLT5hc3NlcnRBcnJheUhhc0tleSgnZW5kcG9pbnQnLCAkcmVzKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKHNlbGY6OiRlbmRwb2ludHNbJ0dDTSddLCAkcmVzWydlbmRwb2ludCddKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/build-phar.sh</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9lbnYgYmFzaAoKYmFzZWRpcj0kKCBkaXJuYW1lICQoIHJlYWRsaW5rIC1mICR7QkFTSF9TT1VSQ0VbMF19ICkgKQoKcGhwIC1kcGhhci5yZWFkb25seT0wICIkYmFzZWRpci9vdGhlci9idWlsZF9waGFyLnBocCIgJCo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiLAogICJkZXNjcmlwdGlvbiI6ICAiUEhQIDUueCBwb2x5ZmlsbCBmb3IgcmFuZG9tX2J5dGVzKCkgYW5kIHJhbmRvbV9pbnQoKSBmcm9tIFBIUCA3IiwKICAia2V5d29yZHMiOiBbCiAgICAiY3Nwcm5nIiwKICAgICJyYW5kb20iLAogICAgInBvbHlmaWxsIiwKICAgICJwc2V1ZG9yYW5kb20iCiAgXSwKICAibGljZW5zZSI6ICAgICAgIk1JVCIsCiAgInR5cGUiOiAgICAgICAgICJsaWJyYXJ5IiwKICAiYXV0aG9ycyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAgICAgIlBhcmFnb24gSW5pdGlhdGl2ZSBFbnRlcnByaXNlcyIsCiAgICAgICJlbWFpbCI6ICAgICJzZWN1cml0eUBwYXJhZ29uaWUuY29tIiwKICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vcGFyYWdvbmllLmNvbSIKICAgIH0KICBdLAogICJzdXBwb3J0IjogewogICAgImlzc3VlcyI6ICAgICAiaHR0cHM6Ly9naXRodWIuY29tL3BhcmFnb25pZS9yYW5kb21fY29tcGF0L2lzc3VlcyIsCiAgICAiZW1haWwiOiAgICAgICJpbmZvQHBhcmFnb25pZS5jb20iLAogICAgInNvdXJjZSI6ICAgICAiaHR0cHM6Ly9naXRodWIuY29tL3BhcmFnb25pZS9yYW5kb21fY29tcGF0IgogIH0sCiAgInJlcXVpcmUiOiB7CiAgICAicGhwIjogIj49NS4yLjAiCiAgfSwKICAicmVxdWlyZS1kZXYiOiB7CiAgICAicGhwdW5pdC9waHB1bml0IjogIjQuKnw1LioiCiAgfSwKICAic3VnZ2VzdCI6IHsKICAgICJleHQtbGlic29kaXVtIjogIlByb3ZpZGVzIGEgbW9kZXJuIGNyeXB0byBBUEkgdGhhdCBjYW4gYmUgdXNlZCB0byBnZW5lcmF0ZSByYW5kb20gYnl0ZXMuIgogIH0sCiAgImF1dG9sb2FkIjogewogICAgImZpbGVzIjogWwogICAgICAibGliL3JhbmRvbS5waHAiCiAgICBdCiAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/dist/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUhZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUNJRFlnQUVFZCt3Q3FKRHJ4NUI0T2xkTTBkUUUwWk1YK2x4MVpXbQpwdWkwU1VxRDRHMjlMM05Hc3o5VWhKLzBIakJkYm5raElLNXh2aVQwWDV2dGphY0Y2YWpnY0NBcmJUQitkcytwCitoN1EwODROdVN1SXBOYjZZUGZvVUZnQy9DTDlrQW9jCi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/dist/random_compat.phar.pubkey.asc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogR251UEcgdjIuMC4yMiAoTWluZ1czMikKCmlRRWNCQUFCQWdBR0JRSld0VzFoQUFvSkVHdVhvY0tDWkFUYUpmMEgrd2JaR2dza0sxZGNSVHN1VkpsOUlXaXAKUXdHdy9xSUtJMjgwU0Q2L2Nrb1VNeEtEQ0ppRnVQUjE0em1xblMzNms3TjVVTlBucGRUSlRTOFQxMWp0dFNwZwoxTENtZ3BiRUlwZ2FUYWgrY0VMRHFGQ2F2OTlmUytiRWlBTDVsV0RBSEJURS9YUGpHVkNxZWVoeVBZcmVmNElXCk5EQklFc3ZuSFBIUExzbjZYNWpxNCtZajVvVWl4Z3hhTVBpUitiY080U2grUnpPVkI2aTJEMHVwV2ZSWEJGWEEKTk5uc2c5L3pqdm9DN1pXNzN5OXVTSCtkUEpUdC9WZ2ZlaXY1Mi92NDFYbGl5emJVeUxhbGYwMkdOUFkrOWdvVgpKSEcxdWxFRUJKT0NpVUQ5Y0UxUFVJSndIQS9IcXloSEl2VjM1MFlvRUZpSGw4aVN3bTdTaVp1NWtQamFxNzQ9Cj1CNis4Ci0tLS0tRU5EIFBHUCBTSUdOQVRVUkUtLS0tLQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/byte_safe_strings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeQogKiBmb3IgdXNpbmcgdGhlIG5ldyBQSFAgNyByYW5kb21fKiBBUEkgaW4gUEhQIDUgcHJvamVjdHMKICoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTggUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCmlmICghaXNfY2FsbGFibGUoJ1JhbmRvbUNvbXBhdF9zdHJsZW4nKSkgewogICAgaWYgKAogICAgICAgIGRlZmluZWQoJ01CX09WRVJMT0FEX1NUUklORycpCiAgICAgICAgICAgICYmCiAgICAgICAgKChpbnQpIGluaV9nZXQoJ21ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQnKSkgJiBNQl9PVkVSTE9BRF9TVFJJTkcKICAgICkgewogICAgICAgIC8qKgogICAgICAgICAqIHN0cmxlbigpIGltcGxlbWVudGF0aW9uIHRoYXQgaXNuJ3QgYnJpdHRsZSB0byBtYnN0cmluZy5mdW5jX292ZXJsb2FkCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIHZlcnNpb24gdXNlcyBtYl9zdHJsZW4oKSBpbiAnOGJpdCcgbW9kZSB0byB0cmVhdCBzdHJpbmdzIGFzIHJhdwogICAgICAgICAqIGJpbmFyeSByYXRoZXIgdGhhbiBVVEYtOCwgSVNPLTg4NTktMSwgZXRjCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gc3RyaW5nICRiaW5hcnlfc3RyaW5nCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzIFR5cGVFcnJvcgogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiBpbnQKICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBSYW5kb21Db21wYXRfc3RybGVuKCRiaW5hcnlfc3RyaW5nKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJGJpbmFyeV9zdHJpbmcpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdSYW5kb21Db21wYXRfc3RybGVuKCkgZXhwZWN0cyBhIHN0cmluZycKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoaW50KSBtYl9zdHJsZW4oJGJpbmFyeV9zdHJpbmcsICc4Yml0Jyk7CiAgICAgICAgfQoKICAgIH0gZWxzZSB7CiAgICAgICAgLyoqCiAgICAgICAgICogc3RybGVuKCkgaW1wbGVtZW50YXRpb24gdGhhdCBpc24ndCBicml0dGxlIHRvIG1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQKICAgICAgICAgKgogICAgICAgICAqIFRoaXMgdmVyc2lvbiBqdXN0IHVzZWQgdGhlIGRlZmF1bHQgc3RybGVuKCkKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeV9zdHJpbmcKICAgICAgICAgKgogICAgICAgICAqIEB0aHJvd3MgVHlwZUVycm9yCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJuIGludAogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJpbmFyeV9zdHJpbmcpCiAgICAgICAgewogICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkYmluYXJ5X3N0cmluZykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ1JhbmRvbUNvbXBhdF9zdHJsZW4oKSBleHBlY3RzIGEgc3RyaW5nJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gKGludCkgc3RybGVuKCRiaW5hcnlfc3RyaW5nKTsKICAgICAgICB9CiAgICB9Cn0KCmlmICghaXNfY2FsbGFibGUoJ1JhbmRvbUNvbXBhdF9zdWJzdHInKSkgewoKICAgIGlmICgKICAgICAgICBkZWZpbmVkKCdNQl9PVkVSTE9BRF9TVFJJTkcnKQogICAgICAgICAgICAmJgogICAgICAgICgoaW50KSBpbmlfZ2V0KCdtYnN0cmluZy5mdW5jX292ZXJsb2FkJykpICYgTUJfT1ZFUkxPQURfU1RSSU5HCiAgICApIHsKICAgICAgICAvKioKICAgICAgICAgKiBzdWJzdHIoKSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzbid0IGJyaXR0bGUgdG8gbWJzdHJpbmcuZnVuY19vdmVybG9hZAogICAgICAgICAqCiAgICAgICAgICogVGhpcyB2ZXJzaW9uIHVzZXMgbWJfc3Vic3RyKCkgaW4gJzhiaXQnIG1vZGUgdG8gdHJlYXQgc3RyaW5ncyBhcyByYXcKICAgICAgICAgKiBiaW5hcnkgcmF0aGVyIHRoYW4gVVRGLTgsIElTTy04ODU5LTEsIGV0YwogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5X3N0cmluZwogICAgICAgICAqIEBwYXJhbSBpbnQgJHN0YXJ0CiAgICAgICAgICogQHBhcmFtIGludHxudWxsICRsZW5ndGggKG9wdGlvbmFsKQogICAgICAgICAqCiAgICAgICAgICogQHRocm93cyBUeXBlRXJyb3IKICAgICAgICAgKgogICAgICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gUmFuZG9tQ29tcGF0X3N1YnN0cigkYmluYXJ5X3N0cmluZywgJHN0YXJ0LCAkbGVuZ3RoID0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRiaW5hcnlfc3RyaW5nKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAnUmFuZG9tQ29tcGF0X3N1YnN0cigpOiBGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmcnCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzX2ludCgkc3RhcnQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdSYW5kb21Db21wYXRfc3Vic3RyKCk6IFNlY29uZCBhcmd1bWVudCBzaG91bGQgYmUgYW4gaW50ZWdlcicKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbGVuZ3RoID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAgICAqIG1iX3N1YnN0cigkc3RyLCAwLCBOVUxMLCAnOGJpdCcpIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIG9uCiAgICAgICAgICAgICAgICAgKiBQSFAgNS4zLCBzbyB3ZSBoYXZlIHRvIGZpbmQgdGhlIGxlbmd0aCBvdXJzZWx2ZXMuCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIC8qKiBAdmFyIGludCAkbGVuZ3RoICovCiAgICAgICAgICAgICAgICAkbGVuZ3RoID0gUmFuZG9tQ29tcGF0X3N0cmxlbigkYmluYXJ5X3N0cmluZykgLSAkc3RhcnQ7CiAgICAgICAgICAgIH0gZWxzZWlmICghaXNfaW50KCRsZW5ndGgpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdSYW5kb21Db21wYXRfc3Vic3RyKCk6IFRoaXJkIGFyZ3VtZW50IHNob3VsZCBiZSBhbiBpbnRlZ2VyLCBvciBvbWl0dGVkJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQ29uc2lzdGVuY3kgd2l0aCBQSFAncyBiZWhhdmlvcgogICAgICAgICAgICBpZiAoJHN0YXJ0ID09PSBSYW5kb21Db21wYXRfc3RybGVuKCRiaW5hcnlfc3RyaW5nKSAmJiAkbGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRzdGFydCA+IFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJpbmFyeV9zdHJpbmcpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSBtYl9zdWJzdHIoCiAgICAgICAgICAgICAgICAoc3RyaW5nKSAkYmluYXJ5X3N0cmluZywKICAgICAgICAgICAgICAgIChpbnQpICRzdGFydCwKICAgICAgICAgICAgICAgIChpbnQpICRsZW5ndGgsCiAgICAgICAgICAgICAgICAnOGJpdCcKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfSBlbHNlIHsKCiAgICAgICAgLyoqCiAgICAgICAgICogc3Vic3RyKCkgaW1wbGVtZW50YXRpb24gdGhhdCBpc24ndCBicml0dGxlIHRvIG1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQKICAgICAgICAgKgogICAgICAgICAqIFRoaXMgdmVyc2lvbiBqdXN0IHVzZXMgdGhlIGRlZmF1bHQgc3Vic3RyKCkKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeV9zdHJpbmcKICAgICAgICAgKiBAcGFyYW0gaW50ICRzdGFydAogICAgICAgICAqIEBwYXJhbSBpbnR8bnVsbCAkbGVuZ3RoIChvcHRpb25hbCkKICAgICAgICAgKgogICAgICAgICAqIEB0aHJvd3MgVHlwZUVycm9yCiAgICAgICAgICoKICAgICAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIFJhbmRvbUNvbXBhdF9zdWJzdHIoJGJpbmFyeV9zdHJpbmcsICRzdGFydCwgJGxlbmd0aCA9IG51bGwpCiAgICAgICAgewogICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkYmluYXJ5X3N0cmluZykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ1JhbmRvbUNvbXBhdF9zdWJzdHIoKTogRmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGEgc3RyaW5nJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc19pbnQoJHN0YXJ0KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAnUmFuZG9tQ29tcGF0X3N1YnN0cigpOiBTZWNvbmQgYXJndW1lbnQgc2hvdWxkIGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGxlbmd0aCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKCFpc19pbnQoJGxlbmd0aCkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICAnUmFuZG9tQ29tcGF0X3N1YnN0cigpOiBUaGlyZCBhcmd1bWVudCBzaG91bGQgYmUgYW4gaW50ZWdlciwgb3Igb21pdHRlZCcKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSBzdWJzdHIoCiAgICAgICAgICAgICAgICAgICAgKHN0cmluZyApJGJpbmFyeV9zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgKGludCkgJHN0YXJ0LAogICAgICAgICAgICAgICAgICAgIChpbnQpICRsZW5ndGgKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSBzdWJzdHIoCiAgICAgICAgICAgICAgICAoc3RyaW5nKSAkYmluYXJ5X3N0cmluZywKICAgICAgICAgICAgICAgIChpbnQpICRzdGFydAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/cast_to_int.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeQogKiBmb3IgdXNpbmcgdGhlIG5ldyBQSFAgNyByYW5kb21fKiBBUEkgaW4gUEhQIDUgcHJvamVjdHMKICoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTggUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCmlmICghaXNfY2FsbGFibGUoJ1JhbmRvbUNvbXBhdF9pbnR2YWwnKSkgewogICAgCiAgICAvKioKICAgICAqIENhc3QgdG8gYW4gaW50ZWdlciBpZiB3ZSBjYW4sIHNhZmVseS4KICAgICAqIAogICAgICogSWYgeW91IHBhc3MgaXQgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgKH5QSFBfSU5UX01BWCwgUEhQX0lOVF9NQVgpCiAgICAgKiAobm9uLWluY2x1c2l2ZSksIGl0IHdpbGwgc2FuZWx5IGNhc3QgaXQgdG8gYW4gaW50LiBJZiB5b3UgaXQncyBlcXVhbCB0bwogICAgICogflBIUF9JTlRfTUFYIG9yIFBIUF9JTlRfTUFYLCB3ZSBsZXQgaXQgZmFpbCBhcyBub3QgYW4gaW50ZWdlci4gRmxvYXRzIAogICAgICogbG9zZSBwcmVjaXNpb24sIHNvIHRoZSA8PSBhbmQgPT4gb3BlcmF0b3JzIG1pZ2h0IGFjY2lkZW50YWxseSBsZXQgYSBmbG9hdAogICAgICogdGhyb3VnaC4KICAgICAqIAogICAgICogQHBhcmFtIGludHxmbG9hdCAkbnVtYmVyICAgIFRoZSBudW1iZXIgd2Ugd2FudCB0byBjb252ZXJ0IHRvIGFuIGludAogICAgICogQHBhcmFtIGJvb2wgICAgICAkZmFpbF9vcGVuIFNldCB0byB0cnVlIHRvIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KICAgICAqIAogICAgICogQHJldHVybiBmbG9hdHxpbnQKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbnZhbGlkUmV0dXJuVHlwZQogICAgICoKICAgICAqIEB0aHJvd3MgVHlwZUVycm9yCiAgICAgKi8KICAgIGZ1bmN0aW9uIFJhbmRvbUNvbXBhdF9pbnR2YWwoJG51bWJlciwgJGZhaWxfb3BlbiA9IGZhbHNlKQogICAgewogICAgICAgIGlmIChpc19pbnQoJG51bWJlcikgfHwgaXNfZmxvYXQoJG51bWJlcikpIHsKICAgICAgICAgICAgJG51bWJlciArPSAwOwogICAgICAgIH0gZWxzZWlmIChpc19udW1lcmljKCRudW1iZXIpKSB7CiAgICAgICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgSW52YWxpZE9wZXJhbmQgKi8KICAgICAgICAgICAgJG51bWJlciArPSAwOwogICAgICAgIH0KICAgICAgICAvKiogQHZhciBpbnR8ZmxvYXQgJG51bWJlciAqLwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIGlzX2Zsb2F0KCRudW1iZXIpCiAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAkbnVtYmVyID4gflBIUF9JTlRfTUFYCiAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAkbnVtYmVyIDwgUEhQX0lOVF9NQVgKICAgICAgICApIHsKICAgICAgICAgICAgJG51bWJlciA9IChpbnQpICRudW1iZXI7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfaW50KCRudW1iZXIpKSB7CiAgICAgICAgICAgIHJldHVybiAoaW50KSAkbnVtYmVyOwogICAgICAgIH0gZWxzZWlmICghJGZhaWxfb3BlbikgewogICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgJ0V4cGVjdGVkIGFuIGludGVnZXIuJwogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/error_polyfill.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxOCBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFjbGFzc19leGlzdHMoJ0Vycm9yJywgZmFsc2UpKSB7CiAgICAvLyBXZSBjYW4ndCByZWFsbHkgYXZvaWQgbWFraW5nIHRoaXMgZXh0ZW5kIEV4Y2VwdGlvbiBpbiBQSFAgNS4KICAgIGNsYXNzIEVycm9yIGV4dGVuZHMgRXhjZXB0aW9uCiAgICB7CiAgICAgICAgCiAgICB9Cn0KCmlmICghY2xhc3NfZXhpc3RzKCdUeXBlRXJyb3InLCBmYWxzZSkpIHsKICAgIGlmIChpc19zdWJjbGFzc19vZignRXJyb3InLCAnRXhjZXB0aW9uJykpIHsKICAgICAgICBjbGFzcyBUeXBlRXJyb3IgZXh0ZW5kcyBFcnJvcgogICAgICAgIHsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBjbGFzcyBUeXBlRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KICAgICAgICB7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeQogKiBmb3IgdXNpbmcgdGhlIG5ldyBQSFAgNyByYW5kb21fKiBBUEkgaW4gUEhQIDUgcHJvamVjdHMKICoKICogQHZlcnNpb24gMi4wLjE3CiAqIEByZWxlYXNlZCAyMDE4LTA3LTA0CiAqCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDE4IFBhcmFnb24gSW5pdGlhdGl2ZSBFbnRlcnByaXNlcwogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQogKiBTT0ZUV0FSRS4KICovCgppZiAoIWRlZmluZWQoJ1BIUF9WRVJTSU9OX0lEJykpIHsKICAgIC8vIFRoaXMgY29uc3RhbnQgd2FzIGludHJvZHVjZWQgaW4gUEhQIDUuMi43CiAgICAkUmFuZG9tQ29tcGF0dmVyc2lvbiA9IGFycmF5X21hcCgnaW50dmFsJywgZXhwbG9kZSgnLicsIFBIUF9WRVJTSU9OKSk7CiAgICBkZWZpbmUoCiAgICAgICAgJ1BIUF9WRVJTSU9OX0lEJywKICAgICAgICAkUmFuZG9tQ29tcGF0dmVyc2lvblswXSAqIDEwMDAwCiAgICAgICAgKyAkUmFuZG9tQ29tcGF0dmVyc2lvblsxXSAqIDEwMAogICAgICAgICsgJFJhbmRvbUNvbXBhdHZlcnNpb25bMl0KICAgICk7CiAgICAkUmFuZG9tQ29tcGF0dmVyc2lvbiA9IG51bGw7Cn0KCi8qKgogKiBQSFAgNy4wLjAgYW5kIG5ld2VyIGhhdmUgdGhlc2UgZnVuY3Rpb25zIG5hdGl2ZWx5LgogKi8KaWYgKFBIUF9WRVJTSU9OX0lEID49IDcwMDAwKSB7CiAgICByZXR1cm47Cn0KCmlmICghZGVmaW5lZCgnUkFORE9NX0NPTVBBVF9SRUFEX0JVRkZFUicpKSB7CiAgICBkZWZpbmUoJ1JBTkRPTV9DT01QQVRfUkVBRF9CVUZGRVInLCA4KTsKfQoKJFJhbmRvbUNvbXBhdERJUiA9IGRpcm5hbWUoX19GSUxFX18pOwoKcmVxdWlyZV9vbmNlICRSYW5kb21Db21wYXRESVIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2J5dGVfc2FmZV9zdHJpbmdzLnBocCc7CnJlcXVpcmVfb25jZSAkUmFuZG9tQ29tcGF0RElSIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdjYXN0X3RvX2ludC5waHAnOwpyZXF1aXJlX29uY2UgJFJhbmRvbUNvbXBhdERJUiAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnZXJyb3JfcG9seWZpbGwucGhwJzsKCmlmICghaXNfY2FsbGFibGUoJ3JhbmRvbV9ieXRlcycpKSB7CiAgICAvKioKICAgICAqIFBIUCA1LjIuMCAtIDUuNi54IHdheSB0byBpbXBsZW1lbnQgcmFuZG9tX2J5dGVzKCkKICAgICAqCiAgICAgKiBXZSB1c2UgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBoZXJlIHRvIGRlZmluZSB0aGUgZnVuY3Rpb24gaW4gYWNjb3JkYW5jZQogICAgICogdG8gdGhlIG9wZXJhdGluZyBlbnZpcm9ubWVudC4gSXQncyBhIG1pY3JvLW9wdGltaXphdGlvbi4KICAgICAqCiAgICAgKiBJbiBvcmRlciBvZiBwcmVmZXJlbmNlOgogICAgICogICAxLiBVc2UgbGlic29kaXVtIGlmIGF2YWlsYWJsZS4KICAgICAqICAgMi4gZnJlYWQoKSAvZGV2L3VyYW5kb20gaWYgYXZhaWxhYmxlIChuZXZlciBvbiBXaW5kb3dzKQogICAgICogICAzLiBtY3J5cHRfY3JlYXRlX2l2KCRieXRlcywgTUNSWVBUX0RFVl9VUkFORE9NKQogICAgICogICA0LiBDT00oJ0NBUElDT00uVXRpbGl0aWVzLjEnKS0+R2V0UmFuZG9tKCkKICAgICAqCiAgICAgKiBTZWUgUkFUSU9OQUxFLm1kIGZvciBvdXIgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgb3JkZXIKICAgICAqLwogICAgaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ2xpYnNvZGl1bScpKSB7CiAgICAgICAgLy8gU2VlIHJhbmRvbV9ieXRlc19saWJzb2RpdW0ucGhwCiAgICAgICAgaWYgKFBIUF9WRVJTSU9OX0lEID49IDUwMzAwICYmIGlzX2NhbGxhYmxlKCdcXFNvZGl1bVxccmFuZG9tYnl0ZXNfYnVmJykpIHsKICAgICAgICAgICAgcmVxdWlyZV9vbmNlICRSYW5kb21Db21wYXRESVIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3JhbmRvbV9ieXRlc19saWJzb2RpdW0ucGhwJzsKICAgICAgICB9IGVsc2VpZiAobWV0aG9kX2V4aXN0cygnU29kaXVtJywgJ3JhbmRvbWJ5dGVzX2J1ZicpKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSAkUmFuZG9tQ29tcGF0RElSIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdyYW5kb21fYnl0ZXNfbGlic29kaXVtX2xlZ2FjeS5waHAnOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlYWRpbmcgZGlyZWN0bHkgZnJvbSAvZGV2L3VyYW5kb206CiAgICAgKi8KICAgIGlmIChESVJFQ1RPUllfU0VQQVJBVE9SID09PSAnLycpIHsKICAgICAgICAvLyBESVJFQ1RPUllfU0VQQVJBVE9SID09PSAnLycgb24gVW5peC1saWtlIE9TZXMgLS0gdGhpcyBpcyBhIGZhc3QKICAgICAgICAvLyB3YXkgdG8gZXhjbHVkZSBXaW5kb3dzLgogICAgICAgICRSYW5kb21Db21wYXRVcmFuZG9tID0gdHJ1ZTsKICAgICAgICAkUmFuZG9tQ29tcGF0X2Jhc2VkaXIgPSBpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKTsKCiAgICAgICAgaWYgKCFlbXB0eSgkUmFuZG9tQ29tcGF0X2Jhc2VkaXIpKSB7CiAgICAgICAgICAgICRSYW5kb21Db21wYXRfb3Blbl9iYXNlZGlyID0gZXhwbG9kZSgKICAgICAgICAgICAgICAgIFBBVEhfU0VQQVJBVE9SLAogICAgICAgICAgICAgICAgc3RydG9sb3dlcigkUmFuZG9tQ29tcGF0X2Jhc2VkaXIpCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRSYW5kb21Db21wYXRVcmFuZG9tID0gKGFycmF5KCkgIT09IGFycmF5X2ludGVyc2VjdCgKICAgICAgICAgICAgICAgIGFycmF5KCcvZGV2JywgJy9kZXYvJywgJy9kZXYvdXJhbmRvbScpLAogICAgICAgICAgICAgICAgJFJhbmRvbUNvbXBhdF9vcGVuX2Jhc2VkaXIKICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICRSYW5kb21Db21wYXRfb3Blbl9iYXNlZGlyID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgIWlzX2NhbGxhYmxlKCdyYW5kb21fYnl0ZXMnKQogICAgICAgICAgICAmJgogICAgICAgICAgICAkUmFuZG9tQ29tcGF0VXJhbmRvbQogICAgICAgICAgICAmJgogICAgICAgICAgICBAaXNfcmVhZGFibGUoJy9kZXYvdXJhbmRvbScpCiAgICAgICAgKSB7CiAgICAgICAgICAgIC8vIEVycm9yIHN1cHByZXNzaW9uIG9uIGlzX3JlYWRhYmxlKCkgaW4gY2FzZSBvZiBhbiBvcGVuX2Jhc2VkaXIKICAgICAgICAgICAgLy8gb3Igc2FmZV9tb2RlIGZhaWx1cmUuIEFsbCB3ZSBjYXJlIGFib3V0IGlzIHdoZXRoZXIgb3Igbm90IHdlCiAgICAgICAgICAgIC8vIGNhbiByZWFkIGl0IGF0IHRoaXMgcG9pbnQuIElmIHRoZSBQSFAgZW52aXJvbm1lbnQgaXMgZ29pbmcgdG8KICAgICAgICAgICAgLy8gcGFuaWMgb3ZlciB0cnlpbmcgdG8gc2VlIGlmIHRoZSBmaWxlIGNhbiBiZSByZWFkIGluIHRoZSBmaXJzdAogICAgICAgICAgICAvLyBwbGFjZSwgdGhhdCBpcyBub3QgaGVscGZ1bCB0byB1cyBoZXJlLgoKICAgICAgICAgICAgLy8gU2VlIHJhbmRvbV9ieXRlc19kZXZfdXJhbmRvbS5waHAKICAgICAgICAgICAgcmVxdWlyZV9vbmNlICRSYW5kb21Db21wYXRESVIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3JhbmRvbV9ieXRlc19kZXZfdXJhbmRvbS5waHAnOwogICAgICAgIH0KICAgICAgICAvLyBVbnNldCB2YXJpYWJsZXMgYWZ0ZXIgdXNlCiAgICAgICAgJFJhbmRvbUNvbXBhdF9iYXNlZGlyID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgICAgJFJhbmRvbUNvbXBhdFVyYW5kb20gPSBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIG1jcnlwdF9jcmVhdGVfaXYoKQogICAgICoKICAgICAqIFdlIG9ubHkgd2FudCB0byB1c2UgbWN5cHRfY3JlYXRlX2l2KCkgaWY6CiAgICAgKgogICAgICogLSByYW5kb21fYnl0ZXMoKSBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRlZmluZWQKICAgICAqIC0gdGhlIG1jcnlwdCBleHRlbnNpb25zIGlzIGxvYWRlZAogICAgICogLSBPbmUgb2YgdGhlc2UgdHdvIGNvbmRpdGlvbnMgaXMgdHJ1ZToKICAgICAqICAgLSBXZSdyZSBvbiBXaW5kb3dzIChESVJFQ1RPUllfU0VQQVJBVE9SICE9PSAnLycpCiAgICAgKiAgIC0gV2UncmUgbm90IG9uIFdpbmRvd3MgYW5kIC9kZXYvdXJhbmRvbSBpcyByZWFkYWJhbGUKICAgICAqICAgICAoaS5lLiB3ZSdyZSBub3QgaW4gYSBjaHJvb3QgamFpbCkKICAgICAqIC0gU3BlY2lhbCBjYXNlOgogICAgICogICAtIElmIHdlJ3JlIG5vdCBvbiBXaW5kb3dzLCBidXQgdGhlIFBIUCB2ZXJzaW9uIGlzIGJldHdlZW4KICAgICAqICAgICA1LjYuMTAgYW5kIDUuNi4xMiwgd2UgZG9uJ3Qgd2FudCB0byB1c2UgbWNyeXB0LiBJdCB3aWxsCiAgICAgKiAgICAgaGFuZyBpbmRlZmluaXRlbHkuIFRoaXMgaXMgYmFkLgogICAgICogICAtIElmIHdlJ3JlIG9uIFdpbmRvd3MsIHdlIHdhbnQgdG8gdXNlIFBIUCA+PSA1LjMuNyBvciBlbHNlCiAgICAgKiAgICAgd2UgZ2V0IGluc3VmZmljaWVudCBlbnRyb3B5IGVycm9ycy4KICAgICAqLwogICAgaWYgKAogICAgICAgICFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykKICAgICAgICAmJgogICAgICAgIC8vIFdpbmRvd3Mgb24gUEhQIDwgNS4zLjcgaXMgYnJva2VuLCBidXQgbm9uLVdpbmRvd3MgaXMgbm90IGtub3duIHRvIGJlLgogICAgICAgIChESVJFQ1RPUllfU0VQQVJBVE9SID09PSAnLycgfHwgUEhQX1ZFUlNJT05fSUQgPj0gNTAzMDcpCiAgICAgICAgJiYKICAgICAgICAvLyBQcmV2ZW50IHRoaXMgY29kZSBmcm9tIGhhbmdpbmcgaW5kZWZpbml0ZWx5IG9uIG5vbi1XaW5kb3dzOwogICAgICAgIC8vIHNlZSBodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTY5ODMzCiAgICAgICAgKAogICAgICAgICAgICBESVJFQ1RPUllfU0VQQVJBVE9SICE9PSAnLycgfHwKICAgICAgICAgICAgKFBIUF9WRVJTSU9OX0lEIDw9IDUwNjA5IHx8IFBIUF9WRVJTSU9OX0lEID49IDUwNjEzKQogICAgICAgICkKICAgICAgICAmJgogICAgICAgIGV4dGVuc2lvbl9sb2FkZWQoJ21jcnlwdCcpCiAgICApIHsKICAgICAgICAvLyBTZWUgcmFuZG9tX2J5dGVzX21jcnlwdC5waHAKICAgICAgICByZXF1aXJlX29uY2UgJFJhbmRvbUNvbXBhdERJUiAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAncmFuZG9tX2J5dGVzX21jcnlwdC5waHAnOwogICAgfQogICAgJFJhbmRvbUNvbXBhdFVyYW5kb20gPSBudWxsOwoKICAgIC8qKgogICAgICogVGhpcyBpcyBhIFdpbmRvd3Mtc3BlY2lmaWMgZmFsbGJhY2ssIGZvciB3aGVuIHRoZSBtY3J5cHQgZXh0ZW5zaW9uCiAgICAgKiBpc24ndCBsb2FkZWQuCiAgICAgKi8KICAgIGlmICgKICAgICAgICAhaXNfY2FsbGFibGUoJ3JhbmRvbV9ieXRlcycpCiAgICAgICAgJiYKICAgICAgICBleHRlbnNpb25fbG9hZGVkKCdjb21fZG90bmV0JykKICAgICAgICAmJgogICAgICAgIGNsYXNzX2V4aXN0cygnQ09NJykKICAgICkgewogICAgICAgICRSYW5kb21Db21wYXRfZGlzYWJsZWRfY2xhc3NlcyA9IHByZWdfc3BsaXQoCiAgICAgICAgICAgICcjXHMqLFxzKiMnLAogICAgICAgICAgICBzdHJ0b2xvd2VyKGluaV9nZXQoJ2Rpc2FibGVfY2xhc3NlcycpKQogICAgICAgICk7CgogICAgICAgIGlmICghaW5fYXJyYXkoJ2NvbScsICRSYW5kb21Db21wYXRfZGlzYWJsZWRfY2xhc3NlcykpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRSYW5kb21Db21wYXRDT010ZXN0ID0gbmV3IENPTSgnQ0FQSUNPTS5VdGlsaXRpZXMuMScpOwogICAgICAgICAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJFJhbmRvbUNvbXBhdENPTXRlc3QsICdHZXRSYW5kb20nKSkgewogICAgICAgICAgICAgICAgICAgIC8vIFNlZSByYW5kb21fYnl0ZXNfY29tX2RvdG5ldC5waHAKICAgICAgICAgICAgICAgICAgICByZXF1aXJlX29uY2UgJFJhbmRvbUNvbXBhdERJUiAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAncmFuZG9tX2J5dGVzX2NvbV9kb3RuZXQucGhwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoY29tX2V4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIHVzZSBpdC4KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkUmFuZG9tQ29tcGF0X2Rpc2FibGVkX2NsYXNzZXMgPSBudWxsOwogICAgICAgICRSYW5kb21Db21wYXRDT010ZXN0ID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIHRocm93IG5ldyBFeGNlcHRpb24KICAgICAqLwogICAgaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgICAgICAvKioKICAgICAgICAgKiBXZSBkb24ndCBoYXZlIGFueSBtb3JlIG9wdGlvbnMsIHNvIGxldCdzIHRocm93IGFuIGV4Y2VwdGlvbiByaWdodCBub3cKICAgICAgICAgKiBhbmQgaG9wZSB0aGUgZGV2ZWxvcGVyIHdvbid0IGxldCBpdCBmYWlsIHNpbGVudGx5LgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIG1peGVkICRsZW5ndGgKICAgICAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW52YWxpZFJldHVyblR5cGUKICAgICAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgogICAgICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gcmFuZG9tX2J5dGVzKCRsZW5ndGgpCiAgICAgICAgewogICAgICAgICAgICB1bnNldCgkbGVuZ3RoKTsgLy8gU3VwcHJlc3MgInZhcmlhYmxlIG5vdCB1c2VkIiB3YXJuaW5ncy4KICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdUaGVyZSBpcyBubyBzdWl0YWJsZSBDU1BSTkcgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtJwogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQp9CgppZiAoIWlzX2NhbGxhYmxlKCdyYW5kb21faW50JykpIHsKICAgIHJlcXVpcmVfb25jZSAkUmFuZG9tQ29tcGF0RElSIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdyYW5kb21faW50LnBocCc7Cn0KCiRSYW5kb21Db21wYXRESVIgPSBudWxsOwo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICogCiAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTggUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAqIAogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICogCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKiAKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCmlmICghaXNfY2FsbGFibGUoJ3JhbmRvbV9ieXRlcycpKSB7CiAgICAvKioKICAgICAqIFdpbmRvd3Mgd2l0aCBQSFAgPCA1LjMuMCB3aWxsIG5vdCBoYXZlIHRoZSBmdW5jdGlvbgogICAgICogb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKCkgYXZhaWxhYmxlLCBzbyBsZXQncyB1c2UKICAgICAqIENBUElDT00gdG8gd29yayBhcm91bmQgdGhpcyBkZWZpY2llbmN5LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGJ5dGVzCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiByYW5kb21fYnl0ZXMoJGJ5dGVzKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8qKiBAdmFyIGludCAkYnl0ZXMgKi8KICAgICAgICAgICAgJGJ5dGVzID0gUmFuZG9tQ29tcGF0X2ludHZhbCgkYnl0ZXMpOwogICAgICAgIH0gY2F0Y2ggKFR5cGVFcnJvciAkZXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICdyYW5kb21fYnl0ZXMoKTogJGJ5dGVzIG11c3QgYmUgYW4gaW50ZWdlcicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYnl0ZXMgPCAxKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgICdMZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIHN0cmluZyAkYnVmICovCiAgICAgICAgJGJ1ZiA9ICcnOwogICAgICAgIGlmICghY2xhc3NfZXhpc3RzKCdDT00nKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAnQ09NIGRvZXMgbm90IGV4aXN0JwogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAvKiogQHZhciBDT00gJHV0aWwgKi8KICAgICAgICAkdXRpbCA9IG5ldyBDT00oJ0NBUElDT00uVXRpbGl0aWVzLjEnKTsKICAgICAgICAkZXhlY0NvdW50ID0gMDsKCiAgICAgICAgLyoqCiAgICAgICAgICogTGV0J3Mgbm90IGxldCBpdCBsb29wIGZvcmV2ZXIuIElmIHdlIHJ1biBOIHRpbWVzIGFuZCBmYWlsIHRvCiAgICAgICAgICogZ2V0IE4gYnl0ZXMgb2YgcmFuZG9tIGRhdGEsIHRoZW4gQ0FQSUNPTSBoYXMgZmFpbGVkIHVzLgogICAgICAgICAqLwogICAgICAgIGRvIHsKICAgICAgICAgICAgJGJ1ZiAuPSBiYXNlNjRfZGVjb2RlKChzdHJpbmcpICR1dGlsLT5HZXRSYW5kb20oJGJ5dGVzLCAwKSk7CiAgICAgICAgICAgIGlmIChSYW5kb21Db21wYXRfc3RybGVuKCRidWYpID49ICRieXRlcykgewogICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgKiBSZXR1cm4gb3VyIHJhbmRvbSBlbnRyb3B5IGJ1ZmZlciBoZXJlOgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICByZXR1cm4gKHN0cmluZykgUmFuZG9tQ29tcGF0X3N1YnN0cigkYnVmLCAwLCAkYnl0ZXMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICsrJGV4ZWNDb3VudDsKICAgICAgICB9IHdoaWxlICgkZXhlY0NvdW50IDwgJGJ5dGVzKTsKCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgd2UgcmVhY2ggaGVyZSwgUEhQIGhhcyBmYWlsZWQgdXMuCiAgICAgICAgICovCiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigKICAgICAgICAgICAgJ0NvdWxkIG5vdCBnYXRoZXIgc3VmZmljaWVudCByYW5kb20gZGF0YScKICAgICAgICApOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxOCBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFkZWZpbmVkKCdSQU5ET01fQ09NUEFUX1JFQURfQlVGRkVSJykpIHsKICAgIGRlZmluZSgnUkFORE9NX0NPTVBBVF9SRUFEX0JVRkZFUicsIDgpOwp9CgppZiAoIWlzX2NhbGxhYmxlKCdyYW5kb21fYnl0ZXMnKSkgewogICAgLyoqCiAgICAgKiBVbmxlc3Mgb3Blbl9iYXNlZGlyIGlzIGVuYWJsZWQsIHVzZSAvZGV2L3VyYW5kb20gZm9yCiAgICAgKiByYW5kb20gbnVtYmVycyBpbiBhY2NvcmRhbmNlIHdpdGggYmVzdCBwcmFjdGljZXMKICAgICAqCiAgICAgKiBXaHkgd2UgdXNlIC9kZXYvdXJhbmRvbSBhbmQgbm90IC9kZXYvcmFuZG9tCiAgICAgKiBAcmVmIGh0dHA6Ly9zb2NrcHVwcGV0Lm9yZy9ibG9nLzIwMTQvMDIvMjUvc2FmZWx5LWdlbmVyYXRlLXJhbmRvbS1udW1iZXJzCiAgICAgKgogICAgICogQHBhcmFtIGludCAkYnl0ZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIGZ1bmN0aW9uIHJhbmRvbV9ieXRlcygkYnl0ZXMpCiAgICB7CiAgICAgICAgLyoqIEB2YXIgcmVzb3VyY2UgJGZwICovCiAgICAgICAgc3RhdGljICRmcCA9IG51bGw7CgogICAgICAgIC8qKgogICAgICAgICAqIFRoaXMgYmxvY2sgc2hvdWxkIG9ubHkgYmUgcnVuIG9uY2UKICAgICAgICAgKi8KICAgICAgICBpZiAoZW1wdHkoJGZwKSkgewogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogV2UgdXNlIC9kZXYvdXJhbmRvbSBpZiBpdCBpcyBhIGNoYXIgZGV2aWNlLgogICAgICAgICAgICAgKiBXZSBuZXZlciBmYWxsIGJhY2sgdG8gL2Rldi9yYW5kb20KICAgICAgICAgICAgICovCiAgICAgICAgICAgIC8qKiBAdmFyIHJlc291cmNlfGJvb2wgJGZwICovCiAgICAgICAgICAgICRmcCA9IGZvcGVuKCcvZGV2L3VyYW5kb20nLCAncmInKTsKICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRmcCkpIHsKICAgICAgICAgICAgICAgIC8qKiBAdmFyIGFycmF5PHN0cmluZywgaW50PiAkc3QgKi8KICAgICAgICAgICAgICAgICRzdCA9IGZzdGF0KCRmcCk7CiAgICAgICAgICAgICAgICBpZiAoKCRzdFsnbW9kZSddICYgMDE3MDAwMCkgIT09IDAyMDAwMCkgewogICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOwogICAgICAgICAgICAgICAgICAgICRmcCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJGZwKSkgewogICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgKiBzdHJlYW1fc2V0X3JlYWRfYnVmZmVyKCkgZG9lcyBub3QgZXhpc3QgaW4gSEhWTQogICAgICAgICAgICAgICAgICoKICAgICAgICAgICAgICAgICAqIElmIHdlIGRvbid0IHNldCB0aGUgc3RyZWFtJ3MgcmVhZCBidWZmZXIgdG8gMCwgUEhQIHdpbGwKICAgICAgICAgICAgICAgICAqIGludGVybmFsbHkgYnVmZmVyIDgxOTIgYnl0ZXMsIHdoaWNoIGNhbiB3YXN0ZSBlbnRyb3B5CiAgICAgICAgICAgICAgICAgKgogICAgICAgICAgICAgICAgICogc3RyZWFtX3NldF9yZWFkX2J1ZmZlciByZXR1cm5zIDAgb24gc3VjY2VzcwogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICBpZiAoaXNfY2FsbGFibGUoJ3N0cmVhbV9zZXRfcmVhZF9idWZmZXInKSkgewogICAgICAgICAgICAgICAgICAgIHN0cmVhbV9zZXRfcmVhZF9idWZmZXIoJGZwLCBSQU5ET01fQ09NUEFUX1JFQURfQlVGRkVSKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc19jYWxsYWJsZSgnc3RyZWFtX3NldF9jaHVua19zaXplJykpIHsKICAgICAgICAgICAgICAgICAgICBzdHJlYW1fc2V0X2NodW5rX3NpemUoJGZwLCBSQU5ET01fQ09NUEFUX1JFQURfQlVGRkVSKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLyoqIEB2YXIgaW50ICRieXRlcyAqLwogICAgICAgICAgICAkYnl0ZXMgPSBSYW5kb21Db21wYXRfaW50dmFsKCRieXRlcyk7CiAgICAgICAgfSBjYXRjaCAoVHlwZUVycm9yICRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgJ3JhbmRvbV9ieXRlcygpOiAkYnl0ZXMgbXVzdCBiZSBhbiBpbnRlZ2VyJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRieXRlcyA8IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICAgICAgICAgJ0xlbmd0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogVGhpcyBpZigpIGJsb2NrIG9ubHkgcnVucyBpZiB3ZSBtYW5hZ2VkIHRvIG9wZW4gYSBmaWxlIGhhbmRsZQogICAgICAgICAqCiAgICAgICAgICogSXQgZG9lcyBub3QgYmVsb25nIGluIGFuIGVsc2Uge30gYmxvY2ssIGJlY2F1c2UgdGhlIGFib3ZlCiAgICAgICAgICogaWYgKGVtcHR5KCRmcCkpIGxpbmUgaXMgbG9naWMgdGhhdCBzaG91bGQgb25seSBiZSBydW4gb25jZSBwZXIKICAgICAgICAgKiBwYWdlIGxvYWQuCiAgICAgICAgICovCiAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRmcCkpIHsKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEB2YXIgaW50CiAgICAgICAgICAgICAqLwogICAgICAgICAgICAkcmVtYWluaW5nID0gJGJ5dGVzOwoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEB2YXIgc3RyaW5nfGJvb2wKICAgICAgICAgICAgICovCiAgICAgICAgICAgICRidWYgPSAnJzsKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBXZSB1c2UgZnJlYWQoKSBpbiBhIGxvb3AgdG8gcHJvdGVjdCBhZ2FpbnN0IHBhcnRpYWwgcmVhZHMKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICogQHZhciBzdHJpbmd8Ym9vbAogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAkcmVhZCA9IGZyZWFkKCRmcCwgJHJlbWFpbmluZyk7CiAgICAgICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkcmVhZCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHJlYWQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICAgICAgICAgKiBXZSBjYW5ub3Qgc2FmZWx5IHJlYWQgZnJvbSB0aGUgZmlsZS4gRXhpdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICogZG8td2hpbGUgbG9vcCBhbmQgdHJpZ2dlciB0aGUgZXhjZXB0aW9uIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICAgICAgICAgICAgICAgICAgKiBAdmFyIHN0cmluZ3xib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAkYnVmID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICogRGVjcmVhc2UgdGhlIG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBmcm9tIHJlbWFpbmluZwogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAkcmVtYWluaW5nIC09IFJhbmRvbUNvbXBhdF9zdHJsZW4oJHJlYWQpOwogICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgKiBAdmFyIHN0cmluZ3xib29sCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICRidWYgPSAkYnVmIC4gJHJlYWQ7CiAgICAgICAgICAgIH0gd2hpbGUgKCRyZW1haW5pbmcgPiAwKTsKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBJcyBvdXIgcmVzdWx0IHZhbGlkPwogICAgICAgICAgICAgKi8KICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkYnVmKSkgewogICAgICAgICAgICAgICAgaWYgKFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJ1ZikgPT09ICRieXRlcykgewogICAgICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICAgICAqIFJldHVybiBvdXIgcmFuZG9tIGVudHJvcHkgYnVmZmVyIGhlcmU6CiAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRidWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIElmIHdlIHJlYWNoIGhlcmUsIFBIUCBoYXMgZmFpbGVkIHVzLgogICAgICAgICAqLwogICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oCiAgICAgICAgICAgICdFcnJvciByZWFkaW5nIGZyb20gc291cmNlIGRldmljZScKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxOCBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgIC8qKgogICAgICogSWYgdGhlIGxpYnNvZGl1bSBQSFAgZXh0ZW5zaW9uIGlzIGxvYWRlZCwgd2UnbGwgdXNlIGl0IGFib3ZlIGFueSBvdGhlcgogICAgICogc29sdXRpb24uCiAgICAgKgogICAgICogbGlic29kaXVtLXBocCBwcm9qZWN0OgogICAgICogQHJlZiBodHRwczovL2dpdGh1Yi5jb20vamVkaXNjdDEvbGlic29kaXVtLXBocAogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGJ5dGVzCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiByYW5kb21fYnl0ZXMoJGJ5dGVzKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8qKiBAdmFyIGludCAkYnl0ZXMgKi8KICAgICAgICAgICAgJGJ5dGVzID0gUmFuZG9tQ29tcGF0X2ludHZhbCgkYnl0ZXMpOwogICAgICAgIH0gY2F0Y2ggKFR5cGVFcnJvciAkZXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICdyYW5kb21fYnl0ZXMoKTogJGJ5dGVzIG11c3QgYmUgYW4gaW50ZWdlcicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYnl0ZXMgPCAxKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgICdMZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIFxTb2RpdW1ccmFuZG9tYnl0ZXNfYnVmKCkgZG9lc24ndCBhbGxvdyBtb3JlIHRoYW4gMjE0NzQ4MzY0NyBieXRlcyB0byBiZQogICAgICAgICAqIGdlbmVyYXRlZCBpbiBvbmUgaW52b2NhdGlvbi4KICAgICAgICAgKi8KICAgICAgICAvKiogQHZhciBzdHJpbmd8Ym9vbCAkYnVmICovCiAgICAgICAgaWYgKCRieXRlcyA+IDIxNDc0ODM2NDcpIHsKICAgICAgICAgICAgJGJ1ZiA9ICcnOwogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYnl0ZXM7ICRpICs9IDEwNzM3NDE4MjQpIHsKICAgICAgICAgICAgICAgICRuID0gKCRieXRlcyAtICRpKSA+IDEwNzM3NDE4MjQKICAgICAgICAgICAgICAgICAgICA/IDEwNzM3NDE4MjQKICAgICAgICAgICAgICAgICAgICA6ICRieXRlcyAtICRpOwogICAgICAgICAgICAgICAgJGJ1ZiAuPSBcU29kaXVtXHJhbmRvbWJ5dGVzX2J1Zigkbik7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvKiogQHZhciBzdHJpbmd8Ym9vbCAkYnVmICovCiAgICAgICAgICAgICRidWYgPSBcU29kaXVtXHJhbmRvbWJ5dGVzX2J1ZigkYnl0ZXMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX3N0cmluZygkYnVmKSkgewogICAgICAgICAgICBpZiAoUmFuZG9tQ29tcGF0X3N0cmxlbigkYnVmKSA9PT0gJGJ5dGVzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgd2UgcmVhY2ggaGVyZSwgUEhQIGhhcyBmYWlsZWQgdXMuCiAgICAgICAgICovCiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigKICAgICAgICAgICAgJ0NvdWxkIG5vdCBnYXRoZXIgc3VmZmljaWVudCByYW5kb20gZGF0YScKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxOCBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgIC8qKgogICAgICogSWYgdGhlIGxpYnNvZGl1bSBQSFAgZXh0ZW5zaW9uIGlzIGxvYWRlZCwgd2UnbGwgdXNlIGl0IGFib3ZlIGFueSBvdGhlcgogICAgICogc29sdXRpb24uCiAgICAgKgogICAgICogbGlic29kaXVtLXBocCBwcm9qZWN0OgogICAgICogQHJlZiBodHRwczovL2dpdGh1Yi5jb20vamVkaXNjdDEvbGlic29kaXVtLXBocAogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGJ5dGVzCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiByYW5kb21fYnl0ZXMoJGJ5dGVzKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8qKiBAdmFyIGludCAkYnl0ZXMgKi8KICAgICAgICAgICAgJGJ5dGVzID0gUmFuZG9tQ29tcGF0X2ludHZhbCgkYnl0ZXMpOwogICAgICAgIH0gY2F0Y2ggKFR5cGVFcnJvciAkZXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICdyYW5kb21fYnl0ZXMoKTogJGJ5dGVzIG11c3QgYmUgYW4gaW50ZWdlcicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYnl0ZXMgPCAxKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgICdMZW5ndGggbXVzdCBiZSBncmVhdGVyIHRoYW4gMCcKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEB2YXIgc3RyaW5nCiAgICAgICAgICovCiAgICAgICAgJGJ1ZiA9ICcnOwoKICAgICAgICAvKioKICAgICAgICAgKiBcU29kaXVtXHJhbmRvbWJ5dGVzX2J1ZigpIGRvZXNuJ3QgYWxsb3cgbW9yZSB0aGFuIDIxNDc0ODM2NDcgYnl0ZXMgdG8gYmUKICAgICAgICAgKiBnZW5lcmF0ZWQgaW4gb25lIGludm9jYXRpb24uCiAgICAgICAgICovCiAgICAgICAgaWYgKCRieXRlcyA+IDIxNDc0ODM2NDcpIHsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGJ5dGVzOyAkaSArPSAxMDczNzQxODI0KSB7CiAgICAgICAgICAgICAgICAkbiA9ICgkYnl0ZXMgLSAkaSkgPiAxMDczNzQxODI0CiAgICAgICAgICAgICAgICAgICAgPyAxMDczNzQxODI0CiAgICAgICAgICAgICAgICAgICAgOiAkYnl0ZXMgLSAkaTsKICAgICAgICAgICAgICAgICRidWYgLj0gU29kaXVtOjpyYW5kb21ieXRlc19idWYoKGludCkgJG4pOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGJ1ZiAuPSBTb2RpdW06OnJhbmRvbWJ5dGVzX2J1ZigoaW50KSAkYnl0ZXMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX3N0cmluZygkYnVmKSkgewogICAgICAgICAgICBpZiAoUmFuZG9tQ29tcGF0X3N0cmxlbigkYnVmKSA9PT0gJGJ5dGVzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgd2UgcmVhY2ggaGVyZSwgUEhQIGhhcyBmYWlsZWQgdXMuCiAgICAgICAgICovCiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigKICAgICAgICAgICAgJ0NvdWxkIG5vdCBnYXRoZXIgc3VmZmljaWVudCByYW5kb20gZGF0YScKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxOCBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgIC8qKgogICAgICogUG93ZXJlZCBieSBleHQvbWNyeXB0IChhbmQgdGhhbmtmdWxseSBOT1QgbGlibWNyeXB0KQogICAgICoKICAgICAqIEByZWYgaHR0cHM6Ly9idWdzLnBocC5uZXQvYnVnLnBocD9pZD01NTE2OQogICAgICogQHJlZiBodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvYmxvYi9jNTY4ZmZlNTE3MWQ5NDIxNjFmYzhkZGEwNjZiY2U4NDRiZGVmNjc2L2V4dC9tY3J5cHQvbWNyeXB0LmMjTDEzMjEtTDEzODYKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRieXRlcwogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgZnVuY3Rpb24gcmFuZG9tX2J5dGVzKCRieXRlcykKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAvKiogQHZhciBpbnQgJGJ5dGVzICovCiAgICAgICAgICAgICRieXRlcyA9IFJhbmRvbUNvbXBhdF9pbnR2YWwoJGJ5dGVzKTsKICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJGV4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAncmFuZG9tX2J5dGVzKCk6ICRieXRlcyBtdXN0IGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJ5dGVzIDwgMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAnTGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBzdHJpbmd8Ym9vbCAkYnVmICovCiAgICAgICAgJGJ1ZiA9IEBtY3J5cHRfY3JlYXRlX2l2KChpbnQpICRieXRlcywgKGludCkgTUNSWVBUX0RFVl9VUkFORE9NKTsKICAgICAgICBpZiAoCiAgICAgICAgICAgIGlzX3N0cmluZygkYnVmKQogICAgICAgICAgICAgICAgJiYKICAgICAgICAgICAgUmFuZG9tQ29tcGF0X3N0cmxlbigkYnVmKSA9PT0gJGJ5dGVzCiAgICAgICAgKSB7CiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBSZXR1cm4gb3VyIHJhbmRvbSBlbnRyb3B5IGJ1ZmZlciBoZXJlOgogICAgICAgICAgICAgKi8KICAgICAgICAgICAgcmV0dXJuICRidWY7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBJZiB3ZSByZWFjaCBoZXJlLCBQSFAgaGFzIGZhaWxlZCB1cy4KICAgICAgICAgKi8KICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKAogICAgICAgICAgICAnQ291bGQgbm90IGdhdGhlciBzdWZmaWNpZW50IHJhbmRvbSBkYXRhJwogICAgICAgICk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_int.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNfY2FsbGFibGUoJ3JhbmRvbV9pbnQnKSkgewogICAgLyoqCiAgICAgKiBSYW5kb21fKiBDb21wYXRpYmlsaXR5IExpYnJhcnkKICAgICAqIGZvciB1c2luZyB0aGUgbmV3IFBIUCA3IHJhbmRvbV8qIEFQSSBpbiBQSFAgNSBwcm9qZWN0cwogICAgICoKICAgICAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogICAgICoKICAgICAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTggUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAgICAgKgogICAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogICAgICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICAgICAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICAgICAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICAgICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogICAgICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICAgICAqCiAgICAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogICAgICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAgICAgKgogICAgICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICAgICAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogICAgICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAgICAgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAgICAgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogICAgICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICAgICAqIFNPRlRXQVJFLgogICAgICovCgogICAgLyoqCiAgICAgKiBGZXRjaCBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gJG1pbiBhbmQgJG1heCBpbmNsdXNpdmUKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRtaW4KICAgICAqIEBwYXJhbSBpbnQgJG1heAogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgZnVuY3Rpb24gcmFuZG9tX2ludCgkbWluLCAkbWF4KQogICAgewogICAgICAgIC8qKgogICAgICAgICAqIFR5cGUgYW5kIGlucHV0IGxvZ2ljIGNoZWNrcwogICAgICAgICAqCiAgICAgICAgICogSWYgeW91IHBhc3MgaXQgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgKH5QSFBfSU5UX01BWCwgUEhQX0lOVF9NQVgpCiAgICAgICAgICogKG5vbi1pbmNsdXNpdmUpLCBpdCB3aWxsIHNhbmVseSBjYXN0IGl0IHRvIGFuIGludC4gSWYgeW91IGl0J3MgZXF1YWwgdG8KICAgICAgICAgKiB+UEhQX0lOVF9NQVggb3IgUEhQX0lOVF9NQVgsIHdlIGxldCBpdCBmYWlsIGFzIG5vdCBhbiBpbnRlZ2VyLiBGbG9hdHMKICAgICAgICAgKiBsb3NlIHByZWNpc2lvbiwgc28gdGhlIDw9IGFuZCA9PiBvcGVyYXRvcnMgbWlnaHQgYWNjaWRlbnRhbGx5IGxldCBhIGZsb2F0CiAgICAgICAgICogdGhyb3VnaC4KICAgICAgICAgKi8KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLyoqIEB2YXIgaW50ICRtaW4gKi8KICAgICAgICAgICAgJG1pbiA9IFJhbmRvbUNvbXBhdF9pbnR2YWwoJG1pbik7CiAgICAgICAgfSBjYXRjaCAoVHlwZUVycm9yICRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgJ3JhbmRvbV9pbnQoKTogJG1pbiBtdXN0IGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICAvKiogQHZhciBpbnQgJG1heCAqLwogICAgICAgICAgICAkbWF4ID0gUmFuZG9tQ29tcGF0X2ludHZhbCgkbWF4KTsKICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJGV4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAncmFuZG9tX2ludCgpOiAkbWF4IG11c3QgYmUgYW4gaW50ZWdlcicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIE5vdyB0aGF0IHdlJ3ZlIHZlcmlmaWVkIG91ciB3ZWFrIHR5cGluZyBzeXN0ZW0gaGFzIGdpdmVuIHVzIGFuIGludGVnZXIsCiAgICAgICAgICogbGV0J3MgdmFsaWRhdGUgdGhlIGxvZ2ljIHRoZW4gd2UgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGdlbmVyYXRpbmcgcmFuZG9tCiAgICAgICAgICogaW50ZWdlcnMgYWxvbmcgYSBnaXZlbiByYW5nZS4KICAgICAgICAgKi8KICAgICAgICBpZiAoJG1pbiA+ICRtYXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICAgICAgICAgJ01pbmltdW0gdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gdmFsdWUnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1heCA9PT0gJG1pbikgewogICAgICAgICAgICByZXR1cm4gKGludCkgJG1pbjsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEluaXRpYWxpemUgdmFyaWFibGVzIHRvIDAKICAgICAgICAgKgogICAgICAgICAqIFdlIHdhbnQgdG8gc3RvcmU6CiAgICAgICAgICogJGJ5dGVzID0+IHRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHdlIG5lZWQKICAgICAgICAgKiAkbWFzayA9PiBhbiBpbnRlZ2VyIGJpdG1hc2sgKGZvciB1c2Ugd2l0aCB0aGUgJikgb3BlcmF0b3IKICAgICAgICAgKiAgICAgICAgICBzbyB3ZSBjYW4gbWluaW1pemUgdGhlIG51bWJlciBvZiBkaXNjYXJkcwogICAgICAgICAqLwogICAgICAgICRhdHRlbXB0cyA9ICRiaXRzID0gJGJ5dGVzID0gJG1hc2sgPSAkdmFsdWVTaGlmdCA9IDA7CiAgICAgICAgLyoqIEB2YXIgaW50ICRhdHRlbXB0cyAqLwogICAgICAgIC8qKiBAdmFyIGludCAkYml0cyAqLwogICAgICAgIC8qKiBAdmFyIGludCAkYnl0ZXMgKi8KICAgICAgICAvKiogQHZhciBpbnQgJG1hc2sgKi8KICAgICAgICAvKiogQHZhciBpbnQgJHZhbHVlU2hpZnQgKi8KCiAgICAgICAgLyoqCiAgICAgICAgICogQXQgdGhpcyBwb2ludCwgJHJhbmdlIGlzIGEgcG9zaXRpdmUgbnVtYmVyIGdyZWF0ZXIgdGhhbiAwLiBJdCBtaWdodAogICAgICAgICAqIG92ZXJmbG93LCBob3dldmVyLCBpZiAkbWF4IC0gJG1pbiA+IFBIUF9JTlRfTUFYLiBQSFAgd2lsbCBjYXN0IGl0IHRvCiAgICAgICAgICogYSBmbG9hdCBhbmQgd2Ugd2lsbCBsb3NlIHNvbWUgcHJlY2lzaW9uLgogICAgICAgICAqCiAgICAgICAgICogQHZhciBpbnR8ZmxvYXQgJHJhbmdlCiAgICAgICAgICovCiAgICAgICAgJHJhbmdlID0gJG1heCAtICRtaW47CgogICAgICAgIC8qKgogICAgICAgICAqIFRlc3QgZm9yIGludGVnZXIgb3ZlcmZsb3c6CiAgICAgICAgICovCiAgICAgICAgaWYgKCFpc19pbnQoJHJhbmdlKSkgewoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIFN0aWxsIHNhZmVseSBjYWxjdWxhdGUgd2lkZXIgcmFuZ2VzLgogICAgICAgICAgICAgKiBQcm92aWRlZCBieSBAQ29kZXNJbkNoYW9zLCBAb2l0dGFhCiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIEByZWYgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vQ29kZXNJbkNoYW9zLzAzZjllYTBiNThlOGIyYjhkNDM1CiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIFdlIHVzZSB+MCBhcyBhIG1hc2sgaW4gdGhpcyBjYXNlIGJlY2F1c2UgaXQgZ2VuZXJhdGVzIGFsbCAxcwogICAgICAgICAgICAgKgogICAgICAgICAgICAgKiBAcmVmIGh0dHBzOi8vZXZhbC5pbi80MDAzNTYgKDMyLWJpdCkKICAgICAgICAgICAgICogQHJlZiBodHRwOi8vM3Y0bC5vcmcvWFg5cjUgICg2NC1iaXQpCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAkYnl0ZXMgPSBQSFBfSU5UX1NJWkU7CiAgICAgICAgICAgIC8qKiBAdmFyIGludCAkbWFzayAqLwogICAgICAgICAgICAkbWFzayA9IH4wOwoKICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqICRiaXRzIGlzIGVmZmVjdGl2ZWx5IGNlaWwobG9nKCRyYW5nZSwgMikpIHdpdGhvdXQgZGVhbGluZyB3aXRoCiAgICAgICAgICAgICAqIHR5cGUganVnZ2xpbmcKICAgICAgICAgICAgICovCiAgICAgICAgICAgIHdoaWxlICgkcmFuZ2UgPiAwKSB7CiAgICAgICAgICAgICAgICBpZiAoJGJpdHMgJSA4ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgKyskYnl0ZXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICArKyRiaXRzOwogICAgICAgICAgICAgICAgJHJhbmdlID4+PSAxOwogICAgICAgICAgICAgICAgLyoqIEB2YXIgaW50ICRtYXNrICovCiAgICAgICAgICAgICAgICAkbWFzayA9ICRtYXNrIDw8IDEgfCAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR2YWx1ZVNoaWZ0ID0gJG1pbjsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIGludCAkdmFsICovCiAgICAgICAgJHZhbCA9IDA7CiAgICAgICAgLyoqCiAgICAgICAgICogTm93IHRoYXQgd2UgaGF2ZSBvdXIgcGFyYW1ldGVycyBzZXQgdXAsIGxldCdzIGJlZ2luIGdlbmVyYXRpbmcKICAgICAgICAgKiByYW5kb20gaW50ZWdlcnMgdW50aWwgb25lIGZhbGxzIGJldHdlZW4gJG1pbiBhbmQgJG1heAogICAgICAgICAqLwogICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50Q29uZGl0aW9uICovCiAgICAgICAgZG8gewogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogVGhlIHJlamVjdGlvbiBwcm9iYWJpbGl0eSBpcyBhdCBtb3N0IDAuNSwgc28gdGhpcyBjb3JyZXNwb25kcwogICAgICAgICAgICAgKiB0byBhIGZhaWx1cmUgcHJvYmFiaWxpdHkgb2YgMl4tMTI4IGZvciBhIHdvcmtpbmcgUk5HCiAgICAgICAgICAgICAqLwogICAgICAgICAgICBpZiAoJGF0dGVtcHRzID4gMTI4KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICdyYW5kb21faW50OiBSTkcgaXMgYnJva2VuIC0gdG9vIG1hbnkgcmVqZWN0aW9ucycKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBMZXQncyBncmFiIHRoZSBuZWNlc3NhcnkgbnVtYmVyIG9mIHJhbmRvbSBieXRlcwogICAgICAgICAgICAgKi8KICAgICAgICAgICAgJHJhbmRvbUJ5dGVTdHJpbmcgPSByYW5kb21fYnl0ZXMoJGJ5dGVzKTsKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBMZXQncyB0dXJuICRyYW5kb21CeXRlU3RyaW5nIGludG8gYW4gaW50ZWdlcgogICAgICAgICAgICAgKgogICAgICAgICAgICAgKiBUaGlzIHVzZXMgYml0d2lzZSBvcGVyYXRvcnMgKDw8IGFuZCB8KSB0byBidWlsZCBhbiBpbnRlZ2VyCiAgICAgICAgICAgICAqIG91dCBvZiB0aGUgdmFsdWVzIGV4dHJhY3RlZCBmcm9tIG9yZCgpCiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIEV4YW1wbGU6IFs5Rl0gfCBbNkRdIHwgWzMyXSB8IFswQ10gPT4KICAgICAgICAgICAgICogICAxNTkgKyAyNzkwNCArIDMyNzY4MDAgKyAyMDEzMjY1OTIgPT4KICAgICAgICAgICAgICogICAyMDQ2MzE0NTUKICAgICAgICAgICAgICovCiAgICAgICAgICAgICR2YWwgJj0gMDsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGJ5dGVzOyArKyRpKSB7CiAgICAgICAgICAgICAgICAkdmFsIHw9IG9yZCgkcmFuZG9tQnl0ZVN0cmluZ1skaV0pIDw8ICgkaSAqIDgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8qKiBAdmFyIGludCAkdmFsICovCgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogQXBwbHkgbWFzawogICAgICAgICAgICAgKi8KICAgICAgICAgICAgJHZhbCAmPSAkbWFzazsKICAgICAgICAgICAgJHZhbCArPSAkdmFsdWVTaGlmdDsKCiAgICAgICAgICAgICsrJGF0dGVtcHRzOwogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogSWYgJHZhbCBvdmVyZmxvd3MgdG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIsCiAgICAgICAgICAgICAqIC4uLiBvciBpcyBsYXJnZXIgdGhhbiAkbWF4LAogICAgICAgICAgICAgKiAuLi4gb3Igc21hbGxlciB0aGFuICRtaW4sCiAgICAgICAgICAgICAqIHRoZW4gdHJ5IGFnYWluLgogICAgICAgICAgICAgKi8KICAgICAgICB9IHdoaWxlICghaXNfaW50KCR2YWwpIHx8ICR2YWwgPiAkbWF4IHx8ICR2YWwgPCAkbWluKTsKCiAgICAgICAgcmV0dXJuIChpbnQpICR2YWw7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTUgUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgoK]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/other/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/other/build_phar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGRpc3QgPSBkaXJuYW1lKF9fRElSX18pLicvZGlzdCc7CmlmICghaXNfZGlyKCRkaXN0KSkgewogICAgbWtkaXIoJGRpc3QsIDA3NTUpOwp9CmlmIChmaWxlX2V4aXN0cygkZGlzdC4nL3JhbmRvbV9jb21wYXQucGhhcicpKSB7CiAgICB1bmxpbmsoJGRpc3QuJy9yYW5kb21fY29tcGF0LnBoYXInKTsKfQokcGhhciA9IG5ldyBQaGFyKAogICAgJGRpc3QuJy9yYW5kb21fY29tcGF0LnBoYXInLAogICAgRmlsZXN5c3RlbUl0ZXJhdG9yOjpDVVJSRU5UX0FTX0ZJTEVJTkZPIHwgXEZpbGVzeXN0ZW1JdGVyYXRvcjo6S0VZX0FTX0ZJTEVOQU1FLAogICAgJ3JhbmRvbV9jb21wYXQucGhhcicKKTsKcmVuYW1lKAogICAgZGlybmFtZShfX0RJUl9fKS4nL2xpYi9yYW5kb20ucGhwJywgCiAgICBkaXJuYW1lKF9fRElSX18pLicvbGliL2luZGV4LnBocCcKKTsKJHBoYXItPmJ1aWxkRnJvbURpcmVjdG9yeShkaXJuYW1lKF9fRElSX18pLicvbGliJyk7CnJlbmFtZSgKICAgIGRpcm5hbWUoX19ESVJfXykuJy9saWIvaW5kZXgucGhwJywgCiAgICBkaXJuYW1lKF9fRElSX18pLicvbGliL3JhbmRvbS5waHAnCik7CgovKioKICogSWYgd2UgcGFzcyBhbiAob3B0aW9uYWwpIHBhdGggdG8gYSBwcml2YXRlIGtleSBhcyBhIHNlY29uZCBhcmd1bWVudCwgd2Ugd2lsbAogKiBzaWduIHRoZSBQaGFyIHdpdGggT3BlblNTTC4KICogCiAqIElmIHlvdSBsZWF2ZSB0aGlzIG91dCwgaXQgd2lsbCBwcm9kdWNlIGFuIHVuc2lnbmVkIC5waGFyIQogKi8KaWYgKCRhcmdjID4gMSkgewogICAgaWYgKCFAaXNfcmVhZGFibGUoJGFyZ3ZbMV0pKSB7CiAgICAgICAgZWNobyAnQ291bGQgbm90IHJlYWQgdGhlIHByaXZhdGUga2V5IGZpbGU6JywgJGFyZ3ZbMV0sICJcbiI7CiAgICAgICAgZXhpdCgyNTUpOwogICAgfQogICAgJHBrZXlGaWxlID0gZmlsZV9nZXRfY29udGVudHMoJGFyZ3ZbMV0pOwogICAgCiAgICAkcHJpdmF0ZSA9IG9wZW5zc2xfZ2V0X3ByaXZhdGVrZXkoJHBrZXlGaWxlKTsKICAgIGlmICgkcHJpdmF0ZSAhPT0gZmFsc2UpIHsKICAgICAgICAkcGtleSA9ICcnOwogICAgICAgIG9wZW5zc2xfcGtleV9leHBvcnQoJHByaXZhdGUsICRwa2V5KTsKICAgICAgICAkcGhhci0+c2V0U2lnbmF0dXJlQWxnb3JpdGhtKFBoYXI6Ok9QRU5TU0wsICRwa2V5KTsKICAgICAgICAKICAgICAgICAvKioKICAgICAgICAgKiBTYXZlIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYyBrZXkgdG8gdGhlIGZpbGUKICAgICAgICAgKi8KICAgICAgICBpZiAoIUBpc19yZWFkYWJsZSgkZGlzdC4nL3JhbmRvbV9jb21wYXQucGhhci5wdWJrZXknKSkgewogICAgICAgICAgICAkZGV0YWlscyA9IG9wZW5zc2xfcGtleV9nZXRfZGV0YWlscygkcHJpdmF0ZSk7CiAgICAgICAgICAgIGZpbGVfcHV0X2NvbnRlbnRzKAogICAgICAgICAgICAgICAgJGRpc3QuJy9yYW5kb21fY29tcGF0LnBoYXIucHVia2V5JywKICAgICAgICAgICAgICAgICRkZXRhaWxzWydrZXknXQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgZWNobyAnQW4gZXJyb3Igb2NjdXJyZWQgcmVhZGluZyB0aGUgcHJpdmF0ZSBrZXkgZnJvbSBPcGVuU1NMLicsICJcbiI7CiAgICAgICAgZXhpdCgyNTUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/psalm-autoload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSAnbGliL2J5dGVfc2FmZV9zdHJpbmdzLnBocCc7CnJlcXVpcmVfb25jZSAnbGliL2Nhc3RfdG9faW50LnBocCc7CnJlcXVpcmVfb25jZSAnbGliL2Vycm9yX3BvbHlmaWxsLnBocCc7CnJlcXVpcmVfb25jZSAnb3RoZXIvaWRlX3N0dWJzL2xpYnNvZGl1bS5waHAnOwpyZXF1aXJlX29uY2UgJ2xpYi9yYW5kb20ucGhwJzsKCiRpbnQgPSByYW5kb21faW50KDAsIDY1NTM2KTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/psalm.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxwc2FsbQogICAgYXV0b2xvYWRlcj0icHNhbG0tYXV0b2xvYWQucGhwIgogICAgdXNlRG9jYmxvY2tUeXBlcz0idHJ1ZSIKICAgIHRvdGFsbHlUeXBlZD0idHJ1ZSIKPgogICAgPHByb2plY3RGaWxlcz4KICAgICAgICA8ZGlyZWN0b3J5IG5hbWU9ImxpYiIgLz4KICAgIDwvcHJvamVjdEZpbGVzPgogICAgPGlzc3VlSGFuZGxlcnM+CiAgICAgICAgPFJlZHVuZGFudENvbmRpdGlvbkdpdmVuRG9jYmxvY2tUeXBlIGVycm9yTGV2ZWw9ImluZm8iIC8+CiAgICAgICAgICAgIDwhLS0gV2UgaGF2ZSB0byBiZSBleHBsaWNpdCBiZWNhdXNlIFBIUCA1IGxhY2tzIHNjYWxhciB0eXBlcyAtLT4KICAgICAgICA8VW5yZXNvbHZhYmxlSW5jbHVkZSBlcnJvckxldmVsPSJpbmZvIiAvPgogICAgICAgICAgICA8IS0tIEJlY2F1c2Ugd2UgcHV0IHRoZSB2YXJpYW50cyBpbnRvIHRoZWlyIG93biBzdWJkaXJlY3RvcnkgLS0+CiAgICAgICAgPER1cGxpY2F0ZUNsYXNzIGVycm9yTGV2ZWw9ImluZm8iIC8+CiAgICAgICAgICAgIDwhLS0gTGF0ZXIgdmVyc2lvbnMgb2YgUHNhbG0gYXJlIG9ubHkgUEhQIDcgY29tcGF0aWJsZSwgd2hpY2gKICAgICAgICAgICAgICAgICBzZWVzIG91ciByZWRlZmluaXRpb24gb2YgRXJyb3IgYW5kIFR5cGVFcnJvciBhcyBkdXBsaWNhdGUKICAgICAgICAgICAgICAgICBjbGFzcyBlcnJvcnMuIC0tPgogICAgICAgIDxVbmRlZmluZWRDb25zdGFudCBlcnJvckxldmVsPSJpbmZvIiAvPgogICAgICAgICAgICA8IS0tIFRoZSBNY3J5cHQgY29uc3RhbnRzIGFyZW4ndCBkZWZpbmVkIGluIFBIUCA3LjIgLS0+CiAgICAgICAgPE1pc3NpbmdSZXR1cm5UeXBlIGVycm9yTGV2ZWw9ImluZm8iIC8+CiAgICAgICAgICAgIDwhLS0gRmFsc2UgcG9zaXRpdmUgd2l0aCBzb21lIHZlcnNpb25zIG9mIChQc2FsbSwgUEhQKSAtLT4KICAgICAgICA8SW52YWxpZFJldHVyblR5cGUgZXJyb3JMZXZlbD0iaW5mbyIgLz4KICAgICAgICAgICAgPCEtLSBUaGUgImxhc3QgcmVzb3J0IiBmdW5jdGlvbiBpbiBsaWIvcmFuZG9tLnBocCAtLT4KICAgICAgICA8TWl4ZWRJbmZlcnJlZFJldHVyblR5cGUgZXJyb3JMZXZlbD0ic3VwcHJlc3MiIC8+CiAgICAgICAgICAgIDwhLS0gT25seSB1c2VkIGluIHRvdGFsbHlUeXBlZCBtb2RlIC0tPgogICAgPC9pc3N1ZUhhbmRsZXJzPgo8L3BzYWxtPgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/cache/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/cache/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUsIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciBieSByZWxlYXNlLgoKIyMgMS4wLjEgLSAyMDE2LTA4LTA2CgojIyMgRml4ZWQKCi0gTWFrZSBzcGFjaW5nIGNvbnNpc3RlbnQgaW4gcGhwZG9jIGFubm90YXRpb25zIHBocC1maWcvY2FjaGUjOSAtIGNoYWxhc3IKLSBGaXggZ3JhbW1hciBpbiBwaHBkb2MgYW5ub3RhdGlvbnMgcGhwLWZpZy9jYWNoZSMxMCAtIGNoYWxhc3IKLSBCZSBtb3JlIHNwZWNpZmljIGluIGRvY2Jsb2NrcyB0aGF0IGBnZXRJdGVtcygpYCBhbmQgYGRlbGV0ZUl0ZW1zKClgIHRha2UgYW4gYXJyYXkgb2Ygc3RyaW5ncyAoYHN0cmluZ1tdYCkgY29tcGFyZWQgdG8ganVzdCBgYXJyYXlgIHBocC1maWcvY2FjaGUjOCAtIEdyYWhhbUNhbXBiZWxsCi0gRm9yIGBleHBpcmVzQXQoKWAgYW5kIGBleHBpcmVzQWZ0ZXIoKWAgaW4gQ2FjaGVJdGVtSW50ZXJmYWNlIGZpeCBkb2NibG9jayB0byBzcGVjaWZ5IG51bGwgYXMgYSB2YWxpZCBwYXJhbWV0ZXJzIGFzIHdlbGwgYXMgYW4gaW1wbGVtZW50YXRpb24gb2YgRGF0ZVRpbWVJbnRlcmZhY2UgcGhwLWZpZy9jYWNoZSM3IC0gR3JhaGFtQ2FtcGJlbGwKCiMjIDEuMC4wIC0gMjAxNS0xMi0xMQoKSW5pdGlhbCBzdGFibGUgcmVsZWFzZTsgcmVmbGVjdHMgYWNjZXB0ZWQgUFNSLTYgc3BlY2lmaWNhdGlvbgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/cache/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2NhY2hlIiwKICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBjYWNoaW5nIGxpYnJhcmllcyIsCiAgICAia2V5d29yZHMiOiBbInBzciIsICJwc3ItNiIsICJjYWNoZSJdLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiUEhQLUZJRyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vd3d3LnBocC1maWcub3JnLyIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTUuMy4wIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJQc3JcXENhY2hlXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/cache/LICENSE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IFBIUCBGcmFtZXdvcmsgSW50ZXJvcGVyYWJpbGl0eSBHcm91cAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/cache/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UFNSIENhY2hlCj09PT09PT09PQoKVGhpcyByZXBvc2l0b3J5IGhvbGRzIGFsbCBpbnRlcmZhY2VzIGRlZmluZWQgYnkKW1BTUi02XShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNi8pLgoKTm90ZSB0aGF0IHRoaXMgaXMgbm90IGEgQ2FjaGUgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGFuCmludGVyZmFjZSB0aGF0IGRlc2NyaWJlcyBhIENhY2hlIGltcGxlbWVudGF0aW9uLiBTZWUgdGhlIHNwZWNpZmljYXRpb24gZm9yIG1vcmUgCmRldGFpbHMuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/cache/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/cache/src/CacheException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcQ2FjaGU7CgovKioKICogRXhjZXB0aW9uIGludGVyZmFjZSBmb3IgYWxsIGV4Y2VwdGlvbnMgdGhyb3duIGJ5IGFuIEltcGxlbWVudGluZyBMaWJyYXJ5LgogKi8KaW50ZXJmYWNlIENhY2hlRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/cache/src/CacheItemInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcQ2FjaGU7CgovKioKICogQ2FjaGVJdGVtSW50ZXJmYWNlIGRlZmluZXMgYW4gaW50ZXJmYWNlIGZvciBpbnRlcmFjdGluZyB3aXRoIG9iamVjdHMgaW5zaWRlIGEgY2FjaGUuCiAqCiAqIEVhY2ggSXRlbSBvYmplY3QgTVVTVCBiZSBhc3NvY2lhdGVkIHdpdGggYSBzcGVjaWZpYyBrZXksIHdoaWNoIGNhbiBiZSBzZXQKICogYWNjb3JkaW5nIHRvIHRoZSBpbXBsZW1lbnRpbmcgc3lzdGVtIGFuZCBpcyB0eXBpY2FsbHkgcGFzc2VkIGJ5IHRoZQogKiBDYWNoZVxDYWNoZUl0ZW1Qb29sSW50ZXJmYWNlIG9iamVjdC4KICoKICogVGhlIENhY2hlXENhY2hlSXRlbUludGVyZmFjZSBvYmplY3QgZW5jYXBzdWxhdGVzIHRoZSBzdG9yYWdlIGFuZCByZXRyaWV2YWwgb2YKICogY2FjaGUgaXRlbXMuIEVhY2ggQ2FjaGVcQ2FjaGVJdGVtSW50ZXJmYWNlIGlzIGdlbmVyYXRlZCBieSBhCiAqIENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2Ugb2JqZWN0LCB3aGljaCBpcyByZXNwb25zaWJsZSBmb3IgYW55IHJlcXVpcmVkCiAqIHNldHVwIGFzIHdlbGwgYXMgYXNzb2NpYXRpbmcgdGhlIG9iamVjdCB3aXRoIGEgdW5pcXVlIEtleS4KICogQ2FjaGVcQ2FjaGVJdGVtSW50ZXJmYWNlIG9iamVjdHMgTVVTVCBiZSBhYmxlIHRvIHN0b3JlIGFuZCByZXRyaWV2ZSBhbnkgdHlwZQogKiBvZiBQSFAgdmFsdWUgZGVmaW5lZCBpbiB0aGUgRGF0YSBzZWN0aW9uIG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogKgogKiBDYWxsaW5nIExpYnJhcmllcyBNVVNUIE5PVCBpbnN0YW50aWF0ZSBJdGVtIG9iamVjdHMgdGhlbXNlbHZlcy4gVGhleSBtYXkgb25seQogKiBiZSByZXF1ZXN0ZWQgZnJvbSBhIFBvb2wgb2JqZWN0IHZpYSB0aGUgZ2V0SXRlbSgpIG1ldGhvZC4gIENhbGxpbmcgTGlicmFyaWVzCiAqIFNIT1VMRCBOT1QgYXNzdW1lIHRoYXQgYW4gSXRlbSBjcmVhdGVkIGJ5IG9uZSBJbXBsZW1lbnRpbmcgTGlicmFyeSBpcwogKiBjb21wYXRpYmxlIHdpdGggYSBQb29sIGZyb20gYW5vdGhlciBJbXBsZW1lbnRpbmcgTGlicmFyeS4KICovCmludGVyZmFjZSBDYWNoZUl0ZW1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBrZXkgZm9yIHRoZSBjdXJyZW50IGNhY2hlIGl0ZW0uCiAgICAgKgogICAgICogVGhlIGtleSBpcyBsb2FkZWQgYnkgdGhlIEltcGxlbWVudGluZyBMaWJyYXJ5LCBidXQgc2hvdWxkIGJlIGF2YWlsYWJsZSB0bwogICAgICogdGhlIGhpZ2hlciBsZXZlbCBjYWxsZXJzIHdoZW4gbmVlZGVkLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKiAgIFRoZSBrZXkgc3RyaW5nIGZvciB0aGlzIGNhY2hlIGl0ZW0uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXkoKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgdmFsdWUgb2YgdGhlIGl0ZW0gZnJvbSB0aGUgY2FjaGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2JqZWN0J3Mga2V5LgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBtdXN0IGJlIGlkZW50aWNhbCB0byB0aGUgdmFsdWUgb3JpZ2luYWxseSBzdG9yZWQgYnkgc2V0KCkuCiAgICAgKgogICAgICogSWYgaXNIaXQoKSByZXR1cm5zIGZhbHNlLCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBudWxsLiBOb3RlIHRoYXQgbnVsbAogICAgICogaXMgYSBsZWdpdGltYXRlIGNhY2hlZCB2YWx1ZSwgc28gdGhlIGlzSGl0KCkgbWV0aG9kIFNIT1VMRCBiZSB1c2VkIHRvCiAgICAgKiBkaWZmZXJlbnRpYXRlIGJldHdlZW4gIm51bGwgdmFsdWUgd2FzIGZvdW5kIiBhbmQgIm5vIHZhbHVlIHdhcyBmb3VuZC4iCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICogICBUaGUgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGlzIGNhY2hlIGl0ZW0ncyBrZXksIG9yIG51bGwgaWYgbm90IGZvdW5kLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCk7CgogICAgLyoqCiAgICAgKiBDb25maXJtcyBpZiB0aGUgY2FjaGUgaXRlbSBsb29rdXAgcmVzdWx0ZWQgaW4gYSBjYWNoZSBoaXQuCiAgICAgKgogICAgICogTm90ZTogVGhpcyBtZXRob2QgTVVTVCBOT1QgaGF2ZSBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gY2FsbGluZyBpc0hpdCgpCiAgICAgKiBhbmQgY2FsbGluZyBnZXQoKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqICAgVHJ1ZSBpZiB0aGUgcmVxdWVzdCByZXN1bHRlZCBpbiBhIGNhY2hlIGhpdC4gRmFsc2Ugb3RoZXJ3aXNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNIaXQoKTsKCiAgICAvKioKICAgICAqIFNldHMgdGhlIHZhbHVlIHJlcHJlc2VudGVkIGJ5IHRoaXMgY2FjaGUgaXRlbS4KICAgICAqCiAgICAgKiBUaGUgJHZhbHVlIGFyZ3VtZW50IG1heSBiZSBhbnkgaXRlbSB0aGF0IGNhbiBiZSBzZXJpYWxpemVkIGJ5IFBIUCwKICAgICAqIGFsdGhvdWdoIHRoZSBtZXRob2Qgb2Ygc2VyaWFsaXphdGlvbiBpcyBsZWZ0IHVwIHRvIHRoZSBJbXBsZW1lbnRpbmcKICAgICAqIExpYnJhcnkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICogICBUaGUgc2VyaWFsaXphYmxlIHZhbHVlIHRvIGJlIHN0b3JlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICogICBUaGUgaW52b2tlZCBvYmplY3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXQoJHZhbHVlKTsKCiAgICAvKioKICAgICAqIFNldHMgdGhlIGV4cGlyYXRpb24gdGltZSBmb3IgdGhpcyBjYWNoZSBpdGVtLgogICAgICoKICAgICAqIEBwYXJhbSBcRGF0ZVRpbWVJbnRlcmZhY2V8bnVsbCAkZXhwaXJhdGlvbgogICAgICogICBUaGUgcG9pbnQgaW4gdGltZSBhZnRlciB3aGljaCB0aGUgaXRlbSBNVVNUIGJlIGNvbnNpZGVyZWQgZXhwaXJlZC4KICAgICAqICAgSWYgbnVsbCBpcyBwYXNzZWQgZXhwbGljaXRseSwgYSBkZWZhdWx0IHZhbHVlIE1BWSBiZSB1c2VkLiBJZiBub25lIGlzIHNldCwKICAgICAqICAgdGhlIHZhbHVlIHNob3VsZCBiZSBzdG9yZWQgcGVybWFuZW50bHkgb3IgZm9yIGFzIGxvbmcgYXMgdGhlCiAgICAgKiAgIGltcGxlbWVudGF0aW9uIGFsbG93cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICogICBUaGUgY2FsbGVkIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4cGlyZXNBdCgkZXhwaXJhdGlvbik7CgogICAgLyoqCiAgICAgKiBTZXRzIHRoZSBleHBpcmF0aW9uIHRpbWUgZm9yIHRoaXMgY2FjaGUgaXRlbS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50fFxEYXRlSW50ZXJ2YWx8bnVsbCAkdGltZQogICAgICogICBUaGUgcGVyaW9kIG9mIHRpbWUgZnJvbSB0aGUgcHJlc2VudCBhZnRlciB3aGljaCB0aGUgaXRlbSBNVVNUIGJlIGNvbnNpZGVyZWQKICAgICAqICAgZXhwaXJlZC4gQW4gaW50ZWdlciBwYXJhbWV0ZXIgaXMgdW5kZXJzdG9vZCB0byBiZSB0aGUgdGltZSBpbiBzZWNvbmRzIHVudGlsCiAgICAgKiAgIGV4cGlyYXRpb24uIElmIG51bGwgaXMgcGFzc2VkIGV4cGxpY2l0bHksIGEgZGVmYXVsdCB2YWx1ZSBNQVkgYmUgdXNlZC4KICAgICAqICAgSWYgbm9uZSBpcyBzZXQsIHRoZSB2YWx1ZSBzaG91bGQgYmUgc3RvcmVkIHBlcm1hbmVudGx5IG9yIGZvciBhcyBsb25nIGFzIHRoZQogICAgICogICBpbXBsZW1lbnRhdGlvbiBhbGxvd3MuCiAgICAgKgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqICAgVGhlIGNhbGxlZCBvYmplY3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBleHBpcmVzQWZ0ZXIoJHRpbWUpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/cache/src/CacheItemPoolInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcQ2FjaGU7CgovKioKICogQ2FjaGVJdGVtUG9vbEludGVyZmFjZSBnZW5lcmF0ZXMgQ2FjaGVJdGVtSW50ZXJmYWNlIG9iamVjdHMuCiAqCiAqIFRoZSBwcmltYXJ5IHB1cnBvc2Ugb2YgQ2FjaGVcQ2FjaGVJdGVtUG9vbEludGVyZmFjZSBpcyB0byBhY2NlcHQgYSBrZXkgZnJvbQogKiB0aGUgQ2FsbGluZyBMaWJyYXJ5IGFuZCByZXR1cm4gdGhlIGFzc29jaWF0ZWQgQ2FjaGVcQ2FjaGVJdGVtSW50ZXJmYWNlIG9iamVjdC4KICogSXQgaXMgYWxzbyB0aGUgcHJpbWFyeSBwb2ludCBvZiBpbnRlcmFjdGlvbiB3aXRoIHRoZSBlbnRpcmUgY2FjaGUgY29sbGVjdGlvbi4KICogQWxsIGNvbmZpZ3VyYXRpb24gYW5kIGluaXRpYWxpemF0aW9uIG9mIHRoZSBQb29sIGlzIGxlZnQgdXAgdG8gYW4KICogSW1wbGVtZW50aW5nIExpYnJhcnkuCiAqLwppbnRlcmZhY2UgQ2FjaGVJdGVtUG9vbEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgYSBDYWNoZSBJdGVtIHJlcHJlc2VudGluZyB0aGUgc3BlY2lmaWVkIGtleS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBtdXN0IGFsd2F5cyByZXR1cm4gYSBDYWNoZUl0ZW1JbnRlcmZhY2Ugb2JqZWN0LCBldmVuIGluIGNhc2Ugb2YKICAgICAqIGEgY2FjaGUgbWlzcy4gSXQgTVVTVCBOT1QgcmV0dXJuIG51bGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5CiAgICAgKiAgIFRoZSBrZXkgZm9yIHdoaWNoIHRvIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBDYWNoZSBJdGVtLgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiAgIElmIHRoZSAka2V5IHN0cmluZyBpcyBub3QgYSBsZWdhbCB2YWx1ZSBhIFxQc3JcQ2FjaGVcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiAgIE1VU1QgYmUgdGhyb3duLgogICAgICoKICAgICAqIEByZXR1cm4gQ2FjaGVJdGVtSW50ZXJmYWNlCiAgICAgKiAgIFRoZSBjb3JyZXNwb25kaW5nIENhY2hlIEl0ZW0uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJdGVtKCRrZXkpOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHRyYXZlcnNhYmxlIHNldCBvZiBjYWNoZSBpdGVtcy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJGtleXMKICAgICAqICAgQW4gaW5kZXhlZCBhcnJheSBvZiBrZXlzIG9mIGl0ZW1zIHRvIHJldHJpZXZlLgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiAgIElmIGFueSBvZiB0aGUga2V5cyBpbiAka2V5cyBhcmUgbm90IGEgbGVnYWwgdmFsdWUgYSBcUHNyXENhY2hlXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogICBNVVNUIGJlIHRocm93bi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5fFxUcmF2ZXJzYWJsZQogICAgICogICBBIHRyYXZlcnNhYmxlIGNvbGxlY3Rpb24gb2YgQ2FjaGUgSXRlbXMga2V5ZWQgYnkgdGhlIGNhY2hlIGtleXMgb2YKICAgICAqICAgZWFjaCBpdGVtLiBBIENhY2hlIGl0ZW0gd2lsbCBiZSByZXR1cm5lZCBmb3IgZWFjaCBrZXksIGV2ZW4gaWYgdGhhdAogICAgICogICBrZXkgaXMgbm90IGZvdW5kLiBIb3dldmVyLCBpZiBubyBrZXlzIGFyZSBzcGVjaWZpZWQgdGhlbiBhbiBlbXB0eQogICAgICogICB0cmF2ZXJzYWJsZSBNVVNUIGJlIHJldHVybmVkIGluc3RlYWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJdGVtcyhhcnJheSAka2V5cyA9IGFycmF5KCkpOwoKICAgIC8qKgogICAgICogQ29uZmlybXMgaWYgdGhlIGNhY2hlIGNvbnRhaW5zIHNwZWNpZmllZCBjYWNoZSBpdGVtLgogICAgICoKICAgICAqIE5vdGU6IFRoaXMgbWV0aG9kIE1BWSBhdm9pZCByZXRyaWV2aW5nIHRoZSBjYWNoZWQgdmFsdWUgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuCiAgICAgKiBUaGlzIGNvdWxkIHJlc3VsdCBpbiBhIHJhY2UgY29uZGl0aW9uIHdpdGggQ2FjaGVJdGVtSW50ZXJmYWNlOjpnZXQoKS4gVG8gYXZvaWQKICAgICAqIHN1Y2ggc2l0dWF0aW9uIHVzZSBDYWNoZUl0ZW1JbnRlcmZhY2U6OmlzSGl0KCkgaW5zdGVhZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkKICAgICAqICAgVGhlIGtleSBmb3Igd2hpY2ggdG8gY2hlY2sgZXhpc3RlbmNlLgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiAgIElmIHRoZSAka2V5IHN0cmluZyBpcyBub3QgYSBsZWdhbCB2YWx1ZSBhIFxQc3JcQ2FjaGVcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiAgIE1VU1QgYmUgdGhyb3duLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogICBUcnVlIGlmIGl0ZW0gZXhpc3RzIGluIHRoZSBjYWNoZSwgZmFsc2Ugb3RoZXJ3aXNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSXRlbSgka2V5KTsKCiAgICAvKioKICAgICAqIERlbGV0ZXMgYWxsIGl0ZW1zIGluIHRoZSBwb29sLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogICBUcnVlIGlmIHRoZSBwb29sIHdhcyBzdWNjZXNzZnVsbHkgY2xlYXJlZC4gRmFsc2UgaWYgdGhlcmUgd2FzIGFuIGVycm9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXIoKTsKCiAgICAvKioKICAgICAqIFJlbW92ZXMgdGhlIGl0ZW0gZnJvbSB0aGUgcG9vbC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkKICAgICAqICAgVGhlIGtleSB0byBkZWxldGUuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqICAgSWYgdGhlICRrZXkgc3RyaW5nIGlzIG5vdCBhIGxlZ2FsIHZhbHVlIGEgXFBzclxDYWNoZVxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqICAgTVVTVCBiZSB0aHJvd24uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiAgIFRydWUgaWYgdGhlIGl0ZW0gd2FzIHN1Y2Nlc3NmdWxseSByZW1vdmVkLiBGYWxzZSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGVJdGVtKCRrZXkpOwoKICAgIC8qKgogICAgICogUmVtb3ZlcyBtdWx0aXBsZSBpdGVtcyBmcm9tIHRoZSBwb29sLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAka2V5cwogICAgICogICBBbiBhcnJheSBvZiBrZXlzIHRoYXQgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSB0aGUgcG9vbC4KCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogICBJZiBhbnkgb2YgdGhlIGtleXMgaW4gJGtleXMgYXJlIG5vdCBhIGxlZ2FsIHZhbHVlIGEgXFBzclxDYWNoZVxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqICAgTVVTVCBiZSB0aHJvd24uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiAgIFRydWUgaWYgdGhlIGl0ZW1zIHdlcmUgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuIEZhbHNlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZUl0ZW1zKGFycmF5ICRrZXlzKTsKCiAgICAvKioKICAgICAqIFBlcnNpc3RzIGEgY2FjaGUgaXRlbSBpbW1lZGlhdGVseS4KICAgICAqCiAgICAgKiBAcGFyYW0gQ2FjaGVJdGVtSW50ZXJmYWNlICRpdGVtCiAgICAgKiAgIFRoZSBjYWNoZSBpdGVtIHRvIHNhdmUuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiAgIFRydWUgaWYgdGhlIGl0ZW0gd2FzIHN1Y2Nlc3NmdWxseSBwZXJzaXN0ZWQuIEZhbHNlIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoQ2FjaGVJdGVtSW50ZXJmYWNlICRpdGVtKTsKCiAgICAvKioKICAgICAqIFNldHMgYSBjYWNoZSBpdGVtIHRvIGJlIHBlcnNpc3RlZCBsYXRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gQ2FjaGVJdGVtSW50ZXJmYWNlICRpdGVtCiAgICAgKiAgIFRoZSBjYWNoZSBpdGVtIHRvIHNhdmUuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKiAgIEZhbHNlIGlmIHRoZSBpdGVtIGNvdWxkIG5vdCBiZSBxdWV1ZWQgb3IgaWYgYSBjb21taXQgd2FzIGF0dGVtcHRlZCBhbmQgZmFpbGVkLiBUcnVlIG90aGVyd2lzZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVEZWZlcnJlZChDYWNoZUl0ZW1JbnRlcmZhY2UgJGl0ZW0pOwoKICAgIC8qKgogICAgICogUGVyc2lzdHMgYW55IGRlZmVycmVkIGNhY2hlIGl0ZW1zLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICogICBUcnVlIGlmIGFsbCBub3QteWV0LXNhdmVkIGl0ZW1zIHdlcmUgc3VjY2Vzc2Z1bGx5IHNhdmVkIG9yIHRoZXJlIHdlcmUgbm9uZS4gRmFsc2Ugb3RoZXJ3aXNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tbWl0KCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/cache/src/InvalidArgumentException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcQ2FjaGU7CgovKioKICogRXhjZXB0aW9uIGludGVyZmFjZSBmb3IgaW52YWxpZCBjYWNoZSBhcmd1bWVudHMuCiAqCiAqIEFueSB0aW1lIGFuIGludmFsaWQgYXJndW1lbnQgaXMgcGFzc2VkIGludG8gYSBtZXRob2QgaXQgbXVzdCB0aHJvdyBhbgogKiBleGNlcHRpb24gY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBQc3JcQ2FjaGVcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLgogKi8KaW50ZXJmYWNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBleHRlbmRzIENhY2hlRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUsIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciBieSByZWxlYXNlLgoKIyMgMS4wLjEgLSAyMDE2LTA4LTA2CgojIyMgQWRkZWQKCi0gTm90aGluZy4KCiMjIyBEZXByZWNhdGVkCgotIE5vdGhpbmcuCgojIyMgUmVtb3ZlZAoKLSBOb3RoaW5nLgoKIyMjIEZpeGVkCgotIFVwZGF0ZWQgYWxsIGBAcmV0dXJuIHNlbGZgIGFubm90YXRpb24gcmVmZXJlbmNlcyBpbiBpbnRlcmZhY2VzIHRvIHVzZQogIGBAcmV0dXJuIHN0YXRpY2AsIHdoaWNoIG1vcmUgY2xvc2VsbHkgZm9sbG93cyB0aGUgc2VtYW50aWNzIG9mIHRoZQogIHNwZWNpZmljYXRpb24uCi0gVXBkYXRlZCB0aGUgYE1lc3NhZ2VJbnRlcmZhY2U6OmdldEhlYWRlcnMoKWAgcmV0dXJuIGFubm90YXRpb24gdG8gdXNlIHRoZQogIHZhbHVlIGBzdHJpbmdbXVtdYCwgaW5kaWNhdGluZyB0aGUgZm9ybWF0IGlzIGEgbmVzdGVkIGFycmF5IG9mIHN0cmluZ3MuCi0gVXBkYXRlZCB0aGUgYEBsaW5rYCBhbm5vdGF0aW9uIGZvciBgUmVxdWVzdEludGVyZmFjZTo6d2l0aFJlcXVlc3RUYXJnZXQoKWAKICB0byBwb2ludCB0byB0aGUgY29ycmVjdCBzZWN0aW9uIG9mIFJGQyA3MjMwLgotIFVwZGF0ZWQgdGhlIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOjp3aXRoVXBsb2FkZWRGaWxlcygpYCBwYXJhbWV0ZXIgYW5ub3RhdGlvbgogIHRvIGFkZCB0aGUgcGFyYW1ldGVyIG5hbWUgKGAkdXBsb2FkZWRGaWxlc2ApLgotIFVwZGF0ZWQgYSBgQHRocm93c2AgYW5ub3RhdGlvbiBmb3IgdGhlIGBVcGxvYWRlZEZpbGVJbnRlcmZhY2U6Om1vdmVUbygpYAogIG1ldGhvZCB0byBjb3JyZWN0bHkgcmVmZXJlbmNlIHRoZSBtZXRob2QgcGFyYW1ldGVyIChpdCB3YXMgcmVmZXJlbmNpbmcgYW4KICBpbmNvcnJlY3QgcGFyYW1ldGVyIG5hbWUgcHJldmlvdXNseSkuCgojIyAxLjAuMCAtIDIwMTYtMDUtMTgKCkluaXRpYWwgc3RhYmxlIHJlbGVhc2U7IHJlZmxlY3RzIGFjY2VwdGVkIFBTUi03IHNwZWNpZmljYXRpb24uCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtbWVzc2FnZSIsCiAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAia2V5d29yZHMiOiBbInBzciIsICJwc3ItNyIsICJodHRwIiwgImh0dHAtbWVzc2FnZSIsICJyZXF1ZXN0IiwgInJlc3BvbnNlIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj01LjMuMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE0IFBIUCBGcmFtZXdvcmsgSW50ZXJvcGVyYWJpbGl0eSBHcm91cAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSAKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyAKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIApmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UFNSIEh0dHAgTWVzc2FnZQo9PT09PT09PT09PT09PT09CgpUaGlzIHJlcG9zaXRvcnkgaG9sZHMgYWxsIGludGVyZmFjZXMvY2xhc3Nlcy90cmFpdHMgcmVsYXRlZCB0bwpbUFNSLTddKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykuCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBIVFRQIG1lc3NhZ2UgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGFuCmludGVyZmFjZSB0aGF0IGRlc2NyaWJlcyBhIEhUVFAgbWVzc2FnZS4gU2VlIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCgpVc2FnZQotLS0tLQoKV2UnbGwgY2VydGFpbmx5IG5lZWQgc29tZSBzdHVmZiBpbiBoZXJlLg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/MessageInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIEhUVFAgbWVzc2FnZXMgY29uc2lzdCBvZiByZXF1ZXN0cyBmcm9tIGEgY2xpZW50IHRvIGEgc2VydmVyIGFuZCByZXNwb25zZXMKICogZnJvbSBhIHNlcnZlciB0byBhIGNsaWVudC4gVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyB0aGUgbWV0aG9kcyBjb21tb24gdG8KICogZWFjaC4KICoKICogTWVzc2FnZXMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqCiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzAudHh0CiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzEudHh0CiAqLwppbnRlcmZhY2UgTWVzc2FnZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uIGFzIGEgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBzdHJpbmcgTVVTVCBjb250YWluIG9ubHkgdGhlIEhUVFAgdmVyc2lvbiBudW1iZXIgKGUuZy4sICIxLjEiLCAiMS4wIikuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgSFRUUCBwcm90b2NvbCB2ZXJzaW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdG9jb2xWZXJzaW9uKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIEhUVFAgcHJvdG9jb2wgdmVyc2lvbi4KICAgICAqCiAgICAgKiBUaGUgdmVyc2lvbiBzdHJpbmcgTVVTVCBjb250YWluIG9ubHkgdGhlIEhUVFAgdmVyc2lvbiBudW1iZXIgKGUuZy4sCiAgICAgKiAiMS4xIiwgIjEuMCIpLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIG5ldyBwcm90b2NvbCB2ZXJzaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZlcnNpb24gSFRUUCBwcm90b2NvbCB2ZXJzaW9uCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFByb3RvY29sVmVyc2lvbigkdmVyc2lvbik7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYWxsIG1lc3NhZ2UgaGVhZGVyIHZhbHVlcy4KICAgICAqCiAgICAgKiBUaGUga2V5cyByZXByZXNlbnQgdGhlIGhlYWRlciBuYW1lIGFzIGl0IHdpbGwgYmUgc2VudCBvdmVyIHRoZSB3aXJlLCBhbmQKICAgICAqIGVhY2ggdmFsdWUgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhc3NvY2lhdGVkIHdpdGggdGhlIGhlYWRlci4KICAgICAqCiAgICAgKiAgICAgLy8gUmVwcmVzZW50IHRoZSBoZWFkZXJzIGFzIGEgc3RyaW5nCiAgICAgKiAgICAgZm9yZWFjaCAoJG1lc3NhZ2UtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgKiAgICAgICAgIGVjaG8gJG5hbWUgLiAiOiAiIC4gaW1wbG9kZSgiLCAiLCAkdmFsdWVzKTsKICAgICAqICAgICB9CiAgICAgKgogICAgICogICAgIC8vIEVtaXQgaGVhZGVycyBpdGVyYXRpdmVseToKICAgICAqICAgICBmb3JlYWNoICgkbWVzc2FnZS0+Z2V0SGVhZGVycygpIGFzICRuYW1lID0+ICR2YWx1ZXMpIHsKICAgICAqICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpIHsKICAgICAqICAgICAgICAgICAgIGhlYWRlcihzcHJpbnRmKCclczogJXMnLCAkbmFtZSwgJHZhbHVlKSwgZmFsc2UpOwogICAgICogICAgICAgICB9CiAgICAgKiAgICAgfQogICAgICoKICAgICAqIFdoaWxlIGhlYWRlciBuYW1lcyBhcmUgbm90IGNhc2Utc2Vuc2l0aXZlLCBnZXRIZWFkZXJzKCkgd2lsbCBwcmVzZXJ2ZSB0aGUKICAgICAqIGV4YWN0IGNhc2UgaW4gd2hpY2ggaGVhZGVycyB3ZXJlIG9yaWdpbmFsbHkgc3BlY2lmaWVkLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW11bXSBSZXR1cm5zIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHRoZSBtZXNzYWdlJ3MgaGVhZGVycy4gRWFjaAogICAgICogICAgIGtleSBNVVNUIGJlIGEgaGVhZGVyIG5hbWUsIGFuZCBlYWNoIHZhbHVlIE1VU1QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncwogICAgICogICAgIGZvciB0aGF0IGhlYWRlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKTsKCiAgICAvKioKICAgICAqIENoZWNrcyBpZiBhIGhlYWRlciBleGlzdHMgYnkgdGhlIGdpdmVuIGNhc2UtaW5zZW5zaXRpdmUgbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUuCiAgICAgKiBAcmV0dXJuIGJvb2wgUmV0dXJucyB0cnVlIGlmIGFueSBoZWFkZXIgbmFtZXMgbWF0Y2ggdGhlIGdpdmVuIGhlYWRlcgogICAgICogICAgIG5hbWUgdXNpbmcgYSBjYXNlLWluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJpc29uLiBSZXR1cm5zIGZhbHNlIGlmCiAgICAgKiAgICAgbm8gbWF0Y2hpbmcgaGVhZGVyIG5hbWUgaXMgZm91bmQgaW4gdGhlIG1lc3NhZ2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNIZWFkZXIoJG5hbWUpOwoKICAgIC8qKgogICAgICogUmV0cmlldmVzIGEgbWVzc2FnZSBoZWFkZXIgdmFsdWUgYnkgdGhlIGdpdmVuIGNhc2UtaW5zZW5zaXRpdmUgbmFtZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFuIGFycmF5IG9mIGFsbCB0aGUgaGVhZGVyIHZhbHVlcyBvZiB0aGUgZ2l2ZW4KICAgICAqIGNhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIG5hbWUuCiAgICAgKgogICAgICogSWYgdGhlIGhlYWRlciBkb2VzIG5vdCBhcHBlYXIgaW4gdGhlIG1lc3NhZ2UsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuCiAgICAgKiBlbXB0eSBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUuCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdIEFuIGFycmF5IG9mIHN0cmluZyB2YWx1ZXMgYXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbgogICAgICogICAgaGVhZGVyLiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVAogICAgICogICAgcmV0dXJuIGFuIGVtcHR5IGFycmF5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKCRuYW1lKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlcyBhIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgb2YgdGhlIHZhbHVlcyBmb3IgYSBzaW5nbGUgaGVhZGVyLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYWxsIG9mIHRoZSBoZWFkZXIgdmFsdWVzIG9mIHRoZSBnaXZlbgogICAgICogY2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgbmFtZSBhcyBhIHN0cmluZyBjb25jYXRlbmF0ZWQgdG9nZXRoZXIgdXNpbmcKICAgICAqIGEgY29tbWEuCiAgICAgKgogICAgICogTk9URTogTm90IGFsbCBoZWFkZXIgdmFsdWVzIG1heSBiZSBhcHByb3ByaWF0ZWx5IHJlcHJlc2VudGVkIHVzaW5nCiAgICAgKiBjb21tYSBjb25jYXRlbmF0aW9uLiBGb3Igc3VjaCBoZWFkZXJzLCB1c2UgZ2V0SGVhZGVyKCkgaW5zdGVhZAogICAgICogYW5kIHN1cHBseSB5b3VyIG93biBkZWxpbWl0ZXIgd2hlbiBjb25jYXRlbmF0aW5nLgogICAgICoKICAgICAqIElmIHRoZSBoZWFkZXIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBtZXNzYWdlLCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAqIEByZXR1cm4gc3RyaW5nIEEgc3RyaW5nIG9mIHZhbHVlcyBhcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuIGhlYWRlcgogICAgICogICAgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIHVzaW5nIGEgY29tbWEuIElmIHRoZSBoZWFkZXIgZG9lcyBub3QgYXBwZWFyIGluCiAgICAgKiAgICB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyTGluZSgkbmFtZSk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgdmFsdWUgcmVwbGFjaW5nIHRoZSBzcGVjaWZpZWQgaGVhZGVyLgogICAgICoKICAgICAqIFdoaWxlIGhlYWRlciBuYW1lcyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSwgdGhlIGNhc2luZyBvZiB0aGUgaGVhZGVyIHdpbGwKICAgICAqIGJlIHByZXNlcnZlZCBieSB0aGlzIGZ1bmN0aW9uLCBhbmQgcmV0dXJuZWQgZnJvbSBnZXRIZWFkZXJzKCkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IGFuZC9vciB1cGRhdGVkIGhlYWRlciBhbmQgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBmaWVsZCBuYW1lLgogICAgICogQHBhcmFtIHN0cmluZ3xzdHJpbmdbXSAkdmFsdWUgSGVhZGVyIHZhbHVlKHMpLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBoZWFkZXIgbmFtZXMgb3IgdmFsdWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhlYWRlcigkbmFtZSwgJHZhbHVlKTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgaGVhZGVyIGFwcGVuZGVkIHdpdGggdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIEV4aXN0aW5nIHZhbHVlcyBmb3IgdGhlIHNwZWNpZmllZCBoZWFkZXIgd2lsbCBiZSBtYWludGFpbmVkLiBUaGUgbmV3CiAgICAgKiB2YWx1ZShzKSB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBleGlzdGluZyBsaXN0LiBJZiB0aGUgaGVhZGVyIGRpZCBub3QKICAgICAqIGV4aXN0IHByZXZpb3VzbHksIGl0IHdpbGwgYmUgYWRkZWQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IGhlYWRlciBhbmQvb3IgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBmaWVsZCBuYW1lIHRvIGFkZC4KICAgICAqIEBwYXJhbSBzdHJpbmd8c3RyaW5nW10gJHZhbHVlIEhlYWRlciB2YWx1ZShzKS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgaGVhZGVyIG5hbWVzIG9yIHZhbHVlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhBZGRlZEhlYWRlcigkbmFtZSwgJHZhbHVlKTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRob3V0IHRoZSBzcGVjaWZpZWQgaGVhZGVyLgogICAgICoKICAgICAqIEhlYWRlciByZXNvbHV0aW9uIE1VU1QgYmUgZG9uZSB3aXRob3V0IGNhc2Utc2Vuc2l0aXZpdHkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgcmVtb3ZlcwogICAgICogdGhlIG5hbWVkIGhlYWRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUgdG8gcmVtb3ZlLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRIZWFkZXIoJG5hbWUpOwoKICAgIC8qKgogICAgICogR2V0cyB0aGUgYm9keSBvZiB0aGUgbWVzc2FnZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZSBSZXR1cm5zIHRoZSBib2R5IGFzIGEgc3RyZWFtLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Qm9keSgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlIGJvZHkuCiAgICAgKgogICAgICogVGhlIGJvZHkgTVVTVCBiZSBhIFN0cmVhbUludGVyZmFjZSBvYmplY3QuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGEgbmV3IGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IGJvZHkgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJGJvZHkgQm9keS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gV2hlbiB0aGUgYm9keSBpcyBub3QgdmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/RequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBjbGllbnQtc2lkZSByZXF1ZXN0LgogKgogKiBQZXIgdGhlIEhUVFAgc3BlY2lmaWNhdGlvbiwgdGhpcyBpbnRlcmZhY2UgaW5jbHVkZXMgcHJvcGVydGllcyBmb3IKICogZWFjaCBvZiB0aGUgZm9sbG93aW5nOgogKgogKiAtIFByb3RvY29sIHZlcnNpb24KICogLSBIVFRQIG1ldGhvZAogKiAtIFVSSQogKiAtIEhlYWRlcnMKICogLSBNZXNzYWdlIGJvZHkKICoKICogRHVyaW5nIGNvbnN0cnVjdGlvbiwgaW1wbGVtZW50YXRpb25zIE1VU1QgYXR0ZW1wdCB0byBzZXQgdGhlIEhvc3QgaGVhZGVyIGZyb20KICogYSBwcm92aWRlZCBVUkkgaWYgbm8gSG9zdCBoZWFkZXIgaXMgcHJvdmlkZWQuCiAqCiAqIFJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGltbXV0YWJsZTsgYWxsIG1ldGhvZHMgdGhhdCBtaWdodCBjaGFuZ2Ugc3RhdGUgTVVTVAogKiBiZSBpbXBsZW1lbnRlZCBzdWNoIHRoYXQgdGhleSByZXRhaW4gdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBjdXJyZW50CiAqIG1lc3NhZ2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFJlcXVlc3RJbnRlcmZhY2UgZXh0ZW5kcyBNZXNzYWdlSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdCB0YXJnZXQuCiAgICAgKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdC10YXJnZXQgZWl0aGVyIGFzIGl0IHdpbGwgYXBwZWFyIChmb3IKICAgICAqIGNsaWVudHMpLCBhcyBpdCBhcHBlYXJlZCBhdCByZXF1ZXN0IChmb3Igc2VydmVycyksIG9yIGFzIGl0IHdhcwogICAgICogc3BlY2lmaWVkIGZvciB0aGUgaW5zdGFuY2UgKHNlZSB3aXRoUmVxdWVzdFRhcmdldCgpKS4KICAgICAqCiAgICAgKiBJbiBtb3N0IGNhc2VzLCB0aGlzIHdpbGwgYmUgdGhlIG9yaWdpbi1mb3JtIG9mIHRoZSBjb21wb3NlZCBVUkksCiAgICAgKiB1bmxlc3MgYSB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIChzZWUKICAgICAqIHdpdGhSZXF1ZXN0VGFyZ2V0KCkgYmVsb3cpLgogICAgICoKICAgICAqIElmIG5vIFVSSSBpcyBhdmFpbGFibGUsIGFuZCBubyByZXF1ZXN0LXRhcmdldCBoYXMgYmVlbiBzcGVjaWZpY2FsbHkKICAgICAqIHByb3ZpZGVkLCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiB0aGUgc3RyaW5nICIvIi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdFRhcmdldCgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmljIHJlcXVlc3QtdGFyZ2V0LgogICAgICoKICAgICAqIElmIHRoZSByZXF1ZXN0IG5lZWRzIGEgbm9uLW9yaWdpbi1mb3JtIHJlcXVlc3QtdGFyZ2V0IOKAlCBlLmcuLCBmb3IKICAgICAqIHNwZWNpZnlpbmcgYW4gYWJzb2x1dGUtZm9ybSwgYXV0aG9yaXR5LWZvcm0sIG9yIGFzdGVyaXNrLWZvcm0g4oCUCiAgICAgKiB0aGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkCiAgICAgKiByZXF1ZXN0LXRhcmdldCwgdmVyYmF0aW0uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogY2hhbmdlZCByZXF1ZXN0IHRhcmdldC4KICAgICAqCiAgICAgKiBAbGluayBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tNS4zIChmb3IgdGhlIHZhcmlvdXMKICAgICAqICAgICByZXF1ZXN0LXRhcmdldCBmb3JtcyBhbGxvd2VkIGluIHJlcXVlc3QgbWVzc2FnZXMpCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHJlcXVlc3RUYXJnZXQKICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUmVxdWVzdFRhcmdldCgkcmVxdWVzdFRhcmdldCk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgdGhlIEhUVFAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgdGhlIHJlcXVlc3QgbWV0aG9kLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0aG9kKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgSFRUUCBtZXRob2QuCiAgICAgKgogICAgICogV2hpbGUgSFRUUCBtZXRob2QgbmFtZXMgYXJlIHR5cGljYWxseSBhbGwgdXBwZXJjYXNlIGNoYXJhY3RlcnMsIEhUVFAKICAgICAqIG1ldGhvZCBuYW1lcyBhcmUgY2FzZS1zZW5zaXRpdmUgYW5kIHRodXMgaW1wbGVtZW50YXRpb25zIFNIT1VMRCBOT1QKICAgICAqIG1vZGlmeSB0aGUgZ2l2ZW4gc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIGNoYW5nZWQgcmVxdWVzdCBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kIENhc2Utc2Vuc2l0aXZlIG1ldGhvZC4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgSFRUUCBtZXRob2RzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aE1ldGhvZCgkbWV0aG9kKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgVVJJIGluc3RhbmNlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGEgVXJpSW50ZXJmYWNlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjMKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlIFJldHVybnMgYSBVcmlJbnRlcmZhY2UgaW5zdGFuY2UKICAgICAqICAgICByZXByZXNlbnRpbmcgdGhlIFVSSSBvZiB0aGUgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVyaSgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBVUkkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCB1cGRhdGUgdGhlIEhvc3QgaGVhZGVyIG9mIHRoZSByZXR1cm5lZCByZXF1ZXN0IGJ5CiAgICAgKiBkZWZhdWx0IGlmIHRoZSBVUkkgY29udGFpbnMgYSBob3N0IGNvbXBvbmVudC4gSWYgdGhlIFVSSSBkb2VzIG5vdAogICAgICogY29udGFpbiBhIGhvc3QgY29tcG9uZW50LCBhbnkgcHJlLWV4aXN0aW5nIEhvc3QgaGVhZGVyIE1VU1QgYmUgY2FycmllZAogICAgICogb3ZlciB0byB0aGUgcmV0dXJuZWQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBZb3UgY2FuIG9wdC1pbiB0byBwcmVzZXJ2aW5nIHRoZSBvcmlnaW5hbCBzdGF0ZSBvZiB0aGUgSG9zdCBoZWFkZXIgYnkKICAgICAqIHNldHRpbmcgYCRwcmVzZXJ2ZUhvc3RgIHRvIGB0cnVlYC4gV2hlbiBgJHByZXNlcnZlSG9zdGAgaXMgc2V0IHRvCiAgICAgKiBgdHJ1ZWAsIHRoaXMgbWV0aG9kIGludGVyYWN0cyB3aXRoIHRoZSBIb3N0IGhlYWRlciBpbiB0aGUgZm9sbG93aW5nIHdheXM6CiAgICAgKgogICAgICogLSBJZiB0aGUgSG9zdCBoZWFkZXIgaXMgbWlzc2luZyBvciBlbXB0eSwgYW5kIHRoZSBuZXcgVVJJIGNvbnRhaW5zCiAgICAgKiAgIGEgaG9zdCBjb21wb25lbnQsIHRoaXMgbWV0aG9kIE1VU1QgdXBkYXRlIHRoZSBIb3N0IGhlYWRlciBpbiB0aGUgcmV0dXJuZWQKICAgICAqICAgcmVxdWVzdC4KICAgICAqIC0gSWYgdGhlIEhvc3QgaGVhZGVyIGlzIG1pc3Npbmcgb3IgZW1wdHksIGFuZCB0aGUgbmV3IFVSSSBkb2VzIG5vdCBjb250YWluIGEKICAgICAqICAgaG9zdCBjb21wb25lbnQsIHRoaXMgbWV0aG9kIE1VU1QgTk9UIHVwZGF0ZSB0aGUgSG9zdCBoZWFkZXIgaW4gdGhlIHJldHVybmVkCiAgICAgKiAgIHJlcXVlc3QuCiAgICAgKiAtIElmIGEgSG9zdCBoZWFkZXIgaXMgcHJlc2VudCBhbmQgbm9uLWVtcHR5LCB0aGlzIG1ldGhvZCBNVVNUIE5PVCB1cGRhdGUKICAgICAqICAgdGhlIEhvc3QgaGVhZGVyIGluIHRoZSByZXR1cm5lZCByZXF1ZXN0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIG5ldyBVcmlJbnRlcmZhY2UgaW5zdGFuY2UuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMwogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpIE5ldyByZXF1ZXN0IFVSSSB0byB1c2UuCiAgICAgKiBAcGFyYW0gYm9vbCAkcHJlc2VydmVIb3N0IFByZXNlcnZlIHRoZSBvcmlnaW5hbCBzdGF0ZSBvZiB0aGUgSG9zdCBoZWFkZXIuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFVyaShVcmlJbnRlcmZhY2UgJHVyaSwgJHByZXNlcnZlSG9zdCA9IGZhbHNlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/ResponseInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBzZXJ2ZXItc2lkZSByZXNwb25zZS4KICoKICogUGVyIHRoZSBIVFRQIHNwZWNpZmljYXRpb24sIHRoaXMgaW50ZXJmYWNlIGluY2x1ZGVzIHByb3BlcnRpZXMgZm9yCiAqIGVhY2ggb2YgdGhlIGZvbGxvd2luZzoKICoKICogLSBQcm90b2NvbCB2ZXJzaW9uCiAqIC0gU3RhdHVzIGNvZGUgYW5kIHJlYXNvbiBwaHJhc2UKICogLSBIZWFkZXJzCiAqIC0gTWVzc2FnZSBib2R5CiAqCiAqIFJlc3BvbnNlcyBhcmUgY29uc2lkZXJlZCBpbW11dGFibGU7IGFsbCBtZXRob2RzIHRoYXQgbWlnaHQgY2hhbmdlIHN0YXRlIE1VU1QKICogYmUgaW1wbGVtZW50ZWQgc3VjaCB0aGF0IHRoZXkgcmV0YWluIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY3VycmVudAogKiBtZXNzYWdlIGFuZCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgY2hhbmdlZCBzdGF0ZS4KICovCmludGVyZmFjZSBSZXNwb25zZUludGVyZmFjZSBleHRlbmRzIE1lc3NhZ2VJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBHZXRzIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBUaGUgc3RhdHVzIGNvZGUgaXMgYSAzLWRpZ2l0IGludGVnZXIgcmVzdWx0IGNvZGUgb2YgdGhlIHNlcnZlcidzIGF0dGVtcHQKICAgICAqIHRvIHVuZGVyc3RhbmQgYW5kIHNhdGlzZnkgdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogQHJldHVybiBpbnQgU3RhdHVzIGNvZGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0dXNDb2RlKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHN0YXR1cyBjb2RlIGFuZCwgb3B0aW9uYWxseSwgcmVhc29uIHBocmFzZS4KICAgICAqCiAgICAgKiBJZiBubyByZWFzb24gcGhyYXNlIGlzIHNwZWNpZmllZCwgaW1wbGVtZW50YXRpb25zIE1BWSBjaG9vc2UgdG8gZGVmYXVsdAogICAgICogdG8gdGhlIFJGQyA3MjMxIG9yIElBTkEgcmVjb21tZW5kZWQgcmVhc29uIHBocmFzZSBmb3IgdGhlIHJlc3BvbnNlJ3MKICAgICAqIHN0YXR1cyBjb2RlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgc3RhdHVzIGFuZCByZWFzb24gcGhyYXNlLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjc2VjdGlvbi02CiAgICAgKiBAbGluayBodHRwOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2h0dHAtc3RhdHVzLWNvZGVzL2h0dHAtc3RhdHVzLWNvZGVzLnhodG1sCiAgICAgKiBAcGFyYW0gaW50ICRjb2RlIFRoZSAzLWRpZ2l0IGludGVnZXIgcmVzdWx0IGNvZGUgdG8gc2V0LgogICAgICogQHBhcmFtIHN0cmluZyAkcmVhc29uUGhyYXNlIFRoZSByZWFzb24gcGhyYXNlIHRvIHVzZSB3aXRoIHRoZQogICAgICogICAgIHByb3ZpZGVkIHN0YXR1cyBjb2RlOyBpZiBub25lIGlzIHByb3ZpZGVkLCBpbXBsZW1lbnRhdGlvbnMgTUFZCiAgICAgKiAgICAgdXNlIHRoZSBkZWZhdWx0cyBhcyBzdWdnZXN0ZWQgaW4gdGhlIEhUVFAgc3BlY2lmaWNhdGlvbi4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gRm9yIGludmFsaWQgc3RhdHVzIGNvZGUgYXJndW1lbnRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFN0YXR1cygkY29kZSwgJHJlYXNvblBocmFzZSA9ICcnKTsKCiAgICAvKioKICAgICAqIEdldHMgdGhlIHJlc3BvbnNlIHJlYXNvbiBwaHJhc2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBCZWNhdXNlIGEgcmVhc29uIHBocmFzZSBpcyBub3QgYSByZXF1aXJlZCBlbGVtZW50IGluIGEgcmVzcG9uc2UKICAgICAqIHN0YXR1cyBsaW5lLCB0aGUgcmVhc29uIHBocmFzZSB2YWx1ZSBNQVkgYmUgbnVsbC4gSW1wbGVtZW50YXRpb25zIE1BWQogICAgICogY2hvb3NlIHRvIHJldHVybiB0aGUgZGVmYXVsdCBSRkMgNzIzMSByZWNvbW1lbmRlZCByZWFzb24gcGhyYXNlIChvciB0aG9zZQogICAgICogbGlzdGVkIGluIHRoZSBJQU5BIEhUVFAgU3RhdHVzIENvZGUgUmVnaXN0cnkpIGZvciB0aGUgcmVzcG9uc2UncwogICAgICogc3RhdHVzIGNvZGUuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1zdGF0dXMtY29kZXMvaHR0cC1zdGF0dXMtY29kZXMueGh0bWwKICAgICAqIEByZXR1cm4gc3RyaW5nIFJlYXNvbiBwaHJhc2U7IG11c3QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiBub25lIHByZXNlbnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZWFzb25QaHJhc2UoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/ServerRequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIGluY29taW5nLCBzZXJ2ZXItc2lkZSBIVFRQIHJlcXVlc3QuCiAqCiAqIFBlciB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uLCB0aGlzIGludGVyZmFjZSBpbmNsdWRlcyBwcm9wZXJ0aWVzIGZvcgogKiBlYWNoIG9mIHRoZSBmb2xsb3dpbmc6CiAqCiAqIC0gUHJvdG9jb2wgdmVyc2lvbgogKiAtIEhUVFAgbWV0aG9kCiAqIC0gVVJJCiAqIC0gSGVhZGVycwogKiAtIE1lc3NhZ2UgYm9keQogKgogKiBBZGRpdGlvbmFsbHksIGl0IGVuY2Fwc3VsYXRlcyBhbGwgZGF0YSBhcyBpdCBoYXMgYXJyaXZlZCB0byB0aGUKICogYXBwbGljYXRpb24gZnJvbSB0aGUgQ0dJIGFuZC9vciBQSFAgZW52aXJvbm1lbnQsIGluY2x1ZGluZzoKICoKICogLSBUaGUgdmFsdWVzIHJlcHJlc2VudGVkIGluICRfU0VSVkVSLgogKiAtIEFueSBjb29raWVzIHByb3ZpZGVkIChnZW5lcmFsbHkgdmlhICRfQ09PS0lFKQogKiAtIFF1ZXJ5IHN0cmluZyBhcmd1bWVudHMgKGdlbmVyYWxseSB2aWEgJF9HRVQsIG9yIGFzIHBhcnNlZCB2aWEgcGFyc2Vfc3RyKCkpCiAqIC0gVXBsb2FkIGZpbGVzLCBpZiBhbnkgKGFzIHJlcHJlc2VudGVkIGJ5ICRfRklMRVMpCiAqIC0gRGVzZXJpYWxpemVkIGJvZHkgcGFyYW1ldGVycyAoZ2VuZXJhbGx5IGZyb20gJF9QT1NUKQogKgogKiAkX1NFUlZFUiB2YWx1ZXMgTVVTVCBiZSB0cmVhdGVkIGFzIGltbXV0YWJsZSwgYXMgdGhleSByZXByZXNlbnQgYXBwbGljYXRpb24KICogc3RhdGUgYXQgdGhlIHRpbWUgb2YgcmVxdWVzdDsgYXMgc3VjaCwgbm8gbWV0aG9kcyBhcmUgcHJvdmlkZWQgdG8gYWxsb3cKICogbW9kaWZpY2F0aW9uIG9mIHRob3NlIHZhbHVlcy4gVGhlIG90aGVyIHZhbHVlcyBwcm92aWRlIHN1Y2ggbWV0aG9kcywgYXMgdGhleQogKiBjYW4gYmUgcmVzdG9yZWQgZnJvbSAkX1NFUlZFUiBvciB0aGUgcmVxdWVzdCBib2R5LCBhbmQgbWF5IG5lZWQgdHJlYXRtZW50CiAqIGR1cmluZyB0aGUgYXBwbGljYXRpb24gKGUuZy4sIGJvZHkgcGFyYW1ldGVycyBtYXkgYmUgZGVzZXJpYWxpemVkIGJhc2VkIG9uCiAqIGNvbnRlbnQgdHlwZSkuCiAqCiAqIEFkZGl0aW9uYWxseSwgdGhpcyBpbnRlcmZhY2UgcmVjb2duaXplcyB0aGUgdXRpbGl0eSBvZiBpbnRyb3NwZWN0aW5nIGEKICogcmVxdWVzdCB0byBkZXJpdmUgYW5kIG1hdGNoIGFkZGl0aW9uYWwgcGFyYW1ldGVycyAoZS5nLiwgdmlhIFVSSSBwYXRoCiAqIG1hdGNoaW5nLCBkZWNyeXB0aW5nIGNvb2tpZSB2YWx1ZXMsIGRlc2VyaWFsaXppbmcgbm9uLWZvcm0tZW5jb2RlZCBib2R5CiAqIGNvbnRlbnQsIG1hdGNoaW5nIGF1dGhvcml6YXRpb24gaGVhZGVycyB0byB1c2VycywgZXRjKS4gVGhlc2UgcGFyYW1ldGVycwogKiBhcmUgc3RvcmVkIGluIGFuICJhdHRyaWJ1dGVzIiBwcm9wZXJ0eS4KICoKICogUmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqLwppbnRlcmZhY2UgU2VydmVyUmVxdWVzdEludGVyZmFjZSBleHRlbmRzIFJlcXVlc3RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBzZXJ2ZXIgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBSZXRyaWV2ZXMgZGF0YSByZWxhdGVkIHRvIHRoZSBpbmNvbWluZyByZXF1ZXN0IGVudmlyb25tZW50LAogICAgICogdHlwaWNhbGx5IGRlcml2ZWQgZnJvbSBQSFAncyAkX1NFUlZFUiBzdXBlcmdsb2JhbC4gVGhlIGRhdGEgSVMgTk9UCiAgICAgKiBSRVFVSVJFRCB0byBvcmlnaW5hdGUgZnJvbSAkX1NFUlZFUi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJQYXJhbXMoKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIGNvb2tpZXMuCiAgICAgKgogICAgICogUmV0cmlldmVzIGNvb2tpZXMgc2VudCBieSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIuCiAgICAgKgogICAgICogVGhlIGRhdGEgTVVTVCBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHN0cnVjdHVyZSBvZiB0aGUgJF9DT09LSUUKICAgICAqIHN1cGVyZ2xvYmFsLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvb2tpZVBhcmFtcygpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBjb29raWVzLgogICAgICoKICAgICAqIFRoZSBkYXRhIElTIE5PVCBSRVFVSVJFRCB0byBjb21lIGZyb20gdGhlICRfQ09PS0lFIHN1cGVyZ2xvYmFsLCBidXQgTVVTVAogICAgICogYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBzdHJ1Y3R1cmUgb2YgJF9DT09LSUUuIFR5cGljYWxseSwgdGhpcyBkYXRhIHdpbGwKICAgICAqIGJlIGluamVjdGVkIGF0IGluc3RhbnRpYXRpb24uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBOT1QgdXBkYXRlIHRoZSByZWxhdGVkIENvb2tpZSBoZWFkZXIgb2YgdGhlIHJlcXVlc3QKICAgICAqIGluc3RhbmNlLCBub3IgcmVsYXRlZCB2YWx1ZXMgaW4gdGhlIHNlcnZlciBwYXJhbXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBjb29raWUgdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkY29va2llcyBBcnJheSBvZiBrZXkvdmFsdWUgcGFpcnMgcmVwcmVzZW50aW5nIGNvb2tpZXMuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENvb2tpZVBhcmFtcyhhcnJheSAkY29va2llcyk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBxdWVyeSBzdHJpbmcgYXJndW1lbnRzLgogICAgICoKICAgICAqIFJldHJpZXZlcyB0aGUgZGVzZXJpYWxpemVkIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMsIGlmIGFueS4KICAgICAqCiAgICAgKiBOb3RlOiB0aGUgcXVlcnkgcGFyYW1zIG1pZ2h0IG5vdCBiZSBpbiBzeW5jIHdpdGggdGhlIFVSSSBvciBzZXJ2ZXIKICAgICAqIHBhcmFtcy4gSWYgeW91IG5lZWQgdG8gZW5zdXJlIHlvdSBhcmUgb25seSBnZXR0aW5nIHRoZSBvcmlnaW5hbAogICAgICogdmFsdWVzLCB5b3UgbWF5IG5lZWQgdG8gcGFyc2UgdGhlIHF1ZXJ5IHN0cmluZyBmcm9tIGBnZXRVcmkoKS0+Z2V0UXVlcnkoKWAKICAgICAqIG9yIGZyb20gdGhlIGBRVUVSWV9TVFJJTkdgIHNlcnZlciBwYXJhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeVBhcmFtcygpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcgYXJndW1lbnRzLgogICAgICoKICAgICAqIFRoZXNlIHZhbHVlcyBTSE9VTEQgcmVtYWluIGltbXV0YWJsZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhlIGluY29taW5nCiAgICAgKiByZXF1ZXN0LiBUaGV5IE1BWSBiZSBpbmplY3RlZCBkdXJpbmcgaW5zdGFudGlhdGlvbiwgc3VjaCBhcyBmcm9tIFBIUCdzCiAgICAgKiAkX0dFVCBzdXBlcmdsb2JhbCwgb3IgTUFZIGJlIGRlcml2ZWQgZnJvbSBzb21lIG90aGVyIHZhbHVlIHN1Y2ggYXMgdGhlCiAgICAgKiBVUkkuIEluIGNhc2VzIHdoZXJlIHRoZSBhcmd1bWVudHMgYXJlIHBhcnNlZCBmcm9tIHRoZSBVUkksIHRoZSBkYXRhCiAgICAgKiBNVVNUIGJlIGNvbXBhdGlibGUgd2l0aCB3aGF0IFBIUCdzIHBhcnNlX3N0cigpIHdvdWxkIHJldHVybiBmb3IKICAgICAqIHB1cnBvc2VzIG9mIGhvdyBkdXBsaWNhdGUgcXVlcnkgcGFyYW1ldGVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyBuZXN0ZWQKICAgICAqIHNldHMgYXJlIGhhbmRsZWQuCiAgICAgKgogICAgICogU2V0dGluZyBxdWVyeSBzdHJpbmcgYXJndW1lbnRzIE1VU1QgTk9UIGNoYW5nZSB0aGUgVVJJIHN0b3JlZCBieSB0aGUKICAgICAqIHJlcXVlc3QsIG5vciB0aGUgdmFsdWVzIGluIHRoZSBzZXJ2ZXIgcGFyYW1zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXJ5IEFycmF5IG9mIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMsIHR5cGljYWxseSBmcm9tCiAgICAgKiAgICAgJF9HRVQuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBub3JtYWxpemVkIGZpbGUgdXBsb2FkIGRhdGEuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB1cGxvYWQgbWV0YWRhdGEgaW4gYSBub3JtYWxpemVkIHRyZWUsIHdpdGggZWFjaCBsZWFmCiAgICAgKiBhbiBpbnN0YW5jZSBvZiBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZS4KICAgICAqCiAgICAgKiBUaGVzZSB2YWx1ZXMgTUFZIGJlIHByZXBhcmVkIGZyb20gJF9GSUxFUyBvciB0aGUgbWVzc2FnZSBib2R5IGR1cmluZwogICAgICogaW5zdGFudGlhdGlvbiwgb3IgTUFZIGJlIGluamVjdGVkIHZpYSB3aXRoVXBsb2FkZWRGaWxlcygpLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQW4gYXJyYXkgdHJlZSBvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UgaW5zdGFuY2VzOyBhbiBlbXB0eQogICAgICogICAgIGFycmF5IE1VU1QgYmUgcmV0dXJuZWQgaWYgbm8gZGF0YSBpcyBwcmVzZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXBsb2FkZWRGaWxlcygpOwoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCB1cGxvYWRlZCBmaWxlcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiB1cGRhdGVkIGJvZHkgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHVwbG9hZGVkRmlsZXMgQW4gYXJyYXkgdHJlZSBvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UgaW5zdGFuY2VzLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiBhbiBpbnZhbGlkIHN0cnVjdHVyZSBpcyBwcm92aWRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVcGxvYWRlZEZpbGVzKGFycmF5ICR1cGxvYWRlZEZpbGVzKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIGFueSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0IGJvZHkuCiAgICAgKgogICAgICogSWYgdGhlIHJlcXVlc3QgQ29udGVudC1UeXBlIGlzIGVpdGhlciBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKICAgICAqIG9yIG11bHRpcGFydC9mb3JtLWRhdGEsIGFuZCB0aGUgcmVxdWVzdCBtZXRob2QgaXMgUE9TVCwgdGhpcyBtZXRob2QgTVVTVAogICAgICogcmV0dXJuIHRoZSBjb250ZW50cyBvZiAkX1BPU1QuCiAgICAgKgogICAgICogT3RoZXJ3aXNlLCB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIGFueSByZXN1bHRzIG9mIGRlc2VyaWFsaXppbmcKICAgICAqIHRoZSByZXF1ZXN0IGJvZHkgY29udGVudDsgYXMgcGFyc2luZyByZXR1cm5zIHN0cnVjdHVyZWQgY29udGVudCwgdGhlCiAgICAgKiBwb3RlbnRpYWwgdHlwZXMgTVVTVCBiZSBhcnJheXMgb3Igb2JqZWN0cyBvbmx5LiBBIG51bGwgdmFsdWUgaW5kaWNhdGVzCiAgICAgKiB0aGUgYWJzZW5jZSBvZiBib2R5IGNvbnRlbnQuCiAgICAgKgogICAgICogQHJldHVybiBudWxsfGFycmF5fG9iamVjdCBUaGUgZGVzZXJpYWxpemVkIGJvZHkgcGFyYW1ldGVycywgaWYgYW55LgogICAgICogICAgIFRoZXNlIHdpbGwgdHlwaWNhbGx5IGJlIGFuIGFycmF5IG9yIG9iamVjdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcnNlZEJvZHkoKTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYm9keSBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIFRoZXNlIE1BWSBiZSBpbmplY3RlZCBkdXJpbmcgaW5zdGFudGlhdGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGUgcmVxdWVzdCBDb250ZW50LVR5cGUgaXMgZWl0aGVyIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZAogICAgICogb3IgbXVsdGlwYXJ0L2Zvcm0tZGF0YSwgYW5kIHRoZSByZXF1ZXN0IG1ldGhvZCBpcyBQT1NULCB1c2UgdGhpcyBtZXRob2QKICAgICAqIE9OTFkgdG8gaW5qZWN0IHRoZSBjb250ZW50cyBvZiAkX1BPU1QuCiAgICAgKgogICAgICogVGhlIGRhdGEgSVMgTk9UIFJFUVVJUkVEIHRvIGNvbWUgZnJvbSAkX1BPU1QsIGJ1dCBNVVNUIGJlIHRoZSByZXN1bHRzIG9mCiAgICAgKiBkZXNlcmlhbGl6aW5nIHRoZSByZXF1ZXN0IGJvZHkgY29udGVudC4gRGVzZXJpYWxpemF0aW9uL3BhcnNpbmcgcmV0dXJucwogICAgICogc3RydWN0dXJlZCBkYXRhLCBhbmQsIGFzIHN1Y2gsIHRoaXMgbWV0aG9kIE9OTFkgYWNjZXB0cyBhcnJheXMgb3Igb2JqZWN0cywKICAgICAqIG9yIGEgbnVsbCB2YWx1ZSBpZiBub3RoaW5nIHdhcyBhdmFpbGFibGUgdG8gcGFyc2UuCiAgICAgKgogICAgICogQXMgYW4gZXhhbXBsZSwgaWYgY29udGVudCBuZWdvdGlhdGlvbiBkZXRlcm1pbmVzIHRoYXQgdGhlIHJlcXVlc3QgZGF0YQogICAgICogaXMgYSBKU09OIHBheWxvYWQsIHRoaXMgbWV0aG9kIGNvdWxkIGJlIHVzZWQgdG8gY3JlYXRlIGEgcmVxdWVzdAogICAgICogaW5zdGFuY2Ugd2l0aCB0aGUgZGVzZXJpYWxpemVkIHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBib2R5IHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHBhcmFtIG51bGx8YXJyYXl8b2JqZWN0ICRkYXRhIFRoZSBkZXNlcmlhbGl6ZWQgYm9keSBkYXRhLiBUaGlzIHdpbGwKICAgICAqICAgICB0eXBpY2FsbHkgYmUgaW4gYW4gYXJyYXkgb3Igb2JqZWN0LgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiBhbiB1bnN1cHBvcnRlZCBhcmd1bWVudCB0eXBlIGlzCiAgICAgKiAgICAgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUGFyc2VkQm9keSgkZGF0YSk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBhdHRyaWJ1dGVzIGRlcml2ZWQgZnJvbSB0aGUgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGUgcmVxdWVzdCAiYXR0cmlidXRlcyIgbWF5IGJlIHVzZWQgdG8gYWxsb3cgaW5qZWN0aW9uIG9mIGFueQogICAgICogcGFyYW1ldGVycyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3Q6IGUuZy4sIHRoZSByZXN1bHRzIG9mIHBhdGgKICAgICAqIG1hdGNoIG9wZXJhdGlvbnM7IHRoZSByZXN1bHRzIG9mIGRlY3J5cHRpbmcgY29va2llczsgdGhlIHJlc3VsdHMgb2YKICAgICAqIGRlc2VyaWFsaXppbmcgbm9uLWZvcm0tZW5jb2RlZCBtZXNzYWdlIGJvZGllczsgZXRjLiBBdHRyaWJ1dGVzCiAgICAgKiB3aWxsIGJlIGFwcGxpY2F0aW9uIGFuZCByZXF1ZXN0IHNwZWNpZmljLCBhbmQgQ0FOIGJlIG11dGFibGUuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBBdHRyaWJ1dGVzIGRlcml2ZWQgZnJvbSB0aGUgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEF0dHJpYnV0ZXMoKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIGEgc2luZ2xlIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogUmV0cmlldmVzIGEgc2luZ2xlIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUgYXMgZGVzY3JpYmVkIGluCiAgICAgKiBnZXRBdHRyaWJ1dGVzKCkuIElmIHRoZSBhdHRyaWJ1dGUgaGFzIG5vdCBiZWVuIHByZXZpb3VzbHkgc2V0LCByZXR1cm5zCiAgICAgKiB0aGUgZGVmYXVsdCB2YWx1ZSBhcyBwcm92aWRlZC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBvYnZpYXRlcyB0aGUgbmVlZCBmb3IgYSBoYXNBdHRyaWJ1dGUoKSBtZXRob2QsIGFzIGl0IGFsbG93cwogICAgICogc3BlY2lmeWluZyBhIGRlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLgogICAgICoKICAgICAqIEBzZWUgZ2V0QXR0cmlidXRlcygpCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZSBhdHRyaWJ1dGUgbmFtZS4KICAgICAqIEBwYXJhbSBtaXhlZCAkZGVmYXVsdCBEZWZhdWx0IHZhbHVlIHRvIHJldHVybiBpZiB0aGUgYXR0cmlidXRlIGRvZXMgbm90IGV4aXN0LgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXR0cmlidXRlKCRuYW1lLCAkZGVmYXVsdCA9IG51bGwpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsbG93cyBzZXR0aW5nIGEgc2luZ2xlIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUgYXMKICAgICAqIGRlc2NyaWJlZCBpbiBnZXRBdHRyaWJ1dGVzKCkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQXR0cmlidXRlKCRuYW1lLCAkdmFsdWUpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgcmVtb3ZlcyB0aGUgc3BlY2lmaWVkIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgYWxsb3dzIHJlbW92aW5nIGEgc2luZ2xlIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUgYXMKICAgICAqIGRlc2NyaWJlZCBpbiBnZXRBdHRyaWJ1dGVzKCkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgcmVtb3ZlcwogICAgICogdGhlIGF0dHJpYnV0ZS4KICAgICAqCiAgICAgKiBAc2VlIGdldEF0dHJpYnV0ZXMoKQogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgYXR0cmlidXRlIG5hbWUuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dEF0dHJpYnV0ZSgkbmFtZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/StreamInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIERlc2NyaWJlcyBhIGRhdGEgc3RyZWFtLgogKgogKiBUeXBpY2FsbHksIGFuIGluc3RhbmNlIHdpbGwgd3JhcCBhIFBIUCBzdHJlYW07IHRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzCiAqIGEgd3JhcHBlciBhcm91bmQgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uIG9mCiAqIHRoZSBlbnRpcmUgc3RyZWFtIHRvIGEgc3RyaW5nLgogKi8KaW50ZXJmYWNlIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJlYWRzIGFsbCBkYXRhIGZyb20gdGhlIHN0cmVhbSBpbnRvIGEgc3RyaW5nLCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gZW5kLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYXR0ZW1wdCB0byBzZWVrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbSBiZWZvcmUKICAgICAqIHJlYWRpbmcgZGF0YSBhbmQgcmVhZCB0aGUgc3RyZWFtIHVudGlsIHRoZSBlbmQgaXMgcmVhY2hlZC4KICAgICAqCiAgICAgKiBXYXJuaW5nOiBUaGlzIGNvdWxkIGF0dGVtcHQgdG8gbG9hZCBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIGludG8gbWVtb3J5LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgTk9UIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBvcmRlciB0byBjb25mb3JtIHdpdGggUEhQJ3MKICAgICAqIHN0cmluZyBjYXN0aW5nIG9wZXJhdGlvbnMuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5tYWdpYy5waHAjb2JqZWN0LnRvc3RyaW5nCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOwoKICAgIC8qKgogICAgICogQ2xvc2VzIHRoZSBzdHJlYW0gYW5kIGFueSB1bmRlcmx5aW5nIHJlc291cmNlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsb3NlKCk7CgogICAgLyoqCiAgICAgKiBTZXBhcmF0ZXMgYW55IHVuZGVybHlpbmcgcmVzb3VyY2VzIGZyb20gdGhlIHN0cmVhbS4KICAgICAqCiAgICAgKiBBZnRlciB0aGUgc3RyZWFtIGhhcyBiZWVuIGRldGFjaGVkLCB0aGUgc3RyZWFtIGlzIGluIGFuIHVudXNhYmxlIHN0YXRlLgogICAgICoKICAgICAqIEByZXR1cm4gcmVzb3VyY2V8bnVsbCBVbmRlcmx5aW5nIFBIUCBzdHJlYW0sIGlmIGFueQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGV0YWNoKCk7CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHNpemUgb2YgdGhlIHN0cmVhbSBpZiBrbm93bi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxudWxsIFJldHVybnMgdGhlIHNpemUgaW4gYnl0ZXMgaWYga25vd24sIG9yIG51bGwgaWYgdW5rbm93bi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgdGhlIGZpbGUgcmVhZC93cml0ZSBwb2ludGVyCiAgICAgKgogICAgICogQHJldHVybiBpbnQgUG9zaXRpb24gb2YgdGhlIGZpbGUgcG9pbnRlcgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBvbiBlcnJvci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlbGwoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3RyZWFtIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyZWFtIGlzIHNlZWthYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZWVrYWJsZSgpOwoKICAgIC8qKgogICAgICogU2VlayB0byBhIHBvc2l0aW9uIGluIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5mc2Vlay5waHAKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldCBTdHJlYW0gb2Zmc2V0CiAgICAgKiBAcGFyYW0gaW50ICR3aGVuY2UgU3BlY2lmaWVzIGhvdyB0aGUgY3Vyc29yIHBvc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZAogICAgICogICAgIGJhc2VkIG9uIHRoZSBzZWVrIG9mZnNldC4gVmFsaWQgdmFsdWVzIGFyZSBpZGVudGljYWwgdG8gdGhlIGJ1aWx0LWluCiAgICAgKiAgICAgUEhQICR3aGVuY2UgdmFsdWVzIGZvciBgZnNlZWsoKWAuICBTRUVLX1NFVDogU2V0IHBvc2l0aW9uIGVxdWFsIHRvCiAgICAgKiAgICAgb2Zmc2V0IGJ5dGVzIFNFRUtfQ1VSOiBTZXQgcG9zaXRpb24gdG8gY3VycmVudCBsb2NhdGlvbiBwbHVzIG9mZnNldAogICAgICogICAgIFNFRUtfRU5EOiBTZXQgcG9zaXRpb24gdG8gZW5kLW9mLXN0cmVhbSBwbHVzIG9mZnNldC4KICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZmFpbHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTsKCiAgICAvKioKICAgICAqIFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIElmIHRoZSBzdHJlYW0gaXMgbm90IHNlZWthYmxlLCB0aGlzIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbjsKICAgICAqIG90aGVyd2lzZSwgaXQgd2lsbCBwZXJmb3JtIGEgc2VlaygwKS4KICAgICAqCiAgICAgKiBAc2VlIHNlZWsoKQogICAgICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5mc2Vlay5waHAKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZmFpbHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyZWFtIGlzIHdyaXRhYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpOwoKICAgIC8qKgogICAgICogV3JpdGUgZGF0YSB0byB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBUaGUgc3RyaW5nIHRoYXQgaXMgdG8gYmUgd3JpdHRlbi4KICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkc3RyaW5nKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyByZWFkYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTsKCiAgICAvKioKICAgICAqIFJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbGVuZ3RoIFJlYWQgdXAgdG8gJGxlbmd0aCBieXRlcyBmcm9tIHRoZSBvYmplY3QgYW5kIHJldHVybgogICAgICogICAgIHRoZW0uIEZld2VyIHRoYW4gJGxlbmd0aCBieXRlcyBtYXkgYmUgcmV0dXJuZWQgaWYgdW5kZXJseWluZyBzdHJlYW0KICAgICAqICAgICBjYWxsIHJldHVybnMgZmV3ZXIgYnl0ZXMuCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc3RyZWFtLCBvciBhbiBlbXB0eSBzdHJpbmcKICAgICAqICAgICBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBhbiBlcnJvciBvY2N1cnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluaW5nIGNvbnRlbnRzIGluIGEgc3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHJlYWQgb3IgYW4gZXJyb3Igb2NjdXJzIHdoaWxlCiAgICAgKiAgICAgcmVhZGluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk7CgogICAgLyoqCiAgICAgKiBHZXQgc3RyZWFtIG1ldGFkYXRhIGFzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9yIHJldHJpZXZlIGEgc3BlY2lmaWMga2V5LgogICAgICoKICAgICAqIFRoZSBrZXlzIHJldHVybmVkIGFyZSBpZGVudGljYWwgdG8gdGhlIGtleXMgcmV0dXJuZWQgZnJvbSBQSFAncwogICAgICogc3RyZWFtX2dldF9tZXRhX2RhdGEoKSBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBAbGluayBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uc3RyZWFtLWdldC1tZXRhLWRhdGEucGhwCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgU3BlY2lmaWMgbWV0YWRhdGEgdG8gcmV0cmlldmUuCiAgICAgKiBAcmV0dXJuIGFycmF5fG1peGVkfG51bGwgUmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBpZiBubyBrZXkgaXMKICAgICAqICAgICBwcm92aWRlZC4gUmV0dXJucyBhIHNwZWNpZmljIGtleSB2YWx1ZSBpZiBhIGtleSBpcyBwcm92aWRlZCBhbmQgdGhlCiAgICAgKiAgICAgdmFsdWUgaXMgZm91bmQsIG9yIG51bGwgaWYgdGhlIGtleSBpcyBub3QgZm91bmQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRhZGF0YSgka2V5ID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/UploadedFileInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFZhbHVlIG9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIHVwbG9hZGVkIHRocm91Z2ggYW4gSFRUUCByZXF1ZXN0LgogKgogKiBJbnN0YW5jZXMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0CiAqIG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwKICogc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZQogKiBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFVwbG9hZGVkRmlsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlIGEgc3RyZWFtIHJlcHJlc2VudGluZyB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIFN0cmVhbUludGVyZmFjZSBpbnN0YW5jZSwgcmVwcmVzZW50aW5nIHRoZQogICAgICogdXBsb2FkZWQgZmlsZS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gYWxsb3cgdXRpbGl6aW5nIG5hdGl2ZSBQSFAKICAgICAqIHN0cmVhbSBmdW5jdGlvbmFsaXR5IHRvIG1hbmlwdWxhdGUgdGhlIGZpbGUgdXBsb2FkLCBzdWNoIGFzCiAgICAgKiBzdHJlYW1fY29weV90b19zdHJlYW0oKSAodGhvdWdoIHRoZSByZXN1bHQgd2lsbCBuZWVkIHRvIGJlIGRlY29yYXRlZCBpbiBhCiAgICAgKiBuYXRpdmUgUEhQIHN0cmVhbSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBzdWNoIGZ1bmN0aW9ucykuCiAgICAgKgogICAgICogSWYgdGhlIG1vdmVUbygpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgcHJldmlvdXNseSwgdGhpcyBtZXRob2QgTVVTVCByYWlzZQogICAgICogYW4gZXhjZXB0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gU3RyZWFtSW50ZXJmYWNlIFN0cmVhbSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaW4gY2FzZXMgd2hlbiBubyBzdHJlYW0gaXMgYXZhaWxhYmxlIG9yIGNhbiBiZQogICAgICogICAgIGNyZWF0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJlYW0oKTsKCiAgICAvKioKICAgICAqIE1vdmUgdGhlIHVwbG9hZGVkIGZpbGUgdG8gYSBuZXcgbG9jYXRpb24uCiAgICAgKgogICAgICogVXNlIHRoaXMgbWV0aG9kIGFzIGFuIGFsdGVybmF0aXZlIHRvIG1vdmVfdXBsb2FkZWRfZmlsZSgpLiBUaGlzIG1ldGhvZCBpcwogICAgICogZ3VhcmFudGVlZCB0byB3b3JrIGluIGJvdGggU0FQSSBhbmQgbm9uLVNBUEkgZW52aXJvbm1lbnRzLgogICAgICogSW1wbGVtZW50YXRpb25zIG11c3QgZGV0ZXJtaW5lIHdoaWNoIGVudmlyb25tZW50IHRoZXkgYXJlIGluLCBhbmQgdXNlIHRoZQogICAgICogYXBwcm9wcmlhdGUgbWV0aG9kIChtb3ZlX3VwbG9hZGVkX2ZpbGUoKSwgcmVuYW1lKCksIG9yIGEgc3RyZWFtCiAgICAgKiBvcGVyYXRpb24pIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbi4KICAgICAqCiAgICAgKiAkdGFyZ2V0UGF0aCBtYXkgYmUgYW4gYWJzb2x1dGUgcGF0aCwgb3IgYSByZWxhdGl2ZSBwYXRoLiBJZiBpdCBpcyBhCiAgICAgKiByZWxhdGl2ZSBwYXRoLCByZXNvbHV0aW9uIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB1c2VkIGJ5IFBIUCdzIHJlbmFtZSgpCiAgICAgKiBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBUaGUgb3JpZ2luYWwgZmlsZSBvciBzdHJlYW0gTVVTVCBiZSByZW1vdmVkIG9uIGNvbXBsZXRpb24uCiAgICAgKgogICAgICogSWYgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLCBhbnkgc3Vic2VxdWVudCBjYWxscyBNVVNUIHJhaXNlCiAgICAgKiBhbiBleGNlcHRpb24uCiAgICAgKgogICAgICogV2hlbiB1c2VkIGluIGFuIFNBUEkgZW52aXJvbm1lbnQgd2hlcmUgJF9GSUxFUyBpcyBwb3B1bGF0ZWQsIHdoZW4gd3JpdGluZwogICAgICogZmlsZXMgdmlhIG1vdmVUbygpLCBpc191cGxvYWRlZF9maWxlKCkgYW5kIG1vdmVfdXBsb2FkZWRfZmlsZSgpIFNIT1VMRCBiZQogICAgICogdXNlZCB0byBlbnN1cmUgcGVybWlzc2lvbnMgYW5kIHVwbG9hZCBzdGF0dXMgYXJlIHZlcmlmaWVkIGNvcnJlY3RseS4KICAgICAqCiAgICAgKiBJZiB5b3Ugd2lzaCB0byBtb3ZlIHRvIGEgc3RyZWFtLCB1c2UgZ2V0U3RyZWFtKCksIGFzIFNBUEkgb3BlcmF0aW9ucwogICAgICogY2Fubm90IGd1YXJhbnRlZSB3cml0aW5nIHRvIHN0cmVhbSBkZXN0aW5hdGlvbnMuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9pc191cGxvYWRlZF9maWxlCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L21vdmVfdXBsb2FkZWRfZmlsZQogICAgICogQHBhcmFtIHN0cmluZyAkdGFyZ2V0UGF0aCBQYXRoIHRvIHdoaWNoIHRvIG1vdmUgdGhlIHVwbG9hZGVkIGZpbGUuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlICR0YXJnZXRQYXRoIHNwZWNpZmllZCBpcyBpbnZhbGlkLgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBvbiBhbnkgZXJyb3IgZHVyaW5nIHRoZSBtb3ZlIG9wZXJhdGlvbiwgb3Igb24KICAgICAqICAgICB0aGUgc2Vjb25kIG9yIHN1YnNlcXVlbnQgY2FsbCB0byB0aGUgbWV0aG9kLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW92ZVRvKCR0YXJnZXRQYXRoKTsKICAgIAogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZmlsZSBzaXplLgogICAgICoKICAgICAqIEltcGxlbWVudGF0aW9ucyBTSE9VTEQgcmV0dXJuIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlICJzaXplIiBrZXkgb2YKICAgICAqIHRoZSBmaWxlIGluIHRoZSAkX0ZJTEVTIGFycmF5IGlmIGF2YWlsYWJsZSwgYXMgUEhQIGNhbGN1bGF0ZXMgdGhpcyBiYXNlZAogICAgICogb24gdGhlIGFjdHVhbCBzaXplIHRyYW5zbWl0dGVkLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwgVGhlIGZpbGUgc2l6ZSBpbiBieXRlcyBvciBudWxsIGlmIHVua25vd24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuIHZhbHVlIE1VU1QgYmUgb25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlsZSB3YXMgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogVVBMT0FEX0VSUl9PSy4KICAgICAqCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgU0hPVUxEIHJldHVybiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSAiZXJyb3IiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZmVhdHVyZXMuZmlsZS11cGxvYWQuZXJyb3JzLnBocAogICAgICogQHJldHVybiBpbnQgT25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9yKCk7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGZpbGVuYW1lIHNlbnQgYnkgdGhlIGNsaWVudC4KICAgICAqCiAgICAgKiBEbyBub3QgdHJ1c3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kLiBBIGNsaWVudCBjb3VsZCBzZW5kCiAgICAgKiBhIG1hbGljaW91cyBmaWxlbmFtZSB3aXRoIHRoZSBpbnRlbnRpb24gdG8gY29ycnVwdCBvciBoYWNrIHlvdXIKICAgICAqIGFwcGxpY2F0aW9uLgogICAgICoKICAgICAqIEltcGxlbWVudGF0aW9ucyBTSE9VTEQgcmV0dXJuIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlICJuYW1lIiBrZXkgb2YKICAgICAqIHRoZSBmaWxlIGluIHRoZSAkX0ZJTEVTIGFycmF5LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwgVGhlIGZpbGVuYW1lIHNlbnQgYnkgdGhlIGNsaWVudCBvciBudWxsIGlmIG5vbmUKICAgICAqICAgICB3YXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGllbnRGaWxlbmFtZSgpOwogICAgCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBtZWRpYSB0eXBlIHNlbnQgYnkgdGhlIGNsaWVudC4KICAgICAqCiAgICAgKiBEbyBub3QgdHJ1c3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoaXMgbWV0aG9kLiBBIGNsaWVudCBjb3VsZCBzZW5kCiAgICAgKiBhIG1hbGljaW91cyBtZWRpYSB0eXBlIHdpdGggdGhlIGludGVudGlvbiB0byBjb3JydXB0IG9yIGhhY2sgeW91cgogICAgICogYXBwbGljYXRpb24uCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIFNIT1VMRCByZXR1cm4gdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgInR5cGUiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBUaGUgbWVkaWEgdHlwZSBzZW50IGJ5IHRoZSBjbGllbnQgb3IgbnVsbCBpZiBub25lCiAgICAgKiAgICAgd2FzIHByb3ZpZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2xpZW50TWVkaWFUeXBlKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/UriInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIFBzclxIdHRwXE1lc3NhZ2U7CgovKioKICogVmFsdWUgb2JqZWN0IHJlcHJlc2VudGluZyBhIFVSSS4KICoKICogVGhpcyBpbnRlcmZhY2UgaXMgbWVhbnQgdG8gcmVwcmVzZW50IFVSSXMgYWNjb3JkaW5nIHRvIFJGQyAzOTg2IGFuZCB0bwogKiBwcm92aWRlIG1ldGhvZHMgZm9yIG1vc3QgY29tbW9uIG9wZXJhdGlvbnMuIEFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSBmb3IKICogd29ya2luZyB3aXRoIFVSSXMgY2FuIGJlIHByb3ZpZGVkIG9uIHRvcCBvZiB0aGUgaW50ZXJmYWNlIG9yIGV4dGVybmFsbHkuCiAqIEl0cyBwcmltYXJ5IHVzZSBpcyBmb3IgSFRUUCByZXF1ZXN0cywgYnV0IG1heSBhbHNvIGJlIHVzZWQgaW4gb3RoZXIKICogY29udGV4dHMuCiAqCiAqIEluc3RhbmNlcyBvZiB0aGlzIGludGVyZmFjZSBhcmUgY29uc2lkZXJlZCBpbW11dGFibGU7IGFsbCBtZXRob2RzIHRoYXQKICogbWlnaHQgY2hhbmdlIHN0YXRlIE1VU1QgYmUgaW1wbGVtZW50ZWQgc3VjaCB0aGF0IHRoZXkgcmV0YWluIHRoZSBpbnRlcm5hbAogKiBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlCiAqIGNoYW5nZWQgc3RhdGUuCiAqCiAqIFR5cGljYWxseSB0aGUgSG9zdCBoZWFkZXIgd2lsbCBiZSBhbHNvIGJlIHByZXNlbnQgaW4gdGhlIHJlcXVlc3QgbWVzc2FnZS4KICogRm9yIHNlcnZlci1zaWRlIHJlcXVlc3RzLCB0aGUgc2NoZW1lIHdpbGwgdHlwaWNhbGx5IGJlIGRpc2NvdmVyYWJsZSBpbiB0aGUKICogc2VydmVyIHBhcmFtZXRlcnMuCiAqCiAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYgKHRoZSBVUkkgc3BlY2lmaWNhdGlvbikKICovCmludGVyZmFjZSBVcmlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgc2NoZW1lIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIHNjaGVtZSBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgbm9ybWFsaXplZCB0byBsb3dlcmNhc2UsIHBlciBSRkMgMzk4NgogICAgICogU2VjdGlvbiAzLjEuCiAgICAgKgogICAgICogVGhlIHRyYWlsaW5nICI6IiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHNjaGVtZSBhbmQgTVVTVCBOT1QgYmUKICAgICAqIGFkZGVkLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjEKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBVUkkgc2NoZW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2NoZW1lKCk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgYXV0aG9yaXR5IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGF1dGhvcml0eSBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eQogICAgICogc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBhdXRob3JpdHkgc3ludGF4IG9mIHRoZSBVUkkgaXM6CiAgICAgKgogICAgICogPHByZT4KICAgICAqIFt1c2VyLWluZm9AXWhvc3RbOnBvcnRdCiAgICAgKiA8L3ByZT4KICAgICAqCiAgICAgKiBJZiB0aGUgcG9ydCBjb21wb25lbnQgaXMgbm90IHNldCBvciBpcyB0aGUgc3RhbmRhcmQgcG9ydCBmb3IgdGhlIGN1cnJlbnQKICAgICAqIHNjaGVtZSwgaXQgU0hPVUxEIE5PVCBiZSBpbmNsdWRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIGF1dGhvcml0eSwgaW4gIlt1c2VyLWluZm9AXWhvc3RbOnBvcnRdIiBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRob3JpdHkoKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSB1c2VyIGluZm9ybWF0aW9uIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIHVzZXIgaW5mb3JtYXRpb24gaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkKICAgICAqIHN0cmluZy4KICAgICAqCiAgICAgKiBJZiBhIHVzZXIgaXMgcHJlc2VudCBpbiB0aGUgVVJJLCB0aGlzIHdpbGwgcmV0dXJuIHRoYXQgdmFsdWU7CiAgICAgKiBhZGRpdGlvbmFsbHksIGlmIHRoZSBwYXNzd29yZCBpcyBhbHNvIHByZXNlbnQsIGl0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlCiAgICAgKiB1c2VyIHZhbHVlLCB3aXRoIGEgY29sb24gKCI6Iikgc2VwYXJhdGluZyB0aGUgdmFsdWVzLgogICAgICoKICAgICAqIFRoZSB0cmFpbGluZyAiQCIgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSB1c2VyIGluZm9ybWF0aW9uIGFuZCBNVVNUCiAgICAgKiBOT1QgYmUgYWRkZWQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIFVSSSB1c2VyIGluZm9ybWF0aW9uLCBpbiAidXNlcm5hbWVbOnBhc3N3b3JkXSIgZm9ybWF0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXNlckluZm8oKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBob3N0IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGhvc3QgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlLCBwZXIgUkZDIDM5ODYKICAgICAqIFNlY3Rpb24gMy4yLjIuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yLjIKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBVUkkgaG9zdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhvc3QoKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwb3J0IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIGEgcG9ydCBpcyBwcmVzZW50LCBhbmQgaXQgaXMgbm9uLXN0YW5kYXJkIGZvciB0aGUgY3VycmVudCBzY2hlbWUsCiAgICAgKiB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBpdCBhcyBhbiBpbnRlZ2VyLiBJZiB0aGUgcG9ydCBpcyB0aGUgc3RhbmRhcmQgcG9ydAogICAgICogdXNlZCB3aXRoIHRoZSBjdXJyZW50IHNjaGVtZSwgdGhpcyBtZXRob2QgU0hPVUxEIHJldHVybiBudWxsLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYW5kIG5vIHNjaGVtZSBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogYSBudWxsIHZhbHVlLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYnV0IGEgc2NoZW1lIGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1BWSByZXR1cm4KICAgICAqIHRoZSBzdGFuZGFyZCBwb3J0IGZvciB0aGF0IHNjaGVtZSwgYnV0IFNIT1VMRCByZXR1cm4gbnVsbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8aW50IFRoZSBVUkkgcG9ydC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvcnQoKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIE5vcm1hbGx5LCB0aGUgZW1wdHkgcGF0aCAiIiBhbmQgYWJzb2x1dGUgcGF0aCAiLyIgYXJlIGNvbnNpZGVyZWQgZXF1YWwgYXMKICAgICAqIGRlZmluZWQgaW4gUkZDIDcyMzAgU2VjdGlvbiAyLjcuMy4gQnV0IHRoaXMgbWV0aG9kIE1VU1QgTk9UIGF1dG9tYXRpY2FsbHkKICAgICAqIGRvIHRoaXMgbm9ybWFsaXphdGlvbiBiZWNhdXNlIGluIGNvbnRleHRzIHdpdGggYSB0cmltbWVkIGJhc2UgcGF0aCwgZS5nLgogICAgICogdGhlIGZyb250IGNvbnRyb2xsZXIsIHRoaXMgZGlmZmVyZW5jZSBiZWNvbWVzIHNpZ25pZmljYW50LiBJdCdzIHRoZSB0YXNrCiAgICAgKiBvZiB0aGUgdXNlciB0byBoYW5kbGUgYm90aCAiIiBhbmQgIi8iLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4NiwgU2VjdGlvbnMgMiBhbmQgMy4zLgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIHRoZSB2YWx1ZSBzaG91bGQgaW5jbHVkZSBhIHNsYXNoICgiLyIpIG5vdCBpbnRlbmRlZCBhcwogICAgICogZGVsaW1pdGVyIGJldHdlZW4gcGF0aCBzZWdtZW50cywgdGhhdCB2YWx1ZSBNVVNUIGJlIHBhc3NlZCBpbiBlbmNvZGVkCiAgICAgKiBmb3JtIChlLmcuLCAiJTJGIikgdG8gdGhlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4zCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXRoKCk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgcXVlcnkgc3RyaW5nIG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gcXVlcnkgc3RyaW5nIGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICAqCiAgICAgKiBUaGUgbGVhZGluZyAiPyIgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBxdWVyeSBhbmQgTVVTVCBOT1QgYmUKICAgICAqIGFkZGVkLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4NiwgU2VjdGlvbnMgMiBhbmQgMy40LgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIGEgdmFsdWUgaW4gYSBrZXkvdmFsdWUgcGFpciBvZiB0aGUgcXVlcnkgc3RyaW5nIHNob3VsZAogICAgICogaW5jbHVkZSBhbiBhbXBlcnNhbmQgKCImIikgbm90IGludGVuZGVkIGFzIGEgZGVsaW1pdGVyIGJldHdlZW4gdmFsdWVzLAogICAgICogdGhhdCB2YWx1ZSBNVVNUIGJlIHBhc3NlZCBpbiBlbmNvZGVkIGZvcm0gKGUuZy4sICIlMjYiKSB0byB0aGUgaW5zdGFuY2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjQKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBVUkkgcXVlcnkgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UXVlcnkoKTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBmcmFnbWVudCBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBmcmFnbWVudCBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCiAgICAgKgogICAgICogVGhlIGxlYWRpbmcgIiMiIGNoYXJhY3RlciBpcyBub3QgcGFydCBvZiB0aGUgZnJhZ21lbnQgYW5kIE1VU1QgTk9UIGJlCiAgICAgKiBhZGRlZC4KICAgICAqCiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBwZXJjZW50LWVuY29kZWQsIGJ1dCBNVVNUIE5PVCBkb3VibGUtZW5jb2RlCiAgICAgKiBhbnkgY2hhcmFjdGVycy4gVG8gZGV0ZXJtaW5lIHdoYXQgY2hhcmFjdGVycyB0byBlbmNvZGUsIHBsZWFzZSByZWZlciB0bwogICAgICogUkZDIDM5ODYsIFNlY3Rpb25zIDIgYW5kIDMuNS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuNQogICAgICogQHJldHVybiBzdHJpbmcgVGhlIFVSSSBmcmFnbWVudC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZyYWdtZW50KCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHNjaGVtZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCB0aGUgc2NoZW1lcyAiaHR0cCIgYW5kICJodHRwcyIgY2FzZQogICAgICogaW5zZW5zaXRpdmVseSwgYW5kIE1BWSBhY2NvbW1vZGF0ZSBvdGhlciBzY2hlbWVzIGlmIHJlcXVpcmVkLgogICAgICoKICAgICAqIEFuIGVtcHR5IHNjaGVtZSBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBzY2hlbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc2NoZW1lIFRoZSBzY2hlbWUgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQgc2NoZW1lcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTY2hlbWUoJHNjaGVtZSk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBQYXNzd29yZCBpcyBvcHRpb25hbCwgYnV0IHRoZSB1c2VyIGluZm9ybWF0aW9uIE1VU1QgaW5jbHVkZSB0aGUKICAgICAqIHVzZXI7IGFuIGVtcHR5IHN0cmluZyBmb3IgdGhlIHVzZXIgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB1c2VyCiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VyIFRoZSB1c2VyIG5hbWUgdG8gdXNlIGZvciBhdXRob3JpdHkuCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkIFRoZSBwYXNzd29yZCBhc3NvY2lhdGVkIHdpdGggJHVzZXIuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbygkdXNlciwgJHBhc3N3b3JkID0gbnVsbCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgaG9zdC4KICAgICAqCiAgICAgKiBBbiBlbXB0eSBob3N0IHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIGhvc3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkaG9zdCBUaGUgaG9zdG5hbWUgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBob3N0LgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvciBpbnZhbGlkIGhvc3RuYW1lcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhIb3N0KCRob3N0KTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcG9ydC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICoKICAgICAqIEltcGxlbWVudGF0aW9ucyBNVVNUIHJhaXNlIGFuIGV4Y2VwdGlvbiBmb3IgcG9ydHMgb3V0c2lkZSB0aGUKICAgICAqIGVzdGFibGlzaGVkIFRDUCBhbmQgVURQIHBvcnQgcmFuZ2VzLgogICAgICoKICAgICAqIEEgbnVsbCB2YWx1ZSBwcm92aWRlZCBmb3IgdGhlIHBvcnQgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgcG9ydAogICAgICogaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIG51bGx8aW50ICRwb3J0IFRoZSBwb3J0IHRvIHVzZSB3aXRoIHRoZSBuZXcgaW5zdGFuY2U7IGEgbnVsbCB2YWx1ZQogICAgICogICAgIHJlbW92ZXMgdGhlIHBvcnQgaW5mb3JtYXRpb24uCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcG9ydC4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBwb3J0cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQb3J0KCRwb3J0KTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBwYXRoLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIElmIHRoZSBwYXRoIGlzIGludGVuZGVkIHRvIGJlIGRvbWFpbi1yZWxhdGl2ZSByYXRoZXIgdGhhbiBwYXRoIHJlbGF0aXZlIHRoZW4KICAgICAqIGl0IG11c3QgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpLiBQYXRocyBub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoICgiLyIpCiAgICAgKiBhcmUgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byBzb21lIGJhc2UgcGF0aCBrbm93biB0byB0aGUgYXBwbGljYXRpb24gb3IKICAgICAqIGNvbnN1bWVyLgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBwYXRoIGNoYXJhY3RlcnMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgZW5zdXJlIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFzIG91dGxpbmVkIGluIGdldFBhdGgoKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFRoZSBwYXRoIHRvIHVzZSB3aXRoIHRoZSBuZXcgaW5zdGFuY2UuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBwYXRocy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXRoKCRwYXRoKTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHF1ZXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBVc2VycyBjYW4gcHJvdmlkZSBib3RoIGVuY29kZWQgYW5kIGRlY29kZWQgcXVlcnkgY2hhcmFjdGVycy4KICAgICAqIEltcGxlbWVudGF0aW9ucyBlbnN1cmUgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYXMgb3V0bGluZWQgaW4gZ2V0UXVlcnkoKS4KICAgICAqCiAgICAgKiBBbiBlbXB0eSBxdWVyeSBzdHJpbmcgdmFsdWUgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5IFRoZSBxdWVyeSBzdHJpbmcgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgcXVlcnkgc3RyaW5ncy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeSgkcXVlcnkpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgVVJJIGZyYWdtZW50LgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBmcmFnbWVudCBjaGFyYWN0ZXJzLgogICAgICogSW1wbGVtZW50YXRpb25zIGVuc3VyZSB0aGUgY29ycmVjdCBlbmNvZGluZyBhcyBvdXRsaW5lZCBpbiBnZXRGcmFnbWVudCgpLgogICAgICoKICAgICAqIEFuIGVtcHR5IGZyYWdtZW50IHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIGZyYWdtZW50LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZyYWdtZW50IFRoZSBmcmFnbWVudCB0byB1c2Ugd2l0aCB0aGUgbmV3IGluc3RhbmNlLgogICAgICogQHJldHVybiBzdGF0aWMgQSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGZyYWdtZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZyYWdtZW50KCRmcmFnbWVudCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBhIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogRGVwZW5kaW5nIG9uIHdoaWNoIGNvbXBvbmVudHMgb2YgdGhlIFVSSSBhcmUgcHJlc2VudCwgdGhlIHJlc3VsdGluZwogICAgICogc3RyaW5nIGlzIGVpdGhlciBhIGZ1bGwgVVJJIG9yIHJlbGF0aXZlIHJlZmVyZW5jZSBhY2NvcmRpbmcgdG8gUkZDIDM5ODYsCiAgICAgKiBTZWN0aW9uIDQuMS4gVGhlIG1ldGhvZCBjb25jYXRlbmF0ZXMgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgVVJJLAogICAgICogdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGRlbGltaXRlcnM6CiAgICAgKgogICAgICogLSBJZiBhIHNjaGVtZSBpcyBwcmVzZW50LCBpdCBNVVNUIGJlIHN1ZmZpeGVkIGJ5ICI6Ii4KICAgICAqIC0gSWYgYW4gYXV0aG9yaXR5IGlzIHByZXNlbnQsIGl0IE1VU1QgYmUgcHJlZml4ZWQgYnkgIi8vIi4KICAgICAqIC0gVGhlIHBhdGggY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRob3V0IGRlbGltaXRlcnMuIEJ1dCB0aGVyZSBhcmUgdHdvCiAgICAgKiAgIGNhc2VzIHdoZXJlIHRoZSBwYXRoIGhhcyB0byBiZSBhZGp1c3RlZCB0byBtYWtlIHRoZSBVUkkgcmVmZXJlbmNlCiAgICAgKiAgIHZhbGlkIGFzIFBIUCBkb2VzIG5vdCBhbGxvdyB0byB0aHJvdyBhbiBleGNlcHRpb24gaW4gX190b1N0cmluZygpOgogICAgICogICAgIC0gSWYgdGhlIHBhdGggaXMgcm9vdGxlc3MgYW5kIGFuIGF1dGhvcml0eSBpcyBwcmVzZW50LCB0aGUgcGF0aCBNVVNUCiAgICAgKiAgICAgICBiZSBwcmVmaXhlZCBieSAiLyIuCiAgICAgKiAgICAgLSBJZiB0aGUgcGF0aCBpcyBzdGFydGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgIi8iIGFuZCBubyBhdXRob3JpdHkgaXMKICAgICAqICAgICAgIHByZXNlbnQsIHRoZSBzdGFydGluZyBzbGFzaGVzIE1VU1QgYmUgcmVkdWNlZCB0byBvbmUuCiAgICAgKiAtIElmIGEgcXVlcnkgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiPyIuCiAgICAgKiAtIElmIGEgZnJhZ21lbnQgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiIyIuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4xCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYWVzLWtleS13cmFwIiwKICAgICJkZXNjcmlwdGlvbiI6ICJBRVMgS2V5IFdyYXAgZm9yIFBIUC4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJBMTI4S1ciLCAiQTE5MktXIiwgIkEyNTZLVyIsICJBRVMiLCAiS2V5IiwgIldyYXAiLCAiUGFkZGluZyIsICJSRkMzMzk0IiwgIlJGQzU2NDkiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYWVzLWtleS13cmFwIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYWVzLWtleS13cmFwL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkFFU0tXXFwiOiAgInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJhdXRvbG9hZC1kZXYiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiQUVTS1dcXFRlc3RzXFwiOiAgInRlc3RzLyIKICAgICAgICB9CiAgICB9LAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICJeNS40fF43LjAiLAogICAgICAgICJleHQtbWJzdHJpbmciOiAiKiIsCiAgICAgICAgImJlYmVybGVpL2Fzc2VydCI6ICJeMi40IiwKICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC41fF41LjAiLAogICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjMuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4KCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/src/A128KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBBRVNLVzsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKY2xhc3MgQTEyOEtXCnsKICAgIHVzZSBBRVNLVzsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtlayBUaGUgS2V5IEVuY3J5cHRpb24gS2V5CiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY2hlY2tLRUtTaXplKCRrZWspCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcShtYl9zdHJsZW4oJGtlaywgJzhiaXQnKSwgMTYsICdCYWQgS0VLIHNpemUnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/src/A192KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBBRVNLVzsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKY2xhc3MgQTE5MktXCnsKICAgIHVzZSBBRVNLVzsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtlayBUaGUgS2V5IEVuY3J5cHRpb24gS2V5CiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY2hlY2tLRUtTaXplKCRrZWspCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcShtYl9zdHJsZW4oJGtlaywgJzhiaXQnKSwgMjQsICdCYWQgS0VLIHNpemUnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/src/A256KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBBRVNLVzsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKY2xhc3MgQTI1NktXCnsKICAgIHVzZSBBRVNLVzsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtlayBUaGUgS2V5IEVuY3J5cHRpb24gS2V5CiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gY2hlY2tLRUtTaXplKCRrZWspCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcShtYl9zdHJsZW4oJGtlaywgJzhiaXQnKSwgMzIsICdCYWQgS0VLIHNpemUnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/src/AESKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBBRVNLVzsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKdHJhaXQgQUVTS1cKewogICAgLyoqCiAgICAgKiBUaGUgaW5pdGlhbCB2YWx1ZSB1c2VkIHRvIHdyYXAgdGhlIGtleSBhbmQgY2hlY2sgdGhlIGludGVncml0eSB3aGVuIHVud3JhcHBlZC4KICAgICAqIFRoZSBSRkMzMzk0IHNldCB0aGlzIHZhbHVlIHRvIDB4QTZBNkE2QTZBNkE2QTZBNgogICAgICogVGhlIFJGQzU2NDkgc2V0IHRoaXMgdmFsdWUgdG8gMHhBNjU5NTlBNlhYWFhYWFhYIChUaGUgcGFydCB3aXRoIFhYWFhYWFhYIGlzIHRoZSBNTEksIGRlcGVuZHMgb24gdGhlIHBhZGRpbmcpLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSAgICAgICAgICAgICBUaGUga2V5CiAgICAgKiBAcGFyYW0gYm9vbCAgICRwYWRkaW5nX2VuYWJsZWQgRW5hYmxlIHBhZGRpbmcgKFJGQzU2NDkpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzMzk0I3NlY3Rpb24tMi4yLjMuMQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRJbml0aWFsVmFsdWUoJiRrZXksICRwYWRkaW5nX2VuYWJsZWQpCiAgICB7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcGFkZGluZ19lbmFibGVkKSB7CiAgICAgICAgICAgIHJldHVybiBoZXgyYmluKCdBNkE2QTZBNkE2QTZBNkE2Jyk7CiAgICAgICAgfQoKICAgICAgICAkTUxJID0gbWJfc3RybGVuKCRrZXksICc4Yml0Jyk7CiAgICAgICAgJGl2ID0gaGV4MmJpbignQTY1OTU5QTYnKS5zZWxmOjp0b1hCaXRzKDMyLCAkTUxJKTsKCiAgICAgICAgJG4gPSBpbnR2YWwoY2VpbCgkTUxJIC8gOCkpOwogICAgICAgICRrZXkgPSBzdHJfcGFkKCRrZXksIDggKiAkbiwgIlwwIiwgU1RSX1BBRF9SSUdIVCk7CgogICAgICAgIHJldHVybiAkaXY7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkKICAgICAqIEBwYXJhbSBib29sICAgJHBhZGRpbmdfZW5hYmxlZAogICAgICogQHBhcmFtIHN0cmluZyAkaXYKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2hlY2tJbml0aWFsVmFsdWUoJiRrZXksICRwYWRkaW5nX2VuYWJsZWQsICRpdikKICAgIHsKICAgICAgICAvLyBSRkMzMzk0IGNvbXBsaWFudAogICAgICAgIGlmICgkaXYgPT09IGhleDJiaW4oJ0E2QTZBNkE2QTZBNkE2QTYnKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIFRoZSBSRkMzMzk0IGlzIHJlcXVpcmVkIGJ1dCB0aGUgcHJldmlvdXMgY2hlY2sgaXMgbm90IHNhdGlzZmllZCA9PiBpbnZhbGlkCiAgICAgICAgaWYgKGZhbHNlID09PSAkcGFkZGluZ19lbmFibGVkKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vIFRoZSBoaWdoLW9yZGVyIGhhbGYgb2YgdGhlIEFJViBhY2NvcmRpbmcgdG8gdGhlIFJGQzU2NDkKICAgICAgICBpZiAoaGV4MmJpbignQTY1OTU5QTYnKSAhPT0gc2VsZjo6Z2V0TVNCKCRpdikpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJG4gPSBtYl9zdHJsZW4oJGtleSwgJzhiaXQnKSAvIDg7CiAgICAgICAgJE1MSSA9IGhleGRlYyhiaW4yaGV4KGx0cmltKHNlbGY6OmdldExTQigkaXYpLCAiXDAiKSkpOwoKICAgICAgICBpZiAoISg4ICogKCRuIC0gMSkgPCAkTUxJICYmICRNTEkgPD0gOCAqICRuKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkYiA9IDggKiAkbiAtICRNTEk7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGI7ICsrJGkpIHsKICAgICAgICAgICAgaWYgKCJcMCIgIT09IG1iX3N1YnN0cigka2V5LCAkTUxJICsgJGksIDEsICc4Yml0JykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAka2V5ID0gbWJfc3Vic3RyKCRrZXksIDAsICRNTEksICc4Yml0Jyk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5ICAgICAgICAgICAgIFRoZSBLZXkgdG8gd3JhcAogICAgICogQHBhcmFtIGJvb2wgICAkcGFkZGluZ19lbmFibGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNoZWNrS2V5U2l6ZSgka2V5LCAkcGFkZGluZ19lbmFibGVkKQogICAgewogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRwYWRkaW5nX2VuYWJsZWQgJiYgMCAhPT0gbWJfc3RybGVuKCRrZXksICc4Yml0JykgJSA4LCAnQmFkIGtleSBzaXplJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyT3JFcXVhbFRoYW4obWJfc3RybGVuKCRrZXksICc4Yml0JyksIDEsICdCYWQga2V5IHNpemUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtlayAgICAgICAgICAgICBUaGUgS2V5IEVuY3J5cHRpb24gS2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgICAgICAgICAgICAgVGhlIGtleSB0byB3cmFwCiAgICAgKiBAcGFyYW0gYm9vbCAgICRwYWRkaW5nX2VuYWJsZWQgSWYgZmFsc2UsIHRoZSBrZXkgdG8gd3JhcCBtdXN0IGJlIGEgc2VxdWVuY2Ugb2Ygb25lIG9yIG1vcmUgNjQtYml0IGJsb2NrcyAoUkZDMzM5NCBjb21wbGlhbnQpLCBlbHNlIHRoZSBrZXkgc2l6ZSBtdXN0IGJlIGF0IGxlYXN0IG9uZSBvY3RldCAoUkZDNTY0OSBjb21wbGlhbnQpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIHdyYXBwZWQga2V5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd3JhcCgka2VrLCAka2V5LCAkcGFkZGluZ19lbmFibGVkID0gZmFsc2UpCiAgICB7CiAgICAgICAgc2VsZjo6Y2hlY2tLRUtTaXplKCRrZWspOwogICAgICAgICRBID0gc2VsZjo6Z2V0SW5pdGlhbFZhbHVlKCRrZXksICRwYWRkaW5nX2VuYWJsZWQpOwogICAgICAgIHNlbGY6OmNoZWNrS2V5U2l6ZSgka2V5LCAkcGFkZGluZ19lbmFibGVkKTsKICAgICAgICAkUCA9IHN0cl9zcGxpdCgka2V5LCA4KTsKICAgICAgICAkTiA9IGNvdW50KCRQKTsKICAgICAgICAkQyA9IFtdOwoKICAgICAgICAkZW5jcnlwdG9yID0gc2VsZjo6Z2V0RW5jcnlwdG9yKCRrZWspOwogICAgICAgIGlmICgxID09PSAkTikgewogICAgICAgICAgICAkQiA9ICRlbmNyeXB0b3ItPmVuY3J5cHQoJEEuJFBbMF0pOwogICAgICAgICAgICAkQ1swXSA9IHNlbGY6OmdldE1TQigkQik7CiAgICAgICAgICAgICRDWzFdID0gc2VsZjo6Z2V0TFNCKCRCKTsKICAgICAgICB9IGVsc2VpZiAoMSA8ICROKSB7CiAgICAgICAgICAgICRSID0gJFA7CiAgICAgICAgICAgIGZvciAoJGogPSAwOyAkaiA8PSA1OyArKyRqKSB7CiAgICAgICAgICAgICAgICBmb3IgKCRpID0gMTsgJGkgPD0gJE47ICsrJGkpIHsKICAgICAgICAgICAgICAgICAgICAkQiA9ICRlbmNyeXB0b3ItPmVuY3J5cHQoJEEuJFJbJGkgLSAxXSk7CiAgICAgICAgICAgICAgICAgICAgJHQgPSAkaSArICRqICogJE47CiAgICAgICAgICAgICAgICAgICAgJEEgPSBzZWxmOjp0b1hCaXRzKDY0LCAkdCkgXiBzZWxmOjpnZXRNU0IoJEIpOwogICAgICAgICAgICAgICAgICAgICRSWyRpIC0gMV0gPSBzZWxmOjpnZXRMU0IoJEIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRDID0gYXJyYXlfbWVyZ2UoWyRBXSwgJFIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJycsICRDKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtlayAgICAgICAgICAgICBUaGUgS2V5IEVuY3J5cHRpb24gS2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgICAgICAgICAgICAgVGhlIGtleSB0byB1bndyYXAKICAgICAqIEBwYXJhbSBib29sICAgJHBhZGRpbmdfZW5hYmxlZCBJZiBmYWxzZSwgdGhlIEFJViBjaGVjayBtdXN0IGJlIFJGQzMzOTQgY29tcGxpYW50LCBlbHNlIGl0IG11c3QgYmUgUkZDNTY0OSBvciBSRkMzMzk0IGNvbXBsaWFudAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBrZXkgdW53cmFwcGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW53cmFwKCRrZWssICRrZXksICRwYWRkaW5nX2VuYWJsZWQgPSBmYWxzZSkKICAgIHsKICAgICAgICBzZWxmOjpjaGVja0tFS1NpemUoJGtlayk7CiAgICAgICAgJFAgPSBzdHJfc3BsaXQoJGtleSwgOCk7CiAgICAgICAgJEEgPSAkUFswXTsKICAgICAgICAkTiA9IGNvdW50KCRQKTsKCiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyVGhhbigkTiwgMSwgJ0JhZCBkYXRhJyk7CiAgICAgICAgJGVuY3J5cHRvciA9IHNlbGY6OmdldEVuY3J5cHRvcigka2VrKTsKCiAgICAgICAgaWYgKDIgPT09ICROKSB7CiAgICAgICAgICAgICRCID0gJGVuY3J5cHRvci0+ZGVjcnlwdCgkUFswXS4kUFsxXSk7CiAgICAgICAgICAgICR1bndyYXBwZWQgPSBzZWxmOjpnZXRMU0IoJEIpOwogICAgICAgICAgICAkQSA9IHNlbGY6OmdldE1TQigkQik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJFIgPSAkUDsKICAgICAgICAgICAgZm9yICgkaiA9IDU7ICRqID49IDA7IC0tJGopIHsKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAkTiAtIDE7ICRpID49IDE7IC0tJGkpIHsKICAgICAgICAgICAgICAgICAgICAkdCA9ICRpICsgJGogKiAoJE4gLSAxKTsKICAgICAgICAgICAgICAgICAgICAkQiA9ICRlbmNyeXB0b3ItPmRlY3J5cHQoKHNlbGY6OnRvWEJpdHMoNjQsICR0KSBeICRBKS4kUlskaV0pOwogICAgICAgICAgICAgICAgICAgICRBID0gc2VsZjo6Z2V0TVNCKCRCKTsKICAgICAgICAgICAgICAgICAgICAkUlskaV0gPSBzZWxmOjpnZXRMU0IoJEIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuc2V0KCRSWzBdKTsKCiAgICAgICAgICAgICR1bndyYXBwZWQgPSBpbXBsb2RlKCcnLCAkUik7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6dHJ1ZShzZWxmOjpjaGVja0luaXRpYWxWYWx1ZSgkdW53cmFwcGVkLCAkcGFkZGluZ19lbmFibGVkLCAkQSksICdJbnRlZ3JpdHkgY2hlY2sgZmFpbGVkJyk7CgogICAgICAgIHJldHVybiAkdW53cmFwcGVkOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkYml0cwogICAgICogQHBhcmFtIGludCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0b1hCaXRzKCRiaXRzLCAkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGhleDJiaW4oc3RyX3BhZChkZWNoZXgoJHZhbHVlKSwgJGJpdHMgLyA0LCAnMCcsIFNUUl9QQURfTEVGVCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRNU0IoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBtYl9zdWJzdHIoJHZhbHVlLCAwLCBtYl9zdHJsZW4oJHZhbHVlLCAnOGJpdCcpIC8gMiwgJzhiaXQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0TFNCKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gbWJfc3Vic3RyKCR2YWx1ZSwgbWJfc3RybGVuKCR2YWx1ZSwgJzhiaXQnKSAvIDIsIG51bGwsICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZWsKICAgICAqCiAgICAgKiBAcmV0dXJuIFxBRVNLV1xFbmNyeXB0b3JJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RW5jcnlwdG9yKCRrZWspCiAgICB7CiAgICAgICAgaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ29wZW5zc2wnKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IE9wZW5TU0xFbmNyeXB0b3IoJGtlayk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1BsZWFzZSBpbnN0YWxsIE9wZW5TU0wgZXh0ZW5zaW9uLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/src/EncryptorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBBRVNLVzsKCmludGVyZmFjZSBFbmNyeXB0b3JJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHQoJGRhdGEpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0KCRkYXRhKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/aes-key-wrap/src/OpenSSLEncryptor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBBRVNLVzsKCmZpbmFsIGNsYXNzIE9wZW5TU0xFbmNyeXB0b3IgaW1wbGVtZW50cyBFbmNyeXB0b3JJbnRlcmZhY2UKewogICAgcHJpdmF0ZSAka2VrOwogICAgcHJpdmF0ZSAkbWV0aG9kOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgka2VrKQogICAgewogICAgICAgICR0aGlzLT5rZWsgPSAka2VrOwogICAgICAgICR0aGlzLT5tZXRob2QgPSAnYWVzLScuKG1iX3N0cmxlbigka2VrLCAnOGJpdCcpICogOCkuJy1lY2InOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5jcnlwdCgkZGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gb3BlbnNzbF9lbmNyeXB0KCRkYXRhLCAkdGhpcy0+bWV0aG9kLCAkdGhpcy0+a2VrLCBPUEVOU1NMX1pFUk9fUEFERElORyB8IE9QRU5TU0xfUkFXX0RBVEEpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjcnlwdCgkZGF0YSkKICAgIHsKICAgICAgICByZXR1cm4gb3BlbnNzbF9kZWNyeXB0KCRkYXRhLCAkdGhpcy0+bWV0aG9kLCAkdGhpcy0+a2VrLCBPUEVOU1NMX1pFUk9fUEFERElORyB8IE9QRU5TU0xfUkFXX0RBVEEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICJkZXNjcmlwdGlvbiI6ICJCYXNlIDY0IFVSTCBTYWZlIEVuY29kaW5nL2RlY29kaW5nIFBIUCBMaWJyYXJ5IiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJrZXl3b3JkcyI6IFsiQmFzZTY0IiwgIlVSTCIsICJTYWZlIiwgIlJGQzQ2NDgiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkJhc2U2NFVybFxcIjogICJzcmMvIgogICAgICAgIH0KICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl41LjN8XjcuMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC4wfF41LjAiLAogICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4KCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/src/Base64Url.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBCYXNlNjRVcmw7CgovKioKICogRW5jb2RlIGFuZCBkZWNvZGUgZGF0YSBpbnRvIEJhc2U2NCBVcmwgU2FmZS4KICovCmZpbmFsIGNsYXNzIEJhc2U2NFVybAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgICAgICAgIFRoZSBkYXRhIHRvIGVuY29kZQogICAgICogQHBhcmFtIGJvb2wgICAkdXNlX3BhZGRpbmcgSWYgdHJ1ZSwgdGhlICI9IiBwYWRkaW5nIGF0IGVuZCBvZiB0aGUgZW5jb2RlZCB2YWx1ZSBhcmUga2VwdCwgZWxzZSBpdCBpcyByZW1vdmVkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGRhdGEgZW5jb2RlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkZGF0YSwgJHVzZV9wYWRkaW5nID0gZmFsc2UpCiAgICB7CiAgICAgICAgJGVuY29kZWQgPSBzdHJ0cihiYXNlNjRfZW5jb2RlKCRkYXRhKSwgJysvJywgJy1fJyk7CgogICAgICAgIHJldHVybiB0cnVlID09PSAkdXNlX3BhZGRpbmcgPyAkZW5jb2RlZCA6IHJ0cmltKCRlbmNvZGVkLCAnPScpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YSBUaGUgZGF0YSB0byBkZWNvZGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZGF0YSBkZWNvZGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKCRkYXRhKQogICAgewogICAgICAgIHJldHVybiBiYXNlNjRfZGVjb2RlKHN0cnRyKCRkYXRhLCAnLV8nLCAnKy8nKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvam9zZSIsCiAgICAiZGVzY3JpcHRpb24iOiAiSlNPTiBPYmplY3QgU2lnbmluZyBhbmQgRW5jcnlwdGlvbiBsaWJyYXJ5IGZvciBQSFAuIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJrZXl3b3JkcyI6IFsiSldTIiwgIkpXVCIsICJKV0UiLCAiSldBIiwgIkpXSyIsICJKV0tTZXQiLCAiSm90IiwgIkpvc2UiLCAiUkZDNzUxNSIsICJSRkM3NTE2IiwgIlJGQzc1MTciLCAiUkZDNzUxOCIsICJSRkM3NTE5IiwgIlJGQzc1MjAiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvSm9zZSIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICB9LHsKICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvam9zZS9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJKb3NlXFwiOiAgInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJhdXRvbG9hZC1kZXYiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiSm9zZVxcVGVzdFxcIjogICJ0ZXN0cy8iCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiXjUuNnxeNy4wIiwKICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wIiwKICAgICAgICAic3BvbWt5LWxhYnMvYWVzLWtleS13cmFwIjogIl4zLjAiLAogICAgICAgICJzcG9ta3ktbGFicy9waHAtYWVzLWdjbSI6ICJeMS4yIiwKICAgICAgICAiYmViZXJsZWkvYXNzZXJ0IjogIl4yLjQiLAogICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIl4xLjEiLAogICAgICAgICJzeW1mb255L3BvbHlmaWxsLXBocDcwIjogIl4xLjEiLAogICAgICAgICJmZ3Jvc3NlL3BocGFzbjEiOiAiXjEuNSIsCiAgICAgICAgIm1kYW50ZXIvZWNjIjogIjAuNC4qIiwKICAgICAgICAicHNyL2NhY2hlIjogIl4xLjAiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjUuMCIsCiAgICAgICAgInNhdG9vc2hpL3BocC1jb3ZlcmFsbHMiOiAiXjEuMCIsCiAgICAgICAgInN5bWZvbnkvY2FjaGUiOiAiXjIuMHxeMy4wIgogICAgfSwKICAgInN1Z2dlc3QiOnsKICAgICAgICAiZXh0LWNyeXB0byI6ICJIaWdobHkgcmVjb21tZW5kZWQgd2hlbiB5b3UgdXNlIEFFUyBHQ00gYmFzZWQgYWxnb3JpdGhtcy4iLAogICAgICAgICJleHQtZWQyNTUxOSI6ICJGb3IgRWREU0Egd2l0aCBFZDI1NTE5IGN1cnZlcyBzdXBwb3J0LiIsCiAgICAgICAgImV4dC1jdXJ2ZTI1NTE5IjogIkZvciBFZERTQSB3aXRoIFgyNTUxOSBjdXJ2ZXMgc3VwcG9ydC4iCiAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNi4xLngtZGV2IgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A128CBCHS256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTI4Q0JDSFMyNTYuCiAqLwpmaW5hbCBjbGFzcyBBMTI4Q0JDSFMyNTYgZXh0ZW5kcyBBRVNDQkNIUwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiAyNTY7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExMjhDQkMtSFMyNTYnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A128GCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTI4R0NNLgogKi8KZmluYWwgY2xhc3MgQTEyOEdDTSBleHRlbmRzIEFFU0dDTQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKQogICAgewogICAgICAgIHJldHVybiAxMjg7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExMjhHQ00nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A192CBCHS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTkyQ0JDSFMzODQuCiAqLwpmaW5hbCBjbGFzcyBBMTkyQ0JDSFMzODQgZXh0ZW5kcyBBRVNDQkNIUwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiAzODQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExOTJDQkMtSFMzODQnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A192GCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTkyR0NNLgogKi8KZmluYWwgY2xhc3MgQTE5MkdDTSBleHRlbmRzIEFFU0dDTQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKQogICAgewogICAgICAgIHJldHVybiAxOTI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExOTJHQ00nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A256CBCHS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMjU2Q0JDSFM1MTIuCiAqLwpmaW5hbCBjbGFzcyBBMjU2Q0JDSFM1MTIgZXh0ZW5kcyBBRVNDQkNIUwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiA1MTI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0EyNTZDQkMtSFM1MTInOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A256GCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMjU2R0NNLgogKi8KZmluYWwgY2xhc3MgQTI1NkdDTSBleHRlbmRzIEFFU0dDTQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKQogICAgewogICAgICAgIHJldHVybiAyNTY7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0EyNTZHQ00nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/AESCBCHS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CgphYnN0cmFjdCBjbGFzcyBBRVNDQkNIUyBpbXBsZW1lbnRzIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5jcnlwdENvbnRlbnQoJGRhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciwgJiR0YWcpCiAgICB7CiAgICAgICAgJGsgPSBtYl9zdWJzdHIoJGNlaywgbWJfc3RybGVuKCRjZWssICc4Yml0JykgLyAyLCBudWxsLCAnOGJpdCcpOwoKICAgICAgICAkY3lwaGVydGV4dCA9IG9wZW5zc2xfZW5jcnlwdCgkZGF0YSwgJHRoaXMtPmdldE1vZGUoJGspLCAkaywgT1BFTlNTTF9SQVdfREFUQSwgJGl2KTsKCiAgICAgICAgJHRhZyA9ICR0aGlzLT5jYWxjdWxhdGVBdXRoZW50aWNhdGlvblRhZygkY3lwaGVydGV4dCwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyKTsKCiAgICAgICAgcmV0dXJuICRjeXBoZXJ0ZXh0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGNlawogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRpdgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRhYWQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGFhZAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICR0YWcKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjcnlwdENvbnRlbnQoJGRhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciwgJHRhZykKICAgIHsKICAgICAgICBBc3NlcnRpb246OnRydWUoCiAgICAgICAgICAgICR0aGlzLT5pc1RhZ1ZhbGlkKCRkYXRhLCAkY2VrLCAkaXYsICRhYWQsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXIsICR0YWcpLAogICAgICAgICAgICAnVW5hYmxlIHRvIHZlcmlmeSB0aGUgdGFnLicKICAgICAgICApOwoKICAgICAgICAkayA9IG1iX3N1YnN0cigkY2VrLCBtYl9zdHJsZW4oJGNlaywgJzhiaXQnKSAvIDIsIG51bGwsICc4Yml0Jyk7CgogICAgICAgIHJldHVybiBvcGVuc3NsX2RlY3J5cHQoJGRhdGEsIHNlbGY6OmdldE1vZGUoJGspLCAkaywgT1BFTlNTTF9SQVdfREFUQSwgJGl2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkZW5jcnlwdGVkX2RhdGEKICAgICAqIEBwYXJhbSAkY2VrCiAgICAgKiBAcGFyYW0gJGl2CiAgICAgKiBAcGFyYW0gJGFhZAogICAgICogQHBhcmFtIHN0cmluZyAkZW5jb2RlZF9oZWFkZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQXV0aGVudGljYXRpb25UYWcoJGVuY3J5cHRlZF9kYXRhLCAkY2VrLCAkaXYsICRhYWQsICRlbmNvZGVkX2hlYWRlcikKICAgIHsKICAgICAgICAkY2FsY3VsYXRlZF9hYWQgPSAkZW5jb2RlZF9oZWFkZXI7CiAgICAgICAgaWYgKG51bGwgIT09ICRhYWQpIHsKICAgICAgICAgICAgJGNhbGN1bGF0ZWRfYWFkIC49ICcuJy4kYWFkOwogICAgICAgIH0KICAgICAgICAkbWFjX2tleSA9IG1iX3N1YnN0cigkY2VrLCAwLCBtYl9zdHJsZW4oJGNlaywgJzhiaXQnKSAvIDIsICc4Yml0Jyk7CiAgICAgICAgJGF1dGhfZGF0YV9sZW5ndGggPSBtYl9zdHJsZW4oJGVuY29kZWRfaGVhZGVyLCAnOGJpdCcpOwoKICAgICAgICAkc2VjdXJlZF9pbnB1dCA9IGltcGxvZGUoJycsIFsKICAgICAgICAgICAgJGNhbGN1bGF0ZWRfYWFkLAogICAgICAgICAgICAkaXYsCiAgICAgICAgICAgICRlbmNyeXB0ZWRfZGF0YSwKICAgICAgICAgICAgcGFjaygnTjInLCAoJGF1dGhfZGF0YV9sZW5ndGggLyAyMTQ3NDgzNjQ3KSAqIDgsICgkYXV0aF9kYXRhX2xlbmd0aCAlIDIxNDc0ODM2NDcpICogOCksIC8vIHN0cl9wYWQoZGVjaGV4KCRhdXRoX2RhdGFfbGVuZ3RoKSwgNCwgIjAiLCBTVFJfUEFEX0xFRlQpCiAgICAgICAgXSk7CiAgICAgICAgJGhhc2ggPSBoYXNoX2htYWMoJHRoaXMtPmdldEhhc2hBbGdvcml0aG0oKSwgJHNlY3VyZWRfaW5wdXQsICRtYWNfa2V5LCB0cnVlKTsKCiAgICAgICAgcmV0dXJuICBtYl9zdWJzdHIoJGhhc2gsIDAsIG1iX3N0cmxlbigkaGFzaCwgJzhiaXQnKSAvIDIsICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGF1dGhlbnRpY2F0aW9uX3RhZwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbmNvZGVkX2hlYWRlcgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbmNyeXB0ZWRfZGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRjZWsKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkaXYKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkYWFkCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc1RhZ1ZhbGlkKCRlbmNyeXB0ZWRfZGF0YSwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9oZWFkZXIsICRhdXRoZW50aWNhdGlvbl90YWcpCiAgICB7CiAgICAgICAgcmV0dXJuICRhdXRoZW50aWNhdGlvbl90YWcgPT09ICR0aGlzLT5jYWxjdWxhdGVBdXRoZW50aWNhdGlvblRhZygkZW5jcnlwdGVkX2RhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfaGVhZGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SVZTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMTI4OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkawogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0TW9kZSgkaykKICAgIHsKICAgICAgICByZXR1cm4gJ2Flcy0nLig4ICogbWJfc3RybGVuKCRrLCAnOGJpdCcpKS4nLWNiYyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/AESGCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCnVzZSBBRVNHQ01cQUVTR0NNIGFzIEdDTTsKdXNlIEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOwoKYWJzdHJhY3QgY2xhc3MgQUVTR0NNIGltcGxlbWVudHMgQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0Q29udGVudCgkZGF0YSwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyLCAmJHRhZykKICAgIHsKICAgICAgICAkY2FsY3VsYXRlZF9hYWQgPSAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyOwogICAgICAgIGlmIChudWxsICE9PSAkYWFkKSB7CiAgICAgICAgICAgICRjYWxjdWxhdGVkX2FhZCAuPSAnLicuJGFhZDsKICAgICAgICB9CgogICAgICAgIGxpc3QoJGN5cGhlcnRleHQsICR0YWcpID0gR0NNOjplbmNyeXB0KCRjZWssICRpdiwgJGRhdGEsICRjYWxjdWxhdGVkX2FhZCk7CgogICAgICAgIHJldHVybiAkY3lwaGVydGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqICB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0Q29udGVudCgkZGF0YSwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyLCAkdGFnKQogICAgewogICAgICAgICRjYWxjdWxhdGVkX2FhZCA9ICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXI7CiAgICAgICAgaWYgKG51bGwgIT09ICRhYWQpIHsKICAgICAgICAgICAgJGNhbGN1bGF0ZWRfYWFkIC49ICcuJy4kYWFkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEdDTTo6ZGVjcnlwdCgkY2VrLCAkaXYsICRkYXRhLCAkY2FsY3VsYXRlZF9hYWQsICR0YWcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElWU2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDk2OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0S2V5U2l6ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryptionAlgorithmInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSBleHRlbmRzIEpXQUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEVuY3J5cHQgZGF0YS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGRhdGEgICAgICAgICAgICAgICAgICAgICBUaGUgZGF0YSB0byBlbmNyeXB0CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGNlayAgICAgICAgICAgICAgICAgICAgICBUaGUgY29udGVudCBlbmNyeXB0aW9uIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRpdiAgICAgICAgICAgICAgICAgICAgICAgVGhlIEluaXRpYWxpemF0aW9uIFZlY3RvcgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRhYWQgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbCBBZGRpdGlvbmFsIEF1dGhlbnRpY2F0ZWQgRGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXIgVGhlIFByb3RlY3RlZCBIZWFkZXIgZW5jb2RlZCBpbiBCYXNlNjRVcmwKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdGFnICAgICAgICAgICAgICAgICAgICAgIFRhZwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNyeXB0ZWQgZGF0YQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5jcnlwdENvbnRlbnQoJGRhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciwgJiR0YWcpOwoKICAgIC8qKgogICAgICogRGVjcnlwdCBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZGF0YSAgICAgICAgICAgICAgICAgICAgIFRoZSBkYXRhIHRvIGRlY3J5cHQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkY2VrICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb250ZW50IGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGl2ICAgICAgICAgICAgICAgICAgICAgICBUaGUgSW5pdGlhbGl6YXRpb24gVmVjdG9yCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGFhZCAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIEFkZGl0aW9uYWwgQXV0aGVudGljYXRlZCBEYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciBUaGUgUHJvdGVjdGVkIEhlYWRlciBlbmNvZGVkIGluIEJhc2U2NFVybAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICR0YWcgICAgICAgICAgICAgICAgICAgICAgVGFnCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRDb250ZW50KCRkYXRhLCAkY2VrLCAkaXYsICRhYWQsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXIsICR0YWcpOwoKICAgIC8qKgogICAgICogQHJldHVybiBpbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SVZTaXplKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q0VLU2l6ZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/JWAInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBKV0FJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhbGdvcml0aG0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/JWAManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCi8qKgogKiBDbGFzcyBKV0FNYW5hZ2VyLgogKi8KZmluYWwgY2xhc3MgSldBTWFuYWdlciBpbXBsZW1lbnRzIEpXQU1hbmFnZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAkYWxnb3JpdGhtcyA9IFtdOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNBbGdvcml0aG1TdXBwb3J0ZWQoJGFsZ29yaXRobSkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRoaXMtPmdldEFsZ29yaXRobSgkYWxnb3JpdGhtKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWxnb3JpdGhtczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxpc3RBbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5cygkdGhpcy0+Z2V0QWxnb3JpdGhtcygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobSgkYWxnb3JpdGhtKQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRhbGdvcml0aG0sICR0aGlzLT5hbGdvcml0aG1zKSA/ICR0aGlzLT5hbGdvcml0aG1zWyRhbGdvcml0aG1dIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEFsZ29yaXRobShKV0FJbnRlcmZhY2UgJGFsZ29yaXRobSkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5pc0FsZ29yaXRobVN1cHBvcnRlZCgkYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5hbGdvcml0aG1zWyRhbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKV0gPSAkYWxnb3JpdGhtOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFtAaW5oZXJpdGRvY30uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVBbGdvcml0aG0oJGFsZ29yaXRobSkKICAgIHsKICAgICAgICBpZiAoJGFsZ29yaXRobSBpbnN0YW5jZW9mIEpXQUludGVyZmFjZSkgewogICAgICAgICAgICAkbmFtZSA9ICRhbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKTsKICAgICAgICB9IGVsc2VpZiAoaXNfc3RyaW5nKCRhbGdvcml0aG0pKSB7CiAgICAgICAgICAgICRuYW1lID0gJGFsZ29yaXRobTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIEpXQUludGVyZmFjZSBvYmplY3QuJyk7CiAgICAgICAgfQogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRuYW1lLCAkdGhpcy0+YWxnb3JpdGhtcykpIHsKICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmFsZ29yaXRobXNbJG5hbWVdKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/JWAManagerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBKV0FNYW5hZ2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wgUmV0dXJucyB0cnVlIGlmIHRoZSBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0FsZ29yaXRobVN1cHBvcnRlZCgkYWxnb3JpdGhtKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsZ29yaXRobSBUaGUgYWxnb3JpdGhtCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxBbGdvcml0aG1cSldBSW50ZXJmYWNlfG51bGwgUmV0dXJucyBKV0FJbnRlcmZhY2Ugb2JqZWN0IGlmIHRoZSBhbGdvcml0aG0gaXMgc3VwcG9ydGVkLCBlbHNlIG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobSgkYWxnb3JpdGhtKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcQWxnb3JpdGhtXEpXQUludGVyZmFjZVtdIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10gUmV0dXJucyB0aGUgbGlzdCBvZiBuYW1lcyBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGlzdEFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxBbGdvcml0aG1cSldBSW50ZXJmYWNlICRhbGdvcml0aG0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEFsZ29yaXRobShKV0FJbnRlcmZhY2UgJGFsZ29yaXRobSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUFsZ29yaXRobSgkYWxnb3JpdGhtKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A128GCMKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIEExMjhHQ01LVy4KICovCmZpbmFsIGNsYXNzIEExMjhHQ01LVyBleHRlbmRzIEFFU0dDTUtXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDEyODsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnQTEyOEdDTUtXJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A128KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExMjhLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEExMjhLVy4KICovCmZpbmFsIGNsYXNzIEExMjhLVyBleHRlbmRzIEFFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExMjhLVyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRLZXlTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMTY7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A192GCMKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIEExOTJHQ01LVy4KICovCmZpbmFsIGNsYXNzIEExOTJHQ01LVyBleHRlbmRzIEFFU0dDTUtXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE5MjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnQTE5MkdDTUtXJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A192KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExOTJLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEExOTJLVy4KICovCmZpbmFsIGNsYXNzIEExOTJLVyBleHRlbmRzIEFFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExOTJLVyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRLZXlTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMjQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A256GCMKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIEEyNTZHQ01LVy4KICovCmZpbmFsIGNsYXNzIEEyNTZHQ01LVyBleHRlbmRzIEFFU0dDTUtXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDI1NjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnQTI1NkdDTUtXJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A256KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEEyNTZLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEEyNTZLVy4KICovCmZpbmFsIGNsYXNzIEEyNTZLVyBleHRlbmRzIEFFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0EyNTZLVyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRLZXlTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMzI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/AESGCMKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0dDTVxBRVNHQ007CnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKCi8qKgogKiBDbGFzcyBBRVNHQ01LVy4KICovCmFic3RyYWN0IGNsYXNzIEFFU0dDTUtXIGltcGxlbWVudHMgS2V5V3JhcHBpbmdJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cmFwS2V5KEpXS0ludGVyZmFjZSAka2V5LCAkY2VrLCBhcnJheSAkY29tcGxldGVfaGVhZGVycywgYXJyYXkgJiRhZGRpdGlvbmFsX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwogICAgICAgICRrZWsgPSBCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSk7CiAgICAgICAgJGl2ID0gcmFuZG9tX2J5dGVzKDk2IC8gOCk7CiAgICAgICAgJGFkZGl0aW9uYWxfaGVhZGVyc1snaXYnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRpdik7CgogICAgICAgIGxpc3QoJGVuY3J5cHRlZF9jZWssICR0YWcpID0gQUVTR0NNOjplbmNyeXB0KCRrZWssICRpdiwgJGNlaywgbnVsbCk7CiAgICAgICAgJGFkZGl0aW9uYWxfaGVhZGVyc1sndGFnJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkdGFnKTsKCiAgICAgICAgcmV0dXJuICRlbmNyeXB0ZWRfY2VrOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW53cmFwS2V5KEpXS0ludGVyZmFjZSAka2V5LCAkZW5jcnlwdGVkX2NlaywgYXJyYXkgJGhlYWRlcikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgJHRoaXMtPmNoZWNrQWRkaXRpb25hbFBhcmFtZXRlcnMoJGhlYWRlcik7CgogICAgICAgICRrZWsgPSBCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSk7CiAgICAgICAgJHRhZyA9IEJhc2U2NFVybDo6ZGVjb2RlKCRoZWFkZXJbJ3RhZyddKTsKICAgICAgICAkaXYgPSBCYXNlNjRVcmw6OmRlY29kZSgkaGVhZGVyWydpdiddKTsKCiAgICAgICAgcmV0dXJuIEFFU0dDTTo6ZGVjcnlwdCgka2VrLCAkaXYsICRlbmNyeXB0ZWRfY2VrLCBudWxsLCAkdGFnKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEtleU1hbmFnZW1lbnRNb2RlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6TU9ERV9XUkFQOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEpXS0ludGVyZmFjZSAka2V5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjaGVja0tleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmVxKCRrZXktPmdldCgna3R5JyksICdvY3QnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnaycpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImsiIGlzIG1pc3NpbmcuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhlYWRlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tBZGRpdGlvbmFsUGFyYW1ldGVycyhhcnJheSAkaGVhZGVyKQogICAgewogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRoZWFkZXIsICdpdicsICdQYXJhbWV0ZXIgIml2IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRoZWFkZXIsICd0YWcnLCAnUGFyYW1ldGVyICJ0YWciIGlzIG1pc3NpbmcuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/AESKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKLyoqCiAqIENsYXNzIEFFU0tXLgogKi8KYWJzdHJhY3QgY2xhc3MgQUVTS1cgaW1wbGVtZW50cyBLZXlXcmFwcGluZ0ludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdyYXBLZXkoSldLSW50ZXJmYWNlICRrZXksICRjZWssIGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVycykKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgJHdyYXBwZXIgPSAkdGhpcy0+Z2V0V3JhcHBlcigpOwoKICAgICAgICByZXR1cm4gJHdyYXBwZXItPndyYXAoQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCdrJykpLCAkY2VrKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVud3JhcEtleShKV0tJbnRlcmZhY2UgJGtleSwgJGVuY3J5cHRlZF9jZWssIGFycmF5ICRoZWFkZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwogICAgICAgICR3cmFwcGVyID0gJHRoaXMtPmdldFdyYXBwZXIoKTsKCiAgICAgICAgcmV0dXJuICR3cmFwcGVyLT51bndyYXAoQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCdrJykpLCAkZW5jcnlwdGVkX2Nlayk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlNYW5hZ2VtZW50TW9kZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok1PREVfV1JBUDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIEFzc2VydGlvbjo6ZXEoJGtleS0+Z2V0KCdrdHknKSwgJ29jdCcsICdXcm9uZyBrZXkgdHlwZS4nKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoJGtleS0+aGFzKCdrJyksICdUaGUga2V5IHBhcmFtZXRlciAiayIgaXMgbWlzc2luZy4nKTsKICAgICAgICBBc3NlcnRpb246OmVxKCR0aGlzLT5nZXRLZXlTaXplKCksIG1iX3N0cmxlbihCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSksICc4Yml0JyksICdUaGUga2V5IHNpemUgaXMgbm90IHZhbGlkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBcQUVTS1dcQTEyOEtXfFxBRVNLV1xBMTkyS1d8XEFFU0tXXEEyNTZLVwogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/Dir.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgRGlyIGltcGxlbWVudHMgRGlyZWN0RW5jcnlwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFSyhKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmVxKCRrZXktPmdldCgna3R5JyksICdvY3QnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnaycpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImsiIGlzIG1pc3NpbmcuJyk7CgogICAgICAgIHJldHVybiBCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ2Rpcic7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlNYW5hZ2VtZW50TW9kZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok1PREVfRElSRUNUOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/DirectEncryptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgRGlyZWN0RW5jcnlwdGlvbkludGVyZmFjZSBleHRlbmRzIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5IFRoZSBrZXkgdXNlZCB0byBnZXQgdGhlIENFSwogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBJZiBrZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWxnb3JpdGhtIG9yIGlmIHRoZSBrZXkgdXNhZ2UgZG9lcyBub3QgYXV0aG9yaXplIHRoZSBvcGVyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgQ0VLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDRUsoSldLSW50ZXJmYWNlICRrZXkpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxGYWN0b3J5XEpXS0ZhY3Rvcnk7CnVzZSBKb3NlXE9iamVjdFxKV0s7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CnVzZSBKb3NlXFV0aWxcQ29uY2F0S0RGOwp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEVjREhcRWNESDsKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CgovKioKICogQ2xhc3MgRUNESEVTLgogKi8KZmluYWwgY2xhc3MgRUNESEVTIGltcGxlbWVudHMgS2V5QWdyZWVtZW50SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWdyZWVtZW50S2V5KCRlbmNyeXB0aW9uX2tleV9sZW5ndGgsICRhbGdvcml0aG0sIEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJGNvbXBsZXRlX2hlYWRlciA9IFtdLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVyX3ZhbHVlcyA9IFtdKQogICAgewogICAgICAgIGlmICgkcmVjaXBpZW50X2tleS0+aGFzKCdkJykpIHsKICAgICAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRyZWNpcGllbnRfa2V5LCB0cnVlKTsKICAgICAgICAgICAgJHByaXZhdGVfa2V5ID0gJHJlY2lwaWVudF9rZXk7CiAgICAgICAgICAgICRwdWJsaWNfa2V5ID0gJHRoaXMtPmdldFB1YmxpY0tleSgkY29tcGxldGVfaGVhZGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJHJlY2lwaWVudF9rZXksIGZhbHNlKTsKICAgICAgICAgICAgJHB1YmxpY19rZXkgPSAkcmVjaXBpZW50X2tleTsKICAgICAgICAgICAgc3dpdGNoICgkcHVibGljX2tleS0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgY2FzZSAnUC01MjEnOgogICAgICAgICAgICAgICAgICAgICRwcml2YXRlX2tleSA9IEpXS0ZhY3Rvcnk6OmNyZWF0ZUVDS2V5KFsnY3J2JyA9PiAkcHVibGljX2tleS0+Z2V0KCdjcnYnKV0pOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ1gyNTUxOSc6CiAgICAgICAgICAgICAgICAgICAgJHByaXZhdGVfa2V5ID0gSldLRmFjdG9yeTo6Y3JlYXRlT0tQS2V5KFsnY3J2JyA9PiAnWDI1NTE5J10pOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGN1cnZlICIlcyIgaXMgbm90IHN1cHBvcnRlZCcsICRwdWJsaWNfa2V5LT5nZXQoJ2NydicpKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGVwayA9ICRwcml2YXRlX2tleS0+dG9QdWJsaWMoKS0+Z2V0QWxsKCk7CiAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcl92YWx1ZXMgPSBhcnJheV9tZXJnZSgkYWRkaXRpb25hbF9oZWFkZXJfdmFsdWVzLCBbCiAgICAgICAgICAgICAgICAnZXBrJyA9PiAkZXBrLAogICAgICAgICAgICBdKTsKICAgICAgICB9CiAgICAgICAgQXNzZXJ0aW9uOjplcSgkcHJpdmF0ZV9rZXktPmdldCgnY3J2JyksICRwdWJsaWNfa2V5LT5nZXQoJ2NydicpLCAnQ3VydmVzIGFyZSBkaWZmZXJlbnQnKTsKCiAgICAgICAgJGFncmVlZF9rZXkgPSAkdGhpcy0+Y2FsY3VsYXRlQWdyZWVtZW50S2V5KCRwcml2YXRlX2tleSwgJHB1YmxpY19rZXkpOwoKICAgICAgICAkYXB1ID0gYXJyYXlfa2V5X2V4aXN0cygnYXB1JywgJGNvbXBsZXRlX2hlYWRlcikgPyAkY29tcGxldGVfaGVhZGVyWydhcHUnXSA6ICcnOwogICAgICAgICRhcHYgPSBhcnJheV9rZXlfZXhpc3RzKCdhcHYnLCAkY29tcGxldGVfaGVhZGVyKSA/ICRjb21wbGV0ZV9oZWFkZXJbJ2FwdiddIDogJyc7CgogICAgICAgIHJldHVybiBDb25jYXRLREY6OmdlbmVyYXRlKCRhZ3JlZWRfa2V5LCAkYWxnb3JpdGhtLCAkZW5jcnlwdGlvbl9rZXlfbGVuZ3RoLCAkYXB1LCAkYXB2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRwcml2YXRlX2tleQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHB1YmxpY19rZXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGludHxzdHJpbmd8dm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FsY3VsYXRlQWdyZWVtZW50S2V5KEpXS0ludGVyZmFjZSAkcHJpdmF0ZV9rZXksIEpXS0ludGVyZmFjZSAkcHVibGljX2tleSkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRwdWJsaWNfa2V5LT5nZXQoJ2NydicpKSB7CiAgICAgICAgICAgIGNhc2UgJ1AtMjU2JzoKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICAkcCA9ICR0aGlzLT5nZXRHZW5lcmF0b3IoJHByaXZhdGVfa2V5KTsKCiAgICAgICAgICAgICAgICAkcmVjX3ggPSAkdGhpcy0+Y29udmVydEJhc2U2NFRvR21wKCRwdWJsaWNfa2V5LT5nZXQoJ3gnKSk7CiAgICAgICAgICAgICAgICAkcmVjX3kgPSAkdGhpcy0+Y29udmVydEJhc2U2NFRvR21wKCRwdWJsaWNfa2V5LT5nZXQoJ3knKSk7CiAgICAgICAgICAgICAgICAkc2VuX2QgPSAkdGhpcy0+Y29udmVydEJhc2U2NFRvR21wKCRwcml2YXRlX2tleS0+Z2V0KCdkJykpOwoKICAgICAgICAgICAgICAgICRwcml2X2tleSA9ICRwLT5nZXRQcml2YXRlS2V5RnJvbSgkc2VuX2QpOwogICAgICAgICAgICAgICAgJHB1Yl9rZXkgPSAkcC0+Z2V0UHVibGljS2V5RnJvbSgkcmVjX3gsICRyZWNfeSk7CgogICAgICAgICAgICAgICAgJGVjZGggPSBuZXcgRWNESChFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCkpOwogICAgICAgICAgICAgICAgJGVjZGgtPnNldFNlbmRlcktleSgkcHJpdl9rZXkpOwogICAgICAgICAgICAgICAgJGVjZGgtPnNldFJlY2lwaWVudEtleSgkcHViX2tleSk7CgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jb252ZXJ0RGVjVG9CaW4oJGVjZGgtPmNhbGN1bGF0ZVNoYXJlZEtleSgpKTsKICAgICAgICAgICAgY2FzZSAnWDI1NTE5JzoKICAgICAgICAgICAgICAgIHJldHVybiBjdXJ2ZTI1NTE5X3NoYXJlZCgKICAgICAgICAgICAgICAgICAgICBCYXNlNjRVcmw6OmRlY29kZSgkcHJpdmF0ZV9rZXktPmdldCgnZCcpKSwKICAgICAgICAgICAgICAgICAgICBCYXNlNjRVcmw6OmRlY29kZSgkcHVibGljX2tleS0+Z2V0KCd4JykpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGN1cnZlICIlcyIgaXMgbm90IHN1cHBvcnRlZCcsICRwdWJsaWNfa2V5LT5nZXQoJ2NydicpKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdFQ0RILUVTJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEtleU1hbmFnZW1lbnRNb2RlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6TU9ERV9BR1JFRU1FTlQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbXBsZXRlX2hlYWRlcgogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFB1YmxpY0tleShhcnJheSAkY29tcGxldGVfaGVhZGVyKQogICAgewogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXIsICdlcGsnLCAnVGhlIGhlYWRlciBwYXJhbWV0ZXIgImVwayIgaXMgbWlzc2luZycpOwogICAgICAgIEFzc2VydGlvbjo6aXNBcnJheSgkY29tcGxldGVfaGVhZGVyWydlcGsnXSwgJ1RoZSBoZWFkZXIgcGFyYW1ldGVyICJlcGsiIGlzIG5vdCBhbiBhcnJheSBvZiBwYXJhbWV0ZXInKTsKCiAgICAgICAgJHB1YmxpY19rZXkgPSBuZXcgSldLKCRjb21wbGV0ZV9oZWFkZXJbJ2VwayddKTsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJHB1YmxpY19rZXksIGZhbHNlKTsKCiAgICAgICAgcmV0dXJuICRwdWJsaWNfa2V5OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgJGlzX3ByaXZhdGUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0tleShKV0tJbnRlcmZhY2UgJGtleSwgJGlzX3ByaXZhdGUpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygneCcpLCAnVGhlIGtleSBwYXJhbWV0ZXIgIngiIGlzIG1pc3NpbmcuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnY3J2JyksICdUaGUga2V5IHBhcmFtZXRlciAiY3J2IiBpcyBtaXNzaW5nLicpOwoKICAgICAgICBzd2l0Y2ggKCRrZXktPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICBjYXNlICdQLTM4NCc6CiAgICAgICAgICAgIGNhc2UgJ1AtNTIxJzoKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6ZXEoJGtleS0+Z2V0KCdrdHknKSwgJ0VDJywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygneScpLCAnVGhlIGtleSBwYXJhbWV0ZXIgInkiIGlzIG1pc3NpbmcuJyk7CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ1gyNTUxOSc6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmVxKCRrZXktPmdldCgna3R5JyksICdPS1AnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgY3VydmUgIiVzIiBpcyBub3Qgc3VwcG9ydGVkJywgJGtleS0+Z2V0KCdjcnYnKSkpOwogICAgICAgIH0KICAgICAgICBpZiAodHJ1ZSA9PT0gJGlzX3ByaXZhdGUpIHsKICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnZCcpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImQiIGlzIG1pc3NpbmcuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEpXS0ludGVyZmFjZSAka2V5CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBcTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEdlbmVyYXRvcihKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAkY3J2ID0gJGtleS0+Z2V0KCdjcnYnKTsKCiAgICAgICAgc3dpdGNoICgkY3J2KSB7CiAgICAgICAgICAgIGNhc2UgJ1AtMjU2JzoKICAgICAgICAgICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjI1NigpOwogICAgICAgICAgICBjYXNlICdQLTM4NCc6CiAgICAgICAgICAgICAgICByZXR1cm4gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5nZW5lcmF0b3IzODQoKTsKICAgICAgICAgICAgY2FzZSAnUC01MjEnOgogICAgICAgICAgICAgICAgcmV0dXJuIEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yNTIxKCk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgY3VydmUgIiVzIiBpcyBub3Qgc3VwcG9ydGVkJywgJGNydikpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnRCYXNlNjRUb0dtcCgkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gdW5wYWNrKCdIKicsIEJhc2U2NFVybDo6ZGVjb2RlKCR2YWx1ZSkpOwoKICAgICAgICByZXR1cm4gZ21wX2luaXQoJHZhbHVlWzFdLCAxNik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb252ZXJ0RGVjVG9CaW4oJHZhbHVlKQogICAgewogICAgICAgICR2YWx1ZSA9IGdtcF9zdHJ2YWwoJHZhbHVlLCAxMCk7CiAgICAgICAgJGFkYXB0ZXIgPSBFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CgogICAgICAgIHJldHVybiBoZXgyYmluKCRhZGFwdGVyLT5kZWNIZXgoJHZhbHVlKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESA128KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExMjhLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEVDREhFU0ExMjhLVy4KICovCmZpbmFsIGNsYXNzIEVDREhFU0ExMjhLVyBleHRlbmRzIEVDREhFU0FFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VDREgtRVMrQTEyOEtXJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleUxlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDEyODsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESA192KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExOTJLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEVDREhFU0ExOTJLVy4KICovCmZpbmFsIGNsYXNzIEVDREhFU0ExOTJLVyBleHRlbmRzIEVDREhFU0FFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VDREgtRVMrQTE5MktXJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleUxlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE5MjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESA256KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEEyNTZLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEVDREhFU0EyNTZLVy4KICovCmZpbmFsIGNsYXNzIEVDREhFU0EyNTZLVyBleHRlbmRzIEVDREhFU0FFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VDREgtRVMrQTI1NktXJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleUxlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDI1NjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESAESKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKCi8qKgogKiBDbGFzcyBFQ0RIRVNBRVNLVy4KICovCmFic3RyYWN0IGNsYXNzIEVDREhFU0FFU0tXIGltcGxlbWVudHMgS2V5QWdyZWVtZW50V3JhcHBpbmdJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cmFwQWdyZWVtZW50S2V5KEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5LCAkY2VrLCAkZW5jcnlwdGlvbl9rZXlfbGVuZ3RoLCBhcnJheSAkY29tcGxldGVfaGVhZGVyLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVyX3ZhbHVlcykKICAgIHsKICAgICAgICAkZWNkaF9lcyA9IG5ldyBFQ0RIRVMoKTsKCiAgICAgICAgJGFncmVlbWVudF9rZXkgPSAkZWNkaF9lcy0+Z2V0QWdyZWVtZW50S2V5KCR0aGlzLT5nZXRLZXlMZW5ndGgoKSwgJHRoaXMtPmdldEFsZ29yaXRobU5hbWUoKSwgJHJlY2VpdmVyX2tleSwgJGNvbXBsZXRlX2hlYWRlciwgJGFkZGl0aW9uYWxfaGVhZGVyX3ZhbHVlcyk7CiAgICAgICAgJHdyYXBwZXIgPSAkdGhpcy0+Z2V0V3JhcHBlcigpOwoKICAgICAgICByZXR1cm4gJHdyYXBwZXItPndyYXAoJGFncmVlbWVudF9rZXksICRjZWspOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW53cmFwQWdyZWVtZW50S2V5KEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5LCAkZW5jcnlwdGVkX2NlaywgJGVuY3J5cHRpb25fa2V5X2xlbmd0aCwgYXJyYXkgJGNvbXBsZXRlX2hlYWRlcikKICAgIHsKICAgICAgICAkZWNkaF9lcyA9IG5ldyBFQ0RIRVMoKTsKCiAgICAgICAgJGFncmVlbWVudF9rZXkgPSAkZWNkaF9lcy0+Z2V0QWdyZWVtZW50S2V5KCR0aGlzLT5nZXRLZXlMZW5ndGgoKSwgJHRoaXMtPmdldEFsZ29yaXRobU5hbWUoKSwgJHJlY2VpdmVyX2tleSwgJGNvbXBsZXRlX2hlYWRlcik7CiAgICAgICAgJHdyYXBwZXIgPSAkdGhpcy0+Z2V0V3JhcHBlcigpOwoKICAgICAgICByZXR1cm4gJHdyYXBwZXItPnVud3JhcCgkYWdyZWVtZW50X2tleSwgJGVuY3J5cHRlZF9jZWspOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5TWFuYWdlbWVudE1vZGUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpNT0RFX1dSQVA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxBRVNLV1xBMTI4S1d8XEFFU0tXXEExOTJLV3xcQUVTS1dcQTI1NktXCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRXcmFwcGVyKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5TGVuZ3RoKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyAgreementInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5QWdyZWVtZW50SW50ZXJmYWNlIGV4dGVuZHMgS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0aW9uX2tleV9sZW5ndGggICAgU2l6ZSBvZiB0aGUga2V5IGV4cGVjdGVkIGZvciB0aGUgYWxnb3JpdGhtIHVzZWQgZm9yIGRhdGEgZW5jcnlwdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGFsZ29yaXRobSAgICAgICAgICAgICAgICBUaGUgYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSAgICAgICAgICAgIFRoZSByZWNpcGllbnQga2V5LiBJZiB0aGUga2V5IGlzIHB1YmxpYywgdGhlbiBhbiBlcGhlbWVyYWwgcHJpdmF0ZSBrZXkgd2lsbCBiZSBjcmVhdGVkLCBlbHNlIHdpbGwgdHJ5IHRvIGZpbmQgdGhlIGVwaGVtZXJhbCBrZXkgaW4gdGhlIGhlYWRlcgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlciAgICAgICAgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcl92YWx1ZXMgU2V0IGFkZGl0aW9uYWwgaGVhZGVyIHZhbHVlcyBpZiBuZWVkZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBZ3JlZW1lbnRLZXkoJGVuY3J5cHRpb25fa2V5X2xlbmd0aCwgJGFsZ29yaXRobSwgSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5LCBhcnJheSAkY29tcGxldGVfaGVhZGVyID0gW10sIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJfdmFsdWVzID0gW10pOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyAgreementWrappingInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5QWdyZWVtZW50V3JhcHBpbmdJbnRlcmZhY2UgZXh0ZW5kcyBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogV3JhcCB0aGUgYWdyZWVtZW50IGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5ICAgICAgICAgICAgIFRoZSByZWNlaXZlcidzIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGNlayAgICAgICAgICAgICAgICAgICAgICBUaGUgQ0VLIHRvIHdyYXAKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0aW9uX2tleV9sZW5ndGggICAgU2l6ZSBvZiB0aGUga2V5IGV4cGVjdGVkIGZvciB0aGUgYWxnb3JpdGhtIHVzZWQgZm9yIGRhdGEgZW5jcnlwdGlvbgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlciAgICAgICAgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcl92YWx1ZXMgU2V0IGFkZGl0aW9uYWwgaGVhZGVyIHZhbHVlcyBpZiBuZWVkZWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGVuY3J5cHRlZCBDRUsKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdyYXBBZ3JlZW1lbnRLZXkoSldLSW50ZXJmYWNlICRyZWNlaXZlcl9rZXksICRjZWssICRlbmNyeXB0aW9uX2tleV9sZW5ndGgsIGFycmF5ICRjb21wbGV0ZV9oZWFkZXIsIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJfdmFsdWVzKTsKCiAgICAvKioKICAgICAqIFVud3JhcCB0aGUgYWdyZWVtZW50IGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5ICAgICAgICAgIFRoZSByZWNlaXZlcidzIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGVuY3J5cHRlZF9jZWsgICAgICAgICBUaGUgZW5jcnlwdGVkIENFSwogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgJGVuY3J5cHRpb25fa2V5X2xlbmd0aCBTaXplIG9mIHRoZSBrZXkgZXhwZWN0ZWQgZm9yIHRoZSBhbGdvcml0aG0gdXNlZCBmb3IgZGF0YSBlbmNyeXB0aW9uCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkY29tcGxldGVfaGVhZGVyICAgICAgIFRoZSBjb21wbGV0ZSBoZWFkZXIgb2YgdGhlIEpXVAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBJZiBrZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWxnb3JpdGhtIG9yIGlmIHRoZSBrZXkgdXNhZ2UgZG9lcyBub3QgYXV0aG9yaXplIHRoZSBvcGVyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZGVjcnlwdGVkIENFSwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW53cmFwQWdyZWVtZW50S2V5KEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5LCAkZW5jcnlwdGVkX2NlaywgJGVuY3J5cHRpb25fa2V5X2xlbmd0aCwgYXJyYXkgJGNvbXBsZXRlX2hlYWRlcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyEncryptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5RW5jcnlwdGlvbkludGVyZmFjZSBleHRlbmRzIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBFbmNyeXB0IHRoZSBDRUsuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSAgICAgICAgICAgICAgICBUaGUga2V5IHVzZWQgdG8gd3JhcCB0aGUgQ0VLCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkY2VrICAgICAgICAgICAgICAgIFRoZSBDRUsgdG8gZW5jcnlwdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMgQWRkaXRpb25hbCBoZWFkZXJzCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uIElmIGtleSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhbGdvcml0aG0gb3IgaWYgdGhlIGtleSB1c2FnZSBkb2VzIG5vdCBhdXRob3JpemUgdGhlIG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNyeXB0ZWQgQ0VLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0S2V5KEpXS0ludGVyZmFjZSAka2V5LCAkY2VrLCBhcnJheSAkY29tcGxldGVfaGVhZGVycywgYXJyYXkgJiRhZGRpdGlvbmFsX2hlYWRlcnMpOwoKICAgIC8qKgogICAgICogRGVjcnlwdCBkZSBDRUsuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSAgICAgICAgICAgVGhlIGtleSB1c2VkIHRvIHdyYXAgdGhlIENFSwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGVuY3J5cHRlZF9jZWsgVGhlIENFSyB0byBkZWNyeXB0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyICAgICAgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGRlY3J5cHRlZCBDRUsKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRLZXkoSldLSW50ZXJmYWNlICRrZXksICRlbmNyeXB0ZWRfY2VrLCBhcnJheSAkaGVhZGVyKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyWrappingInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5V3JhcHBpbmdJbnRlcmZhY2UgZXh0ZW5kcyBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogRW5jcnlwdCB0aGUgQ0VLLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkgICAgICAgICAgICAgICAgVGhlIGtleSB1c2VkIHRvIHdyYXAgdGhlIENFSwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGNlayAgICAgICAgICAgICAgICBUaGUgQ0VLIHRvIGVuY3J5cHQKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRjb21wbGV0ZV9oZWFkZXJzICAgVGhlIGNvbXBsZXRlIGhlYWRlciBvZiB0aGUgSldUCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkYWRkaXRpb25hbF9oZWFkZXJzIFRoZSBjb21wbGV0ZSBoZWFkZXIgb2YgdGhlIEpXVAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBJZiBrZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWxnb3JpdGhtIG9yIGlmIHRoZSBrZXkgdXNhZ2UgZG9lcyBub3QgYXV0aG9yaXplIHRoZSBvcGVyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZW5jcnlwdGVkIENFSwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JhcEtleShKV0tJbnRlcmZhY2UgJGtleSwgJGNlaywgYXJyYXkgJGNvbXBsZXRlX2hlYWRlcnMsIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJzKTsKCiAgICAvKioKICAgICAqIERlY3J5cHQgZGUgQ0VLLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkgICAgICAgICAgICAgIFRoZSBrZXkgdXNlZCB0byB3cmFwIHRoZSBDRUsKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0ZWRfY2VrICAgIFRoZSBDRUsgdG8gZGVjcnlwdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgVGhlIGNvbXBsZXRlIGhlYWRlciBvZiB0aGUgSldUCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uIElmIGtleSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhbGdvcml0aG0gb3IgaWYgdGhlIGtleSB1c2FnZSBkb2VzIG5vdCBhdXRob3JpemUgdGhlIG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBkZWNyeXB0ZWQgQ0VLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bndyYXBLZXkoSldLSW50ZXJmYWNlICRrZXksICRlbmNyeXB0ZWRfY2VrLCBhcnJheSAkY29tcGxldGVfaGVhZGVycyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/PBES2AESKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKLyoqCiAqIENsYXNzIFBCRVMyQUVTS1cuCiAqLwphYnN0cmFjdCBjbGFzcyBQQkVTMkFFU0tXIGltcGxlbWVudHMgS2V5V3JhcHBpbmdJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRzYWx0X3NpemU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRuYl9jb3VudDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJHNhbHRfc2l6ZQogICAgICogQHBhcmFtIGludCAkbmJfY291bnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzYWx0X3NpemUgPSA2NCwgJG5iX2NvdW50ID0gNDA5NikKICAgIHsKICAgICAgICAkdGhpcy0+c2FsdF9zaXplID0gJHNhbHRfc2l6ZTsKICAgICAgICAkdGhpcy0+bmJfY291bnQgPSAkbmJfY291bnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cmFwS2V5KEpXS0ludGVyZmFjZSAka2V5LCAkY2VrLCBhcnJheSAkY29tcGxldGVfaGVhZGVycywgYXJyYXkgJiRhZGRpdGlvbmFsX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwogICAgICAgICR0aGlzLT5jaGVja0hlYWRlckFsZ29yaXRobSgkY29tcGxldGVfaGVhZGVycyk7CiAgICAgICAgJHdyYXBwZXIgPSAkdGhpcy0+Z2V0V3JhcHBlcigpOwogICAgICAgICRoYXNoX2FsZ29yaXRobSA9ICR0aGlzLT5nZXRIYXNoQWxnb3JpdGhtKCk7CiAgICAgICAgJGtleV9zaXplID0gJHRoaXMtPmdldEtleVNpemUoKTsKICAgICAgICAkc2FsdCA9IHJhbmRvbV9ieXRlcygkdGhpcy0+c2FsdF9zaXplKTsKICAgICAgICAkcGFzc3dvcmQgPSBCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSk7CgogICAgICAgIC8vIFdlIHNldCBoZWFkZXJzIHBhcmFtZXRlcnMKICAgICAgICAkYWRkaXRpb25hbF9oZWFkZXJzWydwMnMnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRzYWx0KTsKICAgICAgICAkYWRkaXRpb25hbF9oZWFkZXJzWydwMmMnXSA9ICR0aGlzLT5uYl9jb3VudDsKCiAgICAgICAgJGRlcml2ZWRfa2V5ID0gaGFzaF9wYmtkZjIoJGhhc2hfYWxnb3JpdGhtLCAkcGFzc3dvcmQsICRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXS4iXHgwMCIuJHNhbHQsICR0aGlzLT5uYl9jb3VudCwgJGtleV9zaXplLCB0cnVlKTsKCiAgICAgICAgcmV0dXJuICR3cmFwcGVyLT53cmFwKCRkZXJpdmVkX2tleSwgJGNlayk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bndyYXBLZXkoSldLSW50ZXJmYWNlICRrZXksICRlbmNyeXB0ZWRfY2VrLCBhcnJheSAkaGVhZGVyKQogICAgewogICAgICAgICR0aGlzLT5jaGVja0tleSgka2V5KTsKICAgICAgICAkdGhpcy0+Y2hlY2tIZWFkZXJBbGdvcml0aG0oJGhlYWRlcik7CiAgICAgICAgJHRoaXMtPmNoZWNrSGVhZGVyQWRkaXRpb25hbFBhcmFtZXRlcnMoJGhlYWRlcik7CiAgICAgICAgJHdyYXBwZXIgPSAkdGhpcy0+Z2V0V3JhcHBlcigpOwogICAgICAgICRoYXNoX2FsZ29yaXRobSA9ICR0aGlzLT5nZXRIYXNoQWxnb3JpdGhtKCk7CiAgICAgICAgJGtleV9zaXplID0gJHRoaXMtPmdldEtleVNpemUoKTsKICAgICAgICAkc2FsdCA9ICRoZWFkZXJbJ2FsZyddLiJceDAwIi5CYXNlNjRVcmw6OmRlY29kZSgkaGVhZGVyWydwMnMnXSk7CiAgICAgICAgJGNvdW50ID0gJGhlYWRlclsncDJjJ107CiAgICAgICAgJHBhc3N3b3JkID0gQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCdrJykpOwoKICAgICAgICAkZGVyaXZlZF9rZXkgPSBoYXNoX3Bia2RmMigkaGFzaF9hbGdvcml0aG0sICRwYXNzd29yZCwgJHNhbHQsICRjb3VudCwgJGtleV9zaXplLCB0cnVlKTsKCiAgICAgICAgcmV0dXJuICR3cmFwcGVyLT51bndyYXAoJGRlcml2ZWRfa2V5LCAkZW5jcnlwdGVkX2Nlayk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlNYW5hZ2VtZW50TW9kZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok1PREVfV1JBUDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0tJbnRlcmZhY2UgJGtleQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgka2V5LT5nZXQoJ2t0eScpLCAnb2N0JywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2snKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJrIiBpcyBtaXNzaW5nLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRoZWFkZXIKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrSGVhZGVyQWxnb3JpdGhtKGFycmF5ICRoZWFkZXIpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGhlYWRlciwgJ2FsZycsICdUaGUgaGVhZGVyIHBhcmFtZXRlciAiYWxnIiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6bm90RW1wdHkoJGhlYWRlclsnYWxnJ10sICdUaGUgaGVhZGVyIHBhcmFtZXRlciAiYWxnIiBpcyBub3QgdmFsaWQuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhlYWRlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tIZWFkZXJBZGRpdGlvbmFsUGFyYW1ldGVycyhhcnJheSAkaGVhZGVyKQogICAgewogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRoZWFkZXIsICdwMnMnLCAnVGhlIGhlYWRlciBwYXJhbWV0ZXIgInAycyIgaXMgbWlzc2luZy4nKTsKICAgICAgICBBc3NlcnRpb246Om5vdEVtcHR5KCRoZWFkZXJbJ3AycyddLCAnVGhlIGhlYWRlciBwYXJhbWV0ZXIgInAycyIgaXMgbm90IHZhbGlkLicpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRoZWFkZXIsICdwMmMnLCAnVGhlIGhlYWRlciBwYXJhbWV0ZXIgInAyYyIgaXMgbWlzc2luZy4nKTsKICAgICAgICBBc3NlcnRpb246Om5vdEVtcHR5KCRoZWFkZXJbJ3AyYyddLCAnVGhlIGhlYWRlciBwYXJhbWV0ZXIgInAyYyIgaXMgbm90IHZhbGlkLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcQUVTS1dcQTEyOEtXfFxBRVNLV1xBMTkyS1d8XEFFU0tXXEEyNTZLVwogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRLZXlTaXplKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/PBES2HS256A128KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExMjhLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIFBCRVMySFMyNTZBMTI4S1cuCiAqLwpmaW5hbCBjbGFzcyBQQkVTMkhTMjU2QTEyOEtXIGV4dGVuZHMgUEJFUzJBRVNLVwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdyYXBwZXIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgV3JhcHBlcigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdzaGEyNTYnOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE2OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdQQkVTMi1IUzI1NitBMTI4S1cnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/PBES2HS384A192KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExOTJLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIFBCRVMySFMzODRBMTkyS1cuCiAqLwpmaW5hbCBjbGFzcyBQQkVTMkhTMzg0QTE5MktXIGV4dGVuZHMgUEJFUzJBRVNLVwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdyYXBwZXIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgV3JhcHBlcigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdzaGEzODQnOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDI0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdQQkVTMi1IUzM4NCtBMTkyS1cnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/PBES2HS512A256KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEEyNTZLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIFBCRVMySFM1MTJBMjU2S1cuCiAqLwpmaW5hbCBjbGFzcyBQQkVTMkhTNTEyQTI1NktXIGV4dGVuZHMgUEJFUzJBRVNLVwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdyYXBwZXIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgV3JhcHBlcigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdzaGE1MTInOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDMyOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdQQkVTMi1IUzUxMitBMjU2S1cnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/RSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBKb3NlXEtleUNvbnZlcnRlclxSU0FLZXk7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CnVzZSBKb3NlXFV0aWxcUlNBIGFzIEpvc2VSU0E7CgovKioKICogQ2xhc3MgUlNBLgogKi8KYWJzdHJhY3QgY2xhc3MgUlNBIGltcGxlbWVudHMgS2V5RW5jcnlwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIE9wdGltYWwgQXN5bW1ldHJpYyBFbmNyeXB0aW9uIFBhZGRpbmcgKE9BRVApLgogICAgICovCiAgICBjb25zdCBFTkNSWVBUSU9OX09BRVAgPSAxOwoKICAgIC8qKgogICAgICogVXNlIFBLQ1MjMSBwYWRkaW5nLgogICAgICovCiAgICBjb25zdCBFTkNSWVBUSU9OX1BLQ1MxID0gMjsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHRLZXkoSldLSW50ZXJmYWNlICRrZXksICRjZWssIGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVycykKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CgogICAgICAgICRwdWIgPSBSU0FLZXk6OnRvUHVibGljKG5ldyBSU0FLZXkoJGtleSkpOwoKICAgICAgICBpZiAoc2VsZjo6RU5DUllQVElPTl9PQUVQID09PSAkdGhpcy0+Z2V0RW5jcnlwdGlvbk1vZGUoKSkgewogICAgICAgICAgICAkZW5jcnlwdGVkID0gSm9zZVJTQTo6ZW5jcnlwdCgkcHViLCAkY2VrLCAkdGhpcy0+Z2V0SGFzaEFsZ29yaXRobSgpKTsKICAgICAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJGVuY3J5cHRlZCwgJ1VuYWJsZSB0byBlbmNyeXB0IHRoZSBkYXRhLicpOwoKICAgICAgICAgICAgcmV0dXJuICRlbmNyeXB0ZWQ7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfcHVibGljX2VuY3J5cHQoJGNlaywgJGVuY3J5cHRlZCwgJHB1Yi0+dG9QRU0oKSwgT1BFTlNTTF9QS0NTMV9QQURESU5HIHwgT1BFTlNTTF9SQVdfREFUQSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgkcmVzLCAnVW5hYmxlIHRvIGVuY3J5cHQgdGhlIGRhdGEuJyk7CgogICAgICAgICAgICByZXR1cm4gJGVuY3J5cHRlZDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0S2V5KEpXS0ludGVyZmFjZSAka2V5LCAkZW5jcnlwdGVkX2tleSwgYXJyYXkgJGhlYWRlcikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnZCcpLCAnVGhlIGtleSBpcyBub3QgYSBwcml2YXRlIGtleScpOwoKICAgICAgICAkcHJpdiA9IG5ldyBSU0FLZXkoJGtleSk7CgogICAgICAgIGlmIChzZWxmOjpFTkNSWVBUSU9OX09BRVAgPT09ICR0aGlzLT5nZXRFbmNyeXB0aW9uTW9kZSgpKSB7CiAgICAgICAgICAgICRkZWNyeXB0ZWQgPSBKb3NlUlNBOjpkZWNyeXB0KCRwcml2LCAkZW5jcnlwdGVkX2tleSwgJHRoaXMtPmdldEhhc2hBbGdvcml0aG0oKSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRkZWNyeXB0ZWQsICdVbmFibGUgdG8gZGVjcnlwdCB0aGUgZGF0YS4nKTsKCiAgICAgICAgICAgIHJldHVybiAkZGVjcnlwdGVkOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3ByaXZhdGVfZGVjcnlwdCgkZW5jcnlwdGVkX2tleSwgJGRlY3J5cHRlZCwgJHByaXYtPnRvUEVNKCksIE9QRU5TU0xfUEtDUzFfUEFERElORyB8IE9QRU5TU0xfUkFXX0RBVEEpOwogICAgICAgICAgICBBc3NlcnRpb246OnRydWUoJHJlcywgJ1VuYWJsZSB0byBkZWNyeXB0IHRoZSBkYXRhLicpOwoKICAgICAgICAgICAgcmV0dXJuICRkZWNyeXB0ZWQ7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5TWFuYWdlbWVudE1vZGUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpNT0RFX0VOQ1JZUFQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSldLSW50ZXJmYWNlICRrZXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIEFzc2VydGlvbjo6ZXEoJGtleS0+Z2V0KCdrdHknKSwgJ1JTQScsICdXcm9uZyBrZXkgdHlwZS4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNyeXB0aW9uTW9kZSgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/RSA15.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIFJTQTE1LgogKi8KZmluYWwgY2xhc3MgUlNBMTUgZXh0ZW5kcyBSU0EKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNyeXB0aW9uTW9kZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OkVOQ1JZUFRJT05fUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1JTQTFfNSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/RSAOAEP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIFJTQU9BRVAuCiAqLwpmaW5hbCBjbGFzcyBSU0FPQUVQIGV4dGVuZHMgUlNBCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jcnlwdGlvbk1vZGUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpFTkNSWVBUSU9OX09BRVA7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCkKICAgIHsKICAgICAgICByZXR1cm4gJ3NoYTEnOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSU0EtT0FFUCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/RSAOAEP256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIFJTQU9BRVAyNTYuCiAqLwpmaW5hbCBjbGFzcyBSU0FPQUVQMjU2IGV4dGVuZHMgUlNBCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5jcnlwdGlvbk1vZGUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpFTkNSWVBUSU9OX09BRVA7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCkKICAgIHsKICAgICAgICByZXR1cm4gJ3NoYTI1Nic7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1JTQS1PQUVQLTI1Nic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryptionAlgorithmInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlIGV4dGVuZHMgSldBSW50ZXJmYWNlCnsKICAgIGNvbnN0IE1PREVfRElSRUNUID0gJ2Rpcic7CgogICAgY29uc3QgTU9ERV9FTkNSWVBUID0gJ2VuYyc7CgogICAgY29uc3QgTU9ERV9XUkFQID0gJ3dyYXAnOwoKICAgIGNvbnN0IE1PREVfQUdSRUVNRU5UID0gJ2FncmVlJzsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlNYW5hZ2VtZW50TW9kZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/ECDSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBGR1xBU04xXE9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXEVDS2V5Owp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXFNpZ25hdHVyZVxTaWduYXR1cmU7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcUmFuZG9tXFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk7CgovKioKICogQ2xhc3MgRUNEU0EuCiAqLwphYnN0cmFjdCBjbGFzcyBFQ0RTQSBpbXBsZW1lbnRzIFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLSW50ZXJmYWNlICRrZXksICRkYXRhKQogICAgewogICAgICAgICR0aGlzLT5jaGVja0tleSgka2V5KTsKICAgICAgICBBc3NlcnRpb246OnRydWUoJGtleS0+aGFzKCdkJyksICdUaGUgRUMga2V5IGlzIG5vdCBwcml2YXRlJyk7CgogICAgICAgIGlmIChkZWZpbmVkKCdPUEVOU1NMX0tFWVRZUEVfRUMnKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldE9wZW5TU0xTaWduYXR1cmUoJGtleSwgJGRhdGEpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRQSFBFQ0NTaWduYXR1cmUoJGtleSwgJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldE9wZW5TU0xTaWduYXR1cmUoSldLSW50ZXJmYWNlICRrZXksICRkYXRhKQogICAgewogICAgICAgICRwZW0gPSAobmV3IEVDS2V5KCRrZXkpKS0+dG9QRU0oKTsKICAgICAgICAkcmVzdWx0ID0gb3BlbnNzbF9zaWduKCRkYXRhLCAkc2lnbmF0dXJlLCAkcGVtLCAkdGhpcy0+Z2V0SGFzaEFsZ29yaXRobSgpKTsKCiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRyZXN1bHQsICdTaWduYXR1cmUgZmFpbGVkJyk7CgogICAgICAgICRhc24gPSBPYmplY3Q6OmZyb21CaW5hcnkoJHNpZ25hdHVyZSk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGFzbiwgU2VxdWVuY2U6OmNsYXNzLCAnSW52YWxpZCBzaWduYXR1cmUnKTsKCiAgICAgICAgJHJlcyA9ICcnOwogICAgICAgIGZvcmVhY2ggKCRhc24tPmdldENoaWxkcmVuKCkgYXMgJGNoaWxkKSB7CiAgICAgICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjaGlsZCwgSW50ZWdlcjo6Y2xhc3MsICdJbnZhbGlkIHNpZ25hdHVyZScpOwogICAgICAgICAgICAkcmVzIC49IHN0cl9wYWQoJHRoaXMtPmNvbnZlcnREZWNUb0hleCgkY2hpbGQtPmdldENvbnRlbnQoKSksICR0aGlzLT5nZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCksICcwJywgU1RSX1BBRF9MRUZUKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Y29udmVydEhleFRvQmluKCRyZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFBIUEVDQ1NpZ25hdHVyZShKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEpCiAgICB7CiAgICAgICAgJHAgPSAkdGhpcy0+Z2V0R2VuZXJhdG9yKCk7CiAgICAgICAgJGQgPSAkdGhpcy0+Y29udmVydEJhc2U2NFRvR21wKCRrZXktPmdldCgnZCcpKTsKICAgICAgICAkaGFzaCA9ICR0aGlzLT5jb252ZXJ0SGV4VG9HbXAoaGFzaCgkdGhpcy0+Z2V0SGFzaEFsZ29yaXRobSgpLCAkZGF0YSkpOwoKICAgICAgICAkayA9IFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk6OmdldFJhbmRvbUdlbmVyYXRvcigpLT5nZW5lcmF0ZSgkcC0+Z2V0T3JkZXIoKSk7CgogICAgICAgICRzaWduZXIgPSBFY2NGYWN0b3J5OjpnZXRTaWduZXIoKTsKCiAgICAgICAgJHByaXZhdGVfa2V5ID0gJHAtPmdldFByaXZhdGVLZXlGcm9tKCRkKTsKICAgICAgICAkc2lnbmF0dXJlID0gJHNpZ25lci0+c2lnbigkcHJpdmF0ZV9rZXksICRoYXNoLCAkayk7CgogICAgICAgICRwYXJ0X2xlbmd0aCA9ICR0aGlzLT5nZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCk7CgogICAgICAgICRSID0gc3RyX3BhZCgkdGhpcy0+Y29udmVydERlY1RvSGV4KCRzaWduYXR1cmUtPmdldFIoKSksICRwYXJ0X2xlbmd0aCwgJzAnLCBTVFJfUEFEX0xFRlQpOwogICAgICAgICRTID0gc3RyX3BhZCgkdGhpcy0+Y29udmVydERlY1RvSGV4KCRzaWduYXR1cmUtPmdldFMoKSksICRwYXJ0X2xlbmd0aCwgJzAnLCBTVFJfUEFEX0xFRlQpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnZlcnRIZXhUb0JpbigkUi4kUyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnkoSldLSW50ZXJmYWNlICRrZXksICRkYXRhLCAkc2lnbmF0dXJlKQogICAgewogICAgICAgICR0aGlzLT5jaGVja0tleSgka2V5KTsKCiAgICAgICAgJHNpZ25hdHVyZSA9ICR0aGlzLT5jb252ZXJ0QmluVG9IZXgoJHNpZ25hdHVyZSk7CiAgICAgICAgJHBhcnRfbGVuZ3RoID0gJHRoaXMtPmdldFNpZ25hdHVyZVBhcnRMZW5ndGgoKTsKICAgICAgICBpZiAobWJfc3RybGVuKCRzaWduYXR1cmUsICc4Yml0JykgIT09IDIgKiAkcGFydF9sZW5ndGgpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkUiA9IG1iX3N1YnN0cigkc2lnbmF0dXJlLCAwLCAkcGFydF9sZW5ndGgsICc4Yml0Jyk7CiAgICAgICAgJFMgPSBtYl9zdWJzdHIoJHNpZ25hdHVyZSwgJHBhcnRfbGVuZ3RoLCBudWxsLCAnOGJpdCcpOwoKICAgICAgICBpZiAoZGVmaW5lZCgnT1BFTlNTTF9LRVlUWVBFX0VDJykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52ZXJpZnlPcGVuU1NMU2lnbmF0dXJlKCRrZXksICRkYXRhLCAkUiwgJFMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT52ZXJpZnlQSFBFQ0NTaWduYXR1cmUoJGtleSwgJGRhdGEsICRSLCAkUyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkZGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJFIKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRTCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5T3BlblNTTFNpZ25hdHVyZShKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEsICRSLCAkUykKICAgIHsKICAgICAgICAkcGVtID0gRUNLZXk6OnRvUHVibGljKG5ldyBFQ0tleSgka2V5KSktPnRvUEVNKCk7CgogICAgICAgICRvaWRfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZHJlbihbCiAgICAgICAgICAgIG5ldyBJbnRlZ2VyKGdtcF9zdHJ2YWwoJHRoaXMtPmNvbnZlcnRIZXhUb0dtcCgkUiksIDEwKSksCiAgICAgICAgICAgIG5ldyBJbnRlZ2VyKGdtcF9zdHJ2YWwoJHRoaXMtPmNvbnZlcnRIZXhUb0dtcCgkUyksIDEwKSksCiAgICAgICAgXSk7CgogICAgICAgIHJldHVybiAxID09PSBvcGVuc3NsX3ZlcmlmeSgkZGF0YSwgJG9pZF9zZXF1ZW5jZS0+Z2V0QmluYXJ5KCksICRwZW0sICR0aGlzLT5nZXRIYXNoQWxnb3JpdGhtKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGRhdGEKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRSCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkUwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZlcmlmeVBIUEVDQ1NpZ25hdHVyZShKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEsICRSLCAkUykKICAgIHsKICAgICAgICAkcCA9ICR0aGlzLT5nZXRHZW5lcmF0b3IoKTsKICAgICAgICAkeCA9ICR0aGlzLT5jb252ZXJ0QmFzZTY0VG9HbXAoJGtleS0+Z2V0KCd4JykpOwogICAgICAgICR5ID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRUb0dtcCgka2V5LT5nZXQoJ3knKSk7CiAgICAgICAgJGhhc2ggPSAkdGhpcy0+Y29udmVydEhleFRvR21wKGhhc2goJHRoaXMtPmdldEhhc2hBbGdvcml0aG0oKSwgJGRhdGEpKTsKCiAgICAgICAgJHB1YmxpY19rZXkgPSAkcC0+Z2V0UHVibGljS2V5RnJvbSgkeCwgJHkpOwoKICAgICAgICAkc2lnbmVyID0gRWNjRmFjdG9yeTo6Z2V0U2lnbmVyKCk7CgogICAgICAgIHJldHVybiAkc2lnbmVyLT52ZXJpZnkoCiAgICAgICAgICAgICRwdWJsaWNfa2V5LAogICAgICAgICAgICBuZXcgU2lnbmF0dXJlKAogICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRIZXhUb0dtcCgkUiksCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydEhleFRvR21wKCRTKQogICAgICAgICAgICApLAogICAgICAgICAgICAkaGFzaAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRHZW5lcmF0b3IoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnRIZXhUb0JpbigkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIHBhY2soJ0gqJywgJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29udmVydEJpblRvSGV4KCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSB1bnBhY2soJ0gqJywgJHZhbHVlKTsKCiAgICAgICAgcmV0dXJuICR2YWx1ZVsxXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnREZWNUb0hleCgkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX3N0cnZhbCgkdmFsdWUsIDEwKTsKCiAgICAgICAgcmV0dXJuIEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKS0+ZGVjSGV4KCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gcmVzb3VyY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb252ZXJ0SGV4VG9HbXAoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBnbXBfaW5pdCgkdmFsdWUsIDE2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29udmVydEJhc2U2NFRvR21wKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSB1bnBhY2soJ0gqJywgQmFzZTY0VXJsOjpkZWNvZGUoJHZhbHVlKSk7CgogICAgICAgIHJldHVybiBnbXBfaW5pdCgkdmFsdWVbMV0sIDE2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0tJbnRlcmZhY2UgJGtleQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIEFzc2VydGlvbjo6ZXEoJGtleS0+Z2V0KCdrdHknKSwgJ0VDJywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ3gnKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJ4IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ3knKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJ5IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2NydicpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImNydiIgaXMgbWlzc2luZy4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/EdDSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgovKioKICogQ2xhc3MgRWQyNTUxOS4KICovCmNsYXNzIEVkRFNBIGltcGxlbWVudHMgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbihKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2QnKSwgJ1RoZSBrZXkgaXMgbm90IHByaXZhdGUnKTsKCiAgICAgICAgJHNlY3JldCA9IEJhc2U2NFVybDo6ZGVjb2RlKCRrZXktPmdldCgnZCcpKTsKICAgICAgICAkcHVibGljID0gQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCd4JykpOwoKICAgICAgICBzd2l0Y2ggKCRrZXktPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnRWQyNTUxOSc6CiAgICAgICAgICAgICAgICByZXR1cm4gZWQyNTUxOV9zaWduKCRkYXRhLCAkc2VjcmV0LCAkcHVibGljKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBjdXJ2ZScpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEsICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICAkcHVibGljID0gQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCd4JykpOwoKICAgICAgICBzd2l0Y2ggKCRrZXktPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnRWQyNTUxOSc6CiAgICAgICAgICAgICAgICByZXR1cm4gZWQyNTUxOV9zaWduX29wZW4oJGRhdGEsICRwdWJsaWMsICRzaWduYXR1cmUpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGN1cnZlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEpXS0ludGVyZmFjZSAka2V5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgka2V5LT5nZXQoJ2t0eScpLCAnT0tQJywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ3gnKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJ4IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2NydicpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImNydiIgaXMgbWlzc2luZy4nKTsKICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJGtleS0+Z2V0KCdjcnYnKSwgWydFZDI1NTE5J10sICdVbnN1cHBvcnRlZCBjdXJ2ZScpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdFZERTQSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/ES256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKCmZpbmFsIGNsYXNzIEVTMjU2IGV4dGVuZHMgRUNEU0EKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRHZW5lcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjI1NigpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gNjQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdFUzI1Nic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/ES384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKCmZpbmFsIGNsYXNzIEVTMzg0IGV4dGVuZHMgRUNEU0EKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRHZW5lcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjM4NCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gOTY7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdFUzM4NCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/ES512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKCmZpbmFsIGNsYXNzIEVTNTEyIGV4dGVuZHMgRUNEU0EKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRHZW5lcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjUyMSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gMTMyOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnRVM1MTInOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HMAC.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgYWxnb3JpdGhtcyBIUzI1NiwgSFMzODQgYW5kIEhTNTEyOy4KICovCmFic3RyYWN0IGNsYXNzIEhNQUMgaW1wbGVtZW50cyBTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaWduKEpXS0ludGVyZmFjZSAka2V5LCAkaW5wdXQpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICByZXR1cm4gaGFzaF9obWFjKCR0aGlzLT5nZXRIYXNoQWxnb3JpdGhtKCksICRpbnB1dCwgQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCdrJykpLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0tJbnRlcmZhY2UgJGtleSwgJGlucHV0LCAkc2lnbmF0dXJlKQogICAgewogICAgICAgIHJldHVybiBoYXNoX2VxdWFscygkdGhpcy0+c2lnbigka2V5LCAkaW5wdXQpLCAkc2lnbmF0dXJlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0tJbnRlcmZhY2UgJGtleQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgka2V5LT5nZXQoJ2t0eScpLCAnb2N0JywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2snKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJrIiBpcyBtaXNzaW5nLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HS256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgSFMyNTY7LgogKi8KLyoqCiAqIENsYXNzIEhTMjU2LgogKi8KZmluYWwgY2xhc3MgSFMyNTYgZXh0ZW5kcyBITUFDCnsKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0hTMjU2JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgSFMzODQ7LgogKi8KLyoqCiAqIENsYXNzIEhTMzg0LgogKi8KZmluYWwgY2xhc3MgSFMzODQgZXh0ZW5kcyBITUFDCnsKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0hTMzg0JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgSFM1MTI7LgogKgogKiBDbGFzcyBIUzUxMgogKi8KZmluYWwgY2xhc3MgSFM1MTIgZXh0ZW5kcyBITUFDCnsKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0hTNTEyJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/None.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgbm9uZSBhbGdvcml0aG0gKHBsYWludGV4dCkuCiAqLwpmaW5hbCBjbGFzcyBOb25lIGltcGxlbWVudHMgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbihKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnkoSldLSW50ZXJmYWNlICRrZXksICRkYXRhLCAkc2lnbmF0dXJlKQogICAgewogICAgICAgIHJldHVybiAkc2lnbmF0dXJlID09PSAkdGhpcy0+c2lnbigka2V5LCAkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSldLSW50ZXJmYWNlICRrZXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIEFzc2VydGlvbjo6ZXEoJGtleS0+Z2V0KCdrdHknKSwgJ25vbmUnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdub25lJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/PS256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUFMyNTYuCiAqLwpmaW5hbCBjbGFzcyBQUzI1NiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUFNTOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnUFMyNTYnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/PS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUFMzODQuCiAqLwpmaW5hbCBjbGFzcyBQUzM4NCBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUFNTOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnUFMzODQnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/PS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUFM1MTIuCiAqLwpmaW5hbCBjbGFzcyBQUzUxMiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUFNTOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnUFM1MTInOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RS256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUlMyNTYuCiAqLwpmaW5hbCBjbGFzcyBSUzI1NiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSUzI1Nic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUlMzODQuCiAqLwpmaW5hbCBjbGFzcyBSUzM4NCBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSUzM4NCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUlM1MTIuCiAqLwpmaW5hbCBjbGFzcyBSUzUxMiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSUzUxMic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKdXNlIEpvc2VcVXRpbFxSU0EgYXMgSm9zZVJTQTsKCi8qKgogKiBDbGFzcyBSU0EuCiAqLwphYnN0cmFjdCBjbGFzcyBSU0EgaW1wbGVtZW50cyBTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBQcm9iYWJpbGlzdGljIFNpZ25hdHVyZSBTY2hlbWUuCiAgICAgKi8KICAgIGNvbnN0IFNJR05BVFVSRV9QU1MgPSAxOwoKICAgIC8qKgogICAgICogVXNlIHRoZSBQS0NTIzEuCiAgICAgKi8KICAgIGNvbnN0IFNJR05BVFVSRV9QS0NTMSA9IDI7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFNpZ25hdHVyZU1ldGhvZCgpOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5KEpXS0ludGVyZmFjZSAka2V5LCAkaW5wdXQsICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICAkcHViID0gUlNBS2V5Ojp0b1B1YmxpYyhuZXcgUlNBS2V5KCRrZXkpKTsKCiAgICAgICAgaWYgKHNlbGY6OlNJR05BVFVSRV9QU1MgPT09ICR0aGlzLT5nZXRTaWduYXR1cmVNZXRob2QoKSkgewogICAgICAgICAgICByZXR1cm4gSm9zZVJTQTo6dmVyaWZ5KCRwdWIsICRpbnB1dCwgJHNpZ25hdHVyZSwgJHRoaXMtPmdldEFsZ29yaXRobSgpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gMSA9PT0gb3BlbnNzbF92ZXJpZnkoJGlucHV0LCAkc2lnbmF0dXJlLCAkcHViLT50b1BFTSgpLCAkdGhpcy0+Z2V0QWxnb3JpdGhtKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLSW50ZXJmYWNlICRrZXksICRpbnB1dCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnZCcpLCAnVGhlIGtleSBpcyBub3QgYSBwcml2YXRlIGtleScpOwoKICAgICAgICAkcHJpdiA9IG5ldyBSU0FLZXkoJGtleSk7CgogICAgICAgIGlmIChzZWxmOjpTSUdOQVRVUkVfUFNTID09PSAkdGhpcy0+Z2V0U2lnbmF0dXJlTWV0aG9kKCkpIHsKICAgICAgICAgICAgJHNpZ25hdHVyZSA9IEpvc2VSU0E6OnNpZ24oJHByaXYsICRpbnB1dCwgJHRoaXMtPmdldEFsZ29yaXRobSgpKTsKICAgICAgICAgICAgJHJlc3VsdCA9IGlzX3N0cmluZygkc2lnbmF0dXJlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0ID0gb3BlbnNzbF9zaWduKCRpbnB1dCwgJHNpZ25hdHVyZSwgJHByaXYtPnRvUEVNKCksICR0aGlzLT5nZXRBbGdvcml0aG0oKSk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgkcmVzdWx0LCAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGUgc2lnbmF0dXJlJyk7CgogICAgICAgIHJldHVybiAkc2lnbmF0dXJlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEpXS0ludGVyZmFjZSAka2V5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgka2V5LT5nZXQoJ2t0eScpLCAnUlNBJywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/SignatureAlgorithmInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgovKioKICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBhbGdvcml0aG1zIHRoYXQgaGF2ZSBjYXBhYmlsaXRpZXMgdG8gc2lnbiBkYXRhIGFuZCB2ZXJpZnkgYSBzaWduYXR1cmUuCiAqLwppbnRlcmZhY2UgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlIGV4dGVuZHMgSldBSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogU2lnbiB0aGUgaW5wdXQuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSAgIFRoZSBwcml2YXRlIGtleSB1c2VkIHRvIHNpZ24gdGhlIGRhdGEKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRpbnB1dCBUaGUgaW5wdXQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLSW50ZXJmYWNlICRrZXksICRpbnB1dCk7CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkgICAgICAgVGhlIHByaXZhdGUga2V5IHVzZWQgdG8gc2lnbiB0aGUgZGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGlucHV0ICAgICBUaGUgaW5wdXQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byB2ZXJpZnkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnkoSldLSW50ZXJmYWNlICRrZXksICRpbnB1dCwgJHNpZ25hdHVyZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/CommonCipheringMethods.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uSW50ZXJmYWNlOwoKdHJhaXQgQ29tbW9uQ2lwaGVyaW5nTWV0aG9kcwp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtczsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXM7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ1tdCiAgICAgKi8KICAgIHByaXZhdGUgJGNvbXByZXNzaW9uX21ldGhvZHM7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMgYXMgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSkgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0pKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtOwogICAgICAgICAgICB9IGVsc2VpZiAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdQYXJhbWV0ZXIgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBpbnN0YW5jZSBvZiBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRoaXMtPmtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMgPSAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZVtdICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtcygkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcyBhcyAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSkgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG07CiAgICAgICAgICAgIH0gZWxzZWlmICgkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1BhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMgPSAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29tcHJlc3Npb25NZXRob2RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXByZXNzaW9uX21ldGhvZHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAkY29tcHJlc3Npb25fbWV0aG9kcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldENvbXByZXNzaW9uTWV0aG9kcygkY29tcHJlc3Npb25fbWV0aG9kcykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJGNvbXByZXNzaW9uX21ldGhvZHMgYXMgJGNvbXByZXNzaW9uX21ldGhvZCkgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRjb21wcmVzc2lvbl9tZXRob2QpKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29tcHJlc3Npb25fbWV0aG9kOwogICAgICAgICAgICB9IGVsc2VpZiAoJGNvbXByZXNzaW9uX21ldGhvZCBpbnN0YW5jZW9mIENvbXByZXNzaW9uSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29tcHJlc3Npb25fbWV0aG9kLT5nZXRNZXRob2ROYW1lKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignUGFyYW1ldGVyIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gaW5zdGFuY2Ugb2YgQ29tcHJlc3Npb25JbnRlcmZhY2UnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fbWV0aG9kcyA9ICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/CommonSigningMethods.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2U7Cgp0cmFpdCBDb21tb25TaWduaW5nTWV0aG9kcwp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSAkc2lnbmF0dXJlX2FsZ29yaXRobXM7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRTaWduYXR1cmVBbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpZ25hdHVyZV9hbGdvcml0aG1zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2VbXSAkc2lnbmF0dXJlX2FsZ29yaXRobXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRTaWduYXR1cmVBbGdvcml0aG1zKCRzaWduYXR1cmVfYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJHNpZ25hdHVyZV9hbGdvcml0aG1zIGFzICRzaWduYXR1cmVfYWxnb3JpdGhtKSB7CiAgICAgICAgICAgIGlmIChpc19zdHJpbmcoJHNpZ25hdHVyZV9hbGdvcml0aG0pKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkc2lnbmF0dXJlX2FsZ29yaXRobTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRzaWduYXR1cmVfYWxnb3JpdGhtIGluc3RhbmNlb2YgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkc2lnbmF0dXJlX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1BhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5zaWduYXR1cmVfYWxnb3JpdGhtcyA9ICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/EncrypterTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQWxnb3JpdGhtOwp1c2UgSm9zZVxDb21wcmVzc2lvbjsKdXNlIEpvc2VcT2JqZWN0OwoKdHJhaXQgRW5jcnlwdGVyVHJhaXQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkdXNhZ2UKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrS2V5VXNhZ2UoT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5LCAkdXNhZ2UpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGFsZ29yaXRobQogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXlBbGdvcml0aG0oT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5LCAkYWxnb3JpdGhtKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEpXQU1hbmFnZXIoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRDb21wcmVzc2lvbk1hbmFnZXIoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAgICAgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIFxKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50X2tleQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrS2V5cyhBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sIE9iamVjdFxKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXkpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5VXNhZ2UoJHJlY2lwaWVudF9rZXksICdlbmNyeXB0aW9uJyk7CiAgICAgICAgaWYgKCdkaXInICE9PSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCkpIHsKICAgICAgICAgICAgJHRoaXMtPmNoZWNrS2V5QWxnb3JpdGhtKCRyZWNpcGllbnRfa2V5LCAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5jaGVja0tleUFsZ29yaXRobSgkcmVjaXBpZW50X2tleSwgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAkandlCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrZXlfbWFuYWdlbWVudF9tb2RlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRldGVybWluZUNFSyhPYmplY3RcSldFSW50ZXJmYWNlICRqd2UsIEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSwgJGtleV9tYW5hZ2VtZW50X21vZGUsIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJzKQogICAgewogICAgICAgIHN3aXRjaCAoJGtleV9tYW5hZ2VtZW50X21vZGUpIHsKICAgICAgICAgICAgY2FzZSBBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxLZXlFbmNyeXB0aW9uSW50ZXJmYWNlOjpNT0RFX0VOQ1JZUFQ6CiAgICAgICAgICAgIGNhc2UgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5RW5jcnlwdGlvbkludGVyZmFjZTo6TU9ERV9XUkFQOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVDRUsoJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldENFS1NpemUoKSk7CiAgICAgICAgICAgIGNhc2UgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5RW5jcnlwdGlvbkludGVyZmFjZTo6TU9ERV9BR1JFRU1FTlQ6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmVxKDEsICRqd2UtPmNvdW50UmVjaXBpZW50cygpLCAnVW5hYmxlIHRvIGVuY3J5cHQgZm9yIG11bHRpcGxlIHJlY2lwaWVudHMgdXNpbmcga2V5IGFncmVlbWVudCBhbGdvcml0aG1zLicpOwogICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgPSBhcnJheV9tZXJnZSgkandlLT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksICRqd2UtPmdldFNoYXJlZEhlYWRlcnMoKSwgJGp3ZS0+Z2V0UmVjaXBpZW50KDApLT5nZXRIZWFkZXJzKCkpOwogICAgICAgICAgICAgICAgJGFsZ29yaXRobSA9ICR0aGlzLT5maW5kS2V5RW5jcnlwdGlvbkFsZ29yaXRobSgkY29tcGxldGVfaGVhZGVycyk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRhbGdvcml0aG0tPmdldEFncmVlbWVudEtleSgkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0Q0VLU2l6ZSgpLCAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpLCAkandlLT5nZXRSZWNpcGllbnQoMCktPmdldFJlY2lwaWVudEtleSgpLCAkY29tcGxldGVfaGVhZGVycywgJGFkZGl0aW9uYWxfaGVhZGVycyk7CiAgICAgICAgICAgIGNhc2UgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5RW5jcnlwdGlvbkludGVyZmFjZTo6TU9ERV9ESVJFQ1Q6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmVxKDEsICRqd2UtPmNvdW50UmVjaXBpZW50cygpLCAnVW5hYmxlIHRvIGVuY3J5cHQgZm9yIG11bHRpcGxlIHJlY2lwaWVudHMgdXNpbmcga2V5IGFncmVlbWVudCBhbGdvcml0aG1zLicpOwogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgkandlLT5nZXRSZWNpcGllbnQoMCktPmdldFJlY2lwaWVudEtleSgpLT5nZXQoJ2t0eScpLCAnb2N0JywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRqd2UtPmdldFJlY2lwaWVudCgwKS0+Z2V0UmVjaXBpZW50S2V5KCktPmhhcygnaycpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImsiIGlzIG1pc3NpbmcuJyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIEJhc2U2NFVybDo6ZGVjb2RlKCRqd2UtPmdldFJlY2lwaWVudCgwKS0+Z2V0UmVjaXBpZW50S2V5KCktPmdldCgnaycpKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1Vuc3VwcG9ydGVkIGtleSBtYW5hZ2VtZW50IG1vZGUgIiVzIi4nLCAka2V5X21hbmFnZW1lbnRfbW9kZSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRqd2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEtleU1hbmFnZW1lbnRNb2RlKE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZSkKICAgIHsKICAgICAgICAkbW9kZSA9IG51bGw7CiAgICAgICAgJHJlY2lwaWVudHMgPSAkandlLT5nZXRSZWNpcGllbnRzKCk7CgogICAgICAgIGZvcmVhY2ggKCRyZWNpcGllbnRzIGFzICRyZWNpcGllbnQpIHsKICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgPSBhcnJheV9tZXJnZSgkandlLT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksICRqd2UtPmdldFNoYXJlZEhlYWRlcnMoKSwgJHJlY2lwaWVudC0+Z2V0SGVhZGVycygpKTsKICAgICAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGNvbXBsZXRlX2hlYWRlcnMsICdhbGcnLCAnUGFyYW1ldGVyICJhbGciIGlzIG1pc3NpbmcuJyk7CgogICAgICAgICAgICAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtID0gJHRoaXMtPmdldEpXQU1hbmFnZXIoKS0+Z2V0QWxnb3JpdGhtKCRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0sIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOjpjbGFzcywgc3ByaW50ZignVGhlIGtleSBlbmNyeXB0aW9uIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGEga2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtIGluc3RhbmNlLicsICRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXSkpOwoKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRtb2RlKSB7CiAgICAgICAgICAgICAgICAkbW9kZSA9ICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEtleU1hbmFnZW1lbnRNb2RlKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OnRydWUoJHRoaXMtPmFyZUtleU1hbmFnZW1lbnRNb2Rlc0NvbXBhdGlibGUoJG1vZGUsICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEtleU1hbmFnZW1lbnRNb2RlKCkpLCAnRm9yZWlnbiBrZXkgbWFuYWdlbWVudCBtb2RlIGZvcmJpZGRlbi4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtb2RlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uTWV0aG9kKE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZSkKICAgIHsKICAgICAgICAkbWV0aG9kID0gbnVsbDsKICAgICAgICAkbmJfcmVjaXBpZW50cyA9ICRqd2UtPmNvdW50UmVjaXBpZW50cygpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbmJfcmVjaXBpZW50czsgKyskaSkgewogICAgICAgICAgICAkY29tcGxldGVfaGVhZGVycyA9IGFycmF5X21lcmdlKCRqd2UtPmdldFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKSwgJGp3ZS0+Z2V0U2hhcmVkSGVhZGVycygpLCAkandlLT5nZXRSZWNpcGllbnQoJGkpLT5nZXRIZWFkZXJzKCkpOwogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnemlwJywgJGNvbXBsZXRlX2hlYWRlcnMpKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gJG1ldGhvZCkgewogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSAkaSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kID0gJGNvbXBsZXRlX2hlYWRlcnNbJ3ppcCddOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbmNvbnNpc3RlbnQgInppcCIgcGFyYW1ldGVyLicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgkbWV0aG9kLCAkY29tcGxldGVfaGVhZGVyc1snemlwJ10sICdJbmNvbnNpc3RlbnQgInppcCIgcGFyYW1ldGVyLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcShudWxsLCAkbWV0aG9kLCAnSW5jb25zaXN0ZW50ICJ6aXAiIHBhcmFtZXRlci4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRtZXRob2QpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZCA9ICR0aGlzLT5nZXRDb21wcmVzc2lvbk1hbmFnZXIoKS0+Z2V0Q29tcHJlc3Npb25BbGdvcml0aG0oJG1ldGhvZCk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGNvbXByZXNzaW9uX21ldGhvZCwgQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2U6OmNsYXNzLCBzcHJpbnRmKCdDb21wcmVzc2lvbiBtZXRob2QgIiVzIiBub3Qgc3VwcG9ydGVkLicsICRtZXRob2QpKTsKCiAgICAgICAgcmV0dXJuICRjb21wcmVzc2lvbl9tZXRob2Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAkandlCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobShPYmplY3RcSldFSW50ZXJmYWNlICRqd2UpCiAgICB7CiAgICAgICAgJGFsZ29yaXRobSA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCRqd2UtPmdldFJlY2lwaWVudHMoKSBhcyAkcmVjaXBpZW50KSB7CiAgICAgICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoJGp3ZS0+Z2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVycygpLCAkandlLT5nZXRTaGFyZWRIZWFkZXJzKCksICRyZWNpcGllbnQtPmdldEhlYWRlcnMoKSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnZW5jJywgJ1BhcmFtZXRlciAiZW5jIiBpcyBtaXNzaW5nLicpOwogICAgICAgICAgICBpZiAobnVsbCA9PT0gJGFsZ29yaXRobSkgewogICAgICAgICAgICAgICAgJGFsZ29yaXRobSA9ICRjb21wbGV0ZV9oZWFkZXJzWydlbmMnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6ZXEoJGFsZ29yaXRobSwgJGNvbXBsZXRlX2hlYWRlcnNbJ2VuYyddLCAnRm9yZWlnbiBjb250ZW50IGVuY3J5cHRpb24gYWxnb3JpdGhtcyBhcmUgbm90IGFsbG93ZWQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtID0gJHRoaXMtPmdldEpXQU1hbmFnZXIoKS0+Z2V0QWxnb3JpdGhtKCRhbGdvcml0aG0pOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U6OmNsYXNzLCBzcHJpbnRmKCdUaGUgY29udGVudCBlbmNyeXB0aW9uIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGEgY29udGVudCBlbmNyeXB0aW9uIGFsZ29yaXRobSBpbnN0YW5jZS4nLCAkYWxnb3JpdGhtKSk7CgogICAgICAgIHJldHVybiAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGN1cnJlbnQKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5ldwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFyZUtleU1hbmFnZW1lbnRNb2Rlc0NvbXBhdGlibGUoJGN1cnJlbnQsICRuZXcpCiAgICB7CiAgICAgICAgJGFncmVlID0gQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U6Ok1PREVfQUdSRUVNRU5UOwogICAgICAgICRkaXIgPSBBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTo6TU9ERV9ESVJFQ1Q7CiAgICAgICAgJGVuYyA9IEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOjpNT0RFX0VOQ1JZUFQ7CiAgICAgICAgJHdyYXAgPSBBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTo6TU9ERV9XUkFQOwogICAgICAgICRzdXBwb3J0ZWRfa2V5X21hbmFnZW1lbnRfbW9kZV9jb21iaW5hdGlvbnMgPSBbJGVuYy4kZW5jID0+IHRydWUsICRlbmMuJHdyYXAgPT4gdHJ1ZSwgJHdyYXAuJGVuYyA9PiB0cnVlLCAkd3JhcC4kd3JhcCA9PiB0cnVlLCAkYWdyZWUuJGFncmVlID0+IGZhbHNlLCAkYWdyZWUuJGRpciA9PiBmYWxzZSwgJGFncmVlLiRlbmMgPT4gZmFsc2UsICRhZ3JlZS4kd3JhcCA9PiBmYWxzZSwgJGRpci4kYWdyZWUgPT4gZmFsc2UsICRkaXIuJGRpciA9PiBmYWxzZSwgJGRpci4kZW5jID0+IGZhbHNlLCAkZGlyLiR3cmFwID0+IGZhbHNlLCAkZW5jLiRhZ3JlZSA9PiBmYWxzZSwgJGVuYy4kZGlyID0+IGZhbHNlLCAkd3JhcC4kYWdyZWUgPT4gZmFsc2UsICR3cmFwLiRkaXIgPT4gZmFsc2VdOwoKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkY3VycmVudC4kbmV3LCAkc3VwcG9ydGVkX2tleV9tYW5hZ2VtZW50X21vZGVfY29tYmluYXRpb25zKSkgewogICAgICAgICAgICByZXR1cm4gJHN1cHBvcnRlZF9rZXlfbWFuYWdlbWVudF9tb2RlX2NvbWJpbmF0aW9uc1skY3VycmVudC4kbmV3XTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJHNpemUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZUNFSygkc2l6ZSkKICAgIHsKICAgICAgICByZXR1cm4gcmFuZG9tX2J5dGVzKCRzaXplIC8gOCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRzaXplCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVJVigkc2l6ZSkKICAgIHsKICAgICAgICByZXR1cm4gcmFuZG9tX2J5dGVzKCRzaXplIC8gOCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbXBsZXRlX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZEtleUVuY3J5cHRpb25BbGdvcml0aG0oYXJyYXkgJGNvbXBsZXRlX2hlYWRlcnMpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGNvbXBsZXRlX2hlYWRlcnMsICdhbGcnLCAnUGFyYW1ldGVyICJhbGciIGlzIG1pc3NpbmcuJyk7CiAgICAgICAgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSA9ICR0aGlzLT5nZXRKV0FNYW5hZ2VyKCktPmdldEFsZ29yaXRobSgkY29tcGxldGVfaGVhZGVyc1snYWxnJ10pOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0sIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOjpjbGFzcywgc3ByaW50ZignVGhlIGtleSBlbmNyeXB0aW9uIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGEga2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtIGluc3RhbmNlLicsICRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXSkpOwoKICAgICAgICByZXR1cm4gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/HasCompressionManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uTWFuYWdlckludGVyZmFjZTsKCnRyYWl0IEhhc0NvbXByZXNzaW9uTWFuYWdlcgp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGNvbXByZXNzaW9uX21hbmFnZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlICRjb21wcmVzc2lvbl9tYW5hZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0Q29tcHJlc3Npb25NYW5hZ2VyKENvbXByZXNzaW9uTWFuYWdlckludGVyZmFjZSAkY29tcHJlc3Npb25fbWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fbWFuYWdlciA9ICRjb21wcmVzc2lvbl9tYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbk1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uTWFuYWdlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wcmVzc2lvbl9tYW5hZ2VyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/HasJWAManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXEFsZ29yaXRobVxKV0FNYW5hZ2VySW50ZXJmYWNlOwoKdHJhaXQgSGFzSldBTWFuYWdlcgp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkandhX21hbmFnZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXJJbnRlcmZhY2UgJGp3YV9tYW5hZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0SldBTWFuYWdlcihKV0FNYW5hZ2VySW50ZXJmYWNlICRqd2FfbWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+andhX21hbmFnZXIgPSAkandhX21hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEFsZ29yaXRobVxKV0FNYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRKV0FNYW5hZ2VyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmp3YV9tYW5hZ2VyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/HasKeyChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKdHJhaXQgSGFzS2V5Q2hlY2tlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICR1c2FnZQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXlVc2FnZShKV0tJbnRlcmZhY2UgJGtleSwgJHVzYWdlKQogICAgewogICAgICAgIGlmICgka2V5LT5oYXMoJ3VzZScpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y2hlY2tVc2FnZSgka2V5LCAkdXNhZ2UpOwogICAgICAgIH0KICAgICAgICBpZiAoJGtleS0+aGFzKCdrZXlfb3BzJykpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jaGVja09wZXJhdGlvbigka2V5LCAkdXNhZ2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkdXNhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja09wZXJhdGlvbihKV0tJbnRlcmZhY2UgJGtleSwgJHVzYWdlKQogICAgewogICAgICAgICRvcHMgPSAka2V5LT5nZXQoJ2tleV9vcHMnKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRvcHMpKSB7CiAgICAgICAgICAgICRvcHMgPSBbJG9wc107CiAgICAgICAgfQogICAgICAgIHN3aXRjaCAoJHVzYWdlKSB7CiAgICAgICAgICAgIGNhc2UgJ3ZlcmlmaWNhdGlvbic6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJ3ZlcmlmeScsICRvcHMsICdLZXkgY2Fubm90IGJlIHVzZWQgdG8gdmVyaWZ5IGEgc2lnbmF0dXJlJyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIGNhc2UgJ3NpZ25hdHVyZSc6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJ3NpZ24nLCAkb3BzLCAnS2V5IGNhbm5vdCBiZSB1c2VkIHRvIHNpZ24nKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgY2FzZSAnZW5jcnlwdGlvbic6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OnRydWUoaW5fYXJyYXkoJ2VuY3J5cHQnLCAkb3BzKSB8fCBpbl9hcnJheSgnd3JhcEtleScsICRvcHMpLCAnS2V5IGNhbm5vdCBiZSB1c2VkIHRvIGVuY3J5cHQnKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgY2FzZSAnZGVjcnlwdGlvbic6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OnRydWUoaW5fYXJyYXkoJ2RlY3J5cHQnLCAkb3BzKSB8fCBpbl9hcnJheSgndW53cmFwS2V5JywgJG9wcyksICdLZXkgY2Fubm90IGJlIHVzZWQgdG8gZGVjcnlwdCcpOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGtleSB1c2FnZS4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkdXNhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja1VzYWdlKEpXS0ludGVyZmFjZSAka2V5LCAkdXNhZ2UpCiAgICB7CiAgICAgICAgJHVzZSA9ICRrZXktPmdldCgndXNlJyk7CiAgICAgICAgc3dpdGNoICgkdXNhZ2UpIHsKICAgICAgICAgICAgY2FzZSAndmVyaWZpY2F0aW9uJzoKICAgICAgICAgICAgY2FzZSAnc2lnbmF0dXJlJzoKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6ZXEoJ3NpZycsICR1c2UsICdLZXkgY2Fubm90IGJlIHVzZWQgdG8gc2lnbiBvciB2ZXJpZnkgYSBzaWduYXR1cmUnKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgY2FzZSAnZW5jcnlwdGlvbic6CiAgICAgICAgICAgIGNhc2UgJ2RlY3J5cHRpb24nOgogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgnZW5jJywgJHVzZSwgJ0tleSBjYW5ub3QgYmUgdXNlZCB0byBlbmNyeXB0IG9yIGRlY3J5cHQnKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdXNhZ2UuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGFsZ29yaXRobQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXlBbGdvcml0aG0oSldLSW50ZXJmYWNlICRrZXksICRhbGdvcml0aG0pCiAgICB7CiAgICAgICAgaWYgKCEka2V5LT5oYXMoJ2FsZycpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIEFzc2VydGlvbjo6ZXEoJGtleS0+Z2V0KCdhbGcnKSwgJGFsZ29yaXRobSwgc3ByaW50ZignS2V5IGlzIG9ubHkgYWxsb3dlZCBmb3IgYWxnb3JpdGhtICIlcyIuJywgJGtleS0+Z2V0KCdhbGcnKSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/AudienceChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIEF1ZGllbmNlQ2hlY2tlciBpbXBsZW1lbnRzIENsYWltQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJGF1ZGllbmNlOwoKICAgIC8qKgogICAgICogQXVkaWVuY2VDaGVja2VyIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGF1ZGllbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYXVkaWVuY2UpCiAgICB7CiAgICAgICAgJHRoaXMtPmF1ZGllbmNlID0gJGF1ZGllbmNlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tDbGFpbShKV1RJbnRlcmZhY2UgJGp3dCkKICAgIHsKICAgICAgICBpZiAoISRqd3QtPmhhc0NsYWltKCdhdWQnKSkgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkYXVkaWVuY2UgPSAkand0LT5nZXRDbGFpbSgnYXVkJyk7CiAgICAgICAgaWYgKGlzX3N0cmluZygkYXVkaWVuY2UpKSB7CiAgICAgICAgICAgIEFzc2VydGlvbjo6ZXEoJGF1ZGllbmNlLCAkdGhpcy0+Z2V0QXVkaWVuY2UoKSwgJ0JhZCBhdWRpZW5jZS4nKTsKICAgICAgICB9IGVsc2VpZiAoaXNfYXJyYXkoJGF1ZGllbmNlKSkgewogICAgICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJHRoaXMtPmdldEF1ZGllbmNlKCksICRhdWRpZW5jZSwgJ0JhZCBhdWRpZW5jZS4nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQmFkIGF1ZGllbmNlLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsnYXVkJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXVkaWVuY2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXVkaWVuY2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/CheckerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0OwoKLyoqCiAqIENsYXNzIENoZWNrZXJNYW5hZ2VyLgogKi8KY2xhc3MgQ2hlY2tlck1hbmFnZXIgaW1wbGVtZW50cyBDaGVja2VyTWFuYWdlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcQ2hlY2tlclxDbGFpbUNoZWNrZXJJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlICRjbGFpbV9jaGVja2VycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxDaGVja2VyXEhlYWRlckNoZWNrZXJJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlICRoZWFkZXJfY2hlY2tlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldUSW50ZXJmYWNlICRqd3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tKV1QoT2JqZWN0XEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgICRjaGVja2VkX2NsYWltcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y2xhaW1fY2hlY2tlcnMgYXMgJGNsYWltX2NoZWNrZXIpIHsKICAgICAgICAgICAgJGNoZWNrZWRfY2xhaW1zID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkY2hlY2tlZF9jbGFpbXMsCiAgICAgICAgICAgICAgICAkY2xhaW1fY2hlY2tlci0+Y2hlY2tDbGFpbSgkand0KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjaGVja2VkX2NsYWltczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAkaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICRjaGVja2VkX2NsYWltcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSGVhZGVycyhhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzLCBhcnJheSAkY2hlY2tlZF9jbGFpbXMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhlYWRlcl9jaGVja2VycyBhcyAkaGVhZGVyX2NoZWNrZXIpIHsKICAgICAgICAgICAgJGhlYWRlcl9jaGVja2VyLT5jaGVja0hlYWRlcigkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzLCAkY2hlY2tlZF9jbGFpbXMpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrSldTKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgJHNpZ25hdHVyZSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmludGVnZXIoJHNpZ25hdHVyZSk7CiAgICAgICAgQXNzZXJ0aW9uOjpsZXNzVGhhbigkc2lnbmF0dXJlLCAkandzLT5jb3VudFNpZ25hdHVyZXMoKSk7CgogICAgICAgICRjaGVja2VkX2NsYWltcyA9ICR0aGlzLT5jaGVja0pXVCgkandzKTsKICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMgPSAkandzLT5nZXRTaWduYXR1cmUoJHNpZ25hdHVyZSktPmdldFByb3RlY3RlZEhlYWRlcnMoKTsKICAgICAgICAkaGVhZGVycyA9ICRqd3MtPmdldFNpZ25hdHVyZSgkc2lnbmF0dXJlKS0+Z2V0SGVhZGVycygpOwoKICAgICAgICAkdGhpcy0+Y2hlY2tIZWFkZXJzKCRwcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMsICRjaGVja2VkX2NsYWltcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ2hlY2tlclxDbGFpbUNoZWNrZXJJbnRlcmZhY2UgJGNsYWltX2NoZWNrZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZENsYWltQ2hlY2tlcihDbGFpbUNoZWNrZXJJbnRlcmZhY2UgJGNsYWltX2NoZWNrZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmNsYWltX2NoZWNrZXJzW10gPSAkY2xhaW1fY2hlY2tlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxDaGVja2VyXEhlYWRlckNoZWNrZXJJbnRlcmZhY2UgJGhlYWRlcl9jaGVja2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRIZWFkZXJDaGVja2VyKEhlYWRlckNoZWNrZXJJbnRlcmZhY2UgJGhlYWRlcl9jaGVja2VyKQogICAgewogICAgICAgICR0aGlzLT5oZWFkZXJfY2hlY2tlcnNbXSA9ICRoZWFkZXJfY2hlY2tlcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/CheckerManagerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlOwoKLyoqCiAqIEludGVyZmFjZSBDaGVja2VyTWFuYWdlckludGVyZmFjZS4KICovCmludGVyZmFjZSBDaGVja2VyTWFuYWdlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRqd3MKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrSldTKEpXU0ludGVyZmFjZSAkandzLCAkc2lnbmF0dXJlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxDaGVja2VyXENsYWltQ2hlY2tlckludGVyZmFjZSAkY2xhaW1fY2hlY2tlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ2xhaW1DaGVja2VyKENsYWltQ2hlY2tlckludGVyZmFjZSAkY2xhaW1fY2hlY2tlcik7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ2hlY2tlclxIZWFkZXJDaGVja2VySW50ZXJmYWNlICRoZWFkZXJfY2hlY2tlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkSGVhZGVyQ2hlY2tlcihIZWFkZXJDaGVja2VySW50ZXJmYWNlICRoZWFkZXJfY2hlY2tlcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/ClaimCheckerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgSm9zZVxPYmplY3RcSldUSW50ZXJmYWNlOwoKLyoqCiAqIEludGVyZmFjZSBDbGFpbUNoZWNrZXJJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgQ2xhaW1DaGVja2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV1RJbnRlcmZhY2UgJGp3dAogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQ2xhaW0oSldUSW50ZXJmYWNlICRqd3QpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/CriticalHeaderChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKCmNsYXNzIENyaXRpY2FsSGVhZGVyQ2hlY2tlciBpbXBsZW1lbnRzIEhlYWRlckNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0hlYWRlcihhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzLCBhcnJheSAkY2hlY2tlZF9jbGFpbXMpCiAgICB7CiAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCdjcml0JywgJHByb3RlY3RlZF9oZWFkZXJzKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJHByb3RlY3RlZF9oZWFkZXJzWydjcml0J10sICdUaGUgcGFyYW1ldGVyICJjcml0IiBtdXN0IGJlIGEgbGlzdC4nKTsKCiAgICAgICAgJGRpZmYgPSBhcnJheV9kaWZmKCRwcm90ZWN0ZWRfaGVhZGVyc1snY3JpdCddLCAkY2hlY2tlZF9jbGFpbXMpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZShlbXB0eSgkZGlmZiksIHNwcmludGYoJ09uZSBvciBtb3JlIGNsYWltcyBhcmUgbWFya2VkIGFzIGNyaXRpY2FsLCBidXQgdGhleSBhcmUgbWlzc2luZyBvciBoYXZlIG5vdCBiZWVuIGNoZWNrZWQgKCVzKS4nLCBqc29uX2VuY29kZShhcnJheV92YWx1ZXMoJGRpZmYpKSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/ExpirationTimeChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIEV4cGlyYXRpb25UaW1lQ2hlY2tlciBpbXBsZW1lbnRzIENsYWltQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQ2xhaW0oSldUSW50ZXJmYWNlICRqd3QpCiAgICB7CiAgICAgICAgaWYgKCEkand0LT5oYXNDbGFpbSgnZXhwJykpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgJGV4cCA9IChpbnQpICRqd3QtPmdldENsYWltKCdleHAnKTsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRleHAsIHRpbWUoKSwgJ1RoZSBKV1QgaGFzIGV4cGlyZWQuJyk7CgogICAgICAgIHJldHVybiBbJ2V4cCddOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/HeaderCheckerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7CgovKioKICogSW50ZXJmYWNlIEhlYWRlckNoZWNrZXJJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgSGVhZGVyQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAkaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICRjaGVja2VkX2NsYWltcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tIZWFkZXIoYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycywgYXJyYXkgJGNoZWNrZWRfY2xhaW1zKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/IssuedAtChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIElzc3VlZEF0Q2hlY2tlciBpbXBsZW1lbnRzIENsYWltQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQ2xhaW0oSldUSW50ZXJmYWNlICRqd3QpCiAgICB7CiAgICAgICAgaWYgKCEkand0LT5oYXNDbGFpbSgnaWF0JykpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgJGlhdCA9IChpbnQpICRqd3QtPmdldENsYWltKCdpYXQnKTsKICAgICAgICBBc3NlcnRpb246Omxlc3NPckVxdWFsVGhhbigkaWF0LCB0aW1lKCksICdUaGUgSldUIGlzIGlzc3VlZCBpbiB0aGUgZnV0dXJlLicpOwoKICAgICAgICByZXR1cm4gWydpYXQnXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/IssuerChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmFic3RyYWN0IGNsYXNzIElzc3VlckNoZWNrZXIgaW1wbGVtZW50cyBDbGFpbUNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0NsYWltKEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgIGlmICghJGp3dC0+aGFzQ2xhaW0oJ2lzcycpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRpc3N1ZXIgPSAkand0LT5nZXRDbGFpbSgnaXNzJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCR0aGlzLT5pc0lzc3VlckFsbG93ZWQoJGlzc3VlciksIHNwcmludGYoJ1RoZSBpc3N1ZXIgIiVzIiBpcyBub3QgYWxsb3dlZC4nLCAkaXNzdWVyKSk7CgogICAgICAgIHJldHVybiBbJ2lzcyddOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkaXNzdWVyCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBpc0lzc3VlckFsbG93ZWQoJGlzc3Vlcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/JtiChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmFic3RyYWN0IGNsYXNzIEp0aUNoZWNrZXIgaW1wbGVtZW50cyBDbGFpbUNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0NsYWltKEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgIGlmICghJGp3dC0+aGFzQ2xhaW0oJ2p0aScpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRqdGkgPSAkand0LT5nZXRDbGFpbSgnanRpJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCR0aGlzLT5pc0p0aVZhbGlkKCRqdGkpLCBzcHJpbnRmKCdJbnZhbGlkIHRva2VuIElEICIlcyIuJywgJGp0aSkpOwoKICAgICAgICByZXR1cm4gWydqdGknXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGp0aQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNKdGlWYWxpZCgkanRpKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/NotBeforeChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIE5vdEJlZm9yZUNoZWNrZXIgaW1wbGVtZW50cyBDbGFpbUNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0NsYWltKEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgIGlmICghJGp3dC0+aGFzQ2xhaW0oJ25iZicpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRuYmYgPSAoaW50KSAkand0LT5nZXRDbGFpbSgnbmJmJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpsZXNzT3JFcXVhbFRoYW4oJG5iZiwgdGltZSgpLCAnVGhlIEpXVCBjYW4gbm90IGJlIHVzZWQgeWV0LicpOwoKICAgICAgICByZXR1cm4gWyduYmYnXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/SubjectChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmFic3RyYWN0IGNsYXNzIFN1YmplY3RDaGVja2VyIGltcGxlbWVudHMgQ2xhaW1DaGVja2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tDbGFpbShKV1RJbnRlcmZhY2UgJGp3dCkKICAgIHsKICAgICAgICBpZiAoISRqd3QtPmhhc0NsYWltKCdzdWInKSkgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkc3ViamVjdCA9ICRqd3QtPmdldENsYWltKCdzdWInKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoJHRoaXMtPmlzU3ViamVjdEFsbG93ZWQoJHN1YmplY3QpLCBzcHJpbnRmKCdUaGUgc3ViamVjdCAiJXMiIGlzIG5vdCBhbGxvd2VkLicsICRzdWJqZWN0KSk7CgogICAgICAgIHJldHVybiBbJ3N1YiddOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc3ViamVjdAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNTdWJqZWN0QWxsb3dlZCgkc3ViamVjdCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/CompressionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKLyoqCiAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgYWxsIGNvbXByZXNzaW9uIG1ldGhvZHMuCiAqLwppbnRlcmZhY2UgQ29tcHJlc3Npb25JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG1ldGhvZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0aG9kTmFtZSgpOwoKICAgIC8qKgogICAgICogQ29tcHJlc3MgdGhlIGRhdGEuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YSBUaGUgZGF0YSB0byBjb21wcmVzcwogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgY29tcHJlc3NlZCBkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wcmVzcygkZGF0YSk7CgogICAgLyoqCiAgICAgKiBVbmNvbXByZXNzIHRoZSBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgVGhlIGRhdGEgdG8gdW5jb21wcmVzcwogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgdW5jb21wcmVzc2VkIGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuY29tcHJlc3MoJGRhdGEpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/CompressionManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKLyoqCiAqIENvbXByZXNzaW9uIGFsZ29yaXRobSBtYW5hZ2VyLgogKi8KZmluYWwgY2xhc3MgQ29tcHJlc3Npb25NYW5hZ2VyIGltcGxlbWVudHMgQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbkludGVyZmFjZVtdCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY29tcHJlc3Npb25fYWxnb3JpdGhtcyA9IFtdOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tcHJlc3Npb25BbGdvcml0aG0oQ29tcHJlc3Npb25JbnRlcmZhY2UgJGNvbXByZXNzaW9uX2FsZ29yaXRobSkKICAgIHsKICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fYWxnb3JpdGhtc1skY29tcHJlc3Npb25fYWxnb3JpdGhtLT5nZXRNZXRob2ROYW1lKCldID0gJGNvbXByZXNzaW9uX2FsZ29yaXRobTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uQWxnb3JpdGhtKCRuYW1lKQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRuYW1lLCAkdGhpcy0+Y29tcHJlc3Npb25fYWxnb3JpdGhtcykgPyAkdGhpcy0+Y29tcHJlc3Npb25fYWxnb3JpdGhtc1skbmFtZV0gOiBudWxsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/CompressionManagerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKLyoqCiAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gbWFuYWdlIGFsbCBjb21wcmVzc2lvbiBtZXRob2RzLgogKi8KaW50ZXJmYWNlIENvbXByZXNzaW9uTWFuYWdlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGZpbmQgYSBDb21wcmVzc2lvbkludGVyZmFjZSBvYmplY3QgYWJsZSB0byBzdXBwb3J0IHRoZSBjb21wcmVzc2lvbiBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tcHJlc3Npb24gbWV0aG9kCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbkludGVyZmFjZXxudWxsIElmIHRoZSBjb21wcmVzc2lvbiBoYW5kbGVyIGlzIHN1cHBvcnRlZCwgcmV0dXJuIENvbXByZXNzaW9uSW50ZXJmYWNlIG9iamVjdCwgZWxzZSBudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21wcmVzc2lvbkFsZ29yaXRobSgkbmFtZSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2UgJGNvbXByZXNzaW9uX2FsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tcHJlc3Npb25BbGdvcml0aG0oQ29tcHJlc3Npb25JbnRlcmZhY2UgJGNvbXByZXNzaW9uX2FsZ29yaXRobSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/Deflate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gREVGIChkZWZhbHRlKQogKiBUaGlzIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpcyBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogKi8KZmluYWwgY2xhc3MgRGVmbGF0ZSBpbXBsZW1lbnRzIENvbXByZXNzaW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRjb21wcmVzc2lvbl9sZXZlbCA9IC0xOwoKICAgIC8qKgogICAgICogRGVmbGF0ZSBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjb21wcmVzc2lvbl9sZXZlbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbXByZXNzaW9uX2xldmVsID0gLTEpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppbnRlZ2VyKCRjb21wcmVzc2lvbl9sZXZlbCwgJ1RoZSBjb21wcmVzc2lvbiBsZXZlbCBjYW4gYmUgZ2l2ZW4gYXMgMCBmb3Igbm8gY29tcHJlc3Npb24gdXAgdG8gOSBmb3IgbWF4aW11bSBjb21wcmVzc2lvbi4gSWYgLTEgZ2l2ZW4sIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIHdpbGwgYmUgdGhlIGRlZmF1bHQgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIHpsaWIgbGlicmFyeS4nKTsKICAgICAgICBBc3NlcnRpb246OnJhbmdlKCRjb21wcmVzc2lvbl9sZXZlbCwgLTEsIDksICdUaGUgY29tcHJlc3Npb24gbGV2ZWwgY2FuIGJlIGdpdmVuIGFzIDAgZm9yIG5vIGNvbXByZXNzaW9uIHVwIHRvIDkgZm9yIG1heGltdW0gY29tcHJlc3Npb24uIElmIC0xIGdpdmVuLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCB3aWxsIGJlIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSB6bGliIGxpYnJhcnkuJyk7CgogICAgICAgICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbCA9ICRjb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q29tcHJlc3Npb25MZXZlbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGhvZE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnREVGJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXByZXNzKCRkYXRhKQogICAgewogICAgICAgICRkYXRhID0gZ3pkZWZsYXRlKCRkYXRhLCAkdGhpcy0+Z2V0Q29tcHJlc3Npb25MZXZlbCgpKTsKICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSAkZGF0YSwgJ1VuYWJsZSB0byBjb21wcmVzcyBkYXRhJyk7CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuY29tcHJlc3MoJGRhdGEpCiAgICB7CiAgICAgICAgJGRhdGEgPSBnemluZmxhdGUoJGRhdGEpOwogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRkYXRhLCAnVW5hYmxlIHRvIHVuY29tcHJlc3MgZGF0YScpOwoKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/GZip.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gR1ogKEdaaXApLgogKiBUaGlzIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpcyBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KICovCmZpbmFsIGNsYXNzIEdaaXAgaW1wbGVtZW50cyBDb21wcmVzc2lvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCAkY29tcHJlc3Npb25fbGV2ZWwgPSAtMTsKCiAgICAvKioKICAgICAqIERlZmxhdGUgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkY29tcHJlc3Npb25fbGV2ZWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb21wcmVzc2lvbl9sZXZlbCA9IC0xKQogICAgewogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkY29tcHJlc3Npb25fbGV2ZWwsICdUaGUgY29tcHJlc3Npb24gbGV2ZWwgY2FuIGJlIGdpdmVuIGFzIDAgZm9yIG5vIGNvbXByZXNzaW9uIHVwIHRvIDkgZm9yIG1heGltdW0gY29tcHJlc3Npb24uIElmIC0xIGdpdmVuLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCB3aWxsIGJlIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSB6bGliIGxpYnJhcnkuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpyYW5nZSgkY29tcHJlc3Npb25fbGV2ZWwsIC0xLCA5LCAnVGhlIGNvbXByZXNzaW9uIGxldmVsIGNhbiBiZSBnaXZlbiBhcyAwIGZvciBubyBjb21wcmVzc2lvbiB1cCB0byA5IGZvciBtYXhpbXVtIGNvbXByZXNzaW9uLiBJZiAtMSBnaXZlbiwgdGhlIGRlZmF1bHQgY29tcHJlc3Npb24gbGV2ZWwgd2lsbCBiZSB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCBvZiB0aGUgemxpYiBsaWJyYXJ5LicpOwoKICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fbGV2ZWwgPSAkY29tcHJlc3Npb25fbGV2ZWw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uTGV2ZWwoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcHJlc3Npb25fbGV2ZWw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRob2ROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0daJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXByZXNzKCRkYXRhKQogICAgewogICAgICAgICRkYXRhID0gZ3plbmNvZGUoJGRhdGEsICR0aGlzLT5nZXRDb21wcmVzc2lvbkxldmVsKCkpOwogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRkYXRhLCAnVW5hYmxlIHRvIGNvbXByZXNzIGRhdGEnKTsKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5jb21wcmVzcygkZGF0YSkKICAgIHsKICAgICAgICAkZGF0YSA9IGd6ZGVjb2RlKCRkYXRhKTsKICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSAkZGF0YSwgJ1VuYWJsZSB0byB1bmNvbXByZXNzIGRhdGEnKTsKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/ZLib.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gWkxJQiAoWkxpYikuCiAqIFRoaXMgY29tcHJlc3Npb24gYWxnb3JpdGhtIGlzIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogKi8KZmluYWwgY2xhc3MgWkxpYiBpbXBsZW1lbnRzIENvbXByZXNzaW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRjb21wcmVzc2lvbl9sZXZlbCA9IC0xOwoKICAgIC8qKgogICAgICogRGVmbGF0ZSBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjb21wcmVzc2lvbl9sZXZlbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbXByZXNzaW9uX2xldmVsID0gLTEpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppbnRlZ2VyKCRjb21wcmVzc2lvbl9sZXZlbCwgJ1RoZSBjb21wcmVzc2lvbiBsZXZlbCBjYW4gYmUgZ2l2ZW4gYXMgMCBmb3Igbm8gY29tcHJlc3Npb24gdXAgdG8gOSBmb3IgbWF4aW11bSBjb21wcmVzc2lvbi4gSWYgLTEgZ2l2ZW4sIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIHdpbGwgYmUgdGhlIGRlZmF1bHQgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIHpsaWIgbGlicmFyeS4nKTsKICAgICAgICBBc3NlcnRpb246OnJhbmdlKCRjb21wcmVzc2lvbl9sZXZlbCwgLTEsIDksICdUaGUgY29tcHJlc3Npb24gbGV2ZWwgY2FuIGJlIGdpdmVuIGFzIDAgZm9yIG5vIGNvbXByZXNzaW9uIHVwIHRvIDkgZm9yIG1heGltdW0gY29tcHJlc3Npb24uIElmIC0xIGdpdmVuLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCB3aWxsIGJlIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSB6bGliIGxpYnJhcnkuJyk7CgogICAgICAgICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbCA9ICRjb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q29tcHJlc3Npb25MZXZlbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGhvZE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnWkxJQic7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wcmVzcygkZGF0YSkKICAgIHsKICAgICAgICAkZGF0YSA9IGd6Y29tcHJlc3MoJGRhdGEsICR0aGlzLT5nZXRDb21wcmVzc2lvbkxldmVsKCkpOwogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRkYXRhLCAnVW5hYmxlIHRvIGNvbXByZXNzIGRhdGEnKTsKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5jb21wcmVzcygkZGF0YSkKICAgIHsKICAgICAgICAkZGF0YSA9IGd6dW5jb21wcmVzcygkZGF0YSk7CiAgICAgICAgQXNzZXJ0aW9uOjpmYWxzZShmYWxzZSA9PT0gJGRhdGEsICdVbmFibGUgdG8gdW5jb21wcmVzcyBkYXRhJyk7CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Decrypter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgRGVjcnlwdGVyIGltcGxlbWVudHMgRGVjcnlwdGVySW50ZXJmYWNlCnsKICAgIHVzZSBCZWhhdmlvdXJcSGFzS2V5Q2hlY2tlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzSldBTWFuYWdlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzQ29tcHJlc3Npb25NYW5hZ2VyOwogICAgdXNlIEJlaGF2aW91clxDb21tb25DaXBoZXJpbmdNZXRob2RzOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURlY3J5cHRlcihhcnJheSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29tcHJlc3Npb25fbWV0aG9kcyA9IFsnREVGJywgJ1pMSUInLCAnR1onXSkKICAgIHsKICAgICAgICAkZGVjcnlwdGVyID0gbmV3IHNlbGYoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGNvbXByZXNzaW9uX21ldGhvZHMpOwoKICAgICAgICByZXR1cm4gJGRlY3J5cHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIERlY3J5cHRlciBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2VbXSAgICAgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2VbXSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbkludGVyZmFjZVtdICAgICAgICAgICAgICAkY29tcHJlc3Npb25fbWV0aG9kcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIGFycmF5ICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbXByZXNzaW9uX21ldGhvZHMpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldEtleUVuY3J5cHRpb25BbGdvcml0aG1zKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zKTsKICAgICAgICAkdGhpcy0+c2V0Q29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcyk7CiAgICAgICAgJHRoaXMtPnNldENvbXByZXNzaW9uTWV0aG9kcygkY29tcHJlc3Npb25fbWV0aG9kcyk7CiAgICAgICAgJHRoaXMtPnNldEpXQU1hbmFnZXIoRmFjdG9yeVxBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeTo6Y3JlYXRlQWxnb3JpdGhtTWFuYWdlcihhcnJheV9tZXJnZSgka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zKSkpOwogICAgICAgICR0aGlzLT5zZXRDb21wcmVzc2lvbk1hbmFnZXIoRmFjdG9yeVxDb21wcmVzc2lvbk1hbmFnZXJGYWN0b3J5OjpjcmVhdGVDb21wcmVzc2lvbk1hbmFnZXIoJGNvbXByZXNzaW9uX21ldGhvZHMpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRVc2luZ0tleShPYmplY3RcSldFSW50ZXJmYWNlICYkandlLCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkandrX3NldCA9IG5ldyBPYmplY3RcSldLU2V0KCk7CiAgICAgICAgJGp3a19zZXQtPmFkZEtleSgkandrKTsKCiAgICAgICAgJHRoaXMtPmRlY3J5cHRVc2luZ0tleVNldCgkandlLCAkandrX3NldCwgJHJlY2lwaWVudF9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0VXNpbmdLZXlTZXQoT2JqZWN0XEpXRUludGVyZmFjZSAmJGp3ZSwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jaGVja0pXS1NldCgkandrX3NldCk7CiAgICAgICAgJHRoaXMtPmNoZWNrUGF5bG9hZCgkandlKTsKICAgICAgICAkdGhpcy0+Y2hlY2tSZWNpcGllbnRzKCRqd2UpOwoKICAgICAgICAkbmJfcmVjaXBpZW50cyA9ICRqd2UtPmNvdW50UmVjaXBpZW50cygpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbmJfcmVjaXBpZW50czsgKyskaSkgewogICAgICAgICAgICBpZiAoaXNfaW50KCRyZXN1bHQgPSAkdGhpcy0+ZGVjcnlwdFJlY2lwaWVudEtleSgkandlLCAkandrX3NldCwgJGkpKSkgewogICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleCA9ICRyZXN1bHQ7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGRlY3J5cHQgdGhlIEpXRS4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICAgICRqd2UKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAkaQogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWNyeXB0UmVjaXBpZW50S2V5KE9iamVjdFxKV0VJbnRlcmZhY2UgJiRqd2UsIE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQsICRpKQogICAgewogICAgICAgICRyZWNpcGllbnQgPSAkandlLT5nZXRSZWNpcGllbnQoJGkpOwogICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoJGp3ZS0+Z2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVycygpLCAkandlLT5nZXRTaGFyZWRIZWFkZXJzKCksICRyZWNpcGllbnQtPmdldEhlYWRlcnMoKSk7CiAgICAgICAgJHRoaXMtPmNoZWNrQ29tcGxldGVIZWFkZXIoJGNvbXBsZXRlX2hlYWRlcnMpOwoKICAgICAgICAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtID0gJHRoaXMtPmdldEtleUVuY3J5cHRpb25BbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlcnMpOwogICAgICAgICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtID0gJHRoaXMtPmdldENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtKCRjb21wbGV0ZV9oZWFkZXJzKTsKCiAgICAgICAgZm9yZWFjaCAoJGp3a19zZXQgYXMgJGp3aykgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJHRoaXMtPmNoZWNrS2V5VXNhZ2UoJGp3aywgJ2RlY3J5cHRpb24nKTsKICAgICAgICAgICAgICAgIGlmICgnZGlyJyAhPT0gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNoZWNrS2V5QWxnb3JpdGhtKCRqd2ssICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKSk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jaGVja0tleUFsZ29yaXRobSgkandrLCAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjZWsgPSAkdGhpcy0+ZGVjcnlwdENFSygka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSwgJGp3aywgJHJlY2lwaWVudCwgJGNvbXBsZXRlX2hlYWRlcnMpOwogICAgICAgICAgICAgICAgaWYgKG51bGwgIT09ICRjZWspIHsKICAgICAgICAgICAgICAgICAgICBpZiAodHJ1ZSA9PT0gJHRoaXMtPmRlY3J5cHRQYXlsb2FkKCRqd2UsICRjZWssICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAkY29tcGxldGVfaGVhZGVycykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgLy9XZSBkbyBub3RoaW5nLCB3ZSBjb250aW51ZSB3aXRoIG90aGVyIGtleXMKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUmVjaXBpZW50cyhPYmplY3RcSldFSW50ZXJmYWNlICRqd2UpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyVGhhbigkandlLT5jb3VudFJlY2lwaWVudHMoKSwgMCwgJ1RoZSBKV0UgZG9lcyBub3QgY29udGFpbiBhbnkgcmVjaXBpZW50LicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUGF5bG9hZChPYmplY3RcSldFSW50ZXJmYWNlICRqd2UpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKG51bGwgPT09ICRqd2UtPmdldFBheWxvYWQoKSwgJ1RoZSBKV0UgaXMgYWxyZWFkeSBkZWNyeXB0ZWQuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSldLU2V0KE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyVGhhbihjb3VudCgkandrX3NldCksIDAsICdObyBrZXkgaW4gdGhlIGtleSBzZXQuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXEpXQUludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0KICAgICAqIEBwYXJhbSBcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0KICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgJGtleQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxSZWNpcGllbnRJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21wbGV0ZV9oZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBudWxsfHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlY3J5cHRDRUsoQWxnb3JpdGhtXEpXQUludGVyZmFjZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sIE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSwgT2JqZWN0XFJlY2lwaWVudEludGVyZmFjZSAkcmVjaXBpZW50LCBhcnJheSAkY29tcGxldGVfaGVhZGVycykKICAgIHsKICAgICAgICBpZiAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXERpcmVjdEVuY3J5cHRpb25JbnRlcmZhY2UpIHsKICAgICAgICAgICAgcmV0dXJuICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldENFSygka2V5KTsKICAgICAgICB9IGVsc2VpZiAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEtleUFncmVlbWVudEludGVyZmFjZSkgewogICAgICAgICAgICByZXR1cm4gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0QWdyZWVtZW50S2V5KCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5nZXRDRUtTaXplKCksICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCksICRrZXksICRjb21wbGV0ZV9oZWFkZXJzKTsKICAgICAgICB9IGVsc2VpZiAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEtleUFncmVlbWVudFdyYXBwaW5nSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHJldHVybiAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLT51bndyYXBBZ3JlZW1lbnRLZXkoJGtleSwgJHJlY2lwaWVudC0+Z2V0RW5jcnlwdGVkS2V5KCksICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5nZXRDRUtTaXplKCksICRjb21wbGV0ZV9oZWFkZXJzKTsKICAgICAgICB9IGVsc2VpZiAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEtleUVuY3J5cHRpb25JbnRlcmZhY2UpIHsKICAgICAgICAgICAgcmV0dXJuICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmRlY3J5cHRLZXkoJGtleSwgJHJlY2lwaWVudC0+Z2V0RW5jcnlwdGVkS2V5KCksICRjb21wbGV0ZV9oZWFkZXJzKTsKICAgICAgICB9IGVsc2VpZiAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEtleVdyYXBwaW5nSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHJldHVybiAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLT51bndyYXBLZXkoJGtleSwgJHJlY2lwaWVudC0+Z2V0RW5jcnlwdGVkS2V5KCksICRjb21wbGV0ZV9oZWFkZXJzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgQ0VLIGdlbmVyYXRpb24nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICRqd2UKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNlawogICAgICogQHBhcmFtIFxKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tcGxldGVfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlY3J5cHRQYXlsb2FkKE9iamVjdFxKV0VJbnRlcmZhY2UgJiRqd2UsICRjZWssIEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSwgYXJyYXkgJGNvbXBsZXRlX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJHBheWxvYWQgPSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+ZGVjcnlwdENvbnRlbnQoJGp3ZS0+Z2V0Q2lwaGVydGV4dCgpLCAkY2VrLCAkandlLT5nZXRJVigpLCBudWxsID09PSAkandlLT5nZXRBQUQoKSA/IG51bGwgOiBCYXNlNjRVcmw6OmVuY29kZSgkandlLT5nZXRBQUQoKSksICRqd2UtPmdldEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksICRqd2UtPmdldFRhZygpKTsKICAgICAgICBpZiAobnVsbCA9PT0gJHBheWxvYWQpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRlY29tcHJlc3NJZk5lZWRlZCgkcGF5bG9hZCwgJGNvbXBsZXRlX2hlYWRlcnMpOwogICAgICAgICRkZWNvZGVkID0ganNvbl9kZWNvZGUoJHBheWxvYWQsIHRydWUpOwogICAgICAgICRqd2UgPSAkandlLT53aXRoUGF5bG9hZChudWxsID09PSAkZGVjb2RlZCA/ICRwYXlsb2FkIDogJGRlY29kZWQpOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBheWxvYWQKICAgICAqIEBwYXJhbSBhcnJheSAgJGNvbXBsZXRlX2hlYWRlcnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWNvbXByZXNzSWZOZWVkZWQoJiRwYXlsb2FkLCBhcnJheSAkY29tcGxldGVfaGVhZGVycykKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnemlwJywgJGNvbXBsZXRlX2hlYWRlcnMpKSB7CiAgICAgICAgICAgICRjb21wcmVzc2lvbl9tZXRob2QgPSAkdGhpcy0+Z2V0Q29tcHJlc3Npb25NZXRob2QoJGNvbXBsZXRlX2hlYWRlcnNbJ3ppcCddKTsKICAgICAgICAgICAgJHBheWxvYWQgPSAkY29tcHJlc3Npb25fbWV0aG9kLT51bmNvbXByZXNzKCRwYXlsb2FkKTsKICAgICAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJHBheWxvYWQsICdEZWNvbXByZXNzaW9uIGZhaWxlZCcpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY29tcGxldGVfaGVhZGVycwogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrQ29tcGxldGVIZWFkZXIoYXJyYXkgJGNvbXBsZXRlX2hlYWRlcnMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoWydlbmMnLCAnYWxnJ10gYXMgJGtleSkgewogICAgICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkY29tcGxldGVfaGVhZGVycywgJGtleSwgc3ByaW50ZigiUGFyYW1ldGVycyAnJXMnIGlzIG1pc3NpbmcuIiwgJGtleSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY29tcGxldGVfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtKGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzKQogICAgewogICAgICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0gPSAkdGhpcy0+Z2V0SldBTWFuYWdlcigpLT5nZXRBbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlcnNbJ2FsZyddKTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTo6Y2xhc3MsIHNwcmludGYoJ1RoZSBrZXkgZW5jcnlwdGlvbiBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkIG9yIGRvZXMgbm90IGltcGxlbWVudCBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlLicsICRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXSkpOwoKICAgICAgICByZXR1cm4gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY29tcGxldGVfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q29udGVudEVuY3J5cHRpb25BbGdvcml0aG0oYXJyYXkgJGNvbXBsZXRlX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0gPSAkdGhpcy0+Z2V0SldBTWFuYWdlcigpLT5nZXRBbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlcnNbJ2VuYyddKTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSwgQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOjpjbGFzcywgc3ByaW50ZignVGhlIGtleSBlbmNyeXB0aW9uIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQgb3IgZG9lcyBub3QgaW1wbGVtZW50IENvbnRlbnRFbmNyeXB0aW9uSW50ZXJmYWNlLicsICRjb21wbGV0ZV9oZWFkZXJzWydlbmMnXSkpOwoKICAgICAgICByZXR1cm4gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2QKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q29tcHJlc3Npb25NZXRob2QoJG1ldGhvZCkKICAgIHsKICAgICAgICAkY29tcHJlc3Npb25fbWV0aG9kID0gJHRoaXMtPmdldENvbXByZXNzaW9uTWFuYWdlcigpLT5nZXRDb21wcmVzc2lvbkFsZ29yaXRobSgkbWV0aG9kKTsKICAgICAgICBBc3NlcnRpb246Om5vdE51bGwoJGNvbXByZXNzaW9uX21ldGhvZCwgc3ByaW50ZignQ29tcHJlc3Npb24gbWV0aG9kICIlcyIgbm90IHN1cHBvcnRlZCcsICRtZXRob2QpKTsKCiAgICAgICAgcmV0dXJuICRjb21wcmVzc2lvbl9tZXRob2Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/DecrypterInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIERlY3J5cHRlciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgRGVjcnlwdGVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAgICAgICAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXERlY3J5cHRlckludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURlY3J5cHRlcihhcnJheSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29tcHJlc3Npb25fbWV0aG9kcyA9IFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDb21wcmVzc2lvbk1ldGhvZHMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRpbnB1dCAgICAgICAgICAgQSBKV0Ugb2JqZWN0IHRvIGRlY3J5cHQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRqd2sgICAgICAgICAgICAgVGhlIGtleSB1c2VkIHRvIGRlY3J5cHQgdGhlIGlucHV0CiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50X2luZGV4IElmIHRoZSBKV0UgaGFzIGJlZW4gZGVjcnlwdGVkLCBhbiBpbnRlZ2VyIHRoYXQgcmVwcmVzZW50cyB0aGUgSUQgb2YgdGhlIHJlY2lwaWVudCBpcyBzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRVc2luZ0tleShPYmplY3RcSldFSW50ZXJmYWNlICYkaW5wdXQsIE9iamVjdFxKV0tJbnRlcmZhY2UgJGp3aywgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICAgICRpbnB1dCAgICAgICAgICAgQSBKV0Ugb2JqZWN0IHRvIGRlY3J5cHQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0ICAgICAgICAgVGhlIGtleSBzZXQgdXNlZCB0byBkZWNyeXB0IHRoZSBpbnB1dAogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleCBJZiB0aGUgSldFIGhhcyBiZWVuIGRlY3J5cHRlZCwgYW4gaW50ZWdlciB0aGF0IHJlcHJlc2VudHMgdGhlIElEIG9mIHRoZSByZWNpcGllbnQgaXMgc2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0VXNpbmdLZXlTZXQoT2JqZWN0XEpXRUludGVyZmFjZSAmJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCAmJHJlY2lwaWVudF9pbmRleCA9IG51bGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Encrypter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgRW5jcnlwdGVyIGltcGxlbWVudHMgRW5jcnlwdGVySW50ZXJmYWNlCnsKICAgIHVzZSBCZWhhdmlvdXJcSGFzS2V5Q2hlY2tlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzSldBTWFuYWdlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzQ29tcHJlc3Npb25NYW5hZ2VyOwogICAgdXNlIEJlaGF2aW91clxDb21tb25DaXBoZXJpbmdNZXRob2RzOwogICAgdXNlIEJlaGF2aW91clxFbmNyeXB0ZXJUcmFpdDsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFbmNyeXB0ZXIoYXJyYXkgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIGFycmF5ICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbXByZXNzaW9uX21ldGhvZHMgPSBbJ0RFRicsICdaTElCJywgJ0daJ10pCiAgICB7CiAgICAgICAgJGVuY3J5cHRlciA9IG5ldyBzZWxmKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRjb21wcmVzc2lvbl9tZXRob2RzKTsKCiAgICAgICAgcmV0dXJuICRlbmNyeXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNyeXB0ZXIgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAgICAgICAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIGFycmF5ICRjb21wcmVzc2lvbl9tZXRob2RzKQogICAgewogICAgICAgICR0aGlzLT5zZXRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcyk7CiAgICAgICAgJHRoaXMtPnNldENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtcygkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMpOwogICAgICAgICR0aGlzLT5zZXRDb21wcmVzc2lvbk1ldGhvZHMoJGNvbXByZXNzaW9uX21ldGhvZHMpOwogICAgICAgICR0aGlzLT5zZXRKV0FNYW5hZ2VyKEZhY3RvcnlcQWxnb3JpdGhtTWFuYWdlckZhY3Rvcnk6OmNyZWF0ZUFsZ29yaXRobU1hbmFnZXIoYXJyYXlfbWVyZ2UoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcykpKTsKICAgICAgICAkdGhpcy0+c2V0Q29tcHJlc3Npb25NYW5hZ2VyKEZhY3RvcnlcQ29tcHJlc3Npb25NYW5hZ2VyRmFjdG9yeTo6Y3JlYXRlQ29tcHJlc3Npb25NYW5hZ2VyKCRjb21wcmVzc2lvbl9tZXRob2RzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0KE9iamVjdFxKV0VJbnRlcmZhY2UgJiRqd2UpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpmYWxzZSgkandlLT5pc0VuY3J5cHRlZCgpLCAnVGhlIEpXRSBpcyBhbHJlYWR5IGVuY3J5cHRlZC4nKTsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRqd2UtPmNvdW50UmVjaXBpZW50cygpLCAwLCAnVGhlIEpXRSBkb2VzIG5vdCBjb250YWluIHJlY2lwaWVudC4nKTsKICAgICAgICAkYWRkaXRpb25hbF9oZWFkZXJzID0gW107CiAgICAgICAgJG5iX3JlY2lwaWVudHMgPSAkandlLT5jb3VudFJlY2lwaWVudHMoKTsKICAgICAgICAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSA9ICR0aGlzLT5nZXRDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobSgkandlKTsKICAgICAgICAkY29tcHJlc3Npb25fbWV0aG9kID0gJHRoaXMtPmdldENvbXByZXNzaW9uTWV0aG9kKCRqd2UpOwogICAgICAgICRrZXlfbWFuYWdlbWVudF9tb2RlID0gJHRoaXMtPmdldEtleU1hbmFnZW1lbnRNb2RlKCRqd2UpOwogICAgICAgICRjZWsgPSAkdGhpcy0+ZGV0ZXJtaW5lQ0VLKCRqd2UsICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAka2V5X21hbmFnZW1lbnRfbW9kZSwgJGFkZGl0aW9uYWxfaGVhZGVycyk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuYl9yZWNpcGllbnRzOyArKyRpKSB7CiAgICAgICAgICAgICR0aGlzLT5wcm9jZXNzUmVjaXBpZW50KCRqd2UsICRqd2UtPmdldFJlY2lwaWVudCgkaSksICRjZWssICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAkYWRkaXRpb25hbF9oZWFkZXJzKTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJGFkZGl0aW9uYWxfaGVhZGVycykgJiYgMSA9PT0gJGp3ZS0+Y291bnRSZWNpcGllbnRzKCkpIHsKICAgICAgICAgICAgJGp3ZSA9ICRqd2UtPndpdGhTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKGFycmF5X21lcmdlKCRqd2UtPmdldFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKSwgJGFkZGl0aW9uYWxfaGVhZGVycykpOwogICAgICAgIH0KCiAgICAgICAgJGl2X3NpemUgPSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0SVZTaXplKCk7CiAgICAgICAgJGl2ID0gJHRoaXMtPmNyZWF0ZUlWKCRpdl9zaXplKTsKCiAgICAgICAgJHRoaXMtPmVuY3J5cHRKV0UoJGp3ZSwgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sICRjZWssICRpdiwgJGNvbXByZXNzaW9uX21ldGhvZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICRqd2UKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcUmVjaXBpZW50SW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2VrCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzUmVjaXBpZW50KE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZSwgT2JqZWN0XFJlY2lwaWVudEludGVyZmFjZSAmJHJlY2lwaWVudCwgJGNlaywgQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVycykKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHJlY2lwaWVudC0+Z2V0UmVjaXBpZW50S2V5KCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkY29tcGxldGVfaGVhZGVycyA9IGFycmF5X21lcmdlKCRqd2UtPmdldFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKSwgJGp3ZS0+Z2V0U2hhcmVkSGVhZGVycygpLCAkcmVjaXBpZW50LT5nZXRIZWFkZXJzKCkpOwogICAgICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0gPSAkdGhpcy0+ZmluZEtleUVuY3J5cHRpb25BbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlcnMpOwogICAgICAgICR0aGlzLT5jaGVja0tleXMoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSwgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sICRyZWNpcGllbnQtPmdldFJlY2lwaWVudEtleSgpKTsKICAgICAgICAkZW5jcnlwdGVkX2NvbnRlbnRfZW5jcnlwdGlvbl9rZXkgPSAkdGhpcy0+Z2V0RW5jcnlwdGVkS2V5KCRjb21wbGV0ZV9oZWFkZXJzLCAkY2VrLCAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSwgJGFkZGl0aW9uYWxfaGVhZGVycywgJHJlY2lwaWVudC0+Z2V0UmVjaXBpZW50S2V5KCkpOwogICAgICAgICRyZWNpcGllbnRfaGVhZGVycyA9ICRyZWNpcGllbnQtPmdldEhlYWRlcnMoKTsKICAgICAgICBpZiAoIWVtcHR5KCRhZGRpdGlvbmFsX2hlYWRlcnMpICYmIDEgIT09ICRqd2UtPmNvdW50UmVjaXBpZW50cygpKSB7CiAgICAgICAgICAgICRyZWNpcGllbnRfaGVhZGVycyA9IGFycmF5X21lcmdlKCRyZWNpcGllbnRfaGVhZGVycywgJGFkZGl0aW9uYWxfaGVhZGVycyk7CiAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMgPSBbXTsKICAgICAgICB9CgogICAgICAgICRyZWNpcGllbnQgPSBPYmplY3RcUmVjaXBpZW50OjpjcmVhdGVSZWNpcGllbnRGcm9tTG9hZGVkSldFKCRyZWNpcGllbnRfaGVhZGVycywgJGVuY3J5cHRlZF9jb250ZW50X2VuY3J5cHRpb25fa2V5KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgJGp3ZQogICAgICogQHBhcmFtIFxKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2VrCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpdgogICAgICogQHBhcmFtIFxKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uSW50ZXJmYWNlfG51bGwgICAgICAgICAkY29tcHJlc3Npb25fbWV0aG9kCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZW5jcnlwdEpXRShPYmplY3RcSldFSW50ZXJmYWNlICYkandlLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sICRjZWssICRpdiwgQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2UgJGNvbXByZXNzaW9uX21ldGhvZCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkandlLT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCkpKSB7CiAgICAgICAgICAgICRqd2UgPSAkandlLT53aXRoRW5jb2RlZFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoQmFzZTY0VXJsOjplbmNvZGUoanNvbl9lbmNvZGUoJGp3ZS0+Z2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVycygpKSkpOwogICAgICAgIH0KCiAgICAgICAgJHRhZyA9IG51bGw7CiAgICAgICAgJHBheWxvYWQgPSAkdGhpcy0+cHJlcGFyZVBheWxvYWQoJGp3ZS0+Z2V0UGF5bG9hZCgpLCAkY29tcHJlc3Npb25fbWV0aG9kKTsKICAgICAgICAkYWFkID0gbnVsbCA9PT0gJGp3ZS0+Z2V0QUFEKCkgPyBudWxsIDogQmFzZTY0VXJsOjplbmNvZGUoJGp3ZS0+Z2V0QUFEKCkpOwogICAgICAgICRjaXBoZXJ0ZXh0ID0gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmVuY3J5cHRDb250ZW50KCRwYXlsb2FkLCAkY2VrLCAkaXYsICRhYWQsICRqd2UtPmdldEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksICR0YWcpOwogICAgICAgICRqd2UgPSAkandlLT53aXRoQ2lwaGVydGV4dCgkY2lwaGVydGV4dCk7CiAgICAgICAgJGp3ZSA9ICRqd2UtPndpdGhJVigkaXYpOwoKICAgICAgICBpZiAobnVsbCAhPT0gJHRhZykgewogICAgICAgICAgICAkandlID0gJGp3ZS0+d2l0aFRhZygkdGFnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uSW50ZXJmYWNlfG51bGwgJGNvbXByZXNzaW9uX21ldGhvZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcHJlcGFyZVBheWxvYWQoJHBheWxvYWQsIENvbXByZXNzaW9uXENvbXByZXNzaW9uSW50ZXJmYWNlICRjb21wcmVzc2lvbl9tZXRob2QgPSBudWxsKQogICAgewogICAgICAgICRwcmVwYXJlZCA9IGlzX3N0cmluZygkcGF5bG9hZCkgPyAkcGF5bG9hZCA6IGpzb25fZW5jb2RlKCRwYXlsb2FkKTsKICAgICAgICBBc3NlcnRpb246Om5vdE51bGwoJHByZXBhcmVkLCAnVGhlIHBheWxvYWQgaXMgZW1wdHkgb3IgY2Fubm90IGVuY29kZWQgaW50byBKU09OLicpOwoKICAgICAgICBpZiAobnVsbCA9PT0gJGNvbXByZXNzaW9uX21ldGhvZCkgewogICAgICAgICAgICByZXR1cm4gJHByZXBhcmVkOwogICAgICAgIH0KICAgICAgICAkY29tcHJlc3NlZF9wYXlsb2FkID0gJGNvbXByZXNzaW9uX21ldGhvZC0+Y29tcHJlc3MoJHByZXBhcmVkKTsKICAgICAgICBBc3NlcnRpb246OnN0cmluZygkY29tcHJlc3NlZF9wYXlsb2FkLCAnQ29tcHJlc3Npb24gZmFpbGVkLicpOwoKICAgICAgICByZXR1cm4gJGNvbXByZXNzZWRfcGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNlawogICAgICogQHBhcmFtIFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlICAgICAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWNpcGllbnRfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0RW5jcnlwdGVkS2V5KGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCAkY2VrLCBBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5KQogICAgewogICAgICAgIGlmICgka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtIGluc3RhbmNlb2YgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5RW5jcnlwdGlvbkludGVyZmFjZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldEVuY3J5cHRlZEtleUZyb21LZXlFbmNyeXB0aW9uQWxnb3JpdGhtKCRjb21wbGV0ZV9oZWFkZXJzLCAkY2VrLCAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAkcmVjaXBpZW50X2tleSwgJGFkZGl0aW9uYWxfaGVhZGVycyk7CiAgICAgICAgfSBlbHNlaWYgKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0gaW5zdGFuY2VvZiBBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxLZXlXcmFwcGluZ0ludGVyZmFjZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldEVuY3J5cHRlZEtleUZyb21LZXlXcmFwcGluZ0FsZ29yaXRobSgkY29tcGxldGVfaGVhZGVycywgJGNlaywgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSwgJHJlY2lwaWVudF9rZXksICRhZGRpdGlvbmFsX2hlYWRlcnMpOwogICAgICAgIH0gZWxzZWlmICgka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtIGluc3RhbmNlb2YgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5QWdyZWVtZW50V3JhcHBpbmdJbnRlcmZhY2UpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRFbmNyeXB0ZWRLZXlGcm9tS2V5QWdyZWVtZW50QW5kS2V5V3JhcHBpbmdBbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlcnMsICRjZWssICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0sICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAkYWRkaXRpb25hbF9oZWFkZXJzLCAkcmVjaXBpZW50X2tleSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjb21wbGV0ZV9oZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNlawogICAgICogQHBhcmFtIFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEtleUFncmVlbWVudFdyYXBwaW5nSW50ZXJmYWNlICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0KICAgICAqIEBwYXJhbSBcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgICAgICAgICAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50X2tleQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0RW5jcnlwdGVkS2V5RnJvbUtleUFncmVlbWVudEFuZEtleVdyYXBwaW5nQWxnb3JpdGhtKGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCAkY2VrLCBBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxLZXlBZ3JlZW1lbnRXcmFwcGluZ0ludGVyZmFjZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5KQogICAgewogICAgICAgICRqd3RfY2VrID0gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobS0+d3JhcEFncmVlbWVudEtleSgkcmVjaXBpZW50X2tleSwgJGNlaywgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldENFS1NpemUoKSwgJGNvbXBsZXRlX2hlYWRlcnMsICRhZGRpdGlvbmFsX2hlYWRlcnMpOwoKICAgICAgICByZXR1cm4gJGp3dF9jZWs7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29tcGxldGVfaGVhZGVycwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNlawogICAgICogQHBhcmFtIFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEtleUVuY3J5cHRpb25JbnRlcmZhY2UgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEVuY3J5cHRlZEtleUZyb21LZXlFbmNyeXB0aW9uQWxnb3JpdGhtKGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCAkY2VrLCBBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxLZXlFbmNyeXB0aW9uSW50ZXJmYWNlICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0sIE9iamVjdFxKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXksIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJzKQogICAgewogICAgICAgIHJldHVybiAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5lbmNyeXB0S2V5KCRyZWNpcGllbnRfa2V5LCAkY2VrLCAkY29tcGxldGVfaGVhZGVycywgJGFkZGl0aW9uYWxfaGVhZGVycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2VrCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5V3JhcHBpbmdJbnRlcmZhY2UgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWNpcGllbnRfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFkZGl0aW9uYWxfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0RW5jcnlwdGVkS2V5RnJvbUtleVdyYXBwaW5nQWxnb3JpdGhtKGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCAkY2VrLCBBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxLZXlXcmFwcGluZ0ludGVyZmFjZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBPYmplY3RcSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5LCAmJGFkZGl0aW9uYWxfaGVhZGVycykKICAgIHsKICAgICAgICByZXR1cm4gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobS0+d3JhcEtleSgkcmVjaXBpZW50X2tleSwgJGNlaywgJGNvbXBsZXRlX2hlYWRlcnMsICRhZGRpdGlvbmFsX2hlYWRlcnMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/EncrypterInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIEVuY3J5cHRlciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgRW5jcnlwdGVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAgICAgICAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEVuY3J5cHRlckludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRlcihhcnJheSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29tcHJlc3Npb25fbWV0aG9kcyA9IFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDb21wcmVzc2lvbk1ldGhvZHMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRqd2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHQoT2JqZWN0XEpXRUludGVyZmFjZSAmJGp3ZSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/AlgorithmManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQWxnb3JpdGhtXEpXQUludGVyZmFjZTsKdXNlIEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXI7CgpmaW5hbCBjbGFzcyBBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxBbGdvcml0aG1cSldBSW50ZXJmYWNlW10gJGFsZ29yaXRobXMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEFsZ29yaXRobVxKV0FNYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQWxnb3JpdGhtTWFuYWdlcihhcnJheSAkYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkandhX21hbmFnZXIgPSBuZXcgSldBTWFuYWdlcigpOwoKICAgICAgICBmb3JlYWNoICgkYWxnb3JpdGhtcyBhcyAkYWxnb3JpdGhtKSB7CiAgICAgICAgICAgIGlmICgkYWxnb3JpdGhtIGluc3RhbmNlb2YgSldBSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkandhX21hbmFnZXItPmFkZEFsZ29yaXRobSgkYWxnb3JpdGhtKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRhbGdvcml0aG0sICdCYWQgYXJndW1lbnQ6IG11c3QgYmUgYSBsaXN0IHdpdGggZWl0aGVyIGFsZ29yaXRobSBuYW1lcyAoc3RyaW5nKSBvciBpbnN0YW5jZXMgb2YgSldBSW50ZXJmYWNlLicpOwogICAgICAgICAgICAgICAgJGNsYXNzID0gc2VsZjo6Z2V0QWxnb3JpdGhtQ2xhc3MoJGFsZ29yaXRobSk7CiAgICAgICAgICAgICAgICAkandhX21hbmFnZXItPmFkZEFsZ29yaXRobShuZXcgJGNsYXNzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGp3YV9tYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlzQWxnb3JpdGhtU3VwcG9ydGVkKCRhbGdvcml0aG0pCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGFsZ29yaXRobSwgc2VsZjo6Z2V0U3VwcG9ydGVkQWxnb3JpdGhtcygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsZ29yaXRobQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobUNsYXNzKCRhbGdvcml0aG0pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKHNlbGY6OmlzQWxnb3JpdGhtU3VwcG9ydGVkKCRhbGdvcml0aG0pLCBzcHJpbnRmKCdBbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRhbGdvcml0aG0pKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmdldFN1cHBvcnRlZEFsZ29yaXRobXMoKVskYWxnb3JpdGhtXTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQWxnb3JpdGhtcygpCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ0hTMjU2JyA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxIUzI1NicsCiAgICAgICAgICAgICdIUzM4NCcgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcSFMzODQnLAogICAgICAgICAgICAnSFM1MTInID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXEhTNTEyJywKICAgICAgICAgICAgJ0VTMjU2JyA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxFUzI1NicsCiAgICAgICAgICAgICdFUzM4NCcgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcRVMzODQnLAogICAgICAgICAgICAnRVM1MTInID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXEVTNTEyJywKICAgICAgICAgICAgJ25vbmUnID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXE5vbmUnLAogICAgICAgICAgICAnUlMyNTYnID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXFJTMjU2JywKICAgICAgICAgICAgJ1JTMzg0JyA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxSUzM4NCcsCiAgICAgICAgICAgICdSUzUxMicgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcUlM1MTInLAogICAgICAgICAgICAnUFMyNTYnID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXFBTMjU2JywKICAgICAgICAgICAgJ1BTMzg0JyA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxQUzM4NCcsCiAgICAgICAgICAgICdQUzUxMicgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcUFM1MTInLAogICAgICAgICAgICAnRWREU0EnID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXEVkRFNBJywKICAgICAgICAgICAgJ0ExMjhHQ00nID0+ICdcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25cQTEyOEdDTScsCiAgICAgICAgICAgICdBMTkyR0NNJyA9PiAnXEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uXEExOTJHQ00nLAogICAgICAgICAgICAnQTI1NkdDTScgPT4gJ1xKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvblxBMjU2R0NNJywKICAgICAgICAgICAgJ0ExMjhDQkMtSFMyNTYnID0+ICdcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25cQTEyOENCQ0hTMjU2JywKICAgICAgICAgICAgJ0ExOTJDQkMtSFMzODQnID0+ICdcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25cQTE5MkNCQ0hTMzg0JywKICAgICAgICAgICAgJ0EyNTZDQkMtSFM1MTInID0+ICdcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25cQTI1NkNCQ0hTNTEyJywKICAgICAgICAgICAgJ0ExMjhLVycgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEExMjhLVycsCiAgICAgICAgICAgICdBMTkyS1cnID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxBMTkyS1cnLAogICAgICAgICAgICAnQTI1NktXJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cQTI1NktXJywKICAgICAgICAgICAgJ0ExMjhHQ01LVycgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEExMjhHQ01LVycsCiAgICAgICAgICAgICdBMTkyR0NNS1cnID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxBMTkyR0NNS1cnLAogICAgICAgICAgICAnQTI1NkdDTUtXJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cQTI1NkdDTUtXJywKICAgICAgICAgICAgJ2RpcicgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXERpcicsCiAgICAgICAgICAgICdFQ0RILUVTJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cRUNESEVTJywKICAgICAgICAgICAgJ0VDREgtRVMrQTEyOEtXJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cRUNESEVTQTEyOEtXJywKICAgICAgICAgICAgJ0VDREgtRVMrQTE5MktXJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cRUNESEVTQTE5MktXJywKICAgICAgICAgICAgJ0VDREgtRVMrQTI1NktXJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cRUNESEVTQTI1NktXJywKICAgICAgICAgICAgJ1BCRVMyLUhTMjU2K0ExMjhLVycgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXFBCRVMySFMyNTZBMTI4S1cnLAogICAgICAgICAgICAnUEJFUzItSFMzODQrQTE5MktXJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cUEJFUzJIUzM4NEExOTJLVycsCiAgICAgICAgICAgICdQQkVTMi1IUzUxMitBMjU2S1cnID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxQQkVTMkhTNTEyQTI1NktXJywKICAgICAgICAgICAgJ1JTQTFfNScgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXFJTQTE1JywKICAgICAgICAgICAgJ1JTQS1PQUVQJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cUlNBT0FFUCcsCiAgICAgICAgICAgICdSU0EtT0FFUC0yNTYnID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxSU0FPQUVQMjU2JywKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/CheckerManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQ2hlY2tlclxDaGVja2VyTWFuYWdlcjsKdXNlIEpvc2VcQ2hlY2tlclxDaGVja2VyTWFuYWdlckludGVyZmFjZTsKdXNlIEpvc2VcQ2hlY2tlclxDbGFpbUNoZWNrZXJJbnRlcmZhY2U7CnVzZSBKb3NlXENoZWNrZXJcSGVhZGVyQ2hlY2tlckludGVyZmFjZTsKCmZpbmFsIGNsYXNzIENoZWNrZXJNYW5hZ2VyRmFjdG9yeQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxDaGVja2VyXENsYWltQ2hlY2tlckludGVyZmFjZVtdICAkY2xhaW1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ2hlY2tlclxIZWFkZXJDaGVja2VySW50ZXJmYWNlW10gJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVDbGFpbUNoZWNrZXJNYW5hZ2VyKGFycmF5ICRjbGFpbXMgPSBbJ2V4cCcsICdpYXQnLCAnbmJmJ10sIGFycmF5ICRoZWFkZXJzID0gWydjcml0J10pCiAgICB7CiAgICAgICAgJGNoZWNrZXJfbWFuYWdlciA9IG5ldyBDaGVja2VyTWFuYWdlcigpOwoKICAgICAgICBzZWxmOjpwb3B1bGF0ZUNsYWltQ2hlY2tlcnMoJGNoZWNrZXJfbWFuYWdlciwgJGNsYWltcyk7CiAgICAgICAgc2VsZjo6cG9wdWxhdGVIZWFkZXJDaGVja2VycygkY2hlY2tlcl9tYW5hZ2VyLCAkaGVhZGVycyk7CgogICAgICAgIHJldHVybiAkY2hlY2tlcl9tYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UgJGNoZWNrZXJfbWFuYWdlcgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNsYWltcwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZUNsYWltQ2hlY2tlcnMoQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UgJiRjaGVja2VyX21hbmFnZXIsIGFycmF5ICRjbGFpbXMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGNsYWltcyBhcyAkY2xhaW0pIHsKICAgICAgICAgICAgaWYgKCRjbGFpbSBpbnN0YW5jZW9mIENsYWltQ2hlY2tlckludGVyZmFjZSkgewogICAgICAgICAgICAgICAgJGNoZWNrZXJfbWFuYWdlci0+YWRkQ2xhaW1DaGVja2VyKCRjbGFpbSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OnN0cmluZygkY2xhaW0sICdCYWQgYXJndW1lbnQ6IG11c3QgYmUgYSBsaXN0IHdpdGggZWl0aGVyIGNsYWltIG5hbWVzIChzdHJpbmcpIG9yIGluc3RhbmNlcyBvZiBDbGFpbUNoZWNrZXJJbnRlcmZhY2UuJyk7CiAgICAgICAgICAgICAgICAkY2xhc3MgPSBzZWxmOjpnZXRDbGFpbUNsYXNzKCRjbGFpbSk7CiAgICAgICAgICAgICAgICAkY2hlY2tlcl9tYW5hZ2VyLT5hZGRDbGFpbUNoZWNrZXIobmV3ICRjbGFzcygpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxDaGVja2VyXENoZWNrZXJNYW5hZ2VySW50ZXJmYWNlICRjaGVja2VyX21hbmFnZXIKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJzCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBvcHVsYXRlSGVhZGVyQ2hlY2tlcnMoQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UgJiRjaGVja2VyX21hbmFnZXIsIGFycmF5ICRoZWFkZXJzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRjbGFpbSkgewogICAgICAgICAgICBpZiAoJGNsYWltIGluc3RhbmNlb2YgSGVhZGVyQ2hlY2tlckludGVyZmFjZSkgewogICAgICAgICAgICAgICAgJGNoZWNrZXJfbWFuYWdlci0+YWRkSGVhZGVyQ2hlY2tlcigkY2xhaW0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJGNsYWltLCAnQmFkIGFyZ3VtZW50OiBtdXN0IGJlIGEgbGlzdCB3aXRoIGVpdGhlciBoZWFkZXIgbmFtZXMgKHN0cmluZykgb3IgaW5zdGFuY2VzIG9mIEhlYWRlckNoZWNrZXJJbnRlcmZhY2UuJyk7CiAgICAgICAgICAgICAgICAkY2xhc3MgPSBzZWxmOjpnZXRIZWFkZXJDbGFzcygkY2xhaW0pOwogICAgICAgICAgICAgICAgJGNoZWNrZXJfbWFuYWdlci0+YWRkSGVhZGVyQ2hlY2tlcihuZXcgJGNsYXNzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xhaW0KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNDbGFpbVN1cHBvcnRlZCgkY2xhaW0pCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGNsYWltLCBzZWxmOjpnZXRTdXBwb3J0ZWRDbGFpbXMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRoZWFkZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNIZWFkZXJTdXBwb3J0ZWQoJGhlYWRlcikKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkaGVhZGVyLCBzZWxmOjpnZXRTdXBwb3J0ZWRIZWFkZXJzKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xhaW0KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRDbGFpbUNsYXNzKCRjbGFpbSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OnRydWUoc2VsZjo6aXNDbGFpbVN1cHBvcnRlZCgkY2xhaW0pLCBzcHJpbnRmKCdDbGFpbSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSBhZGQgYW4gaW5zdGFuY2Ugb2YgQ2xhaW1DaGVja2VySW50ZXJmYWNlIGRpcmVjdGx5LicsICRjbGFpbSkpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VwcG9ydGVkQ2xhaW1zKClbJGNsYWltXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGhlYWRlcgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEhlYWRlckNsYXNzKCRoZWFkZXIpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKHNlbGY6OmlzSGVhZGVyU3VwcG9ydGVkKCRoZWFkZXIpLCBzcHJpbnRmKCdIZWFkZXIgIiVzIiBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgYWRkIGFuIGluc3RhbmNlIG9mIEhlYWRlckNoZWNrZXJJbnRlcmZhY2UgZGlyZWN0bHkuJywgJGhlYWRlcikpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VwcG9ydGVkSGVhZGVycygpWyRoZWFkZXJdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDbGFpbXMoKQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdhdWQnID0+ICdcSm9zZVxDaGVja2VyXEF1ZGllbmNlQ2hlY2tlcicsCiAgICAgICAgICAgICdleHAnID0+ICdcSm9zZVxDaGVja2VyXEV4cGlyYXRpb25UaW1lQ2hlY2tlcicsCiAgICAgICAgICAgICdpYXQnID0+ICdcSm9zZVxDaGVja2VyXElzc3VlZEF0Q2hlY2tlcicsCiAgICAgICAgICAgICduYmYnID0+ICdcSm9zZVxDaGVja2VyXE5vdEJlZm9yZUNoZWNrZXInLAogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdjcml0JyA9PiAnXEpvc2VcQ2hlY2tlclxDcml0aWNhbEhlYWRlckNoZWNrZXInLAogICAgICAgIF07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/CompressionManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2U7CnVzZSBKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uTWFuYWdlcjsKCmZpbmFsIGNsYXNzIENvbXByZXNzaW9uTWFuYWdlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAkbWV0aG9kcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQ29tcHJlc3Npb25NYW5hZ2VyKGFycmF5ICRtZXRob2RzKQogICAgewogICAgICAgICRjb21wcmVzc2lvbl9tYW5hZ2VyID0gbmV3IENvbXByZXNzaW9uTWFuYWdlcigpOwoKICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbWV0aG9kKSB7CiAgICAgICAgICAgIGlmICgkbWV0aG9kIGluc3RhbmNlb2YgQ29tcHJlc3Npb25JbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICRjb21wcmVzc2lvbl9tYW5hZ2VyLT5hZGRDb21wcmVzc2lvbkFsZ29yaXRobSgkbWV0aG9kKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRtZXRob2QsICdCYWQgYXJndW1lbnQ6IG11c3QgYmUgYSBsaXN0IHdpdGggZWl0aGVyIG1ldGhvZCBuYW1lcyAoc3RyaW5nKSBvciBpbnN0YW5jZXMgb2YgQ29tcHJlc3Npb25JbnRlcmZhY2UuJyk7CiAgICAgICAgICAgICAgICAkY2xhc3MgPSBzZWxmOjpnZXRNZXRob2RDbGFzcygkbWV0aG9kKTsKICAgICAgICAgICAgICAgICRjb21wcmVzc2lvbl9tYW5hZ2VyLT5hZGRDb21wcmVzc2lvbkFsZ29yaXRobShuZXcgJGNsYXNzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbXByZXNzaW9uX21hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2QKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNBbGdvcml0aG1TdXBwb3J0ZWQoJG1ldGhvZCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkbWV0aG9kLCBzZWxmOjpnZXRTdXBwb3J0ZWRNZXRob2RzKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0TWV0aG9kQ2xhc3MoJG1ldGhvZCkKICAgIHsKICAgICAgICBBc3NlcnRpb246OnRydWUoc2VsZjo6aXNBbGdvcml0aG1TdXBwb3J0ZWQoJG1ldGhvZCksIHNwcmludGYoJ0NvbXByZXNzaW9uIG1ldGhvZCAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuJywgJG1ldGhvZCkpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VwcG9ydGVkTWV0aG9kcygpWyRtZXRob2RdOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZE1ldGhvZHMoKQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdERUYnID0+ICdcSm9zZVxDb21wcmVzc2lvblxEZWZsYXRlJywKICAgICAgICAgICAgJ0daJyA9PiAnXEpvc2VcQ29tcHJlc3Npb25cR1ppcCcsCiAgICAgICAgICAgICdaTElCJyA9PiAnXEpvc2VcQ29tcHJlc3Npb25cWkxpYicsCiAgICAgICAgXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWEFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcRW5jcnlwdGVyOwp1c2UgSm9zZVxPYmplY3RcSldFOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgSldFRmFjdG9yeSBpbXBsZW1lbnRzIEpXRUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldFKCRwYXlsb2FkLCBhcnJheSAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gW10sIGFycmF5ICRzaGFyZWRfaGVhZGVycyA9IFtdLCAkYWFkID0gbnVsbCkKICAgIHsKICAgICAgICAkandlID0gbmV3IEpXRSgpOwogICAgICAgICRqd2UgPSAkandlLT53aXRoU2hhcmVkUHJvdGVjdGVkSGVhZGVycygkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzKTsKICAgICAgICAkandlID0gJGp3ZS0+d2l0aFNoYXJlZEhlYWRlcnMoJHNoYXJlZF9oZWFkZXJzKTsKICAgICAgICAkandlID0gJGp3ZS0+d2l0aFBheWxvYWQoJHBheWxvYWQpOwoKICAgICAgICBpZiAobnVsbCAhPT0gJGFhZCkgewogICAgICAgICAgICAkandlID0gJGp3ZS0+d2l0aEFBRCgkYWFkKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRVRvQ29tcGFjdEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycykKICAgIHsKICAgICAgICAkandlID0gc2VsZjo6Y3JlYXRlSldFQW5kRW5jcnlwdCgkcGF5bG9hZCwgJHJlY2lwaWVudF9rZXksICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMsIFtdLCBbXSwgbnVsbCk7CgogICAgICAgIHJldHVybiAkandlLT50b0NvbXBhY3RKU09OKDApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRVRvRmxhdHRlbmVkSlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5LCBhcnJheSAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gW10sICRzaGFyZWRfaGVhZGVycyA9IFtdLCAkcmVjaXBpZW50X2hlYWRlcnMgPSBbXSwgJGFhZCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3ZSA9IHNlbGY6OmNyZWF0ZUpXRUFuZEVuY3J5cHQoJHBheWxvYWQsICRyZWNpcGllbnRfa2V5LCAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzLCAkc2hhcmVkX2hlYWRlcnMsICRyZWNpcGllbnRfaGVhZGVycywgJGFhZCk7CgogICAgICAgIHJldHVybiAkandlLT50b0ZsYXR0ZW5lZEpTT04oMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRzaGFyZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgICAgICAkYWFkCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRUFuZEVuY3J5cHQoJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyA9IFtdLCAkc2hhcmVkX2hlYWRlcnMgPSBbXSwgJHJlY2lwaWVudF9oZWFkZXJzID0gW10sICRhYWQgPSBudWxsKQogICAgewogICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycywgJHNoYXJlZF9oZWFkZXJzLCAkcmVjaXBpZW50X2hlYWRlcnMpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnYWxnJywgJ05vICJhbGciIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlcicpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnZW5jJywgJ05vICJlbmMiIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlcicpOwogICAgICAgICRlbmNyeXB0ZXIgPSBFbmNyeXB0ZXI6OmNyZWF0ZUVuY3J5cHRlcihbJGNvbXBsZXRlX2hlYWRlcnNbJ2FsZyddXSwgWyRjb21wbGV0ZV9oZWFkZXJzWydlbmMnXV0sIFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgICAgICRqd2UgPSBzZWxmOjpjcmVhdGVKV0UoJHBheWxvYWQsICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMsICRzaGFyZWRfaGVhZGVycywgJGFhZCk7CgogICAgICAgICRqd2UgPSAkandlLT5hZGRSZWNpcGllbnRJbmZvcm1hdGlvbigkcmVjaXBpZW50X2tleSwgJHJlY2lwaWVudF9oZWFkZXJzKTsKCiAgICAgICAgJGVuY3J5cHRlci0+ZW5jcnlwdCgkandlKTsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWEFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKaW50ZXJmYWNlIEpXRUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgJHNoYXJlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGFhZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRSgkcGF5bG9hZCwgYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyA9IFtdLCBhcnJheSAkc2hhcmVkX2hlYWRlcnMgPSBbXSwgJGFhZCA9IG51bGwpOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVKV0VUb0NvbXBhY3RKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXksIGFycmF5ICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2hhcmVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRyZWNpcGllbnRfaGVhZGVycwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICAgICAgJGFhZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldFVG9GbGF0dGVuZWRKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXksIGFycmF5ICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMgPSBbXSwgJHNoYXJlZF9oZWFkZXJzID0gW10sICRyZWNpcGllbnRfaGVhZGVycyA9IFtdLCAkYWFkID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWKFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXEtleUNvbnZlcnRlclxFQ0tleTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXEtleUNvbnZlcnRlcjsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKdXNlIEpvc2VcT2JqZWN0XEpLVUpXS1NldDsKdXNlIEpvc2VcT2JqZWN0XEpXSzsKdXNlIEpvc2VcT2JqZWN0XEpXS1NldDsKdXNlIEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZTsKdXNlIEpvc2VcT2JqZWN0XEpXS1NldHM7CnVzZSBKb3NlXE9iamVjdFxQdWJsaWNKV0tTZXQ7CnVzZSBKb3NlXE9iamVjdFxSb3RhdGFibGVKV0tTZXQ7CnVzZSBKb3NlXE9iamVjdFxTdG9yYWJsZUpXSzsKdXNlIEpvc2VcT2JqZWN0XFN0b3JhYmxlSldLU2V0Owp1c2UgSm9zZVxPYmplY3RcWDVVSldLU2V0Owp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXEN1cnZlRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xOaXN0Q3VydmU7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2U7CgpmaW5hbCBjbGFzcyBKV0tGYWN0b3J5IGltcGxlbWVudHMgSldLRmFjdG9yeUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQdWJsaWNLZXlTZXQoSldLU2V0SW50ZXJmYWNlICRqd2tzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNKV0tTZXQoJGp3a3NldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlS2V5U2V0cyhhcnJheSAkandrc2V0cyA9IFtdKQogICAgewogICAgICAgIHJldHVybiBuZXcgSldLU2V0cygkandrc2V0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlU3RvcmFibGVLZXkoJGZpbGVuYW1lLCBhcnJheSAkcGFyYW1ldGVycykKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFN0b3JhYmxlSldLKCRmaWxlbmFtZSwgJHBhcmFtZXRlcnMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVJvdGF0YWJsZUtleVNldCgkZmlsZW5hbWUsIGFycmF5ICRwYXJhbWV0ZXJzLCAkbmJfa2V5cywgJGludGVydmFsID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFJvdGF0YWJsZUpXS1NldCgkZmlsZW5hbWUsICRwYXJhbWV0ZXJzLCAkbmJfa2V5cywgJGludGVydmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVTdG9yYWJsZUtleVNldCgkZmlsZW5hbWUsIGFycmF5ICRwYXJhbWV0ZXJzLCAkbmJfa2V5cykKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFN0b3JhYmxlSldLU2V0KCRmaWxlbmFtZSwgJHBhcmFtZXRlcnMsICRuYl9rZXlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVLZXkoYXJyYXkgJGNvbmZpZykKICAgIHsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkY29uZmlnLCAna3R5JywgJ1RoZSBrZXkgImt0eSIgbXVzdCBiZSBzZXQnKTsKICAgICAgICAkc3VwcG9ydGVkX3R5cGVzID0gWydSU0EnID0+ICdSU0EnLCAnT0tQJyA9PiAnT0tQJywgJ0VDJyA9PiAnRUMnLCAnb2N0JyA9PiAnT2N0JywgJ25vbmUnID0+ICdOb25lJ107CiAgICAgICAgJGt0eSA9ICRjb25maWdbJ2t0eSddOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRzdXBwb3J0ZWRfdHlwZXMsICRrdHksIHNwcmludGYoJ1RoZSBrZXkgdHlwZSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuIFBsZWFzZSB1c2Ugb25lIG9mICVzJywgJGt0eSwganNvbl9lbmNvZGUoYXJyYXlfa2V5cygkc3VwcG9ydGVkX3R5cGVzKSkpKTsKICAgICAgICAkbWV0aG9kID0gc3ByaW50ZignY3JlYXRlJXNLZXknLCAkc3VwcG9ydGVkX3R5cGVzWyRrdHldKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OiRtZXRob2QoJGNvbmZpZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUlNBS2V5KGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHZhbHVlcywgJ3NpemUnLCAnVGhlIGtleSBzaXplIGlzIG5vdCBzZXQuJyk7CiAgICAgICAgJHNpemUgPSAkdmFsdWVzWydzaXplJ107CiAgICAgICAgdW5zZXQoJHZhbHVlc1snc2l6ZSddKTsKCiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKDAgPT09ICRzaXplICUgOCwgJ0ludmFsaWQga2V5IHNpemUuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyT3JFcXVhbFRoYW4oJHNpemUsIDM4NCwgJ0tleSBsZW5ndGggaXMgdG9vIHNob3J0LiBJdCBuZWVkcyB0byBiZSBhdCBsZWFzdCAzODQgYml0cy4nKTsKCiAgICAgICAgJGtleSA9IG9wZW5zc2xfcGtleV9uZXcoWwogICAgICAgICAgICAncHJpdmF0ZV9rZXlfYml0cycgPT4gJHNpemUsCiAgICAgICAgICAgICdwcml2YXRlX2tleV90eXBlJyA9PiBPUEVOU1NMX0tFWVRZUEVfUlNBLAogICAgICAgIF0pOwogICAgICAgIG9wZW5zc2xfcGtleV9leHBvcnQoJGtleSwgJG91dCk7CiAgICAgICAgJHJzYSA9IG5ldyBSU0FLZXkoJG91dCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICAkcnNhLT50b0FycmF5KCkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFQ0tleShhcnJheSAkdmFsdWVzKQogICAgewogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCR2YWx1ZXMsICdjcnYnLCAnVGhlIGN1cnZlIGlzIG5vdCBzZXQuJyk7CiAgICAgICAgJGN1cnZlID0gJHZhbHVlc1snY3J2J107CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnb3BlbnNzbF9nZXRfY3VydmVfbmFtZXMnKSkgewogICAgICAgICAgICAkYXJncyA9IFsKICAgICAgICAgICAgICAgICdjdXJ2ZV9uYW1lJyA9PiBzZWxmOjpnZXRPcGVuc3NsTmFtZSgkY3VydmUpLAogICAgICAgICAgICAgICAgJ3ByaXZhdGVfa2V5X3R5cGUnID0+IE9QRU5TU0xfS0VZVFlQRV9FQywKICAgICAgICAgICAgXTsKICAgICAgICAgICAgJGtleSA9IG9wZW5zc2xfcGtleV9uZXcoJGFyZ3MpOwogICAgICAgICAgICAkcmVzID0gb3BlbnNzbF9wa2V5X2V4cG9ydCgka2V5LCAkb3V0KTsKICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRyZXMsICdVbmFibGUgdG8gY3JlYXRlIHRoZSBrZXknKTsKCiAgICAgICAgICAgICRyc2EgPSBuZXcgRUNLZXkoJG91dCk7CiAgICAgICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICR2YWx1ZXMsCiAgICAgICAgICAgICAgICAkcnNhLT50b0FycmF5KCkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjdXJ2ZV9uYW1lID0gc2VsZjo6Z2V0TmlzdE5hbWUoJGN1cnZlKTsKICAgICAgICAgICAgJGdlbmVyYXRvciA9IEN1cnZlRmFjdG9yeTo6Z2V0R2VuZXJhdG9yQnlOYW1lKCRjdXJ2ZV9uYW1lKTsKICAgICAgICAgICAgJHByaXZhdGVfa2V5ID0gJGdlbmVyYXRvci0+Y3JlYXRlUHJpdmF0ZUtleSgpOwoKICAgICAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJHZhbHVlcywKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAgICAgICAgICdjcnYnID0+ICRjdXJ2ZSwKICAgICAgICAgICAgICAgICAgICAneCcgPT4gc2VsZjo6ZW5jb2RlVmFsdWUoJHByaXZhdGVfa2V5LT5nZXRQdWJsaWNLZXkoKS0+Z2V0UG9pbnQoKS0+Z2V0WCgpKSwKICAgICAgICAgICAgICAgICAgICAneScgPT4gc2VsZjo6ZW5jb2RlVmFsdWUoJHByaXZhdGVfa2V5LT5nZXRQdWJsaWNLZXkoKS0+Z2V0UG9pbnQoKS0+Z2V0WSgpKSwKICAgICAgICAgICAgICAgICAgICAnZCcgPT4gc2VsZjo6ZW5jb2RlVmFsdWUoJHByaXZhdGVfa2V5LT5nZXRTZWNyZXQoKSksCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVPY3RLZXkoYXJyYXkgJHZhbHVlcykKICAgIHsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkdmFsdWVzLCAnc2l6ZScsICdUaGUga2V5IHNpemUgaXMgbm90IHNldC4nKTsKICAgICAgICAkc2l6ZSA9ICR2YWx1ZXNbJ3NpemUnXTsKICAgICAgICB1bnNldCgkdmFsdWVzWydzaXplJ10pOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgwID09PSAkc2l6ZSAlIDgsICdJbnZhbGlkIGtleSBzaXplLicpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgJHZhbHVlcywKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJ2t0eScgPT4gJ29jdCcsCiAgICAgICAgICAgICAgICAnaycgPT4gQmFzZTY0VXJsOjplbmNvZGUocmFuZG9tX2J5dGVzKCRzaXplIC8gOCkpLAogICAgICAgICAgICBdCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT0tQS2V5KGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHZhbHVlcywgJ2NydicsICdUaGUgY3VydmUgaXMgbm90IHNldC4nKTsKICAgICAgICAkY3VydmUgPSAkdmFsdWVzWydjcnYnXTsKICAgICAgICBzd2l0Y2ggKCRjdXJ2ZSkgewogICAgICAgICAgICBjYXNlICdYMjU1MTknOgogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGZ1bmN0aW9uX2V4aXN0cygnY3VydmUyNTUxOV9wdWJsaWMnKSwgc3ByaW50ZignVW5zdXBwb3J0ZWQgIiVzIiBjdXJ2ZScsICRjdXJ2ZSkpOwogICAgICAgICAgICAgICAgJGQgPSByYW5kb21fYnl0ZXMoMzIpOwogICAgICAgICAgICAgICAgJHggPSBjdXJ2ZTI1NTE5X3B1YmxpYygkZCk7CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ0VkMjU1MTknOgogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGZ1bmN0aW9uX2V4aXN0cygnZWQyNTUxOV9wdWJsaWNrZXknKSwgc3ByaW50ZignVW5zdXBwb3J0ZWQgIiVzIiBjdXJ2ZScsICRjdXJ2ZSkpOwogICAgICAgICAgICAgICAgJGQgPSByYW5kb21fYnl0ZXMoMzIpOwogICAgICAgICAgICAgICAgJHggPSBlZDI1NTE5X3B1YmxpY2tleSgkZCk7CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdVbnN1cHBvcnRlZCAiJXMiIGN1cnZlJywgJGN1cnZlKSk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICR2YWx1ZXMsCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdrdHknID0+ICdPS1AnLAogICAgICAgICAgICAgICAgJ2NydicgPT4gJGN1cnZlLAogICAgICAgICAgICAgICAgJ3gnID0+IEJhc2U2NFVybDo6ZW5jb2RlKCR4KSwKICAgICAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkZCksCiAgICAgICAgICAgIF0KICAgICAgICApOwoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVOb25lS2V5KGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnbm9uZScsCiAgICAgICAgICAgICAgICAnYWxnJyA9PiAnbm9uZScsCiAgICAgICAgICAgICAgICAndXNlJyA9PiAnc2lnJywKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBlbmNvZGVWYWx1ZSgkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX3N0cnZhbCgkdmFsdWUpOwoKICAgICAgICByZXR1cm4gQmFzZTY0VXJsOjplbmNvZGUoc2VsZjo6Y29udmVydERlY1RvQmluKCR2YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0RGVjVG9CaW4oJHZhbHVlKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwoKICAgICAgICByZXR1cm4gaGV4MmJpbigkYWRhcHRlci0+ZGVjSGV4KCR2YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY3VydmUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRPcGVuc3NsTmFtZSgkY3VydmUpCiAgICB7CiAgICAgICAgc3dpdGNoICgkY3VydmUpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgcmV0dXJuICdwcmltZTI1NnYxJzsKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgcmV0dXJuICdzZWNwMzg0cjEnOwogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3NlY3A1MjFyMSc7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgY3VydmUgIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRjdXJ2ZSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGN1cnZlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0TmlzdE5hbWUoJGN1cnZlKQogICAgewogICAgICAgIHN3aXRjaCAoJGN1cnZlKSB7CiAgICAgICAgICAgIGNhc2UgJ1AtMjU2JzoKICAgICAgICAgICAgICAgIHJldHVybiBOaXN0Q3VydmU6Ok5BTUVfUDI1NjsKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgcmV0dXJuIE5pc3RDdXJ2ZTo6TkFNRV9QMzg0OwogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICByZXR1cm4gTmlzdEN1cnZlOjpOQU1FX1A1MjE7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgY3VydmUgIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRjdXJ2ZSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tVmFsdWVzKGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2tleXMnLCAkdmFsdWVzKSAmJiBpc19hcnJheSgkdmFsdWVzWydrZXlzJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgSldLU2V0KCR2YWx1ZXMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUNlcnRpZmljYXRlRmlsZSgkZmlsZSwgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IEtleUNvbnZlcnRlcjo6bG9hZEtleUZyb21DZXJ0aWZpY2F0ZUZpbGUoJGZpbGUpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgkdmFsdWVzLCAkYWRkaXRpb25hbF92YWx1ZXMpOwoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tQ2VydGlmaWNhdGUoJGNlcnRpZmljYXRlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkS2V5RnJvbUNlcnRpZmljYXRlKCRjZXJ0aWZpY2F0ZSk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21YNTA5UmVzb3VyY2UoJHJlcywgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IEtleUNvbnZlcnRlcjo6bG9hZEtleUZyb21YNTA5UmVzb3VyY2UoJHJlcyk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21LZXlGaWxlKCRmaWxlLCAkcGFzc3dvcmQgPSBudWxsLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkRnJvbUtleUZpbGUoJGZpbGUsICRwYXNzd29yZCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21LZXkoJGtleSwgJHBhc3N3b3JkID0gbnVsbCwgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IEtleUNvbnZlcnRlcjo6bG9hZEZyb21LZXkoJGtleSwgJHBhc3N3b3JkKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUpLVSgkamt1LCAkYWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24gPSBmYWxzZSwgQ2FjaGVJdGVtUG9vbEludGVyZmFjZSAkY2FjaGUgPSBudWxsLCAkdHRsID0gODY0MDAsICRhbGxvd19odHRwX2Nvbm5lY3Rpb24gPSBmYWxzZSkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEpLVUpXS1NldCgkamt1LCAkY2FjaGUsICR0dGwsICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbiwgJGFsbG93X2h0dHBfY29ubmVjdGlvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVg1VSgkeDV1LCAkYWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24gPSBmYWxzZSwgQ2FjaGVJdGVtUG9vbEludGVyZmFjZSAkY2FjaGUgPSBudWxsLCAkdHRsID0gODY0MDAsICRhbGxvd19odHRwX2Nvbm5lY3Rpb24gPSBmYWxzZSkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFg1VUpXS1NldCgkeDV1LCAkY2FjaGUsICR0dGwsICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbiwgJGFsbG93X2h0dHBfY29ubmVjdGlvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVg1QyhhcnJheSAkeDVjLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkRnJvbVg1QygkeDVjKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleVNldChKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQsICRrZXlfaW5kZXgpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppbnRlZ2VyKCRrZXlfaW5kZXgpOwoKICAgICAgICByZXR1cm4gJGp3a19zZXQtPmdldEtleSgka2V5X2luZGV4KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWKFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlOwp1c2UgUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2U7CgppbnRlcmZhY2UgSldLRmFjdG9yeUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQdWJsaWNLZXlTZXQoSldLU2V0SW50ZXJmYWNlICRqd2tzZXQpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2VbXSAkandrc2V0cwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUtleVNldHMoYXJyYXkgJGp3a3NldHMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQogICAgICogQHBhcmFtIGFycmF5ICAkcGFyYW1ldGVycwogICAgICogQHBhcmFtIGludCAgICAkbmJfa2V5cwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVN0b3JhYmxlS2V5U2V0KCRmaWxlbmFtZSwgYXJyYXkgJHBhcmFtZXRlcnMsICRuYl9rZXlzKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkZmlsZW5hbWUKICAgICAqIEBwYXJhbSBhcnJheSAgICAkcGFyYW1ldGVycwogICAgICogQHBhcmFtIGludCAgICAgICRuYl9rZXlzCiAgICAgKiBAcGFyYW0gaW50fG51bGwgJGludGVydmFsCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUm90YXRhYmxlS2V5U2V0KCRmaWxlbmFtZSwgYXJyYXkgJHBhcmFtZXRlcnMsICRuYl9rZXlzLCAkaW50ZXJ2YWwgPSBudWxsKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICRwYXJhbWV0ZXJzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlU3RvcmFibGVLZXkoJGZpbGVuYW1lLCBhcnJheSAkcGFyYW1ldGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbmZpZwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUtleShhcnJheSAkY29uZmlnKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIFZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleS4gTXVzdCBjb250YWluIGF0IGxlYXN0IHRoZSBpbmRleCAnc2l6ZScgd2l0aCB0aGUga2V5IHNpemUgaW4gYml0cwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVJTQUtleShhcnJheSAkdmFsdWVzKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIFZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleS4gTXVzdCBjb250YWluIGF0IGxlYXN0IHRoZSBpbmRleCAnY3J2JyB3aXRoIHRoZSBjdXJ2ZQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUVDS2V5KGFycmF5ICR2YWx1ZXMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgVmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5LiBNdXN0IGNvbnRhaW4gYXQgbGVhc3QgdGhlIGluZGV4ICdzaXplJyB3aXRoIHRoZSBrZXkgc2l6ZSBpbiBiaXRzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT2N0S2V5KGFycmF5ICR2YWx1ZXMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgVmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5LiBNdXN0IGNvbnRhaW4gYXQgbGVhc3QgdGhlIGluZGV4ICdjcnYnIHdpdGggdGhlIGN1cnZlCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT0tQS2V5KGFycmF5ICR2YWx1ZXMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlTm9uZUtleShhcnJheSAkdmFsdWVzKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlfFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tVmFsdWVzKGFycmF5ICR2YWx1ZXMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZQogICAgICogQHBhcmFtIGFycmF5ICAkYWRkaXRpb25hbF92YWx1ZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tQ2VydGlmaWNhdGVGaWxlKCRmaWxlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjZXJ0aWZpY2F0ZQogICAgICogQHBhcmFtIGFycmF5ICAkYWRkaXRpb25hbF92YWx1ZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tQ2VydGlmaWNhdGUoJGNlcnRpZmljYXRlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHJlcwogICAgICogQHBhcmFtIGFycmF5ICAgICRhZGRpdGlvbmFsX3ZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21YNTA5UmVzb3VyY2UoJHJlcywgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRmaWxlCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgJGFkZGl0aW9uYWxfdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleUZpbGUoJGZpbGUsICRwYXNzd29yZCA9IG51bGwsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAka2V5CiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgJGFkZGl0aW9uYWxfdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleSgka2V5LCAkcGFzc3dvcmQgPSBudWxsLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGprdQogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbgogICAgICogQHBhcmFtIFxQc3JcQ2FjaGVcQ2FjaGVJdGVtUG9vbEludGVyZmFjZXxudWxsICRjYWNoZQogICAgICogQHBhcmFtIGludHxudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0dGwKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dfaHR0cF9jb25uZWN0aW9uCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUpLVSgkamt1LCAkYWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24gPSBmYWxzZSwgQ2FjaGVJdGVtUG9vbEludGVyZmFjZSAkY2FjaGUgPSBudWxsLCAkdHRsID0gODY0MDAsICRhbGxvd19odHRwX2Nvbm5lY3Rpb24gPSBmYWxzZSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHg1dQogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbgogICAgICogQHBhcmFtIFxQc3JcQ2FjaGVcQ2FjaGVJdGVtUG9vbEludGVyZmFjZXxudWxsICRjYWNoZQogICAgICogQHBhcmFtIGludHxudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0dGwKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dfaHR0cF9jb25uZWN0aW9uCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVg1VSgkeDV1LCAkYWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24gPSBmYWxzZSwgQ2FjaGVJdGVtUG9vbEludGVyZmFjZSAkY2FjaGUgPSBudWxsLCAkdHRsID0gODY0MDAsICRhbGxvd19odHRwX2Nvbm5lY3Rpb24gPSBmYWxzZSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHg1YwogICAgICogQHBhcmFtIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21YNUMoYXJyYXkgJHg1YywgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICRrZXlfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5U2V0KEpXS1NldEludGVyZmFjZSAkandrX3NldCwgJGtleV9pbmRleCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWSFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKdXNlIEpvc2VcT2JqZWN0XEpXUzsKdXNlIEpvc2VcU2lnbmVyOwoKZmluYWwgY2xhc3MgSldTRmFjdG9yeSBpbXBsZW1lbnRzIEpXU0ZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTKCRwYXlsb2FkLCAkaXNfcGF5bG9hZF9kZXRhY2hlZCA9IGZhbHNlKQogICAgewogICAgICAgICRqd3MgPSBuZXcgSldTKCk7CiAgICAgICAgJGp3cyA9ICRqd3MtPndpdGhQYXlsb2FkKCRwYXlsb2FkKTsKICAgICAgICBpZiAodHJ1ZSA9PT0gJGlzX3BheWxvYWRfZGV0YWNoZWQpIHsKICAgICAgICAgICAgJGp3cyA9ICRqd3MtPndpdGhEZXRhY2hlZFBheWxvYWQoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkandzID0gJGp3cy0+d2l0aEF0dGFjaGVkUGF5bG9hZCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTVG9Db21wYWN0SlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJGp3cyA9IHNlbGY6OmNyZWF0ZUpXU0FuZFNpZ24oJHBheWxvYWQsICRzaWduYXR1cmVfa2V5LCAkcHJvdGVjdGVkX2hlYWRlcnMsIFtdKTsKCiAgICAgICAgcmV0dXJuICRqd3MtPnRvQ29tcGFjdEpTT04oMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTV2l0aERldGFjaGVkUGF5bG9hZFRvQ29tcGFjdEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzKQogICAgewogICAgICAgICRqd3MgPSBzZWxmOjpjcmVhdGVKV1NXaXRoRGV0YWNoZWRQYXlsb2FkQW5kU2lnbigkcGF5bG9hZCwgJHNpZ25hdHVyZV9rZXksICRwcm90ZWN0ZWRfaGVhZGVycywgW10pOwoKICAgICAgICByZXR1cm4gJGp3cy0+dG9Db21wYWN0SlNPTigwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVKV1NUb0ZsYXR0ZW5lZEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzID0gW10sICRoZWFkZXJzID0gW10pCiAgICB7CiAgICAgICAgJGp3cyA9IHNlbGY6OmNyZWF0ZUpXU0FuZFNpZ24oJHBheWxvYWQsICRzaWduYXR1cmVfa2V5LCAkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzKTsKCiAgICAgICAgcmV0dXJuICRqd3MtPnRvRmxhdHRlbmVkSlNPTigwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVKV1NXaXRoRGV0YWNoZWRQYXlsb2FkVG9GbGF0dGVuZWRKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRwcm90ZWN0ZWRfaGVhZGVycyA9IFtdLCAkaGVhZGVycyA9IFtdKQogICAgewogICAgICAgICRqd3MgPSBzZWxmOjpjcmVhdGVKV1NXaXRoRGV0YWNoZWRQYXlsb2FkQW5kU2lnbigkcGF5bG9hZCwgJHNpZ25hdHVyZV9rZXksICRwcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMpOwoKICAgICAgICByZXR1cm4gJGp3cy0+dG9GbGF0dGVuZWRKU09OKDApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTQW5kU2lnbigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMgPSBbXSwgJGhlYWRlcnMgPSBbXSkKICAgIHsKICAgICAgICAkandzID0gc2VsZjo6Y3JlYXRlSldTKCRwYXlsb2FkKTsKCiAgICAgICAgJGp3cyA9ICRqd3MtPmFkZFNpZ25hdHVyZUluZm9ybWF0aW9uKCRzaWduYXR1cmVfa2V5LCAkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzKTsKCiAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgPSBhcnJheV9tZXJnZSgkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzKTsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkY29tcGxldGVfaGVhZGVycywgJ2FsZycsICdObyAiYWxnIiBwYXJhbWV0ZXIgc2V0IGluIHRoZSBoZWFkZXInKTsKICAgICAgICAkc2lnbmVyID0gU2lnbmVyOjpjcmVhdGVTaWduZXIoWyRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXV0pOwogICAgICAgICRzaWduZXItPnNpZ24oJGp3cyk7CgogICAgICAgIHJldHVybiAkandzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTV2l0aERldGFjaGVkUGF5bG9hZEFuZFNpZ24oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzID0gW10sICRoZWFkZXJzID0gW10pCiAgICB7CiAgICAgICAgJGp3cyA9IHNlbGY6OmNyZWF0ZUpXUygkcGF5bG9hZCwgdHJ1ZSk7CgogICAgICAgICRqd3MgPSAkandzLT5hZGRTaWduYXR1cmVJbmZvcm1hdGlvbigkc2lnbmF0dXJlX2tleSwgJHByb3RlY3RlZF9oZWFkZXJzLCAkaGVhZGVycyk7CgogICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoJHByb3RlY3RlZF9oZWFkZXJzLCAkaGVhZGVycyk7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGNvbXBsZXRlX2hlYWRlcnMsICdhbGcnLCAnTm8gImFsZyIgcGFyYW1ldGVyIHNldCBpbiB0aGUgaGVhZGVyJyk7CiAgICAgICAgJHNpZ25lciA9IFNpZ25lcjo6Y3JlYXRlU2lnbmVyKFskY29tcGxldGVfaGVhZGVyc1snYWxnJ11dKTsKICAgICAgICAkc2lnbmVyLT5zaWduKCRqd3MpOwoKICAgICAgICByZXR1cm4gJGp3czsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWSFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKaW50ZXJmYWNlIEpXU0ZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHBheWxvYWQKICAgICAqIEBwYXJhbSBib29sICAkaXNfcGF5bG9hZF9kZXRhY2hlZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXUygkcGF5bG9hZCwgJGlzX3BheWxvYWRfZGV0YWNoZWQgPSBmYWxzZSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTVG9Db21wYWN0SlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXU1dpdGhEZXRhY2hlZFBheWxvYWRUb0NvbXBhY3RKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRwcm90ZWN0ZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXU1RvRmxhdHRlbmVkSlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMgPSBbXSwgJGhlYWRlcnMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXU1dpdGhEZXRhY2hlZFBheWxvYWRUb0ZsYXR0ZW5lZEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzID0gW10sICRoZWFkZXJzID0gW10pOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/JWTCreator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgpmaW5hbCBjbGFzcyBKV1RDcmVhdG9yIGltcGxlbWVudHMgSldUQ3JlYXRvckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcRW5jcnlwdGVySW50ZXJmYWNlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkZW5jcnlwdGVyID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcU2lnbmVySW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25lcjsKCiAgICAvKioKICAgICAqIEpXVENyZWF0b3IgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXFNpZ25lckludGVyZmFjZSAkc2lnbmVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTaWduZXJJbnRlcmZhY2UgJHNpZ25lcikKICAgIHsKICAgICAgICAkdGhpcy0+c2lnbmVyID0gJHNpZ25lcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxFbmNyeXB0ZXJJbnRlcmZhY2UgJGVuY3J5cHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5hYmxlRW5jcnlwdGlvblN1cHBvcnQoRW5jcnlwdGVySW50ZXJmYWNlICRlbmNyeXB0ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmVuY3J5cHRlciA9ICRlbmNyeXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaWduKCRwYXlsb2FkLCBhcnJheSAkc2lnbmF0dXJlX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5KQogICAgewogICAgICAgICRqd3MgPSBGYWN0b3J5XEpXU0ZhY3Rvcnk6OmNyZWF0ZUpXUygkcGF5bG9hZCk7CgogICAgICAgICRqd3MgPSAkandzLT5hZGRTaWduYXR1cmVJbmZvcm1hdGlvbigkc2lnbmF0dXJlX2tleSwgJHNpZ25hdHVyZV9wcm90ZWN0ZWRfaGVhZGVycyk7CiAgICAgICAgJHRoaXMtPnNpZ25lci0+c2lnbigkandzKTsKCiAgICAgICAgcmV0dXJuICRqd3MtPnRvQ29tcGFjdEpTT04oMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0KCRwYXlsb2FkLCBhcnJheSAkZW5jcnlwdGlvbl9wcm90ZWN0ZWRfaGVhZGVycywgT2JqZWN0XEpXS0ludGVyZmFjZSAkZW5jcnlwdGlvbl9rZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCR0aGlzLT5pc0VuY3J5cHRpb25TdXBwb3J0RW5hYmxlZCgpLCAnVGhlIGVuY3J5cHRpb24gc3VwcG9ydCBpcyBub3QgZW5hYmxlZCcpOwoKICAgICAgICAkandlID0gRmFjdG9yeVxKV0VGYWN0b3J5OjpjcmVhdGVKV0UoJHBheWxvYWQsICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzKTsKICAgICAgICAkandlID0gJGp3ZS0+YWRkUmVjaXBpZW50SW5mb3JtYXRpb24oJGVuY3J5cHRpb25fa2V5KTsKICAgICAgICAkdGhpcy0+ZW5jcnlwdGVyLT5lbmNyeXB0KCRqd2UpOwoKICAgICAgICByZXR1cm4gJGp3ZS0+dG9Db21wYWN0SlNPTigwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ25BbmRFbmNyeXB0KCRwYXlsb2FkLCBhcnJheSAkc2lnbmF0dXJlX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkZW5jcnlwdGlvbl9wcm90ZWN0ZWRfaGVhZGVycywgT2JqZWN0XEpXS0ludGVyZmFjZSAkZW5jcnlwdGlvbl9rZXkpCiAgICB7CiAgICAgICAgJGp3cyA9ICR0aGlzLT5zaWduKCRwYXlsb2FkLCAkc2lnbmF0dXJlX3Byb3RlY3RlZF9oZWFkZXJzLCAkc2lnbmF0dXJlX2tleSk7CiAgICAgICAgJGp3ZSA9ICR0aGlzLT5lbmNyeXB0KCRqd3MsICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzLCAkZW5jcnlwdGlvbl9rZXkpOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZFNpZ25hdHVyZUFsZ29yaXRobXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmVyLT5nZXRTdXBwb3J0ZWRTaWduYXR1cmVBbGdvcml0aG1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlID09PSAkdGhpcy0+aXNFbmNyeXB0aW9uU3VwcG9ydEVuYWJsZWQoKSA/IFtdIDogJHRoaXMtPmVuY3J5cHRlci0+Z2V0U3VwcG9ydGVkS2V5RW5jcnlwdGlvbkFsZ29yaXRobXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlID09PSAkdGhpcy0+aXNFbmNyeXB0aW9uU3VwcG9ydEVuYWJsZWQoKSA/IFtdIDogJHRoaXMtPmVuY3J5cHRlci0+Z2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDb21wcmVzc2lvbk1ldGhvZHMoKQogICAgewogICAgICAgIHJldHVybiBmYWxzZSA9PT0gJHRoaXMtPmlzRW5jcnlwdGlvblN1cHBvcnRFbmFibGVkKCkgPyBbXSA6ICR0aGlzLT5lbmNyeXB0ZXItPmdldFN1cHBvcnRlZENvbXByZXNzaW9uTWV0aG9kcygpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VuY3J5cHRpb25TdXBwb3J0RW5hYmxlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgIT09ICR0aGlzLT5lbmNyeXB0ZXI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/JWTCreatorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKaW50ZXJmYWNlIEpXVENyZWF0b3JJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcRW5jcnlwdGVySW50ZXJmYWNlICRlbmNyeXB0ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuYWJsZUVuY3J5cHRpb25TdXBwb3J0KEVuY3J5cHRlckludGVyZmFjZSAkZW5jcnlwdGVyKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICAgICRwYXlsb2FkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2lnbmF0dXJlX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaWduKCRwYXlsb2FkLCBhcnJheSAkc2lnbmF0dXJlX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRwYXlsb2FkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZW5jcnlwdGlvbl9wcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGVuY3J5cHRpb25fa2V5CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHQoJHBheWxvYWQsIGFycmF5ICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRlbmNyeXB0aW9uX2tleSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHNpZ25hdHVyZV9wcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkZW5jcnlwdGlvbl9rZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbkFuZEVuY3J5cHQoJHBheWxvYWQsIGFycmF5ICRzaWduYXR1cmVfcHJvdGVjdGVkX2hlYWRlcnMsIE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRlbmNyeXB0aW9uX2tleSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRTaWduYXR1cmVBbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDb21wcmVzc2lvbk1ldGhvZHMoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbmNyeXB0aW9uU3VwcG9ydEVuYWJsZWQoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/JWTLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgpmaW5hbCBjbGFzcyBKV1RMb2FkZXIgaW1wbGVtZW50cyBKV1RMb2FkZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXExvYWRlckludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRsb2FkZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkY2hlY2tlcl9tYW5hZ2VyOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxEZWNyeXB0ZXJJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlICRkZWNyeXB0ZXIgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxWZXJpZmllckludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICR2ZXJpZmllcjsKCiAgICAvKioKICAgICAqIEpXVExvYWRlciBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ2hlY2tlclxDaGVja2VyTWFuYWdlckludGVyZmFjZSAkY2hlY2tlcl9tYW5hZ2VyCiAgICAgKiBAcGFyYW0gXEpvc2VcVmVyaWZpZXJJbnRlcmZhY2UgICAgICAgICAgICAgICAkdmVyaWZpZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UgJGNoZWNrZXJfbWFuYWdlciwgVmVyaWZpZXJJbnRlcmZhY2UgJHZlcmlmaWVyKQogICAgewogICAgICAgICR0aGlzLT5jaGVja2VyX21hbmFnZXIgPSAkY2hlY2tlcl9tYW5hZ2VyOwogICAgICAgICR0aGlzLT52ZXJpZmllciA9ICR2ZXJpZmllcjsKICAgICAgICAkdGhpcy0+bG9hZGVyID0gbmV3IExvYWRlcigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5hYmxlRGVjcnlwdGlvblN1cHBvcnQoRGVjcnlwdGVySW50ZXJmYWNlICRkZWNyeXB0ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmRlY3J5cHRlciA9ICRkZWNyeXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRTaWduYXR1cmVBbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZlcmlmaWVyLT5nZXRTdXBwb3J0ZWRTaWduYXR1cmVBbGdvcml0aG1zKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRGVjcnlwdGlvblN1cHBvcnRFbmFibGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRoaXMtPmRlY3J5cHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZEtleUVuY3J5cHRpb25BbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2UgPT09ICR0aGlzLT5pc0RlY3J5cHRpb25TdXBwb3J0RW5hYmxlZCgpID8gW10gOiAkdGhpcy0+ZGVjcnlwdGVyLT5nZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2UgPT09ICR0aGlzLT5pc0RlY3J5cHRpb25TdXBwb3J0RW5hYmxlZCgpID8gW10gOiAkdGhpcy0+ZGVjcnlwdGVyLT5nZXRTdXBwb3J0ZWRDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZENvbXByZXNzaW9uTWV0aG9kcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlID09PSAkdGhpcy0+aXNEZWNyeXB0aW9uU3VwcG9ydEVuYWJsZWQoKSA/IFtdIDogJHRoaXMtPmRlY3J5cHRlci0+Z2V0U3VwcG9ydGVkQ29tcHJlc3Npb25NZXRob2RzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkKCRhc3NlcnRpb24sIE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGVuY3J5cHRpb25fa2V5X3NldCA9IG51bGwsICRpc19lbmNyeXB0aW9uX3JlcXVpcmVkID0gZmFsc2UpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJGFzc2VydGlvbik7CiAgICAgICAgQXNzZXJ0aW9uOjpib29sZWFuKCRpc19lbmNyeXB0aW9uX3JlcXVpcmVkKTsKICAgICAgICAkand0ID0gJHRoaXMtPmxvYWRlci0+bG9hZCgkYXNzZXJ0aW9uKTsKICAgICAgICBpZiAoJGp3dCBpbnN0YW5jZW9mIE9iamVjdFxKV0VJbnRlcmZhY2UpIHsKICAgICAgICAgICAgQXNzZXJ0aW9uOjpub3ROdWxsKCRlbmNyeXB0aW9uX2tleV9zZXQsICdFbmNyeXB0aW9uIGtleSBzZXQgaXMgbm90IGF2YWlsYWJsZS4nKTsKICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCR0aGlzLT5pc0RlY3J5cHRpb25TdXBwb3J0RW5hYmxlZCgpLCAnRW5jcnlwdGlvbiBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLicpOwogICAgICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJGp3dC0+Z2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVyKCdhbGcnKSwgJHRoaXMtPmdldFN1cHBvcnRlZEtleUVuY3J5cHRpb25BbGdvcml0aG1zKCksIHNwcmludGYoJ1RoZSBrZXkgZW5jcnlwdGlvbiBhbGdvcml0aG0gIiVzIiBpcyBub3QgYWxsb3dlZC4nLCAkand0LT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXIoJ2FsZycpKSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6aW5BcnJheSgkand0LT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXIoJ2VuYycpLCAkdGhpcy0+Z2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCksIHNwcmludGYoJ1RoZSBjb250ZW50IGVuY3J5cHRpb24gYWxnb3JpdGhtICIlcyIgaXMgbm90IGFsbG93ZWQgb3Igbm90IHN1cHBvcnRlZC4nLCAkand0LT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXIoJ2VuYycpKSk7CiAgICAgICAgICAgICRqd3QgPSAkdGhpcy0+ZGVjcnlwdEFzc2VydGlvbigkand0LCAkZW5jcnlwdGlvbl9rZXlfc2V0KTsKICAgICAgICB9IGVsc2VpZiAodHJ1ZSA9PT0gJGlzX2VuY3J5cHRpb25fcmVxdWlyZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBhc3NlcnRpb24gbXVzdCBiZSBlbmNyeXB0ZWQuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGp3dDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShPYmplY3RcSldTSW50ZXJmYWNlICRqd3MsIE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXlfc2V0LCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppbkFycmF5KCRqd3MtPmdldFNpZ25hdHVyZSgwKS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCdhbGcnKSwgJHRoaXMtPmdldFN1cHBvcnRlZFNpZ25hdHVyZUFsZ29yaXRobXMoKSwgc3ByaW50ZignVGhlIHNpZ25hdHVyZSBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkIG9yIG5vdCBhbGxvd2VkLicsICRqd3MtPmdldFNpZ25hdHVyZSgwKS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCdhbGcnKSkpOwoKICAgICAgICAkaW5kZXggPSBudWxsOwogICAgICAgICR0aGlzLT52ZXJpZmllci0+dmVyaWZ5V2l0aEtleVNldCgkandzLCAkc2lnbmF0dXJlX2tleV9zZXQsICRkZXRhY2hlZF9wYXlsb2FkLCAkaW5kZXgpOwogICAgICAgIEFzc2VydGlvbjo6bm90TnVsbCgkaW5kZXgsICdKV1Mgc2lnbmF0dXJlKHMpIHZlcmlmaWNhdGlvbiBmYWlsZWQuJyk7CiAgICAgICAgJHRoaXMtPmNoZWNrZXJfbWFuYWdlci0+Y2hlY2tKV1MoJGp3cywgJGluZGV4KTsKCiAgICAgICAgcmV0dXJuICRpbmRleDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICAgICRqd2UKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRlbmNyeXB0aW9uX2tleV9zZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkZWNyeXB0QXNzZXJ0aW9uKE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZSwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkZW5jcnlwdGlvbl9rZXlfc2V0KQogICAgewogICAgICAgICR0aGlzLT5kZWNyeXB0ZXItPmRlY3J5cHRVc2luZ0tleVNldCgkandlLCAkZW5jcnlwdGlvbl9rZXlfc2V0KTsKCiAgICAgICAgJGp3cyA9ICR0aGlzLT5sb2FkZXItPmxvYWQoJGp3ZS0+Z2V0UGF5bG9hZCgpKTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkandzLCBPYmplY3RcSldTSW50ZXJmYWNlOjpjbGFzcywgJ1RoZSBlbmNyeXB0ZWQgYXNzZXJ0aW9uIGRvZXMgbm90IGNvbnRhaW4gYSBKV1MuJyk7CgogICAgICAgIHJldHVybiAkandzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/JWTLoaderInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKaW50ZXJmYWNlIEpXVExvYWRlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxEZWNyeXB0ZXJJbnRlcmZhY2UgJGRlY3J5cHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5hYmxlRGVjcnlwdGlvblN1cHBvcnQoRGVjcnlwdGVySW50ZXJmYWNlICRkZWNyeXB0ZXIpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0RlY3J5cHRpb25TdXBwb3J0RW5hYmxlZCgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkS2V5RW5jcnlwdGlvbkFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29tcHJlc3Npb25NZXRob2RzKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhc3NlcnRpb24KICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlfG51bGwgJGVuY3J5cHRpb25fa2V5X3NldAogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfZW5jcnlwdGlvbl9yZXF1aXJlZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZCgkYXNzZXJ0aW9uLCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRlbmNyeXB0aW9uX2tleV9zZXQgPSBudWxsLCAkaXNfZW5jcnlwdGlvbl9yZXF1aXJlZCA9IGZhbHNlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICRqd3MKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRzaWduYXR1cmVfa2V5X3NldAogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5KE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkc2lnbmF0dXJlX2tleV9zZXQsICRkZXRhY2hlZF9wYXlsb2FkID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/KeyConverter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/KeyConverter/ECKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEtleUNvbnZlcnRlcjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEZHXEFTTjFcRXhwbGljaXRseVRhZ2dlZE9iamVjdDsKdXNlIEZHXEFTTjFcT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPY3RldFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgRUNLZXkgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRwcml2YXRlID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2V8c3RyaW5nfGFycmF5ICRkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZGF0YSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgIGlmICgkZGF0YSBpbnN0YW5jZW9mIEpXS0ludGVyZmFjZSkgewogICAgICAgICAgICAkdGhpcy0+bG9hZEpXSygkZGF0YS0+Z2V0QWxsKCkpOwogICAgICAgIH0gZWxzZWlmIChpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJGRhdGEpKSB7CiAgICAgICAgICAgICR0aGlzLT5sb2FkUEVNKCRkYXRhKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQnKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnByaXZhdGUgPSBpc3NldCgkdGhpcy0+dmFsdWVzWydkJ10pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YQogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICogQHRocm93cyBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRQRU0oJGRhdGEpCiAgICB7CiAgICAgICAgJGRhdGEgPSBiYXNlNjRfZGVjb2RlKHByZWdfcmVwbGFjZSgnIy0uKi18XHJ8XG4jJywgJycsICRkYXRhKSk7CiAgICAgICAgJGFzbk9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkZGF0YSk7CgogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRhc25PYmplY3QsIFNlcXVlbmNlOjpjbGFzcyk7CiAgICAgICAgJGNoaWxkcmVuID0gJGFzbk9iamVjdC0+Z2V0Q2hpbGRyZW4oKTsKICAgICAgICBpZiAoc2VsZjo6aXNQS0NTOCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgICRjaGlsZHJlbiA9IHNlbGY6OmxvYWRQS0NTOCgkY2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgaWYgKDQgPT09IGNvdW50KCRjaGlsZHJlbikpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5sb2FkUHJpdmF0ZVBFTSgkY2hpbGRyZW4pOwogICAgICAgIH0gZWxzZWlmICgyID09PSBjb3VudCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bG9hZFB1YmxpY1BFTSgkY2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY2hpbGRyZW4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9hZFBLQ1M4KGFycmF5ICRjaGlsZHJlbikKICAgIHsKICAgICAgICAkYmluYXJ5ID0gaGV4MmJpbigkY2hpbGRyZW5bMl0tPmdldENvbnRlbnQoKSk7CiAgICAgICAgJGFzbk9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5KTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkYXNuT2JqZWN0LCBTZXF1ZW5jZTo6Y2xhc3MpOwoKICAgICAgICByZXR1cm4gJGFzbk9iamVjdC0+Z2V0Q2hpbGRyZW4oKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY2hpbGRyZW4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc1BLQ1M4KGFycmF5ICRjaGlsZHJlbikKICAgIHsKICAgICAgICBpZiAoMyAhPT0gY291bnQoJGNoaWxkcmVuKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkY2xhc3NlcyA9IFswID0+IEludGVnZXI6OmNsYXNzLCAxID0+IFNlcXVlbmNlOjpjbGFzcywgMiA9PiBPY3RldFN0cmluZzo6Y2xhc3NdOwogICAgICAgIGZvcmVhY2ggKCRjbGFzc2VzIGFzICRrID0+ICRjbGFzcykgewogICAgICAgICAgICBpZiAoISRjaGlsZHJlblska10gaW5zdGFuY2VvZiAkY2xhc3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGp3awogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRKV0soYXJyYXkgJGp3aykKICAgIHsKICAgICAgICBBc3NlcnRpb246OnRydWUoYXJyYXlfa2V5X2V4aXN0cygna3R5JywgJGp3ayksICdKV0sgaXMgbm90IGFuIEVsbGlwdGljIEN1cnZlIGtleScpOwogICAgICAgIEFzc2VydGlvbjo6ZXEoJGp3a1sna3R5J10sICdFQycsICdKV0sgaXMgbm90IGFuIEVsbGlwdGljIEN1cnZlIGtleScpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZShhcnJheV9rZXlfZXhpc3RzKCdjcnYnLCAkandrKSwgJ0N1cnZlIHBhcmFtZXRlciBpcyBtaXNzaW5nJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGFycmF5X2tleV9leGlzdHMoJ3gnLCAkandrKSwgJ1BvaW50IHBhcmFtZXRlcnMgYXJlIG1pc3NpbmcnKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoYXJyYXlfa2V5X2V4aXN0cygneScsICRqd2spLCAnUG9pbnQgcGFyYW1ldGVycyBhcmUgbWlzc2luZycpOwoKICAgICAgICAkdGhpcy0+dmFsdWVzID0gJGp3azsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZCcsICRqd2spKSB7CiAgICAgICAgICAgICR0aGlzLT5pbml0UHJpdmF0ZUtleSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5pbml0UHVibGljS2V5KCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW5pdFB1YmxpY0tleSgpCiAgICB7CiAgICAgICAgJG9pZF9zZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRvaWRfc2VxdWVuY2UtPmFkZENoaWxkKG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuODQwLjEwMDQ1LjIuMScpKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgT2JqZWN0SWRlbnRpZmllcigkdGhpcy0+Z2V0T0lEKCR0aGlzLT52YWx1ZXNbJ2NydiddKSkpOwogICAgICAgICR0aGlzLT5hZGRDaGlsZCgkb2lkX3NlcXVlbmNlKTsKCiAgICAgICAgJGJpdHMgPSAnMDQnOwogICAgICAgICRiaXRzIC49IGJpbjJoZXgoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1sneCddKSk7CiAgICAgICAgJGJpdHMgLj0gYmluMmhleChCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWyd5J10pKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQobmV3IEJpdFN0cmluZygkYml0cykpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW5pdFByaXZhdGVLZXkoKQogICAgewogICAgICAgICR0aGlzLT5hZGRDaGlsZChuZXcgSW50ZWdlcigxKSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKG5ldyBPY3RldFN0cmluZyhiaW4yaGV4KEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ2QnXSkpKSk7CgogICAgICAgICRvaWQgPSBuZXcgT2JqZWN0SWRlbnRpZmllcigkdGhpcy0+Z2V0T0lEKCR0aGlzLT52YWx1ZXNbJ2NydiddKSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKG5ldyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KDAsICRvaWQpKTsKCiAgICAgICAgJGJpdHMgPSAnMDQnOwogICAgICAgICRiaXRzIC49IGJpbjJoZXgoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1sneCddKSk7CiAgICAgICAgJGJpdHMgLj0gYmluMmhleChCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWyd5J10pKTsKICAgICAgICAkYml0ID0gbmV3IEJpdFN0cmluZygkYml0cyk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKG5ldyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KDEsICRiaXQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkY2hpbGRyZW4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9hZFB1YmxpY1BFTShhcnJheSAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGNoaWxkcmVuWzBdLCBTZXF1ZW5jZTo6Y2xhc3MsICdVbnN1cHBvcnRlZCBrZXkgdHlwZScpOwoKICAgICAgICAkc3ViID0gJGNoaWxkcmVuWzBdLT5nZXRDaGlsZHJlbigpOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRzdWJbMF0sIE9iamVjdElkZW50aWZpZXI6OmNsYXNzLCAnVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKICAgICAgICBBc3NlcnRpb246OmVxKCcxLjIuODQwLjEwMDQ1LjIuMScsICRzdWJbMF0tPmdldENvbnRlbnQoKSwgJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CgogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRzdWJbMV0sIE9iamVjdElkZW50aWZpZXI6OmNsYXNzLCAnVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkY2hpbGRyZW5bMV0sIEJpdFN0cmluZzo6Y2xhc3MsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CgogICAgICAgICRiaXRzID0gJGNoaWxkcmVuWzFdLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGJpdHNfbGVuZ3RoID0gbWJfc3RybGVuKCRiaXRzLCAnOGJpdCcpOwoKICAgICAgICBBc3NlcnRpb246OmVxKCcwNCcsIG1iX3N1YnN0cigkYml0cywgMCwgMiwgJzhiaXQnKSwgJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CgogICAgICAgICR0aGlzLT52YWx1ZXNbJ2t0eSddID0gJ0VDJzsKICAgICAgICAkdGhpcy0+dmFsdWVzWydjcnYnXSA9ICR0aGlzLT5nZXRDdXJ2ZSgkc3ViWzFdLT5nZXRDb250ZW50KCkpOwogICAgICAgICR0aGlzLT52YWx1ZXNbJ3gnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKGhleDJiaW4obWJfc3Vic3RyKCRiaXRzLCAyLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpKSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1sneSddID0gQmFzZTY0VXJsOjplbmNvZGUoaGV4MmJpbihtYl9zdWJzdHIoJGJpdHMsICgkYml0c19sZW5ndGggLSAyKSAvIDIgKyAyLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcT2JqZWN0ICRjaGlsZHJlbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZlcmlmeVZlcnNpb24oT2JqZWN0ICRjaGlsZHJlbikKICAgIHsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkY2hpbGRyZW4sIEludGVnZXI6OmNsYXNzLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwogICAgICAgIEFzc2VydGlvbjo6ZXEoMSwgJGNoaWxkcmVuLT5nZXRDb250ZW50KCksICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcT2JqZWN0ICRjaGlsZHJlbgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAkeAogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAkeQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFhBbmRZKE9iamVjdCAkY2hpbGRyZW4sICYkeCwgJiR5KQogICAgewogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjaGlsZHJlbiwgRXhwbGljaXRseVRhZ2dlZE9iamVjdDo6Y2xhc3MsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0FycmF5KCRjaGlsZHJlbi0+Z2V0Q29udGVudCgpLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjaGlsZHJlbi0+Z2V0Q29udGVudCgpWzBdLCBCaXRTdHJpbmc6OmNsYXNzLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwoKICAgICAgICAkYml0cyA9ICRjaGlsZHJlbi0+Z2V0Q29udGVudCgpWzBdLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGJpdHNfbGVuZ3RoID0gbWJfc3RybGVuKCRiaXRzLCAnOGJpdCcpOwoKICAgICAgICBBc3NlcnRpb246OmVxKCcwNCcsIG1iX3N1YnN0cigkYml0cywgMCwgMiwgJzhiaXQnKSwgJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CgogICAgICAgICR4ID0gbWJfc3Vic3RyKCRiaXRzLCAyLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpOwogICAgICAgICR5ID0gbWJfc3Vic3RyKCRiaXRzLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyICsgMiwgKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiwgJzhiaXQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcRkdcQVNOMVxPYmplY3QgJGNoaWxkcmVuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXREKE9iamVjdCAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGNoaWxkcmVuLCAnXEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nJywgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKCiAgICAgICAgcmV0dXJuICRjaGlsZHJlbi0+Z2V0Q29udGVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRjaGlsZHJlbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkUHJpdmF0ZVBFTShhcnJheSAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgJHRoaXMtPnZlcmlmeVZlcnNpb24oJGNoaWxkcmVuWzBdKTsKICAgICAgICAkeCA9IG51bGw7CiAgICAgICAgJHkgPSBudWxsOwogICAgICAgICRkID0gJHRoaXMtPmdldEQoJGNoaWxkcmVuWzFdKTsKICAgICAgICAkdGhpcy0+Z2V0WEFuZFkoJGNoaWxkcmVuWzNdLCAkeCwgJHkpOwoKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkY2hpbGRyZW5bMl0sIEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6OmNsYXNzLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwogICAgICAgIEFzc2VydGlvbjo6aXNBcnJheSgkY2hpbGRyZW5bMl0tPmdldENvbnRlbnQoKSwgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkY2hpbGRyZW5bMl0tPmdldENvbnRlbnQoKVswXSwgT2JqZWN0SWRlbnRpZmllcjo6Y2xhc3MsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CgogICAgICAgICRjdXJ2ZSA9ICRjaGlsZHJlblsyXS0+Z2V0Q29udGVudCgpWzBdLT5nZXRDb250ZW50KCk7CgogICAgICAgICR0aGlzLT5wcml2YXRlID0gdHJ1ZTsKICAgICAgICAkdGhpcy0+dmFsdWVzWydrdHknXSA9ICdFQyc7CiAgICAgICAgJHRoaXMtPnZhbHVlc1snY3J2J10gPSAkdGhpcy0+Z2V0Q3VydmUoJGN1cnZlKTsKICAgICAgICAkdGhpcy0+dmFsdWVzWydkJ10gPSBCYXNlNjRVcmw6OmVuY29kZShoZXgyYmluKCRkKSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1sneCddID0gQmFzZTY0VXJsOjplbmNvZGUoaGV4MmJpbigkeCkpOwogICAgICAgICR0aGlzLT52YWx1ZXNbJ3knXSA9IEJhc2U2NFVybDo6ZW5jb2RlKGhleDJiaW4oJHkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcml2YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaXZhdGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcS2V5Q29udmVydGVyXEVDS2V5ICRwcml2YXRlCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxLZXlDb252ZXJ0ZXJcRUNLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1B1YmxpYyhzZWxmICRwcml2YXRlKQogICAgewogICAgICAgICRkYXRhID0gJHByaXZhdGUtPnRvQXJyYXkoKTsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZCcsICRkYXRhKSkgewogICAgICAgICAgICB1bnNldCgkZGF0YVsnZCddKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b1BFTSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9ERVIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0QmluYXJ5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9QRU0oKQogICAgewogICAgICAgICRyZXN1bHQgPSAnLS0tLS1CRUdJTiAnLigkdGhpcy0+cHJpdmF0ZSA/ICdFQyBQUklWQVRFJyA6ICdQVUJMSUMnKS4nIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRyZXN1bHQgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkdGhpcy0+Z2V0QmluYXJ5KCkpLCA2NCwgUEhQX0VPTCk7CiAgICAgICAgJHJlc3VsdCAuPSAnLS0tLS1FTkQgJy4oJHRoaXMtPnByaXZhdGUgPyAnRUMgUFJJVkFURScgOiAnUFVCTElDJykuJyBLRVktLS0tLScuUEhQX0VPTDsKCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJGN1cnZlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRPSUQoJGN1cnZlKQogICAgewogICAgICAgICRjdXJ2ZXMgPSAkdGhpcy0+Z2V0U3VwcG9ydGVkQ3VydmVzKCk7CiAgICAgICAgJG9pZCA9IGFycmF5X2tleV9leGlzdHMoJGN1cnZlLCAkY3VydmVzKSA/ICRjdXJ2ZXNbJGN1cnZlXSA6IG51bGw7CgogICAgICAgIEFzc2VydGlvbjo6bm90TnVsbCgkb2lkLCAnVW5zdXBwb3J0ZWQgY3VydmUnKTsKCiAgICAgICAgcmV0dXJuICRvaWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEN1cnZlKCRvaWQpCiAgICB7CiAgICAgICAgJGN1cnZlcyA9ICR0aGlzLT5nZXRTdXBwb3J0ZWRDdXJ2ZXMoKTsKICAgICAgICAkY3VydmUgPSBhcnJheV9zZWFyY2goJG9pZCwgJGN1cnZlcywgdHJ1ZSk7CiAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJGN1cnZlLCAnVW5zdXBwb3J0ZWQgT0lEJyk7CgogICAgICAgIHJldHVybiAkY3VydmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ3VydmVzKCkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnUC0yNTYnID0+ICcxLjIuODQwLjEwMDQ1LjMuMS43JywKICAgICAgICAgICAgJ1AtMzg0JyA9PiAnMS4zLjEzMi4wLjM0JywKICAgICAgICAgICAgJ1AtNTIxJyA9PiAnMS4zLjEzMi4wLjM1JywKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/KeyConverter/KeyConverter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEtleUNvbnZlcnRlcjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBUaGlzIGNsYXNzIHdpbGwgaGVscCB5b3UgdG8gbG9hZCBhbiBFQyBrZXkgb3IgYSBSU0Ega2V5L2NlcnRpZmljYXRlIChwcml2YXRlIG9yIHB1YmxpYykgYW5kIGdldCB2YWx1ZXMgdG8gY3JlYXRlIGEgSldLIG9iamVjdC4KICovCmZpbmFsIGNsYXNzIEtleUNvbnZlcnRlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEtleUZyb21DZXJ0aWZpY2F0ZUZpbGUoJGZpbGUpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGZpbGVfZXhpc3RzKCRmaWxlKSwgc3ByaW50ZignRmlsZSAiJXMiIGRvZXMgbm90IGV4aXN0LicsICRmaWxlKSk7CiAgICAgICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgogICAgICAgIHJldHVybiBzZWxmOjpsb2FkS2V5RnJvbUNlcnRpZmljYXRlKCRjb250ZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNlcnRpZmljYXRlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnRpZmljYXRlKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3g1MDlfcmVhZCgkY2VydGlmaWNhdGUpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgJGNlcnRpZmljYXRlID0gc2VsZjo6Y29udmVydERlclRvUGVtKCRjZXJ0aWZpY2F0ZSk7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3g1MDlfcmVhZCgkY2VydGlmaWNhdGUpOwogICAgICAgIH0KICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSAkcmVzLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGNlcnRpZmljYXRlJyk7CgogICAgICAgICR2YWx1ZXMgPSBzZWxmOjpsb2FkS2V5RnJvbVg1MDlSZXNvdXJjZSgkcmVzKTsKICAgICAgICBvcGVuc3NsX3g1MDlfZnJlZSgkcmVzKTsKCiAgICAgICAgcmV0dXJuICR2YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHJlcwogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbVg1MDlSZXNvdXJjZSgkcmVzKQogICAgewogICAgICAgICRrZXkgPSBvcGVuc3NsX2dldF9wdWJsaWNrZXkoJHJlcyk7CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRrZXkpOwogICAgICAgIGlmIChpc3NldCgkZGV0YWlsc1sna2V5J10pKSB7CiAgICAgICAgICAgICR2YWx1ZXMgPSBzZWxmOjpsb2FkS2V5RnJvbVBFTSgkZGV0YWlsc1sna2V5J10pOwogICAgICAgICAgICBvcGVuc3NsX3g1MDlfZXhwb3J0KCRyZXMsICRvdXQpOwogICAgICAgICAgICAkdmFsdWVzWyd4NWMnXSA9IFt0cmltKHByZWdfcmVwbGFjZSgnIy0uKi0jJywgJycsICRvdXQpKV07CgogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQnKSkgewogICAgICAgICAgICAgICAgJHZhbHVlc1sneDV0J10gPSBCYXNlNjRVcmw6OmVuY29kZShvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQoJHJlcywgJ3NoYTEnLCB0cnVlKSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyd4NXQjMjU2J10gPSBCYXNlNjRVcmw6OmVuY29kZShvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQoJHJlcywgJ3NoYTI1NicsIHRydWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG9wZW5zc2xfeDUwOV9leHBvcnQoJHJlcywgJHBlbSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyd4NXQnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmNhbGN1bGF0ZVg1MDlGaW5nZXJwcmludCgkcGVtLCAnc2hhMScsIHRydWUpKTsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJ3g1dCMyNTYnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmNhbGN1bGF0ZVg1MDlGaW5nZXJwcmludCgkcGVtLCAnc2hhMjU2JywgdHJ1ZSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHZhbHVlczsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUgY2VydGlmaWNhdGUnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZmlsZQogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRwYXNzd29yZAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkRnJvbUtleUZpbGUoJGZpbGUsICRwYXNzd29yZCA9IG51bGwpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgogICAgICAgIHJldHVybiBzZWxmOjpsb2FkRnJvbUtleSgkY29udGVudCwgJHBhc3N3b3JkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAka2V5CiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRGcm9tS2V5KCRrZXksICRwYXNzd29yZCA9IG51bGwpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRLZXlGcm9tREVSKCRrZXksICRwYXNzd29yZCk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21QRU0oJGtleSwgJHBhc3N3b3JkKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGRlcgogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRwYXNzd29yZAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbG9hZEtleUZyb21ERVIoJGRlciwgJHBhc3N3b3JkID0gbnVsbCkKICAgIHsKICAgICAgICAkcGVtID0gc2VsZjo6Y29udmVydERlclRvUGVtKCRkZXIpOwoKICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21QRU0oJHBlbSwgJHBhc3N3b3JkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkcGVtCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbVBFTSgkcGVtLCAkcGFzc3dvcmQgPSBudWxsKQogICAgewogICAgICAgIGlmIChwcmVnX21hdGNoKCcjREVLLUluZm86ICguKyksKC4rKSMnLCAkcGVtLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgJHBlbSA9IHNlbGY6OmRlY29kZVBlbSgkcGVtLCAkbWF0Y2hlcywgJHBhc3N3b3JkKTsKICAgICAgICB9CgogICAgICAgIHNlbGY6OnNhbml0aXplUEVNKCRwZW0pOwoKICAgICAgICAkcmVzID0gb3BlbnNzbF9wa2V5X2dldF9wcml2YXRlKCRwZW0pOwogICAgICAgIGlmIChmYWxzZSA9PT0gJHJlcykgewogICAgICAgICAgICAkcmVzID0gb3BlbnNzbF9wa2V5X2dldF9wdWJsaWMoJHBlbSk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRyZXMsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRyZXMpOwogICAgICAgIEFzc2VydGlvbjo6aXNBcnJheSgkZGV0YWlscywgJ1VuYWJsZSB0byBnZXQgZGV0YWlscyBvZiB0aGUga2V5Jyk7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGRldGFpbHMsICd0eXBlJywgJ1VuYWJsZSB0byBnZXQgZGV0YWlscyBvZiB0aGUga2V5Jyk7CgogICAgICAgIHN3aXRjaCAoJGRldGFpbHNbJ3R5cGUnXSkgewogICAgICAgICAgICBjYXNlIE9QRU5TU0xfS0VZVFlQRV9FQzoKICAgICAgICAgICAgICAgICRlY19rZXkgPSBuZXcgRUNLZXkoJHBlbSk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRlY19rZXktPnRvQXJyYXkoKTsKICAgICAgICAgICAgY2FzZSBPUEVOU1NMX0tFWVRZUEVfUlNBOgogICAgICAgICAgICAgICAgICRyc2Ffa2V5ID0gbmV3IFJTQUtleSgkcGVtKTsKCiAgICAgICAgICAgICAgICAgcmV0dXJuICRyc2Ffa2V5LT50b0FycmF5KCk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBtb2RpZnkgdGhlIFBFTSB0byBnZXQgNjQgY2hhciBsaW5lcyBhbmQgZml4IGJ1ZyB3aXRoIG9sZCBPcGVuU1NMIHZlcnNpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBlbQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzYW5pdGl6ZVBFTSgmJHBlbSkKICAgIHsKICAgICAgICBwcmVnX21hdGNoX2FsbCgnIygtLiotKSMnLCAkcGVtLCAkbWF0Y2hlcywgUFJFR19QQVRURVJOX09SREVSKTsKICAgICAgICAkY2lwaGVydGV4dCA9IHByZWdfcmVwbGFjZSgnIy0uKi18XHJ8XG58ICMnLCAnJywgJHBlbSk7CgogICAgICAgICRwZW0gPSAkbWF0Y2hlc1swXVswXS5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoJGNpcGhlcnRleHQsIDY0LCBQSFBfRU9MKTsKICAgICAgICAkcGVtIC49ICRtYXRjaGVzWzBdWzFdLlBIUF9FT0w7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHg1YwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkRnJvbVg1QyhhcnJheSAkeDVjKQogICAgewogICAgICAgICRjZXJ0aWZpY2F0ZSA9IG51bGw7CiAgICAgICAgJGxhc3RfaXNzdWVyID0gbnVsbDsKICAgICAgICAkbGFzdF9zdWJqZWN0ID0gbnVsbDsKICAgICAgICBmb3JlYWNoICgkeDVjIGFzICRjZXJ0KSB7CiAgICAgICAgICAgICRjdXJyZW50X2NlcnQgPSAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLiRjZXJ0LlBIUF9FT0wuJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nOwogICAgICAgICAgICAkeDUwOSA9IG9wZW5zc2xfeDUwOV9yZWFkKCRjdXJyZW50X2NlcnQpOwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICR4NTA5KSB7CiAgICAgICAgICAgICAgICAkbGFzdF9pc3N1ZXIgPSBudWxsOwogICAgICAgICAgICAgICAgJGxhc3Rfc3ViamVjdCA9IG51bGw7CgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHBhcnNlZCA9IG9wZW5zc2xfeDUwOV9wYXJzZSgkeDUwOSk7CgogICAgICAgICAgICBvcGVuc3NsX3g1MDlfZnJlZSgkeDUwOSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHBhcnNlZCkgewogICAgICAgICAgICAgICAgJGxhc3RfaXNzdWVyID0gbnVsbDsKICAgICAgICAgICAgICAgICRsYXN0X3N1YmplY3QgPSBudWxsOwoKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChudWxsID09PSAkbGFzdF9zdWJqZWN0KSB7CiAgICAgICAgICAgICAgICAkbGFzdF9zdWJqZWN0ID0gJHBhcnNlZFsnc3ViamVjdCddOwogICAgICAgICAgICAgICAgJGxhc3RfaXNzdWVyID0gJHBhcnNlZFsnaXNzdWVyJ107CiAgICAgICAgICAgICAgICAkY2VydGlmaWNhdGUgPSAkY3VycmVudF9jZXJ0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGpzb25fZW5jb2RlKCRsYXN0X2lzc3VlcikgPT09IGpzb25fZW5jb2RlKCRwYXJzZWRbJ3N1YmplY3QnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdF9zdWJqZWN0ID0gJHBhcnNlZFsnc3ViamVjdCddOwogICAgICAgICAgICAgICAgICAgICRsYXN0X2lzc3VlciA9ICRwYXJzZWRbJ2lzc3VlciddOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdF9pc3N1ZXIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICRsYXN0X3N1YmplY3QgPSBudWxsOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBBc3NlcnRpb246OmZhbHNlKAogICAgICAgICAgICBudWxsID09PSAkbGFzdF9pc3N1ZXIgfHwganNvbl9lbmNvZGUoJGxhc3RfaXNzdWVyKSAhPT0ganNvbl9lbmNvZGUoJGxhc3Rfc3ViamVjdCksCiAgICAgICAgICAgICdJbnZhbGlkIGNlcnRpZmljYXRlIGNoYWluLicKICAgICAgICApOwoKICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21DZXJ0aWZpY2F0ZSgkY2VydGlmaWNhdGUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRwZW0KICAgICAqIEBwYXJhbSBzdHJpbmdbXSAgICAkbWF0Y2hlcwogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRwYXNzd29yZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGRlY29kZVBlbSgkcGVtLCBhcnJheSAkbWF0Y2hlcywgJHBhc3N3b3JkID0gbnVsbCkKICAgIHsKICAgICAgICBBc3NlcnRpb246Om5vdE51bGwoJHBhc3N3b3JkLCAnUGFzc3dvcmQgcmVxdWlyZWQgZm9yIGVuY3J5cHRlZCBrZXlzLicpOwoKICAgICAgICAkaXYgPSBwYWNrKCdIKicsIHRyaW0oJG1hdGNoZXNbMl0pKTsKICAgICAgICAkaXZfc3ViID0gbWJfc3Vic3RyKCRpdiwgMCwgOCwgJzhiaXQnKTsKICAgICAgICAkc3lta2V5ID0gcGFjaygnSConLCBtZDUoJHBhc3N3b3JkLiRpdl9zdWIpKTsKICAgICAgICAkc3lta2V5IC49IHBhY2soJ0gqJywgbWQ1KCRzeW1rZXkuJHBhc3N3b3JkLiRpdl9zdWIpKTsKICAgICAgICAka2V5ID0gcHJlZ19yZXBsYWNlKCcjXig/OlByb2MtVHlwZXxERUstSW5mbyk6IC4qI20nLCAnJywgJHBlbSk7CiAgICAgICAgJGNpcGhlcnRleHQgPSBiYXNlNjRfZGVjb2RlKHByZWdfcmVwbGFjZSgnIy0uKi18XHJ8XG4jJywgJycsICRrZXkpKTsKCiAgICAgICAgJGRlY29kZWQgPSBvcGVuc3NsX2RlY3J5cHQoJGNpcGhlcnRleHQsIHN0cnRvbG93ZXIoJG1hdGNoZXNbMV0pLCAkc3lta2V5LCB0cnVlLCAkaXYpOwoKICAgICAgICAkbnVtYmVyID0gcHJlZ19tYXRjaF9hbGwoJyMtezV9LiotezV9IycsICRwZW0sICRyZXN1bHQpOwogICAgICAgIEFzc2VydGlvbjo6ZXEoJG51bWJlciwgMiwgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKCiAgICAgICAgJHBlbSA9ICRyZXN1bHRbMF1bMF0uUEhQX0VPTDsKICAgICAgICAkcGVtIC49IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoJGRlY29kZWQpLCA2NCk7CiAgICAgICAgJHBlbSAuPSAkcmVzdWx0WzBdWzFdLlBIUF9FT0w7CgogICAgICAgIHJldHVybiAkcGVtOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGVyX2RhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0RGVyVG9QZW0oJGRlcl9kYXRhKQogICAgewogICAgICAgICRwZW0gPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCRkZXJfZGF0YSksIDY0LCBQSFBfRU9MKTsKICAgICAgICAkcGVtID0gJy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLScuUEhQX0VPTC4kcGVtLictLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MOwoKICAgICAgICByZXR1cm4gJHBlbTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBlbQogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gYm9vbCAgICRiaW5hcnkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYWxjdWxhdGVYNTA5RmluZ2VycHJpbnQoJHBlbSwgJGFsZ29yaXRobSwgJGJpbmFyeSA9IGZhbHNlKQogICAgewogICAgICAgICRwZW0gPSBwcmVnX3JlcGxhY2UoJyMtLiotfFxyfFxuIycsICcnLCAkcGVtKTsKICAgICAgICAkYmluID0gYmFzZTY0X2RlY29kZSgkcGVtKTsKCiAgICAgICAgcmV0dXJuIGhhc2goJGFsZ29yaXRobSwgJGJpbiwgJGJpbmFyeSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/KeyConverter/RSAKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEtleUNvbnZlcnRlcjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CnVzZSBKb3NlXFV0aWxcQmlnSW50ZWdlcjsKCmZpbmFsIGNsYXNzIFJTQUtleSBleHRlbmRzIFNlcXVlbmNlCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICR2YWx1ZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJG1vZHVsdXM7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRtb2R1bHVzX2xlbmd0aDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHB1YmxpY19leHBvbmVudDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcHJpdmF0ZV9leHBvbmVudCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXFV0aWxcQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHByaXZhdGUgJHByaW1lcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxVdGlsXEJpZ0ludGVnZXJbXQogICAgICovCiAgICBwcml2YXRlICRleHBvbmVudHMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkY29lZmZpY2llbnQgPSBudWxsOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2V8c3RyaW5nfGFycmF5ICRkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZGF0YSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgIGlmICgkZGF0YSBpbnN0YW5jZW9mIEpXS0ludGVyZmFjZSkgewogICAgICAgICAgICAkdGhpcy0+bG9hZEpXSygkZGF0YS0+Z2V0QWxsKCkpOwogICAgICAgIH0gZWxzZWlmIChpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJGRhdGEpKSB7CiAgICAgICAgICAgICR0aGlzLT5sb2FkUEVNKCRkYXRhKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQnKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5wb3B1bGF0ZUJpZ0ludGVnZXJzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUHVibGljKCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT5pc1ByaXZhdGUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcml2YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygnZCcsICR0aGlzLT52YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsdXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kdWx1czsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bHVzTGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZHVsdXNfbGVuZ3RoOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cG9uZW50KCkKICAgIHsKICAgICAgICAkZCA9ICR0aGlzLT5nZXRQcml2YXRlRXhwb25lbnQoKTsKICAgICAgICBpZiAobnVsbCAhPT0gJGQpIHsKICAgICAgICAgICAgcmV0dXJuICRkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRQdWJsaWNFeHBvbmVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFB1YmxpY0V4cG9uZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnB1YmxpY19leHBvbmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcVXRpbFxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcml2YXRlRXhwb25lbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpdmF0ZV9leHBvbmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcVXRpbFxCaWdJbnRlZ2VyW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByaW1lcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHBvbmVudHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZXhwb25lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXJ8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29lZmZpY2llbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29lZmZpY2llbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcS2V5Q29udmVydGVyXFJTQUtleSAkcHJpdmF0ZQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcS2V5Q29udmVydGVyXFJTQUtleQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvUHVibGljKHNlbGYgJHByaXZhdGUpCiAgICB7CiAgICAgICAgJGRhdGEgPSAkcHJpdmF0ZS0+dG9BcnJheSgpOwogICAgICAgICRrZXlzID0gWydwJywgJ2QnLCAncScsICdkcCcsICdkcScsICdxaSddOwogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGtleSwgJGRhdGEpKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkZGF0YVska2V5XSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkZGF0YSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dG9QRU0oKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQXJyYXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvREVSKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEJpbmFyeSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUEVNKCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJy0tLS0tQkVHSU4gJy4oJHRoaXMtPmlzUHJpdmF0ZSgpID8gJ1JTQSBQUklWQVRFJyA6ICdQVUJMSUMnKS4nIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRyZXN1bHQgLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkdGhpcy0+Z2V0QmluYXJ5KCkpLCA2NCwgUEhQX0VPTCk7CiAgICAgICAgJHJlc3VsdCAuPSAnLS0tLS1FTkQgJy4oJHRoaXMtPmlzUHJpdmF0ZSgpID8gJ1JTQSBQUklWQVRFJyA6ICdQVUJMSUMnKS4nIEtFWS0tLS0tJy5QSFBfRU9MOwoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqIEB0aHJvd3MgXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkUEVNKCRkYXRhKQogICAgewogICAgICAgICRyZXMgPSBvcGVuc3NsX3BrZXlfZ2V0X3ByaXZhdGUoJGRhdGEpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJHJlcykgewogICAgICAgICAgICAkcmVzID0gb3BlbnNzbF9wa2V5X2dldF9wdWJsaWMoJGRhdGEpOwogICAgICAgIH0KICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSAkcmVzLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwoKICAgICAgICAkZGV0YWlscyA9IG9wZW5zc2xfcGtleV9nZXRfZGV0YWlscygkcmVzKTsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkZGV0YWlscywgJ3JzYScsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CgogICAgICAgICR0aGlzLT52YWx1ZXNbJ2t0eSddID0gJ1JTQSc7CiAgICAgICAgJGtleXMgPSBbCiAgICAgICAgICAgICduJyA9PiAnbicsCiAgICAgICAgICAgICdlJyA9PiAnZScsCiAgICAgICAgICAgICdkJyA9PiAnZCcsCiAgICAgICAgICAgICdwJyA9PiAncCcsCiAgICAgICAgICAgICdxJyA9PiAncScsCiAgICAgICAgICAgICdkcCcgPT4gJ2RtcDEnLAogICAgICAgICAgICAnZHEnID0+ICdkbXExJywKICAgICAgICAgICAgJ3FpJyA9PiAnaXFtcCcsCiAgICAgICAgXTsKICAgICAgICBmb3JlYWNoICgkZGV0YWlsc1sncnNhJ10gYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRrZXksICRrZXlzKSkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gQmFzZTY0VXJsOjplbmNvZGUoJHZhbHVlKTsKICAgICAgICAgICAgICAgICR0aGlzLT52YWx1ZXNbYXJyYXlfc2VhcmNoKCRrZXksICRrZXlzKV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGp3awogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRKV0soYXJyYXkgJGp3aykKICAgIHsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkandrLCAna3R5JywgJ1RoZSBrZXkgcGFyYW1ldGVyICJrdHkiIGlzIG1pc3NpbmcuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgkandrWydrdHknXSwgJ1JTQScsICdUaGUgSldLIGlzIG5vdCBhIFJTQSBrZXknKTsKCiAgICAgICAgJHRoaXMtPnZhbHVlcyA9ICRqd2s7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2QnLCAkandrKSkgewogICAgICAgICAgICAkdGhpcy0+cG9wdWxhdGVDUlQoKTsKICAgICAgICAgICAgJHRoaXMtPmluaXRQcml2YXRlS2V5KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmluaXRQdWJsaWNLZXkoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBhZGRzIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0gKENSVCkgcGFyYW1ldGVycyBpZiBwcmltZXMgJ3AnIGFuZCAncScgYXJlIGF2YWlsYWJsZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwb3B1bGF0ZUNSVCgpCiAgICB7CiAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCdwJywgJHRoaXMtPnZhbHVlcykgJiYgIWFycmF5X2tleV9leGlzdHMoJ3EnLCAkdGhpcy0+dmFsdWVzKSkgewogICAgICAgICAgICAkZCA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1snZCddKSk7CiAgICAgICAgICAgICRlID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWydlJ10pKTsKICAgICAgICAgICAgJG4gPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ24nXSkpOwoKICAgICAgICAgICAgbGlzdCgkcCwgJHEpID0gJHRoaXMtPmZpbmRQcmltZUZhY3RvcnMoJGQsICRlLCAkbik7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXNbJ3AnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRwLT50b0J5dGVzKCkpOwogICAgICAgICAgICAkdGhpcy0+dmFsdWVzWydxJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkcS0+dG9CeXRlcygpKTsKICAgICAgICB9CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkcCcsICR0aGlzLT52YWx1ZXMpICYmIGFycmF5X2tleV9leGlzdHMoJ2RxJywgJHRoaXMtPnZhbHVlcykgJiYgYXJyYXlfa2V5X2V4aXN0cygncWknLCAkdGhpcy0+dmFsdWVzKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkb25lID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMSk7CiAgICAgICAgJGQgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICRwID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWydwJ10pKTsKICAgICAgICAkcSA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1sncSddKSk7CgogICAgICAgICR0aGlzLT52YWx1ZXNbJ2RwJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkZC0+bW9kKCRwLT5zdWJ0cmFjdCgkb25lKSktPnRvQnl0ZXMoKSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1snZHEnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRkLT5tb2QoJHEtPnN1YnRyYWN0KCRvbmUpKS0+dG9CeXRlcygpKTsKICAgICAgICAkdGhpcy0+dmFsdWVzWydxaSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHEtPm1vZEludmVyc2UoJHApLT50b0J5dGVzKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaW5pdFB1YmxpY0tleSgpCiAgICB7CiAgICAgICAgJG9pZF9zZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRvaWRfc2VxdWVuY2UtPmFkZENoaWxkKG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuODQwLjExMzU0OS4xLjEuMScpKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgTnVsbE9iamVjdCgpKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJG9pZF9zZXF1ZW5jZSk7CgogICAgICAgICRuID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snbiddKSk7CiAgICAgICAgJGUgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydlJ10pKTsKCiAgICAgICAgJGtleV9zZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRuKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZSk7CiAgICAgICAgJGtleV9iaXRfc3RyaW5nID0gbmV3IEJpdFN0cmluZyhiaW4yaGV4KCRrZXlfc2VxdWVuY2UtPmdldEJpbmFyeSgpKSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKCRrZXlfYml0X3N0cmluZyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbml0UHJpdmF0ZUtleSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKG5ldyBJbnRlZ2VyKDApKTsKCiAgICAgICAgJG9pZF9zZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRvaWRfc2VxdWVuY2UtPmFkZENoaWxkKG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuODQwLjExMzU0OS4xLjEuMScpKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgTnVsbE9iamVjdCgpKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJG9pZF9zZXF1ZW5jZSk7CgogICAgICAgICR2ID0gbmV3IEludGVnZXIoMCk7CiAgICAgICAgJG4gPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWyduJ10pKTsKICAgICAgICAkZSA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2UnXSkpOwogICAgICAgICRkID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZCddKSk7CiAgICAgICAgJHAgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydwJ10pKTsKICAgICAgICAkcSA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ3EnXSkpOwogICAgICAgICRkcCA9IGFycmF5X2tleV9leGlzdHMoJ2RwJywgJHRoaXMtPnZhbHVlcykgPyBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydkcCddKSkgOiBuZXcgSW50ZWdlcigwKTsKICAgICAgICAkZHEgPSBhcnJheV9rZXlfZXhpc3RzKCdkcScsICR0aGlzLT52YWx1ZXMpID8gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZHEnXSkpIDogbmV3IEludGVnZXIoMCk7CiAgICAgICAgJHFpID0gYXJyYXlfa2V5X2V4aXN0cygncWknLCAkdGhpcy0+dmFsdWVzKSA/IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ3FpJ10pKSA6IG5ldyBJbnRlZ2VyKDApOwoKICAgICAgICAka2V5X3NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJHYpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRuKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGQpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRwKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkcSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGRwKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZHEpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRxaSk7CiAgICAgICAgJGtleV9vY3RldF9zdHJpbmcgPSBuZXcgT2N0ZXRTdHJpbmcoYmluMmhleCgka2V5X3NlcXVlbmNlLT5nZXRCaW5hcnkoKSkpOwogICAgICAgICR0aGlzLT5hZGRDaGlsZCgka2V5X29jdGV0X3N0cmluZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZnJvbUJhc2U2NFRvSW50ZWdlcigkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zdHJ2YWwoZ21wX2luaXQoY3VycmVudCh1bnBhY2soJ0gqJywgQmFzZTY0VXJsOjpkZWNvZGUoJHZhbHVlKSkpLCAxNiksIDEwKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBvcHVsYXRlQmlnSW50ZWdlcnMoKQogICAgewogICAgICAgICR0aGlzLT5tb2R1bHVzID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snbiddKTsKICAgICAgICAkdGhpcy0+bW9kdWx1c19sZW5ndGggPSBtYl9zdHJsZW4oJHRoaXMtPmdldE1vZHVsdXMoKS0+dG9CeXRlcygpLCAnOGJpdCcpOwogICAgICAgICR0aGlzLT5wdWJsaWNfZXhwb25lbnQgPSAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydlJ10pOwoKICAgICAgICBpZiAodHJ1ZSA9PT0gJHRoaXMtPmlzUHJpdmF0ZSgpKSB7CiAgICAgICAgICAgICR0aGlzLT5wcml2YXRlX2V4cG9uZW50ID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZCddKTsKCiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwJywgJHRoaXMtPnZhbHVlcykgJiYgYXJyYXlfa2V5X2V4aXN0cygncScsICR0aGlzLT52YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cHJpbWVzID0gWwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ3AnXSksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1sncSddKSwKICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXhwb25lbnRzID0gWwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2RwJ10pLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2RxJ10pLAogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICR0aGlzLT5jb2VmZmljaWVudCA9ICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ3FpJ10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR2YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJGQKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRlCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaW5kUHJpbWVGYWN0b3JzKEJpZ0ludGVnZXIgJGQsIEJpZ0ludGVnZXIgJGUsIEJpZ0ludGVnZXIgJG4pCiAgICB7CiAgICAgICAgJHplcm8gPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tRGVjaW1hbCgwKTsKICAgICAgICAkb25lID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMSk7CiAgICAgICAgJHR3byA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDIpOwoKICAgICAgICAkayA9ICRkLT5tdWx0aXBseSgkZSktPnN1YnRyYWN0KCRvbmUpOwoKICAgICAgICBpZiAoJGstPmlzRXZlbigpKSB7CiAgICAgICAgICAgICRyID0gJGs7CiAgICAgICAgICAgICR0ID0gJHplcm87CgogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkciA9ICRyLT5kaXZpZGUoJHR3byk7CiAgICAgICAgICAgICAgICAkdCA9ICR0LT5hZGQoJG9uZSk7CiAgICAgICAgICAgIH0gd2hpbGUgKCRyLT5pc0V2ZW4oKSk7CgogICAgICAgICAgICAkZm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgJHkgPSBudWxsOwoKICAgICAgICAgICAgZm9yICgkaSA9IDE7ICRpIDw9IDEwMDsgKyskaSkgewogICAgICAgICAgICAgICAgJGcgPSBCaWdJbnRlZ2VyOjpyYW5kb20oJG4tPnN1YnRyYWN0KCRvbmUpKTsKICAgICAgICAgICAgICAgICR5ID0gJGctPm1vZFBvdygkciwgJG4pOwoKICAgICAgICAgICAgICAgIGlmICgkeS0+ZXF1YWxzKCRvbmUpIHx8ICR5LT5lcXVhbHMoJG4tPnN1YnRyYWN0KCRvbmUpKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZvciAoJGogPSAkb25lOyAkai0+bG93ZXJUaGFuKCR0LT5zdWJ0cmFjdCgkb25lKSk7ICRqID0gJGotPmFkZCgkb25lKSkgewogICAgICAgICAgICAgICAgICAgICR4ID0gJHktPm1vZFBvdygkdHdvLCAkbik7CgogICAgICAgICAgICAgICAgICAgIGlmICgkeC0+ZXF1YWxzKCRvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRmb3VuZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkeC0+ZXF1YWxzKCRuLT5zdWJ0cmFjdCgkb25lKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkeSA9ICR4OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR4ID0gJHktPm1vZFBvdygkdHdvLCAkbik7CiAgICAgICAgICAgICAgICBpZiAoJHgtPmVxdWFscygkb25lKSkgewogICAgICAgICAgICAgICAgICAgICRmb3VuZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAodHJ1ZSA9PT0gJGZvdW5kKSB7CiAgICAgICAgICAgICAgICAkcCA9ICR5LT5zdWJ0cmFjdCgkb25lKS0+Z2NkKCRuKTsKICAgICAgICAgICAgICAgICRxID0gJG4tPmRpdmlkZSgkcCk7CgogICAgICAgICAgICAgICAgcmV0dXJuIFskcCwgJHFdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGZpbmQgcHJpbWUgZmFjdG9ycy4nKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Loader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogQ2xhc3MgYWJsZSB0byBsb2FkIEpXUyBvciBKV0UuCiAqIEpXUyBvYmplY3QgY2FuIGFsc28gYmUgdmVyaWZpZWQuCiAqLwpmaW5hbCBjbGFzcyBMb2FkZXIgaW1wbGVtZW50cyBMb2FkZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kRGVjcnlwdFVzaW5nS2V5KCRpbnB1dCwgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCBhcnJheSAkYWxsb3dlZF9rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkYWxsb3dlZF9jb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKQogICAgewogICAgICAgICRqd2tfc2V0ID0gbmV3IE9iamVjdFxKV0tTZXQoKTsKICAgICAgICAkandrX3NldC0+YWRkS2V5KCRqd2spOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRBbmREZWNyeXB0KCRpbnB1dCwgJGp3a19zZXQsICRhbGxvd2VkX2tleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRhbGxvd2VkX2NvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCAkcmVjaXBpZW50X2luZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRBbmREZWNyeXB0VXNpbmdLZXlTZXQoJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCBhcnJheSAkYWxsb3dlZF9rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkYWxsb3dlZF9jb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZERlY3J5cHQoJGlucHV0LCAkandrX3NldCwgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRyZWNpcGllbnRfaW5kZXgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZFZlcmlmeVNpZ25hdHVyZVVzaW5nS2V5KCRpbnB1dCwgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCBhcnJheSAkYWxsb3dlZF9hbGdvcml0aG1zLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3a19zZXQgPSBuZXcgT2JqZWN0XEpXS1NldCgpOwogICAgICAgICRqd2tfc2V0LT5hZGRLZXkoJGp3ayk7CgogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZFZlcmlmeVNpZ25hdHVyZSgkaW5wdXQsICRqd2tfc2V0LCAkYWxsb3dlZF9hbGdvcml0aG1zLCBudWxsLCAkc2lnbmF0dXJlX2luZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRBbmRWZXJpZnlTaWduYXR1cmVVc2luZ0tleVNldCgkaW5wdXQsIE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQsIGFycmF5ICRhbGxvd2VkX2FsZ29yaXRobXMsICYkc2lnbmF0dXJlX2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRBbmRWZXJpZnlTaWduYXR1cmUoJGlucHV0LCAkandrX3NldCwgJGFsbG93ZWRfYWxnb3JpdGhtcywgbnVsbCwgJHNpZ25hdHVyZV9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlBbmREZXRhY2hlZFBheWxvYWQoJGlucHV0LCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssIGFycmF5ICRhbGxvd2VkX2FsZ29yaXRobXMsICRkZXRhY2hlZF9wYXlsb2FkLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3a19zZXQgPSBuZXcgT2JqZWN0XEpXS1NldCgpOwogICAgICAgICRqd2tfc2V0LT5hZGRLZXkoJGp3ayk7CgogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZFZlcmlmeVNpZ25hdHVyZSgkaW5wdXQsICRqd2tfc2V0LCAkYWxsb3dlZF9hbGdvcml0aG1zLCAkZGV0YWNoZWRfcGF5bG9hZCwgJHNpZ25hdHVyZV9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlTZXRBbmREZXRhY2hlZFBheWxvYWQoJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCBhcnJheSAkYWxsb3dlZF9hbGdvcml0aG1zLCAkZGV0YWNoZWRfcGF5bG9hZCwgJiRzaWduYXR1cmVfaW5kZXggPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZFZlcmlmeVNpZ25hdHVyZSgkaW5wdXQsICRqd2tfc2V0LCAkYWxsb3dlZF9hbGdvcml0aG1zLCAkZGV0YWNoZWRfcGF5bG9hZCwgJHNpZ25hdHVyZV9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9jb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcwogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRBbmREZWNyeXB0KCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkand0ID0gJHRoaXMtPmxvYWQoJGlucHV0KTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkand0LCBPYmplY3RcSldFSW50ZXJmYWNlOjpjbGFzcywgJ1RoZSBpbnB1dCBpcyBub3QgYSB2YWxpZCBKV0UnKTsKICAgICAgICAkZGVjcnlwdGVkID0gRGVjcnlwdGVyOjpjcmVhdGVEZWNyeXB0ZXIoJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgICAgICRkZWNyeXB0ZWQtPmRlY3J5cHRVc2luZ0tleVNldCgkand0LCAkandrX3NldCwgJHJlY2lwaWVudF9pbmRleCk7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfYWxnb3JpdGhtcwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlKCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfYWxnb3JpdGhtcywgJGRldGFjaGVkX3BheWxvYWQgPSBudWxsLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3dCA9ICR0aGlzLT5sb2FkKCRpbnB1dCk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGp3dCwgT2JqZWN0XEpXU0ludGVyZmFjZTo6Y2xhc3MsICdUaGUgaW5wdXQgaXMgbm90IGEgdmFsaWQgSldTLicpOwogICAgICAgICR2ZXJpZmllciA9IFZlcmlmaWVyOjpjcmVhdGVWZXJpZmllcigkYWxsb3dlZF9hbGdvcml0aG1zKTsKCiAgICAgICAgJHZlcmlmaWVyLT52ZXJpZnlXaXRoS2V5U2V0KCRqd3QsICRqd2tfc2V0LCAkZGV0YWNoZWRfcGF5bG9hZCwgJHNpZ25hdHVyZV9pbmRleCk7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZCgkaW5wdXQpCiAgICB7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Y29udmVydCgkaW5wdXQpOwogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdzaWduYXR1cmVzJywgJGpzb24pKSB7CiAgICAgICAgICAgIHJldHVybiBVdGlsXEpXU0xvYWRlcjo6bG9hZFNlcmlhbGl6ZWRKc29uSldTKCRqc29uKTsKICAgICAgICB9CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3JlY2lwaWVudHMnLCAkanNvbikpIHsKICAgICAgICAgICAgcmV0dXJuIFV0aWxcSldFTG9hZGVyOjpsb2FkU2VyaWFsaXplZEpzb25KV0UoJGpzb24pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnQoJGlucHV0KQogICAgewogICAgICAgIGlmIChpc19hcnJheSgkZGF0YSA9IGpzb25fZGVjb2RlKCRpbnB1dCwgdHJ1ZSkpKSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdzaWduYXR1cmVzJywgJGRhdGEpIHx8IGFycmF5X2tleV9leGlzdHMoJ3JlY2lwaWVudHMnLCAkZGF0YSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZGF0YTsKICAgICAgICAgICAgfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJ3NpZ25hdHVyZScsICRkYXRhKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5mcm9tRmxhdHRlbmVkU2VyaWFsaXphdGlvblNpZ25hdHVyZVRvU2VyaWFsaXphdGlvbigkZGF0YSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChhcnJheV9rZXlfZXhpc3RzKCdjaXBoZXJ0ZXh0JywgJGRhdGEpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21GbGF0dGVuZWRTZXJpYWxpemF0aW9uUmVjaXBpZW50VG9TZXJpYWxpemF0aW9uKCRkYXRhKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJGlucHV0KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21Db21wYWN0U2VyaWFsaXphdGlvblRvU2VyaWFsaXphdGlvbigkaW5wdXQpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGlucHV0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJGlucHV0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZyb21GbGF0dGVuZWRTZXJpYWxpemF0aW9uUmVjaXBpZW50VG9TZXJpYWxpemF0aW9uKCRpbnB1dCkKICAgIHsKICAgICAgICAkcmVjaXBpZW50ID0gW107CiAgICAgICAgZm9yZWFjaCAoWydoZWFkZXInLCAnZW5jcnlwdGVkX2tleSddIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGtleSwgJGlucHV0KSkgewogICAgICAgICAgICAgICAgJHJlY2lwaWVudFska2V5XSA9ICRpbnB1dFska2V5XTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkcmVjaXBpZW50cyA9IFsKICAgICAgICAgICAgJ2NpcGhlcnRleHQnID0+ICRpbnB1dFsnY2lwaGVydGV4dCddLAogICAgICAgICAgICAncmVjaXBpZW50cycgPT4gWyRyZWNpcGllbnRdLAogICAgICAgIF07CiAgICAgICAgZm9yZWFjaCAoWydwcm90ZWN0ZWQnLCAndW5wcm90ZWN0ZWQnLCAnaXYnLCAnYWFkJywgJ3RhZyddIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGtleSwgJGlucHV0KSkgewogICAgICAgICAgICAgICAgJHJlY2lwaWVudHNbJGtleV0gPSAkaW5wdXRbJGtleV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVjaXBpZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkaW5wdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZnJvbUZsYXR0ZW5lZFNlcmlhbGl6YXRpb25TaWduYXR1cmVUb1NlcmlhbGl6YXRpb24oJGlucHV0KQogICAgewogICAgICAgICRzaWduYXR1cmUgPSBbCiAgICAgICAgICAgICdzaWduYXR1cmUnID0+ICRpbnB1dFsnc2lnbmF0dXJlJ10sCiAgICAgICAgXTsKICAgICAgICBmb3JlYWNoIChbJ3Byb3RlY3RlZCcsICdoZWFkZXInXSBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRrZXksICRpbnB1dCkpIHsKICAgICAgICAgICAgICAgICRzaWduYXR1cmVbJGtleV0gPSAkaW5wdXRbJGtleV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0ZW1wID0gW107CiAgICAgICAgaWYgKCFlbXB0eSgkaW5wdXRbJ3BheWxvYWQnXSkpIHsKICAgICAgICAgICAgJHRlbXBbJ3BheWxvYWQnXSA9ICRpbnB1dFsncGF5bG9hZCddOwogICAgICAgIH0KICAgICAgICAkdGVtcFsnc2lnbmF0dXJlcyddID0gWyRzaWduYXR1cmVdOwoKICAgICAgICByZXR1cm4gJHRlbXA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmcm9tQ29tcGFjdFNlcmlhbGl6YXRpb25Ub1NlcmlhbGl6YXRpb24oJGlucHV0KQogICAgewogICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJy4nLCAkaW5wdXQpOwogICAgICAgIHN3aXRjaCAoY291bnQoJHBhcnRzKSkgewogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21Db21wYWN0U2VyaWFsaXphdGlvblNpZ25hdHVyZVRvU2VyaWFsaXphdGlvbigkcGFydHMpOwogICAgICAgICAgICBjYXNlIDU6CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21Db21wYWN0U2VyaWFsaXphdGlvblJlY2lwaWVudFRvU2VyaWFsaXphdGlvbigkcGFydHMpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGlucHV0Jyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0cwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmcm9tQ29tcGFjdFNlcmlhbGl6YXRpb25SZWNpcGllbnRUb1NlcmlhbGl6YXRpb24oYXJyYXkgJHBhcnRzKQogICAgewogICAgICAgICRyZWNpcGllbnQgPSBbXTsKICAgICAgICBpZiAoIWVtcHR5KCRwYXJ0c1sxXSkpIHsKICAgICAgICAgICAgJHJlY2lwaWVudFsnZW5jcnlwdGVkX2tleSddID0gJHBhcnRzWzFdOwogICAgICAgIH0KCiAgICAgICAgJHJlY2lwaWVudHMgPSBbCiAgICAgICAgICAgICdyZWNpcGllbnRzJyA9PiBbJHJlY2lwaWVudF0sCiAgICAgICAgXTsKICAgICAgICBmb3JlYWNoIChbMCA9PiAncHJvdGVjdGVkJywgMiA9PiAnaXYnLCAzID0+ICdjaXBoZXJ0ZXh0JywgNCA9PiAndGFnJ10gYXMgJHBhcnQgPT4gJGtleSkgewogICAgICAgICAgICBpZiAoIWVtcHR5KCRwYXJ0c1skcGFydF0pKSB7CiAgICAgICAgICAgICAgICAkcmVjaXBpZW50c1ska2V5XSA9ICRwYXJ0c1skcGFydF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVjaXBpZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkcGFydHMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZnJvbUNvbXBhY3RTZXJpYWxpemF0aW9uU2lnbmF0dXJlVG9TZXJpYWxpemF0aW9uKGFycmF5ICRwYXJ0cykKICAgIHsKICAgICAgICAkdGVtcCA9IFtdOwoKICAgICAgICBpZiAoIWVtcHR5KCRwYXJ0c1sxXSkpIHsKICAgICAgICAgICAgJHRlbXBbJ3BheWxvYWQnXSA9ICRwYXJ0c1sxXTsKICAgICAgICB9CiAgICAgICAgJHRlbXBbJ3NpZ25hdHVyZXMnXSA9IFtbCiAgICAgICAgICAgICdwcm90ZWN0ZWQnID0+ICRwYXJ0c1swXSwKICAgICAgICAgICAgJ3NpZ25hdHVyZScgPT4gJHBhcnRzWzJdLAogICAgICAgIF1dOwoKICAgICAgICByZXR1cm4gJHRlbXA7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/LoaderInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIExvYWRlciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgTG9hZGVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogTG9hZCBkYXRhIGFuZCB0cnkgdG8gcmV0dXJuIGEgSldTSW50ZXJmYWNlIG9iamVjdCwgYSBKV0VJbnRlcmZhY2Ugb2JqZWN0IG9yIGEgbGlzdCBvZiB0aGVzZSBvYmplY3RzLgogICAgICogSWYgdGhlIHJlc3VsdCBpcyBhIEpXRSAobGlzdCksIG5vdGhpbmcgaXMgZGVjcnlwdGVkIGFuZCBtZXRob2QgYGRlY3J5cHRgIG11c3QgYmUgZXhlY3V0ZWQKICAgICAqIElmIHRoZSByZXN1bHQgaXMgYSBKV1MgKGxpc3QpLCBubyBzaWduYXR1cmUgaXMgdmVyaWZpZWQgYW5kIG1ldGhvZCBgdmVyaWZ5U2lnbmF0dXJlYCBtdXN0IGJlIGV4ZWN1dGVkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0IEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyBhIEpTT04gV2ViIFRva2VuIG1lc3NhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2V8XEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSBpZiB0aGUgZGF0YSBoYXMgYmVlbiBsb2FkZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWQoJGlucHV0KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRpbnB1dAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGp3awogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcwogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICRyZWNpcGllbnRfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2V8XEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSBpZiB0aGUgZGF0YSBoYXMgYmVlbiBsb2FkZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRBbmREZWNyeXB0VXNpbmdLZXkoJGlucHV0LCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssIGFycmF5ICRhbGxvd2VkX2tleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIGFycmF5ICRhbGxvd2VkX2NvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCAmJHJlY2lwaWVudF9pbmRleCA9IG51bGwpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcwogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICAgICRyZWNpcGllbnRfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgaWYgdGhlIGRhdGEgaGFzIGJlZW4gbG9hZGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kRGVjcnlwdFVzaW5nS2V5U2V0KCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkaW5wdXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRqd2sKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAgICAgICAgICAgICAgICAgICRhbGxvd2VkX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgaWYgdGhlIGRhdGEgaGFzIGJlZW4gbG9hZGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXkoJGlucHV0LCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssIGFycmF5ICRhbGxvd2VkX2FsZ29yaXRobXMsICYkc2lnbmF0dXJlX2luZGV4ID0gbnVsbCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgICAgICAgICAkc2lnbmF0dXJlX2luZGV4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlIGlmIHRoZSBkYXRhIGhhcyBiZWVuIGxvYWRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZFZlcmlmeVNpZ25hdHVyZVVzaW5nS2V5U2V0KCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfYWxnb3JpdGhtcywgJiRzaWduYXR1cmVfaW5kZXggPSBudWxsKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRpbnB1dAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGp3awogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfYWxnb3JpdGhtcwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgaWYgdGhlIGRhdGEgaGFzIGJlZW4gbG9hZGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlBbmREZXRhY2hlZFBheWxvYWQoJGlucHV0LCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssIGFycmF5ICRhbGxvd2VkX2FsZ29yaXRobXMsICRkZXRhY2hlZF9wYXlsb2FkLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfYWxnb3JpdGhtcwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgaWYgdGhlIGRhdGEgaGFzIGJlZW4gbG9hZGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlTZXRBbmREZXRhY2hlZFBheWxvYWQoJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCBhcnJheSAkYWxsb3dlZF9hbGdvcml0aG1zLCAkZGV0YWNoZWRfcGF5bG9hZCwgJiRzaWduYXR1cmVfaW5kZXggPSBudWxsKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/BaseJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKLyoqCiAqIENsYXNzIEJhc2VKV0tTZXQuCiAqLwphYnN0cmFjdCBjbGFzcyBCYXNlSldLU2V0CnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkcG9zaXRpb24gPSAwOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0tleSgkaW5kZXgpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGluZGV4LCAkdGhpcy0+Z2V0S2V5cygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGluZGV4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXkoJGluZGV4KQogICAgewogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkaW5kZXgsICdUaGUgaW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyT3JFcXVhbFRoYW4oJGluZGV4LCAwLCAnVGhlIGluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgkdGhpcy0+aGFzS2V5KCRpbmRleCksICdVbmRlZmluZWQgaW5kZXguJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0S2V5cygpWyRpbmRleF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGluZGV4CiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiByZW1vdmVLZXkoJGluZGV4KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKQogICAgewogICAgICAgIHJldHVybiBbJ2tleXMnID0+IGFycmF5X3ZhbHVlcygkdGhpcy0+Z2V0S2V5cygpKV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRtb2RlCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCRtb2RlID0gQ09VTlRfTk9STUFMKQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+Z2V0S2V5cygpLCAkbW9kZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYXNLZXkoJHRoaXMtPnBvc2l0aW9uKSA/ICR0aGlzLT5nZXRLZXkoJHRoaXMtPnBvc2l0aW9uKSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ga2V5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvc2l0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBuZXh0KCkKICAgIHsKICAgICAgICArKyR0aGlzLT5wb3NpdGlvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV3aW5kKCkKICAgIHsKICAgICAgICAkdGhpcy0+cG9zaXRpb24gPSAwOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jdXJyZW50KCkgaW5zdGFuY2VvZiBKV0tJbnRlcmZhY2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRLZXlzKCkKICAgIHsKICAgICAgICByZXR1cm4gY291bnQoJHRoaXMtPmdldEtleXMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0RXhpc3RzKCRvZmZzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYXNLZXkoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0R2V0KCRvZmZzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRLZXkoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9mZnNldAogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KCRvZmZzZXQsICR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+YWRkS2V5KCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRvZmZzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldFVuc2V0KCRvZmZzZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW92ZUtleSgkb2Zmc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdHlwZQogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRhbGdvcml0aG0KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkcmVzdHJpY3Rpb25zCiAgICAgKgogICAgICogQHJldHVybiBudWxsfFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbGVjdEtleSgkdHlwZSwgJGFsZ29yaXRobSA9IG51bGwsIGFycmF5ICRyZXN0cmljdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJHR5cGUsIFsnZW5jJywgJ3NpZyddKTsKICAgICAgICBBc3NlcnRpb246Om51bGxPclN0cmluZygkYWxnb3JpdGhtKTsKCiAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgICRrZXlzID0gJHRoaXMtPmdldEtleXMoKTsKICAgICAgICBmb3JlYWNoICgka2V5cyBhcyAka2V5KSB7CiAgICAgICAgICAgICRpbmQgPSAwOwoKICAgICAgICAgICAgLy8gQ2hlY2sgdXNhZ2UKICAgICAgICAgICAgJGNhbl91c2UgPSAkdGhpcy0+Y2FuS2V5QmVVc2VkRm9yKCR0eXBlLCAka2V5KTsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkY2FuX3VzZSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGluZCArPSAkY2FuX3VzZTsKCiAgICAgICAgICAgIC8vIENoZWNrIGFsZ29yaXRobQogICAgICAgICAgICAkYWxnID0gJHRoaXMtPmNhbktleUJlVXNlZFdpdGhBbGdvcml0aG0oJGFsZ29yaXRobSwgJGtleSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJGFsZykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGluZCArPSAkYWxnOwoKICAgICAgICAgICAgLy8gVmFsaWRhdGUgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHRoaXMtPmRvZXNLZXlTYXRpc2Z5UmVzdHJpY3Rpb25zKCRyZXN0cmljdGlvbnMsICRrZXkpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gQWRkIHRvIHRoZSBsaXN0IHdpdGggdHJ1c3QgaW5kaWNhdG9yCiAgICAgICAgICAgICRyZXN1bHRbXSA9IFsna2V5JyA9PiAka2V5LCAnaW5kJyA9PiAkaW5kXTsKICAgICAgICB9CgogICAgICAgIC8vUmV0dXJuIG51bGwgaWYgbm8ga2V5CiAgICAgICAgaWYgKGVtcHR5KCRyZXN1bHQpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vU29ydCBieSB0cnVzdCBpbmRpY2F0b3IKICAgICAgICB1c29ydCgkcmVzdWx0LCBbJHRoaXMsICdzb3J0S2V5cyddKTsKICAgICAgICAvL1JldHVybiB0aGUgaGlnaGVzdCB0cnVzdCBpbmRpY2F0b3IgKGZpcnN0IGtleSkKICAgICAgICByZXR1cm4gJHJlc3VsdFswXVsna2V5J107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkdHlwZQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYW5LZXlCZVVzZWRGb3IoJHR5cGUsIEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIGlmICgka2V5LT5oYXMoJ3VzZScpKSB7CiAgICAgICAgICAgIHJldHVybiAkdHlwZSA9PT0gJGtleS0+Z2V0KCd1c2UnKSA/IDEgOiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRrZXktPmhhcygna2V5X29wcycpKSB7CiAgICAgICAgICAgIHJldHVybiAkdHlwZSA9PT0gc2VsZjo6Y29udmVydEtleU9wc1RvS2V5VXNlKCRrZXktPmdldCgndXNlJykpID8gMSA6IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgICAgICAgICAgICAgICAkYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKgogICAgICogQHJldHVybiBib29sfGludAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhbktleUJlVXNlZFdpdGhBbGdvcml0aG0oJGFsZ29yaXRobSwgSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRhbGdvcml0aG0pIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2FsZycpKSB7CiAgICAgICAgICAgIHJldHVybiAkYWxnb3JpdGhtID09PSAka2V5LT5nZXQoJ2FsZycpID8gMSA6IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkcmVzdHJpY3Rpb25zCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZG9lc0tleVNhdGlzZnlSZXN0cmljdGlvbnMoYXJyYXkgJHJlc3RyaWN0aW9ucywgSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHJlc3RyaWN0aW9ucyBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoISRrZXktPmhhcygkaykgfHwgJHYgIT09ICRrZXktPmdldCgkaykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXlfb3BzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydEtleU9wc1RvS2V5VXNlKCRrZXlfb3BzKQogICAgewogICAgICAgIHN3aXRjaCAoJGtleV9vcHMpIHsKICAgICAgICAgICAgY2FzZSAndmVyaWZ5JzoKICAgICAgICAgICAgY2FzZSAnc2lnbic6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpZyc7CiAgICAgICAgICAgIGNhc2UgJ2VuY3J5cHQnOgogICAgICAgICAgICBjYXNlICdkZWNyeXB0JzoKICAgICAgICAgICAgY2FzZSAnd3JhcEtleSc6CiAgICAgICAgICAgIGNhc2UgJ3Vud3JhcEtleSc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ2VuYyc7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdVbnN1cHBvcnRlZCBrZXkgb3BlcmF0aW9uIHZhbHVlICIlcyInLCAka2V5X29wcykpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkYQogICAgICogQHBhcmFtIGFycmF5ICRiCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNvcnRLZXlzKCRhLCAkYikKICAgIHsKICAgICAgICBpZiAoJGFbJ2luZCddID09PSAkYlsnaW5kJ10pIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCRhWydpbmQnXSA+ICRiWydpbmQnXSkgPyAtMSA6IDE7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/DownloadedJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2U7CgovKioKICogQ2xhc3MgRG93bmxvYWRlZEpXS1NldC4KICovCmFic3RyYWN0IGNsYXNzIERvd25sb2FkZWRKV0tTZXQgZXh0ZW5kcyBCYXNlSldLU2V0IGltcGxlbWVudHMgSldLU2V0SW50ZXJmYWNlCnsKICAgIHVzZSBKV0tTZXRQRU07CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICR1cmw7CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8XFBzclxDYWNoZVxDYWNoZUl0ZW1Qb29sSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGNhY2hlOwoKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkdHRsOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uOwoKICAgIC8qKgogICAgICogRG93bmxvYWRlZEpXS1NldCBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHVybAogICAgICogQHBhcmFtIFxQc3JcQ2FjaGVcQ2FjaGVJdGVtUG9vbEludGVyZmFjZXxudWxsICRjYWNoZQogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0dGwKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24KICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dfaHR0cF9jb25uZWN0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdXJsLCBDYWNoZUl0ZW1Qb29sSW50ZXJmYWNlICRjYWNoZSA9IG51bGwsICR0dGwgPSA4NjQwMCwgJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uID0gZmFsc2UsICRhbGxvd19odHRwX2Nvbm5lY3Rpb24gPSBmYWxzZSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmJvb2xlYW4oJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uKTsKICAgICAgICBBc3NlcnRpb246OmJvb2xlYW4oJGFsbG93X2h0dHBfY29ubmVjdGlvbik7CiAgICAgICAgQXNzZXJ0aW9uOjppbnRlZ2VyKCR0dGwpOwogICAgICAgIEFzc2VydGlvbjo6bWluKCR0dGwsIDApOwogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09IGZpbHRlcl92YXIoJHVybCwgRklMVEVSX1ZBTElEQVRFX1VSTCwgRklMVEVSX0ZMQUdfU0NIRU1FX1JFUVVJUkVEIHwgRklMVEVSX0ZMQUdfSE9TVF9SRVFVSVJFRCksICdJbnZhbGlkIFVSTC4nKTsKICAgICAgICAkYWxsb3dlZF9wcm90b2NvbHMgPSBbJ2h0dHBzJ107CiAgICAgICAgaWYgKHRydWUgPT09ICRhbGxvd19odHRwX2Nvbm5lY3Rpb24pIHsKICAgICAgICAgICAgJGFsbG93ZWRfcHJvdG9jb2xzW10gPSAnaHR0cCc7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6aW5BcnJheShtYl9zdWJzdHIoJHVybCwgMCwgbWJfc3RycG9zKCR1cmwsICc6Ly8nLCAwLCAnOGJpdCcpLCAnOGJpdCcpLCAkYWxsb3dlZF9wcm90b2NvbHMsIHNwcmludGYoJ1RoZSBwcm92aWRlZCBzZWN0b3IgaWRlbnRpZmllciBVUkkgaXMgbm90IHZhbGlkOiBzY2hlbWUgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzogJXMuJywganNvbl9lbmNvZGUoJGFsbG93ZWRfcHJvdG9jb2xzKSkpOwoKICAgICAgICAkdGhpcy0+dXJsID0gJHVybDsKICAgICAgICAkdGhpcy0+Y2FjaGUgPSAkY2FjaGU7CiAgICAgICAgJHRoaXMtPnR0bCA9ICR0dGw7CiAgICAgICAgJHRoaXMtPmFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uID0gJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIC8vTm90IGF2YWlsYWJsZQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJlcGVuZEtleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAvL05vdCBhdmFpbGFibGUKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUtleSgkaW5kZXgpCiAgICB7CiAgICAgICAgLy9Ob3QgYXZhaWxhYmxlCiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgJGNhY2hlX2tleSA9IHNwcmludGYoJ0pXS0ZhY3RvcnktQ29udGVudC0lcycsIGhhc2goJ3NoYTUxMicsICR0aGlzLT51cmwpKTsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmNhY2hlKSB7CiAgICAgICAgICAgICRpdGVtID0gJHRoaXMtPmNhY2hlLT5nZXRJdGVtKCRjYWNoZV9rZXkpOwogICAgICAgICAgICBpZiAoISRpdGVtLT5pc0hpdCgpKSB7CiAgICAgICAgICAgICAgICAkY29udGVudCA9ICR0aGlzLT5kb3dubG9hZENvbnRlbnQoKTsKICAgICAgICAgICAgICAgICRpdGVtLT5zZXQoJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgaWYgKDAgIT09ICR0aGlzLT50dGwpIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbS0+ZXhwaXJlc0FmdGVyKCR0aGlzLT50dGwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zYXZlKCRpdGVtKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGl0ZW0tPmdldCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmRvd25sb2FkQ29udGVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIEhhcyBDVVJMIGVycm9yIG1lc3NhZ2UgYW5kIHRoZSBDVVJMIGVycm9yCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyIGFzIGV4Y2VwdGlvbiBjb2RlLgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocm93cyBleGNlcHRpb24gd2l0aCBlcnJvciBudW1iZXIgMAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRoZSBlcnJvciBpcyBub3QgcmVsYXRlZCB0byBDVVJMLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZG93bmxvYWRDb250ZW50KCkKICAgIHsKICAgICAgICAkcGFyYW1zID0gWwogICAgICAgICAgICBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSID0+IHRydWUsCiAgICAgICAgICAgIENVUkxPUFRfVVJMID0+ICR0aGlzLT51cmwsCiAgICAgICAgXTsKICAgICAgICBpZiAoZmFsc2UgPT09ICR0aGlzLT5hbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbikgewogICAgICAgICAgICAkcGFyYW1zW0NVUkxPUFRfU1NMX1ZFUklGWVBFRVJdID0gdHJ1ZTsKICAgICAgICAgICAgJHBhcmFtc1tDVVJMT1BUX1NTTF9WRVJJRllIT1NUXSA9IDI7CiAgICAgICAgfQoKICAgICAgICAkY2ggPSBjdXJsX2luaXQoKTsKICAgICAgICBjdXJsX3NldG9wdF9hcnJheSgkY2gsICRwYXJhbXMpOwogICAgICAgICRjb250ZW50ID0gY3VybF9leGVjKCRjaCk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRjb250ZW50LCAnRmFpbGVkIHRvIGxvYWQgSldLIGNvbnRlbnRzOiAnKTsKICAgICAgICB9IGNhdGNoIChcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkY3VybEVycm9yID0gY3VybF9lcnJvcigkY2gpOwogICAgICAgICAgICAkY3VybEVycm9yTnVtYmVyID0gY3VybF9lcnJubygkY2gpOwoKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAkZS0+Z2V0TWVzc2FnZSgpLiRjdXJsRXJyb3IsCiAgICAgICAgICAgICAgICAkY3VybEVycm9yTnVtYmVyCiAgICAgICAgICAgICk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gbG9hZCBKV0sgY29udGVudHM6ICcuJGUtPmdldE1lc3NhZ2UoKSwKICAgICAgICAgICAgICAgIDAKICAgICAgICAgICAgKTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JKUJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKLyoqCiAqIENsYXNzIEpLVUpXS1NldC4KICovCmZpbmFsIGNsYXNzIEpLVUpXS1NldCBleHRlbmRzIERvd25sb2FkZWRKV0tTZXQKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSBqc29uX2RlY29kZSgkdGhpcy0+Z2V0Q29udGVudCgpLCB0cnVlKTsKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJGNvbnRlbnQsICdJbnZhbGlkIEpXSyBjb250ZW50LicpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb250ZW50LCAna2V5cycsICdJbnZhbGlkIEpXS1NldCBjb250ZW50LicpOwoKICAgICAgICByZXR1cm4gKG5ldyBKV0tTZXQoJGNvbnRlbnQpKS0+Z2V0S2V5cygpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBKV0UuCiAqLwpmaW5hbCBjbGFzcyBKV0UgaW1wbGVtZW50cyBKV0VJbnRlcmZhY2UKewogICAgdXNlIEpXVDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcT2JqZWN0XFJlY2lwaWVudEludGVyZmFjZVtdCiAgICAgKi8KICAgIHByaXZhdGUgJHJlY2lwaWVudHMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkY2lwaGVydGV4dCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGl2ID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkYWFkID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkdGFnID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkc2hhcmVkX2hlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGVuY29kZWRfc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gbnVsbDsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50UmVjaXBpZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5yZWNpcGllbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRW5jcnlwdGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRoaXMtPmdldENpcGhlcnRleHQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFJlY2lwaWVudEluZm9ybWF0aW9uKEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgJHJlY2lwaWVudF9oZWFkZXJzID0gW10pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKG51bGwgPT09ICR0aGlzLT5nZXRDaXBoZXJ0ZXh0KCksICdUaGUgSldFIGlzIGVuY3J5cHRlZC4gTm8gYWRkaXRpb25hbCByZWNpcGllbnQgYWxsb3dlZC4nKTsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+cmVjaXBpZW50c1tdID0gUmVjaXBpZW50OjpjcmVhdGVSZWNpcGllbnQoJHJlY2lwaWVudF9rZXksICRyZWNpcGllbnRfaGVhZGVycyk7CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkUmVjaXBpZW50V2l0aEVuY3J5cHRlZEtleSgkZW5jcnlwdGVkX2tleSwgYXJyYXkgJHJlY2lwaWVudF9oZWFkZXJzKQogICAgewogICAgICAgICRqd2UgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandlLT5yZWNpcGllbnRzW10gPSBSZWNpcGllbnQ6OmNyZWF0ZVJlY2lwaWVudEZyb21Mb2FkZWRKV0UoJHJlY2lwaWVudF9oZWFkZXJzLCAkZW5jcnlwdGVkX2tleSk7CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVjaXBpZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWNpcGllbnRzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gJmdldFJlY2lwaWVudCgkaWQpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHRoaXMtPnJlY2lwaWVudHMsICRpZCwgJ1RoZSByZWNpcGllbnQgZG9lcyBub3QgZXhpc3QuJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+cmVjaXBpZW50c1skaWRdOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2lwaGVydGV4dCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaXBoZXJ0ZXh0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENpcGhlcnRleHQoJGNpcGhlcnRleHQpCiAgICB7CiAgICAgICAgJGp3ZSA9IGNsb25lICR0aGlzOwogICAgICAgICRqd2UtPmNpcGhlcnRleHQgPSAkY2lwaGVydGV4dDsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBQUQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWFkOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFBRCgkYWFkKQogICAgewogICAgICAgICRqd2UgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandlLT5hYWQgPSAkYWFkOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElWKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPml2OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aElWKCRpdikKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+aXYgPSAkaXY7CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGFnKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRhZzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhUYWcoJHRhZykKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+dGFnID0gJHRhZzsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNvZGVkU2hhcmVkUHJvdGVjdGVkSGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNvZGVkX3NoYXJlZF9wcm90ZWN0ZWRfaGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhFbmNvZGVkU2hhcmVkUHJvdGVjdGVkSGVhZGVycygkZW5jb2RlZF9zaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJGp3ZSA9IGNsb25lICR0aGlzOwogICAgICAgICRqd2UtPmVuY29kZWRfc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gJGVuY29kZWRfc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycykKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVyczsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU2hhcmVkUHJvdGVjdGVkSGVhZGVyKCRrZXksICR2YWx1ZSkKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzWyRrZXldID0gJHZhbHVlOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNoYXJlZFByb3RlY3RlZEhlYWRlcigka2V5KQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzU2hhcmVkUHJvdGVjdGVkSGVhZGVyKCRrZXkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzWyRrZXldOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIHNoYXJlZCBwcm90ZWN0ZWQgaGVhZGVyICIlcyIgZG9lcyBub3QgZXhpc3QuJywgJGtleSkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzU2hhcmVkUHJvdGVjdGVkSGVhZGVyKCRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGtleSwgJHRoaXMtPnNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU2hhcmVkSGVhZGVycyhhcnJheSAkc2hhcmVkX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJGp3ZSA9IGNsb25lICR0aGlzOwogICAgICAgICRqd2UtPnNoYXJlZF9oZWFkZXJzID0gJHNoYXJlZF9oZWFkZXJzOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRIZWFkZXIoJGtleSwgJHZhbHVlKQogICAgewogICAgICAgICRqd2UgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandlLT5zaGFyZWRfaGVhZGVyc1ska2V5XSA9ICR2YWx1ZTsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaGFyZWRIZWFkZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNoYXJlZF9oZWFkZXJzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hhcmVkSGVhZGVyKCRrZXkpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oYXNTaGFyZWRIZWFkZXIoJGtleSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zaGFyZWRfaGVhZGVyc1ska2V5XTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBzaGFyZWQgaGVhZGVyICIlcyIgZG9lcyBub3QgZXhpc3QuJywgJGtleSkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzU2hhcmVkSGVhZGVyKCRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGtleSwgJHRoaXMtPnNoYXJlZF9oZWFkZXJzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQ29tcGFjdEpTT04oJGlkKQogICAgewogICAgICAgICRyZWNpcGllbnQgPSAkdGhpcy0+Z2V0UmVjaXBpZW50KCRpZCk7CgogICAgICAgICR0aGlzLT5jaGVja0hhc05vQUFEKCk7CiAgICAgICAgJHRoaXMtPmNoZWNrSGFzU2hhcmVkUHJvdGVjdGVkSGVhZGVycygpOwogICAgICAgICR0aGlzLT5jaGVja1JlY2lwaWVudEhhc05vSGVhZGVycygkaWQpOwoKICAgICAgICByZXR1cm4gc3ByaW50ZigKICAgICAgICAgICAgJyVzLiVzLiVzLiVzLiVzJywKICAgICAgICAgICAgJHRoaXMtPmdldEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksCiAgICAgICAgICAgIEJhc2U2NFVybDo6ZW5jb2RlKG51bGwgPT09ICRyZWNpcGllbnQtPmdldEVuY3J5cHRlZEtleSgpID8gJycgOiAkcmVjaXBpZW50LT5nZXRFbmNyeXB0ZWRLZXkoKSksCiAgICAgICAgICAgIEJhc2U2NFVybDo6ZW5jb2RlKG51bGwgPT09ICR0aGlzLT5nZXRJVigpID8gJycgOiAkdGhpcy0+Z2V0SVYoKSksCiAgICAgICAgICAgIEJhc2U2NFVybDo6ZW5jb2RlKCR0aGlzLT5nZXRDaXBoZXJ0ZXh0KCkpLAogICAgICAgICAgICBCYXNlNjRVcmw6OmVuY29kZShudWxsID09PSAkdGhpcy0+Z2V0VGFnKCkgPyAnJyA6ICR0aGlzLT5nZXRUYWcoKSkKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tIYXNOb0FBRCgpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGVtcHR5KCR0aGlzLT5nZXRBQUQoKSksICdUaGlzIEpXRSBoYXMgQUFEIGFuZCBjYW5ub3QgYmUgY29udmVydGVkIGludG8gQ29tcGFjdCBKU09OLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaWQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja1JlY2lwaWVudEhhc05vSGVhZGVycygkaWQpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKAogICAgICAgICAgICBlbXB0eSgkdGhpcy0+Z2V0U2hhcmVkSGVhZGVycygpKSAmJiBlbXB0eSgkdGhpcy0+Z2V0UmVjaXBpZW50KCRpZCktPmdldEhlYWRlcnMoKSksCiAgICAgICAgICAgICdUaGlzIEpXRSBoYXMgc2hhcmVkIGhlYWRlcnMgb3IgcmVjaXBpZW50IGhlYWRlcnMgYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW50byBDb21wYWN0IEpTT04uJwogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0hhc1NoYXJlZFByb3RlY3RlZEhlYWRlcnMoKQogICAgewogICAgICAgIEFzc2VydGlvbjo6bm90RW1wdHkoCiAgICAgICAgICAgICR0aGlzLT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksCiAgICAgICAgICAgICdUaGlzIEpXRSBkb2VzIG5vdCBoYXZlIHNoYXJlZCBwcm90ZWN0ZWQgaGVhZGVycyBhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBpbnRvIENvbXBhY3QgSlNPTi4nCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRmxhdHRlbmVkSlNPTigkaWQpCiAgICB7CiAgICAgICAgJHJlY2lwaWVudCA9ICR0aGlzLT5nZXRSZWNpcGllbnQoJGlkKTsKCiAgICAgICAgJGpzb24gPSAkdGhpcy0+Z2V0SlNPTkJhc2UoKTsKCiAgICAgICAgaWYgKCFlbXB0eSgkcmVjaXBpZW50LT5nZXRIZWFkZXJzKCkpKSB7CiAgICAgICAgICAgICRqc29uWydoZWFkZXInXSA9ICRyZWNpcGllbnQtPmdldEhlYWRlcnMoKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkcmVjaXBpZW50LT5nZXRFbmNyeXB0ZWRLZXkoKSkpIHsKICAgICAgICAgICAgJGpzb25bJ2VuY3J5cHRlZF9rZXknXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRyZWNpcGllbnQtPmdldEVuY3J5cHRlZEtleSgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBqc29uX2VuY29kZSgkanNvbik7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0pTT04oKQogICAgewogICAgICAgICRqc29uID0gJHRoaXMtPmdldEpTT05CYXNlKCk7CiAgICAgICAgJGpzb25bJ3JlY2lwaWVudHMnXSA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Z2V0UmVjaXBpZW50cygpIGFzICRyZWNpcGllbnQpIHsKICAgICAgICAgICAgJHRlbXAgPSBbXTsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkcmVjaXBpZW50LT5nZXRIZWFkZXJzKCkpKSB7CiAgICAgICAgICAgICAgICAkdGVtcFsnaGVhZGVyJ10gPSAkcmVjaXBpZW50LT5nZXRIZWFkZXJzKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkcmVjaXBpZW50LT5nZXRFbmNyeXB0ZWRLZXkoKSkpIHsKICAgICAgICAgICAgICAgICR0ZW1wWydlbmNyeXB0ZWRfa2V5J10gPSBCYXNlNjRVcmw6OmVuY29kZSgkcmVjaXBpZW50LT5nZXRFbmNyeXB0ZWRLZXkoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGpzb25bJ3JlY2lwaWVudHMnXVtdID0gJHRlbXA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4ganNvbl9lbmNvZGUoJGpzb24pOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEpTT05CYXNlKCkKICAgIHsKICAgICAgICAkanNvbiA9IFsKICAgICAgICAgICAgJ2NpcGhlcnRleHQnID0+IEJhc2U2NFVybDo6ZW5jb2RlKCR0aGlzLT5nZXRDaXBoZXJ0ZXh0KCkpLAogICAgICAgIF07CiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5nZXRJVigpKSB7CiAgICAgICAgICAgICRqc29uWydpdiddID0gQmFzZTY0VXJsOjplbmNvZGUoJHRoaXMtPmdldElWKCkpOwogICAgICAgIH0KICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmdldFRhZygpKSB7CiAgICAgICAgICAgICRqc29uWyd0YWcnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR0aGlzLT5nZXRUYWcoKSk7CiAgICAgICAgfQogICAgICAgIGlmIChudWxsICE9PSAkdGhpcy0+Z2V0QUFEKCkpIHsKICAgICAgICAgICAgJGpzb25bJ2FhZCddID0gQmFzZTY0VXJsOjplbmNvZGUoJHRoaXMtPmdldEFBRCgpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+Z2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVycygpKSkgewogICAgICAgICAgICAkanNvblsncHJvdGVjdGVkJ10gPSAkdGhpcy0+Z2V0RW5jb2RlZFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFlbXB0eSgkdGhpcy0+Z2V0U2hhcmVkSGVhZGVycygpKSkgewogICAgICAgICAgICAkanNvblsndW5wcm90ZWN0ZWQnXSA9ICR0aGlzLT5nZXRTaGFyZWRIZWFkZXJzKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGpzb247CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWEInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV0VJbnRlcmZhY2UgZXh0ZW5kcyBKV1RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcmVjaXBpZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIEpXUy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRSZWNpcGllbnRzKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRW5jcnlwdGVkKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9oZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRSZWNpcGllbnRJbmZvcm1hdGlvbihKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXksICRyZWNpcGllbnRfaGVhZGVycyA9IFtdKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZW5jcnlwdGVkX2tleQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICRyZWNpcGllbnRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkUmVjaXBpZW50V2l0aEVuY3J5cHRlZEtleSgkZW5jcnlwdGVkX2tleSwgYXJyYXkgJHJlY2lwaWVudF9oZWFkZXJzKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlY2lwaWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBKV1MuCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50SW50ZXJmYWNlW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlY2lwaWVudHMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0UmVjaXBpZW50KCRpZCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRyZWNpcGllbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9Db21wYWN0SlNPTigkcmVjaXBpZW50KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJHJlY2lwaWVudAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ZsYXR0ZW5lZEpTT04oJHJlY2lwaWVudCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9KU09OKCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFRoZSBjeXBoZXJ0ZXh0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDaXBoZXJ0ZXh0KCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaXBoZXJ0ZXh0CiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQ2lwaGVydGV4dCgkY2lwaGVydGV4dCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBQUQoKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFhZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFBRCgkYWFkKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElWKCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpdgogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aElWKCRpdik7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUYWcoKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHRhZwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFRhZygkdGFnKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGVkX3NoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCRlbmNvZGVkX3NoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAka2V5CiAgICAgKiBAcGFyYW0gbWl4ZWR8bnVsbCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRQcm90ZWN0ZWRIZWFkZXIoJGtleSwgJHZhbHVlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1NoYXJlZFByb3RlY3RlZEhlYWRlcigka2V5KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNoYXJlZEhlYWRlcnMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkc2hhcmVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRIZWFkZXJzKGFycmF5ICRzaGFyZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAka2V5CiAgICAgKiBAcGFyYW0gbWl4ZWR8bnVsbCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRIZWFkZXIoJGtleSwgJHZhbHVlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hhcmVkSGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1NoYXJlZEhlYWRlcigka2V5KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBKV0suCiAqLwpmaW5hbCBjbGFzcyBKV0sgaW1wbGVtZW50cyBKV0tJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIC8qKgogICAgICogSldLIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkdmFsdWVzID0gW10pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHZhbHVlcywgJ2t0eScsICdUaGUgcGFyYW1ldGVyICJrdHkiIGlzIG1hbmRhdG9yeS4nKTsKCiAgICAgICAgJHRoaXMtPnZhbHVlcyA9ICR2YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEFsbCgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oYXMoJGtleSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJGtleV07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgdmFsdWUgaWRlbnRpZmllZCBieSAiJXMiIGRvZXMgbm90IGV4aXN0LicsICRrZXkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhcygka2V5KQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICR0aGlzLT5nZXRBbGwoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGwoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aHVtYnByaW50KCRoYXNoX2FsZ29yaXRobSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJGhhc2hfYWxnb3JpdGhtLCBoYXNoX2FsZ29zKCksIHNwcmludGYoJ0hhc2ggYWxnb3JpdGhtICIlcyIgaXMgbm90IHN1cHBvcnRlZCcsICRoYXNoX2FsZ29yaXRobSkpOwoKICAgICAgICAkdmFsdWVzID0gYXJyYXlfaW50ZXJzZWN0X2tleSgkdGhpcy0+Z2V0QWxsKCksIGFycmF5X2ZsaXAoWydrdHknLCAnbicsICdlJywgJ2NydicsICd4JywgJ3knLCAnayddKSk7CiAgICAgICAga3NvcnQoJHZhbHVlcyk7CiAgICAgICAgJGlucHV0ID0ganNvbl9lbmNvZGUoJHZhbHVlcyk7CgogICAgICAgIHJldHVybiBCYXNlNjRVcmw6OmVuY29kZShoYXNoKCRoYXNoX2FsZ29yaXRobSwgJGlucHV0LCB0cnVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUHVibGljKCkKICAgIHsKICAgICAgICAkdmFsdWVzID0gJHRoaXMtPmdldEFsbCgpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9kaWZmX2tleSgkdmFsdWVzLCBhcnJheV9mbGlwKFsncCcsICdkJywgJ3EnLCAnZHAnLCAnZHEnLCAncWknXSkpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV0tJbnRlcmZhY2UgZXh0ZW5kcyBcSnNvblNlcmlhbGl6YWJsZQp7CiAgICAvKioKICAgICAqIEdldCBhbGwgdmFsdWVzIHN0b3JlZCBpbiB0aGUgSldLIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IFZhbHVlcyBvZiB0aGUgSldLIG9iamVjdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsKCk7CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHZhbHVlIHdpdGggYSBzcGVjaWZpYyBrZXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkfG51bGwgVGhlIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoJGtleSk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIEpXSyBoYXMgdGhlIHZhbHVlIGlkZW50aWZpZWQgYnkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhcygka2V5KTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHRodW1icHJpbnQgb2YgdGhlIGtleS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NjM4CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkaGFzaF9hbGdvcml0aG0KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGh1bWJwcmludCgkaGFzaF9hbGdvcml0aG0pOwoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1B1YmxpYygpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBKV0tTZXQuCiAqLwpmaW5hbCBjbGFzcyBKV0tTZXQgZXh0ZW5kcyBCYXNlSldLU2V0IGltcGxlbWVudHMgSldLU2V0SW50ZXJmYWNlCnsKICAgIHVzZSBKV0tTZXRQRU07CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAka2V5cyA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAka2V5cyA9IFtdKQogICAgewogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdrZXlzJywgJGtleXMpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRrZXlzWydrZXlzJ10gYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+YWRkS2V5KG5ldyBKV0soJHZhbHVlKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmtleXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgJHRoaXMtPmtleXNbXSA9ICRrZXk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcmVwZW5kS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIGFycmF5X3Vuc2hpZnQoJHRoaXMtPmtleXMsICRrZXkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlS2V5KCRrZXkpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGtleSwgJHRoaXMtPmtleXMpKSB7CiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5rZXlzWyRrZXldKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSetInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV0tTZXRJbnRlcmZhY2UgZXh0ZW5kcyBcQ291bnRhYmxlLCBcSXRlcmF0b3IsIFxKc29uU2VyaWFsaXphYmxlLCBcQXJyYXlBY2Nlc3MKewogICAgLyoqCiAgICAgKiBHZXQga2V5IGZyb20gc2V0IGF0IGluZGV4LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGluZGV4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXkoJGluZGV4KTsKCiAgICAvKioKICAgICAqIENoZWNrIGlmIHNldCBoYXMga2V5IGF0IGluZGV4LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGluZGV4CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNLZXkoJGluZGV4KTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIGtleXMgaW4gdGhlIGtleSBzZXQuCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlW10gQW4gYXJyYXkgb2Yga2V5cyBzdG9yZWQgaW4gdGhlIGtleSBzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEtleXMoKTsKCiAgICAvKioKICAgICAqIEFkZCBrZXkgaW4gdGhlIGtleSBzZXQuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSBBIGtleSB0byBzdG9yZSBpbiB0aGUga2V5IHNldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KTsKCiAgICAvKioKICAgICAqIFByZXBlbmQga2V5IHRvIHRoZSBzZXQuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSBBIGtleSB0byBzdG9yZSBpbiB0aGUga2V5IHNldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJlcGVuZEtleShKV0tJbnRlcmZhY2UgJGtleSk7CgogICAgLyoqCiAgICAgKiBSZW1vdmUga2V5IGZyb20gdGhlIGtleSBzZXQuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkaW5kZXggS2V5IHRvIHJlbW92ZSBmcm9tIHRoZSBrZXkgc2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVLZXkoJGluZGV4KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudEtleXMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdHlwZSAgICAgICAgIE11c3QgYmUgJ3NpZycgKHNpZ25hdHVyZSkgb3IgJ2VuYycgKGVuY3J5cHRpb24pCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGFsZ29yaXRobSAgICBTcGVjaWZpZXMgdGhlIGFsZ29yaXRobSB0byBiZSB1c2VkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgJHJlc3RyaWN0aW9ucyBNb3JlIHJlc3RyaWN0aW9ucyBzdWNoIGFzICdraWQnIG9yICdrdHknCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbGVjdEtleSgkdHlwZSwgJGFsZ29yaXRobSA9IG51bGwsIGFycmF5ICRyZXN0cmljdGlvbnMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIFJTQS9FQyBrZXlzIGluIHRoZSBrZXkgc2V0IGludG8gUEVNIGZvcm1hdAogICAgICogTm90ZSB0aGF0IGlmIHRoZSBrZXkgc2V0IGNvbnRhaW5zIG90aGVyIGtleSB0eXBlcyAobm9uZSwgb2N0LCBPS1AuLi4pLCB0aGV5IHdpbGwgbm90IGJlIHBhcnQgb2YgdGhlIHJlc3VsdC4KICAgICAqIElmIGtleXMgaGF2ZSBhIGtleSBJRCwgaXQgaXMgdXNlZCBhcyBpbmRleC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1BFTSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSetPEM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBKb3NlXEtleUNvbnZlcnRlclxFQ0tleTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKCi8qKgogKiBDbGFzcyBKV0tTZXRQRU0uCiAqLwp0cmFpdCBKV0tTZXRQRU0KewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9QRU0oKQogICAgewogICAgICAgICRrZXlzID0gJHRoaXMtPmdldEtleXMoKTsKICAgICAgICAkcmVzdWx0ID0gW107CgogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgka2V5LT5nZXQoJ2t0eScpLCBbJ1JTQScsICdFQyddKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwZW0gPSAkdGhpcy0+Z2V0UEVNKCRrZXkpOwogICAgICAgICAgICBpZiAoJGtleS0+aGFzKCdraWQnKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFska2V5LT5nZXQoJ2tpZCcpXSA9ICRwZW07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkcGVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFBFTShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRrZXktPmdldCgna3R5JykpIHsKICAgICAgICAgICAgY2FzZSAnUlNBJzoKICAgICAgICAgICAgICAgIHJldHVybiAobmV3IFJTQUtleSgka2V5KSktPnRvUEVNKCk7CiAgICAgICAgICAgIGNhc2UgJ0VDJzoKICAgICAgICAgICAgICAgIHJldHVybiAobmV3IEVDS2V5KCRrZXkpKS0+dG9QRU0oKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSets.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKLyoqCiAqIENsYXNzIEpXS1NldHMuCiAqLwpmaW5hbCBjbGFzcyBKV0tTZXRzIGV4dGVuZHMgQmFzZUpXS1NldCBpbXBsZW1lbnRzIEpXS1NldHNJbnRlcmZhY2UKewogICAgdXNlIEpXS1NldFBFTTsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZVtdCiAgICAgKi8KICAgIHByaXZhdGUgJGp3a3NldHMgPSBbXTsKCiAgICAvKioKICAgICAqIEpXS1NldHMgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2VbXSAkandrc2V0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGp3a3NldHMgPSBbXSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmFsbElzSW5zdGFuY2VPZigkandrc2V0cywgSldLU2V0SW50ZXJmYWNlOjpjbGFzcyk7CgogICAgICAgICR0aGlzLT5qd2tzZXRzID0gJGp3a3NldHM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRLZXlTZXQoSldLU2V0SW50ZXJmYWNlICRqd2tzZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPmp3a3NldHNbXSA9ICRqd2tzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlzKCkKICAgIHsKICAgICAgICAka2V5cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+andrc2V0cyBhcyAkandrc2V0KSB7CiAgICAgICAgICAgICRrZXlzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAka2V5cywKICAgICAgICAgICAgICAgICRqd2tzZXQtPmdldEtleXMoKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRrZXlzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIC8vTm90IGF2YWlsYWJsZQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJlcGVuZEtleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAvL05vdCBhdmFpbGFibGUKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUtleSgkaW5kZXgpCiAgICB7CiAgICAgICAgLy9Ob3QgYXZhaWxhYmxlCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSetsInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgSldLU2V0c0ludGVyZmFjZS4KICovCmludGVyZmFjZSBKV0tTZXRzSW50ZXJmYWNlIGV4dGVuZHMgSldLU2V0SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a3NldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5U2V0KEpXS1NldEludGVyZmFjZSAkandrc2V0KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBKV1MuCiAqLwpmaW5hbCBjbGFzcyBKV1MgaW1wbGVtZW50cyBKV1NJbnRlcmZhY2UKewogICAgdXNlIEpXVDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRpc19wYXlsb2FkX2RldGFjaGVkID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGVuY29kZWRfcGF5bG9hZCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVzID0gW107CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1BheWxvYWREZXRhY2hlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pc19wYXlsb2FkX2RldGFjaGVkOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aERldGFjaGVkUGF5bG9hZCgpCiAgICB7CiAgICAgICAgJGp3dCA9IGNsb25lICR0aGlzOwogICAgICAgICRqd3QtPmlzX3BheWxvYWRfZGV0YWNoZWQgPSB0cnVlOwoKICAgICAgICByZXR1cm4gJGp3dDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhBdHRhY2hlZFBheWxvYWQoKQogICAgewogICAgICAgICRqd3QgPSBjbG9uZSAkdGhpczsKICAgICAgICAkand0LT5pc19wYXlsb2FkX2RldGFjaGVkID0gZmFsc2U7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEVuY29kZWRQYXlsb2FkKCRlbmNvZGVkX3BheWxvYWQpCiAgICB7CiAgICAgICAgJGp3dCA9IGNsb25lICR0aGlzOwogICAgICAgICRqd3QtPmVuY29kZWRfcGF5bG9hZCA9ICRlbmNvZGVkX3BheWxvYWQ7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5jb2RlZFBheWxvYWQoU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgaWYgKHRydWUgPT09ICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5lbmNvZGVkX3BheWxvYWQpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNvZGVkX3BheWxvYWQ7CiAgICAgICAgfQogICAgICAgICRwYXlsb2FkID0gJHRoaXMtPmdldFBheWxvYWQoKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkcGF5bG9hZCkpIHsKICAgICAgICAgICAgJHBheWxvYWQgPSBqc29uX2VuY29kZSgkcGF5bG9hZCk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6bm90TnVsbCgkcGF5bG9hZCwgJ1Vuc3VwcG9ydGVkIHBheWxvYWQuJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlKSA/IEJhc2U2NFVybDo6ZW5jb2RlKCRwYXlsb2FkKSA6ICRwYXlsb2FkOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gJmdldFNpZ25hdHVyZSgkaWQpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zaWduYXR1cmVzWyRpZF0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlc1skaWRdOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBzaWduYXR1cmUgZG9lcyBub3QgZXhpc3QuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRTaWduYXR1cmVJbmZvcm1hdGlvbihKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRwcm90ZWN0ZWRfaGVhZGVycywgYXJyYXkgJGhlYWRlcnMgPSBbXSkKICAgIHsKICAgICAgICAkandzID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3cy0+c2lnbmF0dXJlc1tdID0gU2lnbmF0dXJlOjpjcmVhdGVTaWduYXR1cmUoJHNpZ25hdHVyZV9rZXksICRwcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMpOwoKICAgICAgICByZXR1cm4gJGp3czsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZUZyb21Mb2FkZWREYXRhKCRzaWduYXR1cmUsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycykKICAgIHsKICAgICAgICAkandzID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3cy0+c2lnbmF0dXJlc1tdID0gU2lnbmF0dXJlOjpjcmVhdGVTaWduYXR1cmVGcm9tTG9hZGVkRGF0YSgkc2lnbmF0dXJlLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMpOwoKICAgICAgICByZXR1cm4gJGp3czsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50U2lnbmF0dXJlcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5zaWduYXR1cmVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQ29tcGFjdEpTT04oJGlkKQogICAgewogICAgICAgICRzaWduYXR1cmUgPSAkdGhpcy0+Z2V0U2lnbmF0dXJlKCRpZCk7CgogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgKICAgICAgICAgICAgZW1wdHkoJHNpZ25hdHVyZS0+Z2V0SGVhZGVycygpKSwKICAgICAgICAgICAgJ1RoZSBzaWduYXR1cmUgY29udGFpbnMgdW5wcm90ZWN0ZWQgaGVhZGVycyBhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBpbnRvIGNvbXBhY3QgSlNPTicKICAgICAgICApOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlKSB8fCBlbXB0eSgkdGhpcy0+Z2V0RW5jb2RlZFBheWxvYWQoJHNpZ25hdHVyZSkpLCAnVW5hYmxlIHRvIGNvbnZlcnQgdGhlIEpXUyB3aXRoIG5vbi1lbmNvZGVkIHBheWxvYWQuJyk7CgogICAgICAgIHJldHVybiBzcHJpbnRmKAogICAgICAgICAgICAnJXMuJXMuJXMnLAogICAgICAgICAgICAkc2lnbmF0dXJlLT5nZXRFbmNvZGVkUHJvdGVjdGVkSGVhZGVycygpLAogICAgICAgICAgICAkdGhpcy0+Z2V0RW5jb2RlZFBheWxvYWQoJHNpZ25hdHVyZSksCiAgICAgICAgICAgIEJhc2U2NFVybDo6ZW5jb2RlKCRzaWduYXR1cmUtPmdldFNpZ25hdHVyZSgpKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ZsYXR0ZW5lZEpTT04oJGlkKQogICAgewogICAgICAgICRzaWduYXR1cmUgPSAkdGhpcy0+Z2V0U2lnbmF0dXJlKCRpZCk7CgogICAgICAgICRkYXRhID0gW107CiAgICAgICAgJHZhbHVlcyA9IFsKICAgICAgICAgICAgJ3BheWxvYWQnID0+ICR0aGlzLT5nZXRFbmNvZGVkUGF5bG9hZCgkc2lnbmF0dXJlKSwKICAgICAgICAgICAgJ3Byb3RlY3RlZCcgPT4gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcnMoKSwKICAgICAgICAgICAgJ2hlYWRlcicgPT4gJHNpZ25hdHVyZS0+Z2V0SGVhZGVycygpLAogICAgICAgIF07CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCFlbXB0eSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkZGF0YVsnc2lnbmF0dXJlJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSk7CgogICAgICAgIHJldHVybiBqc29uX2VuY29kZSgkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0pTT04oKQogICAgewogICAgICAgIEFzc2VydGlvbjo6Z3JlYXRlclRoYW4oJHRoaXMtPmNvdW50U2lnbmF0dXJlcygpLCAwLCAnTm8gc2lnbmF0dXJlLicpOwoKICAgICAgICAkZGF0YSA9IFtdOwogICAgICAgICR0aGlzLT5jaGVja1BheWxvYWRFbmNvZGluZygpOwoKICAgICAgICBpZiAoZmFsc2UgPT09ICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgICRkYXRhWydwYXlsb2FkJ10gPSAkdGhpcy0+Z2V0RW5jb2RlZFBheWxvYWQoJHRoaXMtPmdldFNpZ25hdHVyZSgwKSk7CiAgICAgICAgfQoKICAgICAgICAkZGF0YVsnc2lnbmF0dXJlcyddID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmdldFNpZ25hdHVyZXMoKSBhcyAkc2lnbmF0dXJlKSB7CiAgICAgICAgICAgICR0bXAgPSBbJ3NpZ25hdHVyZScgPT4gQmFzZTY0VXJsOjplbmNvZGUoJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlKCkpXTsKICAgICAgICAgICAgJHZhbHVlcyA9IFsKICAgICAgICAgICAgICAgICdwcm90ZWN0ZWQnID0+ICRzaWduYXR1cmUtPmdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCksCiAgICAgICAgICAgICAgICAnaGVhZGVyJyA9PiAkc2lnbmF0dXJlLT5nZXRIZWFkZXJzKCksCiAgICAgICAgICAgIF07CgogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoIWVtcHR5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAkdG1wWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRkYXRhWydzaWduYXR1cmVzJ11bXSA9ICR0bXA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4ganNvbl9lbmNvZGUoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzUGF5bG9hZEVuY29kZWQoU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgcmV0dXJuICEkc2lnbmF0dXJlLT5oYXNQcm90ZWN0ZWRIZWFkZXIoJ2I2NCcpIHx8IHRydWUgPT09ICRzaWduYXR1cmUtPmdldFByb3RlY3RlZEhlYWRlcignYjY0Jyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja1BheWxvYWRFbmNvZGluZygpCiAgICB7CiAgICAgICAgJGlzX2VuY29kZWQgPSBudWxsOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5nZXRTaWduYXR1cmVzKCkgYXMgJHNpZ25hdHVyZSkgewogICAgICAgICAgICBpZiAobnVsbCA9PT0gJGlzX2VuY29kZWQpIHsKICAgICAgICAgICAgICAgICRpc19lbmNvZGVkID0gJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQoJHNpZ25hdHVyZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+aXNQYXlsb2FkRGV0YWNoZWQoKSkgewogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgkaXNfZW5jb2RlZCwgJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQoJHNpZ25hdHVyZSksICdGb3JlaWduIHBheWxvYWQgZW5jb2RpbmcgZGV0ZWN0ZWQuIFRoZSBKV1MgY2Fubm90IGJlIGNvbnZlcnRlZC4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWSInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV1NJbnRlcmZhY2UgZXh0ZW5kcyBKV1RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUGF5bG9hZERldGFjaGVkKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhEZXRhY2hlZFBheWxvYWQoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEF0dGFjaGVkUGF5bG9hZCgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZQogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRQYXlsb2FkKFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBzaWduYXR1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBKV1MuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50U2lnbmF0dXJlcygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZUluZm9ybWF0aW9uKEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycyA9IFtdKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkc2lnbmF0dXJlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU2lnbmF0dXJlRnJvbUxvYWRlZERhdGEoJHNpZ25hdHVyZSwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIEpXUy4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2VbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlcygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uICZnZXRTaWduYXR1cmUoJGlkKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQ29tcGFjdEpTT04oJGlkKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRmxhdHRlbmVkSlNPTigkaWQpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvSlNPTigpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBKV1QuCiAqLwp0cmFpdCBKV1QKewogICAgLyoqCiAgICAgKiBAdmFyIG1peGVkfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcGF5bG9hZCA9IG51bGw7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXlsb2FkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBheWxvYWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUGF5bG9hZCgkcGF5bG9hZCkKICAgIHsKICAgICAgICAkand0ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3dC0+cGF5bG9hZCA9ICRwYXlsb2FkOwoKICAgICAgICByZXR1cm4gJGp3dDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENsYWltKCRrZXkpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oYXNDbGFpbSgka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnBheWxvYWRbJGtleV07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgcGF5bG9hZCBkb2VzIG5vdCBjb250YWluIGNsYWltICIlcyIuJywgJGtleSkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2xhaW1zKCkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHRoaXMtPnBheWxvYWQpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cGF5bG9hZDsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgcGF5bG9hZCBkb2VzIG5vdCBjb250YWluIGNsYWltcy4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NsYWltKCRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYXNDbGFpbXMoKSAmJiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICR0aGlzLT5wYXlsb2FkKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NsYWltcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGlzX2FycmF5KCR0aGlzLT5wYXlsb2FkKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWTInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV1RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwYXlsb2FkIG9mIHRoZSBKV1QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgIFBheWxvYWQKICAgICAqIEByZXR1cm4gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICBQYXlsb2FkCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgICAgUGF5bG9hZAogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlIFBheWxvYWQKICAgICAqIEByZXR1cm4gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICBQYXlsb2FkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXlsb2FkKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHBheWxvYWQKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXlsb2FkKCRwYXlsb2FkKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBwYXlsb2FkIG9mIHRoZSBzcGVjaWZpZWQga2V5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIFBheWxvYWQgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENsYWltKCRrZXkpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY2xhaW1zLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgUGF5bG9hZCB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2xhaW1zKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzQ2xhaW0oJGtleSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NsYWltcygpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/PublicJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBQdWJsaWNKV0tTZXQuCiAqLwpmaW5hbCBjbGFzcyBQdWJsaWNKV0tTZXQgZXh0ZW5kcyBCYXNlSldLU2V0IGltcGxlbWVudHMgSldLU2V0SW50ZXJmYWNlCnsKICAgIHVzZSBKV0tTZXRQRU07CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkandrc2V0OwoKICAgIC8qKgogICAgICogUHVibGljSldLU2V0IGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEpXS1NldEludGVyZmFjZSAkandrc2V0KQogICAgewogICAgICAgICR0aGlzLT5qd2tzZXQgPSAkandrc2V0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpCiAgICB7CiAgICAgICAgJGtleXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmp3a3NldC0+Z2V0S2V5cygpIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKGluX2FycmF5KCRrZXktPmdldCgna3R5JyksIFsnbm9uZScsICdvY3QnXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRrZXlzW10gPSAka2V5LT50b1B1YmxpYygpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRrZXlzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgICR0aGlzLT5qd2tzZXQtPmFkZEtleSgka2V5KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByZXBlbmRLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgJHRoaXMtPmp3a3NldC0+cHJlcGVuZEtleSgka2V5KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUtleSgkaW5kZXgpCiAgICB7CiAgICAgICAgLy9Ob3QgYXZhaWxhYmxlCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/Recipient.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBFbmNyeXB0aW9uSW5zdHJ1Y3Rpb24uCiAqLwpmaW5hbCBjbGFzcyBSZWNpcGllbnQgaW1wbGVtZW50cyBSZWNpcGllbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkZW5jcnlwdGVkX2tleSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVjaXBpZW50X2tleSA9IG51bGw7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50RnJvbUxvYWRlZEpXRShhcnJheSAkaGVhZGVycywgJGVuY3J5cHRlZF9rZXkpCiAgICB7CiAgICAgICAgJHJlY2lwaWVudCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJlY2lwaWVudC0+aGVhZGVycyA9ICRoZWFkZXJzOwogICAgICAgICRyZWNpcGllbnQtPmVuY3J5cHRlZF9rZXkgPSAkZW5jcnlwdGVkX2tleTsKCiAgICAgICAgcmV0dXJuICRyZWNpcGllbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50KEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJGhlYWRlcnMgPSBbXSkKICAgIHsKICAgICAgICAkcmVjaXBpZW50ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmVjaXBpZW50LT5oZWFkZXJzID0gJGhlYWRlcnM7CiAgICAgICAgJHJlY2lwaWVudC0+cmVjaXBpZW50X2tleSA9ICRyZWNpcGllbnRfa2V5OwoKICAgICAgICByZXR1cm4gJHJlY2lwaWVudDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcigka2V5KQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzSGVhZGVyKCRrZXkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyc1ska2V5XTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBoZWFkZXIgIiVzIiBkb2VzIG5vdCBleGlzdC4nLCAka2V5KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNIZWFkZXIoJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+aGVhZGVycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNyeXB0ZWRLZXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZW5jcnlwdGVkX2tleTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlY2lwaWVudEtleSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWNpcGllbnRfa2V5OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/RecipientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgUmVjaXBpZW50SW50ZXJmYWNlLgogKi8KaW50ZXJmYWNlIFJlY2lwaWVudEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkaGVhZGVycwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRlbmNyeXB0ZWRfa2V5CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50RnJvbUxvYWRlZEpXRShhcnJheSAkaGVhZGVycywgJGVuY3J5cHRlZF9rZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50KEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJGhlYWRlcnMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgdW5wcm90ZWN0ZWQgaGVhZGVyIG9mIHRoZSBzcGVjaWZpZWQga2V5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0hlYWRlcigka2V5KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNyeXB0ZWRLZXkoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVjaXBpZW50S2V5KCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/RotatableInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgUm90YXRhYmxlSkludGVyZmFjZS4KICovCmludGVyZmFjZSBSb3RhdGFibGVJbnRlcmZhY2UgZXh0ZW5kcyBTdG9yYWJsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGNyZWF0ZSBhIG5ldyBrZXkgYW5kIGFkZCBpdCB0byB0aGUga2V5IHNldAogICAgICogVGhlIG9sZGVzdCBrZXkgaXMgcmVtb3ZlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJvdGF0ZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/RotatableJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBSb3RhdGFibGVKV0tTZXQuCiAqLwpmaW5hbCBjbGFzcyBSb3RhdGFibGVKV0tTZXQgZXh0ZW5kcyBTdG9yYWJsZUpXS1NldCBpbXBsZW1lbnRzIFJvdGF0YWJsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEludGVydmFsIGF0IHdoaWNoIGtleXMgc2hvdWxkIGJlIHJvdGF0ZWQuCiAgICAgKgogICAgICogQHZhciBpbnR8bnVsbAogICAgICovCiAgICBwcml2YXRlICRpbnRlcnZhbDsKCiAgICAvKioKICAgICAqIFJvdGF0YWJsZUpXS1NldCBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGZpbGVuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgJHBhcmFtZXRlcnMKICAgICAqIEBwYXJhbSBpbnQgICAgICAkbmJfa2V5cwogICAgICogQHBhcmFtIGludHxudWxsICRpbnRlcnZhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZpbGVuYW1lLCBhcnJheSAkcGFyYW1ldGVycywgJG5iX2tleXMsICRpbnRlcnZhbCA9IG51bGwpCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkZmlsZW5hbWUsICRwYXJhbWV0ZXJzLCAkbmJfa2V5cyk7CgogICAgICAgICR0aGlzLT5pbnRlcnZhbCA9ICRpbnRlcnZhbDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEpXS1NldCgpCiAgICB7CiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgbmVlZCB0byByb3RhdGUga2V5cyB1cG9uIGV2ZXJ5IGludGVyYWN0aW9uIHdpdGggdGhlIHVuZGVybHlpbmcgSldLIHNldAogICAgICAgICR0aGlzLT5yb3RhdGVJZk5lZWRlZCgpOwoKICAgICAgICByZXR1cm4gcGFyZW50OjpnZXRKV0tTZXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJvdGF0ZSgpCiAgICB7CiAgICAgICAgJGp3a3NldCA9IHBhcmVudDo6Z2V0SldLU2V0KCk7CgogICAgICAgIC8vIFJlbW92ZSBsYXN0IGtleSBpbiBzZXQKICAgICAgICAkandrc2V0LT5yZW1vdmVLZXkoJGp3a3NldC0+Y291bnRLZXlzKCkgLSAxKTsKCiAgICAgICAgLy8gUHJlcGVuZCBuZXcga2V5IHRvIHNldAogICAgICAgICRqd2tzZXQtPnByZXBlbmRLZXkoJHRoaXMtPmNyZWF0ZUpXSygpKTsKCiAgICAgICAgLy8gU2F2ZSBuZXcga2V5IHNldAogICAgICAgICR0aGlzLT5zYXZlT2JqZWN0KCRqd2tzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogUm90YXRlIGtleSBzZXQgaWYgbGFzdCBtb2RpZmljYXRpb24gdGltZSBpcyBkdWUuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcm90YXRlSWZOZWVkZWQoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+aW50ZXJ2YWwpICYmICR0aGlzLT5pbnRlcnZhbCA+PSAwKSB7CiAgICAgICAgICAgICRtb2RpZmljYXRpb25UaW1lID0gJHRoaXMtPmdldExhc3RNb2RpZmljYXRpb25UaW1lKCk7CgogICAgICAgICAgICBpZiAobnVsbCA9PT0gJG1vZGlmaWNhdGlvblRpbWUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWdlbigpOwogICAgICAgICAgICB9IGVsc2VpZiAoKCRtb2RpZmljYXRpb25UaW1lICsgJHRoaXMtPmludGVydmFsKSA8IHRpbWUoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnJvdGF0ZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/Signature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBTaWduYXR1cmVJbnN0cnVjdGlvbi4KICovCmZpbmFsIGNsYXNzIFNpZ25hdHVyZSBpbXBsZW1lbnRzIFNpZ25hdHVyZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVycyA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHByb3RlY3RlZF9oZWFkZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25hdHVyZTsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVfa2V5OwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZUZyb21Mb2FkZWREYXRhKCRzaWduYXR1cmUsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycykKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkb2JqZWN0LT5lbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzID0gJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnM7CiAgICAgICAgaWYgKG51bGwgIT09ICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzKSB7CiAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycyA9IGpzb25fZGVjb2RlKEJhc2U2NFVybDo6ZGVjb2RlKCRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzKSwgdHJ1ZSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6aXNBcnJheSgkcHJvdGVjdGVkX2hlYWRlcnMsICdVbmFibGUgdG8gZGVjb2RlIHRoZSBwcm90ZWN0ZWQgaGVhZGVycy4nKTsKICAgICAgICAgICAgJG9iamVjdC0+cHJvdGVjdGVkX2hlYWRlcnMgPSAkcHJvdGVjdGVkX2hlYWRlcnM7CiAgICAgICAgfQogICAgICAgICRvYmplY3QtPnNpZ25hdHVyZSA9ICRzaWduYXR1cmU7CiAgICAgICAgJG9iamVjdC0+aGVhZGVycyA9ICRoZWFkZXJzOwoKICAgICAgICByZXR1cm4gJG9iamVjdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVTaWduYXR1cmUoSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgc2VsZigpOwogICAgICAgICRvYmplY3QtPnByb3RlY3RlZF9oZWFkZXJzID0gJHByb3RlY3RlZF9oZWFkZXJzOwogICAgICAgIGlmICghZW1wdHkoJHByb3RlY3RlZF9oZWFkZXJzKSkgewogICAgICAgICAgICAkb2JqZWN0LT5lbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzID0gQmFzZTY0VXJsOjplbmNvZGUoanNvbl9lbmNvZGUoJHByb3RlY3RlZF9oZWFkZXJzKSk7CiAgICAgICAgfQogICAgICAgICRvYmplY3QtPnNpZ25hdHVyZV9rZXkgPSAkc2lnbmF0dXJlX2tleTsKICAgICAgICAkb2JqZWN0LT5oZWFkZXJzID0gJGhlYWRlcnM7CgogICAgICAgIHJldHVybiAkb2JqZWN0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdGVjdGVkSGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcm90ZWN0ZWRfaGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcm90ZWN0ZWRIZWFkZXIoJGtleSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmhhc1Byb3RlY3RlZEhlYWRlcigka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldFByb3RlY3RlZEhlYWRlcnMoKVska2V5XTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyICIlcyIgZG9lcyBub3QgZXhpc3QnLCAka2V5KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNQcm90ZWN0ZWRIZWFkZXIoJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+Z2V0UHJvdGVjdGVkSGVhZGVycygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcigka2V5KQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzSGVhZGVyKCRrZXkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyc1ska2V5XTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBoZWFkZXIgIiVzIiBkb2VzIG5vdCBleGlzdCcsICRrZXkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0hlYWRlcigka2V5KQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICR0aGlzLT5oZWFkZXJzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsSGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X21lcmdlKAogICAgICAgICAgICAkdGhpcy0+Z2V0UHJvdGVjdGVkSGVhZGVycygpLAogICAgICAgICAgICAkdGhpcy0+Z2V0SGVhZGVycygpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpZ25hdHVyZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpZ25hdHVyZUtleSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVfa2V5OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/SignatureInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBTaWduYXR1cmUgSW5zdHJ1Y3Rpb24gSW50ZXJmYWNlLgogKgogKiBUaGlzIGludGVyZmFjZSBpcyByZXF1aXJlZCBieSB0aGUgU2lnbmVySW50ZXJmYWNlIHRvIHNpZ25lZCBwYXlsb2FkcyBhbmQgY3JlYXRlIGEgSldTLgogKi8KaW50ZXJmYWNlIFNpZ25hdHVyZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkc2lnbmF0dXJlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XFNpZ25hdHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZUZyb21Mb2FkZWREYXRhKCRzaWduYXR1cmUsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHByb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XFNpZ25hdHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZShKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRwcm90ZWN0ZWRfaGVhZGVycywgYXJyYXkgJGhlYWRlcnMpOwoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVLZXkoKTsKCiAgICAvKioKICAgICAqIFRoZSBwcm90ZWN0ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBUaGUgcHJvdGVjdGVkIGhlYWRlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcHJvdGVjdGVkIGhlYWRlciBvZiB0aGUgc3BlY2lmaWVkIGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWR8bnVsbCBIZWFkZXIgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb3RlY3RlZEhlYWRlcigka2V5KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNQcm90ZWN0ZWRIZWFkZXIoJGtleSk7CgogICAgLyoqCiAgICAgKiBUaGUgdW5wcm90ZWN0ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB1bnByb3RlY3RlZCBoZWFkZXIgb2YgdGhlIHNwZWNpZmllZCBrZXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkfG51bGwgSGVhZGVyIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXIoJGtleSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogVGhlIHByb3RlY3RlZCBhbmQgdW5wcm90ZWN0ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbEhlYWRlcnMoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzaWduYXR1cmUuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpZ25hdHVyZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/Storable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKdHJhaXQgU3RvcmFibGUKewogICAgLyoqCiAgICAgKiBAdmFyIFxKc29uU2VyaWFsaXphYmxlCiAgICAgKi8KICAgIHByb3RlY3RlZCAkb2JqZWN0OwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkICRmaWxlbmFtZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRmaWxlX21vZGlmaWNhdGlvbl90aW1lID0gbnVsbDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGaWxlbmFtZSgkZmlsZW5hbWUpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJGZpbGVuYW1lLCAnSW52YWxpZCBmaWxlbmFtZS4nKTsKICAgICAgICBpZiAoIWlzX2RpcihkaXJuYW1lKCRmaWxlbmFtZSkpKSB7CiAgICAgICAgICAgIG1rZGlyKGRpcm5hbWUoJGZpbGVuYW1lKSwgMDc3NywgdHJ1ZSk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6ZGlyZWN0b3J5KGRpcm5hbWUoJGZpbGVuYW1lKSwgJ1RoZSBzZWxlY3RlZCBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp3cml0ZWFibGUoZGlybmFtZSgkZmlsZW5hbWUpLCAnVGhlIHNlbGVjdGVkIGRpcmVjdG9yeSBpcyBub3Qgd3JpdGFibGUuJyk7CiAgICAgICAgJHRoaXMtPmZpbGVuYW1lID0gJGZpbGVuYW1lOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnZW4oKQogICAgewogICAgICAgICR0aGlzLT5kZWxldGUoKTsKICAgICAgICAkdGhpcy0+bG9hZE9iamVjdElmTmVlZGVkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGUoKQogICAgewogICAgICAgIGlmIChmaWxlX2V4aXN0cygkdGhpcy0+Z2V0RmlsZW5hbWUoKSkpIHsKICAgICAgICAgICAgdW5saW5rKCR0aGlzLT5nZXRGaWxlbmFtZSgpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RmlsZW5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmlsZW5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKc29uU2VyaWFsaXphYmxlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRPYmplY3QoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+b2JqZWN0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKc29uU2VyaWFsaXphYmxlICRvYmplY3QKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldE9iamVjdChcSnNvblNlcmlhbGl6YWJsZSAkb2JqZWN0KQogICAgewogICAgICAgICR0aGlzLT5vYmplY3QgPSAkb2JqZWN0OwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsb2FkT2JqZWN0SWZOZWVkZWQoKQogICAgewogICAgICAgIGlmIChudWxsICE9PSAkdGhpcy0+Z2V0T2JqZWN0KCkgJiYgZmFsc2UgPT09ICR0aGlzLT5oYXNGaWxlQmVlblVwZGF0ZWQoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCA9PT0gJGNvbnRlbnQgPSAkdGhpcy0+Z2V0RmlsZUNvbnRlbnQoKSkgewogICAgICAgICAgICAkdGhpcy0+Y3JlYXRlQW5kU2F2ZU9iamVjdCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRPYmplY3QoJHRoaXMtPmNyZWF0ZU9iamVjdEZyb21GaWxlQ29udGVudCgkY29udGVudCkpOwogICAgICAgICAgICAkdGhpcy0+ZmlsZV9tb2RpZmljYXRpb25fdGltZSA9IGZpbGVtdGltZSgkdGhpcy0+Z2V0RmlsZW5hbWUoKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheXxudWxsCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRGaWxlQ29udGVudCgpCiAgICB7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCR0aGlzLT5nZXRGaWxlbmFtZSgpKSkgewogICAgICAgICAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR0aGlzLT5nZXRGaWxlbmFtZSgpKTsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkY29udGVudCkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb250ZW50ID0ganNvbl9kZWNvZGUoJGNvbnRlbnQsIHRydWUpOwogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRjb250ZW50KSkgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSnNvblNlcmlhbGl6YWJsZQogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlTmV3T2JqZWN0KCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGZpbGVfY29udGVudAogICAgICoKICAgICAqIEByZXR1cm4gXEpzb25TZXJpYWxpemFibGUKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdEZyb21GaWxlQ29udGVudChhcnJheSAkZmlsZV9jb250ZW50KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldExhc3RNb2RpZmljYXRpb25UaW1lKCkKICAgIHsKICAgICAgICBjbGVhcnN0YXRjYWNoZShudWxsLCAkdGhpcy0+Z2V0RmlsZW5hbWUoKSk7CgogICAgICAgIGlmIChmaWxlX2V4aXN0cygkdGhpcy0+Z2V0RmlsZW5hbWUoKSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZpbGVtdGltZSgkdGhpcy0+Z2V0RmlsZW5hbWUoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaGFzRmlsZUJlZW5VcGRhdGVkKCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHRoaXMtPmZpbGVfbW9kaWZpY2F0aW9uX3RpbWUgfHwgbnVsbCA9PT0gJHRoaXMtPmdldExhc3RNb2RpZmljYXRpb25UaW1lKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmZpbGVfbW9kaWZpY2F0aW9uX3RpbWUgIT09ICR0aGlzLT5nZXRMYXN0TW9kaWZpY2F0aW9uVGltZSgpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVBbmRTYXZlT2JqZWN0KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gJHRoaXMtPmNyZWF0ZU5ld09iamVjdCgpOwogICAgICAgICR0aGlzLT5zZXRPYmplY3QoJG9iamVjdCk7CiAgICAgICAgJHRoaXMtPnNhdmVPYmplY3QoJG9iamVjdCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNhdmVPYmplY3QoXEpzb25TZXJpYWxpemFibGUgJG9iamVjdCkKICAgIHsKICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkdGhpcy0+Z2V0RmlsZW5hbWUoKSwganNvbl9lbmNvZGUoJG9iamVjdCkpOwogICAgICAgICR0aGlzLT5maWxlX21vZGlmaWNhdGlvbl90aW1lID0gZmlsZW10aW1lKCR0aGlzLT5nZXRGaWxlbmFtZSgpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/StorableInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgU3RvcmFibGVJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgU3RvcmFibGVJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZWdlbmVyYXRlIGEgY29tcGxldGVseSBuZXcgSldLLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnZW4oKTsKCiAgICAvKioKICAgICAqIERlbGV0ZSB0aGUgSldLLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXN0TW9kaWZpY2F0aW9uVGltZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/StorableJWK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxGYWN0b3J5XEpXS0ZhY3Rvcnk7CgovKioKICogQ2xhc3MgU3RvcmFibGVKV0suCiAqLwpjbGFzcyBTdG9yYWJsZUpXSyBpbXBsZW1lbnRzIFN0b3JhYmxlSW50ZXJmYWNlLCBKV0tJbnRlcmZhY2UKewogICAgdXNlIFN0b3JhYmxlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHBhcmFtZXRlcnM7CgogICAgLyoqCiAgICAgKiBTdG9yYWJsZUpXSyBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQogICAgICogQHBhcmFtIGFycmF5ICAkcGFyYW1ldGVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGZpbGVuYW1lLCBhcnJheSAkcGFyYW1ldGVycykKICAgIHsKICAgICAgICAkdGhpcy0+c2V0RmlsZW5hbWUoJGZpbGVuYW1lKTsKICAgICAgICAkdGhpcy0+cGFyYW1ldGVycyA9ICRwYXJhbWV0ZXJzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXSygpLT5nZXRBbGwoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldCgka2V5KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLKCktPmdldCgka2V5KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhcygka2V5KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLKCktPmhhcygka2V5KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRodW1icHJpbnQoJGhhc2hfYWxnb3JpdGhtKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLKCktPnRodW1icHJpbnQoJGhhc2hfYWxnb3JpdGhtKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUHVibGljKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXSygpLT50b1B1YmxpYygpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0soKS0+anNvblNlcmlhbGl6ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRKV0soKQogICAgewogICAgICAgICR0aGlzLT5sb2FkT2JqZWN0SWZOZWVkZWQoKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRPYmplY3QoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlTmV3T2JqZWN0KCkKICAgIHsKICAgICAgICAkZGF0YSA9IEpXS0ZhY3Rvcnk6OmNyZWF0ZUtleSgkdGhpcy0+cGFyYW1ldGVycyktPmdldEFsbCgpOwogICAgICAgICRkYXRhWydraWQnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKHJhbmRvbV9ieXRlcyg2NCkpOwoKICAgICAgICByZXR1cm4gSldLRmFjdG9yeTo6Y3JlYXRlRnJvbVZhbHVlcygkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGZpbGVfY29udGVudAogICAgICoKICAgICAqIEByZXR1cm4gXEpzb25TZXJpYWxpemFibGUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdEZyb21GaWxlQ29udGVudChhcnJheSAkZmlsZV9jb250ZW50KQogICAgewogICAgICAgIHJldHVybiBuZXcgSldLKCRmaWxlX2NvbnRlbnQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/StorableJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcRmFjdG9yeVxKV0tGYWN0b3J5OwoKLyoqCiAqIENsYXNzIFN0b3JhYmxlSldLU2V0LgogKi8KY2xhc3MgU3RvcmFibGVKV0tTZXQgaW1wbGVtZW50cyBTdG9yYWJsZUludGVyZmFjZSwgSldLU2V0SW50ZXJmYWNlCnsKICAgIHVzZSBTdG9yYWJsZTsKICAgIHVzZSBKV0tTZXRQRU07CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAkcGFyYW1ldGVyczsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCAkbmJfa2V5czsKCiAgICAvKioKICAgICAqIFN0b3JhYmxlSldLU2V0IGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICRwYXJhbWV0ZXJzCiAgICAgKiBAcGFyYW0gaW50ICAgICRuYl9rZXlzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZmlsZW5hbWUsIGFycmF5ICRwYXJhbWV0ZXJzLCAkbmJfa2V5cykKICAgIHsKICAgICAgICBBc3NlcnRpb246OmludGVnZXIoJG5iX2tleXMsICdUaGUga2V5IHNldCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGtleS4nKTsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRuYl9rZXlzLCAwLCAnVGhlIGtleSBzZXQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBrZXkuJyk7CiAgICAgICAgJHRoaXMtPnNldEZpbGVuYW1lKCRmaWxlbmFtZSk7CiAgICAgICAgJHRoaXMtPnBhcmFtZXRlcnMgPSAkcGFyYW1ldGVyczsKICAgICAgICAkdGhpcy0+bmJfa2V5cyA9ICRuYl9rZXlzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0tTZXQoKS0+Y3VycmVudCgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmV4dCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldEpXS1NldCgpLT5uZXh0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBrZXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPmtleSgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPnZhbGlkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQogICAgewogICAgICAgICR0aGlzLT5nZXRKV0tTZXQoKS0+cmV3aW5kKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRFeGlzdHMoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5vZmZzZXRFeGlzdHMoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRHZXQoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5vZmZzZXRHZXQoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRTZXQoJG9mZnNldCwgJHZhbHVlKQogICAgewogICAgICAgIC8vIE5vdCBhdmFpbGFibGUKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldFVuc2V0KCRvZmZzZXQpCiAgICB7CiAgICAgICAgLy8gTm90IGF2YWlsYWJsZQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5KCRpbmRleCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5nZXRLZXkoJGluZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0tleSgkaW5kZXgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0tTZXQoKS0+aGFzS2V5KCRpbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5nZXRLZXlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgLy8gTm90IGF2YWlsYWJsZQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJlcGVuZEtleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAvL05vdCBhdmFpbGFibGUKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUtleSgkaW5kZXgpCiAgICB7CiAgICAgICAgLy8gTm90IGF2YWlsYWJsZQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRLZXlzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5jb3VudEtleXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbGVjdEtleSgkdHlwZSwgJGFsZ29yaXRobSA9IG51bGwsIGFycmF5ICRyZXN0cmljdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5zZWxlY3RLZXkoJHR5cGUsICRhbGdvcml0aG0sICRyZXN0cmljdGlvbnMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPmNvdW50KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5qc29uU2VyaWFsaXplKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEpXS1NldCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmxvYWRPYmplY3RJZk5lZWRlZCgpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldE9iamVjdCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRmaWxlX2NvbnRlbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKc29uU2VyaWFsaXphYmxlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVPYmplY3RGcm9tRmlsZUNvbnRlbnQoYXJyYXkgJGZpbGVfY29udGVudCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEpXS1NldCgkZmlsZV9jb250ZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGNyZWF0ZXMgdGhlIEpXS1NldCBhbmQgcG9wdWxhdGUgaXQgd2l0aCBrZXlzLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlTmV3T2JqZWN0KCkKICAgIHsKICAgICAgICAkandrc2V0ID0gbmV3IEpXS1NldCgpOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICR0aGlzLT5uYl9rZXlzOyArKyRpKSB7CiAgICAgICAgICAgICRrZXkgPSAkdGhpcy0+Y3JlYXRlSldLKCk7CiAgICAgICAgICAgICRqd2tzZXQtPmFkZEtleSgka2V5KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandrc2V0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVKV0soKQogICAgewogICAgICAgICRkYXRhID0gSldLRmFjdG9yeTo6Y3JlYXRlS2V5KCR0aGlzLT5wYXJhbWV0ZXJzKS0+Z2V0QWxsKCk7CiAgICAgICAgJGRhdGFbJ2tpZCddID0gQmFzZTY0VXJsOjplbmNvZGUocmFuZG9tX2J5dGVzKDY0KSk7CgogICAgICAgIHJldHVybiBKV0tGYWN0b3J5OjpjcmVhdGVGcm9tVmFsdWVzKCRkYXRhKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/X5UJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgSm9zZVxLZXlDb252ZXJ0ZXJcS2V5Q29udmVydGVyOwoKLyoqCiAqIENsYXNzIEpLVUpXS1NldC4KICovCmZpbmFsIGNsYXNzIFg1VUpXS1NldCBleHRlbmRzIERvd25sb2FkZWRKV0tTZXQKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSBqc29uX2RlY29kZSgkdGhpcy0+Z2V0Q29udGVudCgpLCB0cnVlKTsKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJGNvbnRlbnQsICdJbnZhbGlkIEpXSyBjb250ZW50LicpOwogICAgICAgICRqd2tzZXQgPSBuZXcgSldLU2V0KCk7CiAgICAgICAgZm9yZWFjaCAoJGNvbnRlbnQgYXMgJGtpZCA9PiAkY2VydCkgewogICAgICAgICAgICAkandrID0gS2V5Q29udmVydGVyOjpsb2FkS2V5RnJvbUNlcnRpZmljYXRlKCRjZXJ0KTsKICAgICAgICAgICAgQXNzZXJ0aW9uOjpub3RFbXB0eSgkandrLCAnSW52YWxpZCBKV0tTZXQgY29udGVudC4nKTsKICAgICAgICAgICAgaWYgKGlzX3N0cmluZygka2lkKSkgewogICAgICAgICAgICAgICAgJGp3a1sna2lkJ10gPSAka2lkOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRqd2tzZXQtPmFkZEtleShuZXcgSldLKCRqd2spKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandrc2V0LT5nZXRLZXlzKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Signer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgU2lnbmVyIGltcGxlbWVudHMgU2lnbmVySW50ZXJmYWNlCnsKICAgIHVzZSBCZWhhdmlvdXJcSGFzS2V5Q2hlY2tlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzSldBTWFuYWdlcjsKICAgIHVzZSBCZWhhdmlvdXJcQ29tbW9uU2lnbmluZ01ldGhvZHM7CgogICAgLyoqCiAgICAgKiBTaWduZXIgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2VbXSAkc2lnbmF0dXJlX2FsZ29yaXRobXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRzaWduYXR1cmVfYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkdGhpcy0+c2V0U2lnbmF0dXJlQWxnb3JpdGhtcygkc2lnbmF0dXJlX2FsZ29yaXRobXMpOwoKICAgICAgICAkdGhpcy0+c2V0SldBTWFuYWdlcihGYWN0b3J5XEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OjpjcmVhdGVBbGdvcml0aG1NYW5hZ2VyKCRzaWduYXR1cmVfYWxnb3JpdGhtcykpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25lcihhcnJheSAkc2lnbmF0dXJlX2FsZ29yaXRobXMpCiAgICB7CiAgICAgICAgJHNpZ25lciA9IG5ldyBzZWxmKCRzaWduYXR1cmVfYWxnb3JpdGhtcyk7CgogICAgICAgIHJldHVybiAkc2lnbmVyOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbihPYmplY3RcSldTSW50ZXJmYWNlICYkandzKQogICAgewogICAgICAgICRuYl9zaWduYXR1cmVzID0gJGp3cy0+Y291bnRTaWduYXR1cmVzKCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuYl9zaWduYXR1cmVzOyArKyRpKSB7CiAgICAgICAgICAgICR0aGlzLT5jb21wdXRlU2lnbmF0dXJlKCRqd3MsICRqd3MtPmdldFNpZ25hdHVyZSgkaSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICAgICRqd3MKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb21wdXRlU2lnbmF0dXJlKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAmJHNpZ25hdHVyZSkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlS2V5KCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y2hlY2tLZXlVc2FnZSgkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmVLZXkoKSwgJ3NpZ25hdHVyZScpOwoKICAgICAgICAkc2lnbmF0dXJlX2FsZ29yaXRobSA9ICR0aGlzLT5nZXRTaWduYXR1cmVBbGdvcml0aG0oJHNpZ25hdHVyZS0+Z2V0QWxsSGVhZGVycygpLCAkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmVLZXkoKSk7CgogICAgICAgICRpbnB1dCA9ICR0aGlzLT5nZXRJbnB1dFRvU2lnbigkandzLCAkc2lnbmF0dXJlKTsKCiAgICAgICAgJHZhbHVlID0gJHNpZ25hdHVyZV9hbGdvcml0aG0tPnNpZ24oCiAgICAgICAgICAgICRzaWduYXR1cmUtPmdldFNpZ25hdHVyZUtleSgpLAogICAgICAgICAgICAkaW5wdXQKICAgICAgICApOwoKICAgICAgICAkc2lnbmF0dXJlID0gT2JqZWN0XFNpZ25hdHVyZTo6Y3JlYXRlU2lnbmF0dXJlRnJvbUxvYWRlZERhdGEoCiAgICAgICAgICAgICR2YWx1ZSwKICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcnMoKSwKICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0SGVhZGVycygpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICAgICRqd3MKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldElucHV0VG9TaWduKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlKQogICAgewogICAgICAgICR0aGlzLT5jaGVja0I2NEhlYWRlckFuZENyaXQoJHNpZ25hdHVyZSk7CiAgICAgICAgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMgPSAkc2lnbmF0dXJlLT5nZXRFbmNvZGVkUHJvdGVjdGVkSGVhZGVycygpOwogICAgICAgICRwYXlsb2FkID0gJGp3cy0+Z2V0UGF5bG9hZCgpOwogICAgICAgIGlmICghJHNpZ25hdHVyZS0+aGFzUHJvdGVjdGVkSGVhZGVyKCdiNjQnKSB8fCB0cnVlID09PSAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoJ2I2NCcpKSB7CiAgICAgICAgICAgICRlbmNvZGVkX3BheWxvYWQgPSBCYXNlNjRVcmw6OmVuY29kZShpc19zdHJpbmcoJHBheWxvYWQpID8gJHBheWxvYWQgOiBqc29uX2VuY29kZSgkcGF5bG9hZCkpOwoKICAgICAgICAgICAgcmV0dXJuIHNwcmludGYoJyVzLiVzJywgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsICRlbmNvZGVkX3BheWxvYWQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNwcmludGYoJyVzLiVzJywgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsICRwYXlsb2FkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0I2NEhlYWRlckFuZENyaXQoT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlKQogICAgewogICAgICAgIGlmICghJHNpZ25hdHVyZS0+aGFzUHJvdGVjdGVkSGVhZGVyKCdiNjQnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBBc3NlcnRpb246OnRydWUoJHNpZ25hdHVyZS0+aGFzUHJvdGVjdGVkSGVhZGVyKCdjcml0JyksICdUaGUgcHJvdGVjdGVkIGhlYWRlciBwYXJhbWV0ZXIgImNyaXQiIGlzIG1hbmRhdG9yeSB3aGVuIHByb3RlY3RlZCBoZWFkZXIgcGFyYW1ldGVyICJiNjQiIGlzIHNldC4nKTsKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJHNpZ25hdHVyZS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCdjcml0JyksICdUaGUgcHJvdGVjdGVkIGhlYWRlciBwYXJhbWV0ZXIgImNyaXQiIG11c3QgYmUgYW4gYXJyYXkuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjppbkFycmF5KCdiNjQnLCAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoJ2NyaXQnKSwgJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlciAiY3JpdCIgbXVzdCBjb250YWluICJiNjQiIHdoZW4gcHJvdGVjdGVkIGhlYWRlciBwYXJhbWV0ZXIgImI2NCIgaXMgc2V0LicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlciBUaGUgY29tcGxldGUgaGVhZGVyCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlQWxnb3JpdGhtKGFycmF5ICRjb21wbGV0ZV9oZWFkZXIsIE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkY29tcGxldGVfaGVhZGVyLCAnYWxnJywgJ05vICJhbGciIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlci4nKTsKCiAgICAgICAgQXNzZXJ0aW9uOjpmYWxzZSgKICAgICAgICAgICAgJGtleS0+aGFzKCdhbGcnKSAmJiAka2V5LT5nZXQoJ2FsZycpICE9PSAkY29tcGxldGVfaGVhZGVyWydhbGcnXSwKICAgICAgICAgICAgc3ByaW50ZignVGhlIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBhbGxvd2VkIHdpdGggdGhpcyBrZXkuJywgJGNvbXBsZXRlX2hlYWRlclsnYWxnJ10pCiAgICAgICAgKTsKCiAgICAgICAgJHNpZ25hdHVyZV9hbGdvcml0aG0gPSAkdGhpcy0+Z2V0SldBTWFuYWdlcigpLT5nZXRBbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlclsnYWxnJ10pOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRzaWduYXR1cmVfYWxnb3JpdGhtLCBBbGdvcml0aG1cU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlOjpjbGFzcywgc3ByaW50ZignVGhlIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuJywgJGNvbXBsZXRlX2hlYWRlclsnYWxnJ10pKTsKCiAgICAgICAgcmV0dXJuICRzaWduYXR1cmVfYWxnb3JpdGhtOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/SignerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIFNpZ25lciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgU2lnbmVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogU2lnbmVyIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlW10gJHNpZ25hdHVyZV9hbGdvcml0aG1zCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxTaWduZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVTaWduZXIoYXJyYXkgJHNpZ25hdHVyZV9hbGdvcml0aG1zKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZFNpZ25hdHVyZUFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRqd3MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oT2JqZWN0XEpXU0ludGVyZmFjZSAmJGp3cyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/BigInteger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKCmZpbmFsIGNsYXNzIEJpZ0ludGVnZXIKewogICAgLyoqCiAgICAgKiBIb2xkcyB0aGUgQmlnSW50ZWdlcidzIHZhbHVlLgogICAgICoKICAgICAqIEB2YXIgcmVzb3VyY2UKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBiYXNlLTEwIGFuZCBiaW5hcnkgc3RyaW5ncyAoYmFzZS0yNTYpIHRvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBcR01QfHN0cmluZyAkdmFsdWUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAkYmFzZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSwgJGJhc2UpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFxHTVApIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gZ21wX2luaXQoJHZhbHVlLCAkYmFzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUdNUFJlc291cmNlKCR2YWx1ZSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkdmFsdWUsIFxHTVA6OmNsYXNzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoJHZhbHVlKQogICAgewogICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCR2YWx1ZSk7CiAgICAgICAgJHZhbHVlID0gJzB4Jy5iaW4yaGV4KCR2YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUsIDE2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbURlY2ltYWxTdHJpbmcoJHZhbHVlKQogICAgewogICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCR2YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUsIDEwKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbURlY2ltYWwoJHZhbHVlKQogICAgewogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkdmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlLCAxMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIEJpZ0ludGVnZXIgdG8gYSBiaW5hcnkgc3RyaW5nLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0J5dGVzKCkKICAgIHsKICAgICAgICBpZiAoMCA9PT0gZ21wX2NtcCgkdGhpcy0+dmFsdWUsIGdtcF9pbml0KDApKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkdGVtcCA9IGdtcF9zdHJ2YWwoZ21wX2FicygkdGhpcy0+dmFsdWUpLCAxNik7CiAgICAgICAgJHRlbXAgPSBtYl9zdHJsZW4oJHRlbXAsICc4Yml0JykgJiAxID8gJzAnLiR0ZW1wIDogJHRlbXA7CiAgICAgICAgJHRlbXAgPSBoZXgyYmluKCR0ZW1wKTsKCiAgICAgICAgcmV0dXJuIGx0cmltKCR0ZW1wLCBjaHIoMCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBCaWdJbnRlZ2VyIHRvIGEgYmluYXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9JbnRlZ2VyKCkKICAgIHsKICAgICAgICBpZiAoMCA9PT0gZ21wX2NtcCgkdGhpcy0+dmFsdWUsIGdtcF9pbml0KDApKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkdGVtcCA9IGdtcF9zdHJ2YWwoZ21wX2FicygkdGhpcy0+dmFsdWUpLCAxMCk7CgogICAgICAgIHJldHVybiAoaW50KSAkdGVtcDsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqICBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqICBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZChzZWxmICR5KQogICAgewogICAgICAgICR2YWx1ZSA9IGdtcF9hZGQoJHRoaXMtPnZhbHVlLCAkeS0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlRnJvbUdNUFJlc291cmNlKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdHMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqICBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqICBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KHNlbGYgJHkpCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX3N1YigkdGhpcy0+dmFsdWUsICR5LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tR01QUmVzb3VyY2UoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE11bHRpcGxpZXMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR4CiAgICAgKgogICAgICogIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsdGlwbHkoc2VsZiAkeCkKICAgIHsKICAgICAgICAkdmFsdWUgPSBnbXBfbXVsKCR0aGlzLT52YWx1ZSwgJHgtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZSgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogRGl2aWRlcyB0d28gQmlnSW50ZWdlcnMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHgKICAgICAqCiAgICAgKiAgQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGUoc2VsZiAkeCkKICAgIHsKICAgICAgICAkdmFsdWUgPSBnbXBfZGl2KCR0aGlzLT52YWx1ZSwgJHgtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZSgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUGVyZm9ybXMgbW9kdWxhciBleHBvbmVudGlhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkZQogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJG4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZFBvdyhzZWxmICRlLCBzZWxmICRuKQogICAgewogICAgICAgICR2YWx1ZSA9IGdtcF9wb3dtKCR0aGlzLT52YWx1ZSwgJGUtPnZhbHVlLCAkbi0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlRnJvbUdNUFJlc291cmNlKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyBtb2R1bGFyIGV4cG9uZW50aWF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRkCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2Qoc2VsZiAkZCkKICAgIHsKICAgICAgICAkdmFsdWUgPSBnbXBfbW9kKCR0aGlzLT52YWx1ZSwgJGQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZSgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsY3VsYXRlcyBtb2R1bGFyIGludmVyc2VzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RJbnZlcnNlKHNlbGYgJG4pCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX2ludmVydCgkdGhpcy0+dmFsdWUsICRuLT52YWx1ZSk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJHZhbHVlLCBcR01QOjpjbGFzcyk7CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tR01QUmVzb3VyY2UoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKgogICAgICogQHJldHVybiBpbnQgPCAwIGlmICR0aGlzIGlzIGxlc3MgdGhhbiAkeTsgPiAwIGlmICR0aGlzIGlzIGdyZWF0ZXIgdGhhbiAkeSwgYW5kIDAgaWYgdGhleSBhcmUgZXF1YWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUoc2VsZiAkeSkKICAgIHsKICAgICAgICByZXR1cm4gZ21wX2NtcCgkdGhpcy0+dmFsdWUsICR5LT52YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKHNlbGYgJHkpCiAgICB7CiAgICAgICAgcmV0dXJuIDAgPT09ICR0aGlzLT5jb21wYXJlKCR5KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmFuZG9tKHNlbGYgJHkpCiAgICB7CiAgICAgICAgJHplcm8gPSBzZWxmOjpjcmVhdGVGcm9tRGVjaW1hbCgwKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZShnbXBfcmFuZG9tX3JhbmdlKCR6ZXJvLT52YWx1ZSwgJHktPnZhbHVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2NkKHNlbGYgJHkpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZShnbXBfZ2NkKCR0aGlzLT52YWx1ZSwgJHktPnZhbHVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG93ZXJUaGFuKHNlbGYgJHkpCiAgICB7CiAgICAgICAgcmV0dXJuIDAgPiAkdGhpcy0+Y29tcGFyZSgkeSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG93ZXJPckVxdWFsVGhhbihzZWxmICR5KQogICAgewogICAgICAgIHJldHVybiAwID49ICR0aGlzLT5jb21wYXJlKCR5KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBncmVhdGVyVGhhbihzZWxmICR5KQogICAgewogICAgICAgIHJldHVybiAwIDwgJHRoaXMtPmNvbXBhcmUoJHkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdyZWF0ZXJPckVxdWFsVGhhbihzZWxmICR5KQogICAgewogICAgICAgIHJldHVybiAwIDw9ICR0aGlzLT5jb21wYXJlKCR5KTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFdmVuKCkKICAgIHsKICAgICAgICAkemVybyA9IHNlbGY6OmNyZWF0ZUZyb21EZWNpbWFsKDApOwogICAgICAgICR0d28gPSBzZWxmOjpjcmVhdGVGcm9tRGVjaW1hbCgyKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2QoJHR3byktPmVxdWFscygkemVybyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzT2RkKCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT5pc0V2ZW4oKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/ConcatKDF.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBDb25jYXRLREYuCiAqCiAqIFRoaXMgY2xhc3MgaXMgdXNlZCBieSB0aGUgRUNESC1FUyBhbGdvcml0aG1zCiAqCiAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc1MTgjc2VjdGlvbi00LjYuMgogKi8KZmluYWwgY2xhc3MgQ29uY2F0S0RGCnsKICAgIC8qKgogICAgICogS2V5IERlcml2YXRpb24gRnVuY3Rpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkWiAgICAgICAgICAgICAgICAgICBTaGFyZWQgc2VjcmV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0gICAgICAgICAgIEVuY3J5cHRpb24gYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gaW50ICAgICRlbmNyeXB0aW9uX2tleV9zaXplIFNpemUgb2YgdGhlIGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRhcHUgICAgICAgICAgICAgICAgIEFncmVlbWVudCBQYXJ0eVVJbmZvIChpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZHVjZXIpCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhcHYgICAgICAgICAgICAgICAgIEFncmVlbWVudCBQYXJ0eVZJbmZvIChpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVjaXBpZW50KQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGUoJFosICRhbGdvcml0aG0sICRlbmNyeXB0aW9uX2tleV9zaXplLCAkYXB1ID0gJycsICRhcHYgPSAnJykKICAgIHsKICAgICAgICAkYXB1ID0gIWVtcHR5KCRhcHUpID8gQmFzZTY0VXJsOjpkZWNvZGUoJGFwdSkgOiAnJzsKICAgICAgICAkYXB2ID0gIWVtcHR5KCRhcHYpID8gQmFzZTY0VXJsOjpkZWNvZGUoJGFwdikgOiAnJzsKICAgICAgICAkZW5jcnlwdGlvbl9zZWdtZW50cyA9IFsKICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMoMSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJvdW5kIG51bWJlciAxCiAgICAgICAgICAgICRaLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBaIChzaGFyZWQgc2VjcmV0KQogICAgICAgICAgICBzZWxmOjp0b0ludDMyQml0cyhtYl9zdHJsZW4oJGFsZ29yaXRobSwgJzhiaXQnKSkuJGFsZ29yaXRobSwgLy8gU2l6ZSBvZiBhbGdvcml0aG0ncyBuYW1lIGFuZCBhbGdvcml0aG0KICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMobWJfc3RybGVuKCRhcHUsICc4Yml0JykpLiRhcHUsICAgICAgICAgICAgIC8vIFBhcnR5VUluZm8KICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMobWJfc3RybGVuKCRhcHYsICc4Yml0JykpLiRhcHYsICAgICAgICAgICAgIC8vIFBhcnR5VkluZm8KICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMoJGVuY3J5cHRpb25fa2V5X3NpemUpLCAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBQdWJJbmZvICh0aGUgZW5jcnlwdGlvbiBrZXkgc2l6ZSkKICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBQcml2SW5mbwogICAgICAgIF07CgogICAgICAgICRpbnB1dCA9IGltcGxvZGUoJycsICRlbmNyeXB0aW9uX3NlZ21lbnRzKTsKICAgICAgICAkaGFzaCA9IGhhc2goJ3NoYTI1NicsICRpbnB1dCwgdHJ1ZSk7CiAgICAgICAgJGtkZiA9IG1iX3N1YnN0cigkaGFzaCwgMCwgJGVuY3J5cHRpb25fa2V5X3NpemUgLyA4LCAnOGJpdCcpOwoKICAgICAgICByZXR1cm4gJGtkZjsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgYW4gaW50ZWdlciBpbnRvIGEgMzIgYml0cyBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkdmFsdWUgSW50ZWdlciB0byBjb252ZXJ0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdG9JbnQzMkJpdHMoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBoZXgyYmluKHN0cl9wYWQoZGVjaGV4KCR2YWx1ZSksIDgsICcwJywgU1RSX1BBRF9MRUZUKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/Hash.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7CgpjbGFzcyBIYXNoCnsKICAgIC8qKgogICAgICogSGFzaCBQYXJhbWV0ZXIuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkaGFzaDsKCiAgICAvKioKICAgICAqIEhhc2ggTGVuZ3RoLgogICAgICoKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGxlbmd0aDsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcVXRpbFxIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhMSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdzaGExJywgMjApOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGEyNTYoKQogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignc2hhMjU2JywgMzIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGEzODQoKQogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignc2hhMzg0JywgNDgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGE1MTIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignc2hhNTEyJywgNjQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkaGFzaAogICAgICogQHBhcmFtIGludCAgICAkbGVuZ3RoCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGhhc2gsICRsZW5ndGgpCiAgICB7CiAgICAgICAgJHRoaXMtPmhhc2ggPSAkaGFzaDsKICAgICAgICAkdGhpcy0+bGVuZ3RoID0gJGxlbmd0aDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGVuZ3RoOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcHV0ZSB0aGUgSE1BQy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZXh0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc2goJHRleHQpCiAgICB7CiAgICAgICAgcmV0dXJuIGhhc2goJHRoaXMtPmhhc2gsICR0ZXh0LCB0cnVlKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/JWELoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcT2JqZWN0XEpXRTsKdXNlIEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIEpXRUxvYWRlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRTZXJpYWxpemVkSnNvbkpXRShhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICAkandlID0gbmV3IEpXRSgpOwogICAgICAgICRqd2UgPSAkandlLT53aXRoQ2lwaGVydGV4dChCYXNlNjRVcmw6OmRlY29kZSgkZGF0YVsnY2lwaGVydGV4dCddKSk7CgogICAgICAgIHNlbGY6OnBvcHVsYXRlSVYoJGp3ZSwgJGRhdGEpOwogICAgICAgIHNlbGY6OnBvcHVsYXRlQUFEKCRqd2UsICRkYXRhKTsKICAgICAgICBzZWxmOjpwb3B1bGF0ZVRhZygkandlLCAkZGF0YSk7CiAgICAgICAgc2VsZjo6cG9wdWxhdGVTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCRqd2UsICRkYXRhKTsKICAgICAgICBzZWxmOjpwb3B1bGF0ZVNoYXJlZEhlYWRlcnMoJGp3ZSwgJGRhdGEpOwoKICAgICAgICBmb3JlYWNoICgkZGF0YVsncmVjaXBpZW50cyddIGFzICRyZWNpcGllbnQpIHsKICAgICAgICAgICAgJGVuY3J5cHRlZF9rZXkgPSBzZWxmOjpnZXRSZWNpcGllbnRFbmNyeXB0ZWRLZXkoJHJlY2lwaWVudCk7CiAgICAgICAgICAgICRyZWNpcGllbnRfaGVhZGVycyA9IHNlbGY6OmdldFJlY2lwaWVudEhlYWRlcnMoJHJlY2lwaWVudCk7CgogICAgICAgICAgICAkandlID0gJGp3ZS0+YWRkUmVjaXBpZW50V2l0aEVuY3J5cHRlZEtleSgkZW5jcnlwdGVkX2tleSwgJHJlY2lwaWVudF9oZWFkZXJzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGRhdGEKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcG9wdWxhdGVJVihKV0VJbnRlcmZhY2UgJiRqd2UsIGFycmF5ICRkYXRhKQogICAgewogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdpdicsICRkYXRhKSkgewogICAgICAgICAgICAkandlID0gJGp3ZS0+d2l0aElWKEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydpdiddKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGRhdGEKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcG9wdWxhdGVBQUQoSldFSW50ZXJmYWNlICYkandlLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnYWFkJywgJGRhdGEpKSB7CiAgICAgICAgICAgICRqd2UgPSAkandlLT53aXRoQUFEKEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydhYWQnXSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRqd2UKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRkYXRhCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBvcHVsYXRlVGFnKEpXRUludGVyZmFjZSAmJGp3ZSwgYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3RhZycsICRkYXRhKSkgewogICAgICAgICAgICAkandlID0gJGp3ZS0+d2l0aFRhZyhCYXNlNjRVcmw6OmRlY29kZSgkZGF0YVsndGFnJ10pKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAkandlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZGF0YQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZVNoYXJlZFByb3RlY3RlZEhlYWRlcnMoSldFSW50ZXJmYWNlICYkandlLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygncHJvdGVjdGVkJywgJGRhdGEpKSB7CiAgICAgICAgICAgICRqd2UgPSAkandlLT53aXRoRW5jb2RlZFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoJGRhdGFbJ3Byb3RlY3RlZCddKTsKICAgICAgICAgICAgJGp3ZSA9ICRqd2UtPndpdGhTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKGpzb25fZGVjb2RlKEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydwcm90ZWN0ZWQnXSksIHRydWUpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAkandlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZGF0YQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZVNoYXJlZEhlYWRlcnMoSldFSW50ZXJmYWNlICYkandlLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygndW5wcm90ZWN0ZWQnLCAkZGF0YSkpIHsKICAgICAgICAgICAgJGp3ZSA9ICRqd2UtPndpdGhTaGFyZWRIZWFkZXJzKCRkYXRhWyd1bnByb3RlY3RlZCddKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFJlY2lwaWVudEhlYWRlcnMoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcicsICRkYXRhKSkgewogICAgICAgICAgICByZXR1cm4gJGRhdGFbJ2hlYWRlciddOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkYXRhCiAgICAgKgogICAgICogQHJldHVybiBudWxsfHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWNpcGllbnRFbmNyeXB0ZWRLZXkoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2VuY3J5cHRlZF9rZXknLCAkZGF0YSkpIHsKICAgICAgICAgICAgcmV0dXJuIEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydlbmNyeXB0ZWRfa2V5J10pOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/JWSLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXE9iamVjdFxKV1M7CnVzZSBKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2U7CgpmaW5hbCBjbGFzcyBKV1NMb2FkZXIKewogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkU2VyaWFsaXplZEpzb25KV1MoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgJGp3cyA9IG5ldyBKV1MoKTsKCiAgICAgICAgZm9yZWFjaCAoJGRhdGFbJ3NpZ25hdHVyZXMnXSBhcyAkc2lnbmF0dXJlKSB7CiAgICAgICAgICAgICRiaW5fc2lnbmF0dXJlID0gQmFzZTY0VXJsOjpkZWNvZGUoJHNpZ25hdHVyZVsnc2lnbmF0dXJlJ10pOwogICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMgPSBzZWxmOjpnZXRQcm90ZWN0ZWRIZWFkZXJzKCRzaWduYXR1cmUpOwogICAgICAgICAgICAkaGVhZGVycyA9IHNlbGY6OmdldEhlYWRlcnMoJHNpZ25hdHVyZSk7CgogICAgICAgICAgICAkandzID0gJGp3cy0+YWRkU2lnbmF0dXJlRnJvbUxvYWRlZERhdGEoJGJpbl9zaWduYXR1cmUsICRwcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMpOwogICAgICAgIH0KCiAgICAgICAgc2VsZjo6cG9wdWxhdGVQYXlsb2FkKCRqd3MsICRkYXRhKTsKCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFByb3RlY3RlZEhlYWRlcnMoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3Byb3RlY3RlZCcsICRkYXRhKSkgewogICAgICAgICAgICByZXR1cm4gJGRhdGFbJ3Byb3RlY3RlZCddOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SGVhZGVycyhhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnaGVhZGVyJywgJGRhdGEpKSB7CiAgICAgICAgICAgIHJldHVybiAkZGF0YVsnaGVhZGVyJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZSAkandzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZGF0YQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZVBheWxvYWQoSldTSW50ZXJmYWNlICYkandzLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICAkaXNfZW5jb2RlZCA9IG51bGw7CiAgICAgICAgZm9yZWFjaCAoJGp3cy0+Z2V0U2lnbmF0dXJlcygpIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRpc19lbmNvZGVkKSB7CiAgICAgICAgICAgICAgICAkaXNfZW5jb2RlZCA9IHNlbGY6OmlzUGF5bG9hZEVuY29kZWQoJHNpZ25hdHVyZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgkaXNfZW5jb2RlZCwgc2VsZjo6aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlKSwgJ0ZvcmVpZ24gcGF5bG9hZCBlbmNvZGluZyBkZXRlY3RlZC4gVGhlIEpXUyBjYW5ub3QgYmUgbG9hZGVkLicpOwogICAgICAgIH0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygncGF5bG9hZCcsICRkYXRhKSkgewogICAgICAgICAgICAkcGF5bG9hZCA9ICRkYXRhWydwYXlsb2FkJ107CiAgICAgICAgICAgICRqd3MgPSAkandzLT53aXRoQXR0YWNoZWRQYXlsb2FkKCk7CiAgICAgICAgICAgICRqd3MgPSAkandzLT53aXRoRW5jb2RlZFBheWxvYWQoJHBheWxvYWQpOwogICAgICAgICAgICBpZiAoZmFsc2UgIT09ICRpc19lbmNvZGVkKSB7CiAgICAgICAgICAgICAgICAkcGF5bG9hZCA9IEJhc2U2NFVybDo6ZGVjb2RlKCRwYXlsb2FkKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkanNvbiA9IGpzb25fZGVjb2RlKCRwYXlsb2FkLCB0cnVlKTsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICRqc29uICYmICFlbXB0eSgkcGF5bG9hZCkpIHsKICAgICAgICAgICAgICAgICRwYXlsb2FkID0gJGpzb247CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGp3cyA9ICRqd3MtPndpdGhQYXlsb2FkKCRwYXlsb2FkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkandzID0gJGp3cy0+d2l0aERldGFjaGVkUGF5bG9hZCgpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNQYXlsb2FkRW5jb2RlZChTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZSkKICAgIHsKICAgICAgICByZXR1cm4gISRzaWduYXR1cmUtPmhhc1Byb3RlY3RlZEhlYWRlcignYjY0JykgfHwgdHJ1ZSA9PT0gJHNpZ25hdHVyZS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCdiNjQnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/RSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKCmZpbmFsIGNsYXNzIFJTQQp7CiAgICAvKioKICAgICAqIEludGVnZXItdG8tT2N0ZXQtU3RyaW5nIHByaW1pdGl2ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcVXRpbFxCaWdJbnRlZ2VyICR4CiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICR4TGVuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydEludGVnZXJUb09jdGV0U3RyaW5nKCR4LCAkeExlbikKICAgIHsKICAgICAgICAkeCA9ICR4LT50b0J5dGVzKCk7CiAgICAgICAgaWYgKHN0cmxlbigkeCkgPiAkeExlbikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RyX3BhZCgkeCwgJHhMZW4sIGNocigwKSwgU1RSX1BBRF9MRUZUKTsKICAgIH0KCiAgICAvKioKICAgICAqIE9jdGV0LVN0cmluZy10by1JbnRlZ2VyIHByaW1pdGl2ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydE9jdGV0U3RyaW5nVG9JbnRlZ2VyKCR4KQogICAgewogICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKCR4KTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4cG9uZW50aWF0ZSB3aXRoIG9yIHdpdGhvdXQgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbS4KICAgICAqIE9wZXJhdGlvbiB3aXRoIHByaW1lcyAncCcgYW5kICdxJyBpcyBhcHBveC4gMnggZmFzdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBcSm9zZVxVdGlsXEJpZ0ludGVnZXIgICAgICRjCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZXhwb25lbnRpYXRlKFJTQUtleSAka2V5LCBCaWdJbnRlZ2VyICRjKQogICAgewogICAgICAgIGlmICgka2V5LT5pc1B1YmxpYygpIHx8IGVtcHR5KCRrZXktPmdldFByaW1lcygpKSkgewogICAgICAgICAgICByZXR1cm4gJGMtPm1vZFBvdygka2V5LT5nZXRFeHBvbmVudCgpLCAka2V5LT5nZXRNb2R1bHVzKCkpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAka2V5LT5nZXRQcmltZXMoKVswXTsKICAgICAgICAkcSA9ICRrZXktPmdldFByaW1lcygpWzFdOwogICAgICAgICRkUCA9ICRrZXktPmdldEV4cG9uZW50cygpWzBdOwogICAgICAgICRkUSA9ICRrZXktPmdldEV4cG9uZW50cygpWzFdOwogICAgICAgICRxSW52ID0gJGtleS0+Z2V0Q29lZmZpY2llbnQoKTsKCiAgICAgICAgJG0xID0gJGMtPm1vZFBvdygkZFAsICRwKTsKICAgICAgICAkbTIgPSAkYy0+bW9kUG93KCRkUSwgJHEpOwogICAgICAgICRoID0gJHFJbnYtPm11bHRpcGx5KCRtMS0+c3VidHJhY3QoJG0yKS0+YWRkKCRwKSktPm1vZCgkcCk7CiAgICAgICAgJG0gPSAkbTItPmFkZCgkaC0+bXVsdGlwbHkoJHEpKTsKCiAgICAgICAgcmV0dXJuICRtOwogICAgfQoKICAgIC8qKgogICAgICogUlNBIEVQLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBcSm9zZVxVdGlsXEJpZ0ludGVnZXIgICAgICRtCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXJ8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0UlNBRVAoUlNBS2V5ICRrZXksIEJpZ0ludGVnZXIgJG0pCiAgICB7CiAgICAgICAgaWYgKCRtLT5jb21wYXJlKEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApKSA8IDAgfHwgJG0tPmNvbXBhcmUoJGtleS0+Z2V0TW9kdWx1cygpKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmV4cG9uZW50aWF0ZSgka2V5LCAkbSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSU0EgRFAuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXEtleUNvbnZlcnRlclxSU0FLZXkgJGtleQogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcQmlnSW50ZWdlciAgICAgJGMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcnxmYWxzZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSU0FEUChSU0FLZXkgJGtleSwgQmlnSW50ZWdlciAkYykKICAgIHsKICAgICAgICBpZiAoJGMtPmNvbXBhcmUoQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMCkpIDwgMCB8fCAkYy0+Y29tcGFyZSgka2V5LT5nZXRNb2R1bHVzKCkpID4gMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6ZXhwb25lbnRpYXRlKCRrZXksICRjKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJTQSBTUDEuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXEtleUNvbnZlcnRlclxSU0FLZXkgJGtleQogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcQmlnSW50ZWdlciAgICAgJG0KICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcnxmYWxzZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSU0FTUDEoUlNBS2V5ICRrZXksIEJpZ0ludGVnZXIgJG0pCiAgICB7CiAgICAgICAgaWYgKCRtLT5jb21wYXJlKEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApKSA8IDAgfHwgJG0tPmNvbXBhcmUoJGtleS0+Z2V0TW9kdWx1cygpKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmV4cG9uZW50aWF0ZSgka2V5LCAkbSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSU0FWUDEuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXEtleUNvbnZlcnRlclxSU0FLZXkgJGtleQogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcQmlnSW50ZWdlciAgICAgJHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcnxmYWxzZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSU0FWUDEoUlNBS2V5ICRrZXksIEJpZ0ludGVnZXIgJHMpCiAgICB7CiAgICAgICAgaWYgKCRzLT5jb21wYXJlKEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApKSA8IDAgfHwgJHMtPmNvbXBhcmUoJGtleS0+Z2V0TW9kdWx1cygpKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmV4cG9uZW50aWF0ZSgka2V5LCAkcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNR0YxLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgJG1nZlNlZWQKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgJG1hc2tMZW4KICAgICAqIEBwYXJhbSBcSm9zZVxVdGlsXEhhc2ggJG1nZkhhc2gKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRNR0YxKCRtZ2ZTZWVkLCAkbWFza0xlbiwgSGFzaCAkbWdmSGFzaCkKICAgIHsKICAgICAgICAkdCA9ICcnOwogICAgICAgICRjb3VudCA9IGNlaWwoJG1hc2tMZW4gLyAkbWdmSGFzaC0+Z2V0TGVuZ3RoKCkpOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjb3VudDsgKyskaSkgewogICAgICAgICAgICAkYyA9IHBhY2soJ04nLCAkaSk7CiAgICAgICAgICAgICR0IC49ICRtZ2ZIYXNoLT5oYXNoKCRtZ2ZTZWVkLiRjKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYl9zdWJzdHIoJHQsIDAsICRtYXNrTGVuLCAnOGJpdCcpOwogICAgfQoKICAgIC8qKgogICAgICogUlNBRVMtT0FFUC1FTkNSWVBULgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRtCiAgICAgKiBAcGFyYW0gXEpvc2VcVXRpbFxIYXNoICAgICAgICAgICAkaGFzaAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGVuY3J5cHRSU0FFU09BRVAoUlNBS2V5ICRrZXksICRtLCBIYXNoICRoYXNoKQogICAgewogICAgICAgICRtTGVuID0gbWJfc3RybGVuKCRtLCAnOGJpdCcpOwogICAgICAgICRsSGFzaCA9ICRoYXNoLT5oYXNoKCcnKTsKICAgICAgICAkcHMgPSBzdHJfcmVwZWF0KGNocigwKSwgJGtleS0+Z2V0TW9kdWx1c0xlbmd0aCgpIC0gJG1MZW4gLSAyICogJGhhc2gtPmdldExlbmd0aCgpIC0gMik7CiAgICAgICAgJGRiID0gJGxIYXNoLiRwcy5jaHIoMSkuJG07CiAgICAgICAgJHNlZWQgPSByYW5kb21fYnl0ZXMoJGhhc2gtPmdldExlbmd0aCgpKTsKICAgICAgICAkZGJNYXNrID0gc2VsZjo6Z2V0TUdGMSgkc2VlZCwgJGtleS0+Z2V0TW9kdWx1c0xlbmd0aCgpIC0gJGhhc2gtPmdldExlbmd0aCgpIC0gMSwgJGhhc2gvKk1HRiovKTsKICAgICAgICAkbWFza2VkREIgPSAkZGIgXiAkZGJNYXNrOwogICAgICAgICRzZWVkTWFzayA9IHNlbGY6OmdldE1HRjEoJG1hc2tlZERCLCAkaGFzaC0+Z2V0TGVuZ3RoKCksICRoYXNoLypNR0YqLyk7CiAgICAgICAgJG1hc2tlZFNlZWQgPSAkc2VlZCBeICRzZWVkTWFzazsKICAgICAgICAkZW0gPSBjaHIoMCkuJG1hc2tlZFNlZWQuJG1hc2tlZERCOwoKICAgICAgICAkbSA9IHNlbGY6OmNvbnZlcnRPY3RldFN0cmluZ1RvSW50ZWdlcigkZW0pOwogICAgICAgICRjID0gc2VsZjo6Z2V0UlNBRVAoJGtleSwgJG0pOwogICAgICAgICRjID0gc2VsZjo6Y29udmVydEludGVnZXJUb09jdGV0U3RyaW5nKCRjLCAka2V5LT5nZXRNb2R1bHVzTGVuZ3RoKCkpOwoKICAgICAgICByZXR1cm4gJGM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSU0FFUy1PQUVQLURFQ1JZUFQuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXEtleUNvbnZlcnRlclxSU0FLZXkgJGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGMKICAgICAqIEBwYXJhbSBcSm9zZVxVdGlsXEhhc2ggICAgICAgICAgICRoYXNoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0UlNBRVNPQUVQKFJTQUtleSAka2V5LCAkYywgSGFzaCAkaGFzaCkKICAgIHsKICAgICAgICAkYyA9IHNlbGY6OmNvbnZlcnRPY3RldFN0cmluZ1RvSW50ZWdlcigkYyk7CiAgICAgICAgJG0gPSBzZWxmOjpnZXRSU0FEUCgka2V5LCAkYyk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJG0sIEJpZ0ludGVnZXI6OmNsYXNzKTsKICAgICAgICAkZW0gPSBzZWxmOjpjb252ZXJ0SW50ZWdlclRvT2N0ZXRTdHJpbmcoJG0sICRrZXktPmdldE1vZHVsdXNMZW5ndGgoKSk7CiAgICAgICAgJGxIYXNoID0gJGhhc2gtPmhhc2goJycpOwogICAgICAgICRtYXNrZWRTZWVkID0gbWJfc3Vic3RyKCRlbSwgMSwgJGhhc2gtPmdldExlbmd0aCgpLCAnOGJpdCcpOwogICAgICAgICRtYXNrZWREQiA9IG1iX3N1YnN0cigkZW0sICRoYXNoLT5nZXRMZW5ndGgoKSArIDEsIG51bGwsICc4Yml0Jyk7CiAgICAgICAgJHNlZWRNYXNrID0gc2VsZjo6Z2V0TUdGMSgkbWFza2VkREIsICRoYXNoLT5nZXRMZW5ndGgoKSwgJGhhc2gvKk1HRiovKTsKICAgICAgICAkc2VlZCA9ICRtYXNrZWRTZWVkIF4gJHNlZWRNYXNrOwogICAgICAgICRkYk1hc2sgPSBzZWxmOjpnZXRNR0YxKCRzZWVkLCAka2V5LT5nZXRNb2R1bHVzTGVuZ3RoKCkgLSAkaGFzaC0+Z2V0TGVuZ3RoKCkgLSAxLCAkaGFzaC8qTUdGKi8pOwogICAgICAgICRkYiA9ICRtYXNrZWREQiBeICRkYk1hc2s7CiAgICAgICAgJGxIYXNoMiA9IG1iX3N1YnN0cigkZGIsIDAsICRoYXNoLT5nZXRMZW5ndGgoKSwgJzhiaXQnKTsKICAgICAgICAkbSA9IG1iX3N1YnN0cigkZGIsICRoYXNoLT5nZXRMZW5ndGgoKSwgbnVsbCwgJzhiaXQnKTsKICAgICAgICBBc3NlcnRpb246OmVxKCRsSGFzaCwgJGxIYXNoMik7CiAgICAgICAgJG0gPSBsdHJpbSgkbSwgY2hyKDApKTsKICAgICAgICBBc3NlcnRpb246OmVxKG9yZCgkbVswXSksIDEpOwoKICAgICAgICByZXR1cm4gbWJfc3Vic3RyKCRtLCAxLCBudWxsLCAnOGJpdCcpOwogICAgfQoKICAgIC8qKgogICAgICogRU1TQS1QU1MtRU5DT0RFLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgJG0KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgJGVtQml0cwogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcSGFzaCAkaGFzaAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZW5jb2RlRU1TQVBTUygkbSwgJGVtQml0cywgSGFzaCAkaGFzaCkKICAgIHsKICAgICAgICAkZW1MZW4gPSAoJGVtQml0cyArIDEpID4+IDM7CiAgICAgICAgJHNMZW4gPSAkaGFzaC0+Z2V0TGVuZ3RoKCk7CiAgICAgICAgJG1IYXNoID0gJGhhc2gtPmhhc2goJG0pOwogICAgICAgIEFzc2VydGlvbjo6Z3JlYXRlclRoYW4oJGVtTGVuLCAkaGFzaC0+Z2V0TGVuZ3RoKCkgKyAkc0xlbiArIDIpOwogICAgICAgICRzYWx0ID0gcmFuZG9tX2J5dGVzKCRzTGVuKTsKICAgICAgICAkbTIgPSAiXDBcMFwwXDBcMFwwXDBcMCIuJG1IYXNoLiRzYWx0OwogICAgICAgICRoID0gJGhhc2gtPmhhc2goJG0yKTsKICAgICAgICAkcHMgPSBzdHJfcmVwZWF0KGNocigwKSwgJGVtTGVuIC0gJHNMZW4gLSAkaGFzaC0+Z2V0TGVuZ3RoKCkgLSAyKTsKICAgICAgICAkZGIgPSAkcHMuY2hyKDEpLiRzYWx0OwogICAgICAgICRkYk1hc2sgPSBzZWxmOjpnZXRNR0YxKCRoLCAkZW1MZW4gLSAkaGFzaC0+Z2V0TGVuZ3RoKCkgLSAxLCAkaGFzaC8qTUdGKi8pOwogICAgICAgICRtYXNrZWREQiA9ICRkYiBeICRkYk1hc2s7CiAgICAgICAgJG1hc2tlZERCWzBdID0gfmNocigweEZGIDw8ICgkZW1CaXRzICYgNykpICYgJG1hc2tlZERCWzBdOwogICAgICAgICRlbSA9ICRtYXNrZWREQi4kaC5jaHIoMHhCQyk7CgogICAgICAgIHJldHVybiAkZW07CiAgICB9CgogICAgLyoqCiAgICAgKiBFTVNBLVBTUy1WRVJJRlkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAkbQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAkZW0KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgJGVtQml0cwogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcSGFzaCAkaGFzaAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2ZXJpZnlFTVNBUFNTKCRtLCAkZW0sICRlbUJpdHMsIEhhc2ggJGhhc2gpCiAgICB7CiAgICAgICAgJGVtTGVuID0gKCRlbUJpdHMgKyAxKSA+PiAzOwogICAgICAgICRzTGVuID0gJGhhc2gtPmdldExlbmd0aCgpOwogICAgICAgICRtSGFzaCA9ICRoYXNoLT5oYXNoKCRtKTsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRlbUxlbiwgJGhhc2gtPmdldExlbmd0aCgpICsgJHNMZW4gKyAyKTsKICAgICAgICBBc3NlcnRpb246OmVxKCRlbVttYl9zdHJsZW4oJGVtLCAnOGJpdCcpIC0gMV0sIGNocigweEJDKSk7CiAgICAgICAgJG1hc2tlZERCID0gbWJfc3Vic3RyKCRlbSwgMCwgLSRoYXNoLT5nZXRMZW5ndGgoKSAtIDEsICc4Yml0Jyk7CiAgICAgICAgJGggPSBtYl9zdWJzdHIoJGVtLCAtJGhhc2gtPmdldExlbmd0aCgpIC0gMSwgJGhhc2gtPmdldExlbmd0aCgpLCAnOGJpdCcpOwogICAgICAgICR0ZW1wID0gY2hyKDB4RkYgPDwgKCRlbUJpdHMgJiA3KSk7CiAgICAgICAgQXNzZXJ0aW9uOjplcSh+JG1hc2tlZERCWzBdICYgJHRlbXAsICR0ZW1wKTsKICAgICAgICAkZGJNYXNrID0gc2VsZjo6Z2V0TUdGMSgkaCwgJGVtTGVuIC0gJGhhc2gtPmdldExlbmd0aCgpIC0gMSwgJGhhc2gvKk1HRiovKTsKICAgICAgICAkZGIgPSAkbWFza2VkREIgXiAkZGJNYXNrOwogICAgICAgICRkYlswXSA9IH5jaHIoMHhGRiA8PCAoJGVtQml0cyAmIDcpKSAmICRkYlswXTsKICAgICAgICAkdGVtcCA9ICRlbUxlbiAtICRoYXNoLT5nZXRMZW5ndGgoKSAtICRzTGVuIC0gMjsKICAgICAgICBBc3NlcnRpb246OmVxKG1iX3N1YnN0cigkZGIsIDAsICR0ZW1wLCAnOGJpdCcpLCBzdHJfcmVwZWF0KGNocigwKSwgJHRlbXApKTsKICAgICAgICBBc3NlcnRpb246OmVxKG9yZCgkZGJbJHRlbXBdKSwgMSk7CiAgICAgICAgJHNhbHQgPSBtYl9zdWJzdHIoJGRiLCAkdGVtcCArIDEsIG51bGwsICc4Yml0Jyk7IC8vIHNob3VsZCBiZSAkc0xlbiBsb25nCiAgICAgICAgJG0yID0gIlwwXDBcMFwwXDBcMFwwXDAiLiRtSGFzaC4kc2FsdDsKICAgICAgICAkaDIgPSAkaGFzaC0+aGFzaCgkbTIpOwoKICAgICAgICByZXR1cm4gaGFzaF9lcXVhbHMoJGgsICRoMik7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNyeXB0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRwbGFpbnRleHQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRoYXNoX2FsZ29yaXRobQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jcnlwdChSU0FLZXkgJGtleSwgJHBsYWludGV4dCwgJGhhc2hfYWxnb3JpdGhtKQogICAgewogICAgICAgIC8qCiAgICAgICAgICogQHZhciBIYXNoCiAgICAgICAgICovCiAgICAgICAgJGhhc2ggPSBIYXNoOjokaGFzaF9hbGdvcml0aG0oKTsKICAgICAgICAkbGVuZ3RoID0gJGtleS0+Z2V0TW9kdWx1c0xlbmd0aCgpIC0gMiAqICRoYXNoLT5nZXRMZW5ndGgoKSAtIDI7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyVGhhbigkbGVuZ3RoLCAwKTsKICAgICAgICAkcGxhaW50ZXh0ID0gc3RyX3NwbGl0KCRwbGFpbnRleHQsICRsZW5ndGgpOwogICAgICAgICRjaXBoZXJ0ZXh0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHBsYWludGV4dCBhcyAkbSkgewogICAgICAgICAgICAkY2lwaGVydGV4dCAuPSBzZWxmOjplbmNyeXB0UlNBRVNPQUVQKCRrZXksICRtLCAkaGFzaCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNpcGhlcnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNyeXB0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRjaXBoZXJ0ZXh0CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkaGFzaF9hbGdvcml0aG0KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY3J5cHQoUlNBS2V5ICRrZXksICRjaXBoZXJ0ZXh0LCAkaGFzaF9hbGdvcml0aG0pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyVGhhbigka2V5LT5nZXRNb2R1bHVzTGVuZ3RoKCksIDApOwogICAgICAgICRoYXNoID0gSGFzaDo6JGhhc2hfYWxnb3JpdGhtKCk7CiAgICAgICAgJGNpcGhlcnRleHQgPSBzdHJfc3BsaXQoJGNpcGhlcnRleHQsICRrZXktPmdldE1vZHVsdXNMZW5ndGgoKSk7CiAgICAgICAgJGNpcGhlcnRleHRbY291bnQoJGNpcGhlcnRleHQpIC0gMV0gPSBzdHJfcGFkKCRjaXBoZXJ0ZXh0W2NvdW50KCRjaXBoZXJ0ZXh0KSAtIDFdLCAka2V5LT5nZXRNb2R1bHVzTGVuZ3RoKCksIGNocigwKSwgU1RSX1BBRF9MRUZUKTsKICAgICAgICAkcGxhaW50ZXh0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJGNpcGhlcnRleHQgYXMgJGMpIHsKICAgICAgICAgICAgJHRlbXAgPSBzZWxmOjpnZXRSU0FFU09BRVAoJGtleSwgJGMsICRoYXNoKTsKICAgICAgICAgICAgJHBsYWludGV4dCAuPSAkdGVtcDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGxhaW50ZXh0OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkaGFzaAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2lnbihSU0FLZXkgJGtleSwgJG1lc3NhZ2UsICRoYXNoKQogICAgewogICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRtZXNzYWdlKTsKICAgICAgICBBc3NlcnRpb246OnN0cmluZygkaGFzaCk7CiAgICAgICAgQXNzZXJ0aW9uOjppbkFycmF5KCRoYXNoLCBbJ3NoYTI1NicsICdzaGEzODQnLCAnc2hhNTEyJ10pOwogICAgICAgICRlbSA9IHNlbGY6OmVuY29kZUVNU0FQU1MoJG1lc3NhZ2UsIDggKiAka2V5LT5nZXRNb2R1bHVzTGVuZ3RoKCkgLSAxLCBIYXNoOjokaGFzaCgpKTsKICAgICAgICBBc3NlcnRpb246OnN0cmluZygkZW0pOwogICAgICAgICRtZXNzYWdlID0gc2VsZjo6Y29udmVydE9jdGV0U3RyaW5nVG9JbnRlZ2VyKCRlbSk7CiAgICAgICAgJHNpZ25hdHVyZSA9IHNlbGY6OmdldFJTQVNQMSgka2V5LCAkbWVzc2FnZSk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJHNpZ25hdHVyZSwgQmlnSW50ZWdlcjo6Y2xhc3MpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Y29udmVydEludGVnZXJUb09jdGV0U3RyaW5nKCRzaWduYXR1cmUsICRrZXktPmdldE1vZHVsdXNMZW5ndGgoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBWZXJpZmllcyBhIHNpZ25hdHVyZS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcS2V5Q29udmVydGVyXFJTQUtleSAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJHNpZ25hdHVyZQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGhhc2gKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2ZXJpZnkoUlNBS2V5ICRrZXksICRtZXNzYWdlLCAkc2lnbmF0dXJlLCAkaGFzaCkKICAgIHsKICAgICAgICBBc3NlcnRpb246OnN0cmluZygkbWVzc2FnZSk7CiAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJHNpZ25hdHVyZSk7CiAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJGhhc2gpOwogICAgICAgIEFzc2VydGlvbjo6aW5BcnJheSgkaGFzaCwgWydzaGEyNTYnLCAnc2hhMzg0JywgJ3NoYTUxMiddKTsKICAgICAgICBBc3NlcnRpb246OmVxKHN0cmxlbigkc2lnbmF0dXJlKSwgJGtleS0+Z2V0TW9kdWx1c0xlbmd0aCgpKTsKICAgICAgICAkbW9kQml0cyA9IDggKiAka2V5LT5nZXRNb2R1bHVzTGVuZ3RoKCk7CiAgICAgICAgJHMyID0gc2VsZjo6Y29udmVydE9jdGV0U3RyaW5nVG9JbnRlZ2VyKCRzaWduYXR1cmUpOwogICAgICAgICRtMiA9IHNlbGY6OmdldFJTQVZQMSgka2V5LCAkczIpOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRtMiwgQmlnSW50ZWdlcjo6Y2xhc3MpOwogICAgICAgICRlbSA9IHNlbGY6OmNvbnZlcnRJbnRlZ2VyVG9PY3RldFN0cmluZygkbTIsICRtb2RCaXRzID4+IDMpOwoKICAgICAgICByZXR1cm4gc2VsZjo6dmVyaWZ5RU1TQVBTUygkbWVzc2FnZSwgJGVtLCAkbW9kQml0cyAtIDEsIEhhc2g6OiRoYXNoKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Verifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgVmVyaWZpZXIgaW1wbGVtZW50cyBWZXJpZmllckludGVyZmFjZQp7CiAgICB1c2UgQmVoYXZpb3VyXEhhc0tleUNoZWNrZXI7CiAgICB1c2UgQmVoYXZpb3VyXEhhc0pXQU1hbmFnZXI7CiAgICB1c2UgQmVoYXZpb3VyXENvbW1vblNpZ25pbmdNZXRob2RzOwoKICAgIC8qKgogICAgICogVmVyaWZpZXIgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2VbXSAkc2lnbmF0dXJlX2FsZ29yaXRobXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRzaWduYXR1cmVfYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkdGhpcy0+c2V0U2lnbmF0dXJlQWxnb3JpdGhtcygkc2lnbmF0dXJlX2FsZ29yaXRobXMpOwogICAgICAgICR0aGlzLT5zZXRKV0FNYW5hZ2VyKEZhY3RvcnlcQWxnb3JpdGhtTWFuYWdlckZhY3Rvcnk6OmNyZWF0ZUFsZ29yaXRobU1hbmFnZXIoJHNpZ25hdHVyZV9hbGdvcml0aG1zKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlVmVyaWZpZXIoYXJyYXkgJHNpZ25hdHVyZV9hbGdvcml0aG1zKQogICAgewogICAgICAgICR2ZXJpZmllciA9IG5ldyBzZWxmKCRzaWduYXR1cmVfYWxnb3JpdGhtcyk7CgogICAgICAgIHJldHVybiAkdmVyaWZpZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlXaXRoS2V5KE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkandrX3NldCA9IG5ldyBPYmplY3RcSldLU2V0KCk7CiAgICAgICAgJGp3a19zZXQtPmFkZEtleSgkandrKTsKCiAgICAgICAgJHRoaXMtPnZlcmlmeVNpZ25hdHVyZXMoJGp3cywgJGp3a19zZXQsICRkZXRhY2hlZF9wYXlsb2FkLCAkcmVjaXBpZW50X2luZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeVdpdGhLZXlTZXQoT2JqZWN0XEpXU0ludGVyZmFjZSAkandzLCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+dmVyaWZ5U2lnbmF0dXJlcygkandzLCAkandrX3NldCwgJGRldGFjaGVkX3BheWxvYWQsICRyZWNpcGllbnRfaW5kZXgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgICAgICAgJGp3cwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgICAgJGp3a19zZXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAgICAgICAgICAgICRkZXRhY2hlZF9wYXlsb2FkCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlLCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwpCiAgICB7CiAgICAgICAgJGlucHV0ID0gJHRoaXMtPmdldElucHV0VG9WZXJpZnkoJGp3cywgJHNpZ25hdHVyZSwgJGRldGFjaGVkX3BheWxvYWQpOwogICAgICAgIGZvcmVhY2ggKCRqd2tfc2V0LT5nZXRLZXlzKCkgYXMgJGp3aykgewogICAgICAgICAgICAkYWxnb3JpdGhtID0gJHRoaXMtPmdldEFsZ29yaXRobSgkc2lnbmF0dXJlKTsKCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y2hlY2tLZXlVc2FnZSgkandrLCAndmVyaWZpY2F0aW9uJyk7CiAgICAgICAgICAgICAgICAkdGhpcy0+Y2hlY2tLZXlBbGdvcml0aG0oJGp3aywgJGFsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpKTsKICAgICAgICAgICAgICAgIGlmICh0cnVlID09PSAkYWxnb3JpdGhtLT52ZXJpZnkoJGp3aywgJGlucHV0LCAkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgLy9XZSBkbyBub3RoaW5nLCB3ZSBjb250aW51ZSB3aXRoIG90aGVyIGtleXMKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZSAgICAgICAkandzCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgICAgICAgICAgICAkZGV0YWNoZWRfcGF5bG9hZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0SW5wdXRUb1ZlcmlmeShPYmplY3RcSldTSW50ZXJmYWNlICRqd3MsIE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZSwgJGRldGFjaGVkX3BheWxvYWQpCiAgICB7CiAgICAgICAgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMgPSAkc2lnbmF0dXJlLT5nZXRFbmNvZGVkUHJvdGVjdGVkSGVhZGVycygpOwogICAgICAgIGlmICghJHNpZ25hdHVyZS0+aGFzUHJvdGVjdGVkSGVhZGVyKCdiNjQnKSB8fCB0cnVlID09PSAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoJ2I2NCcpKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAkandzLT5nZXRFbmNvZGVkUGF5bG9hZCgkc2lnbmF0dXJlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNwcmludGYoJyVzLiVzJywgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCRzaWduYXR1cmUpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBheWxvYWQgPSBlbXB0eSgkandzLT5nZXRQYXlsb2FkKCkpID8gJGRldGFjaGVkX3BheWxvYWQgOiAkandzLT5nZXRQYXlsb2FkKCk7CiAgICAgICAgICAgICRwYXlsb2FkID0gaXNfc3RyaW5nKCRwYXlsb2FkKSA/ICRwYXlsb2FkIDoganNvbl9lbmNvZGUoJHBheWxvYWQpOwoKICAgICAgICAgICAgcmV0dXJuIHNwcmludGYoJyVzLiVzJywgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsIEJhc2U2NFVybDo6ZW5jb2RlKCRwYXlsb2FkKSk7CiAgICAgICAgfQoKICAgICAgICAkcGF5bG9hZCA9IGVtcHR5KCRqd3MtPmdldFBheWxvYWQoKSkgPyAkZGV0YWNoZWRfcGF5bG9hZCA6ICRqd3MtPmdldFBheWxvYWQoKTsKICAgICAgICAkcGF5bG9hZCA9IGlzX3N0cmluZygkcGF5bG9hZCkgPyAkcGF5bG9hZCA6IGpzb25fZW5jb2RlKCRwYXlsb2FkKTsKCiAgICAgICAgcmV0dXJuIHNwcmludGYoJyVzLiVzJywgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsICRwYXlsb2FkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICRqd3MKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgICAgICAgICAkZGV0YWNoZWRfcGF5bG9hZAogICAgICogQHBhcmFtIGludHxudWxsICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZlcmlmeVNpZ25hdHVyZXMoT2JqZWN0XEpXU0ludGVyZmFjZSAkandzLCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tQYXlsb2FkKCRqd3MsICRkZXRhY2hlZF9wYXlsb2FkKTsKICAgICAgICAkdGhpcy0+Y2hlY2tKV0tTZXQoJGp3a19zZXQpOwogICAgICAgICR0aGlzLT5jaGVja1NpZ25hdHVyZXMoJGp3cyk7CgogICAgICAgICRuYl9zaWduYXR1cmVzID0gJGp3cy0+Y291bnRTaWduYXR1cmVzKCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuYl9zaWduYXR1cmVzOyArKyRpKSB7CiAgICAgICAgICAgICRzaWduYXR1cmUgPSAkandzLT5nZXRTaWduYXR1cmUoJGkpOwogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnZlcmlmeVNpZ25hdHVyZSgkandzLCAkandrX3NldCwgJHNpZ25hdHVyZSwgJGRldGFjaGVkX3BheWxvYWQpOwoKICAgICAgICAgICAgaWYgKHRydWUgPT09ICRyZXN1bHQpIHsKICAgICAgICAgICAgICAgICRyZWNpcGllbnRfaW5kZXggPSAkaTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gdmVyaWZ5IHRoZSBKV1MuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZSAkandzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tTaWduYXR1cmVzKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cykKICAgIHsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRqd3MtPmNvdW50U2lnbmF0dXJlcygpLCAwLCAnVGhlIEpXUyBkb2VzIG5vdCBjb250YWluIGFueSBzaWduYXR1cmUuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSldLU2V0KE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyVGhhbigkandrX3NldC0+Y291bnRLZXlzKCksIDAsICdUaGVyZSBpcyBubyBrZXkgaW4gdGhlIGtleSBzZXQuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZSAkandzCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgICAgICAgICAgICAgICAkZGV0YWNoZWRfcGF5bG9hZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUGF5bG9hZChPYmplY3RcSldTSW50ZXJmYWNlICRqd3MsICRkZXRhY2hlZF9wYXlsb2FkID0gbnVsbCkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmZhbHNlKAogICAgICAgICAgICBudWxsICE9PSAkZGV0YWNoZWRfcGF5bG9hZCAmJiAhZW1wdHkoJGp3cy0+Z2V0UGF5bG9hZCgpKSwKICAgICAgICAgICAgJ0EgZGV0YWNoZWQgcGF5bG9hZCBpcyBzZXQsIGJ1dCB0aGUgSldTIGFscmVhZHkgaGFzIGEgcGF5bG9hZC4nCiAgICAgICAgKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoCiAgICAgICAgICAgICFlbXB0eSgkandzLT5nZXRQYXlsb2FkKCkpIHx8IG51bGwgIT09ICRkZXRhY2hlZF9wYXlsb2FkLAogICAgICAgICAgICAnTm8gcGF5bG9hZC4nCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRBbGdvcml0aG0oT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlKQogICAgewogICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICRzaWduYXR1cmUtPmdldFByb3RlY3RlZEhlYWRlcnMoKSwKICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0SGVhZGVycygpCiAgICAgICAgKTsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkY29tcGxldGVfaGVhZGVycywgJ2FsZycsICdObyAiYWxnIiBwYXJhbWV0ZXIgc2V0IGluIHRoZSBoZWFkZXIuJyk7CgogICAgICAgICRhbGdvcml0aG0gPSAkdGhpcy0+Z2V0SldBTWFuYWdlcigpLT5nZXRBbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlcnNbJ2FsZyddKTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkYWxnb3JpdGhtLCBBbGdvcml0aG1cU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlOjpjbGFzcywgc3ByaW50ZignVGhlIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQgb3IgZG9lcyBub3QgaW1wbGVtZW50IFNpZ25hdHVyZUludGVyZmFjZS4nLCAkY29tcGxldGVfaGVhZGVyc1snYWxnJ10pKTsKCiAgICAgICAgcmV0dXJuICRhbGdvcml0aG07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/VerifierInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIFZlcmlmaWVyIEludGVyZmFjZS4KICovCmludGVyZmFjZSBWZXJpZmllckludGVyZmFjZQp7CiAgICAvKioKICAgICAvKioKICAgICAqIFNpZ25lciBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZVtdICRzaWduYXR1cmVfYWxnb3JpdGhtcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcVmVyaWZpZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVWZXJpZmllcihhcnJheSAkc2lnbmF0dXJlX2FsZ29yaXRobXMpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogVmVyaWZ5IHRoZSBzaWduYXR1cmUgb2YgdGhlIGlucHV0LgogICAgICogVGhlIGlucHV0IG11c3QgYmUgYSB2YWxpZCBKV1MuIFRoaXMgbWV0aG9kIGlzIHVzdWFsbHkgY2FsbGVkIGFmdGVyIHRoZSAibG9hZCIgbWV0aG9kLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRpbnB1dCAgICAgICAgICAgIGEgSldTIG9iamVjdAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGp3ayAgICAgICAgICAgICAgVGhlIHNpZ25hdHVyZSB3aWxsIGJlIHZlcmlmaWVkIHVzaW5nIGtleXMgaW4gdGhlIGtleSBzZXQKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAgICAgICAgICAgICAgICRkZXRhY2hlZF9wYXlsb2FkIElmIG5vdCBudWxsLCB0aGUgdmFsdWUgbXVzdCBiZSB0aGUgZGV0YWNoZWQgcGF5bG9hZCBlbmNvZGVkIGluIEJhc2U2NCBVUkwgc2FmZS4gSWYgdGhlIGlucHV0IGNvbnRhaW5zIGEgcGF5bG9hZCwgdGhyb3dzIGFuIGV4Y2VwdGlvbi4KICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXggIElmIHRoZSBKV1MgaGFzIGJlZW4gdmVyaWZpZWQsIGFuIGludGVnZXIgdGhhdCByZXByZXNlbnRzIHRoZSBJRCBvZiB0aGUgc2lnbmF0dXJlIGlzIHNldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5V2l0aEtleShPYmplY3RcSldTSW50ZXJmYWNlICRpbnB1dCwgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwsICYkc2lnbmF0dXJlX2luZGV4ID0gbnVsbCk7CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiB0aGUgaW5wdXQuCiAgICAgKiBUaGUgaW5wdXQgbXVzdCBiZSBhIHZhbGlkIEpXUy4gVGhpcyBtZXRob2QgaXMgdXN1YWxseSBjYWxsZWQgYWZ0ZXIgdGhlICJsb2FkIiBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgICAgJGp3cyAgICAgICAgICAgICAgYSBKV1Mgb2JqZWN0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCAgICAgICAgICBUaGUgc2lnbmF0dXJlIHdpbGwgYmUgdmVyaWZpZWQgdXNpbmcga2V5cyBpbiB0aGUga2V5IHNldAogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQgSWYgbm90IG51bGwsIHRoZSB2YWx1ZSBtdXN0IGJlIHRoZSBkZXRhY2hlZCBwYXlsb2FkIGVuY29kZWQgaW4gQmFzZTY0IFVSTCBzYWZlLiBJZiB0aGUgaW5wdXQgY29udGFpbnMgYSBwYXlsb2FkLCB0aHJvd3MgYW4gZXhjZXB0aW9uLgogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgICAgJHNpZ25hdHVyZV9pbmRleCAgSWYgdGhlIEpXUyBoYXMgYmVlbiB2ZXJpZmllZCwgYW4gaW50ZWdlciB0aGF0IHJlcHJlc2VudHMgdGhlIElEIG9mIHRoZSBzaWduYXR1cmUgaXMgc2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlXaXRoS2V5U2V0KE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgJGRldGFjaGVkX3BheWxvYWQgPSBudWxsLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/php-aes-gcm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/php-aes-gcm/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvcGhwLWFlcy1nY20iLAogICAgImRlc2NyaXB0aW9uIjogIkFFUyBHQ00gKEdhbG9pcyBDb3VudGVyIE1vZGUpIFBIUCBpbXBsZW1lbnRhdGlvbi4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJHQ00iLCAiR2Fsb2lzIENvdW50ZXIgTW9kZSIsICJBRVMiLCAiQUVTLUdDTSJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9waHAtYWVzLWdjbSIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICB9LHsKICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvcGhwLWFlcy1nY20vY29udHJpYnV0b3JzIgogICAgICAgIH0KICAgIF0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiQUVTR0NNXFwiOiAgInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj01LjQiLAogICAgICAgICJsaWItb3BlbnNzbCI6ICIqIiwKICAgICAgICAiYmViZXJsZWkvYXNzZXJ0IjogIl4yLjQiLAogICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIl4xLjEiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuNXxeNS4wIiwKICAgICAgICAic2F0b29zaGkvcGhwLWNvdmVyYWxscyI6ICJeMS4wIgogICAgfSwKICAgInN1Z2dlc3QiOnsKICAgICAgICAiZXh0LWNyeXB0byI6ICJIaWdobHkgcmVjb21tZW5kZWQgZm9yIGJldHRlciBwZXJmb3JtYW5jZS4iCiAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4yLngtZGV2IgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/php-aes-gcm/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTYgU3BvbWt5LUxhYnMKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/php-aes-gcm/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/php-aes-gcm/src/AESGCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTYgU3BvbWt5LUxhYnMKICoKICogVGhpcyBzb2Z0d2FyZSBtYXkgYmUgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcwogKiBvZiB0aGUgTUlUIGxpY2Vuc2UuICBTZWUgdGhlIExJQ0VOU0UgZmlsZSBmb3IgZGV0YWlscy4KICovCgpuYW1lc3BhY2UgQUVTR0NNOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgpmaW5hbCBjbGFzcyBBRVNHQ00KewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJEsgICAgICAgICAgS2V5IGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJElWICAgICAgICAgSW5pdGlhbGl6YXRpb24gdmVjdG9yCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJFAgICAgICAgICAgRGF0YSB0byBlbmNyeXB0IChudWxsIGZvciBhdXRoZW50aWNhdGlvbikKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkQSAgICAgICAgICBBZGRpdGlvbmFsIEF1dGhlbnRpY2F0aW9uIERhdGEKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAkdGFnX2xlbmd0aCBUYWcgbGVuZ3RoCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY3J5cHQoJEssICRJViwgJFAgPSBudWxsLCAkQSA9IG51bGwsICR0YWdfbGVuZ3RoID0gMTI4KQogICAgewogICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRLLCAnVGhlIGtleSBlbmNyeXB0aW9uIGtleSBtdXN0IGJlIGEgYmluYXJ5IHN0cmluZy4nKTsKICAgICAgICAka2V5X2xlbmd0aCA9IG1iX3N0cmxlbigkSywgJzhiaXQnKSAqIDg7CiAgICAgICAgQXNzZXJ0aW9uOjppbkFycmF5KCRrZXlfbGVuZ3RoLCBbMTI4LCAxOTIsIDI1Nl0sICdCYWQga2V5IGVuY3J5cHRpb24ga2V5IGxlbmd0aC4nKTsKICAgICAgICBBc3NlcnRpb246OnN0cmluZygkSVYsICdUaGUgSW5pdGlhbGl6YXRpb24gVmVjdG9yIG11c3QgYmUgYSBiaW5hcnkgc3RyaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6bnVsbE9yU3RyaW5nKCRQLCAnVGhlIGRhdGEgdG8gZW5jcnlwdCBtdXN0IGJlIG51bGwgb3IgYSBiaW5hcnkgc3RyaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6bnVsbE9yU3RyaW5nKCRBLCAnVGhlIEFkZGl0aW9uYWwgQXV0aGVudGljYXRpb24gRGF0YSBtdXN0IGJlIG51bGwgb3IgYSBiaW5hcnkgc3RyaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkdGFnX2xlbmd0aCwgJ0ludmFsaWQgdGFnIGxlbmd0aC4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6IDEyOCwgMTIwLCAxMTIsIDEwNCBhbmQgOTYuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjppbkFycmF5KCR0YWdfbGVuZ3RoLCBbMTI4LCAxMjAsIDExMiwgMTA0LCA5Nl0sICdJbnZhbGlkIHRhZyBsZW5ndGguIFN1cHBvcnRlZCB2YWx1ZXMgYXJlOiAxMjgsIDEyMCwgMTEyLCAxMDQgYW5kIDk2LicpOwoKICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNy4xLjBSQzUnKSA+PSAwICYmIG51bGwgIT09ICRQKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjplbmNyeXB0V2l0aFBIUDcxKCRLLCAka2V5X2xlbmd0aCwgJElWLCAkUCwgJEEsICR0YWdfbGVuZ3RoKTsKICAgICAgICB9IGVsc2VpZiAoY2xhc3NfZXhpc3RzKCdcQ3J5cHRvXENpcGhlcicpKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjplbmNyeXB0V2l0aENyeXB0b0V4dGVuc2lvbigkSywgJGtleV9sZW5ndGgsICRJViwgJFAsICRBLCAkdGFnX2xlbmd0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6ZW5jcnlwdFdpdGhQSFAoJEssICRrZXlfbGVuZ3RoLCAkSVYsICRQLCAkQSwgJHRhZ19sZW5ndGgpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCBhcHBlbmQgdGhlIHRhZyBhdCB0aGUgZW5kIG9mIHRoZSBjaXBoZXJ0ZXh0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkSyAgICAgICAgICBLZXkgZW5jcnlwdGlvbiBrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkSVYgICAgICAgICBJbml0aWFsaXphdGlvbiB2ZWN0b3IKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkUCAgICAgICAgICBEYXRhIHRvIGVuY3J5cHQgKG51bGwgZm9yIGF1dGhlbnRpY2F0aW9uKQogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRBICAgICAgICAgIEFkZGl0aW9uYWwgQXV0aGVudGljYXRpb24gRGF0YQogICAgICogQHBhcmFtIGludCAgICAgICAgICR0YWdfbGVuZ3RoIFRhZyBsZW5ndGgKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY3J5cHRBbmRBcHBlbmRUYWcoJEssICRJViwgJFAgPSBudWxsLCAkQSA9IG51bGwsICR0YWdfbGVuZ3RoID0gMTI4KQogICAgewogICAgICAgIHJldHVybiBpbXBsb2RlKHNlbGY6OmVuY3J5cHQoJEssICRJViwgJFAsICRBLCAkdGFnX2xlbmd0aCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRLICAgICAgICAgIEtleSBlbmNyeXB0aW9uIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRrZXlfbGVuZ3RoIEtleSBsZW5ndGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkSVYgICAgICAgICBJbml0aWFsaXphdGlvbiB2ZWN0b3IKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkUCAgICAgICAgICBEYXRhIHRvIGVuY3J5cHQgKG51bGwgZm9yIGF1dGhlbnRpY2F0aW9uKQogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRBICAgICAgICAgIEFkZGl0aW9uYWwgQXV0aGVudGljYXRpb24gRGF0YQogICAgICogQHBhcmFtIGludCAgICAgICAgICR0YWdfbGVuZ3RoIFRhZyBsZW5ndGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGVuY3J5cHRXaXRoUEhQNzEoJEssICRrZXlfbGVuZ3RoLCAkSVYsICRQID0gbnVsbCwgJEEgPSBudWxsLCAkdGFnX2xlbmd0aCA9IDEyOCkKICAgIHsKICAgICAgICAkbW9kZSA9ICdhZXMtJy4oJGtleV9sZW5ndGgpLictZ2NtJzsKICAgICAgICAkVCA9IG51bGw7CiAgICAgICAgJEMgPSBvcGVuc3NsX2VuY3J5cHQoJFAsICRtb2RlLCAkSywgT1BFTlNTTF9SQVdfREFUQSwgJElWLCAkVCwgJEEsICR0YWdfbGVuZ3RoIC8gOCk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGZhbHNlICE9PSAkQywgJ1VuYWJsZSB0byBlbmNyeXB0IHRoZSBkYXRhLicpOwoKICAgICAgICByZXR1cm4gWyRDLCAkVF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJEsgICAgICAgICAgS2V5IGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGtleV9sZW5ndGggS2V5IGxlbmd0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRJViAgICAgICAgIEluaXRpYWxpemF0aW9uIHZlY3RvcgogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRQICAgICAgICAgIERhdGEgdG8gZW5jcnlwdCAobnVsbCBmb3IgYXV0aGVudGljYXRpb24pCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJEEgICAgICAgICAgQWRkaXRpb25hbCBBdXRoZW50aWNhdGlvbiBEYXRhCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgJHRhZ19sZW5ndGggVGFnIGxlbmd0aAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZW5jcnlwdFdpdGhQSFAoJEssICRrZXlfbGVuZ3RoLCAkSVYsICRQID0gbnVsbCwgJEEgPSBudWxsLCAkdGFnX2xlbmd0aCA9IDEyOCkKICAgIHsKICAgICAgICBsaXN0KCRKMCwgJHYsICRhX2xlbl9wYWRkaW5nLCAkSCkgPSBzZWxmOjpjb21tb24oJEssICRrZXlfbGVuZ3RoLCAkSVYsICRBKTsKCiAgICAgICAgJEMgPSBzZWxmOjpnZXRHQ1RSKCRLLCAka2V5X2xlbmd0aCwgc2VsZjo6Z2V0SW5jKDMyLCAkSjApLCAkUCk7CiAgICAgICAgJHUgPSBzZWxmOjpjYWxjVmVjdG9yKCRDKTsKICAgICAgICAkY19sZW5fcGFkZGluZyA9IHNlbGY6OmFkZFBhZGRpbmcoJEMpOwoKICAgICAgICAkUyA9IHNlbGY6OmdldEhhc2goJEgsICRBLnN0cl9wYWQoJycsICR2IC8gOCwgIlwwIikuJEMuc3RyX3BhZCgnJywgJHUgLyA4LCAiXDAiKS4kYV9sZW5fcGFkZGluZy4kY19sZW5fcGFkZGluZyk7CiAgICAgICAgJFQgPSBzZWxmOjpnZXRNU0IoJHRhZ19sZW5ndGgsIHNlbGY6OmdldEdDVFIoJEssICRrZXlfbGVuZ3RoLCAkSjAsICRTKSk7CgogICAgICAgIHJldHVybiBbJEMsICRUXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkSyAgICAgICAgICBLZXkgZW5jcnlwdGlvbiBrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAka2V5X2xlbmd0aCBLZXkgbGVuZ3RoCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJElWICAgICAgICAgSW5pdGlhbGl6YXRpb24gdmVjdG9yCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJFAgICAgICAgICAgRGF0YSB0byBlbmNyeXB0IChudWxsIGZvciBhdXRoZW50aWNhdGlvbikKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkQSAgICAgICAgICBBZGRpdGlvbmFsIEF1dGhlbnRpY2F0aW9uIERhdGEKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAkdGFnX2xlbmd0aCBUYWcgbGVuZ3RoCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBlbmNyeXB0V2l0aENyeXB0b0V4dGVuc2lvbigkSywgJGtleV9sZW5ndGgsICRJViwgJFAgPSBudWxsLCAkQSA9IG51bGwsICR0YWdfbGVuZ3RoID0gMTI4KQogICAgewogICAgICAgICRjaXBoZXIgPSBcQ3J5cHRvXENpcGhlcjo6YWVzKFxDcnlwdG9cQ2lwaGVyOjpNT0RFX0dDTSwgJGtleV9sZW5ndGgpOwogICAgICAgICRjaXBoZXItPnNldEFBRCgkQSk7CiAgICAgICAgJGNpcGhlci0+c2V0VGFnTGVuZ3RoKCR0YWdfbGVuZ3RoIC8gOCk7CiAgICAgICAgJEMgPSAkY2lwaGVyLT5lbmNyeXB0KCRQLCAkSywgJElWKTsKICAgICAgICAkVCA9ICRjaXBoZXItPmdldFRhZygpOwoKICAgICAgICByZXR1cm4gWyRDLCAkVF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJEsgIEtleSBlbmNyeXB0aW9uIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRJViBJbml0aWFsaXphdGlvbiB2ZWN0b3IKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkQyAgRGF0YSB0byBlbmNyeXB0IChudWxsIGZvciBhdXRoZW50aWNhdGlvbikKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkQSAgQWRkaXRpb25hbCBBdXRoZW50aWNhdGlvbiBEYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJFQgIFRhZwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjcnlwdCgkSywgJElWLCAkQywgJEEsICRUKQogICAgewogICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRLLCAnVGhlIGtleSBlbmNyeXB0aW9uIGtleSBtdXN0IGJlIGEgYmluYXJ5IHN0cmluZy4nKTsKICAgICAgICAka2V5X2xlbmd0aCA9IG1iX3N0cmxlbigkSywgJzhiaXQnKSAqIDg7CiAgICAgICAgQXNzZXJ0aW9uOjppbkFycmF5KCRrZXlfbGVuZ3RoLCBbMTI4LCAxOTIsIDI1Nl0sICdCYWQga2V5IGVuY3J5cHRpb24ga2V5IGxlbmd0aC4nKTsKICAgICAgICBBc3NlcnRpb246OnN0cmluZygkSVYsICdUaGUgSW5pdGlhbGl6YXRpb24gVmVjdG9yIG11c3QgYmUgYSBiaW5hcnkgc3RyaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6bnVsbE9yU3RyaW5nKCRDLCAnVGhlIGRhdGEgdG8gZW5jcnlwdCBtdXN0IGJlIG51bGwgb3IgYSBiaW5hcnkgc3RyaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6bnVsbE9yU3RyaW5nKCRBLCAnVGhlIEFkZGl0aW9uYWwgQXV0aGVudGljYXRpb24gRGF0YSBtdXN0IGJlIG51bGwgb3IgYSBiaW5hcnkgc3RyaW5nLicpOwoKICAgICAgICAkdGFnX2xlbmd0aCA9IHNlbGY6OmdldExlbmd0aCgkVCk7CiAgICAgICAgQXNzZXJ0aW9uOjppbnRlZ2VyKCR0YWdfbGVuZ3RoLCAnSW52YWxpZCB0YWcgbGVuZ3RoLiBTdXBwb3J0ZWQgdmFsdWVzIGFyZTogMTI4LCAxMjAsIDExMiwgMTA0IGFuZCA5Ni4nKTsKICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJHRhZ19sZW5ndGgsIFsxMjgsIDEyMCwgMTEyLCAxMDQsIDk2XSwgJ0ludmFsaWQgdGFnIGxlbmd0aC4gU3VwcG9ydGVkIHZhbHVlcyBhcmU6IDEyOCwgMTIwLCAxMTIsIDEwNCBhbmQgOTYuJyk7CgogICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc3LjEuMFJDNScpID49IDAgJiYgbnVsbCAhPT0gJEMpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmRlY3J5cHRXaXRoUEhQNzEoJEssICRrZXlfbGVuZ3RoLCAkSVYsICRDLCAkQSwgJFQpOwogICAgICAgIH0gZWxzZWlmIChjbGFzc19leGlzdHMoJ1xDcnlwdG9cQ2lwaGVyJykpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmRlY3J5cHRXaXRoQ3J5cHRvRXh0ZW5zaW9uKCRLLCAka2V5X2xlbmd0aCwgJElWLCAkQywgJEEsICRULCAkdGFnX2xlbmd0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6ZGVjcnlwdFdpdGhQSFAoJEssICRrZXlfbGVuZ3RoLCAkSVYsICRDLCAkQSwgJFQsICR0YWdfbGVuZ3RoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSB1c2VkIGlmIHRoZSB0YWcgaXMgYXBwZW5kZWQgYXQgdGhlIGVuZCBvZiB0aGUgY2lwaGVydGV4dC4KICAgICAqIEl0IGlzIHVzZWQgYnkgc29tZSBBRVMgR0NNIGltcGxlbWVudGF0aW9ucyBzdWNoIGFzIHRoZSBKYXZhIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJEsgICAgICAgICAgS2V5IGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJElWICAgICAgICAgSW5pdGlhbGl6YXRpb24gdmVjdG9yCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJENpcGhlcnRleHQgRGF0YSB0byBlbmNyeXB0IChudWxsIGZvciBhdXRoZW50aWNhdGlvbikKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkQSAgICAgICAgICBBZGRpdGlvbmFsIEF1dGhlbnRpY2F0aW9uIERhdGEKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAkdGFnX2xlbmd0aCBUYWcgbGVuZ3RoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAc2VlIHNlbGY6OmVuY3J5cHRBbmRBcHBlbmRUYWcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWNyeXB0V2l0aEFwcGVuZGVkVGFnKCRLLCAkSVYsICRDaXBoZXJ0ZXh0ID0gbnVsbCwgJEEgPSBudWxsLCAkdGFnX2xlbmd0aCA9IDEyOCkKICAgIHsKICAgICAgICAkdGFnX2xlbmd0aF9pbl9iaXRzID0gJHRhZ19sZW5ndGggLyA4OwogICAgICAgICRDID0gbWJfc3Vic3RyKCRDaXBoZXJ0ZXh0LCAwLCAtJHRhZ19sZW5ndGhfaW5fYml0cywgJzhiaXQnKTsKICAgICAgICAkVCA9IG1iX3N1YnN0cigkQ2lwaGVydGV4dCwgLSR0YWdfbGVuZ3RoX2luX2JpdHMsIG51bGwsICc4Yml0Jyk7CgogICAgICAgIHJldHVybiBzZWxmOjpkZWNyeXB0KCRLLCAkSVYsICRDLCAkQSwgJFQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRLICAgICAgICAgIEtleSBlbmNyeXB0aW9uIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRrZXlfbGVuZ3RoIEtleSBsZW5ndGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkSVYgICAgICAgICBJbml0aWFsaXphdGlvbiB2ZWN0b3IKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkQyAgICAgICAgICBEYXRhIHRvIGVuY3J5cHQgKG51bGwgZm9yIGF1dGhlbnRpY2F0aW9uKQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRBICAgICAgICAgIEFkZGl0aW9uYWwgQXV0aGVudGljYXRpb24gRGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRUICAgICAgICAgIFRhZwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGRlY3J5cHRXaXRoUEhQNzEoJEssICRrZXlfbGVuZ3RoLCAkSVYsICRDLCAkQSwgJFQpCiAgICB7CiAgICAgICAgJG1vZGUgPSAnYWVzLScuKCRrZXlfbGVuZ3RoKS4nLWdjbSc7CiAgICAgICAgJFAgPSBvcGVuc3NsX2RlY3J5cHQobnVsbCA9PT0gJEMgPyAnJyA6ICRDLCAkbW9kZSwgJEssIE9QRU5TU0xfUkFXX0RBVEEsICRJViwgJFQsICRBKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoZmFsc2UgIT09ICRQLCAnVW5hYmxlIHRvIGRlY3J5cHQgb3IgdG8gdmVyaWZ5IHRoZSB0YWcuJyk7CgogICAgICAgIHJldHVybiAkUDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkSyAgICAgICAgICBLZXkgZW5jcnlwdGlvbiBrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAka2V5X2xlbmd0aCBLZXkgbGVuZ3RoCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJElWICAgICAgICAgSW5pdGlhbGl6YXRpb24gdmVjdG9yCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJEMgICAgICAgICAgRGF0YSB0byBlbmNyeXB0IChudWxsIGZvciBhdXRoZW50aWNhdGlvbikKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkQSAgICAgICAgICBBZGRpdGlvbmFsIEF1dGhlbnRpY2F0aW9uIERhdGEKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkVCAgICAgICAgICBUYWcKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAkdGFnX2xlbmd0aCBUYWcgbGVuZ3RoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVjcnlwdFdpdGhQSFAoJEssICRrZXlfbGVuZ3RoLCAkSVYsICRDLCAkQSwgJFQsICR0YWdfbGVuZ3RoID0gMTI4KQogICAgewogICAgICAgIGxpc3QoJEowLCAkdiwgJGFfbGVuX3BhZGRpbmcsICRIKSA9IHNlbGY6OmNvbW1vbigkSywgJGtleV9sZW5ndGgsICRJViwgJEEpOwoKICAgICAgICAkUCA9IHNlbGY6OmdldEdDVFIoJEssICRrZXlfbGVuZ3RoLCBzZWxmOjpnZXRJbmMoMzIsICRKMCksICRDKTsKCiAgICAgICAgJHUgPSBzZWxmOjpjYWxjVmVjdG9yKCRDKTsKICAgICAgICAkY19sZW5fcGFkZGluZyA9IHNlbGY6OmFkZFBhZGRpbmcoJEMpOwoKICAgICAgICAkUyA9IHNlbGY6OmdldEhhc2goJEgsICRBLnN0cl9wYWQoJycsICR2IC8gOCwgIlwwIikuJEMuc3RyX3BhZCgnJywgJHUgLyA4LCAiXDAiKS4kYV9sZW5fcGFkZGluZy4kY19sZW5fcGFkZGluZyk7CiAgICAgICAgJFQxID0gc2VsZjo6Z2V0TVNCKCR0YWdfbGVuZ3RoLCBzZWxmOjpnZXRHQ1RSKCRLLCAka2V5X2xlbmd0aCwgJEowLCAkUykpOwogICAgICAgIEFzc2VydGlvbjo6ZXEoJFQxLCAkVCwgJ1VuYWJsZSB0byBkZWNyeXB0IG9yIHRvIHZlcmlmeSB0aGUgdGFnLicpOwoKICAgICAgICByZXR1cm4gJFA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJEsgICAgICAgICAgS2V5IGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGtleV9sZW5ndGggS2V5IGxlbmd0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRJViAgICAgICAgIEluaXRpYWxpemF0aW9uIHZlY3RvcgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRDICAgICAgICAgIERhdGEgdG8gZW5jcnlwdCAobnVsbCBmb3IgYXV0aGVudGljYXRpb24pCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJEEgICAgICAgICAgQWRkaXRpb25hbCBBdXRoZW50aWNhdGlvbiBEYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJFQgICAgICAgICAgVGFnCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgJHRhZ19sZW5ndGggVGFnIGxlbmd0aAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGRlY3J5cHRXaXRoQ3J5cHRvRXh0ZW5zaW9uKCRLLCAka2V5X2xlbmd0aCwgJElWLCAkQywgJEEsICRULCAkdGFnX2xlbmd0aCA9IDEyOCkKICAgIHsKICAgICAgICAkY2lwaGVyID0gXENyeXB0b1xDaXBoZXI6OmFlcyhcQ3J5cHRvXENpcGhlcjo6TU9ERV9HQ00sICRrZXlfbGVuZ3RoKTsKICAgICAgICAkY2lwaGVyLT5zZXRUYWcoJFQpOwogICAgICAgICRjaXBoZXItPnNldEFBRCgkQSk7CiAgICAgICAgJGNpcGhlci0+c2V0VGFnTGVuZ3RoKCR0YWdfbGVuZ3RoIC8gOCk7CgogICAgICAgIHJldHVybiAkY2lwaGVyLT5kZWNyeXB0KCRDLCAkSywgJElWKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkSwogICAgICogQHBhcmFtICRrZXlfbGVuZ3RoCiAgICAgKiBAcGFyYW0gJElWCiAgICAgKiBAcGFyYW0gJEEKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbW1vbigkSywgJGtleV9sZW5ndGgsICRJViwgJEEpCiAgICB7CiAgICAgICAgJEggPSBvcGVuc3NsX2VuY3J5cHQoc3RyX3JlcGVhdCgiXDAiLCAxNiksICdhZXMtJy4oJGtleV9sZW5ndGgpLictZWNiJywgJEssIE9QRU5TU0xfTk9fUEFERElORyB8IE9QRU5TU0xfUkFXX0RBVEEpOyAvLy0tLQogICAgICAgICRpdl9sZW4gPSBzZWxmOjpnZXRMZW5ndGgoJElWKTsKCiAgICAgICAgaWYgKDk2ID09PSAkaXZfbGVuKSB7CiAgICAgICAgICAgICRKMCA9ICRJVi5wYWNrKCdIKicsICcwMDAwMDAwMScpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzID0gc2VsZjo6Y2FsY1ZlY3RvcigkSVYpOwogICAgICAgICAgICBBc3NlcnRpb246OmVxKCgkcyArIDY0KSAlIDgsIDAsICdVbmFibGUgdG8gZGVjcnlwdCBvciB0byB2ZXJpZnkgdGhlIHRhZy4nKTsKCiAgICAgICAgICAgICRwYWNrZWRfaXZfbGVuID0gcGFjaygnTicsICRpdl9sZW4pOwogICAgICAgICAgICAkaXZfbGVuX3BhZGRpbmcgPSBzdHJfcGFkKCRwYWNrZWRfaXZfbGVuLCA4LCAiXDAiLCBTVFJfUEFEX0xFRlQpOwogICAgICAgICAgICAkaGFzaF9YID0gJElWLnN0cl9wYWQoJycsICgkcyArIDY0KSAvIDgsICJcMCIpLiRpdl9sZW5fcGFkZGluZzsKICAgICAgICAgICAgJEowID0gc2VsZjo6Z2V0SGFzaCgkSCwgJGhhc2hfWCk7CiAgICAgICAgfQogICAgICAgICR2ID0gc2VsZjo6Y2FsY1ZlY3RvcigkQSk7CiAgICAgICAgJGFfbGVuX3BhZGRpbmcgPSBzZWxmOjphZGRQYWRkaW5nKCRBKTsKCiAgICAgICAgcmV0dXJuIFskSjAsICR2LCAkYV9sZW5fcGFkZGluZywgJEhdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYWxjVmVjdG9yKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gKDEyOCAqIGNlaWwoc2VsZjo6Z2V0TGVuZ3RoKCR2YWx1ZSkgLyAxMjgpKSAtIHNlbGY6OmdldExlbmd0aCgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBhZGRQYWRkaW5nKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3BhZChwYWNrKCdOJywgc2VsZjo6Z2V0TGVuZ3RoKCR2YWx1ZSkpLCA4LCAiXDAiLCBTVFJfUEFEX0xFRlQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkeAogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldExlbmd0aCgkeCkKICAgIHsKICAgICAgICByZXR1cm4gbWJfc3RybGVuKCR4LCAnOGJpdCcpICogODsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJG51bV9iaXRzCiAgICAgKiBAcGFyYW0gaW50ICR4CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0TVNCKCRudW1fYml0cywgJHgpCiAgICB7CiAgICAgICAgJG51bV9ieXRlcyA9ICRudW1fYml0cyAvIDg7CgogICAgICAgIHJldHVybiBtYl9zdWJzdHIoJHgsIDAsICRudW1fYnl0ZXMsICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRudW1fYml0cwogICAgICogQHBhcmFtIGludCAkeAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldExTQigkbnVtX2JpdHMsICR4KQogICAgewogICAgICAgICRudW1fYnl0ZXMgPSAoJG51bV9iaXRzIC8gOCk7CgogICAgICAgIHJldHVybiBtYl9zdWJzdHIoJHgsIC0kbnVtX2J5dGVzLCBudWxsLCAnOGJpdCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkc19iaXRzCiAgICAgKiBAcGFyYW0gaW50ICR4CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5jKCRzX2JpdHMsICR4KQogICAgewogICAgICAgICRsc2IgPSBzZWxmOjpnZXRMU0IoJHNfYml0cywgJHgpOwogICAgICAgICRYID0gc2VsZjo6dG9VSW50MzJCaXRzKCRsc2IpICsgMTsKICAgICAgICAkcmVzID0gc2VsZjo6Z2V0TVNCKHNlbGY6OmdldExlbmd0aCgkeCkgLSAkc19iaXRzLCAkeCkucGFjaygnTicsICRYKTsKCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiaW4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRvVUludDMyQml0cygkYmluKQogICAgewogICAgICAgIGxpc3QoLCAkaCwgJGwpID0gdW5wYWNrKCduKicsICRiaW4pOwoKICAgICAgICByZXR1cm4gJGwgKyAoJGggKiAweDAxMDAwMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJFgKICAgICAqIEBwYXJhbSAkWQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFByb2R1Y3QoJFgsICRZKQogICAgewogICAgICAgICRSID0gcGFjaygnSConLCAnRTEnKS5zdHJfcGFkKCcnLCAxNSwgIlwwIik7CiAgICAgICAgJFogPSBzdHJfcGFkKCcnLCAxNiwgIlwwIik7CiAgICAgICAgJFYgPSAkWTsKCiAgICAgICAgJHBhcnRzID0gc3RyX3NwbGl0KCRYLCA0KTsKICAgICAgICAkeCA9IHNwcmludGYoJyUwMzJiJTAzMmIlMDMyYiUwMzJiJywgc2VsZjo6dG9VSW50MzJCaXRzKCRwYXJ0c1swXSksIHNlbGY6OnRvVUludDMyQml0cygkcGFydHNbMV0pLCBzZWxmOjp0b1VJbnQzMkJpdHMoJHBhcnRzWzJdKSwgc2VsZjo6dG9VSW50MzJCaXRzKCRwYXJ0c1szXSkpOwogICAgICAgICRsc2JfbWFzayA9ICJcMSI7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgMTI4OyAkaSsrKSB7CiAgICAgICAgICAgIGlmICgkeFskaV0pIHsKICAgICAgICAgICAgICAgICRaID0gc2VsZjo6Z2V0Qml0WG9yKCRaLCAkVik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGxzYl84ID0gbWJfc3Vic3RyKCRWLCAtMSwgbnVsbCwgJzhiaXQnKTsKICAgICAgICAgICAgaWYgKG9yZCgkbHNiXzggJiAkbHNiX21hc2spKSB7CiAgICAgICAgICAgICAgICAkViA9IHNlbGY6OmdldEJpdFhvcihzZWxmOjpzaGlmdFN0cmluZ1RvUmlnaHQoJFYpLCAkUik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkViA9IHNlbGY6OnNoaWZ0U3RyaW5nVG9SaWdodCgkVik7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkWjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2hpZnRTdHJpbmdUb1JpZ2h0KCRpbnB1dCkKICAgIHsKICAgICAgICAkd2lkdGggPSA0OwogICAgICAgICRwYXJ0cyA9IGFycmF5X21hcCgnc2VsZjo6dG9VSW50MzJCaXRzJywgc3RyX3NwbGl0KCRpbnB1dCwgJHdpZHRoKSk7CiAgICAgICAgJHJ1bnMgPSBjb3VudCgkcGFydHMpOwoKICAgICAgICBmb3IgKCRpID0gJHJ1bnMgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgIGlmICgkaSkgewogICAgICAgICAgICAgICAgJGxzYjEgPSAkcGFydHNbJGkgLSAxXSAmIDB4MDAwMDAwMDE7CiAgICAgICAgICAgICAgICBpZiAoJGxzYjEpIHsKICAgICAgICAgICAgICAgICAgICAkcGFydHNbJGldID0gKCRwYXJ0c1skaV0gPj4gMSkgfCAweDgwMDAwMDAwOwogICAgICAgICAgICAgICAgICAgICRwYXJ0c1skaV0gPSBwYWNrKCdOJywgJHBhcnRzWyRpXSk7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHBhcnRzWyRpXSA9ICgkcGFydHNbJGldID4+IDEpICYgMHg3RkZGRkZGRjsKICAgICAgICAgICAgJHBhcnRzWyRpXSA9IHBhY2soJ04nLCAkcGFydHNbJGldKTsKICAgICAgICB9CiAgICAgICAgJHJlcyA9IGltcGxvZGUoJycsICRwYXJ0cyk7CgogICAgICAgIHJldHVybiAkcmVzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkSAogICAgICogQHBhcmFtIHN0cmluZyAkWAogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SGFzaCgkSCwgJFgpCiAgICB7CiAgICAgICAgJFkgPSBbXTsKICAgICAgICAkWVswXSA9IHN0cl9wYWQoJycsIDE2LCAiXDAiKTsKICAgICAgICAkbnVtX2Jsb2NrcyA9IChpbnQpIChtYl9zdHJsZW4oJFgsICc4Yml0JykgLyAxNik7CiAgICAgICAgZm9yICgkaSA9IDE7ICRpIDw9ICRudW1fYmxvY2tzOyAkaSsrKSB7CiAgICAgICAgICAgICRZWyRpXSA9IHNlbGY6OmdldFByb2R1Y3Qoc2VsZjo6Z2V0Qml0WG9yKCRZWyRpIC0gMV0sIG1iX3N1YnN0cigkWCwgKCRpIC0gMSkgKiAxNiwgMTYsICc4Yml0JykpLCAkSCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFlbJG51bV9ibG9ja3NdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkSwogICAgICogQHBhcmFtIGludCAgICAka2V5X2xlbmd0aAogICAgICogQHBhcmFtIHN0cmluZyAkSUNCCiAgICAgKiBAcGFyYW0gc3RyaW5nICRYCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0R0NUUigkSywgJGtleV9sZW5ndGgsICRJQ0IsICRYKQogICAgewogICAgICAgIGlmIChlbXB0eSgkWCkpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgJG4gPSAoaW50KSBjZWlsKHNlbGY6OmdldExlbmd0aCgkWCkgLyAxMjgpOwogICAgICAgICRDQiA9IFtdOwogICAgICAgICRZID0gW107CiAgICAgICAgJENCWzFdID0gJElDQjsKICAgICAgICBmb3IgKCRpID0gMjsgJGkgPD0gJG47ICRpKyspIHsKICAgICAgICAgICAgJENCWyRpXSA9IHNlbGY6OmdldEluYygzMiwgJENCWyRpIC0gMV0pOwogICAgICAgIH0KICAgICAgICAkbW9kZSA9ICdhZXMtJy4oJGtleV9sZW5ndGgpLictZWNiJzsKICAgICAgICBmb3IgKCRpID0gMTsgJGkgPCAkbjsgJGkrKykgewogICAgICAgICAgICAkQyA9IG9wZW5zc2xfZW5jcnlwdCgkQ0JbJGldLCAkbW9kZSwgJEssIE9QRU5TU0xfTk9fUEFERElORyB8IE9QRU5TU0xfUkFXX0RBVEEpOwogICAgICAgICAgICAkWVskaV0gPSBzZWxmOjpnZXRCaXRYb3IobWJfc3Vic3RyKCRYLCAoJGkgLSAxKSAqIDE2LCAxNiwgJzhiaXQnKSwgJEMpOwogICAgICAgIH0KCiAgICAgICAgJFhuID0gbWJfc3Vic3RyKCRYLCAoJG4gLSAxKSAqIDE2LCBudWxsLCAnOGJpdCcpOwogICAgICAgICRDID0gb3BlbnNzbF9lbmNyeXB0KCRDQlskbl0sICRtb2RlLCAkSywgT1BFTlNTTF9OT19QQURESU5HIHwgT1BFTlNTTF9SQVdfREFUQSk7CiAgICAgICAgJFlbJG5dID0gc2VsZjo6Z2V0Qml0WG9yKCRYbiwgc2VsZjo6Z2V0TVNCKHNlbGY6OmdldExlbmd0aCgkWG4pLCAkQykpOwoKICAgICAgICByZXR1cm4gaW1wbG9kZSgnJywgJFkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbzEKICAgICAqIEBwYXJhbSBzdHJpbmcgJG8yCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0Qml0WG9yKCRvMSwgJG8yKQogICAgewogICAgICAgICR4b3JXaWR0aCA9IFBIUF9JTlRfU0laRTsKICAgICAgICAkbzEgPSBzdHJfc3BsaXQoJG8xLCAkeG9yV2lkdGgpOwogICAgICAgICRvMiA9IHN0cl9zcGxpdCgkbzIsICR4b3JXaWR0aCk7CiAgICAgICAgJHJlcyA9ICcnOwogICAgICAgICRydW5zID0gY291bnQoJG8xKTsKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkcnVuczsgJGkrKykgewogICAgICAgICAgICAkcmVzIC49ICRvMVskaV0gXiAkbzJbJGldOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXE1ic3RyaW5nIGFzIHA7CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RybGVuJykpIHsKICAgIGRlZmluZSgnTUJfQ0FTRV9VUFBFUicsIDApOwogICAgZGVmaW5lKCdNQl9DQVNFX0xPV0VSJywgMSk7CiAgICBkZWZpbmUoJ01CX0NBU0VfVElUTEUnLCAyKTsKCiAgICBmdW5jdGlvbiBtYl9jb252ZXJ0X2VuY29kaW5nKCRzLCAkdG8sICRmcm9tID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY29udmVydF9lbmNvZGluZygkcywgJHRvLCAkZnJvbSk7IH0KICAgIGZ1bmN0aW9uIG1iX2RlY29kZV9taW1laGVhZGVyKCRzKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9kZWNvZGVfbWltZWhlYWRlcigkcyk7IH0KICAgIGZ1bmN0aW9uIG1iX2VuY29kZV9taW1laGVhZGVyKCRzLCAkY2hhcnNldCA9IG51bGwsICR0cmFuc2ZlckVuYyA9IG51bGwsICRsZiA9IG51bGwsICRpbmRlbnQgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9lbmNvZGVfbWltZWhlYWRlcigkcywgJGNoYXJzZXQsICR0cmFuc2ZlckVuYywgJGxmLCAkaW5kZW50KTsgfQogICAgZnVuY3Rpb24gbWJfZGVjb2RlX251bWVyaWNlbnRpdHkoJHMsICRjb252bWFwLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZGVjb2RlX251bWVyaWNlbnRpdHkoJHMsICRjb252bWFwLCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfZW5jb2RlX251bWVyaWNlbnRpdHkoJHMsICRjb252bWFwLCAkZW5jID0gbnVsbCwgJGlzX2hleCA9IGZhbHNlKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9lbmNvZGVfbnVtZXJpY2VudGl0eSgkcywgJGNvbnZtYXAsICRlbmMsICRpc19oZXgpOyB9CiAgICBmdW5jdGlvbiBtYl9jb252ZXJ0X2Nhc2UoJHMsICRtb2RlLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY29udmVydF9jYXNlKCRzLCAkbW9kZSwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX2ludGVybmFsX2VuY29kaW5nKCRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9pbnRlcm5hbF9lbmNvZGluZygkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfbGFuZ3VhZ2UoJGxhbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9sYW5ndWFnZSgkbGFuZyk7IH0KICAgIGZ1bmN0aW9uIG1iX2xpc3RfZW5jb2RpbmdzKCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfbGlzdF9lbmNvZGluZ3MoKTsgfQogICAgZnVuY3Rpb24gbWJfZW5jb2RpbmdfYWxpYXNlcygkZW5jb2RpbmcpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2VuY29kaW5nX2FsaWFzZXMoJGVuY29kaW5nKTsgfQogICAgZnVuY3Rpb24gbWJfY2hlY2tfZW5jb2RpbmcoJHZhciA9IG51bGwsICRlbmNvZGluZyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2NoZWNrX2VuY29kaW5nKCR2YXIsICRlbmNvZGluZyk7IH0KICAgIGZ1bmN0aW9uIG1iX2RldGVjdF9lbmNvZGluZygkc3RyLCAkZW5jb2RpbmdMaXN0ID0gbnVsbCwgJHN0cmljdCA9IGZhbHNlKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9kZXRlY3RfZW5jb2RpbmcoJHN0ciwgJGVuY29kaW5nTGlzdCwgJHN0cmljdCk7IH0KICAgIGZ1bmN0aW9uIG1iX2RldGVjdF9vcmRlcigkZW5jb2RpbmdMaXN0ID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZGV0ZWN0X29yZGVyKCRlbmNvZGluZ0xpc3QpOyB9CiAgICBmdW5jdGlvbiBtYl9wYXJzZV9zdHIoJHMsICYkcmVzdWx0ID0gYXJyYXkoKSkgeyBwYXJzZV9zdHIoJHMsICRyZXN1bHQpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJsZW4oJHMsICRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJsZW4oJHMsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJwb3MoJHMsICRuZWVkbGUsICRvZmZzZXQgPSAwLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RycG9zKCRzLCAkbmVlZGxlLCAkb2Zmc2V0LCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc3RydG9sb3dlcigkcywgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnRvbG93ZXIoJHMsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJ0b3VwcGVyKCRzLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RydG91cHBlcigkcywgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N1YnN0aXR1dGVfY2hhcmFjdGVyKCRjaGFyID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXIoJGNoYXIpOyB9CiAgICBmdW5jdGlvbiBtYl9zdWJzdHIoJHMsICRzdGFydCwgJGxlbmd0aCA9IDIxNDc0ODM2NDcsICRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdWJzdHIoJHMsICRzdGFydCwgJGxlbmd0aCwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N0cmlwb3MoJHMsICRuZWVkbGUsICRvZmZzZXQgPSAwLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RyaXBvcygkcywgJG5lZWRsZSwgJG9mZnNldCwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N0cmlzdHIoJHMsICRuZWVkbGUsICRwYXJ0ID0gZmFsc2UsICRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJpc3RyKCRzLCAkbmVlZGxlLCAkcGFydCwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N0cnJjaHIoJHMsICRuZWVkbGUsICRwYXJ0ID0gZmFsc2UsICRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJyY2hyKCRzLCAkbmVlZGxlLCAkcGFydCwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N0cnJpY2hyKCRzLCAkbmVlZGxlLCAkcGFydCA9IGZhbHNlLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RycmljaHIoJHMsICRuZWVkbGUsICRwYXJ0LCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc3Rycmlwb3MoJHMsICRuZWVkbGUsICRvZmZzZXQgPSAwLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Rycmlwb3MoJHMsICRuZWVkbGUsICRvZmZzZXQsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJycG9zKCRzLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnJwb3MoJHMsICRuZWVkbGUsICRvZmZzZXQsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJzdHIoJHMsICRuZWVkbGUsICRwYXJ0ID0gZmFsc2UsICRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJzdHIoJHMsICRuZWVkbGUsICRwYXJ0LCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfZ2V0X2luZm8oJHR5cGUgPSAnYWxsJykgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZ2V0X2luZm8oJHR5cGUpOyB9CiAgICBmdW5jdGlvbiBtYl9odHRwX291dHB1dCgkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfaHR0cF9vdXRwdXQoJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N0cndpZHRoKCRzLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Ryd2lkdGgoJHMsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdWJzdHJfY291bnQoJGhheXN0YWNrLCAkbmVlZGxlLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Vic3RyX2NvdW50KCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX291dHB1dF9oYW5kbGVyKCRjb250ZW50cywgJHN0YXR1cykgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfb3V0cHV0X2hhbmRsZXIoJGNvbnRlbnRzLCAkc3RhdHVzKTsgfQogICAgZnVuY3Rpb24gbWJfaHR0cF9pbnB1dCgkdHlwZSA9ICcnKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9odHRwX2lucHV0KCR0eXBlKTsgfQogICAgZnVuY3Rpb24gbWJfY29udmVydF92YXJpYWJsZXMoJHRvRW5jb2RpbmcsICRmcm9tRW5jb2RpbmcsICYkYSA9IG51bGwsICYkYiA9IG51bGwsICYkYyA9IG51bGwsICYkZCA9IG51bGwsICYkZSA9IG51bGwsICYkZiA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2NvbnZlcnRfdmFyaWFibGVzKCR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nLCAkYSwgJGIsICRjLCAkZCwgJGUsICRmKTsgfQp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdtYl9jaHInKSkgewogICAgZnVuY3Rpb24gbWJfb3JkKCRzLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfb3JkKCRzLCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfY2hyKCRjb2RlLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY2hyKCRjb2RlLCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc2NydWIoJHMsICRlbmMgPSBudWxsKSB7ICRlbmMgPSBudWxsID09PSAkZW5jID8gbWJfaW50ZXJuYWxfZW5jb2RpbmcoKSA6ICRlbmM7IHJldHVybiBtYl9jb252ZXJ0X2VuY29kaW5nKCRzLCAkZW5jLCAkZW5jKTsgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZyIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGZvciB0aGUgTWJzdHJpbmcgZXh0ZW5zaW9uIiwKICAgICJrZXl3b3JkcyI6IFsicG9seWZpbGwiLCAic2hpbSIsICJjb21wYXRpYmlsaXR5IiwgInBvcnRhYmxlIiwgIm1ic3RyaW5nIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7ICJTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCI6ICIiIH0sCiAgICAgICAgImZpbGVzIjogWyAiYm9vdHN0cmFwLnBocCIgXQogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtbWJzdHJpbmciOiAiRm9yIGJlc3QgcGVyZm9ybWFuY2UiCiAgICB9LAogICAgIm1pbmltdW0tc3RhYmlsaXR5IjogImRldiIsCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS44LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1LTIwMTggRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/Mbstring.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXE1ic3RyaW5nOwoKLyoqCiAqIFBhcnRpYWwgbWJzdHJpbmcgaW1wbGVtZW50YXRpb24gaW4gUEhQLCBpY29udiBiYXNlZCwgVVRGLTggY2VudHJpYy4KICoKICogSW1wbGVtZW50ZWQ6CiAqIC0gbWJfY2hyICAgICAgICAgICAgICAgICAgLSBSZXR1cm5zIGEgc3BlY2lmaWMgY2hhcmFjdGVyIGZyb20gaXRzIFVuaWNvZGUgY29kZSBwb2ludAogKiAtIG1iX2NvbnZlcnRfZW5jb2RpbmcgICAgIC0gQ29udmVydCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9jb252ZXJ0X3ZhcmlhYmxlcyAgICAtIENvbnZlcnQgY2hhcmFjdGVyIGNvZGUgaW4gdmFyaWFibGUocykKICogLSBtYl9kZWNvZGVfbWltZWhlYWRlciAgICAtIERlY29kZSBzdHJpbmcgaW4gTUlNRSBoZWFkZXIgZmllbGQKICogLSBtYl9lbmNvZGVfbWltZWhlYWRlciAgICAtIEVuY29kZSBzdHJpbmcgZm9yIE1JTUUgaGVhZGVyIFhYWCBOQVRJVkUgSU1QTEVNRU5UQVRJT04gSVMgUkVBTExZIEJVR0dFRAogKiAtIG1iX2RlY29kZV9udW1lcmljZW50aXR5IC0gRGVjb2RlIEhUTUwgbnVtZXJpYyBzdHJpbmcgcmVmZXJlbmNlIHRvIGNoYXJhY3RlcgogKiAtIG1iX2VuY29kZV9udW1lcmljZW50aXR5IC0gRW5jb2RlIGNoYXJhY3RlciB0byBIVE1MIG51bWVyaWMgc3RyaW5nIHJlZmVyZW5jZQogKiAtIG1iX2NvbnZlcnRfY2FzZSAgICAgICAgIC0gUGVyZm9ybSBjYXNlIGZvbGRpbmcgb24gYSBzdHJpbmcKICogLSBtYl9kZXRlY3RfZW5jb2RpbmcgICAgICAtIERldGVjdCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9nZXRfaW5mbyAgICAgICAgICAgICAtIEdldCBpbnRlcm5hbCBzZXR0aW5ncyBvZiBtYnN0cmluZwogKiAtIG1iX2h0dHBfaW5wdXQgICAgICAgICAgIC0gRGV0ZWN0IEhUVFAgaW5wdXQgY2hhcmFjdGVyIGVuY29kaW5nCiAqIC0gbWJfaHR0cF9vdXRwdXQgICAgICAgICAgLSBTZXQvR2V0IEhUVFAgb3V0cHV0IGNoYXJhY3RlciBlbmNvZGluZwogKiAtIG1iX2ludGVybmFsX2VuY29kaW5nICAgIC0gU2V0L0dldCBpbnRlcm5hbCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9saXN0X2VuY29kaW5ncyAgICAgICAtIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN1cHBvcnRlZCBlbmNvZGluZ3MKICogLSBtYl9vcmQgICAgICAgICAgICAgICAgICAtIFJldHVybnMgdGhlIFVuaWNvZGUgY29kZSBwb2ludCBvZiBhIGNoYXJhY3RlcgogKiAtIG1iX291dHB1dF9oYW5kbGVyICAgICAgIC0gQ2FsbGJhY2sgZnVuY3Rpb24gY29udmVydHMgY2hhcmFjdGVyIGVuY29kaW5nIGluIG91dHB1dCBidWZmZXIKICogLSBtYl9zY3J1YiAgICAgICAgICAgICAgICAtIFJlcGxhY2VzIGlsbC1mb3JtZWQgYnl0ZSBzZXF1ZW5jZXMgd2l0aCBzdWJzdGl0dXRlIGNoYXJhY3RlcnMKICogLSBtYl9zdHJsZW4gICAgICAgICAgICAgICAtIEdldCBzdHJpbmcgbGVuZ3RoCiAqIC0gbWJfc3RycG9zICAgICAgICAgICAgICAgLSBGaW5kIHBvc2l0aW9uIG9mIGZpcnN0IG9jY3VycmVuY2Ugb2Ygc3RyaW5nIGluIGEgc3RyaW5nCiAqIC0gbWJfc3RycnBvcyAgICAgICAgICAgICAgLSBGaW5kIHBvc2l0aW9uIG9mIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyBpbiBhIHN0cmluZwogKiAtIG1iX3N0cnRvbG93ZXIgICAgICAgICAgIC0gTWFrZSBhIHN0cmluZyBsb3dlcmNhc2UKICogLSBtYl9zdHJ0b3VwcGVyICAgICAgICAgICAtIE1ha2UgYSBzdHJpbmcgdXBwZXJjYXNlCiAqIC0gbWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXIgLSBTZXQvR2V0IHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIKICogLSBtYl9zdWJzdHIgICAgICAgICAgICAgICAtIEdldCBwYXJ0IG9mIHN0cmluZwogKiAtIG1iX3N0cmlwb3MgICAgICAgICAgICAgIC0gRmluZHMgcG9zaXRpb24gb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cmlzdHIgICAgICAgICAgICAgIC0gRmluZHMgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cnJjaHIgICAgICAgICAgICAgIC0gRmluZHMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNoYXJhY3RlciBpbiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlcgogKiAtIG1iX3N0cnJpY2hyICAgICAgICAgICAgIC0gRmluZHMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNoYXJhY3RlciBpbiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cnJpcG9zICAgICAgICAgICAgIC0gRmluZHMgcG9zaXRpb24gb2YgbGFzdCBvY2N1cnJlbmNlIG9mIGEgc3RyaW5nIHdpdGhpbiBhbm90aGVyLCBjYXNlIGluc2Vuc2l0aXZlCiAqIC0gbWJfc3Ryc3RyICAgICAgICAgICAgICAgLSBGaW5kcyBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgc3RyaW5nIHdpdGhpbiBhbm90aGVycwogKiAtIG1iX3N0cndpZHRoICAgICAgICAgICAgIC0gUmV0dXJuIHdpZHRoIG9mIHN0cmluZwogKiAtIG1iX3N1YnN0cl9jb3VudCAgICAgICAgIC0gQ291bnQgdGhlIG51bWJlciBvZiBzdWJzdHJpbmcgb2NjdXJyZW5jZXMKICoKICogTm90IGltcGxlbWVudGVkOgogKiAtIG1iX2NvbnZlcnRfa2FuYSAgICAgICAgIC0gQ29udmVydCAia2FuYSIgb25lIGZyb20gYW5vdGhlciAoInplbi1rYWt1IiwgImhhbi1rYWt1IiBhbmQgbW9yZSkKICogLSBtYl9lcmVnXyogICAgICAgICAgICAgICAtIFJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIG11bHRpYnl0ZSBzdXBwb3J0CiAqIC0gbWJfcGFyc2Vfc3RyICAgICAgICAgICAgLSBQYXJzZSBHRVQvUE9TVC9DT09LSUUgZGF0YSBhbmQgc2V0IGdsb2JhbCB2YXJpYWJsZQogKiAtIG1iX3ByZWZlcnJlZF9taW1lX25hbWUgIC0gR2V0IE1JTUUgY2hhcnNldCBzdHJpbmcKICogLSBtYl9yZWdleF9lbmNvZGluZyAgICAgICAtIFJldHVybnMgY3VycmVudCBlbmNvZGluZyBmb3IgbXVsdGlieXRlIHJlZ2V4IGFzIHN0cmluZwogKiAtIG1iX3JlZ2V4X3NldF9vcHRpb25zICAgIC0gU2V0L0dldCB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciBtYnJlZ2V4IGZ1bmN0aW9ucwogKiAtIG1iX3NlbmRfbWFpbCAgICAgICAgICAgIC0gU2VuZCBlbmNvZGVkIG1haWwKICogLSBtYl9zcGxpdCAgICAgICAgICAgICAgICAtIFNwbGl0IG11bHRpYnl0ZSBzdHJpbmcgdXNpbmcgcmVndWxhciBleHByZXNzaW9uCiAqIC0gbWJfc3RyY3V0ICAgICAgICAgICAgICAgLSBHZXQgcGFydCBvZiBzdHJpbmcKICogLSBtYl9zdHJpbXdpZHRoICAgICAgICAgICAtIEdldCB0cnVuY2F0ZWQgc3RyaW5nIHdpdGggc3BlY2lmaWVkIHdpZHRoCiAqCiAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTWJzdHJpbmcKewogICAgY29uc3QgTUJfQ0FTRV9GT0xEID0gUEhQX0lOVF9NQVg7CgogICAgcHJpdmF0ZSBzdGF0aWMgJGVuY29kaW5nTGlzdCA9IGFycmF5KCdBU0NJSScsICdVVEYtOCcpOwogICAgcHJpdmF0ZSBzdGF0aWMgJGxhbmd1YWdlID0gJ25ldXRyYWwnOwogICAgcHJpdmF0ZSBzdGF0aWMgJGludGVybmFsRW5jb2RpbmcgPSAnVVRGLTgnOwogICAgcHJpdmF0ZSBzdGF0aWMgJGNhc2VGb2xkID0gYXJyYXkoCiAgICAgICAgYXJyYXkoJ8K1Jywnxb8nLCJceENEXHg4NSIsJ8+CJywiXHhDRlx4OTAiLCJceENGXHg5MSIsIlx4Q0ZceDk1IiwiXHhDRlx4OTYiLCJceENGXHhCMCIsIlx4Q0ZceEIxIiwiXHhDRlx4QjUiLCJceEUxXHhCQVx4OUIiLCJceEUxXHhCRVx4QkUiKSwKICAgICAgICBhcnJheSgnzrwnLCdzJywnzrknLCAgICAgICAnz4MnLCfOsicsICAgICAgICfOuCcsICAgICAgICfPhicsICAgICAgICfPgCcsICAgICAgICfOuicsICAgICAgICfPgScsICAgICAgICfOtScsICAgICAgICJceEUxXHhCOVx4QTEiLCfOuScpLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NvbnZlcnRfZW5jb2RpbmcoJHMsICR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoXGlzX2FycmF5KCRmcm9tRW5jb2RpbmcpIHx8IGZhbHNlICE9PSBzdHJwb3MoJGZyb21FbmNvZGluZywgJywnKSkgewogICAgICAgICAgICAkZnJvbUVuY29kaW5nID0gc2VsZjo6bWJfZGV0ZWN0X2VuY29kaW5nKCRzLCAkZnJvbUVuY29kaW5nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkZnJvbUVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGZyb21FbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICAkdG9FbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCR0b0VuY29kaW5nKTsKCiAgICAgICAgaWYgKCdCQVNFNjQnID09PSAkZnJvbUVuY29kaW5nKSB7CiAgICAgICAgICAgICRzID0gYmFzZTY0X2RlY29kZSgkcyk7CiAgICAgICAgICAgICRmcm9tRW5jb2RpbmcgPSAkdG9FbmNvZGluZzsKICAgICAgICB9CgogICAgICAgIGlmICgnQkFTRTY0JyA9PT0gJHRvRW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIGJhc2U2NF9lbmNvZGUoJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdIVE1MLUVOVElUSUVTJyA9PT0gJHRvRW5jb2RpbmcgfHwgJ0hUTUwnID09PSAkdG9FbmNvZGluZykgewogICAgICAgICAgICBpZiAoJ0hUTUwtRU5USVRJRVMnID09PSAkZnJvbUVuY29kaW5nIHx8ICdIVE1MJyA9PT0gJGZyb21FbmNvZGluZykgewogICAgICAgICAgICAgICAgJGZyb21FbmNvZGluZyA9ICdXaW5kb3dzLTEyNTInOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgnVVRGLTgnICE9PSAkZnJvbUVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAkcyA9IGljb252KCRmcm9tRW5jb2RpbmcsICdVVEYtOC8vSUdOT1JFJywgJHMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvW1x4ODAtXHhGRl0rLycsIGFycmF5KF9fQ0xBU1NfXywgJ2h0bWxfZW5jb2RpbmdfY2FsbGJhY2snKSwgJHMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdIVE1MLUVOVElUSUVTJyA9PT0gJGZyb21FbmNvZGluZykgewogICAgICAgICAgICAkcyA9IGh0bWxfZW50aXR5X2RlY29kZSgkcywgRU5UX0NPTVBBVCwgJ1VURi04Jyk7CiAgICAgICAgICAgICRmcm9tRW5jb2RpbmcgPSAnVVRGLTgnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGljb252KCRmcm9tRW5jb2RpbmcsICR0b0VuY29kaW5nLicvL0lHTk9SRScsICRzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NvbnZlcnRfdmFyaWFibGVzKCR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nLCAmJGEgPSBudWxsLCAmJGIgPSBudWxsLCAmJGMgPSBudWxsLCAmJGQgPSBudWxsLCAmJGUgPSBudWxsLCAmJGYgPSBudWxsKQogICAgewogICAgICAgICR2YXJzID0gYXJyYXkoJiRhLCAmJGIsICYkYywgJiRkLCAmJGUsICYkZik7CgogICAgICAgICRvayA9IHRydWU7CiAgICAgICAgYXJyYXlfd2Fsa19yZWN1cnNpdmUoJHZhcnMsIGZ1bmN0aW9uICgmJHYpIHVzZSAoJiRvaywgJHRvRW5jb2RpbmcsICRmcm9tRW5jb2RpbmcpIHsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkdiA9IE1ic3RyaW5nOjptYl9jb252ZXJ0X2VuY29kaW5nKCR2LCAkdG9FbmNvZGluZywgJGZyb21FbmNvZGluZykpIHsKICAgICAgICAgICAgICAgICRvayA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiAkb2sgPyAkZnJvbUVuY29kaW5nIDogZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9kZWNvZGVfbWltZWhlYWRlcigkcykKICAgIHsKICAgICAgICByZXR1cm4gaWNvbnZfbWltZV9kZWNvZGUoJHMsIDIsIHNlbGY6OiRpbnRlcm5hbEVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2VuY29kZV9taW1laGVhZGVyKCRzLCAkY2hhcnNldCA9IG51bGwsICR0cmFuc2ZlckVuY29kaW5nID0gbnVsbCwgJGxpbmVmZWVkID0gbnVsbCwgJGluZGVudCA9IG51bGwpCiAgICB7CiAgICAgICAgdHJpZ2dlcl9lcnJvcignbWJfZW5jb2RlX21pbWVoZWFkZXIoKSBpcyBidWdnZWQuIFBsZWFzZSB1c2UgaWNvbnZfbWltZV9lbmNvZGUoKSBpbnN0ZWFkJywgRV9VU0VSX1dBUk5JTkcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfZGVjb2RlX251bWVyaWNlbnRpdHkoJHMsICRjb252bWFwLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsICE9PSAkcyAmJiAhXGlzX3NjYWxhcigkcykgJiYgIShcaXNfb2JqZWN0KCRzKSAmJiBcbWV0aG9kX2V4aXN0cygkcywgJ19fdG9TdHJpbmcnKSkpIHsKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcignbWJfZGVjb2RlX251bWVyaWNlbnRpdHkoKSBleHBlY3RzIHBhcmFtZXRlciAxIHRvIGJlIHN0cmluZywgJy5nZXR0eXBlKCRzKS4nIGdpdmVuJywgRV9VU0VSX1dBUk5JTkcpOwogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2FycmF5KCRjb252bWFwKSB8fCAhJGNvbnZtYXApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgIT09ICRlbmNvZGluZyAmJiAhXGlzX3NjYWxhcigkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ21iX2RlY29kZV9udW1lcmljZW50aXR5KCkgZXhwZWN0cyBwYXJhbWV0ZXIgMyB0byBiZSBzdHJpbmcsICcuZ2V0dHlwZSgkcykuJyBnaXZlbicsIEVfVVNFUl9XQVJOSU5HKTsKICAgICAgICAgICAgcmV0dXJuICcnOyAgLy8gSW5zdGVhZCBvZiBudWxsIChjZi4gbWJfZW5jb2RlX251bWVyaWNlbnRpdHkpLgogICAgICAgIH0KCiAgICAgICAgJHMgPSAoc3RyaW5nKSAkczsKICAgICAgICBpZiAoJycgPT09ICRzKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICRlbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCRlbmNvZGluZyk7CgogICAgICAgIGlmICgnVVRGLTgnID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgJGVuY29kaW5nID0gbnVsbDsKICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvL3UnLCAkcykpIHsKICAgICAgICAgICAgICAgICRzID0gQGljb252KCdVVEYtOCcsICdVVEYtOC8vSUdOT1JFJywgJHMpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHMgPSBpY29udigkZW5jb2RpbmcsICdVVEYtOC8vSUdOT1JFJywgJHMpOwogICAgICAgIH0KCiAgICAgICAgJGNudCA9IGZsb29yKFxjb3VudCgkY29udm1hcCkgLyA0KSAqIDQ7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjbnQ7ICRpICs9IDQpIHsKICAgICAgICAgICAgLy8gY29sbGVjdG9yX2RlY29kZV9odG1sbnVtZXJpY2VudGl0eSBpZ25vcmVzICRjb252bWFwWyRpICsgM10KICAgICAgICAgICAgJGNvbnZtYXBbJGldICs9ICRjb252bWFwWyRpICsgMl07CiAgICAgICAgICAgICRjb252bWFwWyRpICsgMV0gKz0gJGNvbnZtYXBbJGkgKyAyXTsKICAgICAgICB9CgogICAgICAgICRzID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvJiMoPzowKihbMC05XSspfHgwKihbMC05YS1mQS1GXSspKSg/ISYpOz8vJywgZnVuY3Rpb24gKGFycmF5ICRtKSB1c2UgKCRjbnQsICRjb252bWFwKSB7CiAgICAgICAgICAgICRjID0gaXNzZXQoJG1bMl0pID8gKGludCkgaGV4ZGVjKCRtWzJdKSA6ICRtWzFdOwogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkY250OyAkaSArPSA0KSB7CiAgICAgICAgICAgICAgICBpZiAoJGMgPj0gJGNvbnZtYXBbJGldICYmICRjIDw9ICRjb252bWFwWyRpICsgMV0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gTWJzdHJpbmc6Om1iX2NocigkYyAtICRjb252bWFwWyRpICsgMl0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiAkbVswXTsKICAgICAgICB9LCAkcyk7CgogICAgICAgIGlmIChudWxsID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICRzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGljb252KCdVVEYtOCcsICRlbmNvZGluZy4nLy9JR05PUkUnLCAkcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9lbmNvZGVfbnVtZXJpY2VudGl0eSgkcywgJGNvbnZtYXAsICRlbmNvZGluZyA9IG51bGwsICRpc19oZXggPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAobnVsbCAhPT0gJHMgJiYgIVxpc19zY2FsYXIoJHMpICYmICEoXGlzX29iamVjdCgkcykgJiYgXG1ldGhvZF9leGlzdHMoJHMsICdfX3RvU3RyaW5nJykpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ21iX2VuY29kZV9udW1lcmljZW50aXR5KCkgZXhwZWN0cyBwYXJhbWV0ZXIgMSB0byBiZSBzdHJpbmcsICcuZ2V0dHlwZSgkcykuJyBnaXZlbicsIEVfVVNFUl9XQVJOSU5HKTsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxpc19hcnJheSgkY29udm1hcCkgfHwgISRjb252bWFwKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkZW5jb2RpbmcgJiYgIVxpc19zY2FsYXIoJGVuY29kaW5nKSkgewogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKCdtYl9lbmNvZGVfbnVtZXJpY2VudGl0eSgpIGV4cGVjdHMgcGFyYW1ldGVyIDMgdG8gYmUgc3RyaW5nLCAnLmdldHR5cGUoJHMpLicgZ2l2ZW4nLCBFX1VTRVJfV0FSTklORyk7CiAgICAgICAgICAgIHJldHVybiBudWxsOyAgLy8gSW5zdGVhZCBvZiAnJyAoY2YuIG1iX2RlY29kZV9udW1lcmljZW50aXR5KS4KICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkaXNfaGV4ICYmICFcaXNfc2NhbGFyKCRpc19oZXgpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ21iX2VuY29kZV9udW1lcmljZW50aXR5KCkgZXhwZWN0cyBwYXJhbWV0ZXIgNCB0byBiZSBib29sZWFuLCAnLmdldHR5cGUoJHMpLicgZ2l2ZW4nLCBFX1VTRVJfV0FSTklORyk7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgJHMgPSAoc3RyaW5nKSAkczsKICAgICAgICBpZiAoJycgPT09ICRzKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICRlbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCRlbmNvZGluZyk7CgogICAgICAgIGlmICgnVVRGLTgnID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgJGVuY29kaW5nID0gbnVsbDsKICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvL3UnLCAkcykpIHsKICAgICAgICAgICAgICAgICRzID0gQGljb252KCdVVEYtOCcsICdVVEYtOC8vSUdOT1JFJywgJHMpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHMgPSBpY29udigkZW5jb2RpbmcsICdVVEYtOC8vSUdOT1JFJywgJHMpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljICR1bGVuTWFzayA9IGFycmF5KCJceEMwIiA9PiAyLCAiXHhEMCIgPT4gMiwgIlx4RTAiID0+IDMsICJceEYwIiA9PiA0KTsKCiAgICAgICAgJGNudCA9IGZsb29yKFxjb3VudCgkY29udm1hcCkgLyA0KSAqIDQ7CiAgICAgICAgJGkgPSAwOwogICAgICAgICRsZW4gPSBcc3RybGVuKCRzKTsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgIHdoaWxlICgkaSA8ICRsZW4pIHsKICAgICAgICAgICAgJHVsZW4gPSAkc1skaV0gPCAiXHg4MCIgPyAxIDogJHVsZW5NYXNrWyRzWyRpXSAmICJceEYwIl07CiAgICAgICAgICAgICR1Y2hyID0gc3Vic3RyKCRzLCAkaSwgJHVsZW4pOwogICAgICAgICAgICAkaSArPSAkdWxlbjsKICAgICAgICAgICAgJGMgPSBzZWxmOjptYl9vcmQoJHVjaHIpOwoKICAgICAgICAgICAgZm9yICgkaiA9IDA7ICRqIDwgJGNudDsgJGogKz0gNCkgewogICAgICAgICAgICAgICAgaWYgKCRjID49ICRjb252bWFwWyRqXSAmJiAkYyA8PSAkY29udm1hcFskaiArIDFdKSB7CiAgICAgICAgICAgICAgICAgICAgJGNPZmZzZXQgPSAoJGMgKyAkY29udm1hcFskaiArIDJdKSAmICRjb252bWFwWyRqICsgM107CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCAuPSAkaXNfaGV4ID8gc3ByaW50ZignJiN4JVg7JywgJGNPZmZzZXQpIDogJyYjJy4kY09mZnNldC4nOyc7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkcmVzdWx0IC49ICR1Y2hyOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpY29udignVVRGLTgnLCAkZW5jb2RpbmcuJy8vSUdOT1JFJywgJHJlc3VsdCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9jb252ZXJ0X2Nhc2UoJHMsICRtb2RlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRzID0gKHN0cmluZykgJHM7CiAgICAgICAgaWYgKCcnID09PSAkcykgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRlbmNvZGluZyA9IG51bGw7CiAgICAgICAgICAgIGlmICghcHJlZ19tYXRjaCgnLy91JywgJHMpKSB7CiAgICAgICAgICAgICAgICAkcyA9IEBpY29udignVVRGLTgnLCAnVVRGLTgvL0lHTk9SRScsICRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzID0gaWNvbnYoJGVuY29kaW5nLCAnVVRGLTgvL0lHTk9SRScsICRzKTsKICAgICAgICB9CgogICAgICAgIGlmIChNQl9DQVNFX1RJVExFID09ICRtb2RlKSB7CiAgICAgICAgICAgICRzID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCcvXGJccHtMbH0vdScsIGFycmF5KF9fQ0xBU1NfXywgJ3RpdGxlX2Nhc2VfdXBwZXInKSwgJHMpOwogICAgICAgICAgICAkcyA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygnL1xCW1xwe0x1fVxwe0x0fV0rL3UnLCBhcnJheShfX0NMQVNTX18sICd0aXRsZV9jYXNlX2xvd2VyJyksICRzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoTUJfQ0FTRV9VUFBFUiA9PSAkbW9kZSkgewogICAgICAgICAgICAgICAgc3RhdGljICR1cHBlciA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gJHVwcGVyKSB7CiAgICAgICAgICAgICAgICAgICAgJHVwcGVyID0gc2VsZjo6Z2V0RGF0YSgndXBwZXJDYXNlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbWFwID0gJHVwcGVyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHNlbGY6Ok1CX0NBU0VfRk9MRCA9PT0gJG1vZGUpIHsKICAgICAgICAgICAgICAgICAgICAkcyA9IHN0cl9yZXBsYWNlKHNlbGY6OiRjYXNlRm9sZFswXSwgc2VsZjo6JGNhc2VGb2xkWzFdLCAkcyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgc3RhdGljICRsb3dlciA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gJGxvd2VyKSB7CiAgICAgICAgICAgICAgICAgICAgJGxvd2VyID0gc2VsZjo6Z2V0RGF0YSgnbG93ZXJDYXNlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbWFwID0gJGxvd2VyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBzdGF0aWMgJHVsZW5NYXNrID0gYXJyYXkoIlx4QzAiID0+IDIsICJceEQwIiA9PiAyLCAiXHhFMCIgPT4gMywgIlx4RjAiID0+IDQpOwoKICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICAkbGVuID0gXHN0cmxlbigkcyk7CgogICAgICAgICAgICB3aGlsZSAoJGkgPCAkbGVuKSB7CiAgICAgICAgICAgICAgICAkdWxlbiA9ICRzWyRpXSA8ICJceDgwIiA/IDEgOiAkdWxlbk1hc2tbJHNbJGldICYgIlx4RjAiXTsKICAgICAgICAgICAgICAgICR1Y2hyID0gc3Vic3RyKCRzLCAkaSwgJHVsZW4pOwogICAgICAgICAgICAgICAgJGkgKz0gJHVsZW47CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRtYXBbJHVjaHJdKSkgewogICAgICAgICAgICAgICAgICAgICR1Y2hyID0gJG1hcFskdWNocl07CiAgICAgICAgICAgICAgICAgICAgJG5sZW4gPSBcc3RybGVuKCR1Y2hyKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRubGVuID09ICR1bGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRubGVuID0gJGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzWy0tJG5sZW5dID0gJHVjaHJbLS0kdWxlbl07CiAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKCR1bGVuKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcyA9IHN1YnN0cl9yZXBsYWNlKCRzLCAkdWNociwgJGkgLSAkdWxlbiwgJHVsZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAkbGVuICs9ICRubGVuIC0gJHVsZW47CiAgICAgICAgICAgICAgICAgICAgICAgICRpICAgKz0gJG5sZW4gLSAkdWxlbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICRzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGljb252KCdVVEYtOCcsICRlbmNvZGluZy4nLy9JR05PUkUnLCAkcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9pbnRlcm5hbF9lbmNvZGluZygkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRpbnRlcm5hbEVuY29kaW5nOwogICAgICAgIH0KCiAgICAgICAgJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKTsKCiAgICAgICAgaWYgKCdVVEYtOCcgPT09ICRlbmNvZGluZyB8fCBmYWxzZSAhPT0gQGljb252KCRlbmNvZGluZywgJGVuY29kaW5nLCAnICcpKSB7CiAgICAgICAgICAgIHNlbGY6OiRpbnRlcm5hbEVuY29kaW5nID0gJGVuY29kaW5nOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9sYW5ndWFnZSgkbGFuZyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRsYW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokbGFuZ3VhZ2U7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRsYW5nID0gc3RydG9sb3dlcigkbGFuZykpIHsKICAgICAgICAgICAgY2FzZSAndW5pJzoKICAgICAgICAgICAgY2FzZSAnbmV1dHJhbCc6CiAgICAgICAgICAgICAgICBzZWxmOjokbGFuZ3VhZ2UgPSAkbGFuZzsKCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2xpc3RfZW5jb2RpbmdzKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoJ1VURi04Jyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9lbmNvZGluZ19hbGlhc2VzKCRlbmNvZGluZykKICAgIHsKICAgICAgICBzd2l0Y2ggKHN0cnRvdXBwZXIoJGVuY29kaW5nKSkgewogICAgICAgICAgICBjYXNlICdVVEY4JzoKICAgICAgICAgICAgY2FzZSAnVVRGLTgnOgogICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCd1dGY4Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9jaGVja19lbmNvZGluZygkdmFyID0gbnVsbCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSAkdmFyKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGVuY29kaW5nID0gc2VsZjo6JGludGVybmFsRW5jb2Rpbmc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6bWJfZGV0ZWN0X2VuY29kaW5nKCR2YXIsIGFycmF5KCRlbmNvZGluZykpIHx8IGZhbHNlICE9PSBAaWNvbnYoJGVuY29kaW5nLCAkZW5jb2RpbmcsICR2YXIpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfZGV0ZWN0X2VuY29kaW5nKCRzdHIsICRlbmNvZGluZ0xpc3QgPSBudWxsLCAkc3RyaWN0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZ0xpc3QpIHsKICAgICAgICAgICAgJGVuY29kaW5nTGlzdCA9IHNlbGY6OiRlbmNvZGluZ0xpc3Q7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGVuY29kaW5nTGlzdCkpIHsKICAgICAgICAgICAgICAgICRlbmNvZGluZ0xpc3QgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgJGVuY29kaW5nTGlzdCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRlbmNvZGluZ0xpc3QgPSBhcnJheV9tYXAoJ3N0cnRvdXBwZXInLCAkZW5jb2RpbmdMaXN0KTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRlbmNvZGluZ0xpc3QgYXMgJGVuYykgewogICAgICAgICAgICBzd2l0Y2ggKCRlbmMpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ0FTQ0lJJzoKICAgICAgICAgICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9bXHg4MC1ceEZGXS8nLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVuYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnVVRGOCc6CiAgICAgICAgICAgICAgICBjYXNlICdVVEYtOCc6CiAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy8vdScsICRzdHIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnVVRGLTgnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSBzdHJuY21wKCRlbmMsICdJU08tODg1OS0nLCA5KSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVuYzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2RldGVjdF9vcmRlcigkZW5jb2RpbmdMaXN0ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nTGlzdCkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6JGVuY29kaW5nTGlzdDsKICAgICAgICB9CgogICAgICAgIGlmICghXGlzX2FycmF5KCRlbmNvZGluZ0xpc3QpKSB7CiAgICAgICAgICAgICRlbmNvZGluZ0xpc3QgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgJGVuY29kaW5nTGlzdCkpOwogICAgICAgIH0KICAgICAgICAkZW5jb2RpbmdMaXN0ID0gYXJyYXlfbWFwKCdzdHJ0b3VwcGVyJywgJGVuY29kaW5nTGlzdCk7CgogICAgICAgIGZvcmVhY2ggKCRlbmNvZGluZ0xpc3QgYXMgJGVuYykgewogICAgICAgICAgICBzd2l0Y2ggKCRlbmMpIHsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAoJGVuYywgJ0lTTy04ODU5LScsIDkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlICdBU0NJSSc6CiAgICAgICAgICAgICAgICBjYXNlICdVVEY4JzoKICAgICAgICAgICAgICAgIGNhc2UgJ1VURi04JzoKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc2VsZjo6JGVuY29kaW5nTGlzdCA9ICRlbmNvZGluZ0xpc3Q7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3RybGVuKCRzLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRlbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCRlbmNvZGluZyk7CiAgICAgICAgaWYgKCdDUDg1MCcgPT09ICRlbmNvZGluZyB8fCAnQVNDSUknID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIFxzdHJsZW4oJHMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEBpY29udl9zdHJsZW4oJHMsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0KTsKICAgICAgICB9CgogICAgICAgICRuZWVkbGUgPSAoc3RyaW5nKSAkbmVlZGxlOwogICAgICAgIGlmICgnJyA9PT0gJG5lZWRsZSkgewogICAgICAgICAgICB0cmlnZ2VyX2Vycm9yKF9fTUVUSE9EX18uJzogRW1wdHkgZGVsaW1pdGVyJywgRV9VU0VSX1dBUk5JTkcpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGljb252X3N0cnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCA9IDAsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKTsKICAgICAgICBpZiAoJ0NQODUwJyA9PT0gJGVuY29kaW5nIHx8ICdBU0NJSScgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gc3RycnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvZmZzZXQgIT0gKGludCkgJG9mZnNldCkgewogICAgICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICB9IGVsc2VpZiAoJG9mZnNldCA9IChpbnQpICRvZmZzZXQpIHsKICAgICAgICAgICAgaWYgKCRvZmZzZXQgPCAwKSB7CiAgICAgICAgICAgICAgICAkaGF5c3RhY2sgPSBzZWxmOjptYl9zdWJzdHIoJGhheXN0YWNrLCAwLCAkb2Zmc2V0LCAkZW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaGF5c3RhY2sgPSBzZWxmOjptYl9zdWJzdHIoJGhheXN0YWNrLCAkb2Zmc2V0LCAyMTQ3NDgzNjQ3LCAkZW5jb2RpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcG9zID0gaWNvbnZfc3RycnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRlbmNvZGluZyk7CgogICAgICAgIHJldHVybiBmYWxzZSAhPT0gJHBvcyA/ICRvZmZzZXQgKyAkcG9zIDogZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJ0b2xvd2VyKCRzLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJHMsIE1CX0NBU0VfTE9XRVIsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJ0b3VwcGVyKCRzLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJHMsIE1CX0NBU0VfVVBQRVIsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdWJzdGl0dXRlX2NoYXJhY3RlcigkYyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKDAgPT09IHN0cmNhc2VjbXAoJGMsICdub25lJykpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJGMgPyBmYWxzZSA6ICdub25lJzsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N1YnN0cigkcywgJHN0YXJ0LCAkbGVuZ3RoID0gbnVsbCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJHMsICRzdGFydCwgbnVsbCA9PT0gJGxlbmd0aCA/IDIxNDc0ODM2NDcgOiAkbGVuZ3RoKTsKICAgICAgICB9CgogICAgICAgIGlmICgkc3RhcnQgPCAwKSB7CiAgICAgICAgICAgICRzdGFydCA9IGljb252X3N0cmxlbigkcywgJGVuY29kaW5nKSArICRzdGFydDsKICAgICAgICAgICAgaWYgKCRzdGFydCA8IDApIHsKICAgICAgICAgICAgICAgICRzdGFydCA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSAkbGVuZ3RoKSB7CiAgICAgICAgICAgICRsZW5ndGggPSAyMTQ3NDgzNjQ3OwogICAgICAgIH0gZWxzZWlmICgkbGVuZ3RoIDwgMCkgewogICAgICAgICAgICAkbGVuZ3RoID0gaWNvbnZfc3RybGVuKCRzLCAkZW5jb2RpbmcpICsgJGxlbmd0aCAtICRzdGFydDsKICAgICAgICAgICAgaWYgKCRsZW5ndGggPCAwKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAoc3RyaW5nKSBpY29udl9zdWJzdHIoJHMsICRzdGFydCwgJGxlbmd0aCwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkaGF5c3RhY2sgPSBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJGhheXN0YWNrLCBzZWxmOjpNQl9DQVNFX0ZPTEQsICRlbmNvZGluZyk7CiAgICAgICAgJG5lZWRsZSA9IHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkbmVlZGxlLCBzZWxmOjpNQl9DQVNFX0ZPTEQsICRlbmNvZGluZyk7CgogICAgICAgIHJldHVybiBzZWxmOjptYl9zdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0LCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3RyaXN0cigkaGF5c3RhY2ssICRuZWVkbGUsICRwYXJ0ID0gZmFsc2UsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJHBvcyA9IHNlbGY6Om1iX3N0cmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAwLCAkZW5jb2RpbmcpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VicGFydCgkcG9zLCAkcGFydCwgJGhheXN0YWNrLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3RycmNocigkaGF5c3RhY2ssICRuZWVkbGUsICRwYXJ0ID0gZmFsc2UsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKTsKICAgICAgICBpZiAoJ0NQODUwJyA9PT0gJGVuY29kaW5nIHx8ICdBU0NJSScgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gc3RycmNocigkaGF5c3RhY2ssICRuZWVkbGUsICRwYXJ0KTsKICAgICAgICB9CiAgICAgICAgJG5lZWRsZSA9IHNlbGY6Om1iX3N1YnN0cigkbmVlZGxlLCAwLCAxLCAkZW5jb2RpbmcpOwogICAgICAgICRwb3MgPSBpY29udl9zdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuY29kaW5nKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmdldFN1YnBhcnQoJHBvcywgJHBhcnQsICRoYXlzdGFjaywgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnJpY2hyKCRoYXlzdGFjaywgJG5lZWRsZSwgJHBhcnQgPSBmYWxzZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkbmVlZGxlID0gc2VsZjo6bWJfc3Vic3RyKCRuZWVkbGUsIDAsIDEsICRlbmNvZGluZyk7CiAgICAgICAgJHBvcyA9IHNlbGY6Om1iX3N0cnJpcG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuY29kaW5nKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmdldFN1YnBhcnQoJHBvcywgJHBhcnQsICRoYXlzdGFjaywgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnJpcG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCA9IDAsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJGhheXN0YWNrID0gc2VsZjo6bWJfY29udmVydF9jYXNlKCRoYXlzdGFjaywgc2VsZjo6TUJfQ0FTRV9GT0xELCAkZW5jb2RpbmcpOwogICAgICAgICRuZWVkbGUgPSBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJG5lZWRsZSwgc2VsZjo6TUJfQ0FTRV9GT0xELCAkZW5jb2RpbmcpOwoKICAgICAgICByZXR1cm4gc2VsZjo6bWJfc3RycnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJzdHIoJGhheXN0YWNrLCAkbmVlZGxlLCAkcGFydCA9IGZhbHNlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRwb3MgPSBzdHJwb3MoJGhheXN0YWNrLCAkbmVlZGxlKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRwb3MpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoJHBhcnQpIHsKICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkaGF5c3RhY2ssIDAsICRwb3MpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN1YnN0cigkaGF5c3RhY2ssICRwb3MpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfZ2V0X2luZm8oJHR5cGUgPSAnYWxsJykKICAgIHsKICAgICAgICAkaW5mbyA9IGFycmF5KAogICAgICAgICAgICAnaW50ZXJuYWxfZW5jb2RpbmcnID0+IHNlbGY6OiRpbnRlcm5hbEVuY29kaW5nLAogICAgICAgICAgICAnaHR0cF9vdXRwdXQnID0+ICdwYXNzJywKICAgICAgICAgICAgJ2h0dHBfb3V0cHV0X2NvbnZfbWltZXR5cGVzJyA9PiAnXih0ZXh0L3xhcHBsaWNhdGlvbi94aHRtbFwreG1sKScsCiAgICAgICAgICAgICdmdW5jX292ZXJsb2FkJyA9PiAwLAogICAgICAgICAgICAnZnVuY19vdmVybG9hZF9saXN0JyA9PiAnbm8gb3ZlcmxvYWQnLAogICAgICAgICAgICAnbWFpbF9jaGFyc2V0JyA9PiAnVVRGLTgnLAogICAgICAgICAgICAnbWFpbF9oZWFkZXJfZW5jb2RpbmcnID0+ICdCQVNFNjQnLAogICAgICAgICAgICAnbWFpbF9ib2R5X2VuY29kaW5nJyA9PiAnQkFTRTY0JywKICAgICAgICAgICAgJ2lsbGVnYWxfY2hhcnMnID0+IDAsCiAgICAgICAgICAgICdlbmNvZGluZ190cmFuc2xhdGlvbicgPT4gJ09mZicsCiAgICAgICAgICAgICdsYW5ndWFnZScgPT4gc2VsZjo6JGxhbmd1YWdlLAogICAgICAgICAgICAnZGV0ZWN0X29yZGVyJyA9PiBzZWxmOjokZW5jb2RpbmdMaXN0LAogICAgICAgICAgICAnc3Vic3RpdHV0ZV9jaGFyYWN0ZXInID0+ICdub25lJywKICAgICAgICAgICAgJ3N0cmljdF9kZXRlY3Rpb24nID0+ICdPZmYnLAogICAgICAgICk7CgogICAgICAgIGlmICgnYWxsJyA9PT0gJHR5cGUpIHsKICAgICAgICAgICAgcmV0dXJuICRpbmZvOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGluZm9bJHR5cGVdKSkgewogICAgICAgICAgICByZXR1cm4gJGluZm9bJHR5cGVdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfaHR0cF9pbnB1dCgkdHlwZSA9ICcnKQogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2h0dHBfb3V0cHV0KCRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgIT09ICRlbmNvZGluZyA/ICdwYXNzJyA9PT0gJGVuY29kaW5nIDogJ3Bhc3MnOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Ryd2lkdGgoJHMsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKTsKCiAgICAgICAgaWYgKCdVVEYtOCcgIT09ICRlbmNvZGluZykgewogICAgICAgICAgICAkcyA9IGljb252KCRlbmNvZGluZywgJ1VURi04Ly9JR05PUkUnLCAkcyk7CiAgICAgICAgfQoKICAgICAgICAkcyA9IHByZWdfcmVwbGFjZSgnL1tceHsxMTAwfS1ceHsxMTVGfVx4ezIzMjl9XHh7MjMyQX1ceHsyRTgwfS1ceHszMDNFfVx4ezMwNDB9LVx4e0E0Q0Z9XHh7QUMwMH0tXHh7RDdBM31ceHtGOTAwfS1ceHtGQUZGfVx4e0ZFMTB9LVx4e0ZFMTl9XHh7RkUzMH0tXHh7RkU2Rn1ceHtGRjAwfS1ceHtGRjYwfVx4e0ZGRTB9LVx4e0ZGRTZ9XHh7MjAwMDB9LVx4ezJGRkZEfVx4ezMwMDAwfS1ceHszRkZGRH1dL3UnLCAnJywgJHMsIC0xLCAkd2lkZSk7CgogICAgICAgIHJldHVybiAoJHdpZGUgPDwgMSkgKyBpY29udl9zdHJsZW4oJHMsICdVVEYtOCcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Vic3RyX2NvdW50KCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gc3Vic3RyX2NvdW50KCRoYXlzdGFjaywgJG5lZWRsZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9vdXRwdXRfaGFuZGxlcigkY29udGVudHMsICRzdGF0dXMpCiAgICB7CiAgICAgICAgcmV0dXJuICRjb250ZW50czsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NocigkY29kZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoMHg4MCA+ICRjb2RlICU9IDB4MjAwMDAwKSB7CiAgICAgICAgICAgICRzID0gXGNocigkY29kZSk7CiAgICAgICAgfSBlbHNlaWYgKDB4ODAwID4gJGNvZGUpIHsKICAgICAgICAgICAgJHMgPSBcY2hyKDB4QzAgfCAkY29kZSA+PiA2KS5cY2hyKDB4ODAgfCAkY29kZSAmIDB4M0YpOwogICAgICAgIH0gZWxzZWlmICgweDEwMDAwID4gJGNvZGUpIHsKICAgICAgICAgICAgJHMgPSBcY2hyKDB4RTAgfCAkY29kZSA+PiAxMikuXGNocigweDgwIHwgJGNvZGUgPj4gNiAmIDB4M0YpLlxjaHIoMHg4MCB8ICRjb2RlICYgMHgzRik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHMgPSBcY2hyKDB4RjAgfCAkY29kZSA+PiAxOCkuXGNocigweDgwIHwgJGNvZGUgPj4gMTIgJiAweDNGKS5cY2hyKDB4ODAgfCAkY29kZSA+PiA2ICYgMHgzRikuXGNocigweDgwIHwgJGNvZGUgJiAweDNGKTsKICAgICAgICB9CgogICAgICAgIGlmICgnVVRGLTgnICE9PSAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgICRzID0gbWJfY29udmVydF9lbmNvZGluZygkcywgJGVuY29kaW5nLCAnVVRGLTgnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkczsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX29yZCgkcywgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJ1VURi04JyAhPT0gJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKSkgewogICAgICAgICAgICAkcyA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJHMsICdVVEYtOCcsICRlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICAkY29kZSA9ICgkcyA9IHVucGFjaygnQyonLCBzdWJzdHIoJHMsIDAsIDQpKSkgPyAkc1sxXSA6IDA7CiAgICAgICAgaWYgKDB4RjAgPD0gJGNvZGUpIHsKICAgICAgICAgICAgcmV0dXJuICgoJGNvZGUgLSAweEYwKSA8PCAxOCkgKyAoKCRzWzJdIC0gMHg4MCkgPDwgMTIpICsgKCgkc1szXSAtIDB4ODApIDw8IDYpICsgJHNbNF0gLSAweDgwOwogICAgICAgIH0KICAgICAgICBpZiAoMHhFMCA8PSAkY29kZSkgewogICAgICAgICAgICByZXR1cm4gKCgkY29kZSAtIDB4RTApIDw8IDEyKSArICgoJHNbMl0gLSAweDgwKSA8PCA2KSArICRzWzNdIC0gMHg4MDsKICAgICAgICB9CiAgICAgICAgaWYgKDB4QzAgPD0gJGNvZGUpIHsKICAgICAgICAgICAgcmV0dXJuICgoJGNvZGUgLSAweEMwKSA8PCA2KSArICRzWzJdIC0gMHg4MDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29kZTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRTdWJwYXJ0KCRwb3MsICRwYXJ0LCAkaGF5c3RhY2ssICRlbmNvZGluZykKICAgIHsKICAgICAgICBpZiAoZmFsc2UgPT09ICRwb3MpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAoJHBhcnQpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om1iX3N1YnN0cigkaGF5c3RhY2ssIDAsICRwb3MsICRlbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6bWJfc3Vic3RyKCRoYXlzdGFjaywgJHBvcywgbnVsbCwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBodG1sX2VuY29kaW5nX2NhbGxiYWNrKGFycmF5ICRtKQogICAgewogICAgICAgICRpID0gMTsKICAgICAgICAkZW50aXRpZXMgPSAnJzsKICAgICAgICAkbSA9IHVucGFjaygnQyonLCBodG1sZW50aXRpZXMoJG1bMF0sIEVOVF9DT01QQVQsICdVVEYtOCcpKTsKCiAgICAgICAgd2hpbGUgKGlzc2V0KCRtWyRpXSkpIHsKICAgICAgICAgICAgaWYgKDB4ODAgPiAkbVskaV0pIHsKICAgICAgICAgICAgICAgICRlbnRpdGllcyAuPSBcY2hyKCRtWyRpKytdKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgweEYwIDw9ICRtWyRpXSkgewogICAgICAgICAgICAgICAgJGMgPSAoKCRtWyRpKytdIC0gMHhGMCkgPDwgMTgpICsgKCgkbVskaSsrXSAtIDB4ODApIDw8IDEyKSArICgoJG1bJGkrK10gLSAweDgwKSA8PCA2KSArICRtWyRpKytdIC0gMHg4MDsKICAgICAgICAgICAgfSBlbHNlaWYgKDB4RTAgPD0gJG1bJGldKSB7CiAgICAgICAgICAgICAgICAkYyA9ICgoJG1bJGkrK10gLSAweEUwKSA8PCAxMikgKyAoKCRtWyRpKytdIC0gMHg4MCkgPDwgNikgKyAkbVskaSsrXSAtIDB4ODA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkYyA9ICgoJG1bJGkrK10gLSAweEMwKSA8PCA2KSArICRtWyRpKytdIC0gMHg4MDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVudGl0aWVzIC49ICcmIycuJGMuJzsnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbnRpdGllczsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0aXRsZV9jYXNlX2xvd2VyKGFycmF5ICRzKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJHNbMF0sIE1CX0NBU0VfTE9XRVIsICdVVEYtOCcpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRpdGxlX2Nhc2VfdXBwZXIoYXJyYXkgJHMpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkc1swXSwgTUJfQ0FTRV9VUFBFUiwgJ1VURi04Jyk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RGF0YSgkZmlsZSkKICAgIHsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSBfX0RJUl9fLicvUmVzb3VyY2VzL3VuaWRhdGEvJy4kZmlsZS4nLnBocCcpKSB7CiAgICAgICAgICAgIHJldHVybiByZXF1aXJlICRmaWxlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEVuY29kaW5nKCRlbmNvZGluZykKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokaW50ZXJuYWxFbmNvZGluZzsKICAgICAgICB9CgogICAgICAgICRlbmNvZGluZyA9IHN0cnRvdXBwZXIoJGVuY29kaW5nKTsKCiAgICAgICAgaWYgKCc4QklUJyA9PT0gJGVuY29kaW5nIHx8ICdCSU5BUlknID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICdDUDg1MCc7CiAgICAgICAgfQogICAgICAgIGlmICgnVVRGOCcgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJ1VURi04JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZW5jb2Rpbmc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBQb2x5ZmlsbCAvIE1ic3RyaW5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBwYXJ0aWFsLCBuYXRpdmUgUEhQIGltcGxlbWVudGF0aW9uIGZvciB0aGUKW01ic3RyaW5nXShodHRwOi8vcGhwLm5ldC9tYnN0cmluZykgZXh0ZW5zaW9uLgoKTW9yZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlClttYWluIFBvbHlmaWxsIFJFQURNRV0oaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvcG9seWZpbGwvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kKS4KCkxpY2Vuc2UKPT09PT09PQoKVGhpcyBsaWJyYXJ5IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/Resources/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/Resources/unidata/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnN0YXRpYyAkZGF0YSA9IGFycmF5ICgKICAnQScgPT4gJ2EnLAogICdCJyA9PiAnYicsCiAgJ0MnID0+ICdjJywKICAnRCcgPT4gJ2QnLAogICdFJyA9PiAnZScsCiAgJ0YnID0+ICdmJywKICAnRycgPT4gJ2cnLAogICdIJyA9PiAnaCcsCiAgJ0knID0+ICdpJywKICAnSicgPT4gJ2onLAogICdLJyA9PiAnaycsCiAgJ0wnID0+ICdsJywKICAnTScgPT4gJ20nLAogICdOJyA9PiAnbicsCiAgJ08nID0+ICdvJywKICAnUCcgPT4gJ3AnLAogICdRJyA9PiAncScsCiAgJ1InID0+ICdyJywKICAnUycgPT4gJ3MnLAogICdUJyA9PiAndCcsCiAgJ1UnID0+ICd1JywKICAnVicgPT4gJ3YnLAogICdXJyA9PiAndycsCiAgJ1gnID0+ICd4JywKICAnWScgPT4gJ3knLAogICdaJyA9PiAneicsCiAgJ8OAJyA9PiAnw6AnLAogICfDgScgPT4gJ8OhJywKICAnw4InID0+ICfDoicsCiAgJ8ODJyA9PiAnw6MnLAogICfDhCcgPT4gJ8OkJywKICAnw4UnID0+ICfDpScsCiAgJ8OGJyA9PiAnw6YnLAogICfDhycgPT4gJ8OnJywKICAnw4gnID0+ICfDqCcsCiAgJ8OJJyA9PiAnw6knLAogICfDiicgPT4gJ8OqJywKICAnw4snID0+ICfDqycsCiAgJ8OMJyA9PiAnw6wnLAogICfDjScgPT4gJ8OtJywKICAnw44nID0+ICfDricsCiAgJ8OPJyA9PiAnw68nLAogICfDkCcgPT4gJ8OwJywKICAnw5EnID0+ICfDsScsCiAgJ8OSJyA9PiAnw7InLAogICfDkycgPT4gJ8OzJywKICAnw5QnID0+ICfDtCcsCiAgJ8OVJyA9PiAnw7UnLAogICfDlicgPT4gJ8O2JywKICAnw5gnID0+ICfDuCcsCiAgJ8OZJyA9PiAnw7knLAogICfDmicgPT4gJ8O6JywKICAnw5snID0+ICfDuycsCiAgJ8OcJyA9PiAnw7wnLAogICfDnScgPT4gJ8O9JywKICAnw54nID0+ICfDvicsCiAgJ8SAJyA9PiAnxIEnLAogICfEgicgPT4gJ8SDJywKICAnxIQnID0+ICfEhScsCiAgJ8SGJyA9PiAnxIcnLAogICfEiCcgPT4gJ8SJJywKICAnxIonID0+ICfEiycsCiAgJ8SMJyA9PiAnxI0nLAogICfEjicgPT4gJ8SPJywKICAnxJAnID0+ICfEkScsCiAgJ8SSJyA9PiAnxJMnLAogICfElCcgPT4gJ8SVJywKICAnxJYnID0+ICfElycsCiAgJ8SYJyA9PiAnxJknLAogICfEmicgPT4gJ8SbJywKICAnxJwnID0+ICfEnScsCiAgJ8SeJyA9PiAnxJ8nLAogICfEoCcgPT4gJ8ShJywKICAnxKInID0+ICfEoycsCiAgJ8SkJyA9PiAnxKUnLAogICfEpicgPT4gJ8SnJywKICAnxKgnID0+ICfEqScsCiAgJ8SqJyA9PiAnxKsnLAogICfErCcgPT4gJ8StJywKICAnxK4nID0+ICfErycsCiAgJ8SwJyA9PiAnaScsCiAgJ8SyJyA9PiAnxLMnLAogICfEtCcgPT4gJ8S1JywKICAnxLYnID0+ICfEtycsCiAgJ8S5JyA9PiAnxLonLAogICfEuycgPT4gJ8S8JywKICAnxL0nID0+ICfEvicsCiAgJ8S/JyA9PiAnxYAnLAogICfFgScgPT4gJ8WCJywKICAnxYMnID0+ICfFhCcsCiAgJ8WFJyA9PiAnxYYnLAogICfFhycgPT4gJ8WIJywKICAnxYonID0+ICfFiycsCiAgJ8WMJyA9PiAnxY0nLAogICfFjicgPT4gJ8WPJywKICAnxZAnID0+ICfFkScsCiAgJ8WSJyA9PiAnxZMnLAogICfFlCcgPT4gJ8WVJywKICAnxZYnID0+ICfFlycsCiAgJ8WYJyA9PiAnxZknLAogICfFmicgPT4gJ8WbJywKICAnxZwnID0+ICfFnScsCiAgJ8WeJyA9PiAnxZ8nLAogICfFoCcgPT4gJ8WhJywKICAnxaInID0+ICfFoycsCiAgJ8WkJyA9PiAnxaUnLAogICfFpicgPT4gJ8WnJywKICAnxagnID0+ICfFqScsCiAgJ8WqJyA9PiAnxasnLAogICfFrCcgPT4gJ8WtJywKICAnxa4nID0+ICfFrycsCiAgJ8WwJyA9PiAnxbEnLAogICfFsicgPT4gJ8WzJywKICAnxbQnID0+ICfFtScsCiAgJ8W2JyA9PiAnxbcnLAogICfFuCcgPT4gJ8O/JywKICAnxbknID0+ICfFuicsCiAgJ8W7JyA9PiAnxbwnLAogICfFvScgPT4gJ8W+JywKICAnxoEnID0+ICfJkycsCiAgJ8aCJyA9PiAnxoMnLAogICfGhCcgPT4gJ8aFJywKICAnxoYnID0+ICfJlCcsCiAgJ8aHJyA9PiAnxognLAogICfGiScgPT4gJ8mWJywKICAnxoonID0+ICfJlycsCiAgJ8aLJyA9PiAnxownLAogICfGjicgPT4gJ8edJywKICAnxo8nID0+ICfJmScsCiAgJ8aQJyA9PiAnyZsnLAogICfGkScgPT4gJ8aSJywKICAnxpMnID0+ICfJoCcsCiAgJ8aUJyA9PiAnyaMnLAogICfGlicgPT4gJ8mpJywKICAnxpcnID0+ICfJqCcsCiAgJ8aYJyA9PiAnxpknLAogICfGnCcgPT4gJ8mvJywKICAnxp0nID0+ICfJsicsCiAgJ8afJyA9PiAnybUnLAogICfGoCcgPT4gJ8ahJywKICAnxqInID0+ICfGoycsCiAgJ8akJyA9PiAnxqUnLAogICfGpicgPT4gJ8qAJywKICAnxqcnID0+ICfGqCcsCiAgJ8apJyA9PiAnyoMnLAogICfGrCcgPT4gJ8atJywKICAnxq4nID0+ICfKiCcsCiAgJ8avJyA9PiAnxrAnLAogICfGsScgPT4gJ8qKJywKICAnxrInID0+ICfKiycsCiAgJ8azJyA9PiAnxrQnLAogICfGtScgPT4gJ8a2JywKICAnxrcnID0+ICfKkicsCiAgJ8a4JyA9PiAnxrknLAogICfGvCcgPT4gJ8a9JywKICAnx4QnID0+ICfHhicsCiAgJ8eFJyA9PiAnx4YnLAogICfHhycgPT4gJ8eJJywKICAnx4gnID0+ICfHiScsCiAgJ8eKJyA9PiAnx4wnLAogICfHiycgPT4gJ8eMJywKICAnx40nID0+ICfHjicsCiAgJ8ePJyA9PiAnx5AnLAogICfHkScgPT4gJ8eSJywKICAnx5MnID0+ICfHlCcsCiAgJ8eVJyA9PiAnx5YnLAogICfHlycgPT4gJ8eYJywKICAnx5knID0+ICfHmicsCiAgJ8ebJyA9PiAnx5wnLAogICfHnicgPT4gJ8efJywKICAnx6AnID0+ICfHoScsCiAgJ8eiJyA9PiAnx6MnLAogICfHpCcgPT4gJ8elJywKICAnx6YnID0+ICfHpycsCiAgJ8eoJyA9PiAnx6knLAogICfHqicgPT4gJ8erJywKICAnx6wnID0+ICfHrScsCiAgJ8euJyA9PiAnx68nLAogICfHsScgPT4gJ8ezJywKICAnx7InID0+ICfHsycsCiAgJ8e0JyA9PiAnx7UnLAogICfHticgPT4gJ8aVJywKICAnx7cnID0+ICfGvycsCiAgJ8e4JyA9PiAnx7knLAogICfHuicgPT4gJ8e7JywKICAnx7wnID0+ICfHvScsCiAgJ8e+JyA9PiAnx78nLAogICfIgCcgPT4gJ8iBJywKICAnyIInID0+ICfIgycsCiAgJ8iEJyA9PiAnyIUnLAogICfIhicgPT4gJ8iHJywKICAnyIgnID0+ICfIiScsCiAgJ8iKJyA9PiAnyIsnLAogICfIjCcgPT4gJ8iNJywKICAnyI4nID0+ICfIjycsCiAgJ8iQJyA9PiAnyJEnLAogICfIkicgPT4gJ8iTJywKICAnyJQnID0+ICfIlScsCiAgJ8iWJyA9PiAnyJcnLAogICfImCcgPT4gJ8iZJywKICAnyJonID0+ICfImycsCiAgJ8icJyA9PiAnyJ0nLAogICfInicgPT4gJ8ifJywKICAnyKAnID0+ICfGnicsCiAgJ8iiJyA9PiAnyKMnLAogICfIpCcgPT4gJ8ilJywKICAnyKYnID0+ICfIpycsCiAgJ8ioJyA9PiAnyKknLAogICfIqicgPT4gJ8irJywKICAnyKwnID0+ICfIrScsCiAgJ8iuJyA9PiAnyK8nLAogICfIsCcgPT4gJ8ixJywKICAnyLInID0+ICfIsycsCiAgJ8i6JyA9PiAn4rGlJywKICAnyLsnID0+ICfIvCcsCiAgJ8i9JyA9PiAnxponLAogICfIvicgPT4gJ+KxpicsCiAgJ8mBJyA9PiAnyYInLAogICfJgycgPT4gJ8aAJywKICAnyYQnID0+ICfKiScsCiAgJ8mFJyA9PiAnyownLAogICfJhicgPT4gJ8mHJywKICAnyYgnID0+ICfJiScsCiAgJ8mKJyA9PiAnyYsnLAogICfJjCcgPT4gJ8mNJywKICAnyY4nID0+ICfJjycsCiAgJ82wJyA9PiAnzbEnLAogICfNsicgPT4gJ82zJywKICAnzbYnID0+ICfNtycsCiAgJ82/JyA9PiAnz7MnLAogICfOhicgPT4gJ86sJywKICAnzognID0+ICfOrScsCiAgJ86JJyA9PiAnzq4nLAogICfOiicgPT4gJ86vJywKICAnzownID0+ICfPjCcsCiAgJ86OJyA9PiAnz40nLAogICfOjycgPT4gJ8+OJywKICAnzpEnID0+ICfOsScsCiAgJ86SJyA9PiAnzrInLAogICfOkycgPT4gJ86zJywKICAnzpQnID0+ICfOtCcsCiAgJ86VJyA9PiAnzrUnLAogICfOlicgPT4gJ862JywKICAnzpcnID0+ICfOtycsCiAgJ86YJyA9PiAnzrgnLAogICfOmScgPT4gJ865JywKICAnzponID0+ICfOuicsCiAgJ86bJyA9PiAnzrsnLAogICfOnCcgPT4gJ868JywKICAnzp0nID0+ICfOvScsCiAgJ86eJyA9PiAnzr4nLAogICfOnycgPT4gJ86/JywKICAnzqAnID0+ICfPgCcsCiAgJ86hJyA9PiAnz4EnLAogICfOoycgPT4gJ8+DJywKICAnzqQnID0+ICfPhCcsCiAgJ86lJyA9PiAnz4UnLAogICfOpicgPT4gJ8+GJywKICAnzqcnID0+ICfPhycsCiAgJ86oJyA9PiAnz4gnLAogICfOqScgPT4gJ8+JJywKICAnzqonID0+ICfPiicsCiAgJ86rJyA9PiAnz4snLAogICfPjycgPT4gJ8+XJywKICAnz5gnID0+ICfPmScsCiAgJ8+aJyA9PiAnz5snLAogICfPnCcgPT4gJ8+dJywKICAnz54nID0+ICfPnycsCiAgJ8+gJyA9PiAnz6EnLAogICfPoicgPT4gJ8+jJywKICAnz6QnID0+ICfPpScsCiAgJ8+mJyA9PiAnz6cnLAogICfPqCcgPT4gJ8+pJywKICAnz6onID0+ICfPqycsCiAgJ8+sJyA9PiAnz60nLAogICfPricgPT4gJ8+vJywKICAnz7QnID0+ICfOuCcsCiAgJ8+3JyA9PiAnz7gnLAogICfPuScgPT4gJ8+yJywKICAnz7onID0+ICfPuycsCiAgJ8+9JyA9PiAnzbsnLAogICfPvicgPT4gJ828JywKICAnz78nID0+ICfNvScsCiAgJ9CAJyA9PiAn0ZAnLAogICfQgScgPT4gJ9GRJywKICAn0IInID0+ICfRkicsCiAgJ9CDJyA9PiAn0ZMnLAogICfQhCcgPT4gJ9GUJywKICAn0IUnID0+ICfRlScsCiAgJ9CGJyA9PiAn0ZYnLAogICfQhycgPT4gJ9GXJywKICAn0IgnID0+ICfRmCcsCiAgJ9CJJyA9PiAn0ZknLAogICfQiicgPT4gJ9GaJywKICAn0IsnID0+ICfRmycsCiAgJ9CMJyA9PiAn0ZwnLAogICfQjScgPT4gJ9GdJywKICAn0I4nID0+ICfRnicsCiAgJ9CPJyA9PiAn0Z8nLAogICfQkCcgPT4gJ9CwJywKICAn0JEnID0+ICfQsScsCiAgJ9CSJyA9PiAn0LInLAogICfQkycgPT4gJ9CzJywKICAn0JQnID0+ICfQtCcsCiAgJ9CVJyA9PiAn0LUnLAogICfQlicgPT4gJ9C2JywKICAn0JcnID0+ICfQtycsCiAgJ9CYJyA9PiAn0LgnLAogICfQmScgPT4gJ9C5JywKICAn0JonID0+ICfQuicsCiAgJ9CbJyA9PiAn0LsnLAogICfQnCcgPT4gJ9C8JywKICAn0J0nID0+ICfQvScsCiAgJ9CeJyA9PiAn0L4nLAogICfQnycgPT4gJ9C/JywKICAn0KAnID0+ICfRgCcsCiAgJ9ChJyA9PiAn0YEnLAogICfQoicgPT4gJ9GCJywKICAn0KMnID0+ICfRgycsCiAgJ9CkJyA9PiAn0YQnLAogICfQpScgPT4gJ9GFJywKICAn0KYnID0+ICfRhicsCiAgJ9CnJyA9PiAn0YcnLAogICfQqCcgPT4gJ9GIJywKICAn0KknID0+ICfRiScsCiAgJ9CqJyA9PiAn0YonLAogICfQqycgPT4gJ9GLJywKICAn0KwnID0+ICfRjCcsCiAgJ9CtJyA9PiAn0Y0nLAogICfQricgPT4gJ9GOJywKICAn0K8nID0+ICfRjycsCiAgJ9GgJyA9PiAn0aEnLAogICfRoicgPT4gJ9GjJywKICAn0aQnID0+ICfRpScsCiAgJ9GmJyA9PiAn0acnLAogICfRqCcgPT4gJ9GpJywKICAn0aonID0+ICfRqycsCiAgJ9GsJyA9PiAn0a0nLAogICfRricgPT4gJ9GvJywKICAn0bAnID0+ICfRsScsCiAgJ9GyJyA9PiAn0bMnLAogICfRtCcgPT4gJ9G1JywKICAn0bYnID0+ICfRtycsCiAgJ9G4JyA9PiAn0bknLAogICfRuicgPT4gJ9G7JywKICAn0bwnID0+ICfRvScsCiAgJ9G+JyA9PiAn0b8nLAogICfSgCcgPT4gJ9KBJywKICAn0oonID0+ICfSiycsCiAgJ9KMJyA9PiAn0o0nLAogICfSjicgPT4gJ9KPJywKICAn0pAnID0+ICfSkScsCiAgJ9KSJyA9PiAn0pMnLAogICfSlCcgPT4gJ9KVJywKICAn0pYnID0+ICfSlycsCiAgJ9KYJyA9PiAn0pknLAogICfSmicgPT4gJ9KbJywKICAn0pwnID0+ICfSnScsCiAgJ9KeJyA9PiAn0p8nLAogICfSoCcgPT4gJ9KhJywKICAn0qInID0+ICfSoycsCiAgJ9KkJyA9PiAn0qUnLAogICfSpicgPT4gJ9KnJywKICAn0qgnID0+ICfSqScsCiAgJ9KqJyA9PiAn0qsnLAogICfSrCcgPT4gJ9KtJywKICAn0q4nID0+ICfSrycsCiAgJ9KwJyA9PiAn0rEnLAogICfSsicgPT4gJ9KzJywKICAn0rQnID0+ICfStScsCiAgJ9K2JyA9PiAn0rcnLAogICfSuCcgPT4gJ9K5JywKICAn0ronID0+ICfSuycsCiAgJ9K8JyA9PiAn0r0nLAogICfSvicgPT4gJ9K/JywKICAn04AnID0+ICfTjycsCiAgJ9OBJyA9PiAn04InLAogICfTgycgPT4gJ9OEJywKICAn04UnID0+ICfThicsCiAgJ9OHJyA9PiAn04gnLAogICfTiScgPT4gJ9OKJywKICAn04snID0+ICfTjCcsCiAgJ9ONJyA9PiAn044nLAogICfTkCcgPT4gJ9ORJywKICAn05InID0+ICfTkycsCiAgJ9OUJyA9PiAn05UnLAogICfTlicgPT4gJ9OXJywKICAn05gnID0+ICfTmScsCiAgJ9OaJyA9PiAn05snLAogICfTnCcgPT4gJ9OdJywKICAn054nID0+ICfTnycsCiAgJ9OgJyA9PiAn06EnLAogICfToicgPT4gJ9OjJywKICAn06QnID0+ICfTpScsCiAgJ9OmJyA9PiAn06cnLAogICfTqCcgPT4gJ9OpJywKICAn06onID0+ICfTqycsCiAgJ9OsJyA9PiAn060nLAogICfTricgPT4gJ9OvJywKICAn07AnID0+ICfTsScsCiAgJ9OyJyA9PiAn07MnLAogICfTtCcgPT4gJ9O1JywKICAn07YnID0+ICfTtycsCiAgJ9O4JyA9PiAn07knLAogICfTuicgPT4gJ9O7JywKICAn07wnID0+ICfTvScsCiAgJ9O+JyA9PiAn078nLAogICfUgCcgPT4gJ9SBJywKICAn1IInID0+ICfUgycsCiAgJ9SEJyA9PiAn1IUnLAogICfUhicgPT4gJ9SHJywKICAn1IgnID0+ICfUiScsCiAgJ9SKJyA9PiAn1IsnLAogICfUjCcgPT4gJ9SNJywKICAn1I4nID0+ICfUjycsCiAgJ9SQJyA9PiAn1JEnLAogICfUkicgPT4gJ9STJywKICAn1JQnID0+ICfUlScsCiAgJ9SWJyA9PiAn1JcnLAogICfUmCcgPT4gJ9SZJywKICAn1JonID0+ICfUmycsCiAgJ9ScJyA9PiAn1J0nLAogICfUnicgPT4gJ9SfJywKICAn1KAnID0+ICfUoScsCiAgJ9SiJyA9PiAn1KMnLAogICfUpCcgPT4gJ9SlJywKICAn1KYnID0+ICfUpycsCiAgJ9SoJyA9PiAn1KknLAogICfUqicgPT4gJ9SrJywKICAn1KwnID0+ICfUrScsCiAgJ9SuJyA9PiAn1K8nLAogICfUsScgPT4gJ9WhJywKICAn1LInID0+ICfVoicsCiAgJ9SzJyA9PiAn1aMnLAogICfUtCcgPT4gJ9WkJywKICAn1LUnID0+ICfVpScsCiAgJ9S2JyA9PiAn1aYnLAogICfUtycgPT4gJ9WnJywKICAn1LgnID0+ICfVqCcsCiAgJ9S5JyA9PiAn1aknLAogICfUuicgPT4gJ9WqJywKICAn1LsnID0+ICfVqycsCiAgJ9S8JyA9PiAn1awnLAogICfUvScgPT4gJ9WtJywKICAn1L4nID0+ICfVricsCiAgJ9S/JyA9PiAn1a8nLAogICfVgCcgPT4gJ9WwJywKICAn1YEnID0+ICfVsScsCiAgJ9WCJyA9PiAn1bInLAogICfVgycgPT4gJ9WzJywKICAn1YQnID0+ICfVtCcsCiAgJ9WFJyA9PiAn1bUnLAogICfVhicgPT4gJ9W2JywKICAn1YcnID0+ICfVtycsCiAgJ9WIJyA9PiAn1bgnLAogICfViScgPT4gJ9W5JywKICAn1YonID0+ICfVuicsCiAgJ9WLJyA9PiAn1bsnLAogICfVjCcgPT4gJ9W8JywKICAn1Y0nID0+ICfVvScsCiAgJ9WOJyA9PiAn1b4nLAogICfVjycgPT4gJ9W/JywKICAn1ZAnID0+ICfWgCcsCiAgJ9WRJyA9PiAn1oEnLAogICfVkicgPT4gJ9aCJywKICAn1ZMnID0+ICfWgycsCiAgJ9WUJyA9PiAn1oQnLAogICfVlScgPT4gJ9aFJywKICAn1ZYnID0+ICfWhicsCiAgJ+GCoCcgPT4gJ+K0gCcsCiAgJ+GCoScgPT4gJ+K0gScsCiAgJ+GCoicgPT4gJ+K0gicsCiAgJ+GCoycgPT4gJ+K0gycsCiAgJ+GCpCcgPT4gJ+K0hCcsCiAgJ+GCpScgPT4gJ+K0hScsCiAgJ+GCpicgPT4gJ+K0hicsCiAgJ+GCpycgPT4gJ+K0hycsCiAgJ+GCqCcgPT4gJ+K0iCcsCiAgJ+GCqScgPT4gJ+K0iScsCiAgJ+GCqicgPT4gJ+K0iicsCiAgJ+GCqycgPT4gJ+K0iycsCiAgJ+GCrCcgPT4gJ+K0jCcsCiAgJ+GCrScgPT4gJ+K0jScsCiAgJ+GCricgPT4gJ+K0jicsCiAgJ+GCrycgPT4gJ+K0jycsCiAgJ+GCsCcgPT4gJ+K0kCcsCiAgJ+GCsScgPT4gJ+K0kScsCiAgJ+GCsicgPT4gJ+K0kicsCiAgJ+GCsycgPT4gJ+K0kycsCiAgJ+GCtCcgPT4gJ+K0lCcsCiAgJ+GCtScgPT4gJ+K0lScsCiAgJ+GCticgPT4gJ+K0licsCiAgJ+GCtycgPT4gJ+K0lycsCiAgJ+GCuCcgPT4gJ+K0mCcsCiAgJ+GCuScgPT4gJ+K0mScsCiAgJ+GCuicgPT4gJ+K0micsCiAgJ+GCuycgPT4gJ+K0mycsCiAgJ+GCvCcgPT4gJ+K0nCcsCiAgJ+GCvScgPT4gJ+K0nScsCiAgJ+GCvicgPT4gJ+K0nicsCiAgJ+GCvycgPT4gJ+K0nycsCiAgJ+GDgCcgPT4gJ+K0oCcsCiAgJ+GDgScgPT4gJ+K0oScsCiAgJ+GDgicgPT4gJ+K0oicsCiAgJ+GDgycgPT4gJ+K0oycsCiAgJ+GDhCcgPT4gJ+K0pCcsCiAgJ+GDhScgPT4gJ+K0pScsCiAgJ+GDhycgPT4gJ+K0pycsCiAgJ+GDjScgPT4gJ+K0rScsCiAgJ+G4gCcgPT4gJ+G4gScsCiAgJ+G4gicgPT4gJ+G4gycsCiAgJ+G4hCcgPT4gJ+G4hScsCiAgJ+G4hicgPT4gJ+G4hycsCiAgJ+G4iCcgPT4gJ+G4iScsCiAgJ+G4iicgPT4gJ+G4iycsCiAgJ+G4jCcgPT4gJ+G4jScsCiAgJ+G4jicgPT4gJ+G4jycsCiAgJ+G4kCcgPT4gJ+G4kScsCiAgJ+G4kicgPT4gJ+G4kycsCiAgJ+G4lCcgPT4gJ+G4lScsCiAgJ+G4licgPT4gJ+G4lycsCiAgJ+G4mCcgPT4gJ+G4mScsCiAgJ+G4micgPT4gJ+G4mycsCiAgJ+G4nCcgPT4gJ+G4nScsCiAgJ+G4nicgPT4gJ+G4nycsCiAgJ+G4oCcgPT4gJ+G4oScsCiAgJ+G4oicgPT4gJ+G4oycsCiAgJ+G4pCcgPT4gJ+G4pScsCiAgJ+G4picgPT4gJ+G4pycsCiAgJ+G4qCcgPT4gJ+G4qScsCiAgJ+G4qicgPT4gJ+G4qycsCiAgJ+G4rCcgPT4gJ+G4rScsCiAgJ+G4ricgPT4gJ+G4rycsCiAgJ+G4sCcgPT4gJ+G4sScsCiAgJ+G4sicgPT4gJ+G4sycsCiAgJ+G4tCcgPT4gJ+G4tScsCiAgJ+G4ticgPT4gJ+G4tycsCiAgJ+G4uCcgPT4gJ+G4uScsCiAgJ+G4uicgPT4gJ+G4uycsCiAgJ+G4vCcgPT4gJ+G4vScsCiAgJ+G4vicgPT4gJ+G4vycsCiAgJ+G5gCcgPT4gJ+G5gScsCiAgJ+G5gicgPT4gJ+G5gycsCiAgJ+G5hCcgPT4gJ+G5hScsCiAgJ+G5hicgPT4gJ+G5hycsCiAgJ+G5iCcgPT4gJ+G5iScsCiAgJ+G5iicgPT4gJ+G5iycsCiAgJ+G5jCcgPT4gJ+G5jScsCiAgJ+G5jicgPT4gJ+G5jycsCiAgJ+G5kCcgPT4gJ+G5kScsCiAgJ+G5kicgPT4gJ+G5kycsCiAgJ+G5lCcgPT4gJ+G5lScsCiAgJ+G5licgPT4gJ+G5lycsCiAgJ+G5mCcgPT4gJ+G5mScsCiAgJ+G5micgPT4gJ+G5mycsCiAgJ+G5nCcgPT4gJ+G5nScsCiAgJ+G5nicgPT4gJ+G5nycsCiAgJ+G5oCcgPT4gJ+G5oScsCiAgJ+G5oicgPT4gJ+G5oycsCiAgJ+G5pCcgPT4gJ+G5pScsCiAgJ+G5picgPT4gJ+G5pycsCiAgJ+G5qCcgPT4gJ+G5qScsCiAgJ+G5qicgPT4gJ+G5qycsCiAgJ+G5rCcgPT4gJ+G5rScsCiAgJ+G5ricgPT4gJ+G5rycsCiAgJ+G5sCcgPT4gJ+G5sScsCiAgJ+G5sicgPT4gJ+G5sycsCiAgJ+G5tCcgPT4gJ+G5tScsCiAgJ+G5ticgPT4gJ+G5tycsCiAgJ+G5uCcgPT4gJ+G5uScsCiAgJ+G5uicgPT4gJ+G5uycsCiAgJ+G5vCcgPT4gJ+G5vScsCiAgJ+G5vicgPT4gJ+G5vycsCiAgJ+G6gCcgPT4gJ+G6gScsCiAgJ+G6gicgPT4gJ+G6gycsCiAgJ+G6hCcgPT4gJ+G6hScsCiAgJ+G6hicgPT4gJ+G6hycsCiAgJ+G6iCcgPT4gJ+G6iScsCiAgJ+G6iicgPT4gJ+G6iycsCiAgJ+G6jCcgPT4gJ+G6jScsCiAgJ+G6jicgPT4gJ+G6jycsCiAgJ+G6kCcgPT4gJ+G6kScsCiAgJ+G6kicgPT4gJ+G6kycsCiAgJ+G6lCcgPT4gJ+G6lScsCiAgJ+G6nicgPT4gJ8OfJywKICAn4bqgJyA9PiAn4bqhJywKICAn4bqiJyA9PiAn4bqjJywKICAn4bqkJyA9PiAn4bqlJywKICAn4bqmJyA9PiAn4bqnJywKICAn4bqoJyA9PiAn4bqpJywKICAn4bqqJyA9PiAn4bqrJywKICAn4bqsJyA9PiAn4bqtJywKICAn4bquJyA9PiAn4bqvJywKICAn4bqwJyA9PiAn4bqxJywKICAn4bqyJyA9PiAn4bqzJywKICAn4bq0JyA9PiAn4bq1JywKICAn4bq2JyA9PiAn4bq3JywKICAn4bq4JyA9PiAn4bq5JywKICAn4bq6JyA9PiAn4bq7JywKICAn4bq8JyA9PiAn4bq9JywKICAn4bq+JyA9PiAn4bq/JywKICAn4buAJyA9PiAn4buBJywKICAn4buCJyA9PiAn4buDJywKICAn4buEJyA9PiAn4buFJywKICAn4buGJyA9PiAn4buHJywKICAn4buIJyA9PiAn4buJJywKICAn4buKJyA9PiAn4buLJywKICAn4buMJyA9PiAn4buNJywKICAn4buOJyA9PiAn4buPJywKICAn4buQJyA9PiAn4buRJywKICAn4buSJyA9PiAn4buTJywKICAn4buUJyA9PiAn4buVJywKICAn4buWJyA9PiAn4buXJywKICAn4buYJyA9PiAn4buZJywKICAn4buaJyA9PiAn4bubJywKICAn4bucJyA9PiAn4budJywKICAn4bueJyA9PiAn4bufJywKICAn4bugJyA9PiAn4buhJywKICAn4buiJyA9PiAn4bujJywKICAn4bukJyA9PiAn4bulJywKICAn4bumJyA9PiAn4bunJywKICAn4buoJyA9PiAn4bupJywKICAn4buqJyA9PiAn4burJywKICAn4busJyA9PiAn4butJywKICAn4buuJyA9PiAn4buvJywKICAn4buwJyA9PiAn4buxJywKICAn4buyJyA9PiAn4buzJywKICAn4bu0JyA9PiAn4bu1JywKICAn4bu2JyA9PiAn4bu3JywKICAn4bu4JyA9PiAn4bu5JywKICAn4bu6JyA9PiAn4bu7JywKICAn4bu8JyA9PiAn4bu9JywKICAn4bu+JyA9PiAn4bu/JywKICAn4byIJyA9PiAn4byAJywKICAn4byJJyA9PiAn4byBJywKICAn4byKJyA9PiAn4byCJywKICAn4byLJyA9PiAn4byDJywKICAn4byMJyA9PiAn4byEJywKICAn4byNJyA9PiAn4byFJywKICAn4byOJyA9PiAn4byGJywKICAn4byPJyA9PiAn4byHJywKICAn4byYJyA9PiAn4byQJywKICAn4byZJyA9PiAn4byRJywKICAn4byaJyA9PiAn4bySJywKICAn4bybJyA9PiAn4byTJywKICAn4bycJyA9PiAn4byUJywKICAn4bydJyA9PiAn4byVJywKICAn4byoJyA9PiAn4bygJywKICAn4bypJyA9PiAn4byhJywKICAn4byqJyA9PiAn4byiJywKICAn4byrJyA9PiAn4byjJywKICAn4bysJyA9PiAn4bykJywKICAn4bytJyA9PiAn4bylJywKICAn4byuJyA9PiAn4bymJywKICAn4byvJyA9PiAn4bynJywKICAn4by4JyA9PiAn4bywJywKICAn4by5JyA9PiAn4byxJywKICAn4by6JyA9PiAn4byyJywKICAn4by7JyA9PiAn4byzJywKICAn4by8JyA9PiAn4by0JywKICAn4by9JyA9PiAn4by1JywKICAn4by+JyA9PiAn4by2JywKICAn4by/JyA9PiAn4by3JywKICAn4b2IJyA9PiAn4b2AJywKICAn4b2JJyA9PiAn4b2BJywKICAn4b2KJyA9PiAn4b2CJywKICAn4b2LJyA9PiAn4b2DJywKICAn4b2MJyA9PiAn4b2EJywKICAn4b2NJyA9PiAn4b2FJywKICAn4b2ZJyA9PiAn4b2RJywKICAn4b2bJyA9PiAn4b2TJywKICAn4b2dJyA9PiAn4b2VJywKICAn4b2fJyA9PiAn4b2XJywKICAn4b2oJyA9PiAn4b2gJywKICAn4b2pJyA9PiAn4b2hJywKICAn4b2qJyA9PiAn4b2iJywKICAn4b2rJyA9PiAn4b2jJywKICAn4b2sJyA9PiAn4b2kJywKICAn4b2tJyA9PiAn4b2lJywKICAn4b2uJyA9PiAn4b2mJywKICAn4b2vJyA9PiAn4b2nJywKICAn4b6IJyA9PiAn4b6AJywKICAn4b6JJyA9PiAn4b6BJywKICAn4b6KJyA9PiAn4b6CJywKICAn4b6LJyA9PiAn4b6DJywKICAn4b6MJyA9PiAn4b6EJywKICAn4b6NJyA9PiAn4b6FJywKICAn4b6OJyA9PiAn4b6GJywKICAn4b6PJyA9PiAn4b6HJywKICAn4b6YJyA9PiAn4b6QJywKICAn4b6ZJyA9PiAn4b6RJywKICAn4b6aJyA9PiAn4b6SJywKICAn4b6bJyA9PiAn4b6TJywKICAn4b6cJyA9PiAn4b6UJywKICAn4b6dJyA9PiAn4b6VJywKICAn4b6eJyA9PiAn4b6WJywKICAn4b6fJyA9PiAn4b6XJywKICAn4b6oJyA9PiAn4b6gJywKICAn4b6pJyA9PiAn4b6hJywKICAn4b6qJyA9PiAn4b6iJywKICAn4b6rJyA9PiAn4b6jJywKICAn4b6sJyA9PiAn4b6kJywKICAn4b6tJyA9PiAn4b6lJywKICAn4b6uJyA9PiAn4b6mJywKICAn4b6vJyA9PiAn4b6nJywKICAn4b64JyA9PiAn4b6wJywKICAn4b65JyA9PiAn4b6xJywKICAn4b66JyA9PiAn4b2wJywKICAn4b67JyA9PiAn4b2xJywKICAn4b68JyA9PiAn4b6zJywKICAn4b+IJyA9PiAn4b2yJywKICAn4b+JJyA9PiAn4b2zJywKICAn4b+KJyA9PiAn4b20JywKICAn4b+LJyA9PiAn4b21JywKICAn4b+MJyA9PiAn4b+DJywKICAn4b+YJyA9PiAn4b+QJywKICAn4b+ZJyA9PiAn4b+RJywKICAn4b+aJyA9PiAn4b22JywKICAn4b+bJyA9PiAn4b23JywKICAn4b+oJyA9PiAn4b+gJywKICAn4b+pJyA9PiAn4b+hJywKICAn4b+qJyA9PiAn4b26JywKICAn4b+rJyA9PiAn4b27JywKICAn4b+sJyA9PiAn4b+lJywKICAn4b+4JyA9PiAn4b24JywKICAn4b+5JyA9PiAn4b25JywKICAn4b+6JyA9PiAn4b28JywKICAn4b+7JyA9PiAn4b29JywKICAn4b+8JyA9PiAn4b+zJywKICAn4oSmJyA9PiAnz4knLAogICfihKonID0+ICdrJywKICAn4oSrJyA9PiAnw6UnLAogICfihLInID0+ICfihY4nLAogICfihaAnID0+ICfihbAnLAogICfihaEnID0+ICfihbEnLAogICfihaInID0+ICfihbInLAogICfihaMnID0+ICfihbMnLAogICfihaQnID0+ICfihbQnLAogICfihaUnID0+ICfihbUnLAogICfihaYnID0+ICfihbYnLAogICfihacnID0+ICfihbcnLAogICfihagnID0+ICfihbgnLAogICfihaknID0+ICfihbknLAogICfihaonID0+ICfihbonLAogICfihasnID0+ICfihbsnLAogICfihawnID0+ICfihbwnLAogICfiha0nID0+ICfihb0nLAogICfiha4nID0+ICfihb4nLAogICfiha8nID0+ICfihb8nLAogICfihoMnID0+ICfihoQnLAogICfikrYnID0+ICfik5AnLAogICfikrcnID0+ICfik5EnLAogICfikrgnID0+ICfik5InLAogICfikrknID0+ICfik5MnLAogICfikronID0+ICfik5QnLAogICfikrsnID0+ICfik5UnLAogICfikrwnID0+ICfik5YnLAogICfikr0nID0+ICfik5cnLAogICfikr4nID0+ICfik5gnLAogICfikr8nID0+ICfik5knLAogICfik4AnID0+ICfik5onLAogICfik4EnID0+ICfik5snLAogICfik4InID0+ICfik5wnLAogICfik4MnID0+ICfik50nLAogICfik4QnID0+ICfik54nLAogICfik4UnID0+ICfik58nLAogICfik4YnID0+ICfik6AnLAogICfik4cnID0+ICfik6EnLAogICfik4gnID0+ICfik6InLAogICfik4knID0+ICfik6MnLAogICfik4onID0+ICfik6QnLAogICfik4snID0+ICfik6UnLAogICfik4wnID0+ICfik6YnLAogICfik40nID0+ICfik6cnLAogICfik44nID0+ICfik6gnLAogICfik48nID0+ICfik6knLAogICfisIAnID0+ICfisLAnLAogICfisIEnID0+ICfisLEnLAogICfisIInID0+ICfisLInLAogICfisIMnID0+ICfisLMnLAogICfisIQnID0+ICfisLQnLAogICfisIUnID0+ICfisLUnLAogICfisIYnID0+ICfisLYnLAogICfisIcnID0+ICfisLcnLAogICfisIgnID0+ICfisLgnLAogICfisIknID0+ICfisLknLAogICfisIonID0+ICfisLonLAogICfisIsnID0+ICfisLsnLAogICfisIwnID0+ICfisLwnLAogICfisI0nID0+ICfisL0nLAogICfisI4nID0+ICfisL4nLAogICfisI8nID0+ICfisL8nLAogICfisJAnID0+ICfisYAnLAogICfisJEnID0+ICfisYEnLAogICfisJInID0+ICfisYInLAogICfisJMnID0+ICfisYMnLAogICfisJQnID0+ICfisYQnLAogICfisJUnID0+ICfisYUnLAogICfisJYnID0+ICfisYYnLAogICfisJcnID0+ICfisYcnLAogICfisJgnID0+ICfisYgnLAogICfisJknID0+ICfisYknLAogICfisJonID0+ICfisYonLAogICfisJsnID0+ICfisYsnLAogICfisJwnID0+ICfisYwnLAogICfisJ0nID0+ICfisY0nLAogICfisJ4nID0+ICfisY4nLAogICfisJ8nID0+ICfisY8nLAogICfisKAnID0+ICfisZAnLAogICfisKEnID0+ICfisZEnLAogICfisKInID0+ICfisZInLAogICfisKMnID0+ICfisZMnLAogICfisKQnID0+ICfisZQnLAogICfisKUnID0+ICfisZUnLAogICfisKYnID0+ICfisZYnLAogICfisKcnID0+ICfisZcnLAogICfisKgnID0+ICfisZgnLAogICfisKknID0+ICfisZknLAogICfisKonID0+ICfisZonLAogICfisKsnID0+ICfisZsnLAogICfisKwnID0+ICfisZwnLAogICfisK0nID0+ICfisZ0nLAogICfisK4nID0+ICfisZ4nLAogICfisaAnID0+ICfisaEnLAogICfisaInID0+ICfJqycsCiAgJ+KxoycgPT4gJ+G1vScsCiAgJ+KxpCcgPT4gJ8m9JywKICAn4rGnJyA9PiAn4rGoJywKICAn4rGpJyA9PiAn4rGqJywKICAn4rGrJyA9PiAn4rGsJywKICAn4rGtJyA9PiAnyZEnLAogICfisa4nID0+ICfJsScsCiAgJ+KxrycgPT4gJ8mQJywKICAn4rGwJyA9PiAnyZInLAogICfisbInID0+ICfisbMnLAogICfisbUnID0+ICfisbYnLAogICfisb4nID0+ICfIvycsCiAgJ+KxvycgPT4gJ8mAJywKICAn4rKAJyA9PiAn4rKBJywKICAn4rKCJyA9PiAn4rKDJywKICAn4rKEJyA9PiAn4rKFJywKICAn4rKGJyA9PiAn4rKHJywKICAn4rKIJyA9PiAn4rKJJywKICAn4rKKJyA9PiAn4rKLJywKICAn4rKMJyA9PiAn4rKNJywKICAn4rKOJyA9PiAn4rKPJywKICAn4rKQJyA9PiAn4rKRJywKICAn4rKSJyA9PiAn4rKTJywKICAn4rKUJyA9PiAn4rKVJywKICAn4rKWJyA9PiAn4rKXJywKICAn4rKYJyA9PiAn4rKZJywKICAn4rKaJyA9PiAn4rKbJywKICAn4rKcJyA9PiAn4rKdJywKICAn4rKeJyA9PiAn4rKfJywKICAn4rKgJyA9PiAn4rKhJywKICAn4rKiJyA9PiAn4rKjJywKICAn4rKkJyA9PiAn4rKlJywKICAn4rKmJyA9PiAn4rKnJywKICAn4rKoJyA9PiAn4rKpJywKICAn4rKqJyA9PiAn4rKrJywKICAn4rKsJyA9PiAn4rKtJywKICAn4rKuJyA9PiAn4rKvJywKICAn4rKwJyA9PiAn4rKxJywKICAn4rKyJyA9PiAn4rKzJywKICAn4rK0JyA9PiAn4rK1JywKICAn4rK2JyA9PiAn4rK3JywKICAn4rK4JyA9PiAn4rK5JywKICAn4rK6JyA9PiAn4rK7JywKICAn4rK8JyA9PiAn4rK9JywKICAn4rK+JyA9PiAn4rK/JywKICAn4rOAJyA9PiAn4rOBJywKICAn4rOCJyA9PiAn4rODJywKICAn4rOEJyA9PiAn4rOFJywKICAn4rOGJyA9PiAn4rOHJywKICAn4rOIJyA9PiAn4rOJJywKICAn4rOKJyA9PiAn4rOLJywKICAn4rOMJyA9PiAn4rONJywKICAn4rOOJyA9PiAn4rOPJywKICAn4rOQJyA9PiAn4rORJywKICAn4rOSJyA9PiAn4rOTJywKICAn4rOUJyA9PiAn4rOVJywKICAn4rOWJyA9PiAn4rOXJywKICAn4rOYJyA9PiAn4rOZJywKICAn4rOaJyA9PiAn4rObJywKICAn4rOcJyA9PiAn4rOdJywKICAn4rOeJyA9PiAn4rOfJywKICAn4rOgJyA9PiAn4rOhJywKICAn4rOiJyA9PiAn4rOjJywKICAn4rOrJyA9PiAn4rOsJywKICAn4rOtJyA9PiAn4rOuJywKICAn4rOyJyA9PiAn4rOzJywKICAn6pmAJyA9PiAn6pmBJywKICAn6pmCJyA9PiAn6pmDJywKICAn6pmEJyA9PiAn6pmFJywKICAn6pmGJyA9PiAn6pmHJywKICAn6pmIJyA9PiAn6pmJJywKICAn6pmKJyA9PiAn6pmLJywKICAn6pmMJyA9PiAn6pmNJywKICAn6pmOJyA9PiAn6pmPJywKICAn6pmQJyA9PiAn6pmRJywKICAn6pmSJyA9PiAn6pmTJywKICAn6pmUJyA9PiAn6pmVJywKICAn6pmWJyA9PiAn6pmXJywKICAn6pmYJyA9PiAn6pmZJywKICAn6pmaJyA9PiAn6pmbJywKICAn6pmcJyA9PiAn6pmdJywKICAn6pmeJyA9PiAn6pmfJywKICAn6pmgJyA9PiAn6pmhJywKICAn6pmiJyA9PiAn6pmjJywKICAn6pmkJyA9PiAn6pmlJywKICAn6pmmJyA9PiAn6pmnJywKICAn6pmoJyA9PiAn6pmpJywKICAn6pmqJyA9PiAn6pmrJywKICAn6pmsJyA9PiAn6pmtJywKICAn6pqAJyA9PiAn6pqBJywKICAn6pqCJyA9PiAn6pqDJywKICAn6pqEJyA9PiAn6pqFJywKICAn6pqGJyA9PiAn6pqHJywKICAn6pqIJyA9PiAn6pqJJywKICAn6pqKJyA9PiAn6pqLJywKICAn6pqMJyA9PiAn6pqNJywKICAn6pqOJyA9PiAn6pqPJywKICAn6pqQJyA9PiAn6pqRJywKICAn6pqSJyA9PiAn6pqTJywKICAn6pqUJyA9PiAn6pqVJywKICAn6pqWJyA9PiAn6pqXJywKICAn6pqYJyA9PiAn6pqZJywKICAn6pqaJyA9PiAn6pqbJywKICAn6pyiJyA9PiAn6pyjJywKICAn6pykJyA9PiAn6pylJywKICAn6pymJyA9PiAn6pynJywKICAn6pyoJyA9PiAn6pypJywKICAn6pyqJyA9PiAn6pyrJywKICAn6pysJyA9PiAn6pytJywKICAn6pyuJyA9PiAn6pyvJywKICAn6pyyJyA9PiAn6pyzJywKICAn6py0JyA9PiAn6py1JywKICAn6py2JyA9PiAn6py3JywKICAn6py4JyA9PiAn6py5JywKICAn6py6JyA9PiAn6py7JywKICAn6py8JyA9PiAn6py9JywKICAn6py+JyA9PiAn6py/JywKICAn6p2AJyA9PiAn6p2BJywKICAn6p2CJyA9PiAn6p2DJywKICAn6p2EJyA9PiAn6p2FJywKICAn6p2GJyA9PiAn6p2HJywKICAn6p2IJyA9PiAn6p2JJywKICAn6p2KJyA9PiAn6p2LJywKICAn6p2MJyA9PiAn6p2NJywKICAn6p2OJyA9PiAn6p2PJywKICAn6p2QJyA9PiAn6p2RJywKICAn6p2SJyA9PiAn6p2TJywKICAn6p2UJyA9PiAn6p2VJywKICAn6p2WJyA9PiAn6p2XJywKICAn6p2YJyA9PiAn6p2ZJywKICAn6p2aJyA9PiAn6p2bJywKICAn6p2cJyA9PiAn6p2dJywKICAn6p2eJyA9PiAn6p2fJywKICAn6p2gJyA9PiAn6p2hJywKICAn6p2iJyA9PiAn6p2jJywKICAn6p2kJyA9PiAn6p2lJywKICAn6p2mJyA9PiAn6p2nJywKICAn6p2oJyA9PiAn6p2pJywKICAn6p2qJyA9PiAn6p2rJywKICAn6p2sJyA9PiAn6p2tJywKICAn6p2uJyA9PiAn6p2vJywKICAn6p25JyA9PiAn6p26JywKICAn6p27JyA9PiAn6p28JywKICAn6p29JyA9PiAn4bW5JywKICAn6p2+JyA9PiAn6p2/JywKICAn6p6AJyA9PiAn6p6BJywKICAn6p6CJyA9PiAn6p6DJywKICAn6p6EJyA9PiAn6p6FJywKICAn6p6GJyA9PiAn6p6HJywKICAn6p6LJyA9PiAn6p6MJywKICAn6p6NJyA9PiAnyaUnLAogICfqnpAnID0+ICfqnpEnLAogICfqnpInID0+ICfqnpMnLAogICfqnpYnID0+ICfqnpcnLAogICfqnpgnID0+ICfqnpknLAogICfqnponID0+ICfqnpsnLAogICfqnpwnID0+ICfqnp0nLAogICfqnp4nID0+ICfqnp8nLAogICfqnqAnID0+ICfqnqEnLAogICfqnqInID0+ICfqnqMnLAogICfqnqQnID0+ICfqnqUnLAogICfqnqYnID0+ICfqnqcnLAogICfqnqgnID0+ICfqnqknLAogICfqnqonID0+ICfJpicsCiAgJ+qeqycgPT4gJ8mcJywKICAn6p6sJyA9PiAnyaEnLAogICfqnq0nID0+ICfJrCcsCiAgJ+qesCcgPT4gJ8qeJywKICAn6p6xJyA9PiAnyocnLAogICfvvKEnID0+ICfvvYEnLAogICfvvKInID0+ICfvvYInLAogICfvvKMnID0+ICfvvYMnLAogICfvvKQnID0+ICfvvYQnLAogICfvvKUnID0+ICfvvYUnLAogICfvvKYnID0+ICfvvYYnLAogICfvvKcnID0+ICfvvYcnLAogICfvvKgnID0+ICfvvYgnLAogICfvvKknID0+ICfvvYknLAogICfvvKonID0+ICfvvYonLAogICfvvKsnID0+ICfvvYsnLAogICfvvKwnID0+ICfvvYwnLAogICfvvK0nID0+ICfvvY0nLAogICfvvK4nID0+ICfvvY4nLAogICfvvK8nID0+ICfvvY8nLAogICfvvLAnID0+ICfvvZAnLAogICfvvLEnID0+ICfvvZEnLAogICfvvLInID0+ICfvvZInLAogICfvvLMnID0+ICfvvZMnLAogICfvvLQnID0+ICfvvZQnLAogICfvvLUnID0+ICfvvZUnLAogICfvvLYnID0+ICfvvZYnLAogICfvvLcnID0+ICfvvZcnLAogICfvvLgnID0+ICfvvZgnLAogICfvvLknID0+ICfvvZknLAogICfvvLonID0+ICfvvZonLAogICfwkJCAJyA9PiAn8JCQqCcsCiAgJ/CQkIEnID0+ICfwkJCpJywKICAn8JCQgicgPT4gJ/CQkKonLAogICfwkJCDJyA9PiAn8JCQqycsCiAgJ/CQkIQnID0+ICfwkJCsJywKICAn8JCQhScgPT4gJ/CQkK0nLAogICfwkJCGJyA9PiAn8JCQricsCiAgJ/CQkIcnID0+ICfwkJCvJywKICAn8JCQiCcgPT4gJ/CQkLAnLAogICfwkJCJJyA9PiAn8JCQsScsCiAgJ/CQkIonID0+ICfwkJCyJywKICAn8JCQiycgPT4gJ/CQkLMnLAogICfwkJCMJyA9PiAn8JCQtCcsCiAgJ/CQkI0nID0+ICfwkJC1JywKICAn8JCQjicgPT4gJ/CQkLYnLAogICfwkJCPJyA9PiAn8JCQtycsCiAgJ/CQkJAnID0+ICfwkJC4JywKICAn8JCQkScgPT4gJ/CQkLknLAogICfwkJCSJyA9PiAn8JCQuicsCiAgJ/CQkJMnID0+ICfwkJC7JywKICAn8JCQlCcgPT4gJ/CQkLwnLAogICfwkJCVJyA9PiAn8JCQvScsCiAgJ/CQkJYnID0+ICfwkJC+JywKICAn8JCQlycgPT4gJ/CQkL8nLAogICfwkJCYJyA9PiAn8JCRgCcsCiAgJ/CQkJknID0+ICfwkJGBJywKICAn8JCQmicgPT4gJ/CQkYInLAogICfwkJCbJyA9PiAn8JCRgycsCiAgJ/CQkJwnID0+ICfwkJGEJywKICAn8JCQnScgPT4gJ/CQkYUnLAogICfwkJCeJyA9PiAn8JCRhicsCiAgJ/CQkJ8nID0+ICfwkJGHJywKICAn8JCQoCcgPT4gJ/CQkYgnLAogICfwkJChJyA9PiAn8JCRiScsCiAgJ/CQkKInID0+ICfwkJGKJywKICAn8JCQoycgPT4gJ/CQkYsnLAogICfwkJCkJyA9PiAn8JCRjCcsCiAgJ/CQkKUnID0+ICfwkJGNJywKICAn8JCQpicgPT4gJ/CQkY4nLAogICfwkJCnJyA9PiAn8JCRjycsCiAgJ/CRoqAnID0+ICfwkaOAJywKICAn8JGioScgPT4gJ/CRo4EnLAogICfwkaKiJyA9PiAn8JGjgicsCiAgJ/CRoqMnID0+ICfwkaODJywKICAn8JGipCcgPT4gJ/CRo4QnLAogICfwkaKlJyA9PiAn8JGjhScsCiAgJ/CRoqYnID0+ICfwkaOGJywKICAn8JGipycgPT4gJ/CRo4cnLAogICfwkaKoJyA9PiAn8JGjiCcsCiAgJ/CRoqknID0+ICfwkaOJJywKICAn8JGiqicgPT4gJ/CRo4onLAogICfwkaKrJyA9PiAn8JGjiycsCiAgJ/CRoqwnID0+ICfwkaOMJywKICAn8JGirScgPT4gJ/CRo40nLAogICfwkaKuJyA9PiAn8JGjjicsCiAgJ/CRoq8nID0+ICfwkaOPJywKICAn8JGisCcgPT4gJ/CRo5AnLAogICfwkaKxJyA9PiAn8JGjkScsCiAgJ/CRorInID0+ICfwkaOSJywKICAn8JGisycgPT4gJ/CRo5MnLAogICfwkaK0JyA9PiAn8JGjlCcsCiAgJ/CRorUnID0+ICfwkaOVJywKICAn8JGiticgPT4gJ/CRo5YnLAogICfwkaK3JyA9PiAn8JGjlycsCiAgJ/CRorgnID0+ICfwkaOYJywKICAn8JGiuScgPT4gJ/CRo5knLAogICfwkaK6JyA9PiAn8JGjmicsCiAgJ/CRorsnID0+ICfwkaObJywKICAn8JGivCcgPT4gJ/CRo5wnLAogICfwkaK9JyA9PiAn8JGjnScsCiAgJ/CRor4nID0+ICfwkaOeJywKICAn8JGivycgPT4gJ/CRo58nLAopOwoKJHJlc3VsdCA9JiAkZGF0YTsKdW5zZXQoJGRhdGEpOwoKcmV0dXJuICRyZXN1bHQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnN0YXRpYyAkZGF0YSA9IGFycmF5ICgKICAnYScgPT4gJ0EnLAogICdiJyA9PiAnQicsCiAgJ2MnID0+ICdDJywKICAnZCcgPT4gJ0QnLAogICdlJyA9PiAnRScsCiAgJ2YnID0+ICdGJywKICAnZycgPT4gJ0cnLAogICdoJyA9PiAnSCcsCiAgJ2knID0+ICdJJywKICAnaicgPT4gJ0onLAogICdrJyA9PiAnSycsCiAgJ2wnID0+ICdMJywKICAnbScgPT4gJ00nLAogICduJyA9PiAnTicsCiAgJ28nID0+ICdPJywKICAncCcgPT4gJ1AnLAogICdxJyA9PiAnUScsCiAgJ3InID0+ICdSJywKICAncycgPT4gJ1MnLAogICd0JyA9PiAnVCcsCiAgJ3UnID0+ICdVJywKICAndicgPT4gJ1YnLAogICd3JyA9PiAnVycsCiAgJ3gnID0+ICdYJywKICAneScgPT4gJ1knLAogICd6JyA9PiAnWicsCiAgJ8K1JyA9PiAnzpwnLAogICfDoCcgPT4gJ8OAJywKICAnw6EnID0+ICfDgScsCiAgJ8OiJyA9PiAnw4InLAogICfDoycgPT4gJ8ODJywKICAnw6QnID0+ICfDhCcsCiAgJ8OlJyA9PiAnw4UnLAogICfDpicgPT4gJ8OGJywKICAnw6cnID0+ICfDhycsCiAgJ8OoJyA9PiAnw4gnLAogICfDqScgPT4gJ8OJJywKICAnw6onID0+ICfDiicsCiAgJ8OrJyA9PiAnw4snLAogICfDrCcgPT4gJ8OMJywKICAnw60nID0+ICfDjScsCiAgJ8OuJyA9PiAnw44nLAogICfDrycgPT4gJ8OPJywKICAnw7AnID0+ICfDkCcsCiAgJ8OxJyA9PiAnw5EnLAogICfDsicgPT4gJ8OSJywKICAnw7MnID0+ICfDkycsCiAgJ8O0JyA9PiAnw5QnLAogICfDtScgPT4gJ8OVJywKICAnw7YnID0+ICfDlicsCiAgJ8O4JyA9PiAnw5gnLAogICfDuScgPT4gJ8OZJywKICAnw7onID0+ICfDmicsCiAgJ8O7JyA9PiAnw5snLAogICfDvCcgPT4gJ8OcJywKICAnw70nID0+ICfDnScsCiAgJ8O+JyA9PiAnw54nLAogICfDvycgPT4gJ8W4JywKICAnxIEnID0+ICfEgCcsCiAgJ8SDJyA9PiAnxIInLAogICfEhScgPT4gJ8SEJywKICAnxIcnID0+ICfEhicsCiAgJ8SJJyA9PiAnxIgnLAogICfEiycgPT4gJ8SKJywKICAnxI0nID0+ICfEjCcsCiAgJ8SPJyA9PiAnxI4nLAogICfEkScgPT4gJ8SQJywKICAnxJMnID0+ICfEkicsCiAgJ8SVJyA9PiAnxJQnLAogICfElycgPT4gJ8SWJywKICAnxJknID0+ICfEmCcsCiAgJ8SbJyA9PiAnxJonLAogICfEnScgPT4gJ8ScJywKICAnxJ8nID0+ICfEnicsCiAgJ8ShJyA9PiAnxKAnLAogICfEoycgPT4gJ8SiJywKICAnxKUnID0+ICfEpCcsCiAgJ8SnJyA9PiAnxKYnLAogICfEqScgPT4gJ8SoJywKICAnxKsnID0+ICfEqicsCiAgJ8StJyA9PiAnxKwnLAogICfErycgPT4gJ8SuJywKICAnxLEnID0+ICdJJywKICAnxLMnID0+ICfEsicsCiAgJ8S1JyA9PiAnxLQnLAogICfEtycgPT4gJ8S2JywKICAnxLonID0+ICfEuScsCiAgJ8S8JyA9PiAnxLsnLAogICfEvicgPT4gJ8S9JywKICAnxYAnID0+ICfEvycsCiAgJ8WCJyA9PiAnxYEnLAogICfFhCcgPT4gJ8WDJywKICAnxYYnID0+ICfFhScsCiAgJ8WIJyA9PiAnxYcnLAogICfFiycgPT4gJ8WKJywKICAnxY0nID0+ICfFjCcsCiAgJ8WPJyA9PiAnxY4nLAogICfFkScgPT4gJ8WQJywKICAnxZMnID0+ICfFkicsCiAgJ8WVJyA9PiAnxZQnLAogICfFlycgPT4gJ8WWJywKICAnxZknID0+ICfFmCcsCiAgJ8WbJyA9PiAnxZonLAogICfFnScgPT4gJ8WcJywKICAnxZ8nID0+ICfFnicsCiAgJ8WhJyA9PiAnxaAnLAogICfFoycgPT4gJ8WiJywKICAnxaUnID0+ICfFpCcsCiAgJ8WnJyA9PiAnxaYnLAogICfFqScgPT4gJ8WoJywKICAnxasnID0+ICfFqicsCiAgJ8WtJyA9PiAnxawnLAogICfFrycgPT4gJ8WuJywKICAnxbEnID0+ICfFsCcsCiAgJ8WzJyA9PiAnxbInLAogICfFtScgPT4gJ8W0JywKICAnxbcnID0+ICfFticsCiAgJ8W6JyA9PiAnxbknLAogICfFvCcgPT4gJ8W7JywKICAnxb4nID0+ICfFvScsCiAgJ8W/JyA9PiAnUycsCiAgJ8aAJyA9PiAnyYMnLAogICfGgycgPT4gJ8aCJywKICAnxoUnID0+ICfGhCcsCiAgJ8aIJyA9PiAnxocnLAogICfGjCcgPT4gJ8aLJywKICAnxpInID0+ICfGkScsCiAgJ8aVJyA9PiAnx7YnLAogICfGmScgPT4gJ8aYJywKICAnxponID0+ICfIvScsCiAgJ8aeJyA9PiAnyKAnLAogICfGoScgPT4gJ8agJywKICAnxqMnID0+ICfGoicsCiAgJ8alJyA9PiAnxqQnLAogICfGqCcgPT4gJ8anJywKICAnxq0nID0+ICfGrCcsCiAgJ8awJyA9PiAnxq8nLAogICfGtCcgPT4gJ8azJywKICAnxrYnID0+ICfGtScsCiAgJ8a5JyA9PiAnxrgnLAogICfGvScgPT4gJ8a8JywKICAnxr8nID0+ICfHtycsCiAgJ8eFJyA9PiAnx4QnLAogICfHhicgPT4gJ8eEJywKICAnx4gnID0+ICfHhycsCiAgJ8eJJyA9PiAnx4cnLAogICfHiycgPT4gJ8eKJywKICAnx4wnID0+ICfHiicsCiAgJ8eOJyA9PiAnx40nLAogICfHkCcgPT4gJ8ePJywKICAnx5InID0+ICfHkScsCiAgJ8eUJyA9PiAnx5MnLAogICfHlicgPT4gJ8eVJywKICAnx5gnID0+ICfHlycsCiAgJ8eaJyA9PiAnx5knLAogICfHnCcgPT4gJ8ebJywKICAnx50nID0+ICfGjicsCiAgJ8efJyA9PiAnx54nLAogICfHoScgPT4gJ8egJywKICAnx6MnID0+ICfHoicsCiAgJ8elJyA9PiAnx6QnLAogICfHpycgPT4gJ8emJywKICAnx6knID0+ICfHqCcsCiAgJ8erJyA9PiAnx6onLAogICfHrScgPT4gJ8esJywKICAnx68nID0+ICfHricsCiAgJ8eyJyA9PiAnx7EnLAogICfHsycgPT4gJ8exJywKICAnx7UnID0+ICfHtCcsCiAgJ8e5JyA9PiAnx7gnLAogICfHuycgPT4gJ8e6JywKICAnx70nID0+ICfHvCcsCiAgJ8e/JyA9PiAnx74nLAogICfIgScgPT4gJ8iAJywKICAnyIMnID0+ICfIgicsCiAgJ8iFJyA9PiAnyIQnLAogICfIhycgPT4gJ8iGJywKICAnyIknID0+ICfIiCcsCiAgJ8iLJyA9PiAnyIonLAogICfIjScgPT4gJ8iMJywKICAnyI8nID0+ICfIjicsCiAgJ8iRJyA9PiAnyJAnLAogICfIkycgPT4gJ8iSJywKICAnyJUnID0+ICfIlCcsCiAgJ8iXJyA9PiAnyJYnLAogICfImScgPT4gJ8iYJywKICAnyJsnID0+ICfImicsCiAgJ8idJyA9PiAnyJwnLAogICfInycgPT4gJ8ieJywKICAnyKMnID0+ICfIoicsCiAgJ8ilJyA9PiAnyKQnLAogICfIpycgPT4gJ8imJywKICAnyKknID0+ICfIqCcsCiAgJ8irJyA9PiAnyKonLAogICfIrScgPT4gJ8isJywKICAnyK8nID0+ICfIricsCiAgJ8ixJyA9PiAnyLAnLAogICfIsycgPT4gJ8iyJywKICAnyLwnID0+ICfIuycsCiAgJ8i/JyA9PiAn4rG+JywKICAnyYAnID0+ICfisb8nLAogICfJgicgPT4gJ8mBJywKICAnyYcnID0+ICfJhicsCiAgJ8mJJyA9PiAnyYgnLAogICfJiycgPT4gJ8mKJywKICAnyY0nID0+ICfJjCcsCiAgJ8mPJyA9PiAnyY4nLAogICfJkCcgPT4gJ+KxrycsCiAgJ8mRJyA9PiAn4rGtJywKICAnyZInID0+ICfisbAnLAogICfJkycgPT4gJ8aBJywKICAnyZQnID0+ICfGhicsCiAgJ8mWJyA9PiAnxoknLAogICfJlycgPT4gJ8aKJywKICAnyZknID0+ICfGjycsCiAgJ8mbJyA9PiAnxpAnLAogICfJnCcgPT4gJ+qeqycsCiAgJ8mgJyA9PiAnxpMnLAogICfJoScgPT4gJ+qerCcsCiAgJ8mjJyA9PiAnxpQnLAogICfJpScgPT4gJ+qejScsCiAgJ8mmJyA9PiAn6p6qJywKICAnyagnID0+ICfGlycsCiAgJ8mpJyA9PiAnxpYnLAogICfJqycgPT4gJ+KxoicsCiAgJ8msJyA9PiAn6p6tJywKICAnya8nID0+ICfGnCcsCiAgJ8mxJyA9PiAn4rGuJywKICAnybInID0+ICfGnScsCiAgJ8m1JyA9PiAnxp8nLAogICfJvScgPT4gJ+KxpCcsCiAgJ8qAJyA9PiAnxqYnLAogICfKgycgPT4gJ8apJywKICAnyocnID0+ICfqnrEnLAogICfKiCcgPT4gJ8auJywKICAnyoknID0+ICfJhCcsCiAgJ8qKJyA9PiAnxrEnLAogICfKiycgPT4gJ8ayJywKICAnyownID0+ICfJhScsCiAgJ8qSJyA9PiAnxrcnLAogICfKnicgPT4gJ+qesCcsCiAgJ82FJyA9PiAnzpknLAogICfNsScgPT4gJ82wJywKICAnzbMnID0+ICfNsicsCiAgJ823JyA9PiAnzbYnLAogICfNuycgPT4gJ8+9JywKICAnzbwnID0+ICfPvicsCiAgJ829JyA9PiAnz78nLAogICfOrCcgPT4gJ86GJywKICAnzq0nID0+ICfOiCcsCiAgJ86uJyA9PiAnzoknLAogICfOrycgPT4gJ86KJywKICAnzrEnID0+ICfOkScsCiAgJ86yJyA9PiAnzpInLAogICfOsycgPT4gJ86TJywKICAnzrQnID0+ICfOlCcsCiAgJ861JyA9PiAnzpUnLAogICfOticgPT4gJ86WJywKICAnzrcnID0+ICfOlycsCiAgJ864JyA9PiAnzpgnLAogICfOuScgPT4gJ86ZJywKICAnzronID0+ICfOmicsCiAgJ867JyA9PiAnzpsnLAogICfOvCcgPT4gJ86cJywKICAnzr0nID0+ICfOnScsCiAgJ86+JyA9PiAnzp4nLAogICfOvycgPT4gJ86fJywKICAnz4AnID0+ICfOoCcsCiAgJ8+BJyA9PiAnzqEnLAogICfPgicgPT4gJ86jJywKICAnz4MnID0+ICfOoycsCiAgJ8+EJyA9PiAnzqQnLAogICfPhScgPT4gJ86lJywKICAnz4YnID0+ICfOpicsCiAgJ8+HJyA9PiAnzqcnLAogICfPiCcgPT4gJ86oJywKICAnz4knID0+ICfOqScsCiAgJ8+KJyA9PiAnzqonLAogICfPiycgPT4gJ86rJywKICAnz4wnID0+ICfOjCcsCiAgJ8+NJyA9PiAnzo4nLAogICfPjicgPT4gJ86PJywKICAnz5AnID0+ICfOkicsCiAgJ8+RJyA9PiAnzpgnLAogICfPlScgPT4gJ86mJywKICAnz5YnID0+ICfOoCcsCiAgJ8+XJyA9PiAnz48nLAogICfPmScgPT4gJ8+YJywKICAnz5snID0+ICfPmicsCiAgJ8+dJyA9PiAnz5wnLAogICfPnycgPT4gJ8+eJywKICAnz6EnID0+ICfPoCcsCiAgJ8+jJyA9PiAnz6InLAogICfPpScgPT4gJ8+kJywKICAnz6cnID0+ICfPpicsCiAgJ8+pJyA9PiAnz6gnLAogICfPqycgPT4gJ8+qJywKICAnz60nID0+ICfPrCcsCiAgJ8+vJyA9PiAnz64nLAogICfPsCcgPT4gJ86aJywKICAnz7EnID0+ICfOoScsCiAgJ8+yJyA9PiAnz7knLAogICfPsycgPT4gJ82/JywKICAnz7UnID0+ICfOlScsCiAgJ8+4JyA9PiAnz7cnLAogICfPuycgPT4gJ8+6JywKICAn0LAnID0+ICfQkCcsCiAgJ9CxJyA9PiAn0JEnLAogICfQsicgPT4gJ9CSJywKICAn0LMnID0+ICfQkycsCiAgJ9C0JyA9PiAn0JQnLAogICfQtScgPT4gJ9CVJywKICAn0LYnID0+ICfQlicsCiAgJ9C3JyA9PiAn0JcnLAogICfQuCcgPT4gJ9CYJywKICAn0LknID0+ICfQmScsCiAgJ9C6JyA9PiAn0JonLAogICfQuycgPT4gJ9CbJywKICAn0LwnID0+ICfQnCcsCiAgJ9C9JyA9PiAn0J0nLAogICfQvicgPT4gJ9CeJywKICAn0L8nID0+ICfQnycsCiAgJ9GAJyA9PiAn0KAnLAogICfRgScgPT4gJ9ChJywKICAn0YInID0+ICfQoicsCiAgJ9GDJyA9PiAn0KMnLAogICfRhCcgPT4gJ9CkJywKICAn0YUnID0+ICfQpScsCiAgJ9GGJyA9PiAn0KYnLAogICfRhycgPT4gJ9CnJywKICAn0YgnID0+ICfQqCcsCiAgJ9GJJyA9PiAn0KknLAogICfRiicgPT4gJ9CqJywKICAn0YsnID0+ICfQqycsCiAgJ9GMJyA9PiAn0KwnLAogICfRjScgPT4gJ9CtJywKICAn0Y4nID0+ICfQricsCiAgJ9GPJyA9PiAn0K8nLAogICfRkCcgPT4gJ9CAJywKICAn0ZEnID0+ICfQgScsCiAgJ9GSJyA9PiAn0IInLAogICfRkycgPT4gJ9CDJywKICAn0ZQnID0+ICfQhCcsCiAgJ9GVJyA9PiAn0IUnLAogICfRlicgPT4gJ9CGJywKICAn0ZcnID0+ICfQhycsCiAgJ9GYJyA9PiAn0IgnLAogICfRmScgPT4gJ9CJJywKICAn0ZonID0+ICfQiicsCiAgJ9GbJyA9PiAn0IsnLAogICfRnCcgPT4gJ9CMJywKICAn0Z0nID0+ICfQjScsCiAgJ9GeJyA9PiAn0I4nLAogICfRnycgPT4gJ9CPJywKICAn0aEnID0+ICfRoCcsCiAgJ9GjJyA9PiAn0aInLAogICfRpScgPT4gJ9GkJywKICAn0acnID0+ICfRpicsCiAgJ9GpJyA9PiAn0agnLAogICfRqycgPT4gJ9GqJywKICAn0a0nID0+ICfRrCcsCiAgJ9GvJyA9PiAn0a4nLAogICfRsScgPT4gJ9GwJywKICAn0bMnID0+ICfRsicsCiAgJ9G1JyA9PiAn0bQnLAogICfRtycgPT4gJ9G2JywKICAn0bknID0+ICfRuCcsCiAgJ9G7JyA9PiAn0bonLAogICfRvScgPT4gJ9G8JywKICAn0b8nID0+ICfRvicsCiAgJ9KBJyA9PiAn0oAnLAogICfSiycgPT4gJ9KKJywKICAn0o0nID0+ICfSjCcsCiAgJ9KPJyA9PiAn0o4nLAogICfSkScgPT4gJ9KQJywKICAn0pMnID0+ICfSkicsCiAgJ9KVJyA9PiAn0pQnLAogICfSlycgPT4gJ9KWJywKICAn0pknID0+ICfSmCcsCiAgJ9KbJyA9PiAn0ponLAogICfSnScgPT4gJ9KcJywKICAn0p8nID0+ICfSnicsCiAgJ9KhJyA9PiAn0qAnLAogICfSoycgPT4gJ9KiJywKICAn0qUnID0+ICfSpCcsCiAgJ9KnJyA9PiAn0qYnLAogICfSqScgPT4gJ9KoJywKICAn0qsnID0+ICfSqicsCiAgJ9KtJyA9PiAn0qwnLAogICfSrycgPT4gJ9KuJywKICAn0rEnID0+ICfSsCcsCiAgJ9KzJyA9PiAn0rInLAogICfStScgPT4gJ9K0JywKICAn0rcnID0+ICfSticsCiAgJ9K5JyA9PiAn0rgnLAogICfSuycgPT4gJ9K6JywKICAn0r0nID0+ICfSvCcsCiAgJ9K/JyA9PiAn0r4nLAogICfTgicgPT4gJ9OBJywKICAn04QnID0+ICfTgycsCiAgJ9OGJyA9PiAn04UnLAogICfTiCcgPT4gJ9OHJywKICAn04onID0+ICfTiScsCiAgJ9OMJyA9PiAn04snLAogICfTjicgPT4gJ9ONJywKICAn048nID0+ICfTgCcsCiAgJ9ORJyA9PiAn05AnLAogICfTkycgPT4gJ9OSJywKICAn05UnID0+ICfTlCcsCiAgJ9OXJyA9PiAn05YnLAogICfTmScgPT4gJ9OYJywKICAn05snID0+ICfTmicsCiAgJ9OdJyA9PiAn05wnLAogICfTnycgPT4gJ9OeJywKICAn06EnID0+ICfToCcsCiAgJ9OjJyA9PiAn06InLAogICfTpScgPT4gJ9OkJywKICAn06cnID0+ICfTpicsCiAgJ9OpJyA9PiAn06gnLAogICfTqycgPT4gJ9OqJywKICAn060nID0+ICfTrCcsCiAgJ9OvJyA9PiAn064nLAogICfTsScgPT4gJ9OwJywKICAn07MnID0+ICfTsicsCiAgJ9O1JyA9PiAn07QnLAogICfTtycgPT4gJ9O2JywKICAn07knID0+ICfTuCcsCiAgJ9O7JyA9PiAn07onLAogICfTvScgPT4gJ9O8JywKICAn078nID0+ICfTvicsCiAgJ9SBJyA9PiAn1IAnLAogICfUgycgPT4gJ9SCJywKICAn1IUnID0+ICfUhCcsCiAgJ9SHJyA9PiAn1IYnLAogICfUiScgPT4gJ9SIJywKICAn1IsnID0+ICfUiicsCiAgJ9SNJyA9PiAn1IwnLAogICfUjycgPT4gJ9SOJywKICAn1JEnID0+ICfUkCcsCiAgJ9STJyA9PiAn1JInLAogICfUlScgPT4gJ9SUJywKICAn1JcnID0+ICfUlicsCiAgJ9SZJyA9PiAn1JgnLAogICfUmycgPT4gJ9SaJywKICAn1J0nID0+ICfUnCcsCiAgJ9SfJyA9PiAn1J4nLAogICfUoScgPT4gJ9SgJywKICAn1KMnID0+ICfUoicsCiAgJ9SlJyA9PiAn1KQnLAogICfUpycgPT4gJ9SmJywKICAn1KknID0+ICfUqCcsCiAgJ9SrJyA9PiAn1KonLAogICfUrScgPT4gJ9SsJywKICAn1K8nID0+ICfUricsCiAgJ9WhJyA9PiAn1LEnLAogICfVoicgPT4gJ9SyJywKICAn1aMnID0+ICfUsycsCiAgJ9WkJyA9PiAn1LQnLAogICfVpScgPT4gJ9S1JywKICAn1aYnID0+ICfUticsCiAgJ9WnJyA9PiAn1LcnLAogICfVqCcgPT4gJ9S4JywKICAn1aknID0+ICfUuScsCiAgJ9WqJyA9PiAn1LonLAogICfVqycgPT4gJ9S7JywKICAn1awnID0+ICfUvCcsCiAgJ9WtJyA9PiAn1L0nLAogICfVricgPT4gJ9S+JywKICAn1a8nID0+ICfUvycsCiAgJ9WwJyA9PiAn1YAnLAogICfVsScgPT4gJ9WBJywKICAn1bInID0+ICfVgicsCiAgJ9WzJyA9PiAn1YMnLAogICfVtCcgPT4gJ9WEJywKICAn1bUnID0+ICfVhScsCiAgJ9W2JyA9PiAn1YYnLAogICfVtycgPT4gJ9WHJywKICAn1bgnID0+ICfViCcsCiAgJ9W5JyA9PiAn1YknLAogICfVuicgPT4gJ9WKJywKICAn1bsnID0+ICfViycsCiAgJ9W8JyA9PiAn1YwnLAogICfVvScgPT4gJ9WNJywKICAn1b4nID0+ICfVjicsCiAgJ9W/JyA9PiAn1Y8nLAogICfWgCcgPT4gJ9WQJywKICAn1oEnID0+ICfVkScsCiAgJ9aCJyA9PiAn1ZInLAogICfWgycgPT4gJ9WTJywKICAn1oQnID0+ICfVlCcsCiAgJ9aFJyA9PiAn1ZUnLAogICfWhicgPT4gJ9WWJywKICAn4bW5JyA9PiAn6p29JywKICAn4bW9JyA9PiAn4rGjJywKICAn4biBJyA9PiAn4biAJywKICAn4biDJyA9PiAn4biCJywKICAn4biFJyA9PiAn4biEJywKICAn4biHJyA9PiAn4biGJywKICAn4biJJyA9PiAn4biIJywKICAn4biLJyA9PiAn4biKJywKICAn4biNJyA9PiAn4biMJywKICAn4biPJyA9PiAn4biOJywKICAn4biRJyA9PiAn4biQJywKICAn4biTJyA9PiAn4biSJywKICAn4biVJyA9PiAn4biUJywKICAn4biXJyA9PiAn4biWJywKICAn4biZJyA9PiAn4biYJywKICAn4bibJyA9PiAn4biaJywKICAn4bidJyA9PiAn4bicJywKICAn4bifJyA9PiAn4bieJywKICAn4bihJyA9PiAn4bigJywKICAn4bijJyA9PiAn4biiJywKICAn4bilJyA9PiAn4bikJywKICAn4binJyA9PiAn4bimJywKICAn4bipJyA9PiAn4bioJywKICAn4birJyA9PiAn4biqJywKICAn4bitJyA9PiAn4bisJywKICAn4bivJyA9PiAn4biuJywKICAn4bixJyA9PiAn4biwJywKICAn4bizJyA9PiAn4biyJywKICAn4bi1JyA9PiAn4bi0JywKICAn4bi3JyA9PiAn4bi2JywKICAn4bi5JyA9PiAn4bi4JywKICAn4bi7JyA9PiAn4bi6JywKICAn4bi9JyA9PiAn4bi8JywKICAn4bi/JyA9PiAn4bi+JywKICAn4bmBJyA9PiAn4bmAJywKICAn4bmDJyA9PiAn4bmCJywKICAn4bmFJyA9PiAn4bmEJywKICAn4bmHJyA9PiAn4bmGJywKICAn4bmJJyA9PiAn4bmIJywKICAn4bmLJyA9PiAn4bmKJywKICAn4bmNJyA9PiAn4bmMJywKICAn4bmPJyA9PiAn4bmOJywKICAn4bmRJyA9PiAn4bmQJywKICAn4bmTJyA9PiAn4bmSJywKICAn4bmVJyA9PiAn4bmUJywKICAn4bmXJyA9PiAn4bmWJywKICAn4bmZJyA9PiAn4bmYJywKICAn4bmbJyA9PiAn4bmaJywKICAn4bmdJyA9PiAn4bmcJywKICAn4bmfJyA9PiAn4bmeJywKICAn4bmhJyA9PiAn4bmgJywKICAn4bmjJyA9PiAn4bmiJywKICAn4bmlJyA9PiAn4bmkJywKICAn4bmnJyA9PiAn4bmmJywKICAn4bmpJyA9PiAn4bmoJywKICAn4bmrJyA9PiAn4bmqJywKICAn4bmtJyA9PiAn4bmsJywKICAn4bmvJyA9PiAn4bmuJywKICAn4bmxJyA9PiAn4bmwJywKICAn4bmzJyA9PiAn4bmyJywKICAn4bm1JyA9PiAn4bm0JywKICAn4bm3JyA9PiAn4bm2JywKICAn4bm5JyA9PiAn4bm4JywKICAn4bm7JyA9PiAn4bm6JywKICAn4bm9JyA9PiAn4bm8JywKICAn4bm/JyA9PiAn4bm+JywKICAn4bqBJyA9PiAn4bqAJywKICAn4bqDJyA9PiAn4bqCJywKICAn4bqFJyA9PiAn4bqEJywKICAn4bqHJyA9PiAn4bqGJywKICAn4bqJJyA9PiAn4bqIJywKICAn4bqLJyA9PiAn4bqKJywKICAn4bqNJyA9PiAn4bqMJywKICAn4bqPJyA9PiAn4bqOJywKICAn4bqRJyA9PiAn4bqQJywKICAn4bqTJyA9PiAn4bqSJywKICAn4bqVJyA9PiAn4bqUJywKICAn4bqbJyA9PiAn4bmgJywKICAn4bqhJyA9PiAn4bqgJywKICAn4bqjJyA9PiAn4bqiJywKICAn4bqlJyA9PiAn4bqkJywKICAn4bqnJyA9PiAn4bqmJywKICAn4bqpJyA9PiAn4bqoJywKICAn4bqrJyA9PiAn4bqqJywKICAn4bqtJyA9PiAn4bqsJywKICAn4bqvJyA9PiAn4bquJywKICAn4bqxJyA9PiAn4bqwJywKICAn4bqzJyA9PiAn4bqyJywKICAn4bq1JyA9PiAn4bq0JywKICAn4bq3JyA9PiAn4bq2JywKICAn4bq5JyA9PiAn4bq4JywKICAn4bq7JyA9PiAn4bq6JywKICAn4bq9JyA9PiAn4bq8JywKICAn4bq/JyA9PiAn4bq+JywKICAn4buBJyA9PiAn4buAJywKICAn4buDJyA9PiAn4buCJywKICAn4buFJyA9PiAn4buEJywKICAn4buHJyA9PiAn4buGJywKICAn4buJJyA9PiAn4buIJywKICAn4buLJyA9PiAn4buKJywKICAn4buNJyA9PiAn4buMJywKICAn4buPJyA9PiAn4buOJywKICAn4buRJyA9PiAn4buQJywKICAn4buTJyA9PiAn4buSJywKICAn4buVJyA9PiAn4buUJywKICAn4buXJyA9PiAn4buWJywKICAn4buZJyA9PiAn4buYJywKICAn4bubJyA9PiAn4buaJywKICAn4budJyA9PiAn4bucJywKICAn4bufJyA9PiAn4bueJywKICAn4buhJyA9PiAn4bugJywKICAn4bujJyA9PiAn4buiJywKICAn4bulJyA9PiAn4bukJywKICAn4bunJyA9PiAn4bumJywKICAn4bupJyA9PiAn4buoJywKICAn4burJyA9PiAn4buqJywKICAn4butJyA9PiAn4busJywKICAn4buvJyA9PiAn4buuJywKICAn4buxJyA9PiAn4buwJywKICAn4buzJyA9PiAn4buyJywKICAn4bu1JyA9PiAn4bu0JywKICAn4bu3JyA9PiAn4bu2JywKICAn4bu5JyA9PiAn4bu4JywKICAn4bu7JyA9PiAn4bu6JywKICAn4bu9JyA9PiAn4bu8JywKICAn4bu/JyA9PiAn4bu+JywKICAn4byAJyA9PiAn4byIJywKICAn4byBJyA9PiAn4byJJywKICAn4byCJyA9PiAn4byKJywKICAn4byDJyA9PiAn4byLJywKICAn4byEJyA9PiAn4byMJywKICAn4byFJyA9PiAn4byNJywKICAn4byGJyA9PiAn4byOJywKICAn4byHJyA9PiAn4byPJywKICAn4byQJyA9PiAn4byYJywKICAn4byRJyA9PiAn4byZJywKICAn4bySJyA9PiAn4byaJywKICAn4byTJyA9PiAn4bybJywKICAn4byUJyA9PiAn4bycJywKICAn4byVJyA9PiAn4bydJywKICAn4bygJyA9PiAn4byoJywKICAn4byhJyA9PiAn4bypJywKICAn4byiJyA9PiAn4byqJywKICAn4byjJyA9PiAn4byrJywKICAn4bykJyA9PiAn4bysJywKICAn4bylJyA9PiAn4bytJywKICAn4bymJyA9PiAn4byuJywKICAn4bynJyA9PiAn4byvJywKICAn4bywJyA9PiAn4by4JywKICAn4byxJyA9PiAn4by5JywKICAn4byyJyA9PiAn4by6JywKICAn4byzJyA9PiAn4by7JywKICAn4by0JyA9PiAn4by8JywKICAn4by1JyA9PiAn4by9JywKICAn4by2JyA9PiAn4by+JywKICAn4by3JyA9PiAn4by/JywKICAn4b2AJyA9PiAn4b2IJywKICAn4b2BJyA9PiAn4b2JJywKICAn4b2CJyA9PiAn4b2KJywKICAn4b2DJyA9PiAn4b2LJywKICAn4b2EJyA9PiAn4b2MJywKICAn4b2FJyA9PiAn4b2NJywKICAn4b2RJyA9PiAn4b2ZJywKICAn4b2TJyA9PiAn4b2bJywKICAn4b2VJyA9PiAn4b2dJywKICAn4b2XJyA9PiAn4b2fJywKICAn4b2gJyA9PiAn4b2oJywKICAn4b2hJyA9PiAn4b2pJywKICAn4b2iJyA9PiAn4b2qJywKICAn4b2jJyA9PiAn4b2rJywKICAn4b2kJyA9PiAn4b2sJywKICAn4b2lJyA9PiAn4b2tJywKICAn4b2mJyA9PiAn4b2uJywKICAn4b2nJyA9PiAn4b2vJywKICAn4b2wJyA9PiAn4b66JywKICAn4b2xJyA9PiAn4b67JywKICAn4b2yJyA9PiAn4b+IJywKICAn4b2zJyA9PiAn4b+JJywKICAn4b20JyA9PiAn4b+KJywKICAn4b21JyA9PiAn4b+LJywKICAn4b22JyA9PiAn4b+aJywKICAn4b23JyA9PiAn4b+bJywKICAn4b24JyA9PiAn4b+4JywKICAn4b25JyA9PiAn4b+5JywKICAn4b26JyA9PiAn4b+qJywKICAn4b27JyA9PiAn4b+rJywKICAn4b28JyA9PiAn4b+6JywKICAn4b29JyA9PiAn4b+7JywKICAn4b6AJyA9PiAn4b6IJywKICAn4b6BJyA9PiAn4b6JJywKICAn4b6CJyA9PiAn4b6KJywKICAn4b6DJyA9PiAn4b6LJywKICAn4b6EJyA9PiAn4b6MJywKICAn4b6FJyA9PiAn4b6NJywKICAn4b6GJyA9PiAn4b6OJywKICAn4b6HJyA9PiAn4b6PJywKICAn4b6QJyA9PiAn4b6YJywKICAn4b6RJyA9PiAn4b6ZJywKICAn4b6SJyA9PiAn4b6aJywKICAn4b6TJyA9PiAn4b6bJywKICAn4b6UJyA9PiAn4b6cJywKICAn4b6VJyA9PiAn4b6dJywKICAn4b6WJyA9PiAn4b6eJywKICAn4b6XJyA9PiAn4b6fJywKICAn4b6gJyA9PiAn4b6oJywKICAn4b6hJyA9PiAn4b6pJywKICAn4b6iJyA9PiAn4b6qJywKICAn4b6jJyA9PiAn4b6rJywKICAn4b6kJyA9PiAn4b6sJywKICAn4b6lJyA9PiAn4b6tJywKICAn4b6mJyA9PiAn4b6uJywKICAn4b6nJyA9PiAn4b6vJywKICAn4b6wJyA9PiAn4b64JywKICAn4b6xJyA9PiAn4b65JywKICAn4b6zJyA9PiAn4b68JywKICAn4b6+JyA9PiAnzpknLAogICfhv4MnID0+ICfhv4wnLAogICfhv5AnID0+ICfhv5gnLAogICfhv5EnID0+ICfhv5knLAogICfhv6AnID0+ICfhv6gnLAogICfhv6EnID0+ICfhv6knLAogICfhv6UnID0+ICfhv6wnLAogICfhv7MnID0+ICfhv7wnLAogICfihY4nID0+ICfihLInLAogICfihbAnID0+ICfihaAnLAogICfihbEnID0+ICfihaEnLAogICfihbInID0+ICfihaInLAogICfihbMnID0+ICfihaMnLAogICfihbQnID0+ICfihaQnLAogICfihbUnID0+ICfihaUnLAogICfihbYnID0+ICfihaYnLAogICfihbcnID0+ICfihacnLAogICfihbgnID0+ICfihagnLAogICfihbknID0+ICfihaknLAogICfihbonID0+ICfihaonLAogICfihbsnID0+ICfihasnLAogICfihbwnID0+ICfihawnLAogICfihb0nID0+ICfiha0nLAogICfihb4nID0+ICfiha4nLAogICfihb8nID0+ICfiha8nLAogICfihoQnID0+ICfihoMnLAogICfik5AnID0+ICfikrYnLAogICfik5EnID0+ICfikrcnLAogICfik5InID0+ICfikrgnLAogICfik5MnID0+ICfikrknLAogICfik5QnID0+ICfikronLAogICfik5UnID0+ICfikrsnLAogICfik5YnID0+ICfikrwnLAogICfik5cnID0+ICfikr0nLAogICfik5gnID0+ICfikr4nLAogICfik5knID0+ICfikr8nLAogICfik5onID0+ICfik4AnLAogICfik5snID0+ICfik4EnLAogICfik5wnID0+ICfik4InLAogICfik50nID0+ICfik4MnLAogICfik54nID0+ICfik4QnLAogICfik58nID0+ICfik4UnLAogICfik6AnID0+ICfik4YnLAogICfik6EnID0+ICfik4cnLAogICfik6InID0+ICfik4gnLAogICfik6MnID0+ICfik4knLAogICfik6QnID0+ICfik4onLAogICfik6UnID0+ICfik4snLAogICfik6YnID0+ICfik4wnLAogICfik6cnID0+ICfik40nLAogICfik6gnID0+ICfik44nLAogICfik6knID0+ICfik48nLAogICfisLAnID0+ICfisIAnLAogICfisLEnID0+ICfisIEnLAogICfisLInID0+ICfisIInLAogICfisLMnID0+ICfisIMnLAogICfisLQnID0+ICfisIQnLAogICfisLUnID0+ICfisIUnLAogICfisLYnID0+ICfisIYnLAogICfisLcnID0+ICfisIcnLAogICfisLgnID0+ICfisIgnLAogICfisLknID0+ICfisIknLAogICfisLonID0+ICfisIonLAogICfisLsnID0+ICfisIsnLAogICfisLwnID0+ICfisIwnLAogICfisL0nID0+ICfisI0nLAogICfisL4nID0+ICfisI4nLAogICfisL8nID0+ICfisI8nLAogICfisYAnID0+ICfisJAnLAogICfisYEnID0+ICfisJEnLAogICfisYInID0+ICfisJInLAogICfisYMnID0+ICfisJMnLAogICfisYQnID0+ICfisJQnLAogICfisYUnID0+ICfisJUnLAogICfisYYnID0+ICfisJYnLAogICfisYcnID0+ICfisJcnLAogICfisYgnID0+ICfisJgnLAogICfisYknID0+ICfisJknLAogICfisYonID0+ICfisJonLAogICfisYsnID0+ICfisJsnLAogICfisYwnID0+ICfisJwnLAogICfisY0nID0+ICfisJ0nLAogICfisY4nID0+ICfisJ4nLAogICfisY8nID0+ICfisJ8nLAogICfisZAnID0+ICfisKAnLAogICfisZEnID0+ICfisKEnLAogICfisZInID0+ICfisKInLAogICfisZMnID0+ICfisKMnLAogICfisZQnID0+ICfisKQnLAogICfisZUnID0+ICfisKUnLAogICfisZYnID0+ICfisKYnLAogICfisZcnID0+ICfisKcnLAogICfisZgnID0+ICfisKgnLAogICfisZknID0+ICfisKknLAogICfisZonID0+ICfisKonLAogICfisZsnID0+ICfisKsnLAogICfisZwnID0+ICfisKwnLAogICfisZ0nID0+ICfisK0nLAogICfisZ4nID0+ICfisK4nLAogICfisaEnID0+ICfisaAnLAogICfisaUnID0+ICfIuicsCiAgJ+KxpicgPT4gJ8i+JywKICAn4rGoJyA9PiAn4rGnJywKICAn4rGqJyA9PiAn4rGpJywKICAn4rGsJyA9PiAn4rGrJywKICAn4rGzJyA9PiAn4rGyJywKICAn4rG2JyA9PiAn4rG1JywKICAn4rKBJyA9PiAn4rKAJywKICAn4rKDJyA9PiAn4rKCJywKICAn4rKFJyA9PiAn4rKEJywKICAn4rKHJyA9PiAn4rKGJywKICAn4rKJJyA9PiAn4rKIJywKICAn4rKLJyA9PiAn4rKKJywKICAn4rKNJyA9PiAn4rKMJywKICAn4rKPJyA9PiAn4rKOJywKICAn4rKRJyA9PiAn4rKQJywKICAn4rKTJyA9PiAn4rKSJywKICAn4rKVJyA9PiAn4rKUJywKICAn4rKXJyA9PiAn4rKWJywKICAn4rKZJyA9PiAn4rKYJywKICAn4rKbJyA9PiAn4rKaJywKICAn4rKdJyA9PiAn4rKcJywKICAn4rKfJyA9PiAn4rKeJywKICAn4rKhJyA9PiAn4rKgJywKICAn4rKjJyA9PiAn4rKiJywKICAn4rKlJyA9PiAn4rKkJywKICAn4rKnJyA9PiAn4rKmJywKICAn4rKpJyA9PiAn4rKoJywKICAn4rKrJyA9PiAn4rKqJywKICAn4rKtJyA9PiAn4rKsJywKICAn4rKvJyA9PiAn4rKuJywKICAn4rKxJyA9PiAn4rKwJywKICAn4rKzJyA9PiAn4rKyJywKICAn4rK1JyA9PiAn4rK0JywKICAn4rK3JyA9PiAn4rK2JywKICAn4rK5JyA9PiAn4rK4JywKICAn4rK7JyA9PiAn4rK6JywKICAn4rK9JyA9PiAn4rK8JywKICAn4rK/JyA9PiAn4rK+JywKICAn4rOBJyA9PiAn4rOAJywKICAn4rODJyA9PiAn4rOCJywKICAn4rOFJyA9PiAn4rOEJywKICAn4rOHJyA9PiAn4rOGJywKICAn4rOJJyA9PiAn4rOIJywKICAn4rOLJyA9PiAn4rOKJywKICAn4rONJyA9PiAn4rOMJywKICAn4rOPJyA9PiAn4rOOJywKICAn4rORJyA9PiAn4rOQJywKICAn4rOTJyA9PiAn4rOSJywKICAn4rOVJyA9PiAn4rOUJywKICAn4rOXJyA9PiAn4rOWJywKICAn4rOZJyA9PiAn4rOYJywKICAn4rObJyA9PiAn4rOaJywKICAn4rOdJyA9PiAn4rOcJywKICAn4rOfJyA9PiAn4rOeJywKICAn4rOhJyA9PiAn4rOgJywKICAn4rOjJyA9PiAn4rOiJywKICAn4rOsJyA9PiAn4rOrJywKICAn4rOuJyA9PiAn4rOtJywKICAn4rOzJyA9PiAn4rOyJywKICAn4rSAJyA9PiAn4YKgJywKICAn4rSBJyA9PiAn4YKhJywKICAn4rSCJyA9PiAn4YKiJywKICAn4rSDJyA9PiAn4YKjJywKICAn4rSEJyA9PiAn4YKkJywKICAn4rSFJyA9PiAn4YKlJywKICAn4rSGJyA9PiAn4YKmJywKICAn4rSHJyA9PiAn4YKnJywKICAn4rSIJyA9PiAn4YKoJywKICAn4rSJJyA9PiAn4YKpJywKICAn4rSKJyA9PiAn4YKqJywKICAn4rSLJyA9PiAn4YKrJywKICAn4rSMJyA9PiAn4YKsJywKICAn4rSNJyA9PiAn4YKtJywKICAn4rSOJyA9PiAn4YKuJywKICAn4rSPJyA9PiAn4YKvJywKICAn4rSQJyA9PiAn4YKwJywKICAn4rSRJyA9PiAn4YKxJywKICAn4rSSJyA9PiAn4YKyJywKICAn4rSTJyA9PiAn4YKzJywKICAn4rSUJyA9PiAn4YK0JywKICAn4rSVJyA9PiAn4YK1JywKICAn4rSWJyA9PiAn4YK2JywKICAn4rSXJyA9PiAn4YK3JywKICAn4rSYJyA9PiAn4YK4JywKICAn4rSZJyA9PiAn4YK5JywKICAn4rSaJyA9PiAn4YK6JywKICAn4rSbJyA9PiAn4YK7JywKICAn4rScJyA9PiAn4YK8JywKICAn4rSdJyA9PiAn4YK9JywKICAn4rSeJyA9PiAn4YK+JywKICAn4rSfJyA9PiAn4YK/JywKICAn4rSgJyA9PiAn4YOAJywKICAn4rShJyA9PiAn4YOBJywKICAn4rSiJyA9PiAn4YOCJywKICAn4rSjJyA9PiAn4YODJywKICAn4rSkJyA9PiAn4YOEJywKICAn4rSlJyA9PiAn4YOFJywKICAn4rSnJyA9PiAn4YOHJywKICAn4rStJyA9PiAn4YONJywKICAn6pmBJyA9PiAn6pmAJywKICAn6pmDJyA9PiAn6pmCJywKICAn6pmFJyA9PiAn6pmEJywKICAn6pmHJyA9PiAn6pmGJywKICAn6pmJJyA9PiAn6pmIJywKICAn6pmLJyA9PiAn6pmKJywKICAn6pmNJyA9PiAn6pmMJywKICAn6pmPJyA9PiAn6pmOJywKICAn6pmRJyA9PiAn6pmQJywKICAn6pmTJyA9PiAn6pmSJywKICAn6pmVJyA9PiAn6pmUJywKICAn6pmXJyA9PiAn6pmWJywKICAn6pmZJyA9PiAn6pmYJywKICAn6pmbJyA9PiAn6pmaJywKICAn6pmdJyA9PiAn6pmcJywKICAn6pmfJyA9PiAn6pmeJywKICAn6pmhJyA9PiAn6pmgJywKICAn6pmjJyA9PiAn6pmiJywKICAn6pmlJyA9PiAn6pmkJywKICAn6pmnJyA9PiAn6pmmJywKICAn6pmpJyA9PiAn6pmoJywKICAn6pmrJyA9PiAn6pmqJywKICAn6pmtJyA9PiAn6pmsJywKICAn6pqBJyA9PiAn6pqAJywKICAn6pqDJyA9PiAn6pqCJywKICAn6pqFJyA9PiAn6pqEJywKICAn6pqHJyA9PiAn6pqGJywKICAn6pqJJyA9PiAn6pqIJywKICAn6pqLJyA9PiAn6pqKJywKICAn6pqNJyA9PiAn6pqMJywKICAn6pqPJyA9PiAn6pqOJywKICAn6pqRJyA9PiAn6pqQJywKICAn6pqTJyA9PiAn6pqSJywKICAn6pqVJyA9PiAn6pqUJywKICAn6pqXJyA9PiAn6pqWJywKICAn6pqZJyA9PiAn6pqYJywKICAn6pqbJyA9PiAn6pqaJywKICAn6pyjJyA9PiAn6pyiJywKICAn6pylJyA9PiAn6pykJywKICAn6pynJyA9PiAn6pymJywKICAn6pypJyA9PiAn6pyoJywKICAn6pyrJyA9PiAn6pyqJywKICAn6pytJyA9PiAn6pysJywKICAn6pyvJyA9PiAn6pyuJywKICAn6pyzJyA9PiAn6pyyJywKICAn6py1JyA9PiAn6py0JywKICAn6py3JyA9PiAn6py2JywKICAn6py5JyA9PiAn6py4JywKICAn6py7JyA9PiAn6py6JywKICAn6py9JyA9PiAn6py8JywKICAn6py/JyA9PiAn6py+JywKICAn6p2BJyA9PiAn6p2AJywKICAn6p2DJyA9PiAn6p2CJywKICAn6p2FJyA9PiAn6p2EJywKICAn6p2HJyA9PiAn6p2GJywKICAn6p2JJyA9PiAn6p2IJywKICAn6p2LJyA9PiAn6p2KJywKICAn6p2NJyA9PiAn6p2MJywKICAn6p2PJyA9PiAn6p2OJywKICAn6p2RJyA9PiAn6p2QJywKICAn6p2TJyA9PiAn6p2SJywKICAn6p2VJyA9PiAn6p2UJywKICAn6p2XJyA9PiAn6p2WJywKICAn6p2ZJyA9PiAn6p2YJywKICAn6p2bJyA9PiAn6p2aJywKICAn6p2dJyA9PiAn6p2cJywKICAn6p2fJyA9PiAn6p2eJywKICAn6p2hJyA9PiAn6p2gJywKICAn6p2jJyA9PiAn6p2iJywKICAn6p2lJyA9PiAn6p2kJywKICAn6p2nJyA9PiAn6p2mJywKICAn6p2pJyA9PiAn6p2oJywKICAn6p2rJyA9PiAn6p2qJywKICAn6p2tJyA9PiAn6p2sJywKICAn6p2vJyA9PiAn6p2uJywKICAn6p26JyA9PiAn6p25JywKICAn6p28JyA9PiAn6p27JywKICAn6p2/JyA9PiAn6p2+JywKICAn6p6BJyA9PiAn6p6AJywKICAn6p6DJyA9PiAn6p6CJywKICAn6p6FJyA9PiAn6p6EJywKICAn6p6HJyA9PiAn6p6GJywKICAn6p6MJyA9PiAn6p6LJywKICAn6p6RJyA9PiAn6p6QJywKICAn6p6TJyA9PiAn6p6SJywKICAn6p6XJyA9PiAn6p6WJywKICAn6p6ZJyA9PiAn6p6YJywKICAn6p6bJyA9PiAn6p6aJywKICAn6p6dJyA9PiAn6p6cJywKICAn6p6fJyA9PiAn6p6eJywKICAn6p6hJyA9PiAn6p6gJywKICAn6p6jJyA9PiAn6p6iJywKICAn6p6lJyA9PiAn6p6kJywKICAn6p6nJyA9PiAn6p6mJywKICAn6p6pJyA9PiAn6p6oJywKICAn772BJyA9PiAn77yhJywKICAn772CJyA9PiAn77yiJywKICAn772DJyA9PiAn77yjJywKICAn772EJyA9PiAn77ykJywKICAn772FJyA9PiAn77ylJywKICAn772GJyA9PiAn77ymJywKICAn772HJyA9PiAn77ynJywKICAn772IJyA9PiAn77yoJywKICAn772JJyA9PiAn77ypJywKICAn772KJyA9PiAn77yqJywKICAn772LJyA9PiAn77yrJywKICAn772MJyA9PiAn77ysJywKICAn772NJyA9PiAn77ytJywKICAn772OJyA9PiAn77yuJywKICAn772PJyA9PiAn77yvJywKICAn772QJyA9PiAn77ywJywKICAn772RJyA9PiAn77yxJywKICAn772SJyA9PiAn77yyJywKICAn772TJyA9PiAn77yzJywKICAn772UJyA9PiAn77y0JywKICAn772VJyA9PiAn77y1JywKICAn772WJyA9PiAn77y2JywKICAn772XJyA9PiAn77y3JywKICAn772YJyA9PiAn77y4JywKICAn772ZJyA9PiAn77y5JywKICAn772aJyA9PiAn77y6JywKICAn8JCQqCcgPT4gJ/CQkIAnLAogICfwkJCpJyA9PiAn8JCQgScsCiAgJ/CQkKonID0+ICfwkJCCJywKICAn8JCQqycgPT4gJ/CQkIMnLAogICfwkJCsJyA9PiAn8JCQhCcsCiAgJ/CQkK0nID0+ICfwkJCFJywKICAn8JCQricgPT4gJ/CQkIYnLAogICfwkJCvJyA9PiAn8JCQhycsCiAgJ/CQkLAnID0+ICfwkJCIJywKICAn8JCQsScgPT4gJ/CQkIknLAogICfwkJCyJyA9PiAn8JCQiicsCiAgJ/CQkLMnID0+ICfwkJCLJywKICAn8JCQtCcgPT4gJ/CQkIwnLAogICfwkJC1JyA9PiAn8JCQjScsCiAgJ/CQkLYnID0+ICfwkJCOJywKICAn8JCQtycgPT4gJ/CQkI8nLAogICfwkJC4JyA9PiAn8JCQkCcsCiAgJ/CQkLknID0+ICfwkJCRJywKICAn8JCQuicgPT4gJ/CQkJInLAogICfwkJC7JyA9PiAn8JCQkycsCiAgJ/CQkLwnID0+ICfwkJCUJywKICAn8JCQvScgPT4gJ/CQkJUnLAogICfwkJC+JyA9PiAn8JCQlicsCiAgJ/CQkL8nID0+ICfwkJCXJywKICAn8JCRgCcgPT4gJ/CQkJgnLAogICfwkJGBJyA9PiAn8JCQmScsCiAgJ/CQkYInID0+ICfwkJCaJywKICAn8JCRgycgPT4gJ/CQkJsnLAogICfwkJGEJyA9PiAn8JCQnCcsCiAgJ/CQkYUnID0+ICfwkJCdJywKICAn8JCRhicgPT4gJ/CQkJ4nLAogICfwkJGHJyA9PiAn8JCQnycsCiAgJ/CQkYgnID0+ICfwkJCgJywKICAn8JCRiScgPT4gJ/CQkKEnLAogICfwkJGKJyA9PiAn8JCQoicsCiAgJ/CQkYsnID0+ICfwkJCjJywKICAn8JCRjCcgPT4gJ/CQkKQnLAogICfwkJGNJyA9PiAn8JCQpScsCiAgJ/CQkY4nID0+ICfwkJCmJywKICAn8JCRjycgPT4gJ/CQkKcnLAogICfwkaOAJyA9PiAn8JGioCcsCiAgJ/CRo4EnID0+ICfwkaKhJywKICAn8JGjgicgPT4gJ/CRoqInLAogICfwkaODJyA9PiAn8JGioycsCiAgJ/CRo4QnID0+ICfwkaKkJywKICAn8JGjhScgPT4gJ/CRoqUnLAogICfwkaOGJyA9PiAn8JGipicsCiAgJ/CRo4cnID0+ICfwkaKnJywKICAn8JGjiCcgPT4gJ/CRoqgnLAogICfwkaOJJyA9PiAn8JGiqScsCiAgJ/CRo4onID0+ICfwkaKqJywKICAn8JGjiycgPT4gJ/CRoqsnLAogICfwkaOMJyA9PiAn8JGirCcsCiAgJ/CRo40nID0+ICfwkaKtJywKICAn8JGjjicgPT4gJ/CRoq4nLAogICfwkaOPJyA9PiAn8JGirycsCiAgJ/CRo5AnID0+ICfwkaKwJywKICAn8JGjkScgPT4gJ/CRorEnLAogICfwkaOSJyA9PiAn8JGisicsCiAgJ/CRo5MnID0+ICfwkaKzJywKICAn8JGjlCcgPT4gJ/CRorQnLAogICfwkaOVJyA9PiAn8JGitScsCiAgJ/CRo5YnID0+ICfwkaK2JywKICAn8JGjlycgPT4gJ/CRorcnLAogICfwkaOYJyA9PiAn8JGiuCcsCiAgJ/CRo5knID0+ICfwkaK5JywKICAn8JGjmicgPT4gJ/CRoronLAogICfwkaObJyA9PiAn8JGiuycsCiAgJ/CRo5wnID0+ICfwkaK8JywKICAn8JGjnScgPT4gJ/CRor0nLAogICfwkaOeJyA9PiAn8JGivicsCiAgJ/CRo58nID0+ICfwkaK/JywKKTsKCiRyZXN1bHQgPSYgJGRhdGE7CnVuc2V0KCRkYXRhKTsKCnJldHVybiAkcmVzdWx0Owo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXFBocDcwIGFzIHA7CgppZiAoUEhQX1ZFUlNJT05fSUQgPCA3MDAwMCkgewogICAgaWYgKCFkZWZpbmVkKCdQSFBfSU5UX01JTicpKSB7CiAgICAgICAgZGVmaW5lKCdQSFBfSU5UX01JTicsIH5QSFBfSU5UX01BWCk7CiAgICB9CiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnaW50ZGl2JykpIHsKICAgICAgICBmdW5jdGlvbiBpbnRkaXYoJGRpdmlkZW5kLCAkZGl2aXNvcikgeyByZXR1cm4gcFxQaHA3MDo6aW50ZGl2KCRkaXZpZGVuZCwgJGRpdmlzb3IpOyB9CiAgICB9CiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygncHJlZ19yZXBsYWNlX2NhbGxiYWNrX2FycmF5JykpIHsKICAgICAgICBmdW5jdGlvbiBwcmVnX3JlcGxhY2VfY2FsbGJhY2tfYXJyYXkoYXJyYXkgJHBhdHRlcm5zLCAkc3ViamVjdCwgJGxpbWl0ID0gLTEsICYkY291bnQgPSAwKSB7IHJldHVybiBwXFBocDcwOjpwcmVnX3JlcGxhY2VfY2FsbGJhY2tfYXJyYXkoJHBhdHRlcm5zLCAkc3ViamVjdCwgJGxpbWl0LCAkY291bnQpOyB9CiAgICB9CiAgICBpZiAoIWZ1bmN0aW9uX2V4aXN0cygnZXJyb3JfY2xlYXJfbGFzdCcpKSB7CiAgICAgICAgZnVuY3Rpb24gZXJyb3JfY2xlYXJfbGFzdCgpIHsgcmV0dXJuIHBcUGhwNzA6OmVycm9yX2NsZWFyX2xhc3QoKTsgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1waHA3MCIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGJhY2twb3J0aW5nIHNvbWUgUEhQIDcuMCsgZmVhdHVyZXMgdG8gbG93ZXIgUEhQIHZlcnNpb25zIiwKICAgICJrZXl3b3JkcyI6IFsicG9seWZpbGwiLCAic2hpbSIsICJjb21wYXRpYmlsaXR5IiwgInBvcnRhYmxlIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTUuMy4zIiwKICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiOiAifjEuMHx+Mi4wIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7ICJTeW1mb255XFxQb2x5ZmlsbFxcUGhwNzBcXCI6ICIiIH0sCiAgICAgICAgImZpbGVzIjogWyAiYm9vdHN0cmFwLnBocCIgXSwKICAgICAgICAiY2xhc3NtYXAiOiBbICJSZXNvdXJjZXMvc3R1YnMiIF0KICAgIH0sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAiZGV2IiwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjgtZGV2IgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1LTIwMTggRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Php70.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXFBocDcwOwoKLyoqCiAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgUGhwNzAKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnRkaXYoJGRpdmlkZW5kLCAkZGl2aXNvcikKICAgIHsKICAgICAgICAkZGl2aWRlbmQgPSBzZWxmOjppbnRBcmcoJGRpdmlkZW5kLCBfX0ZVTkNUSU9OX18sIDEpOwogICAgICAgICRkaXZpc29yID0gc2VsZjo6aW50QXJnKCRkaXZpc29yLCBfX0ZVTkNUSU9OX18sIDIpOwoKICAgICAgICBpZiAoMCA9PT0gJGRpdmlzb3IpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxEaXZpc2lvbkJ5WmVyb0Vycm9yKCdEaXZpc2lvbiBieSB6ZXJvJyk7CiAgICAgICAgfQogICAgICAgIGlmICgtMSA9PT0gJGRpdmlzb3IgJiYgflBIUF9JTlRfTUFYID09PSAkZGl2aWRlbmQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxBcml0aG1ldGljRXJyb3IoJ0RpdmlzaW9uIG9mIFBIUF9JTlRfTUlOIGJ5IC0xIGlzIG5vdCBhbiBpbnRlZ2VyJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCRkaXZpZGVuZCAtICgkZGl2aWRlbmQgJSAkZGl2aXNvcikpIC8gJGRpdmlzb3I7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmVnX3JlcGxhY2VfY2FsbGJhY2tfYXJyYXkoYXJyYXkgJHBhdHRlcm5zLCAkc3ViamVjdCwgJGxpbWl0ID0gLTEsICYkY291bnQgPSAwKQogICAgewogICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgJHJlc3VsdCA9IChzdHJpbmcpICRzdWJqZWN0OwogICAgICAgIGlmICgwID09PSAkbGltaXQgPSBzZWxmOjppbnRBcmcoJGxpbWl0LCBfX0ZVTkNUSU9OX18sIDMpKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHBhdHRlcm5zIGFzICRwYXR0ZXJuID0+ICRjYWxsYmFjaykgewogICAgICAgICAgICAkcmVzdWx0ID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRwYXR0ZXJuLCAkY2FsbGJhY2ssICRyZXN1bHQsICRsaW1pdCwgJGMpOwogICAgICAgICAgICAkY291bnQgKz0gJGM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVycm9yX2NsZWFyX2xhc3QoKQogICAgewogICAgICAgIHN0YXRpYyAkaGFuZGxlcjsKICAgICAgICBpZiAoISRoYW5kbGVyKSB7CiAgICAgICAgICAgICAkaGFuZGxlciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgICAgfQogICAgICAgIHNldF9lcnJvcl9oYW5kbGVyKCRoYW5kbGVyKTsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignJyk7CiAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaW50QXJnKCR2YWx1ZSwgJGNhbGxlciwgJHBvcykKICAgIHsKICAgICAgICBpZiAoXGlzX2ludCgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQogICAgICAgIGlmICghXGlzX251bWVyaWMoJHZhbHVlKSB8fCBQSFBfSU5UX01BWCA8PSAoJHZhbHVlICs9IDApIHx8IH5QSFBfSU5UX01BWCA+PSAkdmFsdWUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxUeXBlRXJyb3Ioc3ByaW50ZignJXMoKSBleHBlY3RzIHBhcmFtZXRlciAlZCB0byBiZSBpbnRlZ2VyLCAlcyBnaXZlbicsICRjYWxsZXIsICRwb3MsIGdldHR5cGUoJHZhbHVlKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChpbnQpICR2YWx1ZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBQb2x5ZmlsbCAvIFBocDcwCj09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgZmVhdHVyZXMgdW5hdmFpbGFibGUgaW4gcmVsZWFzZXMgcHJpb3IgdG8gUEhQIDcuMDoKCi0gW2BpbnRkaXZgXShodHRwOi8vcGhwLm5ldC9pbnRkaXYpCi0gW2BwcmVnX3JlcGxhY2VfY2FsbGJhY2tfYXJyYXlgXShodHRwOi8vcGhwLm5ldC9wcmVnX3JlcGxhY2VfY2FsbGJhY2tfYXJyYXkpCi0gW2BlcnJvcl9jbGVhcl9sYXN0YF0oaHR0cDovL3BocC5uZXQvZXJyb3JfY2xlYXJfbGFzdCkKLSBgcmFuZG9tX2J5dGVzYCBhbmQgYHJhbmRvbV9pbnRgIChmcm9tIFtwYXJhZ29uaWUvcmFuZG9tX2NvbXBhdF0oaHR0cHM6Ly9naXRodWIuY29tL3BhcmFnb25pZS9yYW5kb21fY29tcGF0KSkKLSBbYCpFcnJvcmAgdGhyb3dhYmxlIGNsYXNzZXNdKGh0dHA6Ly9waHAubmV0L0Vycm9yKQotIFtgUEhQX0lOVF9NSU5gXShodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vcmVzZXJ2ZWQuY29uc3RhbnRzLnBocCNjb25zdGFudC5waHAtaW50LW1pbikKLSBgU2Vzc2lvblVwZGF0ZVRpbWVzdGFtcEhhbmRsZXJJbnRlcmZhY2VgCgpNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUKW21haW4gUG9seWZpbGwgUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC9ibG9iL21hc3Rlci9SRUFETUUubWQpLgoKQ29tcGF0aWJpbGl0eSBub3Rlcwo9PT09PT09PT09PT09PT09PT09CgpUbyB3cml0ZSBwb3J0YWJsZSBjb2RlIGJldHdlZW4gUEhQNSBhbmQgUEhQNywgc29tZSBjYXJlIG11c3QgYmUgdGFrZW46Ci0gYFwqRXJyb3JgIGV4Y2VwdGlvbnMgbXVzdCBiZSBjYXVnaHQgYmVmb3JlIGBcRXhjZXB0aW9uYDsKLSBhZnRlciBjYWxsaW5nIGBlcnJvcl9jbGVhcl9sYXN0KClgLCB0aGUgcmVzdWx0IG9mIGAkZSA9IGVycm9yX2dldF9sYXN0KClgIG11c3QgYmUKICB2ZXJpZmllZCB1c2luZyBgaXNzZXQoJGVbJ21lc3NhZ2UnXVswXSlgIGluc3RlYWQgb2YgYG51bGwgIT09ICRlYC4KCkxpY2Vuc2UKPT09PT09PQoKVGhpcyBsaWJyYXJ5IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/ArithmeticError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIEFyaXRobWV0aWNFcnJvciBleHRlbmRzIEVycm9yCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/AssertionError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIEFzc2VydGlvbkVycm9yIGV4dGVuZHMgRXJyb3IKewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/DivisionByZeroError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIERpdmlzaW9uQnlaZXJvRXJyb3IgZXh0ZW5kcyBFcnJvcgp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/Error.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIEVycm9yIGV4dGVuZHMgRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/ParseError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFBhcnNlRXJyb3IgZXh0ZW5kcyBFcnJvcgp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/SessionUpdateTimestampHandlerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmludGVyZmFjZSBTZXNzaW9uVXBkYXRlVGltZXN0YW1wSGFuZGxlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIENoZWNrcyBpZiBhIHNlc3Npb24gaWRlbnRpZmllciBhbHJlYWR5IGV4aXN0cyBvciBub3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZGF0ZUlkKCRrZXkpOwoKICAgIC8qKgogICAgICogVXBkYXRlcyB0aGUgdGltZXN0YW1wIG9mIGEgc2Vzc2lvbiB3aGVuIGl0cyBkYXRhIGRpZG4ndCBjaGFuZ2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWwKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVwZGF0ZVRpbWVzdGFtcCgka2V5LCAkdmFsKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Resources/stubs/TypeError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFR5cGVFcnJvciBleHRlbmRzIEVycm9yCnsKfQo=]]></data>
	</file>
</module>
