<?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.0.0</version>
    <mincmsversion>2.1.5</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgaXMgdGhpcz88aDM+CjxwPlRoaXMgbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgcHJvdmlkZXMgYSBzaW1wbGUgYW5kIGNvbnZlbmllbnQgd2F5IHRvOjwvcD4KPHVsPgogICA8bGk+QWxsb3cgbG9nZ2VkIGluIEZFVSB1c2VycyB0byBzdWJzY3JpYmUgdG8gcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgIDxsaT5TZW5kIHB1c2ggbm90aWZpY2F0aW9ucyB0byBhIGdyb3VwIG9mIEZFVSB1c2VycyAod2hvIGhhdmUgc3Vic2NyaWJlZCB3aXRoIG9uZSBvciBtb3JlIGRldmljZXMpLjwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gV2ViLXB1c2ggbm90aWZpY2F0aW9ucyBhcmUgbm90IHRoZSBzYW1lIGFzIG1vYmlsZSBwdXNoIG5vdGlmaWNhdGlvbnMgb24gQW5kcm9pZCBhbmQgSU9TICh3aGljaCBib3RoIHVzZSBkaWZmZXJlbnQgbWV0aG9kb2xvZ2llcykuICBUaGlzIHRlY2hub2xvZ3kgaXMgcHJvdmlkZWQgYnkgdGhlIGJyb3dzZXIncyBqYXZhc2NyaXB0IGVuZ2luZS4gICBUaGVyZSBpcyBzdXBwb3J0IGZvciB3ZWItcHVzaCBvbiBBbmRyb2lkIGRldmljZXMgdXNpbmcgRmlyZWZveCBvciBDaHJvbWUgYnJvd3NlcnMuPC9wPgoKPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgo8dWw+CiAgPGxpPkluIHlvdXIgcGFnZSB0ZW1wbGF0ZSAob3Igb24gc3BlY2lmaWVkIHBhZ2VzKSBjYWxsIDxjb2RlPntDR1dlYlB1c2ggYWN0aW9uPWpzfTwvY29kZT4uCiAgICAgPHA+VGhpcyB3aWxsIGluc2VydCB0aGUgamF2YXNjcmlwdCB0byByZWdpc3RlciB0aGUgc2VydmljZSB3b3JrZXIgYW5kIHRoZSByZXF1aXJlZCBqYXZhc2NyaXB0IHRvIHdvcmsgd2l0aCBzdWJzY3JpcHRpb25zLjxwPgogIDwvbGk+CiAgPGxpPk9uIGF0IGxlYXN0IG9uZSBwYWdlIHRoYXQgaXMgdmlzaWJsZSB0byBGRVUgdXNlcnMgY2FsbCA8Y29kZT57Q0dXZWJQdXNoIGFjdGlvbj1zdWJzY3JpYmV9PC9jb2RlPi4KICAgICA8cD5UaGlzIHdpbGwgZGlzcGxheSBhIHNpbXBsZSBidXR0b24gdGhhdCBhbGxvd3MgRkVVIHVzZXJzIHRvIHN1YnNjcmliZSBhbmQgdW5zdWJzY3JpYmUgdG8gd2ViIG5vZmljYXRpb25zIGZyb20geW91ciB3ZWJzaXRlLgogICAgICAgIElmIHRoZSBicm93c2VyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggd2ViLXB1c2ggbm90aWZpY2F0aW9ucyB0aGVuIHRoZSBidXR0b24gd2lsbCBiZSBkaXNhYmxlZCwgYW5kIHRoZSB0aXRsZSBvZiB0aGUgYnV0dG9uIHdpbGwgc3RhdGUgdGhlIHN0YXR1cy4KICAgICA8L3A+CiAgPC9saT4KICA8bGk+VmlzaXQgdGhlIG1vZHVsZSdzIGFkbWluIHBhbmVsIGFuZCBzZXQgYW4gb3B0aW9uYWwgdGl0bGUsIGFuZCBpY29uLgogICAgIDxwPlRoZSB0aXRsZSBzaG91bGQgYmUgcmVsYXRpdmVseSBicmllZi4gIElmIG9uZSBpcyBub3Qgc3VwcGxpZWQsIGFuZCBub3Qgc3VwcGxpZWQgd2l0aCBpbmRpdmlkdWFsIG1lc3NhZ2VzLCB0aGVuIHRoZSBzaXRlIG5hbWUgd2lsbCBiZSB1c2VkLjwvcD4KICAgICA8cD5UaGUgaWNvbiwgaWYgdXNlZCBzaG91bGQgYmUgYSBzcXVhcmUgaW1hZ2Ugb2YgYXQgbGVhc3QgOTZ4OTYgcGl4ZWxzLCBidXQgbm90IHRvbyBsYXJnZSBlaXRoZXIuICBJIHJlY29tbWVuZCBubyBsYXJnZXIgdGhhbiAyNTZ4MjU2IGF0IHRoaXMgdGltZS48L3A+CiAgPC9saT4KICA8bGk+VmlzaXQgdGhlIHBhZ2UgeW91IGNyZWF0ZWQgaW4gc3RlcCAyIGFib3ZlIHdpdGggYSBzdXBwb3J0ZWQgYnJvd3NlciwgbG9naW4gdG8gdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlLCBhbmQgc3Vic2NyaWJlIHRvIHB1c2ggbm90aWZpY2F0aW9ucy48L2xpPgogIDxsaT5Vc2UgdGhlIG1vZHVsZSdzIGFkbWluIHBhbmVsIHRvIHNlbmQgYSB0ZXN0IG5vdGlmaWNhdGlvbi48L2xpPgogIDxsaT5Zb3UgY2FuIG9wdGlvbmFsbHkgdXNlIDxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY21zY2xpIj5jbXNjbGk8L2E+IHdlYnB1c2gtZmV1LWdyb3VwPC9jb2RlPiB0byBzZW5kIHB1c2ggbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuPC9saT4KPC91bD4KCjxoMz5TZXR0aW5ncyBhbmQgU2VydmljZSBXb3JrZXI8L2gzPgo8cD5UaGUgc2V0dGluZ3MgdGFiIGluIHRoaXMgbW9kdWxlJ3MgYWRtaW4gcGFuZWwgYWxsb3dzIHNldHRpbmcgYSB0aXRsZSwgYW5kIGFuIGljb24uPHA+CjxwPlRoZSB0aXRsZSBpcyBhIHN0cmluZyB0byB1c2UgYXMgdGhlIGRlZmF1bHQgdGl0bGUgZm9yIG5vdGlmaWNhdGlvbnMgaWYgaXQgaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQuICBJZiB0aGlzIGZpZWxkIGlzIGxlZnQgZW1wdHkgdGhlbiB0aGUgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZC48L3A+CjxwPlRoZSBpY29uIGlzIGEgVVJMIHRvIGEgc3F1YXJlIGljb24gKG1pbmltdW0gcmVjb21tZW5kZWQgc2l6ZSBvZiA5Nng5NikgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBvbiBlYWNoIGFuZCBldmVyeSBub3RpZmljYXRpb24uPC9wPgo8cD5FYWNoIHRpbWUgdGhlc2Ugc2V0dGluZ3MgYXJlIGNoYW5nZWQgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpcyByZS1nZW5lcmF0ZWQsPC9wPgo8cD5XaGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaXMgcmUtZ2VuZXJhdGVkIGl0IG1heSBub3QgYmUgcmVmcmVzaGVkIG9uIHRoZSB1c2VycyBicm93c2VyIHVudGlsIHRoZSBuZXh0IHRpbWUgYSB2aXNpdHMgYSBwYWdlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGphdmFzY3JpcHQgdGFncyB3aGVyZSB0aGUgc2VydmljZSB3b3JrZXIgaXMgcmVnaXN0ZXJlZC48L3A+Cgo8aDM+U2VuZGluZyB3ZWItcHVzaCBub3RpZmZpY2F0aW9ucy48L2gzPgo8cD5BIHRhYiBpbiB0aGUgbW9kdWxlJ3MgYWRtaW4gcGFuZWwgYWxsb3dzIHNlbmRpbmcgYSB3ZWIgcHVzaCBub3RpZmljYXRpb24gdG8gYW4gRkVVIGdyb3VwLiAgSXQgcHJvdmlkZXMgZm9yIGZpZWxkcyB0byBzcGVjaWZ5IGEgcmVxdWlyZWQgbWVzc2FnZSBib2R5ICh1cCB0byAxMDAwIGNoYXJzKSwgYW4gb3B0aW9uYWwgdGl0bGUsIGFuZCBhIFVSTCB0byBvcGVuIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBpcyBjbGlja2VkIG9uLjwvcD4KCjxoMz5SZXF1aXJlbWVudHM6PC9oMz4KPHVsPgogIDxsaT5Zb3VyIHNpdGUgbXVzdCBiZSB1c2luZyBIVFRQUy48L2xpPgogIDxsaT5UaGUgaHR0cCBwcm9jZXNzIG11c3QgYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgcm9vdCBvZiB5b3VyIENNU01TIGluc3RhbGxhdGlvbi48L2xpPgogIDxsaT5PcGVuU1NMLCBjdXJsLCBtdWx0aWJ5dGUgc3VwcG9ydCwgbWNyeXB0LCBhbmQgb3RoZXIgbGlicmFyaWVzIGluc3RhbGxlZCBpbiB0aGUgUEhQIGVudmlyb25tZW50LjwvbGk+CiAgPGxpPkluIG9yZGVyIHRvIHJlY2VpdmUgd2ViLXB1c2ggbm90aWZpY2F0aW9ucywgdXNlcnMgbXVzdCBoYXZlIHRoZSBzdXBwb3J0ZWQgYnJvd3NlciB0aGF0IHRoZXkgdXNlZCB0byBzdWJzY3JpYmUgb3BlbiBhbmQgcnVubmluZy4gIEJ1dCB0aGV5IGRvIG5vdCBoYXZlIHRvIGhhdmUgYSB0YWIgb3IgYSB3aW5kb3cgYWN0aXZlbHkgcG9pbnRpbmcgdG8geW91ciB3ZWJzaXRlLjwvbGk+CjwvdWw+Cgo8aDM+QXZhaWxhYmxlIEFjdGlvbnM8L2gzPgo8dWw+CiAgPGxpPmpzIC0gSW5zZXJ0cyB0aGUgamF2YXNjcmlwdCByZXF1aXJlZCB0byByZWdpc3RlciBhbmQgYWN0aXZhdGUgdGhlIHNlcnZpY2Ugd29ya2VyLCAgYW5kIHRvIHdvcmsgd2l0aCB0aGUgc3Vic2NyaXB0aW9uIFVJLjwvbGk+CiAgPGxpPnN1YnNjcmliZSAtIERpc3BsYXlzIGEgYnV0dG9uIHRoYXQgYWxsb3dzIGEgbG9nZ2VkIGluIEZFVSB1c2VyIHRvIHN1YnNjcmliZSBhbmQgdW5zdWJzY3JpYmUuICBXaWxsIGFsc28gZGlzcGxheSBhIHN0YXR1cyBpZiB0aGUgYnJvd3NlciBpcyBub3QgY29tcGF0aWJsZS48L2xpPgogIDxsaT51bnN1YnNjcmliZV9hbGwgLSBBIHNpbXBsZSBhY3Rpb24gdG8gYWxsb3cgYSBsb2dnZWQgaW4gRkVVIHVzZXIgdG8gdW5zdWJzY3JpYmUgZnJvbSBhbGwgbm90aWZpY2F0aW9ucyBmcm9tIGFsbCBvZiBoaXMgcmVnaXN0ZXJlZCBkZXZpY2VzLiAgT25jZSBjb21wbGV0ZSwgdGhpcyBhY3Rpb24gd2lsbCByZWRpcmVjdCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjb250ZW50IHBhZ2UuPC9saT4KPC91bD4KCjxoMz5Ccm93c2VyIGNvbXBhdGliaWxpdHk8L2gzPgo8cD5DdXJyZW50bHkgd2ViLXB1c2ggdGVjaG5vbG9neSBpcyBzdXBwb3J0ZWQgYnkgb25seSBzb21lIGJyb3dzZXJzLiAgIE1vc3Qgb2YgdGhlc2UgYXJlOjwvcD4KPHVsPgogICA8bGk+Q2hyb21lIG9uIEFuZHJvaWQsIFdpbmRvd3MsIExpbnV4LCBhbmQgTWFjT1M8L2xpPgogICA8bGk+RmlyZWZveCBvbiBBbmRyb2lkLCBXaW5kb3dzLCBMaW51eCwgYW5kIE1hY09TPC9saT4KICAgPGxpPlNhZmFyaSBvbiBNYWNPUyBhbmQgTGludXg8L2xpPgo8L3VsPgo8cD5Jb3Mgc3VwcG9ydCBpcyBwdXJwb3J0ZWRseSAmcXVvdDtpbiBkZXZlbG9wbWVudCZxdW90OyBzbyBzdGF5IHR1bmVkLjwvcD4KCjxoMz5DYXZlYXRzPC9oMz4KPHA+U2VuZGluZyBsYXJnZSBhbW91bnRzIG9mIG5vdGlmaWNhdGlvbnMgY2FuIGJlIHBhcnRpY3VsYXJseSBzbG93IGR1ZSB0byB0aGUgbmVlZCB0byBwZXJmb3JtIG11bHRpcGxlIG91dGdvaW5nIHJlcXVlc3RzLiAgVGhlcmVmb3JlIGl0IGlzIGJlc3QgaWYgeW91IHVzZSB0aGUgIndlYnB1c2gtZmV1LWdyb3VwIiBjb21tYW5kIHByb3ZpZGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY21zY2xpIj5jbXNjbGk8L2E+LiBBcyB0aGVyZSBhcmUgbm8gdGltZSByZXN0cmljdGlvbnMgaW4gdGhlIENMSSBlbnZpcm9ubWVudCBhcyBvcHBvc2VkIHRvIHRoZSB3ZWIgZW52aXJvbm1lbnQuPC9wPgoKPGgzPkphdmFzY3JpcHQgQVBJPC9oMz4KPHA+YWxsIGZ1bmN0aW9ucyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgZ2xvYmFsIGphdmFzY3JpcHQgb2JqZWN0IG5hbWVkICZxdW90O2NnV2ViUHVzaCZxdW90Oy4gIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBmdW5jdGlvbnMgYXJlOjwvcD4KPHVsPgogIDxsaT48Y29kZT5ib29sIGNnV2ViUHVzaC5pc19zdWJzY3JpYmVkKCk8L2NvZGU+IC0gQSBmdW5jdGlvbiB0byByZXR1cm4gaWYgdGhlIHVzZXIgaXMgc3Vic2NyaWJlZCBvciBub3QuICBXaWxsIHJldHVybiB0cnVlIGlmIHRoZSB1c2VyIGhhcyBjb21wbGV0ZWQgYWxsIHN0ZXBzIGluIHRoaXMgYnJvd3NlciB0byBzdWJzY3JpYmUgdG8gcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLmlzX2NvbXBhdGlibGUoKTwvY29kZT4gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgYnJvd3NlciBzdXBwb3J0cyB3ZWItcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLmlzX2RlbmllZCgpPC9jb2RlPiAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBoYXMgYWN0aXZlbHkgZGVuaWVkIHB1c2ggbm90aWZpY2F0aW9ucy48L2xpPgogIDxsaT48Y29kZT5ib29sIGNnV2ViUHVzaC5zdWJzY3JpYmUoKTwvY29kZT4gLSBXaWxsIHN1YnNjcmliZSBhIHVzZXIsIGlmIHRoZXkgaGF2ZSBub3QgZXhwbGljaXRseSBibG9ja2VkIHB1c2ggbm90aWZpY2F0aW9ucyBBTkQgdGhlIGN1cnJlbnQgYnJvd3NlciBzdXBwb3J0cyB3ZWItcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLnVuc3Vic2NyaWJlKCk8L2NvZGU+IC0gV2lsbCB1bnN1YnNjcmliZSBhIHN1YnNjcmliZWQgdXNlciwgaWYgdGhlIGJyb3dzZXIgcGVybWl0cyBpdC48L2xpPgo8L3VsPgoKPGgzPlBIUCBBUEk8L2gzPgo8cD5UaGlzIG1vZHVsZSBoYXMgYSBzaW1wbGUgQVBJIHRvIGFsbG93IGNyZWF0aW5nIGFuZCBzZW5kaW5nIHdlYi1wdXNoIG5vdGlmaWN0aW9ucy4gICBEb2N1bWVudGF0aW9uIGNvbWluZyBzb29uLjwvcD4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhlIG1vZHVsZSBhdXRob3IgaXMgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Zyb250ZW5kdXNlcnMiPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjU2LjI8L2xpPjxsaT5Gcm9udEVuZFVzZXJzID0mZ3Q7IDIuNS4yPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC4wPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgogICA8bGk+VmVyc2lvbiAxLjAuMCAtIEluaXRpYWwgcmVsZWFzZS48L2xpPgo8L3VsPgo8YnIgLz4=]]></about>
	<description><![CDATA[-- Missing Languagestring: moddescription --]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.56.2</requiredversion>
	</requires>
	<requires>
	  <requiredname>FrontEndUsers</requiredname>
	  <requiredversion>2.5.2</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[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oIENHV2ViUHVzaDo6U0VORF9QRVJNICkgKSBleGl0OwoKJG1zZyA9IG5ldyBcQ0dXZWJQdXNoXEZldUdyb3VwUHVzaE1lc3NhZ2U7CmlmKCBcY2dlX3BhcmFtOjpleGlzdHMoJHBhcmFtcywnc3VibWl0JykgKSB7CiAgICB0cnkgewogICAgICAgICRtc2cgPSAkbXNnLT5hZGp1c3RXaXRoKCAndGl0bGUnLCBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCAkcGFyYW1zLCAndGl0bGUnKSApOwogICAgICAgICRtc2cgPSAkbXNnLT5hZGp1c3RXaXRoKCAnYm9keScsIFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICdib2R5JykgKTsKICAgICAgICAkbXNnID0gJG1zZy0+YWRqdXN0V2l0aCggJ3VybCcsIFxjZ2VfcGFyYW06OmdldF9zdHJpbmcoICRwYXJhbXMsICd1cmwnKSApOwogICAgICAgICRtc2cgPSAkbXNnLT5hZGp1c3RXaXRoKCAndG9waWMnLCBcY2dlX3BhcmFtOjpnZXRfc3RyaW5nKCAkcGFyYW1zLCAndG9waWMnKSApOwogICAgICAgICRnaWQgPSBcY2dlX3BhcmFtOjpnZXRfaW50KCAkcGFyYW1zLCAnZmV1X2dyb3VwJyk7CgogICAgICAgIGlmKCAhJG1zZy0+Ym9keSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigkdGhpcy0+TGFuZygnZXJyX2JvZHlyZXF1aXJlZCcpKTsKCiAgICAgICAgJGRpc3BhdGNoZXIgPSBuZXcgXENHV2ViUHVzaFxXZWJQdXNoRGlzcGF0Y2hlciggJG1zZyApOwogICAgICAgICRuX3NlbnQgPSAkZGlzcGF0Y2hlci0+c2VuZF90b19mZXVfZ3JvdXAoICRnaWQgKTsKCiAgICAgICAgJHRoaXMtPlNldE1lc3NhZ2UoICR0aGlzLT5MYW5nKCdwdXNoX3N1Y2Nlc3NmdWxfbicsICRuX3NlbnQpICk7CiAgICAgICAgJHRoaXMtPlJlZGlyZWN0VG9UYWIoKTsKICAgIH0KICAgIGNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgICAgIGRlYnVnX2Rpc3BsYXkoICRlICk7IGRpZSgpOwogICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoICRlICk7CiAgICB9Cn0KCiR0cGwgPSAkdGhpcy0+Q3JlYXRlU21hcnR5VGVtcGxhdGUoJ2FkbWluX3B1c2gudHBsJyk7CiR0cGwtPmFzc2lnbignZGF0YScsJG1zZyk7CiR0cGwtPmRpc3BsYXkoKTs=]]></data>
	</file>
	<file>
	  <filename>/action.ajax_subscribe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGhhbmRsZXJzID0gb2JfbGlzdF9oYW5kbGVycygpOwpmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfQoKdHJ5IHsKICAgICRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKCBNT0RfRlJPTlRFTkRVU0VSUyApOwogICAgaWYoICEkZmV1ICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignRkVVIG1vZHVsZSBub3QgZm91bmQnKTsKICAgICR1aWQgPSAkZmV1LT5Mb2dnZWRJbklkKCk7CiAgICBpZiggJHVpZCA8IDEgKSB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VzZXIgeHh4IG5vdCBsb2dnZWQgaW4nKTsKCiAgICAkc3Vic2NyaXB0aW9uID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJ3BocDovL2lucHV0JyksIHRydWUpOwogICAgaWYgKCFpc3NldCgkc3Vic2NyaXB0aW9uWydlbmRwb2ludCddKSkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigiTm90IGEgc3Vic2NyaXB0aW9uIik7CgogICAgJHN1YnNjcmlwdGlvbnMgPSBbXTsKICAgICRrZXkgPSBtZDUoJHN1YnNjcmlwdGlvblsnZW5kcG9pbnQnXSk7CiAgICAkc2VyX2RhdGEgPSAkZmV1LT5HZXRVc2VyUHJvcGVydHlGdWxsKCBDR1dlYlB1c2g6OlBVU0hfUFJPUEVSVFksICR1aWQgKTsKICAgIGlmKCAkc2VyX2RhdGEgKSAkc3Vic2NyaXB0aW9ucyA9IGpzb25fZGVjb2RlKCAkc2VyX2RhdGEsIFRSVUUgKTsKCiAgICAkbWV0aG9kID0gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ107CiAgICBzd2l0Y2goICRtZXRob2QgKSB7CiAgICBjYXNlICdQT1NUJzoKICAgIGNhc2UgJ1BVVCc6CiAgICAgICAgJHN1YnNjcmlwdGlvbnNbJGtleV0gPSAkc3Vic2NyaXB0aW9uOwogICAgICAgICRmZXUtPlNldFVzZXJQcm9wZXJ0eUZ1bGwoIENHV2ViUHVzaDo6UFVTSF9QUk9QRVJUWSwganNvbl9lbmNvZGUoICRzdWJzY3JpcHRpb25zICksICR1aWQgKTsKICAgICAgICBkZWJ1Z190b19sb2coJ3NldCBzdWJzY3JpcHRpb24nKTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJ0RFTEVURSc6CiAgICAgICAgaWYoIGlzc2V0KCAkc3Vic2NyaXB0aW9uc1ska2V5XSkgKSB7CiAgICAgICAgICAgIHVuc2V0KCAkc3Vic2NyaXB0aW9uc1ska2V5XSk7CiAgICAgICAgICAgIGlmKCBjb3VudCgkc3Vic2NyaXB0aW9ucykgKSB7CiAgICAgICAgICAgICAgICAkZmV1LT5TZXRVc2VyUHJvcGVydHlGdWxsKCBDR1dlYlB1c2g6OlBVU0hfUFJPUEVSVFksIGpzb25fZW5jb2RlKCAkc3Vic2NyaXB0aW9ucyApLCAkdWlkICk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkZmV1LT5EZWxldGVVc2VyUHJvcGVydHlGdWxsKCBDR1dlYlB1c2g6OlBVU0hfUFJPUEVSVFksICR1aWQgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBkZWJ1Z190b19sb2coJ2RlbGV0ZWQgc3Vic2NyaXB0aW9uJyk7CiAgICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oInJlcXVlc3QgbWV0aG9kICRtZXRob2Qgbm90IGhhbmRsZWQiKTsKICAgIH0KfQpjYXRjaCggXFJ1bnRpbWVFeGNlcHRpb24gJGUgKSB7CiAgICBoZWFkZXIoIkhUVFAvMS4wIDQwMyAiLiRlLT5HZXRNZXNzYWdlKCkpOwogICAgaGVhZGVyKCJTdGF0dXM6IDQwMyAiLiRlLT5HZXRNZXNzYWdlKCkpOwp9CmNhdGNoKCBcRXhjZXB0aW9uICRlICkgewogICAgaGVhZGVyKCJIVFRQLzEuMCA1MDAgIi4kZS0+R2V0TWVzc2FnZSgpKTsKICAgIGhlYWRlcigiU3RhdHVzOiA1MDAgIi4kZS0+R2V0TWVzc2FnZSgpKTsKfQpleGl0KCk7]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiggISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSApIGV4aXQ7CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIENHV2ViUHVzaDo6U0VORF9QRVJNICkgKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NlbmQnLCR0aGlzLT5MYW5nKCd0YWJfc2VuZHB1c2gnKSk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycgKSApIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncHJlZnMnLCR0aGlzLT5MYW5nKCd0YWJfcHJlZnMnKSk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCBDR1dlYlB1c2g6OlNFTkRfUEVSTSApICkgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3NlbmQnLCRwYXJhbXMpOwogICAgaW5jbHVkZV9vbmNlKCBfX0RJUl9fLicvYWN0aW9uLmFkbWluX3B1c2gucGhwJyApOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycgKSApIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdwcmVmcycpOwogICAgaW5jbHVkZV9vbmNlKF9fRElSX18uJy9hY3Rpb24uYWRtaW5fcHJlZnMucGhwJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/action.js.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnanMudHBsJyk7CiR0cGwtPmFzc2lnbigncHVibGljX2tleScsIFxDR1dlYlB1c2hcdXRpbHM6OmdldF9wdWJsaWNfdmFwaWRfa2V5KCkgKTsKJHRwbC0+YXNzaWduKCdtb2R1bGVfdXJsX3BhdGgnLCR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoKCkpOwokdXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoICdjbnRudDAxJywgJ2FqYXhfc3Vic2NyaWJlJywgJHJldHVybmlkICk7CiR1cmwgPSBzdHJfcmVwbGFjZSgnJmFtcDsnLCcmJywkdXJsKS4nJnNob3d0ZW1wbGF0ZT1mYWxzZSc7CiR0cGwtPmFzc2lnbignYWpheF91cmwnLCR1cmwpOwokdHBsLT5kaXNwbGF5KCk7]]></data>
	</file>
	<file>
	  <filename>/action.subscribe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0ZST05URU5EVVNFUlMpOwppZiggISRmZXUgKSByZXR1cm47CiR1aWQgPSAkZmV1LT5Mb2dnZWRJbklkKCk7CmlmKCAhJHVpZCApIHsKICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJ1N1YnNjcmlwdGlvbiByZXF1aXJlcyBsb2dpbiB0byBGRVUnKTsKICAgIHJldHVybjsKfQoKJHRwbCA9ICR0aGlzLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnc3Vic2NyaWJlLnRwbCcpOwokdHBsLT5kaXNwbGF5KCk7Cg==]]></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+CiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZpbmFsIGNsYXNzIENHV2ViUHVzaCBleHRlbmRzIENHRXh0ZW5zaW9ucwp7CiAgICBjb25zdCBQVVNIX1BST1BFUlRZID0gJ19fY2dwdXNodGVzdF9fJzsKICAgIGNvbnN0IFNFTkRfUEVSTSA9ICdTZW5kIFdlYlB1c2ggTm90aWZpY2F0aW9ucyc7CgogICAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9CiAgICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzEuMC4wJzsgfQogICAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ2NhbGd1eTEwMDAnOyB9CiAgICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJzsgfQogICAgZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7IHJldHVybiB0cnVlOyB9CiAgICBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIHRydWU7IH0KICAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgfQogICAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMi4xLjUnOyB9CiAgICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsgfQogICAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7IH0KICAgIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CiAgICBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgeyByZXR1cm4gRkFMU0U7IH0KICAgIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpIHsgcmV0dXJuIFsgJ0NHRXh0ZW5zaW9ucyc9PicxLjU2LjInLCAnRnJvbnRFbmRVc2Vycyc9PicyLjUuMicgXTsgfQoKICAgIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oIHNlbGY6OlNFTkRfUEVSTSApIHx8ICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEhhc0NhcGFiaWxpdHkoJGNhcGFiaWxpdHksJHBhcmFtcyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgaWYoICRjYXBhYmlsaXR5ID09ICdjbGljb21tYW5kcycgKSByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0X2NsaV9jb21tYW5kcyggJGFwcCApCiAgICB7CiAgICAgICAgaWYoICEgJGFwcCBpbnN0YW5jZW9mIFxDTVNNU1xDTElcQXBwICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbihfX01FVEhPRF9fLicgQ2FsbGVkIGZyb20gb3V0c2lkZSBvZiBjbXNjbGknKTsKICAgICAgICBpZiggIWNsYXNzX2V4aXN0cygnXFxDTVNNU1xcQ0xJXFxHZXRPcHRFeHRcXENvbW1hbmQnKSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oX19NRVRIT0RfXy4nIENhbGxlZCBmcm9tIG91dHNpZGUgb2YgY21zY2xpJyk7CgogICAgICAgICRvdXQgPSBbXTsKICAgICAgICAkb3V0W10gPSBuZXcgXENHV2ViUHVzaFxXZWJQdXNoQ29tbWFuZCggJGFwcCApOwogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKfSAvLyBjbGFzcwo=]]></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[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNjb21wb3Nlci1sb2NrLXRoZS1sb2NrLWZpbGUiLAogICAgICAgICJUaGlzIGZpbGUgaXMgQGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IgogICAgXSwKICAgICJjb250ZW50LWhhc2giOiAiZjQxNGM2YTA4NTdhODY4OWIxOWI1OTM0NzBmNTA2ZmMiLAogICAgInBhY2thZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiYmViZXJsZWkvYXNzZXJ0IiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuNy42IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9iZWJlcmxlaS9hc3NlcnQuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiODcyNmUxODNlYmJiMDE2OWNiNmNiNDgzMmUyMmViZDM1NTUyNDU2MyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2JlYmVybGVpL2Fzc2VydC96aXBiYWxsLzg3MjZlMTgzZWJiYjAxNjljYjZjYjQ4MzJlMjJlYmQzNTU1MjQ1NjMiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI4NzI2ZTE4M2ViYmIwMTY5Y2I2Y2I0ODMyZTIyZWJkMzU1NTI0NTYzIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtbWJzdHJpbmciOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNHxeNSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiQXNzZXJ0XFwiOiAibGliL0Fzc2VydCIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgImxpYi9Bc3NlcnQvZnVuY3Rpb25zLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJCU0QtMi1DbGF1c2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkJlbmphbWluIEViZXJsZWkiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJrb250YWt0QGJlYmVybGVpLmRlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJMZWFkIERldmVsb3BlciIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUmljaGFyZCBRdWFkbGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInJxdWFkbGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogIkNvbGxhYm9yYXRvciIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlRoaW4gYXNzZXJ0aW9uIGxpYnJhcnkgZm9yIGlucHV0IHZhbGlkYXRpb24gaW4gYnVzaW5lc3MgbW9kZWxzLiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJhc3NlcnQiLAogICAgICAgICAgICAgICAgImFzc2VydGlvbiIsCiAgICAgICAgICAgICAgICAidmFsaWRhdGlvbiIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wNS0wNFQwMjowMDoyNCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZmdyb3NzZS9waHBhc24xIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS41LjIiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJhMThiMTYyZWNhNmFhNzBmOGYxNTYxNWY0YWM4Yzg1MmRmZmJjN2RkIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZmdyb3NzZS9QSFBBU04xL3ppcGJhbGwvYTE4YjE2MmVjYTZhYTcwZjhmMTU2MTVmNGFjOGM4NTJkZmZiYzdkZCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImExOGIxNjJlY2E2YWE3MGY4ZjE1NjE1ZjRhYzhjODUyZGZmYmM3ZGQiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1nbXAiOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS42LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuNSIsCiAgICAgICAgICAgICAgICAic2F0b29zaGkvcGhwLWNvdmVyYWxscyI6ICJkZXYtbWFzdGVyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJwaHAtY3VybCI6ICJGb3IgbG9hZGluZyBPSUQgaW5mb3JtYXRpb24gZnJvbSB0aGUgd2ViIGlmIHRoZXkgaGF2ZSBub3QgYmVlIGRlZmluZWQgc3RhdGljYWxseSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS41LngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkZHXFwiOiAibGliLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZyaWVkcmljaCBHcm/Dn2UiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmllZHJpY2guZ3Jvc3NlQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJBdXRob3IiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZS9QSFBBU04xL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgUEhQIEZyYW1ld29yayB0aGF0IGFsbG93cyB5b3UgdG8gZW5jb2RlIGFuZCBkZWNvZGUgYXJiaXRyYXJ5IEFTTi4xIHN0cnVjdHVyZXMgdXNpbmcgdGhlIElUVS1UIFguNjkwIEVuY29kaW5nIFJ1bGVzLiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZS9QSFBBU04xIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkRFUiIsCiAgICAgICAgICAgICAgICAiYXNuLjEiLAogICAgICAgICAgICAgICAgImFzbjEiLAogICAgICAgICAgICAgICAgImJlciIsCiAgICAgICAgICAgICAgICAiYmluYXJ5IiwKICAgICAgICAgICAgICAgICJkZWNvZGluZyIsCiAgICAgICAgICAgICAgICAiZW5jb2RpbmciLAogICAgICAgICAgICAgICAgInguNTA5IiwKICAgICAgICAgICAgICAgICJ4LjY5MCIsCiAgICAgICAgICAgICAgICAieDUwOSIsCiAgICAgICAgICAgICAgICAieDY5MCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0xMC0yOVQxNTo0Njo0NiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9ndXp6bGUiLAogICAgICAgICAgICAidmVyc2lvbiI6ICI2LjMuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNGRiNWE3OGE1ZWE0NjhkNDgzMWRlN2YwYmY5ZDk0MTVlMzQ4Njk5IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL2d1enpsZS96aXBiYWxsL2Y0ZGI1YTc4YTVlYTQ2OGQ0ODMxZGU3ZjBiZjlkOTQxNWUzNDg2OTkiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNGRiNWE3OGE1ZWE0NjhkNDgzMWRlN2YwYmY5ZDk0MTVlMzQ4Njk5IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL3Byb21pc2VzIjogIl4xLjAiLAogICAgICAgICAgICAgICAgImd1enpsZWh0dHAvcHNyNyI6ICJeMS40IiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJleHQtY3VybCI6ICIqIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuMCB8fCBeNS4wIiwKICAgICAgICAgICAgICAgICJwc3IvbG9nIjogIl4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiUmVxdWlyZWQgZm9yIHVzaW5nIHRoZSBMb2cgbWlkZGxld2FyZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNi4yLWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkd1enpsZSBpcyBhIFBIUCBIVFRQIGNsaWVudCBsaWJyYXJ5IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9ndXp6bGVwaHAub3JnLyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjbGllbnQiLAogICAgICAgICAgICAgICAgImN1cmwiLAogICAgICAgICAgICAgICAgImZyYW1ld29yayIsCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cCBjbGllbnQiLAogICAgICAgICAgICAgICAgInJlc3QiLAogICAgICAgICAgICAgICAgIndlYiBzZXJ2aWNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE3LTA2LTIyVDE4OjUwOjQ5KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3Byb21pc2VzIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMy4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHJvbWlzZXMuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9wcm9taXNlcy96aXBiYWxsL2E1OWRhNmNmNjFkODAwNjA2NDdmZjRkM2ViMmMwM2EyYmM2OTQ2NDYiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJhNTlkYTZjZjYxZDgwMDYwNjQ3ZmY0ZDNlYjJjMDNhMmJjNjk0NjQ2IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjUuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjQtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkd1enpsZUh0dHBcXFByb21pc2VcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIHByb21pc2VzIGxpYnJhcnkiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAicHJvbWlzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0xMi0yMFQxMDowNzoxMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wc3I3IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS40LjIiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImY1YjhhODUxMmUyYjU4YjAwNzFhNzI4MGUzOWYxNGY3MmUwNWQ4N2MiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvcHNyNy96aXBiYWxsL2Y1YjhhODUxMmUyYjU4YjAwNzFhNzI4MGUzOWYxNGY3MmUwNWQ4N2MiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNWI4YTg1MTJlMmI1OGIwMDcxYTcyODBlMzlmMTRmNzJlMDVkODdjIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj01LjQuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJ+MS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicHJvdmlkZSI6IHsKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlLWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjQtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkd1enpsZUh0dHBcXFBzcjdcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAic3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgU2NodWx0emUiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vVG9iaW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTcgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsc28gcHJvdmlkZXMgY29tbW9uIHV0aWxpdHkgbWV0aG9kcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJyZXF1ZXN0IiwKICAgICAgICAgICAgICAgICJyZXNwb25zZSIsCiAgICAgICAgICAgICAgICAic3RyZWFtIiwKICAgICAgICAgICAgICAgICJ1cmkiLAogICAgICAgICAgICAgICAgInVybCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMy0yMFQxNzoxMDo0NiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAibWRhbnRlci9lY2MiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2MC40LjIiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZmRkMWZhOWJlODE4NGM5ZjMxOTQzMzQzN2NiMWQ5ZjlkNDI5NDE2NCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocGVjYy9waHBlY2MvemlwYmFsbC9mZGQxZmE5YmU4MTg0YzlmMzE5NDMzNDM3Y2IxZDlmOWQ0Mjk0MTY0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZmRkMWZhOWJlODE4NGM5ZjMxOTQzMzQzN2NiMWQ5ZjlkNDI5NDE2NCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWdtcCI6ICIqIiwKICAgICAgICAgICAgICAgICJmZ3Jvc3NlL3BocGFzbjEiOiAifjEuNSIsCiAgICAgICAgICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiOiAiXjF8XjIiLAogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuNi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIn40LjF8fjUuMCIsCiAgICAgICAgICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJ+MiIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS95YW1sIjogIn4yLjZ8fjMuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiTWRhbnRlclxcRWNjXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1hdHlhcyBEYW50ZXIiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vbWF0ZWpkYW50ZXIuY29tLyIsCiAgICAgICAgICAgICAgICAgICAgInJvbGUiOiAiQXV0aG9yIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUaGliYXVkIEZhYnJlIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAidGhpYmF1ZEBhenRlY2guaW8iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vYXp0ZWNoLmlvIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJNYWludGFpbmVyIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUEhQIEVsbGlwdGljIEN1cnZlIENyeXB0b2dyYXBoeSBsaWJyYXJ5IiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHBlY2MvcGhwZWNjIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkRpZmZpZSIsCiAgICAgICAgICAgICAgICAiRUNEU0EiLAogICAgICAgICAgICAgICAgIkhlbGxtYW4iLAogICAgICAgICAgICAgICAgImN1cnZlIiwKICAgICAgICAgICAgICAgICJlY2RoIiwKICAgICAgICAgICAgICAgICJlbGxpcHRpYyIsCiAgICAgICAgICAgICAgICAibmlzdHAxOTIiLAogICAgICAgICAgICAgICAgIm5pc3RwMjI0IiwKICAgICAgICAgICAgICAgICJuaXN0cDI1NiIsCiAgICAgICAgICAgICAgICAibmlzdHA1MjEiLAogICAgICAgICAgICAgICAgInBocGVjYyIsCiAgICAgICAgICAgICAgICAic2VjcDI1NmsxIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE3LTAxLTA0VDEyOjEzOjI0KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJtaW5pc2hsaW5rL3dlYi1wdXNoIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuNC4zIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2NWZjZDgwZmNjZWNjMjlhNGRmN2ZiZjQ3YzNmYmM5NTU4ZTA3ZDk0IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAvemlwYmFsbC82NWZjZDgwZmNjZWNjMjlhNGRmN2ZiZjQ3YzNmYmM5NTU4ZTA3ZDk0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjVmY2Q4MGZjY2VjYzI5YTRkZjdmYmY0N2MzZmJjOTU1OGUwN2Q5NCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9ndXp6bGUiOiAiXjYuMiIsCiAgICAgICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICAgICAibWRhbnRlci9lY2MiOiAiXjAuNC4wIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuNiB8fCBeNy4wIiwKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9iYXNlNjR1cmwiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAic3BvbWt5LWxhYnMvam9zZSI6ICJeNi4wIiwKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9waHAtYWVzLWdjbSI6ICJeMS4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIjUuNy4qIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJNaW5pc2hsaW5rXFxXZWJQdXNoXFwiOiAic3JjIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTG91aXMgTGFncmFuZ2UiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vTWluaXNobGluayIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIldlYiBQdXNoIGxpYnJhcnkgZm9yIFBIUCIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiUHVzaCBBUEkiLAogICAgICAgICAgICAgICAgIldlYlB1c2giLAogICAgICAgICAgICAgICAgIm5vdGlmaWNhdGlvbnMiLAogICAgICAgICAgICAgICAgInB1c2giLAogICAgICAgICAgICAgICAgIndlYiIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wNi0yOFQxOTowMzo0MCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4wLjEwIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9wYXJhZ29uaWUvcmFuZG9tX2NvbXBhdC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MzRiYWU4ZTkxMWVlZmE4OWMxYWJmYmYxYjY2ZGE2NzlhYzhmNTRkIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGFyYWdvbmllL3JhbmRvbV9jb21wYXQvemlwYmFsbC82MzRiYWU4ZTkxMWVlZmE4OWMxYWJmYmYxYjY2ZGE2NzlhYzhmNTRkIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjM0YmFlOGU5MTFlZWZhODljMWFiZmJmMWI2NmRhNjc5YWM4ZjU0ZCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiNC4qfDUuKiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWxpYnNvZGl1bSI6ICJQcm92aWRlcyBhIG1vZGVybiBjcnlwdG8gQVBJIHRoYXQgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgcmFuZG9tIGJ5dGVzLiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAibGliL3JhbmRvbS5waHAiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJzZWN1cml0eUBwYXJhZ29uaWUuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9wYXJhZ29uaWUuY29tIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUEhQIDUueCBwb2x5ZmlsbCBmb3IgcmFuZG9tX2J5dGVzKCkgYW5kIHJhbmRvbV9pbnQoKSBmcm9tIFBIUCA3IiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNzcHJuZyIsCiAgICAgICAgICAgICAgICAicHNldWRvcmFuZG9tIiwKICAgICAgICAgICAgICAgICJyYW5kb20iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDMtMTNUMTY6Mjc6MzIrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBzci9jYWNoZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2NhY2hlLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQxMWI1MGFkMjIzMjUwY2YxN2I4NmUzODM4MzQxM2Y1YTY3NjRiZjgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2NhY2hlL3ppcGJhbGwvZDExYjUwYWQyMjMyNTBjZjE3Yjg2ZTM4MzgzNDEzZjVhNjc2NGJmOCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImQxMWI1MGFkMjIzMjUwY2YxN2I4NmUzODM4MzQxM2Y1YTY3NjRiZjgiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxDYWNoZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBjYWNoaW5nIGxpYnJhcmllcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjYWNoZSIsCiAgICAgICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgICAgICJwc3ItNiIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0wOC0wNlQyMDoyNDoxMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicHNyL2h0dHAtbWVzc2FnZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNjU2MWJmMjhkNTIwMTU0ZTRiMGVjNzJiZTk1NDE4YWJlNmQ5MzYzIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLW1lc3NhZ2UvemlwYmFsbC9mNjU2MWJmMjhkNTIwMTU0ZTRiMGVjNzJiZTk1NDE4YWJlNmQ5MzYzIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZjY1NjFiZjI4ZDUyMDE1NGU0YjBlYzcyYmU5NTQxOGFiZTZkOTM2MyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXE1lc3NhZ2VcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUEhQLUZJRyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci03IiwKICAgICAgICAgICAgICAgICJyZXF1ZXN0IiwKICAgICAgICAgICAgICAgICJyZXNwb25zZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0wOC0wNlQxNDozOTo1MSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYWVzLWtleS13cmFwIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjMuMC4zIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9hZXMta2V5LXdyYXAuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDcyZTMxMmVhMTE5YzRjYzMzMDEyZWRjNWU3ZThjM2YzZGVmMGQ2NiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC96aXBiYWxsLzA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwNzJlMzEyZWExMTljNGNjMzMwMTJlZGM1ZTdlOGMzZjNkZWYwZDY2IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJiZWJlcmxlaS9hc3NlcnQiOiAiXjIuNCIsCiAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAgICAgImxpYi1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNS40fF43LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuNXxeNS4wIiwKICAgICAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjMuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJBRVNLV1xcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBRVMgS2V5IFdyYXAgZm9yIFBIUC4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJBMTI4S1ciLAogICAgICAgICAgICAgICAgIkExOTJLVyIsCiAgICAgICAgICAgICAgICAiQTI1NktXIiwKICAgICAgICAgICAgICAgICJSRkMzMzk0IiwKICAgICAgICAgICAgICAgICJSRkM1NjQ5IiwKICAgICAgICAgICAgICAgICJhZXMiLAogICAgICAgICAgICAgICAgImtleSIsCiAgICAgICAgICAgICAgICAicGFkZGluZyIsCiAgICAgICAgICAgICAgICAid3JhcCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMy0yNVQyMTowNzoxMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuMC4yIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Jhc2U2NHVybC96aXBiYWxsL2VmNmQ1ZmI5Mzg5NDA2M2Q5Y2VlOTk2MDIyMjU5ZmQwOGQ2NjQ2ZWEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJlZjZkNWZiOTM4OTQwNjNkOWNlZTk5NjAyMjI1OWZkMDhkNjY0NmVhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuM3xeNy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjB8XjUuMCIsCiAgICAgICAgICAgICAgICAic2F0b29zaGkvcGhwLWNvdmVyYWxscyI6ICJeMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiQmFzZTY0VXJsXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkJhc2UgNjQgVVJMIFNhZmUgRW5jb2RpbmcvZGVjb2RpbmcgUEhQIExpYnJhcnkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJiYXNlNjQiLAogICAgICAgICAgICAgICAgInJmYzQ2NDgiLAogICAgICAgICAgICAgICAgInNhZmUiLAogICAgICAgICAgICAgICAgInVybCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNi0wMS0yMVQxOTo1MDozMCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvam9zZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInY2LjEuNCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvam9zZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmY2NkN2UwMjRiMTBhZDA1ZTkzNzRkNzQ1ODkzYjEzMzExYzRkNDlhIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvam9zZS96aXBiYWxsL2ZjY2Q3ZTAyNGIxMGFkMDVlOTM3NGQ3NDU4OTNiMTMzMTFjNGQ0OWEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmY2NkN2UwMjRiMTBhZDA1ZTkzNzRkNzQ1ODkzYjEzMzExYzRkNDlhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJiZWJlcmxlaS9hc3NlcnQiOiAiXjIuNCIsCiAgICAgICAgICAgICAgICAiZmdyb3NzZS9waHBhc24xIjogIl4xLjUiLAogICAgICAgICAgICAgICAgImxpYi1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAgICAgIm1kYW50ZXIvZWNjIjogIjAuNC4qIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiXjUuNnxeNy4wIiwKICAgICAgICAgICAgICAgICJwc3IvY2FjaGUiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAic3BvbWt5LWxhYnMvYWVzLWtleS13cmFwIjogIl4zLjAiLAogICAgICAgICAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9waHAtYWVzLWdjbSI6ICJeMS4yIiwKICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIl4xLjEiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtcGhwNzAiOiAiXjEuMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNS4wIiwKICAgICAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiLAogICAgICAgICAgICAgICAgInN5bWZvbnkvY2FjaGUiOiAiXjIuMHxeMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtY3J5cHRvIjogIkhpZ2hseSByZWNvbW1lbmRlZCB3aGVuIHlvdSB1c2UgQUVTIEdDTSBiYXNlZCBhbGdvcml0aG1zLiIsCiAgICAgICAgICAgICAgICAiZXh0LWN1cnZlMjU1MTkiOiAiRm9yIEVkRFNBIHdpdGggWDI1NTE5IGN1cnZlcyBzdXBwb3J0LiIsCiAgICAgICAgICAgICAgICAiZXh0LWVkMjU1MTkiOiAiRm9yIEVkRFNBIHdpdGggRWQyNTUxOSBjdXJ2ZXMgc3VwcG9ydC4iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjYuMS54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2pvc2UvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiSlNPTiBPYmplY3QgU2lnbmluZyBhbmQgRW5jcnlwdGlvbiBsaWJyYXJ5IGZvciBQSFAuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9Kb3NlIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkpPU0UiLAogICAgICAgICAgICAgICAgIkpXRSIsCiAgICAgICAgICAgICAgICAiSldLIiwKICAgICAgICAgICAgICAgICJKV0tTZXQiLAogICAgICAgICAgICAgICAgIkpXUyIsCiAgICAgICAgICAgICAgICAiSm90IiwKICAgICAgICAgICAgICAgICJSRkM3NTE1IiwKICAgICAgICAgICAgICAgICJSRkM3NTE2IiwKICAgICAgICAgICAgICAgICJSRkM3NTE3IiwKICAgICAgICAgICAgICAgICJSRkM3NTE4IiwKICAgICAgICAgICAgICAgICJSRkM3NTE5IiwKICAgICAgICAgICAgICAgICJSRkM3NTIwIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxNy0wMi0wNlQxODoyMjo1MSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvcGhwLWFlcy1nY20iLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2MS4yLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImI2NTViZWYwZDRmMGZhMmYzNmMxMWM1MTIyZTI4NDk1MWU4MTk2MWMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9TcG9ta3ktTGFicy9waHAtYWVzLWdjbS96aXBiYWxsL2I2NTViZWYwZDRmMGZhMmYzNmMxMWM1MTIyZTI4NDk1MWU4MTk2MWMiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiNjU1YmVmMGQ0ZjBmYTJmMzZjMTFjNTEyMmUyODQ5NTFlODE5NjFjIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJiZWJlcmxlaS9hc3NlcnQiOiAiXjIuNCIsCiAgICAgICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS40IiwKICAgICAgICAgICAgICAgICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIjogIl4xLjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuNXxeNS4wIiwKICAgICAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1jcnlwdG8iOiAiSGlnaGx5IHJlY29tbWVuZGVkIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UuIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjIueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiQUVTR0NNXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkFFUyBHQ00gKEdhbG9pcyBDb3VudGVyIE1vZGUpIFBIUCBpbXBsZW1lbnRhdGlvbi4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkFFUy1HQ00iLAogICAgICAgICAgICAgICAgIkdhbG9pcyBDb3VudGVyIE1vZGUiLAogICAgICAgICAgICAgICAgImFlcyIsCiAgICAgICAgICAgICAgICAiZ2NtIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE2LTExLTIyVDIxOjExOjExKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuNS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjdjOGZhZTBhYzFkMjE2ZWI1NDM0OWU2YThiYWE1N2Q1MTVmZTg4MDMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nL3ppcGJhbGwvN2M4ZmFlMGFjMWQyMTZlYjU0MzQ5ZTZhOGJhYTU3ZDUxNWZlODgwMyIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjdjOGZhZTBhYzFkMjE2ZWI1NDM0OWU2YThiYWE1N2Q1MTVmZTg4MDMiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtbWJzdHJpbmciOiAiRm9yIGJlc3QgcGVyZm9ybWFuY2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNS1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcUG9seWZpbGxcXE1ic3RyaW5nXFwiOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgcG9seWZpbGwgZm9yIHRoZSBNYnN0cmluZyBleHRlbnNpb24iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjb21wYXRpYmlsaXR5IiwKICAgICAgICAgICAgICAgICJtYnN0cmluZyIsCiAgICAgICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAgICAgInBvcnRhYmxlIiwKICAgICAgICAgICAgICAgICJzaGltIgogICAgICAgICAgICBdLAogICAgICAgICAgICAidGltZSI6ICIyMDE3LTA2LTE0VDE1OjQ0OjQ4KzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLXBocDcwIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjEuNS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLXBocDcwLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImI2NDgyZTY4OTc0NDg2OTg0ZjU5NDQ5ZWNlYTFmYmJiMjJmZjg0MGYiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L3BvbHlmaWxsLXBocDcwL3ppcGJhbGwvYjY0ODJlNjg5NzQ0ODY5ODRmNTk0NDllY2VhMWZiYmIyMmZmODQwZiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImI2NDgyZTY4OTc0NDg2OTg0ZjU5NDQ5ZWNlYTFmYmJiMjJmZjg0MGYiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBhcmFnb25pZS9yYW5kb21fY29tcGF0IjogIn4xLjB8fjIuMCIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNS1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiU3ltZm9ueVxcUG9seWZpbGxcXFBocDcwXFwiOiAiIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAiYm9vdHN0cmFwLnBocCIKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAiY2xhc3NtYXAiOiBbCiAgICAgICAgICAgICAgICAgICAgIlJlc291cmNlcy9zdHVicyIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk5pY29sYXMgR3Jla2FzIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlN5bWZvbnkgcG9seWZpbGwgYmFja3BvcnRpbmcgc29tZSBQSFAgNy4wKyBmZWF0dXJlcyB0byBsb3dlciBQSFAgdmVyc2lvbnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjb21wYXRpYmlsaXR5IiwKICAgICAgICAgICAgICAgICJwb2x5ZmlsbCIsCiAgICAgICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAgICAgInNoaW0iCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMTctMDYtMTRUMTU6NDQ6NDgrMDA6MDAiCiAgICAgICAgfQogICAgXSwKICAgICJwYWNrYWdlcy1kZXYiOiBbXSwKICAgICJhbGlhc2VzIjogW10sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAic3RhYmxlIiwKICAgICJzdGFiaWxpdHktZmxhZ3MiOiBbXSwKICAgICJwcmVmZXItc3RhYmxlIjogZmFsc2UsCiAgICAicHJlZmVyLWxvd2VzdCI6IGZhbHNlLAogICAgInBsYXRmb3JtIjogW10sCiAgICAicGxhdGZvcm0tZGV2IjogW10KfQo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogICA8bGk+VmVyc2lvbiAxLjAuMCAtIEluaXRpYWwgcmVsZWFzZS48L2xpPgo8L3VsPgo=]]></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[PGgzPldoYXQgaXMgdGhpcz88aDM+CjxwPlRoaXMgbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgcHJvdmlkZXMgYSBzaW1wbGUgYW5kIGNvbnZlbmllbnQgd2F5IHRvOjwvcD4KPHVsPgogICA8bGk+QWxsb3cgbG9nZ2VkIGluIEZFVSB1c2VycyB0byBzdWJzY3JpYmUgdG8gcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgIDxsaT5TZW5kIHB1c2ggbm90aWZpY2F0aW9ucyB0byBhIGdyb3VwIG9mIEZFVSB1c2VycyAod2hvIGhhdmUgc3Vic2NyaWJlZCB3aXRoIG9uZSBvciBtb3JlIGRldmljZXMpLjwvbGk+CjwvdWw+CjxwPjxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gV2ViLXB1c2ggbm90aWZpY2F0aW9ucyBhcmUgbm90IHRoZSBzYW1lIGFzIG1vYmlsZSBwdXNoIG5vdGlmaWNhdGlvbnMgb24gQW5kcm9pZCBhbmQgSU9TICh3aGljaCBib3RoIHVzZSBkaWZmZXJlbnQgbWV0aG9kb2xvZ2llcykuICBUaGlzIHRlY2hub2xvZ3kgaXMgcHJvdmlkZWQgYnkgdGhlIGJyb3dzZXIncyBqYXZhc2NyaXB0IGVuZ2luZS4gICBUaGVyZSBpcyBzdXBwb3J0IGZvciB3ZWItcHVzaCBvbiBBbmRyb2lkIGRldmljZXMgdXNpbmcgRmlyZWZveCBvciBDaHJvbWUgYnJvd3NlcnMuPC9wPgoKPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgo8dWw+CiAgPGxpPkluIHlvdXIgcGFnZSB0ZW1wbGF0ZSAob3Igb24gc3BlY2lmaWVkIHBhZ2VzKSBjYWxsIDxjb2RlPntDR1dlYlB1c2ggYWN0aW9uPWpzfTwvY29kZT4uCiAgICAgPHA+VGhpcyB3aWxsIGluc2VydCB0aGUgamF2YXNjcmlwdCB0byByZWdpc3RlciB0aGUgc2VydmljZSB3b3JrZXIgYW5kIHRoZSByZXF1aXJlZCBqYXZhc2NyaXB0IHRvIHdvcmsgd2l0aCBzdWJzY3JpcHRpb25zLjxwPgogIDwvbGk+CiAgPGxpPk9uIGF0IGxlYXN0IG9uZSBwYWdlIHRoYXQgaXMgdmlzaWJsZSB0byBGRVUgdXNlcnMgY2FsbCA8Y29kZT57Q0dXZWJQdXNoIGFjdGlvbj1zdWJzY3JpYmV9PC9jb2RlPi4KICAgICA8cD5UaGlzIHdpbGwgZGlzcGxheSBhIHNpbXBsZSBidXR0b24gdGhhdCBhbGxvd3MgRkVVIHVzZXJzIHRvIHN1YnNjcmliZSBhbmQgdW5zdWJzY3JpYmUgdG8gd2ViIG5vZmljYXRpb25zIGZyb20geW91ciB3ZWJzaXRlLgogICAgICAgIElmIHRoZSBicm93c2VyIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggd2ViLXB1c2ggbm90aWZpY2F0aW9ucyB0aGVuIHRoZSBidXR0b24gd2lsbCBiZSBkaXNhYmxlZCwgYW5kIHRoZSB0aXRsZSBvZiB0aGUgYnV0dG9uIHdpbGwgc3RhdGUgdGhlIHN0YXR1cy4KICAgICA8L3A+CiAgPC9saT4KICA8bGk+VmlzaXQgdGhlIG1vZHVsZSdzIGFkbWluIHBhbmVsIGFuZCBzZXQgYW4gb3B0aW9uYWwgdGl0bGUsIGFuZCBpY29uLgogICAgIDxwPlRoZSB0aXRsZSBzaG91bGQgYmUgcmVsYXRpdmVseSBicmllZi4gIElmIG9uZSBpcyBub3Qgc3VwcGxpZWQsIGFuZCBub3Qgc3VwcGxpZWQgd2l0aCBpbmRpdmlkdWFsIG1lc3NhZ2VzLCB0aGVuIHRoZSBzaXRlIG5hbWUgd2lsbCBiZSB1c2VkLjwvcD4KICAgICA8cD5UaGUgaWNvbiwgaWYgdXNlZCBzaG91bGQgYmUgYSBzcXVhcmUgaW1hZ2Ugb2YgYXQgbGVhc3QgOTZ4OTYgcGl4ZWxzLCBidXQgbm90IHRvbyBsYXJnZSBlaXRoZXIuICBJIHJlY29tbWVuZCBubyBsYXJnZXIgdGhhbiAyNTZ4MjU2IGF0IHRoaXMgdGltZS48L3A+CiAgPC9saT4KICA8bGk+VmlzaXQgdGhlIHBhZ2UgeW91IGNyZWF0ZWQgaW4gc3RlcCAyIGFib3ZlIHdpdGggYSBzdXBwb3J0ZWQgYnJvd3NlciwgbG9naW4gdG8gdGhlIEZyb250RW5kVXNlcnMgbW9kdWxlLCBhbmQgc3Vic2NyaWJlIHRvIHB1c2ggbm90aWZpY2F0aW9ucy48L2xpPgogIDxsaT5Vc2UgdGhlIG1vZHVsZSdzIGFkbWluIHBhbmVsIHRvIHNlbmQgYSB0ZXN0IG5vdGlmaWNhdGlvbi48L2xpPgogIDxsaT5Zb3UgY2FuIG9wdGlvbmFsbHkgdXNlIDxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY21zY2xpIj5jbXNjbGk8L2E+IHdlYnB1c2gtZmV1LWdyb3VwPC9jb2RlPiB0byBzZW5kIHB1c2ggbm90aWZpY2F0aW9ucyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuPC9saT4KPC91bD4KCjxoMz5TZXR0aW5ncyBhbmQgU2VydmljZSBXb3JrZXI8L2gzPgo8cD5UaGUgc2V0dGluZ3MgdGFiIGluIHRoaXMgbW9kdWxlJ3MgYWRtaW4gcGFuZWwgYWxsb3dzIHNldHRpbmcgYSB0aXRsZSwgYW5kIGFuIGljb24uPHA+CjxwPlRoZSB0aXRsZSBpcyBhIHN0cmluZyB0byB1c2UgYXMgdGhlIGRlZmF1bHQgdGl0bGUgZm9yIG5vdGlmaWNhdGlvbnMgaWYgaXQgaXMgbm90IG90aGVyd2lzZSBzcGVjaWZpZWQuICBJZiB0aGlzIGZpZWxkIGlzIGxlZnQgZW1wdHkgdGhlbiB0aGUgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZC48L3A+CjxwPlRoZSBpY29uIGlzIGEgVVJMIHRvIGEgc3F1YXJlIGljb24gKG1pbmltdW0gcmVjb21tZW5kZWQgc2l6ZSBvZiA5Nng5NikgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBvbiBlYWNoIGFuZCBldmVyeSBub3RpZmljYXRpb24uPC9wPgo8cD5FYWNoIHRpbWUgdGhlc2Ugc2V0dGluZ3MgYXJlIGNoYW5nZWQgdGhlIHNlcnZpY2Ugd29ya2VyIHNjcmlwdCBpcyByZS1nZW5lcmF0ZWQsPC9wPgo8cD5XaGVuIHRoZSBzZXJ2aWNlIHdvcmtlciBzY3JpcHQgaXMgcmUtZ2VuZXJhdGVkIGl0IG1heSBub3QgYmUgcmVmcmVzaGVkIG9uIHRoZSB1c2VycyBicm93c2VyIHVudGlsIHRoZSBuZXh0IHRpbWUgYSB2aXNpdHMgYSBwYWdlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGphdmFzY3JpcHQgdGFncyB3aGVyZSB0aGUgc2VydmljZSB3b3JrZXIgaXMgcmVnaXN0ZXJlZC48L3A+Cgo8aDM+U2VuZGluZyB3ZWItcHVzaCBub3RpZmZpY2F0aW9ucy48L2gzPgo8cD5BIHRhYiBpbiB0aGUgbW9kdWxlJ3MgYWRtaW4gcGFuZWwgYWxsb3dzIHNlbmRpbmcgYSB3ZWIgcHVzaCBub3RpZmljYXRpb24gdG8gYW4gRkVVIGdyb3VwLiAgSXQgcHJvdmlkZXMgZm9yIGZpZWxkcyB0byBzcGVjaWZ5IGEgcmVxdWlyZWQgbWVzc2FnZSBib2R5ICh1cCB0byAxMDAwIGNoYXJzKSwgYW4gb3B0aW9uYWwgdGl0bGUsIGFuZCBhIFVSTCB0byBvcGVuIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBpcyBjbGlja2VkIG9uLjwvcD4KCjxoMz5SZXF1aXJlbWVudHM6PC9oMz4KPHVsPgogIDxsaT5Zb3VyIHNpdGUgbXVzdCBiZSB1c2luZyBIVFRQUy48L2xpPgogIDxsaT5UaGUgaHR0cCBwcm9jZXNzIG11c3QgYmUgYWJsZSB0byB3cml0ZSB0byB0aGUgcm9vdCBvZiB5b3VyIENNU01TIGluc3RhbGxhdGlvbi48L2xpPgogIDxsaT5PcGVuU1NMLCBjdXJsLCBtdWx0aWJ5dGUgc3VwcG9ydCwgbWNyeXB0LCBhbmQgb3RoZXIgbGlicmFyaWVzIGluc3RhbGxlZCBpbiB0aGUgUEhQIGVudmlyb25tZW50LjwvbGk+CiAgPGxpPkluIG9yZGVyIHRvIHJlY2VpdmUgd2ViLXB1c2ggbm90aWZpY2F0aW9ucywgdXNlcnMgbXVzdCBoYXZlIHRoZSBzdXBwb3J0ZWQgYnJvd3NlciB0aGF0IHRoZXkgdXNlZCB0byBzdWJzY3JpYmUgb3BlbiBhbmQgcnVubmluZy4gIEJ1dCB0aGV5IGRvIG5vdCBoYXZlIHRvIGhhdmUgYSB0YWIgb3IgYSB3aW5kb3cgYWN0aXZlbHkgcG9pbnRpbmcgdG8geW91ciB3ZWJzaXRlLjwvbGk+CjwvdWw+Cgo8aDM+QXZhaWxhYmxlIEFjdGlvbnM8L2gzPgo8dWw+CiAgPGxpPmpzIC0gSW5zZXJ0cyB0aGUgamF2YXNjcmlwdCByZXF1aXJlZCB0byByZWdpc3RlciBhbmQgYWN0aXZhdGUgdGhlIHNlcnZpY2Ugd29ya2VyLCAgYW5kIHRvIHdvcmsgd2l0aCB0aGUgc3Vic2NyaXB0aW9uIFVJLjwvbGk+CiAgPGxpPnN1YnNjcmliZSAtIERpc3BsYXlzIGEgYnV0dG9uIHRoYXQgYWxsb3dzIGEgbG9nZ2VkIGluIEZFVSB1c2VyIHRvIHN1YnNjcmliZSBhbmQgdW5zdWJzY3JpYmUuICBXaWxsIGFsc28gZGlzcGxheSBhIHN0YXR1cyBpZiB0aGUgYnJvd3NlciBpcyBub3QgY29tcGF0aWJsZS48L2xpPgogIDxsaT51bnN1YnNjcmliZV9hbGwgLSBBIHNpbXBsZSBhY3Rpb24gdG8gYWxsb3cgYSBsb2dnZWQgaW4gRkVVIHVzZXIgdG8gdW5zdWJzY3JpYmUgZnJvbSBhbGwgbm90aWZpY2F0aW9ucyBmcm9tIGFsbCBvZiBoaXMgcmVnaXN0ZXJlZCBkZXZpY2VzLiAgT25jZSBjb21wbGV0ZSwgdGhpcyBhY3Rpb24gd2lsbCByZWRpcmVjdCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBjb250ZW50IHBhZ2UuPC9saT4KPC91bD4KCjxoMz5Ccm93c2VyIGNvbXBhdGliaWxpdHk8L2gzPgo8cD5DdXJyZW50bHkgd2ViLXB1c2ggdGVjaG5vbG9neSBpcyBzdXBwb3J0ZWQgYnkgb25seSBzb21lIGJyb3dzZXJzLiAgIE1vc3Qgb2YgdGhlc2UgYXJlOjwvcD4KPHVsPgogICA8bGk+Q2hyb21lIG9uIEFuZHJvaWQsIFdpbmRvd3MsIExpbnV4LCBhbmQgTWFjT1M8L2xpPgogICA8bGk+RmlyZWZveCBvbiBBbmRyb2lkLCBXaW5kb3dzLCBMaW51eCwgYW5kIE1hY09TPC9saT4KICAgPGxpPlNhZmFyaSBvbiBNYWNPUyBhbmQgTGludXg8L2xpPgo8L3VsPgo8cD5Jb3Mgc3VwcG9ydCBpcyBwdXJwb3J0ZWRseSAmcXVvdDtpbiBkZXZlbG9wbWVudCZxdW90OyBzbyBzdGF5IHR1bmVkLjwvcD4KCjxoMz5DYXZlYXRzPC9oMz4KPHA+U2VuZGluZyBsYXJnZSBhbW91bnRzIG9mIG5vdGlmaWNhdGlvbnMgY2FuIGJlIHBhcnRpY3VsYXJseSBzbG93IGR1ZSB0byB0aGUgbmVlZCB0byBwZXJmb3JtIG11bHRpcGxlIG91dGdvaW5nIHJlcXVlc3RzLiAgVGhlcmVmb3JlIGl0IGlzIGJlc3QgaWYgeW91IHVzZSB0aGUgIndlYnB1c2gtZmV1LWdyb3VwIiBjb21tYW5kIHByb3ZpZGVkIGJ5IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvY21zY2xpIj5jbXNjbGk8L2E+LiBBcyB0aGVyZSBhcmUgbm8gdGltZSByZXN0cmljdGlvbnMgaW4gdGhlIENMSSBlbnZpcm9ubWVudCBhcyBvcHBvc2VkIHRvIHRoZSB3ZWIgZW52aXJvbm1lbnQuPC9wPgoKPGgzPkphdmFzY3JpcHQgQVBJPC9oMz4KPHA+YWxsIGZ1bmN0aW9ucyBhcmUgY29udGFpbmVkIHdpdGhpbiB0aGUgZ2xvYmFsIGphdmFzY3JpcHQgb2JqZWN0IG5hbWVkICZxdW90O2NnV2ViUHVzaCZxdW90Oy4gIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBmdW5jdGlvbnMgYXJlOjwvcD4KPHVsPgogIDxsaT48Y29kZT5ib29sIGNnV2ViUHVzaC5pc19zdWJzY3JpYmVkKCk8L2NvZGU+IC0gQSBmdW5jdGlvbiB0byByZXR1cm4gaWYgdGhlIHVzZXIgaXMgc3Vic2NyaWJlZCBvciBub3QuICBXaWxsIHJldHVybiB0cnVlIGlmIHRoZSB1c2VyIGhhcyBjb21wbGV0ZWQgYWxsIHN0ZXBzIGluIHRoaXMgYnJvd3NlciB0byBzdWJzY3JpYmUgdG8gcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLmlzX2NvbXBhdGlibGUoKTwvY29kZT4gLSBSZXR1cm5zIHRydWUgaWYgdGhlIGN1cnJlbnQgYnJvd3NlciBzdXBwb3J0cyB3ZWItcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLmlzX2RlbmllZCgpPC9jb2RlPiAtIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlciBoYXMgYWN0aXZlbHkgZGVuaWVkIHB1c2ggbm90aWZpY2F0aW9ucy48L2xpPgogIDxsaT48Y29kZT5ib29sIGNnV2ViUHVzaC5zdWJzY3JpYmUoKTwvY29kZT4gLSBXaWxsIHN1YnNjcmliZSBhIHVzZXIsIGlmIHRoZXkgaGF2ZSBub3QgZXhwbGljaXRseSBibG9ja2VkIHB1c2ggbm90aWZpY2F0aW9ucyBBTkQgdGhlIGN1cnJlbnQgYnJvd3NlciBzdXBwb3J0cyB3ZWItcHVzaCBub3RpZmljYXRpb25zLjwvbGk+CiAgPGxpPjxjb2RlPmJvb2wgY2dXZWJQdXNoLnVuc3Vic2NyaWJlKCk8L2NvZGU+IC0gV2lsbCB1bnN1YnNjcmliZSBhIHN1YnNjcmliZWQgdXNlciwgaWYgdGhlIGJyb3dzZXIgcGVybWl0cyBpdC48L2xpPgo8L3VsPgoKPGgzPlBIUCBBUEk8L2gzPgo8cD5UaGlzIG1vZHVsZSBoYXMgYSBzaW1wbGUgQVBJIHRvIGFsbG93IGNyZWF0aW5nIGFuZCBzZW5kaW5nIHdlYi1wdXNoIG5vdGlmaWN0aW9ucy4gICBEb2N1bWVudGF0aW9uIGNvbWluZyBzb29uLjwvcD4KCjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhlIG1vZHVsZSBhdXRob3IgaXMgaW4gbm8gd2F5IG9ibGlnYXRlZCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoaXMgY29kZSBpbiBhbnkgZmFzaGlvbi4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5BIGJ1ZyB0cmFja2luZyBhbmQgZmVhdHVyZSByZXF1ZXN0IHN5c3RlbSBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGlzIG1vZHVsZSA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL2Zyb250ZW5kdXNlcnMiPmhlcmU8L2E+LiAgUGxlYXNlIGJlIHZlcmJvc2UgYW5kIGRlc2NyaXB0aXZlIHdoZW4gc3VibWl0dGluZyBidWcgcmVwb3J0cyBhbmQgZmVhdHVyZSByZXF1ZXN0cywgYW5kIGZvciBidWcgcmVwb3J0cyBlbnN1cmUgdGhhdCB5b3UgaGF2ZSBwcm92aWRlZCBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHRvIHJlbGlhYmx5IHJlcHJvZHVjZSB0aGUgaXNzdWUuPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi4gIFdoZW4gZGVzY3JpYmluZyBhbiBpc3N1ZSBwbGVhc2UgbWFrZSBhbiBlZmZvcnQgdG8gcHJvdmlkZSBhbGwgcmVsYXZhbnQgaW5mb3JtYXRpb24sIGEgdGhvcm91Z2ggZGVzY3JpcHRpb24gb2YgeW91ciBpc3N1ZSwgYW5kIHN0ZXBzIHRvIHJlcHJvZHVjZSBpdCBvciB5b3VyIGRpc2N1c3Npb24gbWF5IGJlIGlnbm9yZWQuPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS4gIEhvd2V2ZXIsIHBsZWFzZSB1c2UgdGhpcyBhcyBhIGxhc3QgcmVzb3J0LCBhbmQgZW5zdXJlIHRoYXQgeW91IGhhdmUgZm9sbG93ZWQgYWxsIGFwcGxpY2FibGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSBmb3JnZSwgaW4gdGhlIGZvcnVtcywgZXRjLjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbGwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/cgWebPush.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dmFyIGNnV2ViUHVzaCA9IG5ldyBmdW5jdGlvbigpIHsKICAgIHZhciAgX2VsLCBfa2V5LCBfYWpheF91cmwsIF9zdWJzY3JpYmVkLCBfZGVuaWVkOwogICAgdmFyIF9jb21wYXRpYmxlID0gdHJ1ZTsKCiAgICBmdW5jdGlvbiBjaGFuZ2VQdXNoQnV0dG9uU3RhdGUgKHN0YXRlKSB7CgkvLyBpZiBhbiBlbGVtZW50IGhhcyBub3QgYmVlbiBzZXQuLi4gZG8gbm90aGluZy4KCWlmKCAhX2VsICkgcmV0dXJuOwoJZWwgPSBfZWxbMF07CiAgICAgICAgc3dpdGNoIChzdGF0ZSkgewogICAgICAgIGNhc2UgJ2VuYWJsZWQnOgogICAgICAgICAgICAgICAgZWwuZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gIkRpc2FibGUgUHVzaCBub3RpZmljYXRpb25zIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdkaXNhYmxlZCc6CiAgICAgICAgICAgICAgICBlbC5kaXNhYmxlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgZWwudGV4dENvbnRlbnQgPSAiRW5hYmxlIFB1c2ggbm90aWZpY2F0aW9ucyI7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnY29tcHV0aW5nJzoKICAgICAgICAgICAgICAgIGVsLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGVsLnRleHRDb250ZW50ID0gIkxvYWRpbmcuLi4iOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ2luY29tcGF0aWJsZSc6CiAgICAgICAgICAgICAgICBlbC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICBlbC50ZXh0Q29udGVudCA9ICJQdXNoIG5vdGlmaWNhdGlvbnMgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggdGhpcyBicm93c2VyIjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5oYW5kbGVkIHB1c2ggYnV0dG9uIHN0YXRlJywgc3RhdGUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHVybEJhc2U2NFRvVWludDhBcnJheShiYXNlNjRTdHJpbmcpIHsKICAgICAgICBjb25zdCBwYWRkaW5nID0gJz0nLnJlcGVhdCgoNCAtIGJhc2U2NFN0cmluZy5sZW5ndGggJSA0KSAlIDQpOwogICAgICAgIGNvbnN0IGJhc2U2NCA9IChiYXNlNjRTdHJpbmcgKyBwYWRkaW5nKQogICAgICAgICAgICAucmVwbGFjZSgvXC0vZywgJysnKQogICAgICAgICAgICAucmVwbGFjZSgvXy9nLCAnLycpOwoKICAgICAgICBjb25zdCByYXdEYXRhID0gd2luZG93LmF0b2IoYmFzZTY0KTsKICAgICAgICBjb25zdCBvdXRwdXRBcnJheSA9IG5ldyBVaW50OEFycmF5KHJhd0RhdGEubGVuZ3RoKTsKCiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByYXdEYXRhLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgIG91dHB1dEFycmF5W2ldID0gcmF3RGF0YS5jaGFyQ29kZUF0KGkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gb3V0cHV0QXJyYXk7CiAgICB9CgogICAgZnVuY3Rpb24gdXBkYXRlX3N1YnNjcmlwdGlvbigpIHsKCS8vIGNhbGxlZCBvbiBzdGFydHVwLi4uCgluYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWFkeS50aGVuKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gPT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5wdXNoTWFuYWdlci5nZXRTdWJzY3JpcHRpb24oKSkKCSAgICAudGhlbihzdWJzY3JpcHRpb24gPT4gewoJCS8vIGdldCBoZXJlIHdoZW4gc2VydmljZSB3b3JrZXIgaXMgcmVhZHkuCgkJaWYgKCFzdWJzY3JpcHRpb24pIHsKCQkgICAgLy8gV2UgYXJlbid0IHN1YnNjcmliZWQgdG8gcHVzaCwgc28gc2V0IFVJIHRvIGFsbG93IHRoZSB1c2VyIHRvIGVuYWJsZSBwdXNoCgkJICAgIGNoYW5nZVB1c2hCdXR0b25TdGF0ZSgnZGlzYWJsZWQnKTsKCQkgICAgcmV0dXJuOwoJCX0KCgkJLy8gaGF2ZSBhIHN1YnNjcmlwdGlvbiBmb3IgdGhlIHJpZ2h0IGtleS4uLiBwdXQgaXQgaW50byB0aGUgc2VydmVyCgkJLy8gYWxzbyBrZWVwcyBvdXIgc2VydmVyIGluIHN5bmMgaW5jYXNlIHRoZSBwcm9wZXJ0eSB3YXMgZGVsZXRlZAoJCXJldHVybiBzZW5kX3N1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24sICdQVVQnKS50aGVuKGZ1bmN0aW9uKCl7CgkJICAgIF9zdWJzY3JpYmVkID0gdHJ1ZTsKCQkgICAgY2hhbmdlUHVzaEJ1dHRvblN0YXRlKCAnZW5hYmxlZCcgKTsKCQl9KQoJICAgIH0pCgkgICAgLmNhdGNoKGUgPT4gewoJCWNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoZW4gdXBkYXRpbmcgdGhlIHN1YnNjcmlwdGlvbicsIGUpOwoJICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHNlbmRfc3Vic2NyaXB0aW9uKCBzdWJzY3JpcHRpb24sIG1ldGhvZCApIHsKICAgICAgICBjb25zdCBrZXkgPSBzdWJzY3JpcHRpb24uZ2V0S2V5KCdwMjU2ZGgnKTsKICAgICAgICBjb25zdCB0b2tlbiA9IHN1YnNjcmlwdGlvbi5nZXRLZXkoJ2F1dGgnKTsKCglpZiggISBfYWpheF91cmwgKSByZXR1cm47CgogICAgICAgIHJldHVybiBmZXRjaCggX2FqYXhfdXJsLCB7CiAgICAgICAgICAgIG1ldGhvZCwKICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICAgICAgZW5kcG9pbnQ6IHN1YnNjcmlwdGlvbi5lbmRwb2ludCwKICAgICAgICAgICAgICAgIGtleToga2V5ID8gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIG5ldyBVaW50OEFycmF5KGtleSkpKSA6IG51bGwsCiAgICAgICAgICAgICAgICB0b2tlbjogdG9rZW4gPyBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgbmV3IFVpbnQ4QXJyYXkodG9rZW4pKSkgOiBudWxsCiAgICAgICAgICAgIH0pLAoJICAgIGhlYWRlcnM6IHsKCQknQWNjZXB0JzogICdhcHBsaWNhdGlvbi9qc29uJywKCQknQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLAoJCSdDYWNoZSc6ICduby1jYWNoZScJICAgIH0sCgkgICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicKICAgICAgICB9KS50aGVuKCgpID0+IHN1YnNjcmlwdGlvbik7CiAgICB9CgogICAgdGhpcy5zZXRfdmFwaWRfa2V5ID0gZnVuY3Rpb24oIGtleSApIHsKCV9rZXkgPSBrZXk7CiAgICB9CgogICAgdGhpcy5zZXRfZWxlbWVudCA9IGZ1bmN0aW9uKCBlbGVtZW50ICkgewoJX2VsID0gJChlbGVtZW50KTsKICAgIH0KCiAgICB0aGlzLnNldF9hamF4X3VybCA9IGZ1bmN0aW9uKCB1cmwgKSB7CglfYWpheF91cmwgPSB1cmw7CiAgICB9CgogICAgdGhpcy5pc19zdWJzY3JpYmVkID0gZnVuY3Rpb24oKSB7CglpZiggISBfY29tcGF0aWJsZSApIHJldHVybiBmYWxzZTsKCXJldHVybiBfc3Vic2NyaWJlZDsKICAgIH0KCiAgICB0aGlzLmlzX2NvbXBhdGlibGUgPSBmdW5jdGlvbigpIHsKCXJldHVybiBfY29tcGF0aWJpbGU7CiAgICB9CgogICAgdGhpcy5pc19kZW5pZWQgPSBmdW5jdGlvbigpIHsKCXJldHVybiBfZGVuaWVkOwogICAgfQoKICAgIHRoaXMudW5zdWJzY3JpYmUgPSBmdW5jdGlvbigpIHsKICAgICAgICBjaGFuZ2VQdXNoQnV0dG9uU3RhdGUoJ2NvbXB1dGluZycpOwoJY29uc29sZS5kZWJ1ZygndW5zdWJzY3JpYmUnKTsKCiAgICAgICAgLy8gVG8gdW5zdWJzY3JpYmUgZnJvbSBwdXNoIG1lc3NhZ2luZywgeW91IG5lZWQgdG8gZ2V0IHRoZSBzdWJzY3JpcHRpb24gb2JqZWN0CiAgICAgICAgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVhZHkKICAgICAgICAgICAgLnRoZW4oc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbiA9PiBzZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLnB1c2hNYW5hZ2VyLmdldFN1YnNjcmlwdGlvbigpKQogICAgICAgICAgICAudGhlbihzdWJzY3JpcHRpb24gPT4gewoJCS8vIENoZWNrIHRoYXQgd2UgaGF2ZSBhIHN1YnNjcmlwdGlvbiB0byB1bnN1YnNjcmliZQoJCWlmICghc3Vic2NyaXB0aW9uKSB7CgkJICAgIF9zdWJzY3JpYmVkID0gZmFsc2U7CgkJICAgIGNvbnNvbGUuZGVidWcoJ25vIGxvbmdlciBzdWJzY3JpYmVkJykKICAgICAgICAgICAgICAgICAgICAvLyBObyBzdWJzY3JpcHRpb24gb2JqZWN0LCBzbyBzZXQgdGhlIHN0YXRlCiAgICAgICAgICAgICAgICAgICAgLy8gdG8gYWxsb3cgdGhlIHVzZXIgdG8gc3Vic2NyaWJlIHRvIHB1c2gKICAgICAgICAgICAgICAgICAgICBjaGFuZ2VQdXNoQnV0dG9uU3RhdGUoJ2Rpc2FibGVkJyk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwoJCX0KCgkJcmV0dXJuIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpCgkJICAgIC50aGVuKGZ1bmN0aW9uKCl7CgkJCXJldHVybiBzZW5kX3N1YnNjcmlwdGlvbihzdWJzY3JpcHRpb24sJ0RFTEVURScpCgkJCSAgICAudGhlbihmdW5jdGlvbigpewoJCQkJX3N1YnNjcmliZWQgPSBmYWxzZTsKCQkJCWNoYW5nZVB1c2hCdXR0b25TdGF0ZSgnZGlzYWJsZWQnKTsKCQkJCXJldHVybjsKCQkJICAgIH0pOwoJCSAgICB9KQoKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLmNhdGNoKGUgPT4gewoJCS8vIFdlIGZhaWxlZCB0byB1bnN1YnNjcmliZSwgdGhpcyBjYW4gbGVhZCB0bwoJCS8vIGFuIHVudXN1YWwgc3RhdGUsIHNvICBpdCBtYXkgYmUgYmVzdCB0byByZW1vdmUKCQkvLyB0aGUgdXNlcnMgZGF0YSBmcm9tIHlvdXIgZGF0YSBzdG9yZSBhbmQKCQkvLyBpbmZvcm0gdGhlIHVzZXIgdGhhdCB5b3UgaGF2ZSBkb25lIHNvCgkJY29uc29sZS5lcnJvcignRXJyb3Igd2hlbiB1bnN1YnNjcmliaW5nIHRoZSB1c2VyJywgZSk7CgkJX3N1YnNjcmliZWQgPSBmYWxzZTsKCQljaGFuZ2VQdXNoQnV0dG9uU3RhdGUoJ2Rpc2FibGVkJyk7CiAgICAgICAgICAgIH0pOwogICAgfQoKICAgIHRoaXMuc3Vic2NyaWJlID0gZnVuY3Rpb24oKSB7CiAgICAgICAgY2hhbmdlUHVzaEJ1dHRvblN0YXRlKCdjb21wdXRpbmcnKTsKCWNvbnNvbGUuZGVidWcoJ3N1YnNjcmliZScpOwogICAgICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlYWR5CiAgICAgICAgICAgIC50aGVuKHNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24gPT4gc2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5wdXNoTWFuYWdlci5zdWJzY3JpYmUoewoJCXVzZXJWaXNpYmxlT25seTogdHJ1ZSwKCQlhcHBsaWNhdGlvblNlcnZlcktleTogdXJsQmFzZTY0VG9VaW50OEFycmF5KF9rZXkpLAogICAgICAgICAgICB9KSkKICAgICAgICAgICAgLnRoZW4oc3Vic2NyaXB0aW9uID0+IHsKCQkvLyBTdWJzY3JpcHRpb24gd2FzIHN1Y2Nlc3NmdWwKCQkvLyBjcmVhdGUgc3Vic2NyaXB0aW9uIG9uIHlvdXIgc2VydmVyCgkJcmV0dXJuIHNlbmRfc3Vic2NyaXB0aW9uKHN1YnNjcmlwdGlvbiwgJ1BPU1QnKTsKICAgICAgICAgICAgfSkKICAgICAgICAgICAgLnRoZW4oc3Vic2NyaXB0aW9uID0+IHsKCQlpZiggc3Vic2NyaXB0aW9uICkgewoJCSAgICBfc3Vic2NyaWJlZCA9IHRydWU7CgkJICAgIGNoYW5nZVB1c2hCdXR0b25TdGF0ZSggJ2VuYWJsZWQnICk7CgkJfQoJICAgIH0pCiAgICAgICAgICAgIC5jYXRjaChlID0+IHsKCQlpZiAoTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gPT09ICdkZW5pZWQnKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgZGVuaWVkIHRoZSBub3RpZmljYXRpb24gcGVybWlzc2lvbiB3aGljaAogICAgICAgICAgICAgICAgICAgIC8vIG1lYW5zIHdlIGZhaWxlZCB0byBzdWJzY3JpYmUgYW5kIHRoZSB1c2VyIHdpbGwgbmVlZAogICAgICAgICAgICAgICAgICAgIC8vIHRvIG1hbnVhbGx5IGNoYW5nZSB0aGUgbm90aWZpY2F0aW9uIHBlcm1pc3Npb24gdG8KICAgICAgICAgICAgICAgICAgICAvLyBzdWJzY3JpYmUgdG8gcHVzaCBtZXNzYWdlcwogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTm90aWZpY2F0aW9ucyBhcmUgZGVuaWVkIGJ5IHRoZSB1c2VyLicpOwogICAgICAgICAgICAgICAgICAgIGNoYW5nZVB1c2hCdXR0b25TdGF0ZSgnaW5jb21wYXRpYmxlJyk7CgkJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBBIHByb2JsZW0gb2NjdXJyZWQgd2l0aCB0aGUgc3Vic2NyaXB0aW9uOyBjb21tb24gcmVhc29ucwogICAgICAgICAgICAgICAgICAgIC8vIGluY2x1ZGUgbmV0d29yayBlcnJvcnMgb3IgdGhlIHVzZXIgc2tpcHBlZCB0aGUgcGVybWlzc2lvbgogICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ltcG9zc2libGUgdG8gc3Vic2NyaWJlIHRvIHB1c2ggbm90aWZpY2F0aW9ucycsIGUpOwogICAgICAgICAgICAgICAgICAgIGNoYW5nZVB1c2hCdXR0b25TdGF0ZSgnZGlzYWJsZWQnKTsKCQl9CiAgICAgICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHJlZ2lzdGVyX3dvcmtlcigpIHsKCS8vIGNhbGxlZCBvbiBzdGFydHVwLgoJbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoImNnX3B1c2hTZXJ2aWNlV29ya2VyLmpzIikKCSAgICAudGhlbigoKSA9PiB7CgkJY29uc29sZS5sb2coJ1tTV10gU2VydmljZSB3b3JrZXIgaGFzIGJlZW4gcmVnaXN0ZXJlZCcpOwoJCXVwZGF0ZV9zdWJzY3JpcHRpb24oKTsKCSAgICB9LCBlID0+IHsKCQljb25zb2xlLmVycm9yKCdbU1ddIFNlcnZpY2Ugd29ya2VyIHJlZ2lzdHJhdGlvbiBmYWlsZWQnLCBlKTsKCQlfY29tcGF0aWJsZSA9IGZhbHNlOwoJCWNoYW5nZVB1c2hCdXR0b25TdGF0ZSgnaW5jb21wYXRpYmxlJyk7CgkgICAgfSk7CiAgICB9CgogICAgdGhpcy5zdGFydF91aSAgPSBmdW5jdGlvbigpIHsKCXZhciBzZWxmID0gdGhpczsKCWlmKCAhX2tleSB8fCAhX2FqYXhfdXJsICkgdGhyb3cgIkluc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBzdGFydHVwIjsKCgljaGFuZ2VQdXNoQnV0dG9uU3RhdGUoICdjb21wdXRpbmcnICk7CglpZiggISgnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yKSApIHsKCSAgICBjb25zb2xlLndhcm4oJ1NlcnZpY2Ugd29ya2VycyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXInKTsKCSAgICBfY29tcGF0aWJsZSA9IGZhbHNlOwoJICAgIGNoYW5nZVB1c2hCdXR0b25TdGF0ZSggJ2luY29tcGF0aWJsZScgKTsKCSAgICByZXR1cm47Cgl9IGVsc2UgaWYoICEoJ1B1c2hNYW5hZ2VyJyBpbiB3aW5kb3cpICkgewoJICAgIGNvbnNvbGUud2FybignUHVzaCBub3RpZmljYXRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnJvd3NlcicpOwoJICAgIF9jb21wYXRpYmxlID0gZmFsc2U7CgkgICAgY2hhbmdlUHVzaEJ1dHRvblN0YXRlKCAnaW5jb21wYXRpYmxlJyApOwoJICAgIHJldHVybjsKCX0gZWxzZSBpZiggISgnc2hvd05vdGlmaWNhdGlvbicgaW4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5wcm90b3R5cGUpICkgewoJICAgIGNvbnNvbGUud2FybignTm90aWZpY2F0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXInKTsKCSAgICBfY29tcGF0aWJsZSA9IGZhbHNlOwoJICAgIGNoYW5nZVB1c2hCdXR0b25TdGF0ZSggJ2luY29tcGF0aWJsZScgKTsKCSAgICByZXR1cm47Cgl9CgoJLy8gd2UgYXJlIGNvbXBhdGlibGUuLi4KCS8vIHVubGVzcyB0aGUgdXNlciBoYXMgZXhwbGljaXRseSBkZW5pZWQgdXMuCgoJaWYgKE5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09PSAnZGVuaWVkJykgewoJICAgIGNvbnNvbGUud2FybignTm90aWZpY2F0aW9ucyBhcmUgZGVuaWVkIGJ5IHRoZSB1c2VyJyk7CgkgICAgX2NvbXBhdGlibGUgPSBmYWxzZTsKCSAgICBfZGVuaWVkID0gdHJ1ZTsKCSAgICBjaGFuZ2VQdXNoQnV0dG9uU3RhdGUoJ2luY29tcGF0aWJsZScpOwoJICAgIHJldHVybjsKCX0KCgkvLyByZWdpc3RlciB0aGUgc2VydmljZSB3b3JrZXIuCglyZWdpc3Rlcl93b3JrZXIoKTsKCgkvLyBoYW5kbGUgYnV0dG9uIGNsaWNrLgoJaWYoIF9lbCApIF9lbC5jbGljayhmdW5jdGlvbihldil7CgkgICAgaWYoIHNlbGYuaXNfc3Vic2NyaWJlZCgpICkgewoJCXNlbGYudW5zdWJzY3JpYmUoKTsKCSAgICB9IGVsc2UgewoJCXNlbGYuc3Vic2NyaWJlKCk7CgkgICAgfQoJfSk7CiAgICB9Cn0gLy8gZW5kIG9mIGNnV2ViUHVzaAo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ3RvcGljJ10gPSAnVG9waWMnOwokbGFuZ1sncHVzaF9zdWNjZXNzZnVsX24nXSA9ICdTZW50ICVkIHB1c2ggbm90aWZpY2F0aW9ucyc7CiRsYW5nWydmZXVfZ3JvdXAnXSA9ICdGRVUgR3JvdXAnOwokbGFuZ1snc2VuZCddID0gJ1NlbmQnOwokbGFuZ1snYm9keSddID0gJ0JvZHknOwokbGFuZ1sndXJsJ10gPSAnVVJMJzsKJGxhbmdbJ3RhYl9zZW5kcHVzaCddID0gJ1NlbmQgV2ViUHVzaCBOb3RpZmljYXRpb25zJzsKJGxhbmdbJ3RhYl9wcmVmcyddID0gJ1NldHRpbmdzJzsKJGxhbmdbJ3VwZGF0ZV9zdyddID0gJ1VwZGF0ZSBTZXJ2aWNlIFdvcmtlcic7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIG1vZHVsZS4gQWxsIFZBUElEIGtleXMgYW5kIHN1YnNjcmlwdGlvbiBpbmZvcm1hdGlvbiB3aWxsIGJlIGxvc3QnOwokbGFuZ1snaW5mb190aXRsZSddID0gJ1NwZWNpZnkgYSB0aXRsZSB0byB1c2UgZm9yIGFsbCBub3RpZmljYXRpb25zLiAgSWYgbm90IHNwZWNpZmllZCwgdGhlIHNpdGUgbmFtZSB3aWxsIGJlIHVzZWQnOwokbGFuZ1snaW5mb19pY29uJ10gPSAnQW4gb3B0aW9uYWwgaWNvbiB0byBkaXNwbGF5IGZvciBhbGwgbm90aWZpY2F0aW9ucy4gIFBsZWFzZSBzZWxlY3QgYSBzcXVhcmUgaW1hZ2Ugb2Ygc2l6ZSA5Nng5NiBvciBncmVhdGVyLic7CiRsYW5nWydnZW5lcmF0ZV9rZXlzJ10gPSAnR2VuZXJhdGUga2V5cyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0NHV2ViUHVzaCBpcyBpbnN0YWxsZWQuICBQbGVhc2UgdmlzaXQgdGhlIGFkbWluIHBhbmVsIG9mIHRoaXMgbW9kdWxlIGZvciBjb25maWd1cmF0aW9uJzsKJGxhbmdbJ3dhcm5fbm9rZXlzJ10gPSAnWW91IGhhdmUgbm90IGNyZWF0ZWQgYW55IG1lc3NhZ2luZyBrZXlzLiAgVGhpcyBtb2R1bGUgaXMgY3VycmVudGx5IG5vdCBmdW5jdGlvbmFsJzsKJGxhbmdbJ2NvbmZpcm1fbmV3a2V5cyddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBnZW5lcmF0ZSBuZXcga2V5cy4gIFlvdXIgY3VycmVudCBzdWJzY3JpYmVyIGluZm9ybWF0aW9uIHdpbGwgYmUgY29tcGxldGVseSBpbnZhbGlkYXRlZCBpZiB5b3UgY29udGludWU/JzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NHV2ViUHVzaCc7CiRsYW5nWyd0aXRsZSddID0gJ1RpdGxlJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1N1Ym1pdCc7CiRsYW5nWydpY29uJ10gPSAnSWNvbic7]]></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+bnVsbCwgJ3R0bCc9Pm51bGwgXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIGFycmF5ICRkYXRhID0gbnVsbCApCiAgICB7CiAgICAgICAgaWYoIGlzX2FycmF5KCAkZGF0YSAmJiBjb3VudCgkZGF0YSkpICkgewogICAgICAgICAgICBmb3JlYWNoKCAkZGF0YSBhcyAka2V5ID0+ICR2YWwgKSB7CiAgICAgICAgICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgICAgICAgICBjYXNlICd0aXRsZSc6CiAgICAgICAgICAgICAgICBjYXNlICdib2R5JzoKICAgICAgICAgICAgICAgIGNhc2UgJ3VybCc6CiAgICAgICAgICAgICAgICBjYXNlICdpY29uJzoKICAgICAgICAgICAgICAgIGNhc2UgJ3RvcGljJzoKICAgICAgICAgICAgICAgIGNhc2UgJ2ltYWdlJzoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAndHRsJzoKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X2RhdGFbJGtleV0gPSBtYXgoMCwoaW50KSAkdmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCggJGtleSApCiAgICB7CiAgICAgICAgc3dpdGNoKCAka2V5ICkgewogICAgICAgIGNhc2UgJ3RpdGxlJzoKICAgICAgICBjYXNlICdib2R5JzoKICAgICAgICBjYXNlICd1cmwnOgogICAgICAgIGNhc2UgJ2ljb24nOgogICAgICAgIGNhc2UgJ3RvcGljJzoKICAgICAgICBjYXNlICdpbWFnZSc6CiAgICAgICAgICAgIHJldHVybiB0cmltKCR0aGlzLT5fZGF0YVska2V5XSk7CgogICAgICAgIGNhc2UgJ3R0bCc6CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJGtleV07CiAgICAgICAgfQogICAgfQoKICAgIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBfX3NldCggJGtleSwgJHZhbHVlICkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCIka2V5IGlzIG5vdCBhIHNldHRhYmxlIG1lbWJlciBvZiAiLmdldF9jbGFzcygkdGhpcykpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGp1c3RXaXRoKCAka2V5LCAkdmFsdWUgKQogICAgewogICAgICAgICRvYmogPSBjbG9uZSAkdGhpczsKICAgICAgICBzd2l0Y2goICRrZXkgKSB7CiAgICAgICAgY2FzZSAndGl0bGUnOgogICAgICAgIGNhc2UgJ2JvZHknOgogICAgICAgIGNhc2UgJ3VybCc6CiAgICAgICAgY2FzZSAnaWNvbic6CiAgICAgICAgY2FzZSAndG9waWMnOgogICAgICAgIGNhc2UgJ2ltYWdlJzoKICAgICAgICAgICAgJG9iai0+X2RhdGFbJGtleV0gPSB0cmltKCR2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICd0dGwnOgogICAgICAgICAgICAkb2JqLT5fZGF0YVska2V5XSA9IG1heCgwLChpbnQpICR2YWx1ZSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG9iajsKICAgIH0KfSAvLyBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCmZpbmFsIGNsYXNzIHV0aWxzCnsKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3B1YmxpY192YXBpZF9rZXkoKQogICAgewogICAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9DR1dFQlBVU0gpOwogICAgICAgICRvdXQgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCd2YXBpZF9wdWJsaWMnKTsKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9wcml2YXRlX3ZhcGlkX2tleSgpCiAgICB7CiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX0NHV0VCUFVTSCk7CiAgICAgICAgcmV0dXJuICRtb2QtPkdldFByZWZlcmVuY2UoJ3ZhcGlkX3ByaXZhdGUnKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhdmVLZXlzKCkKICAgIHsKICAgICAgICAkYSA9IHNlbGY6OmdldF9wdWJsaWNfdmFwaWRfa2V5KCk7CiAgICAgICAgJGIgPSBzZWxmOjpnZXRfcHJpdmF0ZV92YXBpZF9rZXkoKTsKICAgICAgICByZXR1cm4gKCRhICYmICRiKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEF1dGgoKQogICAgewogICAgICAgICRjb25maWcgPSBcY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiAgICAgICAgJHN1YmplY3QgPSAkY29uZmlnWydyb290X3VybCddOwogICAgICAgICRvdXQgPSBbICdWQVBJRCcgPT4gWwogICAgICAgICAgICAgICAgJ3N1YmplY3QnID0+ICRzdWJqZWN0LAogICAgICAgICAgICAgICAgJ3B1YmxpY0tleScgPT4gc2VsZjo6Z2V0X3B1YmxpY192YXBpZF9rZXkoKSwKICAgICAgICAgICAgICAgICdwcml2YXRlS2V5JyA9PiBzZWxmOjpnZXRfcHJpdmF0ZV92YXBpZF9rZXkoKSwKICAgICAgICAgICAgICAgIF0gXTsKICAgICAgICAvL2lmKCAhJG91dFsnVkFQSUQnXVsnc3ViamVjdCddICkgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignQ291bGQgbm90IGRldGVybWluZSBhdXRoIHN1YmplY3QuJyk7CiAgICAgICAgcmV0dXJuICRvdXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3cml0ZV9zZXJ2aWNlV29ya2VyKCkKICAgIHsKICAgICAgICAkb3V0ZmlsZSA9IENNU19ST09UX1BBVEguJy9jZ19wdXNoU2VydmljZVdvcmtlci5qcyc7CiAgICAgICAgaWYoIGlzX2ZpbGUoJG91dGZpbGUpICkgewogICAgICAgICAgICBpZiggIWlzX3dyaXRhYmxlKCRvdXRmaWxlKSApIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiJG91dGZpbGUgaXMgbm90IHdyaXRhYmxlIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYoICFpc193cml0YWJsZSggQ01TX1JPT1RfUEFUSCApICkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIiRvdXRmaWxlIGlzIG5vdCB3cml0YWJsZSIpOwogICAgICAgIH0KCiAgICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHV2ViUHVzaCcpOyAvLyBkbyBub3QgdXNlIGRlZmluZSBoZXJlLgogICAgICAgICR0cGwgPSAkbW9kLT5DcmVhdGVTbWFydHlUZW1wbGF0ZSgnc2VydmljZVdvcmtlci50cGwnKTsKCiAgICAgICAgJHRpdGxlID0gdHJpbSgkbW9kLT5HZXRQcmVmZXJlbmNlKCd0aXRsZScpKTsKICAgICAgICBpZiggISR0aXRsZSApICR0aXRsZSA9IHRyaW0oXGNtc19zaXRlcHJlZnM6OmdldCgnc2l0ZW5hbWUnLCdDTVNNUyBTaXRlJykpOwogICAgICAgICR0cGwtPmFzc2lnbignbXNnX3RpdGxlJywkdGl0bGUpOwoKICAgICAgICAkaWNvbiA9IHRyaW0oJG1vZC0+R2V0UHJlZmVyZW5jZSgnaWNvbicpKTsKICAgICAgICBpZiggJGljb24gKSB7CiAgICAgICAgICAgICRpY29uID0gInVwbG9hZHMvJGljb24iOwogICAgICAgIH0KICAgICAgICAkdHBsLT5hc3NpZ24oJ2ljb24nLCRpY29uKTsKCiAgICAgICAgJHR4dCA9ICR0cGwtPmZldGNoKCk7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoICRvdXRmaWxlLCAkdHh0ICk7CiAgICB9Cgp9IC8vIGVuZCBvZiBjbGFzcw==]]></data>
	</file>
	<file>
	  <filename>/lib/class.WebPushCommand.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCiRkaXIgPSBkaXJuYW1lKF9fRElSX18pOwpyZXF1aXJlX29uY2UoICIkZGlyL3ZlbmRvci9hdXRvbG9hZC5waHAiICk7CnVzZSBcQ01TTVNcQ0xJXEFwcDsKdXNlIFxDTVNNU1xDTElcR2V0T3B0RXh0XENvbW1hbmQ7CnVzZSBcQ01TTVNcQ0xJXEdldE9wdEV4dFxPcHRpb247CnVzZSBcQ01TTVNcQ0xJXEdldE9wdEV4dFxHZXRPcHQ7CnVzZSBcR2V0T3B0XE9wZXJhbmQ7CnVzZSBNaW5pc2hsaW5rXFdlYlB1c2hcV2ViUHVzaDsKCmNsYXNzIFdlYlB1c2hDb21tYW5kIGV4dGVuZHMgQ29tbWFuZAp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoIEFwcCAkYXBwICkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCAkYXBwLCAnd2VicHVzaC1mZXUtZ3JvdXAnICk7CiAgICAgICAgJHRoaXMtPnNldERlc2NyaXB0aW9uKCdTZW5kIGEgbWVzc2FnZSB2aWEgd2VicHVzaCcpOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKG51bGwsJ3R0bCcsIEdldE9wdDo6UkVRVUlSRURfQVJHVU1FTlQgKS0+c2V0RGVzY3JpcHRpb24oJ1NldCB0aW1lLXRvLWxpdmUgaW4gaG91cnMnKSApOwogICAgICAgICR0aGlzLT5hZGRPcHRpb24oIE9wdGlvbjo6Q3JlYXRlKG51bGwsJ3RvcGljJywgR2V0T3B0OjpSRVFVSVJFRF9BUkdVTUVOVCApLT5zZXREZXNjcmlwdGlvbignU2V0IHRvcGljJykgKTsKICAgICAgICAkdGhpcy0+YWRkT3B0aW9uKCBPcHRpb246OkNyZWF0ZShudWxsLCd1cmwnLCBHZXRPcHQ6OlJFUVVJUkVEX0FSR1VNRU5UICktPnNldERlc2NyaXB0aW9uKCdVUkwgdG8gbmF2aWdhdGUgdG8gd2hlbiBub3RpZmljYXRpb24gaXMgY2xpY2tlZCcpICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnZmV1Z3JvdXAnLCBPcGVyYW5kOjpSRVFVSVJFRCApICk7CiAgICAgICAgJHRoaXMtPmFkZE9wZXJhbmQoIG5ldyBPcGVyYW5kKCAnbWVzc2FnZScsIE9wZXJhbmQ6OlJFUVVJUkVEICkgKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFuZGxlKCkKICAgIHsKICAgICAgICAkZmV1Z3JvdXAgPSAkdGhpcy0+Z2V0T3BlcmFuZCggJ2ZldWdyb3VwJyApLT52YWx1ZSgpOwogICAgICAgICRtZXNzYWdlID0gJHRoaXMtPmdldE9wZXJhbmQoICdtZXNzYWdlJyApLT52YWx1ZSgpOwoKICAgICAgICAkZmV1ID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfRlJPTlRFTkRVU0VSUyk7CiAgICAgICAgJHF1ZXJ5ID0gbmV3IFxmZXVfdXNlcl9xdWVyeTsKICAgICAgICAkcXVlcnktPmFkZF9hbmRfb3B0KCBcZmV1X3VzZXJfcXVlcnlfb3B0OjpNQVRDSF9HUk9VUCwgJGZldWdyb3VwICk7CiAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggXGZldV91c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfTk9URVhQSVJFRCApOwogICAgICAgICRxdWVyeS0+c2V0X3dlYnJlYWR5KCk7CgogICAgICAgICR1cmwgPSAkdGhpcy0+Z2V0T3B0aW9uKCd1cmwnKS0+dmFsdWUoKTsKICAgICAgICAkb3B0aW9ucyA9IFtdOwogICAgICAgIGlmKCAoJHZhbCA9ICR0aGlzLT5nZXRPcHRpb24oJ3R0bCcpLT52YWx1ZSgpKSApIHsKICAgICAgICAgICAgJHZhbCA9IChpbnQpICR2YWwgKiAzNjAwOwogICAgICAgICAgICBpZiggJHZhbCA+IDAgKSAkb3B0aW9uc1snVFRMJ10gPSAkdmFsOwogICAgICAgIH0KICAgICAgICBpZiggKCR0b3BpYyA9ICR0aGlzLT5nZXRPcHRpb24oJ3RvcGljJyktPnZhbHVlKCkpICkgewogICAgICAgICAgICAkdG9waWMgPSB0cmltKCR0b3BpYyk7CiAgICAgICAgICAgIGlmKCAkdG9waWMgKSAkb3B0aW9uc1sndG9waWMnXSA9ICR0b3BpYzsKICAgICAgICB9CiAgICAgICAgJGF1dGggPSB1dGlsczo6Z2V0QXV0aCgpOwogICAgICAgICR3ZWJQdXNoID0gbmV3IFdlYlB1c2goICRhdXRoLCAkb3B0aW9ucyApOwogICAgICAgICRycyA9ICRxdWVyeS0+ZXhlY3V0ZSgpOwogICAgICAgIHdoaWxlKCAhICRycy0+RU9GKCkgKSB7CiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkcm93ID0gJHJzLT5maWVsZHM7CiAgICAgICAgICAgICAgICAkcnMtPk1vdmVOZXh0KCk7IC8vIG1vdmUgbmV4dCBiZWZvcmUgc2VuZGluZyBub3RpZmljYXRpb24uCiAgICAgICAgICAgICAgICAkdWlkID0gKGludCkgJHJvd1snaWQnXTsKICAgICAgICAgICAgICAgICRkYXRhID0gJGZldS0+R2V0VXNlclByb3BlcnR5RnVsbCggXENHV2ViUHVzaDo6UFVTSF9QUk9QRVJUWSwgJHVpZCApOwogICAgICAgICAgICAgICAgaWYoICEkZGF0YSApIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgJGRhdGEgPSBqc29uX2RlY29kZSggJGRhdGEgKTsKICAgICAgICAgICAgICAgIGZvcmVhY2goICRkYXRhIGFzICRzdWJzY3JpcHRpb24gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYoICEkc3Vic2NyaXB0aW9uICkgY29udGludWU7CgogICAgICAgICAgICAgICAgICAgICRwYXlsb2FkID0gWydtc2cnPT4kbWVzc2FnZSBdOwogICAgICAgICAgICAgICAgICAgIGlmKCAkdXJsICkgJHBheWxvYWRbJ3VybCddID0gJHVybDsKICAgICAgICAgICAgICAgICAgICAkb3V0ID0ganNvbl9lbmNvZGUoICRwYXlsb2FkICk7CiAgICAgICAgICAgICAgICAgICAgJG91dCA9ICR3ZWJQdXNoLT5zZW5kTm90aWZpY2F0aW9uKCAkc3Vic2NyaXB0aW9uLT5lbmRwb2ludCwgJG91dCwgJHN1YnNjcmlwdGlvbi0+a2V5LCAkc3Vic2NyaXB0aW9uLT50b2tlbiwgdHJ1ZSApOwogICAgICAgICAgICAgICAgICAgIGlmKCAkb3V0ICE9PSB0cnVlICkgewogICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z190b19sb2coICRvdXQsICdwcm9ibGVtIHNlbmRpbmcgbm90aWZpY2F0aW9uJyApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBjYXRjaCggXEV4Y2VwdGlvbiAkZSApIHsKICAgICAgICAgICAgICAgIGF1ZGl0KCcnLCdDR1dlYlB1c2gnLCdQcm9ibGVtIHNlbmRpbmcgcHVzaCBub3RpZmljYXRpb24gdG8gJy4kcm93Wyd1c2VybmFtZSddKTsKICAgICAgICAgICAgICAgIFxjZ2VfdXRpbHM6OmxvZ19leGNlcHRpb24oICRlICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gbm93IGdldCBhbGwgdGhlIHVzZXJzIGluIHRoaXMgZ3JvdXAKICAgIH0KfSAvLyBlbmQgb2YgY2xhc3Mu]]></data>
	</file>
	<file>
	  <filename>/lib/class.WebPushDispatcher.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIENHV2ViUHVzaDsKCiRkaXIgPSBkaXJuYW1lKF9fRElSX18pOwpyZXF1aXJlX29uY2UoICIkZGlyL3ZlbmRvci9hdXRvbG9hZC5waHAiICk7CnVzZSBcQ0dXZWJQdXNoXHV0aWxzOwp1c2UgTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2g7CgpjbGFzcyBXZWJQdXNoRGlzcGF0Y2hlcgp7CiAgICBwcml2YXRlICRfbXNnOwogICAgcHJpdmF0ZSAkX2F1dGg7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBQdXNoTWVzc2FnZSAkbXNnICkKICAgIHsKICAgICAgICAkdGhpcy0+X21zZyA9ICRtc2c7CiAgICAgICAgJHRoaXMtPl9hdXRoID0gdXRpbHM6OmdldEF1dGgoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZF90b19mZXVfZ3JvdXAoICRnaWQgKQogICAgewogICAgICAgICRnaWQgPSAoaW50KSAkZ2lkOwogICAgICAgIGlmKCAkZ2lkIDwgMSApIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ludmFsaWQgZ2lkIGluIGEgRmV1R3JvdXBQdXNoTWVzc2FnZS4uLiBjYW5ub3Qgc2VuZCcpOwogICAgICAgICRmZXUgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9GUk9OVEVORFVTRVJTKTsKICAgICAgICBpZiggISRmZXUgKSByZXR1cm47CgogICAgICAgIHNldF90aW1lX2xpbWl0KCA5OTk5ICk7CiAgICAgICAgJG1zZyA9ICR0aGlzLT5fbXNnOwogICAgICAgICRuX3NlbnQgPSBudWxsOwogICAgICAgICRvcHRpb25zID0gJHBheWxvYWQgPSBbXTsKICAgICAgICAkb3B0aW9uc1snVFRMJ10gPSAkbXNnLT50dGwgKiAzNjAwOwogICAgICAgICRvcHRpb25zWyd0b3BpYyddID0gJG1zZy0+dG9waWM7CgogICAgICAgICRwYXlsb2FkWydtc2cnXSA9ICRtc2ctPmJvZHk7CiAgICAgICAgJHBheWxvYWRbJ3RpdGxlJ10gPSAkbXNnLT50aXRsZTsKICAgICAgICAkcGF5bG9hZFsndXJsJ10gPSAkbXNnLT51cmw7CiAgICAgICAgJHBheWxvYWRbJ2ltYWdlJ10gPSAkbXNnLT5pbWFnZTsKICAgICAgICAkd2ViUHVzaCA9IG5ldyBXZWJQdXNoKCAkdGhpcy0+X2F1dGgsICRvcHRpb25zICk7CgogICAgICAgICRxdWVyeSA9IG5ldyBcZmV1X3VzZXJfcXVlcnk7CiAgICAgICAgJHF1ZXJ5LT5hZGRfYW5kX29wdCggXGZldV91c2VyX3F1ZXJ5X29wdDo6TUFUQ0hfR1JPVVBJRCwgJGdpZCApOwogICAgICAgICRxdWVyeS0+YWRkX2FuZF9vcHQoIFxmZXVfdXNlcl9xdWVyeV9vcHQ6Ok1BVENIX05PVEVYUElSRUQgKTsKICAgICAgICAkcXVlcnktPnNldF93ZWJyZWFkeSgpOwoKICAgICAgICAkcnMgPSAkcXVlcnktPmV4ZWN1dGUoKTsKICAgICAgICB3aGlsZSggISAkcnMtPkVPRigpICkgewogICAgICAgICAgICAkcm93ID0gJHJzLT5maWVsZHM7CiAgICAgICAgICAgICRycy0+TW92ZU5leHQoKTsKICAgICAgICAgICAgaWYoICRyb3dbJ2Rpc2FibGVkJ10gKSBjb250aW51ZTsKICAgICAgICAgICAgJHVpZCA9IChpbnQpICRyb3dbJ2lkJ107CiAgICAgICAgICAgICRkYXRhID0gJGZldS0+R2V0VXNlclByb3BlcnR5RnVsbCggXENHV2ViUHVzaDo6UFVTSF9QUk9QRVJUWSwgJHVpZCApOwogICAgICAgICAgICBpZiggISRkYXRhICkgY29udGludWU7CgogICAgICAgICAgICAvLyBzYW1lIHVzZXIgbWF5IGhhdmUgbXVsdGlwbGUgc3Vic2NyaXB0aW9ucyAoZGlmZmVyZW50IGRldmljZXMpCiAgICAgICAgICAgICRkYXRhID0ganNvbl9kZWNvZGUoICRkYXRhICk7CiAgICAgICAgICAgIGZvcmVhY2goICRkYXRhIGFzICRzdWJzY3JpcHRpb24gKSB7CiAgICAgICAgICAgICAgICBpZiggISRzdWJzY3JpcHRpb24gKSBjb250aW51ZTsKICAgICAgICAgICAgICAgICRvdXQgPSBqc29uX2VuY29kZSggJHBheWxvYWQgKTsKICAgICAgICAgICAgICAgICRvdXQgPSAkd2ViUHVzaC0+c2VuZE5vdGlmaWNhdGlvbiggJHN1YnNjcmlwdGlvbi0+ZW5kcG9pbnQsICRvdXQsICRzdWJzY3JpcHRpb24tPmtleSwgJHN1YnNjcmlwdGlvbi0+dG9rZW4sIHRydWUgKTsKICAgICAgICAgICAgICAgIGlmKCAkb3V0ID09PSB0cnVlICkgJG5fc2VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5fc2VudDsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGZldSA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0Zyb250RW5kVXNlcnMnKTsKJGF0dHJpYnMgPSBzZXJpYWxpemUoYXJyYXkoJ21vZHVsZSc9PiR0aGlzLT5HZXROYW1lKCkpKTsKJGZldS0+QWRkUHJvcGVydHlEZWZuKCBDR1dlYlB1c2g6OlBVU0hfUFJPUEVSVFksJycsRnJvbnRFbmRVc2Vyczo6RklFTERUWVBFX0RBVEEsIDEwMjQsIDAsICRhdHRyaWJzKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oIENHV2ViUHVzaDo6U0VORF9QRVJNLCBDR1dlYlB1c2g6OlNFTkRfUEVSTSApOwoKXENHV2ViUHVzaFx1dGlsczo6d3JpdGVfc2VydmljZVdvcmtlcigpOw==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGZldSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnRnJvbnRFbmRVc2VycycpOwokZmV1LT5EZWxldGVQcm9wZXJ0eURlZm4oIFxDR1dlYlB1c2g6OlBVU0hfUFJPUEVSVFkgKTsKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oIENHV2ViUHVzaDo6U0VORF9QRVJNICk7Cgokb3V0ZmlsZSA9IENNU19ST09UX1BBVEguJy9jZ19wdXNoU2VydmljZVdvcmtlci5qcyc7CmlmKCBpc19maWxlKCAkb3V0ZmlsZSApICYmIGlzX3dyaXRhYmxlKCAkb3V0ZmlsZSApICkgdW5saW5rKCAkb3V0ZmlsZSApOw==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJDR1dlYlB1c2giCnZlcnNpb24gPSAiMS4wLjAiCmF1dGhvciA9ICJjYWxndXkxMDAwIgphdXRob3JlbWFpbCA9ICJjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnIgptaW5jbXN2ZXJzaW9uID0gIjIuMS41IgpsYXp5bG9hZGFkbWluID0gMQpsYXp5bG9hZGZyb250ZW5kID0gMApbZGVwZW5kc10KQ0dFeHRlbnNpb25zID0gIjEuNTYuMiIKRnJvbnRFbmRVc2VycyA9ICIyLjUuMiIK]]></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+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMiI+eyRtb2QtPkxhbmcoJ2ZldV9ncm91cCcpfTo8L2xhYmVsPgogICA8c2VsZWN0IG5hbWU9InskYWN0aW9uaWR9ZmV1X2dyb3VwIiBjbGFzcz0iZ3JpZF80Ij4KICAgICAge2h0bWxfb3B0aW9ucyBvcHRpb25zPWZldV9zbWFydHk6OmdldF9ncm91cF9saXN0KCl9CiAgIDwvc2VsZWN0Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzIiPnskbW9kLT5MYW5nKCd0aXRsZScpfTo8L2xhYmVsPgogICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH10aXRsZSIgdmFsdWU9IiIgY2xhc3M9ImdyaWRfOSIvPgo8L2Rpdj4KPGRpdiBjbGFzcz0iY19mdWxsIGNmIj4KICAgPGxhYmVsIGNsYXNzPSJncmlkXzIiPnskbW9kLT5MYW5nKCd1cmwnKX06PC9sYWJlbD4KICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dXJsIiB2YWx1ZT0iIiBjbGFzcz0iZ3JpZF85Ii8+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8bGFiZWwgY2xhc3M9ImdyaWRfMiI+eyRtb2QtPkxhbmcoJ3RvcGljJyl9OjwvbGFiZWw+CiAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXRvcGljIiB2YWx1ZT0iIiBjbGFzcz0iZ3JpZF85Ii8+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJjX2Z1bGwgY2YiPgogICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfXN1Ym1pdCIgdmFsdWU9InskbW9kLT5MYW5nKCdzZW5kJyl9Ii8+CjwvZGl2Pgp7Zm9ybV9lbmR9]]></data>
	</file>
	<file>
	  <filename>/templates/js.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iY2dfcHVzaFNlcnZpY2VXb3JrZXIuanMiPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7JG1vZHVsZV91cmxfcGF0aH0vanMvY2dXZWJQdXNoLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntqc21pbn0KJChmdW5jdGlvbigpewogICBpZiggdHlwZW9mIGNnV2ViUHVzaCAhPSAndW5kZWZpbmVkJyApIHsKICAgICAgICB2YXIgZWwgPSAkKCcjc3Vic2NyaWJlLWJ0bicpWzBdOwoJY2dXZWJQdXNoLnNldF9hamF4X3VybCggJ3skYWpheF91cmx9JyApOwogICAgICAgIGNnV2ViUHVzaC5zZXRfdmFwaWRfa2V5KCAneyRwdWJsaWNfa2V5fScgKTsKCWNnV2ViUHVzaC5zdGFydF91aSgpOwogICB9Cn0pCnsvanNtaW59PC9zY3JpcHQ+]]></data>
	</file>
	<file>
	  <filename>/templates/serviceWorker.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[c2VsZi5hZGRFdmVudExpc3RlbmVyKCdwdXNoJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBpZiAoIShzZWxmLk5vdGlmaWNhdGlvbiAmJiBzZWxmLk5vdGlmaWNhdGlvbi5wZXJtaXNzaW9uID09PSAnZ3JhbnRlZCcpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmIChldmVudC5kYXRhKSB7CiAgICAgICAgdmFyIHRpdGxlID0gInskbXNnX3RpdGxlfSI7Cgl2YXIgaWNvbiA9ICJ7JGljb259IjsKCgl2YXIgdXJsID0gbnVsbDsKCXZhciBtZXNzYWdlID0gZXZlbnQuZGF0YS50ZXh0KCk7Cgl2YXIgb2JqID0gSlNPTi5wYXJzZSggbWVzc2FnZSApOwoJaWYoIG9iaiAmJiBvYmoudGl0bGUgKSB0aXRsZSA9IG9iai50aXRsZTsKCWlmKCBvYmogJiYgb2JqLmljb24gKSBpY29uID0gb2JqLmljb247CglpZiggb2JqICYmIG9iai5tc2cgKSBtZXNzYWdlID0gb2JqLm1zZzsKCWlmKCBvYmogJiYgb2JqLnVybCApIHVybCA9IG9iai51cmw7Cgljb25zb2xlLmRlYnVnKCdzZXJ2aWNlIHdvcmtlciB1cmwgaXMgJyt1cmwpOwoKCXZhciBvcHRpb25zID0gewoJICAgICAnYm9keSc6IG1lc3NhZ2UsCgkgICAgICdpY29uJzogaWNvbiwKCSAgICAgJ2RhdGEnOiB7CgkgICAgICAgICAndXJsJzogdXJsCiAgICAgICAgICAgICB9LAogICAgICAgIH0KICAgICAgICBldmVudC53YWl0VW50aWwoIHNlbGYucmVnaXN0cmF0aW9uLnNob3dOb3RpZmljYXRpb24odGl0bGUsIG9wdGlvbnMpICk7CiAgICB9Cn0pOwoKc2VsZi5hZGRFdmVudExpc3RlbmVyKCdub3RpZmljYXRpb25jbGljaycsIGZ1bmN0aW9uIChldmVudCkgewogICAgZXZlbnQubm90aWZpY2F0aW9uLmNsb3NlKCk7CiAgICB2YXIgZGF0YSA9IGV2ZW50Lm5vdGlmaWNhdGlvbi5kYXRhOwogICAgaWYoICEgZGF0YSB8fCAhIGRhdGEudXJsICkgcmV0dXJuOwoKICAgIGV2ZW50LndhaXRVbnRpbCgKICAgICAgICBjbGllbnRzLm1hdGNoQWxsKHsgdHlwZTogJ3dpbmRvdycgfSkudGhlbiggd2luZG93Q2xpZW50cyA9PiB7CgkgICAgZm9yKCB2YXIgaSA9IDA7IGkgPCB3aW5kb3dDbGllbnRzLmxlbmd0aDsgaSsrICkgewoJICAgICAgICB2YXIgY2xpZW50ID0gd2luZG93Q2xpZW50c1tpXTsKCQlpZiggY2xpZW50LnVybCA9PSBkYXRhLnVybCAmJiAnZm9jdXMnIGluIGNsaWVudCApIHJldHVybiBjbGllbnQuZm9jdXMoKTsKICAgICAgICAgICAgfQoJICAgIGlmKCBjbGllbnRzLm9wZW5XaW5kb3cgKSBjbGllbnRzLm9wZW5XaW5kb3coIGRhdGEudXJsICk7CiAgICAgICAgfSkKICAgICkKfSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/subscribe.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBpZD0ic3Vic2NyaWJlLXpvbmUiPgogICA8YnV0dG9uIGlkPSJzdWJzY3JpYmUtYnRuIj5TdWJzY3JpYmU8L2J1dHRvbgo8L2Rpdj4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPntqc21pbn0KJChmdW5jdGlvbigpewogICBpZiggdHlwZW9mIGNnV2ViUHVzaCAhPSAndW5kZWZpbmVkJyApIHsKICAgICAgICB2YXIgZWwgPSAkKCcjc3Vic2NyaWJlLWJ0bicpWzBdOwogICAgICAgIGNnV2ViUHVzaC5zZXRfZWxlbWVudCggZWwgKTsKICAgfQp9KQp7L2pzbWlufTwvc2NyaXB0Pg==]]></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[ewogICJuYW1lIjogImJlYmVybGVpL2Fzc2VydCIsCiAgImRlc2NyaXB0aW9uIjogIlRoaW4gYXNzZXJ0aW9uIGxpYnJhcnkgZm9yIGlucHV0IHZhbGlkYXRpb24gaW4gYnVzaW5lc3MgbW9kZWxzLiIsCiAgImF1dGhvcnMiOiBbCiAgICB7CiAgICAgICJuYW1lIjogIkJlbmphbWluIEViZXJsZWkiLAogICAgICAiZW1haWwiOiAia29udGFrdEBiZWJlcmxlaS5kZSIsCiAgICAgICJyb2xlIjogIkxlYWQgRGV2ZWxvcGVyIgogICAgfSwKICAgIHsKICAgICAgIm5hbWUiOiAiUmljaGFyZCBRdWFkbGluZyIsCiAgICAgICJlbWFpbCI6ICJycXVhZGxpbmdAZ21haWwuY29tIiwKICAgICAgInJvbGUiOiAiQ29sbGFib3JhdG9yIgogICAgfQogIF0sCiAgImxpY2Vuc2UiOiAiQlNELTItQ2xhdXNlIiwKICAia2V5d29yZHMiOiBbCiAgICAiYXNzZXJ0IiwKICAgICJhc3NlcnRpb24iLAogICAgInZhbGlkYXRpb24iCiAgXSwKICAiY29uZmlnIjogewogICAgInNvcnQtcGFja2FnZXMiOiB0cnVlCiAgfSwKICAicmVxdWlyZSI6IHsKICAgICJwaHAiOiAiPj01LjMiLAogICAgImV4dC1tYnN0cmluZyI6ICIqIgogIH0sCiAgInJlcXVpcmUtZGV2IjogewogICAgImZyaWVuZHNvZnBocC9waHAtY3MtZml4ZXIiOiAiXjIuMS4xIiwKICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjR8XjUiCiAgfSwKICAiYXV0b2xvYWQiOiB7CiAgICAicHNyLTQiOiB7CiAgICAgICJBc3NlcnRcXCI6ICJsaWIvQXNzZXJ0IgogICAgfSwKICAgICJmaWxlcyI6IFsKICAgICAgImxpYi9Bc3NlcnQvZnVuY3Rpb25zLnBocCIKICAgIF0KICB9LAogICJhdXRvbG9hZC1kZXYiOiB7CiAgICAicHNyLTQiOiB7CiAgICAgICJBc3NlcnRcXFRlc3RzXFwiOiAidGVzdHMvQXNzZXJ0L1Rlc3RzIgogICAgfSwKICAgICJmaWxlcyI6IFsKICAgICAgInRlc3RzL0Fzc2VydC9UZXN0cy9GaXh0dXJlcy9mdW5jdGlvbnMucGhwIgogICAgXQogIH0sCiAgInNjcmlwdHMiOiB7CiAgICAiYXNzZXJ0OmdlbmVyYXRlLWRvY3MiOiAicGhwIGJpbi9nZW5lcmF0ZV9tZXRob2RfZG9jcy5waHAiLAogICAgImFzc2VydDpjcy1saW50IjogInBocC1jcy1maXhlciBmaXggLS1kaWZmIC12dnYgLS1kcnktcnVuIiwKICAgICJhc3NlcnQ6Y3MtZml4IjogInBocC1jcy1maXhlciBmaXggLiAtdnZ2IHx8IHRydWUiCiAgfQp9Cg==]]></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+YWxsKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdGFydCB2YWxpZGF0aW9uIGFuZCBhbGxvdyBOVUxMLCByZXR1cm5zIHtAbGluayBBc3NlcnRpb25DaGFpbn0uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRlZmF1bHRNZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0UHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBcQXNzZXJ0XEFzc2VydGlvbkNoYWluCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGhhdE51bGxPcigkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljOjp0aGF0KCR2YWx1ZSwgJGRlZmF1bHRNZXNzYWdlLCAkZGVmYXVsdFByb3BlcnR5UGF0aCktPm51bGxPcigpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbGF6eSBhc3NlcnRpb24gb2JqZWN0LgogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxMYXp5QXNzZXJ0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGF6eSgpCiAgICB7CiAgICAgICAgJGxhenlBc3NlcnRpb24gPSBuZXcgTGF6eUFzc2VydGlvbigpOwoKICAgICAgICByZXR1cm4gJGxhenlBc3NlcnRpb24KICAgICAgICAgICAgLT5zZXRFeGNlcHRpb25DbGFzcyhzdGF0aWM6OiRsYXp5QXNzZXJ0aW9uRXhjZXB0aW9uQ2xhc3MpCiAgICAgICAgOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/Assertion.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKdXNlIEJhZE1ldGhvZENhbGxFeGNlcHRpb247CgovKioKICogQXNzZXJ0IGxpYnJhcnkuCiAqCiAqIEBhdXRob3IgQmVuamFtaW4gRWJlcmxlaSA8a29udGFrdEBiZWJlcmxlaS5kZT4KICoKICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxBbG51bShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYWxwaGFudW1lcmljIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEJldHdlZW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbG93ZXJMaW1pdCwgbWl4ZWQgJHVwcGVyTGltaXQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4gYSBsb3dlciBsaW1pdCwgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBhbiB1cHBlciBsaW1pdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxCZXR3ZWVuRXhjbHVzaXZlKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxvd2VyTGltaXQsIG1peGVkICR1cHBlckxpbWl0LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGEgbG93ZXIgbGltaXQsIGFuZCBsZXNzIHRoYW4gYW4gdXBwZXIgbGltaXQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsQmV0d2Vlbkxlbmd0aChtaXhlZCAkdmFsdWUsIGludCAkbWluTGVuZ3RoLCBpbnQgJG1heExlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgbGVuZ3RoIGlzIGJldHdlZW4gbWluLG1heCBsZW5ndGhzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEJvb2xlYW4obWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIHBocCBib29sZWFuIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbENob2ljZShtaXhlZCAkdmFsdWUsIGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsQ2hvaWNlc05vdEVtcHR5KGFycmF5ICR2YWx1ZXMsIGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlcyBhcnJheSBoYXMgZXZlcnkgY2hvaWNlIGFzIGtleSBhbmQgdGhhdCB0aGlzIGNob2ljZSBoYXMgY29udGVudCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxDbGFzc0V4aXN0cyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNsYXNzIGV4aXN0cyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxDb250YWlucyhtaXhlZCAkc3RyaW5nLCBzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFycyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxDb3VudChhcnJheXxcQ291bnRhYmxlICRjb3VudGFibGUsIGFycmF5fFxDb3VudGFibGUgJGNvdW50LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjb3VudCBvZiBjb3VudGFibGUgaXMgZXF1YWwgdG8gY291bnQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsRGF0ZShzdHJpbmcgJHZhbHVlLCBzdHJpbmcgJGZvcm1hdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBkYXRlIGlzIHZhbGlkIGFuZCBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gZm9ybWF0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbERlZmluZWQobWl4ZWQgJGNvbnN0YW50LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxEaWdpdChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgVmFsaWRhdGVzIGlmIGFuIGludGVnZXIgb3IgaW50ZWdlcmlzaCBpcyBhIGRpZ2l0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbERpcmVjdG9yeShzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgZGlyZWN0b3J5IGV4aXN0cyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxFMTY0KHN0cmluZyAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIEUxNjQgUGhvbmUgTnVtYmVyIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEVtYWlsKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBlbWFpbCBhZHJlc3MgKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfRU1BSUwpIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEVuZHNXaXRoKG1peGVkICRzdHJpbmcsIHN0cmluZyAkbmVlZGxlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBlbmRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxFcShtaXhlZCAkdmFsdWUsIG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgZXF1YWwgKHVzaW5nID09ICkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsRXh0ZW5zaW9uTG9hZGVkKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBleHRlbnNpb24gaXMgbG9hZGVkIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEV4dGVuc2lvblZlcnNpb24oc3RyaW5nICRleHRlbnNpb24sIHN0cmluZyAkb3BlcmF0b3IsIG1peGVkICR2ZXJzaW9uLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQgYW5kIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBpbnN0YWxsZWQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsRmFsc2UobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIEZhbHNlIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEZpbGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGZpbGUgZXhpc3RzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEZsb2F0KG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBmbG9hdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxHcmVhdGVyT3JFcXVhbFRoYW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGdpdmVuIGxpbWl0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEdyZWF0ZXJUaGFuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBnaXZlbiBsaW1pdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJbXBsZW1lbnRzSW50ZXJmYWNlKG1peGVkICRjbGFzcywgc3RyaW5nICRpbnRlcmZhY2VOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSW5BcnJheShtaXhlZCAkdmFsdWUsIGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMuIFRoaXMgaXMgYW4gYWxpYXMgb2YgQXNzZXJ0aW9uOjpjaG9pY2UoKSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJbnRlZ2VyKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBpbnRlZ2VyIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEludGVnZXJpc2gobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGludGVnZXInaXNoIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbEludGVyZmFjZUV4aXN0cyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGludGVyZmFjZSBleGlzdHMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXAoc3RyaW5nICR2YWx1ZSwgaW50ICRmbGFnID0gbnVsbCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJcHY0KHN0cmluZyAkdmFsdWUsIGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBhZGRyZXNzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbElwdjYoc3RyaW5nICR2YWx1ZSwgaW50ICRmbGFnID0gbnVsbCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY2IGFkZHJlc3MgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXNBcnJheShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXNBcnJheUFjY2Vzc2libGUobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5IG9yIGFuIGFycmF5LWFjY2Vzc2libGUgb2JqZWN0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbElzQ2FsbGFibGUobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgY2FsbGFibGUgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXNJbnN0YW5jZU9mKG1peGVkICR2YWx1ZSwgc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW5zdGFuY2Ugb2YgZ2l2ZW4gY2xhc3MtbmFtZSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJc0pzb25TdHJpbmcobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBqc29uIHN0cmluZyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJc09iamVjdChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhbiBvYmplY3QgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsSXNSZXNvdXJjZShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSByZXNvdXJjZSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxJc1RyYXZlcnNhYmxlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheSBvciBhIHRyYXZlcnNhYmxlIG9iamVjdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxLZXlFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxLZXlJc3NldChtaXhlZCAkdmFsdWUsIHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5L2FycmF5LWFjY2Vzc2libGUgb2JqZWN0IHVzaW5nIGlzc2V0KCkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsS2V5Tm90RXhpc3RzKG1peGVkICR2YWx1ZSwgc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBkb2VzIG5vdCBleGlzdCBpbiBhbiBhcnJheSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxMZW5ndGgobWl4ZWQgJHZhbHVlLCBpbnQgJGxlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgaGFzIGEgZ2l2ZW4gbGVuZ3RoIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbExlc3NPckVxdWFsVGhhbihtaXhlZCAkdmFsdWUsIG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIG9yIHRoYW4gZ2l2ZW4gbGltaXQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTGVzc1RoYW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgbGVzcyB0aGFuIGdpdmVuIGxpbWl0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE1heChtaXhlZCAkdmFsdWUsIG1peGVkICRtYXhWYWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIG51bWJlciBpcyBzbWFsbGVyIGFzIGEgZ2l2ZW4gbGltaXQgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTWF4TGVuZ3RoKG1peGVkICR2YWx1ZSwgaW50ICRtYXhMZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIHZhbHVlIGlzIG5vdCBsb25nZXIgdGhhbiAkbWF4TGVuZ3RoIGNoYXJzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE1ldGhvZEV4aXN0cyhzdHJpbmcgJHZhbHVlLCBtaXhlZCAkb2JqZWN0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgdGhhdCB0aGUgbmFtZWQgbWV0aG9kIGlzIGRlZmluZWQgaW4gdGhlIHByb3ZpZGVkIG9iamVjdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxNaW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbWluVmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBhdCBsZWFzdCBhcyBiaWcgYXMgYSBnaXZlbiBsaW1pdCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxNaW5MZW5ndGgobWl4ZWQgJHZhbHVlLCBpbnQgJG1pbkxlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBhIHN0cmluZyBpcyBhdCBsZWFzdCAkbWluTGVuZ3RoIGNoYXJzIGxvbmcgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm9Db250ZW50KG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBlbXB0eSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxOb3RCbGFuayhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGJsYW5rIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE5vdEVtcHR5KG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgZW1wdHkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm90RW1wdHlLZXkobWl4ZWQgJHZhbHVlLCBzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheS9hcnJheS1hY2Nlc3NpYmxlIG9iamVjdCBhbmQgaXRzIHZhbHVlIGlzIG5vdCBlbXB0eSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxOb3RFcShtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCBlcXVhbCAodXNpbmcgPT0gKSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxOb3RJbkFycmF5KG1peGVkICR2YWx1ZSwgYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluIGFycmF5IG9mIGNob2ljZXMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm90SXNJbnN0YW5jZU9mKG1peGVkICR2YWx1ZSwgc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluc3RhbmNlIG9mIGdpdmVuIGNsYXNzLW5hbWUgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm90TnVsbChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IG51bGwgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTm90U2FtZShtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCB0aGUgc2FtZSAodXNpbmcgPT09ICkgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsTnVsbChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbnVsbCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxOdW1lcmljKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudW1lcmljIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbE9iamVjdE9yQ2xhc3MobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QsIG9yIGEgY2xhc3MgdGhhdCBleGlzdHMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsUGhwVmVyc2lvbihzdHJpbmcgJG9wZXJhdG9yLCBtaXhlZCAkdmVyc2lvbiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgb24gUEhQIHZlcnNpb24gZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsUHJvcGVydGllc0V4aXN0KG1peGVkICR2YWx1ZSwgYXJyYXkgJHByb3BlcnRpZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnRpZXMgYWxsIGV4aXN0IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFByb3BlcnR5RXhpc3RzKG1peGVkICR2YWx1ZSwgc3RyaW5nICRwcm9wZXJ0eSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIGNsYXNzLCBhbmQgdGhhdCB0aGUgcHJvcGVydHkgZXhpc3RzIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFJhbmdlKG1peGVkICR2YWx1ZSwgbWl4ZWQgJG1pblZhbHVlLCBtaXhlZCAkbWF4VmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW4gcmFuZ2Ugb2YgbnVtYmVycyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxSZWFkYWJsZShzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgcmVhZGFibGUgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsUmVnZXgobWl4ZWQgJHZhbHVlLCBzdHJpbmcgJHBhdHRlcm4sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgbWF0Y2hlcyBhIHJlZ2V4IGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFNhbWUobWl4ZWQgJHZhbHVlLCBtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lICh1c2luZyA9PT0pIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFNhdGlzZnkobWl4ZWQgJHZhbHVlLCBjYWxsYWJsZSAkY2FsbGJhY2ssIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIHZhbGlkIGFjY29yZGluZyB0byBhIGNhbGxiYWNrIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFNjYWxhcihtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBQSFAgc2NhbGFyIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFN0YXJ0c1dpdGgobWl4ZWQgJHN0cmluZywgc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIHN0YXJ0cyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcnMgZm9yIGFsbCB2YWx1ZXMuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgYWxsU3RyaW5nKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHN0cmluZyBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxTdWJjbGFzc09mKG1peGVkICR2YWx1ZSwgc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgc3ViY2xhc3Mgb2YgZ2l2ZW4gY2xhc3MtbmFtZSBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxUcnVlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYm9vbGVhbiBUcnVlIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFVybChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gVVJMIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFV1aWQoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQgVVVJRCBmb3IgYWxsIHZhbHVlcy4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBhbGxWZXJzaW9uKHN0cmluZyAkdmVyc2lvbjEsIHN0cmluZyAkb3BlcmF0b3IsIHN0cmluZyAkdmVyc2lvbjIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IGNvbXBhcmlzb24gb2YgdHdvIHZlcnNpb25zIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIGFsbFdyaXRlYWJsZShzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgd3JpdGVhYmxlIGZvciBhbGwgdmFsdWVzLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckFsbnVtKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbHBoYW51bWVyaWMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JCZXR3ZWVuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxvd2VyTGltaXQsIG1peGVkICR1cHBlckxpbWl0LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGEgbG93ZXIgbGltaXQsIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYW4gdXBwZXIgbGltaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JCZXR3ZWVuRXhjbHVzaXZlKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxvd2VyTGltaXQsIG1peGVkICR1cHBlckxpbWl0LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGEgbG93ZXIgbGltaXQsIGFuZCBsZXNzIHRoYW4gYW4gdXBwZXIgbGltaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JCZXR3ZWVuTGVuZ3RoKG1peGVkICR2YWx1ZSwgaW50ICRtaW5MZW5ndGgsIGludCAkbWF4TGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBsZW5ndGggaXMgYmV0d2VlbiBtaW4sbWF4IGxlbmd0aHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JCb29sZWFuKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBwaHAgYm9vbGVhbiBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckNob2ljZShtaXhlZCAkdmFsdWUsIGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JDaG9pY2VzTm90RW1wdHkoYXJyYXkgJHZhbHVlcywgYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWVzIGFycmF5IGhhcyBldmVyeSBjaG9pY2UgYXMga2V5IGFuZCB0aGF0IHRoaXMgY2hvaWNlIGhhcyBjb250ZW50IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yQ2xhc3NFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBleGlzdHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JDb250YWlucyhtaXhlZCAkc3RyaW5nLCBzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFycyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckNvdW50KGFycmF5fFxDb3VudGFibGUgJGNvdW50YWJsZSwgYXJyYXl8XENvdW50YWJsZSAkY291bnQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNvdW50IG9mIGNvdW50YWJsZSBpcyBlcXVhbCB0byBjb3VudCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckRhdGUoc3RyaW5nICR2YWx1ZSwgc3RyaW5nICRmb3JtYXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgZGF0ZSBpcyB2YWxpZCBhbmQgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGZvcm1hdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckRlZmluZWQobWl4ZWQgJGNvbnN0YW50LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckRpZ2l0KG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBWYWxpZGF0ZXMgaWYgYW4gaW50ZWdlciBvciBpbnRlZ2VyaXNoIGlzIGEgZGlnaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JEaXJlY3Rvcnkoc3RyaW5nICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGRpcmVjdG9yeSBleGlzdHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JFMTY0KHN0cmluZyAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIEUxNjQgUGhvbmUgTnVtYmVyIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRW1haWwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGVtYWlsIGFkcmVzcyAodXNpbmcgaW5wdXRfZmlsdGVyL0ZJTFRFUl9WQUxJREFURV9FTUFJTCkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JFbmRzV2l0aChtaXhlZCAkc3RyaW5nLCBzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgZW5kcyB3aXRoIGEgc2VxdWVuY2Ugb2YgY2hhcnMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JFcShtaXhlZCAkdmFsdWUsIG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgZXF1YWwgKHVzaW5nID09ICkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JFeHRlbnNpb25Mb2FkZWQobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JFeHRlbnNpb25WZXJzaW9uKHN0cmluZyAkZXh0ZW5zaW9uLCBzdHJpbmcgJG9wZXJhdG9yLCBtaXhlZCAkdmVyc2lvbiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBleHRlbnNpb24gaXMgbG9hZGVkIGFuZCBhIHNwZWNpZmljIHZlcnNpb24gaXMgaW5zdGFsbGVkIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRmFsc2UobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIEZhbHNlIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yRmlsZShzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgZmlsZSBleGlzdHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JGbG9hdChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgZmxvYXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JHcmVhdGVyT3JFcXVhbFRoYW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGdpdmVuIGxpbWl0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yR3JlYXRlclRoYW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGdpdmVuIGxpbWl0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySW1wbGVtZW50c0ludGVyZmFjZShtaXhlZCAkY2xhc3MsIHN0cmluZyAkaW50ZXJmYWNlTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgY2xhc3MgaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySW5BcnJheShtaXhlZCAkdmFsdWUsIGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMuIFRoaXMgaXMgYW4gYWxpYXMgb2YgQXNzZXJ0aW9uOjpjaG9pY2UoKSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckludGVnZXIobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGludGVnZXIgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJbnRlZ2VyaXNoKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBpbnRlZ2VyJ2lzaCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckludGVyZmFjZUV4aXN0cyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGludGVyZmFjZSBleGlzdHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJcChzdHJpbmcgJHZhbHVlLCBpbnQgJGZsYWcgPSBudWxsLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjQgb3IgSVB2NiBhZGRyZXNzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXB2NChzdHJpbmcgJHZhbHVlLCBpbnQgJGZsYWcgPSBudWxsLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjQgYWRkcmVzcyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcklwdjYoc3RyaW5nICR2YWx1ZSwgaW50ICRmbGFnID0gbnVsbCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY2IGFkZHJlc3Mgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJc0FycmF5KG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcklzQXJyYXlBY2Nlc3NpYmxlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheSBvciBhbiBhcnJheS1hY2Nlc3NpYmxlIG9iamVjdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcklzQ2FsbGFibGUobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgY2FsbGFibGUgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJc0luc3RhbmNlT2YobWl4ZWQgJHZhbHVlLCBzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXNKc29uU3RyaW5nKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQganNvbiBzdHJpbmcgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJc09iamVjdChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhbiBvYmplY3Qgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JJc1Jlc291cmNlKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHJlc291cmNlIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9ySXNUcmF2ZXJzYWJsZShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYSB0cmF2ZXJzYWJsZSBvYmplY3Qgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JLZXlFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcktleUlzc2V0KG1peGVkICR2YWx1ZSwgc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgdXNpbmcgaXNzZXQoKSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcktleU5vdEV4aXN0cyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZG9lcyBub3QgZXhpc3QgaW4gYW4gYXJyYXkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JMZW5ndGgobWl4ZWQgJHZhbHVlLCBpbnQgJGxlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgaGFzIGEgZ2l2ZW4gbGVuZ3RoIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTGVzc09yRXF1YWxUaGFuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3Mgb3IgdGhhbiBnaXZlbiBsaW1pdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPckxlc3NUaGFuKG1peGVkICR2YWx1ZSwgbWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiBnaXZlbiBsaW1pdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck1heChtaXhlZCAkdmFsdWUsIG1peGVkICRtYXhWYWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIG51bWJlciBpcyBzbWFsbGVyIGFzIGEgZ2l2ZW4gbGltaXQgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JNYXhMZW5ndGgobWl4ZWQgJHZhbHVlLCBpbnQgJG1heExlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgdmFsdWUgaXMgbm90IGxvbmdlciB0aGFuICRtYXhMZW5ndGggY2hhcnMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JNZXRob2RFeGlzdHMoc3RyaW5nICR2YWx1ZSwgbWl4ZWQgJG9iamVjdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIG5hbWVkIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3Qgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JNaW4obWl4ZWQgJHZhbHVlLCBtaXhlZCAkbWluVmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBhdCBsZWFzdCBhcyBiaWcgYXMgYSBnaXZlbiBsaW1pdCBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck1pbkxlbmd0aChtaXhlZCAkdmFsdWUsIGludCAkbWluTGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IGEgc3RyaW5nIGlzIGF0IGxlYXN0ICRtaW5MZW5ndGggY2hhcnMgbG9uZyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck5vQ29udGVudChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgZW1wdHkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOb3RCbGFuayhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGJsYW5rIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTm90RW1wdHkobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBlbXB0eSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck5vdEVtcHR5S2V5KG1peGVkICR2YWx1ZSwgc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgYW5kIGl0cyB2YWx1ZSBpcyBub3QgZW1wdHkgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOb3RFcShtaXhlZCAkdmFsdWUxLCBtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCBlcXVhbCAodXNpbmcgPT0gKSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck5vdEluQXJyYXkobWl4ZWQgJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgaW4gYXJyYXkgb2YgY2hvaWNlcyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck5vdElzSW5zdGFuY2VPZihtaXhlZCAkdmFsdWUsIHN0cmluZyAkY2xhc3NOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yTm90TnVsbChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IG51bGwgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOb3RTYW1lKG1peGVkICR2YWx1ZTEsIG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IHRoZSBzYW1lICh1c2luZyA9PT0gKSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPck51bGwobWl4ZWQgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG51bGwgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JOdW1lcmljKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudW1lcmljIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yT2JqZWN0T3JDbGFzcyhtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCwgb3IgYSBjbGFzcyB0aGF0IGV4aXN0cyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclBocFZlcnNpb24oc3RyaW5nICRvcGVyYXRvciwgbWl4ZWQgJHZlcnNpb24sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IG9uIFBIUCB2ZXJzaW9uIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yUHJvcGVydGllc0V4aXN0KG1peGVkICR2YWx1ZSwgYXJyYXkgJHByb3BlcnRpZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnRpZXMgYWxsIGV4aXN0IG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yUHJvcGVydHlFeGlzdHMobWl4ZWQgJHZhbHVlLCBzdHJpbmcgJHByb3BlcnR5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3Qgb3IgY2xhc3MsIGFuZCB0aGF0IHRoZSBwcm9wZXJ0eSBleGlzdHMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JSYW5nZShtaXhlZCAkdmFsdWUsIG1peGVkICRtaW5WYWx1ZSwgbWl4ZWQgJG1heFZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIHJhbmdlIG9mIG51bWJlcnMgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JSZWFkYWJsZShzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgcmVhZGFibGUgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JSZWdleChtaXhlZCAkdmFsdWUsIHN0cmluZyAkcGF0dGVybiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBtYXRjaGVzIGEgcmVnZXggb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JTYW1lKG1peGVkICR2YWx1ZSwgbWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSB0aGUgc2FtZSAodXNpbmcgPT09KSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclNhdGlzZnkobWl4ZWQgJHZhbHVlLCBjYWxsYWJsZSAkY2FsbGJhY2ssIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIHZhbGlkIGFjY29yZGluZyB0byBhIGNhbGxiYWNrIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yU2NhbGFyKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIFBIUCBzY2FsYXIgb3IgdGhhdCB0aGUgdmFsdWUgaXMgbnVsbC4KICogQG1ldGhvZCBzdGF0aWMgYm9vbCBudWxsT3JTdGFydHNXaXRoKG1peGVkICRzdHJpbmcsIHN0cmluZyAkbmVlZGxlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBzdGFydHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yU3RyaW5nKG1peGVkICR2YWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHN0cmluZyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclN1YmNsYXNzT2YobWl4ZWQgJHZhbHVlLCBzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBzdWJjbGFzcyBvZiBnaXZlbiBjbGFzcy1uYW1lIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yVHJ1ZShtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGJvb2xlYW4gVHJ1ZSBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPclVybChtaXhlZCAkdmFsdWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gVVJMIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yVXVpZChzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBVVUlEIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqIEBtZXRob2Qgc3RhdGljIGJvb2wgbnVsbE9yVmVyc2lvbihzdHJpbmcgJHZlcnNpb24xLCBzdHJpbmcgJG9wZXJhdG9yLCBzdHJpbmcgJHZlcnNpb24yLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCBjb21wYXJpc29uIG9mIHR3byB2ZXJzaW9ucyBvciB0aGF0IHRoZSB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIHN0YXRpYyBib29sIG51bGxPcldyaXRlYWJsZShzdHJpbmcgJHZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgd3JpdGVhYmxlIG9yIHRoYXQgdGhlIHZhbHVlIGlzIG51bGwuCiAqLwpjbGFzcyBBc3NlcnRpb24KewogICAgY29uc3QgSU5WQUxJRF9GTE9BVCA9IDk7CiAgICBjb25zdCBJTlZBTElEX0lOVEVHRVIgPSAxMDsKICAgIGNvbnN0IElOVkFMSURfRElHSVQgPSAxMTsKICAgIGNvbnN0IElOVkFMSURfSU5URUdFUklTSCA9IDEyOwogICAgY29uc3QgSU5WQUxJRF9CT09MRUFOID0gMTM7CiAgICBjb25zdCBWQUxVRV9FTVBUWSA9IDE0OwogICAgY29uc3QgVkFMVUVfTlVMTCA9IDE1OwogICAgY29uc3QgVkFMVUVfTk9UX05VTEwgPSAyNTsKICAgIGNvbnN0IElOVkFMSURfU1RSSU5HID0gMTY7CiAgICBjb25zdCBJTlZBTElEX1JFR0VYID0gMTc7CiAgICBjb25zdCBJTlZBTElEX01JTl9MRU5HVEggPSAxODsKICAgIGNvbnN0IElOVkFMSURfTUFYX0xFTkdUSCA9IDE5OwogICAgY29uc3QgSU5WQUxJRF9TVFJJTkdfU1RBUlQgPSAyMDsKICAgIGNvbnN0IElOVkFMSURfU1RSSU5HX0NPTlRBSU5TID0gMjE7CiAgICBjb25zdCBJTlZBTElEX0NIT0lDRSA9IDIyOwogICAgY29uc3QgSU5WQUxJRF9OVU1FUklDID0gMjM7CiAgICBjb25zdCBJTlZBTElEX0FSUkFZID0gMjQ7CiAgICBjb25zdCBJTlZBTElEX0tFWV9FWElTVFMgPSAyNjsKICAgIGNvbnN0IElOVkFMSURfTk9UX0JMQU5LID0gMjc7CiAgICBjb25zdCBJTlZBTElEX0lOU1RBTkNFX09GID0gMjg7CiAgICBjb25zdCBJTlZBTElEX1NVQkNMQVNTX09GID0gMjk7CiAgICBjb25zdCBJTlZBTElEX1JBTkdFID0gMzA7CiAgICBjb25zdCBJTlZBTElEX0FMTlVNID0gMzE7CiAgICBjb25zdCBJTlZBTElEX1RSVUUgPSAzMjsKICAgIGNvbnN0IElOVkFMSURfRVEgPSAzMzsKICAgIGNvbnN0IElOVkFMSURfU0FNRSA9IDM0OwogICAgY29uc3QgSU5WQUxJRF9NSU4gPSAzNTsKICAgIGNvbnN0IElOVkFMSURfTUFYID0gMzY7CiAgICBjb25zdCBJTlZBTElEX0xFTkdUSCA9IDM3OwogICAgY29uc3QgSU5WQUxJRF9GQUxTRSA9IDM4OwogICAgY29uc3QgSU5WQUxJRF9TVFJJTkdfRU5EID0gMzk7CiAgICBjb25zdCBJTlZBTElEX1VVSUQgPSA0MDsKICAgIGNvbnN0IElOVkFMSURfQ09VTlQgPSA0MTsKICAgIGNvbnN0IElOVkFMSURfTk9UX0VRID0gNDI7CiAgICBjb25zdCBJTlZBTElEX05PVF9TQU1FID0gNDM7CiAgICBjb25zdCBJTlZBTElEX1RSQVZFUlNBQkxFID0gNDQ7CiAgICBjb25zdCBJTlZBTElEX0FSUkFZX0FDQ0VTU0lCTEUgPSA0NTsKICAgIGNvbnN0IElOVkFMSURfS0VZX0lTU0VUID0gNDY7CiAgICBjb25zdCBJTlZBTElEX1ZBTFVFX0lOX0FSUkFZID0gNDc7CiAgICBjb25zdCBJTlZBTElEX0UxNjQgPSA0ODsKICAgIGNvbnN0IElOVkFMSURfRElSRUNUT1JZID0gMTAxOwogICAgY29uc3QgSU5WQUxJRF9GSUxFID0gMTAyOwogICAgY29uc3QgSU5WQUxJRF9SRUFEQUJMRSA9IDEwMzsKICAgIGNvbnN0IElOVkFMSURfV1JJVEVBQkxFID0gMTA0OwogICAgY29uc3QgSU5WQUxJRF9DTEFTUyA9IDEwNTsKICAgIGNvbnN0IElOVkFMSURfSU5URVJGQUNFID0gMTA2OwogICAgY29uc3QgSU5WQUxJRF9FTUFJTCA9IDIwMTsKICAgIGNvbnN0IElOVEVSRkFDRV9OT1RfSU1QTEVNRU5URUQgPSAyMDI7CiAgICBjb25zdCBJTlZBTElEX1VSTCA9IDIwMzsKICAgIGNvbnN0IElOVkFMSURfTk9UX0lOU1RBTkNFX09GID0gMjA0OwogICAgY29uc3QgVkFMVUVfTk9UX0VNUFRZID0gMjA1OwogICAgY29uc3QgSU5WQUxJRF9KU09OX1NUUklORyA9IDIwNjsKICAgIGNvbnN0IElOVkFMSURfT0JKRUNUID0gMjA3OwogICAgY29uc3QgSU5WQUxJRF9NRVRIT0QgPSAyMDg7CiAgICBjb25zdCBJTlZBTElEX1NDQUxBUiA9IDIwOTsKICAgIGNvbnN0IElOVkFMSURfTEVTUyA9IDIxMDsKICAgIGNvbnN0IElOVkFMSURfTEVTU19PUl9FUVVBTCA9IDIxMTsKICAgIGNvbnN0IElOVkFMSURfR1JFQVRFUiA9IDIxMjsKICAgIGNvbnN0IElOVkFMSURfR1JFQVRFUl9PUl9FUVVBTCA9IDIxMzsKICAgIGNvbnN0IElOVkFMSURfREFURSA9IDIxNDsKICAgIGNvbnN0IElOVkFMSURfQ0FMTEFCTEUgPSAyMTU7CiAgICBjb25zdCBJTlZBTElEX0tFWV9OT1RfRVhJU1RTID0gMjE2OwogICAgY29uc3QgSU5WQUxJRF9TQVRJU0ZZID0gMjE3OwogICAgY29uc3QgSU5WQUxJRF9JUCA9IDIxODsKICAgIGNvbnN0IElOVkFMSURfQkVUV0VFTiA9IDIxOTsKICAgIGNvbnN0IElOVkFMSURfQkVUV0VFTl9FWENMVVNJVkUgPSAyMjA7CiAgICBjb25zdCBJTlZBTElEX0VYVEVOU0lPTiA9IDIyMjsKICAgIGNvbnN0IElOVkFMSURfQ09OU1RBTlQgPSAyMjE7CiAgICBjb25zdCBJTlZBTElEX1ZFUlNJT04gPSAyMjM7CiAgICBjb25zdCBJTlZBTElEX1BST1BFUlRZID0gMjI0OwogICAgY29uc3QgSU5WQUxJRF9SRVNPVVJDRSA9IDIyNTsKCiAgICAvKioKICAgICAqIEV4Y2VwdGlvbiB0byB0aHJvdyB3aGVuIGFuIGFzc2VydGlvbiBmYWlsZWQuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkZXhjZXB0aW9uQ2xhc3MgPSAnQXNzZXJ0XEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbic7CgogICAgLyoqCiAgICAgKiBIZWxwZXIgbWV0aG9kIHRoYXQgaGFuZGxlcyBidWlsZGluZyB0aGUgYXNzZXJ0aW9uIGZhaWx1cmUgZXhjZXB0aW9ucy4KICAgICAqIFRoZXkgYXJlIHJldHVybmVkIGZyb20gdGhpcyBtZXRob2Qgc28gdGhhdCB0aGUgc3RhY2sgdHJhY2Ugc3RpbGwgc2hvd3MKICAgICAqIHRoZSBhc3NlcnRpb25zIG1ldGhvZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZQogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkY29kZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAkcHJvcGVydHlQYXRoCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICRjb25zdHJhaW50cwogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgJGNvZGUsICRwcm9wZXJ0eVBhdGggPSBudWxsLCBhcnJheSAkY29uc3RyYWludHMgPSBhcnJheSgpKQogICAgewogICAgICAgICRleGNlcHRpb25DbGFzcyA9IHN0YXRpYzo6JGV4Y2VwdGlvbkNsYXNzOwoKICAgICAgICByZXR1cm4gbmV3ICRleGNlcHRpb25DbGFzcygkbWVzc2FnZSwgJGNvZGUsICRwcm9wZXJ0eVBhdGgsICR2YWx1ZSwgJGNvbnN0cmFpbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIGVxdWFsICh1c2luZyA9PSApLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUyCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVxKCR2YWx1ZSwgJHZhbHVlMiwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlICE9ICR2YWx1ZTIpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBkb2VzIG5vdCBlcXVhbCBleHBlY3RlZCB2YWx1ZSAiJXMiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlMikKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9FUSwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2V4cGVjdGVkJyA9PiAkdmFsdWUyKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lICh1c2luZyA9PT0pLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUyCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhbWUoJHZhbHVlLCAkdmFsdWUyLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgIT09ICR2YWx1ZTIpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgdGhlIHNhbWUgYXMgZXhwZWN0ZWQgdmFsdWUgIiVzIi4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZTIpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfU0FNRSwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2V4cGVjdGVkJyA9PiAkdmFsdWUyKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCBlcXVhbCAodXNpbmcgPT0gKS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlMQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZTIKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90RXEoJHZhbHVlMSwgJHZhbHVlMiwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlMSA9PSAkdmFsdWUyKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgZXF1YWwgdG8gZXhwZWN0ZWQgdmFsdWUgIiVzIi4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlMSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUyKQogICAgICAgICAgICApOwogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUxLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX05PVF9FUSwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2V4cGVjdGVkJyA9PiAkdmFsdWUyKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCB0aGUgc2FtZSAodXNpbmcgPT09ICkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZTEKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUyCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdFNhbWUoJHZhbHVlMSwgJHZhbHVlMiwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlMSA9PT0gJHZhbHVlMikgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIHRoZSBzYW1lIGFzIGV4cGVjdGVkIHZhbHVlICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZTEpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlMikKICAgICAgICAgICAgKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlMSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9OT1RfU0FNRSwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2V4cGVjdGVkJyA9PiAkdmFsdWUyKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBpbiBhcnJheSBvZiBjaG9pY2VzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAkY2hvaWNlcwogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3RJbkFycmF5KCR2YWx1ZSwgYXJyYXkgJGNob2ljZXMsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKFxpbl9hcnJheSgkdmFsdWUsICRjaG9pY2VzKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIGluIGdpdmVuICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkY2hvaWNlcykKICAgICAgICAgICAgKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1ZBTFVFX0lOX0FSUkFZLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgaW50ZWdlci4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludGVnZXIoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGlzX2ludCgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGFuIGludGVnZXIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9JTlRFR0VSLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgZmxvYXQuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmbG9hdCgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfZmxvYXQoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhIGZsb2F0LicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRkxPQVQsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBWYWxpZGF0ZXMgaWYgYW4gaW50ZWdlciBvciBpbnRlZ2VyaXNoIGlzIGEgZGlnaXQuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkaWdpdCgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcY3R5cGVfZGlnaXQoKHN0cmluZykgJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhIGRpZ2l0LicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRElHSVQsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHBocCBpbnRlZ2VyJ2lzaC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludGVnZXJpc2goJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmIChcaXNfcmVzb3VyY2UoJHZhbHVlKSB8fCBcaXNfb2JqZWN0KCR2YWx1ZSkgfHwgXHN0cnZhbChcaW50dmFsKCR2YWx1ZSkpICE9ICR2YWx1ZSB8fCBcaXNfYm9vbCgkdmFsdWUpIHx8IFxpc19udWxsKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYW4gaW50ZWdlciBvciBhIG51bWJlciBjYXN0YWJsZSB0byBpbnRlZ2VyLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfSU5URUdFUklTSCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIHBocCBib29sZWFuLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYm9vbGVhbigkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfYm9vbCgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGEgYm9vbGVhbi4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0JPT0xFQU4sICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIFBIUCBzY2FsYXIuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzY2FsYXIoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGlzX3NjYWxhcigkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGEgc2NhbGFyLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfU0NBTEFSLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGVtcHR5LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90RW1wdHkoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmIChlbXB0eSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgZW1wdHksIGJ1dCBub24gZW1wdHkgdmFsdWUgd2FzIGV4cGVjdGVkLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OlZBTFVFX0VNUFRZLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgZW1wdHkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub0NvbnRlbnQoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghZW1wdHkoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBlbXB0eSwgYnV0IGVtcHR5IHZhbHVlIHdhcyBleHBlY3RlZC4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpWQUxVRV9OT1RfRU1QVFksICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudWxsLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbnVsbCgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBudWxsLCBidXQgbnVsbCB2YWx1ZSB3YXMgZXhwZWN0ZWQuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6VkFMVUVfTk9UX05VTEwsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgbnVsbC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdE51bGwoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyBudWxsLCBidXQgbm9uIG51bGwgdmFsdWUgd2FzIGV4cGVjdGVkLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OlZBTFVFX05VTEwsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHN0cmluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0cmluZygkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBleHBlY3RlZCB0byBiZSBzdHJpbmcsIHR5cGUgJXMgZ2l2ZW4uJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBcZ2V0dHlwZSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfU1RSSU5HLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgbWF0Y2hlcyBhIHJlZ2V4LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkcGF0dGVybgogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWdleCgkdmFsdWUsICRwYXR0ZXJuLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxwcmVnX21hdGNoKCRwYXR0ZXJuLCAkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgZG9lcyBub3QgbWF0Y2ggZXhwcmVzc2lvbi4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1JFR0VYLCAkcHJvcGVydHlQYXRoLCBhcnJheSgncGF0dGVybicgPT4gJHBhdHRlcm4pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgc3RyaW5nIGhhcyBhIGdpdmVuIGxlbmd0aC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgJGxlbmd0aAogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsZW5ndGgoJHZhbHVlLCAkbGVuZ3RoLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsLCAkZW5jb2RpbmcgPSAndXRmOCcpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmIChcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKSAhPT0gJGxlbmd0aCkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGhhcyB0byBiZSAlZCBleGFjdGx5IGNoYXJhY3RlcnMgbG9uZywgYnV0IGxlbmd0aCBpcyAlZC4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgICRsZW5ndGgsCiAgICAgICAgICAgICAgICBcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJGNvbnN0cmFpbnRzID0gYXJyYXkoJ2xlbmd0aCcgPT4gJGxlbmd0aCwgJ2VuY29kaW5nJyA9PiAkZW5jb2RpbmcpOwogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTEVOR1RILCAkcHJvcGVydHlQYXRoLCAkY29uc3RyYWludHMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBhIHN0cmluZyBpcyBhdCBsZWFzdCAkbWluTGVuZ3RoIGNoYXJzIGxvbmcuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICRtaW5MZW5ndGgKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWluTGVuZ3RoKCR2YWx1ZSwgJG1pbkxlbmd0aCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCwgJGVuY29kaW5nID0gJ3V0ZjgnKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoXG1iX3N0cmxlbigkdmFsdWUsICRlbmNvZGluZykgPCAkbWluTGVuZ3RoKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgdG9vIHNob3J0LCBpdCBzaG91bGQgaGF2ZSBhdCBsZWFzdCAlZCBjaGFyYWN0ZXJzLCBidXQgb25seSBoYXMgJWQgY2hhcmFjdGVycy4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgICRtaW5MZW5ndGgsCiAgICAgICAgICAgICAgICBcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJGNvbnN0cmFpbnRzID0gYXJyYXkoJ21pbl9sZW5ndGgnID0+ICRtaW5MZW5ndGgsICdlbmNvZGluZycgPT4gJGVuY29kaW5nKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX01JTl9MRU5HVEgsICRwcm9wZXJ0eVBhdGgsICRjb25zdHJhaW50cyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHN0cmluZyB2YWx1ZSBpcyBub3QgbG9uZ2VyIHRoYW4gJG1heExlbmd0aCBjaGFycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgJG1heExlbmd0aAogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYXhMZW5ndGgoJHZhbHVlLCAkbWF4TGVuZ3RoLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsLCAkZW5jb2RpbmcgPSAndXRmOCcpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmIChcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKSA+ICRtYXhMZW5ndGgpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyB0b28gbG9uZywgaXQgc2hvdWxkIGhhdmUgbm8gbW9yZSB0aGFuICVkIGNoYXJhY3RlcnMsIGJ1dCBoYXMgJWQgY2hhcmFjdGVycy4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgICRtYXhMZW5ndGgsCiAgICAgICAgICAgICAgICBcbWJfc3RybGVuKCR2YWx1ZSwgJGVuY29kaW5nKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgJGNvbnN0cmFpbnRzID0gYXJyYXkoJ21heF9sZW5ndGgnID0+ICRtYXhMZW5ndGgsICdlbmNvZGluZycgPT4gJGVuY29kaW5nKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX01BWF9MRU5HVEgsICRwcm9wZXJ0eVBhdGgsICRjb25zdHJhaW50cyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHN0cmluZyBsZW5ndGggaXMgYmV0d2VlbiBtaW4sbWF4IGxlbmd0aHMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICRtaW5MZW5ndGgKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAkbWF4TGVuZ3RoCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJGVuY29kaW5nCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJldHdlZW5MZW5ndGgoJHZhbHVlLCAkbWluTGVuZ3RoLCAkbWF4TGVuZ3RoLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsLCAkZW5jb2RpbmcgPSAndXRmOCcpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgc3RhdGljOjptaW5MZW5ndGgoJHZhbHVlLCAkbWluTGVuZ3RoLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCwgJGVuY29kaW5nKTsKICAgICAgICBzdGF0aWM6Om1heExlbmd0aCgkdmFsdWUsICRtYXhMZW5ndGgsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoLCAkZW5jb2RpbmcpOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHN0cmluZyBzdGFydHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkc3RyaW5nCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJG5lZWRsZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRlbmNvZGluZwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdGFydHNXaXRoKCRzdHJpbmcsICRuZWVkbGUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwsICRlbmNvZGluZyA9ICd1dGY4JykKICAgIHsKICAgICAgICBzdGF0aWM6OnN0cmluZygkc3RyaW5nLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmIChcbWJfc3RycG9zKCRzdHJpbmcsICRuZWVkbGUsIG51bGwsICRlbmNvZGluZykgIT09IDApIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBkb2VzIG5vdCBzdGFydCB3aXRoICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRzdHJpbmcpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG5lZWRsZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRjb25zdHJhaW50cyA9IGFycmF5KCduZWVkbGUnID0+ICRuZWVkbGUsICdlbmNvZGluZycgPT4gJGVuY29kaW5nKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHN0cmluZywgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9TVFJJTkdfU1RBUlQsICRwcm9wZXJ0eVBhdGgsICRjb25zdHJhaW50cyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHN0cmluZyBlbmRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHN0cmluZwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRuZWVkbGUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5kc1dpdGgoJHN0cmluZywgJG5lZWRsZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCwgJGVuY29kaW5nID0gJ3V0ZjgnKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCRzdHJpbmcsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgJHN0cmluZ1Bvc2l0aW9uID0gXG1iX3N0cmxlbigkc3RyaW5nLCAkZW5jb2RpbmcpIC0gXG1iX3N0cmxlbigkbmVlZGxlLCAkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoXG1iX3N0cnJpcG9zKCRzdHJpbmcsICRuZWVkbGUsIG51bGwsICRlbmNvZGluZykgIT09ICRzdHJpbmdQb3NpdGlvbikgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGRvZXMgbm90IGVuZCB3aXRoICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRzdHJpbmcpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG5lZWRsZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRjb25zdHJhaW50cyA9IGFycmF5KCduZWVkbGUnID0+ICRuZWVkbGUsICdlbmNvZGluZycgPT4gJGVuY29kaW5nKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHN0cmluZywgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9TVFJJTkdfRU5ELCAkcHJvcGVydHlQYXRoLCAkY29uc3RyYWludHMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBzdHJpbmcgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHN0cmluZwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRuZWVkbGUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29udGFpbnMoJHN0cmluZywgJG5lZWRsZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCwgJGVuY29kaW5nID0gJ3V0ZjgnKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCRzdHJpbmcsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKFxtYl9zdHJwb3MoJHN0cmluZywgJG5lZWRsZSwgbnVsbCwgJGVuY29kaW5nKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBkb2VzIG5vdCBjb250YWluICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRzdHJpbmcpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG5lZWRsZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRjb25zdHJhaW50cyA9IGFycmF5KCduZWVkbGUnID0+ICRuZWVkbGUsICdlbmNvZGluZycgPT4gJGVuY29kaW5nKTsKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHN0cmluZywgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9TVFJJTkdfQ09OVEFJTlMsICRwcm9wZXJ0eVBhdGgsICRjb25zdHJhaW50cyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICRjaG9pY2VzCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNob2ljZSgkdmFsdWUsIGFycmF5ICRjaG9pY2VzLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGluX2FycmF5KCR2YWx1ZSwgJGNob2ljZXMsIHRydWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGFuIGVsZW1lbnQgb2YgdGhlIHZhbGlkIHZhbHVlczogJXMnLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIFxpbXBsb2RlKCcsICcsIFxhcnJheV9tYXAoYXJyYXkoXGdldF9jYWxsZWRfY2xhc3MoKSwgJ3N0cmluZ2lmeScpLCAkY2hvaWNlcykpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQ0hPSUNFLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnY2hvaWNlcycgPT4gJGNob2ljZXMpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW4gYXJyYXkgb2YgY2hvaWNlcy4KICAgICAqCiAgICAgKiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAc2VlIGNob2ljZSgpfS4KICAgICAqCiAgICAgKiBAYWxpYXNPZiBjaG9pY2UoKQogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAkY2hvaWNlcwogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluQXJyYXkoJHZhbHVlLCBhcnJheSAkY2hvaWNlcywgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljOjpjaG9pY2UoJHZhbHVlLCAkY2hvaWNlcywgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbnVtZXJpYy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG51bWVyaWMoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGlzX251bWVyaWMoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBudW1lcmljLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTlVNRVJJQywgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcmVzb3VyY2UuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1Jlc291cmNlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19yZXNvdXJjZSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGEgcmVzb3VyY2UuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9SRVNPVVJDRSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBcnJheSgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhbiBhcnJheS4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0FSUkFZLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYSB0cmF2ZXJzYWJsZSBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1RyYXZlcnNhYmxlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19hcnJheSgkdmFsdWUpICYmICEkdmFsdWUgaW5zdGFuY2VvZiBcVHJhdmVyc2FibGUpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYW4gYXJyYXkgYW5kIGRvZXMgbm90IGltcGxlbWVudCBUcmF2ZXJzYWJsZS4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1RSQVZFUlNBQkxFLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYW4gYXJyYXktYWNjZXNzaWJsZSBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0FycmF5QWNjZXNzaWJsZSgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJHZhbHVlKSAmJiAhJHZhbHVlIGluc3RhbmNlb2YgXEFycmF5QWNjZXNzKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgbm90IGFuIGFycmF5IGFuZCBkb2VzIG5vdCBpbXBsZW1lbnQgQXJyYXlBY2Nlc3MuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9BUlJBWV9BQ0NFU1NJQkxFLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGludCAgICAgICAgICAgJGtleQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBrZXlFeGlzdHMoJHZhbHVlLCAka2V5LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6aXNBcnJheSgkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ0FycmF5IGRvZXMgbm90IGNvbnRhaW4gYW4gZWxlbWVudCB3aXRoIGtleSAiJXMiJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRrZXkpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfS0VZX0VYSVNUUywgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2tleScgPT4gJGtleSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBrZXkgZG9lcyBub3QgZXhpc3QgaW4gYW4gYXJyYXkuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgICAgICAgICAgICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24ga2V5Tm90RXhpc3RzKCR2YWx1ZSwgJGtleSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OmlzQXJyYXkoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ0FycmF5IGNvbnRhaW5zIGFuIGVsZW1lbnQgd2l0aCBrZXkgIiVzIicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgka2V5KQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0tFWV9OT1RfRVhJU1RTLCAkcHJvcGVydHlQYXRoLCBhcnJheSgna2V5JyA9PiAka2V5KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgdXNpbmcgaXNzZXQoKS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGludCAgICAgICAgICAgJGtleQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBrZXlJc3NldCgkdmFsdWUsICRrZXksICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjppc0FycmF5QWNjZXNzaWJsZSgkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCFpc3NldCgkdmFsdWVbJGtleV0pKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1RoZSBlbGVtZW50IHdpdGgga2V5ICIlcyIgd2FzIG5vdCBmb3VuZCcsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgka2V5KQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0tFWV9JU1NFVCwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2tleScgPT4gJGtleSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5L2FycmF5LWFjY2Vzc2libGUgb2JqZWN0IGFuZCBpdHMgdmFsdWUgaXMgbm90IGVtcHR5LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8aW50ICAgICAgICAgICAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdEVtcHR5S2V5KCR2YWx1ZSwgJGtleSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OmtleUlzc2V0KCR2YWx1ZSwgJGtleSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIHN0YXRpYzo6bm90RW1wdHkoJHZhbHVlWyRrZXldLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGJsYW5rLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90QmxhbmsoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gJHZhbHVlIHx8IChlbXB0eSgkdmFsdWUpICYmICcwJyAhPSAkdmFsdWUpIHx8IChcaXNfc3RyaW5nKCR2YWx1ZSkgJiYgJycgPT09IFx0cmltKCR2YWx1ZSkpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgYmxhbmssIGJ1dCB3YXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhIHZhbHVlLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTk9UX0JMQU5LLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW5zdGFuY2Ugb2YgZ2l2ZW4gY2xhc3MtbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJGNsYXNzTmFtZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0luc3RhbmNlT2YoJHZhbHVlLCAkY2xhc3NOYW1lLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghKCR2YWx1ZSBpbnN0YW5jZW9mICRjbGFzc05hbWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ0NsYXNzICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGluc3RhbmNlb2Ygb2YgIiVzIiBidXQgaXMgbm90LicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgJGNsYXNzTmFtZQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0lOU1RBTkNFX09GLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnY2xhc3MnID0+ICRjbGFzc05hbWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluc3RhbmNlIG9mIGdpdmVuIGNsYXNzLW5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRjbGFzc05hbWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90SXNJbnN0YW5jZU9mKCR2YWx1ZSwgJGNsYXNzTmFtZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgJGNsYXNzTmFtZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdDbGFzcyAiJXMiIHdhcyBub3QgZXhwZWN0ZWQgdG8gYmUgaW5zdGFuY2VvZiBvZiAiJXMiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgJGNsYXNzTmFtZQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX05PVF9JTlNUQU5DRV9PRiwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2NsYXNzJyA9PiAkY2xhc3NOYW1lKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIHN1YmNsYXNzIG9mIGdpdmVuIGNsYXNzLW5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRjbGFzc05hbWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc3ViY2xhc3NPZigkdmFsdWUsICRjbGFzc05hbWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfc3ViY2xhc3Nfb2YoJHZhbHVlLCAkY2xhc3NOYW1lKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdDbGFzcyAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBzdWJjbGFzcyBvZiAiJXMiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgJGNsYXNzTmFtZQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1NVQkNMQVNTX09GLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnY2xhc3MnID0+ICRjbGFzc05hbWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW4gcmFuZ2Ugb2YgbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJG1pblZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJG1heFZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJhbmdlKCR2YWx1ZSwgJG1pblZhbHVlLCAkbWF4VmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpudW1lcmljKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoJHZhbHVlIDwgJG1pblZhbHVlIHx8ICR2YWx1ZSA+ICRtYXhWYWx1ZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdOdW1iZXIgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgYXQgbGVhc3QgIiVkIiBhbmQgYXQgbW9zdCAiJWQiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG1pblZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRtYXhWYWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9SQU5HRSwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ21pbicgPT4gJG1pblZhbHVlLCAnbWF4JyA9PiAkbWF4VmFsdWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBhdCBsZWFzdCBhcyBiaWcgYXMgYSBnaXZlbiBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJG1pblZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1pbigkdmFsdWUsICRtaW5WYWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6Om51bWVyaWMoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmICgkdmFsdWUgPCAkbWluVmFsdWUpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnTnVtYmVyICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGF0IGxlYXN0ICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbWluVmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTUlOLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnbWluJyA9PiAkbWluVmFsdWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSBudW1iZXIgaXMgc21hbGxlciBhcyBhIGdpdmVuIGxpbWl0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkbWF4VmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWF4KCR2YWx1ZSwgJG1heFZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6bnVtZXJpYygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCR2YWx1ZSA+ICRtYXhWYWx1ZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdOdW1iZXIgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgYXQgbW9zdCAiJXMiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG1heFZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX01BWCwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ21heCcgPT4gJG1heFZhbHVlKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGEgZmlsZSBleGlzdHMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmaWxlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OnN0cmluZygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICBzdGF0aWM6Om5vdEVtcHR5KCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxpc19maWxlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnRmlsZSAiJXMiIHdhcyBleHBlY3RlZCB0byBleGlzdC4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0ZJTEUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBhIGRpcmVjdG9yeSBleGlzdHMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkaXJlY3RvcnkoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxpc19kaXIoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdQYXRoICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIGEgZGlyZWN0b3J5LicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRElSRUNUT1JZLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIHNvbWV0aGluZyByZWFkYWJsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlYWRhYmxlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OnN0cmluZygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCFcaXNfcmVhZGFibGUoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdQYXRoICIlcyIgd2FzIGV4cGVjdGVkIHRvIGJlIHJlYWRhYmxlLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfUkVBREFCTEUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHdyaXRlYWJsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdyaXRlYWJsZSgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpzdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIGlmICghXGlzX3dyaXRhYmxlKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnUGF0aCAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSB3cml0ZWFibGUuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9XUklURUFCTEUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBlbWFpbCBhZHJlc3MgKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfRU1BSUwpLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW1haWwoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBpZiAoIVxmaWx0ZXJfdmFyKCR2YWx1ZSwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRU1BSUwsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRob3N0ID0gXHN1YnN0cigkdmFsdWUsIFxzdHJwb3MoJHZhbHVlLCAnQCcpICsgMSk7CgogICAgICAgICAgICAvLyBMaWtlbHkgbm90IGEgRlFETiwgYnVnIGluIFBIUCBGSUxURVJfVkFMSURBVEVfRU1BSUwgcHJpb3IgdG8gUEhQIDUuMy4zCiAgICAgICAgICAgIGlmIChcdmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNS4zLjMnLCAnPCcpICYmIFxzdHJwb3MoJGhvc3QsICcuJykgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBlLW1haWwgYWRkcmVzcy4nLAogICAgICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0VNQUlMLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBVUkwuCiAgICAgKgogICAgICogVGhpcyBjb2RlIHNuaXBwZWQgd2FzIHRha2VuIGZyb20gdGhlIFN5bWZvbnkgcHJvamVjdCBhbmQgbW9kaWZpZWQgdG8gdGhlIHNwZWNpYWwgZGVtYW5kcyBvZiB0aGlzIG1ldGhvZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvVmFsaWRhdG9yL2Jsb2IvbWFzdGVyL0NvbnN0cmFpbnRzL1VybFZhbGlkYXRvci5waHAKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvVmFsaWRhdG9yL2Jsb2IvbWFzdGVyL0NvbnN0cmFpbnRzL1VybC5waHAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1cmwoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6c3RyaW5nKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICAkcHJvdG9jb2xzID0gYXJyYXkoJ2h0dHAnLCAnaHR0cHMnKTsKCiAgICAgICAgJHBhdHRlcm4gPSAnfl4KICAgICAgICAgICAgKCVzKTovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcHJvdG9jb2wKICAgICAgICAgICAgKChbXHBMXHBOLV0rOik/KFtccExccE4tXSspQCk/ICAgICAgICAgICMgYmFzaWMgYXV0aAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICAoW1xwTFxwTlxwUy1cLl0pKyhcLj8oW1xwTFxwTl18eG5cLVwtW1xwTFxwTi1dKykrXC4/KSAjIGEgZG9tYWluIG5hbWUKICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3IKICAgICAgICAgICAgICAgIFxkezEsM31cLlxkezEsM31cLlxkezEsM31cLlxkezEsM30gICAgICAgICAgICAgICAgICAgICMgYW4gSVAgYWRkcmVzcwogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcgogICAgICAgICAgICAgICAgXFsKICAgICAgICAgICAgICAgICAgICAoPzooPzooPzooPzooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KXs2fSkoPzooPzooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KD86KD86WzAtOWEtZl17MSw0fSkpKXwoPzooPzooPzooPzooPzoyNVswLTVdfCg/OlsxLTldfDFbMC05XXwyWzAtNF0pP1swLTldKSlcLil7M30oPzooPzoyNVswLTVdfCg/OlsxLTldfDFbMC05XXwyWzAtNF0pP1swLTldKSkpKSkpKXwoPzooPzo6Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezV9KSg/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTooPzooPzpbMC05YS1mXXsxLDR9KSkpfCg/Oig/Oig/Oig/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKVwuKXszfSg/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKSkpKSkpfCg/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKSk/OjooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KXs0fSkoPzooPzooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KD86KD86WzAtOWEtZl17MSw0fSkpKXwoPzooPzooPzooPzooPzoyNVswLTVdfCg/OlsxLTldfDFbMC05XXwyWzAtNF0pP1swLTldKSlcLil7M30oPzooPzoyNVswLTVdfCg/OlsxLTldfDFbMC05XXwyWzAtNF0pP1swLTldKSkpKSkpKXwoPzooPzooPzooPzooPzooPzpbMC05YS1mXXsxLDR9KSk6KXswLDF9KD86KD86WzAtOWEtZl17MSw0fSkpKT86Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezN9KSg/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTooPzooPzpbMC05YS1mXXsxLDR9KSkpfCg/Oig/Oig/Oig/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKVwuKXszfSg/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKSkpKSkpfCg/Oig/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezAsMn0oPzooPzpbMC05YS1mXXsxLDR9KSkpPzo6KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7Mn0pKD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOig/Oig/OlswLTlhLWZdezEsNH0pKSl8KD86KD86KD86KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpXC4pezN9KD86KD86MjVbMC01XXwoPzpbMS05XXwxWzAtOV18MlswLTRdKT9bMC05XSkpKSkpKSl8KD86KD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7MCwzfSg/Oig/OlswLTlhLWZdezEsNH0pKSk/OjooPzooPzpbMC05YS1mXXsxLDR9KSk6KSg/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTooPzooPzpbMC05YS1mXXsxLDR9KSkpfCg/Oig/Oig/Oig/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKVwuKXszfSg/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKSkpKSkpfCg/Oig/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezAsNH0oPzooPzpbMC05YS1mXXsxLDR9KSkpPzo6KSg/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTooPzooPzpbMC05YS1mXXsxLDR9KSkpfCg/Oig/Oig/Oig/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKVwuKXszfSg/Oig/OjI1WzAtNV18KD86WzEtOV18MVswLTldfDJbMC00XSk/WzAtOV0pKSkpKSkpfCg/Oig/Oig/Oig/Oig/Oig/OlswLTlhLWZdezEsNH0pKTopezAsNX0oPzooPzpbMC05YS1mXXsxLDR9KSkpPzo6KSg/Oig/OlswLTlhLWZdezEsNH0pKSl8KD86KD86KD86KD86KD86KD86WzAtOWEtZl17MSw0fSkpOil7MCw2fSg/Oig/OlswLTlhLWZdezEsNH0pKSk/OjopKSkpCiAgICAgICAgICAgICAgICBcXSAgIyBhbiBJUHY2IGFkZHJlc3MKICAgICAgICAgICAgKQogICAgICAgICAgICAoOlswLTldKyk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhIHBvcnQgKG9wdGlvbmFsKQogICAgICAgICAgICAoLz98L1xTK3xcP1xTKnxcI1xTKikgICAgICAgICAgICAgICAgICAgIyBhIC8sIG5vdGhpbmcsIGEgLyB3aXRoIHNvbWV0aGluZywgYSBxdWVyeSBvciBhIGZyYWdtZW50CiAgICAgICAgJH5peHUnOwoKICAgICAgICAkcGF0dGVybiA9IFxzcHJpbnRmKCRwYXR0ZXJuLCBcaW1wbG9kZSgnfCcsICRwcm90b2NvbHMpKTsKCiAgICAgICAgaWYgKCFccHJlZ19tYXRjaCgkcGF0dGVybiwgJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBhIHZhbGlkIFVSTCBzdGFydGluZyB3aXRoIGh0dHAgb3IgaHR0cHMnLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX1VSTCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFscGhhbnVtZXJpYy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFsbnVtKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBzdGF0aWM6OnJlZ2V4KCR2YWx1ZSwgJyheKFthLXpBLVpdezF9W2EtekEtWjAtOV0qKSQpJywgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0gY2F0Y2ggKEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhbHBoYW51bWVyaWMsIHN0YXJ0aW5nIHdpdGggbGV0dGVycyBhbmQgY29udGFpbmluZyBvbmx5IGxldHRlcnMgYW5kIG51bWJlcnMuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9BTE5VTSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIFRydWUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnVlKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHZhbHVlICE9PSB0cnVlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1ZhbHVlICIlcyIgaXMgbm90IFRSVUUuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9UUlVFLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGJvb2xlYW4gRmFsc2UuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYWxzZSgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgRkFMU0UuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9GQUxTRSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBleGlzdHMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjbGFzc0V4aXN0cygkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcY2xhc3NfZXhpc3RzKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnQ2xhc3MgIiVzIiBkb2VzIG5vdCBleGlzdC4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0NMQVNTLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIGludGVyZmFjZSBleGlzdHMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnRlcmZhY2VFeGlzdHMoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGludGVyZmFjZV9leGlzdHMoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdJbnRlcmZhY2UgIiVzIiBkb2VzIG5vdCBleGlzdC4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX0lOVEVSRkFDRSwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBpbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICRjbGFzcwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRpbnRlcmZhY2VOYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGltcGxlbWVudHNJbnRlcmZhY2UoJGNsYXNzLCAkaW50ZXJmYWNlTmFtZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICAkcmVmbGVjdGlvbiA9IG5ldyBcUmVmbGVjdGlvbkNsYXNzKCRjbGFzcyk7CiAgICAgICAgaWYgKCEkcmVmbGVjdGlvbi0+aW1wbGVtZW50c0ludGVyZmFjZSgkaW50ZXJmYWNlTmFtZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnQ2xhc3MgIiVzIiBkb2VzIG5vdCBpbXBsZW1lbnQgaW50ZXJmYWNlICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRjbGFzcyksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkaW50ZXJmYWNlTmFtZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCRjbGFzcywgJG1lc3NhZ2UsIHN0YXRpYzo6SU5URVJGQUNFX05PVF9JTVBMRU1FTlRFRCwgJHByb3BlcnR5UGF0aCwgYXJyYXkoJ2ludGVyZmFjZScgPT4gJGludGVyZmFjZU5hbWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIGpzb24gc3RyaW5nLgogICAgICoKICAgICAqIE5PVElDRToKICAgICAqIFNpbmNlIHRoaXMgZG9lcyBhIGpzb25fZGVjb2RlIHRvIGRldGVybWluZSBpdHMgdmFsaWRpdHkKICAgICAqIHlvdSBwcm9iYWJseSBzaG91bGQgY29uc2lkZXIsIHdoZW4gdXNpbmcgdGhlIHZhcmlhYmxlCiAgICAgKiBjb250ZW50IGFmdGVyd2FyZHMsIGp1c3QgdG8gZGVjb2RlIGFuZCBjaGVjayBmb3IgeW91cnNlbGYgaW5zdGVhZAogICAgICogb2YgdXNpbmcgdGhpcyBhc3NlcnRpb24uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0pzb25TdHJpbmcoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsID09PSBcanNvbl9kZWNvZGUoJHZhbHVlKSAmJiBKU09OX0VSUk9SX05PTkUgIT09IFxqc29uX2xhc3RfZXJyb3IoKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIGlzIG5vdCBhIHZhbGlkIEpTT04gc3RyaW5nLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfSlNPTl9TVFJJTkcsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQgVVVJRC4KICAgICAqCiAgICAgKiBVc2VzIGNvZGUgZnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbXNleS91dWlkfSB0aGF0IGlzIE1JVCBsaWNlbnNlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHV1aWQoJHZhbHVlLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgICR2YWx1ZSA9IFxzdHJfcmVwbGFjZShhcnJheSgndXJuOicsICd1dWlkOicsICd7JywgJ30nKSwgJycsICR2YWx1ZSk7CgogICAgICAgIGlmICgkdmFsdWUgPT09ICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFccHJlZ19tYXRjaCgnL15bMC05QS1GYS1mXXs4fS1bMC05QS1GYS1mXXs0fS1bMC05QS1GYS1mXXs0fS1bMC05QS1GYS1mXXs0fS1bMC05QS1GYS1mXXsxMn0kLycsICR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYSB2YWxpZCBVVUlELicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfVVVJRCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBFMTY0IFBob25lIE51bWJlci4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0UuMTY0CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlMTY0KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxwcmVnX21hdGNoKCcvXlwrP1sxLTldXGR7MSwxNH0kLycsICR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBpcyBub3QgYSB2YWxpZCBFMTY0LicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfRTE2NCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSBjb3VudCBvZiBjb3VudGFibGUgaXMgZXF1YWwgdG8gY291bnQuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fFxDb3VudGFibGUgJGNvdW50YWJsZQogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgJGNvdW50CiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb3VudCgkY291bnRhYmxlLCAkY291bnQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRjb3VudCAhPT0gXGNvdW50KCRjb3VudGFibGUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ0xpc3QgZG9lcyBub3QgY29udGFpbiBleGFjdGx5ICIlZCIgZWxlbWVudHMuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCRjb3VudCkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCRjb3VudGFibGUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQ09VTlQsICRwcm9wZXJ0eVBhdGgsIGFycmF5KCdjb3VudCcgPT4gJGNvdW50KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHN0YXRpYyBjYWxsIGhhbmRsZXIgdG8gaW1wbGVtZW50OgogICAgICogIC0gIm51bGwgb3IgYXNzZXJ0aW9uIiBkZWxlZ2F0aW9uCiAgICAgKiAgLSAiYWxsIiBkZWxlZ2F0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1ldGhvZAogICAgICogQHBhcmFtIGFycmF5ICAkYXJncwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxtaXhlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIF9fY2FsbFN0YXRpYygkbWV0aG9kLCAkYXJncykKICAgIHsKICAgICAgICBpZiAoXHN0cnBvcygkbWV0aG9kLCAnbnVsbE9yJykgPT09IDApIHsKICAgICAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygwLCAkYXJncykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCdNaXNzaW5nIHRoZSBmaXJzdCBhcmd1bWVudC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRhcmdzWzBdID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG1ldGhvZCA9IFxzdWJzdHIoJG1ldGhvZCwgNik7CgogICAgICAgICAgICByZXR1cm4gXGNhbGxfdXNlcl9mdW5jX2FycmF5KGFycmF5KFxnZXRfY2FsbGVkX2NsYXNzKCksICRtZXRob2QpLCAkYXJncyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXHN0cnBvcygkbWV0aG9kLCAnYWxsJykgPT09IDApIHsKICAgICAgICAgICAgaWYgKCFcYXJyYXlfa2V5X2V4aXN0cygwLCAkYXJncykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCdNaXNzaW5nIHRoZSBmaXJzdCBhcmd1bWVudC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RhdGljOjppc1RyYXZlcnNhYmxlKCRhcmdzWzBdKTsKCiAgICAgICAgICAgICRtZXRob2QgPSBcc3Vic3RyKCRtZXRob2QsIDMpOwogICAgICAgICAgICAkdmFsdWVzID0gXGFycmF5X3NoaWZ0KCRhcmdzKTsKICAgICAgICAgICAgJGNhbGxlZENsYXNzID0gXGdldF9jYWxsZWRfY2xhc3MoKTsKCiAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBcY2FsbF91c2VyX2Z1bmNfYXJyYXkoYXJyYXkoJGNhbGxlZENsYXNzLCAkbWV0aG9kKSwgXGFycmF5X21lcmdlKGFycmF5KCR2YWx1ZSksICRhcmdzKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IEJhZE1ldGhvZENhbGxFeGNlcHRpb24oJ05vIGFzc2VydGlvbiBBc3NlcnRpb24jJyAuICRtZXRob2QgLiAnIGV4aXN0cy4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlcyBhcnJheSBoYXMgZXZlcnkgY2hvaWNlIGFzIGtleSBhbmQgdGhhdCB0aGlzIGNob2ljZSBoYXMgY29udGVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgJHZhbHVlcwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICRjaG9pY2VzCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hvaWNlc05vdEVtcHR5KGFycmF5ICR2YWx1ZXMsIGFycmF5ICRjaG9pY2VzLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6bm90RW1wdHkoJHZhbHVlcywgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwoKICAgICAgICBmb3JlYWNoICgkY2hvaWNlcyBhcyAkY2hvaWNlKSB7CiAgICAgICAgICAgIHN0YXRpYzo6bm90RW1wdHlLZXkoJHZhbHVlcywgJGNob2ljZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmVzIHRoYXQgdGhlIG5hbWVkIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICRvYmplY3QKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWV0aG9kRXhpc3RzKCR2YWx1ZSwgJG9iamVjdCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OmlzT2JqZWN0KCRvYmplY3QsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgaWYgKCFcbWV0aG9kX2V4aXN0cygkb2JqZWN0LCAkdmFsdWUpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ0V4cGVjdGVkICIlcyIgZG9lcyBub3QgZXhpc3QgaW4gcHJvdmlkZWQgb2JqZWN0LicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTUVUSE9ELCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhbiBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzT2JqZWN0KCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19vYmplY3QoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdQcm92aWRlZCAiJXMiIGlzIG5vdCBhIHZhbGlkIG9iamVjdC4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgdGhyb3cgc3RhdGljOjpjcmVhdGVFeGNlcHRpb24oJHZhbHVlLCAkbWVzc2FnZSwgc3RhdGljOjpJTlZBTElEX09CSkVDVCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3MgdGhhbiBnaXZlbiBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGxpbWl0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGVzc1RoYW4oJHZhbHVlLCAkbGltaXQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA+PSAkbGltaXQpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnUHJvdmlkZWQgIiVzIiBpcyBub3QgbGVzcyB0aGFuICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTEVTUywgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3Mgb3IgdGhhbiBnaXZlbiBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGxpbWl0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbGVzc09yRXF1YWxUaGFuKCR2YWx1ZSwgJGxpbWl0LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPiAkbGltaXQpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnUHJvdmlkZWQgIiVzIiBpcyBub3QgbGVzcyBvciBlcXVhbCB0aGFuICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfTEVTU19PUl9FUVVBTCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiBnaXZlbiBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGxpbWl0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ3JlYXRlclRoYW4oJHZhbHVlLCAkbGltaXQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA8PSAkbGltaXQpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnUHJvdmlkZWQgIiVzIiBpcyBub3QgZ3JlYXRlciB0aGFuICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfR1JFQVRFUiwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBnaXZlbiBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGxpbWl0CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ3JlYXRlck9yRXF1YWxUaGFuKCR2YWx1ZSwgJGxpbWl0LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPCAkbGltaXQpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnUHJvdmlkZWQgIiVzIiBpcyBub3QgZ3JlYXRlciBvciBlcXVhbCB0aGFuICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfR1JFQVRFUl9PUl9FUVVBTCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGEgbG93ZXIgbGltaXQsIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYW4gdXBwZXIgbGltaXQuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAkdmFsdWUKICAgICAqIEBwYXJhbSBtaXhlZCAgJGxvd2VyTGltaXQKICAgICAqIEBwYXJhbSBtaXhlZCAgJHVwcGVyTGltaXQKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmcgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJldHdlZW4oJHZhbHVlLCAkbG93ZXJMaW1pdCwgJHVwcGVyTGltaXQsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRsb3dlckxpbWl0ID4gJHZhbHVlIHx8ICR2YWx1ZSA+ICR1cHBlckxpbWl0KSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1Byb3ZpZGVkICIlcyIgaXMgbmVpdGhlciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gIiVzIiBub3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkbG93ZXJMaW1pdCksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdXBwZXJMaW1pdCkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9CRVRXRUVOLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gYSBsb3dlciBsaW1pdCwgYW5kIGxlc3MgdGhhbiBhbiB1cHBlciBsaW1pdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICR2YWx1ZQogICAgICogQHBhcmFtIG1peGVkICAkbG93ZXJMaW1pdAogICAgICogQHBhcmFtIG1peGVkICAkdXBwZXJMaW1pdAogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZyAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYmV0d2VlbkV4Y2x1c2l2ZSgkdmFsdWUsICRsb3dlckxpbWl0LCAkdXBwZXJMaW1pdCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJGxvd2VyTGltaXQgPj0gJHZhbHVlIHx8ICR2YWx1ZSA+PSAkdXBwZXJMaW1pdCkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdQcm92aWRlZCAiJXMiIGlzIG5laXRoZXIgZ3JlYXRlciB0aGFuICIlcyIgbm9yIGxlc3MgdGhhbiAiJXMiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJGxvd2VyTGltaXQpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHVwcGVyTGltaXQpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQkVUV0VFTl9FWENMVVNJVkUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBleHRlbnNpb24gaXMgbG9hZGVkLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXh0ZW5zaW9uTG9hZGVkKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxleHRlbnNpb25fbG9hZGVkKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnRXh0ZW5zaW9uICIlcyIgaXMgcmVxdWlyZWQuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9FWFRFTlNJT04sICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBkYXRlIGlzIHZhbGlkIGFuZCBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gZm9ybWF0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZm9ybWF0ICAgICAgIHN1cHBvcnRzIGFsbCBvZiB0aGUgb3B0aW9ucyBkYXRlKCksIGV4Y2VwdCBmb3IgdGhlIGZvbGxvd2luZzoKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE4sIHcsIFcsIHQsIEwsIG8sIEIsIGEsIEEsIGcsIGgsIEksIE8sIFAsIFosIGMsIHIKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L21hbnVhbC9mdW5jdGlvbi5kYXRlLnBocCNyZWZzZWN0MS1mdW5jdGlvbi5kYXRlLXBhcmFtZXRlcnMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkYXRlKCR2YWx1ZSwgJGZvcm1hdCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OnN0cmluZygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICBzdGF0aWM6OnN0cmluZygkZm9ybWF0LCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgICRkYXRlVGltZSA9IFxEYXRlVGltZTo6Y3JlYXRlRnJvbUZvcm1hdCgkZm9ybWF0LCAkdmFsdWUpOwoKICAgICAgICBpZiAoZmFsc2UgPT09ICRkYXRlVGltZSB8fCAkdmFsdWUgIT09ICRkYXRlVGltZS0+Zm9ybWF0KCRmb3JtYXQpKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ0RhdGUgIiVzIiBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IG1hdGNoIGZvcm1hdCAiJXMiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJGZvcm1hdCkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9EQVRFLCAkcHJvcGVydHlQYXRoLCBhcnJheSgnZm9ybWF0JyA9PiAkZm9ybWF0KSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3QsIG9yIGEgY2xhc3MgdGhhdCBleGlzdHMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvYmplY3RPckNsYXNzKCR2YWx1ZSwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoIVxpc19vYmplY3QoJHZhbHVlKSkgewogICAgICAgICAgICBzdGF0aWM6OmNsYXNzRXhpc3RzKCR2YWx1ZSwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIGNsYXNzLCBhbmQgdGhhdCB0aGUgcHJvcGVydHkgZXhpc3RzLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkcHJvcGVydHkKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcHJvcGVydHlFeGlzdHMoJHZhbHVlLCAkcHJvcGVydHksICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpvYmplY3RPckNsYXNzKCR2YWx1ZSk7CgogICAgICAgIGlmICghXHByb3BlcnR5X2V4aXN0cygkdmFsdWUsICRwcm9wZXJ0eSkpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnQ2xhc3MgIiVzIiBkb2VzIG5vdCBoYXZlIHByb3BlcnR5ICIlcyIuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSksCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkcHJvcGVydHkpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfUFJPUEVSVFksICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIGNsYXNzLCBhbmQgdGhhdCB0aGUgcHJvcGVydGllcyBhbGwgZXhpc3QuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICR2YWx1ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICRwcm9wZXJ0aWVzCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByb3BlcnRpZXNFeGlzdCgkdmFsdWUsIGFycmF5ICRwcm9wZXJ0aWVzLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6b2JqZWN0T3JDbGFzcygkdmFsdWUpOwogICAgICAgIHN0YXRpYzo6YWxsU3RyaW5nKCRwcm9wZXJ0aWVzLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgICRpbnZhbGlkUHJvcGVydGllcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCAoJHByb3BlcnRpZXMgYXMgJHByb3BlcnR5KSB7CiAgICAgICAgICAgIGlmICghXHByb3BlcnR5X2V4aXN0cygkdmFsdWUsICRwcm9wZXJ0eSkpIHsKICAgICAgICAgICAgICAgICRpbnZhbGlkUHJvcGVydGllc1tdID0gJHByb3BlcnR5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGludmFsaWRQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ0NsYXNzICIlcyIgZG9lcyBub3QgaGF2ZSB0aGVzZSBwcm9wZXJ0aWVzOiAlcy4nLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJHZhbHVlKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KFxpbXBsb2RlKCcsICcsICRpbnZhbGlkUHJvcGVydGllcykpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfUFJPUEVSVFksICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgY29tcGFyaXNvbiBvZiB0d28gdmVyc2lvbnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2ZXJzaW9uMQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICRvcGVyYXRvcgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICR2ZXJzaW9uMgogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2ZXJzaW9uKCR2ZXJzaW9uMSwgJG9wZXJhdG9yLCAkdmVyc2lvbjIsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpub3RFbXB0eSgkb3BlcmF0b3IsICd2ZXJzaW9uQ29tcGFyZSBvcGVyYXRvciBpcyByZXF1aXJlZCBhbmQgY2Fubm90IGJlIGVtcHR5LicpOwoKICAgICAgICBpZiAoXHZlcnNpb25fY29tcGFyZSgkdmVyc2lvbjEsICR2ZXJzaW9uMiwgJG9wZXJhdG9yKSAhPT0gdHJ1ZSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWZXJzaW9uICIlcyIgaXMgbm90ICIlcyIgdmVyc2lvbiAiJXMiLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmVyc2lvbjEpLAogICAgICAgICAgICAgICAgc3RhdGljOjpzdHJpbmdpZnkoJG9wZXJhdG9yKSwKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2ZXJzaW9uMikKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2ZXJzaW9uMSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9WRVJTSU9OLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IG9uIFBIUCB2ZXJzaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkb3BlcmF0b3IKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAkdmVyc2lvbgogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEB0aHJvd3MgXEFzc2VydFxBc3NlcnRpb25GYWlsZWRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwaHBWZXJzaW9uKCRvcGVyYXRvciwgJHZlcnNpb24sICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjpkZWZpbmVkKCdQSFBfVkVSU0lPTicpOwoKICAgICAgICByZXR1cm4gc3RhdGljOjp2ZXJzaW9uKFBIUF9WRVJTSU9OLCAkb3BlcmF0b3IsICR2ZXJzaW9uLCAkbWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCBleHRlbnNpb24gaXMgbG9hZGVkIGFuZCBhIHNwZWNpZmljIHZlcnNpb24gaXMgaW5zdGFsbGVkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkZXh0ZW5zaW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJG9wZXJhdG9yCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZlcnNpb24KICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxBc3NlcnRcQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXh0ZW5zaW9uVmVyc2lvbigkZXh0ZW5zaW9uLCAkb3BlcmF0b3IsICR2ZXJzaW9uLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6ZXh0ZW5zaW9uTG9hZGVkKCRleHRlbnNpb24sICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgcmV0dXJuIHN0YXRpYzo6dmVyc2lvbihccGhwdmVyc2lvbigkZXh0ZW5zaW9uKSwgJG9wZXJhdG9yLCAkdmVyc2lvbiwgJG1lc3NhZ2UsICRwcm9wZXJ0eVBhdGgpOwogICAgfQoKICAgIC8qKgogICAgICogRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBjYWxsYWJsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDYWxsYWJsZSgkdmFsdWUsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFcaXNfY2FsbGFibGUoJHZhbHVlKSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAgICAgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdQcm92aWRlZCAiJXMiIGlzIG5vdCBhIGNhbGxhYmxlLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICB0aHJvdyBzdGF0aWM6OmNyZWF0ZUV4Y2VwdGlvbigkdmFsdWUsICRtZXNzYWdlLCBzdGF0aWM6OklOVkFMSURfQ0FMTEFCTEUsICRwcm9wZXJ0eVBhdGgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgdmFsaWQgYWNjb3JkaW5nIHRvIGEgY2FsbGJhY2suCiAgICAgKgogICAgICogSWYgdGhlIGNhbGxiYWNrIHJldHVybnMgYGZhbHNlYCB0aGUgYXNzZXJ0aW9uIHdpbGwgZmFpbC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgICAgICAgICAgICAgJGNhbGxiYWNrCiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F0aXNmeSgkdmFsdWUsICRjYWxsYmFjaywgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OmlzQ2FsbGFibGUoJGNhbGxiYWNrKTsKCiAgICAgICAgaWYgKFxjYWxsX3VzZXJfZnVuYygkY2FsbGJhY2ssICR2YWx1ZSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gXHNwcmludGYoCiAgICAgICAgICAgICAgICBzdGF0aWM6OmdlbmVyYXRlTWVzc2FnZSgkbWVzc2FnZSkgPzogJ1Byb3ZpZGVkICIlcyIgaXMgaW52YWxpZCBhY2NvcmRpbmcgdG8gY3VzdG9tIHJ1bGUuJywKICAgICAgICAgICAgICAgIHN0YXRpYzo6c3RyaW5naWZ5KCR2YWx1ZSkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9TQVRJU0ZZLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MKICAgICAqICh1c2luZyBpbnB1dF9maWx0ZXIvRklMVEVSX1ZBTElEQVRFX0lQKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgJGZsYWcKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L21hbnVhbC9maWx0ZXIuZmlsdGVycy5mbGFncy5waHAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpcCgkdmFsdWUsICRmbGFnID0gbnVsbCwgJG1lc3NhZ2UgPSBudWxsLCAkcHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICBzdGF0aWM6OnN0cmluZygkdmFsdWUsICRtZXNzYWdlLCAkcHJvcGVydHlQYXRoKTsKICAgICAgICBpZiAoIVxmaWx0ZXJfdmFyKCR2YWx1ZSwgRklMVEVSX1ZBTElEQVRFX0lQLCAkZmxhZykpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgICAgIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBJUCBhZGRyZXNzLicsCiAgICAgICAgICAgICAgICBzdGF0aWM6OnN0cmluZ2lmeSgkdmFsdWUpCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCR2YWx1ZSwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9JUCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjQgYWRkcmVzcwogICAgICogKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfSVApLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAkdmFsdWUKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAkZmxhZwogICAgICogQHBhcmFtIHN0cmluZ3xjYWxsYWJsZXxudWxsICRtZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgJHByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvbWFudWFsL2ZpbHRlci5maWx0ZXJzLmZsYWdzLnBocAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlwdjQoJHZhbHVlLCAkZmxhZyA9IG51bGwsICRtZXNzYWdlID0gbnVsbCwgJHByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgc3RhdGljOjppcCgkdmFsdWUsICRmbGFnIHwgRklMVEVSX0ZMQUdfSVBWNCwgc3RhdGljOjpnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UpID86ICdWYWx1ZSAiJXMiIHdhcyBleHBlY3RlZCB0byBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcy4nLCAkcHJvcGVydHlQYXRoKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY2IGFkZHJlc3MKICAgICAqICh1c2luZyBpbnB1dF9maWx0ZXIvRklMVEVSX1ZBTElEQVRFX0lQKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgJHZhbHVlCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgJGZsYWcKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICRwcm9wZXJ0eVBhdGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L21hbnVhbC9maWx0ZXIuZmlsdGVycy5mbGFncy5waHAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpcHY2KCR2YWx1ZSwgJGZsYWcgPSBudWxsLCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIHN0YXRpYzo6aXAoJHZhbHVlLCAkZmxhZyB8IEZJTFRFUl9GTEFHX0lQVjYsIHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiB3YXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBJUHY2IGFkZHJlc3MuJywgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogTWFrZSBhIHN0cmluZyB2ZXJzaW9uIG9mIGEgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gc3RyaW5naWZ5KCR2YWx1ZSkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gXGdldHR5cGUoJHZhbHVlKTsKCiAgICAgICAgaWYgKFxpc19ib29sKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICR2YWx1ZSA/ICc8VFJVRT4nIDogJzxGQUxTRT4nOwogICAgICAgIH0gZWxzZWlmIChcaXNfc2NhbGFyKCR2YWx1ZSkpIHsKICAgICAgICAgICAgJHZhbCA9IChzdHJpbmcpICR2YWx1ZTsKCiAgICAgICAgICAgIGlmIChcc3RybGVuKCR2YWwpID4gMTAwKSB7CiAgICAgICAgICAgICAgICAkdmFsID0gXHN1YnN0cigkdmFsLCAwLCA5NykgLiAnLi4uJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlc3VsdCA9ICR2YWw7CiAgICAgICAgfSBlbHNlaWYgKFxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAnPEFSUkFZPic7CiAgICAgICAgfSBlbHNlaWYgKFxpc19vYmplY3QoJHZhbHVlKSkgewogICAgICAgICAgICAkcmVzdWx0ID0gXGdldF9jbGFzcygkdmFsdWUpOwogICAgICAgIH0gZWxzZWlmIChcaXNfcmVzb3VyY2UoJHZhbHVlKSkgewogICAgICAgICAgICAkcmVzdWx0ID0gXGdldF9yZXNvdXJjZV90eXBlKCR2YWx1ZSk7CiAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZSA9PT0gbnVsbCkgewogICAgICAgICAgICAkcmVzdWx0ID0gJzxOVUxMPic7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgJGNvbnN0YW50CiAgICAgKiBAcGFyYW0gc3RyaW5nfGNhbGxhYmxlfG51bGwgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAkcHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKgogICAgICogQHRocm93cyBcQXNzZXJ0XEFzc2VydGlvbkZhaWxlZEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlZmluZWQoJGNvbnN0YW50LCAkbWVzc2FnZSA9IG51bGwsICRwcm9wZXJ0eVBhdGggPSBudWxsKQogICAgewogICAgICAgIGlmICghXGRlZmluZWQoJGNvbnN0YW50KSkgewogICAgICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKHN0YXRpYzo6Z2VuZXJhdGVNZXNzYWdlKCRtZXNzYWdlKSA/OiAnVmFsdWUgIiVzIiBleHBlY3RlZCB0byBiZSBhIGRlZmluZWQgY29uc3RhbnQuJywgJGNvbnN0YW50KTsKCiAgICAgICAgICAgIHRocm93IHN0YXRpYzo6Y3JlYXRlRXhjZXB0aW9uKCRjb25zdGFudCwgJG1lc3NhZ2UsIHN0YXRpYzo6SU5WQUxJRF9DT05TVEFOVCwgJHByb3BlcnR5UGF0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlIHRoZSBtZXNzYWdlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8Y2FsbGFibGV8bnVsbCAkbWVzc2FnZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZU1lc3NhZ2UoJG1lc3NhZ2UgPSBudWxsKQogICAgewogICAgICAgIGlmIChcaXNfY2FsbGFibGUoJG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICR0cmFjZXMgPSBcZGVidWdfYmFja3RyYWNlKDApOwoKICAgICAgICAgICAgJHBhcmFtZXRlcnMgPSBhcnJheSgpOwoKICAgICAgICAgICAgJHJlZmxlY3Rpb24gPSBuZXcgXFJlZmxlY3Rpb25DbGFzcygkdHJhY2VzWzFdWydjbGFzcyddKTsKICAgICAgICAgICAgJG1ldGhvZCA9ICRyZWZsZWN0aW9uLT5nZXRNZXRob2QoJHRyYWNlc1sxXVsnZnVuY3Rpb24nXSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRtZXRob2QtPmdldFBhcmFtZXRlcnMoKSBhcyAkaW5kZXggPT4gJHBhcmFtZXRlcikgewogICAgICAgICAgICAgICAgaWYgKCRwYXJhbWV0ZXItPmdldE5hbWUoKSAhPT0gJ21lc3NhZ2UnKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlcnNbJHBhcmFtZXRlci0+Z2V0TmFtZSgpXSA9IFxhcnJheV9rZXlfZXhpc3RzKCRpbmRleCwgJHRyYWNlc1sxXVsnYXJncyddKQogICAgICAgICAgICAgICAgICAgICAgICA/ICR0cmFjZXNbMV1bJ2FyZ3MnXVskaW5kZXhdCiAgICAgICAgICAgICAgICAgICAgICAgIDogJHBhcmFtZXRlci0+Z2V0RGVmYXVsdFZhbHVlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXJhbWV0ZXJzWyc6OmFzc2VydGlvbiddID0gXHNwcmludGYoJyVzJXMlcycsICR0cmFjZXNbMV1bJ2NsYXNzJ10sICR0cmFjZXNbMV1bJ3R5cGUnXSwgJHRyYWNlc1sxXVsnZnVuY3Rpb24nXSk7CgogICAgICAgICAgICAkbWVzc2FnZSA9IFxjYWxsX3VzZXJfZnVuY19hcnJheSgkbWVzc2FnZSwgYXJyYXkoJHBhcmFtZXRlcnMpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcaXNfbnVsbCgkbWVzc2FnZSkgPyBudWxsIDogKHN0cmluZykgJG1lc3NhZ2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/beberlei/assert/lib/Assert/AssertionChain.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKdXNlIExvZ2ljRXhjZXB0aW9uOwp1c2UgUmVmbGVjdGlvbkNsYXNzOwoKLyoqCiAqIENoYWluaW5nIGJ1aWxkZXIgZm9yIGFzc2VydGlvbnMuCiAqCiAqIEBhdXRob3IgQmVuamFtaW4gRWJlcmxlaSA8a29udGFrdEBiZWJlcmxlaS5kZT4KICoKICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBhbG51bShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFscGhhbnVtZXJpYy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBiZXR3ZWVuKG1peGVkICRsb3dlckxpbWl0LCBtaXhlZCAkdXBwZXJMaW1pdCwgc3RyaW5nICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBhIGxvd2VyIGxpbWl0LCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGFuIHVwcGVyIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGJldHdlZW5FeGNsdXNpdmUobWl4ZWQgJGxvd2VyTGltaXQsIG1peGVkICR1cHBlckxpbWl0LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGEgbG93ZXIgbGltaXQsIGFuZCBsZXNzIHRoYW4gYW4gdXBwZXIgbGltaXQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gYmV0d2Vlbkxlbmd0aChpbnQgJG1pbkxlbmd0aCwgaW50ICRtYXhMZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGxlbmd0aCBpcyBiZXR3ZWVuIG1pbixtYXggbGVuZ3Rocy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBib29sZWFuKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgcGhwIGJvb2xlYW4uCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gY2hvaWNlKGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gY2hvaWNlc05vdEVtcHR5KGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlcyBhcnJheSBoYXMgZXZlcnkgY2hvaWNlIGFzIGtleSBhbmQgdGhhdCB0aGlzIGNob2ljZSBoYXMgY29udGVudC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBjbGFzc0V4aXN0cyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBleGlzdHMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gY29udGFpbnMoc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGNvbnRhaW5zIGEgc2VxdWVuY2Ugb2YgY2hhcnMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gY291bnQoYXJyYXl8XENvdW50YWJsZSAkY291bnQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNvdW50IG9mIGNvdW50YWJsZSBpcyBlcXVhbCB0byBjb3VudC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBkYXRlKHN0cmluZyAkZm9ybWF0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGRhdGUgaXMgdmFsaWQgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBmb3JtYXQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZGVmaW5lZChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgY29uc3RhbnQgaXMgZGVmaW5lZC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBkaWdpdChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIFZhbGlkYXRlcyBpZiBhbiBpbnRlZ2VyIG9yIGludGVnZXJpc2ggaXMgYSBkaWdpdC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBkaXJlY3Rvcnkoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGRpcmVjdG9yeSBleGlzdHMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZTE2NChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBnaXZlbiBzdHJpbmcgaXMgYSB2YWxpZCBFMTY0IFBob25lIE51bWJlci4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBlbWFpbChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGVtYWlsIGFkcmVzcyAodXNpbmcgaW5wdXRfZmlsdGVyL0ZJTFRFUl9WQUxJREFURV9FTUFJTCkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZW5kc1dpdGgoc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGVuZHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGVxKG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgZXF1YWwgKHVzaW5nID09ICkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZXh0ZW5zaW9uTG9hZGVkKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgZXh0ZW5zaW9uIGlzIGxvYWRlZC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBleHRlbnNpb25WZXJzaW9uKHN0cmluZyAkb3BlcmF0b3IsIG1peGVkICR2ZXJzaW9uLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQgYW5kIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBpbnN0YWxsZWQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gZmFsc2Uoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYm9vbGVhbiBGYWxzZS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBmaWxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSBmaWxlIGV4aXN0cy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBmbG9hdChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGZsb2F0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGdyZWF0ZXJPckVxdWFsVGhhbihtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciBvciBlcXVhbCB0aGFuIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGdyZWF0ZXJUaGFuKG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaW1wbGVtZW50c0ludGVyZmFjZShzdHJpbmcgJGludGVyZmFjZU5hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNsYXNzIGltcGxlbWVudHMgdGhlIGludGVyZmFjZS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBpbkFycmF5KGFycmF5ICRjaG9pY2VzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIGFycmF5IG9mIGNob2ljZXMuIFRoaXMgaXMgYW4gYWxpYXMgb2YgQXNzZXJ0aW9uOjpjaG9pY2UoKS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBpbnRlZ2VyKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgaW50ZWdlci4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBpbnRlZ2VyaXNoKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgaW50ZWdlcidpc2guCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaW50ZXJmYWNlRXhpc3RzKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGludGVyZmFjZSBleGlzdHMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXAoaW50ICRmbGFnID0gbnVsbCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY0IG9yIElQdjYgYWRkcmVzcy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBpcHY0KGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBhZGRyZXNzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlwdjYoaW50ICRmbGFnID0gbnVsbCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBJUHY2IGFkZHJlc3MuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXNBcnJheShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzQXJyYXlBY2Nlc3NpYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYW4gYXJyYXktYWNjZXNzaWJsZSBvYmplY3QuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXNDYWxsYWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgdGhhdCB0aGUgcHJvdmlkZWQgdmFsdWUgaXMgY2FsbGFibGUuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXNJbnN0YW5jZU9mKHN0cmluZyAkY2xhc3NOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluc3RhbmNlIG9mIGdpdmVuIGNsYXNzLW5hbWUuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXNKc29uU3RyaW5nKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIGpzb24gc3RyaW5nLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGlzT2JqZWN0KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBhbiBvYmplY3QuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXNSZXNvdXJjZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcmVzb3VyY2UuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gaXNUcmF2ZXJzYWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5IG9yIGEgdHJhdmVyc2FibGUgb2JqZWN0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGtleUV4aXN0cyhzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheS4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBrZXlJc3NldChzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGV4aXN0cyBpbiBhbiBhcnJheS9hcnJheS1hY2Nlc3NpYmxlIG9iamVjdCB1c2luZyBpc3NldCgpLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGtleU5vdEV4aXN0cyhzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGRvZXMgbm90IGV4aXN0IGluIGFuIGFycmF5LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGxlbmd0aChpbnQgJGxlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgaGFzIGEgZ2l2ZW4gbGVuZ3RoLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGxlc3NPckVxdWFsVGhhbihtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgbGVzcyBvciB0aGFuIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIGxlc3NUaGFuKG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIHRoYW4gZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbWF4KG1peGVkICRtYXhWYWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIG51bWJlciBpcyBzbWFsbGVyIGFzIGEgZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbWF4TGVuZ3RoKGludCAkbWF4TGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyB2YWx1ZSBpcyBub3QgbG9uZ2VyIHRoYW4gJG1heExlbmd0aCBjaGFycy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBtZXRob2RFeGlzdHMobWl4ZWQgJG9iamVjdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIG5hbWVkIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3QuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbWluKG1peGVkICRtaW5WYWx1ZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGF0IGxlYXN0IGFzIGJpZyBhcyBhIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG1pbkxlbmd0aChpbnQgJG1pbkxlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBhIHN0cmluZyBpcyBhdCBsZWFzdCAkbWluTGVuZ3RoIGNoYXJzIGxvbmcuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm9Db250ZW50KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgZW1wdHkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm90Qmxhbmsoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgYmxhbmsuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm90RW1wdHkoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgZW1wdHkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm90RW1wdHlLZXkoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgYW5kIGl0cyB2YWx1ZSBpcyBub3QgZW1wdHkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm90RXEobWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgZXF1YWwgKHVzaW5nID09ICkuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm90SW5BcnJheShhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBub3QgaW4gYXJyYXkgb2YgY2hvaWNlcy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBub3RJc0luc3RhbmNlT2Yoc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluc3RhbmNlIG9mIGdpdmVuIGNsYXNzLW5hbWUuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gbm90TnVsbChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBudWxsLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG5vdFNhbWUobWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSBub3QgdGhlIHNhbWUgKHVzaW5nID09PSApLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG51bGwoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG51bWVyaWMoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudW1lcmljLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIG9iamVjdE9yQ2xhc3Moc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0LCBvciBhIGNsYXNzIHRoYXQgZXhpc3RzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHBocFZlcnNpb24obWl4ZWQgJHZlcnNpb24sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IG9uIFBIUCB2ZXJzaW9uLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHByb3BlcnRpZXNFeGlzdChhcnJheSAkcHJvcGVydGllcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIGNsYXNzLCBhbmQgdGhhdCB0aGUgcHJvcGVydGllcyBhbGwgZXhpc3QuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gcHJvcGVydHlFeGlzdHMoc3RyaW5nICRwcm9wZXJ0eSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgYW4gb2JqZWN0IG9yIGNsYXNzLCBhbmQgdGhhdCB0aGUgcHJvcGVydHkgZXhpc3RzLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHJhbmdlKG1peGVkICRtaW5WYWx1ZSwgbWl4ZWQgJG1heFZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIHJhbmdlIG9mIG51bWJlcnMuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gcmVhZGFibGUoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgdmFsdWUgaXMgc29tZXRoaW5nIHJlYWRhYmxlLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHJlZ2V4KHN0cmluZyAkcGF0dGVybiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBtYXRjaGVzIGEgcmVnZXguCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gc2FtZShtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lICh1c2luZyA9PT0pLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHNhdGlzZnkoY2FsbGFibGUgJGNhbGxiYWNrLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyB2YWxpZCBhY2NvcmRpbmcgdG8gYSBjYWxsYmFjay4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBzY2FsYXIoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIFBIUCBzY2FsYXIuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gc3RhcnRzV2l0aChzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgc3RhcnRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBzdHJpbmcoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHN0cmluZy4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiBzdWJjbGFzc09mKHN0cmluZyAkY2xhc3NOYW1lLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIHN1YmNsYXNzIG9mIGdpdmVuIGNsYXNzLW5hbWUuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gdHJ1ZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIFRydWUuCiAqIEBtZXRob2QgQXNzZXJ0aW9uQ2hhaW4gdXJsKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gVVJMLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHV1aWQoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgZ2l2ZW4gc3RyaW5nIGlzIGEgdmFsaWQgVVVJRC4KICogQG1ldGhvZCBBc3NlcnRpb25DaGFpbiB2ZXJzaW9uKHN0cmluZyAkb3BlcmF0b3IsIHN0cmluZyAkdmVyc2lvbjIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IGNvbXBhcmlzb24gb2YgdHdvIHZlcnNpb25zLgogKiBAbWV0aG9kIEFzc2VydGlvbkNoYWluIHdyaXRlYWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgd3JpdGVhYmxlLgogKi8KY2xhc3MgQXNzZXJ0aW9uQ2hhaW4KewogICAgcHJpdmF0ZSAkdmFsdWU7CiAgICBwcml2YXRlICRkZWZhdWx0TWVzc2FnZTsKICAgIHByaXZhdGUgJGRlZmF1bHRQcm9wZXJ0eVBhdGg7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gZWFjaCBhc3NlcnRpb24gYXMgYWx3YXlzIHZhbGlkLgogICAgICoKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRhbHdheXNWYWxpZCA9IGZhbHNlOwoKICAgIC8qKgogICAgICogUGVyZm9ybSBhc3NlcnRpb24gb24gZXZlcnkgZWxlbWVudCBvZiBhcnJheSBvciB0cmF2ZXJzYWJsZS4KICAgICAqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSAkYWxsID0gZmFsc2U7CgogICAgLyoqIEB2YXIgc3RyaW5nfEFzc2VydGlvbiBDbGFzcyB0byB1c2UgZm9yIGFzc2VydGlvbiBjYWxscyAqLwogICAgcHJpdmF0ZSAkYXNzZXJ0aW9uQ2xhc3NOYW1lID0gJ0Fzc2VydFxBc3NlcnRpb24nOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRNZXNzYWdlID0gJGRlZmF1bHRNZXNzYWdlOwogICAgICAgICR0aGlzLT5kZWZhdWx0UHJvcGVydHlQYXRoID0gJGRlZmF1bHRQcm9wZXJ0eVBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxsIGFzc2VydGlvbiBvbiB0aGUgY3VycmVudCB2YWx1ZSBpbiB0aGUgY2hhaW4uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kTmFtZQogICAgICogQHBhcmFtIGFycmF5ICAkYXJncwogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxBc3NlcnRpb25DaGFpbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCRtZXRob2ROYW1lLCAkYXJncykKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmFsd2F5c1ZhbGlkID09PSB0cnVlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICghXG1ldGhvZF9leGlzdHMoJHRoaXMtPmFzc2VydGlvbkNsYXNzTmFtZSwgJG1ldGhvZE5hbWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiQXNzZXJ0aW9uICciIC4gJG1ldGhvZE5hbWUgLiAiJyBkb2VzIG5vdCBleGlzdC4iKTsKICAgICAgICB9CgogICAgICAgICRyZWZsQ2xhc3MgPSBuZXcgUmVmbGVjdGlvbkNsYXNzKCR0aGlzLT5hc3NlcnRpb25DbGFzc05hbWUpOwogICAgICAgICRtZXRob2QgPSAkcmVmbENsYXNzLT5nZXRNZXRob2QoJG1ldGhvZE5hbWUpOwoKICAgICAgICBcYXJyYXlfdW5zaGlmdCgkYXJncywgJHRoaXMtPnZhbHVlKTsKICAgICAgICAkcGFyYW1zID0gJG1ldGhvZC0+Z2V0UGFyYW1ldGVycygpOwoKICAgICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRpZHggPT4gJHBhcmFtKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkYXJnc1skaWR4XSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHBhcmFtLT5nZXROYW1lKCkgPT0gJ21lc3NhZ2UnKSB7CiAgICAgICAgICAgICAgICAkYXJnc1skaWR4XSA9ICR0aGlzLT5kZWZhdWx0TWVzc2FnZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRwYXJhbS0+Z2V0TmFtZSgpID09ICdwcm9wZXJ0eVBhdGgnKSB7CiAgICAgICAgICAgICAgICAkYXJnc1skaWR4XSA9ICR0aGlzLT5kZWZhdWx0UHJvcGVydHlQYXRoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmFsbCkgewogICAgICAgICAgICAkbWV0aG9kTmFtZSA9ICdhbGwnIC4gJG1ldGhvZE5hbWU7CiAgICAgICAgfQoKICAgICAgICBcY2FsbF91c2VyX2Z1bmNfYXJyYXkoYXJyYXkoJHRoaXMtPmFzc2VydGlvbkNsYXNzTmFtZSwgJG1ldGhvZE5hbWUpLCAkYXJncyk7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIFN3aXRjaCBjaGFpbiBpbnRvIHZhbGlkYXRpb24gbW9kZSBmb3IgYW4gYXJyYXkgb2YgdmFsdWVzLgogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxBc3NlcnRpb25DaGFpbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsKCkKICAgIHsKICAgICAgICAkdGhpcy0+YWxsID0gdHJ1ZTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogU3dpdGNoIGNoYWluIGludG8gbW9kZSBhbGxvd2luZyBudWxscywgaWdub3JpbmcgZnVydGhlciBhc3NlcnRpb25zLgogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxBc3NlcnRpb25DaGFpbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbnVsbE9yKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5hbHdheXNWYWxpZCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc05hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuICR0aGlzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBc3NlcnRpb25DbGFzc05hbWUoJGNsYXNzTmFtZSkKICAgIHsKICAgICAgICBpZiAoIVxpc19zdHJpbmcoJGNsYXNzTmFtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKCdFeGNlcHRpb24gY2xhc3MgbmFtZSBtdXN0IGJlIHBhc3NlZCBhcyBhIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRjbGFzc05hbWUgIT09ICdBc3NlcnRcQXNzZXJ0aW9uJyAmJiAhXGlzX3N1YmNsYXNzX29mKCRjbGFzc05hbWUsICdBc3NlcnRcQXNzZXJ0aW9uJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKCRjbGFzc05hbWUgLiAnIGlzIG5vdCAoYSBzdWJjbGFzcyBvZikgQXNzZXJ0XEFzc2VydGlvbicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmFzc2VydGlvbkNsYXNzTmFtZSA9ICRjbGFzc05hbWU7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KfQo=]]></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[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKaWYgKCFcZnVuY3Rpb25fZXhpc3RzKF9fTkFNRVNQQUNFX18gLiAnXHRoYXQnKSkgewogICAgLyoqCiAgICAgKiBTdGFydCB2YWxpZGF0aW9uIG9uIGEgdmFsdWUsIHJldHVybnMge0BsaW5rIEFzc2VydGlvbkNoYWlufS4KICAgICAqCiAgICAgKiBUaGUgaW52b2NhdGlvbiBvZiB0aGlzIG1ldGhvZCBzdGFydHMgYW4gYXNzZXJ0aW9uIGNoYWluCiAgICAgKiB0aGF0IGlzIGhhcHBlbmluZyBvbiB0aGUgcGFzc2VkIHZhbHVlLgogICAgICoKICAgICAqIEBleGFtcGxlCiAgICAgKgogICAgICogIFxBc3NlcnRcdGhhdCgkdmFsdWUpLT5ub3RFbXB0eSgpLT5pbnRlZ2VyKCk7CiAgICAgKiAgXEFzc2VydFx0aGF0KCR2YWx1ZSktPm51bGxPcigpLT5zdHJpbmcoKS0+c3RhcnRzV2l0aCgiRm9vIik7CiAgICAgKgogICAgICogVGhlIGFzc2VydGlvbiBjaGFpbiBjYW4gYmUgc3RhdGVmdWwsIHRoYXQgbWVhbnMgYmUgY2FyZWZ1bCB3aGVuIHlvdSByZXVzZQogICAgICogaXQuIFlvdSBzaG91bGQgbmV2ZXIgcGFzcyBhcm91bmQgdGhlIGNoYWluLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgJHZhbHVlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0TWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZyAkZGVmYXVsdFByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxBc3NlcnRpb25DaGFpbgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIEluIGZhdm91ciBvZiBBc3NlcnQ6OnRoYXQoJHZhbHVlLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsLCAkZGVmYXVsdFByb3BlcnR5UGF0aCA9IG51bGwpCiAgICAgKi8KICAgIGZ1bmN0aW9uIHRoYXQoJHZhbHVlLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsLCAkZGVmYXVsdFByb3BlcnR5UGF0aCA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIEFzc2VydDo6dGhhdCgkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSwgJGRlZmF1bHRQcm9wZXJ0eVBhdGgpOwogICAgfQp9CgppZiAoIVxmdW5jdGlvbl9leGlzdHMoX19OQU1FU1BBQ0VfXyAuICdcdGhhdEFsbCcpKSB7CiAgICAvKioKICAgICAqIFN0YXJ0IHZhbGlkYXRpb24gb24gYSBzZXQgb2YgdmFsdWVzLCByZXR1cm5zIHtAbGluayBBc3NlcnRpb25DaGFpbn0uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAkdmFsdWVzCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0TWVzc2FnZQogICAgICogQHBhcmFtIHN0cmluZyAkZGVmYXVsdFByb3BlcnR5UGF0aAogICAgICoKICAgICAqIEByZXR1cm4gXEFzc2VydFxBc3NlcnRpb25DaGFpbgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIEluIGZhdm91ciBvZiBBc3NlcnQ6OnRoYXRBbGwoJHZhbHVlcywgJGRlZmF1bHRNZXNzYWdlID0gbnVsbCwgJGRlZmF1bHRQcm9wZXJ0eVBhdGggPSBudWxsKQogICAgICovCiAgICBmdW5jdGlvbiB0aGF0QWxsKCR2YWx1ZXMsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gQXNzZXJ0Ojp0aGF0KCR2YWx1ZXMsICRkZWZhdWx0TWVzc2FnZSwgJGRlZmF1bHRQcm9wZXJ0eVBhdGgpLT5hbGwoKTsKICAgIH0KfQoKaWYgKCFcZnVuY3Rpb25fZXhpc3RzKF9fTkFNRVNQQUNFX18gLiAnXHRoYXROdWxsT3InKSkgewogICAgLyoqCiAgICAgKiBTdGFydCB2YWxpZGF0aW9uIGFuZCBhbGxvdyBOVUxMLCByZXR1cm5zIHtAbGluayBBc3NlcnRpb25DaGFpbn0uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICAkdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRlZmF1bHRNZXNzYWdlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZWZhdWx0UHJvcGVydHlQYXRoCiAgICAgKgogICAgICogQHJldHVybiBcQXNzZXJ0XEFzc2VydGlvbkNoYWluCiAgICAgKgogICAgICogQGRlcHJlY2F0ZWQgSW4gZmF2b3VyIG9mIEFzc2VydDo6dGhhdE51bGxPcigkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKICAgICAqLwogICAgZnVuY3Rpb24gdGhhdE51bGxPcigkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSA9IG51bGwsICRkZWZhdWx0UHJvcGVydHlQYXRoID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gQXNzZXJ0Ojp0aGF0KCR2YWx1ZSwgJGRlZmF1bHRNZXNzYWdlLCAkZGVmYXVsdFByb3BlcnR5UGF0aCktPm51bGxPcigpOwogICAgfQp9CgppZiAoIVxmdW5jdGlvbl9leGlzdHMoX19OQU1FU1BBQ0VfXyAuICdcbGF6eScpKSB7CiAgICAvKioKICAgICAqIENyZWF0ZSBhIGxhenkgYXNzZXJ0aW9uIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxBc3NlcnRcTGF6eUFzc2VydGlvbgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIEluIGZhdm91ciBvZiBBc3NlcnQ6OmxhenkoKQogICAgICovCiAgICBmdW5jdGlvbiBsYXp5KCkKICAgIHsKICAgICAgICByZXR1cm4gQXNzZXJ0OjpsYXp5KCk7CiAgICB9Cn0K]]></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[PD9waHAKCi8qKgogKiBBc3NlcnQKICoKICogTElDRU5TRQogKgogKiBUaGlzIHNvdXJjZSBmaWxlIGlzIHN1YmplY3QgdG8gdGhlIE1JVCBsaWNlbnNlIHRoYXQgaXMgYnVuZGxlZAogKiB3aXRoIHRoaXMgcGFja2FnZSBpbiB0aGUgZmlsZSBMSUNFTlNFLnR4dC4KICogSWYgeW91IGRpZCBub3QgcmVjZWl2ZSBhIGNvcHkgb2YgdGhlIGxpY2Vuc2UgYW5kIGFyZSB1bmFibGUgdG8KICogb2J0YWluIGl0IHRocm91Z2ggdGhlIHdvcmxkLXdpZGUtd2ViLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbAogKiB0byBrb250YWt0QGJlYmVybGVpLmRlIHNvIEkgY2FuIHNlbmQgeW91IGEgY29weSBpbW1lZGlhdGVseS4KICovCgpuYW1lc3BhY2UgQXNzZXJ0OwoKdXNlIExvZ2ljRXhjZXB0aW9uOwoKLyoqCiAqIENoYWluaW5nIGJ1aWxkZXIgZm9yIGxhenkgYXNzZXJ0aW9ucy4KICoKICogQGF1dGhvciBCZW5qYW1pbiBFYmVybGVpIDxrb250YWt0QGJlYmVybGVpLmRlPgogKgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gYWxudW0oc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbHBoYW51bWVyaWMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBiZXR3ZWVuKG1peGVkICRsb3dlckxpbWl0LCBtaXhlZCAkdXBwZXJMaW1pdCwgc3RyaW5nICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIHZhbHVlIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBhIGxvd2VyIGxpbWl0LCBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGFuIHVwcGVyIGxpbWl0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gYmV0d2VlbkV4Y2x1c2l2ZShtaXhlZCAkbG93ZXJMaW1pdCwgbWl4ZWQgJHVwcGVyTGltaXQsIHN0cmluZyAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gYSBsb3dlciBsaW1pdCwgYW5kIGxlc3MgdGhhbiBhbiB1cHBlciBsaW1pdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGJldHdlZW5MZW5ndGgoaW50ICRtaW5MZW5ndGgsIGludCAkbWF4TGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBsZW5ndGggaXMgYmV0d2VlbiBtaW4sbWF4IGxlbmd0aHMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBib29sZWFuKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgcGhwIGJvb2xlYW4uCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBjaG9pY2UoYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW4gYXJyYXkgb2YgY2hvaWNlcy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGNob2ljZXNOb3RFbXB0eShhcnJheSAkY2hvaWNlcywgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZXMgYXJyYXkgaGFzIGV2ZXJ5IGNob2ljZSBhcyBrZXkgYW5kIHRoYXQgdGhpcyBjaG9pY2UgaGFzIGNvbnRlbnQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBjbGFzc0V4aXN0cyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjbGFzcyBleGlzdHMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBjb250YWlucyhzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgY29udGFpbnMgYSBzZXF1ZW5jZSBvZiBjaGFycy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGNvdW50KGFycmF5fFxDb3VudGFibGUgJGNvdW50LCBzdHJpbmcgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSBjb3VudCBvZiBjb3VudGFibGUgaXMgZXF1YWwgdG8gY291bnQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBkYXRlKHN0cmluZyAkZm9ybWF0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGRhdGUgaXMgdmFsaWQgYW5kIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBmb3JtYXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBkZWZpbmVkKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgYSBjb25zdGFudCBpcyBkZWZpbmVkLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZGlnaXQoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBWYWxpZGF0ZXMgaWYgYW4gaW50ZWdlciBvciBpbnRlZ2VyaXNoIGlzIGEgZGlnaXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBkaXJlY3Rvcnkoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBhIGRpcmVjdG9yeSBleGlzdHMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBlMTY0KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIEUxNjQgUGhvbmUgTnVtYmVyLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZW1haWwoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBlbWFpbCBhZHJlc3MgKHVzaW5nIGlucHV0X2ZpbHRlci9GSUxURVJfVkFMSURBVEVfRU1BSUwpLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZW5kc1dpdGgoc3RyaW5nICRuZWVkbGUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgc3RyaW5nIGVuZHMgd2l0aCBhIHNlcXVlbmNlIG9mIGNoYXJzLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZXEobWl4ZWQgJHZhbHVlMiwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0d28gdmFsdWVzIGFyZSBlcXVhbCAodXNpbmcgPT0gKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGV4dGVuc2lvbkxvYWRlZChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBleHRlbnNpb25WZXJzaW9uKHN0cmluZyAkb3BlcmF0b3IsIG1peGVkICR2ZXJzaW9uLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGV4dGVuc2lvbiBpcyBsb2FkZWQgYW5kIGEgc3BlY2lmaWMgdmVyc2lvbiBpcyBpbnN0YWxsZWQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBmYWxzZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIEZhbHNlLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZmlsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgZmlsZSBleGlzdHMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBmbG9hdChzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGZsb2F0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gZ3JlYXRlck9yRXF1YWxUaGFuKG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRoYW4gZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBncmVhdGVyVGhhbihtaXhlZCAkbGltaXQsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyBpZiB0aGUgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIGdpdmVuIGxpbWl0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaW1wbGVtZW50c0ludGVyZmFjZShzdHJpbmcgJGludGVyZmFjZU5hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGNsYXNzIGltcGxlbWVudHMgdGhlIGludGVyZmFjZS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGluQXJyYXkoYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgaW4gYXJyYXkgb2YgY2hvaWNlcy4gVGhpcyBpcyBhbiBhbGlhcyBvZiBBc3NlcnRpb246OmNob2ljZSgpLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaW50ZWdlcihzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgcGhwIGludGVnZXIuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpbnRlZ2VyaXNoKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBwaHAgaW50ZWdlcidpc2guCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpbnRlcmZhY2VFeGlzdHMoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB0aGUgaW50ZXJmYWNlIGV4aXN0cy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlwKGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBvciBJUHY2IGFkZHJlc3MuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpcHY0KGludCAkZmxhZyA9IG51bGwsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gSVB2NCBhZGRyZXNzLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXB2NihpbnQgJGZsYWcgPSBudWxsLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIElQdjYgYWRkcmVzcy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzQXJyYXkoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBhcnJheS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzQXJyYXlBY2Nlc3NpYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYW4gYXJyYXkgb3IgYW4gYXJyYXktYWNjZXNzaWJsZSBvYmplY3QuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBpc0NhbGxhYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgRGV0ZXJtaW5lcyB0aGF0IHRoZSBwcm92aWRlZCB2YWx1ZSBpcyBjYWxsYWJsZS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzSW5zdGFuY2VPZihzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBpbnN0YW5jZSBvZiBnaXZlbiBjbGFzcy1uYW1lLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXNKc29uU3RyaW5nKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIGpzb24gc3RyaW5nLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXNPYmplY3Qoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIGFuIG9iamVjdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGlzUmVzb3VyY2Uoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhIHJlc291cmNlLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gaXNUcmF2ZXJzYWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGFuIGFycmF5IG9yIGEgdHJhdmVyc2FibGUgb2JqZWN0LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24ga2V5RXhpc3RzKHN0cmluZ3xpbnQgJGtleSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCBrZXkgZXhpc3RzIGluIGFuIGFycmF5LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24ga2V5SXNzZXQoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgdXNpbmcgaXNzZXQoKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGtleU5vdEV4aXN0cyhzdHJpbmd8aW50ICRrZXksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQga2V5IGRvZXMgbm90IGV4aXN0IGluIGFuIGFycmF5LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbGVuZ3RoKGludCAkbGVuZ3RoLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwsIHN0cmluZyAkZW5jb2RpbmcgPSAndXRmOCcpIEFzc2VydCB0aGF0IHN0cmluZyBoYXMgYSBnaXZlbiBsZW5ndGguCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBsZXNzT3JFcXVhbFRoYW4obWl4ZWQgJGxpbWl0LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIERldGVybWluZXMgaWYgdGhlIHZhbHVlIGlzIGxlc3Mgb3IgdGhhbiBnaXZlbiBsaW1pdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIGxlc3NUaGFuKG1peGVkICRsaW1pdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIGlmIHRoZSB2YWx1ZSBpcyBsZXNzIHRoYW4gZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtYXgobWl4ZWQgJG1heFZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgbnVtYmVyIGlzIHNtYWxsZXIgYXMgYSBnaXZlbiBsaW1pdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG1heExlbmd0aChpbnQgJG1heExlbmd0aCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgdmFsdWUgaXMgbm90IGxvbmdlciB0aGFuICRtYXhMZW5ndGggY2hhcnMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtZXRob2RFeGlzdHMobWl4ZWQgJG9iamVjdCwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBEZXRlcm1pbmVzIHRoYXQgdGhlIG5hbWVkIG1ldGhvZCBpcyBkZWZpbmVkIGluIHRoZSBwcm92aWRlZCBvYmplY3QuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtaW4obWl4ZWQgJG1pblZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGEgdmFsdWUgaXMgYXQgbGVhc3QgYXMgYmlnIGFzIGEgZ2l2ZW4gbGltaXQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBtaW5MZW5ndGgoaW50ICRtaW5MZW5ndGgsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCwgc3RyaW5nICRlbmNvZGluZyA9ICd1dGY4JykgQXNzZXJ0IHRoYXQgYSBzdHJpbmcgaXMgYXQgbGVhc3QgJG1pbkxlbmd0aCBjaGFycyBsb25nLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbm9Db250ZW50KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgZW1wdHkuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RCbGFuayhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG5vdCBibGFuay4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG5vdEVtcHR5KHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGVtcHR5LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbm90RW1wdHlLZXkoc3RyaW5nfGludCAka2V5LCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IGtleSBleGlzdHMgaW4gYW4gYXJyYXkvYXJyYXktYWNjZXNzaWJsZSBvYmplY3QgYW5kIGl0cyB2YWx1ZSBpcyBub3QgZW1wdHkuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RFcShtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIG5vdCBlcXVhbCAodXNpbmcgPT0gKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG5vdEluQXJyYXkoYXJyYXkgJGNob2ljZXMsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluIGFycmF5IG9mIGNob2ljZXMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RJc0luc3RhbmNlT2Yoc3RyaW5nICRjbGFzc05hbWUsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IGluc3RhbmNlIG9mIGdpdmVuIGNsYXNzLW5hbWUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3ROdWxsKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgbm90IG51bGwuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBub3RTYW1lKG1peGVkICR2YWx1ZTIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdHdvIHZhbHVlcyBhcmUgbm90IHRoZSBzYW1lICh1c2luZyA9PT0gKS4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG51bGwoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBudWxsLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gbnVtZXJpYyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIG51bWVyaWMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBvYmplY3RPckNsYXNzKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCwgb3IgYSBjbGFzcyB0aGF0IGV4aXN0cy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHBocFZlcnNpb24obWl4ZWQgJHZlcnNpb24sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IG9uIFBIUCB2ZXJzaW9uLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gcHJvcGVydGllc0V4aXN0KGFycmF5ICRwcm9wZXJ0aWVzLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBhbiBvYmplY3Qgb3IgY2xhc3MsIGFuZCB0aGF0IHRoZSBwcm9wZXJ0aWVzIGFsbCBleGlzdC4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHByb3BlcnR5RXhpc3RzKHN0cmluZyAkcHJvcGVydHksIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIGFuIG9iamVjdCBvciBjbGFzcywgYW5kIHRoYXQgdGhlIHByb3BlcnR5IGV4aXN0cy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHJhbmdlKG1peGVkICRtaW5WYWx1ZSwgbWl4ZWQgJG1heFZhbHVlLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGluIHJhbmdlIG9mIG51bWJlcnMuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiByZWFkYWJsZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBzb21ldGhpbmcgcmVhZGFibGUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiByZWdleChzdHJpbmcgJHBhdHRlcm4sIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgbWF0Y2hlcyBhIHJlZ2V4LgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc2FtZShtaXhlZCAkdmFsdWUyLCBzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHR3byB2YWx1ZXMgYXJlIHRoZSBzYW1lICh1c2luZyA9PT0pLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc2F0aXNmeShjYWxsYWJsZSAkY2FsbGJhY2ssIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHByb3ZpZGVkIHZhbHVlIGlzIHZhbGlkIGFjY29yZGluZyB0byBhIGNhbGxiYWNrLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc2NhbGFyKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdmFsdWUgaXMgYSBQSFAgc2NhbGFyLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc3RhcnRzV2l0aChzdHJpbmcgJG5lZWRsZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsLCBzdHJpbmcgJGVuY29kaW5nID0gJ3V0ZjgnKSBBc3NlcnQgdGhhdCBzdHJpbmcgc3RhcnRzIHdpdGggYSBzZXF1ZW5jZSBvZiBjaGFycy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIHN0cmluZyhzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHZhbHVlIGlzIGEgc3RyaW5nLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gc3ViY2xhc3NPZihzdHJpbmcgJGNsYXNzTmFtZSwgc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBzdWJjbGFzcyBvZiBnaXZlbiBjbGFzcy1uYW1lLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gdHJ1ZShzdHJpbmd8Y2FsbGFibGUgJG1lc3NhZ2UgPSBudWxsLCBzdHJpbmcgJHByb3BlcnR5UGF0aCA9IG51bGwpIEFzc2VydCB0aGF0IHRoZSB2YWx1ZSBpcyBib29sZWFuIFRydWUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiB1cmwoc3RyaW5nfGNhbGxhYmxlICRtZXNzYWdlID0gbnVsbCwgc3RyaW5nICRwcm9wZXJ0eVBhdGggPSBudWxsKSBBc3NlcnQgdGhhdCB2YWx1ZSBpcyBhbiBVUkwuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiB1dWlkKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIGdpdmVuIHN0cmluZyBpcyBhIHZhbGlkIFVVSUQuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiB2ZXJzaW9uKHN0cmluZyAkb3BlcmF0b3IsIHN0cmluZyAkdmVyc2lvbjIsIHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IGNvbXBhcmlzb24gb2YgdHdvIHZlcnNpb25zLgogKiBAbWV0aG9kIExhenlBc3NlcnRpb24gd3JpdGVhYmxlKHN0cmluZ3xjYWxsYWJsZSAkbWVzc2FnZSA9IG51bGwsIHN0cmluZyAkcHJvcGVydHlQYXRoID0gbnVsbCkgQXNzZXJ0IHRoYXQgdGhlIHZhbHVlIGlzIHNvbWV0aGluZyB3cml0ZWFibGUuCiAqIEBtZXRob2QgTGF6eUFzc2VydGlvbiBhbGwoKSBTd2l0Y2ggY2hhaW4gaW50byB2YWxpZGF0aW9uIG1vZGUgZm9yIGFuIGFycmF5IG9mIHZhbHVlcy4KICogQG1ldGhvZCBMYXp5QXNzZXJ0aW9uIG51bGxPcigpIFN3aXRjaCBjaGFpbiBpbnRvIG1vZGUgYWxsb3dpbmcgbnVsbHMsIGlnbm9yaW5nIGZ1cnRoZXIgYXNzZXJ0aW9ucy4KICovCmNsYXNzIExhenlBc3NlcnRpb24KewogICAgcHJpdmF0ZSAkY3VycmVudENoYWluRmFpbGVkID0gZmFsc2U7CiAgICBwcml2YXRlICRhbHdheXNUcnlBbGwgPSBmYWxzZTsKICAgIHByaXZhdGUgJHRoaXNDaGFpblRyeUFsbCA9IGZhbHNlOwogICAgcHJpdmF0ZSAkY3VycmVudENoYWluOwogICAgcHJpdmF0ZSAkZXJyb3JzID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBzdHJpbmd8TGF6eUFzc2VydGlvbkV4Y2VwdGlvbiBUaGUgY2xhc3MgdG8gdXNlIGZvciBleGNlcHRpb25zICovCiAgICBwcml2YXRlICRleGNlcHRpb25DbGFzcyA9ICdBc3NlcnRcTGF6eUFzc2VydGlvbkV4Y2VwdGlvbic7CgogICAgcHVibGljIGZ1bmN0aW9uIHRoYXQoJHZhbHVlLCAkcHJvcGVydHlQYXRoLCAkZGVmYXVsdE1lc3NhZ2UgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jdXJyZW50Q2hhaW5GYWlsZWQgPSBmYWxzZTsKICAgICAgICAkdGhpcy0+dGhpc0NoYWluVHJ5QWxsID0gZmFsc2U7CiAgICAgICAgJHRoaXMtPmN1cnJlbnRDaGFpbiA9IEFzc2VydDo6dGhhdCgkdmFsdWUsICRkZWZhdWx0TWVzc2FnZSwgJHByb3BlcnR5UGF0aCk7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdHJ5QWxsKCkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jdXJyZW50Q2hhaW4pIHsKICAgICAgICAgICAgJHRoaXMtPmFsd2F5c1RyeUFsbCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dGhpc0NoYWluVHJ5QWxsID0gdHJ1ZTsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoJG1ldGhvZCwgJGFyZ3MpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5hbHdheXNUcnlBbGwgPT09IGZhbHNlCiAgICAgICAgICAgICYmICR0aGlzLT50aGlzQ2hhaW5UcnlBbGwgPT09IGZhbHNlCiAgICAgICAgICAgICYmICR0aGlzLT5jdXJyZW50Q2hhaW5GYWlsZWQgPT09IHRydWUKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgXGNhbGxfdXNlcl9mdW5jX2FycmF5KGFycmF5KCR0aGlzLT5jdXJyZW50Q2hhaW4sICRtZXRob2QpLCAkYXJncyk7CiAgICAgICAgfSBjYXRjaCAoQXNzZXJ0aW9uRmFpbGVkRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICRlOwogICAgICAgICAgICAkdGhpcy0+Y3VycmVudENoYWluRmFpbGVkID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgXEFzc2VydFxMYXp5QXNzZXJ0aW9uRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlOb3coKQogICAgewogICAgICAgIGlmICgkdGhpcy0+ZXJyb3JzKSB7CiAgICAgICAgICAgIHRocm93IFxjYWxsX3VzZXJfZnVuYyhhcnJheSgkdGhpcy0+ZXhjZXB0aW9uQ2xhc3MsICdmcm9tRXJyb3JzJyksICR0aGlzLT5lcnJvcnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzc05hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuICR0aGlzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRFeGNlcHRpb25DbGFzcygkY2xhc3NOYW1lKQogICAgewogICAgICAgIGlmICghXGlzX3N0cmluZygkY2xhc3NOYW1lKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ0V4Y2VwdGlvbiBjbGFzcyBuYW1lIG11c3QgYmUgcGFzc2VkIGFzIGEgc3RyaW5nJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNsYXNzTmFtZSAhPT0gJ0Fzc2VydFxMYXp5QXNzZXJ0aW9uRXhjZXB0aW9uJyAmJiAhXGlzX3N1YmNsYXNzX29mKCRjbGFzc05hbWUsICdBc3NlcnRcTGF6eUFzc2VydGlvbkV4Y2VwdGlvbicpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbigkY2xhc3NOYW1lIC4gJyBpcyBub3QgKGEgc3ViY2xhc3Mgb2YpIEFzc2VydFxMYXp5QXNzZXJ0aW9uRXhjZXB0aW9uJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZXhjZXB0aW9uQ2xhc3MgPSAkY2xhc3NOYW1lOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9Cn0K]]></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/composer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_classmap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2NsYXNzbWFwLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSk7CiRiYXNlRGlyID0gZGlybmFtZSgkdmVuZG9yRGlyKTsKCnJldHVybiBhcnJheSgKICAgICdBcml0aG1ldGljRXJyb3InID0+ICR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL0FyaXRobWV0aWNFcnJvci5waHAnLAogICAgJ0Fzc2VydGlvbkVycm9yJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9Bc3NlcnRpb25FcnJvci5waHAnLAogICAgJ0RpdmlzaW9uQnlaZXJvRXJyb3InID0+ICR2ZW5kb3JEaXIgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL0RpdmlzaW9uQnlaZXJvRXJyb3IucGhwJywKICAgICdFcnJvcicgPT4gJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9SZXNvdXJjZXMvc3R1YnMvRXJyb3IucGhwJywKICAgICdQYXJzZUVycm9yJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9QYXJzZUVycm9yLnBocCcsCiAgICAnVHlwZUVycm9yJyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9UeXBlRXJyb3IucGhwJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_files.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2ZpbGVzLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShkaXJuYW1lKF9fRklMRV9fKSk7CiRiYXNlRGlyID0gZGlybmFtZSgkdmVuZG9yRGlyKTsKCnJldHVybiBhcnJheSgKICAgICdhNGVjYWVhZmI4Y2ZiMDA5YWQwZTA1MmM5MDM1NWU5OCcgPT4gJHZlbmRvckRpciAuICcvYmViZXJsZWkvYXNzZXJ0L2xpYi9Bc3NlcnQvZnVuY3Rpb25zLnBocCcsCiAgICAnNTI1NWMzOGEwZmFlYmE4Njc2NzFiNjFkZmRhNmQ4NjQnID0+ICR2ZW5kb3JEaXIgLiAnL3BhcmFnb25pZS9yYW5kb21fY29tcGF0L2xpYi9yYW5kb20ucGhwJywKICAgICcwZTZkN2JmNGE1ODExYmZhNWNmNDBjNWNjZDZmYWU2YScgPT4gJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZy9ib290c3RyYXAucGhwJywKICAgICcwMjNkMjdkY2E4MDY2ZWYyOWU2NzM5MzM1ZWE3M2JhZCcgPT4gJHZlbmRvckRpciAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9ib290c3RyYXAucGhwJywKICAgICdjOTY0ZWUwZWRlZGYyOGM5NmViZDlkYjUwOTllZjkxMCcgPT4gJHZlbmRvckRpciAuICcvZ3V6emxlaHR0cC9wcm9taXNlcy9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKICAgICdhMGVkYzgzMDljYzVlMWQ2MGUzMDQ3YjVkZjZiNzA1MicgPT4gJHZlbmRvckRpciAuICcvZ3V6emxlaHR0cC9wc3I3L3NyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAnLAogICAgJzM3YTNkYzUxMTFmZThmNzA3YWI0YzEzMmVmMWRiYzYyJyA9PiAkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKKTsK]]></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[PD9waHAKCi8vIGF1dG9sb2FkX3N0YXRpYy5waHAgQGdlbmVyYXRlZCBieSBDb21wb3NlcgoKbmFtZXNwYWNlIENvbXBvc2VyXEF1dG9sb2FkOwoKY2xhc3MgQ29tcG9zZXJTdGF0aWNJbml0MjE5NDdkMGIxNjVlYjgwMTM4NDFlNDJhNDQ4YWEyYzcKewogICAgcHVibGljIHN0YXRpYyAkZmlsZXMgPSBhcnJheSAoCiAgICAgICAgJ2E0ZWNhZWFmYjhjZmIwMDlhZDBlMDUyYzkwMzU1ZTk4JyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2JlYmVybGVpL2Fzc2VydC9saWIvQXNzZXJ0L2Z1bmN0aW9ucy5waHAnLAogICAgICAgICc1MjU1YzM4YTBmYWViYTg2NzY3MWI2MWRmZGE2ZDg2NCcgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9wYXJhZ29uaWUvcmFuZG9tX2NvbXBhdC9saWIvcmFuZG9tLnBocCcsCiAgICAgICAgJzBlNmQ3YmY0YTU4MTFiZmE1Y2Y0MGM1Y2NkNmZhZTZhJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmcvYm9vdHN0cmFwLnBocCcsCiAgICAgICAgJzAyM2QyN2RjYTgwNjZlZjI5ZTY3MzkzMzVlYTczYmFkJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvYm9vdHN0cmFwLnBocCcsCiAgICAgICAgJ2M5NjRlZTBlZGVkZjI4Yzk2ZWJkOWRiNTA5OWVmOTEwJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvcHJvbWlzZXMvc3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCcsCiAgICAgICAgJ2EwZWRjODMwOWNjNWUxZDYwZTMwNDdiNWRmNmI3MDUyJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvcHNyNy9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKICAgICAgICAnMzdhM2RjNTExMWZlOGY3MDdhYjRjMTMyZWYxZGJjNjInID0+IF9fRElSX18gLiAnLy4uJyAuICcvZ3V6emxlaHR0cC9ndXp6bGUvc3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCcsCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgJHByZWZpeExlbmd0aHNQc3I0ID0gYXJyYXkgKAogICAgICAgICdTJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcUGhwNzBcXCcgPT4gMjMsCiAgICAgICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCcgPT4gMjYsCiAgICAgICAgKSwKICAgICAgICAnUCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+IDE3LAogICAgICAgICAgICAnUHNyXFxDYWNoZVxcJyA9PiAxMCwKICAgICAgICApLAogICAgICAgICdNJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdNaW5pc2hsaW5rXFxXZWJQdXNoXFwnID0+IDE5LAogICAgICAgICAgICAnTWRhbnRlclxcRWNjXFwnID0+IDEyLAogICAgICAgICksCiAgICAgICAgJ0onID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ0pvc2VcXCcgPT4gNSwKICAgICAgICApLAogICAgICAgICdHJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdHdXp6bGVIdHRwXFxQc3I3XFwnID0+IDE2LAogICAgICAgICAgICAnR3V6emxlSHR0cFxcUHJvbWlzZVxcJyA9PiAxOSwKICAgICAgICAgICAgJ0d1enpsZUh0dHBcXCcgPT4gMTEsCiAgICAgICAgKSwKICAgICAgICAnRicgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnRkdcXCcgPT4gMywKICAgICAgICApLAogICAgICAgICdCJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdCYXNlNjRVcmxcXCcgPT4gMTAsCiAgICAgICAgKSwKICAgICAgICAnQScgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAnQXNzZXJ0XFwnID0+IDcsCiAgICAgICAgICAgICdBRVNLV1xcJyA9PiA2LAogICAgICAgICAgICAnQUVTR0NNXFwnID0+IDcsCiAgICAgICAgKSwKICAgICk7CgogICAgcHVibGljIHN0YXRpYyAkcHJlZml4RGlyc1BzcjQgPSBhcnJheSAoCiAgICAgICAgJ1N5bWZvbnlcXFBvbHlmaWxsXFxQaHA3MFxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwJywKICAgICAgICApLAogICAgICAgICdTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZycsCiAgICAgICAgKSwKICAgICAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3Bzci9odHRwLW1lc3NhZ2Uvc3JjJywKICAgICAgICApLAogICAgICAgICdQc3JcXENhY2hlXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3Bzci9jYWNoZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ01pbmlzaGxpbmtcXFdlYlB1c2hcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvbWluaXNobGluay93ZWItcHVzaC9zcmMnLAogICAgICAgICksCiAgICAgICAgJ01kYW50ZXJcXEVjY1xcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9tZGFudGVyL2VjYy9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0pvc2VcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3BvbWt5LWxhYnMvam9zZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0d1enpsZUh0dHBcXFBzcjdcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvZ3V6emxlaHR0cC9wc3I3L3NyYycsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcUHJvbWlzZVxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9ndXp6bGVodHRwL3Byb21pc2VzL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0ZHXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2Zncm9zc2UvcGhwYXNuMS9saWInLAogICAgICAgICksCiAgICAgICAgJ0Jhc2U2NFVybFxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zcG9ta3ktbGFicy9iYXNlNjR1cmwvc3JjJywKICAgICAgICApLAogICAgICAgICdBc3NlcnRcXCcgPT4gCiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvYmViZXJsZWkvYXNzZXJ0L2xpYi9Bc3NlcnQnLAogICAgICAgICksCiAgICAgICAgJ0FFU0tXXFwnID0+IAogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3Nwb21reS1sYWJzL2Flcy1rZXktd3JhcC9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0FFU0dDTVxcJyA9PiAKICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zcG9ta3ktbGFicy9waHAtYWVzLWdjbS9zcmMnLAogICAgICAgICksCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgJGNsYXNzTWFwID0gYXJyYXkgKAogICAgICAgICdBcml0aG1ldGljRXJyb3InID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9SZXNvdXJjZXMvc3R1YnMvQXJpdGhtZXRpY0Vycm9yLnBocCcsCiAgICAgICAgJ0Fzc2VydGlvbkVycm9yJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL0Fzc2VydGlvbkVycm9yLnBocCcsCiAgICAgICAgJ0RpdmlzaW9uQnlaZXJvRXJyb3InID0+IF9fRElSX18gLiAnLy4uJyAuICcvc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC9SZXNvdXJjZXMvc3R1YnMvRGl2aXNpb25CeVplcm9FcnJvci5waHAnLAogICAgICAgICdFcnJvcicgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zeW1mb255L3BvbHlmaWxsLXBocDcwL1Jlc291cmNlcy9zdHVicy9FcnJvci5waHAnLAogICAgICAgICdQYXJzZUVycm9yJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL1BhcnNlRXJyb3IucGhwJywKICAgICAgICAnVHlwZUVycm9yJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvUmVzb3VyY2VzL3N0dWJzL1R5cGVFcnJvci5waHAnLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluaXRpYWxpemVyKENsYXNzTG9hZGVyICRsb2FkZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIFxDbG9zdXJlOjpiaW5kKGZ1bmN0aW9uICgpIHVzZSAoJGxvYWRlcikgewogICAgICAgICAgICAkbG9hZGVyLT5wcmVmaXhMZW5ndGhzUHNyNCA9IENvbXBvc2VyU3RhdGljSW5pdDIxOTQ3ZDBiMTY1ZWI4MDEzODQxZTQyYTQ0OGFhMmM3OjokcHJlZml4TGVuZ3Roc1BzcjQ7CiAgICAgICAgICAgICRsb2FkZXItPnByZWZpeERpcnNQc3I0ID0gQ29tcG9zZXJTdGF0aWNJbml0MjE5NDdkMGIxNjVlYjgwMTM4NDFlNDJhNDQ4YWEyYzc6OiRwcmVmaXhEaXJzUHNyNDsKICAgICAgICAgICAgJGxvYWRlci0+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+cHJlZml4RGlyc1BzcjRbJHNlYXJjaF0pKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnByZWZpeERpcnNQc3I0WyRzZWFyY2hdIGFzICRkaXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxlbmd0aCA9ICR0aGlzLT5wcmVmaXhMZW5ndGhzUHNyNFskZmlyc3RdWyRzZWFyY2hdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkbGVuZ3RoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTQgZmFsbGJhY2sgZGlycwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mYWxsYmFja0RpcnNQc3I0IGFzICRkaXIpIHsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbG9naWNhbFBhdGhQc3I0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItMCBsb29rdXAKICAgICAgICBpZiAoZmFsc2UgIT09ICRwb3MgPSBzdHJycG9zKCRjbGFzcywgJ1xcJykpIHsKICAgICAgICAgICAgLy8gbmFtZXNwYWNlZCBjbGFzcyBuYW1lCiAgICAgICAgICAgICRsb2dpY2FsUGF0aFBzcjAgPSBzdWJzdHIoJGxvZ2ljYWxQYXRoUHNyNCwgMCwgJHBvcyArIDEpCiAgICAgICAgICAgICAgICAuIHN0cnRyKHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkcG9zICsgMSksICdfJywgRElSRUNUT1JZX1NFUEFSQVRPUik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gUEVBUi1saWtlIGNsYXNzIG5hbWUKICAgICAgICAgICAgJGxvZ2ljYWxQYXRoUHNyMCA9IHN0cnRyKCRjbGFzcywgJ18nLCBESVJFQ1RPUllfU0VQQVJBVE9SKSAuICRleHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF0gYXMgJHByZWZpeCA9PiAkZGlycykgewogICAgICAgICAgICAgICAgaWYgKDAgPT09IHN0cnBvcygkY2xhc3MsICRwcmVmaXgpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFBTUi0wIGZhbGxiYWNrIGRpcnMKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCBhcyAkZGlyKSB7CiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTAgaW5jbHVkZSBwYXRocy4KICAgICAgICBpZiAoJHRoaXMtPnVzZUluY2x1ZGVQYXRoICYmICRmaWxlID0gc3RyZWFtX3Jlc29sdmVfaW5jbHVkZV9wYXRoKCRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQoKLyoqCiAqIFNjb3BlIGlzb2xhdGVkIGluY2x1ZGUuCiAqCiAqIFByZXZlbnRzIGFjY2VzcyB0byAkdGhpcy9zZWxmIGZyb20gaW5jbHVkZWQgZmlsZXMuCiAqLwpmdW5jdGlvbiBpbmNsdWRlRmlsZSgkZmlsZSkKewogICAgaW5jbHVkZSAkZmlsZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/installed.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WwogICAgewogICAgICAgICJuYW1lIjogInN5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmciLAogICAgICAgICJ2ZXJzaW9uIjogInYxLjUuMCIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjUuMC4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L3BvbHlmaWxsLW1ic3RyaW5nLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiN2M4ZmFlMGFjMWQyMTZlYjU0MzQ5ZTZhOGJhYTU3ZDUxNWZlODgwMyIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZy96aXBiYWxsLzdjOGZhZTBhYzFkMjE2ZWI1NDM0OWU2YThiYWE1N2Q1MTVmZTg4MDMiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjdjOGZhZTBhYzFkMjE2ZWI1NDM0OWU2YThiYWE1N2Q1MTVmZTg4MDMiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAicGhwIjogIj49NS4zLjMiCiAgICAgICAgfSwKICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICJGb3IgYmVzdCBwZXJmb3JtYW5jZSIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTctMDYtMTRUMTU6NDQ6NDgrMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNS1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIlN5bWZvbnlcXFBvbHlmaWxsXFxNYnN0cmluZ1xcIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgImJvb3RzdHJhcC5waHAiCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBwb2x5ZmlsbCBmb3IgdGhlIE1ic3RyaW5nIGV4dGVuc2lvbiIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgImNvbXBhdGliaWxpdHkiLAogICAgICAgICAgICAibWJzdHJpbmciLAogICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAic2hpbSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogImJlYmVybGVpL2Fzc2VydCIsCiAgICAgICAgInZlcnNpb24iOiAidjIuNy42IiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuNy42LjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JlYmVybGVpL2Fzc2VydC5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjg3MjZlMTgzZWJiYjAxNjljYjZjYjQ4MzJlMjJlYmQzNTU1MjQ1NjMiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2JlYmVybGVpL2Fzc2VydC96aXBiYWxsLzg3MjZlMTgzZWJiYjAxNjljYjZjYjQ4MzJlMjJlYmQzNTU1MjQ1NjMiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjg3MjZlMTgzZWJiYjAxNjljYjZjYjQ4MzJlMjJlYmQzNTU1MjQ1NjMiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAicGhwIjogIj49NS4zIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xLjEiLAogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40fF41IgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNy0wNS0wNFQwMjowMDoyNCswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiQXNzZXJ0XFwiOiAibGliL0Fzc2VydCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgImxpYi9Bc3NlcnQvZnVuY3Rpb25zLnBocCIKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiQlNELTItQ2xhdXNlIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkJlbmphbWluIEViZXJsZWkiLAogICAgICAgICAgICAgICAgImVtYWlsIjogImtvbnRha3RAYmViZXJsZWkuZGUiLAogICAgICAgICAgICAgICAgInJvbGUiOiAiTGVhZCBEZXZlbG9wZXIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlJpY2hhcmQgUXVhZGxpbmciLAogICAgICAgICAgICAgICAgImVtYWlsIjogInJxdWFkbGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgInJvbGUiOiAiQ29sbGFib3JhdG9yIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiVGhpbiBhc3NlcnRpb24gbGlicmFyeSBmb3IgaW5wdXQgdmFsaWRhdGlvbiBpbiBidXNpbmVzcyBtb2RlbHMuIiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJhc3NlcnQiLAogICAgICAgICAgICAiYXNzZXJ0aW9uIiwKICAgICAgICAgICAgInZhbGlkYXRpb24iCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJzcG9ta3ktbGFicy9waHAtYWVzLWdjbSIsCiAgICAgICAgInZlcnNpb24iOiAidjEuMi4wIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjEuMi4wLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYjY1NWJlZjBkNGYwZmEyZjM2YzExYzUxMjJlMjg0OTUxZTgxOTYxYyIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvcGhwLWFlcy1nY20vemlwYmFsbC9iNjU1YmVmMGQ0ZjBmYTJmMzZjMTFjNTEyMmUyODQ5NTFlODE5NjFjIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiNjU1YmVmMGQ0ZjBmYTJmMzZjMTFjNTEyMmUyODQ5NTFlODE5NjFjIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgImJlYmVybGVpL2Fzc2VydCI6ICJeMi40IiwKICAgICAgICAgICAgImxpYi1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAicGhwIjogIj49NS40IiwKICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtbWJzdHJpbmciOiAiXjEuMSIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC41fF41LjAiLAogICAgICAgICAgICAic2F0b29zaGkvcGhwLWNvdmVyYWxscyI6ICJeMS4wIgogICAgICAgIH0sCiAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICJleHQtY3J5cHRvIjogIkhpZ2hseSByZWNvbW1lbmRlZCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLiIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTYtMTEtMjJUMjE6MTE6MTErMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMi54LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiQUVTR0NNXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9waHAtYWVzLWdjbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJBRVMgR0NNIChHYWxvaXMgQ291bnRlciBNb2RlKSBQSFAgaW1wbGVtZW50YXRpb24uIiwKICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL3BocC1hZXMtZ2NtIiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJBRVMtR0NNIiwKICAgICAgICAgICAgIkdhbG9pcyBDb3VudGVyIE1vZGUiLAogICAgICAgICAgICAiYWVzIiwKICAgICAgICAgICAgImdjbSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInBzci9jYWNoZSIsCiAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4wLjEuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9jYWNoZS5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImQxMWI1MGFkMjIzMjUwY2YxN2I4NmUzODM4MzQxM2Y1YTY3NjRiZjgiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocC1maWcvY2FjaGUvemlwYmFsbC9kMTFiNTBhZDIyMzI1MGNmMTdiODZlMzgzODM0MTNmNWE2NzY0YmY4IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJkMTFiNTBhZDIyMzI1MGNmMTdiODZlMzgzODM0MTNmNWE2NzY0YmY4IiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBocCI6ICI+PTUuMy4wIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNi0wOC0wNlQyMDoyNDoxMSswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4wLngtZGV2IgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICJQc3JcXENhY2hlXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgY2FjaGluZyBsaWJyYXJpZXMiLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgImNhY2hlIiwKICAgICAgICAgICAgInBzciIsCiAgICAgICAgICAgICJwc3ItNiIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogImZncm9zc2UvcGhwYXNuMSIsCiAgICAgICAgInZlcnNpb24iOiAiMS41LjIiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS41LjIuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYTE4YjE2MmVjYTZhYTcwZjhmMTU2MTVmNGFjOGM4NTJkZmZiYzdkZCIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZmdyb3NzZS9QSFBBU04xL3ppcGJhbGwvYTE4YjE2MmVjYTZhYTcwZjhmMTU2MTVmNGFjOGM4NTJkZmZiYzdkZCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYTE4YjE2MmVjYTZhYTcwZjhmMTU2MTVmNGFjOGM4NTJkZmZiYzdkZCIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJleHQtZ21wIjogIioiLAogICAgICAgICAgICAicGhwIjogIj49NS42LjAiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuNSIsCiAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogImRldi1tYXN0ZXIiCiAgICAgICAgfSwKICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgInBocC1jdXJsIjogIkZvciBsb2FkaW5nIE9JRCBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3ZWIgaWYgdGhleSBoYXZlIG5vdCBiZWUgZGVmaW5lZCBzdGF0aWNhbGx5IgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNi0xMC0yOVQxNTo0Njo0NiswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS41LngtZGV2IgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICJGR1xcIjogImxpYi8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJGcmllZHJpY2ggR3Jvw59lIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmllZHJpY2guZ3Jvc3NlQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UiLAogICAgICAgICAgICAgICAgInJvbGUiOiAiQXV0aG9yIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZS9QSFBBU04xL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgUEhQIEZyYW1ld29yayB0aGF0IGFsbG93cyB5b3UgdG8gZW5jb2RlIGFuZCBkZWNvZGUgYXJiaXRyYXJ5IEFTTi4xIHN0cnVjdHVyZXMgdXNpbmcgdGhlIElUVS1UIFguNjkwIEVuY29kaW5nIFJ1bGVzLiIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEiLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgIkRFUiIsCiAgICAgICAgICAgICJhc24uMSIsCiAgICAgICAgICAgICJhc24xIiwKICAgICAgICAgICAgImJlciIsCiAgICAgICAgICAgICJiaW5hcnkiLAogICAgICAgICAgICAiZGVjb2RpbmciLAogICAgICAgICAgICAiZW5jb2RpbmciLAogICAgICAgICAgICAieC41MDkiLAogICAgICAgICAgICAieC42OTAiLAogICAgICAgICAgICAieDUwOSIsCiAgICAgICAgICAgICJ4NjkwIgogICAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICAgIm5hbWUiOiAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiLAogICAgICAgICJ2ZXJzaW9uIjogInYyLjAuMTAiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMi4wLjEwLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BhcmFnb25pZS9yYW5kb21fY29tcGF0LmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjM0YmFlOGU5MTFlZWZhODljMWFiZmJmMWI2NmRhNjc5YWM4ZjU0ZCIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGFyYWdvbmllL3JhbmRvbV9jb21wYXQvemlwYmFsbC82MzRiYWU4ZTkxMWVlZmE4OWMxYWJmYmYxYjY2ZGE2NzlhYzhmNTRkIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MzRiYWU4ZTkxMWVlZmE4OWMxYWJmYmYxYjY2ZGE2NzlhYzhmNTRkIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBocCI6ICI+PTUuMi4wIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIjQuKnw1LioiCiAgICAgICAgfSwKICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgImV4dC1saWJzb2RpdW0iOiAiUHJvdmlkZXMgYSBtb2Rlcm4gY3J5cHRvIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIHJhbmRvbSBieXRlcy4iCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE3LTAzLTEzVDE2OjI3OjMyKzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICJsaWIvcmFuZG9tLnBocCIKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlBhcmFnb24gSW5pdGlhdGl2ZSBFbnRlcnByaXNlcyIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAic2VjdXJpdHlAcGFyYWdvbmllLmNvbSIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9wYXJhZ29uaWUuY29tIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiUEhQIDUueCBwb2x5ZmlsbCBmb3IgcmFuZG9tX2J5dGVzKCkgYW5kIHJhbmRvbV9pbnQoKSBmcm9tIFBIUCA3IiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJjc3BybmciLAogICAgICAgICAgICAicHNldWRvcmFuZG9tIiwKICAgICAgICAgICAgInJhbmRvbSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogIm1kYW50ZXIvZWNjIiwKICAgICAgICAidmVyc2lvbiI6ICJ2MC40LjIiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMC40LjIuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYy5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImZkZDFmYTliZTgxODRjOWYzMTk0MzM0MzdjYjFkOWY5ZDQyOTQxNjQiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocGVjYy9waHBlY2MvemlwYmFsbC9mZGQxZmE5YmU4MTg0YzlmMzE5NDMzNDM3Y2IxZDlmOWQ0Mjk0MTY0IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmZGQxZmE5YmU4MTg0YzlmMzE5NDMzNDM3Y2IxZDlmOWQ0Mjk0MTY0IiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgImV4dC1nbXAiOiAiKiIsCiAgICAgICAgICAgICJmZ3Jvc3NlL3BocGFzbjEiOiAifjEuNSIsCiAgICAgICAgICAgICJwYXJhZ29uaWUvcmFuZG9tX2NvbXBhdCI6ICJeMXxeMiIsCiAgICAgICAgICAgICJwaHAiOiAiPj01LjYuMCIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC4xfH41LjAiLAogICAgICAgICAgICAic3F1aXpsYWJzL3BocF9jb2Rlc25pZmZlciI6ICJ+MiIsCiAgICAgICAgICAgICJzeW1mb255L3lhbWwiOiAifjIuNnx+My4wIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNy0wMS0wNFQxMjoxMzoyNCswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiTWRhbnRlclxcRWNjXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIk1hdHlhcyBEYW50ZXIiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9tYXRlamRhbnRlci5jb20vIiwKICAgICAgICAgICAgICAgICJyb2xlIjogIkF1dGhvciIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiVGhpYmF1ZCBGYWJyZSIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAidGhpYmF1ZEBhenRlY2guaW8iLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9henRlY2guaW8iLAogICAgICAgICAgICAgICAgInJvbGUiOiAiTWFpbnRhaW5lciIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIlBIUCBFbGxpcHRpYyBDdXJ2ZSBDcnlwdG9ncmFwaHkgbGlicmFyeSIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHBlY2MvcGhwZWNjIiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJEaWZmaWUiLAogICAgICAgICAgICAiRUNEU0EiLAogICAgICAgICAgICAiSGVsbG1hbiIsCiAgICAgICAgICAgICJjdXJ2ZSIsCiAgICAgICAgICAgICJlY2RoIiwKICAgICAgICAgICAgImVsbGlwdGljIiwKICAgICAgICAgICAgIm5pc3RwMTkyIiwKICAgICAgICAgICAgIm5pc3RwMjI0IiwKICAgICAgICAgICAgIm5pc3RwMjU2IiwKICAgICAgICAgICAgIm5pc3RwNTIxIiwKICAgICAgICAgICAgInBocGVjYyIsCiAgICAgICAgICAgICJzZWNwMjU2azEiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJzeW1mb255L3BvbHlmaWxsLXBocDcwIiwKICAgICAgICAidmVyc2lvbiI6ICJ2MS41LjAiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS41LjAuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC1waHA3MC5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImI2NDgyZTY4OTc0NDg2OTg0ZjU5NDQ5ZWNlYTFmYmJiMjJmZjg0MGYiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3N5bWZvbnkvcG9seWZpbGwtcGhwNzAvemlwYmFsbC9iNjQ4MmU2ODk3NDQ4Njk4NGY1OTQ0OWVjZWExZmJiYjIyZmY4NDBmIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJiNjQ4MmU2ODk3NDQ4Njk4NGY1OTQ0OWVjZWExZmJiYjIyZmY4NDBmIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBhcmFnb25pZS9yYW5kb21fY29tcGF0IjogIn4xLjB8fjIuMCIsCiAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMyIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTctMDYtMTRUMTU6NDQ6NDgrMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNS1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIlN5bWZvbnlcXFBvbHlmaWxsXFxQaHA3MFxcIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgImJvb3RzdHJhcC5waHAiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJjbGFzc21hcCI6IFsKICAgICAgICAgICAgICAgICJSZXNvdXJjZXMvc3R1YnMiCiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAicEB0Y2h3b3JrLmNvbSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiU3ltZm9ueSBDb21tdW5pdHkiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiU3ltZm9ueSBwb2x5ZmlsbCBiYWNrcG9ydGluZyBzb21lIFBIUCA3LjArIGZlYXR1cmVzIHRvIGxvd2VyIFBIUCB2ZXJzaW9ucyIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgImNvbXBhdGliaWxpdHkiLAogICAgICAgICAgICAicG9seWZpbGwiLAogICAgICAgICAgICAicG9ydGFibGUiLAogICAgICAgICAgICAic2hpbSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInNwb21reS1sYWJzL2Flcy1rZXktd3JhcCIsCiAgICAgICAgInZlcnNpb24iOiAidjMuMC4zIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjMuMC4zLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcC96aXBiYWxsLzA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjA3MmUzMTJlYTExOWM0Y2MzMzAxMmVkYzVlN2U4YzNmM2RlZjBkNjYiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAiYmViZXJsZWkvYXNzZXJ0IjogIl4yLjQiLAogICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICJwaHAiOiAiXjUuNHxeNy4wIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjV8XjUuMCIsCiAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE3LTAzLTI1VDIxOjA3OjExKzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIzLjAueC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkFFU0tXXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9hZXMta2V5LXdyYXAvY29udHJpYnV0b3JzIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiQUVTIEtleSBXcmFwIGZvciBQSFAuIiwKICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Flcy1rZXktd3JhcCIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiQTEyOEtXIiwKICAgICAgICAgICAgIkExOTJLVyIsCiAgICAgICAgICAgICJBMjU2S1ciLAogICAgICAgICAgICAiUkZDMzM5NCIsCiAgICAgICAgICAgICJSRkM1NjQ5IiwKICAgICAgICAgICAgImFlcyIsCiAgICAgICAgICAgICJrZXkiLAogICAgICAgICAgICAicGFkZGluZyIsCiAgICAgICAgICAgICJ3cmFwIgogICAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAidmVyc2lvbiI6ICJ2MS4wLjIiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4wLjIuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvYmFzZTY0dXJsL3ppcGJhbGwvZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZWY2ZDVmYjkzODk0MDYzZDljZWU5OTYwMjIyNTlmZDA4ZDY2NDZlYSIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJwaHAiOiAiXjUuM3xeNy4wIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl40LjB8XjUuMCIsCiAgICAgICAgICAgICJzYXRvb3NoaS9waHAtY292ZXJhbGxzIjogIl4xLjAiCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE2LTAxLTIxVDE5OjUwOjMwKzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkJhc2U2NFVybFxcIjogInNyYy8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgImRlc2NyaXB0aW9uIjogIkJhc2UgNjQgVVJMIFNhZmUgRW5jb2RpbmcvZGVjb2RpbmcgUEhQIExpYnJhcnkiLAogICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICJiYXNlNjQiLAogICAgICAgICAgICAicmZjNDY0OCIsCiAgICAgICAgICAgICJzYWZlIiwKICAgICAgICAgICAgInVybCIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogInNwb21reS1sYWJzL2pvc2UiLAogICAgICAgICJ2ZXJzaW9uIjogInY2LjEuNCIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICI2LjEuNC4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9qb3NlLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZmNjZDdlMDI0YjEwYWQwNWU5Mzc0ZDc0NTg5M2IxMzMxMWM0ZDQ5YSIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvam9zZS96aXBiYWxsL2ZjY2Q3ZTAyNGIxMGFkMDVlOTM3NGQ3NDU4OTNiMTMzMTFjNGQ0OWEiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImZjY2Q3ZTAyNGIxMGFkMDVlOTM3NGQ3NDU4OTNiMTMzMTFjNGQ0OWEiLAogICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAiYmViZXJsZWkvYXNzZXJ0IjogIl4yLjQiLAogICAgICAgICAgICAiZmdyb3NzZS9waHBhc24xIjogIl4xLjUiLAogICAgICAgICAgICAibGliLW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICJtZGFudGVyL2VjYyI6ICIwLjQuKiIsCiAgICAgICAgICAgICJwaHAiOiAiXjUuNnxeNy4wIiwKICAgICAgICAgICAgInBzci9jYWNoZSI6ICJeMS4wIiwKICAgICAgICAgICAgInNwb21reS1sYWJzL2Flcy1rZXktd3JhcCI6ICJeMy4wIiwKICAgICAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wIiwKICAgICAgICAgICAgInNwb21reS1sYWJzL3BocC1hZXMtZ2NtIjogIl4xLjIiLAogICAgICAgICAgICAic3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZyI6ICJeMS4xIiwKICAgICAgICAgICAgInN5bWZvbnkvcG9seWZpbGwtcGhwNzAiOiAiXjEuMSIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNS4wIiwKICAgICAgICAgICAgInNhdG9vc2hpL3BocC1jb3ZlcmFsbHMiOiAiXjEuMCIsCiAgICAgICAgICAgICJzeW1mb255L2NhY2hlIjogIl4yLjB8XjMuMCIKICAgICAgICB9LAogICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAiZXh0LWNyeXB0byI6ICJIaWdobHkgcmVjb21tZW5kZWQgd2hlbiB5b3UgdXNlIEFFUyBHQ00gYmFzZWQgYWxnb3JpdGhtcy4iLAogICAgICAgICAgICAiZXh0LWN1cnZlMjU1MTkiOiAiRm9yIEVkRFNBIHdpdGggWDI1NTE5IGN1cnZlcyBzdXBwb3J0LiIsCiAgICAgICAgICAgICJleHQtZWQyNTUxOSI6ICJGb3IgRWREU0Egd2l0aCBFZDI1NTE5IGN1cnZlcyBzdXBwb3J0LiIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTctMDItMDZUMTg6MjI6NTErMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjYuMS54LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiSm9zZVxcIjogInNyYy8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvam9zZS9jb250cmlidXRvcnMiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJKU09OIE9iamVjdCBTaWduaW5nIGFuZCBFbmNyeXB0aW9uIGxpYnJhcnkgZm9yIFBIUC4iLAogICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvSm9zZSIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAiSldLIiwKICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAiSm90IiwKICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICJSRkM3NTE3IiwKICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICJSRkM3NTIwIiwKICAgICAgICAgICAgImp3YSIsCiAgICAgICAgICAgICJqd3QiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3Byb21pc2VzIiwKICAgICAgICAidmVyc2lvbiI6ICJ2MS4zLjEiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMS4zLjEuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzLmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL3Byb21pc2VzL3ppcGJhbGwvYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYTU5ZGE2Y2Y2MWQ4MDA2MDY0N2ZmNGQzZWIyYzAzYTJiYzY5NDY0NiIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJwaHAiOiAiPj01LjUuMCIKICAgICAgICB9LAogICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC4wIgogICAgICAgIH0sCiAgICAgICAgInRpbWUiOiAiMjAxNi0xMi0yMFQxMDowNzoxMSswMDowMCIsCiAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS40LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcUHJvbWlzZVxcIjogInNyYy8iCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICBdCiAgICAgICAgfSwKICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICJNSVQiCiAgICAgICAgXSwKICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIHByb21pc2VzIGxpYnJhcnkiLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgInByb21pc2UiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJwc3IvaHR0cC1tZXNzYWdlIiwKICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjAuMS4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZS5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImY2NTYxYmYyOGQ1MjAxNTRlNGIwZWM3MmJlOTU0MThhYmU2ZDkzNjMiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocC1maWcvaHR0cC1tZXNzYWdlL3ppcGJhbGwvZjY1NjFiZjI4ZDUyMDE1NGU0YjBlYzcyYmU5NTQxOGFiZTZkOTM2MyIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZjY1NjFiZjI4ZDUyMDE1NGU0YjBlYzcyYmU5NTQxOGFiZTZkOTM2MyIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJwaHAiOiAiPj01LjMuMCIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTYtMDgtMDZUMTQ6Mzk6NTErMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZSIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICJodHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAicHNyIiwKICAgICAgICAgICAgInBzci03IiwKICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAicmVzcG9uc2UiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL3BzcjciLAogICAgICAgICJ2ZXJzaW9uIjogIjEuNC4yIiwKICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjEuNC4yLjAiLAogICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3LmdpdCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiZjViOGE4NTEyZTJiNThiMDA3MWE3MjgwZTM5ZjE0ZjcyZTA1ZDg3YyIKICAgICAgICB9LAogICAgICAgICJkaXN0IjogewogICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL3BzcjcvemlwYmFsbC9mNWI4YTg1MTJlMmI1OGIwMDcxYTcyODBlMzlmMTRmNzJlMDVkODdjIiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNWI4YTg1MTJlMmI1OGIwMDcxYTcyODBlMzlmMTRmNzJlMDVkODdjIiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgInBocCI6ICI+PTUuNC4wIiwKICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAifjEuMCIKICAgICAgICB9LAogICAgICAgICJwcm92aWRlIjogewogICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZS1pbXBsZW1lbnRhdGlvbiI6ICIxLjAiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAifjQuMCIKICAgICAgICB9LAogICAgICAgICJ0aW1lIjogIjIwMTctMDMtMjBUMTc6MTA6NDYrMDA6MDAiLAogICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuNC1kZXYiCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgIkd1enpsZUh0dHBcXFBzcjdcXCI6ICJzcmMvIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAic3JjL2Z1bmN0aW9uc19pbmNsdWRlLnBocCIKICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAiTUlUIgogICAgICAgIF0sCiAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAiZW1haWwiOiAibXRkb3dsaW5nQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIFNjaHVsdHplIiwKICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vVG9iaW9uIgogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTcgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsc28gcHJvdmlkZXMgY29tbW9uIHV0aWxpdHkgbWV0aG9kcyIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAicmVzcG9uc2UiLAogICAgICAgICAgICAic3RyZWFtIiwKICAgICAgICAgICAgInVyaSIsCiAgICAgICAgICAgICJ1cmwiCiAgICAgICAgXQogICAgfSwKICAgIHsKICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL2d1enpsZSIsCiAgICAgICAgInZlcnNpb24iOiAiNi4zLjAiLAogICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiNi4zLjAuMCIsCiAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogImY0ZGI1YTc4YTVlYTQ2OGQ0ODMxZGU3ZjBiZjlkOTQxNWUzNDg2OTkiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUvemlwYmFsbC9mNGRiNWE3OGE1ZWE0NjhkNDgzMWRlN2YwYmY5ZDk0MTVlMzQ4Njk5IiwKICAgICAgICAgICAgInJlZmVyZW5jZSI6ICJmNGRiNWE3OGE1ZWE0NjhkNDgzMWRlN2YwYmY5ZDk0MTVlMzQ4Njk5IiwKICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgImd1enpsZWh0dHAvcHJvbWlzZXMiOiAiXjEuMCIsCiAgICAgICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjEuNCIsCiAgICAgICAgICAgICJwaHAiOiAiPj01LjUiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICJleHQtY3VybCI6ICIqIiwKICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNC4wIHx8IF41LjAiLAogICAgICAgICAgICAicHNyL2xvZyI6ICJeMS4wIgogICAgICAgIH0sCiAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICJwc3IvbG9nIjogIlJlcXVpcmVkIGZvciB1c2luZyB0aGUgTG9nIG1pZGRsZXdhcmUiCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE3LTA2LTIyVDE4OjUwOjQ5KzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICI2LjItZGV2IgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICBdLAogICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcIjogInNyYy8iCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgIk1JVCIKICAgICAgICBdLAogICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJHdXp6bGUgaXMgYSBQSFAgSFRUUCBjbGllbnQgbGlicmFyeSIsCiAgICAgICAgImhvbWVwYWdlIjogImh0dHA6Ly9ndXp6bGVwaHAub3JnLyIsCiAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAiY2xpZW50IiwKICAgICAgICAgICAgImN1cmwiLAogICAgICAgICAgICAiZnJhbWV3b3JrIiwKICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAiaHR0cCBjbGllbnQiLAogICAgICAgICAgICAicmVzdCIsCiAgICAgICAgICAgICJ3ZWIgc2VydmljZSIKICAgICAgICBdCiAgICB9LAogICAgewogICAgICAgICJuYW1lIjogIm1pbmlzaGxpbmsvd2ViLXB1c2giLAogICAgICAgICJ2ZXJzaW9uIjogInYxLjQuMyIsCiAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjQuMy4wIiwKICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC5naXQiLAogICAgICAgICAgICAicmVmZXJlbmNlIjogIjY1ZmNkODBmY2NlY2MyOWE0ZGY3ZmJmNDdjM2ZiYzk1NThlMDdkOTQiCiAgICAgICAgfSwKICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL3ppcGJhbGwvNjVmY2Q4MGZjY2VjYzI5YTRkZjdmYmY0N2MzZmJjOTU1OGUwN2Q5NCIsCiAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjVmY2Q4MGZjY2VjYzI5YTRkZjdmYmY0N2MzZmJjOTU1OGUwN2Q5NCIsCiAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgIH0sCiAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNi4yIiwKICAgICAgICAgICAgImxpYi1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAibWRhbnRlci9lY2MiOiAiXjAuNC4wIiwKICAgICAgICAgICAgInBocCI6ICJeNS42IHx8IF43LjAiLAogICAgICAgICAgICAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIjogIl4xLjAiLAogICAgICAgICAgICAic3BvbWt5LWxhYnMvam9zZSI6ICJeNi4wIiwKICAgICAgICAgICAgInNwb21reS1sYWJzL3BocC1hZXMtZ2NtIjogIl4xLjIiCiAgICAgICAgfSwKICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiNS43LioiCiAgICAgICAgfSwKICAgICAgICAidGltZSI6ICIyMDE3LTA2LTI4VDE5OjAzOjQwKzAwOjAwIiwKICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICJNaW5pc2hsaW5rXFxXZWJQdXNoXFwiOiAic3JjIgogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICJNSVQiCiAgICAgICAgXSwKICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAiTG91aXMgTGFncmFuZ2UiLAogICAgICAgICAgICAgICAgImVtYWlsIjogImxhZ3JhbmdlLmxvdWlzQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL01pbmlzaGxpbmsiCiAgICAgICAgICAgIH0KICAgICAgICBdLAogICAgICAgICJkZXNjcmlwdGlvbiI6ICJXZWIgUHVzaCBsaWJyYXJ5IGZvciBQSFAiLAogICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAiLAogICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgIlB1c2ggQVBJIiwKICAgICAgICAgICAgIldlYlB1c2giLAogICAgICAgICAgICAibm90aWZpY2F0aW9ucyIsCiAgICAgICAgICAgICJwdXNoIiwKICAgICAgICAgICAgIndlYiIKICAgICAgICBdCiAgICB9Cl0K]]></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/.coveralls.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[c3JjX2RpcjogbGliCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/.styleci.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cHJlc2V0OiBzeW1mb255CgpsaW50aW5nOiB0cnVlCgpkaXNhYmxlZDoKICAtIGVtcHR5X3JldHVybgogIC0gcGhwZG9jX2FsaWduCiAgLSBibGFua2xpbmVfYWZ0ZXJfb3Blbl90YWcKICAtIHByZV9pbmNyZW1lbnQKICAtIHJldHVybgogIC0gdW5hbGlnbl9lcXVhbHMKICAtIHVuYWxpZ25fZG91YmxlX2Fycm93CiAgLSBwaHBkb2Nfc2VwYXJhdGlvbgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/.travis.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bGFuZ3VhZ2U6IHBocApzdWRvOiBmYWxzZQoKcGhwOgogIC0gNS42CiAgLSA3CiAgLSBoaHZtCgpjYWNoZToKICBkaXJlY3RvcmllczoKICAgIC0gdmVuZG9yCgpiZWZvcmVfc2NyaXB0OgogIC0gY29tcG9zZXIgaW5zdGFsbAoKc2NyaXB0OgogIC0gdmVuZG9yL2Jpbi9waHB1bml0IC0tY292ZXJhZ2UtY2xvdmVyIGJ1aWxkL2xvZ3MvY2xvdmVyLnhtbAoKYWZ0ZXJfc2NyaXB0OgogICMgY29kZSBjb3ZlcmFnZSBjdXJyZW50bHkgZG9lcyBub3Qgc2VlbSB0byBiZSBzdXBwb3J0ZWQgb24gdHJhdmlzIHBocCA3IG9yIGhodm0KICAtIHZlbmRvci9iaW4vY292ZXJhbGxzIC0tdmVyYm9zZQo=]]></data>
	</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/examples/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/allClasses.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpyZXF1aXJlX29uY2UgX19ESVJfXy4nL2hleGR1bXAucGhwJzsKcmVxdWlyZV9vbmNlIF9fRElSX18uJy8uLi92ZW5kb3IvYXV0b2xvYWQucGhwJzsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQm9vbGVhbjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxFbnVtZXJhdGVkOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcTnVtZXJpY1N0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXENoYXJhY3RlclN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFVURjhTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCaXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPY3RldFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVVRDVGltZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdlbmVyYWxpemVkVGltZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNldDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgRkdcQVNOMVxDb21wb3NpdGVcQXR0cmlidXRlVHlwZUFuZFZhbHVlOwp1c2UgRkdcQVNOMVxDb21wb3NpdGVcUkROU3RyaW5nOwp1c2UgRkdcQVNOMVxDb21wb3NpdGVcUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZTsKdXNlIEZHXFg1MDlcQ2VydGlmaWNhdGVTdWJqZWN0Owp1c2UgRkdcWDUwOVxQdWJsaWNLZXk7CnVzZSBGR1xYNTA5XEFsZ29yaXRobUlkZW50aWZpZXI7CnVzZSBGR1xYNTA5XENTUlxDU1I7CgovLyBjaGVjayBpZiBvcGVuc3NsIGlzIGluc3RhbGxlZCBvbiB0aGlzIHN5c3RlbQokb3BlblNTTFZlcnNpb25PdXRwdXQgPSBzaGVsbF9leGVjKCdvcGVuc3NsIHZlcnNpb24nKTsKaWYgKHN1YnN0cigkb3BlblNTTFZlcnNpb25PdXRwdXQsIDAsIDcpID09ICdPcGVuU1NMJykgewogICAgJG9wZW5TU0xpc0F2YWlsYWJsZSA9IHRydWU7Cn0gZWxzZSB7CiAgICAkb3BlblNTTGlzQXZhaWxhYmxlID0gZmFsc2U7Cn0KCmZ1bmN0aW9uIHByaW50VmFyaWFibGVJbmZvKE9iamVjdCAkdmFyaWFibGUpCnsKICAgICRjbGFzc05hbWUgPSBnZXRfY2xhc3MoJHZhcmlhYmxlKTsKICAgICRzdHJpbmdWYWx1ZSA9IG5sMmJyKCR2YXJpYWJsZS0+X190b1N0cmluZygpKTsKICAgICRiaW5hcnlEYXRhID0gJHZhcmlhYmxlLT5nZXRCaW5hcnkoKTsKICAgICRiYXNlNjRCaW5hcnkgPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCRiaW5hcnlEYXRhKSwgMjQpOwoKICAgIGVjaG8gJzx0cj4nOwogICAgZWNobyAiPHRkIGNsYXNzPSdBU05jbGFzcyc+eyRjbGFzc05hbWV9PC90ZD4iOwogICAgZWNobyAiPHRkIGNsYXNzPSd0b1N0cmluZyc+XCI8c3BhbiBjbGFzcz0ncmVkJz57JHN0cmluZ1ZhbHVlfTwvc3Bhbj5cIjwvdGQ+IjsKICAgIGVjaG8gIjx0ZCBjbGFzcz0nbW9ub3NwYWNlIGJhc2U2NCc+eyRiYXNlNjRCaW5hcnl9PC90ZD4iOwogICAgZWNobyAnPHRkPicuaGV4ZHVtcCgkYmluYXJ5RGF0YSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSkuJzwvdGQ+JzsKCiAgICBnbG9iYWwgJG9wZW5TU0xpc0F2YWlsYWJsZTsKICAgIGlmICgkb3BlblNTTGlzQXZhaWxhYmxlKSB7CiAgICAgICAgJG9wZW5TU0xPdXRwdXQgPSBzaGVsbF9leGVjKCJlY2hvICd7JGJhc2U2NEJpbmFyeX0nIHwgb3BlbnNzbCBhc24xcGFyc2UgLWluZm9ybSBQRU0gLWR1bXAgLWkgMj4mMSIpOwogICAgICAgIGVjaG8gIjx0ZCBjbGFzcz0nb3BlblNTTCc+PHByZT57JG9wZW5TU0xPdXRwdXR9PC9wcmU+PC90ZD4iOwogICAgfQogICAgZWNobyAnPC90cj4nOwp9Cgo/Pgo8IWRvY3R5cGUgaHRtbD4KPGh0bWw+CjxoZWFkPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkV4YW1wbGVzIG9mIGFsbCBhdmFpbGFibGUgUEhQQVNOMSBBU04gY2xhc3NlcyI+CiAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IkZyaWVkcmljaCBHcm/Dn2UiPgogICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjb21tb24uY3NzIi8+CiAgICA8dGl0bGU+UEhQQVNOMSBDbGFzc2VzPC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KICAgIDxoMT5FeGFtcGxlcyBmb3IgYWxsIGF2YWlsYWJsZSBQSFBBU04xIGNsYXNzZXM8L2gxPgoKICAgIDw/cGhwCiAgICBpZiAoJG9wZW5TU0xpc0F2YWlsYWJsZSA9PSBmYWxzZSkgewogICAgICAgIGVjaG8gIjxwIGNsYXNzPSdub3RpY2UnPk5vdGU6IE9wZW5TU0wgY291bGQgbm90IGJlIGZvdW5kIG9uIHRoaXMgc3lzdGVtLiBUaGlzIGlzIGFic29sdXRlbHkgbm8gcHJvYmxlbQogICAgICAgIGZvciBQSFBBU04xIGJ1dCBpdCBjb3VsZCBoYXZlIGJlZW4gdXNlZCB0byBzaG93IHlvdSB0aGF0IHRoZSBnZW5lcmF0ZWQgYmluYXJpZXMgYXJlIGluZGVlZCBjb3JyZWN0IDopPC9wPiI7CiAgICB9CiAgICA/PgoKICAgIDx0YWJsZT4KICAgICAgICA8dGg+Q2xhc3M8L3RoPgogICAgICAgIDx0aD50b1N0cmluZygpPC90aD4KICAgICAgICA8dGg+QmluYXJ5IChiYXNlNjQpPC90aD4KICAgICAgICA8dGg+QmluYXJ5IChoZXgpPC90aD4KCiAgICAgICAgPD9waHAKICAgICAgICAgICAgaWYgKCRvcGVuU1NMaXNBdmFpbGFibGUpIHsKICAgICAgICAgICAgICAgIGVjaG8gJzx0aD5PcGVuU1NMIGFzbjFwYXJzZSBvdXRwdXQ8L3RoPic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFByaW1pdGl2ZXMKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IEJvb2xlYW4odHJ1ZSkpOwogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgQm9vbGVhbihmYWxzZSkpOwogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgSW50ZWdlcigxMjM0NTYpKTsKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IEludGVnZXIoLTU0NikpOwogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgRW51bWVyYXRlZCgxKSk7CiAgICAgICAgICAgIHByaW50VmFyaWFibGVJbmZvKG5ldyBQcmludGFibGVTdHJpbmcoJ0hlbGxvIFdvcmxkJykpOwogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgTnVtZXJpY1N0cmluZygnMTIzNDU2JykpOwogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgQ2hhcmFjdGVyU3RyaW5nKCdGb28nKSk7CiAgICAgICAgICAgIHByaW50VmFyaWFibGVJbmZvKG5ldyBVVEY4U3RyaW5nKCdIZWxsbyDimaXimaXimaUgV29ybGQnKSk7CiAgICAgICAgICAgIC8vIHRoZXJlIGFyZSBtb3JlIHJlc3RyaWN0ZWQgY2hhcmFjdGVyIHN0cmluZyBjbGFzc2VzIGF2YWlsYWJsZQoKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IEJpdFN0cmluZygnMzA4MjAxMGEwMjgyMDEwMTAwOWUyYTcnKSk7CiAgICAgICAgICAgIHByaW50VmFyaWFibGVJbmZvKG5ldyBPY3RldFN0cmluZygneDAxMDIwMzA0QUUxMjMyMDBBMCcpKTsKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IE9iamVjdElkZW50aWZpZXIoT0lEOjpQS0NTOV9FTUFJTCkpOwogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgTnVsbE9iamVjdCgpKTsKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IFVUQ1RpbWUoJzIwMTItMDktMzAgMTQ6MzMnKSk7CiAgICAgICAgICAgIHByaW50VmFyaWFibGVJbmZvKG5ldyBHZW5lcmFsaXplZFRpbWUoJzIwMDgtMDctMDEgMjI6MzU6MTcuMDI0NTQwKzA2OjMwJykpOwoKICAgICAgICAgICAgLy8gQ29uc3RydWN0ZWQKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IFNlcXVlbmNlKAogICAgICAgICAgICAgICAgbmV3IE9iamVjdElkZW50aWZpZXIoT0lEOjpDT01NT05fTkFNRSksCiAgICAgICAgICAgICAgICBuZXcgUHJpbnRhYmxlU3RyaW5nKCdGcmllZHJpY2gnKQogICAgICAgICAgICApKTsKCiAgICAgICAgICAgIHByaW50VmFyaWFibGVJbmZvKG5ldyBTZXQoCiAgICAgICAgICAgICAgICBuZXcgT2JqZWN0SWRlbnRpZmllcihPSUQ6OkNPVU5UUllfTkFNRSksCiAgICAgICAgICAgICAgICBuZXcgUHJpbnRhYmxlU3RyaW5nKCdHZXJtYW55JykKICAgICAgICAgICAgKSk7CgogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgQXR0cmlidXRlVHlwZUFuZFZhbHVlKAogICAgICAgICAgICAgICAgT0lEOjpPUkdBTklaQVRJT05fTkFNRSwKICAgICAgICAgICAgICAgIG5ldyBQcmludGFibGVTdHJpbmcoJ015IE9yZ2FuaXphdGlvbicpCiAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUoCiAgICAgICAgICAgICAgICBPSUQ6OlJTQV9FTkNSWVBUSU9OLAogICAgICAgICAgICAgICAgbmV3IEludGVnZXIoNjIzNDIpCiAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IFJETlN0cmluZygKICAgICAgICAgICAgICAgIE9JRDo6Q09NTU9OX05BTUUsCiAgICAgICAgICAgICAgICAnSGVsbG8gV29ybGQnCiAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgLy8gWDUwOQogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgQ2VydGlmaWNhdGVTdWJqZWN0KAogICAgICAgICAgICAgICAgJ0ZyaWVkcmljaCBHcm9zc2UnLAogICAgICAgICAgICAgICAgJ2ZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tJywKICAgICAgICAgICAgICAgICdQSFBBU04xJywKICAgICAgICAgICAgICAgICdCZXJsaW4nLAogICAgICAgICAgICAgICAgJ0JlcmxpbicsCiAgICAgICAgICAgICAgICAnREUnLAogICAgICAgICAgICAgICAgJ0RldmVsb3BtZW50IERlcGFydG1lbnQnCiAgICAgICAgICAgICkpOwoKICAgICAgICAgICAgcHJpbnRWYXJpYWJsZUluZm8obmV3IFB1YmxpY0tleSgKICAgICAgICAgICAgICAgICcwMCAwMCAwMCAwMSAyMyAwMCAwMCAwMSAwMSAwMCBFNyA0MCBGMiA2OSAxNSBENSA0QSBERCAyNCBBMSBDMwogICAgICAgICAgICAgICAgIDBDIDkzIDM4IDAzIDFBIDQ5IDcwIEVCIDc2IEIwIEY1IDFCIEJGIDQyIDk3IEJBIEUxIEYzIDYxIENDIEUxCiAgICAgICAgICAgICAgICAgNjMgMEEgQkEgMEYgNjYgNkQgMzAgNEUgMzEgNjcgNjUgMzkgRTEgMkUgOTMgQTcgRTcgM0UgMUUgNzYgMTAKICAgICAgICAgICAgICAgICA4MSA1QSA0MSBDNiBERiAxMiAwNSA0NiBBQyA2MSBBOSAyOSBBMyBCRCAxQSAxNiAzNSAzOCBERiA3NSBGNgogICAgICAgICAgICAgICAgIDBBIDI1IEY3IDNBIEY1IEQzIEM2IEVCIDg0IDdEIDQwIEQ0IDFFIDU2IENBIDBCIDQ2IDI4IEY3IDc5IEQ2CiAgICAgICAgICAgICAgICAgMDggQkIgMUIgMDEgQzcgMkEgMTQgOTMgQjIgRjcgODkgQ0IgMTEgRjMgNEIgRTYgNUYgN0EgMkIgMjIgRjQKICAgICAgICAgICAgICAgICAxNCBDQiAzNiA0NyA0MCA4OSA0NSBGQyAxNCAwMyAxRCA4QiAzMSBBRiA0QyA1NyA2MyA3RCA4NyBGRCA5NQogICAgICAgICAgICAgICAgIDBDIEVEIDY0IEMxIEJGIDhGIEZDIEUyIDc2IDZDIDkwIEEzIDRGIDUwIDcyIDlEIEFCIDAxIDFFIDg0IDdBCiAgICAgICAgICAgICAgICAgNjMgOTUgOUEgMkUgMEUgNTkgRjEgQUYgQTkgRDAgNkUgQUIgOEUgNDUgOTYgODAgQUQgNTcgMjYgMDQgMkYKICAgICAgICAgICAgICAgICBCNyBCMCA0MSA2OSAyQiA3QSBCRCBGOSAyRiBGRSA2MCA5OSBBOSA4MSBGRiA5NCBBNSA4RSA1QiA3RiBBOAogICAgICAgICAgICAgICAgIEMwIDYzIDRCIEYzIDc5IEY0IEY3IDNDIDI3IDgxIEZGIDkwIDVDIEM2IDA0IEJDIEMyIEMxIDYyIDJFIDQ3CiAgICAgICAgICAgICAgICAgOEEgRUYgNkYgOTUgNTMgODkgOTkgMzQgN0MgNEMgQjQgQUUgQTAgRTggQUQgQzEgMDQgQjggQjYgRTIgMDIKICAgICAgICAgICAgICAgICBCQiA2NSA5MyAzOSA0MiBGOSBGRCA2OSAyMCBFMyBDRiBFRiA0OSBFOScKICAgICAgICAgICAgKSk7CgogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbyhuZXcgQWxnb3JpdGhtSWRlbnRpZmllcihPSUQ6OlNIQTFfV0lUSF9SU0FfU0lHTkFUVVJFKSk7CgogICAgICAgICAgICBwcmludFZhcmlhYmxlSW5mbygkY3NyID0gbmV3IENTUigKICAgICAgICAgICAgICAgICdGcmllZHJpY2ggR3Jvc3NlJywKICAgICAgICAgICAgICAgICdmcmllZHJpY2guZ3Jvc3NlQGdtYWlsLmNvbScsCiAgICAgICAgICAgICAgICAnUEhQQVNOMScsCiAgICAgICAgICAgICAgICAnQmVybGluJywKICAgICAgICAgICAgICAgICdCZXJsaW4nLAogICAgICAgICAgICAgICAgJ0RFJywKICAgICAgICAgICAgICAgICdEZXZlbG9wbWVudCBEZXBhcnRtZW50JywKICAgICAgICAgICAgICAgICczMDgyMDEwYTAyODIwMTAxMDA5ZTJhN2RlZmFlOTM3MjBjOTFjNDNjNDZmZjRhMWYyZThlZWY3OTQ5Mjg5ZTI4MWY3ODhmM2EwN2Q5Yjk0ZGEyNmZiMmU3MjEwMDljYWNlZGRkMGU2YjU5ZGFhNTk2ZGYyMGY4NzFmYzMwYTQzZjRiODA3OThmOTRmYTNkMTNjYjJkYjc5ZWI2ZDhmMDdiNDA2NWQwYjA5YTU0MTU2NGJhM2JhYTEyMDFlMjBlZTkyM2VhMTZiZTMxZmE3ODVjMzAwNjM1YzRlODgxZGY3YWNiNWI1MmM3YzNkOTIzMDY3OTAyY2M1NWU3N2MwMDY5NGYzMTlkMmI5ZTgxZWRiYmZlNzBlZjFhNDYyYWVmNDk2MGM1NjdmMzNhYTUyNjRhMDVmZGYyNGNkN2JjMzY5NDFjZDc3NDZmYjc2NzYzMWEyNDFiN2E5N2ZjNGNkYzQyYTY4NjkyYjkwNjQwNjQwMzU5OTM4MGM3NTg2Y2U2ZjIyZmFjMzQ5NDljYWYxMDcyYzcyNGJhNTM5N2U2NDQwZjk1N2UyNjc4YzNhNGJjOTIyNjhmZTY4MTVkNDFmYTIxMGFiNDUzNjRjMTFlMzczMWM2YzAzOTgzMmI1NGY1NGI1MWZkYWY2YWZiMzUxZTFkYTk3MjBiM2MzMjJmN2ZiYWVmYjcyZDk2ZDRjZTVlYzA3YjAyMDMwMTAwMDEnLAogICAgICAgICAgICAgICAgJzRhZGYyNzBkMzQ3MDQ3MTkyNTczY2YyNDVhOTRjZDJlNjk1OTRjMWNkYWMxZDdjOTlkN2VkNTg1NmM5MjZlZTYyYzY1MTg4ZjIxZDg5M2U2MzRiMjEzNTk1Y2M0NTY0ZDVhOGQzOWJlZDBjYTAxZTBiNDVlMzE4MmFiODkzMTBjMTI5MDE3ZjJhN2E2OGQ4NjAzNjk0ZGRjOGQxYzJlYmZlZTM5YjNiNWRmYzlkYmMyZGI2NjdhMDg5YjFiNTEzODZmMmNmN2VjNzAxNDBkMTg1YmFlNWMyZjNiMzE0OGI5ZWY2MTNjZTA2OGY5NGRiMTNhMjMwYjExMzNlNGI0YTQ4ZWM1YzhiNDA2NmQ2NGEyMTk5YzBjZmI2YzRkMGNmZTEwNWYyMWE4OWIyOTAwZDBhNWM4N2JlZjVlZGVkOTQxYmE5M2FlMWI3ZTg0YWFlYWJjYjQ2ZmE0YTM4NDRmZmM2ODNlYmI0ZWU4MDcxN2ZmNTFjYmE1ZDgyYWZlOWQyNjMzYjc2MGE2NjQ0OWU1N2UwNmQ3M2VlZWIxNTFiYzA1MGE2NjgyNTk5NmQ3ZjVlYzgyMWQzMTg5MWM2MjBhNjc3YzgyNzFkYjEzYmJjMjJmY2Y5MWUxYjdhYzhmNmYxMDllYjhlM2EyYzYxYTNjOGE0MzM2YjQwYTQ5OWUxNDA0JwogICAgICAgICAgICApKTsKICAgICAgICA/PgogICAgPC90YWJsZT4KPC9ib2R5Pgo8L2h0bWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/common.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGFibGUgewoJYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsJCn0KCnRoIHsKCXRleHQtYWxpZ246IGxlZnQ7CQp9Cgp0ZCB7Cglib3JkZXItdG9wOiBibGFjayAxcHggc29saWQ7CglwYWRkaW5nLXJpZ2h0OiAzMHB4OwkKfQoKdGQuQVNOY2xhc3MgewoJZm9udC13ZWlnaHQ6IGJvbGQ7Cgl3aWR0aDogMTUwcHg7CQp9Cgp0ZC5vcGVuU1NMIHsKCWJvcmRlci1sZWZ0OiBibGFjayAxcHggc29saWQ7CQp9CgpwLm5vdGljZSB7CgltYXJnaW4tYm90dG9tOiAzMHB4OwoJY29sb3I6IGdyYXk7Cn0KCi5yZWQgewoJY29sb3I6IHJlZDsKfQoKLm1vbm9zcGFjZSB7Cglmb250LWZhbWlseTogbW9ub3NwYWNlOwp9CgpwcmUgewoJbWFyZ2luOiA3cHgKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/getObjectIdentifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpyZXF1aXJlX29uY2UgX19ESVJfXy4nLy4uL3ZlbmRvci9hdXRvbG9hZC5waHAnOwoKdXNlIEZHXEFTTjFcT0lEOwoKZnVuY3Rpb24gZWNob09JRFJvdygkb2lkU3RyaW5nKQp7CiAgICAkb2lkTmFtZSA9IE9JRDo6Z2V0TmFtZSgkb2lkU3RyaW5nKTsKICAgIGVjaG8gIjx0cj48dGQ+eyRvaWRTdHJpbmd9PC90ZD48dGQ+eyRvaWROYW1lfTwvdGQ+PC90cj4iOwp9Cgo/Pgo8IWRvY3R5cGUgaHRtbD4KPGh0bWwgbGFuZz0iZW4iPgo8aGVhZD4KICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgPHRpdGxlPlBIUEFTTjEgRXhhbXBsZXM8L3RpdGxlPgogIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJIb3d0byBnZXQgdGhlIG5hbWUgb2Ygb2JqZWN0IGlkZW50aWZpZXJzIHdpdGggUEhQQVNOMSI+CiAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJGcmllZHJpY2ggR3Jvw59lIj4KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPnRkIHtwYWRkaW5nOiAwIDEwcHg7fTwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+CiAgICA8dGFibGUgYm9yZGVyPTE+CiAgICAgICAgPD9waHAKICAgICAgICAgICAgZWNob09JRFJvdygnMS4yLjg0MC4xMTM1NDkuMS4xLjEnKTsKICAgICAgICAgICAgZWNob09JRFJvdygnMS4yLjg0MC4xMTM1NDkuMS4xLjUnKTsKICAgICAgICAgICAgZWNob09JRFJvdygnMi41LjI5LjM3Jyk7CiAgICAgICAgPz4KICAgIDwvdGFibGU+CjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/hexdump.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFZpZXcgYW55IHN0cmluZyBhcyBhIGhleGR1bXAuCiAqCiAqIERJU0NMT1NVUkU6IFRoaXMgc2NyaXB0IGhhcyBiZWVuIHRha2VuIGZyb20gaHR0cDovL2FpZGFubGlzdGVyLmNvbS8yMDA0LzA0L3ZpZXdpbmctYmluYXJ5LWRhdGEtYXMtYS1oZXhkdW1wLWluLXBocAogKgogKiBUaGlzIGlzIG1vc3QgY29tbW9ubHkgdXNlZCB0byB2aWV3IGJpbmFyeSBkYXRhIGZyb20gc3RyZWFtcwogKiBvciBzb2NrZXRzIHdoaWxlIGRlYnVnZ2luZywgYnV0IGNhbiBiZSB1c2VkIHRvIHZpZXcgYW55IHN0cmluZwogKiB3aXRoIG5vbi12aWV3YWJsZSBjaGFyYWN0ZXJzLgogKgogKiBAdmVyc2lvbiAgICAgMS4zLjIKICoKICogQGF1dGhvciAgICAgIEFpZGFuIExpc3RlciA8YWlkYW5AcGhwLm5ldD4KICogQGF1dGhvciAgICAgIFBldGVyIFdhbGxlciA8aXJpZHVtQHBocC5uZXQ+CiAqCiAqIEBsaW5rICAgICAgICBodHRwOi8vYWlkYW5saXN0ZXIuY29tLzIwMDQvMDQvdmlld2luZy1iaW5hcnktZGF0YS1hcy1hLWhleGR1bXAtaW4tcGhwLwogKgogKiBAcGFyYW0gICAgICAgc3RyaW5nICRkYXRhIFRoZSBzdHJpbmcgdG8gYmUgZHVtcGVkCiAqIEBwYXJhbSAgICAgICBib29sICRodG1sb3V0cHV0IFNldCB0byBmYWxzZSBmb3Igbm9uLUhUTUwgb3V0cHV0CiAqIEBwYXJhbSAgICAgICBib29sICR1cHBlcmNhc2UgU2V0IHRvIHRydWUgZm9yIHVwcGVyY2FzZSBoZXgKICogQHBhcmFtICAgICAgIGJvb2wgJHJldHVybiBTZXQgdG8gdHJ1ZSB0byByZXR1cm4gdGhlIGR1bXAKICoKICogQHJldHVybiBzdHJpbmcKICovCmZ1bmN0aW9uIGhleGR1bXAoJGRhdGEsICRodG1sb3V0cHV0ID0gdHJ1ZSwgJHVwcGVyY2FzZSA9IGZhbHNlLCAkcmV0dXJuID0gZmFsc2UpCnsKICAgIC8vIEluaXQKICAgICRoZXhpICAgPSAnJzsKICAgICRhc2NpaSAgPSAnJzsKICAgICRkdW1wICAgPSAoJGh0bWxvdXRwdXQgPT09IHRydWUpID8gJzxwcmU+JyA6ICcnOwogICAgJG9mZnNldCA9IDA7CiAgICAkbGVuICAgID0gc3RybGVuKCRkYXRhKTsKCiAgICAvLyBVcHBlciBvciBsb3dlciBjYXNlIGhleGFkZWNpbWFsCiAgICAkeCA9ICgkdXBwZXJjYXNlID09PSBmYWxzZSkgPyAneCcgOiAnWCc7CgogICAgLy8gSXRlcmF0ZSBzdHJpbmcKICAgIGZvciAoJGkgPSAkaiA9IDA7ICRpIDwgJGxlbjsgJGkrKykgewogICAgICAgIC8vIENvbnZlcnQgdG8gaGV4aWRlY2ltYWwKICAgICAgICAkaGV4aSAuPSBzcHJpbnRmKCIlMDIkeCAiLCBvcmQoJGRhdGFbJGldKSk7CgogICAgICAgIC8vIFJlcGxhY2Ugbm9uLXZpZXdhYmxlIGJ5dGVzIHdpdGggJy4nCiAgICAgICAgaWYgKG9yZCgkZGF0YVskaV0pID49IDMyKSB7CiAgICAgICAgICAgICRhc2NpaSAuPSAoJGh0bWxvdXRwdXQgPT09IHRydWUpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWxlbnRpdGllcygkZGF0YVskaV0pIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhWyRpXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkYXNjaWkgLj0gJy4nOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIGV4dHJhIGNvbHVtbiBzcGFjaW5nCiAgICAgICAgaWYgKCRqID09PSA3KSB7CiAgICAgICAgICAgICRoZXhpICAuPSAnICc7CiAgICAgICAgICAgICRhc2NpaSAuPSAnICc7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgcm93CiAgICAgICAgaWYgKCsrJGogPT09IDE2IHx8ICRpID09PSAkbGVuIC0gMSkgewogICAgICAgICAgICAvLyBKb2luIHRoZSBoZXhpIC8gYXNjaWkgb3V0cHV0CiAgICAgICAgICAgICRkdW1wIC49IHNwcmludGYoIiUwNCR4ICAlLTQ5cyAgJXMiLCAkb2Zmc2V0LCAkaGV4aSwgJGFzY2lpKTsKCiAgICAgICAgICAgIC8vIFJlc2V0IHZhcnMKICAgICAgICAgICAgJGhleGkgICA9ICRhc2NpaSA9ICcnOwogICAgICAgICAgICAkb2Zmc2V0ICs9IDE2OwogICAgICAgICAgICAkaiAgICAgID0gMDsKCiAgICAgICAgICAgIC8vIEFkZCBuZXdsaW5lCiAgICAgICAgICAgIGlmICgkaSAhPT0gJGxlbiAtIDEpIHsKICAgICAgICAgICAgICAgICRkdW1wIC49ICJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLy8gRmluaXNoIGR1bXAKICAgICRkdW1wIC49ICRodG1sb3V0cHV0ID09PSB0cnVlID8KICAgICAgICAgICAgICAgICc8L3ByZT4nIDoKICAgICAgICAgICAgICAgICcnOwogICAgJGR1bXAgLj0gIlxuIjsKCiAgICAvLyBPdXRwdXQgbWV0aG9kCiAgICBpZiAoJHJldHVybiA9PT0gZmFsc2UpIHsKICAgICAgICBlY2hvICRkdW1wOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJGR1bXA7CiAgICB9CiAgICByZXR1cm4gbnVsbDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDx0aXRsZT5QSFBBU04xIEV4YW1wbGVzPC90aXRsZT4KICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iRXhhbXBsZXMgZm9yIHRoZSBQSFBBU04xIEFQSSI+CiAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJGcmllZHJpY2ggR3Jvw59lIj4KPC9oZWFkPgo8Ym9keT4KCUN1cnJlbnRseSB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFyZSBhdmFpbGFibGU6Cgk8dWw+CgkJPGxpPjxhIGhyZWY9ImFsbENsYXNzZXMucGhwIj5BbGwgYXZhaWxhYmxlIEFTTjEgY2xhc3NlcyBpbiBhY3Rpb248L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0icGFyc2VCaW5hcnkucGhwIj5Ib3d0byBwYXJzZSBiaW5hcnkgZGF0YTwvYT48L2xpPgoJCTxsaT48YSBocmVmPSJnZXRPYmplY3RJZGVudGlmaWVyLnBocCI+SG93dG8gZ2V0IHRoZSBuYW1lIG9mIG9iamVjdCBpZGVudGlmZXJzPC9hPjwvbGk+Cgk8L3VsPgo8L2JvZHk+CjwvaHRtbD4=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/Issue14.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpyZXF1aXJlX29uY2UgX19ESVJfXy4nLy4uL3ZlbmRvci9hdXRvbG9hZC5waHAnOwpyZXF1aXJlX29uY2UgJ3NoYXJlZC5waHAnOwoKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2N0ZXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCiRiYXNlNjQgPSAnTUlJSU5UQ0NCaDJnQXdJQkFnSVFiVlZKYzEwQzdVVWpmWVJIUS8vN25UQU5CZ2txaGtpRzl3MEJBUXNGQURCMApNUXN3Q1FZRFZRUUdFd0pDVWpFVE1CRUdBMVVFQ2hNS1NVTlFMVUp5WVhOcGJERXRNQ3NHQTFVRUN4TWtRMlZ5CmRHbHphV2R1SUVObGNuUnBabWxqWVdSdmNtRWdSR2xuYVhSaGJDQlRMa0V1TVNFd0h3WURWUVFERXhoQlF5QkQKWlhKMGFYTnBaMjRnVFhWc2RHbHdiR0VnUnpVd0hoY05NVEl3TlRJME1EQXdNREF3V2hjTk1UTXdOVEl6TWpNMQpPVFU1V2pDQndERUxNQWtHQTFVRUJoTUNRbEl4RXpBUkJnTlZCQW9VQ2tsRFVDMUNjbUZ6YVd3eElqQWdCZ05WCkJBc1VHVUYxZEdWdWRHbGpZV1J2SUhCdmNpQkJVaUJFWVhOamFHa3hHekFaQmdOVkJBc1VFa0Z6YzJsdVlYUjEKY21FZ1ZHbHdieUJCTVRFVk1CTUdBMVVFQ3hRTVNVUWdMU0F6TVRZek5qQXdNUnd3R2dZRFZRUURFeE5HYVcxaApkR1ZqSUZSbGVIUnBiQ0JNZEdSaE1TWXdKQVlKS29aSWh2Y05BUWtCRmhkbVpYSnVZVzVrYjBCbWFXMWhkR1ZqCkxtTnZiUzVpY2pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT3FOQ0dyTkYzYVYKK2xmSW1uMmppN1NzeVVid3F5ZGRkMkdSblpCVXYzbE9CUTlEaFhxK1lYMXFqa2IvRWdHd0M5RWhJZXJtajNYdwpTWjRQak93ZXViWEFWWjhCWTJDcmpaaGpPT1FScTVJS3ZicVN0YnNZU0VPdk95VmZic0R1WWRyYWxNNlNKcHlXCndKUmRqVHByYktVQVJVMmZKQkxKZ2lHR3lJd2gwS3FBSWhwM09jd0NXOXQ0QjVSVDAxZmNtUGE2aGhVODA4ZFEKSmdxeWtBMWk4eWxRanRYemc1MnRpblVPbDZ6V1paeHhrZzV5OWw3M0xmMTRlREZIY25JNGxGdjRrUzNqa2RrOAptd3lsbDJLMG5RWCthTWNsaThhTjNLN0MvTGo0VlFJV3VHYXJWTmZ6d2czd1AzV3p6T1MrZ28wVUZaOFpTeTUyCjNrcGZubHNOQkswQ0F3RUFBYU9DQTNRd2dnTndNSUc2QmdOVkhSRUVnYkl3Z2ErZ1BRWUZZRXdCQXdTZ05BUXkKTWpBeE1ERTVOVGt3TlRJeU5UVXpOemc0TURBd01EQXdNREF3TURBd01EQXdNREF3TURnNE56UXpOeko0YzNOdwpVMUNnSVFZRllFd0JBd0tnR0FRV1JtVnlibUZ1Wkc4Z1NtOXpaU0JMWVdseVlXeHNZYUFaQmdWZ1RBRURBNkFRCkJBNDFPRGN4TmpVeU16QXdNREV4T2FBWEJnVmdUQUVEQjZBT0JBd3dNREF3TURBd01EQXdNRENCRjJabGNtNWgKYm1SdlFHWnBiV0YwWldNdVkyOXRMbUp5TUFrR0ExVWRFd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVuVkRQdmY4awp5cSt4TStzWDRrSjZqbWtxamxNd0RnWURWUjBQQVFIL0JBUURBZ1hnTUlHSkJnTlZIU0FFZ1lFd2Z6QjlCZ1pnClRBRUNBUXN3Y3pCeEJnZ3JCZ0VGQlFjQ0FSWmxhSFIwY0RvdkwybGpjQzFpY21GemFXd3VZMlZ5ZEdsemFXZHUKTG1OdmJTNWljaTl5WlhCdmMybDBiM0pwYnk5a2NHTXZRVU5mUTJWeWRHbHphV2R1WDAxMWJIUnBjR3hoTDBSUQpRMTlCUTE5RFpYSjBhVk5wWjI1TmRXeDBhWEJzWVM1d1pHWXdnZ0VsQmdOVkhSOEVnZ0VjTUlJQkdEQmNvRnFnCldJWldhSFIwY0RvdkwybGpjQzFpY21GemFXd3VZMlZ5ZEdsemFXZHVMbU52YlM1aWNpOXlaWEJ2YzJsMGIzSnAKYnk5c1kzSXZRVU5EWlhKMGFYTnBaMjVOZFd4MGFYQnNZVWMxTDB4aGRHVnpkRU5TVEM1amNtd3dXNkJab0ZlRwpWV2gwZEhBNkx5OXBZM0F0WW5KaGMybHNMbTkxZEhKaGJHTnlMbU52YlM1aWNpOXlaWEJ2YzJsMGIzSnBieTlzClkzSXZRVU5EWlhKMGFYTnBaMjVOZFd4MGFYQnNZVWMxTDB4aGRHVnpkRU5TVEM1amNtd3dXNkJab0ZlR1ZXaDAKZEhBNkx5OXlaWEJ2YzJsMGIzSnBieTVwWTNCaWNtRnphV3d1WjI5MkxtSnlMMnhqY2k5RFpYSjBhWE5wWjI0dgpRVU5EWlhKMGFYTnBaMjVOZFd4MGFYQnNZVWMxTDB4aGRHVnpkRU5TVEM1amNtd3dIUVlEVlIwbEJCWXdGQVlJCkt3WUJCUVVIQXdJR0NDc0dBUVVGQndNRU1JR2dCZ2dyQmdFRkJRY0JBUVNCa3pDQmtEQmtCZ2dyQmdFRkJRY3cKQW9aWWFIUjBjRG92TDJsamNDMWljbUZ6YVd3dVkyVnlkR2x6YVdkdUxtTnZiUzVpY2k5eVpYQnZjMmwwYjNKcApieTlqWlhKMGFXWnBZMkZrYjNNdlFVTmZRMlZ5ZEdsemFXZHVYMDExYkhScGNHeGhYMGMxTG5BM1l6QW9CZ2dyCkJnRUZCUWN3QVlZY2FIUjBjRG92TDI5amMzQXVZMlZ5ZEdsemFXZHVMbU52YlM1aWNqQU5CZ2txaGtpRzl3MEIKQVFzRkFBT0NBZ0VBeWZkS0lLRExHWnlPaEFzeWNBZ0o3Ulp5bjQvMnROMjliZCtyTHd0a3ZwLzlYSkdSQ0FvYgpma0xVOFVBQ0d6YlZIVC9iQjdzT0tJaUh2cDhDZ0d5b1UvMXZlbzVhMXlHTUZRb2JRV0djZEVZQk9kKzZBeDZVCkZFT2MrVGkrTHNYc1VBNXRSYnpUd2ZYSkZGT0lnRkRnclhsN1Y0SkdqU0kzR2R5b2lFRUNSOU9mTS9VRll0ci8KcEQxOTRYaDZHMGxTQ3VQOXhPS3BPSjdxazI0bWNmT2JjR3hvb014bWt0a3QwYmV2eng1dzg0UnRYSmZidWJlKwpwNm83SlAwNlQ2SkpUR2ZJVWZOS1lVOHdKNkNWOWVVSEVNRExITW9INnduWUs3ZDhySGNBYlNvVEpHTUZsU1laCk9xSnJXQWJLQVBqcmFGTmVOYUg2NzV1Ly9DazEyN2tKVmlkY3VSd3RrTFpWL09JbFFhdy80UVNwOTBRV1FPUWcKQXNPV0M5K2g4di9SY0NZVEpwV00yMk1DcTNYazY3bnorbVhPOGU3TEtwekhFaDJzalgzZ2tmdzRoODB6WWZUNwprVHNOWFZkeEFIWGlJYWhLTmVSVVQ4ZkdoeHZ5T0EwUnFBWFFCVWFPeUx5R1lXUko3SXM1SXFBQVU2WGlCSFllCm9KM3Y4QlRHWXpJSzJVZDVkWjIzeXpCcDJlamRRelFYMUVUcEpvRWRnRUxUb0htZkJYVGtJKzduZTU5d1NSa0gKYmVRWG9LNXkwVTNnaDF2SXovNTNHRzBRTXVDdnE5cjl4VE1FUmNGSmNwUVV4SjJSand4SUZIbElGYk53Q2VpVwpJM0RtWmFYZFIxNjlrUm9QSXFrVjNRSVJFcy95SEJ2a3hYcndEdDQxNnN0VW5ROEtzeEFFYXRFPSc7Cgp0cnkgewogICAgJGJpbmFyeURhdGEgPSBiYXNlNjRfZGVjb2RlKCRiYXNlNjQpOwogICAgLy9oZXhkdW1wKCRiaW5hcnlEYXRhLCBmYWxzZSk7CgogICAgJHJvb3RPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgLy9wcmludE9iamVjdCgkcm9vdE9iamVjdCk7CgogICAgLy8gZmlyc3QgbmF2aWdhdGUgdG8gdGhlIGNlcnRpZmljYXRlIGV4dGVuc2lvbnMKICAgIC8vIChzZWUgSVRVLVQgWC41MDkgc2VjdGlvbiA3ICJQdWJsaWMta2V5cyBhbmQgcHVibGljLWtleSBjZXJ0aWZpY2F0ZXMiIGZvciBjZXJ0IHN0cnVjdHVyZSkKICAgIC8qIEB2YXIgU2VxdWVuY2UgJHJvb3RPYmplY3QgKi8KICAgIGFzc2VydCgkcm9vdE9iamVjdC0+Z2V0VHlwZSgpID09IElkZW50aWZpZXI6OlNFUVVFTkNFKTsKICAgICR0b3BMZXZlbENvbnRhaW5lciA9ICRyb290T2JqZWN0LT5nZXRDaGlsZHJlbigpOwogICAgJGNlcnRpZmljYXRlSW5mbyA9ICR0b3BMZXZlbENvbnRhaW5lclswXTsKCiAgICAvKiBAdmFyIFNlcXVlbmNlICRjZXJ0aWZpY2F0ZUluZm8gKi8KICAgIGFzc2VydCgkY2VydGlmaWNhdGVJbmZvLT5nZXRUeXBlKCkgPT0gSWRlbnRpZmllcjo6U0VRVUVOQ0UpOwoKICAgIC8vIHRoZXJlIG5lZWQgdG8gYmUgYXQgbGVhc3QgOCBjaGlsZCBlbGVtZW50cyBpZiB0aGUgY2VydGlmaWNhdGUgZXh0ZW5zaW9ucyBmaWVsZCBpcyBwcmVzZW50CiAgICBhc3NlcnQoJGNlcnRpZmljYXRlSW5mby0+Z2V0TnVtYmVyb2ZDaGlsZHJlbigpID49IDgpOwogICAgJGNlcnRJbmZvRmllbGRzID0gJGNlcnRpZmljYXRlSW5mby0+Z2V0Q2hpbGRyZW4oKTsKICAgICRjZXJ0RXh0ZW5zaW9ucyA9ICRjZXJ0SW5mb0ZpZWxkc1s3XTsKCiAgICAvLyBjaGVjayBpZiB0aGlzIGlzIHJlYWxseSB0aGUgY2VydGlmaWNhdGUgZXh0ZW5zaW9ucyBzZXF1ZW5jZQogICAgLyogQHZhciBcRkdcQVNOMVxPYmplY3QgJGNlcnRFeHRlbnNpb25zICovCiAgICAkY2VydEV4dGVuc2lvbnNUeXBlID0gJGNlcnRFeHRlbnNpb25zLT5nZXRUeXBlKCk7CiAgICBhc3NlcnQoSWRlbnRpZmllcjo6aXNDb250ZXh0U3BlY2lmaWNDbGFzcygkY2VydEV4dGVuc2lvbnNUeXBlKSk7CiAgICBhc3NlcnQoSWRlbnRpZmllcjo6Z2V0VGFnTnVtYmVyKCRjZXJ0RXh0ZW5zaW9ucy0+Z2V0VHlwZSgpKSA9PSAzKTsKCiAgICAvLyB0aGlzIHNob3VsZCBjb250YWluIGEgc2VxdWVuY2Ugb2YgZXh0ZW5zaW9ucwogICAgJGNlcnRFeHRlbnNpb25zID0gJGNlcnRFeHRlbnNpb25zLT5nZXRGaXJzdENoaWxkKCk7CiAgICBhc3NlcnQoJGNlcnRFeHRlbnNpb25zLT5nZXRUeXBlKCkgPT0gSWRlbnRpZmllcjo6U0VRVUVOQ0UpOwoKICAgIC8vIG5vdyBjaGVjayBhbGwgZXh0ZW5zaW9ucyBhbmQgc2VhcmNoIGZvciB0aGUgU0FOCiAgICAvKiogQHZhciBcRkdcQVNOMVxPYmplY3QgJGV4dGVuc2lvblNlcXVlbmNlICovCiAgICBmb3JlYWNoICgkY2VydEV4dGVuc2lvbnMgYXMgJGV4dGVuc2lvblNlcXVlbmNlKSB7CiAgICAgICAgYXNzZXJ0KCRleHRlbnNpb25TZXF1ZW5jZS0+Z2V0VHlwZSgpID09IElkZW50aWZpZXI6OlNFUVVFTkNFKTsKICAgICAgICBhc3NlcnQoJGV4dGVuc2lvblNlcXVlbmNlLT5nZXROdW1iZXJvZkNoaWxkcmVuKCkgPj0gMik7CgogICAgICAgICRleHRlbnNpb25TZXF1ZW5jZUNoaWxkcmVuID0gJGV4dGVuc2lvblNlcXVlbmNlLT5nZXRDaGlsZHJlbigpOwogICAgICAgICRvYmplY3RJZGVudGlmaWVyID0gJGV4dGVuc2lvblNlcXVlbmNlQ2hpbGRyZW5bMF07CiAgICAgICAgLyogQHZhciBPYmplY3RJZGVudGlmaWVyICRvYmplY3RJZGVudGlmaWVyICovCiAgICAgICAgYXNzZXJ0KCRvYmplY3RJZGVudGlmaWVyLT5nZXRUeXBlKCkgPT0gSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIpOwoKICAgICAgICBpZiAoJG9iamVjdElkZW50aWZpZXItPmdldENvbnRlbnQoKSA9PSBPSUQ6OkNFUlRfRVhUX1NVQkpFQ1RfQUxUX05BTUUpIHsKICAgICAgICAgICAgLy8gbm93IHdlIGhhdmUgdGhlIHdhbnRlZCBvY3RldCBzdHJpbmcKICAgICAgICAgICAgJG9jdGV0U3RyaW5nID0gJGV4dGVuc2lvblNlcXVlbmNlQ2hpbGRyZW5bMV07CiAgICAgICAgICAgIC8qIEB2YXIgT2N0ZXRTdHJpbmcgJG9jdGV0U3RyaW5nICovCiAgICAgICAgICAgICRvY3RldFN0cmluZ0JpbmFyeSA9ICRvY3RldFN0cmluZy0+Z2V0QmluYXJ5Q29udGVudCgpOwoKICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB5b3UgbWF5IHdhbnQgdG8gY3JlYXRlIHRoZSBzZXF1ZW5jZSBmcm9tIHRoZSBiaW5hcnkgdmFsdWUgb2YKICAgICAgICAgICAgLy8gdGhlIG9jdGV0IHN0cmluZyBhbmQgcGFyc2UgaXRzIHN0cnVjdHVyZSBsaWtlIHdlIGRpZCBzbyBmYXIuCiAgICAgICAgICAgIC8vIEhvd2V2ZXIgYSBtb3JlIGdlbmVyYWwgYXBwcm9hY2ggd291bGQgYmUgdG8gdW5kZXJzdGFuZCB0aGUgZm9ybWF0IG9mIHRoZQogICAgICAgICAgICAvLyBjb250YWluZWQgU0FOIGZpZWxkcyBhbmQgaW1wbGVtZW50IHRoZW0gaW4gU3ViamVjdEFsdGVybmF0aXZlTmFtZXMuCiAgICAgICAgICAgICRzZXF1ZW5jZSA9IFNlcXVlbmNlOjpmcm9tQmluYXJ5KCRvY3RldFN0cmluZ0JpbmFyeSk7CiAgICAgICAgICAgIGVjaG8gJ1RoaXMgaXMgdGhlIHBhcnNlZCBjb250ZW50IG9mIHRoZSBTQU4gY2VydGlmaWNhdGUgZXh0ZW5zaW9uIGZpZWxkIHNvIGZhcjonLlBIUF9FT0w7CiAgICAgICAgICAgIHByaW50T2JqZWN0KCRzZXF1ZW5jZSk7CgogICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGRvZXMgbm90IHdvcmsgeWV0IGJlY2F1c2UgUEhQQVNOMSBTQW4gZG9lcyBvbmx5IHN1cHBvcnQgRE5TIGFuZCBJUAogICAgICAgICAgICAvL1N1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOjpmcm9tQmluYXJ5KCRvY3RldFN0cmluZ0JpbmFyeSk7CiAgICAgICAgfQogICAgfQp9IGNhdGNoIChcRXhjZXB0aW9uICRleGNlcHRpb24pIHsKICAgIGVjaG8gJ1tFUlJPUl0gQ2F1Z2h0IGV4Y2VwdGlvbjonLlBIUF9FT0wuJGV4Y2VwdGlvbi0+Z2V0TWVzc2FnZSgpLlBIUF9FT0w7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/Issue29.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgp1c2UgRkdcQVNOMVxPYmplY3Q7CgpyZXF1aXJlX29uY2UgX19ESVJfXy4nLy4uL3ZlbmRvci9hdXRvbG9hZC5waHAnOwpyZXF1aXJlX29uY2UgJ3NoYXJlZC5waHAnOwoKJGhleCA9ICdhMDJiMzAyOTA2MDkyYTg2NDg4NmY3MGQwMTA5MGUzMTFjMzAxYTMwMTgwNjAzNTUxZDExMDQxMTMwMGY4MjBkNjM2ZjcyNzY2NTczNzA2MTYzNjUyZTY0NjUnOwokYXNuID0gT2JqZWN0Ojpmcm9tQmluYXJ5KGhleDJiaW4oJGhleCkpOwoKcHJpbnRPYmplY3QoJGFzbik7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/Issue43.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgp1c2UgRkdcQVNOMVxFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcRW51bWVyYXRlZDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCnJlcXVpcmVfb25jZSBfX0RJUl9fLicvLi4vdmVuZG9yL2F1dG9sb2FkLnBocCc7CgovLyAkZGF0YSBoYXMgYmVlbiBnZW5lcmF0ZWQgdXNpbmcgaHR0cHM6Ly9wa2lqcy5vcmcvZXhhbXBsZXMvT0NTUF9yZXNwX2NvbXBsZXhfZXhhbXBsZS5odG1sCiRkYXRhID0gJ01JSUVYZ29CQUtDQ0JGY3dnZ1JUQmdrckJnRUZCUWN3QVFFRWdnUkVNSUlFUURCZW9TQXdIakVjTUFrR0ExVUUKQmhNQ1VsVXdEd1lEVlFRREhnZ0FWQUJsQUhNQWRCZ1BNakF4TlRBM01UWXhOelUwTWpGYU1Da3dKekFTTUFjRwpCU3NPQXdJYUJBRUJCQUVCQWdFQmdBQVlEekl3TVRVd056RTJNVGMxTkRJeFdqQUxCZ2txaGtpRzl3MEJBUVVECmdnRUJBRzVCMXhPbmhnemdwc25zcFdkOWM0ZUxJZU9ZMVhYbDdxMkRVTzJrR2ppNFdiQlh0V0RNRXY3UVFPOS8KOGRldm15V05URmxrU2NiaGlNUElFZm9FUzZBeVc4bFp1OWFPTjJ0TXNzZ2ovRXY5K0grQTJaMldIUWRlRHR2NwpBUzJtWWEvN2UzVWNzYjYzcEFtQmN4Z0RZNTVlSHdtaXZCZlpJV0Y2UmpienVKMFV4ejZOdnJWRUhsV3oyS0UwCjFuLzdxYmN3Ykh4OG51MXMvSWRzd0ZHOWllUG01c1RzSFBzYnZzTVE1WmZrdmt1TC90NVdsTE9ObFJZdW5PQTQKTnl0ZjJsVUlaYlp6bkIwZHZRRzR2bTFGOUlRRWN2MVYwYVUwRC9aVTgxSTdsU1BsUEV2L0RNVEVvMXZlUFRadgpHdjhTMUsra2VERC9iZndNMjJkNjYzVmZtdCtnZ2dMS01JSUN4akNDQXNJd2dnR3NvQU1DQVFJQ0FRRXdDd1lKCktvWklodmNOQVFFRk1CNHhIREFKQmdOVkJBWVRBbEpWTUE4R0ExVUVBeDRJQUZRQVpRQnpBSFF3SGhjTk1UTXcKTWpBeE1EQXdNREF3V2hjTk1UWXdNakF4TURBd01EQXdXakFlTVJ3d0NRWURWUVFHRXdKU1ZUQVBCZ05WQkFNZQpDQUJVQUdVQWN3QjBNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXNGbHovM3lsCm1rKzh1UDQveDYxVVdCbGlxVzA4LzFqTUE4M1FqMnl1Q0F2aE1obXVxOEJ2eVdQNGpuWG94VHkzaVRaRkRYSWoKNVZnMkZsSFduYTBUTXNVNWpsbXY4Vy9tdTlVMytxN2kxKzMzOUpyRVprckRMTkRwSjIzZ3FLQmdDMU9hTkg3Kwp2aWNCUm1vUDVrajJYNjJYTWFLVDVUTUZCWnpUdFNGN0lhVWp0OVNWWFFqRzNhSEl5N0QxbU95cHZFdzRMU1MrClJ2dkpUZXpTUWVDb0xwWDdIemlSbm9WVU5rSldaSEwyd0c1cmIvU0p6cFh3SGtSYTdSMjUwdk44VEZ0U1NzcDQKWVh6SzZha3MvcWt4UkoxVWtCTFVBWmxSYXNVRCt6dThneVRJejBzTmdGck90eDhFT3pqWlJpSi92QmlWT244OApCcmY0aTBEK2ZWWG1KUUlEQVFBQm93OHdEVEFMQmdOVkhROEVCQU1DQUFJd0N3WUpLb1pJaHZjTkFRRUZBNElCCkFRQmZ1YktQVHZtREdyRHhvcUNiUHdGb1BSQzBTVHdQTDJHVjhmNXNEL1NieWMwTm9KZHlnVU8yRHZxdUdHbjUKNlVKQ2ZMbzF1NkRuNHp1dURzM202aWY4NkhUcEFmOVozYTcyb2syVG9yL05Gd1l0K3ZET3JGWTVGNGJYRFprZgp1NHp1RExtanBqMjZEazR0ZTNCVm9oc0xUWGJ2SjVhL1RUMlZhbndOT3l4ODVsWFB4eTNWOFJyMUF3bG1IWm96CkREYlVHYmUvbm9VREpDZ01qdmFLS3ZMeWtJaEljVytnNlc3U09jS1JmbHc1SDhrekR2ODE2WEZPRFNDM1gxVXcKbzNhVnk5ZHUvMG1IK2c0SHZ5VlZwbE85MHRkb0hEMWdIVU1ad3VlbjRkYlR6aFd2NGR0TEZlbFdNNWxHV2JMRQpXbjdrSmdoY2xnSXh2MTBua0d5ZnJvd3QnOwoKLy8gT0NTUCByZXNwb25zZSBzdGF0dXMgYWNjb3JkaW5nIHRvCi8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTYwI3NlY3Rpb24tNC4yLjEKJHZhbGlkUmVzcG9uc2VTdGF0dXNlcyA9IGFycmF5KAogICAgMCA9PiAnUmVzcG9uc2UgaGFzIHZhbGlkIGNvbmZpcm1hdGlvbnMnLAogICAgMSA9PiAnSWxsZWdhbCBjb25maXJtYXRpb24gcmVxdWVzdCcsCiAgICAyID0+ICdJbnRlcm5hbCBlcnJvciBpbiBpc3N1ZXInLAogICAgMyA9PiAnVHJ5IGFnYWluIGxhdGVyJywKICAgIC8vICg0KSBpcyBub3QgdXNlZAogICAgNSA9PiAnTXVzdCBzaWduIHRoZSByZXF1ZXN0JywKICAgIDYgPT4gJ1JlcXVlc3QgdW5hdXRob3JpemVkJywKKTsKCiRvY3NwUmVzcG9uc2UgPSBTZXF1ZW5jZTo6ZnJvbUJpbmFyeShiYXNlNjRfZGVjb2RlKCRkYXRhKSk7CgovKiBAdmFyIEVudW1lcmF0ZWQgJHJlc3BvbnNlU3RhdHVzICovCiRlbGVtZW50cyA9ICRvY3NwUmVzcG9uc2UtPmdldENoaWxkcmVuKCk7CiRyZXNwb25zZVN0YXR1cyA9ICRlbGVtZW50c1swXTsKJHJlc3BvbnNlU3RhdHVzQ29kZSA9ICRyZXNwb25zZVN0YXR1cy0+Z2V0Q29udGVudCgpOwoKZWNobyBQSFBfRU9MOwplY2hvICJPQ1NQIHJlc3BvbnNlIHN0YXR1czogJHJlc3BvbnNlU3RhdHVzQ29kZSAoeyR2YWxpZFJlc3BvbnNlU3RhdHVzZXNbJHJlc3BvbnNlU3RhdHVzQ29kZV19KSIuUEhQX0VPTDsKCi8qKiBAdmFyIEV4cGxpY2l0bHlUYWdnZWRPYmplY3QgJHJlc3BvbnNlQnl0ZXMgKi8KJHJlc3BvbnNlQnl0ZXMgPSAkZWxlbWVudHNbMV07CgovKiogQHZhciBTZXF1ZW5jZSAkcmVzcG9uc2VCeXRlc1NlcXVlbmNlICovCiRyZXNwb25zZUJ5dGVzU2VxdWVuY2UgPSAkcmVzcG9uc2VCeXRlcy0+Z2V0Q29udGVudCgpOwoKLyoqIEB2YXIgT2JqZWN0SWRlbnRpZmllciAkcmVzcG9uc2VUeXBlICovCiRyZXNwb25zZVR5cGUgPSAkcmVzcG9uc2VCeXRlc1NlcXVlbmNlLT5nZXRDaGlsZHJlbigpWzBdOwplY2hvICJSZXNwb25zZVR5cGU6IHskcmVzcG9uc2VUeXBlfSIuUEhQX0VPTDsKCiRyZXNwb25zZSA9ICRyZXNwb25zZUJ5dGVzU2VxdWVuY2UtPmdldENoaWxkcmVuKClbMV07CmVjaG8gIlJlc3BvbnNlIChvY3RldCBzdHJpbmcpOiB7JHJlc3BvbnNlfSIuUEhQX0VPTDsK]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/Issue57.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgp1c2UgRkdcQVNOMVxFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0Owp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxFbnVtZXJhdGVkOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwoKcmVxdWlyZV9vbmNlIF9fRElSX18uJy8uLi92ZW5kb3IvYXV0b2xvYWQucGhwJzsKcmVxdWlyZV9vbmNlICdzaGFyZWQucGhwJzsKCiRpbnB1dDEgPSAnCk1JSUNXRENDQWhnQ0FRQXdWekVZTUJZR0ExVUVBd3dQWTNKNWNIUnZaM0poY0doNUxtbHZNUTB3Q3dZRFZRUUsKREFSUWVVTkJNUXN3Q1FZRFZRUUdFd0pWVXpFT01Bd0dBMVVFQ0F3RlZHVjRZWE14RHpBTkJnTlZCQWNNQmtGMQpjM1JwYmpDQ0FiWXdnZ0VyQmdjcWhrak9PQVFCTUlJQkhnS0JnUUNOZjYyOENlS0VxdnBwRlV6cUpCZHdCSkNlClVaK0xOZGFGemVXMDdOeVZnK2ROTndvUGlLMnBqd0p2SjNZdnM5WGFlRGI1aHQvTnMxaWVXNUpiNmhGTjc4QSsKK0IydU1NSkx2RzN6MVlqcE5DZTdwa0lEMUtXeGFIc3JYanRrUFV4aFNYYjRuNVdqalQ1TWlRWmZ1cGRSVENMRgpDdHUvS0pGanAwdFVoWnMxdHdJVkFJTmQ1V3ZRZlBmNExpQXkvbmlVbXUwUmVxTHZBb0dBSDNGN1dnZDRMOExrCjVvNHhIK3FScFU3ZE5yaHF4alRSVHdXbWlwZnE2ZEx2TWZzZTg5NUN3OUVBMzV5bVQxdmNLdXg3L2Z0SFRQZ3gKL3FCWVU3WGdXZkxTU1lDZ3JFWS9Ib0dLODFJK1BMZWFPZFJmcVNjeGlYZFNoQ1JwejRWQXNCU1JBazZxKzg1ZwpHT2loOUdXTU5EOUxwOEN5SGxOMm9oOUw2NFNSbGg0RGdZUUFBb0dBQnhQd2RrSDJOcHUxcVZSU2RLTFV3Qm1ZCk5uK3pjYnVlRTBOalkyY3UxbytDRjB3dDRGeU9nNXZHM2xhTjFRdWlqWTJkaHhsQ09xN0ZWWDN4RFhjNnNpMXQKWmN1NGVBU21sN3lQMldXNVV2bjM2RkR0OFR5S3piWFhVN2JSRGxuZ3RYTXVQSUs2K2hRRFFyeEtPN29XdlFhQgp5S2FpMjd0Ky9teml1RVk3Rnd1Z0FEQUpCZ2NxaGtqT09BUURBeThBTUN3Q0ZHSFZqY0FvMEJFSUdLZllGOWRDCk5YSjhTcy9mQWhRSmUxTGhtT3pwWGVGeWMvQ3BKTjhqenAyQmlBPT0nOwoKJGlucHV0MiA9ICcKTUlJRkdEQ0NBd0FDQVFBd09qRVdNQlFHQ2dtU0pvbVQ4aXhrQVJrV0JuTmxZM1Z5WlRFZ01CNEdBMVVFQXhNWApMbE5sWTNWeVpTQkZiblJsY25CeWFYTmxJRU5CSURFd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3CmdnSUtBb0lDQVFDemdFcEwrWmE3YTN5N1lwVVJEcnhsR0lCbGtzMjVmRDB0SGFaSVlrQlRhWEE1aCs5TVdvWG4KRkE3QWxJVXQ4cGJCdlhkSmJPQ21HYWVRbUJmQkgwUXk5dlRieC9EUjJJT3d6cXkyWkh1dXJJNWJQTDEyY2VFMgpNeGE5eGdZL2k3VTZNQVV0b0EzYW1FZDdjS2oyZno5RVdacnVSbGFkT1gwRFh2OUtleFNhbis0NVFqQ1dIK3UyCkN4ZW0yekg5WkROUEdCdUFGOVlzQXZrZEhkQW9YOGFTbTA1WkFqVWlPMmUvK0w1N3doaDd6WmlEWTNXSWhpbjcKTi8ySk5US1ZPNmx4NTBTOGEzNFhVS0J0M1NLZ1NSOTQxaGNMckJZVU5mdFVZc1RQbzQwYnpLS2NXcWVtaUgrdwpqUWlEcmxuNFYyYjVFYlZlb0dXZTRVRFBYQ1ZtQzZVUGtsRzdpWWZGMGVlSzR1alY4dWM5UHRWMkx2R0xPRmRtCkFZRTMrRkFiYTVieVFBVHcvRFk4RUpLUTdwdFBpZ0poVmU0N05OZUpsc0t3azFoYUo5azhaYXpqUyt2VDQ1QjUKcHFlMHlCRkFFb244VEZuT0xuQU9ibG1LTzEyaTB6cU1VTkFBbG1yMWM4ak5qTHIrZGhydVMrUXJvcFpteloyNAptQW5GRytZMHFwZmhNekF4VEdReVZqeUd3RGZSSy9BUm10ckdwbVJPamo1KzZWdU1tWjZMamYzeE4wOWVwbXRICmdKZStsWU5CbHBmVVlnMTZ0bStPdXNuemlZblhMNm5JbzJDaE9ZLzdHTkpKaWY5Zmp2dmFQRENDOThLNjRhdjUKNXJwSXg3Ti9YSDRod0hlUVFrRVFhbmdFeEUrOFVNeUJORk5tdlBuSUhWSFVaZFlvNFNMc1l3SURBUUFCb0lHWQpNQnNHQ2lzR0FRUUJnamNOQWdNeERSWUxOaTR6TGprMk1EQXVNaTR3ZVFZSktvWklodmNOQVFrT01Xd3dhakFRCkJna3JCZ0VFQVlJM0ZRRUVBd0lCQURBZEJnTlZIUTRFRmdRVTVuRUlNRVVUNW1NZDFXZXBtdml3Z0s3ZEl6d3cKR1FZSkt3WUJCQUdDTnhRQ0JBd2VDZ0JUQUhVQVlnQkRBRUV3Q3dZRFZSMFBCQVFEQWdHR01BOEdBMVVkRXdFQgovd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVMQlFBRGdnSUJBS1psNmJBZWFJRDNiL2ljNGF6dEw4WlpJN3ZpCkQzQTlvdFVLeDZ2MVhlNjN6RFBSK0RpV1NueGI5bStsOE9QdG5Xa2NMa3pFSU0vSU1Xb3JIS1VBSi9KODcxRDAKUXgrMC9IYmtjcmpNdFZ1L2ROcnRiOVo5Q1h1cDY2WnZ4VFBjcEV6aXEwL24yeXc4UWRCYWErbGxpNjVRY3djeQp0ek1RSzZXUVRSWWZ2VkNJWDlBS2NQS3h3eDFETEgrN2hML2JFUkIxbFVEdTU5Sng2ZlFmcUpyRlZPWTJOOGMwCk1HdnVyZm9IR21Fb3lDTUl5dm1JTXU0Ky93U05FRS9zU0RwNGxaNnp1RjZyZjFtMEdpTGRUWDJYSkUrZ2Z2ZXAKSlRGbXA0UzNXRnFrc3pLdmF4QklUK2pWMFhLVE5Ed25PK2RwRXh3VTRqWlVoMThDZEVGa0lVdVFiMGdGRjhCNwpXSkZWcE5kc1JxWlJQQno4M0JXMUtqbzB5QW1hb1RyR05tRzBwNlFmM0syemJrMStKaWszVlpxNHJ2S29UaTIwCjZSdkxBMi8vY01OZmtZUHN1cXZvSEdlMmUwR09MdElCNjN3Snpsb1dST3BiNzJvaEVIc3ZDS3VsbElKVlN1aVMKOXNmVEJBZW5IQ3luZGdBRWQ0VDNucFRVZGFpTnVtVkVtNWlsWklkN0xBWWVrSmhrZ0Z1M3ZsY2w4YmxCSktqRQpza1ZUcDdKcEJtZFhDTC9HLzZIMlNGamNhNEpNT0F5M0R4d2xHZGduZUlhWGF6SHM1bkJLL0JnS1BJeVB6WjR3CnNlY3hCVFRDTmdJNDhZZXpLM0dEa242NWNtbG5rdDZGNk1mME13b0RhWFR1Qjg4SnljYndiNWloS25IRUpJc08KZHJhaVJCWnJ1d01Qd1BJUAonOwoKJGlucHV0MyA9ICcKTUlJQzR6Q0NBY3NDQVFBd2NqRUxNQWtHQTFVRUJoTUNRVlV4RXpBUkJnTlZCQWdNQ2xOdmJXVXRVM1JoZEdVeApJVEFmQmdOVkJBb01HRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpERU5NQXNHQTFVRUF3d0VkR1Z6CmRERWNNQm9HQ1NxR1NJYjNEUUVKQVJZTmRHVnpkRUIwWlhOMExtTnZiVENDQVNJd0RRWUpLb1pJaHZjTkFRRUIKQlFBRGdnRVBBRENDQVFvQ2dnRUJBTDd0NkNSOTBrT1owbTNxSng5a29IQkZkWG51bkVxOUVMU1V2c1o3b0Zpdwo2ekpzeWkxOFM5em5WUkxFZ3NXNHYyclRzTGlKbUtuTUYyS3lkOUFRMlgyektVSzQ5Q1RNcUcxcC80bEYwb0xhCm5RZ05tallDNFZMNjF3VHRlNkNVQUpYN3daQThMTDAwUWZDZGdJTEtvZFAxMkUzYzdZcDN5dzVUQU9CZEEzQXYKS25wc1VpTkxtUU4zSFNuOWR3azlyQ0h1bHJQOExMOTdsLy9IMktTQ3ZPdlNmazFYZU43QURTeVdNQzZaUEJELwo3V1ZuUW83R2dNQUEwUWh6K25JSUZBNUF5dUZFYlJpZmYrTDVFRWwrQmc2Ujl0Z3grUVV0OUpYeEYyNjBka0FiCmlLQm1QY0psZGwyL0dFbXo2UkFYaE13Sm5OMzV0YmR6dzBMVkx6c3lwcjBDQXdFQUFhQXNNQk1HQ1NxR1NJYjMKRFFFSkFqRUdEQVIwWlhOME1CVUdDU3FHU0liM0RRRUpCekVJREFZeE1qTTBOVFl3RFFZSktvWklodmNOQVFFRgpCUUFEZ2dFQkFDcVo1KzNHUDdRYlRKQXFuVWxvTVJCSkdZWmwwL0V5VzZkQU1vcTdFK1JpUjJPbEpHWGdQK2dhCkRQdjdXYTRqWmlZbWYyQ1pDV0tQK1d2VHZjZzRBUXE1aDdoaEFOK3UrczhrazBsSWpZam5rS1JBZWRHWUtEVU8KZlBEOVdvd0lTcnUzUkIxeHl4bHZnZVpTNldvQTZURDhSRVZhMVV5Rm9OelVld3Zzck5Wa0tTSGgxeGsvK2VQeAoyT3Z2cmNnOXBBV1k0SzhGdk1SZEZRS25FdWQ5Q0FvTXhxejNrc3poeERXNnJjcjJtZ0ZQU3JLaTVXTmorU2NnClRxb2Q4eGJCNzUzSldqRWJHNkh1aTlMSU1paFRYM1pKMGMyR0IwYnVoRWd6NDl5ODNYL2J5RkhTR0dTUXB6eFgKcVhERlZvdjlVWitzR3k4Q0o1YWhJSTc5eXJmS3B4WT0KJzsKCnRyeSB7CiAgICBlY2hvICdJbnB1dCAxOicgLiBQSFBfRU9MOwogICAgcHJpbnRPYmplY3QoT2JqZWN0Ojpmcm9tQmluYXJ5KGJhc2U2NF9kZWNvZGUoJGlucHV0MSkpKTsKfSBjYXRjaCAoRXhjZXB0aW9uICRleGNlcHRpb24pIHsKICAgIGVjaG8gIkVSUk9SOiAiIC4gJGV4Y2VwdGlvbi0+Z2V0TWVzc2FnZSgpOwp9CgplY2hvIFBIUF9FT0w7Cgp0cnkgewogICAgZWNobyAnSW5wdXQgMjonIC4gUEhQX0VPTDsKICAgIHByaW50T2JqZWN0KE9iamVjdDo6ZnJvbUJpbmFyeShiYXNlNjRfZGVjb2RlKCRpbnB1dDIpKSk7Cn0gY2F0Y2ggKEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7CiAgICBlY2hvICJFUlJPUjogIiAuICRleGNlcHRpb24tPmdldE1lc3NhZ2UoKTsKfQoKZWNobyBQSFBfRU9MOwoKdHJ5IHsKICAgIGVjaG8gJ0lucHV0IDM6JyAuIFBIUF9FT0w7CiAgICBwcmludE9iamVjdChPYmplY3Q6OmZyb21CaW5hcnkoYmFzZTY0X2RlY29kZSgkaW5wdXQzKSkpOwp9IGNhdGNoIChFeGNlcHRpb24gJGV4Y2VwdGlvbikgewogICAgZWNobyAiRVJST1I6ICIgLiAkZXhjZXB0aW9uLT5nZXRNZXNzYWdlKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/parseBinary.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpyZXF1aXJlX29uY2UgX19ESVJfXy4nLy4uL3ZlbmRvci9hdXRvbG9hZC5waHAnOwpyZXF1aXJlX29uY2UgJ3NoYXJlZC5waHAnOwoKdXNlIEZHXEFTTjFcT2JqZWN0OwoKJGJhc2U2NFN0cmluZyA9CidNSUlGR0RDQ0F3QUNBUUF3T2pFV01CUUdDZ21TSm9tVDhpeGtBUmtXQm5ObFkzVnlaVEVnTUI0R0ExVUVBeE1YCkxsTmxZM1Z5WlNCRmJuUmxjbkJ5YVhObElFTkJJREV3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQ0R3QXcKZ2dJS0FvSUNBUUN6Z0VwTCtaYTdhM3k3WXBVUkRyeGxHSUJsa3MyNWZEMHRIYVpJWWtCVGFYQTVoKzlNV29YbgpGQTdBbElVdDhwYkJ2WGRKYk9DbUdhZVFtQmZCSDBReTl2VGJ4L0RSMklPd3pxeTJaSHV1ckk1YlBMMTJjZUUyCk14YTl4Z1kvaTdVNk1BVXRvQTNhbUVkN2NLajJmejlFV1pydVJsYWRPWDBEWHY5S2V4U2FuKzQ1UWpDV0grdTIKQ3hlbTJ6SDlaRE5QR0J1QUY5WXNBdmtkSGRBb1g4YVNtMDVaQWpVaU8yZS8rTDU3d2hoN3paaURZM1dJaGluNwpOLzJKTlRLVk82bHg1MFM4YTM0WFVLQnQzU0tnU1I5NDFoY0xyQllVTmZ0VVlzVFBvNDBiektLY1dxZW1pSCt3CmpRaURybG40VjJiNUViVmVvR1dlNFVEUFhDVm1DNlVQa2xHN2lZZkYwZWVLNHVqVjh1YzlQdFYyTHZHTE9GZG0KQVlFMytGQWJhNWJ5UUFUdy9EWThFSktRN3B0UGlnSmhWZTQ3Tk5lSmxzS3drMWhhSjlrOFphempTK3ZUNDVCNQpwcWUweUJGQUVvbjhURm5PTG5BT2JsbUtPMTJpMHpxTVVOQUFsbXIxYzhqTmpMcitkaHJ1UytRcm9wWm16WjI0Cm1BbkZHK1kwcXBmaE16QXhUR1F5Vmp5R3dEZlJLL0FSbXRyR3BtUk9qajUrNlZ1TW1aNkxqZjN4TjA5ZXBtdEgKZ0plK2xZTkJscGZVWWcxNnRtK091c256aVluWEw2bklvMkNoT1kvN0dOSkppZjlmanZ2YVBEQ0M5OEs2NGF2NQo1cnBJeDdOL1hINGh3SGVRUWtFUWFuZ0V4RSs4VU15Qk5GTm12UG5JSFZIVVpkWW80U0xzWXdJREFRQUJvSUdZCk1Cc0dDaXNHQVFRQmdqY05BZ014RFJZTE5pNHpMamsyTURBdU1pNHdlUVlKS29aSWh2Y05BUWtPTVd3d2FqQVEKQmdrckJnRUVBWUkzRlFFRUF3SUJBREFkQmdOVkhRNEVGZ1FVNW5FSU1FVVQ1bU1kMVdlcG12aXdnSzdkSXp3dwpHUVlKS3dZQkJBR0NOeFFDQkF3ZUNnQlRBSFVBWWdCREFFRXdDd1lEVlIwUEJBUURBZ0dHTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFLWmw2YkFlYUlEM2IvaWM0YXp0TDhaWkk3dmkKRDNBOW90VUt4NnYxWGU2M3pEUFIrRGlXU254YjltK2w4T1B0bldrY0xrekVJTS9JTVdvckhLVUFKL0o4NzFEMApReCswL0hia2Nyak10VnUvZE5ydGI5WjlDWHVwNjZadnhUUGNwRXppcTAvbjJ5dzhRZEJhYStsbGk2NVFjd2N5CnR6TVFLNldRVFJZZnZWQ0lYOUFLY1BLeHd4MURMSCs3aEwvYkVSQjFsVUR1NTlKeDZmUWZxSnJGVk9ZMk44YzAKTUd2dXJmb0hHbUVveUNNSXl2bUlNdTQrL3dTTkVFL3NTRHA0bFo2enVGNnJmMW0wR2lMZFRYMlhKRStnZnZlcApKVEZtcDRTM1dGcWtzekt2YXhCSVQralYwWEtUTkR3bk8rZHBFeHdVNGpaVWgxOENkRUZrSVV1UWIwZ0ZGOEI3CldKRlZwTmRzUnFaUlBCejgzQlcxS2pvMHlBbWFvVHJHTm1HMHA2UWYzSzJ6YmsxK0ppazNWWnE0cnZLb1RpMjAKNlJ2TEEyLy9jTU5ma1lQc3Vxdm9IR2UyZTBHT0x0SUI2M3dKemxvV1JPcGI3Mm9oRUhzdkNLdWxsSUpWU3VpUwo5c2ZUQkFlbkhDeW5kZ0FFZDRUM25wVFVkYWlOdW1WRW01aWxaSWQ3TEFZZWtKaGtnRnUzdmxjbDhibEJKS2pFCnNrVlRwN0pwQm1kWENML0cvNkgyU0ZqY2E0Sk1PQXkzRHh3bEdkZ25lSWFYYXpIczVuQksvQmdLUEl5UHpaNHcKc2VjeEJUVENOZ0k0OFllekszR0RrbjY1Y21sbmt0NkY2TWYwTXdvRGFYVHVCODhKeWNid2I1aWhLbkhFSklzTwpkcmFpUkJacnV3TVB3UElQJzsKCiRiaW5hcnlEYXRhID0gYmFzZTY0X2RlY29kZSgkYmFzZTY0U3RyaW5nKTsKJGFzbk9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7Cgo/PgoKPCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KPGhlYWQ+CiAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogIDx0aXRsZT5QSFBBU04xIEV4YW1wbGVzPC90aXRsZT4KICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iSG93IHRvIHBhcnNlIGJpbmFyeSBBU04uMSBkYXRhIHdpdGggUEhQQVNOMSI+CiAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJGcmllZHJpY2ggR3Jvw59lIj4KPC9oZWFkPgo8Ym9keT4KICAgIDxwPkdvdCA8Pz0gc3RybGVuKCRiaW5hcnlEYXRhKSA/PiBieXRlIG9mIGJpbmFyeSBkYXRhOiA8L3A+CiAgICA8cHJlPjw/cGhwIHByaW50T2JqZWN0KCRhc25PYmplY3QpOz8+PC9wcmU+CjwvYm9keT4KPC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/readmeExample.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy8uLi92ZW5kb3IvYXV0b2xvYWQucGhwJzsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCb29sZWFuOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcRW51bWVyYXRlZDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXElBNVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxQcmludGFibGVTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNldDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CgokaW50ZWdlciA9IG5ldyBJbnRlZ2VyKDEyMzQ1Nik7CiRib29sZWFuID0gbmV3IEJvb2xlYW4odHJ1ZSk7CiRlbnVtID0gbmV3IEVudW1lcmF0ZWQoMSk7CiRpYTVTdHJpbmcgPSBuZXcgSUE1U3RyaW5nKCdIZWxsbyB3b3JsZCcpOwoKJGFzbk51bGwgPSBuZXcgTnVsbE9iamVjdCgpOwokb2JqZWN0SWRlbnRpZmllcjEgPSBuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjI1MC4xLjE2LjknKTsKJG9iamVjdElkZW50aWZpZXIyID0gbmV3IE9iamVjdElkZW50aWZpZXIoT0lEOjpSU0FfRU5DUllQVElPTik7CiRwcmludGFibGVTdHJpbmcgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCdGb28gYmFyJyk7Cgokc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoJGludGVnZXIsICRib29sZWFuLCAkZW51bSwgJGlhNVN0cmluZyk7CiRzZXQgPSBuZXcgU2V0KCRzZXF1ZW5jZSwgJGFzbk51bGwsICRvYmplY3RJZGVudGlmaWVyMSwgJG9iamVjdElkZW50aWZpZXIyLCAkcHJpbnRhYmxlU3RyaW5nKTsKCiRteUJpbmFyeSAgPSAkc2VxdWVuY2UtPmdldEJpbmFyeSgpOwokbXlCaW5hcnkgLj0gJHNldC0+Z2V0QmluYXJ5KCk7CgplY2hvIGJhc2U2NF9lbmNvZGUoJG15QmluYXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/examples/shared.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXE9iamVjdDsKCmZ1bmN0aW9uIHByaW50T2JqZWN0KE9iamVjdCAkb2JqZWN0LCAkZGVwdGggPSAwKQp7CiAgICAkdHJlZVN5bWJvbCA9ICcnOwogICAgJGRlcHRoU3RyaW5nID0gc3RyX3JlcGVhdCgn4pSAJywgJGRlcHRoKTsKICAgIGlmICgkZGVwdGggPiAwKSB7CiAgICAgICAgJHRyZWVTeW1ib2wgPSAn4pScJzsKICAgIH0KCiAgICAkbmFtZSA9IElkZW50aWZpZXI6OmdldFNob3J0TmFtZSgkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgZWNobyAieyR0cmVlU3ltYm9sfXskZGVwdGhTdHJpbmd9eyRuYW1lfSA6ICI7CgogICAgZWNobyAkb2JqZWN0LT5fX3RvU3RyaW5nKCkuUEhQX0VPTDsKCiAgICAkY29udGVudCA9ICRvYmplY3QtPmdldENvbnRlbnQoKTsKICAgIGlmIChpc19hcnJheSgkY29udGVudCkpIHsKICAgICAgICBmb3JlYWNoICgkb2JqZWN0IGFzICRjaGlsZCkgewogICAgICAgICAgICBwcmludE9iamVjdCgkY2hpbGQsICRkZXB0aCArIDEpOwogICAgICAgIH0KICAgIH0KfQo=]]></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/phpunit.xml.dist</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHBocHVuaXQKICAgIGJhY2t1cEdsb2JhbHM9ImZhbHNlIgogICAgYmFja3VwU3RhdGljQXR0cmlidXRlcz0iZmFsc2UiCiAgICBjb252ZXJ0RXJyb3JzVG9FeGNlcHRpb25zPSJ0cnVlIgogICAgY29udmVydE5vdGljZXNUb0V4Y2VwdGlvbnM9InRydWUiCiAgICBjb252ZXJ0V2FybmluZ3NUb0V4Y2VwdGlvbnM9InRydWUiCiAgICBwcm9jZXNzSXNvbGF0aW9uPSJmYWxzZSIKICAgIHN0b3BPbkZhaWx1cmU9ImZhbHNlIgogICAgc3ludGF4Q2hlY2s9ImZhbHNlIgogICAgYm9vdHN0cmFwPSJ2ZW5kb3IvYXV0b2xvYWQucGhwIgogICAgY29sb3JzPSJ0cnVlIj4KICAgIDx0ZXN0c3VpdGVzPgogICAgICAgIDx0ZXN0c3VpdGUgbmFtZT0iUEhQQVNOMSBUZXN0IFN1aXRlIj4KICAgICAgICAgICAgPGRpcmVjdG9yeSBzdWZmaXg9IlRlc3QucGhwIj4uL3Rlc3RzPC9kaXJlY3Rvcnk+CiAgICAgICAgPC90ZXN0c3VpdGU+CiAgICA8L3Rlc3RzdWl0ZXM+CgogICAgPGZpbHRlcj4KICAgICAgICA8d2hpdGVsaXN0PgogICAgICAgICAgICA8ZGlyZWN0b3J5IHN1ZmZpeD0iLnBocCI+Li88L2RpcmVjdG9yeT4KICAgICAgICAgICAgPGV4Y2x1ZGU+CiAgICAgICAgICAgICAgICA8ZGlyZWN0b3J5Pi4vdGVzdHM8L2RpcmVjdG9yeT4KICAgICAgICAgICAgICAgIDxkaXJlY3Rvcnk+Li9leGFtcGxlczwvZGlyZWN0b3J5PgogICAgICAgICAgICAgICAgPGRpcmVjdG9yeT4uL3ZlbmRvcjwvZGlyZWN0b3J5PgogICAgICAgICAgICA8L2V4Y2x1ZGU+CiAgICAgICAgPC93aGl0ZWxpc3Q+CiAgICA8L2ZpbHRlcj4KPC9waHB1bml0Pgo=]]></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/fgrosse/phpasn1/tests/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Base128Test.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBGR1x0ZXN0c1xBU04xOwoKdXNlIEZHXEFTTjFcQmFzZTEyODsKCmNsYXNzIEJhc2UxMjhUZXN0IGV4dGVuZHMgXFBIUFVuaXRfRnJhbWV3b3JrX1Rlc3RDYXNlCnsKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXREYXRhVG9EZWNvZGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RFbmNvZGUoJHZhbHVlLCAkZXhwZWN0ZWQpCiAgICB7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWQsIEJhc2UxMjg6OmVuY29kZSgkdmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0RGF0YVRvRGVjb2RlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RGVjb2RlKCRleHBlY3RlZCwgJG9jdGV0cykKICAgIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZCwgQmFzZTEyODo6ZGVjb2RlKCRvY3RldHMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGF0YVRvRGVjb2RlKCkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBbMHgwMDAwMDAwMCwgIlx4MDAiXSwKICAgICAgICAgICAgLy8gc2VsZiBleHBsYW5hdG9yeQoKICAgICAgICAgICAgWzB4MDAwMDAwM0YsICJceDNGIl0sCiAgICAgICAgICAgIC8vIGJpbmFyeTogIDAwMTExMTExCiAgICAgICAgICAgIC8vIHNlcHRldHM6ICAwMTExMTExCiAgICAgICAgICAgIC8vIHBhZGRlZDogIDAwMTExMTExCiAgICAgICAgICAgIC8vIGhleDogICAgIDB4M0YKCiAgICAgICAgICAgIFsweDAwMDAwMDdGLCAiXHg3RiJdLAogICAgICAgICAgICAvLyBiaW5hcnk6ICAwMTExMTExMQogICAgICAgICAgICAvLyBzZXB0ZXRzOiAgMTExMTExMQogICAgICAgICAgICAvLyBwYWRkZWQ6ICAwMTExMTExMQogICAgICAgICAgICAvLyBoZXg6ICAgICAweDdGCgogICAgICAgICAgICBbMHgwMDAwMDA4MCwgIlx4ODFceDAwIl0sCiAgICAgICAgICAgIC8vIGJpbmFyeTogIDEwMDAwMDAwCiAgICAgICAgICAgIC8vIHNlcHRldHM6ICAwMDAwMDAxIDAwMDAwMDAwCiAgICAgICAgICAgIC8vIHBhZGRlZDogIDEwMDAwMDAxIDAwMDAwMDAwCiAgICAgICAgICAgIC8vIGhleDogICAgIDB4ODEgICAgIDB4MDAKCiAgICAgICAgICAgIFsweDAwMDA0MDAxLCAiXHg4MVx4ODBceDAxIl0sCiAgICAgICAgICAgIC8vIGJpbmFyeTogIDAxMDAwMDAwIDAwMDAwMDAxCiAgICAgICAgICAgIC8vIHNlcHRldHM6ICAgICAgIDAxICAwMDAwMDAwICAwMDAwMDAxCiAgICAgICAgICAgIC8vIHBhZGRlZDogIDEwMDAwMDAxIDEwMDAwMDAwIDAwMDAwMDAxCiAgICAgICAgICAgIC8vIGhleDogICAgIDB4ODEgICAgIDB4ODAgICAgIDB4MDEKCiAgICAgICAgICAgIFsweDAwMDAyMDAwLCAiXHhDMFx4MDAiXSwKICAgICAgICAgICAgLy8gYmluYXJ5OiAgMDAxMDAwMDAgMDAwMDAwMDAKICAgICAgICAgICAgLy8gc2VwdGV0czogIDEwMDAwMDAgIDAwMDAwMDAKICAgICAgICAgICAgLy8gcGFkZGVkOiAgMTEwMDAwMDAgMDAwMDAwMDAKICAgICAgICAgICAgLy8gaGV4OiAgICAgMHhDMCAgICAgMHgwMAoKICAgICAgICAgICAgWzB4MDAxRkZGRkYsICJceEZGXHhGRlx4N0YiXSwKICAgICAgICAgICAgLy8gYmluYXJ5OiAgMDAwMTExMTEgMTExMTExMTEgMTExMTExMTEKICAgICAgICAgICAgLy8gc2VwdGV0OiAgIDExMTExMTEgIDExMTExMTEgIDExMTExMTEKICAgICAgICAgICAgLy8gcGFkZGVkOiAgMTExMTExMTEgMTExMTExMTEgMDExMTExMTEKICAgICAgICAgICAgLy8gaGV4OiAgICAgMHhGRiAgICAgMHhGRiAgICAgMHg3RgoKICAgICAgICAgICAgIFsweDBGRkZGRkZGLCAiXHhGRlx4RkZceEZGXHg3RiJdLAogICAgICAgICAgICAvLyBiaW5hcnk6ICAwMDAwMTExMSAxMTExMTExMSAxMTExMTExMSAxMTExMTExMQogICAgICAgICAgICAvLyBzZXB0ZXQ6ICAgMTExMTExMSAgMTExMTExMSAgMTExMTExMSAgMTExMTExMQogICAgICAgICAgICAvLyBwYWRkZWQ6ICAxMTExMTExMSAxMTExMTExMSAxMTExMTExMSAwMTExMTExMQogICAgICAgICAgICAvLyBoZXg6ICAgICAweEZGICAgICAweEZGICAgICAweEZGICAgICAweDdGCgogICAgICAgICAgICBbMHhBMzRCMjUzLCAgIlx4RDFceEQyXHhFNFx4NTMiXSwKICAgICAgICAgICAgLy8gYmluYXJ5OiAgMDAwMDEwMTAgMDAxMTAxMDAgMTAxMTAwMTAgMDEwMTAwMTEKICAgICAgICAgICAgLy8gc2VwdGV0OiAgIDEwMTAwMDEgIDEwMTAwMTAgIDExMDAxMDAgIDEwMTAwMTEKICAgICAgICAgICAgLy8gcGFkZGVkOiAgMTEwMTAwMDEgMTEwMTAwMTAgMTExMDAxMDAgMDEwMTAwMTEKICAgICAgICAgICAgLy8gaGV4OiAgICAgMHhEMSAgICAgMHhEMiAgICAgMHhFNCAgICAgMHg1MwogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBNYWxmb3JtZWQgYmFzZS0xMjggZW5jb2RlZCB2YWx1ZSAoMHhGRkZGKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3REZWNvZGVGYWlsc0lmTGFzdE9jdGV0U2lnbmlmaWNhbnRCaXRTZXQoKQogICAgewogICAgICAgIEJhc2UxMjg6OmRlY29kZSgiXHhGRlx4RkYiKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Composite/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Composite/RelativeDistinguishedNameTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXENvbXBvc2l0ZTsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVVRGOFN0cmluZzsKdXNlIEZHXEFTTjFcQ29tcG9zaXRlXFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWU7CgpjbGFzcyBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZShPSUQ6OkNPTU1PTl9OQU1FLCBuZXcgVVRGOFN0cmluZygnRnJpZWRyaWNoIEdyb8OfZScpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OlNFVCwgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZShPSUQ6OkNPTU1PTl9OQU1FLCBuZXcgVVRGOFN0cmluZygnRnJpZWRyaWNoIEdyb8OfZScpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpTRVQpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9pZCA9IE9JRDo6Q09NTU9OX05BTUU7CiAgICAgICAgJHN0cmluZyA9ICdGcmllZHJpY2ggR3Jvw59lJzsKICAgICAgICAkb2JqZWN0ID0gbmV3IFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUoJG9pZCwgbmV3IFVURjhTdHJpbmcoJHN0cmluZykpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKE9JRDo6Z2V0TmFtZSgkb2lkKS4iOiB7JHN0cmluZ30iLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/ExplicitlyTaggedObjectTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xOwoKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxJbnRlZ2VyOwp1c2UgRkdcVGVzdFxBU04xVGVzdENhc2U7CnVzZSBGR1xBU04xXEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxQcmludGFibGVTdHJpbmc7CgpjbGFzcyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0VGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRhc24gPSBuZXcgRXhwbGljaXRseVRhZ2dlZE9iamVjdCgweDFFLCBuZXcgUHJpbnRhYmxlU3RyaW5nKCd0ZXN0JykpOwogICAgICAgICRleHBlY3RlZFR5cGUgPSBJZGVudGlmaWVyOjpjcmVhdGUoSWRlbnRpZmllcjo6Q0xBU1NfQ09OVEVYVF9TUEVDSUZJQywgJGlzQ29uc3RydWN0ZWQgPSB0cnVlLCAweDFFKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUsICRhc24tPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkYXNuID0gbmV3IEV4cGxpY2l0bHlUYWdnZWRPYmplY3QoMHgxRSwgbmV3IFByaW50YWJsZVN0cmluZygndGVzdCcpKTsKICAgICAgICAkZXhwZWN0ZWRJZGVudGlmaWVyID0gY2hyKElkZW50aWZpZXI6OmNyZWF0ZShJZGVudGlmaWVyOjpDTEFTU19DT05URVhUX1NQRUNJRklDLCAkaXNDb25zdHJ1Y3RlZCA9IHRydWUsIDB4MUUpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZElkZW50aWZpZXIsICRhc24tPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUYWcoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgRXhwbGljaXRseVRhZ2dlZE9iamVjdCgwLCBuZXcgUHJpbnRhYmxlU3RyaW5nKCd0ZXN0JykpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMCwgJG9iamVjdC0+Z2V0VGFnKCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEV4cGxpY2l0bHlUYWdnZWRPYmplY3QoMSwgbmV3IFByaW50YWJsZVN0cmluZygndGVzdCcpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDEsICRvYmplY3QtPmdldFRhZygpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldExlbmd0aCgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9IG5ldyBQcmludGFibGVTdHJpbmcoJ3Rlc3QnKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IEV4cGxpY2l0bHlUYWdnZWRPYmplY3QoMCwgJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkc3RyaW5nLT5nZXRPYmplY3RMZW5ndGgoKSArIDIsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldENvbnRlbnQoKQogICAgewogICAgICAgICRzdHJpbmcgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCd0ZXN0Jyk7CiAgICAgICAgJG9iamVjdCA9IG5ldyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KDAsICRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoWyRzdHJpbmddLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkdGFnID0gMHgwMTsKICAgICAgICAkc3RyaW5nID0gbmV3IFByaW50YWJsZVN0cmluZygndGVzdCcpOwogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6Y3JlYXRlKElkZW50aWZpZXI6OkNMQVNTX0NPTlRFWFRfU1BFQ0lGSUMsICRpc0NvbnN0cnVjdGVkID0gdHJ1ZSwgJHRhZykpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigkc3RyaW5nLT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRlbmNvZGVkU3RyaW5nT2JqZWN0ID0gJHN0cmluZy0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJG9iamVjdCA9IG5ldyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KCR0YWcsICRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRCaW5hcnlFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGVuY29kZWRTdHJpbmdPYmplY3QsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0VGFncwogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoJG9yaWdpbmFsVGFnKQogICAgewogICAgICAgICRvcmlnaW5hbFN0cmluZ09iamVjdCA9IG5ldyBQcmludGFibGVTdHJpbmcoJ3Rlc3QnKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgRXhwbGljaXRseVRhZ2dlZE9iamVjdCgkb3JpZ2luYWxUYWcsICRvcmlnaW5hbFN0cmluZ09iamVjdCk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gRXhwbGljaXRseVRhZ2dlZE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUYWdzKCkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBbMHgwMl0sCiAgICAgICAgICAgIFsweDAwMDA0MDAyXSwKICAgICAgICBdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhaZXJvQ29udGVudCgpCiAgICB7CiAgICAgICAgJGRhdGEgPSBoZXgyYmluKCdBMDAwJyk7CiAgICAgICAgJG9iamVjdCA9IEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6OmZyb21CaW5hcnkoJGRhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMiwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoW10sICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQ29udGV4dCBzcGVjaWZpYyBlbXB0eSBvYmplY3Qgd2l0aCB0YWcgWzBdJywgJG9iamVjdC0+X190b1N0cmluZygpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRhLCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aE11bHRpcGxlT2JqZWN0cygpCiAgICB7CiAgICAgICAgJG9iamVjdDEgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0MiA9IG5ldyBJbnRlZ2VyKDQyKTsKCiAgICAgICAgJGlkZW50aWZpZXIgPSAweEEwOwogICAgICAgICRsZW5ndGggPSAkb2JqZWN0MS0+Z2V0T2JqZWN0TGVuZ3RoKCkrJG9iamVjdDItPmdldE9iamVjdExlbmd0aCgpOwogICAgICAgICRkYXRhID0gY2hyKCRpZGVudGlmaWVyKS5jaHIoJGxlbmd0aCkuJG9iamVjdDEtPmdldEJpbmFyeSgpLiRvYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9iamVjdCA9IEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6OmZyb21CaW5hcnkoJGRhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMiskbGVuZ3RoLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhbJG9iamVjdDEsICRvYmplY3QyXSwgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRhLCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnMiBjb250ZXh0IHNwZWNpZmljIG9iamVjdHMgd2l0aCB0YWcgWzBdJywgJG9iamVjdC0+X190b1N0cmluZygpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/IdentifierTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xOwoKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgSWRlbnRpZmllclRlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDcmVhdGUoKQogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMHgwMiwgSWRlbnRpZmllcjo6Y3JlYXRlKElkZW50aWZpZXI6OkNMQVNTX1VOSVZFUlNBTCwgJGlzQ29uc3RydWN0ZWQgPSBmYWxzZSwgMHgwMikpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMHgzMCwgSWRlbnRpZmllcjo6Y3JlYXRlKElkZW50aWZpZXI6OkNMQVNTX1VOSVZFUlNBTCwgJGlzQ29uc3RydWN0ZWQgPSB0cnVlLCAweDEwKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygweEIzLCBJZGVudGlmaWVyOjpjcmVhdGUoSWRlbnRpZmllcjo6Q0xBU1NfQ09OVEVYVF9TUEVDSUZJQywgJGlzQ29uc3RydWN0ZWQgPSB0cnVlLCAweDEzKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygiXHgxRlx4MUYiLCBJZGVudGlmaWVyOjpjcmVhdGUoSWRlbnRpZmllcjo6Q0xBU1NfVU5JVkVSU0FMLCAkaXNDb25zdHJ1Y3RlZCA9IGZhbHNlLCAweDFGKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygiXHgxRlx4ODFceDdGIiwgSWRlbnRpZmllcjo6Y3JlYXRlKElkZW50aWZpZXI6OkNMQVNTX1VOSVZFUlNBTCwgJGlzQ29uc3RydWN0ZWQgPSBmYWxzZSwgMHhGRikpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllck5hbWUoKQogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIEVuZC1vZi1jb250ZW50cyBvY3RldCcsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6RU9DKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgQm9vbGVhbicsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6Qk9PTEVBTikpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIEludGVnZXInLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OklOVEVHRVIpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBCaXQgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpCSVRTVFJJTkcpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBPY3RldCBTdHJpbmcnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgTlVMTCcsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6TlVMTCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIE9iamVjdCBJZGVudGlmaWVyJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUikpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIE9iamVjdCBEZXNjcmlwdG9yJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUikpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIEV4dGVybmFsIFR5cGUnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OkVYVEVSTkFMKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgUmVhbCcsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6UkVBTCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIEVudW1lcmF0ZWQnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OkVOVU1FUkFURUQpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBFbWJlZGRlZCBQRFYnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OkVNQkVEREVEX1BEVikpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIFVURjggU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpVVEY4X1NUUklORykpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIFJlbGF0aXZlIE9JRCcsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6UkVMQVRJVkVfT0lEKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgU2VxdWVuY2UnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OlNFUVVFTkNFKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgU2V0JywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpTRVQpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBOdW1lcmljIFN0cmluZycsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6TlVNRVJJQ19TVFJJTkcpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBQcmludGFibGUgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpQUklOVEFCTEVfU1RSSU5HKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgVDYxIFN0cmluZycsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6VDYxX1NUUklORykpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIFZpZGVvdGV4dCBTdHJpbmcnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OlZJREVPVEVYVF9TVFJJTkcpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBJQTUgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpJQTVfU1RSSU5HKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgVVRDIFRpbWUnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OlVUQ19USU1FKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgR2VuZXJhbGl6ZWQgVGltZScsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6R0VORVJBTElaRURfVElNRSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIEdyYXBoaWMgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpHUkFQSElDX1NUUklORykpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIFZpc2libGUgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpWSVNJQkxFX1NUUklORykpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIEdlbmVyYWwgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpHRU5FUkFMX1NUUklORykpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIFVuaXZlcnNhbCBTdHJpbmcnLCBJZGVudGlmaWVyOjpnZXROYW1lKElkZW50aWZpZXI6OlVOSVZFUlNBTF9TVFJJTkcpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBDaGFyYWN0ZXIgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShJZGVudGlmaWVyOjpDSEFSQUNURVJfU1RSSU5HKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQVNOLjEgQk1QIFN0cmluZycsIElkZW50aWZpZXI6OmdldE5hbWUoSWRlbnRpZmllcjo6Qk1QX1NUUklORykpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBSRVNFUlZFRCAoMHgwRSknLCBJZGVudGlmaWVyOjpnZXROYW1lKDB4MEUpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBU04uMSBSRVNFUlZFRCAoMHgwRiknLCBJZGVudGlmaWVyOjpnZXROYW1lKDB4MEYpKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQ29uc3RydWN0ZWQgcHJpdmF0ZSAoMHhGRjdGKScsIElkZW50aWZpZXI6OmdldE5hbWUoIlx4RkZceDdGIikpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllck5hbWVXaXRoQmluYXJ5SW5wdXQoKQogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0FTTi4xIE51bWVyaWMgU3RyaW5nJywgSWRlbnRpZmllcjo6Z2V0TmFtZShjaHIoSWRlbnRpZmllcjo6TlVNRVJJQ19TVFJJTkcpKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUYWdOdW1iZXIoKQogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMSwgSWRlbnRpZmllcjo6Z2V0VGFnTnVtYmVyKChJZGVudGlmaWVyOjpDTEFTU19DT05URVhUX1NQRUNJRklDIDw8IDYpIHwgMHgwMSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMywgSWRlbnRpZmllcjo6Z2V0VGFnTnVtYmVyKChJZGVudGlmaWVyOjpDTEFTU19DT05URVhUX1NQRUNJRklDIDw8IDYpIHwgMHgwMykpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMHhGRiwgSWRlbnRpZmllcjo6Z2V0VGFnTnVtYmVyKCJceDFGXHg4MVx4N0YiKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBNYWxmb3JtZWQgYmFzZS0xMjggZW5jb2RlZCB2YWx1ZSAoMHgwKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUYWdOdW1iZXJGYWlsc0lmTG9uZ0Zvcm1JZGVudGlmaWVyTWlzc2luZ1N1YnNlcXVlbnRPY3RldHMoKQogICAgewogICAgICAgIElkZW50aWZpZXI6OmdldFRhZ051bWJlcihJZGVudGlmaWVyOjpMT05HX0ZPUk0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SXNTcGVjaWZpY0NsYXNzKCkKICAgIHsKICAgICAgICAkaWRlbnRpZmllcjEgPSBJZGVudGlmaWVyOjpJTlRFR0VSOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKElkZW50aWZpZXI6OmlzVW5pdmVyc2FsQ2xhc3MoJGlkZW50aWZpZXIxKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKElkZW50aWZpZXI6OmlzQXBwbGljYXRpb25DbGFzcygkaWRlbnRpZmllcjEpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoSWRlbnRpZmllcjo6aXNDb250ZXh0U3BlY2lmaWNDbGFzcygkaWRlbnRpZmllcjEpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoSWRlbnRpZmllcjo6aXNQcml2YXRlQ2xhc3MoJGlkZW50aWZpZXIxKSk7CgogICAgICAgICRpZGVudGlmaWVyMiA9IDB4NDE7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKElkZW50aWZpZXI6OmlzVW5pdmVyc2FsQ2xhc3MoJGlkZW50aWZpZXIyKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoSWRlbnRpZmllcjo6aXNBcHBsaWNhdGlvbkNsYXNzKCRpZGVudGlmaWVyMikpOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZShJZGVudGlmaWVyOjppc0NvbnRleHRTcGVjaWZpY0NsYXNzKCRpZGVudGlmaWVyMikpOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZShJZGVudGlmaWVyOjppc1ByaXZhdGVDbGFzcygkaWRlbnRpZmllcjIpKTsKCiAgICAgICAgJGlkZW50aWZpZXIzID0gMHg4MzsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoSWRlbnRpZmllcjo6aXNVbml2ZXJzYWxDbGFzcygkaWRlbnRpZmllcjMpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoSWRlbnRpZmllcjo6aXNBcHBsaWNhdGlvbkNsYXNzKCRpZGVudGlmaWVyMykpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKElkZW50aWZpZXI6OmlzQ29udGV4dFNwZWNpZmljQ2xhc3MoJGlkZW50aWZpZXIzKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKElkZW50aWZpZXI6OmlzUHJpdmF0ZUNsYXNzKCRpZGVudGlmaWVyMykpOwoKICAgICAgICAkaWRlbnRpZmllcjQgPSAweEMzOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZShJZGVudGlmaWVyOjppc1VuaXZlcnNhbENsYXNzKCRpZGVudGlmaWVyNCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZShJZGVudGlmaWVyOjppc0FwcGxpY2F0aW9uQ2xhc3MoJGlkZW50aWZpZXI0KSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKElkZW50aWZpZXI6OmlzQ29udGV4dFNwZWNpZmljQ2xhc3MoJGlkZW50aWZpZXI0KSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoSWRlbnRpZmllcjo6aXNQcml2YXRlQ2xhc3MoJGlkZW50aWZpZXI0KSk7CgogICAgICAgICRpZGVudGlmaWVyNSA9IDB4QTM7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKElkZW50aWZpZXI6OmlzVW5pdmVyc2FsQ2xhc3MoJGlkZW50aWZpZXI1KSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKElkZW50aWZpZXI6OmlzQXBwbGljYXRpb25DbGFzcygkaWRlbnRpZmllcjUpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShJZGVudGlmaWVyOjppc0NvbnRleHRTcGVjaWZpY0NsYXNzKCRpZGVudGlmaWVyNSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZShJZGVudGlmaWVyOjppc1ByaXZhdGVDbGFzcygkaWRlbnRpZmllcjUpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/ObjectTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xOwoKdXNlIEZHXEFTTjFcRXhwbGljaXRseVRhZ2dlZE9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdlbmVyYWxpemVkVGltZTsKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcQVNOMVxPYmplY3Q7CnVzZSBGR1xBU04xXFVua25vd25Db25zdHJ1Y3RlZE9iamVjdDsKdXNlIEZHXEFTTjFcVW5rbm93bk9iamVjdDsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxFbnVtZXJhdGVkOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2N0ZXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXElBNVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFByaW50YWJsZVN0cmluZzsKCmNsYXNzIE9iamVjdFRlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDYWxjdWxhdGVOdW1iZXJPZkxlbmd0aE9jdGV0cygpCiAgICB7CiAgICAgICAgJG9iamVjdCA9ICR0aGlzLT5nZXRNb2NrRm9yQWJzdHJhY3RDbGFzcygnXEZHXEFTTjFcT2JqZWN0Jyk7CiAgICAgICAgJGNhbGN1bGF0ZWROck9mTGVuZ3RoT2N0ZXRzID0gJHRoaXMtPmNhbGxNZXRob2QoJG9iamVjdCwgJ2dldE51bWJlck9mTGVuZ3RoT2N0ZXRzJywgMzIpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMSwgJGNhbGN1bGF0ZWROck9mTGVuZ3RoT2N0ZXRzKTsKCiAgICAgICAgJG9iamVjdCA9ICR0aGlzLT5nZXRNb2NrRm9yQWJzdHJhY3RDbGFzcygnXEZHXEFTTjFcT2JqZWN0Jyk7CiAgICAgICAgJGNhbGN1bGF0ZWROck9mTGVuZ3RoT2N0ZXRzID0gJHRoaXMtPmNhbGxNZXRob2QoJG9iamVjdCwgJ2dldE51bWJlck9mTGVuZ3RoT2N0ZXRzJywgMCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxLCAkY2FsY3VsYXRlZE5yT2ZMZW5ndGhPY3RldHMpOwoKICAgICAgICAkb2JqZWN0ID0gJHRoaXMtPmdldE1vY2tGb3JBYnN0cmFjdENsYXNzKCdcRkdcQVNOMVxPYmplY3QnKTsKICAgICAgICAkY2FsY3VsYXRlZE5yT2ZMZW5ndGhPY3RldHMgPSAkdGhpcy0+Y2FsbE1ldGhvZCgkb2JqZWN0LCAnZ2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMnLCAxMjcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMSwgJGNhbGN1bGF0ZWROck9mTGVuZ3RoT2N0ZXRzKTsKCiAgICAgICAgJG9iamVjdCA9ICR0aGlzLT5nZXRNb2NrRm9yQWJzdHJhY3RDbGFzcygnXEZHXEFTTjFcT2JqZWN0Jyk7CiAgICAgICAgJGNhbGN1bGF0ZWROck9mTGVuZ3RoT2N0ZXRzID0gJHRoaXMtPmNhbGxNZXRob2QoJG9iamVjdCwgJ2dldE51bWJlck9mTGVuZ3RoT2N0ZXRzJywgMTI4KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDIsICRjYWxjdWxhdGVkTnJPZkxlbmd0aE9jdGV0cyk7CgogICAgICAgICRvYmplY3QgPSAkdGhpcy0+Z2V0TW9ja0ZvckFic3RyYWN0Q2xhc3MoJ1xGR1xBU04xXE9iamVjdCcpOwogICAgICAgICRjYWxjdWxhdGVkTnJPZkxlbmd0aE9jdGV0cyA9ICR0aGlzLT5jYWxsTWV0aG9kKCRvYmplY3QsICdnZXROdW1iZXJPZkxlbmd0aE9jdGV0cycsIDI1NSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygyLCAkY2FsY3VsYXRlZE5yT2ZMZW5ndGhPY3RldHMpOwoKICAgICAgICAkb2JqZWN0ID0gJHRoaXMtPmdldE1vY2tGb3JBYnN0cmFjdENsYXNzKCdcRkdcQVNOMVxPYmplY3QnKTsKICAgICAgICAkY2FsY3VsYXRlZE5yT2ZMZW5ndGhPY3RldHMgPSAkdGhpcy0+Y2FsbE1ldGhvZCgkb2JqZWN0LCAnZ2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMnLCAxMDI1KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDMsICRjYWxjdWxhdGVkTnJPZkxlbmd0aE9jdGV0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBGb3IgdGhlIHJlYWwgcGFyc2luZyB0ZXN0cyBsb29rIGluIHRoZSB0ZXN0IGNhc2VzIG9mIGVhY2ggc2luZ2xlIEFTbiBvYmplY3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgLyogQHZhciBCaXRTdHJpbmcgJHBhcnNlZE9iamVjdCAqLwogICAgICAgICRiaW5hcnlEYXRhID0gY2hyKElkZW50aWZpZXI6OkJJVFNUUklORyk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDMpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDA1KTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHhGRik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4QTApOwoKICAgICAgICAkZXhwZWN0ZWRPYmplY3QgPSBuZXcgQml0U3RyaW5nKDB4RkZBMCwgNSk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHBhcnNlZE9iamVjdCBpbnN0YW5jZW9mIEJpdFN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRPYmplY3QtPmdldENvbnRlbnQoKSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZE9iamVjdC0+Z2V0TnVtYmVyT2ZVbnVzZWRCaXRzKCksICRwYXJzZWRPYmplY3QtPmdldE51bWJlck9mVW51c2VkQml0cygpKTsKCiAgICAgICAgLyogQHZhciBPY3RldFN0cmluZyAkcGFyc2VkT2JqZWN0ICovCiAgICAgICAgJGJpbmFyeURhdGEgPSBjaHIoSWRlbnRpZmllcjo6T0NURVRTVFJJTkcpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDAyKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHhGRik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4QTApOwoKICAgICAgICAkZXhwZWN0ZWRPYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoMHhGRkEwKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkcGFyc2VkT2JqZWN0IGluc3RhbmNlb2YgT2N0ZXRTdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkT2JqZWN0LT5nZXRDb250ZW50KCksICRwYXJzZWRPYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgIC8qIEB2YXIgXEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW4gJHBhcnNlZE9iamVjdCAqLwogICAgICAgICRiaW5hcnlEYXRhID0gY2hyKElkZW50aWZpZXI6OkJPT0xFQU4pOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDAxKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHhGRik7CgogICAgICAgICRleHBlY3RlZE9iamVjdCA9IG5ldyBCb29sZWFuKHRydWUpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWRPYmplY3QgaW5zdGFuY2VvZiBCb29sZWFuKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZE9iamVjdC0+Z2V0Q29udGVudCgpLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAvKiBAdmFyIEVudW1lcmF0ZWQgJHBhcnNlZE9iamVjdCAqLwogICAgICAgICRiaW5hcnlEYXRhID0gY2hyKElkZW50aWZpZXI6OkVOVU1FUkFURUQpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDAxKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHgwMyk7CgogICAgICAgICRleHBlY3RlZE9iamVjdCA9IG5ldyBFbnVtZXJhdGVkKDMpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWRPYmplY3QgaW5zdGFuY2VvZiBFbnVtZXJhdGVkKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZE9iamVjdC0+Z2V0Q29udGVudCgpLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAvKiBAdmFyIElBNVN0cmluZyAkcGFyc2VkT2JqZWN0ICovCiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBGb28gV29ybGQhISExMUVpbnNFaW5zITEnOwogICAgICAgICRiaW5hcnlEYXRhID0gY2hyKElkZW50aWZpZXI6OklBNV9TVFJJTkcpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocihzdHJsZW4oJHN0cmluZykpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRzdHJpbmc7CgogICAgICAgICRleHBlY3RlZE9iamVjdCA9IG5ldyBJQTVTdHJpbmcoJHN0cmluZyk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHBhcnNlZE9iamVjdCBpbnN0YW5jZW9mIElBNVN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRPYmplY3QtPmdldENvbnRlbnQoKSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgLyogQHZhciBcRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlciAkcGFyc2VkT2JqZWN0ICovCiAgICAgICAgJGJpbmFyeURhdGEgPSBjaHIoSWRlbnRpZmllcjo6SU5URUdFUik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDEpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxMjMpOwoKICAgICAgICAkZXhwZWN0ZWRPYmplY3QgPSBuZXcgSW50ZWdlcigxMjMpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWRPYmplY3QgaW5zdGFuY2VvZiBJbnRlZ2VyKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZE9iamVjdC0+Z2V0Q29udGVudCgpLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAvKiBAdmFyIFxGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0ICRwYXJzZWRPYmplY3QgKi8KICAgICAgICAkYmluYXJ5RGF0YSA9IGNocihJZGVudGlmaWVyOjpOVUxMKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHgwMCk7CgogICAgICAgICRleHBlY3RlZE9iamVjdCA9IG5ldyBOdWxsT2JqZWN0KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHBhcnNlZE9iamVjdCBpbnN0YW5jZW9mIE51bGxPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkT2JqZWN0LT5nZXRDb250ZW50KCksICRwYXJzZWRPYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgIC8qIEB2YXIgT2JqZWN0SWRlbnRpZmllciAkcGFyc2VkT2JqZWN0ICovCiAgICAgICAgJGJpbmFyeURhdGEgPSBjaHIoSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDAyKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMSAqIDQwICsgMik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDMpOwoKICAgICAgICAkZXhwZWN0ZWRPYmplY3QgPSBuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjMnKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkcGFyc2VkT2JqZWN0IGluc3RhbmNlb2YgT2JqZWN0SWRlbnRpZmllcik7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRPYmplY3QtPmdldENvbnRlbnQoKSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgLyogQHZhciBQcmludGFibGVTdHJpbmcgJHBhcnNlZE9iamVjdCAqLwogICAgICAgICRzdHJpbmcgPSAnVGhpcyBpcyBhIHRlc3Qgc3RyaW5nLiAjPyElJiIiJzsKICAgICAgICAkYmluYXJ5RGF0YSA9IGNocihJZGVudGlmaWVyOjpQUklOVEFCTEVfU1RSSU5HKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoc3RybGVuKCRzdHJpbmcpKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkc3RyaW5nOwoKICAgICAgICAkZXhwZWN0ZWRPYmplY3QgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCRzdHJpbmcpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWRPYmplY3QgaW5zdGFuY2VvZiBQcmludGFibGVTdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkT2JqZWN0LT5nZXRDb250ZW50KCksICRwYXJzZWRPYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgIC8qIEB2YXIgR2VuZXJhbGl6ZWRUaW1lICRwYXJzZWRPYmplY3QgKi8KICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6R0VORVJBTElaRURfVElNRSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDE1KTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAnMjAxMjA5MjMyMDIzMTZaJzsKCiAgICAgICAgJGV4cGVjdGVkT2JqZWN0ID0gbmV3IEdlbmVyYWxpemVkVGltZSgnMjAxMi0wOS0yMyAyMDoyMzoxNicsICdVVEMnKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkcGFyc2VkT2JqZWN0IGluc3RhbmNlb2YgR2VuZXJhbGl6ZWRUaW1lKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZE9iamVjdC0+Z2V0Q29udGVudCgpLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAvKiBAdmFyIFNlcXVlbmNlICRwYXJzZWRPYmplY3QgKi8KICAgICAgICAkYmluYXJ5RGF0YSA9IGNocihJZGVudGlmaWVyOjpTRVFVRU5DRSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDYpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocihJZGVudGlmaWVyOjpCT09MRUFOKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHgwMSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDApOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocihJZGVudGlmaWVyOjpJTlRFR0VSKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHgwMSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDMpOwoKICAgICAgICAkZXhwZWN0ZWRDaGlsZDEgPSBuZXcgQm9vbGVhbihmYWxzZSk7CiAgICAgICAgJGV4cGVjdGVkQ2hpbGQyID0gbmV3IEludGVnZXIoMHgwMyk7CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWRPYmplY3QgaW5zdGFuY2VvZiBTZXF1ZW5jZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygyLCAkcGFyc2VkT2JqZWN0LT5nZXROdW1iZXJPZkNoaWxkcmVuKCkpOwoKICAgICAgICAkY2hpbGRyZW4gPSAkcGFyc2VkT2JqZWN0LT5nZXRDaGlsZHJlbigpOwogICAgICAgICRjaGlsZDEgPSAkY2hpbGRyZW5bMF07CiAgICAgICAgJGNoaWxkMiA9ICRjaGlsZHJlblsxXTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZENoaWxkMS0+Z2V0Q29udGVudCgpLCAkY2hpbGQxLT5nZXRDb250ZW50KCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkQ2hpbGQyLT5nZXRDb250ZW50KCksICRjaGlsZDItPmdldENvbnRlbnQoKSk7CgogICAgICAgIC8qIEB2YXIgRXhwbGljaXRseVRhZ2dlZE9iamVjdCAkcGFyc2VkT2JqZWN0ICovCiAgICAgICAgJHRhZ2dlZE9iamVjdCA9IG5ldyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KDB4MDEsIG5ldyBQcmludGFibGVTdHJpbmcoJ0hlbGxvIHRhZ2dlZCB3b3JsZCcpKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICR0YWdnZWRPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWRPYmplY3QgaW5zdGFuY2VvZiBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KTsKCiAgICAgICAgLy8gQW4gdW5rbm93biBjb25zdHJ1Y3RlZCBvYmplY3QgY29udGFpbmluZyAyIGludGVnZXIgY2hpbGRyZW4sCiAgICAgICAgLy8gZmlyc3QgMyBieXRlcyBhcmUgdGhlIGlkZW50aWZpZXIuCiAgICAgICAgJGJpbmFyeURhdGEgPSAiXHgzRlx4ODFceDdGXHgwNiIuY2hyKElkZW50aWZpZXI6OklOVEVHRVIpLiJceDAxXHg0MiIuY2hyKElkZW50aWZpZXI6OklOVEVHRVIpLiJceDAxXHg2OSI7CiAgICAgICAgJG9mZnNldEluZGV4ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gT0JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWRPYmplY3QgaW5zdGFuY2VvZiBVbmtub3duQ29uc3RydWN0ZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoc3Vic3RyKCRiaW5hcnlEYXRhLCAwLCAzKSwgJHBhcnNlZE9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0Q291bnQoMiwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKHN0cmxlbigkYmluYXJ5RGF0YSksICRvZmZzZXRJbmRleCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxMCwgJHBhcnNlZE9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAvLyBGaXJzdCAzIGJ5dGVzIGFyZSB0aGUgaWRlbnRpZmllcgogICAgICAgICRiaW5hcnlEYXRhID0gIlx4MUZceDgxXHg3Rlx4MDFceEZGIjsKICAgICAgICAkb2Zmc2V0SW5kZXggPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHBhcnNlZE9iamVjdCBpbnN0YW5jZW9mIFVua25vd25PYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoc3Vic3RyKCRiaW5hcnlEYXRhLCAwLCAzKSwgJHBhcnNlZE9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdVbnBhcnNhYmxlIE9iamVjdCAoMSBieXRlcyknLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoc3RybGVuKCRiaW5hcnlEYXRhKSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDUsICRwYXJzZWRPYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIEFTTi4xIFBhcnNlciBFeGNlcHRpb24gYXQgb2Zmc2V0IDEwOiBDYW4gbm90IHBhcnNlIGJpbmFyeSBmcm9tIGRhdGE6IE9mZnNldCBpbmRleCBsYXJnZXIgdGhhbiBpbnB1dCBzaXplCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlUaHJvd3NFeGNlcHRpb24oKQogICAgewogICAgICAgICRiaW5hcnlEYXRhID0gMHgwOwogICAgICAgICRvZmZzZXQgPSAxMDsKICAgICAgICBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgQVNOLjEgUGFyc2VyIEV4Y2VwdGlvbiBhdCBvZmZzZXQgMDogQ2FuIG5vdCBwYXJzZSBiaW5hcnkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZQogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEVtcHR5U3RyaW5nVGhyb3dzRXhjZXB0aW9uKCkKICAgIHsKICAgICAgICAkZGF0YSA9ICcnOwogICAgICAgIE9iamVjdDo6ZnJvbUJpbmFyeSgkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBBU04uMSBQYXJzZXIgRXhjZXB0aW9uIGF0IG9mZnNldCAyOiBDYW4gbm90IHBhcnNlIGJpbmFyeSBmcm9tIGRhdGE6IE9mZnNldCBpbmRleCBsYXJnZXIgdGhhbiBpbnB1dCBzaXplCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoU3BhY3lTdHJpbmdUaHJvd3NFeGNlcHRpb24oKQogICAgewogICAgICAgICRkYXRhID0gJyAgJzsKICAgICAgICBPYmplY3Q6OmZyb21CaW5hcnkoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgQVNOLjEgUGFyc2VyIEV4Y2VwdGlvbiBhdCBvZmZzZXQgMTogQ2FuIG5vdCBwYXJzZSBjb250ZW50IGxlbmd0aCBmcm9tIGRhdGE6IE9mZnNldCBpbmRleCBsYXJnZXIgdGhhbiBpbnB1dCBzaXplCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoTnVtYmVyU3RyaW5nVGhyb3dzRXhjZXB0aW9uKCkKICAgIHsKICAgICAgICAkZGF0YSA9ICcxJzsKICAgICAgICBPYmplY3Q6OmZyb21CaW5hcnkoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgQVNOLjEgUGFyc2VyIEV4Y2VwdGlvbiBhdCBvZmZzZXQgMjU6IENhbiBub3QgcGFyc2UgY29udGVudCBsZW5ndGggZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZQogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEdhcmJhZ2VTdHJpbmdUaHJvd3NFeGNlcHRpb24oKQogICAgewogICAgICAgICRkYXRhID0gJ2NlcnRhaW5seSBubyBhc24uMSBvYmplY3QnOwogICAgICAgIE9iamVjdDo6ZnJvbUJpbmFyeSgkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBBU04uMSBQYXJzZXIgRXhjZXB0aW9uIGF0IG9mZnNldCAxOiBDYW4gbm90IHBhcnNlIGlkZW50aWZpZXIgKGxvbmcgZm9ybSkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZQogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5VW5rbm93bk9iamVjdE1pc3NpbmdMZW5ndGgoKQogICAgewogICAgICAgICRkYXRhID0gaGV4MmJpbignMWYnKTsKICAgICAgICBPYmplY3Q6OmZyb21CaW5hcnkoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgQVNOLjEgUGFyc2VyIEV4Y2VwdGlvbiBhdCBvZmZzZXQgNDogQ2FuIG5vdCBwYXJzZSBjb250ZW50IGxlbmd0aCAobG9uZyBmb3JtKSBmcm9tIGRhdGE6IE9mZnNldCBpbmRleCBsYXJnZXIgdGhhbiBpbnB1dCBzaXplCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlJbmFsaWRMb25nRm9ybUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgICRiaW5hcnlEYXRhICA9IGNocihJZGVudGlmaWVyOjpJTlRFR0VSKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHg4Zik7IC8vZGVub3RlcyBhIGxvbmctZm9ybSBjb250ZW50IGxlbmd0aCB3aXRoIDE1IGxlbmd0aC1vY3RldHMKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMHgxKTsgIC8vb25seSBnaXZlIG9uZSBjb250ZW50LWxlbmd0aC1vY3RldAogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDEpOyAgLy90aGlzIGlzIG5lZWRlZCB0byByZWFjaCB0aGUgY29kZSB0byBiZSB0ZXN0ZWQKCiAgICAgICAgT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/TemplateParserTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBGR1xUZXN0XEFTTjE7Cgp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxUZW1wbGF0ZVBhcnNlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXQ7CnVzZSBQSFBVbml0X0ZyYW1ld29ya19UZXN0Q2FzZTsKCmNsYXNzIFRlbXBsYXRlUGFyc2VyVGVzdCBleHRlbmRzIFBIUFVuaXRfRnJhbWV3b3JrX1Rlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UGFyc2VCYXNlNjQoKQogICAgewogICAgICAgICRzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgKICAgICAgICAgICAgbmV3IFNldCgKICAgICAgICAgICAgICAgIG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuMjUwLjEuMTYuOScpLAogICAgICAgICAgICAgICAgbmV3IFNlcXVlbmNlKAogICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDQyKSwKICAgICAgICAgICAgICAgICAgICBuZXcgQml0U3RyaW5nKCdBMCAxMiAwMCA0MycpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICApOwoKICAgICAgICAkZGF0YSA9IGJhc2U2NF9lbmNvZGUoJHNlcXVlbmNlLT5nZXRCaW5hcnkoKSk7CgogICAgICAgICR0ZW1wbGF0ZSA9IFsKICAgICAgICAgICAgSWRlbnRpZmllcjo6U0VRVUVOQ0UgPT4gWwogICAgICAgICAgICAgICAgSWRlbnRpZmllcjo6U0VUID0+IFsKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUiwKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyOjpTRVFVRU5DRSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXI6OklOVEVHRVIsCiAgICAgICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXI6OkJJVFNUUklORywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgXSwKICAgICAgICBdOwoKICAgICAgICAkcGFyc2VyID0gbmV3IFRlbXBsYXRlUGFyc2VyKCk7CiAgICAgICAgJG9iamVjdCA9ICRwYXJzZXItPnBhcnNlQmFzZTY0KCRkYXRhLCAkdGVtcGxhdGUpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKFNldDo6Y2xhc3MsICRvYmplY3RbMF0pOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKE9iamVjdElkZW50aWZpZXI6OmNsYXNzLCAkb2JqZWN0WzBdWzBdKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihTZXF1ZW5jZTo6Y2xhc3MsICRvYmplY3RbMF1bMV0pOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKEludGVnZXI6OmNsYXNzLCAkb2JqZWN0WzBdWzFdWzBdKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihCaXRTdHJpbmc6OmNsYXNzLCAkb2JqZWN0WzBdWzFdWzFdKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/BitStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKCmNsYXNzIEJpdFN0cmluZ1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEJpdFN0cmluZygnQTAgMTIgMDAgNDMnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkJJVFNUUklORywgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgQml0U3RyaW5nKCdBMCAxMiAwMCA0MycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OkJJVFNUUklORyksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEJpdFN0cmluZygnQTAxMjAwQzMnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBMDEyMDBDMycsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgQml0U3RyaW5nKCdBMCAxMiAwMCBDMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0EwMTIwMEMzJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBCaXRTdHJpbmcoJ2EwIDEyIDAwIGMzJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQTAxMjAwQzMnLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEJpdFN0cmluZygnQTAgMTIgMDAgYzMnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBMDEyMDBDMycsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgQml0U3RyaW5nKDB4QTAxMjAwQzMpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0EwMTIwMEMzJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBCaXRTdHJpbmcoMHgwMCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg0LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgQml0U3RyaW5nKDB4RkYpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNCwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEJpdFN0cmluZygweEEwMDApOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEJpdFN0cmluZygweDNGMjAwMSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg2LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGhXaXRoVmVyeUxvbmdCaXRTdHJpbmcoKQogICAgewogICAgICAgICRoZXhTdHJpbmcgPSAnMHgnLnN0cl9yZXBlYXQoJ0ZGJywgMTAyNCk7CiAgICAgICAgJG9iamVjdCA9IG5ldyBCaXRTdHJpbmcoJGhleFN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxICsgMyArIDEgKyAxMDI0LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6QklUU1RSSU5HKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMHgwMik7CgogICAgICAgICRvYmplY3QgPSBuZXcgQml0U3RyaW5nKDB4RkYpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gY2hyKDB4MDApOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4RkYpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEJpdFN0cmluZygweEZGQTAzNCk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKDB4MDQpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gY2hyKDB4MDApOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4RkYpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4QTApOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4MzQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEJpdFN0cmluZygweEE4LCAzKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMHgwMik7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSBjaHIoMHgwMyk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHhBOCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnlGb3JMYXJnZUJpdFN0cmluZ3MoKQogICAgewogICAgICAgICRuck9mQnl0ZXMgPSAxMDI0OwogICAgICAgICRoZXhTdHJpbmcgPSAnMHgnLnN0cl9yZXBlYXQoJ0ZGJywgJG5yT2ZCeXRlcyk7CiAgICAgICAgJG9iamVjdCA9IG5ldyBCaXRTdHJpbmcoJGhleFN0cmluZyk7CgogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6QklUU1RSSU5HKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMHg4MCB8IDB4MDIpOyAgLy8gbG9uZyBsZW5ndGggZm9ybTogMiBsZW5ndGggb2N0ZXRzCiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoIC49IGNocigxMDI1ID4+IDgpOyAgIC8vIGZpcnN0IDggYml0IG9mIDEwMjUKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggLj0gY2hyKDEwMjUgJiAweEZGKTsgLy8gbGFzdCA4IGJpdCBvZiAxMDI1CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCA9IGNocigweDAwKTsgICAgICAgIC8vIG51bWJlciBvZiB1bnVzZWQgYml0cwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuck9mQnl0ZXM7ICRpKyspIHsKICAgICAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHhGRik7ICAgLy8gY29udGVudAogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0R2V0QmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IEJpdFN0cmluZygweDEyKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEJpdFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgQml0U3RyaW5nKDB4MDEwMjAzQTAsIDMpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gQml0U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdCwgJHBhcnNlZE9iamVjdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoT2Zmc2V0KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QxID0gbmV3IEJpdFN0cmluZygweEEwKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IEJpdFN0cmluZygweDMxNDUxMCk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gQml0U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEJpdFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDEwLCAkb2Zmc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIEFTTi4xIFBhcnNlciBFeGNlcHRpb24gYXQgb2Zmc2V0IDI6IEEgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nIHNob3VsZCBoYXZlIGEgY29udGVudCBsZW5ndGggb2YgYXQgbGVhc3QgMi4gRXh0cmFjdGVkIGxlbmd0aCB3YXMgMQogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEludmFsaWRMZW5ndGgwMSgpCiAgICB7CiAgICAgICAgJGJpbmFyeURhdGEgID0gY2hyKElkZW50aWZpZXI6OkJJVFNUUklORyk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDEpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDAwKTsKICAgICAgICBCaXRTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/BMPStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJNUFN0cmluZzsKCmNsYXNzIEJNUFN0cmluZ1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEJNUFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkJNUF9TVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEJNUFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpCTVBfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgQk1QU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0hlbGxvIFdvcmxkJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJG9iamVjdCA9IG5ldyBCTVBTdHJpbmcoJHN0cmluZyk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyBzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6Qk1QX1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgQk1QU3RyaW5nKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJHN0cmluZywgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBCTVBTdHJpbmcoJ0hlbGxvIFdvcmxkJyk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBCTVBTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgQk1QU3RyaW5nKCdIZWxsbyAnKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IEJNUFN0cmluZygnIFdvcmxkJyk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gQk1QU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEJNUFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDE2LCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/BooleanTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CgpjbGFzcyBCb29sZWFuVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkJPT0xFQU4sICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoSWRlbnRpZmllcjo6Qk9PTEVBTiksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnVFJVRScsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgQm9vbGVhbihmYWxzZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnRkFMU0UnLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0T2JqZWN0TGVuZ3RoKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygzLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgQm9vbGVhbihmYWxzZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygzLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6Qk9PTEVBTik7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKDB4MDEpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCA9IGNocigweEZGKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRleHBlY3RlZENvbnRlbnQsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBCb29sZWFuKGZhbHNlKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ID0gY2hyKDB4MDApOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBCb29sZWFuKHRydWUpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gQm9vbGVhbjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgQm9vbGVhbihmYWxzZSk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBCb29sZWFuOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdCwgJHBhcnNlZE9iamVjdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoT2Zmc2V0KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QxID0gbmV3IEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBCb29sZWFuKGZhbHNlKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBCb29sZWFuOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMywgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEJvb2xlYW46OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg2LCAkb2Zmc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIEFTTi4xIFBhcnNlciBFeGNlcHRpb24gYXQgb2Zmc2V0IDI6IEFuIEFTTi4xIEJvb2xlYW4gc2hvdWxkIG5vdCBoYXZlIGEgbGVuZ3RoIG90aGVyIHRoYW4gb25lLiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyAyCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoSW52YWxpZExlbmd0aDAxKCkKICAgIHsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6Qk9PTEVBTik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDIpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweEZGKTsKICAgICAgICBCb29sZWFuOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIEFTTi4xIFBhcnNlciBFeGNlcHRpb24gYXQgb2Zmc2V0IDI6IEFuIEFTTi4xIEJvb2xlYW4gc2hvdWxkIG5vdCBoYXZlIGEgbGVuZ3RoIG90aGVyIHRoYW4gb25lLiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyAwCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoSW52YWxpZExlbmd0aDAyKCkKICAgIHsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6Qk9PTEVBTik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDApOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweEZGKTsKICAgICAgICBCb29sZWFuOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/CharacterStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXENoYXJhY3RlclN0cmluZzsKCmNsYXNzIENoYXJhY3RlclN0cmluZ1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IENoYXJhY3RlclN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkNIQVJBQ1RFUl9TVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IENoYXJhY3RlclN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpDSEFSQUNURVJfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgQ2hhcmFjdGVyU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0hlbGxvIFdvcmxkJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJG9iamVjdCA9IG5ldyBDaGFyYWN0ZXJTdHJpbmcoJHN0cmluZyk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyBzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6Q0hBUkFDVEVSX1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgQ2hhcmFjdGVyU3RyaW5nKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJHN0cmluZywgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBDaGFyYWN0ZXJTdHJpbmcoJ0hlbGxvIFdvcmxkJyk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBDaGFyYWN0ZXJTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgQ2hhcmFjdGVyU3RyaW5nKCdIZWxsbyAnKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IENoYXJhY3RlclN0cmluZygnIFdvcmxkJyk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gQ2hhcmFjdGVyU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IENoYXJhY3RlclN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDE2LCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/EnumeratedTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEVudW1lcmF0ZWQ7CgpjbGFzcyBFbnVtZXJhdGVkVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgRW51bWVyYXRlZCgxKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkVOVU1FUkFURUQsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEVudW1lcmF0ZWQoMSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoSWRlbnRpZmllcjo6RU5VTUVSQVRFRCksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEVudW1lcmF0ZWQoMCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygwLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEVudW1lcmF0ZWQoMSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEVudW1lcmF0ZWQoNTEyKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDUxMiwgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBFbnVtZXJhdGVkKDApOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMywgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEVudW1lcmF0ZWQoMTI3KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDMsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBFbnVtZXJhdGVkKDEyOCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg0LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6RU5VTUVSQVRFRCk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKDB4MDEpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEVudW1lcmF0ZWQoMCk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCA9IGNocigweDAwKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRleHBlY3RlZENvbnRlbnQsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBFbnVtZXJhdGVkKDEyNyk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCA9IGNocigweDdGKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRleHBlY3RlZENvbnRlbnQsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBFbnVtZXJhdGVkKDc0MjApOwogICAgICAgICRleHBlY3RlZExlbmd0aCAgID0gY2hyKDB4MDIpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gY2hyKDB4MUMpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4RkMpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBFbnVtZXJhdGVkKDApOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gRW51bWVyYXRlZDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgRW51bWVyYXRlZCgxMjcpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gRW51bWVyYXRlZDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgRW51bWVyYXRlZCgyMDApOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gRW51bWVyYXRlZDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aE9mZnNldCgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MSA9IG5ldyBFbnVtZXJhdGVkKDEpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDIgPSBuZXcgRW51bWVyYXRlZCgyKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBFbnVtZXJhdGVkOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMywgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEVudW1lcmF0ZWQ6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg2LCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/GeneralizedTimeTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBEYXRlVGltZTsKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcR2VuZXJhbGl6ZWRUaW1lOwoKY2xhc3MgR2VuZXJhbGl6ZWRUaW1lVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwcml2YXRlICRVVEM7CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFVwKCkKICAgIHsKICAgICAgICAkdGhpcy0+VVRDID0gbmV3IFxEYXRlVGltZVpvbmUoJ1VUQycpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VHlwZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBHZW5lcmFsaXplZFRpbWUoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUUsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEdlbmVyYWxpemVkVGltZSgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUUpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG5vdyA9IG5ldyBEYXRlVGltZSgpOwogICAgICAgICRub3ctPnNldFRpbWV6b25lKCR0aGlzLT5VVEMpOwogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbGl6ZWRUaW1lKCRub3csICdVVEMnKTsKICAgICAgICAkY29udGVudCA9ICRvYmplY3QtPmdldENvbnRlbnQoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkY29udGVudCBpbnN0YW5jZW9mIERhdGVUaW1lKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRub3ctPmZvcm1hdChEQVRFX1JGQzMzMzkpLCAkY29udGVudC0+Zm9ybWF0KERBVEVfUkZDMzMzOSkpOwoKICAgICAgICAkdGltZVN0cmluZyA9ICcyMDEyLTA5LTIzIDIwOjI3JzsKICAgICAgICAkZGF0ZVRpbWUgPSBuZXcgRGF0ZVRpbWUoJHRpbWVTdHJpbmcsICR0aGlzLT5VVEMpOwogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbGl6ZWRUaW1lKCR0aW1lU3RyaW5nKTsKICAgICAgICAkY29udGVudCA9ICRvYmplY3QtPmdldENvbnRlbnQoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkY29udGVudCBpbnN0YW5jZW9mIERhdGVUaW1lKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRlVGltZS0+Zm9ybWF0KERBVEVfUkZDMzMzOSksICRjb250ZW50LT5mb3JtYXQoREFURV9SRkMzMzM5KSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbGl6ZWRUaW1lKCk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyAxNTsgLy8gSWRlbnRpZmllciArIGxlbmd0aCArIFlZWVlNTURESEhtbVNTWgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAvLyB3aXRob3V0IHNwZWNpZmllZCBkYXl0aW1lCiAgICAgICAgJG9iamVjdCA9IG5ldyBHZW5lcmFsaXplZFRpbWUoJzIwMTItMDktMjMnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKCiAgICAgICAgLy8gd2l0aCBmcmFjdGlvbmFsLXNlY29uZHMgZWxlbWVudHMKICAgICAgICAkb2JqZWN0ID0gbmV3IEdlbmVyYWxpemVkVGltZSgnMjAxMi0wOS0yMyAyMjoyMTowMy41NDM1NDQwJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplICsgNywgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkZXhwZWN0ZWRUeXBlID0gY2hyKElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUUpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigxNSk7IC8vIFlZWVlNTURESEhtbVNTWgoKICAgICAgICAkb2JqZWN0ID0gbmV3IEdlbmVyYWxpemVkVGltZSgpOwogICAgICAgICRub3cgPSBuZXcgRGF0ZVRpbWUoKTsKICAgICAgICAkbm93LT5zZXRUaW1lem9uZSgkdGhpcy0+VVRDKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ICA9ICRub3ctPmZvcm1hdCgnWW1kSGlzJykuJ1onOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwoKICAgICAgICAkZGF0ZVN0cmluZyA9ICcyMDEyLTA5LTIzJzsKICAgICAgICAkb2JqZWN0ID0gbmV3IEdlbmVyYWxpemVkVGltZSgkZGF0ZVN0cmluZyk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSAnMjAxMjA5MjMwMDAwMDBaJzsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRleHBlY3RlZENvbnRlbnQsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgJGRhdGVTdHJpbmcgPSAnMTk4Ny0wMS0xNSAxMjoxMic7CiAgICAgICAgJG9iamVjdCA9IG5ldyBHZW5lcmFsaXplZFRpbWUoJGRhdGVTdHJpbmcpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gJzE5ODcwMTE1MTIxMjAwWic7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRkYXRlU3RyaW5nID0gJzIwMDgtMDctMDEgMjI6MzU6MTcuMDInOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigxOCk7CiAgICAgICAgJG9iamVjdCA9IG5ldyBHZW5lcmFsaXplZFRpbWUoJGRhdGVTdHJpbmcpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gJzIwMDgwNzAxMjIzNTE3LjAyWic7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRkYXRlU3RyaW5nID0gJzIwMDgtMDctMDEgMjI6MzU6MTcuMDI0NTQwJzsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMjEpOwogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbGl6ZWRUaW1lKCRkYXRlU3RyaW5nKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ICA9ICcyMDA4MDcwMTIyMzUxNy4wMjQ1NFonOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoREVSRW5jb2RpbmcoKQogICAgewogICAgICAgICRkYXRlVGltZSA9IG5ldyBEYXRlVGltZSgnMjAxMi0wOS0yMyAyMDoyMzoxNicsICR0aGlzLT5VVEMpOwogICAgICAgICRiaW5hcnlEYXRhICA9IGNocihJZGVudGlmaWVyOjpHRU5FUkFMSVpFRF9USU1FKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMTUpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICcyMDEyMDkyMzIwMjMxNlonOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBHZW5lcmFsaXplZFRpbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGRhdGVUaW1lLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoREVSRW5jb2RpbmdBbmRGcmFjdGlvbmFsU2Vjb25kc1BhcnQoKQogICAgewogICAgICAgICRkYXRlVGltZSA9IG5ldyBEYXRlVGltZSgnMjAxMi0wOS0yMyAyMjoyMTowMy41NDM1NDQwJywgJHRoaXMtPlVUQyk7CiAgICAgICAgJGJpbmFyeURhdGEgID0gY2hyKElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUUpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigyMik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJzIwMTIwOTIzMjIyMTAzLjU0MzU0NFonOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBHZW5lcmFsaXplZFRpbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGRhdGVUaW1lLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoQkVSRW5jb2RpbmdXaXRoTG9jYWxUaW1lWm9uZSgpCiAgICB7CiAgICAgICAgJGRhdGVUaW1lID0gbmV3IERhdGVUaW1lKCcyMDEyLTA5LTIzIDIwOjIzOjE2Jyk7CiAgICAgICAgJGJpbmFyeURhdGEgID0gY2hyKElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUUpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxNCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJzIwMTIwOTIzMjAyMzE2JzsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gR2VuZXJhbGl6ZWRUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRlVGltZSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEJFUkVuY29kaW5nV2l0aE90aGVyVGltZVpvbmUoKQogICAgewogICAgICAgICRkYXRlVGltZSA9IG5ldyBEYXRlVGltZSgnMjAxMi0wOS0yMyAyMjoxMzo1OScsICR0aGlzLT5VVEMpOwogICAgICAgICRiaW5hcnlEYXRhICA9IGNocihJZGVudGlmaWVyOjpHRU5FUkFMSVpFRF9USU1FKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMTkpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICcyMDEyMDkyMzE2MTM1OS0wNjAwJzsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gR2VuZXJhbGl6ZWRUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRlVGltZSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJGRhdGVUaW1lID0gbmV3IERhdGVUaW1lKCcyMDEyLTA5LTIzIDIyOjEzOjU5JywgJHRoaXMtPlVUQyk7CiAgICAgICAgJGJpbmFyeURhdGEgID0gY2hyKElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUUpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxOSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJzIwMTIwOTI0MDIxMzU5KzA0MDAnOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBHZW5lcmFsaXplZFRpbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGRhdGVUaW1lLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnlXaXRoREVSRW5jb2RpbmdBbmRGcmFjdGlvbmFsU2Vjb25kc1BhcnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEJFUkVuY29kaW5nV2l0aEZyYWN0aW9uYWxTZWNvbmRzUGFydEFuZE90aGVyVGltZVpvbmUoKQogICAgewogICAgICAgICRkYXRlVGltZSA9IG5ldyBEYXRlVGltZSgnMjAxMi0wOS0yMyAyMjoxMzo1OS41MjUnLCAkdGhpcy0+VVRDKTsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6R0VORVJBTElaRURfVElNRSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDIzKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAnMjAxMjA5MjMxNjEzNTkuNTI1LTA2MDAnOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBHZW5lcmFsaXplZFRpbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGRhdGVUaW1lLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/GeneralStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdlbmVyYWxTdHJpbmc7CgpjbGFzcyBHZW5lcmFsU3RyaW5nVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkdFTkVSQUxfU1RSSU5HLCAkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBHZW5lcmFsU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OkdFTkVSQUxfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdIZWxsbyBXb3JsZCcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbFN0cmluZygnJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBHZW5lcmFsU3RyaW5nKCcgICAgICAgICAgICAgJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnICAgICAgICAgICAgICcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbFN0cmluZygkc3RyaW5nKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gMiArIHN0cmxlbigkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldEJpbmFyeSgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocihJZGVudGlmaWVyOjpHRU5FUkFMX1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgR2VuZXJhbFN0cmluZygkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRzdHJpbmcsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgR2VuZXJhbFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEdlbmVyYWxTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgR2VuZXJhbFN0cmluZygnSGVsbG8gJyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBHZW5lcmFsU3RyaW5nKCcgV29ybGQnKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBHZW5lcmFsU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEdlbmVyYWxTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxNiwgJG9mZnNldCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/GraphicStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdyYXBoaWNTdHJpbmc7CgpjbGFzcyBHcmFwaGljU3RyaW5nVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgR3JhcGhpY1N0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OkdSQVBISUNfU1RSSU5HLCAkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBHcmFwaGljU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OkdSQVBISUNfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgR3JhcGhpY1N0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdIZWxsbyBXb3JsZCcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgR3JhcGhpY1N0cmluZygnJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBHcmFwaGljU3RyaW5nKCcgICAgICAgICAgICAgJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnICAgICAgICAgICAgICcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRvYmplY3QgPSBuZXcgR3JhcGhpY1N0cmluZygkc3RyaW5nKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gMiArIHN0cmxlbigkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldEJpbmFyeSgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocihJZGVudGlmaWVyOjpHUkFQSElDX1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgR3JhcGhpY1N0cmluZygkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRzdHJpbmcsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgR3JhcGhpY1N0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEdyYXBoaWNTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgR3JhcGhpY1N0cmluZygnSGVsbG8gJyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBHcmFwaGljU3RyaW5nKCcgV29ybGQnKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBHcmFwaGljU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEdyYXBoaWNTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxNiwgJG9mZnNldCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/IA5StringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXElBNVN0cmluZzsKCmNsYXNzIElBNVN0cmluZ1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IElBNVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OklBNV9TVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IElBNVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpJQTVfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgSUE1U3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0hlbGxvIFdvcmxkJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBJQTVTdHJpbmcoJycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJycsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgSUE1U3RyaW5nKCcgICAgICAgICAgICAgJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnICAgICAgICAgICAgICcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRvYmplY3QgPSBuZXcgSUE1U3RyaW5nKCRzdHJpbmcpOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgc3RybGVuKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkc3RyaW5nID0gJ0hlbGxvIFdvcmxkJzsKICAgICAgICAkZXhwZWN0ZWRUeXBlID0gY2hyKElkZW50aWZpZXI6OklBNV9TVFJJTkcpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocihzdHJsZW4oJHN0cmluZykpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IElBNVN0cmluZygkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRzdHJpbmcsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgSUE1U3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gSUE1U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdCwgJHBhcnNlZE9iamVjdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoT2Zmc2V0KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QxID0gbmV3IElBNVN0cmluZygnSGVsbG8gJyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBJQTVTdHJpbmcoJyBXb3JsZCcpOwoKICAgICAgICAkYmluYXJ5RGF0YSAgPSAkb3JpZ2luYWxPYmplY3QxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkb3JpZ2luYWxPYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IElBNVN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDgsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBJQTVTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxNiwgJG9mZnNldCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/IntegerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xBU04xXE9iamVjdDsKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKCmNsYXNzIEludGVnZXJUZXN0IGV4dGVuZHMgQVNOMVRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VHlwZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBJbnRlZ2VyKDEyMyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhJZGVudGlmaWVyOjpJTlRFR0VSLCAkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBJbnRlZ2VyKDEyMyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoSWRlbnRpZmllcjo6SU5URUdFUiksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENyZWF0ZUluc3RhbmNlQ2FuRmFpbCgpCiAgICB7CiAgICAgICAgbmV3IEludGVnZXIoJ2EnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcigxMjM0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDEyMzQsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcigtMTIzNCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygtMTIzNCwgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMCwgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgLy8gdGVzdCB3aXRoIG1heGltdW0gaW50ZWdlciB2YWx1ZQogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcihQSFBfSU5UX01BWCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhQSFBfSU5UX01BWCwgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgLy8gdGVzdCB3aXRoIG1pbmltdW0gaW50ZWdlciB2YWx1ZSBieSBuZWdhdGluZyB0aGUgbWF4IHZhbHVlCiAgICAgICAgJG9iamVjdCA9IG5ldyBJbnRlZ2VyKH5QSFBfSU5UX01BWCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyh+UEhQX0lOVF9NQVgsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRwb3NpdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgMTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRwb3NpdGl2ZU9iai0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkcG9zaXRpdmVPYmogPSBuZXcgSW50ZWdlcigxMjcpOwogICAgICAgICRuZWdhdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKC0xMjcpOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgMTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRwb3NpdGl2ZU9iai0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG5lZ2F0aXZlT2JqLT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRwb3NpdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKDEyOCk7CiAgICAgICAgJG5lZ2F0aXZlT2JqID0gbmV3IEludGVnZXIoLTEyOCk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyAyOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJHBvc2l0aXZlT2JqLT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkbmVnYXRpdmVPYmotPmdldE9iamVjdExlbmd0aCgpKTsKCiAgICAgICAgJHBvc2l0aXZlT2JqID0gbmV3IEludGVnZXIoMHg3RkZGKTsKICAgICAgICAkbmVnYXRpdmVPYmogPSBuZXcgSW50ZWdlcigtMHg3RkZGKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gMiArIDI7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkcG9zaXRpdmVPYmotPmdldE9iamVjdExlbmd0aCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRuZWdhdGl2ZU9iai0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkcG9zaXRpdmVPYmogPSBuZXcgSW50ZWdlcigweDgwMDApOwogICAgICAgICRuZWdhdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKC0weDgwMDApOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgMzsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRwb3NpdGl2ZU9iai0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG5lZ2F0aXZlT2JqLT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRwb3NpdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKDB4N0ZGRkZGKTsKICAgICAgICAkbmVnYXRpdmVPYmogPSBuZXcgSW50ZWdlcigtMHg3RkZGRkYpOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgMzsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRwb3NpdGl2ZU9iai0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG5lZ2F0aXZlT2JqLT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRwb3NpdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKDB4ODAwMDAwKTsKICAgICAgICAkbmVnYXRpdmVPYmogPSBuZXcgSW50ZWdlcigtMHg4MDAwMDApOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgNDsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRwb3NpdGl2ZU9iai0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG5lZ2F0aXZlT2JqLT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRwb3NpdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKDB4N0ZGRkZGRkYpOwogICAgICAgICRuZWdhdGl2ZU9iaiA9IG5ldyBJbnRlZ2VyKC0weDdGRkZGRkZGKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gMiArIDQ7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkcG9zaXRpdmVPYmotPmdldE9iamVjdExlbmd0aCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRuZWdhdGl2ZU9iai0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkZXhwZWN0ZWRUeXBlID0gY2hyKElkZW50aWZpZXI6OklOVEVHRVIpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDAxKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgPSBjaHIoMHgwMCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcigxMjcpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgPSBjaHIoMHg3Rik7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcigtMTI3KTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ID0gY2hyKDB4ODEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEludGVnZXIoMjAwKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMHgwMik7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCA9IGNocigweDAwKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50IC49IGNocigweEM4KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRleHBlY3RlZENvbnRlbnQsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBJbnRlZ2VyKC01NDYpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDAyKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ID0gY2hyKDB4RkQpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4REUpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IEludGVnZXIoNzQyMCk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoICAgPSBjaHIoMHgwMik7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSBjaHIoMHgxQyk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHhGQyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcigtMTg5MTAwNCk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoICAgPSBjaHIoMHgwMyk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSBjaHIoMHhFMyk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHgyNSk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHg0NCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RCaWdJbnRlZ2VyU3VwcG9ydCgpCiAgICB7CiAgICAgICAgLy8gUG9zaXRpdmUgYmlnaW50CiAgICAgICAgJGV4cGVjdGVkVHlwZSAgICAgPSBjaHIoSWRlbnRpZmllcjo6SU5URUdFUik7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoICAgPSBjaHIoMHgyMCk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSAiXHg3Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYiOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gIlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmIjsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50IC49ICJceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZiI7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSAiXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYiOwoKICAgICAgICAkYmlnaW50ID0gZ21wX3N0cnZhbChnbXBfc3ViKGdtcF9wb3coMiwgMjU1KSwgMSkpOwogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcigkYmlnaW50KTsKICAgICAgICAkYmluYXJ5ID0gJG9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkYmluYXJ5KTsKCiAgICAgICAgJG9iaiA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvYmosICRvYmplY3QpOwoKICAgICAgICAvLyBUZXN0IGEgbmVnYXRpdmUgbnVtYmVyCiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoICAgPSBjaHIoMHgyMSk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSAiXHgwMFx4ODBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIjsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50IC49ICJceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMCI7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSAiXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDAiOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gIlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAwIjsKICAgICAgICAkYmlnaW50ID0gZ21wX3N0cnZhbChnbXBfcG93KDIsIDI1NSkpOwogICAgICAgICRvYmplY3QgPSBuZXcgSW50ZWdlcigkYmlnaW50KTsKICAgICAgICAkYmluYXJ5ID0gJG9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkYmluYXJ5KTsKCiAgICAgICAgJG9iaiA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvYmplY3QsICRvYmopOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBiaWdJbnRlZ2Vyc1Byb3ZpZGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0U2VyaWFsaXplQmlnSW50ZWdlcnMoJGkpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBJbnRlZ2VyKCRpKTsKICAgICAgICAkYmluYXJ5ID0gJG9iamVjdC0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvYmogPSBPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb2JqLT5nZXRDb250ZW50KCksICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGJpZ0ludGVnZXJzUHJvdmlkZXIoKQogICAgewogICAgICAgIGZvciAoJGkgPSAxOyAkaSA8PSAyNTY7ICRpICo9IDIpIHsKICAgICAgICAgICAgLy8gMiBeIG4gWzAsIDI1Nl0gIGxhcmdlIHBvc2l0aXZlIG51bWJlcnMKICAgICAgICAgICAgeWllbGQgW2dtcF9zdHJ2YWwoZ21wX3BvdygyLCAkaSksIDEwKV07CiAgICAgICAgfQoKICAgICAgICBmb3IgKCRpID0gMTsgJGkgPD0gMjU2OyAkaSAqPSAyKSB7CiAgICAgICAgICAgIC8vIDAgLSAyIF4gbiBbMCwgMjU2XSAgbGFyZ2UgbmVnYXRpdmUgbnVtYmVycwogICAgICAgICAgICB5aWVsZCBbZ21wX3N0cnZhbChnbXBfc3ViKDAsIGdtcF9wb3coMiwgJGkpKSwgMTApXTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0R2V0QmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IEludGVnZXIoMjAwKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEludGVnZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKCiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IEludGVnZXIoMTIzNDUpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gSW50ZWdlcjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgSW50ZWdlcigtMTg5MTAwNCk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBJbnRlZ2VyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdCwgJHBhcnNlZE9iamVjdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoT2Zmc2V0KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QxID0gbmV3IEludGVnZXIoMTIzNDUpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDIgPSBuZXcgSW50ZWdlcig2Nzg5MCk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gSW50ZWdlcjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDQsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBJbnRlZ2VyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDIsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOSwgJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBBU04uMSBQYXJzZXIgRXhjZXB0aW9uIGF0IG9mZnNldCAyOiBBIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXIgc2hvdWxkIGhhdmUgYSBjb250ZW50IGxlbmd0aCBvZiBhdCBsZWFzdCAxLiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyAwCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoSW52YWxpZExlbmd0aDAxKCkKICAgIHsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6SU5URUdFUik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDApOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweEEwKTsKICAgICAgICBJbnRlZ2VyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/NullObjectTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CgpjbGFzcyBOdWxsT2JqZWN0VGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgTnVsbE9iamVjdCgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoSWRlbnRpZmllcjo6TlVMTCwgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgTnVsbE9iamVjdCgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6Ok5VTEwpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBOdWxsT2JqZWN0KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnTlVMTCcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgTnVsbE9iamVjdCgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMiwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IE51bGxPYmplY3QoKTsKICAgICAgICAkZXhwZWN0ZWRUeXBlID0gY2hyKElkZW50aWZpZXI6Ok5VTEwpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDAwKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0R2V0QmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IE51bGxPYmplY3QoKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE51bGxPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgTnVsbE9iamVjdCgpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDIgPSBuZXcgTnVsbE9iamVjdCgpOwoKICAgICAgICAkYmluYXJ5RGF0YSAgPSAkb3JpZ2luYWxPYmplY3QxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkb3JpZ2luYWxPYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE51bGxPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MSwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygyLCAkb2Zmc2V0KTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gTnVsbE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDQsICRvZmZzZXQpOwogICAgfQoKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgQVNOLjEgUGFyc2VyIEV4Y2VwdGlvbiBhdCBvZmZzZXQgMjogQW4gQVNOLjEgTnVsbCBzaG91bGQgbm90IGhhdmUgYSBsZW5ndGggb3RoZXIgdGhhbiB6ZXJvLiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyAxCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoSW52YWxpZExlbmd0aDAxKCkKICAgIHsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6TlVMTCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDEpOwogICAgICAgIE51bGxPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/NumericStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bWVyaWNTdHJpbmc7CgpjbGFzcyBOdW1lcmljU3RyaW5nVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgTnVtZXJpY1N0cmluZygnMTIzNCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoSWRlbnRpZmllcjo6TlVNRVJJQ19TVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJzEyMzQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpOVU1FUklDX1NUUklORyksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJzEyMyA0NSA2Nzg5MCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJzEyMyA0NSA2Nzg5MCcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgTnVtZXJpY1N0cmluZygnICAgICAgICAgICAgICcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJyAgICAgICAgICAgICAnLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0T2JqZWN0TGVuZ3RoKCkKICAgIHsKICAgICAgICAkc3RyaW5nID0gJzEyMyAgNCA1NTY3NyAwOTg3JzsKICAgICAgICAkb2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJHN0cmluZyk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyBzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnMTIzICA0IDU1Njc3IDA5ODcnOwogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6TlVNRVJJQ19TVFJJTkcpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocihzdHJsZW4oJHN0cmluZykpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kc3RyaW5nLCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0R2V0QmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJzEyMyA0NSAgNTMyMicpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gTnVtZXJpY1N0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aE9mZnNldCgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MSA9IG5ldyBOdW1lcmljU3RyaW5nKCcxMzI0IDAnKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IE51bWVyaWNTdHJpbmcoJzEgMiAzICcpOwoKICAgICAgICAkYmluYXJ5RGF0YSAgPSAkb3JpZ2luYWxPYmplY3QxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkb3JpZ2luYWxPYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE51bWVyaWNTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MSwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg4LCAkb2Zmc2V0KTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gTnVtZXJpY1N0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDE2LCAkb2Zmc2V0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENyZWF0ZVN0cmluZ1dpdGhWYWxpZENoYXJhY3RlcnMoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgTnVtZXJpY1N0cmluZygnMTIzNCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMocGFjaygnSConLCAnMTIwNDMxMzIzMzM0JyksICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJzMyMSA5OCA3NicpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMocGFjaygnSConLCAnMTIwOTMzMzIzMTIwMzkzODIwMzczNicpLCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDcmVhdGVTdHJpbmdXaXRoSW52YWxpZENoYXJhY3RlcnMoKQogICAgewogICAgICAgICRpbnZhbGlkU3RyaW5nID0gJ0hlbGxvIFdvcmxkJzsKICAgICAgICB0cnkgewogICAgICAgICAgICAkb2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJGludmFsaWRTdHJpbmcpOwogICAgICAgICAgICAkb2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAgICAgJHRoaXMtPmZhaWwoJ1Nob3VsZCBoYXZlIHRocm93biBhbiBleGNlcHRpb24nKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRleGNlcHRpb24pIHsKICAgICAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygiQ291bGQgbm90IGNyZWF0ZSBhIEFTTi4xIE51bWVyaWMgU3RyaW5nIGZyb20gdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSAneyRpbnZhbGlkU3RyaW5nfScuIiwgJGV4Y2VwdGlvbi0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICB9CgogICAgICAgICRpbnZhbGlkU3RyaW5nID0gJzEyMyw0NTYnOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRvYmplY3QgPSBuZXcgTnVtZXJpY1N0cmluZygkaW52YWxpZFN0cmluZyk7CiAgICAgICAgICAgICRvYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICAgICAkdGhpcy0+ZmFpbCgnU2hvdWxkIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbicpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGV4Y2VwdGlvbikgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCJDb3VsZCBub3QgY3JlYXRlIGEgQVNOLjEgTnVtZXJpYyBTdHJpbmcgZnJvbSB0aGUgY2hhcmFjdGVyIHNlcXVlbmNlICd7JGludmFsaWRTdHJpbmd9Jy4iLCAkZXhjZXB0aW9uLT5nZXRNZXNzYWdlKCkpOwogICAgICAgIH0KCiAgICAgICAgJGludmFsaWRTdHJpbmcgPSAnKzEyMzQ1Nic7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG9iamVjdCA9IG5ldyBOdW1lcmljU3RyaW5nKCRpbnZhbGlkU3RyaW5nKTsKICAgICAgICAgICAgJG9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgICAgICR0aGlzLT5mYWlsKCdTaG91bGQgaGF2ZSB0aHJvd24gYW4gZXhjZXB0aW9uJyk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoIkNvdWxkIG5vdCBjcmVhdGUgYSBBU04uMSBOdW1lcmljIFN0cmluZyBmcm9tIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgJ3skaW52YWxpZFN0cmluZ30nLiIsICRleGNlcHRpb24tPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQoKICAgICAgICAkaW52YWxpZFN0cmluZyA9ICctMTIzNDU2JzsKICAgICAgICB0cnkgewogICAgICAgICAgICAkb2JqZWN0ID0gbmV3IE51bWVyaWNTdHJpbmcoJGludmFsaWRTdHJpbmcpOwogICAgICAgICAgICAkb2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAgICAgJHRoaXMtPmZhaWwoJ1Nob3VsZCBoYXZlIHRocm93biBhbiBleGNlcHRpb24nKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRleGNlcHRpb24pIHsKICAgICAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygiQ291bGQgbm90IGNyZWF0ZSBhIEFTTi4xIE51bWVyaWMgU3RyaW5nIGZyb20gdGhlIGNoYXJhY3RlciBzZXF1ZW5jZSAneyRpbnZhbGlkU3RyaW5nfScuIiwgJGV4Y2VwdGlvbi0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/ObjectDescriptorTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdERlc2NyaXB0b3I7CgpjbGFzcyBPYmplY3REZXNjcmlwdG9yVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgT2JqZWN0RGVzY3JpcHRvcignTnVtZXJpY1N0cmluZyBjaGFyYWN0ZXIgYWJzdHJhY3Qgc3ludGF4Jyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUiwgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgT2JqZWN0RGVzY3JpcHRvcignTnVtZXJpY1N0cmluZyBjaGFyYWN0ZXIgYWJzdHJhY3Qgc3ludGF4Jyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoSWRlbnRpZmllcjo6T0JKRUNUX0RFU0NSSVBUT1IpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBPYmplY3REZXNjcmlwdG9yKCdQcmludGFibGVTdHJpbmcgY2hhcmFjdGVyIGFic3RyYWN0IHN5bnRheCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ1ByaW50YWJsZVN0cmluZyBjaGFyYWN0ZXIgYWJzdHJhY3Qgc3ludGF4JywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdCYXNpYyBFbmNvZGluZyBvZiBhIHNpbmdsZSBBU04uMSB0eXBlJzsKICAgICAgICAkb2JqZWN0ID0gbmV3IE9iamVjdERlc2NyaXB0b3IoJHN0cmluZyk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyBzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnQmFzaWMgRW5jb2Rpbmcgb2YgYSBzaW5nbGUgQVNOLjEgdHlwZSc7CiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocihJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUik7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgT2JqZWN0RGVzY3JpcHRvcigkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRzdHJpbmcsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgT2JqZWN0RGVzY3JpcHRvcignUHJpbnRhYmxlU3RyaW5nIGNoYXJhY3RlciBhYnN0cmFjdCBzeW50YXgnKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE9iamVjdERlc2NyaXB0b3I6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgT2JqZWN0RGVzY3JpcHRvcignTnVtZXJpY1N0cmluZyBjaGFyYWN0ZXIgYWJzdHJhY3Qgc3ludGF4Jyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBPYmplY3REZXNjcmlwdG9yKCdCYXNpYyBFbmNvZGluZyBvZiBhIHNpbmdsZSBBU04uMSB0eXBlJyk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gT2JqZWN0RGVzY3JpcHRvcjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDQxLCAkb2Zmc2V0KTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gT2JqZWN0RGVzY3JpcHRvcjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDgwLCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/ObjectIdentifierTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBPYmplY3RJZGVudGlmaWVyVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcRXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIFsxLkZvby4zXSBpcyBubyB2YWxpZCBvYmplY3QgaWRlbnRpZmllciAoc3ViIGlkZW50aWZpZXIgMiBpcyBub3QgbnVtZXJpYykhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q3JlYXRlV2l0aEludmFsaWRPYmplY3RJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICBuZXcgT2JqZWN0SWRlbnRpZmllcignMS5Gb28uMycpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VHlwZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMi4zJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJzEuMi4zJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNCwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMi4yNTAuMS4xNi45Jyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg4LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjMnKTsKICAgICAgICAkZXhwZWN0ZWRUeXBlICAgICA9IGNocihJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUik7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoICAgPSBjaHIoMHgwMik7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSBjaHIoMSAqIDQwICsgMik7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjI1MC4xLjE2LjknKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggICA9IGNocigweDA2KTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ICA9IGNocigxICogNDAgKyAyKTsgLy8gMS4yCiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMTI4IHwgMSk7ICAgIC8vIDI1MAogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDEyMik7ICAgICAgICAvLwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDEpOyAgICAgICAgICAvLyAgIDEKICAgICAgICAkZXhwZWN0ZWRDb250ZW50IC49IGNocigxNik7ICAgICAgICAgLy8gIDE2CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoOSk7ICAgICAgICAgIC8vICAgOQogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuMjUwLjEuMTYuOScpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gT2JqZWN0SWRlbnRpZmllcjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aE9mZnNldCgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MSA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuMycpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDIgPSBuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjI1MC4xLjE2LjknKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPYmplY3RJZGVudGlmaWVyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IE9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxMiwgJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBBU04uMSBQYXJzZXIgRXhjZXB0aW9uIGF0IG9mZnNldCA0OiBNYWxmb3JtZWQgQVNOLjEgT2JqZWN0IElkZW50aWZpZXIKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhNYWxmb3JtZWRPSUQoKQogICAgewogICAgICAgICRiaW5hcnlEYXRhICA9IGNocihJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDB4MDMpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocig0Mik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDEyOCB8IDEpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxMjggfCAxKTsKICAgICAgICBPYmplY3RJZGVudGlmaWVyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/OctetStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwoKY2xhc3MgT2N0ZXRTdHJpbmdUZXN0IGV4dGVuZHMgQVNOMVRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VHlwZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBPY3RldFN0cmluZygnMzAgMTQgMDYgMDggMkIgMDYgMDEgMDUgMDUgMDcgMDMgMDEgMDYgMDggMkIgMDYgMDEgMDUgMDUgMDcgMDMgMDInKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HLCAkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBPY3RldFN0cmluZygnMzAgMTQgMDYgMDggMkIgMDYgMDEgMDUgMDUgMDcgMDMgMDEgMDYgMDggMkIgMDYgMDEgMDUgMDUgMDcgMDMgMDInKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpPQ1RFVFNUUklORyksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IE9jdGV0U3RyaW5nKCdBMDEyMDBDMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0EwMTIwMEMzJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBPY3RldFN0cmluZygnQTAgMTIgMDAgQzMnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBMDEyMDBDMycsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoJ2EwIDEyIDAwIGMzJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnQTAxMjAwQzMnLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IE9jdGV0U3RyaW5nKCdBMCAxMiAwMCBjMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0EwMTIwMEMzJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBPY3RldFN0cmluZygweEEwMTIwMEMzKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdBMDEyMDBDMycsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoMHgwMCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygzLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoMHhGRik7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygzLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoMHhBMDAwKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDQsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBPY3RldFN0cmluZygweDNGMjAwMSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg1LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGhXaXRoVmVyeUxvbmdPY3RldFN0cmluZygpCiAgICB7CiAgICAgICAgJGhleFN0cmluZyA9ICcweCcuc3RyX3JlcGVhdCgnRkYnLCAxMDI0KTsKICAgICAgICAkb2JqZWN0ID0gbmV3IE9jdGV0U3RyaW5nKCRoZXhTdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMSArIDMgKyAxMDI0LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6T0NURVRTVFJJTkcpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDAxKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBPY3RldFN0cmluZygweEZGKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ID0gY2hyKDB4RkYpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IE9jdGV0U3RyaW5nKDB4RkZBMDM0KTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMHgwMyk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSBjaHIoMHhGRik7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHhBMCk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHgzNCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcobnVsbCk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKDB4MDApOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGgsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldEJpbmFyeUZvckxhcmdlT2N0ZXRTdHJpbmdzKCkKICAgIHsKICAgICAgICAkbnJPZkJ5dGVzID0gMTAyNDsKICAgICAgICAkaGV4U3RyaW5nID0gJzB4Jy5zdHJfcmVwZWF0KCdGRicsICRuck9mQnl0ZXMpOwogICAgICAgICRvYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoJGhleFN0cmluZyk7CgogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6T0NURVRTVFJJTkcpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDgwIHwgMHgwMik7ICAvLyBsb25nIGxlbmd0aCBmb3JtOiAyIGxlbmd0aCBvY3RldHMKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggLj0gY2hyKDEwMjQgPj4gOCk7ICAgLy8gZmlyc3QgOCBiaXQgb2YgMTAyNQogICAgICAgICRleHBlY3RlZExlbmd0aCAuPSBjaHIoMTAyNCAmIDB4RkYpOyAvLyBsYXN0IDggYml0IG9mIDEwMjUKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ID0gJyc7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5yT2ZCeXRlczsgJGkrKykgewogICAgICAgICAgICAkZXhwZWN0ZWRDb250ZW50IC49IGNocigweEZGKTsgICAvLyBjb250ZW50CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRleHBlY3RlZENvbnRlbnQsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoMHgxMik7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPY3RldFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgT2N0ZXRTdHJpbmcoMHgwMTAyMDNBMCk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPY3RldFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aE9mZnNldCgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MSA9IG5ldyBPY3RldFN0cmluZygweEEwKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IE9jdGV0U3RyaW5nKDB4MzE0NTEwKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPY3RldFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDMsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBPY3RldFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDgsICRvZmZzZXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RW1wdHlWYWx1ZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBPY3RldFN0cmluZyhudWxsKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RW1wdHkoJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDIsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/PrintableStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFByaW50YWJsZVN0cmluZzsKCmNsYXNzIFByaW50YWJsZVN0cmluZ1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OlBSSU5UQUJMRV9TVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpQUklOVEFCTEVfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0hlbGxvIFdvcmxkJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBQcmludGFibGVTdHJpbmcoJycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJycsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCcgICAgICAgICAgICAgJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnICAgICAgICAgICAgICcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRvYmplY3QgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCRzdHJpbmcpOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgc3RybGVuKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkc3RyaW5nID0gJ0hlbGxvIFdvcmxkJzsKICAgICAgICAkZXhwZWN0ZWRUeXBlID0gY2hyKElkZW50aWZpZXI6OlBSSU5UQUJMRV9TVFJJTkcpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocihzdHJsZW4oJHN0cmluZykpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRzdHJpbmcsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gUHJpbnRhYmxlU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdCwgJHBhcnNlZE9iamVjdCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoT2Zmc2V0KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QxID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gJyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBQcmludGFibGVTdHJpbmcoJyBXb3JsZCcpOwoKICAgICAgICAkYmluYXJ5RGF0YSAgPSAkb3JpZ2luYWxPYmplY3QxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkb3JpZ2luYWxPYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFByaW50YWJsZVN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDgsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBQcmludGFibGVTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxNiwgJG9mZnNldCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDcmVhdGVTdHJpbmdXaXRoVmFsaWRDaGFyYWN0ZXJzKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKHBhY2soJ0gqJywgJzEzMGI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0JyksICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8sIFdvcmxkPycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMocGFjaygnSConLCAnMTMwZDQ4NjU2YzZjNmYyYzIwNTc2ZjcyNmM2NDNmJyksICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygiKEhlbGxvKSAwMDAxMTAwICdXb3JsZCc/Iik7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhwYWNrKCdIKicsICcxMzE4Mjg0ODY1NmM2YzZmMjkyMDMwMzAzMDMxMzEzMDMwMjAyNzU3NmY3MjZjNjQyNzNmJyksICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gOj0gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKHBhY2soJ0gqJywgJzEzMGU0ODY1NmM2YzZmMjAzYTNkMjA1NzZmNzI2YzY0JyksICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENyZWF0ZVN0cmluZ1dpdGhJbnZhbGlkQ2hhcmFjdGVycygpCiAgICB7CiAgICAgICAgJGludmFsaWRTdHJpbmcgPSAnSGVsbG8g4pml4pml4pmlIFdvcmxkJzsKICAgICAgICB0cnkgewogICAgICAgICAgICAkb2JqZWN0ID0gbmV3IFByaW50YWJsZVN0cmluZygkaW52YWxpZFN0cmluZyk7CiAgICAgICAgICAgICRvYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICAgICAkdGhpcy0+ZmFpbCgnU2hvdWxkIGhhdmUgdGhyb3duIGFuIGV4Y2VwdGlvbicpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGV4Y2VwdGlvbikgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCJDb3VsZCBub3QgY3JlYXRlIGEgQVNOLjEgUHJpbnRhYmxlIFN0cmluZyBmcm9tIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UgJ3skaW52YWxpZFN0cmluZ30nLiIsICRleGNlcHRpb24tPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SXNQcmludGFibGVTdHJpbmcoKQogICAgewogICAgICAgICR2YWxpZFN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoUHJpbnRhYmxlU3RyaW5nOjppc1ZhbGlkKCR2YWxpZFN0cmluZykpOwoKICAgICAgICAkaW52YWxpZFN0cmluZyA9ICdIZWxsbyDimaXimaXimaUgV29ybGQnOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZShQcmludGFibGVTdHJpbmc6OmlzVmFsaWQoJGludmFsaWRTdHJpbmcpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/RelativeObjectIdentifierTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcjsKCmNsYXNzIFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllclRlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcignODc1MS4zLjInKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OlJFTEFUSVZFX09JRCwgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgUmVsYXRpdmVPYmplY3RJZGVudGlmaWVyKCc4NzUxLjMuMicpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OlJFTEFUSVZFX09JRCksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcignODc1MS4zLjInKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCc4NzUxLjMuMicsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgUmVsYXRpdmVPYmplY3RJZGVudGlmaWVyKCcxLjIuMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMiArIDMsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBSZWxhdGl2ZU9iamVjdElkZW50aWZpZXIoJzEuMi4yNTAuMS4xNi45Jyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygyICsgNywgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcignODU3MS4zLjInKTsKICAgICAgICAkZXhwZWN0ZWRUeXBlICAgICA9IGNocihJZGVudGlmaWVyOjpSRUxBVElWRV9PSUQpOwogICAgICAgICRleHBlY3RlZExlbmd0aCAgID0gY2hyKDB4MDQpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gY2hyKDB4QzIpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4N0IpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4MDMpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDB4MDIpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBSZWxhdGl2ZU9iamVjdElkZW50aWZpZXIoJzg1NzEuMy4yJyk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBSZWxhdGl2ZU9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgUmVsYXRpdmVPYmplY3RJZGVudGlmaWVyKCc4NTcxLjMuMicpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDIgPSBuZXcgUmVsYXRpdmVPYmplY3RJZGVudGlmaWVyKCc0NS4yLjM0NTUuMScpOwoKICAgICAgICAkYmluYXJ5RGF0YSAgPSAkb3JpZ2luYWxPYmplY3QxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkb3JpZ2luYWxPYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDYsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBSZWxhdGl2ZU9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxMywgJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBBU04uMSBQYXJzZXIgRXhjZXB0aW9uIGF0IG9mZnNldCA0OiBNYWxmb3JtZWQgQVNOLjEgUmVsYXRpdmUgT2JqZWN0IElkZW50aWZpZXIKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhNYWxmb3JtZWRPSUQoKQogICAgewogICAgICAgICRiaW5hcnlEYXRhICA9IGNocihJZGVudGlmaWVyOjpSRUxBVElWRV9PSUQpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigweDAzKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoNDIpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxMjggfCAxKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMTI4IHwgMSk7CiAgICAgICAgUmVsYXRpdmVPYmplY3RJZGVudGlmaWVyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/SequenceTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFByaW50YWJsZVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CgpjbGFzcyBTZXF1ZW5jZVRlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNlcXVlbmNlKCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhJZGVudGlmaWVyOjpTRVFVRU5DRSwgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpTRVFVRU5DRSksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkY2hpbGQxID0gbmV3IEludGVnZXIoMTIzKTsKICAgICAgICAkY2hpbGQyID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29sZCcpOwogICAgICAgICRjaGlsZDMgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNlcXVlbmNlKCRjaGlsZDEsICRjaGlsZDIsICRjaGlsZDMpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKFskY2hpbGQxLCAkY2hpbGQyLCAkY2hpbGQzXSwgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJGNoaWxkMSA9IG5ldyBCb29sZWFuKHRydWUpOwogICAgICAgICRvYmplY3QgPSBuZXcgU2VxdWVuY2UoJGNoaWxkMSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg1LCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRjaGlsZDEgPSBuZXcgSW50ZWdlcigxMjMpOwogICAgICAgICRjaGlsZDIgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNlcXVlbmNlKCRjaGlsZDEsICRjaGlsZDIpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkY2hpbGQxID0gbmV3IEludGVnZXIoMTIzKTsKICAgICAgICAkY2hpbGQyID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29sZCcpOwogICAgICAgICRjaGlsZDMgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNlcXVlbmNlKCRjaGlsZDEsICRjaGlsZDIsICRjaGlsZDMpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMjAsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldEJpbmFyeSgpCiAgICB7CiAgICAgICAgJGNoaWxkMSA9IG5ldyBCb29sZWFuKHRydWUpOwogICAgICAgICRvYmplY3QgPSBuZXcgU2VxdWVuY2UoJGNoaWxkMSk7CgogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6U0VRVUVOQ0UpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDAzKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ID0gJGNoaWxkMS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRjaGlsZDEgPSBuZXcgSW50ZWdlcigxMjMpOwogICAgICAgICRjaGlsZDIgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNlcXVlbmNlKCRjaGlsZDEsICRjaGlsZDIpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDA2KTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ICA9ICRjaGlsZDEtPmdldEJpbmFyeSgpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gJGNoaWxkMi0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0R2V0QmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IFNlcXVlbmNlKAogICAgICAgICAgICBuZXcgQm9vbGVhbih0cnVlKSwKICAgICAgICAgICAgbmV3IEludGVnZXIoMTIzNDU2NykKICAgICAgICApOwogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gU2VxdWVuY2U6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgU2VxdWVuY2UoCiAgICAgICAgICAgIG5ldyBCb29sZWFuKHRydWUpLAogICAgICAgICAgICBuZXcgSW50ZWdlcigxMjMpCiAgICAgICAgKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IFNlcXVlbmNlKAogICAgICAgICAgICBuZXcgSW50ZWdlcig2NCksCiAgICAgICAgICAgIG5ldyBCb29sZWFuKGZhbHNlKQogICAgICAgICk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gU2VxdWVuY2U6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MSwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg4LCAkb2Zmc2V0KTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gU2VxdWVuY2U6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxNiwgJG9mZnNldCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RTZXF1ZW5jZUFzQXJyYXkoKQogICAgewogICAgICAgICRzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRjaGlsZDEgPSBuZXcgSW50ZWdlcigxMjMpOwogICAgICAgICRjaGlsZDIgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCdIZWxsbyBXb2xkJyk7CiAgICAgICAgJGNoaWxkMyA9IG5ldyBCb29sZWFuKHRydWUpOwogICAgICAgICRjaGlsZDQgPSBuZXcgSW50ZWdlcigxMjM0NTY3KTsKCiAgICAgICAgJHNlcXVlbmNlW10gPSAkY2hpbGQxOwogICAgICAgICRzZXF1ZW5jZVtdID0gJGNoaWxkMjsKICAgICAgICAkc2VxdWVuY2VbJ2ZvbyddID0gJGNoaWxkMzsKCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkY2hpbGQxLCAkc2VxdWVuY2VbMF0pOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGNoaWxkMiwgJHNlcXVlbmNlWzFdKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRjaGlsZDMsICRzZXF1ZW5jZVsnZm9vJ10pOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMywgY291bnQoJHNlcXVlbmNlKSk7CgogICAgICAgIHVuc2V0KCRzZXF1ZW5jZVsxXSk7CiAgICAgICAgJHNlcXVlbmNlWydiYXInXSA9ICRjaGlsZDQ7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGNoaWxkMSwgJHNlcXVlbmNlWzBdKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoaXNzZXQoJHNlcXVlbmNlWzFdKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkY2hpbGQzLCAkc2VxdWVuY2VbJ2ZvbyddKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRjaGlsZDQsICRzZXF1ZW5jZVsnYmFyJ10pOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMywgY291bnQoJHNlcXVlbmNlKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RJdGVyYXRlU2VxdWVuY2UoKQogICAgewogICAgICAgICRzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgKICAgICAgICAgICAgbmV3IEludGVnZXIoMSksCiAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDIpLAogICAgICAgICAgICBuZXcgSW50ZWdlcigzKQogICAgICAgICk7CgogICAgICAgIGZvcmVhY2ggKCRzZXF1ZW5jZSBhcyAkb2JqZWN0KSB7CiAgICAgICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKEludGVnZXI6OmNsYXNzLCAkb2JqZWN0KTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDcmVhdGVFbXB0eVNlcXVlbmNlKCkKICAgIHsKICAgICAgICAkc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsgLy8gdGhpcyBzaG91bGQgYmUgbGVnYWwKICAgICAgICAkdGhpcy0+YXNzZXJ0RW1wdHkoJHNlcXVlbmNlKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/SetTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNldDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxQcmludGFibGVTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCb29sZWFuOwoKY2xhc3MgU2V0VGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgU2V0KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhJZGVudGlmaWVyOjpTRVQsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNldCgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OlNFVCksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb250ZW50KCkKICAgIHsKICAgICAgICAkY2hpbGQxID0gbmV3IEludGVnZXIoMTIzKTsKICAgICAgICAkY2hpbGQyID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29sZCcpOwogICAgICAgICRjaGlsZDMgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNldCgkY2hpbGQxLCAkY2hpbGQyLCAkY2hpbGQzKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhbJGNoaWxkMSwgJGNoaWxkMiwgJGNoaWxkM10sICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRjaGlsZDEgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNldCgkY2hpbGQxKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDUsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKCiAgICAgICAgJGNoaWxkMSA9IG5ldyBJbnRlZ2VyKDEyMyk7CiAgICAgICAgJGNoaWxkMiA9IG5ldyBCb29sZWFuKHRydWUpOwogICAgICAgICRvYmplY3QgPSBuZXcgU2V0KCRjaGlsZDEsICRjaGlsZDIpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwoKICAgICAgICAkY2hpbGQxID0gbmV3IEludGVnZXIoMTIzKTsKICAgICAgICAkY2hpbGQyID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29sZCcpOwogICAgICAgICRjaGlsZDMgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNldCgkY2hpbGQxLCAkY2hpbGQyLCAkY2hpbGQzKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDIwLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRjaGlsZDEgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNldCgkY2hpbGQxKTsKCiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocihJZGVudGlmaWVyOjpTRVQpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDAzKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ID0gJGNoaWxkMS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRjaGlsZDEgPSBuZXcgSW50ZWdlcigxMjMpOwogICAgICAgICRjaGlsZDIgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFNldCgkY2hpbGQxLCAkY2hpbGQyKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMHgwNik7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSAkY2hpbGQxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50IC49ICRjaGlsZDItPmdldEJpbmFyeSgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBTZXQoCiAgICAgICAgICAgIG5ldyBCb29sZWFuKHRydWUpLAogICAgICAgICAgICBuZXcgSW50ZWdlcigxMjM0NTY3KQogICAgICAgICk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBTZXQ6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKgogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgU2V0KAogICAgICAgICAgICBuZXcgQm9vbGVhbih0cnVlKSwKICAgICAgICAgICAgbmV3IEludGVnZXIoMTIzKQogICAgICAgICk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBTZXQoCiAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDY0KSwKICAgICAgICAgICAgbmV3IEJvb2xlYW4oZmFsc2UpCiAgICAgICAgKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBTZXQ6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MSwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg4LCAkb2Zmc2V0KTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gU2V0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDIsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMTYsICRvZmZzZXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0U2V0QXNBcnJheSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBTZXQoKTsKICAgICAgICAkY2hpbGQxID0gbmV3IEludGVnZXIoMTIzKTsKICAgICAgICAkY2hpbGQyID0gbmV3IFByaW50YWJsZVN0cmluZygnSGVsbG8gV29sZCcpOwogICAgICAgICRjaGlsZDMgPSBuZXcgQm9vbGVhbih0cnVlKTsKICAgICAgICAkY2hpbGQ0ID0gbmV3IEludGVnZXIoMTIzNDU2Nyk7CgogICAgICAgICRvYmplY3RbXSA9ICRjaGlsZDE7CiAgICAgICAgJG9iamVjdFtdID0gJGNoaWxkMjsKICAgICAgICAkb2JqZWN0Wydmb28nXSA9ICRjaGlsZDM7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGNoaWxkMSwgJG9iamVjdFswXSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkY2hpbGQyLCAkb2JqZWN0WzFdKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRjaGlsZDMsICRvYmplY3RbJ2ZvbyddKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDMsIGNvdW50KCRvYmplY3QpKTsKCiAgICAgICAgdW5zZXQoJG9iamVjdFsxXSk7CiAgICAgICAgJG9iamVjdFsnYmFyJ10gPSAkY2hpbGQ0OwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRjaGlsZDEsICRvYmplY3RbMF0pOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZShpc3NldCgkb2JqZWN0WzFdKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkY2hpbGQzLCAkb2JqZWN0Wydmb28nXSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkY2hpbGQ0LCAkb2JqZWN0WydiYXInXSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygzLCBjb3VudCgkb2JqZWN0KSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/T61StringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFQ2MVN0cmluZzsKCmNsYXNzIFQ2MVN0cmluZ1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFQ2MVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OlQ2MV9TVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFQ2MVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpUNjFfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVDYxU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0hlbGxvIFdvcmxkJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJG9iamVjdCA9IG5ldyBUNjFTdHJpbmcoJHN0cmluZyk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyBzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6VDYxX1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgVDYxU3RyaW5nKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJHN0cmluZywgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBUNjFTdHJpbmcoJ0hlbGxvIFdvcmxkJyk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBUNjFTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgVDYxU3RyaW5nKCdIZWxsbyAnKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IFQ2MVN0cmluZygnIFdvcmxkJyk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gVDYxU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFQ2MVN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDE2LCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/UniversalStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFVuaXZlcnNhbFN0cmluZzsKCmNsYXNzIFVuaXZlcnNhbFN0cmluZ1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFVuaXZlcnNhbFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OlVOSVZFUlNBTF9TVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFVuaXZlcnNhbFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpVTklWRVJTQUxfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVW5pdmVyc2FsU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ0hlbGxvIFdvcmxkJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJG9iamVjdCA9IG5ldyBVbml2ZXJzYWxTdHJpbmcoJHN0cmluZyk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyBzdHJsZW4oJHN0cmluZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRCaW5hcnkoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6VU5JVkVSU0FMX1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgVW5pdmVyc2FsU3RyaW5nKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJHN0cmluZywgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBVbml2ZXJzYWxTdHJpbmcoJ0hlbGxvIFdvcmxkJyk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBVbml2ZXJzYWxTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgVW5pdmVyc2FsU3RyaW5nKCdIZWxsbyAnKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IFVuaXZlcnNhbFN0cmluZygnIFdvcmxkJyk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gVW5pdmVyc2FsU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFVuaXZlcnNhbFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QyLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDE2LCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/UTCTimeTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFVUQ1RpbWU7CgpjbGFzcyBVVENUaW1lVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwcml2YXRlICRVVEM7CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFVwKCkKICAgIHsKICAgICAgICAkdGhpcy0+VVRDID0gbmV3IFxEYXRlVGltZVpvbmUoJ1VUQycpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VHlwZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBVVENUaW1lKCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhJZGVudGlmaWVyOjpVVENfVElNRSwgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVVRDVGltZSgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OlVUQ19USU1FKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldENvbnRlbnQoKQogICAgewogICAgICAgICRub3cgPSBuZXcgXERhdGVUaW1lKCk7CiAgICAgICAgJG5vdy0+c2V0VGltZXpvbmUoJHRoaXMtPlVUQyk7CiAgICAgICAgJG9iamVjdCA9IG5ldyBVVENUaW1lKCk7CiAgICAgICAgJGNvbnRlbnQgPSAkb2JqZWN0LT5nZXRDb250ZW50KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJGNvbnRlbnQgaW5zdGFuY2VvZiBcRGF0ZVRpbWUpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG5vdy0+Zm9ybWF0KERBVEVfUkZDMzMzOSksICRjb250ZW50LT5mb3JtYXQoREFURV9SRkMzMzM5KSk7CgogICAgICAgICR0aW1lU3RyaW5nID0gJzIwMTItMDktMjMgMjA6MjcnOwogICAgICAgICRkYXRlVGltZSA9IG5ldyBcRGF0ZVRpbWUoJHRpbWVTdHJpbmcsICR0aGlzLT5VVEMpOwogICAgICAgICRvYmplY3QgPSBuZXcgVVRDVGltZSgkdGltZVN0cmluZyk7CiAgICAgICAgJGNvbnRlbnQgPSAkb2JqZWN0LT5nZXRDb250ZW50KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJGNvbnRlbnQgaW5zdGFuY2VvZiBcRGF0ZVRpbWUpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGRhdGVUaW1lLT5mb3JtYXQoREFURV9SRkMzMzM5KSwgJGNvbnRlbnQtPmZvcm1hdChEQVRFX1JGQzMzMzkpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBVVENUaW1lKCk7CiAgICAgICAgJGV4cGVjdGVkU2l6ZSA9IDIgKyAxMzsgLy8gSWRlbnRpZmllciArIGxlbmd0aCArIFlZTU1EREhIbW1zc1oKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBVVENUaW1lKCcyMDEyLTA5LTIzJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTaXplLCAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgVVRDVGltZSgnMTk4Ny0wMS0xNSAxMjoxMjoxNicpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkZXhwZWN0ZWRUeXBlID0gY2hyKElkZW50aWZpZXI6OlVUQ19USU1FKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoMTMpOwoKICAgICAgICAkb2JqZWN0ID0gbmV3IFVUQ1RpbWUoKTsKICAgICAgICAkbm93ID0gbmV3IFxEYXRlVGltZSgpOwogICAgICAgICRub3ctPnNldFRpbWV6b25lKCR0aGlzLT5VVEMpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gJG5vdy0+Zm9ybWF0KCd5bWRIaXMnKS4nWic7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CgogICAgICAgICRkYXRlU3RyaW5nID0gJzIwMTItMDktMjMnOwogICAgICAgICRvYmplY3QgPSBuZXcgVVRDVGltZSgkZGF0ZVN0cmluZyk7CiAgICAgICAgJGRhdGUgPSBuZXcgXERhdGVUaW1lKCRkYXRlU3RyaW5nLCAkdGhpcy0+VVRDKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ICA9ICRkYXRlLT5mb3JtYXQoJ3ltZEhpcycpLidaJzsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRleHBlY3RlZENvbnRlbnQsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgJGRhdGVTdHJpbmcgPSAnMTk4Ny0wMS0xNSAxMjoxMic7CiAgICAgICAgJG9iamVjdCA9IG5ldyBVVENUaW1lKCRkYXRlU3RyaW5nKTsKICAgICAgICAkZGF0ZSA9IG5ldyBcRGF0ZVRpbWUoJGRhdGVTdHJpbmcsICR0aGlzLT5VVEMpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgID0gJGRhdGUtPmZvcm1hdCgneW1kSGlzJykuJ1onOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoREVSRW5jb2RpbmcoKQogICAgewogICAgICAgICRkYXRlVGltZSA9IG5ldyBcRGF0ZVRpbWUoJzIwMTItMDktMjMgMjA6MjM6MTYnLCAkdGhpcy0+VVRDKTsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6VVRDX1RJTUUpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxMyk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJzEyMDkyMzIwMjMxNlonOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBVVENUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRlVGltZSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEJFUkVuY29kaW5nV2l0aG91dFNlY29uZHNJblVUQygpCiAgICB7CiAgICAgICAgJGRhdGVUaW1lID0gbmV3IFxEYXRlVGltZSgnMTk4Ny0wMS0xNSAxMzoxNTowMCcsICR0aGlzLT5VVEMpOwogICAgICAgICRiaW5hcnlEYXRhICA9IGNocihJZGVudGlmaWVyOjpVVENfVElNRSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDEzKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAnODcwMTE1MTMxNVonOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBVVENUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRlVGltZSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEJFUkVuY29kaW5nV2l0aG91dFNlY29uZHNJbk90aGVyVGltZVpvbmUoKQogICAgewogICAgICAgICRkYXRlVGltZSA9IG5ldyBcRGF0ZVRpbWUoJzIwMTItMDktMjMgMjI6MTM6MDAnLCAkdGhpcy0+VVRDKTsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6VVRDX1RJTUUpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxMyk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJzEyMDkyMzE2MTMtMDYwMCc7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFVUQ1RpbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGRhdGVUaW1lLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwoKICAgICAgICAkZGF0ZVRpbWUgPSBuZXcgXERhdGVUaW1lKCcyMDEyLTA5LTIzIDIyOjEzOjAwJywgJHRoaXMtPlVUQyk7CiAgICAgICAgJGJpbmFyeURhdGEgID0gY2hyKElkZW50aWZpZXI6OlVUQ19USU1FKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMTMpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICcxMjA5MjQwMjEzKzA0MDAnOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBVVENUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRlVGltZSwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aEJFUkVuY29kaW5nV2l0aFNlY29uZHNJbk90aGVyVGltZVpvbmUoKQogICAgewogICAgICAgICRkYXRlVGltZSA9IG5ldyBcRGF0ZVRpbWUoJzIwMTItMDktMjMgMjI6MTM6MzInLCAkdGhpcy0+VVRDKTsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6VVRDX1RJTUUpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxMyk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJzEyMDkyMzE2MTMzMi0wNjAwJzsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gVVRDVGltZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZGF0ZVRpbWUsICRwYXJzZWRPYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRkYXRlVGltZSA9IG5ldyBcRGF0ZVRpbWUoJzIwMTItMDktMjMgMjI6MTM6MzInLCAkdGhpcy0+VVRDKTsKICAgICAgICAkYmluYXJ5RGF0YSAgPSBjaHIoSWRlbnRpZmllcjo6VVRDX1RJTUUpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocigxMyk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJzEyMDkyNDAyMTMzMiswNDAwJzsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gVVRDVGltZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZGF0ZVRpbWUsICRwYXJzZWRPYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeVdpdGhERVJFbmNvZGluZwogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnlXaXRoQkVSRW5jb2RpbmdXaXRob3V0U2Vjb25kc0luVVRDCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeVdpdGhCRVJFbmNvZGluZ1dpdGhvdXRTZWNvbmRzSW5PdGhlclRpbWVab25lCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeVdpdGhCRVJFbmNvZGluZ1dpdGhTZWNvbmRzSW5PdGhlclRpbWVab25lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRiaW5hcnlEYXRhICA9IGNocihJZGVudGlmaWVyOjpVVENfVElNRSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDExKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAnMTIwOTIzMTYxM1onOwogICAgICAgICRkYXRlVGltZTEgPSBuZXcgXERhdGVUaW1lKCcyMDEyLTA5LTIzIDE2OjEzOjAwJywgJHRoaXMtPlVUQyk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKElkZW50aWZpZXI6OlVUQ19USU1FKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMTMpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICcxMjA5MjMxODAwMzBaJzsKICAgICAgICAkZGF0ZVRpbWUyID0gbmV3IFxEYXRlVGltZSgnMjAxMi0wOS0yMyAxODowMDozMCcsICR0aGlzLT5VVEMpOwogICAgICAgICRiaW5hcnlEYXRhIC49IGNocihJZGVudGlmaWVyOjpVVENfVElNRSk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDE3KTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAnMTIwOTI0MDIxMzMyKzA0MDAnOwogICAgICAgICRkYXRlVGltZTMgPSBuZXcgXERhdGVUaW1lKCcyMDEyLTA5LTIzIDIyOjEzOjMyJywgJHRoaXMtPlVUQyk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBVVENUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRkYXRlVGltZTEsICRwYXJzZWRPYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxMywgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFVUQ1RpbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGRhdGVUaW1lMiwgJHBhcnNlZE9iamVjdC0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDI4LCAkb2Zmc2V0KTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gVVRDVGltZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZGF0ZVRpbWUzLCAkcGFyc2VkT2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNDcsICRvZmZzZXQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0VG9TdHJpbmcoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVVRDVGltZSgnMjAxMi0wOS0yMycpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoIjIwMTItMDktMjNcdDAwOjAwOjAwIiwgJG9iamVjdC0+X190b1N0cmluZygpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBVVENUaW1lKCcyMDEyLTA5LTIzIDIyOjEzOjQzJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygiMjAxMi0wOS0yM1x0MjI6MTM6NDMiLCAkb2JqZWN0LT5fX3RvU3RyaW5nKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/UTF8StringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFVURjhTdHJpbmc7CgpjbGFzcyBVVEY4U3RyaW5nVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVVRGOFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OlVURjhfU1RSSU5HLCAkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBVVEY4U3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OlVURjhfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVVRGOFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdIZWxsbyBXb3JsZCcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRvYmplY3QgPSBuZXcgVVRGOFN0cmluZygkc3RyaW5nKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gMiArIHN0cmxlbigkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldEJpbmFyeSgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocihJZGVudGlmaWVyOjpVVEY4X1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgVVRGOFN0cmluZygkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRzdHJpbmcsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgVVRGOFN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFVURjhTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgVVRGOFN0cmluZygnSGVsbG8gJyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBVVEY4U3RyaW5nKCcgV29ybGQnKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBVVEY4U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFVURjhTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxNiwgJG9mZnNldCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1/Universal/VisibleStringTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxBU04xXFVuaXZlcnNhbDsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFZpc2libGVTdHJpbmc7CgpjbGFzcyBWaXNpYmxlU3RyaW5nVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVmlzaWJsZVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKElkZW50aWZpZXI6OlZJU0lCTEVfU1RSSU5HLCAkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBWaXNpYmxlU3RyaW5nKCdIZWxsbyBXb3JsZCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OlZJU0lCTEVfU1RSSU5HKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnRlbnQoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgVmlzaWJsZVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCdIZWxsbyBXb3JsZCcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgVmlzaWJsZVN0cmluZygnJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnJywgJG9iamVjdC0+Z2V0Q29udGVudCgpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBWaXNpYmxlU3RyaW5nKCcgICAgICAgICAgICAgJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnICAgICAgICAgICAgICcsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRzdHJpbmcgPSAnSGVsbG8gV29ybGQnOwogICAgICAgICRvYmplY3QgPSBuZXcgVmlzaWJsZVN0cmluZygkc3RyaW5nKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gMiArIHN0cmxlbigkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFNpemUsICRvYmplY3QtPmdldE9iamVjdExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldEJpbmFyeSgpCiAgICB7CiAgICAgICAgJHN0cmluZyA9ICdIZWxsbyBXb3JsZCc7CiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocihJZGVudGlmaWVyOjpWSVNJQkxFX1NUUklORyk7CiAgICAgICAgJGV4cGVjdGVkTGVuZ3RoID0gY2hyKHN0cmxlbigkc3RyaW5nKSk7CgogICAgICAgICRvYmplY3QgPSBuZXcgVmlzaWJsZVN0cmluZygkc3RyaW5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZFR5cGUuJGV4cGVjdGVkTGVuZ3RoLiRzdHJpbmcsICRvYmplY3QtPmdldEJpbmFyeSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RHZXRCaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgVmlzaWJsZVN0cmluZygnSGVsbG8gV29ybGQnKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFZpc2libGVTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgVmlzaWJsZVN0cmluZygnSGVsbG8gJyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBWaXNpYmxlU3RyaW5nKCcgV29ybGQnKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBWaXNpYmxlU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoOCwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFZpc2libGVTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxNiwgJG9mZnNldCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/ASN1TestCase.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdDsKCmFic3RyYWN0IGNsYXNzIEFTTjFUZXN0Q2FzZSBleHRlbmRzIFxQSFBVbml0X0ZyYW1ld29ya19UZXN0Q2FzZQp7CiAgICAvKioKICAgICAqIENhbGwgYSBtZXRob2Qgb24gYW4gb2JqZWN0IHJlZ2FyZGxlc3Mgb2YgdGhlIHZpc2liaWxpdHkuCiAgICAgKgogICAgICogVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gdGVzdCBhICBwcm90ZWN0ZWQgb3IgcHJpdmF0ZSBtZXRob2QuCiAgICAgKiBOb3RlOiBUaGlzIGRvZXMgbm90IHN1cHBvcnQgcGFzc2luZyBwYXJhbWV0ZXJzIGJ5IHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gb2JqZWN0ICRvYmplY3QgVGhlIG9iamVjdCBvbiB3aGljaCB0aGUgbWV0aG9kIHdpbGwgYmUgY2FsbGVkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2ROYW1lIFRoZSBuYW1lIG9mIHRoZSBtZXRob2QKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFyZ3VtZW50cyBvcHRpb25hbCBhcmd1bWVudHMgb2YgdGhlIGNhbGxlZCBtZXRob2QuIE11bHRpcGxlIGFyZ3VtZW50cyBjYW4gYmUgcGFzc2VkIGFzIHZhcmlhYmxlLWxlbmd0aCBhcmd1bWVudCBsaXN0LgogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGxNZXRob2QoJG9iamVjdCwgJG1ldGhvZE5hbWUsICRhcmd1bWVudHMgPSBudWxsKQogICAgewogICAgICAgICRjbGFzc05hbWUgPSBnZXRfY2xhc3MoJG9iamVjdCk7CiAgICAgICAgJGNsYXNzID0gbmV3IFxSZWZsZWN0aW9uQ2xhc3MoJGNsYXNzTmFtZSk7CiAgICAgICAgJG1ldGhvZCA9ICRjbGFzcy0+Z2V0TWV0aG9kKCRtZXRob2ROYW1lKTsKICAgICAgICAkbWV0aG9kLT5zZXRBY2Nlc3NpYmxlKHRydWUpOwoKICAgICAgICAkYXJndW1lbnRzID0gZnVuY19nZXRfYXJncygpOwogICAgICAgIGFycmF5X3NoaWZ0KCRhcmd1bWVudHMpOwogICAgICAgIGFycmF5X3NoaWZ0KCRhcmd1bWVudHMpOwoKICAgICAgICByZXR1cm4gJG1ldGhvZC0+aW52b2tlQXJncygkb2JqZWN0LCAkYXJndW1lbnRzKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gYXNzZXJ0QmluYXJ5RXF1YWxzKCRleHBlY3RlZCwgJGFjdHVhbCkKICAgIHsKICAgICAgICAvLyBUT0RPIGFkZCBsb2dpYyB0byBtYWtlIHRoZSBlcnJvciBvdXRwdXQgcmVhZGFibGUKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZCwgJGFjdHVhbCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/DocumentationExamplesTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgUEhQQVNOMSB3cml0dGVuIGJ5IEZyaWVkcmljaCBHcm/Dn2UuCiAqCiAqIENvcHlyaWdodCDCqSBGcmllZHJpY2ggR3Jvw59lLCBCZXJsaW4gMjAxMgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdDsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxFbnVtZXJhdGVkOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXQ7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKCmNsYXNzIERvY3VtZW50YXRpb25FeGFtcGxlc1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RSRUFETUVfZW5jb2RpbmcoKQogICAgewogICAgICAgICR0aGlzLT5leHBlY3RPdXRwdXRTdHJpbmcoJ01CZ0NBd0hpUUFFQi93b0JBUllMU0dWc2JHOGdkMjl5YkdReE9EQVlBZ01CNGtBQkFmOEtBUUVXQzBobGJHeHZJSGR2Y214a0JRQUdCaXFCZWdFUUNRWUpLb1pJaHZjTkFRRUJFd2RHYjI4Z1ltRnknKTsKCiAgICAgICAgJGludGVnZXIgPSBuZXcgSW50ZWdlcigxMjM0NTYpOwogICAgICAgICRib29sZWFuID0gbmV3IEJvb2xlYW4odHJ1ZSk7CiAgICAgICAgJGVudW0gPSBuZXcgRW51bWVyYXRlZCgxKTsKICAgICAgICAkaWE1U3RyaW5nID0gbmV3IElBNVN0cmluZygnSGVsbG8gd29ybGQnKTsKCiAgICAgICAgJGFzbk51bGwgPSBuZXcgTnVsbE9iamVjdCgpOwogICAgICAgICRvYmplY3RJZGVudGlmaWVyMSA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCcxLjIuMjUwLjEuMTYuOScpOwogICAgICAgICRvYmplY3RJZGVudGlmaWVyMiA9IG5ldyBPYmplY3RJZGVudGlmaWVyKE9JRDo6UlNBX0VOQ1JZUFRJT04pOwogICAgICAgICRwcmludGFibGVTdHJpbmcgPSBuZXcgUHJpbnRhYmxlU3RyaW5nKCdGb28gYmFyJyk7CgogICAgICAgICRzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgkaW50ZWdlciwgJGJvb2xlYW4sICRlbnVtLCAkaWE1U3RyaW5nKTsKICAgICAgICAkc2V0ID0gbmV3IFNldCgkc2VxdWVuY2UsICRhc25OdWxsLCAkb2JqZWN0SWRlbnRpZmllcjEsICRvYmplY3RJZGVudGlmaWVyMiwgJHByaW50YWJsZVN0cmluZyk7CgogICAgICAgICRteUJpbmFyeSAgPSAkc2VxdWVuY2UtPmdldEJpbmFyeSgpOwogICAgICAgICRteUJpbmFyeSAuPSAkc2V0LT5nZXRCaW5hcnkoKTsKCiAgICAgICAgZWNobyBiYXNlNjRfZW5jb2RlKCRteUJpbmFyeSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RSRUFETUVfZGVjb2RpbmcoKQogICAgewogICAgICAgICRiYXNlNjRTdHJpbmcgPSAnTUJnQ0F3SGlRQUVCL3dvQkFSWUxTR1ZzYkc4Z2QyOXliR1F4T0RBWUFnTUI0a0FCQWY4S0FRRVdDMGhsYkd4dklIZHZjbXhrQlFBR0JpcUJlZ0VRQ1FZSktvWklodmNOQVFFQkV3ZEdiMjhnWW1GeSc7CiAgICAgICAgJGJpbmFyeURhdGEgPSBiYXNlNjRfZGVjb2RlKCRiYXNlNjRTdHJpbmcpOwoKICAgICAgICAkYXNuT2JqZWN0ID0gT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihTZXF1ZW5jZTo6Y2xhc3MsICRhc25PYmplY3QpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/CertificateExtensionTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxYNTA5OwoKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcWDUwOVxDZXJ0aWZpY2F0ZUV4dGVuc2lvbnM7CnVzZSBGR1xYNTA5XFNBTlxETlNOYW1lOwp1c2UgRkdcWDUwOVxTQU5cSVBBZGRyZXNzOwp1c2UgRkdcWDUwOVxTQU5cU3ViamVjdEFsdGVybmF0aXZlTmFtZXM7CgpjbGFzcyBDZXJ0aWZpY2F0ZUV4dGVuc2lvblRlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IENlcnRpZmljYXRlRXh0ZW5zaW9ucygpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoSWRlbnRpZmllcjo6U0VULCAkb2JqZWN0LT5nZXRUeXBlKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKGNocihJZGVudGlmaWVyOjpTRVQpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMoKTsKICAgICAgICAkY29udGVudCA9ICRvYmplY3QtPmdldENvbnRlbnQoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc19hcnJheSgkY29udGVudCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGNvdW50KCRjb250ZW50KSA9PSAwKTsKCiAgICAgICAgJHNhbnMgPSBuZXcgU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoKTsKICAgICAgICAkc2Fucy0+YWRkRG9tYWluTmFtZShuZXcgRE5TTmFtZSgnY29ydmVzcGFjZS5kZScpKTsKCiAgICAgICAgJG9iamVjdC0+YWRkU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoJHNhbnMpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGNvdW50KCRvYmplY3QtPmdldENvbnRlbnQoKSkgPT0gMSk7CiAgICAgICAgJHRoaXMtPmFzc2VydENvbnRhaW5zKCRzYW5zLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0T2JqZWN0TGVuZ3RoKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IENlcnRpZmljYXRlRXh0ZW5zaW9ucygpOwogICAgICAgICRvYmplY3RJZGVudGlmaWVyID0gbmV3IE9iamVjdElkZW50aWZpZXIoT0lEOjpDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FKTsKICAgICAgICAkc2FucyA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRzYW5zLT5hZGREb21haW5OYW1lKG5ldyBETlNOYW1lKCdjb3J2ZXNwYWNlLmRlJykpOwogICAgICAgICRvYmplY3QtPmFkZFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCRzYW5zKTsKCiAgICAgICAgJHNpemVPZkZpcnN0RXh0ZW5zaW9uU2VxdWVuY2UgPSAyICsgJG9iamVjdElkZW50aWZpZXItPmdldE9iamVjdExlbmd0aCgpICsgJHNhbnMtPmdldE9iamVjdExlbmd0aCgpOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgMiArICRzaXplT2ZGaXJzdEV4dGVuc2lvblNlcXVlbmNlOyAvLyBFeHRlbnNpb25zIGFyZSBzZXF1ZW5jZXMgb2YgT2JqZWN0IGlkZW50aWZpZXJzIGFuZCBvY3RldCBzdHJpbmdzIHRoYXQgYXJlIGNvbnRhaW5lZCBpbiBhIHNlcXVlbmNlIHdoaWNoIGlzIGNvbnRhaW5lZCBpbiBhIHNldAogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IENlcnRpZmljYXRlRXh0ZW5zaW9ucygpOwogICAgICAgICRvYmplY3RJZGVudGlmaWVyID0gbmV3IE9iamVjdElkZW50aWZpZXIoT0lEOjpDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FKTsKICAgICAgICAkc2FucyA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRzYW5zLT5hZGREb21haW5OYW1lKG5ldyBETlNOYW1lKCdjb3J2ZXNwYWNlLmRlJykpOwogICAgICAgICRvYmplY3QtPmFkZFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCRzYW5zKTsKCiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocihJZGVudGlmaWVyOjpTRVQpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigyICsgMiArICRvYmplY3RJZGVudGlmaWVyLT5nZXRPYmplY3RMZW5ndGgoKSArICRzYW5zLT5nZXRPYmplY3RMZW5ndGgoKSk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAgPSBjaHIoSWRlbnRpZmllcjo6U0VRVUVOQ0UpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKDIgKyAkb2JqZWN0SWRlbnRpZmllci0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAkc2Fucy0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gY2hyKElkZW50aWZpZXI6OlNFUVVFTkNFKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50IC49IGNocigkb2JqZWN0SWRlbnRpZmllci0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAkc2Fucy0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gJG9iamVjdElkZW50aWZpZXItPmdldEJpbmFyeSgpOwogICAgICAgICRleHBlY3RlZENvbnRlbnQgLj0gJHNhbnMtPmdldEJpbmFyeSgpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJGV4cGVjdGVkQ29udGVudCwgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMoKTsKICAgICAgICAkc2FucyA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRzYW5zLT5hZGREb21haW5OYW1lKG5ldyBETlNOYW1lKCdjb3J2ZXNwYWNlLmRlJykpOwogICAgICAgICRzYW5zLT5hZGRJUChuZXcgSVBBZGRyZXNzKCcxOTIuMTY4LjAuMScpKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QtPmFkZFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCRzYW5zKTsKCiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnM6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvYmplY3RJZGVudGlmaWVyID0gbmV3IE9iamVjdElkZW50aWZpZXIoT0lEOjpDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FKTsKCiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MSA9IG5ldyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMoKTsKICAgICAgICAkc2FuczEgPSBuZXcgU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoKTsKICAgICAgICAkc2FuczEtPmFkZERvbWFpbk5hbWUobmV3IEROU05hbWUoJ2NvcnZlc3BhY2UuZGUnKSk7CiAgICAgICAgJHNhbnMxLT5hZGRJUChuZXcgSVBBZGRyZXNzKCcxOTIuMTY4LjAuMScpKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QxLT5hZGRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygkc2FuczEpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IENlcnRpZmljYXRlRXh0ZW5zaW9ucygpOwogICAgICAgICRzYW5zMiA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRzYW5zMi0+YWRkRG9tYWluTmFtZShuZXcgRE5TTmFtZSgnZ29vZ2xlLmNvbScpKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyLT5hZGRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygkc2FuczIpOwoKICAgICAgICAkYmluYXJ5RGF0YSAgPSAkb3JpZ2luYWxPYmplY3QxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkb3JpZ2luYWxPYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IENlcnRpZmljYXRlRXh0ZW5zaW9uczo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkb2Zmc2V0QWZ0ZXJGaXJzdE9iamVjdCA9ICRzYW5zMS0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAkb2JqZWN0SWRlbnRpZmllci0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAyICArIDIgKyAyOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9mZnNldEFmdGVyRmlyc3RPYmplY3QsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnM6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb2Zmc2V0QWZ0ZXJGaXJzdE9iamVjdCArICRzYW5zMi0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAkb2JqZWN0SWRlbnRpZmllci0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAyICArIDIgKyAyLCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/CertificateSubjectTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxYNTA5OwoKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcWDUwOVxDZXJ0aWZpY2F0ZUV4dGVuc2lvbnM7CnVzZSBGR1xYNTA5XENlcnRpZmljYXRlU3ViamVjdDsKdXNlIEZHXFg1MDlcU0FOXEROU05hbWU7CnVzZSBGR1xYNTA5XFNBTlxJUEFkZHJlc3M7CnVzZSBGR1xYNTA5XFNBTlxTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczsKCmNsYXNzIENlcnRpZmljYXRlU3ViamVjdFRlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IENlcnRpZmljYXRlU3ViamVjdCgnRnJpZWRyaWNoIEdyb8OfZScsICdmcmllZHJpY2guZ3Jvc3NlQGZvby5kZScsICdPcmdhbml6YXRpb24nLCAnTG9jYWxpdHknLCAnU3RhdGUnLCAnQ291bnRyeScsICdPcmdhVW5pdCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoSWRlbnRpZmllcjo6U0VRVUVOQ0UsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IENlcnRpZmljYXRlU3ViamVjdCgnRnJpZWRyaWNoIEdyb8OfZScsICdmcmllZHJpY2guZ3Jvc3NlQGZvby5kZScsICdPcmdhbml6YXRpb24nLCAnTG9jYWxpdHknLCAnU3RhdGUnLCAnQ291bnRyeScsICdPcmdhVW5pdCcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKElkZW50aWZpZXI6OlNFUVVFTkNFKSwgJG9iamVjdC0+Z2V0SWRlbnRpZmllcigpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICR0aGlzLT5tYXJrVGVzdEluY29tcGxldGUoJ05vdCBpbXBsZW1lbnRlZCcpOwogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBDZXJ0aWZpY2F0ZVN1YmplY3QoJ0ZyaWVkcmljaCBHcm/Dn2UnLCAnZnJpZWRyaWNoLmdyb3NzZUBmb28uZGUnLCAnT3JnYW5pemF0aW9uJywgJ0xvY2FsaXR5JywgJ1N0YXRlJywgJ0NvdW50cnknLCAnT3JnYVVuaXQnKTsKCiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBDZXJ0aWZpY2F0ZVN1YmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvYmplY3RJZGVudGlmaWVyID0gbmV3IE9iamVjdElkZW50aWZpZXIoT0lEOjpDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FKTsKCiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MSA9IG5ldyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMoKTsKICAgICAgICAkc2FuczEgPSBuZXcgU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoKTsKICAgICAgICAkc2FuczEtPmFkZERvbWFpbk5hbWUobmV3IEROU05hbWUoJ2NvcnZlc3BhY2UuZGUnKSk7CiAgICAgICAgJHNhbnMxLT5hZGRJUChuZXcgSVBBZGRyZXNzKCcxOTIuMTY4LjAuMScpKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QxLT5hZGRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygkc2FuczEpOwoKICAgICAgICAkb3JpZ2luYWxPYmplY3QyID0gbmV3IENlcnRpZmljYXRlRXh0ZW5zaW9ucygpOwogICAgICAgICRzYW5zMiA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRzYW5zMi0+YWRkRG9tYWluTmFtZShuZXcgRE5TTmFtZSgnZ29vZ2xlLmNvbScpKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QyLT5hZGRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygkc2FuczIpOwoKICAgICAgICAkYmluYXJ5RGF0YSAgPSAkb3JpZ2luYWxPYmplY3QxLT5nZXRCaW5hcnkoKTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSAkb3JpZ2luYWxPYmplY3QyLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJG9mZnNldCA9IDA7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IENlcnRpZmljYXRlRXh0ZW5zaW9uczo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QxLCAkcGFyc2VkT2JqZWN0KTsKICAgICAgICAkb2Zmc2V0QWZ0ZXJGaXJzdE9iamVjdCA9ICRzYW5zMS0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAkb2JqZWN0SWRlbnRpZmllci0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAyICArIDIgKyAyOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9mZnNldEFmdGVyRmlyc3RPYmplY3QsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnM6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MiwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb2Zmc2V0QWZ0ZXJGaXJzdE9iamVjdCArICRzYW5zMi0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAkb2JqZWN0SWRlbnRpZmllci0+Z2V0T2JqZWN0TGVuZ3RoKCkgKyAyICArIDIgKyAyLCAkb2Zmc2V0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/CSR/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/CSR/AttributesTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxYNTA5XENTUjsKCnVzZSBGR1xUZXN0XEFTTjFUZXN0Q2FzZTsKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcWDUwOVxDU1JcQXR0cmlidXRlczsKdXNlIEZHXFg1MDlcQ2VydGlmaWNhdGVFeHRlbnNpb25zOwp1c2UgRkdcWDUwOVxTQU5cRE5TTmFtZTsKdXNlIEZHXFg1MDlcU0FOXFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOwoKY2xhc3MgQXR0cmlidXRlc1Rlc3QgZXh0ZW5kcyBBU04xVGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRUeXBlKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEF0dHJpYnV0ZXMoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDB4YTAsICRvYmplY3QtPmdldFR5cGUoKSk7ICAvLyBJZGVudGlmaWVyIGluZGljYXRlcyB0aGlzIG9iamVjdCBpcyBjb250ZXh0IHNwZWNpZmljIGFuZCBjb25zdHJ1Y3RlZAogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBBdHRyaWJ1dGVzKCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoMHhhMCksICRvYmplY3QtPmdldElkZW50aWZpZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRDb250ZW50KCkKICAgIHsKICAgICAgICAkYXR0cmlidXRlcyA9IG5ldyBBdHRyaWJ1dGVzKCk7CiAgICAgICAgJGNvbnRlbnQgPSAkYXR0cmlidXRlcy0+Z2V0Q29udGVudCgpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzX2FycmF5KCRjb250ZW50KSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygwLCBjb3VudCgkY29udGVudCkpOwoKICAgICAgICAkc2FucyA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRzYW5zLT5hZGREb21haW5OYW1lKG5ldyBETlNOYW1lKCdjb3J2ZXNwYWNlLmRlJykpOwogICAgICAgICRleHRlbnNpb25SZXF1ZXN0ID0gbmV3IENlcnRpZmljYXRlRXh0ZW5zaW9ucygpOwogICAgICAgICRleHRlbnNpb25SZXF1ZXN0LT5hZGRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygkc2Fucyk7CgogICAgICAgICRhdHRyaWJ1dGVzLT5hZGRBdHRyaWJ1dGUoT0lEOjpQS0NTOV9FWFRFTlNJT05fUkVRVUVTVCwgJGV4dGVuc2lvblJlcXVlc3QpOwogICAgICAgICRjb250ZW50ID0gJGF0dHJpYnV0ZXMtPmdldENvbnRlbnQoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc19hcnJheSgkY29udGVudCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMSwgY291bnQoJGNvbnRlbnQpKTsKCiAgICAgICAgLyoqIEB2YXIgU2VxdWVuY2UgJGF0dHJpYnV0ZSAqLwogICAgICAgICRhdHRyaWJ1dGUgPSAkY29udGVudFswXTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYXR0cmlidXRlIGluc3RhbmNlb2YgU2VxdWVuY2UpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMiwgJGF0dHJpYnV0ZS0+Z2V0TnVtYmVyb2ZDaGlsZHJlbigpKTsKICAgICAgICAkYXR0cmlidXRlQXJyYXkgPSAkYXR0cmlidXRlLT5nZXRDaGlsZHJlbigpOwoKICAgICAgICAkb2JqZWN0SWRlbnRpZmllciA9ICRhdHRyaWJ1dGVBcnJheVswXTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkb2JqZWN0SWRlbnRpZmllciBpbnN0YW5jZW9mIE9iamVjdElkZW50aWZpZXIpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoT0lEOjpQS0NTOV9FWFRFTlNJT05fUkVRVUVTVCwgJG9iamVjdElkZW50aWZpZXItPmdldENvbnRlbnQoKSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4dGVuc2lvblJlcXVlc3QsICRhdHRyaWJ1dGVBcnJheVsxXSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5KCkKICAgIHsKICAgICAgICAkb3JpZ2luYWxPYmplY3QgPSBuZXcgQXR0cmlidXRlcygpOwogICAgICAgICRzYW5zID0gbmV3IFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCk7CiAgICAgICAgJHNhbnMtPmFkZERvbWFpbk5hbWUobmV3IEROU05hbWUoJ2NvcnZlc3BhY2UuZGUnKSk7CiAgICAgICAgJGV4dGVuc2lvblJlcXVlc3QgPSBuZXcgQ2VydGlmaWNhdGVFeHRlbnNpb25zKCk7CiAgICAgICAgJGV4dGVuc2lvblJlcXVlc3QtPmFkZFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCRzYW5zKTsKICAgICAgICAkb3JpZ2luYWxPYmplY3QtPmFkZEF0dHJpYnV0ZShPSUQ6OlBLQ1M5X0VYVEVOU0lPTl9SRVFVRVNULCAkZXh0ZW5zaW9uUmVxdWVzdCk7CgogICAgICAgICRiaW5hcnlEYXRhID0gJG9yaWdpbmFsT2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gQXR0cmlidXRlczo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/DNSNameTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxYNTA5OwoKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcWDUwOVxTQU5cRE5TTmFtZTsKCmNsYXNzIEROU05hbWVUZXN0IGV4dGVuZHMgQVNOMVRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VHlwZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBETlNOYW1lKCd0ZXN0LmNvcnZlc3BhY2UuZGUnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDB4ODIsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IEROU05hbWUoJ3Rlc3QuY29ydmVzcGFjZS5kZScpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKDB4ODIpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBETlNOYW1lKCd0ZXN0LmNvcnZlc3BhY2UuZGUnKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCd0ZXN0LmNvcnZlc3BhY2UuZGUnLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0T2JqZWN0TGVuZ3RoKCkKICAgIHsKICAgICAgICAkc3RyaW5nID0gJ3Rlc3QuY29ydmVzcGFjZS5kZSc7CiAgICAgICAgJG9iamVjdCA9IG5ldyBETlNOYW1lKCRzdHJpbmcpOwogICAgICAgICRleHBlY3RlZFNpemUgPSAyICsgc3RybGVuKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkc3RyaW5nID0gJ3Rlc3QuY29ydmVzcGFjZS5kZSc7CiAgICAgICAgJGV4cGVjdGVkVHlwZSA9IGNocigweDgyKTsKICAgICAgICAkZXhwZWN0ZWRMZW5ndGggPSBjaHIoc3RybGVuKCRzdHJpbmcpKTsKCiAgICAgICAgJG9iamVjdCA9IG5ldyBETlNOYW1lKCRzdHJpbmcpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkVHlwZS4kZXhwZWN0ZWRMZW5ndGguJHN0cmluZywgJG9iamVjdC0+Z2V0QmluYXJ5KCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEdldEJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnkoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdCA9IG5ldyBETlNOYW1lKCd0ZXN0LmNvcnZlc3BhY2UuZGUnKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IEROU05hbWU6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0LCAkcGFyc2VkT2JqZWN0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgRE5TTmFtZSgndGVzdC5jb3J2ZXNwYWNlLmRlJyk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBETlNOYW1lKCdzdXBlcmRvbWFpbi5jb20nKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBETlNOYW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDEsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMjAsICRvZmZzZXQpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBETlNOYW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDIsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMzcsICRvZmZzZXQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/IPAddressTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxYNTA5OwoKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcWDUwOVxTQU5cSVBBZGRyZXNzOwoKY2xhc3MgSVBBZGRyZXNzVGVzdCBleHRlbmRzIEFTTjFUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFR5cGUoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgSVBBZGRyZXNzKCcxOTIuMTY4LjAuMScpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMHg4NywgJG9iamVjdC0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldElkZW50aWZpZXIoKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgSVBBZGRyZXNzKCcxOTIuMTY4LjAuMScpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoY2hyKDB4ODcpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBJUEFkZHJlc3MoJzE5Mi4xNjguMC4xJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnMTkyLjE2OC4wLjEnLCAkb2JqZWN0LT5nZXRDb250ZW50KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0T2JqZWN0TGVuZ3RoKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IElQQWRkcmVzcygnMTkyLjE2OC4wLjEnKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gNjsgLy8gVHlwZSArIExlbmd0aCArIDQgQnl0ZQogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkZXhwZWN0ZWRUeXBlID0gY2hyKDB4ODcpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocig0KTsKICAgICAgICAkaXBBZGRyZXNzICA9IGNocigxOTIpOwogICAgICAgICRpcEFkZHJlc3MgLj0gY2hyKDE2OCk7CiAgICAgICAgJGlwQWRkcmVzcyAuPSBjaHIoMCk7CiAgICAgICAgJGlwQWRkcmVzcyAuPSBjaHIoMSk7CiAgICAgICAgJG9iamVjdCA9IG5ldyBJUEFkZHJlc3MoJzE5Mi4xNjguMC4xJyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kaXBBZGRyZXNzLCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0R2V0QmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IElQQWRkcmVzcygnMTkyLjE2OC4wLjEnKTsKICAgICAgICAkYmluYXJ5RGF0YSA9ICRvcmlnaW5hbE9iamVjdC0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IElQQWRkcmVzczo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQoKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgQVNOLjEgUGFyc2VyIEV4Y2VwdGlvbiBhdCBvZmZzZXQgMjogQSBGR1xYNTA5XFNBTlxJUEFkZHJlc3Mgc2hvdWxkIGhhdmUgYSBjb250ZW50IGxlbmd0aCBvZiA0LiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyAyCiAgICAgKiBAZGVwZW5kcyB0ZXN0RnJvbUJpbmFyeQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEZyb21CaW5hcnlXaXRoV3JvbmdMZW5ndGhUaHJvd3NFeGNlcHRpb24oKQogICAgewogICAgICAgICRiaW5hcnlEYXRhICA9IGNocigweDg3KTsKICAgICAgICAkYmluYXJ5RGF0YSAuPSBjaHIoMik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDE5Mik7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gY2hyKDE2OCk7CiAgICAgICAgSVBBZGRyZXNzOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXBlbmRzIHRlc3RGcm9tQmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeVdpdGhPZmZzZXQoKQogICAgewogICAgICAgICRvcmlnaW5hbE9iamVjdDEgPSBuZXcgSVBBZGRyZXNzKCcxOTIuMTY4LjAuMScpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDIgPSBuZXcgSVBBZGRyZXNzKCcxMC42NS4zMi4xMjMnKTsKCiAgICAgICAgJGJpbmFyeURhdGEgID0gJG9yaWdpbmFsT2JqZWN0MS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJGJpbmFyeURhdGEgLj0gJG9yaWdpbmFsT2JqZWN0Mi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBJUEFkZHJlc3M6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MSwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyg2LCAkb2Zmc2V0KTsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gSVBBZGRyZXNzOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDIsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMTIsICRvZmZzZXQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/tests/X509/SubjectAlternativeNamesTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcVGVzdFxYNTA5OwoKdXNlIEZHXFRlc3RcQVNOMVRlc3RDYXNlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcWDUwOVxTQU5cRE5TTmFtZTsKdXNlIEZHXFg1MDlcU0FOXElQQWRkcmVzczsKdXNlIEZHXFg1MDlcU0FOXFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOwoKY2xhc3MgU3ViamVjdEFsdGVybmF0aXZlTmFtZXNUZXN0IGV4dGVuZHMgQVNOMVRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0VHlwZSgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoSWRlbnRpZmllcjo6T0NURVRTVFJJTkcsICRvYmplY3QtPmdldFR5cGUoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoSWRlbnRpZmllcjo6T0NURVRTVFJJTkcpLCAkb2JqZWN0LT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRjb250ZW50ID0gJG9iamVjdC0+Z2V0Q29udGVudCgpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzX2FycmF5KCRjb250ZW50KSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoY291bnQoJGNvbnRlbnQpID09IDApOwoKICAgICAgICAkZG5zTmFtZSA9IG5ldyBETlNOYW1lKCdjb3J2ZXNwYWNlLmRlJyk7CiAgICAgICAgJG9iamVjdC0+YWRkRG9tYWluTmFtZSgkZG5zTmFtZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoY291bnQoJG9iamVjdC0+Z2V0Q29udGVudCgpKSA9PSAxKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0Q29udGFpbnMoJGRuc05hbWUsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CgogICAgICAgICRpcEFkZHJlc3MgPSBuZXcgSVBBZGRyZXNzKCcxOTIuMTY4LjAuMScpOwogICAgICAgICRvYmplY3QtPmFkZElQKCRpcEFkZHJlc3MpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGNvdW50KCRvYmplY3QtPmdldENvbnRlbnQoKSkgPT0gMik7CiAgICAgICAgJHRoaXMtPmFzc2VydENvbnRhaW5zKCRpcEFkZHJlc3MsICRvYmplY3QtPmdldENvbnRlbnQoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRPYmplY3RMZW5ndGgoKQogICAgewogICAgICAgICRkbnNOYW1lID0gbmV3IEROU05hbWUoJ2V4YW1wbGUuZGhsLmNvbScpOwogICAgICAgICRvYmplY3QgPSBuZXcgU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoKTsKICAgICAgICAkb2JqZWN0LT5hZGREb21haW5OYW1lKCRkbnNOYW1lKTsKICAgICAgICAkZXhwZWN0ZWRTaXplID0gMiArIDIgKyAkZG5zTmFtZS0+Z2V0T2JqZWN0TGVuZ3RoKCk7IC8vIGFsbCByZWdpc3RlcmVkIFNBTnMgYXJlIGVuY2Fwc3VsYXRlZCBpbiBhIHNlcXVlbmNlIHdoaWNoIGlzIGVuY2Fwc3VsYXRlZCBpbiBhIG9jdGV0IHN0cmluZwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkU2l6ZSwgJG9iamVjdC0+Z2V0T2JqZWN0TGVuZ3RoKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0QmluYXJ5KCkKICAgIHsKICAgICAgICAkZG5zTmFtZSA9IG5ldyBETlNOYW1lKCdleGFtcGxlLmRobC5jb20nKTsKICAgICAgICAkb2JqZWN0ID0gbmV3IFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCk7CiAgICAgICAgJG9iamVjdC0+YWRkRG9tYWluTmFtZSgkZG5zTmFtZSk7CgogICAgICAgICRleHBlY3RlZFR5cGUgPSBjaHIoSWRlbnRpZmllcjo6T0NURVRTVFJJTkcpOwogICAgICAgICRleHBlY3RlZExlbmd0aCA9IGNocigweDEzKTsKICAgICAgICAkZXhwZWN0ZWRDb250ZW50ICA9IGNocihJZGVudGlmaWVyOjpTRVFVRU5DRSk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSBjaHIoMHgxMSk7CiAgICAgICAgJGV4cGVjdGVkQ29udGVudCAuPSAkZG5zTmFtZS0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRUeXBlLiRleHBlY3RlZExlbmd0aC4kZXhwZWN0ZWRDb250ZW50LCAkb2JqZWN0LT5nZXRCaW5hcnkoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGVwZW5kcyB0ZXN0R2V0QmluYXJ5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RnJvbUJpbmFyeSgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0ID0gbmV3IFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzKCk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0LT5hZGREb21haW5OYW1lKG5ldyBETlNOYW1lKCdjb3J2ZXNwYWNlLmRlJykpOwogICAgICAgICRvcmlnaW5hbE9iamVjdC0+YWRkSVAobmV3IElQQWRkcmVzcygnMTkyLjE2OC4wLjEnKSk7CiAgICAgICAgJGJpbmFyeURhdGEgPSAkb3JpZ2luYWxPYmplY3QtPmdldEJpbmFyeSgpOwogICAgICAgICRwYXJzZWRPYmplY3QgPSBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkb3JpZ2luYWxPYmplY3QsICRwYXJzZWRPYmplY3QpOwogICAgfQoKICAgIC8qKgogICAgICogQGRlcGVuZHMgdGVzdEZyb21CaW5hcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGcm9tQmluYXJ5V2l0aE9mZnNldCgpCiAgICB7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MSA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDEtPmFkZERvbWFpbk5hbWUobmV3IEROU05hbWUoJ2NvcnZlc3BhY2UuZGUnKSk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MS0+YWRkSVAobmV3IElQQWRkcmVzcygnMTkyLjE2OC4wLjEnKSk7CiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MS0+YWRkSVAobmV3IElQQWRkcmVzcygnMTAuMjE4LjAuMScpKTsKCiAgICAgICAgJG9yaWdpbmFsT2JqZWN0MiA9IG5ldyBTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcygpOwogICAgICAgICRvcmlnaW5hbE9iamVjdDItPmFkZERvbWFpbk5hbWUobmV3IEROU05hbWUoJ2dvb2dsZS5jb20nKSk7CgogICAgICAgICRiaW5hcnlEYXRhICA9ICRvcmlnaW5hbE9iamVjdDEtPmdldEJpbmFyeSgpOwogICAgICAgICRiaW5hcnlEYXRhIC49ICRvcmlnaW5hbE9iamVjdDItPmdldEJpbmFyeSgpOwoKICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gU3ViamVjdEFsdGVybmF0aXZlTmFtZXM6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXQpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yaWdpbmFsT2JqZWN0MSwgJHBhcnNlZE9iamVjdCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygzMSwgJG9mZnNldCk7CiAgICAgICAgJHBhcnNlZE9iamVjdCA9IFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRvcmlnaW5hbE9iamVjdDIsICRwYXJzZWRPYmplY3QpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNDcsICRvZmZzZXQpOwogICAgfQp9Cg==]]></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[IyBDSEFOR0VMT0cKCiMjIDYuMy4wIC0gMjAxNy0wNi0yMgoKKiBGZWF0dXJlOiBmb3JjZSBJUCByZXNvbHV0aW9uIChpcHY0IG9yIGlwdjYpIFsjMTYwOF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjA4KSwgWyMxNjU5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2NTkpCiogSW1wcm92ZW1lbnQ6IERvbid0IGluY2x1ZGUgc3VtbWFyeSBpbiBleGNlcHRpb24gbWVzc2FnZSB3aGVuIGJvZHkgaXMgZW1wdHkgWyMxNjIxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2MjEpCiogSW1wcm92ZW1lbnQ6IEhhbmRsZSBgb25faGVhZGVyc2Agb3B0aW9uIGluIE1vY2tIYW5kbGVyIFsjMTU4MF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNTgwKQoqIEltcHJvdmVtZW50OiBBZGRlZCBTVVNFIExpbnV4IENBIHBhdGggWyMxNjA5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTYwOSkKKiBJbXByb3ZlbWVudDogVXNlIGNsYXNzIHJlZmVyZW5jZSBmb3IgZ2V0dGluZyB0aGUgbmFtZSBvZiB0aGUgY2xhc3MgaW5zdGVhZCBvZiB1c2luZyBoYXJkY29kZWQgc3RyaW5ncyBbIzE2NDFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY0MSkKKiBGZWF0dXJlOiBBZGRlZCBgcmVhZF90aW1lb3V0YCBvcHRpb24gWyMxNjExXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2MTEpCiogQnVnIGZpeDogUEhQIDcueCBmaXhlcyBbIzE2ODVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY4NSksIFsjMTY4Nl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjg2KSwgWyMxODExXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE4MTEpCiogRGVwcmVjYXRpb246IEJhZFJlc3BvbnNlRXhjZXB0aW9uIGluc3RhbnRpYXRpb24gd2l0aG91dCBhIHJlc3BvbnNlIFsjMTY0Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjQyKQoqIEZlYXR1cmU6IEFkZGVkIE5UTE0gYXV0aCBbIzE1NjldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTU2OSkKKiBGZWF0dXJlOiBUcmFjayByZWRpcmVjdCBIVFRQIHN0YXR1cyBjb2RlcyBbIzE3MTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTcxMSkKKiBJbXByb3ZlbWVudDogQ2hlY2sgaGFuZGxlciB0eXBlIGR1cmluZyBjb25zdHJ1Y3Rpb24gWyMxNzQ1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE3NDUpCiogSW1wcm92ZW1lbnQ6IEFsd2F5cyBpbmNsdWRlIHRoZSBDb250ZW50LUxlbmd0aCBpZiB0aGVyZSdzIGEgYm9keSBbIzE3MjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTcyMSkKKiBGZWF0dXJlOiBBZGRlZCBjb252ZW5pZW5jZSBtZXRob2QgdG8gYWNjZXNzIGEgY29va2llIGJ5IG5hbWUgWyMxMzE4XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEzMTgpCiogQnVnIGZpeDogRmlsbCBgQ1VSTE9QVF9DQVBBVEhgIGFuZCBgQ1VSTE9QVF9DQUlORk9gIHByb3Blcmx5IFsjMTY4NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjg0KQoqIEltcHJvdmVtZW50OiAgCVVzZSBgXEd1enpsZUh0dHBcUHJvbWlzZVxyZWplY3Rpb25fZm9yYCBmdW5jdGlvbiBpbnN0ZWFkIG9mIG9iamVjdCBpbml0IFsjMTgyN10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xODI3KQoKCisgTWlub3IgY29kZSBjbGVhbnVwcywgZG9jdW1lbnRhdGlvbiBmaXhlcyBhbmQgY2xhcmlmaWNhdGlvbnMuCgojIyA2LjIuMyAtIDIwMTctMDItMjgKCiogRml4IGRlcHJlY2F0aW9ucyB3aXRoIGd1enpsZS9wc3I3IHZlcnNpb24gMS40CgojIyA2LjIuMiAtIDIwMTYtMTAtMDgKCiogQWxsb3cgdG8gcGFzcyBudWxsYWJsZSBSZXNwb25zZSB0byBkZWxheSBjYWxsYWJsZQoqIE9ubHkgYWRkIHNjaGVtZSB3aGVuIGhvc3QgaXMgcHJlc2VudAoqIEZpeCBkcmFpbiBjYXNlIHdoZXJlIGNvbnRlbnQtbGVuZ3RoIGlzIHRoZSBsaXRlcmFsIHN0cmluZyB6ZXJvCiogT2JmdXNjYXRlIGluLVVSTCBjcmVkZW50aWFscyBpbiBleGNlcHRpb25zCgojIyA2LjIuMSAtIDIwMTYtMDctMTgKCiogQWRkcmVzcyBIVFRQX1BST1hZIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHksIENWRS0yMDE2LTUzODU6CiAgaHR0cHM6Ly9odHRwb3h5Lm9yZy8KKiBGaXhpbmcgdGltZW91dCBidWcgd2l0aCBTdHJlYW1IYW5kbGVyOgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQ4OAoqIE9ubHkgcmVhZCB1cCB0byBgQ29udGVudC1MZW5ndGhgIGluIFBIUCBTdHJlYW1IYW5kbGVyIHRvIGF2b2lkIHRpbWVvdXRzIHdoZW4KICBhIHNlcnZlciBkb2VzIG5vdCBob25vciBgQ29ubmVjdGlvbjogY2xvc2VgLgoqIElnbm9yZSBVUkkgZnJhZ21lbnQgd2hlbiBzZW5kaW5nIHJlcXVlc3RzLgoKIyMgNi4yLjAgLSAyMDE2LTAzLTIxCgoqIEZlYXR1cmU6IGFkZGVkIGBHdXp6bGVIdHRwXGpzb25fZW5jb2RlYCBhbmQgYEd1enpsZUh0dHBcanNvbl9kZWNvZGVgLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTM4OQoqIEJ1ZyBmaXg6IEZpeCBzbGVlcCBjYWxjdWxhdGlvbiB3aGVuIHdhaXRpbmcgZm9yIGRlbGF5ZWQgcmVxdWVzdHMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzI0CiogRmVhdHVyZTogTW9yZSBmbGV4aWJsZSBoaXN0b3J5IGNvbnRhaW5lcnMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzczCiogQnVnIGZpeDogZGVmZXIgc2luayBzdHJlYW0gb3BlbmluZyBpbiBTdHJlYW1IYW5kbGVyLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTM3NwoqIEJ1ZyBmaXg6IGRvIG5vdCBhdHRlbXB0IHRvIGVzY2FwZSBjb29raWUgdmFsdWVzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQwNgoqIEZlYXR1cmU6IHJlcG9ydCBvcmlnaW5hbCBjb250ZW50IGVuY29kaW5nIGFuZCBsZW5ndGggb24gZGVjb2RlZCByZXNwb25zZXMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNDA5CiogQnVnIGZpeDogcmV3aW5kIHNlZWthYmxlIHJlcXVlc3QgYm9kaWVzIGJlZm9yZSBkaXNwYXRjaGluZyB0byBjVVJMLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTQyMgoqIEJ1ZyBmaXg6IHByb3ZpZGUgYW4gZW1wdHkgc3RyaW5nIHRvIGBodHRwX2J1aWxkX3F1ZXJ5YCBmb3IgSEhWTSB3b3JrYXJvdW5kLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTM2NwoKIyMgNi4xLjEgLSAyMDE1LTExLTIyCgoqIEJ1ZyBmaXg6IFByb3h5Ojp3cmFwU3luYygpIG5vdyBjb3JyZWN0bHkgcHJveGllcyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2NvbW1pdC85MTFiY2JjOGI0MzRhZGNlNjRlMjIzYTZkMWQxNGU5YThmNjNlNGU0CiogRmVhdHVyZTogSGFuZGxlclN0YWNrIGlzIG5vdyBtb3JlIGdlbmVyaWMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvY29tbWl0L2YyMTAyOTQxMzMxY2RhNTQ0NzQ1ZWVkZDk3ZmM4ZmQ0NmUxZWUzM2UKKiBCdWcgZml4OiBzZXR0aW5nIHZlcmlmeSB0byBmYWxzZSBpbiB0aGUgU3RyZWFtSGFuZGxlciBub3cgZGlzYWJsZXMgcGVlcgogIHZlcmlmaWNhdGlvbi4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzEyNTYKKiBGZWF0dXJlOiBNaWRkbGV3YXJlIG5vdyB1c2VzIGFuIGV4Y2VwdGlvbiBmYWN0b3J5LCBpbmNsdWRpbmcgbW9yZSBlcnJvcgogIGNvbnRleHQuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTI4MgoqIEZlYXR1cmU6IGJldHRlciBzdXBwb3J0IGZvciBkaXNhYmxlZCBmdW5jdGlvbnMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjg3CiogQnVnIGZpeDogZml4ZWQgcmVncmVzc2lvbiB3aGVyZSBNb2NrSGFuZGxlciB3YXMgbm90IHVzaW5nIGBzaW5rYC4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyOTIKCiMjIDYuMS4wIC0gMjAxNS0wOS0wOAoKKiBGZWF0dXJlOiBBZGRlZCB0aGUgYG9uX3N0YXRzYCByZXF1ZXN0IG9wdGlvbiB0byBwcm92aWRlIGFjY2VzcyB0byB0cmFuc2ZlcgogIHN0YXRpc3RpY3MgZm9yIHJlcXVlc3RzLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMDIKKiBGZWF0dXJlOiBBZGRlZCB0aGUgYWJpbGl0eSB0byBwZXJzaXN0IHNlc3Npb24gY29va2llcyBpbiBDb29raWVKYXJzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE5NQoqIEZlYXR1cmU6IFNvbWUgY29tcGF0aWJpbGl0eSB1cGRhdGVzIGZvciBHb29nbGUgQVBQIEVuZ2luZQogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIxNgoqIEZlYXR1cmU6IEFkZGVkIHN1cHBvcnQgZm9yIE5PX1BST1hZIHRvIHByZXZlbnQgdGhlIHVzZSBvZiBhIHByb3h5IGJhc2VkIG9uCiAgYSBzaW1wbGUgc2V0IG9mIHJ1bGVzLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExOTcKKiBGZWF0dXJlOiBDb29raWVzIGNhbiBub3cgY29udGFpbiBzcXVhcmUgYnJhY2tldHMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjM3CiogQnVnIGZpeDogTm93IGNvcnJlY3RseSBwYXJzaW5nIGA9YCBpbnNpZGUgb2YgcXVvdGVzIGluIENvb2tpZXMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjMyCiogQnVnIGZpeDogQ3Vzb3RtIGNVUkwgb3B0aW9ucyBub3cgY29ycmVjdGx5IG92ZXJyaWRlIGN1cmwgb3B0aW9ucyBvZiB0aGUKICBzYW1lIG5hbWUuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIyMQoqIEJ1ZyBmaXg6IENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgbm93IGFkZGVkIHdoZW4gdXNpbmcgYW4gZXhwbGljaXRseSBwcm92aWRlZAogIG11bHRpcGFydCBib2R5LiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMTgKKiBCdWcgZml4OiBOb3cgaWdub3JpbmcgU2V0LUNvb2tpZSBoZWFkZXJzIHRoYXQgaGF2ZSBubyBuYW1lLgoqIEJ1ZyBmaXg6IFJlYXNvbiBwaHJhc2UgaXMgbm8gbG9uZ2VyIGNhc3QgdG8gYW4gaW50IGluIHNvbWUgY2FzZXMgaW4gdGhlCiAgY1VSTCBoYW5kbGVyLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExODcKKiBCdWcgZml4OiBSZW1vdmUgdGhlIEF1dGhvcml6YXRpb24gaGVhZGVyIHdoZW4gcmVkaXJlY3RpbmcgaWYgdGhlIEhvc3QKICBoZWFkZXIgY2hhbmdlcy4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjA3CiogQnVnIGZpeDogQ29va2llIHBhdGggbWF0Y2hpbmcgZml4ZXMKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTEyOQoqIEJ1ZyBmaXg6IEZpeGluZyB0aGUgY1VSTCBgYm9keV9hc19zdHJpbmdgIHNldHRpbmcKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMDEKKiBCdWcgZml4OiBxdW90ZXMgYXJlIG5vIGxvbmdlciBzdHJpcHBlZCB3aGVuIHBhcnNpbmcgY29va2llcy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMTE3MgoqIEJ1ZyBmaXg6IGBmb3JtX3BhcmFtc2AgYW5kIGBxdWVyeWAgbm93IGFsd2F5cyB1c2VzIHRoZSBgJmAgc2VwYXJhdG9yLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE2MwoqIEJ1ZyBmaXg6IEFkZGluZyBhIENvbnRlbnQtTGVuZ3RoIHRvIFBIUCBzdHJlYW0gd3JhcHBlciByZXF1ZXN0cyBpZiBub3Qgc2V0LgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTE4OQoKIyMgNi4wLjIgLSAyMDE1LTA3LTA0CgoqIEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGN1cmwgaGFuZGxlcnMgaW4gd2hpY2ggcmVmZXJlbmNlcyB0byBjYWxsYmFja3MKICB3ZXJlIG5vdCBiZWluZyByZW1vdmVkIGJ5IGBjdXJsX3Jlc2V0YC4KKiBDb29raWVzIGFyZSBub3cgZXh0cmFjdGVkIHByb3Blcmx5IGJlZm9yZSByZWRpcmVjdHMuCiogQ29va2llcyBub3cgYWxsb3cgbW9yZSBjaGFyYWN0ZXIgcmFuZ2VzLgoqIERlY29kZWQgQ29udGVudC1FbmNvZGluZyByZXNwb25zZXMgYXJlIG5vdyBtb2RpZmllZCB0byBjb3JyZWN0bHkgcmVmbGVjdAogIHRoZWlyIHN0YXRlIGlmIHRoZSBlbmNvZGluZyB3YXMgYXV0b21hdGljYWxseSByZW1vdmVkIGJ5IGEgaGFuZGxlci4gVGhpcwogIG1lYW5zIHRoYXQgdGhlIGBDb250ZW50LUVuY29kaW5nYCBoZWFkZXIgbWF5IGJlIHJlbW92ZWQgYW4gdGhlCiAgYENvbnRlbnQtTGVuZ3RoYCBtb2RpZmllZCB0byByZWZsZWN0IHRoZSBtZXNzYWdlIHNpemUgYWZ0ZXIgcmVtb3ZpbmcgdGhlCiAgZW5jb2RpbmcuCiogQWRkZWQgYSBtb3JlIGV4cGxpY2l0IGVycm9yIG1lc3NhZ2Ugd2hlbiB0cnlpbmcgdG8gdXNlIGBmb3JtX3BhcmFtc2AgYW5kCiAgYG11bHRpcGFydGAgaW4gdGhlIHNhbWUgcmVxdWVzdC4KKiBTZXZlcmFsIGZpeGVzIGZvciBISFZNIHN1cHBvcnQuCiogRnVuY3Rpb25zIGFyZSBub3cgY29uZGl0aW9uYWxseSByZXF1aXJlZCB1c2luZyBhbiBhZGRpdGlvbmFsIGxldmVsIG9mCiAgaW5kaXJlY3Rpb24gdG8gaGVscCB3aXRoIGdsb2JhbCBDb21wb3NlciBpbnN0YWxsYXRpb25zLgoKIyMgNi4wLjEgLSAyMDE1LTA1LTI3CgoqIEZpeGVkIGEgYnVnIHdpdGggc2VyaWFsaXppbmcgdGhlIGBxdWVyeWAgcmVxdWVzdCBvcHRpb24gd2hlcmUgdGhlIGAmYAogIHNlcGFyYXRvciB3YXMgbWlzc2luZy4KKiBBZGRlZCBhIGJldHRlciBlcnJvciBtZXNzYWdlIGZvciB3aGVuIGBib2R5YCBpcyBwcm92aWRlZCBhcyBhbiBhcnJheS4gUGxlYXNlCiAgdXNlIGBmb3JtX3BhcmFtc2Agb3IgYG11bHRpcGFydGAgaW5zdGVhZC4KKiBWYXJpb3VzIGRvYyBmaXhlcy4KCiMjIDYuMC4wIC0gMjAxNS0wNS0yNgoKKiBTZWUgdGhlIFVQR1JBRElORy5tZCBkb2N1bWVudCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKiBBZGRlZCBgbXVsdGlwYXJ0YCBhbmQgYGZvcm1fcGFyYW1zYCByZXF1ZXN0IG9wdGlvbnMuCiogQWRkZWQgYHN5bmNocm9ub3VzYCByZXF1ZXN0IG9wdGlvbi4KKiBBZGRlZCB0aGUgYG9uX2hlYWRlcnNgIHJlcXVlc3Qgb3B0aW9uLgoqIEZpeGVkIGBleHBlY3RgIGhhbmRsaW5nLgoqIE5vIGxvbmdlciBhZGRpbmcgZGVmYXVsdCBtaWRkbGV3YXJlcyBpbiB0aGUgY2xpZW50IGN0b3IuIFRoZXNlIG5lZWQgdG8gYmUKICBwcmVzZW50IG9uIHRoZSBwcm92aWRlZCBoYW5kbGVyIGluIG9yZGVyIHRvIHdvcmsuCiogUmVxdWVzdHMgYXJlIG5vIGxvbmdlciBpbml0aWF0ZWQgd2hlbiBzZW5kaW5nIGFzeW5jIHJlcXVlc3RzIHdpdGggdGhlCiAgQ3VybE11bHRpSGFuZGxlci4gVGhpcyBwcmV2ZW50cyB1bmV4cGVjdGVkIHJlY3Vyc2lvbiBmcm9tIHJlcXVlc3RzIGNvbXBsZXRpbmcKICB3aGlsZSB0aWNraW5nIHRoZSBjVVJMIGxvb3AuCiogUmVtb3ZlZCB0aGUgc2VtYW50aWNzIG9mIHNldHRpbmcgYGRlZmF1bHRgIHRvIGB0cnVlYC4gVGhpcyBpcyBubyBsb25nZXIKICByZXF1aXJlZCBub3cgdGhhdCB0aGUgY1VSTCBsb29wIGlzIG5vdCB0aWNrZWQgZm9yIGFzeW5jIHJlcXVlc3RzLgoqIEFkZGVkIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGxvZ2dpbmcgbWlkZGxld2FyZS4KKiBObyBsb25nZXIgYWxsb3dpbmcgc2VsZiBzaWduZWQgY2VydGlmaWNhdGVzIHdoZW4gdXNpbmcgdGhlIFN0cmVhbUhhbmRsZXIuCiogRW5zdXJpbmcgdGhhdCBgc2lua2AgaXMgdmFsaWQgaWYgc2F2aW5nIHRvIGEgZmlsZS4KKiBSZXF1ZXN0IGV4Y2VwdGlvbnMgbm93IGluY2x1ZGUgYSAiaGFuZGxlciBjb250ZXh0IiB3aGljaCBwcm92aWRlcyBoYW5kbGVyCiAgc3BlY2lmaWMgY29udGV4dHVhbCBpbmZvcm1hdGlvbi4KKiBBZGRlZCBgR3V6emxlSHR0cFxSZXF1ZXN0T3B0aW9uc2AgdG8gYWxsb3cgcmVxdWVzdCBvcHRpb25zIHRvIGJlIGFwcGxpZWQKICB1c2luZyBjb25zdGFudHMuCiogYCRtYXhIYW5kbGVzYCBoYXMgYmVlbiByZW1vdmVkIGZyb20gQ3VybE11bHRpSGFuZGxlci4KKiBgTXVsdGlwYXJ0UG9zdEJvZHlgIGlzIG5vdyBwYXJ0IG9mIHRoZSBgZ3V6emxlaHR0cC9wc3I3YCBwYWNrYWdlLgoKIyMgNS4zLjAgLSAyMDE1LTA1LTE5CgoqIE1vY2sgbm93IHN1cHBvcnRzIGBzYXZlX3RvYAoqIE1hcmtlZCBgQWJzdHJhY3RSZXF1ZXN0RXZlbnQ6OmdldFRyYW5zYWN0aW9uKClgIGFzIHB1YmxpYy4KKiBGaXhlZCBhIGJ1ZyBpbiB3aGljaCBtdWx0aXBsZSBoZWFkZXJzIHVzaW5nIGRpZmZlcmVudCBjYXNpbmcgd291bGQgb3ZlcndyaXRlCiAgcHJldmlvdXMgaGVhZGVycyBpbiB0aGUgYXNzb2NpYXRpdmUgYXJyYXkuCiogQWRkZWQgYFV0aWxzOjpnZXREZWZhdWx0SGFuZGxlcigpYAoqIE1hcmtlZCBgR3V6emxlSHR0cFxDbGllbnQ6OmdldERlZmF1bHRVc2VyQWdlbnRgIGFzIGRlcHJlY2F0ZWQuCiogVVJMIHNjaGVtZSBpcyBub3cgYWx3YXlzIGxvd2VyY2FzZWQuCgojIyA2LjAuMC1iZXRhLjEKCiogUmVxdWlyZXMgUEhQID49IDUuNQoqIFVwZGF0ZWQgdG8gdXNlIFBTUi03CiAgKiBSZXF1aXJlcyBpbW11dGFibGUgbWVzc2FnZXMsIHdoaWNoIGJhc2ljYWxseSBtZWFucyBhbiBldmVudCBiYXNlZCBzeXN0ZW0KICAgIG93bmVkIGJ5IGEgcmVxdWVzdCBpbnN0YW5jZSBpcyBubyBsb25nZXIgcG9zc2libGUuCiAgKiBVdGlsaXppbmcgdGhlIFtHdXp6bGUgUFNSLTcgcGFja2FnZV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3KS4KICAqIFJlbW92ZWQgdGhlIGRlcGVuZGVuY3kgb24gYGd1enpsZWh0dHAvc3RyZWFtc2AuIFRoZXNlIHN0cmVhbSBhYnN0cmFjdGlvbnMKICAgIGFyZSBhdmFpbGFibGUgaW4gdGhlIGBndXp6bGVodHRwL3BzcjdgIHBhY2thZ2UgdW5kZXIgdGhlIGBHdXp6bGVIdHRwXFBzcjdgCiAgICBuYW1lc3BhY2UuCiogQWRkZWQgbWlkZGxld2FyZSBhbmQgaGFuZGxlciBzeXN0ZW0KICAqIFJlcGxhY2VkIHRoZSBHdXp6bGUgZXZlbnQgYW5kIHN1YnNjcmliZXIgc3lzdGVtIHdpdGggYSBtaWRkbGV3YXJlIHN5c3RlbS4KICAqIE5vIGxvbmdlciBkZXBlbmRzIG9uIFJpbmdQSFAsIGJ1dCByYXRoZXIgcGxhY2VzIHRoZSBIVFRQIGhhbmRsZXJzIGRpcmVjdGx5CiAgICBpbiBHdXp6bGUsIG9wZXJhdGluZyBvbiBQU1ItNyBtZXNzYWdlcy4KICAqIFJldHJ5IGxvZ2ljIGlzIG5vdyBlbmNhcHN1bGF0ZWQgaW4gYEd1enpsZUh0dHBcTWlkZGxld2FyZTo6cmV0cnlgLCB3aGljaAogICAgbWVhbnMgdGhlIGBndXp6bGVodHRwL3JldHJ5LXN1YnNjcmliZXJgIGlzIG5vdyBvYnNvbGV0ZS4KICAqIE1vY2tpbmcgcmVzcG9uc2VzIGlzIG5vdyBoYW5kbGVkIHVzaW5nIGBHdXp6bGVIdHRwXEhhbmRsZXJcTW9ja0hhbmRsZXJgLgoqIEFzeW5jaHJvbm91cyByZXNwb25zZXMKICAqIE5vIGxvbmdlciBzdXBwb3J0cyB0aGUgYGZ1dHVyZWAgcmVxdWVzdCBvcHRpb24gdG8gc2VuZCBhbiBhc3luYyByZXF1ZXN0LgogICAgSW5zdGVhZCwgdXNlIG9uZSBvZiB0aGUgYCpBc3luY2AgbWV0aG9kcyBvZiBhIGNsaWVudCAoZS5nLiwgYHJlcXVlc3RBc3luY2AsCiAgICBgZ2V0QXN5bmNgLCBldGMuKS4KICAqIFV0aWxpemluZyBgR3V6emxlSHR0cFxQcm9taXNlYCBpbnN0ZWFkIG9mIFJlYWN0J3MgcHJvbWlzZSBsaWJyYXJ5IHRvIGF2b2lkCiAgICByZWN1cnNpb24gcmVxdWlyZWQgYnkgY2hhaW5pbmcgYW5kIGZvcndhcmRpbmcgcmVhY3QgcHJvbWlzZXMuIFNlZQogICAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcwogICogQWRkZWQgYHJlcXVlc3RBc3luY2AgYW5kIGBzZW5kQXN5bmNgIHRvIHNlbmQgcmVxdWVzdCBhc3luY2hyb25vdXNseS4KICAqIEFkZGVkIG1hZ2ljIG1ldGhvZHMgZm9yIGBnZXRBc3luYygpYCwgYHBvc3RBc3luYygpYCwgZXRjLiB0byBzZW5kIHJlcXVlc3RzCiAgICBhc3luY2hyb25vdXNseS4KKiBSZXF1ZXN0IG9wdGlvbnMKICAqIFBPU1QgYW5kIGZvcm0gdXBkYXRlcwogICAgKiBBZGRlZCB0aGUgYGZvcm1fZmllbGRzYCBhbmQgYGZvcm1fZmlsZXNgIHJlcXVlc3Qgb3B0aW9ucy4KICAgICogUmVtb3ZlZCB0aGUgYEd1enpsZUh0dHBcUG9zdGAgbmFtZXNwYWNlLgogICAgKiBUaGUgYGJvZHlgIHJlcXVlc3Qgb3B0aW9uIG5vIGxvbmdlciBhY2NlcHRzIGFuIGFycmF5IGZvciBQT1NUIHJlcXVlc3RzLgogICogVGhlIGBleGNlcHRpb25zYCByZXF1ZXN0IG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZQogICAgYGh0dHBfZXJyb3JzYCByZXF1ZXN0IG9wdGlvbnMuCiAgKiBUaGUgYHNhdmVfdG9gIHJlcXVlc3Qgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYHNpbmtgIHJlcXVlc3QKICAgIG9wdGlvbi4KKiBDbGllbnRzIG5vIGxvbmdlciBhY2NlcHQgYW4gYXJyYXkgb2YgVVJJIHRlbXBsYXRlIHN0cmluZyBhbmQgdmFyaWFibGVzIGZvcgogIFVSSSB2YXJpYWJsZXMuIFlvdSB3aWxsIG5lZWQgdG8gZXhwYW5kIFVSSSB0ZW1wbGF0ZXMgYmVmb3JlIHBhc3NpbmcgdGhlbQogIGludG8gYSBjbGllbnQgY29uc3RydWN0b3Igb3IgcmVxdWVzdCBtZXRob2QuCiogQ2xpZW50IG1ldGhvZHMgYGdldCgpYCwgYHBvc3QoKWAsIGBwdXQoKWAsIGBwYXRjaCgpYCwgYG9wdGlvbnMoKWAsIGV0Yy4gYXJlCiAgbm93IG1hZ2ljIG1ldGhvZHMgdGhhdCB3aWxsIHNlbmQgc3luY2hyb25vdXMgcmVxdWVzdHMuCiogUmVwbGFjZWQgYFV0aWxzLnBocGAgd2l0aCBwbGFpbiBmdW5jdGlvbnMgaW4gYGZ1bmN0aW9ucy5waHBgLgoqIFJlbW92ZWQgYEd1enpsZUh0dHBcQ29sbGVjdGlvbmAuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxCYXRjaFJlc3VsdHNgLiBCYXRjaGVkIHBvb2wgcmVzdWx0cyBhcmUgbm93IHJldHVybmVkIGFzCiAgYW4gYXJyYXkuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxRdWVyeWAuIFF1ZXJ5IHN0cmluZyBoYW5kbGluZyBpcyBub3cgaGFuZGxlZCB1c2luZyBhbgogIGFzc29jaWF0aXZlIGFycmF5IHBhc3NlZCBpbnRvIHRoZSBgcXVlcnlgIHJlcXVlc3Qgb3B0aW9uLiBUaGUgcXVlcnkgc3RyaW5nCiAgaXMgc2VyaWFsaXplZCB1c2luZyBQSFAncyBgaHR0cF9idWlsZF9xdWVyeWAuIElmIHlvdSBuZWVkIG1vcmUgY29udHJvbCwgeW91CiAgY2FuIHBhc3MgdGhlIHF1ZXJ5IHN0cmluZyBpbiBhcyBhIHN0cmluZy4KKiBgR3V6emxlSHR0cFxRdWVyeVBhcnNlcmAgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCB0aGUKICBgR3V6emxlSHR0cFxQc3I3XHBhcnNlX3F1ZXJ5YC4KCiMjIDUuMi4wIC0gMjAxNS0wMS0yNwoKKiBBZGRlZCBgQXBwbGllc0hlYWRlcnNJbnRlcmZhY2VgIHRvIG1ha2UgYXBwbHlpbmcgaGVhZGVycyB0byBhIHJlcXVlc3QgYmFzZWQKICBvbiB0aGUgYm9keSBtb3JlIGdlbmVyaWMgYW5kIG5vdCBzcGVjaWZpYyB0byBgUG9zdEJvZHlJbnRlcmZhY2VgLgoqIFJlZHVjZWQgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgbmVlZGVkIHRvIHNlbmQgcmVxdWVzdHMuCiogTmVzdGVkIGZ1dHVyZXMgYXJlIG5vdyByZXNvbHZlZCBpbiB0aGUgY2xpZW50IHJhdGhlciB0aGFuIHRoZSBSZXF1ZXN0RnNtCiogRmluaXNoaW5nIHN0YXRlIHRyYW5zaXRpb25zIGlzIG5vdyBoYW5kbGVkIGluIHRoZSBSZXF1ZXN0RnNtIHJhdGhlciB0aGFuIHRoZQogIFJpbmdCcmlkZ2UuCiogQWRkZWQgYSBndWFyZCBpbiB0aGUgUG9vbCBjbGFzcyB0byBub3QgdXNlIHJlY3Vyc2lvbiBmb3IgcmVxdWVzdCByZXRyaWVzLgoKIyMgNS4xLjAgLSAyMDE0LTEyLTE5CgoqIFBvb2wgY2xhc3Mgbm8gbG9uZ2VyIHVzZXMgcmVjdXJzaW9uIHdoZW4gYSByZXF1ZXN0IGlzIGludGVyY2VwdGVkLgoqIFRoZSBzaXplIG9mIGEgUG9vbCBjYW4gbm93IGJlIGR5bmFtaWNhbGx5IGFkanVzdGVkIHVzaW5nIGEgY2FsbGJhY2suCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvOTQzLgoqIFNldHRpbmcgYSByZXF1ZXN0IG9wdGlvbiB0byBgbnVsbGAgd2hlbiBjcmVhdGluZyBhIHJlcXVlc3Qgd2l0aCBhIGNsaWVudCB3aWxsCiAgZW5zdXJlIHRoYXQgdGhlIG9wdGlvbiBpcyBub3Qgc2V0LiBUaGlzIGFsbG93cyB5b3UgdG8gb3ZlcndyaXRlIGRlZmF1bHQKICByZXF1ZXN0IG9wdGlvbnMgb24gYSBwZXItcmVxdWVzdCBiYXNpcy4KICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC85MzcuCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gbGltaXQgd2hpY2ggcHJvdG9jb2xzIGFyZSBhbGxvd2VkIGZvciByZWRpcmVjdHMgYnkKICBzcGVjaWZ5aW5nIGEgYHByb3RvY29sc2AgYXJyYXkgaW4gdGhlIGBhbGxvd19yZWRpcmVjdHNgIHJlcXVlc3Qgb3B0aW9uLgoqIE5lc3RlZCBmdXR1cmVzIGR1ZSB0byByZXRyaWVzIGFyZSBub3cgcmVzb2x2ZWQgd2hlbiB3YWl0aW5nIGZvciBzeW5jaHJvbm91cwogIHJlc3BvbnNlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvOTQ3LgoqIGAiMCJgIGlzIG5vdyBhbiBhbGxvd2VkIFVSSSBwYXRoLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzkzNS4KKiBgUXVlcnlgIG5vIGxvbmdlciB0eXBlaGludHMgb24gdGhlIGAkcXVlcnlgIGFyZ3VtZW50IGluIHRoZSBjb25zdHJ1Y3RvciwKICBhbGxvd2luZyBmb3Igc3RyaW5ncyBhbmQgYXJyYXlzLgoqIEV4Y2VwdGlvbnMgdGhyb3duIGluIHRoZSBgZW5kYCBldmVudCBhcmUgbm93IGNvcnJlY3RseSB3cmFwcGVkIHdpdGggR3V6emxlCiAgc3BlY2lmaWMgZXhjZXB0aW9ucyBpZiBuZWNlc3NhcnkuCgojIyA1LjAuMyAtIDIwMTQtMTEtMDMKClRoaXMgY2hhbmdlIHVwZGF0ZXMgcXVlcnkgc3RyaW5ncyBzbyB0aGF0IHRoZXkgYXJlIHRyZWF0ZWQgYXMgdW4tZW5jb2RlZCB2YWx1ZXMKYnkgZGVmYXVsdCB3aGVyZSB0aGUgdmFsdWUgcmVwcmVzZW50cyBhbiB1bi1lbmNvZGVkIHZhbHVlIHRvIHNlbmQgb3ZlciB0aGUKd2lyZS4gQSBRdWVyeSBvYmplY3QgdGhlbiBlbmNvZGVzIHRoZSB2YWx1ZSBiZWZvcmUgc2VuZGluZyBvdmVyIHRoZSB3aXJlLiBUaGlzCm1lYW5zIHRoYXQgZXZlbiB2YWx1ZSBxdWVyeSBzdHJpbmcgdmFsdWVzIChlLmcuLCAiOiIpIGFyZSB1cmwgZW5jb2RlZC4gVGhpcwptYWtlcyB0aGUgUXVlcnkgY2xhc3MgbWF0Y2ggUEhQJ3MgaHR0cF9idWlsZF9xdWVyeSBmdW5jdGlvbi4gSG93ZXZlciwgaWYgeW91CndhbnQgdG8gc2VuZCByZXF1ZXN0cyBvdmVyIHRoZSB3aXJlIHVzaW5nIHZhbGlkIHF1ZXJ5IHN0cmluZyBjaGFyYWN0ZXJzIHRoYXQgZG8Kbm90IG5lZWQgdG8gYmUgZW5jb2RlZCwgdGhlbiB5b3UgY2FuIHByb3ZpZGUgYSBzdHJpbmcgdG8gVXJsOjpzZXRRdWVyeSgpIGFuZApwYXNzIHRydWUgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzcGVjaWZ5IHRoYXQgdGhlIHF1ZXJ5IHN0cmluZyBpcyBhIHJhdwpzdHJpbmcgdGhhdCBzaG91bGQgbm90IGJlIHBhcnNlZCBvciBlbmNvZGVkICh1bmxlc3MgYSBjYWxsIHRvIGdldFF1ZXJ5KCkgaXMKc3Vic2VxdWVudGx5IG1hZGUsIGZvcmNpbmcgdGhlIHF1ZXJ5LXN0cmluZyB0byBiZSBjb252ZXJ0ZWQgaW50byBhIFF1ZXJ5Cm9iamVjdCkuCgojIyA1LjAuMiAtIDIwMTQtMTAtMzAKCiogQWRkZWQgYSB0cmFpbGluZyBgXHJcbmAgdG8gbXVsdGlwYXJ0L2Zvcm0tZGF0YSBwYXlsb2Fkcy4gU2VlCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC84NzEKKiBBZGRlZCBhIGBHdXp6bGVIdHRwXFBvb2w6OnNlbmQoKWAgY29udmVuaWVuY2UgbWV0aG9kIHRvIG1hdGNoIHRoZSBkb2NzLgoqIFN0YXR1cyBjb2RlcyBhcmUgbm93IHJldHVybmVkIGFzIGludGVnZXJzLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODgxCiogTm8gbG9uZ2VyIG92ZXJ3cml0aW5nIGFuIGV4aXN0aW5nIGBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGhlYWRlcgogIHdoZW4gc2VuZGluZyBQT1NUIHJlcXVlc3RzLCBhbGxvd2luZyBmb3IgY3VzdG9taXplZCBoZWFkZXJzLiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODc3CiogSW1wcm92ZWQgcGF0aCBVUkwgc2VyaWFsaXphdGlvbi4KCiAgKiBObyBsb25nZXIgZG91YmxlIHBlcmNlbnQtZW5jb2RpbmcgY2hhcmFjdGVycyBpbiB0aGUgcGF0aCBvciBxdWVyeSBzdHJpbmcgaWYKICAgIHRoZXkgYXJlIGFscmVhZHkgZW5jb2RlZC4KICAqIE5vdyBwcm9wZXJseSBlbmNvZGluZyB0aGUgc3VwcGxpZWQgcGF0aCB0byBhIFVSTCBvYmplY3QsIGluc3RlYWQgb2Ygb25seQogICAgZW5jb2RpbmcgJyAnIGFuZCAnPycuCiAgKiBOb3RlOiBUaGlzIGhhcyBiZWVuIGNoYW5nZWQgaW4gNS4wLjMgdG8gbm93IGVuY29kZSBxdWVyeSBzdHJpbmcgdmFsdWVzIGJ5CiAgICBkZWZhdWx0IHVubGVzcyB0aGUgYHJhd1N0cmluZ2AgYXJndW1lbnQgaXMgcHJvdmlkZWQgd2hlbiBzZXR0aW5nIHRoZSBxdWVyeQogICAgc3RyaW5nIG9uIGEgVVJMOiBOb3cgYWxsb3dpbmcgbWFueSBtb3JlIGNoYXJhY3RlcnMgdG8gYmUgcHJlc2VudCBpbiB0aGUKICAgIHF1ZXJ5IHN0cmluZyB3aXRob3V0IGJlaW5nIHBlcmNlbnQgZW5jb2RlZC4gU2VlIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjYXBwZW5kaXgtQQoKIyMgNS4wLjEgLSAyMDE0LTEwLTE2CgpCdWdmaXggcmVsZWFzZS4KCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgY29ubmVjdGlvbiBlcnJvcnMgc3RpbGwgcmV0dXJuZWQgcmVzcG9uc2Ugb2JqZWN0IGluCiAgZXJyb3IgYW5kIGVuZCBldmVudHMgZXZlbnQgdGhvdWdoIHRoZSByZXNwb25zZSBpcyB1bnVzYWJsZS4gVGhpcyBoYXMgYmVlbgogIGNvcnJlY3RlZCBzbyB0aGF0IGEgcmVzcG9uc2UgaXMgbm90IHJldHVybmVkIGluIHRoZSBgZ2V0UmVzcG9uc2VgIG1ldGhvZCBvZgogIHRoZXNlIGV2ZW50cyBpZiB0aGUgcmVzcG9uc2UgZGlkIG5vdCBjb21wbGV0ZS4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzg2NwoqIEZpeGVkIGFuIGlzc3VlIHdoZXJlIHRyYW5zZmVyIHN0YXRpc3RpY3Mgd2VyZSBub3QgYmVpbmcgcG9wdWxhdGVkIGluIHRoZQogIFJpbmdCcmlkZ2UuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy84NjYKCiMjIDUuMC4wIC0gMjAxNC0xMC0xMgoKQWRkaW5nIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyByZXNwb25zZXMgYW5kIHNvbWUgbWlub3IgQVBJIGNsZWFudXAuCgojIyMgTmV3IEZlYXR1cmVzCgoqIEFkZGVkIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyByZXNwb25zZXMgYmFzZWQgb24gYGd1enpsZWh0dHAvZ3V6emxlLXJpbmdgLgoqIEFkZGVkIGEgcHVibGljIEFQSSBmb3IgY3JlYXRpbmcgYSBkZWZhdWx0IEhUVFAgYWRhcHRlci4KKiBVcGRhdGVkIHRoZSByZWRpcmVjdCBwbHVnaW4gdG8gYmUgbm9uLWJsb2NraW5nIHNvIHRoYXQgcmVkaXJlY3RzIGFyZSBzZW50CiAgY29uY3VycmVudGx5LiBPdGhlciBwbHVnaW5zIGxpa2UgdGhpcyBjYW4gbm93IGJlIHVwZGF0ZWQgdG8gYmUgbm9uLWJsb2NraW5nLgoqIEFkZGVkIGEgInByb2dyZXNzIiBldmVudCBzbyB0aGF0IHlvdSBjYW4gZ2V0IHVwbG9hZCBhbmQgZG93bmxvYWQgcHJvZ3Jlc3MKICBldmVudHMuCiogQWRkZWQgYEd1enpsZUh0dHBcUG9vbGAgd2hpY2ggaW1wbGVtZW50cyBGdXR1cmVJbnRlcmZhY2UgYW5kIHRyYW5zZmVycwogIHJlcXVlc3RzIGNvbmN1cnJlbnRseSB1c2luZyBhIGNhcHBlZCBwb29sIHNpemUgYXMgZWZmaWNpZW50bHkgYXMgcG9zc2libGUuCiogQWRkZWQgYGhhc0xpc3RlbmVycygpYCB0byBFbWl0dGVySW50ZXJmYWNlLgoqIFJlbW92ZWQgYEd1enpsZUh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZW5kQWxsYCBhbmQgbWFya2VkCiAgYEd1enpsZUh0dHBcQ2xpZW50OjpzZW5kQWxsYCBhcyBkZXByZWNhdGVkIChpdCdzIHN0aWxsIHRoZXJlLCBqdXN0IG5vdCB0aGUKICByZWNvbW1lbmRlZCB3YXkpLgoKIyMjIEJyZWFraW5nIGNoYW5nZXMKClRoZSBicmVha2luZyBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSBhcmUgcmVsYXRpdmVseSBtaW5vci4gVGhlIGJpZ2dlc3QgdGhpbmcgdG8KbG9vayBvdXQgZm9yIGlzIHRoYXQgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyBubyBsb25nZXIgaW1wbGVtZW50IGZsdWVudAppbnRlcmZhY2VzLgoKKiBSZW1vdmVkIHRoZSBmbHVlbnQgaW50ZXJmYWNlcyAoaS5lLiwgYHJldHVybiAkdGhpc2ApIGZyb20gcmVxdWVzdHMsCiAgcmVzcG9uc2VzLCBgR3V6emxlSHR0cFxDb2xsZWN0aW9uYCwgYEd1enpsZUh0dHBcVXJsYCwKICBgR3V6emxlSHR0cFxRdWVyeWAsIGBHdXp6bGVIdHRwXFBvc3RcUG9zdEJvZHlgLCBhbmQKICBgR3V6emxlSHR0cFxDb29raWVcU2V0Q29va2llYC4gVGhpcyBibG9nIHBvc3QgcHJvdmlkZXMgYSBnb29kIG91dGxpbmUgb2YKICB3aHkgSSBkaWQgdGhpczogaHR0cDovL29jcmFtaXVzLmdpdGh1Yi5pby9ibG9nL2ZsdWVudC1pbnRlcmZhY2VzLWFyZS1ldmlsLy4KICBUaGlzIGFsc28gbWFrZXMgdGhlIEd1enpsZSBtZXNzYWdlIGludGVyZmFjZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50CiAgUFNSLTcgbWVzc2FnZSBwcm9wb3NhbC4KKiBSZW1vdmVkICJmdW5jdGlvbnMucGhwIiwgc28gdGhhdCBHdXp6bGUgaXMgdHJ1bHkgUFNSLTQgY29tcGxpYW50LiBFeGNlcHQKICBmb3IgdGhlIEhUVFAgcmVxdWVzdCBmdW5jdGlvbnMgZnJvbSBmdW5jdGlvbi5waHAsIHRoZXNlIGZ1bmN0aW9ucyBhcmUgbm93CiAgaW1wbGVtZW50ZWQgaW4gYEd1enpsZUh0dHBcVXRpbHNgIHVzaW5nIGNhbWVsQ2FzZS4gYEd1enpsZUh0dHBcanNvbl9kZWNvZGVgCiAgbW92ZWQgdG8gYEd1enpsZUh0dHBcVXRpbHM6Ompzb25EZWNvZGVgLiBgR3V6emxlSHR0cFxnZXRfcGF0aGAgbW92ZWQgdG8KICBgR3V6emxlSHR0cFxVdGlsczo6Z2V0UGF0aGAuIGBHdXp6bGVIdHRwXHNldF9wYXRoYCBtb3ZlZCB0bwogIGBHdXp6bGVIdHRwXFV0aWxzOjpzZXRQYXRoYC4gYEd1enpsZUh0dHBcYmF0Y2hgIHNob3VsZCBub3cgYmUKICBgR3V6emxlSHR0cFxQb29sOjpiYXRjaGAsIHdoaWNoIHJldHVybnMgYW4gYG9iamVjdFN0b3JhZ2VgLiBVc2luZyBmdW5jdGlvbnMucGhwCiAgY2F1c2VkIHByb2JsZW1zIGZvciBtYW55IHVzZXJzOiB0aGV5IGFyZW4ndCBQU1ItNCBjb21wbGlhbnQsIHJlcXVpcmUgYW4KICBleHBsaWNpdCBpbmNsdWRlLCBhbmQgbmVlZGVkIGFuIGlmLWd1YXJkIHRvIGVuc3VyZSB0aGF0IHRoZSBmdW5jdGlvbnMgYXJlIG5vdAogIGRlY2xhcmVkIG11bHRpcGxlIHRpbWVzLgoqIFJld3JvdGUgYWRhcHRlciBsYXllci4KICAgICogUmVtb3ZpbmcgYWxsIGNsYXNzZXMgZnJvbSBgR3V6emxlSHR0cFxBZGFwdGVyYCwgdGhlc2UgYXJlIG5vdwogICAgICBpbXBsZW1lbnRlZCBhcyBjYWxsYWJsZXMgdGhhdCBhcmUgc3RvcmVkIGluIGBHdXp6bGVIdHRwXFJpbmdcQ2xpZW50YC4KICAgICogUmVtb3ZlZCB0aGUgY29uY2VwdCBvZiAicGFyYWxsZWwgYWRhcHRlcnMiLiBTZW5kaW5nIHJlcXVlc3RzIHNlcmlhbGx5IG9yCiAgICAgIGNvbmN1cnJlbnRseSBpcyBub3cgaGFuZGxlZCB1c2luZyBhIHNpbmdsZSBhZGFwdGVyLgogICAgKiBNb3ZlZCBgR3V6emxlSHR0cFxBZGFwdGVyXFRyYW5zYWN0aW9uYCB0byBgR3V6emxlSHR0cFxUcmFuc2FjdGlvbmAuIFRoZQogICAgICBUcmFuc2FjdGlvbiBvYmplY3Qgbm93IGV4cG9zZXMgdGhlIHJlcXVlc3QsIHJlc3BvbnNlLCBhbmQgY2xpZW50IGFzIHB1YmxpYwogICAgICBwcm9wZXJ0aWVzLiBUaGUgZ2V0dGVycyBhbmQgc2V0dGVycyBoYXZlIGJlZW4gcmVtb3ZlZC4KKiBSZW1vdmVkIHRoZSAiaGVhZGVycyIgZXZlbnQuIFRoaXMgZXZlbnQgd2FzIG9ubHkgdXNlZnVsIGZvciBjaGFuZ2luZyB0aGUKICBib2R5IGEgcmVzcG9uc2Ugb25jZSB0aGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2Ugd2VyZSBrbm93bi4gWW91IGNhbiBpbXBsZW1lbnQKICBhIHNpbWlsYXIgYmVoYXZpb3IgaW4gYSBudW1iZXIgb2Ygd2F5cy4gT25lIGV4YW1wbGUgbWlnaHQgYmUgdG8gdXNlIGEKICBGblN0cmVhbSB0aGF0IGhhcyBhY2Nlc3MgdG8gdGhlIHRyYW5zYWN0aW9uIGJlaW5nIHNlbnQuIEZvciBleGFtcGxlLCB3aGVuIHRoZQogIGZpcnN0IGJ5dGUgaXMgd3JpdHRlbiwgeW91IGNvdWxkIGNoZWNrIGlmIHRoZSByZXNwb25zZSBoZWFkZXJzIG1hdGNoIHlvdXIKICBleHBlY3RhdGlvbnMsIGFuZCBpZiBzbywgY2hhbmdlIHRoZSBhY3R1YWwgc3RyZWFtIGJvZHkgdGhhdCBpcyBiZWluZwogIHdyaXR0ZW4gdG8uCiogUmVtb3ZlZCB0aGUgYGFzQXJyYXlgIHBhcmFtZXRlciBmcm9tCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOjpnZXRIZWFkZXJgLiBJZiB5b3Ugd2FudCB0byBnZXQgYSBoZWFkZXIKICB2YWx1ZSBhcyBhbiBhcnJheSwgdGhlbiB1c2UgdGhlIG5ld2x5IGFkZGVkIGBnZXRIZWFkZXJBc0FycmF5KClgIG1ldGhvZCBvZgogIGBNZXNzYWdlSW50ZXJmYWNlYC4gVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIEd1enpsZSBpbnRlcmZhY2VzIGNvbXBhdGlibGUgd2l0aAogIHRoZSBQU1ItNyBpbnRlcmZhY2VzLgoqIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3RvcnlgIG5vIGxvbmdlciBhbGxvd3Mgc3ViY2xhc3NlcyB0byBhZGQKICBjdXN0b20gcmVxdWVzdCBvcHRpb25zIHVzaW5nIGRvdWJsZS1kaXNwYXRjaCAodGhpcyB3YXMgYW4gaW1wbGVtZW50YXRpb24KICBkZXRhaWwpLiBJbnN0ZWFkLCB5b3Ugc2hvdWxkIG5vdyBwcm92aWRlIGFuIGFzc29jaWF0aXZlIGFycmF5IHRvIHRoZQogIGNvbnN0cnVjdG9yIHdoaWNoIGlzIGEgbWFwcGluZyBvZiB0aGUgcmVxdWVzdCBvcHRpb24gbmFtZSBtYXBwaW5nIHRvIGEKICBmdW5jdGlvbiB0aGF0IGFwcGxpZXMgdGhlIG9wdGlvbiB2YWx1ZSB0byBhIHJlcXVlc3QuCiogUmVtb3ZlZCB0aGUgY29uY2VwdCBvZiAidGhyb3dJbW1lZGlhdGVseSIgZnJvbSBleGNlcHRpb25zIGFuZCBlcnJvciBldmVudHMuCiAgVGhpcyBjb250cm9sIG1lY2hhbmlzbSB3YXMgdXNlZCB0byBzdG9wIGEgdHJhbnNmZXIgb2YgY29uY3VycmVudCByZXF1ZXN0cwogIGZyb20gY29tcGxldGluZy4gVGhpcyBjYW4gbm93IGJlIGhhbmRsZWQgYnkgdGhyb3dpbmcgdGhlIGV4Y2VwdGlvbiBvciBieQogIGNhbmNlbGxpbmcgYSBwb29sIG9mIHJlcXVlc3RzIG9yIGVhY2ggb3V0c3RhbmRpbmcgZnV0dXJlIHJlcXVlc3QgaW5kaXZpZHVhbGx5LgoqIFVwZGF0ZWQgdG8gIkd1enpsZUh0dHBcU3RyZWFtcyIgMy4wLgogICAgKiBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlOjpnZXRDb250ZW50cygpYCBubyBsb25nZXIgYWNjZXB0cyBhCiAgICAgIGBtYXhMZW5gIHBhcmFtZXRlci4gVGhpcyB1cGRhdGUgbWFrZXMgdGhlIEd1enpsZSBzdHJlYW1zIHByb2plY3QKICAgICAgY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IFBTUi03IHByb3Bvc2FsLgogICAgKiBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtOjpfX2NvbnN0cnVjdGAsCiAgICAgIGBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW06OmZhY3RvcnlgLCBhbmQKICAgICAgYEd1enpsZUh0dHBcU3RyZWFtXFV0aWxzOjpjcmVhdGVgIG5vIGxvbmdlciBhY2NlcHQgYSBzaXplIGluIHRoZSBzZWNvbmQKICAgICAgYXJndW1lbnQuIFRoZXkgbm93IGFjY2VwdCBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zLCBpbmNsdWRpbmcgdGhlCiAgICAgICJzaXplIiBrZXkgYW5kICJtZXRhZGF0YSIga2V5IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHByb3ZpZGUgY3VzdG9tIG1ldGFkYXRhLgoKIyMgNC4yLjIgLSAyMDE0LTA5LTA4CgoqIEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIEN1cmxBZGFwdGVyIHdoZW4gcmV1c2luZyBjVVJMIGhhbmRsZXMuCiogTm8gbG9uZ2VyIHVzaW5nIGByZXF1ZXN0X2Z1bGx1cmlgIGluIHN0cmVhbSBhZGFwdGVyIHByb3hpZXMuCiogUmVsYXRpdmUgcmVkaXJlY3RzIGFyZSBub3cgYmFzZWQgb24gdGhlIGxhc3QgcmVzcG9uc2UsIG5vdCB0aGUgZmlyc3QgcmVzcG9uc2UuCgojIyA0LjIuMSAtIDIwMTQtMDgtMTkKCiogRW5zdXJpbmcgdGhhdCB0aGUgU3RyZWFtQWRhcHRlciBkb2VzIG5vdCBhbHdheXMgYWRkIGEgQ29udGVudC1UeXBlIGhlYWRlcgoqIEFkZGluZyBhdXRvbWF0ZWQgZ2l0aHViIHJlbGVhc2VzIHdpdGggYSBwaGFyIGFuZCB6aXAKCiMjIDQuMi4wIC0gMjAxNC0wOC0xNwoKKiBOb3cgbWVyZ2luZyBpbiBkZWZhdWx0IG9wdGlvbnMgdXNpbmcgYSBjYXNlLWluc2Vuc2l0aXZlIGNvbXBhcmlzb24uCiAgQ2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjcKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGRlY29kZSBgQ29udGVudC1FbmNvZGluZ2AgcmVzcG9uc2UgYm9kaWVzCiAgdXNpbmcgdGhlIGBkZWNvZGVfY29udGVudGAgcmVxdWVzdCBvcHRpb24uIFRoaXMgaXMgc2V0IHRvIGB0cnVlYCBieSBkZWZhdWx0CiAgdG8gZGVjb2RlIHRoZSByZXNwb25zZSBib2R5IGlmIGl0IGNvbWVzIG92ZXIgdGhlIHdpcmUgd2l0aCBhCiAgYENvbnRlbnQtRW5jb2RpbmdgLiBTZXQgdGhpcyB2YWx1ZSB0byBgZmFsc2VgIHRvIGRpc2FibGUgZGVjb2RpbmcgdGhlCiAgcmVzcG9uc2UgY29udGVudCwgYW5kIHBhc3MgYSBzdHJpbmcgdG8gcHJvdmlkZSBhIHJlcXVlc3QgYEFjY2VwdC1FbmNvZGluZ2AKICBoZWFkZXIgYW5kIHR1cm4gb24gYXV0b21hdGljIHJlc3BvbnNlIGRlY29kaW5nLiBUaGlzIGZlYXR1cmUgbm93IGFsbG93cyB5b3UKICB0byBwYXNzIGFuIGBBY2NlcHQtRW5jb2RpbmdgIGhlYWRlciBpbiB0aGUgaGVhZGVycyBvZiBhIHJlcXVlc3QgYnV0IHN0aWxsCiAgZGlzYWJsZSBhdXRvbWF0aWMgcmVzcG9uc2UgZGVjb2RpbmcuCiAgQ2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjQKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byB0aHJvdyBhbiBleGNlcHRpb24gaW1tZWRpYXRlbHkgd2hlbiB0cmFuc2ZlcnJpbmcKICByZXF1ZXN0cyBpbiBwYXJhbGxlbC4gQ2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjAKKiBVcGRhdGluZyBndXp6bGVodHRwL3N0cmVhbXMgZGVwZW5kZW5jeSB0byB+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[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9ndXp6bGUiLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIGlzIGEgUEhQIEhUVFAgY2xpZW50IGxpYnJhcnkiLAogICAgImtleXdvcmRzIjogWyJmcmFtZXdvcmsiLCAiaHR0cCIsICJyZXN0IiwgIndlYiBzZXJ2aWNlIiwgImN1cmwiLCAiY2xpZW50IiwgIkhUVFAgY2xpZW50Il0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cDovL2d1enpsZXBocC5vcmcvIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj01LjUiLAogICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjEuNCIsCiAgICAgICAgImd1enpsZWh0dHAvcHJvbWlzZXMiOiAiXjEuMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjQuMCB8fCBeNS4wIiwKICAgICAgICAicHNyL2xvZyI6ICJeMS4wIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAiZmlsZXMiOiBbInNyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAiXSwKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJHdXp6bGVIdHRwXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJHdXp6bGVIdHRwXFxUZXN0c1xcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9LAogICAgInN1Z2dlc3QiOiB7CiAgICAgICAgInBzci9sb2ciOiAiUmVxdWlyZWQgZm9yIHVzaW5nIHRoZSBMb2cgbWlkZGxld2FyZSIKICAgIH0sCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiNi4yLWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDExLTIwMTYgTWljaGFlbCBEb3dsaW5nLCBodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R3V6emxlLCBQSFAgSFRUUCBjbGllbnQKPT09PT09PT09PT09PT09PT09PT09PT0KClshW0J1aWxkIFN0YXR1c10oaHR0cHM6Ly90cmF2aXMtY2kub3JnL2d1enpsZS9ndXp6bGUuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZ3V6emxlL2d1enpsZSkKCkd1enpsZSBpcyBhIFBIUCBIVFRQIGNsaWVudCB0aGF0IG1ha2VzIGl0IGVhc3kgdG8gc2VuZCBIVFRQIHJlcXVlc3RzIGFuZAp0cml2aWFsIHRvIGludGVncmF0ZSB3aXRoIHdlYiBzZXJ2aWNlcy4KCi0gU2ltcGxlIGludGVyZmFjZSBmb3IgYnVpbGRpbmcgcXVlcnkgc3RyaW5ncywgUE9TVCByZXF1ZXN0cywgc3RyZWFtaW5nIGxhcmdlCiAgdXBsb2Fkcywgc3RyZWFtaW5nIGxhcmdlIGRvd25sb2FkcywgdXNpbmcgSFRUUCBjb29raWVzLCB1cGxvYWRpbmcgSlNPTiBkYXRhLAogIGV0Yy4uLgotIENhbiBzZW5kIGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyByZXF1ZXN0cyB1c2luZyB0aGUgc2FtZSBpbnRlcmZhY2UuCi0gVXNlcyBQU1ItNyBpbnRlcmZhY2VzIGZvciByZXF1ZXN0cywgcmVzcG9uc2VzLCBhbmQgc3RyZWFtcy4gVGhpcyBhbGxvd3MgeW91CiAgdG8gdXRpbGl6ZSBvdGhlciBQU1ItNyBjb21wYXRpYmxlIGxpYnJhcmllcyB3aXRoIEd1enpsZS4KLSBBYnN0cmFjdHMgYXdheSB0aGUgdW5kZXJseWluZyBIVFRQIHRyYW5zcG9ydCwgYWxsb3dpbmcgeW91IHRvIHdyaXRlCiAgZW52aXJvbm1lbnQgYW5kIHRyYW5zcG9ydCBhZ25vc3RpYyBjb2RlOyBpLmUuLCBubyBoYXJkIGRlcGVuZGVuY3kgb24gY1VSTCwKICBQSFAgc3RyZWFtcywgc29ja2V0cywgb3Igbm9uLWJsb2NraW5nIGV2ZW50IGxvb3BzLgotIE1pZGRsZXdhcmUgc3lzdGVtIGFsbG93cyB5b3UgdG8gYXVnbWVudCBhbmQgY29tcG9zZSBjbGllbnQgYmVoYXZpb3IuCgpgYGBwaHAKJGNsaWVudCA9IG5ldyBcR3V6emxlSHR0cFxDbGllbnQoKTsKJHJlcyA9ICRjbGllbnQtPnJlcXVlc3QoJ0dFVCcsICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUnKTsKZWNobyAkcmVzLT5nZXRTdGF0dXNDb2RlKCk7Ci8vIDIwMAplY2hvICRyZXMtPmdldEhlYWRlckxpbmUoJ2NvbnRlbnQtdHlwZScpOwovLyAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD11dGY4JwplY2hvICRyZXMtPmdldEJvZHkoKTsKLy8gJ3siaWQiOiAxNDIwMDUzLCAibmFtZSI6ICJndXp6bGUiLCAuLi59JwoKLy8gU2VuZCBhbiBhc3luY2hyb25vdXMgcmVxdWVzdC4KJHJlcXVlc3QgPSBuZXcgXEd1enpsZUh0dHBcUHNyN1xSZXF1ZXN0KCdHRVQnLCAnaHR0cDovL2h0dHBiaW4ub3JnJyk7CiRwcm9taXNlID0gJGNsaWVudC0+c2VuZEFzeW5jKCRyZXF1ZXN0KS0+dGhlbihmdW5jdGlvbiAoJHJlc3BvbnNlKSB7CiAgICBlY2hvICdJIGNvbXBsZXRlZCEgJyAuICRyZXNwb25zZS0+Z2V0Qm9keSgpOwp9KTsKJHByb21pc2UtPndhaXQoKTsKYGBgCgojIyBIZWxwIGFuZCBkb2NzCgotIFtEb2N1bWVudGF0aW9uXShodHRwOi8vZ3V6emxlcGhwLm9yZy8pCi0gW1N0YWNrIE92ZXJmbG93XShodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zL3RhZ2dlZC9ndXp6bGUpCi0gW0dpdHRlcl0oaHR0cHM6Ly9naXR0ZXIuaW0vZ3V6emxlL2d1enpsZSkKCgojIyBJbnN0YWxsaW5nIEd1enpsZQoKVGhlIHJlY29tbWVuZGVkIHdheSB0byBpbnN0YWxsIEd1enpsZSBpcyB0aHJvdWdoCltDb21wb3Nlcl0oaHR0cDovL2dldGNvbXBvc2VyLm9yZykuCgpgYGBiYXNoCiMgSW5zdGFsbCBDb21wb3NlcgpjdXJsIC1zUyBodHRwczovL2dldGNvbXBvc2VyLm9yZy9pbnN0YWxsZXIgfCBwaHAKYGBgCgpOZXh0LCBydW4gdGhlIENvbXBvc2VyIGNvbW1hbmQgdG8gaW5zdGFsbCB0aGUgbGF0ZXN0IHN0YWJsZSB2ZXJzaW9uIG9mIEd1enpsZToKCmBgYGJhc2gKcGhwIGNvbXBvc2VyLnBoYXIgcmVxdWlyZSBndXp6bGVodHRwL2d1enpsZQpgYGAKCkFmdGVyIGluc3RhbGxpbmcsIHlvdSBuZWVkIHRvIHJlcXVpcmUgQ29tcG9zZXIncyBhdXRvbG9hZGVyOgoKYGBgcGhwCnJlcXVpcmUgJ3ZlbmRvci9hdXRvbG9hZC5waHAnOwpgYGAKCllvdSBjYW4gdGhlbiBsYXRlciB1cGRhdGUgR3V6emxlIHVzaW5nIGNvbXBvc2VyOgoKIGBgYGJhc2gKY29tcG9zZXIucGhhciB1cGRhdGUKIGBgYAoKCiMjIFZlcnNpb24gR3VpZGFuY2UKCnwgVmVyc2lvbiB8IFN0YXR1cyAgICAgfCBQYWNrYWdpc3QgICAgICAgICAgIHwgTmFtZXNwYWNlICAgIHwgUmVwbyAgICAgICAgICAgICAgICB8IERvY3MgICAgICAgICAgICAgICAgfCBQU1ItNyB8IFBIUCBWZXJzaW9uIHwKfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IDMueCAgICAgfCBFT0wgICAgICAgIHwgYGd1enpsZS9ndXp6bGVgICAgICB8IGBHdXp6bGVgICAgICB8IFt2M11bZ3V6emxlLTMtcmVwb10gfCBbdjNdW2d1enpsZS0zLWRvY3NdIHwgTm8gICAgfCA+PSA1LjMuMyAgICB8CnwgNC54ICAgICB8IEVPTCAgICAgICAgfCBgZ3V6emxlaHR0cC9ndXp6bGVgIHwgYEd1enpsZUh0dHBgIHwgW3Y0XVtndXp6bGUtNC1yZXBvXSB8IE4vQSAgICAgICAgICAgICAgICAgfCBObyAgICB8ID49IDUuNCAgICAgIHwKfCA1LnggICAgIHwgTWFpbnRhaW5lZCB8IGBndXp6bGVodHRwL2d1enpsZWAgfCBgR3V6emxlSHR0cGAgfCBbdjVdW2d1enpsZS01LXJlcG9dIHwgW3Y1XVtndXp6bGUtNS1kb2NzXSB8IE5vICAgIHwgPj0gNS40ICAgICAgfAp8IDYueCAgICAgfCBMYXRlc3QgICAgIHwgYGd1enpsZWh0dHAvZ3V6emxlYCB8IGBHdXp6bGVIdHRwYCB8IFt2Nl1bZ3V6emxlLTYtcmVwb10gfCBbdjZdW2d1enpsZS02LWRvY3NdIHwgWWVzICAgfCA+PSA1LjUgICAgICB8CgpbZ3V6emxlLTMtcmVwb106IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlMwpbZ3V6emxlLTQtcmVwb106IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3RyZWUvNC54CltndXp6bGUtNS1yZXBvXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvdHJlZS81LjMKW2d1enpsZS02LXJlcG9dOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZQpbZ3V6emxlLTMtZG9jc106IGh0dHA6Ly9ndXp6bGUzLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvCltndXp6bGUtNS1kb2NzXTogaHR0cDovL2d1enpsZS5yZWFkdGhlZG9jcy5vcmcvZW4vNS4zLwpbZ3V6emxlLTYtZG9jc106IGh0dHA6Ly9ndXp6bGUucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC8K]]></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+Y29uZmlnWydoZWFkZXJzJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5jb25maWdbJ2hlYWRlcnMnXSA9IFsnVXNlci1BZ2VudCcgPT4gZGVmYXVsdF91c2VyX2FnZW50KCldOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEFkZCB0aGUgVXNlci1BZ2VudCBoZWFkZXIgaWYgb25lIHdhcyBub3QgYWxyZWFkeSBzZXQuCiAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddKSBhcyAkbmFtZSkgewogICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoJG5hbWUpID09PSAndXNlci1hZ2VudCcpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddWydVc2VyLUFnZW50J10gPSBkZWZhdWx0X3VzZXJfYWdlbnQoKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBNZXJnZXMgZGVmYXVsdCBvcHRpb25zIGludG8gdGhlIGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBPcHRpb25zIHRvIG1vZGlmeSBieSByZWZlcmVuY2UKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcHJlcGFyZURlZmF1bHRzKCRvcHRpb25zKQogICAgewogICAgICAgICRkZWZhdWx0cyA9ICR0aGlzLT5jb25maWc7CgogICAgICAgIGlmICghZW1wdHkoJGRlZmF1bHRzWydoZWFkZXJzJ10pKSB7CiAgICAgICAgICAgIC8vIERlZmF1bHQgaGVhZGVycyBhcmUgb25seSBhZGRlZCBpZiB0aGV5IGFyZSBub3QgcHJlc2VudC4KICAgICAgICAgICAgJGRlZmF1bHRzWydfY29uZGl0aW9uYWwnXSA9ICRkZWZhdWx0c1snaGVhZGVycyddOwogICAgICAgICAgICB1bnNldCgkZGVmYXVsdHNbJ2hlYWRlcnMnXSk7CiAgICAgICAgfQoKICAgICAgICAvLyBTcGVjaWFsIGhhbmRsaW5nIGZvciBoZWFkZXJzIGlzIHJlcXVpcmVkIGFzIHRoZXkgYXJlIGFkZGVkIGFzCiAgICAgICAgLy8gY29uZGl0aW9uYWwgaGVhZGVycyBhbmQgYXMgaGVhZGVycyBwYXNzZWQgdG8gYSByZXF1ZXN0IGN0b3IuCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcnMnLCAkb3B0aW9ucykpIHsKICAgICAgICAgICAgLy8gQWxsb3dzIGRlZmF1bHQgaGVhZGVycyB0byBiZSB1bnNldC4KICAgICAgICAgICAgaWYgKCRvcHRpb25zWydoZWFkZXJzJ10gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRkZWZhdWx0c1snX2NvbmRpdGlvbmFsJ10gPSBudWxsOwogICAgICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2hlYWRlcnMnXSk7CiAgICAgICAgICAgIH0gZWxzZWlmICghaXNfYXJyYXkoJG9wdGlvbnNbJ2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdoZWFkZXJzIG11c3QgYmUgYW4gYXJyYXknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gU2hhbGxvdyBtZXJnZSBkZWZhdWx0cyB1bmRlcm5lYXRoIG9wdGlvbnMuCiAgICAgICAgJHJlc3VsdCA9ICRvcHRpb25zICsgJGRlZmF1bHRzOwoKICAgICAgICAvLyBSZW1vdmUgbnVsbCB2YWx1ZXMuCiAgICAgICAgZm9yZWFjaCAoJHJlc3VsdCBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoJHYgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRyZXN1bHRbJGtdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmFuc2ZlcnMgdGhlIGdpdmVuIHJlcXVlc3QgYW5kIGFwcGxpZXMgcmVxdWVzdCBvcHRpb25zLgogICAgICoKICAgICAqIFRoZSBVUkkgb2YgdGhlIHJlcXVlc3QgaXMgbm90IG1vZGlmaWVkIGFuZCB0aGUgcmVxdWVzdCBvcHRpb25zIGFyZSB1c2VkCiAgICAgKiBhcy1pcyB3aXRob3V0IG1lcmdpbmcgaW4gZGVmYXVsdCBvcHRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkb3B0aW9ucwogICAgICoKICAgICAqIEByZXR1cm4gUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJhbnNmZXIoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpCiAgICB7CiAgICAgICAgLy8gc2F2ZV90byAtPiBzaW5rCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzYXZlX3RvJ10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydzaW5rJ10gPSAkb3B0aW9uc1snc2F2ZV90byddOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snc2F2ZV90byddKTsKICAgICAgICB9CgogICAgICAgIC8vIGV4Y2VwdGlvbnMgLT4gaHR0cF9lcnJvcnMKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2V4Y2VwdGlvbnMnXSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ2h0dHBfZXJyb3JzJ10gPSAkb3B0aW9uc1snZXhjZXB0aW9ucyddOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snZXhjZXB0aW9ucyddKTsKICAgICAgICB9CgogICAgICAgICRyZXF1ZXN0ID0gJHRoaXMtPmFwcGx5T3B0aW9ucygkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICRoYW5kbGVyID0gJG9wdGlvbnNbJ2hhbmRsZXInXTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIFByb21pc2VccHJvbWlzZV9mb3IoJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKSk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gUHJvbWlzZVxyZWplY3Rpb25fZm9yKCRlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBsaWVzIHRoZSBhcnJheSBvZiByZXF1ZXN0IG9wdGlvbnMgdG8gYSByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkb3B0aW9ucwogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5T3B0aW9ucyhSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMpCiAgICB7CiAgICAgICAgJG1vZGlmeSA9IFtdOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2Zvcm1fcGFyYW1zJ10pKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snbXVsdGlwYXJ0J10pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignWW91IGNhbm5vdCB1c2UgJwogICAgICAgICAgICAgICAgICAgIC4gJ2Zvcm1fcGFyYW1zIGFuZCBtdWx0aXBhcnQgYXQgdGhlIHNhbWUgdGltZS4gVXNlIHRoZSAnCiAgICAgICAgICAgICAgICAgICAgLiAnZm9ybV9wYXJhbXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHNlbmQgYXBwbGljYXRpb24vJwogICAgICAgICAgICAgICAgICAgIC4gJ3gtd3d3LWZvcm0tdXJsZW5jb2RlZCByZXF1ZXN0cywgYW5kIHRoZSBtdWx0aXBhcnQgJwogICAgICAgICAgICAgICAgICAgIC4gJ29wdGlvbiB0byBzZW5kIG11bHRpcGFydC9mb3JtLWRhdGEgcmVxdWVzdHMuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG9wdGlvbnNbJ2JvZHknXSA9IGh0dHBfYnVpbGRfcXVlcnkoJG9wdGlvbnNbJ2Zvcm1fcGFyYW1zJ10sICcnLCAnJicpOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snZm9ybV9wYXJhbXMnXSk7CiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXVsnQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJzsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snbXVsdGlwYXJ0J10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydib2R5J10gPSBuZXcgUHNyN1xNdWx0aXBhcnRTdHJlYW0oJG9wdGlvbnNbJ211bHRpcGFydCddKTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ211bHRpcGFydCddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snanNvbiddKSkgewogICAgICAgICAgICAkb3B0aW9uc1snYm9keSddID0gXEd1enpsZUh0dHBcanNvbl9lbmNvZGUoJG9wdGlvbnNbJ2pzb24nXSk7CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydqc29uJ10pOwogICAgICAgICAgICAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ11bJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb24nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXSkKICAgICAgICAgICAgJiYgJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10gIT09IHRydWUKICAgICAgICApIHsKICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnQWNjZXB0LUVuY29kaW5nJ10gPSAkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snaGVhZGVycyddKSkgewogICAgICAgICAgICBpZiAoaXNzZXQoJG1vZGlmeVsnc2V0X2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ10gPSAkb3B0aW9uc1snaGVhZGVycyddICsgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ10gPSAkb3B0aW9uc1snaGVhZGVycyddOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydoZWFkZXJzJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydib2R5J10pKSB7CiAgICAgICAgICAgIGlmIChpc19hcnJheSgkb3B0aW9uc1snYm9keSddKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmludmFsaWRCb2R5KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1vZGlmeVsnYm9keSddID0gUHNyN1xzdHJlYW1fZm9yKCRvcHRpb25zWydib2R5J10pOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snYm9keSddKTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ2F1dGgnXSkgJiYgaXNfYXJyYXkoJG9wdGlvbnNbJ2F1dGgnXSkpIHsKICAgICAgICAgICAgJHZhbHVlID0gJG9wdGlvbnNbJ2F1dGgnXTsKICAgICAgICAgICAgJHR5cGUgPSBpc3NldCgkdmFsdWVbMl0pID8gc3RydG9sb3dlcigkdmFsdWVbMl0pIDogJ2Jhc2ljJzsKICAgICAgICAgICAgc3dpdGNoICgkdHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSAnYmFzaWMnOgogICAgICAgICAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0F1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gYmFzZTY0X2VuY29kZSgiJHZhbHVlWzBdOiR2YWx1ZVsxXSIpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnZGlnZXN0JzoKICAgICAgICAgICAgICAgICAgICAvLyBAdG9kbzogRG8gbm90IHJlbHkgb24gY3VybAogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bQ1VSTE9QVF9IVFRQQVVUSF0gPSBDVVJMQVVUSF9ESUdFU1Q7CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtDVVJMT1BUX1VTRVJQV0RdID0gIiR2YWx1ZVswXTokdmFsdWVbMV0iOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbnRsbSc6CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtDVVJMT1BUX0hUVFBBVVRIXSA9IENVUkxBVVRIX05UTE07CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtDVVJMT1BUX1VTRVJQV0RdID0gIiR2YWx1ZVswXTokdmFsdWVbMV0iOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3F1ZXJ5J10pKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICRvcHRpb25zWydxdWVyeSddOwogICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgJHZhbHVlID0gaHR0cF9idWlsZF9xdWVyeSgkdmFsdWUsIG51bGwsICcmJywgUEhQX1FVRVJZX1JGQzM5ODYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdxdWVyeSBtdXN0IGJlIGEgc3RyaW5nIG9yIGFycmF5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1vZGlmeVsncXVlcnknXSA9ICR2YWx1ZTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ3F1ZXJ5J10pOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIHRoYXQgc2luayBpcyBub3QgYW4gaW52YWxpZCB2YWx1ZS4KICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3NpbmsnXSkpIHsKICAgICAgICAgICAgLy8gVE9ETzogQWRkIG1vcmUgc2luayB2YWxpZGF0aW9uPwogICAgICAgICAgICBpZiAoaXNfYm9vbCgkb3B0aW9uc1snc2luayddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ3NpbmsgbXVzdCBub3QgYmUgYSBib29sZWFuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRyZXF1ZXN0ID0gUHNyN1xtb2RpZnlfcmVxdWVzdCgkcmVxdWVzdCwgJG1vZGlmeSk7CiAgICAgICAgaWYgKCRyZXF1ZXN0LT5nZXRCb2R5KCkgaW5zdGFuY2VvZiBQc3I3XE11bHRpcGFydFN0cmVhbSkgewogICAgICAgICAgICAvLyBVc2UgYSBtdWx0aXBhcnQvZm9ybS1kYXRhIFBPU1QgaWYgYSBDb250ZW50LVR5cGUgaXMgbm90IHNldC4KICAgICAgICAgICAgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddWydDb250ZW50LVR5cGUnXSA9ICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0nCiAgICAgICAgICAgICAgICAuICRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldEJvdW5kYXJ5KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBNZXJnZSBpbiBjb25kaXRpb25hbCBoZWFkZXJzIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pKSB7CiAgICAgICAgICAgIC8vIEJ1aWxkIHVwIHRoZSBjaGFuZ2VzIHNvIGl0J3MgaW4gYSBzaW5nbGUgY2xvbmUgb2YgdGhlIG1lc3NhZ2UuCiAgICAgICAgICAgICRtb2RpZnkgPSBbXTsKICAgICAgICAgICAgZm9yZWFjaCAoJG9wdGlvbnNbJ19jb25kaXRpb25hbCddIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJGspKSB7CiAgICAgICAgICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVska10gPSAkdjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkcmVxdWVzdCA9IFBzcjdcbW9kaWZ5X3JlcXVlc3QoJHJlcXVlc3QsICRtb2RpZnkpOwogICAgICAgICAgICAvLyBEb24ndCBwYXNzIHRoaXMgaW50ZXJuYWwgdmFsdWUgYWxvbmcgdG8gbWlkZGxld2FyZS9oYW5kbGVycy4KICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ19jb25kaXRpb25hbCddKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVxdWVzdDsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludmFsaWRCb2R5KCkKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignUGFzc2luZyBpbiB0aGUgImJvZHkiIHJlcXVlc3QgJwogICAgICAgICAgICAuICdvcHRpb24gYXMgYW4gYXJyYXkgdG8gc2VuZCBhIFBPU1QgcmVxdWVzdCBoYXMgYmVlbiBkZXByZWNhdGVkLiAnCiAgICAgICAgICAgIC4gJ1BsZWFzZSB1c2UgdGhlICJmb3JtX3BhcmFtcyIgcmVxdWVzdCBvcHRpb24gdG8gc2VuZCBhICcKICAgICAgICAgICAgLiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIHJlcXVlc3QsIG9yIHRoZSAibXVsdGlwYXJ0IiAnCiAgICAgICAgICAgIC4gJ3JlcXVlc3Qgb3B0aW9uIHRvIHNlbmQgYSBtdWx0aXBhcnQvZm9ybS1kYXRhIHJlcXVlc3QuJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/ClientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxHdXp6bGVFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogQ2xpZW50IGludGVyZmFjZSBmb3Igc2VuZGluZyBIVFRQIHJlcXVlc3RzLgogKi8KaW50ZXJmYWNlIENsaWVudEludGVyZmFjZQp7CiAgICBjb25zdCBWRVJTSU9OID0gJzYuMi4xJzsKCiAgICAvKioKICAgICAqIFNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gc2VuZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5IHRvIHRoZSBnaXZlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBhbmQgdG8gdGhlIHRyYW5zZmVyLgogICAgICoKICAgICAqIEByZXR1cm4gUmVzcG9uc2VJbnRlcmZhY2UKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pOwoKICAgIC8qKgogICAgICogQXN5bmNocm9ub3VzbHkgc2VuZCBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdCB0byBzZW5kCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGdpdmVuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGFuZCB0byB0aGUgdHJhbnNmZXIuCiAgICAgKgogICAgICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kQXN5bmMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJG1ldGhvZCAgSFRUUCBtZXRob2QuCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlc3BvbnNlSW50ZXJmYWNlCiAgICAgKiBAdGhyb3dzIEd1enpsZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVxdWVzdCgkbWV0aG9kLCAkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3RBc3luYygkbWV0aG9kLCAkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTsKCiAgICAvKioKICAgICAqIEdldCBhIGNsaWVudCBjb25maWd1cmF0aW9uIG9wdGlvbi4KICAgICAqCiAgICAgKiBUaGVzZSBvcHRpb25zIGluY2x1ZGUgZGVmYXVsdCByZXF1ZXN0IG9wdGlvbnMgb2YgdGhlIGNsaWVudCwgYSAiaGFuZGxlciIKICAgICAqIChpZiB1dGlsaXplZCBieSB0aGUgY29uY3JldGUgY2xpZW50KSwgYW5kIGEgImJhc2VfdXJpIiBpZiB1dGlsaXplZCBieQogICAgICogdGhlIGNvbmNyZXRlIGNsaWVudC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG9wdGlvbiBUaGUgY29uZmlnIG9wdGlvbiB0byByZXRyaWV2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWcoJG9wdGlvbiA9IG51bGwpOwp9Cg==]]></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+ICR2YWx1ZSkgewogICAgICAgICAgICAkY29va2llSmFyLT5zZXRDb29raWUobmV3IFNldENvb2tpZShbCiAgICAgICAgICAgICAgICAnRG9tYWluJyAgPT4gJGRvbWFpbiwKICAgICAgICAgICAgICAgICdOYW1lJyAgICA9PiAkbmFtZSwKICAgICAgICAgICAgICAgICdWYWx1ZScgICA9PiAkdmFsdWUsCiAgICAgICAgICAgICAgICAnRGlzY2FyZCcgPT4gdHJ1ZQogICAgICAgICAgICBdKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvb2tpZUphcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29va2llVmFsdWUoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBFdmFsdWF0ZSBpZiB0aGlzIGNvb2tpZSBzaG91bGQgYmUgcGVyc2lzdGVkIHRvIHN0b3JhZ2UKICAgICAqIHRoYXQgc3Vydml2ZXMgYmV0d2VlbiByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gU2V0Q29va2llICRjb29raWUgQmVpbmcgZXZhbHVhdGVkLgogICAgICogQHBhcmFtIGJvb2wgJGFsbG93U2Vzc2lvbkNvb2tpZXMgSWYgd2Ugc2hvdWxkIHBlcnNpc3Qgc2Vzc2lvbiBjb29raWVzCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaG91bGRQZXJzaXN0KAogICAgICAgIFNldENvb2tpZSAkY29va2llLAogICAgICAgICRhbGxvd1Nlc3Npb25Db29raWVzID0gZmFsc2UKICAgICkgewogICAgICAgIGlmICgkY29va2llLT5nZXRFeHBpcmVzKCkgfHwgJGFsbG93U2Vzc2lvbkNvb2tpZXMpIHsKICAgICAgICAgICAgaWYgKCEkY29va2llLT5nZXREaXNjYXJkKCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyBhbmQgcmV0dXJucyB0aGUgY29va2llIGJhc2VkIG9uIHRoZSBuYW1lCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBjb29raWUgbmFtZSB0byBzZWFyY2ggZm9yCiAgICAgKiBAcmV0dXJuIFNldENvb2tpZXxudWxsIGNvb2tpZSB0aGF0IHdhcyBmb3VuZCBvciBudWxsIGlmIG5vdCBmb3VuZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29va2llQnlOYW1lKCRuYW1lKQogICAgewogICAgICAgIC8vIGRvbid0IGFsbG93IGEgbnVsbCBuYW1lCiAgICAgICAgaWYoJG5hbWUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIGZvcmVhY2goJHRoaXMtPmNvb2tpZXMgYXMgJGNvb2tpZSkgewogICAgICAgICAgICBpZigkY29va2llLT5nZXROYW1lKCkgIT09IG51bGwgJiYgc3RyY2FzZWNtcCgkY29va2llLT5nZXROYW1lKCksICRuYW1lKSA9PT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjb29raWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvQXJyYXkoKQogICAgewogICAgICAgIHJldHVybiBhcnJheV9tYXAoZnVuY3Rpb24gKFNldENvb2tpZSAkY29va2llKSB7CiAgICAgICAgICAgIHJldHVybiAkY29va2llLT50b0FycmF5KCk7CiAgICAgICAgfSwgJHRoaXMtPmdldEl0ZXJhdG9yKCktPmdldEFycmF5Q29weSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xlYXIoJGRvbWFpbiA9IG51bGwsICRwYXRoID0gbnVsbCwgJG5hbWUgPSBudWxsKQogICAgewogICAgICAgIGlmICghJGRvbWFpbikgewogICAgICAgICAgICAkdGhpcy0+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[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcQ29va2llOwoKLyoqCiAqIFBlcnNpc3RzIGNvb2tpZXMgaW4gdGhlIGNsaWVudCBzZXNzaW9uCiAqLwpjbGFzcyBTZXNzaW9uQ29va2llSmFyIGV4dGVuZHMgQ29va2llSmFyCnsKICAgIC8qKiBAdmFyIHN0cmluZyBzZXNzaW9uIGtleSAqLwogICAgcHJpdmF0ZSAkc2Vzc2lvbktleTsKICAgIAogICAgLyoqIEB2YXIgYm9vbCBDb250cm9sIHdoZXRoZXIgdG8gcGVyc2lzdCBzZXNzaW9uIGNvb2tpZXMgb3Igbm90LiAqLwogICAgcHJpdmF0ZSAkc3RvcmVTZXNzaW9uQ29va2llczsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBTZXNzaW9uQ29va2llSmFyIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNlc3Npb25LZXkgICAgICAgIFNlc3Npb24ga2V5IG5hbWUgdG8gc3RvcmUgdGhlIGNvb2tpZSAKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgaW4gc2Vzc2lvbgogICAgICogQHBhcmFtIGJvb2wgJHN0b3JlU2Vzc2lvbkNvb2tpZXMgU2V0IHRvIHRydWUgdG8gc3RvcmUgc2Vzc2lvbiBjb29raWVzCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY29va2llIGphci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzZXNzaW9uS2V5LCAkc3RvcmVTZXNzaW9uQ29va2llcyA9IGZhbHNlKQogICAgewogICAgICAgICR0aGlzLT5zZXNzaW9uS2V5ID0gJHNlc3Npb25LZXk7CiAgICAgICAgJHRoaXMtPnN0b3JlU2Vzc2lvbkNvb2tpZXMgPSAkc3RvcmVTZXNzaW9uQ29va2llczsKICAgICAgICAkdGhpcy0+bG9hZCgpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZXMgY29va2llcyB0byBzZXNzaW9uIHdoZW4gc2h1dHRpbmcgZG93bgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPnNhdmUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNhdmUgY29va2llcyB0byB0aGUgY2xpZW50IHNlc3Npb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoKQogICAgewogICAgICAgICRqc29uID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMgYXMgJGNvb2tpZSkgewogICAgICAgICAgICAvKiogQHZhciBTZXRDb29raWUgJGNvb2tpZSAqLwogICAgICAgICAgICBpZiAoQ29va2llSmFyOjpzaG91bGRQZXJzaXN0KCRjb29raWUsICR0aGlzLT5zdG9yZVNlc3Npb25Db29raWVzKSkgewogICAgICAgICAgICAgICAgJGpzb25bXSA9ICRjb29raWUtPnRvQXJyYXkoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJF9TRVNTSU9OWyR0aGlzLT5zZXNzaW9uS2V5XSA9IGpzb25fZW5jb2RlKCRqc29uKTsKICAgIH0KCiAgICAvKioKICAgICAqIExvYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBjbGllbnQgc2Vzc2lvbiBpbnRvIHRoZSBkYXRhIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBsb2FkKCkKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRfU0VTU0lPTlskdGhpcy0+c2Vzc2lvbktleV0pKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJGRhdGEgPSBqc29uX2RlY29kZSgkX1NFU1NJT05bJHRoaXMtPnNlc3Npb25LZXldLCB0cnVlKTsKICAgICAgICBpZiAoaXNfYXJyYXkoJGRhdGEpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRjb29raWUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRDb29raWUobmV3IFNldENvb2tpZSgkY29va2llKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoc3RybGVuKCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkludmFsaWQgY29va2llIGRhdGEiKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcQ29va2llOwoKLyoqCiAqIFNldC1Db29raWUgb2JqZWN0CiAqLwpjbGFzcyBTZXRDb29raWUKewogICAgLyoqIEB2YXIgYXJyYXkgKi8KICAgIHByaXZhdGUgc3RhdGljICRkZWZhdWx0cyA9IFsKICAgICAgICAnTmFtZScgICAgID0+IG51bGwsCiAgICAgICAgJ1ZhbHVlJyAgICA9PiBudWxsLAogICAgICAgICdEb21haW4nICAgPT4gbnVsbCwKICAgICAgICAnUGF0aCcgICAgID0+ICcvJywKICAgICAgICAnTWF4LUFnZScgID0+IG51bGwsCiAgICAgICAgJ0V4cGlyZXMnICA9PiBudWxsLAogICAgICAgICdTZWN1cmUnICAgPT4gZmFsc2UsCiAgICAgICAgJ0Rpc2NhcmQnICA9PiBmYWxzZSwKICAgICAgICAnSHR0cE9ubHknID0+IGZhbHNlCiAgICBdOwoKICAgIC8qKiBAdmFyIGFycmF5IENvb2tpZSBkYXRhICovCiAgICBwcml2YXRlICRkYXRhOwoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IFNldENvb2tpZSBvYmplY3QgZnJvbSBhIHN0cmluZwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvb2tpZSBTZXQtQ29va2llIGhlYWRlciBzdHJpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHNlbGYKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tU3RyaW5nKCRjb29raWUpCiAgICB7CiAgICAgICAgLy8gQ3JlYXRlIHRoZSBkZWZhdWx0IHJldHVybiBhcnJheQogICAgICAgICRkYXRhID0gc2VsZjo6JGRlZmF1bHRzOwogICAgICAgIC8vIEV4cGxvZGUgdGhlIGNvb2tpZSBzdHJpbmcgdXNpbmcgYSBzZXJpZXMgb2Ygc2VtaWNvbG9ucwogICAgICAgICRwaWVjZXMgPSBhcnJheV9maWx0ZXIoYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnOycsICRjb29raWUpKSk7CiAgICAgICAgLy8gVGhlIG5hbWUgb2YgdGhlIGNvb2tpZSAoZmlyc3Qga3ZwKSBtdXN0IGluY2x1ZGUgYW4gZXF1YWwgc2lnbi4KICAgICAgICBpZiAoZW1wdHkoJHBpZWNlcykgfHwgIXN0cnBvcygkcGllY2VzWzBdLCAnPScpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgc2VsZigkZGF0YSk7CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgdGhlIGNvb2tpZSBwaWVjZXMgaW50byB0aGUgcGFyc2VkIGRhdGEgYXJyYXkKICAgICAgICBmb3JlYWNoICgkcGllY2VzIGFzICRwYXJ0KSB7CgogICAgICAgICAgICAkY29va2llUGFydHMgPSBleHBsb2RlKCc9JywgJHBhcnQsIDIpOwogICAgICAgICAgICAka2V5ID0gdHJpbSgkY29va2llUGFydHNbMF0pOwogICAgICAgICAgICAkdmFsdWUgPSBpc3NldCgkY29va2llUGFydHNbMV0pCiAgICAgICAgICAgICAgICA/IHRyaW0oJGNvb2tpZVBhcnRzWzFdLCAiIFxuXHJcdFwwXHgwQiIpCiAgICAgICAgICAgICAgICA6IHRydWU7CgogICAgICAgICAgICAvLyBPbmx5IGNoZWNrIGZvciBub24tY29va2llcyB3aGVuIGNvb2tpZXMgaGF2ZSBiZWVuIGZvdW5kCiAgICAgICAgICAgIGlmIChlbXB0eSgkZGF0YVsnTmFtZSddKSkgewogICAgICAgICAgICAgICAgJGRhdGFbJ05hbWUnXSA9ICRrZXk7CiAgICAgICAgICAgICAgICAkZGF0YVsnVmFsdWUnXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoc2VsZjo6JGRlZmF1bHRzKSBhcyAkc2VhcmNoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKCRzZWFyY2gsICRrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRkYXRhWyRzZWFyY2hdID0gJHZhbHVlOwogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRkYXRhWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkYXRhIEFycmF5IG9mIGNvb2tpZSBkYXRhIHByb3ZpZGVkIGJ5IGEgQ29va2llIHBhcnNlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhdGEgPSBbXSkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YSA9IGFycmF5X3JlcGxhY2Uoc2VsZjo6JGRlZmF1bHRzLCAkZGF0YSk7CiAgICAgICAgLy8gRXh0cmFjdCB0aGUgRXhwaXJlcyB2YWx1ZSBhbmQgdHVybiBpdCBpbnRvIGEgVU5JWCB0aW1lc3RhbXAgaWYgbmVlZGVkCiAgICAgICAgaWYgKCEkdGhpcy0+Z2V0RXhwaXJlcygpICYmICR0aGlzLT5nZXRNYXhBZ2UoKSkgewogICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIEV4cGlyZXMgZGF0ZQogICAgICAgICAgICAkdGhpcy0+c2V0RXhwaXJlcyh0aW1lKCkgKyAkdGhpcy0+Z2V0TWF4QWdlKCkpOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+Z2V0RXhwaXJlcygpICYmICFpc19udW1lcmljKCR0aGlzLT5nZXRFeHBpcmVzKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKCR0aGlzLT5nZXRFeHBpcmVzKCkpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgJHN0ciA9ICR0aGlzLT5kYXRhWydOYW1lJ10gLiAnPScgLiAkdGhpcy0+ZGF0YVsnVmFsdWUnXSAuICc7ICc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRhdGEgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCRrICE9PSAnTmFtZScgJiYgJGsgIT09ICdWYWx1ZScgJiYgJHYgIT09IG51bGwgJiYgJHYgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBpZiAoJGsgPT09ICdFeHBpcmVzJykgewogICAgICAgICAgICAgICAgICAgICRzdHIgLj0gJ0V4cGlyZXM9JyAuIGdtZGF0ZSgnRCwgZCBNIFkgSDppOnMgXEdcTVxUJywgJHYpIC4gJzsgJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHN0ciAuPSAoJHYgPT09IHRydWUgPyAkayA6ICJ7JGt9PXskdn0iKSAuICc7ICc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBydHJpbSgkc3RyLCAnOyAnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb29raWUgbmFtZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ05hbWUnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgY29va2llIG5hbWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENvb2tpZSBuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXROYW1lKCRuYW1lKQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydOYW1lJ10gPSAkbmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgY29va2llIHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ1ZhbHVlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGNvb2tpZSB2YWx1ZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlIENvb2tpZSB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VmFsdWUoJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydWYWx1ZSddID0gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBkb21haW4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREb21haW4oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnRG9tYWluJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRvbWFpbiBvZiB0aGUgY29va2llCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZG9tYWluCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREb21haW4oJGRvbWFpbikKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnRG9tYWluJ10gPSAkZG9tYWluOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBwYXRoCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhdGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnUGF0aCddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBwYXRoIG9mIHRoZSBjb29raWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFBhdGggb2YgdGhlIGNvb2tpZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UGF0aCgkcGF0aCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnUGF0aCddID0gJHBhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBNYXhpbXVtIGxpZmV0aW1lIG9mIHRoZSBjb29raWUgaW4gc2Vjb25kcwogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1heEFnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydNYXgtQWdlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIG1heC1hZ2Ugb2YgdGhlIGNvb2tpZQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJG1heEFnZSBNYXggYWdlIG9mIHRoZSBjb29raWUgaW4gc2Vjb25kcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TWF4QWdlKCRtYXhBZ2UpCiAgICB7CiAgICAgICAgJHRoaXMtPmRhdGFbJ01heC1BZ2UnXSA9ICRtYXhBZ2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgVU5JWCB0aW1lc3RhbXAgd2hlbiB0aGUgY29va2llIEV4cGlyZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHBpcmVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ0V4cGlyZXMnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgdW5peCB0aW1lc3RhbXAgZm9yIHdoaWNoIHRoZSBjb29raWUgd2lsbCBleHBpcmUKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICR0aW1lc3RhbXAgVW5peCB0aW1lc3RhbXAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEV4cGlyZXMoJHRpbWVzdGFtcCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnRXhwaXJlcyddID0gaXNfbnVtZXJpYygkdGltZXN0YW1wKQogICAgICAgICAgICA/IChpbnQpICR0aW1lc3RhbXAKICAgICAgICAgICAgOiBzdHJ0b3RpbWUoJHRpbWVzdGFtcCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhIHNlY3VyZSBjb29raWUKICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8Ym9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VjdXJlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ1NlY3VyZSddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRoZSBjb29raWUgaXMgc2VjdXJlCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHNlY3VyZSBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiBzZWN1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldFNlY3VyZSgkc2VjdXJlKQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydTZWN1cmUnXSA9ICRzZWN1cmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhIHNlc3Npb24gY29va2llCiAgICAgKgogICAgICogQHJldHVybiBudWxsfGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldERpc2NhcmQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnRGlzY2FyZCddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYSBzZXNzaW9uIGNvb2tpZQogICAgICoKICAgICAqIEBwYXJhbSBib29sICRkaXNjYXJkIFNldCB0byB0cnVlIG9yIGZhbHNlIGlmIHRoaXMgaXMgYSBzZXNzaW9uIGNvb2tpZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0RGlzY2FyZCgkZGlzY2FyZCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGF0YVsnRGlzY2FyZCddID0gJGRpc2NhcmQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBIVFRQIG9ubHkgY29va2llCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIdHRwT25seSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydIdHRwT25seSddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYW4gSFRUUCBvbmx5IGNvb2tpZQogICAgICoKICAgICAqIEBwYXJhbSBib29sICRodHRwT25seSBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiB0aGlzIGlzIEhUVFAgb25seQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SHR0cE9ubHkoJGh0dHBPbmx5KQogICAgewogICAgICAgICR0aGlzLT5kYXRhWydIdHRwT25seSddID0gJGh0dHBPbmx5OwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgdGhlIGNvb2tpZSBtYXRjaGVzIGEgcGF0aCB2YWx1ZS4KICAgICAqCiAgICAgKiBBIHJlcXVlc3QtcGF0aCBwYXRoLW1hdGNoZXMgYSBnaXZlbiBjb29raWUtcGF0aCBpZiBhdCBsZWFzdCBvbmUgb2YKICAgICAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBob2xkczoKICAgICAqCiAgICAgKiAtIFRoZSBjb29raWUtcGF0aCBhbmQgdGhlIHJlcXVlc3QtcGF0aCBhcmUgaWRlbnRpY2FsLgogICAgICogLSBUaGUgY29va2llLXBhdGggaXMgYSBwcmVmaXggb2YgdGhlIHJlcXVlc3QtcGF0aCwgYW5kIHRoZSBsYXN0CiAgICAgKiAgIGNoYXJhY3RlciBvZiB0aGUgY29va2llLXBhdGggaXMgJXgyRiAoIi8iKS4KICAgICAqIC0gVGhlIGNvb2tpZS1wYXRoIGlzIGEgcHJlZml4IG9mIHRoZSByZXF1ZXN0LXBhdGgsIGFuZCB0aGUgZmlyc3QKICAgICAqICAgY2hhcmFjdGVyIG9mIHRoZSByZXF1ZXN0LXBhdGggdGhhdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGNvb2tpZS0KICAgICAqICAgcGF0aCBpcyBhICV4MkYgKCIvIikgY2hhcmFjdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJlcXVlc3RQYXRoIFBhdGggdG8gY2hlY2sgYWdhaW5zdAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWF0Y2hlc1BhdGgoJHJlcXVlc3RQYXRoKQogICAgewogICAgICAgICRjb29raWVQYXRoID0gJHRoaXMtPmdldFBhdGgoKTsKCiAgICAgICAgLy8gTWF0Y2ggb24gZXhhY3QgbWF0Y2hlcyBvciB3aGVuIHBhdGggaXMgdGhlIGRlZmF1bHQgZW1wdHkgIi8iCiAgICAgICAgaWYgKCRjb29raWVQYXRoID09PSAnLycgfHwgJGNvb2tpZVBhdGggPT0gJHJlcXVlc3RQYXRoKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGNvb2tpZS1wYXRoIGlzIGEgcHJlZml4IG9mIHRoZSByZXF1ZXN0IHBhdGguCiAgICAgICAgaWYgKDAgIT09IHN0cnBvcygkcmVxdWVzdFBhdGgsICRjb29raWVQYXRoKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBNYXRjaCBpZiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGNvb2tpZS1wYXRoIGlzICIvIgogICAgICAgIGlmIChzdWJzdHIoJGNvb2tpZVBhdGgsIC0xLCAxKSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gTWF0Y2ggaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBub3QgaW5jbHVkZWQgaW4gY29va2llIHBhdGggaXMgIi8iCiAgICAgICAgcmV0dXJuIHN1YnN0cigkcmVxdWVzdFBhdGgsIHN0cmxlbigkY29va2llUGF0aCksIDEpID09PSAnLyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGUgY29va2llIG1hdGNoZXMgYSBkb21haW4gdmFsdWUKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkb21haW4gRG9tYWluIHRvIGNoZWNrIGFnYWluc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1hdGNoZXNEb21haW4oJGRvbWFpbikKICAgIHsKICAgICAgICAvLyBSZW1vdmUgdGhlIGxlYWRpbmcgJy4nIGFzIHBlciBzcGVjIGluIFJGQyA2MjY1LgogICAgICAgIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYyNjUjc2VjdGlvbi01LjIuMwogICAgICAgICRjb29raWVEb21haW4gPSBsdHJpbSgkdGhpcy0+Z2V0RG9tYWluKCksICcuJyk7CgogICAgICAgIC8vIERvbWFpbiBub3Qgc2V0IG9yIGV4YWN0IG1hdGNoLgogICAgICAgIGlmICghJGNvb2tpZURvbWFpbiB8fCAhc3RyY2FzZWNtcCgkZG9tYWluLCAkY29va2llRG9tYWluKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIE1hdGNoaW5nIHRoZSBzdWJkb21haW4gYWNjb3JkaW5nIHRvIFJGQyA2MjY1LgogICAgICAgIC8vIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzYyNjUjc2VjdGlvbi01LjEuMwogICAgICAgIGlmIChmaWx0ZXJfdmFyKCRkb21haW4sIEZJTFRFUl9WQUxJREFURV9JUCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChib29sKSBwcmVnX21hdGNoKCcvXC4nIC4gcHJlZ19xdW90ZSgkY29va2llRG9tYWluKSAuICckLycsICRkb21haW4pOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgdGhlIGNvb2tpZSBpcyBleHBpcmVkCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0V4cGlyZWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RXhwaXJlcygpICYmIHRpbWUoKSA+ICR0aGlzLT5nZXRFeHBpcmVzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVjayBpZiB0aGUgY29va2llIGlzIHZhbGlkIGFjY29yZGluZyB0byBSRkMgNjI2NQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxzdHJpbmcgUmV0dXJucyB0cnVlIGlmIHZhbGlkIG9yIGFuIGVycm9yIG1lc3NhZ2UgaWYgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGUoKQogICAgewogICAgICAgIC8vIE5hbWVzIG11c3Qgbm90IGJlIGVtcHR5LCBidXQgY2FuIGJlIDAKICAgICAgICAkbmFtZSA9ICR0aGlzLT5nZXROYW1lKCk7CiAgICAgICAgaWYgKGVtcHR5KCRuYW1lKSAmJiAhaXNfbnVtZXJpYygkbmFtZSkpIHsKICAgICAgICAgICAgcmV0dXJuICdUaGUgY29va2llIG5hbWUgbXVzdCBub3QgYmUgZW1wdHknOwogICAgICAgIH0KCiAgICAgICAgLy8gQ2hlY2sgaWYgYW55IG9mIHRoZSBpbnZhbGlkIGNoYXJhY3RlcnMgYXJlIHByZXNlbnQgaW4gdGhlIGNvb2tpZSBuYW1lCiAgICAgICAgaWYgKHByZWdfbWF0Y2goCiAgICAgICAgICAgICcvW1x4MDAtXHgyMFx4MjJceDI4LVx4MjlceDJjXHgyZlx4M2EtXHg0MFx4NWNceDdiXHg3ZFx4N2ZdLycsCiAgICAgICAgICAgICRuYW1lKQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gJ0Nvb2tpZSBuYW1lIG11c3Qgbm90IGNvbnRhaW4gaW52YWxpZCBjaGFyYWN0ZXJzOiBBU0NJSSAnCiAgICAgICAgICAgICAgICAuICdDb250cm9sIGNoYXJhY3RlcnMgKDAtMzE7MTI3KSwgc3BhY2UsIHRhYiBhbmQgdGhlICcKICAgICAgICAgICAgICAgIC4gJ2ZvbGxvd2luZyBjaGFyYWN0ZXJzOiAoKTw+QCw7OlwiLz89e30nOwogICAgICAgIH0KCiAgICAgICAgLy8gVmFsdWUgbXVzdCBub3QgYmUgZW1wdHksIGJ1dCBjYW4gYmUgMAogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5nZXRWYWx1ZSgpOwogICAgICAgIGlmIChlbXB0eSgkdmFsdWUpICYmICFpc19udW1lcmljKCR2YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuICdUaGUgY29va2llIHZhbHVlIG11c3Qgbm90IGJlIGVtcHR5JzsKICAgICAgICB9CgogICAgICAgIC8vIERvbWFpbnMgbXVzdCBub3QgYmUgZW1wdHksIGJ1dCBjYW4gYmUgMAogICAgICAgIC8vIEEgIjAiIGlzIG5vdCBhIHZhbGlkIGludGVybmV0IGRvbWFpbiwgYnV0IG1heSBiZSB1c2VkIGFzIHNlcnZlciBuYW1lCiAgICAgICAgLy8gaW4gYSBwcml2YXRlIG5ldHdvcmsuCiAgICAgICAgJGRvbWFpbiA9ICR0aGlzLT5nZXREb21haW4oKTsKICAgICAgICBpZiAoZW1wdHkoJGRvbWFpbikgJiYgIWlzX251bWVyaWMoJGRvbWFpbikpIHsKICAgICAgICAgICAgcmV0dXJuICdUaGUgY29va2llIGRvbWFpbiBtdXN0IG5vdCBiZSBlbXB0eSc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KfQo=]]></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[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcRXhjZXB0aW9uOwoKaW50ZXJmYWNlIEd1enpsZUV4Y2VwdGlvbiB7fQo=]]></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/IFByb3h5Ojp3cmFwU3RyZWFtaW5nKCRoYW5kbGVyLCBuZXcgU3RyZWFtSGFuZGxlcigpKQogICAgICAgICAgICA6IG5ldyBTdHJlYW1IYW5kbGVyKCk7CiAgICB9IGVsc2VpZiAoISRoYW5kbGVyKSB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdHdXp6bGVIdHRwIHJlcXVpcmVzIGNVUkwsIHRoZSAnCiAgICAgICAgICAgIC4gJ2FsbG93X3VybF9mb3BlbiBpbmkgc2V0dGluZywgb3IgYSBjdXN0b20gSFRUUCBoYW5kbGVyLicpOwogICAgfQoKICAgIHJldHVybiAkaGFuZGxlcjsKfQoKLyoqCiAqIEdldCB0aGUgZGVmYXVsdCBVc2VyLUFnZW50IHN0cmluZyB0byB1c2Ugd2l0aCBHdXp6bGUKICoKICogQHJldHVybiBzdHJpbmcKICovCmZ1bmN0aW9uIGRlZmF1bHRfdXNlcl9hZ2VudCgpCnsKICAgIHN0YXRpYyAkZGVmYXVsdEFnZW50ID0gJyc7CgogICAgaWYgKCEkZGVmYXVsdEFnZW50KSB7CiAgICAgICAgJGRlZmF1bHRBZ2VudCA9ICdHdXp6bGVIdHRwLycgLiBDbGllbnQ6OlZFUlNJT047CiAgICAgICAgaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ2N1cmwnKSAmJiBmdW5jdGlvbl9leGlzdHMoJ2N1cmxfdmVyc2lvbicpKSB7CiAgICAgICAgICAgICRkZWZhdWx0QWdlbnQgLj0gJyBjdXJsLycgLiBcY3VybF92ZXJzaW9uKClbJ3ZlcnNpb24nXTsKICAgICAgICB9CiAgICAgICAgJGRlZmF1bHRBZ2VudCAuPSAnIFBIUC8nIC4gUEhQX1ZFUlNJT047CiAgICB9CgogICAgcmV0dXJuICRkZWZhdWx0QWdlbnQ7Cn0KCi8qKgogKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGNhY2VydCBidW5kbGUgZm9yIHRoZSBjdXJyZW50IHN5c3RlbS4KICoKICogRmlyc3QsIHRoZSBvcGVuc3NsLmNhZmlsZSBhbmQgY3VybC5jYWluZm8gcGhwLmluaSBzZXR0aW5ncyBhcmUgY2hlY2tlZC4KICogSWYgdGhvc2Ugc2V0dGluZ3MgYXJlIG5vdCBjb25maWd1cmVkLCB0aGVuIHRoZSBjb21tb24gbG9jYXRpb25zIGZvcgogKiBidW5kbGVzIGZvdW5kIG9uIFJlZCBIYXQsIENlbnRPUywgRmVkb3JhLCBVYnVudHUsIERlYmlhbiwgRnJlZUJTRCwgT1MgWAogKiBhbmQgV2luZG93cyBhcmUgY2hlY2tlZC4gSWYgYW55IG9mIHRoZXNlIGZpbGUgbG9jYXRpb25zIGFyZSBmb3VuZCBvbgogKiBkaXNrLCB0aGV5IHdpbGwgYmUgdXRpbGl6ZWQuCiAqCiAqIE5vdGU6IHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCiAqCiAqIEByZXR1cm4gc3RyaW5nCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgbm8gYnVuZGxlIGNhbiBiZSBmb3VuZC4KICovCmZ1bmN0aW9uIGRlZmF1bHRfY2FfYnVuZGxlKCkKewogICAgc3RhdGljICRjYWNoZWQgPSBudWxsOwogICAgc3RhdGljICRjYWZpbGVzID0gWwogICAgICAgIC8vIFJlZCBIYXQsIENlbnRPUywgRmVkb3JhIChwcm92aWRlZCBieSB0aGUgY2EtY2VydGlmaWNhdGVzIHBhY2thZ2UpCiAgICAgICAgJy9ldGMvcGtpL3Rscy9jZXJ0cy9jYS1idW5kbGUuY3J0JywKICAgICAgICAvLyBVYnVudHUsIERlYmlhbiAocHJvdmlkZWQgYnkgdGhlIGNhLWNlcnRpZmljYXRlcyBwYWNrYWdlKQogICAgICAgICcvZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0JywKICAgICAgICAvLyBGcmVlQlNEIChwcm92aWRlZCBieSB0aGUgY2Ffcm9vdF9uc3MgcGFja2FnZSkKICAgICAgICAnL3Vzci9sb2NhbC9zaGFyZS9jZXJ0cy9jYS1yb290LW5zcy5jcnQnLAogICAgICAgIC8vIFNMRVMgMTIgKHByb3ZpZGVkIGJ5IHRoZSBjYS1jZXJ0aWZpY2F0ZXMgcGFja2FnZSkKICAgICAgICAnL3Zhci9saWIvY2EtY2VydGlmaWNhdGVzL2NhLWJ1bmRsZS5wZW0nLAogICAgICAgIC8vIE9TIFggcHJvdmlkZWQgYnkgaG9tZWJyZXcgKHVzaW5nIHRoZSBkZWZhdWx0IHBhdGgpCiAgICAgICAgJy91c3IvbG9jYWwvZXRjL29wZW5zc2wvY2VydC5wZW0nLAogICAgICAgIC8vIEdvb2dsZSBhcHAgZW5naW5lCiAgICAgICAgJy9ldGMvY2EtY2VydGlmaWNhdGVzLmNydCcsCiAgICAgICAgLy8gV2luZG93cz8KICAgICAgICAnQzpcXHdpbmRvd3NcXHN5c3RlbTMyXFxjdXJsLWNhLWJ1bmRsZS5jcnQnLAogICAgICAgICdDOlxcd2luZG93c1xcY3VybC1jYS1idW5kbGUuY3J0JywKICAgIF07CgogICAgaWYgKCRjYWNoZWQpIHsKICAgICAgICByZXR1cm4gJGNhY2hlZDsKICAgIH0KCiAgICBpZiAoJGNhID0gaW5pX2dldCgnb3BlbnNzbC5jYWZpbGUnKSkgewogICAgICAgIHJldHVybiAkY2FjaGVkID0gJGNhOwogICAgfQoKICAgIGlmICgkY2EgPSBpbmlfZ2V0KCdjdXJsLmNhaW5mbycpKSB7CiAgICAgICAgcmV0dXJuICRjYWNoZWQgPSAkY2E7CiAgICB9CgogICAgZm9yZWFjaCAoJGNhZmlsZXMgYXMgJGZpbGVuYW1lKSB7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkpIHsKICAgICAgICAgICAgcmV0dXJuICRjYWNoZWQgPSAkZmlsZW5hbWU7CiAgICAgICAgfQogICAgfQoKICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbig8PDwgRU9UCk5vIHN5c3RlbSBDQSBidW5kbGUgY291bGQgYmUgZm91bmQgaW4gYW55IG9mIHRoZSB0aGUgY29tbW9uIHN5c3RlbSBsb2NhdGlvbnMuClBIUCB2ZXJzaW9ucyBlYXJsaWVyIHRoYW4gNS42IGFyZSBub3QgcHJvcGVybHkgY29uZmlndXJlZCB0byB1c2UgdGhlIHN5c3RlbSdzCkNBIGJ1bmRsZSBieSBkZWZhdWx0LiBJbiBvcmRlciB0byB2ZXJpZnkgcGVlciBjZXJ0aWZpY2F0ZXMsIHlvdSB3aWxsIG5lZWQgdG8Kc3VwcGx5IHRoZSBwYXRoIG9uIGRpc2sgdG8gYSBjZXJ0aWZpY2F0ZSBidW5kbGUgdG8gdGhlICd2ZXJpZnknIHJlcXVlc3QKb3B0aW9uOiBodHRwOi8vZG9jcy5ndXp6bGVwaHAub3JnL2VuL2xhdGVzdC9jbGllbnRzLmh0bWwjdmVyaWZ5LiBJZiB5b3UgZG8gbm90Cm5lZWQgYSBzcGVjaWZpYyBjZXJ0aWZpY2F0ZSBidW5kbGUsIHRoZW4gTW96aWxsYSBwcm92aWRlcyBhIGNvbW1vbmx5IHVzZWQgQ0EKYnVuZGxlIHdoaWNoIGNhbiBiZSBkb3dubG9hZGVkIGhlcmUgKHByb3ZpZGVkIGJ5IHRoZSBtYWludGFpbmVyIG9mIGNVUkwpOgpodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vYmFnZGVyL2NhLWJ1bmRsZS9tYXN0ZXIvY2EtYnVuZGxlLmNydC4gT25jZQp5b3UgaGF2ZSBhIENBIGJ1bmRsZSBhdmFpbGFibGUgb24gZGlzaywgeW91IGNhbiBzZXQgdGhlICdvcGVuc3NsLmNhZmlsZScgUEhQCmluaSBzZXR0aW5nIHRvIHBvaW50IHRvIHRoZSBwYXRoIHRvIHRoZSBmaWxlLCBhbGxvd2luZyB5b3UgdG8gb21pdCB0aGUgJ3ZlcmlmeScKcmVxdWVzdCBvcHRpb24uIFNlZSBodHRwOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbCBmb3IgbW9yZQppbmZvcm1hdGlvbi4KRU9UCiAgICApOwp9CgovKioKICogQ3JlYXRlcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBsb3dlcmNhc2UgaGVhZGVyIG5hbWVzIHRvIHRoZSBhY3R1YWwKICogaGVhZGVyIGNhc2luZy4KICoKICogQHBhcmFtIGFycmF5ICRoZWFkZXJzCiAqCiAqIEByZXR1cm4gYXJyYXkKICovCmZ1bmN0aW9uIG5vcm1hbGl6ZV9oZWFkZXJfa2V5cyhhcnJheSAkaGVhZGVycykKewogICAgJHJlc3VsdCA9IFtdOwogICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkaGVhZGVycykgYXMgJGtleSkgewogICAgICAgICRyZXN1bHRbc3RydG9sb3dlcigka2V5KV0gPSAka2V5OwogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Owp9CgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCBob3N0IG1hdGNoZXMgYW55IG9mIHRoZSBubyBwcm94eSBhcmVhcy4KICoKICogVGhpcyBtZXRob2Qgd2lsbCBzdHJpcCBhIHBvcnQgZnJvbSB0aGUgaG9zdCBpZiBpdCBpcyBwcmVzZW50LiBFYWNoIHBhdHRlcm4KICogY2FuIGJlIG1hdGNoZWQgd2l0aCBhbiBleGFjdCBtYXRjaCAoZS5nLiwgImZvby5jb20iID09ICJmb28uY29tIikgb3IgYQogKiBwYXJ0aWFsIG1hdGNoOiAoZS5nLiwgImZvby5jb20iID09ICJiYXouZm9vLmNvbSIgYW5kICIuZm9vLmNvbSIgPT0KICogImJhei5mb28uY29tIiwgYnV0ICIuZm9vLmNvbSIgIT0gImZvby5jb20iKS4KICoKICogQXJlYXMgYXJlIG1hdGNoZWQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKICogMS4gIioiICh3aXRob3V0IHF1b3RlcykgYWx3YXlzIG1hdGNoZXMgYW55IGhvc3RzLgogKiAyLiBBbiBleGFjdCBtYXRjaC4KICogMy4gVGhlIGFyZWEgc3RhcnRzIHdpdGggIi4iIGFuZCB0aGUgYXJlYSBpcyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBob3N0LiBlLmcuCiAqICAgICcubWl0LmVkdScgd2lsbCBtYXRjaCBhbnkgaG9zdCB0aGF0IGVuZHMgd2l0aCAnLm1pdC5lZHUnLgogKgogKiBAcGFyYW0gc3RyaW5nICRob3N0ICAgICAgICAgSG9zdCB0byBjaGVjayBhZ2FpbnN0IHRoZSBwYXR0ZXJucy4KICogQHBhcmFtIGFycmF5ICAkbm9Qcm94eUFycmF5IEFuIGFycmF5IG9mIGhvc3QgcGF0dGVybnMuCiAqCiAqIEByZXR1cm4gYm9vbAogKi8KZnVuY3Rpb24gaXNfaG9zdF9pbl9ub3Byb3h5KCRob3N0LCBhcnJheSAkbm9Qcm94eUFycmF5KQp7CiAgICBpZiAoc3RybGVuKCRob3N0KSA9PT0gMCkgewogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFbXB0eSBob3N0IHByb3ZpZGVkJyk7CiAgICB9CgogICAgLy8gU3RyaXAgcG9ydCBpZiBwcmVzZW50LgogICAgaWYgKHN0cnBvcygkaG9zdCwgJzonKSkgewogICAgICAgICRob3N0ID0gZXhwbG9kZSgkaG9zdCwgJzonLCAyKVswXTsKICAgIH0KCiAgICBmb3JlYWNoICgkbm9Qcm94eUFycmF5IGFzICRhcmVhKSB7CiAgICAgICAgLy8gQWx3YXlzIG1hdGNoIG9uIHdpbGRjYXJkcy4KICAgICAgICBpZiAoJGFyZWEgPT09ICcqJykgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2VpZiAoZW1wdHkoJGFyZWEpKSB7CiAgICAgICAgICAgIC8vIERvbid0IG1hdGNoIG9uIGVtcHR5IHZhbHVlcy4KICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfSBlbHNlaWYgKCRhcmVhID09PSAkaG9zdCkgewogICAgICAgICAgICAvLyBFeGFjdCBtYXRjaGVzLgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBTcGVjaWFsIG1hdGNoIGlmIHRoZSBhcmVhIHdoZW4gcHJlZml4ZWQgd2l0aCAiLiIuIFJlbW92ZSBhbnkKICAgICAgICAgICAgLy8gZXhpc3RpbmcgbGVhZGluZyAiLiIgYW5kIGFkZCBhIG5ldyBsZWFkaW5nICIuIi4KICAgICAgICAgICAgJGFyZWEgPSAnLicgLiBsdHJpbSgkYXJlYSwgJy4nKTsKICAgICAgICAgICAgaWYgKHN1YnN0cigkaG9zdCwgLShzdHJsZW4oJGFyZWEpKSkgPT09ICRhcmVhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZmFsc2U7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBqc29uX2RlY29kZSB0aGF0IHRocm93cyB3aGVuIGFuIGVycm9yIG9jY3Vycy4KICoKICogQHBhcmFtIHN0cmluZyAkanNvbiAgICBKU09OIGRhdGEgdG8gcGFyc2UKICogQHBhcmFtIGJvb2wgJGFzc29jICAgICBXaGVuIHRydWUsIHJldHVybmVkIG9iamVjdHMgd2lsbCBiZSBjb252ZXJ0ZWQKICogICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGFzc29jaWF0aXZlIGFycmF5cy4KICogQHBhcmFtIGludCAgICAkZGVwdGggICBVc2VyIHNwZWNpZmllZCByZWN1cnNpb24gZGVwdGguCiAqIEBwYXJhbSBpbnQgICAgJG9wdGlvbnMgQml0bWFzayBvZiBKU09OIGRlY29kZSBvcHRpb25zLgogKgogKiBAcmV0dXJuIG1peGVkCiAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSlNPTiBjYW5ub3QgYmUgZGVjb2RlZC4KICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5qc29uLWRlY29kZS5waHAKICovCmZ1bmN0aW9uIGpzb25fZGVjb2RlKCRqc29uLCAkYXNzb2MgPSBmYWxzZSwgJGRlcHRoID0gNTEyLCAkb3B0aW9ucyA9IDApCnsKICAgICRkYXRhID0gXGpzb25fZGVjb2RlKCRqc29uLCAkYXNzb2MsICRkZXB0aCwgJG9wdGlvbnMpOwogICAgaWYgKEpTT05fRVJST1JfTk9ORSAhPT0ganNvbl9sYXN0X2Vycm9yKCkpIHsKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgJ2pzb25fZGVjb2RlIGVycm9yOiAnIC4ganNvbl9sYXN0X2Vycm9yX21zZygpKTsKICAgIH0KCiAgICByZXR1cm4gJGRhdGE7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBKU09OIGVuY29kaW5nIHRoYXQgdGhyb3dzIHdoZW4gYW4gZXJyb3Igb2NjdXJzLgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlICAgVGhlIHZhbHVlIGJlaW5nIGVuY29kZWQKICogQHBhcmFtIGludCAgICAkb3B0aW9ucyBKU09OIGVuY29kZSBvcHRpb24gYml0bWFzawogKiBAcGFyYW0gaW50ICAgICRkZXB0aCAgIFNldCB0aGUgbWF4aW11bSBkZXB0aC4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4KICoKICogQHJldHVybiBzdHJpbmcKICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBKU09OIGNhbm5vdCBiZSBlbmNvZGVkLgogKiBAbGluayBodHRwOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLmpzb24tZW5jb2RlLnBocAogKi8KZnVuY3Rpb24ganNvbl9lbmNvZGUoJHZhbHVlLCAkb3B0aW9ucyA9IDAsICRkZXB0aCA9IDUxMikKewogICAgJGpzb24gPSBcanNvbl9lbmNvZGUoJHZhbHVlLCAkb3B0aW9ucywgJGRlcHRoKTsKICAgIGlmIChKU09OX0VSUk9SX05PTkUgIT09IGpzb25fbGFzdF9lcnJvcigpKSB7CiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICdqc29uX2VuY29kZSBlcnJvcjogJyAuIGpzb25fbGFzdF9lcnJvcl9tc2coKSk7CiAgICB9CgogICAgcmV0dXJuICRqc29uOwp9Cg==]]></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[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxSZXF1ZXN0RXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGVkUHJvbWlzZTsKdXNlIEd1enpsZUh0dHBcUHNyNzsKdXNlIEd1enpsZUh0dHBcUHNyN1xMYXp5T3BlblN0cmVhbTsKdXNlIEd1enpsZUh0dHBcVHJhbnNmZXJTdGF0czsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKCi8qKgogKiBDcmVhdGVzIGN1cmwgcmVzb3VyY2VzIGZyb20gYSByZXF1ZXN0CiAqLwpjbGFzcyBDdXJsRmFjdG9yeSBpbXBsZW1lbnRzIEN1cmxGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKiBAdmFyIGFycmF5ICovCiAgICBwcml2YXRlICRoYW5kbGVzID0gW107CgogICAgLyoqIEB2YXIgaW50IFRvdGFsIG51bWJlciBvZiBpZGxlIGhhbmRsZXMgdG8ga2VlcCBpbiBjYWNoZSAqLwogICAgcHJpdmF0ZSAkbWF4SGFuZGxlczsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJG1heEhhbmRsZXMgTWF4aW11bSBudW1iZXIgb2YgaWRsZSBoYW5kbGVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG1heEhhbmRsZXMpCiAgICB7CiAgICAgICAgJHRoaXMtPm1heEhhbmRsZXMgPSAkbWF4SGFuZGxlczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snY3VybCddWydib2R5X2FzX3N0cmluZyddKSkgewogICAgICAgICAgICAkb3B0aW9uc1snX2JvZHlfYXNfc3RyaW5nJ10gPSAkb3B0aW9uc1snY3VybCddWydib2R5X2FzX3N0cmluZyddOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snY3VybCddWydib2R5X2FzX3N0cmluZyddKTsKICAgICAgICB9CgogICAgICAgICRlYXN5ID0gbmV3IEVhc3lIYW5kbGU7CiAgICAgICAgJGVhc3ktPnJlcXVlc3QgPSAkcmVxdWVzdDsKICAgICAgICAkZWFzeS0+b3B0aW9ucyA9ICRvcHRpb25zOwogICAgICAgICRjb25mID0gJHRoaXMtPmdldERlZmF1bHRDb25mKCRlYXN5KTsKICAgICAgICAkdGhpcy0+YXBwbHlNZXRob2QoJGVhc3ksICRjb25mKTsKICAgICAgICAkdGhpcy0+YXBwbHlIYW5kbGVyT3B0aW9ucygkZWFzeSwgJGNvbmYpOwogICAgICAgICR0aGlzLT5hcHBseUhlYWRlcnMoJGVhc3ksICRjb25mKTsKICAgICAgICB1bnNldCgkY29uZlsnX2hlYWRlcnMnXSk7CgogICAgICAgIC8vIEFkZCBoYW5kbGVyIG9wdGlvbnMgZnJvbSB0aGUgcmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2N1cmwnXSkpIHsKICAgICAgICAgICAgJGNvbmYgPSBhcnJheV9yZXBsYWNlKCRjb25mLCAkb3B0aW9uc1snY3VybCddKTsKICAgICAgICB9CgogICAgICAgICRjb25mW0NVUkxPUFRfSEVBREVSRlVOQ1RJT05dID0gJHRoaXMtPmNyZWF0ZUhlYWRlckZuKCRlYXN5KTsKICAgICAgICAkZWFzeS0+aGFuZGxlID0gJHRoaXMtPmhhbmRsZXMKICAgICAgICAgICAgPyBhcnJheV9wb3AoJHRoaXMtPmhhbmRsZXMpCiAgICAgICAgICAgIDogY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHRfYXJyYXkoJGVhc3ktPmhhbmRsZSwgJGNvbmYpOwoKICAgICAgICByZXR1cm4gJGVhc3k7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbGVhc2UoRWFzeUhhbmRsZSAkZWFzeSkKICAgIHsKICAgICAgICAkcmVzb3VyY2UgPSAkZWFzeS0+aGFuZGxlOwogICAgICAgIHVuc2V0KCRlYXN5LT5oYW5kbGUpOwoKICAgICAgICBpZiAoY291bnQoJHRoaXMtPmhhbmRsZXMpID49ICR0aGlzLT5tYXhIYW5kbGVzKSB7CiAgICAgICAgICAgIGN1cmxfY2xvc2UoJHJlc291cmNlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBSZW1vdmUgYWxsIGNhbGxiYWNrIGZ1bmN0aW9ucyBhcyB0aGV5IGNhbiBob2xkIG9udG8gcmVmZXJlbmNlcwogICAgICAgICAgICAvLyBhbmQgYXJlIG5vdCBjbGVhbmVkIHVwIGJ5IGN1cmxfcmVzZXQuIFVzaW5nIGN1cmxfc2V0b3B0X2FycmF5CiAgICAgICAgICAgIC8vIGRvZXMgbm90IHdvcmsgZm9yIHNvbWUgcmVhc29uLCBzbyByZW1vdmluZyBlYWNoIG9uZQogICAgICAgICAgICAvLyBpbmRpdmlkdWFsbHkuCiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgQ1VSTE9QVF9IRUFERVJGVU5DVElPTiwgbnVsbCk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgQ1VSTE9QVF9SRUFERlVOQ1RJT04sIG51bGwpOwogICAgICAgICAgICBjdXJsX3NldG9wdCgkcmVzb3VyY2UsIENVUkxPUFRfV1JJVEVGVU5DVElPTiwgbnVsbCk7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLCBudWxsKTsKICAgICAgICAgICAgY3VybF9yZXNldCgkcmVzb3VyY2UpOwogICAgICAgICAgICAkdGhpcy0+aGFuZGxlc1tdID0gJHJlc291cmNlOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENvbXBsZXRlcyBhIGNVUkwgdHJhbnNhY3Rpb24sIGVpdGhlciByZXR1cm5pbmcgYSByZXNwb25zZSBwcm9taXNlIG9yIGEKICAgICAqIHJlamVjdGVkIHByb21pc2UuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICAgICAgICAgICAgICRoYW5kbGVyCiAgICAgKiBAcGFyYW0gRWFzeUhhbmRsZSAgICAgICAgICAgJGVhc3kKICAgICAqIEBwYXJhbSBDdXJsRmFjdG9yeUludGVyZmFjZSAkZmFjdG9yeSBEaWN0YXRlcyBob3cgdGhlIGhhbmRsZSBpcyByZWxlYXNlZAogICAgICoKICAgICAqIEByZXR1cm4gXEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmluaXNoKAogICAgICAgIGNhbGxhYmxlICRoYW5kbGVyLAogICAgICAgIEVhc3lIYW5kbGUgJGVhc3ksCiAgICAgICAgQ3VybEZhY3RvcnlJbnRlcmZhY2UgJGZhY3RvcnkKICAgICkgewogICAgICAgIGlmIChpc3NldCgkZWFzeS0+b3B0aW9uc1snb25fc3RhdHMnXSkpIHsKICAgICAgICAgICAgc2VsZjo6aW52b2tlU3RhdHMoJGVhc3kpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkZWFzeS0+cmVzcG9uc2UgfHwgJGVhc3ktPmVycm5vKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpmaW5pc2hFcnJvcigkaGFuZGxlciwgJGVhc3ksICRmYWN0b3J5KTsKICAgICAgICB9CgogICAgICAgIC8vIFJldHVybiB0aGUgcmVzcG9uc2UgaWYgaXQgaXMgcHJlc2VudCBhbmQgdGhlcmUgaXMgbm8gZXJyb3IuCiAgICAgICAgJGZhY3RvcnktPnJlbGVhc2UoJGVhc3kpOwoKICAgICAgICAvLyBSZXdpbmQgdGhlIGJvZHkgb2YgdGhlIHJlc3BvbnNlIGlmIHBvc3NpYmxlLgogICAgICAgICRib2R5ID0gJGVhc3ktPnJlc3BvbnNlLT5nZXRCb2R5KCk7CiAgICAgICAgaWYgKCRib2R5LT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgJGJvZHktPnJld2luZCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBGdWxmaWxsZWRQcm9taXNlKCRlYXN5LT5yZXNwb25zZSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaW52b2tlU3RhdHMoRWFzeUhhbmRsZSAkZWFzeSkKICAgIHsKICAgICAgICAkY3VybFN0YXRzID0gY3VybF9nZXRpbmZvKCRlYXN5LT5oYW5kbGUpOwogICAgICAgICRzdGF0cyA9IG5ldyBUcmFuc2ZlclN0YXRzKAogICAgICAgICAgICAkZWFzeS0+cmVxdWVzdCwKICAgICAgICAgICAgJGVhc3ktPnJlc3BvbnNlLAogICAgICAgICAgICAkY3VybFN0YXRzWyd0b3RhbF90aW1lJ10sCiAgICAgICAgICAgICRlYXN5LT5lcnJubywKICAgICAgICAgICAgJGN1cmxTdGF0cwogICAgICAgICk7CiAgICAgICAgY2FsbF91c2VyX2Z1bmMoJGVhc3ktPm9wdGlvbnNbJ29uX3N0YXRzJ10sICRzdGF0cyk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZmluaXNoRXJyb3IoCiAgICAgICAgY2FsbGFibGUgJGhhbmRsZXIsCiAgICAgICAgRWFzeUhhbmRsZSAkZWFzeSwKICAgICAgICBDdXJsRmFjdG9yeUludGVyZmFjZSAkZmFjdG9yeQogICAgKSB7CiAgICAgICAgLy8gR2V0IGVycm9yIGluZm9ybWF0aW9uIGFuZCByZWxlYXNlIHRoZSBoYW5kbGUgdG8gdGhlIGZhY3RvcnkuCiAgICAgICAgJGN0eCA9IFsKICAgICAgICAgICAgJ2Vycm5vJyA9PiAkZWFzeS0+ZXJybm8sCiAgICAgICAgICAgICdlcnJvcicgPT4gY3VybF9lcnJvcigkZWFzeS0+aGFuZGxlKSwKICAgICAgICBdICsgY3VybF9nZXRpbmZvKCRlYXN5LT5oYW5kbGUpOwogICAgICAgICRmYWN0b3J5LT5yZWxlYXNlKCRlYXN5KTsKCiAgICAgICAgLy8gUmV0cnkgd2hlbiBub3RoaW5nIGlzIHByZXNlbnQgb3Igd2hlbiBjdXJsIGZhaWxlZCB0byByZXdpbmQuCiAgICAgICAgaWYgKGVtcHR5KCRlYXN5LT5vcHRpb25zWydfZXJyX21lc3NhZ2UnXSkKICAgICAgICAgICAgJiYgKCEkZWFzeS0+ZXJybm8gfHwgJGVhc3ktPmVycm5vID09IDY1KQogICAgICAgICkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6cmV0cnlGYWlsZWRSZXdpbmQoJGhhbmRsZXIsICRlYXN5LCAkY3R4KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVSZWplY3Rpb24oJGVhc3ksICRjdHgpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVJlamVjdGlvbihFYXN5SGFuZGxlICRlYXN5LCBhcnJheSAkY3R4KQogICAgewogICAgICAgIHN0YXRpYyAkY29ubmVjdGlvbkVycm9ycyA9IFsKICAgICAgICAgICAgQ1VSTEVfT1BFUkFUSU9OX1RJTUVPVVRFRCAgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTEVfQ09VTEROVF9SRVNPTFZFX0hPU1QgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTEVfQ09VTEROVF9DT05ORUNUICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1IgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTEVfR09UX05PVEhJTkcgICAgICAgICAgPT4gdHJ1ZSwKICAgICAgICBdOwoKICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gd2FzIGVuY291bnRlcmVkIGR1cmluZyB0aGUgb25IZWFkZXJzIGV2ZW50LCB0aGVuCiAgICAgICAgLy8gcmV0dXJuIGEgcmVqZWN0ZWQgcHJvbWlzZSB0aGF0IHdyYXBzIHRoYXQgZXhjZXB0aW9uLgogICAgICAgIGlmICgkZWFzeS0+b25IZWFkZXJzRXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBcR3V6emxlSHR0cFxQcm9taXNlXHJlamVjdGlvbl9mb3IoCiAgICAgICAgICAgICAgICBuZXcgUmVxdWVzdEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAnQW4gZXJyb3Igd2FzIGVuY291bnRlcmVkIGR1cmluZyB0aGUgb25faGVhZGVycyBldmVudCcsCiAgICAgICAgICAgICAgICAgICAgJGVhc3ktPnJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgJGVhc3ktPnJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICRlYXN5LT5vbkhlYWRlcnNFeGNlcHRpb24sCiAgICAgICAgICAgICAgICAgICAgJGN0eAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJG1lc3NhZ2UgPSBzcHJpbnRmKAogICAgICAgICAgICAnY1VSTCBlcnJvciAlczogJXMgKCVzKScsCiAgICAgICAgICAgICRjdHhbJ2Vycm5vJ10sCiAgICAgICAgICAgICRjdHhbJ2Vycm9yJ10sCiAgICAgICAgICAgICdzZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvbGliY3VybC1lcnJvcnMuaHRtbCcKICAgICAgICApOwoKICAgICAgICAvLyBDcmVhdGUgYSBjb25uZWN0aW9uIGV4Y2VwdGlvbiBpZiBpdCB3YXMgYSBzcGVjaWZpYyBlcnJvciBjb2RlLgogICAgICAgICRlcnJvciA9IGlzc2V0KCRjb25uZWN0aW9uRXJyb3JzWyRlYXN5LT5lcnJub10pCiAgICAgICAgICAgID8gbmV3IENvbm5lY3RFeGNlcHRpb24oJG1lc3NhZ2UsICRlYXN5LT5yZXF1ZXN0LCBudWxsLCAkY3R4KQogICAgICAgICAgICA6IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKCRtZXNzYWdlLCAkZWFzeS0+cmVxdWVzdCwgJGVhc3ktPnJlc3BvbnNlLCBudWxsLCAkY3R4KTsKCiAgICAgICAgcmV0dXJuIFxHdXp6bGVIdHRwXFByb21pc2VccmVqZWN0aW9uX2ZvcigkZXJyb3IpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0RGVmYXVsdENvbmYoRWFzeUhhbmRsZSAkZWFzeSkKICAgIHsKICAgICAgICAkY29uZiA9IFsKICAgICAgICAgICAgJ19oZWFkZXJzJyAgICAgICAgICAgICA9PiAkZWFzeS0+cmVxdWVzdC0+Z2V0SGVhZGVycygpLAogICAgICAgICAgICBDVVJMT1BUX0NVU1RPTVJFUVVFU1QgID0+ICRlYXN5LT5yZXF1ZXN0LT5nZXRNZXRob2QoKSwKICAgICAgICAgICAgQ1VSTE9QVF9VUkwgICAgICAgICAgICA9PiAoc3RyaW5nKSAkZWFzeS0+cmVxdWVzdC0+Z2V0VXJpKCktPndpdGhGcmFnbWVudCgnJyksCiAgICAgICAgICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gZmFsc2UsCiAgICAgICAgICAgIENVUkxPUFRfSEVBREVSICAgICAgICAgPT4gZmFsc2UsCiAgICAgICAgICAgIENVUkxPUFRfQ09OTkVDVFRJTUVPVVQgPT4gMTUwLAogICAgICAgIF07CgogICAgICAgIGlmIChkZWZpbmVkKCdDVVJMT1BUX1BST1RPQ09MUycpKSB7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfUFJPVE9DT0xTXSA9IENVUkxQUk9UT19IVFRQIHwgQ1VSTFBST1RPX0hUVFBTOwogICAgICAgIH0KCiAgICAgICAgJHZlcnNpb24gPSAkZWFzeS0+cmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCk7CiAgICAgICAgaWYgKCR2ZXJzaW9uID09IDEuMSkgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBfVkVSU0lPTl0gPSBDVVJMX0hUVFBfVkVSU0lPTl8xXzE7CiAgICAgICAgfSBlbHNlaWYgKCR2ZXJzaW9uID09IDIuMCkgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBfVkVSU0lPTl0gPSBDVVJMX0hUVFBfVkVSU0lPTl8yXzA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9IVFRQX1ZFUlNJT05dID0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjb25mOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlNZXRob2QoRWFzeUhhbmRsZSAkZWFzeSwgYXJyYXkgJiRjb25mKQogICAgewogICAgICAgICRib2R5ID0gJGVhc3ktPnJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAkc2l6ZSA9ICRib2R5LT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkc2l6ZSA9PT0gbnVsbCB8fCAkc2l6ZSA+IDApIHsKICAgICAgICAgICAgJHRoaXMtPmFwcGx5Qm9keSgkZWFzeS0+cmVxdWVzdCwgJGVhc3ktPm9wdGlvbnMsICRjb25mKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJG1ldGhvZCA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRNZXRob2QoKTsKICAgICAgICBpZiAoJG1ldGhvZCA9PT0gJ1BVVCcgfHwgJG1ldGhvZCA9PT0gJ1BPU1QnKSB7CiAgICAgICAgICAgIC8vIFNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4zLjIKICAgICAgICAgICAgaWYgKCEkZWFzeS0+cmVxdWVzdC0+aGFzSGVhZGVyKCdDb250ZW50LUxlbmd0aCcpKSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAnQ29udGVudC1MZW5ndGg6IDAnOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRtZXRob2QgPT09ICdIRUFEJykgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX05PQk9EWV0gPSB0cnVlOwogICAgICAgICAgICB1bnNldCgKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfV1JJVEVGVU5DVElPTl0sCiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1JFQURGVU5DVElPTl0sCiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0ZJTEVdLAogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9JTkZJTEVdCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlCb2R5KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zLCBhcnJheSAmJGNvbmYpCiAgICB7CiAgICAgICAgJHNpemUgPSAkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb250ZW50LUxlbmd0aCcpCiAgICAgICAgICAgID8gKGludCkgJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtTGVuZ3RoJykKICAgICAgICAgICAgOiBudWxsOwoKICAgICAgICAvLyBTZW5kIHRoZSBib2R5IGFzIGEgc3RyaW5nIGlmIHRoZSBzaXplIGlzIGxlc3MgdGhhbiAxTUIgT1IgaWYgdGhlCiAgICAgICAgLy8gW2N1cmxdW2JvZHlfYXNfc3RyaW5nXSByZXF1ZXN0IHZhbHVlIGlzIHNldC4KICAgICAgICBpZiAoKCRzaXplICE9PSBudWxsICYmICRzaXplIDwgMTAwMDAwMCkgfHwKICAgICAgICAgICAgIWVtcHR5KCRvcHRpb25zWydfYm9keV9hc19zdHJpbmcnXSkKICAgICAgICApIHsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9QT1NURklFTERTXSA9IChzdHJpbmcpICRyZXF1ZXN0LT5nZXRCb2R5KCk7CiAgICAgICAgICAgIC8vIERvbid0IGR1cGxpY2F0ZSB0aGUgQ29udGVudC1MZW5ndGggaGVhZGVyCiAgICAgICAgICAgICR0aGlzLT5yZW1vdmVIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgJGNvbmYpOwogICAgICAgICAgICAkdGhpcy0+cmVtb3ZlSGVhZGVyKCdUcmFuc2Zlci1FbmNvZGluZycsICRjb25mKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX1VQTE9BRF0gPSB0cnVlOwogICAgICAgICAgICBpZiAoJHNpemUgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSU5GSUxFU0laRV0gPSAkc2l6ZTsKICAgICAgICAgICAgICAgICR0aGlzLT5yZW1vdmVIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgJGNvbmYpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRib2R5ID0gJHJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAgICAgaWYgKCRib2R5LT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgICAgICRib2R5LT5yZXdpbmQoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29uZltDVVJMT1BUX1JFQURGVU5DVElPTl0gPSBmdW5jdGlvbiAoJGNoLCAkZmQsICRsZW5ndGgpIHVzZSAoJGJvZHkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYm9keS0+cmVhZCgkbGVuZ3RoKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBFeHBlY3QgaGVhZGVyIGlzIG5vdCBwcmVzZW50LCBwcmV2ZW50IGN1cmwgZnJvbSBhZGRpbmcgaXQKICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0V4cGVjdCcpKSB7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdFeHBlY3Q6JzsKICAgICAgICB9CgogICAgICAgIC8vIGNVUkwgc29tZXRpbWVzIGFkZHMgYSBjb250ZW50LXR5cGUgYnkgZGVmYXVsdC4gUHJldmVudCB0aGlzLgogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1UeXBlJykpIHsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9IVFRQSEVBREVSXVtdID0gJ0NvbnRlbnQtVHlwZTonOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5SGVhZGVycyhFYXN5SGFuZGxlICRlYXN5LCBhcnJheSAmJGNvbmYpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGNvbmZbJ19oZWFkZXJzJ10gYXMgJG5hbWUgPT4gJHZhbHVlcykgewogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9IVFRQSEVBREVSXVtdID0gIiRuYW1lOiAkdmFsdWUiOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgdGhlIEFjY2VwdCBoZWFkZXIgaWYgb25lIHdhcyBub3Qgc2V0CiAgICAgICAgaWYgKCEkZWFzeS0+cmVxdWVzdC0+aGFzSGVhZGVyKCdBY2NlcHQnKSkgewogICAgICAgICAgICAkY29uZltDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAnQWNjZXB0Oic7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgaGVhZGVyIGZyb20gdGhlIG9wdGlvbnMgYXJyYXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSAgICBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciB0byByZW1vdmUKICAgICAqIEBwYXJhbSBhcnJheSAgJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucyB0byBtb2RpZnkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZW1vdmVIZWFkZXIoJG5hbWUsIGFycmF5ICYkb3B0aW9ucykKICAgIHsKICAgICAgICBmb3JlYWNoIChhcnJheV9rZXlzKCRvcHRpb25zWydfaGVhZGVycyddKSBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcCgka2V5LCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydfaGVhZGVycyddWyRrZXldKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5SGFuZGxlck9wdGlvbnMoRWFzeUhhbmRsZSAkZWFzeSwgYXJyYXkgJiRjb25mKQogICAgewogICAgICAgICRvcHRpb25zID0gJGVhc3ktPm9wdGlvbnM7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWyd2ZXJpZnknXSkpIHsKICAgICAgICAgICAgaWYgKCRvcHRpb25zWyd2ZXJpZnknXSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRjb25mW0NVUkxPUFRfQ0FJTkZPXSk7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1NTTF9WRVJJRllIT1NUXSA9IDA7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1NTTF9WRVJJRllQRUVSXSA9IGZhbHNlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVF0gPSAyOwogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUl0gPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gVGhyb3cgYW4gZXJyb3IgaWYgdGhlIGZpbGUvZm9sZGVyL2xpbmsgcGF0aCBpcyBub3QgdmFsaWQgb3IgZG9lc24ndCBleGlzdC4KICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRvcHRpb25zWyd2ZXJpZnknXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU1NMIENBIGJ1bmRsZSBub3QgZm91bmQ6IHskb3B0aW9uc1sndmVyaWZ5J119IgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIGEgZGlyZWN0b3J5IG9yIGEgbGluayB0byBhIGRpcmVjdG9yeSB1c2UgQ1VSTE9QVF9DQVBBVEguCiAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm90LCBpdCdzIHByb2JhYmx5IGEgZmlsZSwgb3IgYSBsaW5rIHRvIGEgZmlsZSwgc28gdXNlIENVUkxPUFRfQ0FJTkZPLgogICAgICAgICAgICAgICAgICAgIGlmIChpc19kaXIoJG9wdGlvbnNbJ3ZlcmlmeSddKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAoaXNfbGluaygkb3B0aW9uc1sndmVyaWZ5J10pICYmIGlzX2RpcihyZWFkbGluaygkb3B0aW9uc1sndmVyaWZ5J10pKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9DQVBBVEhdID0gJG9wdGlvbnNbJ3ZlcmlmeSddOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfQ0FJTkZPXSA9ICRvcHRpb25zWyd2ZXJpZnknXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10pKSB7CiAgICAgICAgICAgICRhY2NlcHQgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0SGVhZGVyTGluZSgnQWNjZXB0LUVuY29kaW5nJyk7CiAgICAgICAgICAgIGlmICgkYWNjZXB0KSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0VOQ09ESU5HXSA9ICRhY2NlcHQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0VOQ09ESU5HXSA9ICcnOwogICAgICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IGN1cmwgc2VuZCB0aGUgaGVhZGVyIG92ZXIgdGhlIHdpcmUKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdBY2NlcHQtRW5jb2Rpbmc6JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzaW5rJ10pKSB7CiAgICAgICAgICAgICRzaW5rID0gJG9wdGlvbnNbJ3NpbmsnXTsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJHNpbmspKSB7CiAgICAgICAgICAgICAgICAkc2luayA9IFxHdXp6bGVIdHRwXFBzcjdcc3RyZWFtX2Zvcigkc2luayk7CiAgICAgICAgICAgIH0gZWxzZWlmICghaXNfZGlyKGRpcm5hbWUoJHNpbmspKSkgewogICAgICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGRpcmVjdG9yeSBleGlzdHMgYmVmb3JlIGZhaWxpbmcgaW4gY3VybC4KICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdEaXJlY3RvcnkgJXMgZG9lcyBub3QgZXhpc3QgZm9yIHNpbmsgdmFsdWUgb2YgJXMnLAogICAgICAgICAgICAgICAgICAgIGRpcm5hbWUoJHNpbmspLAogICAgICAgICAgICAgICAgICAgICRzaW5rCiAgICAgICAgICAgICAgICApKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRzaW5rID0gbmV3IExhenlPcGVuU3RyZWFtKCRzaW5rLCAndysnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZWFzeS0+c2luayA9ICRzaW5rOwogICAgICAgICAgICAkY29uZltDVVJMT1BUX1dSSVRFRlVOQ1RJT05dID0gZnVuY3Rpb24gKCRjaCwgJHdyaXRlKSB1c2UgKCRzaW5rKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHNpbmstPndyaXRlKCR3cml0ZSk7CiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gVXNlIGEgZGVmYXVsdCB0ZW1wIHN0cmVhbSBpZiBubyBzaW5rIHdhcyBzZXQuCiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfRklMRV0gPSBmb3BlbigncGhwOi8vdGVtcCcsICd3KycpOwogICAgICAgICAgICAkZWFzeS0+c2luayA9IFBzcjdcc3RyZWFtX2ZvcigkY29uZltDVVJMT1BUX0ZJTEVdKTsKICAgICAgICB9CiAgICAgICAgJHRpbWVvdXRSZXF1aXJlc05vU2lnbmFsID0gZmFsc2U7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWyd0aW1lb3V0J10pKSB7CiAgICAgICAgICAgICR0aW1lb3V0UmVxdWlyZXNOb1NpZ25hbCB8PSAkb3B0aW9uc1sndGltZW91dCddIDwgMTsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9USU1FT1VUX01TXSA9ICRvcHRpb25zWyd0aW1lb3V0J10gKiAxMDAwOwogICAgICAgIH0KCiAgICAgICAgLy8gQ1VSTCBkZWZhdWx0IHZhbHVlIGlzIENVUkxfSVBSRVNPTFZFX1dIQVRFVkVSCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pKSB7CiAgICAgICAgICAgIGlmICgndjQnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0lQUkVTT0xWRV0gPSBDVVJMX0lQUkVTT0xWRV9WNDsKICAgICAgICAgICAgfSBlbHNlIGlmICgndjYnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX0lQUkVTT0xWRV0gPSBDVVJMX0lQUkVTT0xWRV9WNjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydjb25uZWN0X3RpbWVvdXQnXSkpIHsKICAgICAgICAgICAgJHRpbWVvdXRSZXF1aXJlc05vU2lnbmFsIHw9ICRvcHRpb25zWydjb25uZWN0X3RpbWVvdXQnXSA8IDE7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVNdID0gJG9wdGlvbnNbJ2Nvbm5lY3RfdGltZW91dCddICogMTAwMDsKICAgICAgICB9CgogICAgICAgIGlmICgkdGltZW91dFJlcXVpcmVzTm9TaWduYWwgJiYgc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgIT09ICdXSU4nKSB7CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfTk9TSUdOQUxdID0gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncHJveHknXSkpIHsKICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkb3B0aW9uc1sncHJveHknXSkpIHsKICAgICAgICAgICAgICAgICRjb25mW0NVUkxPUFRfUFJPWFldID0gJG9wdGlvbnNbJ3Byb3h5J107CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc2NoZW1lID0gJGVhc3ktPnJlcXVlc3QtPmdldFVyaSgpLT5nZXRTY2hlbWUoKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncHJveHknXVskc2NoZW1lXSkpIHsKICAgICAgICAgICAgICAgICAgICAkaG9zdCA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpOwogICAgICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJ3Byb3h5J11bJ25vJ10pIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICFcR3V6emxlSHR0cFxpc19ob3N0X2luX25vcHJveHkoJGhvc3QsICRvcHRpb25zWydwcm94eSddWydubyddKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1BST1hZXSA9ICRvcHRpb25zWydwcm94eSddWyRzY2hlbWVdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydjZXJ0J10pKSB7CiAgICAgICAgICAgICRjZXJ0ID0gJG9wdGlvbnNbJ2NlcnQnXTsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRjZXJ0KSkgewogICAgICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TU0xDRVJUUEFTU1dEXSA9ICRjZXJ0WzFdOwogICAgICAgICAgICAgICAgJGNlcnQgPSAkY2VydFswXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRjZXJ0KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIlNTTCBjZXJ0aWZpY2F0ZSBub3QgZm91bmQ6IHskY2VydH0iCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb25mW0NVUkxPUFRfU1NMQ0VSVF0gPSAkY2VydDsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snc3NsX2tleSddKSkgewogICAgICAgICAgICAkc3NsS2V5ID0gJG9wdGlvbnNbJ3NzbF9rZXknXTsKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCRzc2xLZXkpKSB7CiAgICAgICAgICAgICAgICAkY29uZltDVVJMT1BUX1NTTEtFWVBBU1NXRF0gPSAkc3NsS2V5WzFdOwogICAgICAgICAgICAgICAgJHNzbEtleSA9ICRzc2xLZXlbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkc3NsS2V5KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIlNTTCBwcml2YXRlIGtleSBub3QgZm91bmQ6IHskc3NsS2V5fSIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TU0xLRVldID0gJHNzbEtleTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncHJvZ3Jlc3MnXSkpIHsKICAgICAgICAgICAgJHByb2dyZXNzID0gJG9wdGlvbnNbJ3Byb2dyZXNzJ107CiAgICAgICAgICAgIGlmICghaXNfY2FsbGFibGUoJHByb2dyZXNzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgJ3Byb2dyZXNzIGNsaWVudCBvcHRpb24gbXVzdCBiZSBjYWxsYWJsZScKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9OT1BST0dSRVNTXSA9IGZhbHNlOwogICAgICAgICAgICAkY29uZltDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT05dID0gZnVuY3Rpb24gKCkgdXNlICgkcHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwogICAgICAgICAgICAgICAgLy8gUEhQIDUuNSBwdXNoZWQgdGhlIGhhbmRsZSBvbnRvIHRoZSBzdGFydCBvZiB0aGUgYXJncwogICAgICAgICAgICAgICAgaWYgKGlzX3Jlc291cmNlKCRhcmdzWzBdKSkgewogICAgICAgICAgICAgICAgICAgIGFycmF5X3NoaWZ0KCRhcmdzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jX2FycmF5KCRwcm9ncmVzcywgJGFyZ3MpOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snZGVidWcnXSkpIHsKICAgICAgICAgICAgJGNvbmZbQ1VSTE9QVF9TVERFUlJdID0gXEd1enpsZUh0dHBcZGVidWdfcmVzb3VyY2UoJG9wdGlvbnNbJ2RlYnVnJ10pOwogICAgICAgICAgICAkY29uZltDVVJMT1BUX1ZFUkJPU0VdID0gdHJ1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBhIHJlc3BvbnNlIHdhcyBzZXQgb24gYSB0cmFuc2FjdGlvbi4gSWYgb25lCiAgICAgKiB3YXMgbm90IHNldCwgdGhlbiB0aGUgcmVxdWVzdCBpcyByZXRyaWVkIGlmIHBvc3NpYmxlLiBUaGlzIGVycm9yCiAgICAgKiB0eXBpY2FsbHkgbWVhbnMgeW91IGFyZSBzZW5kaW5nIGEgcGF5bG9hZCwgY3VybCBlbmNvdW50ZXJlZCBhCiAgICAgKiAiQ29ubmVjdGlvbiBkaWVkLCByZXRyeWluZyBhIGZyZXNoIGNvbm5lY3QiIGVycm9yLCB0cmllZCB0byByZXdpbmQgdGhlCiAgICAgKiBzdHJlYW0sIGFuZCB0aGVuIGVuY291bnRlcmVkIGEgIm5lY2Vzc2FyeSBkYXRhIHJld2luZCB3YXNuJ3QgcG9zc2libGUiCiAgICAgKiBlcnJvciwgY2F1c2luZyB0aGUgcmVxdWVzdCB0byBiZSBzZW50IHRocm91Z2ggY3VybF9tdWx0aV9pbmZvX3JlYWQoKQogICAgICogd2l0aG91dCBhbiBlcnJvciBzdGF0dXMuCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJldHJ5RmFpbGVkUmV3aW5kKAogICAgICAgIGNhbGxhYmxlICRoYW5kbGVyLAogICAgICAgIEVhc3lIYW5kbGUgJGVhc3ksCiAgICAgICAgYXJyYXkgJGN0eAogICAgKSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gT25seSByZXdpbmQgaWYgdGhlIGJvZHkgaGFzIGJlZW4gcmVhZCBmcm9tLgogICAgICAgICAgICAkYm9keSA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRCb2R5KCk7CiAgICAgICAgICAgIGlmICgkYm9keS0+dGVsbCgpID4gMCkgewogICAgICAgICAgICAgICAgJGJvZHktPnJld2luZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoXFJ1bnRpbWVFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgJGN0eFsnZXJyb3InXSA9ICdUaGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkgZmFpbGVkIHdpdGhvdXQgJwogICAgICAgICAgICAgICAgLiAncHJvdmlkaW5nIGFuIGVycm9yLiBUaGUgcmVxdWVzdCB3b3VsZCBoYXZlIGJlZW4gcmV0cmllZCwgJwogICAgICAgICAgICAgICAgLiAnYnV0IGF0dGVtcHRpbmcgdG8gcmV3aW5kIHRoZSByZXF1ZXN0IGJvZHkgZmFpbGVkLiAnCiAgICAgICAgICAgICAgICAuICdFeGNlcHRpb246ICcgLiAkZTsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZVJlamVjdGlvbigkZWFzeSwgJGN0eCk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZXRyeSBubyBtb3JlIHRoYW4gMyB0aW1lcyBiZWZvcmUgZ2l2aW5nIHVwLgogICAgICAgIGlmICghaXNzZXQoJGVhc3ktPm9wdGlvbnNbJ19jdXJsX3JldHJpZXMnXSkpIHsKICAgICAgICAgICAgJGVhc3ktPm9wdGlvbnNbJ19jdXJsX3JldHJpZXMnXSA9IDE7CiAgICAgICAgfSBlbHNlaWYgKCRlYXN5LT5vcHRpb25zWydfY3VybF9yZXRyaWVzJ10gPT0gMikgewogICAgICAgICAgICAkY3R4WydlcnJvciddID0gJ1RoZSBjVVJMIHJlcXVlc3Qgd2FzIHJldHJpZWQgMyB0aW1lcyAnCiAgICAgICAgICAgICAgICAuICdhbmQgZGlkIG5vdCBzdWNjZWVkLiBUaGUgbW9zdCBsaWtlbHkgcmVhc29uIGZvciB0aGUgZmFpbHVyZSAnCiAgICAgICAgICAgICAgICAuICdpcyB0aGF0IGNVUkwgd2FzIHVuYWJsZSB0byByZXdpbmQgdGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QgJwogICAgICAgICAgICAgICAgLiAnYW5kIHN1YnNlcXVlbnQgcmV0cmllcyByZXN1bHRlZCBpbiB0aGUgc2FtZSBlcnJvci4gVHVybiBvbiAnCiAgICAgICAgICAgICAgICAuICd0aGUgZGVidWcgb3B0aW9uIHRvIHNlZSB3aGF0IHdlbnQgd3JvbmcuIFNlZSAnCiAgICAgICAgICAgICAgICAuICdodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTQ3MjA0IGZvciBtb3JlIGluZm9ybWF0aW9uLic7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVSZWplY3Rpb24oJGVhc3ksICRjdHgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRlYXN5LT5vcHRpb25zWydfY3VybF9yZXRyaWVzJ10rKzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaGFuZGxlcigkZWFzeS0+cmVxdWVzdCwgJGVhc3ktPm9wdGlvbnMpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlSGVhZGVyRm4oRWFzeUhhbmRsZSAkZWFzeSkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJGVhc3ktPm9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgJG9uSGVhZGVycyA9ICRlYXN5LT5vcHRpb25zWydvbl9oZWFkZXJzJ107CgogICAgICAgICAgICBpZiAoIWlzX2NhbGxhYmxlKCRvbkhlYWRlcnMpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignb25faGVhZGVycyBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb25IZWFkZXJzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmdW5jdGlvbiAoJGNoLCAkaCkgdXNlICgKICAgICAgICAgICAgJG9uSGVhZGVycywKICAgICAgICAgICAgJGVhc3ksCiAgICAgICAgICAgICYkc3RhcnRpbmdSZXNwb25zZQogICAgICAgICkgewogICAgICAgICAgICAkdmFsdWUgPSB0cmltKCRoKTsKICAgICAgICAgICAgaWYgKCR2YWx1ZSA9PT0gJycpIHsKICAgICAgICAgICAgICAgICRzdGFydGluZ1Jlc3BvbnNlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICRlYXN5LT5jcmVhdGVSZXNwb25zZSgpOwogICAgICAgICAgICAgICAgaWYgKCRvbkhlYWRlcnMgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAkb25IZWFkZXJzKCRlYXN5LT5yZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIGV4Y2VwdGlvbiB3aXRoIHRoZSBoYW5kbGUgYW5kIHRyaWdnZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBjdXJsIGhlYWRlciB3cml0ZSBlcnJvciBieSByZXR1cm5pbmcgMC4KICAgICAgICAgICAgICAgICAgICAgICAgJGVhc3ktPm9uSGVhZGVyc0V4Y2VwdGlvbiA9ICRlOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2VpZiAoJHN0YXJ0aW5nUmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICRzdGFydGluZ1Jlc3BvbnNlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAkZWFzeS0+aGVhZGVycyA9IFskdmFsdWVdOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGVhc3ktPmhlYWRlcnNbXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gc3RybGVuKCRoKTsKICAgICAgICB9OwogICAgfQp9Cg==]]></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+X21oKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgICRlYXN5ID0gJHRoaXMtPmZhY3RvcnktPmNyZWF0ZSgkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICRpZCA9IChpbnQpICRlYXN5LT5oYW5kbGU7CgogICAgICAgICRwcm9taXNlID0gbmV3IFByb21pc2UoCiAgICAgICAgICAgIFskdGhpcywgJ2V4ZWN1dGUnXSwKICAgICAgICAgICAgZnVuY3Rpb24gKCkgdXNlICgkaWQpIHsgcmV0dXJuICR0aGlzLT5jYW5jZWwoJGlkKTsgfQogICAgICAgICk7CgogICAgICAgICR0aGlzLT5hZGRSZXF1ZXN0KFsnZWFzeScgPT4gJGVhc3ksICdkZWZlcnJlZCcgPT4gJHByb21pc2VdKTsKCiAgICAgICAgcmV0dXJuICRwcm9taXNlOwogICAgfQoKICAgIC8qKgogICAgICogVGlja3MgdGhlIGN1cmwgZXZlbnQgbG9vcC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRpY2soKQogICAgewogICAgICAgIC8vIEFkZCBhbnkgZGVsYXllZCBoYW5kbGVzIGlmIG5lZWRlZC4KICAgICAgICBpZiAoJHRoaXMtPmRlbGF5cykgewogICAgICAgICAgICAkY3VycmVudFRpbWUgPSBtaWNyb3RpbWUodHJ1ZSk7CiAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kZWxheXMgYXMgJGlkID0+ICRkZWxheSkgewogICAgICAgICAgICAgICAgaWYgKCRjdXJyZW50VGltZSA+PSAkZGVsYXkpIHsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+ZGVsYXlzWyRpZF0pOwogICAgICAgICAgICAgICAgICAgIGN1cmxfbXVsdGlfYWRkX2hhbmRsZSgKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9taCwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmhhbmRsZXNbJGlkXVsnZWFzeSddLT5oYW5kbGUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBTdGVwIHRocm91Z2ggdGhlIHRhc2sgcXVldWUgd2hpY2ggbWF5IGFkZCBhZGRpdGlvbmFsIHJlcXVlc3RzLgogICAgICAgIFBccXVldWUoKS0+cnVuKCk7CgogICAgICAgIGlmICgkdGhpcy0+YWN0aXZlICYmCiAgICAgICAgICAgIGN1cmxfbXVsdGlfc2VsZWN0KCR0aGlzLT5fbWgsICR0aGlzLT5zZWxlY3RUaW1lb3V0KSA9PT0gLTEKICAgICAgICApIHsKICAgICAgICAgICAgLy8gUGVyZm9ybSBhIHVzbGVlcCBpZiBhIHNlbGVjdCByZXR1cm5zIC0xLgogICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy5waHAubmV0L2J1Zy5waHA/aWQ9NjExNDEKICAgICAgICAgICAgdXNsZWVwKDI1MCk7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoY3VybF9tdWx0aV9leGVjKCR0aGlzLT5fbWgsICR0aGlzLT5hY3RpdmUpID09PSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0pOwoKICAgICAgICAkdGhpcy0+cHJvY2Vzc01lc3NhZ2VzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zIHVudGlsIGFsbCBvdXRzdGFuZGluZyBjb25uZWN0aW9ucyBoYXZlIGNvbXBsZXRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKQogICAgewogICAgICAgICRxdWV1ZSA9IFBccXVldWUoKTsKCiAgICAgICAgd2hpbGUgKCR0aGlzLT5oYW5kbGVzIHx8ICEkcXVldWUtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gdHJhbnNmZXJzLCB0aGVuIHNsZWVwIGZvciB0aGUgbmV4dCBkZWxheQogICAgICAgICAgICBpZiAoISR0aGlzLT5hY3RpdmUgJiYgJHRoaXMtPmRlbGF5cykgewogICAgICAgICAgICAgICAgdXNsZWVwKCR0aGlzLT50aW1lVG9OZXh0KCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT50aWNrKCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkUmVxdWVzdChhcnJheSAkZW50cnkpCiAgICB7CiAgICAgICAgJGVhc3kgPSAkZW50cnlbJ2Vhc3knXTsKICAgICAgICAkaWQgPSAoaW50KSAkZWFzeS0+aGFuZGxlOwogICAgICAgICR0aGlzLT5oYW5kbGVzWyRpZF0gPSAkZW50cnk7CiAgICAgICAgaWYgKGVtcHR5KCRlYXN5LT5vcHRpb25zWydkZWxheSddKSkgewogICAgICAgICAgICBjdXJsX211bHRpX2FkZF9oYW5kbGUoJHRoaXMtPl9taCwgJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmRlbGF5c1skaWRdID0gbWljcm90aW1lKHRydWUpICsgKCRlYXN5LT5vcHRpb25zWydkZWxheSddIC8gMTAwMCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ2FuY2VscyBhIGhhbmRsZSBmcm9tIHNlbmRpbmcgYW5kIHJlbW92ZXMgcmVmZXJlbmNlcyB0byBpdC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRpZCBIYW5kbGUgSUQgdG8gY2FuY2VsIGFuZCByZW1vdmUuCiAgICAgKgogICAgICogQHJldHVybiBib29sIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYW5jZWwoJGlkKQogICAgewogICAgICAgIC8vIENhbm5vdCBjYW5jZWwgaWYgaXQgaGFzIGJlZW4gcHJvY2Vzc2VkLgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhhbmRsZXNbJGlkXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJGhhbmRsZSA9ICR0aGlzLT5oYW5kbGVzWyRpZF1bJ2Vhc3knXS0+aGFuZGxlOwogICAgICAgIHVuc2V0KCR0aGlzLT5kZWxheXNbJGlkXSwgJHRoaXMtPmhhbmRsZXNbJGlkXSk7CiAgICAgICAgY3VybF9tdWx0aV9yZW1vdmVfaGFuZGxlKCR0aGlzLT5fbWgsICRoYW5kbGUpOwogICAgICAgIGN1cmxfY2xvc2UoJGhhbmRsZSk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcHJvY2Vzc01lc3NhZ2VzKCkKICAgIHsKICAgICAgICB3aGlsZSAoJGRvbmUgPSBjdXJsX211bHRpX2luZm9fcmVhZCgkdGhpcy0+X21oKSkgewogICAgICAgICAgICAkaWQgPSAoaW50KSAkZG9uZVsnaGFuZGxlJ107CiAgICAgICAgICAgIGN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgkdGhpcy0+X21oLCAkZG9uZVsnaGFuZGxlJ10pOwoKICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+aGFuZGxlc1skaWRdKSkgewogICAgICAgICAgICAgICAgLy8gUHJvYmFibHkgd2FzIGNhbmNlbGxlZC4KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZW50cnkgPSAkdGhpcy0+aGFuZGxlc1skaWRdOwogICAgICAgICAgICB1bnNldCgkdGhpcy0+aGFuZGxlc1skaWRdLCAkdGhpcy0+ZGVsYXlzWyRpZF0pOwogICAgICAgICAgICAkZW50cnlbJ2Vhc3knXS0+ZXJybm8gPSAkZG9uZVsncmVzdWx0J107CiAgICAgICAgICAgICRlbnRyeVsnZGVmZXJyZWQnXS0+cmVzb2x2ZSgKICAgICAgICAgICAgICAgIEN1cmxGYWN0b3J5OjpmaW5pc2goCiAgICAgICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAgICAgJGVudHJ5WydlYXN5J10sCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhY3RvcnkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB0aW1lVG9OZXh0KCkKICAgIHsKICAgICAgICAkY3VycmVudFRpbWUgPSBtaWNyb3RpbWUodHJ1ZSk7CiAgICAgICAgJG5leHRUaW1lID0gUEhQX0lOVF9NQVg7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRlbGF5cyBhcyAkdGltZSkgewogICAgICAgICAgICBpZiAoJHRpbWUgPCAkbmV4dFRpbWUpIHsKICAgICAgICAgICAgICAgICRuZXh0VGltZSA9ICR0aW1lOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF4KDAsICRuZXh0VGltZSAtICRjdXJyZW50VGltZSkgKiAxMDAwMDAwOwogICAgfQp9Cg==]]></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[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHBcSGFuZGxlcjsKCnVzZSBHdXp6bGVIdHRwXEV4Y2VwdGlvblxSZXF1ZXN0RXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGVkUHJvbWlzZTsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgR3V6emxlSHR0cFxQc3I3Owp1c2UgR3V6emxlSHR0cFxUcmFuc2ZlclN0YXRzOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlOwoKLyoqCiAqIEhUVFAgaGFuZGxlciB0aGF0IHVzZXMgUEhQJ3MgSFRUUCBzdHJlYW0gd3JhcHBlci4KICovCmNsYXNzIFN0cmVhbUhhbmRsZXIKewogICAgcHJpdmF0ZSAkbGFzdEhlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIFNlbmRzIGFuIEhUVFAgcmVxdWVzdC4KICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCBSZXF1ZXN0IHRvIHNlbmQuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKgogICAgICogQHJldHVybiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykKICAgIHsKICAgICAgICAvLyBTbGVlcCBpZiB0aGVyZSBpcyBhIGRlbGF5IHNwZWNpZmllZC4KICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2RlbGF5J10pKSB7CiAgICAgICAgICAgIHVzbGVlcCgkb3B0aW9uc1snZGVsYXknXSAqIDEwMDApOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0VGltZSA9IGlzc2V0KCRvcHRpb25zWydvbl9zdGF0cyddKSA/IG1pY3JvdGltZSh0cnVlKSA6IG51bGw7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8vIERvZXMgbm90IHN1cHBvcnQgdGhlIGV4cGVjdCBoZWFkZXIuCiAgICAgICAgICAgICRyZXF1ZXN0ID0gJHJlcXVlc3QtPndpdGhvdXRIZWFkZXIoJ0V4cGVjdCcpOwoKICAgICAgICAgICAgLy8gQXBwZW5kIGEgY29udGVudC1sZW5ndGggaGVhZGVyIGlmIGJvZHkgc2l6ZSBpcyB6ZXJvIHRvIG1hdGNoCiAgICAgICAgICAgIC8vIGNVUkwncyBiZWhhdmlvci4KICAgICAgICAgICAgaWYgKDAgPT09ICRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldFNpemUoKSkgewogICAgICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aEhlYWRlcignQ29udGVudC1MZW5ndGgnLCAwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVSZXNwb25zZSgKICAgICAgICAgICAgICAgICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgJG9wdGlvbnMsCiAgICAgICAgICAgICAgICAkdGhpcy0+Y3JlYXRlU3RyZWFtKCRyZXF1ZXN0LCAkb3B0aW9ucyksCiAgICAgICAgICAgICAgICAkc3RhcnRUaW1lCiAgICAgICAgICAgICk7CiAgICAgICAgfSBjYXRjaCAoXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgZXJyb3Igd2FzIGEgbmV0d29ya2luZyBlcnJvci4KICAgICAgICAgICAgJG1lc3NhZ2UgPSAkZS0+Z2V0TWVzc2FnZSgpOwogICAgICAgICAgICAvLyBUaGlzIGxpc3QgY2FuIHByb2JhYmx5IGdldCBtb3JlIGNvbXByZWhlbnNpdmUuCiAgICAgICAgICAgIGlmIChzdHJwb3MoJG1lc3NhZ2UsICdnZXRhZGRyaW5mbycpIC8vIEROUyBsb29rdXAgZmFpbGVkCiAgICAgICAgICAgICAgICB8fCBzdHJwb3MoJG1lc3NhZ2UsICdDb25uZWN0aW9uIHJlZnVzZWQnKQogICAgICAgICAgICAgICAgfHwgc3RycG9zKCRtZXNzYWdlLCAiY291bGRuJ3QgY29ubmVjdCB0byBob3N0IikgLy8gZXJyb3Igb24gSEhWTQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICRlID0gbmV3IENvbm5lY3RFeGNlcHRpb24oJGUtPmdldE1lc3NhZ2UoKSwgJHJlcXVlc3QsICRlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZSA9IFJlcXVlc3RFeGNlcHRpb246OndyYXBFeGNlcHRpb24oJHJlcXVlc3QsICRlKTsKICAgICAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRvcHRpb25zLCAkcmVxdWVzdCwgJHN0YXJ0VGltZSwgbnVsbCwgJGUpOwoKICAgICAgICAgICAgcmV0dXJuIFxHdXp6bGVIdHRwXFByb21pc2VccmVqZWN0aW9uX2ZvcigkZSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW52b2tlU3RhdHMoCiAgICAgICAgYXJyYXkgJG9wdGlvbnMsCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICAkc3RhcnRUaW1lLAogICAgICAgIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwsCiAgICAgICAgJGVycm9yID0gbnVsbAogICAgKSB7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydvbl9zdGF0cyddKSkgewogICAgICAgICAgICAkc3RhdHMgPSBuZXcgVHJhbnNmZXJTdGF0cygKICAgICAgICAgICAgICAgICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgJHJlc3BvbnNlLAogICAgICAgICAgICAgICAgbWljcm90aW1lKHRydWUpIC0gJHN0YXJ0VGltZSwKICAgICAgICAgICAgICAgICRlcnJvciwKICAgICAgICAgICAgICAgIFtdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGNhbGxfdXNlcl9mdW5jKCRvcHRpb25zWydvbl9zdGF0cyddLCAkc3RhdHMpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlKAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgYXJyYXkgJG9wdGlvbnMsCiAgICAgICAgJHN0cmVhbSwKICAgICAgICAkc3RhcnRUaW1lCiAgICApIHsKICAgICAgICAkaGRycyA9ICR0aGlzLT5sYXN0SGVhZGVyczsKICAgICAgICAkdGhpcy0+bGFzdEhlYWRlcnMgPSBbXTsKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcgJywgYXJyYXlfc2hpZnQoJGhkcnMpLCAzKTsKICAgICAgICAkdmVyID0gZXhwbG9kZSgnLycsICRwYXJ0c1swXSlbMV07CiAgICAgICAgJHN0YXR1cyA9ICRwYXJ0c1sxXTsKICAgICAgICAkcmVhc29uID0gaXNzZXQoJHBhcnRzWzJdKSA/ICRwYXJ0c1syXSA6IG51bGw7CiAgICAgICAgJGhlYWRlcnMgPSBcR3V6emxlSHR0cFxoZWFkZXJzX2Zyb21fbGluZXMoJGhkcnMpOwogICAgICAgIGxpc3QgKCRzdHJlYW0sICRoZWFkZXJzKSA9ICR0aGlzLT5jaGVja0RlY29kZSgkb3B0aW9ucywgJGhlYWRlcnMsICRzdHJlYW0pOwogICAgICAgICRzdHJlYW0gPSBQc3I3XHN0cmVhbV9mb3IoJHN0cmVhbSk7CiAgICAgICAgJHNpbmsgPSAkc3RyZWFtOwoKICAgICAgICBpZiAoc3RyY2FzZWNtcCgnSEVBRCcsICRyZXF1ZXN0LT5nZXRNZXRob2QoKSkpIHsKICAgICAgICAgICAgJHNpbmsgPSAkdGhpcy0+Y3JlYXRlU2luaygkc3RyZWFtLCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkcmVzcG9uc2UgPSBuZXcgUHNyN1xSZXNwb25zZSgkc3RhdHVzLCAkaGVhZGVycywgJHNpbmssICR2ZXIsICRyZWFzb24pOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRvcHRpb25zWydvbl9oZWFkZXJzJ10oJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgJG1zZyA9ICdBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgZHVyaW5nIHRoZSBvbl9oZWFkZXJzIGV2ZW50JzsKICAgICAgICAgICAgICAgICRleCA9IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKCRtc2csICRyZXF1ZXN0LCAkcmVzcG9uc2UsICRlKTsKICAgICAgICAgICAgICAgIHJldHVybiBcR3V6emxlSHR0cFxQcm9taXNlXHJlamVjdGlvbl9mb3IoJGV4KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gRG8gbm90IGRyYWluIHdoZW4gdGhlIHJlcXVlc3QgaXMgYSBIRUFEIHJlcXVlc3QgYmVjYXVzZSB0aGV5IGhhdmUKICAgICAgICAvLyBubyBib2R5LgogICAgICAgIGlmICgkc2luayAhPT0gJHN0cmVhbSkgewogICAgICAgICAgICAkdGhpcy0+ZHJhaW4oCiAgICAgICAgICAgICAgICAkc3RyZWFtLAogICAgICAgICAgICAgICAgJHNpbmssCiAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtTGVuZ3RoJykKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5pbnZva2VTdGF0cygkb3B0aW9ucywgJHJlcXVlc3QsICRzdGFydFRpbWUsICRyZXNwb25zZSwgbnVsbCk7CgogICAgICAgIHJldHVybiBuZXcgRnVsZmlsbGVkUHJvbWlzZSgkcmVzcG9uc2UpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlU2luayhTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgYXJyYXkgJG9wdGlvbnMpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snc3RyZWFtJ10pKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RyZWFtOwogICAgICAgIH0KCiAgICAgICAgJHNpbmsgPSBpc3NldCgkb3B0aW9uc1snc2luayddKQogICAgICAgICAgICA/ICRvcHRpb25zWydzaW5rJ10KICAgICAgICAgICAgOiBmb3BlbigncGhwOi8vdGVtcCcsICdyKycpOwoKICAgICAgICByZXR1cm4gaXNfc3RyaW5nKCRzaW5rKQogICAgICAgICAgICA/IG5ldyBQc3I3XExhenlPcGVuU3RyZWFtKCRzaW5rLCAndysnKQogICAgICAgICAgICA6IFBzcjdcc3RyZWFtX2Zvcigkc2luayk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0RlY29kZShhcnJheSAkb3B0aW9ucywgYXJyYXkgJGhlYWRlcnMsICRzdHJlYW0pCiAgICB7CiAgICAgICAgLy8gQXV0b21hdGljYWxseSBkZWNvZGUgcmVzcG9uc2VzIHdoZW4gaW5zdHJ1Y3RlZC4KICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydkZWNvZGVfY29udGVudCddKSkgewogICAgICAgICAgICAkbm9ybWFsaXplZEtleXMgPSBcR3V6emxlSHR0cFxub3JtYWxpemVfaGVhZGVyX2tleXMoJGhlYWRlcnMpOwogICAgICAgICAgICBpZiAoaXNzZXQoJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ10pKSB7CiAgICAgICAgICAgICAgICAkZW5jb2RpbmcgPSAkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV07CiAgICAgICAgICAgICAgICBpZiAoJGVuY29kaW5nWzBdID09PSAnZ3ppcCcgfHwgJGVuY29kaW5nWzBdID09PSAnZGVmbGF0ZScpIHsKICAgICAgICAgICAgICAgICAgICAkc3RyZWFtID0gbmV3IFBzcjdcSW5mbGF0ZVN0cmVhbSgKICAgICAgICAgICAgICAgICAgICAgICAgUHNyN1xzdHJlYW1fZm9yKCRzdHJlYW0pCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1sneC1lbmNvZGVkLWNvbnRlbnQtZW5jb2RpbmcnXQogICAgICAgICAgICAgICAgICAgICAgICA9ICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1lbmNvZGluZyddXTsKICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgY29udGVudC1lbmNvZGluZyBoZWFkZXIKICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV0pOwogICAgICAgICAgICAgICAgICAgIC8vIEZpeCBjb250ZW50LWxlbmd0aCBoZWFkZXIKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1sneC1lbmNvZGVkLWNvbnRlbnQtbGVuZ3RoJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRsZW5ndGggPSAoaW50KSAkc3RyZWFtLT5nZXRTaXplKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkbGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtbGVuZ3RoJ11dKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXV0gPSBbJGxlbmd0aF07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHN0cmVhbSwgJGhlYWRlcnNdOwogICAgfQoKICAgIC8qKgogICAgICogRHJhaW5zIHRoZSBzb3VyY2Ugc3RyZWFtIGludG8gdGhlICJzaW5rIiBjbGllbnQgb3B0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHNvdXJjZQogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc2luawogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAkY29udGVudExlbmd0aCBIZWFkZXIgc3BlY2lmeWluZyB0aGUgYW1vdW50IG9mCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgdG8gcmVhZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiB3aGVuIHRoZSBzaW5rIG9wdGlvbiBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRyYWluKAogICAgICAgIFN0cmVhbUludGVyZmFjZSAkc291cmNlLAogICAgICAgIFN0cmVhbUludGVyZmFjZSAkc2luaywKICAgICAgICAkY29udGVudExlbmd0aAogICAgKSB7CiAgICAgICAgLy8gSWYgYSBjb250ZW50LWxlbmd0aCBoZWFkZXIgaXMgcHJvdmlkZWQsIHRoZW4gc3RvcCByZWFkaW5nIG9uY2UKICAgICAgICAvLyB0aGF0IG51bWJlciBvZiBieXRlcyBoYXMgYmVlbiByZWFkLiBUaGlzIGNhbiBwcmV2ZW50IGluZmluaXRlbHkKICAgICAgICAvLyByZWFkaW5nIGZyb20gYSBzdHJlYW0gd2hlbiBkZWFsaW5nIHdpdGggc2VydmVycyB0aGF0IGRvIG5vdCBob25vcgogICAgICAgIC8vIENvbm5lY3Rpb246IENsb3NlIGhlYWRlcnMuCiAgICAgICAgUHNyN1xjb3B5X3RvX3N0cmVhbSgKICAgICAgICAgICAgJHNvdXJjZSwKICAgICAgICAgICAgJHNpbmssCiAgICAgICAgICAgIChzdHJsZW4oJGNvbnRlbnRMZW5ndGgpID4gMCAmJiAoaW50KSAkY29udGVudExlbmd0aCA+IDApID8gKGludCkgJGNvbnRlbnRMZW5ndGggOiAtMQogICAgICAgICk7CgogICAgICAgICRzaW5rLT5zZWVrKDApOwogICAgICAgICRzb3VyY2UtPmNsb3NlKCk7CgogICAgICAgIHJldHVybiAkc2luazsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIHJlc291cmNlIGFuZCBjaGVjayB0byBlbnN1cmUgaXQgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5CiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRjYWxsYmFjayBDYWxsYWJsZSB0aGF0IHJldHVybnMgc3RyZWFtIHJlc291cmNlCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBvbiBlcnJvcgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZVJlc291cmNlKGNhbGxhYmxlICRjYWxsYmFjaykKICAgIHsKICAgICAgICAkZXJyb3JzID0gbnVsbDsKICAgICAgICBzZXRfZXJyb3JfaGFuZGxlcihmdW5jdGlvbiAoJF8sICRtc2csICRmaWxlLCAkbGluZSkgdXNlICgmJGVycm9ycykgewogICAgICAgICAgICAkZXJyb3JzW10gPSBbCiAgICAgICAgICAgICAgICAnbWVzc2FnZScgPT4gJG1zZywKICAgICAgICAgICAgICAgICdmaWxlJyAgICA9PiAkZmlsZSwKICAgICAgICAgICAgICAgICdsaW5lJyAgICA9PiAkbGluZQogICAgICAgICAgICBdOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9KTsKCiAgICAgICAgJHJlc291cmNlID0gJGNhbGxiYWNrKCk7CiAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CgogICAgICAgIGlmICghJHJlc291cmNlKSB7CiAgICAgICAgICAgICRtZXNzYWdlID0gJ0Vycm9yIGNyZWF0aW5nIHJlc291cmNlOiAnOwogICAgICAgICAgICBmb3JlYWNoICgkZXJyb3JzIGFzICRlcnIpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRlcnIgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSAuPSAiWyRrZXldICR2YWx1ZSIgLiBQSFBfRU9MOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbih0cmltKCRtZXNzYWdlKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc291cmNlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlU3RyZWFtKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgIHN0YXRpYyAkbWV0aG9kczsKICAgICAgICBpZiAoISRtZXRob2RzKSB7CiAgICAgICAgICAgICRtZXRob2RzID0gYXJyYXlfZmxpcChnZXRfY2xhc3NfbWV0aG9kcyhfX0NMQVNTX18pKTsKICAgICAgICB9CgogICAgICAgIC8vIEhUVFAvMS4xIHN0cmVhbXMgdXNpbmcgdGhlIFBIUCBzdHJlYW0gd3JhcHBlciByZXF1aXJlIGEKICAgICAgICAvLyBDb25uZWN0aW9uOiBjbG9zZSBoZWFkZXIKICAgICAgICBpZiAoJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpID09ICcxLjEnCiAgICAgICAgICAgICYmICEkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb25uZWN0aW9uJykKICAgICAgICApIHsKICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aEhlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIFNTTCBpcyB2ZXJpZmllZCBieSBkZWZhdWx0CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWyd2ZXJpZnknXSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkcGFyYW1zID0gW107CiAgICAgICAgJGNvbnRleHQgPSAkdGhpcy0+Z2V0RGVmYXVsdENvbnRleHQoJHJlcXVlc3QsICRvcHRpb25zKTsKCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydvbl9oZWFkZXJzJ10pICYmICFpc19jYWxsYWJsZSgkb3B0aW9uc1snb25faGVhZGVycyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignb25faGVhZGVycyBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zKSkgewogICAgICAgICAgICBmb3JlYWNoICgkb3B0aW9ucyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJG1ldGhvZCA9ICJhZGRfeyRrZXl9IjsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbWV0aG9kc1skbWV0aG9kXSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+eyRtZXRob2R9KCRyZXF1ZXN0LCAkY29udGV4dCwgJHZhbHVlLCAkcGFyYW1zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzdHJlYW1fY29udGV4dCddKSkgewogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRvcHRpb25zWydzdHJlYW1fY29udGV4dCddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ3N0cmVhbV9jb250ZXh0IG11c3QgYmUgYW4gYXJyYXknKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29udGV4dCA9IGFycmF5X3JlcGxhY2VfcmVjdXJzaXZlKAogICAgICAgICAgICAgICAgJGNvbnRleHQsCiAgICAgICAgICAgICAgICAkb3B0aW9uc1snc3RyZWFtX2NvbnRleHQnXQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgLy8gTWljcm9zb2Z0IE5UTE0gYXV0aGVudGljYXRpb24gb25seSBzdXBwb3J0ZWQgd2l0aCBjdXJsIGhhbmRsZXIKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2F1dGgnXSkKICAgICAgICAgICAgJiYgaXNfYXJyYXkoJG9wdGlvbnNbJ2F1dGgnXSkKICAgICAgICAgICAgJiYgaXNzZXQoJG9wdGlvbnNbJ2F1dGgnXVsyXSkKICAgICAgICAgICAgJiYgJ250bG0nID09ICRvcHRpb25zWydhdXRoJ11bMl0KICAgICAgICApIHsKCiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdNaWNyb3NvZnQgTlRMTSBhdXRoZW50aWNhdGlvbiBvbmx5IHN1cHBvcnRlZCB3aXRoIGN1cmwgaGFuZGxlcicpOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9ICR0aGlzLT5yZXNvbHZlSG9zdCgkcmVxdWVzdCwgJG9wdGlvbnMpOwoKICAgICAgICAkY29udGV4dCA9ICR0aGlzLT5jcmVhdGVSZXNvdXJjZSgKICAgICAgICAgICAgZnVuY3Rpb24gKCkgdXNlICgkY29udGV4dCwgJHBhcmFtcykgewogICAgICAgICAgICAgICAgcmV0dXJuIHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkY29udGV4dCwgJHBhcmFtcyk7CiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmNyZWF0ZVJlc291cmNlKAogICAgICAgICAgICBmdW5jdGlvbiAoKSB1c2UgKCR1cmksICYkaHR0cF9yZXNwb25zZV9oZWFkZXIsICRjb250ZXh0LCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgJHJlc291cmNlID0gZm9wZW4oKHN0cmluZykgJHVyaSwgJ3InLCBudWxsLCAkY29udGV4dCk7CiAgICAgICAgICAgICAgICAkdGhpcy0+bGFzdEhlYWRlcnMgPSAkaHR0cF9yZXNwb25zZV9oZWFkZXI7CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydyZWFkX3RpbWVvdXQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcmVhZFRpbWVvdXQgPSAkb3B0aW9uc1sncmVhZF90aW1lb3V0J107CiAgICAgICAgICAgICAgICAgICAgJHNlYyA9IChpbnQpICRyZWFkVGltZW91dDsKICAgICAgICAgICAgICAgICAgICAkdXNlYyA9ICgkcmVhZFRpbWVvdXQgLSAkc2VjKSAqIDEwMDAwMDsKICAgICAgICAgICAgICAgICAgICBzdHJlYW1fc2V0X3RpbWVvdXQoJHJlc291cmNlLCAkc2VjLCAkdXNlYyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRyZXNvdXJjZTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiByZXNvbHZlSG9zdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykKICAgIHsKICAgICAgICAkdXJpID0gJHJlcXVlc3QtPmdldFVyaSgpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkgJiYgIWZpbHRlcl92YXIoJHVyaS0+Z2V0SG9zdCgpLCBGSUxURVJfVkFMSURBVEVfSVApKSB7CiAgICAgICAgICAgIGlmICgndjQnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkcmVjb3JkcyA9IGRuc19nZXRfcmVjb3JkKCR1cmktPmdldEhvc3QoKSwgRE5TX0EpOwogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkcmVjb3Jkc1swXVsnaXAnXSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQ29ubmVjdEV4Y2VwdGlvbihzcHJpbnRmKCJDb3VsZCBub3QgcmVzb2x2ZSBJUHY0IGFkZHJlc3MgZm9yIGhvc3QgJyVzJyIsICR1cmktPmdldEhvc3QoKSksICRyZXF1ZXN0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgkcmVjb3Jkc1swXVsnaXAnXSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgndjYnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkcmVjb3JkcyA9IGRuc19nZXRfcmVjb3JkKCR1cmktPmdldEhvc3QoKSwgRE5TX0FBQUEpOwogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkcmVjb3Jkc1swXVsnaXB2NiddKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb25uZWN0RXhjZXB0aW9uKHNwcmludGYoIkNvdWxkIG5vdCByZXNvbHZlIElQdjYgYWRkcmVzcyBmb3IgaG9zdCAnJXMnIiwgJHVyaS0+Z2V0SG9zdCgpKSwgJHJlcXVlc3QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhIb3N0KCdbJyAuICRyZWNvcmRzWzBdWydpcHY2J10gLiAnXScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVyaTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldERlZmF1bHRDb250ZXh0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpCiAgICB7CiAgICAgICAgJGhlYWRlcnMgPSAnJzsKICAgICAgICBmb3JlYWNoICgkcmVxdWVzdC0+Z2V0SGVhZGVycygpIGFzICRuYW1lID0+ICR2YWx1ZSkgewogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJHZhbCkgewogICAgICAgICAgICAgICAgJGhlYWRlcnMgLj0gIiRuYW1lOiAkdmFsXHJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjb250ZXh0ID0gWwogICAgICAgICAgICAnaHR0cCcgPT4gWwogICAgICAgICAgICAgICAgJ21ldGhvZCcgICAgICAgICAgID0+ICRyZXF1ZXN0LT5nZXRNZXRob2QoKSwKICAgICAgICAgICAgICAgICdoZWFkZXInICAgICAgICAgICA9PiAkaGVhZGVycywKICAgICAgICAgICAgICAgICdwcm90b2NvbF92ZXJzaW9uJyA9PiAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAnaWdub3JlX2Vycm9ycycgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICdmb2xsb3dfbG9jYXRpb24nICA9PiAwLAogICAgICAgICAgICBdLAogICAgICAgIF07CgogICAgICAgICRib2R5ID0gKHN0cmluZykgJHJlcXVlc3QtPmdldEJvZHkoKTsKCiAgICAgICAgaWYgKCFlbXB0eSgkYm9keSkpIHsKICAgICAgICAgICAgJGNvbnRleHRbJ2h0dHAnXVsnY29udGVudCddID0gJGJvZHk7CiAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIEhUVFAgaGFuZGxlciBmcm9tIGFkZGluZyBhIENvbnRlbnQtVHlwZSBoZWFkZXIuCiAgICAgICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1UeXBlJykpIHsKICAgICAgICAgICAgICAgICRjb250ZXh0WydodHRwJ11bJ2hlYWRlciddIC49ICJDb250ZW50LVR5cGU6XHJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjb250ZXh0WydodHRwJ11bJ2hlYWRlciddID0gcnRyaW0oJGNvbnRleHRbJ2h0dHAnXVsnaGVhZGVyJ10pOwoKICAgICAgICByZXR1cm4gJGNvbnRleHQ7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfcHJveHkoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgJiRvcHRpb25zLCAkdmFsdWUsICYkcGFyYW1zKQogICAgewogICAgICAgIGlmICghaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkb3B0aW9uc1snaHR0cCddWydwcm94eSddID0gJHZhbHVlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzY2hlbWUgPSAkcmVxdWVzdC0+Z2V0VXJpKCktPmdldFNjaGVtZSgpOwogICAgICAgICAgICBpZiAoaXNzZXQoJHZhbHVlWyRzY2hlbWVdKSkgewogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkdmFsdWVbJ25vJ10pCiAgICAgICAgICAgICAgICAgICAgfHwgIVxHdXp6bGVIdHRwXGlzX2hvc3RfaW5fbm9wcm94eSgKICAgICAgICAgICAgICAgICAgICAgICAgJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRIb3N0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZVsnbm8nXQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydodHRwJ11bJ3Byb3h5J10gPSAkdmFsdWVbJHNjaGVtZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfdGltZW91dChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCAmJG9wdGlvbnMsICR2YWx1ZSwgJiRwYXJhbXMpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA+IDApIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ2h0dHAnXVsndGltZW91dCddID0gJHZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF92ZXJpZnkoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgJiRvcHRpb25zLCAkdmFsdWUsICYkcGFyYW1zKQogICAgewogICAgICAgIGlmICgkdmFsdWUgPT09IHRydWUpIHsKICAgICAgICAgICAgLy8gUEhQIDUuNiBvciBncmVhdGVyIHdpbGwgZmluZCB0aGUgc3lzdGVtIGNlcnQgYnkgZGVmYXVsdC4gV2hlbgogICAgICAgICAgICAvLyA8IDUuNiwgdXNlIHRoZSBHdXp6bGUgYnVuZGxlZCBjYWNlcnQuCiAgICAgICAgICAgIGlmIChQSFBfVkVSU0lPTl9JRCA8IDUwNjAwKSB7CiAgICAgICAgICAgICAgICAkb3B0aW9uc1snc3NsJ11bJ2NhZmlsZSddID0gXEd1enpsZUh0dHBcZGVmYXVsdF9jYV9idW5kbGUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJHZhbHVlKSkgewogICAgICAgICAgICAkb3B0aW9uc1snc3NsJ11bJ2NhZmlsZSddID0gJHZhbHVlOwogICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiU1NMIENBIGJ1bmRsZSBub3QgZm91bmQ6ICR2YWx1ZSIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ3NzbCddWyd2ZXJpZnlfcGVlciddID0gZmFsc2U7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXJfbmFtZSddID0gZmFsc2U7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB2ZXJpZnkgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICB9CgogICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXInXSA9IHRydWU7CiAgICAgICAgJG9wdGlvbnNbJ3NzbCddWyd2ZXJpZnlfcGVlcl9uYW1lJ10gPSB0cnVlOwogICAgICAgICRvcHRpb25zWydzc2wnXVsnYWxsb3dfc2VsZl9zaWduZWQnXSA9IGZhbHNlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX2NlcnQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgJiRvcHRpb25zLCAkdmFsdWUsICYkcGFyYW1zKQogICAgewogICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsncGFzc3BocmFzZSddID0gJHZhbHVlWzFdOwogICAgICAgICAgICAkdmFsdWUgPSAkdmFsdWVbMF07CiAgICAgICAgfQoKICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCR2YWx1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJTU0wgY2VydGlmaWNhdGUgbm90IGZvdW5kOiB7JHZhbHVlfSIpOwogICAgICAgIH0KCiAgICAgICAgJG9wdGlvbnNbJ3NzbCddWydsb2NhbF9jZXJ0J10gPSAkdmFsdWU7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfcHJvZ3Jlc3MoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgJiRvcHRpb25zLCAkdmFsdWUsICYkcGFyYW1zKQogICAgewogICAgICAgICR0aGlzLT5hZGROb3RpZmljYXRpb24oCiAgICAgICAgICAgICRwYXJhbXMsCiAgICAgICAgICAgIGZ1bmN0aW9uICgkY29kZSwgJGEsICRiLCAkYywgJHRyYW5zZmVycmVkLCAkdG90YWwpIHVzZSAoJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoJGNvZGUgPT0gU1RSRUFNX05PVElGWV9QUk9HUkVTUykgewogICAgICAgICAgICAgICAgICAgICR2YWx1ZSgkdG90YWwsICR0cmFuc2ZlcnJlZCwgbnVsbCwgbnVsbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX2RlYnVnKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsICYkb3B0aW9ucywgJHZhbHVlLCAmJHBhcmFtcykKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgJG1hcCA9IFsKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9DT05ORUNUICAgICAgID0+ICdDT05ORUNUJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9BVVRIX1JFUVVJUkVEID0+ICdBVVRIX1JFUVVJUkVEJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9BVVRIX1JFU1VMVCAgID0+ICdBVVRIX1JFU1VMVCcsCiAgICAgICAgICAgIFNUUkVBTV9OT1RJRllfTUlNRV9UWVBFX0lTICA9PiAnTUlNRV9UWVBFX0lTJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9GSUxFX1NJWkVfSVMgID0+ICdGSUxFX1NJWkVfSVMnLAogICAgICAgICAgICBTVFJFQU1fTk9USUZZX1JFRElSRUNURUQgICAgPT4gJ1JFRElSRUNURUQnLAogICAgICAgICAgICBTVFJFQU1fTk9USUZZX1BST0dSRVNTICAgICAgPT4gJ1BST0dSRVNTJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9GQUlMVVJFICAgICAgID0+ICdGQUlMVVJFJywKICAgICAgICAgICAgU1RSRUFNX05PVElGWV9DT01QTEVURUQgICAgID0+ICdDT01QTEVURUQnLAogICAgICAgICAgICBTVFJFQU1fTk9USUZZX1JFU09MVkUgICAgICAgPT4gJ1JFU09MVkUnLAogICAgICAgIF07CiAgICAgICAgc3RhdGljICRhcmdzID0gWydzZXZlcml0eScsICdtZXNzYWdlJywgJ21lc3NhZ2VfY29kZScsCiAgICAgICAgICAgICdieXRlc190cmFuc2ZlcnJlZCcsICdieXRlc19tYXgnXTsKCiAgICAgICAgJHZhbHVlID0gXEd1enpsZUh0dHBcZGVidWdfcmVzb3VyY2UoJHZhbHVlKTsKICAgICAgICAkaWRlbnQgPSAkcmVxdWVzdC0+Z2V0TWV0aG9kKCkgLiAnICcgLiAkcmVxdWVzdC0+Z2V0VXJpKCktPndpdGhGcmFnbWVudCgnJyk7CiAgICAgICAgJHRoaXMtPmFkZE5vdGlmaWNhdGlvbigKICAgICAgICAgICAgJHBhcmFtcywKICAgICAgICAgICAgZnVuY3Rpb24gKCkgdXNlICgkaWRlbnQsICR2YWx1ZSwgJG1hcCwgJGFyZ3MpIHsKICAgICAgICAgICAgICAgICRwYXNzZWQgPSBmdW5jX2dldF9hcmdzKCk7CiAgICAgICAgICAgICAgICAkY29kZSA9IGFycmF5X3NoaWZ0KCRwYXNzZWQpOwogICAgICAgICAgICAgICAgZnByaW50ZigkdmFsdWUsICc8JXM+IFslc10gJywgJGlkZW50LCAkbWFwWyRjb2RlXSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoIChhcnJheV9maWx0ZXIoJHBhc3NlZCkgYXMgJGkgPT4gJHYpIHsKICAgICAgICAgICAgICAgICAgICBmd3JpdGUoJHZhbHVlLCAkYXJnc1skaV0gLiAnOiAiJyAuICR2IC4gJyIgJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmd3JpdGUoJHZhbHVlLCAiXG4iKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGROb3RpZmljYXRpb24oYXJyYXkgJiRwYXJhbXMsIGNhbGxhYmxlICRub3RpZnkpCiAgICB7CiAgICAgICAgLy8gV3JhcCB0aGUgZXhpc3RpbmcgZnVuY3Rpb24gaWYgbmVlZGVkLgogICAgICAgIGlmICghaXNzZXQoJHBhcmFtc1snbm90aWZpY2F0aW9uJ10pKSB7CiAgICAgICAgICAgICRwYXJhbXNbJ25vdGlmaWNhdGlvbiddID0gJG5vdGlmeTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcGFyYW1zWydub3RpZmljYXRpb24nXSA9ICR0aGlzLT5jYWxsQXJyYXkoWwogICAgICAgICAgICAgICAgJHBhcmFtc1snbm90aWZpY2F0aW9uJ10sCiAgICAgICAgICAgICAgICAkbm90aWZ5CiAgICAgICAgICAgIF0pOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhbGxBcnJheShhcnJheSAkZnVuY3Rpb25zKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB1c2UgKCRmdW5jdGlvbnMpIHsKICAgICAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CiAgICAgICAgICAgIGZvcmVhY2ggKCRmdW5jdGlvbnMgYXMgJGZuKSB7CiAgICAgICAgICAgICAgICBjYWxsX3VzZXJfZnVuY19hcnJheSgkZm4sICRhcmdzKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/HandlerStack.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIENyZWF0ZXMgYSBjb21wb3NlZCBHdXp6bGUgaGFuZGxlciBmdW5jdGlvbiBieSBzdGFja2luZyBtaWRkbGV3YXJlcyBvbiB0b3Agb2YKICogYW4gSFRUUCBoYW5kbGVyIGZ1bmN0aW9uLgogKi8KY2xhc3MgSGFuZGxlclN0YWNrCnsKICAgIC8qKiBAdmFyIGNhbGxhYmxlICovCiAgICBwcml2YXRlICRoYW5kbGVyOwoKICAgIC8qKiBAdmFyIGFycmF5ICovCiAgICBwcml2YXRlICRzdGFjayA9IFtdOwoKICAgIC8qKiBAdmFyIGNhbGxhYmxlfG51bGwgKi8KICAgIHByaXZhdGUgJGNhY2hlZDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBkZWZhdWx0IGhhbmRsZXIgc3RhY2sgdGhhdCBjYW4gYmUgdXNlZCBieSBjbGllbnRzLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBoYW5kbGVyIHdpbGwgd3JhcCB0aGUgcHJvdmlkZWQgaGFuZGxlciBvciB1c2UgdGhlIG1vc3QKICAgICAqIGFwcHJvcHJpYXRlIGRlZmF1bHQgaGFuZGxlciBmb3IgeW91IHN5c3RlbS4gVGhlIHJldHVybmVkIEhhbmRsZXJTdGFjayBoYXMKICAgICAqIHN1cHBvcnQgZm9yIGNvb2tpZXMsIHJlZGlyZWN0cywgSFRUUCBlcnJvciBleGNlcHRpb25zLCBhbmQgcHJlcGFyaW5nIGEgYm9keQogICAgICogYmVmb3JlIHNlbmRpbmcuCiAgICAgKgogICAgICogVGhlIHJldHVybmVkIGhhbmRsZXIgc3RhY2sgY2FuIGJlIHBhc3NlZCB0byBhIGNsaWVudCBpbiB0aGUgImhhbmRsZXIiCiAgICAgKiBvcHRpb24uCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRoYW5kbGVyIEhUVFAgaGFuZGxlciBmdW5jdGlvbiB0byB1c2Ugd2l0aCB0aGUgc3RhY2suIElmIG5vCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBpcyBwcm92aWRlZCwgdGhlIGJlc3QgaGFuZGxlciBmb3IgeW91cgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbSB3aWxsIGJlIHV0aWxpemVkLgogICAgICoKICAgICAqIEByZXR1cm4gSGFuZGxlclN0YWNrCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKGNhbGxhYmxlICRoYW5kbGVyID0gbnVsbCkKICAgIHsKICAgICAgICAkc3RhY2sgPSBuZXcgc2VsZigkaGFuZGxlciA/OiBjaG9vc2VfaGFuZGxlcigpKTsKICAgICAgICAkc3RhY2stPnB1c2goTWlkZGxld2FyZTo6aHR0cEVycm9ycygpLCAnaHR0cF9lcnJvcnMnKTsKICAgICAgICAkc3RhY2stPnB1c2goTWlkZGxld2FyZTo6cmVkaXJlY3QoKSwgJ2FsbG93X3JlZGlyZWN0cycpOwogICAgICAgICRzdGFjay0+cHVzaChNaWRkbGV3YXJlOjpjb29raWVzKCksICdjb29raWVzJyk7CiAgICAgICAgJHN0YWNrLT5wdXNoKE1pZGRsZXdhcmU6OnByZXBhcmVCb2R5KCksICdwcmVwYXJlX2JvZHknKTsKCiAgICAgICAgcmV0dXJuICRzdGFjazsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkaGFuZGxlciBVbmRlcmx5aW5nIEhUVFAgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRoYW5kbGVyID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+aGFuZGxlciA9ICRoYW5kbGVyOwogICAgfQoKICAgIC8qKgogICAgICogSW52b2tlcyB0aGUgaGFuZGxlciBzdGFjayBhcyBhIGNvbXBvc2VkIGhhbmRsZXIKICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgICRoYW5kbGVyID0gJHRoaXMtPnJlc29sdmUoKTsKCiAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEdW1wcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRkZXB0aCA9IDA7CiAgICAgICAgJHN0YWNrID0gW107CiAgICAgICAgaWYgKCR0aGlzLT5oYW5kbGVyKSB7CiAgICAgICAgICAgICRzdGFja1tdID0gIjApIEhhbmRsZXI6ICIgLiAkdGhpcy0+ZGVidWdDYWxsYWJsZSgkdGhpcy0+aGFuZGxlcik7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoYXJyYXlfcmV2ZXJzZSgkdGhpcy0+c3RhY2spIGFzICR0dXBsZSkgewogICAgICAgICAgICAkZGVwdGgrKzsKICAgICAgICAgICAgJHN0ciA9ICJ7JGRlcHRofSkgTmFtZTogJ3skdHVwbGVbMV19JywgIjsKICAgICAgICAgICAgJHN0ciAuPSAiRnVuY3Rpb246ICIgLiAkdGhpcy0+ZGVidWdDYWxsYWJsZSgkdHVwbGVbMF0pOwogICAgICAgICAgICAkcmVzdWx0ID0gIj4geyRzdHJ9XG57JHJlc3VsdH0iOwogICAgICAgICAgICAkc3RhY2tbXSA9ICRzdHI7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoIChhcnJheV9rZXlzKCRzdGFjaykgYXMgJGspIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAiPCB7JHN0YWNrWyRrXX1cbiI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgSFRUUCBoYW5kbGVyIHRoYXQgYWN0dWFsbHkgcmV0dXJucyBhIHByb21pc2UuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRoYW5kbGVyIEFjY2VwdHMgYSByZXF1ZXN0IGFuZCBhcnJheSBvZiBvcHRpb25zIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybnMgYSBQcm9taXNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SGFuZGxlcihjYWxsYWJsZSAkaGFuZGxlcikKICAgIHsKICAgICAgICAkdGhpcy0+aGFuZGxlciA9ICRoYW5kbGVyOwogICAgICAgICR0aGlzLT5jYWNoZWQgPSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBidWlsZGVyIGhhcyBhIGhhbmRsZXIuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNIYW5kbGVyKCkKICAgIHsKICAgICAgICByZXR1cm4gKGJvb2wpICR0aGlzLT5oYW5kbGVyOwogICAgfQoKICAgIC8qKgogICAgICogVW5zaGlmdCBhIG1pZGRsZXdhcmUgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRtaWRkbGV3YXJlIE1pZGRsZXdhcmUgZnVuY3Rpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgICAkbmFtZSAgICAgICBOYW1lIHRvIHJlZ2lzdGVyIGZvciB0aGlzIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNoaWZ0KGNhbGxhYmxlICRtaWRkbGV3YXJlLCAkbmFtZSA9IG51bGwpCiAgICB7CiAgICAgICAgYXJyYXlfdW5zaGlmdCgkdGhpcy0+c3RhY2ssIFskbWlkZGxld2FyZSwgJG5hbWVdKTsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFB1c2ggYSBtaWRkbGV3YXJlIHRvIHRoZSB0b3Agb2YgdGhlIHN0YWNrLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkbWlkZGxld2FyZSBNaWRkbGV3YXJlIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJG5hbWUgICAgICAgTmFtZSB0byByZWdpc3RlciBmb3IgdGhpcyBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHVzaChjYWxsYWJsZSAkbWlkZGxld2FyZSwgJG5hbWUgPSAnJykKICAgIHsKICAgICAgICAkdGhpcy0+c3RhY2tbXSA9IFskbWlkZGxld2FyZSwgJG5hbWVdOwogICAgICAgICR0aGlzLT5jYWNoZWQgPSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgbWlkZGxld2FyZSBiZWZvcmUgYW5vdGhlciBtaWRkbGV3YXJlIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICRmaW5kTmFtZSAgIE1pZGRsZXdhcmUgdG8gZmluZAogICAgICogQHBhcmFtIGNhbGxhYmxlICRtaWRkbGV3YXJlIE1pZGRsZXdhcmUgZnVuY3Rpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgICAkd2l0aE5hbWUgICBOYW1lIHRvIHJlZ2lzdGVyIGZvciB0aGlzIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiZWZvcmUoJGZpbmROYW1lLCBjYWxsYWJsZSAkbWlkZGxld2FyZSwgJHdpdGhOYW1lID0gJycpCiAgICB7CiAgICAgICAgJHRoaXMtPnNwbGljZSgkZmluZE5hbWUsICR3aXRoTmFtZSwgJG1pZGRsZXdhcmUsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgbWlkZGxld2FyZSBhZnRlciBhbm90aGVyIG1pZGRsZXdhcmUgYnkgbmFtZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgJGZpbmROYW1lICAgTWlkZGxld2FyZSB0byBmaW5kCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG1pZGRsZXdhcmUgTWlkZGxld2FyZSBmdW5jdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICR3aXRoTmFtZSAgIE5hbWUgdG8gcmVnaXN0ZXIgZm9yIHRoaXMgbWlkZGxld2FyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFmdGVyKCRmaW5kTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsICR3aXRoTmFtZSA9ICcnKQogICAgewogICAgICAgICR0aGlzLT5zcGxpY2UoJGZpbmROYW1lLCAkd2l0aE5hbWUsICRtaWRkbGV3YXJlLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmUgYSBtaWRkbGV3YXJlIGJ5IGluc3RhbmNlIG9yIG5hbWUgZnJvbSB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlfHN0cmluZyAkcmVtb3ZlIE1pZGRsZXdhcmUgdG8gcmVtb3ZlIGJ5IGluc3RhbmNlIG9yIG5hbWUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmUoJHJlbW92ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgICAgICAkaWR4ID0gaXNfY2FsbGFibGUoJHJlbW92ZSkgPyAwIDogMTsKICAgICAgICAkdGhpcy0+c3RhY2sgPSBhcnJheV92YWx1ZXMoYXJyYXlfZmlsdGVyKAogICAgICAgICAgICAkdGhpcy0+c3RhY2ssCiAgICAgICAgICAgIGZ1bmN0aW9uICgkdHVwbGUpIHVzZSAoJGlkeCwgJHJlbW92ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0dXBsZVskaWR4XSAhPT0gJHJlbW92ZTsKICAgICAgICAgICAgfQogICAgICAgICkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcG9zZSB0aGUgbWlkZGxld2FyZSBhbmQgaGFuZGxlciBpbnRvIGEgc2luZ2xlIGNhbGxhYmxlIGZ1bmN0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlc29sdmUoKQogICAgewogICAgICAgIGlmICghJHRoaXMtPmNhY2hlZCkgewogICAgICAgICAgICBpZiAoISgkcHJldiA9ICR0aGlzLT5oYW5kbGVyKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignTm8gaGFuZGxlciBoYXMgYmVlbiBzcGVjaWZpZWQnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yZWFjaCAoYXJyYXlfcmV2ZXJzZSgkdGhpcy0+c3RhY2spIGFzICRmbikgewogICAgICAgICAgICAgICAgJHByZXYgPSAkZm5bMF0oJHByZXYpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdGhpcy0+Y2FjaGVkID0gJHByZXY7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmNhY2hlZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkbmFtZQogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaW5kQnlOYW1lKCRuYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zdGFjayBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoJHZbMV0gPT09ICRuYW1lKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJNaWRkbGV3YXJlIG5vdCBmb3VuZDogJG5hbWUiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGljZXMgYSBmdW5jdGlvbiBpbnRvIHRoZSBtaWRkbGV3YXJlIGxpc3QgYXQgYSBzcGVjaWZpYyBwb3NpdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gICAgICAgICAgJGZpbmROYW1lCiAgICAgKiBAcGFyYW0gICAgICAgICAgJHdpdGhOYW1lCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJG1pZGRsZXdhcmUKICAgICAqIEBwYXJhbSAgICAgICAgICAkYmVmb3JlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc3BsaWNlKCRmaW5kTmFtZSwgJHdpdGhOYW1lLCBjYWxsYWJsZSAkbWlkZGxld2FyZSwgJGJlZm9yZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgICAgICAkaWR4ID0gJHRoaXMtPmZpbmRCeU5hbWUoJGZpbmROYW1lKTsKICAgICAgICAkdHVwbGUgPSBbJG1pZGRsZXdhcmUsICR3aXRoTmFtZV07CgogICAgICAgIGlmICgkYmVmb3JlKSB7CiAgICAgICAgICAgIGlmICgkaWR4ID09PSAwKSB7CiAgICAgICAgICAgICAgICBhcnJheV91bnNoaWZ0KCR0aGlzLT5zdGFjaywgJHR1cGxlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRyZXBsYWNlbWVudCA9IFskdHVwbGUsICR0aGlzLT5zdGFja1skaWR4XV07CiAgICAgICAgICAgICAgICBhcnJheV9zcGxpY2UoJHRoaXMtPnN0YWNrLCAkaWR4LCAxLCAkcmVwbGFjZW1lbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCRpZHggPT09IGNvdW50KCR0aGlzLT5zdGFjaykgLSAxKSB7CiAgICAgICAgICAgICR0aGlzLT5zdGFja1tdID0gJHR1cGxlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZXBsYWNlbWVudCA9IFskdGhpcy0+c3RhY2tbJGlkeF0sICR0dXBsZV07CiAgICAgICAgICAgIGFycmF5X3NwbGljZSgkdGhpcy0+c3RhY2ssICRpZHgsIDEsICRyZXBsYWNlbWVudCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUHJvdmlkZXMgYSBkZWJ1ZyBzdHJpbmcgZm9yIGEgZ2l2ZW4gY2FsbGFibGUuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fGNhbGxhYmxlICRmbiBGdW5jdGlvbiB0byB3cml0ZSBhcyBhIHN0cmluZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlYnVnQ2FsbGFibGUoJGZuKQogICAgewogICAgICAgIGlmIChpc19zdHJpbmcoJGZuKSkgewogICAgICAgICAgICByZXR1cm4gImNhbGxhYmxlKHskZm59KSI7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfYXJyYXkoJGZuKSkgewogICAgICAgICAgICByZXR1cm4gaXNfc3RyaW5nKCRmblswXSkKICAgICAgICAgICAgICAgID8gImNhbGxhYmxlKHskZm5bMF19Ojp7JGZuWzFdfSkiCiAgICAgICAgICAgICAgICA6ICJjYWxsYWJsZShbJyIgLiBnZXRfY2xhc3MoJGZuWzBdKSAuICInLCAneyRmblsxXX0nXSkiOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICdjYWxsYWJsZSgnIC4gc3BsX29iamVjdF9oYXNoKCRmbikgLiAnKSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/MessageFormatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxNZXNzYWdlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCi8qKgogKiBGb3JtYXRzIGxvZyBtZXNzYWdlcyB1c2luZyB2YXJpYWJsZSBzdWJzdGl0dXRpb25zIGZvciByZXF1ZXN0cywgcmVzcG9uc2VzLAogKiBhbmQgb3RoZXIgdHJhbnNhY3Rpb25hbCBkYXRhLgogKgogKiBUaGUgZm9sbG93aW5nIHZhcmlhYmxlIHN1YnN0aXR1dGlvbnMgYXJlIHN1cHBvcnRlZDoKICoKICogLSB7cmVxdWVzdH06ICAgICAgICBGdWxsIEhUVFAgcmVxdWVzdCBtZXNzYWdlCiAqIC0ge3Jlc3BvbnNlfTogICAgICAgRnVsbCBIVFRQIHJlc3BvbnNlIG1lc3NhZ2UKICogLSB7dHN9OiAgICAgICAgICAgICBJU08gODYwMSBkYXRlIGluIEdNVAogKiAtIHtkYXRlX2lzb184NjAxfSAgIElTTyA4NjAxIGRhdGUgaW4gR01UCiAqIC0ge2RhdGVfY29tbW9uX2xvZ30gQXBhY2hlIGNvbW1vbiBsb2cgZGF0ZSB1c2luZyB0aGUgY29uZmlndXJlZCB0aW1lem9uZS4KICogLSB7aG9zdH06ICAgICAgICAgICBIb3N0IG9mIHRoZSByZXF1ZXN0CiAqIC0ge21ldGhvZH06ICAgICAgICAgTWV0aG9kIG9mIHRoZSByZXF1ZXN0CiAqIC0ge3VyaX06ICAgICAgICAgICAgVVJJIG9mIHRoZSByZXF1ZXN0CiAqIC0ge2hvc3R9OiAgICAgICAgICAgSG9zdCBvZiB0aGUgcmVxdWVzdAogKiAtIHt2ZXJzaW9ufTogICAgICAgIFByb3RvY29sIHZlcnNpb24KICogLSB7dGFyZ2V0fTogICAgICAgICBSZXF1ZXN0IHRhcmdldCBvZiB0aGUgcmVxdWVzdCAocGF0aCArIHF1ZXJ5ICsgZnJhZ21lbnQpCiAqIC0ge2hvc3RuYW1lfTogICAgICAgSG9zdG5hbWUgb2YgdGhlIG1hY2hpbmUgdGhhdCBzZW50IHRoZSByZXF1ZXN0CiAqIC0ge2NvZGV9OiAgICAgICAgICAgU3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlIChpZiBhdmFpbGFibGUpCiAqIC0ge3BocmFzZX06ICAgICAgICAgUmVhc29uIHBocmFzZSBvZiB0aGUgcmVzcG9uc2UgIChpZiBhdmFpbGFibGUpCiAqIC0ge2Vycm9yfTogICAgICAgICAgQW55IGVycm9yIG1lc3NhZ2VzIChpZiBhdmFpbGFibGUpCiAqIC0ge3JlcV9oZWFkZXJfKn06ICAgUmVwbGFjZSBgKmAgd2l0aCB0aGUgbG93ZXJjYXNlZCBuYW1lIG9mIGEgcmVxdWVzdCBoZWFkZXIgdG8gYWRkIHRvIHRoZSBtZXNzYWdlCiAqIC0ge3Jlc19oZWFkZXJfKn06ICAgUmVwbGFjZSBgKmAgd2l0aCB0aGUgbG93ZXJjYXNlZCBuYW1lIG9mIGEgcmVzcG9uc2UgaGVhZGVyIHRvIGFkZCB0byB0aGUgbWVzc2FnZQogKiAtIHtyZXFfaGVhZGVyc306ICAgIFJlcXVlc3QgaGVhZGVycwogKiAtIHtyZXNfaGVhZGVyc306ICAgIFJlc3BvbnNlIGhlYWRlcnMKICogLSB7cmVxX2JvZHl9OiAgICAgICBSZXF1ZXN0IGJvZHkKICogLSB7cmVzX2JvZHl9OiAgICAgICBSZXNwb25zZSBib2R5CiAqLwpjbGFzcyBNZXNzYWdlRm9ybWF0dGVyCnsKICAgIC8qKgogICAgICogQXBhY2hlIENvbW1vbiBMb2cgRm9ybWF0LgogICAgICogQGxpbmsgaHR0cDovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvbG9ncy5odG1sI2NvbW1vbgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgY29uc3QgQ0xGID0gIntob3N0bmFtZX0ge3JlcV9oZWFkZXJfVXNlci1BZ2VudH0gLSBbe2RhdGVfY29tbW9uX2xvZ31dIFwie21ldGhvZH0ge3RhcmdldH0gSFRUUC97dmVyc2lvbn1cIiB7Y29kZX0ge3Jlc19oZWFkZXJfQ29udGVudC1MZW5ndGh9IjsKICAgIGNvbnN0IERFQlVHID0gIj4+Pj4+Pj4+XG57cmVxdWVzdH1cbjw8PDw8PDw8XG57cmVzcG9uc2V9XG4tLS0tLS0tLVxue2Vycm9yfSI7CiAgICBjb25zdCBTSE9SVCA9ICdbe3RzfV0gInttZXRob2R9IHt0YXJnZXR9IEhUVFAve3ZlcnNpb259IiB7Y29kZX0nOwoKICAgIC8qKiBAdmFyIHN0cmluZyBUZW1wbGF0ZSB1c2VkIHRvIGZvcm1hdCBsb2cgbWVzc2FnZXMgKi8KICAgIHByaXZhdGUgJHRlbXBsYXRlOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdGVtcGxhdGUgTG9nIG1lc3NhZ2UgdGVtcGxhdGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR0ZW1wbGF0ZSA9IHNlbGY6OkNMRikKICAgIHsKICAgICAgICAkdGhpcy0+dGVtcGxhdGUgPSAkdGVtcGxhdGUgPzogc2VsZjo6Q0xGOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGZvcm1hdHRlZCBtZXNzYWdlIHN0cmluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAgJHJlcXVlc3QgIFJlcXVlc3QgdGhhdCB3YXMgc2VudAogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSBSZXNwb25zZSB0aGF0IHdhcyByZWNlaXZlZAogICAgICogQHBhcmFtIFxFeGNlcHRpb24gICAgICAgICRlcnJvciAgICBFeGNlcHRpb24gdGhhdCB3YXMgcmVjZWl2ZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZm9ybWF0KAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICBcRXhjZXB0aW9uICRlcnJvciA9IG51bGwKICAgICkgewogICAgICAgICRjYWNoZSA9IFtdOwoKICAgICAgICByZXR1cm4gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKAogICAgICAgICAgICAnL3tccyooW0EtWmEtel9cLVwuMC05XSspXHMqfS8nLAogICAgICAgICAgICBmdW5jdGlvbiAoYXJyYXkgJG1hdGNoZXMpIHVzZSAoJHJlcXVlc3QsICRyZXNwb25zZSwgJGVycm9yLCAmJGNhY2hlKSB7CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRjYWNoZVskbWF0Y2hlc1sxXV0pKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjYWNoZVskbWF0Y2hlc1sxXV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICcnOwogICAgICAgICAgICAgICAgc3dpdGNoICgkbWF0Y2hlc1sxXSkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcXVlc3QnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gUHNyN1xzdHIoJHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNwb25zZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPyBQc3I3XHN0cigkcmVzcG9uc2UpIDogJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlcV9oZWFkZXJzJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IHRyaW0oJHJlcXVlc3QtPmdldE1ldGhvZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnICcgLiAkcmVxdWVzdC0+Z2V0UmVxdWVzdFRhcmdldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIEhUVFAvJyAuICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKSAuICJcclxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+aGVhZGVycygkcmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc19oZWFkZXJzJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXNwb25zZSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdIVFRQLyVzICVkICVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldFByb3RvY29sVmVyc2lvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZS0+Z2V0UmVhc29uUGhyYXNlKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgLiAiXHJcbiIgLiAkdGhpcy0+aGVhZGVycygkcmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX2JvZHknOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVzX2JvZHknOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlID8gJHJlc3BvbnNlLT5nZXRCb2R5KCkgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3RzJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlX2lzb184NjAxJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IGdtZGF0ZSgnYycpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlX2NvbW1vbl9sb2cnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gZGF0ZSgnZC9NL1k6SDppOnMgTycpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdtZXRob2QnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldE1ldGhvZCgpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZXJzaW9uJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndXJpJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICd1cmwnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldFVyaSgpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXQnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldFJlcXVlc3RUYXJnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX3ZlcnNpb24nOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNfdmVyc2lvbic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJHJlc3BvbnNlLT5nZXRQcm90b2NvbFZlcnNpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvc3QnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0hvc3QnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG9zdG5hbWUnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gZ2V0aG9zdG5hbWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnY29kZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPyAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncGhyYXNlJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXNwb25zZSA/ICRyZXNwb25zZS0+Z2V0UmVhc29uUGhyYXNlKCkgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Vycm9yJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRlcnJvciA/ICRlcnJvci0+Z2V0TWVzc2FnZSgpIDogJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgcHJlZml4ZWQgZHluYW1pYyBoZWFkZXJzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJwb3MoJG1hdGNoZXNbMV0sICdyZXFfaGVhZGVyXycpID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoc3Vic3RyKCRtYXRjaGVzWzFdLCAxMSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoc3RycG9zKCRtYXRjaGVzWzFdLCAncmVzX2hlYWRlcl8nKSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXNwb25zZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJHJlc3BvbnNlLT5nZXRIZWFkZXJMaW5lKHN1YnN0cigkbWF0Y2hlc1sxXSwgMTEpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGNhY2hlWyRtYXRjaGVzWzFdXSA9ICRyZXN1bHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJHRoaXMtPnRlbXBsYXRlCiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGhlYWRlcnMoTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJG1lc3NhZ2UtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJG5hbWUgLiAnOiAnIC4gaW1wbG9kZSgnLCAnLCAkdmFsdWVzKSAuICJcclxuIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cmltKCRyZXN1bHQpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Middleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKbmFtZXNwYWNlIEd1enpsZUh0dHA7Cgp1c2UgR3V6emxlSHR0cFxDb29raWVcQ29va2llSmFySW50ZXJmYWNlOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxSZWplY3RlZFByb21pc2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXExvZ1xMb2dnZXJJbnRlcmZhY2U7CnVzZSBQc3JcTG9nXExvZ0xldmVsOwoKLyoqCiAqIEZ1bmN0aW9ucyB1c2VkIHRvIGNyZWF0ZSBhbmQgd3JhcCBoYW5kbGVycyB3aXRoIGhhbmRsZXIgbWlkZGxld2FyZS4KICovCmZpbmFsIGNsYXNzIE1pZGRsZXdhcmUKewogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYWRkcyBjb29raWVzIHRvIHJlcXVlc3RzLgogICAgICoKICAgICAqIFRoZSBvcHRpb25zIGFycmF5IG11c3QgYmUgc2V0IHRvIGEgQ29va2llSmFySW50ZXJmYWNlIGluIG9yZGVyIHRvIHVzZQogICAgICogY29va2llcy4gVGhpcyBpcyB0eXBpY2FsbHkgaGFuZGxlZCBmb3IgeW91IGJ5IGEgY2xpZW50LgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvb2tpZXMoKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgIGlmIChlbXB0eSgkb3B0aW9uc1snY29va2llcyddKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCEoJG9wdGlvbnNbJ2Nvb2tpZXMnXSBpbnN0YW5jZW9mIENvb2tpZUphckludGVyZmFjZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignY29va2llcyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphckludGVyZmFjZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGNvb2tpZUphciA9ICRvcHRpb25zWydjb29raWVzJ107CiAgICAgICAgICAgICAgICAkcmVxdWVzdCA9ICRjb29raWVKYXItPndpdGhDb29raWVIZWFkZXIoJHJlcXVlc3QpOwogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucykKICAgICAgICAgICAgICAgICAgICAtPnRoZW4oZnVuY3Rpb24gKCRyZXNwb25zZSkgdXNlICgkY29va2llSmFyLCAkcmVxdWVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29va2llSmFyLT5leHRyYWN0Q29va2llcygkcmVxdWVzdCwgJHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgdGhyb3dzIGV4Y2VwdGlvbnMgZm9yIDR4eCBvciA1eHggcmVzcG9uc2VzIHdoZW4gdGhlCiAgICAgKiAiaHR0cF9lcnJvciIgcmVxdWVzdCBvcHRpb24gaXMgc2V0IHRvIHRydWUuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHR0cEVycm9ycygpCiAgICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykgdXNlICgkaGFuZGxlcikgewogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRvcHRpb25zWydodHRwX2Vycm9ycyddKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyktPnRoZW4oCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSkgdXNlICgkcmVxdWVzdCwgJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGUgPSAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlIDwgNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFJlcXVlc3RFeGNlcHRpb246OmNyZWF0ZSgkcmVxdWVzdCwgJHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgcHVzaGVzIGhpc3RvcnkgZGF0YSB0byBhbiBBcnJheUFjY2VzcyBjb250YWluZXIuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjb250YWluZXIgQ29udGFpbmVyIHRvIGhvbGQgdGhlIGhpc3RvcnkgKGJ5IHJlZmVyZW5jZSkuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgY29udGFpbmVyIGlzIG5vdCBhbiBhcnJheSBvciBBcnJheUFjY2Vzcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoaXN0b3J5KCYkY29udGFpbmVyKQogICAgewogICAgICAgIGlmICghaXNfYXJyYXkoJGNvbnRhaW5lcikgJiYgISRjb250YWluZXIgaW5zdGFuY2VvZiBcQXJyYXlBY2Nlc3MpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2hpc3RvcnkgY29udGFpbmVyIG11c3QgYmUgYW4gYXJyYXkgb3Igb2JqZWN0IGltcGxlbWVudGluZyBBcnJheUFjY2VzcycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgmJGNvbnRhaW5lcikgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykgdXNlICgkaGFuZGxlciwgJiRjb250YWluZXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpLT50aGVuKAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJHJlcXVlc3QsICYkY29udGFpbmVyLCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcgID0+ICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3BvbnNlJyA9PiAkdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InICAgID0+IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9ucycgID0+ICRvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgkcmVxdWVzdCwgJiRjb250YWluZXIsICRvcHRpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb250YWluZXJbXSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0JyAgPT4gJHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzcG9uc2UnID0+IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InICAgID0+ICRyZWFzb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9ucycgID0+ICRvcHRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcR3V6emxlSHR0cFxQcm9taXNlXHJlamVjdGlvbl9mb3IoJHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGludm9rZXMgYSBjYWxsYmFjayBiZWZvcmUgYW5kIGFmdGVyIHNlbmRpbmcgYSByZXF1ZXN0LgogICAgICoKICAgICAqIFRoZSBwcm92aWRlZCBsaXN0ZW5lciBjYW5ub3QgbW9kaWZ5IG9yIGFsdGVyIHRoZSByZXNwb25zZS4gSXQgc2ltcGx5CiAgICAgKiAidGFwcyIgaW50byB0aGUgY2hhaW4gdG8gYmUgbm90aWZpZWQgYmVmb3JlIHJldHVybmluZyB0aGUgcHJvbWlzZS4gVGhlCiAgICAgKiBiZWZvcmUgbGlzdGVuZXIgYWNjZXB0cyBhIHJlcXVlc3QgYW5kIG9wdGlvbnMgYXJyYXksIGFuZCB0aGUgYWZ0ZXIKICAgICAqIGxpc3RlbmVyIGFjY2VwdHMgYSByZXF1ZXN0LCBvcHRpb25zIGFycmF5LCBhbmQgcmVzcG9uc2UgcHJvbWlzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGJlZm9yZSBGdW5jdGlvbiB0byBpbnZva2UgYmVmb3JlIGZvcndhcmRpbmcgdGhlIHJlcXVlc3QuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGFmdGVyICBGdW5jdGlvbiBpbnZva2VkIGFmdGVyIGZvcndhcmRpbmcuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGFwKGNhbGxhYmxlICRiZWZvcmUgPSBudWxsLCBjYWxsYWJsZSAkYWZ0ZXIgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGJlZm9yZSwgJGFmdGVyKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAkYmVmb3JlLCAkYWZ0ZXIpIHsKICAgICAgICAgICAgICAgIGlmICgkYmVmb3JlKSB7CiAgICAgICAgICAgICAgICAgICAgJGJlZm9yZSgkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIGlmICgkYWZ0ZXIpIHsKICAgICAgICAgICAgICAgICAgICAkYWZ0ZXIoJHJlcXVlc3QsICRvcHRpb25zLCAkcmVzcG9uc2UpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGhhbmRsZXMgcmVxdWVzdCByZWRpcmVjdHMuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVkaXJlY3QoKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWRpcmVjdE1pZGRsZXdhcmUoJGhhbmRsZXIpOwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgcmV0cmllcyByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgYm9vbGVhbiByZXN1bHQgb2YKICAgICAqIGludm9raW5nIHRoZSBwcm92aWRlZCAiZGVjaWRlciIgZnVuY3Rpb24uCiAgICAgKgogICAgICogSWYgbm8gZGVsYXkgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGV4cG9uZW50aWFsCiAgICAgKiBiYWNrb2ZmIHdpbGwgYmUgdXRpbGl6ZWQuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRkZWNpZGVyIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbnVtYmVyIG9mIHJldHJpZXMsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZXF1ZXN0LCBbcmVzcG9uc2VdLCBhbmQgW2V4Y2VwdGlvbl0gYW5kCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyB0cnVlIGlmIHRoZSByZXF1ZXN0IGlzIHRvIGJlIHJldHJpZWQuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGRlbGF5ICAgRnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBudW1iZXIgb2YgcmV0cmllcyBhbmQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJ5KGNhbGxhYmxlICRkZWNpZGVyLCBjYWxsYWJsZSAkZGVsYXkgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGRlY2lkZXIsICRkZWxheSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFJldHJ5TWlkZGxld2FyZSgkZGVjaWRlciwgJGhhbmRsZXIsICRkZWxheSk7CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIE1pZGRsZXdhcmUgdGhhdCBsb2dzIHJlcXVlc3RzLCByZXNwb25zZXMsIGFuZCBlcnJvcnMgdXNpbmcgYSBtZXNzYWdlCiAgICAgKiBmb3JtYXR0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIExvZ2dlckludGVyZmFjZSAgJGxvZ2dlciBMb2dzIG1lc3NhZ2VzLgogICAgICogQHBhcmFtIE1lc3NhZ2VGb3JtYXR0ZXIgJGZvcm1hdHRlciBGb3JtYXR0ZXIgdXNlZCB0byBjcmVhdGUgbWVzc2FnZSBzdHJpbmdzLgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgJGxvZ0xldmVsIExldmVsIGF0IHdoaWNoIHRvIGxvZyByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2coTG9nZ2VySW50ZXJmYWNlICRsb2dnZXIsIE1lc3NhZ2VGb3JtYXR0ZXIgJGZvcm1hdHRlciwgJGxvZ0xldmVsID0gTG9nTGV2ZWw6OklORk8pCiAgICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgkbG9nZ2VyLCAkZm9ybWF0dGVyLCAkbG9nTGV2ZWwpIHsKICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIsICRsb2dnZXIsICRmb3JtYXR0ZXIsICRsb2dMZXZlbCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyktPnRoZW4oCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKCRyZXNwb25zZSkgdXNlICgkbG9nZ2VyLCAkcmVxdWVzdCwgJGZvcm1hdHRlciwgJGxvZ0xldmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJGZvcm1hdHRlci0+Zm9ybWF0KCRyZXF1ZXN0LCAkcmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAkbG9nZ2VyLT5sb2coJGxvZ0xldmVsLCAkbWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzcG9uc2U7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgkbG9nZ2VyLCAkcmVxdWVzdCwgJGZvcm1hdHRlcikgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSAkcmVhc29uIGluc3RhbmNlb2YgUmVxdWVzdEV4Y2VwdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkcmVhc29uLT5nZXRSZXNwb25zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICRtZXNzYWdlID0gJGZvcm1hdHRlci0+Zm9ybWF0KCRyZXF1ZXN0LCAkcmVzcG9uc2UsICRyZWFzb24pOwogICAgICAgICAgICAgICAgICAgICAgICAkbG9nZ2VyLT5ub3RpY2UoJG1lc3NhZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXEd1enpsZUh0dHBcUHJvbWlzZVxyZWplY3Rpb25fZm9yKCRyZWFzb24pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH07CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWlkZGxld2FyZSBhZGRzIGEgZGVmYXVsdCBjb250ZW50LXR5cGUgaWYgcG9zc2libGUsIGEgZGVmYXVsdAogICAgICogY29udGVudC1sZW5ndGggb3IgdHJhbnNmZXItZW5jb2RpbmcgaGVhZGVyLCBhbmQgdGhlIGV4cGVjdCBoZWFkZXIuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHByZXBhcmVCb2R5KCkKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHJlcGFyZUJvZHlNaWRkbGV3YXJlKCRoYW5kbGVyKTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGFwcGxpZXMgYSBtYXAgZnVuY3Rpb24gdG8gdGhlIHJlcXVlc3QgYmVmb3JlIHBhc3NpbmcgdG8KICAgICAqIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRmbiBGdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBSZXF1ZXN0SW50ZXJmYWNlIGFuZCByZXR1cm5zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIGEgUmVxdWVzdEludGVyZmFjZS4KICAgICAqIEByZXR1cm4gY2FsbGFibGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYXBSZXF1ZXN0KGNhbGxhYmxlICRmbikKICAgIHsKICAgICAgICByZXR1cm4gZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCRmbikgewogICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykgdXNlICgkaGFuZGxlciwgJGZuKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJGZuKCRyZXF1ZXN0KSwgJG9wdGlvbnMpOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYXBwbGllcyBhIG1hcCBmdW5jdGlvbiB0byB0aGUgcmVzb2x2ZWQgcHJvbWlzZSdzCiAgICAgKiByZXNwb25zZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGZuIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIFJlc3BvbnNlSW50ZXJmYWNlIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgUmVzcG9uc2VJbnRlcmZhY2UuCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFwUmVzcG9uc2UoY2FsbGFibGUgJGZuKQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGZuKSB7CiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAkZm4pIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpLT50aGVuKCRmbik7CiAgICAgICAgICAgIH07CiAgICAgICAgfTsKICAgIH0KfQo=]]></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+dmFyaWFibGVzID0gJHZhcmlhYmxlczsKCiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy9ceyhbXlx9XSspXH0vJywKICAgICAgICAgICAgWyR0aGlzLCAnZXhwYW5kTWF0Y2gnXSwKICAgICAgICAgICAgJHRoaXMtPnRlbXBsYXRlCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlIGFuIGV4cHJlc3Npb24gaW50byBwYXJ0cwogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGV4cHJlc3Npb24gRXhwcmVzc2lvbiB0byBwYXJzZQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgUmV0dXJucyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBwYXJ0cwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigkZXhwcmVzc2lvbikKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CgogICAgICAgIGlmIChpc3NldChzZWxmOjokb3BlcmF0b3JIYXNoWyRleHByZXNzaW9uWzBdXSkpIHsKICAgICAgICAgICAgJHJlc3VsdFsnb3BlcmF0b3InXSA9ICRleHByZXNzaW9uWzBdOwogICAgICAgICAgICAkZXhwcmVzc2lvbiA9IHN1YnN0cigkZXhwcmVzc2lvbiwgMSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlc3VsdFsnb3BlcmF0b3InXSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnLCcsICRleHByZXNzaW9uKSBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgJHZhbHVlID0gdHJpbSgkdmFsdWUpOwogICAgICAgICAgICAkdmFyc3BlYyA9IFtdOwogICAgICAgICAgICBpZiAoJGNvbG9uUG9zID0gc3RycG9zKCR2YWx1ZSwgJzonKSkgewogICAgICAgICAgICAgICAgJHZhcnNwZWNbJ3ZhbHVlJ10gPSBzdWJzdHIoJHZhbHVlLCAwLCAkY29sb25Qb3MpOwogICAgICAgICAgICAgICAgJHZhcnNwZWNbJ21vZGlmaWVyJ10gPSAnOic7CiAgICAgICAgICAgICAgICAkdmFyc3BlY1sncG9zaXRpb24nXSA9IChpbnQpIHN1YnN0cigkdmFsdWUsICRjb2xvblBvcyArIDEpOwogICAgICAgICAgICB9IGVsc2VpZiAoc3Vic3RyKCR2YWx1ZSwgLTEpID09PSAnKicpIHsKICAgICAgICAgICAgICAgICR2YXJzcGVjWydtb2RpZmllciddID0gJyonOwogICAgICAgICAgICAgICAgJHZhcnNwZWNbJ3ZhbHVlJ10gPSBzdWJzdHIoJHZhbHVlLCAwLCAtMSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdmFyc3BlY1sndmFsdWUnXSA9IChzdHJpbmcpICR2YWx1ZTsKICAgICAgICAgICAgICAgICR2YXJzcGVjWydtb2RpZmllciddID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHJlc3VsdFsndmFsdWVzJ11bXSA9ICR2YXJzcGVjOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQcm9jZXNzIGFuIGV4cGFuc2lvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkbWF0Y2hlcyBNYXRjaGVzIG1ldCBpbiB0aGUgcHJlZ19yZXBsYWNlX2NhbGxiYWNrCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgcmVwbGFjZW1lbnQgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZXhwYW5kTWF0Y2goYXJyYXkgJG1hdGNoZXMpCiAgICB7CiAgICAgICAgc3RhdGljICRyZmMxNzM4dG8zOTg2ID0gWycrJyA9PiAnJTIwJywgJyU3ZScgPT4gJ34nXTsKCiAgICAgICAgJHJlcGxhY2VtZW50cyA9IFtdOwogICAgICAgICRwYXJzZWQgPSBzZWxmOjpwYXJzZUV4cHJlc3Npb24oJG1hdGNoZXNbMV0pOwogICAgICAgICRwcmVmaXggPSBzZWxmOjokb3BlcmF0b3JIYXNoWyRwYXJzZWRbJ29wZXJhdG9yJ11dWydwcmVmaXgnXTsKICAgICAgICAkam9pbmVyID0gc2VsZjo6JG9wZXJhdG9ySGFzaFskcGFyc2VkWydvcGVyYXRvciddXVsnam9pbmVyJ107CiAgICAgICAgJHVzZVF1ZXJ5ID0gc2VsZjo6JG9wZXJhdG9ySGFzaFskcGFyc2VkWydvcGVyYXRvciddXVsncXVlcnknXTsKCiAgICAgICAgZm9yZWFjaCAoJHBhcnNlZFsndmFsdWVzJ10gYXMgJHZhbHVlKSB7CgogICAgICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT52YXJpYWJsZXNbJHZhbHVlWyd2YWx1ZSddXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdmFyaWFibGUgPSAkdGhpcy0+dmFyaWFibGVzWyR2YWx1ZVsndmFsdWUnXV07CiAgICAgICAgICAgICRhY3R1YWxseVVzZVF1ZXJ5ID0gJHVzZVF1ZXJ5OwogICAgICAgICAgICAkZXhwYW5kZWQgPSAnJzsKCiAgICAgICAgICAgIGlmIChpc19hcnJheSgkdmFyaWFibGUpKSB7CgogICAgICAgICAgICAgICAgJGlzQXNzb2MgPSAkdGhpcy0+aXNBc3NvYygkdmFyaWFibGUpOwogICAgICAgICAgICAgICAgJGt2cCA9IFtdOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHZhcmlhYmxlIGFzICRrZXkgPT4gJHZhcikgewoKICAgICAgICAgICAgICAgICAgICBpZiAoJGlzQXNzb2MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGtleSA9IHJhd3VybGVuY29kZSgka2V5KTsKICAgICAgICAgICAgICAgICAgICAgICAgJGlzTmVzdGVkQXJyYXkgPSBpc19hcnJheSgkdmFyKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkaXNOZXN0ZWRBcnJheSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCEkaXNOZXN0ZWRBcnJheSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdmFyID0gcmF3dXJsZW5jb2RlKCR2YXIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHBhcnNlZFsnb3BlcmF0b3InXSA9PT0gJysnIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFyc2VkWydvcGVyYXRvciddID09PSAnIycKICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFyID0gJHRoaXMtPmRlY29kZVJlc2VydmVkKCR2YXIpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlWydtb2RpZmllciddID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc0Fzc29jKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzTmVzdGVkQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOZXN0ZWQgYXJyYXlzIG11c3QgYWxsb3cgZm9yIGRlZXBseSBuZXN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJ1Y3R1cmVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YXIgPSBzdHJ0cigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9idWlsZF9xdWVyeShbJGtleSA9PiAkdmFyXSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZmMxNzM4dG8zOTg2CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZhciA9ICRrZXkgLiAnPScgLiAkdmFyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJGtleSA+IDAgJiYgJGFjdHVhbGx5VXNlUXVlcnkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YXIgPSAkdmFsdWVbJ3ZhbHVlJ10gLiAnPScgLiAkdmFyOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAka3ZwWyRrZXldID0gJHZhcjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHZhcmlhYmxlKSkgewogICAgICAgICAgICAgICAgICAgICRhY3R1YWxseVVzZVF1ZXJ5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHZhbHVlWydtb2RpZmllciddID09PSAnKicpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwYW5kZWQgPSBpbXBsb2RlKCRqb2luZXIsICRrdnApOwogICAgICAgICAgICAgICAgICAgIGlmICgkaXNBc3NvYykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBwcmVwZW5kIHRoZSB2YWx1ZSBuYW1lIHdoZW4gdXNpbmcgdGhlIGV4cGxvZGUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9kaWZpZXIgd2l0aCBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KICAgICAgICAgICAgICAgICAgICAgICAgJGFjdHVhbGx5VXNlUXVlcnkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgkaXNBc3NvYykgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIGFuIGFzc29jaWF0aXZlIGFycmF5IGlzIGVuY291bnRlcmVkIGFuZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwbG9kZSBtb2RpZmllciBpcyBub3Qgc2V0LCB0aGVuIHRoZSByZXN1bHQgbXVzdCBiZQogICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGtleXMgZm9sbG93ZWQgYnkgdGhlaXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzcGVjdGl2ZSB2YWx1ZXMuCiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCRrdnAgYXMgJGsgPT4gJiR2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdiA9ICRrIC4gJywnIC4gJHY7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJGV4cGFuZGVkID0gaW1wbG9kZSgnLCcsICRrdnApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkdmFsdWVbJ21vZGlmaWVyJ10gPT09ICc6JykgewogICAgICAgICAgICAgICAgICAgICR2YXJpYWJsZSA9IHN1YnN0cigkdmFyaWFibGUsIDAsICR2YWx1ZVsncG9zaXRpb24nXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZXhwYW5kZWQgPSByYXd1cmxlbmNvZGUoJHZhcmlhYmxlKTsKICAgICAgICAgICAgICAgIGlmICgkcGFyc2VkWydvcGVyYXRvciddID09PSAnKycgfHwgJHBhcnNlZFsnb3BlcmF0b3InXSA9PT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgICAgJGV4cGFuZGVkID0gJHRoaXMtPmRlY29kZVJlc2VydmVkKCRleHBhbmRlZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkYWN0dWFsbHlVc2VRdWVyeSkgewogICAgICAgICAgICAgICAgaWYgKCEkZXhwYW5kZWQgJiYgJGpvaW5lciAhPT0gJyYnKSB7CiAgICAgICAgICAgICAgICAgICAgJGV4cGFuZGVkID0gJHZhbHVlWyd2YWx1ZSddOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkZXhwYW5kZWQgPSAkdmFsdWVbJ3ZhbHVlJ10gLiAnPScgLiAkZXhwYW5kZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXBsYWNlbWVudHNbXSA9ICRleHBhbmRlZDsKICAgICAgICB9CgogICAgICAgICRyZXQgPSBpbXBsb2RlKCRqb2luZXIsICRyZXBsYWNlbWVudHMpOwogICAgICAgIGlmICgkcmV0ICYmICRwcmVmaXgpIHsKICAgICAgICAgICAgcmV0dXJuICRwcmVmaXggLiAkcmV0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmVzIGlmIGFuIGFycmF5IGlzIGFzc29jaWF0aXZlLgogICAgICoKICAgICAqIFRoaXMgbWFrZXMgdGhlIGFzc3VtcHRpb24gdGhhdCBpbnB1dCBhcnJheXMgYXJlIHNlcXVlbmNlcyBvciBoYXNoZXMuCiAgICAgKiBUaGlzIGFzc3VtcHRpb24gaXMgYSB0cmFkZW9mZiBmb3IgYWNjdXJhY3kgaW4gZmF2b3Igb2Ygc3BlZWQsIGJ1dCBpdAogICAgICogc2hvdWxkIHdvcmsgaW4gYWxtb3N0IGV2ZXJ5IGNhc2Ugd2hlcmUgaW5wdXQgaXMgc3VwcGxpZWQgZm9yIGEgVVJJCiAgICAgKiB0ZW1wbGF0ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGFycmF5IEFycmF5IHRvIGNoZWNrCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNBc3NvYyhhcnJheSAkYXJyYXkpCiAgICB7CiAgICAgICAgcmV0dXJuICRhcnJheSAmJiBhcnJheV9rZXlzKCRhcnJheSlbMF0gIT09IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIHBlcmNlbnQgZW5jb2Rpbmcgb24gcmVzZXJ2ZWQgY2hhcmFjdGVycyAodXNlZCB3aXRoICsgYW5kICMKICAgICAqIG1vZGlmaWVycykuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RyaW5nIFN0cmluZyB0byBmaXgKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlY29kZVJlc2VydmVkKCRzdHJpbmcpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cl9yZXBsYWNlKHNlbGY6OiRkZWxpbXNQY3QsIHNlbGY6OiRkZWxpbXMsICRzdHJpbmcpOwogICAgfQp9Cg==]]></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[bGFuZ3VhZ2U6IHBocAoKcGhwOgogICAgLSA1LjYKICAgIC0gNy4wCiAgICAtIG5pZ2h0bHkKICAgIC0gaGh2bQoKc3VkbzogZmFsc2UKCmVudjoKICAgIC0gTUFUSF9MSUI9Z21wCgpiZWZvcmVfc2NyaXB0OgogICAgLSB0cmF2aXNfcmV0cnkgY29tcG9zZXIgc2VsZnVwZGF0ZQogICAgLSB0cmF2aXNfcmV0cnkgY29tcG9zZXIgaW5zdGFsbCAtLXByZWZlci1zb3VyY2UKCnNjcmlwdDoKICAgIC0gdmVuZG9yL2Jpbi9waHB1bml0IC0tY292ZXJhZ2UtdGV4dCAtLWNvdmVyYWdlLWNsb3Zlcj1jb3ZlcmFnZS5jbG92ZXIKCmFmdGVyX3N1Y2Nlc3M6CiAgICAtIHNoIC1jICdjZCB0ZXN0cyAmJiAuL3ZhbGlkYXRlX2V4YW1wbGVzLnNoJwogICAgLSB3Z2V0IGh0dHBzOi8vc2NydXRpbml6ZXItY2kuY29tL29jdWxhci5waGFyCiAgICAtIHNoIC1jICdpZiBbICIkVFJBVklTX1BIUF9WRVJTSU9OIiAhPSAiaGh2bSIgXSAmJiBbICIkVFJBVklTX1BIUF9WRVJTSU9OIiAhPSAibmlnaHRseSIgXTsgdGhlbiBwaHAgb2N1bGFyLnBoYXIgY29kZS1jb3ZlcmFnZTp1cGxvYWQgLS1mb3JtYXQ9cGhwLWNsb3ZlciBjb3ZlcmFnZS5jbG92ZXI7IGZpOycKCgptYXRyaXg6CiAgICBmYXN0X2ZpbmlzaDogdHJ1ZQogICAgYWxsb3dfZmFpbHVyZXM6CiAgICAgICAgLSBwaHA6IG5pZ2h0bHkK]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAibWRhbnRlci9lY2MiLAogICAgImRlc2NyaXB0aW9uIjogIlBIUCBFbGxpcHRpYyBDdXJ2ZSBDcnlwdG9ncmFwaHkgbGlicmFyeSIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYyIsCiAgICAia2V5d29yZHMiOiBbInNlY3AyNTZrMSIsICJuaXN0cDE5MiIsICJuaXN0cDIyNCIsICJuaXN0cDI1NiIsICJuaXN0cDUyMSIsICJFQ0RTQSIsICJkaWZmaWUiLCAiaGVsbG1hbiIsICJFQ0RIIiwgImVsbGlwdGljIiwgImN1cnZlIiwgInBocGVjYyJdLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWF0eWFzIERhbnRlciIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vbWF0ZWpkYW50ZXIuY29tLyIsCiAgICAgICAgICAgICJyb2xlIjogIkF1dGhvciIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVGhpYmF1ZCBGYWJyZSIsCiAgICAgICAgICAgICJlbWFpbCI6ICJ0aGliYXVkQGF6dGVjaC5pbyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwOi8vYXp0ZWNoLmlvIiwKICAgICAgICAgICAgInJvbGUiOiAiTWFpbnRhaW5lciIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTUuNi4wIiwKICAgICAgICAiZXh0LWdtcCI6ICIqIiwKICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiOiAiXjF8XjIiLAogICAgICAgICJmZ3Jvc3NlL3BocGFzbjEiOiAifjEuNSIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJ+NC4xfH41LjAiLAogICAgICAgICJzcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyIjogIn4yIiwKICAgICAgICAic3ltZm9ueS95YW1sIjogIn4yLjZ8fjMuMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiTWRhbnRlclxcRWNjXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJNZGFudGVyXFxFY2NcXFRlc3RzXFwiOiAidGVzdHMvdW5pdCIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/doc/release-notes-0.4.1.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyB2MC40LjEgcmVsZWFzZSBub3RlcwoKdjAuNC4xIGlzIGEgbWlub3IgcmVsZWFzZSBmb3IgdGhlIGxpYnJhcnkuIAoKICAgLSBTdXBwb3J0IHBhcmFnb25pZS9yYW5kb21fY29tcGF0IHZlcnNpb25zIF4xfF4yIGZvciB3aWRlciBjb21wYXRpYmlsaXR5CgojIyBOb3RhYmxlIGNoYW5nZXM6CgpUaGlzIG92ZXJ2aWV3IGluY2x1ZGVzIGNoYW5nZXMgdGhhdCBhZmZlY3QgYmVoYXZpb3VyLCBub3QgY29kZSBtb3ZlcywgcmVmYWN0b3JzLCB0ZXN0cywgZXRjLgoKIyMjIE5ldzoKCiAgIC0gWygjMTc4KV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MvcHVsbC8xNzgpIFs3ZTIxN2Y5XSBVcGRhdGUgY29tcG9zZXIuanNvbiB0byByZXF1aXJlIHBhcmFnb25pZS9yYW5kb21fY29tcGF0QCJeMXxeMiIKCiMjIENyZWRpdHMKClRoYW5rcyB0byBldmVyeW9uZSB3aG8gZGlyZWN0bHkgY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlOgoKIC0gTWFyYyBLb2xseQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/doc/release-notes-0.4.2.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyB2MC40LjIgcmVsZWFzZSBub3RlcwoKdjAuNC4yIGlzIGEgbWlub3IgcmVsZWFzZSBmb3IgdGhlIGxpYnJhcnkuIEl0IGFkZHJlc3NlcyB1bmludGVuZGVkIGJlaGF2aW91ciBpbiBkZWNIZXgsIAp3aGljaCBzaG91bGQgaGF2ZSByZWplY3RlZCBuZWdhdGl2ZSBudW1iZXJzLiAKCiAgIC0gWygjMTgyKV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MvcHVsbC8xODIpIFswYWUxMTZkXSByZWplY3QgbmVnYXRpdmUgaW50ZWdlcnMgaW4gaW50VG9TdHJpbmcgYW5kIGRlY0hleC4KCiMjIENyZWRpdHMKClRoYW5rcyB0byBldmVyeW9uZSB3aG8gZGlyZWN0bHkgY29udHJpYnV0ZWQgdG8gdGhpcyByZWxlYXNlOgoKIC0gUnViZW4gZGUgVnJpZXMgKEBydWJlbnNheXNoaSkK]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/doc/release-notes-0.4.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyB2MC40IHJlbGVhc2Ugbm90ZXMKCnYwLjQgbWFya3MgdGhlIGZvbGxvd2luZyB1cGRhdGVzIHRvIHRoZSBsaWJyYXJ5OgoKICAgLSBSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb24gbWNyeXB0LCB3aGljaCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZC4KICAgLSBBdm9pZCBtdWx0aXBsZSBQUk5HJ3MgLSBvbmx5IG9uZSwgcHJvdmlkZWQgYnkgcmFuZG9tX2J5dGVzKCkuCiAgIC0gSW1wcm92ZSB0aGUgbGlicmFyaWVzIHBlcmZvcm1hbmNlIGJ5IGF2b2lkaW5nIGdtcF9zdHJ2YWwuCiAgIC0gU3RyaW5nIGhhbmRsaW5nIGZvciBtdWx0aS1ieXRlIHN5c3RlbXMuCiAgIC0gQ29uc3RhbnQgdGltZSBzY2FsYXIgbXVsdGlwbGljYXRpb24gYW5kIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24KICAgLSBJbnRyb2R1Y2UgdXRpbGl0aWVzIGZvciBwb2ludCBjb21wcmVzc2lvbiwgYW5kIERFUiBzaWduYXR1cmUgc2VyaWFsaXphdGlvbi4KICAgLSBUZXN0IGVhY2ggY3VydmUgd2l0aCBzY2FsYXIgbXVsdGlwbGljYXRpb24sIEVjREgsIEVDRFNBLCBhbmQgUkZDNjk3OSB0ZXN0IHZlY3RvcnMuCiAgIFRoZSBvbmx5IG91dHN0YW5kaW5nIHRlc3QgaXMgUkY2OTc5IGZvciBzZWNwMTEycjEuIAoKIyMgRGVwZW5kZW5jeSBjaGFuZ2VzCgpNaW5pbXVtIFBIUCB2ZXJzaW9uIGlzIG5vdyA1LjYuCgpgc3ltZm9ueS9jb25zb2xlYCByZXF1aXJlbWVudCB3YXMgcmVtb3ZlZC4KCmBleHQtbWNyeXB0YCByZXF1aXJlbWVudCB3YXMgcmVtb3ZlZC4KCiMjIE5vdGFibGUgY2hhbmdlczoKClRoaXMgb3ZlcnZpZXcgaW5jbHVkZXMgY2hhbmdlcyB0aGF0IGFmZmVjdCBiZWhhdmlvdXIsIG5vdCBjb2RlIG1vdmVzLCByZWZhY3RvcnMsIHRlc3RzLCBldGMuCgojIyMgTmV3OiAKCiAgIC0gWygjOTkpXShodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYy9wdWxsLzk5KSBbMGNiMmM3NF0gQSBgQ3VydmVQYXJhbWV0ZXJzYCBjbGFzcyBpcyBkZWZpbmVkIHRvIGNvbnRhaW4gY3VydmUgcGFyYW1ldGVycyAoc2l6ZSwgYSwgYiwgcHJpbWUpCiAgIC0gWygjMTA1KV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MvcHVsbC8xMDUpIFthZTZiODFkXSBBIGBEZXJTaWduYXR1cmVTZXJpYWxpemVyYCB3YXMgYWRkZWQgdG8gdGhlIGxpYnJhcnkuCiAgIC0gWygjMTM1KV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MvcHVsbC8xMzUpIFs1MWE1NGY2XSBBIGBDb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyYCB3YXMgYWRkZWQgdG8gdGhlIGxpYnJhcnkKCiMjIyBBUEkgQnJlYWtzCgogICAtIFsoIzk5KV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MvcHVsbC85OSkgWzBjYjJjNzRdIGBDdXJ2ZUZwYCAmIGBOYW1lZEN1cnZlRnBgIGNvbnN0cnVjdG9ycyBub3cgdGFrZSBhIGBDdXJ2ZVBhcmFtZXRlcnNgIGluc3RhbmNlIAogICAtIFsoIzEwNildKGh0dHBzOi8vZ2l0aHViLmNvbS9waHBlY2MvcGhwZWNjL3B1bGwvMTA2KSBbMTdmZjg2OF0gVGhlIENvbnNvbGUgYXBwbGljYXRpb24gd2FzIG1vdmVkIHRvIFtwaHBlY2MvY29uc29sZV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9jb25zb2xlKS4gCiAgIC0gWygjMTIzKV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MvcHVsbC8xMjMpIFs1ZTlhMDgyXSBgcmFuZG9tX2J5dGVzYCBpcyBub3cgdXNlZCBmb3IgcmFuZG9tIGJ5dGUgZ2VuZXJhdGlvbiBgUmFuZG9tR2VuZXJhdG9yRmFjdG9yeTo6Z2V0UmFuZG9tR2VuZXJhdG9yKClgLiBQSFAgNS42IHVzZXJzIHdpbGwgdXNlIHRoZSBwb2x5ZmlsbCBwcm92aWRlZCBieSBgcGFyYWdvbmllL3JhbmRvbV9jb21wYXRgLgogICAtIFsoIzEyNildKGh0dHBzOi8vZ2l0aHViLmNvbS9waHBlY2MvcGhwZWNjL3B1bGwvMTI2KSBbNGQ0NGYxM10gVGhlIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBBUEkgb2ZmZXJlZCBieSB0aGUgYEVjREhgIGNsYXNzIHdhcyByZW1vdmVkLiAKICAgLSBbKCMxMjcpXShodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYy9wdWxsLzEyNykgW2NmYTAzZTFdIGBNYXRoQWRhcHRlckludGVyZmFjZWAgaXMgcmVwbGFjZWQgd2l0aCBgR21wTWF0aEludGVyZmFjZWAuIEludGVnZXJzIGFyZSBub3cgaGFuZGxlZCBhcyBgXEdNUGAgaW5zdGFuY2VzLgogICAtIFsoIzEyOCldKGh0dHBzOi8vZ2l0aHViLmNvbS9waHBlY2MvcGhwZWNjL3B1bGwvMTI4KSBbY2MxM2I4MV0gTWluaW11bSBQSFAgdmVyc2lvbiBpcyBub3cgNS42LgogICAtIFsoIzE0MSldKGh0dHBzOi8vZ2l0aHViLmNvbS9waHBlY2MvcGhwZWNjL3B1bGwvMTQxKSBbN2VjZDA3MF0gUmVtb3ZlIE1kYW50ZXJcRWNjXEZpbGUgY2xhc3NlcyAmIG5hbWVzcGFjZQogICAKIyMjIFNlY3VyaXR5IGZpeGVzCiAKICAgLSBbKCM5OSldKGh0dHBzOi8vZ2l0aHViLmNvbS9waHBlY2MvcGhwZWNjL3B1bGwvOTkpIFswY2IyYzc0XSBUaGUgUG9pbnQgbXVsdGlwbGljYXRpb24gYWxnb3JpdGhtIHdhcyBpbXByb3ZlZCBieSBwYWRkaW5nIHByaXZhdGUga2V5cyB3aXRoIHplcm8gYml0cyB0byB0aGUgYml0U2l6ZSBvZiB0aGUgY3VydmUuCiAgICAgVGhlIHJlc3VsdCBpcyBhIGNvbnN0YW50IG51bWJlciBvZiBkb3VibGUtYWRkLWFsd2F5cyBpdGVyYXRpb25zIHBlciBtdWx0aXBsaWNhdGlvbi4KICAgLSBbKCMxMTQpXShodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYy9wdWxsLzExNCkgW2JlZDdkOTRdIFRoZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGFsZ29yaXRobSB3YXMgcGF0Y2hlZCBzbyB0aGUgZmluYWwgY2hlY2sgaXMgY2FycmllZCBvdXQgdXNpbmcgY29uc3RhbnQtdGltZSBzdHJpbmcgCiAgICAgY29tcGFyaXNvbi4KICAgLSBbKCMxMjEpXShodHRwczovL2dpdGh1Yi5jb20vcGhwZWNjL3BocGVjYy9wdWxsLzEyMSkgW2Y2NTU1ZjFdIFRoZSBgSG1hY1JhbmRvbU51bWJlckdlbmVyYXRvcmAgd2FzIHJld3JpdHRlbiwgYW5kIHRlc3RzIG5vdyBwYXNzIGZvciBrbm93biB0ZXN0IHZlY3RvcnMuCiAgIC0gWygjMTI5KV0oaHR0cHM6Ly9naXRodWIuY29tL3BocGVjYy9waHBlY2MvcHVsbC8xMjkpIFs0ODRkNjhmXSBGdW5jdGlvbnMgcHJvdmlkZWQgYnkgYEJpbmFyeVN0cmluZ2AgYXJlIHVzZWQgZm9yIHN0cmluZyBvcGVyYXRpb25zIGZvciBzYWZldHkgb24gbXVsdGktYnl0ZSBzeXN0ZW1zLgogIAojIyBDcmVkaXRzCgpUaGFua3MgdG8gZXZlcnlvbmUgd2hvIGRpcmVjdGx5IGNvbnRyaWJ1dGVkIHRvIHRoaXMgcmVsZWFzZToKCiAtIEZsb3JlbnQgTW9yc2VsbGkKIC0gTWF0eWFzIERhbnRlcgogLSBTY290dCBBcmNpc3pld3NraQogLSBUaGliYXVkIEZhYnJlCiAtIFRob21hcyBLZXJpbgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/examples/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/examples/creating_signature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmUgIi4uL3ZlbmRvci9hdXRvbG9hZC5waHAiOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25lcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHJpdmF0ZUtleVxQZW1Qcml2YXRlS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHJpdmF0ZUtleVxEZXJQcml2YXRlS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcU2lnbmF0dXJlXERlclNpZ25hdHVyZVNlcmlhbGl6ZXI7CgovLyBFQ0RTQSBkb21haW4gaXMgZGVmaW5lZCBieSBjdXJ2ZS9nZW5lcmF0b3IvaGFzaCBhbGdvcml0aG0sCi8vIHdoaWNoIGEgdmVyaWZpZXIgbXVzdCBiZSBhd2FyZSBvZi4KCiRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwokZ2VuZXJhdG9yID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5nZW5lcmF0b3IzODQoKTsKJHVzZURlcmFuZG9taXplZFNpZ25hdHVyZXMgPSB0cnVlOwokYWxnb3JpdGhtID0gJ3NoYTI1Nic7CgojIyBZb3UnbGwgYmUgcmVzdG9yaW5nIGZyb20gYSBrZXksIGFzIG9wcG9zZWQgdG8gZ2VuZXJhdGluZyBvbmUuCiRwZW1TZXJpYWxpemVyID0gbmV3IFBlbVByaXZhdGVLZXlTZXJpYWxpemVyKG5ldyBEZXJQcml2YXRlS2V5U2VyaWFsaXplcigkYWRhcHRlcikpOwoka2V5RGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCcuLi90ZXN0cy9kYXRhL29wZW5zc2wtcHJpdi5wZW0nKTsKJGtleSA9ICRwZW1TZXJpYWxpemVyLT5wYXJzZSgka2V5RGF0YSk7CgokZG9jdW1lbnQgPSAnSSBhbSB3cml0aW5nIHRvZGF5Li4uJzsKCiRzaWduZXIgPSBuZXcgU2lnbmVyKCRhZGFwdGVyKTsKJGhhc2ggPSAkc2lnbmVyLT5oYXNoRGF0YSgkZ2VuZXJhdG9yLCAkYWxnb3JpdGhtLCAkZG9jdW1lbnQpOwoKIyBEZXJhbmRvbWl6ZWQgc2lnbmF0dXJlcyBhcmUgbm90IG5lY2Vzc2FyeSwgYnV0IGNhbiByZWR1Y2UKIyB0aGUgYXR0YWNrIHN1cmZhY2UgZm9yIGEgcHJpdmF0ZSBrZXkgdGhhdCBpcyB0byBiZSB1c2VkIG9mdGVuLgppZiAoJHVzZURlcmFuZG9taXplZFNpZ25hdHVyZXMpIHsKICAgICRyYW5kb20gPSBcTWRhbnRlclxFY2NcUmFuZG9tXFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk6OmdldEhtYWNSYW5kb21HZW5lcmF0b3IoJGtleSwgJGhhc2gsICRhbGdvcml0aG0pOwp9IGVsc2UgewogICAgJHJhbmRvbSA9IFxNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tR2VuZXJhdG9yRmFjdG9yeTo6Z2V0UmFuZG9tR2VuZXJhdG9yKCk7Cn0KCiRyYW5kb21LID0gJHJhbmRvbS0+Z2VuZXJhdGUoJGdlbmVyYXRvci0+Z2V0T3JkZXIoKSk7CiRzaWduYXR1cmUgPSAkc2lnbmVyLT5zaWduKCRrZXksICRoYXNoLCAkcmFuZG9tSyk7Cgokc2VyaWFsaXplciA9IG5ldyBEZXJTaWduYXR1cmVTZXJpYWxpemVyKCk7CiRzZXJpYWxpemVkU2lnID0gJHNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgkc2lnbmF0dXJlKTsKZWNobyBiYXNlNjRfZW5jb2RlKCRzZXJpYWxpemVkU2lnKSAuIFBIUF9FT0w7]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/examples/ecdh_exchange.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmUgIi4uL3ZlbmRvci9hdXRvbG9hZC5waHAiOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGhJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxEZXJQdWJsaWNLZXlTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcUGVtUHVibGljS2V5U2VyaWFsaXplcjsKCi8vIEVDRFNBIGRvbWFpbiBpcyBkZWZpbmVkIGJ5IGN1cnZlL2dlbmVyYXRvci9oYXNoIGFsZ29yaXRobSwKLy8gd2hpY2ggYSB2ZXJpZmllciBtdXN0IGJlIGF3YXJlIG9mLgoKJGFkYXB0ZXIgPSBFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjM4NCgpOwokdXNlRGVyYW5kb21pemVkU2lnbmF0dXJlcyA9IHRydWU7CgokcGVtUHJpdiA9IG5ldyBQZW1Qcml2YXRlS2V5U2VyaWFsaXplcihuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoKSk7CiRwZW1QdWIgPSBuZXcgUGVtUHVibGljS2V5U2VyaWFsaXplcihuZXcgRGVyUHVibGljS2V5U2VyaWFsaXplcigpKTsKCiMgVGhlc2UgLnBlbSBhbmQgLmtleSBhcmUgZm9yIGRpZmZlcmVudCBrZXlzCiRhbGljZVByaXYgPSAkcGVtUHJpdi0+cGFyc2UoZmlsZV9nZXRfY29udGVudHMoJy4uL3Rlc3RzL2RhdGEvb3BlbnNzbC1wcml2LnBlbScpKTsKJGJvYlB1YiA9ICRwZW1QdWItPnBhcnNlKGZpbGVfZ2V0X2NvbnRlbnRzKCcuLi90ZXN0cy9kYXRhL29wZW5zc2wtcHViLmtleScpKTsKCiRleGNoYW5nZSA9ICRhbGljZVByaXYtPmNyZWF0ZUV4Y2hhbmdlKCRib2JQdWIpOwokc2hhcmVkID0gJGV4Y2hhbmdlLT5jYWxjdWxhdGVTaGFyZWRLZXkoKTsKZWNobyAiU2hhcmVkIHNlY3JldDogIiAuIGdtcF9zdHJ2YWwoJHNoYXJlZCwgMTApLlBIUF9FT0w7CgojIFRoZSBzaGFyZWQga2V5IGlzIG5ldmVyIHVzZWQgZGlyZWN0bHksIGJ1dCB1c2VkIHdpdGggYSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiAoS0RGKQoka2RmID0gZnVuY3Rpb24gKEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgsIFxHTVAgJHNoYXJlZFNlY3JldCkgewogICAgJGJpbmFyeSA9ICRtYXRoLT5pbnRUb1N0cmluZygkc2hhcmVkU2VjcmV0KTsKICAgICRoYXNoID0gaGFzaCgnc2hhMjU2JywgJGJpbmFyeSwgdHJ1ZSk7CiAgICByZXR1cm4gJGhhc2g7Cn07Cgoka2V5ID0gJGtkZigkYWRhcHRlciwgJHNoYXJlZCk7CmVjaG8gIkVuY3J5cHRpb24ga2V5OiAiIC4gdW5wYWNrKCJIKiIsICRrZGYoJGFkYXB0ZXIsICRzaGFyZWQpKVsxXSAuIFBIUF9FT0w7CiMgVGhpcyBrZXkgY2FuIG5vdyBiZSB1c2VkIHRvIGVuY3J5cHQvZGVjcnlwdCBtZXNzYWdlcyB3aXRoIHRoZSBvdGhlciBwZXJzb24=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/examples/key_generation.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmUgIi4uL3ZlbmRvci9hdXRvbG9hZC5waHAiOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CgokYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMzg0KCk7CiRwcml2YXRlID0gJGdlbmVyYXRvci0+Y3JlYXRlUHJpdmF0ZUtleSgpOwoKJGtleVNlcmlhbGl6ZXIgPSBuZXcgUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXIobmV3IERlclByaXZhdGVLZXlTZXJpYWxpemVyKCRhZGFwdGVyKSk7CiRkYXRhID0gJGtleVNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgkcHJpdmF0ZSk7CmVjaG8gJGRhdGEuUEhQX0VPTDs=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/examples/verify_signature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmUgIi4uL3ZlbmRvci9hdXRvbG9hZC5waHAiOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25lcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHVibGljS2V5XFBlbVB1YmxpY0tleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxEZXJQdWJsaWNLZXlTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxTaWduYXR1cmVcRGVyU2lnbmF0dXJlU2VyaWFsaXplcjsKCiMgU2FtZSBwYXJhbWV0ZXJzIGFzIGNyZWF0aW5nX3NpZ25hdHVyZS5waHAKCiRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwokZ2VuZXJhdG9yID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5nZW5lcmF0b3IzODQoKTsKJGFsZ29yaXRobSA9ICdzaGEyNTYnOwokc2lnRGF0YSA9IGJhc2U2NF9kZWNvZGUoJ01FUUNJQmUvQTJ0S0t2MlpQRXFwak5uaDU1MnJFYTROS0VJc3RPRjJPM3ZHRzZwQUFpQjQ3cXlSOEZYTVR5L3Vic284Y0VqZWg0akxQZjFuVmVFckZaeUVpTkwrWWc9PScpOwokZG9jdW1lbnQgPSAnSSBhbSB3cml0aW5nIHRvZGF5Li4uJzsKCi8vIFBhcnNlIHNpZ25hdHVyZQokc2lnU2VyaWFsaXplciA9IG5ldyBEZXJTaWduYXR1cmVTZXJpYWxpemVyKCk7CiRzaWcgPSAkc2lnU2VyaWFsaXplci0+cGFyc2UoJHNpZ0RhdGEpOwoKLy8gUGFyc2UgcHVibGljIGtleQoka2V5RGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCcuLi90ZXN0cy9kYXRhL29wZW5zc2wtcHViLnBlbScpOwokZGVyU2VyaWFsaXplciA9IG5ldyBEZXJQdWJsaWNLZXlTZXJpYWxpemVyKCRhZGFwdGVyKTsKJHBlbVNlcmlhbGl6ZXIgPSBuZXcgUGVtUHVibGljS2V5U2VyaWFsaXplcigkZGVyU2VyaWFsaXplcik7CiRrZXkgPSAkcGVtU2VyaWFsaXplci0+cGFyc2UoJGtleURhdGEpOwoKJHNpZ25lciA9IG5ldyBTaWduZXIoJGFkYXB0ZXIpOwokaGFzaCA9ICRzaWduZXItPmhhc2hEYXRhKCRnZW5lcmF0b3IsICRhbGdvcml0aG0sICRkb2N1bWVudCk7CiRjaGVjayA9ICRzaWduZXItPnZlcmlmeSgka2V5LCAkc2lnLCAkaGFzaCk7CgppZiAoJGNoZWNrKSB7CiAgICBlY2hvICJTaWduYXR1cmUgdmVyaWZpZWRcbiI7Cn0gZWxzZSB7CiAgICBlY2hvICJTaWduYXR1cmUgdmFsaWRhdGlvbiBmYWlsZWRcbiI7Cn0K]]></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/Yj1tYXN0ZXIpXShodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nL3BocGVjYy9waHBlY2MvP2JyYW5jaD1tYXN0ZXIpCgpbIVtMYXRlc3QgU3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2Mvdi9zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL21kYW50ZXIvZWNjKQpbIVtUb3RhbCBEb3dubG9hZHNdKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2MvZG93bmxvYWRzLnBuZyldKGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9tZGFudGVyL2VjYykKWyFbTGF0ZXN0IFVuc3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2Mvdi91bnN0YWJsZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbWRhbnRlci9lY2MpClshW0xpY2Vuc2VdKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvbWRhbnRlci9lY2MvbGljZW5zZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvbWRhbnRlci9lY2MpCgojIyMgSW5mb3JtYXRpb24KClRoaXMgbGlicmFyeSBpcyBhIHJld3JpdGUvdXBkYXRlIG9mIE1hdHlhcyBEYW50ZXIncyBFQ0MgbGlicmFyeS4gQWxsIGNyZWRpdCBnb2VzIHRvIGhpbS4KCkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIEVsbGlwdGljIEN1cnZlIENyeXB0b2dyYXBoeSBwbGVhc2UgcmVhZCBbdGhpcyBmaW5lIGFydGljbGVdKGh0dHA6Ly93d3cubWF0eWFzZGFudGVyLmNvbS8yMDEwLzEyL2VsbGlwdGljLWN1cnZlLXBocC1vb3AtZHNhLWFuZC1kaWZmaWUtaGVsbG1hbi8pLgoKVGhlIGxpYnJhcnkgc3VwcG9ydHMgdGhlIGZvbGxvd2luZyBjdXJ2ZXM6CgogLSBzZWNwMTEycjEKIC0gc2VjcDI1NmsxCiAtIG5pc3RwMTkyCiAtIG5pc3RwMjI0CiAtIG5pc3RwMjU2IC8gc2VjZzI1NnIxCiAtIG5pc3RwMzg0IC8gc2VjZzM4NHIxCiAtIG5pc3RwNTIxCgpUaGUgbGlicmFyeSBleHBvc2VzIGEgY2xhc3MgZm9yIHJhbmRvbSBieXRlIGdlbmVyYXRpb24sIGZvciBQSFA3KyB1c2VycyBpcyBwcm92aWRlZCBieSBgcmFuZG9tX2J5dGVzYC4gClBIUDUuNiB1c2VycyB3aWxsIHVzZSB0aGUgcGFyYWdvbmllL3JhbmRvbV9ieXRlcyBwb2x5ZmlsbC4gCgpEdXJpbmcgRUNEU0EsIGEgcmFuZG9tIHZhbHVlIGBrYCBpcyByZXF1aXJlZC4gSXQgaXMgYWNjZXB0YWJsZSB0byB1c2UgYSB0cnVlIFJORyB0byBnZW5lcmF0ZSB0aGlzIHZhbHVlLCBidXQgCnNob3VsZCB0aGUgc2FtZSBga2AgdmFsdWUgZXZlciBiZSByZXBlYXRlZGx5IHVzZWQgZm9yIGEga2V5LCBhbiBhdHRhY2tlciBjYW4gcmVjb3ZlciB0aGF0IHNpZ25pbmcga2V5LiAKVGhlIEhNQUMgcmFuZG9tIGdlbmVyYXRvciBjYW4gZGVyaXZlIGEgZGV0ZXJtaW5pc3RpYyBrIHZhbHVlIGZyb20gdGhlIG1lc3NhZ2UgaGFzaCBhbmQgcHJpdmF0ZSBrZXksIHZvaWRpbmcKdGhpcyBjb25jZXJuLgoKVGhlIGxpYnJhcnkgdXNlcyBhIG5vbi1icmFuY2hpbmcgTW9udGdvbWVyeSBsYWRkZXIgZm9yIHNjYWxhciBtdWx0aXBsaWNhdGlvbiwgYXMgaXQncyBjb25zdGFudCB0aW1lIGFuZCBhdm9pZHMgc2VjcmV0IApkZXBlbmRhbnQgYnJhbmNoZXMuIAogCiMjIyBMaWNlbnNlCgpUaGlzIHBhY2thZ2UgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLgoKIyMjIFJlcXVpcmVtZW50cwoKKiBQSFAgNS42KwoqIGNvbXBvc2VyCiogZXh0LWdtcAoKIyMjIEluc3RhbGxhdGlvbgoKWW91IGNhbiBpbnN0YWxsIHRoaXMgbGlicmFyeSB2aWEgQ29tcG9zZXIgOgoKYGNvbXBvc2VyIHJlcXVpcmUgbWRhbnRlci9lY2NgCgojIyMgQ29udHJpYnV0ZQoKV2hlbiBzZW5kaW5nIGluIHB1bGwgcmVxdWVzdHMsIHBsZWFzZSBtYWtlIHN1cmUgdG8gcnVuIHRoZSBgbWFrZWAgY29tbWFuZC4KClRoZSBkZWZhdWx0IHRhcmdldCBydW5zIGFsbCBQSFBVbml0IGFuZCBQSFBDUyB0ZXN0cy4gQWxsIHRlc3RzCm11c3QgdmFsaWRhdGUgZm9yIHlvdXIgY29udHJpYnV0aW9uIHRvIGJlIGFjY2VwdGVkLgoKSXQncyBhbHNvIGFsd2F5cyBhIGdvb2QgaWRlYSB0byBjaGVjayB0aGUgcmVzdWx0cyBvZiB0aGUgW1NjcnV0aW5pemVyIGFuYWx5c2lzXShodHRwczovL3NjcnV0aW5pemVyLWNpLmNvbS9nL3BocGVjYy9waHBlY2MvKSBmb3IgeW91ciBwdWxsIHJlcXVlc3RzLgoKIyMjIFVzYWdlCgojIyMjIEtleSBnZW5lcmF0aW9uCgpgYGBwaHAKPD9waHAKCnJlcXVpcmUgIi4uL3ZlbmRvci9hdXRvbG9hZC5waHAiOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CgokYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMzg0KCk7CiRwcml2YXRlID0gJGdlbmVyYXRvci0+Y3JlYXRlUHJpdmF0ZUtleSgpOwoKJGtleVNlcmlhbGl6ZXIgPSBuZXcgUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXIobmV3IERlclByaXZhdGVLZXlTZXJpYWxpemVyKCRhZGFwdGVyKSk7CiRkYXRhID0gJGtleVNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgkcHJpdmF0ZSk7CmVjaG8gJGRhdGEuUEhQX0VPTDsKYGBgCgojIyMjIEVDRFNBIC0gU2lnbmF0dXJlIGNyZWF0aW9uCmBgYHBocAo8P3BocAoKcmVxdWlyZSAiLi4vdmVuZG9yL2F1dG9sb2FkLnBocCI7Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXEZpbGVcUGVtTG9hZGVyOwp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXFNpZ25hdHVyZVxTaWduZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFNpZ25hdHVyZVxEZXJTaWduYXR1cmVTZXJpYWxpemVyOwoKLy8gRUNEU0EgZG9tYWluIGlzIGRlZmluZWQgYnkgY3VydmUvZ2VuZXJhdG9yL2hhc2ggYWxnb3JpdGhtLAovLyB3aGljaCBhIHZlcmlmaWVyIG11c3QgYmUgYXdhcmUgb2YuCgokYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMzg0KCk7CiR1c2VEZXJhbmRvbWl6ZWRTaWduYXR1cmVzID0gdHJ1ZTsKJGFsZ29yaXRobSA9ICdzaGEyNTYnOwoKIyMgWW91J2xsIGJlIHJlc3RvcmluZyBmcm9tIGEga2V5LCBhcyBvcHBvc2VkIHRvIGdlbmVyYXRpbmcgb25lLgokcGVtU2VyaWFsaXplciA9IG5ldyBQZW1Qcml2YXRlS2V5U2VyaWFsaXplcihuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoJGFkYXB0ZXIpKTsKJHBlbUxvYWRlciA9IG5ldyBQZW1Mb2FkZXIoKTsKJGtleURhdGEgPSAkcGVtTG9hZGVyLT5sb2FkUHJpdmF0ZUtleURhdGEoJy4uL3Rlc3RzL2RhdGEvb3BlbnNzbC1wcml2LnBlbScpOwoka2V5ID0gJHBlbVNlcmlhbGl6ZXItPnBhcnNlKCRrZXlEYXRhKTsKCiRkb2N1bWVudCA9ICdJIGFtIHdyaXRpbmcgdG9kYXkuLi4nOwoKJHNpZ25lciA9IG5ldyBTaWduZXIoJGFkYXB0ZXIpOwokaGFzaCA9ICRzaWduZXItPmhhc2hEYXRhKCRnZW5lcmF0b3IsICRhbGdvcml0aG0sICRkb2N1bWVudCk7CgojIERlcmFuZG9taXplZCBzaWduYXR1cmVzIGFyZSBub3QgbmVjZXNzYXJ5LCBidXQgY2FuIHJlZHVjZQojIHRoZSBhdHRhY2sgc3VyZmFjZSBmb3IgYSBwcml2YXRlIGtleSB0aGF0IGlzIHRvIGJlIHVzZWQgb2Z0ZW4uCmlmICgkdXNlRGVyYW5kb21pemVkU2lnbmF0dXJlcykgewogICAgJHJhbmRvbSA9IFxNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tR2VuZXJhdG9yRmFjdG9yeTo6Z2V0SG1hY1JhbmRvbUdlbmVyYXRvcigka2V5LCAkaGFzaCwgJGFsZ29yaXRobSk7Cn0gZWxzZSB7CiAgICAkcmFuZG9tID0gXE1kYW50ZXJcRWNjXFJhbmRvbVxSYW5kb21HZW5lcmF0b3JGYWN0b3J5OjpnZXRSYW5kb21HZW5lcmF0b3IoKTsKfQoKJHJhbmRvbUsgPSAkcmFuZG9tLT5nZW5lcmF0ZSgkZ2VuZXJhdG9yLT5nZXRPcmRlcigpKTsKJHNpZ25hdHVyZSA9ICRzaWduZXItPnNpZ24oJGtleSwgJGhhc2gsICRyYW5kb21LKTsKCiRzZXJpYWxpemVyID0gbmV3IERlclNpZ25hdHVyZVNlcmlhbGl6ZXIoKTsKJHNlcmlhbGl6ZWRTaWcgPSAkc2VyaWFsaXplci0+c2VyaWFsaXplKCRzaWduYXR1cmUpOwplY2hvIGJhc2U2NF9lbmNvZGUoJHNlcmlhbGl6ZWRTaWcpIC4gUEhQX0VPTDsKYGBgcGhwCgojIyMjIEVDRFNBIC0gU2lnbmF0dXJlIHZlcmlmaWNhdGlvbgoKYGBgcGhwCjw/cGhwCgpyZXF1aXJlICIuLi92ZW5kb3IvYXV0b2xvYWQucGhwIjsKCnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXFNpZ25hdHVyZVxTaWduZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxQZW1QdWJsaWNLZXlTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcRGVyUHVibGljS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcU2lnbmF0dXJlXERlclNpZ25hdHVyZVNlcmlhbGl6ZXI7CgojIFNhbWUgcGFyYW1ldGVycyBhcyBjcmVhdGluZ19zaWduYXR1cmUucGhwCgokYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMzg0KCk7CiRhbGdvcml0aG0gPSAnc2hhMjU2JzsKJHNpZ0RhdGEgPSBiYXNlNjRfZGVjb2RlKCdNRVFDSUJlL0EydEtLdjJaUEVxcGpObmg1NTJyRWE0TktFSXN0T0YyTzN2R0c2cEFBaUI0N3F5UjhGWE1UeS91YnNvOGNFamVoNGpMUGYxblZlRXJGWnlFaU5MK1lnPT0nKTsKJGRvY3VtZW50ID0gJ0kgYW0gd3JpdGluZyB0b2RheS4uLic7CgovLyBQYXJzZSBzaWduYXR1cmUKJHNpZ1NlcmlhbGl6ZXIgPSBuZXcgRGVyU2lnbmF0dXJlU2VyaWFsaXplcigpOwokc2lnID0gJHNpZ1NlcmlhbGl6ZXItPnBhcnNlKCRzaWdEYXRhKTsKCi8vIFBhcnNlIHB1YmxpYyBrZXkKJGtleURhdGEgPSBmaWxlX2dldF9jb250ZW50cygnLi4vdGVzdHMvZGF0YS9vcGVuc3NsLXB1Yi5wZW0nKTsKJGRlclNlcmlhbGl6ZXIgPSBuZXcgRGVyUHVibGljS2V5U2VyaWFsaXplcigkYWRhcHRlcik7CiRwZW1TZXJpYWxpemVyID0gbmV3IFBlbVB1YmxpY0tleVNlcmlhbGl6ZXIoJGRlclNlcmlhbGl6ZXIpOwoka2V5ID0gJHBlbVNlcmlhbGl6ZXItPnBhcnNlKCRrZXlEYXRhKTsKCiRzaWduZXIgPSBuZXcgU2lnbmVyKCRhZGFwdGVyKTsKJGhhc2ggPSAkc2lnbmVyLT5oYXNoRGF0YSgkZ2VuZXJhdG9yLCAkYWxnb3JpdGhtLCAkZG9jdW1lbnQpOwokY2hlY2sgPSAkc2lnbmVyLT52ZXJpZnkoJGtleSwgJHNpZywgJGhhc2gpOwoKaWYgKCRjaGVjaykgewogICAgZWNobyAiU2lnbmF0dXJlIHZlcmlmaWVkXG4iOwp9IGVsc2UgewogICAgZWNobyAiU2lnbmF0dXJlIHZhbGlkYXRpb24gZmFpbGVkXG4iOwp9CgpgYGAKCiMjIyMgQXN5bW1ldHJpYyBlbmNyeXB0aW9uCgpgYGBwaHAKPD9waHAKCnJlcXVpcmUgIi4uL3ZlbmRvci9hdXRvbG9hZC5waHAiOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGhJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFByaXZhdGVLZXlcRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFB1YmxpY0tleVxEZXJQdWJsaWNLZXlTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcUGVtUHVibGljS2V5U2VyaWFsaXplcjsKCi8vIEVDRFNBIGRvbWFpbiBpcyBkZWZpbmVkIGJ5IGN1cnZlL2dlbmVyYXRvci9oYXNoIGFsZ29yaXRobSwKLy8gd2hpY2ggYSB2ZXJpZmllciBtdXN0IGJlIGF3YXJlIG9mLgoKJGFkYXB0ZXIgPSBFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjM4NCgpOwokdXNlRGVyYW5kb21pemVkU2lnbmF0dXJlcyA9IHRydWU7CgokcGVtUHJpdiA9IG5ldyBQZW1Qcml2YXRlS2V5U2VyaWFsaXplcihuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoKSk7CiRwZW1QdWIgPSBuZXcgUGVtUHVibGljS2V5U2VyaWFsaXplcihuZXcgRGVyUHVibGljS2V5U2VyaWFsaXplcigpKTsKCiMgVGhlc2UgLnBlbSBhbmQgLmtleSBhcmUgZm9yIGRpZmZlcmVudCBrZXlzCiRhbGljZVByaXYgPSAkcGVtUHJpdi0+cGFyc2UoZmlsZV9nZXRfY29udGVudHMoJy4uL3Rlc3RzL2RhdGEvb3BlbnNzbC1wcml2LnBlbScpKTsKJGJvYlB1YiA9ICRwZW1QdWItPnBhcnNlKGZpbGVfZ2V0X2NvbnRlbnRzKCcuLi90ZXN0cy9kYXRhL29wZW5zc2wtcHViLmtleScpKTsKCiRleGNoYW5nZSA9ICRhbGljZVByaXYtPmNyZWF0ZUV4Y2hhbmdlKCRib2JQdWIpOwokc2hhcmVkID0gJGV4Y2hhbmdlLT5jYWxjdWxhdGVTaGFyZWRLZXkoKTsKZWNobyAiU2hhcmVkIHNlY3JldDogIiAuIGdtcF9zdHJ2YWwoJHNoYXJlZCwgMTApLlBIUF9FT0w7CgojIFRoZSBzaGFyZWQga2V5IGlzIG5ldmVyIHVzZWQgZGlyZWN0bHksIGJ1dCB1c2VkIHdpdGggYSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiAoS0RGKQoka2RmID0gZnVuY3Rpb24gKEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgsIFxHTVAgJHNoYXJlZFNlY3JldCkgewogICAgJGJpbmFyeSA9ICRtYXRoLT5pbnRUb1N0cmluZygkc2hhcmVkU2VjcmV0KTsKICAgICRoYXNoID0gaGFzaCgnc2hhMjU2JywgJGJpbmFyeSwgdHJ1ZSk7CiAgICByZXR1cm4gJGhhc2g7Cn07Cgoka2V5ID0gJGtkZigkYWRhcHRlciwgJHNoYXJlZCk7CmVjaG8gIkVuY3J5cHRpb24ga2V5OiAiIC4gdW5wYWNrKCJIKiIsICRrZGYoJGFkYXB0ZXIsICRzaGFyZWQpKVsxXSAuIFBIUF9FT0w7CiMgVGhpcyBrZXkgY2FuIG5vdyBiZSB1c2VkIHRvIGVuY3J5cHQvZGVjcnlwdCBtZXNzYWdlcyB3aXRoIHRoZSBvdGhlciBwZXJzb24KYGBg]]></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[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cRWNESDsKCi8qKgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHlhcyBEYW50ZXIKICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHJpdmF0ZUtleUludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5Owp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQdWJsaWNLZXlJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGhJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXFBvaW50SW50ZXJmYWNlOwoKLyoqCiAqIFRoaXMgY2xhc3MgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIEVDREguCiAqIEVjREggaXMgc2FmZSBrZXkgZXhjaGFuZ2UgYW5kIGFjaGlldmVzCiAqIHRoYXQgYSBrZXkgaXMgdHJhbnNwb3J0ZWQgc2VjdXJlbHkgYmV0d2VlbiB0d28gcGFydGllcy4KICogVGhlIGtleSB0aGVuIGNhbiBiZSBoYXNoZWQgYW5kIHVzZWQgYXMgYSBiYXNpcyBpbgogKiBhIGR1YWwgZW5jcnlwdGlvbiBzY2hlbWUsIGFsb25nIHdpdGggQUVTIGZvciBmYXN0ZXIKICogdHdvLSB3YXkgZW5jcnlwdGlvbi4KICovCmNsYXNzIEVjREggaW1wbGVtZW50cyBFY0RISW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQWRhcHRlciB1c2VkIGZvciBtYXRoIGNhbGN1bGF0aW9ucwogICAgICoKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIC8qKgogICAgICogU2VjcmV0IGtleSBiZXR3ZWVuIHRoZSB0d28gcGFydGllcwogICAgICoKICAgICAqIEB2YXIgUG9pbnRJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkc2VjcmV0S2V5ID0gbnVsbDsKCiAgICAvKioKICAgICAqCiAgICAgKiBAdmFyIFB1YmxpY0tleUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRyZWNpcGllbnRLZXk7CgogICAgLyoqCiAgICAgKgogICAgICogQHZhciBQcml2YXRlS2V5SW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJHNlbmRlcktleTsKCiAgICAvKioKICAgICAqIEluaXRpYWxpemUgYSBuZXcgZXhjaGFuZ2UgZnJvbSBhIGdlbmVyYXRvciBwb2ludC4KICAgICAqCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciBBIG1hdGggYWRhcHRlciBpbnN0YW5jZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xFY0RIXEVjREhJbnRlcmZhY2U6OmNhbGN1bGF0ZVNoYXJlZEtleSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjYWxjdWxhdGVTaGFyZWRLZXkoKQogICAgewogICAgICAgICR0aGlzLT5jYWxjdWxhdGVLZXkoKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5zZWNyZXRLZXktPmdldFgoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xFY0RIXEVjREhJbnRlcmZhY2U6OmNyZWF0ZU11bHRpUGFydHlLZXkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlTXVsdGlQYXJ0eUtleSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmNhbGN1bGF0ZUtleSgpOwoKICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleSgkdGhpcy0+YWRhcHRlciwgJHRoaXMtPnNlbmRlcktleS0+Z2V0UG9pbnQoKSwgJHRoaXMtPnNlY3JldEtleSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cRWNESFxFY0RISW50ZXJmYWNlOjpzZXRSZWNpcGllbnRLZXkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UmVjaXBpZW50S2V5KFB1YmxpY0tleUludGVyZmFjZSAka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+cmVjaXBpZW50S2V5ID0gJGtleTsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xDcnlwdG9cRWNESFxFY0RISW50ZXJmYWNlOjpzZXRTZW5kZXJLZXkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2VuZGVyS2V5KFByaXZhdGVLZXlJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAkdGhpcy0+c2VuZGVyS2V5ID0gJGtleTsKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhbGN1bGF0ZUtleSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrRXhjaGFuZ2VTdGF0ZSgpOwoKICAgICAgICBpZiAoJHRoaXMtPnNlY3JldEtleSA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+c2VjcmV0S2V5ID0gJHRoaXMtPnJlY2lwaWVudEtleS0+Z2V0UG9pbnQoKS0+bXVsKCR0aGlzLT5zZW5kZXJLZXktPmdldFNlY3JldCgpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBWZXJpZmllcyB0aGF0IHRoZSBzaGFyZWQgc2VjcmV0IGlzIGtub3duLCBvciB0aGF0IHRoZSByZXF1aXJlZCBrZXlzIGFyZSBhdmFpbGFibGUKICAgICAqIHRvIGNhbGN1bGF0ZSB0aGUgc2hhcmVkIHNlY3JldC4KICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gd2hlbiB0aGUgZXhjaGFuZ2UgaGFzIG5vdCBiZWVuIG1hZGUuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tFeGNoYW5nZVN0YXRlKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNlY3JldEtleSAhPT0gbnVsbCkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnNlbmRlcktleSA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1NlbmRlciBrZXkgbm90IHNldC4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+cmVjaXBpZW50S2V5ID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignUmVjaXBpZW50IGtleSBub3Qgc2V0LicpOwogICAgICAgIH0KICAgIH0KfQo=]]></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[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5OwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludDsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcUG9pbnRJbnRlcmZhY2U7CgovKioKICogVGhpcyBjbGFzcyBzZXJ2ZXMgYXMgcHVibGljLSBwcml2YXRlIGtleSBleGNoYW5nZSBmb3Igc2lnbmF0dXJlIHZlcmlmaWNhdGlvbgogKi8KY2xhc3MgUHVibGljS2V5IGltcGxlbWVudHMgUHVibGljS2V5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgQ3VydmVGcEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJGN1cnZlOwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRnZW5lcmF0b3I7CgogICAgLyoqCiAgICAgKgogICAgICogQHZhciBQb2ludEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJHBvaW50OwoKICAgIC8qKgogICAgICoKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgJGFkYXB0ZXI7CgogICAgLyoqCiAgICAgKiBJbml0aWFsaXplIGEgbmV3IGluc3RhbmNlLgogICAgICoKICAgICAqIEBwYXJhbSAgR21wTWF0aEludGVyZmFjZSAgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSAgR2VuZXJhdG9yUG9pbnQgICAgJGdlbmVyYXRvcgogICAgICogQHBhcmFtICBQb2ludEludGVyZmFjZSAgICAkcG9pbnQKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyLCBHZW5lcmF0b3JQb2ludCAkZ2VuZXJhdG9yLCBQb2ludEludGVyZmFjZSAkcG9pbnQpCiAgICB7CiAgICAgICAgJHRoaXMtPmN1cnZlID0gJGdlbmVyYXRvci0+Z2V0Q3VydmUoKTsKICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yID0gJGdlbmVyYXRvcjsKICAgICAgICAkdGhpcy0+cG9pbnQgPSAkcG9pbnQ7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKCiAgICAgICAgJG4gPSAkZ2VuZXJhdG9yLT5nZXRPcmRlcigpOwoKICAgICAgICBpZiAoJGFkYXB0ZXItPmNtcCgkcG9pbnQtPmdldFgoKSwgZ21wX2luaXQoMCwgMTApKSA8IDAgfHwgJGFkYXB0ZXItPmNtcCgkbiwgJHBvaW50LT5nZXRYKCkpIDw9IDAKICAgICAgICAgICAgfHwgJGFkYXB0ZXItPmNtcCgkcG9pbnQtPmdldFkoKSwgZ21wX2luaXQoMCwgMTApKSA8IDAgfHwgJGFkYXB0ZXItPmNtcCgkbiwgJHBvaW50LT5nZXRZKCkpIDw9IDAKICAgICAgICApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCJHZW5lcmF0b3IgcG9pbnQgaGFzIHggYW5kIHkgb3V0IG9mIHJhbmdlLiIpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5SW50ZXJmYWNlOjpnZXRDdXJ2ZSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDdXJ2ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jdXJ2ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHskaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5SW50ZXJmYWNlOjpnZXRHZW5lcmF0b3IoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdlbmVyYXRvcjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5SW50ZXJmYWNlOjpnZXRQb2ludCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb2ludCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wb2ludDsKICAgIH0KfQo=]]></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+YWRhcHRlciA9ICRhZGFwdGVyOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEdlbmVyYXRvclBvaW50ICRHCiAgICAgKiBAcGFyYW0gXEdNUCAkaGFzaAogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0cnVuY2F0ZUhhc2goR2VuZXJhdG9yUG9pbnQgJEcsIFxHTVAgJGhhc2gpCiAgICB7CiAgICAgICAgJGRlYyA9ICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkaGFzaCk7CiAgICAgICAgJGhleFNpemUgPSBCaW5hcnlTdHJpbmc6Omxlbmd0aCgkdGhpcy0+YWRhcHRlci0+ZGVjSGV4KCRkZWMpKTsKICAgICAgICAkaGFzaEJpdHMgPSAkdGhpcy0+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+Y3VydmUzODQoKTsKICAgICAgICAgICAgY2FzZSBOaXN0Q3VydmU6Ok5BTUVfUDUyMToKICAgICAgICAgICAgICAgIHJldHVybiAkbmlzdEZhY3RvcnktPmN1cnZlNTIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTEyUjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTExMnIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2SzE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTI1NmsxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2UjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTI1NnIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMzg0UjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5jdXJ2ZTM4NHIxKCk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Vua25vd24gY3VydmUuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtICRuYW1lCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yQnlOYW1lKCRuYW1lKQogICAgewogICAgICAgICRhZGFwdGVyID0gTWF0aEFkYXB0ZXJGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiAgICAgICAgJG5pc3RGYWN0b3J5ID0gc2VsZjo6Z2V0TmlzdEZhY3RvcnkoJGFkYXB0ZXIpOwogICAgICAgICRzZWNwRmFjdG9yeSA9IHNlbGY6OmdldFNlY3BGYWN0b3J5KCRhZGFwdGVyKTsKCiAgICAgICAgc3dpdGNoICgkbmFtZSkgewogICAgICAgICAgICBjYXNlIE5pc3RDdXJ2ZTo6TkFNRV9QMTkyOgogICAgICAgICAgICAgICAgcmV0dXJuICRuaXN0RmFjdG9yeS0+Z2VuZXJhdG9yMTkyKCk7CiAgICAgICAgICAgIGNhc2UgTmlzdEN1cnZlOjpOQU1FX1AyMjQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJG5pc3RGYWN0b3J5LT5nZW5lcmF0b3IyMjQoKTsKICAgICAgICAgICAgY2FzZSBOaXN0Q3VydmU6Ok5BTUVfUDI1NjoKICAgICAgICAgICAgICAgIHJldHVybiAkbmlzdEZhY3RvcnktPmdlbmVyYXRvcjI1NigpOwogICAgICAgICAgICBjYXNlIE5pc3RDdXJ2ZTo6TkFNRV9QMzg0OgogICAgICAgICAgICAgICAgcmV0dXJuICRuaXN0RmFjdG9yeS0+Z2VuZXJhdG9yMzg0KCk7CiAgICAgICAgICAgIGNhc2UgTmlzdEN1cnZlOjpOQU1FX1A1MjE6CiAgICAgICAgICAgICAgICByZXR1cm4gJG5pc3RGYWN0b3J5LT5nZW5lcmF0b3I1MjEoKTsKICAgICAgICAgICAgY2FzZSBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8xMTJSMToKICAgICAgICAgICAgICAgIHJldHVybiAkc2VjcEZhY3RvcnktPmdlbmVyYXRvcjExMnIxKCk7CiAgICAgICAgICAgIGNhc2UgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2SzE6CiAgICAgICAgICAgICAgICByZXR1cm4gJHNlY3BGYWN0b3J5LT5nZW5lcmF0b3IyNTZrMSgpOwogICAgICAgICAgICBjYXNlIFNlY2dDdXJ2ZTo6TkFNRV9TRUNQXzI1NlIxOgogICAgICAgICAgICAgICAgcmV0dXJuICRzZWNwRmFjdG9yeS0+Z2VuZXJhdG9yMjU2cjEoKTsKICAgICAgICAgICAgY2FzZSBTZWNnQ3VydmU6Ok5BTUVfU0VDUF8zODRSMToKICAgICAgICAgICAgICAgIHJldHVybiAkc2VjcEZhY3RvcnktPmdlbmVyYXRvcjM4NHIxKCk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1Vua25vd24gZ2VuZXJhdG9yLicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gTmlzdEN1cnZlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldE5pc3RGYWN0b3J5KEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBOaXN0Q3VydmUoJG1hdGgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBTZWNnQ3VydmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U2VjcEZhY3RvcnkoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFNlY2dDdXJ2ZSgkbWF0aCk7CiAgICB9Cn0K]]></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[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZVBhcmFtZXRlcnM7CnVzZSBNZGFudGVyXEVjY1xSYW5kb21cUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlcgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICoKICovCmNsYXNzIFNlY2dDdXJ2ZQp7CiAgICAvKioKICAgICAqIEB2YXIgR21wTWF0aEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRhZGFwdGVyOwoKICAgIGNvbnN0IE5BTUVfU0VDUF8xMTJSMSA9ICdzZWNwMTEycjEnOwogICAgY29uc3QgTkFNRV9TRUNQXzI1NksxID0gJ3NlY3AyNTZrMSc7CiAgICBjb25zdCBOQU1FX1NFQ1BfMjU2UjEgPSAnc2VjcDI1NnIxJzsKICAgIGNvbnN0IE5BTUVfU0VDUF8zODRSMSA9ICdzZWNwMzg0cjEnOwoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkYXB0ZXIgPSAkYWRhcHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gTmFtZWRDdXJ2ZUZwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJ2ZTExMnIxKCkKICAgIHsKICAgICAgICAkcCA9IGdtcF9pbml0KCcweERCN0MyQUJGNjJFMzVFNjY4MDc2QkVBRDIwOEInLCAxNik7CiAgICAgICAgJGEgPSBnbXBfaW5pdCgnMHhEQjdDMkFCRjYyRTM1RTY2ODA3NkJFQUQyMDg4JywgMTYpOwogICAgICAgICRiID0gZ21wX2luaXQoJzB4NjU5RUY4QkEwNDM5MTZFRURFODkxMTcwMkIyMicsIDE2KTsKCiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKDExMiwgJHAsICRhLCAkYik7CgogICAgICAgIHJldHVybiBuZXcgTmFtZWRDdXJ2ZUZwKHNlbGY6Ok5BTUVfU0VDUF8xMTJSMSwgJHBhcmFtZXRlcnMsICR0aGlzLT5hZGFwdGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvcgogICAgICogQHJldHVybiBcTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2VuZXJhdG9yMTEycjEoUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRyYW5kb21HZW5lcmF0b3IgPSBudWxsKQogICAgewogICAgICAgICRjdXJ2ZSA9ICR0aGlzLT5jdXJ2ZTExMnIxKCk7CgogICAgICAgICRvcmRlciA9IGdtcF9pbml0KCcweERCN0MyQUJGNjJFMzVFNzYyOERGQUM2NTYxQzUnLCAxNik7CiAgICAgICAgJHggPSBnbXBfaW5pdCgnMHgwOTQ4NzIzOTk5NUE1RUU3NkI1NUY5QzJGMDk4JywgMTYpOwogICAgICAgICR5ID0gZ21wX2luaXQoJzB4QTg5Q0U1QUY4NzI0QzBBMjNFMEUwRkY3NzUwMCcsIDE2KTsKCiAgICAgICAgcmV0dXJuICRjdXJ2ZS0+Z2V0R2VuZXJhdG9yKCR4LCAkeSwgJG9yZGVyLCAkcmFuZG9tR2VuZXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gTmFtZWRDdXJ2ZUZwCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjdXJ2ZTI1NmsxKCkKICAgIHsKICAgICAgICAkcCA9IGdtcF9pbml0KCdGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRUZGRkZGQzJGJywgMTYpOwogICAgICAgICRhID0gZ21wX2luaXQoMCwgMTApOwogICAgICAgICRiID0gZ21wX2luaXQoNywgMTApOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMjU2LCAkcCwgJGEsICRiKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZEN1cnZlRnAoc2VsZjo6TkFNRV9TRUNQXzI1NksxLCAkcGFyYW1ldGVycywgJHRoaXMtPmFkYXB0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0b3IyNTZrMShSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJGN1cnZlID0gJHRoaXMtPmN1cnZlMjU2azEoKTsKCiAgICAgICAgJG9yZGVyID0gZ21wX2luaXQoJzB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkVCQUFFRENFNkFGNDhBMDNCQkZEMjVFOENEMDM2NDE0MScsIDE2KTsKICAgICAgICAkeCA9IGdtcF9pbml0KCcweDc5QkU2NjdFRjlEQ0JCQUM1NUEwNjI5NUNFODcwQjA3MDI5QkZDREIyRENFMjhEOTU5RjI4MTVCMTZGODE3OTgnLCAxNik7CiAgICAgICAgJHkgPSBnbXBfaW5pdCgnMHg0ODNBREE3NzI2QTNDNDY1NURBNEZCRkMwRTExMDhBOEZEMTdCNDQ4QTY4NTU0MTk5QzQ3RDA4RkZCMTBENEI4JywgMTYpOwoKICAgICAgICByZXR1cm4gJGN1cnZlLT5nZXRHZW5lcmF0b3IoJHgsICR5LCAkb3JkZXIsICRyYW5kb21HZW5lcmF0b3IpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBOYW1lZEN1cnZlRnAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGN1cnZlMjU2cjEoKQogICAgewogICAgICAgICRwID0gZ21wX2luaXQoJzB4RkZGRkZGRkYwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRicsIDE2KTsKICAgICAgICAkYSA9IGdtcF9pbml0KCcweEZGRkZGRkZGMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkMnLCAxNik7CiAgICAgICAgJGIgPSBnbXBfaW5pdCgnMHg1QUM2MzVEOEFBM0E5M0U3QjNFQkJENTU3Njk4ODZCQzY1MUQwNkIwQ0M1M0IwRjYzQkNFM0MzRTI3RDI2MDRCJywgMTYpOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMjU2LCAkcCwgJGEsICRiKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZEN1cnZlRnAoc2VsZjo6TkFNRV9TRUNQXzI1NlIxLCAkcGFyYW1ldGVycywgJHRoaXMtPmFkYXB0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0b3IyNTZyMShSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJGN1cnZlID0gJHRoaXMtPmN1cnZlMjU2cjEoKTsKCiAgICAgICAgJG9yZGVyID0gZ21wX2luaXQoJzB4RkZGRkZGRkYwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkZCQ0U2RkFBREE3MTc5RTg0RjNCOUNBQzJGQzYzMjU1MScsIDE2KTsKICAgICAgICAkeCA9IGdtcF9pbml0KCcweDZCMTdEMUYyRTEyQzQyNDdGOEJDRTZFNTYzQTQ0MEYyNzcwMzdEODEyREVCMzNBMEY0QTEzOTQ1RDg5OEMyOTYnLCAxNik7CiAgICAgICAgJHkgPSBnbXBfaW5pdCgnMHg0RkUzNDJFMkZFMUE3RjlCOEVFN0VCNEE3QzBGOUUxNjJCQ0UzMzU3NkIzMTVFQ0VDQkI2NDA2ODM3QkY1MUY1JywgMTYpOwoKICAgICAgICByZXR1cm4gJGN1cnZlLT5nZXRHZW5lcmF0b3IoJHgsICR5LCAkb3JkZXIsICRyYW5kb21HZW5lcmF0b3IpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBOYW1lZEN1cnZlRnAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGN1cnZlMzg0cjEoKQogICAgewogICAgICAgICRwID0gZ21wX2luaXQoJzB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRUZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGJywgMTYpOwogICAgICAgICRhID0gZ21wX2luaXQoJzB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRUZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZDJywgMTYpOwogICAgICAgICRiID0gZ21wX2luaXQoJzB4QjMzMTJGQTdFMjNFRTdFNDk4OEUwNTZCRTNGODJEMTkxODFEOUM2RUZFODE0MTEyMDMxNDA4OEY1MDEzODc1QUM2NTYzOThEOEEyRUQxOUQyQTg1QzhFREQzRUMyQUVGJywgMTYpOwoKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzg0LCAkcCwgJGEsICRiKTsKCiAgICAgICAgcmV0dXJuIG5ldyBOYW1lZEN1cnZlRnAoc2VsZjo6TkFNRV9TRUNQXzM4NFIxLCAkcGFyYW1ldGVycywgJHRoaXMtPmFkYXB0ZXIpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcmFuZG9tR2VuZXJhdG9yCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZW5lcmF0b3IzODRyMShSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UgJHJhbmRvbUdlbmVyYXRvciA9IG51bGwpCiAgICB7CiAgICAgICAgJGN1cnZlID0gJHRoaXMtPmN1cnZlMzg0cjEoKTsKCiAgICAgICAgJG9yZGVyID0gZ21wX2luaXQoJzB4RkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQzc2MzREODFGNDM3MkRERjU4MUEwREIyNDhCMEE3N0FFQ0VDMTk2QUNDQzUyOTczJywgMTYpOwogICAgICAgICR4ID0gZ21wX2luaXQoJzB4QUE4N0NBMjJCRThCMDUzNzhFQjFDNzFFRjMyMEFENzQ2RTFEM0I2MjhCQTc5Qjk4NTlGNzQxRTA4MjU0MkEzODU1MDJGMjVEQkY1NTI5NkMzQTU0NUUzODcyNzYwQUI3JywgMTYpOwogICAgICAgICR5ID0gZ21wX2luaXQoJzB4MzYxN0RFNEE5NjI2MkM2RjVEOUU5OEJGOTI5MkRDMjlGOEY0MURCRDI4OUExNDdDRTlEQTMxMTNCNUYwQjhDMDBBNjBCMUNFMUQ3RTgxOUQ3QTQzMUQ3QzkwRUEwRTVGJywgMTYpOwoKICAgICAgICByZXR1cm4gJGN1cnZlLT5nZXRHZW5lcmF0b3IoJHgsICR5LCAkb3JkZXIsICRyYW5kb21HZW5lcmF0b3IpOwogICAgfQp9Cg==]]></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+dG9TdHJpbmcoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmhleERlYygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoZXhEZWMoJGhleFN0cmluZykKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpkZWNIZXgoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjSGV4KCRkZWNTdHJpbmcpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkZnVuYywKICAgICAgICAgICAgJGFyZ3MKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcR21wTWF0aEludGVyZmFjZTo6cG93bW9kKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvd21vZChcR01QICRiYXNlLCBcR01QICRleHBvbmVudCwgXEdNUCAkbW9kdWx1cykKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjppc1ByaW1lKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUHJpbWUoXEdNUCAkbikKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpuZXh0UHJpbWUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmV4dFByaW1lKFxHTVAgJGN1cnJlbnRQcmltZSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjppbnZlcnNlTW9kKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGludmVyc2VNb2QoXEdNUCAkYSwgXEdNUCAkbSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpqYWNvYmkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gamFjb2JpKFxHTVAgJGEsIFxHTVAgJHApCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnLAogICAgICAgICAgICApLAogICAgICAgICAgICAkZnVuYywKICAgICAgICAgICAgJGFyZ3MKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcR21wTWF0aEludGVyZmFjZTo6aW50VG9TdHJpbmcoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW50VG9TdHJpbmcoXEdNUCAkeCkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpzdHJpbmdUb0ludCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJpbmdUb0ludCgkcykKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpkaWdlc3RJbnRlZ2VyKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpZ2VzdEludGVnZXIoXEdNUCAkbSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpnY2QyKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdjZDIoXEdNUCAkYSwgXEdNUCAkbSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpyaWdodFNoaWZ0KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJpZ2h0U2hpZnQoXEdNUCAkbnVtYmVyLCAkcG9zaXRpb25zKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmxlZnRTaGlmdCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsZWZ0U2hpZnQoXEdNUCAkbnVtYmVyLCAkcG9zaXRpb25zKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJywKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmJpdHdpc2VYb3IoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYml0d2lzZVhvcihcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpiYXNlQ29udmVydCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiYXNlQ29udmVydCgkdmFsdWUsICRmcm9tQmFzZSwgJHRvQmFzZSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmdldEVjTWF0aCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFY01hdGgoR2VuZXJhdG9yUG9pbnQgJGdlbmVyYXRvclBvaW50LCAkaW5wdXQpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAkdGhpcywKICAgICAgICAgICAgJ2NhbGwnCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRmdW5jLAogICAgICAgICAgICAkYXJncwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xHbXBNYXRoSW50ZXJmYWNlOjpnZXRQcmltZUZpZWxkQXJpdGhtZXRpYygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZUZpZWxkQXJpdGhtZXRpYyhDdXJ2ZUZwSW50ZXJmYWNlICRjdXJ2ZSkKICAgIHsKICAgICAgICAkZnVuYyA9IF9fTUVUSE9EX187CiAgICAgICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuYygKICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICR0aGlzLAogICAgICAgICAgICAnY2FsbCcKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmdldE1vZHVsYXJBcml0aG1ldGljKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsYXJBcml0aG1ldGljKFxHTVAgJG1vZHVsdXMpCiAgICB7CiAgICAgICAgJGZ1bmMgPSBfX01FVEhPRF9fOwogICAgICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgICByZXR1cm4gY2FsbF91c2VyX2Z1bmMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICAgICAnY2FsbCcKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJGZ1bmMsCiAgICAgICAgICAgICRhcmdzCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgXE1kYW50ZXJcRWNjXEdtcE1hdGhJbnRlcmZhY2U6OmdldE51bWJlclRoZW9yeSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXROdW1iZXJUaGVvcnkoKQogICAgewogICAgICAgICRmdW5jID0gX19NRVRIT0RfXzsKICAgICAgICAkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgICAgcmV0dXJuIGNhbGxfdXNlcl9mdW5jKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgJHRoaXMsCiAgICAgICAgICAgICdjYWxsJwogICAgICAgICAgICApLAogICAgICAgICAgICAkZnVuYywKICAgICAgICAgICAgJGFyZ3MKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/GmpMath.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKdXNlIE1kYW50ZXJcRWNjXFV0aWxcQmluYXJ5U3RyaW5nOwoKY2xhc3MgR21wTWF0aCBpbXBsZW1lbnRzIEdtcE1hdGhJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmNtcCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbXAoXEdNUCAkZmlyc3QsIFxHTVAgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiBnbXBfY21wKCRmaXJzdCwgJG90aGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRmaXJzdAogICAgICogQHBhcmFtIFxHTVAgJG90aGVyCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9jbXAoJGZpcnN0LCAkb3RoZXIpID09PSAwOwogICAgfQogICAgCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6bW9kKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZChcR01QICRudW1iZXIsIFxHTVAgJG1vZHVsdXMpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9tb2QoJG51bWJlciwgJG1vZHVsdXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjphZGQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKFxHTVAgJGF1Z2VuZCwgXEdNUCAkYWRkZW5kKQogICAgewogICAgICAgIHJldHVybiBnbXBfYWRkKCRhdWdlbmQsICRhZGRlbmQpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpzdWIoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKFxHTVAgJG1pbnVlbmQsIFxHTVAgJHN1YnRyYWhlbmQpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zdWIoJG1pbnVlbmQsICRzdWJ0cmFoZW5kKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6bXVsKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChcR01QICRtdWx0aXBsaWVyLCBcR01QICRtdWx0aXBsaWNhbmQpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9tdWwoJG11bHRpcGxpZXIsICRtdWx0aXBsaWNhbmQpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpkaXYoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2KFxHTVAgJGRpdmlkZW5kLCBcR01QICRkaXZpc29yKQogICAgewogICAgICAgIHJldHVybiBnbXBfZGl2KCRkaXZpZGVuZCwgJGRpdmlzb3IpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpwb3coKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93KFxHTVAgJGJhc2UsICRleHBvbmVudCkKICAgIHsKICAgICAgICByZXR1cm4gZ21wX3BvdygkYmFzZSwgJGV4cG9uZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6Yml0d2lzZUFuZCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiaXR3aXNlQW5kKFxHTVAgJGZpcnN0LCBcR01QICRvdGhlcikKICAgIHsKICAgICAgICByZXR1cm4gZ21wX2FuZCgkZmlyc3QsICRvdGhlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OnJpZ2h0U2hpZnQoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmlnaHRTaGlmdChcR01QICRudW1iZXIsICRwb3NpdGlvbnMpCiAgICB7CiAgICAgICAgLy8gU2hpZnQgMSByaWdodCA9IGRpdiAvIDIKICAgICAgICByZXR1cm4gZ21wX2RpdigkbnVtYmVyLCBnbXBfcG93KGdtcF9pbml0KDIsIDEwKSwgJHBvc2l0aW9ucykpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpiaXR3aXNlWG9yKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJpdHdpc2VYb3IoXEdNUCAkZmlyc3QsIFxHTVAgJG90aGVyKQogICAgewogICAgICAgIHJldHVybiBnbXBfeG9yKCRmaXJzdCwgJG90aGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6bGVmdFNoaWZ0KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxlZnRTaGlmdChcR01QICRudW1iZXIsICRwb3NpdGlvbnMpCiAgICB7CiAgICAgICAgLy8gU2hpZnQgMSBsZWZ0ID0gbXVsIGJ5IDIKICAgICAgICByZXR1cm4gZ21wX211bCgkbnVtYmVyLCBnbXBfcG93KDIsICRwb3NpdGlvbnMpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6dG9TdHJpbmcoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoXEdNUCAkdmFsdWUpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zdHJ2YWwoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6aGV4RGVjKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhleERlYygkaGV4KQogICAgewogICAgICAgIHJldHVybiBnbXBfc3RydmFsKGdtcF9pbml0KCRoZXgsIDE2KSwgMTApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpkZWNIZXgoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjSGV4KCRkZWMpCiAgICB7CiAgICAgICAgJGRlYyA9IGdtcF9pbml0KCRkZWMsIDEwKTsKCiAgICAgICAgaWYgKGdtcF9jbXAoJGRlYywgMCkgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gY29udmVydCBuZWdhdGl2ZSBpbnRlZ2VyIHRvIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgJGhleCA9IGdtcF9zdHJ2YWwoJGRlYywgMTYpOwoKICAgICAgICBpZiAoQmluYXJ5U3RyaW5nOjpsZW5ndGgoJGhleCkgJSAyICE9IDApIHsKICAgICAgICAgICAgJGhleCA9ICcwJy4kaGV4OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoZXg7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OnBvd21vZCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3dtb2QoXEdNUCAkYmFzZSwgXEdNUCAkZXhwb25lbnQsIFxHTVAgJG1vZHVsdXMpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jbXAoJGV4cG9uZW50LCBnbXBfaW5pdCgwLCAxMCkpIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiTmVnYXRpdmUgZXhwb25lbnRzICgiIC4gJHRoaXMtPnRvU3RyaW5nKCRleHBvbmVudCkgLiAiKSBub3QgYWxsb3dlZC4iKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBnbXBfcG93bSgkYmFzZSwgJGV4cG9uZW50LCAkbW9kdWx1cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmlzUHJpbWUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcmltZShcR01QICRuKQogICAgewogICAgICAgICRwcm9iID0gZ21wX3Byb2JfcHJpbWUoJG4pOwoKICAgICAgICBpZiAoJHByb2IgPiAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpuZXh0UHJpbWUoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmV4dFByaW1lKFxHTVAgJHN0YXJ0aW5nX3ZhbHVlKQogICAgewogICAgICAgIHJldHVybiBnbXBfbmV4dHByaW1lKCRzdGFydGluZ192YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmludmVyc2VNb2QoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaW52ZXJzZU1vZChcR01QICRhLCBcR01QICRtKQogICAgewogICAgICAgIHJldHVybiBnbXBfaW52ZXJ0KCRhLCAkbSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmphY29iaSgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqYWNvYmkoXEdNUCAkYSwgXEdNUCAkbikKICAgIHsKICAgICAgICByZXR1cm4gZ21wX2phY29iaSgkYSwgJG4pOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjppbnRUb1N0cmluZygpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpbnRUb1N0cmluZyhcR01QICR4KQogICAgewogICAgICAgIGlmIChnbXBfY21wKCR4LCAwKSA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjb252ZXJ0IG5lZ2F0aXZlIGludGVnZXIgdG8gc3RyaW5nJyk7CiAgICAgICAgfQoKICAgICAgICAkaGV4ID0gZ21wX3N0cnZhbCgkeCwgMTYpOwoKICAgICAgICBpZiAoQmluYXJ5U3RyaW5nOjpsZW5ndGgoJGhleCkgJSAyICE9IDApIHsKICAgICAgICAgICAgJGhleCA9ICcwJy4kaGV4OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHBhY2soJ0gqJywgJGhleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OnN0cmluZ1RvSW50KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN0cmluZ1RvSW50KCRzKQogICAgewogICAgICAgICRyZXN1bHQgPSBnbXBfaW5pdCgwLCAxMCk7CiAgICAgICAgJHNMZW4gPSBCaW5hcnlTdHJpbmc6Omxlbmd0aCgkcyk7CgogICAgICAgIGZvciAoJGMgPSAwOyAkYyA8ICRzTGVuOyAkYyArKykgewogICAgICAgICAgICAkcmVzdWx0ID0gZ21wX2FkZChnbXBfbXVsKDI1NiwgJHJlc3VsdCksIGdtcF9pbml0KG9yZCgkc1skY10pLCAxMCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmRpZ2VzdEludGVnZXIoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlnZXN0SW50ZWdlcihcR01QICRtKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyaW5nVG9JbnQoaGFzaCgnc2hhMScsICR0aGlzLT5pbnRUb1N0cmluZygkbSksIHRydWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqIEBzZWUgR21wTWF0aEludGVyZmFjZTo6Z2NkMigpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnY2QyKFxHTVAgJGEsIFxHTVAgJGIpCiAgICB7CiAgICAgICAgd2hpbGUgKCR0aGlzLT5jbXAoJGEsIGdtcF9pbml0KDApKSA+IDApIHsKICAgICAgICAgICAgJHRlbXAgPSAkYTsKICAgICAgICAgICAgJGEgPSAkdGhpcy0+bW9kKCRiLCAkYSk7CiAgICAgICAgICAgICRiID0gJHRlbXA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIEdtcE1hdGhJbnRlcmZhY2U6OmJhc2VDb252ZXJ0KCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGJhc2VDb252ZXJ0KCRudW1iZXIsICRmcm9tLCAkdG8pCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zdHJ2YWwoZ21wX2luaXQoJG51bWJlciwgJGZyb20pLCAkdG8pOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBHbXBNYXRoSW50ZXJmYWNlOjpnZXROdW1iZXJUaGVvcnkoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtYmVyVGhlb3J5KCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IE51bWJlclRoZW9yeSgkdGhpcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEdNUCAkbW9kdWx1cwogICAgICogQHJldHVybiBNb2R1bGFyQXJpdGhtZXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kdWxhckFyaXRobWV0aWMoXEdNUCAkbW9kdWx1cykKICAgIHsKICAgICAgICByZXR1cm4gbmV3IE1vZHVsYXJBcml0aG1ldGljKCR0aGlzLCAkbW9kdWx1cyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/src/Math/GmpMathInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xNYXRoOwoKaW50ZXJmYWNlIEdtcE1hdGhJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDb21wYXJlcyB0d28gbnVtYmVycwogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkZmlyc3QKICAgICAqIEBwYXJhbSAgXEdNUCAkb3RoZXIKICAgICAqIEByZXR1cm4gaW50ICAgICAgICBsZXNzIHRoYW4gMCBpZiBmaXJzdCBpcyBsZXNzIHRoYW4gc2Vjb25kLCAwIGlmIGVxdWFsLCBncmVhdGVyIHRoYW4gMCBpZiBncmVhdGVyIHRoYW4uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbXAoXEdNUCAkZmlyc3QsIFxHTVAgJG90aGVyKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRmaXJzdAogICAgICogQHBhcmFtIFxHTVAgJG90aGVyCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpOwogICAgCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlbWFpbmRlciBvZiBhIGRpdmlzaW9uCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRudW1iZXIKICAgICAqIEBwYXJhbSAgXEdNUCAkbW9kdWx1cwogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2QoXEdNUCAkbnVtYmVyLCBcR01QICRtb2R1bHVzKTsKCiAgICAvKioKICAgICAqIEFkZHMgdHdvIG51bWJlcnMKICAgICAqCiAgICAgKiBAcGFyYW0gIFxHTVAgJGF1Z2VuZAogICAgICogQHBhcmFtICBcR01QICRhZGRlbmQKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKFxHTVAgJGF1Z2VuZCwgXEdNUCAkYWRkZW5kKTsKCiAgICAvKioKICAgICAqIFN1YnN0cmFjdCBvbmUgbnVtYmVyIGZyb20gYW5vdGhlcgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkbWludWVuZAogICAgICogQHBhcmFtICBcR01QICRzdWJ0cmFoZW5kCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YihcR01QICRtaW51ZW5kLCBcR01QICRzdWJ0cmFoZW5kKTsKCiAgICAvKioKICAgICAqIE11bHRpcGxpZXMgYSBudW1iZXIgYnkgYW5vdGhlci4KICAgICAqCiAgICAgKiBAcGFyYW0gIFxHTVAgJG11bHRpcGxpZXIKICAgICAqIEBwYXJhbSAgXEdNUCAkbXVsdGlwbGljYW5kCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChcR01QICRtdWx0aXBsaWVyLCBcR01QICRtdWx0aXBsaWNhbmQpOwoKICAgIC8qKgogICAgICogRGl2aWRlcyBhIG51bWJlciBieSBhbm90aGVyLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkZGl2aWRlbmQKICAgICAqIEBwYXJhbSAgXEdNUCAkZGl2aXNvcgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXYoXEdNUCAkZGl2aWRlbmQsIFxHTVAgJGRpdmlzb3IpOwoKICAgIC8qKgogICAgICogUmFpc2VzIGEgbnVtYmVyIHRvIGEgcG93ZXIuCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRiYXNlICAgICBUaGUgbnVtYmVyIHRvIHJhaXNlLgogICAgICogQHBhcmFtICBpbnQgJGV4cG9uZW50IFRoZSBwb3dlciB0byByYWlzZSB0aGUgbnVtYmVyIHRvLgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3coXEdNUCAkYmFzZSwgJGV4cG9uZW50KTsKCiAgICAvKioKICAgICAqIFBlcmZvcm1zIGEgbG9naWNhbCBBTkQgYmV0d2VlbiB0d28gdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkZmlyc3QKICAgICAqIEBwYXJhbSAgXEdNUCAkb3RoZXIKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYml0d2lzZUFuZChcR01QICRmaXJzdCwgXEdNUCAkb3RoZXIpOwoKICAgIC8qKgogICAgICogUGVyZm9ybXMgYSBsb2dpY2FsIFhPUiBiZXR3ZWVuIHR3byB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRmaXJzdAogICAgICogQHBhcmFtICBcR01QICRvdGhlcgogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiaXR3aXNlWG9yKFxHTVAgJGZpcnN0LCBcR01QICRvdGhlcik7CgogICAgLyoqCiAgICAgKiBTaGlmdHMgYml0cyB0byB0aGUgcmlnaHQKICAgICAqIEBwYXJhbSBcR01QICAgICAgICAkbnVtYmVyICAgIE51bWJlciB0byBzaGlmdAogICAgICogQHBhcmFtIGludCAgJHBvc2l0aW9ucyBOdW1iZXIgb2YgcG9zaXRpb25zIHRvIHNoaWZ0CiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJpZ2h0U2hpZnQoXEdNUCAkbnVtYmVyLCAkcG9zaXRpb25zKTsKCiAgICAvKioKICAgICAqIFNoaWZ0cyBiaXRzIHRvIHRoZSBsZWZ0CiAgICAgKiBAcGFyYW0gXEdNUCAgICAgICAkbnVtYmVyICAgIE51bWJlciB0byBzaGlmdAogICAgICogQHBhcmFtIGludCAkcG9zaXRpb25zIE51bWJlciBvZiBwb3NpdGlvbnMgdG8gc2hpZnQKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGVmdFNoaWZ0KFxHTVAgJG51bWJlciwgJHBvc2l0aW9ucyk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSByZXR1cm5lZCB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEdNUCAkdmFsdWUKICAgICAqIEByZXR1cm4gaW50fHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TdHJpbmcoXEdNUCAkdmFsdWUpOwoKICAgIC8qKgogICAgICogQ29udmVydHMgYW4gaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGRlY2ltYWwuCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgJGhleFN0cmluZwogICAgICogQHJldHVybiBpbnR8c3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoZXhEZWMoJGhleFN0cmluZyk7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIGRlY2ltYWwgc3RyaW5nIHRvIGhleGFkZWNpbWFsLgogICAgICoKICAgICAqIEBwYXJhbSAgaW50fHN0cmluZyAkZGVjU3RyaW5nCiAgICAgKiBAcmV0dXJuIGludHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY0hleCgkZGVjU3RyaW5nKTsKCiAgICAvKioKICAgICAqIENhbGN1bGF0ZXMgdGhlIG1vZHVsYXIgZXhwb25lbnQgb2YgYSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIFxHTVAgJGJhc2UKICAgICAqIEBwYXJhbSBcR01QICRleHBvbmVudAogICAgICogQHBhcmFtIFxHTVAgJG1vZHVsdXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvd21vZChcR01QICRiYXNlLCBcR01QICRleHBvbmVudCwgXEdNUCAkbW9kdWx1cyk7CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciBhIG51bWJlciBpcyBhIHByaW1lLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkbgogICAgICogQHJldHVybiBib29sZWFuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ByaW1lKFxHTVAgJG4pOwoKICAgIC8qKgogICAgICogR2V0cyB0aGUgbmV4dCBrbm93biBwcmltZSB0aGF0IGlzIGdyZWF0ZXIgdGhhbiBhIGdpdmVuIHByaW1lLgogICAgICoKICAgICAqIEBwYXJhbSAgXEdNUCAkY3VycmVudFByaW1lCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5leHRQcmltZShcR01QICRjdXJyZW50UHJpbWUpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJGEKICAgICAqIEBwYXJhbSBcR01QICRtCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGludmVyc2VNb2QoXEdNUCAkYSwgXEdNUCAkbSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEdNUCAkYQogICAgICogQHBhcmFtIFxHTVAgJHAKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqYWNvYmkoXEdNUCAkYSwgXEdNUCAkcCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIFxHTVAgJHgKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGludFRvU3RyaW5nKFxHTVAgJHgpOwoKICAgIC8qKgogICAgICoKICAgICAqIEBwYXJhbSAgaW50fHN0cmluZyAkcwogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJpbmdUb0ludCgkcyk7CgogICAgLyoqCiAgICAgKgogICAgICogQHBhcmFtICBcR01QICRtCiAgICAgKiBAcmV0dXJuIFxHTVAKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpZ2VzdEludGVnZXIoXEdNUCAkbSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIFxHTVAgJGEKICAgICAqIEBwYXJhbSAgXEdNUCAkbQogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnY2QyKFxHTVAgJGEsIFxHTVAgJG0pOwoKICAgIC8qKgogICAgICogQHBhcmFtICR2YWx1ZQogICAgICogQHBhcmFtICRmcm9tQmFzZQogICAgICogQHBhcmFtICR0b0Jhc2UKICAgICAqIEByZXR1cm4gaW50fHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYmFzZUNvbnZlcnQoJHZhbHVlLCAkZnJvbUJhc2UsICR0b0Jhc2UpOwoKICAgIC8qKgogICAgICogQHJldHVybiBOdW1iZXJUaGVvcnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE51bWJlclRoZW9yeSgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJG1vZHVsdXMKICAgICAqIEByZXR1cm4gTW9kdWxhckFyaXRobWV0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsYXJBcml0aG1ldGljKFxHTVAgJG1vZHVsdXMpOwp9Cg==]]></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+cG9seW5vbWlhbE11bHRpcGx5TW9kKCRHLCAkcywgJHBvbHltb2QsICRwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRzOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjYWxjdWxhdGUgcG9seW5vbWlhbFBvd01vZCcpOwoKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcR01QICRhCiAgICAgKiBAcGFyYW0gXEdNUCAkcAogICAgICogQHJldHVybiBcR01QCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzcXVhcmVSb290TW9kUChcR01QICRhLCBcR01QICRwKQogICAgewogICAgICAgICRtYXRoID0gJHRoaXMtPmFkYXB0ZXI7CiAgICAgICAgJHplcm8gPSBnbXBfaW5pdCgwLCAxMCk7CiAgICAgICAgJG9uZSA9IGdtcF9pbml0KDEsIDEwKTsKICAgICAgICAkdHdvID0gZ21wX2luaXQoMiwgMTApOwogICAgICAgICRmb3VyID0gZ21wX2luaXQoNCwgMTApOwogICAgICAgICRlaWdodCA9IGdtcF9pbml0KDgsIDEwKTsKCiAgICAgICAgJG1vZE1hdGggPSAkbWF0aC0+Z2V0TW9kdWxhckFyaXRobWV0aWMoJHApOwogICAgICAgIGlmICgkbWF0aC0+Y21wKCRvbmUsICRwKSA8IDApIHsKICAgICAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJGEsICR6ZXJvKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR6ZXJvOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJG1hdGgtPmVxdWFscygkcCwgJHR3bykpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGphYyA9ICRtYXRoLT5qYWNvYmkoJGEsICRwKTsKICAgICAgICAgICAgaWYgKCRqYWMgPT0gLTEpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJG1hdGgtPnRvU3RyaW5nKCRhKS4iIGhhcyBubyBzcXVhcmUgcm9vdCBtb2R1bG8gIi4kbWF0aC0+dG9TdHJpbmcoJHApKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJG1hdGgtPm1vZCgkcCwgJGZvdXIpLCBnbXBfaW5pdCgzLCAxMCkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJG1vZE1hdGgtPnBvdygkYSwgJG1hdGgtPmRpdigkbWF0aC0+YWRkKCRwLCAkb25lKSwgJGZvdXIpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJG1hdGgtPm1vZCgkcCwgJGVpZ2h0KSwgZ21wX2luaXQoNSwgMTApKSkgewogICAgICAgICAgICAgICAgJGQgPSAkbW9kTWF0aC0+cG93KCRhLCAkbWF0aC0+ZGl2KCRtYXRoLT5zdWIoJHAsICRvbmUpLCAkZm91cikpOwogICAgICAgICAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJGQsICRvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRtb2RNYXRoLT5wb3coJGEsICRtYXRoLT5kaXYoJG1hdGgtPmFkZCgkcCwgZ21wX2luaXQoMywgMTApKSwgJGVpZ2h0KSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJGQsICRtYXRoLT5zdWIoJHAsICRvbmUpKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkbW9kTWF0aC0+bXVsKAogICAgICAgICAgICAgICAgICAgICAgICAkbWF0aC0+bXVsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHR3bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICRtb2RNYXRoLT5wb3coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0aC0+bXVsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmb3VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGgtPmRpdigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWF0aC0+c3ViKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ21wX2luaXQoNSwgMTApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZWlnaHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvL3Nob3VsZG4ndCBnZXQgaGVyZQogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKCRiID0gZ21wX2luaXQoMiwgMTApOyAkbWF0aC0+Y21wKCRiLCAkcCkgPCAwOyAkYiA9IGdtcF9hZGQoJGIsIGdtcF9pbml0KDEsIDEwKSkpIHsKICAgICAgICAgICAgICAgIGlmICgkbWF0aC0+amFjb2JpKAogICAgICAgICAgICAgICAgICAgICRtYXRoLT5zdWIoCiAgICAgICAgICAgICAgICAgICAgICAgICRtYXRoLT5tdWwoJGIsICRiKSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGgtPm11bCgkZm91ciwgJGEpCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAkcAogICAgICAgICAgICAgICAgKSA9PSAtMQogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgJGYgPSBhcnJheSgkYSwgJG1hdGgtPnN1YigkemVybywgJGIpLCAkb25lKTsKCiAgICAgICAgICAgICAgICAgICAgJGZmID0gJHRoaXMtPnBvbHlub21pYWxQb3dNb2QoCiAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCR6ZXJvLCAkb25lKSwKICAgICAgICAgICAgICAgICAgICAgICAgJG1hdGgtPmRpdigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtYXRoLT5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0d28KICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICAgICAgJGYsCiAgICAgICAgICAgICAgICAgICAgICAgICRwCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCRtYXRoLT5lcXVhbHMoJGZmWzFdLCAkemVybykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRmZlswXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgZ290IGhlcmUgbm8gYiB3YXMgZm91bmQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjYWxjdWxhdGUgc3F1YXJlIHJvb3QgbW9kIHAhJyk7CgogICAgfQp9Cg==]]></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+Z2VuZXJhdGUoJHRoaXMtPmdldE9yZGVyKCkpOwoKICAgICAgICByZXR1cm4gbmV3IFByaXZhdGVLZXkoJHRoaXMtPmdldEFkYXB0ZXIoKSwgJHRoaXMsICRzZWNyZXQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJHgKICAgICAqIEBwYXJhbSBcR01QICR5CiAgICAgKiBAcGFyYW0gXEdNUCAkb3JkZXIKICAgICAqIEByZXR1cm4gUHVibGljS2V5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaWNLZXlGcm9tKFxHTVAgJHgsIFxHTVAgJHksIFxHTVAgJG9yZGVyID0gbnVsbCkKICAgIHsKICAgICAgICAkcHViUG9pbnQgPSAkdGhpcy0+Z2V0Q3VydmUoKS0+Z2V0UG9pbnQoJHgsICR5LCAkb3JkZXIpOwogICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5KCR0aGlzLT5nZXRBZGFwdGVyKCksICR0aGlzLCAkcHViUG9pbnQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxHTVAgJHNlY3JldE11bHRpcGxpZXIKICAgICAqIEByZXR1cm4gUHJpdmF0ZUtleQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJpdmF0ZUtleUZyb20oXEdNUCAkc2VjcmV0TXVsdGlwbGllcikKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFByaXZhdGVLZXkoJHRoaXMtPmdldEFkYXB0ZXIoKSwgJHRoaXMsICRzZWNyZXRNdWx0aXBsaWVyKTsKICAgIH0KfQo=]]></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+YmFzZUNvbnZlcnQoJHRoaXMtPmFkYXB0ZXItPnRvU3RyaW5nKCRuKSwgMTAsIDIpLCAkaywgJzAnLCBTVFJfUEFEX0xFRlQpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkazsgJGkrKykgewogICAgICAgICAgICAkaiA9ICRuWyRpXTsKCiAgICAgICAgICAgICR0aGlzLT5jc3dhcCgkclswXSwgJHJbMV0sICRqIF4gMSk7CgogICAgICAgICAgICAkclswXSA9ICRyWzBdLT5hZGQoJHJbMV0pOwogICAgICAgICAgICAkclsxXSA9ICRyWzFdLT5nZXREb3VibGUoKTsKCiAgICAgICAgICAgICR0aGlzLT5jc3dhcCgkclswXSwgJHJbMV0sICRqIF4gMSk7CiAgICAgICAgfQoKICAgICAgICAkclswXS0+dmFsaWRhdGUoKTsKCiAgICAgICAgcmV0dXJuICRyWzBdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFBvaW50ICRhCiAgICAgKiBAcGFyYW0gUG9pbnQgJGIKICAgICAqIEBwYXJhbSBpbnQgJGNvbmQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjc3dhcChzZWxmICRhLCBzZWxmICRiLCAkY29uZCkKICAgIHsKICAgICAgICAkdGhpcy0+Y3N3YXBWYWx1ZSgkYS0+eCwgJGItPngsICRjb25kKTsKICAgICAgICAkdGhpcy0+Y3N3YXBWYWx1ZSgkYS0+eSwgJGItPnksICRjb25kKTsKICAgICAgICAkdGhpcy0+Y3N3YXBWYWx1ZSgkYS0+b3JkZXIsICRiLT5vcmRlciwgJGNvbmQpOwogICAgICAgICR0aGlzLT5jc3dhcFZhbHVlKCRhLT5pbmZpbml0eSwgJGItPmluZmluaXR5LCAkY29uZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gJGEKICAgICAqIEBwYXJhbSAkYgogICAgICogQHBhcmFtICRjb25kCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjc3dhcFZhbHVlKCYgJGEsICYgJGIsICRjb25kKQogICAgewogICAgICAgICRpc0dNUCA9IGlzX29iamVjdCgkYSkgJiYgJGEgaW5zdGFuY2VvZiBcR01QOwoKICAgICAgICAkc2EgPSAkaXNHTVAgPyAkYSA6IGdtcF9pbml0KGludHZhbCgkYSksIDEwKTsKICAgICAgICAkc2IgPSAkaXNHTVAgPyAkYiA6IGdtcF9pbml0KGludHZhbCgkYiksIDEwKTsKICAgICAgICAkc2l6ZSA9IG1heChCaW5hcnlTdHJpbmc6Omxlbmd0aChnbXBfc3RydmFsKCRzYSwgMikpLCBCaW5hcnlTdHJpbmc6Omxlbmd0aChnbXBfc3RydmFsKCRzYiwgMikpKTsKCiAgICAgICAgJG1hc2sgPSAxIC0gaW50dmFsKCRjb25kKTsKICAgICAgICAkbWFzayA9IHN0cl9wYWQoJycsICRzaXplLCAkbWFzaywgU1RSX1BBRF9MRUZUKTsKICAgICAgICAkbWFzayA9IGdtcF9pbml0KCRtYXNrLCAyKTsKCiAgICAgICAgJHRhQSA9ICR0aGlzLT5hZGFwdGVyLT5iaXR3aXNlQW5kKCRzYSwgJG1hc2spOwogICAgICAgICR0YUIgPSAkdGhpcy0+YWRhcHRlci0+Yml0d2lzZUFuZCgkc2IsICRtYXNrKTsKCiAgICAgICAgJHNhID0gJHRoaXMtPmFkYXB0ZXItPmJpdHdpc2VYb3IoJHRoaXMtPmFkYXB0ZXItPmJpdHdpc2VYb3IoJHNhLCAkc2IpLCAkdGFCKTsKICAgICAgICAkc2IgPSAkdGhpcy0+YWRhcHRlci0+Yml0d2lzZVhvcigkdGhpcy0+YWRhcHRlci0+Yml0d2lzZVhvcigkc2EsICRzYiksICR0YUEpOwogICAgICAgICRzYSA9ICR0aGlzLT5hZGFwdGVyLT5iaXR3aXNlWG9yKCR0aGlzLT5hZGFwdGVyLT5iaXR3aXNlWG9yKCRzYSwgJHNiKSwgJHRhQik7CgogICAgICAgICRhID0gJGlzR01QID8gJHNhIDogKGJvb2wpIGdtcF9zdHJ2YWwoJHNhLCAxMCk7CiAgICAgICAgJGIgPSAkaXNHTVAgPyAkc2IgOiAoYm9vbCkgZ21wX3N0cnZhbCgkc2IsIDEwKTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGUoKQogICAgewogICAgICAgIGlmICghICR0aGlzLT5pbmZpbml0eSAmJiAhICR0aGlzLT5jdXJ2ZS0+Y29udGFpbnMoJHRoaXMtPngsICR0aGlzLT55KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgcG9pbnQnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKiBAc2VlIFxNZGFudGVyXEVjY1xQb2ludEludGVyZmFjZTo6Z2V0RG91YmxlKCkKICAgICAqIEByZXR1cm4gc2VsZgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RG91YmxlKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmlzSW5maW5pdHkoKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmN1cnZlLT5nZXRJbmZpbml0eSgpOwogICAgICAgIH0KCiAgICAgICAgJG1hdGggPSAkdGhpcy0+YWRhcHRlcjsKICAgICAgICAkbW9kTWF0aCA9ICR0aGlzLT5tb2RBZGFwdGVyOwoKICAgICAgICAkYSA9ICR0aGlzLT5jdXJ2ZS0+Z2V0QSgpOwogICAgICAgICR0aHJlZVgyID0gJG1hdGgtPm11bChnbXBfaW5pdCgzLCAxMCksICRtYXRoLT5wb3coJHRoaXMtPngsIDIpKTsKCiAgICAgICAgJHRhbmdlbnQgPSAkbW9kTWF0aC0+ZGl2KAogICAgICAgICAgICAkbWF0aC0+YWRkKCR0aHJlZVgyLCAkYSksCiAgICAgICAgICAgICRtYXRoLT5tdWwoZ21wX2luaXQoMiwgMTApLCAkdGhpcy0+eSkKICAgICAgICApOwoKICAgICAgICAkeDMgPSAkbW9kTWF0aC0+c3ViKAogICAgICAgICAgICAkbWF0aC0+cG93KCR0YW5nZW50LCAyKSwKICAgICAgICAgICAgJG1hdGgtPm11bChnbXBfaW5pdCgyLCAxMCksICR0aGlzLT54KQogICAgICAgICk7CgogICAgICAgICR5MyA9ICRtb2RNYXRoLT5zdWIoCiAgICAgICAgICAgICRtYXRoLT5tdWwoJHRhbmdlbnQsICRtYXRoLT5zdWIoJHRoaXMtPngsICR4MykpLAogICAgICAgICAgICAkdGhpcy0+eQogICAgICAgICk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Y3VydmUtPmdldFBvaW50KCR4MywgJHkzLCAkdGhpcy0+b3JkZXIpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICogQHNlZSBcTWRhbnRlclxFY2NcUG9pbnRJbnRlcmZhY2U6Ol9fdG9TdHJpbmcoKQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5pbmZpbml0eSkgewogICAgICAgICAgICByZXR1cm4gJ1sgKGluZmluaXR5KSBvbiAnIC4gKHN0cmluZykgJHRoaXMtPmN1cnZlIC4gJyBdJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAiWyAoIiAuICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkdGhpcy0+eCkgLiAiLCIgLiAkdGhpcy0+YWRhcHRlci0+dG9TdHJpbmcoJHRoaXMtPnkpIC4gJykgb24gJyAuIChzdHJpbmcpICR0aGlzLT5jdXJ2ZSAuICcgXSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2RlYnVnSW5mbygpCiAgICB7CiAgICAgICAgJGluZm8gPSBbCiAgICAgICAgICAgICd4JyA9PiAkdGhpcy0+YWRhcHRlci0+dG9TdHJpbmcoJHRoaXMtPngpLAogICAgICAgICAgICAneScgPT4gJHRoaXMtPmFkYXB0ZXItPnRvU3RyaW5nKCR0aGlzLT55KSwKICAgICAgICAgICAgJ3onID0+ICR0aGlzLT5hZGFwdGVyLT50b1N0cmluZygkdGhpcy0+b3JkZXIpLAogICAgICAgICAgICAnY3VydmUnID0+ICR0aGlzLT5jdXJ2ZQogICAgICAgIF07CgogICAgICAgIGlmICgkdGhpcy0+aW5maW5pdHkpIHsKICAgICAgICAgICAgJGluZm9bJ3gnXSA9ICdpbmYgKCcgLiAkaW5mb1sneCddIC4gJyknOwogICAgICAgICAgICAkaW5mb1sneSddID0gJ2luZiAoJyAuICRpbmZvWyd5J10gLiAnKSc7CiAgICAgICAgICAgICRpbmZvWyd6J10gPSAnaW5mICgnIC4gJGluZm9bJ3onXSAuICcpJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaW5mbzsKICAgIH0KfQo=]]></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[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFV0aWw7Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xOYW1lZEN1cnZlRnA7CnVzZSBNZGFudGVyXEVjY1xDdXJ2ZXNcQ3VydmVGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXE5pc3RDdXJ2ZTsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xTZWNnQ3VydmU7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnBJbnRlcmZhY2U7CgpjbGFzcyBDdXJ2ZU9pZE1hcHBlcgp7CgogICAgY29uc3QgTklTVF9QMTkyX09JRCA9ICcxLjIuODQwLjEwMDQ1LjMuMS4xJzsKCiAgICBjb25zdCBOSVNUX1AyMjRfT0lEID0gJzEuMy4xMzIuMC4zMyc7CgogICAgY29uc3QgTklTVF9QMjU2X09JRCA9ICcxLjIuODQwLjEwMDQ1LjMuMS43JzsKCiAgICBjb25zdCBOSVNUX1AzODRfT0lEID0gJzEuMy4xMzIuMC4zNCc7CgogICAgY29uc3QgTklTVF9QNTIxX09JRCA9ICcxLjMuMTMyLjAuMzUnOwoKICAgIGNvbnN0IFNFQ1BfMTEyUjFfT0lEID0gJzEuMy4xMzIuMC42JzsKCiAgICBjb25zdCBTRUNQXzI1NksxX09JRCA9ICcxLjMuMTMyLjAuMTAnOwoKICAgIGNvbnN0IFNFQ1BfMjU2UjFfT0lEID0gJzEuMi44NDAuMTAwNDUuMy4xLjcnOwoKICAgIGNvbnN0IFNFQ1BfMzg0UjFfT0lEID0gJzEuMy4xMzIuMC4zNCc7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRvaWRNYXAgPSBhcnJheSgKICAgICAgICBOaXN0Q3VydmU6Ok5BTUVfUDE5MiA9PiBzZWxmOjpOSVNUX1AxOTJfT0lELAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QMjI0ID0+IHNlbGY6Ok5JU1RfUDIyNF9PSUQsCiAgICAgICAgTmlzdEN1cnZlOjpOQU1FX1AyNTYgPT4gc2VsZjo6TklTVF9QMjU2X09JRCwKICAgICAgICBOaXN0Q3VydmU6Ok5BTUVfUDM4NCA9PiBzZWxmOjpOSVNUX1AzODRfT0lELAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QNTIxID0+IHNlbGY6Ok5JU1RfUDUyMV9PSUQsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTEyUjEgPT4gc2VsZjo6U0VDUF8xMTJSMV9PSUQsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2SzEgPT4gc2VsZjo6U0VDUF8yNTZLMV9PSUQsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2UjEgPT4gc2VsZjo6U0VDUF8yNTZSMV9PSUQsCiAgICAgICAgU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMzg0UjEgPT4gc2VsZjo6U0VDUF8zODRSMV9PSUQsCiAgICApOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkc2l6ZU1hcCA9IGFycmF5KAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QMTkyID0+IDI0LAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QMjI0ID0+IDI4LAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QMjU2ID0+IDMyLAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QMzg0ID0+IDQ4LAogICAgICAgIE5pc3RDdXJ2ZTo6TkFNRV9QNTIxID0+IDY2LAogICAgICAgIFNlY2dDdXJ2ZTo6TkFNRV9TRUNQXzExMlIxID0+IDE0LAogICAgICAgIFNlY2dDdXJ2ZTo6TkFNRV9TRUNQXzI1NksxID0+IDMyLAogICAgICAgIFNlY2dDdXJ2ZTo6TkFNRV9TRUNQXzI1NlIxID0+IDMyLAogICAgICAgIFNlY2dDdXJ2ZTo6TkFNRV9TRUNQXzM4NFIxID0+IDQ4LAogICAgKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXROYW1lcygpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleXMoc2VsZjo6JG9pZE1hcCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ3VydmVGcEludGVyZmFjZSAkY3VydmUKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRCeXRlU2l6ZShDdXJ2ZUZwSW50ZXJmYWNlICRjdXJ2ZSkKICAgIHsKICAgICAgICBpZiAoJGN1cnZlIGluc3RhbmNlb2YgTmFtZWRDdXJ2ZUZwICYmIGFycmF5X2tleV9leGlzdHMoJGN1cnZlLT5nZXROYW1lKCksIHNlbGY6OiRzaXplTWFwKSkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6JHNpemVNYXBbJGN1cnZlLT5nZXROYW1lKCldOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBjdXJ2ZSB0eXBlLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE5hbWVkQ3VydmVGcCAkY3VydmUKICAgICAqIEByZXR1cm4gT2JqZWN0SWRlbnRpZmllcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEN1cnZlT2lkKE5hbWVkQ3VydmVGcCAkY3VydmUpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGN1cnZlLT5nZXROYW1lKCksIHNlbGY6OiRvaWRNYXApKSB7CiAgICAgICAgICAgICRvaWRTdHJpbmcgPSBzZWxmOjokb2lkTWFwWyRjdXJ2ZS0+Z2V0TmFtZSgpXTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0SWRlbnRpZmllcigkb2lkU3RyaW5nKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgY3VydmUgdHlwZS4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBPYmplY3RJZGVudGlmaWVyICRvaWQKICAgICAqIEByZXR1cm4gXE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDdXJ2ZUZyb21PaWQoT2JqZWN0SWRlbnRpZmllciAkb2lkKQogICAgewogICAgICAgICRvaWRTdHJpbmcgPSAkb2lkLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGludmVydGVkTWFwID0gYXJyYXlfZmxpcChzZWxmOjokb2lkTWFwKTsKCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJG9pZFN0cmluZywgJGludmVydGVkTWFwKSkgewogICAgICAgICAgICByZXR1cm4gQ3VydmVGYWN0b3J5OjpnZXRDdXJ2ZUJ5TmFtZSgkaW52ZXJ0ZWRNYXBbJG9pZFN0cmluZ10pOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIGRhdGE6IHVuc3VwcG9ydGVkIGN1cnZlLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE9iamVjdElkZW50aWZpZXIgJG9pZAogICAgICogQHJldHVybiBcTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEdlbmVyYXRvckZyb21PaWQoT2JqZWN0SWRlbnRpZmllciAkb2lkKQogICAgewogICAgICAgICRvaWRTdHJpbmcgPSAkb2lkLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGludmVydGVkTWFwID0gYXJyYXlfZmxpcChzZWxmOjokb2lkTWFwKTsKCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJG9pZFN0cmluZywgJGludmVydGVkTWFwKSkgewogICAgICAgICAgICByZXR1cm4gQ3VydmVGYWN0b3J5OjpnZXRHZW5lcmF0b3JCeU5hbWUoJGludmVydGVkTWFwWyRvaWRTdHJpbmddKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBkYXRhOiB1bnN1cHBvcnRlZCBnZW5lcmF0b3IuJyk7CiAgICB9Cn0K]]></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[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xVdGlsOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKCmNsYXNzIE51bWJlclNpemUKewoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBcR01QICAgICAgICAgICAgICR4CiAgICAgKiBAcmV0dXJuIGZsb2F0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q2VpbGVkQnl0ZVNpemUoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciwgXEdNUCAkeCkKICAgIHsKICAgICAgICAkbG9nMiA9IDA7CiAgICAgICAgd2hpbGUgKCR4ID0gJGFkYXB0ZXItPnJpZ2h0U2hpZnQoJHgsIDEpKSB7CiAgICAgICAgICAgICRsb2cyKys7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gY2VpbCgkbG9nMiAvIDgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSBcR01QICAgICAgICAgICAgICR4CiAgICAgKiBAcmV0dXJuIGZsb2F0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Rmxvb3JlZEJ5dGVTaXplKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsIFxHTVAgJHgpCiAgICB7CiAgICAgICAgJGxvZzIgPSAwOwogICAgICAgIHdoaWxlICgkeCA9ICRhZGFwdGVyLT5yaWdodFNoaWZ0KCR4LCAxKSkgewogICAgICAgICAgICAkbG9nMisrOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZsb29yKCRsb2cyIC8gOCkgKyAxOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbmludW0gcmVxdWlyZWQgYnl0ZXMgdG8gc3RvcmUgYSBnaXZlbiBudW1iZXIuIE5vbi1zaWduaWZpY2FudCB1cHBlciBiaXRzIGFyZSBub3QgY291bnRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqIEBwYXJhbSAgXEdNUCAgICAgICAgICAgICAkeAogICAgICogQHJldHVybiBpbnRlZ2VyCiAgICAgKgogICAgICogQGxpbmsgaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvZG9jcy9jcnlwdG8vQk5fbnVtX2J5dGVzLmh0bWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBibk51bUJ5dGVzKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsIFxHTVAgJHgpCiAgICB7CiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2x1dml0L29wZW5zc2wvYmxvYi9tYXN0ZXIvb3BlbnNzbC9jcnlwdG8vYm4vYm4uaCNMNDAyCiAgICAgICAgcmV0dXJuIGZsb29yKChzZWxmOjpibk51bUJpdHMoJGFkYXB0ZXIsICR4KSArIDcpIC8gOCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyB1c2VkIHRvIHN0b3JlIHRoaXMgbnVtYmVyLiBOb24tc2luZ2ljYW50IHVwcGVyIGJpdHMgYXJlIG5vdCBjb3VudGVkLgogICAgICoKICAgICAqIEBwYXJhbSAgR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcgogICAgICogQHBhcmFtICBcR01QICAgICAgICAgICAgICR4CiAgICAgKiBAcmV0dXJuIG51bWJlcgogICAgICoKICAgICAqIEBsaW5rIGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvY3J5cHRvL0JOX251bV9ieXRlcy5odG1sCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYm5OdW1CaXRzKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIsIFxHTVAgJHgpCiAgICB7CiAgICAgICAgJHplcm8gPSBnbXBfaW5pdCgwLCAxMCk7CiAgICAgICAgaWYgKCRhZGFwdGVyLT5lcXVhbHMoJHgsICR6ZXJvKSkgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgICRsb2cyID0gMDsKICAgICAgICB3aGlsZSAoZmFsc2UgPT09ICRhZGFwdGVyLT5lcXVhbHMoJHgsICR6ZXJvKSkgewogICAgICAgICAgICAkeCA9ICRhZGFwdGVyLT5yaWdodFNoaWZ0KCR4LCAxKTsKICAgICAgICAgICAgJGxvZzIrKzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbG9nMiA7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/bootstrap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmZ1bmN0aW9uIGJ1aWxkUGF0aCgpCnsKICAgIHJldHVybiBpbXBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsIGZ1bmNfZ2V0X2FyZ3MoKSk7Cn0KCmdjX2Rpc2FibGUoKTsKCmRlZmluZSgnVEVTVF9EQVRBX0RJUicsIGJ1aWxkUGF0aChfX0RJUl9fLCAnZGF0YScpKTsKCmlmIChnZXRlbnYoJ01BVEhfTElCJykgPT09IGZhbHNlKSB7CiAgICBlY2hvICdNQVRIX0xJQiBlbnYgdmFyIGlzIG5vdCBkZWZpbmVkLCBkZWZhdWx0aW5nIHRvIEdNUCcuUEhQX0VPTDsKICAgIGRlZmluZSgnTUFUSF9MSUInLCAnZ21wJyk7Cn0gZWxzZSB7CiAgICBkZWZpbmUoJ01BVEhfTElCJywgZ2V0ZW52KCdNQVRIX0xJQicpKTsKfQoKaW5jbHVkZSBidWlsZFBhdGgoX19ESVJfXywgJy4uJywgJ3ZlbmRvcicsICdhdXRvbG9hZC5waHAnKTsKCiRyZXF1aXJlZE5lc3RpbmdMZXZlbCA9IDE1MDsKCmlmIChleHRlbnNpb25fbG9hZGVkKCd4ZGVidWcnKSkgewogICAgJGN1cnJlbnROZXN0aW5nTGV2ZWwgPSBpbnR2YWwoaW5pX2dldCgneGRlYnVnLm1heF9uZXN0aW5nX2xldmVsJykpOwoKICAgIGlmICgkY3VycmVudE5lc3RpbmdMZXZlbCA8ICRyZXF1aXJlZE5lc3RpbmdMZXZlbCkgewogICAgICAgIGZ3cml0ZShTVERFUlIsIDw8PFRFWFQKCn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CklNUE9SVEFOVCBOT1RJQ0U6Ckl0IHNlZW1zIGxpa2UgeW91IGhhdmUgdGhlIHhkZWJ1ZyBleHRlbnNpb24gbG9hZGVkLgpUbyB1c2UgcGhwZWNjIHlvdSBoYXZlIHRvIGluY3JlYXNlIHRoZSBtYXhpbXVtIG5lc3RpbmcgbGV2ZWwgZnJvbSAkY3VycmVudE5lc3RpbmdMZXZlbCB0byBhdCBsZWFzdCAkcmVxdWlyZWROZXN0aW5nTGV2ZWwKWW91IGNhbiBkbyB0aGlzIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIGxpbmUgdG8geW91ciBwaHAuaW5pOgoKeGRlYnVnLm1heF9uZXN0aW5nX2xldmVsID0gJHJlcXVpcmVkTmVzdGluZ0xldmVsCgpUaGUgdGVzdHMgd2lsbCBub3cgcnVuIHdpdGggdGhpcyBzZXR0aW5nLgp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgoKClRFWFQKICAgICAgICApOwogICAgICAgIGluaV9zZXQoJ3hkZWJ1Zy5tYXhfbmVzdGluZ19sZXZlbCcsICRyZXF1aXJlZE5lc3RpbmdMZXZlbCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/compression.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W3siZGVjb21wcmVzc2VkIjoiMDQ5ZDNlMjUwYTFjMzMyYmY0MGQyODFmZTQ5NjEzNzVmYWM4YmFmZDgxOWE1ODFkNjcxMDA3MjU5NzBhNzMwNGJiYWQzZmFmNDhjZWJhNzQxMjg4ZWM3NDZjOWI3NzcwMTFkNGRmMzYxODVkNWM0YzkzMDdmODdmOGEyMjEzOGIwMyIsCiJjb21wcmVzc2VkIjoiMDM5ZDNlMjUwYTFjMzMyYmY0MGQyODFmZTQ5NjEzNzVmYWM4YmFmZDgxOWE1ODFkNjcxMDA3MjU5NzBhNzMwNGJiIn0sCnsiZGVjb21wcmVzc2VkIjoiMDQ0Yjk3Nzk2MWM5Nzg3OTI3MWY5NDU3NjdjY2YyYzIxMTRmNjU3OTMxYmE0MDIwNDdiYWVlYzgxNjg3ZTI1YTJiYTdkMTc4YTAxNGEzMTk1YjgwMzZjNGNiOTI2N2QwN2Q0ODQxMDEyNzRlNzljM2EyNjgwNjI5M2ZiZjU5ZTA2ZCIsCiJjb21wcmVzc2VkIjoiMDM0Yjk3Nzk2MWM5Nzg3OTI3MWY5NDU3NjdjY2YyYzIxMTRmNjU3OTMxYmE0MDIwNDdiYWVlYzgxNjg3ZTI1YTJiIn0sCnsiZGVjb21wcmVzc2VkIjoiMDQ3NWZjNDVkMTliZjM0OWU4YjQzNzAzMDBjY2U3ZGU3ZWI4Njk5ZGY4YmQ0ZjI0NWNhNjA5ZDk5Yzk4M2RmZWI0OTA0YWZiNjU4NjZmNjkyNmU1MDVmYzhmMTNmZjAzNGJhZWQxMmM5ZTYwZTcwNmI1ODAwYjZjZDZkNGE5ZDlmOCIsCiJjb21wcmVzc2VkIjoiMDI3NWZjNDVkMTliZjM0OWU4YjQzNzAzMDBjY2U3ZGU3ZWI4Njk5ZGY4YmQ0ZjI0NWNhNjA5ZDk5Yzk4M2RmZWI0In0sCnsiZGVjb21wcmVzc2VkIjoiMDQ4YmZhNGQ0NGU0ZjBlNmEyMjYwMDdlNzYwODUzNWU1ZjAwNzY2ZDhhYTQ1MmQ0ODcyNGFlOGVmOTFkMmE2YmZhZGUxMGFmMDAyZTVkZTA5YTQ4Y2M3MDVkZGNjNjM5ZmU1MWVmMTY5NzI0Y2Q5ZjdhN2JkOGRkNDA1M2Q5ZWEzMiIsCiJjb21wcmVzc2VkIjoiMDI4YmZhNGQ0NGU0ZjBlNmEyMjYwMDdlNzYwODUzNWU1ZjAwNzY2ZDhhYTQ1MmQ0ODcyNGFlOGVmOTFkMmE2YmZhIn0sCnsiZGVjb21wcmVzc2VkIjoiMDQ4ZTE5MWMzYmQ3OWZhZTVhNTdmN2YwYjA4YzlhM2M5Yjg3NzU2NDZiMDNmN2UyZjllODUxYTU1MDg1OTVjM2VmYTQ2MDVjOWJmYzYzZTZjYWRlYTNhMjRkNWM2YzI1ZDE5MTk2OTAzY2FiYzU3ZWJjMmY1ODVmMjA5ODYyYzM4YiIsCiJjb21wcmVzc2VkIjoiMDM4ZTE5MWMzYmQ3OWZhZTVhNTdmN2YwYjA4YzlhM2M5Yjg3NzU2NDZiMDNmN2UyZjllODUxYTU1MDg1OTVjM2VmIn0sCnsiZGVjb21wcmVzc2VkIjoiMDRlZWVlMjU2MzhjYjcwNmI1OTVjNjA5YmU3OGFhOTBkOTJiYjIyNzVlMWUzNDdhYzU1YTg1YTRjODFjMGVjZDFjMzNkMzMzMTJmZDM2Yzc2NTEwNzg5ZjA1ZWI3ZmVmNWMwNTU2ZTA1NWJjZmM4MmI4NGJmMTg4NDU2ODAwYzcxNiIsCiJjb21wcmVzc2VkIjoiMDJlZWVlMjU2MzhjYjcwNmI1OTVjNjA5YmU3OGFhOTBkOTJiYjIyNzVlMWUzNDdhYzU1YTg1YTRjODFjMGVjZDFjIn0sCnsiZGVjb21wcmVzc2VkIjoiMDQ2Y2EyMWVmNTZmZTM3ZTYxOWU5YzI5MzA2Mjg3MDAyMjdlMDFlYzg5YjM0YjA4Mzk0MGZhY2M4NDI3MGQ2N2ExODBjMDg1ZDhkZGVhZmY3Njg1NTkzN2E5MGNmZTRkNzdlMTNhODkzZGFlZjI1ZmE3YzYyZTM3YjNjNzhkYTllZSIsCiJjb21wcmVzc2VkIjoiMDI2Y2EyMWVmNTZmZTM3ZTYxOWU5YzI5MzA2Mjg3MDAyMjdlMDFlYzg5YjM0YjA4Mzk0MGZhY2M4NDI3MGQ2N2ExIn0sCnsiZGVjb21wcmVzc2VkIjoiMDQyMjUzOTc5MGQxYTVmZTlhOTE4MTgyY2RmZGYzYTYzYTMwZmUxZmIzNzNhN2QzYzBkZjk0NzE4OWQ0ZTEwODRlMjE5OGQxMWQ1ZDFiNjRjM2QyMjEwNjUxOTFmNGMyNTU3N2MxZmEyYWZjZTBjMmJjMmFhNWEwY2I1MzYyMWRkNiIsCiJjb21wcmVzc2VkIjoiMDIyMjUzOTc5MGQxYTVmZTlhOTE4MTgyY2RmZGYzYTYzYTMwZmUxZmIzNzNhN2QzYzBkZjk0NzE4OWQ0ZTEwODRlIn1dCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/generated-keypair.pem</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSU9vWjBCNFJVTGhJSElKQnJ4WjRQbnlBQ0hjVERHTnM1YmZZM01UQjRNTW1vQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFVE9JTWVUaU1Bd2ZNNFh4ZUtNbGRYSXRJQ3JnREZuRHc2MDdxNlNRUGhlc1J5UGpTWC9McgpjN1ErVkdCaVNBcEhjbVZxQzdkRVZQZWlBTk90YVFIdzBBPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQotLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVUT0lNZVRpTUF3Zk00WHhlS01sZFhJdElDcmdECkZuRHc2MDdxNlNRUGhlc1J5UGpTWC9McmM3UStWR0JpU0FwSGNtVnFDN2RFVlBlaUFOT3RhUUh3MEE9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/openssl-priv.key</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUhjQ0FRRUVJTk5rV3BnYXp3Uk5ocUtlcW1ab3VXbmpKbXptRUNDb2dMVVVUL2hqVTFNQW9Bb0dDQ3FHU000OUF3RUhvVVFEUWdBRTVWTmpmUGZUTVFDQnFVMXJ3c3o0eWZmMk9GQXVpeU5Kc0R3eFpXYnJoRGVSSDBSTVBFY0E0TnFySHJTZzZkYXNrbmQxVjR2VDdXWWtVajdteDdhQmlnPT0=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/openssl-priv.pem</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IUUNBUUVFSU9aMGlvRUF4QWtBSC83Z25aWldJdlJlWGZlejlhaFhNcE93SHpkRWt2S2NvQWNHQlN1QkJBQUsKb1VRRFFnQUU4Ymp1QWMxdWNYQUEvTGJHOWkyRFNTRDhwZGdzemUzNFhQRCtkZElOcTNJUi9GN1RiTnZISmRZTAphbFBJTXFtMEdKdVZCK1VHZzVkdUIrOTIxeUhZUFE9PQotLS0tLUVORCBFQyBQUklWQVRFIEtFWS0tLS0t]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/openssl-pub.key</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFNVZOamZQZlRNUUNCcVUxcndzejR5ZmYyT0ZBdQppeU5Kc0R3eFpXYnJoRGVSSDBSTVBFY0E0TnFySHJTZzZkYXNrbmQxVjR2VDdXWWtVajdteDdhQmlnPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/openssl-pub.pem</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZZd0VBWUhLb1pJemowQ0FRWUZLNEVFQUFvRFFnQUU4Ymp1QWMxdWNYQUEvTGJHOWkyRFNTRDhwZGdzemUzNApYUEQrZGRJTnEzSVIvRjdUYk52SEpkWUxhbFBJTXFtMEdKdVZCK1VHZzVkdUIrOTIxeUhZUFE9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/primes.lst</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Mg0KMw0KNQ0KNw0KMTENCjEzDQoxNw0KMTkNCjIzDQoyOQ0KMzENCjM3DQo0MQ0KNDMNCjQ3DQo1Mw0KNTkNCjYxDQo2Nw0KNzENCjczDQo3OQ0KODMNCjg5DQo5Nw0KMTAxDQoxMDMNCjEwNw0KMTA5DQoxMTMNCjEyNw0KMTMxDQoxMzcNCjEzOQ0KMTQ5DQoxNTENCjE1Nw0KMTYzDQoxNjcNCjE3Mw0KMTc5DQoxODENCjE5MQ0KMTkzDQoxOTcNCjE5OQ0KMjExDQoyMjMNCjIyNw0KMjI5DQoyMzMNCjIzOQ0KMjQxDQoyNTENCjI1Nw0KMjYzDQoyNjkNCjI3MQ0KMjc3DQoyODENCjI4Mw0KMjkzDQozMDcNCjMxMQ0KMzEzDQozMTcNCjMzMQ0KMzM3DQozNDcNCjM0OQ0KMzUzDQozNTkNCjM2Nw0KMzczDQozNzkNCjM4Mw0KMzg5DQozOTcNCjQwMQ0KNDA5DQo0MTkNCjQyMQ0KNDMxDQo0MzMNCjQzOQ0KNDQzDQo0NDkNCjQ1Nw0KNDYxDQo0NjMNCjQ2Nw0KNDc5DQo0ODcNCjQ5MQ0KNDk5DQo1MDMNCjUwOQ0KNTIxDQo1MjMNCjU0MQ0KNTQ3DQo1NTcNCjU2Mw0KNTY5DQo1NzENCjU3Nw0KNTg3DQo1OTMNCjU5OQ0KNjAxDQo2MDcNCjYxMw0KNjE3DQo2MTkNCjYzMQ0KNjQxDQo2NDMNCjY0Nw0KNjUzDQo2NTkNCjY2MQ0KNjczDQo2NzcNCjY4Mw0KNjkxDQo3MDENCjcwOQ0KNzE5DQo3MjcNCjczMw0KNzM5DQo3NDMNCjc1MQ0KNzU3DQo3NjENCjc2OQ0KNzczDQo3ODcNCjc5Nw0KODA5DQo4MTENCjgyMQ0KODIzDQo4MjcNCjgyOQ0KODM5DQo4NTMNCjg1Nw0KODU5DQo4NjMNCjg3Nw0KODgxDQo4ODMNCjg4Nw0KOTA3DQo5MTENCjkxOQ0KOTI5DQo5MzcNCjk0MQ0KOTQ3DQo5NTMNCjk2Nw0KOTcxDQo5NzcNCjk4Mw0KOTkxDQo5OTcNCjEwMDkNCjEwMTMNCjEwMTkNCjEwMjENCjEwMzENCjEwMzMNCjEwMzkNCjEwNDkNCjEwNTENCjEwNjENCjEwNjMNCjEwNjkNCjEwODcNCjEwOTENCjEwOTMNCjEwOTcNCjExMDMNCjExMDkNCjExMTcNCjExMjMNCjExMjkNCjExNTENCjExNTMNCjExNjMNCjExNzENCjExODENCjExODcNCjExOTMNCjEyMDENCjEyMTMNCjEyMTcNCjEyMjMNCjEyMjkNCjEyMzENCjEyMzcNCjEyNDkNCjEyNTkNCjEyNzcNCjEyNzkNCjEyODMNCjEyODkNCjEyOTENCjEyOTcNCjEzMDENCjEzMDMNCjEzMDcNCjEzMTkNCjEzMjENCjEzMjcNCjEzNjENCjEzNjcNCjEzNzMNCjEzODENCjEzOTkNCjE0MDkNCjE0MjMNCjE0MjcNCjE0MjkNCjE0MzMNCjE0MzkNCjE0NDcNCjE0NTENCjE0NTMNCjE0NTkNCjE0NzENCjE0ODENCjE0ODMNCjE0ODcNCjE0ODkNCjE0OTMNCjE0OTkNCjE1MTENCjE1MjMNCjE1MzENCjE1NDMNCjE1NDkNCjE1NTMNCjE1NTkNCjE1NjcNCjE1NzENCjE1NzkNCjE1ODMNCjE1OTcNCjE2MDENCjE2MDcNCjE2MDkNCjE2MTMNCjE2MTkNCjE2MjENCjE2MjcNCjE2MzcNCjE2NTcNCjE2NjMNCjE2NjcNCjE2NjkNCjE2OTMNCjE2OTcNCjE2OTkNCjE3MDkNCjE3MjENCjE3MjMNCjE3MzMNCjE3NDENCjE3NDcNCjE3NTMNCjE3NTkNCjE3NzcNCjE3ODMNCjE3ODcNCjE3ODkNCjE4MDENCjE4MTENCjE4MjMNCjE4MzENCjE4NDcNCjE4NjENCjE4NjcNCjE4NzENCjE4NzMNCjE4NzcNCjE4NzkNCjE4ODkNCjE5MDENCjE5MDcNCjE5MTMNCjE5MzENCjE5MzMNCjE5NDkNCjE5NTENCjE5NzMNCjE5NzkNCjE5ODcNCjE5OTMNCjE5OTcNCjE5OTkNCjIwMDMNCjIwMTENCjIwMTcNCjIwMjcNCjIwMjkNCjIwMzkNCjIwNTMNCjIwNjMNCjIwNjkNCjIwODENCjIwODMNCjIwODcNCjIwODkNCjIwOTkNCjIxMTENCjIxMTMNCjIxMjkNCjIxMzENCjIxMzcNCjIxNDENCjIxNDMNCjIxNTMNCjIxNjENCjIxNzkNCjIyMDMNCjIyMDcNCjIyMTMNCjIyMjENCjIyMzcNCjIyMzkNCjIyNDMNCjIyNTENCjIyNjcNCjIyNjkNCjIyNzMNCjIyODENCjIyODcNCjIyOTMNCjIyOTcNCjIzMDkNCjIzMTENCjIzMzMNCjIzMzkNCjIzNDENCjIzNDcNCjIzNTENCjIzNTcNCjIzNzENCjIzNzcNCjIzODENCjIzODMNCjIzODkNCjIzOTMNCjIzOTkNCjI0MTENCjI0MTcNCjI0MjMNCjI0MzcNCjI0NDENCjI0NDcNCjI0NTkNCjI0NjcNCjI0NzMNCjI0NzcNCjI1MDMNCjI1MjENCjI1MzENCjI1MzkNCjI1NDMNCjI1NDkNCjI1NTENCjI1NTcNCjI1NzkNCjI1OTENCjI1OTMNCjI2MDkNCjI2MTcNCjI2MjENCjI2MzMNCjI2NDcNCjI2NTcNCjI2NTkNCjI2NjMNCjI2NzENCjI2NzcNCjI2ODMNCjI2ODcNCjI2ODkNCjI2OTMNCjI2OTkNCjI3MDcNCjI3MTENCjI3MTMNCjI3MTkNCjI3MjkNCjI3MzENCjI3NDENCjI3NDkNCjI3NTMNCjI3NjcNCjI3NzcNCjI3ODkNCjI3OTENCjI3OTcNCjI4MDENCjI4MDMNCjI4MTkNCjI4MzMNCjI4MzcNCjI4NDMNCjI4NTENCjI4NTcNCjI4NjENCjI4NzkNCjI4ODcNCjI4OTcNCjI5MDMNCjI5MDkNCjI5MTcNCjI5MjcNCjI5MzkNCjI5NTMNCjI5NTcNCjI5NjMNCjI5NjkNCjI5NzENCjI5OTkNCjMwMDENCjMwMTENCjMwMTkNCjMwMjMNCjMwMzcNCjMwNDENCjMwNDkNCjMwNjENCjMwNjcNCjMwNzkNCjMwODMNCjMwODkNCjMxMDkNCjMxMTkNCjMxMjENCjMxMzcNCjMxNjMNCjMxNjcNCjMxNjkNCjMxODENCjMxODcNCjMxOTENCjMyMDMNCjMyMDkNCjMyMTcNCjMyMjENCjMyMjkNCjMyNTENCjMyNTMNCjMyNTcNCjMyNTkNCjMyNzENCjMyOTkNCjMzMDENCjMzMDcNCjMzMTMNCjMzMTkNCjMzMjMNCjMzMjkNCjMzMzENCjMzNDMNCjMzNDcNCjMzNTkNCjMzNjENCjMzNzENCjMzNzMNCjMzODkNCjMzOTENCjM0MDcNCjM0MTMNCjM0MzMNCjM0NDkNCjM0NTcNCjM0NjENCjM0NjMNCjM0NjcNCjM0NjkNCjM0OTENCjM0OTkNCjM1MTENCjM1MTcNCjM1MjcNCjM1MjkNCjM1MzMNCjM1MzkNCjM1NDENCjM1NDcNCjM1NTcNCjM1NTkNCjM1NzENCjM1ODENCjM1ODMNCjM1OTMNCjM2MDcNCjM2MTMNCjM2MTcNCjM2MjMNCjM2MzENCjM2MzcNCjM2NDMNCjM2NTkNCjM2NzENCjM2NzMNCjM2NzcNCjM2OTENCjM2OTcNCjM3MDENCjM3MDkNCjM3MTkNCjM3MjcNCjM3MzMNCjM3MzkNCjM3NjENCjM3NjcNCjM3NjkNCjM3NzkNCjM3OTMNCjM3OTcNCjM4MDMNCjM4MjENCjM4MjMNCjM4MzMNCjM4NDcNCjM4NTENCjM4NTMNCjM4NjMNCjM4NzcNCjM4ODENCjM4ODkNCjM5MDcNCjM5MTENCjM5MTcNCjM5MTkNCjM5MjMNCjM5MjkNCjM5MzENCjM5NDMNCjM5NDcNCjM5NjcNCjM5ODkNCjQwMDENCjQwMDMNCjQwMDcNCjQwMTMNCjQwMTkNCjQwMjENCjQwMjcNCjQwNDkNCjQwNTENCjQwNTcNCjQwNzMNCjQwNzkNCjQwOTENCjQwOTMNCjQwOTkNCjQxMTENCjQxMjcNCjQxMjkNCjQxMzMNCjQxMzkNCjQxNTMNCjQxNTcNCjQxNTkNCjQxNzcNCjQyMDENCjQyMTENCjQyMTcNCjQyMTkNCjQyMjkNCjQyMzENCjQyNDENCjQyNDMNCjQyNTMNCjQyNTkNCjQyNjENCjQyNzENCjQyNzMNCjQyODMNCjQyODkNCjQyOTcNCjQzMjcNCjQzMzcNCjQzMzkNCjQzNDkNCjQzNTcNCjQzNjMNCjQzNzMNCjQzOTENCjQzOTcNCjQ0MDkNCjQ0MjENCjQ0MjMNCjQ0NDENCjQ0NDcNCjQ0NTENCjQ0NTcNCjQ0NjMNCjQ0ODENCjQ0ODMNCjQ0OTMNCjQ1MDcNCjQ1MTMNCjQ1MTcNCjQ1MTkNCjQ1MjMNCjQ1NDcNCjQ1NDkNCjQ1NjENCjQ1NjcNCjQ1ODMNCjQ1OTENCjQ1OTcNCjQ2MDMNCjQ2MjENCjQ2MzcNCjQ2MzkNCjQ2NDMNCjQ2NDkNCjQ2NTENCjQ2NTcNCjQ2NjMNCjQ2NzMNCjQ2NzkNCjQ2OTENCjQ3MDMNCjQ3MjENCjQ3MjMNCjQ3MjkNCjQ3MzMNCjQ3NTENCjQ3NTkNCjQ3ODMNCjQ3ODcNCjQ3ODkNCjQ3OTMNCjQ3OTkNCjQ4MDENCjQ4MTMNCjQ4MTcNCjQ4MzENCjQ4NjENCjQ4NzENCjQ4NzcNCjQ4ODkNCjQ5MDMNCjQ5MDkNCjQ5MTkNCjQ5MzENCjQ5MzMNCjQ5MzcNCjQ5NDMNCjQ5NTENCjQ5NTcNCjQ5NjcNCjQ5NjkNCjQ5NzMNCjQ5ODcNCjQ5OTMNCjQ5OTkNCjUwMDMNCjUwMDkNCjUwMTENCjUwMjENCjUwMjMNCjUwMzkNCjUwNTENCjUwNTkNCjUwNzcNCjUwODENCjUwODcNCjUwOTkNCjUxMDENCjUxMDcNCjUxMTMNCjUxMTkNCjUxNDcNCjUxNTMNCjUxNjcNCjUxNzENCjUxNzkNCjUxODkNCjUxOTcNCjUyMDkNCjUyMjcNCjUyMzENCjUyMzMNCjUyMzcNCjUyNjENCjUyNzMNCjUyNzkNCjUyODENCjUyOTcNCjUzMDMNCjUzMDkNCjUzMjMNCjUzMzMNCjUzNDcNCjUzNTENCjUzODENCjUzODcNCjUzOTMNCjUzOTkNCjU0MDcNCjU0MTMNCjU0MTcNCjU0MTkNCjU0MzENCjU0MzcNCjU0NDENCjU0NDMNCjU0NDkNCjU0NzENCjU0NzcNCjU0NzkNCjU0ODMNCjU1MDENCjU1MDMNCjU1MDcNCjU1MTkNCjU1MjENCjU1MjcNCjU1MzENCjU1NTcNCjU1NjMNCjU1NjkNCjU1NzMNCjU1ODENCjU1OTENCjU2MjMNCjU2MzkNCjU2NDENCjU2NDcNCjU2NTENCjU2NTMNCjU2NTcNCjU2NTkNCjU2NjkNCjU2ODMNCjU2ODkNCjU2OTMNCjU3MDENCjU3MTENCjU3MTcNCjU3MzcNCjU3NDENCjU3NDMNCjU3NDkNCjU3NzkNCjU3ODMNCjU3OTENCjU4MDENCjU4MDcNCjU4MTMNCjU4MjENCjU4MjcNCjU4MzkNCjU4NDMNCjU4NDkNCjU4NTENCjU4NTcNCjU4NjENCjU4NjcNCjU4NjkNCjU4NzkNCjU4ODENCjU4OTcNCjU5MDMNCjU5MjMNCjU5MjcNCjU5MzkNCjU5NTMNCjU5ODENCjU5ODcNCjYwMDcNCjYwMTENCjYwMjkNCjYwMzcNCjYwNDMNCjYwNDcNCjYwNTMNCjYwNjcNCjYwNzMNCjYwNzkNCjYwODkNCjYwOTENCjYxMDENCjYxMTMNCjYxMjENCjYxMzENCjYxMzMNCjYxNDMNCjYxNTENCjYxNjMNCjYxNzMNCjYxOTcNCjYxOTkNCjYyMDMNCjYyMTENCjYyMTcNCjYyMjENCjYyMjkNCjYyNDcNCjYyNTcNCjYyNjMNCjYyNjkNCjYyNzENCjYyNzcNCjYyODcNCjYyOTkNCjYzMDENCjYzMTENCjYzMTcNCjYzMjMNCjYzMjkNCjYzMzcNCjYzNDMNCjYzNTMNCjYzNTkNCjYzNjENCjYzNjcNCjYzNzMNCjYzNzkNCjYzODkNCjYzOTcNCjY0MjENCjY0MjcNCjY0NDkNCjY0NTENCjY0NjkNCjY0NzMNCjY0ODENCjY0OTENCjY1MjENCjY1MjkNCjY1NDcNCjY1NTENCjY1NTMNCjY1NjMNCjY1NjkNCjY1NzENCjY1NzcNCjY1ODENCjY1OTkNCjY2MDcNCjY2MTkNCjY2MzcNCjY2NTMNCjY2NTkNCjY2NjENCjY2NzMNCjY2NzkNCjY2ODkNCjY2OTENCjY3MDENCjY3MDMNCjY3MDkNCjY3MTkNCjY3MzMNCjY3MzcNCjY3NjENCjY3NjMNCjY3NzkNCjY3ODENCjY3OTENCjY3OTMNCjY4MDMNCjY4MjMNCjY4MjcNCjY4MjkNCjY4MzMNCjY4NDENCjY4NTcNCjY4NjMNCjY4NjkNCjY4NzENCjY4ODMNCjY4OTkNCjY5MDcNCjY5MTENCjY5MTcNCjY5NDcNCjY5NDkNCjY5NTkNCjY5NjENCjY5NjcNCjY5NzENCjY5NzcNCjY5ODMNCjY5OTENCjY5OTcNCjcwMDENCjcwMTMNCjcwMTkNCjcwMjcNCjcwMzkNCjcwNDMNCjcwNTcNCjcwNjkNCjcwNzkNCjcxMDMNCjcxMDkNCjcxMjENCjcxMjcNCjcxMjkNCjcxNTENCjcxNTkNCjcxNzcNCjcxODcNCjcxOTMNCjcyMDcNCjcyMTENCjcyMTMNCjcyMTkNCjcyMjkNCjcyMzcNCjcyNDMNCjcyNDcNCjcyNTMNCjcyODMNCjcyOTcNCjczMDcNCjczMDkNCjczMjENCjczMzENCjczMzMNCjczNDkNCjczNTENCjczNjkNCjczOTMNCjc0MTENCjc0MTcNCjc0MzMNCjc0NTENCjc0NTcNCjc0NTkNCjc0NzcNCjc0ODENCjc0ODcNCjc0ODkNCjc0OTkNCjc1MDcNCjc1MTcNCjc1MjMNCjc1MjkNCjc1MzcNCjc1NDENCjc1NDcNCjc1NDkNCjc1NTkNCjc1NjENCjc1NzMNCjc1NzcNCjc1ODMNCjc1ODkNCjc1OTENCjc2MDMNCjc2MDcNCjc2MjENCjc2MzkNCjc2NDMNCjc2NDkNCjc2NjkNCjc2NzMNCjc2ODENCjc2ODcNCjc2OTENCjc2OTkNCjc3MDMNCjc3MTcNCjc3MjMNCjc3MjcNCjc3NDENCjc3NTMNCjc3NTcNCjc3NTkNCjc3ODkNCjc3OTMNCjc4MTcNCjc4MjMNCjc4MjkNCjc4NDENCjc4NTMNCjc4NjcNCjc4NzMNCjc4NzcNCjc4NzkNCjc4ODMNCjc5MDENCjc5MDcNCjc5MTkNCjc5MjcNCjc5MzMNCjc5MzcNCjc5NDkNCjc5NTENCjc5NjMNCjc5OTMNCjgwMDkNCjgwMTENCjgwMTcNCjgwMzkNCjgwNTMNCjgwNTkNCjgwNjkNCjgwODENCjgwODcNCjgwODkNCjgwOTMNCjgxMDENCjgxMTENCjgxMTcNCjgxMjMNCjgxNDcNCjgxNjENCjgxNjcNCjgxNzENCjgxNzkNCjgxOTENCjgyMDkNCjgyMTkNCjgyMjENCjgyMzENCjgyMzMNCjgyMzcNCjgyNDMNCjgyNjMNCjgyNjkNCjgyNzMNCjgyODcNCjgyOTENCjgyOTMNCjgyOTcNCjgzMTENCjgzMTcNCjgzMjkNCjgzNTMNCjgzNjMNCjgzNjkNCjgzNzcNCjgzODcNCjgzODkNCjg0MTkNCjg0MjMNCjg0MjkNCjg0MzENCjg0NDMNCjg0NDcNCjg0NjENCjg0NjcNCjg1MDENCjg1MTMNCjg1MjENCjg1MjcNCjg1MzcNCjg1MzkNCjg1NDMNCjg1NjMNCjg1NzMNCjg1ODENCjg1OTcNCjg1OTkNCjg2MDkNCjg2MjMNCjg2MjcNCjg2MjkNCjg2NDENCjg2NDcNCjg2NjMNCjg2NjkNCjg2NzcNCjg2ODENCjg2ODkNCjg2OTMNCjg2OTkNCjg3MDcNCjg3MTMNCjg3MTkNCjg3MzENCjg3MzcNCjg3NDENCjg3NDcNCjg3NTMNCjg3NjENCjg3NzkNCjg3ODMNCjg4MDMNCjg4MDcNCjg4MTkNCjg4MjENCjg4MzENCjg4MzcNCjg4MzkNCjg4NDkNCjg4NjENCjg4NjMNCjg4NjcNCjg4ODcNCjg4OTMNCjg5MjMNCjg5MjkNCjg5MzMNCjg5NDENCjg5NTENCjg5NjMNCjg5NjkNCjg5NzENCjg5OTkNCjkwMDENCjkwMDcNCjkwMTENCjkwMTMNCjkwMjkNCjkwNDENCjkwNDMNCjkwNDkNCjkwNTkNCjkwNjcNCjkwOTENCjkxMDMNCjkxMDkNCjkxMjcNCjkxMzMNCjkxMzcNCjkxNTENCjkxNTcNCjkxNjENCjkxNzMNCjkxODENCjkxODcNCjkxOTkNCjkyMDMNCjkyMDkNCjkyMjENCjkyMjcNCjkyMzkNCjkyNDENCjkyNTcNCjkyNzcNCjkyODENCjkyODMNCjkyOTMNCjkzMTENCjkzMTkNCjkzMjMNCjkzMzcNCjkzNDENCjkzNDMNCjkzNDkNCjkzNzENCjkzNzcNCjkzOTENCjkzOTcNCjk0MDMNCjk0MTMNCjk0MTkNCjk0MjENCjk0MzENCjk0MzMNCjk0MzcNCjk0MzkNCjk0NjENCjk0NjMNCjk0NjcNCjk0NzMNCjk0NzkNCjk0OTENCjk0OTcNCjk1MTENCjk1MjENCjk1MzMNCjk1MzkNCjk1NDcNCjk1NTENCjk1ODcNCjk2MDENCjk2MTMNCjk2MTkNCjk2MjMNCjk2MjkNCjk2MzENCjk2NDMNCjk2NDkNCjk2NjENCjk2NzcNCjk2NzkNCjk2ODkNCjk2OTcNCjk3MTkNCjk3MjENCjk3MzMNCjk3MzkNCjk3NDMNCjk3NDkNCjk3NjcNCjk3NjkNCjk3ODENCjk3ODcNCjk3OTENCjk4MDMNCjk4MTENCjk4MTcNCjk4MjkNCjk4MzMNCjk4MzkNCjk4NTENCjk4NTcNCjk4NTkNCjk4NzENCjk4ODMNCjk4ODcNCjk5MDENCjk5MDcNCjk5MjMNCjk5MjkNCjk5MzENCjk5NDENCjk5NDkNCjk5NjcNCjk5NzMNCjEwMDA3DQoxMDAwOQ0KMTAwMzcNCjEwMDM5DQoxMDA2MQ0KMTAwNjcNCjEwMDY5DQoxMDA3OQ0KMTAwOTENCjEwMDkzDQoxMDA5OQ0KMTAxMDMNCjEwMTExDQoxMDEzMw0KMTAxMzkNCjEwMTQxDQoxMDE1MQ0KMTAxNTkNCjEwMTYzDQoxMDE2OQ0KMTAxNzcNCjEwMTgxDQoxMDE5Mw0KMTAyMTENCjEwMjIzDQoxMDI0Mw0KMTAyNDcNCjEwMjUzDQoxMDI1OQ0KMTAyNjcNCjEwMjcxDQoxMDI3Mw0KMTAyODkNCjEwMzAxDQoxMDMwMw0KMTAzMTMNCjEwMzIxDQoxMDMzMQ0KMTAzMzMNCjEwMzM3DQoxMDM0Mw0KMTAzNTcNCjEwMzY5DQoxMDM5MQ0KMTAzOTkNCjEwNDI3DQoxMDQyOQ0KMTA0MzMNCjEwNDUzDQoxMDQ1Nw0KMTA0NTkNCjEwNDYzDQoxMDQ3Nw0KMTA0ODcNCjEwNDk5DQoxMDUwMQ0KMTA1MTMNCjEwNTI5DQoxMDUzMQ0KMTA1NTkNCjEwNTY3DQoxMDU4OQ0KMTA1OTcNCjEwNjAxDQoxMDYwNw0KMTA2MTMNCjEwNjI3DQoxMDYzMQ0KMTA2MzkNCjEwNjUxDQoxMDY1Nw0KMTA2NjMNCjEwNjY3DQoxMDY4Nw0KMTA2OTENCjEwNzA5DQoxMDcxMQ0KMTA3MjMNCjEwNzI5DQoxMDczMw0KMTA3MzkNCjEwNzUzDQoxMDc3MQ0KMTA3ODENCjEwNzg5DQoxMDc5OQ0KMTA4MzENCjEwODM3DQoxMDg0Nw0KMTA4NTMNCjEwODU5DQoxMDg2MQ0KMTA4NjcNCjEwODgzDQoxMDg4OQ0KMTA4OTENCjEwOTAzDQoxMDkwOQ0KMTA5MzcNCjEwOTM5DQoxMDk0OQ0KMTA5NTcNCjEwOTczDQoxMDk3OQ0KMTA5ODcNCjEwOTkzDQoxMTAwMw0KMTEwMjcNCjExMDQ3DQoxMTA1Nw0KMTEwNTkNCjExMDY5DQoxMTA3MQ0KMTEwODMNCjExMDg3DQoxMTA5Mw0KMTExMTMNCjExMTE3DQoxMTExOQ0KMTExMzENCjExMTQ5DQoxMTE1OQ0KMTExNjENCjExMTcxDQoxMTE3Mw0KMTExNzcNCjExMTk3DQoxMTIxMw0KMTEyMzkNCjExMjQzDQoxMTI1MQ0KMTEyNTcNCjExMjYxDQoxMTI3Mw0KMTEyNzkNCjExMjg3DQoxMTI5OQ0KMTEzMTENCjExMzE3DQoxMTMyMQ0KMTEzMjkNCjExMzUxDQoxMTM1Mw0KMTEzNjkNCjExMzgzDQoxMTM5Mw0KMTEzOTkNCjExNDExDQoxMTQyMw0KMTE0MzcNCjExNDQzDQoxMTQ0Nw0KMTE0NjcNCjExNDcxDQoxMTQ4Mw0KMTE0ODkNCjExNDkxDQoxMTQ5Nw0KMTE1MDMNCjExNTE5DQoxMTUyNw0KMTE1NDkNCjExNTUxDQoxMTU3OQ0KMTE1ODcNCjExNTkzDQoxMTU5Nw0KMTE2MTcNCjExNjIxDQoxMTYzMw0KMTE2NTcNCjExNjc3DQoxMTY4MQ0KMTE2ODkNCjExNjk5DQoxMTcwMQ0KMTE3MTcNCjExNzE5DQoxMTczMQ0KMTE3NDMNCjExNzc3DQoxMTc3OQ0KMTE3ODMNCjExNzg5DQoxMTgwMQ0KMTE4MDcNCjExODEzDQoxMTgyMQ0KMTE4MjcNCjExODMxDQoxMTgzMw0KMTE4MzkNCjExODYzDQoxMTg2Nw0KMTE4ODcNCjExODk3DQoxMTkwMw0KMTE5MDkNCjExOTIzDQoxMTkyNw0KMTE5MzMNCjExOTM5DQoxMTk0MQ0KMTE5NTMNCjExOTU5DQoxMTk2OQ0KMTE5NzENCjExOTgxDQoxMTk4Nw0KMTIwMDcNCjEyMDExDQoxMjAzNw0KMTIwNDENCjEyMDQzDQoxMjA0OQ0KMTIwNzENCjEyMDczDQoxMjA5Nw0KMTIxMDENCjEyMTA3DQoxMjEwOQ0KMTIxMTMNCjEyMTE5DQoxMjE0Mw0KMTIxNDkNCjEyMTU3DQoxMjE2MQ0KMTIxNjMNCjEyMTk3DQoxMjIwMw0KMTIyMTENCjEyMjI3DQoxMjIzOQ0KMTIyNDENCjEyMjUxDQoxMjI1Mw0KMTIyNjMNCjEyMjY5DQoxMjI3Nw0KMTIyODENCjEyMjg5DQoxMjMwMQ0KMTIzMjMNCjEyMzI5DQoxMjM0Mw0KMTIzNDcNCjEyMzczDQoxMjM3Nw0KMTIzNzkNCjEyMzkxDQoxMjQwMQ0KMTI0MDkNCjEyNDEzDQoxMjQyMQ0KMTI0MzMNCjEyNDM3DQoxMjQ1MQ0KMTI0NTcNCjEyNDczDQoxMjQ3OQ0KMTI0ODcNCjEyNDkxDQoxMjQ5Nw0KMTI1MDMNCjEyNTExDQoxMjUxNw0KMTI1MjcNCjEyNTM5DQoxMjU0MQ0KMTI1NDcNCjEyNTUzDQoxMjU2OQ0KMTI1NzcNCjEyNTgzDQoxMjU4OQ0KMTI2MDENCjEyNjExDQoxMjYxMw0KMTI2MTkNCjEyNjM3DQoxMjY0MQ0KMTI2NDcNCjEyNjUzDQoxMjY1OQ0KMTI2NzENCjEyNjg5DQoxMjY5Nw0KMTI3MDMNCjEyNzEzDQoxMjcyMQ0KMTI3MzkNCjEyNzQzDQoxMjc1Nw0KMTI3NjMNCjEyNzgxDQoxMjc5MQ0KMTI3OTkNCjEyODA5DQoxMjgyMQ0KMTI4MjMNCjEyODI5DQoxMjg0MQ0KMTI4NTMNCjEyODg5DQoxMjg5Mw0KMTI4OTkNCjEyOTA3DQoxMjkxMQ0KMTI5MTcNCjEyOTE5DQoxMjkyMw0KMTI5NDENCjEyOTUzDQoxMjk1OQ0KMTI5NjcNCjEyOTczDQoxMjk3OQ0KMTI5ODMNCjEzMDAxDQoxMzAwMw0KMTMwMDcNCjEzMDA5DQoxMzAzMw0KMTMwMzcNCjEzMDQzDQoxMzA0OQ0KMTMwNjMNCjEzMDkzDQoxMzA5OQ0KMTMxMDMNCjEzMTA5DQoxMzEyMQ0KMTMxMjcNCjEzMTQ3DQoxMzE1MQ0KMTMxNTkNCjEzMTYzDQoxMzE3MQ0KMTMxNzcNCjEzMTgzDQoxMzE4Nw0KMTMyMTcNCjEzMjE5DQoxMzIyOQ0KMTMyNDENCjEzMjQ5DQoxMzI1OQ0KMTMyNjcNCjEzMjkxDQoxMzI5Nw0KMTMzMDkNCjEzMzEzDQoxMzMyNw0KMTMzMzENCjEzMzM3DQoxMzMzOQ0KMTMzNjcNCjEzMzgxDQoxMzM5Nw0KMTMzOTkNCjEzNDExDQoxMzQxNw0KMTM0MjENCjEzNDQxDQoxMzQ1MQ0KMTM0NTcNCjEzNDYzDQoxMzQ2OQ0KMTM0NzcNCjEzNDg3DQoxMzQ5OQ0KMTM1MTMNCjEzNTIzDQoxMzUzNw0KMTM1NTMNCjEzNTY3DQoxMzU3Nw0KMTM1OTENCjEzNTk3DQoxMzYxMw0KMTM2MTkNCjEzNjI3DQoxMzYzMw0KMTM2NDkNCjEzNjY5DQoxMzY3OQ0KMTM2ODENCjEzNjg3DQoxMzY5MQ0KMTM2OTMNCjEzNjk3DQoxMzcwOQ0KMTM3MTENCjEzNzIxDQoxMzcyMw0KMTM3MjkNCjEzNzUxDQoxMzc1Nw0KMTM3NTkNCjEzNzYzDQoxMzc4MQ0KMTM3ODkNCjEzNzk5DQoxMzgwNw0KMTM4MjkNCjEzODMxDQoxMzg0MQ0KMTM4NTkNCjEzODczDQoxMzg3Nw0KMTM4NzkNCjEzODgzDQoxMzkwMQ0KMTM5MDMNCjEzOTA3DQoxMzkxMw0KMTM5MjENCjEzOTMxDQoxMzkzMw0KMTM5NjMNCjEzOTY3DQoxMzk5Nw0KMTM5OTkNCjE0MDA5DQoxNDAxMQ0KMTQwMjkNCjE0MDMzDQoxNDA1MQ0KMTQwNTcNCjE0MDcxDQoxNDA4MQ0KMTQwODMNCjE0MDg3DQoxNDEwNw0KMTQxNDMNCjE0MTQ5DQoxNDE1Mw0KMTQxNTkNCjE0MTczDQoxNDE3Nw0KMTQxOTcNCjE0MjA3DQoxNDIyMQ0KMTQyNDMNCjE0MjQ5DQoxNDI1MQ0KMTQyODENCjE0MjkzDQoxNDMwMw0KMTQzMjENCjE0MzIzDQoxNDMyNw0KMTQzNDENCjE0MzQ3DQoxNDM2OQ0KMTQzODcNCjE0Mzg5DQoxNDQwMQ0KMTQ0MDcNCjE0NDExDQoxNDQxOQ0KMTQ0MjMNCjE0NDMxDQoxNDQzNw0KMTQ0NDcNCjE0NDQ5DQoxNDQ2MQ0KMTQ0NzkNCjE0NDg5DQoxNDUwMw0KMTQ1MTkNCjE0NTMzDQoxNDUzNw0KMTQ1NDMNCjE0NTQ5DQoxNDU1MQ0KMTQ1NTcNCjE0NTYxDQoxNDU2Mw0KMTQ1OTENCjE0NTkzDQoxNDYyMQ0KMTQ2MjcNCjE0NjI5DQoxNDYzMw0KMTQ2MzkNCjE0NjUzDQoxNDY1Nw0KMTQ2NjkNCjE0NjgzDQoxNDY5OQ0KMTQ3MTMNCjE0NzE3DQoxNDcyMw0KMTQ3MzENCjE0NzM3DQoxNDc0MQ0KMTQ3NDcNCjE0NzUzDQoxNDc1OQ0KMTQ3NjcNCjE0NzcxDQoxNDc3OQ0KMTQ3ODMNCjE0Nzk3DQoxNDgxMw0KMTQ4MjENCjE0ODI3DQoxNDgzMQ0KMTQ4NDMNCjE0ODUxDQoxNDg2Nw0KMTQ4NjkNCjE0ODc5DQoxNDg4Nw0KMTQ4OTENCjE0ODk3DQoxNDkyMw0KMTQ5MjkNCjE0OTM5DQoxNDk0Nw0KMTQ5NTENCjE0OTU3DQoxNDk2OQ0KMTQ5ODMNCjE1MDEzDQoxNTAxNw0KMTUwMzENCjE1MDUzDQoxNTA2MQ0KMTUwNzMNCjE1MDc3DQoxNTA4Mw0KMTUwOTENCjE1MTAxDQoxNTEwNw0KMTUxMjENCjE1MTMxDQoxNTEzNw0KMTUxMzkNCjE1MTQ5DQoxNTE2MQ0KMTUxNzMNCjE1MTg3DQoxNTE5Mw0KMTUxOTkNCjE1MjE3DQoxNTIyNw0KMTUyMzMNCjE1MjQxDQoxNTI1OQ0KMTUyNjMNCjE1MjY5DQoxNTI3MQ0KMTUyNzcNCjE1Mjg3DQoxNTI4OQ0KMTUyOTkNCjE1MzA3DQoxNTMxMw0KMTUzMTkNCjE1MzI5DQoxNTMzMQ0KMTUzNDkNCjE1MzU5DQoxNTM2MQ0KMTUzNzMNCjE1Mzc3DQoxNTM4Mw0KMTUzOTENCjE1NDAxDQoxNTQxMw0KMTU0MjcNCjE1NDM5DQoxNTQ0Mw0KMTU0NTENCjE1NDYxDQoxNTQ2Nw0KMTU0NzMNCjE1NDkzDQoxNTQ5Nw0KMTU1MTENCjE1NTI3DQoxNTU0MQ0KMTU1NTENCjE1NTU5DQoxNTU2OQ0KMTU1ODENCjE1NTgzDQoxNTYwMQ0KMTU2MDcNCjE1NjE5DQoxNTYyOQ0KMTU2NDENCjE1NjQzDQoxNTY0Nw0KMTU2NDkNCjE1NjYxDQoxNTY2Nw0KMTU2NzENCjE1Njc5DQoxNTY4Mw0KMTU3MjcNCjE1NzMxDQoxNTczMw0KMTU3MzcNCjE1NzM5DQoxNTc0OQ0KMTU3NjENCjE1NzY3DQoxNTc3Mw0KMTU3ODcNCjE1NzkxDQoxNTc5Nw0KMTU4MDMNCjE1ODA5DQoxNTgxNw0KMTU4MjMNCjE1ODU5DQoxNTg3Nw0KMTU4ODENCjE1ODg3DQoxNTg4OQ0KMTU5MDENCjE1OTA3DQoxNTkxMw0KMTU5MTkNCjE1OTIzDQoxNTkzNw0KMTU5NTkNCjE1OTcxDQoxNTk3Mw0KMTU5OTENCjE2MDAxDQoxNjAwNw0KMTYwMzMNCjE2MDU3DQoxNjA2MQ0KMTYwNjMNCjE2MDY3DQoxNjA2OQ0KMTYwNzMNCjE2MDg3DQoxNjA5MQ0KMTYwOTcNCjE2MTAzDQoxNjExMQ0KMTYxMjcNCjE2MTM5DQoxNjE0MQ0KMTYxODMNCjE2MTg3DQoxNjE4OQ0KMTYxOTMNCjE2MjE3DQoxNjIyMw0KMTYyMjkNCjE2MjMxDQoxNjI0OQ0KMTYyNTMNCjE2MjY3DQoxNjI3Mw0KMTYzMDENCjE2MzE5DQoxNjMzMw0KMTYzMzkNCjE2MzQ5DQoxNjM2MQ0KMTYzNjMNCjE2MzY5DQoxNjM4MQ0KMTY0MTENCjE2NDE3DQoxNjQyMQ0KMTY0MjcNCjE2NDMzDQoxNjQ0Nw0KMTY0NTENCjE2NDUzDQoxNjQ3Nw0KMTY0ODENCjE2NDg3DQoxNjQ5Mw0KMTY1MTkNCjE2NTI5DQoxNjU0Nw0KMTY1NTMNCjE2NTYxDQoxNjU2Nw0KMTY1NzMNCjE2NjAzDQoxNjYwNw0KMTY2MTkNCjE2NjMxDQoxNjYzMw0KMTY2NDkNCjE2NjUxDQoxNjY1Nw0KMTY2NjENCjE2NjczDQoxNjY5MQ0KMTY2OTMNCjE2Njk5DQoxNjcwMw0KMTY3MjkNCjE2NzQxDQoxNjc0Nw0KMTY3NTkNCjE2NzYzDQoxNjc4Nw0KMTY4MTENCjE2ODIzDQoxNjgyOQ0KMTY4MzENCjE2ODQzDQoxNjg3MQ0KMTY4NzkNCjE2ODgzDQoxNjg4OQ0KMTY5MDENCjE2OTAzDQoxNjkyMQ0KMTY5MjcNCjE2OTMxDQoxNjkzNw0KMTY5NDMNCjE2OTYzDQoxNjk3OQ0KMTY5ODENCjE2OTg3DQoxNjk5Mw0KMTcwMTENCjE3MDIxDQoxNzAyNw0KMTcwMjkNCjE3MDMzDQoxNzA0MQ0KMTcwNDcNCjE3MDUzDQoxNzA3Nw0KMTcwOTMNCjE3MDk5DQoxNzEwNw0KMTcxMTcNCjE3MTIzDQoxNzEzNw0KMTcxNTkNCjE3MTY3DQoxNzE4Mw0KMTcxODkNCjE3MTkxDQoxNzIwMw0KMTcyMDcNCjE3MjA5DQoxNzIzMQ0KMTcyMzkNCjE3MjU3DQoxNzI5MQ0KMTcyOTMNCjE3Mjk5DQoxNzMxNw0KMTczMjENCjE3MzI3DQoxNzMzMw0KMTczNDENCjE3MzUxDQoxNzM1OQ0KMTczNzcNCjE3MzgzDQoxMDAwMDMNCjEwMDAxOQ0KMTAwMDQzDQoxMDAwNDkNCjEwMDA1Nw0KMTAwMDY5DQoxMDAxMDMNCjEwMDEwOQ0KMTAwMTI5DQoxMDAxNTENCjEwMDE1Mw0KMTAwMTY5DQoxMDAxODMNCjEwMDE4OQ0KMTAwMTkzDQoxMDAyMDcNCjEwMDIxMw0KMTAwMjM3DQoxMDAyNjcNCjEwMDI3MQ0KMTAwMjc5DQoxMDAyOTENCjEwMDI5Nw0KMTAwMzEzDQoxMDAzMzMNCjEwMDM0Mw0KMTAwMzU3DQoxMDAzNjENCjEwMDM2Mw0KMTAwMzc5DQoxMDAzOTENCjEwMDM5Mw0KMTAwNDAzDQoxMDA0MTENCjEwMDQxNw0KMTAwNDQ3DQoxMDA0NTkNCjEwMDQ2OQ0KMTAwNDgzDQoxMDA0OTMNCjEwMDUwMQ0KMTAwNTExDQoxMDA1MTcNCjEwMDUxOQ0KMTAwNTIzDQoxMDA1MzcNCjEwMDU0Nw0KMTAwNTQ5DQoxMDA1NTkNCjEwMDU5MQ0KMTAwNjA5DQoxMDA2MTMNCjEwMDYyMQ0KMTAwNjQ5DQoxMDA2NjkNCjEwMDY3Mw0KMTAwNjkzDQoxMDA2OTkNCjEwMDcwMw0KMTAwNzMzDQoxMDA3NDENCjEwMDc0Nw0KMTAwNzY5DQoxMDA3ODcNCjEwMDc5OQ0KMTAwODAxDQoxMDA4MTENCjEwMDgyMw0KMTAwODI5DQoxMDA4NDcNCjEwMDg1Mw0KMTAwOTA3DQoxMDA5MTMNCjEwMDkyNw0KMTAwOTMxDQoxMDA5MzcNCjEwMDk0Mw0KMTAwOTU3DQoxMDA5ODENCjEwMDk4Nw0KMTAwOTk5DQoxMDEwMDkNCjEwMTAyMQ0KMTAxMDI3DQoxMDEwNTENCjEwMTA2Mw0KMTAxMDgxDQoxMDEwODkNCjEwMTEwNw0KMTAxMTExDQoxMDExMTMNCjEwMTExNw0KMTAxMTE5DQoxMDExNDENCjEwMTE0OQ0KMTAxMTU5DQoxMDExNjENCjEwMTE3Mw0KMTAxMTgzDQoxMDExOTcNCjEwMTIwMw0KMTAxMjA3DQoxMDEyMDkNCjEwMTIyMQ0KMTAxMjY3DQoxMDEyNzMNCjEwMTI3OQ0KMTAxMjgxDQoxMDEyODcNCjEwMTI5Mw0KMTAxMzIzDQoxMDEzMzMNCjEwMTM0MQ0KMTAxMzQ3DQoxMDEzNTkNCjEwMTM2Mw0KMTAxMzc3DQoxMDEzODMNCjEwMTM5OQ0KMTAxNDExDQoxMDE0MTkNCjEwMTQyOQ0KMTAxNDQ5DQoxMDE0NjcNCjEwMTQ3Nw0KMTAxNDgzDQoxMDE0ODkNCjEwMTUwMQ0KMTAxNTAzDQoxMDE1MTMNCjEwMTUyNw0KMTAxNTMxDQoxMDE1MzMNCjEwMTUzNw0KMTAxNTYxDQoxMDE1NzMNCjEwMTU4MQ0KMTAxNTk5DQoxMDE2MDMNCjEwMTYxMQ0KMTAxNjI3DQoxMDE2NDENCjEwMTY1Mw0KMTAxNjYzDQoxMDE2ODENCjEwMTY5Mw0KMTAxNzAxDQoxMDE3MTkNCjEwMTcyMw0KMTAxNzM3DQoxMDE3NDENCjEwMTc0Nw0KMTAxNzQ5DQoxMDE3NzENCjEwMTc4OQ0KMTAxNzk3DQoxMDE4MDcNCjEwMTgzMw0KMTAxODM3DQoxMDE4MzkNCjEwMTg2Mw0KMTAxODY5DQoxMDE4NzMNCjEwMTg3OQ0KMTAxODkxDQoxMDE5MTcNCjEwMTkyMQ0KMTAxOTI5DQoxMDE5MzkNCjEwMTk1Nw0KMTAxOTYzDQoxMDE5NzcNCjEwMTk4Nw0KMTAxOTk5DQoxMDIwMDENCjEwMjAxMw0KMTAyMDE5DQoxMDIwMjMNCjEwMjAzMQ0KMTAyMDQzDQoxMDIwNTkNCjEwMjA2MQ0KMTAyMDcxDQoxMDIwNzcNCjEwMjA3OQ0KMTAyMTAxDQoxMDIxMDMNCjEwMjEwNw0KMTAyMTIxDQoxMDIxMzkNCjEwMjE0OQ0KMTAyMTYxDQoxMDIxODENCjEwMjE5MQ0KMTAyMTk3DQoxMDIxOTkNCjEwMjIwMw0KMTAyMjE3DQoxMDIyMjkNCjEwMjIzMw0KMTAyMjQxDQoxMDIyNTENCjEwMjI1Mw0KMTAyMjU5DQoxMDIyOTMNCjEwMjI5OQ0KMTAyMzAxDQoxMDIzMTcNCjEwMjMyOQ0KMTAyMzM3DQoxMDIzNTkNCjEwMjM2Nw0KMTAyMzk3DQoxMDI0MDcNCjEwMjQwOQ0KMTAyNDMzDQoxMDI0MzcNCjEwMjQ1MQ0KMTAyNDYxDQoxMDI0ODENCjEwMjQ5Nw0KMTAyNDk5DQoxMDI1MDMNCjEwMjUyMw0KMTAyNTMzDQoxMDI1MzkNCjEwMjU0Nw0KMTAyNTUxDQoxMDI1NTkNCjEwMjU2Mw0KMTAyNTg3DQoxMDI1OTMNCjEwMjYwNw0KMTAyNjExDQoxMDI2NDMNCjEwMjY0Nw0KMTAyNjUzDQoxMDI2NjcNCjEwMjY3Mw0KMTAyNjc3DQoxMDI2NzkNCjEwMjcwMQ0KMTAyNzYxDQoxMDI3NjMNCjEwMjc2OQ0KMTAyNzkzDQoxMDI3OTcNCjEwMjgxMQ0KMTAyODI5DQoxMDI4NDENCjEwMjg1OQ0KMTAyODcxDQoxMDI4NzcNCjEwMjg4MQ0KMTAyOTExDQoxMDI5MTMNCjEwMjkyOQ0KMTAyOTMxDQoxMDI5NTMNCjEwMjk2Nw0KMTAyOTgzDQoxMDMwMDENCjEwMzAwNw0KMTAzMDQzDQoxMDMwNDkNCjEwMzA2Nw0KMTAzMDY5DQoxMDMwNzkNCjEwMzA4Nw0KMTAzMDkxDQoxMDMwOTMNCjEwMzA5OQ0KMTAzMTIzDQoxMDMxNDENCjEwMzE3MQ0KMTAzMTc3DQoxMDMxODMNCjEwMzIxNw0KMTAzMjMxDQoxMDMyMzcNCjEwMzI4OQ0KMTAzMjkxDQoxMDMzMDcNCjEwMzMxOQ0KMTAzMzMzDQoxMDMzNDkNCjEwMzM1Nw0KMTAzMzg3DQoxMDMzOTENCjEwMzM5Mw0KMTAzMzk5DQoxMDM0MDkNCjEwMzQyMQ0KMTAzNDIzDQoxMDM0NTENCjEwMzQ1Nw0KMTAzNDcxDQoxMDM0ODMNCjEwMzUxMQ0KMTAzNTI5DQoxMDM1NDkNCjEwMzU1Mw0KMTAzNTYxDQoxMDM1NjcNCjEwMzU3Mw0KMTAzNTc3DQoxMDM1ODMNCjEwMzU5MQ0KMTAzNjEzDQoxMDM2MTkNCjEwMzY0Mw0KMTAzNjUxDQoxMDM2NTcNCjEwMzY2OQ0KMTAzNjgxDQoxMDM2ODcNCjEwMzY5OQ0KMTAzNzAzDQoxMDM3MjMNCjEwMzc2OQ0KMTAzNzg3DQoxMDM4MDENCjEwMzgxMQ0KMTAzODEzDQoxMDM4MzcNCjEwMzg0MQ0KMTAzODQzDQoxMDM4NjcNCjEwMzg4OQ0KMTAzOTAzDQoxMDM5MTMNCjEwMzkxOQ0KMTAzOTUxDQoxMDM5NjMNCjEwMzk2Nw0KMTAzOTY5DQoxMDM5NzkNCjEwMzk4MQ0KMTAzOTkxDQoxMDM5OTMNCjEwMzk5Nw0KMTA0MDAzDQoxMDQwMDkNCjEwNDAyMQ0KMTA0MDMzDQoxMDQwNDcNCjEwNDA1Mw0KMTA0MDU5DQoxMDQwODcNCjEwNDA4OQ0KMTA0MTA3DQoxMDQxMTMNCjEwNDExOQ0KMTA0MTIzDQoxMDQxNDcNCjEwNDE0OQ0KMTA0MTYxDQoxMDQxNzMNCjEwNDE3OQ0KMTA0MTgzDQoxMDQyMDcNCjEwNDIzMQ0KMTA0MjMzDQoxMDQyMzkNCjEwNDI0Mw0KMTA0MjgxDQoxMDQyODcNCjEwNDI5Nw0KMTA0MzA5DQoxMDQzMTENCjEwNDMyMw0KMTA0MzI3DQoxMDQzNDcNCjEwNDM2OQ0KMTA0MzgxDQoxMDQzODMNCjEwNDM5Mw0KMTA0Mzk5DQoxMDQ0MTcNCjEwNDQ1OQ0KMTA0NDcxDQoxMDQ0NzMNCjEwNDQ3OQ0KMTA0NDkxDQoxMDQ1MTMNCjEwNDUyNw0KMTA0NTM3DQoxMDQ1NDMNCjEwNDU0OQ0KMTA0NTUxDQoxMDQ1NjENCjEwNDU3OQ0KMTA0NTkzDQoxMDQ1OTcNCjEwNDYyMw0KMTA0NjM5DQoxMDQ2NTENCjEwNDY1OQ0KMTA0Njc3DQoxMDQ2ODENCjEwNDY4Mw0KMTA0NjkzDQoxMDQ3MDENCjEwNDcwNw0KMTA0NzExDQoxMDQ3MTcNCjEwNDcyMw0KMTA0NzI5DQoxMDQ3NDMNCjEwNDc1OQ0KMTA0NzYxDQoxMDQ3NzMNCjEwNDc3OQ0KMTA0Nzg5DQoxMDQ4MDENCjEwNDgwMw0KMTA0ODI3DQoxMDQ4MzENCjEwNDg0OQ0KMTA0ODUxDQoxMDQ4NjkNCjEwNDg3OQ0KMTA0ODkxDQoxMDQ5MTENCjEwNDkxNw0KMTA0OTMzDQoxMDQ5NDcNCjEwNDk1Mw0KMTA0OTU5DQoxMDQ5NzENCjEwNDk4Nw0KMTA0OTk5DQoxMDUwMTkNCjEwNTAyMw0KMTA1MDMxDQoxMDUwMzcNCjEwNTA3MQ0KMTA1MDk3DQoxMDUxMDcNCjEwNTEzNw0KMTA1MTQzDQoxMDUxNjcNCjEwNTE3Mw0KMTA1MTk5DQoxMDUyMTENCjEwNTIyNw0KMTA1MjI5DQoxMDUyMzkNCjEwNTI1MQ0KMTA1MjUzDQoxMDUyNjMNCjEwNTI2OQ0KMTA1Mjc3DQoxMDUzMTkNCjEwNTMyMw0KMTA1MzMxDQoxMDUzMzcNCjEwNTM0MQ0KMTA1MzU5DQoxMDUzNjENCjEwNTM2Nw0KMTA1MzczDQoxMDUzNzkNCjEwNTM4OQ0KMTA1Mzk3DQoxMDU0MDENCjEwNTQwNw0KMTA1NDM3DQoxMDU0NDkNCjEwNTQ2Nw0KMTA1NDkxDQoxMDU0OTkNCjEwNTUwMw0KMTA1NTA5DQoxMDU1MTcNCjEwNTUyNw0KMTA1NTI5DQoxMDU1MzMNCjEwNTU0MQ0KMTA1NTU3DQoxMDU1NjMNCjEwNTYwMQ0KMTA1NjA3DQoxMDU2MTMNCjEwNTYxOQ0KMTA1NjQ5DQoxMDU2NTMNCjEwNTY2Nw0KMTA1NjczDQoxMDU2ODMNCjEwNTY5MQ0KMTA1NzAxDQoxMDU3MjcNCjEwNTczMw0KMTA1NzUxDQoxMDU3NjENCjEwNTc2Nw0KMTA1NzY5DQoxMDU4MTcNCjEwNTgyOQ0KMTA1ODYzDQoxMDU4NzENCjEwNTg4Mw0KMTA1ODk5DQoxMDU5MDcNCjEwNTkxMw0KMTA1OTI5DQoxMDU5NDMNCjEwNTk1Mw0KMTA1OTY3DQoxMDU5NzENCjEwNTk3Nw0KMTA1OTgzDQoxMDU5OTcNCjEwNjAxMw0KMTA2MDE5DQoxMDYwMzENCjEwNjAzMw0KMTA2MDg3DQoxMDYxMDMNCjEwNjEwOQ0KMTA2MTIxDQoxMDYxMjMNCjEwNjEyOQ0KMTA2MTYzDQoxMDYxODENCjEwNjE4Nw0KMTA2MTg5DQoxMDYyMDcNCjEwNjIxMw0KMTA2MjE3DQoxMDYyMTkNCjEwNjI0Mw0KMTA2MjYxDQoxMDYyNzMNCjEwNjI3Nw0KMTA2Mjc5DQoxMDYyOTENCjEwNjI5Nw0KMTA2MzAzDQoxMDYzMDcNCjEwNjMxOQ0KMTA2MzIxDQoxMDYzMzENCjEwNjM0OQ0KMTA2MzU3DQoxMDYzNjMNCjEwNjM2Nw0KMTA2MzczDQoxMDYzOTENCjEwNjM5Nw0KMTA2NDExDQoxMDY0MTcNCjEwNjQyNw0KMTA2NDMzDQoxMDY0NDENCjEwNjQ1MQ0KMTA2NDUzDQoxMDY0ODcNCjEwNjUwMQ0KMTA2NTMxDQoxMDY1MzcNCjEwNjU0MQ0KMTA2NTQzDQoxMDY1OTENCjEwNjYxOQ0KMTA2NjIxDQoxMDY2MjcNCjEwNjYzNw0KMTA2NjQ5DQoxMDY2NTcNCjEwNjY2MQ0KMTA2NjYzDQoxMDY2NjkNCjEwNjY4MQ0KMTA2NjkzDQoxMDY2OTkNCjEwNjcwMw0KMTA2NzIxDQoxMDY3MjcNCjEwNjczOQ0KMTA2NzQ3DQoxMDY3NTENCjEwNjc1Mw0KMTA2NzU5DQoxMDY3ODENCjEwNjc4Mw0KMTA2Nzg3DQoxMDY4MDENCjEwNjgyMw0KMTA2ODUzDQoxMDY4NTkNCjEwNjg2MQ0KMTA2ODY3DQoxMDY4NzENCjEwNjg3Nw0KMTA2OTAzDQoxMDY5MDcNCjEwNjkyMQ0KMTA2OTM3DQoxNDkyODczMQ0KMTQ5Mjg3MzMNCjE0OTI4NzYxDQoxNDkyODc3Mw0KMTQ5Mjg3ODcNCjE0OTI4NzkxDQoxNDkyODgwMw0KMTQ5Mjg4MTENCjE0OTI4ODI3DQoxNDkyODgzMw0KMTQ5Mjg4NDENCjE0OTI4ODQ3DQoxNDkyODkxMw0KMTQ5Mjg5MTkNCjE0OTI4OTI5DQoxNDkyODkzMQ0KMTQ5Mjg5MzcNCjE0OTI4OTQzDQoxNDkyODk1OQ0KMTQ5Mjg5NzENCjE0OTI5MDM5DQoxNDkyOTA0OQ0KMTQ5MjkwNTENCjE0OTI5MDYzDQoxNDkyOTA2Nw0KMTQ5MjkwNjkNCjE0OTI5MDg3DQoxNDkyOTA5MQ0KMTQ5MjkxMjENCjE0OTI5MTUxDQoxNDkyOTE2Mw0KMTQ5MjkxNjkNCjE0OTI5MTc3DQoxNDkyOTIxNw0KMTQ5MjkyMjMNCjE0OTI5MjM3DQoxNDkyOTI1Mw0KMTQ5MjkyNjENCjE0OTI5Mjc5DQoxNDkyOTI4Mw0KMTQ5MjkzMDkNCjE0OTI5MzE5DQoxNDkyOTMzNw0KMTQ5MjkzNTENCjE0OTI5MzU3DQoxNDkyOTM2Mw0KMTQ5MjkzNzkNCjE0OTI5MzkzDQoxNDkyOTM5OQ0KMTQ5Mjk0MjcNCjE0OTI5NDMzDQoxNDkyOTQ1Nw0KMTQ5Mjk0ODcNCjE0OTI5NDg5DQoxNDkyOTUxMQ0KMTQ5Mjk1MjkNCjE0OTI5NTQ3DQoxNDkyOTU1OQ0KMTQ5Mjk1NzENCjE0OTI5NTgzDQoxNDkyOTU4OQ0KMTQ5Mjk1OTENCjE0OTI5NjA5DQoxNDkyOTYxOQ0KMTQ5Mjk2MzcNCjE0OTI5NjY5DQoxNDkyOTY3OQ0KMTQ5Mjk3MDMNCjE0OTI5NzExDQoxNDkyOTc1Mw0KMTQ5Mjk3NzENCjE0OTI5Nzc3DQoxNDkyOTc5Mw0KMTQ5Mjk3OTkNCjE0OTI5ODA3DQoxNDkyOTgxMw0KMTQ5Mjk4NDENCjE0OTI5ODQzDQoxNDkyOTg0Nw0KMTQ5Mjk4ODMNCjE0OTI5OTA5DQoxNDkyOTkxMw0KMTQ5Mjk5MTkNCjE0OTI5OTYzDQoxNDkyOTk5Nw0KMTQ5MzAwMTENCjE0OTMwMDIxDQoxNDkzMDA1MQ0KMTQ5MzAwNTMNCjE0OTMwMDg3DQoxNDkzMDA4OQ0KMTQ5MzAxMDENCjE0OTMwMTA3DQoxNDkzMDExOQ0KMTQ5MzAxMzcNCjE0OTMwMTQxDQoxNDkzMDE3MQ0KMTQ5MzAxODMNCjE0OTMwMjIxDQoxNDkzMDI0OQ0KMTQ5MzAyNjENCjE0OTMwMjYzDQoxNDkzMDI2OQ0KMTQ5MzAyOTENCjE0OTMwMzAzDQoxNDkzMDMwOQ0KMTQ5MzAzMTcNCjE0OTMwMzI5DQoxNDkzMDMzOQ0KMTQ5MzAzNDENCjE0OTMwMzg3DQoxNDkzMDM5Mw0KMTQ5MzA0MTENCjE0OTMwNDMxDQoxNDkzMDQ0MQ0KMTQ5MzA0NDkNCjE0OTMwNDUzDQoxNDkzMDQ3OQ0KMTQ5MzA0ODMNCjE0OTMwNDkxDQoxNDkzMDUwNw0KMTQ5MzA1MjENCjE0OTMwNTMzDQoxNDkzMDU4MQ0KMTQ5MzA1OTMNCjE0OTMwNjAzDQoxNDkzMDYwOQ0KMTQ5MzA2MzMNCjE0OTMwNjM5DQoxNDkzMDY1OQ0KMTQ5MzA2ODENCjE0OTMwNjkzDQoxNDkzMDcxOQ0KMTQ5MzA3MzENCjE0OTMwNzUzDQoxNDkzMDc1OQ0KMTQ5MzA3NjcNCjE0OTMwNzc5DQoxNDkzMDc5MQ0KMTQ5MzA4MDENCjE0OTMwODA3DQoxNDkzMDgyMQ0KMTQ5MzA4MzMNCjE0OTMwODM3DQoxNDkzMDg0OQ0KMTQ5MzA4NjMNCjE0OTMwODkxDQoxNDkzMDg5Mw0KMTQ5MzA4OTcNCjE0OTMwOTE3DQoxNDkzMDk1Nw0KMTQ5MzA5NTkNCjE0OTMwOTc3DQoxNDkzMDk4OQ0KMTQ5MzA5OTkNCjE0OTMxMDEzDQoxNDkzMTAyMw0KMTQ5MzEwNTMNCjE0OTMxMDYxDQoxNDkzMTA3Mw0KMTQ5MzEwODkNCjE0OTMxMDk3DQoxNDkzMTEwOQ0KMTQ5MzExNDkNCjE0OTMxMTU3DQoxNDkzMTE2Nw0KMTQ5MzExNzkNCjE0OTMxMTg3DQoxNDkzMTE5Mw0KMTQ5MzExOTcNCjE0OTMxMjExDQoxNDkzMTIyMw0KMTQ5MzEyNDcNCjE0OTMxMjY5DQoxNDkzMTI3MQ0KMTQ5MzEyODENCjE0OTMxMzMxDQoxNDkzMTM0MQ0KMTQ5MzEzNjENCjE0OTMxMzc3DQoxNDkzMTQwMQ0KMTQ5MzE0MDMNCjE0OTMxNDA5DQoxNDkzMTQzMQ0KMTQ5MzE0MzcNCjE0OTMxNDY3DQoxNDkzMTQ3OQ0KMTQ5MzE1MDkNCjE0OTMxNTIzDQoxNDkzMTU1MQ0KMTQ5MzE1ODkNCjE0OTMxNTk5DQoxNDkzMTYxMw0KMTQ5MzE2MjkNCjE0OTMxNjQ3DQoxNDkzMTY0OQ0KMTQ5MzE2NzENCjE0OTMxNzAzDQoxNDkzMTczMQ0KMTQ5MzE3MzMNCjE0OTMxNzY5DQoxNDkzMTgwOQ0KMTQ5MzE4MTENCjE0OTMxODQxDQoxNDkzMTg3MQ0KMTQ5MzE4NzcNCjE0OTMxODgxDQoxNDkzMTg5Mw0KMTQ5MzE5MDENCjE0OTMxOTExDQoxNDkzMTkxOQ0KMTQ5MzE5NTMNCjE0OTMxOTc3DQoxNDkzMTk4OQ0KMTQ5MzIwMzENCjE0OTMyMDM5DQoxNDkzMjA2Mw0KMTQ5MzIwNzkNCjE0OTMyMDg3DQoxNDkzMjA5Nw0KMTQ5MzIxMDkNCjE0OTMyMTE3DQoxNDkzMjEzOQ0KMTQ5MzIxNDcNCjE0OTMyMTYzDQoxNDkzMjE5OQ0KMTQ5MzIyMDcNCjE0OTMyMjMxDQoxNDkzMjI2MQ0KMTQ5MzIzMDENCjE0OTMyMzIxDQoxNDkzMjMzOQ0KMTQ5MzIzNjcNCjE0OTMyMzg3DQoxNDkzMjM5MQ0KMTQ5MzI0MzMNCjE0OTMyNDQxDQoxNDkzMjQ1Mw0KMTQ5MzI0NTcNCjE0OTMyNDY5DQoxNDkzMjQ5Mw0KMTQ5MzI1MTMNCjE0OTMyNTQ5DQoxNDkzMjU3Mw0KMTQ5MzI1ODMNCjE0OTMyNTk3DQoxNDkzMjYwOQ0KMTQ5MzI2MjcNCjE0OTMyNjM3DQoxNDkzMjY2Nw0KMTQ5MzI2OTENCjE0OTMyNzAzDQoxNDkzMjcxMQ0KMTQ5MzI3MjENCjE0OTMyNzQ3DQoxNDkzMjc2Mw0KMTQ5MzI3NjkNCjE0OTMyNzg5DQoxNDkzMjgxMQ0KMTQ5MzI4MjMNCjE0OTMyODI5DQoxNDkzMjg0Nw0KMTQ5MzI4NDkNCjE0OTMyODg5DQoxNDkzMjkwMQ0KMTQ5MzI5MDMNCjE0OTMyOTIxDQoxNDkzMjkyNw0KMTQ5MzI5MzcNCjE0OTMyOTYxDQoxNDkzMjk2Mw0KMTQ5MzI5OTENCjE0OTMzMDExDQoxNDkzMzAyOQ0KMTQ5MzMwMzMNCjE0OTMzMDcxDQoxNDkzMzA4MQ0KMTQ5MzMxMDENCjE0OTMzMTE5DQoxNDkzMzEzMQ0KMTQ5MzMxNDcNCjE0OTMzMTY3DQoxNDkzMzE3OQ0KMTQ5MzMxODkNCjE0OTMzMjA3DQoxNDkzMzIwOQ0KMTQ5MzMyNTcNCjE0OTMzMjY3DQoxNDkzMzI3Mw0KMTQ5MzMyOTkNCjE0OTMzMzA5DQoxNDkzMzMyOQ0KMTQ5MzMzNTMNCjE0OTMzMzgzDQoxNDkzMzM5Mw0KMTQ5MzM0MTkNCjE0OTMzNDUzDQoxNDkzMzQ2Nw0KMTQ5MzM0NzMNCjE0OTMzNDgzDQoxNDkzMzQ4OQ0KMTQ5MzM0OTENCjE0OTMzNTkxDQoxNDkzMzYwMw0KMTQ5MzM2MTcNCjE0OTMzNjIxDQoxNDkzMzYyMw0KMTQ5MzM2MjkNCjE0OTMzNjU3DQoxNDkzMzY2Mw0KMTQ5MzM2NzENCjE0OTMzNjg3DQoxNDkzMzY4OQ0KMTQ5MzM3MTMNCjE0OTMzNzI5DQoxNDkzMzczMQ0KMTQ5MzM3NzMNCjE0OTMzNzk3DQoxNDkzMzgxMw0KMTQ5MzM4MTkNCjE0OTMzODQzDQoxNDkzMzg2MQ0KMTQ5MzM4NzMNCjE0OTMzODg3DQoxNDkzMzg5OQ0KMTQ5MzM5MTENCjE0OTMzOTUxDQoxNDkzMzk1Nw0KMTQ5MzM5ODMNCjE0OTMzOTg3DQoxNDkzMzk5Mw0KMTQ5MzM5OTkNCjE0OTM0MDAxDQoxNDkzNDAxMQ0KMTQ5MzQwMzcNCjE0OTM0MDY3DQoxNDkzNDA3MQ0KMTQ5MzQwNzcNCjE0OTM0MDc5DQoxNDkzNDA5MQ0KMTQ5MzQxMTMNCjE0OTM0MTE5DQoxNDkzNDE1MQ0KMTQ5MzQxNzMNCjE0OTM0MTkxDQoxNDkzNDE5Nw0KMTQ5MzQyMjENCjE0OTM0MjI5DQoxNDkzNDI1MQ0KMTQ5MzQyNTkNCjE0OTM0MjYzDQoxNDkzNDI3Nw0KMTQ5MzQzMTcNCjE0OTM0MzI5DQoxNDkzNDM3Nw0KMTQ5MzQzNzkNCjE0OTM0NDAxDQoxNDkzNDQwNw0KMTQ5MzQ0MjcNCjE0OTM0NDMxDQoxNDkzNDQ1Nw0KMTQ5MzQ0NjENCjE0OTM0NDczDQoxNDkzNDQ5Nw0KMTQ5MzQ1MDkNCjE0OTM0NTExDQoxNDkzNDU1Mw0KMTQ5MzQ1ODcNCjE0OTM0NTk5DQoxNDkzNDYwNw0KMTQ5MzQ2MTcNCjE0OTM0NjQ5DQoxNDkzNDY3Nw0KMTQ5MzQ2NzkNCjE0OTM0NjgzDQoxNDkzNDcwNw0KMTQ5MzQ3MDkNCjE0OTM0NzI3DQoxNDkzNDczNw0KMTQ5MzQ4MjcNCjE0OTM0ODMzDQoxNDkzNDkxMQ0KMTQ5MzQ5NDMNCjE0OTM0OTY3DQoxNDkzNDk3Mw0KMTQ5MzUwMDMNCjE0OTM1MDIxDQoxNDkzNTAzMQ0KMTQ5MzUwMzMNCjE0OTM1MDY5DQoxNDkzNTA3OQ0KMTQ5MzUwOTENCjE0OTM1MDkzDQoxNDkzNTA5OQ0KMTQ5MzUxMTcNCjE0OTM1MTU3DQoxNDkzNTE2OQ0KMTQ5MzUxODENCjE0OTM1MTgzDQoxNDkzNTE4OQ0KMTQ5MzUxOTkNCjE0OTM1MjI5DQoxNDkzNTI0Nw0KMTQ5MzUyNjcNCjE0OTM1Mjc5DQoxNDkzNTMwNw0KMTQ5MzUzMjENCjE0OTM1MzM5DQoxNDkzNTM0Mw0KMTQ5MzUzNTENCjE0OTM1MzYzDQoxNDkzNTM2OQ0KMTQ5MzUzNzMNCjE0OTM1Mzc5DQoxNDkzNTM5MQ0KMTQ5MzU0MDkNCjE0OTM1NDI5DQoxNDkzNTQ0Nw0KMTQ5MzU0NzENCjE0OTM1NDk5DQoxNDkzNTUxMQ0KMTQ5MzU1MjMNCjE0OTM1NTUzDQoxNDkzNTU5Nw0KMTQ5MzU2MDcNCjE0OTM1NjE5DQoxNDkzNTYyMQ0KMTQ5MzU2MzMNCjE0OTM1NjM3DQoxNDkzNTY0OQ0KMTQ5MzU2NTENCjE0OTM1NzQ3DQoxNDkzNTc1MQ0KMTQ5MzU3NTcNCjE0OTM1NzU5DQoxNDkzNTc5Mw0KMTQ5MzU4MTMNCjE0OTM1ODI5DQoxNDkzNTg0Nw0KMTQ5MzU4NTkNCjE0OTM1ODYxDQoxNDkzNTg2Nw0KMTQ5MzU4OTcNCjE0OTM1OTEzDQoxNDkzNTkzNw0KMTQ5MzU5NTENCjE0OTM1OTYxDQoxNDkzNTk2OQ0KMTQ5MzYwMDMNCjE0OTM2MDI5DQoxNDkzNjA0MQ0KMTQ5MzYwNTkNCjE0OTM2MDYzDQoxNDkzNjA4Nw0KMTQ5MzYxMTMNCjE0OTM2MTY3DQoxNDkzNjIxOQ0KMTQ5MzYyMjENCjE0OTM2MjMxDQoxNDkzNjIzOQ0KMTQ5MzYyNDkNCjE0OTM2MjY3DQoxNDkzNjI4MQ0KMTQ5MzYzMDMNCjE0OTM2MzIxDQoxNDkzNjMyOQ0KMTQ5MzYzMzMNCjE0OTM2MzU5DQoxNDkzNjM5Mw0KMTQ5MzY0MjkNCjE0OTM2NDQzDQoxNDkzNjQ3Nw0KMTQ5MzY0OTENCjE0OTM2NDk3DQoxNDkzNjUwMQ0KMTQ5MzY1MzkNCjE0OTM2NTQzDQoxNDkzNjU2MQ0KMTQ5MzY1NjMNCjE0OTM2NTY5DQoxNDkzNjU3Mw0KMTQ5MzY1OTkNCjE0OTM2NjExDQoxNDkzNjYyOQ0KMTQ5MzY2MzMNCjE0OTM2NjgxDQoxNDkzNjczMQ0KMTQ5MzY3NDMNCjE0OTM2NzcxDQoxNDkzNjgwNw0KMTQ5MzY4MTMNCjE0OTM2ODM5DQoxNDkzNjg5OQ0KMTQ5MzY5MDMNCjE0OTM2OTE3DQoxNDkzNjkyMw0KMTQ5MzY5MjcNCjE0OTM2OTQxDQoxNDkzNjk1MQ0KMTQ5MzY5NjkNCjE0OTM2OTg5DQoxNDkzNzAxNw0KMTQ5MzcwMjkNCjE0OTM3MDQ5DQoxNDkzNzA1Mw0KMTQ5MzcwNjENCjE0OTM3MDczDQoxNDkzNzEwMw0KMTQ5MzcxMDcNCjE0OTM3MTEzDQoxNDkzNzExOQ0KMTQ5MzcxNzkNCjE0OTM3MTkxDQoxNDkzNzE5OQ0KMTQ5MzcyMTcNCjE0OTM3MjI3DQoxNDkzNzIyOQ0KMTQ5MzcyMzkNCjE0OTM3MjU5DQoxNDkzNzI2OQ0KMTQ5MzcyNzcNCjE0OTM3MjgzDQoxNDkzNzMxMQ0KMTQ5MzczMTcNCjE0OTM3MzMxDQoxNDkzNzM0MQ0KMTQ5MzczNjcNCjE0OTM3Mzc5DQoxNDkzNzQwOQ0KMTQ5Mzc0MTMNCjE0OTM3NDMxDQoxNDkzNzQzNw0KMTQ5Mzc0NTcNCjE0OTM3NDYzDQoxNDkzNzQ5MQ0KMTQ5Mzc0OTkNCjE0OTM3NTM5DQoxNDkzNzU0MQ0KMTQ5Mzc1NDcNCjE0OTM3NTYzDQoxNDkzNzU2OQ0KMTQ5Mzc1OTkNCjE0OTM3NjA3DQoxNDkzNzYxNw0KMTQ5Mzc2NDcNCjE0OTM3NjczDQoxNDkzNzY4Mw0KMTQ5Mzc3MDENCjE0OTM3NzA3DQoxNDkzNzcyMQ0KMTQ5Mzc3MzENCjE0OTM3NzM3DQoxNDkzNzc3Mw0KMTQ5Mzc4MDMNCjE0OTM3ODIxDQoxNDkzNzgyMw0KMTQ5Mzc4MjcNCjE0OTM3ODI5DQoxNDkzNzg0MQ0KMTQ5Mzc4NDcNCjE0OTM3ODU5DQoxNDkzNzg4Nw0KMTQ5Mzc4ODkNCjE0OTM3OTExDQoxNDkzNzk0Mw0KMTQ5Mzc5NDcNCjE0OTM3OTYxDQoxNDkzODAxMw0KMTQ5MzgwMzcNCjE0OTM4MDQzDQoxNDkzODA3Mw0KMTQ5MzgwOTMNCjE0OTM4MTE3DQoxNDkzODEyNw0KMTQ5MzgxMjkNCjE0OTM4MTM5DQoxNDkzODE1Mw0KMTQ5MzgxNjkNCjE0OTM4MTc3DQoxNDkzODE4MQ0KMTQ5MzgyMDcNCjE0OTM4MjY3DQoxNDkzODI3MQ0KMTQ5MzgyODMNCjE0OTM4Mjg5DQoxNDkzODMwMw0KMTQ5MzgzMjENCjE0OTM4MzMxDQoxNDkzODMzNw0KMTQ5MzgzNzkNCjE0OTM4MzgxDQoxNDkzODM5Nw0KMTQ5Mzg0MTENCjE0OTM4NDU3DQoxNDkzODQ1OQ0KMTQ5Mzg0NjMNCjE0OTM4NDgxDQoxNDkzODQ4OQ0KMTQ5Mzg0OTMNCjE0OTM4NDk5DQoyNDkzMjA2OTkNCjI0OTMyMDc3OQ0KMjQ5MzIwNzgzDQoyNDkzMjA3ODkNCjI0OTMyMDc5MQ0KMjQ5MzIwODA5DQoyNDkzMjA4MzkNCjI0OTMyMDg0OQ0KMjQ5MzIwODU3DQoyNDkzMjA4ODENCjI0OTMyMDg5Mw0KMjQ5MzIwOTA5DQoyNDkzMjA5MjcNCjI0OTMyMDkzMw0KMjQ5MzIwOTcxDQoyNDkzMjA5ODcNCjI0OTMyMDk5Mw0KMjQ5MzIwOTk5DQoyNDkzMjEwNDMNCjI0OTMyMTA0OQ0KMjQ5MzIxMDcxDQoyNDkzMjExMDkNCjI0OTMyMTExMw0KMjQ5MzIxMTMxDQoyNDkzMjExMzkNCjI0OTMyMTE1MQ0KMjQ5MzIxMTU3DQoyNDkzMjEyMDMNCjI0OTMyMTIwOQ0KMjQ5MzIxMjIzDQoyNDkzMjEyNjMNCjI0OTMyMTMwMQ0KMjQ5MzIxMzQzDQoyNDkzMjEzNzkNCjI0OTMyMTM4Mw0KMjQ5MzIxMzg5DQoyNDkzMjE0MDkNCjI0OTMyMTQxOQ0KMjQ5MzIxNDIxDQoyNDkzMjE0MzENCjI0OTMyMTQ2MQ0KMjQ5MzIxNDYzDQoyNDkzMjE0NjcNCjI0OTMyMTQ2OQ0KMjQ5MzIxNTA5DQoyNDkzMjE1MTcNCjI0OTMyMTUyOQ0KMjQ5MzIxNTU5DQoyNDkzMjE1NzENCjI0OTMyMTYwMQ0KMjQ5MzIxNjE3DQoyNDkzMjE2MTkNCjI0OTMyMTY0Nw0KMjQ5MzIxNjQ5DQoyNDkzMjE3MDcNCjI0OTMyMTcxMw0KMjQ5MzIxNzMzDQoyNDkzMjE3NDkNCjI0OTMyMTc1Nw0KMjQ5MzIxNzYzDQoyNDkzMjE3NzMNCjI0OTMyMTc5Nw0KMjQ5MzIxODExDQoyNDkzMjE4MjcNCjI0OTMyMTgyOQ0KMjQ5MzIxODUxDQoyNDkzMjE4NTkNCjI0OTMyMTkyMw0KMjQ5MzIxOTMxDQoyNDkzMjE5NTMNCjI0OTMyMTk3Mw0KMjQ5MzIxOTk3DQoyNDkzMjIwMzMNCjI0OTMyMjAzNw0KMjQ5MzIyMDQ5DQoyNDkzMjIwNjENCjI0OTMyMjA2OQ0KMjQ5MzIyMDc5DQoyNDkzMjIwODENCjI0OTMyMjEwMw0KMjQ5MzIyMTIxDQoyNDkzMjIxMzMNCjI0OTMyMjE2Mw0KMjQ5MzIyMjA3DQoyNDkzMjIyMTENCjI0OTMyMjIxNw0KMjQ5MzIyMjIzDQoyNDkzMjIyNTMNCjI0OTMyMjI2MQ0KMjQ5MzIyMjY3DQoyNDkzMjIyNzMNCjI0OTMyMjI3OQ0KMjQ5MzIyMzE5DQoyNDkzMjIzMjENCjI0OTMyMjMzMQ0KMjQ5MzIyMzYxDQoyNDkzMjIzNjMNCjI0OTMyMjM3OQ0KMjQ5MzIyMzk3DQoyNDkzMjIzOTkNCjI0OTMyMjQxNw0KMjQ5MzIyNDgxDQoyNDkzMjI0ODcNCjI0OTMyMjUwMQ0KMjQ5MzIyNTQzDQoyNDkzMjI1NTkNCjI0OTMyMjU3Mw0KMjQ5MzIyNjM3DQoyNDkzMjI2NTENCjI0OTMyMjcwOQ0KMjQ5MzIyNzIxDQoyNDkzMjI3NDENCjI0OTMyMjc0Nw0KMjQ5MzIyNzUzDQoyNDkzMjI3OTMNCjI0OTMyMjgxMQ0KMjQ5MzIyODIzDQoyNDkzMjI4MzcNCjI0OTMyMjg0Nw0KMjQ5MzIyODU5DQoyNDkzMjI4NzcNCjI0OTMyMjg5Nw0KMjQ5MzIyOTM5DQoyNDkzMjI5NDkNCjI0OTMyMjk2Mw0KMjQ5MzIyOTc5DQoyNDkzMjI5OTMNCjI0OTMyMzA1MQ0KMjQ5MzIzMDg5DQoyNDkzMjMwOTkNCjI0OTMyMzEwMQ0KMjQ5MzIzMTE3DQoyNDkzMjMxNjcNCjI0OTMyMzE3Nw0KMjQ5MzIzMTg5DQoyNDkzMjMyMDkNCjI0OTMyMzIxMw0KMjQ5MzIzMjI3DQoyNDkzMjMyMzENCjI0OTMyMzI1Nw0KMjQ5MzIzMjY3DQoyNDkzMjMyNzMNCjI0OTMyMzI5Mw0KMjQ5MzIzMzAzDQoyNDkzMjMzMTENCjI0OTMyMzMyMw0KMjQ5MzIzMzQxDQoyNDkzMjMzNTENCjI0OTMyMzM2Mw0KMjQ5MzIzNDY3DQoyNDkzMjM0NzENCjI0OTMyMzQ4OQ0KMjQ5MzIzNDk3DQoyNDkzMjM1MDcNCjI0OTMyMzUwOQ0KMjQ5MzIzNTMzDQoyNDkzMjM1NjMNCjI0OTMyMzU5Nw0KMjQ5MzIzNjA5DQoyNDkzMjM2MjkNCjI0OTMyMzYzOQ0KMjQ5MzIzNjYzDQoyNDkzMjM2ODcNCjI0OTMyMzcwNw0KMjQ5MzIzNzQxDQoyNDkzMjM3NzMNCjI0OTMyMzc3OQ0KMjQ5MzIzODA3DQoyNDkzMjM4MjcNCjI0OTMyMzgzOQ0KMjQ5MzIzODQzDQoyNDkzMjM4NjkNCjI0OTMyMzg3Mw0KMjQ5MzIzOTI3DQoyNDkzMjM5MjkNCjI0OTMyMzk1Mw0KMjQ5MzIzOTU3DQoyNDkzMjM5ODMNCjI0OTMyMzk5OQ0KMjQ5MzI0MDU5DQoyNDkzMjQwNjcNCjI0OTMyNDA3Nw0KMjQ5MzI0MTA5DQoyNDkzMjQxMTMNCjI0OTMyNDEyMQ0KMjQ5MzI0MTUxDQoyNDkzMjQxOTcNCjI0OTMyNDIxMQ0KMjQ5MzI0MjIxDQoyNDkzMjQyNDcNCjI0OTMyNDI1OQ0KMjQ5MzI0Mjg3DQoyNDkzMjQzMDcNCjI0OTMyNDMxOQ0KMjQ5MzI0MzY3DQoyNDkzMjQzNzENCjI0OTMyNDM3Mw0KMjQ5MzI0Mzc3DQoyNDkzMjQ0MDENCjI0OTMyNDQwNw0KMjQ5MzI0NDA5DQoyNDkzMjQ0MzMNCjI0OTMyNDQ2MQ0KMjQ5MzI0NDY5DQoyNDkzMjQ0NzMNCjI0OTMyNDQ5Nw0KMjQ5MzI0NTAzDQoyNDkzMjQ1MjENCjI0OTMyNDU4Mw0KMjQ5MzI0NTg5DQoyNDkzMjQ2MTcNCjI0OTMyNDY5Nw0KMjQ5MzI0NzAxDQoyNDkzMjQ3MDkNCjI0OTMyNDcyMQ0KMjQ5MzI0NzI3DQoyNDkzMjQ3MzkNCjI0OTMyNDc2Nw0KMjQ5MzI0Nzk5DQoyNDkzMjQ4MDkNCjI0OTMyNDg3MQ0KMjQ5MzI0ODkzDQoyNDkzMjQ5MTMNCjI0OTMyNDkyMw0KMjQ5MzI0OTMxDQoyNDkzMjQ5NDcNCjI0OTMyNDk1Mw0KMjQ5MzI0OTY3DQoyNDkzMjUwMDENCjI0OTMyNTAxOQ0KMjQ5MzI1MDMxDQoyNDkzMjUwNTcNCjI0OTMyNTA3Mw0KMjQ5MzI1MDc5DQoyNDkzMjUwODENCjI0OTMyNTA5OQ0KMjQ5MzI1MTIzDQoyNDkzMjUxMzMNCjI0OTMyNTE2OQ0KMjQ5MzI1MTg3DQoyNDkzMjUxODkNCjI0OTMyNTIxNw0KMjQ5MzI1MjMxDQoyNDkzMjUyNTkNCjI0OTMyNTI2MQ0KMjQ5MzI1MzE5DQoyNDkzMjUzMzMNCjI0OTMyNTM3OQ0KMjQ5MzI1NDAzDQoyNDkzMjU0MTENCjI0OTMyNTQyMQ0KMjQ5MzI1NDIzDQoyNDkzMjU0NjMNCjI0OTMyNTQ3Nw0KMjQ5MzI1NDkzDQoyNDkzMjU1MDcNCjI0OTMyNTUxMw0KMjQ5MzI1NTQxDQoyNDkzMjU1OTcNCjI0OTMyNTYwMw0KMjQ5MzI1NjA3DQoyNDkzMjU2MjcNCjI0OTMyNTYzOQ0KMjQ5MzI1NjYzDQoyNDkzMjU2NjcNCjI0OTMyNTcwOQ0KMjQ5MzI1NzExDQoyNDkzMjU3MTcNCjI0OTMyNTc1MQ0KMjQ5MzI1NzU5DQoyNDkzMjU3ODENCjI0OTMyNTc4Nw0KMjQ5MzI1ODk3DQoyNDkzMjU5MDMNCjI0OTMyNTkzMQ0KMjQ5MzI1OTMzDQoyNDkzMjYwMjcNCjI0OTMyNjAzOQ0KMjQ5MzI2MDQxDQoyNDkzMjYwNDcNCjI0OTMyNjA3MQ0KMjQ5MzI2MTAxDQoyNDkzMjYxMTENCjI0OTMyNjE3Nw0KMjQ5MzI2MTc5DQoyNDkzMjYxODMNCjI0OTMyNjE5MQ0KMjQ5MzI2MTk3DQoyNDkzMjYyMTkNCjI0OTMyNjMyMQ0KMjQ5MzI2MzI3DQoyNDkzMjYzNDcNCjI0OTMyNjM1MQ0KMjQ5MzI2MzU5DQoyNDkzMjYzNzcNCjI0OTMyNjM4MQ0KMjQ5MzI2MzgzDQoyNDkzMjY0MDENCjI0OTMyNjQxMQ0KMjQ5MzI2NDIzDQoyNDkzMjY0MzENCjI0OTMyNjQ0Mw0KMjQ5MzI2NDQ3DQoyNDkzMjY1MzMNCjI0OTMyNjU2Mw0KMjQ5MzI2NTkxDQoyNDkzMjY2MDMNCjI0OTMyNjYxMQ0KMjQ5MzI2NjIxDQoyNDkzMjY2MzkNCjI0OTMyNjY1Nw0KMjQ5MzI2Njc3DQoyNDkzMjY2ODkNCjI0OTMyNjcxMw0KMjQ5MzI2NzI5DQoyNDkzMjY3NDcNCjI0OTMyNjc2MQ0KMjQ5MzI2NzY3DQoyNDkzMjY3ODMNCjI0OTMyNjgwNw0KMjQ5MzI2ODEzDQoyNDkzMjY4MzcNCjI0OTMyNjg0Mw0KMjQ5MzI2ODQ5DQoyNDkzMjY4NTENCjI0OTMyNjg4Nw0KMjQ5MzI2OTIxDQoyNDkzMjY5MzMNCjI0OTMyNjkzOQ0KMjQ5MzI2OTUzDQoyNDkzMjY5NzENCjI0OTMyNjk4OQ0KMjQ5MzI2OTkzDQoyNDkzMjcwMTENCjI0OTMyNzAxOQ0KMjQ5MzI3MDMxDQoyNDkzMjcwNDENCjI0OTMyNzA1OQ0KMjQ5MzI3MDczDQoyNDkzMjcxNjMNCjI0OTMyNzE3Mw0KMjQ5MzI3MTg3DQoyNDkzMjcyMDkNCjI0OTMyNzIyOQ0KMjQ5MzI3MjMzDQoyNDkzMjcyNjMNCjI0OTMyNzI3MQ0KMjQ5MzI3MjgzDQoyNDkzMjcyOTMNCjI0OTMyNzMwNw0KMjQ5MzI3MzQxDQoyNDkzMjczNjENCjI0OTMyNzM3MQ0KMjQ5MzI3NDAxDQoyNDkzMjc0MzkNCjI0OTMyNzQ2Nw0KMjQ5MzI3NDczDQoyNDkzMjc0NzkNCjI0OTMyNzQ5OQ0KMjQ5MzI3NTAzDQoyNDkzMjc1NzcNCjI0OTMyNzU4Mw0KMjQ5MzI3NTk5DQoyNDkzMjc2MjMNCjI0OTMyNzY0MQ0KMjQ5MzI3NjUzDQoyNDkzMjc2NzcNCjI0OTMyNzcwNw0KMjQ5MzI3NzM5DQoyNDkzMjc3ODENCjI0OTMyNzc4Nw0KMjQ5MzI3ODE3DQoyNDkzMjc4MjENCjI0OTMyNzgyOQ0KMjQ5MzI3ODUxDQoyNDkzMjc4NTMNCjI0OTMyNzg1Nw0KMjQ5MzI3ODg3DQoyNDkzMjc5NjENCjI0OTMyNzk4Mw0KMjQ5MzI3OTg5DQoyNDkzMjgwMTkNCjI0OTMyODAzMw0KMjQ5MzI4MDYzDQoyNDkzMjgxMTcNCjI0OTMyODE1MQ0KMjQ5MzI4MTY5DQoyNDkzMjgxODENCjI0OTMyODE5OQ0KMjQ5MzI4MjAxDQoyNDkzMjgyMDcNCjI0OTMyODIxMw0KMjQ5MzI4MjE3DQoyNDkzMjgyMzENCjI0OTMyODI1Mw0KMjQ5MzI4MjY3DQoyNDkzMjgyOTENCjI0OTMyODMwOQ0KMjQ5MzI4MzM3DQoyNDkzMjgzNTENCjI0OTMyODM2Nw0KMjQ5MzI4Mzk3DQoyNDkzMjg0MzMNCjI0OTMyODQ0Nw0KMjQ5MzI4NDYzDQoyNDkzMjg1MTcNCjI0OTMyODUyOQ0KMjQ5MzI4NTM3DQoyNDkzMjg1NDMNCjI0OTMyODYwMw0KMjQ5MzI4NjI3DQoyNDkzMjg2MzcNCjI0OTMyODY1Nw0KMjQ5MzI4Njc5DQoyNDkzMjg2ODcNCjI0OTMyODY5OQ0KMjQ5MzI4NzExDQoyNDkzMjg3MjENCjI0OTMyODc1Nw0KMjQ5MzI4ODIzDQoyNDkzMjg4NDENCjI0OTMyODg1Mw0KMjQ5MzI4ODYxDQoyNDkzMjg5NTENCjI0OTMyODk1Nw0KMjQ5MzI4OTY3DQoyNDkzMjg5NzMNCjI0OTMyODk5MQ0KMjQ5MzI4OTk5DQoyNDkzMjkwMjMNCjI0OTMyOTAyNw0KMjQ5MzI5MDI5DQoyNDkzMjkwMzMNCjI0OTMyOTA1Mw0KMjQ5MzI5MDcxDQoyNDkzMjkwODENCjI0OTMyOTExMQ0KMjQ5MzI5MTM3DQoyNDkzMjkxNDcNCjI0OTMyOTE0OQ0KMjQ5MzI5MjAzDQoyNDkzMjkyMDcNCjI0OTMyOTIzMw0KMjQ5MzI5MjU3DQoyNDkzMjkyODENCjI0OTMyOTMwMw0KMjQ5MzI5MzI5DQoyNDkzMjkzNTcNCjI0OTMyOTM1OQ0KMjQ5MzI5MzYzDQoyNDkzMjkzOTMNCjI0OTMyOTQxMQ0KMjQ5MzI5NDEzDQoyNDkzMjk0NDcNCjI0OTMyOTQ2MQ0KMjQ5MzI5NDczDQoyNDkzMjk0NzcNCjI0OTMyOTUxOQ0KMjQ5MzI5NTM3DQoyNDkzMjk1NTENCjI0OTMyOTU3Mw0KMjQ5MzI5NjIzDQoyNDkzMjk2MjkNCjI0OTMyOTY1Nw0KMjQ5MzI5NjY5DQoyNDkzMjk2NzENCjI0OTMyOTY3Nw0KMjQ5MzI5NzE5DQoyNDkzMjk3MzcNCjI0OTMyOTc3MQ0KMjQ5MzI5Nzc5DQoyNDkzMjk3ODkNCjI0OTMyOTc5Nw0KMjQ5MzI5ODI3DQoyNDkzMjk4NzkNCjI0OTMyOTkwMw0KMjQ5MzI5OTA5DQoyNDkzMjk5MTENCjI0OTMyOTkyMQ0KMjQ5MzI5OTIzDQoyNDkzMzAwMDENCjI0OTMzMDAxOQ0KMjQ5MzMwMTAxDQoyNDkzMzAxMjENCjI0OTMzMDEyNw0KMjQ5MzMwMTMxDQoyNDkzMzAxNTcNCjI0OTMzMDE4MQ0KMjQ5MzMwMTg3DQoyNDkzMzAxOTkNCjI0OTMzMDIwOQ0KMjQ5MzMwMjI5DQoyNDkzMzAyNDcNCjI0OTMzMDI1MQ0KMjQ5MzMwMzI5DQoyNDkzMzAzNTkNCjI0OTMzMDM5Nw0KMjQ5MzMwNDA5DQoyNDkzMzA0MTMNCjI0OTMzMDQyMQ0KMjQ5MzMwNDM5DQoyNDkzMzA0NDMNCjI0OTMzMDQ2Mw0KMjQ5MzMwNDgxDQoyNDkzMzA1MDMNCjI0OTMzMDUwOQ0KMjQ5MzMwNTI3DQoyNDkzMzA1MzMNCjI0OTMzMDUzOQ0KMjQ5MzMwNTgxDQoyNDkzMzA1ODMNCjI0OTMzMDYxMQ0KMjQ5MzMwNjE3DQoyNDkzMzA2MjMNCjI0OTMzMDY1OQ0KMjQ5MzMwNjY3DQoyNDkzMzA2NzcNCjI0OTMzMDcwNw0KMjQ5MzMwNzMzDQoyNDkzMzA3NTENCjI0OTMzMDc2OQ0KMjQ5MzMwNzczDQoyNDkzMzA3NzkNCjI0OTMzMDc5Nw0KMjQ5MzMwODExDQoyNDkzMzA4NDENCjI0OTMzMDg0Nw0KMjQ5MzMwODg5DQoyNDkzMzA5NDENCjI0OTMzMDk0Nw0KMjQ5MzMwOTUzDQoyNDkzMzEwMTMNCjI0OTMzMTAzNw0KMjQ5MzMxMDM5DQoyNDkzMzEwNTENCjI0OTMzMTA3Mw0KMjQ5MzMxMDgxDQoyNDkzMzExNTMNCjI0OTMzMTE2OQ0KMjQ5MzMxMjYxDQoyNDkzMzEyODkNCjI0OTMzMTMwOQ0KMjQ5MzMxMzM3DQoyNDkzMzEzNDkNCjI0OTMzMTM2Mw0KMjQ5MzMxMzg3DQoyNDkzMzEzOTENCjI0OTMzMTM5Mw0KMjQ5MzMxMzk5DQoyNDkzMzE0MTcNCjI0OTMzMTQyOQ0KMjQ5MzMxNDg3DQoyNDkzMzE1MTMNCjI0OTMzMTUxNw0KMjQ5MzMxNTQxDQoyNDkzMzE1NDkNCjI0OTMzMTU1Mw0KMjQ5MzMxNTU5DQoyNDkzMzE1OTcNCjI0OTMzMTYwMQ0KMjQ5MzMxNjMzDQoyNDkzMzE2MzcNCjI0OTMzMTY1MQ0KMjQ5MzMxNjU3DQoyNDkzMzE2NzkNCjI0OTMzMTY5Nw0KMjQ5MzMxNzExDQoyNDkzMzE3MjcNCjI0OTMzMTczOQ0KMjQ5MzMxNzgxDQoyNDkzMzE3OTMNCjI0OTMzMTgwMQ0KMjQ5MzMxODExDQoyNDkzMzE4NDcNCjI0OTMzMTg2Nw0KMjQ5MzMxOTIxDQoyNDkzMzE5MzkNCjI0OTMzMTk2MQ0KMjQ5MzMxOTYzDQoyNDkzMzE5NjcNCjI0OTMzMjAwOQ0KMjQ5MzMyMDIxDQoyNDkzMzIwNTENCjI0OTMzMjA1OQ0KMjQ5MzMyMDc3DQoyNDkzMzIwODkNCjI0OTMzMjA5OQ0KMjQ5MzMyMTI5DQoyNDkzMzIxMzENCjI0OTMzMjE3Mw0KMjQ5MzMyMTc3DQoyNDkzMzIxOTcNCjI0OTMzMjIwMQ0KMjQ5MzMyMjIxDQoyNDkzMzIyNjMNCjI0OTMzMjMwOQ0KMjQ5MzMyMzI5DQoyNDkzMzIzNzENCjI0OTMzMjM5OQ0KMjQ5MzMyNDE3DQo1NDkzMjA2ODAxDQo1NDkzMjA2ODQzDQo1NDkzMjA2ODYxDQo1NDkzMjA2ODk3DQo1NDkzMjA2OTMzDQo1NDkzMjA2OTQ3DQo1NDkzMjA2OTUxDQo1NDkzMjA2OTU5DQo1NDkzMjA2OTY5DQo1NDkzMjA2OTg3DQo1NDkzMjA3MDE3DQo1NDkzMjA3MDUzDQo1NDkzMjA3MDY3DQo1NDkzMjA3MTAzDQo1NDkzMjA3MTEzDQo1NDkzMjA3MTE5DQo1NDkzMjA3MTQzDQo1NDkzMjA3MTkzDQo1NDkzMjA3MTk5DQo1NDkzMjA3MjMzDQo1NDkzMjA3MjUzDQo1NDkzMjA3MjU5DQo1NDkzMjA3MjgzDQo1NDkzMjA3Mjk5DQo1NDkzMjA3MzI5DQo1NDkzMjA3MzQxDQo1NDkzMjA3MzYxDQo1NDkzMjA3MzcxDQo1NDkzMjA3Mzg5DQo1NDkzMjA3NDI3DQo1NDkzMjA3NDM3DQo1NDkzMjA3NDY5DQo1NDkzMjA3NDg3DQo1NDkzMjA3NTIzDQo1NDkzMjA3NTI3DQo1NDkzMjA3NTI5DQo1NDkzMjA3NTQ3DQo1NDkzMjA3NTU3DQo1NDkzMjA3NjExDQo1NDkzMjA3NjEzDQo1NDkzMjA3NjE5DQo1NDkzMjA3NjQ3DQo1NDkzMjA3NjQ5DQo1NDkzMjA3NjU5DQo1NDkzMjA3Njc3DQo1NDkzMjA3Njg5DQo1NDkzMjA3NzYxDQo1NDkzMjA3Nzc5DQo1NDkzMjA3NzkxDQo1NDkzMjA3Nzk5DQo1NDkzMjA3ODA5DQo1NDkzMjA3ODIxDQo1NDkzMjA3ODIzDQo1NDkzMjA3ODMzDQo1NDkzMjA3ODQ3DQo1NDkzMjA3ODcxDQo1NDkzMjA3ODg3DQo1NDkzMjA3ODk5DQo1NDkzMjA3OTAxDQo1NDkzMjA3OTQ3DQo1NDkzMjA3OTUzDQo1NDkzMjA3OTU5DQo1NDkzMjA3OTgzDQo1NDkzMjA4MDAxDQo1NDkzMjA4MDMxDQo1NDkzMjA4MDM3DQo1NDkzMjA4MDU3DQo1NDkzMjA4MTA5DQo1NDkzMjA4MTIxDQo1NDkzMjA4MTQxDQo1NDkzMjA4MTYzDQo1NDkzMjA4MjEzDQo1NDkzMjA4MjIzDQo1NDkzMjA4MjQxDQo1NDkzMjA4MjcxDQo1NDkzMjA4MzA5DQo1NDkzMjA4MzQ5DQo1NDkzMjA4Mzc5DQo1NDkzMjA4NDExDQo1NDkzMjA4NDI5DQo1NDkzMjA4NDMzDQo1NDkzMjA4NDQ3DQo1NDkzMjA4NDUxDQo1NDkzMjA4NDcxDQo1NDkzMjA4NTQ3DQo1NDkzMjA4NTQ5DQo1NDkzMjA4NTU5DQo1NDkzMjA4NjAxDQo1NDkzMjA4NjA3DQo1NDkzMjA4NjE5DQo1NDkzMjA4NjI3DQo1NDkzMjA4NjY3DQo1NDkzMjA4Njg3DQo1NDkzMjA4NzA5DQo1NDkzMjA4NzIzDQo1NDkzMjA4NzMzDQo1NDkzMjA4OTI3DQo1NDkzMjA4OTM5DQo1NDkzMjA4OTUxDQo1NDkzMjA4OTU3DQo1NDkzMjA4OTk5DQo1NDkzMjA5MDQxDQo1NDkzMjA5MDYzDQo1NDkzMjA5MDc3DQo1NDkzMjA5MDg5DQo1NDkzMjA5MTE5DQo1NDkzMjA5MTQzDQo1NDkzMjA5MTcxDQo1NDkzMjA5MjQzDQo1NDkzMjA5MjUxDQo1NDkzMjA5MjU3DQo1NDkzMjA5MjczDQo1NDkzMjA5MjkxDQo1NDkzMjA5MzQxDQo1NDkzMjA5MzU3DQo1NDkzMjA5MzY5DQo1NDkzMjA5Mzg5DQo1NDkzMjA5NDAxDQo1NDkzMjA5NDExDQo1NDkzMjA5NDE3DQo1NDkzMjA5NDQxDQo1NDkzMjA5NDYxDQo1NDkzMjA5NDg5DQo1NDkzMjA5NDk3DQo1NDkzMjA5NTAzDQo1NDkzMjA5NTA5DQo1NDkzMjA5NTQzDQo1NDkzMjA5NTY5DQo1NDkzMjA5NTgxDQo1NDkzMjA5NTkxDQo1NDkzMjA5NTkzDQo1NDkzMjA5NTk5DQo1NDkzMjA5NzE3DQo1NDkzMjA5NzQ3DQo1NDkzMjA5NzY3DQo1NDkzMjA5Nzg5DQo1NDkzMjA5Nzk3DQo1NDkzMjA5ODAxDQo1NDkzMjA5ODAzDQo1NDkzMjA5ODczDQo1NDkzMjA5ODkzDQo1NDkzMjA5OTMzDQo1NDkzMjA5OTQxDQo1NDkzMjEwMDU5DQo1NDkzMjEwMTAzDQo1NDkzMjEwMTA5DQo1NDkzMjEwMTEzDQo1NDkzMjEwMTMzDQo1NDkzMjEwMTU3DQo1NDkzMjEwMTY3DQo1NDkzMjEwMTkzDQo1NDkzMjEwMjA5DQo1NDkzMjEwMjI3DQo1NDkzMjEwMjQxDQo1NDkzMjEwMjU3DQo1NDkzMjEwMjU5DQo1NDkzMjEwMjc3DQo1NDkzMjEwMzI5DQo1NDkzMjEwMzY3DQo1NDkzMjEwMzc3DQo1NDkzMjEwMzg5DQo1NDkzMjEwNDA3DQo1NDkzMjEwNDEzDQo1NDkzMjEwNDMzDQo1NDkzMjEwNDY3DQo1NDkzMjEwNDg3DQo1NDkzMjEwNTIxDQo1NDkzMjEwNTUzDQo1NDkzMjEwNTU3DQo1NDkzMjEwNTc3DQo1NDkzMjEwNTgxDQo1NDkzMjEwNjAxDQo1NDkzMjEwNjA3DQo1NDkzMjEwNjE3DQo1NDkzMjEwNjIzDQo1NDkzMjEwNjM3DQo1NDkzMjEwNjQxDQo1NDkzMjEwNjQ5DQo1NDkzMjEwNjg5DQo1NDkzMjEwNjkxDQo1NDkzMjEwNzEzDQo1NDkzMjEwNzE5DQo1NDkzMjEwNzQzDQo1NDkzMjEwNzk3DQo1NDkzMjEwODAzDQo1NDkzMjEwODM5DQo1NDkzMjEwODQxDQo1NDkzMjEwODQ3DQo1NDkzMjEwODkzDQo1NDkzMjEwOTA3DQo1NDkzMjEwOTIzDQo1NDkzMjEwOTI5DQo1NDkzMjEwOTM3DQo1NDkzMjEwOTQ5DQo1NDkzMjExMDA3DQo1NDkzMjExMDIxDQo1NDkzMjExMDUxDQo1NDkzMjExMDYzDQo1NDkzMjExMDY5DQo1NDkzMjExMDgxDQo1NDkzMjExMDkzDQo1NDkzMjExMTExDQo1NDkzMjExMTIzDQo1NDkzMjExMTI3DQo1NDkzMjExMTQ3DQo1NDkzMjExMTUzDQo1NDkzMjExMjExDQo1NDkzMjExMjMxDQo1NDkzMjExMjcxDQo1NDkzMjExMzAzDQo1NDkzMjExMzEzDQo1NDkzMjExMzU3DQo1NDkzMjExMzkzDQo1NDkzMjExNDgxDQo1NDkzMjExNDg3DQo1NDkzMjExNDk5DQo1NDkzMjExNTYxDQo1NDkzMjExNTcxDQo1NDkzMjExNTgzDQo1NDkzMjExNTk3DQo1NDkzMjExNjQzDQo1NDkzMjExNjUxDQo1NDkzMjExNjY3DQo1NDkzMjExNjgxDQo1NDkzMjExNjk5DQo1NDkzMjExNzI3DQo1NDkzMjExNzI5DQo1NDkzMjExNzQ3DQo1NDkzMjExNzk5DQo1NDkzMjExODQ5DQo1NDkzMjExODgzDQo1NDkzMjExODkxDQo1NDkzMjExOTAxDQo1NDkzMjExOTA3DQo1NDkzMjExOTMxDQo1NDkzMjExOTQzDQo1NDkzMjExOTQ5DQo1NDkzMjExOTYzDQo1NDkzMjEyMDAzDQo1NDkzMjEyMDE3DQo1NDkzMjEyMDI3DQo1NDkzMjEyMDQxDQo1NDkzMjEyMDcxDQo1NDkzMjEyMTI5DQo1NDkzMjEyMTY3DQo1NDkzMjEyMjAxDQo1NDkzMjEyMjA5DQo1NDkzMjEyMjEzDQo1NDkzMjEyMjM3DQo1NDkzMjEyMjY5DQo1NDkzMjEyMjczDQo1NDkzMjEyMjk5DQo1NDkzMjEyMzcxDQo1NDkzMjEyNDIzDQo1NDkzMjEyNDQ3DQo1NDkzMjEyNDQ5DQo1NDkzMjEyNDUzDQo1NDkzMjEyNDcxDQo1NDkzMjEyNDc3DQo1NDkzMjEyNDc5DQo1NDkzMjEyNTAzDQo1NDkzMjEyNTYzDQo1NDkzMjEyNTczDQo1NDkzMjEyNTc5DQo1NDkzMjEyNTgxDQo1NDkzMjEyNTg3DQo1NDkzMjEyNTkxDQo1NDkzMjEyNjAzDQo1NDkzMjEyNjI5DQo1NDkzMjEyNjM5DQo1NDkzMjEyNjg5DQo1NDkzMjEyNzAxDQo1NDkzMjEyNzI5DQo1NDkzMjEyNzMxDQo1NDkzMjEyODI3DQo1NDkzMjEyODMxDQo1NDkzMjEyODQ5DQo1NDkzMjEyODg3DQo1NDkzMjEyODk3DQo1NDkzMjEyOTAzDQo1NDkzMjEyOTA5DQo1NDkzMjEyOTk5DQo1NDkzMjEzMDA3DQo1NDkzMjEzMDE3DQo1NDkzMjEzMDQ5DQo1NDkzMjEzMDY3DQo1NDkzMjEzMDc5DQo1NDkzMjEzMTM3DQo1NDkzMjEzMTYzDQo1NDkzMjEzMTkxDQo1NDkzMjEzMTk5DQo1NDkzMjEzMjE3DQo1NDkzMjEzMjI3DQo1NDkzMjEzMjc3DQo1NDkzMjEzMzM3DQo1NDkzMjEzMzQzDQo1NDkzMjEzMzczDQo1NDkzMjEzMzg5DQo1NDkzMjEzNDIxDQo1NDkzMjEzNDkxDQo1NDkzMjEzNTAzDQo1NDkzMjEzNTU5DQo1NDkzMjEzNTk5DQo1NDkzMjEzNjE3DQo1NDkzMjEzNjIzDQo1NDkzMjEzNjM3DQo1NDkzMjEzNjUzDQo1NDkzMjEzNjc5DQo1NDkzMjEzNjgzDQo1NDkzMjEzNzczDQo1NDkzMjEzODMzDQo1NDkzMjEzODgzDQo1NDkzMjEzOTQxDQo1NDkzMjEzOTQ5DQo1NDkzMjEzOTUzDQo1NDkzMjEzOTc3DQo1NDkzMjE0MDAzDQo1NDkzMjE0MDQ5DQo1NDkzMjE0MDczDQo1NDkzMjE0MDk5DQo1NDkzMjE0MTE3DQo1NDkzMjE0MTQ3DQo1NDkzMjE0MTY5DQo1NDkzMjE0MTg3DQo1NDkzMjE0MTg5DQo1NDkzMjE0MTkzDQo1NDkzMjE0MjAxDQo1NDkzMjE0MjE3DQo1NDkzMjE0MjYxDQo1NDkzMjE0Mjc3DQo1NDkzMjE0Mjg5DQo1NDkzMjE0MzE5DQo1NDkzMjE0MzI3DQo1NDkzMjE0MzM5DQo1NDkzMjE0MzQzDQo1NDkzMjE0MzUxDQo1NDkzMjE0MzU3DQo1NDkzMjE0MzY3DQo1NDkzMjE0Mzc5DQo1NDkzMjE0MzgxDQo1NDkzMjE0NDE3DQo1NDkzMjE0NDI3DQo1NDkzMjE0NDI5DQo1NDkzMjE0NDUxDQo1NDkzMjE0NDg3DQo1NDkzMjE0NTExDQo1NDkzMjE0NTQ3DQo1NDkzMjE0NTUzDQo1NDkzMjE0NTc5DQo1NDkzMjE0NjY5DQo1NDkzMjE0NzAzDQo1NDkzMjE0NzE3DQo1NDkzMjE0NzM5DQo1NDkzMjE0NzUxDQo1NDkzMjE0NzU5DQo1NDkzMjE0NzgxDQo1NDkzMjE0Nzg5DQo1NDkzMjE0ODAxDQo1NDkzMjE0ODQxDQo1NDkzMjE0ODQzDQo1NDkzMjE0ODYxDQo1NDkzMjE0ODcxDQo1NDkzMjE0ODc3DQo1NDkzMjE0ODk3DQo1NDkzMjE0OTA3DQo1NDkzMjE0OTIxDQo1NDkzMjE0OTI3DQo1NDkzMjE0OTMxDQo1NDkzMjE0OTk5DQo1NDkzMjE1MDExDQo1NDkzMjE1MDE3DQo1NDkzMjE1MDI5DQo1NDkzMjE1MDQ3DQo1NDkzMjE1MDU5DQo1NDkzMjE1MDcxDQo1NDkzMjE1MDkzDQo1NDkzMjE1MTA3DQo1NDkzMjE1MTExDQo1NDkzMjE1MTI5DQo1NDkzMjE1MTcxDQo1NDkzMjE1MTczDQo1NDkzMjE1MTgzDQo1NDkzMjE1MjA3DQo1NDkzMjE1MjM5DQo1NDkzMjE1MjQzDQo1NDkzMjE1MjY5DQo1NDkzMjE1Mjk3DQo1NDkzMjE1MzE3DQo1NDkzMjE1MzQ3DQo1NDkzMjE1MzUzDQo1NDkzMjE1NDExDQo1NDkzMjE1NDM3DQo1NDkzMjE1NDQzDQo1NDkzMjE1NDQ3DQo1NDkzMjE1NDU5DQo1NDkzMjE1NDYxDQo1NDkzMjE1NDg5DQo1NDkzMjE1NTA5DQo1NDkzMjE1NTIxDQo1NDkzMjE1NTQ5DQo1NDkzMjE1NTg3DQo1NDkzMjE1NjM5DQo1NDkzMjE1NjcxDQo1NDkzMjE1NjgxDQo1NDkzMjE1NzE5DQo1NDkzMjE1NzQ3DQo1NDkzMjE1NzUzDQo1NDkzMjE1NzU5DQo1NDkzMjE1NzczDQo1NDkzMjE1Nzg5DQo1NDkzMjE1ODAxDQo1NDkzMjE1ODA3DQo1NDkzMjE1ODIxDQo1NDkzMjE1ODM5DQo1NDkzMjE1ODQzDQo1NDkzMjE1ODU3DQo1NDkzMjE1ODY5DQo1NDkzMjE1ODg3DQo1NDkzMjE1OTExDQo1NDkzMjE1OTM5DQo1NDkzMjE1OTgzDQo1NDkzMjE2MDEzDQo1NDkzMjE2MDE5DQo1NDkzMjE2MDMxDQo1NDkzMjE2MDQ5DQo1NDkzMjE2MDU5DQo1NDkzMjE2MDYxDQo1NDkzMjE2MDgzDQo1NDkzMjE2MDk3DQo1NDkzMjE2MTAxDQo1NDkzMjE2MTA3DQo1NDkzMjE2MTM5DQo1NDkzMjE2MTYxDQo1NDkzMjE2MTg3DQo1NDkzMjE2MTkxDQo1NDkzMjE2MTkzDQo1NDkzMjE2MjMzDQo1NDkzMjE2MjUxDQo1NDkzMjE2MjY5DQo1NDkzMjE2Mjc3DQo1NDkzMjE2MjgzDQo1NDkzMjE2MzI5DQo1NDkzMjE2MzUzDQo1NDkzMjE2MzYxDQo1NDkzMjE2MzcxDQo1NDkzMjE2MzgzDQo1NDkzMjE2NDAzDQo1NDkzMjE2NDEzDQo1NDkzMjE2NDI3DQo1NDkzMjE2NDc5DQo1NDkzMjE2NDgxDQo1NDkzMjE2NTE3DQo1NDkzMjE2NTI5DQo1NDkzMjE2NTM5DQo1NDkzMjE2NTU3DQo1NDkzMjE2NTcxDQo1NDkzMjE2NjA3DQo1NDkzMjE2NjI5DQo1NDkzMjE2NjQzDQo1NDkzMjE2NjQ5DQo1NDkzMjE2Njg5DQo1NDkzMjE2NzE5DQo1NDkzMjE2NzIxDQo1NDkzMjE2NzMzDQo1NDkzMjE2NzM5DQo1NDkzMjE2NzY3DQo1NDkzMjE2ODA5DQo1NDkzMjE2ODg3DQo1NDkzMjE2ODk5DQo1NDkzMjE2OTIzDQo1NDkzMjE2OTQzDQo1NDkzMjE2OTk3DQo1NDkzMjE3MDAxDQo1NDkzMjE3MDAzDQo1NDkzMjE3MDQzDQo1NDkzMjE3MDYxDQo1NDkzMjE3MDY5DQo1NDkzMjE3MTUzDQo1NDkzMjE3MTk5DQo1NDkzMjE3MjExDQo1NDkzMjE3MjI5DQo1NDkzMjE3MjcxDQo1NDkzMjE3MjkxDQo1NDkzMjE3MzMzDQo1NDkzMjE3MzM3DQo1NDkzMjE3MzkzDQo1NDkzMjE3Mzk5DQo1NDkzMjE3NDE3DQo1NDkzMjE3NDI3DQo1NDkzMjE3NDQxDQo1NDkzMjE3NDQ3DQo1NDkzMjE3NDUxDQo1NDkzMjE3NTAxDQo1NDkzMjE3NTExDQo1NDkzMjE3NTE3DQo1NDkzMjE3NTQ5DQo1NDkzMjE3NjAxDQo1NDkzMjE3NjA3DQo1NDkzMjE3NjQzDQo1NDkzMjE3NjUxDQo1NDkzMjE3NjY5DQo1NDkzMjE3Njg3DQo1NDkzMjE3NzIxDQo1NDkzMjE3NzUzDQo1NDkzMjE3Nzg5DQo1NDkzMjE3ODMxDQo1NDkzMjE3ODU5DQo1NDkzMjE3ODgzDQo1NDkzMjE3OTY5DQo1NDkzMjE3OTc5DQo1NDkzMjE3OTkxDQo1NDkzMjE3OTkzDQo1NDkzMjE4MDIzDQo1NDkzMjE4MDMzDQo1NDkzMjE4MDUzDQo1NDkzMjE4MDYzDQo1NDkzMjE4MTExDQo1NDkzMjE4MTEzDQo1NDkzMjE4MjIxDQo1NDkzMjE4MjU3DQo1NDkzMjE4MjYxDQo1NDkzMjE4MjczDQo1NDkzMjE4MzU5DQo1NDkzMjE4Mzc3DQo1NDkzMjE4NDA3DQo1NDkzMjE4NDExDQo1NDkzMjE4NDQxDQo1NDkzMjE4NDQ3DQo1NDkzMjE4NDUzDQo1NDkzMjE4NDc3DQo1NDkzMjE4NTEzDQo1NDkzMjE4NTM5DQo1NDkzMjE4NTk3DQo1NDkzMjE4NjE3DQo1NDkzMjE4NjIzDQo1NDkzMjE4NjUxDQo1NDkzMjE4Njk5DQo1NDkzMjE4NzA3DQo1NDkzMjE4NzExDQo1NDkzMjE4NzQxDQo1NDkzMjE4ODAzDQo1NDkzMjE4ODA3DQo1NDkzMjE4ODMzDQo1NDkzMjE4ODQ5DQo1NDkzMjE4ODczDQo1NDkzMjE4ODkzDQo1NDkzMjE4ODk3DQo1NDkzMjE4OTAzDQo1NDkzMjE4OTIxDQo1NDkzMjE4OTU3DQo1NDkzMjE4OTcxDQo1NDkzMjE4OTc3DQo1NDkzMjE4OTk5DQo1NDkzMjE5MTYxDQo1NDkzMjE5MTg3DQo1NDkzMjE5MjE3DQo1NDkzMjE5MjIzDQo1NDkzMjE5MjI3DQo1NDkzMjE5MjI5DQo1NDkzMjE5MjMzDQo1NDkzMjE5MjkzDQo1NDkzMjE5MzAxDQo1NDkzMjE5MzExDQo1NDkzMjE5MzU5DQo1NDkzMjE5MzczDQo1NDkzMjE5Mzc5DQo1NDkzMjE5NDE5DQo1NDkzMjE5NDM5DQo1NDkzMjE5NDQzDQo1NDkzMjE5NDQ5DQo1NDkzMjE5NDUxDQo1NDkzMjE5NDkxDQo1NDkzMjE5NTA5DQo1NDkzMjE5NTIxDQo1NDkzMjE5NTMzDQo1NDkzMjE5NTUxDQo1NDkzMjE5NTgxDQo1NDkzMjE5NjE3DQo1NDkzMjE5NjQ5DQo1NDkzMjE5NjU5DQo1NDkzMjE5NjkxDQo1NDkzMjE5NzU3DQo1NDkzMjE5NzYxDQo1NDkzMjE5Nzc5DQo1NDkzMjE5NzkxDQo1NDkzMjE5ODI5DQo1NDkzMjE5ODMzDQo1NDkzMjE5ODU5DQo1NDkzMjE5ODg3DQo1NDkzMjE5ODk5DQo1NDkzMjE5OTIzDQo1NDkzMjE5OTYxDQo1NDkzMjE5OTY3DQo1NDkzMjE5OTcxDQo1NDkzMjE5OTgzDQo1NDkzMjIwMDIxDQo1NDkzMjIwMDYzDQo1NDkzMjIwMDY5DQo1NDkzMjIwMDk3DQo1NDkzMjIwMDk5DQo5NDkzMjA2ODAzDQo5NDkzMjA2ODM5DQo5NDkzMjA2ODUxDQo5NDkzMjA2ODU3DQo5NDkzMjA2ODg5DQo5NDkzMjA2ODkzDQo5NDkzMjA2OTA3DQo5NDkzMjA2OTQxDQo5NDkzMjA3MDAxDQo5NDkzMjA3MDIxDQo5NDkzMjA3MDU3DQo5NDkzMjA3MDY5DQo5NDkzMjA3MDkxDQo5NDkzMjA3MTAzDQo5NDkzMjA3MTIxDQo5NDkzMjA3MTQ3DQo5NDkzMjA3MTgxDQo5NDkzMjA3MTg3DQo5NDkzMjA3MTg5DQo5NDkzMjA3MjMxDQo5NDkzMjA3MjM3DQo5NDkzMjA3MjQ3DQo5NDkzMjA3MjU5DQo5NDkzMjA3MjY3DQo5NDkzMjA3MjcxDQo5NDkzMjA3MzAxDQo5NDkzMjA3MzE5DQo5NDkzMjA3Mzk3DQo5NDkzMjA3NDAzDQo5NDkzMjA3NDE3DQo5NDkzMjA3NDMzDQo5NDkzMjA3NDQ3DQo5NDkzMjA3NDgzDQo5NDkzMjA3NTczDQo5NDkzMjA3NTk3DQo5NDkzMjA3NjIxDQo5NDkzMjA3NjM3DQo5NDkzMjA3NjQ5DQo5NDkzMjA3NjUxDQo5NDkzMjA3NjczDQo5NDkzMjA3Njk5DQo5NDkzMjA3NzMzDQo5NDkzMjA3NzgxDQo5NDkzMjA3NzgzDQo5NDkzMjA3Nzk5DQo5NDkzMjA3ODE3DQo5NDkzMjA3ODE5DQo5NDkzMjA3ODMxDQo5NDkzMjA3ODUzDQo5NDkzMjA3ODU5DQo5NDkzMjA3ODc3DQo5NDkzMjA3ODc5DQo5NDkzMjA3ODkxDQo5NDkzMjA3OTIxDQo5NDkzMjA3OTczDQo5NDkzMjA3OTg3DQo5NDkzMjA4MDMzDQo5NDkzMjA4MDU3DQo5NDkzMjA4MDYzDQo5NDkzMjA4MDkzDQo5NDkzMjA4MDk5DQo5NDkzMjA4MTQ5DQo5NDkzMjA4MTU5DQo5NDkzMjA4MTYxDQo5NDkzMjA4MTY3DQo5NDkzMjA4MTg5DQo5NDkzMjA4MjI3DQo5NDkzMjA4MjM3DQo5NDkzMjA4MjY5DQo5NDkzMjA4MjczDQo5NDkzMjA4MjkzDQo5NDkzMjA4MzM5DQo5NDkzMjA4MzY5DQo5NDkzMjA4MzcxDQo5NDkzMjA4MzgxDQo5NDkzMjA4NDExDQo5NDkzMjA4NDE5DQo5NDkzMjA4NDQzDQo5NDkzMjA4NDY3DQo5NDkzMjA4NDg5DQo5NDkzMjA4NTAzDQo5NDkzMjA4NTM5DQo5NDkzMjA4NTkxDQo5NDkzMjA4NjE3DQo5NDkzMjA4NjUzDQo5NDkzMjA4NjU3DQo5NDkzMjA4Njc3DQo5NDkzMjA4Njg5DQo5NDkzMjA4NjkzDQo5NDkzMjA4NzEzDQo5NDkzMjA4NzE3DQo5NDkzMjA4Nzk3DQo5NDkzMjA4ODAxDQo5NDkzMjA4ODQzDQo5NDkzMjA4ODY5DQo5NDkzMjA4OTExDQo5NDkzMjA4OTM5DQo5NDkzMjA4OTkzDQo5NDkzMjA5MDEzDQo5NDkzMjA5MDIzDQo5NDkzMjA5MDMxDQo5NDkzMjA5MDQxDQo5NDkzMjA5MDU5DQo5NDkzMjA5MDY3DQo5NDkzMjA5MDk3DQo5NDkzMjA5MTI3DQo5NDkzMjA5MTMzDQo5NDkzMjA5MTgxDQo5NDkzMjA5MTk3DQo5NDkzMjA5MjAzDQo5NDkzMjA5MjExDQo5NDkzMjA5MjI3DQo5NDkzMjA5MjU5DQo5NDkzMjA5MjYzDQo5NDkzMjA5Mjc3DQo5NDkzMjA5MzQ3DQo5NDkzMjA5MzYxDQo5NDkzMjA5NDA5DQo5NDkzMjA5NDQzDQo5NDkzMjA5NDYzDQo5NDkzMjA5NDkzDQo5NDkzMjA5NDk5DQo5NDkzMjA5NTIxDQo5NDkzMjA5NTI3DQo5NDkzMjA5NTQxDQo5NDkzMjA5NTUzDQo5NDkzMjA5NTY5DQo5NDkzMjA5NTg3DQo5NDkzMjA5NjExDQo5NDkzMjA5NjEzDQo5NDkzMjA5NjQxDQo5NDkzMjA5NjQzDQo5NDkzMjA5Njk3DQo5NDkzMjA5NzMxDQo5NDkzMjA5NzU3DQo5NDkzMjA5NzkzDQo5NDkzMjA5ODI5DQo5NDkzMjA5ODQxDQo5NDkzMjA5ODU3DQo5NDkzMjA5OTA3DQo5NDkzMjA5OTIzDQo5NDkzMjA5OTU5DQo5NDkzMjA5OTk3DQo5NDkzMjEwMDE5DQo5NDkzMjEwMDIxDQo5NDkzMjEwMDM3DQo5NDkzMjEwMTIxDQo5NDkzMjEwMTIzDQo5NDkzMjEwMTg5DQo5NDkzMjEwMjAxDQo5NDkzMjEwMjE5DQo5NDkzMjEwMjgzDQo5NDkzMjEwMjk3DQo5NDkzMjEwMzMzDQo5NDkzMjEwMzUxDQo5NDkzMjEwMzY3DQo5NDkzMjEwMzg3DQo5NDkzMjEwNDAzDQo5NDkzMjEwNDIxDQo5NDkzMjEwNDI5DQo5NDkzMjEwNDM5DQo5NDkzMjEwNDU3DQo5NDkzMjEwNTQ3DQo5NDkzMjEwNTQ5DQo5NDkzMjEwNTUzDQo5NDkzMjEwNTg5DQo5NDkzMjEwNTkxDQo5NDkzMjEwNjAzDQo5NDkzMjEwNjA3DQo5NDkzMjEwNjE5DQo5NDkzMjEwNjIxDQo5NDkzMjEwNjMzDQo5NDkzMjEwNjUxDQo5NDkzMjEwNzE3DQo5NDkzMjEwNzIzDQo5NDkzMjEwNzUxDQo5NDkzMjEwNzc3DQo5NDkzMjEwNzg5DQo5NDkzMjEwNzk5DQo5NDkzMjEwODE5DQo5NDkzMjEwODQ3DQo5NDkzMjEwOTEzDQo5NDkzMjEwOTE5DQo5NDkzMjEwOTczDQo5NDkzMjEwOTgxDQo5NDkzMjEwOTk5DQo5NDkzMjExMDIzDQo5NDkzMjExMDMzDQo5NDkzMjExMDgxDQo5NDkzMjExMDgzDQo5NDkzMjExMTQ5DQo5NDkzMjExMTgzDQo5NDkzMjExMjI3DQo5NDkzMjExMjYzDQo5NDkzMjExMjY5DQo5NDkzMjExMjc5DQo5NDkzMjExMjk3DQo5NDkzMjExMzAzDQo5NDkzMjExMzM5DQo5NDkzMjExMzY5DQo5NDkzMjExMzg5DQo5NDkzMjExNDAxDQo5NDkzMjExNDExDQo5NDkzMjExNDE5DQo5NDkzMjExNDQ5DQo5NDkzMjExNDYxDQo5NDkzMjExNDY3DQo5NDkzMjExNDc3DQo5NDkzMjExNTAzDQo5NDkzMjExNTM3DQo5NDkzMjExNTQzDQo5NDkzMjExNTU3DQo5NDkzMjExNTczDQo5NDkzMjExNTc5DQo5NDkzMjExNjMzDQo5NDkzMjExNjM5DQo5NDkzMjExNjQxDQo5NDkzMjExNjQ3DQo5NDkzMjExNjcxDQo5NDkzMjExNjc3DQo5NDkzMjExNzAxDQo5NDkzMjExNzMxDQo5NDkzMjExNzQzDQo5NDkzMjExNzUzDQo5NDkzMjExODIxDQo5NDkzMjExODMxDQo5NDkzMjExODYzDQo5NDkzMjExODY5DQo5NDkzMjExODc5DQo5NDkzMjExODg3DQo5NDkzMjExOTI5DQo5NDkzMjExOTgzDQo5NDkzMjEyMDQ5DQo5NDkzMjEyMDU5DQo5NDkzMjEyMDYxDQo5NDkzMjEyMTQzDQo5NDkzMjEyMTg3DQo5NDkzMjEyMTkxDQo5NDkzMjEyMjIxDQo5NDkzMjEyMjI5DQo5NDkzMjEyMjUxDQo5NDkzMjEyMjkzDQo5NDkzMjEyMzE3DQo5NDkzMjEyMzI5DQo5NDkzMjEyMzMxDQo5NDkzMjEyMzQzDQo5NDkzMjEyMzUzDQo5NDkzMjEyMzcxDQo5NDkzMjEyMzczDQo5NDkzMjEyNDAxDQo5NDkzMjEyNDU3DQo5NDkzMjEyNDc5DQo5NDkzMjEyNTE3DQo5NDkzMjEyNTIzDQo5NDkzMjEyNTQxDQo5NDkzMjEyNTU5DQo5NDkzMjEyNTc3DQo5NDkzMjEyNTgzDQo5NDkzMjEyNjAxDQo5NDkzMjEyNjIzDQo5NDkzMjEyNjUzDQo5NDkzMjEyNjY3DQo5NDkzMjEyNjk3DQo5NDkzMjEyNzIxDQo5NDkzMjEyNzMzDQo5NDkzMjEyNzM3DQo5NDkzMjEyNzYxDQo5NDkzMjEyNzY3DQo5NDkzMjEyNzY5DQo5NDkzMjEyNzkzDQo5NDkzMjEyODIxDQo5NDkzMjEyODQ3DQo5NDkzMjEyODcxDQo5NDkzMjEyODg3DQo5NDkzMjEyODg5DQo5NDkzMjEyOTIzDQo5NDkzMjEyOTMxDQo5NDkzMjEyOTQzDQo5NDkzMjEyOTgzDQo5NDkzMjEyOTk3DQo5NDkzMjEzMDAxDQo5NDkzMjEzMDAzDQo5NDkzMjEzMDA3DQo5NDkzMjEzMDY5DQo5NDkzMjEzMTU5DQo5NDkzMjEzMTkzDQo5NDkzMjEzMjA3DQo5NDkzMjEzMjczDQo5NDkzMjEzMjc3DQo5NDkzMjEzMjgzDQo5NDkzMjEzMzEzDQo5NDkzMjEzNDAzDQo5NDkzMjEzNDE3DQo5NDkzMjEzNDM5DQo5NDkzMjEzNDQxDQo5NDkzMjEzNDU5DQo5NDkzMjEzNDg3DQo5NDkzMjEzNDkzDQo5NDkzMjEzNTI5DQo5NDkzMjEzNTM3DQo5NDkzMjEzNTY3DQo5NDkzMjEzNTc3DQo5NDkzMjEzNjUxDQo5NDkzMjEzNjg3DQo5NDkzMjEzNzAzDQo5NDkzMjEzNzExDQo5NDkzMjEzNzIxDQo5NDkzMjEzNzUzDQo5NDkzMjEzNzU3DQo5NDkzMjEzNzgzDQo5NDkzMjEzODAxDQo5NDkzMjEzODM3DQo5NDkzMjEzODQzDQo5NDkzMjEzODYxDQo5NDkzMjEzODcxDQo5NDkzMjEzODgzDQo5NDkzMjEzOTAxDQo5NDkzMjEzOTA3DQo5NDkzMjEzOTQzDQo5NDkzMjEzOTczDQo5NDkzMjE0MDMzDQo5NDkzMjE0MDU3DQo5NDkzMjE0MDgzDQo5NDkzMjE0MDk5DQo5NDkzMjE0MTQ3DQo5NDkzMjE0MTUzDQo5NDkzMjE0MTYxDQo5NDkzMjE0MjAxDQo5NDkzMjE0MjMzDQo5NDkzMjE0MjU3DQo5NDkzMjE0MjYxDQo5NDkzMjE0MjY3DQo5NDkzMjE0Mjc5DQo5NDkzMjE0MzA5DQo5NDkzMjE0MzgzDQo5NDkzMjE0Mzk5DQo5NDkzMjE0NDA3DQo5NDkzMjE0NDE3DQo5NDkzMjE0NDQxDQo5NDkzMjE0NDUzDQo5NDkzMjE0NDgzDQo5NDkzMjE0NTA5DQo5NDkzMjE0NTEzDQo5NDkzMjE0NTMxDQo5NDkzMjE0NTQzDQo5NDkzMjE0NTczDQo5NDkzMjE0NjExDQo5NDkzMjE0NjE3DQo5NDkzMjE0NjIzDQo5NDkzMjE0NjM5DQo5NDkzMjE0NjUxDQo5NDkzMjE0NjU5DQo5NDkzMjE0NjY5DQo5NDkzMjE0NzA3DQo5NDkzMjE0NzExDQo5NDkzMjE0NzM3DQo5NDkzMjE0Nzc5DQo5NDkzMjE0Nzg5DQo5NDkzMjE0ODA3DQo5NDkzMjE0ODMxDQo5NDkzMjE0ODM5DQo5NDkzMjE0ODkzDQo5NDkzMjE0OTIxDQo5NDkzMjE0OTU3DQo5NDkzMjE0OTgxDQo5NDkzMjE0OTk5DQo5NDkzMjE1MDA3DQo5NDkzMjE1MDc5DQo5NDkzMjE1MTA3DQo5NDkzMjE1MTQzDQo5NDkzMjE1MTYxDQo5NDkzMjE1MTg3DQo5NDkzMjE1MTk3DQo5NDkzMjE1MjA5DQo5NDkzMjE1MjE3DQo5NDkzMjE1MjgzDQo5NDkzMjE1Mjg3DQo5NDkzMjE1Mjg5DQo5NDkzMjE1MzAxDQo5NDkzMjE1NDIxDQo5NDkzMjE1NDM3DQo5NDkzMjE1NDM5DQo5NDkzMjE1NDQ5DQo5NDkzMjE1NDUxDQo5NDkzMjE1NDkxDQo5NDkzMjE1NTIxDQo5NDkzMjE1NTM5DQo5NDkzMjE1NTQ3DQo5NDkzMjE1NTU5DQo5NDkzMjE1NTkzDQo5NDkzMjE1NjAxDQo5NDkzMjE1NjIzDQo5NDkzMjE1NjMxDQo5NDkzMjE1NjM3DQo5NDkzMjE1NjQ3DQo5NDkzMjE1NzAzDQo5NDkzMjE1NzA5DQo5NDkzMjE1NzMxDQo5NDkzMjE1NzMzDQo5NDkzMjE1NzUxDQo5NDkzMjE1NzczDQo5NDkzMjE1ODExDQo5NDkzMjE1ODIxDQo5NDkzMjE1ODQ3DQo5NDkzMjE1ODU3DQo5NDkzMjE1ODgxDQo5NDkzMjE1OTIzDQo5NDkzMjE1OTMxDQo5NDkzMjE1OTU5DQo5NDkzMjE2MDAxDQo5NDkzMjE2MDI3DQo5NDkzMjE2MDM3DQo5NDkzMjE2MDQzDQo5NDkzMjE2MDYzDQo5NDkzMjE2MTIzDQo5NDkzMjE2MTI3DQo5NDkzMjE2MTUzDQo5NDkzMjE2MTg5DQo5NDkzMjE2MTkzDQo5NDkzMjE2MTk5DQo5NDkzMjE2MjMxDQo5NDkzMjE2MjQ3DQo5NDkzMjE2MjYxDQo5NDkzMjE2MjY3DQo5NDkzMjE2MzA5DQo5NDkzMjE2MzE5DQo5NDkzMjE2MzIxDQo5NDkzMjE2MzQ5DQo5NDkzMjE2MzYxDQo5NDkzMjE2MzY3DQo5NDkzMjE2MzkxDQo5NDkzMjE2NDU3DQo5NDkzMjE2NDcxDQo5NDkzMjE2NDkzDQo5NDkzMjE2NTAxDQo5NDkzMjE2NTA3DQo5NDkzMjE2NTE5DQo5NDkzMjE2NTcxDQo5NDkzMjE2NTg5DQo5NDkzMjE2NTkxDQo5NDkzMjE2NzA5DQo5NDkzMjE2NzE3DQo5NDkzMjE2NzUxDQo5NDkzMjE2NzU3DQo5NDkzMjE2NzYzDQo5NDkzMjE2ODE5DQo5NDkzMjE2ODgzDQo5NDkzMjE2OTIxDQo5NDkzMjE2OTYzDQo5NDkzMjE2OTY5DQo5NDkzMjE2OTc5DQo5NDkzMjE2OTg3DQo5NDkzMjE3MDAzDQo5NDkzMjE3MDA5DQo5NDkzMjE3MDExDQo5NDkzMjE3MDIzDQo5NDkzMjE3MDMzDQo5NDkzMjE3MDk5DQo5NDkzMjE3MTQ3DQo5NDkzMjE3MTg5DQo5NDkzMjE3MjE5DQo5NDkzMjE3MjIxDQo5NDkzMjE3MjQ5DQo5NDkzMjE3MjU3DQo5NDkzMjE3MjY5DQo5NDkzMjE3MjkxDQo5NDkzMjE3Mjk3DQo5NDkzMjE3MzAzDQo5NDkzMjE3MzgxDQo5NDkzMjE3NDE3DQo5NDkzMjE3NDMxDQo5NDkzMjE3NDQxDQo5NDkzMjE3NDc3DQo5NDkzMjE3NTA3DQo5NDkzMjE3NTA5DQo5NDkzMjE3NTIxDQo5NDkzMjE3NTI3DQo5NDkzMjE3NTU3DQo5NDkzMjE3NTc5DQo5NDkzMjE3NTk3DQo5NDkzMjE3NjIzDQo5NDkzMjE3NjUzDQo5NDkzMjE3Njc3DQo5NDkzMjE3NzE3DQo5NDkzMjE3NzE5DQo5NDkzMjE3NzQ5DQo5NDkzMjE3NzcxDQo5NDkzMjE3NzkxDQo5NDkzMjE3ODI3DQo5NDkzMjE3ODQ5DQo5NDkzMjE3ODYzDQo5NDkzMjE3ODk3DQo5NDkzMjE3OTI3DQo5NDkzMjE3OTMzDQo5NDkzMjE3OTUzDQo5NDkzMjE3OTU5DQo5NDkzMjE3OTcxDQo5NDkzMjE3OTc3DQo5NDkzMjE3OTk5DQo5NDkzMjE4MDAxDQo5NDkzMjE4MDExDQo5NDkzMjE4MDI5DQo5NDkzMjE4MDM3DQo5NDkzMjE4MDQxDQo5NDkzMjE4MDY3DQo5NDkzMjE4MDczDQo5NDkzMjE4MTA5DQo5NDkzMjE4MTI3DQo5NDkzMjE4MTU3DQo5NDkzMjE4MTY3DQo5NDkzMjE4MTY5DQo5NDkzMjE4MjM5DQo5NDkzMjE4MjYzDQo5NDkzMjE4MzA3DQo5NDkzMjE4MzEzDQo5NDkzMjE4MzQ3DQo5NDkzMjE4Mzc5DQo5NDkzMjE4NDE5DQo5NDkzMjE4NDMxDQo5NDkzMjE4NDU3DQo5NDkzMjE4NDYxDQo5NDkzMjE4NDczDQo5NDkzMjE4NTA5DQo5NDkzMjE4NTI5DQo5NDkzMjE4NTMzDQo5NDkzMjE4NTUxDQo5NDkzMjE4NTkzDQo5NDkzMjE4NjExDQo5NDkzMjE4NjY3DQo5NDkzMjE4NjcxDQo5NDkzMjE4NzMzDQo5NDkzMjE4NzM3DQo5NDkzMjE4NzM5DQo5NDkzMjE4NzczDQo5NDkzMjE4ODA5DQo5NDkzMjE4ODIxDQo5NDkzMjE4ODI3DQo5NDkzMjE4ODg3DQo5NDkzMjE4OTAxDQo5NDkzMjE4OTEzDQo5NDkzMjE4OTI5DQo5NDkzMjE5MDI3DQo5NDkzMjE5MDM3DQo5NDkzMjE5MDY5DQo5NDkzMjE5MTE3DQo5NDkzMjE5MTMzDQo5NDkzMjE5MjQ3DQo5NDkzMjE5MjU5DQo5NDkzMjE5MjczDQo5NDkzMjE5Mjk3DQo5NDkzMjE5MzAxDQo5NDkzMjE5MzE5DQo5NDkzMjE5MzIxDQo5NDkzMjE5MzQzDQo5NDkzMjE5MzYzDQo5NDkzMjE5NDAzDQo5NDkzMjE5NDA5DQo5NDkzMjE5NDI3DQo5NDkzMjE5NDQ3DQo5NDkzMjE5NDU3DQo5NDkzMjE5NDU5DQo5NDkzMjE5NTMxDQo5NDkzMjE5NTgzDQo5NDkzMjE5NjEzDQo5NDkzMjE5NjUxDQo5NDkzMjE5NjU3DQo5NDkzMjE5NjYxDQo5NDkzMjE5NzIxDQo5NDkzMjE5NzM5DQo5NDkzMjE5NzQxDQo5NDkzMjE5NzUxDQo5NDkzMjE5NzgzDQo5NDkzMjE5Nzg3DQo5NDkzMjE5Nzg5DQo5NDkzMjE5ODIzDQo5NDkzMjE5OTM3DQo5NDkzMjE5OTYzDQo5NDkzMjE5OTc5DQo5NDkzMjIwMDI5DQo5NDkzMjIwMDM5DQo5NDkzMjIwMDQxDQo5NDkzMjIwMDY5DQo5NDkzMjIwMDgzDQo5NDkzMjIwMTE5DQo5NDkzMjIwMTM3DQo5NDkzMjIwMTU5DQo5NDkzMjIwMTYxDQo5NDkzMjIwMTk3DQo5NDkzMjIwMjA3DQo5NDkzMjIwMjUxDQo5NDkzMjIwMjYzDQo5NDkzMjIwMjczDQo5NDkzMjIwMjc5DQo5NDkzMjIwMzA5DQo5NDkzMjIwMzI5DQo5NDkzMjIwMzM5DQo5NDkzMjIwMzY5DQo5NDkzMjIwNDIzDQo5NDkzMjIwNDMxDQo5NDkzMjIwNDQ3DQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/data/square_root_mod_p.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyJoYXNfcm9vdCI6W3siYSI6MiwicCI6NywicmVzIjpbNCwzXX0seyJhIjo0LCJwIjoxNywicmVzIjpbMiwxNV19XSwibm9fcm9vdCI6W3siYSI6NSwicCI6MTd9XX0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/nist-p192.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBodHRwOi8vcG9pbnQtYXQtaW5maW5pdHkub3JnL2VjYy9uaXN0dHYKbmFtZTogbmlzdHAxOTIKZGlmZmllOgogIC0KICAgIGFsaWNlOiAxMjMyMDkxNjUyNDc3NzIwOTcwMTgyNjI4ODIzNjk5ODU2NjMyNzY2ODYxOTk0MDAxNzYyMTA0MzU4CiAgICBib2I6IDI0MzA0OTgxNjgwODYwMjcwNzUyMzUzMjMyOTE5NjU3MDA5MDQ2NDc5Njg5NTYwNDQzMzg1MTU4MTAKICAgIHNoYXJlZDogQUQ0MjAxODI2MzNGODUyNkJGRTk1NEFDREEzNzZGMDVFNUZGNEY4MzdGNTRGRUJFCiAgICAjIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MTE0Lmh0bWwKCmtleXBhaXJzOgogIC0KICAgIGs6IDEKICAgIHg6IDE4OERBODBFQjAzMDkwRjY3Q0JGMjBFQjQzQTE4ODAwRjRGRjBBRkQ4MkZGMTAxMgogICAgeTogMDcxOTJCOTVGRkM4REE3ODYzMTAxMUVENkIyNENERDU3M0Y5NzdBMTFFNzk0ODExCiAgLQogICAgazogMgogICAgeDogREFGRUJGNTgyODc4M0YyQUQzNTUzNDYzMTU4OEEzRjYyOUE3MEZCMTY5ODJBODg4CiAgICB5OiBERDZCREEwRDk5M0RBMEZBNDZCMjdCQkMxNDFCODY4RjU5MzMxQUZBNUM3RTkzQUIKICAtCiAgICBrOiAzCiAgICB4OiA3NkUzMkEyNTU3NTk5RTZFRENEMjgzMjAxRkIyQjlBQURGRDBEMzU5Q0JCMjYzREEKICAgIHk6IDc4MkMzN0UzNzJCQTQ1MjBBQTYyRTBGRUQxMjFENDlFRjNCNTQzNjYwQ0ZEMDVGRAogIC0KICAgIGs6IDQKICAgIHg6IDM1NDMzOTA3Mjk3Q0MzNzhCMDAxNTcwMzM3NDcyOUQ3QTRGRTQ2NjQ3MDg0RTRCQQogICAgeTogQTI2NDk5ODRGMjEzNUMzMDFFQTNBQ0IwNzc2Q0Q0RjEyNTM4OUIzMTFEQjNCRTMyCiAgLQogICAgazogNQogICAgeDogMTBCQjhFOTg0MDA0OUIxODNFMDc4RDlDMzAwRTE2MDU1OTAxMThFQkREN0ZGNTkwCiAgICB5OiAzMTM2MTAwODQ3NkY5MTdCQURDOUY4MzZFNjI3NjJCRTMxMkI3MjU0M0NDRUFFQTEKICAtCiAgICBrOiA2CiAgICB4OiBBMzdBQkM2QzQzMUY5QUMzOThCRjVCRDFBQTY2NzgzMjBBQ0U4RUNCOTNEMjNGMkEKICAgIHk6IDg1MUIzQ0FFQzk5OTA4REJGRUQ3MDQwQTFCQkRBOTBFMDgxRjdDNTcxMEJDNjhGMAogIC0KICAgIGs6IDcKICAgIHg6IDhEQTc1QTFGNzVERENENzY2MEY5MjMyNDMwNjBFRENFNURFMzdGMDA3MDExRkNGRAogICAgeTogNTdDQjVGQ0Y2ODYwQjM1NDE4MjQwREI4RkRCM0MwMURENEI3MDJGOTY0MDlGRkI1CiAgLQogICAgazogOAogICAgeDogMkZBMUY5MkQxRUNDRTkyMDE0NzcxOTkzQ0MxNDg5OUQ0QjU5Nzc4ODMzOTdFRERFCiAgICB5OiBBMzM4QUZERUY3OEI3MjE0MjczQjhCNTk3OEVGNzMzRkYyREQ4QThFOTczOEY2QzAKICAtCiAgICBrOiA5CiAgICB4OiA4MThBNEQzMDhCMUNBQkI3NEU5RThGMkJBOEQyN0M5RTFEOUQzNzVBQjk4MDM4OEYKICAgIHk6IDAxRDFBQTVFMjA4RDg3Q0Q3QzI5MkY3Q0JCNDU3Q0RGMzBFQTU0MjE3NkM4RTczOQogIC0KICAgIGs6IDEwCiAgICB4OiBBQTdDNEY5RUY5OUUzRTk2RDFBRURFMkJEOTIzODg0Mjg1OUJCMTUwRDFGRTlEODUKICAgIHk6IDMyMTJBMzY1NDdFREM2MjkwMUVFMzY1OEIyRjQ4NTk0NjBFQjVFQjI0OTEzOTdCMAogIC0KICAgIGs6IDExCiAgICB4OiAxQzk5NTk5NUVCNzYzMjRGMTg0NEY3MTY0RDIyQjY1MjI4MDk0MDM3MDYyOEEyQUEKICAgIHk6IEVGMTc2NUNFMzdFOUVCNzMwMjlGNTU2NDAwRkE3N0JEQjM0Q0I4NjExQUFBOUMwNAogIC0KICAgIGs6IDEyCiAgICB4OiAxMDYxMzQzRjNENDU2RDBFQ0EwMTM4NzdGOEM5RTdCMjhGQ0NEQ0RBNjdFRUI4QUIKICAgIHk6IDVBMDY0Q0FBMkVBNkIwMzc5OEZFRjhFM0U3QTQ4NjQ4NjgxRUFDMDIwQjI3MjkzRgogIC0KICAgIGs6IDEzCiAgICB4OiAxMTJBRjE0MUQzM0VGQjlGMkY2ODgyMUUwNTFFNEVBMDA0MTQ0QTM2M0M0QTA5MEEKICAgIHk6IDZFMENCRTNCRkM1MjkzRjcyQTJDMTcyNkUwODFFMDlFN0YxMEEwOTQ0MzJCMUMxRQogIC0KICAgIGs6IDE0CiAgICB4OiAxM0I5MzEwNjQ2RUJDOTNCNTkxNzQ2QjNGN0M2NEUwNURFRTA4ODQzREUxMDgxQzEKICAgIHk6IDFFRENFQTYzQjQ0MTQyREQxNUYzQjQyN0VDNDFBMUVDNEZCQUNBOTVFMTg2RTZCNAogIC0KICAgIGs6IDE1CiAgICB4OiA4Qzk1OTVFNjNCNTZCNjMzQkEzNTQ2QjJCNTQxNERFNzM2REU0QTlFNzU3OEIxRTcKICAgIHk6IDI2NkI3NjJBOTM0RjAwQzE3Q0YzODc5OTNBQTU2NkI2QUQ3NTM3Q0REOThGQzdCMQogIC0KICAgIGs6IDE2CiAgICB4OiBCNzMxMEI0NTQ4RkJGREJEMjkwMDUwOTJBNTM1NUJGQ0Q5OTQ3MzczMzA0OEFGREYKICAgIHk6IEZGOUVBRTlFRENEMjdDMUU0MkQ4NTg1QzQ1NDZEOTQ5MTg0NUM1NjYyOUNGMjI5MAogIC0KICAgIGs6IDE3CiAgICB4OiA0NDI3NUNEMkUxRjQ2REMzRjlGNTc2MzZDMkI0MjEzQjhCQjQ0NTkzMDUxMEZGOEEKICAgIHk6IEVGQUQ4MzQ4RkRFMzBDODdERTQzODYxMkE4MThFOThEOUI3NkE2N0FEMjVEREZEMAogIC0KICAgIGs6IDE4CiAgICB4OiBDMUI0REIwMjI3MjEwNjEzQTZDQTE1QzQyODAyNEU0MEI2NTEzMzY1RDcyNTkxQTMKICAgIHk6IDFFMjZCMjg2QkNBMUQwOEY0RkU4RjgwMTI2N0RGOUZENzc4MkVDM0VDM0Y0N0Y1MwogIC0KICAgIGs6IDE5CiAgICB4OiBDMDYyNkJDRjI0N0RFNUQzMDdGRDgzOTIzOEQ3MjY4ODc3NEZDOTdBMUNGOEFEMUIKICAgIHk6IDlDREM5OUQ3NTM5NzNEQzE5N0UxMjc3OEU4MjlDODA0RUMxQTZCNEU3MUZBQTIwQQogIC0KICAgIGs6IDIwCiAgICB4OiBCQjZGMDgyMzIxRDM0REJENzg2QTE1NjY5MTVDNkRENUVERjg3OUFCMEY1QURENjcKICAgIHk6IDkxRTRERDhBNzdDNDUzMUM4Qjc2REVGMkU1MzM5QjVFQjk1RDVEOTQ3OURGNEM4RAogIC0KICAgIGs6IDExMjIzMzQ0NTU2Njc3ODg5OQogICAgeDogODFFNkUwRjE0QzkzMDJDOEE4RENBOEEwMzhCNzMxNjVFOTY4N0QwNDkwQ0Q5Rjg1CiAgICB5OiBGNTgwNjcxMTlFRUQ4NTc5Mzg4QzQyODFEQzY0NUEyN0RCNzc2NDc1MEU4MTI0NzcKICAtCiAgICBrOiAxMTIyMzM0NDU1NjY3Nzg4OTkxMTIyMzM0NDU1NjY3Nzg4OTkKICAgIHg6IEIzNTdCMTBBQzk4NUM4OTFCMjlGQjM3REE1NjY2MUNDQ0Y1MENFQzIxMTI4RDRGNgogICAgeTogQkEyMERDMkZBMUNDMjI4RDNDMkQ4QjUzOEMyMTc3QzI5MjE4ODRDNkI3RjBEOTZGCiAgLQogICAgazogMTYxODI5MjA5NDIwMDM0NjQ5MTA2NDE1NDcwMzIwNTE1MTY2NDU2MjQ2MjM1OTY1MzAxNTYxMzU2NwogICAgeDogNzRGRUMyMTVGMjUzQzZCRDg0NTgzMUUwNTlCMzE4Qzg3RjcyN0IxMzZBNzAwQjkxCiAgICB5OiA0QjcwMkIxNUIxMjZBNzAzRTdBN0NFQzNFMEVDODFGOERGQ0E3M0E1OUY1RDg4QjkKICAtCiAgICBrOiAxNDg0NjA1MDU1MjE0NTI2NzI5ODE2OTMwNzQ5NzY2Njk0Mzg0OTA2NDQ2NjgxNzYxOTA2Njg4CiAgICB4OiAwQzQwMjMwRjlDNEI4QzBGRDkxRjJDNjA0RkNCQTlCODdDMkRGQTE1M0YwMTBCNEYKICAgIHk6IDVGQzRGNTc3MUY0Njc5NzFCMkM4Mjc1MjQxMzgzM0E2OENFMDBGNEE5QTY5MkIwMgogIC0KICAgIGs6IDE1NjkyNzU0MzQxNjY0NjI4NzcxMDU2MjcyNjEzOTI1ODAzNTQ1MTk4MzM1Mzg4MTM4NjY1NDA4MzEKICAgIHg6IDI4NzgzQkJGNjIwOEUxRkYwRjk2NUZEOERDMEMyNkZGMUQ4RTAyQjQzM0VERjJGNwogICAgeTogQTU4NTJCQkM0NEZEODE2NEMxQUJBOUEzRUM3QTg4RTQ2MUQ1RDc3QUJENzQzRTg3CiAgLQogICAgazogMzEzODU1MDg2NzY4MTkyMjQwMDU0NjM4ODE3NTQ3MDgyMzk4NDc2MjIzNDUxODgzNjk2MzMxMzY2NAogICAgeDogNDVEQUYwQTMwNjEyMUJEQjNCODJFNzM0Q0I0NEZERjY1Qzk5MzBGMEU0RkQyMDY4CiAgICB5OiBGMDM5RkFDRTU4RUI3REUzNEUzMzc0QURCMjhERjgxRjAxOUM0NTQ4QkFBNzVCNjQKICAtCiAgICBrOiAzMTM4NTUwMTE5NDA0NTQ1OTczMDg4Mzc0ODEyNDc5MzIzODQyNDc1OTAxNDg1NjgxMTY5NDAxNjAwCiAgICB4OiAxRDVFQzg1MDA0RUEyQUJBOTA1Q0VGOThBODE4QThDMzUxNkQ3Q0I2OUE2RkQ1NzUKICAgIHk6IDQwMDhGMzVGNTgyMEY2NkM5MDIxOTU2NDQxNjJFNUFBMjMxREQ2OUM5RTFFQ0M5NwogIC0KICAgIGs6IDI0NTE5OTI4NDcxMTY2NjA0MTc5NjU1MzIxMzgzOTcxNDY3MDAzOTkwMjExNDM5OTE5ODI0ODk2CiAgICB4OiBGMDYzNzI3QzJFQTREMzU4QUIwMkY2QjBCRUVCMTREQkVBRjJFOEExREIzMjA4RUUKICAgIHk6IDQyNzQxOEMwMTU1NTMzNjE3NjlCNkEwQzQyOTIzQzRDQTEwMzc0MEI2RENEOTcwMwogIC0KICAgIGs6IDQ2NzU2NzY4MjE4ODM3MDMxNzA4MDYzNDIyNDY2MzU4NjExMjQ2NTU2NDc1NTcyMjMxCiAgICB4OiBEQzgxRDMzQ0E2NjA0QjFFRkU0OTM4NkNENDkyOTc5RUY4MDdCOEJBRUI4NTY2RTMKICAgIHk6IEQ0NTQyNDdGRjQ3ODUxNDU1NjMzM0IzOTAxQzlGMUNDQzE4REJDOUFCOTM4Q0ZBMAogIC0KICAgIGs6IDMxMzg1MDI5NzcyMDc2ODgzMjI5MDE2OTk2NDQ5Mjg2NTU1NTMwNDQ3OTE4NDQwODY4ODM1NDkyMTUKICAgIHg6IEQ5MzI3NDFERjZBQTBFMUVFRDI0Mjc5MTUwNDM2Qzc1MkFBNUFEQ0ZEMDY5OEQ3MgogICAgeTogOTc1OUI2RDJFRjIxRDg4NUU5NENERkYyMTlGMTcwMDREODc2MzQwMURBQjAyMUI1CiAgLQogICAgazogNDc4OTA0ODU2NTIwNTkwMjY0OTEzOTE5Nzk0NzczNzE5MTQ1MTU4NjU2MjE4NDc2MDU1MDMKICAgIHg6IDU3MTQ3N0U5RDlGMkE2Mjg3ODA3NDIyNTdGNzI1MEM0MjI0QzQ4M0IzMEYzQTk3RQogICAgeTogMUFEMzVFRTMxNzdEMjJERDVGMDFCNUE0NkZGREVDNTQ3QjZBNDE3ODZFQkI4QzhGCiAgLQogICAgazogMzEzODU0OTM3Njk1ODgyNjk1OTM0MTU3MDg0MjU2NjU5MzM3NTMyNjk5NjQzMTAxMzk5Mzc3NTYxNQogICAgeDogNEM2OTkzOTY0Mjc5Mjc3NkM4MjZEQjhCNEVCRjRCRDhDMDNGQzlERkEyQUVDODIyCiAgICB5OiAyOUJGMzVCRTUyQTYwMzZFMDdFQkE1NzQxQ0ZFQjRDMTQzMzEwMjE2RUYxQjlBMkUKICAtCiAgICBrOiA2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDYxCiAgICB4OiBCQjZGMDgyMzIxRDM0REJENzg2QTE1NjY5MTVDNkRENUVERjg3OUFCMEY1QURENjcKICAgIHk6IDZFMUIyMjc1ODgzQkFDRTM3NDg5MjEwRDFBQ0M2NEEwNDZBMkEyNkI4NjIwQjM3MgogIC0KICAgIGs6IDYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMxNzYwNTkwMTM3NjcxOTQ3NzMxODI4NDIyODQwNjIKICAgIHg6IEMwNjI2QkNGMjQ3REU1RDMwN0ZEODM5MjM4RDcyNjg4Nzc0RkM5N0ExQ0Y4QUQxQgogICAgeTogNjMyMzY2MjhBQzY4QzIzRTY4MUVEODg3MTdENjM3RkExM0U1OTRCMThFMDU1REY1CiAgLQogICAgazogNjI3NzEwMTczNTM4NjY4MDc2MzgzNTc4OTQyMzE3NjA1OTAxMzc2NzE5NDc3MzE4Mjg0MjI4NDA2MwogICAgeDogQzFCNERCMDIyNzIxMDYxM0E2Q0ExNUM0MjgwMjRFNDBCNjUxMzM2NUQ3MjU5MUEzCiAgICB5OiBFMUQ5NEQ3OTQzNUUyRjcwQjAxNzA3RkVEOTgyMDYwMTg4N0QxM0MxM0MwQjgwQUMKICAtCiAgICBrOiA2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDY0CiAgICB4OiA0NDI3NUNEMkUxRjQ2REMzRjlGNTc2MzZDMkI0MjEzQjhCQjQ0NTkzMDUxMEZGOEEKICAgIHk6IDEwNTI3Q0I3MDIxQ0YzNzgyMUJDNzlFRDU3RTcxNjcxNjQ4OTU5ODUyREEyMjAyRgogIC0KICAgIGs6IDYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMxNzYwNTkwMTM3NjcxOTQ3NzMxODI4NDIyODQwNjUKICAgIHg6IEI3MzEwQjQ1NDhGQkZEQkQyOTAwNTA5MkE1MzU1QkZDRDk5NDczNzMzMDQ4QUZERgogICAgeTogMDA2MTUxNjEyMzJEODNFMUJEMjdBN0EzQkFCOTI2QjVFN0JBM0E5OUQ2MzBERDZGCiAgLQogICAgazogNjI3NzEwMTczNTM4NjY4MDc2MzgzNTc4OTQyMzE3NjA1OTAxMzc2NzE5NDc3MzE4Mjg0MjI4NDA2NgogICAgeDogOEM5NTk1RTYzQjU2QjYzM0JBMzU0NkIyQjU0MTRERTczNkRFNEE5RTc1NzhCMUU3CiAgICB5OiBEOTk0ODlENTZDQjBGRjNFODMwQzc4NjZDNTVBOTk0ODUyOEFDODMyMjY3MDM4NEUKICAtCiAgICBrOiA2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDY3CiAgICB4OiAxM0I5MzEwNjQ2RUJDOTNCNTkxNzQ2QjNGN0M2NEUwNURFRTA4ODQzREUxMDgxQzEKICAgIHk6IEUxMjMxNTlDNEJCRUJEMjJFQTBDNEJEODEzQkU1RTEyQjA0NTM1NkExRTc5MTk0QgogIC0KICAgIGs6IDYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMxNzYwNTkwMTM3NjcxOTQ3NzMxODI4NDIyODQwNjgKICAgIHg6IDExMkFGMTQxRDMzRUZCOUYyRjY4ODIxRTA1MUU0RUEwMDQxNDRBMzYzQzRBMDkwQQogICAgeTogOTFGMzQxQzQwM0FENkMwOEQ1RDNFOEQ5MUY3RTFGNjA4MEVGNUY2QkJDRDRFM0UxCiAgLQogICAgazogNjI3NzEwMTczNTM4NjY4MDc2MzgzNTc4OTQyMzE3NjA1OTAxMzc2NzE5NDc3MzE4Mjg0MjI4NDA2OQogICAgeDogMTA2MTM0M0YzRDQ1NkQwRUNBMDEzODc3RjhDOUU3QjI4RkNDRENEQTY3RUVCOEFCCiAgICB5OiBBNUY5QjM1NUQxNTk0RkM4NjcwMTA3MUMxODVCNzlCNjk3RTE1M0ZERjREOEQ2QzAKICAtCiAgICBrOiA2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDcwCiAgICB4OiAxQzk5NTk5NUVCNzYzMjRGMTg0NEY3MTY0RDIyQjY1MjI4MDk0MDM3MDYyOEEyQUEKICAgIHk6IDEwRTg5QTMxQzgxNjE0OENGRDYwQUE5QkZGMDU4ODQxNENCMzQ3OUVFNTU1NjNGQgogIC0KICAgIGs6IDYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMxNzYwNTkwMTM3NjcxOTQ3NzMxODI4NDIyODQwNzEKICAgIHg6IEFBN0M0RjlFRjk5RTNFOTZEMUFFREUyQkQ5MjM4ODQyODU5QkIxNTBEMUZFOUQ4NQogICAgeTogQ0RFRDVDOUFCODEyMzlENkZFMTFDOUE3NEQwQjdBNkE5RjE0QTE0REI2RUM2ODRGCiAgLQogICAgazogNjI3NzEwMTczNTM4NjY4MDc2MzgzNTc4OTQyMzE3NjA1OTAxMzc2NzE5NDc3MzE4Mjg0MjI4NDA3MgogICAgeDogODE4QTREMzA4QjFDQUJCNzRFOUU4RjJCQThEMjdDOUUxRDlEMzc1QUI5ODAzODhGCiAgICB5OiBGRTJFNTVBMURGNzI3ODMyODNENkQwODM0NEJBODMxRkNGMTVBQkRFODkzNzE4QzYKICAtCiAgICBrOiA2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDczCiAgICB4OiAyRkExRjkyRDFFQ0NFOTIwMTQ3NzE5OTNDQzE0ODk5RDRCNTk3Nzg4MzM5N0VEREUKICAgIHk6IDVDQzc1MDIxMDg3NDhERUJEOEM0NzRBNjg3MTA4Q0JGMEQyMjc1NzE2OEM3MDkzRgogIC0KICAgIGs6IDYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMxNzYwNTkwMTM3NjcxOTQ3NzMxODI4NDIyODQwNzQKICAgIHg6IDhEQTc1QTFGNzVERENENzY2MEY5MjMyNDMwNjBFRENFNURFMzdGMDA3MDExRkNGRAogICAgeTogQTgzNEEwMzA5NzlGNENBQkU3REJGMjQ3MDI0QzNGRTEyQjQ4RkQwNjlCRjYwMDRBCiAgLQogICAgazogNjI3NzEwMTczNTM4NjY4MDc2MzgzNTc4OTQyMzE3NjA1OTAxMzc2NzE5NDc3MzE4Mjg0MjI4NDA3NQogICAgeDogQTM3QUJDNkM0MzFGOUFDMzk4QkY1QkQxQUE2Njc4MzIwQUNFOEVDQjkzRDIzRjJBCiAgICB5OiA3QUU0QzM1MTM2NjZGNzI0MDEyOEZCRjVFNDQyNTZGMEY3RTA4M0E4RUY0Mzk3MEYKICAtCiAgICBrOiA2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDc2CiAgICB4OiAxMEJCOEU5ODQwMDQ5QjE4M0UwNzhEOUMzMDBFMTYwNTU5MDExOEVCREQ3RkY1OTAKICAgIHk6IENFQzlFRkY3Qjg5MDZFODQ1MjM2MDdDOTE5RDg5RDQwQ0VENDhEQUJDMzMxNTE1RQogIC0KICAgIGs6IDYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMxNzYwNTkwMTM3NjcxOTQ3NzMxODI4NDIyODQwNzcKICAgIHg6IDM1NDMzOTA3Mjk3Q0MzNzhCMDAxNTcwMzM3NDcyOUQ3QTRGRTQ2NjQ3MDg0RTRCQQogICAgeTogNUQ5QjY2N0IwREVDQTNDRkUxNUM1MzRGODg5MzJCMEREQUM3NjRDRUUyNEM0MUNECiAgLQogICAgazogNjI3NzEwMTczNTM4NjY4MDc2MzgzNTc4OTQyMzE3NjA1OTAxMzc2NzE5NDc3MzE4Mjg0MjI4NDA3OAogICAgeDogNzZFMzJBMjU1NzU5OUU2RURDRDI4MzIwMUZCMkI5QUFERkQwRDM1OUNCQjI2M0RBCiAgICB5OiA4N0QzQzgxQzhENDVCQURGNTU5RDFGMDEyRURFMkI2MDBDNEFCQzk5RjMwMkZBMDIKICAtCiAgICBrOiA2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDc5CiAgICB4OiBEQUZFQkY1ODI4NzgzRjJBRDM1NTM0NjMxNTg4QTNGNjI5QTcwRkIxNjk4MkE4ODgKICAgIHk6IDIyOTQyNUYyNjZDMjVGMDVCOTREODQ0M0VCRTQ3OTZGQTZDQ0U1MDVBMzgxNkM1NAogIC0KICAgIGs6IDYyNzcxMDE3MzUzODY2ODA3NjM4MzU3ODk0MjMxNzYwNTkwMTM3NjcxOTQ3NzMxODI4NDIyODQwODAKICAgIHg6IDE4OERBODBFQjAzMDkwRjY3Q0JGMjBFQjQzQTE4ODAwRjRGRjBBRkQ4MkZGMTAxMgogICAgeTogRjhFNkQ0NkEwMDM3MjU4NzlDRUZFRTEyOTREQjMyMjk4QzA2ODg1RUUxODZCN0VFCgojIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTc5I2FwcGVuZGl4LUEuMi4zCmhtYWM6CiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAxOTIKICAgIGtleTogNkZBQjAzNDkzNEU0QzBGQzlBRTY3RjVCNTY1OUE5RDdEMUZFRkQxODdFRTA5RkQ0CiAgICBrOiAzN0Q3Q0EwMEQyQzdCMEU1RTQxMkFDMDNCRDQ0QkE4MzdGREQ1QjI4Q0QzQjAwMjEKICAgIHI6IDk4QzZCRDEyQjIzRUFGNUUyQTIwNDUxMzIwODZCRTNFQjhFQkQ2MkFCRjY2OThGRgogICAgczogNTdBMjJCMDdERUE5NTMwRjhERTk0NzFCMURDNjYyNDQ3MkU4RTI4NDRCQzI1QjY0CiAgLQogICAgYWxnbzogc2hhMjI0CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDE5MgogICAga2V5OiA2RkFCMDM0OTM0RTRDMEZDOUFFNjdGNUI1NjU5QTlEN0QxRkVGRDE4N0VFMDlGRDQKICAgIGs6IDQzODE1MjZCM0ZDMUU3MTI4RjIwMkUxOTQ1MDU1OTJGMDFENUZGNEM1QUYwMTVEOAogICAgcjogQTFGMDBEQUQ5N0FFRUM5MUM5NTU4NUYzNjIwMEM2NUYzQzAxODEyQUE2MDM3OEY1CiAgICBzOiBFMDdFQzEzMDRDN0M2QzlERUJCRTk4MEI5NjkyNjY4RjgxRDRERTc5MjJBMEY5N0EKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMTkyCiAgICBrZXk6IDZGQUIwMzQ5MzRFNEMwRkM5QUU2N0Y1QjU2NTlBOUQ3RDFGRUZEMTg3RUUwOUZENAogICAgazogMzJCMUI2RDdENDJBMDVDQjQ0OTA2NTcyN0E4NDgwNEZCMUEzRTM0RDhGMjYxNDk2CiAgICByOiA0QjBCOENFOThBOTI4NjZBMjgyMEUyMEFBNkI3NUI1NjM4MkUwRjlCRkQ1RUNCNTUKICAgIHM6IENDREIwMDY5MjZFQTk1NjVDQkFEQzg0MDgyOUQ4QzM4NEUwNkRFMUYxRTM4MUI4NQogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAxOTIKICAgIGtleTogNkZBQjAzNDkzNEU0QzBGQzlBRTY3RjVCNTY1OUE5RDdEMUZFRkQxODdFRTA5RkQ0CiAgICBrOiA0NzMwMDA1QzRGQ0IwMTgzNEMwNjNBN0I2NzYwMDk2REJFMjg0QjgyNTJFRjQzMTEKICAgIHI6IERBNjNCRjBCOUFCQ0Y5NDhGQkIxRTkxNjdGMTM2MTQ1RjdBMjA0MjZEQ0MyODdENQogICAgczogQzNBQTJDOTYwOTcyQkQ3QTIwMDNBNTdFMUM0Qzc3RjA1NzhGOEFFOTVFMzFFQzVFCiAgLQogICAgYWxnbzogc2hhNTEyCiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDE5MgogICAga2V5OiA2RkFCMDM0OTM0RTRDMEZDOUFFNjdGNUI1NjU5QTlEN0QxRkVGRDE4N0VFMDlGRDQKICAgIGs6IEEyQUM3QUIwNTVFNEYyMDY5MkQ0OTIwOTU0NEMyMDNBN0QxRjJDMEJGQkM3NURCMQogICAgcjogNEQ2MEM1QUIxOTk2QkQ4NDgzNDNCMzFDMDA4NTAyMDVFMkVBNjkyMkRBQzJFNEI4CiAgICBzOiAzRjZFODM3NDQ4RjAyN0ExQkY0QjM0RTc5NkUzMkE4MTFDQkI0MDUwOTA4RDhGNjcKICAtCiAgICBhbGdvOiBzaGExCiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAxOTIKICAgIGtleTogNkZBQjAzNDkzNEU0QzBGQzlBRTY3RjVCNTY1OUE5RDdEMUZFRkQxODdFRTA5RkQ0CiAgICBrOiBEOUNGOUMzRDMyOTdEMzI2MDc3M0ExREE3NDE4REI1NTM3QUI4REQ5M0RFN0ZBMjUKICAgIHI6IDBGMjE0MUEwRUJCQzQ0RDJFMUFGOTBBNTBFQkNGQ0U1RTE5N0IzQjdENERFMDM2RAogICAgczogRUIxOEJDOUUxRjNENzM4NzUwMENCOTlDRjVGN0MxNTcwNzBBODk2MUUzODcwMEI3CiAgLQogICAgYWxnbzogc2hhMjI0CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAxOTIKICAgIGtleTogNkZBQjAzNDkzNEU0QzBGQzlBRTY3RjVCNTY1OUE5RDdEMUZFRkQxODdFRTA5RkQ0CiAgICBrOiBGNURDODA1Rjc2RUY4NTE4MDA3MDBDQ0U4MkU3Qjk4RDg5MTFCN0Q1MTAwNTlGQkUKICAgIHI6IDY5NDVBMUMxRDFCMjIwNkI4MTQ1NTQ4RjYzM0JCNjFDRUYwNDg5MUJBRjI2RUQzNAogICAgczogQjdGQjdGREZDMzM5QzBCOUJENjFBOUY1QThFQUY5QkU1OEZDNUNCQTJDQjE1MjkzCiAgLQogICAgYWxnbzogc2hhMjU2CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAxOTIKICAgIGtleTogNkZBQjAzNDkzNEU0QzBGQzlBRTY3RjVCNTY1OUE5RDdEMUZFRkQxODdFRTA5RkQ0CiAgICBrOiA1QzRDRTg5Q0Y1NkQ5RTdDNzdDODU4NTMzOUIwMDZCOTdCNUYwNjgwQjQzMDZDNkMKICAgIHI6IDNBNzE4QkQ4QjQ5MjZDM0I1MkVFNkJCRTY3RUY3OUIxOENCNkVCNjJCMUFEOTdBRQogICAgczogNTY2MkU2ODQ4QTRBMTlCMUYxQUUyRjcyQUNENEI4QkJFNTBGMUVBQzY1RDkxMjRGCiAgLQogICAgYWxnbzogc2hhMzg0CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAxOTIKICAgIGtleTogNkZBQjAzNDkzNEU0QzBGQzlBRTY3RjVCNTY1OUE5RDdEMUZFRkQxODdFRTA5RkQ0CiAgICBrOiA1QUZFRkI1RDMzOTMyNjFCODI4REI2QzkxRkJDNjhDMjMwNzI3QjAzMEM5NzU2OTMKICAgIHI6IEIyMzRCNjBCNERCNzVBNzMzRTE5MjgwQTdBNjAzNEJENkIxRUU4OEFGNTMzMjM2NwogICAgczogNzk5NDA5MEIyRDU5QkI3ODJCRTU3RTc0QTQ0QzlBMUM3MDA0MTNGOEFCRUZFNzdBCiAgLQogICAgYWxnbzogc2hhNTEyCiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAxOTIKICAgIGtleTogNkZBQjAzNDkzNEU0QzBGQzlBRTY3RjVCNTY1OUE5RDdEMUZFRkQxODdFRTA5RkQ0CiAgICBrOiAwNzU4NzUzQTUyNTQ3NTlDN0NGQkFEMkUyRDlCMDc5MkVFRTQ0MTM2Qzk0ODA1MjcKICAgIHI6IEZFNEY0QUU4NkE1OEI2NTA3OTQ2NzE1OTM0RkUyRDhGRjlEOTVCNkIwOThGRTczOQogICAgczogNzRDRjU2MDVDOThGQkEwRTFFRjM0RDRCNUExNTc3QTdEQ0Y1OTQ1N0NBRTUyMjkwCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/nist-p224.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBodHRwOi8vcG9pbnQtYXQtaW5maW5pdHkub3JnL2VjYy9uaXN0dHYKbmFtZTogbmlzdHAyMjQKZGlmZmllOgogIC0KICAgIGFsaWNlOiAxOTA5ODEwNDIwMTYzMTY3MDM2NjI1NTAyNDQzMjg3ODE1ODUzNzc3OTIzNDYwNTcxOTEwNDU5NTEzNDcxOTEyMDI1NQogICAgYm9iOiAxODEzODAyODUyODM1MTE3ODk3MTY0Nzc4NzY3NzU0MDUxMDU5NTQ3MjY5NzE2MTYwNDkwNjAzNDQ5NTQ1NDM0MjQyNAogICAgc2hhcmVkOiA1MjI3MkY1MEY0NkY0RURDOTE1MTU2OTA5MkY0NkRGMkQ5NkVDQzNCNkRDMTcxNEE0RUE5NDlGQQogICAgIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTExNC5odG1sCmtleXBhaXJzOgogIC0KICAgIGs6IDEKICAgIHg6IEI3MEUwQ0JENkJCNEJGN0YzMjEzOTBCOTRBMDNDMUQzNTZDMjExMjIzNDMyODBENjExNUMxRDIxCiAgICB5OiBCRDM3NjM4OEI1RjcyM0ZCNEMyMkRGRTZDRDQzNzVBMDVBMDc0NzY0NDRENTgxOTk4NTAwN0UzNAogIC0KICAgIGs6IDIKICAgIHg6IDcwNkE0NkRDNzZEQ0I3Njc5OEU2MEU2RDg5NDc0Nzg4RDE2REMxODAzMkQyNjhGRDFBNzA0RkE2CiAgICB5OiAxQzJCNzZBN0JDMjVFNzcwMkE3MDRGQTk4Njg5Mjg0OUZDQTYyOTQ4N0FDRjM3MDlEMkU0RThCQgogIC0KICAgIGs6IDMKICAgIHg6IERGMUIxRDY2QTU1MUQwRDMxRUZGODIyNTU4QjlEMkNDNzVDMjE4MDI3OUZFMEQwOEZEODk2RDA0CiAgICB5OiBBM0Y3RjAzQ0FERDBCRTQ0NEMwQUE1NjgzMDEzMERERjc3RDMxNzM0NEUxQUYzNTkxOTgxQTkyNQogIC0KICAgIGs6IDQKICAgIHg6IEFFOTlGRUVCQjVEMjY5NDVCNTQ4OTIwOTJBOEFFRTAyOTEyOTMwRkE0MUNEMTE0RTQwNDQ3MzAxCiAgICB5OiAwNDgyNTgwQTBFQzVCQzQ3RTg4QkM4QzM3ODYzMkNEMTk2Q0IzRkEwNThBNzExNEVCMDMwNTRDOQogIC0KICAgIGs6IDUKICAgIHg6IDMxQzQ5QUU3NUJDRTc4MDdDREZGMjIwNTVEOTRFRTkwMjFGRURCQjVBQjUxQzU3NTI2RjAxMUFBCiAgICB5OiAyN0U4QkZGMTc0NTYzNUVDNUJBMEM5RjFDMkVERTE1NDE0QzY1MDdEMjlGRkUzN0U3OTBBMDc5QgogIC0KICAgIGs6IDYKICAgIHg6IDFGMjQ4M0Y4MjU3MjI1MUZDQTk3NUZFQTQwREI4MjFERjhBRDgyQTNDMDAyRUU2QzU3MTEyNDA4CiAgICB5OiA4OUZBRjBDQ0I3NTBEOTlCNTUzQzU3NEZBRDdFQ0ZCMDQzODU4NkVCMzk1MkFGNUI0QjE1M0M3RQogIC0KICAgIGs6IDcKICAgIHg6IERCMkY2QkU2MzBFMjQ2QTVDRjdEOTlCODUxOTRCMTIzRDQ4N0UyRDQ2NkI5NEIyNEEwM0MzRTI4CiAgICB5OiAwRjNBMzAwODU0OTdGMkY2MTFFRTI1MTdCMTYzRUY4QzUzQjcxNUQxOEJCNEU0ODA4RDAyQjk2MwogIC0KICAgIGs6IDgKICAgIHg6IDg1OEU2RjlDQzZDMTJDMzFGNURGMTI0QUE3Nzc2N0IwNUM4QkMwMjFCRDY4M0QyQjU1NTcxNTUwCiAgICB5OiAwNDZEQ0QzRUE1QzQzODk4QzVDNUZDNEZEQUM3REIzOUMyRjAyRUJFRTRFMzU0MUQxRTc4MDQ3QQogIC0KICAgIGs6IDkKICAgIHg6IDJGRENDQ0ZFRTcyMEE3N0VGNkNCM0JGQkI0NDdGOTM4MzExN0UzREFBNEEwN0UzNkVEMTVGNzhECiAgICB5OiAzNzE3MzJFNEY0MUJGNEY3ODgzMDM1RTZBNzlGQ0VEQzBFMTk2RUIwN0I0ODE3MTY5NzUxNzQ2MwogIC0KICAgIGs6IDEwCiAgICB4OiBBRUE5RTE3QTMwNjUxN0VCODkxNTJBQTcwOTZEMkMzODFFQzgxM0M1MUFBODgwRTdCRUUyQzBGRAogICAgeTogMzlCQjMwRUFCMzM3RTBBNTIxQjZDQkExQUJFNEIyQjNBM0U1MjRDMTRBM0ZFM0VCMTE2QjY1NUYKICAtCiAgICBrOiAxMQogICAgeDogRUY1M0I2Mjk0QUNBNDMxRjBGM0MyMkRDODJFQjkwNTAzMjRGMUQ4OEQzNzdFNzE2NDQ4RTUwN0MKICAgIHk6IDIwQjUxMDAwNDA5MkU5NjYzNkNGQjdFMzJFRkRFRDgyNjVDMjY2REZCNzU0RkE2RDY0OTFBNkRBCiAgLQogICAgazogMTIKICAgIHg6IDZFMzFFRTFEQzEzN0Y4MUIwNTY3NTJFNERFQUIxNDQzQTQ4MTAzM0U5QjRDOTNBMzA0NEY0RjdBCiAgICB5OiAyMDdERERGMDM4NUJGREVBQjZFOUFDREE4REEwNkIzQkJFRjIyNEE5M0FCMUU5RTAzNjEwOUQxMwogIC0KICAgIGs6IDEzCiAgICB4OiAzNEU4RTE3QTQzMEU0MzI4OTc5M0MzODNGQUM5Nzc0MjQ3QjQwRTlFQkQzMzY2OTgxRkNGQUVDQQogICAgeTogMjUyODE5RjcxQzdGQjdGQkNCMTU5QkUzMzdEMzdEMzMzNkQ3RkVCOTYzNzI0RkRGQjBFQ0I3NjcKICAtCiAgICBrOiAxNAogICAgeDogQTUzNjQwQzgzREMyMDg2MDNERUQ4M0U0RUNGNzU4RjI0QzM1N0Q3Q0Y0ODA4OEIyQ0UwMUU5RkEKICAgIHk6IEQ1ODE0Q0Q3MjQxOTlDNEE1Qjk3NEE0MzY4NUZCRjVCOEJBQzY5NDU5Qzk0NjlCQzhGMjNDQ0FGCiAgLQogICAgazogMTUKICAgIHg6IEJBQTREODYzNTUxMUE3RDI4OEFFQkVFREQxMkNFNTI5RkYxMDJDOTFGOTdGODY3RTIxOTE2QkY5CiAgICB5OiA5NzlBNUY0NzU5RjgwRjRGQjRFQzJFMzRGNTU2NkQ1OTU2ODBBMTE3MzVFN0I2MTA0NjEyNzk4OQogIC0KICAgIGs6IDE2CiAgICB4OiAwQjZFQzRGRTE3NzczODI0MDRFRjY3OTk5N0JBOEQxQ0M1Q0Q4RTg1MzQ5MjU5RjU5MEM0QzY2RAogICAgeTogMzM5OUQ0NjQzNDU5MDZCMTFCMDBFMzYzRUY0MjkyMjFGMkVDNzIwRDJGNjY1RDdERUFENUI0ODIKICAtCiAgICBrOiAxNwogICAgeDogQjgzNTdDM0E2Q0VFRjI4ODMxMEUxN0I4QkZFRkY5MjAwODQ2Q0E4QzE5NDI0OTdDNDg0NDAzQkMKICAgIHk6IEZGMTQ5RUZBNjYwNkE2QkQyMEVGN0QxQjA2QkQ5MkY2OTA0NjM5RENFNTE3NERCNkNDNTU0QTI2CiAgLQogICAgazogMTgKICAgIHg6IEM5RkY2MUIwNDA4NzRDMDU2ODQ3OTIxNjgyNEExNUVBQjFBODM4QTc5N0QxODk3NDYyMjZFNENDCiAgICB5OiBFQTk4RDYwRTVGRkM5QjhGQ0Y5OTlGQUIxREY3RTdFRjcwODRGMjBEREI2MUJCMDQ1QTZDRTAwMgogIC0KICAgIGs6IDE5CiAgICB4OiBBMUU4MUMwNEYzMENFMjAxQzdDOUFDRTc4NUVENDRDQzMzQjQ1NUEwMjJGMkFDREJDNkNBRTgzQwogICAgeTogRENGMUY2QzNEQjA5QzcwQUNDMjUzOTFENDkyRkUyNUI0QTE4MEJBQkQ2Q0VBMzU2QzA0NzE5Q0QKICAtCiAgICBrOiAyMAogICAgeDogRkNDN0YyQjQ1REYxQ0Q1QTNDMEMwNzMxQ0E0N0E4QUY3NUNGQjAzNDdFODM1NEVFRkU3ODI0NTUKICAgIHk6IDBENUQ3MTEwMjc0Q0JBN0NERUU5MEUxQThCMEQzOTRDMzc2QTU1NzNEQjZCRTBCRjI3NDdGNTMwCiAgLQogICAgazogMTEyMjMzNDQ1NTY2Nzc4ODk5CiAgICB4OiA2MUYwNzdDNkY2MkVEODAyREFEN0MyRjM4RjVDNjdGMkNDNDUzNjAxRTYxQkQwNzZCQjQ2MTc5RQogICAgeTogMjI3MkY5RTlGNTkzM0U3MDM4OEVFNjUyNTEzNDQzQjVFMjg5REQxMzVEQ0MwRDAyOTlCMjI1RTQKICAtCiAgICBrOiAxMTIyMzM0NDU1NjY3Nzg4OTkxMTIyMzM0NDU1NjY3Nzg4OTkKICAgIHg6IDAyOTg5NUYwQUY0OTZCRkM2MkI2RUY4RDhBNjVDODhDNjEzOTQ5QjAzNjY4QUFCNEYwNDI5RTM1CiAgICB5OiAzRUE2RTUzRjlBODQxRjIwMTlFQzI0QkRFMUE3NTY3N0FBOUI1OTAyRTYxMDgxQzAxMDY0REU5MwogIC0KICAgIGs6IDY5NTA1MTE2MTk5NjU4Mzk0NTA5ODg5MDA2ODgxNTA3MTI3NzgwMTU3Mzc5ODM5NDA2OTE5NjgwNTE5MDAzMTk2ODAKICAgIHg6IEFCNjg5OTMwQkNBRTRBNEFBNUY1Q0IwODVFODIzRThBRTMwRkQzNjVFQjFEQTRBQkE5Q0YwMzc5CiAgICB5OiAzMzQ1QTEyMUJCRDIzMzU0OEFGMEQyMTA2NTRFQjQwQkFCNzg4QTAzNjY2NDE5QkU2RkJEMzRFNwogIC0KICAgIGs6IDEzNDc5OTcyOTMzNDEwMDYwMzI3MDM1Nzg5MDIwNTA5NDMxNjk1MDk0OTAyNDM1NDk0Mjk1MzM4NTcwNjAyMTE5NDIzCiAgICB4OiBCREI2QTg4MTdDMUY4OURBMUMyRjNERDhFOTdGRUI0NDk0RjJFRDMwMkE0Q0UyQkM3RjVGNDAyNQogICAgeTogNEM3MDIwRDU3QzAwNDExODg5NDYyRDc3QTU0MzhCQjRFOTdEMTc3NzAwQkY3MjQzQTA3RjE2ODAKICAtCiAgICBrOiAxMzQ3OTk3MTc1MTc0NTY4MjU4MTM1MTQ1NTMxMTMxNDIwODA5Mzg5ODYwNzIyOTQyOTc0MDYxODM5MDM5MDcwMjA3OQogICAgeDogRDU4QjYxQUE0MUMzMkRENUVCQTQ2MjY0N0RCQTc1QzVENjdDODM2MDZDMEFGMkJEOTI4NDQ2QTkKICAgIHk6IEQyNEJBNkE4MzdCRTA0NjBERDEwN0FFNzc3MjU2OTZEMjExNDQ2QzU2MDlCNDU5NTk3NkIxNkJECiAgLQogICAgazogMTM0Nzk5NzI5MzE4NjUzMjgxMDY0ODY5NzE1NDYzMjQ0NjUzOTI5NTI5NzU5ODAzNDMyMjgxNjA5NjI3MDI4Njg0NzkKICAgIHg6IERDOUZBNzc5NzhBMDA1NTEwOTgwRTkyOUExNDg1RjYzNzE2REY2OTVEN0EwQzE4QkI1MThERjAzCiAgICB5OiBFREUyQjAxNkYyRERGRkMyQThDMDE1QjEzNDkyODI3NUNFMDlFNTY2MUI3QUIxNENFMEQxRDQwMwogIC0KICAgIGs6IDExNzk1NzczNzA4ODM0OTE2MDI2NDA0MTQyNDM0MTUxMDY1NTA2OTMxNjA3MzQxNTIzMzg4MTQwMjI1NDQzMjY1NTM2CiAgICB4OiA0OTlEOEIyODI5Q0ZCODc5QzkwMUY3RDg1RDM1NzA0NUVEQUI1NTAyODgyNEQwRjA1QkEyNzlCQQogICAgeTogQkY5Mjk1MzdCMDZFNDAxNTkxOTYzOUQ5NEY1NzgzOEZBMzNGQzNEOTUyNTk4RENEQkI0NEQ2MzgKICAtCiAgICBrOiA3ODQyNTQ1OTMwNDM4MjYyMzY1NzI4NDc1OTU5OTEzNDY0MzU0NjcxNzc2NjIxODkzOTE1NzcwOTAKICAgIHg6IDgyNDZDOTk5MTM3MTg2NjMyQzVGOUVEREYzQjFCMEUxNzY0QzVFOEJEMEUwRDhBNTU0QjlDQjc3CiAgICB5OiBFODBFRDg2NjBCQzFDQjE3QUM3RDg0NUJFNDBBN0EwMjJEMzMwNkYxMTZBRTlGODFGRUE2NTk0NwogIC0KICAgIGs6IDEzNDc5NzY3NjQ1NTA1NjU0NzQ2NjIzODg3Nzk3NzgzMzg3ODUzNTc2MTc0MTkzNDgwNjk1ODI2NDQyODU4MDEyNjcxCiAgICB4OiA2NjcwQzIwQUZDQ0VBRUE2NzJDOTdGNzVFMkU5REQ1Qzg0NjBFNTRCQjM4NTM4RUJCNEJEMzBFQgogICAgeTogRjI4MEQ4MDA4RDA3QTRDQUY1NDI3MUY5OTM1MjdENDZGRjNGRjQ2RkQxMTkwQTNGMUZBQTRGNzQKICAtCiAgICBrOiAyMDU2ODgwNjk2NjUxNTA3NTM4NDIxMjYxNzczNzIwMTU1NDQ4NzQ1NTA1MTg5NjYxNjg3MzU1ODk1OTcxODMKICAgIHg6IDAwMEVDQTkzNDI0NzQyNUNGRDk0OUI3OTVDQjVDRTFFRkY0MDE1NTAzODZFMjhEMUE0QzVBOEVCCiAgICB5OiBENEMwMTA0MERCQTE5NjI4OTMxQkM4ODU1MzcwMzE3QzcyMkNCRDlDQTYxNTY5ODVGMUMyRTlDRQogIC0KICAgIGs6IDEzNDc5OTY2OTMwOTE5MzM3NzI4ODk1MTY4NDYyMDkwNjgzMjQ5MTU5NzAyOTc3MTEzODIzMzg0NjE4MjgyMTIzMjk1CiAgICB4OiBFRjM1M0JGNUM3M0NENTUxQjk2RDU5NkZCQzlBNjdGMTZENjFERDlGRTU2QUYxOURFMUZCQTlDRAogICAgeTogMjE3NzFCOUNEQ0UzRTg0MzBDMDlCMzgzOEJFNzBCNDhDMjFFMTVCQzA5RUUxRjJENzk0NUI5MUYKICAtCiAgICBrOiA1MDIxMDczMTc5MTQxNTYxMjQ4Nzc1NjQ0MTM0MTg1MTg5NTU4NDM5MzcxNzQ1MzEyOTAwNzQ5NzIxNgogICAgeDogNDAzNjA1MkEzMDkxRUI0ODEwNDZBRDMyODlDOTVEM0FDOTA1Q0EwMDIzREUyQzAzRUNENDUxQ0YKICAgIHk6IEQ3NjgxNjVBMzhBMkI5NkY4MTI1ODZBOUQ1OUQ0MTM2MDM1RDlDODUzQTVCRjJFMUM4NkE0OTkzCiAgLQogICAgazogMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNDEKICAgIHg6IEZDQzdGMkI0NURGMUNENUEzQzBDMDczMUNBNDdBOEFGNzVDRkIwMzQ3RTgzNTRFRUZFNzgyNDU1CiAgICB5OiBGMkEyOEVFRkQ4QjM0NTgzMjExNkYxRTU3NEYyQzZCMkM4OTVBQThDMjQ5NDFGNDBEOEI4MEFEMQogIC0KICAgIGs6IDI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDQyCiAgICB4OiBBMUU4MUMwNEYzMENFMjAxQzdDOUFDRTc4NUVENDRDQzMzQjQ1NUEwMjJGMkFDREJDNkNBRTgzQwogICAgeTogMjMwRTA5M0MyNEY2MzhGNTMzREFDNkUyQjZEMDFEQTNCNUU3RjQ1NDI5MzE1Q0E5M0ZCOEU2MzQKICAtCiAgICBrOiAyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA0MwogICAgeDogQzlGRjYxQjA0MDg3NEMwNTY4NDc5MjE2ODI0QTE1RUFCMUE4MzhBNzk3RDE4OTc0NjIyNkU0Q0MKICAgIHk6IDE1NjcyOUYxQTAwMzY0NzAzMDY2NjA1NEUyMDgxODBGOEY3QjBERjIyNDlFNDRGQkE1OTMxRkZGCiAgLQogICAgazogMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNDQKICAgIHg6IEI4MzU3QzNBNkNFRUYyODgzMTBFMTdCOEJGRUZGOTIwMDg0NkNBOEMxOTQyNDk3QzQ4NDQwM0JDCiAgICB5OiAwMEVCNjEwNTk5Rjk1OTQyREYxMDgyRTRGOTQyNkQwODZGQjlDNjIzMUFFOEIyNDkzM0FBQjVEQgogIC0KICAgIGs6IDI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDQ1CiAgICB4OiAwQjZFQzRGRTE3NzczODI0MDRFRjY3OTk5N0JBOEQxQ0M1Q0Q4RTg1MzQ5MjU5RjU5MEM0QzY2RAogICAgeTogQ0M2NjJCOUJDQkE2Rjk0RUU0RkYxQzlDMTBCRDZEREQwRDEzOERGMkQwOTlBMjgyMTUyQTRCN0YKICAtCiAgICBrOiAyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA0NgogICAgeDogQkFBNEQ4NjM1NTExQTdEMjg4QUVCRUVERDEyQ0U1MjlGRjEwMkM5MUY5N0Y4NjdFMjE5MTZCRjkKICAgIHk6IDY4NjVBMEI4QTYwN0YwQjA0QjEzRDFDQjBBQTk5MkE1QTk3RjVFRThDQTE4NDlFRkI5RUQ4Njc4CiAgLQogICAgazogMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNDcKICAgIHg6IEE1MzY0MEM4M0RDMjA4NjAzREVEODNFNEVDRjc1OEYyNEMzNTdEN0NGNDgwODhCMkNFMDFFOUZBCiAgICB5OiAyQTdFQjMyOERCRTY2M0I1QTQ2OEI1QkM5N0EwNDBBMzc0NTM5NkJBNjM2Qjk2NDM3MERDMzM1MgogIC0KICAgIGs6IDI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDQ4CiAgICB4OiAzNEU4RTE3QTQzMEU0MzI4OTc5M0MzODNGQUM5Nzc0MjQ3QjQwRTlFQkQzMzY2OTgxRkNGQUVDQQogICAgeTogREFEN0U2MDhFMzgwNDgwNDM0RUE2NDFDQzgyQzgyQ0JDOTI4MDE0NjlDOERCMDIwNEYxMzQ4OUEKICAtCiAgICBrOiAyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA0OQogICAgeDogNkUzMUVFMURDMTM3RjgxQjA1Njc1MkU0REVBQjE0NDNBNDgxMDMzRTlCNEM5M0EzMDQ0RjRGN0EKICAgIHk6IERGODIyMjBGQzdBNDAyMTU0OTE2NTMyNTcyNUY5NEMzNDEwRERCNTZDNTRFMTYxRkM5RUY2MkVFCiAgLQogICAgazogMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNTAKICAgIHg6IEVGNTNCNjI5NEFDQTQzMUYwRjNDMjJEQzgyRUI5MDUwMzI0RjFEODhEMzc3RTcxNjQ0OEU1MDdDCiAgICB5OiBERjRBRUZGRkJGNkQxNjk5QzkzMDQ4MUNEMTAyMTI3QzlBM0Q5OTIwNDhBQjA1OTI5QjZFNTkyNwogIC0KICAgIGs6IDI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDUxCiAgICB4OiBBRUE5RTE3QTMwNjUxN0VCODkxNTJBQTcwOTZEMkMzODFFQzgxM0M1MUFBODgwRTdCRUUyQzBGRAogICAgeTogQzY0NENGMTU0Q0M4MUY1QURFNDkzNDVFNTQxQjRENEI1QzFBREIzRUI1QzAxQzE0RUU5NDlBQTIKICAtCiAgICBrOiAyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA1MgogICAgeDogMkZEQ0NDRkVFNzIwQTc3RUY2Q0IzQkZCQjQ0N0Y5MzgzMTE3RTNEQUE0QTA3RTM2RUQxNUY3OEQKICAgIHk6IEM4RThDRDFCMEJFNDBCMDg3N0NGQ0ExOTU4NjAzMTIyRjFFNjkxNEY4NEI3RThFOTY4QUU4QjlFCiAgLQogICAgazogMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNTMKICAgIHg6IDg1OEU2RjlDQzZDMTJDMzFGNURGMTI0QUE3Nzc2N0IwNUM4QkMwMjFCRDY4M0QyQjU1NTcxNTUwCiAgICB5OiBGQjkyMzJDMTVBM0JDNzY3M0EzQTAzQjAyNTM4MjRDNTNEMEZEMTQxMUIxQ0FCRTJFMTg3RkI4NwogIC0KICAgIGs6IDI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDU0CiAgICB4OiBEQjJGNkJFNjMwRTI0NkE1Q0Y3RDk5Qjg1MTk0QjEyM0Q0ODdFMkQ0NjZCOTRCMjRBMDNDM0UyOAogICAgeTogRjBDNUNGRjdBQjY4MEQwOUVFMTFEQUU4NEU5QzEwNzJBQzQ4RUEyRTc0NEIxQjdGNzJGRDQ2OUUKICAtCiAgICBrOiAyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA1NQogICAgeDogMUYyNDgzRjgyNTcyMjUxRkNBOTc1RkVBNDBEQjgyMURGOEFEODJBM0MwMDJFRTZDNTcxMTI0MDgKICAgIHk6IDc2MDUwRjMzNDhBRjI2NjRBQUMzQThCMDUyODEzMDRFQkM3QTc5MTRDNkFENTBBNEI0RUFDMzgzCiAgLQogICAgazogMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNTYKICAgIHg6IDMxQzQ5QUU3NUJDRTc4MDdDREZGMjIwNTVEOTRFRTkwMjFGRURCQjVBQjUxQzU3NTI2RjAxMUFBCiAgICB5OiBEODE3NDAwRThCQTlDQTEzQTQ1RjM2MEUzRDEyMUVBQUVCMzlBRjgyRDYwMDFDODE4NkY1Rjg2NgogIC0KICAgIGs6IDI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDU3CiAgICB4OiBBRTk5RkVFQkI1RDI2OTQ1QjU0ODkyMDkyQThBRUUwMjkxMjkzMEZBNDFDRDExNEU0MDQ0NzMwMQogICAgeTogRkI3REE3RjVGMTNBNDNCODE3NzQzNzNDODc5Q0QzMkQ2OTM0QzA1RkE3NThFRUIxNEZDRkFCMzgKICAtCiAgICBrOiAyNjk1OTk0NjY2NzE1MDYzOTc5NDY2NzAxNTA4NzAxOTYyNTk0MDQ1NzgwNzcxNDQyNDM5MTcyMTY4MjcyMjM2ODA1OAogICAgeDogREYxQjFENjZBNTUxRDBEMzFFRkY4MjI1NThCOUQyQ0M3NUMyMTgwMjc5RkUwRDA4RkQ4OTZEMDQKICAgIHk6IDVDMDgwRkMzNTIyRjQxQkJCM0Y1NUE5N0NGRUNGMjFGODgyQ0U4Q0JCMUU1MENBNkU2N0U1NkRDCiAgLQogICAgazogMjY5NTk5NDY2NjcxNTA2Mzk3OTQ2NjcwMTUwODcwMTk2MjU5NDA0NTc4MDc3MTQ0MjQzOTE3MjE2ODI3MjIzNjgwNTkKICAgIHg6IDcwNkE0NkRDNzZEQ0I3Njc5OEU2MEU2RDg5NDc0Nzg4RDE2REMxODAzMkQyNjhGRDFBNzA0RkE2CiAgICB5OiBFM0Q0ODk1ODQzREExODhGRDU4RkIwNTY3OTc2RDdCNTAzNTlENkI3ODUzMEM4RjYyRDFCMTc0NgogIC0KICAgIGs6IDI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjI1OTQwNDU3ODA3NzE0NDI0MzkxNzIxNjgyNzIyMzY4MDYwCiAgICB4OiBCNzBFMENCRDZCQjRCRjdGMzIxMzkwQjk0QTAzQzFEMzU2QzIxMTIyMzQzMjgwRDYxMTVDMUQyMQogICAgeTogNDJDODlDNzc0QTA4REMwNEIzREQyMDE5MzJCQzhBNUVBNUY4Qjg5QkJCMkE3RTY2N0FGRjgxQ0QKCiAgICAjIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTc5I2FwcGVuZGl4LUEuMi40CmhtYWM6CiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAyMjQKICAgIGtleTogRjIyMDI2NkUxMTA1QkZFMzA4M0UwM0VDN0EzQTY1NDY1MUY0NUUzNzE2N0U4ODYwMEJGMjU3QzEKICAgIGs6IDdFRUZBREQ5MTExMEQ4REU2QzJDNDcwODMxMzg3QzUwRDMzNTdGN0Y0RDQ3NzA1NEI4QjQyNkJDCiAgICByOiAyMjIyNkY5RDQwQTk2RTE5QzRBMzAxQ0U1Qjc0QjExNTMwM0MwRjNBNEZEMzBGQzI1N0ZCNTdBQwogICAgczogNjZEMUNERDgzRTNBRjc1NjA1REQ2RTJGRUZGMTk2RDMwQUE3RUQ3QTJFREY3QUY0NzU0MDNENjkKICAtCiAgICBhbGdvOiBzaGEyMjQKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMjI0CiAgICBrZXk6IEYyMjAyNjZFMTEwNUJGRTMwODNFMDNFQzdBM0E2NTQ2NTFGNDVFMzcxNjdFODg2MDBCRjI1N0MxCiAgICBrOiBDMUQxRjJGMTA4ODEwODgzMDE4ODA1MDY4MDVGRUI0ODI1RkUwOUFDQjY4MTZDMzY5OTFBQTA2RAogICAgcjogMUNERkU2NjYyRERFMUU0QTFFQzRDREVERjZBMUY1QTJGQjdGQkQ5MTQ1QzEyMTEzRTZBQkZEM0UKICAgIHM6IEE2Njk0RkQ3NzE4QTIxMDUzRjIyNUQzRjQ2MTk3Q0E2OTlENDUwMDZDMDZGODcxODA4RjQzRUJDCiAgLQogICAgYWxnbzogc2hhMjU2CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDIyNAogICAga2V5OiBGMjIwMjY2RTExMDVCRkUzMDgzRTAzRUM3QTNBNjU0NjUxRjQ1RTM3MTY3RTg4NjAwQkYyNTdDMQogICAgazogQUQzMDI5RTAyNzhGODA2NDNERTMzOTE3Q0U2OTA4QzcwQThGRjUwQTQxMUYwNkU0MURFREZDREMKICAgIHI6IDYxQUEzREEwMTBFOEU4NDA2QzY1NkJDNDc3QTdBNzE4OTg5NUU3RTg0MENERkU4RkY0MjMwN0JBCiAgICBzOiBCQzgxNDA1MERBQjVEMjM3NzA4Nzk0OTRGOUUwQTY4MERDMUFGNzE2MTk5MUJERTY5MkIxMDEwMQogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAyMjQKICAgIGtleTogRjIyMDI2NkUxMTA1QkZFMzA4M0UwM0VDN0EzQTY1NDY1MUY0NUUzNzE2N0U4ODYwMEJGMjU3QzEKICAgIGs6IDUyQjQwRjVBOUQzRDEzMDQwRjQ5NEU4M0QzOTA2QzYwNzlGMjk5ODEwMzVDN0JENTFFNUNBQzQwCiAgICByOiAwQjExNUU1RTM2RjBGOUVDODFGMTMyNUE1OTUyODc4RDc0NUUxOUQ3QkIzRUFCRkFCQTc3RTk1MwogICAgczogODMwRjM0Q0NERkU4MjZDQ0ZEQzgxRUI0MTI5NzcyRTIwRTEyMjM0OEEyQkJEODg5QTFCMUFGMUQKICAtCiAgICBhbGdvOiBzaGE1MTIKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMjI0CiAgICBrZXk6IEYyMjAyNjZFMTEwNUJGRTMwODNFMDNFQzdBM0E2NTQ2NTFGNDVFMzcxNjdFODg2MDBCRjI1N0MxCiAgICBrOiA5REIxMDNGRkVERURGOUNGREJBMDUxODRGOTI1NDAwQzE2NTNCODUwMUJBQjg5Q0VBMEZCRUMxNAogICAgcjogMDc0QkQxRDk3OUQ1RjMyQkY5NThEREM2MUU0RkI0ODcyQURDQUZFQjIyNTY0OTdDREFDMzAzOTcKICAgIHM6IEE0Q0VDQTE5NkMzRDVBMUZGMzEwMjdCMzMxODVEQzhFRTQzRjI4OEIyMUFCMzQyRTVEOEVCMDg0CiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMjI0CiAgICBrZXk6IEYyMjAyNjZFMTEwNUJGRTMwODNFMDNFQzdBM0E2NTQ2NTFGNDVFMzcxNjdFODg2MDBCRjI1N0MxCiAgICBrOiAyNTE5MTc4RjgyQzNGMEU0Rjg3RUQ1ODgzQTRFMTE0RTVCN0E2RTM3NDA0M0Q4RUZEMzI5QzI1MwogICAgcjogREVBQTY0NkVDMkFGMkVBOEFENTNFRDY2QjJFMkREQUE0OUExMkVGRDgzNTY1NjE0NTFGM0UyMUMKICAgIHM6IDk1OTg3Nzk2RjZDRjIwNjJBQjgxMzUyNzFERTU2QUU1NTM2NkMwNDVGNkQ5NTkzRjUzNzg3QkQyCiAgLQogICAgYWxnbzogc2hhMjI0CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAyMjQKICAgIGtleTogRjIyMDI2NkUxMTA1QkZFMzA4M0UwM0VDN0EzQTY1NDY1MUY0NUUzNzE2N0U4ODYwMEJGMjU3QzEKICAgIGs6IERGOEIzOEQ0MERDQTNFMDc3RDBBQzUyMEJGNTZCNkQ1NjUxMzREOUI1RjJFQUUwRDM0OTAwNTI0CiAgICByOiBDNDQxQ0U4RTI2MURFRDYzNEU0Q0Y4NDkxMEU0QzVEMUQyMkM1Q0YzQjczMkJCMjA0REJFRjAxOQogICAgczogOTAyRjQyODQ3QTYzQkRDNUY2MDQ2QURBMTE0OTUzMTIwRjk5NDQyRDc2NTEwMTUwRjM3MkEzRjQKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6IHRlc3QKICAgIHNpemU6IDIyNAogICAga2V5OiBGMjIwMjY2RTExMDVCRkUzMDgzRTAzRUM3QTNBNjU0NjUxRjQ1RTM3MTY3RTg4NjAwQkYyNTdDMQogICAgazogRkY4NkY1NzkyNERBMjQ4RDZFNDRFODE1NEVCNjlGMEFFMkFFQkFFRTk5MzFEMEI1QTk2OUY5MDQKICAgIHI6IEFEMDREREU4N0I4NDc0N0EyNDNBNjMxRUE0N0ExQkE2RDFGQUEwNTkxNDlBRDI0NDBERTZGQkE2CiAgICBzOiAxNzhENDlCMUFFOTBFM0Q4QjYyOUJFM0RCNTY4MzkxNUY0RThDOTlGREY2RTY2NkNGMzdBRENGRAogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMjI0CiAgICBrZXk6IEYyMjAyNjZFMTEwNUJGRTMwODNFMDNFQzdBM0E2NTQ2NTFGNDVFMzcxNjdFODg2MDBCRjI1N0MxCiAgICBrOiA3MDQ2NzQyQjgzOTQ3OEMxQjVCRDMxREIyRTg2MkFEODY4RTFBNDVDODYzNTg1QjVGMjJCREMyRAogICAgcjogMzg5QjkyNjgyRTM5OUIyNjUxOEE5NTUwNkI1MkMwM0JDOTM3OUE5REFERjMzOTFBMjFGQjBFQTQKICAgIHM6IDQxNEE3MThFRDMyNDlGRjZEQkM1QjUwQzI3RjcxRjAxRjA3MDk0NERBMjJBQjFGNzhGNTU5QUFCCiAgLQogICAgYWxnbzogc2hhNTEyCiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAyMjQKICAgIGtleTogRjIyMDI2NkUxMTA1QkZFMzA4M0UwM0VDN0EzQTY1NDY1MUY0NUUzNzE2N0U4ODYwMEJGMjU3QzEKICAgIGs6IEUzOUMyQUE0RUE2QkUyMzA2QzcyMTI2RDQwRUQ3N0JGOTczOUJCNEQ2RUYyQkJCMURDQjYxNjlECiAgICByOiAwNDlGMDUwNDc3QzVBREQ4NThDQUM1NjIwODM5NEI1QTU1QkFFQkJFODg3RkRGNzY1MDQ3QzE3QwogICAgczogMDc3RUIxM0U3MDA1OTI5Q0VGQTNDRDA0MDNDN0NEQ0MwNzdBREY0RTQ0RjNDNDFCMkY2MEVDRkY=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/nist-p256.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBodHRwOi8vcG9pbnQtYXQtaW5maW5pdHkub3JnL2VjYy9uaXN0dHYKbmFtZTogbmlzdHAyNTYKZGlmZmllOgogIC0KICAgIGFsaWNlOiA1ODQ2NTY2MDA5NzM3NDQ5MTk3MzgxODA4NjE3NTU5NDk2MTg3OTQ0MzE3NDA0MzYyMzEzMTQ3Mzc3OTEyOTI2MzE0MTM1NjU0NDk0MwogICAgYm9iOiAyMDMwMDEzNzk4NTUwMDY1MDE1NTc2OTYzMTIzNDU0NzUzNjAzNjMyODk1NTI1MDA4MDE5MjYwOTgyMjUxODU4MjI2OTI5NDExNjY3MwogICAgc2hhcmVkOiBERDBGNTM5NjIxOUQxRUEzOTMzMTA0MTJEMTlBMDhGMUY1ODExRTlEQzhFQzhFRUE3RjgwRDIxQzgyMEMyNzg4CiAgICAjIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MTE0Lmh0bWwKa2V5cGFpcnM6CiAgLQogICAgazogMQogICAgeDogNkIxN0QxRjJFMTJDNDI0N0Y4QkNFNkU1NjNBNDQwRjI3NzAzN0Q4MTJERUIzM0EwRjRBMTM5NDVEODk4QzI5NgogICAgeTogNEZFMzQyRTJGRTFBN0Y5QjhFRTdFQjRBN0MwRjlFMTYyQkNFMzM1NzZCMzE1RUNFQ0JCNjQwNjgzN0JGNTFGNQogIC0KICAgIGs6IDIKICAgIHg6IDdDRjI3QjE4OEQwMzRGN0U4QTUyMzgwMzA0QjUxQUMzQzA4OTY5RTI3N0YyMUIzNUE2MEI0OEZDNDc2Njk5NzgKICAgIHk6IDA3Nzc1NTEwREI4RUQwNDAyOTNEOUFDNjlGNzQzMERCQkE3REFERTYzQ0U5ODIyOTlFMDRCNzlEMjI3ODczRDEKICAtCiAgICBrOiAzCiAgICB4OiA1RUNCRTREMUE2MzMwQTQ0QzhGN0VGOTUxRDRCRjE2NUU2QzZCNzIxRUZBREE5ODVGQjQxNjYxQkM2RTdGRDZDCiAgICB5OiA4NzM0NjQwQzQ5OThGRjdFMzc0QjA2Q0UxQTY0QTJFQ0Q4MkFCMDM2Mzg0RkI4M0Q5QTc5QjEyN0EyN0Q1MDMyCiAgLQogICAgazogNAogICAgeDogRTI1MzRBMzUzMkQwOEZCQkEwMkRERTY1OUVFNjJCRDAwMzFGRTJEQjc4NTU5NkVGNTA5MzAyNDQ2QjAzMDg1MgogICAgeTogRTBGMTU3NUE0QzYzM0NDNzE5REZFRTVGREE4NjJENzY0RUZDOTZDM0YzMEVFMDA1NUM0MkMyM0YxODRFRDhDNgogIC0KICAgIGs6IDUKICAgIHg6IDUxNTkwQjdBNTE1MTQwRDJENzg0Qzg1NjA4NjY4RkRGRUY4QzgyRkQxRjVCRTUyNDIxNTU0QTBEQzNEMDMzRUQKICAgIHk6IEUwQzE3REE4OTA0QTcyN0Q4QUUxQkYzNkJGOEE3OTI2MEQwMTJGMDBENEQ4MDg4OEQxRDBCQjQ0RkRBMTZEQTQKICAtCiAgICBrOiA2CiAgICB4OiBCMDFBMTcyQTc2QTQ2MDJDOTJEMzI0MkNCODk3RERFMzAyNEM3NDBERUJCMjE1QjRDNkIwQUFFOTNDMjI5MUE5CiAgICB5OiBFODVDMTA3NDMyMzdEQUQ1NkZFQzBFMkRGQkE3MDM3OTFDMDBGNzcwMUM3RTE2QkRGRDdDNDg1MzhGQzc3RkUyCiAgLQogICAgazogNwogICAgeDogOEU1MzNCNkZBMEJGN0I0NjI1QkIzMDY2N0MwMUZCNjA3RUY5RjhCOEE4MEZFRjVCMzAwNjI4NzAzMTg3QjJBMwogICAgeTogNzNFQjFEQkRFMDMzMTgzNjZEMDY5RjgzQTZGNTkwMDA1M0M3MzYzM0NCMDQxQjIxQzU1RTFBODZDMUY0MDBCNAogIC0KICAgIGs6IDgKICAgIHg6IDYyRDk3NzlEQkVFOUIwNTM0MDQyNzQyRDNBQjU0Q0FEQzFEMjM4OTgwRkNFOTdEQkI0REQ5REMxREI2RkIzOTMKICAgIHk6IEFENUFDQ0JEOTFFOUQ4MjQ0RkYxNUQ3NzExNjdDRUUwQTJFRDUxRjZCQkU3NkE3OERBNTQwQTZBMEYwOTk1N0UKICAtCiAgICBrOiA5CiAgICB4OiBFQTY4RDdCNkZFREYwQjcxODc4OTM4RDUxRDcxRjg3MjlFMEFDQjhDMkM2REY4QjNENzlFOEE0QjkwOTQ5RUUwCiAgICB5OiAyQTI3NDRDOTcyQzlGQ0U3ODcwMTRBOTY0QThFQTBDODRENzE0RkVBQTRERTgyM0ZFODVBMjI0QTRERDA0OEZBCiAgLQogICAgazogMTAKICAgIHg6IENFRjY2RDZCMkEzQTk5M0U1OTEyMTREMUVBMjIzRkI1NDVDQTZDNDcxQzQ4MzA2RTRDMzYwNjk0MDRDNTcyM0YKICAgIHk6IDg3ODY2MkEyMjlBQUFFOTA2RTEyM0NERDlEM0I0QzEwNTkwREVEMjlGRTc1MUVFRUNBMzRCQkFBNDRBRjA3NzMKICAtCiAgICBrOiAxMQogICAgeDogM0VEMTEzQjc4ODNCNEM1OTA2MzgzNzlEQjBDMjFDREExNjc0MkVEMDI1NTA0OEJGNDMzMzkxRDM3NEJDMjFEMQogICAgeTogOTA5OTIwOUFDQ0M0QzhBMjI0Qzg0M0FGQTRGNEM2OEEwOTBEMDREQTVFOTg4OURBRTJGOEVFRkNFODJBMzc0MAogIC0KICAgIGs6IDEyCiAgICB4OiA3NDFERDVCREE4MTdEOTVFNDYyNjUzNzMyMEU1RDU1MTc5OTgzMDI4QjJGODJDOTlENTAwQzVFRTg2MjRFM0M0CiAgICB5OiAwNzcwQjQ2QTlDMzg1RkRDNTY3MzgzNTU0ODg3QjE1NDhFRUI5MTJDMzVCQTVDQTcxOTk1RkYyMkNENDQ4MUQzCiAgLQogICAgazogMTMKICAgIHg6IDE3N0M4MzdBRTBBQzQ5NUE2MTgwNURGMkQ4NUVFMkZDNzkyRTI4NEI2NUVBRDU4QTk4RTE1RDlENDYwNzJDMDEKICAgIHk6IDYzQkI1OENENEVCRUE1NThBMjQwOTFBREI0MEY0RTcyMjZFRTE0QzNBMUZCNERGMzlDNDNCQkUyRUZDN0JGRDgKICAtCiAgICBrOiAxNAogICAgeDogNTRFNzdBMDAxQzM4NjJCOTdBNzY2NDdGNDMzNkRGM0NGMTI2QUNCRTdBMDY5QzVFNTcwOTI3NzMyNEQyOTIwQgogICAgeTogRjU5OUYxQkIyOUY0MzE3NTQyMTIxRjhDMDVBMkU3QzM3MTcxRUE3NzczNTA5MDA4MUJBN0M4MkY2MEQwQjM3NQogIC0KICAgIGs6IDE1CiAgICB4OiBGMDQ1NERDNjk3MUFCQUU3QURGQjM3ODk5OTg4ODI2NUFFMDNBRjkyREUzQTBFRjE2MzY2OEM2M0U1OUI5RDVGCiAgICB5OiBCNUI5M0VFMzU5MkUyRDFGNEU2NTk0RTUxRjk2NDNFNjJBM0IyMUNFNzVCNUZBM0Y0N0U1OUNERTBEMDM0RjM2CiAgLQogICAgazogMTYKICAgIHg6IDc2QTk0RDEzOEE2QjQxODU4QjgyMUM2Mjk4MzYzMTVGQ0QyODM5MkVGRjZDQTAzOEE1RUI0Nzg3RTEyNzdDNkUKICAgIHk6IEE5ODVGRTYxMzQxRjI2MEU2Q0IwQTFCNUUxMUU4NzIwODU5OUEwMDQwRkM3OEJBQTBFOURERDcyNEI4QzUxMTAKICAtCiAgICBrOiAxNwogICAgeDogNDc3NzY5MDRDMEYxQ0MzQTlDMDk4NEI2NkY3NTMwMUE1RkE2ODY3OEYwRDY0QUY4QkExQUJDRTM0NzM4QTczRQogICAgeTogQUEwMDVFRTZCNUI5NTcyODYyMzE4NTY1Nzc2NDhFODM4MUIyODA0NDI4RDU3MzNGMzJGNzg3RkY3MUYxRkNEQwogIC0KICAgIGs6IDE4CiAgICB4OiAxMDU3RTBBQjU3ODBGNDcwREVGQzkzNzhEMUM3Qzg3NDM3QkI0QzZGOUVBNTVDNjNEOTM2MjY2REJENzgxRkRBCiAgICB5OiBGNkYxNjQ1QTE1Q0JFNURDOUZBOUI3REZEOTZFRTVBN0RDQzExQjVDNUVGNEYxRjc4RDgzQjMzOTNDNkE0NUEyCiAgLQogICAgazogMTkKICAgIHg6IENCNkQyODYxMTAyQzBDMjVDRTM5QjdDMTcxMDhDNTA3NzgyQzQ1MjI1Nzg4NDg5NUMxRkM3Qjc0QUIwM0VEODMKICAgIHk6IDU4RDc2MTRCMjREOUVGNTE1QzM1RTcxMDBENkQ2Q0U0QTQ5NjcxNkUzMEZBM0UwM0UzOTE1MDc1MkJDRUNEQUEKICAtCiAgICBrOiAyMAogICAgeDogODNBMDFBOTM3ODM5NUJBQjlCQ0Q2QTBBRDAzQ0M1NkQ1NkU2QjE5MjUwNDY1QTk0QTIzNERDNEM2QjI4REE5QQogICAgeTogNzZFNDlCNkRFMkY3MzIzNEFFNkE1RUI5RDYxMkI3NUM5RjIyMDJCQjY5MjNGNTRGRjgyNDBBQUE4NkY2NDBCOAogIC0KICAgIGs6IDExMjIzMzQ0NTU2Njc3ODg5OQogICAgeDogMzM5MTUwODQ0RUMxNTIzNDgwN0ZFODYyQTg2QkU3Nzk3N0RCRkIzQUUzRDk2RjRDMjI3OTU1MTNBRUFBQjgyRgogICAgeTogQjFDMTREREZEQzhFQzFCMjU4M0Y1MUU4NUE1RUIzQTE1NTg0MEYyMDM0NzMwRTlCNUFEQTM4QjY3NDMzNkEyMQogIC0KICAgIGs6IDExMjIzMzQ0NTU2Njc3ODg5OTExMjIzMzQ0NTU2Njc3ODg5OQogICAgeDogMUI3RTA0NkEwNzZDQzI1RTZEN0ZBNTAwM0Y2NzI5RjY2NUNDMzI0MUI1QURBQjEyQjQ5OENEMzJGMjgwMzI2NAogICAgeTogQkZFQTc5QkUyQjY2NkIwNzNEQjY5QTJBMjQxQURBQjA3MzhGRTlEMkREMjhCNTYwNEVCOEM4Q0YwOTdDNDU3QgogIC0KICAgIGs6IDI5ODUyMjIwMDk4MjIxMjYxMDc5MTgzOTIzMzE0NTk5MjA2MTAwNjY2OTAyNDE0MzMwMjQ1MjA2MzkyNzg4NzAzNjc3NTQ1MTg1MjgzCiAgICB4OiA5RUFDRThGNEIwNzFFNjc3QzUzNTBCMDJGMkJCMkIzODRBQUU4OUQ1OEFBNzJDQTk3QTE3MDU3MkUwRkIyMjJGCiAgICB5OiAxQkJEQUVDMjQzMEIwOUI5M0Y3Q0IwODY3ODYzNkNFMTJFQUFGRDU4MzkwNjk5QjVGRDJGNkUxMTg4RkMyQTc4CiAgLQogICAgazogNTc4OTYwNDI4OTk5NjEzOTQ4NjIwMDU3Nzg0NjQ2NDM4ODIzODk5Nzg0NDk1NzY3NTg3NDgwNzM3MjU5ODM0ODk5NTQzNjYzNTQ0MzEKICAgIHg6IDg3OEYyMkNDNkRCNjA0OEQyQjc2NzI2OEYyMkZGQUQ4RTU2QUI4RTJEQzYxNUY3QkQ4OUYxRTM1MDUwMEREOEQKICAgIHk6IDcxNEE1RDdCQjkwMUM5QzU4NTM0MDBEMTIzNDFBODkyRUY0NUQ4N0ZDNTUzNzg2NzU2QzRGMEM5MzkxRDc2M0UKICAtCiAgICBrOiAxNzY2ODQ1MzkyOTQ1NzEwMTUxNTAxODg5MTA1NzI5MDQ5ODgyOTk3NjYwMDA0ODI0ODQ4OTE1OTU1NDE5NjYwMzY2NjM2MDMxCiAgICB4OiA2NTlBMzc5NjI1QUIxMjJGMjUxMkI4REFEQTAyQzYzNDhENTNCNTQ0NTJERkY2N0FDN0FDRTRFODg1NjI5NUNBCiAgICB5OiA0OUQ4MUFCOTdCNjQ4NDY0RDBCNEEyODhCRDc4MThGQUI0MUExNjQyNkU5NDM1MjdDNEZFRDg3MzZDNTNEMEY2CiAgLQogICAgazogMjg5NDgwMjU3NjAzMDc1MzQ1MTc3MzQ3OTE2ODc4OTQ3NzU4MDQ0NjYwNzI2MTUyNDI5NjM0NDMwOTc2NjEzNTU2MDY4NjIyMDEwODcKICAgIHg6IENCQ0VBQUE4QTRERDQ0QkJDRTU4RThEQjc3NDBBNTUxMEVDMkNCN0VBOERBOEQ4RjAzNkIzRkIwNENEQTRERTQKICAgIHk6IDRCRDdBQTMwMUE4MEQ3RjU5RkQ5ODNGRURCRTU5QkI3QjI4NjNGRTQ2NDk0OTM1RTM3NDVCMzYwRTMyMzMyRkEKICAtCiAgICBrOiAxMTMwNzgyMTA0NjA4NzA1NDg5NDQ4MTE2OTU5NjAyOTA2NDQ5NzMyMjkyMjQ2MjU4Mzg0MzY0MjQ0NzcwOTU4MzQ2NDU2OTYzODQKICAgIHg6IEYwQzRBMDU3NjE1NEZGM0EzM0EzNDYwRDQyRUFFRDgwNkU4NTRERkEzNzEyNTIyMUQzNzkzNTEyNEJBNDYyQTQKICAgIHk6IDVCMzkyRkE5NjQ0MzREMjlFRUM2QzlEQkMyNjFDRjExNjc5Njg2NEFBMkZBQURCOTg0QTJERjM4RDFBRUY3QTMKICAtCiAgICBrOiAxMjA3ODA1NjEwNjg4MzQ4ODE2MTI0Mjk4MzI4NjA1MTM0MTEyNTA4NTc2MTQ3MDY3NzkwNjcyMTkxNzQ3OTI2ODkwOTA1NgogICAgeDogNUU2Qzg1MjRCNjM2OTUzMEIxMkM2MkQzMUVDNTNFMDI4ODE3M0JENjYyQkRGNjgwQjUzQTQxRUNCQ0FEMDBDQwogICAgeTogNDQ3RkU3NDJDMkJGRUY0RDBEQjE0QjVCODNBMjY4MjMwOUI1NjE4RTAwNjRBOTQ4MDRFOTI4MjE3OUZFMDg5RgogIC0KICAgIGs6IDU3NzgyOTY5ODU3Mzg1NDQ4MDgyMzE5OTU3ODYwMzI4NjUyOTk4NTQwNzYwOTk4MjkzOTc2MDgzNzE4ODA0NDUwNzA4NTAzOTIwNjM5CiAgICB4OiAwMzc5MkU1NDFCQzIwOTA3NkEzRDc5MjBBOTE1MDIxRUNEMzk2QTZFQjVDMzk2MDAyNEJFNTU3NUYzMjIzNDg0CiAgICB5OiBGQzc3NEFFMDkyNDAzMTAxNTYzQjcxMkY2ODE3MDMxMjMwNEYyMEM4MEI0MEMwNjI4MjA2M0RCMjVGMjY4REU0CiAgLQogICAgazogNTc4OTYwMTcxMTk0NjAwNDY3NTk1ODM2NjI3NTcwOTAxMDAzNDE0MzU5NDM3Njc3Nzc3MDc5MDY0NTU1NTExNjMyNTc3NTU1MzMzMTIKICAgIHg6IDIzNzlGRjg1QUI2OTNDREY5MDFENkNFNkYyNDczRjM5QzA0QTJGRTNEQ0Q4NDJDRTdBQUIwRTAwMjA5NUJDRjgKICAgIHk6IEY4QjQ3NjUzMEE2MzQ1ODlENTEyOUU0NkYzMjJCMDJGQkM2MTBBNzAzRDgwODc1RUU3MEQ3Q0UxODc3NDM2QTEKICAtCiAgICBrOiA0NTIzMTI4NDgzNzQyODcyODQ2ODEyODIxNzEwMTc2NDc0MTI3MjY0MzM2ODQyMzg0NjQyMTI5OTkzMDU4NjQ4MzcxNjA5OTMyNzkKICAgIHg6IEMxRTQwNzJDNTI5QkYyRjQ0REE3NjlFRkM5MzQ0NzI4NDgwMDNCM0FGMkMwRjVBQThGOEREQkQ1M0UxMkVEN0MKICAgIHk6IDM5QTZFRTc3ODEyQkIzN0U4MDc5Q0QwMUVENjQ5RDM4MzBGQ0E0NkY3MThDMUQzOTkzRTRBNTkxODI0QUJDREIKICAtCiAgICBrOiA5MDQ1NzEzMzkxNzQwNjUxMzQyOTM2MzQ0MDc5NDYwNTQwMDA3NzQ3NDYwNTU4NjY5MTc3Mjk4NzY2NzYzNjc1NTg0Njk3NDY2ODQKICAgIHg6IDM0REZCQzA5NDA0QzIxRTI1MEE5QjQwRkE4NzcyODk3QUM2M0EwOTQ4NzdEQjY1ODYyQjYxQkQxNTA3QjM0RjMKICAgIHk6IENGNkY4QTg3NkM2Rjk5Q0VBRUM4NzE0OEYxOEM3RTFFMERBNkUxNjVGRkM4RUQ4MkFCQjY1OTU1MjE1Rjc3RDMKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNDkKICAgIHg6IDgzQTAxQTkzNzgzOTVCQUI5QkNENkEwQUQwM0NDNTZENTZFNkIxOTI1MDQ2NUE5NEEyMzREQzRDNkIyOERBOUEKICAgIHk6IDg5MUI2NDkxMUQwOENEQ0M1MTk1QTE0NjI5RUQ0OEEzNjBEREZENDU5NkRDMEFCMDA3REJGNTU1NzkwOUJGNDcKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTAKICAgIHg6IENCNkQyODYxMTAyQzBDMjVDRTM5QjdDMTcxMDhDNTA3NzgyQzQ1MjI1Nzg4NDg5NUMxRkM3Qjc0QUIwM0VEODMKICAgIHk6IEE3Mjg5RUIzREIyNjEwQUZBM0NBMThFRkYyOTI5MzFCNUI2OThFOTJDRjA1QzFGQzFDNkVBRjhBRDQzMTMyNTUKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTEKICAgIHg6IDEwNTdFMEFCNTc4MEY0NzBERUZDOTM3OEQxQzdDODc0MzdCQjRDNkY5RUE1NUM2M0Q5MzYyNjZEQkQ3ODFGREEKICAgIHk6IDA5MEU5QkE0RUEzNDFBMjQ2MDU2NDgyMDI2OTExQTU4MjMzRUU0QTRBMTBCMEUwODcyN0M0Q0M2QzM5NUJBNUQKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTIKICAgIHg6IDQ3Nzc2OTA0QzBGMUNDM0E5QzA5ODRCNjZGNzUzMDFBNUZBNjg2NzhGMEQ2NEFGOEJBMUFCQ0UzNDczOEE3M0UKICAgIHk6IDU1RkZBMTE4NEE0NkE4RDg5RENFN0E5QTg4OUI3MTdDN0U0RDdGQkNENzJBOENDMENEMDg3ODAwOEUwRTAzMjMKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTMKICAgIHg6IDc2QTk0RDEzOEE2QjQxODU4QjgyMUM2Mjk4MzYzMTVGQ0QyODM5MkVGRjZDQTAzOEE1RUI0Nzg3RTEyNzdDNkUKICAgIHk6IDU2N0EwMTlEQ0JFMEQ5RjI5MzRGNUU0QTFFRTE3OERGN0E2NjVGRkNGMDM4NzQ1NUYxNjIyMjhEQjQ3M0FFRUYKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTQKICAgIHg6IEYwNDU0REM2OTcxQUJBRTdBREZCMzc4OTk5ODg4MjY1QUUwM0FGOTJERTNBMEVGMTYzNjY4QzYzRTU5QjlENUYKICAgIHk6IDRBNDZDMTFCQTZEMUQyRTFCMTlBNkIxQUUwNjlCQzE5RDVDNERFMzI4QTRBMDVDMEI4MUE2MzIxRjJGQ0IwQzkKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTUKICAgIHg6IDU0RTc3QTAwMUMzODYyQjk3QTc2NjQ3RjQzMzZERjNDRjEyNkFDQkU3QTA2OUM1RTU3MDkyNzczMjREMjkyMEIKICAgIHk6IDBBNjYwRTQzRDYwQkNFOEJCREVERTA3M0ZBNUQxODNDOEU4RTE1ODk4Q0FGNkZGN0U0NTgzN0QwOUYyRjRDOEEKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTYKICAgIHg6IDE3N0M4MzdBRTBBQzQ5NUE2MTgwNURGMkQ4NUVFMkZDNzkyRTI4NEI2NUVBRDU4QTk4RTE1RDlENDYwNzJDMDEKICAgIHk6IDlDNDRBNzMxQjE0MTVBQTg1REJGNkU1MjRCRjBCMThERDkxMUVCM0Q1RTA0QjIwQzYzQkM0NDFEMTAzODQwMjcKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTcKICAgIHg6IDc0MURENUJEQTgxN0Q5NUU0NjI2NTM3MzIwRTVENTUxNzk5ODMwMjhCMkY4MkM5OUQ1MDBDNUVFODYyNEUzQzQKICAgIHk6IEY4OEY0Qjk0NjNDN0EwMjRBOThDN0NBQUI3Nzg0RUFCNzExNDZFRDRDQTQ1QTM1OEU2NkEwMEREMzJCQjdFMkMKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTgKICAgIHg6IDNFRDExM0I3ODgzQjRDNTkwNjM4Mzc5REIwQzIxQ0RBMTY3NDJFRDAyNTUwNDhCRjQzMzM5MUQzNzRCQzIxRDEKICAgIHk6IDZGNjZERjY0MzMzQjM3NUVEQjM3QkM1MDVCMEIzOTc1RjZGMkZCMjZBMTY3NzYyNTFEMDcxMTAzMTdENUM4QkYKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNTkKICAgIHg6IENFRjY2RDZCMkEzQTk5M0U1OTEyMTREMUVBMjIzRkI1NDVDQTZDNDcxQzQ4MzA2RTRDMzYwNjk0MDRDNTcyM0YKICAgIHk6IDc4Nzk5RDVDRDY1NTUxNzA5MUVEQzMyMjYyQzRCM0VGQTZGMjEyRDcwMThBRTExMTM1Q0I0NDU1QkI1MEY4OEMKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjAKICAgIHg6IEVBNjhEN0I2RkVERjBCNzE4Nzg5MzhENTFENzFGODcyOUUwQUNCOEMyQzZERjhCM0Q3OUU4QTRCOTA5NDlFRTAKICAgIHk6IEQ1RDhCQjM1OEQzNjAzMTk3OEZFQjU2OUI1NzE1RjM3QjI4RUIwMTY1QjIxN0RDMDE3QTVEREI1QjIyRkI3MDUKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjEKICAgIHg6IDYyRDk3NzlEQkVFOUIwNTM0MDQyNzQyRDNBQjU0Q0FEQzFEMjM4OTgwRkNFOTdEQkI0REQ5REMxREI2RkIzOTMKICAgIHk6IDUyQTUzMzQxNkUxNjI3RENCMDBFQTI4OEVFOTgzMTFGNUQxMkFFMEE0NDE4OTU4NzI1QUJGNTk1RjBGNjZBODEKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjIKICAgIHg6IDhFNTMzQjZGQTBCRjdCNDYyNUJCMzA2NjdDMDFGQjYwN0VGOUY4QjhBODBGRUY1QjMwMDYyODcwMzE4N0IyQTMKICAgIHk6IDhDMTRFMjQxMUZDQ0U3Q0E5MkY5NjA3QzU5MEE2RkZGQUMzOEM5Q0QzNEZCRTRERTNBQTFFNTc5M0UwQkZGNEIKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjMKICAgIHg6IEIwMUExNzJBNzZBNDYwMkM5MkQzMjQyQ0I4OTdEREUzMDI0Qzc0MERFQkIyMTVCNEM2QjBBQUU5M0MyMjkxQTkKICAgIHk6IDE3QTNFRjhBQ0RDODI1MkI5MDEzRjFEMjA0NThGQzg2RTNGRjA4OTBFMzgxRTk0MjAyODNCN0FDNzAzODgwMUQKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjQKICAgIHg6IDUxNTkwQjdBNTE1MTQwRDJENzg0Qzg1NjA4NjY4RkRGRUY4QzgyRkQxRjVCRTUyNDIxNTU0QTBEQzNEMDMzRUQKICAgIHk6IDFGM0U4MjU2NkZCNThEODM3NTFFNDBDOTQwNzU4NkQ5RjJGRUQxMDAyQjI3Rjc3NzJFMkY0NEJCMDI1RTkyNUIKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjUKICAgIHg6IEUyNTM0QTM1MzJEMDhGQkJBMDJEREU2NTlFRTYyQkQwMDMxRkUyREI3ODU1OTZFRjUwOTMwMjQ0NkIwMzA4NTIKICAgIHk6IDFGMEVBOEE0QjM5Q0MzMzlFNjIwMTFBMDI1NzlEMjg5QjEwMzY5M0QwQ0YxMUZGQUEzQkQzREMwRTdCMTI3MzkKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjYKICAgIHg6IDVFQ0JFNEQxQTYzMzBBNDRDOEY3RUY5NTFENEJGMTY1RTZDNkI3MjFFRkFEQTk4NUZCNDE2NjFCQzZFN0ZENkMKICAgIHk6IDc4Q0I5QkYyQjY2NzAwODJDOEI0RjkzMUU1OUI1RDEzMjdENTRGQ0FDN0IwNDdDMjY1ODY0RUQ4NUQ4MkFGQ0QKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjcKICAgIHg6IDdDRjI3QjE4OEQwMzRGN0U4QTUyMzgwMzA0QjUxQUMzQzA4OTY5RTI3N0YyMUIzNUE2MEI0OEZDNDc2Njk5NzgKICAgIHk6IEY4ODhBQUVFMjQ3MTJGQzBENkMyNjUzOTYwOEJDRjI0NDU4MjUyMUFDMzE2N0RENjYxRkI0ODYyREQ4NzhDMkUKICAtCiAgICBrOiAxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjgKICAgIHg6IDZCMTdEMUYyRTEyQzQyNDdGOEJDRTZFNTYzQTQ0MEYyNzcwMzdEODEyREVCMzNBMEY0QTEzOTQ1RDg5OEMyOTYKICAgIHk6IEIwMUNCRDFDMDFFNTgwNjU3MTE4MTRCNTgzRjA2MUU5RDQzMUNDQTk5NENFQTEzMTM0NDlCRjk3Qzg0MEFFMEEKCiMgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5NzkjYXBwZW5kaXgtQS4yLjUKaG1hYzoKICAtCiAgICBhbGdvOiBzaGExCiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiA4ODI5MDVGMTIyN0ZENjIwRkJGMkFCRjIxMjQ0RjBCQTgzRDBEQzNBOTEwM0RCQkVFNDNBMUZCODU4MTA5REI0CiAgICByOiA2MTM0MEM4OEMzQUFFQkVCNEY2RDY2N0Y2NzJDQTk3NTlBNkNDQUE5RkE4ODExMzEzMDM5RUU0QTM1NDcxRDMyCiAgICBzOiA2RDdGMTQ3REFDMDg5NDQxQkIyRTJGRThGN0EzRkEyNjRCOUM0NzUwOThGRENGNkUwMEQ3Qzk5NkUxQjhCN0VCCiAgLQogICAgYWxnbzogc2hhMjI0CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiAxMDNGOTBFRTlEQzUyRTVFN0ZCNTEzMkI3MDMzQzYzMDY2RDE5NDMyMTQ5MTg2MjA1OTk2N0M3MTU5ODVENDczCiAgICByOiA1M0IyRkZGNUQxNzUyQjJDNjg5REYyNTdDMDRDNDBBNTg3RkFCQUJCM0Y2RkMyNzAyRjEzNDNBRjdDQTlBQTNGCiAgICBzOiBCOUFGQjY0RkRDMDNEQzFBMTMxQzdEMjM4NkQxMUUzNDlGMDcwQUE0MzJBNEFDQzkxOEJFQTk4OEJGNzVDNzRDCiAgLQogICAgYWxnbzogc2hhMjU2CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiBBNkUzQzU3REQwMUFCRTkwMDg2NTM4Mzk4MzU1REQ0QzNCMTdBQTg3MzM4MkIwRjI0RDYxMjk0OTNEOEFBRDYwCiAgICByOiBFRkQ0OEIyQUFDQjZBOEZEMTE0MEREOUNENDVFODFENjlEMkM4NzdCNTZBQUY5OTFDMzREMEVBODRFQUYzNzE2CiAgICBzOiBGN0NCMUM5NDJENjU3QzQxRDQzNkM3QTFCNkUyOUY2NUYzRTkwMERCQjlBRkY0MDY0REM0QUIyRjg0M0FDREE4CiAgLQogICAgYWxnbzogc2hhMzg0CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiAwOUY2MzRCMTg4Q0VGRDk4RTdFQzg4QjFBQTk4NTJENzM0RDBCQzI3MkY3RDJBNDdERUNDNkVCRUIzNzVBQUQ0CiAgICByOiAwRUFGRUEwMzlCMjBFOUI0MjMwOUZCMUQ4OUUyMTMwNTdDQkY5NzNEQzBDRkM4RjEyOUVERERDODAwRUY3NzE5CiAgICBzOiA0ODYxRjA0OTFFNjk5OEI5NDU1MTkzRTM0RTdCMEQyODREREQ3MTQ5QTc0Qjk1QjkyNjFGMTNBQkRFOTQwOTU0CiAgLQogICAgYWxnbzogc2hhNTEyCiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiA1RkE4MUM2MzEwOUJBREI4OEMxRjM2N0I0N0RBNjA2REEyOENBRDY5QUEyMkM0RkU2QUQ3REY3M0E3MTczQUE1CiAgICByOiA4NDk2QTYwQjVFOUI0N0M4MjU0ODg4MjdFMDQ5NUIwRTNGQTEwOUVDNDU2OEZEM0Y4RDEwOTc2NzhFQjk3RjAwCiAgICBzOiAyMzYyQUIxQURCRTJCOEFERjlDQjlFREFCNzQwRUE2MDQ5QzAyODExNEYyNDYwRjk2NTU0RjYxRkFFMzMwMkZFCiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDhDOTUyMDI2N0M1NUQ2Qjk4MERGNzQxRTU2QjRBREVFMTE0RDg0RkJGQTJFNjIxMzc5NTQxNjQwMjg2MzJBMkUKICAgIHI6IDBDQkNDODZGRDZBQkQxRDk5RTcwM0UxRUM1MDA2OUVFNUMwQjRCQTRCOUFDNjBFNDA5RThFQzU5MTBEODFBODkKICAgIHM6IDAxQjlEN0I3M0RGQUE2MEQ1NjUxRUM0NTkxQTAxMzZGODc2NTNFMEZENzgwQzNCMUJDODcyRkZERUFFNDc5QjEKICAtCiAgICBhbGdvOiBzaGEyMjQKICAgIG1lc3NhZ2U6IHRlc3QKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiA2NjlGNDQyNkYyNjg4QjhCRTBEQjNBNkJEMTk4OUJEQUVGRkY4NEI2NDlFRUI4NEYzREQyNjA4MEY2NjdGQUE3CiAgICByOiBDMzdFREI2RjBBRTc5RDQ3QzNDMjdFOTYyRkEyNjlCQjRGNDQxNzcwMzU3RTExNEVFNTExRjY2MkVDMzRBNjkyCiAgICBzOiBDODIwMDUzQTA1NzkxRTUyMUZDQUFENjA0MkQ0MEFFQTFENkIxQTU0MDEzODU1OEY0N0QwNzE5ODAwRTE4RjJECiAgLQogICAgYWxnbzogc2hhMjU2CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAyNTYKICAgIGtleTogQzlBRkE5RDg0NUJBNzUxNjZCNUMyMTU3NjdCMUQ2OTM0RTUwQzNEQjM2RTg5QjEyN0I4QTYyMkIxMjBGNjcyMQogICAgazogRDE2QjZBRTgyN0YxNzE3NUUwNDA4NzFBMUM3RUMzNTAwMTkyQzRDOTI2NzczMzZFQzI1MzdBQ0FFRTAwMDhFMAogICAgcjogRjFBQkIwMjM1MTgzNTFDRDcxRDg4MTU2N0IxRUE2NjNFRDNFRkNGNkM1MTMyQjM1NEYyOEQzQjBCN0QzODM2NwogICAgczogMDE5RjQxMTM3NDJBMkIxNEJEMjU5MjZCNDlDNjQ5MTU1RjI2N0U2MEQzODE0QjRDMENDODQyNTBFNDZGMDA4MwogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDE2QUVGRkEzNTcyNjBCMDRCMUREMTk5NjkzOTYwNzQwMDY2QzFBOEYzRThFREQ3OTA3MEFBOTE0RDM2MUIzQjgKICAgIHI6IDgzOTEwRThCNDhCQjBDNzQyNDRFQkRGN0YwN0ExQzU0MTNENjE0NzJCRDk0MUVGMzkyMEU2MjNGQkNDRUJFQjYKICAgIHM6IDhEREJFQzU0Q0Y4Q0Q1ODc0ODgzODQxRDcxMjE0MkE1NkE4RDBGMjE4RjUwMDNDQjAyOTZCNkI1MDk2MTlGMkMKICAtCiAgICBhbGdvOiBzaGE1MTIKICAgIG1lc3NhZ2U6IHRlc3QKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiA2OTE1RDExNjMyQUNBM0M0MEQ1RDUxQzA4REFGOUM1NTU5MzM4MTk1NDg3ODQ0ODBFOTM0OTkwMDBEOUYwQjdGCiAgICByOiA0NjFEOTNGMzFCNjU0MDg5NDc4OEZEMjA2QzA3Q0ZBMENDMzVGNDZGQTNDOTE4MTZGRkYxMDQwQUQxNTgxQTA0CiAgICBzOiAzOUFGOUYxNURFMERCOEQ5N0U3MjcxOUM3NDgyMEQzMDRDRTUyMjZFMzJERURBRTY3NTE5RTg0MEQxMTk0RTU1]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/nist-p384.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBodHRwOi8vcG9pbnQtYXQtaW5maW5pdHkub3JnL2VjYy9uaXN0dHYKbmFtZTogbmlzdHAzODQKZGlmZmllOgogIC0KICAgIGFsaWNlOiAzMjM5MTIyNTkyNTE1MjA3NzMwNzEzMDQzMTI3MjUyMTI1Mzk1NTM3MjE4MzUwOTQyMDkwNDMzMjc5MTA4OTgxMzYwMTgxMzU5NjIyODY1MzIxMzk0NzE1MjY3OTk2MTAyNjA5Mjk1Nzk2NDEwOTU3NTkyMQogICAgYm9iOiAxMjc0Njg5NTk5ODAzNjMwNzk2NjQxNDc0MDIwNjgyMTQxOTE0MDg0MTIxMTczNDY2MTAyODI2MTc3NjE5ODM1NjcyOTIwMTU5NjQ2MjgyMDU2NDAxOTEyMTc0MjU3MDYyMjYzNzc1MTAzMTI0NjQ2MDExNAogICAgc2hhcmVkOiA1RUExRkM0QUY3MjU2RDIwNTU5ODFCMTEwNTc1RTBBOENBRTUzMTYwMTM3RDkwNEM1OUQ5MjZFQjFCODQ1NkU0MjdBQThBNDU0MDg4NEMzN0RFMTU5QTU4MDI4QUJDMEUKICAgICMgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzUxMTQuaHRtbAprZXlwYWlyczoKICAtCiAgICBrOiAxCiAgICB4OiBBQTg3Q0EyMkJFOEIwNTM3OEVCMUM3MUVGMzIwQUQ3NDZFMUQzQjYyOEJBNzlCOTg1OUY3NDFFMDgyNTQyQTM4NTUwMkYyNURCRjU1Mjk2QzNBNTQ1RTM4NzI3NjBBQjcKICAgIHk6IDM2MTdERTRBOTYyNjJDNkY1RDlFOThCRjkyOTJEQzI5RjhGNDFEQkQyODlBMTQ3Q0U5REEzMTEzQjVGMEI4QzAwQTYwQjFDRTFEN0U4MTlEN0E0MzFEN0M5MEVBMEU1RgogIC0KICAgIGs6IDIKICAgIHg6IDA4RDk5OTA1N0JBM0QyRDk2OTI2MDA0NUM1NUI5N0YwODkwMjU5NTlBNkY0MzRENjUxRDIwN0QxOUZCOTZFOUU0RkUwRTg2RUJFMEU2NEY4NUI5NkE5Qzc1Mjk1REY2MQogICAgeTogOEU4MEYxRkE1QjFCM0NFREI3QkZFOERGRkQ2REJBNzRCMjc1RDg3NUJDNkNDNDNFOTA0RTUwNUYyNTZBQjQyNTVGRkQ0M0U5NEQzOUUyMkQ2MTUwMUU3MDBBOTQwRTgwCiAgLQogICAgazogMwogICAgeDogMDc3QTQxRDQ2MDZGRkExNDY0NzkzQzdFNUZEQzdEOThDQjlEMzkxMDIwMkRDRDA2QkVBNEYyNDBEMzU2NkRBNkI0MDhCQkFFNTAyNjU4MEQwMkQ3RTVDNzA1MDBDODMxCiAgICB5OiBDOTk1RjdDQTBCMEM0MjgzN0QwQkJFOTYwMkE5RkM5OTg1MjBCNDFDODUxMTVBQTVGNzY4NEMwRURDMTExRUFDQzI0QUJENkJFNEI1RDI5OEI2NUYyODYwMEEyRjFERjEKICAtCiAgICBrOiA0CiAgICB4OiAxMzgyNTFDRDUyQUM5Mjk4QzFDOEFBRDk3NzMyMURFQjk3RTcwOUJEMEI0Q0EwQUNBNTVEQzhBRDUxRENGQzlEMTU4OUExNTk3RTNBNTEyMEUxRUZENjMxQzYzRTE4MzUKICAgIHk6IENBQ0FFMjk4NjlBNjJFMTYzMUU4QTI4MTgxQUI1NjYxNkRDNDVEOTE4QUJDMDlGM0FCMEU2M0NGNzkyQUE0RENFRDczODdCRTM3QkJBNTY5NTQ5RjFDMDJCMjcwRUQ2NwogIC0KICAgIGs6IDUKICAgIHg6IDExREUyNEEyQzI1MUM3Nzc1NzNDQUM1RUEwMjVFNDY3RjIwOEU1MURCRkY5OEZDNTRGNjY2MUNCRTU2NTgzQjAzNzg4MkY0QTFDQTI5N0U2MEFCQ0RCQzM4MzZEODRCQwogICAgeTogOEZBNjk2Qzc3NDQwRjkyRDBGNTgzN0U5MEEwMEU3QzUyODRCNDQ3NzU0RDVERUU4OEM5ODY1MzNCNjkwMUFFQjMxNzc2ODZEMEFFOEZCMzMxODQ0MTRBQkU2QzE3MTNBCiAgLQogICAgazogNgogICAgeDogNjI3QkUxQUNEMDY0RDJCMjIyNkZFMEQyNkYyRDE1RDNDMzNFQkNCQjdGMEY1REE1MUNCRDQxRjI2MjU3MzgzMDIxMzE3RDcyMDJGRjMwRTUwOTM3RjA4NTRFMzVDNURGCiAgICB5OiAwOTc2NkE0Q0IzRjhCMUMyMUJFNkREQTZDMTRGMTU3NUIyQzk1MzUyNjQ0Rjc3NEM5OTg2NEY2MTM3MTU0NDE2MDRDNDVCOEQ4NEUxNjUzMTE3MzNBNDA4RDNGMEY5MzQKICAtCiAgICBrOiA3CiAgICB4OiAyODNDMUQ3MzY1Q0U0Nzg4RjI5RjhFQkYyMzRFREZGRUFENkZFOTk3RkJFQTVGRkEyRDU4Q0M5REZBN0IxQzUwOEIwNTUyNkY1NUI5RUJCMjA0MEYwNUI0OEZCNkQwRTEKICAgIHk6IDk0NzVDOTkwNjFFNDFCODhCQTUyRUZEQjhDMTY5MDQ3MUE2MUQ4NjdFRDc5OTcyOUQ5QzkyQ0QwMURCRDIyNTYzMEQ4NEVERTMyQTc4RjlFNjQ2NjRDREFDNTEyRUY4QwogIC0KICAgIGs6IDgKICAgIHg6IDE2OTI3NzhFQTU5NkUwQkU3NTExNDI5N0E2RkEzODM0NDVCRjIyN0ZCRTU4MTkwQTkwMEMzQzczMjU2RjExRkI1QTMyNThENkY0MDNENUVDRTZFOUIyNjlEODIyQzg3RAogICAgeTogRENEMjM2NTcwMEQ0MTA2QTgzNTM4OEJBM0RCOEZEMEUyMjU1NEFEQzZENTIxQ0Q0QkQxQzMwQzJFQzBFRUMxOTZCQURFMUU5Q0REMTcwOEQ2RjZBQkZBNDAyMkIwQUQyCiAgLQogICAgazogOQogICAgeDogOEYwQTM5QTQwNDlCQ0IzRUYxQkYyOUI4QjAyNUI3OEYyMjE2RjcyOTFFNkZEM0JBQzZDQjFFRTI4NUZCNkUyMUMzODg1MjhCRkVFMkI5NTM1QzU1RTQ0NjEwNzkxMThCCiAgICB5OiA2MkM3N0UxNDM4QjYwMUQ2NDUyQzRBNTMyMkMzQTk3OTlBOUIzRDdDQTNDNDAwQzZCNzY3ODg1NEFFRDlCMzAyOUU3NDNFRkVERkQ1MUI2ODI2MkRBNEY5QUM2NjRBRjgKICAtCiAgICBrOiAxMAogICAgeDogQTY2OUM1NTYzQkQ2N0VFQzY3OEQyOUQ2RUY0RkRFODY0RjM3MkQ5MEI3OUI5RTg4OTMxRDVDMjkyOTEyMzhDQ0VEOEU4NUFCNTA3QkY5MUFBOUNCMkQxMzE4NjY1OEZCCiAgICB5OiBBOTg4QjcyQUU3QzEyNzlGMjJEOTA4M0RCNUYwRUNEREY3MDExOTU1MEMxODNDMzFDNTAyREY3OEMzQjcwNUE4Mjk2RDgxOTUyNDgyODhEOTk3Nzg0RjZBQjczQTIxREQKICAtCiAgICBrOiAxMQogICAgeDogMDk5MDU2RTI3REE3Qjk5OERBMUVFRUMyOTA0ODE2QzU3RkU5MzVFRDU4MzdDMzc0NTZDOUZEMTQ4OTJEM0Y4QzQ3NDlCNjZFM0FGQjgxRDYyNjM1NkYzQjU1QjREREQ4CiAgICB5OiAyRTRDMEMyMzRFMzBBQjk2Njg4NTA1NTQ0QUM1RTAzOTZGQzRFRUQ4REZDMzYzRkQ0M0ZGOTNGNDFCNTJBMzI1NTQ2NkQ1MTI2M0FBRkYzNTdENURCQTgxMzhDNUUwQkIKICAtCiAgICBrOiAxMgogICAgeDogOTUyQTdBMzQ5QkQ0OTI4OUFCM0FDNDIxRENGNjgzRDA4QzJFRDVFNDFGNkQwRTIxNjQ4QUYyNjkxQTQ4MTQwNkRBNEE1RTIyREE4MTdDQjQ2NkRBMkVBNzdEMkE3MDIyCiAgICB5OiBBMDMyMEZBRjg0QjVCQzA1NjMwNTJERUFFNkY2NkYyRTA5RkI4MDM2Q0UxOEEwRUJCOTAyOEIwOTYxOTZCNTBEMDMxQUE2NDU4OTc0M0UyMjlFRjZCQUNDRTIxQkQxNkUKICAtCiAgICBrOiAxMwogICAgeDogQTU2N0JBOTdCNjdBRUE1QkFGREFGNTAwMkZGQ0M2QUI5NjMyQkZGOUYwMUY4NzNGNjI2N0JDRDFGMEYxMUMxMzlFRTVGNDQxQUJEOTlGMUJBQUYxQ0ExRTNCNUNCQ0U3CiAgICB5OiBERTFCMzhCMzk4OUYzMzE4NjQ0RTQxNDdBRjE2NEVDQzUxODU1OTUwNDY5MzJFQzA4NjMyOUJFMDU3ODU3RDY2Nzc2QkNCODI3MjIxOEE3RDY0MjNBMTI3MzZGNDI5Q0MKICAtCiAgICBrOiAxNAogICAgeDogRThDOEY5NEQ0NEZCQzIzOTZCQkVBQzQ4MUI4OUQyQjA4NzdCMURGRkQyM0U3REM5NURFNTQxRUI2NTFDQ0EyQzQxQUJBMjREQkMwMkRFNjYzNzIwOUFDQ0YwRjU5RUEwCiAgICB5OiA4OTFBRTQ0MzU2RkM4QUUwOTMyQkNCRjZERTUyQzhBOTMzQjg2MTkxRTc3MjhENzlDODMxOTQxM0EwOUQwRjQ4RkM0NjhCQTA1NTA5REUyMkQ3RUU1QzlFMUI2N0I4ODgKICAtCiAgICBrOiAxNQogICAgeDogQjNEMTNGQzhCMzJCMDEwNThDQzE1QzExRDgxMzUyNTUyMkE5NDE1NkZGRjAxQzIwNUIyMUY5RjdEQTdDNEU5Q0E4NDk1NTdBMTBCNjM4M0I0Qjg4NzAxQTk2MDY4NjBCCiAgICB5OiAxNTI5MTlFN0RGOTE2MkE2MUIwNDlCMjUzNjE2NEIxQkVFQkFDNEExMUQ3NDlBRjQ4NEQxMTE0MzczREZCRkQ5ODM4RDI0RjhCMjg0QUY1MDk4NUQ1ODhEMzNGN0JENjIKICAtCiAgICBrOiAxNgogICAgeDogRDVEODlDM0I1MjgyMzY5QzVGQkQ4OEUyQjIzMTUxMUE2QjgwREZGMEU1MTUyQ0Y2QTQ2NEZBOTQyOEE4NTgzQkFDOEVCQzc3M0QxNTc4MTFBNDYyQjg5MjQwMURBRkNGCiAgICB5OiBEODE1MjI5REUxMjkwNkQyNDE4MTZENUU5QTk0NDhGMUQ0MUQ0RkM0MEUyQTNCREI5Q0FCQTU3RTQ0MEE3QUJBRDEyMTBDQjhGNDlCRjIyMzY4MjJCNzU1RUJBQjM2NzMKICAtCiAgICBrOiAxNwogICAgeDogNDA5OTk1MjIwOEI0ODg5NjAwQTVFQkJDQjEzRTFBMzI2OTJCRUZCMDczM0I0MUU2RENDNjE0RTQyRTU4MDVGODE3MDEyQTk5MUFGMUY0ODZDQUYzQTlBREQ5RkZDQzAzCiAgICB5OiA1RUNGOTQ3Nzc4MzMwNTk4Mzk0NzQ1OTRBRjYwMzU5ODE2M0FEM0Y4MDA4QUQwQ0Q5Qjc5N0QyNzdGMjM4OEIzMDREQTREMkZBQTk2ODBFQ0ZBNjUwRUY1RTIzQjA5QTAKICAtCiAgICBrOiAxOAogICAgeDogREZCMUZFM0E0MEY3QUM5QjY0QzQxRDM5MzYwQTc0MjM4MjhCOTdDQjA4OEE0OTAzMzE1RTQwMkE3MDg5RkEwRjhCNkMyMzU1MTY5Q0M5Qzk5REZCNDQ2OTJBOUI5M0RECiAgICB5OiA0NTNBQ0ExMjQzQjVFQzZCNDIzQTY4QTI1NTg3RTE2MTNBNjM0QzFDNDJEMkVFN0U2QzU3RjQ0OUExQzkxREM4OTE2OEI3MDM2RUMwQTdGMzdBMzY2MTg1MjMzRUM1MjIKICAtCiAgICBrOiAxOQogICAgeDogOEQ0ODFEQUI5MTJCQzhBQjE2ODU4QTIxMUQ3NTBCNzdFMDdEQkVDQ0E4NkNEOUIwMTIzOTBCNDMwNDY3QUFCRjU5Qzg2NTEwNjA4MDFDMEU5NTk5RTY4NzEzRjVENDFCCiAgICB5OiBBMTU5MkZGMDEyMTQ2MDg1N0JFOTlGMkE2MDY2OTA1MEIyMjkxQjY4QTEwMzlBQTA1OTRCMzJGRDdBREMwRThDMTFGRkJBNTYwODAwNEU2NDY5OTVCMDdFNzVFNTIyNDUKICAtCiAgICBrOiAyMAogICAgeDogNjA1NTA4RUMwMkM1MzRCQ0VFRTk0ODRDODYwODZEMjEzOTg0OUUyQjExQzFBOUNBMUUyODA4REVDMkVBRjE2MUFDOEExMDVENzBENEY4NUM1MDU5OUJFNTgwMEE2MjNGCiAgICB5OiA1MTU4RUU4Nzk2MkFDNkI4MUYwMEExMDNCODU0M0EwNzM4MUI3NjM5QTNBNjVGMTM1M0FFRjExQjczMzEwNkRERTkyRTk5Qjc4REUzNjdCNDhFMjM4QzM4REFEOEVFREQKICAtCiAgICBrOiAxMTIyMzM0NDU1NjY3Nzg4OTkKICAgIHg6IEE0OTlFRkU0ODgzOUJDM0FCQ0QxQzVDRURCREQ1MTkwNEY5NTE0REI0NEY0Njg2REI5MTg5ODNCMEM5REMzQUVFMDVBODhCNzI0MzNFOTUxNUY5MUEzMjlGNUY0RkE2MAogICAgeTogM0I3Q0EyOEVGMzFGODA5QzJGMUJBMjRBQUVEODQ3RDBGOEI0MDZBNEI4OTY4NTQyREUxMzlEQjU4MjhDQTQxMEU2MTVEMTE4MkUyNUI5MUIxMTMxRTIzMEI3MjdEMzZBCiAgLQogICAgazogMTEyMjMzNDQ1NTY2Nzc4ODk5MTEyMjMzNDQ1NTY2Nzc4ODk5CiAgICB4OiA5MEEwQjFDQUM2MDE2NzZCMDgzRjIxRTA3QkM3MDkwQTMzOTBGRTFCOUM3RjYxRDg0MkQyN0ZBMzE1RkIzOEQ4MzY2N0ExMUE3MTQzODc3M0U0ODNGMkExMTQ4MzZCMjQKICAgIHk6IDMxOTdEM0M2MTIzRjBENkNENjVENUYwREUxMDZGRUYzNjY1NkNCMTZEQzdDRDFBNjgxN0VCMUQ1MTUxMDEzNUE4RjQ5MkY3MjY2NUNGRDEwNTNGNzVFRDAzQTdEMDRDOQogIC0KICAgIGs6IDEwMTU4MTg0MTEyODY3NTQwODE5NzU0Nzc2NzU1ODE5NzYxNzU2NzI0NTIyOTQ4NTQwNDE5OTc5NjM3ODY4NDM1OTI0MDYxNDY0NzQ1ODU5NDAyNTczMTQ5NDk4MTI1ODA2MDk4ODgwMDAzMjQ4NjE5NTIwCiAgICB4OiBGMkEwNjZCRDMzMkRDNTlCQkMzRDAxREExQjEyNEM2ODdEOEJCNDQ2MTExODY0MjJERTk0QzFEQTRFQ0YxNTBFNjY0RDM1M0NDREI1Q0IyNjUyNjg1RjhFQjREMkNENDkKICAgIHk6IEQ2RUQwQkY3NUZERDhFNTNEODc3NjVGQTc0NjgzNUI2NzM4ODFENkQxOTA3MTYzQTJDNDM5OTBENzVCNDU0Mjk0Rjk0MkVDNTcxQUQ1QUFFMTgwNkNBRjJCQjhFOUE0QQogIC0KICAgIGs6IDk4NTA1MDE1NTExMDU5OTEwMjgyNDUwNTI2MDUwNTY5OTIxMzk4MTAwOTQ5MDg5MTI3OTkyNTQxMTU4NDc2ODM4ODEzNTc3NDk3Mzg3MjYwOTE3MzQ0MDM5NTA0MzkxNTcyMDk0MDExNTM2OTA1NjY2NTUKICAgIHg6IDVDN0Y5ODQ1RDFDNEFBNDQ3NDdGOTEzN0I2RjlDMzlCMzZCMjZCOEE2MkU4QUY5NzI5MDQzNEQ1RjNCMjE0RjVBMDEzMTU1MEFEQjE5MDU4REM0Qzg3ODBDNDE2NUM0QQogICAgeTogNzEyRjdGQ0NDODZGNjQ3RTcwREI4Nzk4MjI4Q0IxNjM0NEFGM0QwMEIxMzlCNkY4NTAyOTM5QzJBOTY1QUYwRUI0RTM5RTJFMTZBQjhGNTk3QjhENTYzMEE1MEM5RDg1CiAgLQogICAgazogOTg1MDUwMjcyMzQwNTc0NzA5NzMxNzI3MTE5NDc2MzMxMDQ4MjQ2Mjc1MTQ1NTE4NTY5OTYzMDU3MTY2MTY1Nzk0NjMwODc4ODQyNjA5Mjk4MzI3MDYyODc0MDY5MTIwMjAxODY5MTI5Mzg5ODYwODYwOAogICAgeDogREQ1ODM4RjdFQzNCOEFDRjFCRUNGRDc0NkY4QjY2OEM1NzcxMDdFOTM1NDhFRDkzRUQwRDI1NEMxMTJFNzZCMTBGMDUzMTA5RUY4NDI4QkZDRDUwRDM4QzRDMDMwQzU3CiAgICB5OiAzMzI0NEY0NzlDREFDMzRGMTYwRDlFNENFMkQxOUQyRkYwRTMzMDVCNUJGMEVFRjI5RTkxRTlERTZFMjhGNjc4QzYxQjc3M0FBN0UzQzAzNzQwRTFBNDlEMUFBMjQ5M0MKICAtCiAgICBrOiAxMTQ2MTg5MzcxODE3ODMyOTkwOTQ3NjExNDAwNDUwODg5NDA2MDcwMjE1NzM1MjU1MzcwMjgwODExNzM2NTg3ODQ1MDE2Mzk2NjQwOTY5NjU2NDQ3ODAzMjA3NDM4MTczNjk1MTE1MjY0CiAgICB4OiBDQjhFRDg5MzUzMEJGQkEwNEI0Q0E2NTU5MjNBQUFEMTA5QTYyQkM4NDExRDU5MjUzMTZDMzJEMzM2MDI0NTlDMzMwNTdBMUZCQ0I1RjcwQUVCMjk1RDkwRjkxNjVGQkMKICAgIHk6IDQyNkFFRTNFOTFCMDg0MjBGOUIzNTdCNjZENUFGQ0JDRjM5NTY1OTBCRjU1NjREQkY5MDg2MDQyRUI4ODA0OTNEMTlEQTM5QUFBNjQzNkM2QjVGQzY2Q0U1NTk2QjQzRgogIC0KICAgIGs6IDk2MTkzNDE0MzgyMTcwOTc2NDE4NjUzOTAyOTcxODk3MDg4NTg5MzgwMTc5ODY0MjYxNTI2MjI2Mzk1MDAxNzk3NzQ2MjQ1NzkxMjc3NDQ2MDg5OTMyOTQ2OTg4NzM0MzczMjUwOTA3NTE1MjA3NjQKICAgIHg6IDY3RjcxNDAxMkI2QjA3MDE4MjEyMkRERDQzNUNDMUMyMjYyQTFBQjg4OTM5QkM2QTI5MDZDQjJCNDEzN0M1RTgyQjQ1ODIxNjBGNjQwM0NBQjg4N0FDREY1Nzg2QTI2OAogICAgeTogOTBFMzFDRjM5OENFMkY4QzU4OTdDNzM4MEJGNTQxMDc1RDFCNEQzQ0I3MDU0NzI2MkI3MDk1NzMxMjUyRjE4MUFDMDU5N0M2NkFGODMxMUM3NzgwREIzOURFQzBCRDMyCiAgLQogICAgazogMTIzMTMwNzk5NjYyMzgzMzc0MjM4NzQwMDM1MjM4MDE3MjU2NjA3NzkyNzQxNTEzNjgxMzI4MjczNTY0MTkxODM5NTU4NTM3NjY1OTI4MjE5NDMxNzU5MDQ2MTUxODYzOTE0MTczMDQ5Mzc4MDcyMjE3NQogICAgeDogNTVBNzlERjdCNTNBOTlEMzE0NjJDN0UxQTVFRDU2MjM5NzA3MTVCQjEwMjEwOThDQjk3M0E3NTIwQ0JENjM2NUU2MTNFNEIyNDY3NDg2RkIzN0U4NkUwMUNFRTA5QjhGCiAgICB5OiBCOTVBRUI3MTY5MzE4OTkxMTY2MUI3MDlBODg2QTE4NjdGMDU2QTBFRkU0MDFFRTExQzA2MDMwRTQ2RjdBODc3MzFEQTQ1NzU4NjMxNzgwMTIyMDg3MDdERDY2NjcyN0MKICAtCiAgICBrOiA1ODcxMTg4Mzg4NTQ2ODM4MDA5NDI5MDY3MjI1MDQ4MTAzNDMwODY2OTkwMjE0NTE5MDY5NDYwMDMyNzQxMjg5NzMwNTg5NDIxOTczNzcwMTMxMjg4NDA1MTQ0MDQ3ODkxNDM1MTY3NDE2MzEKICAgIHg6IDk1MzlBOTY4Q0Y4MTlBMEU1MkUxMEVFQTNCQUNBMUI2NDgwRDdFNERGNjlCQzA3MDAyQzU2ODU2OTA0NzExMEVFNEZFNzJGQ0E0MjNGREQ1MTc5RDZFMEUxOUM0NDg0NAogICAgeTogQTc3MjhGMzdBMEFFMERGMjcxNjA2MTkwMEQ4M0E0REExNDkxNDQxMjlGODlBMjE0QTgyNjA0NjRCQUI2MDlCQjMyMkU0RTY3REU1RTRDNEM2Q0I4RDI1OTgzRUMxOUIwCiAgLQogICAgazogMTUzOTE0MDc3NTMwNjcxNzM5NjYzNzk1MDcwODc2ODk0NzY2NDUxNDY2MDE5Mzc0NjQ0MTUwNTQxNDUyNTU3MTQ3ODkwNTQyMTQzMjgwODU1NjkzNzk1ODgyMjk1ODQ2ODM0Mzg3NjcyNjgxNjYwNDE2CiAgICB4OiA5MzNGQzEzMjc2NjcyQUIzNjBEOTA5MTYxQ0QwMkQ4MzBCMTYyODkzNURGMEQ4MDBDNkVENjAyQzU5RDU3NUE4NkE4QTk3RTNBMkQ2OTdFM0VEMDZCRTc0MUMwMDk3RDYKICAgIHk6IEYzNTI5NkJEN0E2QjRDNkMwMjVFRDZEODQzMzhDQ0NDNzUyMkE0NUM1RDRGQkRCMTQ0MjU1NkNBRUZCNTk4MTI4RkExODg3OTNBREE1MTBFQjVGNDRFOTBBNEU0QkVGMQogIC0KICAgIGs6IDc1MTQ4Nzg0NjA2MTM1MTUwNDc2MjY4MTcxODUwMDgyMTc2MjU2ODU2Nzc2NzUwNTYwNTM5NDY2MTk2NTA0MzkwNTg3OTIxNzg5MjgzMTM0MDA5ODY2ODcxNzU0MzYxMDI4MTMxNDg1MTIyNTYwCiAgICB4OiAwQ0UzMUUxQzRBOTM3MDcxRTZFQkFDQTAyNkE5M0Q3ODM4NDhCQ0MwQzE1ODVEQUY2Mzk1MTgxMjVGQ0QxRjE2MjlENjMwNDFBQkZCMTFGRkM4RjAzRkE4QjZGQ0Y2QkYKICAgIHk6IEE2OUVBNTVCRTRCRUFCMkQ1MjI0MDUwRkVCRkZCREZDRkQ2MTQ2MjRDM0I0RjIyODkwOUVCODAwMTJGMDAzNzU2RDFDMzc3RTUyRjA0RkE1MzkyMzdGMjRERDA4MEUyRQogIC0KICAgIGs6IDE5NjkxMzgzNzYxMzEwMTkzNjY1MDk1MjkyNDI0NzU0ODA3NzQ1Njg2Nzk5MDI5ODE0NzA3ODQ5MjczMzgxNTE0MDIxNzg4MzcxMjUyMjEzMDAwNDczNDk3NjQ4ODUxMjAyNDAwMzk1NTI4NzYxMjI5MzEyCiAgICB4OiA2ODQyQ0ZFMzU4OUFDMjY4ODE4MjkxRjMxRDQ0MTc3QTkxNjhEQ0JDMTlGMzIxRUQ2NkQ4MUVDRjU5RTMxQjU0Q0NBMERERkQ0QzQxMzY3ODAxNzE3NDhENjlBOTFDNTQKICAgIHk6IEUzQTVFQ0Q1QUM3MjVGMTNEQkM2MzFGMzU4QzZFODE3RURDRjNBNjEzQjgzODMyNzQxQTlEQjU5MUEwQkFFNzY3RkM3MTRGNzBDMkU3RUE4OTFFNDMxMjA0N0RFQ0NDMAogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjIzCiAgICB4OiA2MDU1MDhFQzAyQzUzNEJDRUVFOTQ4NEM4NjA4NkQyMTM5ODQ5RTJCMTFDMUE5Q0ExRTI4MDhERUMyRUFGMTYxQUM4QTEwNUQ3MEQ0Rjg1QzUwNTk5QkU1ODAwQTYyM0YKICAgIHk6IEFFQTcxMTc4NjlENTM5NDdFMEZGNUVGQzQ3QUJDNUY4QzdFNDg5QzY1QzU5QTBFQ0FDNTEwRUU0OENDRUY5MjExNkQxNjY0NzcyMUM5ODRCNzFEQzczQzgyNTI3MTEyMgogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjI0CiAgICB4OiA4RDQ4MURBQjkxMkJDOEFCMTY4NThBMjExRDc1MEI3N0UwN0RCRUNDQTg2Q0Q5QjAxMjM5MEI0MzA0NjdBQUJGNTlDODY1MTA2MDgwMUMwRTk1OTlFNjg3MTNGNUQ0MUIKICAgIHk6IDVFQTZEMDBGRURFQjlGN0E4NDE2NjBENTlGOTk2RkFGNERENkU0OTc1RUZDNjU1RkE2QjRDRDAyODUyM0YxNzJFRTAwNDVBOEY3RkZCMTlCOTY2QTRGODI4QTFBRERCQQogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjI1CiAgICB4OiBERkIxRkUzQTQwRjdBQzlCNjRDNDFEMzkzNjBBNzQyMzgyOEI5N0NCMDg4QTQ5MDMzMTVFNDAyQTcwODlGQTBGOEI2QzIzNTUxNjlDQzlDOTlERkI0NDY5MkE5QjkzREQKICAgIHk6IEJBQzUzNUVEQkM0QTEzOTRCREM1OTc1REFBNzgxRTlFQzU5Q0IzRTNCRDJEMTE4MTkzQTgwQkI2NUUzNkUyMzY2RTk3NDhGQjkxM0Y1ODBDODVDOTlFN0JEQ0MxM0FERAogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjI2CiAgICB4OiA0MDk5OTUyMjA4QjQ4ODk2MDBBNUVCQkNCMTNFMUEzMjY5MkJFRkIwNzMzQjQxRTZEQ0M2MTRFNDJFNTgwNUY4MTcwMTJBOTkxQUYxRjQ4NkNBRjNBOUFERDlGRkNDMDMKICAgIHk6IEExMzA2Qjg4ODdDQ0ZBNjdDNkI4QkE2QjUwOUZDQTY3RTlDNTJDMDdGRjc1MkYzMjY0ODY4MkQ4ODBEQzc3NEJGQjI1QjJDRjU1Njk3RjEzMDU5QUYxMEIxREM0RjY1RgogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjI3CiAgICB4OiBENUQ4OUMzQjUyODIzNjlDNUZCRDg4RTJCMjMxNTExQTZCODBERkYwRTUxNTJDRjZBNDY0RkE5NDI4QTg1ODNCQUM4RUJDNzczRDE1NzgxMUE0NjJCODkyNDAxREFGQ0YKICAgIHk6IDI3RUFERDYyMUVENkY5MkRCRTdFOTJBMTY1NkJCNzBFMkJFMkIwM0JGMUQ1QzQyNDYzNTQ1QTgxQkJGNTg1NDQyRURFRjM0NjBCNjQwRERDOTdERDQ4QUIxNDU0Qzk4QwogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjI4CiAgICB4OiBCM0QxM0ZDOEIzMkIwMTA1OENDMTVDMTFEODEzNTI1NTIyQTk0MTU2RkZGMDFDMjA1QjIxRjlGN0RBN0M0RTlDQTg0OTU1N0ExMEI2MzgzQjRCODg3MDFBOTYwNjg2MEIKICAgIHk6IEVBRDZFNjE4MjA2RTlENTlFNEZCNjREQUM5RTlCNEU0MTE0NTNCNUVFMjhCNjUwQjdCMkVFRUJDOEMyMDQwMjU3QzcyREIwNjREN0I1MEFGNjdBMkE3NzNDQzA4NDI5RAogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjI5CiAgICB4OiBFOEM4Rjk0RDQ0RkJDMjM5NkJCRUFDNDgxQjg5RDJCMDg3N0IxREZGRDIzRTdEQzk1REU1NDFFQjY1MUNDQTJDNDFBQkEyNERCQzAyREU2NjM3MjA5QUNDRjBGNTlFQTAKICAgIHk6IDc2RTUxQkJDQTkwMzc1MUY2Q0Q0MzQwOTIxQUQzNzU2Q0M0NzlFNkUxODhENzI4NjM3Q0U2QkVDNUY2MkYwQjYwM0I5NzQ1RUFBRjYyMUREMjgxMUEzNjJFNDk4NDc3NwogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjMwCiAgICB4OiBBNTY3QkE5N0I2N0FFQTVCQUZEQUY1MDAyRkZDQzZBQjk2MzJCRkY5RjAxRjg3M0Y2MjY3QkNEMUYwRjExQzEzOUVFNUY0NDFBQkQ5OUYxQkFBRjFDQTFFM0I1Q0JDRTcKICAgIHk6IDIxRTRDNzRDNjc2MENDRTc5QkIxQkVCODUwRTlCMTMzQUU3QUE2QUZCOTZDRDEzRjc5Q0Q2NDFGQTg3QTgyOTg4ODk0MzQ3QzhEREU3NTgyOUJEQzVFRDlDOTBCRDYzMwogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjMxCiAgICB4OiA5NTJBN0EzNDlCRDQ5Mjg5QUIzQUM0MjFEQ0Y2ODNEMDhDMkVENUU0MUY2RDBFMjE2NDhBRjI2OTFBNDgxNDA2REE0QTVFMjJEQTgxN0NCNDY2REEyRUE3N0QyQTcwMjIKICAgIHk6IDVGQ0RGMDUwN0I0QTQzRkE5Q0ZBRDIxNTE5MDk5MEQxRjYwNDdGQzkzMUU3NUYxNDQ2RkQ3NEY2OUU2OTRBRjFGQ0U1NTlCOTc2OEJDMURENjEwOTQ1MzQxREU0MkU5MQogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjMyCiAgICB4OiAwOTkwNTZFMjdEQTdCOTk4REExRUVFQzI5MDQ4MTZDNTdGRTkzNUVENTgzN0MzNzQ1NkM5RkQxNDg5MkQzRjhDNDc0OUI2NkUzQUZCODFENjI2MzU2RjNCNTVCNERERDgKICAgIHk6IEQxQjNGM0RDQjFDRjU0Njk5NzdBRkFBQkI1M0ExRkM2OTAzQjExMjcyMDNDOUMwMkJDMDA2QzBCRTRBRDVDRDlBQjk5MkFFQzlDNTUwMENBODJBMjQ1N0ZDNzNBMUY0NAogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjMzCiAgICB4OiBBNjY5QzU1NjNCRDY3RUVDNjc4RDI5RDZFRjRGREU4NjRGMzcyRDkwQjc5QjlFODg5MzFENUMyOTI5MTIzOENDRUQ4RTg1QUI1MDdCRjkxQUE5Q0IyRDEzMTg2NjU4RkIKICAgIHk6IDU2Nzc0OEQ1MTgzRUQ4NjBERDI2RjdDMjRBMEYxMzIyMDhGRUU2QUFGM0U3QzNDRTNBRkQyMDg3M0M0OEZBNTZENjkyN0U2OURCN0Q3NzI2Njg4N0IwOTY0OEM1REUyMgogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjM0CiAgICB4OiA4RjBBMzlBNDA0OUJDQjNFRjFCRjI5QjhCMDI1Qjc4RjIyMTZGNzI5MUU2RkQzQkFDNkNCMUVFMjg1RkI2RTIxQzM4ODUyOEJGRUUyQjk1MzVDNTVFNDQ2MTA3OTExOEIKICAgIHk6IDlEMzg4MUVCQzc0OUZFMjlCQUQzQjVBQ0REM0M1Njg2NjU2NEMyODM1QzNCRkYzOTQ4OTg3N0FCNTEyNjRDRkM2MThCQzEwMDIwMkFFNDk3RDlEMjVCMDc1Mzk5QjUwNwogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjM1CiAgICB4OiAxNjkyNzc4RUE1OTZFMEJFNzUxMTQyOTdBNkZBMzgzNDQ1QkYyMjdGQkU1ODE5MEE5MDBDM0M3MzI1NkYxMUZCNUEzMjU4RDZGNDAzRDVFQ0U2RTlCMjY5RDgyMkM4N0QKICAgIHk6IDIzMkRDOUE4RkYyQkVGOTU3Q0FDNzc0NUMyNDcwMkYxRERBQUI1MjM5MkFERTMyQjQyRTNDRjNEMTNGMTEzRTU5NDUyMUUxNTMyMkU4RjcyOTA5NTQwNUNGREQ0RjUyRAogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjM2CiAgICB4OiAyODNDMUQ3MzY1Q0U0Nzg4RjI5RjhFQkYyMzRFREZGRUFENkZFOTk3RkJFQTVGRkEyRDU4Q0M5REZBN0IxQzUwOEIwNTUyNkY1NUI5RUJCMjA0MEYwNUI0OEZCNkQwRTEKICAgIHk6IDZCOEEzNjZGOUUxQkU0Nzc0NUFEMTAyNDczRTk2RkI4RTU5RTI3OTgxMjg2NjhENjI2MzZEMzJGRTI0MkREQThDRjI3QjEyMENENTg3MDYxOUI5OUIzMjYzQUVEMTA3MwogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjM3CiAgICB4OiA2MjdCRTFBQ0QwNjREMkIyMjI2RkUwRDI2RjJEMTVEM0MzM0VCQ0JCN0YwRjVEQTUxQ0JENDFGMjYyNTczODMwMjEzMTdENzIwMkZGMzBFNTA5MzdGMDg1NEUzNUM1REYKICAgIHk6IEY2ODk5NUIzNEMwNzRFM0RFNDE5MjI1OTNFQjBFQThBNEQzNkFDQUQ5QkIwODhCMzY2NzlCMDlFQzhFQUJCRThGQjNCQTQ3MTdCMUU5QUNFRThDQzVCRjgyQzBGMDZDQgogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjM4CiAgICB4OiAxMURFMjRBMkMyNTFDNzc3NTczQ0FDNUVBMDI1RTQ2N0YyMDhFNTFEQkZGOThGQzU0RjY2NjFDQkU1NjU4M0IwMzc4ODJGNEExQ0EyOTdFNjBBQkNEQkMzODM2RDg0QkMKICAgIHk6IDcwNTk2OTM4OEJCRjA2RDJGMEE3QzgxNkY1RkYxODNBRDdCNEJCODhBQjJBMjExNzczNjc5QUNDNDk2RkU1MTNDRTg4OTc5MUY1MTcwNENDRTdCQkVCNTUxOTNFOEVDNQogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjM5CiAgICB4OiAxMzgyNTFDRDUyQUM5Mjk4QzFDOEFBRDk3NzMyMURFQjk3RTcwOUJEMEI0Q0EwQUNBNTVEQzhBRDUxRENGQzlEMTU4OUExNTk3RTNBNTEyMEUxRUZENjMxQzYzRTE4MzUKICAgIHk6IDM1MzUxRDY3OTY1OUQxRTlDRTE3NUQ3RTdFNTRBOTlFOTIzQkEyNkU3NTQzRjYwQzU0RjE5QzMwODZENTVCMjIxMjhDNzg0MEM4NDQ1QTk2QUI2MEUzRkU0RDhGMTI5OAogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjQwCiAgICB4OiAwNzdBNDFENDYwNkZGQTE0NjQ3OTNDN0U1RkRDN0Q5OENCOUQzOTEwMjAyRENEMDZCRUE0RjI0MEQzNTY2REE2QjQwOEJCQUU1MDI2NTgwRDAyRDdFNUM3MDUwMEM4MzEKICAgIHk6IDM2NkEwODM1RjRGM0JEN0M4MkY0NDE2OUZENTYwMzY2N0FERjRCRTM3QUVFQTU1QTA4OTdCM0YxMjNFRUUxNTIzREI1NDI5MzFCNEEyRDY3NDlBMEQ3QTBGNUQwRTIwRQogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjQxCiAgICB4OiAwOEQ5OTkwNTdCQTNEMkQ5NjkyNjAwNDVDNTVCOTdGMDg5MDI1OTU5QTZGNDM0RDY1MUQyMDdEMTlGQjk2RTlFNEZFMEU4NkVCRTBFNjRGODVCOTZBOUM3NTI5NURGNjEKICAgIHk6IDcxN0YwRTA1QTRFNEMzMTI0ODQwMTcyMDAyOTI0NThCNEQ4QTI3OEE0MzkzM0JDMTZGQjFBRkEwREE5NTRCRDlBMDAyQkMxNUIyQzYxREQyOUVBRkUxOTBGNTZCRjE3RgogIC0KICAgIGs6IDM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ2OTA1Mjc5NjI3NjU5Mzk5MTEzMjYzNTY5Mzk4OTU2MzA4MTUyMjk0OTEzNTU0NDMzNjUzOTQyNjQyCiAgICB4OiBBQTg3Q0EyMkJFOEIwNTM3OEVCMUM3MUVGMzIwQUQ3NDZFMUQzQjYyOEJBNzlCOTg1OUY3NDFFMDgyNTQyQTM4NTUwMkYyNURCRjU1Mjk2QzNBNTQ1RTM4NzI3NjBBQjcKICAgIHk6IEM5RTgyMUI1NjlEOUQzOTBBMjYxNjc0MDZENkQyM0Q2MDcwQkUyNDJENzY1RUI4MzE2MjVDRUVDNEEwRjQ3M0VGNTlGNEUzMEUyODE3RTYyODVCQ0UyODQ2RjE1RjFBMAoKIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjk3OSNhcHBlbmRpeC1BLjIuNgpobWFjOgogIC0KICAgIGFsZ286IHNoYTEKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogNDQ3MUVGNzUxOEJCMkM3QzIwRjYyRUFFMUMzODdBRDBDNUU4RTQ3MDk5NURCNEFDRjY5NDQ2NkU2QUIwOTY2MzBGMjlFNTkzOEQyNTEwNkMzQzM0MDA0NUEyREIwMUE3CiAgICByOiBFQzc0OEQ4MzkyNDNENkZCRUY0RkM1QzQ4NTlBN0RGRkQ3RjNBQkRERjcyMDE0NTQwQzE2RDczMzA5ODM0RkEzN0I5QkEwMDI4OTlGNkZEQTNBNEE5Mzg2NzkwRDRFQjIKICAgIHM6IEEzQkNGQTk0N0JFRUY0NzMyQkYyNDdBQzE3RjcxNjc2Q0IzMUE4NDdCOUZGMENCQzlDOUVENEMxQTVCM0ZBQ0YyNkY0OUNBMDMxRDQ4NTc1NzBDQ0I1Q0E0NDI0QTQ0MwogIC0KICAgIGFsZ286IHNoYTIyNAogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiBBNEU0RDJGMEU3MjlFQjc4NkIzMUZDMjBBRDVEODQ5RTMwNDQ1MEUwQUU4RTNFMzQxMTM0QTVDMUFGQTAzQ0FCODA4M0VFNEUzQzQ1QjA2QTU4OTlFQTU2QzUxQjU4NzkKICAgIHI6IDQyMzU2RTc2QjU1QTZEOUI0NjMxQzg2NTQ0NURCRTU0RTA1NkQzQjM0MzE3NjZEMDUwOTI0NDc5M0MzRjkzNjY0NTBGNzZFRTNERTQzRjVBMTI1MzMzQTZCRTA2MDEyMgogICAgczogOURBMEM4MTc4NzA2NDAyMUU3OERGNjU4RjJGQkIwQjA0MkJGMzA0NjY1REI3MjFGMDc3QTQyOThCMDk1RTQ4MzRDMDgyQzAzRDgzMDI4RUZCRjkzQTNDMjM5NDBDQThECiAgLQogICAgYWxnbzogc2hhMjU2CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDM4NAogICAga2V5OiA2QjlEM0RBRDJFMUI4QzFDMDVCMTk4NzVCNjY1OUY0REUyM0MzQjY2N0JGMjk3QkE5QUE0Nzc0MDc4NzEzN0Q4OTZENTcyNEU0QzcwQTgyNUY4NzJDOUVBNjBEMkVERjUKICAgIGs6IDE4MEFFOUY5QUVDNTQzOEE0NEJDMTU5QTFGQ0IyNzdDN0JFNTRGQTIwRTdDRjQwNEI0OTA2NTBBOEFDQzQxNEUzNzU1NzIzNDI4NjNDODk5RjlGMkVERjk3NDdBOUI2MAogICAgcjogMjFCMTNEMUUwMTNDN0ZBMTM5MkQwM0M1Rjk5QUY4QjMwQzU3MEM2Rjk4RDRFQThFMzU0QjYzQTIxRDNEQUEzM0JERTFFODg4RTYzMzU1RDkyRkEyQjNDMzZEOEZCMkNECiAgICBzOiBGM0FBNDQzRkIxMDc3NDVCRjRCRDc3Q0IzODkxNjc0NjMyMDY4QTEwQ0E2N0UzRDQ1REIyMjY2RkE3RDFGRUVCRUZEQzYzRUNDRDFBQzQyRUMwQ0I4NjY4QTRGQTBBQjAKICAtCiAgICBhbGdvOiBzaGEzODQKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogOTRFRDkxMEQxQTA5OURBRDMyNTRFOTI0MkFFODVBQkRFNEJBMTUxNjhFQUYwQ0E4N0E1NTVGRDU2RDEwRkJDQTI5MDdFM0U4M0JBOTUzNjg2MjNCOEM0Njg2OTE1Q0Y5CiAgICByOiA5NEVEQkI5MkE1RUNCOEFBRDQ3MzZFNTZDNjkxOTE2QjNGODgxNDA2NjZDRTlGQTczRDY0QzRFQTk1QUQxMzNDODFBNjQ4MTUyRTQ0QUNGOTZFMzZERDFFODBGQUJFNDYKICAgIHM6IDk5RUY0QUVCMTVGMTc4Q0VBMUZFNDBEQjI2MDMxMzhGMTMwRTc0MEExOTYyNDUyNjIwM0I2MzUxRDBBM0E5NEZBMzI5QzE0NTc4NkU2NzlFN0I4MkM3MUEzODYyOEFDOAogIC0KICAgIGFsZ286IHNoYTUxMgogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiA5MkZDM0M3MTgzQTg4M0UyNDIxNkQxMTQxRjFBODk3NkM1QjBERDc5N0RGQTU5N0UzRDdCMzIxOThCRDM1MzMxQTRFOTY2NTMyNTkzQTUyOTgwRDBFM0FBQTVFMTBFQzMKICAgIHI6IEVEMDk1OUQ1ODgwQUIyRDg2OUFFN0Y2QzI5MTVDNkQ2MEY5NjUwN0Y5Q0IzRTA0N0MwMDQ2ODYxREE0QTc5OUNGRTMwRjM1Q0M5MDAwNTZEN0M5OUNENzg4MjQzMzcwOQogICAgczogNTEyQzhDQ0VFRTM4OTBBODQwNThDRTFFMjJEQkMyMTk4RjQyMzIzQ0U4QUNBOTEzNTMyOUYwM0MwNjhFNTExMkRDN0NDM0VGMzQ0NkRFRkNFQjAxQTQ1QzI2NjdGREQ1CiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogNjZDQzJDOEY0RDMwM0ZDOTYyRTVGRjZBMjdCRDc5Rjg0RUM4MTJEREFFNThDRjUyNDNCNjRBNEFEODA5NEQ0N0VDMzcyN0YzQTNDMTg2QzE1MDU0NDkyRTMwNjk4NDk3CiAgICByOiA0QkMzNUQzQTUwRUY0RTMwNTc2RjU4Q0Q5NkNFNkJGNjM4MDI1RUU2MjQwMDRBMUY3Nzg5QThCOEU0M0QwNjc4QUNEOUQyOTg3NkRBRjQ2NjM4NjQ1RjdGNDA0QjExQzcKICAgIHM6IEQ1QTYzMjZDNDk0RUQzRkY2MTQ3MDM4Nzg5NjFDMEZERTdCMkMyNzhGOUE2NUZEOEM0QjcxODYyMDFBMjk5MTY5NUJBMUM4NDU0MTMyN0U5NjZGQTdCNTBGNzM4MjI4MgogIC0KICAgIGFsZ286IHNoYTIyNAogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogMThGQTM5REI5NUFBNUY1NjFGMzBGQTM1OTFEQzU5QzBGQTM2NTNBODBEQUZGQTBCNDhEMUE0QzZERkNCRkY2RTNEMzNCRTREQzVFQjg4ODZBOEVDRDA5M0YyOTM1NzI2CiAgICByOiBFOEM5RDBCNkVBNzJBMEU3ODM3RkVBMUQxNEExQTk1NTdGMjlGQUE0NUQzRTdFRTg4OEZDNUJGOTU0QjVFNjI0NjRBOUE4MTdDNDdGRjc4QjhDMTEwNjZCMjQwODBFNzIKICAgIHM6IDA3MDQxRDRBN0EwMzc5QUM3MjMyRkY3MkU2Rjc3QjZEREI4RjA5QjE2Q0NFMEVDMzI4NkIyQkQ0M0ZBOEM2MTQxQzUzRUE1QUJFRjBEODIzMTA3N0EwNDU0MEE5NkI2NgogIC0KICAgIGFsZ286IHNoYTI1NgogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogMENGQUMzNzU4NzUzMjM0N0RDMzM4OUZEQzk4Mjg2QkJBOEM3MzgwNzI4NUIxODRDODNFNjJFMjZDNDAxQzBGQUE0OEREMDcwQkE3OTkyMUEzNDU3QUJGRjJENjMwQUQ3CiAgICByOiA2RDZERUZBQzlBQjY0REFCQUZFMzZDNkJGNTEwMzUyQTRDQzI3MDAxMjYzNjM4RTVCMTZEOUJCNTFENDUxNTU5RjkxOEVFREFGMjI5M0JFNUI0NzVDQzhGMDE4ODYzNkIKICAgIHM6IDJENDZGM0JFQ0JDQzUyM0Q1RjFBMTI1NkJGMEM5QjAyNEQ4NzlCQTlFODM4MTQ0QzhCQTZCQUVCNEI1M0I0N0Q1MUFCMzczRjk4NDVDMDUxNEVFRkIxNDAyNDc4NzI2NQogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogMDE1RUU0NkE1QkY4ODc3M0VEOTEyM0E1QUIwODA3OTYyRDE5MzcxOTUwM0M1MjdCMDMxQjRDMkQyMjUwOTJBREE3MUY0QTQ1OUJDMERBOThBREI5NTgzN0RCODMxMkVBCiAgICByOiA4MjAzQjYzRDNDODUzRThENzcyMjdGQjM3N0JDRjdCN0I3NzJFOTc4OTJBODBGMzZBQjc3NUQ1MDlEN0E1RkVCMDU0MkE3RjA4MTI5OThEQThGMUREM0NBM0NGMDIzREIKICAgIHM6IERERDA3NjA0NDhENDJEOEE0M0FGNDVBRjgzNkZDRTRERThCRTA2QjQ4NUU5QjYxQjgyN0MyRjEzMTczOTIzRTA2QTczOUYwNDA2NDlBNjY3QkYzQjgyODI0NkJBQTVBNQogIC0KICAgIGFsZ286IHNoYTUxMgogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogMzc4MEM0RjY3Q0IxNTUxOEI2QUNBRTM0QzlGODM1NjhEMkUxMkU0N0RFQUI2QzUwQTRFNEVFNTMxOUQxRThDRTBFMkNDOEExMzYwMzZEQzRCOUMwMEU2ODg4RjY2QjZDCiAgICByOiBBMEQ1RDA5MEM5OTgwRkFGM0MyQ0U1N0I3QUU5NTFEMzE5NzdERDExQzc3NUQzMTRBRjU1Rjc2QzY3NjQ0N0QwNkZCNjQ5NUNEMjFCNEI2RTM0MEZDMjM2NTg0RkIyNzcKICAgIHM6IDk3Njk4NEU1OUI0Qzc3QjBFOEU0NDYwRENBM0Q5RjIwRTA3QjlCQjFGNjNCRUVGQUY1NzZGNkIyRThCMjI0NjM0QTIwOTJDRDM3OTJFMDE1OUFEOUNFRTM3NjU5QzczNg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/nist-p521.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBodHRwOi8vcG9pbnQtYXQtaW5maW5pdHkub3JnL2VjYy9uaXN0dHYKbmFtZTogbmlzdHA1MjEKZGlmZmllOgogIC0KICAgIGFsaWNlOiAzNzAwMTQ1MzM1NDU0NTAzOTg2NjIxMzc3MjQ4NjA0MTcwMzQxMTEyMTkzMjgyNTYyNzE1NDk5MTU5MzM0Njg3NTA5MTEyNzUwNjI4OTc3MzU0MTAzODk3ODI1MzUxNjY2NjcyMTk1ODE0MzcxNjg3MTU4MTA4NzIwMjQ1MTgzMjI3ODYwOTcwMjIzMjI4NjU4MzQ0MTM5MTkxMTM4CiAgICBib2I6IDI3NzM5MTIxMjkzMjIxMzE5MDQ3ODE0NTExMjU4MzQxMTY5MzAzMzY3MzY1ODMxMDczNzY2NDkwNTI0OTczMjg4NzExODY1NzI4MTQ0NDQyMTQ2MDE4NTc4MDc4ODYyNjYxMDgyNjcyODI1ODA1MjI2ODk1OTcyMjU0MDY1Mzc3ODEwMTcwMjI3NjkyNjk0NjAzMTczNzgyNTU3NjYKICAgIHNoYXJlZDogMDBDREVBODk2MjFDRkE0NkIxMzJGOUU0Q0ZFMjI2MUNERTJENDM2OEVCNTY1NjYzNEM3Q0M5OEM3QTAwQ0RFNTRFRDE4NjZBMEREM0U2MTI2QzlEMkY4NDVEQUZGODJDRUIxREEwOEY1RDg3NTIxQkIwRUJFQ0E3NzkxMTE2OUMyMENDCiAgICAjIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MTE0Lmh0bWwKa2V5cGFpcnM6CiAgLQogICAgazogMQogICAgeDogMDBDNjg1OEUwNkI3MDQwNEU5Q0Q5RTNFQ0I2NjIzOTVCNDQyOUM2NDgxMzkwNTNGQjUyMUY4MjhBRjYwNkI0RDNEQkFBMTRCNUU3N0VGRTc1OTI4RkUxREMxMjdBMkZGQThERTMzNDhCM0MxODU2QTQyOUJGOTdFN0UzMUMyRTVCRDY2CiAgICB5OiAwMTE4MzkyOTZBNzg5QTNCQzAwNDVDOEE1RkI0MkM3RDFCRDk5OEY1NDQ0OTU3OUI0NDY4MTdBRkJEMTcyNzNFNjYyQzk3RUU3Mjk5NUVGNDI2NDBDNTUwQjkwMTNGQUQwNzYxMzUzQzcwODZBMjcyQzI0MDg4QkU5NDc2OUZEMTY2NTAKICAtCiAgICBrOiAyCiAgICB4OiAwMDQzM0MyMTkwMjQyNzdFN0U2ODJGQ0IyODgxNDhDMjgyNzQ3NDAzMjc5QjFDQ0MwNjM1MkM2RTU1MDVENzY5QkU5N0IzQjIwNERBNkVGNTU1MDdBQTEwNEEzQTM1QzVBRjQxQ0YyRkEzNjRENjBGRDk2N0Y0M0UzOTMzQkE2RDc4M0QKICAgIHk6IDAwRjRCQjhDQzdGODZEQjI2NzAwQTdGM0VDRUVFRUQzRjBCNUM2QjUxMDdDNERBOTc3NDBBQjIxQTI5OTA2QzQyREJCQjNFMzc3REU5RjI1MUY2QjkzOTM3RkE5OUEzMjQ4RjRFQUZDQkU5NUVEQzBGNEY3MUJFMzU2RDY2MUY0MUIwMgogIC0KICAgIGs6IDMKICAgIHg6IDAxQTczRDM1MjQ0M0RFMjkxOTVERDkxRDZBNjRCNTk1OTQ3OUI1MkE2RTVCMTIzRDlBQjlFNUFEN0ExMTJEN0E4REQxQUQzRjE2NEEzQTQ4MzIwNTFEQTZCRDE2QjU5RkUyMUJBRUI0OTA4NjJDMzJFQTA1QTU5MTlEMkVERTM3QUQ3RAogICAgeTogMDEzRTlCMDNCOTdERkE2MkRERDk5NzlGODZDNkNBQjgxNEYyRjE1NTdGQTgyQTlEMDMxN0QyRjhBQjFGQTM1NUNFRUMyRTJERDRDRjhEQzU3NUIwMkQ1QUNFRDFERUMzQzcwQ0YxMDVDOUJDOTNBNTkwNDI1RjU4OENBMUVFODZDMEU1CiAgLQogICAgazogNAogICAgeDogMDAzNUI1REY2NEFFMkFDMjA0QzM1NEI0ODM0ODdDOTA3MENEQzYxQzg5MUM1RkYzOUFGQzA2QzVENTU1NDFEM0NFQUM4NjU5RTI0QUZFM0QwNzUwRThCODhFOUYwNzhBRjA2NkExRDUwMjVCMDhFNUE1RTJGQkM4NzQxMjg3MTkwMkYzCiAgICB5OiAwMDgyMDk2Rjg0MjYxMjc5RDJCNjczRTAxNzhFQjBCNEFCQjY1NTIxQUVGNkU2RTMyRTFCNUFFNjNGRTJGMTk5MDdGMjc5RjI4M0U1NEJBMzg1NDA1MjI0Rjc1MEE5NUI4NUVFQkI3RkFFRjA0Njk5RDFEOUUyMUY0N0ZDMzQ2RTREMEQKICAtCiAgICBrOiA1CiAgICB4OiAwMDY1MkJGM0M1MjkyN0E0MzJDNzNEQkMzMzkxQzA0RUIwQkY3QTU5NkVGREI1M0YwRDI0Q0YwM0RBQjhGMTc3QUNFNDM4M0MwQzZENUUzMDE0MjM3MTEyRkVBRjEzN0U3OUEzMjlEN0UxRTZEODkzMTczOEQ1QUI1MDk2RUM4RjMwNzgKICAgIHk6IDAxNUJFNkVGMUJERDY2MDFENkVDOEEyQjczMTE0QTgxMTI5MTFDRDhGRThFODcyRTAwNTFFREQ4MTdDOUEwMzQ3MDg3QkI2ODk3QzkwNzJDRjM3NDMxMTU0MDIxMUNGNUZGNzlEMUYwMDcyNTczNTRGN0Y4MTczQ0MzRThERUIwOTBDQgogIC0KICAgIGs6IDYKICAgIHg6IDAxRUU0NTY5RDZDREI1OTIxOTUzMkVGRjM0Rjk0NDgwRDE5NTYyM0QzMDk3N0ZENzFDRjM5ODE1MDZBREU0QUIwMTUyNUZCQ0NBMTYxNTNGNzM5NEUwNzI3QTIzOTUzMUJFOEMyRjY2RTk1NjU3RjM4MEFFMjM3MzFCRURGNzkyMDZCOQogICAgeTogMDFERTAyNTVBRDBDQzY0RjU4NkFFMkREMjcwNTQ2RTNCMTExMkFBQkJCNzNEQTVBODA4RTcyNDBBOTI2MjAxQThBOTZDQUI3MkQwRTU2NjQ4QzlERjk2Qzk4NERFMjc0RjIyMDNEQzdCOEI1NUNBMERBREUxRUFDQ0Q3ODU4RDQ0RjE3CiAgLQogICAgazogNwogICAgeDogMDA1NkQ1RDFEOTlENUI3RjYzNDZFRUI2NUZEQTBCMDczQTBDNUYyMkUwRThGNTQ4MzIyOEYwMThEMkMyRjcxMTRDNUQ4QzMwOEQwQUJGQzY5OEQ4QzlBNkRGMzBEQ0UzQkJDNDZGOTUzRjUwRkRDMjYxOUEwMUNFQUQ4ODI4MTZFQ0Q0CiAgICB5OiAwMDNEMkQxQjdEOUJBQUEyQTExMEQxRDgzMTdBMzlENjg0NzhCNUM1ODJEMDI4MjRGMERENzFEQkQ5OEEyNkNCREU1NTZCRDBGMjkzQ0RFQzlFMkI5NTIzQTM0NTkxQ0UxQTVGOUU3NjcxMkE1RERFRkM3QjVDNkI4QkM5MDUyNTI1MUIKICAtCiAgICBrOiA4CiAgICB4OiAwMDA4MjJDNDBGQjYzMDFGNzI2MkE4MzQ4Mzk2QjAxMEUyNUJENEUyOUQ4QTlCMDAzRTBBOEI4QTNCMDVGODI2Mjk4RjVCRkVBNUI4NTc5RjQ5RjA4QjU5OEMxQkM4RDc5RTFBQjU2Mjg5QjVBNkY0MDQwNTg2RjlFQTU0QUE3OENFNjgKICAgIHk6IDAxNjMzMTkxMUQ1NTQyRkM0ODIwNDhGREFCNkU3ODg1M0I5QTQ0RjhFREU5RTJDMDcxNUI1MDgzREU2MTA2NzdBOEYxODlFOUMwQUE1OTExQjRCRkYwQkEwREYwNjVDNTc4Njk5RjNCQTk0MDA5NDcxMzUzOEFENjQyRjExRjE3ODAxQwogIC0KICAgIGs6IDkKICAgIHg6IDAxNTg1Mzg5RTM1OUUxRTIxODI2QTJGNUJGMTU3MTU2RDQ4OEVEMzQ1NDFCOTg4NzQ2OTkyQzRBQjE0NUI4QzZCNjY1NzQyOUUxMzk2MTM0REEzNUYzQzU1NkRGNzI1QTMxOEY0RjUwQkFCRDg1Q0QyODY2MUY0NTYyNzk2N0NCRTIwNwogICAgeTogMDAyQTJFNjE4QzlBOEFFREYzOUYwQjU1NTU3QTI3QUU5MzhFMzA4OEE2NTRFRTFDRUJCNkM4MjVCQTI2M0REQjQ0NkUwRDY5RTU3NTYwNTdBQzg0MEZGNTZFQ0Y0QUJGRDg3RDczNkMyQUU5Mjg4ODBGMzQzQUEwRUE4NkI5QUQyQTRFCiAgLQogICAgazogMTAKICAgIHg6IDAxOTBFQjhGMjJCREE2MUYyODFERkNGRTdCQjY3MjFFQzRDRDkwMUQ4NzlBQzA5QUM3QzM0QTkyNDZCMTFBREE4OTEwQTJDN0MxNzhGQ0MyNjMyOTlEQUE0REE5ODQyMDkzRjM3QzJFNDExRjFBOEU4MTlBODdGRjA5QTA0RjJGMzMyMAogICAgeTogMDFFQjVEOTZCODQ5MTYxNEJBOURCQUVBQjNCMENBMkJBNzYwQzJFRUIyMTQ0MjUxQjIwQkE5N0ZENzhBNjJFRjYyRDJCRjUzNDlENDREOTg2NEJCNTM2RjYxNjNEQzU3RUJFRkYzNjg5NjM5NzM5RkFBMTcyOTU0QkM5ODEzNUVDNzU5CiAgLQogICAgazogMTEKICAgIHg6IDAwOEE3NTg0MTI1OUZERURGRjU0NkYxQTM5NTczQjQzMTVDRkVENURDN0VEN0MxNzg0OTU0M0VGMkM1NEYyOTkxNjUyRjNEQkM1MzMyNjYzREExQkQxOUIxQUVCRTMxOTEwODUwMTVDMDI0RkE0QzlBOTAyRUNDMEUwMkREQTBDREI5QQogICAgeTogMDA5NkZCMzAzRkNCQkEyMTI5ODQ5RDBDQTg3NzA1NEZCMjI5M0FERDU2NjIxMEJEMDQ5M0VEMkU5NUQ0RTBCOUI4MkIxQkM4QTkwRThCNDJBNEFCMzg5MjMzMTkxNEE5NTMzNkRDQUM4MEUzRjQ4MTlCNUQ1ODg3NEY5MkNFNDhDODA4CiAgLQogICAgazogMTIKICAgIHg6IDAxQzBEOURDRUM5M0Y4MjIxQzVERTRGQUU5NzQ5QzdGREUxRTgxODc0MTU3OTU4NDU3QjYxMDdDRjdBNTk2NzcxM0E2NDRFOTBCN0MzRkI4MUIzMTQ3N0ZFRTlBNjBFOTM4MDEzNzc0Qzc1QzUzMDkyOEIxN0JFNjk1NzFCRjg0MkQ4QwogICAgeTogMDE0MDQ4QjU5NDZBNDkyN0MwRkUzQ0UxRDEwM0E2ODJDQTQ3NjNGRTY1QUI3MTQ5NERBNDVFNDA0QUJGNkExN0MwOTdENkQxODg0M0Q4NkZDREI2Q0MxMEE2Rjk1MUI5QjYzMDg4NEJBNzIyMjRGNUFFNkM3OUU3QjFBMzI4MUIxN0YwCiAgLQogICAgazogMTMKICAgIHg6IDAwN0UzRTk4Rjk4NEMzOTZBRDlDRDc4NjVEMkI0OTI0ODYxQTkzRjczNkNERTFCNEMyMzg0RUVERDJCRUFGNUI4NjYxMzJDNDU5MDhFMDNDOTk2QTM1NTBBNUU3OUFCODhFRTk0QkVDM0IwMEFCMzhFRkY4MTg4Nzg0OEQzMkZCQ0RBNwogICAgeTogMDEwOEVFNThFQjZENzgxRkVEQTkxQTE5MjZEQUEzRUQ1QTA4Q0VENTBBMzg2RDU0MjFDNjlDN0E2N0FFNUMxRTIxMkFDMUJENUQ1ODM4QkM3NjNGMjZERkREMzUxQ0JGQkJDMzYxOTlFQUFGOTExN0U5RjcyOTFBMDFGQjAyMkE3MUM5CiAgLQogICAgazogMTQKICAgIHg6IDAxODc1QkM3REM1NTFCMUI2NUE5RTFCOENDRkFBRjg0REVEMTk1OEI0MDE0OTQxMTZBMkZENEZCMEJBQkUwQjMxOTk5NzRGQzA2QzhCODk3MjIyRDc5REYzRTRCN0JDNzQ0QUE2NzY3RjZCODEyRUZCRjVEMkM5RTY4MkREMzQzMkQ3NAogICAgeTogMDA1Q0E0OTIzNTc1REFDQjVCRDJENjYyOTBCQkFCQjRCREZCODQ3MDEyMkI4RTUxODI2QTA4NDdDRTlCODZEN0VENjJEMDc3ODFCMUI0RjM1ODRDMTFFODlCRjFEMTMzREMwRDVCNjkwRjUzQTg3Qzg0QkU0MTY2OUY4NTI3MDBENTRBCiAgLQogICAgazogMTUKICAgIHg6IDAwNkI2QUQ4OUFCQ0I5MjQ2NUYwNDE1NThGQzU0NkQ0MzAwRkI4RkJDQzMwQjQwQTA4NTJENjk3QjUzMkRGMTI4RTExQjkxQ0NFMjdEQkQwMEZGRTc4NzVCRDFDOEZDMDMzMUQ5QjhEOTY5ODFFM0Y5MkJERTlBRkUzMzdCQ0I4REI1NQogICAgeTogMDFCNDY4REEyNzE1NzEzOTFENkE3Q0U2NEQyMzMzRURCRjYzREYwNDk2QTlCQUQyMENCQTRCNjIxMDY5OTc0ODVFRDU3RTkwNjJDODk5NDcwQTgwMjE0OEUyMjMyQzk2Qzk5MjQ2RkQ5MENDNDQ2QUJERDk1NjM0MzQ4MEExNDc1NDY1CiAgLQogICAgazogMTYKICAgIHg6IDAxRDE3RDEwRDhBODlDOEFEMDVEREE5N0RBMjZBQzc0M0IwQjJBODdGNjYxOTJGRDNGM0RENjMyRjhEMjBCMTg4QTUyOTQzRkYxODg2MUNBMDBBMEU1OTY1REE3OTg1NjMwREYwREJGNUM4MDA3RENEQzUzM0E2QzUwOEY4MUE4NDAyRgogICAgeTogMDA3QTM3MzQzQzU4MkQ3NzAwMUZDNzE0QjE4RDNEM0U2OTcyMTMzNUU0QzNCODAwRDUwRUM3Q0EzMEM5NEI2QjgyQzFDMTgyRTEzOThEQjU0N0FBMEIzMDc1QUM5RDk5ODg1MjlFMzAwNEQyOEQxODYzMzM1MkUyNzJGODlCQzczQUJFCiAgLQogICAgazogMTcKICAgIHg6IDAxQjAwRERCNzA3RjEzMEVEQTEzQTBCODc0NjQ1OTIzOTA2QTk5RUU5RTI2OUZBMkIzQjRENjY1MjRGMjY5MjUwODU4NzYwQTY5RTY3NEZFMDI4N0RGNEU3OTlCNTY4MTM4MEZGOEMzMDQyQUYwRDFBNDEwNzZGODE3QTg1MzExMEFFMAogICAgeTogMDA4NTY4M0YxRDdEQjE2NTc2REJDMTExRDRFNEFFREREMTA2Qjc5OTUzNENGNjk5MTBBOThENjhBQzJCMjJBMTMyM0RGOURBNTY0RUY2REQwQkYwRDJGNjc1N0YxNkFERjQyMEU2OTA1NTk0QzJCNzU1RjUzNUI5Q0I3QzcwRTY0NjQ3CiAgLQogICAgazogMTgKICAgIHg6IDAxQkMzMzQyNUU3MkExMjc3OUVBQ0IyRURDQzVCNjNEMTI4MUY3RTg2REJDN0JGOTlBN0FCRDBDRkUzNjdERTQ2NjZENkVEQkI4NTI1QkZGRTUyMjJGMDcwMkMzMDk2REVDMDg4NENFNTcyRjVBMTVDNDIzRkRGNDREMDFERDk5QzYxRAogICAgeTogMDEwRDA2RTk5OTg4NUI2MzUzNURFM0U3NEQzM0Q5RTYzRDAyNEZCMDdDRTBEMTk2RjI1NTJDOEU0QTAwQUM4NEMwNDQyMzRBRUIyMDFGN0E5MTMzOTE1RDFCNEI0NTIwOUI5REE3OUZFMTVCMTlGODRGRDEzNUQ4NDFFMkQ4RjlBODZBCiAgLQogICAgazogMTkKICAgIHg6IDAwOTk4RENDRTQ4NjQxOUMzNDg3QzBGOTQ4QzJENUExQTA3MjQ1Qjc3RTA3NTVERjU0N0VGRkYwQUNEQjM3OTBFN0YxRkEzQjMwOTYzNjI2Njk2NzkyMzI1NTdEN0E0NTk3MERGRUNGNDMxRTcyNUJCREU0NzhGRjBCMjQxOEQ2QTE5QgogICAgeTogMDEzN0Q1REEwNjI2QTAyMUVENUNDMzk0MjQ5NzUzNUIyNDVENjdEMjhBRUUyQjdCQ0Y0QUNDNTBFRUUzNjU0NTc3Mjc3M0FEOTYzRkYyRUI4Q0Y5QjBFQzM5OTkxNjMxQzM3N0Y1QTREODlFQTlGQkZFNDRBOTA5MUE2OTVCRkQwNTc1CiAgLQogICAgazogMjAKICAgIHg6IDAxOEJERDdGMUI4ODk1OThBNDY1M0RFRUFFMzlDQzZGOENDMkJENzY3QzJBQjBEOTNGQjEyRTk2OEZCRUQzNDJCNTE3MDk1MDYzMzlDQjEwNDlDQjExREQ0OEI5QkRCM0NENUNBRDc5MkU0M0I3NEUxNkQ4RTI2MDNCRkIxMUIwMzQ0RgogICAgeTogMDBDNUFBREJFNjNGNjhDQTVCNkI2OTA4Mjk2OTU5QkYwQUY4OUVFN0Y1MkI0MTBCOTQ0NDU0NkM1NTA5NTJEMzExMjA0REEzQkREREM2RDRFQUU3RURGQUVDMTAzMERBOEVGODM3Q0NCMjJFRUU5Q0ZDOTRERDMyODdGRUQwOTkwRjk0CiAgLQogICAgazogMTEyMjMzNDQ1NTY2Nzc4ODk5CiAgICB4OiAwMTY1MDA0OEZCRDYzRThDMzBCMzA1QkYzNkJENzY0M0I5MTQ0OEVGMjIwNkU4QTBDQTg0QTE0MDc4OUE5OUIwNDIzQTBBMjUzM0VBMDc5Q0E3RTA0OTg0M0U2OUU1RkEyQzI1QTE2MzgxOTExMENFQzFBMzBBQ0JCQjNBNDIyQTQwRDgKICAgIHk6IDAxMEM5QzY0QTBFMERCNjA1MkRCQzU2NDY2ODdEMDZERUNFNUU5RTA3MDMxNTNFRkU5Q0I4MTZGRTAyNUU4NTM1NEQzQzVGODY5RDZEQjNGNEMwQzAxQjVGOTc5MTlBNUU3MkNFRUJFMDMwNDJFNUFBOTkxMTI2OTFDRkZDMjcyNDgyOAogIC0KICAgIGs6IDExMjIzMzQ0NTU2Njc3ODg5OTExMjIzMzQ0NTU2Njc3ODg5OQogICAgeDogMDE3RTEzNzBEMzlDOUM2MzkyNURBRUVBQzU3MUUyMUNBQUY2MEJEMTY5MTkxQkFFRTgzNTJFMEY1NDY3NDQ0M0IyOTc4NjI0MzU2NEFCQjcwNUY2RkMwRkU1RkM1RDNGOTgwODZCNjdDQTBCRTdBQzhBOURFQzQyMUQ5RjFCQzZCMzdGCiAgICB5OiAwMUNENTU5NjA1RUFEMTlGQkQ5OUU4MzYwMEE2QTgxQTA0ODlFNkYyMDMwNkVFMDc4OUFFMDBDRTE2QTZFRkVBMkY0MkY3NTM0MTg2Q0YxQzYwREYyMzBCRDlCQ0Y4Q0I5NUU1MDI4QUQ5ODIwQjJCMUMwRTE1NTk3RUU1NEM0NjE0QTYKICAtCiAgICBrOiAxNzY5ODA1Mjc3OTc1MTYzMDM1MjUzNzc1OTMwODQyMzY3MTI5MDkzNzQxNzg2NzI1Mzc2Nzg2MDA3MzQ5MzMyNjUzMzIzODEyNjU2NjU4MjkxNDEzNDM1MDMzMjU3Njc3NTc5MDk1MzY2NjMyNTIxNDQ4ODU0MTQxMjc1OTI2MTQ0MTg3Mjk0NDk5ODYzOTMzNDAzNjMzMDI1MDIzCiAgICB4OiAwMEI0NUNCODQ2NTFDOUQ0RjA4ODU4Qjg2N0Y4MkQ4MTZFODRFOTRGRTRDQUUzREE1RjY1RTQyMEIwODM5OEQwQzVCRjAxOTI1M0E2QzI2RDIwNjcxQkRFRjBCOEU2QzFEMzQ4QTRCMDczNDY4N0Y3M0FDNkE0Q0JCMkUwODVDNjhCM0YKICAgIHk6IDAxQzg0OTQyQkJGNTM4OTAzMDYyMTcwQTRCQThCMzQxMEQzODU3MTlCQTIwMzdEMjlDQTUyNDhCRkNCQzg0NzgyMjBGRUM3OTI0NERDRDQ1RDMxODg1QTE3NjRERUU0NzlDRTIwQjEyQ0VBQjYyRjkwMDFDN0FBNDI4MkNFNEJFN0Y1NgogIC0KICAgIGs6IDEwNDc0ODQwMDMzNzE1NzQ2MjMxNjI2MjYyNzkyOTEzMjU5NjMxNzI0Mzc5MDUwNjc5ODEzMzI2NzY5ODIxODcwNzUyODc1MDI5MjY4Mjg4OTIyMTQxNDMxMDE1NTkwNzk2MzgyNDcxMjExNDkxNjU1MjQ0MDE2MDg4MDU1MDY2NjA0Mzk5NzAzMDY2MTA0MDcyMTg4NzIzOQogICAgeDogMDFDQ0VGNENEQTEwOENFQkU2NTY4ODIwQjU0QTNDQTNBMzk5N0U0RUYwRURBNkMzNTBFN0VEM0RCQjE4NjFFREQ4MDE4MUM2NTBDRUJFNTQ0MEZFQkE4ODBGOUM4QTdBODZGOEI4MjY1OTc5NEY2RjVCODhFNTAxRTVERDg0RTY1RDdFCiAgICB5OiAwMTAyNjU2NUY4QjE5NUQwM0MzRjYxMzlDM0E2M0VBQTFDMjlGNzA5MEFCMkE4Rjc1MDI3OTM5RUMwNTEwOTAzNUYxQjM4RTZDNTA4RTBDMTRDRTUzQUI3RTJEQTMzQUEyODE0MEVEQkYzOTY0ODYyRkIxNTcxMTk1MTc0NTRFNjBGMDcKICAtCiAgICBrOiA2NzAzOTAzODY1MDc4MzQ1ODg4MTQxMzgxNjUxNDMwMTY4MDM5NDk2NjY0MDc3MzUwOTY1MDU0Mjg4MTMzMTI2NTQ5MzA3MDU4NzQxNzg4NjcxMTQ4MTk3NDI5Nzc3MzQzOTM2NDY2MTI3NTc1OTM4MDMxNzg2MTQ3NDA5NDcyNjI3NDc5NzAyNDY5ODg0MjE0NTA5NTY4MDAwCiAgICB4OiAwMEMxMDAyREMyODg0RUVEQURCM0Y5QjQ2OEJCRUJENTU5ODA3OTk4NTJDNTA2RDM3MjcxRkZDRDAwNjkxOURCM0E5NkRGOEZFOTFFRjZFRDRCOTA4MUIxODA5RThGMkMyQjI4QUY1RkNCRjUyNDE0N0M3M0NCMEI5MTNENkZBQjA5OTUKICAgIHk6IDAxNjE0RThBNjJDODI5M0REMkFBNkVGMjdEMzA5NzRBNEZEMTg1MDE5RkE4RUY0Rjk4MkRBNDg2OThDRUNGNzA2NTgxRjY5RUU5RUQ2N0E5QzIzMUVDOUQwOTM0RDBGNjc0NjQ2MTUzMjczQkNCQjM0NUU5MjNCMUVDMTM4NkExQTRBRAogIC0KICAgIGs6IDE2NzU5MjU2NDM2ODIzOTUzMDU0MDQ1MTcxNjU2NDM1NjIyNTE4ODAwMjY5NTg3ODA4OTY1MzE2OTg4NTY3MzcwMjQxNzk4ODAzNDMzMzk4NzgzMzYzODI0MTIwNTAyNjM0MzE5NDI5NzQ5Mzk2NDY2ODM0ODA5MDY0MzQ2MzI5NjM0NzgyNTc2Mzk3NTczNDExMDI0MzYzNTIKICAgIHg6IDAxMEVEM0UwODVFQ0RFMUU2Njg3NDI4NkI1RDU2NDJCOUQzNzg1M0EwMjZBMEEwMjVDN0I4NDkzNkUyRUNFRUM1RjM0MkUxNEM4MEM3OUNDRjgxNEQ1QUQwODVDNTMwM0YyODIzMjUxRjJCOTI3NkY4OEM5RDdBNDNFMzg3RUJEODdBQwogICAgeTogMDFCRTM5OUE3NjY2QjI5RTc5QkJGM0QyNzc1MzFBOTdDRTA1Q0FDMEI0OUJFQ0U0NzgxRTdBRUUwRDZFODBGRUU4ODNDNzZFOUYwODQ1M0RDMUFERTRFNDkzMDBGM0Q1NkZFRTZBMTUxMERBMUIxRjEyRUVBQTM5QTA1QUEwNTA4MTE5CiAgLQogICAgazogMTI3ODUxMzMzODIxNDk0MTUyMjE0MDI0OTUyMDI1ODY3MDE3OTg2MjA2OTYxNjk0NDY3NzI1OTkwMzgyMzU3MjE4NjIzMzg2OTIxOTAxNTYxNjM5NTE1NTg5NjM4NTY5NTkwNTkyMzIzODE2MDI4NjQ3NDM5MjQ0Mjc0NTE3ODY3Njk1MTUxNTQzOTY4MTA3MDY5NDMKICAgIHg6IDAxMzA3MEEyOUIwNTlEMzE3QUYzNzA4OUU0MEZDQjEzNTg2OEY1MjI5MEVGRjNFOUYzRTMyQ0RBRENBMThFQTIzNEQ4NTg5QzY2NUE0QjhFM0QwNzE0REUwMDRBNDE5REVBNzA5MUEzQkJBOTcyNjNDNDM4RkU5NDEzQUE1OThGRDRBNQogICAgeTogMDAyMzhBMjdGRDlFNUU3MzI0QzhCNTM4RUYyRTMzNEI3MUFDMjYxMUE5NUY0MkY0RjI1NDREOEM0QTY1RDJBMzJBOEJBRkExNUVGRDRGQzJCRDhBQjJCMEM1MUY2NUI2ODA4Nzk1ODlGNEQ1RkU4QTg0Q0VCMTdBMkU4RDM1ODdGMDExCiAgLQogICAgazogMjE0NTI0ODc1ODMyMjQ5MjU1ODcyMjA2ODU1NDk1NzM0NDI2ODg5NDc3NTI5MzM2MjYxNjU1MjU1NDkyNDI1MjczMzIyNzI3ODYxMzQxODI1Njc3NzIyOTQ3Mzc1NDA2NzExNjc2MzcyMzM1MzE0MDQzMDcxNjAwOTM0OTQxNjE1MTg1NDE4NTQwMzIwMjMzMTg0NDg5NjM2MzUxCiAgICB4OiAwMUEzRDg4Nzk5ODc4RUM3NEU2NkZGMUFEOEM3REZBOUE5QjQ0NDVBMTdGMDgxMEZGODE4OUREMjdBRTNCNkM1ODBEMzUyNDc2REJEQUVCMDhEN0RBMERFMzg2NkY3QzdGREJFQkI4NDE4RTE5NzEwRjFGN0FGQTg4QzIyMjgwQjE0MDQKICAgIHk6IDAwQjM5NzAzRDIwNTNFQzdCODgxMkJERkVCRkQ4MUI0Q0I3NkYyNDVGRTUzNUExRjFFNDY4MDFDMzVERTAzQzE1MDYzQTk5QTIwMzk4MTUyOUMxNDYxMzI4NjNDQTBFNjg1NDREMEYwQTYzOEQ4QTI4NTlEODJCNEREMjY2RjI3QzNBRQogIC0KICAgIGs6IDUxMTQwNDg2Mjc1NTY3ODU5MTMxMTM5MDc3ODkwODM1NTI2ODg0NjQ4NDYxODU3ODIzMDg4MzQ4NjUxMTUzODQwNTA4Mjg3NjIxMzY2ODU0NTA2ODMxMjQ0NzQ2NTMxMjcyMjQ2NjIwMjk1MTIzMTA0MjY5NTY1ODY3MDU1OTQ5Mzc4MjY2Mzk1NjA0NzY4Nzg0Mzk5CiAgICB4OiAwMUQxNkI0MzY1REVGRTZGRDM1NkRDMUYzMTcyN0FGMkEzMkM3RTg2QzVBRTg3RUQyOTUwQTA4QkM4NjUzRjIwM0M3Rjc4NjBFODBGOTVBQTI3QzkzRUE3NkU4Q0QwOTQxMjdCMTVFRDQyQ0M1Rjk2REMwQTBGOUExQzFFMzFEMEQ1MjYKICAgIHk6IDAwNkUzNzEwQTBGOTM2NkUwQkI4QTE0RkZFOEVCQzI3MjJFRUNGNEExMjNFQzlCQTk4RENDQ0EzMzVENkZBRkQyODlEQzY5RkQ5MDkwM0M5QUM5ODJGRUI0NkRGOTNGMDNBN0M4Qzk1NDlEMzJDMUMzODZEMTdGMzczNDBFNjM4MjJBOAogIC0KICAgIGs6IDY2NTE1Mjk3MTYwMjUyMDY4ODEwMzUyNzk5NTI4ODE1MjA2Mjc4NDExNTIyNDcyMTI3ODQ1MjA5MTQ0MjUwMzkzMTI2MDYxMjAxOTg4NzkwODA4Mzk2NDMzMTEzNDcxNjkwMTkyNDkwODAxOTgyMzk0MDgzNTY1NjM0MTM0NDc0MDIyNzA0NDU0NjIxMDIwNjg1OTIzNzc4NDMKICAgIHg6IDAxQjEyMjBGNjdDOTg1RTlGQzlDNTg4QzBDODZCQjE2RTZGRTRDQzExRTE2OEE5OEQ3MDFBRTQ2NzA3MjRCM0QwMzBFRDk5NjVGQURGNDIwN0M3QTFCRTlCRTBGNDBERUYyQkJGRkYwQzdFQUJDQjVCNDI1MjZDRTFEM0NBQTQ2OEY1MgogICAgeTogMDA2Q0RBRDI4NjBGNkQyQzM3MTU5QTVBODY2RDExNjA1RjJFN0Q4NzQzMERDRkU2RTY4MTZBQjY0MjNDRDkwMDNDQTZGMjUyN0I5QzJBMjQ4M0M1NDFENDU2Qzk2M0QxOEEwRDJBNDZFMTU4Q0IyQTQ0QzBCRjQyRDU2Mjg4MUZCNzQ4CiAgLQogICAgazogMzIyNDU1MTgyNDYxMzIzMjIzMjUzNzY4MDA3Nzk0NjgxODY2MDE1NjgzNTI4ODc3ODA4NzM0NDgwNTM3MDM5NzgxMTM3OTczMTYzMTY3MTI1NDg1Mzg0NjgyNjY4MjI3MzY3Nzg3MDIxNDc3ODQ2MjIzNzE3MTM2NTE0MDM5MDE4Mzc3MDIyNjg1MzMyOTM2Mzk2MTMyNDI0MTkxOQogICAgeDogMDBGMjVFNTQ1MjEzQzhDMDc0QkUzOEEwNjEyRUE5QjY2MzM2QjE0QTg3NDM3MjU0OEQ5NzE2MzkyREZBMzFDRDBEMTNFOTRGODZDRDQ4QjhENDNCODBCNTI5OTE0NEUwMTI0NUM4NzNCMzlGNkFDNkM0RkIzOTc3NDZBRjAzNEFENjdDCiAgICB5OiAwMTczM0FCQjIxMTQ3Q0MyN0UzNUY0MUZBRjQwMjkwQUZEMUVFQjIyMUQ5ODNGRkFCQkQ4OEU1REM4Nzc2NDUwQTQwOUVBQ0RDMUJDQTJCOUY1MTcyODlDNjg2NDVCQjk2NzgxODA4RkVBRTQyNTczQzJCQjI4OUYxNkUyQUVDRUNFMTcKICAtCiAgICBrOiAxMjQ4NjYxMzEyODQ0Mjg4NTQzMDM4MDg3NDA0Mzk5MTI4NTA4MDI1NDkxNzQ4ODM5NjI4NDk1MzgxNTE0OTI1MTMxNTQxMjYwMDYzNDU4MTUzOTA2NjY2MzA5MjI5NzYxMjA0MDY2OTk3ODAxNzYyMzU4Nzc1Mjg0NTQwOTY1MzE2NzI3NzAyMTg2NDEzMjYwOAogICAgeDogMDE3MkNEMjJDQkUwNjM0QjZCRkVFMjRCQjFEMzUwRjM4NEE5NDVFRDYxOEVDQUQ0OEFBREM2QzFCQzBEQ0MxMDdGMEZGRTlGRTE0REM5MjlGOTAxNTNGMzkwQzI1QkU1RDNBNzNBNTZGOUFDQ0IwQzcyQzc2ODc1Mzg2OTczMkQwREM0CiAgICB5OiAwMEQyNDlDRkI1NzBEQTRDQzQ4RkI1NDI2QTkyOEI0M0Q3OTIyRjc4NzM3M0I2MTgyNDA4RkJDNzE3MDZFNzUyN0U4NDE0Qzc5MTY3RjNDOTk5RkY1OERFMzUyRDIzOEYxRkU3MTY4QzY1OEQzMzhGNzI2OTZGMkY4ODlBOTdERTIzQzUKICAtCiAgICBrOiA2ODY0Nzk3NjYwMTMwNjA5NzE0OTgxOTAwNzk5MDgxMzkzMjE3MjY5NDM1MzAwMTQzMzA1NDA5Mzk0NDYzNDU5MTg1NTQzMTgzMzk3NjU1Mzk0MjQ1MDU3NzQ2MzMzMjE3MTk3NTMyOTYzOTk2MzcxMzYzMzIxMTEzODY0NzY4NjEyNDQwMzgwMzQwMzcyODA4ODkyNzA3MDA1NDI5CiAgICB4OiAwMThCREQ3RjFCODg5NTk4QTQ2NTNERUVBRTM5Q0M2RjhDQzJCRDc2N0MyQUIwRDkzRkIxMkU5NjhGQkVEMzQyQjUxNzA5NTA2MzM5Q0IxMDQ5Q0IxMURENDhCOUJEQjNDRDVDQUQ3OTJFNDNCNzRFMTZEOEUyNjAzQkZCMTFCMDM0NEYKICAgIHk6IDAxM0E1NTI0MTlDMDk3MzVBNDk0OTZGN0Q2OTZBNjQwRjUwNzYxMTgwQUQ0QkVGNDZCQkJBQjkzQUFGNkFEMkNFRURGQjI1QzQyMjIzOTJCMTUxODEyMDUxM0VGQ0YyNTcxMDdDODMzNEREMTExNjMwMzZCMjJDRDc4MDEyRjY2RjA2QgogIC0KICAgIGs6IDY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0MzAKICAgIHg6IDAwOTk4RENDRTQ4NjQxOUMzNDg3QzBGOTQ4QzJENUExQTA3MjQ1Qjc3RTA3NTVERjU0N0VGRkYwQUNEQjM3OTBFN0YxRkEzQjMwOTYzNjI2Njk2NzkyMzI1NTdEN0E0NTk3MERGRUNGNDMxRTcyNUJCREU0NzhGRjBCMjQxOEQ2QTE5QgogICAgeTogMDBDODJBMjVGOUQ5NUZERTEyQTMzQzZCREI2OEFDQTREQkEyOTgyRDc1MTFENDg0MzBCNTMzQUYxMTFDOUFCQTg4RDg4QzUyNjlDMDBEMTQ3MzA2NEYxM0M2NjZFOUNFM0M4ODBBNUIyNzYxNTYwNDAxQkI1NkY2RTU5NkE0MDJGQThBCiAgLQogICAgazogNjg2NDc5NzY2MDEzMDYwOTcxNDk4MTkwMDc5OTA4MTM5MzIxNzI2OTQzNTMwMDE0MzMwNTQwOTM5NDQ2MzQ1OTE4NTU0MzE4MzM5NzY1NTM5NDI0NTA1Nzc0NjMzMzIxNzE5NzUzMjk2Mzk5NjM3MTM2MzMyMTExMzg2NDc2ODYxMjQ0MDM4MDM0MDM3MjgwODg5MjcwNzAwNTQzMQogICAgeDogMDFCQzMzNDI1RTcyQTEyNzc5RUFDQjJFRENDNUI2M0QxMjgxRjdFODZEQkM3QkY5OUE3QUJEMENGRTM2N0RFNDY2NkQ2RURCQjg1MjVCRkZFNTIyMkYwNzAyQzMwOTZERUMwODg0Q0U1NzJGNUExNUM0MjNGREY0NEQwMUREOTlDNjFECiAgICB5OiAwMEYyRjkxNjY2NzdBNDlDQUNBMjFDMThCMkNDMjYxOUMyRkRCMDRGODMxRjJFNjkwREFBRDM3MUI1RkY1MzdCM0ZCQkRDQjUxNERGRTA4NTZFQ0M2RUEyRTRCNEJBREY2NDYyNTg2MDFFQTRFNjA3QjAyRUNBMjdCRTFEMjcwNjU3OTUKICAtCiAgICBrOiA2ODY0Nzk3NjYwMTMwNjA5NzE0OTgxOTAwNzk5MDgxMzkzMjE3MjY5NDM1MzAwMTQzMzA1NDA5Mzk0NDYzNDU5MTg1NTQzMTgzMzk3NjU1Mzk0MjQ1MDU3NzQ2MzMzMjE3MTk3NTMyOTYzOTk2MzcxMzYzMzIxMTEzODY0NzY4NjEyNDQwMzgwMzQwMzcyODA4ODkyNzA3MDA1NDMyCiAgICB4OiAwMUIwMEREQjcwN0YxMzBFREExM0EwQjg3NDY0NTkyMzkwNkE5OUVFOUUyNjlGQTJCM0I0RDY2NTI0RjI2OTI1MDg1ODc2MEE2OUU2NzRGRTAyODdERjRFNzk5QjU2ODEzODBGRjhDMzA0MkFGMEQxQTQxMDc2RjgxN0E4NTMxMTBBRTAKICAgIHk6IDAxN0E5N0MwRTI4MjRFOUE4OTI0M0VFRTJCMUI1MTIyMkVGOTQ4NjZBQ0IzMDk2NkVGNTY3Mjk3NTNENERENUVDREMyMDYyNUE5QjEwOTIyRjQwRjJEMDk4QTgwRTk1MjBCREYxOTZGQUE2QjNENDhBQTBBQ0E0NjM0ODM4RjE5QjlCOAogIC0KICAgIGs6IDY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0MzMKICAgIHg6IDAxRDE3RDEwRDhBODlDOEFEMDVEREE5N0RBMjZBQzc0M0IwQjJBODdGNjYxOTJGRDNGM0RENjMyRjhEMjBCMTg4QTUyOTQzRkYxODg2MUNBMDBBMEU1OTY1REE3OTg1NjMwREYwREJGNUM4MDA3RENEQzUzM0E2QzUwOEY4MUE4NDAyRgogICAgeTogMDE4NUM4Q0JDM0E3RDI4OEZGRTAzOEVCNEU3MkMyQzE5NjhERUNDQTFCM0M0N0ZGMkFGMTM4MzVDRjM2QjQ5NDdEM0UzRTdEMUVDNjcyNEFCODU1RjRDRjhBNTM2MjY2NzdBRDYxQ0ZGQjJENzJFNzlDQ0NBRDFEOEQwNzY0MzhDNTQxCiAgLQogICAgazogNjg2NDc5NzY2MDEzMDYwOTcxNDk4MTkwMDc5OTA4MTM5MzIxNzI2OTQzNTMwMDE0MzMwNTQwOTM5NDQ2MzQ1OTE4NTU0MzE4MzM5NzY1NTM5NDI0NTA1Nzc0NjMzMzIxNzE5NzUzMjk2Mzk5NjM3MTM2MzMyMTExMzg2NDc2ODYxMjQ0MDM4MDM0MDM3MjgwODg5MjcwNzAwNTQzNAogICAgeDogMDA2QjZBRDg5QUJDQjkyNDY1RjA0MTU1OEZDNTQ2RDQzMDBGQjhGQkNDMzBCNDBBMDg1MkQ2OTdCNTMyREYxMjhFMTFCOTFDQ0UyN0RCRDAwRkZFNzg3NUJEMUM4RkMwMzMxRDlCOEQ5Njk4MUUzRjkyQkRFOUFGRTMzN0JDQjhEQjU1CiAgICB5OiAwMDRCOTcyNUQ4RUE4RUM2RTI5NTgzMTlCMkRDQ0MxMjQwOUMyMEZCNjk1NjQ1MkRGMzQ1QjQ5REVGOTY2OEI3QTEyQTgxNkY5RDM3NjZCOEY1N0ZERUI3MUREQ0QzNjkzNjZEQjkwMjZGMzNCQjk1NDIyNkE5Q0JDQjdGNUVCOEFCOUEKICAtCiAgICBrOiA2ODY0Nzk3NjYwMTMwNjA5NzE0OTgxOTAwNzk5MDgxMzkzMjE3MjY5NDM1MzAwMTQzMzA1NDA5Mzk0NDYzNDU5MTg1NTQzMTgzMzk3NjU1Mzk0MjQ1MDU3NzQ2MzMzMjE3MTk3NTMyOTYzOTk2MzcxMzYzMzIxMTEzODY0NzY4NjEyNDQwMzgwMzQwMzcyODA4ODkyNzA3MDA1NDM1CiAgICB4OiAwMTg3NUJDN0RDNTUxQjFCNjVBOUUxQjhDQ0ZBQUY4NERFRDE5NThCNDAxNDk0MTE2QTJGRDRGQjBCQUJFMEIzMTk5OTc0RkMwNkM4Qjg5NzIyMkQ3OURGM0U0QjdCQzc0NEFBNjc2N0Y2QjgxMkVGQkY1RDJDOUU2ODJERDM0MzJENzQKICAgIHk6IDAxQTM1QjZEQ0E4QTI1MzRBNDJEMjk5RDZGNDQ1NDRCNDIwNDdCOEZFREQ0NzFBRTdEOTVGN0I4MzE2NDc5MjgxMjlEMkY4ODdFNEU0QjBDQTdCM0VFMTc2NDBFMkVDQzIzRjJBNDk2RjBBQzU3ODM3QjQxQkU5OTYwN0FEOEZGMkFCNQogIC0KICAgIGs6IDY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0MzYKICAgIHg6IDAwN0UzRTk4Rjk4NEMzOTZBRDlDRDc4NjVEMkI0OTI0ODYxQTkzRjczNkNERTFCNEMyMzg0RUVERDJCRUFGNUI4NjYxMzJDNDU5MDhFMDNDOTk2QTM1NTBBNUU3OUFCODhFRTk0QkVDM0IwMEFCMzhFRkY4MTg4Nzg0OEQzMkZCQ0RBNwogICAgeTogMDBGNzExQTcxNDkyODdFMDEyNTZFNUU2RDkyNTVDMTJBNUY3MzEyQUY1Qzc5MkFCREUzOTYzODU5ODUxQTNFMURFRDUzRTQyQTJBN0M3NDM4OUMwRDkyMDIyQ0FFMzQwNDQzQzlFNjYxNTUwNkVFODE2MDhENkU1RkUwNEZERDU4RTM2CiAgLQogICAgazogNjg2NDc5NzY2MDEzMDYwOTcxNDk4MTkwMDc5OTA4MTM5MzIxNzI2OTQzNTMwMDE0MzMwNTQwOTM5NDQ2MzQ1OTE4NTU0MzE4MzM5NzY1NTM5NDI0NTA1Nzc0NjMzMzIxNzE5NzUzMjk2Mzk5NjM3MTM2MzMyMTExMzg2NDc2ODYxMjQ0MDM4MDM0MDM3MjgwODg5MjcwNzAwNTQzNwogICAgeDogMDFDMEQ5RENFQzkzRjgyMjFDNURFNEZBRTk3NDlDN0ZERTFFODE4NzQxNTc5NTg0NTdCNjEwN0NGN0E1OTY3NzEzQTY0NEU5MEI3QzNGQjgxQjMxNDc3RkVFOUE2MEU5MzgwMTM3NzRDNzVDNTMwOTI4QjE3QkU2OTU3MUJGODQyRDhDCiAgICB5OiAwMEJGQjc0QTZCOTVCNkQ4M0YwMUMzMUUyRUZDNTk3RDM1Qjg5QzAxOUE1NDhFQjZCMjVCQTFCRkI1NDA5NUU4M0Y2ODI5MkU3N0JDMjc5MDMyNDkzM0VGNTkwNkFFNDY0OUNGNzdCNDU4REREQjBBNTE5Mzg2MTg0RTVDRDdFNEU4MEYKICAtCiAgICBrOiA2ODY0Nzk3NjYwMTMwNjA5NzE0OTgxOTAwNzk5MDgxMzkzMjE3MjY5NDM1MzAwMTQzMzA1NDA5Mzk0NDYzNDU5MTg1NTQzMTgzMzk3NjU1Mzk0MjQ1MDU3NzQ2MzMzMjE3MTk3NTMyOTYzOTk2MzcxMzYzMzIxMTEzODY0NzY4NjEyNDQwMzgwMzQwMzcyODA4ODkyNzA3MDA1NDM4CiAgICB4OiAwMDhBNzU4NDEyNTlGREVERkY1NDZGMUEzOTU3M0I0MzE1Q0ZFRDVEQzdFRDdDMTc4NDk1NDNFRjJDNTRGMjk5MTY1MkYzREJDNTMzMjY2M0RBMUJEMTlCMUFFQkUzMTkxMDg1MDE1QzAyNEZBNEM5QTkwMkVDQzBFMDJEREEwQ0RCOUEKICAgIHk6IDAxNjkwNENGQzAzNDQ1REVENjdCNjJGMzU3ODhGQUIwNERENkM1MjJBOTlERUY0MkZCNkMxMkQxNkEyQjFGNDY0N0Q0RTQzNzU2RjE3NEJENUI1NEM3NkRDQ0U2RUI1NkFDQzkyMzUzN0YxQzBCN0U2NEEyQTc3OEIwNkQzMUI3MzdGNwogIC0KICAgIGs6IDY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0MzkKICAgIHg6IDAxOTBFQjhGMjJCREE2MUYyODFERkNGRTdCQjY3MjFFQzRDRDkwMUQ4NzlBQzA5QUM3QzM0QTkyNDZCMTFBREE4OTEwQTJDN0MxNzhGQ0MyNjMyOTlEQUE0REE5ODQyMDkzRjM3QzJFNDExRjFBOEU4MTlBODdGRjA5QTA0RjJGMzMyMAogICAgeTogMDAxNEEyNjk0N0I2RTlFQjQ1NjI0NTE1NEM0RjM1RDQ1ODlGM0QxMTRERUJCREFFNERGNDU2ODAyODc1OUQxMDlEMkQ0MEFDQjYyQkIyNjc5QjQ0QUM5MDlFOUMyM0E4MTQxMDBDOTc2OUM2OEM2MDU1RThENkFCNDM2N0VDQTEzOEE2CiAgLQogICAgazogNjg2NDc5NzY2MDEzMDYwOTcxNDk4MTkwMDc5OTA4MTM5MzIxNzI2OTQzNTMwMDE0MzMwNTQwOTM5NDQ2MzQ1OTE4NTU0MzE4MzM5NzY1NTM5NDI0NTA1Nzc0NjMzMzIxNzE5NzUzMjk2Mzk5NjM3MTM2MzMyMTExMzg2NDc2ODYxMjQ0MDM4MDM0MDM3MjgwODg5MjcwNzAwNTQ0MAogICAgeDogMDE1ODUzODlFMzU5RTFFMjE4MjZBMkY1QkYxNTcxNTZENDg4RUQzNDU0MUI5ODg3NDY5OTJDNEFCMTQ1QjhDNkI2NjU3NDI5RTEzOTYxMzREQTM1RjNDNTU2REY3MjVBMzE4RjRGNTBCQUJEODVDRDI4NjYxRjQ1NjI3OTY3Q0JFMjA3CiAgICB5OiAwMUQ1RDE5RTczNjU3NTEyMEM2MEY0QUFBQTg1RDg1MTZDNzFDRjc3NTlBQjExRTMxNDQ5MzdEQTQ1RDlDMjI0QkI5MUYyOTYxQThBOUZBODUzN0JGMDBBOTEzMEI1NDAyNzgyOEM5M0Q1MTZENzc3RjBDQkM1NUYxNTc5NDY1MkQ1QjEKICAtCiAgICBrOiA2ODY0Nzk3NjYwMTMwNjA5NzE0OTgxOTAwNzk5MDgxMzkzMjE3MjY5NDM1MzAwMTQzMzA1NDA5Mzk0NDYzNDU5MTg1NTQzMTgzMzk3NjU1Mzk0MjQ1MDU3NzQ2MzMzMjE3MTk3NTMyOTYzOTk2MzcxMzYzMzIxMTEzODY0NzY4NjEyNDQwMzgwMzQwMzcyODA4ODkyNzA3MDA1NDQxCiAgICB4OiAwMDA4MjJDNDBGQjYzMDFGNzI2MkE4MzQ4Mzk2QjAxMEUyNUJENEUyOUQ4QTlCMDAzRTBBOEI4QTNCMDVGODI2Mjk4RjVCRkVBNUI4NTc5RjQ5RjA4QjU5OEMxQkM4RDc5RTFBQjU2Mjg5QjVBNkY0MDQwNTg2RjlFQTU0QUE3OENFNjgKICAgIHk6IDAwOUNDRTZFRTJBQUJEMDNCN0RGQjcwMjU0OTE4NzdBQzQ2NUJCMDcxMjE2MUQzRjhFQTRBRjdDMjE5RUY5ODg1NzBFNzYxNjNGNTVBNkVFNEI0MDBGNDVGMjBGOUEzQTg3OTY2MEM0NTZCRkY2QjhFQ0FDNzUyOUJEMEVFMEU4N0ZFMwogIC0KICAgIGs6IDY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0NDIKICAgIHg6IDAwNTZENUQxRDk5RDVCN0Y2MzQ2RUVCNjVGREEwQjA3M0EwQzVGMjJFMEU4RjU0ODMyMjhGMDE4RDJDMkY3MTE0QzVEOEMzMDhEMEFCRkM2OThEOEM5QTZERjMwRENFM0JCQzQ2Rjk1M0Y1MEZEQzI2MTlBMDFDRUFEODgyODE2RUNENAogICAgeTogMDFDMkQyRTQ4MjY0NTU1RDVFRUYyRTI3Q0U4NUM2Mjk3Qjg3NEEzQTdEMkZEN0RCMEYyMjhFMjQyNjc1RDkzNDIxQUE5NDJGMEQ2QzMyMTM2MUQ0NkFEQzVDQkE2RTMxRTVBMDYxODk4RUQ1QTIyMTAzODRBMzk0NzQzNkZBREFEQUU0CiAgLQogICAgazogNjg2NDc5NzY2MDEzMDYwOTcxNDk4MTkwMDc5OTA4MTM5MzIxNzI2OTQzNTMwMDE0MzMwNTQwOTM5NDQ2MzQ1OTE4NTU0MzE4MzM5NzY1NTM5NDI0NTA1Nzc0NjMzMzIxNzE5NzUzMjk2Mzk5NjM3MTM2MzMyMTExMzg2NDc2ODYxMjQ0MDM4MDM0MDM3MjgwODg5MjcwNzAwNTQ0MwogICAgeDogMDFFRTQ1NjlENkNEQjU5MjE5NTMyRUZGMzRGOTQ0ODBEMTk1NjIzRDMwOTc3RkQ3MUNGMzk4MTUwNkFERTRBQjAxNTI1RkJDQ0ExNjE1M0Y3Mzk0RTA3MjdBMjM5NTMxQkU4QzJGNjZFOTU2NTdGMzgwQUUyMzczMUJFREY3OTIwNkI5CiAgICB5OiAwMDIxRkRBQTUyRjMzOUIwQTc5NTFEMjJEOEZBQjkxQzRFRUVENTU0NDQ4QzI1QTU3RjcxOERCRjU2RDlERkU1NzU2OTM1NDhEMkYxQTk5QjczNjIwNjkzNjdCMjFEOEIwRERGQzIzODQ3NEFBMzVGMjUyMUUxNTMzMjg3QTcyQkIwRTgKICAtCiAgICBrOiA2ODY0Nzk3NjYwMTMwNjA5NzE0OTgxOTAwNzk5MDgxMzkzMjE3MjY5NDM1MzAwMTQzMzA1NDA5Mzk0NDYzNDU5MTg1NTQzMTgzMzk3NjU1Mzk0MjQ1MDU3NzQ2MzMzMjE3MTk3NTMyOTYzOTk2MzcxMzYzMzIxMTEzODY0NzY4NjEyNDQwMzgwMzQwMzcyODA4ODkyNzA3MDA1NDQ0CiAgICB4OiAwMDY1MkJGM0M1MjkyN0E0MzJDNzNEQkMzMzkxQzA0RUIwQkY3QTU5NkVGREI1M0YwRDI0Q0YwM0RBQjhGMTc3QUNFNDM4M0MwQzZENUUzMDE0MjM3MTEyRkVBRjEzN0U3OUEzMjlEN0UxRTZEODkzMTczOEQ1QUI1MDk2RUM4RjMwNzgKICAgIHk6IDAwQTQxOTEwRTQyMjk5RkUyOTEzNzVENDhDRUVCNTdFRUQ2RUUzMjcwMTcxNzhEMUZGQUUxMjI3RTgzNjVGQ0I4Rjc4NDQ5NzY4MzZGOEQzMEM4QkNFRUFCRkRFRTMwQTAwODYyRTBGRjhEQThDQUIwODA3RThDMzNDMTcyMTRGNkYzNAogIC0KICAgIGs6IDY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0NDUKICAgIHg6IDAwMzVCNURGNjRBRTJBQzIwNEMzNTRCNDgzNDg3QzkwNzBDREM2MUM4OTFDNUZGMzlBRkMwNkM1RDU1NTQxRDNDRUFDODY1OUUyNEFGRTNEMDc1MEU4Qjg4RTlGMDc4QUYwNjZBMUQ1MDI1QjA4RTVBNUUyRkJDODc0MTI4NzE5MDJGMwogICAgeTogMDE3REY2OTA3QkQ5RUQ4NjJENDk4QzFGRTg3MTRGNEI1NDQ5QUFERTUxMDkxOTFDRDFFNEE1MTlDMDFEMEU2NkY4MEQ4NjBEN0MxQUI0NUM3QUJGQUREQjA4QUY1NkE0N0ExMTQ0ODA1MTBGQjk2NjJFMjYxREUwQjgwM0NCOTFCMkYyCiAgLQogICAgazogNjg2NDc5NzY2MDEzMDYwOTcxNDk4MTkwMDc5OTA4MTM5MzIxNzI2OTQzNTMwMDE0MzMwNTQwOTM5NDQ2MzQ1OTE4NTU0MzE4MzM5NzY1NTM5NDI0NTA1Nzc0NjMzMzIxNzE5NzUzMjk2Mzk5NjM3MTM2MzMyMTExMzg2NDc2ODYxMjQ0MDM4MDM0MDM3MjgwODg5MjcwNzAwNTQ0NgogICAgeDogMDFBNzNEMzUyNDQzREUyOTE5NUREOTFENkE2NEI1OTU5NDc5QjUyQTZFNUIxMjNEOUFCOUU1QUQ3QTExMkQ3QThERDFBRDNGMTY0QTNBNDgzMjA1MURBNkJEMTZCNTlGRTIxQkFFQjQ5MDg2MkMzMkVBMDVBNTkxOUQyRURFMzdBRDdECiAgICB5OiAwMEMxNjRGQzQ2ODIwNTlEMjIyNjY4NjA3OTM5MzU0N0VCMEQwRUFBODA1N0Q1NjJGQ0U4MkQwNzU0RTA1Q0FBMzExM0QxRDIyQjMwNzIzQThBNEZEMkE1MzEyRTIxM0MzOEYzMEVGQTM2NDM2QzVBNkZCREEwQTc3MzVFMTE3OTNGMUEKICAtCiAgICBrOiA2ODY0Nzk3NjYwMTMwNjA5NzE0OTgxOTAwNzk5MDgxMzkzMjE3MjY5NDM1MzAwMTQzMzA1NDA5Mzk0NDYzNDU5MTg1NTQzMTgzMzk3NjU1Mzk0MjQ1MDU3NzQ2MzMzMjE3MTk3NTMyOTYzOTk2MzcxMzYzMzIxMTEzODY0NzY4NjEyNDQwMzgwMzQwMzcyODA4ODkyNzA3MDA1NDQ3CiAgICB4OiAwMDQzM0MyMTkwMjQyNzdFN0U2ODJGQ0IyODgxNDhDMjgyNzQ3NDAzMjc5QjFDQ0MwNjM1MkM2RTU1MDVENzY5QkU5N0IzQjIwNERBNkVGNTU1MDdBQTEwNEEzQTM1QzVBRjQxQ0YyRkEzNjRENjBGRDk2N0Y0M0UzOTMzQkE2RDc4M0QKICAgIHk6IDAxMEI0NDczMzgwNzkyNEQ5OEZGNTgwQzEzMTExMTJDMEY0QTM5NEFFRjgzQjI1Njg4QkY1NERFNUQ2NkY5M0JEMjQ0NEMxQzg4MjE2MERBRTA5NDZDNkM4MDU2NjVDREI3MEIxNTAzNDE2QTEyM0YwQjA4RTQxQ0E5Mjk5RTBCRTRGRAogIC0KICAgIGs6IDY4NjQ3OTc2NjAxMzA2MDk3MTQ5ODE5MDA3OTkwODEzOTMyMTcyNjk0MzUzMDAxNDMzMDU0MDkzOTQ0NjM0NTkxODU1NDMxODMzOTc2NTUzOTQyNDUwNTc3NDYzMzMyMTcxOTc1MzI5NjM5OTYzNzEzNjMzMjExMTM4NjQ3Njg2MTI0NDAzODAzNDAzNzI4MDg4OTI3MDcwMDU0NDgKICAgIHg6IDAwQzY4NThFMDZCNzA0MDRFOUNEOUUzRUNCNjYyMzk1QjQ0MjlDNjQ4MTM5MDUzRkI1MjFGODI4QUY2MDZCNEQzREJBQTE0QjVFNzdFRkU3NTkyOEZFMURDMTI3QTJGRkE4REUzMzQ4QjNDMTg1NkE0MjlCRjk3RTdFMzFDMkU1QkQ2NgogICAgeTogMDBFN0M2RDY5NTg3NjVDNDNGRkJBMzc1QTA0QkQzODJFNDI2NjcwQUJCQjZBODY0QkI5N0U4NTA0MkU4RDhDMTk5RDM2ODExOEQ2NkExMEJEOUJGM0FBRjQ2RkVDMDUyRjg5RUNBQzM4Rjc5NUQ4RDNEQkY3NzQxNkI4OTYwMkU5OUFGCmhtYWM6CiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiA1MjEKICAgIGtleTogMEZBRDA2REFBNjJCQTNCMjVEMkZCNDAxMzNEQTc1NzIwNURFNjdGNUJCMDAxOEZFRThDODZFMUI2OEM3RTc1Q0FBODk2RUIzMkYxRjQ3QzcwODU1ODM2QTZEMTZGQ0MxNDY2RjZEOEZCRUM2N0RCODlFQzBDMDhCMEU5OTZCODM1MzgKICAgIGs6IDA4OUMwNzFCNDE5RTFDMjgyMDk2MjMyMTc4NzI1ODQ2OTUxMTk1OEU4MDU4MkU5NUQ4Mzc4RTBDMkNDREIzQ0I0MkJFREU0MkY1MEUzRkEzQzcxRjVBNzY3MjQyODFEMzFEOUM4OUYwRjkxRkMxQkU0OTE4REIxQzAzQTU4MzhEMEY5CiAgICByOiAwMzQzQjZFQzQ1NzI4OTc1RUE1Q0JBNjY1OUJCQjYwNjJBNUZGODlFRUE1OEJFM0M4MEI2MTlGMzIyQzg3OTEwRkUwOTJGN0Q0NUJCMEY4RUVFMDFFRDNGMjBCQUJFQzA3OUQyMDJBRTY3N0IyNDNBQjQwQjU0MzFENDk3QzU1RDc1RAogICAgczogMEU3QjBFNjc1QTlCMjQ0MTNENDQ4QjhDQzExOUQyQkY3QjJEMkRGMDMyNzQxQzA5NjYzNEQ2RDY1RDBEQkUzRDU2OTQ2MjVGQjlFODEwNEQzQjg0MkMxQjBFMkQwQjk4QkVBMTkzNDFFODY3NkFFRjY2QUU0RUJBM0Q1NDc1RDVEMTYKICAtCiAgICBhbGdvOiBzaGEyMjQKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogNTIxCiAgICBrZXk6IDBGQUQwNkRBQTYyQkEzQjI1RDJGQjQwMTMzREE3NTcyMDVERTY3RjVCQjAwMThGRUU4Qzg2RTFCNjhDN0U3NUNBQTg5NkVCMzJGMUY0N0M3MDg1NTgzNkE2RDE2RkNDMTQ2NkY2RDhGQkVDNjdEQjg5RUMwQzA4QjBFOTk2QjgzNTM4CiAgICBrOiAxMjE0MTVFQzJDRDc3MjYzMzBBNjFGN0YzRkE1REUxNEJFOTQzNjAxOUM0REI4Q0I0MDQxRjNCNTRDRjMxQkUwNDkzRUUzRjQyN0ZCOTA2MzkzRDg5NUExOUM5NTIzRjNBMUQ1NEJCODcwMkJENEFBOUM5OURBQjI1OTdCOTIxMTNGMwogICAgcjogMTc3NjMzMUNGQ0RGOTI3RDY2NkUwMzJFMDBDRjc3NjE4N0JDOUZERDhFNjlEMERBQkI0MTA5RkZFMUI1RTJBMzA3MTVGNENDOTIzQTRBNUU5NEQyNTAzRTlBQ0ZFRDkyODU3QjdGMzFENzE1MkUwRjhDMDBDMTVGRjNEODdFMkVEMkUKICAgIHM6IDA1MENCNTI2NTQxN0ZFMjMyMEJCQjVBMTIyQjhFMUEzMkJENjk5MDg5ODUxMTI4RTM2MEU2MjBBMzBDN0UxN0JBNDFBNjY2QUYxMjZDRTEwMEU1Nzk5QjE1M0I2MDUyOEQ1MzAwRDA4NDg5Q0E5MTc4RkI2MTBBMjAwNkMyNTRCNDFGCiAgLQogICAgYWxnbzogc2hhMjU2CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDUyMQogICAga2V5OiAwRkFEMDZEQUE2MkJBM0IyNUQyRkI0MDEzM0RBNzU3MjA1REU2N0Y1QkIwMDE4RkVFOEM4NkUxQjY4QzdFNzVDQUE4OTZFQjMyRjFGNDdDNzA4NTU4MzZBNkQxNkZDQzE0NjZGNkQ4RkJFQzY3REI4OUVDMEMwOEIwRTk5NkI4MzUzOAogICAgazogMEVERjM4QUZDQUFFQ0FCNDM4MzM1OEIzNEQ2N0M5RjIyMTZDODM4MkFBRUE0NEEzREFENUZEQzlDMzI1NzU3NjE3OTNGRUYyNEVCMEZDMjc2REZDNEY2RTNFQzQ3Njc1MkYwNDNDRjAxNDE1Mzg3NDcwQkNCRDg2NzhFRDJDN0UxQTAKICAgIHI6IDE1MTFCQjRENjc1MTE0RkUyNjZGQzQzNzJCODc2ODJCQUVDQzAxRDNDQzYyQ0YyMzAzQzkyQjM1MjYwMTI2NTlEMTY4NzZFMjVDN0MxRTU3NjQ4RjIzQjczNTY0RDY3RjYxQzZGMTRENTI3RDU0OTcyODEwNDIxRTdEODc1ODlFMUE3CiAgICBzOiAwNEExNzExNDNBODMxNjNENkRGNDYwQUFGNjE1MjI2OTVGMjA3QTU4Qjk1QzA2NDREODdFNTJBQTFBMzQ3OTE2RTRGN0E3MjkzMEIxQkMwNkRCRTIyQ0UzRjU4MjY0QUZEMjM3MDRDQkI2M0IyOUI5MzFGN0RFNkM5RDk0OUE3RUNGQwogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiA1MjEKICAgIGtleTogMEZBRDA2REFBNjJCQTNCMjVEMkZCNDAxMzNEQTc1NzIwNURFNjdGNUJCMDAxOEZFRThDODZFMUI2OEM3RTc1Q0FBODk2RUIzMkYxRjQ3QzcwODU1ODM2QTZEMTZGQ0MxNDY2RjZEOEZCRUM2N0RCODlFQzBDMDhCMEU5OTZCODM1MzgKICAgIGs6IDE1NDZBMTA4QkMyM0ExNUQ2RjIxODcyRjdERUQ2NjFGQTg0MzFEREJEOTIyRDBEQ0RCNzdDQzg3OEM4NTUzRkZBRDA2NEM5NUE5MjBBNzUwQUM5MTM3RTUyNzM5MEQyRDkyRjE1M0U2NjE5Njk2NkVBNTU0RDlBREZDQjEwOUM0MjExCiAgICByOiAxRUE4NDJBMEUxN0QyREU0RjkyQzE1MzE1QzYzRERGNzI2ODVDMTgxOTVDMkJCOTVFNTcyQjlDNTEzNkNBNEI0QjU3NkFENzEyQTUyQkU5NzMwNjI3RDE2MDU0QkE0MENDMEI4RDNGRjAzNUIxMkFFNzUxNjgzOTdGNUQ1MEM2NzQ1MQogICAgczogMUYyMUEzQ0VFMDY2RTE5NjEwMjVGQjA0OEJENUZFMkI3OTI0RDBDRDc5N0JBQkUwQTgzQjY2RjFFMzVFRUFGNUZERTE0M0ZBODVEQzM5NEE3REVFNzY2NTIzMzkzNzg0NDg0QkRGM0UwMDExNEExQzg1N0NERTFBQTIwM0RCNjVENjEKICAtCiAgICBhbGdvOiBzaGE1MTIKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogNTIxCiAgICBrZXk6IDBGQUQwNkRBQTYyQkEzQjI1RDJGQjQwMTMzREE3NTcyMDVERTY3RjVCQjAwMThGRUU4Qzg2RTFCNjhDN0U3NUNBQTg5NkVCMzJGMUY0N0M3MDg1NTgzNkE2RDE2RkNDMTQ2NkY2RDhGQkVDNjdEQjg5RUMwQzA4QjBFOTk2QjgzNTM4CiAgICBrOiAxREFFMkVBMDcxRjgxMTBEQzI2ODgyRDRENUVBRTA2MjFBMzI1NkZDODg0N0ZCOTAyMkUyQjdEMjhFNkYxMDE5OEIxNTc0RkREMDNBOTA1M0MwOEExODU0QTE2OEFBNUE1NzQ3MEVDOTdERDVDRTA5MDEyNEVGNTJBMkY3RUNCRkZEMwogICAgcjogMEMzMjhGQUZDQkQ3OURENzc4NTAzNzBDNDYzMjVEOTg3Q0I1MjU1NjlGQjYzQzVEM0JDNTM5NTBFNkQ0QzVGMTc0RTI1QTFFRTkwMTdCNUQ0NTA2MDZBREQxNTJCNTM0OTMxRDdENEU4NDU1Q0M5MUY5QjE1QkYwNUVDMzZFMzc3RkEKICAgIHM6IDA2MTdDQ0U3Q0Y1MDY0ODA2QzQ2N0Y2NzhEM0I0MDgwRDZGMUNDNTBBRjI2Q0EyMDk0MTczMDgyODFCNjhBRjI4MjYyM0VBQTYzRTVCNUMwNzIzRDhCOEMzN0ZGMDc3N0IxQTIwRjhDQ0IxRENDQzQzOTk3RjFFRTBFNDREQTRBNjdBCiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogNTIxCiAgICBrZXk6IDBGQUQwNkRBQTYyQkEzQjI1RDJGQjQwMTMzREE3NTcyMDVERTY3RjVCQjAwMThGRUU4Qzg2RTFCNjhDN0U3NUNBQTg5NkVCMzJGMUY0N0M3MDg1NTgzNkE2RDE2RkNDMTQ2NkY2RDhGQkVDNjdEQjg5RUMwQzA4QjBFOTk2QjgzNTM4CiAgICBrOiAwQkI5RjJCRjRGRTEwMzhDQ0Y0REFCRDcxMzlBNTZGNkZEOEJCMTM4NjU2MUJEM0M2QTRGQzgxOEIyMERGNUREQkE4MDc5NUE5NDcxMDdBMUFCOUQxMkRBQTYxNUIxQURFNEY3QTlEQzA1RThFNjMxMTE1MEY0N0Y1QzU3Q0U4QjIyMgogICAgcjogMTNCQUQ5RjI5QUJFMjBERTM3RUJFQjgyM0MyNTJDQTBGNjMzNjEyODQwMTVBM0JGNDMwQTQ2QUFBODBCODdCMDY5M0YwNjk0QkQ4OEFGRTRFNjYxRkMzM0IwOTRDRDNCNzk2M0JFRDVBNzI3RUQ4QkQ2QTNBMjAyQUJFMDA5RDAzNjcKICAgIHM6IDFFOUJCODFGRjc5NDRDQTQwOUFEMTM4REJCRUUyMjhFMUFGQ0MwQzg5MEZDNzhFQzg2MDQ2MzlDQjBEQkRDOTBGNzE3QTk5RUFEOUQyNzI4NTVEMDAxNjJFRTk1Mjc1NjdERDZBOTJDQkQ2Mjk4MDVDMDQ0NTI4MkJCQzkxNjc5N0ZGCiAgLQogICAgYWxnbzogc2hhMjI0CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiA1MjEKICAgIGtleTogMEZBRDA2REFBNjJCQTNCMjVEMkZCNDAxMzNEQTc1NzIwNURFNjdGNUJCMDAxOEZFRThDODZFMUI2OEM3RTc1Q0FBODk2RUIzMkYxRjQ3QzcwODU1ODM2QTZEMTZGQ0MxNDY2RjZEOEZCRUM2N0RCODlFQzBDMDhCMEU5OTZCODM1MzgKICAgIGs6IDA0MEQwOUZDRjNDOEE1RjYyQ0Y0RkIyMjNDQkJCMkI5OTM3RjZCMDU3N0MyNzAyMEE5OTYwMkMyNUEwMTEzNjk4N0U0NTI5ODg3ODE0ODRFREJCQ0YxQzQ3RTU1NEU3RkM5MDFCQzMwODVFNTIwNkQ5RjYxOUNGRjA3RTczRDZGNzA2CiAgICByOiAxQzdFRDkwMkUxMjNFNjgxNTU0NjA2NUEyQzRBRjk3N0IyMkFBOEVBRERCNjhCMkMxMTEwRTdFQTQ0RDQyMDg2QkZFNEEzNEI2N0REQzBFMTdFOTY1MzZFMzU4MjE5QjIzQTcwNkM2QTZFMTZCQTc3QjY1RTFDNTk1RDQzQ0FFMTdGQgogICAgczogMTc3MzM2Njc2MzA0RkNCMzQzQ0UwMjhCMzhFN0I0RkJBNzZDMUMxQjI3N0RBMThDQUQyQTg0NzhCMkE5QTlGNUJFQzBGM0JBMDRGMzVEQjNFNDI2MzU2OUVDNkFBREU4QzkyNzQ2RTRDODJGODI5OUFFMUI4RjE3MzlGOEZENTE5QTQKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6IHRlc3QKICAgIHNpemU6IDUyMQogICAga2V5OiAwRkFEMDZEQUE2MkJBM0IyNUQyRkI0MDEzM0RBNzU3MjA1REU2N0Y1QkIwMDE4RkVFOEM4NkUxQjY4QzdFNzVDQUE4OTZFQjMyRjFGNDdDNzA4NTU4MzZBNkQxNkZDQzE0NjZGNkQ4RkJFQzY3REI4OUVDMEMwOEIwRTk5NkI4MzUzOAogICAgazogMDFERTc0OTU1RUZBQUJDNEM0RjE3RjhFODREODgxRDEzMTBCNTM5MkQ3NzAwMjc1RjgyRjE0NUM2MUU4NDM4NDFBRjA5MDM1QkY3QTYyMTBGNUE0MzFBNkE5RTgxQzkzMjMzNTRBOUU2OTEzNUQ0NEVCRDJGQ0FBNzczMUI5MDkyNTgKICAgIHI6IDAwRTg3MUM0QTE0Rjk5M0M2QzczNjk1MDE5MDBDNEJDMUU5QzdCMEI0QkE0NEUwNDg2OEIzMEI0MUQ4MDcxMDQyRUIyOEM0QzI1MDQxMUQwQ0UwOENEMTk3RTQxODhFQTQ4NzZGMjc5RjkwQjNEOEQ3NEEzQzc2RTZGMUU0NjU2QUE4CiAgICBzOiAwQ0Q1MkRCQUEzM0IwNjNDM0E2Q0Q4MDU4QTFGQjBBNDZBNDc1NEIwMzRGQ0M2NDQ3NjZDQTE0REE4Q0E1Q0E5RkRFMDBFODhDMUFENjBDQ0JBNzU5MDI1Mjk5MDc5RDdBNDI3RUMzQ0M1QjYxOUJGQkM4MjhFNzc2OUJDRDY5NEU4NgogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogNTIxCiAgICBrZXk6IDBGQUQwNkRBQTYyQkEzQjI1RDJGQjQwMTMzREE3NTcyMDVERTY3RjVCQjAwMThGRUU4Qzg2RTFCNjhDN0U3NUNBQTg5NkVCMzJGMUY0N0M3MDg1NTgzNkE2RDE2RkNDMTQ2NkY2RDhGQkVDNjdEQjg5RUMwQzA4QjBFOTk2QjgzNTM4CiAgICBrOiAxRjFGQzRBMzQ5QTdEQTlBOUUxMTZCRkREMDU1REMwOEU3ODI1MkZGOEUyM0FDMjc2QUM4OEIxNzcwQUUwQjVEQ0VCMUVEMTRBNDkxNkI3NjlBNTIzQ0UxRTkwQkEyMjg0NkFGMTFERjhCMzAwQzM4ODE4RjcxM0RBREQ4NURFMEM4OAogICAgcjogMTRCRUUyMUExOEI2RDhCM0M5M0ZBQjA4RDQzRTczOTcwNzk1MzI0NEZEQkU5MjRGQTkyNkQ3NjY2OUU3QUM4Qzg5REY2MkVEODk3NUMyRDgzOTdBNjVBNDlEQ0MwOUY2QjBBQzYyMjcyNzQxOTI0RDQ3OTM1NEQ3NEZGNjA3NTU3OEMKICAgIHM6IDEzMzMzMDg2NUMwNjdBMEVBRjcyMzYyQTY1RTJEN0JDNEU0NjFFOEM4OTk1QzNCNjIyNkEyMUJEMUFBNzhGMEVEOTRGRTUzNkEwRENBMzU1MzRGMENEMTUxMEM0MTUyNUQxNjNGRTlENzREMTM0ODgxRTM1MTQxRUQ1RThFOTVCOTc5CiAgLQogICAgYWxnbzogc2hhNTEyCiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiA1MjEKICAgIGtleTogMEZBRDA2REFBNjJCQTNCMjVEMkZCNDAxMzNEQTc1NzIwNURFNjdGNUJCMDAxOEZFRThDODZFMUI2OEM3RTc1Q0FBODk2RUIzMkYxRjQ3QzcwODU1ODM2QTZEMTZGQ0MxNDY2RjZEOEZCRUM2N0RCODlFQzBDMDhCMEU5OTZCODM1MzgKICAgIGs6IDE2MjAwODEzMDIwRUM5ODY4NjNCRURGQzFCMTIxRjYwNUMxMjE1NjQ1MDE4QUVBMUE3QjIxNUE1NjRERTlFQjFCMzhBNjdBQTExMjhCODBDRTM5MUM0RkI3MTE4NzY1NEFBQTM0MzEwMjdCRkM3RjM5NTc2NkNBOTg4Qzk2NERDNTZECiAgICByOiAxM0U5OTAyMEFCRjVDRUU3NTI1RDE2QjY5QjIyOTY1MkFCNkJERjJBRkZDQUVGMzg3NzNCNEI3RDA4NzI1RjEwQ0RCOTM0ODJGRENDNTRFRENFRTkxRUNBNDE2NkIyQTdDNjI2NUVGMENFMkJENzA1MUI3Q0VGOTQ1QkFCRDQ3RUU2RAogICAgczogMUZCRDAwMTNDNjc0QUE3OUNCMzk4NDk1Mjc5MTZDRTMwMUM2NkVBN0NFOEI4MDY4Mjc4NkFENjBGOThGN0U3OEExOUNBNjlFRkY1QzU3NDAwRTNCM0EwQUQ2NkNFMDk3ODIxNEQxM0JBRjRFOUFDNjA3NTJGN0IxNTVFMkRFNERDRTM=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/secp-112r1.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bmFtZTogc2VjcDExMnIxCiMgQW5vdGhlciBjdXJ2ZSBsYWNraW5nIGtub3duIHRlc3QgdmVjdG9ycwoKa2V5cGFpcnM6CiMgaHR0cHM6Ly9naXRodWIuY29tL2pvaG5kb2UzMTQxNS9qb2VlY2MvYmxvYi8yOGUxMTIxNzRiOTI0ZGQyNjRmNDNiODI1NzdhNGU1Y2EwN2U2NmRmL2VjYy90ZXN0cy9Qb2ludFNlcmlhbGl6YXRpb25UZXN0cy5weSNMNTUKICAtCiAgICBrOiAxMTUwMDA2OTM1ODc3MzkyNDEwMTIzMzAyNDA4NjU0MzIzCiAgICB4OiAyMGI2NWE0MjI0MTkyZGFiNTI1NWVlZTE3ZAogICAgeTogNDcwYTM0NzE5MTdiMTY3MmVkMzQxYTU3MWI3MwogIC0KICAgIGs6IDIwNjQ4MDkwMTAwNTExODM0NDE4NzkxOTI2OTAyOTI1NDUKICAgIHg6IDI0MDIxY2NlNjgzOTI2YmYwYzZhYzZiMAogICAgeTogY2Q3MWQ5Njg1NjNlMjY0NmQ5MzgyZTI3YjgwMQogIC0KICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9qb2huZG9lMzE0MTUvam9lZWNjL2Jsb2IvMjhlMTEyMTc0YjkyNGRkMjY0ZjQzYjgyNTc3YTRlNWNhMDdlNjZkZi9lY2MvdGVzdHMvQ3J5cHRvT3BzVGVzdHMucHkjTDM0CiAgICBrOiAzNzM1OTI4NTU5CiAgICB4OiA5NTVhYTIwYjhhN2Y4NjMzM2FiNWFjYTgwZDM5CiAgICB5OiA4ZmUwYTFiZWZhZTZiODg0YjJmMWJiZjU3OTBkCmRpZmZpZToKICAtCiAgICBhbGljZTogMjA2NDgwOTAxMDA1MTE4MzQ0MTg3OTE5MjY5MDI5MjU0NQogICAgYm9iOiAxMTUwMDA2OTM1ODc3MzkyNDEwMTIzMzAyNDA4NjU0MzIzCiAgICBzaGFyZWQ6IDUwYTc4YzgxM2I0OWY5YTZhNzI1NWEyYWI3MjUKaG1hYzogW10=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/secp-256k1.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBodHRwOi8vY3J5cHRvLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy83ODQvYXJlLXRoZXJlLWFueS1zZWNwMjU2azEtZWNkc2EtdGVzdC1leGFtcGxlcy1hdmFpbGFibGUvNzg3Izc4NwojIEhhcmQgdG8gZmluZCBhbiBvZmZpY2lhbCBzZXQuLi4KbmFtZTogc2VjcDI1NmsxCmtleXBhaXJzOgogIC0KICAgIGs6IDc3MDU5NTQ5NzQwMzc0OTM2MzM3NTk2MTc5NzgwMDA3NTcyNDYxMDY1NTcxNTU1NTA3NjAwMTkxNTIwOTI0MzM2OTM5NDI5NjMxMjY2CiAgICB4OiAzNEY5NDYwRjBFNEYwODM5M0QxOTJCM0M1MTMzQTZCQTA5OUFBMEFEOUZENTRFQkNDRkFDREZBMjM5RkY0OUM2CiAgICB5OiAwQjcxRUE5QkQ3MzBGRDg5MjNGNkQyNUE3QTkxRTdERDc3MjhBOTYwNjg2Q0I1QTkwMUJCNDE5RTBGMkNBMjMyCiAgLQogICAgazogNTcwNjgzNDIyMTU0NDA2OTg1Njc1NjQzNjg4MzQzMDQ4NDMzMTM5NzI3OTkyNDcwMjk5OTg2NjE2MDM5Njk4MDQ4NTM5MjY4MjA1NzkKICAgIHg6IEQ3NEJGODQ0QjA4NjI0NzUxMDNEOTZBNjExQ0YyRDg5ODQ0N0UyODhEMzRCMzYwQkM4ODVDQjhDRTdDMDA1NzUKICAgIHk6IDEzMUM2NzBENDE0QzQ1NDZCODhBQzNGRjY2NDYxMUIxQzM4Q0VCMUMyMUQ3NjM2OUQ3QTdBMDk2OUQ2MUQ5N0QKICAtCiAgICBrOiA0NTQwNDI2MjQzOTAxMzA4MjYzOTYzOTY0MDY3NjA1MjU3NDMwMDczMjQ0ODExNDQ2Njk1MTE1MzMwMTYzOTIxMzA4NDk1OTIxNjczMwogICAgeDogRThBRUNDMzcwQUVERDk1MzQ4MzcxOUExMTY3MTE5NjNDRTIwMUFDM0VCMjFEM0YzMjU3QkI0ODY2OEM2QTcyRgogICAgeTogQzI1Q0FGMkYwRUJBMUREQjJGMEYzRjQ3ODY2Mjk5RUY5MDc4NjdCN0QyN0U5NUIzODczQkY5ODM5N0IyNEVFMQogIC0KICAgIGs6IDI1MDY0ODkzOTcxNzI2NjY5MzU5MzM3NTUwNjE2NDU2NTU3MjU3MjE0MzQyMTcwNzA3MDY0NDIzODczMDIwNTU3Njk4NDE2OTU0NjA0CiAgICB4OiAxNDg5MEU2MUZDRDRCMEJEOTJFNUIzNkM4MTM3MkNBNkZFRDQ3MUVGM0FBNjBBM0U0MTVFRTRGRTk4N0RBQkExCiAgICB5OiAyOTdCODU4RDlGNzUyQUI0MkQzQkNBNjdFRTBFQjZEQ0QxQzJCN0IwREJFMjMzOTdFNjZBREMyNzIyNjNGOTgyCiAgLQogICAgazogMTIyNzMyMTE4OTQ2NjcwMTE3MDM1MTI3Mzc3NjQ2MjAzMzE2NDAwNjEyODI3NTI3NTIyOTI0MTI4NjcyNTQwMzYzODQ4MjIzMTc0OTcKICAgIHg6IEY3M0M2NUVBRDAxQzUxMjZGMjhGNDQyRDA4NzY4OUJGQTA4RTEyNzYzRTBDRUMxRDM1QjAxNzUxRkQ3MzVFRDMKICAgIHk6IEY0NDlBODM3NjkwNjQ4MkE4NEVEMDE0NzlCRDE4ODgyQjkxOUMxNDBENjM4MzA3RjBDMDkzNEJBMTI1OTBCREUKCmRpZmZpZToKICAtCiAgICBhbGljZTogNzgzMzAzOTE1ODY3MjUzODE2MjgwMDgxNDQ1MTg4OTI5NTQwNzQ5MTY2NTQzNDE4MzQyMzYxNjQ4NzYyMzAwOTk0NDYzODExNTE4MzgKICAgIGJvYjogOTQ0MTUwOTI2OTYwMjMyNjU0NTI1NDQzODE0NTY4NjYzMTAwOTYxNjM4MDIxMzgzMjYzNTkzMzA1MDYxNjEzNDA2NzY3MDU1MjMyNAogICAgc2hhcmVkOiBhZmQzMDU2ZmZiZTM1ZjBkMGI4YjQzZjdkMDE0YTVlZWQ0MjE1MjJmZGJjMTJlNjFjYjU3OTI3OWM5ZjU5NjRhCgpobWFjOgogIC0KICAgIGFsZ286IHNoYTI1NgogICAgbWVzc2FnZTogIlNhdG9zaGkgTmFrYW1vdG8iCiAgICBzaXplOiAyNTYKICAgIGtleTogMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMQogICAgazogOEY4QTI3NkMxOUY0MTQ5NjU2QjI4MDYyMUUzNThDQ0UyNEY1RjUyNTQyNzcyNjkxRUU2OTA2M0I3NEYxNUQxNQogICAgcjogOTM0YjFlYTEwYTRiM2MxNzU3ZTJiMGMwMTdkMGI2MTQzY2UzYzlhN2U2YTRhNDk4NjBkN2E2YWIyMTBlZTNkOAogICAgczogZGJiZDMxNjJkNDZlOWY5YmVmN2ZlYjg3YzE2ZGMxM2I0ZjY1NjhhODdmNGU4M2Y3MjhlMjQ0M2JhNTg2Njc1YwogIC0KICAgIGFsZ286IHNoYTI1NgogICAgbWVzc2FnZTogIkFsbCB0aG9zZSBtb21lbnRzIHdpbGwgYmUgbG9zdCBpbiB0aW1lLCBsaWtlIHRlYXJzIGluIHJhaW4uIFRpbWUgdG8gZGllLi4uIgogICAgc2l6ZTogMjU2CiAgICBrZXk6IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEKICAgIGs6IDM4QUEyMkQ3MjM3NkI0REJDNDcyRTA2QzNCQTQwM0VFMEEzOTREQTYzRkM1OEQ4ODY4NkM2MTFBQkE5OEQ2QjMKICAgIHI6IDg2MDBkYmQ0MWUzNDhmZTVjOTQ2NWFiOTJkMjNlM2RiOGI5OGI4NzNiZWVjZDkzMDczNjQ4ODY5NjQzOGNiNmIKICAgIHM6IGFiODAxOWJiZDhiNjkyNGNjNDA5OWZlNjI1MzQwZmZiMWVhYWMzNGJmNDQ3N2RhYTM5ZDA4MzU0MjkwOTQ1MjAKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6ICJTYXRvc2hpIE5ha2Ftb3RvIgogICAgc2l6ZTogMjU2CiAgICBrZXk6IEZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZFQkFBRURDRTZBRjQ4QTAzQkJGRDI1RThDRDAzNjQxNDAKICAgIGs6IDMzQTE5QjYwRTI1RkI2RjQ0MzVBRjUzQTNENDJENDkzNjQ0ODI3MzY3RTY0NTM5Mjg1NTRGNDNFNDlBQTZGOTAKICAgIHI6IGZkNTY3ZDEyMWRiNjZlMzgyOTkxNTM0YWRhNzdhNmJkMzEwNmYwYTEwOThjMjMxZTQ3OTkzNDQ3Y2Q2YWYyZDAKICAgIHM6IDk0YzYzMmYxNGU0Mzc5ZmMxZWE2MTBhM2RmNWEzNzUxNTI1NDk3MzY0MjVlZTE3Y2ViZTEwYWJiYzJhMjgyNmMKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6ICJBbGFuIFR1cmluZyIKICAgIHNpemU6IDI1NgogICAga2V5OiBmOGI4YWY4Y2UzYzdjY2E1ZTMwMGQzMzkzOTU0MGMxMGQ0NWNlMDAxYjhmMjUyYmZiYzU3YmEwMzQyOTA0MTgxCiAgICBrOiA1MjVBODJCNzBFNjc4NzQzOTgwNjc1NDNGRDg0QzgzRDMwQzE3NUZEQzQ1RkRFRUUwODJGRTEzQjFEN0NGREYxCiAgICByOiA3MDYzYWU4M2U3ZjYyYmJiMTcxNzk4MTMxYjRhMDU2NGI5NTY5MzAwOTJiMzNiMDdiMzk1NjE1ZDllYzdlMTVjCiAgICBzOiBhNzIwMzNlMWZmNWNhMWVhOGQwYzk5MDAxY2I0NWYwMjcyZDNiZTc1MjVkMzA0OWMwZDllOThkYzc1ODJiODU3]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/secp-256r1.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bmFtZTogc2VjcDI1NnIxCmtleXBhaXJzOgogIC0KICAgICMgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTkwMy50eHQgOC4xCiAgICBrOiA5MDcxNTI0MjM1NTYyNDQwODk1Njc2MDE5NjQ3MDY2MTU1MzQwNjY2OTUxNTE4MDkxODMzMDE1NTg0MTE0NTMxMDM0MTU0MTcyOTMzMQogICAgeDogREFEMEI2NTM5NDIyMUNGOUIwNTFFMUZFQ0E1Nzg3RDA5OERGRTYzN0ZDOTBCOUVGOTQ1RDBDMzc3MjU4MTE4MAogICAgeTogNTI3MUEwNDYxQ0RCODI1MkQ2MUYxQzQ1NkZBM0U1OUFCMUY0NUIzM0FDQ0Y1RjU4Mzg5RTA1NzdCODk5MEJCMwogIC0KICAgICMgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTkwMy50eHQgOC4xCiAgICBrOiA4OTk4MTI5OTY2MDM4Mjk3NDQ0NDcyMTc3MDQzMDEwNzgxNzkwNjI2ODg5OTQwNjk4MjUzOTcyMTkyMTE4MDI1MzIwNDU4Njk1MDIyNwogICAgeDogRDEyREZCNTI4OUM4RDRGODEyMDhCNzAyNzAzOThDMzQyMjk2OTcwQTBCQ0NCNzRDNzM2RkM3NTU0NDk0QkY2MwogICAgeTogNTZGQkYzQ0EzNjZDQzIzRTgxNTc4NTRDMTNDNThENkFBQzIzRjA0NkFEQTMwRjgzNTNFNzRGMzMwMzk4NzJBQgoKZGlmZmllOgogIC0KICAgICMgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTkwMy50eHQgOC4xCiAgICBhbGljZTogOTA3MTUyNDIzNTU2MjQ0MDg5NTY3NjAxOTY0NzA2NjE1NTM0MDY2Njk1MTUxODA5MTgzMzAxNTU4NDExNDUzMTAzNDE1NDE3MjkzMzEKICAgIGJvYjogODk5ODEyOTk2NjAzODI5NzQ0NDQ3MjE3NzA0MzAxMDc4MTc5MDYyNjg4OTk0MDY5ODI1Mzk3MjE5MjExODAyNTMyMDQ1ODY5NTAyMjcKICAgIHNoYXJlZDogRDY4NDBGNkI0MkY2RURBRkQxMzExNkUwRTEyNTY1MjAyRkVGOEU5RUNFN0RDRTAzODEyNDY0RDA0Qjk0NDJERQoKIyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjk3OSNhcHBlbmRpeC1BLjIuNQpobWFjOgogIC0KICAgIGFsZ286IHNoYTEKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDg4MjkwNUYxMjI3RkQ2MjBGQkYyQUJGMjEyNDRGMEJBODNEMERDM0E5MTAzREJCRUU0M0ExRkI4NTgxMDlEQjQKICAgIHI6IDYxMzQwQzg4QzNBQUVCRUI0RjZENjY3RjY3MkNBOTc1OUE2Q0NBQTlGQTg4MTEzMTMwMzlFRTRBMzU0NzFEMzIKICAgIHM6IDZEN0YxNDdEQUMwODk0NDFCQjJFMkZFOEY3QTNGQTI2NEI5QzQ3NTA5OEZEQ0Y2RTAwRDdDOTk2RTFCOEI3RUIKICAtCiAgICBhbGdvOiBzaGEyMjQKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDEwM0Y5MEVFOURDNTJFNUU3RkI1MTMyQjcwMzNDNjMwNjZEMTk0MzIxNDkxODYyMDU5OTY3QzcxNTk4NUQ0NzMKICAgIHI6IDUzQjJGRkY1RDE3NTJCMkM2ODlERjI1N0MwNEM0MEE1ODdGQUJBQkIzRjZGQzI3MDJGMTM0M0FGN0NBOUFBM0YKICAgIHM6IEI5QUZCNjRGREMwM0RDMUExMzFDN0QyMzg2RDExRTM0OUYwNzBBQTQzMkE0QUNDOTE4QkVBOTg4QkY3NUM3NEMKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IEE2RTNDNTdERDAxQUJFOTAwODY1MzgzOTgzNTVERDRDM0IxN0FBODczMzgyQjBGMjRENjEyOTQ5M0Q4QUFENjAKICAgIHI6IEVGRDQ4QjJBQUNCNkE4RkQxMTQwREQ5Q0Q0NUU4MUQ2OUQyQzg3N0I1NkFBRjk5MUMzNEQwRUE4NEVBRjM3MTYKICAgIHM6IEY3Q0IxQzk0MkQ2NTdDNDFENDM2QzdBMUI2RTI5RjY1RjNFOTAwREJCOUFGRjQwNjREQzRBQjJGODQzQUNEQTgKICAtCiAgICBhbGdvOiBzaGEzODQKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDA5RjYzNEIxODhDRUZEOThFN0VDODhCMUFBOTg1MkQ3MzREMEJDMjcyRjdEMkE0N0RFQ0M2RUJFQjM3NUFBRDQKICAgIHI6IDBFQUZFQTAzOUIyMEU5QjQyMzA5RkIxRDg5RTIxMzA1N0NCRjk3M0RDMENGQzhGMTI5RUREREM4MDBFRjc3MTkKICAgIHM6IDQ4NjFGMDQ5MUU2OTk4Qjk0NTUxOTNFMzRFN0IwRDI4NERERDcxNDlBNzRCOTVCOTI2MUYxM0FCREU5NDA5NTQKICAtCiAgICBhbGdvOiBzaGE1MTIKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDVGQTgxQzYzMTA5QkFEQjg4QzFGMzY3QjQ3REE2MDZEQTI4Q0FENjlBQTIyQzRGRTZBRDdERjczQTcxNzNBQTUKICAgIHI6IDg0OTZBNjBCNUU5QjQ3QzgyNTQ4ODgyN0UwNDk1QjBFM0ZBMTA5RUM0NTY4RkQzRjhEMTA5NzY3OEVCOTdGMDAKICAgIHM6IDIzNjJBQjFBREJFMkI4QURGOUNCOUVEQUI3NDBFQTYwNDlDMDI4MTE0RjI0NjBGOTY1NTRGNjFGQUUzMzAyRkUKICAtCiAgICBhbGdvOiBzaGExCiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAyNTYKICAgIGtleTogQzlBRkE5RDg0NUJBNzUxNjZCNUMyMTU3NjdCMUQ2OTM0RTUwQzNEQjM2RTg5QjEyN0I4QTYyMkIxMjBGNjcyMQogICAgazogOEM5NTIwMjY3QzU1RDZCOTgwREY3NDFFNTZCNEFERUUxMTREODRGQkZBMkU2MjEzNzk1NDE2NDAyODYzMkEyRQogICAgcjogMENCQ0M4NkZENkFCRDFEOTlFNzAzRTFFQzUwMDY5RUU1QzBCNEJBNEI5QUM2MEU0MDlFOEVDNTkxMEQ4MUE4OQogICAgczogMDFCOUQ3QjczREZBQTYwRDU2NTFFQzQ1OTFBMDEzNkY4NzY1M0UwRkQ3ODBDM0IxQkM4NzJGRkRFQUU0NzlCMQogIC0KICAgIGFsZ286IHNoYTIyNAogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDY2OUY0NDI2RjI2ODhCOEJFMERCM0E2QkQxOTg5QkRBRUZGRjg0QjY0OUVFQjg0RjNERDI2MDgwRjY2N0ZBQTcKICAgIHI6IEMzN0VEQjZGMEFFNzlENDdDM0MyN0U5NjJGQTI2OUJCNEY0NDE3NzAzNTdFMTE0RUU1MTFGNjYyRUMzNEE2OTIKICAgIHM6IEM4MjAwNTNBMDU3OTFFNTIxRkNBQUQ2MDQyRDQwQUVBMUQ2QjFBNTQwMTM4NTU4RjQ3RDA3MTk4MDBFMThGMkQKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6IHRlc3QKICAgIHNpemU6IDI1NgogICAga2V5OiBDOUFGQTlEODQ1QkE3NTE2NkI1QzIxNTc2N0IxRDY5MzRFNTBDM0RCMzZFODlCMTI3QjhBNjIyQjEyMEY2NzIxCiAgICBrOiBEMTZCNkFFODI3RjE3MTc1RTA0MDg3MUExQzdFQzM1MDAxOTJDNEM5MjY3NzMzNkVDMjUzN0FDQUVFMDAwOEUwCiAgICByOiBGMUFCQjAyMzUxODM1MUNENzFEODgxNTY3QjFFQTY2M0VEM0VGQ0Y2QzUxMzJCMzU0RjI4RDNCMEI3RDM4MzY3CiAgICBzOiAwMTlGNDExMzc0MkEyQjE0QkQyNTkyNkI0OUM2NDkxNTVGMjY3RTYwRDM4MTRCNEMwQ0M4NDI1MEU0NkYwMDgzCiAgLQogICAgYWxnbzogc2hhMzg0CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAyNTYKICAgIGtleTogQzlBRkE5RDg0NUJBNzUxNjZCNUMyMTU3NjdCMUQ2OTM0RTUwQzNEQjM2RTg5QjEyN0I4QTYyMkIxMjBGNjcyMQogICAgazogMTZBRUZGQTM1NzI2MEIwNEIxREQxOTk2OTM5NjA3NDAwNjZDMUE4RjNFOEVERDc5MDcwQUE5MTREMzYxQjNCOAogICAgcjogODM5MTBFOEI0OEJCMEM3NDI0NEVCREY3RjA3QTFDNTQxM0Q2MTQ3MkJEOTQxRUYzOTIwRTYyM0ZCQ0NFQkVCNgogICAgczogOEREQkVDNTRDRjhDRDU4NzQ4ODM4NDFENzEyMTQyQTU2QThEMEYyMThGNTAwM0NCMDI5NkI2QjUwOTYxOUYyQwogIC0KICAgIGFsZ286IHNoYTUxMgogICAgbWVzc2FnZTogdGVzdAogICAgc2l6ZTogMjU2CiAgICBrZXk6IEM5QUZBOUQ4NDVCQTc1MTY2QjVDMjE1NzY3QjFENjkzNEU1MEMzREIzNkU4OUIxMjdCOEE2MjJCMTIwRjY3MjEKICAgIGs6IDY5MTVEMTE2MzJBQ0EzQzQwRDVENTFDMDhEQUY5QzU1NTkzMzgxOTU0ODc4NDQ4MEU5MzQ5OTAwMEQ5RjBCN0YKICAgIHI6IDQ2MUQ5M0YzMUI2NTQwODk0Nzg4RkQyMDZDMDdDRkEwQ0MzNUY0NkZBM0M5MTgxNkZGRjEwNDBBRDE1ODFBMDQKICAgIHM6IDM5QUY5RjE1REUwREI4RDk3RTcyNzE5Qzc0ODIwRDMwNENFNTIyNkUzMkRFREFFNjc1MTlFODQwRDExOTRFNTU=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/specs/secp-384r1.yml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[bmFtZTogc2VjcDM4NHIxCmtleXBhaXJzOgogIC0KICAgICMgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTkwMy50eHQgOC4yCiAgICBrOiAxNDgwOTYzNzk5NTY2Nzk5MTYyMjQ3MDEzMjc4NDc5NzMzNDIxMjM4MTc1NDU1OTE3MTM0NjQxNTAwMzAyNjk4Mjg1OTYzMjQ3NjQ0MTY4MDUwMjk2MDA5OTIwMTUyMTMwMzUxNjU1MDk2ODAzODMyMjEyCiAgICB4OiA2Njc4NDJEN0QxODBBQzJDREU2Rjc0RjM3NTUxRjU1NzU1Qzc2NDVDMjBFRjczRTMxNjM0RkU3MkI0QzU1RUU2REUzQUM4MDhBQ0I0QkRCNEM4ODczMkFFRTk1RjQxQUEKICAgIHk6IDk0ODJFRDFGQzBFRUI5Q0FGQzQ5ODQ2MjVDQ0ZDMjNGNjUwMzIxNDlFMEUxNDRBREEwMjQxODE1MzVBMEYzOEVFQjlGQ0ZGM0MyQzk0N0RBRTY5QjRDNjM0NTczQTgxQwogIC0KICAgICMgaHR0cDovL3d3dy5pZXRmLm9yZy9yZmMvcmZjNTkwMy50eHQgOC4yCiAgICBrOiAxMDEyNjQ4MjI1MzA3MzMwODUxMzcyMjc5NjIwMzcwMzQ5OTIzOTk3NDA0MDE3Njg1MDk4OTA5ODQ2NDA0MzA4MTQyMjg3MDI1NjA1MDkyMzY4NTE5MTY0MDA4ODI0NTM4MzYxODUwMzM0ODY1MDc4OTExNgogICAgeDogRTU1OERCRUY1M0VFQ0RFM0QzRkNDRkMxQUVBMDhBODlBOTg3NDc1RDEyRkQ5NTBEODNDRkE0MTczMkJDNTA5RDBEMUFDNDNBMDMzNkRFRjk2RkRBNDFEMDc3NEEzNTcxCiAgICB5OiBEQ0ZCRUM3QUFDRjMxOTY0NzIxNjlFODM4NDMwMzY3RjY2RUVCRTNDNkU3MEM0MTZERDVGMEM2ODc1OUREMUZGRjgzRkE0MDE0MjIwOURGRjVFQUFEOTZEQjlFNjM4NkMKCmRpZmZpZToKICAtCiAgICAjIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzU5MDMudHh0IDguMgogICAgYWxpY2U6IDE0ODA5NjM3OTk1NjY3OTkxNjIyNDcwMTMyNzg0Nzk3MzM0MjEyMzgxNzU0NTU5MTcxMzQ2NDE1MDAzMDI2OTgyODU5NjMyNDc2NDQxNjgwNTAyOTYwMDk5MjAxNTIxMzAzNTE2NTUwOTY4MDM4MzIyMTIKICAgIGJvYjogMTAxMjY0ODIyNTMwNzMzMDg1MTM3MjI3OTYyMDM3MDM0OTkyMzk5NzQwNDAxNzY4NTA5ODkwOTg0NjQwNDMwODE0MjI4NzAyNTYwNTA5MjM2ODUxOTE2NDAwODgyNDUzODM2MTg1MDMzNDg2NTA3ODkxMTYKICAgIHNoYXJlZDogMTExODczMzFDMjc5OTYyRDkzRDYwNDI0M0ZENTkyQ0I5RDBBOTI2RjQyMkU0NzE4NzUyMTI4N0U3MTU2QzVDNEQ2MDMxMzU1NjlCOUU5RDA5Q0Y1RDRBMjcwRjU5NzQ2CgojIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM2OTc5I2FwcGVuZGl4LUEuMi42CmhtYWM6CiAgLQogICAgYWxnbzogc2hhMQogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiA0NDcxRUY3NTE4QkIyQzdDMjBGNjJFQUUxQzM4N0FEMEM1RThFNDcwOTk1REI0QUNGNjk0NDY2RTZBQjA5NjYzMEYyOUU1OTM4RDI1MTA2QzNDMzQwMDQ1QTJEQjAxQTcKICAgIHI6IEVDNzQ4RDgzOTI0M0Q2RkJFRjRGQzVDNDg1OUE3REZGRDdGM0FCRERGNzIwMTQ1NDBDMTZENzMzMDk4MzRGQTM3QjlCQTAwMjg5OUY2RkRBM0E0QTkzODY3OTBENEVCMgogICAgczogQTNCQ0ZBOTQ3QkVFRjQ3MzJCRjI0N0FDMTdGNzE2NzZDQjMxQTg0N0I5RkYwQ0JDOUM5RUQ0QzFBNUIzRkFDRjI2RjQ5Q0EwMzFENDg1NzU3MENDQjVDQTQ0MjRBNDQzCiAgLQogICAgYWxnbzogc2hhMjI0CiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDM4NAogICAga2V5OiA2QjlEM0RBRDJFMUI4QzFDMDVCMTk4NzVCNjY1OUY0REUyM0MzQjY2N0JGMjk3QkE5QUE0Nzc0MDc4NzEzN0Q4OTZENTcyNEU0QzcwQTgyNUY4NzJDOUVBNjBEMkVERjUKICAgIGs6IEE0RTREMkYwRTcyOUVCNzg2QjMxRkMyMEFENUQ4NDlFMzA0NDUwRTBBRThFM0UzNDExMzRBNUMxQUZBMDNDQUI4MDgzRUU0RTNDNDVCMDZBNTg5OUVBNTZDNTFCNTg3OQogICAgcjogNDIzNTZFNzZCNTVBNkQ5QjQ2MzFDODY1NDQ1REJFNTRFMDU2RDNCMzQzMTc2NkQwNTA5MjQ0NzkzQzNGOTM2NjQ1MEY3NkVFM0RFNDNGNUExMjUzMzNBNkJFMDYwMTIyCiAgICBzOiA5REEwQzgxNzg3MDY0MDIxRTc4REY2NThGMkZCQjBCMDQyQkYzMDQ2NjVEQjcyMUYwNzdBNDI5OEIwOTVFNDgzNEMwODJDMDNEODMwMjhFRkJGOTNBM0MyMzk0MENBOEQKICAtCiAgICBhbGdvOiBzaGEyNTYKICAgIG1lc3NhZ2U6IHNhbXBsZQogICAgc2l6ZTogMzg0CiAgICBrZXk6IDZCOUQzREFEMkUxQjhDMUMwNUIxOTg3NUI2NjU5RjRERTIzQzNCNjY3QkYyOTdCQTlBQTQ3NzQwNzg3MTM3RDg5NkQ1NzI0RTRDNzBBODI1Rjg3MkM5RUE2MEQyRURGNQogICAgazogMTgwQUU5RjlBRUM1NDM4QTQ0QkMxNTlBMUZDQjI3N0M3QkU1NEZBMjBFN0NGNDA0QjQ5MDY1MEE4QUNDNDE0RTM3NTU3MjM0Mjg2M0M4OTlGOUYyRURGOTc0N0E5QjYwCiAgICByOiAyMUIxM0QxRTAxM0M3RkExMzkyRDAzQzVGOTlBRjhCMzBDNTcwQzZGOThENEVBOEUzNTRCNjNBMjFEM0RBQTMzQkRFMUU4ODhFNjMzNTVEOTJGQTJCM0MzNkQ4RkIyQ0QKICAgIHM6IEYzQUE0NDNGQjEwNzc0NUJGNEJENzdDQjM4OTE2NzQ2MzIwNjhBMTBDQTY3RTNENDVEQjIyNjZGQTdEMUZFRUJFRkRDNjNFQ0NEMUFDNDJFQzBDQjg2NjhBNEZBMEFCMAogIC0KICAgIGFsZ286IHNoYTM4NAogICAgbWVzc2FnZTogc2FtcGxlCiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiA5NEVEOTEwRDFBMDk5REFEMzI1NEU5MjQyQUU4NUFCREU0QkExNTE2OEVBRjBDQTg3QTU1NUZENTZEMTBGQkNBMjkwN0UzRTgzQkE5NTM2ODYyM0I4QzQ2ODY5MTVDRjkKICAgIHI6IDk0RURCQjkyQTVFQ0I4QUFENDczNkU1NkM2OTE5MTZCM0Y4ODE0MDY2NkNFOUZBNzNENjRDNEVBOTVBRDEzM0M4MUE2NDgxNTJFNDRBQ0Y5NkUzNkREMUU4MEZBQkU0NgogICAgczogOTlFRjRBRUIxNUYxNzhDRUExRkU0MERCMjYwMzEzOEYxMzBFNzQwQTE5NjI0NTI2MjAzQjYzNTFEMEEzQTk0RkEzMjlDMTQ1Nzg2RTY3OUU3QjgyQzcxQTM4NjI4QUM4CiAgLQogICAgYWxnbzogc2hhNTEyCiAgICBtZXNzYWdlOiBzYW1wbGUKICAgIHNpemU6IDM4NAogICAga2V5OiA2QjlEM0RBRDJFMUI4QzFDMDVCMTk4NzVCNjY1OUY0REUyM0MzQjY2N0JGMjk3QkE5QUE0Nzc0MDc4NzEzN0Q4OTZENTcyNEU0QzcwQTgyNUY4NzJDOUVBNjBEMkVERjUKICAgIGs6IDkyRkMzQzcxODNBODgzRTI0MjE2RDExNDFGMUE4OTc2QzVCMERENzk3REZBNTk3RTNEN0IzMjE5OEJEMzUzMzFBNEU5NjY1MzI1OTNBNTI5ODBEMEUzQUFBNUUxMEVDMwogICAgcjogRUQwOTU5RDU4ODBBQjJEODY5QUU3RjZDMjkxNUM2RDYwRjk2NTA3RjlDQjNFMDQ3QzAwNDY4NjFEQTRBNzk5Q0ZFMzBGMzVDQzkwMDA1NkQ3Qzk5Q0Q3ODgyNDMzNzA5CiAgICBzOiA1MTJDOENDRUVFMzg5MEE4NDA1OENFMUUyMkRCQzIxOThGNDIzMjNDRThBQ0E5MTM1MzI5RjAzQzA2OEU1MTEyREM3Q0MzRUYzNDQ2REVGQ0VCMDFBNDVDMjY2N0ZERDUKICAtCiAgICBhbGdvOiBzaGExCiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiA2NkNDMkM4RjREMzAzRkM5NjJFNUZGNkEyN0JENzlGODRFQzgxMkREQUU1OENGNTI0M0I2NEE0QUQ4MDk0RDQ3RUMzNzI3RjNBM0MxODZDMTUwNTQ0OTJFMzA2OTg0OTcKICAgIHI6IDRCQzM1RDNBNTBFRjRFMzA1NzZGNThDRDk2Q0U2QkY2MzgwMjVFRTYyNDAwNEExRjc3ODlBOEI4RTQzRDA2NzhBQ0Q5RDI5ODc2REFGNDY2Mzg2NDVGN0Y0MDRCMTFDNwogICAgczogRDVBNjMyNkM0OTRFRDNGRjYxNDcwMzg3ODk2MUMwRkRFN0IyQzI3OEY5QTY1RkQ4QzRCNzE4NjIwMUEyOTkxNjk1QkExQzg0NTQxMzI3RTk2NkZBN0I1MEY3MzgyMjgyCiAgLQogICAgYWxnbzogc2hhMjI0CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiAxOEZBMzlEQjk1QUE1RjU2MUYzMEZBMzU5MURDNTlDMEZBMzY1M0E4MERBRkZBMEI0OEQxQTRDNkRGQ0JGRjZFM0QzM0JFNERDNUVCODg4NkE4RUNEMDkzRjI5MzU3MjYKICAgIHI6IEU4QzlEMEI2RUE3MkEwRTc4MzdGRUExRDE0QTFBOTU1N0YyOUZBQTQ1RDNFN0VFODg4RkM1QkY5NTRCNUU2MjQ2NEE5QTgxN0M0N0ZGNzhCOEMxMTA2NkIyNDA4MEU3MgogICAgczogMDcwNDFENEE3QTAzNzlBQzcyMzJGRjcyRTZGNzdCNkREQjhGMDlCMTZDQ0UwRUMzMjg2QjJCRDQzRkE4QzYxNDFDNTNFQTVBQkVGMEQ4MjMxMDc3QTA0NTQwQTk2QjY2CiAgLQogICAgYWxnbzogc2hhMjU2CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiAwQ0ZBQzM3NTg3NTMyMzQ3REMzMzg5RkRDOTgyODZCQkE4QzczODA3Mjg1QjE4NEM4M0U2MkUyNkM0MDFDMEZBQTQ4REQwNzBCQTc5OTIxQTM0NTdBQkZGMkQ2MzBBRDcKICAgIHI6IDZENkRFRkFDOUFCNjREQUJBRkUzNkM2QkY1MTAzNTJBNENDMjcwMDEyNjM2MzhFNUIxNkQ5QkI1MUQ0NTE1NTlGOTE4RUVEQUYyMjkzQkU1QjQ3NUNDOEYwMTg4NjM2QgogICAgczogMkQ0NkYzQkVDQkNDNTIzRDVGMUExMjU2QkYwQzlCMDI0RDg3OUJBOUU4MzgxNDRDOEJBNkJBRUI0QjUzQjQ3RDUxQUIzNzNGOTg0NUMwNTE0RUVGQjE0MDI0Nzg3MjY1CiAgLQogICAgYWxnbzogc2hhMzg0CiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiAwMTVFRTQ2QTVCRjg4NzczRUQ5MTIzQTVBQjA4MDc5NjJEMTkzNzE5NTAzQzUyN0IwMzFCNEMyRDIyNTA5MkFEQTcxRjRBNDU5QkMwREE5OEFEQjk1ODM3REI4MzEyRUEKICAgIHI6IDgyMDNCNjNEM0M4NTNFOEQ3NzIyN0ZCMzc3QkNGN0I3Qjc3MkU5Nzg5MkE4MEYzNkFCNzc1RDUwOUQ3QTVGRUIwNTQyQTdGMDgxMjk5OERBOEYxREQzQ0EzQ0YwMjNEQgogICAgczogREREMDc2MDQ0OEQ0MkQ4QTQzQUY0NUFGODM2RkNFNERFOEJFMDZCNDg1RTlCNjFCODI3QzJGMTMxNzM5MjNFMDZBNzM5RjA0MDY0OUE2NjdCRjNCODI4MjQ2QkFBNUE1CiAgLQogICAgYWxnbzogc2hhNTEyCiAgICBtZXNzYWdlOiB0ZXN0CiAgICBzaXplOiAzODQKICAgIGtleTogNkI5RDNEQUQyRTFCOEMxQzA1QjE5ODc1QjY2NTlGNERFMjNDM0I2NjdCRjI5N0JBOUFBNDc3NDA3ODcxMzdEODk2RDU3MjRFNEM3MEE4MjVGODcyQzlFQTYwRDJFREY1CiAgICBrOiAzNzgwQzRGNjdDQjE1NTE4QjZBQ0FFMzRDOUY4MzU2OEQyRTEyRTQ3REVBQjZDNTBBNEU0RUU1MzE5RDFFOENFMEUyQ0M4QTEzNjAzNkRDNEI5QzAwRTY4ODhGNjZCNkMKICAgIHI6IEEwRDVEMDkwQzk5ODBGQUYzQzJDRTU3QjdBRTk1MUQzMTk3N0REMTFDNzc1RDMxNEFGNTVGNzZDNjc2NDQ3RDA2RkI2NDk1Q0QyMUI0QjZFMzQwRkMyMzY1ODRGQjI3NwogICAgczogOTc2OTg0RTU5QjRDNzdCMEU4RTQ0NjBEQ0EzRDlGMjBFMDdCOUJCMUY2M0JFRUZBRjU3NkY2QjJFOEIyMjQ2MzRBMjA5MkNEMzc5MkUwMTU5QUQ5Q0VFMzc2NTlDNzM2]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/AbstractTestCase.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0czsKCnVzZSBNZGFudGVyXEVjY1xNYXRoXE1hdGhBZGFwdGVyRmFjdG9yeTsKCmFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGVzdENhc2UgZXh0ZW5kcyBcUEhQVW5pdF9GcmFtZXdvcmtfVGVzdENhc2UKewoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRjbGFzc1BvaW50SW50ZXJmYWNlID0gJ01kYW50ZXJcRWNjXFByaW1pdGl2ZXNcUG9pbnRJbnRlcmZhY2UnOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHVibGljICRjbGFzc0N1cnZlRnBJbnRlcmZhY2UgPSAnTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwSW50ZXJmYWNlJzsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyAkY2xhc3NSbmdJbnRlcmZhY2UgPSAnXE1kYW50ZXJcRWNjXFJhbmRvbVxSYW5kb21OdW1iZXJHZW5lcmF0b3JJbnRlcmZhY2UnOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRleHRyYQogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2dldEFkYXB0ZXJzKGFycmF5ICRleHRyYSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCEgZGVmaW5lZCgnUEhQVU5JVF9ERUJVRycpKSB7CiAgICAgICAgICAgIGRlZmluZSgnUEhQVU5JVF9ERUJVRycsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoTUFUSF9MSUIpIHsKICAgICAgICAgICAgY2FzZSAnZ21wJzoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRhZGFwdGVyID0gTWF0aEFkYXB0ZXJGYWN0b3J5OjpnZXRBZGFwdGVyKFBIUFVOSVRfREVCVUcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRleHRyYSA9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgKICAgICAgICAgICAgICAgIGFycmF5KCRhZGFwdGVyKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRhZGFwdGVycyA9ICR0aGlzLT5fZ2V0QWRhcHRlcnMobnVsbCk7CiAgICAgICAgJHJlc3VsdCA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkYWRhcHRlcnMgYXMgJGFkYXB0ZXIpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGV4dHJhIGFzICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gYXJyYXlfbWVyZ2UoJGFkYXB0ZXIsICR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBZGFwdGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZ2V0QWRhcHRlcnMoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/EcDH/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/EcDH/EcDhMultiPartyTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDcnlwdG9cRWNESDsKCnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIEVjRGhNdWx0aVBhcnR5VGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdENhc2UKewoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0TXVsdGlQYXJ0eUtleUdlbmVyYXRpb24oKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRhZGFwdGVyKS0+Z2VuZXJhdG9yMjU2KCk7CiAgICAgICAgJGFsaWNlID0gJGdlbmVyYXRvci0+Y3JlYXRlUHJpdmF0ZUtleSgpOwogICAgICAgICRib2IgPSAkZ2VuZXJhdG9yLT5jcmVhdGVQcml2YXRlS2V5KCk7CiAgICAgICAgJGNhcm9sID0gJGdlbmVyYXRvci0+Y3JlYXRlUHJpdmF0ZUtleSgpOwoKICAgICAgICAvLyBBbGljZSBjb21wdXRlcyBnXmEgYW5kIHNlbmRzIGl0IHRvIEJvYi4KICAgICAgICAkYm9iWCA9ICRhbGljZS0+Y3JlYXRlRXhjaGFuZ2UoJGJvYi0+Z2V0UHVibGljS2V5KCkpOwogICAgICAgIC8vIEJvYiBjb21wdXRlcyAoZ15hKV5iID0gZ157YWJ9IGFuZCBzZW5kcyBpdCB0byBDYXJvbC4KICAgICAgICAkY2Fyb2xYID0gJGNhcm9sLT5jcmVhdGVFeGNoYW5nZSgkYm9iWC0+Y3JlYXRlTXVsdGlQYXJ0eUtleSgpKTsKICAgICAgICAvLyBDYXJvbCBjb21wdXRlcyAoZ157YWJ9KV5jID0gZ157YWJjfSBhbmQgdXNlcyBpdCBhcyBoZXIgc2VjcmV0LgogICAgICAgICRjYXJvbFNoYXJlZEtleSA9ICRjYXJvbFgtPmNhbGN1bGF0ZVNoYXJlZEtleSgpOwoKICAgICAgICAvLyBCb2IgY29tcHV0ZXMgZ15iIGFuZCBzZW5kcyBpdCB0byBDYXJvbC4KICAgICAgICAkY2Fyb2xYID0gJGNhcm9sLT5jcmVhdGVFeGNoYW5nZSgkYm9iLT5nZXRQdWJsaWNLZXkoKSk7CiAgICAgICAgLy8gQ2Fyb2wgY29tcHV0ZXMgKGdeYileYyA9IGdee2JjfSBhbmQgc2VuZHMgaXQgdG8gQWxpY2UuCiAgICAgICAgJGFsaWNlWCA9ICRhbGljZS0+Y3JlYXRlRXhjaGFuZ2UoJGNhcm9sWC0+Y3JlYXRlTXVsdGlQYXJ0eUtleSgpKTsKICAgICAgICAvLyBBbGljZSBjb21wdXRlcyAoZ157YmN9KV5hID0gZ157YmNhfSA9IGdee2FiY30gYW5kIHVzZXMgaXQgYXMgaGVyIHNlY3JldC4KICAgICAgICAkYWxpY2VTaGFyZWRLZXkgPSAkYWxpY2VYLT5jYWxjdWxhdGVTaGFyZWRLZXkoKTsKCiAgICAgICAgLy8gQ2Fyb2wgY29tcHV0ZXMgZ15jIGFuZCBzZW5kcyBpdCB0byBBbGljZS4KICAgICAgICAkYWxpY2VYID0gJGNhcm9sLT5jcmVhdGVFeGNoYW5nZSgkYWxpY2UtPmdldFB1YmxpY0tleSgpKTsKICAgICAgICAvLyBBbGljZSBjb21wdXRlcyAoZ15jKV5hID0gZ157Y2F9IGFuZCBzZW5kcyBpdCB0byBCb2IuCiAgICAgICAgJGJvYlggPSAkYm9iLT5jcmVhdGVFeGNoYW5nZSgkYWxpY2VYLT5jcmVhdGVNdWx0aVBhcnR5S2V5KCkpOwogICAgICAgIC8vIEJvYiBjb21wdXRlcyAoZ157Y2F9KV5iID0gZ157Y2FifSA9IGdee2FiY30gYW5kIHVzZXMgaXQgYXMgaGlzIHNlY3JldC4KICAgICAgICAkYm9iU2hhcmVkS2V5ID0gJGJvYlgtPmNhbGN1bGF0ZVNoYXJlZEtleSgpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYWRhcHRlci0+ZXF1YWxzKCRib2JTaGFyZWRLZXksICRhbGljZVNoYXJlZEtleSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRhZGFwdGVyLT5lcXVhbHMoJGFsaWNlU2hhcmVkS2V5LCAkY2Fyb2xTaGFyZWRLZXkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYWRhcHRlci0+ZXF1YWxzKCRjYXJvbFNoYXJlZEtleSwgJGJvYlNoYXJlZEtleSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/EcDH/EcDHTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDcnlwdG9cRWNESDsKCnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cRWNESFxFY0RIOwp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CgpjbGFzcyBFY0RIVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdENhc2UKewogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgU2VuZGVyIGtleSBub3Qgc2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RXhjZXB0aW9uT25JbnZhbGlkU3RhdGUoKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRlY2RoID0gbmV3IEVjREgoJGFkYXB0ZXIpOwogICAgICAgICRlY2RoLT5jYWxjdWxhdGVTaGFyZWRLZXkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBSZWNpcGllbnQga2V5IG5vdCBzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RFeGNlcHRpb25PbkludmFsaWRTdGF0ZTEoKQogICAgewogICAgICAgICRHID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5nZW5lcmF0b3I1MjEoKTsKICAgICAgICAkYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkZWNkaCA9IG5ldyBFY0RIKCRhZGFwdGVyKTsKICAgICAgICAkZWNkaC0+c2V0U2VuZGVyS2V5KCRHLT5jcmVhdGVQcml2YXRlS2V5KCkpOwogICAgICAgICRlY2RoLT5jYWxjdWxhdGVTaGFyZWRLZXkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdE5vRXhjZXB0aW9uV2hlbkNvcnJlY3RTdGF0ZSgpCiAgICB7CiAgICAgICAgJEcgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjUyMSgpOwogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRlY2RoID0gbmV3IEVjREgoJGFkYXB0ZXIpOwogICAgICAgICRlY2RoLT5zZXRTZW5kZXJLZXkoJEctPmNyZWF0ZVByaXZhdGVLZXkoKSk7CiAgICAgICAgJGVjZGgtPnNldFJlY2lwaWVudEtleSgkRy0+Y3JlYXRlUHJpdmF0ZUtleSgpLT5nZXRQdWJsaWNLZXkoKSk7CgogICAgICAgIC8vIENhbGwgdHdpY2UsIGNvdmVycyBjaGVja2luZyBpZiBzaGFyZWQga2V5IGFscmVhZHkgY3JlYXRlZAogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKFxHTVA6OmNsYXNzLCAkZWNkaC0+Y2FsY3VsYXRlU2hhcmVkS2V5KCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKFxHTVA6OmNsYXNzLCAkZWNkaC0+Y2FsY3VsYXRlU2hhcmVkS2V5KCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/Key/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/Key/PrivateKeyTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDcnlwdG9cS2V5OwoKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xFY0RIXEVjREg7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFB1YmxpY0tleTsKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnA7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50Owp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIFByaXZhdGVLZXlUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEluc3RhbmNlKCkKICAgIHsKICAgICAgICAkbmlzdCA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKTsKCiAgICAgICAgJGdlbmVyYXRvciA9ICRuaXN0LT5nZW5lcmF0b3I1MjEoKTsKICAgICAgICAkY3VydmUgPSAkZ2VuZXJhdG9yLT5nZXRDdXJ2ZSgpOwoKICAgICAgICAka2V5ID0gJGdlbmVyYXRvci0+Y3JlYXRlUHJpdmF0ZUtleSgpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKFB1YmxpY0tleTo6Y2xhc3MsICRrZXktPmdldFB1YmxpY0tleSgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihHZW5lcmF0b3JQb2ludDo6Y2xhc3MsICRrZXktPmdldFBvaW50KCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRTYW1lKCRnZW5lcmF0b3IsICRrZXktPmdldFBvaW50KCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKEN1cnZlRnA6OmNsYXNzLCAka2V5LT5nZXRDdXJ2ZSgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0U2FtZSgkY3VydmUsICRrZXktPmdldEN1cnZlKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKFxHTVA6OmNsYXNzLCAka2V5LT5nZXRTZWNyZXQoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoRWNESDo6Y2xhc3MsICRrZXktPmNyZWF0ZUV4Y2hhbmdlKCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/Key/PublicKeyTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDcnlwdG9cS2V5OwoKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHVibGljS2V5Owp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVGcDsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQ7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXFBvaW50Owp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIFB1YmxpY0tleVRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBHZW5lcmF0b3IgcG9pbnQgaGFzIHggYW5kIHkgb3V0IG9mIHJhbmdlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0QmFkUG9pbnRGb3JHZW5lcmF0b3IoKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRnZW5lcmF0b3IxOTIgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRhZGFwdGVyKS0+Z2VuZXJhdG9yMTkyKCk7CiAgICAgICAgJGdlbmVyYXRvcjM4NCA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoJGFkYXB0ZXIpLT5nZW5lcmF0b3IzODQoKTsKCiAgICAgICAgJHRvb0xhcmdlID0gJGdlbmVyYXRvcjM4NC0+Y3JlYXRlUHJpdmF0ZUtleSgpLT5nZXRQdWJsaWNLZXkoKS0+Z2V0UG9pbnQoKTsKICAgICAgICBuZXcgUHVibGljS2V5KCRhZGFwdGVyLCAkZ2VuZXJhdG9yMTkyLCAkdG9vTGFyZ2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW5zdGFuY2UoKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRhZGFwdGVyKS0+Z2VuZXJhdG9yMTkyKCk7CiAgICAgICAgJGN1cnZlID0gJGdlbmVyYXRvci0+Z2V0Q3VydmUoKTsKICAgICAgICAkcG9pbnQgPSAkZ2VuZXJhdG9yLT5jcmVhdGVQcml2YXRlS2V5KCktPmdldFB1YmxpY0tleSgpLT5nZXRQb2ludCgpOwogICAgICAgICRrZXkgPSBuZXcgUHVibGljS2V5KCRhZGFwdGVyLCAkZ2VuZXJhdG9yLCAkcG9pbnQpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihDdXJ2ZUZwOjpjbGFzcywgJGtleS0+Z2V0Q3VydmUoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFNhbWUoJGN1cnZlLCAka2V5LT5nZXRDdXJ2ZSgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihHZW5lcmF0b3JQb2ludDo6Y2xhc3MsICRrZXktPmdldEdlbmVyYXRvcigpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0U2FtZSgkZ2VuZXJhdG9yLCAka2V5LT5nZXRHZW5lcmF0b3IoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoUG9pbnQ6OmNsYXNzLCAka2V5LT5nZXRQb2ludCgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0U2FtZSgkcG9pbnQsICRrZXktPmdldFBvaW50KCkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/Signature/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/Signature/SignatureTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDcnlwdG9cU2lnbmF0dXJlOwoKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xTaWduYXR1cmVcU2lnbmF0dXJlOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIFNpZ25hdHVyZVRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW5zdGFuY2UoKQogICAgewogICAgICAgICRyID0gZ21wX2luaXQoMTApOwogICAgICAgICRzID0gZ21wX2luaXQoMjApOwogICAgICAgICRzaWduYXR1cmUgPSBuZXcgU2lnbmF0dXJlKCRyLCAkcyk7CiAgICAgICAgJHRoaXMtPmFzc2VydFNhbWUoJHIsICRzaWduYXR1cmUtPmdldFIoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFNhbWUoJHMsICRzaWduYXR1cmUtPmdldFMoKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Crypto/Signature/SignerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDcnlwdG9cU2lnbmF0dXJlOwoKCnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25lcjsKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGg7CnVzZSBNZGFudGVyXEVjY1xUZXN0c1xBYnN0cmFjdFRlc3RDYXNlOwoKY2xhc3MgU2lnbmVyVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdENhc2UKewogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBVbnN1cHBvcnRlZCBoYXNoaW5nIGFsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEludmFsaWRIYXNoQWxnb3JpdGhtKCkKICAgIHsKICAgICAgICAkYWRhcHRlciA9IG5ldyBHbXBNYXRoKCk7CiAgICAgICAgJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMTkyKCk7CiAgICAgICAgJHNpZ25lciA9IG5ldyBTaWduZXIoJGFkYXB0ZXIpOwogICAgICAgICRzaWduZXItPmhhc2hEYXRhKCRnZW5lcmF0b3IsICdibGFoYmxhaCcsICdtZXNzYWdlIHRvIGJlIHNpZ25lZCcpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Curves/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Curves/CurveFactoryTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXEN1cnZlRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xOaXN0Q3VydmU7CnVzZSBNZGFudGVyXEVjY1xDdXJ2ZXNcU2VjZ0N1cnZlOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIEN1cnZlRmFjdG9yeVRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDdXJ2ZU5hbWVzKCkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBbTmlzdEN1cnZlOjpOQU1FX1AxOTJdLAogICAgICAgICAgICBbTmlzdEN1cnZlOjpOQU1FX1AyMjRdLAogICAgICAgICAgICBbTmlzdEN1cnZlOjpOQU1FX1AyNTZdLAogICAgICAgICAgICBbTmlzdEN1cnZlOjpOQU1FX1AzODRdLAogICAgICAgICAgICBbTmlzdEN1cnZlOjpOQU1FX1A1MjFdLAogICAgICAgICAgICBbU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMTEyUjFdLAogICAgICAgICAgICBbU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2UjFdLAogICAgICAgICAgICBbU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMjU2SzFdLAogICAgICAgICAgICBbU2VjZ0N1cnZlOjpOQU1FX1NFQ1BfMzg0UjFdLAogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEN1cnZlTmFtZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RMb2Fkc0N1cnZlQnlOYW1lKCRuYW1lKQogICAgewogICAgICAgICRjdXJ2ZSA9IEN1cnZlRmFjdG9yeTo6Z2V0Q3VydmVCeU5hbWUoJG5hbWUpOwogICAgICAgICRnZW5lcmF0b3IgPSBDdXJ2ZUZhY3Rvcnk6OmdldEdlbmVyYXRvckJ5TmFtZSgkbmFtZSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkbmFtZSwgJGN1cnZlLT5nZXROYW1lKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG5hbWUsICRnZW5lcmF0b3ItPmdldEN1cnZlKCktPmdldE5hbWUoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgVW5rbm93biBjdXJ2ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGYWlsc09uVW5rbm93bkN1cnZlKCkKICAgIHsKICAgICAgICBDdXJ2ZUZhY3Rvcnk6OmdldEN1cnZlQnlOYW1lKCd1bmtub3duJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgVW5rbm93biBnZW5lcmF0b3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RmFpbHNPblVua25vd25HZW5lcmF0b3IoKQogICAgewogICAgICAgIEN1cnZlRmFjdG9yeTo6Z2V0R2VuZXJhdG9yQnlOYW1lKCd1bmtub3duJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Curves/NamedCurveFpTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXE5hbWVkQ3VydmVGcDsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xOaXN0Q3VydmU7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIE5hbWVkQ3VydmVGcFRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW5zdGFuY2UoKQogICAgewogICAgICAgICRjdXJ2ZSA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Y3VydmUzODQoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihOYW1lZEN1cnZlRnA6OmNsYXNzLCAkY3VydmUpOwogICAgICAgIDsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKE5pc3RDdXJ2ZTo6TkFNRV9QMzg0LCAkY3VydmUtPmdldE5hbWUoKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Curves/NistCurveTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0czsKCnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGhJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXFNpZ25hdHVyZVxTaWduYXR1cmU7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25lcjsKdXNlIE1kYW50ZXJcRWNjXFJhbmRvbVxSYW5kb21HZW5lcmF0b3JGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcUmFuZG9tXFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZTsKCmNsYXNzIE5pc3RDdXJ2ZVRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICogQHRlc3Rkb3ggVGVzdCAxOTItYml0IGdlbmVyYXRlZCBjdXJ2ZXMgYWdhaW5zdCBBTlNJIFg5LjYyIHNwZWNpZmljYXRpb25zCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UDE5MkN1cnZlQW5zaVg5NjJWYWxpZGl0eVRlc3QoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICAkZ2VuZXJhdG9yID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygkbWF0aCktPmdlbmVyYXRvcjE5MigpOwoKICAgICAgICAkZCA9IGdtcF9pbml0KCc2NTEwNTY3NzA5MDYwMTUwNzYwNTY4MTA3NjM0NTYzNTg1NjcxOTAxMDAxNTY2OTU2MTU2NjU2NTknLCAxMCk7CiAgICAgICAgJFEgPSAkZ2VuZXJhdG9yLT5tdWwoJGQpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRtYXRoLT5oZXhEZWMoJzB4NjJCMTJENjA2OTBDRENGMzMwQkFCQUI2RTY5NzYzQjQ3MUY5OTRERDcwMkQxNkE1JyksICRtYXRoLT50b1N0cmluZygkUS0+Z2V0WCgpKSk7CgogICAgICAgICRrID0gZ21wX2luaXQoJzYxNDA1MDcwNjcwNjUwMDEwNjMwNjUwNjU1NjU2Njc0MDU1NjAwMDYxNjE1NTY1NjU2NjU2NTY2NTQnLCAxMCk7CiAgICAgICAgJFIgPSAkZ2VuZXJhdG9yLT5tdWwoJGspOwogICAgICAgICRleHBlY3RlZCA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoJG1hdGgpLT5jdXJ2ZTE5MigpLT5nZXRQb2ludCgKICAgICAgICAgICAgZ21wX2luaXQoJzB4ODg1MDUyMzgwRkYxNDdCNzM0QzMzMEM0M0QzOUIyQzRBODlGMjlCMEY3NDlGRUFEJywgMTYpLAogICAgICAgICAgICBnbXBfaW5pdCgnMHg5Q0Y5RkExQ0JFRkVGQjkxNzc0N0EzQkIyOUMwNzJCOTI4OUMyNTQ3ODg0RkQ4MzUnLCAxNikKICAgICAgICApOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkZXhwZWN0ZWQtPmVxdWFscygkUikpOwoKICAgICAgICAkdTEgPSBnbXBfaW5pdCgnMjU2MzY5NzQwOTE4OTQzNDE4NTE5NDczNjEzNDU3OTczMTAxNTM2NjQ5MjQ5NjM5MjE4OTc2MDU5OScsIDEwKTsKICAgICAgICAkdTIgPSBnbXBfaW5pdCgnNjI2NjY0MzgxMzM0ODYxNzk2NzE4NjQ3NzcxMDIzNTc4NTg0OTEzNjQwNjMyMzMzODc4MjIyMDU2OCcsIDEwKTsKCiAgICAgICAgJHRlbXAgPSAkZ2VuZXJhdG9yLT5tdWwoJHUxKS0+YWRkKCRRLT5tdWwoJHUyKSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG1hdGgtPmhleERlYygnMHg4ODUwNTIzODBGRjE0N0I3MzRDMzMwQzQzRDM5QjJDNEE4OUYyOUIwRjc0OUZFQUQnKSwgJG1hdGgtPnRvU3RyaW5nKCR0ZW1wLT5nZXRYKCkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRtYXRoLT5oZXhEZWMoJzB4OUNGOUZBMUNCRUZFRkI5MTc3NDdBM0JCMjlDMDcyQjkyODlDMjU0Nzg4NEZEODM1JyksICRtYXRoLT50b1N0cmluZygkdGVtcC0+Z2V0WSgpKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEIyMlBhcmFtcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZ2V0QWRhcHRlcnMoCiAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgYXJyYXkoJ2NkNmQwZjAyOWEwMjNlOWFhY2E0Mjk2MTViOGY1NzdhYmVlNjg1ZDgyNTdjYzgzYScsCiAgICAgICAgICAgICAgICAgICAgICAnMHgwMDAxOWM0MTA5ODc2ODBlOWZiNmMwYjZlY2MwMWQ5YTI2NDdjOGJhZTI3NzIxYmFjZGZjJywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgnMDAwMTdmMmZjZTIwMzYzOWU5ZWFmOWZiNTBiODFmYzMyNzc2YjMwZTNiMDJhZjE2YzczYicsCiAgICAgICAgICAgICAgICAgICAgICAnMHg5NWRhOTVjNWU3MmRkNDhlMjI5ZDQ3NDhkNGVlZTY1OGE5YTU0MTExYjIzYjJhZGInLCBmYWxzZSwgKSwKICAgICAgICAgICAgICAgIGFycmF5KCcweDRmNzdmOGJjN2ZjY2JhZGQ1NzYwZjQ5Mzg3NDZkNWYyNTNlZTIxNjhjMWNmMjc5MicsCiAgICAgICAgICAgICAgICAgICAgICAnMHgwMDAxNDcxNTZmZjgyNGQxMzE2Mjk3Mzk4MTdlZGIxOTc3MTdjNDFhYWI1YzJhNzBmMGY2JywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgnMHhjNThkNjFmODhkOTA1MjkzYmNkNGNkMDA4MGJjYjFiN2Y4MTFmMmZmYTQxOTc5ZjYnLAogICAgICAgICAgICAgICAgICAgICAgJzB4ODgwNGRjN2E3YzRjN2Y4YjVkNDM3ZjUxNTZmMzMxMmNhN2Q2ZGU4YTBlMTE4NjdmJywgdHJ1ZSwgKSwKICAgICAgICAgICAgICAgIGFycmF5KCcweGNkZjU2YzFhYTNkOGFmYzUzYzUyMWFkZjNmZmI5NjczNGE2YTYzMGE0YTViNWE3MCcsCiAgICAgICAgICAgICAgICAgICAgICAnMHg5N2MxYzQ0YTVmYjIyOTAwN2I1ZWM1ZDI1Zjc0MTNkMTcwMDY4ZmZkMDIzY2FhNGUnLCB0cnVlLCApLAogICAgICAgICAgICAgICAgYXJyYXkoJzB4ODkwMDljMGRjMzYxYzgxZTk5MjgwYzhlOTFkZjU3OGRmODhjZGY0YjBjZGVkY2VkJywKICAgICAgICAgICAgICAgICAgICAgICcweDI3YmU0NGE1MjliNzUxM2U3MjcyNTFmMTI4YjM0MjYyYTBmZDRkOGVjODIzNzdiOScsIHRydWUsICksCiAgICAgICAgICAgICAgICBhcnJheSgnMHg2YTIyM2QwMGJkMjJjNTI4MzM0MDlhMTYzZTA1N2U1YjVkYTFkZWYyYTE5N2RkMTUnLAogICAgICAgICAgICAgICAgICAgICAgJzB4N2I0ODI2MDQxOTkzNjdmMWYzMDNmOWVmNjI3ZjkyMmY5NzAyM2U5MGVhZTA4YWJmJywgdHJ1ZSwgKSwKICAgICAgICAgICAgICAgIGFycmF5KCcweDZkY2NiZGU3NWMwOTQ4Yzk4ZGFiMzJlYTBiYzU5ZmUxMjVjZjBmYjFhMzc5OGVkYScsCiAgICAgICAgICAgICAgICAgICAgICAnMHgwMDAxMTcxYTNlMGZhNjBjZjMwOTZmNGUxMTZiNTU2MTk4ZGU0MzBlMWZiZDMzMGM4ODM1JywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgnMHhkMjY2YjM5ZTFmNDkxZmM0YWNiYmJjN2QwOTg0MzA5MzFjZmE2NmQ1NTAxNWFmMTInLAogICAgICAgICAgICAgICAgICAgICAgJzB4MTkzNzgyZWI5MDllMzkxYTMxNDhiNzc2NGU2YjIzNGFhOTRlNDhkMzBhMTZkYmIyJywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgnMHg5ZDZkZGJjZDQzOWJhYTBjNmI4MGE2NTQwOTE2ODBlNDYyYTdkMWQzZjFmZmViNDMnLAogICAgICAgICAgICAgICAgICAgICAgJzB4NmFkOGVmYzRkMTMzY2NmMTY3YzQ0ZWI0NjkxYzgwYWJmZmI5ZjgyYjkzMmI4Y2FhJywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgnMHgxNDY0NzlkOTQ0ZTZiZGE4N2U1YjM1ODE4YWE2NjZhNGM5OThhNzFmNGU5NWVkYmMnLAogICAgICAgICAgICAgICAgICAgICAgJzB4YTg2ZDZmZTYyYmM4ZmJkODgxMzk2OTNmODQyNjM1ZjY4N2YxMzIyNTU4NThlN2Y2JywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgnMHhlNTk0ZDRhNTk4MDQ2ZjM1OTgyNDNmNTBmZDJjN2JkN2QzODBlZGIwNTU4MDIyNTMnLAogICAgICAgICAgICAgICAgJzB4NTA5MDE0YzBjNGQ2YjUzNmUzY2E3NTBlYzA5MDY2YWYzOWI0Yzg2MTZhNTNhOTIzJywKICAgICAgICAgICAgICAgIGZhbHNlLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEIyMlBhcmFtcwogICAgICogQHRlc3Rkb3ggVGVzdCAxOTItYml0IGdlbmVyYXRlZCBjdXJ2ZSBwb2ludHMgYWdhaW5zdCBFQ0RTQVZTIHNlY3Rpb24gQjIuMiBzYW1wbGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UDE5MkN1cnZlRWNkc2F2c0IyMlBvaW50VmFsaWRpdHlUZXN0KEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgsICR4LCAkeSwgJGV4cGVjdGVkKQogICAgewogICAgICAgICR4ID0gZ21wX2luaXQoJHgsIDE2KTsKICAgICAgICAkeSA9IGdtcF9pbml0KCR5LCAxNik7CgogICAgICAgICRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRtYXRoKS0+Z2VuZXJhdG9yMTkyKCk7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkLCAkZ2VuZXJhdG9yLT5pc1ZhbGlkKCR4LCAkeSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCMjRQYXJhbXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2dldEFkYXB0ZXJzKAogICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICcweDg0Y2U3MmFhODY5OWRmNDM2MDU5ZjA1MmFjNTFiNjM5OGQyNTExZTQ5NjMxYmNiN2U3MWY4OWM0OTliOWVlNDI1ZGZiYzEzYTVmNmQ0MDg0NzFiMDU0ZjI2NTU2MTdjYmJhZjc5MzdiN2M4MGNkODg2NWNmMDJjODQ4N2QzMGQyYjBmYmQ4YjJjNGUxMDJlMTZkODI4Mzc0YmJjNDdiOTM4NTJmMjEyZDUwNDNjM2VhNzIwZjA4NjE3OGZmNzk4Y2M0ZjYzZjc4N2I5YzJlNDE5ZWZhMDMzZTc2NDRlYTc5MzZmNTQ0NjJkYzIxYTZjNDU4MDcyNWY3ZjBlN2QxNTgnLAogICAgICAgICAgICAgICAgICAgICcweGQ5ZGJmYjMzMmFhOGU1ZmYwOTFlOGNlNTM1ODU3YzM3YzczZjYyNTBmZmIyZTdhYycsCiAgICAgICAgICAgICAgICAgICAgJzB4MjgyMTAyZTM2NGZlZGVkM2FkMTVkZGY5NjhmODhkODMyMWFhMjY4ZGQ0ODNlYmM0JywKICAgICAgICAgICAgICAgICAgICAnMHg2NGRjYTU4YTIwNzg3YzQ4OGQxMWQ2ZGQ5NjMxM2YxYjc2NmYyZDhlZmUxMjI5MTYnLAogICAgICAgICAgICAgICAgICAgICcweDFlY2JhMjgxNDFlODRhYjRlY2FkOTJmNTY3MjBlMmNjODNlYjNkMjJkZWM3MjQ3OScsIHRydWUsICksCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnMHg5NGJiNWJhY2Q1ZjhlYTc2NTgxMDAyNGRiODdmNDIyNGFkNzEzNjJhM2MyODI4NGIyYjlmMzlmYWI4NmRiMTJlOGJlYjk0YWFlODk5NzY4MjI5YmU4ZmRiNmM0ZjEyZjI4OTEyYmI2MDQ3MDNhNzljY2ZmNzY5YzE2MDdmNWE5MTQ1MGYzMGJhMDQ2MGQzNTlkOTEyNmNiZDYyOTZiZTZkOWM0YmI5NmMwZWU3NGNiYjQ0MTk3YzIwN2Y2ZGIzMjZhYjZmNWE2NTkxMTNhOTAzNGU1NGJlN2IwNDFjZWQ5ZGNmNjQ1OGQ3ZmI5Y2JmYjI3NDRkOTk5ZjdkZmQ2M2Y0JywKICAgICAgICAgICAgICAgICAgICAnMHgzZTUzZWY4ZDMxMTJhZjMyODVjMGU3NDg0MjA5MDcxMmNkMzI0ODMyZDQyNzdhZTcnLAogICAgICAgICAgICAgICAgICAgICcweGNjNzVmODk1MmQzMGFlYzJjYmI3MTlmYzZhYTk5MzQ1OTBiNWQwZmY1YTgzYWRiNycsCiAgICAgICAgICAgICAgICAgICAgJzB4ODI4NTI2MTYwNzI4M2JhMThmMzM1MDI2MTMwYmFiMzE4NDBkY2ZkOWMzZTU1NWFmJywKICAgICAgICAgICAgICAgICAgICAnMHgzNTZkODllMWIwNDU0MWFmYzk3MDRhNDVlOWM1MzVjZTRhNTA5MjllMzNkN2UwNmMnLCB0cnVlLCApLAogICAgICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJzB4ZjYyMjdhOGVlYjM0YWZlZDE2MjFkY2M4OWE5MWQ3MmVhMjEyY2IyZjQ3NjgzOWQ5YjQyNDNjNjY4Nzc5MTFiMzdiNGFkNmY0NDQ4NzkyYTdiYmJhNzZjNjNiZGQ2MzQxNGI2ZmFjYWI3ZGM3MWMzMzk2YTczYmQ3ZWUxNGNkZDQxYTY1OWM2MWM5OWI3NzljZWNmMDdiYzUxYWIzOTFhYTMyNTIzODYyNDJiOTg1M2VhN2RhNjdmZDc2OGQzMDNmMWI5YjUxM2Q0MDE1NjViNmYxZWI3MjJkZmRiOTZiNTE5ZmU0ZjliZDVkZTY3YWUxMzFlNjRiNDBlNzhjNDJkZCcsCiAgICAgICAgICAgICAgICAgICAgJzB4MTYzMzVkYmU5NWY4ZTgyNTRhNGUwNDU3NWQ3MzZiZWZiMjU4Yjg2NTdmNzczY2I3JywKICAgICAgICAgICAgICAgICAgICAnMHg0MjFiMTMzNzljNTliYzlkY2UzOGExMDk5Y2E3OWJiZDA2ZDY0N2M3ZjYyNDIzMzYnLAogICAgICAgICAgICAgICAgICAgICcweDQxNDFiZDVkNjRlYTM2YzViMGJkMjFlZjI4YzAyZGEyMTZlZDlkMDQ1MjJiMWU5MScsCiAgICAgICAgICAgICAgICAgICAgJzB4MTU5YTZhYTg1MmJjYzU3OWU4MjFiN2JiMDk5NGMwODYxZmIwODI4MGMzOGRhYTA5JywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnMHgxNmI1ZjkzYWZkMGQwMjI0NmY2NjI3NjFlZDhlMGRkOTUwNDY4MWVkMDJhMjUzMDA2ZWIzNjczNmI1NjMwOTdiYTM5ZjgxYzhlMWJjZTdhMTZjMTMzOWUzNDVlZmFiYmM2YmFhM2VmYjA2MTI5NDhhZTUxMTAzMzgyYThlZThiYzQ0OGUzZWY3MWU5ZjZmN2E5Njc2Njk0ODMxZDdmNWRkMGRiNTQ0NmYxNzliY2I3MzdkNGE1MjYzNjdhNDQ3YmZlMmM4NTc1MjFjN2Y0MGI2ZDdkN2UwMWExODBkOTI0MzFmYjBiYmQyOWMwNGEwYzQyMGE1N2IzZWQyNmNjZDhhJywKICAgICAgICAgICAgICAgICAgICAnMHhmZDE0Y2RmMTYwN2Y1ZWZiN2IxNzkzMDM3YjE1YmRmNGJhYTZmN2MxNjM0MWFiMGInLAogICAgICAgICAgICAgICAgICAgICcweDgzZmEwNzk1Y2M2YzQ3OTViOTAxNmRhYzkyOGZkNmJhYzMyZjMyMjlhOTYzMTJjNCcsCiAgICAgICAgICAgICAgICAgICAgJzB4OGRmZGI4MzI5NTFlMDE2N2M1ZDc2MmE0NzNjMDQxNmM1YzE1YmMxMTk1NjY3ZGMxJywKICAgICAgICAgICAgICAgICAgICAnMHgxNzIwMjg4YTJkYzEzZmExZWM3OGY3NjNmOGZlMmZmNzM1NGE3ZTZmZGRlNDQ1MjAnLCBmYWxzZSwgKSwKICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICcweDA4YTIwMjRiNjFiNzlkMjYwZTNiYjQzZWYxNTY1OWFlYzg5ZTViNTYwMTk5YmM4MmNmN2M2NWM3N2QzOTE5MmUwM2I5YTg5NWQ3NjY2NTUxMDVlZGQ5MTg4MjQyYjkxZmJkZTQxNjdmNzg2MmQ0ZGRkNjFlNWQ0YWI1NTE5NjY4M2Q0ZjEzY2ViOTBkODdhZWE2ZTA3ZWI1MGE4NzRlMzMwODZjNGE3Y2IwMjczYThlMWM0NDA4ZjRiODQ2YmNlYWUxZWJhYWMxYjJiMmVhODUxYTliMDlkZTMyMmVmZTM0Y2ViZTYwMTY1M2VmZDZkZGM4NzZjZThjMmYyMDcyZmInLAogICAgICAgICAgICAgICAgICAgICcweDY3NGY5NDFkYzFhMWY4Yjc2M2M5MzM0ZDcyNjE3MmQ1MjdiOTBjYTMyNGRiODgyOCcsCiAgICAgICAgICAgICAgICAgICAgJzB4NjVhZGZhMzJlOGIyMzZjYjMzYTNlODRjZjU5YmZiOTQxN2FlN2U4ZWRlNTdhN2ZmJywKICAgICAgICAgICAgICAgICAgICAnMHg5NTA4YjlmZGQ3ZGFmMGQ4MTI2ZjllMmJjNWEzNWU0YzZkODAwYjViODA0ZDc3OTYnLAogICAgICAgICAgICAgICAgICAgICcweDM2ZjJiZjZiMjFiOTg3Yzc3YjUzYmI4MDFiMzQzNWE1NzdlM2Q0OTM3NDRiZmFiMCcsIGZhbHNlLCApLAogICAgICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJzB4MTg0M2FiYTc0YjA3ODlkNGFjNmIwYjg5MjM4NDgwMjNhNjQ0YTdiNzBhZmEyM2IxMTkxODI5YmJlNDM5N2NlMTViNjI5YmYyMWE4ODM4Mjk4NjUzZWQwYzE5MjIyYjk1ZmE0ZjczOTBkMWI0Yzg0NGQ5NmU2NDU1MzdlMGFhZTk4YWZiNWMwYWMzYmQwZTRjMzdmOGRhYWZmMjU1NTZjNjRlOThjMzE5YzUyNjg3YzkwNGM0ZGU3MjQwYTFjYzU1Y2Q5NzU2YjdlZGFlZjE4NGU2ZTIzYjM4NTcyNmU5ZmZjYmE4MDAxYjhmNTc0OTg3YzFhM2ZlZGFhYTgzY2E2ZCcsCiAgICAgICAgICAgICAgICAgICAgJzB4MTBlY2NhMWFhZDcyMjBiNTZhNjIwMDhiMzUxNzBiZmQ1ZTM1ODg1YzQwMTRhMTlmJywKICAgICAgICAgICAgICAgICAgICAnMHgwNGViNjE5ODRjNmMxMmFkZTNiYzQ3ZjNjNjI5ZWNlN2FhMGEwMzNiOTk0OGQ2ODYnLAogICAgICAgICAgICAgICAgICAgICcweDgyYmZhNGU4MmMwZGZlOTI3NDE2OWI4NjY5NGU3NmNlOTkzZmQ4M2I1YzYwZjMyNScsCiAgICAgICAgICAgICAgICAgICAgJzB4YTk3Njg1Njc2YzU5YTY1ZGJkZTAwMmZlOWQ2MTM0MzFmYjE4M2U4MDA2ZDA1NjMzJywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnMHg1YTQ3OGY0MDg0ZGRkMWE3ZmVhMDM4YWE5NzMyYTgyMjEwNjM4NTc5N2QwMjMxMWFlZWY0ZDAyNjRmODI0ZjY5OGRmN2E0OGNmYjZiNTc4Y2YzZGE0MTZiYzA3OTk0MjViYjQ5MWJlNWI1ZWNjMzc5OTViODViMDM0MjBhOThmMmM0ZGM1YzMxYTY5YTM3OWU5ZTMyMmZiZTcwNmJiY2FmMGY3NzE3NWUwNWNiYjRmYTE2MmUwZGE4MjAxMGEyNzg0NjFlM2U5NzRkMTM3YmM3NDZkMTg4MGQ2ZWIwMmFhOTUyMTYwMTRiMzc0ODBkODRiODdmNzE3YmIxM2Y3NmUxJywKICAgICAgICAgICAgICAgICAgICAnMHg2NjM2NjUzY2I1Yjg5NGNhNjVjNDQ4Mjc3YjI5ZGEzYWQxMDFjNGMyMzAwZjdjMDQnLAogICAgICAgICAgICAgICAgICAgICcweGZkZjFjYmIzZmMzZmQ2YTRmODkwYjU5ZTU1NDU0NDE3NWZhNzdkYmRiZWI2NTZjMScsCiAgICAgICAgICAgICAgICAgICAgJzB4ZWFjMmRkZWNkZGZiNzk5MzFhOWMzZDQ5YzA4ZGUwNjQ1Yzc4M2EyNGNiMzY1ZTFjJywKICAgICAgICAgICAgICAgICAgICAnMHgzNTQ5ZmVlM2NmYTdlNWY5M2JjNDdkOTJkOGJhMTAwZTg4MWEyYTkzYzIyZjhkNTAnLCBmYWxzZSwgKSwKICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICcweGM1OTg3NzQyNTlhMDU4ZmE2NTIxMmFjNTdlYWE0ZjUyMjQwZTYyOWVmNGMzMTA3MjIwODgyOTJkMWQ0YWY2YzM5YjQ5Y2UwNmJhNzdlNDI0N2IyMDYzNzE3NGQwYmQ2N2M5NzIzZmViNTdiNWVhZDIzMmI0N2VhNDUyZDVkN2EwODlmMTdjMDBiOGI2NzY3ZTQzNGE1ZTE2YzIzMWJhMGVmYTcxOGEzNDBiZjQxZDY3ZWEyZDI5NTgxMmZmMWI5Mjc3ZGFhY2I4YmMyN2I1MGVhNWU2NDQzYmNmOTVlZjRlOWY1NDY4ZmU3ODQ4NTIzNjMxM2Q1M2QxYzY4ZjZiYTInLAogICAgICAgICAgICAgICAgICAgICcweGE4MmJkNzE4ZDAxZDM1NDAwMTE0OGNkNWY2OWI5ZWJmMzhmZjZmMjE4OThmOGFhYScsCiAgICAgICAgICAgICAgICAgICAgJzB4ZTY3Y2VlZGUwN2ZjMmViZmFmZDYyNDYyYTUxZTRiNmM2YjNkNWI1MzdiN2NhZjNlJywKICAgICAgICAgICAgICAgICAgICAnMHg0ZDI5MjQ4NmM2MjBjM2RlMjA4NTZlNTdkM2JiNzJmY2RlNGE3M2FkMjYzNzY5NTUnLAogICAgICAgICAgICAgICAgICAgICcweGE4NTI4OTU5MWE2MDgxZDU3Mjg4MjU1MjBlNjJmZjFjNjRmOTQyMzVjMDRjN2Y5NScsIGZhbHNlLCApLAogICAgICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJzB4Y2E5OGVkOWRiMDgxYTA3Yjc1NTdmMjRjZWQ2YzdiOTg5MTI2OWE5NWQyMDI2NzQ3YWRkOWU5ZWI4MDYzOGE5NjFjZjljNzFhMWI5ZjJjMjk3NDQxODBiZDRjM2QzZGI2MGYyMjQzYzVjMGI3Y2M4YThkNDBhM2Y5YTdmYzkxMDI1MGYyMTg3MTM2ZWU2NDEzZmZjNjdmMWEyNWUxYzRjMjA0ZmE5NjM1MzEyMjUyYWMwZTA0ODFkODliNmQ1MzgwOGYwYzQ5NmJhODc2MzE4MDNmNmM1NzJjMWY2MWZhMDQ5NzM3ZmRhY2NlNGFkZmY3NTdhZmVkNGYwNWJlYjY1OCcsCiAgICAgICAgICAgICAgICAgICAgJzB4N2QzYjAxNmI1Nzc1OGIxNjBjNGZjYTczZDQ4ZGYwN2FlM2I2YjMwMjI1MTI2YzJmJywKICAgICAgICAgICAgICAgICAgICAnMHg0YWYzNzkwZDk3NzU3NDJiZGU0NmY4ZGE4NzY3MTFiZTFiNjUyNDRiMmIzOWU3ZWMnLAogICAgICAgICAgICAgICAgICAgICcweDk1Zjc3OGY1ZjY1NjUxMWE1YWI0OWE1ZDY5ZGRkMDkyOTU2M2MyOWNiYzNhOWU2MicsCiAgICAgICAgICAgICAgICAgICAgJzB4NzVjODdmYzM1OGMyNTFiNGM4M2QyZGQ5NzlmYWFkNDk2YjUzOWY5ZjJlZTdhMjg5JywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnMHgzMWRkOWE1NGM4MzM4YmVhMDZiODdlY2E4MTNkNTU1YWQxODUwZmFjOTc0MmVmMGJiZTQwZGFkNDAwZTEwMjg4YWNjOWMxMWVhN2RhYzc5ZWIxNjM3OGViZWE5NDkwZTA5NTM2MDk5ZjFiOTkzZTI2NTNjZDUwMjQwMDE0YzkwYTljOTg3ZjY0NTQ1YWJjNmE1MzZiOWJkMjQzNWViNWU5MTFmZGZkZTJmMTNiZTk2ZWEzNmFkMzhkZjRhZTllYTM4N2IyOWNjZWQ1OTlhZjc3NzMzOGFmMjc5NDgyMGM5Y2NlNDNiNTFkMjExMjM4MGEzNTgwMmFiN2UzOTZjOTdhJywKICAgICAgICAgICAgICAgICAgICAnMHg5MzYyZjI4YzRlZjk2NDUzZDhhMmY4NDlmMjFlODgxY2Q3NTY2ODg3ZGE4YmViNGEnLAogICAgICAgICAgICAgICAgICAgICcweGU2NGQyNmQ4ZDc0YzQ4YTAyNGFlODVkOTgyZWU3NGNkMTYwNDZmNGVlNTMzMzkwNScsCiAgICAgICAgICAgICAgICAgICAgJzB4ZjM5MjM0NzZhMjk2Yzg4Mjg3ZThkZTkxNGIwYjMyNGFkNWE5NjMzMTlhNGZlNzNiJywKICAgICAgICAgICAgICAgICAgICAnMHhmMGJhZWVkNzYyNGVkMDBkMTUyNDRkOGJhMmFlZGUwODU1MTdkYmRlYzhhYzY1ZjUnLCB0cnVlLCApLAogICAgICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJzB4YjJiOTRlNDQzMjI2N2M5MmY5ZmRiOWRjNjA0MGM5NWZmYTQ3NzY1Mjc2MTI5MGQzYzdkZTMxMjI4M2Y2NDUwZDg5Y2M0YWFiZTc0ODU1NGRmYjYwNTZiMmQ4ZTk5YzdhZWFhZDljZGRkZWJkZWU5ZGJjMDk5ODM5NTYyZDkwNjRlNjhlN2JiNWYzYTZiYmEwNzQ5Y2E5YTUzODE4MWZjNzg1NTUzYTQwMDA3ODVkNzNjYzIwNzkyMmY2M2U4Y2UxMTEyNzY4Y2IxZGU3YjY3M2FlZDgzYTFlNGE3NDU5MmYxMjY4ZDhlMmE0ZTllNjNkNDE0YjVkNDQyYmQwNDU2ZCcsCiAgICAgICAgICAgICAgICAgICAgJzB4Y2M2ZmMwMzJhODQ2YWFhYzI1NTMzZWIwMzM1MjI4MjRmOTRlNjcwZmE5OTdlY2VmJywKICAgICAgICAgICAgICAgICAgICAnMHhlMjU0NjNlZjc3YTAyOWVjY2RhOGIyOTRmZDYzZGQ2OTRlMzhkMjIzZDMwODYyZjEnLAogICAgICAgICAgICAgICAgICAgICcweDA2NmIxZDA3ZjNhNDBlNjc5YjYyMGVkYTdmNTUwODQyYTM1YzE4YjgwYzVlYmUwNicsCiAgICAgICAgICAgICAgICAgICAgJzB4YTBiMGZiMjAxZThmMmRmNjVlMmM0NTA4ZWYzMDNiZGM5MGQ5MzQwMTZmMTZiMmRjJywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnMHg0MzY2ZmNhZGYxMGQzMGQwODY5MTFkZTMwMTQzZGE2ZjU3OTUyNzAzNjkzNzAwN2IzMzdmNzI4MjQ2MGVhZTU2NzhiMTVjY2NkYTg1MzE5M2VhNWZjNGJjMGE2YjlkN2EzMTEyOGYyN2UxMjE0OTg4NTkyODI3NTIwYjIxNGVlZDUwNTJmNzc3NWI3NTBiMGM2YjE1ZjE0NTQ1M2JhM2ZlZTI0YTA4NWQ2NTI4N2UxMDUwOWViNWQ1ZjYwMmM0NDAzNDEzNzZiOTVjMjRlNWM0NzI3ZDRiODU5YmZlMTQ4M2QyMDUzOGFjZGQ5MmM3OTk3ZmE5YzYxNGYwZjgzOWQ3JywKICAgICAgICAgICAgICAgICAgICAnMHg5NTVjOTA4ZmU5MDBhOTk2ZjdlMjA4OWJlZTJmNjM3NjgzMGY3NmExOTEzNWU3NTMnLAogICAgICAgICAgICAgICAgICAgICcweGJhMGM0MmE5MWQzODQ3ZGU0YTU5MmE0NmRjM2ZkYWY0NWE3Y2M3MDliOTBkZTUyMCcsCiAgICAgICAgICAgICAgICAgICAgJzB4MWY1OGFkNzdmYzA0Yzc4MjgxNWExNDA1YjA5MjVlNzIwOTVkOTA2Y2JmNTJhNjY4JywKICAgICAgICAgICAgICAgICAgICAnMHhmMmU5Mzc1OGIzYWY3NWVkZjc4NGYwNWE2NzYxYzliOWE2MDQzYzY2Yjg0NWI1OTknLCBmYWxzZSwgKSwKICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICcweDU0M2Y4YWY1N2Q3NTBlMzNhYTg1NjVlMGNhZTkyYmZhN2ExZmY3ODgzMzA5MzQyMWMyOTQyY2FkZjk5ODY2NzBhNWZmMzI0NGMwMmE4MjI1ZTc5MGZiZjMwZWE4NGM3NDcyMGFiZjk5Y2ZkMTBkMDJkMzQzNzdjM2QzYjQxMjY5YmVhNzYzMzg0ZjM3MmJiNzg2YjU4NDZmNTg5MzJkZWZhNjgwMjMxMzZjZDU3MTg2M2IzMDQ4ODZlOTVlNTJlNzg3N2Y0NDViOTM2NGIzZjA2ZjNjMjhkYTEyNzA3NjczZmVjYjRiODA3MWRlMDZiNmUwYTNjODdkYTE2MGNlZjMnLAogICAgICAgICAgICAgICAgICAgICcweDMxZjdmYTA1NTc2ZDc4YTk0OWIyNDgxMmQ0MzgzMTA3YTlhNDViYjVmY2NkZDgzNScsCiAgICAgICAgICAgICAgICAgICAgJzB4OGRjMGViNjU5OTRhOTBmMDJiNWUxOWJkMThiMzJkNjExNTA3NDZjMDkxMDdlNzZiJywKICAgICAgICAgICAgICAgICAgICAnMHhiZTI2ZDU5ZTRlODgzZGRlN2MyODY2MTRhNzY3YjMxZTQ5YWQ4ODc4OWQzYTc4ZmYnLAogICAgICAgICAgICAgICAgICAgICcweDg3NjJjYTgzMWMxY2U0MmRmNzc4OTNjOWIwMzExOTQyOGU3YTliODE5YjYxOTA2OCcsIGZhbHNlLCApLAogICAgICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJzB4ZDJlODQ1NDE0M2NlMjgxZTYwOWE5ZDc0ODAxNGRjZWJiOWQwYmM1M2FkYjAyNDQzYTZhYWMyZmZlNmNiMDA5ZjM4N2MzNDZlY2IwNTE3OTE0MDRmNzllOTAyZWUzMzNhZDY1ZTVjOGNiMzhkYzBkMWQzOWE4ZGM5MGFkZDUwMjM1NzI3MjBlNWI5NGIxOTBkNDNkZDBkNzg3MzM5NzUwNGMwYzdhZWYyNzI3ZTYyOGViNmE3NDQxMWYyZTQwMGM2NTY3MDcxNmNiNGE4MTVkYzkxY2JiZmViN2NmZThjOTI5ZTkzMTg0YzkzOGFmMmMwNzg1ODRkYTA0NWU4ZjhkMScsCiAgICAgICAgICAgICAgICAgICAgJzB4NjZhYThlZGJiZGI1Y2Y4ZTI4Y2ViNTFiNWJkYTg5MWNhZTJkZjg0ODE5ZmUyNWMwJywKICAgICAgICAgICAgICAgICAgICAnMHgwYzZiYzJmNjkwMzBhN2NlNThkNGEwMGUzYjMzNDk4NDQ3ODRhMTNiODkzNmY4ZGEnLAogICAgICAgICAgICAgICAgICAgICcweGE0NjYxZTY5YjE3MzRmNGE3MWI3ODg0MTBhNDY0YjcxZTdmZmU0MjMzNDQ4NGYyMycsCiAgICAgICAgICAgICAgICAgICAgJzB4NzM4NDIxY2Y1ZTA0OTE1OWQ2OWM1N2E5MTUxNDNlMjI2Y2FjODM1NWUxNDlhZmU5JywgZmFsc2UsICksCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnMHg2NjYwNzE3MTQ0MDQwZjNlMmY5NWE0ZTI1YjA4YTcwNzljNzAyYThiMjliYWJhZDVhMTlhODc2NTRiYzVjNWFmYTI2MTUxMmExMWI5OThhNGZiMzZiNWQ4ZmU4YmQ5NDI3OTJmZjAzMjRiMTA4MTIwZGU4NmQ2M2Y2NTg1NWU1NDYxMTg0ZmM5NmEwYThmZmQyY2U2ZDVkZmIwMjMwY2JiZGQ5OGY4NTQzZTM2MWIzMjA1ZjVkYTNkNTAwZmRjOGJhYzZkYjM3N2Q3NWViZWYzY2I4ZjRkMWZmNzM4MDcxYWQwOTM4OTE3ODg5MjUwYjQxZGQxZDk4ODk2Y2EwNmZiJywKICAgICAgICAgICAgICAgICAgICAnMHhiY2ZhY2Y0NTEzOWI2ZjVmNjkwYTRjMzVhNWZmZmE0OTg3OTQxMzZhMjM1M2ZjNzcnLAogICAgICAgICAgICAgICAgICAgICcweDZmNGE2YzkwNjMxNmE2YWZjNmQ5OGZlMWYwMzk5ZDA1NmYxMjhmZTAyNzBiMGYyMicsCiAgICAgICAgICAgICAgICAgICAgJzB4OWRiNjc5YTNkYWZlNDhmN2NjYWQxMjI5MzNhY2ZlOWRhMDk3MGI3MWM5NGMyMWMxJywKICAgICAgICAgICAgICAgICAgICAnMHg5ODRjMmRiOTk4Mjc1NzZjMGE0MWE1ZGE0MWUwN2Q4Y2M3NjhiYzgyZjE4YzlkYTknLCBmYWxzZSwgKSwKICAgICAgICAgICAgKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEIyNFBhcmFtcwogICAgICogQHRlc3Rkb3ggVGVzdCAxOTItYml0IGdlbmVyYXRlZCBjdXJ2ZSBwb2ludHMgYWdhaW5zdCBFQ0RTQVZTIHNlY3Rpb24gQjIuNCBzYW1wbGVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UDE5MkN1cnZlRWNkc2F2c0IyNFNpZ25hdHVyZVZhbGlkaXR5VGVzdChHbXBNYXRoSW50ZXJmYWNlICRtYXRoLCAkbXNnLCAkUXgsICRReSwgJFIsICRTLCAkZXhwZWN0ZWQpCiAgICB7CiAgICAgICAgJG1zZyA9IGdtcF9pbml0KCRtc2csIDE2KTsKICAgICAgICAkUXggPSBnbXBfaW5pdCgkUXgsIDE2KTsKICAgICAgICAkUXkgPSBnbXBfaW5pdCgkUXksIDE2KTsKICAgICAgICAkUiA9IGdtcF9pbml0KCRSLCAxNik7CiAgICAgICAgJFMgPSBnbXBfaW5pdCgkUywgMTYpOwoKICAgICAgICAkZ2VuZXJhdG9yID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygkbWF0aCktPmdlbmVyYXRvcjE5MigpOwoKICAgICAgICAkcHVibGljS2V5ID0gJGdlbmVyYXRvci0+Z2V0UHVibGljS2V5RnJvbSgkUXgsICRReSk7CiAgICAgICAgJHNpZ25lciA9IG5ldyBTaWduZXIoJG1hdGgpOwoKICAgICAgICAkYWN0dWFsID0gJHNpZ25lci0+dmVyaWZ5KCRwdWJsaWNLZXksIG5ldyBTaWduYXR1cmUoJFIsICRTKSwgJG1hdGgtPmRpZ2VzdEludGVnZXIoJG1zZykpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZCwgJGFjdHVhbCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpZ25hdHVyZVZhbGlkaXR5QWRhcHRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X2dldEFkYXB0ZXJzKAogICAgICAgICAgICBhcnJheShhcnJheShhcnJheSgKICAgICAgICAgICAgICAgICdkJyA9PiAnNjUxMDU2NzcwOTA2MDE1MDc2MDU2ODEwNzYzNDU2MzU4NTY3MTkwMTAwMTU2Njk1NjE1NjY1NjU5JywKICAgICAgICAgICAgICAgICdrJyA9PiAnNjE0MDUwNzA2NzA2NTAwMTA2MzA2NTA2NTU2NTY2NzQwNTU2MDAwNjE2MTU1NjU2NTY2NTY1NjY1NCcsCiAgICAgICAgICAgICAgICAnZScgPT4gJzk2ODIzNjg3MzcxNTk4ODYxNDE3MDU2OTA3MzUxNTMxNTcwNzU2Njc2NjQ3OTUxNycsCiAgICAgICAgICAgICAgICAnUicgPT4gJzMzNDI0MDM1MzY0MDU5ODE3MjkzOTM0ODgzMzQ2OTQ2MDA0MTU1OTY4ODE4MjY4NjkzNTE2Nzc2MTMnLAogICAgICAgICAgICAgICAgJ1MnID0+ICc1NzM1ODIyMzI4ODg4MTU1MjU0NjgzODk0OTk3ODk3NTcxOTUxNTY4NTUzNjQyODkyMDI5OTgyMzQyJwogICAgICAgICAgICApKSkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRTaWduYXR1cmVWYWxpZGl0eUFkYXB0ZXJzCiAgICAgKiBAdGVzdGRveCBWYWxpZCBoYXNoZXMgYXJlIGNvcnJlY3RseSB2YWxpZGF0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0U2lnbmF0dXJlVmFsaWRpdHlXaXRoQ29ycmVjdEhhc2goR21wTWF0aEludGVyZmFjZSAkbWF0aCwgYXJyYXkgJHZhbHVlcykKICAgIHsKICAgICAgICAkZ2VuZXJhdG9yID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygkbWF0aCktPmdlbmVyYXRvcjE5MigpOwoKICAgICAgICAkcHJpdmF0ZUtleSA9ICRnZW5lcmF0b3ItPmdldFByaXZhdGVLZXlGcm9tKGdtcF9pbml0KCR2YWx1ZXNbJ2QnXSwgMTApKTsKICAgICAgICAkcHVibGljS2V5ID0gJHByaXZhdGVLZXktPmdldFB1YmxpY0tleSgpOwogICAgICAgICRzaWduZXIgPSBuZXcgU2lnbmVyKCRtYXRoKTsKCiAgICAgICAgJHNpZyA9ICRzaWduZXItPnNpZ24oJHByaXZhdGVLZXksIGdtcF9pbml0KCR2YWx1ZXNbJ2UnXSwgMTApLCBnbXBfaW5pdCgkdmFsdWVzWydrJ10sIDEwKSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHZhbHVlc1snUiddLCAkbWF0aC0+dG9TdHJpbmcoJHNpZy0+Z2V0UigpKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkdmFsdWVzWydTJ10sICRtYXRoLT50b1N0cmluZygkc2lnLT5nZXRTKCkpKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHNpZ25lci0+dmVyaWZ5KCRwdWJsaWNLZXksICRzaWcsIGdtcF9pbml0KCR2YWx1ZXNbJ2UnXSwgMTApKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldFNpZ25hdHVyZVZhbGlkaXR5QWRhcHRlcnMKICAgICAqIEB0ZXN0ZG94IEZvcmdlZCBoYXNoZXMgYXJlIGNvcnJlY3RseSByZWplY3RlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RTaWduYXR1cmVWYWxpZGl0eVdpdGhGb3JnZWRIYXNoKEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgsIGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoJG1hdGgpLT5nZW5lcmF0b3IxOTIoKTsKCiAgICAgICAgJHByaXZhdGVLZXkgPSAkZ2VuZXJhdG9yLT5nZXRQcml2YXRlS2V5RnJvbShnbXBfaW5pdCgkdmFsdWVzWydkJ10sIDEwKSk7CiAgICAgICAgJHB1YmxpY0tleSA9ICRwcml2YXRlS2V5LT5nZXRQdWJsaWNLZXkoKTsKICAgICAgICAkc2lnbmVyID0gbmV3IFNpZ25lcigkbWF0aCk7CgogICAgICAgICRzaWcgPSAkc2lnbmVyLT5zaWduKCRwcml2YXRlS2V5LCBnbXBfaW5pdCgkdmFsdWVzWydlJ10sIDEwKSwgZ21wX2luaXQoJHZhbHVlc1snayddLCAxMCkpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCR2YWx1ZXNbJ1InXSwgJG1hdGgtPnRvU3RyaW5nKCRzaWctPmdldFIoKSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHZhbHVlc1snUyddLCAkbWF0aC0+dG9TdHJpbmcoJHNpZy0+Z2V0UygpKSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZSgkc2lnbmVyLT52ZXJpZnkoJHB1YmxpY0tleSwgJHNpZywgJG1hdGgtPnN1YihnbXBfaW5pdCgkdmFsdWVzWydlJ10sIDEwKSwgZ21wX2luaXQoMSwgMTApKSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBZGFwdGVyc1dpdGhSYW5kKCkKICAgIHsKICAgICAgICAkcm5ncyA9IGFycmF5KAogICAgICAgICAgICBhcnJheShSYW5kb21HZW5lcmF0b3JGYWN0b3J5OjpnZXRSYW5kb21HZW5lcmF0b3IoKSkKICAgICAgICApOwogICAgICAgIAogICAgICAgIHJldHVybiAkdGhpcy0+X2dldEFkYXB0ZXJzKCRybmdzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0QWRhcHRlcnNXaXRoUmFuZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFNpZ25hdHVyZVZhbGlkaXR5V2l0aEdlbmVyYXRlZEtleXMoR21wTWF0aEludGVyZmFjZSAkbWF0aCwgUmFuZG9tTnVtYmVyR2VuZXJhdG9ySW50ZXJmYWNlICRybmcpCiAgICB7CiAgICAgICAgJGdlbmVyYXRvciA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoJG1hdGgpLT5nZW5lcmF0b3IxOTIoKTsKCiAgICAgICAgJHNpZ25lciA9IG5ldyBTaWduZXIoJG1hdGgpOwoKICAgICAgICAkcHJpdmF0ZUtleSA9ICRnZW5lcmF0b3ItPmNyZWF0ZVByaXZhdGVLZXkoKTsKICAgICAgICAkcHVibGljS2V5ID0gJHByaXZhdGVLZXktPmdldFB1YmxpY0tleSgpOwogICAgICAgICRyYW5kb21LID0gJHJuZy0+Z2VuZXJhdGUoJHByaXZhdGVLZXktPmdldFBvaW50KCktPmdldE9yZGVyKCkpOwoKICAgICAgICAkaGFzaCA9ICRybmctPmdlbmVyYXRlKCRnZW5lcmF0b3ItPmdldE9yZGVyKCkpOwogICAgICAgICRzaWduYXR1cmUgPSAkc2lnbmVyLT5zaWduKCRwcml2YXRlS2V5LCAkaGFzaCwgJHJhbmRvbUspOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkc2lnbmVyLT52ZXJpZnkoJHB1YmxpY0tleSwgJHNpZ25hdHVyZSwgJGhhc2gpLCAnQ29ycmVjdGx5IHZhbGlkYXRlcyB2YWxpZCBoYXNoLicpOwogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZSgkc2lnbmVyLT52ZXJpZnkoJHB1YmxpY0tleSwgJHNpZ25hdHVyZSwgJG1hdGgtPnN1YigkaGFzaCwgZ21wX2luaXQoMSwgMTApKSksICdDb3JyZWN0bHkgcmVqZWN0cyB0YW1wZXJlZCBoYXNoLicpOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVyc1dpdGhSYW5kCiAgICAgKiBAdGVzdGRveCBUZXN0IERpZmZpZS1IZWxsbWFuIGtleSBleGNoYW5nZSBhbmQgbWVzc2FnZSBlbmNyeXB0aW9uL2RlY3J5cHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3REaWZmaWVIZWxsbWFuKEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgsIFJhbmRvbU51bWJlckdlbmVyYXRvckludGVyZmFjZSAkcm5nKQogICAgewogICAgICAgICRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRtYXRoKS0+Z2VuZXJhdG9yMTkyKCRybmcpOwogICAgICAgICRhbGljZVByaXZLZXkgPSAkZ2VuZXJhdG9yLT5jcmVhdGVQcml2YXRlS2V5KCk7CiAgICAgICAgJGJvYlByaXZLZXkgPSAkZ2VuZXJhdG9yLT5jcmVhdGVQcml2YXRlS2V5KCk7CgogICAgICAgICRhbGljZSA9ICRhbGljZVByaXZLZXktPmNyZWF0ZUV4Y2hhbmdlKCRib2JQcml2S2V5LT5nZXRQdWJsaWNLZXkoKSk7CiAgICAgICAgJGJvYiA9ICRib2JQcml2S2V5LT5jcmVhdGVFeGNoYW5nZSgkYWxpY2VQcml2S2V5LT5nZXRQdWJsaWNLZXkoKSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRtYXRoLT5lcXVhbHMoJGFsaWNlLT5jYWxjdWxhdGVTaGFyZWRLZXkoKSwgJGJvYi0+Y2FsY3VsYXRlU2hhcmVkS2V5KCkpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Curves/SecCurveTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cU2lnbmF0dXJlXFNpZ25lcjsKdXNlIE1kYW50ZXJcRWNjXFJhbmRvbVxSYW5kb21HZW5lcmF0b3JGYWN0b3J5OwoKY2xhc3MgU2VjQ3VydmVUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEN1cnZlUGFyYW1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9nZXRBZGFwdGVycyhbCiAgICAgICAgICAgIFsgJ2N1cnZlMjU2azEnLCAnMCcsICc3JywgJzExNTc5MjA4OTIzNzMxNjE5NTQyMzU3MDk4NTAwODY4NzkwNzg1MzI2OTk4NDY2NTY0MDU2NDAzOTQ1NzU4NDAwNzkwODgzNDY3MTY2MycgXSwKICAgICAgICAgICAgWyAnY3VydmUyNTZyMScsICcxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1MzAwODYxNDM0MTUyOTAzMTQxOTU1MzM2MzEzMDg4NjcwOTc4NTM5NDgnLCAnNDEwNTgzNjM3MjUxNTIxNDIxMjkzMjYxMjk3ODAwNDcyNjg0MDkxMTQ0NDEwMTU5OTM3MjU1NTQ4MzUyNTYzMTQwMzk0Njc0MDEyOTEnLCAnMTE1NzkyMDg5MjEwMzU2MjQ4NzYyNjk3NDQ2OTQ5NDA3NTczNTMwMDg2MTQzNDE1MjkwMzE0MTk1NTMzNjMxMzA4ODY3MDk3ODUzOTUxJyBdLAogICAgICAgICAgICBbICdjdXJ2ZTM4NHIxJywgJzM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ4MjkzNDA0MjQ1NzIxNzcxNDk2ODcwMzI5MDQ3MjY2MDg4MjU4OTM4MDAxODYxNjA2OTczMTEyMzE2JywgJzI3NTgwMTkzNTU5OTU5NzA1ODc3ODQ5MDExODQwMzg5MDQ4MDkzMDU2OTA1ODU2MzYxNTY4NTIxNDI4NzA3MzAxOTg4Njg5MjQxMzA5ODYwODY1MTM2MjYwNzY0ODgzNzQ1MTA3NzY1NDM5NzYxMjMwNTc1JywgJzM5NDAyMDA2MTk2Mzk0NDc5MjEyMjc5MDQwMTAwMTQzNjEzODA1MDc5NzM5MjcwNDY1NDQ2NjY3OTQ4MjkzNDA0MjQ1NzIxNzcxNDk2ODcwMzI5MDQ3MjY2MDg4MjU4OTM4MDAxODYxNjA2OTczMTEyMzE5JyBdLAogICAgICAgIF0pOwogICAgfQoKICAgIC8qKgogICAgICoKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0Q3VydmVQYXJhbXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDdXJ2ZUdlbmVyYXRpb24oR21wTWF0aEludGVyZmFjZSAkbWF0aCwgJGZ1bmN0aW9uLCAkYSwgJGIsICRwcmltZSkKICAgIHsKICAgICAgICAkZmFjdG9yeSA9IEVjY0ZhY3Rvcnk6OmdldFNlY2dDdXJ2ZXMoJG1hdGgpOwogICAgICAgICRjdXJ2ZSA9ICRmYWN0b3J5LT57JGZ1bmN0aW9ufSgpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZigkdGhpcy0+Y2xhc3NDdXJ2ZUZwSW50ZXJmYWNlLCAkY3VydmUpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGEsICRtYXRoLT50b1N0cmluZygkY3VydmUtPmdldEEoKSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGIsICRtYXRoLT50b1N0cmluZygkY3VydmUtPmdldEIoKSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHByaW1lLCAkbWF0aC0+dG9TdHJpbmcoJGN1cnZlLT5nZXRQcmltZSgpKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEdlbmVyYXRvclBhcmFtcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fZ2V0QWRhcHRlcnMoWwogICAgICAgICAgICBbICdnZW5lcmF0b3IyNTZrMScsICcxMTU3OTIwODkyMzczMTYxOTU0MjM1NzA5ODUwMDg2ODc5MDc4NTI4Mzc1NjQyNzkwNzQ5MDQzODI2MDUxNjMxNDE1MTgxNjE0OTQzMzcnLCAnMTE1NzkyMDg5MjM3MzE2MTk1NDIzNTcwOTg1MDA4Njg3OTA3ODUzMjY5OTg0NjY1NjQwNTY0MDM5NDU3NTg0MDA3OTA4ODM0NjcxNjYzJyBdLAogICAgICAgICAgICBbICdnZW5lcmF0b3IyNTZyMScsICcxMTU3OTIwODkyMTAzNTYyNDg3NjI2OTc0NDY5NDk0MDc1NzM1Mjk5OTY5NTUyMjQxMzU3NjAzNDI0MjIyNTkwNjEwNjg1MTIwNDQzNjknLCAnMTE1NzkyMDg5MjEwMzU2MjQ4NzYyNjk3NDQ2OTQ5NDA3NTczNTMwMDg2MTQzNDE1MjkwMzE0MTk1NTMzNjMxMzA4ODY3MDk3ODUzOTUxJyBdLAogICAgICAgICAgICBbICdnZW5lcmF0b3IzODRyMScsICczOTQwMjAwNjE5NjM5NDQ3OTIxMjI3OTA0MDEwMDE0MzYxMzgwNTA3OTczOTI3MDQ2NTQ0NjY2Nzk0NjkwNTI3OTYyNzY1OTM5OTExMzI2MzU2OTM5ODk1NjMwODE1MjI5NDkxMzU1NDQzMzY1Mzk0MjY0MycsICczOTQwMjAwNjE5NjM5NDQ3OTIxMjI3OTA0MDEwMDE0MzYxMzgwNTA3OTczOTI3MDQ2NTQ0NjY2Nzk0ODI5MzQwNDI0NTcyMTc3MTQ5Njg3MDMyOTA0NzI2NjA4ODI1ODkzODAwMTg2MTYwNjk3MzExMjMxOScgXSwKICAgICAgICBdKTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEdlbmVyYXRvclBhcmFtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdlbmVyYXRvckdlbmVyYXRpb24oR21wTWF0aEludGVyZmFjZSAkbWF0aCwgJGZ1bmN0aW9uLCAkb3JkZXIsICRwcmltZSkKICAgIHsKICAgICAgICAkZmFjdG9yeSA9IEVjY0ZhY3Rvcnk6OmdldFNlY2dDdXJ2ZXMoJG1hdGgpOwogICAgICAgICRnZW5lcmF0b3IgPSAkZmFjdG9yeS0+eyRmdW5jdGlvbn0oKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoJHRoaXMtPmNsYXNzUG9pbnRJbnRlcmZhY2UsICRnZW5lcmF0b3IpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG9yZGVyLCAkbWF0aC0+dG9TdHJpbmcoJGdlbmVyYXRvci0+Z2V0T3JkZXIoKSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHByaW1lLCAkbWF0aC0+dG9TdHJpbmcoJGdlbmVyYXRvci0+Z2V0Q3VydmUoKS0+Z2V0UHJpbWUoKSkpOwogICAgfQoKICAgIC8qKgogICAgICoKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0QWRhcHRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RTZWNwMjU2cjFFcXVpdmFsZW5jZVRvTmlzdFAyNTYoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICAkc2VjcEZhY3RvcnkgPSBFY2NGYWN0b3J5OjpnZXRTZWNnQ3VydmVzKCRhZGFwdGVyKTsKICAgICAgICAkbmlzdEZhY3RvcnkgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRhZGFwdGVyKTsKCiAgICAgICAgJHNpZ25lciA9IG5ldyBTaWduZXIoJGFkYXB0ZXIpOwoKICAgICAgICAkc2VjcmV0ID0gZ21wX2luaXQoJ0RDNTFEMzg2NkExNUJBQ0RFMzNEOTZGOTkyRkNBOTlEQTdFNkVGMDkzNEU3MDk3NTU5QzI3RjE2MTRDODhBN0YnLCAxNik7CgogICAgICAgICRzZWNwS2V5ID0gJHNlY3BGYWN0b3J5LT5nZW5lcmF0b3IyNTZyMSgpLT5nZXRQcml2YXRlS2V5RnJvbSgkc2VjcmV0KTsKICAgICAgICAkbmlzdEtleSA9ICRuaXN0RmFjdG9yeS0+Z2VuZXJhdG9yMjU2KCktPmdldFByaXZhdGVLZXlGcm9tKCRzZWNyZXQpOwoKICAgICAgICAkcmFuZG9tSyA9IFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk6OmdldFJhbmRvbUdlbmVyYXRvcigpLT5nZW5lcmF0ZSgkc2VjcEtleS0+Z2V0UG9pbnQoKS0+Z2V0T3JkZXIoKSk7CiAgICAgICAgJG1lc3NhZ2UgPSBSYW5kb21HZW5lcmF0b3JGYWN0b3J5OjpnZXRSYW5kb21HZW5lcmF0b3IoKS0+Z2VuZXJhdGUoJHNlY3BLZXktPmdldFBvaW50KCktPmdldE9yZGVyKCkpOwoKICAgICAgICAkc2lnU2VjcCA9ICRzaWduZXItPnNpZ24oJHNlY3BLZXksICRtZXNzYWdlLCAkcmFuZG9tSyk7CiAgICAgICAgJHNpZ05pc3QgPSAkc2lnbmVyLT5zaWduKCRuaXN0S2V5LCAkbWVzc2FnZSwgJHJhbmRvbUspOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYWRhcHRlci0+ZXF1YWxzKCRzaWdOaXN0LT5nZXRSKCksICRzaWdTZWNwLT5nZXRSKCkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYWRhcHRlci0+ZXF1YWxzKCRzaWdOaXN0LT5nZXRTKCksICRzaWdTZWNwLT5nZXRTKCkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0QWRhcHRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RTZWNwMzg0cjFFcXVpdmFsZW5jZVRvTmlzdFAzODQoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICAkc2VjcEZhY3RvcnkgPSBFY2NGYWN0b3J5OjpnZXRTZWNnQ3VydmVzKCRhZGFwdGVyKTsKICAgICAgICAkbmlzdEZhY3RvcnkgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRhZGFwdGVyKTsKCiAgICAgICAgJHNpZ25lciA9IG5ldyBTaWduZXIoJGFkYXB0ZXIpOwoKICAgICAgICAkc2VjcmV0ID0gZ21wX2luaXQoJ0RDNTFEMzg2NkExNUJBQ0RFMzNEOTZGOTkyRkNBOTlEQTdFNkVGMDkzNEU3MDk3NTU5QzI3RjE2MTRDODhBN0YnLCAxNik7CgogICAgICAgICRzZWNwS2V5ID0gJHNlY3BGYWN0b3J5LT5nZW5lcmF0b3IzODRyMSgpLT5nZXRQcml2YXRlS2V5RnJvbSgkc2VjcmV0KTsKICAgICAgICAkbmlzdEtleSA9ICRuaXN0RmFjdG9yeS0+Z2VuZXJhdG9yMzg0KCktPmdldFByaXZhdGVLZXlGcm9tKCRzZWNyZXQpOwoKICAgICAgICAkcmFuZG9tSyA9IFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk6OmdldFJhbmRvbUdlbmVyYXRvcigpLT5nZW5lcmF0ZSgkc2VjcEtleS0+Z2V0UG9pbnQoKS0+Z2V0T3JkZXIoKSk7CiAgICAgICAgJG1lc3NhZ2UgPSBSYW5kb21HZW5lcmF0b3JGYWN0b3J5OjpnZXRSYW5kb21HZW5lcmF0b3IoKS0+Z2VuZXJhdGUoJHNlY3BLZXktPmdldFBvaW50KCktPmdldE9yZGVyKCkpOwoKICAgICAgICAkc2lnU2VjcCA9ICRzaWduZXItPnNpZ24oJHNlY3BLZXksICRtZXNzYWdlLCAkcmFuZG9tSyk7CiAgICAgICAgJHNpZ05pc3QgPSAkc2lnbmVyLT5zaWduKCRuaXN0S2V5LCAkbWVzc2FnZSwgJHJhbmRvbUspOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYWRhcHRlci0+ZXF1YWxzKCRzaWdOaXN0LT5nZXRSKCksICRzaWdTZWNwLT5nZXRSKCkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYWRhcHRlci0+ZXF1YWxzKCRzaWdOaXN0LT5nZXRTKCksICRzaWdTZWNwLT5nZXRTKCkpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Curves/Secp112r1EcdsaTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDdXJ2ZXM7CgoKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CgpjbGFzcyBTZWNwMTEycjFFY2RzYVRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgICMgaHR0cHM6Ly9naXRodWIuY29tL2pvaG5kb2UzMTQxNS9qb2VlY2MvYmxvYi8yOGUxMTIxNzRiOTI0ZGQyNjRmNDNiODI1NzdhNGU1Y2EwN2U2NmRmL2VjYy90ZXN0cy9DcnlwdG9PcHNUZXN0cy5weSNMMzQKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RWNkc2FPblNlY3AxMTJyMSgpCiAgICB7CiAgICAgICAgJGV4cGVjdGVkUiA9ICcxNjk2NDI3MzM1NTQxNTE0Mjg2MzY3ODU1NzAxODI5MDE4JzsKICAgICAgICAkZXhwZWN0ZWRTID0gJzE5NjA3NjEyMzAwNDk5MzY2OTk3NTk3NjYxMDE3MjM0OTAnOwoKICAgICAgICAkYWRhcHRlciA9IFxNZGFudGVyXEVjY1xFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiAgICAgICAgJGcgPSBcTWRhbnRlclxFY2NcRWNjRmFjdG9yeTo6Z2V0U2VjZ0N1cnZlcygpLT5nZW5lcmF0b3IxMTJyMSgpOwoKICAgICAgICAka2V5ID0gZ21wX2luaXQoJ2RlYWRiZWVmJywgMTYpOwogICAgICAgICRwcml2ID0gJGctPmdldFByaXZhdGVLZXlGcm9tKCRrZXkpOwoKICAgICAgICAkZGF0YSA9ICJmb29iYXIiOwogICAgICAgICRzaWduZXIgPSBuZXcgXE1kYW50ZXJcRWNjXENyeXB0b1xTaWduYXR1cmVcU2lnbmVyKCRhZGFwdGVyKTsKICAgICAgICAkaGFzaCA9ICRzaWduZXItPmhhc2hEYXRhKCRnLCAic2hhMSIsICRkYXRhKTsKICAgICAgICAkcmFuZG9tSyA9IGdtcF9pbml0KCcxMjM0NScsIDEwKTsKCiAgICAgICAgJHNpZ25hdHVyZSA9ICRzaWduZXItPnNpZ24oJHByaXYsICRoYXNoLCAkcmFuZG9tSyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRSLCAkYWRhcHRlci0+dG9TdHJpbmcoJHNpZ25hdHVyZS0+Z2V0UigpKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWRTLCAkYWRhcHRlci0+dG9TdHJpbmcoJHNpZ25hdHVyZS0+Z2V0UygpKSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRzaWduZXItPnZlcmlmeSgkcHJpdi0+Z2V0UHVibGljS2V5KCksICRzaWduYXR1cmUsICRoYXNoKSk7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Curves/SpecBasedCurveTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xDdXJ2ZXM7Cgp1c2UgTWRhbnRlclxFY2NcUmFuZG9tXFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFBvaW50XENvbXByZXNzZWRQb2ludFNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFBvaW50XFVuY29tcHJlc3NlZFBvaW50U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50Owp1c2UgU3ltZm9ueVxDb21wb25lbnRcWWFtbFxZYW1sOwp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXEN1cnZlRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xTaWduYXR1cmVcU2lnbmVyOwoKY2xhc3MgU3BlY0Jhc2VkQ3VydmVUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGaWxlcygpCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgX19ESVJfXyAuICcvLi4vLi4vc3BlY3Mvc2VjcC0xMTJyMS55bWwnLAogICAgICAgICAgICBfX0RJUl9fIC4gJy8uLi8uLi9zcGVjcy9zZWNwLTI1NmsxLnltbCcsCiAgICAgICAgICAgIF9fRElSX18gLiAnLy4uLy4uL3NwZWNzL3NlY3AtMjU2cjEueW1sJywKICAgICAgICAgICAgX19ESVJfXyAuICcvLi4vLi4vc3BlY3Mvc2VjcC0zODRyMS55bWwnLAogICAgICAgICAgICBfX0RJUl9fIC4gJy8uLi8uLi9zcGVjcy9uaXN0LXAxOTIueW1sJywKICAgICAgICAgICAgX19ESVJfXyAuICcvLi4vLi4vc3BlY3MvbmlzdC1wMjI0LnltbCcsCiAgICAgICAgICAgIF9fRElSX18gLiAnLy4uLy4uL3NwZWNzL25pc3QtcDI1Ni55bWwnLAogICAgICAgICAgICBfX0RJUl9fIC4gJy8uLi8uLi9zcGVjcy9uaXN0LXAzODQueW1sJywKICAgICAgICAgICAgX19ESVJfXyAuICcvLi4vLi4vc3BlY3MvbmlzdC1wNTIxLnltbCcKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cGFpcnNUZXN0U2V0KCkKICAgIHsKICAgICAgICAkeWFtbCA9IG5ldyBZYW1sKCk7CiAgICAgICAgJGZpbGVzID0gJHRoaXMtPmdldEZpbGVzKCk7CiAgICAgICAgJGRhdGFzZXRzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewogICAgICAgICAgICAkZGF0YSA9ICR5YW1sLT5wYXJzZShmaWxlX2dldF9jb250ZW50cygkZmlsZSkpOwogICAgICAgICAgICAkZ2VuZXJhdG9yID0gQ3VydmVGYWN0b3J5OjpnZXRHZW5lcmF0b3JCeU5hbWUoJGRhdGFbJ25hbWUnXSk7CgogICAgICAgICAgICBmb3JlYWNoICgkZGF0YVsna2V5cGFpcnMnXSBhcyAkdGVzdEtleVBhaXIpIHsKICAgICAgICAgICAgICAgICRkYXRhc2V0c1tdID0gWwogICAgICAgICAgICAgICAgICAgICRkYXRhWyduYW1lJ10sCiAgICAgICAgICAgICAgICAgICAgJGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAgICAkdGVzdEtleVBhaXJbJ2snXSwKICAgICAgICAgICAgICAgICAgICAkdGVzdEtleVBhaXJbJ3gnXSwKICAgICAgICAgICAgICAgICAgICAkdGVzdEtleVBhaXJbJ3knXQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRkYXRhc2V0czsKICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0S2V5cGFpcnNUZXN0U2V0KCkKICAgICAqIEBwYXJhbSBHZW5lcmF0b3JQb2ludCAkZ2VuZXJhdG9yCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrCiAgICAgKiBAcGFyYW0gc3RyaW5nICRleHBlY3RlZFgKICAgICAqIEBwYXJhbSBzdHJpbmcgJGV4cGVjdGVkWQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldFB1YmxpY0tleSgkbmFtZSwgR2VuZXJhdG9yUG9pbnQgJGdlbmVyYXRvciwgJGssICRleHBlY3RlZFgsICRleHBlY3RlZFkpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSAkZ2VuZXJhdG9yLT5nZXRBZGFwdGVyKCk7CgogICAgICAgICRwcml2YXRlS2V5ID0gJGdlbmVyYXRvci0+Z2V0UHJpdmF0ZUtleUZyb20oZ21wX2luaXQoJGssIDEwKSk7CiAgICAgICAgJHB1YmxpY0tleSA9ICRwcml2YXRlS2V5LT5nZXRQdWJsaWNLZXkoKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkYWRhcHRlci0+aGV4RGVjKCRleHBlY3RlZFgpLCAkYWRhcHRlci0+dG9TdHJpbmcoJHB1YmxpY0tleS0+Z2V0UG9pbnQoKS0+Z2V0WCgpKSwgJG5hbWUpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGFkYXB0ZXItPmhleERlYygkZXhwZWN0ZWRZKSwgJGFkYXB0ZXItPnRvU3RyaW5nKCRwdWJsaWNLZXktPmdldFBvaW50KCktPmdldFkoKSksICRuYW1lKTsKCiAgICAgICAgJHNlcmlhbGl6ZXIgPSBuZXcgVW5jb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyKCRhZGFwdGVyKTsKICAgICAgICAkc2VyaWFsaXplZCA9ICRzZXJpYWxpemVyLT5zZXJpYWxpemUoJHB1YmxpY0tleS0+Z2V0UG9pbnQoKSk7CiAgICAgICAgJHBhcnNlZCA9ICRzZXJpYWxpemVyLT51bnNlcmlhbGl6ZSgkZ2VuZXJhdG9yLT5nZXRDdXJ2ZSgpLCAkc2VyaWFsaXplZCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHBhcnNlZC0+ZXF1YWxzKCRwdWJsaWNLZXktPmdldFBvaW50KCkpKTsKCiAgICAgICAgJGNvbXByZXNzaW5nU2VyaWFsaXplciA9IG5ldyBDb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyKCRhZGFwdGVyKTsKICAgICAgICAkc2VyaWFsaXplZCA9ICRjb21wcmVzc2luZ1NlcmlhbGl6ZXItPnNlcmlhbGl6ZSgkcHVibGljS2V5LT5nZXRQb2ludCgpKTsKICAgICAgICAkcGFyc2VkID0gJGNvbXByZXNzaW5nU2VyaWFsaXplci0+dW5zZXJpYWxpemUoJGdlbmVyYXRvci0+Z2V0Q3VydmUoKSwgJHNlcmlhbGl6ZWQpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwYXJzZWQtPmVxdWFscygkcHVibGljS2V5LT5nZXRQb2ludCgpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREaWZmaWVIZWxsbWFuVGVzdFNldCgpCiAgICB7CiAgICAgICAgJHlhbWwgPSBuZXcgWWFtbCgpOwogICAgICAgICRmaWxlcyA9ICR0aGlzLT5nZXRGaWxlcygpOwogICAgICAgICRkYXRhc2V0cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICAgICAgJGRhdGEgPSAkeWFtbC0+cGFyc2UoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKTsKICAgICAgICAgICAgJGdlbmVyYXRvciA9IEN1cnZlRmFjdG9yeTo6Z2V0R2VuZXJhdG9yQnlOYW1lKCRkYXRhWyduYW1lJ10pOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGRhdGFbJ2RpZmZpZSddIGFzICR0ZXN0S2V5UGFpcikgewogICAgICAgICAgICAgICAgJGRhdGFzZXRzW10gPSBbCiAgICAgICAgICAgICAgICAgICAgJGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAgICAkdGVzdEtleVBhaXJbJ2FsaWNlJ10sCiAgICAgICAgICAgICAgICAgICAgJHRlc3RLZXlQYWlyWydib2InXSwKICAgICAgICAgICAgICAgICAgICAkdGVzdEtleVBhaXJbJ3NoYXJlZCddCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRhdGFzZXRzOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXREaWZmaWVIZWxsbWFuVGVzdFNldCgpCiAgICAgKiBAcGFyYW0gR2VuZXJhdG9yUG9pbnQgJGdlbmVyYXRvcgogICAgICogQHBhcmFtIHN0cmluZyAkYWxpY2UKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJvYgogICAgICogQHBhcmFtIHN0cmluZyAkZXhwZWN0ZWRYCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0R2V0RGlmZmllSGVsbG1hblNoYXJlZFNlY3JldChHZW5lcmF0b3JQb2ludCAkZ2VuZXJhdG9yLCAkYWxpY2UsICRib2IsICRleHBlY3RlZFgpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSAkZ2VuZXJhdG9yLT5nZXRBZGFwdGVyKCk7CiAgICAgICAgJGFsaWNlUHJpdktleSA9ICRnZW5lcmF0b3ItPmdldFByaXZhdGVLZXlGcm9tKGdtcF9pbml0KCRhbGljZSwgMTApKTsKICAgICAgICAkYm9iUHJpdktleSA9ICRnZW5lcmF0b3ItPmdldFByaXZhdGVLZXlGcm9tKGdtcF9pbml0KCRib2IsIDEwKSk7CgogICAgICAgICRhbGljZURoID0gJGFsaWNlUHJpdktleS0+Y3JlYXRlRXhjaGFuZ2UoJGJvYlByaXZLZXktPmdldFB1YmxpY0tleSgpKTsKICAgICAgICAkYm9iRGggPSAkYm9iUHJpdktleS0+Y3JlYXRlRXhjaGFuZ2UoJGFsaWNlUHJpdktleS0+Z2V0UHVibGljS2V5KCkpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRhZGFwdGVyLT5oZXhEZWMoJGV4cGVjdGVkWCksICRhZGFwdGVyLT50b1N0cmluZygkYWxpY2VEaC0+Y2FsY3VsYXRlU2hhcmVkS2V5KCkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRhZGFwdGVyLT5oZXhEZWMoJGV4cGVjdGVkWCksICRhZGFwdGVyLT50b1N0cmluZygkYm9iRGgtPmNhbGN1bGF0ZVNoYXJlZEtleSgpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIbWFjVGVzdFNldCgpCiAgICB7CiAgICAgICAgJHlhbWwgPSBuZXcgWWFtbCgpOwogICAgICAgICRmaWxlcyA9ICR0aGlzLT5nZXRGaWxlcygpOwogICAgICAgICRkYXRhc2V0cyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsKICAgICAgICAgICAgJGRhdGEgPSAkeWFtbC0+cGFyc2UoZmlsZV9nZXRfY29udGVudHMoJGZpbGUpKTsKCiAgICAgICAgICAgIGlmICghIGlzc2V0KCRkYXRhWydobWFjJ10pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGdlbmVyYXRvciA9IEN1cnZlRmFjdG9yeTo6Z2V0R2VuZXJhdG9yQnlOYW1lKCRkYXRhWyduYW1lJ10pOwoKICAgICAgICAgICAgZm9yZWFjaCAoJGRhdGFbJ2htYWMnXSBhcyAkc2lnKSB7CiAgICAgICAgICAgICAgICAkZGF0YXNldHNbXSA9IFsKICAgICAgICAgICAgICAgICAgICAkZ2VuZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICRzaWdbJ2tleSddLAogICAgICAgICAgICAgICAgICAgICRzaWdbJ2FsZ28nXSwKICAgICAgICAgICAgICAgICAgICAkc2lnWydtZXNzYWdlJ10sCiAgICAgICAgICAgICAgICAgICAgc3RydG9sb3dlcigkc2lnWydrJ10pLAogICAgICAgICAgICAgICAgICAgIHN0cnRvbG93ZXIoJHNpZ1snciddKSwKICAgICAgICAgICAgICAgICAgICBzdHJ0b2xvd2VyKCRzaWdbJ3MnXSkKICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGF0YXNldHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEhtYWNUZXN0U2V0CiAgICAgKiBAcGFyYW0gR2VuZXJhdG9yUG9pbnQgJEcKICAgICAqIEBwYXJhbSBzdHJpbmcgJHByaXZLZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsZ28KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UKICAgICAqIEBwYXJhbSBzdHJpbmcgJGVLIGV4cGVjdGVkIEsgaGV4CiAgICAgKiBAcGFyYW0gc3RyaW5nICRlUiBleHBlY3RlZCBSIGhleAogICAgICogQHBhcmFtIHN0cmluZyAkZVMgZXhwZWN0ZWQgUyBoZXgKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RIbWFjU2lnbmF0dXJlcyhHZW5lcmF0b3JQb2ludCAkRywgJHByaXZLZXksICRhbGdvLCAkbWVzc2FnZSwgJGVLLCAkZVIsICRlUykKICAgIHsKICAgICAgICAkbWF0aCA9ICRHLT5nZXRBZGFwdGVyKCk7CgogICAgICAgICRwcml2YXRlS2V5ID0gJEctPmdldFByaXZhdGVLZXlGcm9tKGdtcF9pbml0KCRwcml2S2V5LCAxNikpOwogICAgICAgICRzaWduZXIgPSBuZXcgU2lnbmVyKCRtYXRoKTsKICAgICAgICAkaGFzaERlYyA9ICRzaWduZXItPmhhc2hEYXRhKCRHLCAkYWxnbywgJG1lc3NhZ2UpOwoKICAgICAgICAkaG1hYyA9IFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk6OmdldEhtYWNSYW5kb21HZW5lcmF0b3IoJHByaXZhdGVLZXksICRoYXNoRGVjLCAkYWxnbyk7CiAgICAgICAgJGsgPSAkaG1hYy0+Z2VuZXJhdGUoJEctPmdldE9yZGVyKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJG1hdGgtPmhleERlYygkZUspLCBnbXBfc3RydmFsKCRrLCAxMCksICdrJyk7CgogICAgICAgICRzaWcgPSAkc2lnbmVyLT5zaWduKCRwcml2YXRlS2V5LCAkaGFzaERlYywgJGspOwogICAgICAgIC8vIFNob3VsZCB2ZXJpZnkKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkc2lnbmVyLT52ZXJpZnkoJHByaXZhdGVLZXktPmdldFB1YmxpY0tleSgpLCAkc2lnLCAkaGFzaERlYykpOwoKICAgICAgICAvLyBSIGFuZCBTIHNob3VsZCBiZSBjb3JyZWN0CiAgICAgICAgJHNSID0gJG1hdGgtPmhleERlYygkZVIpOwogICAgICAgICRzUyA9ICRtYXRoLT5oZXhEZWMoJGVTKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0U2FtZSgkc1IsICRtYXRoLT50b1N0cmluZygkc2lnLT5nZXRSKCkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0U2FtZSgkc1MsICRtYXRoLT50b1N0cmluZygkc2lnLT5nZXRTKCkpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Math/MathTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xNYXRoOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aDsKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CgpjbGFzcyBNYXRoVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdENhc2UKewogICAgcHJpdmF0ZSAka25vd25QcmltZXM7CgogICAgcHJpdmF0ZSAkc3RhcnRQcmltZSA9IDMxOwoKICAgIHByaXZhdGUgJHByaW1lQ291bnQgPSAxMDsKCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0VXAoKQogICAgewogICAgICAgICRmaWxlID0gVEVTVF9EQVRBX0RJUi4nL3ByaW1lcy5sc3QnOwoKICAgICAgICBpZiAoISBmaWxlX2V4aXN0cygkZmlsZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmZhaWwoJ1ByaW1lcyBub3QgZm91bmQnKTsKICAgICAgICB9CgogICAgICAgICRsaW5lcyA9IGZpbGUoJGZpbGUpOwogICAgICAgIGlmICghICRsaW5lcykgewogICAgICAgICAgICAkdGhpcy0+ZmFpbCgnRW1wdHkgcHJpbWUgZmlsZScpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmtub3duUHJpbWVzID0gYXJyYXlfbWFwKGZ1bmN0aW9uICgkaSkgewogICAgICAgICAgICByZXR1cm4gaW50dmFsKCRpKTsKICAgICAgICB9LCAkbGluZXMpOwogICAgfQoKICAgIHByaXZhdGUgJGRlY0hleE1hcCA9IGFycmF5KAogICAgICAgICcwMCcgPT4gMCwKICAgICAgICAnMDEnID0+IDEsCiAgICAgICAgJzAyJyA9PiAyLAogICAgICAgICcwMycgPT4gMywKICAgICAgICAnMDQnID0+IDQsCiAgICAgICAgJzA1JyA9PiA1LAogICAgICAgICcwNicgPT4gNiwKICAgICAgICAnMDcnID0+IDcsCiAgICAgICAgJzA4JyA9PiA4LAogICAgICAgICcwOScgPT4gOSwKICAgICAgICAnMGEnID0+IDEwLAogICAgICAgICcwYicgPT4gMTEsCiAgICAgICAgJzBjJyA9PiAxMiwKICAgICAgICAnMGQnID0+IDEzLAogICAgICAgICcwZScgPT4gMTQsCiAgICAgICAgJzBmJyA9PiAxNSwKICAgICk7CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEFkYXB0ZXJzCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdERlY0hleChHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyKQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kZWNIZXhNYXAgYXMgJGhleCA9PiAkZGVjKSB7CiAgICAgICAgICAgICRhY3R1YWwgPSAkYWRhcHRlci0+ZGVjSGV4KCRkZWMpOwogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkaGV4ID09PSAkYWN0dWFsLCAiJGhleCA9PT0gJGFjdHVhbCIpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIFVuYWJsZSB0byBjb252ZXJ0IG5lZ2F0aXZlIGludGVnZXIgdG8gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0RGVjSGV4RmFpbHVyZSgpCiAgICB7CiAgICAgICAgJG1hdGggPSBuZXcgR21wTWF0aCgpOwogICAgICAgICRtYXRoLT5kZWNIZXgoLTEpOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RIZXhEZWMoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZGVjSGV4TWFwIGFzICRoZXggPT4gJGRlYykgewogICAgICAgICAgICAkYWN0dWFsID0gJGFkYXB0ZXItPmhleERlYygkaGV4KTsKICAgICAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkYWN0dWFsLCAkZGVjKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEFkYXB0ZXJzCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkbWF0aAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFN0cmljdEludGVnZXJSZXR1cm5WYWx1ZXMoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICAkeCA9IGdtcF9pbml0KDEwLCAxMCk7CiAgICAgICAgJHkgPSBnbXBfaW5pdCg0LCAxMCk7CgogICAgICAgICRtb2QgPSAkbWF0aC0+bW9kKCR4LCAkeSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaXNfb2JqZWN0KCRtb2QpICYmICRtb2QgaW5zdGFuY2VvZiBcR01QKTsKCiAgICAgICAgJGFkZCA9ICRtYXRoLT5hZGQoJHgsICR5KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc19vYmplY3QoJGFkZCkgJiYgJGFkZCBpbnN0YW5jZW9mIFxHTVApOwoKICAgICAgICAkc3ViID0gJG1hdGgtPnN1YigkYWRkLCAkeSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaXNfb2JqZWN0KCRzdWIpICYmICRzdWIgaW5zdGFuY2VvZiBcR01QKTsKCiAgICAgICAgJG11bCA9ICRtYXRoLT5tdWwoJHgsICR5KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc19vYmplY3QoJG11bCkgJiYgJG11bCBpbnN0YW5jZW9mIFxHTVApOwoKICAgICAgICAkZGl2ID0gJG1hdGgtPmRpdigkbXVsLCAkeSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaXNfb2JqZWN0KCRkaXYpICYmICRkaXYgaW5zdGFuY2VvZiBcR01QKTsKCiAgICAgICAgJHBvdyA9ICRtYXRoLT5wb3coJHgsIDQpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzX29iamVjdCgkcG93KSAmJiAkcG93IGluc3RhbmNlb2YgXEdNUCk7CgogICAgICAgICRwb3dtb2QgPSAkbWF0aC0+cG93bW9kKCR4LCAkeSwgJHkpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzX29iamVjdCgkcG93bW9kKSAmJiAkcG93bW9kIGluc3RhbmNlb2YgXEdNUCk7CgogICAgICAgICRiaXR3aXNlYW5kID0gJG1hdGgtPmJpdHdpc2VBbmQoJHgsICR5KTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc19vYmplY3QoJGJpdHdpc2VhbmQpICYmICRiaXR3aXNlYW5kIGluc3RhbmNlb2YgXEdNUCk7CgogICAgICAgICRoZXhkZWMgPSAkbWF0aC0+ZGVjSGV4KDEwKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc19zdHJpbmcoJGhleGRlYykpOwoKICAgICAgICAkZGVjaGV4ID0gJG1hdGgtPmhleERlYygkaGV4ZGVjKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc19zdHJpbmcoJGRlY2hleCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RLbm93blByaW1lc0FyZUNvcnJlY3RseURldGVjdGVkKEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmtub3duUHJpbWVzIGFzICRrZXkgPT4gJHByaW1lKSB7CiAgICAgICAgICAgIGlmICh0cmltKCRwcmltZSkgPT0gJycpIHsKICAgICAgICAgICAgICAgIHVzZXJfZXJyb3IoJ0VtcHR5IHByaW1lIG51bWJlciBkZXRlY3RlZCBmcm9tIGxpbmUgIycuKCRrZXkgKyAxKSwgRV9VU0VSX1dBUk5JTkcpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcHJpbWUgPSBnbXBfaW5pdCgkcHJpbWUsIDEwKTsKICAgICAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJG1hdGgtPmlzUHJpbWUoJHByaW1lKSwgJ1ByaW1lICInLiRtYXRoLT50b1N0cmluZygkcHJpbWUpLiciIGlzIG5vdCBkZXRlY3RlZCBhcyBwcmltZS4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEFkYXB0ZXJzCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkbWF0aAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldE5leHRQcmltZXMoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKCiAgICAgICAgJGN1cnJlbnRQcmltZSA9ICRtYXRoLT5uZXh0UHJpbWUoZ21wX2luaXQoJHRoaXMtPnN0YXJ0UHJpbWUpKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHRoaXMtPnByaW1lQ291bnQ7ICRpICsrKSB7CiAgICAgICAgICAgICRjdXJyZW50UHJpbWUgPSAkbWF0aC0+bmV4dFByaW1lKCRjdXJyZW50UHJpbWUpOwogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkbWF0aC0+aXNQcmltZSgkY3VycmVudFByaW1lKSk7CgogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0Q29udGFpbnMoZ21wX3N0cnZhbCgkY3VycmVudFByaW1lLCAxMCksICR0aGlzLT5rbm93blByaW1lcyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICogQHBhcmFtIEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RNdWx0SW52ZXJzZU1vZFAoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICAkb25lID0gZ21wX2luaXQoMSwgMTApOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IDEwMDsgJGkgKyspIHsKICAgICAgICAgICAgJG0gPSBnbXBfaW5pdChyYW5kKDIwLCAxMDAwMCksIDEwKTsKCiAgICAgICAgICAgIGZvciAoJGogPSAwOyAkaiA8IDEwMDsgJGogKyspIHsKICAgICAgICAgICAgICAgICRhID0gZ21wX2luaXQocmFuZCgxLCBnbXBfc3RydmFsKGdtcF9zdWIoJG0sIDEpLCAxMCkpLCAxMCk7CgogICAgICAgICAgICAgICAgaWYgKCRtYXRoLT5jbXAoJG1hdGgtPmdjZDIoJGEsICRtKSwgJG9uZSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICRpbnYgPSAkbWF0aC0+aW52ZXJzZU1vZCgkYSwgJG0pOwogICAgICAgICAgICAgICAgICAgICRjaGVjayA9ICRtYXRoLT5jbXAoJGludiwgZ21wX2luaXQoMCkpIDw9IDAKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJG1hdGgtPmNtcCgkaW52LCAkbSkgPj0gMAogICAgICAgICAgICAgICAgICAgICAgICAmJiAkbWF0aC0+Y21wKCRtYXRoLT5tb2QoJG1hdGgtPm11bCgkYSwgJGludiksICRtKSwgJG9uZSkgIT09IDA7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKCRjaGVjayk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBVbmFibGUgdG8gY29udmVydCBuZWdhdGl2ZSBpbnRlZ2VyIHRvIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEludFRvU3RyaW5nRmFpbHVyZSgpCiAgICB7CiAgICAgICAgJG1hdGggPSBuZXcgR21wTWF0aCgpOwogICAgICAgICRtYXRoLT5pbnRUb1N0cmluZyhnbXBfaW5pdCgtMSwgMTApKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEludFRvU3RyaW5nRW1wdHkoKQogICAgewogICAgICAgICRtYXRoID0gbmV3IEdtcE1hdGgoKTsKICAgICAgICAkc3RyaW5nID0gJG1hdGgtPmludFRvU3RyaW5nKGdtcF9pbml0KDAsIDEwKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscyhjaHIoMCksICRzdHJpbmcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SXNQcmltZV9Ob3QoKQogICAgewogICAgICAgICRtYXRoID0gbmV3IEdtcE1hdGgoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoJG1hdGgtPmlzUHJpbWUoZ21wX2luaXQoNCwgMTApKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBOZWdhdGl2ZSBleHBvbmVudHMgKC0xKSBub3QgYWxsb3dlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFBvd01vZE5lZ2F0aXZlRXhwb25lbnQoKQogICAgewogICAgICAgICRtYXRoID0gbmV3IEdtcE1hdGgoKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoJG1hdGgtPnBvd21vZChnbXBfaW5pdCg0LCAxMCksIGdtcF9pbml0KC0xKSwgZ21wX2luaXQoMTApKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEludGVnZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9nZXRBZGFwdGVycyhbCiAgICAgICAgICAgIFsgIjkzMjU5ODUxNzAyNzMwMTIyMTE5NDE0MjY3MDU0ODI5MzY1Mzc3MTMzNDc3NjY4OTUyNzAxMjM2NzA5NDM5MjY4Nzk2MjU1NzQ0MjMzNDYwMTkxMjcxNjA3OTg1MTAyMzQwODkwNjQyNDE4MjYzMzQ3NjIwODE2NDA2NDA2NTMwNTY4MDYwNDkzMzY1OTQzODUwMzI3NjM1NjY1MDYzMzQ2MjQwNjI0ODI4ODY2OTE5MjcyNzk5Mjc3MjM2ODA2OTE4NDM2MDM4NzYxODA2MDg4NzkxNTY5Mjg3NjIyNDMwMjE2MTQxNzc5NzkyNjUxODg1OTkxNDg1OTI1MTA4MTk4OTMyOTc4MjY0NzM0MTQwMjQzMzcyMTYwNDY5MDE5NzAyMTYyNzM2MDY3OTQxNzQ5MDgwIiwgIjEyMzMyNTA4NDM3NTM3NTU4MDQ0ODQxNDIxMzUzMTM4NjU2NTkwNjUxNDU2OTkzMzkiIF0sCiAgICAgICAgICAgIFsgIjEwNDQ0MzA2OTI2NjY3NTE1NDg5NDQ5NDA1NjU0NzM1MjQ5NjA1ODMxNzg0OTg0MTQ0NjI0MDkwOTM4MTA4MDAzODc0Njk1NDM0NjM1ODI2MjE2NTQ0Nzc5NzY0NTM3NTQxMzY3OTU1NzgzMzY4MjUwMDg0MzA1Nzc4NzEwNzUxNTMwNjc5MTM1Mzc3NDAwODMzMjkxMzY0NTQ5MTc3ODY4MzQyOTk0MjE4MzAzNDAxODU5MTA4NTI0MjAyOTcxMjY2ODgyMTgyMjg3MDQwMDc2ODMwMDAzNjcyMzU3NDI4MDYxNTIwODQ4MDg4ODU2MTEyNTg3NDc4MzM3MTczNTY0NzY2MjcxODIzODY2MTIwMTgwNjE0NDYxNzE4NDQxODM2ODUzMTgzMzA5Nzg0NzM5OTQxMiIsICI2ODI2ODQxOTI2MTcyNzQyMTgyNzEyODkyMzcyMjY0NjU1Nzg2ODIyNTQyMjg3NDEiXSwKICAgICAgICAgICAgWyAiMTcyODQxNjUyMDA5ODI2MjA1MzQ4NjUxNDg1MDc5OTMxNTY0MDQ0MTU0ODU5MDk0ODg3MDUzMjYzNTQ0OTQwOTk3NzU3NzI0MzEzNzQzMzg3NDM4OTk2OTIxNzUyMjkwODU1OTY1MDQ3OTc2MzA4ODU2NzAzMjAyMTk1NDM4NTA1MDE1MDYxNjI3ODYxNDE5MjQwNjE3NDU4OTc5NDY0MjQyMDA4NzM3NDU2OTQ1MDMwMjYxNTQ4MjUxMDU5MDI0NTk1NzI4OTU4NTg4NTU5OTQzNDcyNjg3MjIxODIwMzc2NzcwMzkxMjQ0NzkxNzI3ODI0MzcxODY4NDU5NTE4NDM0NzE4MzMwNDUyMTkzMjQ3OTczMjM5ODkxNDIxNDEwOTUyNDAyMTEzMjMzMTAwMjI3MjkzIiwgIjIzMDQ4Mjg5NjI5MDc4MDY4MzM3Mjg0MDcxOTc1MjAwMDQ1NTAwNzcwNTAwMTU2NSIgXQogICAgICAgIF0pOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRJbnRlZ2VycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdERpZ2VzdEludGVnZXIoR21wTWF0aEludGVyZmFjZSAkbWF0aCwgJGludGVnZXIsICRyZXN1bHQpCiAgICB7CiAgICAgICAgJGludGVnZXIgPSBnbXBfaW5pdCgkaW50ZWdlciwgMTApOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHJlc3VsdCwgZ21wX3N0cnZhbCgkbWF0aC0+ZGlnZXN0SW50ZWdlcigkaW50ZWdlciksIDEwKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Math/NumberTheoryTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xNYXRoOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGhJbnRlcmZhY2U7CnVzZSBNZGFudGVyXEVjY1xNYXRoXE51bWJlclRoZW9yeTsKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CgpjbGFzcyBOdW1iZXJUaGVvcnlUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CiAgICAvKioKICAgICAqIEB2YXIKICAgICAqLwogICAgcHJvdGVjdGVkICRjb21wcmVzc2lvbl9kYXRhOwoKICAgIC8qKgogICAgICogQHZhcgogICAgICovCiAgICBwcm90ZWN0ZWQgJHNxcnRfZGF0YTsKCiAgICAvKioKICAgICAqIEB2YXIgXE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcR2VuZXJhdG9yUG9pbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRnZW5lcmF0b3I7CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHNldFVwKCkKICAgIHsKICAgICAgICAvLyBmaWxlIGNvbnRhaW5pbmcgYSBqc29uIGFycmF5IG9mIHtjb21wcmVzc2VkPT4nJywgZGVjb21wcmVzc2VkPT4nJ30gdmFsdWVzCiAgICAgICAgLy8gb2YgY29tcHJlc3NlZCBhbmQgdW5jb21wcmVzc2VkIEVDRFNBIHB1YmxpYyBrZXlzICh0ZXN0aW5nIHNlY3AyNTZrMSBjdXJ2ZSkKICAgICAgICAkZmlsZV9jb21wID0gVEVTVF9EQVRBX0RJUi4nL2NvbXByZXNzaW9uLmpzb24nOwoKICAgICAgICBpZiAoISBmaWxlX2V4aXN0cygkZmlsZV9jb21wKSkgewogICAgICAgICAgICAkdGhpcy0+ZmFpbCgnS2V5IGNvbXByZXNzaW9uIGlucHV0IGRhdGEgbm90IGZvdW5kJyk7CiAgICAgICAgfQoKICAgICAgICAkZmlsZV9zcXJ0ID0gVEVTVF9EQVRBX0RJUi4nL3NxdWFyZV9yb290X21vZF9wLmpzb24nOwogICAgICAgIGlmICghIGZpbGVfZXhpc3RzKCRmaWxlX3NxcnQpKSB7CiAgICAgICAgICAgICR0aGlzLT5mYWlsKCdTcXVhcmUgcm9vdCBpbnB1dCBkYXRhIG5vdCBmb3VuZCcpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yID0gRWNjRmFjdG9yeTo6Z2V0U2VjZ0N1cnZlcygpLT5nZW5lcmF0b3IyNTZrMSgpOwogICAgICAgICR0aGlzLT5jb21wcmVzc2lvbl9kYXRhID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGZpbGVfY29tcCkpOwoKICAgICAgICAkdGhpcy0+c3FydF9kYXRhID0ganNvbl9kZWNvZGUoZmlsZV9nZXRfY29udGVudHMoJGZpbGVfc3FydCkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxMb2dpY0V4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFNxcnREYXRhV2l0aE5vUm9vdHMoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcikKICAgIHsKICAgICAgICAkdGhlb3J5ID0gJGFkYXB0ZXItPmdldE51bWJlclRoZW9yeSgpOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c3FydF9kYXRhLT5ub19yb290IGFzICRyKSB7CiAgICAgICAgICAgIC8vIHRvZG86IHR1cm4gaW50byBhZGFwdGVyCiAgICAgICAgICAgICRhID0gZ21wX2luaXQoJHItPmEsIDEwKTsKICAgICAgICAgICAgJHAgPSBnbXBfaW5pdCgkci0+cCwgMTApOwogICAgICAgICAgICAkdGhlb3J5LT5zcXVhcmVSb290TW9kUCgkYSwgJHApOwogICAgICAgIH0KICAgIH0KICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFNxcnREYXRhV2l0aFJvb3RzKEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIpCiAgICB7CiAgICAgICAgJHRoZW9yeSA9ICRhZGFwdGVyLT5nZXROdW1iZXJUaGVvcnkoKTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNxcnRfZGF0YS0+aGFzX3Jvb3QgYXMgJHIpIHsKICAgICAgICAgICAgJGEgPSBnbXBfaW5pdCgkci0+YSwgMTApOwogICAgICAgICAgICAkcCA9IGdtcF9pbml0KCRyLT5wLCAxMCk7CiAgICAgICAgICAgICRyb290MSA9ICR0aGVvcnktPnNxdWFyZVJvb3RNb2RQKCRhLCAkcCk7CiAgICAgICAgICAgICRyb290MiA9ICRhZGFwdGVyLT5zdWIoJHAsICRyb290MSk7CiAgICAgICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGluX2FycmF5KGdtcF9zdHJ2YWwoJHJvb3QxLCAxMCksICRyLT5yZXMpKTsKICAgICAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaW5fYXJyYXkoZ21wX3N0cnZhbCgkcm9vdDIsIDEwKSwgJHItPnJlcykpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0QWRhcHRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb21wcmVzc2lvbkNvbnNpc3RlbmN5KEdtcE1hdGhJbnRlcmZhY2UgJGFkYXB0ZXIpCiAgICB7CiAgICAgICAgJHRoZW9yeSA9ICRhZGFwdGVyLT5nZXROdW1iZXJUaGVvcnkoKTsKICAgICAgICAkdGhpcy0+X2RvQ29tcHJlc3Npb25Db25zaXN0ZW5jZSgkYWRhcHRlciwgJHRoZW9yeSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9kb0NvbXByZXNzaW9uQ29uc2lzdGVuY2UoR21wTWF0aEludGVyZmFjZSAkYWRhcHRlciwgTnVtYmVyVGhlb3J5ICR0aGVvcnkpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNvbXByZXNzaW9uX2RhdGEgYXMgJG8pIHsKICAgICAgICAgICAgLy8gVHJ5IGFuZCByZWdlbmVyYXRlIHRoZSB5IGNvb3JkaW5hdGUgZnJvbSB0aGUgcGFyaXR5IGJ5dGUKICAgICAgICAgICAgLy8gJzA0JyAuICR4X2Nvb3JkaW5hdGUgLiBkZXRlcm1pbmVkIHkgY29vcmRpbmF0ZSBzaG91bGQgZXF1YWwgJG8tPmRlY29tcHJlc3NlZAogICAgICAgICAgICAvLyBUZXN0cyBzcXVhcmVSb290TW9kUCB3aGljaCB0b3VjaGVzIG1vc3QgZnVuY3Rpb25zIGluIE51bWJlclRoZW9yeQogICAgICAgICAgICAkeV9ieXRlID0gc3Vic3RyKCRvLT5jb21wcmVzc2VkLCAwLCAyKTsKICAgICAgICAgICAgJHhfY29vcmRpbmF0ZSA9IHN1YnN0cigkby0+Y29tcHJlc3NlZCwgMik7CgogICAgICAgICAgICAkeCA9IGdtcF9pbml0KCR4X2Nvb3JkaW5hdGUsIDE2KTsKCiAgICAgICAgICAgIC8vIHheMwogICAgICAgICAgICAkeDMgPSAkYWRhcHRlci0+cG93bW9kKCR4LCBnbXBfaW5pdCgzLCAxMCksICR0aGlzLT5nZW5lcmF0b3ItPmdldEN1cnZlKCktPmdldFByaW1lKCkpOwoKICAgICAgICAgICAgLy8geV4yCiAgICAgICAgICAgICR5MiA9ICRhZGFwdGVyLT5hZGQoCiAgICAgICAgICAgICAgICAkeDMsCiAgICAgICAgICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yLT5nZXRDdXJ2ZSgpLT5nZXRCKCkKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIC8vIHkwID0gc3FydCh5XjIpCiAgICAgICAgICAgICR5MCA9ICR0aGVvcnktPnNxdWFyZVJvb3RNb2RQKAogICAgICAgICAgICAgICAgJHkyLAogICAgICAgICAgICAgICAgJHRoaXMtPmdlbmVyYXRvci0+Z2V0Q3VydmUoKS0+Z2V0UHJpbWUoKQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCR5X2J5dGUgPT0gJzAyJykgewogICAgICAgICAgICAgICAgJHlfY29vcmRpbmF0ZSA9ICgkYWRhcHRlci0+ZXF1YWxzKCRhZGFwdGVyLT5tb2QoJHkwLCBnbXBfaW5pdCgyLCAxMCkpLCBnbXBfaW5pdCgnMCcpKSkKICAgICAgICAgICAgICAgICAgICA/IGdtcF9zdHJ2YWwoJHkwLCAxNikKICAgICAgICAgICAgICAgICAgICA6IGdtcF9zdHJ2YWwoZ21wX3N1YigkdGhpcy0+Z2VuZXJhdG9yLT5nZXRDdXJ2ZSgpLT5nZXRQcmltZSgpLCAkeTApLCAxNik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkeV9jb29yZGluYXRlID0gKCRhZGFwdGVyLT5lcXVhbHMoJGFkYXB0ZXItPm1vZCgkeTAsIGdtcF9pbml0KDIsIDEwKSksIGdtcF9pbml0KCcwJykpKQogICAgICAgICAgICAgICAgICAgID8gZ21wX3N0cnZhbChnbXBfc3ViKCR0aGlzLT5nZW5lcmF0b3ItPmdldEN1cnZlKCktPmdldFByaW1lKCksICR5MCksIDE2KQogICAgICAgICAgICAgICAgICAgIDogZ21wX3N0cnZhbCgkeTAsIDE2KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkeV9jb29yZGluYXRlID0gc3RyX3BhZCgkeV9jb29yZGluYXRlLCA2NCwgJzAnLCBTVFJfUEFEX0xFRlQpOwoKICAgICAgICAgICAgLy8gU3VjY2Vzc2Z1bGx5IHJlZ2VuZXJhdGVkIHVuY29tcHJlc3NlZCBFQ0RTQSBrZXkgZnJvbSB0aGUgeCBjb29yZGluYXRlIGFuZCB0aGUgcGFyaXR5IGJ5dGUuCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCcwNCcuJHhfY29vcmRpbmF0ZS4keV9jb29yZGluYXRlID09ICRvLT5kZWNvbXByZXNzZWQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0QWRhcHRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RNb2RGdW5jdGlvbihHbXBNYXRoSW50ZXJmYWNlICRtYXRoKQogICAgewogICAgICAgIC8vICRvLT5jb21wcmVzc2VkLCAkby0+ZGVjb21wcmVzc2VkIHB1YmxpYyBrZXkuCiAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gY29tcHJlc3MgYSBrZXkgcHJvcGVybHkgKHRlc3RzICRtYXRoLT5tb2QoKSkKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y29tcHJlc3Npb25fZGF0YSBhcyAkbykgewogICAgICAgICAgICAkcHJlZml4ID0gc3Vic3RyKCRvLT5kZWNvbXByZXNzZWQsIDAsIDIpOyAvLyB3aWxsIGJlIDA0LgoKICAgICAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygnMDQnLCAkcHJlZml4KTsKCiAgICAgICAgICAgIC8vIGhleCBlbmNvZGVkIChYLFkpIGNvb3JkaW5hdGUgb2YgRUNEU0EgcHVibGljIGtleS4KICAgICAgICAgICAgJHggPSBzdWJzdHIoJG8tPmRlY29tcHJlc3NlZCwgMiwgNjQpOwogICAgICAgICAgICAkeSA9IHN1YnN0cigkby0+ZGVjb21wcmVzc2VkLCA2NiwgNjQpOwoKICAgICAgICAgICAgLy8geSAlIDIgPT0gMCAgICAgICAtIHRydWU6IHkgaXMgZXZlbigwMikgLyBmYWxzZTogeSBpcyBvZGQoMDMpCiAgICAgICAgICAgICRtb2QgPSAkbWF0aC0+bW9kKGdtcF9pbml0KCR5LCAxNiksIGdtcF9pbml0KDIsIDEwKSk7CiAgICAgICAgICAgICRjb21wcmVzc2VkID0gJzAnLigoJG1hdGgtPmVxdWFscygkbW9kLCBnbXBfaW5pdCgwKSkpID8gJzInIDogJzMnKS4keDsKCiAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIG1vZCBmdW5jdGlvbiByZXBvcnRlZCB0aGUgcGFyaXR5IGZvciB0aGUgeSB2YWx1ZS4KICAgICAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJGNvbXByZXNzZWQgPT09ICRvLT5jb21wcmVzc2VkKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Primitives/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Primitives/CurveFpTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGg7CnVzZSBNZGFudGVyXEVjY1xNYXRoXE1vZHVsYXJBcml0aG1ldGljOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZVBhcmFtZXRlcnM7CnVzZSBNZGFudGVyXEVjY1xUZXN0c1xBYnN0cmFjdFRlc3RDYXNlOwoKY2xhc3MgQ3VydmVGcFRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW5zdGFuY2UoKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRnZW5lcmF0b3IgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRhZGFwdGVyKS0+Z2VuZXJhdG9yNTIxKCk7CiAgICAgICAgJGN1cnZlID0gJGdlbmVyYXRvci0+Z2V0Q3VydmUoKTsKCiAgICAgICAgLy8gVGVzdCBNb2R1bGFyQXJpdGhtZXRpYyBpcyByZXR1cm5lZCwgYW5kIGluaXRpYWxpemVkCiAgICAgICAgLy8gd2l0aCBjb3JyZWN0IHByaW1lIGJ5IHRlc3RpbmcgMCA9IChwICsgMCkgJSBwCiAgICAgICAgJG1vZEFkYXB0ZXIgPSAkY3VydmUtPmdldE1vZEFkYXB0ZXIoKTsKICAgICAgICAkemVybyA9IGdtcF9pbml0KDApOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKE1vZHVsYXJBcml0aG1ldGljOjpjbGFzcywgJG1vZEFkYXB0ZXIpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRhZGFwdGVyLT5lcXVhbHMoJHplcm8sICRtb2RBZGFwdGVyLT5hZGQoJGN1cnZlLT5nZXRQcmltZSgpLCAkemVybykpKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJGN1cnZlLT5jb250YWlucygkZ2VuZXJhdG9yLT5nZXRYKCksICRnZW5lcmF0b3ItPmdldFkoKSkpOwoKICAgICAgICAvLyBUZXN0IGluZmluaXR5IHBvaW50IGlzIHJldHVybmVkCiAgICAgICAgJGluZmluaXR5UG9pbnQgPSAkY3VydmUtPmdldEluZmluaXR5KCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJGluZmluaXR5UG9pbnQtPmlzSW5maW5pdHkoKSk7CgogICAgICAgIC8vIENoZWNrIGVxdWFsaXR5IHRlc3RzCiAgICAgICAgJGRpZmZlcmVudEN1cnZlID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5jdXJ2ZTE5MigpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMSwgJGN1cnZlLT5jbXAoJGRpZmZlcmVudEN1cnZlKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygwLCAkY3VydmUtPmNtcCgkY3VydmUpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoJGN1cnZlLT5lcXVhbHMoJGRpZmZlcmVudEN1cnZlKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJGN1cnZlLT5lcXVhbHMoJGN1cnZlKSk7CgogICAgfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdERlYnVnSW5mbygpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSBuZXcgR21wTWF0aCgpOwogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgZ21wX2luaXQoMjMsIDEwKSwgZ21wX2luaXQoMSwgMTApLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRjdXJ2ZSA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkYWRhcHRlcik7CgogICAgICAgICRkZWJ1ZyA9ICRjdXJ2ZS0+X19kZWJ1Z0luZm8oKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc3NldCgkZGVidWdbJ2EnXSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzc2V0KCRkZWJ1Z1snYiddKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaXNzZXQoJGRlYnVnWydwcmltZSddKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Primitives/CurveParametersTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVQYXJhbWV0ZXJzOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIEN1cnZlUGFyYW1ldGVyc1Rlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW5zdGFuY2UoKQogICAgewogICAgICAgICRzaXplID0gMjI0OwogICAgICAgICRwID0gZ21wX2luaXQoJzI2OTU5OTQ2NjY3MTUwNjM5Nzk0NjY3MDE1MDg3MDE5NjMwNjczNTU3OTE2MjYwMDI2MzA4MTQzNTEwMDY2Mjk4ODgxJywgMTApOwogICAgICAgICRhID0gZ21wX2luaXQoLTMsIDEwKTsKICAgICAgICAkYiA9IGdtcF9pbml0KCdiNDA1MGE4NTBjMDRiM2FiZjU0MTMyNTY1MDQ0YjBiN2Q3YmZkOGJhMjcwYjM5NDMyMzU1ZmZiNCcsIDE2KTsKCiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKCRzaXplLCAkcCwgJGEsICRiKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEludGVybmFsVHlwZSgnaW50JywgJHNpemUpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHNpemUsICRwYXJhbWV0ZXJzLT5nZXRTaXplKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKFxHTVA6OmNsYXNzLCAkcGFyYW1ldGVycy0+Z2V0QSgpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihcR01QOjpjbGFzcywgJHBhcmFtZXRlcnMtPmdldEIoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoXEdNUDo6Y2xhc3MsICRwYXJhbWV0ZXJzLT5nZXRQcmltZSgpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Primitives/EcArithmeticTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVQYXJhbWV0ZXJzOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xDdXJ2ZUZwSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIEVjQXJpdGhtZXRpY1Rlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkKEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgsIEN1cnZlRnBJbnRlcmZhY2UgJGMsICR4MSwgJHkxLCAkeDIsICR5MiwgJHgzLCAkeTMpCiAgICB7CiAgICAgICAgJHAxID0gJGMtPmdldFBvaW50KGdtcF9pbml0KCR4MSwgMTApLCBnbXBfaW5pdCgkeTEsIDEwKSk7CiAgICAgICAgJHAyID0gJGMtPmdldFBvaW50KGdtcF9pbml0KCR4MiwgMTApLCBnbXBfaW5pdCgkeTIsIDEwKSk7CgogICAgICAgICRwMyA9ICRwMS0+YWRkKCRwMik7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHgzLCAkbWF0aC0+dG9TdHJpbmcoJG1hdGgtPm1vZCgkcDMtPmdldFgoKSwgZ21wX2luaXQoMjMsIDEwKSkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCR5MywgJG1hdGgtPnRvU3RyaW5nKCRtYXRoLT5tb2QoJHAzLT5nZXRZKCksIGdtcF9pbml0KDIzLCAxMCkpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICogQHRlc3Rkb3ggVGVzdCBwb2ludCBhZGRpdGlvbnMgeWllbGQgZXhwZWN0ZWQgcmVzdWx0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEFkZGl0aW9ucyhHbXBNYXRoSW50ZXJmYWNlICRtYXRoKQogICAgewogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgZ21wX2luaXQoMjMsIDEwKSwgZ21wX2luaXQoMSwgMTApLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRjdXJ2ZSA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkbWF0aCk7CgogICAgICAgICR0aGlzLT5hZGQoJG1hdGgsICRjdXJ2ZSwgMywgMTAsIDksIDcsIDE3LCAyMCk7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICogQHRlc3Rkb3ggVGVzdCBwb2ludCBhZGRpdGlvbnMgYXJlIGFzc29jaWF0aXZlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0QWRkaXRpb25Db21tdXRhdGl2aXR5KEdtcE1hdGhJbnRlcmZhY2UgJG1hdGgpCiAgICB7CiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKDMyLCBnbXBfaW5pdCgyMywgMTApLCBnbXBfaW5pdCgxLCAxMCksIGdtcF9pbml0KDEsIDEwKSk7CiAgICAgICAgJGN1cnZlID0gbmV3IEN1cnZlRnAoJHBhcmFtZXRlcnMsICRtYXRoKTsKCiAgICAgICAgJHAxID0gJGN1cnZlLT5nZXRQb2ludChnbXBfaW5pdCgzLCAxMCksIGdtcF9pbml0KDEwLCAxMCkpOwogICAgICAgICRwMiA9ICRjdXJ2ZS0+Z2V0UG9pbnQoZ21wX2luaXQoOSwgMTApLCBnbXBfaW5pdCg3LCAxMCkpOwoKICAgICAgICAkcDNhID0gJHAxLT5hZGQoJHAyKTsKICAgICAgICAkcDRhID0gJHAyLT5hZGQoJHAxKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHAzYS0+ZXF1YWxzKCRwNGEpKTsKCiAgICAgICAgJGMgPSBuZXcgQ3VydmVGcCgkcGFyYW1ldGVycywgJG1hdGgpOwogICAgICAgICRnID0gJGMtPmdldFBvaW50KGdtcF9pbml0KDEzLCAxMCksIGdtcF9pbml0KDcsIDEwKSwgZ21wX2luaXQoNywgMTApKTsKICAgICAgICAkY2hlY2sgPSAkYy0+Z2V0SW5maW5pdHkoKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgODsgJGkrKykgewogICAgICAgICAgICAkYSA9ICRjaGVjay0+YWRkKCRnKTsKICAgICAgICAgICAgJGIgPSAkZy0+YWRkKCRjaGVjayk7CgogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkYS0+ZXF1YWxzKCRiKSwgIiRhID09ICRiID8gd2l0aCAkY2hlY2sgYW5kICRnIik7CgogICAgICAgICAgICAkY2hlY2sgPSAkYTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdERvdWJsZShHbXBNYXRoSW50ZXJmYWNlICRtYXRoKQogICAgewogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgZ21wX2luaXQoMjMsIDEwKSwgZ21wX2luaXQoMSwgMTApLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRjID0gbmV3IEN1cnZlRnAoJHBhcmFtZXRlcnMsICRtYXRoKTsKCiAgICAgICAgJHgxID0gMzsKICAgICAgICAkeTEgPSAxMDsKICAgICAgICAkeDMgPSA3OwogICAgICAgICR5MyA9IDEyOwoKICAgICAgICAvLyBleHBlY3QgdGhhdCBvbiBjdXJ2ZSBjLCAoeDEsIHkxKSArICh4MiwgeTIpID0gKHgzLCB5MykKICAgICAgICAkcDEgPSAkYy0+Z2V0UG9pbnQoZ21wX2luaXQoJHgxLCAxMCksIGdtcF9pbml0KCR5MSwgMTApKTsKICAgICAgICAkcDMgPSAkcDEtPmdldERvdWJsZSgpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCR4MywgJG1hdGgtPnRvU3RyaW5nKCRtYXRoLT5tb2QoJHAzLT5nZXRYKCksIGdtcF9pbml0KDIzLCAxMCkpKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkeTMsICRtYXRoLT50b1N0cmluZygkbWF0aC0+bW9kKCRwMy0+Z2V0WSgpLCBnbXBfaW5pdCgyMywgMTApKSkpOwogICAgfQoKICAgIC8qKgogICAgICoKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0QWRhcHRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RBZGREb3VibGUoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzIsIGdtcF9pbml0KDIzLCAxMCksIGdtcF9pbml0KDEsIDEwKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkYyA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkbWF0aCk7CgogICAgICAgICR0aGlzLT5hZGQoJG1hdGgsICRjLCAzLCAxMCwgMywgMTAsIDcsIDEyKTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEFkYXB0ZXJzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0TXVsdGlwbHkoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzIsIGdtcF9pbml0KDIzLCAxMCksIGdtcF9pbml0KDEsIDEwKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkYyA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkbWF0aCk7CgogICAgICAgICR4MSA9IDM7CiAgICAgICAgJHkxID0gMTA7CiAgICAgICAgJG0gPSBnbXBfaW5pdCgyKTsKICAgICAgICAkeDMgPSA3OwogICAgICAgICR5MyA9IDEyOwoKICAgICAgICAkcDEgPSAkYy0+Z2V0UG9pbnQoZ21wX2luaXQoJHgxLCAxMCksIGdtcF9pbml0KCR5MSwgMTApKTsKICAgICAgICAkcDMgPSAkcDEtPm11bCgkbSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRGYWxzZSgkcDMtPmlzSW5maW5pdHkoKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkeDMsICRtYXRoLT50b1N0cmluZygkbWF0aC0+bW9kKCRwMy0+Z2V0WCgpLCBnbXBfaW5pdCgyMywgMTApKSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHkzLCAkbWF0aC0+dG9TdHJpbmcoJG1hdGgtPm1vZCgkcDMtPmdldFkoKSwgZ21wX2luaXQoMjMsIDEwKSkpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TXVsdEFkYXB0ZXJzKCkKICAgIHsKICAgICAgICAvLyBodHRwczovL3d3dy5jZXJ0aWNvbS5jb20vaW5kZXgucGhwLzUyLXRoZS1lbGxpcHRpYy1jdXJ2ZS1kaXNjcmV0ZS1sb2dhcml0aG0tcHJvYmxlbQogICAgICAgIHJldHVybiAkdGhpcy0+X2dldEFkYXB0ZXJzKFsKICAgICAgICAgICAgWyAyMywgOSwgMTcsIDE2LCA1LCA5LCA0LCA1IF0sCiAgICAgICAgICAgIFsgMjMsIDksIDE3LCAxNiwgNSwgOCwgMTIsIDE3IF0sCiAgICAgICAgICAgIFsgMjMsIDksIDE3LCAxNiwgNSwgNywgOCwgNyBdLAogICAgICAgICAgICBbIDIzLCA5LCAxNywgMTYsIDUsIDYsIDcsIDMgXSwKICAgICAgICAgICAgWyAyMywgOSwgMTcsIDE2LCA1LCA1LCAxMywgMTAgXSwKICAgICAgICAgICAgWyAyMywgOSwgMTcsIDE2LCA1LCA0LCAxOSwgMjAgXSwKICAgICAgICAgICAgWyAyMywgOSwgMTcsIDE2LCA1LCAzLCAxNCwgMTQgXSwKICAgICAgICAgICAgWyAyMywgOSwgMTcsIDE2LCA1LCAyLCAyMCwgMjAgXSwKICAgICAgICAgICAgWyAyMywgOSwgMTcsIDE2LCA1LCAxLCAxNiwgNSBdLAogICAgICAgICAgICBbIDIxMTEsIDIwLCAxMywgMywgMTAsIDU3LCA0NzAsIDE3NTddCiAgICAgICAgXSk7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQGRhdGFQcm92aWRlciBnZXRNdWx0QWRhcHRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RNdWx0aXBseTIoR21wTWF0aEludGVyZmFjZSAkbWF0aCwgJHAsICRhLCAkYiwgJHgsICR5LCAkbSwgJGV4LCAkZXkpCiAgICB7CiAgICAgICAgJHAgPSBnbXBfaW5pdCgkcCwgMTApOwogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgJHAsIGdtcF9pbml0KCRhLCAxMCksIGdtcF9pbml0KCRiLCAxMCkpOwogICAgICAgICRjID0gbmV3IEN1cnZlRnAoJHBhcmFtZXRlcnMsICRtYXRoKTsKCiAgICAgICAgJHAxID0gJGMtPmdldFBvaW50KGdtcF9pbml0KCR4LCAxMCksIGdtcF9pbml0KCR5LCAxMCkpOwogICAgICAgICRwMyA9ICRwMS0+bXVsKGdtcF9pbml0KCRtLCAxMCkpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RmFsc2UoJHAzLT5pc0luZmluaXR5KCkpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleCwgJG1hdGgtPnRvU3RyaW5nKCRtYXRoLT5tb2QoJHAzLT5nZXRYKCksICRwKSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV5LCAkbWF0aC0+dG9TdHJpbmcoJG1hdGgtPm1vZCgkcDMtPmdldFkoKSwgJHApKSk7CiAgICB9CgogICAgLyoqCiAgICAgKgogICAgICogQGRhdGFQcm92aWRlciBnZXRBZGFwdGVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdE11bHRpcGx5QXNzb2NpYXRpdmUoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzIsIGdtcF9pbml0KDIzLCAxMCksIGdtcF9pbml0KDEsIDEwKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkYyA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkbWF0aCk7CgogICAgICAgICRnID0gJGMtPmdldFBvaW50KGdtcF9pbml0KDEzLCAxMCksIGdtcF9pbml0KDcsIDEwKSwgbnVsbCk7CgogICAgICAgICRhID0gJGctPm11bChnbXBfaW5pdCgnMTIzNDU2NDU2NDU2NDU2NDU2NDU2NDU2NDU2NDU2NDU2NDY0NicsIDEwKSktPm11bChnbXBfaW5pdCgxMCwgMTApKTsKICAgICAgICAkYiA9ICRnLT5tdWwoZ21wX2luaXQoMTAsIDEwKSktPm11bChnbXBfaW5pdCgnMTIzNDU2NDU2NDU2NDU2NDU2NDU2NDU2NDU2NDU2NDU2NDY0NicsIDEwKSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRhLT5lcXVhbHMoJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqCiAgICAgKiBAZGF0YVByb3ZpZGVyIGdldEFkYXB0ZXJzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW5maW5pdHkoR21wTWF0aEludGVyZmFjZSAkbWF0aCkKICAgIHsKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzIsIGdtcF9pbml0KDIzLCAxMCksIGdtcF9pbml0KDEsIDEwKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkYyA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkbWF0aCk7CgogICAgICAgICRnID0gJGMtPmdldFBvaW50KGdtcF9pbml0KDEzLCAxMCksIGdtcF9pbml0KDcsIDEwKSwgbnVsbCk7CgogICAgICAgICRjaGVjayA9ICRjLT5nZXRJbmZpbml0eSgpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCA4OyAkaSsrKSB7CiAgICAgICAgICAgICRtdWwgPSBnbXBfaW5pdCgkaSAlIDcsIDEwKTsKICAgICAgICAgICAgJHAgPSAkZy0+bXVsKCRtdWwpOwogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkY2hlY2stPmVxdWFscygkcCksICIkZyAqICRwLCBleHBlY3RlZCAkY2hlY2sgICIpOwogICAgICAgICAgICAkY2hlY2sgPSAkZy0+YWRkKCRjaGVjayk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Primitives/PointTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xQcmltaXRpdmVzOwoKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xDdXJ2ZUZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xNYXRoXEdtcE1hdGg7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlUGFyYW1ldGVyczsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcUG9pbnQ7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnA7CnVzZSBNZGFudGVyXEVjY1xUZXN0c1xBYnN0cmFjdFRlc3RDYXNlOwoKY2xhc3MgUG9pbnRUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBDdXJ2ZSBjdXJ2ZSgxLCAxLCAyMykgZG9lcyBub3QgY29udGFpbiBwb2ludCAoMiwgMikKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb25zdHJ1Y3RvckludmFsaWRDdXJ2ZVBvaW50KCkKICAgIHsKICAgICAgICAkYWRhcHRlciA9IG5ldyBHbXBNYXRoKCk7CiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKDMyLCBnbXBfaW5pdCgyMywgMTApLCBnbXBfaW5pdCgxLCAxMCksIGdtcF9pbml0KDEsIDEwKSk7CiAgICAgICAgJGN1cnZlID0gbmV3IEN1cnZlRnAoJHBhcmFtZXRlcnMsICRhZGFwdGVyKTsKICAgICAgICBuZXcgUG9pbnQoJGFkYXB0ZXIsICRjdXJ2ZSwgZ21wX2luaXQoMiksIGdtcF9pbml0KDIpLCBudWxsLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgVGhlIEVsbGlwdGljIEN1cnZlcyBkbyBub3QgbWF0Y2guCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UG9pbnRBZGRpdGlvbkN1cnZlTWlzbWF0Y2goKQogICAgewogICAgICAgICRhZGFwdGVyID0gbmV3IEdtcE1hdGgoKTsKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzIsIGdtcF9pbml0KDIzLCAxMCksIGdtcF9pbml0KDEsIDEwKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkY3VydmUgPSBuZXcgQ3VydmVGcCgkcGFyYW1ldGVycywgJGFkYXB0ZXIpOwogICAgICAgICRwb2ludCA9IG5ldyBQb2ludCgkYWRhcHRlciwgJGN1cnZlLCBnbXBfaW5pdCgxMywgMTApLCBnbXBfaW5pdCg3LCAxMCksIGdtcF9pbml0KDcsIDEwKSk7CiAgICAgICAgJHBvaW50MiA9IEN1cnZlRmFjdG9yeTo6Z2V0R2VuZXJhdG9yQnlOYW1lKCdzZWNwMjU2azEnKTsKCiAgICAgICAgJHBvaW50LT5hZGQoJHBvaW50Mik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDbXAoKQogICAgewogICAgICAgICRhZGFwdGVyID0gbmV3IEdtcE1hdGgoKTsKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzIsIGdtcF9pbml0KDIzLCAxMCksIGdtcF9pbml0KDEsIDEwKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkY3VydmUgPSBuZXcgQ3VydmVGcCgkcGFyYW1ldGVycywgJGFkYXB0ZXIpOwoKICAgICAgICAkaW5maW5pdHkgPSAkY3VydmUtPmdldEluZmluaXR5KCk7CgogICAgICAgICRwb2ludCA9IG5ldyBQb2ludCgkYWRhcHRlciwgJGN1cnZlLCBnbXBfaW5pdCgxMywgMTApLCBnbXBfaW5pdCg3LCAxMCksIGdtcF9pbml0KDcsIDEwKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxLCAkcG9pbnQtPmNtcCgkaW5maW5pdHkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKDEsICRpbmZpbml0eS0+Y21wKCRwb2ludCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoMCwgJHBvaW50LT5jbXAoJHBvaW50KSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygwLCAkaW5maW5pdHktPmNtcCgkaW5maW5pdHkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkcG9pbnQtPmVxdWFscygkcG9pbnQpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkaW5maW5pdHktPmVxdWFscygkaW5maW5pdHkpKTsKCiAgICAgICAgJHBvaW50MiA9ICRwb2ludC0+Z2V0RG91YmxlKCk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxLCAkcG9pbnQtPmNtcCgkcG9pbnQyKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygxLCAkcG9pbnQyLT5jbXAoJHBvaW50KSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEZhbHNlKCRwb2ludDItPmVxdWFscygkcG9pbnQpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdERlYnVnSW5mbygpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSBuZXcgR21wTWF0aCgpOwogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgZ21wX2luaXQoMjMsIDEwKSwgZ21wX2luaXQoMSwgMTApLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRjdXJ2ZSA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkYWRhcHRlcik7CgogICAgICAgICRpbmZpbml0eSA9ICRjdXJ2ZS0+Z2V0SW5maW5pdHkoKTsKCiAgICAgICAgJGRlYnVnID0gJGluZmluaXR5LT5fX2RlYnVnSW5mbygpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzc2V0KCRkZWJ1Z1sneCddKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaXNzZXQoJGRlYnVnWyd5J10pKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc3NldCgkZGVidWdbJ3onXSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzc2V0KCRkZWJ1Z1snY3VydmUnXSkpOwoKICAgICAgICAkcG9pbnQgPSBuZXcgUG9pbnQoJGFkYXB0ZXIsICRjdXJ2ZSwgZ21wX2luaXQoMTMsIDEwKSwgZ21wX2luaXQoNywgMTApLCBnbXBfaW5pdCg3LCAxMCkpOwogICAgICAgICRkZWJ1ZyA9ICRwb2ludC0+X19kZWJ1Z0luZm8oKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc3NldCgkZGVidWdbJ3gnXSkpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKGlzc2V0KCRkZWJ1Z1sneSddKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoaXNzZXQoJGRlYnVnWyd6J10pKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZShpc3NldCgkZGVidWdbJ2N1cnZlJ10pKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdE11bEFscmVhZHlJbmZpbml0eSgpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSBuZXcgR21wTWF0aCgpOwogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgZ21wX2luaXQoMjMsIDEwKSwgZ21wX2luaXQoMSwgMTApLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRjdXJ2ZSA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkYWRhcHRlcik7CgogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRjdXJ2ZS0+Z2V0SW5maW5pdHkoKS0+bXVsKGdtcF9pbml0KDEpKS0+aXNJbmZpbml0eSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdERvdWJsZUFscmVhZHlJbmZpbml0eSgpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSBuZXcgR21wTWF0aCgpOwogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgZ21wX2luaXQoMjMsIDEwKSwgZ21wX2luaXQoMSwgMTApLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRjdXJ2ZSA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkYWRhcHRlcik7CgogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRjdXJ2ZS0+Z2V0SW5maW5pdHkoKS0+bXVsKGdtcF9pbml0KDEpKS0+aXNJbmZpbml0eSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEFkZEluZmluaXR5UmV0dXJuc09yaWdpbmFsUG9pbnQoKQogICAgewogICAgICAgICRhZGFwdGVyID0gbmV3IEdtcE1hdGgoKTsKICAgICAgICAkcGFyYW1ldGVycyA9IG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMzIsIGdtcF9pbml0KDIzLCAxMCksIGdtcF9pbml0KDEsIDEwKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkY3VydmUgPSBuZXcgQ3VydmVGcCgkcGFyYW1ldGVycywgJGFkYXB0ZXIpOwoKICAgICAgICAkaW5maW5pdHkgPSAkY3VydmUtPmdldEluZmluaXR5KCk7CgogICAgICAgICRwb2ludCA9IG5ldyBQb2ludCgkYWRhcHRlciwgJGN1cnZlLCBnbXBfaW5pdCgxMywgMTApLCBnbXBfaW5pdCg3LCAxMCksIGdtcF9pbml0KDcsIDEwKSk7CgogICAgICAgICRzdW0gPSAkcG9pbnQtPmFkZCgkaW5maW5pdHkpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRwb2ludC0+ZXF1YWxzKCRzdW0pKTsKCiAgICAgICAgJHN1bSA9ICRpbmZpbml0eS0+YWRkKCRwb2ludCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHBvaW50LT5lcXVhbHMoJHN1bSkpOwoKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbmRpdGlvbmFsU3dhcCgpCiAgICB7CiAgICAgICAgJGFhID0gZ21wX2luaXQoJzEwNDU2NDUxMjMxMjMxNzg3NDg2NScsIDEwKTsKICAgICAgICAkYWIgPSBnbXBfaW5pdCgnMDQxNTY0NTY0NTY0NTY0NTY0NTYnLCAxMCk7CgogICAgICAgICRhID0gJGFhOwogICAgICAgICRiID0gJGFiOwoKICAgICAgICAkYWRhcHRlciA9IG5ldyBHbXBNYXRoKCk7CiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKDMyLCBnbXBfaW5pdCgyMywgMTApLCBnbXBfaW5pdCgxLCAxMCksIGdtcF9pbml0KDEsIDEwKSk7CiAgICAgICAgJGN1cnZlID0gbmV3IEN1cnZlRnAoJHBhcmFtZXRlcnMsICRhZGFwdGVyKTsKCiAgICAgICAgJHBvaW50ID0gJGN1cnZlLT5nZXRQb2ludChnbXBfaW5pdCgxMywgMTApLCBnbXBfaW5pdCg3LCAxMCksIGdtcF9pbml0KDcsIDEwKSk7CgogICAgICAgICRwb2ludC0+Y3N3YXBWYWx1ZSgkYSwgJGIsIGZhbHNlKTsKCiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkYWRhcHRlci0+dG9TdHJpbmcoJGFhKSwgJGFkYXB0ZXItPnRvU3RyaW5nKCRhKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkYWRhcHRlci0+dG9TdHJpbmcoJGFiKSwgJGFkYXB0ZXItPnRvU3RyaW5nKCRiKSk7CgogICAgICAgICRwb2ludC0+Y3N3YXBWYWx1ZSgkYSwgJGIsIHRydWUpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRhZGFwdGVyLT50b1N0cmluZygkYWEpLCAkYWRhcHRlci0+dG9TdHJpbmcoJGIpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRhZGFwdGVyLT50b1N0cmluZygkYWIpLCAkYWRhcHRlci0+dG9TdHJpbmcoJGEpKTsKCiAgICAgICAgJHBvaW50LT5jc3dhcFZhbHVlKCRhLCAkYiwgZmFsc2UpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRhZGFwdGVyLT50b1N0cmluZygkYWEpLCAkYWRhcHRlci0+dG9TdHJpbmcoJGIpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRhZGFwdGVyLT50b1N0cmluZygkYWIpLCAkYWRhcHRlci0+dG9TdHJpbmcoJGEpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Random/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Random/HmacRandomNumberGeneratorTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xSYW5kb207Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xLZXlcUHJpdmF0ZUtleTsKdXNlIE1kYW50ZXJcRWNjXFJhbmRvbVxIbWFjUmFuZG9tTnVtYmVyR2VuZXJhdG9yOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIEhtYWNSYW5kb21OdW1iZXJHZW5lcmF0b3JUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIFVuc3VwcG9ydGVkIGhhc2hpbmcgYWxnb3JpdGhtCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UmVxdWlyZVZhbGlkQWxnb3JpdGhtKCkKICAgIHsKICAgICAgICAkbWF0aCA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkZyA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMTkyKCk7CiAgICAgICAgJHByaXZhdGVLZXkgID0gbmV3IFByaXZhdGVLZXkoJG1hdGgsICRnLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRoYXNoID0gZ21wX2luaXQoaGFzaCgnc2hhMjU2JywgJ21lc3NhZ2UnLCBmYWxzZSksIDE2KTsKCiAgICAgICAgbmV3IEhtYWNSYW5kb21OdW1iZXJHZW5lcmF0b3IoJG1hdGgsICRwcml2YXRlS2V5LCAkaGFzaCwgJ3NoYTI1NmFhYWEnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Random/RandomGeneratorFactoryTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xSYW5kb207CgoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aDsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVGcDsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVQYXJhbWV0ZXJzOwp1c2UgTWRhbnRlclxFY2NcUHJpbWl0aXZlc1xHZW5lcmF0b3JQb2ludDsKdXNlIE1kYW50ZXJcRWNjXFJhbmRvbVxEZWJ1Z0RlY29yYXRvcjsKdXNlIE1kYW50ZXJcRWNjXFJhbmRvbVxSYW5kb21HZW5lcmF0b3JGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIFJhbmRvbUdlbmVyYXRvckZhY3RvcnlUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdERlYnVnKCkKICAgIHsKICAgICAgICAkZGVidWdPbiA9IHRydWU7CgogICAgICAgICRybmcgPSBSYW5kb21HZW5lcmF0b3JGYWN0b3J5OjpnZXRSYW5kb21HZW5lcmF0b3IoJGRlYnVnT24pOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKERlYnVnRGVjb3JhdG9yOjpjbGFzcywgJHJuZyk7CiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoXEdNUDo6Y2xhc3MsICRybmctPmdlbmVyYXRlKGdtcF9pbml0KDExMSkpKTsKCiAgICAgICAgJGFkYXB0ZXIgPSBuZXcgR21wTWF0aCgpOwogICAgICAgICRwYXJhbWV0ZXJzID0gbmV3IEN1cnZlUGFyYW1ldGVycygzMiwgZ21wX2luaXQoMjMsIDEwKSwgZ21wX2luaXQoMSwgMTApLCBnbXBfaW5pdCgxLCAxMCkpOwogICAgICAgICRjdXJ2ZSA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkYWRhcHRlcik7CiAgICAgICAgJHBvaW50ID0gbmV3IEdlbmVyYXRvclBvaW50KCRhZGFwdGVyLCAkY3VydmUsIGdtcF9pbml0KDEzLCAxMCksIGdtcF9pbml0KDcsIDEwKSwgZ21wX2luaXQoNywgMTApKTsKCiAgICAgICAgJHByaXZhdGVLZXkgPSAkcG9pbnQtPmdldFByaXZhdGVLZXlGcm9tKGdtcF9pbml0KDEpKTsKICAgICAgICAkcm5nID0gUmFuZG9tR2VuZXJhdG9yRmFjdG9yeTo6Z2V0SG1hY1JhbmRvbUdlbmVyYXRvcigkcHJpdmF0ZUtleSwgZ21wX2luaXQoMSksICdzaGEyNTYnLCAkZGVidWdPbik7CiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoRGVidWdEZWNvcmF0b3I6OmNsYXNzLCAkcm5nKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihcR01QOjpjbGFzcywgJHJuZy0+Z2VuZXJhdGUoZ21wX2luaXQoMTExKSkpOwoKICAgICAgICBvYl9jbGVhbigpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/Point/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/Point/CompressedPointSerializerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFBvaW50OwoKCnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQb2ludFxDb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIENvbXByZXNzZWRQb2ludFNlcmlhbGl6ZXJUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIEludmFsaWQgZGF0YTogb25seSBjb21wcmVzc2VkIGtleXMgYXJlIHN1cHBvcnRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDaGVja3NQcmVmaXgoKQogICAgewogICAgICAgICRkYXRhID0gJzAxYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOwogICAgICAgICRzZXJpYWxpemVyID0gbmV3IENvbXByZXNzZWRQb2ludFNlcmlhbGl6ZXIoRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpKTsKICAgICAgICAkc2VyaWFsaXplci0+dW5zZXJpYWxpemUoRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5jdXJ2ZTE5MigpLCAkZGF0YSk7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/Point/UncompressedPointSerializerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFBvaW50OwoKCnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQb2ludFxVbmNvbXByZXNzZWRQb2ludFNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xUZXN0c1xBYnN0cmFjdFRlc3RDYXNlOwoKY2xhc3MgVW5jb21wcmVzc2VkUG9pbnRTZXJpYWxpemVyVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdENhc2UKewogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBJbnZhbGlkIGRhdGE6IG9ubHkgdW5jb21wcmVzc2VkIGtleXMgYXJlIHN1cHBvcnRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDaGVja3NQcmVmaXgoKQogICAgewogICAgICAgICRkYXRhID0gJzAxYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnOwogICAgICAgICRzZXJpYWxpemVyID0gbmV3IFVuY29tcHJlc3NlZFBvaW50U2VyaWFsaXplcihFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCkpOwogICAgICAgICRzZXJpYWxpemVyLT51bnNlcmlhbGl6ZShFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmN1cnZlMTkyKCksICRkYXRhKTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/PrivateKey/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/PrivateKey/DerPrivateKeySerializerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFByaXZhdGVLZXk7Cgp1c2UgRkdcQVNOMVxFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBNZGFudGVyXEVjY1xDcnlwdG9cS2V5XFByaXZhdGVLZXk7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQcml2YXRlS2V5XERlclByaXZhdGVLZXlTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcRGVyUHVibGljS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcVXRpbFxDdXJ2ZU9pZE1hcHBlcjsKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CgpjbGFzcyBEZXJQcml2YXRlS2V5U2VyaWFsaXplclRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UmVhZHNEZXIoKQogICAgewogICAgICAgICRkZXIgPSBiYXNlNjRfZGVjb2RlKGZpbGVfZ2V0X2NvbnRlbnRzKF9fRElSX18gLiAiLy4uLy4uLy4uL2RhdGEvb3BlbnNzbC1wcml2LmtleSIpKTsKICAgICAgICAkYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkZGVyUHJpdlNlcmlhbGl6ZXIgPSBuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoJGFkYXB0ZXIpOwogICAgICAgICRrZXkgPSAkZGVyUHJpdlNlcmlhbGl6ZXItPnBhcnNlKCRkZXIpOwogICAgICAgICR0aGlzLT5hc3NlcnRJbnN0YW5jZU9mKFByaXZhdGVLZXk6OmNsYXNzLCAka2V5KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnNpc3RlbnQoKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRHID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygkYWRhcHRlciktPmdlbmVyYXRvcjE5MigpOwogICAgICAgICRrZXkgPSAkRy0+Y3JlYXRlUHJpdmF0ZUtleSgpOwoKICAgICAgICAkZGVyUHJpdlNlcmlhbGl6ZXIgPSBuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoJGFkYXB0ZXIpOwogICAgICAgICRzZXJpYWxpemVkID0gJGRlclByaXZTZXJpYWxpemVyLT5zZXJpYWxpemUoJGtleSk7CiAgICAgICAgJHBhcnNlZCA9ICRkZXJQcml2U2VyaWFsaXplci0+cGFyc2UoJHNlcmlhbGl6ZWQpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRhZGFwdGVyLT5lcXVhbHMoJHBhcnNlZC0+Z2V0U2VjcmV0KCksICRrZXktPmdldFNlY3JldCgpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgSW52YWxpZCBkYXRhOiBvbmx5IHZlcnNpb24gMSAoUkZDNTkxNSkga2V5cyBhcmUgc3VwcG9ydGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEhhbmRsaW5nT2ZOb25WMUtleSgpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSBFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiAgICAgICAgJEcgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCRhZGFwdGVyKS0+Z2VuZXJhdG9yMTkyKCk7CiAgICAgICAgJGtleSA9ICRHLT5jcmVhdGVQcml2YXRlS2V5KCk7CgogICAgICAgICRkZXJQdWJTZXJpYWxpemVyID0gbmV3IERlclB1YmxpY0tleVNlcmlhbGl6ZXIoKTsKICAgICAgICAkZGVyUHJpdlNlcmlhbGl6ZXIgPSBuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoKTsKCiAgICAgICAgLy8gSSBkb24ndCBhY3R1YWxseSBoYXZlIGEgY2FzZSBvZiBhIG5vbi12MSBrZXkgLSBqdXN0IHN1YnN0aXR1dGUgc2VsZjo6VkVSU0lPTiB3aXRoIDIKICAgICAgICAkcHJpdmF0ZUtleUluZm8gPSBuZXcgU2VxdWVuY2UoCiAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDIpLAogICAgICAgICAgICBuZXcgT2N0ZXRTdHJpbmcoc3RyX3JlcGVhdCgnQScsIDMyKSksCiAgICAgICAgICAgIG5ldyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KDAsIEN1cnZlT2lkTWFwcGVyOjpnZXRDdXJ2ZU9pZCgka2V5LT5nZXRQb2ludCgpLT5nZXRDdXJ2ZSgpKSksCiAgICAgICAgICAgIG5ldyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0KDEsIG5ldyBCaXRTdHJpbmcoJGRlclB1YlNlcmlhbGl6ZXItPmdldFVuY29tcHJlc3NlZEtleSgka2V5LT5nZXRQdWJsaWNLZXkoKSkpKQogICAgICAgICk7CgogICAgICAgICRiaW5hcnkgPSAkcHJpdmF0ZUtleUluZm8tPmdldEJpbmFyeSgpOwogICAgICAgICRkZXJQcml2U2VyaWFsaXplci0+cGFyc2UoJGJpbmFyeSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgSW52YWxpZCBkYXRhLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFBhcnNlSW52YWxpZEFTTigpCiAgICB7CiAgICAgICAgJGFzbiA9IG5ldyBJbnRlZ2VyKDEpOwogICAgICAgICRiaW5hcnkgPSAkYXNuLT5nZXRCaW5hcnkoKTsKCiAgICAgICAgJHNlcmlhbGl6ZXIgPSBuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoKTsKICAgICAgICAkc2VyaWFsaXplci0+cGFyc2UoJGJpbmFyeSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/PrivateKey/PemPrivateKeySerializerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFByaXZhdGVLZXk7Cgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQcml2YXRlS2V5Owp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHJpdmF0ZUtleVxEZXJQcml2YXRlS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHJpdmF0ZUtleVxQZW1Qcml2YXRlS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CgpjbGFzcyBQZW1Qcml2YXRlS2V5U2VyaWFsaXplclRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UmVhZHNEZXIoKQogICAgewogICAgICAgICRkZXIgPSBmaWxlX2dldF9jb250ZW50cyhfX0RJUl9fIC4gIi8uLi8uLi8uLi9kYXRhL29wZW5zc2wtcHJpdi5wZW0iKTsKICAgICAgICAkYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkZGVyU2VyaWFsaXplciA9IG5ldyBEZXJQcml2YXRlS2V5U2VyaWFsaXplcigkYWRhcHRlcik7CiAgICAgICAgJHBlbVNlcmlhbGl6ZXIgPSBuZXcgUGVtUHJpdmF0ZUtleVNlcmlhbGl6ZXIoJGRlclNlcmlhbGl6ZXIpOwogICAgICAgICRrZXkgPSAkcGVtU2VyaWFsaXplci0+cGFyc2UoJGRlcik7CiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoUHJpdmF0ZUtleTo6Y2xhc3MsICRrZXkpOwogICAgfQoKCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdENvbnNpc3RlbnQoKQogICAgewogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRHID0gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygkYWRhcHRlciktPmdlbmVyYXRvcjE5MigpOwogICAgICAgICRrZXkgPSAkRy0+Y3JlYXRlUHJpdmF0ZUtleSgpOwoKICAgICAgICAkZGVyUHJpdlNlcmlhbGl6ZXIgPSBuZXcgRGVyUHJpdmF0ZUtleVNlcmlhbGl6ZXIoJGFkYXB0ZXIpOwogICAgICAgICRwZW1TZXJpYWxpemVyID0gbmV3IFBlbVByaXZhdGVLZXlTZXJpYWxpemVyKCRkZXJQcml2U2VyaWFsaXplcik7CgogICAgICAgICRzZXJpYWxpemVkID0gJHBlbVNlcmlhbGl6ZXIgLT5zZXJpYWxpemUoJGtleSk7CiAgICAgICAgJHBhcnNlZCA9ICRwZW1TZXJpYWxpemVyIC0+cGFyc2UoJHNlcmlhbGl6ZWQpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRhZGFwdGVyLT5lcXVhbHMoJHBhcnNlZC0+Z2V0U2VjcmV0KCksICRrZXktPmdldFNlY3JldCgpKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/PublicKey/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/PublicKey/DerPublicKeySerializerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFB1YmxpY0tleTsKCnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCaXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxJbnRlZ2VyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXEN1cnZlRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlRnA7CnVzZSBNZGFudGVyXEVjY1xQcmltaXRpdmVzXEN1cnZlUGFyYW1ldGVyczsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHVibGljS2V5XERlclB1YmxpY0tleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFV0aWxcQ3VydmVPaWRNYXBwZXI7CnVzZSBNZGFudGVyXEVjY1xUZXN0c1xBYnN0cmFjdFRlc3RDYXNlOwoKY2xhc3MgRGVyUHVibGljS2V5U2VyaWFsaXplclRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxSdW50aW1lRXhjZXB0aW9uCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb25NZXNzYWdlIEludmFsaWQgZGF0YS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RGaXJzdEZhaWx1cmUoKQogICAgewogICAgICAgICRhc24gPSBuZXcgSW50ZWdlcigxKTsKICAgICAgICAkYmluYXJ5ID0gJGFzbi0+Z2V0QmluYXJ5KCk7CgogICAgICAgICRzZXJpYWxpemVyID0gbmV3IERlclB1YmxpY0tleVNlcmlhbGl6ZXIoKTsKICAgICAgICAkc2VyaWFsaXplci0+cGFyc2UoJGJpbmFyeSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbk1lc3NhZ2UgSW52YWxpZCBkYXRhOiBub24gWDUwOSBkYXRhLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEludmFsaWRFY2RzYU9pZCgpCiAgICB7CgogICAgICAgICRzZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgKICAgICAgICAgICAgbmV3IFNlcXVlbmNlKAogICAgICAgICAgICAgICAgbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMS4xLjEuMScpLAogICAgICAgICAgICAgICAgQ3VydmVPaWRNYXBwZXI6OmdldEN1cnZlT2lkKEN1cnZlRmFjdG9yeTo6Z2V0Q3VydmVCeU5hbWUoJ25pc3RwMTkyJykpCiAgICAgICAgICAgICksCiAgICAgICAgICAgIG5ldyBCaXRTdHJpbmcoJzA0MTg4REE4MEVCMDMwOTBGNjdDQkYyMEVCNDNBMTg4MDBGNEZGMEFGRDgyRkYxMDEyMDcxOTJCOTVGRkM4REE3ODYzMTAxMUVENkIyNENERDU3M0Y5NzdBMTFFNzk0ODExJykKICAgICAgICApOwogICAgICAgICRiaW5hcnkgPSAkc2VxdWVuY2UtPmdldEJpbmFyeSgpOwoKICAgICAgICAkc2VyaWFsaXplciA9IG5ldyBEZXJQdWJsaWNLZXlTZXJpYWxpemVyKCk7CiAgICAgICAgJHNlcmlhbGl6ZXItPnBhcnNlKCRiaW5hcnkpOwoKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBOb3QgaW1wbGVtZW50ZWQgZm9yIHVubmFtZWQgY3VydmVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW52YWxpZEN1cnZlKCkKICAgIHsKICAgICAgICAkYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkcCA9IGdtcF9pbml0KCc2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMjA3NjY2NDE2MDgzOTA4NzAwMzkwMzI0OTYxMjc5JywgMTApOwogICAgICAgICRiID0gZ21wX2luaXQoJzY0MjEwNTE5ZTU5YzgwZTcwZmE3ZTlhYjcyMjQzMDQ5ZmViOGRlZWNjMTQ2YjliMScsIDE2KTsKCiAgICAgICAgJHBhcmFtZXRlcnMgPSBuZXcgQ3VydmVQYXJhbWV0ZXJzKDE5MiwgJHAsIGdtcF9pbml0KCctMycsIDEwKSwgJGIpOwogICAgICAgICRjdXJ2ZSA9IG5ldyBDdXJ2ZUZwKCRwYXJhbWV0ZXJzLCAkYWRhcHRlcik7CgogICAgICAgICRvcmRlciA9IGdtcF9pbml0KCc2Mjc3MTAxNzM1Mzg2NjgwNzYzODM1Nzg5NDIzMTc2MDU5MDEzNzY3MTk0NzczMTgyODQyMjg0MDgxJywgMTApOwoKICAgICAgICAkeCA9IGdtcF9pbml0KCcxODhkYTgwZWIwMzA5MGY2N2NiZjIwZWI0M2ExODgwMGY0ZmYwYWZkODJmZjEwMTInLCAxNik7CiAgICAgICAgJHkgPSBnbXBfaW5pdCgnMDcxOTJiOTVmZmM4ZGE3ODYzMTAxMWVkNmIyNGNkZDU3M2Y5NzdhMTFlNzk0ODExJywgMTYpOwoKICAgICAgICAkZ2VuZXJhdG9yID0gJGN1cnZlLT5nZXRHZW5lcmF0b3IoJHgsICR5LCAkb3JkZXIpOwogICAgICAgICRwcml2YXRlID0gJGdlbmVyYXRvci0+Z2V0UHJpdmF0ZUtleUZyb20oZ21wX2luaXQoMTIpKTsKICAgICAgICAkcHVibGljID0gJHByaXZhdGUtPmdldFB1YmxpY0tleSgpOwoKICAgICAgICAkc2VyaWFsaXplciA9IG5ldyBEZXJQdWJsaWNLZXlTZXJpYWxpemVyKCk7CiAgICAgICAgJHNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgkcHVibGljKTsKCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/PublicKey/PemPublicKeySerializerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFB1YmxpY0tleTsKCgp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEtleVxQdWJsaWNLZXk7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxQdWJsaWNLZXlcRGVyUHVibGljS2V5U2VyaWFsaXplcjsKdXNlIE1kYW50ZXJcRWNjXFNlcmlhbGl6ZXJcUHVibGljS2V5XFBlbVB1YmxpY0tleVNlcmlhbGl6ZXI7CnVzZSBNZGFudGVyXEVjY1xUZXN0c1xBYnN0cmFjdFRlc3RDYXNlOwoKY2xhc3MgUGVtUHVibGljS2V5U2VyaWFsaXplclRlc3QgZXh0ZW5kcyBBYnN0cmFjdFRlc3RDYXNlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0UmVhZHNQZW0oKQogICAgewogICAgICAgICRkZXIgPSBmaWxlX2dldF9jb250ZW50cyhfX0RJUl9fIC4gIi8uLi8uLi8uLi9kYXRhL29wZW5zc2wtcHViLnBlbSIpOwogICAgICAgICRhZGFwdGVyID0gRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpOwogICAgICAgICRkZXJTZXJpYWxpemVyID0gbmV3IERlclB1YmxpY0tleVNlcmlhbGl6ZXIoJGFkYXB0ZXIpOwogICAgICAgICRwZW1TZXJpYWxpemVyID0gbmV3IFBlbVB1YmxpY0tleVNlcmlhbGl6ZXIoJGRlclNlcmlhbGl6ZXIpOwogICAgICAgICRrZXkgPSAkcGVtU2VyaWFsaXplci0+cGFyc2UoJGRlcik7CiAgICAgICAgJHRoaXMtPmFzc2VydEluc3RhbmNlT2YoUHVibGljS2V5OjpjbGFzcywgJGtleSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RDb25zaXN0ZW50KCkKICAgIHsKICAgICAgICAkYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkRyA9IEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoJGFkYXB0ZXIpLT5nZW5lcmF0b3IxOTIoKTsKICAgICAgICAkcHVia2V5ID0gJEctPmNyZWF0ZVByaXZhdGVLZXkoKS0+Z2V0UHVibGljS2V5KCk7CgogICAgICAgICRzZXJpYWxpemVyID0gbmV3IFBlbVB1YmxpY0tleVNlcmlhbGl6ZXIobmV3IERlclB1YmxpY0tleVNlcmlhbGl6ZXIoJGFkYXB0ZXIpKTsKICAgICAgICAkc2VyaWFsaXplZCA9ICRzZXJpYWxpemVyLT5zZXJpYWxpemUoJHB1YmtleSk7CiAgICAgICAgJHBhcnNlZCA9ICRzZXJpYWxpemVyLT5wYXJzZSgkc2VyaWFsaXplZCk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJHB1YmtleS0+Z2V0UG9pbnQoKS0+ZXF1YWxzKCRwYXJzZWQtPmdldFBvaW50KCkpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRwdWJrZXktPmdldEN1cnZlKCksICRwYXJzZWQtPmdldEN1cnZlKCkpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJHB1YmtleS0+Z2V0R2VuZXJhdG9yKCksICRwYXJzZWQtPmdldEdlbmVyYXRvcigpKTsKICAgIH0KfQ==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/Signature/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/Signature/DerSignatureSerializerTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFNpZ25hdHVyZTsKCnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCaXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIE1kYW50ZXJcRWNjXENyeXB0b1xTaWduYXR1cmVcU2lnbmF0dXJlOwp1c2UgTWRhbnRlclxFY2NcTWF0aFxHbXBNYXRoOwp1c2UgTWRhbnRlclxFY2NcUmFuZG9tXFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk7CnVzZSBNZGFudGVyXEVjY1xTZXJpYWxpemVyXFNpZ25hdHVyZVxEZXJTaWduYXR1cmVTZXJpYWxpemVyOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIERlclNpZ25hdHVyZVNlcmlhbGl6ZXJUZXN0IGV4dGVuZHMgQWJzdHJhY3RUZXN0Q2FzZQp7CiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdFBhcnNlc1NpZ25hdHVyZSgpCiAgICB7CiAgICAgICAgJHIgPSBnbXBfaW5pdCgnMTUwMTI3MzI3MDg3MzQwNDUzNzQyMDExNjQ5NzMxOTU3NzgxMTU0MjQwMzg1NDQ0Nzg0MzYyMTUxNDAzMDU5MjM1MTg4MDU3MjUyMjUnLCAxMCk7CiAgICAgICAgJHMgPSBnbXBfaW5pdCgnMzI5MjUzMzM1MjM1NDQ3ODEwOTMzMjUwMjUwNTI5MTUyOTY4NzA2MDk5MDQxMDA1ODgyODcxNTY5MTIyMTAwODYzNTM4NTE5NjE1MTEnLCAxMCk7CiAgICAgICAgJGV4cGVjdGVkID0gc3RydG9sb3dlcignMzA0NDAyMjAyMTMwRTdENTA0QzRBNDk4QzNCM0M3QzBGRUQ2REUyQTg0ODExQTNCRDg5QkFEQjg2Mjc2NThGMkIxRUE1MDI5MDIyMDQ4Q0IxNDEwMzA4RTNFRkM1MTJCNENFMDk3NEY2RDA4NjlFOTQ1NDA5NUM4ODU1QUJFQTZCNjMyNUE0MEQwQTcnKTsKICAgICAgICAkc2lnbmF0dXJlID0gbmV3IFNpZ25hdHVyZSgkciwgJHMpOwogICAgICAgICRzZXJpYWxpemVyID0gbmV3IERlclNpZ25hdHVyZVNlcmlhbGl6ZXIoKTsKICAgICAgICAkc2VyaWFsaXplZCA9IGJpbjJoZXgoJHNlcmlhbGl6ZXItPnNlcmlhbGl6ZSgkc2lnbmF0dXJlKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydEVxdWFscygkZXhwZWN0ZWQsICRzZXJpYWxpemVkKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBJbnZhbGlkIGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RJbnZhbGlkQVNOMSgpCiAgICB7CiAgICAgICAgLy8gQml0c3RyaW5nIGlzIG5vdCBhIHNlcXVlbmNlLi4KICAgICAgICAkYml0U3RyaW5nID0gbmV3IEJpdFN0cmluZygnYWInKTsKICAgICAgICAkYmluYXJ5ID0gJGJpdFN0cmluZy0+Z2V0QmluYXJ5KCk7CiAgICAgICAgJHNlcmlhbGl6ZXIgPSBuZXcgRGVyU2lnbmF0dXJlU2VyaWFsaXplcigpOwogICAgICAgICRzZXJpYWxpemVyLT5wYXJzZSgkYmluYXJ5KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBGYWlsZWQgdG8gcGFyc2Ugc2lnbmF0dXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW52YWxpZEFTTjIoKQogICAgewogICAgICAgIC8vIFNlcXVlbmNlICE9IDIgaXRlbXMKICAgICAgICAkc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkYmluYXJ5ID0gJHNlcXVlbmNlLT5nZXRCaW5hcnkoKTsKICAgICAgICAkc2VyaWFsaXplciA9IG5ldyBEZXJTaWduYXR1cmVTZXJpYWxpemVyKCk7CiAgICAgICAgJHNlcmlhbGl6ZXItPnBhcnNlKCRiaW5hcnkpOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uTWVzc2FnZSBGYWlsZWQgdG8gcGFyc2Ugc2lnbmF0dXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SW52YWxpZEFTTjMoKQogICAgewogICAgICAgIC8vIGJpdHN0cmluZyBpc24ndCBhbiBpbnRlZ2VyCiAgICAgICAgJHNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKAogICAgICAgICAgICBuZXcgQml0U3RyaW5nKCc0MScpLAogICAgICAgICAgICBuZXcgQml0U3RyaW5nKCdhYicpCiAgICAgICAgKTsKICAgICAgICAkYmluYXJ5ID0gJHNlcXVlbmNlLT5nZXRCaW5hcnkoKTsKICAgICAgICAkc2VyaWFsaXplciA9IG5ldyBEZXJTaWduYXR1cmVTZXJpYWxpemVyKCk7CiAgICAgICAgJHNlcmlhbGl6ZXItPnBhcnNlKCRiaW5hcnkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0SXNDb25zaXN0ZW50KCkKICAgIHsKICAgICAgICAkbWF0aCA9IG5ldyBHbXBNYXRoKCk7CiAgICAgICAgJHJiZyA9IFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk6OmdldFJhbmRvbUdlbmVyYXRvcigpOwogICAgICAgICRzZXJpYWxpemVyID0gbmV3IERlclNpZ25hdHVyZVNlcmlhbGl6ZXIoKTsKCiAgICAgICAgJGkgPSAyNTY7CiAgICAgICAgJG1heCA9ICRtYXRoLT5zdWIoJG1hdGgtPnBvdyhnbXBfaW5pdCgyLCAxMCksICRpKSwgZ21wX2luaXQoMSwgMTApKTsKICAgICAgICAkciA9ICRyYmctPmdlbmVyYXRlKCRtYXgpOwogICAgICAgICRzID0gJHJiZy0+Z2VuZXJhdGUoJG1heCk7CiAgICAgICAgJHNpZ25hdHVyZSA9IG5ldyBTaWduYXR1cmUoJHIsICRzKTsKCiAgICAgICAgJHNlcmlhbGl6ZWQgPSAkc2VyaWFsaXplci0+c2VyaWFsaXplKCRzaWduYXR1cmUpOwogICAgICAgICRwYXJzZWQgPSAkc2VyaWFsaXplci0+cGFyc2UoJHNlcmlhbGl6ZWQpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkbWF0aC0+ZXF1YWxzKCRzaWduYXR1cmUtPmdldFIoKSwgJHBhcnNlZC0+Z2V0UigpKSk7CiAgICAgICAgJHRoaXMtPmFzc2VydFRydWUoJG1hdGgtPmVxdWFscygkc2lnbmF0dXJlLT5nZXRTKCksICRwYXJzZWQtPmdldFMoKSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Serializer/Util/CurveOidMapperTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xTZXJpYWxpemVyXFV0aWw7CgoKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CnVzZSBNZGFudGVyXEVjY1xDdXJ2ZXNcTmFtZWRDdXJ2ZUZwOwp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXFByaW1pdGl2ZXNcQ3VydmVQYXJhbWV0ZXJzOwp1c2UgTWRhbnRlclxFY2NcU2VyaWFsaXplclxVdGlsXEN1cnZlT2lkTWFwcGVyOwp1c2UgTWRhbnRlclxFY2NcVGVzdHNcQWJzdHJhY3RUZXN0Q2FzZTsKCmNsYXNzIEN1cnZlT2lkTWFwcGVyVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdENhc2UKewogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXROYW1lcygpCiAgICB7CiAgICAgICAgJHRoaXMtPmFzc2VydEludGVybmFsVHlwZSgnYXJyYXknLCBDdXJ2ZU9pZE1hcHBlcjo6Z2V0TmFtZXMoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RWYWxpZFZhbHVlcygpCiAgICB7CiAgICAgICAgJEcgPSBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjUyMSgpOwogICAgICAgICRuaXN0cDUyMSA9ICRHLT5nZXRDdXJ2ZSgpOwogICAgICAgICRuaXN0cDUyMW9pZCA9IEN1cnZlT2lkTWFwcGVyOjpnZXRDdXJ2ZU9pZCgkbmlzdHA1MjEpOwogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoNjYsIEN1cnZlT2lkTWFwcGVyOjpnZXRCeXRlU2l6ZSgkbmlzdHA1MjEpKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0SW5zdGFuY2VPZihPYmplY3RJZGVudGlmaWVyOjpjbGFzcywgJG5pc3RwNTIxb2lkKTsKCiAgICAgICAgJGN1cnZlID0gQ3VydmVPaWRNYXBwZXI6OmdldEN1cnZlRnJvbU9pZCgkbmlzdHA1MjFvaWQpOwogICAgICAgICR0aGlzLT5hc3NlcnRUcnVlKCRjdXJ2ZS0+ZXF1YWxzKCRuaXN0cDUyMSkpOwoKICAgICAgICAkZ2VuID0gQ3VydmVPaWRNYXBwZXI6OmdldEdlbmVyYXRvckZyb21PaWQoJG5pc3RwNTIxb2lkKTsKICAgICAgICAkdGhpcy0+YXNzZXJ0VHJ1ZSgkRy0+ZXF1YWxzKCRnZW4pKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBleHBlY3RlZEV4Y2VwdGlvbiBcUnVudGltZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEdldEJ5dGVzVW5rbm93bkN1cnZlKCkKICAgIHsKICAgICAgICAkYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKICAgICAgICAkY3VydmUgPSBuZXcgTmFtZWRDdXJ2ZUZwKCdiYWRjdXJ2ZScsIG5ldyBDdXJ2ZVBhcmFtZXRlcnMoMTAsIGdtcF9pbml0KDEpLCBnbXBfaW5pdCgxKSwgZ21wX2luaXQoMSkpLCAkYWRhcHRlcik7CiAgICAgICAgQ3VydmVPaWRNYXBwZXI6OmdldEJ5dGVTaXplKCRjdXJ2ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZXRDdXJ2ZU9pZCgpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSBFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CiAgICAgICAgJGN1cnZlID0gbmV3IE5hbWVkQ3VydmVGcCgnYmFkY3VydmUnLCBuZXcgQ3VydmVQYXJhbWV0ZXJzKDEwLCBnbXBfaW5pdCgxKSwgZ21wX2luaXQoMSksIGdtcF9pbml0KDEpKSwgJGFkYXB0ZXIpOwogICAgICAgIEN1cnZlT2lkTWFwcGVyOjpnZXRDdXJ2ZU9pZCgkY3VydmUpOwogICAgfQoKICAgIC8qKgogICAgICogQGV4cGVjdGVkRXhjZXB0aW9uIFxSdW50aW1lRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0Q3VydmVVbmtub3duT2lkKCkKICAgIHsKICAgICAgICAkb2lkID0gbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMycpOwogICAgICAgIEN1cnZlT2lkTWFwcGVyOjpnZXRDdXJ2ZUZyb21PaWQoJG9pZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZXhwZWN0ZWRFeGNlcHRpb24gXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3RHZW5lcmF0b3JVbmtub3duT2lkKCkKICAgIHsKICAgICAgICAkb2lkID0gbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMycpOwogICAgICAgIEN1cnZlT2lkTWFwcGVyOjpnZXRHZW5lcmF0b3JGcm9tT2lkKCRvaWQpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/unit/Util/NumberSizeTest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBNZGFudGVyXEVjY1xUZXN0c1xVdGlsOwoKdXNlIE1kYW50ZXJcRWNjXE1hdGhcR21wTWF0aEludGVyZmFjZTsKdXNlIE1kYW50ZXJcRWNjXFRlc3RzXEFic3RyYWN0VGVzdENhc2U7CnVzZSBNZGFudGVyXEVjY1xVdGlsXE51bWJlclNpemU7CgpjbGFzcyBOdW1iZXJTaXplVGVzdCBleHRlbmRzIEFic3RyYWN0VGVzdENhc2UKewoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCbk51bUJpdHNOdW1iZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9nZXRBZGFwdGVycyhhcnJheSgKICAgICAgICAgICAgYXJyYXkoJzAnLCAwKSwKICAgICAgICAgICAgYXJyYXkoJzB4MTAwJywgOSksCiAgICAgICAgICAgIGFycmF5KCcweDAwMDAwNDMyJywgMTEpLAogICAgICAgICkpOwogICAgfQoKICAgIC8qKgogICAgICogQGRhdGFQcm92aWRlciBnZXRCbk51bUJpdHNOdW1iZXJzCiAgICAgKiBAcGFyYW0gR21wTWF0aEludGVyZmFjZSAkYWRhcHRlcgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyIGhleCBudW1iZXIKICAgICAqIEBwYXJhbSBpbnQgJGV4cGVjdGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0TnVtQml0cyhHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyLCAkbnVtYmVyLCAkZXhwZWN0ZWQpCiAgICB7CiAgICAgICAgJHNpemUgPSBOdW1iZXJTaXplOjpibk51bUJpdHMoJGFkYXB0ZXIsIGdtcF9pbml0KCRudW1iZXIsIDE2KSk7CgogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJGV4cGVjdGVkLCAkc2l6ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJuTnVtQnl0ZXNOdW1iZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPl9nZXRBZGFwdGVycyhhcnJheSgKICAgICAgICAgICAgYXJyYXkoJzAnLCAwKSwKICAgICAgICAgICAgYXJyYXkoJzB4MDAwMDA0MzInLCAyKSwKICAgICAgICAgICAgYXJyYXkoJzB4MmUyMjRiZDA2NWZlYWQxMjE4ZjM2MDhkNGU3NDgzN2I2MDk2ZDExYzRmZmY0MTM5Y2Q0MWQ5ZGYwM2NmY2IyNzBkZjdhOWFlNmY2Mjg4MTljM2FlNzQ0ZGI0MTg5YjEzMzBjYjJlZTRlZWE3ZDU1MTViMjgyZGVlNTllMjFkY2YxZScsIDY1KSwKICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBkYXRhUHJvdmlkZXIgZ2V0Qm5OdW1CeXRlc051bWJlcnMKICAgICAqIEBwYXJhbSBHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyCiAgICAgKiBAcGFyYW0gc3RyaW5nICRudW1iZXIgaGV4IG51bWJlcgogICAgICogQHBhcmFtIGludCAkZXhwZWN0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRlc3ROdW1CeXRlcyhHbXBNYXRoSW50ZXJmYWNlICRhZGFwdGVyLCAkbnVtYmVyLCAkZXhwZWN0ZWQpCiAgICB7CiAgICAgICAgJHNpemUgPSBOdW1iZXJTaXplOjpibk51bUJ5dGVzKCRhZGFwdGVyLCBnbXBfaW5pdCgkbnVtYmVyLCAxNikpOwoKICAgICAgICAkdGhpcy0+YXNzZXJ0RXF1YWxzKCRleHBlY3RlZCwgJHNpemUpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/mdanter/ecc/tests/validate_examples.sh</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvYmluL2Jhc2gKZm9yIGkgaW4gLi4vZXhhbXBsZXMvKi5waHA7IGRvCiAgICAvdXNyL2Jpbi9waHAgJGkKICAgIGlmIFsgJD8gIT0gMCBdOyB0aGVuCiAgICAgICAgZWNobyAiRXJyb3IgcnVubmluZyBleGFtcGxlIGNvZGUiOwogICAgICAgIGV4aXQgLTEKICAgIGZpOwpkb25lCg==]]></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[ewogICJuYW1lIjogICAgICAgICAicGFyYWdvbmllL3JhbmRvbV9jb21wYXQiLAogICJkZXNjcmlwdGlvbiI6ICAiUEhQIDUueCBwb2x5ZmlsbCBmb3IgcmFuZG9tX2J5dGVzKCkgYW5kIHJhbmRvbV9pbnQoKSBmcm9tIFBIUCA3IiwKICAia2V5d29yZHMiOiBbCiAgICAiY3Nwcm5nIiwKICAgICJyYW5kb20iLAogICAgInBzZXVkb3JhbmRvbSIKICBdLAogICJsaWNlbnNlIjogICAgICAiTUlUIiwKICAidHlwZSI6ICAgICAgICAgImxpYnJhcnkiLAogICJhdXRob3JzIjogWwogICAgewogICAgICAibmFtZSI6ICAgICAiUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzIiwKICAgICAgImVtYWlsIjogICAgInNlY3VyaXR5QHBhcmFnb25pZS5jb20iLAogICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9wYXJhZ29uaWUuY29tIgogICAgfQogIF0sCiAgInN1cHBvcnQiOiB7CiAgICAiaXNzdWVzIjogICAgICJodHRwczovL2dpdGh1Yi5jb20vcGFyYWdvbmllL3JhbmRvbV9jb21wYXQvaXNzdWVzIiwKICAgICJlbWFpbCI6ICAgICAgImluZm9AcGFyYWdvbmllLmNvbSIsCiAgICAic291cmNlIjogICAgICJodHRwczovL2dpdGh1Yi5jb20vcGFyYWdvbmllL3JhbmRvbV9jb21wYXQiCiAgfSwKICAicmVxdWlyZSI6IHsKICAgICJwaHAiOiAiPj01LjIuMCIKICB9LAogICJyZXF1aXJlLWRldiI6IHsKICAgICJwaHB1bml0L3BocHVuaXQiOiAiNC4qfDUuKiIKICB9LAogICJzdWdnZXN0IjogewogICAgImV4dC1saWJzb2RpdW0iOiAiUHJvdmlkZXMgYSBtb2Rlcm4gY3J5cHRvIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIHJhbmRvbSBieXRlcy4iCiAgfSwKICAiYXV0b2xvYWQiOiB7CiAgICAiZmlsZXMiOiBbCiAgICAgICJsaWIvcmFuZG9tLnBocCIKICAgIF0KICB9Cn0K]]></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[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeQogKiBmb3IgdXNpbmcgdGhlIG5ldyBQSFAgNyByYW5kb21fKiBBUEkgaW4gUEhQIDUgcHJvamVjdHMKICoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTcgUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCmlmICghaXNfY2FsbGFibGUoJ1JhbmRvbUNvbXBhdF9zdHJsZW4nKSkgewogICAgaWYgKAogICAgICAgIGRlZmluZWQoJ01CX09WRVJMT0FEX1NUUklORycpICYmCiAgICAgICAgaW5pX2dldCgnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcpICYgTUJfT1ZFUkxPQURfU1RSSU5HCiAgICApIHsKICAgICAgICAvKioKICAgICAgICAgKiBzdHJsZW4oKSBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzbid0IGJyaXR0bGUgdG8gbWJzdHJpbmcuZnVuY19vdmVybG9hZAogICAgICAgICAqCiAgICAgICAgICogVGhpcyB2ZXJzaW9uIHVzZXMgbWJfc3RybGVuKCkgaW4gJzhiaXQnIG1vZGUgdG8gdHJlYXQgc3RyaW5ncyBhcyByYXcKICAgICAgICAgKiBiaW5hcnkgcmF0aGVyIHRoYW4gVVRGLTgsIElTTy04ODU5LTEsIGV0YwogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5X3N0cmluZwogICAgICAgICAqCiAgICAgICAgICogQHRocm93cyBUeXBlRXJyb3IKICAgICAgICAgKgogICAgICAgICAqIEByZXR1cm4gaW50CiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gUmFuZG9tQ29tcGF0X3N0cmxlbigkYmluYXJ5X3N0cmluZykKICAgICAgICB7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRiaW5hcnlfc3RyaW5nKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAnUmFuZG9tQ29tcGF0X3N0cmxlbigpIGV4cGVjdHMgYSBzdHJpbmcnCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gKGludCkgbWJfc3RybGVuKCRiaW5hcnlfc3RyaW5nLCAnOGJpdCcpOwogICAgICAgIH0KCiAgICB9IGVsc2UgewogICAgICAgIC8qKgogICAgICAgICAqIHN0cmxlbigpIGltcGxlbWVudGF0aW9uIHRoYXQgaXNuJ3QgYnJpdHRsZSB0byBtYnN0cmluZy5mdW5jX292ZXJsb2FkCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIHZlcnNpb24ganVzdCB1c2VkIHRoZSBkZWZhdWx0IHN0cmxlbigpCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gc3RyaW5nICRiaW5hcnlfc3RyaW5nCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzIFR5cGVFcnJvcgogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiBpbnQKICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBSYW5kb21Db21wYXRfc3RybGVuKCRiaW5hcnlfc3RyaW5nKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJGJpbmFyeV9zdHJpbmcpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdSYW5kb21Db21wYXRfc3RybGVuKCkgZXhwZWN0cyBhIHN0cmluZycKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIChpbnQpIHN0cmxlbigkYmluYXJ5X3N0cmluZyk7CiAgICAgICAgfQogICAgfQp9CgppZiAoIWlzX2NhbGxhYmxlKCdSYW5kb21Db21wYXRfc3Vic3RyJykpIHsKCiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCgnTUJfT1ZFUkxPQURfU1RSSU5HJykKICAgICAgICAmJgogICAgICAgIGluaV9nZXQoJ21ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQnKSAmIE1CX09WRVJMT0FEX1NUUklORwogICAgKSB7CiAgICAgICAgLyoqCiAgICAgICAgICogc3Vic3RyKCkgaW1wbGVtZW50YXRpb24gdGhhdCBpc24ndCBicml0dGxlIHRvIG1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQKICAgICAgICAgKgogICAgICAgICAqIFRoaXMgdmVyc2lvbiB1c2VzIG1iX3N1YnN0cigpIGluICc4Yml0JyBtb2RlIHRvIHRyZWF0IHN0cmluZ3MgYXMgcmF3CiAgICAgICAgICogYmluYXJ5IHJhdGhlciB0aGFuIFVURi04LCBJU08tODg1OS0xLCBldGMKICAgICAgICAgKgogICAgICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeV9zdHJpbmcKICAgICAgICAgKiBAcGFyYW0gaW50ICRzdGFydAogICAgICAgICAqIEBwYXJhbSBpbnQgJGxlbmd0aCAob3B0aW9uYWwpCiAgICAgICAgICoKICAgICAgICAgKiBAdGhyb3dzIFR5cGVFcnJvcgogICAgICAgICAqCiAgICAgICAgICogQHJldHVybiBzdHJpbmcKICAgICAgICAgKi8KICAgICAgICBmdW5jdGlvbiBSYW5kb21Db21wYXRfc3Vic3RyKCRiaW5hcnlfc3RyaW5nLCAkc3RhcnQsICRsZW5ndGggPSBudWxsKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJGJpbmFyeV9zdHJpbmcpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdSYW5kb21Db21wYXRfc3Vic3RyKCk6IEZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSBhIHN0cmluZycKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICghaXNfaW50KCRzdGFydCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgJ1JhbmRvbUNvbXBhdF9zdWJzdHIoKTogU2Vjb25kIGFyZ3VtZW50IHNob3VsZCBiZSBhbiBpbnRlZ2VyJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRsZW5ndGggPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICogbWJfc3Vic3RyKCRzdHIsIDAsIE5VTEwsICc4Yml0JykgcmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24KICAgICAgICAgICAgICAgICAqIFBIUCA1LjMsIHNvIHdlIGhhdmUgdG8gZmluZCB0aGUgbGVuZ3RoIG91cnNlbHZlcy4KICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgJGxlbmd0aCA9IFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJpbmFyeV9zdHJpbmcpIC0gJHN0YXJ0OwogICAgICAgICAgICB9IGVsc2VpZiAoIWlzX2ludCgkbGVuZ3RoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAnUmFuZG9tQ29tcGF0X3N1YnN0cigpOiBUaGlyZCBhcmd1bWVudCBzaG91bGQgYmUgYW4gaW50ZWdlciwgb3Igb21pdHRlZCcKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIENvbnNpc3RlbmN5IHdpdGggUEhQJ3MgYmVoYXZpb3IKICAgICAgICAgICAgaWYgKCRzdGFydCA9PT0gUmFuZG9tQ29tcGF0X3N0cmxlbigkYmluYXJ5X3N0cmluZykgJiYgJGxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkc3RhcnQgPiBSYW5kb21Db21wYXRfc3RybGVuKCRiaW5hcnlfc3RyaW5nKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gKHN0cmluZykgbWJfc3Vic3RyKCRiaW5hcnlfc3RyaW5nLCAkc3RhcnQsICRsZW5ndGgsICc4Yml0Jyk7CiAgICAgICAgfQoKICAgIH0gZWxzZSB7CgogICAgICAgIC8qKgogICAgICAgICAqIHN1YnN0cigpIGltcGxlbWVudGF0aW9uIHRoYXQgaXNuJ3QgYnJpdHRsZSB0byBtYnN0cmluZy5mdW5jX292ZXJsb2FkCiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIHZlcnNpb24ganVzdCB1c2VzIHRoZSBkZWZhdWx0IHN1YnN0cigpCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gc3RyaW5nICRiaW5hcnlfc3RyaW5nCiAgICAgICAgICogQHBhcmFtIGludCAkc3RhcnQKICAgICAgICAgKiBAcGFyYW0gaW50ICRsZW5ndGggKG9wdGlvbmFsKQogICAgICAgICAqCiAgICAgICAgICogQHRocm93cyBUeXBlRXJyb3IKICAgICAgICAgKgogICAgICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgICAgICovCiAgICAgICAgZnVuY3Rpb24gUmFuZG9tQ29tcGF0X3N1YnN0cigkYmluYXJ5X3N0cmluZywgJHN0YXJ0LCAkbGVuZ3RoID0gbnVsbCkKICAgICAgICB7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRiaW5hcnlfc3RyaW5nKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICAgICAnUmFuZG9tQ29tcGF0X3N1YnN0cigpOiBGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYSBzdHJpbmcnCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzX2ludCgkc3RhcnQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICAgICdSYW5kb21Db21wYXRfc3Vic3RyKCk6IFNlY29uZCBhcmd1bWVudCBzaG91bGQgYmUgYW4gaW50ZWdlcicKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbGVuZ3RoICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzX2ludCgkbGVuZ3RoKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgICdSYW5kb21Db21wYXRfc3Vic3RyKCk6IFRoaXJkIGFyZ3VtZW50IHNob3VsZCBiZSBhbiBpbnRlZ2VyLCBvciBvbWl0dGVkJwogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpIHN1YnN0cigkYmluYXJ5X3N0cmluZywgJHN0YXJ0LCAkbGVuZ3RoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpIHN1YnN0cigkYmluYXJ5X3N0cmluZywgJHN0YXJ0KTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/cast_to_int.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeQogKiBmb3IgdXNpbmcgdGhlIG5ldyBQSFAgNyByYW5kb21fKiBBUEkgaW4gUEhQIDUgcHJvamVjdHMKICoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTcgUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCmlmICghaXNfY2FsbGFibGUoJ1JhbmRvbUNvbXBhdF9pbnR2YWwnKSkgewogICAgCiAgICAvKioKICAgICAqIENhc3QgdG8gYW4gaW50ZWdlciBpZiB3ZSBjYW4sIHNhZmVseS4KICAgICAqIAogICAgICogSWYgeW91IHBhc3MgaXQgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgKH5QSFBfSU5UX01BWCwgUEhQX0lOVF9NQVgpCiAgICAgKiAobm9uLWluY2x1c2l2ZSksIGl0IHdpbGwgc2FuZWx5IGNhc3QgaXQgdG8gYW4gaW50LiBJZiB5b3UgaXQncyBlcXVhbCB0bwogICAgICogflBIUF9JTlRfTUFYIG9yIFBIUF9JTlRfTUFYLCB3ZSBsZXQgaXQgZmFpbCBhcyBub3QgYW4gaW50ZWdlci4gRmxvYXRzIAogICAgICogbG9zZSBwcmVjaXNpb24sIHNvIHRoZSA8PSBhbmQgPT4gb3BlcmF0b3JzIG1pZ2h0IGFjY2lkZW50YWxseSBsZXQgYSBmbG9hdAogICAgICogdGhyb3VnaC4KICAgICAqIAogICAgICogQHBhcmFtIGludHxmbG9hdCAkbnVtYmVyICAgIFRoZSBudW1iZXIgd2Ugd2FudCB0byBjb252ZXJ0IHRvIGFuIGludAogICAgICogQHBhcmFtIGJvb2xlYW4gICAkZmFpbF9vcGVuIFNldCB0byB0cnVlIHRvIG5vdCB0aHJvdyBhbiBleGNlcHRpb24KICAgICAqIAogICAgICogQHJldHVybiBmbG9hdHxpbnQKICAgICAqCiAgICAgKiBAdGhyb3dzIFR5cGVFcnJvcgogICAgICovCiAgICBmdW5jdGlvbiBSYW5kb21Db21wYXRfaW50dmFsKCRudW1iZXIsICRmYWlsX29wZW4gPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAoaXNfaW50KCRudW1iZXIpIHx8IGlzX2Zsb2F0KCRudW1iZXIpKSB7CiAgICAgICAgICAgICRudW1iZXIgKz0gMDsKICAgICAgICB9IGVsc2VpZiAoaXNfbnVtZXJpYygkbnVtYmVyKSkgewogICAgICAgICAgICAkbnVtYmVyICs9IDA7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgIGlzX2Zsb2F0KCRudW1iZXIpCiAgICAgICAgICAgICYmCiAgICAgICAgICAgICRudW1iZXIgPiB+UEhQX0lOVF9NQVgKICAgICAgICAgICAgJiYKICAgICAgICAgICAgJG51bWJlciA8IFBIUF9JTlRfTUFYCiAgICAgICAgKSB7CiAgICAgICAgICAgICRudW1iZXIgPSAoaW50KSAkbnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzX2ludCgkbnVtYmVyKSkgewogICAgICAgICAgICByZXR1cm4gKGludCkgJG51bWJlcjsKICAgICAgICB9IGVsc2VpZiAoISRmYWlsX29wZW4pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcigKICAgICAgICAgICAgICAgICdFeHBlY3RlZCBhbiBpbnRlZ2VyLicKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRudW1iZXI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/error_polyfill.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxNyBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFjbGFzc19leGlzdHMoJ0Vycm9yJywgZmFsc2UpKSB7CiAgICAvLyBXZSBjYW4ndCByZWFsbHkgYXZvaWQgbWFraW5nIHRoaXMgZXh0ZW5kIEV4Y2VwdGlvbiBpbiBQSFAgNS4KICAgIGNsYXNzIEVycm9yIGV4dGVuZHMgRXhjZXB0aW9uCiAgICB7CiAgICAgICAgCiAgICB9Cn0KCmlmICghY2xhc3NfZXhpc3RzKCdUeXBlRXJyb3InLCBmYWxzZSkpIHsKICAgIGlmIChpc19zdWJjbGFzc19vZignRXJyb3InLCAnRXhjZXB0aW9uJykpIHsKICAgICAgICBjbGFzcyBUeXBlRXJyb3IgZXh0ZW5kcyBFcnJvcgogICAgICAgIHsKICAgICAgICAgICAgCiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBjbGFzcyBUeXBlRXJyb3IgZXh0ZW5kcyBFeGNlcHRpb24KICAgICAgICB7CiAgICAgICAgICAgIAogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeQogKiBmb3IgdXNpbmcgdGhlIG5ldyBQSFAgNyByYW5kb21fKiBBUEkgaW4gUEhQIDUgcHJvamVjdHMKICoKICogQHZlcnNpb24gMi4wLjEwCiAqIEByZWxlYXNlZCAyMDE3LTAzLTEzCiAqCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDE3IFBhcmFnb24gSW5pdGlhdGl2ZSBFbnRlcnByaXNlcwogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQogKiBTT0ZUV0FSRS4KICovCgppZiAoIWRlZmluZWQoJ1BIUF9WRVJTSU9OX0lEJykpIHsKICAgIC8vIFRoaXMgY29uc3RhbnQgd2FzIGludHJvZHVjZWQgaW4gUEhQIDUuMi43CiAgICAkUmFuZG9tQ29tcGF0dmVyc2lvbiA9IGFycmF5X21hcCgnaW50dmFsJywgZXhwbG9kZSgnLicsIFBIUF9WRVJTSU9OKSk7CiAgICBkZWZpbmUoCiAgICAgICAgJ1BIUF9WRVJTSU9OX0lEJywKICAgICAgICAkUmFuZG9tQ29tcGF0dmVyc2lvblswXSAqIDEwMDAwCiAgICAgICAgKyAkUmFuZG9tQ29tcGF0dmVyc2lvblsxXSAqIDEwMAogICAgICAgICsgJFJhbmRvbUNvbXBhdHZlcnNpb25bMl0KICAgICk7CiAgICAkUmFuZG9tQ29tcGF0dmVyc2lvbiA9IG51bGw7Cn0KCi8qKgogKiBQSFAgNy4wLjAgYW5kIG5ld2VyIGhhdmUgdGhlc2UgZnVuY3Rpb25zIG5hdGl2ZWx5LgogKi8KaWYgKFBIUF9WRVJTSU9OX0lEID49IDcwMDAwKSB7CiAgICByZXR1cm47Cn0KCmlmICghZGVmaW5lZCgnUkFORE9NX0NPTVBBVF9SRUFEX0JVRkZFUicpKSB7CiAgICBkZWZpbmUoJ1JBTkRPTV9DT01QQVRfUkVBRF9CVUZGRVInLCA4KTsKfQoKJFJhbmRvbUNvbXBhdERJUiA9IGRpcm5hbWUoX19GSUxFX18pOwoKcmVxdWlyZV9vbmNlICRSYW5kb21Db21wYXRESVIgLiAnL2J5dGVfc2FmZV9zdHJpbmdzLnBocCc7CnJlcXVpcmVfb25jZSAkUmFuZG9tQ29tcGF0RElSIC4gJy9jYXN0X3RvX2ludC5waHAnOwpyZXF1aXJlX29uY2UgJFJhbmRvbUNvbXBhdERJUiAuICcvZXJyb3JfcG9seWZpbGwucGhwJzsKCmlmICghaXNfY2FsbGFibGUoJ3JhbmRvbV9ieXRlcycpKSB7CiAgICAvKioKICAgICAqIFBIUCA1LjIuMCAtIDUuNi54IHdheSB0byBpbXBsZW1lbnQgcmFuZG9tX2J5dGVzKCkKICAgICAqCiAgICAgKiBXZSB1c2UgY29uZGl0aW9uYWwgc3RhdGVtZW50cyBoZXJlIHRvIGRlZmluZSB0aGUgZnVuY3Rpb24gaW4gYWNjb3JkYW5jZQogICAgICogdG8gdGhlIG9wZXJhdGluZyBlbnZpcm9ubWVudC4gSXQncyBhIG1pY3JvLW9wdGltaXphdGlvbi4KICAgICAqCiAgICAgKiBJbiBvcmRlciBvZiBwcmVmZXJlbmNlOgogICAgICogICAxLiBVc2UgbGlic29kaXVtIGlmIGF2YWlsYWJsZS4KICAgICAqICAgMi4gZnJlYWQoKSAvZGV2L3VyYW5kb20gaWYgYXZhaWxhYmxlIChuZXZlciBvbiBXaW5kb3dzKQogICAgICogICAzLiBtY3J5cHRfY3JlYXRlX2l2KCRieXRlcywgTUNSWVBUX0RFVl9VUkFORE9NKQogICAgICogICA0LiBDT00oJ0NBUElDT00uVXRpbGl0aWVzLjEnKS0+R2V0UmFuZG9tKCkKICAgICAqCiAgICAgKiBTZWUgUkFUSU9OQUxFLm1kIGZvciBvdXIgcmVhc29uaW5nIGJlaGluZCB0aGlzIHBhcnRpY3VsYXIgb3JkZXIKICAgICAqLwogICAgaWYgKGV4dGVuc2lvbl9sb2FkZWQoJ2xpYnNvZGl1bScpKSB7CiAgICAgICAgLy8gU2VlIHJhbmRvbV9ieXRlc19saWJzb2RpdW0ucGhwCiAgICAgICAgaWYgKFBIUF9WRVJTSU9OX0lEID49IDUwMzAwICYmIGlzX2NhbGxhYmxlKCdcXFNvZGl1bVxccmFuZG9tYnl0ZXNfYnVmJykpIHsKICAgICAgICAgICAgcmVxdWlyZV9vbmNlICRSYW5kb21Db21wYXRESVIgLiAnL3JhbmRvbV9ieXRlc19saWJzb2RpdW0ucGhwJzsKICAgICAgICB9IGVsc2VpZiAobWV0aG9kX2V4aXN0cygnU29kaXVtJywgJ3JhbmRvbWJ5dGVzX2J1ZicpKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSAkUmFuZG9tQ29tcGF0RElSIC4gJy9yYW5kb21fYnl0ZXNfbGlic29kaXVtX2xlZ2FjeS5waHAnOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlYWRpbmcgZGlyZWN0bHkgZnJvbSAvZGV2L3VyYW5kb206CiAgICAgKi8KICAgIGlmIChESVJFQ1RPUllfU0VQQVJBVE9SID09PSAnLycpIHsKICAgICAgICAvLyBESVJFQ1RPUllfU0VQQVJBVE9SID09PSAnLycgb24gVW5peC1saWtlIE9TZXMgLS0gdGhpcyBpcyBhIGZhc3QKICAgICAgICAvLyB3YXkgdG8gZXhjbHVkZSBXaW5kb3dzLgogICAgICAgICRSYW5kb21Db21wYXRVcmFuZG9tID0gdHJ1ZTsKICAgICAgICAkUmFuZG9tQ29tcGF0X2Jhc2VkaXIgPSBpbmlfZ2V0KCdvcGVuX2Jhc2VkaXInKTsKCiAgICAgICAgaWYgKCFlbXB0eSgkUmFuZG9tQ29tcGF0X2Jhc2VkaXIpKSB7CiAgICAgICAgICAgICRSYW5kb21Db21wYXRfb3Blbl9iYXNlZGlyID0gZXhwbG9kZSgKICAgICAgICAgICAgICAgIFBBVEhfU0VQQVJBVE9SLAogICAgICAgICAgICAgICAgc3RydG9sb3dlcigkUmFuZG9tQ29tcGF0X2Jhc2VkaXIpCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRSYW5kb21Db21wYXRVcmFuZG9tID0gKGFycmF5KCkgIT09IGFycmF5X2ludGVyc2VjdCgKICAgICAgICAgICAgICAgIGFycmF5KCcvZGV2JywgJy9kZXYvJywgJy9kZXYvdXJhbmRvbScpLAogICAgICAgICAgICAgICAgJFJhbmRvbUNvbXBhdF9vcGVuX2Jhc2VkaXIKICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICRSYW5kb21Db21wYXRfb3Blbl9iYXNlZGlyID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICgKICAgICAgICAgICAgIWlzX2NhbGxhYmxlKCdyYW5kb21fYnl0ZXMnKQogICAgICAgICAgICAmJgogICAgICAgICAgICAkUmFuZG9tQ29tcGF0VXJhbmRvbQogICAgICAgICAgICAmJgogICAgICAgICAgICBAaXNfcmVhZGFibGUoJy9kZXYvdXJhbmRvbScpCiAgICAgICAgKSB7CiAgICAgICAgICAgIC8vIEVycm9yIHN1cHByZXNzaW9uIG9uIGlzX3JlYWRhYmxlKCkgaW4gY2FzZSBvZiBhbiBvcGVuX2Jhc2VkaXIKICAgICAgICAgICAgLy8gb3Igc2FmZV9tb2RlIGZhaWx1cmUuIEFsbCB3ZSBjYXJlIGFib3V0IGlzIHdoZXRoZXIgb3Igbm90IHdlCiAgICAgICAgICAgIC8vIGNhbiByZWFkIGl0IGF0IHRoaXMgcG9pbnQuIElmIHRoZSBQSFAgZW52aXJvbm1lbnQgaXMgZ29pbmcgdG8KICAgICAgICAgICAgLy8gcGFuaWMgb3ZlciB0cnlpbmcgdG8gc2VlIGlmIHRoZSBmaWxlIGNhbiBiZSByZWFkIGluIHRoZSBmaXJzdAogICAgICAgICAgICAvLyBwbGFjZSwgdGhhdCBpcyBub3QgaGVscGZ1bCB0byB1cyBoZXJlLgoKICAgICAgICAgICAgLy8gU2VlIHJhbmRvbV9ieXRlc19kZXZfdXJhbmRvbS5waHAKICAgICAgICAgICAgcmVxdWlyZV9vbmNlICRSYW5kb21Db21wYXRESVIgLiAnL3JhbmRvbV9ieXRlc19kZXZfdXJhbmRvbS5waHAnOwogICAgICAgIH0KICAgICAgICAvLyBVbnNldCB2YXJpYWJsZXMgYWZ0ZXIgdXNlCiAgICAgICAgJFJhbmRvbUNvbXBhdF9iYXNlZGlyID0gbnVsbDsKICAgIH0gZWxzZSB7CiAgICAgICAgJFJhbmRvbUNvbXBhdFVyYW5kb20gPSBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIG1jcnlwdF9jcmVhdGVfaXYoKQogICAgICoKICAgICAqIFdlIG9ubHkgd2FudCB0byB1c2UgbWN5cHRfY3JlYXRlX2l2KCkgaWY6CiAgICAgKgogICAgICogLSByYW5kb21fYnl0ZXMoKSBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRlZmluZWQKICAgICAqIC0gdGhlIG1jcnlwdCBleHRlbnNpb25zIGlzIGxvYWRlZAogICAgICogLSBPbmUgb2YgdGhlc2UgdHdvIGNvbmRpdGlvbnMgaXMgdHJ1ZToKICAgICAqICAgLSBXZSdyZSBvbiBXaW5kb3dzIChESVJFQ1RPUllfU0VQQVJBVE9SICE9PSAnLycpCiAgICAgKiAgIC0gV2UncmUgbm90IG9uIFdpbmRvd3MgYW5kIC9kZXYvdXJhbmRvbSBpcyByZWFkYWJhbGUKICAgICAqICAgICAoaS5lLiB3ZSdyZSBub3QgaW4gYSBjaHJvb3QgamFpbCkKICAgICAqIC0gU3BlY2lhbCBjYXNlOgogICAgICogICAtIElmIHdlJ3JlIG5vdCBvbiBXaW5kb3dzLCBidXQgdGhlIFBIUCB2ZXJzaW9uIGlzIGJldHdlZW4KICAgICAqICAgICA1LjYuMTAgYW5kIDUuNi4xMiwgd2UgZG9uJ3Qgd2FudCB0byB1c2UgbWNyeXB0LiBJdCB3aWxsCiAgICAgKiAgICAgaGFuZyBpbmRlZmluaXRlbHkuIFRoaXMgaXMgYmFkLgogICAgICogICAtIElmIHdlJ3JlIG9uIFdpbmRvd3MsIHdlIHdhbnQgdG8gdXNlIFBIUCA+PSA1LjMuNyBvciBlbHNlCiAgICAgKiAgICAgd2UgZ2V0IGluc3VmZmljaWVudCBlbnRyb3B5IGVycm9ycy4KICAgICAqLwogICAgaWYgKAogICAgICAgICFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykKICAgICAgICAmJgogICAgICAgIC8vIFdpbmRvd3Mgb24gUEhQIDwgNS4zLjcgaXMgYnJva2VuLCBidXQgbm9uLVdpbmRvd3MgaXMgbm90IGtub3duIHRvIGJlLgogICAgICAgIChESVJFQ1RPUllfU0VQQVJBVE9SID09PSAnLycgfHwgUEhQX1ZFUlNJT05fSUQgPj0gNTAzMDcpCiAgICAgICAgJiYKICAgICAgICAvLyBQcmV2ZW50IHRoaXMgY29kZSBmcm9tIGhhbmdpbmcgaW5kZWZpbml0ZWx5IG9uIG5vbi1XaW5kb3dzOwogICAgICAgIC8vIHNlZSBodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTY5ODMzCiAgICAgICAgKAogICAgICAgICAgICBESVJFQ1RPUllfU0VQQVJBVE9SICE9PSAnLycgfHwKICAgICAgICAgICAgKFBIUF9WRVJTSU9OX0lEIDw9IDUwNjA5IHx8IFBIUF9WRVJTSU9OX0lEID49IDUwNjEzKQogICAgICAgICkKICAgICAgICAmJgogICAgICAgIGV4dGVuc2lvbl9sb2FkZWQoJ21jcnlwdCcpCiAgICApIHsKICAgICAgICAvLyBTZWUgcmFuZG9tX2J5dGVzX21jcnlwdC5waHAKICAgICAgICByZXF1aXJlX29uY2UgJFJhbmRvbUNvbXBhdERJUiAuICcvcmFuZG9tX2J5dGVzX21jcnlwdC5waHAnOwogICAgfQogICAgJFJhbmRvbUNvbXBhdFVyYW5kb20gPSBudWxsOwoKICAgIC8qKgogICAgICogVGhpcyBpcyBhIFdpbmRvd3Mtc3BlY2lmaWMgZmFsbGJhY2ssIGZvciB3aGVuIHRoZSBtY3J5cHQgZXh0ZW5zaW9uCiAgICAgKiBpc24ndCBsb2FkZWQuCiAgICAgKi8KICAgIGlmICgKICAgICAgICAhaXNfY2FsbGFibGUoJ3JhbmRvbV9ieXRlcycpCiAgICAgICAgJiYKICAgICAgICBleHRlbnNpb25fbG9hZGVkKCdjb21fZG90bmV0JykKICAgICAgICAmJgogICAgICAgIGNsYXNzX2V4aXN0cygnQ09NJykKICAgICkgewogICAgICAgICRSYW5kb21Db21wYXRfZGlzYWJsZWRfY2xhc3NlcyA9IHByZWdfc3BsaXQoCiAgICAgICAgICAgICcjXHMqLFxzKiMnLAogICAgICAgICAgICBzdHJ0b2xvd2VyKGluaV9nZXQoJ2Rpc2FibGVfY2xhc3NlcycpKQogICAgICAgICk7CgogICAgICAgIGlmICghaW5fYXJyYXkoJ2NvbScsICRSYW5kb21Db21wYXRfZGlzYWJsZWRfY2xhc3NlcykpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRSYW5kb21Db21wYXRDT010ZXN0ID0gbmV3IENPTSgnQ0FQSUNPTS5VdGlsaXRpZXMuMScpOwogICAgICAgICAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJFJhbmRvbUNvbXBhdENPTXRlc3QsICdHZXRSYW5kb20nKSkgewogICAgICAgICAgICAgICAgICAgIC8vIFNlZSByYW5kb21fYnl0ZXNfY29tX2RvdG5ldC5waHAKICAgICAgICAgICAgICAgICAgICByZXF1aXJlX29uY2UgJFJhbmRvbUNvbXBhdERJUiAuICcvcmFuZG9tX2J5dGVzX2NvbV9kb3RuZXQucGhwJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBjYXRjaCAoY29tX2V4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgLy8gRG9uJ3QgdHJ5IHRvIHVzZSBpdC4KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkUmFuZG9tQ29tcGF0X2Rpc2FibGVkX2NsYXNzZXMgPSBudWxsOwogICAgICAgICRSYW5kb21Db21wYXRDT010ZXN0ID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIHRocm93IG5ldyBFeGNlcHRpb24KICAgICAqLwogICAgaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgICAgICAvKioKICAgICAgICAgKiBXZSBkb24ndCBoYXZlIGFueSBtb3JlIG9wdGlvbnMsIHNvIGxldCdzIHRocm93IGFuIGV4Y2VwdGlvbiByaWdodCBub3cKICAgICAgICAgKiBhbmQgaG9wZSB0aGUgZGV2ZWxvcGVyIHdvbid0IGxldCBpdCBmYWlsIHNpbGVudGx5LgogICAgICAgICAqCiAgICAgICAgICogQHBhcmFtIG1peGVkICRsZW5ndGgKICAgICAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgogICAgICAgICAqLwogICAgICAgIGZ1bmN0aW9uIHJhbmRvbV9ieXRlcygkbGVuZ3RoKQogICAgICAgIHsKICAgICAgICAgICAgdW5zZXQoJGxlbmd0aCk7IC8vIFN1cHByZXNzICJ2YXJpYWJsZSBub3QgdXNlZCIgd2FybmluZ3MuCiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAnVGhlcmUgaXMgbm8gc3VpdGFibGUgQ1NQUk5HIGluc3RhbGxlZCBvbiB5b3VyIHN5c3RlbScKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCmlmICghaXNfY2FsbGFibGUoJ3JhbmRvbV9pbnQnKSkgewogICAgcmVxdWlyZV9vbmNlICRSYW5kb21Db21wYXRESVIgLiAnL3JhbmRvbV9pbnQucGhwJzsKfQoKJFJhbmRvbUNvbXBhdERJUiA9IG51bGw7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_com_dotnet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICogCiAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTcgUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAqIAogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICogCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKiAKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQogKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCiAqIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFCiAqIFNPRlRXQVJFLgogKi8KCmlmICghaXNfY2FsbGFibGUoJ3JhbmRvbV9ieXRlcycpKSB7CiAgICAvKioKICAgICAqIFdpbmRvd3Mgd2l0aCBQSFAgPCA1LjMuMCB3aWxsIG5vdCBoYXZlIHRoZSBmdW5jdGlvbgogICAgICogb3BlbnNzbF9yYW5kb21fcHNldWRvX2J5dGVzKCkgYXZhaWxhYmxlLCBzbyBsZXQncyB1c2UKICAgICAqIENBUElDT00gdG8gd29yayBhcm91bmQgdGhpcyBkZWZpY2llbmN5LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGJ5dGVzCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiByYW5kb21fYnl0ZXMoJGJ5dGVzKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRieXRlcyA9IFJhbmRvbUNvbXBhdF9pbnR2YWwoJGJ5dGVzKTsKICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJGV4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAncmFuZG9tX2J5dGVzKCk6ICRieXRlcyBtdXN0IGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJ5dGVzIDwgMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAnTGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkYnVmID0gJyc7CiAgICAgICAgaWYgKCFjbGFzc19leGlzdHMoJ0NPTScpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigKICAgICAgICAgICAgICAgICdDT00gZG9lcyBub3QgZXhpc3QnCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICR1dGlsID0gbmV3IENPTSgnQ0FQSUNPTS5VdGlsaXRpZXMuMScpOwogICAgICAgICRleGVjQ291bnQgPSAwOwoKICAgICAgICAvKioKICAgICAgICAgKiBMZXQncyBub3QgbGV0IGl0IGxvb3AgZm9yZXZlci4gSWYgd2UgcnVuIE4gdGltZXMgYW5kIGZhaWwgdG8KICAgICAgICAgKiBnZXQgTiBieXRlcyBvZiByYW5kb20gZGF0YSwgdGhlbiBDQVBJQ09NIGhhcyBmYWlsZWQgdXMuCiAgICAgICAgICovCiAgICAgICAgZG8gewogICAgICAgICAgICAkYnVmIC49IGJhc2U2NF9kZWNvZGUoJHV0aWwtPkdldFJhbmRvbSgkYnl0ZXMsIDApKTsKICAgICAgICAgICAgaWYgKFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJ1ZikgPj0gJGJ5dGVzKSB7CiAgICAgICAgICAgICAgICAvKioKICAgICAgICAgICAgICAgICAqIFJldHVybiBvdXIgcmFuZG9tIGVudHJvcHkgYnVmZmVyIGhlcmU6CiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIHJldHVybiBSYW5kb21Db21wYXRfc3Vic3RyKCRidWYsIDAsICRieXRlcyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgKyskZXhlY0NvdW50OwogICAgICAgIH0gd2hpbGUgKCRleGVjQ291bnQgPCAkYnl0ZXMpOwoKICAgICAgICAvKioKICAgICAgICAgKiBJZiB3ZSByZWFjaCBoZXJlLCBQSFAgaGFzIGZhaWxlZCB1cy4KICAgICAgICAgKi8KICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKAogICAgICAgICAgICAnQ291bGQgbm90IGdhdGhlciBzdWZmaWNpZW50IHJhbmRvbSBkYXRhJwogICAgICAgICk7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_dev_urandom.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxNyBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFkZWZpbmVkKCdSQU5ET01fQ09NUEFUX1JFQURfQlVGRkVSJykpIHsKICAgIGRlZmluZSgnUkFORE9NX0NPTVBBVF9SRUFEX0JVRkZFUicsIDgpOwp9CgppZiAoIWlzX2NhbGxhYmxlKCdyYW5kb21fYnl0ZXMnKSkgewogICAgLyoqCiAgICAgKiBVbmxlc3Mgb3Blbl9iYXNlZGlyIGlzIGVuYWJsZWQsIHVzZSAvZGV2L3VyYW5kb20gZm9yCiAgICAgKiByYW5kb20gbnVtYmVycyBpbiBhY2NvcmRhbmNlIHdpdGggYmVzdCBwcmFjdGljZXMKICAgICAqCiAgICAgKiBXaHkgd2UgdXNlIC9kZXYvdXJhbmRvbSBhbmQgbm90IC9kZXYvcmFuZG9tCiAgICAgKiBAcmVmIGh0dHA6Ly9zb2NrcHVwcGV0Lm9yZy9ibG9nLzIwMTQvMDIvMjUvc2FmZWx5LWdlbmVyYXRlLXJhbmRvbS1udW1iZXJzCiAgICAgKgogICAgICogQHBhcmFtIGludCAkYnl0ZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIGZ1bmN0aW9uIHJhbmRvbV9ieXRlcygkYnl0ZXMpCiAgICB7CiAgICAgICAgc3RhdGljICRmcCA9IG51bGw7CiAgICAgICAgLyoqCiAgICAgICAgICogVGhpcyBibG9jayBzaG91bGQgb25seSBiZSBydW4gb25jZQogICAgICAgICAqLwogICAgICAgIGlmIChlbXB0eSgkZnApKSB7CiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBXZSB1c2UgL2Rldi91cmFuZG9tIGlmIGl0IGlzIGEgY2hhciBkZXZpY2UuCiAgICAgICAgICAgICAqIFdlIG5ldmVyIGZhbGwgYmFjayB0byAvZGV2L3JhbmRvbQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgJGZwID0gZm9wZW4oJy9kZXYvdXJhbmRvbScsICdyYicpOwogICAgICAgICAgICBpZiAoIWVtcHR5KCRmcCkpIHsKICAgICAgICAgICAgICAgICRzdCA9IGZzdGF0KCRmcCk7CiAgICAgICAgICAgICAgICBpZiAoKCRzdFsnbW9kZSddICYgMDE3MDAwMCkgIT09IDAyMDAwMCkgewogICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkZnApOwogICAgICAgICAgICAgICAgICAgICRmcCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWVtcHR5KCRmcCkpIHsKICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICogc3RyZWFtX3NldF9yZWFkX2J1ZmZlcigpIGRvZXMgbm90IGV4aXN0IGluIEhIVk0KICAgICAgICAgICAgICAgICAqCiAgICAgICAgICAgICAgICAgKiBJZiB3ZSBkb24ndCBzZXQgdGhlIHN0cmVhbSdzIHJlYWQgYnVmZmVyIHRvIDAsIFBIUCB3aWxsCiAgICAgICAgICAgICAgICAgKiBpbnRlcm5hbGx5IGJ1ZmZlciA4MTkyIGJ5dGVzLCB3aGljaCBjYW4gd2FzdGUgZW50cm9weQogICAgICAgICAgICAgICAgICoKICAgICAgICAgICAgICAgICAqIHN0cmVhbV9zZXRfcmVhZF9idWZmZXIgcmV0dXJucyAwIG9uIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgaWYgKGlzX2NhbGxhYmxlKCdzdHJlYW1fc2V0X3JlYWRfYnVmZmVyJykpIHsKICAgICAgICAgICAgICAgICAgICBzdHJlYW1fc2V0X3JlYWRfYnVmZmVyKCRmcCwgUkFORE9NX0NPTVBBVF9SRUFEX0JVRkZFUik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaXNfY2FsbGFibGUoJ3N0cmVhbV9zZXRfY2h1bmtfc2l6ZScpKSB7CiAgICAgICAgICAgICAgICAgICAgc3RyZWFtX3NldF9jaHVua19zaXplKCRmcCwgUkFORE9NX0NPTVBBVF9SRUFEX0JVRkZFUik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRieXRlcyA9IFJhbmRvbUNvbXBhdF9pbnR2YWwoJGJ5dGVzKTsKICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJGV4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAncmFuZG9tX2J5dGVzKCk6ICRieXRlcyBtdXN0IGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJ5dGVzIDwgMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAnTGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBUaGlzIGlmKCkgYmxvY2sgb25seSBydW5zIGlmIHdlIG1hbmFnZWQgdG8gb3BlbiBhIGZpbGUgaGFuZGxlCiAgICAgICAgICoKICAgICAgICAgKiBJdCBkb2VzIG5vdCBiZWxvbmcgaW4gYW4gZWxzZSB7fSBibG9jaywgYmVjYXVzZSB0aGUgYWJvdmUKICAgICAgICAgKiBpZiAoZW1wdHkoJGZwKSkgbGluZSBpcyBsb2dpYyB0aGF0IHNob3VsZCBvbmx5IGJlIHJ1biBvbmNlIHBlcgogICAgICAgICAqIHBhZ2UgbG9hZC4KICAgICAgICAgKi8KICAgICAgICBpZiAoIWVtcHR5KCRmcCkpIHsKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEB2YXIgaW50CiAgICAgICAgICAgICAqLwogICAgICAgICAgICAkcmVtYWluaW5nID0gJGJ5dGVzOwoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEB2YXIgc3RyaW5nfGJvb2wKICAgICAgICAgICAgICovCiAgICAgICAgICAgICRidWYgPSAnJzsKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBXZSB1c2UgZnJlYWQoKSBpbiBhIGxvb3AgdG8gcHJvdGVjdCBhZ2FpbnN0IHBhcnRpYWwgcmVhZHMKICAgICAgICAgICAgICovCiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICogQHZhciBzdHJpbmd8Ym9vbAogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAkcmVhZCA9IGZyZWFkKCRmcCwgJHJlbWFpbmluZyk7CiAgICAgICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkcmVhZCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHJlYWQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICAgICAgICAgKiBXZSBjYW5ub3Qgc2FmZWx5IHJlYWQgZnJvbSB0aGUgZmlsZS4gRXhpdCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICogZG8td2hpbGUgbG9vcCBhbmQgdHJpZ2dlciB0aGUgZXhjZXB0aW9uIGNvbmRpdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgKgogICAgICAgICAgICAgICAgICAgICAgICAgKiBAdmFyIHN0cmluZ3xib29sCiAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgICAgICAgICAkYnVmID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICogRGVjcmVhc2UgdGhlIG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBmcm9tIHJlbWFpbmluZwogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAkcmVtYWluaW5nIC09IFJhbmRvbUNvbXBhdF9zdHJsZW4oJHJlYWQpOwogICAgICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAgICAgKiBAdmFyIHN0cmluZ3xib29sCiAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICRidWYgPSAkYnVmIC4gJHJlYWQ7CiAgICAgICAgICAgIH0gd2hpbGUgKCRyZW1haW5pbmcgPiAwKTsKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiBJcyBvdXIgcmVzdWx0IHZhbGlkPwogICAgICAgICAgICAgKi8KICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkYnVmKSkgewogICAgICAgICAgICAgICAgaWYgKFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJ1ZikgPT09ICRieXRlcykgewogICAgICAgICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICAgICAgICAqIFJldHVybiBvdXIgcmFuZG9tIGVudHJvcHkgYnVmZmVyIGhlcmU6CiAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRidWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIElmIHdlIHJlYWNoIGhlcmUsIFBIUCBoYXMgZmFpbGVkIHVzLgogICAgICAgICAqLwogICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oCiAgICAgICAgICAgICdFcnJvciByZWFkaW5nIGZyb20gc291cmNlIGRldmljZScKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_libsodium.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxNyBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgIC8qKgogICAgICogSWYgdGhlIGxpYnNvZGl1bSBQSFAgZXh0ZW5zaW9uIGlzIGxvYWRlZCwgd2UnbGwgdXNlIGl0IGFib3ZlIGFueSBvdGhlcgogICAgICogc29sdXRpb24uCiAgICAgKgogICAgICogbGlic29kaXVtLXBocCBwcm9qZWN0OgogICAgICogQHJlZiBodHRwczovL2dpdGh1Yi5jb20vamVkaXNjdDEvbGlic29kaXVtLXBocAogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGJ5dGVzCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiByYW5kb21fYnl0ZXMoJGJ5dGVzKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRieXRlcyA9IFJhbmRvbUNvbXBhdF9pbnR2YWwoJGJ5dGVzKTsKICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJGV4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAncmFuZG9tX2J5dGVzKCk6ICRieXRlcyBtdXN0IGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJ5dGVzIDwgMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAnTGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBcU29kaXVtXHJhbmRvbWJ5dGVzX2J1ZigpIGRvZXNuJ3QgYWxsb3cgbW9yZSB0aGFuIDIxNDc0ODM2NDcgYnl0ZXMgdG8gYmUKICAgICAgICAgKiBnZW5lcmF0ZWQgaW4gb25lIGludm9jYXRpb24uCiAgICAgICAgICovCiAgICAgICAgaWYgKCRieXRlcyA+IDIxNDc0ODM2NDcpIHsKICAgICAgICAgICAgJGJ1ZiA9ICcnOwogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkYnl0ZXM7ICRpICs9IDEwNzM3NDE4MjQpIHsKICAgICAgICAgICAgICAgICRuID0gKCRieXRlcyAtICRpKSA+IDEwNzM3NDE4MjQKICAgICAgICAgICAgICAgICAgICA/IDEwNzM3NDE4MjQKICAgICAgICAgICAgICAgICAgICA6ICRieXRlcyAtICRpOwogICAgICAgICAgICAgICAgJGJ1ZiAuPSBcU29kaXVtXHJhbmRvbWJ5dGVzX2J1Zigkbik7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkYnVmID0gXFNvZGl1bVxyYW5kb21ieXRlc19idWYoJGJ5dGVzKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYnVmICE9PSBmYWxzZSkgewogICAgICAgICAgICBpZiAoUmFuZG9tQ29tcGF0X3N0cmxlbigkYnVmKSA9PT0gJGJ5dGVzKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgd2UgcmVhY2ggaGVyZSwgUEhQIGhhcyBmYWlsZWQgdXMuCiAgICAgICAgICovCiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigKICAgICAgICAgICAgJ0NvdWxkIG5vdCBnYXRoZXIgc3VmZmljaWVudCByYW5kb20gZGF0YScKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_libsodium_legacy.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxNyBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgIC8qKgogICAgICogSWYgdGhlIGxpYnNvZGl1bSBQSFAgZXh0ZW5zaW9uIGlzIGxvYWRlZCwgd2UnbGwgdXNlIGl0IGFib3ZlIGFueSBvdGhlcgogICAgICogc29sdXRpb24uCiAgICAgKgogICAgICogbGlic29kaXVtLXBocCBwcm9qZWN0OgogICAgICogQHJlZiBodHRwczovL2dpdGh1Yi5jb20vamVkaXNjdDEvbGlic29kaXVtLXBocAogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGJ5dGVzCiAgICAgKgogICAgICogQHRocm93cyBFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBmdW5jdGlvbiByYW5kb21fYnl0ZXMoJGJ5dGVzKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRieXRlcyA9IFJhbmRvbUNvbXBhdF9pbnR2YWwoJGJ5dGVzKTsKICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJGV4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAncmFuZG9tX2J5dGVzKCk6ICRieXRlcyBtdXN0IGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJ5dGVzIDwgMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoCiAgICAgICAgICAgICAgICAnTGVuZ3RoIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvKioKICAgICAgICAgKiBAdmFyIHN0cmluZwogICAgICAgICAqLwogICAgICAgICRidWYgPSAnJzsKCiAgICAgICAgLyoqCiAgICAgICAgICogXFNvZGl1bVxyYW5kb21ieXRlc19idWYoKSBkb2Vzbid0IGFsbG93IG1vcmUgdGhhbiAyMTQ3NDgzNjQ3IGJ5dGVzIHRvIGJlCiAgICAgICAgICogZ2VuZXJhdGVkIGluIG9uZSBpbnZvY2F0aW9uLgogICAgICAgICAqLwogICAgICAgIGlmICgkYnl0ZXMgPiAyMTQ3NDgzNjQ3KSB7CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRieXRlczsgJGkgKz0gMTA3Mzc0MTgyNCkgewogICAgICAgICAgICAgICAgJG4gPSAoJGJ5dGVzIC0gJGkpID4gMTA3Mzc0MTgyNAogICAgICAgICAgICAgICAgICAgID8gMTA3Mzc0MTgyNAogICAgICAgICAgICAgICAgICAgIDogJGJ5dGVzIC0gJGk7CiAgICAgICAgICAgICAgICAkYnVmIC49IFNvZGl1bTo6cmFuZG9tYnl0ZXNfYnVmKCRuKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRidWYgLj0gU29kaXVtOjpyYW5kb21ieXRlc19idWYoJGJ5dGVzKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19zdHJpbmcoJGJ1ZikpIHsKICAgICAgICAgICAgaWYgKFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJ1ZikgPT09ICRieXRlcykgewogICAgICAgICAgICAgICAgcmV0dXJuICRidWY7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIElmIHdlIHJlYWNoIGhlcmUsIFBIUCBoYXMgZmFpbGVkIHVzLgogICAgICAgICAqLwogICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oCiAgICAgICAgICAgICdDb3VsZCBub3QgZ2F0aGVyIHN1ZmZpY2llbnQgcmFuZG9tIGRhdGEnCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_bytes_mcrypt.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJhbmRvbV8qIENvbXBhdGliaWxpdHkgTGlicmFyeSAKICogZm9yIHVzaW5nIHRoZSBuZXcgUEhQIDcgcmFuZG9tXyogQVBJIGluIFBIUCA1IHByb2plY3RzCiAqIAogKiBUaGUgTUlUIExpY2Vuc2UgKE1JVCkKICoKICogQ29weXJpZ2h0IChjKSAyMDE1IC0gMjAxNyBQYXJhZ29uIEluaXRpYXRpdmUgRW50ZXJwcmlzZXMKICogCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICogaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwogKiB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCiAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogKiBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKiAKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqIAogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgogKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICogU09GVFdBUkUuCiAqLwoKaWYgKCFpc19jYWxsYWJsZSgncmFuZG9tX2J5dGVzJykpIHsKICAgIC8qKgogICAgICogUG93ZXJlZCBieSBleHQvbWNyeXB0IChhbmQgdGhhbmtmdWxseSBOT1QgbGlibWNyeXB0KQogICAgICoKICAgICAqIEByZWYgaHR0cHM6Ly9idWdzLnBocC5uZXQvYnVnLnBocD9pZD01NTE2OQogICAgICogQHJlZiBodHRwczovL2dpdGh1Yi5jb20vcGhwL3BocC1zcmMvYmxvYi9jNTY4ZmZlNTE3MWQ5NDIxNjFmYzhkZGEwNjZiY2U4NDRiZGVmNjc2L2V4dC9tY3J5cHQvbWNyeXB0LmMjTDEzMjEtTDEzODYKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRieXRlcwogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgZnVuY3Rpb24gcmFuZG9tX2J5dGVzKCRieXRlcykKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICAkYnl0ZXMgPSBSYW5kb21Db21wYXRfaW50dmFsKCRieXRlcyk7CiAgICAgICAgfSBjYXRjaCAoVHlwZUVycm9yICRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgJ3JhbmRvbV9ieXRlcygpOiAkYnl0ZXMgbXVzdCBiZSBhbiBpbnRlZ2VyJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRieXRlcyA8IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICAgICAgICAgJ0xlbmd0aCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJGJ1ZiA9IEBtY3J5cHRfY3JlYXRlX2l2KCRieXRlcywgTUNSWVBUX0RFVl9VUkFORE9NKTsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRidWYgIT09IGZhbHNlCiAgICAgICAgICAgICYmCiAgICAgICAgICAgIFJhbmRvbUNvbXBhdF9zdHJsZW4oJGJ1ZikgPT09ICRieXRlcwogICAgICAgICkgewogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogUmV0dXJuIG91ciByYW5kb20gZW50cm9weSBidWZmZXIgaGVyZToKICAgICAgICAgICAgICovCiAgICAgICAgICAgIHJldHVybiAkYnVmOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogSWYgd2UgcmVhY2ggaGVyZSwgUEhQIGhhcyBmYWlsZWQgdXMuCiAgICAgICAgICovCiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigKICAgICAgICAgICAgJ0NvdWxkIG5vdCBnYXRoZXIgc3VmZmljaWVudCByYW5kb20gZGF0YScKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/paragonie/random_compat/lib/random_int.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNfY2FsbGFibGUoJ3JhbmRvbV9pbnQnKSkgewogICAgLyoqCiAgICAgKiBSYW5kb21fKiBDb21wYXRpYmlsaXR5IExpYnJhcnkKICAgICAqIGZvciB1c2luZyB0aGUgbmV3IFBIUCA3IHJhbmRvbV8qIEFQSSBpbiBQSFAgNSBwcm9qZWN0cwogICAgICoKICAgICAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogICAgICoKICAgICAqIENvcHlyaWdodCAoYykgMjAxNSAtIDIwMTcgUGFyYWdvbiBJbml0aWF0aXZlIEVudGVycHJpc2VzCiAgICAgKgogICAgICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQogICAgICogb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKICAgICAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICAgICAqIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKICAgICAqIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwogICAgICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICAgICAqCiAgICAgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgogICAgICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAgICAgKgogICAgICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKICAgICAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogICAgICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCiAgICAgKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCiAgICAgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogICAgICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKICAgICAqIFNPRlRXQVJFLgogICAgICovCgogICAgLyoqCiAgICAgKiBGZXRjaCBhIHJhbmRvbSBpbnRlZ2VyIGJldHdlZW4gJG1pbiBhbmQgJG1heCBpbmNsdXNpdmUKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRtaW4KICAgICAqIEBwYXJhbSBpbnQgJG1heAogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgZnVuY3Rpb24gcmFuZG9tX2ludCgkbWluLCAkbWF4KQogICAgewogICAgICAgIC8qKgogICAgICAgICAqIFR5cGUgYW5kIGlucHV0IGxvZ2ljIGNoZWNrcwogICAgICAgICAqCiAgICAgICAgICogSWYgeW91IHBhc3MgaXQgYSBmbG9hdCBpbiB0aGUgcmFuZ2UgKH5QSFBfSU5UX01BWCwgUEhQX0lOVF9NQVgpCiAgICAgICAgICogKG5vbi1pbmNsdXNpdmUpLCBpdCB3aWxsIHNhbmVseSBjYXN0IGl0IHRvIGFuIGludC4gSWYgeW91IGl0J3MgZXF1YWwgdG8KICAgICAgICAgKiB+UEhQX0lOVF9NQVggb3IgUEhQX0lOVF9NQVgsIHdlIGxldCBpdCBmYWlsIGFzIG5vdCBhbiBpbnRlZ2VyLiBGbG9hdHMKICAgICAgICAgKiBsb3NlIHByZWNpc2lvbiwgc28gdGhlIDw9IGFuZCA9PiBvcGVyYXRvcnMgbWlnaHQgYWNjaWRlbnRhbGx5IGxldCBhIGZsb2F0CiAgICAgICAgICogdGhyb3VnaC4KICAgICAgICAgKi8KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1pbiA9IFJhbmRvbUNvbXBhdF9pbnR2YWwoJG1pbik7CiAgICAgICAgfSBjYXRjaCAoVHlwZUVycm9yICRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgJ3JhbmRvbV9pbnQoKTogJG1pbiBtdXN0IGJlIGFuIGludGVnZXInCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICAkbWF4ID0gUmFuZG9tQ29tcGF0X2ludHZhbCgkbWF4KTsKICAgICAgICB9IGNhdGNoIChUeXBlRXJyb3IgJGV4KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoCiAgICAgICAgICAgICAgICAncmFuZG9tX2ludCgpOiAkbWF4IG11c3QgYmUgYW4gaW50ZWdlcicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIE5vdyB0aGF0IHdlJ3ZlIHZlcmlmaWVkIG91ciB3ZWFrIHR5cGluZyBzeXN0ZW0gaGFzIGdpdmVuIHVzIGFuIGludGVnZXIsCiAgICAgICAgICogbGV0J3MgdmFsaWRhdGUgdGhlIGxvZ2ljIHRoZW4gd2UgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIGdlbmVyYXRpbmcgcmFuZG9tCiAgICAgICAgICogaW50ZWdlcnMgYWxvbmcgYSBnaXZlbiByYW5nZS4KICAgICAgICAgKi8KICAgICAgICBpZiAoJG1pbiA+ICRtYXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKAogICAgICAgICAgICAgICAgJ01pbmltdW0gdmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1heGltdW0gdmFsdWUnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1heCA9PT0gJG1pbikgewogICAgICAgICAgICByZXR1cm4gJG1pbjsKICAgICAgICB9CgogICAgICAgIC8qKgogICAgICAgICAqIEluaXRpYWxpemUgdmFyaWFibGVzIHRvIDAKICAgICAgICAgKgogICAgICAgICAqIFdlIHdhbnQgdG8gc3RvcmU6CiAgICAgICAgICogJGJ5dGVzID0+IHRoZSBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIHdlIG5lZWQKICAgICAgICAgKiAkbWFzayA9PiBhbiBpbnRlZ2VyIGJpdG1hc2sgKGZvciB1c2Ugd2l0aCB0aGUgJikgb3BlcmF0b3IKICAgICAgICAgKiAgICAgICAgICBzbyB3ZSBjYW4gbWluaW1pemUgdGhlIG51bWJlciBvZiBkaXNjYXJkcwogICAgICAgICAqLwogICAgICAgICRhdHRlbXB0cyA9ICRiaXRzID0gJGJ5dGVzID0gJG1hc2sgPSAkdmFsdWVTaGlmdCA9IDA7CgogICAgICAgIC8qKgogICAgICAgICAqIEF0IHRoaXMgcG9pbnQsICRyYW5nZSBpcyBhIHBvc2l0aXZlIG51bWJlciBncmVhdGVyIHRoYW4gMC4gSXQgbWlnaHQKICAgICAgICAgKiBvdmVyZmxvdywgaG93ZXZlciwgaWYgJG1heCAtICRtaW4gPiBQSFBfSU5UX01BWC4gUEhQIHdpbGwgY2FzdCBpdCB0bwogICAgICAgICAqIGEgZmxvYXQgYW5kIHdlIHdpbGwgbG9zZSBzb21lIHByZWNpc2lvbi4KICAgICAgICAgKi8KICAgICAgICAkcmFuZ2UgPSAkbWF4IC0gJG1pbjsKCiAgICAgICAgLyoqCiAgICAgICAgICogVGVzdCBmb3IgaW50ZWdlciBvdmVyZmxvdzoKICAgICAgICAgKi8KICAgICAgICBpZiAoIWlzX2ludCgkcmFuZ2UpKSB7CgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogU3RpbGwgc2FmZWx5IGNhbGN1bGF0ZSB3aWRlciByYW5nZXMuCiAgICAgICAgICAgICAqIFByb3ZpZGVkIGJ5IEBDb2Rlc0luQ2hhb3MsIEBvaXR0YWEKICAgICAgICAgICAgICoKICAgICAgICAgICAgICogQHJlZiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9Db2Rlc0luQ2hhb3MvMDNmOWVhMGI1OGU4YjJiOGQ0MzUKICAgICAgICAgICAgICoKICAgICAgICAgICAgICogV2UgdXNlIH4wIGFzIGEgbWFzayBpbiB0aGlzIGNhc2UgYmVjYXVzZSBpdCBnZW5lcmF0ZXMgYWxsIDFzCiAgICAgICAgICAgICAqCiAgICAgICAgICAgICAqIEByZWYgaHR0cHM6Ly9ldmFsLmluLzQwMDM1NiAoMzItYml0KQogICAgICAgICAgICAgKiBAcmVmIGh0dHA6Ly8zdjRsLm9yZy9YWDlyNSAgKDY0LWJpdCkKICAgICAgICAgICAgICovCiAgICAgICAgICAgICRieXRlcyA9IFBIUF9JTlRfU0laRTsKICAgICAgICAgICAgJG1hc2sgPSB+MDsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgKiAkYml0cyBpcyBlZmZlY3RpdmVseSBjZWlsKGxvZygkcmFuZ2UsIDIpKSB3aXRob3V0IGRlYWxpbmcgd2l0aAogICAgICAgICAgICAgKiB0eXBlIGp1Z2dsaW5nCiAgICAgICAgICAgICAqLwogICAgICAgICAgICB3aGlsZSAoJHJhbmdlID4gMCkgewogICAgICAgICAgICAgICAgaWYgKCRiaXRzICUgOCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICsrJGJ5dGVzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKyskYml0czsKICAgICAgICAgICAgICAgICRyYW5nZSA+Pj0gMTsKICAgICAgICAgICAgICAgICRtYXNrID0gJG1hc2sgPDwgMSB8IDE7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHZhbHVlU2hpZnQgPSAkbWluOwogICAgICAgIH0KCiAgICAgICAgJHZhbCA9IDA7CiAgICAgICAgLyoqCiAgICAgICAgICogTm93IHRoYXQgd2UgaGF2ZSBvdXIgcGFyYW1ldGVycyBzZXQgdXAsIGxldCdzIGJlZ2luIGdlbmVyYXRpbmcKICAgICAgICAgKiByYW5kb20gaW50ZWdlcnMgdW50aWwgb25lIGZhbGxzIGJldHdlZW4gJG1pbiBhbmQgJG1heAogICAgICAgICAqLwogICAgICAgIGRvIHsKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIFRoZSByZWplY3Rpb24gcHJvYmFiaWxpdHkgaXMgYXQgbW9zdCAwLjUsIHNvIHRoaXMgY29ycmVzcG9uZHMKICAgICAgICAgICAgICogdG8gYSBmYWlsdXJlIHByb2JhYmlsaXR5IG9mIDJeLTEyOCBmb3IgYSB3b3JraW5nIFJORwogICAgICAgICAgICAgKi8KICAgICAgICAgICAgaWYgKCRhdHRlbXB0cyA+IDEyOCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAncmFuZG9tX2ludDogUk5HIGlzIGJyb2tlbiAtIHRvbyBtYW55IHJlamVjdGlvbnMnCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogTGV0J3MgZ3JhYiB0aGUgbmVjZXNzYXJ5IG51bWJlciBvZiByYW5kb20gYnl0ZXMKICAgICAgICAgICAgICovCiAgICAgICAgICAgICRyYW5kb21CeXRlU3RyaW5nID0gcmFuZG9tX2J5dGVzKCRieXRlcyk7CgogICAgICAgICAgICAvKioKICAgICAgICAgICAgICogTGV0J3MgdHVybiAkcmFuZG9tQnl0ZVN0cmluZyBpbnRvIGFuIGludGVnZXIKICAgICAgICAgICAgICoKICAgICAgICAgICAgICogVGhpcyB1c2VzIGJpdHdpc2Ugb3BlcmF0b3JzICg8PCBhbmQgfCkgdG8gYnVpbGQgYW4gaW50ZWdlcgogICAgICAgICAgICAgKiBvdXQgb2YgdGhlIHZhbHVlcyBleHRyYWN0ZWQgZnJvbSBvcmQoKQogICAgICAgICAgICAgKgogICAgICAgICAgICAgKiBFeGFtcGxlOiBbOUZdIHwgWzZEXSB8IFszMl0gfCBbMENdID0+CiAgICAgICAgICAgICAqICAgMTU5ICsgMjc5MDQgKyAzMjc2ODAwICsgMjAxMzI2NTkyID0+CiAgICAgICAgICAgICAqICAgMjA0NjMxNDU1CiAgICAgICAgICAgICAqLwogICAgICAgICAgICAkdmFsICY9IDA7CiAgICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRieXRlczsgKyskaSkgewogICAgICAgICAgICAgICAgJHZhbCB8PSBvcmQoJHJhbmRvbUJ5dGVTdHJpbmdbJGldKSA8PCAoJGkgKiA4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIEFwcGx5IG1hc2sKICAgICAgICAgICAgICovCiAgICAgICAgICAgICR2YWwgJj0gJG1hc2s7CiAgICAgICAgICAgICR2YWwgKz0gJHZhbHVlU2hpZnQ7CgogICAgICAgICAgICArKyRhdHRlbXB0czsKICAgICAgICAgICAgLyoqCiAgICAgICAgICAgICAqIElmICR2YWwgb3ZlcmZsb3dzIHRvIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLAogICAgICAgICAgICAgKiAuLi4gb3IgaXMgbGFyZ2VyIHRoYW4gJG1heCwKICAgICAgICAgICAgICogLi4uIG9yIHNtYWxsZXIgdGhhbiAkbWluLAogICAgICAgICAgICAgKiB0aGVuIHRyeSBhZ2Fpbi4KICAgICAgICAgICAgICovCiAgICAgICAgfSB3aGlsZSAoIWlzX2ludCgkdmFsKSB8fCAkdmFsID4gJG1heCB8fCAkdmFsIDwgJG1pbik7CgogICAgICAgIHJldHVybiAoaW50KSR2YWw7CiAgICB9Cn0K]]></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+Cjxwc2FsbQogICAgYXV0b2xvYWRlcj0icHNhbG0tYXV0b2xvYWQucGhwIgogICAgc3RvcE9uRmlyc3RFcnJvcj0iZmFsc2UiCiAgICB1c2VEb2NibG9ja1R5cGVzPSJ0cnVlIgo+CiAgICA8cHJvamVjdEZpbGVzPgogICAgICAgIDxkaXJlY3RvcnkgbmFtZT0ibGliIiAvPgogICAgPC9wcm9qZWN0RmlsZXM+CiAgICA8aXNzdWVIYW5kbGVycz4KICAgICAgICA8SW52YWxpZE9wZXJhbmQgZXJyb3JMZXZlbD0iaW5mbyIgLz4KICAgICAgICA8VW5kZWZpbmVkQ29uc3RhbnQgZXJyb3JMZXZlbD0iaW5mbyIgLz4KICAgICAgICA8TWlzc2luZ1JldHVyblR5cGUgZXJyb3JMZXZlbD0iaW5mbyIgLz4KICAgIDwvaXNzdWVIYW5kbGVycz4KPC9wc2FsbT4K]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTI4Q0JDSFMyNTYuCiAqLwpmaW5hbCBjbGFzcyBBMTI4Q0JDSFMyNTYgZXh0ZW5kcyBBRVNDQkNIUwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiAyNTY7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExMjhDQkMtSFMyNTYnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A128GCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTI4R0NNLgogKi8KZmluYWwgY2xhc3MgQTEyOEdDTSBleHRlbmRzIEFFU0dDTQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKQogICAgewogICAgICAgIHJldHVybiAxMjg7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExMjhHQ00nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A192CBCHS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTkyQ0JDSFMzODQuCiAqLwpmaW5hbCBjbGFzcyBBMTkyQ0JDSFMzODQgZXh0ZW5kcyBBRVNDQkNIUwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiAzODQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExOTJDQkMtSFMzODQnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A192GCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMTkyR0NNLgogKi8KZmluYWwgY2xhc3MgQTE5MkdDTSBleHRlbmRzIEFFU0dDTQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKQogICAgewogICAgICAgIHJldHVybiAxOTI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExOTJHQ00nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A256CBCHS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMjU2Q0JDSFM1MTIuCiAqLwpmaW5hbCBjbGFzcyBBMjU2Q0JDSFM1MTIgZXh0ZW5kcyBBRVNDQkNIUwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiA1MTI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0EyNTZDQkMtSFM1MTInOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/A256GCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCi8qKgogKiBDbGFzcyBBMjU2R0NNLgogKi8KZmluYWwgY2xhc3MgQTI1NkdDTSBleHRlbmRzIEFFU0dDTQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKQogICAgewogICAgICAgIHJldHVybiAyNTY7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0EyNTZHQ00nOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/AESCBCHS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CgphYnN0cmFjdCBjbGFzcyBBRVNDQkNIUyBpbXBsZW1lbnRzIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5jcnlwdENvbnRlbnQoJGRhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciwgJiR0YWcpCiAgICB7CiAgICAgICAgJGsgPSBtYl9zdWJzdHIoJGNlaywgbWJfc3RybGVuKCRjZWssICc4Yml0JykgLyAyLCBudWxsLCAnOGJpdCcpOwoKICAgICAgICAkY3lwaGVydGV4dCA9IG9wZW5zc2xfZW5jcnlwdCgkZGF0YSwgJHRoaXMtPmdldE1vZGUoJGspLCAkaywgT1BFTlNTTF9SQVdfREFUQSwgJGl2KTsKCiAgICAgICAgJHRhZyA9ICR0aGlzLT5jYWxjdWxhdGVBdXRoZW50aWNhdGlvblRhZygkY3lwaGVydGV4dCwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyKTsKCiAgICAgICAgcmV0dXJuICRjeXBoZXJ0ZXh0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGNlawogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRpdgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRhYWQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGFhZAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICR0YWcKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVjcnlwdENvbnRlbnQoJGRhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciwgJHRhZykKICAgIHsKICAgICAgICBBc3NlcnRpb246OnRydWUoCiAgICAgICAgICAgICR0aGlzLT5pc1RhZ1ZhbGlkKCRkYXRhLCAkY2VrLCAkaXYsICRhYWQsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXIsICR0YWcpLAogICAgICAgICAgICAnVW5hYmxlIHRvIHZlcmlmeSB0aGUgdGFnLicKICAgICAgICApOwoKICAgICAgICAkayA9IG1iX3N1YnN0cigkY2VrLCBtYl9zdHJsZW4oJGNlaywgJzhiaXQnKSAvIDIsIG51bGwsICc4Yml0Jyk7CgogICAgICAgIHJldHVybiBvcGVuc3NsX2RlY3J5cHQoJGRhdGEsIHNlbGY6OmdldE1vZGUoJGspLCAkaywgT1BFTlNTTF9SQVdfREFUQSwgJGl2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkZW5jcnlwdGVkX2RhdGEKICAgICAqIEBwYXJhbSAkY2VrCiAgICAgKiBAcGFyYW0gJGl2CiAgICAgKiBAcGFyYW0gJGFhZAogICAgICogQHBhcmFtIHN0cmluZyAkZW5jb2RlZF9oZWFkZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQXV0aGVudGljYXRpb25UYWcoJGVuY3J5cHRlZF9kYXRhLCAkY2VrLCAkaXYsICRhYWQsICRlbmNvZGVkX2hlYWRlcikKICAgIHsKICAgICAgICAkY2FsY3VsYXRlZF9hYWQgPSAkZW5jb2RlZF9oZWFkZXI7CiAgICAgICAgaWYgKG51bGwgIT09ICRhYWQpIHsKICAgICAgICAgICAgJGNhbGN1bGF0ZWRfYWFkIC49ICcuJy4kYWFkOwogICAgICAgIH0KICAgICAgICAkbWFjX2tleSA9IG1iX3N1YnN0cigkY2VrLCAwLCBtYl9zdHJsZW4oJGNlaywgJzhiaXQnKSAvIDIsICc4Yml0Jyk7CiAgICAgICAgJGF1dGhfZGF0YV9sZW5ndGggPSBtYl9zdHJsZW4oJGVuY29kZWRfaGVhZGVyLCAnOGJpdCcpOwoKICAgICAgICAkc2VjdXJlZF9pbnB1dCA9IGltcGxvZGUoJycsIFsKICAgICAgICAgICAgJGNhbGN1bGF0ZWRfYWFkLAogICAgICAgICAgICAkaXYsCiAgICAgICAgICAgICRlbmNyeXB0ZWRfZGF0YSwKICAgICAgICAgICAgcGFjaygnTjInLCAoJGF1dGhfZGF0YV9sZW5ndGggLyAyMTQ3NDgzNjQ3KSAqIDgsICgkYXV0aF9kYXRhX2xlbmd0aCAlIDIxNDc0ODM2NDcpICogOCksIC8vIHN0cl9wYWQoZGVjaGV4KCRhdXRoX2RhdGFfbGVuZ3RoKSwgNCwgIjAiLCBTVFJfUEFEX0xFRlQpCiAgICAgICAgXSk7CiAgICAgICAgJGhhc2ggPSBoYXNoX2htYWMoJHRoaXMtPmdldEhhc2hBbGdvcml0aG0oKSwgJHNlY3VyZWRfaW5wdXQsICRtYWNfa2V5LCB0cnVlKTsKCiAgICAgICAgcmV0dXJuICBtYl9zdWJzdHIoJGhhc2gsIDAsIG1iX3N0cmxlbigkaGFzaCwgJzhiaXQnKSAvIDIsICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGF1dGhlbnRpY2F0aW9uX3RhZwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbmNvZGVkX2hlYWRlcgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbmNyeXB0ZWRfZGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRjZWsKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkaXYKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkYWFkCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBpc1RhZ1ZhbGlkKCRlbmNyeXB0ZWRfZGF0YSwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9oZWFkZXIsICRhdXRoZW50aWNhdGlvbl90YWcpCiAgICB7CiAgICAgICAgcmV0dXJuICRhdXRoZW50aWNhdGlvbl90YWcgPT09ICR0aGlzLT5jYWxjdWxhdGVBdXRoZW50aWNhdGlvblRhZygkZW5jcnlwdGVkX2RhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfaGVhZGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SVZTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMTI4OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkawogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0TW9kZSgkaykKICAgIHsKICAgICAgICByZXR1cm4gJ2Flcy0nLig4ICogbWJfc3RybGVuKCRrLCAnOGJpdCcpKS4nLWNiYyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryption/AESGCM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbjsKCnVzZSBBRVNHQ01cQUVTR0NNIGFzIEdDTTsKdXNlIEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOwoKYWJzdHJhY3QgY2xhc3MgQUVTR0NNIGltcGxlbWVudHMgQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0Q29udGVudCgkZGF0YSwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyLCAmJHRhZykKICAgIHsKICAgICAgICAkY2FsY3VsYXRlZF9hYWQgPSAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyOwogICAgICAgIGlmIChudWxsICE9PSAkYWFkKSB7CiAgICAgICAgICAgICRjYWxjdWxhdGVkX2FhZCAuPSAnLicuJGFhZDsKICAgICAgICB9CgogICAgICAgIGxpc3QoJGN5cGhlcnRleHQsICR0YWcpID0gR0NNOjplbmNyeXB0KCRjZWssICRpdiwgJGRhdGEsICRjYWxjdWxhdGVkX2FhZCk7CgogICAgICAgIHJldHVybiAkY3lwaGVydGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqICB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0Q29udGVudCgkZGF0YSwgJGNlaywgJGl2LCAkYWFkLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVyLCAkdGFnKQogICAgewogICAgICAgICRjYWxjdWxhdGVkX2FhZCA9ICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXI7CiAgICAgICAgaWYgKG51bGwgIT09ICRhYWQpIHsKICAgICAgICAgICAgJGNhbGN1bGF0ZWRfYWFkIC49ICcuJy4kYWFkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEdDTTo6ZGVjcnlwdCgkY2VrLCAkaXYsICRkYXRhLCAkY2FsY3VsYXRlZF9hYWQsICR0YWcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElWU2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDk2OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFS1NpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0S2V5U2l6ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleVNpemUoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/ContentEncryptionAlgorithmInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSBleHRlbmRzIEpXQUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEVuY3J5cHQgZGF0YS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGRhdGEgICAgICAgICAgICAgICAgICAgICBUaGUgZGF0YSB0byBlbmNyeXB0CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGNlayAgICAgICAgICAgICAgICAgICAgICBUaGUgY29udGVudCBlbmNyeXB0aW9uIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRpdiAgICAgICAgICAgICAgICAgICAgICAgVGhlIEluaXRpYWxpemF0aW9uIFZlY3RvcgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRhYWQgICAgICAgICAgICAgICAgICAgICAgQWRkaXRpb25hbCBBZGRpdGlvbmFsIEF1dGhlbnRpY2F0ZWQgRGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXIgVGhlIFByb3RlY3RlZCBIZWFkZXIgZW5jb2RlZCBpbiBCYXNlNjRVcmwKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdGFnICAgICAgICAgICAgICAgICAgICAgIFRhZwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNyeXB0ZWQgZGF0YQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5jcnlwdENvbnRlbnQoJGRhdGEsICRjZWssICRpdiwgJGFhZCwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciwgJiR0YWcpOwoKICAgIC8qKgogICAgICogRGVjcnlwdCBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZGF0YSAgICAgICAgICAgICAgICAgICAgIFRoZSBkYXRhIHRvIGRlY3J5cHQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkY2VrICAgICAgICAgICAgICAgICAgICAgIFRoZSBjb250ZW50IGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGl2ICAgICAgICAgICAgICAgICAgICAgICBUaGUgSW5pdGlhbGl6YXRpb24gVmVjdG9yCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGFhZCAgICAgICAgICAgICAgICAgICAgICBBZGRpdGlvbmFsIEFkZGl0aW9uYWwgQXV0aGVudGljYXRlZCBEYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlciBUaGUgUHJvdGVjdGVkIEhlYWRlciBlbmNvZGVkIGluIEJhc2U2NFVybAogICAgICogQHBhcmFtIHN0cmluZyAgICAgICR0YWcgICAgICAgICAgICAgICAgICAgICAgVGFnCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRDb250ZW50KCRkYXRhLCAkY2VrLCAkaXYsICRhYWQsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXIsICR0YWcpOwoKICAgIC8qKgogICAgICogQHJldHVybiBpbnR8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SVZTaXplKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q0VLU2l6ZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/JWAInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBKV0FJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhbGdvcml0aG0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/JWAManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCi8qKgogKiBDbGFzcyBKV0FNYW5hZ2VyLgogKi8KZmluYWwgY2xhc3MgSldBTWFuYWdlciBpbXBsZW1lbnRzIEpXQU1hbmFnZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAkYWxnb3JpdGhtcyA9IFtdOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNBbGdvcml0aG1TdXBwb3J0ZWQoJGFsZ29yaXRobSkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRoaXMtPmdldEFsZ29yaXRobSgkYWxnb3JpdGhtKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWxnb3JpdGhtczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxpc3RBbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5cygkdGhpcy0+Z2V0QWxnb3JpdGhtcygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobSgkYWxnb3JpdGhtKQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRhbGdvcml0aG0sICR0aGlzLT5hbGdvcml0aG1zKSA/ICR0aGlzLT5hbGdvcml0aG1zWyRhbGdvcml0aG1dIDogbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEFsZ29yaXRobShKV0FJbnRlcmZhY2UgJGFsZ29yaXRobSkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5pc0FsZ29yaXRobVN1cHBvcnRlZCgkYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCkpKSB7CiAgICAgICAgICAgICR0aGlzLT5hbGdvcml0aG1zWyRhbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKV0gPSAkYWxnb3JpdGhtOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFtAaW5oZXJpdGRvY30uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVBbGdvcml0aG0oJGFsZ29yaXRobSkKICAgIHsKICAgICAgICBpZiAoJGFsZ29yaXRobSBpbnN0YW5jZW9mIEpXQUludGVyZmFjZSkgewogICAgICAgICAgICAkbmFtZSA9ICRhbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKTsKICAgICAgICB9IGVsc2VpZiAoaXNfc3RyaW5nKCRhbGdvcml0aG0pKSB7CiAgICAgICAgICAgICRuYW1lID0gJGFsZ29yaXRobTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIEpXQUludGVyZmFjZSBvYmplY3QuJyk7CiAgICAgICAgfQogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRuYW1lLCAkdGhpcy0+YWxnb3JpdGhtcykpIHsKICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmFsZ29yaXRobXNbJG5hbWVdKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/JWAManagerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBKV0FNYW5hZ2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wgUmV0dXJucyB0cnVlIGlmIHRoZSBhbGdvcml0aG0gaXMgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0FsZ29yaXRobVN1cHBvcnRlZCgkYWxnb3JpdGhtKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsZ29yaXRobSBUaGUgYWxnb3JpdGhtCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxBbGdvcml0aG1cSldBSW50ZXJmYWNlfG51bGwgUmV0dXJucyBKV0FJbnRlcmZhY2Ugb2JqZWN0IGlmIHRoZSBhbGdvcml0aG0gaXMgc3VwcG9ydGVkLCBlbHNlIG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobSgkYWxnb3JpdGhtKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcQWxnb3JpdGhtXEpXQUludGVyZmFjZVtdIFJldHVybnMgdGhlIGxpc3Qgb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10gUmV0dXJucyB0aGUgbGlzdCBvZiBuYW1lcyBvZiBzdXBwb3J0ZWQgYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGlzdEFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxBbGdvcml0aG1cSldBSW50ZXJmYWNlICRhbGdvcml0aG0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEFsZ29yaXRobShKV0FJbnRlcmZhY2UgJGFsZ29yaXRobSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUFsZ29yaXRobSgkYWxnb3JpdGhtKTsKfQo=]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIEExMjhHQ01LVy4KICovCmZpbmFsIGNsYXNzIEExMjhHQ01LVyBleHRlbmRzIEFFU0dDTUtXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDEyODsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnQTEyOEdDTUtXJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A128KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExMjhLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEExMjhLVy4KICovCmZpbmFsIGNsYXNzIEExMjhLVyBleHRlbmRzIEFFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExMjhLVyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRLZXlTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMTY7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A192GCMKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIEExOTJHQ01LVy4KICovCmZpbmFsIGNsYXNzIEExOTJHQ01LVyBleHRlbmRzIEFFU0dDTUtXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE5MjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnQTE5MkdDTUtXJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A192KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExOTJLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEExOTJLVy4KICovCmZpbmFsIGNsYXNzIEExOTJLVyBleHRlbmRzIEFFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0ExOTJLVyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRLZXlTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMjQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A256GCMKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIEEyNTZHQ01LVy4KICovCmZpbmFsIGNsYXNzIEEyNTZHQ01LVyBleHRlbmRzIEFFU0dDTUtXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDI1NjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnQTI1NkdDTUtXJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/A256KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEEyNTZLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEEyNTZLVy4KICovCmZpbmFsIGNsYXNzIEEyNTZLVyBleHRlbmRzIEFFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0EyNTZLVyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRLZXlTaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gMzI7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/AESGCMKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0dDTVxBRVNHQ007CnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKCi8qKgogKiBDbGFzcyBBRVNHQ01LVy4KICovCmFic3RyYWN0IGNsYXNzIEFFU0dDTUtXIGltcGxlbWVudHMgS2V5V3JhcHBpbmdJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cmFwS2V5KEpXS0ludGVyZmFjZSAka2V5LCAkY2VrLCBhcnJheSAkY29tcGxldGVfaGVhZGVycywgYXJyYXkgJiRhZGRpdGlvbmFsX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwogICAgICAgICRrZWsgPSBCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSk7CiAgICAgICAgJGl2ID0gcmFuZG9tX2J5dGVzKDk2IC8gOCk7CiAgICAgICAgJGFkZGl0aW9uYWxfaGVhZGVyc1snaXYnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRpdik7CgogICAgICAgIGxpc3QoJGVuY3J5cHRlZF9jZWssICR0YWcpID0gQUVTR0NNOjplbmNyeXB0KCRrZWssICRpdiwgJGNlaywgbnVsbCk7CiAgICAgICAgJGFkZGl0aW9uYWxfaGVhZGVyc1sndGFnJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkdGFnKTsKCiAgICAgICAgcmV0dXJuICRlbmNyeXB0ZWRfY2VrOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW53cmFwS2V5KEpXS0ludGVyZmFjZSAka2V5LCAkZW5jcnlwdGVkX2NlaywgYXJyYXkgJGhlYWRlcikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgJHRoaXMtPmNoZWNrQWRkaXRpb25hbFBhcmFtZXRlcnMoJGhlYWRlcik7CgogICAgICAgICRrZWsgPSBCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSk7CiAgICAgICAgJHRhZyA9IEJhc2U2NFVybDo6ZGVjb2RlKCRoZWFkZXJbJ3RhZyddKTsKICAgICAgICAkaXYgPSBCYXNlNjRVcmw6OmRlY29kZSgkaGVhZGVyWydpdiddKTsKCiAgICAgICAgcmV0dXJuIEFFU0dDTTo6ZGVjcnlwdCgka2VrLCAkaXYsICRlbmNyeXB0ZWRfY2VrLCBudWxsLCAkdGFnKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEtleU1hbmFnZW1lbnRNb2RlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6TU9ERV9XUkFQOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEpXS0ludGVyZmFjZSAka2V5CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjaGVja0tleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmVxKCRrZXktPmdldCgna3R5JyksICdvY3QnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnaycpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImsiIGlzIG1pc3NpbmcuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhlYWRlcgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tBZGRpdGlvbmFsUGFyYW1ldGVycyhhcnJheSAkaGVhZGVyKQogICAgewogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRoZWFkZXIsICdpdicsICdQYXJhbWV0ZXIgIml2IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRoZWFkZXIsICd0YWcnLCAnUGFyYW1ldGVyICJ0YWciIGlzIG1pc3NpbmcuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/AESKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKLyoqCiAqIENsYXNzIEFFU0tXLgogKi8KYWJzdHJhY3QgY2xhc3MgQUVTS1cgaW1wbGVtZW50cyBLZXlXcmFwcGluZ0ludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdyYXBLZXkoSldLSW50ZXJmYWNlICRrZXksICRjZWssIGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVycykKICAgIHsKICAgICAgICAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgRGlyIGltcGxlbWVudHMgRGlyZWN0RW5jcnlwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENFSyhKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmVxKCRrZXktPmdldCgna3R5JyksICdvY3QnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnaycpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImsiIGlzIG1pc3NpbmcuJyk7CgogICAgICAgIHJldHVybiBCYXNlNjRVcmw6OmRlY29kZSgka2V5LT5nZXQoJ2snKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ2Rpcic7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlNYW5hZ2VtZW50TW9kZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok1PREVfRElSRUNUOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/DirectEncryptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgRGlyZWN0RW5jcnlwdGlvbkludGVyZmFjZSBleHRlbmRzIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5IFRoZSBrZXkgdXNlZCB0byBnZXQgdGhlIENFSwogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBJZiBrZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWxnb3JpdGhtIG9yIGlmIHRoZSBrZXkgdXNhZ2UgZG9lcyBub3QgYXV0aG9yaXplIHRoZSBvcGVyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgQ0VLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDRUsoSldLSW50ZXJmYWNlICRrZXkpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHES.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxGYWN0b3J5XEpXS0ZhY3Rvcnk7CnVzZSBKb3NlXE9iamVjdFxKV0s7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CnVzZSBKb3NlXFV0aWxcQ29uY2F0S0RGOwp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXEVjREhcRWNESDsKdXNlIE1kYW50ZXJcRWNjXEVjY0ZhY3Rvcnk7CgovKioKICogQ2xhc3MgRUNESEVTLgogKi8KZmluYWwgY2xhc3MgRUNESEVTIGltcGxlbWVudHMgS2V5QWdyZWVtZW50SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWdyZWVtZW50S2V5KCRlbmNyeXB0aW9uX2tleV9sZW5ndGgsICRhbGdvcml0aG0sIEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJGNvbXBsZXRlX2hlYWRlciA9IFtdLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVyX3ZhbHVlcyA9IFtdKQogICAgewogICAgICAgIGlmICgkcmVjaXBpZW50X2tleS0+aGFzKCdkJykpIHsKICAgICAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRyZWNpcGllbnRfa2V5LCB0cnVlKTsKICAgICAgICAgICAgJHByaXZhdGVfa2V5ID0gJHJlY2lwaWVudF9rZXk7CiAgICAgICAgICAgICRwdWJsaWNfa2V5ID0gJHRoaXMtPmdldFB1YmxpY0tleSgkY29tcGxldGVfaGVhZGVyKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJHJlY2lwaWVudF9rZXksIGZhbHNlKTsKICAgICAgICAgICAgJHB1YmxpY19rZXkgPSAkcmVjaXBpZW50X2tleTsKICAgICAgICAgICAgc3dpdGNoICgkcHVibGljX2tleS0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgY2FzZSAnUC01MjEnOgogICAgICAgICAgICAgICAgICAgICRwcml2YXRlX2tleSA9IEpXS0ZhY3Rvcnk6OmNyZWF0ZUVDS2V5KFsnY3J2JyA9PiAkcHVibGljX2tleS0+Z2V0KCdjcnYnKV0pOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnWDI1NTE5JzoKICAgICAgICAgICAgICAgICAgICAkcHJpdmF0ZV9rZXkgPSBKV0tGYWN0b3J5OjpjcmVhdGVPS1BLZXkoWydjcnYnID0+ICdYMjU1MTknXSk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBjdXJ2ZSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQnLCAkcHVibGljX2tleS0+Z2V0KCdjcnYnKSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRlcGsgPSAkcHJpdmF0ZV9rZXktPnRvUHVibGljKCktPmdldEFsbCgpOwogICAgICAgICAgICAkYWRkaXRpb25hbF9oZWFkZXJfdmFsdWVzID0gYXJyYXlfbWVyZ2UoJGFkZGl0aW9uYWxfaGVhZGVyX3ZhbHVlcywgWwogICAgICAgICAgICAgICAgJ2VwaycgPT4gJGVwaywKICAgICAgICAgICAgXSk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6ZXEoJHByaXZhdGVfa2V5LT5nZXQoJ2NydicpLCAkcHVibGljX2tleS0+Z2V0KCdjcnYnKSwgJ0N1cnZlcyBhcmUgZGlmZmVyZW50Jyk7CgogICAgICAgICRhZ3JlZWRfa2V5ID0gJHRoaXMtPmNhbGN1bGF0ZUFncmVlbWVudEtleSgkcHJpdmF0ZV9rZXksICRwdWJsaWNfa2V5KTsKCiAgICAgICAgJGFwdSA9IGFycmF5X2tleV9leGlzdHMoJ2FwdScsICRjb21wbGV0ZV9oZWFkZXIpID8gJGNvbXBsZXRlX2hlYWRlclsnYXB1J10gOiAnJzsKICAgICAgICAkYXB2ID0gYXJyYXlfa2V5X2V4aXN0cygnYXB2JywgJGNvbXBsZXRlX2hlYWRlcikgPyAkY29tcGxldGVfaGVhZGVyWydhcHYnXSA6ICcnOwoKICAgICAgICByZXR1cm4gQ29uY2F0S0RGOjpnZW5lcmF0ZSgkYWdyZWVkX2tleSwgJGFsZ29yaXRobSwgJGVuY3J5cHRpb25fa2V5X2xlbmd0aCwgJGFwdSwgJGFwdik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcHJpdmF0ZV9rZXkKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRwdWJsaWNfa2V5CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBpbnR8c3RyaW5nfHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNhbGN1bGF0ZUFncmVlbWVudEtleShKV0tJbnRlcmZhY2UgJHByaXZhdGVfa2V5LCBKV0tJbnRlcmZhY2UgJHB1YmxpY19rZXkpCiAgICB7CiAgICAgICAgc3dpdGNoICgkcHVibGljX2tleS0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICBjYXNlICdQLTI1Nic6CiAgICAgICAgICAgIGNhc2UgJ1AtMzg0JzoKICAgICAgICAgICAgY2FzZSAnUC01MjEnOgogICAgICAgICAgICAgICAgJHAgPSAkdGhpcy0+Z2V0R2VuZXJhdG9yKCRwcml2YXRlX2tleSk7CgogICAgICAgICAgICAgICAgJHJlY194ID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRUb0dtcCgkcHVibGljX2tleS0+Z2V0KCd4JykpOwogICAgICAgICAgICAgICAgJHJlY195ID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRUb0dtcCgkcHVibGljX2tleS0+Z2V0KCd5JykpOwogICAgICAgICAgICAgICAgJHNlbl9kID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRUb0dtcCgkcHJpdmF0ZV9rZXktPmdldCgnZCcpKTsKCiAgICAgICAgICAgICAgICAkcHJpdl9rZXkgPSAkcC0+Z2V0UHJpdmF0ZUtleUZyb20oJHNlbl9kKTsKICAgICAgICAgICAgICAgICRwdWJfa2V5ID0gJHAtPmdldFB1YmxpY0tleUZyb20oJHJlY194LCAkcmVjX3kpOwoKICAgICAgICAgICAgICAgICRlY2RoID0gbmV3IEVjREgoRWNjRmFjdG9yeTo6Z2V0QWRhcHRlcigpKTsKICAgICAgICAgICAgICAgICRlY2RoLT5zZXRTZW5kZXJLZXkoJHByaXZfa2V5KTsKICAgICAgICAgICAgICAgICRlY2RoLT5zZXRSZWNpcGllbnRLZXkoJHB1Yl9rZXkpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y29udmVydERlY1RvQmluKCRlY2RoLT5jYWxjdWxhdGVTaGFyZWRLZXkoKSk7CiAgICAgICAgICAgIGNhc2UgJ1gyNTUxOSc6CiAgICAgICAgICAgICAgICByZXR1cm4gY3VydmUyNTUxOV9zaGFyZWQoCiAgICAgICAgICAgICAgICAgICAgQmFzZTY0VXJsOjpkZWNvZGUoJHByaXZhdGVfa2V5LT5nZXQoJ2QnKSksCiAgICAgICAgICAgICAgICAgICAgQmFzZTY0VXJsOjpkZWNvZGUoJHB1YmxpY19rZXktPmdldCgneCcpKQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBjdXJ2ZSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQnLCAkcHVibGljX2tleS0+Z2V0KCdjcnYnKSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnRUNESC1FUyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlNYW5hZ2VtZW50TW9kZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok1PREVfQUdSRUVNRU5UOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRjb21wbGV0ZV9oZWFkZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoYXJyYXkgJGNvbXBsZXRlX2hlYWRlcikKICAgIHsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkY29tcGxldGVfaGVhZGVyLCAnZXBrJywgJ1RoZSBoZWFkZXIgcGFyYW1ldGVyICJlcGsiIGlzIG1pc3NpbmcnKTsKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJGNvbXBsZXRlX2hlYWRlclsnZXBrJ10sICdUaGUgaGVhZGVyIHBhcmFtZXRlciAiZXBrIiBpcyBub3QgYW4gYXJyYXkgb2YgcGFyYW1ldGVyJyk7CgogICAgICAgICRwdWJsaWNfa2V5ID0gbmV3IEpXSygkY29tcGxldGVfaGVhZGVyWydlcGsnXSk7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRwdWJsaWNfa2V5LCBmYWxzZSk7CgogICAgICAgIHJldHVybiAkcHVibGljX2tleTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICRpc19wcml2YXRlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXksICRpc19wcml2YXRlKQogICAgewogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ3gnKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJ4IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2NydicpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImNydiIgaXMgbWlzc2luZy4nKTsKCiAgICAgICAgc3dpdGNoICgka2V5LT5nZXQoJ2NydicpKSB7CiAgICAgICAgICAgIGNhc2UgJ1AtMjU2JzoKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmVxKCRrZXktPmdldCgna3R5JyksICdFQycsICdXcm9uZyBrZXkgdHlwZS4nKTsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ3knKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJ5IiBpcyBtaXNzaW5nLicpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ1gyNTUxOSc6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmVxKCRrZXktPmdldCgna3R5JyksICdPS1AnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBjdXJ2ZSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQnLCAka2V5LT5nZXQoJ2NydicpKSk7CiAgICAgICAgfQogICAgICAgIGlmICh0cnVlID09PSAkaXNfcHJpdmF0ZSkgewogICAgICAgICAgICBBc3NlcnRpb246OnRydWUoJGtleS0+aGFzKCdkJyksICdUaGUga2V5IHBhcmFtZXRlciAiZCIgaXMgbWlzc2luZy4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSldLSW50ZXJmYWNlICRrZXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0R2VuZXJhdG9yKEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgICRjcnYgPSAka2V5LT5nZXQoJ2NydicpOwoKICAgICAgICBzd2l0Y2ggKCRjcnYpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgcmV0dXJuIEVjY0ZhY3Rvcnk6OmdldE5pc3RDdXJ2ZXMoKS0+Z2VuZXJhdG9yMjU2KCk7CiAgICAgICAgICAgIGNhc2UgJ1AtMzg0JzoKICAgICAgICAgICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjM4NCgpOwogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICByZXR1cm4gRWNjRmFjdG9yeTo6Z2V0TmlzdEN1cnZlcygpLT5nZW5lcmF0b3I1MjEoKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBjdXJ2ZSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQnLCAkY3J2KSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29udmVydEJhc2U2NFRvR21wKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSB1bnBhY2soJ0gqJywgQmFzZTY0VXJsOjpkZWNvZGUoJHZhbHVlKSk7CgogICAgICAgIHJldHVybiBnbXBfaW5pdCgkdmFsdWVbMV0sIDE2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnREZWNUb0JpbigkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX3N0cnZhbCgkdmFsdWUsIDEwKTsKICAgICAgICAkYWRhcHRlciA9IEVjY0ZhY3Rvcnk6OmdldEFkYXB0ZXIoKTsKCiAgICAgICAgcmV0dXJuIGhleDJiaW4oJGFkYXB0ZXItPmRlY0hleCgkdmFsdWUpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESA128KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExMjhLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEVDREhFU0ExMjhLVy4KICovCmZpbmFsIGNsYXNzIEVDREhFU0ExMjhLVyBleHRlbmRzIEVDREhFU0FFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VDREgtRVMrQTEyOEtXJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleUxlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDEyODsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESA192KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExOTJLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEVDREhFU0ExOTJLVy4KICovCmZpbmFsIGNsYXNzIEVDREhFU0ExOTJLVyBleHRlbmRzIEVDREhFU0FFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VDREgtRVMrQTE5MktXJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleUxlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE5MjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESA256KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEEyNTZLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIEVDREhFU0EyNTZLVy4KICovCmZpbmFsIGNsYXNzIEVDREhFU0EyNTZLVyBleHRlbmRzIEVDREhFU0FFU0tXCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0V3JhcHBlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBXcmFwcGVyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0VDREgtRVMrQTI1NktXJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEtleUxlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDI1NjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/ECDHESAESKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKCi8qKgogKiBDbGFzcyBFQ0RIRVNBRVNLVy4KICovCmFic3RyYWN0IGNsYXNzIEVDREhFU0FFU0tXIGltcGxlbWVudHMgS2V5QWdyZWVtZW50V3JhcHBpbmdJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cmFwQWdyZWVtZW50S2V5KEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5LCAkY2VrLCAkZW5jcnlwdGlvbl9rZXlfbGVuZ3RoLCBhcnJheSAkY29tcGxldGVfaGVhZGVyLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVyX3ZhbHVlcykKICAgIHsKICAgICAgICAkZWNkaF9lcyA9IG5ldyBFQ0RIRVMoKTsKCiAgICAgICAgJGFncmVlbWVudF9rZXkgPSAkZWNkaF9lcy0+Z2V0QWdyZWVtZW50S2V5KCR0aGlzLT5nZXRLZXlMZW5ndGgoKSwgJHRoaXMtPmdldEFsZ29yaXRobU5hbWUoKSwgJHJlY2VpdmVyX2tleSwgJGNvbXBsZXRlX2hlYWRlciwgJGFkZGl0aW9uYWxfaGVhZGVyX3ZhbHVlcyk7CiAgICAgICAgJHdyYXBwZXIgPSAkdGhpcy0+Z2V0V3JhcHBlcigpOwoKICAgICAgICByZXR1cm4gJHdyYXBwZXItPndyYXAoJGFncmVlbWVudF9rZXksICRjZWspOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW53cmFwQWdyZWVtZW50S2V5KEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5LCAkZW5jcnlwdGVkX2NlaywgJGVuY3J5cHRpb25fa2V5X2xlbmd0aCwgYXJyYXkgJGNvbXBsZXRlX2hlYWRlcikKICAgIHsKICAgICAgICAkZWNkaF9lcyA9IG5ldyBFQ0RIRVMoKTsKCiAgICAgICAgJGFncmVlbWVudF9rZXkgPSAkZWNkaF9lcy0+Z2V0QWdyZWVtZW50S2V5KCR0aGlzLT5nZXRLZXlMZW5ndGgoKSwgJHRoaXMtPmdldEFsZ29yaXRobU5hbWUoKSwgJHJlY2VpdmVyX2tleSwgJGNvbXBsZXRlX2hlYWRlcik7CiAgICAgICAgJHdyYXBwZXIgPSAkdGhpcy0+Z2V0V3JhcHBlcigpOwoKICAgICAgICByZXR1cm4gJHdyYXBwZXItPnVud3JhcCgkYWdyZWVtZW50X2tleSwgJGVuY3J5cHRlZF9jZWspOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5TWFuYWdlbWVudE1vZGUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpNT0RFX1dSQVA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxBRVNLV1xBMTI4S1d8XEFFU0tXXEExOTJLV3xcQUVTS1dcQTI1NktXCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRXcmFwcGVyKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5TGVuZ3RoKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyAgreementInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5QWdyZWVtZW50SW50ZXJmYWNlIGV4dGVuZHMgS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0aW9uX2tleV9sZW5ndGggICAgU2l6ZSBvZiB0aGUga2V5IGV4cGVjdGVkIGZvciB0aGUgYWxnb3JpdGhtIHVzZWQgZm9yIGRhdGEgZW5jcnlwdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGFsZ29yaXRobSAgICAgICAgICAgICAgICBUaGUgYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSAgICAgICAgICAgIFRoZSByZWNpcGllbnQga2V5LiBJZiB0aGUga2V5IGlzIHB1YmxpYywgdGhlbiBhbiBlcGhlbWVyYWwgcHJpdmF0ZSBrZXkgd2lsbCBiZSBjcmVhdGVkLCBlbHNlIHdpbGwgdHJ5IHRvIGZpbmQgdGhlIGVwaGVtZXJhbCBrZXkgaW4gdGhlIGhlYWRlcgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlciAgICAgICAgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcl92YWx1ZXMgU2V0IGFkZGl0aW9uYWwgaGVhZGVyIHZhbHVlcyBpZiBuZWVkZWQKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBZ3JlZW1lbnRLZXkoJGVuY3J5cHRpb25fa2V5X2xlbmd0aCwgJGFsZ29yaXRobSwgSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5LCBhcnJheSAkY29tcGxldGVfaGVhZGVyID0gW10sIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJfdmFsdWVzID0gW10pOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyAgreementWrappingInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5QWdyZWVtZW50V3JhcHBpbmdJbnRlcmZhY2UgZXh0ZW5kcyBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogV3JhcCB0aGUgYWdyZWVtZW50IGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5ICAgICAgICAgICAgIFRoZSByZWNlaXZlcidzIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGNlayAgICAgICAgICAgICAgICAgICAgICBUaGUgQ0VLIHRvIHdyYXAKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0aW9uX2tleV9sZW5ndGggICAgU2l6ZSBvZiB0aGUga2V5IGV4cGVjdGVkIGZvciB0aGUgYWxnb3JpdGhtIHVzZWQgZm9yIGRhdGEgZW5jcnlwdGlvbgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlciAgICAgICAgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcl92YWx1ZXMgU2V0IGFkZGl0aW9uYWwgaGVhZGVyIHZhbHVlcyBpZiBuZWVkZWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGVuY3J5cHRlZCBDRUsKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdyYXBBZ3JlZW1lbnRLZXkoSldLSW50ZXJmYWNlICRyZWNlaXZlcl9rZXksICRjZWssICRlbmNyeXB0aW9uX2tleV9sZW5ndGgsIGFycmF5ICRjb21wbGV0ZV9oZWFkZXIsIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJfdmFsdWVzKTsKCiAgICAvKioKICAgICAqIFVud3JhcCB0aGUgYWdyZWVtZW50IGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5ICAgICAgICAgIFRoZSByZWNlaXZlcidzIGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGVuY3J5cHRlZF9jZWsgICAgICAgICBUaGUgZW5jcnlwdGVkIENFSwogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgJGVuY3J5cHRpb25fa2V5X2xlbmd0aCBTaXplIG9mIHRoZSBrZXkgZXhwZWN0ZWQgZm9yIHRoZSBhbGdvcml0aG0gdXNlZCBmb3IgZGF0YSBlbmNyeXB0aW9uCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkY29tcGxldGVfaGVhZGVyICAgICAgIFRoZSBjb21wbGV0ZSBoZWFkZXIgb2YgdGhlIEpXVAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBJZiBrZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWxnb3JpdGhtIG9yIGlmIHRoZSBrZXkgdXNhZ2UgZG9lcyBub3QgYXV0aG9yaXplIHRoZSBvcGVyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZGVjcnlwdGVkIENFSwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW53cmFwQWdyZWVtZW50S2V5KEpXS0ludGVyZmFjZSAkcmVjZWl2ZXJfa2V5LCAkZW5jcnlwdGVkX2NlaywgJGVuY3J5cHRpb25fa2V5X2xlbmd0aCwgYXJyYXkgJGNvbXBsZXRlX2hlYWRlcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyEncryptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5RW5jcnlwdGlvbkludGVyZmFjZSBleHRlbmRzIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBFbmNyeXB0IHRoZSBDRUsuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSAgICAgICAgICAgICAgICBUaGUga2V5IHVzZWQgdG8gd3JhcCB0aGUgQ0VLCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkY2VrICAgICAgICAgICAgICAgIFRoZSBDRUsgdG8gZW5jcnlwdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMgQWRkaXRpb25hbCBoZWFkZXJzCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uIElmIGtleSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhbGdvcml0aG0gb3IgaWYgdGhlIGtleSB1c2FnZSBkb2VzIG5vdCBhdXRob3JpemUgdGhlIG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBlbmNyeXB0ZWQgQ0VLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0S2V5KEpXS0ludGVyZmFjZSAka2V5LCAkY2VrLCBhcnJheSAkY29tcGxldGVfaGVhZGVycywgYXJyYXkgJiRhZGRpdGlvbmFsX2hlYWRlcnMpOwoKICAgIC8qKgogICAgICogRGVjcnlwdCBkZSBDRUsuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSAgICAgICAgICAgVGhlIGtleSB1c2VkIHRvIHdyYXAgdGhlIENFSwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGVuY3J5cHRlZF9jZWsgVGhlIENFSyB0byBkZWNyeXB0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyICAgICAgICBUaGUgY29tcGxldGUgaGVhZGVyIG9mIHRoZSBKV1QKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGRlY3J5cHRlZCBDRUsKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRLZXkoSldLSW50ZXJmYWNlICRrZXksICRlbmNyeXB0ZWRfY2VrLCBhcnJheSAkaGVhZGVyKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/KeyWrappingInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgppbnRlcmZhY2UgS2V5V3JhcHBpbmdJbnRlcmZhY2UgZXh0ZW5kcyBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogRW5jcnlwdCB0aGUgQ0VLLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkgICAgICAgICAgICAgICAgVGhlIGtleSB1c2VkIHRvIHdyYXAgdGhlIENFSwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGNlayAgICAgICAgICAgICAgICBUaGUgQ0VLIHRvIGVuY3J5cHQKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRjb21wbGV0ZV9oZWFkZXJzICAgVGhlIGNvbXBsZXRlIGhlYWRlciBvZiB0aGUgSldUCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkYWRkaXRpb25hbF9oZWFkZXJzIFRoZSBjb21wbGV0ZSBoZWFkZXIgb2YgdGhlIEpXVAogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbiBJZiBrZXkgZG9lcyBub3Qgc3VwcG9ydCB0aGUgYWxnb3JpdGhtIG9yIGlmIHRoZSBrZXkgdXNhZ2UgZG9lcyBub3QgYXV0aG9yaXplIHRoZSBvcGVyYXRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZW5jcnlwdGVkIENFSwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JhcEtleShKV0tJbnRlcmZhY2UgJGtleSwgJGNlaywgYXJyYXkgJGNvbXBsZXRlX2hlYWRlcnMsIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJzKTsKCiAgICAvKioKICAgICAqIERlY3J5cHQgZGUgQ0VLLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkgICAgICAgICAgICAgIFRoZSBrZXkgdXNlZCB0byB3cmFwIHRoZSBDRUsKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0ZWRfY2VrICAgIFRoZSBDRUsgdG8gZGVjcnlwdAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgVGhlIGNvbXBsZXRlIGhlYWRlciBvZiB0aGUgSldUCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uIElmIGtleSBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhbGdvcml0aG0gb3IgaWYgdGhlIGtleSB1c2FnZSBkb2VzIG5vdCBhdXRob3JpemUgdGhlIG9wZXJhdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBkZWNyeXB0ZWQgQ0VLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bndyYXBLZXkoSldLSW50ZXJmYWNlICRrZXksICRlbmNyeXB0ZWRfY2VrLCBhcnJheSAkY29tcGxldGVfaGVhZGVycyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/PBES2AESKW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKLyoqCiAqIENsYXNzIFBCRVMyQUVTS1cuCiAqLwphYnN0cmFjdCBjbGFzcyBQQkVTMkFFU0tXIGltcGxlbWVudHMgS2V5V3JhcHBpbmdJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRzYWx0X3NpemU7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRuYl9jb3VudDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJHNhbHRfc2l6ZQogICAgICogQHBhcmFtIGludCAkbmJfY291bnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzYWx0X3NpemUgPSA2NCwgJG5iX2NvdW50ID0gNDA5NikKICAgIHsKICAgICAgICAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExMjhLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIFBCRVMySFMyNTZBMTI4S1cuCiAqLwpmaW5hbCBjbGFzcyBQQkVTMkhTMjU2QTEyOEtXIGV4dGVuZHMgUEJFUzJBRVNLVwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdyYXBwZXIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgV3JhcHBlcigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdzaGEyNTYnOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE2OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdQQkVTMi1IUzI1NitBMTI4S1cnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/PBES2HS384A192KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEExOTJLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIFBCRVMySFMzODRBMTkyS1cuCiAqLwpmaW5hbCBjbGFzcyBQQkVTMkhTMzg0QTE5MktXIGV4dGVuZHMgUEJFUzJBRVNLVwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdyYXBwZXIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgV3JhcHBlcigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdzaGEzODQnOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDI0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdQQkVTMi1IUzM4NCtBMTkyS1cnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/PBES2HS512A256KW.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFFU0tXXEEyNTZLVyBhcyBXcmFwcGVyOwoKLyoqCiAqIENsYXNzIFBCRVMySFM1MTJBMjU2S1cuCiAqLwpmaW5hbCBjbGFzcyBQQkVTMkhTNTEyQTI1NktXIGV4dGVuZHMgUEJFUzJBRVNLVwp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFdyYXBwZXIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgV3JhcHBlcigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdzaGE1MTInOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0S2V5U2l6ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIDMyOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdQQkVTMi1IUzUxMitBMjU2S1cnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/RSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBKb3NlXEtleUNvbnZlcnRlclxSU0FLZXk7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CnVzZSBKb3NlXFV0aWxcUlNBIGFzIEpvc2VSU0E7CgovKioKICogQ2xhc3MgUlNBLgogKi8KYWJzdHJhY3QgY2xhc3MgUlNBIGltcGxlbWVudHMgS2V5RW5jcnlwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIE9wdGltYWwgQXN5bW1ldHJpYyBFbmNyeXB0aW9uIFBhZGRpbmcgKE9BRVApLgogICAgICovCiAgICBjb25zdCBFTkNSWVBUSU9OX09BRVAgPSAxOwoKICAgIC8qKgogICAgICogVXNlIFBLQ1MjMSBwYWRkaW5nLgogICAgICovCiAgICBjb25zdCBFTkNSWVBUSU9OX1BLQ1MxID0gMjsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHRLZXkoSldLSW50ZXJmYWNlICRrZXksICRjZWssIGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzLCBhcnJheSAmJGFkZGl0aW9uYWxfaGVhZGVycykKICAgIHsKICAgICAgICAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIFJTQTE1LgogKi8KZmluYWwgY2xhc3MgUlNBMTUgZXh0ZW5kcyBSU0EKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNyeXB0aW9uTW9kZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OkVOQ1JZUFRJT05fUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SGFzaEFsZ29yaXRobSgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1JTQTFfNSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/RSAOAEP.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIFJTQU9BRVAuCiAqLwpmaW5hbCBjbGFzcyBSU0FPQUVQIGV4dGVuZHMgUlNBCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jcnlwdGlvbk1vZGUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpFTkNSWVBUSU9OX09BRVA7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCkKICAgIHsKICAgICAgICByZXR1cm4gJ3NoYTEnOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSU0EtT0FFUCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryption/RSAOAEP256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uOwoKLyoqCiAqIENsYXNzIFJTQU9BRVAyNTYuCiAqLwpmaW5hbCBjbGFzcyBSU0FPQUVQMjU2IGV4dGVuZHMgUlNBCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5jcnlwdGlvbk1vZGUoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpFTkNSWVBUSU9OX09BRVA7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCkKICAgIHsKICAgICAgICByZXR1cm4gJ3NoYTI1Nic7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ1JTQS1PQUVQLTI1Nic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/KeyEncryptionAlgorithmInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCmludGVyZmFjZSBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlIGV4dGVuZHMgSldBSW50ZXJmYWNlCnsKICAgIGNvbnN0IE1PREVfRElSRUNUID0gJ2Rpcic7CiAgICBjb25zdCBNT0RFX0VOQ1JZUFQgPSAnZW5jJzsKICAgIGNvbnN0IE1PREVfV1JBUCA9ICd3cmFwJzsKICAgIGNvbnN0IE1PREVfQUdSRUVNRU5UID0gJ2FncmVlJzsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlNYW5hZ2VtZW50TW9kZSgpOwp9Cg==]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBGR1xBU04xXE9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXEVDS2V5Owp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwp1c2UgTWRhbnRlclxFY2NcQ3J5cHRvXFNpZ25hdHVyZVxTaWduYXR1cmU7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgTWRhbnRlclxFY2NcUmFuZG9tXFJhbmRvbUdlbmVyYXRvckZhY3Rvcnk7CgovKioKICogQ2xhc3MgRUNEU0EuCiAqLwphYnN0cmFjdCBjbGFzcyBFQ0RTQSBpbXBsZW1lbnRzIFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLSW50ZXJmYWNlICRrZXksICRkYXRhKQogICAgewogICAgICAgICR0aGlzLT5jaGVja0tleSgka2V5KTsKICAgICAgICBBc3NlcnRpb246OnRydWUoJGtleS0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgovKioKICogQ2xhc3MgRWQyNTUxOS4KICovCmNsYXNzIEVkRFNBIGltcGxlbWVudHMgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbihKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2QnKSwgJ1RoZSBrZXkgaXMgbm90IHByaXZhdGUnKTsKCiAgICAgICAgJHNlY3JldCA9IEJhc2U2NFVybDo6ZGVjb2RlKCRrZXktPmdldCgnZCcpKTsKICAgICAgICAkcHVibGljID0gQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCd4JykpOwoKICAgICAgICBzd2l0Y2ggKCRrZXktPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnRWQyNTUxOSc6CiAgICAgICAgICAgICAgICByZXR1cm4gZWQyNTUxOV9zaWduKCRkYXRhLCAkc2VjcmV0LCAkcHVibGljKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBjdXJ2ZScpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEsICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICAkcHVibGljID0gQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCd4JykpOwoKICAgICAgICBzd2l0Y2ggKCRrZXktPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnRWQyNTUxOSc6CiAgICAgICAgICAgICAgICByZXR1cm4gZWQyNTUxOV9zaWduX29wZW4oJGRhdGEsICRwdWJsaWMsICRzaWduYXR1cmUpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGN1cnZlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEpXS0ludGVyZmFjZSAka2V5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgka2V5LT5nZXQoJ2t0eScpLCAnT0tQJywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ3gnKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJ4IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2NydicpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImNydiIgaXMgbWlzc2luZy4nKTsKICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJGtleS0+Z2V0KCdjcnYnKSwgWydFZDI1NTE5J10sICdVbnN1cHBvcnRlZCBjdXJ2ZScpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdFZERTQSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/ES256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKCmZpbmFsIGNsYXNzIEVTMjU2IGV4dGVuZHMgRUNEU0EKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRHZW5lcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjI1NigpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gNjQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdFUzI1Nic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/ES384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKCmZpbmFsIGNsYXNzIEVTMzg0IGV4dGVuZHMgRUNEU0EKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRHZW5lcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjM4NCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gOTY7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdFUzM4NCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/ES512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgTWRhbnRlclxFY2NcRWNjRmFjdG9yeTsKCmZpbmFsIGNsYXNzIEVTNTEyIGV4dGVuZHMgRUNEU0EKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxNZGFudGVyXEVjY1xQcmltaXRpdmVzXEdlbmVyYXRvclBvaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRHZW5lcmF0b3IoKQogICAgewogICAgICAgIHJldHVybiBFY2NGYWN0b3J5OjpnZXROaXN0Q3VydmVzKCktPmdlbmVyYXRvcjUyMSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gMTMyOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnRVM1MTInOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HMAC.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgYWxnb3JpdGhtcyBIUzI1NiwgSFMzODQgYW5kIEhTNTEyOy4KICovCmFic3RyYWN0IGNsYXNzIEhNQUMgaW1wbGVtZW50cyBTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaWduKEpXS0ludGVyZmFjZSAka2V5LCAkaW5wdXQpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICByZXR1cm4gaGFzaF9obWFjKCR0aGlzLT5nZXRIYXNoQWxnb3JpdGhtKCksICRpbnB1dCwgQmFzZTY0VXJsOjpkZWNvZGUoJGtleS0+Z2V0KCdrJykpLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0tJbnRlcmZhY2UgJGtleSwgJGlucHV0LCAkc2lnbmF0dXJlKQogICAgewogICAgICAgIHJldHVybiBoYXNoX2VxdWFscygkdGhpcy0+c2lnbigka2V5LCAkaW5wdXQpLCAkc2lnbmF0dXJlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0tJbnRlcmZhY2UgJGtleQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgka2V5LT5nZXQoJ2t0eScpLCAnb2N0JywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgka2V5LT5oYXMoJ2snKSwgJ1RoZSBrZXkgcGFyYW1ldGVyICJrIiBpcyBtaXNzaW5nLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HS256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgSFMyNTY7LgogKi8KLyoqCiAqIENsYXNzIEhTMjU2LgogKi8KZmluYWwgY2xhc3MgSFMyNTYgZXh0ZW5kcyBITUFDCnsKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0hTMjU2JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgSFMzODQ7LgogKi8KLyoqCiAqIENsYXNzIEhTMzg0LgogKi8KZmluYWwgY2xhc3MgSFMzODQgZXh0ZW5kcyBITUFDCnsKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0hTMzg0JzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/HS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogVGhpcyBjbGFzcyBoYW5kbGVzIHNpZ25hdHVyZXMgdXNpbmcgSE1BQy4KICogSXQgc3VwcG9ydHMgSFM1MTI7LgogKgogKiBDbGFzcyBIUzUxMgogKi8KZmluYWwgY2xhc3MgSFM1MTIgZXh0ZW5kcyBITUFDCnsKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEhhc2hBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBbGdvcml0aG1OYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0hTNTEyJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/None.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIGFuIGFic3RyYWN0IGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUgbm9uZSBhbGdvcml0aG0gKHBsYWludGV4dCkuCiAqLwpmaW5hbCBjbGFzcyBOb25lIGltcGxlbWVudHMgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbihKV0tJbnRlcmZhY2UgJGtleSwgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnkoSldLSW50ZXJmYWNlICRrZXksICRkYXRhLCAkc2lnbmF0dXJlKQogICAgewogICAgICAgIHJldHVybiAkc2lnbmF0dXJlID09PSAkdGhpcy0+c2lnbigka2V5LCAkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSldLSW50ZXJmYWNlICRrZXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIEFzc2VydGlvbjo6ZXEoJGtleS0+Z2V0KCdrdHknKSwgJ25vbmUnLCAnV3Jvbmcga2V5IHR5cGUuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdub25lJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/PS256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUFMyNTYuCiAqLwpmaW5hbCBjbGFzcyBQUzI1NiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUFNTOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnUFMyNTYnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/PS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUFMzODQuCiAqLwpmaW5hbCBjbGFzcyBQUzM4NCBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUFNTOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnUFMzODQnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/PS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUFM1MTIuCiAqLwpmaW5hbCBjbGFzcyBQUzUxMiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUFNTOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnUFM1MTInOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RS256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUlMyNTYuCiAqLwpmaW5hbCBjbGFzcyBSUzI1NiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSUzI1Nic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RS384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUlMzODQuCiAqLwpmaW5hbCBjbGFzcyBSUzM4NCBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSUzM4NCc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RS512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7CgovKioKICogQ2xhc3MgUlM1MTIuCiAqLwpmaW5hbCBjbGFzcyBSUzUxMiBleHRlbmRzIFJTQQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTaWduYXR1cmVNZXRob2QoKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjpTSUdOQVRVUkVfUEtDUzE7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICdSUzUxMic7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/Signature/RSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmU7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKdXNlIEpvc2VcVXRpbFxSU0EgYXMgSm9zZVJTQTsKCi8qKgogKiBDbGFzcyBSU0EuCiAqLwphYnN0cmFjdCBjbGFzcyBSU0EgaW1wbGVtZW50cyBTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBQcm9iYWJpbGlzdGljIFNpZ25hdHVyZSBTY2hlbWUuCiAgICAgKi8KICAgIGNvbnN0IFNJR05BVFVSRV9QU1MgPSAxOwoKICAgIC8qKgogICAgICogVXNlIHRoZSBQS0NTIzEuCiAgICAgKi8KICAgIGNvbnN0IFNJR05BVFVSRV9QS0NTMSA9IDI7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRBbGdvcml0aG0oKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldFNpZ25hdHVyZU1ldGhvZCgpOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5KEpXS0ludGVyZmFjZSAka2V5LCAkaW5wdXQsICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5KCRrZXkpOwoKICAgICAgICAkcHViID0gUlNBS2V5Ojp0b1B1YmxpYyhuZXcgUlNBS2V5KCRrZXkpKTsKCiAgICAgICAgaWYgKCR0aGlzLT5nZXRTaWduYXR1cmVNZXRob2QoKSA9PT0gc2VsZjo6U0lHTkFUVVJFX1BTUykgewogICAgICAgICAgICByZXR1cm4gSm9zZVJTQTo6dmVyaWZ5KCRwdWIsICRpbnB1dCwgJHNpZ25hdHVyZSwgJHRoaXMtPmdldEFsZ29yaXRobSgpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gMSA9PT0gb3BlbnNzbF92ZXJpZnkoJGlucHV0LCAkc2lnbmF0dXJlLCAkcHViLT50b1BFTSgpLCAkdGhpcy0+Z2V0QWxnb3JpdGhtKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLSW50ZXJmYWNlICRrZXksICRpbnB1dCkKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRrZXktPmhhcygnZCcpLCAnVGhlIGtleSBpcyBub3QgYSBwcml2YXRlIGtleScpOwoKICAgICAgICAkcHJpdiA9IG5ldyBSU0FLZXkoJGtleSk7CgogICAgICAgIGlmICgkdGhpcy0+Z2V0U2lnbmF0dXJlTWV0aG9kKCkgPT09IHNlbGY6OlNJR05BVFVSRV9QU1MpIHsKICAgICAgICAgICAgJHNpZ25hdHVyZSA9IEpvc2VSU0E6OnNpZ24oJHByaXYsICRpbnB1dCwgJHRoaXMtPmdldEFsZ29yaXRobSgpKTsKICAgICAgICAgICAgJHJlc3VsdCA9IGlzX3N0cmluZygkc2lnbmF0dXJlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0ID0gb3BlbnNzbF9zaWduKCRpbnB1dCwgJHNpZ25hdHVyZSwgJHByaXYtPnRvUEVNKCksICR0aGlzLT5nZXRBbGdvcml0aG0oKSk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgkcmVzdWx0LCAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBjcmVhdGlvbiBvZiB0aGUgc2lnbmF0dXJlJyk7CgogICAgICAgIHJldHVybiAkc2lnbmF0dXJlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEpXS0ludGVyZmFjZSAka2V5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgka2V5LT5nZXQoJ2t0eScpLCAnUlNBJywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Algorithm/SignatureAlgorithmInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEFsZ29yaXRobTsKCnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CgovKioKICogVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSBhbGdvcml0aG1zIHRoYXQgaGF2ZSBjYXBhYmlsaXRpZXMgdG8gc2lnbiBkYXRhIGFuZCB2ZXJpZnkgYSBzaWduYXR1cmUuCiAqLwppbnRlcmZhY2UgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlIGV4dGVuZHMgSldBSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogU2lnbiB0aGUgaW5wdXQuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleSAgIFRoZSBwcml2YXRlIGtleSB1c2VkIHRvIHNpZ24gdGhlIGRhdGEKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRpbnB1dCBUaGUgaW5wdXQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLSW50ZXJmYWNlICRrZXksICRpbnB1dCk7CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkgICAgICAgVGhlIHByaXZhdGUga2V5IHVzZWQgdG8gc2lnbiB0aGUgZGF0YQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGlucHV0ICAgICBUaGUgaW5wdXQKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byB2ZXJpZnkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24gSWYga2V5IGRvZXMgbm90IHN1cHBvcnQgdGhlIGFsZ29yaXRobSBvciBpZiB0aGUga2V5IHVzYWdlIGRvZXMgbm90IGF1dGhvcml6ZSB0aGUgb3BlcmF0aW9uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnkoSldLSW50ZXJmYWNlICRrZXksICRpbnB1dCwgJHNpZ25hdHVyZSk7Cn0K]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTsKdXNlIEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U7CnVzZSBKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uSW50ZXJmYWNlOwoKdHJhaXQgQ29tbW9uQ2lwaGVyaW5nTWV0aG9kcwp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtczsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXM7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ1tdCiAgICAgKi8KICAgIHByaXZhdGUgJGNvbXByZXNzaW9uX21ldGhvZHM7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMgYXMgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSkgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0pKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtOwogICAgICAgICAgICB9IGVsc2VpZiAoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdQYXJhbWV0ZXIgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBpbnN0YW5jZSBvZiBLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHRoaXMtPmtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMgPSAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZVtdICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtcygkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMpCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcyBhcyAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSkgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG07CiAgICAgICAgICAgIH0gZWxzZWlmICgkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSBpbnN0YW5jZW9mIENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1BhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMgPSAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29tcHJlc3Npb25NZXRob2RzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXByZXNzaW9uX21ldGhvZHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAkY29tcHJlc3Npb25fbWV0aG9kcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldENvbXByZXNzaW9uTWV0aG9kcygkY29tcHJlc3Npb25fbWV0aG9kcykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJGNvbXByZXNzaW9uX21ldGhvZHMgYXMgJGNvbXByZXNzaW9uX21ldGhvZCkgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRjb21wcmVzc2lvbl9tZXRob2QpKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29tcHJlc3Npb25fbWV0aG9kOwogICAgICAgICAgICB9IGVsc2VpZiAoJGNvbXByZXNzaW9uX21ldGhvZCBpbnN0YW5jZW9mIENvbXByZXNzaW9uSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkY29tcHJlc3Npb25fbWV0aG9kLT5nZXRNZXRob2ROYW1lKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignUGFyYW1ldGVyIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gaW5zdGFuY2Ugb2YgQ29tcHJlc3Npb25JbnRlcmZhY2UnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fbWV0aG9kcyA9ICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/CommonSigningMethods.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2U7Cgp0cmFpdCBDb21tb25TaWduaW5nTWV0aG9kcwp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSAkc2lnbmF0dXJlX2FsZ29yaXRobXM7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRTaWduYXR1cmVBbGdvcml0aG1zKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpZ25hdHVyZV9hbGdvcml0aG1zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2VbXSAkc2lnbmF0dXJlX2FsZ29yaXRobXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRTaWduYXR1cmVBbGdvcml0aG1zKCRzaWduYXR1cmVfYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJHNpZ25hdHVyZV9hbGdvcml0aG1zIGFzICRzaWduYXR1cmVfYWxnb3JpdGhtKSB7CiAgICAgICAgICAgIGlmIChpc19zdHJpbmcoJHNpZ25hdHVyZV9hbGdvcml0aG0pKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkc2lnbmF0dXJlX2FsZ29yaXRobTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRzaWduYXR1cmVfYWxnb3JpdGhtIGluc3RhbmNlb2YgU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkc2lnbmF0dXJlX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1BhcmFtZXRlciBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGluc3RhbmNlIG9mIFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICR0aGlzLT5zaWduYXR1cmVfYWxnb3JpdGhtcyA9ICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/EncrypterTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQWxnb3JpdGhtOwp1c2UgSm9zZVxDb21wcmVzc2lvbjsKdXNlIEpvc2VcT2JqZWN0OwoKdHJhaXQgRW5jcnlwdGVyVHJhaXQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkdXNhZ2UKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrS2V5VXNhZ2UoT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5LCAkdXNhZ2UpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGFsZ29yaXRobQogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXlBbGdvcml0aG0oT2JqZWN0XEpXS0ludGVyZmFjZSAka2V5LCAkYWxnb3JpdGhtKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEpXQU1hbmFnZXIoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRDb21wcmVzc2lvbk1hbmFnZXIoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAgICAgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIFxKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50X2tleQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrS2V5cyhBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0sIE9iamVjdFxKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXkpCiAgICB7CiAgICAgICAgJHRoaXMtPmNoZWNrS2V5VXNhZ2UoJHJlY2lwaWVudF9rZXksICdlbmNyeXB0aW9uJyk7CiAgICAgICAgaWYgKCdkaXInICE9PSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCkpIHsKICAgICAgICAgICAgJHRoaXMtPmNoZWNrS2V5QWxnb3JpdGhtKCRyZWNpcGllbnRfa2V5LCAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5jaGVja0tleUFsZ29yaXRobSgkcmVjaXBpZW50X2tleSwgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEFsZ29yaXRobU5hbWUoKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAkandlCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRrZXlfbWFuYWdlbWVudF9tb2RlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhZGRpdGlvbmFsX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRldGVybWluZUNFSyhPYmplY3RcSldFSW50ZXJmYWNlICRqd2UsIEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSwgJGtleV9tYW5hZ2VtZW50X21vZGUsIGFycmF5ICYkYWRkaXRpb25hbF9oZWFkZXJzKQogICAgewogICAgICAgIHN3aXRjaCAoJGtleV9tYW5hZ2VtZW50X21vZGUpIHsKICAgICAgICAgICAgY2FzZSBBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxLZXlFbmNyeXB0aW9uSW50ZXJmYWNlOjpNT0RFX0VOQ1JZUFQ6CiAgICAgICAgICAgIGNhc2UgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5RW5jcnlwdGlvbkludGVyZmFjZTo6TU9ERV9XUkFQOgogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jcmVhdGVDRUsoJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldENFS1NpemUoKSk7CiAgICAgICAgICAgIGNhc2UgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5RW5jcnlwdGlvbkludGVyZmFjZTo6TU9ERV9BR1JFRU1FTlQ6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmVxKDEsICRqd2UtPmNvdW50UmVjaXBpZW50cygpLCAnVW5hYmxlIHRvIGVuY3J5cHQgZm9yIG11bHRpcGxlIHJlY2lwaWVudHMgdXNpbmcga2V5IGFncmVlbWVudCBhbGdvcml0aG1zLicpOwogICAgICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgPSBhcnJheV9tZXJnZSgkandlLT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksICRqd2UtPmdldFNoYXJlZEhlYWRlcnMoKSwgJGp3ZS0+Z2V0UmVjaXBpZW50KDApLT5nZXRIZWFkZXJzKCkpOwogICAgICAgICAgICAgICAgJGFsZ29yaXRobSA9ICR0aGlzLT5maW5kS2V5RW5jcnlwdGlvbkFsZ29yaXRobSgkY29tcGxldGVfaGVhZGVycyk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRhbGdvcml0aG0tPmdldEFncmVlbWVudEtleSgkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0Q0VLU2l6ZSgpLCAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobS0+Z2V0QWxnb3JpdGhtTmFtZSgpLCAkandlLT5nZXRSZWNpcGllbnQoMCktPmdldFJlY2lwaWVudEtleSgpLCAkY29tcGxldGVfaGVhZGVycywgJGFkZGl0aW9uYWxfaGVhZGVycyk7CiAgICAgICAgICAgIGNhc2UgQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cS2V5RW5jcnlwdGlvbkludGVyZmFjZTo6TU9ERV9ESVJFQ1Q6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OmVxKDEsICRqd2UtPmNvdW50UmVjaXBpZW50cygpLCAnVW5hYmxlIHRvIGVuY3J5cHQgZm9yIG11bHRpcGxlIHJlY2lwaWVudHMgdXNpbmcga2V5IGFncmVlbWVudCBhbGdvcml0aG1zLicpOwogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgkandlLT5nZXRSZWNpcGllbnQoMCktPmdldFJlY2lwaWVudEtleSgpLT5nZXQoJ2t0eScpLCAnb2N0JywgJ1dyb25nIGtleSB0eXBlLicpOwogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCRqd2UtPmdldFJlY2lwaWVudCgwKS0+Z2V0UmVjaXBpZW50S2V5KCktPmhhcygnaycpLCAnVGhlIGtleSBwYXJhbWV0ZXIgImsiIGlzIG1pc3NpbmcuJyk7CgogICAgICAgICAgICAgICAgcmV0dXJuIEJhc2U2NFVybDo6ZGVjb2RlKCRqd2UtPmdldFJlY2lwaWVudCgwKS0+Z2V0UmVjaXBpZW50S2V5KCktPmdldCgnaycpKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1Vuc3VwcG9ydGVkIGtleSBtYW5hZ2VtZW50IG1vZGUgIiVzIi4nLCAka2V5X21hbmFnZW1lbnRfbW9kZSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRqd2UKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEtleU1hbmFnZW1lbnRNb2RlKE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZSkKICAgIHsKICAgICAgICAkbW9kZSA9IG51bGw7CiAgICAgICAgJHJlY2lwaWVudHMgPSAkandlLT5nZXRSZWNpcGllbnRzKCk7CgogICAgICAgIGZvcmVhY2ggKCRyZWNpcGllbnRzIGFzICRyZWNpcGllbnQpIHsKICAgICAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgPSBhcnJheV9tZXJnZSgkandlLT5nZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCksICRqd2UtPmdldFNoYXJlZEhlYWRlcnMoKSwgJHJlY2lwaWVudC0+Z2V0SGVhZGVycygpKTsKICAgICAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGNvbXBsZXRlX2hlYWRlcnMsICdhbGcnLCAnUGFyYW1ldGVyICJhbGciIGlzIG1pc3NpbmcuJyk7CgogICAgICAgICAgICAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtID0gJHRoaXMtPmdldEpXQU1hbmFnZXIoKS0+Z2V0QWxnb3JpdGhtKCRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0sIEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOjpjbGFzcywgc3ByaW50ZignVGhlIGtleSBlbmNyeXB0aW9uIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGEga2V5IGVuY3J5cHRpb24gYWxnb3JpdGhtIGluc3RhbmNlLicsICRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXSkpOwoKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRtb2RlKSB7CiAgICAgICAgICAgICAgICAkbW9kZSA9ICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEtleU1hbmFnZW1lbnRNb2RlKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OnRydWUoJHRoaXMtPmFyZUtleU1hbmFnZW1lbnRNb2Rlc0NvbXBhdGlibGUoJG1vZGUsICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0tPmdldEtleU1hbmFnZW1lbnRNb2RlKCkpLCAnRm9yZWlnbiBrZXkgbWFuYWdlbWVudCBtb2RlIGZvcmJpZGRlbi4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtb2RlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uTWV0aG9kKE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZSkKICAgIHsKICAgICAgICAkbWV0aG9kID0gbnVsbDsKICAgICAgICAkbmJfcmVjaXBpZW50cyA9ICRqd2UtPmNvdW50UmVjaXBpZW50cygpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbmJfcmVjaXBpZW50czsgJGkrKykgewogICAgICAgICAgICAkY29tcGxldGVfaGVhZGVycyA9IGFycmF5X21lcmdlKCRqd2UtPmdldFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKSwgJGp3ZS0+Z2V0U2hhcmVkSGVhZGVycygpLCAkandlLT5nZXRSZWNpcGllbnQoJGkpLT5nZXRIZWFkZXJzKCkpOwogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnemlwJywgJGNvbXBsZXRlX2hlYWRlcnMpKSB7CiAgICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gJG1ldGhvZCkgewogICAgICAgICAgICAgICAgICAgIGlmICgwID09PSAkaSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kID0gJGNvbXBsZXRlX2hlYWRlcnNbJ3ppcCddOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbmNvbnNpc3RlbnQgInppcCIgcGFyYW1ldGVyLicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgkbWV0aG9kLCAkY29tcGxldGVfaGVhZGVyc1snemlwJ10sICdJbmNvbnNpc3RlbnQgInppcCIgcGFyYW1ldGVyLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjplcShudWxsLCAkbWV0aG9kLCAnSW5jb25zaXN0ZW50ICJ6aXAiIHBhcmFtZXRlci4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRtZXRob2QpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZCA9ICR0aGlzLT5nZXRDb21wcmVzc2lvbk1hbmFnZXIoKS0+Z2V0Q29tcHJlc3Npb25BbGdvcml0aG0oJG1ldGhvZCk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGNvbXByZXNzaW9uX21ldGhvZCwgQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2U6OmNsYXNzLCBzcHJpbnRmKCdDb21wcmVzc2lvbiBtZXRob2QgIiVzIiBub3Qgc3VwcG9ydGVkLicsICRtZXRob2QpKTsKCiAgICAgICAgcmV0dXJuICRjb21wcmVzc2lvbl9tZXRob2Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAkandlCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobShPYmplY3RcSldFSW50ZXJmYWNlICRqd2UpCiAgICB7CiAgICAgICAgJGFsZ29yaXRobSA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCRqd2UtPmdldFJlY2lwaWVudHMoKSBhcyAkcmVjaXBpZW50KSB7CiAgICAgICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoJGp3ZS0+Z2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVycygpLCAkandlLT5nZXRTaGFyZWRIZWFkZXJzKCksICRyZWNpcGllbnQtPmdldEhlYWRlcnMoKSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnZW5jJywgJ1BhcmFtZXRlciAiZW5jIiBpcyBtaXNzaW5nLicpOwogICAgICAgICAgICBpZiAobnVsbCA9PT0gJGFsZ29yaXRobSkgewogICAgICAgICAgICAgICAgJGFsZ29yaXRobSA9ICRjb21wbGV0ZV9oZWFkZXJzWydlbmMnXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6ZXEoJGFsZ29yaXRobSwgJGNvbXBsZXRlX2hlYWRlcnNbJ2VuYyddLCAnRm9yZWlnbiBjb250ZW50IGVuY3J5cHRpb24gYWxnb3JpdGhtcyBhcmUgbm90IGFsbG93ZWQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtID0gJHRoaXMtPmdldEpXQU1hbmFnZXIoKS0+Z2V0QWxnb3JpdGhtKCRhbGdvcml0aG0pOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U6OmNsYXNzLCBzcHJpbnRmKCdUaGUgY29udGVudCBlbmNyeXB0aW9uIGFsZ29yaXRobSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQgb3Igbm90IGEgY29udGVudCBlbmNyeXB0aW9uIGFsZ29yaXRobSBpbnN0YW5jZS4nLCAkYWxnb3JpdGhtKSk7CgogICAgICAgIHJldHVybiAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGN1cnJlbnQKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5ldwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFyZUtleU1hbmFnZW1lbnRNb2Rlc0NvbXBhdGlibGUoJGN1cnJlbnQsICRuZXcpCiAgICB7CiAgICAgICAgJGFncmVlID0gQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2U6Ok1PREVfQUdSRUVNRU5UOwogICAgICAgICRkaXIgPSBBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTo6TU9ERV9ESVJFQ1Q7CiAgICAgICAgJGVuYyA9IEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlOjpNT0RFX0VOQ1JZUFQ7CiAgICAgICAgJHdyYXAgPSBBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTo6TU9ERV9XUkFQOwogICAgICAgICRzdXBwb3J0ZWRfa2V5X21hbmFnZW1lbnRfbW9kZV9jb21iaW5hdGlvbnMgPSBbJGVuYy4kZW5jICAgICA9PiB0cnVlLCAkZW5jLiR3cmFwICAgID0+IHRydWUsICR3cmFwLiRlbmMgICAgPT4gdHJ1ZSwgJHdyYXAuJHdyYXAgICA9PiB0cnVlLCAkYWdyZWUuJGFncmVlID0+IGZhbHNlLCAkYWdyZWUuJGRpciAgID0+IGZhbHNlLCAkYWdyZWUuJGVuYyAgID0+IGZhbHNlLCAkYWdyZWUuJHdyYXAgID0+IGZhbHNlLCAkZGlyLiRhZ3JlZSAgID0+IGZhbHNlLCAkZGlyLiRkaXIgICAgID0+IGZhbHNlLCAkZGlyLiRlbmMgICAgID0+IGZhbHNlLCAkZGlyLiR3cmFwICAgID0+IGZhbHNlLCAkZW5jLiRhZ3JlZSAgID0+IGZhbHNlLCAkZW5jLiRkaXIgICAgID0+IGZhbHNlLCAkd3JhcC4kYWdyZWUgID0+IGZhbHNlLCAkd3JhcC4kZGlyICAgID0+IGZhbHNlXTsKCiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGN1cnJlbnQuJG5ldywgJHN1cHBvcnRlZF9rZXlfbWFuYWdlbWVudF9tb2RlX2NvbWJpbmF0aW9ucykpIHsKICAgICAgICAgICAgcmV0dXJuICRzdXBwb3J0ZWRfa2V5X21hbmFnZW1lbnRfbW9kZV9jb21iaW5hdGlvbnNbJGN1cnJlbnQuJG5ld107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRzaXplCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVDRUsoJHNpemUpCiAgICB7CiAgICAgICAgcmV0dXJuIHJhbmRvbV9ieXRlcygkc2l6ZSAvIDgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkc2l6ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlSVYoJHNpemUpCiAgICB7CiAgICAgICAgcmV0dXJuIHJhbmRvbV9ieXRlcygkc2l6ZSAvIDgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbmRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtKGFycmF5ICRjb21wbGV0ZV9oZWFkZXJzKQogICAgewogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnYWxnJywgJ1BhcmFtZXRlciAiYWxnIiBpcyBtaXNzaW5nLicpOwogICAgICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG0gPSAkdGhpcy0+Z2V0SldBTWFuYWdlcigpLT5nZXRBbGdvcml0aG0oJGNvbXBsZXRlX2hlYWRlcnNbJ2FsZyddKTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtLCBBbGdvcml0aG1cS2V5RW5jcnlwdGlvbkFsZ29yaXRobUludGVyZmFjZTo6Y2xhc3MsIHNwcmludGYoJ1RoZSBrZXkgZW5jcnlwdGlvbiBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkIG9yIG5vdCBhIGtleSBlbmNyeXB0aW9uIGFsZ29yaXRobSBpbnN0YW5jZS4nLCAkY29tcGxldGVfaGVhZGVyc1snYWxnJ10pKTsKCiAgICAgICAgcmV0dXJuICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/HasCompressionManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uTWFuYWdlckludGVyZmFjZTsKCnRyYWl0IEhhc0NvbXByZXNzaW9uTWFuYWdlcgp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGNvbXByZXNzaW9uX21hbmFnZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlICRjb21wcmVzc2lvbl9tYW5hZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0Q29tcHJlc3Npb25NYW5hZ2VyKENvbXByZXNzaW9uTWFuYWdlckludGVyZmFjZSAkY29tcHJlc3Npb25fbWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fbWFuYWdlciA9ICRjb21wcmVzc2lvbl9tYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbk1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uTWFuYWdlcigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wcmVzc2lvbl9tYW5hZ2VyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/HasJWAManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBKb3NlXEFsZ29yaXRobVxKV0FNYW5hZ2VySW50ZXJmYWNlOwoKdHJhaXQgSGFzSldBTWFuYWdlcgp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkandhX21hbmFnZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXJJbnRlcmZhY2UgJGp3YV9tYW5hZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0SldBTWFuYWdlcihKV0FNYW5hZ2VySW50ZXJmYWNlICRqd2FfbWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+andhX21hbmFnZXIgPSAkandhX21hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEFsZ29yaXRobVxKV0FNYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRKV0FNYW5hZ2VyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmp3YV9tYW5hZ2VyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Behaviour/HasKeyChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEJlaGF2aW91cjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKdHJhaXQgSGFzS2V5Q2hlY2tlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICR1c2FnZQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tLZXlVc2FnZShKV0tJbnRlcmZhY2UgJGtleSwgJHVzYWdlKQogICAgewogICAgICAgIGlmICgka2V5LT5oYXMoJ3VzZScpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIEF1ZGllbmNlQ2hlY2tlciBpbXBsZW1lbnRzIENsYWltQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJGF1ZGllbmNlOwoKICAgIC8qKgogICAgICogQXVkaWVuY2VDaGVja2VyIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGF1ZGllbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkYXVkaWVuY2UpCiAgICB7CiAgICAgICAgJHRoaXMtPmF1ZGllbmNlID0gJGF1ZGllbmNlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tDbGFpbShKV1RJbnRlcmZhY2UgJGp3dCkKICAgIHsKICAgICAgICBpZiAoISRqd3QtPmhhc0NsYWltKCdhdWQnKSkgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkYXVkaWVuY2UgPSAkand0LT5nZXRDbGFpbSgnYXVkJyk7CiAgICAgICAgaWYgKGlzX3N0cmluZygkYXVkaWVuY2UpKSB7CiAgICAgICAgICAgIEFzc2VydGlvbjo6ZXEoJGF1ZGllbmNlLCAkdGhpcy0+Z2V0QXVkaWVuY2UoKSwgJ0JhZCBhdWRpZW5jZS4nKTsKICAgICAgICB9IGVsc2VpZiAoaXNfYXJyYXkoJGF1ZGllbmNlKSkgewogICAgICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJHRoaXMtPmdldEF1ZGllbmNlKCksICRhdWRpZW5jZSwgJ0JhZCBhdWRpZW5jZS4nKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQmFkIGF1ZGllbmNlLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsnYXVkJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXVkaWVuY2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXVkaWVuY2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/CheckerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0OwoKLyoqCiAqIENsYXNzIENoZWNrZXJNYW5hZ2VyLgogKi8KY2xhc3MgQ2hlY2tlck1hbmFnZXIgaW1wbGVtZW50cyBDaGVja2VyTWFuYWdlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcQ2hlY2tlclxDbGFpbUNoZWNrZXJJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlICRjbGFpbV9jaGVja2VycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxDaGVja2VyXEhlYWRlckNoZWNrZXJJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlICRoZWFkZXJfY2hlY2tlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldUSW50ZXJmYWNlICRqd3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tKV1QoT2JqZWN0XEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgICRjaGVja2VkX2NsYWltcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Y2xhaW1fY2hlY2tlcnMgYXMgJGNsYWltX2NoZWNrZXIpIHsKICAgICAgICAgICAgJGNoZWNrZWRfY2xhaW1zID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkY2hlY2tlZF9jbGFpbXMsCiAgICAgICAgICAgICAgICAkY2xhaW1fY2hlY2tlci0+Y2hlY2tDbGFpbSgkand0KQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjaGVja2VkX2NsYWltczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAkaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICRjaGVja2VkX2NsYWltcwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSGVhZGVycyhhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzLCBhcnJheSAkY2hlY2tlZF9jbGFpbXMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhlYWRlcl9jaGVja2VycyBhcyAkaGVhZGVyX2NoZWNrZXIpIHsKICAgICAgICAgICAgJGhlYWRlcl9jaGVja2VyLT5jaGVja0hlYWRlcigkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzLCAkY2hlY2tlZF9jbGFpbXMpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrSldTKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgJHNpZ25hdHVyZSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmludGVnZXIoJHNpZ25hdHVyZSk7CiAgICAgICAgQXNzZXJ0aW9uOjpsZXNzVGhhbigkc2lnbmF0dXJlLCAkandzLT5jb3VudFNpZ25hdHVyZXMoKSk7CgogICAgICAgICRjaGVja2VkX2NsYWltcyA9ICR0aGlzLT5jaGVja0pXVCgkandzKTsKICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMgPSAkandzLT5nZXRTaWduYXR1cmUoJHNpZ25hdHVyZSktPmdldFByb3RlY3RlZEhlYWRlcnMoKTsKICAgICAgICAkaGVhZGVycyA9ICRqd3MtPmdldFNpZ25hdHVyZSgkc2lnbmF0dXJlKS0+Z2V0SGVhZGVycygpOwoKICAgICAgICAkdGhpcy0+Y2hlY2tIZWFkZXJzKCRwcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMsICRjaGVja2VkX2NsYWltcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ2hlY2tlclxDbGFpbUNoZWNrZXJJbnRlcmZhY2UgJGNsYWltX2NoZWNrZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZENsYWltQ2hlY2tlcihDbGFpbUNoZWNrZXJJbnRlcmZhY2UgJGNsYWltX2NoZWNrZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPmNsYWltX2NoZWNrZXJzW10gPSAkY2xhaW1fY2hlY2tlcjsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxDaGVja2VyXEhlYWRlckNoZWNrZXJJbnRlcmZhY2UgJGhlYWRlcl9jaGVja2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRIZWFkZXJDaGVja2VyKEhlYWRlckNoZWNrZXJJbnRlcmZhY2UgJGhlYWRlcl9jaGVja2VyKQogICAgewogICAgICAgICR0aGlzLT5oZWFkZXJfY2hlY2tlcnNbXSA9ICRoZWFkZXJfY2hlY2tlcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/CheckerManagerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlOwoKLyoqCiAqIEludGVyZmFjZSBDaGVja2VyTWFuYWdlckludGVyZmFjZS4KICovCmludGVyZmFjZSBDaGVja2VyTWFuYWdlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRqd3MKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrSldTKEpXU0ludGVyZmFjZSAkandzLCAkc2lnbmF0dXJlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxDaGVja2VyXENsYWltQ2hlY2tlckludGVyZmFjZSAkY2xhaW1fY2hlY2tlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ2xhaW1DaGVja2VyKENsYWltQ2hlY2tlckludGVyZmFjZSAkY2xhaW1fY2hlY2tlcik7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ2hlY2tlclxIZWFkZXJDaGVja2VySW50ZXJmYWNlICRoZWFkZXJfY2hlY2tlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkSGVhZGVyQ2hlY2tlcihIZWFkZXJDaGVja2VySW50ZXJmYWNlICRoZWFkZXJfY2hlY2tlcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/ClaimCheckerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgSm9zZVxPYmplY3RcSldUSW50ZXJmYWNlOwoKLyoqCiAqIEludGVyZmFjZSBDbGFpbUNoZWNrZXJJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgQ2xhaW1DaGVja2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV1RJbnRlcmZhY2UgJGp3dAogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQ2xhaW0oSldUSW50ZXJmYWNlICRqd3QpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/CriticalHeaderChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKCmNsYXNzIENyaXRpY2FsSGVhZGVyQ2hlY2tlciBpbXBsZW1lbnRzIEhlYWRlckNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0hlYWRlcihhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzLCBhcnJheSAkY2hlY2tlZF9jbGFpbXMpCiAgICB7CiAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCdjcml0JywgJHByb3RlY3RlZF9oZWFkZXJzKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJHByb3RlY3RlZF9oZWFkZXJzWydjcml0J10sICdUaGUgcGFyYW1ldGVyICJjcml0IiBtdXN0IGJlIGEgbGlzdC4nKTsKCiAgICAgICAgJGRpZmYgPSBhcnJheV9kaWZmKCRwcm90ZWN0ZWRfaGVhZGVyc1snY3JpdCddLCAkY2hlY2tlZF9jbGFpbXMpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZShlbXB0eSgkZGlmZiksIHNwcmludGYoJ09uZSBvciBtb3JlIGNsYWltcyBhcmUgbWFya2VkIGFzIGNyaXRpY2FsLCBidXQgdGhleSBhcmUgbWlzc2luZyBvciBoYXZlIG5vdCBiZWVuIGNoZWNrZWQgKCVzKS4nLCBqc29uX2VuY29kZShhcnJheV92YWx1ZXMoJGRpZmYpKSkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/ExpirationTimeChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIEV4cGlyYXRpb25UaW1lQ2hlY2tlciBpbXBsZW1lbnRzIENsYWltQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQ2xhaW0oSldUSW50ZXJmYWNlICRqd3QpCiAgICB7CiAgICAgICAgaWYgKCEkand0LT5oYXNDbGFpbSgnZXhwJykpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgJGV4cCA9IChpbnQpICRqd3QtPmdldENsYWltKCdleHAnKTsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRleHAsIHRpbWUoKSwgJ1RoZSBKV1QgaGFzIGV4cGlyZWQuJyk7CgogICAgICAgIHJldHVybiBbJ2V4cCddOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/HeaderCheckerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7CgovKioKICogSW50ZXJmYWNlIEhlYWRlckNoZWNrZXJJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgSGVhZGVyQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAkaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICRjaGVja2VkX2NsYWltcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tIZWFkZXIoYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycywgYXJyYXkgJGNoZWNrZWRfY2xhaW1zKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/IssuedAtChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIElzc3VlZEF0Q2hlY2tlciBpbXBsZW1lbnRzIENsYWltQ2hlY2tlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrQ2xhaW0oSldUSW50ZXJmYWNlICRqd3QpCiAgICB7CiAgICAgICAgaWYgKCEkand0LT5oYXNDbGFpbSgnaWF0JykpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgJGlhdCA9IChpbnQpICRqd3QtPmdldENsYWltKCdpYXQnKTsKICAgICAgICBBc3NlcnRpb246Omxlc3NPckVxdWFsVGhhbigkaWF0LCB0aW1lKCksICdUaGUgSldUIGlzIGlzc3VlZCBpbiB0aGUgZnV0dXJlLicpOwoKICAgICAgICByZXR1cm4gWydpYXQnXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/IssuerChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmFic3RyYWN0IGNsYXNzIElzc3VlckNoZWNrZXIgaW1wbGVtZW50cyBDbGFpbUNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0NsYWltKEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgIGlmICghJGp3dC0+aGFzQ2xhaW0oJ2lzcycpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRpc3N1ZXIgPSAkand0LT5nZXRDbGFpbSgnaXNzJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCR0aGlzLT5pc0lzc3VlckFsbG93ZWQoJGlzc3VlciksIHNwcmludGYoJ1RoZSBpc3N1ZXIgIiVzIiBpcyBub3QgYWxsb3dlZC4nLCAkaXNzdWVyKSk7CgogICAgICAgIHJldHVybiBbJ2lzcyddOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkaXNzdWVyCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBpc0lzc3VlckFsbG93ZWQoJGlzc3Vlcik7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/JtiChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmFic3RyYWN0IGNsYXNzIEp0aUNoZWNrZXIgaW1wbGVtZW50cyBDbGFpbUNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0NsYWltKEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgIGlmICghJGp3dC0+aGFzQ2xhaW0oJ2p0aScpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRqdGkgPSAkand0LT5nZXRDbGFpbSgnanRpJyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCR0aGlzLT5pc0p0aVZhbGlkKCRqdGkpLCBzcHJpbnRmKCdJbnZhbGlkIHRva2VuIElEICIlcyIuJywgJGp0aSkpOwoKICAgICAgICByZXR1cm4gWydqdGknXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGp0aQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNKdGlWYWxpZCgkanRpKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/NotBeforeChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmNsYXNzIE5vdEJlZm9yZUNoZWNrZXIgaW1wbGVtZW50cyBDbGFpbUNoZWNrZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjaGVja0NsYWltKEpXVEludGVyZmFjZSAkand0KQogICAgewogICAgICAgIGlmICghJGp3dC0+aGFzQ2xhaW0oJ25iZicpKSB7CiAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICB9CgogICAgICAgICRuYmYgPSAoaW50KSAkand0LT5nZXRDbGFpbSgnbmJmJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpsZXNzT3JFcXVhbFRoYW4oJG5iZiwgdGltZSgpLCAnVGhlIEpXVCBjYW4gbm90IGJlIHVzZWQgeWV0LicpOwoKICAgICAgICByZXR1cm4gWyduYmYnXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Checker/SubjectChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENoZWNrZXI7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZTsKCmFic3RyYWN0IGNsYXNzIFN1YmplY3RDaGVja2VyIGltcGxlbWVudHMgQ2xhaW1DaGVja2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tDbGFpbShKV1RJbnRlcmZhY2UgJGp3dCkKICAgIHsKICAgICAgICBpZiAoISRqd3QtPmhhc0NsYWltKCdzdWInKSkgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkc3ViamVjdCA9ICRqd3QtPmdldENsYWltKCdzdWInKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoJHRoaXMtPmlzU3ViamVjdEFsbG93ZWQoJHN1YmplY3QpLCBzcHJpbnRmKCdUaGUgc3ViamVjdCAiJXMiIGlzIG5vdCBhbGxvd2VkLicsICRzdWJqZWN0KSk7CgogICAgICAgIHJldHVybiBbJ3N1YiddOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkc3ViamVjdAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNTdWJqZWN0QWxsb3dlZCgkc3ViamVjdCk7Cn0K]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKLyoqCiAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgYWxsIGNvbXByZXNzaW9uIG1ldGhvZHMuCiAqLwppbnRlcmZhY2UgQ29tcHJlc3Npb25JbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIG1ldGhvZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0aG9kTmFtZSgpOwoKICAgIC8qKgogICAgICogQ29tcHJlc3MgdGhlIGRhdGEuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YSBUaGUgZGF0YSB0byBjb21wcmVzcwogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgY29tcHJlc3NlZCBkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wcmVzcygkZGF0YSk7CgogICAgLyoqCiAgICAgKiBVbmNvbXByZXNzIHRoZSBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgVGhlIGRhdGEgdG8gdW5jb21wcmVzcwogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgdW5jb21wcmVzc2VkIGRhdGEKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuY29tcHJlc3MoJGRhdGEpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/CompressionManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKLyoqCiAqIENvbXByZXNzaW9uIGFsZ29yaXRobSBtYW5hZ2VyLgogKi8KZmluYWwgY2xhc3MgQ29tcHJlc3Npb25NYW5hZ2VyIGltcGxlbWVudHMgQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbkludGVyZmFjZVtdCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY29tcHJlc3Npb25fYWxnb3JpdGhtcyA9IFtdOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tcHJlc3Npb25BbGdvcml0aG0oQ29tcHJlc3Npb25JbnRlcmZhY2UgJGNvbXByZXNzaW9uX2FsZ29yaXRobSkKICAgIHsKICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fYWxnb3JpdGhtc1skY29tcHJlc3Npb25fYWxnb3JpdGhtLT5nZXRNZXRob2ROYW1lKCldID0gJGNvbXByZXNzaW9uX2FsZ29yaXRobTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uQWxnb3JpdGhtKCRuYW1lKQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRuYW1lLCAkdGhpcy0+Y29tcHJlc3Npb25fYWxnb3JpdGhtcykgPyAkdGhpcy0+Y29tcHJlc3Npb25fYWxnb3JpdGhtc1skbmFtZV0gOiBudWxsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/CompressionManagerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKLyoqCiAqIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgdG8gbWFuYWdlIGFsbCBjb21wcmVzc2lvbiBtZXRob2RzLgogKi8KaW50ZXJmYWNlIENvbXByZXNzaW9uTWFuYWdlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGZpbmQgYSBDb21wcmVzc2lvbkludGVyZmFjZSBvYmplY3QgYWJsZSB0byBzdXBwb3J0IHRoZSBjb21wcmVzc2lvbiBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tcHJlc3Npb24gbWV0aG9kCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbkludGVyZmFjZXxudWxsIElmIHRoZSBjb21wcmVzc2lvbiBoYW5kbGVyIGlzIHN1cHBvcnRlZCwgcmV0dXJuIENvbXByZXNzaW9uSW50ZXJmYWNlIG9iamVjdCwgZWxzZSBudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb21wcmVzc2lvbkFsZ29yaXRobSgkbmFtZSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2UgJGNvbXByZXNzaW9uX2FsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ29tcHJlc3Npb25BbGdvcml0aG0oQ29tcHJlc3Npb25JbnRlcmZhY2UgJGNvbXByZXNzaW9uX2FsZ29yaXRobSk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/Deflate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gREVGIChkZWZhbHRlKQogKiBUaGlzIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpcyBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogKi8KZmluYWwgY2xhc3MgRGVmbGF0ZSBpbXBsZW1lbnRzIENvbXByZXNzaW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRjb21wcmVzc2lvbl9sZXZlbCA9IC0xOwoKICAgIC8qKgogICAgICogRGVmbGF0ZSBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjb21wcmVzc2lvbl9sZXZlbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbXByZXNzaW9uX2xldmVsID0gLTEpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppbnRlZ2VyKCRjb21wcmVzc2lvbl9sZXZlbCwgJ1RoZSBjb21wcmVzc2lvbiBsZXZlbCBjYW4gYmUgZ2l2ZW4gYXMgMCBmb3Igbm8gY29tcHJlc3Npb24gdXAgdG8gOSBmb3IgbWF4aW11bSBjb21wcmVzc2lvbi4gSWYgLTEgZ2l2ZW4sIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIHdpbGwgYmUgdGhlIGRlZmF1bHQgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIHpsaWIgbGlicmFyeS4nKTsKICAgICAgICBBc3NlcnRpb246OnJhbmdlKCRjb21wcmVzc2lvbl9sZXZlbCwgLTEsIDksICdUaGUgY29tcHJlc3Npb24gbGV2ZWwgY2FuIGJlIGdpdmVuIGFzIDAgZm9yIG5vIGNvbXByZXNzaW9uIHVwIHRvIDkgZm9yIG1heGltdW0gY29tcHJlc3Npb24uIElmIC0xIGdpdmVuLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCB3aWxsIGJlIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSB6bGliIGxpYnJhcnkuJyk7CgogICAgICAgICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbCA9ICRjb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q29tcHJlc3Npb25MZXZlbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGhvZE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnREVGJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXByZXNzKCRkYXRhKQogICAgewogICAgICAgICRkYXRhID0gZ3pkZWZsYXRlKCRkYXRhLCAkdGhpcy0+Z2V0Q29tcHJlc3Npb25MZXZlbCgpKTsKICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSAkZGF0YSwgJ1VuYWJsZSB0byBjb21wcmVzcyBkYXRhJyk7CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuY29tcHJlc3MoJGRhdGEpCiAgICB7CiAgICAgICAgJGRhdGEgPSBnemluZmxhdGUoJGRhdGEpOwogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRkYXRhLCAnVW5hYmxlIHRvIHVuY29tcHJlc3MgZGF0YScpOwoKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/GZip.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gR1ogKEdaaXApLgogKiBUaGlzIGNvbXByZXNzaW9uIGFsZ29yaXRobSBpcyBub3QgcGFydCBvZiB0aGUgc3BlY2lmaWNhdGlvbi4KICovCmZpbmFsIGNsYXNzIEdaaXAgaW1wbGVtZW50cyBDb21wcmVzc2lvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCAkY29tcHJlc3Npb25fbGV2ZWwgPSAtMTsKCiAgICAvKioKICAgICAqIERlZmxhdGUgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkY29tcHJlc3Npb25fbGV2ZWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb21wcmVzc2lvbl9sZXZlbCA9IC0xKQogICAgewogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkY29tcHJlc3Npb25fbGV2ZWwsICdUaGUgY29tcHJlc3Npb24gbGV2ZWwgY2FuIGJlIGdpdmVuIGFzIDAgZm9yIG5vIGNvbXByZXNzaW9uIHVwIHRvIDkgZm9yIG1heGltdW0gY29tcHJlc3Npb24uIElmIC0xIGdpdmVuLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCB3aWxsIGJlIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSB6bGliIGxpYnJhcnkuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpyYW5nZSgkY29tcHJlc3Npb25fbGV2ZWwsIC0xLCA5LCAnVGhlIGNvbXByZXNzaW9uIGxldmVsIGNhbiBiZSBnaXZlbiBhcyAwIGZvciBubyBjb21wcmVzc2lvbiB1cCB0byA5IGZvciBtYXhpbXVtIGNvbXByZXNzaW9uLiBJZiAtMSBnaXZlbiwgdGhlIGRlZmF1bHQgY29tcHJlc3Npb24gbGV2ZWwgd2lsbCBiZSB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCBvZiB0aGUgemxpYiBsaWJyYXJ5LicpOwoKICAgICAgICAkdGhpcy0+Y29tcHJlc3Npb25fbGV2ZWwgPSAkY29tcHJlc3Npb25fbGV2ZWw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldENvbXByZXNzaW9uTGV2ZWwoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcHJlc3Npb25fbGV2ZWw7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRob2ROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0daJzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXByZXNzKCRkYXRhKQogICAgewogICAgICAgICRkYXRhID0gZ3plbmNvZGUoJGRhdGEsICR0aGlzLT5nZXRDb21wcmVzc2lvbkxldmVsKCkpOwogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRkYXRhLCAnVW5hYmxlIHRvIGNvbXByZXNzIGRhdGEnKTsKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5jb21wcmVzcygkZGF0YSkKICAgIHsKICAgICAgICAkZGF0YSA9IGd6ZGVjb2RlKCRkYXRhKTsKICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSAkZGF0YSwgJ1VuYWJsZSB0byB1bmNvbXByZXNzIGRhdGEnKTsKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Compression/ZLib.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXENvbXByZXNzaW9uOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gWkxJQiAoWkxpYikuCiAqIFRoaXMgY29tcHJlc3Npb24gYWxnb3JpdGhtIGlzIG5vdCBwYXJ0IG9mIHRoZSBzcGVjaWZpY2F0aW9uLgogKi8KZmluYWwgY2xhc3MgWkxpYiBpbXBsZW1lbnRzIENvbXByZXNzaW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJvdGVjdGVkICRjb21wcmVzc2lvbl9sZXZlbCA9IC0xOwoKICAgIC8qKgogICAgICogRGVmbGF0ZSBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjb21wcmVzc2lvbl9sZXZlbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbXByZXNzaW9uX2xldmVsID0gLTEpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppbnRlZ2VyKCRjb21wcmVzc2lvbl9sZXZlbCwgJ1RoZSBjb21wcmVzc2lvbiBsZXZlbCBjYW4gYmUgZ2l2ZW4gYXMgMCBmb3Igbm8gY29tcHJlc3Npb24gdXAgdG8gOSBmb3IgbWF4aW11bSBjb21wcmVzc2lvbi4gSWYgLTEgZ2l2ZW4sIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIHdpbGwgYmUgdGhlIGRlZmF1bHQgY29tcHJlc3Npb24gbGV2ZWwgb2YgdGhlIHpsaWIgbGlicmFyeS4nKTsKICAgICAgICBBc3NlcnRpb246OnJhbmdlKCRjb21wcmVzc2lvbl9sZXZlbCwgLTEsIDksICdUaGUgY29tcHJlc3Npb24gbGV2ZWwgY2FuIGJlIGdpdmVuIGFzIDAgZm9yIG5vIGNvbXByZXNzaW9uIHVwIHRvIDkgZm9yIG1heGltdW0gY29tcHJlc3Npb24uIElmIC0xIGdpdmVuLCB0aGUgZGVmYXVsdCBjb21wcmVzc2lvbiBsZXZlbCB3aWxsIGJlIHRoZSBkZWZhdWx0IGNvbXByZXNzaW9uIGxldmVsIG9mIHRoZSB6bGliIGxpYnJhcnkuJyk7CgogICAgICAgICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbCA9ICRjb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q29tcHJlc3Npb25MZXZlbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wcmVzc2lvbl9sZXZlbDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGhvZE5hbWUoKQogICAgewogICAgICAgIHJldHVybiAnWkxJQic7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wcmVzcygkZGF0YSkKICAgIHsKICAgICAgICAkZGF0YSA9IGd6Y29tcHJlc3MoJGRhdGEsICR0aGlzLT5nZXRDb21wcmVzc2lvbkxldmVsKCkpOwogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRkYXRhLCAnVW5hYmxlIHRvIGNvbXByZXNzIGRhdGEnKTsKCiAgICAgICAgcmV0dXJuICRkYXRhOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5jb21wcmVzcygkZGF0YSkKICAgIHsKICAgICAgICAkZGF0YSA9IGd6dW5jb21wcmVzcygkZGF0YSk7CiAgICAgICAgQXNzZXJ0aW9uOjpmYWxzZShmYWxzZSA9PT0gJGRhdGEsICdVbmFibGUgdG8gdW5jb21wcmVzcyBkYXRhJyk7CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Decrypter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgRGVjcnlwdGVyIGltcGxlbWVudHMgRGVjcnlwdGVySW50ZXJmYWNlCnsKICAgIHVzZSBCZWhhdmlvdXJcSGFzS2V5Q2hlY2tlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzSldBTWFuYWdlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzQ29tcHJlc3Npb25NYW5hZ2VyOwogICAgdXNlIEJlaGF2aW91clxDb21tb25DaXBoZXJpbmdNZXRob2RzOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURlY3J5cHRlcihhcnJheSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29tcHJlc3Npb25fbWV0aG9kcyA9IFsnREVGJywgJ1pMSUInLCAnR1onXSkKICAgIHsKICAgICAgICAkZGVjcnlwdGVyID0gbmV3IHNlbGYoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGNvbXByZXNzaW9uX21ldGhvZHMpOwoKICAgICAgICByZXR1cm4gJGRlY3J5cHRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIERlY3J5cHRlciBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2VbXSAgICAgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1JbnRlcmZhY2VbXSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxDb21wcmVzc2lvblxDb21wcmVzc2lvbkludGVyZmFjZVtdICAgICAgICAgICAgICAkY29tcHJlc3Npb25fbWV0aG9kcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIGFycmF5ICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbXByZXNzaW9uX21ldGhvZHMpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldEtleUVuY3J5cHRpb25BbGdvcml0aG1zKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zKTsKICAgICAgICAkdGhpcy0+c2V0Q29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcyk7CiAgICAgICAgJHRoaXMtPnNldENvbXByZXNzaW9uTWV0aG9kcygkY29tcHJlc3Npb25fbWV0aG9kcyk7CiAgICAgICAgJHRoaXMtPnNldEpXQU1hbmFnZXIoRmFjdG9yeVxBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeTo6Y3JlYXRlQWxnb3JpdGhtTWFuYWdlcihhcnJheV9tZXJnZSgka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zKSkpOwogICAgICAgICR0aGlzLT5zZXRDb21wcmVzc2lvbk1hbmFnZXIoRmFjdG9yeVxDb21wcmVzc2lvbk1hbmFnZXJGYWN0b3J5OjpjcmVhdGVDb21wcmVzc2lvbk1hbmFnZXIoJGNvbXByZXNzaW9uX21ldGhvZHMpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRVc2luZ0tleShPYmplY3RcSldFSW50ZXJmYWNlICYkandlLCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkandrX3NldCA9IG5ldyBPYmplY3RcSldLU2V0KCk7CiAgICAgICAgJGp3a19zZXQtPmFkZEtleSgkandrKTsKCiAgICAgICAgJHRoaXMtPmRlY3J5cHRVc2luZ0tleVNldCgkandlLCAkandrX3NldCwgJHJlY2lwaWVudF9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0VXNpbmdLZXlTZXQoT2JqZWN0XEpXRUludGVyZmFjZSAmJGp3ZSwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jaGVja0pXS1NldCgkandrX3NldCk7CiAgICAgICAgJHRoaXMtPmNoZWNrUGF5bG9hZCgkandlKTsKICAgICAgICAkdGhpcy0+Y2hlY2tSZWNpcGllbnRzKCRqd2UpOwoKICAgICAgICAkbmJfcmVjaXBpZW50cyA9ICRqd2UtPmNvdW50UmVjaXBpZW50cygpOwoKICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbmJfcmVjaXBpZW50czsgJGkrKykgewogICAgICAgICAgICBpZiAoaXNfaW50KCRyZXN1bHQgPSAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIERlY3J5cHRlciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgRGVjcnlwdGVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAgICAgICAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXERlY3J5cHRlckludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZURlY3J5cHRlcihhcnJheSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29tcHJlc3Npb25fbWV0aG9kcyA9IFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDb21wcmVzc2lvbk1ldGhvZHMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRpbnB1dCAgICAgICAgICAgQSBKV0Ugb2JqZWN0IHRvIGRlY3J5cHQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRqd2sgICAgICAgICAgICAgVGhlIGtleSB1c2VkIHRvIGRlY3J5cHQgdGhlIGlucHV0CiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50X2luZGV4IElmIHRoZSBKV0UgaGFzIGJlZW4gZGVjcnlwdGVkLCBhbiBpbnRlZ2VyIHRoYXQgcmVwcmVzZW50cyB0aGUgSUQgb2YgdGhlIHJlY2lwaWVudCBpcyBzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlY3J5cHRVc2luZ0tleShPYmplY3RcSldFSW50ZXJmYWNlICYkaW5wdXQsIE9iamVjdFxKV0tJbnRlcmZhY2UgJGp3aywgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICAgICRpbnB1dCAgICAgICAgICAgQSBKV0Ugb2JqZWN0IHRvIGRlY3J5cHQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0ICAgICAgICAgVGhlIGtleSBzZXQgdXNlZCB0byBkZWNyeXB0IHRoZSBpbnB1dAogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleCBJZiB0aGUgSldFIGhhcyBiZWVuIGRlY3J5cHRlZCwgYW4gaW50ZWdlciB0aGF0IHJlcHJlc2VudHMgdGhlIElEIG9mIHRoZSByZWNpcGllbnQgaXMgc2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0VXNpbmdLZXlTZXQoT2JqZWN0XEpXRUludGVyZmFjZSAmJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCAmJHJlY2lwaWVudF9pbmRleCA9IG51bGwpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Encrypter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgRW5jcnlwdGVyIGltcGxlbWVudHMgRW5jcnlwdGVySW50ZXJmYWNlCnsKICAgIHVzZSBCZWhhdmlvdXJcSGFzS2V5Q2hlY2tlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzSldBTWFuYWdlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzQ29tcHJlc3Npb25NYW5hZ2VyOwogICAgdXNlIEJlaGF2aW91clxDb21tb25DaXBoZXJpbmdNZXRob2RzOwogICAgdXNlIEJlaGF2aW91clxFbmNyeXB0ZXJUcmFpdDsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFbmNyeXB0ZXIoYXJyYXkgJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIGFycmF5ICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbXByZXNzaW9uX21ldGhvZHMgPSBbJ0RFRicsICdaTElCJywgJ0daJ10pCiAgICB7CiAgICAgICAgJGVuY3J5cHRlciA9IG5ldyBzZWxmKCRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRjb21wcmVzc2lvbl9tZXRob2RzKTsKCiAgICAgICAgcmV0dXJuICRlbmNyeXB0ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWNyeXB0ZXIgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAgICAgICAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIGFycmF5ICRjb21wcmVzc2lvbl9tZXRob2RzKQogICAgewogICAgICAgICR0aGlzLT5zZXRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcyk7CiAgICAgICAgJHRoaXMtPnNldENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtcygkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMpOwogICAgICAgICR0aGlzLT5zZXRDb21wcmVzc2lvbk1ldGhvZHMoJGNvbXByZXNzaW9uX21ldGhvZHMpOwogICAgICAgICR0aGlzLT5zZXRKV0FNYW5hZ2VyKEZhY3RvcnlcQWxnb3JpdGhtTWFuYWdlckZhY3Rvcnk6OmNyZWF0ZUFsZ29yaXRobU1hbmFnZXIoYXJyYXlfbWVyZ2UoJGtleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcykpKTsKICAgICAgICAkdGhpcy0+c2V0Q29tcHJlc3Npb25NYW5hZ2VyKEZhY3RvcnlcQ29tcHJlc3Npb25NYW5hZ2VyRmFjdG9yeTo6Y3JlYXRlQ29tcHJlc3Npb25NYW5hZ2VyKCRjb21wcmVzc2lvbl9tZXRob2RzKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlbmNyeXB0KE9iamVjdFxKV0VJbnRlcmZhY2UgJiRqd2UpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpmYWxzZSgkandlLT5pc0VuY3J5cHRlZCgpLCAnVGhlIEpXRSBpcyBhbHJlYWR5IGVuY3J5cHRlZC4nKTsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRqd2UtPmNvdW50UmVjaXBpZW50cygpLCAwLCAnVGhlIEpXRSBkb2VzIG5vdCBjb250YWluIHJlY2lwaWVudC4nKTsKICAgICAgICAkYWRkaXRpb25hbF9oZWFkZXJzID0gW107CiAgICAgICAgJG5iX3JlY2lwaWVudHMgPSAkandlLT5jb3VudFJlY2lwaWVudHMoKTsKICAgICAgICAkY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobSA9ICR0aGlzLT5nZXRDb250ZW50RW5jcnlwdGlvbkFsZ29yaXRobSgkandlKTsKICAgICAgICAkY29tcHJlc3Npb25fbWV0aG9kID0gJHRoaXMtPmdldENvbXByZXNzaW9uTWV0aG9kKCRqd2UpOwogICAgICAgICRrZXlfbWFuYWdlbWVudF9tb2RlID0gJHRoaXMtPmdldEtleU1hbmFnZW1lbnRNb2RlKCRqd2UpOwogICAgICAgICRjZWsgPSAkdGhpcy0+ZGV0ZXJtaW5lQ0VLKCRqd2UsICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAka2V5X21hbmFnZW1lbnRfbW9kZSwgJGFkZGl0aW9uYWxfaGVhZGVycyk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuYl9yZWNpcGllbnRzOyAkaSsrKSB7CiAgICAgICAgICAgICR0aGlzLT5wcm9jZXNzUmVjaXBpZW50KCRqd2UsICRqd2UtPmdldFJlY2lwaWVudCgkaSksICRjZWssICRjb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtLCAkYWRkaXRpb25hbF9oZWFkZXJzKTsKICAgICAgICB9CgogICAgICAgIGlmICghZW1wdHkoJGFkZGl0aW9uYWxfaGVhZGVycykgJiYgMSA9PT0gJGp3ZS0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIEVuY3J5cHRlciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgRW5jcnlwdGVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gICAgICRrZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtSW50ZXJmYWNlW10gJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAgICAgICAgICAgICAgJGNvbXByZXNzaW9uX21ldGhvZHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEVuY3J5cHRlckludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUVuY3J5cHRlcihhcnJheSAka2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGNvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkY29tcHJlc3Npb25fbWV0aG9kcyA9IFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDb21wcmVzc2lvbk1ldGhvZHMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRqd2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHQoT2JqZWN0XEpXRUludGVyZmFjZSAmJGp3ZSk7Cn0K]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQWxnb3JpdGhtXEpXQUludGVyZmFjZTsKdXNlIEpvc2VcQWxnb3JpdGhtXEpXQU1hbmFnZXI7CgpmaW5hbCBjbGFzcyBBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxBbGdvcml0aG1cSldBSW50ZXJmYWNlW10gJGFsZ29yaXRobXMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEFsZ29yaXRobVxKV0FNYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQWxnb3JpdGhtTWFuYWdlcihhcnJheSAkYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkandhX21hbmFnZXIgPSBuZXcgSldBTWFuYWdlcigpOwoKICAgICAgICBmb3JlYWNoICgkYWxnb3JpdGhtcyBhcyAkYWxnb3JpdGhtKSB7CiAgICAgICAgICAgIGlmICgkYWxnb3JpdGhtIGluc3RhbmNlb2YgSldBSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICAgICAkandhX21hbmFnZXItPmFkZEFsZ29yaXRobSgkYWxnb3JpdGhtKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRhbGdvcml0aG0sICdCYWQgYXJndW1lbnQ6IG11c3QgYmUgYSBsaXN0IHdpdGggZWl0aGVyIGFsZ29yaXRobSBuYW1lcyAoc3RyaW5nKSBvciBpbnN0YW5jZXMgb2YgSldBSW50ZXJmYWNlLicpOwogICAgICAgICAgICAgICAgJGNsYXNzID0gc2VsZjo6Z2V0QWxnb3JpdGhtQ2xhc3MoJGFsZ29yaXRobSk7CiAgICAgICAgICAgICAgICAkandhX21hbmFnZXItPmFkZEFsZ29yaXRobShuZXcgJGNsYXNzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGp3YV9tYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGlzQWxnb3JpdGhtU3VwcG9ydGVkKCRhbGdvcml0aG0pCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGFsZ29yaXRobSwgc2VsZjo6Z2V0U3VwcG9ydGVkQWxnb3JpdGhtcygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFsZ29yaXRobQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEFsZ29yaXRobUNsYXNzKCRhbGdvcml0aG0pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKHNlbGY6OmlzQWxnb3JpdGhtU3VwcG9ydGVkKCRhbGdvcml0aG0pLCBzcHJpbnRmKCdBbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRhbGdvcml0aG0pKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmdldFN1cHBvcnRlZEFsZ29yaXRobXMoKVskYWxnb3JpdGhtXTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQWxnb3JpdGhtcygpCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ0hTMjU2JyAgICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcSFMyNTYnLAogICAgICAgICAgICAnSFMzODQnICAgICAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxIUzM4NCcsCiAgICAgICAgICAgICdIUzUxMicgICAgICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXEhTNTEyJywKICAgICAgICAgICAgJ0VTMjU2JyAgICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcRVMyNTYnLAogICAgICAgICAgICAnRVMzODQnICAgICAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxFUzM4NCcsCiAgICAgICAgICAgICdFUzUxMicgICAgICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXEVTNTEyJywKICAgICAgICAgICAgJ25vbmUnICAgICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcTm9uZScsCiAgICAgICAgICAgICdSUzI1NicgICAgICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXFJTMjU2JywKICAgICAgICAgICAgJ1JTMzg0JyAgICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcUlMzODQnLAogICAgICAgICAgICAnUlM1MTInICAgICAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxSUzUxMicsCiAgICAgICAgICAgICdQUzI1NicgICAgICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXFBTMjU2JywKICAgICAgICAgICAgJ1BTMzg0JyAgICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVcUFMzODQnLAogICAgICAgICAgICAnUFM1MTInICAgICAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZVxQUzUxMicsCiAgICAgICAgICAgICdFZERTQScgICAgICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlXEVkRFNBJywKICAgICAgICAgICAgJ0ExMjhHQ00nICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvblxBMTI4R0NNJywKICAgICAgICAgICAgJ0ExOTJHQ00nICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvblxBMTkyR0NNJywKICAgICAgICAgICAgJ0EyNTZHQ00nICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvblxBMjU2R0NNJywKICAgICAgICAgICAgJ0ExMjhDQkMtSFMyNTYnICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxDb250ZW50RW5jcnlwdGlvblxBMTI4Q0JDSFMyNTYnLAogICAgICAgICAgICAnQTE5MkNCQy1IUzM4NCcgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXENvbnRlbnRFbmNyeXB0aW9uXEExOTJDQkNIUzM4NCcsCiAgICAgICAgICAgICdBMjU2Q0JDLUhTNTEyJyAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cQ29udGVudEVuY3J5cHRpb25cQTI1NkNCQ0hTNTEyJywKICAgICAgICAgICAgJ0ExMjhLVycgICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEExMjhLVycsCiAgICAgICAgICAgICdBMTkyS1cnICAgICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxBMTkyS1cnLAogICAgICAgICAgICAnQTI1NktXJyAgICAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cQTI1NktXJywKICAgICAgICAgICAgJ0ExMjhHQ01LVycgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEExMjhHQ01LVycsCiAgICAgICAgICAgICdBMTkyR0NNS1cnICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxBMTkyR0NNS1cnLAogICAgICAgICAgICAnQTI1NkdDTUtXJyAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cQTI1NkdDTUtXJywKICAgICAgICAgICAgJ2RpcicgICAgICAgICAgICAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXERpcicsCiAgICAgICAgICAgICdFQ0RILUVTJyAgICAgICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxFQ0RIRVMnLAogICAgICAgICAgICAnRUNESC1FUytBMTI4S1cnICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cRUNESEVTQTEyOEtXJywKICAgICAgICAgICAgJ0VDREgtRVMrQTE5MktXJyAgICAgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXEVDREhFU0ExOTJLVycsCiAgICAgICAgICAgICdFQ0RILUVTK0EyNTZLVycgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxFQ0RIRVNBMjU2S1cnLAogICAgICAgICAgICAnUEJFUzItSFMyNTYrQTEyOEtXJyA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cUEJFUzJIUzI1NkExMjhLVycsCiAgICAgICAgICAgICdQQkVTMi1IUzM4NCtBMTkyS1cnID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxQQkVTMkhTMzg0QTE5MktXJywKICAgICAgICAgICAgJ1BCRVMyLUhTNTEyK0EyNTZLVycgPT4gJ1xKb3NlXEFsZ29yaXRobVxLZXlFbmNyeXB0aW9uXFBCRVMySFM1MTJBMjU2S1cnLAogICAgICAgICAgICAnUlNBMV81JyAgICAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cUlNBMTUnLAogICAgICAgICAgICAnUlNBLU9BRVAnICAgICAgICAgICA9PiAnXEpvc2VcQWxnb3JpdGhtXEtleUVuY3J5cHRpb25cUlNBT0FFUCcsCiAgICAgICAgICAgICdSU0EtT0FFUC0yNTYnICAgICAgID0+ICdcSm9zZVxBbGdvcml0aG1cS2V5RW5jcnlwdGlvblxSU0FPQUVQMjU2JywKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/CheckerManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQ2hlY2tlclxDaGVja2VyTWFuYWdlcjsKdXNlIEpvc2VcQ2hlY2tlclxDaGVja2VyTWFuYWdlckludGVyZmFjZTsKdXNlIEpvc2VcQ2hlY2tlclxDbGFpbUNoZWNrZXJJbnRlcmZhY2U7CnVzZSBKb3NlXENoZWNrZXJcSGVhZGVyQ2hlY2tlckludGVyZmFjZTsKCmZpbmFsIGNsYXNzIENoZWNrZXJNYW5hZ2VyRmFjdG9yeQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxDaGVja2VyXENsYWltQ2hlY2tlckludGVyZmFjZVtdICAkY2xhaW1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ2hlY2tlclxIZWFkZXJDaGVja2VySW50ZXJmYWNlW10gJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVDbGFpbUNoZWNrZXJNYW5hZ2VyKGFycmF5ICRjbGFpbXMgPSBbJ2V4cCcsICdpYXQnLCAnbmJmJ10sIGFycmF5ICRoZWFkZXJzID0gWydjcml0J10pCiAgICB7CiAgICAgICAgJGNoZWNrZXJfbWFuYWdlciA9IG5ldyBDaGVja2VyTWFuYWdlcigpOwoKICAgICAgICBzZWxmOjpwb3B1bGF0ZUNsYWltQ2hlY2tlcnMoJGNoZWNrZXJfbWFuYWdlciwgJGNsYWltcyk7CiAgICAgICAgc2VsZjo6cG9wdWxhdGVIZWFkZXJDaGVja2VycygkY2hlY2tlcl9tYW5hZ2VyLCAkaGVhZGVycyk7CgogICAgICAgIHJldHVybiAkY2hlY2tlcl9tYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UgJGNoZWNrZXJfbWFuYWdlcgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNsYWltcwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZUNsYWltQ2hlY2tlcnMoQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UgJiRjaGVja2VyX21hbmFnZXIsIGFycmF5ICRjbGFpbXMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGNsYWltcyBhcyAkY2xhaW0pIHsKICAgICAgICAgICAgaWYgKCRjbGFpbSBpbnN0YW5jZW9mIENsYWltQ2hlY2tlckludGVyZmFjZSkgewogICAgICAgICAgICAgICAgJGNoZWNrZXJfbWFuYWdlci0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2U7CnVzZSBKb3NlXENvbXByZXNzaW9uXENvbXByZXNzaW9uTWFuYWdlcjsKCmZpbmFsIGNsYXNzIENvbXByZXNzaW9uTWFuYWdlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25JbnRlcmZhY2VbXSAkbWV0aG9kcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcQ29tcHJlc3Npb25cQ29tcHJlc3Npb25NYW5hZ2VySW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQ29tcHJlc3Npb25NYW5hZ2VyKGFycmF5ICRtZXRob2RzKQogICAgewogICAgICAgICRjb21wcmVzc2lvbl9tYW5hZ2VyID0gbmV3IENvbXByZXNzaW9uTWFuYWdlcigpOwoKICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbWV0aG9kKSB7CiAgICAgICAgICAgIGlmICgkbWV0aG9kIGluc3RhbmNlb2YgQ29tcHJlc3Npb25JbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICRjb21wcmVzc2lvbl9tYW5hZ2VyLT5hZGRDb21wcmVzc2lvbkFsZ29yaXRobSgkbWV0aG9kKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCRtZXRob2QsICdCYWQgYXJndW1lbnQ6IG11c3QgYmUgYSBsaXN0IHdpdGggZWl0aGVyIG1ldGhvZCBuYW1lcyAoc3RyaW5nKSBvciBpbnN0YW5jZXMgb2YgQ29tcHJlc3Npb25JbnRlcmZhY2UuJyk7CiAgICAgICAgICAgICAgICAkY2xhc3MgPSBzZWxmOjpnZXRNZXRob2RDbGFzcygkbWV0aG9kKTsKICAgICAgICAgICAgICAgICRjb21wcmVzc2lvbl9tYW5hZ2VyLT5hZGRDb21wcmVzc2lvbkFsZ29yaXRobShuZXcgJGNsYXNzKCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbXByZXNzaW9uX21hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2QKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNBbGdvcml0aG1TdXBwb3J0ZWQoJG1ldGhvZCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkbWV0aG9kLCBzZWxmOjpnZXRTdXBwb3J0ZWRNZXRob2RzKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0TWV0aG9kQ2xhc3MoJG1ldGhvZCkKICAgIHsKICAgICAgICBBc3NlcnRpb246OnRydWUoc2VsZjo6aXNBbGdvcml0aG1TdXBwb3J0ZWQoJG1ldGhvZCksIHNwcmludGYoJ0NvbXByZXNzaW9uIG1ldGhvZCAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuJywgJG1ldGhvZCkpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VwcG9ydGVkTWV0aG9kcygpWyRtZXRob2RdOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZE1ldGhvZHMoKQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdERUYnICA9PiAnXEpvc2VcQ29tcHJlc3Npb25cRGVmbGF0ZScsCiAgICAgICAgICAgICdHWicgICA9PiAnXEpvc2VcQ29tcHJlc3Npb25cR1ppcCcsCiAgICAgICAgICAgICdaTElCJyA9PiAnXEpvc2VcQ29tcHJlc3Npb25cWkxpYicsCiAgICAgICAgXTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWEFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcRW5jcnlwdGVyOwp1c2UgSm9zZVxPYmplY3RcSldFOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgSldFRmFjdG9yeSBpbXBsZW1lbnRzIEpXRUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldFKCRwYXlsb2FkLCBhcnJheSAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gW10sIGFycmF5ICRzaGFyZWRfaGVhZGVycyA9IFtdLCAkYWFkID0gbnVsbCkKICAgIHsKICAgICAgICAkandlID0gbmV3IEpXRSgpOwogICAgICAgICRqd2UgPSAkandlLT53aXRoU2hhcmVkUHJvdGVjdGVkSGVhZGVycygkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzKTsKICAgICAgICAkandlID0gJGp3ZS0+d2l0aFNoYXJlZEhlYWRlcnMoJHNoYXJlZF9oZWFkZXJzKTsKICAgICAgICAkandlID0gJGp3ZS0+d2l0aFBheWxvYWQoJHBheWxvYWQpOwoKICAgICAgICBpZiAobnVsbCAhPT0gJGFhZCkgewogICAgICAgICAgICAkandlID0gJGp3ZS0+d2l0aEFBRCgkYWFkKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRVRvQ29tcGFjdEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycykKICAgIHsKICAgICAgICAkandlID0gc2VsZjo6Y3JlYXRlSldFQW5kRW5jcnlwdCgkcGF5bG9hZCwgJHJlY2lwaWVudF9rZXksICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMsIFtdLCBbXSwgbnVsbCk7CgogICAgICAgIHJldHVybiAkandlLT50b0NvbXBhY3RKU09OKDApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRVRvRmxhdHRlbmVkSlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5LCBhcnJheSAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gW10sICRzaGFyZWRfaGVhZGVycyA9IFtdLCAkcmVjaXBpZW50X2hlYWRlcnMgPSBbXSwgJGFhZCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3ZSA9IHNlbGY6OmNyZWF0ZUpXRUFuZEVuY3J5cHQoJHBheWxvYWQsICRyZWNpcGllbnRfa2V5LCAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzLCAkc2hhcmVkX2hlYWRlcnMsICRyZWNpcGllbnRfaGVhZGVycywgJGFhZCk7CgogICAgICAgIHJldHVybiAkandlLT50b0ZsYXR0ZW5lZEpTT04oMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRzaGFyZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgICAgICAkYWFkCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRUFuZEVuY3J5cHQoJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyA9IFtdLCAkc2hhcmVkX2hlYWRlcnMgPSBbXSwgJHJlY2lwaWVudF9oZWFkZXJzID0gW10sICRhYWQgPSBudWxsKQogICAgewogICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycywgJHNoYXJlZF9oZWFkZXJzLCAkcmVjaXBpZW50X2hlYWRlcnMpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnYWxnJywgJ05vICJhbGciIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlcicpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnZW5jJywgJ05vICJlbmMiIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlcicpOwogICAgICAgICRlbmNyeXB0ZXIgPSBFbmNyeXB0ZXI6OmNyZWF0ZUVuY3J5cHRlcihbJGNvbXBsZXRlX2hlYWRlcnNbJ2FsZyddXSwgWyRjb21wbGV0ZV9oZWFkZXJzWydlbmMnXV0sIFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgICAgICRqd2UgPSBzZWxmOjpjcmVhdGVKV0UoJHBheWxvYWQsICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMsICRzaGFyZWRfaGVhZGVycywgJGFhZCk7CgogICAgICAgICRqd2UgPSAkandlLT5hZGRSZWNpcGllbnRJbmZvcm1hdGlvbigkcmVjaXBpZW50X2tleSwgJHJlY2lwaWVudF9oZWFkZXJzKTsKCiAgICAgICAgJGVuY3J5cHRlci0+ZW5jcnlwdCgkandlKTsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWEFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKaW50ZXJmYWNlIEpXRUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgJHNoYXJlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGFhZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXRSgkcGF5bG9hZCwgYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyA9IFtdLCBhcnJheSAkc2hhcmVkX2hlYWRlcnMgPSBbXSwgJGFhZCA9IG51bGwpOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVKV0VUb0NvbXBhY3RKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXksIGFycmF5ICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRyZWNpcGllbnRfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2hhcmVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRyZWNpcGllbnRfaGVhZGVycwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICAgICAgJGFhZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldFVG9GbGF0dGVuZWRKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXksIGFycmF5ICRzaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMgPSBbXSwgJHNoYXJlZF9oZWFkZXJzID0gW10sICRyZWNpcGllbnRfaGVhZGVycyA9IFtdLCAkYWFkID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWKFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXEtleUNvbnZlcnRlclxFQ0tleTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXEtleUNvbnZlcnRlcjsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKdXNlIEpvc2VcT2JqZWN0XEpLVUpXS1NldDsKdXNlIEpvc2VcT2JqZWN0XEpXSzsKdXNlIEpvc2VcT2JqZWN0XEpXS1NldDsKdXNlIEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZTsKdXNlIEpvc2VcT2JqZWN0XEpXS1NldHM7CnVzZSBKb3NlXE9iamVjdFxQdWJsaWNKV0tTZXQ7CnVzZSBKb3NlXE9iamVjdFxSb3RhdGFibGVKV0tTZXQ7CnVzZSBKb3NlXE9iamVjdFxTdG9yYWJsZUpXSzsKdXNlIEpvc2VcT2JqZWN0XFN0b3JhYmxlSldLU2V0Owp1c2UgSm9zZVxPYmplY3RcWDVVSldLU2V0Owp1c2UgTWRhbnRlclxFY2NcQ3VydmVzXEN1cnZlRmFjdG9yeTsKdXNlIE1kYW50ZXJcRWNjXEN1cnZlc1xOaXN0Q3VydmU7CnVzZSBNZGFudGVyXEVjY1xFY2NGYWN0b3J5Owp1c2UgUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2U7CgpmaW5hbCBjbGFzcyBKV0tGYWN0b3J5IGltcGxlbWVudHMgSldLRmFjdG9yeUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQdWJsaWNLZXlTZXQoSldLU2V0SW50ZXJmYWNlICRqd2tzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBQdWJsaWNKV0tTZXQoJGp3a3NldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlS2V5U2V0cyhhcnJheSAkandrc2V0cyA9IFtdKQogICAgewogICAgICAgIHJldHVybiBuZXcgSldLU2V0cygkandrc2V0cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlU3RvcmFibGVLZXkoJGZpbGVuYW1lLCBhcnJheSAkcGFyYW1ldGVycykKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFN0b3JhYmxlSldLKCRmaWxlbmFtZSwgJHBhcmFtZXRlcnMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVJvdGF0YWJsZUtleVNldCgkZmlsZW5hbWUsIGFycmF5ICRwYXJhbWV0ZXJzLCAkbmJfa2V5cykKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFJvdGF0YWJsZUpXS1NldCgkZmlsZW5hbWUsICRwYXJhbWV0ZXJzLCAkbmJfa2V5cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlU3RvcmFibGVLZXlTZXQoJGZpbGVuYW1lLCBhcnJheSAkcGFyYW1ldGVycywgJG5iX2tleXMpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBTdG9yYWJsZUpXS1NldCgkZmlsZW5hbWUsICRwYXJhbWV0ZXJzLCAkbmJfa2V5cyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlS2V5KGFycmF5ICRjb25maWcpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGNvbmZpZywgJ2t0eScsICdUaGUga2V5ICJrdHkiIG11c3QgYmUgc2V0Jyk7CiAgICAgICAgJHN1cHBvcnRlZF90eXBlcyA9IFsnUlNBJyA9PiAnUlNBJywgJ09LUCcgPT4gJ09LUCcsICdFQycgPT4gJ0VDJywgJ29jdCcgPT4gJ09jdCcsICdub25lJyA9PiAnTm9uZSddOwogICAgICAgICRrdHkgPSAkY29uZmlnWydrdHknXTsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkc3VwcG9ydGVkX3R5cGVzLCAka3R5LCBzcHJpbnRmKCdUaGUga2V5IHR5cGUgIiVzIiBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgdXNlIG9uZSBvZiAlcycsICRrdHksIGpzb25fZW5jb2RlKGFycmF5X2tleXMoJHN1cHBvcnRlZF90eXBlcykpKSk7CiAgICAgICAgJG1ldGhvZCA9IHNwcmludGYoJ2NyZWF0ZSVzS2V5JywgJHN1cHBvcnRlZF90eXBlc1ska3R5XSk7CgogICAgICAgIHJldHVybiBzZWxmOjokbWV0aG9kKCRjb25maWcpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVJTQUtleShhcnJheSAkdmFsdWVzKQogICAgewogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCR2YWx1ZXMsICdzaXplJywgJ1RoZSBrZXkgc2l6ZSBpcyBub3Qgc2V0LicpOwogICAgICAgICRzaXplID0gJHZhbHVlc1snc2l6ZSddOwogICAgICAgIHVuc2V0KCR2YWx1ZXNbJ3NpemUnXSk7CgogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgwID09PSAkc2l6ZSAlIDgsICdJbnZhbGlkIGtleSBzaXplLicpOwogICAgICAgIEFzc2VydGlvbjo6Z3JlYXRlck9yRXF1YWxUaGFuKCRzaXplLCAzODQsICdLZXkgbGVuZ3RoIGlzIHRvbyBzaG9ydC4gSXQgbmVlZHMgdG8gYmUgYXQgbGVhc3QgMzg0IGJpdHMuJyk7CgogICAgICAgICRrZXkgPSBvcGVuc3NsX3BrZXlfbmV3KFsKICAgICAgICAgICAgJ3ByaXZhdGVfa2V5X2JpdHMnID0+ICRzaXplLAogICAgICAgICAgICAncHJpdmF0ZV9rZXlfdHlwZScgPT4gT1BFTlNTTF9LRVlUWVBFX1JTQSwKICAgICAgICBdKTsKICAgICAgICBvcGVuc3NsX3BrZXlfZXhwb3J0KCRrZXksICRvdXQpOwogICAgICAgICRyc2EgPSBuZXcgUlNBS2V5KCRvdXQpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgJHZhbHVlcywKICAgICAgICAgICAgJHJzYS0+dG9BcnJheSgpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRUNLZXkoYXJyYXkgJHZhbHVlcykKICAgIHsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkdmFsdWVzLCAnY3J2JywgJ1RoZSBjdXJ2ZSBpcyBub3Qgc2V0LicpOwogICAgICAgICRjdXJ2ZSA9ICR2YWx1ZXNbJ2NydiddOwogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ29wZW5zc2xfZ2V0X2N1cnZlX25hbWVzJykpIHsKICAgICAgICAgICAgJGFyZ3MgPSBbCiAgICAgICAgICAgICAgICAnY3VydmVfbmFtZScgICAgICAgPT4gc2VsZjo6Z2V0T3BlbnNzbE5hbWUoJGN1cnZlKSwKICAgICAgICAgICAgICAgICdwcml2YXRlX2tleV90eXBlJyA9PiBPUEVOU1NMX0tFWVRZUEVfRUMsCiAgICAgICAgICAgIF07CiAgICAgICAgICAgICRrZXkgPSBvcGVuc3NsX3BrZXlfbmV3KCRhcmdzKTsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9leHBvcnQoJGtleSwgJG91dCk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgkcmVzLCAnVW5hYmxlIHRvIGNyZWF0ZSB0aGUga2V5Jyk7CgogICAgICAgICAgICAkcnNhID0gbmV3IEVDS2V5KCRvdXQpOwogICAgICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICAgICAgJHJzYS0+dG9BcnJheSgpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY3VydmVfbmFtZSA9IHNlbGY6OmdldE5pc3ROYW1lKCRjdXJ2ZSk7CiAgICAgICAgICAgICRnZW5lcmF0b3IgPSBDdXJ2ZUZhY3Rvcnk6OmdldEdlbmVyYXRvckJ5TmFtZSgkY3VydmVfbmFtZSk7CiAgICAgICAgICAgICRwcml2YXRlX2tleSA9ICRnZW5lcmF0b3ItPmNyZWF0ZVByaXZhdGVLZXkoKTsKCiAgICAgICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICR2YWx1ZXMsCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgJ2t0eScgPT4gJ0VDJywKICAgICAgICAgICAgICAgICAgICAnY3J2JyA9PiAkY3VydmUsCiAgICAgICAgICAgICAgICAgICAgJ3gnICAgPT4gc2VsZjo6ZW5jb2RlVmFsdWUoJHByaXZhdGVfa2V5LT5nZXRQdWJsaWNLZXkoKS0+Z2V0UG9pbnQoKS0+Z2V0WCgpKSwKICAgICAgICAgICAgICAgICAgICAneScgICA9PiBzZWxmOjplbmNvZGVWYWx1ZSgkcHJpdmF0ZV9rZXktPmdldFB1YmxpY0tleSgpLT5nZXRQb2ludCgpLT5nZXRZKCkpLAogICAgICAgICAgICAgICAgICAgICdkJyAgID0+IHNlbGY6OmVuY29kZVZhbHVlKCRwcml2YXRlX2tleS0+Z2V0U2VjcmV0KCkpLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT2N0S2V5KGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHZhbHVlcywgJ3NpemUnLCAnVGhlIGtleSBzaXplIGlzIG5vdCBzZXQuJyk7CiAgICAgICAgJHNpemUgPSAkdmFsdWVzWydzaXplJ107CiAgICAgICAgdW5zZXQoJHZhbHVlc1snc2l6ZSddKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoMCA9PT0gJHNpemUgJSA4LCAnSW52YWxpZCBrZXkgc2l6ZS4nKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICR2YWx1ZXMsCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdrdHknID0+ICdvY3QnLAogICAgICAgICAgICAgICAgJ2snICAgPT4gQmFzZTY0VXJsOjplbmNvZGUocmFuZG9tX2J5dGVzKCRzaXplIC8gOCkpLAogICAgICAgICAgICBdCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT0tQS2V5KGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHZhbHVlcywgJ2NydicsICdUaGUgY3VydmUgaXMgbm90IHNldC4nKTsKICAgICAgICAkY3VydmUgPSAkdmFsdWVzWydjcnYnXTsKICAgICAgICBzd2l0Y2ggKCRjdXJ2ZSkgewogICAgICAgICAgICBjYXNlICdYMjU1MTknOgogICAgICAgICAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGZ1bmN0aW9uX2V4aXN0cygnY3VydmUyNTUxOV9wdWJsaWMnKSwgc3ByaW50ZignVW5zdXBwb3J0ZWQgIiVzIiBjdXJ2ZScsICRjdXJ2ZSkpOwogICAgICAgICAgICAgICAgJGQgPSByYW5kb21fYnl0ZXMoMzIpOwogICAgICAgICAgICAgICAgJHggPSBjdXJ2ZTI1NTE5X3B1YmxpYygkZCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnRWQyNTUxOSc6CiAgICAgICAgICAgICAgICBBc3NlcnRpb246OnRydWUoZnVuY3Rpb25fZXhpc3RzKCdlZDI1NTE5X3B1YmxpY2tleScpLCBzcHJpbnRmKCdVbnN1cHBvcnRlZCAiJXMiIGN1cnZlJywgJGN1cnZlKSk7CiAgICAgICAgICAgICAgICAkZCA9IHJhbmRvbV9ieXRlcygzMik7CiAgICAgICAgICAgICAgICAkeCA9IGVkMjU1MTlfcHVibGlja2V5KCRkKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVW5zdXBwb3J0ZWQgIiVzIiBjdXJ2ZScsICRjdXJ2ZSkpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnT0tQJywKICAgICAgICAgICAgICAgICdjcnYnID0+ICRjdXJ2ZSwKICAgICAgICAgICAgICAgICd4JyAgID0+IEJhc2U2NFVybDo6ZW5jb2RlKCR4KSwKICAgICAgICAgICAgICAgICdkJyAgID0+IEJhc2U2NFVybDo6ZW5jb2RlKCRkKSwKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZU5vbmVLZXkoYXJyYXkgJHZhbHVlcykKICAgIHsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICR2YWx1ZXMsCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdrdHknID0+ICdub25lJywKICAgICAgICAgICAgICAgICdhbGcnID0+ICdub25lJywKICAgICAgICAgICAgICAgICd1c2UnID0+ICdzaWcnLAogICAgICAgICAgICBdCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGVuY29kZVZhbHVlKCR2YWx1ZSkKICAgIHsKICAgICAgICAkdmFsdWUgPSBnbXBfc3RydmFsKCR2YWx1ZSk7CgogICAgICAgIHJldHVybiBCYXNlNjRVcmw6OmVuY29kZShzZWxmOjpjb252ZXJ0RGVjVG9CaW4oJHZhbHVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnREZWNUb0JpbigkdmFsdWUpCiAgICB7CiAgICAgICAgJGFkYXB0ZXIgPSBFY2NGYWN0b3J5OjpnZXRBZGFwdGVyKCk7CgogICAgICAgIHJldHVybiBoZXgyYmluKCRhZGFwdGVyLT5kZWNIZXgoJHZhbHVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjdXJ2ZQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldE9wZW5zc2xOYW1lKCRjdXJ2ZSkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRjdXJ2ZSkgewogICAgICAgICAgICBjYXNlICdQLTI1Nic6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3ByaW1lMjU2djEnOwogICAgICAgICAgICBjYXNlICdQLTM4NCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3NlY3AzODRyMSc7CiAgICAgICAgICAgIGNhc2UgJ1AtNTIxJzoKICAgICAgICAgICAgICAgIHJldHVybiAnc2VjcDUyMXIxJzsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBjdXJ2ZSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuJywgJGN1cnZlKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY3VydmUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXROaXN0TmFtZSgkY3VydmUpCiAgICB7CiAgICAgICAgc3dpdGNoICgkY3VydmUpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgcmV0dXJuIE5pc3RDdXJ2ZTo6TkFNRV9QMjU2OwogICAgICAgICAgICBjYXNlICdQLTM4NCc6CiAgICAgICAgICAgICAgICByZXR1cm4gTmlzdEN1cnZlOjpOQU1FX1AzODQ7CiAgICAgICAgICAgIGNhc2UgJ1AtNTIxJzoKICAgICAgICAgICAgICAgIHJldHVybiBOaXN0Q3VydmU6Ok5BTUVfUDUyMTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBjdXJ2ZSAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuJywgJGN1cnZlKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21WYWx1ZXMoYXJyYXkgJHZhbHVlcykKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygna2V5cycsICR2YWx1ZXMpICYmIGlzX2FycmF5KCR2YWx1ZXNbJ2tleXMnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBKV0tTZXQoJHZhbHVlcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tQ2VydGlmaWNhdGVGaWxlKCRmaWxlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkS2V5RnJvbUNlcnRpZmljYXRlRmlsZSgkZmlsZSk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21DZXJ0aWZpY2F0ZSgkY2VydGlmaWNhdGUsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKQogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnRpZmljYXRlKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVg1MDlSZXNvdXJjZSgkcmVzLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkS2V5RnJvbVg1MDlSZXNvdXJjZSgkcmVzKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleUZpbGUoJGZpbGUsICRwYXNzd29yZCA9IG51bGwsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKQogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRGcm9tS2V5RmlsZSgkZmlsZSwgJHBhc3N3b3JkKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleSgka2V5LCAkcGFzc3dvcmQgPSBudWxsLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSkKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkRnJvbUtleSgka2V5LCAkcGFzc3dvcmQpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgkdmFsdWVzLCAkYWRkaXRpb25hbF92YWx1ZXMpOwoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tSktVKCRqa3UsICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbiA9IGZhbHNlLCBDYWNoZUl0ZW1Qb29sSW50ZXJmYWNlICRjYWNoZSA9IG51bGwsICR0dGwgPSA4NjQwMCwgJGFsbG93X2h0dHBfY29ubmVjdGlvbiA9IGZhbHNlKQogICAgewogICAgICAgIHJldHVybiBuZXcgSktVSldLU2V0KCRqa3UsICRjYWNoZSwgJHR0bCwgJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uLCAkYWxsb3dfaHR0cF9jb25uZWN0aW9uKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDVVKCR4NXUsICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbiA9IGZhbHNlLCBDYWNoZUl0ZW1Qb29sSW50ZXJmYWNlICRjYWNoZSA9IG51bGwsICR0dGwgPSA4NjQwMCwgJGFsbG93X2h0dHBfY29ubmVjdGlvbiA9IGZhbHNlKQogICAgewogICAgICAgIHJldHVybiBuZXcgWDVVSldLU2V0KCR4NXUsICRjYWNoZSwgJHR0bCwgJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uLCAkYWxsb3dfaHR0cF9jb25uZWN0aW9uKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDVDKGFycmF5ICR4NWMsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKQogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRGcm9tWDVDKCR4NWMpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgkdmFsdWVzLCAkYWRkaXRpb25hbF92YWx1ZXMpOwoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5U2V0KEpXS1NldEludGVyZmFjZSAkandrX3NldCwgJGtleV9pbmRleCkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmludGVnZXIoJGtleV9pbmRleCk7CgogICAgICAgIHJldHVybiAkandrX3NldC0+Z2V0S2V5KCRrZXlfaW5kZXgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWKFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlOwp1c2UgUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2U7CgppbnRlcmZhY2UgSldLRmFjdG9yeUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVQdWJsaWNLZXlTZXQoSldLU2V0SW50ZXJmYWNlICRqd2tzZXQpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2VbXSAkandrc2V0cwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUtleVNldHMoYXJyYXkgJGp3a3NldHMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZQogICAgICogQHBhcmFtIGFycmF5ICAkcGFyYW1ldGVycwogICAgICogQHBhcmFtIGludCAgICAkbmJfa2V5cwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVN0b3JhYmxlS2V5U2V0KCRmaWxlbmFtZSwgYXJyYXkgJHBhcmFtZXRlcnMsICRuYl9rZXlzKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICRwYXJhbWV0ZXJzCiAgICAgKiBAcGFyYW0gaW50ICAgICRuYl9rZXlzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUm90YXRhYmxlS2V5U2V0KCRmaWxlbmFtZSwgYXJyYXkgJHBhcmFtZXRlcnMsICRuYl9rZXlzKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICRwYXJhbWV0ZXJzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlU3RvcmFibGVLZXkoJGZpbGVuYW1lLCBhcnJheSAkcGFyYW1ldGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbmZpZwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUtleShhcnJheSAkY29uZmlnKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIFZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleS4gTXVzdCBjb250YWluIGF0IGxlYXN0IHRoZSBpbmRleCAnc2l6ZScgd2l0aCB0aGUga2V5IHNpemUgaW4gYml0cwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVJTQUtleShhcnJheSAkdmFsdWVzKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIFZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleS4gTXVzdCBjb250YWluIGF0IGxlYXN0IHRoZSBpbmRleCAnY3J2JyB3aXRoIHRoZSBjdXJ2ZQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUVDS2V5KGFycmF5ICR2YWx1ZXMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgVmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5LiBNdXN0IGNvbnRhaW4gYXQgbGVhc3QgdGhlIGluZGV4ICdzaXplJyB3aXRoIHRoZSBrZXkgc2l6ZSBpbiBiaXRzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT2N0S2V5KGFycmF5ICR2YWx1ZXMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgVmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5LiBNdXN0IGNvbnRhaW4gYXQgbGVhc3QgdGhlIGluZGV4ICdjcnYnIHdpdGggdGhlIGN1cnZlCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT0tQS2V5KGFycmF5ICR2YWx1ZXMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgVmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5LgogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZU5vbmVLZXkoYXJyYXkgJHZhbHVlcyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZXxcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVZhbHVlcyhhcnJheSAkdmFsdWVzKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGUKICAgICAqIEBwYXJhbSBhcnJheSAgJGFkZGl0aW9uYWxfdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUNlcnRpZmljYXRlRmlsZSgkZmlsZSwgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2VydGlmaWNhdGUKICAgICAqIEBwYXJhbSBhcnJheSAgJGFkZGl0aW9uYWxfdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUNlcnRpZmljYXRlKCRjZXJ0aWZpY2F0ZSwgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pOwoKICAgIC8qKgogICAgICogQHBhcmFtIHJlc291cmNlICRyZXMKICAgICAqIEBwYXJhbSBhcnJheSAgICAkYWRkaXRpb25hbF92YWx1ZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDUwOVJlc291cmNlKCRyZXMsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZmlsZQogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRwYXNzd29yZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICRhZGRpdGlvbmFsX3ZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21LZXlGaWxlKCRmaWxlLCAkcGFzc3dvcmQgPSBudWxsLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJGtleQogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRwYXNzd29yZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICRhZGRpdGlvbmFsX3ZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21LZXkoJGtleSwgJHBhc3N3b3JkID0gbnVsbCwgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRqa3UKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24KICAgICAqIEBwYXJhbSBcUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2V8bnVsbCAkY2FjaGUKICAgICAqIEBwYXJhbSBpbnR8bnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHRsCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93X2h0dHBfY29ubmVjdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21KS1UoJGprdSwgJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uID0gZmFsc2UsIENhY2hlSXRlbVBvb2xJbnRlcmZhY2UgJGNhY2hlID0gbnVsbCwgJHR0bCA9IDg2NDAwLCAkYWxsb3dfaHR0cF9jb25uZWN0aW9uID0gZmFsc2UpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR4NXUKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24KICAgICAqIEBwYXJhbSBcUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2V8bnVsbCAkY2FjaGUKICAgICAqIEBwYXJhbSBpbnR8bnVsbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHRsCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93X2h0dHBfY29ubmVjdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21YNVUoJHg1dSwgJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uID0gZmFsc2UsIENhY2hlSXRlbVBvb2xJbnRlcmZhY2UgJGNhY2hlID0gbnVsbCwgJHR0bCA9IDg2NDAwLCAkYWxsb3dfaHR0cF9jb25uZWN0aW9uID0gZmFsc2UpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR4NWMKICAgICAqIEBwYXJhbSBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDVDKGFycmF5ICR4NWMsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5X2luZGV4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleVNldChKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQsICRrZXlfaW5kZXgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWSFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZTsKdXNlIEpvc2VcT2JqZWN0XEpXUzsKdXNlIEpvc2VcU2lnbmVyOwoKZmluYWwgY2xhc3MgSldTRmFjdG9yeSBpbXBsZW1lbnRzIEpXU0ZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTKCRwYXlsb2FkLCAkaXNfcGF5bG9hZF9kZXRhY2hlZCA9IGZhbHNlKQogICAgewogICAgICAgICRqd3MgPSBuZXcgSldTKCk7CiAgICAgICAgJGp3cyA9ICRqd3MtPndpdGhQYXlsb2FkKCRwYXlsb2FkKTsKICAgICAgICBpZiAodHJ1ZSA9PT0gJGlzX3BheWxvYWRfZGV0YWNoZWQpIHsKICAgICAgICAgICAgJGp3cyA9ICRqd3MtPndpdGhEZXRhY2hlZFBheWxvYWQoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkandzID0gJGp3cy0+d2l0aEF0dGFjaGVkUGF5bG9hZCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTVG9Db21wYWN0SlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJGp3cyA9IHNlbGY6OmNyZWF0ZUpXU0FuZFNpZ24oJHBheWxvYWQsICRzaWduYXR1cmVfa2V5LCAkcHJvdGVjdGVkX2hlYWRlcnMsIFtdKTsKCiAgICAgICAgcmV0dXJuICRqd3MtPnRvQ29tcGFjdEpTT04oMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTV2l0aERldGFjaGVkUGF5bG9hZFRvQ29tcGFjdEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzKQogICAgewogICAgICAgICRqd3MgPSBzZWxmOjpjcmVhdGVKV1NXaXRoRGV0YWNoZWRQYXlsb2FkQW5kU2lnbigkcGF5bG9hZCwgJHNpZ25hdHVyZV9rZXksICRwcm90ZWN0ZWRfaGVhZGVycywgW10pOwoKICAgICAgICByZXR1cm4gJGp3cy0+dG9Db21wYWN0SlNPTigwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVKV1NUb0ZsYXR0ZW5lZEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzID0gW10sICRoZWFkZXJzID0gW10pCiAgICB7CiAgICAgICAgJGp3cyA9IHNlbGY6OmNyZWF0ZUpXU0FuZFNpZ24oJHBheWxvYWQsICRzaWduYXR1cmVfa2V5LCAkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzKTsKCiAgICAgICAgcmV0dXJuICRqd3MtPnRvRmxhdHRlbmVkSlNPTigwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVKV1NXaXRoRGV0YWNoZWRQYXlsb2FkVG9GbGF0dGVuZWRKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRwcm90ZWN0ZWRfaGVhZGVycyA9IFtdLCAkaGVhZGVycyA9IFtdKQogICAgewogICAgICAgICRqd3MgPSBzZWxmOjpjcmVhdGVKV1NXaXRoRGV0YWNoZWRQYXlsb2FkQW5kU2lnbigkcGF5bG9hZCwgJHNpZ25hdHVyZV9rZXksICRwcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMpOwoKICAgICAgICByZXR1cm4gJGp3cy0+dG9GbGF0dGVuZWRKU09OKDApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTQW5kU2lnbigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMgPSBbXSwgJGhlYWRlcnMgPSBbXSkKICAgIHsKICAgICAgICAkandzID0gc2VsZjo6Y3JlYXRlSldTKCRwYXlsb2FkKTsKCiAgICAgICAgJGp3cyA9ICRqd3MtPmFkZFNpZ25hdHVyZUluZm9ybWF0aW9uKCRzaWduYXR1cmVfa2V5LCAkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzKTsKCiAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgPSBhcnJheV9tZXJnZSgkcHJvdGVjdGVkX2hlYWRlcnMsICRoZWFkZXJzKTsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkY29tcGxldGVfaGVhZGVycywgJ2FsZycsICdObyAiYWxnIiBwYXJhbWV0ZXIgc2V0IGluIHRoZSBoZWFkZXInKTsKICAgICAgICAkc2lnbmVyID0gU2lnbmVyOjpjcmVhdGVTaWduZXIoWyRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXV0pOwogICAgICAgICRzaWduZXItPnNpZ24oJGp3cyk7CgogICAgICAgIHJldHVybiAkandzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTV2l0aERldGFjaGVkUGF5bG9hZEFuZFNpZ24oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzID0gW10sICRoZWFkZXJzID0gW10pCiAgICB7CiAgICAgICAgJGp3cyA9IHNlbGY6OmNyZWF0ZUpXUygkcGF5bG9hZCwgdHJ1ZSk7CgogICAgICAgICRqd3MgPSAkandzLT5hZGRTaWduYXR1cmVJbmZvcm1hdGlvbigkc2lnbmF0dXJlX2tleSwgJHByb3RlY3RlZF9oZWFkZXJzLCAkaGVhZGVycyk7CgogICAgICAgICRjb21wbGV0ZV9oZWFkZXJzID0gYXJyYXlfbWVyZ2UoJHByb3RlY3RlZF9oZWFkZXJzLCAkaGVhZGVycyk7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGNvbXBsZXRlX2hlYWRlcnMsICdhbGcnLCAnTm8gImFsZyIgcGFyYW1ldGVyIHNldCBpbiB0aGUgaGVhZGVyJyk7CiAgICAgICAgJHNpZ25lciA9IFNpZ25lcjo6Y3JlYXRlU2lnbmVyKFskY29tcGxldGVfaGVhZGVyc1snYWxnJ11dKTsKICAgICAgICAkc2lnbmVyLT5zaWduKCRqd3MpOwoKICAgICAgICByZXR1cm4gJGp3czsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Factory/JWSFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEZhY3Rvcnk7Cgp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKaW50ZXJmYWNlIEpXU0ZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHBheWxvYWQKICAgICAqIEBwYXJhbSBib29sICAkaXNfcGF5bG9hZF9kZXRhY2hlZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXUygkcGF5bG9hZCwgJGlzX3BheWxvYWRfZGV0YWNoZWQgPSBmYWxzZSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlSldTVG9Db21wYWN0SlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMpOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXU1dpdGhEZXRhY2hlZFBheWxvYWRUb0NvbXBhY3RKU09OKCRwYXlsb2FkLCBKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRwcm90ZWN0ZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXU1RvRmxhdHRlbmVkSlNPTigkcGF5bG9hZCwgSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMgPSBbXSwgJGhlYWRlcnMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUpXU1dpdGhEZXRhY2hlZFBheWxvYWRUb0ZsYXR0ZW5lZEpTT04oJHBheWxvYWQsIEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzID0gW10sICRoZWFkZXJzID0gW10pOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/JWTCreator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgpmaW5hbCBjbGFzcyBKV1RDcmVhdG9yIGltcGxlbWVudHMgSldUQ3JlYXRvckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcRW5jcnlwdGVySW50ZXJmYWNlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkZW5jcnlwdGVyID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcU2lnbmVySW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25lcjsKCiAgICAvKioKICAgICAqIEpXVENyZWF0b3IgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXFNpZ25lckludGVyZmFjZSAkc2lnbmVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTaWduZXJJbnRlcmZhY2UgJHNpZ25lcikKICAgIHsKICAgICAgICAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKaW50ZXJmYWNlIEpXVENyZWF0b3JJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcRW5jcnlwdGVySW50ZXJmYWNlICRlbmNyeXB0ZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuYWJsZUVuY3J5cHRpb25TdXBwb3J0KEVuY3J5cHRlckludGVyZmFjZSAkZW5jcnlwdGVyKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICAgICRwYXlsb2FkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkc2lnbmF0dXJlX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaWduKCRwYXlsb2FkLCBhcnJheSAkc2lnbmF0dXJlX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRwYXlsb2FkCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZW5jcnlwdGlvbl9wcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGVuY3J5cHRpb25fa2V5CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHQoJHBheWxvYWQsIGFycmF5ICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRlbmNyeXB0aW9uX2tleSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAkcGF5bG9hZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHNpZ25hdHVyZV9wcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkZW5jcnlwdGlvbl9rZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbkFuZEVuY3J5cHQoJHBheWxvYWQsIGFycmF5ICRzaWduYXR1cmVfcHJvdGVjdGVkX2hlYWRlcnMsIE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRlbmNyeXB0aW9uX3Byb3RlY3RlZF9oZWFkZXJzLCBPYmplY3RcSldLSW50ZXJmYWNlICRlbmNyeXB0aW9uX2tleSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRTaWduYXR1cmVBbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRLZXlFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29udGVudEVuY3J5cHRpb25BbGdvcml0aG1zKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdXBwb3J0ZWRDb21wcmVzc2lvbk1ldGhvZHMoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbmNyeXB0aW9uU3VwcG9ydEVuYWJsZWQoKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/JWTLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgpmaW5hbCBjbGFzcyBKV1RMb2FkZXIgaW1wbGVtZW50cyBKV1RMb2FkZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXExvYWRlckludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRsb2FkZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkY2hlY2tlcl9tYW5hZ2VyOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxEZWNyeXB0ZXJJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlICRkZWNyeXB0ZXIgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxWZXJpZmllckludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICR2ZXJpZmllcjsKCiAgICAvKioKICAgICAqIEpXVExvYWRlciBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcQ2hlY2tlclxDaGVja2VyTWFuYWdlckludGVyZmFjZSAkY2hlY2tlcl9tYW5hZ2VyCiAgICAgKiBAcGFyYW0gXEpvc2VcVmVyaWZpZXJJbnRlcmZhY2UgICAgICAgICAgICAgICAkdmVyaWZpZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENoZWNrZXJcQ2hlY2tlck1hbmFnZXJJbnRlcmZhY2UgJGNoZWNrZXJfbWFuYWdlciwgVmVyaWZpZXJJbnRlcmZhY2UgJHZlcmlmaWVyKQogICAgewogICAgICAgICR0aGlzLT5jaGVja2VyX21hbmFnZXIgPSAkY2hlY2tlcl9tYW5hZ2VyOwogICAgICAgICR0aGlzLT52ZXJpZmllciA9ICR2ZXJpZmllcjsKICAgICAgICAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKaW50ZXJmYWNlIEpXVExvYWRlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxEZWNyeXB0ZXJJbnRlcmZhY2UgJGRlY3J5cHRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZW5hYmxlRGVjcnlwdGlvblN1cHBvcnQoRGVjcnlwdGVySW50ZXJmYWNlICRkZWNyeXB0ZXIpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0RlY3J5cHRpb25TdXBwb3J0RW5hYmxlZCgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkS2V5RW5jcnlwdGlvbkFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZENvbnRlbnRFbmNyeXB0aW9uQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ29tcHJlc3Npb25NZXRob2RzKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhc3NlcnRpb24KICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlfG51bGwgJGVuY3J5cHRpb25fa2V5X3NldAogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaXNfZW5jcnlwdGlvbl9yZXF1aXJlZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZCgkYXNzZXJ0aW9uLCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRlbmNyeXB0aW9uX2tleV9zZXQgPSBudWxsLCAkaXNfZW5jcnlwdGlvbl9yZXF1aXJlZCA9IGZhbHNlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICRqd3MKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRzaWduYXR1cmVfa2V5X3NldAogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5KE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkc2lnbmF0dXJlX2tleV9zZXQsICRkZXRhY2hlZF9wYXlsb2FkID0gbnVsbCk7Cn0K]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEtleUNvbnZlcnRlcjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEZHXEFTTjFcRXhwbGljaXRseVRhZ2dlZE9iamVjdDsKdXNlIEZHXEFTTjFcT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPY3RldFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgRUNLZXkgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRwcml2YXRlID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2V8c3RyaW5nfGFycmF5ICRkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZGF0YSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgIGlmICgkZGF0YSBpbnN0YW5jZW9mIEpXS0ludGVyZmFjZSkgewogICAgICAgICAgICAkdGhpcy0+bG9hZEpXSygkZGF0YS0+Z2V0QWxsKCkpOwogICAgICAgIH0gZWxzZWlmIChpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJGRhdGEpKSB7CiAgICAgICAgICAgICR0aGlzLT5sb2FkUEVNKCRkYXRhKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQnKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnByaXZhdGUgPSBpc3NldCgkdGhpcy0+dmFsdWVzWydkJ10pOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YQogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICogQHRocm93cyBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRQRU0oJGRhdGEpCiAgICB7CiAgICAgICAgJGRhdGEgPSBiYXNlNjRfZGVjb2RlKHByZWdfcmVwbGFjZSgnIy0uKi18XHJ8XG4jJywgJycsICRkYXRhKSk7CiAgICAgICAgJGFzbk9iamVjdCA9IE9iamVjdDo6ZnJvbUJpbmFyeSgkZGF0YSk7CgogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRhc25PYmplY3QsIFNlcXVlbmNlOjpjbGFzcyk7CiAgICAgICAgJGNoaWxkcmVuID0gJGFzbk9iamVjdC0+Z2V0Q2hpbGRyZW4oKTsKICAgICAgICBpZiAoc2VsZjo6aXNQS0NTOCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgICRjaGlsZHJlbiA9IHNlbGY6OmxvYWRQS0NTOCgkY2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgaWYgKDQgPT09IGNvdW50KCRjaGlsZHJlbikpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5sb2FkUHJpdmF0ZVBFTSgkY2hpbGRyZW4pOwogICAgICAgIH0gZWxzZWlmICgyID09PSBjb3VudCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bG9hZFB1YmxpY1BFTSgkY2hpbGRyZW4pOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRjaGlsZHJlbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkUEtDUzgoYXJyYXkgJGNoaWxkcmVuKQogICAgewogICAgICAgICRiaW5hcnkgPSBoZXgyYmluKCRjaGlsZHJlblsyXS0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkYXNuT2JqZWN0ID0gT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnkpOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRhc25PYmplY3QsIFNlcXVlbmNlOjpjbGFzcyk7CgogICAgICAgIHJldHVybiAkYXNuT2JqZWN0LT5nZXRDaGlsZHJlbigpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRjaGlsZHJlbgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGlzUEtDUzgoYXJyYXkgJGNoaWxkcmVuKQogICAgewogICAgICAgIGlmICgzICE9PSBjb3VudCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRjbGFzc2VzID0gWzAgPT4gSW50ZWdlcjo6Y2xhc3MsIDEgPT4gU2VxdWVuY2U6OmNsYXNzLCAyID0+IE9jdGV0U3RyaW5nOjpjbGFzc107CiAgICAgICAgZm9yZWFjaCAoJGNsYXNzZXMgYXMgJGsgPT4gJGNsYXNzKSB7CiAgICAgICAgICAgIGlmICghJGNoaWxkcmVuWyRrXSBpbnN0YW5jZW9mICRjbGFzcykgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkandrCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9hZEpXSyhhcnJheSAkandrKQogICAgewogICAgICAgIEFzc2VydGlvbjo6dHJ1ZShhcnJheV9rZXlfZXhpc3RzKCdrdHknLCAkandrKSwgJ0pXSyBpcyBub3QgYW4gRWxsaXB0aWMgQ3VydmUga2V5Jyk7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgkandrWydrdHknXSwgJ0VDJywgJ0pXSyBpcyBub3QgYW4gRWxsaXB0aWMgQ3VydmUga2V5Jyk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGFycmF5X2tleV9leGlzdHMoJ2NydicsICRqd2spLCAnQ3VydmUgcGFyYW1ldGVyIGlzIG1pc3NpbmcnKTsKICAgICAgICBBc3NlcnRpb246OnRydWUoYXJyYXlfa2V5X2V4aXN0cygneCcsICRqd2spLCAnUG9pbnQgcGFyYW1ldGVycyBhcmUgbWlzc2luZycpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZShhcnJheV9rZXlfZXhpc3RzKCd5JywgJGp3ayksICdQb2ludCBwYXJhbWV0ZXJzIGFyZSBtaXNzaW5nJyk7CgogICAgICAgICR0aGlzLT52YWx1ZXMgPSAkandrOwogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkJywgJGp3aykpIHsKICAgICAgICAgICAgJHRoaXMtPmluaXRQcml2YXRlS2V5KCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmluaXRQdWJsaWNLZXkoKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbml0UHVibGljS2V5KCkKICAgIHsKICAgICAgICAkb2lkX3NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICAgICAgJG9pZF9zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IE9iamVjdElkZW50aWZpZXIoJzEuMi44NDAuMTAwNDUuMi4xJykpOwogICAgICAgICRvaWRfc2VxdWVuY2UtPmFkZENoaWxkKG5ldyBPYmplY3RJZGVudGlmaWVyKCR0aGlzLT5nZXRPSUQoJHRoaXMtPnZhbHVlc1snY3J2J10pKSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKCRvaWRfc2VxdWVuY2UpOwoKICAgICAgICAkYml0cyA9ICcwNCc7CiAgICAgICAgJGJpdHMgLj0gYmluMmhleChCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWyd4J10pKTsKICAgICAgICAkYml0cyAuPSBiaW4yaGV4KEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ3knXSkpOwogICAgICAgICR0aGlzLT5hZGRDaGlsZChuZXcgQml0U3RyaW5nKCRiaXRzKSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbml0UHJpdmF0ZUtleSgpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKG5ldyBJbnRlZ2VyKDEpKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQobmV3IE9jdGV0U3RyaW5nKGJpbjJoZXgoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1snZCddKSkpKTsKCiAgICAgICAgJG9pZCA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCR0aGlzLT5nZXRPSUQoJHRoaXMtPnZhbHVlc1snY3J2J10pKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQobmV3IEV4cGxpY2l0bHlUYWdnZWRPYmplY3QoMCwgJG9pZCkpOwoKICAgICAgICAkYml0cyA9ICcwNCc7CiAgICAgICAgJGJpdHMgLj0gYmluMmhleChCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWyd4J10pKTsKICAgICAgICAkYml0cyAuPSBiaW4yaGV4KEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ3knXSkpOwogICAgICAgICRiaXQgPSBuZXcgQml0U3RyaW5nKCRiaXRzKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQobmV3IEV4cGxpY2l0bHlUYWdnZWRPYmplY3QoMSwgJGJpdCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRjaGlsZHJlbgogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkUHVibGljUEVNKGFycmF5ICRjaGlsZHJlbikKICAgIHsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkY2hpbGRyZW5bMF0sIFNlcXVlbmNlOjpjbGFzcywgJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CgogICAgICAgICRzdWIgPSAkY2hpbGRyZW5bMF0tPmdldENoaWxkcmVuKCk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJHN1YlswXSwgT2JqZWN0SWRlbnRpZmllcjo6Y2xhc3MsICdVbnN1cHBvcnRlZCBrZXkgdHlwZScpOwogICAgICAgIEFzc2VydGlvbjo6ZXEoJzEuMi44NDAuMTAwNDUuMi4xJywgJHN1YlswXS0+Z2V0Q29udGVudCgpLCAnVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKCiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJHN1YlsxXSwgT2JqZWN0SWRlbnRpZmllcjo6Y2xhc3MsICdVbnN1cHBvcnRlZCBrZXkgdHlwZScpOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjaGlsZHJlblsxXSwgQml0U3RyaW5nOjpjbGFzcywgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKCiAgICAgICAgJGJpdHMgPSAkY2hpbGRyZW5bMV0tPmdldENvbnRlbnQoKTsKICAgICAgICAkYml0c19sZW5ndGggPSBtYl9zdHJsZW4oJGJpdHMsICc4Yml0Jyk7CgogICAgICAgIEFzc2VydGlvbjo6ZXEoJzA0JywgbWJfc3Vic3RyKCRiaXRzLCAwLCAyLCAnOGJpdCcpLCAnVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKCiAgICAgICAgJHRoaXMtPnZhbHVlc1sna3R5J10gPSAnRUMnOwogICAgICAgICR0aGlzLT52YWx1ZXNbJ2NydiddID0gJHRoaXMtPmdldEN1cnZlKCRzdWJbMV0tPmdldENvbnRlbnQoKSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1sneCddID0gQmFzZTY0VXJsOjplbmNvZGUoaGV4MmJpbihtYl9zdWJzdHIoJGJpdHMsIDIsICgkYml0c19sZW5ndGggLSAyKSAvIDIsICc4Yml0JykpKTsKICAgICAgICAkdGhpcy0+dmFsdWVzWyd5J10gPSBCYXNlNjRVcmw6OmVuY29kZShoZXgyYmluKG1iX3N1YnN0cigkYml0cywgKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiArIDIsICgkYml0c19sZW5ndGggLSAyKSAvIDIsICc4Yml0JykpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcRkdcQVNOMVxPYmplY3QgJGNoaWxkcmVuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5VmVyc2lvbihPYmplY3QgJGNoaWxkcmVuKQogICAgewogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjaGlsZHJlbiwgSW50ZWdlcjo6Y2xhc3MsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgxLCAkY2hpbGRyZW4tPmdldENvbnRlbnQoKSwgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcRkdcQVNOMVxPYmplY3QgJGNoaWxkcmVuCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICR4CiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICR5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0WEFuZFkoT2JqZWN0ICRjaGlsZHJlbiwgJiR4LCAmJHkpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGNoaWxkcmVuLCBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0OjpjbGFzcywgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJGNoaWxkcmVuLT5nZXRDb250ZW50KCksICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGNoaWxkcmVuLT5nZXRDb250ZW50KClbMF0sIEJpdFN0cmluZzo6Y2xhc3MsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CgogICAgICAgICRiaXRzID0gJGNoaWxkcmVuLT5nZXRDb250ZW50KClbMF0tPmdldENvbnRlbnQoKTsKICAgICAgICAkYml0c19sZW5ndGggPSBtYl9zdHJsZW4oJGJpdHMsICc4Yml0Jyk7CgogICAgICAgIEFzc2VydGlvbjo6ZXEoJzA0JywgbWJfc3Vic3RyKCRiaXRzLCAwLCAyLCAnOGJpdCcpLCAnVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKCiAgICAgICAgJHggPSBtYl9zdWJzdHIoJGJpdHMsIDIsICgkYml0c19sZW5ndGggLSAyKSAvIDIsICc4Yml0Jyk7CiAgICAgICAgJHkgPSBtYl9zdWJzdHIoJGJpdHMsICgkYml0c19sZW5ndGggLSAyKSAvIDIgKyAyLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxGR1xBU04xXE9iamVjdCAkY2hpbGRyZW4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEQoT2JqZWN0ICRjaGlsZHJlbikKICAgIHsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkY2hpbGRyZW4sICdcRkdcQVNOMVxVbml2ZXJzYWxcT2N0ZXRTdHJpbmcnLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwoKICAgICAgICByZXR1cm4gJGNoaWxkcmVuLT5nZXRDb250ZW50KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNoaWxkcmVuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRQcml2YXRlUEVNKGFycmF5ICRjaGlsZHJlbikKICAgIHsKICAgICAgICAkdGhpcy0+dmVyaWZ5VmVyc2lvbigkY2hpbGRyZW5bMF0pOwogICAgICAgICR4ID0gbnVsbDsKICAgICAgICAkeSA9IG51bGw7CiAgICAgICAgJGQgPSAkdGhpcy0+Z2V0RCgkY2hpbGRyZW5bMV0pOwogICAgICAgICR0aGlzLT5nZXRYQW5kWSgkY2hpbGRyZW5bM10sICR4LCAkeSk7CgogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjaGlsZHJlblsyXSwgRXhwbGljaXRseVRhZ2dlZE9iamVjdDo6Y2xhc3MsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0FycmF5KCRjaGlsZHJlblsyXS0+Z2V0Q29udGVudCgpLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRjaGlsZHJlblsyXS0+Z2V0Q29udGVudCgpWzBdLCBPYmplY3RJZGVudGlmaWVyOjpjbGFzcywgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKCiAgICAgICAgJGN1cnZlID0gJGNoaWxkcmVuWzJdLT5nZXRDb250ZW50KClbMF0tPmdldENvbnRlbnQoKTsKCiAgICAgICAgJHRoaXMtPnByaXZhdGUgPSB0cnVlOwogICAgICAgICR0aGlzLT52YWx1ZXNbJ2t0eSddID0gJ0VDJzsKICAgICAgICAkdGhpcy0+dmFsdWVzWydjcnYnXSA9ICR0aGlzLT5nZXRDdXJ2ZSgkY3VydmUpOwogICAgICAgICR0aGlzLT52YWx1ZXNbJ2QnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKGhleDJiaW4oJGQpKTsKICAgICAgICAkdGhpcy0+dmFsdWVzWyd4J10gPSBCYXNlNjRVcmw6OmVuY29kZShoZXgyYmluKCR4KSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1sneSddID0gQmFzZTY0VXJsOjplbmNvZGUoaGV4MmJpbigkeSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1ByaXZhdGUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpdmF0ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcRUNLZXkgJHByaXZhdGUKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXEtleUNvbnZlcnRlclxFQ0tleQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvUHVibGljKEVDS2V5ICRwcml2YXRlKQogICAgewogICAgICAgICRkYXRhID0gJHByaXZhdGUtPnRvQXJyYXkoKTsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZCcsICRkYXRhKSkgewogICAgICAgICAgICB1bnNldCgkZGF0YVsnZCddKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b1BFTSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9ERVIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEtleUNvbnZlcnRlcjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBUaGlzIGNsYXNzIHdpbGwgaGVscCB5b3UgdG8gbG9hZCBhbiBFQyBrZXkgb3IgYSBSU0Ega2V5L2NlcnRpZmljYXRlIChwcml2YXRlIG9yIHB1YmxpYykgYW5kIGdldCB2YWx1ZXMgdG8gY3JlYXRlIGEgSldLIG9iamVjdC4KICovCmZpbmFsIGNsYXNzIEtleUNvbnZlcnRlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEtleUZyb21DZXJ0aWZpY2F0ZUZpbGUoJGZpbGUpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKGZpbGVfZXhpc3RzKCRmaWxlKSwgc3ByaW50ZignRmlsZSAiJXMiIGRvZXMgbm90IGV4aXN0LicsICRmaWxlKSk7CiAgICAgICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgogICAgICAgIHJldHVybiBzZWxmOjpsb2FkS2V5RnJvbUNlcnRpZmljYXRlKCRjb250ZW50KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNlcnRpZmljYXRlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnRpZmljYXRlKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3g1MDlfcmVhZCgkY2VydGlmaWNhdGUpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgJGNlcnRpZmljYXRlID0gc2VsZjo6Y29udmVydERlclRvUGVtKCRjZXJ0aWZpY2F0ZSk7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3g1MDlfcmVhZCgkY2VydGlmaWNhdGUpOwogICAgICAgIH0KICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSAkcmVzLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGNlcnRpZmljYXRlJyk7CgogICAgICAgICR2YWx1ZXMgPSBzZWxmOjpsb2FkS2V5RnJvbVg1MDlSZXNvdXJjZSgkcmVzKTsKICAgICAgICBvcGVuc3NsX3g1MDlfZnJlZSgkcmVzKTsKCiAgICAgICAgcmV0dXJuICR2YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHJlcwogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbVg1MDlSZXNvdXJjZSgkcmVzKQogICAgewogICAgICAgICRrZXkgPSBvcGVuc3NsX2dldF9wdWJsaWNrZXkoJHJlcyk7CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRrZXkpOwogICAgICAgIGlmIChpc3NldCgkZGV0YWlsc1sna2V5J10pKSB7CiAgICAgICAgICAgICR2YWx1ZXMgPSBzZWxmOjpsb2FkS2V5RnJvbVBFTSgkZGV0YWlsc1sna2V5J10pOwogICAgICAgICAgICBvcGVuc3NsX3g1MDlfZXhwb3J0KCRyZXMsICRvdXQpOwogICAgICAgICAgICAkdmFsdWVzWyd4NWMnXSA9IFt0cmltKHByZWdfcmVwbGFjZSgnIy0uKi0jJywgJycsICRvdXQpKV07CgogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQnKSkgewogICAgICAgICAgICAgICAgJHZhbHVlc1sneDV0J10gPSBCYXNlNjRVcmw6OmVuY29kZShvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQoJHJlcywgJ3NoYTEnLCB0cnVlKSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyd4NXQjMjU2J10gPSBCYXNlNjRVcmw6OmVuY29kZShvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQoJHJlcywgJ3NoYTI1NicsIHRydWUpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIG9wZW5zc2xfeDUwOV9leHBvcnQoJHJlcywgJHBlbSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyd4NXQnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmNhbGN1bGF0ZVg1MDlGaW5nZXJwcmludCgkcGVtLCAnc2hhMScsIHRydWUpKTsKICAgICAgICAgICAgICAgICR2YWx1ZXNbJ3g1dCMyNTYnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmNhbGN1bGF0ZVg1MDlGaW5nZXJwcmludCgkcGVtLCAnc2hhMjU2JywgdHJ1ZSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHZhbHVlczsKICAgICAgICB9CiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZScpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRmaWxlCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRGcm9tS2V5RmlsZSgkZmlsZSwgJHBhc3N3b3JkID0gbnVsbCkKICAgIHsKICAgICAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRGcm9tS2V5KCRjb250ZW50LCAkcGFzc3dvcmQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRrZXkKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkcGFzc3dvcmQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21LZXkoJGtleSwgJHBhc3N3b3JkID0gbnVsbCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21ERVIoJGtleSwgJHBhc3N3b3JkKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpsb2FkS2V5RnJvbVBFTSgka2V5LCAkcGFzc3dvcmQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkZGVyCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbURFUigkZGVyLCAkcGFzc3dvcmQgPSBudWxsKQogICAgewogICAgICAgICRwZW0gPSBzZWxmOjpjb252ZXJ0RGVyVG9QZW0oJGRlcik7CgogICAgICAgIHJldHVybiBzZWxmOjpsb2FkS2V5RnJvbVBFTSgkcGVtLCAkcGFzc3dvcmQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRwZW0KICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkcGFzc3dvcmQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxvYWRLZXlGcm9tUEVNKCRwZW0sICRwYXNzd29yZCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJyNERUstSW5mbzogKC4rKSwoLispIycsICRwZW0sICRtYXRjaGVzKSkgewogICAgICAgICAgICAkcGVtID0gc2VsZjo6ZGVjb2RlUGVtKCRwZW0sICRtYXRjaGVzLCAkcGFzc3dvcmQpOwogICAgICAgIH0KCiAgICAgICAgc2VsZjo6c2FuaXRpemVQRU0oJHBlbSk7CgogICAgICAgICRyZXMgPSBvcGVuc3NsX3BrZXlfZ2V0X3ByaXZhdGUoJHBlbSk7CiAgICAgICAgaWYgKCRyZXMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3BrZXlfZ2V0X3B1YmxpYygkcGVtKTsKICAgICAgICB9CiAgICAgICAgQXNzZXJ0aW9uOjpmYWxzZSgkcmVzID09PSBmYWxzZSwgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKCiAgICAgICAgJGRldGFpbHMgPSBvcGVuc3NsX3BrZXlfZ2V0X2RldGFpbHMoJHJlcyk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0FycmF5KCRkZXRhaWxzLCAnVW5hYmxlIHRvIGdldCBkZXRhaWxzIG9mIHRoZSBrZXknKTsKICAgICAgICBBc3NlcnRpb246OmtleUV4aXN0cygkZGV0YWlscywgJ3R5cGUnLCAnVW5hYmxlIHRvIGdldCBkZXRhaWxzIG9mIHRoZSBrZXknKTsKCiAgICAgICAgc3dpdGNoICgkZGV0YWlsc1sndHlwZSddKSB7CiAgICAgICAgICAgIGNhc2UgT1BFTlNTTF9LRVlUWVBFX0VDOgogICAgICAgICAgICAgICAgJGVjX2tleSA9IG5ldyBFQ0tleSgkcGVtKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGVjX2tleS0+dG9BcnJheSgpOwogICAgICAgICAgICBjYXNlIE9QRU5TU0xfS0VZVFlQRV9SU0E6CiAgICAgICAgICAgICAgICAgJHJzYV9rZXkgPSBuZXcgUlNBS2V5KCRwZW0pOwoKICAgICAgICAgICAgICAgICByZXR1cm4gJHJzYV9rZXktPnRvQXJyYXkoKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZScpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIG1vZGlmeSB0aGUgUEVNIHRvIGdldCA2NCBjaGFyIGxpbmVzIGFuZCBmaXggYnVnIHdpdGggb2xkIE9wZW5TU0wgdmVyc2lvbnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGVtCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHNhbml0aXplUEVNKCYkcGVtKQogICAgewogICAgICAgIHByZWdfbWF0Y2hfYWxsKCcjKC0uKi0pIycsICRwZW0sICRtYXRjaGVzLCBQUkVHX1BBVFRFUk5fT1JERVIpOwogICAgICAgICRjaXBoZXJ0ZXh0ID0gcHJlZ19yZXBsYWNlKCcjLS4qLXxccnxcbnwgIycsICcnLCAkcGVtKTsKCiAgICAgICAgJHBlbSA9ICRtYXRjaGVzWzBdWzBdLlBIUF9FT0w7CiAgICAgICAgJHBlbSAuPSBjaHVua19zcGxpdCgkY2lwaGVydGV4dCwgNjQsIFBIUF9FT0wpOwogICAgICAgICRwZW0gLj0gJG1hdGNoZXNbMF1bMV0uUEhQX0VPTDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkeDVjCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRGcm9tWDVDKGFycmF5ICR4NWMpCiAgICB7CiAgICAgICAgJGNlcnRpZmljYXRlID0gbnVsbDsKICAgICAgICAkbGFzdF9pc3N1ZXIgPSBudWxsOwogICAgICAgICRsYXN0X3N1YmplY3QgPSBudWxsOwogICAgICAgIGZvcmVhY2ggKCR4NWMgYXMgJGNlcnQpIHsKICAgICAgICAgICAgJGN1cnJlbnRfY2VydCA9ICctLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0nLlBIUF9FT0wuJGNlcnQuUEhQX0VPTC4nLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLSc7CiAgICAgICAgICAgICR4NTA5ID0gb3BlbnNzbF94NTA5X3JlYWQoJGN1cnJlbnRfY2VydCk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHg1MDkpIHsKICAgICAgICAgICAgICAgICRsYXN0X2lzc3VlciA9IG51bGw7CiAgICAgICAgICAgICAgICAkbGFzdF9zdWJqZWN0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYXJzZWQgPSBvcGVuc3NsX3g1MDlfcGFyc2UoJHg1MDkpOwoKICAgICAgICAgICAgb3BlbnNzbF94NTA5X2ZyZWUoJHg1MDkpOwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRwYXJzZWQpIHsKICAgICAgICAgICAgICAgICRsYXN0X2lzc3VlciA9IG51bGw7CiAgICAgICAgICAgICAgICAkbGFzdF9zdWJqZWN0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChudWxsID09PSAkbGFzdF9zdWJqZWN0KSB7CiAgICAgICAgICAgICAgICAkbGFzdF9zdWJqZWN0ID0gJHBhcnNlZFsnc3ViamVjdCddOwogICAgICAgICAgICAgICAgJGxhc3RfaXNzdWVyID0gJHBhcnNlZFsnaXNzdWVyJ107CiAgICAgICAgICAgICAgICAkY2VydGlmaWNhdGUgPSAkY3VycmVudF9jZXJ0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKGpzb25fZW5jb2RlKCRsYXN0X2lzc3VlcikgPT09IGpzb25fZW5jb2RlKCRwYXJzZWRbJ3N1YmplY3QnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdF9zdWJqZWN0ID0gJHBhcnNlZFsnc3ViamVjdCddOwogICAgICAgICAgICAgICAgICAgICRsYXN0X2lzc3VlciA9ICRwYXJzZWRbJ2lzc3VlciddOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkbGFzdF9pc3N1ZXIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICRsYXN0X3N1YmplY3QgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoCiAgICAgICAgICAgIG51bGwgPT09ICRsYXN0X2lzc3VlciB8fCBqc29uX2VuY29kZSgkbGFzdF9pc3N1ZXIpICE9PSBqc29uX2VuY29kZSgkbGFzdF9zdWJqZWN0KSwKICAgICAgICAgICAgJ0ludmFsaWQgY2VydGlmaWNhdGUgY2hhaW4uJwogICAgICAgICk7CgogICAgICAgIHJldHVybiBzZWxmOjpsb2FkS2V5RnJvbUNlcnRpZmljYXRlKCRjZXJ0aWZpY2F0ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgJHBlbQogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICRtYXRjaGVzCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlUGVtKCRwZW0sIGFycmF5ICRtYXRjaGVzLCAkcGFzc3dvcmQgPSBudWxsKQogICAgewogICAgICAgIEFzc2VydGlvbjo6bm90TnVsbCgkcGFzc3dvcmQsICdQYXNzd29yZCByZXF1aXJlZCBmb3IgZW5jcnlwdGVkIGtleXMuJyk7CgogICAgICAgICRpdiA9IHBhY2soJ0gqJywgdHJpbSgkbWF0Y2hlc1syXSkpOwogICAgICAgICRpdl9zdWIgPSBtYl9zdWJzdHIoJGl2LCAwLCA4LCAnOGJpdCcpOwogICAgICAgICRzeW1rZXkgPSBwYWNrKCdIKicsIG1kNSgkcGFzc3dvcmQuJGl2X3N1YikpOwogICAgICAgICRzeW1rZXkgLj0gcGFjaygnSConLCBtZDUoJHN5bWtleS4kcGFzc3dvcmQuJGl2X3N1YikpOwogICAgICAgICRrZXkgPSBwcmVnX3JlcGxhY2UoJyNeKD86UHJvYy1UeXBlfERFSy1JbmZvKTogLiojbScsICcnLCAkcGVtKTsKICAgICAgICAkY2lwaGVydGV4dCA9IGJhc2U2NF9kZWNvZGUocHJlZ19yZXBsYWNlKCcjLS4qLXxccnxcbiMnLCAnJywgJGtleSkpOwoKICAgICAgICAkZGVjb2RlZCA9IG9wZW5zc2xfZGVjcnlwdCgkY2lwaGVydGV4dCwgc3RydG9sb3dlcigkbWF0Y2hlc1sxXSksICRzeW1rZXksIHRydWUsICRpdik7CgogICAgICAgICRudW1iZXIgPSBwcmVnX21hdGNoX2FsbCgnIy17NX0uKi17NX0jJywgJHBlbSwgJHJlc3VsdCk7CiAgICAgICAgQXNzZXJ0aW9uOjplcSgkbnVtYmVyLCAyLCAnVW5hYmxlIHRvIGxvYWQgdGhlIGtleScpOwoKICAgICAgICAkcGVtID0gJHJlc3VsdFswXVswXS5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVjb2RlZCksIDY0KTsKICAgICAgICAkcGVtIC49ICRyZXN1bHRbMF1bMV0uUEhQX0VPTDsKCiAgICAgICAgcmV0dXJuICRwZW07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkZXJfZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnREZXJUb1BlbSgkZGVyX2RhdGEpCiAgICB7CiAgICAgICAgJHBlbSA9IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoJGRlcl9kYXRhKSwgNjQsIFBIUF9FT0wpOwogICAgICAgICRwZW0gPSAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLiRwZW0uJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nLlBIUF9FT0w7CgogICAgICAgIHJldHVybiAkcGVtOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkcGVtCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0KICAgICAqIEBwYXJhbSBib29sICAgJGJpbmFyeQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNhbGN1bGF0ZVg1MDlGaW5nZXJwcmludCgkcGVtLCAkYWxnb3JpdGhtLCAkYmluYXJ5ID0gZmFsc2UpCiAgICB7CiAgICAgICAgJHBlbSA9IHByZWdfcmVwbGFjZSgnIy0uKi18XHJ8XG4jJywgJycsICRwZW0pOwogICAgICAgICRiaW4gPSBiYXNlNjRfZGVjb2RlKCRwZW0pOwoKICAgICAgICByZXR1cm4gaGFzaCgkYWxnb3JpdGhtLCAkYmluLCAkYmluYXJ5KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/KeyConverter/RSAKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXEtleUNvbnZlcnRlcjsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2U7CnVzZSBKb3NlXFV0aWxcQmlnSW50ZWdlcjsKCmZpbmFsIGNsYXNzIFJTQUtleSBleHRlbmRzIFNlcXVlbmNlCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICR2YWx1ZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJG1vZHVsdXM7CgogICAgLyoqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRtb2R1bHVzX2xlbmd0aDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHB1YmxpY19leHBvbmVudDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcHJpdmF0ZV9leHBvbmVudCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXFV0aWxcQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHByaXZhdGUgJHByaW1lcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxVdGlsXEJpZ0ludGVnZXJbXQogICAgICovCiAgICBwcml2YXRlICRleHBvbmVudHMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcVXRpbFxCaWdJbnRlZ2VyfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkY29lZmZpY2llbnQgPSBudWxsOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2V8c3RyaW5nfGFycmF5ICRkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZGF0YSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CgogICAgICAgIGlmICgkZGF0YSBpbnN0YW5jZW9mIEpXS0ludGVyZmFjZSkgewogICAgICAgICAgICAkdGhpcy0+bG9hZEpXSygkZGF0YS0+Z2V0QWxsKCkpOwogICAgICAgIH0gZWxzZWlmIChpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJGRhdGEpKSB7CiAgICAgICAgICAgICR0aGlzLT5sb2FkUEVNKCRkYXRhKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQnKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5wb3B1bGF0ZUJpZ0ludGVnZXJzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUHVibGljKCkKICAgIHsKICAgICAgICByZXR1cm4gISR0aGlzLT5pc1ByaXZhdGUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcml2YXRlKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygnZCcsICR0aGlzLT52YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsdXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kdWx1czsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bHVzTGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZHVsdXNfbGVuZ3RoOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cG9uZW50KCkKICAgIHsKICAgICAgICAkZCA9ICR0aGlzLT5nZXRQcml2YXRlRXhwb25lbnQoKTsKICAgICAgICBpZiAobnVsbCAhPT0gJGQpIHsKICAgICAgICAgICAgcmV0dXJuICRkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRQdWJsaWNFeHBvbmVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFB1YmxpY0V4cG9uZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnB1YmxpY19leHBvbmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcVXRpbFxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcml2YXRlRXhwb25lbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpdmF0ZV9leHBvbmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcVXRpbFxCaWdJbnRlZ2VyW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByaW1lcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHBvbmVudHMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZXhwb25lbnRzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXJ8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29lZmZpY2llbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29lZmZpY2llbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcS2V5Q29udmVydGVyXFJTQUtleSAkcHJpdmF0ZQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcS2V5Q29udmVydGVyXFJTQUtleQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvUHVibGljKFJTQUtleSAkcHJpdmF0ZSkKICAgIHsKICAgICAgICAkZGF0YSA9ICRwcml2YXRlLT50b0FycmF5KCk7CiAgICAgICAgJGtleXMgPSBbJ3AnLCAnZCcsICdxJywgJ2RwJywgJ2RxJywgJ3FpJ107CiAgICAgICAgZm9yZWFjaCAoJGtleXMgYXMgJGtleSkgewogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkZGF0YSkpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRkYXRhWyRrZXldKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRkYXRhKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b1BFTSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9ERVIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0QmluYXJ5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9QRU0oKQogICAgewogICAgICAgICRyZXN1bHQgPSAnLS0tLS1CRUdJTiAnLigkdGhpcy0+aXNQcml2YXRlKCkgPyAnUlNBIFBSSVZBVEUnIDogJ1BVQkxJQycpLicgS0VZLS0tLS0nLlBIUF9FT0w7CiAgICAgICAgJHJlc3VsdCAuPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCR0aGlzLT5nZXRCaW5hcnkoKSksIDY0LCBQSFBfRU9MKTsKICAgICAgICAkcmVzdWx0IC49ICctLS0tLUVORCAnLigkdGhpcy0+aXNQcml2YXRlKCkgPyAnUlNBIFBSSVZBVEUnIDogJ1BVQkxJQycpLicgS0VZLS0tLS0nLlBIUF9FT0w7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YQogICAgICoKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICogQHRocm93cyBcRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRQRU0oJGRhdGEpCiAgICB7CiAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkZGF0YSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcmVzKSB7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3BrZXlfZ2V0X3B1YmxpYygkZGF0YSk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoZmFsc2UgPT09ICRyZXMsICdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRyZXMpOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRkZXRhaWxzLCAncnNhJywgJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXknKTsKCiAgICAgICAgJHRoaXMtPnZhbHVlc1sna3R5J10gPSAnUlNBJzsKICAgICAgICAka2V5cyA9IFsKICAgICAgICAgICAgJ24nICA9PiAnbicsCiAgICAgICAgICAgICdlJyAgPT4gJ2UnLAogICAgICAgICAgICAnZCcgID0+ICdkJywKICAgICAgICAgICAgJ3AnICA9PiAncCcsCiAgICAgICAgICAgICdxJyAgPT4gJ3EnLAogICAgICAgICAgICAnZHAnID0+ICdkbXAxJywKICAgICAgICAgICAgJ2RxJyA9PiAnZG1xMScsCiAgICAgICAgICAgICdxaScgPT4gJ2lxbXAnLAogICAgICAgIF07CiAgICAgICAgZm9yZWFjaCAoJGRldGFpbHNbJ3JzYSddIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgka2V5LCAka2V5cykpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+dmFsdWVzW2FycmF5X3NlYXJjaCgka2V5LCAka2V5cyldID0gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRqd2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkSldLKGFycmF5ICRqd2spCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGp3aywgJ2t0eScsICdUaGUga2V5IHBhcmFtZXRlciAia3R5IiBpcyBtaXNzaW5nLicpOwogICAgICAgIEFzc2VydGlvbjo6ZXEoJGp3a1sna3R5J10sICdSU0EnLCAnVGhlIEpXSyBpcyBub3QgYSBSU0Ega2V5Jyk7CgogICAgICAgICR0aGlzLT52YWx1ZXMgPSAkandrOwogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkJywgJGp3aykpIHsKICAgICAgICAgICAgJHRoaXMtPnBvcHVsYXRlQ1JUKCk7CiAgICAgICAgICAgICR0aGlzLT5pbml0UHJpdmF0ZUtleSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5pbml0UHVibGljS2V5KCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgYWRkcyBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtIChDUlQpIHBhcmFtZXRlcnMgaWYgcHJpbWVzICdwJyBhbmQgJ3EnIGFyZSBhdmFpbGFibGUuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcG9wdWxhdGVDUlQoKQogICAgewogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygncCcsICR0aGlzLT52YWx1ZXMpICYmICFhcnJheV9rZXlfZXhpc3RzKCdxJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgJGQgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICAgICAkZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1snZSddKSk7CiAgICAgICAgICAgICRuID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWyduJ10pKTsKCiAgICAgICAgICAgIGxpc3QoJHAsICRxKSA9ICR0aGlzLT5maW5kUHJpbWVGYWN0b3JzKCRkLCAkZSwgJG4pOwogICAgICAgICAgICAkdGhpcy0+dmFsdWVzWydwJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkcC0+dG9CeXRlcygpKTsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlc1sncSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHEtPnRvQnl0ZXMoKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZHAnLCAkdGhpcy0+dmFsdWVzKSAmJiBhcnJheV9rZXlfZXhpc3RzKCdkcScsICR0aGlzLT52YWx1ZXMpICYmIGFycmF5X2tleV9leGlzdHMoJ3FpJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJG9uZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDEpOwogICAgICAgICRkID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWydkJ10pKTsKICAgICAgICAkcCA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1sncCddKSk7CiAgICAgICAgJHEgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ3EnXSkpOwoKICAgICAgICAkdGhpcy0+dmFsdWVzWydkcCddID0gQmFzZTY0VXJsOjplbmNvZGUoJGQtPm1vZCgkcC0+c3VidHJhY3QoJG9uZSkpLT50b0J5dGVzKCkpOwogICAgICAgICR0aGlzLT52YWx1ZXNbJ2RxJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkZC0+bW9kKCRxLT5zdWJ0cmFjdCgkb25lKSktPnRvQnl0ZXMoKSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1sncWknXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRxLT5tb2RJbnZlcnNlKCRwKS0+dG9CeXRlcygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgXEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGluaXRQdWJsaWNLZXkoKQogICAgewogICAgICAgICRvaWRfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjg0MC4xMTM1NDkuMS4xLjEnKSk7CiAgICAgICAgJG9pZF9zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IE51bGxPYmplY3QoKSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKCRvaWRfc2VxdWVuY2UpOwoKICAgICAgICAkbiA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ24nXSkpOwogICAgICAgICRlID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZSddKSk7CgogICAgICAgICRrZXlfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkbik7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGUpOwogICAgICAgICRrZXlfYml0X3N0cmluZyA9IG5ldyBCaXRTdHJpbmcoYmluMmhleCgka2V5X3NlcXVlbmNlLT5nZXRCaW5hcnkoKSkpOwogICAgICAgICR0aGlzLT5hZGRDaGlsZCgka2V5X2JpdF9zdHJpbmcpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW5pdFByaXZhdGVLZXkoKQogICAgewogICAgICAgICR0aGlzLT5hZGRDaGlsZChuZXcgSW50ZWdlcigwKSk7CgogICAgICAgICRvaWRfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjg0MC4xMTM1NDkuMS4xLjEnKSk7CiAgICAgICAgJG9pZF9zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IE51bGxPYmplY3QoKSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKCRvaWRfc2VxdWVuY2UpOwoKICAgICAgICAkdiA9IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRuID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snbiddKSk7CiAgICAgICAgJGUgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydlJ10pKTsKICAgICAgICAkZCA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICRwID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1sncCddKSk7CiAgICAgICAgJHEgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxJ10pKTsKICAgICAgICAkZHAgPSBhcnJheV9rZXlfZXhpc3RzKCdkcCcsICR0aGlzLT52YWx1ZXMpID8gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZHAnXSkpIDogbmV3IEludGVnZXIoMCk7CiAgICAgICAgJGRxID0gYXJyYXlfa2V5X2V4aXN0cygnZHEnLCAkdGhpcy0+dmFsdWVzKSA/IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2RxJ10pKSA6IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRxaSA9IGFycmF5X2tleV9leGlzdHMoJ3FpJywgJHRoaXMtPnZhbHVlcykgPyBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxaSddKSkgOiBuZXcgSW50ZWdlcigwKTsKCiAgICAgICAgJGtleV9zZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCR2KTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkbik7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGUpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRkKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkcCk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJHEpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRkcCk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGRxKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkcWkpOwogICAgICAgICRrZXlfb2N0ZXRfc3RyaW5nID0gbmV3IE9jdGV0U3RyaW5nKGJpbjJoZXgoJGtleV9zZXF1ZW5jZS0+Z2V0QmluYXJ5KCkpKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJGtleV9vY3RldF9zdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZyb21CYXNlNjRUb0ludGVnZXIoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBnbXBfc3RydmFsKGdtcF9pbml0KGN1cnJlbnQodW5wYWNrKCdIKicsIEJhc2U2NFVybDo6ZGVjb2RlKCR2YWx1ZSkpKSwgMTYpLCAxMCk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwb3B1bGF0ZUJpZ0ludGVnZXJzKCkKICAgIHsKICAgICAgICAkdGhpcy0+bW9kdWx1cyA9ICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ24nXSk7CiAgICAgICAgJHRoaXMtPm1vZHVsdXNfbGVuZ3RoID0gbWJfc3RybGVuKCR0aGlzLT5nZXRNb2R1bHVzKCktPnRvQnl0ZXMoKSwgJzhiaXQnKTsKICAgICAgICAkdGhpcy0+cHVibGljX2V4cG9uZW50ID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZSddKTsKCiAgICAgICAgaWYgKHRydWUgPT09ICR0aGlzLT5pc1ByaXZhdGUoKSkgewogICAgICAgICAgICAkdGhpcy0+cHJpdmF0ZV9leHBvbmVudCA9ICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2QnXSk7CgogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygncCcsICR0aGlzLT52YWx1ZXMpICYmIGFycmF5X2tleV9leGlzdHMoJ3EnLCAkdGhpcy0+dmFsdWVzKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnByaW1lcyA9IFsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydwJ10pLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ3EnXSksCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgJHRoaXMtPmV4cG9uZW50cyA9IFsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydkcCddKSwKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydkcSddKSwKICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICAkdGhpcy0+Y29lZmZpY2llbnQgPSAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxaSddKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR2YWx1ZSkKICAgIHsKICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRkCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkZQogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJG4KICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaW5kUHJpbWVGYWN0b3JzKEJpZ0ludGVnZXIgJGQsIEJpZ0ludGVnZXIgJGUsIEJpZ0ludGVnZXIgJG4pCiAgICB7CiAgICAgICAgJHplcm8gPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tRGVjaW1hbCgwKTsKICAgICAgICAkb25lICA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDEpOwogICAgICAgICR0d28gID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMik7CgogICAgICAgICRrID0gJGQtPm11bHRpcGx5KCRlKS0+c3VidHJhY3QoJG9uZSk7CgogICAgICAgIGlmICgkay0+aXNFdmVuKCkpIHsKICAgICAgICAgICAgJHIgPSAkazsKICAgICAgICAgICAgJHQgPSAkemVybzsKCiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRyID0gJHItPmRpdmlkZSgkdHdvKTsKICAgICAgICAgICAgICAgICR0ID0gJHQtPmFkZCgkb25lKTsKICAgICAgICAgICAgfSB3aGlsZSAoJHItPmlzRXZlbigpKTsKCiAgICAgICAgICAgICRmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAkeSA9IG51bGw7CgogICAgICAgICAgICBmb3IoJGkgPSAxOyAkaSA8PSAxMDA7ICRpKyspIHsKICAgICAgICAgICAgICAgICRnID0gQmlnSW50ZWdlcjo6cmFuZG9tKCRuLT5zdWJ0cmFjdCgkb25lKSk7CiAgICAgICAgICAgICAgICAkeSA9ICRnLT5tb2RQb3coJHIsICRuKTsKCiAgICAgICAgICAgICAgICBpZiAoJHktPmVxdWFscygkb25lKSB8fCAkeS0+ZXF1YWxzKCRuLT5zdWJ0cmFjdCgkb25lKSkpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgKCRqID0gJG9uZTsgJGotPmxvd2VyVGhhbigkdC0+c3VidHJhY3QoJG9uZSkpOyAkaiA9ICRqLT5hZGQoJG9uZSkpIHsKICAgICAgICAgICAgICAgICAgICAkeCA9ICR5LT5tb2RQb3coJHR3bywgJG4pOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHgtPmVxdWFscygkb25lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICgkeC0+ZXF1YWxzKCRuLT5zdWJ0cmFjdCgkb25lKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkeSA9ICR4OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR4ID0gJHktPm1vZFBvdygkdHdvLCAkbik7CiAgICAgICAgICAgICAgICBpZiAoJHgtPmVxdWFscygkb25lKSkgewogICAgICAgICAgICAgICAgICAgICRmb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0cnVlID09PSAkZm91bmQpIHsKICAgICAgICAgICAgICAgICRwID0gJHktPnN1YnRyYWN0KCRvbmUpLT5nY2QoJG4pOwogICAgICAgICAgICAgICAgJHEgPSAkbi0+ZGl2aWRlKCRwKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gWyRwLCAkcV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZmluZCBwcmltZSBmYWN0b3JzLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Loader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CgovKioKICogQ2xhc3MgYWJsZSB0byBsb2FkIEpXUyBvciBKV0UuCiAqIEpXUyBvYmplY3QgY2FuIGFsc28gYmUgdmVyaWZpZWQuCiAqLwpmaW5hbCBjbGFzcyBMb2FkZXIgaW1wbGVtZW50cyBMb2FkZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kRGVjcnlwdFVzaW5nS2V5KCRpbnB1dCwgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCBhcnJheSAkYWxsb3dlZF9rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkYWxsb3dlZF9jb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKQogICAgewogICAgICAgICRqd2tfc2V0ID0gbmV3IE9iamVjdFxKV0tTZXQoKTsKICAgICAgICAkandrX3NldC0+YWRkS2V5KCRqd2spOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRBbmREZWNyeXB0KCRpbnB1dCwgJGp3a19zZXQsICRhbGxvd2VkX2tleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRhbGxvd2VkX2NvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCAkcmVjaXBpZW50X2luZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRBbmREZWNyeXB0VXNpbmdLZXlTZXQoJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCBhcnJheSAkYWxsb3dlZF9rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zLCBhcnJheSAkYWxsb3dlZF9jb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZERlY3J5cHQoJGlucHV0LCAkandrX3NldCwgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICRyZWNpcGllbnRfaW5kZXgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZFZlcmlmeVNpZ25hdHVyZVVzaW5nS2V5KCRpbnB1dCwgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCBhcnJheSAkYWxsb3dlZF9hbGdvcml0aG1zLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3a19zZXQgPSBuZXcgT2JqZWN0XEpXS1NldCgpOwogICAgICAgICRqd2tfc2V0LT5hZGRLZXkoJGp3ayk7CgogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZFZlcmlmeVNpZ25hdHVyZSgkaW5wdXQsICRqd2tfc2V0LCAkYWxsb3dlZF9hbGdvcml0aG1zLCBudWxsLCAkc2lnbmF0dXJlX2luZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRBbmRWZXJpZnlTaWduYXR1cmVVc2luZ0tleVNldCgkaW5wdXQsIE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQsIGFycmF5ICRhbGxvd2VkX2FsZ29yaXRobXMsICYkc2lnbmF0dXJlX2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRBbmRWZXJpZnlTaWduYXR1cmUoJGlucHV0LCAkandrX3NldCwgJGFsbG93ZWRfYWxnb3JpdGhtcywgbnVsbCwgJHNpZ25hdHVyZV9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlBbmREZXRhY2hlZFBheWxvYWQoJGlucHV0LCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssIGFycmF5ICRhbGxvd2VkX2FsZ29yaXRobXMsICRkZXRhY2hlZF9wYXlsb2FkLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3a19zZXQgPSBuZXcgT2JqZWN0XEpXS1NldCgpOwogICAgICAgICRqd2tfc2V0LT5hZGRLZXkoJGp3ayk7CgogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZFZlcmlmeVNpZ25hdHVyZSgkaW5wdXQsICRqd2tfc2V0LCAkYWxsb3dlZF9hbGdvcml0aG1zLCAkZGV0YWNoZWRfcGF5bG9hZCwgJHNpZ25hdHVyZV9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlTZXRBbmREZXRhY2hlZFBheWxvYWQoJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCBhcnJheSAkYWxsb3dlZF9hbGdvcml0aG1zLCAkZGV0YWNoZWRfcGF5bG9hZCwgJiRzaWduYXR1cmVfaW5kZXggPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bG9hZEFuZFZlcmlmeVNpZ25hdHVyZSgkaW5wdXQsICRqd2tfc2V0LCAkYWxsb3dlZF9hbGdvcml0aG1zLCAkZGV0YWNoZWRfcGF5bG9hZCwgJHNpZ25hdHVyZV9pbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9jb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcwogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGxvYWRBbmREZWNyeXB0KCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkand0ID0gJHRoaXMtPmxvYWQoJGlucHV0KTsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkand0LCBPYmplY3RcSldFSW50ZXJmYWNlOjpjbGFzcywgJ1RoZSBpbnB1dCBpcyBub3QgYSB2YWxpZCBKV0UnKTsKICAgICAgICAkZGVjcnlwdGVkID0gRGVjcnlwdGVyOjpjcmVhdGVEZWNyeXB0ZXIoJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsIFsnREVGJywgJ1pMSUInLCAnR1onXSk7CgogICAgICAgICRkZWNyeXB0ZWQtPmRlY3J5cHRVc2luZ0tleVNldCgkand0LCAkandrX3NldCwgJHJlY2lwaWVudF9pbmRleCk7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfYWxnb3JpdGhtcwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlKCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfYWxnb3JpdGhtcywgJGRldGFjaGVkX3BheWxvYWQgPSBudWxsLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpCiAgICB7CiAgICAgICAgJGp3dCA9ICR0aGlzLT5sb2FkKCRpbnB1dCk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJGp3dCwgT2JqZWN0XEpXU0ludGVyZmFjZTo6Y2xhc3MsICdUaGUgaW5wdXQgaXMgbm90IGEgdmFsaWQgSldTLicpOwogICAgICAgICR2ZXJpZmllciA9IFZlcmlmaWVyOjpjcmVhdGVWZXJpZmllcigkYWxsb3dlZF9hbGdvcml0aG1zKTsKCiAgICAgICAgJHZlcmlmaWVyLT52ZXJpZnlXaXRoS2V5U2V0KCRqd3QsICRqd2tfc2V0LCAkZGV0YWNoZWRfcGF5bG9hZCwgJHNpZ25hdHVyZV9pbmRleCk7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZCgkaW5wdXQpCiAgICB7CiAgICAgICAgJGpzb24gPSAkdGhpcy0+Y29udmVydCgkaW5wdXQpOwogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdzaWduYXR1cmVzJywgJGpzb24pKSB7CiAgICAgICAgICAgIHJldHVybiBVdGlsXEpXU0xvYWRlcjo6bG9hZFNlcmlhbGl6ZWRKc29uSldTKCRqc29uKTsKICAgICAgICB9CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3JlY2lwaWVudHMnLCAkanNvbikpIHsKICAgICAgICAgICAgcmV0dXJuIFV0aWxcSldFTG9hZGVyOjpsb2FkU2VyaWFsaXplZEpzb25KV0UoJGpzb24pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnQoJGlucHV0KQogICAgewogICAgICAgIGlmIChpc19hcnJheSgkZGF0YSA9IGpzb25fZGVjb2RlKCRpbnB1dCwgdHJ1ZSkpKSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdzaWduYXR1cmVzJywgJGRhdGEpIHx8IGFycmF5X2tleV9leGlzdHMoJ3JlY2lwaWVudHMnLCAkZGF0YSkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZGF0YTsKICAgICAgICAgICAgfSBlbHNlaWYgKGFycmF5X2tleV9leGlzdHMoJ3NpZ25hdHVyZScsICRkYXRhKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5mcm9tRmxhdHRlbmVkU2VyaWFsaXphdGlvblNpZ25hdHVyZVRvU2VyaWFsaXphdGlvbigkZGF0YSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChhcnJheV9rZXlfZXhpc3RzKCdjaXBoZXJ0ZXh0JywgJGRhdGEpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21GbGF0dGVuZWRTZXJpYWxpemF0aW9uUmVjaXBpZW50VG9TZXJpYWxpemF0aW9uKCRkYXRhKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChpc19zdHJpbmcoJGlucHV0KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmZyb21Db21wYWN0U2VyaWFsaXphdGlvblRvU2VyaWFsaXphdGlvbigkaW5wdXQpOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAkaW5wdXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZnJvbUZsYXR0ZW5lZFNlcmlhbGl6YXRpb25SZWNpcGllbnRUb1NlcmlhbGl6YXRpb24oJGlucHV0KQogICAgewogICAgICAgICRyZWNpcGllbnQgPSBbXTsKICAgICAgICBmb3JlYWNoIChbJ2hlYWRlcicsICdlbmNyeXB0ZWRfa2V5J10gYXMgJGtleSkgewogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkaW5wdXQpKSB7CiAgICAgICAgICAgICAgICAkcmVjaXBpZW50WyRrZXldID0gJGlucHV0WyRrZXldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgICRyZWNpcGllbnRzID0gWwogICAgICAgICAgICAnY2lwaGVydGV4dCcgPT4gJGlucHV0WydjaXBoZXJ0ZXh0J10sCiAgICAgICAgICAgICdyZWNpcGllbnRzJyA9PiBbJHJlY2lwaWVudF0sCiAgICAgICAgXTsKICAgICAgICBmb3JlYWNoIChbJ3Byb3RlY3RlZCcsICd1bnByb3RlY3RlZCcsICdpdicsICdhYWQnLCAndGFnJ10gYXMgJGtleSkgewogICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkaW5wdXQpKSB7CiAgICAgICAgICAgICAgICAkcmVjaXBpZW50c1ska2V5XSA9ICRpbnB1dFska2V5XTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZWNpcGllbnRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtICRpbnB1dAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmcm9tRmxhdHRlbmVkU2VyaWFsaXphdGlvblNpZ25hdHVyZVRvU2VyaWFsaXphdGlvbigkaW5wdXQpCiAgICB7CiAgICAgICAgJHNpZ25hdHVyZSA9IFsKICAgICAgICAgICAgJ3NpZ25hdHVyZScgPT4gJGlucHV0WydzaWduYXR1cmUnXSwKICAgICAgICBdOwogICAgICAgIGZvcmVhY2ggKFsncHJvdGVjdGVkJywgJ2hlYWRlciddIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGtleSwgJGlucHV0KSkgewogICAgICAgICAgICAgICAgJHNpZ25hdHVyZVska2V5XSA9ICRpbnB1dFska2V5XTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHRlbXAgPSBbXTsKICAgICAgICBpZiAoIWVtcHR5KCRpbnB1dFsncGF5bG9hZCddKSkgewogICAgICAgICAgICAkdGVtcFsncGF5bG9hZCddID0gJGlucHV0WydwYXlsb2FkJ107CiAgICAgICAgfQogICAgICAgICR0ZW1wWydzaWduYXR1cmVzJ10gPSBbJHNpZ25hdHVyZV07CgogICAgICAgIHJldHVybiAkdGVtcDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0CiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZyb21Db21wYWN0U2VyaWFsaXphdGlvblRvU2VyaWFsaXphdGlvbigkaW5wdXQpCiAgICB7CiAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnLicsICRpbnB1dCk7CiAgICAgICAgc3dpdGNoIChjb3VudCgkcGFydHMpKSB7CiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZnJvbUNvbXBhY3RTZXJpYWxpemF0aW9uU2lnbmF0dXJlVG9TZXJpYWxpemF0aW9uKCRwYXJ0cyk7CiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZnJvbUNvbXBhY3RTZXJpYWxpemF0aW9uUmVjaXBpZW50VG9TZXJpYWxpemF0aW9uKCRwYXJ0cyk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQnKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcnRzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZyb21Db21wYWN0U2VyaWFsaXphdGlvblJlY2lwaWVudFRvU2VyaWFsaXphdGlvbihhcnJheSAkcGFydHMpCiAgICB7CiAgICAgICAgJHJlY2lwaWVudCA9IFtdOwogICAgICAgIGlmICghZW1wdHkoJHBhcnRzWzFdKSkgewogICAgICAgICAgICAkcmVjaXBpZW50WydlbmNyeXB0ZWRfa2V5J10gPSAkcGFydHNbMV07CiAgICAgICAgfQoKICAgICAgICAkcmVjaXBpZW50cyA9IFsKICAgICAgICAgICAgJ3JlY2lwaWVudHMnID0+IFskcmVjaXBpZW50XSwKICAgICAgICBdOwogICAgICAgIGZvcmVhY2ggKFswID0+ICdwcm90ZWN0ZWQnLCAyID0+ICdpdicsIDMgPT4gJ2NpcGhlcnRleHQnLCA0ID0+ICd0YWcnXSBhcyAkcGFydCA9PiAka2V5KSB7CiAgICAgICAgICAgIGlmICghZW1wdHkoJHBhcnRzWyRwYXJ0XSkpIHsKICAgICAgICAgICAgICAgICRyZWNpcGllbnRzWyRrZXldID0gJHBhcnRzWyRwYXJ0XTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZWNpcGllbnRzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0cwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmcm9tQ29tcGFjdFNlcmlhbGl6YXRpb25TaWduYXR1cmVUb1NlcmlhbGl6YXRpb24oYXJyYXkgJHBhcnRzKQogICAgewogICAgICAgICR0ZW1wID0gW107CgogICAgICAgIGlmICghZW1wdHkoJHBhcnRzWzFdKSkgewogICAgICAgICAgICAkdGVtcFsncGF5bG9hZCddID0gJHBhcnRzWzFdOwogICAgICAgIH0KICAgICAgICAkdGVtcFsnc2lnbmF0dXJlcyddID0gW1sKICAgICAgICAgICAgJ3Byb3RlY3RlZCcgPT4gJHBhcnRzWzBdLAogICAgICAgICAgICAnc2lnbmF0dXJlJyA9PiAkcGFydHNbMl0sCiAgICAgICAgXV07CgogICAgICAgIHJldHVybiAkdGVtcDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/LoaderInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIExvYWRlciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgTG9hZGVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogTG9hZCBkYXRhIGFuZCB0cnkgdG8gcmV0dXJuIGEgSldTSW50ZXJmYWNlIG9iamVjdCwgYSBKV0VJbnRlcmZhY2Ugb2JqZWN0IG9yIGEgbGlzdCBvZiB0aGVzZSBvYmplY3RzLgogICAgICogSWYgdGhlIHJlc3VsdCBpcyBhIEpXRSAobGlzdCksIG5vdGhpbmcgaXMgZGVjcnlwdGVkIGFuZCBtZXRob2QgYGRlY3J5cHRgIG11c3QgYmUgZXhlY3V0ZWQKICAgICAqIElmIHRoZSByZXN1bHQgaXMgYSBKV1MgKGxpc3QpLCBubyBzaWduYXR1cmUgaXMgdmVyaWZpZWQgYW5kIG1ldGhvZCBgdmVyaWZ5U2lnbmF0dXJlYCBtdXN0IGJlIGV4ZWN1dGVkLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0IEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyBhIEpTT04gV2ViIFRva2VuIG1lc3NhZ2UKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2V8XEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSBJZiB0aGUgZGF0YSBoYXMgYmVlbiBsb2FkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkKCRpbnB1dCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkaW5wdXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRqd2sKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAgICAgICAgICAgICAgICAgICRhbGxvd2VkX2tleV9lbmNyeXB0aW9uX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAgICAgICAgICAgICAgICAgICRhbGxvd2VkX2NvbnRlbnRfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50X2luZGV4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlfFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgSWYgdGhlIGRhdGEgaGFzIGJlZW4gbG9hZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZERlY3J5cHRVc2luZ0tleSgkaW5wdXQsIE9iamVjdFxKV0tJbnRlcmZhY2UgJGp3aywgYXJyYXkgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkaW5wdXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9rZXlfZW5jcnlwdGlvbl9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZF9jb250ZW50X2VuY3J5cHRpb25fYWxnb3JpdGhtcwogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSBJZiB0aGUgZGF0YSBoYXMgYmVlbiBsb2FkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kRGVjcnlwdFVzaW5nS2V5U2V0KCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfa2V5X2VuY3J5cHRpb25fYWxnb3JpdGhtcywgYXJyYXkgJGFsbG93ZWRfY29udGVudF9lbmNyeXB0aW9uX2FsZ29yaXRobXMsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkaW5wdXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRqd2sKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAgICAgICAgICAgICAgICAgICRhbGxvd2VkX2FsZ29yaXRobXMKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgSWYgdGhlIGRhdGEgaGFzIGJlZW4gbG9hZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZFZlcmlmeVNpZ25hdHVyZVVzaW5nS2V5KCRpbnB1dCwgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCBhcnJheSAkYWxsb3dlZF9hbGdvcml0aG1zLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfYWxnb3JpdGhtcwogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgICAgJHNpZ25hdHVyZV9pbmRleAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZSBJZiB0aGUgZGF0YSBoYXMgYmVlbiBsb2FkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlTZXQoJGlucHV0LCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCBhcnJheSAkYWxsb3dlZF9hbGdvcml0aG1zLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJGlucHV0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkandrCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gICAgICAgICAgICAgICAgICAkYWxsb3dlZF9hbGdvcml0aG1zCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAkZGV0YWNoZWRfcGF5bG9hZAogICAgICogQHBhcmFtIG51bGx8aW50ICAgICAgICAgICAgICAgICAgJHNpZ25hdHVyZV9pbmRleAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZSBJZiB0aGUgZGF0YSBoYXMgYmVlbiBsb2FkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5U2lnbmF0dXJlVXNpbmdLZXlBbmREZXRhY2hlZFBheWxvYWQoJGlucHV0LCBPYmplY3RcSldLSW50ZXJmYWNlICRqd2ssIGFycmF5ICRhbGxvd2VkX2FsZ29yaXRobXMsICRkZXRhY2hlZF9wYXlsb2FkLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGlucHV0CiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldAogICAgICogQHBhcmFtIHN0cmluZ1tdICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWRfYWxnb3JpdGhtcwogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGRldGFjaGVkX3BheWxvYWQKICAgICAqIEBwYXJhbSBudWxsfGludCAgICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmVfaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgSWYgdGhlIGRhdGEgaGFzIGJlZW4gbG9hZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZFZlcmlmeVNpZ25hdHVyZVVzaW5nS2V5U2V0QW5kRGV0YWNoZWRQYXlsb2FkKCRpbnB1dCwgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgYXJyYXkgJGFsbG93ZWRfYWxnb3JpdGhtcywgJGRldGFjaGVkX3BheWxvYWQsICYkc2lnbmF0dXJlX2luZGV4ID0gbnVsbCk7Cn0K]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKLyoqCiAqIENsYXNzIEJhc2VKV0tTZXQuCiAqLwp0cmFpdCBCYXNlSldLU2V0CnsKICAgIC8qKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkcG9zaXRpb24gPSAwOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0tleSgkaW5kZXgpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGluZGV4LCAkdGhpcy0+Z2V0S2V5cygpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGluZGV4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXkoJGluZGV4KQogICAgewogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkaW5kZXgsICdUaGUgaW5kZXggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjpncmVhdGVyT3JFcXVhbFRoYW4oJGluZGV4LCAwLCAnVGhlIGluZGV4IG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLicpOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgkdGhpcy0+aGFzS2V5KCRpbmRleCksICdVbmRlZmluZWQgaW5kZXguJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0S2V5cygpWyRpbmRleF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGluZGV4CiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiByZW1vdmVLZXkoJGluZGV4KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKQogICAgewogICAgICAgIHJldHVybiBbJ2tleXMnID0+IGFycmF5X3ZhbHVlcygkdGhpcy0+Z2V0S2V5cygpKV07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRtb2RlCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50KCRtb2RlID0gQ09VTlRfTk9STUFMKQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+Z2V0S2V5cygpLCAkbW9kZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYXNLZXkoJHRoaXMtPnBvc2l0aW9uKSA/ICR0aGlzLT5nZXRLZXkoJHRoaXMtPnBvc2l0aW9uKSA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ga2V5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvc2l0aW9uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBuZXh0KCkKICAgIHsKICAgICAgICAkdGhpcy0+cG9zaXRpb24rKzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV3aW5kKCkKICAgIHsKICAgICAgICAkdGhpcy0+cG9zaXRpb24gPSAwOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2YWxpZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jdXJyZW50KCkgaW5zdGFuY2VvZiBKV0tJbnRlcmZhY2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRLZXlzKCkKICAgIHsKICAgICAgICByZXR1cm4gY291bnQoJHRoaXMtPmdldEtleXMoKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0RXhpc3RzKCRvZmZzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYXNLZXkoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9mZnNldAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0R2V0KCRvZmZzZXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRLZXkoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG9mZnNldAogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KCRvZmZzZXQsICR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+YWRkS2V5KCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRvZmZzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldFVuc2V0KCRvZmZzZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlbW92ZUtleSgkb2Zmc2V0KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkdHlwZQogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRhbGdvcml0aG0KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkcmVzdHJpY3Rpb25zCiAgICAgKgogICAgICogQHJldHVybiBudWxsfFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbGVjdEtleSgkdHlwZSwgJGFsZ29yaXRobSA9IG51bGwsIGFycmF5ICRyZXN0cmljdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmluQXJyYXkoJHR5cGUsIFsnZW5jJywgJ3NpZyddKTsKICAgICAgICBBc3NlcnRpb246Om51bGxPclN0cmluZygkYWxnb3JpdGhtKTsKCiAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5nZXRLZXlzKCkgYXMgJGtleSkgewogICAgICAgICAgICAkaW5kID0gMDsKCiAgICAgICAgICAgIC8vIENoZWNrIHVzYWdlCiAgICAgICAgICAgICRjYW5fdXNlID0gJHRoaXMtPmNhbktleUJlVXNlZEZvcigkdHlwZSwgJGtleSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJGNhbl91c2UpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRpbmQgKz0gJGNhbl91c2U7CgogICAgICAgICAgICAvLyBDaGVjayBhbGdvcml0aG0KICAgICAgICAgICAgJGFsZyA9ICR0aGlzLT5jYW5LZXlCZVVzZWRXaXRoQWxnb3JpdGhtKCRhbGdvcml0aG0sICRrZXkpOwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRhbGcpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRpbmQgKz0gJGFsZzsKCiAgICAgICAgICAgIC8vIFZhbGlkYXRlIHJlc3RyaWN0aW9ucwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICR0aGlzLT5kb2VzS2V5U2F0aXNmeVJlc3RyaWN0aW9ucygkcmVzdHJpY3Rpb25zLCAka2V5KSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEFkZCB0byB0aGUgbGlzdCB3aXRoIHRydXN0IGluZGljYXRvcgogICAgICAgICAgICAkcmVzdWx0W10gPSBbJ2tleScgPT4gJGtleSwgJ2luZCcgPT4gJGluZF07CiAgICAgICAgfQoKICAgICAgICAvL1JldHVybiBudWxsIGlmIG5vIGtleQogICAgICAgIGlmIChlbXB0eSgkcmVzdWx0KSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvL1NvcnQgYnkgdHJ1c3QgaW5kaWNhdG9yCiAgICAgICAgdXNvcnQoJHJlc3VsdCwgWyR0aGlzLCAnc29ydEtleXMnXSk7CiAgICAgICAgLy9SZXR1cm4gdGhlIGhpZ2hlc3QgdHJ1c3QgaW5kaWNhdG9yIChmaXJzdCBrZXkpCiAgICAgICAgcmV0dXJuICRyZXN1bHRbMF1bJ2tleSddOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgJHR5cGUKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2x8aW50CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2FuS2V5QmVVc2VkRm9yKCR0eXBlLCBKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBpZiAoJGtleS0+aGFzKCd1c2UnKSkgewogICAgICAgICAgICByZXR1cm4gJHR5cGUgPT09ICRrZXktPmdldCgndXNlJykgPyAxIDogZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2tleV9vcHMnKSkgewogICAgICAgICAgICByZXR1cm4gJHR5cGUgPT09IHNlbGY6OmNvbnZlcnRLZXlPcHNUb0tleVVzZSgka2V5LT5nZXQoJ3VzZScpKSA/IDEgOiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICAgICAgICAgICAgICAgJGFsZ29yaXRobQogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYW5LZXlCZVVzZWRXaXRoQWxnb3JpdGhtKCRhbGdvcml0aG0sIEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIGlmIChudWxsID09PSAkYWxnb3JpdGhtKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICBpZiAoJGtleS0+aGFzKCdhbGcnKSkgewogICAgICAgICAgICByZXR1cm4gJGFsZ29yaXRobSA9PT0gJGtleS0+Z2V0KCdhbGcnKSA/IDEgOiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHJlc3RyaWN0aW9ucwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJGtleQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRvZXNLZXlTYXRpc2Z5UmVzdHJpY3Rpb25zKGFycmF5ICRyZXN0cmljdGlvbnMsIEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgIGZvcmVhY2ggKCRyZXN0cmljdGlvbnMgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCEka2V5LT5oYXMoJGspIHx8ICR2ICE9PSAka2V5LT5nZXQoJGspKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5X29wcwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnRLZXlPcHNUb0tleVVzZSgka2V5X29wcykKICAgIHsKICAgICAgICBzd2l0Y2ggKCRrZXlfb3BzKSB7CiAgICAgICAgICAgIGNhc2UgJ3ZlcmlmeSc6CiAgICAgICAgICAgIGNhc2UgJ3NpZ24nOgogICAgICAgICAgICAgICAgcmV0dXJuICdzaWcnOwogICAgICAgICAgICBjYXNlICdlbmNyeXB0JzoKICAgICAgICAgICAgY2FzZSAnZGVjcnlwdCc6CiAgICAgICAgICAgIGNhc2UgJ3dyYXBLZXknOgogICAgICAgICAgICBjYXNlICd1bndyYXBLZXknOgogICAgICAgICAgICAgICAgcmV0dXJuICdlbmMnOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVW5zdXBwb3J0ZWQga2V5IG9wZXJhdGlvbiB2YWx1ZSAiJXMiJywgJGtleV9vcHMpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGEKICAgICAqIEBwYXJhbSBhcnJheSAkYgogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzb3J0S2V5cygkYSwgJGIpCiAgICB7CiAgICAgICAgaWYgKCRhWydpbmQnXSA9PT0gJGJbJ2luZCddKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgkYVsnaW5kJ10gPiAkYlsnaW5kJ10pID8gLTEgOiAxOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/DownloadedJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2U7CgovKioKICogQ2xhc3MgRG93bmxvYWRlZEpXS1NldC4KICovCmFic3RyYWN0IGNsYXNzIERvd25sb2FkZWRKV0tTZXQgaW1wbGVtZW50cyBKV0tTZXRJbnRlcmZhY2UKewogICAgdXNlIEJhc2VKV0tTZXQ7CiAgICB1c2UgSldLU2V0UEVNOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkdXJsOwoKICAgIC8qKgogICAgICogQHZhciBudWxsfFxQc3JcQ2FjaGVcQ2FjaGVJdGVtUG9vbEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRjYWNoZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJHR0bDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbjsKCiAgICAvKioKICAgICAqIERvd25sb2FkZWRKV0tTZXQgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1cmwKICAgICAqIEBwYXJhbSBcUHNyXENhY2hlXENhY2hlSXRlbVBvb2xJbnRlcmZhY2V8bnVsbCAkY2FjaGUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdHRsCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93X3Vuc2VjdXJlZF9jb25uZWN0aW9uCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93X2h0dHBfY29ubmVjdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHVybCwgQ2FjaGVJdGVtUG9vbEludGVyZmFjZSAkY2FjaGUgPSBudWxsLCAkdHRsID0gODY0MDAsICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbiA9IGZhbHNlLCAkYWxsb3dfaHR0cF9jb25uZWN0aW9uID0gZmFsc2UpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpib29sZWFuKCRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbik7CiAgICAgICAgQXNzZXJ0aW9uOjpib29sZWFuKCRhbGxvd19odHRwX2Nvbm5lY3Rpb24pOwogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkdHRsKTsKICAgICAgICBBc3NlcnRpb246Om1pbigkdHRsLCAwKTsKICAgICAgICBBc3NlcnRpb246OmZhbHNlKGZhbHNlID09PSBmaWx0ZXJfdmFyKCR1cmwsIEZJTFRFUl9WQUxJREFURV9VUkwsIEZJTFRFUl9GTEFHX1NDSEVNRV9SRVFVSVJFRCB8IEZJTFRFUl9GTEFHX0hPU1RfUkVRVUlSRUQpLCAnSW52YWxpZCBVUkwuJyk7CiAgICAgICAgJGFsbG93ZWRfcHJvdG9jb2xzID0gWydodHRwcyddOwogICAgICAgIGlmICh0cnVlID09PSAkYWxsb3dfaHR0cF9jb25uZWN0aW9uKSB7CiAgICAgICAgICAgICRhbGxvd2VkX3Byb3RvY29sc1tdID0gJ2h0dHAnOwogICAgICAgIH0KICAgICAgICBBc3NlcnRpb246OmluQXJyYXkobWJfc3Vic3RyKCR1cmwsIDAsIG1iX3N0cnBvcygkdXJsLCAnOi8vJywgMCwgJzhiaXQnKSwgJzhiaXQnKSwgJGFsbG93ZWRfcHJvdG9jb2xzLCBzcHJpbnRmKCdUaGUgcHJvdmlkZWQgc2VjdG9yIGlkZW50aWZpZXIgVVJJIGlzIG5vdCB2YWxpZDogc2NoZW1lIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6ICVzLicsIGpzb25fZW5jb2RlKCRhbGxvd2VkX3Byb3RvY29scykpKTsKCiAgICAgICAgJHRoaXMtPnVybCA9ICR1cmw7CiAgICAgICAgJHRoaXMtPmNhY2hlID0gJGNhY2hlOwogICAgICAgICR0aGlzLT50dGwgPSAkdHRsOwogICAgICAgICR0aGlzLT5hbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbiA9ICRhbGxvd191bnNlY3VyZWRfY29ubmVjdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEtleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAvL05vdCBhdmFpbGFibGUKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUtleSgkaW5kZXgpCiAgICB7CiAgICAgICAgLy9Ob3QgYXZhaWxhYmxlCiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgJGNhY2hlX2tleSA9IHNwcmludGYoJ0pXS0ZhY3RvcnktQ29udGVudC0lcycsIGhhc2goJ3NoYTUxMicsICR0aGlzLT51cmwpKTsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmNhY2hlKSB7CiAgICAgICAgICAgICRpdGVtID0gJHRoaXMtPmNhY2hlLT5nZXRJdGVtKCRjYWNoZV9rZXkpOwogICAgICAgICAgICBpZiAoISRpdGVtLT5pc0hpdCgpKSB7CiAgICAgICAgICAgICAgICAkY29udGVudCA9ICR0aGlzLT5kb3dubG9hZENvbnRlbnQoKTsKICAgICAgICAgICAgICAgICRpdGVtLT5zZXQoJGNvbnRlbnQpOwogICAgICAgICAgICAgICAgaWYgKDAgIT09ICR0aGlzLT50dGwpIHsKICAgICAgICAgICAgICAgICAgICAkaXRlbS0+ZXhwaXJlc0FmdGVyKCR0aGlzLT50dGwpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zYXZlKCRpdGVtKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGl0ZW0tPmdldCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmRvd25sb2FkQ29udGVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb3dubG9hZENvbnRlbnQoKQogICAgewogICAgICAgICRwYXJhbXMgPSBbCiAgICAgICAgICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTE9QVF9VUkwgICAgICAgICAgICA9PiAkdGhpcy0+dXJsLAogICAgICAgIF07CiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+YWxsb3dfdW5zZWN1cmVkX2Nvbm5lY3Rpb24pIHsKICAgICAgICAgICAgJHBhcmFtc1tDVVJMT1BUX1NTTF9WRVJJRllQRUVSXSA9IHRydWU7CiAgICAgICAgICAgICRwYXJhbXNbQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVF0gPSAyOwogICAgICAgIH0KCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHRfYXJyYXkoJGNoLCAkcGFyYW1zKTsKICAgICAgICAkY29udGVudCA9IGN1cmxfZXhlYygkY2gpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKCiAgICAgICAgQXNzZXJ0aW9uOjpmYWxzZShmYWxzZSA9PT0gJGNvbnRlbnQsICdVbmFibGUgdG8gZ2V0IGNvbnRlbnQuJyk7CgogICAgICAgIHJldHVybiAkY29udGVudDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JKUJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKLyoqCiAqIENsYXNzIEpLVUpXS1NldC4KICovCmZpbmFsIGNsYXNzIEpLVUpXS1NldCBleHRlbmRzIERvd25sb2FkZWRKV0tTZXQKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSBqc29uX2RlY29kZSgkdGhpcy0+Z2V0Q29udGVudCgpLCB0cnVlKTsKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJGNvbnRlbnQsICdJbnZhbGlkIGNvbnRlbnQuJyk7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJGNvbnRlbnQsICdrZXlzJywgJ0ludmFsaWQgY29udGVudC4nKTsKCiAgICAgICAgcmV0dXJuIChuZXcgSldLU2V0KCRjb250ZW50KSktPmdldEtleXMoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBKV0UuCiAqLwpmaW5hbCBjbGFzcyBKV0UgaW1wbGVtZW50cyBKV0VJbnRlcmZhY2UKewogICAgdXNlIEpXVDsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcT2JqZWN0XFJlY2lwaWVudEludGVyZmFjZVtdCiAgICAgKi8KICAgIHByaXZhdGUgJHJlY2lwaWVudHMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkY2lwaGVydGV4dCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGl2ID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkYWFkID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkdGFnID0gbnVsbDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkc2hhcmVkX2hlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGVuY29kZWRfc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gbnVsbDsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50UmVjaXBpZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5yZWNpcGllbnRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRW5jcnlwdGVkKCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJHRoaXMtPmdldENpcGhlcnRleHQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFJlY2lwaWVudEluZm9ybWF0aW9uKEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgJHJlY2lwaWVudF9oZWFkZXJzID0gW10pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKG51bGwgPT09ICR0aGlzLT5nZXRDaXBoZXJ0ZXh0KCksICdUaGUgSldFIGlzIGVuY3J5cHRlZC4gTm8gYWRkaXRpb25hbCByZWNpcGllbnQgYWxsb3dlZC4nKTsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+cmVjaXBpZW50c1tdID0gUmVjaXBpZW50OjpjcmVhdGVSZWNpcGllbnQoJHJlY2lwaWVudF9rZXksICRyZWNpcGllbnRfaGVhZGVycyk7CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkUmVjaXBpZW50V2l0aEVuY3J5cHRlZEtleSgkZW5jcnlwdGVkX2tleSwgYXJyYXkgJHJlY2lwaWVudF9oZWFkZXJzKQogICAgewogICAgICAgICRqd2UgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandlLT5yZWNpcGllbnRzW10gPSBSZWNpcGllbnQ6OmNyZWF0ZVJlY2lwaWVudEZyb21Mb2FkZWRKV0UoJHJlY2lwaWVudF9oZWFkZXJzLCAkZW5jcnlwdGVkX2tleSk7CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVjaXBpZW50cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWNpcGllbnRzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gJmdldFJlY2lwaWVudCgkaWQpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHRoaXMtPnJlY2lwaWVudHMsICRpZCwgJ1RoZSByZWNpcGllbnQgZG9lcyBub3QgZXhpc3QuJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+cmVjaXBpZW50c1skaWRdOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2lwaGVydGV4dCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaXBoZXJ0ZXh0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENpcGhlcnRleHQoJGNpcGhlcnRleHQpCiAgICB7CiAgICAgICAgJGp3ZSA9IGNsb25lICR0aGlzOwogICAgICAgICRqd2UtPmNpcGhlcnRleHQgPSAkY2lwaGVydGV4dDsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBQUQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWFkOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFBRCgkYWFkKQogICAgewogICAgICAgICRqd2UgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandlLT5hYWQgPSAkYWFkOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElWKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPml2OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aElWKCRpdikKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+aXYgPSAkaXY7CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGFnKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRhZzsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhUYWcoJHRhZykKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+dGFnID0gJHRhZzsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNvZGVkU2hhcmVkUHJvdGVjdGVkSGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNvZGVkX3NoYXJlZF9wcm90ZWN0ZWRfaGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhFbmNvZGVkU2hhcmVkUHJvdGVjdGVkSGVhZGVycygkZW5jb2RlZF9zaGFyZWRfcHJvdGVjdGVkX2hlYWRlcnMpCiAgICB7CiAgICAgICAgJGp3ZSA9IGNsb25lICR0aGlzOwogICAgICAgICRqd2UtPmVuY29kZWRfc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gJGVuY29kZWRfc2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycykKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzID0gJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVyczsKCiAgICAgICAgcmV0dXJuICRqd2U7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU2hhcmVkUHJvdGVjdGVkSGVhZGVyKCRrZXksICR2YWx1ZSkKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzWyRrZXldID0gJHZhbHVlOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNoYXJlZFByb3RlY3RlZEhlYWRlcigka2V5KQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzU2hhcmVkUHJvdGVjdGVkSGVhZGVyKCRrZXkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzWyRrZXldOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgc2hhcmVkIHByb3RlY3RlZCBoZWFkZXIgIiVzIiBkb2VzIG5vdCBleGlzdC4nLCAka2V5KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNTaGFyZWRQcm90ZWN0ZWRIZWFkZXIoJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+c2hhcmVkX3Byb3RlY3RlZF9oZWFkZXJzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRIZWFkZXJzKGFycmF5ICRzaGFyZWRfaGVhZGVycykKICAgIHsKICAgICAgICAkandlID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3ZS0+c2hhcmVkX2hlYWRlcnMgPSAkc2hhcmVkX2hlYWRlcnM7CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNoYXJlZEhlYWRlcigka2V5LCAkdmFsdWUpCiAgICB7CiAgICAgICAgJGp3ZSA9IGNsb25lICR0aGlzOwogICAgICAgICRqd2UtPnNoYXJlZF9oZWFkZXJzWyRrZXldID0gJHZhbHVlOwoKICAgICAgICByZXR1cm4gJGp3ZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNoYXJlZEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2hhcmVkX2hlYWRlcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaGFyZWRIZWFkZXIoJGtleSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmhhc1NoYXJlZEhlYWRlcigka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNoYXJlZF9oZWFkZXJzWyRrZXldOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgc2hhcmVkIGhlYWRlciAiJXMiIGRvZXMgbm90IGV4aXN0LicsICRrZXkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1NoYXJlZEhlYWRlcigka2V5KQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICR0aGlzLT5zaGFyZWRfaGVhZGVycyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0NvbXBhY3RKU09OKCRpZCkKICAgIHsKICAgICAgICAkcmVjaXBpZW50ID0gJHRoaXMtPmdldFJlY2lwaWVudCgkaWQpOwoKICAgICAgICAkdGhpcy0+Y2hlY2tIYXNOb0FBRCgpOwogICAgICAgICR0aGlzLT5jaGVja0hhc1NoYXJlZFByb3RlY3RlZEhlYWRlcnMoKTsKICAgICAgICAkdGhpcy0+Y2hlY2tSZWNpcGllbnRIYXNOb0hlYWRlcnMoJGlkKTsKCiAgICAgICAgcmV0dXJuIHNwcmludGYoCiAgICAgICAgICAgICclcy4lcy4lcy4lcy4lcycsCiAgICAgICAgICAgICR0aGlzLT5nZXRFbmNvZGVkU2hhcmVkUHJvdGVjdGVkSGVhZGVycygpLAogICAgICAgICAgICBCYXNlNjRVcmw6OmVuY29kZShudWxsID09PSAkcmVjaXBpZW50LT5nZXRFbmNyeXB0ZWRLZXkoKSA/ICcnIDogJHJlY2lwaWVudC0+Z2V0RW5jcnlwdGVkS2V5KCkpLAogICAgICAgICAgICBCYXNlNjRVcmw6OmVuY29kZShudWxsID09PSAkdGhpcy0+Z2V0SVYoKSA/ICcnIDogJHRoaXMtPmdldElWKCkpLAogICAgICAgICAgICBCYXNlNjRVcmw6OmVuY29kZSgkdGhpcy0+Z2V0Q2lwaGVydGV4dCgpKSwKICAgICAgICAgICAgQmFzZTY0VXJsOjplbmNvZGUobnVsbCA9PT0gJHRoaXMtPmdldFRhZygpID8gJycgOiAkdGhpcy0+Z2V0VGFnKCkpCiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrSGFzTm9BQUQoKQogICAgewogICAgICAgIEFzc2VydGlvbjo6dHJ1ZShlbXB0eSgkdGhpcy0+Z2V0QUFEKCkpLCAnVGhpcyBKV0UgaGFzIEFBRCBhbmQgY2Fubm90IGJlIGNvbnZlcnRlZCBpbnRvIENvbXBhY3QgSlNPTi4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tSZWNpcGllbnRIYXNOb0hlYWRlcnMoJGlkKQogICAgewogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgKICAgICAgICAgICAgZW1wdHkoJHRoaXMtPmdldFNoYXJlZEhlYWRlcnMoKSkgJiYgZW1wdHkoJHRoaXMtPmdldFJlY2lwaWVudCgkaWQpLT5nZXRIZWFkZXJzKCkpLAogICAgICAgICAgICAnVGhpcyBKV0UgaGFzIHNoYXJlZCBoZWFkZXJzIG9yIHJlY2lwaWVudCBoZWFkZXJzIGFuZCBjYW5ub3QgYmUgY29udmVydGVkIGludG8gQ29tcGFjdCBKU09OLicKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tIYXNTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCkKICAgIHsKICAgICAgICBBc3NlcnRpb246Om5vdEVtcHR5KAogICAgICAgICAgICAkdGhpcy0+Z2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVycygpLAogICAgICAgICAgICAnVGhpcyBKV0UgZG9lcyBub3QgaGF2ZSBzaGFyZWQgcHJvdGVjdGVkIGhlYWRlcnMgYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW50byBDb21wYWN0IEpTT04uJwogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ZsYXR0ZW5lZEpTT04oJGlkKQogICAgewogICAgICAgICRyZWNpcGllbnQgPSAkdGhpcy0+Z2V0UmVjaXBpZW50KCRpZCk7CgogICAgICAgICRqc29uID0gJHRoaXMtPmdldEpTT05CYXNlKCk7CgogICAgICAgIGlmICghZW1wdHkoJHJlY2lwaWVudC0+Z2V0SGVhZGVycygpKSkgewogICAgICAgICAgICAkanNvblsnaGVhZGVyJ10gPSAkcmVjaXBpZW50LT5nZXRIZWFkZXJzKCk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJHJlY2lwaWVudC0+Z2V0RW5jcnlwdGVkS2V5KCkpKSB7CiAgICAgICAgICAgICRqc29uWydlbmNyeXB0ZWRfa2V5J10gPSBCYXNlNjRVcmw6OmVuY29kZSgkcmVjaXBpZW50LT5nZXRFbmNyeXB0ZWRLZXkoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4ganNvbl9lbmNvZGUoJGpzb24pOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9KU09OKCkKICAgIHsKICAgICAgICAkanNvbiA9ICR0aGlzLT5nZXRKU09OQmFzZSgpOwogICAgICAgICRqc29uWydyZWNpcGllbnRzJ10gPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmdldFJlY2lwaWVudHMoKSBhcyAkcmVjaXBpZW50KSB7CiAgICAgICAgICAgICR0ZW1wID0gW107CiAgICAgICAgICAgIGlmICghZW1wdHkoJHJlY2lwaWVudC0+Z2V0SGVhZGVycygpKSkgewogICAgICAgICAgICAgICAgJHRlbXBbJ2hlYWRlciddID0gJHJlY2lwaWVudC0+Z2V0SGVhZGVycygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghZW1wdHkoJHJlY2lwaWVudC0+Z2V0RW5jcnlwdGVkS2V5KCkpKSB7CiAgICAgICAgICAgICAgICAkdGVtcFsnZW5jcnlwdGVkX2tleSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHJlY2lwaWVudC0+Z2V0RW5jcnlwdGVkS2V5KCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRqc29uWydyZWNpcGllbnRzJ11bXSA9ICR0ZW1wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGpzb25fZW5jb2RlKCRqc29uKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRKU09OQmFzZSgpCiAgICB7CiAgICAgICAgJGpzb24gPSBbCiAgICAgICAgICAgICdjaXBoZXJ0ZXh0JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkdGhpcy0+Z2V0Q2lwaGVydGV4dCgpKSwKICAgICAgICBdOwogICAgICAgIGlmIChudWxsICE9PSAkdGhpcy0+Z2V0SVYoKSkgewogICAgICAgICAgICAkanNvblsnaXYnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR0aGlzLT5nZXRJVigpKTsKICAgICAgICB9CiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5nZXRUYWcoKSkgewogICAgICAgICAgICAkanNvblsndGFnJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkdGhpcy0+Z2V0VGFnKCkpOwogICAgICAgIH0KICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmdldEFBRCgpKSB7CiAgICAgICAgICAgICRqc29uWydhYWQnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR0aGlzLT5nZXRBQUQoKSk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPmdldFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoKSkpIHsKICAgICAgICAgICAgJGpzb25bJ3Byb3RlY3RlZCddID0gJHRoaXMtPmdldEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CiAgICAgICAgfQogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPmdldFNoYXJlZEhlYWRlcnMoKSkpIHsKICAgICAgICAgICAgJGpzb25bJ3VucHJvdGVjdGVkJ10gPSAkdGhpcy0+Z2V0U2hhcmVkSGVhZGVycygpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqc29uOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWEInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV0VJbnRlcmZhY2UgZXh0ZW5kcyBKV1RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgcmVjaXBpZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIEpXUy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRSZWNpcGllbnRzKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRW5jcnlwdGVkKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHJlY2lwaWVudF9oZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRSZWNpcGllbnRJbmZvcm1hdGlvbihKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXksICRyZWNpcGllbnRfaGVhZGVycyA9IFtdKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZW5jcnlwdGVkX2tleQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICRyZWNpcGllbnRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkUmVjaXBpZW50V2l0aEVuY3J5cHRlZEtleSgkZW5jcnlwdGVkX2tleSwgYXJyYXkgJHJlY2lwaWVudF9oZWFkZXJzKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlY2lwaWVudHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBKV1MuCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50SW50ZXJmYWNlW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlY2lwaWVudHMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50SW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiAmZ2V0UmVjaXBpZW50KCRpZCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRyZWNpcGllbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9Db21wYWN0SlNPTigkcmVjaXBpZW50KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJHJlY2lwaWVudAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ZsYXR0ZW5lZEpTT04oJHJlY2lwaWVudCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9KU09OKCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFRoZSBjeXBoZXJ0ZXh0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDaXBoZXJ0ZXh0KCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjaXBoZXJ0ZXh0CiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQ2lwaGVydGV4dCgkY2lwaGVydGV4dCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBQUQoKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGFhZAogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFBRCgkYWFkKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElWKCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpdgogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aElWKCRpdik7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUYWcoKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHRhZwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFRhZygkdGFnKTsKCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmNvZGVkX3NoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEVuY29kZWRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCRlbmNvZGVkX3NoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoYXJyYXkgJHNoYXJlZF9wcm90ZWN0ZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAka2V5CiAgICAgKiBAcGFyYW0gbWl4ZWR8bnVsbCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRQcm90ZWN0ZWRIZWFkZXIoJGtleSwgJHZhbHVlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hhcmVkUHJvdGVjdGVkSGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1NoYXJlZFByb3RlY3RlZEhlYWRlcigka2V5KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNoYXJlZEhlYWRlcnMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkc2hhcmVkX2hlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRIZWFkZXJzKGFycmF5ICRzaGFyZWRfaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAka2V5CiAgICAgKiBAcGFyYW0gbWl4ZWR8bnVsbCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTaGFyZWRIZWFkZXIoJGtleSwgJHZhbHVlKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2hhcmVkSGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1NoYXJlZEhlYWRlcigka2V5KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBKV0suCiAqLwpmaW5hbCBjbGFzcyBKV0sgaW1wbGVtZW50cyBKV0tJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIC8qKgogICAgICogSldLIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkdmFsdWVzID0gW10pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjprZXlFeGlzdHMoJHZhbHVlcywgJ2t0eScsICdUaGUgcGFyYW1ldGVyICJrdHkiIGlzIG1hbmRhdG9yeS4nKTsKCiAgICAgICAgJHRoaXMtPnZhbHVlcyA9ICR2YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEFsbCgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCRrZXkpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oYXMoJGtleSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJGtleV07CiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSB2YWx1ZSBpZGVudGlmaWVkIGJ5ICIlcyIgZG9lcyBub3QgZXhpc3QuJywgJGtleSkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKCRrZXkpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleV9leGlzdHMoJGtleSwgJHRoaXMtPmdldEFsbCgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRodW1icHJpbnQoJGhhc2hfYWxnb3JpdGhtKQogICAgewogICAgICAgIEFzc2VydGlvbjo6aW5BcnJheSgkaGFzaF9hbGdvcml0aG0sIGhhc2hfYWxnb3MoKSwgc3ByaW50ZignSGFzaCBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkJywgJGhhc2hfYWxnb3JpdGhtKSk7CgogICAgICAgICR2YWx1ZXMgPSBhcnJheV9pbnRlcnNlY3Rfa2V5KCR0aGlzLT5nZXRBbGwoKSwgYXJyYXlfZmxpcChbJ2t0eScsICduJywgJ2UnLCAnY3J2JywgJ3gnLCAneScsICdrJ10pKTsKICAgICAgICBrc29ydCgkdmFsdWVzKTsKICAgICAgICAkaW5wdXQgPSBqc29uX2VuY29kZSgkdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIEJhc2U2NFVybDo6ZW5jb2RlKGhhc2goJGhhc2hfYWxnb3JpdGhtLCAkaW5wdXQsIHRydWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9QdWJsaWMoKQogICAgewogICAgICAgICR2YWx1ZXMgPSAkdGhpcy0+Z2V0QWxsKCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X2RpZmZfa2V5KCR2YWx1ZXMsIGFycmF5X2ZsaXAoWydwJywgJ2QnLCAncScsICdkcCcsICdkcScsICdxaSddKSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWVzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV0tJbnRlcmZhY2UgZXh0ZW5kcyBcSnNvblNlcmlhbGl6YWJsZQp7CiAgICAvKioKICAgICAqIEdldCBhbGwgdmFsdWVzIHN0b3JlZCBpbiB0aGUgSldLIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IFZhbHVlcyBvZiB0aGUgSldLIG9iamVjdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWxsKCk7CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIHZhbHVlIHdpdGggYSBzcGVjaWZpYyBrZXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkfG51bGwgVGhlIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoJGtleSk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIEpXSyBoYXMgdGhlIHZhbHVlIGlkZW50aWZpZWQgYnkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhcygka2V5KTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHRodW1icHJpbnQgb2YgdGhlIGtleS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3NjM4CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkaGFzaF9hbGdvcml0aG0KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGh1bWJwcmludCgkaGFzaF9hbGdvcml0aG0pOwoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1B1YmxpYygpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBKV0tTZXQuCiAqLwpmaW5hbCBjbGFzcyBKV0tTZXQgaW1wbGVtZW50cyBKV0tTZXRJbnRlcmZhY2UKewogICAgdXNlIEJhc2VKV0tTZXQ7CiAgICB1c2UgSldLU2V0UEVNOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJGtleXMgPSBbXTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGtleXMgPSBbXSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygna2V5cycsICRrZXlzKSkgewogICAgICAgICAgICBmb3JlYWNoICgka2V5c1sna2V5cyddIGFzICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmFkZEtleShuZXcgSldLKCR2YWx1ZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5rZXlzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KQogICAgewogICAgICAgICR0aGlzLT5rZXlzW10gPSAka2V5OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlS2V5KCRrZXkpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5rZXlzWyRrZXldKSkgewogICAgICAgICAgICB1bnNldCgkdGhpcy0+a2V5c1ska2V5XSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSetInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV0tTZXRJbnRlcmZhY2UgZXh0ZW5kcyBcQ291bnRhYmxlLCBcSXRlcmF0b3IsIFxKc29uU2VyaWFsaXphYmxlLCBcQXJyYXlBY2Nlc3MKewogICAgLyoqCiAgICAgKiBAcGFyYW0gJGluZGV4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXkoJGluZGV4KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSAkaW5kZXgKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0tleSgkaW5kZXgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhbGwga2V5cyBpbiB0aGUga2V5IHNldC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXSBBbiBhcnJheSBvZiBrZXlzIHN0b3JlZCBpbiB0aGUga2V5IHNldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpOwoKICAgIC8qKgogICAgICogQWRkIGtleSBpbiB0aGUga2V5IHNldC4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSBBIGtleSB0byBzdG9yZSBpbiB0aGUga2V5IHNldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5KEpXS0ludGVyZmFjZSAka2V5KTsKCiAgICAvKioKICAgICAqIFJlbW92ZSBrZXkgZnJvbSB0aGUga2V5IHNldC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRpbmRleCBLZXkgdG8gcmVtb3ZlIGZyb20gdGhlIGtleSBzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUtleSgkaW5kZXgpOwoKICAgIC8qKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50S2V5cygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICR0eXBlICAgICAgICAgTXVzdCBiZSAnc2lnJyAoc2lnbmF0dXJlKSBvciAnZW5jJyAoZW5jcnlwdGlvbikKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkYWxnb3JpdGhtICAgIFNwZWNpZmllcyB0aGUgYWxnb3JpdGhtIHRvIGJlIHVzZWQKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkcmVzdHJpY3Rpb25zIE1vcmUgcmVzdHJpY3Rpb25zIHN1Y2ggYXMgJ2tpZCcgb3IgJ2t0eScKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VsZWN0S2V5KCR0eXBlLCAkYWxnb3JpdGhtID0gbnVsbCwgYXJyYXkgJHJlc3RyaWN0aW9ucyA9IFtdKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgUlNBL0VDIGtleXMgaW4gdGhlIGtleSBzZXQgaW50byBQRU0gZm9ybWF0CiAgICAgKiBOb3RlIHRoYXQgaWYgdGhlIGtleSBzZXQgY29udGFpbnMgb3RoZXIga2V5IHR5cGVzIChub25lLCBvY3QsIE9LUC4uLiksIHRoZXkgd2lsbCBub3QgYmUgcGFydCBvZiB0aGUgcmVzdWx0LgogICAgICogSWYga2V5cyBoYXZlIGEga2V5IElELCBpdCBpcyB1c2VkIGFzIGluZGV4LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvUEVNKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSetPEM.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBKb3NlXEtleUNvbnZlcnRlclxFQ0tleTsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKCi8qKgogKiBDbGFzcyBKV0tTZXRQRU0uCiAqLwp0cmFpdCBKV0tTZXRQRU0KewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpOwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9QRU0oKQogICAgewogICAgICAgICRrZXlzID0gJHRoaXMtPmdldEtleXMoKTsKICAgICAgICAkcmVzdWx0ID0gW107CgogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgka2V5LT5nZXQoJ2t0eScpLCBbJ1JTQScsICdFQyddKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwZW0gPSAkdGhpcy0+Z2V0UEVNKCRrZXkpOwogICAgICAgICAgICBpZiAoJGtleS0+aGFzKCdraWQnKSkgewogICAgICAgICAgICAgICAgJHJlc3VsdFska2V5LT5nZXQoJ2tpZCcpXSA9ICRwZW07CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkcGVtOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldFBFTShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRrZXktPmdldCgna3R5JykpIHsKICAgICAgICAgICAgY2FzZSAnUlNBJzoKICAgICAgICAgICAgICAgIHJldHVybiAobmV3IFJTQUtleSgka2V5KSktPnRvUEVNKCk7CiAgICAgICAgICAgIGNhc2UgJ0VDJzoKICAgICAgICAgICAgICAgIHJldHVybiAobmV3IEVDS2V5KCRrZXkpKS0+dG9QRU0oKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSets.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKLyoqCiAqIENsYXNzIEpXS1NldHMuCiAqLwpmaW5hbCBjbGFzcyBKV0tTZXRzIGltcGxlbWVudHMgSldLU2V0c0ludGVyZmFjZQp7CiAgICB1c2UgQmFzZUpXS1NldDsKICAgIHVzZSBKV0tTZXRQRU07CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlICRqd2tzZXRzID0gW107CgogICAgLyoqCiAgICAgKiBKV0tTZXRzIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlW10gJGp3a3NldHMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRqd2tzZXRzID0gW10pCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjphbGxJc0luc3RhbmNlT2YoJGp3a3NldHMsIEpXS1NldEludGVyZmFjZTo6Y2xhc3MpOwoKICAgICAgICAkdGhpcy0+andrc2V0cyA9ICRqd2tzZXRzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5U2V0KEpXS1NldEludGVyZmFjZSAkandrc2V0KQogICAgewogICAgICAgICR0aGlzLT5qd2tzZXRzW10gPSAkandrc2V0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpCiAgICB7CiAgICAgICAgJGtleXMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmp3a3NldHMgYXMgJGp3a3NldCkgewogICAgICAgICAgICAka2V5cyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJGtleXMsCiAgICAgICAgICAgICAgICAkandrc2V0LT5nZXRLZXlzKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAka2V5czsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEtleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAvL05vdCBhdmFpbGFibGUKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbW92ZUtleSgkaW5kZXgpCiAgICB7CiAgICAgICAgLy9Ob3QgYXZhaWxhYmxlCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWKSetsInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgSldLU2V0c0ludGVyZmFjZS4KICovCmludGVyZmFjZSBKV0tTZXRzSW50ZXJmYWNlIGV4dGVuZHMgSldLU2V0SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a3NldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkS2V5U2V0KEpXS1NldEludGVyZmFjZSAkandrc2V0KTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBKV1MuCiAqLwpmaW5hbCBjbGFzcyBKV1MgaW1wbGVtZW50cyBKV1NJbnRlcmZhY2UKewogICAgdXNlIEpXVDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRpc19wYXlsb2FkX2RldGFjaGVkID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGVuY29kZWRfcGF5bG9hZCA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVzID0gW107CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1BheWxvYWREZXRhY2hlZCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pc19wYXlsb2FkX2RldGFjaGVkOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aERldGFjaGVkUGF5bG9hZCgpCiAgICB7CiAgICAgICAgJGp3dCA9IGNsb25lICR0aGlzOwogICAgICAgICRqd3QtPmlzX3BheWxvYWRfZGV0YWNoZWQgPSB0cnVlOwoKICAgICAgICByZXR1cm4gJGp3dDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhBdHRhY2hlZFBheWxvYWQoKQogICAgewogICAgICAgICRqd3QgPSBjbG9uZSAkdGhpczsKICAgICAgICAkand0LT5pc19wYXlsb2FkX2RldGFjaGVkID0gZmFsc2U7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEVuY29kZWRQYXlsb2FkKCRlbmNvZGVkX3BheWxvYWQpCiAgICB7CiAgICAgICAgJGp3dCA9IGNsb25lICR0aGlzOwogICAgICAgICRqd3QtPmVuY29kZWRfcGF5bG9hZCA9ICRlbmNvZGVkX3BheWxvYWQ7CgogICAgICAgIHJldHVybiAkand0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5jb2RlZFBheWxvYWQoU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgaWYgKHRydWUgPT09ICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5lbmNvZGVkX3BheWxvYWQpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNvZGVkX3BheWxvYWQ7CiAgICAgICAgfQogICAgICAgICRwYXlsb2FkID0gJHRoaXMtPmdldFBheWxvYWQoKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkcGF5bG9hZCkpIHsKICAgICAgICAgICAgJHBheWxvYWQgPSBqc29uX2VuY29kZSgkcGF5bG9hZCk7CiAgICAgICAgfQogICAgICAgIEFzc2VydGlvbjo6bm90TnVsbCgkcGF5bG9hZCwgJ1Vuc3VwcG9ydGVkIHBheWxvYWQuJyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlKSA/IEJhc2U2NFVybDo6ZW5jb2RlKCRwYXlsb2FkKSA6ICRwYXlsb2FkOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlcygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gJmdldFNpZ25hdHVyZSgkaWQpCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zaWduYXR1cmVzWyRpZF0pKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlc1skaWRdOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIHNpZ25hdHVyZSBkb2VzIG5vdCBleGlzdC4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZUluZm9ybWF0aW9uKEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycyA9IFtdKQogICAgewogICAgICAgICRqd3MgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandzLT5zaWduYXR1cmVzW10gPSBTaWduYXR1cmU6OmNyZWF0ZVNpZ25hdHVyZSgkc2lnbmF0dXJlX2tleSwgJHByb3RlY3RlZF9oZWFkZXJzLCAkaGVhZGVycyk7CgogICAgICAgIHJldHVybiAkandzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU2lnbmF0dXJlRnJvbUxvYWRlZERhdGEoJHNpZ25hdHVyZSwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzKQogICAgewogICAgICAgICRqd3MgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandzLT5zaWduYXR1cmVzW10gPSBTaWduYXR1cmU6OmNyZWF0ZVNpZ25hdHVyZUZyb21Mb2FkZWREYXRhKCRzaWduYXR1cmUsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzLCAkaGVhZGVycyk7CgogICAgICAgIHJldHVybiAkandzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRTaWduYXR1cmVzKCkKICAgIHsKICAgICAgICByZXR1cm4gY291bnQoJHRoaXMtPnNpZ25hdHVyZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9Db21wYWN0SlNPTigkaWQpCiAgICB7CiAgICAgICAgJHNpZ25hdHVyZSA9ICR0aGlzLT5nZXRTaWduYXR1cmUoJGlkKTsKCiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKAogICAgICAgICAgICBlbXB0eSgkc2lnbmF0dXJlLT5nZXRIZWFkZXJzKCkpLAogICAgICAgICAgICAnVGhlIHNpZ25hdHVyZSBjb250YWlucyB1bnByb3RlY3RlZCBoZWFkZXJzIGFuZCBjYW5ub3QgYmUgY29udmVydGVkIGludG8gY29tcGFjdCBKU09OJwogICAgICAgICk7CiAgICAgICAgQXNzZXJ0aW9uOjp0cnVlKCR0aGlzLT5pc1BheWxvYWRFbmNvZGVkKCRzaWduYXR1cmUpIHx8IGVtcHR5KCR0aGlzLT5nZXRFbmNvZGVkUGF5bG9hZCgkc2lnbmF0dXJlKSksICdVbmFibGUgdG8gY29udmVydCB0aGUgSldTIHdpdGggbm9uLWVuY29kZWQgcGF5bG9hZC4nKTsKCiAgICAgICAgcmV0dXJuIHNwcmludGYoCiAgICAgICAgICAgICclcy4lcy4lcycsCiAgICAgICAgICAgICRzaWduYXR1cmUtPmdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCksCiAgICAgICAgICAgICR0aGlzLT5nZXRFbmNvZGVkUGF5bG9hZCgkc2lnbmF0dXJlKSwKICAgICAgICAgICAgQmFzZTY0VXJsOjplbmNvZGUoJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlKCkpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRmxhdHRlbmVkSlNPTigkaWQpCiAgICB7CiAgICAgICAgJHNpZ25hdHVyZSA9ICR0aGlzLT5nZXRTaWduYXR1cmUoJGlkKTsKCiAgICAgICAgJGRhdGEgPSBbXTsKICAgICAgICAkdmFsdWVzID0gWwogICAgICAgICAgICAncGF5bG9hZCcgICA9PiAkdGhpcy0+Z2V0RW5jb2RlZFBheWxvYWQoJHNpZ25hdHVyZSksCiAgICAgICAgICAgICdwcm90ZWN0ZWQnID0+ICRzaWduYXR1cmUtPmdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCksCiAgICAgICAgICAgICdoZWFkZXInICAgID0+ICRzaWduYXR1cmUtPmdldEhlYWRlcnMoKSwKICAgICAgICBdOwoKICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghZW1wdHkoJHZhbHVlKSkgewogICAgICAgICAgICAgICAgJGRhdGFbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGRhdGFbJ3NpZ25hdHVyZSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlKCkpOwoKICAgICAgICByZXR1cm4ganNvbl9lbmNvZGUoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9KU09OKCkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCR0aGlzLT5jb3VudFNpZ25hdHVyZXMoKSwgMCwgJ05vIHNpZ25hdHVyZS4nKTsKCiAgICAgICAgJGRhdGEgPSBbXTsKICAgICAgICAkdGhpcy0+Y2hlY2tQYXlsb2FkRW5jb2RpbmcoKTsKCiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+aXNQYXlsb2FkRGV0YWNoZWQoKSkgewogICAgICAgICAgICAkZGF0YVsncGF5bG9hZCddID0gJHRoaXMtPmdldEVuY29kZWRQYXlsb2FkKCR0aGlzLT5nZXRTaWduYXR1cmUoMCkpOwogICAgICAgIH0KCiAgICAgICAgJGRhdGFbJ3NpZ25hdHVyZXMnXSA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5nZXRTaWduYXR1cmVzKCkgYXMgJHNpZ25hdHVyZSkgewogICAgICAgICAgICAkdG1wID0gWydzaWduYXR1cmUnID0+IEJhc2U2NFVybDo6ZW5jb2RlKCRzaWduYXR1cmUtPmdldFNpZ25hdHVyZSgpKV07CiAgICAgICAgICAgICR2YWx1ZXMgPSBbCiAgICAgICAgICAgICAgICAncHJvdGVjdGVkJyA9PiAkc2lnbmF0dXJlLT5nZXRFbmNvZGVkUHJvdGVjdGVkSGVhZGVycygpLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgICAgPT4gJHNpZ25hdHVyZS0+Z2V0SGVhZGVycygpLAogICAgICAgICAgICBdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKCFlbXB0eSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcFska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkZGF0YVsnc2lnbmF0dXJlcyddW10gPSAkdG1wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGpzb25fZW5jb2RlKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBpc1BheWxvYWRFbmNvZGVkKFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlKQogICAgewogICAgICAgIHJldHVybiAhJHNpZ25hdHVyZS0+aGFzUHJvdGVjdGVkSGVhZGVyKCdiNjQnKSB8fCB0cnVlID09PSAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoJ2I2NCcpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tQYXlsb2FkRW5jb2RpbmcoKQogICAgewogICAgICAgICRpc19lbmNvZGVkID0gbnVsbDsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+Z2V0U2lnbmF0dXJlcygpIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRpc19lbmNvZGVkKSB7CiAgICAgICAgICAgICAgICAkaXNfZW5jb2RlZCA9ICR0aGlzLT5pc1BheWxvYWRFbmNvZGVkKCRzaWduYXR1cmUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHRoaXMtPmlzUGF5bG9hZERldGFjaGVkKCkpIHsKICAgICAgICAgICAgICAgIEFzc2VydGlvbjo6ZXEoJGlzX2VuY29kZWQsICR0aGlzLT5pc1BheWxvYWRFbmNvZGVkKCRzaWduYXR1cmUpLCAnRm9yZWlnbiBwYXlsb2FkIGVuY29kaW5nIGRldGVjdGVkLiBUaGUgSldTIGNhbm5vdCBiZSBjb252ZXJ0ZWQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWSInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV1NJbnRlcmZhY2UgZXh0ZW5kcyBKV1RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUGF5bG9hZERldGFjaGVkKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhEZXRhY2hlZFBheWxvYWQoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXVEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEF0dGFjaGVkUGF5bG9hZCgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZQogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRQYXlsb2FkKFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBzaWduYXR1cmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBKV1MuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50U2lnbmF0dXJlcygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycwogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZUluZm9ybWF0aW9uKEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleSwgYXJyYXkgJHByb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycyA9IFtdKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkc2lnbmF0dXJlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU2lnbmF0dXJlRnJvbUxvYWRlZERhdGEoJHNpZ25hdHVyZSwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhlIEpXUy4KICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2VbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlcygpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uICZnZXRTaWduYXR1cmUoJGlkKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQ29tcGFjdEpTT04oJGlkKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJGlkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRmxhdHRlbmVkSlNPTigkaWQpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvSlNPTigpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBKV1QuCiAqLwp0cmFpdCBKV1QKewogICAgLyoqCiAgICAgKiBAdmFyIG1peGVkfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcGF5bG9hZCA9IG51bGw7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXlsb2FkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBheWxvYWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUGF5bG9hZCgkcGF5bG9hZCkKICAgIHsKICAgICAgICAkand0ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGp3dC0+cGF5bG9hZCA9ICRwYXlsb2FkOwoKICAgICAgICByZXR1cm4gJGp3dDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENsYWltKCRrZXkpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oYXNDbGFpbSgka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnBheWxvYWRbJGtleV07CiAgICAgICAgfQogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBwYXlsb2FkIGRvZXMgbm90IGNvbnRhaW4gY2xhaW0gIiVzIi4nLCAka2V5KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGFpbXMoKQogICAgewogICAgICAgIGlmIChpc19hcnJheSgkdGhpcy0+cGF5bG9hZCkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wYXlsb2FkOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIHBheWxvYWQgZG9lcyBub3QgY29udGFpbiBjbGFpbXMuJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNDbGFpbSgka2V5KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGFzQ2xhaW1zKCkgJiYgYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+cGF5bG9hZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNDbGFpbXMoKQogICAgewogICAgICAgIHJldHVybiBpc19hcnJheSgkdGhpcy0+cGF5bG9hZCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/JWTInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCmludGVyZmFjZSBKV1RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwYXlsb2FkIG9mIHRoZSBKV1QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgIFBheWxvYWQKICAgICAqIEByZXR1cm4gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICBQYXlsb2FkCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgICAgUGF5bG9hZAogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlIFBheWxvYWQKICAgICAqIEByZXR1cm4gbWl4ZWQgICAgICAgICAgICAgICAgICAgICAgICBQYXlsb2FkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXlsb2FkKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHBheWxvYWQKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXlsb2FkKCRwYXlsb2FkKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBwYXlsb2FkIG9mIHRoZSBzcGVjaWZpZWQga2V5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIFBheWxvYWQgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENsYWltKCRrZXkpOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY2xhaW1zLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgUGF5bG9hZCB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2xhaW1zKCk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzQ2xhaW0oJGtleSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0NsYWltcygpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/PublicJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBQdWJsaWNKV0tTZXQuCiAqLwpmaW5hbCBjbGFzcyBQdWJsaWNKV0tTZXQgaW1wbGVtZW50cyBKV0tTZXRJbnRlcmZhY2UKewogICAgdXNlIEJhc2VKV0tTZXQ7CiAgICB1c2UgSldLU2V0UEVNOwoKICAgIC8qKgogICAgICogQHZhciBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGp3a3NldDsKCiAgICAvKioKICAgICAqIFB1YmxpY0pXS1NldCBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrc2V0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChKV0tTZXRJbnRlcmZhY2UgJGp3a3NldCkKICAgIHsKICAgICAgICAkdGhpcy0+andrc2V0ID0gJGp3a3NldDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEtleXMoKQogICAgewogICAgICAgICRrZXlzID0gW107CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5qd2tzZXQtPmdldEtleXMoKSBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgka2V5LT5nZXQoJ2t0eScpLCBbJ25vbmUnLCAnb2N0J10pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAka2V5c1tdID0gJGtleS0+dG9QdWJsaWMoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAka2V5czsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZEtleShKV0tJbnRlcmZhY2UgJGtleSkKICAgIHsKICAgICAgICAkdGhpcy0+andrc2V0LT5hZGRLZXkoJGtleSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1vdmVLZXkoJGluZGV4KQogICAgewogICAgICAgIC8vTm90IGF2YWlsYWJsZQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/Recipient.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBFbmNyeXB0aW9uSW5zdHJ1Y3Rpb24uCiAqLwpmaW5hbCBjbGFzcyBSZWNpcGllbnQgaW1wbGVtZW50cyBSZWNpcGllbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkZW5jcnlwdGVkX2tleSA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVjaXBpZW50X2tleSA9IG51bGw7CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50RnJvbUxvYWRlZEpXRShhcnJheSAkaGVhZGVycywgJGVuY3J5cHRlZF9rZXkpCiAgICB7CiAgICAgICAgJHJlY2lwaWVudCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJlY2lwaWVudC0+aGVhZGVycyA9ICRoZWFkZXJzOwogICAgICAgICRyZWNpcGllbnQtPmVuY3J5cHRlZF9rZXkgPSAkZW5jcnlwdGVkX2tleTsKCiAgICAgICAgcmV0dXJuICRyZWNpcGllbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50KEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJGhlYWRlcnMgPSBbXSkKICAgIHsKICAgICAgICAkcmVjaXBpZW50ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmVjaXBpZW50LT5oZWFkZXJzID0gJGhlYWRlcnM7CiAgICAgICAgJHJlY2lwaWVudC0+cmVjaXBpZW50X2tleSA9ICRyZWNpcGllbnRfa2V5OwoKICAgICAgICByZXR1cm4gJHJlY2lwaWVudDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcigka2V5KQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzSGVhZGVyKCRrZXkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyc1ska2V5XTsKICAgICAgICB9CiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGhlYWRlciAiJXMiIGRvZXMgbm90IGV4aXN0LicsICRrZXkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0hlYWRlcigka2V5KQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICR0aGlzLT5oZWFkZXJzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY3J5cHRlZEtleSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNyeXB0ZWRfa2V5OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVjaXBpZW50S2V5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlY2lwaWVudF9rZXk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/RecipientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgUmVjaXBpZW50SW50ZXJmYWNlLgogKi8KaW50ZXJmYWNlIFJlY2lwaWVudEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkaGVhZGVycwogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRlbmNyeXB0ZWRfa2V5CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50RnJvbUxvYWRlZEpXRShhcnJheSAkaGVhZGVycywgJGVuY3J5cHRlZF9rZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UgJHJlY2lwaWVudF9rZXkKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRoZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcUmVjaXBpZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUmVjaXBpZW50KEpXS0ludGVyZmFjZSAkcmVjaXBpZW50X2tleSwgYXJyYXkgJGhlYWRlcnMgPSBbXSk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgdW5wcm90ZWN0ZWQgaGVhZGVyIG9mIHRoZSBzcGVjaWZpZWQga2V5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0hlYWRlcigka2V5KTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNyeXB0ZWRLZXkoKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVjaXBpZW50S2V5KCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/RotatableInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgUm90YXRhYmxlSkludGVyZmFjZS4KICovCmludGVyZmFjZSBSb3RhdGFibGVJbnRlcmZhY2UgZXh0ZW5kcyBTdG9yYWJsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGNyZWF0ZSBhIG5ldyBrZXkgYW5kIGFkZCBpdCB0byB0aGUga2V5IHNldAogICAgICogVGhlIG9sZGVzdCBrZXkgaXMgcmVtb3ZlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJvdGF0ZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/RotatableJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBDbGFzcyBSb3RhdGFibGVKV0tTZXQuCiAqLwpmaW5hbCBjbGFzcyBSb3RhdGFibGVKV0tTZXQgZXh0ZW5kcyBTdG9yYWJsZUpXS1NldCBpbXBsZW1lbnRzIFJvdGF0YWJsZUludGVyZmFjZSwgSldLU2V0SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcm90YXRlKCkKICAgIHsKICAgICAgICAkdGhpcy0+bG9hZE9iamVjdElmTmVlZGVkKCk7CiAgICAgICAgJGp3a3NldCA9ICR0aGlzLT5nZXRPYmplY3QoKTsKCiAgICAgICAgJGtleXMgPSAkandrc2V0LT5nZXRLZXlzKCk7CiAgICAgICAgdW5zZXQoJGtleXNbY291bnQoJGtleXMpIC0gMV0pOwogICAgICAgICRqd2tzZXQgPSBuZXcgSldLU2V0KCk7CiAgICAgICAgJGp3a3NldC0+YWRkS2V5KCR0aGlzLT5jcmVhdGVKV0soKSk7CiAgICAgICAgZm9yZWFjaCAoJGtleXMgYXMgJGtleSkgewogICAgICAgICAgICAkandrc2V0LT5hZGRLZXkoJGtleSk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT5zZXRPYmplY3QoJGp3a3NldCk7CiAgICAgICAgJHRoaXMtPnNhdmVPYmplY3QoJGp3a3NldCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/Signature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBTaWduYXR1cmVJbnN0cnVjdGlvbi4KICovCmZpbmFsIGNsYXNzIFNpZ25hdHVyZSBpbXBsZW1lbnRzIFNpZ25hdHVyZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVycyA9IG51bGw7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHByb3RlY3RlZF9oZWFkZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25hdHVyZTsKCiAgICAvKioKICAgICAqIEB2YXIgXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVfa2V5OwoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZUZyb21Mb2FkZWREYXRhKCRzaWduYXR1cmUsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycykKICAgIHsKICAgICAgICAkb2JqZWN0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkb2JqZWN0LT5lbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzID0gJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnM7CiAgICAgICAgaWYgKG51bGwgIT09ICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzKSB7CiAgICAgICAgICAgICRwcm90ZWN0ZWRfaGVhZGVycyA9IGpzb25fZGVjb2RlKEJhc2U2NFVybDo6ZGVjb2RlKCRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzKSwgdHJ1ZSk7CiAgICAgICAgICAgIEFzc2VydGlvbjo6aXNBcnJheSgkcHJvdGVjdGVkX2hlYWRlcnMsICdVbmFibGUgdG8gZGVjb2RlIHRoZSBwcm90ZWN0ZWQgaGVhZGVycy4nKTsKICAgICAgICAgICAgJG9iamVjdC0+cHJvdGVjdGVkX2hlYWRlcnMgPSAkcHJvdGVjdGVkX2hlYWRlcnM7CiAgICAgICAgfQogICAgICAgICRvYmplY3QtPnNpZ25hdHVyZSA9ICRzaWduYXR1cmU7CiAgICAgICAgJG9iamVjdC0+aGVhZGVycyA9ICRoZWFkZXJzOwoKICAgICAgICByZXR1cm4gJG9iamVjdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVTaWduYXR1cmUoSldLSW50ZXJmYWNlICRzaWduYXR1cmVfa2V5LCBhcnJheSAkcHJvdGVjdGVkX2hlYWRlcnMsIGFycmF5ICRoZWFkZXJzKQogICAgewogICAgICAgICRvYmplY3QgPSBuZXcgc2VsZigpOwogICAgICAgICRvYmplY3QtPnByb3RlY3RlZF9oZWFkZXJzID0gJHByb3RlY3RlZF9oZWFkZXJzOwogICAgICAgIGlmICghZW1wdHkoJHByb3RlY3RlZF9oZWFkZXJzKSkgewogICAgICAgICAgICAkb2JqZWN0LT5lbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzID0gQmFzZTY0VXJsOjplbmNvZGUoanNvbl9lbmNvZGUoJHByb3RlY3RlZF9oZWFkZXJzKSk7CiAgICAgICAgfQogICAgICAgICRvYmplY3QtPnNpZ25hdHVyZV9rZXkgPSAkc2lnbmF0dXJlX2tleTsKICAgICAgICAkb2JqZWN0LT5oZWFkZXJzID0gJGhlYWRlcnM7CgogICAgICAgIHJldHVybiAkb2JqZWN0OwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdGVjdGVkSGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcm90ZWN0ZWRfaGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcm90ZWN0ZWRIZWFkZXIoJGtleSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmhhc1Byb3RlY3RlZEhlYWRlcigka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmdldFByb3RlY3RlZEhlYWRlcnMoKVska2V5XTsKICAgICAgICB9CiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIHByb3RlY3RlZCBoZWFkZXIgIiVzIiBkb2VzIG5vdCBleGlzdCcsICRrZXkpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Byb3RlY3RlZEhlYWRlcigka2V5KQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICR0aGlzLT5nZXRQcm90ZWN0ZWRIZWFkZXJzKCkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKCRrZXkpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5oYXNIZWFkZXIoJGtleSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5oZWFkZXJzWyRrZXldOwogICAgICAgIH0KICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgaGVhZGVyICIlcyIgZG9lcyBub3QgZXhpc3QnLCAka2V5KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNIZWFkZXIoJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+aGVhZGVycyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbEhlYWRlcnMoKQogICAgewogICAgICAgIHJldHVybiBhcnJheV9tZXJnZSgKICAgICAgICAgICAgJHRoaXMtPmdldFByb3RlY3RlZEhlYWRlcnMoKSwKICAgICAgICAgICAgJHRoaXMtPmdldEhlYWRlcnMoKQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVLZXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlX2tleTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/SignatureInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBTaWduYXR1cmUgSW5zdHJ1Y3Rpb24gSW50ZXJmYWNlLgogKgogKiBUaGlzIGludGVyZmFjZSBpcyByZXF1aXJlZCBieSB0aGUgU2lnbmVySW50ZXJmYWNlIHRvIHNpZ25lZCBwYXlsb2FkcyBhbmQgY3JlYXRlIGEgSldTLgogKi8KaW50ZXJmYWNlIFNpZ25hdHVyZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAkc2lnbmF0dXJlCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGVuY29kZWRfcHJvdGVjdGVkX2hlYWRlcnMKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XFNpZ25hdHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZUZyb21Mb2FkZWREYXRhKCRzaWduYXR1cmUsICRlbmNvZGVkX3Byb3RlY3RlZF9oZWFkZXJzLCBhcnJheSAkaGVhZGVycyk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZSAkc2lnbmF0dXJlX2tleQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJHByb3RlY3RlZF9oZWFkZXJzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XFNpZ25hdHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25hdHVyZShKV0tJbnRlcmZhY2UgJHNpZ25hdHVyZV9rZXksIGFycmF5ICRwcm90ZWN0ZWRfaGVhZGVycywgYXJyYXkgJGhlYWRlcnMpOwoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVLZXkoKTsKCiAgICAvKioKICAgICAqIFRoZSBwcm90ZWN0ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBUaGUgcHJvdGVjdGVkIGhlYWRlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcm90ZWN0ZWRIZWFkZXJzKCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcHJvdGVjdGVkIGhlYWRlciBvZiB0aGUgc3BlY2lmaWVkIGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gbWl4ZWR8bnVsbCBIZWFkZXIgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb3RlY3RlZEhlYWRlcigka2V5KTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNQcm90ZWN0ZWRIZWFkZXIoJGtleSk7CgogICAgLyoqCiAgICAgKiBUaGUgdW5wcm90ZWN0ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSB1bnByb3RlY3RlZCBoZWFkZXIgb2YgdGhlIHNwZWNpZmllZCBrZXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkfG51bGwgSGVhZGVyIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXIoJGtleSk7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGVhZGVyKCRrZXkpOwoKICAgIC8qKgogICAgICogVGhlIHByb3RlY3RlZCBhbmQgdW5wcm90ZWN0ZWQgaGVhZGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmF0dXJlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbEhlYWRlcnMoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzaWduYXR1cmUuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpZ25hdHVyZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/Storable.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwoKdHJhaXQgU3RvcmFibGUKewogICAgLyoqCiAgICAgKiBAdmFyIFxKc29uU2VyaWFsaXphYmxlCiAgICAgKi8KICAgIHByb3RlY3RlZCAkb2JqZWN0OwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkICRmaWxlbmFtZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50fG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRmaWxlX21vZGlmaWNhdGlvbl90aW1lID0gbnVsbDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRGaWxlbmFtZSgkZmlsZW5hbWUpCiAgICB7CiAgICAgICAgQXNzZXJ0aW9uOjpzdHJpbmcoJGZpbGVuYW1lLCAnSW52YWxpZCBmaWxlbmFtZS4nKTsKICAgICAgICBBc3NlcnRpb246OmRpcmVjdG9yeShkaXJuYW1lKCRmaWxlbmFtZSksICdUaGUgc2VsZWN0ZWQgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0LicpOwogICAgICAgIEFzc2VydGlvbjo6d3JpdGVhYmxlKGRpcm5hbWUoJGZpbGVuYW1lKSwgJ1RoZSBzZWxlY3RlZCBkaXJlY3RvcnkgaXMgbm90IHdyaXRhYmxlLicpOwogICAgICAgICR0aGlzLT5maWxlbmFtZSA9ICRmaWxlbmFtZTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2VuKCkKICAgIHsKICAgICAgICAkdGhpcy0+ZGVsZXRlKCk7CiAgICAgICAgJHRoaXMtPmxvYWRPYmplY3RJZk5lZWRlZCgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkKICAgIHsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHRoaXMtPmdldEZpbGVuYW1lKCkpKSB7CiAgICAgICAgICAgIHVubGluaygkdGhpcy0+Z2V0RmlsZW5hbWUoKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEZpbGVuYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZpbGVuYW1lOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSnNvblNlcmlhbGl6YWJsZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0T2JqZWN0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9iamVjdDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSnNvblNlcmlhbGl6YWJsZSAkb2JqZWN0CiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzZXRPYmplY3QoXEpzb25TZXJpYWxpemFibGUgJG9iamVjdCkKICAgIHsKICAgICAgICAkdGhpcy0+b2JqZWN0ID0gJG9iamVjdDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gbG9hZE9iamVjdElmTmVlZGVkKCkKICAgIHsKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmdldE9iamVjdCgpICYmIGZhbHNlID09PSAkdGhpcy0+aGFzRmlsZUJlZW5VcGRhdGVkKCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRjb250ZW50ID0gJHRoaXMtPmdldEZpbGVDb250ZW50KCkpIHsKICAgICAgICAgICAgJHRoaXMtPmNyZWF0ZUFuZFNhdmVPYmplY3QoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+c2V0T2JqZWN0KCR0aGlzLT5jcmVhdGVPYmplY3RGcm9tRmlsZUNvbnRlbnQoJGNvbnRlbnQpKTsKICAgICAgICAgICAgJHRoaXMtPmZpbGVfbW9kaWZpY2F0aW9uX3RpbWUgPSBmaWxlbXRpbWUoJHRoaXMtPmdldEZpbGVuYW1lKCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXl8bnVsbAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RmlsZUNvbnRlbnQoKQogICAgewogICAgICAgIGlmIChmaWxlX2V4aXN0cygkdGhpcy0+Z2V0RmlsZW5hbWUoKSkpIHsKICAgICAgICAgICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkdGhpcy0+Z2V0RmlsZW5hbWUoKSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJGNvbnRlbnQpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkY29udGVudCA9IGpzb25fZGVjb2RlKCRjb250ZW50LCB0cnVlKTsKICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkY29udGVudCkpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRjb250ZW50OwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpzb25TZXJpYWxpemFibGUKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZU5ld09iamVjdCgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRmaWxlX2NvbnRlbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKc29uU2VyaWFsaXphYmxlCiAgICAgKi8KICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVPYmplY3RGcm9tRmlsZUNvbnRlbnQoYXJyYXkgJGZpbGVfY29udGVudCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXN0TW9kaWZpY2F0aW9uVGltZSgpCiAgICB7CiAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCR0aGlzLT5nZXRGaWxlbmFtZSgpKSkgewogICAgICAgICAgICByZXR1cm4gZmlsZW10aW1lKCR0aGlzLT5nZXRGaWxlbmFtZSgpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGhhc0ZpbGVCZWVuVXBkYXRlZCgpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICR0aGlzLT5maWxlX21vZGlmaWNhdGlvbl90aW1lIHx8IG51bGwgPT09ICR0aGlzLT5nZXRMYXN0TW9kaWZpY2F0aW9uVGltZSgpKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5maWxlX21vZGlmaWNhdGlvbl90aW1lICE9PSAkdGhpcy0+Z2V0TGFzdE1vZGlmaWNhdGlvblRpbWUoKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlQW5kU2F2ZU9iamVjdCgpCiAgICB7CiAgICAgICAgJG9iamVjdCA9ICR0aGlzLT5jcmVhdGVOZXdPYmplY3QoKTsKICAgICAgICAkdGhpcy0+c2V0T2JqZWN0KCRvYmplY3QpOwogICAgICAgICR0aGlzLT5zYXZlT2JqZWN0KCRvYmplY3QpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBzYXZlT2JqZWN0KFxKc29uU2VyaWFsaXphYmxlICRvYmplY3QpCiAgICB7CiAgICAgICAgZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPmdldEZpbGVuYW1lKCksIGpzb25fZW5jb2RlKCRvYmplY3QpKTsKICAgICAgICAkdGhpcy0+ZmlsZV9tb2RpZmljYXRpb25fdGltZSA9IGZpbGVtdGltZSgkdGhpcy0+Z2V0RmlsZW5hbWUoKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/StorableInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCi8qKgogKiBJbnRlcmZhY2UgU3RvcmFibGVJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgU3RvcmFibGVJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZWdlbmVyYXRlIGEgY29tcGxldGVseSBuZXcgSldLLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnZW4oKTsKCiAgICAvKioKICAgICAqIERlbGV0ZSB0aGUgSldLLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCk7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXN0TW9kaWZpY2F0aW9uVGltZSgpOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/StorableJWK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSm9zZVxGYWN0b3J5XEpXS0ZhY3Rvcnk7CgovKioKICogQ2xhc3MgU3RvcmFibGVKV0suCiAqLwpjbGFzcyBTdG9yYWJsZUpXSyBpbXBsZW1lbnRzIFN0b3JhYmxlSW50ZXJmYWNlLCBKV0tJbnRlcmZhY2UKewogICAgdXNlIFN0b3JhYmxlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHBhcmFtZXRlcnM7CgogICAgLyoqCiAgICAgKiBSb3RhdGFibGVKV0sgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUKICAgICAqIEBwYXJhbSBhcnJheSAgJHBhcmFtZXRlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRmaWxlbmFtZSwgYXJyYXkgJHBhcmFtZXRlcnMpCiAgICB7CiAgICAgICAgJHRoaXMtPnNldEZpbGVuYW1lKCRmaWxlbmFtZSk7CiAgICAgICAgJHRoaXMtPnBhcmFtZXRlcnMgPSAkcGFyYW1ldGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEFsbCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0soKS0+Z2V0QWxsKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXQoJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXSygpLT5nZXQoJGtleSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXMoJGtleSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXSygpLT5oYXMoJGtleSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0aHVtYnByaW50KCRoYXNoX2FsZ29yaXRobSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXSygpLT50aHVtYnByaW50KCRoYXNoX2FsZ29yaXRobSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1B1YmxpYygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0soKS0+dG9QdWJsaWMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLKCktPmpzb25TZXJpYWxpemUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS0ludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SldLKCkKICAgIHsKICAgICAgICAkdGhpcy0+bG9hZE9iamVjdElmTmVlZGVkKCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0T2JqZWN0KCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZU5ld09iamVjdCgpCiAgICB7CiAgICAgICAgJGRhdGEgPSBKV0tGYWN0b3J5OjpjcmVhdGVLZXkoJHRoaXMtPnBhcmFtZXRlcnMpLT5nZXRBbGwoKTsKICAgICAgICAkZGF0YVsna2lkJ10gPSBCYXNlNjRVcmw6OmVuY29kZShyYW5kb21fYnl0ZXMoNjQpKTsKCiAgICAgICAgcmV0dXJuIEpXS0ZhY3Rvcnk6OmNyZWF0ZUZyb21WYWx1ZXMoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRmaWxlX2NvbnRlbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKc29uU2VyaWFsaXphYmxlCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVPYmplY3RGcm9tRmlsZUNvbnRlbnQoYXJyYXkgJGZpbGVfY29udGVudCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEpXSygkZmlsZV9jb250ZW50KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/StorableJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcRmFjdG9yeVxKV0tGYWN0b3J5OwoKLyoqCiAqIENsYXNzIFN0b3JhYmxlSldLU2V0LgogKi8KY2xhc3MgU3RvcmFibGVKV0tTZXQgaW1wbGVtZW50cyBTdG9yYWJsZUludGVyZmFjZSwgSldLU2V0SW50ZXJmYWNlCnsKICAgIHVzZSBTdG9yYWJsZTsKICAgIHVzZSBKV0tTZXRQRU07CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCAkcGFyYW1ldGVyczsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByb3RlY3RlZCAkbmJfa2V5czsKCiAgICAvKioKICAgICAqIFN0b3JhYmxlSldLU2V0IGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lCiAgICAgKiBAcGFyYW0gYXJyYXkgICRwYXJhbWV0ZXJzCiAgICAgKiBAcGFyYW0gaW50ICAgICRuYl9rZXlzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkZmlsZW5hbWUsIGFycmF5ICRwYXJhbWV0ZXJzLCAkbmJfa2V5cykKICAgIHsKICAgICAgICBBc3NlcnRpb246OmludGVnZXIoJG5iX2tleXMsICdUaGUga2V5IHNldCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIGtleS4nKTsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRuYl9rZXlzLCAwLCAnVGhlIGtleSBzZXQgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBrZXkuJyk7CiAgICAgICAgJHRoaXMtPnNldEZpbGVuYW1lKCRmaWxlbmFtZSk7CiAgICAgICAgJHRoaXMtPnBhcmFtZXRlcnMgPSAkcGFyYW1ldGVyczsKICAgICAgICAkdGhpcy0+bmJfa2V5cyA9ICRuYl9rZXlzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0tTZXQoKS0+Y3VycmVudCgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmV4dCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmdldEpXS1NldCgpLT5uZXh0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBrZXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPmtleSgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPnZhbGlkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKQogICAgewogICAgICAgICR0aGlzLT5nZXRKV0tTZXQoKS0+cmV3aW5kKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRFeGlzdHMoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5vZmZzZXRFeGlzdHMoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRHZXQoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5vZmZzZXRHZXQoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRTZXQoJG9mZnNldCwgJHZhbHVlKQogICAgewogICAgICAgIC8vIE5vdCBhdmFpbGFibGUKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldFVuc2V0KCRvZmZzZXQpCiAgICB7CiAgICAgICAgLy8gTm90IGF2YWlsYWJsZQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5KCRpbmRleCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5nZXRLZXkoJGluZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0tleSgkaW5kZXgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0tTZXQoKS0+aGFzS2V5KCRpbmRleCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRLZXlzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEpXS1NldCgpLT5nZXRLZXlzKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRLZXkoSldLSW50ZXJmYWNlICRrZXkpCiAgICB7CiAgICAgICAgLy8gTm90IGF2YWlsYWJsZQogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlS2V5KCRpbmRleCkKICAgIHsKICAgICAgICAvLyBOb3QgYXZhaWxhYmxlCiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudEtleXMoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPmNvdW50S2V5cygpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VsZWN0S2V5KCR0eXBlLCAkYWxnb3JpdGhtID0gbnVsbCwgYXJyYXkgJHJlc3RyaWN0aW9ucyA9IFtdKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPnNlbGVjdEtleSgkdHlwZSwgJGFsZ29yaXRobSwgJHJlc3RyaWN0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRKV0tTZXQoKS0+Y291bnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0SldLU2V0KCktPmpzb25TZXJpYWxpemUoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXS1NldEludGVyZmFjZQogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0SldLU2V0KCkKICAgIHsKICAgICAgICAkdGhpcy0+bG9hZE9iamVjdElmTmVlZGVkKCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0T2JqZWN0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGZpbGVfY29udGVudAogICAgICoKICAgICAqIEByZXR1cm4gXEpzb25TZXJpYWxpemFibGUKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZU9iamVjdEZyb21GaWxlQ29udGVudChhcnJheSAkZmlsZV9jb250ZW50KQogICAgewogICAgICAgIHJldHVybiBuZXcgSldLU2V0KCRmaWxlX2NvbnRlbnQpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgY3JlYXRlcyB0aGUgSldLU2V0IGFuZCBwb3B1bGF0ZSBpdCB3aXRoIGtleXMuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVOZXdPYmplY3QoKQogICAgewogICAgICAgICRqd2tzZXQgPSBuZXcgSldLU2V0KCk7CiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJHRoaXMtPm5iX2tleXM7ICRpKyspIHsKICAgICAgICAgICAgJGtleSA9ICR0aGlzLT5jcmVhdGVKV0soKTsKICAgICAgICAgICAgJGp3a3NldC0+YWRkS2V5KCRrZXkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqd2tzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2UKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZUpXSygpCiAgICB7CiAgICAgICAgJGRhdGEgPSBKV0tGYWN0b3J5OjpjcmVhdGVLZXkoJHRoaXMtPnBhcmFtZXRlcnMpLT5nZXRBbGwoKTsKICAgICAgICAkZGF0YVsna2lkJ10gPSBCYXNlNjRVcmw6OmVuY29kZShyYW5kb21fYnl0ZXMoNjQpKTsKCiAgICAgICAgcmV0dXJuIEpXS0ZhY3Rvcnk6OmNyZWF0ZUZyb21WYWx1ZXMoJGRhdGEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Object/X5UJWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXE9iamVjdDsKCnVzZSBBc3NlcnRcQXNzZXJ0aW9uOwp1c2UgSm9zZVxLZXlDb252ZXJ0ZXJcS2V5Q29udmVydGVyOwoKLyoqCiAqIENsYXNzIEpLVUpXS1NldC4KICovCmZpbmFsIGNsYXNzIFg1VUpXS1NldCBleHRlbmRzIERvd25sb2FkZWRKV0tTZXQKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV0tJbnRlcmZhY2VbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0S2V5cygpCiAgICB7CiAgICAgICAgJGNvbnRlbnQgPSBqc29uX2RlY29kZSgkdGhpcy0+Z2V0Q29udGVudCgpLCB0cnVlKTsKICAgICAgICBBc3NlcnRpb246OmlzQXJyYXkoJGNvbnRlbnQsICdJbnZhbGlkIGNvbnRlbnQuJyk7CiAgICAgICAgJGp3a3NldCA9IG5ldyBKV0tTZXQoKTsKICAgICAgICBmb3JlYWNoICgkY29udGVudCBhcyAka2lkID0+ICRjZXJ0KSB7CiAgICAgICAgICAgICRqd2sgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnQpOwogICAgICAgICAgICBBc3NlcnRpb246Om5vdEVtcHR5KCRqd2ssICdJbnZhbGlkIGNvbnRlbnQuJyk7CiAgICAgICAgICAgIGlmIChpc19zdHJpbmcoJGtpZCkpIHsKICAgICAgICAgICAgICAgICRqd2tbJ2tpZCddID0gJGtpZDsKICAgICAgICAgICAgfQogICAgICAgICAgICAkandrc2V0LT5hZGRLZXkobmV3IEpXSygkandrKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGp3a3NldC0+Z2V0S2V5cygpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Signer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgU2lnbmVyIGltcGxlbWVudHMgU2lnbmVySW50ZXJmYWNlCnsKICAgIHVzZSBCZWhhdmlvdXJcSGFzS2V5Q2hlY2tlcjsKICAgIHVzZSBCZWhhdmlvdXJcSGFzSldBTWFuYWdlcjsKICAgIHVzZSBCZWhhdmlvdXJcQ29tbW9uU2lnbmluZ01ldGhvZHM7CgogICAgLyoqCiAgICAgKiBTaWduZXIgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2VbXSAkc2lnbmF0dXJlX2FsZ29yaXRobXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRzaWduYXR1cmVfYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkdGhpcy0+c2V0U2lnbmF0dXJlQWxnb3JpdGhtcygkc2lnbmF0dXJlX2FsZ29yaXRobXMpOwoKICAgICAgICAkdGhpcy0+c2V0SldBTWFuYWdlcihGYWN0b3J5XEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OjpjcmVhdGVBbGdvcml0aG1NYW5hZ2VyKCRzaWduYXR1cmVfYWxnb3JpdGhtcykpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVNpZ25lcihhcnJheSAkc2lnbmF0dXJlX2FsZ29yaXRobXMpCiAgICB7CiAgICAgICAgJHNpZ25lciA9IG5ldyBzZWxmKCRzaWduYXR1cmVfYWxnb3JpdGhtcyk7CgogICAgICAgIHJldHVybiAkc2lnbmVyOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2lnbihPYmplY3RcSldTSW50ZXJmYWNlICYkandzKQogICAgewogICAgICAgICRuYl9zaWduYXR1cmVzID0gJGp3cy0+Y291bnRTaWduYXR1cmVzKCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRuYl9zaWduYXR1cmVzOyAkaSsrKSB7CiAgICAgICAgICAgICR0aGlzLT5jb21wdXRlU2lnbmF0dXJlKCRqd3MsICRqd3MtPmdldFNpZ25hdHVyZSgkaSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICAgICRqd3MKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb21wdXRlU2lnbmF0dXJlKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAmJHNpZ25hdHVyZSkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHNpZ25hdHVyZS0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIFNpZ25lciBJbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgU2lnbmVySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogU2lnbmVyIGNvbnN0cnVjdG9yLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXXxcSm9zZVxBbGdvcml0aG1cU2lnbmF0dXJlQWxnb3JpdGhtSW50ZXJmYWNlW10gJHNpZ25hdHVyZV9hbGdvcml0aG1zCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxTaWduZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVTaWduZXIoYXJyYXkgJHNpZ25hdHVyZV9hbGdvcml0aG1zKTsKCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1cHBvcnRlZFNpZ25hdHVyZUFsZ29yaXRobXMoKTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRqd3MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oT2JqZWN0XEpXU0ludGVyZmFjZSAmJGp3cyk7Cn0K]]></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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKCmZpbmFsIGNsYXNzIEJpZ0ludGVnZXIKewogICAgLyoqCiAgICAgKiBIb2xkcyB0aGUgQmlnSW50ZWdlcidzIHZhbHVlLgogICAgICoKICAgICAqIEB2YXIgcmVzb3VyY2UKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBiYXNlLTEwIGFuZCBiaW5hcnkgc3RyaW5ncyAoYmFzZS0yNTYpIHRvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBcR01QfHN0cmluZyAkdmFsdWUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAkYmFzZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSwgJGJhc2UpCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFxHTVApIHsKICAgICAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gZ21wX2luaXQoJHZhbHVlLCAkYmFzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUdNUFJlc291cmNlKCR2YWx1ZSkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmlzSW5zdGFuY2VPZigkdmFsdWUsIFxHTVA6OmNsYXNzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoJHZhbHVlKQogICAgewogICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCR2YWx1ZSk7CiAgICAgICAgJHZhbHVlID0gJzB4Jy5iaW4yaGV4KCR2YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUsIDE2KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbURlY2ltYWxTdHJpbmcoJHZhbHVlKQogICAgewogICAgICAgIEFzc2VydGlvbjo6c3RyaW5nKCR2YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUsIDEwKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBpbnQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbURlY2ltYWwoJHZhbHVlKQogICAgewogICAgICAgIEFzc2VydGlvbjo6aW50ZWdlcigkdmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlLCAxMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIEJpZ0ludGVnZXIgdG8gYSBiaW5hcnkgc3RyaW5nLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0J5dGVzKCkKICAgIHsKICAgICAgICBpZiAoZ21wX2NtcCgkdGhpcy0+dmFsdWUsIGdtcF9pbml0KDApKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkdGVtcCA9IGdtcF9zdHJ2YWwoZ21wX2FicygkdGhpcy0+dmFsdWUpLCAxNik7CiAgICAgICAgJHRlbXAgPSBtYl9zdHJsZW4oJHRlbXAsICc4Yml0JykgJiAxID8gJzAnLiR0ZW1wIDogJHRlbXA7CiAgICAgICAgJHRlbXAgPSBoZXgyYmluKCR0ZW1wKTsKCiAgICAgICAgcmV0dXJuIGx0cmltKCR0ZW1wLCBjaHIoMCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBCaWdJbnRlZ2VyIHRvIGEgYmluYXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9JbnRlZ2VyKCkKICAgIHsKICAgICAgICBpZiAoZ21wX2NtcCgkdGhpcy0+dmFsdWUsIGdtcF9pbml0KDApKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkdGVtcCA9IGdtcF9zdHJ2YWwoZ21wX2FicygkdGhpcy0+dmFsdWUpLCAxMCk7CgogICAgICAgIHJldHVybiAoaW50KSAkdGVtcDsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqICBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqICBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZChCaWdJbnRlZ2VyICR5KQogICAgewogICAgICAgICR2YWx1ZSA9IGdtcF9hZGQoJHRoaXMtPnZhbHVlLCAkeS0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlRnJvbUdNUFJlc291cmNlKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdHMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqICBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqICBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KEJpZ0ludGVnZXIgJHkpCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX3N1YigkdGhpcy0+dmFsdWUsICR5LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tR01QUmVzb3VyY2UoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE11bHRpcGxpZXMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR4CiAgICAgKgogICAgICogIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsdGlwbHkoQmlnSW50ZWdlciAkeCkKICAgIHsKICAgICAgICAkdmFsdWUgPSBnbXBfbXVsKCR0aGlzLT52YWx1ZSwgJHgtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZSgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogRGl2aWRlcyB0d28gQmlnSW50ZWdlcnMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHgKICAgICAqCiAgICAgKiAgQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGUoQmlnSW50ZWdlciAkeCkKICAgIHsKICAgICAgICAkdmFsdWUgPSBnbXBfZGl2KCR0aGlzLT52YWx1ZSwgJHgtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZSgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUGVyZm9ybXMgbW9kdWxhciBleHBvbmVudGlhdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkZQogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJG4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZFBvdyhCaWdJbnRlZ2VyICRlLCBCaWdJbnRlZ2VyICRuKQogICAgewogICAgICAgICR2YWx1ZSA9IGdtcF9wb3dtKCR0aGlzLT52YWx1ZSwgJGUtPnZhbHVlLCAkbi0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlRnJvbUdNUFJlc291cmNlKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyBtb2R1bGFyIGV4cG9uZW50aWF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRkCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2QoQmlnSW50ZWdlciAkZCkKICAgIHsKICAgICAgICAkdmFsdWUgPSBnbXBfbW9kKCR0aGlzLT52YWx1ZSwgJGQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUZyb21HTVBSZXNvdXJjZSgkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsY3VsYXRlcyBtb2R1bGFyIGludmVyc2VzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RJbnZlcnNlKEJpZ0ludGVnZXIgJG4pCiAgICB7CiAgICAgICAgJHZhbHVlID0gZ21wX2ludmVydCgkdGhpcy0+dmFsdWUsICRuLT52YWx1ZSk7CiAgICAgICAgQXNzZXJ0aW9uOjppc0luc3RhbmNlT2YoJHZhbHVlLCBcR01QOjpjbGFzcyk7CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tR01QUmVzb3VyY2UoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKgogICAgICogQHJldHVybiBpbnQgPCAwIGlmICR0aGlzIGlzIGxlc3MgdGhhbiAkeTsgPiAwIGlmICR0aGlzIGlzIGdyZWF0ZXIgdGhhbiAkeSwgYW5kIDAgaWYgdGhleSBhcmUgZXF1YWwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKEJpZ0ludGVnZXIgJHkpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9jbXAoJHRoaXMtPnZhbHVlLCAkeS0+dmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGVxdWFscyhCaWdJbnRlZ2VyICR5KQogICAgewogICAgICAgIHJldHVybiAwID09PSAkdGhpcy0+Y29tcGFyZSgkeSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJhbmRvbShCaWdJbnRlZ2VyICR5KQogICAgewogICAgICAgICR6ZXJvID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMCk7CgogICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tR01QUmVzb3VyY2UoZ21wX3JhbmRvbV9yYW5nZSgkemVyby0+dmFsdWUsICR5LT52YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdjZChCaWdJbnRlZ2VyICR5KQogICAgewogICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tR01QUmVzb3VyY2UoZ21wX2djZCgkdGhpcy0+dmFsdWUsICR5LT52YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvd2VyVGhhbihCaWdJbnRlZ2VyICR5KQogICAgewogICAgICAgIHJldHVybiAwID4gJHRoaXMtPmNvbXBhcmUoJHkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvd2VyT3JFcXVhbFRoYW4oQmlnSW50ZWdlciAkeSkKICAgIHsKICAgICAgICByZXR1cm4gMCA+PSAkdGhpcy0+Y29tcGFyZSgkeSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ3JlYXRlclRoYW4oQmlnSW50ZWdlciAkeSkKICAgIHsKICAgICAgICByZXR1cm4gMCA8ICR0aGlzLT5jb21wYXJlKCR5KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBncmVhdGVyT3JFcXVhbFRoYW4oQmlnSW50ZWdlciAkeSkKICAgIHsKICAgICAgICByZXR1cm4gMCA8PSAkdGhpcy0+Y29tcGFyZSgkeSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRXZlbigpCiAgICB7CiAgICAgICAgJHplcm8gPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tRGVjaW1hbCgwKTsKICAgICAgICAkdHdvICA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDIpOwoKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZCgkdHdvKS0+ZXF1YWxzKCR6ZXJvKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNPZGQoKQogICAgewogICAgICAgIHJldHVybiAhJHRoaXMtPmlzRXZlbigpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/ConcatKDF.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKCi8qKgogKiBDbGFzcyBDb25jYXRLREYuCiAqCiAqIFRoaXMgY2xhc3MgaXMgdXNlZCBieSB0aGUgRUNESC1FUyBhbGdvcml0aG1zCiAqCiAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzc1MTgjc2VjdGlvbi00LjYuMgogKi8KZmluYWwgY2xhc3MgQ29uY2F0S0RGCnsKICAgIC8qKgogICAgICogS2V5IERlcml2YXRpb24gRnVuY3Rpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkWiAgICAgICAgICAgICAgICAgICBTaGFyZWQgc2VjcmV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0gICAgICAgICAgIEVuY3J5cHRpb24gYWxnb3JpdGhtCiAgICAgKiBAcGFyYW0gaW50ICAgICRlbmNyeXB0aW9uX2tleV9zaXplIFNpemUgb2YgdGhlIGVuY3J5cHRpb24ga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRhcHUgICAgICAgICAgICAgICAgIEFncmVlbWVudCBQYXJ0eVVJbmZvIChpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZHVjZXIpCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhcHYgICAgICAgICAgICAgICAgIEFncmVlbWVudCBQYXJ0eVZJbmZvIChpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVjaXBpZW50KQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGUoJFosICRhbGdvcml0aG0sICRlbmNyeXB0aW9uX2tleV9zaXplLCAkYXB1ID0gJycsICRhcHYgPSAnJykKICAgIHsKICAgICAgICAkYXB1ID0gIWVtcHR5KCRhcHUpID8gQmFzZTY0VXJsOjpkZWNvZGUoJGFwdSkgOiAnJzsKICAgICAgICAkYXB2ID0gIWVtcHR5KCRhcHYpID8gQmFzZTY0VXJsOjpkZWNvZGUoJGFwdikgOiAnJzsKICAgICAgICAkZW5jcnlwdGlvbl9zZWdtZW50cyA9IFsKICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMoMSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJvdW5kIG51bWJlciAxCiAgICAgICAgICAgICRaLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBaIChzaGFyZWQgc2VjcmV0KQogICAgICAgICAgICBzZWxmOjp0b0ludDMyQml0cyhtYl9zdHJsZW4oJGFsZ29yaXRobSwgJzhiaXQnKSkuJGFsZ29yaXRobSwgLy8gU2l6ZSBvZiBhbGdvcml0aG0ncyBuYW1lIGFuZCBhbGdvcml0aG0KICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMobWJfc3RybGVuKCRhcHUsICc4Yml0JykpLiRhcHUsICAgICAgICAgICAgIC8vIFBhcnR5VUluZm8KICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMobWJfc3RybGVuKCRhcHYsICc4Yml0JykpLiRhcHYsICAgICAgICAgICAgIC8vIFBhcnR5VkluZm8KICAgICAgICAgICAgc2VsZjo6dG9JbnQzMkJpdHMoJGVuY3J5cHRpb25fa2V5X3NpemUpLCAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBQdWJJbmZvICh0aGUgZW5jcnlwdGlvbiBrZXkgc2l6ZSkKICAgICAgICAgICAgJycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN1cHBQcml2SW5mbwogICAgICAgIF07CgogICAgICAgICRpbnB1dCA9IGltcGxvZGUoJycsICRlbmNyeXB0aW9uX3NlZ21lbnRzKTsKICAgICAgICAkaGFzaCA9IGhhc2goJ3NoYTI1NicsICRpbnB1dCwgdHJ1ZSk7CiAgICAgICAgJGtkZiA9IG1iX3N1YnN0cigkaGFzaCwgMCwgJGVuY3J5cHRpb25fa2V5X3NpemUgLyA4LCAnOGJpdCcpOwoKICAgICAgICByZXR1cm4gJGtkZjsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnQgYW4gaW50ZWdlciBpbnRvIGEgMzIgYml0cyBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkdmFsdWUgSW50ZWdlciB0byBjb252ZXJ0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gdG9JbnQzMkJpdHMoJHZhbHVlKQogICAgewogICAgICAgIHJldHVybiBoZXgyYmluKHN0cl9wYWQoZGVjaGV4KCR2YWx1ZSksIDgsICcwJywgU1RSX1BBRF9MRUZUKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/Hash.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7CgpjbGFzcyBIYXNoCnsKICAgIC8qKgogICAgICogSGFzaCBQYXJhbWV0ZXIuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkaGFzaDsKCiAgICAvKioKICAgICAqIEhhc2ggTGVuZ3RoLgogICAgICoKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGxlbmd0aDsKCiAgICAvKioKICAgICAqIEByZXR1cm4gXEpvc2VcVXRpbFxIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhMSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdzaGExJywgMjApOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGEyNTYoKQogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignc2hhMjU2JywgMzIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGEzODQoKQogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignc2hhMzg0JywgNDgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGE1MTIoKQogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignc2hhNTEyJywgNjQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkaGFzaAogICAgICogQHBhcmFtIGludCAgICAkbGVuZ3RoCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGhhc2gsICRsZW5ndGgpCiAgICB7CiAgICAgICAgJHRoaXMtPmhhc2ggPSAkaGFzaDsKICAgICAgICAkdGhpcy0+bGVuZ3RoID0gJGxlbmd0aDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGVuZ3RoOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcHV0ZSB0aGUgSE1BQy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZXh0CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc2goJHRleHQpCiAgICB7CiAgICAgICAgcmV0dXJuIGhhc2goJHRoaXMtPmhhc2gsICR0ZXh0LCB0cnVlKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/JWELoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcT2JqZWN0XEpXRTsKdXNlIEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIEpXRUxvYWRlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRTZXJpYWxpemVkSnNvbkpXRShhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICAkandlID0gbmV3IEpXRSgpOwogICAgICAgICRqd2UgPSAkandlLT53aXRoQ2lwaGVydGV4dChCYXNlNjRVcmw6OmRlY29kZSgkZGF0YVsnY2lwaGVydGV4dCddKSk7CgogICAgICAgIHNlbGY6OnBvcHVsYXRlSVYoJGp3ZSwgJGRhdGEpOwogICAgICAgIHNlbGY6OnBvcHVsYXRlQUFEKCRqd2UsICRkYXRhKTsKICAgICAgICBzZWxmOjpwb3B1bGF0ZVRhZygkandlLCAkZGF0YSk7CiAgICAgICAgc2VsZjo6cG9wdWxhdGVTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKCRqd2UsICRkYXRhKTsKICAgICAgICBzZWxmOjpwb3B1bGF0ZVNoYXJlZEhlYWRlcnMoJGp3ZSwgJGRhdGEpOwoKICAgICAgICBmb3JlYWNoICgkZGF0YVsncmVjaXBpZW50cyddIGFzICRyZWNpcGllbnQpIHsKICAgICAgICAgICAgJGVuY3J5cHRlZF9rZXkgPSBzZWxmOjpnZXRSZWNpcGllbnRFbmNyeXB0ZWRLZXkoJHJlY2lwaWVudCk7CiAgICAgICAgICAgICRyZWNpcGllbnRfaGVhZGVycyA9IHNlbGY6OmdldFJlY2lwaWVudEhlYWRlcnMoJHJlY2lwaWVudCk7CgogICAgICAgICAgICAkandlID0gJGp3ZS0+YWRkUmVjaXBpZW50V2l0aEVuY3J5cHRlZEtleSgkZW5jcnlwdGVkX2tleSwgJHJlY2lwaWVudF9oZWFkZXJzKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGRhdGEKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcG9wdWxhdGVJVihKV0VJbnRlcmZhY2UgJiRqd2UsIGFycmF5ICRkYXRhKQogICAgewogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdpdicsICRkYXRhKSkgewogICAgICAgICAgICAkandlID0gJGp3ZS0+d2l0aElWKEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydpdiddKSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0VJbnRlcmZhY2UgJGp3ZQogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgICAgICAgJGRhdGEKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcG9wdWxhdGVBQUQoSldFSW50ZXJmYWNlICYkandlLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnYWFkJywgJGRhdGEpKSB7CiAgICAgICAgICAgICRqd2UgPSAkandlLT53aXRoQUFEKEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydhYWQnXSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldFSW50ZXJmYWNlICRqd2UKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICRkYXRhCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHBvcHVsYXRlVGFnKEpXRUludGVyZmFjZSAmJGp3ZSwgYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3RhZycsICRkYXRhKSkgewogICAgICAgICAgICAkandlID0gJGp3ZS0+d2l0aFRhZyhCYXNlNjRVcmw6OmRlY29kZSgkZGF0YVsndGFnJ10pKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAkandlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZGF0YQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZVNoYXJlZFByb3RlY3RlZEhlYWRlcnMoSldFSW50ZXJmYWNlICYkandlLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygncHJvdGVjdGVkJywgJGRhdGEpKSB7CiAgICAgICAgICAgICRqd2UgPSAkandlLT53aXRoRW5jb2RlZFNoYXJlZFByb3RlY3RlZEhlYWRlcnMoJGRhdGFbJ3Byb3RlY3RlZCddKTsKICAgICAgICAgICAgJGp3ZSA9ICRqd2UtPndpdGhTaGFyZWRQcm90ZWN0ZWRIZWFkZXJzKGpzb25fZGVjb2RlKEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydwcm90ZWN0ZWQnXSksIHRydWUpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXRUludGVyZmFjZSAkandlCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZGF0YQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZVNoYXJlZEhlYWRlcnMoSldFSW50ZXJmYWNlICYkandlLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygndW5wcm90ZWN0ZWQnLCAkZGF0YSkpIHsKICAgICAgICAgICAgJGp3ZSA9ICRqd2UtPndpdGhTaGFyZWRIZWFkZXJzKCRkYXRhWyd1bnByb3RlY3RlZCddKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFJlY2lwaWVudEhlYWRlcnMoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcicsICRkYXRhKSkgewogICAgICAgICAgICByZXR1cm4gJGRhdGFbJ2hlYWRlciddOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkYXRhCiAgICAgKgogICAgICogQHJldHVybiBudWxsfHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWNpcGllbnRFbmNyeXB0ZWRLZXkoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2VuY3J5cHRlZF9rZXknLCAkZGF0YSkpIHsKICAgICAgICAgICAgcmV0dXJuIEJhc2U2NFVybDo6ZGVjb2RlKCRkYXRhWydlbmNyeXB0ZWRfa2V5J10pOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/JWSLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBKb3NlXE9iamVjdFxKV1M7CnVzZSBKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2U7CnVzZSBKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2U7CgpmaW5hbCBjbGFzcyBKV1NMb2FkZXIKewogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkU2VyaWFsaXplZEpzb25KV1MoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgJGp3cyA9IG5ldyBKV1MoKTsKCiAgICAgICAgZm9yZWFjaCAoJGRhdGFbJ3NpZ25hdHVyZXMnXSBhcyAkc2lnbmF0dXJlKSB7CiAgICAgICAgICAgICRiaW5fc2lnbmF0dXJlID0gQmFzZTY0VXJsOjpkZWNvZGUoJHNpZ25hdHVyZVsnc2lnbmF0dXJlJ10pOwogICAgICAgICAgICAkcHJvdGVjdGVkX2hlYWRlcnMgPSBzZWxmOjpnZXRQcm90ZWN0ZWRIZWFkZXJzKCRzaWduYXR1cmUpOwogICAgICAgICAgICAkaGVhZGVycyA9IHNlbGY6OmdldEhlYWRlcnMoJHNpZ25hdHVyZSk7CgogICAgICAgICAgICAkandzID0gJGp3cy0+YWRkU2lnbmF0dXJlRnJvbUxvYWRlZERhdGEoJGJpbl9zaWduYXR1cmUsICRwcm90ZWN0ZWRfaGVhZGVycywgJGhlYWRlcnMpOwogICAgICAgIH0KCiAgICAgICAgc2VsZjo6cG9wdWxhdGVQYXlsb2FkKCRqd3MsICRkYXRhKTsKCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRhdGEKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFByb3RlY3RlZEhlYWRlcnMoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ3Byb3RlY3RlZCcsICRkYXRhKSkgewogICAgICAgICAgICByZXR1cm4gJGRhdGFbJ3Byb3RlY3RlZCddOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SGVhZGVycyhhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnaGVhZGVyJywgJGRhdGEpKSB7CiAgICAgICAgICAgIHJldHVybiAkZGF0YVsnaGVhZGVyJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gW107CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEpvc2VcT2JqZWN0XEpXU0ludGVyZmFjZSAkandzCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAkZGF0YQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZVBheWxvYWQoSldTSW50ZXJmYWNlICYkandzLCBhcnJheSAkZGF0YSkKICAgIHsKICAgICAgICAkaXNfZW5jb2RlZCA9IG51bGw7CiAgICAgICAgZm9yZWFjaCAoJGp3cy0+Z2V0U2lnbmF0dXJlcygpIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRpc19lbmNvZGVkKSB7CiAgICAgICAgICAgICAgICAkaXNfZW5jb2RlZCA9IHNlbGY6OmlzUGF5bG9hZEVuY29kZWQoJHNpZ25hdHVyZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgQXNzZXJ0aW9uOjplcSgkaXNfZW5jb2RlZCwgc2VsZjo6aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlKSwgJ0ZvcmVpZ24gcGF5bG9hZCBlbmNvZGluZyBkZXRlY3RlZC4gVGhlIEpXUyBjYW5ub3QgYmUgbG9hZGVkLicpOwogICAgICAgIH0KICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygncGF5bG9hZCcsICRkYXRhKSkgewogICAgICAgICAgICAkcGF5bG9hZCA9ICRkYXRhWydwYXlsb2FkJ107CiAgICAgICAgICAgICRqd3MgPSAkandzLT53aXRoQXR0YWNoZWRQYXlsb2FkKCk7CiAgICAgICAgICAgICRqd3MgPSAkandzLT53aXRoRW5jb2RlZFBheWxvYWQoJHBheWxvYWQpOwogICAgICAgICAgICBpZiAoZmFsc2UgIT09ICRpc19lbmNvZGVkKSB7CiAgICAgICAgICAgICAgICAkcGF5bG9hZCA9IEJhc2U2NFVybDo6ZGVjb2RlKCRwYXlsb2FkKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkanNvbiA9IGpzb25fZGVjb2RlKCRwYXlsb2FkLCB0cnVlKTsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICRqc29uICYmICFlbXB0eSgkcGF5bG9hZCkpIHsKICAgICAgICAgICAgICAgICRwYXlsb2FkID0gJGpzb247CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGp3cyA9ICRqd3MtPndpdGhQYXlsb2FkKCRwYXlsb2FkKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkandzID0gJGp3cy0+d2l0aERldGFjaGVkUGF5bG9hZCgpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNQYXlsb2FkRW5jb2RlZChTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZSkKICAgIHsKICAgICAgICByZXR1cm4gISRzaWduYXR1cmUtPmhhc1Byb3RlY3RlZEhlYWRlcignYjY0JykgfHwgdHJ1ZSA9PT0gJHNpZ25hdHVyZS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCdiNjQnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/Util/RSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlXFV0aWw7Cgp1c2UgQXNzZXJ0XEFzc2VydGlvbjsKdXNlIEpvc2VcS2V5Q29udmVydGVyXFJTQUtleTsKCmZpbmFsIGNsYXNzIFJTQQp7CiAgICAvKioKICAgICAqIEludGVnZXItdG8tT2N0ZXQtU3RyaW5nIHByaW1pdGl2ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gXEpvc2VcVXRpbFxCaWdJbnRlZ2VyICR4CiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICR4TGVuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydEludGVnZXJUb09jdGV0U3RyaW5nKCR4LCAkeExlbikKICAgIHsKICAgICAgICAkeCA9ICR4LT50b0J5dGVzKCk7CiAgICAgICAgaWYgKHN0cmxlbigkeCkgPiAkeExlbikgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RyX3BhZCgkeCwgJHhMZW4sIGNocigwKSwgU1RSX1BBRF9MRUZUKTsKICAgIH0KCiAgICAvKioKICAgICAqIE9jdGV0LVN0cmluZy10by1JbnRlZ2VyIHByaW1pdGl2ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR4CiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydE9jdGV0U3RyaW5nVG9JbnRlZ2VyKCR4KQogICAgewogICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKCR4KTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4cG9uZW50aWF0ZSB3aXRoIG9yIHdpdGhvdXQgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbS4KICAgICAqIE9wZXJhdGlvbiB3aXRoIHByaW1lcyAncCcgYW5kICdxJyBpcyBhcHBveC4gMnggZmFzdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBcSm9zZVxVdGlsXEJpZ0ludGVnZXIgICAgICRjCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZXhwb25lbnRpYXRlKFJTQUtleSAka2V5LCBCaWdJbnRlZ2VyICRjKQogICAgewogICAgICAgIGlmICgka2V5LT5pc1B1YmxpYygpIHx8IGVtcHR5KCRrZXktPmdldFByaW1lcygpKSkgewogICAgICAgICAgICByZXR1cm4gJGMtPm1vZFBvdygka2V5LT5nZXRFeHBvbmVudCgpLCAka2V5LT5nZXRNb2R1bHVzKCkpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAka2V5LT5nZXRQcmltZXMoKVswXTsKICAgICAgICAkcSA9ICRrZXktPmdldFByaW1lcygpWzFdOwogICAgICAgICRkUCA9ICRrZXktPmdldEV4cG9uZW50cygpWzBdOwogICAgICAgICRkUSA9ICRrZXktPmdldEV4cG9uZW50cygpWzFdOwogICAgICAgICRxSW52ID0gJGtleS0+Z2V0Q29lZmZpY2llbnQoKTsKCiAgICAgICAgJG0xID0gJGMtPm1vZFBvdygkZFAsICRwKTsKICAgICAgICAkbTIgPSAkYy0+bW9kUG93KCRkUSwgJHEpOwogICAgICAgICRoID0gJHFJbnYtPm11bHRpcGx5KCRtMS0+c3VidHJhY3QoJG0yKS0+YWRkKCRwKSktPm1vZCgkcCk7CiAgICAgICAgJG0gPSAkbTItPmFkZCgkaC0+bXVsdGlwbHkoJHEpKTsKCiAgICAgICAgcmV0dXJuICRtOwogICAgfQoKICAgIC8qKgogICAgICogUlNBIEVQLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBcSm9zZVxVdGlsXEJpZ0ludGVnZXIgICAgICRtCiAgICAgKgogICAgICogQHJldHVybiBcSm9zZVxVdGlsXEJpZ0ludGVnZXJ8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0UlNBRVAoUlNBS2V5ICRrZXksIEJpZ0ludGVnZXIgJG0pCiAgICB7CiAgICAgICAgaWYgKCRtLT5jb21wYXJlKEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApKSA8IDAgfHwgJG0tPmNvbXBhcmUoJGtleS0+Z2V0TW9kdWx1cygpKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmV4cG9uZW50aWF0ZSgka2V5LCAkbSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSU0EgRFAuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXEtleUNvbnZlcnRlclxSU0FLZXkgJGtleQogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcQmlnSW50ZWdlciAgICAgJGMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcnxmYWxzZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSU0FEUChSU0FLZXkgJGtleSwgQmlnSW50ZWdlciAkYykKICAgIHsKICAgICAgICBpZiAoJGMtPmNvbXBhcmUoQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMCkpIDwgMCB8fCAkYy0+Y29tcGFyZSgka2V5LT5nZXRNb2R1bHVzKCkpID4gMCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6ZXhwb25lbnRpYXRlKCRrZXksICRjKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJTQSBTUDEuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXEtleUNvbnZlcnRlclxSU0FLZXkgJGtleQogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcQmlnSW50ZWdlciAgICAgJG0KICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcnxmYWxzZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSU0FTUDEoUlNBS2V5ICRrZXksIEJpZ0ludGVnZXIgJG0pCiAgICB7CiAgICAgICAgaWYgKCRtLT5jb21wYXJlKEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApKSA8IDAgfHwgJG0tPmNvbXBhcmUoJGtleS0+Z2V0TW9kdWx1cygpKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmV4cG9uZW50aWF0ZSgka2V5LCAkbSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSU0FWUDEuCiAgICAgKgogICAgICogQHBhcmFtIFxKb3NlXEtleUNvbnZlcnRlclxSU0FLZXkgJGtleQogICAgICogQHBhcmFtIFxKb3NlXFV0aWxcQmlnSW50ZWdlciAgICAgJHMKICAgICAqCiAgICAgKiBAcmV0dXJuIFxKb3NlXFV0aWxcQmlnSW50ZWdlcnxmYWxzZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRSU0FWUDEoUlNBS2V5ICRrZXksIEJpZ0ludGVnZXIgJHMpCiAgICB7CiAgICAgICAgaWYgKCRzLT5jb21wYXJlKEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApKSA8IDAgfHwgJHMtPmNvbXBhcmUoJGtleS0+Z2V0TW9kdWx1cygpKSA+IDApIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmV4cG9uZW50aWF0ZSgka2V5LCAkcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBNR0YxLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgJG1nZlNlZWQKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgJG1hc2tMZW4KICAgICAqIEBwYXJhbSBcSm9zZVxVdGlsXEhhc2ggJG1nZkhhc2gKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRNR0YxKCRtZ2ZTZWVkLCAkbWFza0xlbiwgSGFzaCAkbWdmSGFzaCkKICAgIHsKICAgICAgICAkdCA9ICcnOwogICAgICAgICRjb3VudCA9IGNlaWwoJG1hc2tMZW4gLyAkbWdmSGFzaC0+Z2V0TGVuZ3RoKCkpOwogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRjb3VudDsgJGkrKykgewogICAgICAgICAgICAkYyA9IHBhY2soJ04nLCAkaSk7CiAgICAgICAgICAgICR0IC49ICRtZ2ZIYXNoLT5oYXNoKCRtZ2ZTZWVkLiRjKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtYl9zdWJzdHIoJHQsIDAsICRtYXNrTGVuLCAnOGJpdCcpOwogICAgfQoKICAgIC8qKgogICAgICogUlNBRVMtT0FFUC1FTkNSWVBULgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxLZXlDb252ZXJ0ZXJcUlNBS2V5ICRrZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICRtCiAgICAgKiBAcGFyYW0gXEpvc2VcVXRpbFxIYXNoICAgICAgICAgICAkaGFzaAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGVuY3J5cHRSU0FFU09BRVAoUlNBS2V5ICRrZXksICRtLCBIYXNoICRoYXNoKQogICAgewogICAgICAgICRtTGVuID0gbWJfc3RybGVuKCRtLCAnOGJpdCcpOwogICAgICAgICRsSGFzaCA9ICRoYXNoLT5oYXNoKCcnKTsKICAgICAgICAkcHMgPSBzdHJfcmVwZWF0KGNocigwKSwgJGtleS0+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[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKdXNlIEFzc2VydFxBc3NlcnRpb247CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwoKZmluYWwgY2xhc3MgVmVyaWZpZXIgaW1wbGVtZW50cyBWZXJpZmllckludGVyZmFjZQp7CiAgICB1c2UgQmVoYXZpb3VyXEhhc0tleUNoZWNrZXI7CiAgICB1c2UgQmVoYXZpb3VyXEhhc0pXQU1hbmFnZXI7CiAgICB1c2UgQmVoYXZpb3VyXENvbW1vblNpZ25pbmdNZXRob2RzOwoKICAgIC8qKgogICAgICogVmVyaWZpZXIgY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ1tdfFxKb3NlXEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2VbXSAkc2lnbmF0dXJlX2FsZ29yaXRobXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRzaWduYXR1cmVfYWxnb3JpdGhtcykKICAgIHsKICAgICAgICAkdGhpcy0+c2V0U2lnbmF0dXJlQWxnb3JpdGhtcygkc2lnbmF0dXJlX2FsZ29yaXRobXMpOwogICAgICAgICR0aGlzLT5zZXRKV0FNYW5hZ2VyKEZhY3RvcnlcQWxnb3JpdGhtTWFuYWdlckZhY3Rvcnk6OmNyZWF0ZUFsZ29yaXRobU1hbmFnZXIoJHNpZ25hdHVyZV9hbGdvcml0aG1zKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlVmVyaWZpZXIoYXJyYXkgJHNpZ25hdHVyZV9hbGdvcml0aG1zKQogICAgewogICAgICAgICR2ZXJpZmllciA9IG5ldyBzZWxmKCRzaWduYXR1cmVfYWxnb3JpdGhtcyk7CgogICAgICAgIHJldHVybiAkdmVyaWZpZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlXaXRoS2V5KE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XEpXS0ludGVyZmFjZSAkandrLCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkandrX3NldCA9IG5ldyBPYmplY3RcSldLU2V0KCk7CiAgICAgICAgJGp3a19zZXQtPmFkZEtleSgkandrKTsKCiAgICAgICAgJHRoaXMtPnZlcmlmeVNpZ25hdHVyZXMoJGp3cywgJGp3a19zZXQsICRkZXRhY2hlZF9wYXlsb2FkLCAkcmVjaXBpZW50X2luZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeVdpdGhLZXlTZXQoT2JqZWN0XEpXU0ludGVyZmFjZSAkandzLCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwsICYkcmVjaXBpZW50X2luZGV4ID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+dmVyaWZ5U2lnbmF0dXJlcygkandzLCAkandrX3NldCwgJGRldGFjaGVkX3BheWxvYWQsICRyZWNpcGllbnRfaW5kZXgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgICAgICAgJGp3cwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgICAgJGp3a19zZXQKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAgICAgICAgICAgICRkZXRhY2hlZF9wYXlsb2FkCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCwgT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlLCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwpCiAgICB7CiAgICAgICAgJGlucHV0ID0gJHRoaXMtPmdldElucHV0VG9WZXJpZnkoJGp3cywgJHNpZ25hdHVyZSwgJGRldGFjaGVkX3BheWxvYWQpOwogICAgICAgIGZvcmVhY2ggKCRqd2tfc2V0LT5nZXRLZXlzKCkgYXMgJGp3aykgewogICAgICAgICAgICAkYWxnb3JpdGhtID0gJHRoaXMtPmdldEFsZ29yaXRobSgkc2lnbmF0dXJlKTsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICR0aGlzLT5jaGVja0tleVVzYWdlKCRqd2ssICd2ZXJpZmljYXRpb24nKTsKICAgICAgICAgICAgICAgICR0aGlzLT5jaGVja0tleUFsZ29yaXRobSgkandrLCAkYWxnb3JpdGhtLT5nZXRBbGdvcml0aG1OYW1lKCkpOwogICAgICAgICAgICAgICAgaWYgKHRydWUgPT09ICRhbGdvcml0aG0tPnZlcmlmeSgkandrLCAkaW5wdXQsICRzaWduYXR1cmUtPmdldFNpZ25hdHVyZSgpKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAvL1dlIGRvIG5vdGhpbmcsIHdlIGNvbnRpbnVlIHdpdGggb3RoZXIga2V5cwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICAgICRqd3MKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAgICAgICAgICAgICRkZXRhY2hlZF9wYXlsb2FkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRJbnB1dFRvVmVyaWZ5KE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgT2JqZWN0XFNpZ25hdHVyZUludGVyZmFjZSAkc2lnbmF0dXJlLCAkZGV0YWNoZWRfcGF5bG9hZCkKICAgIHsKICAgICAgICAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVycyA9ICRzaWduYXR1cmUtPmdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXJzKCk7CiAgICAgICAgaWYgKCEkc2lnbmF0dXJlLT5oYXNQcm90ZWN0ZWRIZWFkZXIoJ2I2NCcpIHx8IHRydWUgPT09ICRzaWduYXR1cmUtPmdldFByb3RlY3RlZEhlYWRlcignYjY0JykpIHsKICAgICAgICAgICAgaWYgKG51bGwgIT09ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCRzaWduYXR1cmUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVycywgJGp3cy0+Z2V0RW5jb2RlZFBheWxvYWQoJHNpZ25hdHVyZSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcGF5bG9hZCA9IGVtcHR5KCRqd3MtPmdldFBheWxvYWQoKSkgPyAkZGV0YWNoZWRfcGF5bG9hZCA6ICRqd3MtPmdldFBheWxvYWQoKTsKICAgICAgICAgICAgJHBheWxvYWQgPSBpc19zdHJpbmcoJHBheWxvYWQpID8gJHBheWxvYWQgOiBqc29uX2VuY29kZSgkcGF5bG9hZCk7CgogICAgICAgICAgICByZXR1cm4gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVycywgQmFzZTY0VXJsOjplbmNvZGUoJHBheWxvYWQpKTsKICAgICAgICB9CgogICAgICAgICRwYXlsb2FkID0gZW1wdHkoJGp3cy0+Z2V0UGF5bG9hZCgpKSA/ICRkZXRhY2hlZF9wYXlsb2FkIDogJGp3cy0+Z2V0UGF5bG9hZCgpOwogICAgICAgICRwYXlsb2FkID0gaXNfc3RyaW5nKCRwYXlsb2FkKSA/ICRwYXlsb2FkIDoganNvbl9lbmNvZGUoJHBheWxvYWQpOwoKICAgICAgICByZXR1cm4gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZF9wcm90ZWN0ZWRfaGVhZGVycywgJHBheWxvYWQpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV1NJbnRlcmZhY2UgICAgJGp3cwogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAgICAgICAgICAgICAgICAgICRkZXRhY2hlZF9wYXlsb2FkCiAgICAgKiBAcGFyYW0gaW50fG51bGwgICAgICAgICAgICAgICAgICAgICAkcmVjaXBpZW50X2luZGV4CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlcyhPYmplY3RcSldTSW50ZXJmYWNlICRqd3MsIE9iamVjdFxKV0tTZXRJbnRlcmZhY2UgJGp3a19zZXQsICRkZXRhY2hlZF9wYXlsb2FkID0gbnVsbCwgJiRyZWNpcGllbnRfaW5kZXggPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jaGVja1BheWxvYWQoJGp3cywgJGRldGFjaGVkX3BheWxvYWQpOwogICAgICAgICR0aGlzLT5jaGVja0pXS1NldCgkandrX3NldCk7CiAgICAgICAgJHRoaXMtPmNoZWNrU2lnbmF0dXJlcygkandzKTsKCiAgICAgICAgJG5iX3NpZ25hdHVyZXMgPSAkandzLT5jb3VudFNpZ25hdHVyZXMoKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5iX3NpZ25hdHVyZXM7ICRpKyspIHsKICAgICAgICAgICAgJHNpZ25hdHVyZSA9ICRqd3MtPmdldFNpZ25hdHVyZSgkaSk7CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+dmVyaWZ5U2lnbmF0dXJlKCRqd3MsICRqd2tfc2V0LCAkc2lnbmF0dXJlLCAkZGV0YWNoZWRfcGF5bG9hZCk7CgogICAgICAgICAgICBpZiAodHJ1ZSA9PT0gJHJlc3VsdCkgewogICAgICAgICAgICAgICAgJHJlY2lwaWVudF9pbmRleCA9ICRpOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byB2ZXJpZnkgdGhlIEpXUy4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRqd3MKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja1NpZ25hdHVyZXMoT2JqZWN0XEpXU0ludGVyZmFjZSAkandzKQogICAgewogICAgICAgIEFzc2VydGlvbjo6Z3JlYXRlclRoYW4oJGp3cy0+Y291bnRTaWduYXR1cmVzKCksIDAsICdUaGUgSldTIGRvZXMgbm90IGNvbnRhaW4gYW55IHNpZ25hdHVyZS4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tKV0tTZXQoT2JqZWN0XEpXS1NldEludGVyZmFjZSAkandrX3NldCkKICAgIHsKICAgICAgICBBc3NlcnRpb246OmdyZWF0ZXJUaGFuKCRqd2tfc2V0LT5jb3VudEtleXMoKSwgMCwgJ1RoZXJlIGlzIG5vIGtleSBpbiB0aGUga2V5IHNldC4nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRqd3MKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAgICAgICAgICAgICAgICRkZXRhY2hlZF9wYXlsb2FkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tQYXlsb2FkKE9iamVjdFxKV1NJbnRlcmZhY2UgJGp3cywgJGRldGFjaGVkX3BheWxvYWQgPSBudWxsKQogICAgewogICAgICAgIEFzc2VydGlvbjo6ZmFsc2UoCiAgICAgICAgICAgIG51bGwgIT09ICRkZXRhY2hlZF9wYXlsb2FkICYmICFlbXB0eSgkandzLT5nZXRQYXlsb2FkKCkpLAogICAgICAgICAgICAnQSBkZXRhY2hlZCBwYXlsb2FkIGlzIHNldCwgYnV0IHRoZSBKV1MgYWxyZWFkeSBoYXMgYSBwYXlsb2FkLicKICAgICAgICApOwogICAgICAgIEFzc2VydGlvbjo6dHJ1ZSgKICAgICAgICAgICAgIWVtcHR5KCRqd3MtPmdldFBheWxvYWQoKSkgfHwgbnVsbCAhPT0gJGRldGFjaGVkX3BheWxvYWQsCiAgICAgICAgICAgICdObyBwYXlsb2FkLicKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFxKb3NlXE9iamVjdFxTaWduYXR1cmVJbnRlcmZhY2UgJHNpZ25hdHVyZQogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEFsZ29yaXRobShPYmplY3RcU2lnbmF0dXJlSW50ZXJmYWNlICRzaWduYXR1cmUpCiAgICB7CiAgICAgICAgJGNvbXBsZXRlX2hlYWRlcnMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0UHJvdGVjdGVkSGVhZGVycygpLAogICAgICAgICAgICAkc2lnbmF0dXJlLT5nZXRIZWFkZXJzKCkKICAgICAgICApOwogICAgICAgIEFzc2VydGlvbjo6a2V5RXhpc3RzKCRjb21wbGV0ZV9oZWFkZXJzLCAnYWxnJywgJ05vICJhbGciIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlci4nKTsKCiAgICAgICAgJGFsZ29yaXRobSA9ICR0aGlzLT5nZXRKV0FNYW5hZ2VyKCktPmdldEFsZ29yaXRobSgkY29tcGxldGVfaGVhZGVyc1snYWxnJ10pOwogICAgICAgIEFzc2VydGlvbjo6aXNJbnN0YW5jZU9mKCRhbGdvcml0aG0sIEFsZ29yaXRobVxTaWduYXR1cmVBbGdvcml0aG1JbnRlcmZhY2U6OmNsYXNzLCBzcHJpbnRmKCdUaGUgYWxnb3JpdGhtICIlcyIgaXMgbm90IHN1cHBvcnRlZCBvciBkb2VzIG5vdCBpbXBsZW1lbnQgU2lnbmF0dXJlSW50ZXJmYWNlLicsICRjb21wbGV0ZV9oZWFkZXJzWydhbGcnXSkpOwoKICAgICAgICByZXR1cm4gJGFsZ29yaXRobTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/jose/src/VerifierInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoZSBNSVQgTGljZW5zZSAoTUlUKQogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBTcG9ta3ktTGFicwogKgogKiBUaGlzIHNvZnR3YXJlIG1heSBiZSBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zCiAqIG9mIHRoZSBNSVQgbGljZW5zZS4gIFNlZSB0aGUgTElDRU5TRSBmaWxlIGZvciBkZXRhaWxzLgogKi8KCm5hbWVzcGFjZSBKb3NlOwoKLyoqCiAqIFZlcmlmaWVyIEludGVyZmFjZS4KICovCmludGVyZmFjZSBWZXJpZmllckludGVyZmFjZQp7CiAgICAvKioKICAgICAvKioKICAgICAqIFNpZ25lciBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW118XEpvc2VcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobUludGVyZmFjZVtdICRzaWduYXR1cmVfYWxnb3JpdGhtcwogICAgICoKICAgICAqIEByZXR1cm4gXEpvc2VcVmVyaWZpZXJJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVWZXJpZmllcihhcnJheSAkc2lnbmF0dXJlX2FsZ29yaXRobXMpOwoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkU2lnbmF0dXJlQWxnb3JpdGhtcygpOwoKICAgIC8qKgogICAgICogVmVyaWZ5IHRoZSBzaWduYXR1cmUgb2YgdGhlIGlucHV0LgogICAgICogVGhlIGlucHV0IG11c3QgYmUgYSB2YWxpZCBKV1MuIFRoaXMgbWV0aG9kIGlzIHVzdWFsbHkgY2FsbGVkIGFmdGVyIHRoZSAibG9hZCIgbWV0aG9kLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICRpbnB1dCAgICAgICAgICAgIEEgSldTIG9iamVjdC4KICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLSW50ZXJmYWNlICRqd2sgICAgICAgICAgICAgIFRoZSBzaWduYXR1cmUgd2lsbCBiZSB2ZXJpZmllZCB1c2luZyBrZXlzIGluIHRoZSBrZXkgc2V0CiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgICAgICAgICAgICAgICAkZGV0YWNoZWRfcGF5bG9hZCBJZiBub3QgbnVsbCwgdGhlIHZhbHVlIG11c3QgYmUgdGhlIGRldGFjaGVkIHBheWxvYWQgZW5jb2RlZCBpbiBCYXNlNjQgVVJMIHNhZmUuIElmIHRoZSBpbnB1dCBjb250YWlucyBhIHBheWxvYWQsIHRocm93cyBhbiBleGNlcHRpb24uCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgICAgICAkc2lnbmF0dXJlX2luZGV4ICBJZiB0aGUgSldTIGhhcyBiZWVuIHZlcmlmaWVkLCBhbiBpbnRlZ2VyIHRoYXQgcmVwcmVzZW50cyB0aGUgSUQgb2YgdGhlIHNpZ25hdHVyZSBpcyBzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeVdpdGhLZXkoT2JqZWN0XEpXU0ludGVyZmFjZSAkaW5wdXQsIE9iamVjdFxKV0tJbnRlcmZhY2UgJGp3aywgJGRldGFjaGVkX3BheWxvYWQgPSBudWxsLCAmJHNpZ25hdHVyZV9pbmRleCA9IG51bGwpOwoKICAgIC8qKgogICAgICogVmVyaWZ5IHRoZSBzaWduYXR1cmUgb2YgdGhlIGlucHV0LgogICAgICogVGhlIGlucHV0IG11c3QgYmUgYSB2YWxpZCBKV1MuIFRoaXMgbWV0aG9kIGlzIHVzdWFsbHkgY2FsbGVkIGFmdGVyIHRoZSAibG9hZCIgbWV0aG9kLgogICAgICoKICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldTSW50ZXJmYWNlICAgICRqd3MgICAgICAgICAgICAgIEEgSldTIG9iamVjdC4KICAgICAqIEBwYXJhbSBcSm9zZVxPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0ICAgICAgICAgIFRoZSBzaWduYXR1cmUgd2lsbCBiZSB2ZXJpZmllZCB1c2luZyBrZXlzIGluIHRoZSBrZXkgc2V0CiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgICAgICAgICAgICAgICAgICAkZGV0YWNoZWRfcGF5bG9hZCBJZiBub3QgbnVsbCwgdGhlIHZhbHVlIG11c3QgYmUgdGhlIGRldGFjaGVkIHBheWxvYWQgZW5jb2RlZCBpbiBCYXNlNjQgVVJMIHNhZmUuIElmIHRoZSBpbnB1dCBjb250YWlucyBhIHBheWxvYWQsIHRocm93cyBhbiBleGNlcHRpb24uCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgICAgICAgICAgICAgICAgICAgICAkc2lnbmF0dXJlX2luZGV4ICBJZiB0aGUgSldTIGhhcyBiZWVuIHZlcmlmaWVkLCBhbiBpbnRlZ2VyIHRoYXQgcmVwcmVzZW50cyB0aGUgSUQgb2YgdGhlIHNpZ25hdHVyZSBpcyBzZXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeVdpdGhLZXlTZXQoT2JqZWN0XEpXU0ludGVyZmFjZSAkandzLCBPYmplY3RcSldLU2V0SW50ZXJmYWNlICRqd2tfc2V0LCAkZGV0YWNoZWRfcGF5bG9hZCA9IG51bGwsICYkc2lnbmF0dXJlX2luZGV4ID0gbnVsbCk7Cn0K]]></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+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCnVzZSBTeW1mb255XFBvbHlmaWxsXE1ic3RyaW5nIGFzIHA7CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfc3RybGVuJykpIHsKICAgIGRlZmluZSgnTUJfQ0FTRV9VUFBFUicsIDApOwogICAgZGVmaW5lKCdNQl9DQVNFX0xPV0VSJywgMSk7CiAgICBkZWZpbmUoJ01CX0NBU0VfVElUTEUnLCAyKTsKCiAgICBmdW5jdGlvbiBtYl9jb252ZXJ0X2VuY29kaW5nKCRzLCAkdG8sICRmcm9tID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfY29udmVydF9lbmNvZGluZygkcywgJHRvLCAkZnJvbSk7IH0KICAgIGZ1bmN0aW9uIG1iX2RlY29kZV9taW1laGVhZGVyKCRzKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9kZWNvZGVfbWltZWhlYWRlcigkcyk7IH0KICAgIGZ1bmN0aW9uIG1iX2VuY29kZV9taW1laGVhZGVyKCRzLCAkY2hhcnNldCA9IG51bGwsICR0cmFuc2ZlckVuYyA9IG51bGwsICRsZiA9IG51bGwsICRpbmRlbnQgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9lbmNvZGVfbWltZWhlYWRlcigkcywgJGNoYXJzZXQsICR0cmFuc2ZlckVuYywgJGxmLCAkaW5kZW50KTsgfQogICAgZnVuY3Rpb24gbWJfY29udmVydF9jYXNlKCRzLCAkbW9kZSwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2NvbnZlcnRfY2FzZSgkcywgJG1vZGUsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9pbnRlcm5hbF9lbmNvZGluZygkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfaW50ZXJuYWxfZW5jb2RpbmcoJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX2xhbmd1YWdlKCRsYW5nID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfbGFuZ3VhZ2UoJGxhbmcpOyB9CiAgICBmdW5jdGlvbiBtYl9saXN0X2VuY29kaW5ncygpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2xpc3RfZW5jb2RpbmdzKCk7IH0KICAgIGZ1bmN0aW9uIG1iX2VuY29kaW5nX2FsaWFzZXMoJGVuY29kaW5nKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9lbmNvZGluZ19hbGlhc2VzKCRlbmNvZGluZyk7IH0KICAgIGZ1bmN0aW9uIG1iX2NoZWNrX2VuY29kaW5nKCR2YXIgPSBudWxsLCAkZW5jb2RpbmcgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9jaGVja19lbmNvZGluZygkdmFyLCAkZW5jb2RpbmcpOyB9CiAgICBmdW5jdGlvbiBtYl9kZXRlY3RfZW5jb2RpbmcoJHN0ciwgJGVuY29kaW5nTGlzdCA9IG51bGwsICRzdHJpY3QgPSBmYWxzZSkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfZGV0ZWN0X2VuY29kaW5nKCRzdHIsICRlbmNvZGluZ0xpc3QsICRzdHJpY3QpOyB9CiAgICBmdW5jdGlvbiBtYl9kZXRlY3Rfb3JkZXIoJGVuY29kaW5nTGlzdCA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2RldGVjdF9vcmRlcigkZW5jb2RpbmdMaXN0KTsgfQogICAgZnVuY3Rpb24gbWJfcGFyc2Vfc3RyKCRzLCAmJHJlc3VsdCA9IGFycmF5KCkpIHsgcGFyc2Vfc3RyKCRzLCAkcmVzdWx0KTsgfQogICAgZnVuY3Rpb24gbWJfc3RybGVuKCRzLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RybGVuKCRzLCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc3RycG9zKCRzLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnBvcygkcywgJG5lZWRsZSwgJG9mZnNldCwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N0cnRvbG93ZXIoJHMsICRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJ0b2xvd2VyKCRzLCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc3RydG91cHBlcigkcywgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnRvdXBwZXIoJHMsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdWJzdGl0dXRlX2NoYXJhY3RlcigkY2hhciA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N1YnN0aXR1dGVfY2hhcmFjdGVyKCRjaGFyKTsgfQogICAgZnVuY3Rpb24gbWJfc3Vic3RyKCRzLCAkc3RhcnQsICRsZW5ndGggPSAyMTQ3NDgzNjQ3LCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Vic3RyKCRzLCAkc3RhcnQsICRsZW5ndGgsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJpcG9zKCRzLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cmlwb3MoJHMsICRuZWVkbGUsICRvZmZzZXQsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJpc3RyKCRzLCAkbmVlZGxlLCAkcGFydCA9IGZhbHNlLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RyaXN0cigkcywgJG5lZWRsZSwgJHBhcnQsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJyY2hyKCRzLCAkbmVlZGxlLCAkcGFydCA9IGZhbHNlLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3RycmNocigkcywgJG5lZWRsZSwgJHBhcnQsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJyaWNocigkcywgJG5lZWRsZSwgJHBhcnQgPSBmYWxzZSwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnJpY2hyKCRzLCAkbmVlZGxlLCAkcGFydCwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3N0cnJpcG9zKCRzLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cnJpcG9zKCRzLCAkbmVlZGxlLCAkb2Zmc2V0LCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc3RycnBvcygkcywgJG5lZWRsZSwgJG9mZnNldCA9IDAsICRlbmMgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9zdHJycG9zKCRzLCAkbmVlZGxlLCAkb2Zmc2V0LCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc3Ryc3RyKCRzLCAkbmVlZGxlLCAkcGFydCA9IGZhbHNlLCAkZW5jID0gbnVsbCkgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfc3Ryc3RyKCRzLCAkbmVlZGxlLCAkcGFydCwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX2dldF9pbmZvKCR0eXBlID0gJ2FsbCcpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2dldF9pbmZvKCR0eXBlKTsgfQogICAgZnVuY3Rpb24gbWJfaHR0cF9vdXRwdXQoJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2h0dHBfb3V0cHV0KCRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9zdHJ3aWR0aCgkcywgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N0cndpZHRoKCRzLCAkZW5jKTsgfQogICAgZnVuY3Rpb24gbWJfc3Vic3RyX2NvdW50KCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX3N1YnN0cl9jb3VudCgkaGF5c3RhY2ssICRuZWVkbGUsICRlbmMpOyB9CiAgICBmdW5jdGlvbiBtYl9vdXRwdXRfaGFuZGxlcigkY29udGVudHMsICRzdGF0dXMpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX291dHB1dF9oYW5kbGVyKCRjb250ZW50cywgJHN0YXR1cyk7IH0KICAgIGZ1bmN0aW9uIG1iX2h0dHBfaW5wdXQoJHR5cGUgPSAnJykgeyByZXR1cm4gcFxNYnN0cmluZzo6bWJfaHR0cF9pbnB1dCgkdHlwZSk7IH0KICAgIGZ1bmN0aW9uIG1iX2NvbnZlcnRfdmFyaWFibGVzKCR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nLCAmJGEgPSBudWxsLCAmJGIgPSBudWxsLCAmJGMgPSBudWxsLCAmJGQgPSBudWxsLCAmJGUgPSBudWxsLCAmJGYgPSBudWxsKSB7IHJldHVybiBwXE1ic3RyaW5nOjptYl9jb252ZXJ0X3ZhcmlhYmxlcygkdG9FbmNvZGluZywgJGZyb21FbmNvZGluZywgJGEsICRiLCAkYywgJGQsICRlLCAkZik7IH0KfQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnbWJfY2hyJykpIHsKICAgIGZ1bmN0aW9uIG1iX29yZCgkcywgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX29yZCgkcywgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX2NocigkY29kZSwgJGVuYyA9IG51bGwpIHsgcmV0dXJuIHBcTWJzdHJpbmc6Om1iX2NocigkY29kZSwgJGVuYyk7IH0KICAgIGZ1bmN0aW9uIG1iX3NjcnViKCRzLCAkZW5jID0gbnVsbCkgeyAkZW5jID0gbnVsbCA9PT0gJGVuYyA/IG1iX2ludGVybmFsX2VuY29kaW5nKCkgOiAkZW5jOyByZXR1cm4gbWJfY29udmVydF9lbmNvZGluZygkcywgJGVuYywgJGVuYyk7IH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9wb2x5ZmlsbC1tYnN0cmluZyIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJkZXNjcmlwdGlvbiI6ICJTeW1mb255IHBvbHlmaWxsIGZvciB0aGUgTWJzdHJpbmcgZXh0ZW5zaW9uIiwKICAgICJrZXl3b3JkcyI6IFsicG9seWZpbGwiLCAic2hpbSIsICJjb21wYXRpYmlsaXR5IiwgInBvcnRhYmxlIiwgIm1ic3RyaW5nIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTUuMy4zIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7ICJTeW1mb255XFxQb2x5ZmlsbFxcTWJzdHJpbmdcXCI6ICIiIH0sCiAgICAgICAgImZpbGVzIjogWyAiYm9vdHN0cmFwLnBocCIgXQogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtbWJzdHJpbmciOiAiRm9yIGJlc3QgcGVyZm9ybWFuY2UiCiAgICB9LAogICAgIm1pbmltdW0tc3RhYmlsaXR5IjogImRldiIsCiAgICAiZXh0cmEiOiB7CiAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS41LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE0LTIwMTYgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-mbstring/Mbstring.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXE1ic3RyaW5nOwoKLyoqCiAqIFBhcnRpYWwgbWJzdHJpbmcgaW1wbGVtZW50YXRpb24gaW4gUEhQLCBpY29udiBiYXNlZCwgVVRGLTggY2VudHJpYy4KICoKICogSW1wbGVtZW50ZWQ6CiAqIC0gbWJfY2hyICAgICAgICAgICAgICAgICAgLSBSZXR1cm5zIGEgc3BlY2lmaWMgY2hhcmFjdGVyIGZyb20gaXRzIFVuaWNvZGUgY29kZSBwb2ludAogKiAtIG1iX2NvbnZlcnRfZW5jb2RpbmcgICAgIC0gQ29udmVydCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9jb252ZXJ0X3ZhcmlhYmxlcyAgICAtIENvbnZlcnQgY2hhcmFjdGVyIGNvZGUgaW4gdmFyaWFibGUocykKICogLSBtYl9kZWNvZGVfbWltZWhlYWRlciAgICAtIERlY29kZSBzdHJpbmcgaW4gTUlNRSBoZWFkZXIgZmllbGQKICogLSBtYl9lbmNvZGVfbWltZWhlYWRlciAgICAtIEVuY29kZSBzdHJpbmcgZm9yIE1JTUUgaGVhZGVyIFhYWCBOQVRJVkUgSU1QTEVNRU5UQVRJT04gSVMgUkVBTExZIEJVR0dFRAogKiAtIG1iX2NvbnZlcnRfY2FzZSAgICAgICAgIC0gUGVyZm9ybSBjYXNlIGZvbGRpbmcgb24gYSBzdHJpbmcKICogLSBtYl9nZXRfaW5mbyAgICAgICAgICAgICAtIEdldCBpbnRlcm5hbCBzZXR0aW5ncyBvZiBtYnN0cmluZwogKiAtIG1iX2h0dHBfaW5wdXQgICAgICAgICAgIC0gRGV0ZWN0IEhUVFAgaW5wdXQgY2hhcmFjdGVyIGVuY29kaW5nCiAqIC0gbWJfaHR0cF9vdXRwdXQgICAgICAgICAgLSBTZXQvR2V0IEhUVFAgb3V0cHV0IGNoYXJhY3RlciBlbmNvZGluZwogKiAtIG1iX2ludGVybmFsX2VuY29kaW5nICAgIC0gU2V0L0dldCBpbnRlcm5hbCBjaGFyYWN0ZXIgZW5jb2RpbmcKICogLSBtYl9saXN0X2VuY29kaW5ncyAgICAgICAtIFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN1cHBvcnRlZCBlbmNvZGluZ3MKICogLSBtYl9vcmQgICAgICAgICAgICAgICAgICAtIFJldHVybnMgdGhlIFVuaWNvZGUgY29kZSBwb2ludCBvZiBhIGNoYXJhY3RlcgogKiAtIG1iX291dHB1dF9oYW5kbGVyICAgICAgIC0gQ2FsbGJhY2sgZnVuY3Rpb24gY29udmVydHMgY2hhcmFjdGVyIGVuY29kaW5nIGluIG91dHB1dCBidWZmZXIKICogLSBtYl9zY3J1YiAgICAgICAgICAgICAgICAtIFJlcGxhY2VzIGlsbC1mb3JtZWQgYnl0ZSBzZXF1ZW5jZXMgd2l0aCBzdWJzdGl0dXRlIGNoYXJhY3RlcnMKICogLSBtYl9zdHJsZW4gICAgICAgICAgICAgICAtIEdldCBzdHJpbmcgbGVuZ3RoCiAqIC0gbWJfc3RycG9zICAgICAgICAgICAgICAgLSBGaW5kIHBvc2l0aW9uIG9mIGZpcnN0IG9jY3VycmVuY2Ugb2Ygc3RyaW5nIGluIGEgc3RyaW5nCiAqIC0gbWJfc3RycnBvcyAgICAgICAgICAgICAgLSBGaW5kIHBvc2l0aW9uIG9mIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyBpbiBhIHN0cmluZwogKiAtIG1iX3N0cnRvbG93ZXIgICAgICAgICAgIC0gTWFrZSBhIHN0cmluZyBsb3dlcmNhc2UKICogLSBtYl9zdHJ0b3VwcGVyICAgICAgICAgICAtIE1ha2UgYSBzdHJpbmcgdXBwZXJjYXNlCiAqIC0gbWJfc3Vic3RpdHV0ZV9jaGFyYWN0ZXIgLSBTZXQvR2V0IHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIKICogLSBtYl9zdWJzdHIgICAgICAgICAgICAgICAtIEdldCBwYXJ0IG9mIHN0cmluZwogKiAtIG1iX3N0cmlwb3MgICAgICAgICAgICAgIC0gRmluZHMgcG9zaXRpb24gb2YgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cmlzdHIgICAgICAgICAgICAgIC0gRmluZHMgZmlyc3Qgb2NjdXJyZW5jZSBvZiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cnJjaHIgICAgICAgICAgICAgIC0gRmluZHMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNoYXJhY3RlciBpbiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlcgogKiAtIG1iX3N0cnJpY2hyICAgICAgICAgICAgIC0gRmluZHMgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiBhIGNoYXJhY3RlciBpbiBhIHN0cmluZyB3aXRoaW4gYW5vdGhlciwgY2FzZSBpbnNlbnNpdGl2ZQogKiAtIG1iX3N0cnJpcG9zICAgICAgICAgICAgIC0gRmluZHMgcG9zaXRpb24gb2YgbGFzdCBvY2N1cnJlbmNlIG9mIGEgc3RyaW5nIHdpdGhpbiBhbm90aGVyLCBjYXNlIGluc2Vuc2l0aXZlCiAqIC0gbWJfc3Ryc3RyICAgICAgICAgICAgICAgLSBGaW5kcyBmaXJzdCBvY2N1cnJlbmNlIG9mIGEgc3RyaW5nIHdpdGhpbiBhbm90aGVycwogKiAtIG1iX3N0cndpZHRoICAgICAgICAgICAgIC0gUmV0dXJuIHdpZHRoIG9mIHN0cmluZwogKiAtIG1iX3N1YnN0cl9jb3VudCAgICAgICAgIC0gQ291bnQgdGhlIG51bWJlciBvZiBzdWJzdHJpbmcgb2NjdXJyZW5jZXMKICoKICogTm90IGltcGxlbWVudGVkOgogKiAtIG1iX2NvbnZlcnRfa2FuYSAgICAgICAgIC0gQ29udmVydCAia2FuYSIgb25lIGZyb20gYW5vdGhlciAoInplbi1rYWt1IiwgImhhbi1rYWt1IiBhbmQgbW9yZSkKICogLSBtYl9kZWNvZGVfbnVtZXJpY2VudGl0eSAtIERlY29kZSBIVE1MIG51bWVyaWMgc3RyaW5nIHJlZmVyZW5jZSB0byBjaGFyYWN0ZXIKICogLSBtYl9lbmNvZGVfbnVtZXJpY2VudGl0eSAtIEVuY29kZSBjaGFyYWN0ZXIgdG8gSFRNTCBudW1lcmljIHN0cmluZyByZWZlcmVuY2UKICogLSBtYl9lcmVnXyogICAgICAgICAgICAgICAtIFJlZ3VsYXIgZXhwcmVzc2lvbiB3aXRoIG11bHRpYnl0ZSBzdXBwb3J0CiAqIC0gbWJfcGFyc2Vfc3RyICAgICAgICAgICAgLSBQYXJzZSBHRVQvUE9TVC9DT09LSUUgZGF0YSBhbmQgc2V0IGdsb2JhbCB2YXJpYWJsZQogKiAtIG1iX3ByZWZlcnJlZF9taW1lX25hbWUgIC0gR2V0IE1JTUUgY2hhcnNldCBzdHJpbmcKICogLSBtYl9yZWdleF9lbmNvZGluZyAgICAgICAtIFJldHVybnMgY3VycmVudCBlbmNvZGluZyBmb3IgbXVsdGlieXRlIHJlZ2V4IGFzIHN0cmluZwogKiAtIG1iX3JlZ2V4X3NldF9vcHRpb25zICAgIC0gU2V0L0dldCB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciBtYnJlZ2V4IGZ1bmN0aW9ucwogKiAtIG1iX3NlbmRfbWFpbCAgICAgICAgICAgIC0gU2VuZCBlbmNvZGVkIG1haWwKICogLSBtYl9zcGxpdCAgICAgICAgICAgICAgICAtIFNwbGl0IG11bHRpYnl0ZSBzdHJpbmcgdXNpbmcgcmVndWxhciBleHByZXNzaW9uCiAqIC0gbWJfc3RyY3V0ICAgICAgICAgICAgICAgLSBHZXQgcGFydCBvZiBzdHJpbmcKICogLSBtYl9zdHJpbXdpZHRoICAgICAgICAgICAtIEdldCB0cnVuY2F0ZWQgc3RyaW5nIHdpdGggc3BlY2lmaWVkIHdpZHRoCiAqCiAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgTWJzdHJpbmcKewogICAgY29uc3QgTUJfQ0FTRV9GT0xEID0gUEhQX0lOVF9NQVg7CgogICAgcHJpdmF0ZSBzdGF0aWMgJGVuY29kaW5nTGlzdCA9IGFycmF5KCdBU0NJSScsICdVVEYtOCcpOwogICAgcHJpdmF0ZSBzdGF0aWMgJGxhbmd1YWdlID0gJ25ldXRyYWwnOwogICAgcHJpdmF0ZSBzdGF0aWMgJGludGVybmFsRW5jb2RpbmcgPSAnVVRGLTgnOwogICAgcHJpdmF0ZSBzdGF0aWMgJGNhc2VGb2xkID0gYXJyYXkoCiAgICAgICAgYXJyYXkoJ8K1Jywnxb8nLCJceENEXHg4NSIsJ8+CJywiXHhDRlx4OTAiLCJceENGXHg5MSIsIlx4Q0ZceDk1IiwiXHhDRlx4OTYiLCJceENGXHhCMCIsIlx4Q0ZceEIxIiwiXHhDRlx4QjUiLCJceEUxXHhCQVx4OUIiLCJceEUxXHhCRVx4QkUiKSwKICAgICAgICBhcnJheSgnzrwnLCdzJywnzrknLCAgICAgICAnz4MnLCfOsicsICAgICAgICfOuCcsICAgICAgICfPhicsICAgICAgICfPgCcsICAgICAgICfOuicsICAgICAgICfPgScsICAgICAgICfOtScsICAgICAgICJceEUxXHhCOVx4QTEiLCfOuScpLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NvbnZlcnRfZW5jb2RpbmcoJHMsICR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJGZyb21FbmNvZGluZykgfHwgZmFsc2UgIT09IHN0cnBvcygkZnJvbUVuY29kaW5nLCAnLCcpKSB7CiAgICAgICAgICAgICRmcm9tRW5jb2RpbmcgPSBzZWxmOjptYl9kZXRlY3RfZW5jb2RpbmcoJHMsICRmcm9tRW5jb2RpbmcpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRmcm9tRW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZnJvbUVuY29kaW5nKTsKICAgICAgICB9CgogICAgICAgICR0b0VuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJHRvRW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ0JBU0U2NCcgPT09ICRmcm9tRW5jb2RpbmcpIHsKICAgICAgICAgICAgJHMgPSBiYXNlNjRfZGVjb2RlKCRzKTsKICAgICAgICAgICAgJGZyb21FbmNvZGluZyA9ICR0b0VuY29kaW5nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCdCQVNFNjQnID09PSAkdG9FbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gYmFzZTY0X2VuY29kZSgkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJ0hUTUwtRU5USVRJRVMnID09PSAkdG9FbmNvZGluZyB8fCAnSFRNTCcgPT09ICR0b0VuY29kaW5nKSB7CiAgICAgICAgICAgIGlmICgnSFRNTC1FTlRJVElFUycgPT09ICRmcm9tRW5jb2RpbmcgfHwgJ0hUTUwnID09PSAkZnJvbUVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAkZnJvbUVuY29kaW5nID0gJ1dpbmRvd3MtMTI1Mic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCdVVEYtOCcgIT09ICRmcm9tRW5jb2RpbmcpIHsKICAgICAgICAgICAgICAgICRzID0gaWNvbnYoJGZyb21FbmNvZGluZywgJ1VURi04Ly9JR05PUkUnLCAkcyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJy9bXHg4MC1ceEZGXSsvJywgYXJyYXkoX19DTEFTU19fLCAnaHRtbF9lbmNvZGluZ19jYWxsYmFjaycpLCAkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJ0hUTUwtRU5USVRJRVMnID09PSAkZnJvbUVuY29kaW5nKSB7CiAgICAgICAgICAgICRzID0gaHRtbF9lbnRpdHlfZGVjb2RlKCRzLCBFTlRfQ09NUEFULCAnVVRGLTgnKTsKICAgICAgICAgICAgJGZyb21FbmNvZGluZyA9ICdVVEYtOCc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaWNvbnYoJGZyb21FbmNvZGluZywgJHRvRW5jb2RpbmcuJy8vSUdOT1JFJywgJHMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfY29udmVydF92YXJpYWJsZXMoJHRvRW5jb2RpbmcsICRmcm9tRW5jb2RpbmcsICYkYSA9IG51bGwsICYkYiA9IG51bGwsICYkYyA9IG51bGwsICYkZCA9IG51bGwsICYkZSA9IG51bGwsICYkZiA9IG51bGwpCiAgICB7CiAgICAgICAgJHZhcnMgPSBhcnJheSgmJGEsICYkYiwgJiRjLCAmJGQsICYkZSwgJiRmKTsKCiAgICAgICAgJG9rID0gdHJ1ZTsKICAgICAgICBhcnJheV93YWxrX3JlY3Vyc2l2ZSgkdmFycywgZnVuY3Rpb24gKCYkdikgdXNlICgmJG9rLCAkdG9FbmNvZGluZywgJGZyb21FbmNvZGluZykgewogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICR2ID0gTWJzdHJpbmc6Om1iX2NvbnZlcnRfZW5jb2RpbmcoJHYsICR0b0VuY29kaW5nLCAkZnJvbUVuY29kaW5nKSkgewogICAgICAgICAgICAgICAgJG9rID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICRvayA/ICRmcm9tRW5jb2RpbmcgOiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2RlY29kZV9taW1laGVhZGVyKCRzKQogICAgewogICAgICAgIHJldHVybiBpY29udl9taW1lX2RlY29kZSgkcywgMiwgc2VsZjo6JGludGVybmFsRW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfZW5jb2RlX21pbWVoZWFkZXIoJHMsICRjaGFyc2V0ID0gbnVsbCwgJHRyYW5zZmVyRW5jb2RpbmcgPSBudWxsLCAkbGluZWZlZWQgPSBudWxsLCAkaW5kZW50ID0gbnVsbCkKICAgIHsKICAgICAgICB0cmlnZ2VyX2Vycm9yKCdtYl9lbmNvZGVfbWltZWhlYWRlcigpIGlzIGJ1Z2dlZC4gUGxlYXNlIHVzZSBpY29udl9taW1lX2VuY29kZSgpIGluc3RlYWQnLCBFX1VTRVJfV0FSTklORyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9jb252ZXJ0X2Nhc2UoJHMsICRtb2RlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIGlmICgnJyA9PT0gJHMgLj0gJycpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKTsKCiAgICAgICAgaWYgKCdVVEYtOCcgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICAkZW5jb2RpbmcgPSBudWxsOwogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy8vdScsICRzKSkgewogICAgICAgICAgICAgICAgJHMgPSBAaWNvbnYoJ1VURi04JywgJ1VURi04Ly9JR05PUkUnLCAkcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcyA9IGljb252KCRlbmNvZGluZywgJ1VURi04Ly9JR05PUkUnLCAkcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoTUJfQ0FTRV9USVRMRSA9PSAkbW9kZSkgewogICAgICAgICAgICAkcyA9IHByZWdfcmVwbGFjZV9jYWxsYmFjaygnL1xiXHB7TGx9L3UnLCBhcnJheShfX0NMQVNTX18sICd0aXRsZV9jYXNlX3VwcGVyJyksICRzKTsKICAgICAgICAgICAgJHMgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJy9cQltccHtMdX1ccHtMdH1dKy91JywgYXJyYXkoX19DTEFTU19fLCAndGl0bGVfY2FzZV9sb3dlcicpLCAkcyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKE1CX0NBU0VfVVBQRVIgPT0gJG1vZGUpIHsKICAgICAgICAgICAgICAgIHN0YXRpYyAkdXBwZXIgPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09ICR1cHBlcikgewogICAgICAgICAgICAgICAgICAgICR1cHBlciA9IHNlbGY6OmdldERhdGEoJ3VwcGVyQ2FzZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG1hcCA9ICR1cHBlcjsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChzZWxmOjpNQl9DQVNFX0ZPTEQgPT09ICRtb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgJHMgPSBzdHJfcmVwbGFjZShzZWxmOjokY2FzZUZvbGRbMF0sIHNlbGY6OiRjYXNlRm9sZFsxXSwgJHMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHN0YXRpYyAkbG93ZXIgPSBudWxsOwogICAgICAgICAgICAgICAgaWYgKG51bGwgPT09ICRsb3dlcikgewogICAgICAgICAgICAgICAgICAgICRsb3dlciA9IHNlbGY6OmdldERhdGEoJ2xvd2VyQ2FzZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJG1hcCA9ICRsb3dlcjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc3RhdGljICR1bGVuTWFzayA9IGFycmF5KCJceEMwIiA9PiAyLCAiXHhEMCIgPT4gMiwgIlx4RTAiID0+IDMsICJceEYwIiA9PiA0KTsKCiAgICAgICAgICAgICRpID0gMDsKICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkcyk7CgogICAgICAgICAgICB3aGlsZSAoJGkgPCAkbGVuKSB7CiAgICAgICAgICAgICAgICAkdWxlbiA9ICRzWyRpXSA8ICJceDgwIiA/IDEgOiAkdWxlbk1hc2tbJHNbJGldICYgIlx4RjAiXTsKICAgICAgICAgICAgICAgICR1Y2hyID0gc3Vic3RyKCRzLCAkaSwgJHVsZW4pOwogICAgICAgICAgICAgICAgJGkgKz0gJHVsZW47CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRtYXBbJHVjaHJdKSkgewogICAgICAgICAgICAgICAgICAgICR1Y2hyID0gJG1hcFskdWNocl07CiAgICAgICAgICAgICAgICAgICAgJG5sZW4gPSBzdHJsZW4oJHVjaHIpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJG5sZW4gPT0gJHVsZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5sZW4gPSAkaTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHNbLS0kbmxlbl0gPSAkdWNoclstLSR1bGVuXTsKICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJHVsZW4pOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzID0gc3Vic3RyX3JlcGxhY2UoJHMsICR1Y2hyLCAkaSAtICR1bGVuLCAkdWxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICRsZW4gKz0gJG5sZW4gLSAkdWxlbjsKICAgICAgICAgICAgICAgICAgICAgICAgJGkgICArPSAkbmxlbiAtICR1bGVuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJHM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaWNvbnYoJ1VURi04JywgJGVuY29kaW5nLicvL0lHTk9SRScsICRzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2ludGVybmFsX2VuY29kaW5nKCRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6JGludGVybmFsRW5jb2Rpbmc7CiAgICAgICAgfQoKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyA9PT0gJGVuY29kaW5nIHx8IGZhbHNlICE9PSBAaWNvbnYoJGVuY29kaW5nLCAkZW5jb2RpbmcsICcgJykpIHsKICAgICAgICAgICAgc2VsZjo6JGludGVybmFsRW5jb2RpbmcgPSAkZW5jb2Rpbmc7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2xhbmd1YWdlKCRsYW5nID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGxhbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRsYW5ndWFnZTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJGxhbmcgPSBzdHJ0b2xvd2VyKCRsYW5nKSkgewogICAgICAgICAgICBjYXNlICd1bmknOgogICAgICAgICAgICBjYXNlICduZXV0cmFsJzoKICAgICAgICAgICAgICAgIHNlbGY6OiRsYW5ndWFnZSA9ICRsYW5nOwoKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfbGlzdF9lbmNvZGluZ3MoKQogICAgewogICAgICAgIHJldHVybiBhcnJheSgnVVRGLTgnKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2VuY29kaW5nX2FsaWFzZXMoJGVuY29kaW5nKQogICAgewogICAgICAgIHN3aXRjaCAoc3RydG91cHBlcigkZW5jb2RpbmcpKSB7CiAgICAgICAgICAgIGNhc2UgJ1VURjgnOgogICAgICAgICAgICBjYXNlICdVVEYtOCc6CiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkoJ3V0ZjgnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX2NoZWNrX2VuY29kaW5nKCR2YXIgPSBudWxsLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIGlmIChudWxsID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgaWYgKG51bGwgPT09ICR2YXIpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjokaW50ZXJuYWxFbmNvZGluZzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjptYl9kZXRlY3RfZW5jb2RpbmcoJHZhciwgYXJyYXkoJGVuY29kaW5nKSkgfHwgZmFsc2UgIT09IEBpY29udigkZW5jb2RpbmcsICRlbmNvZGluZywgJHZhcik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9kZXRlY3RfZW5jb2RpbmcoJHN0ciwgJGVuY29kaW5nTGlzdCA9IG51bGwsICRzdHJpY3QgPSBmYWxzZSkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nTGlzdCkgewogICAgICAgICAgICAkZW5jb2RpbmdMaXN0ID0gc2VsZjo6JGVuY29kaW5nTGlzdDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRlbmNvZGluZ0xpc3QpKSB7CiAgICAgICAgICAgICAgICAkZW5jb2RpbmdMaXN0ID0gYXJyYXlfbWFwKCd0cmltJywgZXhwbG9kZSgnLCcsICRlbmNvZGluZ0xpc3QpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZW5jb2RpbmdMaXN0ID0gYXJyYXlfbWFwKCdzdHJ0b3VwcGVyJywgJGVuY29kaW5nTGlzdCk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkZW5jb2RpbmdMaXN0IGFzICRlbmMpIHsKICAgICAgICAgICAgc3dpdGNoICgkZW5jKSB7CiAgICAgICAgICAgICAgICBjYXNlICdBU0NJSSc6CiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvW1x4ODAtXHhGRl0vJywgJHN0cikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbmM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgIGNhc2UgJ1VURjgnOgogICAgICAgICAgICAgICAgY2FzZSAnVVRGLTgnOgogICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvL3UnLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1VURi04JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpZiAoMCA9PT0gc3RybmNtcCgkZW5jLCAnSVNPLTg4NTktJywgOSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbmM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9kZXRlY3Rfb3JkZXIoJGVuY29kaW5nTGlzdCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRlbmNvZGluZ0xpc3QpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRlbmNvZGluZ0xpc3Q7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzX2FycmF5KCRlbmNvZGluZ0xpc3QpKSB7CiAgICAgICAgICAgICRlbmNvZGluZ0xpc3QgPSBhcnJheV9tYXAoJ3RyaW0nLCBleHBsb2RlKCcsJywgJGVuY29kaW5nTGlzdCkpOwogICAgICAgIH0KICAgICAgICAkZW5jb2RpbmdMaXN0ID0gYXJyYXlfbWFwKCdzdHJ0b3VwcGVyJywgJGVuY29kaW5nTGlzdCk7CgogICAgICAgIGZvcmVhY2ggKCRlbmNvZGluZ0xpc3QgYXMgJGVuYykgewogICAgICAgICAgICBzd2l0Y2ggKCRlbmMpIHsKICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAoJGVuYywgJ0lTTy04ODU5LScsIDkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlICdBU0NJSSc6CiAgICAgICAgICAgICAgICBjYXNlICdVVEY4JzoKICAgICAgICAgICAgICAgIGNhc2UgJ1VURi04JzoKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc2VsZjo6JGVuY29kaW5nTGlzdCA9ICRlbmNvZGluZ0xpc3Q7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3RybGVuKCRzLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRlbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCRlbmNvZGluZyk7CiAgICAgICAgaWYgKCdDUDg1MCcgPT09ICRlbmNvZGluZyB8fCAnQVNDSUknID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cmxlbigkcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gQGljb252X3N0cmxlbigkcywgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQgPSAwLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRlbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCRlbmNvZGluZyk7CiAgICAgICAgaWYgKCdDUDg1MCcgPT09ICRlbmNvZGluZyB8fCAnQVNDSUknID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCcnID09PSAkbmVlZGxlIC49ICcnKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoX19NRVRIT0RfXy4nOiBFbXB0eSBkZWxpbWl0ZXInLCBFX1VTRVJfV0FSTklORyk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaWNvbnZfc3RycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9mZnNldCAhPSAoaW50KSAkb2Zmc2V0KSB7CiAgICAgICAgICAgICRvZmZzZXQgPSAwOwogICAgICAgIH0gZWxzZWlmICgkb2Zmc2V0ID0gKGludCkgJG9mZnNldCkgewogICAgICAgICAgICBpZiAoJG9mZnNldCA8IDApIHsKICAgICAgICAgICAgICAgICRoYXlzdGFjayA9IHNlbGY6Om1iX3N1YnN0cigkaGF5c3RhY2ssIDAsICRvZmZzZXQsICRlbmNvZGluZyk7CiAgICAgICAgICAgICAgICAkb2Zmc2V0ID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRoYXlzdGFjayA9IHNlbGY6Om1iX3N1YnN0cigkaGF5c3RhY2ssICRvZmZzZXQsIDIxNDc0ODM2NDcsICRlbmNvZGluZyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRwb3MgPSBpY29udl9zdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJGVuY29kaW5nKTsKCiAgICAgICAgcmV0dXJuIGZhbHNlICE9PSAkcG9zID8gJG9mZnNldCArICRwb3MgOiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnRvbG93ZXIoJHMsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkcywgTUJfQ0FTRV9MT1dFUiwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnRvdXBwZXIoJHMsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkcywgTUJfQ0FTRV9VUFBFUiwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N1YnN0aXR1dGVfY2hhcmFjdGVyKCRjID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoMCA9PT0gc3RyY2FzZWNtcCgkYywgJ25vbmUnKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsICE9PSAkYyA/IGZhbHNlIDogJ25vbmUnOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Vic3RyKCRzLCAkc3RhcnQsICRsZW5ndGggPSBudWxsLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRlbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCRlbmNvZGluZyk7CiAgICAgICAgaWYgKCdDUDg1MCcgPT09ICRlbmNvZGluZyB8fCAnQVNDSUknID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuIHN1YnN0cigkcywgJHN0YXJ0LCBudWxsID09PSAkbGVuZ3RoID8gMjE0NzQ4MzY0NyA6ICRsZW5ndGgpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRzdGFydCA8IDApIHsKICAgICAgICAgICAgJHN0YXJ0ID0gaWNvbnZfc3RybGVuKCRzLCAkZW5jb2RpbmcpICsgJHN0YXJ0OwogICAgICAgICAgICBpZiAoJHN0YXJ0IDwgMCkgewogICAgICAgICAgICAgICAgJHN0YXJ0ID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRsZW5ndGgpIHsKICAgICAgICAgICAgJGxlbmd0aCA9IDIxNDc0ODM2NDc7CiAgICAgICAgfSBlbHNlaWYgKCRsZW5ndGggPCAwKSB7CiAgICAgICAgICAgICRsZW5ndGggPSBpY29udl9zdHJsZW4oJHMsICRlbmNvZGluZykgKyAkbGVuZ3RoIC0gJHN0YXJ0OwogICAgICAgICAgICBpZiAoJGxlbmd0aCA8IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGljb252X3N1YnN0cigkcywgJHN0YXJ0LCAkbGVuZ3RoLCAkZW5jb2RpbmcpLicnOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3RyaXBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQgPSAwLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRoYXlzdGFjayA9IHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkaGF5c3RhY2ssIHNlbGY6Ok1CX0NBU0VfRk9MRCwgJGVuY29kaW5nKTsKICAgICAgICAkbmVlZGxlID0gc2VsZjo6bWJfY29udmVydF9jYXNlKCRuZWVkbGUsIHNlbGY6Ok1CX0NBU0VfRk9MRCwgJGVuY29kaW5nKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX3N0cnBvcygkaGF5c3RhY2ssICRuZWVkbGUsICRvZmZzZXQsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJpc3RyKCRoYXlzdGFjaywgJG5lZWRsZSwgJHBhcnQgPSBmYWxzZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkcG9zID0gc2VsZjo6bWJfc3RyaXBvcygkaGF5c3RhY2ssICRuZWVkbGUsIDAsICRlbmNvZGluZyk7CgogICAgICAgIHJldHVybiBzZWxmOjpnZXRTdWJwYXJ0KCRwb3MsICRwYXJ0LCAkaGF5c3RhY2ssICRlbmNvZGluZyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJyY2hyKCRoYXlzdGFjaywgJG5lZWRsZSwgJHBhcnQgPSBmYWxzZSwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwogICAgICAgIGlmICgnQ1A4NTAnID09PSAkZW5jb2RpbmcgfHwgJ0FTQ0lJJyA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzdHJyY2hyKCRoYXlzdGFjaywgJG5lZWRsZSwgJHBhcnQpOwogICAgICAgIH0KICAgICAgICAkbmVlZGxlID0gc2VsZjo6bWJfc3Vic3RyKCRuZWVkbGUsIDAsIDEsICRlbmNvZGluZyk7CiAgICAgICAgJHBvcyA9IGljb252X3N0cnJwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkZW5jb2RpbmcpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VicGFydCgkcG9zLCAkcGFydCwgJGhheXN0YWNrLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3RycmljaHIoJGhheXN0YWNrLCAkbmVlZGxlLCAkcGFydCA9IGZhbHNlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgICRuZWVkbGUgPSBzZWxmOjptYl9zdWJzdHIoJG5lZWRsZSwgMCwgMSwgJGVuY29kaW5nKTsKICAgICAgICAkcG9zID0gc2VsZjo6bWJfc3Rycmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkZW5jb2RpbmcpOwoKICAgICAgICByZXR1cm4gc2VsZjo6Z2V0U3VicGFydCgkcG9zLCAkcGFydCwgJGhheXN0YWNrLCAkZW5jb2RpbmcpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfc3Rycmlwb3MoJGhheXN0YWNrLCAkbmVlZGxlLCAkb2Zmc2V0ID0gMCwgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkaGF5c3RhY2sgPSBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJGhheXN0YWNrLCBzZWxmOjpNQl9DQVNFX0ZPTEQsICRlbmNvZGluZyk7CiAgICAgICAgJG5lZWRsZSA9IHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkbmVlZGxlLCBzZWxmOjpNQl9DQVNFX0ZPTEQsICRlbmNvZGluZyk7CgogICAgICAgIHJldHVybiBzZWxmOjptYl9zdHJycG9zKCRoYXlzdGFjaywgJG5lZWRsZSwgJG9mZnNldCwgJGVuY29kaW5nKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX3N0cnN0cigkaGF5c3RhY2ssICRuZWVkbGUsICRwYXJ0ID0gZmFsc2UsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgJHBvcyA9IHN0cnBvcygkaGF5c3RhY2ssICRuZWVkbGUpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJHBvcykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgkcGFydCkgewogICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRoYXlzdGFjaywgMCwgJHBvcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3Vic3RyKCRoYXlzdGFjaywgJHBvcyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9nZXRfaW5mbygkdHlwZSA9ICdhbGwnKQogICAgewogICAgICAgICRpbmZvID0gYXJyYXkoCiAgICAgICAgICAgICdpbnRlcm5hbF9lbmNvZGluZycgPT4gc2VsZjo6JGludGVybmFsRW5jb2RpbmcsCiAgICAgICAgICAgICdodHRwX291dHB1dCcgPT4gJ3Bhc3MnLAogICAgICAgICAgICAnaHR0cF9vdXRwdXRfY29udl9taW1ldHlwZXMnID0+ICdeKHRleHQvfGFwcGxpY2F0aW9uL3hodG1sXCt4bWwpJywKICAgICAgICAgICAgJ2Z1bmNfb3ZlcmxvYWQnID0+IDAsCiAgICAgICAgICAgICdmdW5jX292ZXJsb2FkX2xpc3QnID0+ICdubyBvdmVybG9hZCcsCiAgICAgICAgICAgICdtYWlsX2NoYXJzZXQnID0+ICdVVEYtOCcsCiAgICAgICAgICAgICdtYWlsX2hlYWRlcl9lbmNvZGluZycgPT4gJ0JBU0U2NCcsCiAgICAgICAgICAgICdtYWlsX2JvZHlfZW5jb2RpbmcnID0+ICdCQVNFNjQnLAogICAgICAgICAgICAnaWxsZWdhbF9jaGFycycgPT4gMCwKICAgICAgICAgICAgJ2VuY29kaW5nX3RyYW5zbGF0aW9uJyA9PiAnT2ZmJywKICAgICAgICAgICAgJ2xhbmd1YWdlJyA9PiBzZWxmOjokbGFuZ3VhZ2UsCiAgICAgICAgICAgICdkZXRlY3Rfb3JkZXInID0+IHNlbGY6OiRlbmNvZGluZ0xpc3QsCiAgICAgICAgICAgICdzdWJzdGl0dXRlX2NoYXJhY3RlcicgPT4gJ25vbmUnLAogICAgICAgICAgICAnc3RyaWN0X2RldGVjdGlvbicgPT4gJ09mZicsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCdhbGwnID09PSAkdHlwZSkgewogICAgICAgICAgICByZXR1cm4gJGluZm87CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkaW5mb1skdHlwZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAkaW5mb1skdHlwZV07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9odHRwX2lucHV0KCR0eXBlID0gJycpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfaHR0cF9vdXRwdXQoJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCAhPT0gJGVuY29kaW5nID8gJ3Bhc3MnID09PSAkZW5jb2RpbmcgOiAncGFzcyc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdHJ3aWR0aCgkcywgJGVuY29kaW5nID0gbnVsbCkKICAgIHsKICAgICAgICAkZW5jb2RpbmcgPSBzZWxmOjpnZXRFbmNvZGluZygkZW5jb2RpbmcpOwoKICAgICAgICBpZiAoJ1VURi04JyAhPT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgICRzID0gaWNvbnYoJGVuY29kaW5nLCAnVVRGLTgvL0lHTk9SRScsICRzKTsKICAgICAgICB9CgogICAgICAgICRzID0gcHJlZ19yZXBsYWNlKCcvW1x4ezExMDB9LVx4ezExNUZ9XHh7MjMyOX1ceHsyMzJBfVx4ezJFODB9LVx4ezMwM0V9XHh7MzA0MH0tXHh7QTRDRn1ceHtBQzAwfS1ceHtEN0EzfVx4e0Y5MDB9LVx4e0ZBRkZ9XHh7RkUxMH0tXHh7RkUxOX1ceHtGRTMwfS1ceHtGRTZGfVx4e0ZGMDB9LVx4e0ZGNjB9XHh7RkZFMH0tXHh7RkZFNn1ceHsyMDAwMH0tXHh7MkZGRkR9XHh7MzAwMDB9LVx4ezNGRkZEfV0vdScsICcnLCAkcywgLTEsICR3aWRlKTsKCiAgICAgICAgcmV0dXJuICgkd2lkZSA8PCAxKSArIGljb252X3N0cmxlbigkcywgJ1VURi04Jyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9zdWJzdHJfY291bnQoJGhheXN0YWNrLCAkbmVlZGxlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiBzdWJzdHJfY291bnQoJGhheXN0YWNrLCAkbmVlZGxlKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1iX291dHB1dF9oYW5kbGVyKCRjb250ZW50cywgJHN0YXR1cykKICAgIHsKICAgICAgICByZXR1cm4gJGNvbnRlbnRzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWJfY2hyKCRjb2RlLCAkZW5jb2RpbmcgPSBudWxsKQogICAgewogICAgICAgIGlmICgweDgwID4gJGNvZGUgJT0gMHgyMDAwMDApIHsKICAgICAgICAgICAgJHMgPSBjaHIoJGNvZGUpOwogICAgICAgIH0gZWxzZWlmICgweDgwMCA+ICRjb2RlKSB7CiAgICAgICAgICAgICRzID0gY2hyKDB4QzAgfCAkY29kZSA+PiA2KS5jaHIoMHg4MCB8ICRjb2RlICYgMHgzRik7CiAgICAgICAgfSBlbHNlaWYgKDB4MTAwMDAgPiAkY29kZSkgewogICAgICAgICAgICAkcyA9IGNocigweEUwIHwgJGNvZGUgPj4gMTIpLmNocigweDgwIHwgJGNvZGUgPj4gNiAmIDB4M0YpLmNocigweDgwIHwgJGNvZGUgJiAweDNGKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcyA9IGNocigweEYwIHwgJGNvZGUgPj4gMTgpLmNocigweDgwIHwgJGNvZGUgPj4gMTIgJiAweDNGKS5jaHIoMHg4MCB8ICRjb2RlID4+IDYgJiAweDNGKS5jaHIoMHg4MCB8ICRjb2RlICYgMHgzRik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJ1VURi04JyAhPT0gJGVuY29kaW5nID0gc2VsZjo6Z2V0RW5jb2RpbmcoJGVuY29kaW5nKSkgewogICAgICAgICAgICAkcyA9IG1iX2NvbnZlcnRfZW5jb2RpbmcoJHMsICRlbmNvZGluZywgJ1VURi04Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYl9vcmQoJHMsICRlbmNvZGluZyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCdVVEYtOCcgIT09ICRlbmNvZGluZyA9IHNlbGY6OmdldEVuY29kaW5nKCRlbmNvZGluZykpIHsKICAgICAgICAgICAgJHMgPSBtYl9jb252ZXJ0X2VuY29kaW5nKCRzLCAnVVRGLTgnLCAkZW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgJGNvZGUgPSAoJHMgPSB1bnBhY2soJ0MqJywgc3Vic3RyKCRzLCAwLCA0KSkpID8gJHNbMV0gOiAwOwogICAgICAgIGlmICgweEYwIDw9ICRjb2RlKSB7CiAgICAgICAgICAgIHJldHVybiAoKCRjb2RlIC0gMHhGMCkgPDwgMTgpICsgKCgkc1syXSAtIDB4ODApIDw8IDEyKSArICgoJHNbM10gLSAweDgwKSA8PCA2KSArICRzWzRdIC0gMHg4MDsKICAgICAgICB9CiAgICAgICAgaWYgKDB4RTAgPD0gJGNvZGUpIHsKICAgICAgICAgICAgcmV0dXJuICgoJGNvZGUgLSAweEUwKSA8PCAxMikgKyAoKCRzWzJdIC0gMHg4MCkgPDwgNikgKyAkc1szXSAtIDB4ODA7CiAgICAgICAgfQogICAgICAgIGlmICgweEMwIDw9ICRjb2RlKSB7CiAgICAgICAgICAgIHJldHVybiAoKCRjb2RlIC0gMHhDMCkgPDwgNikgKyAkc1syXSAtIDB4ODA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvZGU7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U3VicGFydCgkcG9zLCAkcGFydCwgJGhheXN0YWNrLCAkZW5jb2RpbmcpCiAgICB7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcG9zKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRwYXJ0KSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjptYl9zdWJzdHIoJGhheXN0YWNrLCAwLCAkcG9zLCAkZW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX3N1YnN0cigkaGF5c3RhY2ssICRwb3MsIG51bGwsICRlbmNvZGluZyk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaHRtbF9lbmNvZGluZ19jYWxsYmFjaygkbSkKICAgIHsKICAgICAgICAkaSA9IDE7CiAgICAgICAgJGVudGl0aWVzID0gJyc7CiAgICAgICAgJG0gPSB1bnBhY2soJ0MqJywgaHRtbGVudGl0aWVzKCRtWzBdLCBFTlRfQ09NUEFULCAnVVRGLTgnKSk7CgogICAgICAgIHdoaWxlIChpc3NldCgkbVskaV0pKSB7CiAgICAgICAgICAgIGlmICgweDgwID4gJG1bJGldKSB7CiAgICAgICAgICAgICAgICAkZW50aXRpZXMgLj0gY2hyKCRtWyRpKytdKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgweEYwIDw9ICRtWyRpXSkgewogICAgICAgICAgICAgICAgJGMgPSAoKCRtWyRpKytdIC0gMHhGMCkgPDwgMTgpICsgKCgkbVskaSsrXSAtIDB4ODApIDw8IDEyKSArICgoJG1bJGkrK10gLSAweDgwKSA8PCA2KSArICRtWyRpKytdIC0gMHg4MDsKICAgICAgICAgICAgfSBlbHNlaWYgKDB4RTAgPD0gJG1bJGldKSB7CiAgICAgICAgICAgICAgICAkYyA9ICgoJG1bJGkrK10gLSAweEUwKSA8PCAxMikgKyAoKCRtWyRpKytdIC0gMHg4MCkgPDwgNikgKyAkbVskaSsrXSAtIDB4ODA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkYyA9ICgoJG1bJGkrK10gLSAweEMwKSA8PCA2KSArICRtWyRpKytdIC0gMHg4MDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVudGl0aWVzIC49ICcmIycuJGMuJzsnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbnRpdGllczsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB0aXRsZV9jYXNlX2xvd2VyKCRzKQogICAgewogICAgICAgIHJldHVybiBzZWxmOjptYl9jb252ZXJ0X2Nhc2UoJHNbMF0sIE1CX0NBU0VfTE9XRVIsICdVVEYtOCcpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHRpdGxlX2Nhc2VfdXBwZXIoJHMpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om1iX2NvbnZlcnRfY2FzZSgkc1swXSwgTUJfQ0FTRV9VUFBFUiwgJ1VURi04Jyk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RGF0YSgkZmlsZSkKICAgIHsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSBfX0RJUl9fLicvUmVzb3VyY2VzL3VuaWRhdGEvJy4kZmlsZS4nLnBocCcpKSB7CiAgICAgICAgICAgIHJldHVybiByZXF1aXJlICRmaWxlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEVuY29kaW5nKCRlbmNvZGluZykKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJGVuY29kaW5nKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjokaW50ZXJuYWxFbmNvZGluZzsKICAgICAgICB9CgogICAgICAgICRlbmNvZGluZyA9IHN0cnRvdXBwZXIoJGVuY29kaW5nKTsKCiAgICAgICAgaWYgKCc4QklUJyA9PT0gJGVuY29kaW5nIHx8ICdCSU5BUlknID09PSAkZW5jb2RpbmcpIHsKICAgICAgICAgICAgcmV0dXJuICdDUDg1MCc7CiAgICAgICAgfQogICAgICAgIGlmICgnVVRGOCcgPT09ICRlbmNvZGluZykgewogICAgICAgICAgICByZXR1cm4gJ1VURi04JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZW5jb2Rpbmc7CiAgICB9Cn0K]]></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+Mi4wIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7ICJTeW1mb255XFxQb2x5ZmlsbFxcUGhwNzBcXCI6ICIiIH0sCiAgICAgICAgImZpbGVzIjogWyAiYm9vdHN0cmFwLnBocCIgXSwKICAgICAgICAiY2xhc3NtYXAiOiBbICJSZXNvdXJjZXMvc3R1YnMiIF0KICAgIH0sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAiZGV2IiwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjUtZGV2IgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE0LTIwMTYgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/Php70.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBTeW1mb255XFBvbHlmaWxsXFBocDcwOwoKLyoqCiAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAqCiAqIEBpbnRlcm5hbAogKi8KZmluYWwgY2xhc3MgUGhwNzAKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnRkaXYoJGRpdmlkZW5kLCAkZGl2aXNvcikKICAgIHsKICAgICAgICAkZGl2aWRlbmQgPSBzZWxmOjppbnRBcmcoJGRpdmlkZW5kLCBfX0ZVTkNUSU9OX18sIDEpOwogICAgICAgICRkaXZpc29yID0gc2VsZjo6aW50QXJnKCRkaXZpc29yLCBfX0ZVTkNUSU9OX18sIDIpOwoKICAgICAgICBpZiAoMCA9PT0gJGRpdmlzb3IpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxEaXZpc2lvbkJ5WmVyb0Vycm9yKCdEaXZpc2lvbiBieSB6ZXJvJyk7CiAgICAgICAgfQogICAgICAgIGlmICgtMSA9PT0gJGRpdmlzb3IgJiYgflBIUF9JTlRfTUFYID09PSAkZGl2aWRlbmQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxBcml0aG1ldGljRXJyb3IoJ0RpdmlzaW9uIG9mIFBIUF9JTlRfTUlOIGJ5IC0xIGlzIG5vdCBhbiBpbnRlZ2VyJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKCRkaXZpZGVuZCAtICgkZGl2aWRlbmQgJSAkZGl2aXNvcikpIC8gJGRpdmlzb3I7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmVnX3JlcGxhY2VfY2FsbGJhY2tfYXJyYXkoYXJyYXkgJHBhdHRlcm5zLCAkc3ViamVjdCwgJGxpbWl0ID0gLTEsICYkY291bnQgPSAwKQogICAgewogICAgICAgICRjb3VudCA9IDA7CiAgICAgICAgJHJlc3VsdCA9ICcnLiRzdWJqZWN0OwogICAgICAgIGlmICgwID09PSAkbGltaXQgPSBzZWxmOjppbnRBcmcoJGxpbWl0LCBfX0ZVTkNUSU9OX18sIDMpKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJHBhdHRlcm5zIGFzICRwYXR0ZXJuID0+ICRjYWxsYmFjaykgewogICAgICAgICAgICAkcmVzdWx0ID0gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRwYXR0ZXJuLCAkY2FsbGJhY2ssICRyZXN1bHQsICRsaW1pdCwgJGMpOwogICAgICAgICAgICAkY291bnQgKz0gJGM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVycm9yX2NsZWFyX2xhc3QoKQogICAgewogICAgICAgIHN0YXRpYyAkaGFuZGxlcjsKICAgICAgICBpZiAoISRoYW5kbGVyKSB7CiAgICAgICAgICAgICAkaGFuZGxlciA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgICAgfQogICAgICAgIHNldF9lcnJvcl9oYW5kbGVyKCRoYW5kbGVyKTsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignJyk7CiAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnRBcmcoJHZhbHVlLCAkY2FsbGVyLCAkcG9zKQogICAgewogICAgICAgIGlmIChpc19pbnQoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KICAgICAgICBpZiAoIWlzX251bWVyaWMoJHZhbHVlKSB8fCBQSFBfSU5UX01BWCA8PSAoJHZhbHVlICs9IDApIHx8IH5QSFBfSU5UX01BWCA+PSAkdmFsdWUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxUeXBlRXJyb3Ioc3ByaW50ZignJXMoKSBleHBlY3RzIHBhcmFtZXRlciAlZCB0byBiZSBpbnRlZ2VyLCAlcyBnaXZlbicsICRjYWxsZXIsICRwb3MsIGdldHR5cGUoJHZhbHVlKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChpbnQpICR2YWx1ZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/polyfill-php70/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBQb2x5ZmlsbCAvIFBocDcwCj09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgZnVuY3Rpb25zIHVuYXZhaWxhYmxlIGluIHJlbGVhc2VzIHByaW9yIHRvIFBIUCA3LjA6CgotIFtgaW50ZGl2YF0oaHR0cDovL3BocC5uZXQvaW50ZGl2KQotIFtgcHJlZ19yZXBsYWNlX2NhbGxiYWNrX2FycmF5YF0oaHR0cDovL3BocC5uZXQvcHJlZ19yZXBsYWNlX2NhbGxiYWNrX2FycmF5KQotIFtgZXJyb3JfY2xlYXJfbGFzdGBdKGh0dHA6Ly9waHAubmV0L2Vycm9yX2NsZWFyX2xhc3QpCi0gYHJhbmRvbV9ieXRlc2AgYW5kIGByYW5kb21faW50YCAoZnJvbSBbcGFyYWdvbmllL3JhbmRvbV9jb21wYXRdKGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJhZ29uaWUvcmFuZG9tX2NvbXBhdCkpCi0gW2AqRXJyb3JgIHRocm93YWJsZSBjbGFzc2VzXShodHRwOi8vcGhwLm5ldC9FcnJvcikKCkFsc28sIGl0IHByb3ZpZGVzIGEgY29uc3RhbnQgYWRkZWQgdG8gUEhQIDcuMDoKLSBbYFBIUF9JTlRfTUlOYF0oaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL3Jlc2VydmVkLmNvbnN0YW50cy5waHAjY29uc3RhbnQucGhwLWludC1taW4pCgpNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUKW21haW4gUG9seWZpbGwgUkVBRE1FXShodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9wb2x5ZmlsbC9ibG9iL21hc3Rlci9SRUFETUUubWQpLgoKQ29tcGF0aWJpbGl0eSBub3Rlcwo9PT09PT09PT09PT09PT09PT09CgpUbyB3cml0ZSBwb3J0YWJsZSBjb2RlIGJldHdlZW4gUEhQNSBhbmQgUEhQNywgc29tZSBjYXJlIG11c3QgYmUgdGFrZW46Ci0gYFwqRXJyb3JgIGV4Y2VwdGlvbnMgbXVzdCBiZSBjYXVnaHQgYmVmb3JlIGBcRXhjZXB0aW9uYDsKLSBhZnRlciBjYWxsaW5nIGBlcnJvcl9jbGVhcl9sYXN0KClgLCB0aGUgcmVzdWx0IG9mIGAkZSA9IGVycm9yX2dldF9sYXN0KClgIG11c3QgYmUKICB2ZXJpZmllZCB1c2luZyBgaXNzZXQoJGVbJ21lc3NhZ2UnXVswXSlgIGluc3RlYWQgb2YgYG51bGwgPT09ICRlYC4KCkxpY2Vuc2UKPT09PT09PQoKVGhpcyBsaWJyYXJ5IGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBbTUlUIGxpY2Vuc2VdKExJQ0VOU0UpLgo=]]></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/TypeError.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIFR5cGVFcnJvciBleHRlbmRzIEVycm9yCnsKfQo=]]></data>
	</file>
</module>
