<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>MAS_NotificationCenter</name>
	<version>1.0.5</version>
    <mincmsversion>2.2.10</mincmsversion>
	<help><![CDATA[PGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2PgoKPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iIHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OyBwYWRkaW5nOiAxNXB4OyBiYWNrZ3JvdW5kOiAjZThmNGY4OyBib3JkZXItbGVmdDogNHB4IHNvbGlkICMyMTk2RjM7Ij4KICA8cCBzdHlsZT0ibWFyZ2luOiAwOyI+PHN0cm9uZz5OZWVkIG1vcmUgaGVscD88L3N0cm9uZz4gTUFTIG1vZHVsZXMgYW5kIGRvY3VtZW50YXRpb246IDxhIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPm5ld3N0YXJnZXRlZC5jb208L2E+PC9wPgo8L2Rpdj4KCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiNtYXNfbmNfaGVscF9zdWJ0YWJzIHsKICBvdmVyZmxvdzogaGlkZGVuOwogIG1hcmdpbi10b3A6IDIwcHg7Cn0KI21hc19uY19oZWxwX3N1YnRhYnMgYS5tYXMtbmMtaGVscC10YWIgewogIGNvbG9yOiAjNTg1ODU4OwogIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwOwogIHRleHQtc2hhZG93OiAtMXB4IDFweCAwICNmZmY7CiAgYmFja2dyb3VuZDogI2RkZDsKICBmb250LXdlaWdodDogYm9sZDsKICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgZmxvYXQ6IGxlZnQ7CiAgY3Vyc29yOiBwb2ludGVyOwogIHdoaXRlLXNwYWNlOiBub3dyYXA7CiAgcGFkZGluZzogMTFweDsKICBtYXJnaW4tdG9wOiAxcHg7CiAgbWFyZ2luLXJpZ2h0OiAxcHg7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogIGRpc3BsYXk6IGJsb2NrOwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KI21hc19uY19oZWxwX3N1YnRhYnMgYS5tYXMtbmMtaGVscC10YWI6aG92ZXIsCiNtYXNfbmNfaGVscF9zdWJ0YWJzIGEubWFzLW5jLWhlbHAtdGFiOmZvY3VzIHsKICBjb2xvcjogIzE0N2ZkYjsKfQojbWFzX25jX2hlbHBfc3VidGFicyBhLm1hcy1uYy1oZWxwLXRhYi5hY3RpdmUgewogIGNvbG9yOiAjZmZmOwogIHRleHQtc2hhZG93OiAtMXB4IC0xcHggMCAjMDU0ODgyOwogIGJhY2tncm91bmQ6ICMxNDdmZGI7Cn0KI21hc19uY19oZWxwX3N1YmNvbnRlbnQgewogIGJhY2tncm91bmQ6ICNmZmY7CiAgYm9yZGVyLXJhZGl1czogMCAwIDRweCA0cHg7CiAgcGFkZGluZzogMjBweCAxMHB4OwogIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CiAgYm9yZGVyLXRvcDogM3B4IHNvbGlkICMxNDdmZGI7CiAgY2xlYXI6IGJvdGg7Cn0KPC9zdHlsZT4KCjxuYXYgaWQ9Im1hc19uY19oZWxwX3N1YnRhYnMiIGFyaWEtbGFiZWw9IkhlbHAgc2VjdGlvbnMiPgogIDxhIGhyZWY9IiMiIHJvbGU9InRhYiIgY2xhc3M9Im1hcy1uYy1oZWxwLXRhYiBhY3RpdmUiIGlkPSJtYXNfbmNfaGVscF90YWJfZ2VuZXJhbCI+T3ZlcnZpZXc8L2E+CiAgPGEgaHJlZj0iIyIgcm9sZT0idGFiIiBjbGFzcz0ibWFzLW5jLWhlbHAtdGFiIiBpZD0ibWFzX25jX2hlbHBfdGFiX2NoYW5uZWxzIj5DaGFubmVsczwvYT4KICA8YSBocmVmPSIjIiByb2xlPSJ0YWIiIGNsYXNzPSJtYXMtbmMtaGVscC10YWIiIGlkPSJtYXNfbmNfaGVscF90YWJfaW50ZXJvcCI+SW50ZXJvcDwvYT4KPC9uYXY+Cgo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8ZGl2IGlkPSJtYXNfbmNfaGVscF9zdWJjb250ZW50Ij4KCiAgPHNlY3Rpb24gaWQ9Im1hc19uY19oZWxwX3BhbmVsX2dlbmVyYWwiIGNsYXNzPSJtYXMtbmMtaGVscC1wYW5lbCIgcm9sZT0idGFicGFuZWwiPgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDM+V2hhdCB0aGlzIG1vZHVsZSBkb2VzPC9oMz4KICA8cD5NQVMgTm90aWZpY2F0aW9uIENlbnRlciBzdG9yZXMgb3BlcmF0b3ItZmFjaW5nIGFsZXJ0cyBpbiB0aGUgZGF0YWJhc2UgYW5kIG9wdGlvbmFsbHkgZGVsaXZlcnMgY29waWVzIGJ5IGVtYWlsLCBEaXNjb3JkIHdlYmhvb2ssIG9yIFdlYiBQdXNoLjwvcD4KICA8dWw+CiAgICA8bGk+U3Vic2NyaWJlIHRvIHNlbGVjdGVkIENNUyBjb3JlIGV2ZW50cyAobmV3IHVzZXJzLCBtb2R1bGUgaW5zdGFsbHMsIG9wdGlvbmFsIGxvZ2luIGZhaWx1cmVzKS48L2xpPgogICAgPGxpPlJ1biBwZXJpb2RpYyBjaGVja3MgZnJvbSBjcm9uIHVzaW5nIHRoZSBzaWduZWQgY3JvbiBVUkwuPC9saT4KICAgIDxsaT5JbnRlZ3JhdGUgY3VzdG9tIG1vZHVsZXMgdXNpbmcgdGhlIGRvY3VtZW50ZWQgaG9vayBuYW1lLjwvbGk+CiAgPC91bD4KPC9kaXY+CiAgPC9zZWN0aW9uPgogIDxzZWN0aW9uIGlkPSJtYXNfbmNfaGVscF9wYW5lbF9jaGFubmVscyIgY2xhc3M9Im1hcy1uYy1oZWxwLXBhbmVsIiBzdHlsZT0iZGlzcGxheTpub25lOyIgcm9sZT0idGFicGFuZWwiPgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5FbWFpbCB1c2VzIENNUyBNYWRlIFNpbXBsZSBtYWlsIHNldHRpbmdzIChjbXNfbWFpbGVyKS4gRGlzY29yZCBleHBlY3RzIGFuIEluY29taW5nIFdlYmhvb2sgVVJMIHVuZGVyIGRpc2NvcmQuY29tLiBXZWIgUHVzaCByZXF1aXJlcyBIVFRQUywgR01QL0NvbXBvc2VyIGRlcGVuZGVuY2llcywgVkFQSUQga2V5cywgYW5kIG1hc19uY19zdy5qcyBpbiB0aGUgc2l0ZSByb290IChQdWJsaXNoIGJ1dHRvbikuIE9wdGlvbmFsOiBtZXJnZSB3aXRoIENHU2ltcGxlUFdBIGlmIHlvdSBlbmFibGUgdGhhdCBpbnRlZ3JhdGlvbi48L3A+CiAgICA8L2Rpdj4KICA8L3NlY3Rpb24+CiAgPHNlY3Rpb24gaWQ9Im1hc19uY19oZWxwX3BhbmVsX2ludGVyb3AiIGNsYXNzPSJtYXMtbmMtaGVscC1wYW5lbCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIHJvbGU9InRhYnBhbmVsIj4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Q2FsbCBDTVNNUyBIb29rTWFuYWdlcjo6ZG9faG9vaygnTUFTX05vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZ5JywgYXJyYXkoJHBheWxvYWQpKSB3aGVyZSAkcGF5bG9hZCBpbmNsdWRlcyBzZXZlcml0eSwgY2F0ZWdvcnksIHRpdGxlLCBib2R5LCBvcHRpb25hbCBtZXRhLiBUaGlzIHN0b3JlcyB0aGUgYWxlcnQgYW5kIHJ1bnMgb3V0Ym91bmQgY2hhbm5lbHMgYWNjb3JkaW5nIHRvIFNldHRpbmdzLjwvcD4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5NQVNfTm90aWZpY2F0aW9uQ2VudGVyIGRvZXMgbm90IHJlcXVpcmUgQ0dTaW1wbGVQV0EuIEJ5IGRlZmF1bHQgaXQgb3V0cHV0cyBpdHMgb3duIG1hbmlmZXN0IGxpbmssIHRoZW1lLWNvbG9yLCBhbmQgYWRtaW4gc2NyaXB0cywgYW5kIHlvdSBwdWJsaXNoIG1hc19uY19zdy5qcyB0byB0aGUgc2l0ZSByb290LiBJZiB5b3UgZW5hYmxlIHRoZSBvcHRpb25hbCBDR1NpbXBsZVBXQSBtZXJnZSBjaGVja2JveCBhbmQgQ0dTaW1wbGVQV0EgaXMgaW5zdGFsbGVkLCBNQVMgcmVnaXN0ZXJzIGEgU2VydmljZVdvcmtlckFkZG9uIGFuZCBtYXkgY2hhaW4gQ0dTaW1wbGVQV0EgYWRtaW4gaGVhZGVycyAoc2FtZSBwYXR0ZXJuIGFzIENHV2ViUHVzaCkuIENvcHlpbmcgdGhlIGZ1bGwgQ0dTaW1wbGVQV0EgcHJvZHVjdCBpbnRvIHRoaXMgbW9kdWxlIGlzIG5vdCBpbmNsdWRlZCAobGljZW5zZSBhbmQgbWFpbnRlbmFuY2UgZGlmZmVyKS4gV2hlbiBDR1dlYlB1c2ggaXMgaW5zdGFsbGVkLCB5b3UgY2FuIGVuYWJsZSB0aGUgb3B0aW9uYWwgYnJpZGdlIHRoYXQgY2FsbHMgQ0dXZWJQdXNoIGJyb2FkY2FzdF9tZXNzYWdlIChDR0V4dGVuc2lvbnMgbm90aWZpY2F0aW9uX21lc3NhZ2UpLiBBdm9pZCBkdXBsaWNhdGUgbm90aWZpY2F0aW9ucyBpZiBvbmUgZGV2aWNlIHVzZXMgYm90aCBzdWJzY3JpcHRpb24gc3RvcmVzLjwvcD4KICAgIDwvZGl2PgogIDwvc2VjdGlvbj4KCiAgPGRpdiBjbGFzcz0iY2xlYXJiIj48L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CihmdW5jdGlvbiAoKSB7CiAgaWYgKHR5cGVvZiBqUXVlcnkgPT09ICd1bmRlZmluZWQnKSB7CiAgICByZXR1cm47CiAgfQogIGpRdWVyeShmdW5jdGlvbiAoJCkgewogICAgdmFyICR0YWJzID0gJCgnI21hc19uY19oZWxwX3N1YnRhYnMgYS5tYXMtbmMtaGVscC10YWInKTsKICAgIHZhciAkcGFuZWxzID0gJCgnI21hc19uY19oZWxwX3N1YmNvbnRlbnQgc2VjdGlvbi5tYXMtbmMtaGVscC1wYW5lbCcpOwogICAgaWYgKCEkdGFicy5sZW5ndGggfHwgISRwYW5lbHMubGVuZ3RoKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIGFjdGl2YXRlKCR0YWIpIHsKICAgICAgdmFyIHN1ZmZpeCA9ICR0YWIuYXR0cignaWQnKS5yZXBsYWNlKC9ebWFzX25jX2hlbHBfdGFiXy8sICcnKTsKICAgICAgJHRhYnMucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAkdGFiLmFkZENsYXNzKCdhY3RpdmUnKTsKICAgICAgJHBhbmVscy5oaWRlKCk7CiAgICAgICQoJyNtYXNfbmNfaGVscF9wYW5lbF8nICsgc3VmZml4KS5zaG93KCk7CiAgICB9CiAgICAkdGFicy5vbignY2xpY2snLCBmdW5jdGlvbiAoZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgIGFjdGl2YXRlKCQodGhpcykpOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9KTsKICAgIHZhciAkZmlyc3QgPSAkdGFicy5maWx0ZXIoJy5hY3RpdmUnKS5maXJzdCgpOwogICAgaWYgKCRmaXJzdC5sZW5ndGgpIHsKICAgICAgYWN0aXZhdGUoJGZpcnN0KTsKICAgIH0gZWxzZSB7CiAgICAgIGFjdGl2YXRlKCR0YWJzLmZpcnN0KCkpOwogICAgfQogIH0pOwp9KSgpOwo8L3NjcmlwdD4KPGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBhY3Rpb249ImRlZmF1bHQiIC0gRnJvbnRlbmQgYWN0aW9uIChyZXNlcnZlZCkuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4OyI+CiAgPGgzPk1vZHVsZSBkZXRhaWxzPC9oMz4KICA8cD48c3Ryb25nPk5hbWU8L3N0cm9uZz4gTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXI8L3A+CiAgPHA+PHN0cm9uZz5WZXJzaW9uPC9zdHJvbmc+IDEuMC41PC9wPgogIDxwPjxzdHJvbmc+QXV0aG9yPC9zdHJvbmc+IG1hc3RlcjMzOTU8L3A+CiAgPHA+PHN0cm9uZz5FbWFpbDwvc3Ryb25nPiA8YSBocmVmPSJtYWlsdG86aW5mbyU0MG5ld3N0YXJnZXRlZC5jb20iPmluZm9AbmV3c3RhcmdldGVkLmNvbTwvYT48L3A+CiAgPHA+PHN0cm9uZz5MaWNlbnNlPC9zdHJvbmc+IE1JVDwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxoMz5Db21wYXRpYmlsaXR5PC9oMz4KICA8cD5NaW5pbXVtIENNUyBNYWRlIFNpbXBsZSAyLjIuMTA8L3A+CiAgPHA+TWluaW11bSBQSFAgNy40LjA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDM+U3VtbWFyeTwvaDM+CiAgPHA+SW50ZXJuYWwgbm90aWZpY2F0aW9uIGh1YiBmb3IgQ01TIE1hZGUgU2ltcGxlOiBjb3JlIGV2ZW50IGFsZXJ0cywgZW1haWwsIERpc2NvcmQgd2ViaG9va3MsIFdlYiBQdXNoIChWQVBJRCkgd2l0aCBidWlsdC1pbiBtYW5pZmVzdCBhbmQgc2VydmljZSB3b3JrZXIgaGVscGVycywgaGVhbHRoIGNoZWNrcywgY3JvbiBVUkwsIGFuZCBpbnRlcm9wZXJhYmlsaXR5IGhvb2tzLiBDR1NpbXBsZVBXQSBpcyBvcHRpb25hbC4gTUlUIGxpY2Vuc2UuPC9wPgo8L2Rpdj4K]]></about>
	<description><![CDATA[Internal notification hub for CMS Made Simple: core event alerts, email, Discord webhooks, Web Push (VAPID) with built-in manifest and service worker helpers, health checks, cron URL, and interoperability hooks. CGSimplePWA is optional. MIT license.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.htaccess</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBCbG9jayBzZW5zaXRpdmUgcGF0aHM7IGFsbG93IGltYWdlcywgSlMsIGFuZCB0ZW1wbGF0ZXMgZm9yIG5vcm1hbCBDTVNNUyBkZWxpdmVyeS4KPElmTW9kdWxlIG1vZF9yZXdyaXRlLmM+CiAgUmV3cml0ZUVuZ2luZSBPbgogIFJld3JpdGVSdWxlIF52ZW5kb3IoL3wkKSAtIFtGLExdCjwvSWZNb2R1bGU+Cgo8RmlsZXNNYXRjaCAiXihjb21wb3NlclwuKGpzb258bG9jaykpJCI+CiAgPElmTW9kdWxlIG1vZF9hdXRoel9jb3JlLmM+CiAgICBSZXF1aXJlIGFsbCBkZW5pZWQKICA8L0lmTW9kdWxlPgogIDxJZk1vZHVsZSAhbW9kX2F1dGh6X2NvcmUuYz4KICAgIE9yZGVyIGRlbnksYWxsb3cKICAgIERlbnkgZnJvbSBhbGwKICA8L0lmTW9kdWxlPgo8L0ZpbGVzTWF0Y2g+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.ajax_push_subscribe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIHsKICAgIGV4aXQ7Cn0KCmhlYWRlcignQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PVVURi04Jyk7CgppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgZWNobyBqc29uX2VuY29kZShhcnJheSgnb2snID0+IGZhbHNlLCAnZXJyb3InID0+ICdkZW5pZWQnKSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUpOwogICAgZXhpdDsKfQoKJHVpZCA9IGdldF91c2VyaWQoKTsKaWYgKCR1aWQgPCAxKSB7CiAgICBlY2hvIGpzb25fZW5jb2RlKGFycmF5KCdvaycgPT4gZmFsc2UsICdlcnJvcicgPT4gJ2F1dGgnKSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUpOwogICAgZXhpdDsKfQoKJHJhdyA9IChzdHJpbmcpIGZpbGVfZ2V0X2NvbnRlbnRzKCdwaHA6Ly9pbnB1dCcpOwokZGF0YSA9IGpzb25fZGVjb2RlKCRyYXcsIHRydWUpOwppZiAoIWlzX2FycmF5KCRkYXRhKSB8fCBlbXB0eSgkZGF0YVsnZW5kcG9pbnQnXSkpIHsKICAgIGVjaG8ganNvbl9lbmNvZGUoYXJyYXkoJ29rJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAncGF5bG9hZCcpLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CiAgICBleGl0Owp9CgokZW5kcG9pbnQgPSAoc3RyaW5nKSAkZGF0YVsnZW5kcG9pbnQnXTsKJGlkID0gaGFzaCgnc2hhMjU2JywgJGVuZHBvaW50KTsKCk1BU19OQ19QdXNoUmVwbzo6c2F2ZSgkdGhpcywgJGlkLCAkZGF0YSwgKGludCkgJHVpZCk7CgppZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICBhdWRpdCgoaW50KSAkdWlkLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdQdXNoIHN1YnNjcmlwdGlvbiBzYXZlZCcpOwp9CgplY2hvIGpzb25fZW5jb2RlKGFycmF5KCdvaycgPT4gdHJ1ZSksIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKZXhpdDsK]]></data>
	</file>
	<file>
	  <filename>/action.cron_ping.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIHsKICAgIGV4aXQ7Cn0KCmhlYWRlcignQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Jyk7CgokdG9rZW4gPSBpc3NldCgkX1JFUVVFU1RbJ21hc190b2tlbiddKSA/IChzdHJpbmcpICRfUkVRVUVTVFsnbWFzX3Rva2VuJ10gOiAnJzsKJGV4cGVjdGVkID0gKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19jcm9uX3Rva2VuJywgJycpOwppZiAoJGV4cGVjdGVkID09PSAnJyB8fCAhaGFzaF9lcXVhbHMoJGV4cGVjdGVkLCAkdG9rZW4pKSB7CiAgICBodHRwX3Jlc3BvbnNlX2NvZGUoNDAzKTsKICAgIGVjaG8gJ0ZvcmJpZGRlbic7CgogICAgZXhpdDsKfQoKTUFTX05DX1JvdXRlcjo6bm90aWZ5KCR0aGlzLCBhcnJheSgKICAgICdzZXZlcml0eScgPT4gJ2luZm8nLAogICAgJ2NhdGVnb3J5JyA9PiAnY3JvbicsCiAgICAnc291cmNlJyA9PiAnY3Jvbl9waW5nJywKICAgICd0aXRsZScgPT4gJHRoaXMtPkxhbmcoJ2Nyb25fcGluZ190aXRsZScpLAogICAgJ2JvZHknID0+ICR0aGlzLT5MYW5nKCdjcm9uX3BpbmdfYm9keScpLAogICAgJ21ldGEnID0+IGFycmF5KCd0aW1lJyA9PiBnbWRhdGUoJ2MnKSksCikpOwoKaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfaGVhbHRoX29uX2Nyb24nLCAnMScpICE9PSAnMCcpIHsKICAgICRpc3N1ZXMgPSBNQVNfTkNfSGVhbHRoOjpydW4oJHRoaXMpOwogICAgZm9yZWFjaCAoJGlzc3VlcyBhcyAkayA9PiAkbXNnKSB7CiAgICAgICAgTUFTX05DX1JvdXRlcjo6bm90aWZ5KCR0aGlzLCBhcnJheSgKICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnd2FybmluZycsCiAgICAgICAgICAgICdjYXRlZ29yeScgPT4gJ2hlYWx0aCcsCiAgICAgICAgICAgICdzb3VyY2UnID0+ICdoZWFsdGg6JyAuICRrLAogICAgICAgICAgICAndGl0bGUnID0+ICR0aGlzLT5MYW5nKCdoZWFsdGhfaXNzdWVfdGl0bGUnKSwKICAgICAgICAgICAgJ2JvZHknID0+IChzdHJpbmcpICRtc2csCiAgICAgICAgICAgICdtZXRhJyA9PiBhcnJheSgna2V5JyA9PiAkayksCiAgICAgICAgKSk7CiAgICB9Cn0KCmVjaG8gJ09LJzsKZXhpdDsK]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIHsKICAgIGV4aXQ7Cn0KCmVjaG8gJzwhLS0gTUFTX05vdGlmaWNhdGlvbkNlbnRlciBwbGFjZWhvbGRlciAtLT4nOwo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIHsKICAgIGV4aXQ7Cn0KaWYgKCEkdGhpcy0+VmlzaWJsZVRvQWRtaW5Vc2VyKCkpIHsKICAgIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOwokc21hcnR5LT5hc3NpZ24oJ21vZCcsICR0aGlzKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfdmVyc2lvbicsICR0aGlzLT5HZXRWZXJzaW9uKCkpOwoKJHNob3dEb25hdGlvbnMgPSAkdGhpcy0+U2hvd0RvbmF0aW9uc1RhYigpOwoKJGFjdGl2ZVRhYiA9IGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkgPyAoc3RyaW5nKSAkcGFyYW1zWydhY3RpdmVfdGFiJ10gOiAnc2V0dGluZ3MnOwokYWxsb3dlZFRhYnMgPSBhcnJheSgnc2V0dGluZ3MnLCAnbm90aWZpY2F0aW9ucycsICdoZWxwJywgJ2Fib3V0JywgJ2NoYW5nZWxvZycsICdkb25hdGlvbnMnKTsKaWYgKCFpbl9hcnJheSgkYWN0aXZlVGFiLCAkYWxsb3dlZFRhYnMsIHRydWUpKSB7CiAgICAkYWN0aXZlVGFiID0gJ3NldHRpbmdzJzsKfQppZiAoJGFjdGl2ZVRhYiA9PT0gJ2RvbmF0aW9ucycgJiYgISRzaG93RG9uYXRpb25zKSB7CiAgICAkYWN0aXZlVGFiID0gJ3NldHRpbmdzJzsKfQoKJHNtYXJ0eS0+YXNzaWduKCdzaG93X2RvbmF0aW9uc190YWInLCAkc2hvd0RvbmF0aW9ucyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignc2hvd19kb25hdGlvbnNfdGFiX2NoZWNrZWQnLCAkc2hvd0RvbmF0aW9ucyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignYWN0aXZlX3RhYicsICRhY3RpdmVUYWIpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JtX3N0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlX3NldHRpbmdzJywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybV9lbmQnLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzZXR0aW5nc19mb3JtX3N0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlX3NldHRpbmdzJywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignc2V0dGluZ3NfZm9ybV9lbmQnLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRhZG1pblNlY3Rpb25JdGVtcyA9IGFycmF5KAogICAgbGFuZygnbWFpbicpID0+ICdtYWluJywKICAgIGxhbmcoJ2NvbnRlbnQnKSA9PiAnY29udGVudCcsCiAgICBsYW5nKCdsYXlvdXQnKSA9PiAnbGF5b3V0JywKICAgIGxhbmcoJ2ZpbGVzJykgPT4gJ2ZpbGVzJywKICAgIGxhbmcoJ3VzZXJzZ3JvdXBzJykgPT4gJ3VzZXJzZ3JvdXBzJywKICAgIGxhbmcoJ2V4dGVuc2lvbnMnKSA9PiAnZXh0ZW5zaW9ucycsCiAgICBsYW5nKCdhZG1pbicpID0+ICdzaXRlYWRtaW4nLAogICAgbGFuZygnZWNvbW1lcmNlJykgPT4gJ2Vjb21tZXJjZScsCiAgICBsYW5nKCdteXByZWZzJykgPT4gJ215cHJlZnMnLAopOwokc21hcnR5LT5hc3NpZ24oCiAgICAnbWFzX25jX2FkbWluX3NlY3Rpb25fZHJvcGRvd24nLAogICAgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnbWFzX25jX2FkbWluX3NlY3Rpb24nLCAkYWRtaW5TZWN0aW9uSXRlbXMsIC0xLCAkdGhpcy0+R2V0QWRtaW5TZWN0aW9uKCkpCik7Cgokc21hcnR5LT5hc3NpZ24oJ2hpZGVkb25hdGlvbnNzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnaGlkZWRvbmF0aW9uc3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdoaWRlZG9uYXRpb25zc3VibWl0JykpKTsKJHNtYXJ0eS0+YXNzaWduKCdkb25hdGlvbnN0ZXh0JywgJHRoaXMtPkxhbmcoJ2RvbmF0aW9uc3RleHQnKSk7CiRzbWFydHktPmFzc2lnbignc3BvbnNvcnN0ZXh0JywgJHRoaXMtPkxhbmcoJ3Nwb25zb3JzJykpOwokc21hcnR5LT5hc3NpZ24oJ2RvbmF0aW9uc19zcG9uc29yX2hyZWYnLCAnaHR0cHM6Ly9uZXdzdGFyZ2V0ZWQuY29tJyk7CiRzbWFydHktPmFzc2lnbignZG9uYXRpb25zX3Nwb25zb3JfbG9nb191cmwnLCAnaHR0cHM6Ly9uZXdzdGFyZ2V0ZWQuY29tL2hvdGxpbmstb2svbG9nby5wbmcnKTsKJHNtYXJ0eS0+YXNzaWduKCdkb25hdGlvbnNfc3BvbnNvcl9sb2dvX2FsdCcsICR0aGlzLT5MYW5nKCdkb25hdGlvbnNfc3BvbnNvcl9sb2dvX2FsdCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdkb25hdGlvbnNfc3BvbnNvcl9saW5rJywgJHRoaXMtPkxhbmcoJ2RvbmF0aW9uc19zcG9uc29yX2xpbmsnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ21hc19uY19jaGFuZ2Vsb2dfaHRtbCcsICR0aGlzLT5HZXRDaGFuZ2VMb2coKSk7CgokY2ZnID0gY21zX2NvbmZpZzo6Z2V0X2luc3RhbmNlKCk7CiRwYWdlSWQgPSAoaW50KSBjbXNtcygpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0UGFnZUlEKCk7CiRtYW5pZmVzdFVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAxJywgJ21hbmlmZXN0JywgJHBhZ2VJZCwgYXJyYXkoJ3Nob3d0ZW1wbGF0ZScgPT4gJ2ZhbHNlJykpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19tYW5pZmVzdF91cmwnLCAkbWFuaWZlc3RVcmwpOwoKJGFqYXhQdXNoVXJsID0gJHRoaXMtPmNyZWF0ZV91cmwoJGlkLCAnYWpheF9wdXNoX3N1YnNjcmliZScsICRyZXR1cm5pZCwgYXJyYXkoJ3Nob3d0ZW1wbGF0ZScgPT4gJ2ZhbHNlJykpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19hamF4X3B1c2hfc3Vic2NyaWJlX3VybCcsIHN0cl9yZXBsYWNlKCcmYW1wOycsICcmJywgJGFqYXhQdXNoVXJsKSk7Cgokc21hcnR5LT5hc3NpZ24oJ21hc19uY192YXBpZF9wdWJsaWMnLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX3B1YmxpYycsICcnKSk7CgokY3JvblRva2VuID0gKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19jcm9uX3Rva2VuJywgJycpOwokY3JvblVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCdjbnRudDAxJywgJ2Nyb25fcGluZycsICRwYWdlSWQsIGFycmF5KCdtYXNfdG9rZW4nID0+ICRjcm9uVG9rZW4sICdzaG93dGVtcGxhdGUnID0+ICdmYWxzZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfY3Jvbl91cmwnLCBzdHJfcmVwbGFjZSgnJmFtcDsnLCAnJicsICRjcm9uVXJsKSk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX2Nyb25fdG9rZW5fZGlzcGxheScsICRjcm9uVG9rZW4gIT09ICcnID8gJGNyb25Ub2tlbiA6ICR0aGlzLT5MYW5nKCdjcm9uX3Rva2VuX21pc3NpbmcnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9lbWFpbF9jaGVja2VkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19lbmFibGVfZW1haWwnLCAnMScpID09PSAnMScgPyAnMScgOiAnMCcpOwokc21hcnR5LT5hc3NpZ24oJ2VuYWJsZV9kaXNjb3JkX2NoZWNrZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9kaXNjb3JkJywgJzAnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdlbmFibGVfcHVzaF9jaGVja2VkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19lbmFibGVfcHVzaCcsICcxJykgPT09ICcxJyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignY2d3ZWJwdXNoX2Jyb2FkY2FzdF9jaGVja2VkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19jZ3dlYnB1c2hfYnJvYWRjYXN0JywgJzAnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdhZG1pbl9vd25fbWFuaWZlc3RfY2hlY2tlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfYWRtaW5fb3duX21hbmlmZXN0JywgJzAnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YV9jaGVja2VkJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhJywgJzAnKSA9PT0gJzEnID8gJzEnIDogJzAnKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfZnJvbnRlbmRfcHdhX2NoZWNrZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Zyb250ZW5kX3B3YScsICcwJykgPT09ICcxJyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX3RoZW1lX2NvbG9yJywgKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY190aGVtZV9jb2xvcicsICcjMDA3OGQ0JykpOwokc21hcnR5LT5hc3NpZ24oJ2hhc19jZ19zaW1wbGVfcHdhJywgY2xhc3NfZXhpc3RzKCdNQVNfTkNfQ0dJbnRlcm9wJykgJiYgTUFTX05DX0NHSW50ZXJvcDo6aGFzQ0dTaW1wbGVQd2EoKSA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignaGFzX2NnX3dlYnB1c2gnLCBjbGFzc19leGlzdHMoJ01BU19OQ19DR0ludGVyb3AnKSAmJiBNQVNfTkNfQ0dJbnRlcm9wOjpoYXNDR1dlYlB1c2goKSA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignZW1haWxfcmVjaXBpZW50cycsIChzdHJpbmcpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW1haWxfcmVjaXBpZW50cycsICcnKSk7CiRzbWFydHktPmFzc2lnbignZGlzY29yZF93ZWJob29rJywgKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19kaXNjb3JkX3dlYmhvb2snLCAnJykpOwokc21hcnR5LT5hc3NpZ24oJ2V2dF9sb2dpbl9mYWlsZWRfY2hlY2tlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2xvZ2luX2ZhaWxlZCcsICcwJykgPT09ICcxJyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignZXZ0X2RlbGV0ZV91c2VyX2NoZWNrZWQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2V2dF9kZWxldGVfdXNlcicsICcwJykgPT09ICcxJyA/ICcxJyA6ICcwJyk7CiRzbWFydHktPmFzc2lnbignZmF0YWxfc2h1dGRvd25fY2hlY2tlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZmF0YWxfc2h1dGRvd24nLCAnMCcpID09PSAnMScgPyAnMScgOiAnMCcpOwokc21hcnR5LT5hc3NpZ24oJ2hlYWx0aF9taW5fcGhwJywgKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfbWluX3BocCcsICc3LjQuMCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdoZWFsdGhfZGlza19wY3QnLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9kaXNrX3BjdCcsICcxMCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdoZWFsdGhfZGJfbXMnLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9kYl9tcycsICcyMDAwJykpOwokc21hcnR5LT5hc3NpZ24oJ3ZhcGlkX2NvbnRhY3QnLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX2NvbnRhY3QnLCAnbWFpbHRvOmluZm9AbmV3c3RhcmdldGVkLmNvbScpKTsKJHNtYXJ0eS0+YXNzaWduKCdyYXRlX3Blcl9ob3VyJywgKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19yYXRlX3Blcl9ob3VyJywgJzEyMCcpKTsKCiRtb2RBc3NldHNCYXNlID0gbWFzX25jX21vZHVsZV9wdWJsaWNfYmFzZSgkdGhpcyk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX21vZHVsZV9pY29uX3VybCcsICRtb2RBc3NldHNCYXNlIC4gJy9pbWFnZXMvaWNvbi0xOTIucG5nJyk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX2Jhbm5lcl91cmwnLCAkbW9kQXNzZXRzQmFzZSAuICcvaW1hZ2VzL2Jhbm5lci5wbmcnKTsKCiRkYiA9ICR0aGlzLT5HZXREYigpOwokcGFnZU51bSA9IGlzc2V0KCRwYXJhbXNbJ21hc19uY19wYWdlJ10pID8gbWF4KDEsIChpbnQpICRwYXJhbXNbJ21hc19uY19wYWdlJ10pIDogMTsKJHBlclBhZ2UgPSA0MDsKJG9mZnNldCA9ICgkcGFnZU51bSAtIDEpICogJHBlclBhZ2U7CiR0YWIgPSBNQVNfTkNfVGFibGVzOjpub3RpZmljYXRpb25zKCk7CiR0b3RhbCA9IChpbnQpICRkYi0+R2V0T25lKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSAnIC4gJHRhYik7CiRzcWwgPSAnU0VMRUNUIGlkLCBjcmVhdGVkLCBzZXZlcml0eSwgY2F0ZWdvcnksIHNvdXJjZSwgdGl0bGUsIGJvZHksIGRlbGl2ZXJlZF9tYXNrLCBpc19yZWFkIEZST00gJwogICAgLiAkdGFiIC4gJyBPUkRFUiBCWSBpZCBERVNDIExJTUlUICcgLiAoaW50KSAkcGVyUGFnZSAuICcgT0ZGU0VUICcgLiAoaW50KSAkb2Zmc2V0Owokcm93cyA9ICRkYi0+R2V0QXJyYXkoJHNxbCk7CmlmIChpc19hcnJheSgkcm93cykpIHsKICAgIGZvcmVhY2ggKCRyb3dzIGFzICYkcjApIHsKICAgICAgICAkcjBbJ2NyZWF0ZWRfZm10J10gPSBkYXRlKCdkL20vWSBIOmknLCAoaW50KSAkcjBbJ2NyZWF0ZWQnXSk7CiAgICB9CiAgICB1bnNldCgkcjApOwp9CiRzbWFydHktPmFzc2lnbignbWFzX25jX25vdGlmaWNhdGlvbnMnLCBpc19hcnJheSgkcm93cykgPyAkcm93cyA6IGFycmF5KCkpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19wYWdlJywgJHBhZ2VOdW0pOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY190b3RhbCcsICR0b3RhbCk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX3Blcl9wYWdlJywgJHBlclBhZ2UpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19oYXNfcHJldicsICRwYWdlTnVtID4gMSk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX2hhc19uZXh0JywgKCRwYWdlTnVtICogJHBlclBhZ2UpIDwgJHRvdGFsKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfcHJldl9wYWdlJywgbWF4KDEsICRwYWdlTnVtIC0gMSkpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19uZXh0X3BhZ2UnLCAkcGFnZU51bSArIDEpOwokc21hcnR5LT5hc3NpZ24oJ21hc19uY19wcmV2X3VybCcsICRwYWdlTnVtID4gMSA/ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21hc19uY19wYWdlJyA9PiAkcGFnZU51bSAtIDEsICdhY3RpdmVfdGFiJyA9PiAnbm90aWZpY2F0aW9ucycpKSA6ICcnKTsKJHNtYXJ0eS0+YXNzaWduKCdtYXNfbmNfbmV4dF91cmwnLCAoJHBhZ2VOdW0gKiAkcGVyUGFnZSkgPCAkdG90YWwgPyAkdGhpcy0+Y3JlYXRlX3VybCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtYXNfbmNfcGFnZScgPT4gJHBhZ2VOdW0gKyAxLCAnYWN0aXZlX3RhYicgPT4gJ25vdGlmaWNhdGlvbnMnKSkgOiAnJyk7CiRzbWFydHktPmFzc2lnbignbWFzX25jX3N3X3BhdGgnLCAnL21hc19uY19zdy5qcycpOwoKJG1zZyA9IGlzc2V0KCRwYXJhbXNbJ21zZyddKSA/IChzdHJpbmcpICRwYXJhbXNbJ21zZyddIDogJyc7CmlmICgkbXNnID09PSAnc2F2ZWQnKSB7CiAgICBlY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygnc2F2ZWQnKSk7Cn0KaWYgKCRtc2cgPT09ICdwdWJsaXNoZWRfc3cnKSB7CiAgICBlY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygncHVibGlzaGVkX3N3X29rJykpOwp9CmlmICgkbXNnID09PSAna2V5c19yb3RhdGVkJykgewogICAgZWNobyAkdGhpcy0+U2hvd01lc3NhZ2UoJHRoaXMtPkxhbmcoJ2tleXNfcm90YXRlZCcpKTsKfQoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignc2V0dGluZ3MnLCAkdGhpcy0+TGFuZygndGFiX3NldHRpbmdzJyksICRhY3RpdmVUYWIgPT09ICdzZXR0aW5ncycpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ25vdGlmaWNhdGlvbnMnLCAkdGhpcy0+TGFuZygndGFiX25vdGlmaWNhdGlvbnMnKSwgJGFjdGl2ZVRhYiA9PT0gJ25vdGlmaWNhdGlvbnMnKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdoZWxwJywgJHRoaXMtPkxhbmcoJ3RhYl9oZWxwJyksICRhY3RpdmVUYWIgPT09ICdoZWxwJyk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignYWJvdXQnLCAkdGhpcy0+TGFuZygndGFiX2Fib3V0JyksICRhY3RpdmVUYWIgPT09ICdhYm91dCcpOwplY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2NoYW5nZWxvZycsICR0aGlzLT5MYW5nKCd0YWJfY2hhbmdlbG9nJyksICRhY3RpdmVUYWIgPT09ICdjaGFuZ2Vsb2cnKTsKaWYgKCRzaG93RG9uYXRpb25zKSB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2RvbmF0aW9ucycsICR0aGlzLT5MYW5nKCdkb25hdGlvbnNfdGFiJyksICRhY3RpdmVUYWIgPT09ICdkb25hdGlvbnMnKTsKfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3NldHRpbmdzJyk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fc2V0dGluZ3MudHBsJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWIoJ25vdGlmaWNhdGlvbnMnKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9ub3RpZmljYXRpb25zLnRwbCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdoZWxwJyk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5faGVscC50cGwnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYignYWJvdXQnKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9hYm91dC50cGwnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgplY2hvICR0aGlzLT5TdGFydFRhYignY2hhbmdlbG9nJyk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fY2hhbmdlbG9nLnRwbCcpOwplY2hvICR0aGlzLT5FbmRUYWIoKTsKCmlmICgkc2hvd0RvbmF0aW9ucykgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2RvbmF0aW9ucycpOwogICAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdkb25hdGlvbnMudHBsJyk7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo=]]></data>
	</file>
	<file>
	  <filename>/action.manifest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIHsKICAgIGV4aXQ7Cn0KCiRjb25maWcgPSBjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKJHJvb3RVcmwgPSBydHJpbSgkY29uZmlnLT5zbWFydF9yb290X3VybCgpLCAnLycpOwokYmFzZSA9IG1hc19uY19tb2R1bGVfcHVibGljX2Jhc2UoJHRoaXMpOwokaWNvbjE5MiA9ICRiYXNlIC4gJy9pbWFnZXMvaWNvbi0xOTIucG5nJzsKJGljb241MTIgPSAkYmFzZSAuICcvaW1hZ2VzL2ljb24tNTEyLnBuZyc7CgokbWFuaWZlc3QgPSBhcnJheSgKICAgICduYW1lJyA9PiAnTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXInLAogICAgJ3Nob3J0X25hbWUnID0+ICdNQVMgTkMnLAogICAgJ2Rlc2NyaXB0aW9uJyA9PiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKSwKICAgICdzdGFydF91cmwnID0+ICRyb290VXJsIC4gJy8nLAogICAgJ3Njb3BlJyA9PiAnLycsCiAgICAnZGlzcGxheScgPT4gJ3N0YW5kYWxvbmUnLAogICAgJ2JhY2tncm91bmRfY29sb3InID0+ICcjZmZmZmZmJywKICAgICd0aGVtZV9jb2xvcicgPT4gJyMwMDc4ZDQnLAogICAgJ2ljb25zJyA9PiBhcnJheSgKICAgICAgICBhcnJheSgKICAgICAgICAgICAgJ3NyYycgPT4gJGljb24xOTIsCiAgICAgICAgICAgICdzaXplcycgPT4gJzE5MngxOTInLAogICAgICAgICAgICAndHlwZScgPT4gJ2ltYWdlL3BuZycsCiAgICAgICAgICAgICdwdXJwb3NlJyA9PiAnYW55IG1hc2thYmxlJywKICAgICAgICApLAogICAgICAgIGFycmF5KAogICAgICAgICAgICAnc3JjJyA9PiAkaWNvbjUxMiwKICAgICAgICAgICAgJ3NpemVzJyA9PiAnNTEyeDUxMicsCiAgICAgICAgICAgICd0eXBlJyA9PiAnaW1hZ2UvcG5nJywKICAgICAgICAgICAgJ3B1cnBvc2UnID0+ICdhbnkgbWFza2FibGUnLAogICAgICAgICksCiAgICApLAopOwoKaGVhZGVyKCdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL21hbmlmZXN0K2pzb247IGNoYXJzZXQ9VVRGLTgnKTsKZWNobyBqc29uX2VuY29kZSgkbWFuaWZlc3QsIEpTT05fUFJFVFRZX1BSSU5UIHwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUpOwpleGl0Owo=]]></data>
	</file>
	<file>
	  <filename>/action.save_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIHsKICAgIGV4aXQ7Cn0KaWYgKCEkdGhpcy0+VmlzaWJsZVRvQWRtaW5Vc2VyKCkpIHsKICAgIHJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJGFjdGl2ZVRhYiA9IGlzc2V0KCRwYXJhbXNbJ2FjdGl2ZV90YWInXSkgPyAoc3RyaW5nKSAkcGFyYW1zWydhY3RpdmVfdGFiJ10gOiAnc2V0dGluZ3MnOwokYWxsb3dlZFRhYnMgPSBhcnJheSgnc2V0dGluZ3MnLCAnbm90aWZpY2F0aW9ucycsICdoZWxwJywgJ2Fib3V0JywgJ2NoYW5nZWxvZycsICdkb25hdGlvbnMnKTsKaWYgKCFpbl9hcnJheSgkYWN0aXZlVGFiLCAkYWxsb3dlZFRhYnMsIHRydWUpKSB7CiAgICAkYWN0aXZlVGFiID0gJ3NldHRpbmdzJzsKfQoKaWYgKCFlbXB0eSgkcGFyYW1zWydoaWRlZG9uYXRpb25zc3VibWl0J10pKSB7CiAgICAkc2hvd0RvbmF0aW9uc1RhYiA9ICFlbXB0eSgkcGFyYW1zWydzaG93X2RvbmF0aW9uc190YWInXSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaGlkZWRvbmF0aW9uc3RhYicsICRzaG93RG9uYXRpb25zVGFiID8gJycgOiAkdGhpcy0+R2V0VmVyc2lvbigpKTsKICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtc2cnID0+ICdzYXZlZCcsICdhY3RpdmVfdGFiJyA9PiAnc2V0dGluZ3MnKSk7CgogICAgcmV0dXJuOwp9CgppZiAoIWVtcHR5KCRwYXJhbXNbJ21hc19uY19wdWJsaXNoX3N3J10pKSB7CiAgICAkc3JjID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLCAnanMnLCAnbWFzLW5jLXN3LXJvb3QuanMnKTsKICAgICRjb25maWcgPSBjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICRkZXN0ID0gY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXSwgJ21hc19uY19zdy5qcycpOwogICAgaWYgKCFpc19yZWFkYWJsZSgkc3JjKSkgewogICAgICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtc2cnID0+ICdzYXZlZCcsICdhY3RpdmVfdGFiJyA9PiAnc2V0dGluZ3MnKSk7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgICRib2R5ID0gKHN0cmluZykgQGZpbGVfZ2V0X2NvbnRlbnRzKCRzcmMpOwogICAgJGJhbm5lciA9ICcvKiBNQVMgTm90aWZpY2F0aW9uIENlbnRlciBzZXJ2aWNlIHdvcmtlciwgZ2VuZXJhdGVkICcgLiBnbWRhdGUoJ2MnKSAuICIgKi9cbiI7CiAgICBAZmlsZV9wdXRfY29udGVudHMoJGRlc3QsICRiYW5uZXIgLiAkYm9keSk7CiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICAgICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnUHVibGlzaGVkIG1hc19uY19zdy5qcyB0byBzaXRlIHJvb3QnKTsKICAgIH0KICAgICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtc2cnID0+ICdwdWJsaXNoZWRfc3cnLCAnYWN0aXZlX3RhYicgPT4gJ3NldHRpbmdzJykpOwoKICAgIHJldHVybjsKfQoKaWYgKCFlbXB0eSgkcGFyYW1zWydtYXNfbmNfcm90YXRlX3ZhcGlkJ10pKSB7CiAgICAkYXV0byA9IGNtc19qb2luX3BhdGgoJHRoaXMtPkdldE1vZHVsZVBhdGgoKSwgJ3ZlbmRvcicsICdhdXRvbG9hZC5waHAnKTsKICAgIGlmIChpc19yZWFkYWJsZSgkYXV0bykpIHsKICAgICAgICByZXF1aXJlX29uY2UgJGF1dG87CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnTWluaXNobGlua1xcV2ViUHVzaFxcVkFQSUQnKSkgewogICAgICAgICAgICAgICAgJGtleXMgPSBNaW5pc2hsaW5rXFdlYlB1c2hcVkFQSUQ6OmNyZWF0ZVZhcGlkS2V5cygpOwogICAgICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY192YXBpZF9wdWJsaWMnLCAka2V5c1sncHVibGljS2V5J10pOwogICAgICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY192YXBpZF9wcml2YXRlJywgJGtleXNbJ3ByaXZhdGVLZXknXSk7CiAgICAgICAgICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgnREVMRVRFIEZST00gJyAuIE1BU19OQ19UYWJsZXM6OnB1c2hfc3Vic2NyaXB0aW9ucygpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICAgICAgICAgICAgICBhdWRpdCgwLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdWQVBJRCByb3RhdGUgZmFpbGVkJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbXNnJyA9PiAna2V5c19yb3RhdGVkJywgJ2FjdGl2ZV90YWInID0+ICdzZXR0aW5ncycpKTsKCiAgICByZXR1cm47Cn0KCmlmICghZW1wdHkoJHBhcmFtc1snbWFzX25jX3NlbmRfdGVzdF9wdXNoJ10pKSB7CiAgICAkdGl0bGUgPSAkdGhpcy0+TGFuZygncHVzaF90ZXN0X3RpdGxlJyk7CiAgICAkYm9keSA9ICR0aGlzLT5MYW5nKCdwdXNoX3Rlc3RfYm9keScpOwogICAgTUFTX05DX1dlYlB1c2g6OnNlbmRUb0FkbWlucygkdGhpcywgJHRpdGxlLCAkYm9keSk7CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbXNnJyA9PiAnc2F2ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ3NldHRpbmdzJykpOwoKICAgIHJldHVybjsKfQoKaWYgKCFlbXB0eSgkcGFyYW1zWydtYXNfbmNfZGVsZXRlX3NlbGVjdGVkJ10pICYmIGlzc2V0KCRwYXJhbXNbJ21hc19uY19zZWwnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snbWFzX25jX3NlbCddKSkgewogICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICBmb3JlYWNoICgkcGFyYW1zWydtYXNfbmNfc2VsJ10gYXMgJHJpZCkgewogICAgICAgICRyaWQgPSAoaW50KSAkcmlkOwogICAgICAgIGlmICgkcmlkID4gMCkgewogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJ0RFTEVURSBGUk9NICcgLiBNQVNfTkNfVGFibGVzOjpub3RpZmljYXRpb25zKCkgLiAnIFdIRVJFIGlkID0gPycsIGFycmF5KCRyaWQpKTsKICAgICAgICB9CiAgICB9CiAgICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbXNnJyA9PiAnc2F2ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ25vdGlmaWNhdGlvbnMnKSk7CgogICAgcmV0dXJuOwp9CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9lbWFpbCcsICFlbXB0eSgkcGFyYW1zWydtYXNfbmNfZW5hYmxlX2VtYWlsJ10pID8gJzEnIDogJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19lbmFibGVfZGlzY29yZCcsICFlbXB0eSgkcGFyYW1zWydtYXNfbmNfZW5hYmxlX2Rpc2NvcmQnXSkgPyAnMScgOiAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9wdXNoJywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19lbmFibGVfcHVzaCddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfY2d3ZWJwdXNoX2Jyb2FkY2FzdCcsICFlbXB0eSgkcGFyYW1zWydtYXNfbmNfY2d3ZWJwdXNoX2Jyb2FkY2FzdCddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfYWRtaW5fb3duX21hbmlmZXN0JywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19hZG1pbl9vd25fbWFuaWZlc3QnXSkgPyAnMScgOiAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EnLCAhZW1wdHkoJHBhcmFtc1snbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EnXSkgPyAnMScgOiAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2Zyb250ZW5kX3B3YScsICFlbXB0eSgkcGFyYW1zWydtYXNfbmNfZnJvbnRlbmRfcHdhJ10pID8gJzEnIDogJzAnKTsKJHRjID0gaXNzZXQoJHBhcmFtc1snbWFzX25jX3RoZW1lX2NvbG9yJ10pID8gdHJpbSgoc3RyaW5nKSAkcGFyYW1zWydtYXNfbmNfdGhlbWVfY29sb3InXSkgOiAnIzAwNzhkNCc7CmlmICghcHJlZ19tYXRjaCgnL14jWzAtOUEtRmEtZl17Nn0kLycsICR0YykpIHsKICAgICR0YyA9ICcjMDA3OGQ0JzsKfQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX3RoZW1lX2NvbG9yJywgJHRjKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19lbWFpbF9yZWNpcGllbnRzJywgaXNzZXQoJHBhcmFtc1snbWFzX25jX2VtYWlsX3JlY2lwaWVudHMnXSkgPyB0cmltKChzdHJpbmcpICRwYXJhbXNbJ21hc19uY19lbWFpbF9yZWNpcGllbnRzJ10pIDogJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2Rpc2NvcmRfd2ViaG9vaycsIGlzc2V0KCRwYXJhbXNbJ21hc19uY19kaXNjb3JkX3dlYmhvb2snXSkgPyB0cmltKChzdHJpbmcpICRwYXJhbXNbJ21hc19uY19kaXNjb3JkX3dlYmhvb2snXSkgOiAnJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2xvZ2luX2ZhaWxlZCcsICFlbXB0eSgkcGFyYW1zWydtYXNfbmNfZXZ0X2xvZ2luX2ZhaWxlZCddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2RlbGV0ZV91c2VyJywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19ldnRfZGVsZXRlX3VzZXInXSkgPyAnMScgOiAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2ZhdGFsX3NodXRkb3duJywgIWVtcHR5KCRwYXJhbXNbJ21hc19uY19mYXRhbF9zaHV0ZG93biddKSA/ICcxJyA6ICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfaGVhbHRoX21pbl9waHAnLCBpc3NldCgkcGFyYW1zWydtYXNfbmNfaGVhbHRoX21pbl9waHAnXSkgPyB0cmltKChzdHJpbmcpICRwYXJhbXNbJ21hc19uY19oZWFsdGhfbWluX3BocCddKSA6ICc3LjQuMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9kaXNrX3BjdCcsIGlzc2V0KCRwYXJhbXNbJ21hc19uY19oZWFsdGhfZGlza19wY3QnXSkgPyAoc3RyaW5nKSBtYXgoMSwgKGludCkgJHBhcmFtc1snbWFzX25jX2hlYWx0aF9kaXNrX3BjdCddKSA6ICcxMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2hlYWx0aF9kYl9tcycsIGlzc2V0KCRwYXJhbXNbJ21hc19uY19oZWFsdGhfZGJfbXMnXSkgPyAoc3RyaW5nKSBtYXgoMCwgKGludCkgJHBhcmFtc1snbWFzX25jX2hlYWx0aF9kYl9tcyddKSA6ICcyMDAwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfdmFwaWRfY29udGFjdCcsIGlzc2V0KCRwYXJhbXNbJ21hc19uY192YXBpZF9jb250YWN0J10pID8gdHJpbSgoc3RyaW5nKSAkcGFyYW1zWydtYXNfbmNfdmFwaWRfY29udGFjdCddKSA6ICdtYWlsdG86aW5mb0BuZXdzdGFyZ2V0ZWQuY29tJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfcmF0ZV9wZXJfaG91cicsIGlzc2V0KCRwYXJhbXNbJ21hc19uY19yYXRlX3Blcl9ob3VyJ10pID8gKHN0cmluZykgbWF4KDEsIChpbnQpICRwYXJhbXNbJ21hc19uY19yYXRlX3Blcl9ob3VyJ10pIDogJzEyMCcpOwoKJGFsbG93ZWRTZWN0aW9ucyA9IGFycmF5KAogICAgJ21haW4nLAogICAgJ2NvbnRlbnQnLAogICAgJ2xheW91dCcsCiAgICAnZmlsZXMnLAogICAgJ3VzZXJzZ3JvdXBzJywKICAgICdleHRlbnNpb25zJywKICAgICdzaXRlYWRtaW4nLAogICAgJ2Vjb21tZXJjZScsCiAgICAnbXlwcmVmcycsCik7CiRzZWMgPSBpc3NldCgkcGFyYW1zWydtYXNfbmNfYWRtaW5fc2VjdGlvbiddKSA/IHRyaW0oKHN0cmluZykgJHBhcmFtc1snbWFzX25jX2FkbWluX3NlY3Rpb24nXSkgOiAnZXh0ZW5zaW9ucyc7CmlmICghaW5fYXJyYXkoJHNlYywgJGFsbG93ZWRTZWN0aW9ucywgdHJ1ZSkpIHsKICAgICRzZWMgPSAnZXh0ZW5zaW9ucyc7Cn0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19hZG1pbl9zZWN0aW9uJywgJHNlYyk7Cgokc2hvd0RvbmF0aW9ucyA9ICFlbXB0eSgkcGFyYW1zWydzaG93X2RvbmF0aW9uc190YWJfc2V0dGluZ3MnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRlZG9uYXRpb25zdGFiJywgJHNob3dEb25hdGlvbnMgPyAnJyA6ICR0aGlzLT5HZXRWZXJzaW9uKCkpOwoKaWYgKGZ1bmN0aW9uX2V4aXN0cygnYXVkaXQnKSkgewogICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnU2V0dGluZ3Mgc2F2ZWQnKTsKfQoKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ21zZycgPT4gJ3NhdmVkJywgJ2FjdGl2ZV90YWInID0+ICRhY3RpdmVUYWIpKTsK]]></data>
	</file>
	<file>
	  <filename>/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBNQVNfTm90aWZpY2F0aW9uQ2VudGVyIGNoYW5nZWxvZwoKIyMgMS4wLjUgLSAwNi8wNS8yMDI2CgojIyMgQ2hhbmdlZAoKLSAqKkFkbWluIGJyYW5kaW5nOioqIFVwZGF0ZWQgYGltYWdlcy9iYW5uZXIucG5nYCAoNjAweDEyMCksIGBpbWFnZXMvaWNvbi0xOTIucG5nYCwgYGltYWdlcy9pY29uLTUxMi5wbmdgLCBhbmQgYGltYWdlcy9pY29uLmdpZmAgd2l0aCBtYXRjaGluZyBncmFkaWVudCBzdHlsaW5nIGFuZCBhIGJlbGwgbW90aWYgYWxpZ25lZCB3aXRoIHRoZSBkZWZhdWx0IHRoZW1lIGNvbG9yIChgIzAwNzhkNGApLiBSZWdlbmVyYXRlIHZpYSBgVGVzdC9nZW5lcmF0ZV9icmFuZF9hc3NldHMucHlgIGlmIHlvdSBhZGp1c3QgY29sb3JzLgotICoqQ0dTaW1wbGVQV0EgaXMgb3B0aW9uYWw6KiogZGVmYXVsdCBpcyBzdGFuZGFsb25lIFBXQSBoZWFkZXJzIGZvciB0aGlzIG1vZHVsZSAobWFuaWZlc3QsIGNvbmZpZ3VyYWJsZSB0aGVtZS1jb2xvciwgYXBwbGUgdG91Y2ggaWNvbiwgcHVzaCBzY3JpcHQpLiBTZXJ2aWNlIHdvcmtlciByZWdpc3RyYXRpb24gb24gcHVibGljIHBhZ2VzIGlzIGF2YWlsYWJsZSB2aWEgcHJlZmVyZW5jZSBhbmQgdGhlIGBtZXRhZGF0YV9wb3N0cmVuZGVyYCBob29rICh3aGVuIGB7bWV0YWRhdGF9YCBleGlzdHMgaW4gdGVtcGxhdGVzKS4KLSAqKk9wdC1pbiBDR1NpbXBsZVBXQSBtZXJnZToqKiBwcmVmZXJlbmNlIGBtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YWAgbXVzdCBiZSBlbmFibGVkIHRvIHJlZ2lzdGVyIGBNQVNfTkNfUHdhQWRkb25gIGFuZCB0byBjaGFpbiBDR1NpbXBsZVBXQSBhZG1pbiBgR2V0SGVhZGVySFRNTGAuIFRoZSBkdXBsaWNhdGUtbWFuaWZlc3QgY2hlY2tib3ggYXBwbGllcyBvbmx5IGluIHRoYXQgbWVyZ2VkIG1vZGUuCi0gKipOZXcgZmlsZXM6KiogYGxpYi9tYXNfbmNfcHdhX3N0YW5kYWxvbmUucGhwYCwgYGpzL21hcy1uYy1zdy1yZWdpc3Rlci5qc2AuCgojIyMgTm90ZQoKLSBUaGUgZnVsbCBDR1NpbXBsZVBXQSBwcm9kdWN0IChvZmZsaW5lIGNvbnRlbnQgdHlwZSwgYXNzZXQgc2Nhbm5lciwgYWRtaW4gVUksIGFuZCBzbyBvbikgaXMgbm90IHZlbmRvcmVkIGluc2lkZSBNQVMgKEdQTCBzY29wZSBhbmQgbG9uZy10ZXJtIG1haW50ZW5hbmNlKS4gVXNlIENHU2ltcGxlUFdBIGFzIGEgc2VwYXJhdGUgbW9kdWxlIHdoZW4geW91IG5lZWQgdGhhdCBmZWF0dXJlIHNldCwgb3Iga2VlcCBNQVMgc3RhbmRhbG9uZSB3aXRoIHB1Ymxpc2ggKyBvcHRpb25hbCBwdWJsaWMgUFdBIG91dHB1dC4KCiMjIDEuMC40IC0gMDYvMDUvMjAyNgoKIyMjIEFkZGVkCgotICoqTW9kdWxlIFVJIChTZXR0aW5ncyk6KiogY29uZmlndXJhYmxlICoqYWRtaW4gbWVudSBzZWN0aW9uKiogKGBtYXNfbmNfYWRtaW5fc2VjdGlvbmApIHdpdGggdGhlIHNhbWUgdG9wLWxldmVsIGNob2ljZXMgYXMgY29yZSBhZG1pbiAoTWFpbiwgQ29udGVudCwgTGF5b3V0LCBGaWxlcywgVXNlcnMgJiBHcm91cHMsIEV4dGVuc2lvbnMsIFNpdGUgQWRtaW4sIEUtQ29tbWVyY2UsIE15IFByZWZlcmVuY2VzKS4gYEdldEFkbWluU2VjdGlvbigpYCByZWFkcyB0aGlzIHByZWZlcmVuY2Ugd2l0aCB2YWxpZGF0aW9uLgotICoqU2hvdyBEb25hdGlvbnMgdGFiKiogbW92ZWQgaW50byB0aGUgbmV3ICoqTW9kdWxlIFVJKiogYmxvY2sgYXQgdGhlIHRvcCBvZiBTZXR0aW5ncyAod2l0aCBzaG9ydCBoZWxwKS4gVGhlIERvbmF0aW9ucyB0YWIgaGlkZSBjb250cm9sIG9uIHRoZSBEb25hdGlvbnMgdGFiIG5vdyBwb3N0cyBgc2F2ZV9zZXR0aW5nc2Agd2l0aCB0aGUgc2FtZSBoaWRkZW4gZmllbGQgcGF0dGVybiBhcyBNQVNfT3BlblN0cmVldE1hcCBzbyAqKkhpZGUgRG9uYXRpb25zIHRhYioqIHdvcmtzLgoKIyMgMS4wLjMgLSAwNi8wNS8yMDI2CgojIyMgQWRkZWQKCi0gKipDR1NpbXBsZVBXQSBwYXJpdHk6KiogQWRtaW4gYEdldEhlYWRlckhUTUxgIG5vdyBwcmVmaXhlcyBgQ0dTaW1wbGVQV0E6OkdldEhlYWRlckhUTUwoKWAgd2hlbiB0aGF0IG1vZHVsZSBpcyBpbnN0YWxsZWQgKHNhbWUgcGF0dGVybiBhcyBgQ0dXZWJQdXNoOjpHZXRIZWFkZXJIVE1MYCksIHNvIHNlcnZpY2Ugd29ya2VyIHJlZ2VuZXJhdGlvbiBhbmQgc2NyaXB0IGNvbWJpbmVyIHJ1biBvbiBNQVMgYWRtaW4gcGFnZXMuIFdoZW4gQ0dTaW1wbGVQV0EgaXMgcHJlc2VudCwgdGhlIGV4dHJhIG1vZHVsZSBtYW5pZmVzdCBsaW5rIGFuZCB0aGVtZS1jb2xvciBhcmUgc2tpcHBlZCBieSBkZWZhdWx0IHRvIGF2b2lkIGR1cGxpY2F0ZSBtYW5pZmVzdHM7IG9wdGlvbmFsIHByZWZlcmVuY2UgZm9yY2VzIHRoZSBNQVMgbWFuaWZlc3QgaW4gYWRtaW4gaGVhZGVycy4KLSAqKkNHV2ViUHVzaCBicmlkZ2U6KiogT3B0aW9uYWwgc2V0dGluZyB0byBhbHNvIGNhbGwgYENHV2ViUHVzaDo6YnJvYWRjYXN0X21lc3NhZ2UoKWAgd2l0aCBhIGBub3RpZmljYXRpb25fbWVzc2FnZWAgYnVpbHQgZnJvbSB0aGUgc2FtZSB0aXRsZSBhbmQgYm9keSBhcyBNQVMgZGVsaXZlcmllcy4gRGlzcGF0Y2hlciBydW5zIFdlYiBQdXNoIHdoZW4gZWl0aGVyIGludGVybmFsIHB1c2ggb3IgdGhpcyBicmlkZ2UgaXMgZW5hYmxlZC4gSW50ZXJuYWwgTWluaXNobGluayBzZW5kcyBhcmUgZ2F0ZWQgYnkgdGhlIGV4aXN0aW5nIFdlYiBQdXNoIGNoYW5uZWwgY2hlY2tib3guCi0gKipJbnRlcm9wOioqIE5ldyBgbGliL21hc19uY19jZ19pbnRlcm9wLnBocGAsIFNldHRpbmdzIHNlY3Rpb24gc2hvd2luZyBydW50aW1lIGRldGVjdGlvbiBvZiBDR1NpbXBsZVBXQSBhbmQgQ0dXZWJQdXNoLCBIZWxwIEludGVyb3AgdGFiIHRleHQgZm9yIHRoZSBDRyBzdGFjay4KCiMjIDEuMC4yIC0gMDcvMDUvMjAyNgoKIyMjIEZpeGVkCgotIEhlbHAgc3ViLXRhYnMgKE92ZXJ2aWV3LCBDaGFubmVscywgSW50ZXJvcCkgbm8gbG9uZ2VyIHJldXNlIGBkaXYjcGFnZV90YWJzYCBtYXJrdXAuIENNUyBhZG1pbiBgY21zX2luaXRUYWJzKClgIGJpbmRzIGV2ZXJ5IGBkaXZgIHVuZGVyIHRoZSByZWFsIG1vZHVsZSBgI3BhZ2VfdGFic2AsIHdoaWNoIGhpZCBgI2hlbHBfY2Agd2hlbiBhIHN1Yi10YWIgd2FzIGNsaWNrZWQuIFN1Yi1uYXZpZ2F0aW9uIG5vdyB1c2VzIGA8YSByb2xlPSJ0YWIiPmAgcGx1cyBzY29wZWQgalF1ZXJ5IHNvIEhlbHAgY29udGVudCBzdGF5cyB2aXNpYmxlLgoKIyMgMS4wLjEgLSAwNy8wNS8yMDI2CgojIyMgRml4ZWQKCi0gQWRtaW4gYmFubmVyIGFuZCBtYW5pZmVzdCBpY29uIFVSTHMgbm8gbG9uZ2VyIGRvdWJsZSB0aGUgc2l0ZSByb290IHdoZW4gYEdldE1vZHVsZVVSTFBhdGgoKWAgYWxyZWFkeSByZXR1cm5zIGFuIGFic29sdXRlIFVSTC4KLSBEb25hdGlvbnMgc3BvbnNvciBsb2dvIHVzZXMgZml4ZWQgZGltZW5zaW9ucyBhbmQgYG9iamVjdC1maXRgIHNvIGxhcmdlIHNvdXJjZSBpbWFnZXMgZG8gbm90IG92ZXJmbG93IHRoZSBsYXlvdXQuCgojIyAxLjAuMCAtIDA2LzA1LzIwMjYKCiMjIyBBZGRlZAoKLSBGaXJzdCByZWxlYXNlOiBpbnRlcm5hbCBub3RpZmljYXRpb24gbG9nIHdpdGggQ01TIGNvcmUgZXZlbnQgaG9va3MgKG5ldyB1c2VyLCBtb2R1bGUgaW5zdGFsbCBvciB1cGdyYWRlIG9yIHVuaW5zdGFsbCwgb3B0aW9uYWwgbG9naW4gZmFpbHVyZSBhbmQgdXNlciBkZWxldGUpLgotIE91dGJvdW5kIGNoYW5uZWxzOiBlbWFpbCB2aWEgYGNtc19tYWlsZXJgLCBEaXNjb3JkIEluY29taW5nIFdlYmhvb2tzLCBXZWIgUHVzaCB1c2luZyBgbWluaXNobGluay93ZWItcHVzaGAgYW5kIFZBUElEIGtleXMgc3RvcmVkIGluIG1vZHVsZSBwcmVmZXJlbmNlcy4KLSBTeXN0ZW0gaGVhbHRoIGNoZWNrcyAoUEhQIHZlcnNpb24gZmxvb3IsIGZyZWUgZGlzayBwZXJjZW50LCBEQiBwaW5nKSBvbiBjcm9uIHdoZW4gZW5hYmxlZC4KLSBTaWduZWQgY3JvbiBVUkwgYWN0aW9uIGZvciBoZWFydGJlYXQgYW5kIGhlYWx0aCBldmFsdWF0aW9uLgotIE9wZXJhdG9yIFVJIGFsaWduZWQgd2l0aCBNQVNfT3BlblN0cmVldE1hcCB0YWJzIChTZXR0aW5ncywgTm90aWZpY2F0aW9ucywgSGVscCwgQWJvdXQsIENoYW5nZWxvZywgb3B0aW9uYWwgRG9uYXRpb25zKS4KLSBQcm9ncmVzc2l2ZSBXZWIgQXBwIG1hbmlmZXN0IGFjdGlvbiBhbmQgb3B0aW9uYWwgQ0dTaW1wbGVQV0Egc2VydmljZSB3b3JrZXIgbWVyZ2Ugc3VwcG9ydC4KLSBQdWJsaXNoaW5nIGhlbHBlciB0aGF0IHdyaXRlcyBgbWFzX25jX3N3LmpzYCB0byB0aGUgQ01TIGRvY3VtZW50IHJvb3QuCi0gSW50ZXJvcGVyYWJpbGl0eTogYEhvb2tNYW5hZ2VyOjpkb19ob29rKCdNQVNfTm90aWZpY2F0aW9uQ2VudGVyOjpOb3RpZnknLCBhcnJheSgkcGF5bG9hZCkpYCBhbmQgZG9jdW1lbnRlZCBtb2R1bGUgZXZlbnQgYE5vdGlmeWAuCg==]]></data>
	</file>
	<file>
	  <filename>/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInJlcXVpcmUiOiB7CiAgICAgICAgIm1pbmlzaGxpbmsvd2ViLXB1c2giOiAiXjYuMCIKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/composer.lock</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIl9yZWFkbWUiOiBbCiAgICAgICAgIlRoaXMgZmlsZSBsb2NrcyB0aGUgZGVwZW5kZW5jaWVzIG9mIHlvdXIgcHJvamVjdCB0byBhIGtub3duIHN0YXRlIiwKICAgICAgICAiUmVhZCBtb3JlIGFib3V0IGl0IGF0IGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnL2RvYy8wMS1iYXNpYy11c2FnZS5tZCNpbnN0YWxsaW5nLWRlcGVuZGVuY2llcyIsCiAgICAgICAgIlRoaXMgZmlsZSBpcyBAZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkiCiAgICBdLAogICAgImNvbnRlbnQtaGFzaCI6ICI5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYSIsCiAgICAicGFja2FnZXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJicmljay9tYXRoIiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMC45LjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGguZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiY2E1N2QxOGYwMjhmODRmNzc3YjIxNjhjZDE5MTFiMGRlZTIzNDNhZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2JyaWNrL21hdGgvemlwYmFsbC9jYTU3ZDE4ZjAyOGY4NGY3NzdiMjE2OGNkMTkxMWIwZGVlMjM0M2FlIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiY2E1N2QxOGYwMjhmODRmNzc3YjIxNjhjZDE5MTFiMGRlZTIzNDNhZSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAicGhwIjogIl43LjEgfHwgXjguMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocC1jb3ZlcmFsbHMvcGhwLWNvdmVyYWxscyI6ICJeMi4yIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjcuNS4xNSB8fCBeOC41IHx8IF45LjAiLAogICAgICAgICAgICAgICAgInZpbWVvL3BzYWxtIjogIjQuOS4yIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJCcmlja1xcTWF0aFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJiaXRyYXJ5LXByZWNpc2lvbiBhcml0aG1ldGljIGxpYnJhcnkiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiQXJiaXRyYXJ5LXByZWNpc2lvbiIsCiAgICAgICAgICAgICAgICAiQmlnSW50ZWdlciIsCiAgICAgICAgICAgICAgICAiQmlnUmF0aW9uYWwiLAogICAgICAgICAgICAgICAgImFyaXRobWV0aWMiLAogICAgICAgICAgICAgICAgImJpZ2RlY2ltYWwiLAogICAgICAgICAgICAgICAgImJpZ251bSIsCiAgICAgICAgICAgICAgICAiYnJpY2siLAogICAgICAgICAgICAgICAgIm1hdGgiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC90cmVlLzAuOS4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9CZW5Nb3JlbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9icmljay9tYXRoIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wOC0xNVQyMDo1MDoxOCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZmdyb3NzZS9waHBhc24xIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuNS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDIwNjBlZDQ1MzQ0Nzg5ZmI5ZjIxZjlmMTg2NGZjNDdiOWUzNTA3YiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2Zncm9zc2UvUEhQQVNOMS96aXBiYWxsLzQyMDYwZWQ0NTM0NDc4OWZiOWYyMWY5ZjE4NjRmYzQ3YjllMzUwN2IiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MjA2MGVkNDUzNDQ3ODlmYjlmMjFmOWYxODY0ZmM0N2I5ZTM1MDdiIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMSB8fCBeOC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwLWNvdmVyYWxscy9waHAtY292ZXJhbGxzIjogIn4yLjAiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNy4wIHx8IF44LjAgfHwgXjkuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWJjbWF0aCI6ICJCQ21hdGggaXMgdGhlIGZhbGxiYWNrIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAgICAgICAgICJleHQtY3VybCI6ICJGb3IgbG9hZGluZyBPSUQgaW5mb3JtYXRpb24gZnJvbSB0aGUgd2ViIGlmIHRoZXkgaGF2ZSBub3QgYmVlIGRlZmluZWQgc3RhdGljYWxseSIsCiAgICAgICAgICAgICAgICAiZXh0LWdtcCI6ICJHTVAgaXMgdGhlIHByZWZlcnJlZCBleHRlbnNpb24gZm9yIGJpZyBpbnRlZ2VyIGNhbGN1bGF0aW9ucyIsCiAgICAgICAgICAgICAgICAicGhwc2VjbGliL2JjbWF0aF9jb21wYXQiOiAiQkNtYXRoIHBvbHlmaWxsIGZvciBzZXJ2ZXJzIHdoZXJlIG5laXRoZXIgR01QIG5vciBCQ21hdGggaXMgYXZhaWxhYmxlIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiRkdcXCI6ICJsaWIvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRnJpZWRyaWNoIEdyb8OfZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UiLAogICAgICAgICAgICAgICAgICAgICJyb2xlIjogIkF1dGhvciIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBQSFAgRnJhbWV3b3JrIHRoYXQgYWxsb3dzIHlvdSB0byBlbmNvZGUgYW5kIGRlY29kZSBhcmJpdHJhcnkgQVNOLjEgc3RydWN0dXJlcyB1c2luZyB0aGUgSVRVLVQgWC42OTAgRW5jb2RpbmcgUnVsZXMuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiREVSIiwKICAgICAgICAgICAgICAgICJhc24uMSIsCiAgICAgICAgICAgICAgICAiYXNuMSIsCiAgICAgICAgICAgICAgICAiYmVyIiwKICAgICAgICAgICAgICAgICJiaW5hcnkiLAogICAgICAgICAgICAgICAgImRlY29kaW5nIiwKICAgICAgICAgICAgICAgICJlbmNvZGluZyIsCiAgICAgICAgICAgICAgICAieC41MDkiLAogICAgICAgICAgICAgICAgInguNjkwIiwKICAgICAgICAgICAgICAgICJ4NTA5IiwKICAgICAgICAgICAgICAgICJ4NjkwIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3RyZWUvdjIuNS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiYWJhbmRvbmVkIjogdHJ1ZSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMi0xMi0xOVQxMTowODoyNiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9ndXp6bGUiLAogICAgICAgICAgICAidmVyc2lvbiI6ICI3LjEwLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYjUxYWM3MDdjZmE0MjBiN2JmZDRlNGQ1ZTUxMGJhODAwOGU4MjJiNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUvemlwYmFsbC9iNTFhYzcwN2NmYTQyMGI3YmZkNGU0ZDVlNTEwYmE4MDA4ZTgyMmI0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYjUxYWM3MDdjZmE0MjBiN2JmZDRlNGQ1ZTUxMGJhODAwOGU4MjJiNCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9wcm9taXNlcyI6ICJeMi4zIiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjIuOCIsCiAgICAgICAgICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiOiAiXjIuMiB8fCBeMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicHJvdmlkZSI6IHsKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQtaW1wbGVtZW50YXRpb24iOiAiMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiYmFtYXJuaS9jb21wb3Nlci1iaW4tcGx1Z2luIjogIl4xLjguMiIsCiAgICAgICAgICAgICAgICAiZXh0LWN1cmwiOiAiKiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlL2NsaWVudC1pbnRlZ3JhdGlvbi10ZXN0cyI6ICIzLjAuMiIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIl4xLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC41LjM5IHx8IF45LjYuMjAiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiXjEuMSB8fCBeMi4wIHx8IF4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIlJlcXVpcmVkIGZvciBDVVJMIGhhbmRsZXIgc3VwcG9ydCIsCiAgICAgICAgICAgICAgICAiZXh0LWludGwiOiAiUmVxdWlyZWQgZm9yIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIChJRE4pIHN1cHBvcnQiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiUmVxdWlyZWQgZm9yIHVzaW5nIHRoZSBMb2cgbWlkZGxld2FyZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJiYW1hcm5pLWJpbiI6IHsKICAgICAgICAgICAgICAgICAgICAiYmluLWxpbmtzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHcmFoYW0gQ2FtcGJlbGwiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJoZWxsb0BnamNhbXBiZWxsLmNvLnVrIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiSmVyZW15IExpbmRibG9tIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiamVyZW1lYW1pYUBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vamVyZW1lYW1pYSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR2VvcmdlIE1wb25vcyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImdtcG9ub3NAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dtcG9ub3MiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBOeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ0b2JpYXMubnlob2xtQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1hcmsuc2FnaWthemFyQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYWdpa2F6YXJtYXJrIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgU2NodWx0emUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3ZWJtYXN0ZXJAdHViby13b3JsZC5kZSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHdXp6bGUgaXMgYSBQSFAgSFRUUCBjbGllbnQgbGlicmFyeSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJjbGllbnQiLAogICAgICAgICAgICAgICAgImN1cmwiLAogICAgICAgICAgICAgICAgImZyYW1ld29yayIsCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cCBjbGllbnQiLAogICAgICAgICAgICAgICAgInBzci0xOCIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInJlc3QiLAogICAgICAgICAgICAgICAgIndlYiBzZXJ2aWNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvdHJlZS83LjEwLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9ndXp6bGVodHRwL2d1enpsZSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidGlkZWxpZnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjUtMDgtMjNUMjI6MzY6MDErMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogImd1enpsZWh0dHAvcHJvbWlzZXMiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjMuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQ4MTU1N2IxMzBlZjM3OTBjZjgyYjcxMzY2N2I0MzAzMGRjOWM5NTciCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvcHJvbWlzZXMvemlwYmFsbC80ODE1NTdiMTMwZWYzNzkwY2Y4MmI3MTM2NjdiNDMwMzBkYzljOTU3IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDgxNTU3YjEzMGVmMzc5MGNmODJiNzEzNjY3YjQzMDMwZGM5Yzk1NyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiYmFtYXJuaS9jb21wb3Nlci1iaW4tcGx1Z2luIjogIl4xLjguMiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl44LjUuNDQgfHwgXjkuNi4yNSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJiYW1hcm5pLWJpbiI6IHsKICAgICAgICAgICAgICAgICAgICAiYmluLWxpbmtzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFxQcm9taXNlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImhlbGxvQGdqY2FtcGJlbGwuY28udWsiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgTnlob2xtIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAidG9iaWFzLm55aG9sbUBnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vTnlob2xtIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgU2NodWx0emUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3ZWJtYXN0ZXJAdHViby13b3JsZC5kZSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJHdXp6bGUgcHJvbWlzZXMgbGlicmFyeSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJwcm9taXNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcy9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Byb21pc2VzL3RyZWUvMi4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9ndXp6bGVodHRwL3Byb21pc2VzIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNS0wOC0yMlQxNDozNDowOCswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wc3I3IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMi45LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjdkMGVkNDJmMjhlNDJkNjEzNTJhN2E3OWRlNjgyZTVlNjdmZWM4ODQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvcHNyNy96aXBiYWxsLzdkMGVkNDJmMjhlNDJkNjEzNTJhN2E3OWRlNjgyZTVlNjdmZWM4ODQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3ZDBlZDQyZjI4ZTQyZDYxMzUyYTdhNzlkZTY4MmU1ZTY3ZmVjODg0IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiLAogICAgICAgICAgICAgICAgInBzci9odHRwLWZhY3RvcnkiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4xIHx8IF4yLjAiLAogICAgICAgICAgICAgICAgInJhbG91cGhpZS9nZXRhbGxoZWFkZXJzIjogIl4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJwcm92aWRlIjogewogICAgICAgICAgICAgICAgInBzci9odHRwLWZhY3RvcnktaW1wbGVtZW50YXRpb24iOiAiMS4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlLWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICAgICAgICAgImh0dHAtaW50ZXJvcC9odHRwLWZhY3RvcnktdGVzdHMiOiAiMC45LjAiLAogICAgICAgICAgICAgICAgImpzaHR0cC9taW1lLWRiIjogIjEuNTQuMC4xIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguNS40NCB8fCBeOS42LjI1IgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJsYW1pbmFzL2xhbWluYXMtaHR0cGhhbmRsZXJydW5uZXIiOiAiRW1pdCBQU1ItNyByZXNwb25zZXMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYmFtYXJuaS1iaW4iOiB7CiAgICAgICAgICAgICAgICAgICAgImJpbi1saW5rcyI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgImZvcndhcmQtY29tbWFuZCI6IGZhbHNlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcUHNyN1xcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHcmFoYW0gQ2FtcGJlbGwiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJoZWxsb0BnamNhbXBiZWxsLmNvLnVrIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR2VvcmdlIE1wb25vcyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImdtcG9ub3NAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dtcG9ub3MiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBOeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ0b2JpYXMubnlob2xtQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1hcmsuc2FnaWthemFyQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zYWdpa2F6YXJtYXJrIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgU2NodWx0emUiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ3ZWJtYXN0ZXJAdHViby13b3JsZC5kZSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm1hcmsuc2FnaWthemFyQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc2FnaWthemFybWFyay5odSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlBTUi03IG1lc3NhZ2UgaW1wbGVtZW50YXRpb24gdGhhdCBhbHNvIHByb3ZpZGVzIGNvbW1vbiB1dGlsaXR5IG1ldGhvZHMiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAibWVzc2FnZSIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAgICAgInJlc3BvbnNlIiwKICAgICAgICAgICAgICAgICJzdHJlYW0iLAogICAgICAgICAgICAgICAgInVyaSIsCiAgICAgICAgICAgICAgICAidXJsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy90cmVlLzIuOS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3QvZ3V6emxlaHR0cC9wc3I3IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNi0wMy0xMFQxNjo0MTowMiswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAibWluaXNobGluay93ZWItcHVzaCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInY2LjAuNyIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMjNhNzhiODU4NWJkY2VjYWEzMjNmMWRkMWFjZGM1NDhlMjg4OTJmZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL3ppcGJhbGwvMjNhNzhiODU4NWJkY2VjYWEzMjNmMWRkMWFjZGM1NDhlMjg4OTJmZSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjIzYTc4Yjg1ODViZGNlY2FhMzIzZjFkZDFhY2RjNTQ4ZTI4ODkyZmUiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNy4wLjF8XjYuMiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4yIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LWtleS1tZ210IjogIl4yLjAiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIjogIl4yLjAiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYSI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIl4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJmcmllbmRzb2ZwaHAvcGhwLWNzLWZpeGVyIjogIl4yLjE0IiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4iOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC4wfF45LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIk1pbmlzaGxpbmtcXFdlYlB1c2hcXCI6ICJzcmMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJMb3VpcyBMYWdyYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImxhZ3JhbmdlLmxvdWlzQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiV2ViIFB1c2ggbGlicmFyeSBmb3IgUEhQIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJQdXNoIEFQSSIsCiAgICAgICAgICAgICAgICAiV2ViUHVzaCIsCiAgICAgICAgICAgICAgICAibm90aWZpY2F0aW9ucyIsCiAgICAgICAgICAgICAgICAicHVzaCIsCiAgICAgICAgICAgICAgICAid2ViIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL2lzc3VlcyIsCiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocC90cmVlL3Y2LjAuNyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0xMS0yMlQxNzozNjowMSswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicHNyL2h0dHAtY2xpZW50IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1jbGllbnQuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYmI1OTA2ZWRjMWMzMjRjOWEwNWFhMDg3M2Q0MDExNzk0MWU1ZmE5MCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocC1maWcvaHR0cC1jbGllbnQvemlwYmFsbC9iYjU5MDZlZGMxYzMyNGM5YTA1YWEwODczZDQwMTE3OTQxZTVmYTkwIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYmI1OTA2ZWRjMWMzMjRjOWEwNWFhMDg3M2Q0MDExNzk0MWU1ZmE5MCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIl43LjAgfHwgXjguMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4wIHx8IF4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXENsaWVudFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBjbGllbnRzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtY2xpZW50IiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgImh0dHAtY2xpZW50IiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci0xOCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtY2xpZW50IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIzLTA5LTIzVDE0OjE3OjUwKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJwc3IvaHR0cC1mYWN0b3J5IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1mYWN0b3J5LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjJiNDc2NWZkZGZlM2I1MDhhYzYyZjgyOWU4NTJiMTUwMWQzZjZlOGEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2h0dHAtZmFjdG9yeS96aXBiYWxsLzJiNDc2NWZkZGZlM2I1MDhhYzYyZjgyOWU4NTJiMTUwMWQzZjZlOGEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjEiLAogICAgICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMCB8fCBeMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQU1ItMTc6IENvbW1vbiBpbnRlcmZhY2VzIGZvciBQU1ItNyBIVFRQIG1lc3NhZ2UgZmFjdG9yaWVzIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImZhY3RvcnkiLAogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiLAogICAgICAgICAgICAgICAgInBzciIsCiAgICAgICAgICAgICAgICAicHNyLTE3IiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICAgICAicmVzcG9uc2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWZhY3RvcnkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjQtMDQtMTVUMTI6MDY6MTQrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBzci9odHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2h0dHAtbWVzc2FnZS96aXBiYWxsLzQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMiB8fCBeOC4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBIVFRQIG1lc3NhZ2VzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZSIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJodHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAgICAgInBzciIsCiAgICAgICAgICAgICAgICAicHNyLTciLAogICAgICAgICAgICAgICAgInJlcXVlc3QiLAogICAgICAgICAgICAgICAgInJlc3BvbnNlIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlL3RyZWUvMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIzLTA0LTA0VDA5OjU0OjUxKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJyYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4zIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxMjBiNjA1ZGZlYjk5NjgwOGMzMWI2NDc3MjkwYTcxNGQzNTZlODIyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvemlwYmFsbC8xMjBiNjA1ZGZlYjk5NjgwOGMzMWI2NDc3MjkwYTcxNGQzNTZlODIyIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTIwYjYwNWRmZWI5OTY4MDhjMzFiNjQ3NzI5MGE3MTRkMzU2ZTgyMiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS42IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwLWNvdmVyYWxscy9waHAtY292ZXJhbGxzIjogIl4yLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNSB8fCBeNi41IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJzcmMvZ2V0YWxsaGVhZGVycy5waHAiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJSYWxwaCBLaGF0dGFyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAicmFscGgua2hhdHRhckBnbWFpbC5jb20iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIHBvbHlmaWxsIGZvciBnZXRhbGxoZWFkZXJzLiIsCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3RyZWUvZGV2ZWxvcCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAxOS0wMy0wOFQwODo1NTozNyswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMC40IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNzc1MmNlOTMxZWMyODVkYTRlZDFmNGM1YWEyN2U0NWUwOTdiZTYxZCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL1Nwb21reS1MYWJzL2Jhc2U2NHVybC96aXBiYWxsLzc3NTJjZTkzMWVjMjg1ZGE0ZWQxZjRjNWFhMjdlNDVlMDk3YmU2MWQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3NzUyY2U5MzFlYzI4NWRhNGVkMWY0YzVhYTI3ZTQ1ZTA5N2JlNjFkIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHBzdGFuL2V4dGVuc2lvbi1pbnN0YWxsZXIiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuIjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tYmViZXJsZWktYXNzZXJ0IjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tZGVwcmVjYXRpb24tcnVsZXMiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1waHB1bml0IjogIl4wLjExfF4wLjEyIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4tc3RyaWN0LXJ1bGVzIjogIl4wLjExfF4wLjEyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJCYXNlNjRVcmxcXCI6ICJzcmMvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQmFzZSA2NCBVUkwgU2FmZSBFbmNvZGluZy9EZWNvZGluZyBQSFAgTGlicmFyeSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImJhc2U2NCIsCiAgICAgICAgICAgICAgICAicmZjNDY0OCIsCiAgICAgICAgICAgICAgICAic2FmZSIsCiAgICAgICAgICAgICAgICAidXJsIgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJpc3N1ZXMiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybC9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL3RyZWUvdjIuMC40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjAtMTEtMDNUMDk6MTA6MjUrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuNS40IiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvc3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMvemlwYmFsbC82MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNjA1Mzg5ZjJhN2U1NjI1ZjI3M2I1Mzk2MGRjNDZhZWFmOWM2MjkxOCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgInRoYW5rcyI6IHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2NvbnRyYWN0cyIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9jb250cmFjdHMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1haW4iOiAiMi41LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbi5waHAiCiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInBAdGNod29yay5jb20iCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlN5bWZvbnkgQ29tbXVuaXR5IiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbS9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJBIGdlbmVyaWMgZnVuY3Rpb24gYW5kIGNvbnZlbnRpb24gdG8gdHJpZ2dlciBkZXByZWNhdGlvbiBub3RpY2VzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20iLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzL3RyZWUvdjIuNS40IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vc3ltZm9ueS5jb20vc3BvbnNvciIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiY3VzdG9tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mYWJwb3QiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3Qvc3ltZm9ueS9zeW1mb255IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNC0wOS0yNVQxNDoxMToxMyswMDowMCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1jb3JlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1jb3JlLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjUzYmViNmY2YzFlZWM0ZmE5M2MxYzNlNWQ5ZTU3MDFlNzFmYTE2NzgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93ZWItdG9rZW4vand0LWNvcmUvemlwYmFsbC81M2JlYjZmNmMxZWVjNGZhOTNjMWMzZTVkOWU1NzAxZTcxZmExNjc4IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNTNiZWI2ZjZjMWVlYzRmYTkzYzFjM2U1ZDllNTcwMWU3MWZhMTY3OCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiYnJpY2svbWF0aCI6ICJeMC44LjE3fF4wLjkiLAogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJmZ3Jvc3NlL3BocGFzbjEiOiAiXjIuMCIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4yIiwKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9iYXNlNjR1cmwiOiAiXjEuMHxeMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiY29uZmxpY3QiOiB7CiAgICAgICAgICAgICAgICAic3BvbWt5LWxhYnMvam9zZSI6ICIqIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXENvcmVcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yay9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb3JlIGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWNvcmUvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAidGltZSI6ICIyMDIxLTAzLTE3VDE0OjU1OjUyKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LWtleS1tZ210IiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1rZXktbWdtdC96aXBiYWxsLzBiMTE2Mzc5NTE1NzAwZDIzN2I0ZTVkZTg2ODc5MDc4Y2NiMDlkOGEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtZmFjdG9yeSI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LWNvcmUiOiAiXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LXNvZGl1bSI6ICJTb2RpdW0gaXMgcmVxdWlyZWQgZm9yIE9LUCBrZXkgY3JlYXRpb24sIEVkRFNBIHNpZ25hdHVyZSBhbGdvcml0aG0gYW5kIEVDREgtRVMga2V5IGVuY3J5cHRpb24gd2l0aCBPS1Aga2V5cyIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvaHR0cGx1ZyI6ICJUbyBlbmFibGUgSktVL1g1VSBzdXBwb3J0LiIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIlRvIGVuYWJsZSBKS1UvWDVVIHN1cHBvcnQuIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIlRvIHVzZSBFQyBrZXkgYW5hbHl6ZXJzLiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiSm9zZVxcQ29tcG9uZW50XFxLZXlNYW5hZ2VtZW50XFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJLZXkgTWFuYWdlbWVudCBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC90cmVlL3YyLjIuMTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vRmxvcmVudE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwYXRyZW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiYWJhbmRvbmVkIjogIndlYi10b2tlbi9qd3QtbGlicmFyeSIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMTdUMTQ6NTU6NTIrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDE1YjU5YWFmM2I2ZThmYjlmNWJkMTMzODg0NWI3NDY0YzdkODEwMyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlL3ppcGJhbGwvMDE1YjU5YWFmM2I2ZThmYjlmNWJkMTMzODg0NWI3NDY0YzdkODEwMyIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjAxNWI1OWFhZjNiNmU4ZmI5ZjViZDEzMzg4NDViNzQ2NGM3ZDgxMDMiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3QtY29yZSI6ICJeMi4xIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiOiAiRUNEU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lZGRzYSI6ICJFZERTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWV4cGVyaW1lbnRhbCI6ICJFeHBlcmltZW50YWwgU2lnbmF0dXJlIEFsZ29yaXRobXMiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1obWFjIjogIkhNQUMgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1ub25lIjogIk5vbmUgU2lnbmF0dXJlIEFsZ29yaXRobSIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLXJzYSI6ICJSU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcU2lnbmF0dXJlXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2lnbmF0dXJlIGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS90cmVlL3YyLjIuMTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vRmxvcmVudE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwYXRyZW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiYWJhbmRvbmVkIjogIndlYi10b2tlbi9qd3QtbGlicmFyeSIsCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMDFUMTk6NTU6MjgrMDA6MDAiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjIuMTEiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0NGNiYmI0Mzc0YzUxZjFjZjQ4YjgyYWU3NjFlZmJmMjRlMWE4NTkxIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhL3ppcGJhbGwvNDRjYmJiNDM3NGM1MWYxY2Y0OGI4MmFlNzYxZWZiZjI0ZTFhODU5MSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQ0Y2JiYjQzNzRjNTFmMWNmNDhiODJhZTc2MWVmYmYyNGUxYTg1OTEiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1vcGVuc3NsIjogIioiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIjogIl4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcU2lnbmF0dXJlXFxBbGdvcml0aG1cXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yay9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFQ0RTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAidGltZSI6ICIyMDIxLTAxLTIxVDE5OjE4OjAzKzAwOjAwIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIiwKICAgICAgICAgICAgInZlcnNpb24iOiAidjIuMi4xMSIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC11dGlsLWVjYy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC11dGlsLWVjYy96aXBiYWxsLzkxNWYzZmRlODZmNTIzNmMyMDU2MjBkNjExNzdiOWVmNDM4NjNkZWIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWJjbWF0aCI6ICJHTVAgb3IgQkNNYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBpbXByb3ZlIHRoZSBsaWJyYXJ5IHBlcmZvcm1hbmNlIiwKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcQ29yZVxcVXRpbFxcRWNjXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmsvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRUNDIFRvb2xzIGZvciB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXV0aWwtZWNjL3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMy0yNFQxMzozNToxNyswMDowMCIKICAgICAgICB9CiAgICBdLAogICAgInBhY2thZ2VzLWRldiI6IFtdLAogICAgImFsaWFzZXMiOiBbXSwKICAgICJtaW5pbXVtLXN0YWJpbGl0eSI6ICJzdGFibGUiLAogICAgInN0YWJpbGl0eS1mbGFncyI6IHt9LAogICAgInByZWZlci1zdGFibGUiOiBmYWxzZSwKICAgICJwcmVmZXItbG93ZXN0IjogZmFsc2UsCiAgICAicGxhdGZvcm0iOiB7fSwKICAgICJwbGF0Zm9ybS1kZXYiOiB7fSwKICAgICJwbHVnaW4tYXBpLXZlcnNpb24iOiAiMi45LjAiCn0K]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/banner.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAlgAAAB4CAYAAAAuVYzDAAAweklEQVR4nO3dd1xT1/sH8E/YK+wte6iAIksFpYgMwdk66889W2dttepX7bJDbW1tHa3WqrVqq1bFvbfixAEqKkNAZG8k7JHfH8HAJQlJ8AaUPu/Xq5WcnHvvk3tzb56cc+4JB71m8CEWR8JDTtOKzDKOhPLGZeKKxRVyxFaUEJuUuiJPt0Jsze4zSbE1U1eW1yDLvmA7NrH7Qp7YWvBek+l4shybLO9tmWOT8b0m9/FkITY2zzvGn6/53mY7NjbPO4mxKeo6KkdsbJ53MsWmqGu8lNja5TVeTP12f42vL3/br/EcDpTErIEQQgghhLwGSrAIIYQQQlhGCRYhhBBCCMsowSKEEEIIYRklWIQQQgghLKMEixBCCCGEZZRgEUIIIYSwjBIsQgghhBCWUYJFCCGEEMIySrAIIYQQQlhGCRYhhBBCCMsowSKEEEIIYRklWIQQQgghLKMEixBCCCGEZZRgEUIIIYSwjBIsQgghhBCWUYJFCCGEEMIySrAIIYQQQlhGCRYhhBBCCMsowSKEEEIIYRklWIQQQgghLKMEixBCCCGEZZRgEUIIIYSwjBIsQgghhBCWUYJFCCGEEMIySrAIIYQQQlhGCRYhhBBCCMsowSKEEEIIYRklWIQQQgghLKMEixBCCCGEZZRgEUIIIYSwjBIsQgghhBCWqbR1AKR9i94wHd0czISPz0enIGTZ32LrOloYYOFwXwR1s4WVsS401RrenmuPRKGIV4kvx/gzlrGYsB5ZhaWKCb6VRK8Zi252xsLH5x+8QMhXB9swIkIIIa+r1RKsLYvHYOogP5Hyh0kZcJ+0SuJyGmqqeLH/KxjraYs8t2TzMaz6+3yz2zXU1ULmga+gpqos8lznCd8j7kWuDNEDRrpamBzeHeE9OsHNzgwGXE3w+UBhSTmKSsuRkfcSj1Ky8DApG1ceJCMhPU+m9Ta1Zf5QTO3vwyirqqlF58m/IDm7UKR+iJcjzq6axCib/NNBbD9zv0Xbbys+zha4uHIsdDTV2joUokA6Gqp4388Bfd0s4O1gDBOuJvS0VFFZU4ec4nI8yShC5NNsHLqTiifpRW0dLiGEtFibt2B1dbBEkFdHXLiXIPb5cf28xSZXshod5Ck2uQKACWE+WLblpNR1DPR1wV//ex9Guloiz1kYcWFhxIWLjSmCvZwAAL8evoE56w63OOam1FSUsXxiMCb8sJ+1dbbEtHBP/DFvMKPMeeoGJGaKJn7yWjejX7tJrqaFdsEfs0IZZc6ztiMxs6htAnoDKCtxsHiIBxYOdoe+tuhxVlFWgr0pF/amXAzwsMaK0T6YvOkqtl8Wf114E0wLdMIfU3syypwXHkVidkkbRUQIeZO8EWOw5o3sI/m5EZKfk8XEMB+Jz40P9YYSh9Ps8t4drRDx9QSxyVVrGhvcDV3szKRXfAsZ62rBr3MHRtnFB89hNm4tOINWgjNoJT7efK6NoiOvS1dTDec/G4jvRvuITa4k0dFQVWBUhBCiWG3eggUAg/y6wMHSCEkZ+YzyEO+O6GJv0eL1drI2RQ8XG4nPW5vqo6+nE85LaD0DgG+nhENNpaEFrLSiCgs3Hcexm0+RU8SDjqYaXG3N0L9HJ0wM84alkW6L422OEoeD7yaH4t0vdylk/YriMeePhgcc4f8YrE24ImV7rjxGTlEZo+yrf67iq38iG62rffCY33hMWjt6YQBUlZVwYH4I+rgyz+Oyyhr8cvIR9l5PQmJ2CZSUOLAx1kawmyVmhrrApYN+2wRMCCEseSMSLCUlDuYOD8An65kDez8eGfha650Y3p3xuLqmFsWlFYwuxwlh3hITLDUVZQTVd/u98u3O89h45AZQ3/JVWV2Dqw+TcfVhMr7YfgZT+neHqb7Oa8UtyRC/zvBztcGNx6kKWX9bUVcVfRuWVVa3QSSEbXPC3RDSldk6mV9SieBvjyPmeUF9CQfgAI/TivA4rQgbzjzG1MBOqKypa/2ACSGEJW2aYN2MTYGvmx0AYMoAX3yx9QRKyioBAM5WJhjg6yKseyM2BX71dWXB4XAwNsSLUXY6Kg7Pswsx+73ewrLhAe6Y/ctB8MorRdZhaqDDaL0CgNScIonbrKmtw+Zjt2WOsSVWTA5F34VbW7y8vo4GpoR5oZ+3I7ramcGQqwk++MgrLkP0syyciErAzvMPUFrRkODsWTIC7we4iV1fwtY5jMexz3PRZeYm4ePm7iL8dJgvVk8NFrvenQuGYOeCIVJfj6S7CDXUVPD+O50xsLsTvB3NYKKnBVVlJaQX8JCYUYiDNxOw/1o88kvKhctwNdXg79oBgV2s4dvJEo7m+jDiakBFWQm8imq8yCvBvWfZ+PdaHE7cTRHZ5p5PB+B9/05i40z4bRLjcWxqPrp8LGiNlOcuQn1tdUwJckU/Dxt0tTGCIVcDfD4feS8rEJ2SixP3nmPn5XiUSkhQo1ePYm7rYRpCvj6KMA9rzAh1g18ncxjqqKOAV4krjzOw4uB9RKe07IYNdVVlLB3qIVL+4ZbIRsmVKD4f2HIxXuLzXA1VTOrjhPBuVuhmYwhDHXXw+XxkFJXh6tNsbL2YgGsJOWKXjV45GN1sDIWPz8dmImTlWYS5W2JGcEf4OZnAUEcNBbwqXHmajRVHHiE6lTnGcM9sf7zvayt2/QmrmWMUY9OL0WXJCdH433FAeFdzdLMxgKG2GvgAMgrLcTU+F1svJ+FaouR9Hv1NP3Sz1m94DY9zELL6MhxMtLF0kAtC3czQwUATF5/mInT1FYnrIYQoVpsmWL/su4Q9bpMAALraGpjUvyfWHxBcEOaN7ANOo/FRv+y7LFeCFeTpBBszA0bZngv3RRIsbQ01DA/oir9O3xFZR1V1rUjZR8N64/y9BGQXtd7UAKfvJCDMxxkAENjNHmE+zjh9R/7Bv6MDu2LTR4Ogp60h8py1iR6sTfQw2LcTvhwXiIk/HsKZu89eO/a20M/THtvm9UcHI9GuR0dzfTia6yPMyx6hHnYYsarhZoSNM0Mxto+LyDKAILHR11ZHV1tjTAxyw9no5xi26gh4Fa3X0jbavyM2fdgXelqi45isjXVgbayDwT72+HJUD0xcfw5nYl5IXae6qjJ2zg3GuICOjHIzPU2M9HPEYB87DFp1Aucfpssdbx8XCxhzme+1pxlFOHArWe51vTKsuy3+mN4bhjrqIs85menCyUwXk/s446+rifhw601UijmHG1NXUcbOmf4Y19uBUW6mp4GRPW0x2MsKg366iPOxWS2OmRG/jzX+mNIDhmLGojmZ6cDJTAeT37HHX5Ep+HB7lMyteD52Bji1IABGOg3rbV+dzYS8fdp0kPuhqw+QktXwTXbu8ABwOBzoaWtiYngPYfnVB0m4Fy/9w6KxCWHM7sHyymocvhaLa49S8KJJK5SkgfA5RTyk5xUzynq62CBl91Ic/W4SFr3fByFeztDX0ZQrNnkt3XYGfD5f+HjFlFBG8imLCSEe2L1khNjkqilzAx0cWz4GoV4OUuu+ad7zdcaJr0aKTa7YFOphi40zQxS6jcYmBHbG7k/CxCZXTZnra+HY0kEI7WYtta5/ZwuR5KoxDVVlbJ0RCGUl+T+um467AoBT0Wlyr+eV0b0csP/jILHJVVMT33HC7jkBkHaa+HcyFUmuGtNQVcbWaX4tev1Njfa1xf45/mKTq6Ym+tth90w/qfEDAFdDBf/O8mMkVwBkWpYQojht2oJVW1eHDQeu4MfZ7wF41S3oChdbM+hoNlxEf9l3Sa71amuoYXgfd0bZ8ZtPhN2A/16KxoJRgcLnAj0cYWOqj9QcZjIFAOsPXsOq6QMYZRpqKhjk64JB9V2YdXw+Yp5lYt/lB/j96G0UlJSJrOd1PEjKwu6LDzAmqBsAwMvJEiMDuuDfy49kWt7MQAe/zhnEKOOVV2Hm+mM4dOMpVJWVMS7YHWs+CIOKsiDnVlVRwrb578J56nqMXrkfo1fux7RwL1anafgx4iZ+jLgJ385WuPHTRMZz4386gl0XYxllX415R2Si0caMuJr48+OBIh+Guy7FYs2hO3j8Ig+6WuqwN9NHSDdbmOoz7wwt5FVg58XHOHQrAQkZhcguKkMhrxK6WuroZm+Cr/7PD++4WgnrjwnojCU7IpGWL7gtf/SPJzD6xxOY1k+WaRo4MjcxmOlr4dfpgYwyXkU1Zv5+CYduJ0FVRQnj+nTCmon+DcdPWQnbZgXBec4uVEhpxSngVWL6pks4FZ0KZws97PooBF2sG7rRbE246N3JHFeeyNeKY2kgeudtXKboOSYLE10NbJ7Wm5E0FJVV4ZMdt3H0XirUVVUwK7Qzlr3XcN4P9bHBpAAn/Hk5sdl1F/AqMX3rTZyKyYCzORe7Zvmji5W+8HlbY2307miCK08F3Y6jf43E6F8jZZymQRCwCVcdm6d0F43/n/s4ej8D6ipKmBXsjGVDXBvi97bCJH97/Hk1pdn4ezgYgs8Hvj36BJsvJaOwtAq+joYIdWufdx0T8rZo82kathy7wRj/NP/9QMwZ9o7wcUpWAQ5HypZIvDK8jzu0NZjf5vZcuN/o72jGcxwOB+P7iW/FWr3nEnaevdfs9pQ4HHg6WWLF1HA827UQg/3EdzO9js+3n0d1TcMH5TcTg4UfptJMDfcSmWNq2fbz2HUhBrzyKhTyyrH+8C1sOMIcP2ZlrIthvdl/LYoytZ879LWZrRubTkZj/JrjuJ+UjcrqWuQWl+F2fCZW7LuJj/+4wKg7d/N5TPjlBCJuJODh8zzkFJehurYO+SXluPAgFdM2nGHUV+JwEODGHMCtkNcV7CoyZcGyf25g15U48CqqUcirxPoTD7Dh5ENGHSsjHQzzdZS6/o+2XUXErSSUVdYgJiUfC3feEKnTpdG4JVmJm5KhpV2qU/t2BFeTuQ+m/3EN268kIJ9XiYzCMnz27z3sv5XCqLN4cBep6/5oZxQiolJRVlWDmNRCLPznrkidxglXS0zt4whuk2M4fVsUtl9NFsRfVI7PDjzE/ihmS/3igbKdf98efYzPIx7hRUEZeJU1OPc4B4v3PZS+ICFEYdo8wSouLcdfpxo+2IO8OsLWvOFiviHiKmrr5LubaGKT7sGSskocv/lY+PhO3AskNplpfUKYt9h11fH5mLByD4Ys247LMUmMrjpx9HU0se/LsXC1NZUrZmmSMguw5WTDhb+jlTEmh3k1s0SDvt3sRcr+FDPT+9bToolkoLud7EG2sRAPO8ZjPh9YvueaXOvo4WyBX6YF4daPY5GzYxYq9n8M/uEF4B9egLjfpojUtzRUzB2jjfXtYiVS9ueFJyJlWy88FikLlJIAFpVWYs81ZgtPYtZLkXr6WtK75UTXXSVS1tK5rYLcmN2NBbxKRNx+LlLv+H1mF2QnCz3YmUg+RkVlVdhzgzkmTNxEofoydM02J8iV2ZpUUFqFiDui3aXHYzIZjzuZc2Fn3PxEy9W1dVhzWvJNAYSQtvFGTNOwdt8lzHrPX2RcEa+8EluOiX6bbo61qT4CPZhTKxy+9ggVVTWMsr0Xo7FsXMMYmo5WJvBzs8WNx6IXbQA4euMxjt54DBN9bfTp5gBfV1v4udqiR2drkZYkdVUVzH7XD7PXszebOwB8/fcFTOznCS11wYfUF+P6YubaI1KXazo3V25xKUrE3DWZnFUkUqbosUxs6mDE/CDNLOTJ/DuFHA7w24xQzAjvJtc2tVthMkxLQ+YHbO7LcpSUV6FpH2Nytmhi1MGw+Q/npOyXqK1jfmkob3KuAIKpVOSVUSjaVd7JQk/u9QBABwPm6zDUUUft35NkWtbFUg8puTyxzyXl8Opff8PrK68S7VKVNiGxNB0MmOM0DbXVULv9fZmWdbHURUqe5Pfx08wSFJXRtCaEvGneiAQrIS0XJ24+xkA/5lQA20/eRnFphVzrGt/PR+TDYFyoN8aFim+hamxCP2+JCdYruUWl2H/5IfZfEXRbGulqYdX0/pg2oAejnqcz+11HWQU8rD14HUtGC2a3tzLWxewhPaUs9Xp3E0lpsHujcF7jlU4O7ip3ciXYpuIp8vgVloom2k0Trpa6/DhTZJqGcA8rfLJD/nW9Tn5jxJXc+qbI19+YvDelNNZ08HpT+TzRlkJCSNtr8y7CV37Zd5nxmM/nY90B+edwkTSWShbv9/UQO+llc/JflmHmLwdR3mTeIVUZx0fJ64d/r6KQ1zB3U3h3Z6nLpOczWzZM9LTB1RT90LE31xcpyyh4e35X7dVg81csDHRgbiDb71iOC3RlPK6qqcXs38/BYtImqAxdA867P8Fm2mbWYpVHegGz9cJEVxNcMb/baG8m+isCGTK24CnClSeZyCthfkHqbKmP4T1Fu6ylSS9o+Y0jKkptf5lLF9OaJysVKa2HikgICSGv741owQKAc3fi8Cg5U/jTOMdvPEZCWq5c6+jpYovONi0f+2TA1cSQXq7Yd/lBQ1w/foDVey/jzJ0EieOvtNTVoNpkQtL0PNHuGjYU8Srw/d6rWDW1n8zLXIxJRognc7Dz5H6eWHf4JqNsqpgxXZcepAj/rhYzJ4+6hB/SbgvnolMQ2mgcFocDfP5+L8zedFbqslZNukKjErLw24loNG4/GuAtW2LA9n66+CgNIe7MKRcmB7lg3fEHjLKpQcwkEQAuxco/fxVbKqprsfJQNH4a78so/32aPxKziiVONsrhAFMCO6Kyuha7IgVzsV2IzURIV0thnXxeJWzn/ovSylfdmU2SEAk/y8Sm6loxx1lFfDJ34XE2QtzMhY/zeZWwnX+0UfwAI15G6DTfAiFvo7b/atdI14mrwAmYB07APAz+n/ytBROazGfF5/PRYcRycAIXgNO36X+fQi10MV6WMb9hN50Ty7+rPU59Pw3Pdi3Gimn9Ed6jEyyNdKGmogx9HU306eaAYysmiYzDOntX/olAZbXu0A1k5MvesrT11D2UVjC7Eb6dFISxQYK7LfV1NDBnSA/MGcLs5kzLe4mIaw2DqfNein4LnxDcDbotGACtCNvOPkBRky6fWQM8sf3jAfBwMIWaijKMuJrwdjLD8jG9sf7Dhlnkc4qZr83L0QzD/Jyhpa4KcwNtzB3kiTVTAmWKI+9luUjZhEAX6LZwoPTW849FZmb/9v98MTagE7TVVaGvrY45/d0xp39XRp20fB4ibrbtZLHrT8biYmwGo8yIq47rXw/Bt+/7oKuNITTVlKGtrgJXK33MDXPFox+GY8sH/ow7QrddikdJecM+MNJRx6XP++NdbxuY6WlCVVkJBtpq6GShh0BXcywe3BXHFwZj16x3oCh5JaLdixP87aGrKToub9uVJJRUNIl/SRDe9eoAMz2NRvFzEdjZFIsHuuD4/ADs+tBXZF2EkLfDG9OC9brUVJUxOsiTUXY3Pg0ZzbQkVdfU4kxUPEY0mjMrrHsnmBlwkV3ITGDsLQyxZExfLBnTV2osyVkF2HZKdGZ4tpRXVuObvy9i40fSf0oGALILeZi94Ri2fzpMWMbVVMeuRcMlLlNdU4epPx9h3BwQFZ+Bmto6RjK5aGQvLBrZS/j4k81n8MuhW/K8HNbkvSzHtHUnsXfxu4y5sCYGdcHEINHb9Q9cb7jzav/1OPR2aRg3p6mmggP/e7dFcUQlZovup6E+WDS0IXn/ZNsV/HJM9E5OcbKLyjB782Vsn9twUwZXUw275oVKXKa6tg5Tf7sgdQ4sRauurcOwNWdxdGEY/Ds3tOBoqatg2VAPLBPzUzriZBeXY+a269g5q49wPJaPgzEOLRD/U0uvNL2rkE1RSfmoqeVDRbnhvbZooCsWDWxoSfzk73v45XQcsosrMHP7Hez8sGHyUB97Qxya13wCeDwmo9nnCSFvrjeqBet1DPJzg6Euc2LDo9djJdRucOwG89Z2FWUljAluSNR45fINIH2UnI3QhVtFxmSxbcvJO0jMkPx7bk39dTYaY1btx8sy0W/dTWUX8jDoy39Efionp6gUm46LzhH0JjlwPQ5DvjmAzALxd41J8uvx+zh9P0Xi87V1fCzdFSnTunKKy7Dp9APpFeXw16UnGPPzabyU4f2YXVSGQSuOyfRTOa2hqLQKgV8fw5f77qK4TPbzqemcWX9HPsPItRdFxnW1lZyXFdh0QfbpEf6+noKRGyLFtnwR8jbip3zP/C/5+7YO6Y3Sblqwms59BYgmT+KcuPUUdXw+4zbsiWHe+Hm/YIC95Yiv0buLPXp3sYNXxw5wtDRCB2M9cLXUoazEAa+8Cul5xYh5lomDkbE4GBmLGjFjM9hWU1uHz7efw+6lo2ReZvfFhzgVlYjJYZ4I83aCu4MZDHQ0wOcD+SWCH3s+fjsBO87FMH7subF5m07hcWouxge7w9XGBLpa6m/cT3KcuPMMjtN/x+gAFwzs7gQvRzOY6mlBRVkJ6fklSMgoxKFbidh/LU64THVtHQZ+fQCzBnhiQl9XuFobQYnDQVZRGa7EpuHHg1HILCrFinGSZ5JvbN6WS3j8ogDjA13gam0IXc3X30+7I+NxKvo5Jvd1RZinDdxtjWGgrQ4+gPySCkQn5+L4vRTsuCT5x57bSm0dH18fuI+fTzzC6F6O6OtqAW8HYxhzNaCnpYbK6lpkF5fjaUYxIuOycDAqFU/Si0TWc+B2Ck4/SMfY3g7o72EFD1tDmHA1oKqihAJeJfJKBJOO3n6Wh8j4HFyPF/+jz2yZt/MuHqcXY7y/A1wt9aCrqdrscT5w5wVOP8rEWD979He3gIeNPkx0NaCqzEEBrwp5vEpkFJbjdnIBIuPzcL2ZH30mpC3xU8QnU/zkVeDY/6+Vo3kzcdBrhoRbUMQNGhVT3rRM6uBMST8RIqZQ4pVKngGtHAmrb4XYmt1nkmJrpq4sr0GWfcF2bGL3hTyxteC9JtPxZDk2Wd7bMscm43tN7uPJQmxsnneMP1/zvc12bGyedxJjU9R1VI7Y2DzvZIpNUdd4KbG1y2u8mPpvwDWen/KDhHU2WoSRZMlzPOvL3/ZrPIfTflqwCCGEECIdf61sLfFiDR0q2zaoJav9jMEihBBCSPNeK7kicqEEixBCCPkPoOSqdVGCRQghhBDCMkqwCCGEkHaOWq9aHyVYhBBCSDvGanJ18KBM1f7rA9wBSrAIIYSQdkshLVfSkiwZk7D2jhIsQgghpB3ir1Xcb3FKTKLqy/lreipu228JmmhUkbEpfBI6eSZTU2BsNNFoC2JT1KSCLMRGE42yGJuirqNyxMbmeSdTbIq6xkuJrV1e48XUl/G8469TYHIlB878W5DveNaXv+3XeA6HWrAIIYQQQthGCRYhhBDSjrwprVfAf7urkBIsQgghpJ1gM7niLIllZT38NT1YWc/bhhIsQgghhDC8Sq7YSrL+iyjBIoQQQohQ06SKkqyWoQSLEEIIIQAomWITJViEEEIIaTa5osRLfm9cgnVy7RIkRqzFD3PHtnUob6WT389F4t9f44cZwxqVzakvG6rYba+cgcQdn+OHD4YodDtsWDk5HInbFuLMiqltHYpYKycEI3HzRzjz9fg22f7Jz0ch8bcZ+GFC3zbZvjxOLhmKxHWT8MM4+q01QlpKlgSKkiz5qLTmxga/442f508SPh7w8UrEp2YqfLvffDgC/xfqh6SMHPSb973Ct9ee/LloHN7p6ggAqOPzUVlVg9xiHmKepeOf83cQFZfaxhESQggB3qzpGZrir+kBzvzbbR1Gq2rVBGt4kG+Txz2xcvuh1gyh3eu/eD0kz47bckW8cvjMXA19HU2EenfGF+PDMci3C9YdvIT1h64Ktr1kU6Ml2I+BEEIIeVu0WoJlbqSPXt06AQDuxyXDs5M93g3ojh92HkFtbV2zyypxOJg4MACjQvxga26MIl4ZHiamYs3uE4h7LmgBO/nzIjhbm+Ps7Yd4WVqBXl2dUVVTg7KKKrjYWQIAHCxNkbjvJwDA4l/34sClKAR4dMbckaFwsjJDbV0dYpPTsffcLZy8+QB8voRfEZIUY//eGBXcA7ZmRijileNh0gus2XsGcanZwnpn1syHg6UJTt16hGJeOUK6u0BNRQWnb8di9/nbWDg6DF4dbVDEK8Ous7fw28FLAIAdyyajV5eGlqRiXjnuxj/H6t1n8SwjV7j+k9/PhbOVKSKuRmPRpgiZ45dVEa8c+y7fh6a6Kr4YH455wwJxLyEN12KTcXLlDDh3MEFEZAwWbT4KAAhwd8Tc996Bk6UJavl1iE3Jwt5L93Ey6gn4fMF+GxPsjVEBHnCwMMLLsgocvvEI6w5eRXlVDQBAWYmDqeE9MdzfHTam+qiqqUVMUgbWH7mGqLgXgtf97VQ4dzDG2XsJeFlWgV6utqiqqUXw//4AV1Mdy8eHItTTGUWlFYiMTQFXS73F+2DHgpHo5WIDoP5YlFbgbmIGVu+PxLOsAmG9k8snwNnSCGfuJyK3uAyBXe2gr62Bu4kZWLrjPLKKeAAgiG9sX4R2cxDE9+QFuJpqUuMY3ssF308MRmV1LTw+2Yzqmlps+CAc4V5O2Hf9CZbsuABdLXXc+WkqlDgczPn9NE5FPxO8V/u6Y5S/C2xN9FBUWomHz3Ow5shtxKXnM7bB1VTDynGB6N3ZCgY6Gjj/IAVf7L6Kl+VVEuM6+dlIOFsY4GxMCopKK9HbpQMMtDVw/uFzfLHnmnDZmyvHwpiriT8vxuK7iJsAgLWT+2KglwMevcjDez8cAQAEuFphbrgHnMz1UcvnI/ZFPvZej8fJ6GQ0PkV1NNSwfJQvAl2toK+tjrtJOVi65zqyispkOKqE/HfJ0/XHWRIL/ko3BUbTfrTaGKxhfXtCicNBUUkpFqzdCT6fD2N9LgK9pB+obz4chWWThyKn8CX8P/gKi9b/g0BvV0R8Px9dHK0ZdUN7dMW9uGSEzF2B4DkrMPjTn7D77A0AQFJGDpxGLoDTyAU4cCkKRno62LhoElztO2DE0nXoM2sFNuw/h4G9usHO3Fiu1/fN9GFYNnEwcgpL4D9rJRb99i8CPTsj4rs56OLQQaR+qI8rjl6PwaQVf4KrpYERgd7Y9dk0fP/PKXzw4y6YGuhi/qhQ+Lk5AAAmfPcnnMZ8Bqcxn8F7+nfYf/kuQrxd8PunY6Gm2qoNkQCAvRfvoa7+0+3/grzF1jHS1cbGeSPhamuOEcu3oc/89dhwOBIDe7rCzswQALB8Yji+Gh8GYz1tTPzhH/RfuhlxL3Lg52onXM/KKQOxaFRfVFRXo8+nGzH310Po2dkGuxaNQa9G9QAg1MsZ9xLTEfK/PxC8eDMAYMWkcAzxdUVCRh6GfbMDlx4kIdy7Y4tf+4Sf9sFp2ho4TVsD749+w/7IWIR4OOL3ue9CTUVZpH6ohxNuPH2BkSv3orC0AgFd7LBkZENT/ooJwRjSoxMSMgswbMVeXHqYjHAvJ6lx3IxLAwCoqyrDzdoEAODlaAEA6O4k+Nfb0RxKHA74fOBWQjoA4JsxfbBsZG/kFJfBf8lOLPrrPAK72CJi8XB0sTFhxt7NHtefpmHo9wcQl56PQT5OWDU+UKb9FNrNDtfj0jH0h0OISy/AIG9HrBoXIFqxmS8yRlwNbJwWDFcrI4z46Sj6fLkPG07FYKCXPexMdJnb62qDG/FZGLnmOApLKxHg0gFL3usuU6yEEMK2VkuwhgcJpss/cuUuUrPycCs2EQAwIqj5afRtzY0xKkTQtbjh31MoeMlDZEwcYhKeQ11VBdPfZQ7CjUlMxd5zN1FZXSM1JgdLE6irqkBVRRkOHUyhrKSEqCdJmP3TDiRn5kpdviFGI4wKElzIN+w/j4KXpYh8kICYxBeCGAeLfqjcjXuOm7FJeJKSiZKyCgDA1QfxeJiUjmsPE1FbJ2jVE5eclZRVYM/5OwAAO3MjuNiYyxwrWyqra5BTWAIA6GRtKraOg4VRw/61NBbs37hUzF5/AMlZBbA1M8DoQC8AwK+HI3E3IQ3FpRU4dP0RLkQnAADszQ0xzL8rAOCPE7eQU8TDlYdJuP74OZSVOPh4KHPMQUxSJvZejhEef2sTffTvLmg5/fPMHeQWl+L03Xg8TMliZT+UlFdiz5UHAAA7M324WJuI1IlOysSpuwnIKS5FVLwgyXGtT2SsTfTQ39tZEN+5+8h9WYbT957h4fMcqdtOzy9BWv5LAICPkwVsTPRgqqcNXkUV7Ez1YcTVhLejoPU2PiMfhbwK2JroYVRvVwDAhuNRKOCVI/JJGmJSsqGuqozpoR6MbTxJy8fRO4nILynHlnOC19nPwx52pnpS43uSno+jd54Jlj1fv2w3O9iZMJetaybBcjDVg7qqMlRVlOBgpg9lJQ6inmVh9tYLSM55yagbnZKLU9EpyHlZjqhnglZj1w6GUuMkhBBFaJWmj+6ujrC1EHygRFy8JfzXt4sz+vq4wVBXBwUvS8Uu6+5kA079r2Xv/vYjkedtm7Q0pciRGD1Lz0V5ZTU01VWxceEkAEBabiFO3ojBmj2nUF1TK9N63B2tG2Jc/qFojGZGImWZ+UXCvyura8AFkJFXDACCrsn6zxw1FcEh6uvZCTPf64NONmbQUlcTbg8ALI31EfMsTaZY2aRUH4Okz8dnGXkor6qGppoqNs4bCQBIyyvGydtPsObAJbjbWwp/CP2RhISnq52F8O/kRt1vKdkFeKeLPbraMZPLlOxCxuOOHRreH6k5RYx6TZeVVV93B8wc2BOdOhjXH4uG5yyNdBHT5LWk1h9XAMLE79Vx7WjZ8N5IzW2ol5JdhK624hPXxm7FpcOqly68HS1QwCsHAPx9+RE+DPOCj5MFfOpbsm7GCRI7dztTYby7F4jeVWrbJHFKabzPchri62hpiJRG8YqTkt3o9eQ2XtZA6rKvPMsuRnlVDTTVVLBxejAAIK2Ah5P3k7Hm2D1UNxpekJpfIvy7slpw7qqpvHE3ShNC/iNaJcEa1mhw+6EfFzIDUFbGuwE++PPYZbHLNk4k+n+8CgkvsiAygLrRQ2njuRoreMnDlBV/YObQIHh2tANXSwNWJgaYPiQQ+cU8bDkqPibRGBv+7r/gZySkZTeJS3TAd22daFbyqtWq6SJ25kbYuGAMVJSVsXr3GWw7eQ0djPVxbs0nAARjlFqbppoqTPS5AICEdPFJbUFJGaas3o2Zg3vD08kKXC11WBnrYfoAX+S/LEVOUcMHojzj3ZrD2IdNNN4Cp4WD8O3MDLBx9rtQUVbC6gNXse3sPXQw0sW57yYDEH8sGr8nm3uZjfcBR8bwbsalY3gvF3g7WqCQV4Gqmlr8dSEGH/Tzgl8nK2GSdis+Q7DeRsv2/3oPEjILRVcqYeOyxiR2WRn3t7ISMyEq4FVgysYzmBnqDk97U3A11WBlqIPpwV2RX1KBLRceCes2PvZsvZ8Iae9aMvUCjcOSjcITLE0NNQzo5QkAGPv5Otx6lCi8yo8N98fyD0ZheLCvxATrQWLDNABene3rEyz51IlJZl6JepyEqMdJ4HA4sDU3xrZl02BjZoSO9d1uX00dinFhvZBdUIzeM74TH2Oj1iOvTrYNCRZL3OwtoaIsGNsTcfUeqmtq4WAh3xixxr6aNBDjQnsgu/Ales9d06J1jAnxaWgJuXBXYr2ouFRExaWCwwFszQyx7dP/g42pATpameDcvXhhva72FniQLDplx8OUhjI7cwPEPhfs21djuKR19SVk5An/tjXVF27D1kxfpO5XY4MxLsgT2YU89P50k8jzAOBmYwoVZUESEHH9seBYmBk0G0Pz8TUMKrc11ceDlBzh37J4NQ7LkKuJ/t5OePg8BznFZYLxXH6doa6qDD4fuF0//upBo65HL0dz8QlWI427Am0bde0lZBSIq97Msg3jpV5ts7pGkBBpqDVchmyMuSLriUrMQlRiluA9ZKKHbTP7wcaYi46WLd/vhBCiaApvP+/v5wltTXXU8fl4mMicMyk6/jkAoLOtJdwcrMQun5KZi30XBN2Ks0f0g5uDFbQ11dHN2QZfTB2GMWG9pMaQmSe4oJsZ6MFIT0dYbm9hgg0LJqC7qwO4WhrglVWiqr4LJzpe9vmdUjLzsO9ilCDGYUFws+8giNHJGl9MGoIxoc2PM5Mm/kW2cJxKX8/OMNHXwZxhQa+1zpbS09bA6L5e+GR4X/D5wNqIS4h8lCS2rr25ITbMHY7unWzA1dQAr6ISVfVdN9HP0pGSXYC9l+4DAGYN6Q0vZyvoamlgaO+uCPESDEJPzipARORDAMC08J4w1deBfxd7+LnYoraOj18OXm023tScIpy6K0jkJvfzgYmeNsK8O7a4ezA+Pa/hWLg7wERPG3OG+EpZqpn4cotx6p5gPOLkEE+Y6GohzMtRpu5BAMgs5OFFnmAsEldTDXefCRLIO4kZ0FJXBQA8Tc9DUWklAEE3377rTwAAs/v7wM3GBNoaquhmZ4ovRvljTADzW6mLlTEGejvCiKuJaSHuAICzMSlIzpHexediZYSB3g6CZYPrl33wXLjskzRBcunX0RIGOhoY5O0AVytmd7q9qR42TA1CdydzcDXUwKuoRlV91310iuzDAQghpLUpvAVrRLDgwyfxRRbKKirRuJPi6fN0VFRVQ0NNFSOCfBGbtF/sOj7buBfxqZkY0bcn9q34GGWVVUhKz8bhK3dx8NIdqTHsOXcL3V0d4d3ZDre2LAcAhH38A5IychFx+Q5mDg2Cm70VtDTUkZFXiNV/n8Duc4LbxnW1NQEAcanNt5R8tjkC8S+yMSLQB/u+mSmIMSMXhyOjcfDKfakxNichLQdLNx/EnGF9sXzyYEwK98O/F+/A3VF0ALwsdLU1AABxL6QPpH5FX0cTCTu+QEV1NXKLeDh79yn+PncHd+JTJfYdpWQXICLyAWYO7g03O3NoaaghI/8lVv97Absv3gMAfL79JOLT8jAioBt2Lh6D4tIKHLkRi7UHrwjXs2TbcSRm5GG4vzsu/zgTVTW1uB2Xig1HruO2DBOdLv3zJKprahHi6YTDX07EtcfPcepuvMidhML9IqHLExC0OC3dfgZzBvti+dggTArxxL9XH8G9hQkbACzdcU4Qn4cjDn/2f7j2JBWn7iXKdCchIGjFsjYWDFy/k5gp/HdMQBcAwK36gfWvfPb3JcRnFGCEX2fsWzgUZZU1SMouxOHbCTh4K55R92xMMgLcbLBsRC9wNdVx4u4zfL67+aS2YdkUBLhaY9lwP3A11XDiXhI+33NN+Pw3B25AQ00FHnYmOLLoPVx4lIoLj1IR1MVGWCcltxgRtxIxM9QdbtbG0FJXQUZhKVYfuYPd157KFAchRDLq6lMcDnrNkNB/Jmmck7gPU47YPyXWFft5LKZQ4qAPcbFJqSvytGyxXd24DMZ6XAxYsIZ5Z6EssTW7zyTF1kxdWV6DDPvi6rr5MNbTwYD//coYON7i2MTuC3lia8F7TabjKV9sV1fPgLGuFgZ8sR3JwsHycr63ZY5NxvNAlvc227G95nn3ah6siJvxWLTzsmznwWsdT9ljY9Rl87yTGJuirqNyxMbmeSdTbIq6xkuJjc3zTtbYFH6NF1NfwvHkrxMzBcobiDP/ditcE1p4HrB8HaVbbJphZWoICyN9/H74olzTNrzJrEwMYGGkh9+PRSI5K1/6Av8RVsZ6sDDk4veTtxslV4QQQkjLtP4MlW+RtJwCOI1aCMlZ9tsnLbcQTmO/bE8viRVpecVwmvpjW4dBCCGknaAEixDCqv7f7gNl8IS8+Tjzrr3WMBD+zy2/wee/gLoICSGEEEJYRoPcFRmbwgdAyjOQT4GxtZNB7q06API1B7QqNDY2zzvGn4oa0NrC2Ng87yTGpqjrqByxsXneyRSboq7xUmJrl9d4MfWlvLf5696R8FyTmvOuyR5bM+9tWVuxOPNvi9lMK513wqJWvMbTIHdCCCGk/eB8JH0aFc68SPa298lN6XUaJ1f/IdSCpcjYFP7tRp4sXYGxUQtWC2Jj59uqQmKjFiwWY1PUdVSO2Ng872SKTVHXeCmxtctrvJj6cpx3/LWirVkNyZXk2DK+YU7gbfnFDalxiWvJ4sy/Jbau4q8Jb8A1nlqwCCGEkPaJM0+2SYEba5pcAUDG137yb1uYXP13UQuWImNT+LcbebJ0BcZGLVgtiI39b6usxUYtWCzGpqjrqByxsXneyRSboq7xUmJrl9d4MfVbeN7x1/o36RoUjS3jm94S1ivAbMkSjYH/s6+ExEqe41lf/rZf46kFixBCCGn/2Bx3JXEb86WPx/ovoQSLEEIIIYRllGARQgghBJafX5f8nNiB7qQ5lGARQgghBID4JIuSq5ahn8ohhBBCiJBIkiVxwD9pDrVgEUIIIYSwjBIsQgghhBCWUYJFCCGEEMIySrAIIYQQQlhGCRYhhBBCCMsowSKEEEIIYRklWIQQQgghLKMEixBCCCGEZZRgEUIIIYSwjBIsQgghhBCWUYJFCCGEEMIySrAIIYQQQlhGCRYhhBBCCMsowSKEEEIIYRklWIQQQgghLKMEixBCCCGEZZRgEUIIIYSwjBIsQgghhBCWUYJFCCGEEMIySrAIIYQQQlhGCRYhhBBCCMsowSKEEEIIYRklWIQQQgghLKMEixBCCCGEZf8PRShxN/BA4jkAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/icon-192.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAGxElEQVR4nO3dyW4cRRzH8SqUO3CdV+AN8g5kswMoIAh2DEZAFjYpT4CExAGxCewEx2KRiMeT5F3yCr6y5V4c7LHbk/ZMd+09v+/nEsdpT9fY/+9Uj8eKrTm/aQ7Zoz/syd/t9P3Nt2ePaTt+esy82+xyjO+aEq876OMzrDvJ/Q5ct/eaUq7bmhcMIIwAII0AII0AII0AII0AII0AII0AII0AII0AIO1c6QV04EovAMHs4kPKqDEABn75zH5NqwmilgAYei3Nr3fRGEoGwNDDmMIxlHoSzPCjTfa5yL0DMPhYZDojWXaDnDsAw48+ssxLjh2AwYev5LtB6h2A4UcMyeYoZQAMP2JKMk+pAmD4kUL0uUoRAMOPlKLOV+wAGH7kEG3OYgbA8COnKPPGj0NDWqwAePRHCcFzFyMAhh8lBc0fl0CQFhoAj/6ogfcchgTA8KMmXvPIJRCkEQCk+QbA5Q9q1Hsu2QEgjQAgzScALn9Qs17zyQ4AaQQAaQQAaX0D4PofQ9B5TtkBII0AII0AII0AII0AII0AII0AII0AII0AII0AIK2W3xIJD+7fP1vfb1+8lnklw0UAA+T+ezj/3//53RhjjH3pzRzLGTQugQZm0fCfOvbv3xKuZDkQwIC4Z3v9P4YI5iKAgXDPxv4f+9evEVeyXHgOEMDtfZjvZJf9A8DZ2AE85R3+y8E3wS7QjgA8uPFHpZeASAgA0gigJzf+uPQSEBEB9MDwLx8C6MiNb5Y7+WQSfBP25bciLGT5EEAHbr/g8CMpAhiKgF2AR/+zEcACbv9W6SWc8IiAH4ibjwDmqGr4p/pEMJkY98tqurUsAWvObx6/efiHPfm7nb7/+G33/DFtx0+PmXebXY7ptCbPY+avyU1um+qd9QpxSyR2bWzCvl6Bn2/vr0WXY1rXZLucl58FGrII3x1SxyVQi0E8+vfk7q+UXkKVCGCGm9wpvYRk3P0rpZdQHQJocI8+Kb2E5Ny98J8sXSYEcERh+KeI4AQBQBoBGGPco0+LndvefVrkvO7epSLnrY18AO5x+eEvFsH2pSLnrYl8AKXMDn2pCNQRQAFnDTsR5EcAmS0aciLIiwAysXefdh5uIshHOgD3+LMs5/EZ6FwRuO2LWc5TK+kAcggZZHaC9AggoRgDTARpEQCkEQCkEQCkEQCkEUAiMZ+88kQ4HdkAcr0GMATKrwXIBgAYQwAQRwCQRgCQRgCQRgCQRgAJpPi+Pa8FpEEAkCYZgHvyeeklVMdtXSi9hCIkAwCmCADS+P0ACbgvXym9BHTEDgBpBABpBABpBABpcgG4J1+UXkK13NarpZeQHd8FisRe/fHojTy/3tXtXktyP9TI7QBAEwFEYK/+kP+cb/+R/ZzLiAAC2dX8w3987neIIJTccwB74StjjOUH4mbYjSfm+DmHEGvObx6/efjH3Cdl7vlj2o6fHjPvNrsck+HJZMB/j2JXv/e7TxHW3TzGPXjD/z7ceJxn3T3vU79jWtdku5xXbgeYZS9+bYwt+5siS7Drj04Phij5HaDtGDe5YxY5fPT3vE8J1t1lF7Br+2FfiyXcAQhgzprc5LZpY1e+Cx6kg5/XT93m6P2d4HW7ndfb17s27nW/lQKQvwSax175xhhjjNu/Fe02D7bW29//03VjjDGjzQfRzmXf3Tt6w84/UBg7QI81ufFNY1e+9f74g60N08Voc9d73W7nNWOvP4x6v6N8vivdAQjAZ90eH3+w3W34p0Yf7PqvO8n9Xs4AeCEM0ggA0ggA0ggA0gggk9HGVvdjN3cTrgRNBJDRaGN78TERXwfAYrwQltlo454xdtErwciFAAoZvXf/8I1T3ytHblwCQRoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQBoBQFrfAPgPLDEEneeUHQDSCADSCADSfALgeQBq1ms+2QEgjQAgzTcALoNQo95zyQ4AaQQAaSEBcBmEmnjNY+gOQASogfcccgkEaTECYBdASUHzF2sHIAKUEDx3XAJBWswA2AWQU5R5i70DEAFyiDZnKS6BiAApRZ2vVM8BiAApRJ+rlE+CiQAxJZmn1N8FIgLEkGyOzqW64Ybp4l2Gc2G5JH8Azfk6ALsB+sgyLzl2gCZ2AyyS9YGy1CvB7AZok30ucu8ATc07y46gq+iDYckAmohBSzVXALUE0DT7ySGI4atm4GfVGMCsaj95GD5+HBrSCADSCADSCADSCADSCADSCADSCADSCADS/gcLJAhZ4GQV3AAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/icon-512.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAWNElEQVR4nO3dy5IcaXXA8S8J7Y23egW/Ae9gYJgBG3BgmBkYRdjc8cJP4IUv4QvGxFxAQ3AJw2ik4V38CrMFg/fphdSSOjurOysrM7/zfef320yrlFV91NVd519ZUs1QPvWg3DTM/HI4fdww+fX0mBsXL7n9tTOcuK1mZ5hcdtEMpZThwj9jqBnmjmt5hrnbXzvDs8v2nuGu299shrnrrp1h5rimZ5i7/ZZnmLvu2hlO3FazM7x02aUzDEP5xMw1AYDOCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJDQvdoDsImx9gBASkPtAVhPALTDkgeiue1xSRwEJwBisuyB1s09jomCQARADBY+kMH0sU4QVCQA6rH0gexefhwUAwcTAMey9AHmiYGDCYBjWPwAy109ZgqBHQmA/Vj6AJdxVmBHAmB7Fj/A9pwV2JgA2I7FD7A/IbARAXA5ix/geELgQgJgPYsfoD4hsJIAOJ/FDxCPEDiT/xvgeSx/gNg8Ti/kDMAyvqEA2uFswAIC4HYWP0C7hMAtvARwmuUP0AeP5zMEwDzfLAB98bg+4SWA63yDAPTLSwIvcQbgBcsfIAeP90UAXPHNAJBL+sf97C8BpP8GAEgs9UsCmc8AWP4AlJJ0H2QNgJR3NgAnpdsLGQMg3Z0MwCKp9kO2AEh15wJwtjR7IlMApLlTAbhIin2RJQBS3JkAbKb7vZEhALq/EwHYRdf7o/cA6PrOA2B33e6RngOg2zsNgEN1uU96DYAu7ywAqulur/QYAN3dSQCE0NV+6S0AurpzAAinmz3TWwAAAAv0FADdVBkAoXWxb3oJgC7uDACa0fze6SEAmr8TAGhS0/unhwAAAM7UegA0XV8ANK/ZPdRyADT7RQegK03uo1YDoMkvNgDdam4vtRoAAMAFWgyA5ioLgBSa2k8tBgAAcKHWAqCpugIgnWb2VEsB0MwXFYDUmthXLQUAALCRVgKgiZoCgGfC761WAgAA2FALARC+ogBgRuj91UIAAAAbix4AoesJAO4Qdo9FDwAAYAeRAyBsNQHAGULus8gBAADsJGoAhKwlAFgp3F6LGgAAwI4EAAAkFDEAwp0mAYANhNpvEQMAANhZtAAIVUcAsLEwey5aAAAABxAAAJBQpAAIc1oEAHYUYt9FCgAA4CACAAASihIAIU6HAMBBqu+9KAEAABxIAABAQgIAABKKEADVXwcBgAqq7r8IAQAAHEwAAEBCAgAAEhIAAJBQ7QDwFwAByKzaHqwdAABABQIAABISAACQkAAAgIQEAAAkJAAAIKGaAeCfAAJApX3oDAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASuld7AIClxj/8953HDH/yxQMmgfYJACC08Q+/Pu/4//3V84/FAJwmAIBwxj+et/RP3s7LMfDJL21ym9ALfwcACGX842/2ud3f/3KX24VWOQMAhLDX4r/2OZ5FwPDJL+/+uSA6ZwCA6o5Y/tc+3+9/cejng4gEAFDV0cv/+ecVASQnAIBqxv/7oO7nFwEkJgCAKmov/ysigKwEAHC4KMv/yvi7n9ceAQ4nAAAgIQEAHCras/8rzgKQjQAADhN1+V8RAWQiAAAgIQEAAAl5K2DYyPjB39QeIbZXXqk9wSLj735ehj/9q9pjwO6cAYANWP5AawQAXMjyB1okAID9NXL6/4p/DUAGAgAuMH7wt7VHAFhFAMBKlj/QMgEAK4yPLH+gbQIAzmT5Az0QAACQkACAM3j2D/RCAMBC46Nv1h4BYDMCABaw/IHeCAC4g+W/gcePa09wFv8vADIQAACQkACAW3j2D/RKAMAJlv/GGnkZwOl/shAAMGN89K3aIwDsSgDAxPih5Q/0TwAAxwn+MoDT/2QiAOAlnv0fIGgEWP5kIwDgGcsfyEQAQLH8DxfsLIBn/2QkAEhv/PDbtUfIKUgEDJ/8cu0RoAoBANRTOQIsfzITAKTm2X8AtSLg8eMy/vS1Op8bAhAApGX5B3J0BLz0+UQAWQ3lUw9mL775y+H0ccPk19Njblw8lFLKePvtr53hxG3Nz3DH7UeYYXLZRTOUUoYL/4yhZpg7btkM4+PvzNw+Ibzyyn63fUtoDK8/ml4y8+G677dlP/9rv+fnbr/lGeauu3aGE7cVc4ZhesgOe/fap3MGgHQs/+D2Ohtwx+2OP3l1n88LQd2rPQDADS8v60vOCAT5lwYQkZcAws8wuSzM6fcIM8wdd/sMnv03bkkMXLj0X7wU4CWAOjPMXddLADdua4OXAARA+Bkml4VZvhFmmDvu9AyWP0s9jQABUGeGuesKgBu3tUEA+DsApGD5cw5/H4AMBADds/xZY/zJ52qPALsSAACQkACga+Pj79YegYY5C0DPBADdsvzZggigVwKALln+bGl8TwTQHwFAd8Ynlj/bEwH0RgAAQEICgK549s+exvdeqT0CbEYA0I3xyfdqj0ACIoBeCAC6YPlzJBFADwQAzbP8qUEE0DoBAAAJCQCa5tk/NY3vfbb2CLCaAKBZ45Pv1x4BRADNEgA0yfInkvHdz9YeAc4mAGjO+JHlv5Xh7/+n9gjdEAG0RgBAUlfLXwRATgKApnj2v43p0hcB23AWgJYIAJph+W/j1LIXAdsY3/1M7RFgEQEAidy15EUA5CEAIImly10EQA4CABI4d6mLAOifAIDOrV3mIgD6JgBowvjRD2qP0KRLl7gIWMdfBKQFAgA6tdXyFgHQJwEAHdp6aYsA6I8AgM7staxFAPRFAABAQgIAOrL3s3RnAaAfAgA6cdRyFgHQBwEAHTh6KYsAaJ8AgMbVWsYiANomAAjPmwCdVnsJ1/78kXkzIKITANCoKMs3yhzAeQQANCja0o02D3A3AQCNibpso84FzBMA0JDoSzb6fMALAgAa0cpybWVOyE4AQANaW6qtzQsZCQAASEgAAEBCAoDQvAkQLfNmQEQmACC4Vl9Pb3VuyEIAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAgbX+T+lanx96JgAIy5sA0QNvBkRUAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAQfXyT+h6+XNAbwQAACQkAAAgIQFASN4EiJ6M73669ghwgwAAgIQEAAAkJAAAICEBAAAJCQAIqLd/O9/bnwd6IAAAICEBAAAJCQAASEgAEM740d/VHgE2N77jzYCIRQAAQEICAAASEgAQTK//ZK7XPxe0SgAAQEICAAASEgAAkJAAAICEBAAAJCQACGX8rTcBol/eDIhIBAAE0vs/lev9zwctEQAAkJAAAICEBAAAJHSv9gDAC+M//FntEYAknAEAgIQEAAAkJAAAICEBQBjeBIgMvBkQUQgAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQBC8CZAZOLNgIhAAABAQgIAABISAACQ0L3aA0A2w+f/69kHw9zvTj5ccswtxw2TX9845MIZ7rr9M2cYf/almdsA9uAMAAAkJADgQM+f/TNr+Mova48AaQgAOIjlv4wIgGMIAABISABQXYY3AfLs/zzDV35Ve4Tdje/8ee0RSE4AwM6Gz/+o9ghNyhABUJMAAICEBADsyLP/yzgLAPsRALATy38bw1+LANiDdwKkuuHT/1hKyfGXAaGUUoav/7bMv3MiHGcon3owe/HNXy55O9AlbwX6/Ljx9ttfO8OJ25qf4Y7bjzDD5LJL35r1xlu/xpuhhxAYXvvR/m/De+3DPt4K+PQMpYzvf3HmuLY8XfzPfzX5zZ3v60WPQRFmmLvu2hlO3FbMGYbpITvs3WufTgCEn2FyWYIAuLr98aMfzHyO+IbXnp36FwAbzvD0g/H9v5w5Nr7hzd82snwjzDB33d2Xb4QZhukhO+zda5/OSwCENXzmn0oppdkQgOHNj64+qjoHzHEGIPwMk8sOevYdcYYWQmB47T/L+q/D5LjF98Utx+09w9nP+NbO8OKDFs4CvFj8zy9Z9Ixs5pZmPtzz2XeEGeauu/uz7wgzDNNDdti71z6dAAg/w+SySss30gzjR9+f+b36ni7/UtZ/HSbHLb4vbjlu7xnOfsBfO8P1y6JGwPDmk9L28o0ww9x1d1++EWYYpofssHevfTovAdCc4TP/XMpQyvgkZgiQz9PFD21xBiD8DJPLKj/7jjXD0w/GJ9+bOfZYL579l7L+6zA57syvw+xxe89w9jO+tTPcvG6EswDDG0+efXDt0rkjFz0jm73ejQ/3fPYdYYa56+7+7DvCDMP0kGU/e+vvawEQfobJZWGWb4QZrl9WKwSuL/9S1n8dJset/Dpc+829Zzj7AX/tDHPXHcr4/l/MXHd/wxuPn8/w8n9mfvHisgUPyLPXu/Hhyq9zMzPMXXf35RthhmF6yLKfvfX3tZcA6Mbw2X8ppQxlfPLd2qPQqReLH9rnDED4GSaXXfqMrOMzANMZxsf7h8Dw2g9vneHGZdcuuvDrfO3Dlc/IGj8DUEo55CzA8MaHt86wzTPfne/rZmaYu+7aGU7cVswZhukhy3721t/XAiD8DJPLLn1AThQAV/YKgafLf9kM6xffzg/IHQRAGUoZH+4TAcPrHy6e4cZl0+MWPCDPXu/Ghyu/zs3MMHfdtTOcuK2YMwzTQ5b97K2/r70EQPeGV/61lFLK+Pg7VeeI4uO3Xz/5e/ff+umBk8Q1vP6ozD+wQj+cAQg/w+SyS5+RJTwDMD1mixAYXv3h5c8KDzwD8PHbb8z8/u3uv/Xw8vt6ybPCDc4AlLLNWYCni3/9DPPHPLtswTOy2evdOcPc7bc8w9x1185w4rZizjBMD1n2s7f+vhYA4WeYXHbpA7IAeD7D+OG3Zz7H3YZXf7jZDDMXTj68/AF5zfK/cv/Bw9tnOPsBf+3XYe66N2dYGwHXF/9lM1zygLxuhrnbb3mGueuuneHEbcWcYZgesuxnb/197SUA0ho+92+llLI6BKL7+J31i//5bfz4q6WUUu4/eP/i24po+NoHzz6YexCFvjkDEH6GyWUXzVBmHuhanmHuuPUzjB9+a+ZzTo66eva/ywyT4y74Onz8zpsz17vM9QhY+Gdc8qxwwzMApQxlfPiFmdubXPNq8e80w+xtLXhGtm6GudtveYa5666d4cRtxZxhmB6y7HF2/X0tAMLPMLnsohnKzA94yzPMHXf5DKdCYHj1P3aeYXLcyq/DHsv/yosIWPhnXLIUdli+pyJg+Npv5m9LAASaYe66a2c4cVsxZximhyx7nF1/X3sJACaGz/17KUMp46O7zwjQhheLH7jiDED4GSaXXTRDmSn8lmeYO277GcZH33z27H/vGeZu/7yvw57P/q88PQuw8M+45FnhTs++x4dfKMNXfz0zw8xtOQMQaIa5666d4cRtxZxhmB6y7HF2/X0tAMLPMLnsohnKzA94yzPMHdfyDHO3v3yGI5b/lfsPfnZjlNVLoenlG2GGudtveYa5666d4cRtxZxhmB6y7HF2/X39iZlrAgCdEwAAkJAAgA4cefq/lFI+/vFXDv18wPYEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIA0IH7X3/32M939U6AQLMEAAAkJAAAICEBAJ046mWAp/83QKB1AgA6sncEWP7QDwEAAAkJAOjMXmcBPPuHvggA6NDWEWD5Q3/u1R4A2Mf9r79XylDKx2+/sf42HjwspQybzQTE4QwAdO7+N95bd723Hm47CBCKMwCQwNMIePpM/uO3Xz993Fs/LZ7xQw4CAJK5/42fvPjFYNlDVl4CAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACRUMwCGip8bAKKosg+dAQCAhAQAACQkAAAgIQEAAAkJAABISAAAQEK1A8A/BQQgs2p7sHYAAAAVCAAASEgAAEBCAgAAEooQAP4iIAAZVd1/EQIAADiYAACAhAQAACQUJQD8PQAAMqm+96IEAABwIAEAAAlFCoDqp0MA4AAh9l2kAAAADiIAACChaAEQ4rQIAOwkzJ6LFgAAwAEiBkCYOgKADYXabxEDAADYmQAAgISiBkCo0yQAcKFwey1qAAAAO4ocAOFqCQBWCLnPIgcAALCT6AEQspoAYKGweyx6AAAAO2ghAMLWEwDcIvT+aiEAAICNtRIAoSsKACbC761WAgAA2FBLARC+pgCgNLKvWgqAUhr5ogKQVjN7qrUAAAA20GIANFNXAKTS1H5qMQAAgAu1GgBNVRYA3WtuL7UaAKU0+MUGoEtN7qOWA6CURr/oAHSj2T3UegAAACv0EADN1hcATWt6//QQAKU0ficA0Jzm904vAVBKB3cGAE3oYt/0FAAAwEK9BUAXVQZAWN3smd4CoJSO7hwAQulqv/QYAKV0dicBUF13e6XXACilwzsLgCq63Cc9B0Apnd5pABym2z3SewCU0vGdB8Cuut4fGQKglM7vRAA21/3eyBIApSS4MwHYRIp9kSkASklypwKwWpo9kS0ASkl05wJwllT7IWMAlJLsTgbgTun2QtYAKCXhnQ3ArJT74F7tASq7utPHqlMAUEPKxX8l8xmAl6X+JgBIKP3jvgB4If03A0ASHu+LlwCmvCQA0C+L/yXOAMzzTQLQF4/rEwLgNN8sAH3weD7DSwC385IAQLss/lsIgGWEAEA7LP4FvARwHt9UALF5nF7IGYDzORsAEI/FfyYBsJ4QAKjP4l9JAFxOCAAcz+K/kADYjhAA2J/FvxEBsD0hALA9i39jAmA/L3+zigGA81n6OxIAx3BWAGA5i/8AAuBYzgoAzLP0DyYA6hEDQHaWfkUCIIbpD4EgAHpk4QciAGKa+yERBUBLLPvgBEA7bvthEgdADZZ8wwRAH/wQAnAW/zdAAEhIAABAQgIAABISAACQkAAAgIQEAAAkJAAAICEBAAAJCQAASEgAAEBCAgAAEhIAAJCQAACAhAQAACQkAAAgIQEAAAkJAABISAAAQEICAAASEgAAkJAAAICEBAAAJCQAACAhAQAACQkAAEhIAABAQgIAABISAACQ0P8DzVKqjpjDKEcAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODdhQABAAIYAAP///+by/wB41AB30gB20AB1zgB0zQBzywByyQBxyABwxgBvxABuwgBtwQBsvwBrvQBqvABpugBouABntgBmtQBlswBksQBjsABirgBhrABgqgBfqQBepwBdpQBcpP9QUABbogBaoABZngBYnQBXmwBWmQBVmABUlgBTlABSkgBRkQBQjwBPjQBOjABNigBMiABLhgBKhQBJgwBIgQBHgABGfgBFfABEegBDeQBCdwBBdQBAdAA/cgA+cAA9bgA8bQA7awA6aQA6aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAQABAAEAI/wCFBAHyw0cPHjt05MBxw0YNGjNkxIDxwkULFitUpEBxwkQJEiNEhADhoQOHDRoyYLhgoQKFCRIiQHjgoAGDBQoSIDhgoACBAQIEEjSIUCFDhxAlUrSIUSNHjyBFkjSJUiVLlzBl0rSJUydPn0CFFjyYcGHDhxEnVryYcWPHjyFHljyZcmXLlzFn1ryZc2fPn0EHji1qFmnapS0AKF7MWADjx1fxat3b1S/YwEPJGj2bVO3jxQJCiw79WTHWvFv5ev0bVjDRskfRKl3b1K3HALgDTKVr9W5WvVz7fgUs9vVmw7OZtn0KV+rcqnZPTw6++nJxzYVlq1Xu9G1UuVTrRv/+nbry8NaZCcfujLg28++7oY9HTVk4a8yDYXM+THu597jxiecbfdRZRpxr2K3HH3elLfbBgxBGJxlwqhmIXn7HabdUg6ORVtqA01V4Hn7GZcfeC6X951wHpUlHoXn3Xafefsmx1R1UAD4noIvl2WcdgjMit52NtjUHHm8SkldfdQemp5+Q7fmH44pIzhcijD86meGJ3BUJn4698bikhSQmSOOQ7ql4pHwgvuhjkxiauCCR7+UYXpgT9sjkhSUqWGOaU665Y55jjijjkxr2p1GDikH4AZ5KFmgokIhyeRGjjz2oWJIEihgjpVsuyOhojLapJ5mHhpochx02aGqhn2r/KedsmNa6mJiSxhqnn2hmBMB7uB0JwKCReprlrmdGeaORAULaKZZw9pmsol7aWeWruR4rLZTU1kklm7gaG62Z3HbpraDOXvkmn+Qmaq6azXKq7p5lBukunfCCKa+b9KY6a6/LfnnnvqdOKiuvylb7LbHPrltvpXMCyqy+VvKLKqj/JnxuvBUXrOu290os8LXhQsuuvZaKbC24hGY7LsoRSznxwB3Dqm27Kcs8MsvFmvywqgArDN6DDM978cHTMsioow8SbPPLEP+5gq2OpmuxwciWm5itpdXs8slRb4epaKWW7LC/CFfEKqkfmt0vxmm7sDbZbbcsLthAUzQ325+5in101onuTXffdvuM9rRc1+o31iCnzFi+LC7m9Nc/Z9ztW7npRjG2d1ceN75QBcsx54bDnTToM5Nc+Nmma63ywlZ7fDPMUge8ctFXf4xzzLbDPnnnh7uu8+2xP4235e8GOvriutMe9MabMz972BpDrnrPrCMtfO/o/l669iEP77vXwLcePvfLr05vQAA7]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/mas-nc-push.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uICgpIHsKICAndXNlIHN0cmljdCc7CgogIGZ1bmN0aW9uIHVybEJhc2U2NFRvVWludDhBcnJheShiYXNlNjRTdHJpbmcpIHsKICAgIHZhciBwYWRkaW5nID0gJz0nLnJlcGVhdCgoNCAtIChiYXNlNjRTdHJpbmcubGVuZ3RoICUgNCkpICUgNCk7CiAgICB2YXIgYmFzZTY0ID0gKGJhc2U2NFN0cmluZyArIHBhZGRpbmcpLnJlcGxhY2UoLy0vZywgJysnKS5yZXBsYWNlKC9fL2csICcvJyk7CiAgICB2YXIgcmF3RGF0YSA9IHdpbmRvdy5hdG9iKGJhc2U2NCk7CiAgICB2YXIgb3V0cHV0QXJyYXkgPSBuZXcgVWludDhBcnJheShyYXdEYXRhLmxlbmd0aCk7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhd0RhdGEubGVuZ3RoOyArK2kpIHsKICAgICAgb3V0cHV0QXJyYXlbaV0gPSByYXdEYXRhLmNoYXJDb2RlQXQoaSk7CiAgICB9CiAgICByZXR1cm4gb3V0cHV0QXJyYXk7CiAgfQoKICBmdW5jdGlvbiByZWFkeShmbikgewogICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT09ICdsb2FkaW5nJykgewogICAgICBmbigpOwogICAgfSBlbHNlIHsKICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGZuKTsKICAgIH0KICB9CgogIHJlYWR5KGZ1bmN0aW9uICgpIHsKICAgIHZhciBjZmcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFzLW5jLXB1c2gtY29uZmlnJyk7CiAgICB2YXIgYnRuID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcy1uYy1zdWJzY3JpYmUtYnRuJyk7CiAgICBpZiAoIWNmZyB8fCAhYnRuKSB7CiAgICAgIHJldHVybjsKICAgIH0KICAgIHZhciBzdWJzY3JpYmVVcmwgPSBjZmcuZ2V0QXR0cmlidXRlKCdkYXRhLXN1YnNjcmliZS11cmwnKTsKICAgIHZhciB2YXBpZCA9IGNmZy5nZXRBdHRyaWJ1dGUoJ2RhdGEtdmFwaWQtcHVibGljJyk7CiAgICB2YXIgc3dVcmwgPSBjZmcuZ2V0QXR0cmlidXRlKCdkYXRhLXN3LXVybCcpIHx8ICcvbWFzX25jX3N3LmpzJzsKICAgIGlmICghc3Vic2NyaWJlVXJsIHx8ICF2YXBpZCkgewogICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoISgnc2VydmljZVdvcmtlcicgaW4gbmF2aWdhdG9yKSB8fCAhKCdQdXNoTWFuYWdlcicgaW4gd2luZG93KSkgewogICAgICBidG4uZGlzYWJsZWQgPSB0cnVlOwogICAgICByZXR1cm47CiAgICB9CgogICAgYnRuLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcihzd1VybCkudGhlbihmdW5jdGlvbiAocmVnKSB7CiAgICAgICAgcmV0dXJuIHJlZy5wdXNoTWFuYWdlci5zdWJzY3JpYmUoewogICAgICAgICAgdXNlclZpc2libGVPbmx5OiB0cnVlLAogICAgICAgICAgYXBwbGljYXRpb25TZXJ2ZXJLZXk6IHVybEJhc2U2NFRvVWludDhBcnJheSh2YXBpZCkKICAgICAgICB9KTsKICAgICAgfSkudGhlbihmdW5jdGlvbiAoc3ViKSB7CiAgICAgICAgdmFyIGpzb24gPSB0eXBlb2Ygc3ViLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJyA/IHN1Yi50b0pTT04oKSA6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoc3ViKSk7CiAgICAgICAgcmV0dXJuIGZldGNoKHN1YnNjcmliZVVybCwgewogICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCiAgICAgICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicgfSwKICAgICAgICAgIGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nLAogICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoanNvbikKICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHsKICAgICAgICAgIHJldHVybiByZXMuanNvbigpOwogICAgICAgIH0pOwogICAgICB9KS50aGVuKGZ1bmN0aW9uIChkYXRhKSB7CiAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5vaykgewogICAgICAgICAgYnRuLnRleHRDb250ZW50ID0gJ1N1YnNjcmliZWQnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICBidG4udGV4dENvbnRlbnQgPSAnU3Vic2NyaWJlIGZhaWxlZCc7CiAgICAgICAgfQogICAgICB9KS5jYXRjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgYnRuLnRleHRDb250ZW50ID0gJ1N1YnNjcmliZSBmYWlsZWQnOwogICAgICB9KTsKICAgIH0pOwogIH0pOwp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/js/mas-nc-sw-register.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uICgpIHsKICAndXNlIHN0cmljdCc7CiAgaWYgKCEoJ3NlcnZpY2VXb3JrZXInIGluIG5hdmlnYXRvcikpIHsKICAgIHJldHVybjsKICB9CiAgdmFyIHBhdGggPSAnL21hc19uY19zdy5qcyc7CiAgdHJ5IHsKICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKHBhdGgpLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTsKICB9IGNhdGNoIChlKSB7fQp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/js/mas-nc-sw-root.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXI6IG1pbmltYWwgcHVzaCBoYW5kbGVyIGZvciBwdWJsaXNoZWQgbWFzX25jX3N3LmpzICovCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcigncHVzaCcsIGZ1bmN0aW9uIChldmVudCkgewogIHZhciBwYXlsb2FkID0geyB0aXRsZTogJ05vdGljZScsIGJvZHk6ICcnIH07CiAgaWYgKGV2ZW50LmRhdGEpIHsKICAgIHRyeSB7CiAgICAgIHZhciBwYXJzZWQgPSBldmVudC5kYXRhLmpzb24oKTsKICAgICAgaWYgKHBhcnNlZCAmJiBwYXJzZWQudGl0bGUpIHsKICAgICAgICBwYXlsb2FkLnRpdGxlID0gU3RyaW5nKHBhcnNlZC50aXRsZSk7CiAgICAgIH0KICAgICAgaWYgKHBhcnNlZCAmJiBwYXJzZWQuYm9keSkgewogICAgICAgIHBheWxvYWQuYm9keSA9IFN0cmluZyhwYXJzZWQuYm9keSk7CiAgICAgIH0KICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgcGF5bG9hZC5ib2R5ID0gZXZlbnQuZGF0YS50ZXh0KCk7CiAgICB9CiAgfQogIGV2ZW50LndhaXRVbnRpbChzZWxmLnJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKHBheWxvYWQudGl0bGUsIHsKICAgIGJvZHk6IHBheWxvYWQuYm9keSwKICAgIGljb246ICcvbW9kdWxlcy9NQVNfTm90aWZpY2F0aW9uQ2VudGVyL2ltYWdlcy9pY29uLTE5Mi5wbmcnCiAgfSkpOwp9KTsKCnNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbm90aWZpY2F0aW9uY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHsKICBldmVudC5ub3RpZmljYXRpb24uY2xvc2UoKTsKICBldmVudC53YWl0VW50aWwoY2xpZW50cy5vcGVuV2luZG93KCcvJykpOwp9KTsK]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01BUyBOb3RpZmljYXRpb24gQ2VudGVyJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnSW50ZXJuYWwgbm90aWZpY2F0aW9uIGh1YiBmb3IgQ01TIE1hZGUgU2ltcGxlOiBjb3JlIGV2ZW50IGFsZXJ0cywgZW1haWwsIERpc2NvcmQgd2ViaG9va3MsIFdlYiBQdXNoIChWQVBJRCkgd2l0aCBidWlsdC1pbiBtYW5pZmVzdCBhbmQgc2VydmljZSB3b3JrZXIgaGVscGVycywgaGVhbHRoIGNoZWNrcywgY3JvbiBVUkwsIGFuZCBpbnRlcm9wZXJhYmlsaXR5IGhvb2tzLiBDR1NpbXBsZVBXQSBpcyBvcHRpb25hbC4gTUlUIGxpY2Vuc2UuJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTUFTX05vdGlmaWNhdGlvbkNlbnRlciBpbnN0YWxsZWQuIEdyYW50ICJNYW5hZ2UgTUFTX05vdGlmaWNhdGlvbkNlbnRlciIgdG8gdHJ1c3RlZCBhZG1pbnMsIHNldCBlbWFpbCByZWNpcGllbnRzIG9yIERpc2NvcmQgd2ViaG9vaywgYW5kIHB1Ymxpc2ggdGhlIHNlcnZpY2Ugd29ya2VyIGlmIHlvdSB1c2UgV2ViIFB1c2guJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyIHJlbW92ZWQuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZW1vdmUgTUFTX05vdGlmaWNhdGlvbkNlbnRlciwgZGF0YWJhc2UgdGFibGVzLCBwdXNoIHN1YnNjcmlwdGlvbnMsIGFuZCBwZXJtaXNzaW9ucz8nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIGRlbmllZCc7CiRsYW5nWyd0YWJfc2V0dGluZ3MnXSA9ICdTZXR0aW5ncyc7CiRsYW5nWyd0YWJfbm90aWZpY2F0aW9ucyddID0gJ05vdGlmaWNhdGlvbnMnOwokbGFuZ1sndGFiX2hlbHAnXSA9ICdIZWxwJzsKJGxhbmdbJ3RhYl9hYm91dCddID0gJ0Fib3V0JzsKJGxhbmdbJ3RhYl9jaGFuZ2Vsb2cnXSA9ICdDaGFuZ2Vsb2cnOwokbGFuZ1snZG9uYXRpb25zX3RhYiddID0gJ0RvbmF0aW9ucyc7CiRsYW5nWydzYXZlJ10gPSAnU2F2ZSBzZXR0aW5ncyc7CiRsYW5nWydzYXZlZCddID0gJ1NldHRpbmdzIHNhdmVkLic7CiRsYW5nWydwdWJsaXNoZWRfc3dfb2snXSA9ICdTZXJ2aWNlIHdvcmtlciBzdHViIHB1Ymxpc2hlZCB0byBzaXRlIHJvb3QgYXMgbWFzX25jX3N3LmpzLic7CiRsYW5nWydrZXlzX3JvdGF0ZWQnXSA9ICdWQVBJRCBrZXlzIHJvdGF0ZWQgYW5kIHB1c2ggc3Vic2NyaXB0aW9ucyBjbGVhcmVkLic7CiRsYW5nWydoaWRlZG9uYXRpb25zc3VibWl0J10gPSAnSGlkZSBEb25hdGlvbnMgdGFiJzsKJGxhbmdbJ3Nwb25zb3JzJ10gPSAnU3BvbnNvcic7CiRsYW5nWydkb25hdGlvbnN0ZXh0J10gPSAnSWYgdGhpcyBtb2R1bGUgaGVscHMgeW91ciBwcm9qZWN0LCB5b3UgY2FuIHN1cHBvcnQgY29udGludWVkIGRldmVsb3BtZW50Lic7CiRsYW5nWydkb25hdGlvbnNfc3BvbnNvcl9sb2dvX2FsdCddID0gJ05ld3MgVGFyZ2V0ZWQgbG9nbyc7CiRsYW5nWydkb25hdGlvbnNfc3BvbnNvcl9saW5rJ10gPSAnVmlzaXQgTmV3c1RhcmdldGVkJzsKJGxhbmdbJ2RvbmF0ZV9idG4nXSA9ICdEb25hdGUnOwokbGFuZ1snc2VjdGlvbl9tb2R1bGVfdWknXSA9ICdNb2R1bGUgVUknOwokbGFuZ1snYWRtaW5fc2VjdGlvbl9sYWJlbCddID0gJ0FkbWluIG1lbnUgc2VjdGlvbic7CiRsYW5nWydhZG1pbl9zZWN0aW9uX2hlbHAnXSA9ICdDaG9vc2UgdGhlIHRvcC1sZXZlbCBhZG1pbiBtZW51IHdoZXJlIHRoaXMgbW9kdWxlIGFwcGVhcnMgKHNhbWUgaWRlYSBhcyBDdXN0b20gR2xvYmFsIFNldHRpbmdzKS4gVXNlcnMgd2l0aCBFZGl0b3Itb25seSBhY2Nlc3MgY2Fubm90IG9wZW4gdGhlIFNpdGUgQWRtaW4gYXJlYSwgc28gYXZvaWQgcGxhY2luZyB0aGUgbW9kdWxlIG9ubHkgdW5kZXIgU2l0ZSBBZG1pbiBpZiB0aG9zZSB1c2VycyBtdXN0IG1hbmFnZSBpdC4nOwokbGFuZ1snc2hvd19kb25hdGlvbnNfdGFiJ10gPSAnU2hvdyBEb25hdGlvbnMgdGFiJzsKJGxhbmdbJ3Nob3dfZG9uYXRpb25zX3RhYl9oZWxwJ10gPSAnV2hlbiB0dXJuZWQgb2ZmLCB0aGUgRG9uYXRpb25zIHRhYiBpcyBoaWRkZW4gdW50aWwgeW91IGVuYWJsZSBpdCBhZ2FpbiBoZXJlLic7CiRsYW5nWyd0aGVtZV9jb2xvcl9sYWJlbCddID0gJ1BXQSB0aGVtZSBjb2xvciAobWFuaWZlc3QgYW5kIG1ldGEpJzsKJGxhbmdbJ3RoZW1lX2NvbG9yX2hlbHAnXSA9ICdVc2UgYSBDU1MgaGV4IGNvbG9yIGxpa2UgIzAwNzhkNC4gVXNlZCBmb3IgdGhlbWUtY29sb3IgYW5kIHRoZSBtYW5pZmVzdCBkaXNwbGF5IGZpZWxkLic7CiRsYW5nWydzdGFuZGFsb25lX3B3YV9oZWFkaW5nJ10gPSAnUHVibGljIHNpdGUgUFdBIChzdGFuZGFsb25lKSc7CiRsYW5nWydtYXNfbmNfZnJvbnRlbmRfcHdhX2hlbHAnXSA9ICdPbiBwdWJsaWMgcGFnZXMsIGFwcGVuZCB0aGUgd2ViIGFwcCBtYW5pZmVzdCwgdGhlbWUtY29sb3IsIGFuZCByZWdpc3RlciAvbWFzX25jX3N3LmpzIHZpYSB0aGUgbWV0YWRhdGEgaG9vayAocmVxdWlyZXMge21ldGFkYXRhfSBpbiB5b3VyIHBhZ2UgdGVtcGxhdGUpLic7CiRsYW5nWydzdGFuZGFsb25lX3B3YV9ub3RlJ10gPSAnVHVybiB0aGlzIG9uIG9ubHkgd2hlbiB5b3Ugd2FudCBpbnN0YWxsYWJpbGl0eSBhbmQgdGhlIHNlcnZpY2Ugd29ya2VyIG9uIG5vcm1hbCBzaXRlIHBhZ2VzLiBBZG1pbiBXZWIgUHVzaCBzdGlsbCB1c2VzIHRoZSBtb2R1bGUgYWRtaW4gaGVhZGVyIHdpdGhvdXQgdGhpcyBvcHRpb24uJzsKJGxhbmdbJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhX2hlbHAnXSA9ICdNZXJnZSBwdXNoIHNjcmlwdHMgaW50byBDR1NpbXBsZVBXQSBjb21iaW5lZCBzZXJ2aWNlIHdvcmtlciAocmVxdWlyZXMgQ0dTaW1wbGVQV0EpLiBMZWF2ZSBvZmYgdG8gc3RheSBpbmRlcGVuZGVudC4nOwokbGFuZ1snY2hhaW5fY2dfbm90ZSddID0gJ0FmdGVyIGNoYW5naW5nIHRoZSBDR1NpbXBsZVBXQSBtZXJnZSBvcHRpb24sIHVwZ3JhZGUgb3IgcmVpbnN0YWxsIENHU2ltcGxlUFdBLWRlcGVuZGVudCBtb2R1bGVzIGlmIG5lZWRlZCwgdGhlbiByZWdlbmVyYXRlIHRoZSBzaXRlIHdvcmtlciBmcm9tIENHU2ltcGxlUFdBIGFkbWluLiBNQVMgZG9lcyBub3Qgc2hpcCBhIGNvcHkgb2YgQ0dTaW1wbGVQV0EgKGRpZmZlcmVudCBsaWNlbnNlIGFuZCBzY29wZSkuJzsKJGxhbmdbJ2FkbWluX293bl9tYW5pZmVzdF9oZWxwJ10gPSAnV2hlbiBDR1NpbXBsZVBXQSBtZXJnZSBpcyBlbmFibGVkLCBhbHNvIG91dHB1dCB0aGlzIG1vZHVsZSBtYW5pZmVzdCBhbmQgdGhlbWUtY29sb3IgaW4gdGhlIG1vZHVsZSBhZG1pbiBoZWFkZXIgKGF2b2lkcyByZWx5aW5nIG9uIENHU2ltcGxlUFdBIGFsb25lIGZvciB0aG9zZSB0YWdzKS4nOwokbGFuZ1snaGVscF9wYXJhbV9hY3Rpb24nXSA9ICdGcm9udGVuZCBhY3Rpb24gKHJlc2VydmVkKS4nOwokbGFuZ1snaGVscF9iYW5uZXJfdGl0bGUnXSA9ICdOZWVkIG1vcmUgaGVscD8nOwokbGFuZ1snaGVscF9iYW5uZXJfYm9keSddID0gJ01BUyBtb2R1bGVzIGFuZCBkb2N1bWVudGF0aW9uOic7CiRsYW5nWydoZWxwX3RhYl9nZW5lcmFsJ10gPSAnT3ZlcnZpZXcnOwokbGFuZ1snaGVscF90YWJfY2hhbm5lbHMnXSA9ICdDaGFubmVscyc7CiRsYW5nWydoZWxwX3RhYl9pbnRlcm9wJ10gPSAnSW50ZXJvcCc7CiRsYW5nWydoZWxwX2dlbmVyYWxfaGVhZGluZyddID0gJ1doYXQgdGhpcyBtb2R1bGUgZG9lcyc7CiRsYW5nWydoZWxwX2dlbmVyYWxfaW50cm8nXSA9ICdNQVMgTm90aWZpY2F0aW9uIENlbnRlciBzdG9yZXMgb3BlcmF0b3ItZmFjaW5nIGFsZXJ0cyBpbiB0aGUgZGF0YWJhc2UgYW5kIG9wdGlvbmFsbHkgZGVsaXZlcnMgY29waWVzIGJ5IGVtYWlsLCBEaXNjb3JkIHdlYmhvb2ssIG9yIFdlYiBQdXNoLic7CiRsYW5nWydoZWxwX2dlbmVyYWxfbGkxJ10gPSAnU3Vic2NyaWJlIHRvIHNlbGVjdGVkIENNUyBjb3JlIGV2ZW50cyAobmV3IHVzZXJzLCBtb2R1bGUgaW5zdGFsbHMsIG9wdGlvbmFsIGxvZ2luIGZhaWx1cmVzKS4nOwokbGFuZ1snaGVscF9nZW5lcmFsX2xpMiddID0gJ1J1biBwZXJpb2RpYyBjaGVja3MgZnJvbSBjcm9uIHVzaW5nIHRoZSBzaWduZWQgY3JvbiBVUkwuJzsKJGxhbmdbJ2hlbHBfZ2VuZXJhbF9saTMnXSA9ICdJbnRlZ3JhdGUgY3VzdG9tIG1vZHVsZXMgdXNpbmcgdGhlIGRvY3VtZW50ZWQgaG9vayBuYW1lLic7CiRsYW5nWydoZWxwX2NoYW5uZWxzX2JvZHknXSA9ICdFbWFpbCB1c2VzIENNUyBNYWRlIFNpbXBsZSBtYWlsIHNldHRpbmdzIChjbXNfbWFpbGVyKS4gRGlzY29yZCBleHBlY3RzIGFuIEluY29taW5nIFdlYmhvb2sgVVJMIHVuZGVyIGRpc2NvcmQuY29tLiBXZWIgUHVzaCByZXF1aXJlcyBIVFRQUywgR01QL0NvbXBvc2VyIGRlcGVuZGVuY2llcywgVkFQSUQga2V5cywgYW5kIG1hc19uY19zdy5qcyBpbiB0aGUgc2l0ZSByb290IChQdWJsaXNoIGJ1dHRvbikuIE9wdGlvbmFsOiBtZXJnZSB3aXRoIENHU2ltcGxlUFdBIGlmIHlvdSBlbmFibGUgdGhhdCBpbnRlZ3JhdGlvbi4nOwokbGFuZ1snaGVscF9pbnRlcm9wX2JvZHknXSA9ICdDYWxsIENNU01TIEhvb2tNYW5hZ2VyOjpkb19ob29rKFwnTUFTX05vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZ5XCcsIGFycmF5KCRwYXlsb2FkKSkgd2hlcmUgJHBheWxvYWQgaW5jbHVkZXMgc2V2ZXJpdHksIGNhdGVnb3J5LCB0aXRsZSwgYm9keSwgb3B0aW9uYWwgbWV0YS4gVGhpcyBzdG9yZXMgdGhlIGFsZXJ0IGFuZCBydW5zIG91dGJvdW5kIGNoYW5uZWxzIGFjY29yZGluZyB0byBTZXR0aW5ncy4nOwokbGFuZ1snaGVscF9pbnRlcm9wX2NnX2JvZHknXSA9ICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyIGRvZXMgbm90IHJlcXVpcmUgQ0dTaW1wbGVQV0EuIEJ5IGRlZmF1bHQgaXQgb3V0cHV0cyBpdHMgb3duIG1hbmlmZXN0IGxpbmssIHRoZW1lLWNvbG9yLCBhbmQgYWRtaW4gc2NyaXB0cywgYW5kIHlvdSBwdWJsaXNoIG1hc19uY19zdy5qcyB0byB0aGUgc2l0ZSByb290LiBJZiB5b3UgZW5hYmxlIHRoZSBvcHRpb25hbCBDR1NpbXBsZVBXQSBtZXJnZSBjaGVja2JveCBhbmQgQ0dTaW1wbGVQV0EgaXMgaW5zdGFsbGVkLCBNQVMgcmVnaXN0ZXJzIGEgU2VydmljZVdvcmtlckFkZG9uIGFuZCBtYXkgY2hhaW4gQ0dTaW1wbGVQV0EgYWRtaW4gaGVhZGVycyAoc2FtZSBwYXR0ZXJuIGFzIENHV2ViUHVzaCkuIENvcHlpbmcgdGhlIGZ1bGwgQ0dTaW1wbGVQV0EgcHJvZHVjdCBpbnRvIHRoaXMgbW9kdWxlIGlzIG5vdCBpbmNsdWRlZCAobGljZW5zZSBhbmQgbWFpbnRlbmFuY2UgZGlmZmVyKS4gV2hlbiBDR1dlYlB1c2ggaXMgaW5zdGFsbGVkLCB5b3UgY2FuIGVuYWJsZSB0aGUgb3B0aW9uYWwgYnJpZGdlIHRoYXQgY2FsbHMgQ0dXZWJQdXNoIGJyb2FkY2FzdF9tZXNzYWdlIChDR0V4dGVuc2lvbnMgbm90aWZpY2F0aW9uX21lc3NhZ2UpLiBBdm9pZCBkdXBsaWNhdGUgbm90aWZpY2F0aW9ucyBpZiBvbmUgZGV2aWNlIHVzZXMgYm90aCBzdWJzY3JpcHRpb24gc3RvcmVzLic7CiRsYW5nWydzZWN0aW9uX2NnX3N0YWNrJ10gPSAnQ0dTaW1wbGVQV0EgLyBDR1dlYlB1c2gnOwokbGFuZ1snY2dfc3RhY2tfZGV0ZWN0ZWQnXSA9ICdJbnN0YWxsZWQgbW9kdWxlcyAocnVudGltZSBkZXRlY3Rpb24pJzsKJGxhbmdbJ2NnX3NpbXBsZXB3YV9sYWJlbCddID0gJ0NHU2ltcGxlUFdBJzsKJGxhbmdbJ2NnX3dlYnB1c2hfbGFiZWwnXSA9ICdDR1dlYlB1c2gnOwokbGFuZ1snY2dfZGV0ZWN0ZWRfeWVzJ10gPSAneWVzJzsKJGxhbmdbJ2NnX2RldGVjdGVkX25vJ10gPSAnbm8nOwokbGFuZ1snY2d3ZWJwdXNoX2Jyb2FkY2FzdF9oZWxwJ10gPSAnQWxzbyBicm9hZGNhc3QgV2ViIFB1c2ggdGhyb3VnaCBDR1dlYlB1c2ggdG8gYWxsIGRldmljZXMgaW4gaXRzIHN1YnNjcmlwdGlvbiBzdG9yZSAob3B0aW9uYWw7IHJlcXVpcmVzIENHV2ViUHVzaCBhbmQgQ0dFeHRlbnNpb25zIG5vdGlmaWNhdGlvbl9tZXNzYWdlKS4nOwokbGFuZ1snYWRtaW5fb3duX21hbmlmZXN0X2hlbHAnXSA9ICdXaGVuIENHU2ltcGxlUFdBIGlzIHByZXNlbnQsIHN0aWxsIG91dHB1dCB0aGlzIG1vZHVsZSBtYW5pZmVzdCBsaW5rIGFuZCB0aGVtZS1jb2xvciBpbiBhZG1pbiBoZWFkZXJzIChkZWZhdWx0IG9mZiB0byBhdm9pZCBkdXBsaWNhdGUgbWFuaWZlc3QgbGlua3MpLic7CiRsYW5nWydjZ19zdGFja19ub3RlJ10gPSAnSW50ZXJuYWwgTUFTIFdlYiBQdXNoIHVzZXMgdGhpcyBtb2R1bGUgVkFQSUQga2V5cyBhbmQgbWFzX25jX3N3LmpzIChvciB0aGUgbWVyZ2VkIENHU2ltcGxlUFdBIHdvcmtlciBvbmx5IGlmIHlvdSBlbmFibGUgbWVyZ2UpLiBDR1dlYlB1c2ggdXNlcyBpdHMgb3duIGtleXM7IGFsaWduIGV4cGVjdGF0aW9ucyBpZiB5b3UgZW5hYmxlIHRoZSBicmlkZ2UuJzsKJGxhbmdbJ2NoYW5nZWxvZ19ub3RlJ10gPSAnQ2hhbmdlbG9nIGlzIHJlYWQgZnJvbSBDSEFOR0VMT0cubWQgaW4gdGhlIG1vZHVsZSBmb2xkZXIuJzsKJGxhbmdbJ3NlY3Rpb25fY2hhbm5lbHMnXSA9ICdDaGFubmVscyc7CiRsYW5nWydlbmFibGVfZW1haWwnXSA9ICdFbWFpbCc7CiRsYW5nWydlbmFibGVfZW1haWxfaGVscCddID0gJ1NlbmQgYSBjb3B5IG9mIGVhY2ggbm90aWZpY2F0aW9uIHVzaW5nIHRoZSBnbG9iYWwgQ01TIG1haWxlci4nOwokbGFuZ1snZW1haWxfcmVjaXBpZW50cyddID0gJ0VtYWlsIHJlY2lwaWVudHMnOwokbGFuZ1snZW1haWxfcmVjaXBpZW50c19oZWxwJ10gPSAnQ29tbWEgb3Igd2hpdGVzcGFjZSBzZXBhcmF0ZWQgYWRkcmVzc2VzLic7CiRsYW5nWydlbmFibGVfZGlzY29yZCddID0gJ0Rpc2NvcmQgd2ViaG9vayc7CiRsYW5nWydlbmFibGVfZGlzY29yZF9oZWxwJ10gPSAnUE9TVCBjb21wYWN0IGVtYmVkcyB0byBhIERpc2NvcmQgSW5jb21pbmcgV2ViaG9vay4nOwokbGFuZ1snZGlzY29yZF93ZWJob29rJ10gPSAnV2ViaG9vayBVUkwnOwokbGFuZ1snZW5hYmxlX3B1c2gnXSA9ICdXZWIgUHVzaCc7CiRsYW5nWydlbmFibGVfcHVzaF9oZWxwJ10gPSAnU2VuZCBXZWIgUHVzaCB0byBzdG9yZWQgYWRtaW5pc3RyYXRvciBzdWJzY3JpcHRpb25zLic7CiRsYW5nWydzZWN0aW9uX3dlYnB1c2gnXSA9ICdXZWIgUHVzaCAoUFdBKSc7CiRsYW5nWyd2YXBpZF9wdWJsaWMnXSA9ICdWQVBJRCBwdWJsaWMga2V5JzsKJGxhbmdbJ3ZhcGlkX2NvbnRhY3QnXSA9ICdWQVBJRCBjb250YWN0IChtYWlsdG86IG9yIGh0dHBzOiknOwokbGFuZ1snbWFuaWZlc3RfdXJsJ10gPSAnV2ViIGFwcCBtYW5pZmVzdCBVUkwnOwokbGFuZ1snd2VicHVzaF9pbnN0YWxsX25vdGUnXSA9ICdIVFRQUyBpcyByZXF1aXJlZCBpbiBwcm9kdWN0aW9uLiBQdWJsaXNoIG1hc19uY19zdy5qcyB0byB0aGUgc2l0ZSByb290LiBDR1NpbXBsZVBXQSBtZXJnZSBpcyBvcHRpb25hbCB1bmRlciBNb2R1bGUgVUkuJzsKJGxhbmdbJ2J0bl9zdWJzY3JpYmVfcHVzaCddID0gJ1N1YnNjcmliZSBvbiB0aGlzIGJyb3dzZXInOwokbGFuZ1snYnRuX3Rlc3RfcHVzaCddID0gJ1NlbmQgdGVzdCBXZWIgUHVzaCc7CiRsYW5nWydidG5fcm90YXRlX3ZhcGlkJ10gPSAnUm90YXRlIFZBUElEIGtleXMnOwokbGFuZ1snYnRuX3B1Ymxpc2hfc3cnXSA9ICdQdWJsaXNoIHNlcnZpY2Ugd29ya2VyIHN0dWIgdG8gc2l0ZSByb290JzsKJGxhbmdbJ3B1Ymxpc2hfc3dfaGVscCddID0gJ1dyaXRlcyBtYXNfbmNfc3cuanMgaW50byB0aGUgQ01TIHJvb3QuIEVuc3VyZSBIVFRQUyBhbmQgY2FjaGUgaGVhZGVycyBzdWl0IHlvdXIgZW52aXJvbm1lbnQuJzsKJGxhbmdbJ3NlY3Rpb25fZXZlbnRzJ10gPSAnT3B0aW9uYWwgc2VjdXJpdHkgZXZlbnRzJzsKJGxhbmdbJ2V2dF9sb2dpbl9mYWlsZWRfb3B0J10gPSAnTm90aWZ5IG9uIGZhaWxlZCBhZG1pbiBsb2dpbiBhdHRlbXB0cyc7CiRsYW5nWydldnRfZGVsZXRlX3VzZXJfb3B0J10gPSAnTm90aWZ5IHdoZW4gYSBiYWNrZW5kIHVzZXIgaXMgZGVsZXRlZCc7CiRsYW5nWydzZWN0aW9uX3JhdGVzJ10gPSAnUmF0ZSBsaW1pdGluZyc7CiRsYW5nWydyYXRlX3Blcl9ob3VyJ10gPSAnTWF4IG5vdGlmaWNhdGlvbnMgcGVyIGNhdGVnb3J5IHBlciBob3VyJzsKJGxhbmdbJ3NlY3Rpb25faGVhbHRoJ10gPSAnSGVhbHRoIHRocmVzaG9sZHMnOwokbGFuZ1snaGVhbHRoX21pbl9waHAnXSA9ICdNaW5pbXVtIFBIUCB2ZXJzaW9uICh3YXJuIGJlbG93KSc7CiRsYW5nWydoZWFsdGhfZGlza19wY3QnXSA9ICdXYXJuIHdoZW4gZnJlZSBkaXNrIGZhbGxzIGJlbG93IHRoaXMgcGVyY2VudCc7CiRsYW5nWydoZWFsdGhfZGJfbXMnXSA9ICdXYXJuIHdoZW4gYSBEQiBwaW5nIGV4Y2VlZHMgdGhpcyBtYW55IG1pbGxpc2Vjb25kcyAoMCBkaXNhYmxlcyknOwokbGFuZ1snc2VjdGlvbl9hZHZhbmNlZCddID0gJ0FkdmFuY2VkJzsKJGxhbmdbJ2ZhdGFsX3NodXRkb3duX29wdCddID0gJ1JlY29yZCBzYW5pdGl6ZWQgZmF0YWwgc2h1dGRvd24gbWVzc2FnZXMgYXMgbm90aWZpY2F0aW9ucyc7CiRsYW5nWydmYXRhbF9zaHV0ZG93bl93YXJuJ10gPSAnTWF5IGNhcHR1cmUgc2Vuc2l0aXZlIHBhdGhzIGluIHJhcmUgY2FzZXMuIEtlZXAgcmVzdHJpY3RlZCB0byB0cnVzdGVkIGFkbWlucy4nOwokbGFuZ1snc2VjdGlvbl9jcm9uJ10gPSAnQ3Jvbic7CiRsYW5nWydjcm9uX3VybF9sYWJlbCddID0gJ1NpZ25lZCBjcm9uIFVSTCc7CiRsYW5nWydjcm9uX2hlbHAnXSA9ICdDYWxsIGZyb20gY3JvbiB3aXRoIGN1cmwgb24gYW4gaW50ZXJ2YWwgeW91IGNob29zZS4gRXhhbXBsZTogY3VybCAtZnNTICJVUkwiJzsKJGxhbmdbJ2Nyb25fdG9rZW5fbWlzc2luZyddID0gJyh0b2tlbiBtaXNzaW5nOyByZWluc3RhbGwgbW9kdWxlKSc7CiRsYW5nWydub3RpZmljYXRpb25zX2ludHJvJ10gPSAnU3RvcmVkIG5vdGlmaWNhdGlvbnMgZnJvbSBDTVMgZXZlbnRzLCBjcm9uLCBoZWFsdGggY2hlY2tzLCBhbmQgY3VzdG9tIGhvb2tzLic7CiRsYW5nWydub3RpZmljYXRpb25zX2VtcHR5J10gPSAnTm8gbm90aWZpY2F0aW9ucyB5ZXQuJzsKJGxhbmdbJ2NvbF9jcmVhdGVkJ10gPSAnQ3JlYXRlZCc7CiRsYW5nWydjb2xfc2V2ZXJpdHknXSA9ICdTZXZlcml0eSc7CiRsYW5nWydjb2xfY2F0ZWdvcnknXSA9ICdDYXRlZ29yeSc7CiRsYW5nWydjb2xfdGl0bGUnXSA9ICdUaXRsZSc7CiRsYW5nWydjb2xfZGVsaXZlcmVkJ10gPSAnRGVsaXZlcmVkIG1hc2snOwokbGFuZ1snYnRuX2RlbGV0ZV9zZWxlY3RlZCddID0gJ0RlbGV0ZSBzZWxlY3RlZCc7CiRsYW5nWydjb25maXJtX2RlbGV0ZSddID0gJ0RlbGV0ZSBzZWxlY3RlZCBub3RpZmljYXRpb25zPyc7CiRsYW5nWydwYWdlcl9wcmV2J10gPSAnUHJldmlvdXMnOwokbGFuZ1sncGFnZXJfbmV4dCddID0gJ05leHQnOwokbGFuZ1sncGFnZXJfcGFnZSddID0gJ1BhZ2UnOwokbGFuZ1sncGFnZXJfdG90YWwnXSA9ICd0b3RhbCByb3dzJzsKJGxhbmdbJ2V2dF9uZXdfdXNlcl90aXRsZSddID0gJ05ldyBiYWNrZW5kIHVzZXInOwokbGFuZ1snZXZ0X25ld191c2VyX2JvZHknXSA9ICdVc2VyIGNyZWF0ZWQ6JzsKJGxhbmdbJ2V2dF9tb2R1bGVfaW5zdGFsbGVkX3RpdGxlJ10gPSAnTW9kdWxlIGluc3RhbGxlZCc7CiRsYW5nWydldnRfbW9kdWxlX3VwZ3JhZGVkX3RpdGxlJ10gPSAnTW9kdWxlIHVwZ3JhZGVkJzsKJGxhbmdbJ2V2dF9tb2R1bGVfdW5pbnN0YWxsZWRfdGl0bGUnXSA9ICdNb2R1bGUgdW5pbnN0YWxsZWQnOwokbGFuZ1snZXZ0X2xvZ2luX2ZhaWxlZF90aXRsZSddID0gJ0xvZ2luIGZhaWxlZCc7CiRsYW5nWydldnRfbG9naW5fZmFpbGVkX2JvZHknXSA9ICdGYWlsZWQgbG9naW4gYXR0ZW1wdCBmb3IgdXNlcic7CiRsYW5nWydldnRfdXNlcl9kZWxldGVkX3RpdGxlJ10gPSAnVXNlciBkZWxldGVkJzsKJGxhbmdbJ25vdGlmeV9kZWZhdWx0X3RpdGxlJ10gPSAnTm90aWZpY2F0aW9uJzsKJGxhbmdbJ2ZhdGFsX25vdGlmeV90aXRsZSddID0gJ0ZhdGFsIGVycm9yIChzYW5pdGl6ZWQpJzsKJGxhbmdbJ2Nyb25fcGluZ190aXRsZSddID0gJ0Nyb24gaGVhcnRiZWF0JzsKJGxhbmdbJ2Nyb25fcGluZ19ib2R5J10gPSAnU2NoZWR1bGVkIGNyb24gcGluZyBleGVjdXRlZCBzdWNjZXNzZnVsbHkuJzsKJGxhbmdbJ2hlYWx0aF9pc3N1ZV90aXRsZSddID0gJ0hlYWx0aCB3YXJuaW5nJzsKJGxhbmdbJ3B1c2hfdGVzdF90aXRsZSddID0gJ01BUyBOb3RpZmljYXRpb24gQ2VudGVyIHRlc3QnOwokbGFuZ1sncHVzaF90ZXN0X2JvZHknXSA9ICdUaGlzIGlzIGEgdGVzdCBXZWIgUHVzaCBmcm9tIE1BUyBOb3RpZmljYXRpb24gQ2VudGVyLic7CiRsYW5nWydldmVudGRlc2NfTm90aWZ5J10gPSAnUmFpc2VkIHdoZW4gYW5vdGhlciBtb2R1bGUgb3IgaG9vayBzZW5kcyBhIGN1c3RvbSBub3RpZmljYXRpb24gcGF5bG9hZCBpbnRvIE1BU19Ob3RpZmljYXRpb25DZW50ZXIuJzsKJGxhbmdbJ2V2ZW50aGVscF9Ob3RpZnknXSA9ICdQYXJhbWV0ZXJzOiBzZXZlcml0eSAoaW5mb3x3YXJuaW5nfGVycm9yKSwgY2F0ZWdvcnksIHRpdGxlLCBib2R5LCBvcHRpb25hbCBtZXRhIGFycmF5Lic7CiRsYW5nWydhYm91dF9oZWFkaW5nX21vZHVsZSddID0gJ01vZHVsZSBkZXRhaWxzJzsKJGxhbmdbJ2Fib3V0X2xhYmVsX25hbWUnXSA9ICdOYW1lJzsKJGxhbmdbJ2Fib3V0X2xhYmVsX3ZlcnNpb24nXSA9ICdWZXJzaW9uJzsKJGxhbmdbJ2Fib3V0X2xhYmVsX2F1dGhvciddID0gJ0F1dGhvcic7CiRsYW5nWydhYm91dF9sYWJlbF9lbWFpbCddID0gJ0VtYWlsJzsKJGxhbmdbJ2Fib3V0X2xhYmVsX2xpY2Vuc2UnXSA9ICdMaWNlbnNlJzsKJGxhbmdbJ2Fib3V0X2xpY2Vuc2VfdmFsdWUnXSA9ICdNSVQnOwokbGFuZ1snYWJvdXRfaGVhZGluZ19jb21wYXQnXSA9ICdDb21wYXRpYmlsaXR5JzsKJGxhbmdbJ2Fib3V0X21pbl9jbXMnXSA9ICdNaW5pbXVtIENNUyBNYWRlIFNpbXBsZSc7CiRsYW5nWydhYm91dF9taW5fcGhwJ10gPSAnTWluaW11bSBQSFAnOwokbGFuZ1snYWJvdXRfaGVhZGluZ19zdW1tYXJ5J10gPSAnU3VtbWFyeSc7Cg==]]></data>
	</file>
	<file>
	  <filename>/lang/nb_NO.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ01BUyBOb3RpZmljYXRpb24gQ2VudGVyJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnSW50ZXJudCB2YXJzbGluZ3NzeXN0ZW0gZm9yIENNUyBNYWRlIFNpbXBsZToga2plcm5laGVuZGVsc2VyLCBlLXBvc3QsIERpc2NvcmQtd2ViaG9va3MsIFdlYiBQdXNoIChWQVBJRCkgbWVkIGlubmVieWdkIG1hbmlmZXN0IG9nIHNlcnZpY2Ugd29ya2VyLWhqZWxwLCBoZWxzZXNqZWtrZXIsIGNyb24tVVJMIG9nIGtyb2tlciBmb3IgYW5kcmUgbW9kdWxlci4gQ0dTaW1wbGVQV0EgZXIgdmFsZ2ZyaXR0LiBNSVQtbGlzZW5zLic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01BU19Ob3RpZmljYXRpb25DZW50ZXIgZXIgaW5zdGFsbGVydC4gR2kgwqtNYW5hZ2UgTUFTX05vdGlmaWNhdGlvbkNlbnRlcsK7IHRpbCBiZXRyb2RkZSBhZG1pbmlzdHJhdG9yZXIsIHNldHQgZS1wb3N0bW90dGFrZXJlIGVsbGVyIERpc2NvcmQtd2ViaG9vaywgb2cgcHVibGlzZXIgc2VydmljZSB3b3JrZXIgdmVkIFdlYiBQdXNoLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTUFTX05vdGlmaWNhdGlvbkNlbnRlciBlciBmamVybmV0Lic7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnRmplcm5lIE1BU19Ob3RpZmljYXRpb25DZW50ZXIsIGRhdGFiYXNldGFiZWxsZXIsIHB1c2gtYWJvbm5lbWVudGVyIG9nIHRpbGdhbmdlcj8nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnSW5nZW4gdGlsZ2FuZyc7CiRsYW5nWyd0YWJfc2V0dGluZ3MnXSA9ICdJbm5zdGlsbGluZ2VyJzsKJGxhbmdbJ3RhYl9ub3RpZmljYXRpb25zJ10gPSAnVmFyc2xpbmdlcic7CiRsYW5nWyd0YWJfaGVscCddID0gJ0hqZWxwJzsKJGxhbmdbJ3RhYl9hYm91dCddID0gJ09tJzsKJGxhbmdbJ3RhYl9jaGFuZ2Vsb2cnXSA9ICdFbmRyaW5nc2xvZ2cnOwokbGFuZ1snZG9uYXRpb25zX3RhYiddID0gJ0RvbmFzam9uZXInOwokbGFuZ1snc2F2ZSddID0gJ0xhZ3JlIGlubnN0aWxsaW5nZXInOwokbGFuZ1snc2F2ZWQnXSA9ICdJbm5zdGlsbGluZ2VuZSBlciBsYWdyZXQuJzsKJGxhbmdbJ3B1Ymxpc2hlZF9zd19vayddID0gJ1NlcnZpY2Ugd29ya2VyIGVyIHB1Ymxpc2VydCB0aWwgbmV0dHJvdCBzb20gbWFzX25jX3N3LmpzLic7CiRsYW5nWydrZXlzX3JvdGF0ZWQnXSA9ICdWQVBJRC1uw7hrbGVyIGVyIHJvdGVydCBvZyBwdXNoLWFib25uZW1lbnQgZXIgdMO4bXQuJzsKJGxhbmdbJ2hpZGVkb25hdGlvbnNzdWJtaXQnXSA9ICdTa2p1bCBmYW5lbiBEb25hc2pvbmVyJzsKJGxhbmdbJ3Nwb25zb3JzJ10gPSAnU3BvbnNvcic7CiRsYW5nWydkb25hdGlvbnN0ZXh0J10gPSAnSHZpcyBkZW5uZSBtb2R1bGVuIGhqZWxwZXIgcHJvc2pla3RldCBkaXR0LCBrYW4gZHUgc3TDuHR0ZSB2aWRlcmUgdXR2aWtsaW5nLic7CiRsYW5nWydkb25hdGlvbnNfc3BvbnNvcl9sb2dvX2FsdCddID0gJ05ld3MgVGFyZ2V0ZWQtbG9nbyc7CiRsYW5nWydkb25hdGlvbnNfc3BvbnNvcl9saW5rJ10gPSAnQmVzw7hrIE5ld3NUYXJnZXRlZCc7CiRsYW5nWydkb25hdGVfYnRuJ10gPSAnRG9uZXInOwokbGFuZ1snc2VjdGlvbl9tb2R1bGVfdWknXSA9ICdNb2R1bC1VSSc7CiRsYW5nWydhZG1pbl9zZWN0aW9uX2xhYmVsJ10gPSAnQWRtaW5pc3RyYXNqb25zbWVueSAoc2Vrc2pvbiknOwokbGFuZ1snYWRtaW5fc2VjdGlvbl9oZWxwJ10gPSAnVmVsZyDDuHZlcnN0ZSBuaXbDpSBpIGFkbWluLW1lbnllbiBkZXIgbW9kdWxlbiBza2FsIHZpc2VzIChzYW1tZSBpZMOpIHNvbSBlZ2VuZGVmaW5lcnRlIGdsb2JhbGUgaW5uc3RpbGxpbmdlcikuIEJydWtlcmUgbWVkIGt1biByZWRha3TDuHJ0aWxnYW5nIGthbiBpa2tlIMOlcG5lIG9tcsOlZGV0IE5ldHRzdGVkYWRtaW4sIHPDpSB1bm5nw6Ugw6UgbGVnZ2UgbW9kdWxlbiBrdW4gZGVyIGh2aXMgc2xpa2UgYnJ1a2VyZSBza2FsIGt1bm5lIGJydWtlIGRlbi4nOwokbGFuZ1snc2hvd19kb25hdGlvbnNfdGFiJ10gPSAnVmlzIGZhbmVuIERvbmFzam9uZXInOwokbGFuZ1snc2hvd19kb25hdGlvbnNfdGFiX2hlbHAnXSA9ICdOw6VyIGRlbiBlciBhdiwgc2tqdWxlcyBEb25hc2pvbmVyIHRpbCBkdSBzbMOlciBkZW4gcMOlIGlnamVuIGhlci4nOwokbGFuZ1sndGhlbWVfY29sb3JfbGFiZWwnXSA9ICdQV0EgdGhlbWUtY29sb3IgKG1hbmlmZXN0IG9nIG1ldGEpJzsKJGxhbmdbJ3RoZW1lX2NvbG9yX2hlbHAnXSA9ICdCcnVrIGhleGZhcmdlLCBmb3IgZWtzZW1wZWwgIzAwNzhkNC4gQnJ1a2VzIHRpbCB0aGVtZS1jb2xvciBvZyBtYW5pZmVzdC1mZWx0ZXQgZm9yIHZpc25pbmdzZmFyZ2UuJzsKJGxhbmdbJ3N0YW5kYWxvbmVfcHdhX2hlYWRpbmcnXSA9ICdPZmZlbnRsaWcgUFdBIChmcml0dHN0w6VlbmRlKSc7CiRsYW5nWydtYXNfbmNfZnJvbnRlbmRfcHdhX2hlbHAnXSA9ICdQw6UgdmFubGlnZSBuZXR0c2lkZXIsIGxlZ2cgdmVkIHdlYiBhcHAgbWFuaWZlc3QsIHRoZW1lLWNvbG9yIG9nIHJlZ2lzdHJlciAvbWFzX25jX3N3LmpzIHZpYSBtZXRhZGF0YS1rcm9rZW4gKGtyZXZlciB7bWV0YWRhdGF9IGkgc2lkZW1hbGVuKS4nOwokbGFuZ1snc3RhbmRhbG9uZV9wd2Ffbm90ZSddID0gJ1Nsw6UgcMOlIGJhcmUgbsOlciBkdSB2aWwgaGEgaW5zdGFsbGFzam9uIG9nIHNlcnZpY2Ugd29ya2VyIHDDpSBvZmZlbnRsaWdlIHNpZGVyLiBBZG1pbiBXZWIgUHVzaCBicnVrZXIgZm9ydHNhdHQgbW9kdWxlbnMgYWRtaW4taGVhZGVyIHV0ZW4gZGV0dGUgdmFsZ2V0Lic7CiRsYW5nWydtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YV9oZWxwJ10gPSAnRmxldHQgcHVzaC1za3JpcHQgaW5uIGkgQ0dTaW1wbGVQV0Egc2luIGtvbWJpbmVydGUgc2VydmljZSB3b3JrZXIgKGtyZXZlciBDR1NpbXBsZVBXQSkuIExhIHN0w6UgYXYgZm9yIMOlIHbDpnJlIHVhdmhlbmdpZy4nOwokbGFuZ1snY2hhaW5fY2dfbm90ZSddID0gJ0V0dGVyIGVuZHJpbmcgYXYgQ0dTaW1wbGVQV0EtZmxldHRpbmcsIG9wcGdyYWRlciBlbGxlciByZWluc3RhbGzDqXIgZXZlbnR1ZWxsZSBtb2R1bGVyIHNvbSBhdmhlbmdlciBhdiBDR1NpbXBsZVBXQSwgb2cgcmVnZW5lcmVyIHNpdGUgd29ya2VyIGZyYSBDR1NpbXBsZVBXQS1hZG1pbi4gTUFTIGxldmVyZXIgaWtrZSBlbiBrb3BpIGF2IENHU2ltcGxlUFdBIChhbm5ldCBsaXNlbnNvbWZhbmcpLic7CiRsYW5nWydhZG1pbl9vd25fbWFuaWZlc3RfaGVscCddID0gJ07DpXIgQ0dTaW1wbGVQV0EtZmxldHRpbmcgZXIgcMOlLCB2aXMgb2dzw6UgZGVubmUgbW9kdWxlbnMgbWFuaWZlc3Qgb2cgdGhlbWUtY29sb3IgaSBtb2R1bC1hZG1pbi1oZWFkZXIgKHNsaWsgYXQgZHUgaWtrZSBiYXJlIHN0b2xlciBww6UgQ0dTaW1wbGVQV0EgZm9yIGRpc3NlIHRhZ2dlbmUpLic7CiRsYW5nWydoZWxwX3BhcmFtX2FjdGlvbiddID0gJ0Zyb250ZW5kLWhhbmRsaW5nIChyZXNlcnZlcnQpLic7CiRsYW5nWydoZWxwX2Jhbm5lcl90aXRsZSddID0gJ1RyZW5nZXIgZHUgbWVyIGhqZWxwPyc7CiRsYW5nWydoZWxwX2Jhbm5lcl9ib2R5J10gPSAnTUFTLW1vZHVsZXIgb2cgZG9rdW1lbnRhc2pvbjonOwokbGFuZ1snaGVscF90YWJfZ2VuZXJhbCddID0gJ092ZXJzaWt0JzsKJGxhbmdbJ2hlbHBfdGFiX2NoYW5uZWxzJ10gPSAnS2FuYWxlcic7CiRsYW5nWydoZWxwX3RhYl9pbnRlcm9wJ10gPSAnSW50ZWdyYXNqb24nOwokbGFuZ1snaGVscF9nZW5lcmFsX2hlYWRpbmcnXSA9ICdIdmEgbW9kdWxlbiBnasO4cic7CiRsYW5nWydoZWxwX2dlbmVyYWxfaW50cm8nXSA9ICdNQVMgTm90aWZpY2F0aW9uIENlbnRlciBsYWdyZXIgb3BlcmF0b3J2YXJzbGVyIGkgZGF0YWJhc2VuIG9nIGthbiBvZ3PDpSBzZW5kZSBrb3BpZXIgcMOlIGUtcG9zdCwgRGlzY29yZCBlbGxlciBXZWIgUHVzaC4nOwokbGFuZ1snaGVscF9nZW5lcmFsX2xpMSddID0gJ0Fib25uZXIgcMOlIHV0dmFsZ3RlIENNUy1oZW5kZWxzZXIgKG55ZSBicnVrZXJlLCBtb2R1bGluc3RhbGxhc2pvbmVyLCB2YWxnZnJpZSBpbm5sb2dnaW5nZmVpbCkuJzsKJGxhbmdbJ2hlbHBfZ2VuZXJhbF9saTInXSA9ICdLasO4ciBwZXJpb2Rpc2tlIHNqZWtrZXIgZnJhIGNyb24gbWVkIGRlbiBzaWduZXJ0ZSBjcm9uLVVSTC1lbi4nOwokbGFuZ1snaGVscF9nZW5lcmFsX2xpMyddID0gJ0tvYmxlIHRpbCBlZ25lIG1vZHVsZXIgbWVkIGRva3VtZW50ZXJ0IGhvb2stbmF2bi4nOwokbGFuZ1snaGVscF9jaGFubmVsc19ib2R5J10gPSAnRS1wb3N0IGJydWtlciBDTVMgTWFkZSBTaW1wbGUgc2luIGdsb2JhbGUgbWFpbGVyIChjbXNfbWFpbGVyKS4gRGlzY29yZCBrcmV2ZXIgSW5jb21pbmcgV2ViaG9vayBob3MgZGlzY29yZC5jb20uIFdlYiBQdXNoIGtyZXZlciBIVFRQUywgR01QIG9nIENvbXBvc2VyLCBWQVBJRC1uw7hrbGVyIG9nIG1hc19uY19zdy5qcyBpIHJvdCAoUHVibGlzZXIta25hcHApLiBWYWxnZnJpdHQ6IGZsZXR0IG1lZCBDR1NpbXBsZVBXQSBodmlzIGR1IHNsw6VyIHDDpSBkZW4gaW50ZWdyYXNqb25lbi4nOwokbGFuZ1snaGVscF9pbnRlcm9wX2JvZHknXSA9ICdLYWxsIENNU01TIEhvb2tNYW5hZ2VyOjpkb19ob29rKFwnTUFTX05vdGlmaWNhdGlvbkNlbnRlcjo6Tm90aWZ5XCcsIGFycmF5KCRwYXlsb2FkKSkgZGVyICRwYXlsb2FkIGhhciBzZXZlcml0eSwgY2F0ZWdvcnksIHRpdGxlLCBib2R5IG9nIHZhbGdmcmkgbWV0YS4gTGFncmVyIHZhcnNlbGV0IG9nIGtqw7hyZXIgdXQta2FuYWxlciBldHRlciBJbm5zdGlsbGluZ2VyLic7CiRsYW5nWydoZWxwX2ludGVyb3BfY2dfYm9keSddID0gJ01BU19Ob3RpZmljYXRpb25DZW50ZXIga3JldmVyIGlra2UgQ0dTaW1wbGVQV0EuIFNvbSBzdGFuZGFyZCB2aXNlciBtb2R1bGVuIGVnZXQgbWFuaWZlc3QsIHRoZW1lLWNvbG9yIG9nIGFkbWluLXNrcmlwdCwgb2cgZHUgcHVibGlzZXJlciBtYXNfbmNfc3cuanMgdGlsIG5ldHRyb3QuIEh2aXMgZHUgc2zDpXIgcMOlIHZhbGdmcmkgQ0dTaW1wbGVQV0EtZmxldHRpbmcgb2cgQ0dTaW1wbGVQV0EgZXIgaW5zdGFsbGVydCwgcmVnaXN0cmVyZXMgU2VydmljZVdvcmtlckFkZG9uIG9nIGFkbWluIGthbiBramVkZSBDR1NpbXBsZVBXQSBHZXRIZWFkZXJIVE1MIChzYW1tZSBpZMOpIHNvbSBDR1dlYlB1c2gpLiBIZWxlIENHU2ltcGxlUFdBLXByb2R1a3RldCBlciBpa2tlIGlubmVieWdkIChsaXNlbnMgb2cgdmVkbGlrZWhvbGQgc2tpbGxlciBzZWcpLiBOw6VyIENHV2ViUHVzaCBlciBpbnN0YWxsZXJ0LCBrYW4gZHUgc2zDpSBww6UgYnJvIHNvbSBrYWxsZXIgYnJvYWRjYXN0X21lc3NhZ2UgKENHRXh0ZW5zaW9ucyBub3RpZmljYXRpb25fbWVzc2FnZSkuIFVubmfDpSBkb2JsZSB2YXJzbGVyIGh2aXMgc2FtbWUgZW5oZXQgYnJ1a2VyIGJlZ2dlIGFib25uZW1lbnRzbGFncmVuZS4nOwokbGFuZ1snc2VjdGlvbl9jZ19zdGFjayddID0gJ0NHU2ltcGxlUFdBIC8gQ0dXZWJQdXNoJzsKJGxhbmdbJ2NnX3N0YWNrX2RldGVjdGVkJ10gPSAnSW5zdGFsbGVydGUgbW9kdWxlciAoa2rDuHJldGlkc2RldGVrc2pvbiknOwokbGFuZ1snY2dfc2ltcGxlcHdhX2xhYmVsJ10gPSAnQ0dTaW1wbGVQV0EnOwokbGFuZ1snY2dfd2VicHVzaF9sYWJlbCddID0gJ0NHV2ViUHVzaCc7CiRsYW5nWydjZ19kZXRlY3RlZF95ZXMnXSA9ICdqYSc7CiRsYW5nWydjZ19kZXRlY3RlZF9ubyddID0gJ25laSc7CiRsYW5nWydjZ3dlYnB1c2hfYnJvYWRjYXN0X2hlbHAnXSA9ICdTZW5kIG9nc8OlIFdlYiBQdXNoIHZpYSBDR1dlYlB1c2ggdGlsIGFsbGUgZW5oZXRlciBpIGRlbnMgYWJvbm5lbWVudHNsYWdlciAodmFsZ2ZyaXR0OyBrcmV2ZXIgQ0dXZWJQdXNoIG9nIENHRXh0ZW5zaW9ucyBub3RpZmljYXRpb25fbWVzc2FnZSkuJzsKJGxhbmdbJ2FkbWluX293bl9tYW5pZmVzdF9oZWxwJ10gPSAnTsOlciBDR1NpbXBsZVBXQSBlciB0aWwgc3RlZGUsIHZpcyBsaWtldmVsIGRlbm5lIG1vZHVsZW5zIG1hbmlmZXN0LWxlbmtlIG9nIHRoZW1lLWNvbG9yIGkgYWRtaW4taGVhZGVyIChzdGFuZGFyZCBhdiBmb3Igw6UgdW5uZ8OlIGRvYmxlIG1hbmlmZXN0LWxlbmtlcikuJzsKJGxhbmdbJ2NnX3N0YWNrX25vdGUnXSA9ICdJbnRlcm50IE1BUyBXZWIgUHVzaCBicnVrZXIgZGVubmUgbW9kdWxlbnMgVkFQSUQtbsO4a2xlciBvZyBtYXNfbmNfc3cuanMgKGVsbGVyIHNhbW1lbnNsw6V0dCBDR1NpbXBsZVBXQS13b3JrZXIgYmFyZSBodmlzIGZsZXR0aW5nIGVyIHDDpSkuIENHV2ViUHVzaCBoYXIgZWduZSBuw7hrbGVyOyBhdmtsYXIgZm9ydmVudG5pbmcgaHZpcyBkdSBicnVrZXIgYnJvZW4uJzsKJGxhbmdbJ2NoYW5nZWxvZ19ub3RlJ10gPSAnRW5kcmluZ3Nsb2dnIGxlc2VzIGZyYSBDSEFOR0VMT0cubWQgaSBtb2R1bG1hcHBlbi4nOwokbGFuZ1snc2VjdGlvbl9jaGFubmVscyddID0gJ0thbmFsZXInOwokbGFuZ1snZW5hYmxlX2VtYWlsJ10gPSAnRS1wb3N0JzsKJGxhbmdbJ2VuYWJsZV9lbWFpbF9oZWxwJ10gPSAnU2VuZCBrb3BpIGF2IGh2ZXJ0IHZhcnNlbCBtZWQgZGVuIGdsb2JhbGUgQ01TLW1haWxlcmVuLic7CiRsYW5nWydlbWFpbF9yZWNpcGllbnRzJ10gPSAnRS1wb3N0bW90dGFrZXJlJzsKJGxhbmdbJ2VtYWlsX3JlY2lwaWVudHNfaGVscCddID0gJ0FkcmVzc2VyIGFkc2tpbHQgbWVkIGtvbW1hIGVsbGVyIG1lbGxvbXJvbS4nOwokbGFuZ1snZW5hYmxlX2Rpc2NvcmQnXSA9ICdEaXNjb3JkLXdlYmhvb2snOwokbGFuZ1snZW5hYmxlX2Rpc2NvcmRfaGVscCddID0gJ1BPU1Qga29tcGFrdGUgZW1iZWRzIHRpbCBEaXNjb3JkIEluY29taW5nIFdlYmhvb2suJzsKJGxhbmdbJ2Rpc2NvcmRfd2ViaG9vayddID0gJ1dlYmhvb2stVVJMJzsKJGxhbmdbJ2VuYWJsZV9wdXNoJ10gPSAnV2ViIFB1c2gnOwokbGFuZ1snZW5hYmxlX3B1c2hfaGVscCddID0gJ1NlbmQgV2ViIFB1c2ggdGlsIGxhZ3JlZGUgYWRtaW5pc3RyYXRvci1hYm9ubmVtZW50Lic7CiRsYW5nWydzZWN0aW9uX3dlYnB1c2gnXSA9ICdXZWIgUHVzaCAoUFdBKSc7CiRsYW5nWyd2YXBpZF9wdWJsaWMnXSA9ICdWQVBJRCBvZmZlbnRsaWcgbsO4a2tlbCc7CiRsYW5nWyd2YXBpZF9jb250YWN0J10gPSAnVkFQSUQga29udGFrdCAobWFpbHRvOiBlbGxlciBodHRwczopJzsKJGxhbmdbJ21hbmlmZXN0X3VybCddID0gJ1dlYiBhcHAgbWFuaWZlc3QtVVJMJzsKJGxhbmdbJ3dlYnB1c2hfaW5zdGFsbF9ub3RlJ10gPSAnSFRUUFMga3JldmVzIGkgcHJvZHVrc2pvbi4gUHVibGlzZXIgbWFzX25jX3N3LmpzIHRpbCByb3QuIENHU2ltcGxlUFdBLWZsZXR0aW5nIGVyIHZhbGdmcml0dCB1bmRlciBNb2R1bC1VSS4nOwokbGFuZ1snYnRuX3N1YnNjcmliZV9wdXNoJ10gPSAnQWJvbm5lciBpIGRlbm5lIG5ldHRsZXNlcmVuJzsKJGxhbmdbJ2J0bl90ZXN0X3B1c2gnXSA9ICdTZW5kIHRlc3QtV2ViIFB1c2gnOwokbGFuZ1snYnRuX3JvdGF0ZV92YXBpZCddID0gJ1JvdGVyIFZBUElELW7DuGtsZXInOwokbGFuZ1snYnRuX3B1Ymxpc2hfc3cnXSA9ICdQdWJsaXNlciBzZXJ2aWNlIHdvcmtlciB0aWwgcm90JzsKJGxhbmdbJ3B1Ymxpc2hfc3dfaGVscCddID0gJ1Nrcml2ZXIgbWFzX25jX3N3LmpzIGkgQ01TLXJvdC4gU2lrcmUgSFRUUFMgb2cgY2FjaGUtaGVhZGVyZSBzb20gcGFzc2VyIG1pbGrDuGV0Lic7CiRsYW5nWydzZWN0aW9uX2V2ZW50cyddID0gJ1ZhbGdmcmllIHNpa2tlcmhldHNoZW5kZWxzZXInOwokbGFuZ1snZXZ0X2xvZ2luX2ZhaWxlZF9vcHQnXSA9ICdWYXJzbGUgdmVkIG1pc2x5a2tlZGUgYWRtaW4taW5ubG9nZ2luZ2VyJzsKJGxhbmdbJ2V2dF9kZWxldGVfdXNlcl9vcHQnXSA9ICdWYXJzbGUgbsOlciBlbiBiYWNrZW5kLWJydWtlciBzbGV0dGVzJzsKJGxhbmdbJ3NlY3Rpb25fcmF0ZXMnXSA9ICdCZWdyZW5zbmluZyc7CiRsYW5nWydyYXRlX3Blcl9ob3VyJ10gPSAnTWFrcyB2YXJzbGVyIHBlciBrYXRlZ29yaSBwZXIgdGltZSc7CiRsYW5nWydzZWN0aW9uX2hlYWx0aCddID0gJ0hlbHNlZ3JlbnNlcic7CiRsYW5nWydoZWFsdGhfbWluX3BocCddID0gJ01pbmltdW0gUEhQLXZlcnNqb24gKGFkdmFyIHVuZGVyKSc7CiRsYW5nWydoZWFsdGhfZGlza19wY3QnXSA9ICdBZHZhciBuw6VyIGxlZGlnIGRpc2sgZ8OlciB1bmRlciBkZW5uZSBwcm9zZW50ZW4nOwokbGFuZ1snaGVhbHRoX2RiX21zJ10gPSAnQWR2YXIgbsOlciBEQi1waW5nIG92ZXJzdGlnZXIgZGV0dGUgYW50YWxsZXQgbXMgKDAgc2zDpXIgYXYpJzsKJGxhbmdbJ3NlY3Rpb25fYWR2YW5jZWQnXSA9ICdBdmFuc2VydCc7CiRsYW5nWydmYXRhbF9zaHV0ZG93bl9vcHQnXSA9ICdUYSBvcHAgc2FuaXRlcnRlIGZhdGFsZSBhdnNsdXRuaW5nc2ZlaWwgc29tIHZhcnNsZXInOwokbGFuZ1snZmF0YWxfc2h1dGRvd25fd2FybiddID0gJ0thbiBpIHNqZWxkbmUgdGlsZmVsbGVyIGZhbmdlIHNlbnNpdGl2ZSBzdGllci4gS3VuIGZvciBiZXRyb2RkZSBhZG1pbmlzdHJhdG9yZXIuJzsKJGxhbmdbJ3NlY3Rpb25fY3JvbiddID0gJ0Nyb24nOwokbGFuZ1snY3Jvbl91cmxfbGFiZWwnXSA9ICdTaWduZXJ0IGNyb24tVVJMJzsKJGxhbmdbJ2Nyb25faGVscCddID0gJ0thbGwgZnJhIGNyb24gbWVkIGN1cmwgZXR0ZXIgZWdldCBpbnRlcnZhbGwuIEVrc2VtcGVsOiBjdXJsIC1mc1MgwqtVUkzCuyc7CiRsYW5nWydjcm9uX3Rva2VuX21pc3NpbmcnXSA9ICcodG9rZW4gbWFuZ2xlcjsgaW5zdGFsbGVyIG1vZHVsZW4gcMOlIG55dHQpJzsKJGxhbmdbJ25vdGlmaWNhdGlvbnNfaW50cm8nXSA9ICdMYWdyZWRlIHZhcnNsZXIgZnJhIENNUy1oZW5kZWxzZXIsIGNyb24sIGhlbHNlc2pla2tlciBvZyBlZ25lIGhvb2tzLic7CiRsYW5nWydub3RpZmljYXRpb25zX2VtcHR5J10gPSAnSW5nZW4gdmFyc2xlciBlbm7DpS4nOwokbGFuZ1snY29sX2NyZWF0ZWQnXSA9ICdUaWRzcHVua3QnOwokbGFuZ1snY29sX3NldmVyaXR5J10gPSAnQWx2b3JsaWdoZXQnOwokbGFuZ1snY29sX2NhdGVnb3J5J10gPSAnS2F0ZWdvcmknOwokbGFuZ1snY29sX3RpdGxlJ10gPSAnVGl0dGVsJzsKJGxhbmdbJ2NvbF9kZWxpdmVyZWQnXSA9ICdMZXZlcnQgKG1hc2tlKSc7CiRsYW5nWydidG5fZGVsZXRlX3NlbGVjdGVkJ10gPSAnU2xldHQgdmFsZ3RlJzsKJGxhbmdbJ2NvbmZpcm1fZGVsZXRlJ10gPSAnU2xldHRlIHZhbGd0ZSB2YXJzbGVyPyc7CiRsYW5nWydwYWdlcl9wcmV2J10gPSAnRm9ycmlnZSc7CiRsYW5nWydwYWdlcl9uZXh0J10gPSAnTmVzdGUnOwokbGFuZ1sncGFnZXJfcGFnZSddID0gJ1NpZGUnOwokbGFuZ1sncGFnZXJfdG90YWwnXSA9ICdyYWRlciB0b3RhbHQnOwokbGFuZ1snZXZ0X25ld191c2VyX3RpdGxlJ10gPSAnTnkgYmFja2VuZC1icnVrZXInOwokbGFuZ1snZXZ0X25ld191c2VyX2JvZHknXSA9ICdCcnVrZXIgb3BwcmV0dGV0Oic7CiRsYW5nWydldnRfbW9kdWxlX2luc3RhbGxlZF90aXRsZSddID0gJ01vZHVsIGluc3RhbGxlcnQnOwokbGFuZ1snZXZ0X21vZHVsZV91cGdyYWRlZF90aXRsZSddID0gJ01vZHVsIG9wcGdyYWRlcnQnOwokbGFuZ1snZXZ0X21vZHVsZV91bmluc3RhbGxlZF90aXRsZSddID0gJ01vZHVsIGF2aW5zdGFsbGVydCc7CiRsYW5nWydldnRfbG9naW5fZmFpbGVkX3RpdGxlJ10gPSAnSW5ubG9nZ2luZyBtaXNseWtrZXQnOwokbGFuZ1snZXZ0X2xvZ2luX2ZhaWxlZF9ib2R5J10gPSAnTWlzbHlra2V0IGlubmxvZ2dpbmcgZm9yIGJydWtlcic7CiRsYW5nWydldnRfdXNlcl9kZWxldGVkX3RpdGxlJ10gPSAnQnJ1a2VyIHNsZXR0ZXQnOwokbGFuZ1snbm90aWZ5X2RlZmF1bHRfdGl0bGUnXSA9ICdWYXJzZWwnOwokbGFuZ1snZmF0YWxfbm90aWZ5X3RpdGxlJ10gPSAnRmF0YWwgZmVpbCAoc2FuaXRlcnQpJzsKJGxhbmdbJ2Nyb25fcGluZ190aXRsZSddID0gJ0Nyb24gaGVhcnRiZWF0JzsKJGxhbmdbJ2Nyb25fcGluZ19ib2R5J10gPSAnUGxhbmxhZ3QgY3Jvbi1rYWxsIGJsZSBrasO4cnQuJzsKJGxhbmdbJ2hlYWx0aF9pc3N1ZV90aXRsZSddID0gJ0hlbHNlYWR2YXJzZWwnOwokbGFuZ1sncHVzaF90ZXN0X3RpdGxlJ10gPSAnTUFTIE5vdGlmaWNhdGlvbiBDZW50ZXItdGVzdCc7CiRsYW5nWydwdXNoX3Rlc3RfYm9keSddID0gJ0RldHRlIGVyIGVuIHRlc3QtV2ViIFB1c2ggZnJhIE1BUyBOb3RpZmljYXRpb24gQ2VudGVyLic7CiRsYW5nWydldmVudGRlc2NfTm90aWZ5J10gPSAnVXRsw7hzZXMgbsOlciBlbiBhbm5lbiBtb2R1bCBlbGxlciBob29rIHNlbmRlciBldCB0aWxwYXNzZXQgdmFyc2VsIHRpbCBNQVNfTm90aWZpY2F0aW9uQ2VudGVyLic7CiRsYW5nWydldmVudGhlbHBfTm90aWZ5J10gPSAnUGFyYW1ldGVyZTogc2V2ZXJpdHkgKGluZm98d2FybmluZ3xlcnJvciksIGNhdGVnb3J5LCB0aXRsZSwgYm9keSwgdmFsZ2ZyaSBtZXRhLWFycmF5Lic7CiRsYW5nWydhYm91dF9oZWFkaW5nX21vZHVsZSddID0gJ01vZHVsZGV0YWxqZXInOwokbGFuZ1snYWJvdXRfbGFiZWxfbmFtZSddID0gJ05hdm4nOwokbGFuZ1snYWJvdXRfbGFiZWxfdmVyc2lvbiddID0gJ1ZlcnNqb24nOwokbGFuZ1snYWJvdXRfbGFiZWxfYXV0aG9yJ10gPSAnRm9yZmF0dGVyJzsKJGxhbmdbJ2Fib3V0X2xhYmVsX2VtYWlsJ10gPSAnRS1wb3N0JzsKJGxhbmdbJ2Fib3V0X2xhYmVsX2xpY2Vuc2UnXSA9ICdMaXNlbnMnOwokbGFuZ1snYWJvdXRfbGljZW5zZV92YWx1ZSddID0gJ01JVCc7CiRsYW5nWydhYm91dF9oZWFkaW5nX2NvbXBhdCddID0gJ0tvbXBhdGliaWxpdGV0JzsKJGxhbmdbJ2Fib3V0X21pbl9jbXMnXSA9ICdNaW5pbXVtIENNUyBNYWRlIFNpbXBsZSc7CiRsYW5nWydhYm91dF9taW5fcGhwJ10gPSAnTWluaW11bSBQSFAnOwokbGFuZ1snYWJvdXRfaGVhZGluZ19zdW1tYXJ5J10gPSAnU2FtbWVuZHJhZyc7Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/mas_nc_cg_interop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE9wdGlvbmFsIGludGVncmF0aW9uIHdpdGggQ0dTaW1wbGVQV0EgYW5kIENHV2ViUHVzaCB3aGVuIHRob3NlIG1vZHVsZXMgYXJlIGluc3RhbGxlZC4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0NHSW50ZXJvcAp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGhhc0NHU2ltcGxlUHdhKCk6IGJvb2wKICAgIHsKICAgICAgICAkbSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dTaW1wbGVQV0EnKTsKCiAgICAgICAgcmV0dXJuICRtIGluc3RhbmNlb2YgQ01TTW9kdWxlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzQ0dXZWJQdXNoKCk6IGJvb2wKICAgIHsKICAgICAgICAkbSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dXZWJQdXNoJyk7CgogICAgICAgIHJldHVybiAkbSBpbnN0YW5jZW9mIENNU01vZHVsZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkbWluIGhlYWRlciBwcmVmaXg6IHNhbWUgcGF0dGVybiBhcyBDR1dlYlB1c2g6OkdldEhlYWRlckhUTUwgKENHU2ltcGxlUFdBIGluaXQgKyBTVyBjb21iaW5lcikuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWRtaW5Qd2FIZWFkZXJQcmVmaXgoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJG0gPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ0NHU2ltcGxlUFdBJyk7CiAgICAgICAgaWYgKCEkbSBpbnN0YW5jZW9mIENNU01vZHVsZSB8fCAhbWV0aG9kX2V4aXN0cygkbSwgJ0dldEhlYWRlckhUTUwnKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSAkbS0+R2V0SGVhZGVySFRNTCgpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICAgICAgICAgICAgICBhdWRpdCgwLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdDR1NpbXBsZVBXQSBHZXRIZWFkZXJIVE1MIGZhaWxlZCAoZGV0YWlscyBvbWl0dGVkKScpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQnJvYWRjYXN0IHRoZSBzYW1lIHRpdGxlIGFuZCBib2R5IHRocm91Z2ggQ0dXZWJQdXNoIHRvIGFsbCBrbm93biBzdWJzY3JpcHRpb25zIChvcHRpb25hbCkuCiAgICAgKgogICAgICogQHJldHVybiBib29sIHRydWUgaWYgYnJvYWRjYXN0X21lc3NhZ2UgcmFuIHdpdGhvdXQgdGhyb3dpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnlDR1dlYlB1c2hCcm9hZGNhc3QoQ01TTW9kdWxlICRtYXMsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoIWlzX29iamVjdCgkbWFzKSB8fCAkbWFzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfY2d3ZWJwdXNoX2Jyb2FkY2FzdCcsICcwJykgIT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgICRjZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnQ0dXZWJQdXNoJyk7CiAgICAgICAgaWYgKCEkY2cgaW5zdGFuY2VvZiBDTVNNb2R1bGUgfHwgIW1ldGhvZF9leGlzdHMoJGNnLCAnYnJvYWRjYXN0X21lc3NhZ2UnKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICghY2xhc3NfZXhpc3RzKCdub3RpZmljYXRpb25fbWVzc2FnZScpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1zZyA9IG5ldyBub3RpZmljYXRpb25fbWVzc2FnZSgpOwogICAgICAgICAgICAkbXNnLT5tb2R1bGUgPSAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcic7CiAgICAgICAgICAgICRtc2ctPnN1YmplY3QgPSBtYl9zdWJzdHIoJHRpdGxlLCAwLCAyNTApOwogICAgICAgICAgICAkbXNnLT5ib2R5ID0gJGJvZHk7CiAgICAgICAgICAgICRjZy0+YnJvYWRjYXN0X21lc3NhZ2UoJG1zZyk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYXVkaXQnKSkgewogICAgICAgICAgICAgICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnQ0dXZWJQdXNoIGJyaWRnZSBicm9hZGNhc3QgZmFpbGVkIChkZXRhaWxzIG9taXR0ZWQpJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_changelog.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pbmltYWwgTWFya2Rvd24gdG8gSFRNTCBmb3IgQ0hBTkdFTE9HLm1kIChNQVNfT3BlblN0cmVldE1hcC1jb21wYXRpYmxlKS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0NoYW5nZWxvZwp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1hcmtkb3duVG9IdG1sKHN0cmluZyAkbWFya2Rvd24pOiBzdHJpbmcKICAgIHsKICAgICAgICAkbGluZXMgPSBwcmVnX3NwbGl0KCcvXHJcbnxccnxcbi8nLCAkbWFya2Rvd24pOwogICAgICAgIGlmICghaXNfYXJyYXkoJGxpbmVzKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICRvdXQgPSBhcnJheSgpOwogICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICgkbGluZXMgYXMgJGxpbmUpIHsKICAgICAgICAgICAgaWYgKCRsaW5lID09PSAnJykgewogICAgICAgICAgICAgICAgaWYgKCRpbkxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAnPC91bD4nOwogICAgICAgICAgICAgICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXiMjI1xzKyguKykkLycsICRsaW5lLCAkbSkpIHsKICAgICAgICAgICAgICAgIGlmICgkaW5MaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJzwvdWw+JzsKICAgICAgICAgICAgICAgICAgICAkaW5MaXN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0W10gPSAnPGgzPicgLiBjbXNfaHRtbGVudGl0aWVzKCRtWzFdKSAuICc8L2gzPic7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14jI1xzKyguKykkLycsICRsaW5lLCAkbSkpIHsKICAgICAgICAgICAgICAgIGlmICgkaW5MaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgJG91dFtdID0gJzwvdWw+JzsKICAgICAgICAgICAgICAgICAgICAkaW5MaXN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0W10gPSAnPGgyPicgLiBjbXNfaHRtbGVudGl0aWVzKCRtWzFdKSAuICc8L2gyPic7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocHJlZ19tYXRjaCgnL14jXHMrKC4rKSQvJywgJGxpbmUsICRtKSkgewogICAgICAgICAgICAgICAgaWYgKCRpbkxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAnPC91bD4nOwogICAgICAgICAgICAgICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRvdXRbXSA9ICc8aDI+JyAuIGNtc19odG1sZW50aXRpZXMoJG1bMV0pIC4gJzwvaDI+JzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcvXlstKl1ccysoLispJC8nLCAkbGluZSwgJG0pKSB7CiAgICAgICAgICAgICAgICBpZiAoISRpbkxpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkb3V0W10gPSAnPHVsPic7CiAgICAgICAgICAgICAgICAgICAgJGluTGlzdCA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkb3V0W10gPSAnPGxpPicgLiBjbXNfaHRtbGVudGl0aWVzKCRtWzFdKSAuICc8L2xpPic7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoJGluTGlzdCkgewogICAgICAgICAgICAgICAgJG91dFtdID0gJzwvdWw+JzsKICAgICAgICAgICAgICAgICRpbkxpc3QgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkb3V0W10gPSAnPHA+JyAuIGNtc19odG1sZW50aXRpZXMoJGxpbmUpIC4gJzwvcD4nOwogICAgICAgIH0KICAgICAgICBpZiAoJGluTGlzdCkgewogICAgICAgICAgICAkb3V0W10gPSAnPC91bD4nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoIlxuIiwgJG91dCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_core_events.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1hcHMgQ29yZTo6KiBtb2R1bGUgZXZlbnRzIHRvIHJvdXRlciBwYXlsb2Fkcy4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0NvcmVFdmVudHMKewogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXk8c3RyaW5nLG1peGVkPiAkcGFyYW1zCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFuZGxlKENNU01vZHVsZSAkbW9kLCBzdHJpbmcgJG9yaWdpbmF0b3IsIHN0cmluZyAkZXZlbnRuYW1lLCBhcnJheSAkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgIGlmICgkb3JpZ2luYXRvciAhPT0gJ0NvcmUnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRwYXlsb2FkID0gbnVsbDsKCiAgICAgICAgc3dpdGNoICgkZXZlbnRuYW1lKSB7CiAgICAgICAgICAgIGNhc2UgJ0FkZFVzZXJQb3N0JzoKICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHBhcmFtc1sndXNlciddKSAmJiBpc19vYmplY3QoJHBhcmFtc1sndXNlciddKSkgewogICAgICAgICAgICAgICAgICAgICR1ID0gJHBhcmFtc1sndXNlciddOwogICAgICAgICAgICAgICAgICAgICR1bmFtZSA9IGlzc2V0KCR1LT51c2VybmFtZSkgPyAoc3RyaW5nKSAkdS0+dXNlcm5hbWUgOiAnPyc7CiAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeScgPT4gJ3VzZXInLAogICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlJyA9PiAnQ29yZTo6QWRkVXNlclBvc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICRtb2QtPkxhbmcoJ2V2dF9uZXdfdXNlcl90aXRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICAnYm9keScgPT4gJG1vZC0+TGFuZygnZXZ0X25ld191c2VyX2JvZHknKSAuICcgJyAuICR1bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KCd1c2VybmFtZScgPT4gJHVuYW1lKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdNb2R1bGVJbnN0YWxsZWQnOgogICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnc2V2ZXJpdHknID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnknID0+ICdtb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICdzb3VyY2UnID0+ICdDb3JlOjpNb2R1bGVJbnN0YWxsZWQnLAogICAgICAgICAgICAgICAgICAgICd0aXRsZScgPT4gJG1vZC0+TGFuZygnZXZ0X21vZHVsZV9pbnN0YWxsZWRfdGl0bGUnKSwKICAgICAgICAgICAgICAgICAgICAnYm9keScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICdtZXRhJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnID0+IGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkgPyAoc3RyaW5nKSAkcGFyYW1zWyduYW1lJ10gOiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nID0+IGlzc2V0KCRwYXJhbXNbJ3ZlcnNpb24nXSkgPyAoc3RyaW5nKSAkcGFyYW1zWyd2ZXJzaW9uJ10gOiAnJywKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnTW9kdWxlVXBncmFkZWQnOgogICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAnc2V2ZXJpdHknID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcnknID0+ICdtb2R1bGUnLAogICAgICAgICAgICAgICAgICAgICdzb3VyY2UnID0+ICdDb3JlOjpNb2R1bGVVcGdyYWRlZCcsCiAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJyA9PiAkbW9kLT5MYW5nKCdldnRfbW9kdWxlX3VwZ3JhZGVkX3RpdGxlJyksCiAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+IChpc3NldCgkcGFyYW1zWyduYW1lJ10pID8gKHN0cmluZykgJHBhcmFtc1snbmFtZSddIDogJycpIC4gJyAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gKGlzc2V0KCRwYXJhbXNbJ29sZHZlcnNpb24nXSkgPyAoc3RyaW5nKSAkcGFyYW1zWydvbGR2ZXJzaW9uJ10gOiAnJykgLiAnIOKGkiAnCiAgICAgICAgICAgICAgICAgICAgICAgIC4gKGlzc2V0KCRwYXJhbXNbJ25ld3ZlcnNpb24nXSkgPyAoc3RyaW5nKSAkcGFyYW1zWyduZXd2ZXJzaW9uJ10gOiAnJyksCiAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAnb2xkdmVyc2lvbicgPT4gaXNzZXQoJHBhcmFtc1snb2xkdmVyc2lvbiddKSA/IChzdHJpbmcpICRwYXJhbXNbJ29sZHZlcnNpb24nXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAnbmV3dmVyc2lvbicgPT4gaXNzZXQoJHBhcmFtc1snbmV3dmVyc2lvbiddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25ld3ZlcnNpb24nXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdNb2R1bGVVbmluc3RhbGxlZCc6CiAgICAgICAgICAgICAgICAkcGF5bG9hZCA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdzZXZlcml0eScgPT4gJ3dhcm5pbmcnLAogICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeScgPT4gJ21vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZScgPT4gJ0NvcmU6Ok1vZHVsZVVuaW5zdGFsbGVkJywKICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICRtb2QtPkxhbmcoJ2V2dF9tb2R1bGVfdW5pbnN0YWxsZWRfdGl0bGUnKSwKICAgICAgICAgICAgICAgICAgICAnYm9keScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnLAogICAgICAgICAgICAgICAgICAgICdtZXRhJyA9PiBhcnJheSgnbmFtZScgPT4gaXNzZXQoJHBhcmFtc1snbmFtZSddKSA/IChzdHJpbmcpICRwYXJhbXNbJ25hbWUnXSA6ICcnKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ0xvZ2luRmFpbGVkJzoKICAgICAgICAgICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZXZ0X2xvZ2luX2ZhaWxlZCcsICcwJykgIT09ICcxJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR1c2VyID0gaXNzZXQoJHBhcmFtc1sndXNlciddKSA/IChzdHJpbmcpICRwYXJhbXNbJ3VzZXInXSA6ICc/JzsKICAgICAgICAgICAgICAgICRwYXlsb2FkID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnd2FybmluZycsCiAgICAgICAgICAgICAgICAgICAgJ2NhdGVnb3J5JyA9PiAnc2VjdXJpdHknLAogICAgICAgICAgICAgICAgICAgICdzb3VyY2UnID0+ICdDb3JlOjpMb2dpbkZhaWxlZCcsCiAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJyA9PiAkbW9kLT5MYW5nKCdldnRfbG9naW5fZmFpbGVkX3RpdGxlJyksCiAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+ICRtb2QtPkxhbmcoJ2V2dF9sb2dpbl9mYWlsZWRfYm9keScpIC4gJyAnIC4gJHVzZXIsCiAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KCd1c2VyJyA9PiAkdXNlciksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdEZWxldGVVc2VyUG9zdCc6CiAgICAgICAgICAgICAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2V2dF9kZWxldGVfdXNlcicsICcwJykgIT09ICcxJykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghZW1wdHkoJHBhcmFtc1sndXNlciddKSAmJiBpc19vYmplY3QoJHBhcmFtc1sndXNlciddKSkgewogICAgICAgICAgICAgICAgICAgICR1ID0gJHBhcmFtc1sndXNlciddOwogICAgICAgICAgICAgICAgICAgICR1bmFtZSA9IGlzc2V0KCR1LT51c2VybmFtZSkgPyAoc3RyaW5nKSAkdS0+dXNlcm5hbWUgOiAnPyc7CiAgICAgICAgICAgICAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnd2FybmluZycsCiAgICAgICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeScgPT4gJ3VzZXInLAogICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlJyA9PiAnQ29yZTo6RGVsZXRlVXNlclBvc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+ICRtb2QtPkxhbmcoJ2V2dF91c2VyX2RlbGV0ZWRfdGl0bGUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+ICR1bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgJ21ldGEnID0+IGFycmF5KCd1c2VybmFtZScgPT4gJHVuYW1lKSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfYXJyYXkoJHBheWxvYWQpKSB7CiAgICAgICAgICAgIE1BU19OQ19Sb3V0ZXI6Om5vdGlmeSgkbW9kLCAkcGF5bG9hZCk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_dispatcher.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEVtYWlsLCBEaXNjb3JkLCBXZWIgUHVzaCBkZWxpdmVyeSBmb3Igc2F2ZWQgbm90aWZpY2F0aW9ucy4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX0Rpc3BhdGNoZXIKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludCBiaXRtYXNrIE1BU19OQ19Sb3V0ZXI6OkRFTElWRVJfKgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGl2ZXIoQ01TTW9kdWxlICRtb2QsIGludCAkaWQsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSwgc3RyaW5nICRzZXZlcml0eSwgc3RyaW5nICRjYXRlZ29yeSk6IGludAogICAgewogICAgICAgICRtYXNrID0gMDsKICAgICAgICAkc3ViamVjdCA9ICdbJyAuICRzZXZlcml0eSAuICddICcgLiAkdGl0bGU7CgogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX2VtYWlsJywgJzEnKSA9PT0gJzEnKSB7CiAgICAgICAgICAgIGlmIChzZWxmOjpzZW5kRW1haWwoJG1vZCwgJHN1YmplY3QsICRib2R5KSkgewogICAgICAgICAgICAgICAgJG1hc2sgfD0gTUFTX05DX1JvdXRlcjo6REVMSVZFUl9FTUFJTDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9kaXNjb3JkJywgJzAnKSA9PT0gJzEnKSB7CiAgICAgICAgICAgIGlmIChzZWxmOjpzZW5kRGlzY29yZCgkbW9kLCAkdGl0bGUsICRib2R5LCAkc2V2ZXJpdHkpKSB7CiAgICAgICAgICAgICAgICAkbWFzayB8PSBNQVNfTkNfUm91dGVyOjpERUxJVkVSX0RJU0NPUkQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHdhbnRXZWJQdXNoID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9wdXNoJywgJzEnKSA9PT0gJzEnCiAgICAgICAgICAgIHx8ICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19jZ3dlYnB1c2hfYnJvYWRjYXN0JywgJzAnKSA9PT0gJzEnOwogICAgICAgIGlmICgkd2FudFdlYlB1c2gpIHsKICAgICAgICAgICAgaWYgKE1BU19OQ19XZWJQdXNoOjpzZW5kVG9BZG1pbnMoJG1vZCwgJHRpdGxlLCAkYm9keSkpIHsKICAgICAgICAgICAgICAgICRtYXNrIHw9IE1BU19OQ19Sb3V0ZXI6OkRFTElWRVJfUFVTSDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRtYXNrOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHNlbmRFbWFpbChDTVNNb2R1bGUgJG1vZCwgc3RyaW5nICRzdWJqZWN0LCBzdHJpbmcgJGJvZHkpOiBib29sCiAgICB7CiAgICAgICAgJHRvUmF3ID0gdHJpbSgoc3RyaW5nKSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW1haWxfcmVjaXBpZW50cycsICcnKSk7CiAgICAgICAgaWYgKCR0b1JhdyA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkcGFydHMgPSBwcmVnX3NwbGl0KCcvW1xzLDtdKy8nLCAkdG9SYXcsIC0xLCBQUkVHX1NQTElUX05PX0VNUFRZKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRwYXJ0cykgfHwgY291bnQoJHBhcnRzKSA8IDEpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1haWwgPSBuZXcgY21zX21haWxlcih0cnVlKTsKICAgICAgICAgICAgJHZhbGlkID0gMDsKICAgICAgICAgICAgZm9yZWFjaCAoJHBhcnRzIGFzICRhZGRyKSB7CiAgICAgICAgICAgICAgICAkYWRkciA9IHRyaW0oKHN0cmluZykgJGFkZHIpOwogICAgICAgICAgICAgICAgaWYgKCRhZGRyICE9PSAnJyAmJiBmaWx0ZXJfdmFyKCRhZGRyLCBGSUxURVJfVkFMSURBVEVfRU1BSUwpKSB7CiAgICAgICAgICAgICAgICAgICAgJG1haWwtPkFkZEFkZHJlc3MoJGFkZHIpOwogICAgICAgICAgICAgICAgICAgICR2YWxpZCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdmFsaWQgPCAxKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1haWwtPlNldFN1YmplY3QoJHN1YmplY3QpOwogICAgICAgICAgICAkbWFpbC0+U2V0Qm9keSgkYm9keSk7CiAgICAgICAgICAgICRtYWlsLT5TZW5kKCk7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnYXVkaXQnKSkgewogICAgICAgICAgICAgICAgYXVkaXQoMCwgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnRW1haWwgZGVsaXZlcnkgZmFpbGVkIChkZXRhaWxzIG9taXR0ZWQpJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2VuZERpc2NvcmQoQ01TTW9kdWxlICRtb2QsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSwgc3RyaW5nICRzZXZlcml0eSk6IGJvb2wKICAgIHsKICAgICAgICAkdXJsID0gdHJpbSgoc3RyaW5nKSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZGlzY29yZF93ZWJob29rJywgJycpKTsKICAgICAgICBpZiAoJHVybCA9PT0gJycgfHwgIWZpbHRlcl92YXIoJHVybCwgRklMVEVSX1ZBTElEQVRFX1VSTCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAkaG9zdCA9IHBhcnNlX3VybCgkdXJsLCBQSFBfVVJMX0hPU1QpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRob3N0KQogICAgICAgICAgICB8fCAoc3RyaXBvcygkaG9zdCwgJ2Rpc2NvcmQnKSA9PT0gZmFsc2UgJiYgc3RyaXBvcygkaG9zdCwgJ2Rpc2NvcmRhcHAnKSA9PT0gZmFsc2UpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRjb2xvciA9IDM0NDcwMDM7CiAgICAgICAgaWYgKCRzZXZlcml0eSA9PT0gJ3dhcm5pbmcnKSB7CiAgICAgICAgICAgICRjb2xvciA9IDE2Nzc2OTYwOwogICAgICAgIH0KICAgICAgICBpZiAoJHNldmVyaXR5ID09PSAnZXJyb3InKSB7CiAgICAgICAgICAgICRjb2xvciA9IDE1MTU4MzMyOwogICAgICAgIH0KCiAgICAgICAgJHBheWxvYWQgPSBhcnJheSgKICAgICAgICAgICAgJ2VtYmVkcycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+IG1iX3N1YnN0cigkdGl0bGUsIDAsIDI1NiksCiAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0aW9uJyA9PiBtYl9zdWJzdHIoJGJvZHksIDAsIDQwOTApLAogICAgICAgICAgICAgICAgICAgICdjb2xvcicgPT4gJGNvbG9yLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgICAgICRqc29uID0ganNvbl9lbmNvZGUoJHBheWxvYWQsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgICAgICBpZiAoJGpzb24gPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRjaCA9IGN1cmxfaW5pdCgkdXJsKTsKICAgICAgICBpZiAoJGNoID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRjaCwgYXJyYXkoCiAgICAgICAgICAgIENVUkxPUFRfUE9TVCA9PiB0cnVlLAogICAgICAgICAgICBDVVJMT1BUX0hUVFBIRUFERVIgPT4gYXJyYXkoJ0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvbicpLAogICAgICAgICAgICBDVVJMT1BUX1BPU1RGSUVMRFMgPT4gJGpzb24sCiAgICAgICAgICAgIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gdHJ1ZSwKICAgICAgICAgICAgQ1VSTE9QVF9USU1FT1VUID0+IDEyLAogICAgICAgICAgICBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUID0+IDgsCiAgICAgICAgKSk7CiAgICAgICAgJHJlcyA9IGN1cmxfZXhlYygkY2gpOwogICAgICAgICRjb2RlID0gKGludCkgY3VybF9nZXRpbmZvKCRjaCwgQ1VSTElORk9fSFRUUF9DT0RFKTsKICAgICAgICBjdXJsX2Nsb3NlKCRjaCk7CgogICAgICAgIHJldHVybiAkY29kZSA+PSAyMDAgJiYgJGNvZGUgPCAzMDA7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_health.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFN5c3RlbSBoZWFsdGggcHJvYmVzIChkaXNrLCBQSFAgdmVyc2lvbiwgREIgbGF0ZW5jeSkuCiAqLwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCmZpbmFsIGNsYXNzIE1BU19OQ19IZWFsdGgKewogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZyxzdHJpbmd8aW50fGZsb2F0PgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJ1bihDTVNNb2R1bGUgJG1vZCk6IGFycmF5CiAgICB7CiAgICAgICAgJG91dCA9IGFycmF5KCk7CgogICAgICAgICRtaW5QaHAgPSB0cmltKChzdHJpbmcpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfbWluX3BocCcsICc3LjQuMCcpKTsKICAgICAgICBpZiAoJG1pblBocCA9PT0gJycpIHsKICAgICAgICAgICAgJG1pblBocCA9ICc3LjQuMCc7CiAgICAgICAgfQogICAgICAgICRjdXIgPSBQSFBfVkVSU0lPTjsKICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKCRjdXIsICRtaW5QaHAsICc8JykpIHsKICAgICAgICAgICAgJG91dFsncGhwJ10gPSAnUEhQICcgLiAkY3VyIC4gJyBpcyBiZWxvdyBjb25maWd1cmVkIG1pbmltdW0gJyAuICRtaW5QaHA7CiAgICAgICAgfQoKICAgICAgICAkZGlza1BjdCA9IChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfZGlza19wY3QnLCAnMTAnKTsKICAgICAgICBpZiAoJGRpc2tQY3QgPCAxKSB7CiAgICAgICAgICAgICRkaXNrUGN0ID0gMTA7CiAgICAgICAgfQogICAgICAgICRjb25maWcgPSBjbXNfY29uZmlnOjpnZXRfaW5zdGFuY2UoKTsKICAgICAgICAkcm9vdCA9IGlzc2V0KCRjb25maWdbJ3Jvb3RfcGF0aCddKSA/IChzdHJpbmcpICRjb25maWdbJ3Jvb3RfcGF0aCddIDogZGlybmFtZShkaXJuYW1lKGRpcm5hbWUoX19ESVJfXykpKTsKICAgICAgICAkZnJlZSA9IEBkaXNrX2ZyZWVfc3BhY2UoJHJvb3QpOwogICAgICAgICR0b3RhbCA9IEBkaXNrX3RvdGFsX3NwYWNlKCRyb290KTsKICAgICAgICBpZiAoJGZyZWUgIT09IGZhbHNlICYmICR0b3RhbCAhPT0gZmFsc2UgJiYgJHRvdGFsID4gMCkgewogICAgICAgICAgICAkcGN0RnJlZSA9ICgkZnJlZSAvICR0b3RhbCkgKiAxMDAuMDsKICAgICAgICAgICAgaWYgKCRwY3RGcmVlIDwgKGZsb2F0KSAkZGlza1BjdCkgewogICAgICAgICAgICAgICAgJG91dFsnZGlzayddID0gJ0xvdyBkaXNrIHNwYWNlIG9uIGFwcGxpY2F0aW9uIHJvb3Q6IGFib3V0ICcgLiByb3VuZCgkcGN0RnJlZSwgMSkgLiAnJSBmcmVlICh0aHJlc2hvbGQgJyAuICRkaXNrUGN0IC4gJyUpLic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRtYXhNcyA9IChpbnQpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfZGJfbXMnLCAnMjAwMCcpOwogICAgICAgIGlmICgkbWF4TXMgPiAwKSB7CiAgICAgICAgICAgICRkYiA9ICRtb2QtPkdldERiKCk7CiAgICAgICAgICAgICR0MCA9IG1pY3JvdGltZSh0cnVlKTsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCdTRUxFQ1QgMScpOwogICAgICAgICAgICAkbXMgPSAobWljcm90aW1lKHRydWUpIC0gJHQwKSAqIDEwMDAuMDsKICAgICAgICAgICAgaWYgKCRtcyA+ICRtYXhNcykgewogICAgICAgICAgICAgICAgJG91dFsnZGInXSA9ICdEYXRhYmFzZSBwaW5nIHNsb3c6IGFib3V0ICcgLiByb3VuZCgkbXMpIC4gJyBtcyAodGhyZXNob2xkICcgLiAkbWF4TXMgLiAnIG1zKS4nOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_push_repo.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFB1c2ggc3Vic2NyaXB0aW9uIHBlcnNpc3RlbmNlIChKU09OIGJsb2JzKS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX1B1c2hSZXBvCnsKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxpbnQsYXJyYXk8c3RyaW5nLG1peGVkPj4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkQWxsKENNU01vZHVsZSAkbW9kKTogYXJyYXkKICAgIHsKICAgICAgICAkZGIgPSAkbW9kLT5HZXREYigpOwogICAgICAgICRzcWwgPSAnU0VMRUNUIGlkLCBzdWJzY3JpcHRpb25fanNvbiwgYWRtaW5fdWlkLCBjcmVhdGVkLCBsYXN0X3NlZW4gRlJPTSAnIC4gTUFTX05DX1RhYmxlczo6cHVzaF9zdWJzY3JpcHRpb25zKCk7CiAgICAgICAgJHJvd3MgPSAkZGItPkdldEFycmF5KCRzcWwpOwogICAgICAgIGlmICghaXNfYXJyYXkoJHJvd3MpKSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyb3dzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZyxtaXhlZD4gJHN1YnNjcmlwdGlvbiBkZWNvZGVkIFB1c2hTdWJzY3JpcHRpb24gSlNPTiAoZW5kcG9pbnQsIGtleXMpCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F2ZShDTVNNb2R1bGUgJG1vZCwgc3RyaW5nICRpZCwgYXJyYXkgJHN1YnNjcmlwdGlvbiwgaW50ICRhZG1pblVpZCk6IHZvaWQKICAgIHsKICAgICAgICAkZGIgPSAkbW9kLT5HZXREYigpOwogICAgICAgICRqc29uID0ganNvbl9lbmNvZGUoJHN1YnNjcmlwdGlvbiwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fVU5FU0NBUEVEX1VOSUNPREUpOwogICAgICAgIGlmICgkanNvbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkbm93ID0gdGltZSgpOwogICAgICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgnU0VMRUNUIGlkIEZST00gJyAuIE1BU19OQ19UYWJsZXM6OnB1c2hfc3Vic2NyaXB0aW9ucygpIC4gJyBXSEVSRSBpZCA9ID8nLCBhcnJheSgkaWQpKTsKICAgICAgICBpZiAoJGV4aXN0cykgewogICAgICAgICAgICAkc3FsID0gJ1VQREFURSAnIC4gTUFTX05DX1RhYmxlczo6cHVzaF9zdWJzY3JpcHRpb25zKCkKICAgICAgICAgICAgICAgIC4gJyBTRVQgc3Vic2NyaXB0aW9uX2pzb24gPSA/LCBhZG1pbl91aWQgPSA/LCBsYXN0X3NlZW4gPSA/IFdIRVJFIGlkID0gPyc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkc3FsLCBhcnJheSgkanNvbiwgJGFkbWluVWlkLCAkbm93LCAkaWQpKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc3FsID0gJ0lOU0VSVCBJTlRPICcgLiBNQVNfTkNfVGFibGVzOjpwdXNoX3N1YnNjcmlwdGlvbnMoKQogICAgICAgICAgICAgICAgLiAnIChpZCwgc3Vic2NyaXB0aW9uX2pzb24sIGFkbWluX3VpZCwgY3JlYXRlZCwgbGFzdF9zZWVuKSBWQUxVRVMgKD8sPyw/LD8sPyknOwogICAgICAgICAgICAkZGItPkV4ZWN1dGUoJHNxbCwgYXJyYXkoJGlkLCAkanNvbiwgJGFkbWluVWlkLCAkbm93LCAkbm93KSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlKENNU01vZHVsZSAkbW9kLCBzdHJpbmcgJGlkKTogdm9pZAogICAgewogICAgICAgICRkYiA9ICRtb2QtPkdldERiKCk7CiAgICAgICAgJGRiLT5FeGVjdXRlKCdERUxFVEUgRlJPTSAnIC4gTUFTX05DX1RhYmxlczo6cHVzaF9zdWJzY3JpcHRpb25zKCkgLiAnIFdIRVJFIGlkID0gPycsIGFycmF5KCRpZCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsbWl4ZWQ+fG51bGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdWJzY3JpcHRpb25Gcm9tUm93KGFycmF5ICRyb3cpOiA/YXJyYXkKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRyb3dbJ3N1YnNjcmlwdGlvbl9qc29uJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICAkZGVjID0ganNvbl9kZWNvZGUoKHN0cmluZykgJHJvd1snc3Vic2NyaXB0aW9uX2pzb24nXSwgdHJ1ZSk7CgogICAgICAgIHJldHVybiBpc19hcnJheSgkZGVjKSA/ICRkZWMgOiBudWxsOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_pwa_addon.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE9wdGlvbmFsIENHU2ltcGxlUFdBIHNlcnZpY2Ugd29ya2VyIG1lcmdlIChvbmx5IHdoZW4gbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EgaXMgb24gYW5kIENHU2ltcGxlUFdBIGlzIGluc3RhbGxlZCkuCiAqLwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCmlmICghY2xhc3NfZXhpc3RzKCdDR1NpbXBsZVBXQVxTZXJ2aWNlV29ya2VyQWRkb24nKSkgewogICAgcmV0dXJuOwp9CgpmaW5hbCBjbGFzcyBNQVNfTkNfUHdhQWRkb24gZXh0ZW5kcyBDR1NpbXBsZVBXQVxTZXJ2aWNlV29ya2VyQWRkb24KewogICAgLyoqIEB2YXIgQ01TTW9kdWxlICovCiAgICBwcml2YXRlICRtb2Q7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KENNU01vZHVsZSAkbW9kKQogICAgewogICAgICAgICR0aGlzLT5tb2QgPSAkbW9kOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMaWJyYXJ5RmlsZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgIGNtc19qb2luX3BhdGgoJHRoaXMtPm1vZC0+R2V0TW9kdWxlUGF0aCgpLCAnanMnLCAnbWFzLW5jLXB1c2guanMnKSwKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2RpZmllZERhdGUoKTogaW50CiAgICB7CiAgICAgICAgJGYgPSBjbXNfam9pbl9wYXRoKCR0aGlzLT5tb2QtPkdldE1vZHVsZVBhdGgoKSwgJ2pzJywgJ21hcy1uYy1zdy1yb290LmpzJyk7CgogICAgICAgIHJldHVybiBpc19maWxlKCRmKSA/IChpbnQpIGZpbGVtdGltZSgkZikgOiB0aW1lKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlcnZpY2VXb3JrZXJDb2RlKCk6IHN0cmluZwogICAgewogICAgICAgICRwYXRoID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+bW9kLT5HZXRNb2R1bGVQYXRoKCksICdqcycsICdtYXMtbmMtc3ctcm9vdC5qcycpOwogICAgICAgICR0eHQgPSBpc19yZWFkYWJsZSgkcGF0aCkgPyAoc3RyaW5nKSBmaWxlX2dldF9jb250ZW50cygkcGF0aCkgOiAnJzsKCiAgICAgICAgcmV0dXJuICR0eHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXJ0dXBDb2RlKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_pwa_standalone.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFN0YW5kYWxvbmUgUFdBIGFuZCBhZG1pbiBoZWFkIGhlbHBlcnMgKG5vIENHU2ltcGxlUFdBIHJlcXVpcmVkKS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX1B3YVN0YW5kYWxvbmUKewogICAgLyoqCiAgICAgKiBIVE1MIGZvciBtb2R1bGUgYWRtaW4gcGFnZXM6IG1hbmlmZXN0LCBpY29ucywgcHVzaCBjbGllbnQgc2NyaXB0LgogICAgICogT3B0aW9uYWwgQ0dTaW1wbGVQV0EgcHJlZml4IG9ubHkgd2hlbiBwcmVmZXJlbmNlIG1hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhIGlzIG9uLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkbWluSGVhZE1hcmt1cChDTVNNb2R1bGUgJG1vZCk6IHN0cmluZwogICAgewogICAgICAgICRvdXQgPSAnJzsKICAgICAgICAkY2hhaW4gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfY2hhaW5fY2dfc2ltcGxlX3B3YScsICcwJykgPT09ICcxJzsKICAgICAgICBpZiAoJGNoYWluICYmIGNsYXNzX2V4aXN0cygnTUFTX05DX0NHSW50ZXJvcCcpICYmIE1BU19OQ19DR0ludGVyb3A6Omhhc0NHU2ltcGxlUHdhKCkpIHsKICAgICAgICAgICAgJG91dCAuPSBNQVNfTkNfQ0dJbnRlcm9wOjphZG1pblB3YUhlYWRlclByZWZpeCgpOwogICAgICAgIH0KCiAgICAgICAgJHVzZVNpdGVQd2EgPSAkY2hhaW4gJiYgY2xhc3NfZXhpc3RzKCdNQVNfTkNfQ0dJbnRlcm9wJykgJiYgTUFTX05DX0NHSW50ZXJvcDo6aGFzQ0dTaW1wbGVQd2EoKTsKICAgICAgICBpZiAoISR1c2VTaXRlUHdhIHx8ICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY19hZG1pbl9vd25fbWFuaWZlc3QnLCAnMCcpID09PSAnMScpIHsKICAgICAgICAgICAgJG91dCAuPSBzZWxmOjptYW5pZmVzdEJsb2NrKCRtb2QpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRpY29uMTkyID0gJG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpIC4gJy9pbWFnZXMvaWNvbi0xOTIucG5nJzsKICAgICAgICAgICAgJG91dCAuPSAnPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSInIC4gY21zX2h0bWxlbnRpdGllcygkaWNvbjE5MikgLiAnIj4nOwogICAgICAgIH0KICAgICAgICAkanMgPSAkbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2pzL21hcy1uYy1wdXNoLmpzJzsKICAgICAgICAkb3V0IC49ICc8c2NyaXB0IGRlZmVyIHNyYz0iJyAuIGNtc19odG1sZW50aXRpZXMoJGpzKSAuICciPjwvc2NyaXB0Pic7CgogICAgICAgIHJldHVybiAkb3V0OwogICAgfQoKICAgIC8qKgogICAgICogQXBwZW5kIG1hbmlmZXN0LCB0aGVtZS1jb2xvciwgaWNvbnMsIGFuZCBTVyByZWdpc3RyYXRpb24gb24gcHVibGljIHBhZ2VzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRwYXJhbXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBob29rTWV0YWRhdGFQb3N0cmVuZGVyKCRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkcGFyYW1zKSB8fCAhaXNzZXQoJHBhcmFtc1snaHRtbCddKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRtb2QgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ01BU19Ob3RpZmljYXRpb25DZW50ZXInKTsKICAgICAgICBpZiAoISRtb2QgaW5zdGFuY2VvZiBDTVNNb2R1bGUgfHwgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Zyb250ZW5kX3B3YScsICcwJykgIT09ICcxJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghQ21zQXBwOjpnZXRfaW5zdGFuY2UoKS0+aXNfZnJvbnRlbmRfcmVxdWVzdCgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJHNuaXBwZXQgPSBzZWxmOjptYW5pZmVzdEJsb2NrKCRtb2QpOwogICAgICAgICRyZWcgPSAkbW9kLT5HZXRNb2R1bGVVUkxQYXRoKCkgLiAnL2pzL21hcy1uYy1zdy1yZWdpc3Rlci5qcyc7CiAgICAgICAgJHNuaXBwZXQgLj0gJzxzY3JpcHQgZGVmZXIgc3JjPSInIC4gY21zX2h0bWxlbnRpdGllcygkcmVnKSAuICciPjwvc2NyaXB0Pic7CiAgICAgICAgJHBhcmFtc1snaHRtbCddIC49ICJcbiIgLiAkc25pcHBldDsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBtYW5pZmVzdEJsb2NrKENNU01vZHVsZSAkbW9kKTogc3RyaW5nCiAgICB7CiAgICAgICAgJG91dCA9ICcnOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRwYWdlSWQgPSAoaW50KSBDbXNBcHA6OmdldF9pbnN0YW5jZSgpLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0UGFnZUlEKCk7CiAgICAgICAgICAgICRtYW5pZmVzdFVybCA9ICRtb2QtPmNyZWF0ZV91cmwoJ2NudG50MDEnLCAnbWFuaWZlc3QnLCAkcGFnZUlkLCBhcnJheSgnc2hvd3RlbXBsYXRlJyA9PiAnZmFsc2UnKSk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICRtYW5pZmVzdFVybCA9ICcnOwogICAgICAgIH0KICAgICAgICAkaWNvbjE5MiA9ICRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKSAuICcvaW1hZ2VzL2ljb24tMTkyLnBuZyc7CiAgICAgICAgaWYgKCRtYW5pZmVzdFVybCAhPT0gJycpIHsKICAgICAgICAgICAgJG91dCAuPSAnPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iJyAuIGNtc19odG1sZW50aXRpZXMoJG1hbmlmZXN0VXJsKSAuICciIGNyb3Nzb3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPic7CiAgICAgICAgfQogICAgICAgICRjb2xvciA9IHRyaW0oKHN0cmluZykgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3RoZW1lX2NvbG9yJywgJyMwMDc4ZDQnKSk7CiAgICAgICAgaWYgKCRjb2xvciA9PT0gJycpIHsKICAgICAgICAgICAgJGNvbG9yID0gJyMwMDc4ZDQnOwogICAgICAgIH0KICAgICAgICAkb3V0IC49ICc8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iJyAuIGNtc19odG1sZW50aXRpZXMoJGNvbG9yKSAuICciPic7CiAgICAgICAgJG91dCAuPSAnPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uIiBocmVmPSInIC4gY21zX2h0bWxlbnRpdGllcygkaWNvbjE5MikgLiAnIj4nOwoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_router.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIENlbnRyYWwgbm90aWZpY2F0aW9uIHJvdXRlcjogcGVyc2lzdCByb3cgKyBvdXRib3VuZCBkaXNwYXRjaCArIHJhdGUgbGltaXQuCiAqLwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCmZpbmFsIGNsYXNzIE1BU19OQ19Sb3V0ZXIKewogICAgLyoqIEJpdCBmbGFncyBmb3IgZGVsaXZlcmVkX21hc2sgKi8KICAgIHB1YmxpYyBjb25zdCBERUxJVkVSX0VNQUlMID0gMTsKCiAgICBwdWJsaWMgY29uc3QgREVMSVZFUl9ESVNDT1JEID0gMjsKCiAgICBwdWJsaWMgY29uc3QgREVMSVZFUl9QVVNIID0gNDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsbWl4ZWQ+ICRwYXlsb2FkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm90aWZ5KENNU01vZHVsZSAkbW9kLCBhcnJheSAkcGF5bG9hZCk6IGludAogICAgewogICAgICAgICRzZXZlcml0eSA9IGlzc2V0KCRwYXlsb2FkWydzZXZlcml0eSddKSA/IChzdHJpbmcpICRwYXlsb2FkWydzZXZlcml0eSddIDogJ2luZm8nOwogICAgICAgIGlmICghaW5fYXJyYXkoJHNldmVyaXR5LCBhcnJheSgnaW5mbycsICd3YXJuaW5nJywgJ2Vycm9yJyksIHRydWUpKSB7CiAgICAgICAgICAgICRzZXZlcml0eSA9ICdpbmZvJzsKICAgICAgICB9CiAgICAgICAgJGNhdGVnb3J5ID0gaXNzZXQoJHBheWxvYWRbJ2NhdGVnb3J5J10pID8gcHJlZ19yZXBsYWNlKCcvW15hLXowLTlfXC1dL2knLCAnJywgKHN0cmluZykgJHBheWxvYWRbJ2NhdGVnb3J5J10pIDogJ2N1c3RvbSc7CiAgICAgICAgaWYgKCRjYXRlZ29yeSA9PT0gJycpIHsKICAgICAgICAgICAgJGNhdGVnb3J5ID0gJ2N1c3RvbSc7CiAgICAgICAgfQogICAgICAgICRzb3VyY2UgPSBpc3NldCgkcGF5bG9hZFsnc291cmNlJ10pID8gc3Vic3RyKChzdHJpbmcpICRwYXlsb2FkWydzb3VyY2UnXSwgMCwgMTI4KSA6ICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyJzsKICAgICAgICAkdGl0bGUgPSBpc3NldCgkcGF5bG9hZFsndGl0bGUnXSkgPyBzdWJzdHIoKHN0cmluZykgJHBheWxvYWRbJ3RpdGxlJ10sIDAsIDI1NSkgOiAkbW9kLT5MYW5nKCdub3RpZnlfZGVmYXVsdF90aXRsZScpOwogICAgICAgICRib2R5ID0gaXNzZXQoJHBheWxvYWRbJ2JvZHknXSkgPyAoc3RyaW5nKSAkcGF5bG9hZFsnYm9keSddIDogJyc7CiAgICAgICAgJG1ldGEgPSBpc3NldCgkcGF5bG9hZFsnbWV0YSddKSAmJiBpc19hcnJheSgkcGF5bG9hZFsnbWV0YSddKSA/ICRwYXlsb2FkWydtZXRhJ10gOiBhcnJheSgpOwoKICAgICAgICBpZiAoJGNhdGVnb3J5ICE9PSAnY3JvbicgJiYgJGNhdGVnb3J5ICE9PSAnaGVhbHRoJyAmJiAhc2VsZjo6cmF0ZUFsbG93KCRtb2QsICRjYXRlZ29yeSkpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICAkZGIgPSAkbW9kLT5HZXREYigpOwogICAgICAgICRjb250ZXh0SnNvbiA9IGpzb25fZW5jb2RlKCRtZXRhLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CiAgICAgICAgaWYgKCRjb250ZXh0SnNvbiA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJGNvbnRleHRKc29uID0gJ3t9JzsKICAgICAgICB9CgogICAgICAgICRzZXEgPSAkZGItPkdlbklEKENNU19EQl9QUkVGSVggLiAnbW9kX21hc19uY19ub3RpZmljYXRpb25zX3NlcScpOwogICAgICAgICRzcWwgPSAnSU5TRVJUIElOVE8gJyAuIE1BU19OQ19UYWJsZXM6Om5vdGlmaWNhdGlvbnMoKQogICAgICAgICAgICAuICcgKGlkLCBjcmVhdGVkLCBzZXZlcml0eSwgY2F0ZWdvcnksIHNvdXJjZSwgdGl0bGUsIGJvZHksIGNvbnRleHRfanNvbiwgZGVsaXZlcmVkX21hc2ssIGlzX3JlYWQpJwogICAgICAgICAgICAuICcgVkFMVUVTICg/LD8sPyw/LD8sPyw/LD8sPyw/KSc7CiAgICAgICAgJGRiLT5FeGVjdXRlKCRzcWwsIGFycmF5KAogICAgICAgICAgICAkc2VxLAogICAgICAgICAgICB0aW1lKCksCiAgICAgICAgICAgICRzZXZlcml0eSwKICAgICAgICAgICAgJGNhdGVnb3J5LAogICAgICAgICAgICAkc291cmNlLAogICAgICAgICAgICAkdGl0bGUsCiAgICAgICAgICAgICRib2R5LAogICAgICAgICAgICAkY29udGV4dEpzb24sCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgKSk7CgogICAgICAgICRtYXNrID0gKGludCkgTUFTX05DX0Rpc3BhdGNoZXI6OmRlbGl2ZXIoJG1vZCwgJHNlcSwgJHRpdGxlLCAkYm9keSwgJHNldmVyaXR5LCAkY2F0ZWdvcnkpOwogICAgICAgICRkYi0+RXhlY3V0ZSgKICAgICAgICAgICAgJ1VQREFURSAnIC4gTUFTX05DX1RhYmxlczo6bm90aWZpY2F0aW9ucygpIC4gJyBTRVQgZGVsaXZlcmVkX21hc2sgPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIGFycmF5KCRtYXNrLCAkc2VxKQogICAgICAgICk7CgogICAgICAgIHJldHVybiAoaW50KSAkc2VxOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJhdGVBbGxvdyhDTVNNb2R1bGUgJG1vZCwgc3RyaW5nICRjYXRlZ29yeSk6IGJvb2wKICAgIHsKICAgICAgICAkbWF4ID0gKGludCkgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3JhdGVfcGVyX2hvdXInLCAnMTIwJyk7CiAgICAgICAgaWYgKCRtYXggPCAxKSB7CiAgICAgICAgICAgICRtYXggPSAxMjA7CiAgICAgICAgfQogICAgICAgICR3aW5kb3cgPSAzNjAwOwogICAgICAgICRrZXkgPSAnbWFzX25jX3JsXycgLiBtZDUoJGNhdGVnb3J5KTsKICAgICAgICAkbm93ID0gdGltZSgpOwogICAgICAgICRyYXcgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCRrZXksICcnKTsKICAgICAgICAkZGF0YSA9ICgkcmF3ICE9PSAnJyAmJiBpc19zdHJpbmcoJHJhdykpID8ganNvbl9kZWNvZGUoJHJhdywgdHJ1ZSkgOiBudWxsOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRhdGEpIHx8ICFpc3NldCgkZGF0YVsndCddLCAkZGF0YVsnYyddKSkgewogICAgICAgICAgICAkZGF0YSA9IGFycmF5KCd0JyA9PiAkbm93LCAnYycgPT4gMCk7CiAgICAgICAgfQogICAgICAgIGlmICgoJG5vdyAtIChpbnQpICRkYXRhWyd0J10pID4gJHdpbmRvdykgewogICAgICAgICAgICAkZGF0YSA9IGFycmF5KCd0JyA9PiAkbm93LCAnYycgPT4gMCk7CiAgICAgICAgfQogICAgICAgICRkYXRhWydjJ10gPSAoaW50KSAkZGF0YVsnYyddICsgMTsKICAgICAgICAkbW9kLT5TZXRQcmVmZXJlbmNlKCRrZXksIGpzb25fZW5jb2RlKCRkYXRhLCBKU09OX1VORVNDQVBFRF9VTklDT0RFKSk7CiAgICAgICAgaWYgKCRkYXRhWydjJ10gPiAkbWF4KSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_tables.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFRhYmxlIG5hbWUgaGVscGVycyBmb3IgTUFTX05vdGlmaWNhdGlvbkNlbnRlci4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKZmluYWwgY2xhc3MgTUFTX05DX1RhYmxlcwp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdGlmaWNhdGlvbnMoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIENNU19EQl9QUkVGSVggLiAnbW9kX21hc19uY19ub3RpZmljYXRpb25zJzsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHB1c2hfc3Vic2NyaXB0aW9ucygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gQ01TX0RCX1BSRUZJWCAuICdtb2RfbWFzX25jX3B1c2hfc3Vic2NyaXB0aW9ucyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_urls.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFJlc29sdmUgbW9kdWxlIHB1YmxpYyBVUkwgYmFzZSB3aXRob3V0IGRvdWJsaW5nIHNtYXJ0X3Jvb3RfdXJsIHdoZW4gR2V0TW9kdWxlVVJMUGF0aCBpcyBhYnNvbHV0ZS4KICovCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgewogICAgZXhpdDsKfQoKLyoqCiAqIEByZXR1cm4gc3RyaW5nIG5vIHRyYWlsaW5nIHNsYXNoCiAqLwpmdW5jdGlvbiBtYXNfbmNfbW9kdWxlX3B1YmxpY19iYXNlKENNU01vZHVsZSAkbW9kKTogc3RyaW5nCnsKICAgICRwYXRoID0gcnRyaW0oKHN0cmluZykgJG1vZC0+R2V0TW9kdWxlVVJMUGF0aCgpLCAnLycpOwogICAgaWYgKCRwYXRoICE9PSAnJyAmJiBwcmVnX21hdGNoKCcjXmh0dHBzPzovLyNpJywgJHBhdGgpKSB7CiAgICAgICAgcmV0dXJuICRwYXRoOwogICAgfQogICAgJGNmZyA9IGNtc19jb25maWc6OmdldF9pbnN0YW5jZSgpOwoKICAgIHJldHVybiBydHJpbSgkY2ZnLT5zbWFydF9yb290X3VybCgpLCAnLycpIC4gJHBhdGg7Cn0K]]></data>
	</file>
	<file>
	  <filename>/lib/mas_nc_webpush.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFdlYiBQdXNoIHZpYSBtaW5pc2hsaW5rL3dlYi1wdXNoIChvcHRpb25hbCBDb21wb3NlciB2ZW5kb3IpLgogKi8KaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSB7CiAgICBleGl0Owp9CgpmaW5hbCBjbGFzcyBNQVNfTkNfV2ViUHVzaAp7CiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2ZW5kb3JBdXRvbG9hZCgpOiBib29sCiAgICB7CiAgICAgICAgc3RhdGljICRkb25lID0gZmFsc2U7CiAgICAgICAgaWYgKCRkb25lKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICAkYmFzZSA9IGRpcm5hbWUoX19ESVJfXykgLiAnL3ZlbmRvci9hdXRvbG9hZC5waHAnOwogICAgICAgIGlmIChpc19maWxlKCRiYXNlKSkgewogICAgICAgICAgICByZXF1aXJlX29uY2UgJGJhc2U7CiAgICAgICAgICAgICRkb25lID0gdHJ1ZTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheXtwdWJsaWNLZXk6c3RyaW5nLHByaXZhdGVLZXk6c3RyaW5nfXxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmFwaWRLZXlzKENNU01vZHVsZSAkbW9kKTogP2FycmF5CiAgICB7CiAgICAgICAgJHB1YiA9IHRyaW0oKHN0cmluZykgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX3B1YmxpYycsICcnKSk7CiAgICAgICAgJHByaXYgPSB0cmltKChzdHJpbmcpICRtb2QtPkdldFByZWZlcmVuY2UoJ21hc19uY192YXBpZF9wcml2YXRlJywgJycpKTsKICAgICAgICBpZiAoJHB1YiA9PT0gJycgfHwgJHByaXYgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KCdwdWJsaWNLZXknID0+ICRwdWIsICdwcml2YXRlS2V5JyA9PiAkcHJpdik7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZW5kVG9BZG1pbnMoQ01TTW9kdWxlICRtb2QsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSk6IGJvb2wKICAgIHsKICAgICAgICAkaW50ZXJuYWxPayA9IGZhbHNlOwogICAgICAgIGlmICgkbW9kLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX3B1c2gnLCAnMScpID09PSAnMScgJiYgc2VsZjo6dmVuZG9yQXV0b2xvYWQoKSkgewogICAgICAgICAgICAka2V5cyA9IHNlbGY6OmdldFZhcGlkS2V5cygkbW9kKTsKICAgICAgICAgICAgJHJvd3MgPSAka2V5cyA/IE1BU19OQ19QdXNoUmVwbzo6bG9hZEFsbCgkbW9kKSA6IGFycmF5KCk7CiAgICAgICAgICAgIGlmICgka2V5cyAmJiBjb3VudCgkcm93cykgPiAwKSB7CiAgICAgICAgICAgICAgICAkaW50ZXJuYWxPayA9IHNlbGY6OnNlbmRUb0FkbWluc0ludGVybmFsKCRtb2QsICR0aXRsZSwgJGJvZHksICRrZXlzLCAkcm93cyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJGJyaWRnZU9rID0gZmFsc2U7CiAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnTUFTX05DX0NHSW50ZXJvcCcpKSB7CiAgICAgICAgICAgICRicmlkZ2VPayA9IE1BU19OQ19DR0ludGVyb3A6OnRyeUNHV2ViUHVzaEJyb2FkY2FzdCgkbW9kLCAkdGl0bGUsICRib2R5KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaW50ZXJuYWxPayB8fCAkYnJpZGdlT2s7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXl7cHVibGljS2V5OnN0cmluZyxwcml2YXRlS2V5OnN0cmluZ30gJGtleXMKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsYXJyYXk8c3RyaW5nLG1peGVkPj4gJHJvd3MKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2VuZFRvQWRtaW5zSW50ZXJuYWwoQ01TTW9kdWxlICRtb2QsIHN0cmluZyAkdGl0bGUsIHN0cmluZyAkYm9keSwgYXJyYXkgJGtleXMsIGFycmF5ICRyb3dzKTogYm9vbAogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRhdXRoID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnVkFQSUQnID0+IGFycmF5KAogICAgICAgICAgICAgICAgICAgICdzdWJqZWN0JyA9PiBzZWxmOjptYWlsdG9TdWJqZWN0KCRtb2QpLAogICAgICAgICAgICAgICAgICAgICdwdWJsaWNLZXknID0+ICRrZXlzWydwdWJsaWNLZXknXSwKICAgICAgICAgICAgICAgICAgICAncHJpdmF0ZUtleScgPT4gJGtleXNbJ3ByaXZhdGVLZXknXSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRwYXlsb2FkID0ganNvbl9lbmNvZGUoCiAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAndGl0bGUnID0+IG1iX3N1YnN0cigkdGl0bGUsIDAsIDEyMCksCiAgICAgICAgICAgICAgICAgICAgJ2JvZHknID0+IG1iX3N1YnN0cigkYm9keSwgMCwgMTAyNCksCiAgICAgICAgICAgICAgICAgICAgJ3RhZycgPT4gJ21hcy1uYy0nIC4gdGltZSgpLAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgkcGF5bG9hZCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHdlYlB1c2ggPSBuZXcgTWluaXNobGlua1xXZWJQdXNoXFdlYlB1c2goJGF1dGgsIGFycmF5KCdUVEwnID0+IDMwMCkpOwogICAgICAgICAgICAkYW55ID0gZmFsc2U7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyb3dzIGFzICRyb3cpIHsKICAgICAgICAgICAgICAgICRzdWJBcnIgPSBNQVNfTkNfUHVzaFJlcG86OnN1YnNjcmlwdGlvbkZyb21Sb3coJHJvdyk7CiAgICAgICAgICAgICAgICBpZiAoISRzdWJBcnIgfHwgZW1wdHkoJHN1YkFyclsnZW5kcG9pbnQnXSkpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgJHN1YnNjcmlwdGlvbiA9IE1pbmlzaGxpbmtcV2ViUHVzaFxTdWJzY3JpcHRpb246OmNyZWF0ZSgkc3ViQXJyKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHdlYlB1c2gtPnNlbmROb3RpZmljYXRpb24oJHN1YnNjcmlwdGlvbiwgJHBheWxvYWQpOwogICAgICAgICAgICAgICAgJGFueSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCEkYW55KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yZWFjaCAoJHdlYlB1c2gtPmZsdXNoKCkgYXMgJHJlcG9ydCkgewogICAgICAgICAgICAgICAgaWYgKCRyZXBvcnQtPmlzU3VjY2VzcygpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmVzcCA9IG1ldGhvZF9leGlzdHMoJHJlcG9ydCwgJ2dldFJlc3BvbnNlJykgPyAkcmVwb3J0LT5nZXRSZXNwb25zZSgpIDogbnVsbDsKICAgICAgICAgICAgICAgICRjb2RlID0gKCRyZXNwICYmIG1ldGhvZF9leGlzdHMoJHJlc3AsICdnZXRTdGF0dXNDb2RlJykpID8gKGludCkgJHJlc3AtPmdldFN0YXR1c0NvZGUoKSA6IDA7CiAgICAgICAgICAgICAgICBpZiAoJGNvZGUgPT09IDQxMCB8fCAkY29kZSA9PT0gNDA0KSB7CiAgICAgICAgICAgICAgICAgICAgJGVuZHBvaW50ID0gKHN0cmluZykgJHJlcG9ydC0+Z2V0UmVxdWVzdCgpLT5nZXRVcmkoKTsKICAgICAgICAgICAgICAgICAgICAkaWQgPSBoYXNoKCdzaGEyNTYnLCAkZW5kcG9pbnQpOwogICAgICAgICAgICAgICAgICAgIE1BU19OQ19QdXNoUmVwbzo6ZGVsZXRlKCRtb2QsICRpZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICAgICAgICAgICAgICBhdWRpdCgwLCAnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicsICdXZWIgUHVzaCBiYXRjaCBmYWlsZWQgKGRldGFpbHMgb21pdHRlZCknKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbWFpbHRvU3ViamVjdChDTVNNb2R1bGUgJG1vZCk6IHN0cmluZwogICAgewogICAgICAgICRhZG1pbkVtYWlsID0gKHN0cmluZykgJG1vZC0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX2NvbnRhY3QnLCAnbWFpbHRvOmluZm9AbmV3c3RhcmdldGVkLmNvbScpOwogICAgICAgIGlmIChzdHJwb3MoJGFkbWluRW1haWwsICdtYWlsdG86JykgIT09IDAgJiYgZmlsdGVyX3ZhcigkYWRtaW5FbWFpbCwgRklMVEVSX1ZBTElEQVRFX0VNQUlMKSkgewogICAgICAgICAgICByZXR1cm4gJ21haWx0bzonIC4gJGFkbWluRW1haWw7CiAgICAgICAgfQogICAgICAgIGlmIChzdHJwb3MoJGFkbWluRW1haWwsICdtYWlsdG86JykgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICRhZG1pbkVtYWlsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICdtYWlsdG86aW5mb0BuZXdzdGFyZ2V0ZWQuY29tJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/MAS_NotificationCenter.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1BU19Ob3RpZmljYXRpb25DZW50ZXI6IGludGVybmFsIG5vdGlmaWNhdGlvbnMgZm9yIENNUyBNYWRlIFNpbXBsZSAoTUlUKS4KICoKICogQGF1dGhvciBtYXN0ZXIzMzk1CiAqLwppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIHsKICAgIGV4aXQ7Cn0KCnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX3RhYmxlcy5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY191cmxzLnBocCc7CnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX2NoYW5nZWxvZy5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY19wdXNoX3JlcG8ucGhwJzsKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9tYXNfbmNfd2VicHVzaC5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY19kaXNwYXRjaGVyLnBocCc7CnJlcXVpcmVfb25jZSBfX0RJUl9fIC4gJy9saWIvbWFzX25jX3JvdXRlci5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY19oZWFsdGgucGhwJzsKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9tYXNfbmNfY29yZV9ldmVudHMucGhwJzsKcmVxdWlyZV9vbmNlIF9fRElSX18gLiAnL2xpYi9tYXNfbmNfY2dfaW50ZXJvcC5waHAnOwpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvbGliL21hc19uY19wd2Ffc3RhbmRhbG9uZS5waHAnOwoKZmluYWwgY2xhc3MgTUFTX05vdGlmaWNhdGlvbkNlbnRlciBleHRlbmRzIENNU01vZHVsZQp7CiAgICBwdWJsaWMgY29uc3QgUEVSTV9NQU5BR0UgPSAnTWFuYWdlIE1BU19Ob3RpZmljYXRpb25DZW50ZXInOwoKICAgIHB1YmxpYyBjb25zdCBFVlRfTk9USUZZID0gJ05vdGlmeSc7CgogICAgLyoqCiAgICAgKiBQcm9ncmFtbWF0aWMgQVBJIGZvciBvdGhlciBQSFAgY29kZSAoc2FtZSBtb2R1bGUgcmVxdWVzdCkuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZyxtaXhlZD4gJHBheWxvYWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3RpZnkoYXJyYXkgJHBheWxvYWQpOiBpbnQKICAgIHsKICAgICAgICAkbSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicpOwogICAgICAgIGlmICghJG0gaW5zdGFuY2VvZiBzZWxmKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIE1BU19OQ19Sb3V0ZXI6Om5vdGlmeSgkbSwgJHBheWxvYWQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ01BU19Ob3RpZmljYXRpb25DZW50ZXInOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRGcmllbmRseU5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKQogICAgewogICAgICAgIHJldHVybiAnMS4wLjUnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKQogICAgewogICAgICAgIHJldHVybiAnbWFzdGVyMzM5NSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICAgIHsKICAgICAgICByZXR1cm4gJ2luZm9AbmV3c3RhcmdldGVkLmNvbSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVscCgpCiAgICB7CiAgICAgICAgJHNtYXJ0eSA9IGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpOwogICAgICAgIGlmICghJHNtYXJ0eSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICR0cGxQYXRoID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLCAndGVtcGxhdGVzJywgJ2hlbHAudHBsJyk7CiAgICAgICAgaWYgKCFpc19maWxlKCR0cGxQYXRoKSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICR0cGwgPSAkc21hcnR5LT5DcmVhdGVUZW1wbGF0ZSgkdGhpcy0+R2V0VGVtcGxhdGVSZXNvdXJjZSgnaGVscC50cGwnKSk7CiAgICAgICAgJHRwbC0+YXNzaWduKCdtb2QnLCAkdGhpcyk7CiAgICAgICAgJHNtYXJ0eS0+YXNzaWduKCdtb2QnLCAkdGhpcyk7CgogICAgICAgIHJldHVybiAoc3RyaW5nKSAkdHBsLT5mZXRjaCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBYm91dCgpCiAgICB7CiAgICAgICAgJHNtYXJ0eSA9IGNtc191dGlsczo6Z2V0X3NtYXJ0eSgpOwogICAgICAgIGlmICghJHNtYXJ0eSkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgICAgICR0cGxQYXRoID0gY21zX2pvaW5fcGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpLCAndGVtcGxhdGVzJywgJ2Fib3V0LnRwbCcpOwogICAgICAgIGlmICghaXNfZmlsZSgkdHBsUGF0aCkpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgICAgICAkdHBsID0gJHNtYXJ0eS0+Q3JlYXRlVGVtcGxhdGUoJHRoaXMtPkdldFRlbXBsYXRlUmVzb3VyY2UoJ2Fib3V0LnRwbCcpKTsKICAgICAgICAkdHBsLT5hc3NpZ24oJ21vZCcsICR0aGlzKTsKICAgICAgICAkc21hcnR5LT5hc3NpZ24oJ21vZCcsICR0aGlzKTsKCiAgICAgICAgcmV0dXJuIChzdHJpbmcpICR0cGwtPmZldGNoKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpCiAgICB7CiAgICAgICAgJGJhc2VEaXIgPSByZWFscGF0aCgkdGhpcy0+R2V0TW9kdWxlUGF0aCgpKTsKICAgICAgICAkZmlsZSA9IHJlYWxwYXRoKCR0aGlzLT5HZXRNb2R1bGVQYXRoKCkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ0NIQU5HRUxPRy5tZCcpOwogICAgICAgIGlmICghJGJhc2VEaXIgfHwgISRmaWxlIHx8ICFpc19maWxlKCRmaWxlKSB8fCAhaXNfcmVhZGFibGUoJGZpbGUpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKHN0cnBvcygkZmlsZSwgJGJhc2VEaXIpICE9PSAwIHx8IGJhc2VuYW1lKCRmaWxlKSAhPT0gJ0NIQU5HRUxPRy5tZCcpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KICAgICAgICAkbWFya2Rvd24gPSBAZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOwogICAgICAgIGlmICgkbWFya2Rvd24gPT09IGZhbHNlIHx8ICRtYXJrZG93biA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJtYXNfbmNfY2hhbmdlbG9nX2h0bWwiPicgLiBNQVNfTkNfQ2hhbmdlbG9nOjptYXJrZG93blRvSHRtbCgoc3RyaW5nKSAkbWFya2Rvd24pIC4gJzwvZGl2Pic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEhhbmRsZXNFdmVudHMoKQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBSZWdpc3RlckV2ZW50cygpCiAgICB7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdBZGRVc2VyUG9zdCcsIGZhbHNlKTsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ01vZHVsZUluc3RhbGxlZCcsIGZhbHNlKTsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ01vZHVsZVVwZ3JhZGVkJywgZmFsc2UpOwogICAgICAgICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCAnTW9kdWxlVW5pbnN0YWxsZWQnLCBmYWxzZSk7CiAgICAgICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlcignQ29yZScsICdMb2dpbkZhaWxlZCcsIGZhbHNlKTsKICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0RlbGV0ZVVzZXJQb3N0JywgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5PHN0cmluZyxtaXhlZD4gJHBhcmFtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gRG9FdmVudCgkb3JpZ2luYXRvciwgJGV2ZW50bmFtZSwgJiRwYXJhbXMpCiAgICB7CiAgICAgICAgaWYgKCRvcmlnaW5hdG9yID09PSAnQ29yZScpIHsKICAgICAgICAgICAgTUFTX05DX0NvcmVFdmVudHM6OmhhbmRsZSgkdGhpcywgJG9yaWdpbmF0b3IsICRldmVudG5hbWUsICRwYXJhbXMpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXZlbnRIZWxwKCRldmVudG5hbWUpCiAgICB7CiAgICAgICAgJGtleSA9ICdldmVudGhlbHBfJyAuICRldmVudG5hbWU7CgogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygka2V5KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXZlbnREZXNjcmlwdGlvbigkZXZlbnRuYW1lKQogICAgewogICAgICAgICRrZXkgPSAnZXZlbnRkZXNjXycgLiAkZXZlbnRuYW1lOwoKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJGtleSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKQogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQogICAgewogICAgICAgIHN0YXRpYyAkYWxsb3dlZCA9IG51bGw7CiAgICAgICAgaWYgKCRhbGxvd2VkID09PSBudWxsKSB7CiAgICAgICAgICAgICRhbGxvd2VkID0gYXJyYXkoCiAgICAgICAgICAgICAgICAnbWFpbicsCiAgICAgICAgICAgICAgICAnY29udGVudCcsCiAgICAgICAgICAgICAgICAnbGF5b3V0JywKICAgICAgICAgICAgICAgICdmaWxlcycsCiAgICAgICAgICAgICAgICAndXNlcnNncm91cHMnLAogICAgICAgICAgICAgICAgJ2V4dGVuc2lvbnMnLAogICAgICAgICAgICAgICAgJ3NpdGVhZG1pbicsCiAgICAgICAgICAgICAgICAnZWNvbW1lcmNlJywKICAgICAgICAgICAgICAgICdteXByZWZzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJGRlZmF1bHQgPSAnZXh0ZW5zaW9ucyc7CiAgICAgICAgJHYgPSB0cmltKChzdHJpbmcpICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfYWRtaW5fc2VjdGlvbicsICRkZWZhdWx0KSk7CiAgICAgICAgaWYgKCFpbl9hcnJheSgkdiwgJGFsbG93ZWQsIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkZGVmYXVsdDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbihzZWxmOjpQRVJNX01BTkFHRSkKICAgICAgICAgICAgfHwgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogICAgewogICAgICAgIHJldHVybiAnMi4yLjEwJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0TWluaW11bVBIUFZlcnNpb24oKQogICAgewogICAgICAgIHJldHVybiAnNy40LjAnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gTGF6eUxvYWRBZG1pbigpCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EnLCAnMCcpICE9PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkcHdhID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdDR1NpbXBsZVBXQScpOwogICAgICAgIGlmICghJHB3YSB8fCAhY2xhc3NfZXhpc3RzKCdDR1NpbXBsZVBXQVxTZXJ2aWNlV29ya2VyQWRkb24nKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRhZGRvbkZpbGUgPSBjbXNfam9pbl9wYXRoKCR0aGlzLT5HZXRNb2R1bGVQYXRoKCksICdsaWInLCAnbWFzX25jX3B3YV9hZGRvbi5waHAnKTsKICAgICAgICBpZiAoIWlzX3JlYWRhYmxlKCRhZGRvbkZpbGUpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgcmVxdWlyZV9vbmNlICRhZGRvbkZpbGU7CiAgICAgICAgaWYgKGNsYXNzX2V4aXN0cygnTUFTX05DX1B3YUFkZG9uJykpIHsKICAgICAgICAgICAgJHB3YS0+cmVnaXN0ZXJTZXJ2aWNlV29ya2VyQWRkb24obmV3IE1BU19OQ19Qd2FBZGRvbigkdGhpcykpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0SGVhZGVySFRNTCgkYWN0aW9uID0gJycpCiAgICB7CiAgICAgICAgaWYgKCFjbGFzc19leGlzdHMoJ01BU19OQ19Qd2FTdGFuZGFsb25lJykpIHsKICAgICAgICAgICAgcmV0dXJuICcnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIE1BU19OQ19Qd2FTdGFuZGFsb25lOjphZG1pbkhlYWRNYXJrdXAoJHRoaXMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTdXBwcmVzc0FkbWluT3V0cHV0KCYkcmVxdWVzdCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydtYWN0J10pKSB7CiAgICAgICAgICAgICR0bXAgPSBleHBsb2RlKCcsJywgKHN0cmluZykgJF9SRVFVRVNUWydtYWN0J10pOwogICAgICAgICAgICBpZiAoY291bnQoJHRtcCkgPiAyICYmICR0bXBbMF0gPT09ICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyJyAmJiAkdG1wWzJdID09PSAnYWpheF9wdXNoX3N1YnNjcmliZScpIHsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKHRydWUsIGZhbHNlKTsKICAgICAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21hc190b2tlbicsIENMRUFOX1NUUklORyk7CiAgICAgICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1YnNjcmlwdGlvbl9qc29uJywgQ0xFQU5fU1RSSU5HKTsKICAgICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2hvd3RlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsKCiAgICAgICAgc3RhdGljICRob29rRG9uZSA9IGZhbHNlOwogICAgICAgIGlmICghJGhvb2tEb25lKSB7CiAgICAgICAgICAgIFxDTVNNU1xIb29rTWFuYWdlcjo6YWRkX2hvb2soJ01BU19Ob3RpZmljYXRpb25DZW50ZXI6Ok5vdGlmeScsIGFycmF5KF9fQ0xBU1NfXywgJ2hvb2tOb3RpZnlJbmNvbWluZycpKTsKICAgICAgICAgICAgXENNU01TXEhvb2tNYW5hZ2VyOjphZGRfaG9vaygnbWV0YWRhdGFfcG9zdHJlbmRlcicsIGFycmF5KCdNQVNfTkNfUHdhU3RhbmRhbG9uZScsICdob29rTWV0YWRhdGFQb3N0cmVuZGVyJykpOwogICAgICAgICAgICAkaG9va0RvbmUgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm1heWJlUmVnaXN0ZXJTaHV0ZG93blByb2JlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHBheWxvYWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBob29rTm90aWZ5SW5jb21pbmcoJHBheWxvYWQpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkcGF5bG9hZCkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkbSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicpOwogICAgICAgIGlmICghJG0gaW5zdGFuY2VvZiBzZWxmKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgTUFTX05DX1JvdXRlcjo6bm90aWZ5KCRtLCAkcGF5bG9hZCk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBtYXliZVJlZ2lzdGVyU2h1dGRvd25Qcm9iZSgpOiB2b2lkCiAgICB7CiAgICAgICAgc3RhdGljICRyZWdpc3RlcmVkID0gZmFsc2U7CiAgICAgICAgaWYgKCRyZWdpc3RlcmVkKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtYXNfbmNfZmF0YWxfc2h1dGRvd24nLCAnMCcpICE9PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICByZWdpc3Rlcl9zaHV0ZG93bl9mdW5jdGlvbihhcnJheShfX0NMQVNTX18sICdzaHV0ZG93blByb2JlJykpOwogICAgICAgICRyZWdpc3RlcmVkID0gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNodXRkb3duUHJvYmUoKTogdm9pZAogICAgewogICAgICAgICRlcnIgPSBlcnJvcl9nZXRfbGFzdCgpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGVycikgfHwgIWlzc2V0KCRlcnJbJ3R5cGUnXSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkZmF0YWxUeXBlcyA9IGFycmF5KEVfRVJST1IsIEVfUEFSU0UsIEVfQ09SRV9FUlJPUiwgRV9DT01QSUxFX0VSUk9SLCBFX1VTRVJfRVJST1IpOwogICAgICAgIGlmICghaW5fYXJyYXkoKGludCkgJGVyclsndHlwZSddLCAkZmF0YWxUeXBlcywgdHJ1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkbSA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnTUFTX05vdGlmaWNhdGlvbkNlbnRlcicpOwogICAgICAgIGlmICghJG0gaW5zdGFuY2VvZiBzZWxmKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJG1zZyA9IGlzc2V0KCRlcnJbJ21lc3NhZ2UnXSkgPyAoc3RyaW5nKSAkZXJyWydtZXNzYWdlJ10gOiAnZmF0YWwnOwogICAgICAgICRtc2cgPSBwcmVnX3JlcGxhY2UoJy9ccysvJywgJyAnLCBzdHJpcF90YWdzKCRtc2cpKTsKICAgICAgICAkbXNnID0gbWJfc3Vic3RyKCRtc2csIDAsIDQwMCk7CiAgICAgICAgTUFTX05DX1JvdXRlcjo6bm90aWZ5KCRtLCBhcnJheSgKICAgICAgICAgICAgJ3NldmVyaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnY2F0ZWdvcnknID0+ICdzeXN0ZW0nLAogICAgICAgICAgICAnc291cmNlJyA9PiAnc2h1dGRvd24nLAogICAgICAgICAgICAndGl0bGUnID0+ICRtLT5MYW5nKCdmYXRhbF9ub3RpZnlfdGl0bGUnKSwKICAgICAgICAgICAgJ2JvZHknID0+ICRtc2csCiAgICAgICAgICAgICdtZXRhJyA9PiBhcnJheSgpLAogICAgICAgICkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogICAgewogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0JywgJHRoaXMtPkxhbmcoJ2hlbHBfcGFyYW1fYWN0aW9uJykpOwogICAgICAgICR0aGlzLT5tYXliZVJlZ2lzdGVyU2h1dGRvd25Qcm9iZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBTaG93RG9uYXRpb25zVGFiKCkKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdoaWRlZG9uYXRpb25zdGFiJywgJycpICE9PSAkdGhpcy0+R2V0VmVyc2lvbigpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSB7CiAgICBleGl0Owp9CgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnZ21wX2FicycpKSB7CiAgICByZXR1cm4gJ0dNUCBleHRlbnNpb24gaXMgcmVxdWlyZWQgZm9yIFdlYiBQdXNoIFZBUElEIGtleXMuIEVuYWJsZSBwaHAtZ21wIGFuZCByZWluc3RhbGwuJzsKfQoKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ01hbmFnZSBNQVNfTm90aWZpY2F0aW9uQ2VudGVyJywgJ0NvbmZpZ3VyZSBNQVMgTm90aWZpY2F0aW9uIENlbnRlciwgYWxlcnRzLCBhbmQgdHJhbnNwb3J0cycpOwoKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCiR0YWJvcHRhcnJheSA9IGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJyk7CgokZmxkcyA9ICcKICAgIGlkIEkgS0VZIE5PVE5VTEwsCiAgICBjcmVhdGVkIEkgTk9UTlVMTCwKICAgIHNldmVyaXR5IEMoMTYpIE5PVE5VTEwsCiAgICBjYXRlZ29yeSBDKDY0KSBOT1ROVUxMLAogICAgc291cmNlIEMoMTI4KSBOT1ROVUxMLAogICAgdGl0bGUgQygyNTUpIE5PVE5VTEwsCiAgICBib2R5IFggTk9UTlVMTCwKICAgIGNvbnRleHRfanNvbiBYMiwKICAgIGRlbGl2ZXJlZF9tYXNrIEkgTk9UTlVMTCBERUZBVUxUIDAsCiAgICBpc19yZWFkIEkxIE5PVE5VTEwgREVGQVVMVCAwCic7CiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChDTVNfREJfUFJFRklYIC4gJ21vZF9tYXNfbmNfbm90aWZpY2F0aW9ucycsICRmbGRzLCAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRkYi0+Q3JlYXRlU2VxdWVuY2UoQ01TX0RCX1BSRUZJWCAuICdtb2RfbWFzX25jX25vdGlmaWNhdGlvbnNfc2VxJyk7CgokZmxkczIgPSAnCiAgICBpZCBDKDY0KSBLRVkgTk9UTlVMTCwKICAgIHN1YnNjcmlwdGlvbl9qc29uIFggTk9UTlVMTCwKICAgIGFkbWluX3VpZCBJIE5PVE5VTEwgREVGQVVMVCAwLAogICAgY3JlYXRlZCBJIE5PVE5VTEwsCiAgICBsYXN0X3NlZW4gSSBOT1ROVUxMCic7CiRzcWxhcnJheTIgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoQ01TX0RCX1BSRUZJWCAuICdtb2RfbWFzX25jX3B1c2hfc3Vic2NyaXB0aW9ucycsICRmbGRzMiwgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkyKTsKCiR0aGlzLT5DcmVhdGVFdmVudCgnTm90aWZ5Jyk7CgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9lbWFpbCcsICcxJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZW5hYmxlX2Rpc2NvcmQnLCAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2VuYWJsZV9wdXNoJywgJzEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19lbWFpbF9yZWNpcGllbnRzJywgJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2Rpc2NvcmRfd2ViaG9vaycsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19yYXRlX3Blcl9ob3VyJywgJzEyMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2V2dF9sb2dpbl9mYWlsZWQnLCAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2V2dF9kZWxldGVfdXNlcicsICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfaGVhbHRoX21pbl9waHAnLCAnNy40LjAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfZGlza19wY3QnLCAnMTAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfZGJfbXMnLCAnMjAwMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2ZhdGFsX3NodXRkb3duJywgJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY192YXBpZF9jb250YWN0JywgJ21haWx0bzppbmZvQG5ld3N0YXJnZXRlZC5jb20nKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19oZWFsdGhfb25fY3JvbicsICcxJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRlZG9uYXRpb25zdGFiJywgJycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2FkbWluX3NlY3Rpb24nLCAnZXh0ZW5zaW9ucycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EnLCAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX2Zyb250ZW5kX3B3YScsICcwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfdGhlbWVfY29sb3InLCAnIzAwNzhkNCcpOwoKaWYgKGZ1bmN0aW9uX2V4aXN0cygncmFuZG9tX2J5dGVzJykpIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfY3Jvbl90b2tlbicsIGJpbjJoZXgocmFuZG9tX2J5dGVzKDI0KSkpOwp9IGVsc2UgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19jcm9uX3Rva2VuJywgc2hhMSh1bmlxaWQoKHN0cmluZykgbXRfcmFuZCgpLCB0cnVlKSkpOwp9CgokYXV0byA9IGNtc19qb2luX3BhdGgoJHRoaXMtPkdldE1vZHVsZVBhdGgoKSwgJ3ZlbmRvcicsICdhdXRvbG9hZC5waHAnKTsKaWYgKGlzX3JlYWRhYmxlKCRhdXRvKSkgewogICAgcmVxdWlyZV9vbmNlICRhdXRvOwogICAgdHJ5IHsKICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKCdNaW5pc2hsaW5rXFxXZWJQdXNoXFxWQVBJRCcpKSB7CiAgICAgICAgICAgICRrZXlzID0gTWluaXNobGlua1xXZWJQdXNoXFZBUElEOjpjcmVhdGVWYXBpZEtleXMoKTsKICAgICAgICAgICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY192YXBpZF9wdWJsaWMnLCAka2V5c1sncHVibGljS2V5J10pOwogICAgICAgICAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWFzX25jX3ZhcGlkX3ByaXZhdGUnLCAka2V5c1sncHJpdmF0ZUtleSddKTsKICAgICAgICB9CiAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICAgICAgICAgIGF1ZGl0KDAsICdNQVNfTm90aWZpY2F0aW9uQ2VudGVyJywgJ1ZBUElEIGtleSBnZW5lcmF0aW9uIHNraXBwZWQgZHVyaW5nIGluc3RhbGwuJyk7CiAgICAgICAgfQogICAgfQp9CgokdGhpcy0+UmVnaXN0ZXJFdmVudHMoKTsK]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSB7CiAgICBleGl0Owp9CgokZGIgPSAkdGhpcy0+R2V0RGIoKTsKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTChDTVNfREJfUFJFRklYIC4gJ21vZF9tYXNfbmNfbm90aWZpY2F0aW9ucycpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoQ01TX0RCX1BSRUZJWCAuICdtb2RfbWFzX25jX3B1c2hfc3Vic2NyaXB0aW9ucycpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgokZGItPkRyb3BTZXF1ZW5jZShDTVNfREJfUFJFRklYIC4gJ21vZF9tYXNfbmNfbm90aWZpY2F0aW9uc19zZXEnKTsKCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CgokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTWFuYWdlIE1BU19Ob3RpZmljYXRpb25DZW50ZXInKTsKCiR0aGlzLT5SZW1vdmVFdmVudCgnTm90aWZ5Jyk7CgokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0FkZFVzZXJQb3N0Jyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnTW9kdWxlSW5zdGFsbGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnTW9kdWxlVXBncmFkZWQnKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdNb2R1bGVVbmluc3RhbGxlZCcpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0xvZ2luRmFpbGVkJyk7CiR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCAnRGVsZXRlVXNlclBvc3QnKTsK]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSB7CiAgICBleGl0Owp9Cgokb2xkID0gaXNzZXQoJG9sZHZlcnNpb24pID8gKHN0cmluZykgJG9sZHZlcnNpb24gOiAnJzsKJG5ld1ZlcnNpb24gPSAkdGhpcy0+R2V0VmVyc2lvbigpOwppZiAoJG9sZCAhPT0gJycgJiYgZnVuY3Rpb25fZXhpc3RzKCdhdWRpdCcpKSB7CiAgICBhdWRpdCgnJywgJ01BU19Ob3RpZmljYXRpb25DZW50ZXInLCAnVXBncmFkZWQgZnJvbSAnIC4gJG9sZCAuICcgdG8gJyAuICRuZXdWZXJzaW9uKTsKfQoKaWYgKHRyaW0oKHN0cmluZykgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19hZG1pbl9zZWN0aW9uJywgJycpKSA9PT0gJycpIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfYWRtaW5fc2VjdGlvbicsICdleHRlbnNpb25zJyk7Cn0KJGNoYWluID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhJywgbnVsbCk7CmlmICgkY2hhaW4gIT09ICcwJyAmJiAkY2hhaW4gIT09ICcxJykgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhJywgJzAnKTsKfQokZmUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX2Zyb250ZW5kX3B3YScsIG51bGwpOwppZiAoJGZlICE9PSAnMCcgJiYgJGZlICE9PSAnMScpIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtYXNfbmNfZnJvbnRlbmRfcHdhJywgJzAnKTsKfQppZiAoIXByZWdfbWF0Y2goJy9eI1swLTlBLUZhLWZdezZ9JC8nLCAoc3RyaW5nKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWFzX25jX3RoZW1lX2NvbG9yJywgJycpKSkgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ21hc19uY190aGVtZV9jb2xvcicsICcjMDA3OGQ0Jyk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJNQVNfTm90aWZpY2F0aW9uQ2VudGVyIgp2ZXJzaW9uID0gIjEuMC41IgphdXRob3IgPSAibWFzdGVyMzM5NSIKYXV0aG9yZW1haWwgPSAiaW5mb0BuZXdzdGFyZ2V0ZWQuY29tIgptaW5jbXN2ZXJzaW9uID0gIjIuMi4xMCIKbGF6eWxvYWRhZG1pbiA9IDAKbGF6eWxvYWRmcm9udGVuZCA9IDAK]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/about.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4OyI+CiAgPGgzPnskbW9kLT5MYW5nKCdhYm91dF9oZWFkaW5nX21vZHVsZScpfGVzY2FwZTonaHRtbCd9PC9oMz4KICA8cD48c3Ryb25nPnskbW9kLT5MYW5nKCdhYm91dF9sYWJlbF9uYW1lJyl8ZXNjYXBlOidodG1sJ308L3N0cm9uZz4geyRtb2QtPkdldEZyaWVuZGx5TmFtZSgpfGVzY2FwZTonaHRtbCd9PC9wPgogIDxwPjxzdHJvbmc+eyRtb2QtPkxhbmcoJ2Fib3V0X2xhYmVsX3ZlcnNpb24nKXxlc2NhcGU6J2h0bWwnfTwvc3Ryb25nPiB7JG1vZC0+R2V0VmVyc2lvbigpfGVzY2FwZTonaHRtbCd9PC9wPgogIDxwPjxzdHJvbmc+eyRtb2QtPkxhbmcoJ2Fib3V0X2xhYmVsX2F1dGhvcicpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5HZXRBdXRob3IoKXxlc2NhcGU6J2h0bWwnfTwvcD4KICA8cD48c3Ryb25nPnskbW9kLT5MYW5nKCdhYm91dF9sYWJlbF9lbWFpbCcpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IDxhIGhyZWY9Im1haWx0bzp7JG1vZC0+R2V0QXV0aG9yRW1haWwoKXxlc2NhcGU6J3VybCd9Ij57JG1vZC0+R2V0QXV0aG9yRW1haWwoKXxlc2NhcGU6J2h0bWwnfTwvYT48L3A+CiAgPHA+PHN0cm9uZz57JG1vZC0+TGFuZygnYWJvdXRfbGFiZWxfbGljZW5zZScpfGVzY2FwZTonaHRtbCd9PC9zdHJvbmc+IHskbW9kLT5MYW5nKCdhYm91dF9saWNlbnNlX3ZhbHVlJyl8ZXNjYXBlOidodG1sJ308L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDM+eyRtb2QtPkxhbmcoJ2Fib3V0X2hlYWRpbmdfY29tcGF0Jyl8ZXNjYXBlOidodG1sJ308L2gzPgogIDxwPnskbW9kLT5MYW5nKCdhYm91dF9taW5fY21zJyl8ZXNjYXBlOidodG1sJ30geyRtb2QtPk1pbmltdW1DTVNWZXJzaW9uKCl8ZXNjYXBlOidodG1sJ308L3A+CiAgPHA+eyRtb2QtPkxhbmcoJ2Fib3V0X21pbl9waHAnKXxlc2NhcGU6J2h0bWwnfSB7JG1vZC0+R2V0TWluaW11bVBIUFZlcnNpb24oKXxlc2NhcGU6J2h0bWwnfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxoMz57JG1vZC0+TGFuZygnYWJvdXRfaGVhZGluZ19zdW1tYXJ5Jyl8ZXNjYXBlOidodG1sJ308L2gzPgogIDxwPnskbW9kLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpfGVzY2FwZTonaHRtbCd9PC9wPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/admin_about.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IG1hcy1uYy1hZG1pbi1hYm91dCI+CiAgPGgyPnskbW9kLT5MYW5nKCd0YWJfYWJvdXQnKXxlc2NhcGU6J2h0bWwnfTwvaDI+CiAge2luY2x1ZGUgZmlsZT0nbW9kdWxlX2ZpbGVfdHBsOk1BU19Ob3RpZmljYXRpb25DZW50ZXI7YWJvdXQudHBsJ30KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDI+eyRtb2QtPkxhbmcoJ3RhYl9jaGFuZ2Vsb2cnKXxlc2NhcGU6J2h0bWwnfTwvaDI+CiAgPHAgY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnY2hhbmdlbG9nX25vdGUnKX08L3A+CiAgeyRtYXNfbmNfY2hhbmdlbG9nX2h0bWx9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/admin_help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IG1hcy1uYy1hZG1pbi1oZWxwIj4KICA8aDI+eyRtb2QtPkxhbmcoJ3RhYl9oZWxwJyl8ZXNjYXBlOidodG1sJ308L2gyPgogIHtpbmNsdWRlIGZpbGU9J21vZHVsZV9maWxlX3RwbDpNQVNfTm90aWZpY2F0aW9uQ2VudGVyO2hlbHAudHBsJ30KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_notifications.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDI+eyRtb2QtPkxhbmcoJ3RhYl9ub3RpZmljYXRpb25zJyl8ZXNjYXBlOidodG1sJ308L2gyPgogIDxwIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ25vdGlmaWNhdGlvbnNfaW50cm8nKX08L3A+CjwvZGl2PgoKeyRzZXR0aW5nc19mb3JtX3N0YXJ0fQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ7JGFjdGlvbmlkfWFjdGl2ZV90YWIiIHZhbHVlPSJub3RpZmljYXRpb25zIj4KCntpZiBpc3NldCgkbWFzX25jX25vdGlmaWNhdGlvbnMpICYmICRtYXNfbmNfbm90aWZpY2F0aW9uc3xAY291bnQgPiAwfQo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSIgc3R5bGU9IndpZHRoOjEwMCU7Ym9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOyI+CiAgPHRoZWFkPgogICAgPHRyPgogICAgICA8dGg+PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdjb2xfY3JlYXRlZCcpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY29sX3NldmVyaXR5Jyl9PC90aD4KICAgICAgPHRoPnskbW9kLT5MYW5nKCdjb2xfY2F0ZWdvcnknKX08L3RoPgogICAgICA8dGg+eyRtb2QtPkxhbmcoJ2NvbF90aXRsZScpfTwvdGg+CiAgICAgIDx0aD57JG1vZC0+TGFuZygnY29sX2RlbGl2ZXJlZCcpfTwvdGg+CiAgICA8L3RyPgogIDwvdGhlYWQ+CiAgPHRib2R5PgogIHtmb3JlYWNoIGZyb209JG1hc19uY19ub3RpZmljYXRpb25zIGl0ZW09cm93fQogICAgPHRyPgogICAgICA8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19zZWxbXSIgdmFsdWU9Inskcm93LmlkfGVzY2FwZX0iPjwvdGQ+CiAgICAgIDx0ZD57JHJvdy5jcmVhdGVkX2ZtdHxlc2NhcGV9PC90ZD4KICAgICAgPHRkPnskcm93LnNldmVyaXR5fGVzY2FwZX08L3RkPgogICAgICA8dGQ+eyRyb3cuY2F0ZWdvcnl8ZXNjYXBlfTwvdGQ+CiAgICAgIDx0ZD48c3Ryb25nPnskcm93LnRpdGxlfGVzY2FwZX08L3N0cm9uZz48YnI+PHNtYWxsPnskcm93LmJvZHl8ZXNjYXBlfTwvc21hbGw+PC90ZD4KICAgICAgPHRkPnskcm93LmRlbGl2ZXJlZF9tYXNrfGVzY2FwZX08L3RkPgogICAgPC90cj4KICB7L2ZvcmVhY2h9CiAgPC90Ym9keT4KPC90YWJsZT4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93IiBzdHlsZT0ibWFyZ2luLXRvcDoxMnB4OyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19kZWxldGVfc2VsZWN0ZWQiIGNsYXNzPSJwYWdlYnV0dG9uIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2J0bl9kZWxldGVfc2VsZWN0ZWQnKX0iIG9uY2xpY2s9InJldHVybiBjb25maXJtKCd7JG1vZC0+TGFuZygnY29uZmlybV9kZWxldGUnKXxlc2NhcGU6J2phdmFzY3JpcHQnfScpOyI+CiAgPC9wPgo8L2Rpdj4Ke2Vsc2V9CjxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ25vdGlmaWNhdGlvbnNfZW1wdHknKX08L3A+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPgogICAge2lmICRtYXNfbmNfaGFzX3ByZXYgJiYgJG1hc19uY19wcmV2X3VybCAhPSAnJ30KICAgICAgPGEgaHJlZj0ieyRtYXNfbmNfcHJldl91cmx8ZXNjYXBlOidodG1sJ30iPnskbW9kLT5MYW5nKCdwYWdlcl9wcmV2Jyl9PC9hPgogICAgey9pZn0KICAgICZuYnNwOyB7JG1vZC0+TGFuZygncGFnZXJfcGFnZScpfSB7JG1hc19uY19wYWdlfGVzY2FwZX0gLSB7JG1vZC0+TGFuZygncGFnZXJfdG90YWwnKX0geyRtYXNfbmNfdG90YWx8ZXNjYXBlfSAmbmJzcDsKICAgIHtpZiAkbWFzX25jX2hhc19uZXh0ICYmICRtYXNfbmNfbmV4dF91cmwgIT0gJyd9CiAgICAgIDxhIGhyZWY9InskbWFzX25jX25leHRfdXJsfGVzY2FwZTonaHRtbCd9Ij57JG1vZC0+TGFuZygncGFnZXJfbmV4dCcpfTwvYT4KICAgIHsvaWZ9CiAgPC9wPgo8L2Rpdj4KCnskc2V0dGluZ3NfZm9ybV9lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/admin_settings.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aW1nIHNyYz0ieyRtYXNfbmNfYmFubmVyX3VybHxlc2NhcGU6J2h0bWwnfSIgYWx0PSIiIHdpZHRoPSI2MDAiIGhlaWdodD0iMTIwIiBzdHlsZT0ibWF4LXdpZHRoOjEwMCU7aGVpZ2h0OmF1dG87Ym9yZGVyLXJhZGl1czo2cHg7bWFyZ2luLWJvdHRvbToxMnB4OyI+CiAgPGgyPnskbW9kLT5MYW5nKCdmcmllbmRseW5hbWUnKXxlc2NhcGU6J2h0bWwnfSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc2l6ZToxMnB4OyI+dnskbWFzX25jX3ZlcnNpb258ZXNjYXBlfTwvc3Bhbj48L2gyPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyl9PC9wPgo8L2Rpdj4KCnskc2V0dGluZ3NfZm9ybV9zdGFydH0KPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1hY3RpdmVfdGFiIiB2YWx1ZT0ic2V0dGluZ3MiPgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fbW9kdWxlX3VpJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdhZG1pbl9zZWN0aW9uX2xhYmVsJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbWFzX25jX2FkbWluX3NlY3Rpb25fZHJvcGRvd259PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2FkbWluX3NlY3Rpb25faGVscCcpfTwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Nob3dfZG9uYXRpb25zX3RhYicpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNob3dfZG9uYXRpb25zX3RhYl9zZXR0aW5ncyIgdmFsdWU9IjEiIHtpZiAkc2hvd19kb25hdGlvbnNfdGFiX2NoZWNrZWQgPT0gJzEnfWNoZWNrZWR7L2lmfT4geyRtb2QtPkxhbmcoJ3Nob3dfZG9uYXRpb25zX3RhYl9oZWxwJyl9PC9sYWJlbD48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RoZW1lX2NvbG9yX2xhYmVsJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY190aGVtZV9jb2xvciIgdmFsdWU9InskbWFzX25jX3RoZW1lX2NvbG9yfGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDoxNDBweDttYXgtd2lkdGg6OTAlOyIgbWF4bGVuZ3RoPSIzMiIgcGF0dGVybj0iI1swLTlBLUZhLWZdezZ9IiBwbGFjZWhvbGRlcj0iIzAwNzhkNCIgYXV0b2NvbXBsZXRlPSJvZmYiPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCd0aGVtZV9jb2xvcl9oZWxwJyl9PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc3RhbmRhbG9uZV9wd2FfaGVhZGluZycpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19mcm9udGVuZF9wd2EiIHZhbHVlPSIxIiB7aWYgJG1hc19uY19mcm9udGVuZF9wd2FfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnbWFzX25jX2Zyb250ZW5kX3B3YV9oZWxwJyl9PC9sYWJlbD48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PHNwYW4gY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygnc3RhbmRhbG9uZV9wd2Ffbm90ZScpfTwvc3Bhbj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2NoYWluX2NnX3NpbXBsZV9wd2EiIHZhbHVlPSIxIiB7aWYgJG1hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhX2NoZWNrZWQgPT0gJzEnfWNoZWNrZWR7L2lmfT4geyRtb2QtPkxhbmcoJ21hc19uY19jaGFpbl9jZ19zaW1wbGVfcHdhX2hlbHAnKX08L2xhYmVsPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19hZG1pbl9vd25fbWFuaWZlc3QiIHZhbHVlPSIxIiB7aWYgJGFkbWluX293bl9tYW5pZmVzdF9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdhZG1pbl9vd25fbWFuaWZlc3RfaGVscCcpfTwvbGFiZWw+PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2NoYWluX2NnX25vdGUnKX08L3NwYW4+PC9wPgo8L2Rpdj4KCjxoMyBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN0aW9uX2NoYW5uZWxzJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdlbmFibGVfZW1haWwnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfZW5hYmxlX2VtYWlsIiB2YWx1ZT0iMSIge2lmICRlbmFibGVfZW1haWxfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnZW5hYmxlX2VtYWlsX2hlbHAnKX08L2xhYmVsPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZW1haWxfcmVjaXBpZW50cycpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfZW1haWxfcmVjaXBpZW50cyIgdmFsdWU9InskZW1haWxfcmVjaXBpZW50c3xlc2NhcGV9IiBzdHlsZT0id2lkdGg6OTAlO21heC13aWR0aDo1NjBweDsiIGF1dG9jb21wbGV0ZT0ib2ZmIiBwbGFjZWhvbGRlcj0iYWRtaW5AZXhhbXBsZS5jb20iPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdlbWFpbF9yZWNpcGllbnRzX2hlbHAnKX08L3NwYW4+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdlbmFibGVfZGlzY29yZCcpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19lbmFibGVfZGlzY29yZCIgdmFsdWU9IjEiIHtpZiAkZW5hYmxlX2Rpc2NvcmRfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnZW5hYmxlX2Rpc2NvcmRfaGVscCcpfTwvbGFiZWw+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdkaXNjb3JkX3dlYmhvb2snKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2Rpc2NvcmRfd2ViaG9vayIgdmFsdWU9InskZGlzY29yZF93ZWJob29rfGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDo5MCU7bWF4LXdpZHRoOjU2MHB4OyIgYXV0b2NvbXBsZXRlPSJvZmYiIHNwZWxsY2hlY2s9ImZhbHNlIj48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2VuYWJsZV9wdXNoJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2VuYWJsZV9wdXNoIiB2YWx1ZT0iMSIge2lmICRlbmFibGVfcHVzaF9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdlbmFibGVfcHVzaF9oZWxwJyl9PC9sYWJlbD48L3A+CjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fY2dfc3RhY2snKX08L2gzPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2NnX3N0YWNrX2RldGVjdGVkJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxzcGFuIGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ2NnX3NpbXBsZXB3YV9sYWJlbCcpfToge2lmICRoYXNfY2dfc2ltcGxlX3B3YSA9PSAnMSd9eyRtb2QtPkxhbmcoJ2NnX2RldGVjdGVkX3llcycpfXtlbHNlfXskbW9kLT5MYW5nKCdjZ19kZXRlY3RlZF9ubycpfXsvaWZ9ICZuYnNwO3wmbmJzcDsgeyRtb2QtPkxhbmcoJ2NnX3dlYnB1c2hfbGFiZWwnKX06IHtpZiAkaGFzX2NnX3dlYnB1c2ggPT0gJzEnfXskbW9kLT5MYW5nKCdjZ19kZXRlY3RlZF95ZXMnKX17ZWxzZX17JG1vZC0+TGFuZygnY2dfZGV0ZWN0ZWRfbm8nKX17L2lmfTwvc3Bhbj48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfY2d3ZWJwdXNoX2Jyb2FkY2FzdCIgdmFsdWU9IjEiIHtpZiAkY2d3ZWJwdXNoX2Jyb2FkY2FzdF9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdjZ3dlYnB1c2hfYnJvYWRjYXN0X2hlbHAnKX08L2xhYmVsPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdjZ19zdGFja19ub3RlJyl9PC9zcGFuPjwvcD4KPC9kaXY+Cgo8aDMgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2VjdGlvbl93ZWJwdXNoJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd2YXBpZF9wdWJsaWMnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGNvZGUgc3R5bGU9IndvcmQtYnJlYWs6YnJlYWstYWxsOyI+eyRtYXNfbmNfdmFwaWRfcHVibGljfGVzY2FwZX08L2NvZGU+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd2YXBpZF9jb250YWN0Jyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY192YXBpZF9jb250YWN0IiB2YWx1ZT0ieyR2YXBpZF9jb250YWN0fGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDo5MCU7bWF4LXdpZHRoOjU2MHB4OyI+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdtYW5pZmVzdF91cmwnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGEgaHJlZj0ieyRtYXNfbmNfbWFuaWZlc3RfdXJsfGVzY2FwZTonaHRtbCd9IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj57JG1hc19uY19tYW5pZmVzdF91cmx8ZXNjYXBlOidodG1sJ308L2E+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCd3ZWJwdXNoX2luc3RhbGxfbm90ZScpfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InBhZ2VidXR0b24iIGlkPSJtYXMtbmMtc3Vic2NyaWJlLWJ0biI+eyRtb2QtPkxhbmcoJ2J0bl9zdWJzY3JpYmVfcHVzaCcpfTwvYnV0dG9uPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfc2VuZF90ZXN0X3B1c2giIGNsYXNzPSJwYWdlYnV0dG9uIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2J0bl90ZXN0X3B1c2gnKX0iPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfcm90YXRlX3ZhcGlkIiBjbGFzcz0icGFnZWJ1dHRvbiIgdmFsdWU9InskbW9kLT5MYW5nKCdidG5fcm90YXRlX3ZhcGlkJyl9IiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybSgnUm90YXRlIFZBUElEIGtleXMgYW5kIHJlbW92ZSBwdXNoIHN1YnNjcmlwdGlvbnM/Jyk7Ij4KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX3B1Ymxpc2hfc3ciIGNsYXNzPSJwYWdlYnV0dG9uIiB2YWx1ZT0ieyRtb2QtPkxhbmcoJ2J0bl9wdWJsaXNoX3N3Jyl9Ij4KICA8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PHNwYW4gY2xhc3M9ImluZm9ybWF0aW9uIj57JG1vZC0+TGFuZygncHVibGlzaF9zd19oZWxwJyl9PC9zcGFuPjwvcD4KPC9kaXY+CjxkaXYgaWQ9Im1hcy1uYy1wdXNoLWNvbmZpZyIKICAgICBkYXRhLXN1YnNjcmliZS11cmw9InskbWFzX25jX2FqYXhfcHVzaF9zdWJzY3JpYmVfdXJsfGVzY2FwZTonaHRtbCd9IgogICAgIGRhdGEtdmFwaWQtcHVibGljPSJ7JG1hc19uY192YXBpZF9wdWJsaWN8ZXNjYXBlOidodG1sJ30iCiAgICAgZGF0YS1zdy11cmw9InskbWFzX25jX3N3X3BhdGh8ZXNjYXBlOidodG1sJ30iPjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fZXZlbnRzJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48bGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfW1hc19uY19ldnRfbG9naW5fZmFpbGVkIiB2YWx1ZT0iMSIge2lmICRldnRfbG9naW5fZmFpbGVkX2NoZWNrZWQgPT0gJzEnfWNoZWNrZWR7L2lmfT4geyRtb2QtPkxhbmcoJ2V2dF9sb2dpbl9mYWlsZWRfb3B0Jyl9PC9sYWJlbD48L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGxhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfZXZ0X2RlbGV0ZV91c2VyIiB2YWx1ZT0iMSIge2lmICRldnRfZGVsZXRlX3VzZXJfY2hlY2tlZCA9PSAnMSd9Y2hlY2tlZHsvaWZ9PiB7JG1vZC0+TGFuZygnZXZ0X2RlbGV0ZV91c2VyX29wdCcpfTwvbGFiZWw+PC9wPgo8L2Rpdj4KCjxoMyBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzZWN0aW9uX3JhdGVzJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdyYXRlX3Blcl9ob3VyJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJudW1iZXIiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX3JhdGVfcGVyX2hvdXIiIHZhbHVlPSJ7JHJhdGVfcGVyX2hvdXJ8ZXNjYXBlfSIgbWluPSIxIiBtYXg9IjEwMDAwIiBzdHlsZT0id2lkdGg6MTIwcHg7Ij48L3A+CjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25faGVhbHRoJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdoZWFsdGhfbWluX3BocCcpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfaGVhbHRoX21pbl9waHAiIHZhbHVlPSJ7JGhlYWx0aF9taW5fcGhwfGVzY2FwZX0iIHN0eWxlPSJ3aWR0aDoxMjBweDsiPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaGVhbHRoX2Rpc2tfcGN0Jyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJudW1iZXIiIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2hlYWx0aF9kaXNrX3BjdCIgdmFsdWU9InskaGVhbHRoX2Rpc2tfcGN0fGVzY2FwZX0iIG1pbj0iMSIgbWF4PSI5OSIgc3R5bGU9IndpZHRoOjEwMHB4OyI+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdoZWFsdGhfZGJfbXMnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9Im51bWJlciIgbmFtZT0ieyRhY3Rpb25pZH1tYXNfbmNfaGVhbHRoX2RiX21zIiB2YWx1ZT0ieyRoZWFsdGhfZGJfbXN8ZXNjYXBlfSIgbWluPSIwIiBtYXg9IjYwMDAwIiBzdHlsZT0id2lkdGg6MTIwcHg7Ij48L3A+CjwvZGl2PgoKPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NlY3Rpb25fYWR2YW5jZWQnKX08L2gzPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxsYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9bWFzX25jX2ZhdGFsX3NodXRkb3duIiB2YWx1ZT0iMSIge2lmICRmYXRhbF9zaHV0ZG93bl9jaGVja2VkID09ICcxJ31jaGVja2Vkey9pZn0+IHskbW9kLT5MYW5nKCdmYXRhbF9zaHV0ZG93bl9vcHQnKX08L2xhYmVsPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdmYXRhbF9zaHV0ZG93bl93YXJuJyl9PC9zcGFuPjwvcD4KPC9kaXY+Cgo8aDMgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2VjdGlvbl9jcm9uJyl9PC9oMz4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdjcm9uX3VybF9sYWJlbCcpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48Y29kZSBzdHlsZT0id29yZC1icmVhazpicmVhay1hbGw7Ij57JG1hc19uY19jcm9uX3VybHxlc2NhcGV9PC9jb2RlPjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij48c3BhbiBjbGFzcz0iaW5mb3JtYXRpb24iPnskbW9kLT5MYW5nKCdjcm9uX2hlbHAnKX08L3NwYW4+PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgY2xhc3M9InBhZ2VidXR0b24iIHZhbHVlPSJ7JG1vZC0+TGFuZygnc2F2ZScpfSI+PC9wPgo8L2Rpdj4KCnskc2V0dGluZ3NfZm9ybV9lbmR9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/donations.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDI+eyRtb2QtPkxhbmcoJ2RvbmF0aW9uc190YWInKXxlc2NhcGU6J2h0bWwnfTwvaDI+CgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2NmZDdkZjtwYWRkaW5nOjEycHg7Ym9yZGVyLXJhZGl1czozcHg7YmFja2dyb3VuZDojZmZmO21heC13aWR0aDo4NTBweDsiPgogICAgPGgzIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3Nwb25zb3JzJyl9PC9oMz4KICAgIDxkaXYgc3R5bGU9ImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7bWFyZ2luLXRvcDoxMHB4O2ZsZXgtd3JhcDp3cmFwOyI+CiAgICAgIDxpbWcKICAgICAgICBzcmM9InskZG9uYXRpb25zX3Nwb25zb3JfbG9nb191cmx8ZXNjYXBlOidodG1sJ30iCiAgICAgICAgYWx0PSJ7JGRvbmF0aW9uc19zcG9uc29yX2xvZ29fYWx0fGVzY2FwZTonaHRtbCd9IgogICAgICAgIHdpZHRoPSI0OCIKICAgICAgICBoZWlnaHQ9IjQ4IgogICAgICAgIHN0eWxlPSJtYXgtd2lkdGg6NDhweDttYXgtaGVpZ2h0OjQ4cHg7d2lkdGg6YXV0bztoZWlnaHQ6YXV0bztvYmplY3QtZml0OmNvbnRhaW47ZmxleC1zaHJpbms6MDsiCiAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICBkZWNvZGluZz0iYXN5bmMiCiAgICAgID4KICAgICAgPGEgaHJlZj0ieyRkb25hdGlvbnNfc3BvbnNvcl9ocmVmfGVzY2FwZTonaHRtbCd9IiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciBub3JlZmVycmVyIj57JGRvbmF0aW9uc19zcG9uc29yX2xpbmt8ZXNjYXBlfTwvYT4KICAgIDwvZGl2PgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJtYXJnaW4tdG9wOjIwcHg7Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRkb25hdGlvbnN0ZXh0fTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPjxhIGNsYXNzPSJwYWdlYnV0dG9uIiBzdHlsZT0iZGlzcGxheTppbmxpbmUtYmxvY2s7YmFja2dyb3VuZDojZmZjNDM5O2NvbG9yOiMwMDA7cGFkZGluZzo4cHggMTRweDtib3JkZXItcmFkaXVzOjRweDt0ZXh0LWRlY29yYXRpb246bm9uZTsiIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPnskbW9kLT5MYW5nKCdkb25hdGVfYnRuJyl9PC9hPjwvcD4KICA8L2Rpdj4KCiAgeyRzZXR0aW5nc19mb3JtX3N0YXJ0fQogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InskYWN0aW9uaWR9YWN0aXZlX3RhYiIgdmFsdWU9ImRvbmF0aW9ucyI+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRhY3Rpb25pZH1zaG93X2RvbmF0aW9uc190YWIiIHZhbHVlPSIwIj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJtYXJnaW4tdG9wOjE2cHg7Ij4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZWRvbmF0aW9uc3N1Ym1pdH08L3A+CiAgPC9kaXY+CiAgeyRzZXR0aW5nc19mb3JtX2VuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2PgoKPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iIHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OyBwYWRkaW5nOiAxNXB4OyBiYWNrZ3JvdW5kOiAjZThmNGY4OyBib3JkZXItbGVmdDogNHB4IHNvbGlkICMyMTk2RjM7Ij4KICA8cCBzdHlsZT0ibWFyZ2luOiAwOyI+PHN0cm9uZz57JG1vZC0+TGFuZygnaGVscF9iYW5uZXJfdGl0bGUnKXxlc2NhcGU6J2h0bWwnfTwvc3Ryb25nPiB7JG1vZC0+TGFuZygnaGVscF9iYW5uZXJfYm9keScpfGVzY2FwZTonaHRtbCd9IDxhIGhyZWY9Imh0dHBzOi8vbmV3c3RhcmdldGVkLmNvbS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiPm5ld3N0YXJnZXRlZC5jb208L2E+PC9wPgo8L2Rpdj4KCnsqIElubmVyIG5hdmlnYXRpb24gbXVzdCBOT1QgdXNlIGRpdiNwYWdlX3RhYnM6IGNtc19pbml0VGFicygpIGJpbmRzIEFMTCBkaXZzIHVuZGVyIHRoZSByZWFsICNwYWdlX3RhYnMgYW5kIHdvdWxkIGhpZGUgI2hlbHBfYyB3aGVuIGNsaWNraW5nIHN1Yi10YWJzLiBVc2UgPGEgcm9sZT0idGFiIj4gcGx1cyBzY29wZWQgc2NyaXB0LiAqfQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgojbWFzX25jX2hlbHBfc3VidGFicyB7CiAgb3ZlcmZsb3c6IGhpZGRlbjsKICBtYXJnaW4tdG9wOiAyMHB4Owp9CiNtYXNfbmNfaGVscF9zdWJ0YWJzIGEubWFzLW5jLWhlbHAtdGFiIHsKICBjb2xvcjogIzU4NTg1ODsKICBib3JkZXItcmFkaXVzOiA0cHggNHB4IDAgMDsKICB0ZXh0LXNoYWRvdzogLTFweCAxcHggMCAjZmZmOwogIGJhY2tncm91bmQ6ICNkZGQ7CiAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgdGV4dC1hbGlnbjogY2VudGVyOwogIGZsb2F0OiBsZWZ0OwogIGN1cnNvcjogcG9pbnRlcjsKICB3aGl0ZS1zcGFjZTogbm93cmFwOwogIHBhZGRpbmc6IDExcHg7CiAgbWFyZ2luLXRvcDogMXB4OwogIG1hcmdpbi1yaWdodDogMXB4OwogIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICBkaXNwbGF5OiBibG9jazsKICBib3gtc2l6aW5nOiBib3JkZXItYm94Owp9CiNtYXNfbmNfaGVscF9zdWJ0YWJzIGEubWFzLW5jLWhlbHAtdGFiOmhvdmVyLAojbWFzX25jX2hlbHBfc3VidGFicyBhLm1hcy1uYy1oZWxwLXRhYjpmb2N1cyB7CiAgY29sb3I6ICMxNDdmZGI7Cn0KI21hc19uY19oZWxwX3N1YnRhYnMgYS5tYXMtbmMtaGVscC10YWIuYWN0aXZlIHsKICBjb2xvcjogI2ZmZjsKICB0ZXh0LXNoYWRvdzogLTFweCAtMXB4IDAgIzA1NDg4MjsKICBiYWNrZ3JvdW5kOiAjMTQ3ZmRiOwp9CiNtYXNfbmNfaGVscF9zdWJjb250ZW50IHsKICBiYWNrZ3JvdW5kOiAjZmZmOwogIGJvcmRlci1yYWRpdXM6IDAgMCA0cHggNHB4OwogIHBhZGRpbmc6IDIwcHggMTBweDsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwogIGJvcmRlci10b3A6IDNweCBzb2xpZCAjMTQ3ZmRiOwogIGNsZWFyOiBib3RoOwp9Cjwvc3R5bGU+Cgo8bmF2IGlkPSJtYXNfbmNfaGVscF9zdWJ0YWJzIiBhcmlhLWxhYmVsPSJIZWxwIHNlY3Rpb25zIj4KICA8YSBocmVmPSIjIiByb2xlPSJ0YWIiIGNsYXNzPSJtYXMtbmMtaGVscC10YWIgYWN0aXZlIiBpZD0ibWFzX25jX2hlbHBfdGFiX2dlbmVyYWwiPnskbW9kLT5MYW5nKCdoZWxwX3RhYl9nZW5lcmFsJyl8ZXNjYXBlOidodG1sJ308L2E+CiAgPGEgaHJlZj0iIyIgcm9sZT0idGFiIiBjbGFzcz0ibWFzLW5jLWhlbHAtdGFiIiBpZD0ibWFzX25jX2hlbHBfdGFiX2NoYW5uZWxzIj57JG1vZC0+TGFuZygnaGVscF90YWJfY2hhbm5lbHMnKXxlc2NhcGU6J2h0bWwnfTwvYT4KICA8YSBocmVmPSIjIiByb2xlPSJ0YWIiIGNsYXNzPSJtYXMtbmMtaGVscC10YWIiIGlkPSJtYXNfbmNfaGVscF90YWJfaW50ZXJvcCI+eyRtb2QtPkxhbmcoJ2hlbHBfdGFiX2ludGVyb3AnKXxlc2NhcGU6J2h0bWwnfTwvYT4KPC9uYXY+Cgo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8ZGl2IGlkPSJtYXNfbmNfaGVscF9zdWJjb250ZW50Ij4KCiAgPHNlY3Rpb24gaWQ9Im1hc19uY19oZWxwX3BhbmVsX2dlbmVyYWwiIGNsYXNzPSJtYXMtbmMtaGVscC1wYW5lbCIgcm9sZT0idGFicGFuZWwiPgogICAge2luY2x1ZGUgZmlsZT0nbW9kdWxlX2ZpbGVfdHBsOk1BU19Ob3RpZmljYXRpb25DZW50ZXI7aGVscF9nZW5lcmFsX3RhYi50cGwnfQogIDwvc2VjdGlvbj4KICA8c2VjdGlvbiBpZD0ibWFzX25jX2hlbHBfcGFuZWxfY2hhbm5lbHMiIGNsYXNzPSJtYXMtbmMtaGVscC1wYW5lbCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIHJvbGU9InRhYnBhbmVsIj4KICAgIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hlbHBfY2hhbm5lbHNfYm9keScpfTwvcD4KICAgIDwvZGl2PgogIDwvc2VjdGlvbj4KICA8c2VjdGlvbiBpZD0ibWFzX25jX2hlbHBfcGFuZWxfaW50ZXJvcCIgY2xhc3M9Im1hcy1uYy1oZWxwLXBhbmVsIiBzdHlsZT0iZGlzcGxheTpub25lOyIgcm9sZT0idGFicGFuZWwiPgogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnaGVscF9pbnRlcm9wX2JvZHknKX08L3A+CiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2hlbHBfaW50ZXJvcF9jZ19ib2R5Jyl9PC9wPgogICAgPC9kaXY+CiAgPC9zZWN0aW9uPgoKICA8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1bmN0aW9uICgpIHsKICBpZiAodHlwZW9mIGpRdWVyeSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgIHJldHVybjsKICB9CiAgalF1ZXJ5KGZ1bmN0aW9uICgkKSB7CiAgICB2YXIgJHRhYnMgPSAkKCcjbWFzX25jX2hlbHBfc3VidGFicyBhLm1hcy1uYy1oZWxwLXRhYicpOwogICAgdmFyICRwYW5lbHMgPSAkKCcjbWFzX25jX2hlbHBfc3ViY29udGVudCBzZWN0aW9uLm1hcy1uYy1oZWxwLXBhbmVsJyk7CiAgICBpZiAoISR0YWJzLmxlbmd0aCB8fCAhJHBhbmVscy5sZW5ndGgpIHsKICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gYWN0aXZhdGUoJHRhYikgewogICAgICB2YXIgc3VmZml4ID0gJHRhYi5hdHRyKCdpZCcpLnJlcGxhY2UoL15tYXNfbmNfaGVscF90YWJfLywgJycpOwogICAgICAkdGFicy5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICR0YWIuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAkcGFuZWxzLmhpZGUoKTsKICAgICAgJCgnI21hc19uY19oZWxwX3BhbmVsXycgKyBzdWZmaXgpLnNob3coKTsKICAgIH0KICAgICR0YWJzLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgYWN0aXZhdGUoJCh0aGlzKSk7CiAgICAgIHJldHVybiBmYWxzZTsKICAgIH0pOwogICAgdmFyICRmaXJzdCA9ICR0YWJzLmZpbHRlcignLmFjdGl2ZScpLmZpcnN0KCk7CiAgICBpZiAoJGZpcnN0Lmxlbmd0aCkgewogICAgICBhY3RpdmF0ZSgkZmlyc3QpOwogICAgfSBlbHNlIHsKICAgICAgYWN0aXZhdGUoJHRhYnMuZmlyc3QoKSk7CiAgICB9CiAgfSk7Cn0pKCk7Cjwvc2NyaXB0Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/help_general_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8aDM+eyRtb2QtPkxhbmcoJ2hlbHBfZ2VuZXJhbF9oZWFkaW5nJyl9PC9oMz4KICA8cD57JG1vZC0+TGFuZygnaGVscF9nZW5lcmFsX2ludHJvJyl9PC9wPgogIDx1bD4KICAgIDxsaT57JG1vZC0+TGFuZygnaGVscF9nZW5lcmFsX2xpMScpfTwvbGk+CiAgICA8bGk+eyRtb2QtPkxhbmcoJ2hlbHBfZ2VuZXJhbF9saTInKX08L2xpPgogICAgPGxpPnskbW9kLT5MYW5nKCdoZWxwX2dlbmVyYWxfbGkzJyl9PC9saT4KICA8L3VsPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/Test/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/Test/generate_brand_assets.py</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiJSZWdlbmVyYXRlIGJhbm5lciArIGljb25zIGZvciBNQVNfTm90aWZpY2F0aW9uQ2VudGVyLiBSZXF1aXJlcyBQaWxsb3cuIiIiCgpmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFubm90YXRpb25zCgppbXBvcnQgb3MKaW1wb3J0IHN5cwoKZnJvbSBQSUwgaW1wb3J0IEltYWdlLCBJbWFnZURyYXcsIEltYWdlRm9udAoKQUNDRU5UID0gKDAsIDEyMCwgMjEyLCAyNTUpCkFDQ0VOVF9EQVJLID0gKDAsIDU4LCAxMDQsIDI1NSkKV0hJVEUgPSAoMjU1LCAyNTUsIDI1NSwgMjU1KQpXSElURV9TT0ZUID0gKDIzMCwgMjQyLCAyNTUsIDI1NSkKCgpkZWYgbGVycChhOiBmbG9hdCwgYjogZmxvYXQsIHQ6IGZsb2F0KSAtPiBmbG9hdDoKICAgIHJldHVybiBhICsgKGIgLSBhKSAqIHQKCgpkZWYgaG9yaXpvbnRhbF9ncmFkaWVudChzaXplOiB0dXBsZVtpbnQsIGludF0sIGxlZnQ6IHR1cGxlLCByaWdodDogdHVwbGUpIC0+IEltYWdlLkltYWdlOgogICAgdywgaCA9IHNpemUKICAgIGltZyA9IEltYWdlLm5ldygiUkdCQSIsIHNpemUpCiAgICBwaXggPSBpbWcubG9hZCgpCiAgICBmb3IgeCBpbiByYW5nZSh3KToKICAgICAgICB0ID0geCAvIG1heCh3IC0gMSwgMSkKICAgICAgICByID0gaW50KGxlcnAobGVmdFswXSwgcmlnaHRbMF0sIHQpKQogICAgICAgIGcgPSBpbnQobGVycChsZWZ0WzFdLCByaWdodFsxXSwgdCkpCiAgICAgICAgYiA9IGludChsZXJwKGxlZnRbMl0sIHJpZ2h0WzJdLCB0KSkKICAgICAgICBhbCA9IGludChsZXJwKGxlZnRbM10sIHJpZ2h0WzNdLCB0KSkKICAgICAgICBmb3IgeSBpbiByYW5nZShoKToKICAgICAgICAgICAgcGl4W3gsIHldID0gKHIsIGcsIGIsIGFsKQogICAgcmV0dXJuIGltZwoKCmRlZiBsb2FkX2ZvbnQoc2l6ZTogaW50KSAtPiBJbWFnZUZvbnQuRnJlZVR5cGVGb250IHwgSW1hZ2VGb250LkltYWdlRm9udDoKICAgIHBhdGhzID0gKAogICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL2RlamF2dS1zYW5zLWZvbnRzL0RlamFWdVNhbnMtQm9sZC50dGYiLAogICAgICAgICIvdXNyL3NoYXJlL2ZvbnRzL3RydWV0eXBlL2RlamF2dS9EZWphVnVTYW5zLUJvbGQudHRmIiwKICAgICkKICAgIGZvciBwIGluIHBhdGhzOgogICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHApOgogICAgICAgICAgICByZXR1cm4gSW1hZ2VGb250LnRydWV0eXBlKHAsIHNpemUpCiAgICByZXR1cm4gSW1hZ2VGb250LmxvYWRfZGVmYXVsdCgpCgoKZGVmIGRyYXdfYmVsbChpbWc6IEltYWdlLkltYWdlLCBjeDogZmxvYXQsIGN5OiBmbG9hdCwgc2NhbGU6IGZsb2F0KSAtPiBOb25lOgogICAgZHIgPSBJbWFnZURyYXcuRHJhdyhpbWcpCiAgICBzID0gc2NhbGUKICAgIGJvZHkgPSBbCiAgICAgICAgKGN4IC0gOTUgKiBzLCBjeSArIDM1ICogcyksCiAgICAgICAgKGN4IC0gODUgKiBzLCBjeSAtIDU1ICogcyksCiAgICAgICAgKGN4IC0gNDUgKiBzLCBjeSAtIDEwNSAqIHMpLAogICAgICAgIChjeCArIDQ1ICogcywgY3kgLSAxMDUgKiBzKSwKICAgICAgICAoY3ggKyA4NSAqIHMsIGN5IC0gNTUgKiBzKSwKICAgICAgICAoY3ggKyA5NSAqIHMsIGN5ICsgMzUgKiBzKSwKICAgICAgICAoY3ggKyA1NSAqIHMsIGN5ICsgNTUgKiBzKSwKICAgICAgICAoY3ggKyAzNSAqIHMsIGN5ICsgMjUgKiBzKSwKICAgICAgICAoY3ggLSAzNSAqIHMsIGN5ICsgMjUgKiBzKSwKICAgICAgICAoY3ggLSA1NSAqIHMsIGN5ICsgNTUgKiBzKSwKICAgIF0KICAgIGRyLnBvbHlnb24oYm9keSwgZmlsbD1XSElURSkKICAgIGlubmVyID0gWwogICAgICAgIChjeCAtIDI4ICogcywgY3kgKyA4ICogcyksCiAgICAgICAgKGN4IC0gMjIgKiBzLCBjeSAtIDM1ICogcyksCiAgICAgICAgKGN4LCBjeSAtIDU4ICogcyksCiAgICAgICAgKGN4ICsgMjIgKiBzLCBjeSAtIDM1ICogcyksCiAgICAgICAgKGN4ICsgMjggKiBzLCBjeSArIDggKiBzKSwKICAgIF0KICAgIGRyLnBvbHlnb24oaW5uZXIsIGZpbGw9QUNDRU5UKQogICAgZHIuZWxsaXBzZSgKICAgICAgICBbY3ggLSAxNCAqIHMsIGN5ICsgNDggKiBzLCBjeCArIDE0ICogcywgY3kgKyA3NiAqIHNdLAogICAgICAgIGZpbGw9V0hJVEVfU09GVCwKICAgICkKICAgIHIgPSAyMiAqIHMKICAgIGRyLmVsbGlwc2UoCiAgICAgICAgW2N4ICsgNDggKiBzIC0gciwgY3kgLSA5OCAqIHMgLSByLCBjeCArIDQ4ICogcyArIHIsIGN5IC0gOTggKiBzICsgcl0sCiAgICAgICAgZmlsbD0oMjU1LCA4MCwgODAsIDI1NSksCiAgICApCgoKZGVmIG1ha2VfYmFubmVyKG91dF9wYXRoOiBzdHIpIC0+IE5vbmU6CiAgICB3LCBoID0gNjAwLCAxMjAKICAgIGJhc2UgPSBob3Jpem9udGFsX2dyYWRpZW50KCh3LCBoKSwgQUNDRU5UX0RBUkssIEFDQ0VOVCkKICAgIGRyID0gSW1hZ2VEcmF3LkRyYXcoYmFzZSkKICAgIGZvbnRfdGl0bGUgPSBsb2FkX2ZvbnQoMjYpCiAgICBmb250X3N1YiA9IGxvYWRfZm9udCgxNCkKICAgIGRyLnRleHQoKDI0LCAyOCksICJNQVMgTm90aWZpY2F0aW9uIENlbnRlciIsIGZvbnQ9Zm9udF90aXRsZSwgZmlsbD1XSElURSkKICAgIGRyLnRleHQoKDI0LCA2OCksICJBbGVydHMsIGVtYWlsLCBEaXNjb3JkLCBhbmQgd2ViIHB1c2giLCBmb250PWZvbnRfc3ViLCBmaWxsPSgyMjAsIDIzNSwgMjU1LCAyNTUpKQogICAgb3ZlcmxheSA9IEltYWdlLm5ldygiUkdCQSIsICh3LCBoKSwgKDAsIDAsIDAsIDApKQogICAgZHJhd19iZWxsKG92ZXJsYXksIDUyMCwgNzgsIDAuMjIpCiAgICBiYXNlID0gSW1hZ2UuYWxwaGFfY29tcG9zaXRlKGJhc2UsIG92ZXJsYXkpCiAgICBiYXNlLnNhdmUob3V0X3BhdGgsICJQTkciKQoKCmRlZiBtYWtlX2ljb24oc2l6ZTogaW50LCBvdXRfcGF0aDogc3RyKSAtPiBOb25lOgogICAgaW1nID0gSW1hZ2UubmV3KCJSR0JBIiwgKHNpemUsIHNpemUpLCAoMCwgMCwgMCwgMCkpCiAgICBtYXJnaW4gPSBpbnQoc2l6ZSAqIDAuMDYpCiAgICBncmFkID0gaG9yaXpvbnRhbF9ncmFkaWVudCgoc2l6ZSwgc2l6ZSksIEFDQ0VOVF9EQVJLLCBBQ0NFTlQpCiAgICBtYXNrID0gSW1hZ2UubmV3KCJMIiwgKHNpemUsIHNpemUpLCAwKQogICAgbWRyID0gSW1hZ2VEcmF3LkRyYXcobWFzaykKICAgIG1kci5yb3VuZGVkX3JlY3RhbmdsZSgKICAgICAgICBbbWFyZ2luLCBtYXJnaW4sIHNpemUgLSBtYXJnaW4sIHNpemUgLSBtYXJnaW5dLAogICAgICAgIHJhZGl1cz1pbnQoc2l6ZSAqIDAuMTgpLAogICAgICAgIGZpbGw9MjU1LAogICAgKQogICAgaW1nLnBhc3RlKGdyYWQsICgwLCAwKSkKICAgIGltZy5wdXRhbHBoYShtYXNrKQogICAgYmVsbF9sYXllciA9IEltYWdlLm5ldygiUkdCQSIsIChzaXplLCBzaXplKSwgKDAsIDAsIDAsIDApKQogICAgZHJhd19iZWxsKGJlbGxfbGF5ZXIsIHNpemUgLyAyLCBzaXplIC8gMiwgc2l6ZSAvIDUxMikKICAgIGltZyA9IEltYWdlLmFscGhhX2NvbXBvc2l0ZShpbWcsIGJlbGxfbGF5ZXIpCiAgICByb3VuZGVkID0gSW1hZ2UubmV3KCJSR0JBIiwgKHNpemUsIHNpemUpLCAoMCwgMCwgMCwgMCkpCiAgICByb3VuZGVkLnBhc3RlKGltZywgKDAsIDApKQogICAgcm91bmRlZC5wdXRhbHBoYShtYXNrKQogICAgcm91bmRlZC5zYXZlKG91dF9wYXRoLCAiUE5HIikKCgpkZWYgbWFrZV9pY29uX2dpZihvdXRfcGF0aDogc3RyKSAtPiBOb25lOgogICAgc2l6ZSA9IDY0CiAgICBpbWcgPSBJbWFnZS5uZXcoIlJHQkEiLCAoc2l6ZSwgc2l6ZSksICgwLCAwLCAwLCAwKSkKICAgIGdyYWQgPSBob3Jpem9udGFsX2dyYWRpZW50KChzaXplLCBzaXplKSwgQUNDRU5UX0RBUkssIEFDQ0VOVCkKICAgIGltZy5wYXN0ZShncmFkLCAoMCwgMCkpCiAgICBiZWxsX2xheWVyID0gSW1hZ2UubmV3KCJSR0JBIiwgKHNpemUsIHNpemUpLCAoMCwgMCwgMCwgMCkpCiAgICBkcmF3X2JlbGwoYmVsbF9sYXllciwgc2l6ZSAvIDIsIHNpemUgLyAyLCBzaXplIC8gNTEyKQogICAgaW1nID0gSW1hZ2UuYWxwaGFfY29tcG9zaXRlKGltZywgYmVsbF9sYXllcikKICAgIHJnYiA9IEltYWdlLm5ldygiUkdCIiwgaW1nLnNpemUsICgyNTUsIDI1NSwgMjU1KSkKICAgIHJnYi5wYXN0ZShpbWcsIG1hc2s9aW1nLnNwbGl0KClbM10pCiAgICByZ2Iuc2F2ZShvdXRfcGF0aCwgIkdJRiIpCgoKZGVmIG1haW4oKSAtPiBpbnQ6CiAgICByb290ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCiAgICBpbWFnZXMgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihyb290LCAiLi4iLCAiaW1hZ2VzIikpCiAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihpbWFnZXMpOgogICAgICAgIHByaW50KCJNaXNzaW5nIGltYWdlcyBkaXJlY3Rvcnk6IiwgaW1hZ2VzLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgcmV0dXJuIDEKICAgIG1ha2VfYmFubmVyKG9zLnBhdGguam9pbihpbWFnZXMsICJiYW5uZXIucG5nIikpCiAgICBtYWtlX2ljb24oMTkyLCBvcy5wYXRoLmpvaW4oaW1hZ2VzLCAiaWNvbi0xOTIucG5nIikpCiAgICBtYWtlX2ljb24oNTEyLCBvcy5wYXRoLmpvaW4oaW1hZ2VzLCAiaWNvbi01MTIucG5nIikpCiAgICBtYWtlX2ljb25fZ2lmKG9zLnBhdGguam9pbihpbWFnZXMsICJpY29uLmdpZiIpKQogICAgcHJpbnQoIk9LIC0+IiwgaW1hZ2VzKQogICAgcmV0dXJuIDAKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgcmFpc2UgU3lzdGVtRXhpdChtYWluKCkpCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/autoload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgppZiAoUEhQX1ZFUlNJT05fSUQgPCA1MDYwMCkgewogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSkgewogICAgICAgIGhlYWRlcignSFRUUC8xLjEgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpOwogICAgfQogICAgJGVyciA9ICdDb21wb3NlciAyLjMuMCBkcm9wcGVkIHN1cHBvcnQgZm9yIGF1dG9sb2FkaW5nIG9uIFBIUCA8NS42IGFuZCB5b3UgYXJlIHJ1bm5pbmcgJy5QSFBfVkVSU0lPTi4nLCBwbGVhc2UgdXBncmFkZSBQSFAgb3IgdXNlIENvbXBvc2VyIDIuMiBMVFMgdmlhICJjb21wb3NlciBzZWxmLXVwZGF0ZSAtLTIuMiIuIEFib3J0aW5nLicuUEhQX0VPTDsKICAgIGlmICghaW5pX2dldCgnZGlzcGxheV9lcnJvcnMnKSkgewogICAgICAgIGlmIChQSFBfU0FQSSA9PT0gJ2NsaScgfHwgUEhQX1NBUEkgPT09ICdwaHBkYmcnKSB7CiAgICAgICAgICAgIGZ3cml0ZShTVERFUlIsICRlcnIpOwogICAgICAgIH0gZWxzZWlmICghaGVhZGVyc19zZW50KCkpIHsKICAgICAgICAgICAgZWNobyAkZXJyOwogICAgICAgIH0KICAgIH0KICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCRlcnIpOwp9CgpyZXF1aXJlX29uY2UgX19ESVJfXyAuICcvY29tcG9zZXIvYXV0b2xvYWRfcmVhbC5waHAnOwoKcmV0dXJuIENvbXBvc2VyQXV0b2xvYWRlckluaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYTo6Z2V0TG9hZGVyKCk7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUuCgojIyBbMC45LjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjkuMykgLSAyMDIxLTA4LTE1Cgrwn5qAICoqQ29tcGF0aWJpbGl0eSB3aXRoIFBIUCA4LjEqKgoKLSBTdXBwb3J0IGZvciBjdXN0b20gb2JqZWN0IHNlcmlhbGl6YXRpb247IHRoaXMgcmVtb3ZlcyBhIHdhcm5pbmcgb24gUEhQIDguMSBkdWUgdG8gdGhlIGBTZXJpYWxpemFibGVgIGludGVyZmFjZSBiZWluZyBkZXByZWNhdGVkICh0aGFua3MgQFRSb3dib3RoYW0pCgojIyBbMC45LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjkuMikgLSAyMDIxLTAxLTIwCgrwn5CbICoqQnVnIGZpeCoqCgotIEluY29ycmVjdCByZXN1bHRzIGNvdWxkIGJlIHJldHVybmVkIHdoZW4gdXNpbmcgdGhlIEJDTWF0aCBjYWxjdWxhdG9yLCB3aXRoIGEgZGVmYXVsdCBzY2FsZSBzZXQgd2l0aCBgYmNzY2FsZSgpYCwgb24gUEhQID49IDcuMiAoIzU1KS4KCiMjIFswLjkuMV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOS4xKSAtIDIwMjAtMDgtMTkKCuKcqCBOZXcgZmVhdHVyZXMKCi0gYEJpZ0ludGVnZXI6Om5vdCgpYCByZXR1cm5zIHRoZSBiaXR3aXNlIGBOT1RgIHZhbHVlCgrwn5CbICoqQnVnIGZpeGVzKioKCi0gYEJpZ0ludGVnZXI6OnRvQnl0ZXMoKWAgY291bGQgcmV0dXJuIGFuIGluY29ycmVjdCBiaW5hcnkgcmVwcmVzZW50YXRpb24gZm9yIHNvbWUgbnVtYmVycwotIFRoZSBiaXR3aXNlIG9wZXJhdGlvbnMgYGFuZCgpYCwgYG9yKClgLCBgeG9yKClgIG9uIGBCaWdJbnRlZ2VyYCBjb3VsZCByZXR1cm4gYW4gaW5jb3JyZWN0IHJlc3VsdCB3aGVuIHRoZSBHTVAgZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUKCiMjIFswLjkuMF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOS4wKSAtIDIwMjAtMDgtMTgKCvCfkYwgKipJbXByb3ZlbWVudHMqKgoKLSBgQmlnTnVtYmVyOjpvZigpYCBub3cgYWNjZXB0cyBgLjEyM2AgYW5kIGAxMjMuYCBmb3JtYXRzLCBib3RoIG9mIHdoaWNoIHJldHVybiBhIGBCaWdEZWNpbWFsYAoK8J+SpSAqKkJyZWFraW5nIGNoYW5nZXMqKgoKLSBEZXByZWNhdGVkIG1ldGhvZCBgQmlnSW50ZWdlcjo6cG93ZXJNb2QoKWAgaGFzIGJlZW4gcmVtb3ZlZCAtIHVzZSBgbW9kUG93KClgIGluc3RlYWQKLSBEZXByZWNhdGVkIG1ldGhvZCBgQmlnSW50ZWdlcjo6cGFyc2UoKWAgaGFzIGJlZW4gcmVtb3ZlZCAtIHVzZSBgZnJvbUJhc2UoKWAgaW5zdGVhZAoKIyMgWzAuOC4xN10oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xNykgLSAyMDIwLTA4LTE5Cgrwn5CbICoqQnVnIGZpeCoqCgotIGBCaWdJbnRlZ2VyOjp0b0J5dGVzKClgIGNvdWxkIHJldHVybiBhbiBpbmNvcnJlY3QgYmluYXJ5IHJlcHJlc2VudGF0aW9uIGZvciBzb21lIG51bWJlcnMKLSBUaGUgYml0d2lzZSBvcGVyYXRpb25zIGBhbmQoKWAsIGBvcigpYCwgYHhvcigpYCBvbiBgQmlnSW50ZWdlcmAgY291bGQgcmV0dXJuIGFuIGluY29ycmVjdCByZXN1bHQgd2hlbiB0aGUgR01QIGV4dGVuc2lvbiBpcyBub3QgYXZhaWxhYmxlCgojIyBbMC44LjE2XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjE2KSAtIDIwMjAtMDgtMTgKCvCfmpEgKipDcml0aWNhbCBmaXgqKgoKLSBUaGlzIHZlcnNpb24gcmVpbnRyb2R1Y2VzIHRoZSBkZXByZWNhdGVkIGBCaWdJbnRlZ2VyOjpwYXJzZSgpYCBtZXRob2QsIHRoYXQgaGFzIGJlZW4gcmVtb3ZlZCBieSBtaXN0YWtlIGluIHZlcnNpb24gYDAuOC45YCBhbmQgc2hvdWxkIGhhdmUgbGFzdGVkIGZvciB0aGUgd2hvbGUgYDAuOGAgcmVsZWFzZSBjeWNsZS4KCuKcqCAqKk5ldyBmZWF0dXJlcyoqCgotIGBCaWdJbnRlZ2VyOjptb2RJbnZlcnNlKClgIGNhbGN1bGF0ZXMgYSBtb2R1bGFyIG11bHRpcGxpY2F0aXZlIGludmVyc2UKLSBgQmlnSW50ZWdlcjo6ZnJvbUJ5dGVzKClgIGNyZWF0ZXMgYSBgQmlnSW50ZWdlcmAgZnJvbSBhIGJ5dGUgc3RyaW5nCi0gYEJpZ0ludGVnZXI6OnRvQnl0ZXMoKWAgY29udmVydHMgYSBgQmlnSW50ZWdlcmAgdG8gYSBieXRlIHN0cmluZwotIGBCaWdJbnRlZ2VyOjpyYW5kb21CaXRzKClgIGNyZWF0ZXMgYSBwc2V1ZG8tcmFuZG9tIGBCaWdJbnRlZ2VyYCBvZiBhIGdpdmVuIGJpdCBsZW5ndGgKLSBgQmlnSW50ZWdlcjo6cmFuZG9tUmFuZ2UoKWAgY3JlYXRlcyBhIHBzZXVkby1yYW5kb20gYEJpZ0ludGVnZXJgIGJldHdlZW4gdHdvIGJvdW5kcwoK8J+SqSAqKkRlcHJlY2F0aW9ucyoqCgotIGBCaWdJbnRlZ2VyOjpwb3dlck1vZCgpYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgYG1vZFBvdygpYAoKIyMgWzAuOC4xNV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xNSkgLSAyMDIwLTA0LTE1Cgrwn5CbICoqRml4ZXMqKgoKLSBhZGRlZCBtaXNzaW5nIGBleHQtanNvbmAgcmVxdWlyZW1lbnQsIGR1ZSB0byBgQmlnTnVtYmVyYCBpbXBsZW1lbnRpbmcgYEpzb25TZXJpYWxpemFibGVgCgrimqHvuI8gKipPcHRpbWl6YXRpb25zKioKCi0gYWRkaXRpb25hbCBvcHRpbWl6YXRpb24gaW4gYEJpZ0ludGVnZXI6OnJlbWFpbmRlcigpYAoKIyMgWzAuOC4xNF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xNCkgLSAyMDIwLTAyLTE4CgrinKggKipOZXcgZmVhdHVyZXMqKgoKLSBgQmlnSW50ZWdlcjo6Z2V0TG93ZXN0U2V0Qml0KClgIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSByaWdodG1vc3Qgb25lIGJpdAoKIyMgWzAuOC4xM10oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC4xMykgLSAyMDIwLTAyLTE2CgrinKggKipOZXcgZmVhdHVyZXMqKgoKLSBgQmlnSW50ZWdlcjo6aXNFdmVuKClgIHRlc3RzIHdoZXRoZXIgdGhlIG51bWJlciBpcyBldmVuCi0gYEJpZ0ludGVnZXI6OmlzT2RkKClgIHRlc3RzIHdoZXRoZXIgdGhlIG51bWJlciBpcyBvZGQKLSBgQmlnSW50ZWdlcjo6dGVzdEJpdCgpYCB0ZXN0cyBpZiBhIGJpdCBpcyBzZXQKLSBgQmlnSW50ZWdlcjo6Z2V0Qml0TGVuZ3RoKClgIHJldHVybnMgdGhlIG51bWJlciBvZiBiaXRzIGluIHRoZSBtaW5pbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBudW1iZXIKCiMjIFswLjguMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMTIpIC0gMjAyMC0wMi0wMwoK8J+boO+4jyAqKk1haW50ZW5hbmNlIHJlbGVhc2UqKgoKQ2xhc3NlcyBhcmUgbm93IGFubm90YXRlZCBmb3IgYmV0dGVyIHN0YXRpYyBhbmFseXNpcyB3aXRoIFtwc2FsbV0oaHR0cHM6Ly9wc2FsbS5kZXYvKS4KClRoaXMgaXMgYSBtYWludGVuYW5jZSByZWxlYXNlOiBubyBidWcgZml4ZXMsIG5vIG5ldyBmZWF0dXJlcywgbm8gYnJlYWtpbmcgY2hhbmdlcy4KCiMjIFswLjguMTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMTEpIC0gMjAyMC0wMS0yMwoK4pyoICoqTmV3IGZlYXR1cmUqKgoKYEJpZ0ludGVnZXI6OnBvd2VyTW9kKClgIHBlcmZvcm1zIGEgcG93ZXItd2l0aC1tb2R1bG8gb3BlcmF0aW9uLiBVc2VmdWwgZm9yIGNyeXB0by4KCiMjIFswLjguMTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMTApIC0gMjAyMC0wMS0yMQoK4pyoICoqTmV3IGZlYXR1cmUqKgoKYEJpZ0ludGVnZXI6Om1vZCgpYCByZXR1cm5zIHRoZSAqKm1vZHVsbyoqIG9mIHR3byBudW1iZXJzLiBUaGUgKm1vZHVsbyogZGlmZmVycyBmcm9tIHRoZSAqcmVtYWluZGVyKiB3aGVuIHRoZSBzaWducyBvZiB0aGUgb3BlcmFuZHMgYXJlIGRpZmZlcmVudC4KCiMjIFswLjguOV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC45KSAtIDIwMjAtMDEtMDgKCuKaoe+4jyAqKlBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyoqCgpBIGZldyBhZGRpdGlvbmFsIG9wdGltaXphdGlvbnMgaW4gYEJpZ0ludGVnZXJgIGFuZCBgQmlnRGVjaW1hbGAgd2hlbiBvbmUgb2YgdGhlIG9wZXJhbmRzIGNhbiBiZSByZXR1cm5lZCBhcyBpcy4gVGhhbmtzIHRvIEB0b210b21zZW4gaW4gIzI0LgoKIyMgWzAuOC44XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjgpIC0gMjAxOS0wNC0yNQoK8J+QmyAqKkJ1ZyBmaXhlcyoqCgotIGBCaWdJbnRlZ2VyOjp0b0Jhc2UoKWAgY291bGQgcmV0dXJuIGFuIGVtcHR5IHN0cmluZyBmb3IgemVybyB2YWx1ZXMgKEJDTWF0aCAmIE5hdGl2ZSBjYWxjdWxhdG9ycyBvbmx5LCBHTVAgY2FsY3VsYXRvciB1bmFmZmVjdGVkKQoK4pyoICoqTmV3IGZlYXR1cmVzKioKCi0gYEJpZ0ludGVnZXI6OnRvQXJiaXRyYXJ5QmFzZSgpYCBjb252ZXJ0cyBhIG51bWJlciB0byBhbiBhcmJpdHJhcnkgYmFzZSwgdXNpbmcgYSBjdXN0b20gYWxwaGFiZXQKLSBgQmlnSW50ZWdlcjo6ZnJvbUFyYml0cmFyeUJhc2UoKWAgY29udmVydHMgYSBzdHJpbmcgaW4gYW4gYXJiaXRyYXJ5IGJhc2UsIHVzaW5nIGEgY3VzdG9tIGFscGhhYmV0LCBiYWNrIHRvIGEgbnVtYmVyCgpUaGVzZSBtZXRob2RzIGNhbiBiZSB1c2VkIGFzIHRoZSBmb3VuZGF0aW9uIHRvIGNvbnZlcnQgc3RyaW5ncyBiZXR3ZWVuIGRpZmZlcmVudCBiYXNlcy9hbHBoYWJldHMsIHVzaW5nIEJpZ0ludGVnZXIgYXMgYW4gaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uLgoK8J+SqSAqKkRlcHJlY2F0aW9ucyoqCgotIGBCaWdJbnRlZ2VyOjpwYXJzZSgpYCBpcyBub3cgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgYGZyb21CYXNlKClgCgpgQmlnSW50ZWdlcjo6ZnJvbUJhc2UoKWAgd29ya3MgdGhlIHNhbWUgd2F5IGFzIGBwYXJzZSgpYCwgd2l0aCAyIG1pbm9yIGRpZmZlcmVuY2VzOgoKLSB0aGUgYCRiYXNlYCBwYXJhbWV0ZXIgaXMgcmVxdWlyZWQsIGl0IGRvZXMgbm90IGRlZmF1bHQgdG8gYDEwYAotIGl0IHRocm93cyBhIGBOdW1iZXJGb3JtYXRFeGNlcHRpb25gIGluc3RlYWQgb2YgYW4gYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAgd2hlbiB0aGUgbnVtYmVyIGlzIG1hbGZvcm1lZAoKIyMgWzAuOC43XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjcpIC0gMjAxOS0wNC0yMAoKKipJbXByb3ZlbWVudHMqKgoKLSBTYWZlciBjb252ZXJzaW9uIGZyb20gYGZsb2F0YCB3aGVuIHVzaW5nIGN1c3RvbSBsb2NhbGVzCi0gKipNdWNoIGZhc3RlcioqIGBOYXRpdmVDYWxjdWxhdG9yYCBpbXBsZW1lbnRhdGlvbiDwn5qACgpZb3UgY2FuIGV4cGVjdCAqKmF0IGxlYXN0IGEgM3ggcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQqKiBmb3IgY29tbW9uIGFyaXRobWV0aWMgb3BlcmF0aW9ucyB3aGVuIHVzaW5nIHRoZSBsaWJyYXJ5IG9uIHN5c3RlbXMgd2l0aG91dCBHTVAgb3IgQkNNYXRoOyBpdCBnZXRzIGV4cG9uZW50aWFsbHkgZmFzdGVyIG9uIG11bHRpcGxpY2F0aW9ucyB3aXRoIGEgaGlnaCBudW1iZXIgb2YgZGlnaXRzLiBUaGlzIGlzIGR1ZSB0byBjYWxjdWxhdGlvbnMgbm93IGJlaW5nIHBlcmZvcm1lZCBvbiB3aG9sZSBibG9ja3Mgb2YgZGlnaXRzICh0aGUgYmxvY2sgc2l6ZSBkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtLCAzMi1iaXQgb3IgNjQtYml0KSBpbnN0ZWFkIG9mIGRpZ2l0LWJ5LWRpZ2l0IGFzIGJlZm9yZS4KCiMjIFswLjguNl0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuOC42KSAtIDIwMTktMDQtMTEKCioqTmV3IG1ldGhvZCoqCgpgQmlnTnVtYmVyOjpzdW0oKWAgcmV0dXJucyB0aGUgc3VtIG9mIG9uZSBvciBtb3JlIG51bWJlcnMuCgojIyBbMC44LjVdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguNSkgLSAyMDE5LTAyLTEyCgoqKkJ1ZyBmaXgqKjogYG9mKClgIGZhY3RvcnkgbWV0aG9kcyBjb3VsZCBmYWlsIHdoZW4gcGFzc2luZyBhIGBmbG9hdGAgaW4gZW52aXJvbm1lbnRzIHVzaW5nIGEgYExDX05VTUVSSUNgIGxvY2FsZSB3aXRoIGEgZGVjaW1hbCBzZXBhcmF0b3Igb3RoZXIgdGhhbiBgJy4nYCAoIzIwKS4KClRoYW5rcyBAbWFub3dhcmsg8J+RjQoKIyMgWzAuOC40XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC44LjQpIC0gMjAxOC0xMi0wNwoKKipOZXcgbWV0aG9kKioKCmBCaWdEZWNpbWFsOjpzcXJ0KClgIGNhbGN1bGF0ZXMgdGhlIHNxdWFyZSByb290IG9mIGEgZGVjaW1hbCBudW1iZXIsIHRvIGEgZ2l2ZW4gc2NhbGUuCgojIyBbMC44LjNdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMykgLSAyMDE4LTEyLTA2CgoqKk5ldyBtZXRob2QqKgoKYEJpZ0ludGVnZXI6OnNxcnQoKWAgY2FsY3VsYXRlcyB0aGUgc3F1YXJlIHJvb3Qgb2YgYSBudW1iZXIgKHRoYW5rcyBAcGV0ZXIyNzlrKS4KCioqTmV3IGV4Y2VwdGlvbioqCgpgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb25gIGlzIHRocm93biB3aGVuIGNhbGxpbmcgYHNxcnQoKWAgb24gYSBuZWdhdGl2ZSBudW1iZXIuCgojIyBbMC44LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMikgLSAyMDE4LTExLTA4CgoqKlBlcmZvcm1hbmNlIHVwZGF0ZSoqCgotIEZ1cnRoZXIgaW1wcm92ZW1lbnQgb2YgYHRvSW50KClgIHBlcmZvcm1hbmNlCi0gYE5hdGl2ZUNhbGN1bGF0b3JgIGNhbiBub3cgcGVyZm9ybSBzb21lIG11bHRpcGxpY2F0aW9ucyBtb3JlIGVmZmljaWVudGx5CgojIyBbMC44LjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMSkgLSAyMDE4LTExLTA3CgpQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gb2YgYHRvSW50KClgIG1ldGhvZHMuCgojIyBbMC44LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjguMCkgLSAyMDE4LTEwLTEzCgoqKkJyZWFraW5nIGNoYW5nZXMqKgoKVGhlIGZvbGxvd2luZyBkZXByZWNhdGVkIG1ldGhvZHMgaGF2ZSBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgbmV3IG1ldGhvZCBuYW1lIGluc3RlYWQ6Cgp8IE1ldGhvZCByZW1vdmVkIHwgUmVwbGFjZW1lbnQgbWV0aG9kIHwKfCAtLS0gfCAtLS0gfAp8IGBCaWdEZWNpbWFsOjpnZXRJbnRlZ3JhbCgpYCB8IGBCaWdEZWNpbWFsOjpnZXRJbnRlZ3JhbFBhcnQoKWAgfAp8IGBCaWdEZWNpbWFsOjpnZXRGcmFjdGlvbigpYCB8IGBCaWdEZWNpbWFsOjpnZXRGcmFjdGlvbmFsUGFydCgpYCB8CgotLS0KCioqTmV3IGZlYXR1cmVzKioKCmBCaWdJbnRlZ2VyYCBoYXMgYmVlbiBhdWdtZW50ZWQgd2l0aCA1IG5ldyBtZXRob2RzIGZvciBiaXR3aXNlIG9wZXJhdGlvbnM6Cgp8IE5ldyBtZXRob2QgfCBEZXNjcmlwdGlvbiB8CnwgLS0tIHwgLS0tIHwKfCBgYW5kKClgIHwgcGVyZm9ybXMgYSBiaXR3aXNlIGBBTkRgIG9wZXJhdGlvbiBvbiB0d28gbnVtYmVycyB8CnwgYG9yKClgIHwgcGVyZm9ybXMgYSBiaXR3aXNlIGBPUmAgb3BlcmF0aW9uIG9uIHR3byBudW1iZXJzIHwKfCBgeG9yKClgIHwgcGVyZm9ybXMgYSBiaXR3aXNlIGBYT1JgIG9wZXJhdGlvbiBvbiB0d28gbnVtYmVycyB8CnwgYHNoaWZ0ZWRMZWZ0KClgIHwgcmV0dXJucyB0aGUgbnVtYmVyIHNoaWZ0ZWQgbGVmdCBieSBhIG51bWJlciBvZiBiaXRzIHwKfCBgc2hpZnRlZFJpZ2h0KClgIHwgcmV0dXJucyB0aGUgbnVtYmVyIHNoaWZ0ZWQgcmlnaHQgYnkgYSBudW1iZXIgb2YgYml0cyB8CgpUaGFua3MgdG8gQERBU1BSaUQg8J+RjQoKIyMgWzAuNy4zXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC43LjMpIC0gMjAxOC0wOC0yMAoKKipOZXcgbWV0aG9kOioqIGBCaWdEZWNpbWFsOjpoYXNOb25aZXJvRnJhY3Rpb25hbFBhcnQoKWAKCioqUmVuYW1lZC9kZXByZWNhdGVkIG1ldGhvZHM6KioKCi0gYEJpZ0RlY2ltYWw6OmdldEludGVncmFsKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldEludGVncmFsUGFydCgpYCBhbmQgaXMgbm93IGRlcHJlY2F0ZWQKLSBgQmlnRGVjaW1hbDo6Z2V0RnJhY3Rpb24oKWAgaGFzIGJlZW4gcmVuYW1lZCB0byBgZ2V0RnJhY3Rpb25hbFBhcnQoKWAgYW5kIGlzIG5vdyBkZXByZWNhdGVkCgojIyBbMC43LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjcuMikgLSAyMDE4LTA3LTIxCgoqKlBlcmZvcm1hbmNlIHVwZGF0ZSoqCgpgQmlnSW50ZWdlcjo6cGFyc2UoKWAgYW5kIGB0b0Jhc2UoKWAgbm93IHVzZSBHTVAncyBidWlsdC1pbiBiYXNlIGNvbnZlcnNpb24gZmVhdHVyZXMgd2hlbiBhdmFpbGFibGUuCgojIyBbMC43LjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjcuMSkgLSAyMDE4LTAzLTAxCgpUaGlzIGlzIGEgbWFpbnRlbmFuY2UgcmVsZWFzZSwgbm8gY29kZSBoYXMgYmVlbiBjaGFuZ2VkLgoKLSBXaGVuIGluc3RhbGxlZCB3aXRoIGAtLW5vLWRldmAsIHRoZSBhdXRvbG9hZGVyIGRvZXMgbm90IGF1dG9sb2FkIHRlc3RzIGFueW1vcmUKLSBUZXN0cyBhbmQgb3RoZXIgZmlsZXMgdW5uZWNlc3NhcnkgZm9yIHByb2R1Y3Rpb24gYXJlIGV4Y2x1ZGVkIGZyb20gdGhlIGRpc3QgcGFja2FnZQoKVGhpcyB3aWxsIGhlbHAgbWFrZSBpbnN0YWxsYXRpb25zIG1vcmUgY29tcGFjdC4KCiMjIFswLjcuMF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNy4wKSAtIDIwMTctMTAtMDIKCk1ldGhvZHMgcmVuYW1lZDoKCi0gYEJpZ051bWJlcjpzaWduKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldFNpZ24oKWAKLSBgQmlnRGVjaW1hbDo6dW5zY2FsZWRWYWx1ZSgpYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBnZXRVbnNjYWxlZFZhbHVlKClgCi0gYEJpZ0RlY2ltYWw6OnNjYWxlKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldFNjYWxlKClgCi0gYEJpZ0RlY2ltYWw6OmludGVncmFsKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldEludGVncmFsKClgCi0gYEJpZ0RlY2ltYWw6OmZyYWN0aW9uKClgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGdldEZyYWN0aW9uKClgCi0gYEJpZ1JhdGlvbmFsOjpudW1lcmF0b3IoKWAgaGFzIGJlZW4gcmVuYW1lZCB0byBgZ2V0TnVtZXJhdG9yKClgCi0gYEJpZ1JhdGlvbmFsOjpkZW5vbWluYXRvcigpYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBnZXREZW5vbWluYXRvcigpYAoKQ2xhc3NlcyByZW5hbWVkOgoKLSBgQXJpdGhtZXRpY0V4Y2VwdGlvbmAgaGFzIGJlZW4gcmVuYW1lZCB0byBgTWF0aEV4Y2VwdGlvbmAKCiMjIFswLjYuMl0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNi4yKSAtIDIwMTctMTAtMDIKClRoZSBiYXNlIGNsYXNzIGZvciBhbGwgZXhjZXB0aW9ucyBpcyBub3cgYE1hdGhFeGNlcHRpb25gLgpgQXJpdGhtZXRpY0V4Y2VwdGlvbmAgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAwLjcuMC4KCiMjIFswLjYuMV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNi4xKSAtIDIwMTctMTAtMDIKCkEgbnVtYmVyIG9mIG1ldGhvZHMgaGF2ZSBiZWVuIHJlbmFtZWQ6CgotIGBCaWdOdW1iZXI6c2lnbigpYCBpcyBkZXByZWNhdGVkOyB1c2UgYGdldFNpZ24oKWAgaW5zdGVhZAotIGBCaWdEZWNpbWFsOjp1bnNjYWxlZFZhbHVlKClgIGlzIGRlcHJlY2F0ZWQ7IHVzZSBgZ2V0VW5zY2FsZWRWYWx1ZSgpYCBpbnN0ZWFkCi0gYEJpZ0RlY2ltYWw6OnNjYWxlKClgIGlzIGRlcHJlY2F0ZWQ7IHVzZSBgZ2V0U2NhbGUoKWAgaW5zdGVhZAotIGBCaWdEZWNpbWFsOjppbnRlZ3JhbCgpYCBpcyBkZXByZWNhdGVkOyB1c2UgYGdldEludGVncmFsKClgIGluc3RlYWQKLSBgQmlnRGVjaW1hbDo6ZnJhY3Rpb24oKWAgaXMgZGVwcmVjYXRlZDsgdXNlIGBnZXRGcmFjdGlvbigpYCBpbnN0ZWFkCi0gYEJpZ1JhdGlvbmFsOjpudW1lcmF0b3IoKWAgaXMgZGVwcmVjYXRlZDsgdXNlIGBnZXROdW1lcmF0b3IoKWAgaW5zdGVhZAotIGBCaWdSYXRpb25hbDo6ZGVub21pbmF0b3IoKWAgaXMgZGVwcmVjYXRlZDsgdXNlIGBnZXREZW5vbWluYXRvcigpYCBpbnN0ZWFkCgpUaGUgb2xkIG1ldGhvZHMgd2lsbCBiZSByZW1vdmVkIGluIHZlcnNpb24gMC43LjAuCgojIyBbMC42LjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjYuMCkgLSAyMDE3LTA4LTI1CgotIE1pbmltdW0gUEhQIHZlcnNpb24gaXMgbm93IFs3LjFdKGh0dHBzOi8vZ29waHA3MS5vcmcvKTsgZm9yIFBIUCA1LjYgYW5kIFBIUCA3LjAgc3VwcG9ydCwgdXNlIHZlcnNpb24gYDAuNWAKLSBEZXByZWNhdGVkIG1ldGhvZCBgQmlnRGVjaW1hbDo6d2l0aFNjYWxlKClgIGhhcyBiZWVuIHJlbW92ZWQ7IHVzZSBgdG9TY2FsZSgpYCBpbnN0ZWFkCi0gTWV0aG9kIGBCaWdOdW1iZXI6OnRvSW50ZWdlcigpYCBoYXMgYmVlbiByZW5hbWVkIHRvIGB0b0ludCgpYAoKIyMgWzAuNS40XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjQpIC0gMjAxNi0xMC0xNwoKYEJpZ051bWJlcmAgY2xhc3NlcyBub3cgaW1wbGVtZW50IFtKc29uU2VyaWFsaXphYmxlXShodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vY2xhc3MuanNvbnNlcmlhbGl6YWJsZS5waHApLgpUaGUgSlNPTiBvdXRwdXQgaXMgYWx3YXlzIGEgc3RyaW5nLgoKIyMgWzAuNS4zXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjMpIC0gMjAxNi0wMy0zMQoKVGhpcyBpcyBhIGJ1Z2ZpeCByZWxlYXNlLiBEaXZpZGluZyBieSBhIG5lZ2F0aXZlIHBvd2VyIG9mIDEgd2l0aCB0aGUgc2FtZSBzY2FsZSBhcyB0aGUgZGl2aWRlbmQgY291bGQgdHJpZ2dlciBhbiBpbmNvcnJlY3Qgb3B0aW1pemF0aW9uIHdoaWNoIHJlc3VsdGVkIGluIGEgd3JvbmcgcmVzdWx0LiBTZWUgIzYuCgojIyBbMC41LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjUuMikgLSAyMDE1LTA4LTA2CgpUaGUgYCRzY2FsZWAgcGFyYW1ldGVyIG9mIGBCaWdEZWNpbWFsOjpkaXZpZGVkQnkoKWAgaXMgbm93IG9wdGlvbmFsIGFnYWluLgoKIyMgWzAuNS4xXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjEpIC0gMjAxNS0wNy0wNQoKKipOZXcgbWV0aG9kOiBgQmlnTnVtYmVyOjp0b1NjYWxlKClgKioKClRoaXMgYWxsb3dzIHRvIGNvbnZlcnQgYW55IGBCaWdOdW1iZXJgIHRvIGEgYEJpZ0RlY2ltYWxgIHdpdGggYSBnaXZlbiBzY2FsZSwgdXNpbmcgcm91bmRpbmcgaWYgbmVjZXNzYXJ5LgoKIyMgWzAuNS4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC41LjApIC0gMjAxNS0wNy0wNAoKKipOZXcgZmVhdHVyZXMqKgotIENvbW1vbiBgQmlnTnVtYmVyYCBpbnRlcmZhY2UgZm9yIGFsbCBjbGFzc2VzLCB3aXRoIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKICAtIGBzaWduKClgIGFuZCBkZXJpdmVkIG1ldGhvZHMgKGBpc1plcm8oKWAsIGBpc1Bvc2l0aXZlKClgLCAuLi4pCiAgLSBgY29tcGFyZVRvKClgIGFuZCBkZXJpdmVkIG1ldGhvZHMgKGBpc0VxdWFsVG8oKWAsIGBpc0dyZWF0ZXJUaGFuKClgLCAuLi4pIHRoYXQgd29yayBhY3Jvc3MgZGlmZmVyZW50IGBCaWdOdW1iZXJgIHR5cGVzCiAgLSBgdG9CaWdJbnRlZ2VyKClgLCBgdG9CaWdEZWNpbWFsKClgLCBgdG9CaWdSYXRpb25hbGAoKSBjb252ZXJzaW9uIG1ldGhvZHMKICAtIGB0b0ludGVnZXIoKWAgYW5kIGB0b0Zsb2F0KClgIGNvbnZlcnNpb24gbWV0aG9kcyB0byBuYXRpdmUgdHlwZXMKLSBVbmlmaWVkIGBvZigpYCBiZWhhdmlvdXI6IGV2ZXJ5IGNsYXNzIG5vdyBhY2NlcHRzIGFueSB0eXBlIG9mIG51bWJlciwgcHJvdmlkZWQgdGhhdCBpdCBjYW4gYmUgc2FmZWx5IGNvbnZlcnRlZCB0byB0aGUgY3VycmVudCB0eXBlCi0gTmV3IG1ldGhvZDogYEJpZ0RlY2ltYWw6OmV4YWN0bHlEaXZpZGVkQnkoKWA7IHRoaXMgbWV0aG9kIGF1dG9tYXRpY2FsbHkgY29tcHV0ZXMgdGhlIHNjYWxlIG9mIHRoZSByZXN1bHQsIHByb3ZpZGVkIHRoYXQgdGhlIGRpdmlzaW9uIHlpZWxkcyBhIGZpbml0ZSBudW1iZXIgb2YgZGlnaXRzCi0gTmV3IG1ldGhvZHM6IGBCaWdSYXRpb25hbDo6cXVvdGllbnQoKWAgYW5kIGByZW1haW5kZXIoKWAKLSBGaW5lLWdyYWluZWQgZXhjZXB0aW9uczogYERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uYCwgYFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uYCwgYE51bWJlckZvcm1hdEV4Y2VwdGlvbmAKLSBGYWN0b3J5IG1ldGhvZHMgYHplcm8oKWAsIGBvbmUoKWAgYW5kIGB0ZW4oKWAgYXZhaWxhYmxlIGluIGFsbCBjbGFzc2VzCi0gUm91bmRpbmcgbW9kZSByZWludHJvZHVjZWQgaW4gYEJpZ0ludGVnZXI6OmRpdmlkZWRCeSgpYAoKVGhpcyByZWxlYXNlIGFsc28gY29tZXMgd2l0aCBtYW55IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cy4KCi0tLQoKKipCcmVha2luZyBjaGFuZ2VzKioKLSBgQmlnSW50ZWdlcmA6CiAgLSBgZ2V0U2lnbigpYCBpcyByZW5hbWVkIHRvIGBzaWduKClgCiAgLSBgdG9TdHJpbmcoKWAgaXMgcmVuYW1lZCB0byBgdG9CYXNlKClgCiAgLSBgQmlnSW50ZWdlcjo6ZGl2aWRlZEJ5KClgIG5vdyB0aHJvd3MgYW4gZXhjZXB0aW9uIGJ5IGRlZmF1bHQgaWYgdGhlIHJlbWFpbmRlciBpcyBub3QgemVybzsgdXNlIGBxdW90aWVudCgpYCB0byBnZXQgdGhlIHByZXZpb3VzIGJlaGF2aW91cgotIGBCaWdEZWNpbWFsYDoKICAtIGBnZXRTaWduKClgIGlzIHJlbmFtZWQgdG8gYHNpZ24oKWAKICAtIGBnZXRVbnNjYWxlZFZhbHVlKClgIGlzIHJlbmFtZWQgdG8gYHVuc2NhbGVkVmFsdWUoKWAKICAtIGBnZXRTY2FsZSgpYCBpcyByZW5hbWVkIHRvIGBzY2FsZSgpYAogIC0gYGdldEludGVncmFsKClgIGlzIHJlbmFtZWQgdG8gYGludGVncmFsKClgCiAgLSBgZ2V0RnJhY3Rpb24oKWAgaXMgcmVuYW1lZCB0byBgZnJhY3Rpb24oKWAKICAtIGBkaXZpZGVBbmRSZW1haW5kZXIoKWAgaXMgcmVuYW1lZCB0byBgcXVvdGllbnRBbmRSZW1haW5kZXIoKWAKICAtIGBkaXZpZGVkQnkoKWAgbm93IHRha2VzIGEgKiptYW5kYXRvcnkqKiBgJHNjYWxlYCBwYXJhbWV0ZXIgKipiZWZvcmUqKiB0aGUgcm91bmRpbmcgbW9kZQogIC0gYHRvQmlnSW50ZWdlcigpYCBkb2VzIG5vdCBhY2NlcHQgYSBgJHJvdW5kaW5nTW9kZWAgcGFyYW1ldGVyIGFueSBtb3JlCiAgLSBgdG9CaWdSYXRpb25hbCgpYCBkb2VzIG5vdCBzaW1wbGlmeSB0aGUgZnJhY3Rpb24gYW55IG1vcmU7IGV4cGxpY2l0bHkgYWRkIGAtPnNpbXBsaWZpZWQoKWAgdG8gZ2V0IHRoZSBwcmV2aW91cyBiZWhhdmlvdXIKLSBgQmlnUmF0aW9uYWxgOgogIC0gYGdldFNpZ24oKWAgaXMgcmVuYW1lZCB0byBgc2lnbigpYAogIC0gYGdldE51bWVyYXRvcigpYCBpcyByZW5hbWVkIHRvICBgbnVtZXJhdG9yKClgCiAgLSBgZ2V0RGVub21pbmF0b3IoKWAgaXMgcmVuYW1lZCB0byAgYGRlbm9taW5hdG9yKClgCiAgLSBgb2YoKWAgaXMgcmVuYW1lZCB0byBgbmQoKWAsIHdoaWxlIGBwYXJzZSgpYCBpcyByZW5hbWVkIHRvIGBvZigpYAotIE1pc2NlbGxhbmVvdXM6CiAgLSBgQXJpdGhtZXRpY0V4Y2VwdGlvbmAgaXMgbW92ZWQgdG8gYW4gYEV4Y2VwdGlvblxgIHN1Yi1uYW1lc3BhY2UKICAtIGBvZigpYCBmYWN0b3J5IG1ldGhvZHMgbm93IHRocm93IGBOdW1iZXJGb3JtYXRFeGNlcHRpb25gIGluc3RlYWQgb2YgYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAKCiMjIFswLjQuM10oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNC4zKSAtIDIwMTYtMDMtMzEKCkJhY2twb3J0IG9mIHR3byBidWcgZml4ZXMgZnJvbSB0aGUgMC41IGJyYW5jaDoKLSBgQmlnSW50ZWdlcjo6cGFyc2UoKWAgZGlkIG5vdCBhbHdheXMgdGhyb3cgYEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAgYXMgZXhwZWN0ZWQKLSBEaXZpZGluZyBieSBhIG5lZ2F0aXZlIHBvd2VyIG9mIDEgd2l0aCB0aGUgc2FtZSBzY2FsZSBhcyB0aGUgZGl2aWRlbmQgY291bGQgdHJpZ2dlciBhbiBpbmNvcnJlY3Qgb3B0aW1pemF0aW9uIHdoaWNoIHJlc3VsdGVkIGluIGEgd3JvbmcgcmVzdWx0LiBTZWUgIzYuCgojIyBbMC40LjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjQuMikgLSAyMDE1LTA2LTE2CgpOZXcgbWV0aG9kOiBgQmlnRGVjaW1hbDo6c3RyaXBUcmFpbGluZ1plcm9zKClgCgojIyBbMC40LjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjQuMSkgLSAyMDE1LTA2LTEyCgpJbnRyb2R1Y2luZyBhIGBCaWdSYXRpb25hbGAgY2xhc3MsIHRvIHBlcmZvcm0gY2FsY3VsYXRpb25zIG9uIGZyYWN0aW9ucyBvZiBhbnkgc2l6ZS4KCiMjIFswLjQuMF0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuNC4wKSAtIDIwMTUtMDYtMTIKClJvdW5kaW5nIG1vZGVzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gYEJpZ0ludGVnZXJgLCBhbmQgYXJlIG5vdyBhIGNvbmNlcHQgc3BlY2lmaWMgdG8gYEJpZ0RlY2ltYWxgLgoKYEJpZ0ludGVnZXI6OmRpdmlkZWRCeSgpYCBub3cgYWx3YXlzIHJldHVybnMgdGhlIHF1b3RpZW50IG9mIHRoZSBkaXZpc2lvbi4KCiMjIFswLjMuNV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuMy41KSAtIDIwMTYtMDMtMzEKCkJhY2twb3J0IG9mIHR3byBidWcgZml4ZXMgZnJvbSB0aGUgMC41IGJyYW5jaDoKCi0gYEJpZ0ludGVnZXI6OnBhcnNlKClgIGRpZCBub3QgYWx3YXlzIHRocm93IGBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb25gIGFzIGV4cGVjdGVkCi0gRGl2aWRpbmcgYnkgYSBuZWdhdGl2ZSBwb3dlciBvZiAxIHdpdGggdGhlIHNhbWUgc2NhbGUgYXMgdGhlIGRpdmlkZW5kIGNvdWxkIHRyaWdnZXIgYW4gaW5jb3JyZWN0IG9wdGltaXphdGlvbiB3aGljaCByZXN1bHRlZCBpbiBhIHdyb25nIHJlc3VsdC4gU2VlICM2LgoKIyMgWzAuMy40XShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4zLjQpIC0gMjAxNS0wNi0xMQoKTmV3IG1ldGhvZHM6Ci0gYEJpZ0ludGVnZXI6OnJlbWFpbmRlcigpYCByZXR1cm5zIHRoZSByZW1haW5kZXIgb2YgYSBkaXZpc2lvbiBvbmx5Ci0gYEJpZ0ludGVnZXI6OmdjZCgpYCByZXR1cm5zIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0d28gbnVtYmVycwoKIyMgWzAuMy4zXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4zLjMpIC0gMjAxNS0wNi0wNwoKRml4IGB0b1N0cmluZygpYCBub3QgaGFuZGxpbmcgbmVnYXRpdmUgbnVtYmVycy4KCiMjIFswLjMuMl0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuMy4yKSAtIDIwMTUtMDYtMDcKCmBCaWdJbnRlZ2VyYCBhbmQgYEJpZ0RlY2ltYWxgIG5vdyBoYXZlIGEgYGdldFNpZ24oKWAgbWV0aG9kIHRoYXQgcmV0dXJuczoKLSBgLTFgIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUKLSBgMGAgaWYgdGhlIG51bWJlciBpcyB6ZXJvCi0gYDFgIGlmIHRoZSBudW1iZXIgaXMgcG9zaXRpdmUKCiMjIFswLjMuMV0oaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcmVsZWFzZXMvdGFnLzAuMy4xKSAtIDIwMTUtMDYtMDUKCk1pbm9yIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cwoKIyMgWzAuMy4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4zLjApIC0gMjAxNS0wNi0wNAoKVGhlIGAkcm91bmRpbmdNb2RlYCBhbmQgYCRzY2FsZWAgcGFyYW1ldGVycyBoYXZlIGJlZW4gc3dhcHBlZCBpbiBgQmlnRGVjaW1hbDo6ZGl2aWRlZEJ5KClgLgoKIyMgWzAuMi4yXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4yLjIpIC0gMjAxNS0wNi0wNAoKU3Ryb25nZXIgaW1tdXRhYmlsaXR5IGd1YXJhbnRlZSBmb3IgYEJpZ0ludGVnZXJgIGFuZCBgQmlnRGVjaW1hbGAuCgpTbyBmYXIsIGl0IHdvdWxkIGhhdmUgYmVlbiBwb3NzaWJsZSB0byBicmVhayBpbW11dGFiaWxpdHkgb2YgdGhlc2UgY2xhc3NlcyBieSBjYWxsaW5nIHRoZSBgdW5zZXJpYWxpemUoKWAgaW50ZXJuYWwgZnVuY3Rpb24uIFRoaXMgcmVsZWFzZSBmaXhlcyB0aGF0LgoKIyMgWzAuMi4xXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4yLjEpIC0gMjAxNS0wNi0wMgoKQWRkZWQgYEJpZ0RlY2ltYWw6OmRpdmlkZUFuZFJlbWFpbmRlcigpYAoKIyMgWzAuMi4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4yLjApIC0gMjAxNS0wNS0yMgoKLSBgbWluKClgIGFuZCBgbWF4KClgIGRvIG5vdCBhY2NlcHQgYW4gYGFycmF5YCBhbnkgbW9yZSwgYnV0IGEgdmFyaWFibGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKLSAqKm1pbmltdW0gUEhQIHZlcnNpb24gaXMgbm93IDUuNioqCi0gY29udGludW91cyBpbnRlZ3JhdGlvbiB3aXRoIFBIUCA3CgojIyBbMC4xLjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoL3JlbGVhc2VzL3RhZy8wLjEuMSkgLSAyMDE0LTA5LTAxCgotIEFkZGVkIGBCaWdJbnRlZ2VyOjpwb3dlcigpYAotIEFkZGVkIEhIVk0gc3VwcG9ydAoKIyMgWzAuMS4wXShodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9yZWxlYXNlcy90YWcvMC4xLjApIC0gMjAxNC0wOC0zMQoKRmlyc3QgYmV0YSByZWxlYXNlLgoK]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiYnJpY2svbWF0aCIsCiAgICAiZGVzY3JpcHRpb24iOiAiQXJiaXRyYXJ5LXByZWNpc2lvbiBhcml0aG1ldGljIGxpYnJhcnkiLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgIkJyaWNrIiwKICAgICAgICAiTWF0aCIsCiAgICAgICAgIkFyYml0cmFyeS1wcmVjaXNpb24iLAogICAgICAgICJBcml0aG1ldGljIiwKICAgICAgICAiQmlnSW50ZWdlciIsCiAgICAgICAgIkJpZ0RlY2ltYWwiLAogICAgICAgICJCaWdSYXRpb25hbCIsCiAgICAgICAgIkJpZ251bSIKICAgIF0sCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICJeNy4xIHx8IF44LjAiLAogICAgICAgICJleHQtanNvbiI6ICIqIgogICAgfSwKICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl43LjUuMTUgfHwgXjguNSB8fCBeOS4wIiwKICAgICAgICAicGhwLWNvdmVyYWxscy9waHAtY292ZXJhbGxzIjogIl4yLjIiLAogICAgICAgICJ2aW1lby9wc2FsbSI6ICI0LjkuMiIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiQnJpY2tcXE1hdGhcXCI6ICJzcmMvIgogICAgICAgIH0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkJyaWNrXFxNYXRoXFxUZXN0c1xcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCBCZW5qYW1pbiBNb3JlbAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgp0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbgp0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvCnVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mCnRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywKc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUgpDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIKSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4KQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/SECURITY.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBTZWN1cml0eSBQb2xpY3kKCiMjIFN1cHBvcnRlZCBWZXJzaW9ucwoKT25seSB0aGUgbGFzdCB0d28gcmVsZWFzZSBzdHJlYW1zIGFyZSBzdXBwb3J0ZWQuCgp8IFZlcnNpb24gfCBTdXBwb3J0ZWQgICAgICAgICAgfAp8IC0tLS0tLS0gfCAtLS0tLS0tLS0tLS0tLS0tLS0gfAp8IDAuOS54ICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IDAuOC54ICAgfCA6d2hpdGVfY2hlY2tfbWFyazogfAp8IDwgMC44ICAgfCA6eDogICAgICAgICAgICAgICAgfAoKIyMgUmVwb3J0aW5nIGEgVnVsbmVyYWJpbGl0eQoKVG8gcmVwb3J0IGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSwgcGxlYXNlIHVzZSB0aGUKW1RpZGVsaWZ0IHNlY3VyaXR5IGNvbnRhY3RdKGh0dHBzOi8vdGlkZWxpZnQuY29tL3NlY3VyaXR5KS4KVGlkZWxpZnQgd2lsbCBjb29yZGluYXRlIHRoZSBmaXggYW5kIGRpc2Nsb3N1cmUuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigDecimal.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTmVnYXRpdmVOdW1iZXJFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogSW1tdXRhYmxlLCBhcmJpdHJhcnktcHJlY2lzaW9uIHNpZ25lZCBkZWNpbWFsIG51bWJlcnMuCiAqCiAqIEBwc2FsbS1pbW11dGFibGUKICovCmZpbmFsIGNsYXNzIEJpZ0RlY2ltYWwgZXh0ZW5kcyBCaWdOdW1iZXIKewogICAgLyoqCiAgICAgKiBUaGUgdW5zY2FsZWQgdmFsdWUgb2YgdGhpcyBkZWNpbWFsIG51bWJlci4KICAgICAqCiAgICAgKiBUaGlzIGlzIGEgc3RyaW5nIG9mIGRpZ2l0cyB3aXRoIGFuIG9wdGlvbmFsIGxlYWRpbmcgbWludXMgc2lnbi4KICAgICAqIE5vIGxlYWRpbmcgemVybyBtdXN0IGJlIHByZXNlbnQuCiAgICAgKiBObyBsZWFkaW5nIG1pbnVzIHNpZ24gbXVzdCBiZSBwcmVzZW50IGlmIHRoZSB2YWx1ZSBpcyAwLgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlOwoKICAgIC8qKgogICAgICogVGhlIHNjYWxlIChudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50KSBvZiB0aGlzIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIFRoaXMgbXVzdCBiZSB6ZXJvIG9yIG1vcmUuCiAgICAgKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkc2NhbGU7CgogICAgLyoqCiAgICAgKiBQcm90ZWN0ZWQgY29uc3RydWN0b3IuIFVzZSBhIGZhY3RvcnkgbWV0aG9kIHRvIG9idGFpbiBhbiBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSBUaGUgdW5zY2FsZWQgdmFsdWUsIHZhbGlkYXRlZC4KICAgICAqIEBwYXJhbSBpbnQgICAgJHNjYWxlIFRoZSBzY2FsZSwgdmFsaWRhdGVkLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICR2YWx1ZSwgaW50ICRzY2FsZSA9IDApCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgICAgICR0aGlzLT5zY2FsZSA9ICRzY2FsZTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdEZWNpbWFsIG9mIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mKCR2YWx1ZSkgOiBCaWdOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gcGFyZW50OjpvZigkdmFsdWUpLT50b0JpZ0RlY2ltYWwoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdEZWNpbWFsIGZyb20gYW4gdW5zY2FsZWQgdmFsdWUgYW5kIGEgc2NhbGUuCiAgICAgKgogICAgICogRXhhbXBsZTogYCgxMjM0NSwgMylgIHdpbGwgcmVzdWx0IGluIHRoZSBCaWdEZWNpbWFsIGAxMi4zNDVgLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdmFsdWUgVGhlIHVuc2NhbGVkIHZhbHVlLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAkc2NhbGUgVGhlIHNjYWxlIG9mIHRoZSBudW1iZXIsIHBvc2l0aXZlIG9yIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBzY2FsZSBpcyBuZWdhdGl2ZS4KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mVW5zY2FsZWRWYWx1ZSgkdmFsdWUsIGludCAkc2NhbGUgPSAwKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICBpZiAoJHNjYWxlIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIHNjYWxlIGNhbm5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQmlnRGVjaW1hbCgoc3RyaW5nKSBCaWdJbnRlZ2VyOjpvZigkdmFsdWUpLCAkc2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0RlY2ltYWwgcmVwcmVzZW50aW5nIHplcm8sIHdpdGggYSBzY2FsZSBvZiB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbAogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gemVybygpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnRGVjaW1hbHxudWxsICR6ZXJvCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICR6ZXJvOwoKICAgICAgICBpZiAoJHplcm8gPT09IG51bGwpIHsKICAgICAgICAgICAgJHplcm8gPSBuZXcgQmlnRGVjaW1hbCgnMCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR6ZXJvOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0RlY2ltYWwgcmVwcmVzZW50aW5nIG9uZSwgd2l0aCBhIHNjYWxlIG9mIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvbmUoKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAvKioKICAgICAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW1wdXJlU3RhdGljVmFyaWFibGUKICAgICAgICAgKiBAdmFyIEJpZ0RlY2ltYWx8bnVsbCAkb25lCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICRvbmU7CgogICAgICAgIGlmICgkb25lID09PSBudWxsKSB7CiAgICAgICAgICAgICRvbmUgPSBuZXcgQmlnRGVjaW1hbCgnMScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRvbmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgQmlnRGVjaW1hbCByZXByZXNlbnRpbmcgdGVuLCB3aXRoIGEgc2NhbGUgb2YgemVyby4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRlbigpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnRGVjaW1hbHxudWxsICR0ZW4KICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgJHRlbjsKCiAgICAgICAgaWYgKCR0ZW4gPT09IG51bGwpIHsKICAgICAgICAgICAgJHRlbiA9IG5ldyBCaWdEZWNpbWFsKCcxMCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZW47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgbWF4KCR0aGlzLT5zY2FsZSwgJHRoYXQtPnNjYWxlKWAuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBudW1iZXIgdG8gYWRkLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwbHVzKCR0aGF0KSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnICYmICR0aGF0LT5zY2FsZSA8PSAkdGhpcy0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSA9PT0gJzAnICYmICR0aGlzLT5zY2FsZSA8PSAkdGhhdC0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgWyRhLCAkYl0gPSAkdGhpcy0+c2NhbGVWYWx1ZXMoJHRoaXMsICR0aGF0KTsKCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmFkZCgkYSwgJGIpOwogICAgICAgICRzY2FsZSA9ICR0aGlzLT5zY2FsZSA+ICR0aGF0LT5zY2FsZSA/ICR0aGlzLT5zY2FsZSA6ICR0aGF0LT5zY2FsZTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR2YWx1ZSwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgbWF4KCR0aGlzLT5zY2FsZSwgJHRoYXQtPnNjYWxlKWAuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBudW1iZXIgdG8gc3VidHJhY3QuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdEZWNpbWFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZCwgb3IgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1pbnVzKCR0aGF0KSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnICYmICR0aGF0LT5zY2FsZSA8PSAkdGhpcy0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgWyRhLCAkYl0gPSAkdGhpcy0+c2NhbGVWYWx1ZXMoJHRoaXMsICR0aGF0KTsKCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPnN1YigkYSwgJGIpOwogICAgICAgICRzY2FsZSA9ICR0aGlzLT5zY2FsZSA+ICR0aGF0LT5zY2FsZSA/ICR0aGlzLT5zY2FsZSA6ICR0aGF0LT5zY2FsZTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR2YWx1ZSwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHByb2R1Y3Qgb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgJHRoaXMtPnNjYWxlICsgJHRoYXQtPnNjYWxlYC4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIG11bHRpcGxpZXIuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdEZWNpbWFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbXVsdGlwbGllciBpcyBub3QgYSB2YWxpZCBudW1iZXIsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBsaWVkQnkoJHRoYXQpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnRGVjaW1hbDo6b2YoJHRoYXQpOwoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMScgJiYgJHRoYXQtPnNjYWxlID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcxJyAmJiAkdGhpcy0+c2NhbGUgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm11bCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CiAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlICsgJHRoYXQtPnNjYWxlOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHZhbHVlLCAkc2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbiBvZiB0aGlzIG51bWJlciBieSB0aGUgZ2l2ZW4gb25lLCBhdCB0aGUgZ2l2ZW4gc2NhbGUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0ICAgICAgICAgVGhlIGRpdmlzb3IuCiAgICAgKiBAcGFyYW0gaW50fG51bGwgICAgICAgICAgICAgICAgICAgJHNjYWxlICAgICAgICBUaGUgZGVzaXJlZCBzY2FsZSwgb3IgbnVsbCB0byB1c2UgdGhlIHNjYWxlIG9mIHRoaXMgbnVtYmVyLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICRyb3VuZGluZ01vZGUgQW4gb3B0aW9uYWwgcm91bmRpbmcgbW9kZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIHNjYWxlIG9yIHJvdW5kaW5nIG1vZGUgaXMgaW52YWxpZC4KICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiAgICAgICAgICAgICBJZiB0aGUgbnVtYmVyIGlzIGludmFsaWQsIGlzIHplcm8sIG9yIHJvdW5kaW5nIHdhcyBuZWNlc3NhcnkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGVkQnkoJHRoYXQsID9pbnQgJHNjYWxlID0gbnVsbCwgaW50ICRyb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT5pc1plcm8oKSkgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgIGlmICgkc2NhbGUgPT09IG51bGwpIHsKICAgICAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlOwogICAgICAgIH0gZWxzZWlmICgkc2NhbGUgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdTY2FsZSBjYW5ub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMScgJiYgJHRoYXQtPnNjYWxlID09PSAwICYmICRzY2FsZSA9PT0gJHRoaXMtPnNjYWxlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRwID0gJHRoaXMtPnZhbHVlV2l0aE1pblNjYWxlKCR0aGF0LT5zY2FsZSArICRzY2FsZSk7CiAgICAgICAgJHEgPSAkdGhhdC0+dmFsdWVXaXRoTWluU2NhbGUoJHRoaXMtPnNjYWxlIC0gJHNjYWxlKTsKCiAgICAgICAgJHJlc3VsdCA9IENhbGN1bGF0b3I6OmdldCgpLT5kaXZSb3VuZCgkcCwgJHEsICRyb3VuZGluZ01vZGUpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHJlc3VsdCwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGV4YWN0IHJlc3VsdCBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBUaGUgc2NhbGUgb2YgdGhlIHJlc3VsdCBpcyBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgdG8gZml0IGFsbCB0aGUgZnJhY3Rpb24gZGlnaXRzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgZGl2aXNvci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIG51bWJlciwgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbCwgaXMgemVybywKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBvciB0aGUgcmVzdWx0IHlpZWxkcyBhbiBpbmZpbml0ZSBudW1iZXIgb2YgZGlnaXRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXhhY3RseURpdmlkZWRCeSgkdGhhdCkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdEZWNpbWFsOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgIFssICRiXSA9ICR0aGlzLT5zY2FsZVZhbHVlcygkdGhpcywgJHRoYXQpOwoKICAgICAgICAkZCA9IFxydHJpbSgkYiwgJzAnKTsKICAgICAgICAkc2NhbGUgPSBcc3RybGVuKCRiKSAtIFxzdHJsZW4oJGQpOwoKICAgICAgICAkY2FsY3VsYXRvciA9IENhbGN1bGF0b3I6OmdldCgpOwoKICAgICAgICBmb3JlYWNoIChbNSwgMl0gYXMgJHByaW1lKSB7CiAgICAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgICAgICRsYXN0RGlnaXQgPSAoaW50KSAkZFstMV07CgogICAgICAgICAgICAgICAgaWYgKCRsYXN0RGlnaXQgJSAkcHJpbWUgIT09IDApIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZCA9ICRjYWxjdWxhdG9yLT5kaXZRKCRkLCAoc3RyaW5nKSAkcHJpbWUpOwogICAgICAgICAgICAgICAgJHNjYWxlKys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+ZGl2aWRlZEJ5KCR0aGF0LCAkc2NhbGUpLT5zdHJpcFRyYWlsaW5nWmVyb3MoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhpcyBudW1iZXIgZXhwb25lbnRpYXRlZCB0byB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogVGhlIHJlc3VsdCBoYXMgYSBzY2FsZSBvZiBgJHRoaXMtPnNjYWxlICogJGV4cG9uZW50YC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRleHBvbmVudCBUaGUgZXhwb25lbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBleHBvbmVudCBpcyBub3QgaW4gdGhlIHJhbmdlIDAgdG8gMSwwMDAsMDAwLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93ZXIoaW50ICRleHBvbmVudCkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgaWYgKCRleHBvbmVudCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gQmlnRGVjaW1hbDo6b25lKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGV4cG9uZW50ID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkZXhwb25lbnQgPCAwIHx8ICRleHBvbmVudCA+IENhbGN1bGF0b3I6Ok1BWF9QT1dFUikgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZigKICAgICAgICAgICAgICAgICdUaGUgZXhwb25lbnQgJWQgaXMgbm90IGluIHRoZSByYW5nZSAwIHRvICVkLicsCiAgICAgICAgICAgICAgICAkZXhwb25lbnQsCiAgICAgICAgICAgICAgICBDYWxjdWxhdG9yOjpNQVhfUE9XRVIKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoQ2FsY3VsYXRvcjo6Z2V0KCktPnBvdygkdGhpcy0+dmFsdWUsICRleHBvbmVudCksICR0aGlzLT5zY2FsZSAqICRleHBvbmVudCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBxdW90aWVudCBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhpcyBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHF1b3RpZW50IGhhcyBhIHNjYWxlIG9mIGAwYC4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIGRpdmlzb3IuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdEZWNpbWFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnRGVjaW1hbCBUaGUgcXVvdGllbnQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIGRlY2ltYWwgbnVtYmVyLCBvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcXVvdGllbnQoJHRoYXQpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnRGVjaW1hbDo6b2YoJHRoYXQpOwoKICAgICAgICBpZiAoJHRoYXQtPmlzWmVybygpKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkaXZpc2lvbkJ5WmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAkdGhpcy0+dmFsdWVXaXRoTWluU2NhbGUoJHRoYXQtPnNjYWxlKTsKICAgICAgICAkcSA9ICR0aGF0LT52YWx1ZVdpdGhNaW5TY2FsZSgkdGhpcy0+c2NhbGUpOwoKICAgICAgICAkcXVvdGllbnQgPSBDYWxjdWxhdG9yOjpnZXQoKS0+ZGl2USgkcCwgJHEpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHF1b3RpZW50LCAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhpcyBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHJlbWFpbmRlciBoYXMgYSBzY2FsZSBvZiBgbWF4KCR0aGlzLT5zY2FsZSwgJHRoYXQtPnNjYWxlKWAuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBkaXZpc29yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwgVGhlIHJlbWFpbmRlci4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgbm90IGEgdmFsaWQgZGVjaW1hbCBudW1iZXIsIG9yIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZW1haW5kZXIoJHRoYXQpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnRGVjaW1hbDo6b2YoJHRoYXQpOwoKICAgICAgICBpZiAoJHRoYXQtPmlzWmVybygpKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkaXZpc2lvbkJ5WmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAkdGhpcy0+dmFsdWVXaXRoTWluU2NhbGUoJHRoYXQtPnNjYWxlKTsKICAgICAgICAkcSA9ICR0aGF0LT52YWx1ZVdpdGhNaW5TY2FsZSgkdGhpcy0+c2NhbGUpOwoKICAgICAgICAkcmVtYWluZGVyID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmRpdlIoJHAsICRxKTsKCiAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlID4gJHRoYXQtPnNjYWxlID8gJHRoaXMtPnNjYWxlIDogJHRoYXQtPnNjYWxlOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHJlbWFpbmRlciwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIG9mIHRoaXMgbnVtYmVyIGJ5IHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogVGhlIHF1b3RpZW50IGhhcyBhIHNjYWxlIG9mIGAwYCwgYW5kIHRoZSByZW1haW5kZXIgaGFzIGEgc2NhbGUgb2YgYG1heCgkdGhpcy0+c2NhbGUsICR0aGF0LT5zY2FsZSlgLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgZGl2aXNvci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0RlY2ltYWwuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsW10gQW4gYXJyYXkgY29udGFpbmluZyB0aGUgcXVvdGllbnQgYW5kIHRoZSByZW1haW5kZXIuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIGRlY2ltYWwgbnVtYmVyLCBvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcXVvdGllbnRBbmRSZW1haW5kZXIoJHRoYXQpIDogYXJyYXkKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0RlY2ltYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT5pc1plcm8oKSkgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgICRwID0gJHRoaXMtPnZhbHVlV2l0aE1pblNjYWxlKCR0aGF0LT5zY2FsZSk7CiAgICAgICAgJHEgPSAkdGhhdC0+dmFsdWVXaXRoTWluU2NhbGUoJHRoaXMtPnNjYWxlKTsKCiAgICAgICAgWyRxdW90aWVudCwgJHJlbWFpbmRlcl0gPSBDYWxjdWxhdG9yOjpnZXQoKS0+ZGl2UVIoJHAsICRxKTsKCiAgICAgICAgJHNjYWxlID0gJHRoaXMtPnNjYWxlID4gJHRoYXQtPnNjYWxlID8gJHRoaXMtPnNjYWxlIDogJHRoYXQtPnNjYWxlOwoKICAgICAgICAkcXVvdGllbnQgPSBuZXcgQmlnRGVjaW1hbCgkcXVvdGllbnQsIDApOwogICAgICAgICRyZW1haW5kZXIgPSBuZXcgQmlnRGVjaW1hbCgkcmVtYWluZGVyLCAkc2NhbGUpOwoKICAgICAgICByZXR1cm4gWyRxdW90aWVudCwgJHJlbWFpbmRlcl07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGlzIG51bWJlciwgcm91bmRlZCBkb3duIHRvIHRoZSBnaXZlbiBudW1iZXIgb2YgZGVjaW1hbHMuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkc2NhbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIHNjYWxlIGlzIG5lZ2F0aXZlLgogICAgICogQHRocm93cyBOZWdhdGl2ZU51bWJlckV4Y2VwdGlvbiBJZiB0aGlzIG51bWJlciBpcyBuZWdhdGl2ZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNxcnQoaW50ICRzY2FsZSkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgaWYgKCRzY2FsZSA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1NjYWxlIGNhbm5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJzAnLCAkc2NhbGUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZVswXSA9PT0gJy0nKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBOZWdhdGl2ZU51bWJlckV4Y2VwdGlvbignQ2Fubm90IGNhbGN1bGF0ZSB0aGUgc3F1YXJlIHJvb3Qgb2YgYSBuZWdhdGl2ZSBudW1iZXIuJyk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dmFsdWU7CiAgICAgICAgJGFkZERpZ2l0cyA9IDIgKiAkc2NhbGUgLSAkdGhpcy0+c2NhbGU7CgogICAgICAgIGlmICgkYWRkRGlnaXRzID4gMCkgewogICAgICAgICAgICAvLyBhZGQgemVyb3MKICAgICAgICAgICAgJHZhbHVlIC49IFxzdHJfcmVwZWF0KCcwJywgJGFkZERpZ2l0cyk7CiAgICAgICAgfSBlbHNlaWYgKCRhZGREaWdpdHMgPCAwKSB7CiAgICAgICAgICAgIC8vIHRyaW0gZGlnaXRzCiAgICAgICAgICAgIGlmICgtJGFkZERpZ2l0cyA+PSBcc3RybGVuKCR0aGlzLT52YWx1ZSkpIHsKICAgICAgICAgICAgICAgIC8vIHJlcXVlc3RpbmcgYSBzY2FsZSB0b28gbG93LCB3aWxsIGFsd2F5cyB5aWVsZCBhIHplcm8gcmVzdWx0CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJzAnLCAkc2NhbGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdmFsdWUgPSBcc3Vic3RyKCR2YWx1ZSwgMCwgJGFkZERpZ2l0cyk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+c3FydCgkdmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHZhbHVlLCAkc2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBCaWdEZWNpbWFsIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQgbW92ZWQgJG4gcGxhY2VzIHRvIHRoZSBsZWZ0LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJG4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQb2ludE1vdmVkTGVmdChpbnQgJG4pIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIGlmICgkbiA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG4gPCAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+d2l0aFBvaW50TW92ZWRSaWdodCgtJG4pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR0aGlzLT52YWx1ZSwgJHRoaXMtPnNjYWxlICsgJG4pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGNvcHkgb2YgdGhpcyBCaWdEZWNpbWFsIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQgbW92ZWQgJG4gcGxhY2VzIHRvIHRoZSByaWdodC4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUG9pbnRNb3ZlZFJpZ2h0KGludCAkbikgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgaWYgKCRuID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkbiA8IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT53aXRoUG9pbnRNb3ZlZExlZnQoLSRuKTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkc2NhbGUgPSAkdGhpcy0+c2NhbGUgLSAkbjsKCiAgICAgICAgaWYgKCRzY2FsZSA8IDApIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZSAhPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgLj0gXHN0cl9yZXBlYXQoJzAnLCAtJHNjYWxlKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkc2NhbGUgPSAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBCaWdEZWNpbWFsKCR2YWx1ZSwgJHNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBjb3B5IG9mIHRoaXMgQmlnRGVjaW1hbCB3aXRoIGFueSB0cmFpbGluZyB6ZXJvcyByZW1vdmVkIGZyb20gdGhlIGZyYWN0aW9uYWwgcGFydC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN0cmlwVHJhaWxpbmdaZXJvcygpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIGlmICgkdGhpcy0+c2NhbGUgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJHRyaW1tZWRWYWx1ZSA9IFxydHJpbSgkdGhpcy0+dmFsdWUsICcwJyk7CgogICAgICAgIGlmICgkdHJpbW1lZFZhbHVlID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gQmlnRGVjaW1hbDo6emVybygpOwogICAgICAgIH0KCiAgICAgICAgJHRyaW1tYWJsZVplcm9zID0gXHN0cmxlbigkdGhpcy0+dmFsdWUpIC0gXHN0cmxlbigkdHJpbW1lZFZhbHVlKTsKCiAgICAgICAgaWYgKCR0cmltbWFibGVaZXJvcyA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRyaW1tYWJsZVplcm9zID4gJHRoaXMtPnNjYWxlKSB7CiAgICAgICAgICAgICR0cmltbWFibGVaZXJvcyA9ICR0aGlzLT5zY2FsZTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9IFxzdWJzdHIoJHRoaXMtPnZhbHVlLCAwLCAtJHRyaW1tYWJsZVplcm9zKTsKICAgICAgICAkc2NhbGUgPSAkdGhpcy0+c2NhbGUgLSAkdHJpbW1hYmxlWmVyb3M7CgogICAgICAgIHJldHVybiBuZXcgQmlnRGVjaW1hbCgkdmFsdWUsICRzY2FsZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFicygpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNOZWdhdGl2ZSgpID8gJHRoaXMtPm5lZ2F0ZWQoKSA6ICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmVnYXRlZCB2YWx1ZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5lZ2F0ZWQoKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoQ2FsY3VsYXRvcjo6Z2V0KCktPm5lZygkdGhpcy0+dmFsdWUpLCAkdGhpcy0+c2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGFyZVRvKCR0aGF0KSA6IGludAogICAgewogICAgICAgICR0aGF0ID0gQmlnTnVtYmVyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdCBpbnN0YW5jZW9mIEJpZ0ludGVnZXIpIHsKICAgICAgICAgICAgJHRoYXQgPSAkdGhhdC0+dG9CaWdEZWNpbWFsKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQgaW5zdGFuY2VvZiBCaWdEZWNpbWFsKSB7CiAgICAgICAgICAgIFskYSwgJGJdID0gJHRoaXMtPnNjYWxlVmFsdWVzKCR0aGlzLCAkdGhhdCk7CgogICAgICAgICAgICByZXR1cm4gQ2FsY3VsYXRvcjo6Z2V0KCktPmNtcCgkYSwgJGIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIC0gJHRoYXQtPmNvbXBhcmVUbygkdGhpcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduKCkgOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT52YWx1ZSA9PT0gJzAnKSA/IDAgOiAoKCR0aGlzLT52YWx1ZVswXSA9PT0gJy0nKSA/IC0xIDogMSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFVuc2NhbGVkVmFsdWUoKSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6Y3JlYXRlKCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2NhbGUoKSA6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2NhbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaW50ZWdyYWwgcGFydCBvZiB0aGlzIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIEV4YW1wbGU6IGAtMTIzLjQ1NmAgPT4gYC0xMjNgLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJbnRlZ3JhbFBhcnQoKSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkdGhpcy0+c2NhbGUgPT09IDApIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5nZXRVbnNjYWxlZFZhbHVlV2l0aExlYWRpbmdaZXJvcygpOwoKICAgICAgICByZXR1cm4gXHN1YnN0cigkdmFsdWUsIDAsIC0kdGhpcy0+c2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGlzIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIElmIHRoZSBzY2FsZSBpcyB6ZXJvLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCiAgICAgKgogICAgICogRXhhbXBsZXM6IGAtMTIzLjQ1NmAgPT4gJzQ1NicsIGAxMjNgID0+ICcnLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFjdGlvbmFsUGFydCgpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zY2FsZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Z2V0VW5zY2FsZWRWYWx1ZVdpdGhMZWFkaW5nWmVyb3MoKTsKCiAgICAgICAgcmV0dXJuIFxzdWJzdHIoJHZhbHVlLCAtJHRoaXMtPnNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIGRlY2ltYWwgbnVtYmVyIGhhcyBhIG5vbi16ZXJvIGZyYWN0aW9uYWwgcGFydC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc05vblplcm9GcmFjdGlvbmFsUGFydCgpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0RnJhY3Rpb25hbFBhcnQoKSAhPT0gXHN0cl9yZXBlYXQoJzAnLCAkdGhpcy0+c2NhbGUpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CaWdJbnRlZ2VyKCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHplcm9TY2FsZURlY2ltYWwgPSAkdGhpcy0+c2NhbGUgPT09IDAgPyAkdGhpcyA6ICR0aGlzLT5kaXZpZGVkQnkoMSwgMCk7CgogICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjpjcmVhdGUoJHplcm9TY2FsZURlY2ltYWwtPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnRGVjaW1hbCgpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnUmF0aW9uYWwoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJG51bWVyYXRvciA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgkdGhpcy0+dmFsdWUpOwogICAgICAgICRkZW5vbWluYXRvciA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgnMScgLiBcc3RyX3JlcGVhdCgnMCcsICR0aGlzLT5zY2FsZSkpOwoKICAgICAgICByZXR1cm4gQmlnUmF0aW9uYWw6OmNyZWF0ZSgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvU2NhbGUoaW50ICRzY2FsZSwgaW50ICRyb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICBpZiAoJHNjYWxlID09PSAkdGhpcy0+c2NhbGUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZpZGVkQnkoQmlnRGVjaW1hbDo6b25lKCksICRzY2FsZSwgJHJvdW5kaW5nTW9kZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ludCgpIDogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0JpZ0ludGVnZXIoKS0+dG9JbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvRmxvYXQoKSA6IGZsb2F0CiAgICB7CiAgICAgICAgcmV0dXJuIChmbG9hdCkgKHN0cmluZykgJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNjYWxlID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+Z2V0VW5zY2FsZWRWYWx1ZVdpdGhMZWFkaW5nWmVyb3MoKTsKCiAgICAgICAgcmV0dXJuIFxzdWJzdHIoJHZhbHVlLCAwLCAtJHRoaXMtPnNjYWxlKSAuICcuJyAuIFxzdWJzdHIoJHZhbHVlLCAtJHRoaXMtPnNjYWxlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGZvciBzZXJpYWxpemluZyB0aGUgb2JqZWN0IGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7dmFsdWU6IHN0cmluZywgc2NhbGU6IGludH0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fc2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsndmFsdWUnID0+ICR0aGlzLT52YWx1ZSwgJ3NjYWxlJyA9PiAkdGhpcy0+c2NhbGVdOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgaXMgb25seSBoZXJlIHRvIGFsbG93IHVuc2VyaWFsaXppbmcgdGhlIG9iamVjdCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBzYWxtLXN1cHByZXNzIFJlZHVuZGFudFByb3BlcnR5SW5pdGlhbGl6YXRpb25DaGVjawogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXt2YWx1ZTogc3RyaW5nLCBzY2FsZTogaW50fSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Vuc2VyaWFsaXplKGFycmF5ICRkYXRhKTogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+dmFsdWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ19fdW5zZXJpYWxpemUoKSBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgaXQgbXVzdCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gJGRhdGFbJ3ZhbHVlJ107CiAgICAgICAgJHRoaXMtPnNjYWxlID0gJGRhdGFbJ3NjYWxlJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBieSBpbnRlcmZhY2UgU2VyaWFsaXphYmxlIGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUgLiAnOicgLiAkdGhpcy0+c2NhbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyBvbmx5IGhlcmUgdG8gaW1wbGVtZW50IGludGVyZmFjZSBTZXJpYWxpemFibGUgYW5kIGNhbm5vdCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBSZWR1bmRhbnRQcm9wZXJ0eUluaXRpYWxpemF0aW9uQ2hlY2sKICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZSgkdmFsdWUpIDogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+dmFsdWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ3Vuc2VyaWFsaXplKCkgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGl0IG11c3Qgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4nKTsKICAgICAgICB9CgogICAgICAgIFskdmFsdWUsICRzY2FsZV0gPSBcZXhwbG9kZSgnOicsICR2YWx1ZSk7CgogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgICAgICAkdGhpcy0+c2NhbGUgPSAoaW50KSAkc2NhbGU7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXRzIHRoZSBpbnRlcm5hbCB2YWx1ZXMgb2YgdGhlIGdpdmVuIGRlY2ltYWwgbnVtYmVycyBvbiB0aGUgc2FtZSBzY2FsZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnRGVjaW1hbCAkeCBUaGUgZmlyc3QgZGVjaW1hbCBudW1iZXIuCiAgICAgKiBAcGFyYW0gQmlnRGVjaW1hbCAkeSBUaGUgc2Vjb25kIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7c3RyaW5nLCBzdHJpbmd9IFRoZSBzY2FsZWQgaW50ZWdlciB2YWx1ZXMgb2YgJHggYW5kICR5LgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNjYWxlVmFsdWVzKEJpZ0RlY2ltYWwgJHgsIEJpZ0RlY2ltYWwgJHkpIDogYXJyYXkKICAgIHsKICAgICAgICAkYSA9ICR4LT52YWx1ZTsKICAgICAgICAkYiA9ICR5LT52YWx1ZTsKCiAgICAgICAgaWYgKCRiICE9PSAnMCcgJiYgJHgtPnNjYWxlID4gJHktPnNjYWxlKSB7CiAgICAgICAgICAgICRiIC49IFxzdHJfcmVwZWF0KCcwJywgJHgtPnNjYWxlIC0gJHktPnNjYWxlKTsKICAgICAgICB9IGVsc2VpZiAoJGEgIT09ICcwJyAmJiAkeC0+c2NhbGUgPCAkeS0+c2NhbGUpIHsKICAgICAgICAgICAgJGEgLj0gXHN0cl9yZXBlYXQoJzAnLCAkeS0+c2NhbGUgLSAkeC0+c2NhbGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskYSwgJGJdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkc2NhbGUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZhbHVlV2l0aE1pblNjYWxlKGludCAkc2NhbGUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlOwoKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlICE9PSAnMCcgJiYgJHNjYWxlID4gJHRoaXMtPnNjYWxlKSB7CiAgICAgICAgICAgICR2YWx1ZSAuPSBcc3RyX3JlcGVhdCgnMCcsICRzY2FsZSAtICR0aGlzLT5zY2FsZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyBsZWFkaW5nIHplcm9zIGlmIG5lY2Vzc2FyeSB0byB0aGUgdW5zY2FsZWQgdmFsdWUgdG8gcmVwcmVzZW50IHRoZSBmdWxsIGRlY2ltYWwgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0VW5zY2FsZWRWYWx1ZVdpdGhMZWFkaW5nWmVyb3MoKSA6IHN0cmluZwogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkdGFyZ2V0TGVuZ3RoID0gJHRoaXMtPnNjYWxlICsgMTsKICAgICAgICAkbmVnYXRpdmUgPSAoJHZhbHVlWzBdID09PSAnLScpOwogICAgICAgICRsZW5ndGggPSBcc3RybGVuKCR2YWx1ZSk7CgogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgJGxlbmd0aC0tOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsZW5ndGggPj0gJHRhcmdldExlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuZWdhdGl2ZSkgewogICAgICAgICAgICAkdmFsdWUgPSBcc3Vic3RyKCR2YWx1ZSwgMSk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBcc3RyX3BhZCgkdmFsdWUsICR0YXJnZXRMZW5ndGgsICcwJywgU1RSX1BBRF9MRUZUKTsKCiAgICAgICAgaWYgKCRuZWdhdGl2ZSkgewogICAgICAgICAgICAkdmFsdWUgPSAnLScgLiAkdmFsdWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigInteger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxJbnRlZ2VyT3ZlcmZsb3dFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTmVnYXRpdmVOdW1iZXJFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxOdW1iZXJGb3JtYXRFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQW4gYXJiaXRyYXJ5LXNpemUgaW50ZWdlci4KICoKICogQWxsIG1ldGhvZHMgYWNjZXB0aW5nIGEgbnVtYmVyIGFzIGEgcGFyYW1ldGVyIGFjY2VwdCBlaXRoZXIgYSBCaWdJbnRlZ2VyIGluc3RhbmNlLAogKiBhbiBpbnRlZ2VyLCBvciBhIHN0cmluZyByZXByZXNlbnRpbmcgYW4gYXJiaXRyYXJ5IHNpemUgaW50ZWdlci4KICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KZmluYWwgY2xhc3MgQmlnSW50ZWdlciBleHRlbmRzIEJpZ051bWJlcgp7CiAgICAvKioKICAgICAqIFRoZSB2YWx1ZSwgYXMgYSBzdHJpbmcgb2YgZGlnaXRzIHdpdGggb3B0aW9uYWwgbGVhZGluZyBtaW51cyBzaWduLgogICAgICoKICAgICAqIE5vIGxlYWRpbmcgemVyb3MgbXVzdCBiZSBwcmVzZW50LgogICAgICogTm8gbGVhZGluZyBtaW51cyBzaWduIG11c3QgYmUgcHJlc2VudCBpZiB0aGUgbnVtYmVyIGlzIHplcm8uCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBQcm90ZWN0ZWQgY29uc3RydWN0b3IuIFVzZSBhIGZhY3RvcnkgbWV0aG9kIHRvIG9idGFpbiBhbiBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSBBIHN0cmluZyBvZiBkaWdpdHMsIHdpdGggb3B0aW9uYWwgbGVhZGluZyBtaW51cyBzaWduLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgQmlnSW50ZWdlciBvZiB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZigkdmFsdWUpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgcmV0dXJuIHBhcmVudDo6b2YoJHZhbHVlKS0+dG9CaWdJbnRlZ2VyKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbnVtYmVyIGZyb20gYSBzdHJpbmcgaW4gYSBnaXZlbiBiYXNlLgogICAgICoKICAgICAqIFRoZSBzdHJpbmcgY2FuIG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCB0aGUgYCtgIG9yIGAtYCBzaWduLgogICAgICoKICAgICAqIEJhc2VzIGdyZWF0ZXIgdGhhbiAzNiBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGlzIG1ldGhvZCwgYXMgdGhlcmUgaXMgbm8gY2xlYXIgY29uc2Vuc3VzIG9uIHdoaWNoIG9mIHRoZSBsb3dlcmNhc2UKICAgICAqIG9yIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIHNob3VsZCBjb21lIGZpcnN0LiBJbnN0ZWFkLCB0aGlzIG1ldGhvZCBhY2NlcHRzIGFueSBiYXNlIHVwIHRvIDM2LCBhbmQgZG9lcyBub3QKICAgICAqIGRpZmZlcmVudGlhdGUgbG93ZXJjYXNlIGFuZCB1cHBlcmNhc2UgY2hhcmFjdGVycywgd2hpY2ggYXJlIGNvbnNpZGVyZWQgZXF1YWwuCiAgICAgKgogICAgICogRm9yIGJhc2VzIGdyZWF0ZXIgdGhhbiAzNiwgYW5kL29yIGN1c3RvbSBhbHBoYWJldHMsIHVzZSB0aGUgZnJvbUFyYml0cmFyeUJhc2UoKSBtZXRob2QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyIFRoZSBudW1iZXIgdG8gY29udmVydCwgaW4gdGhlIGdpdmVuIGJhc2UuCiAgICAgKiBAcGFyYW0gaW50ICAgICRiYXNlICAgVGhlIGJhc2Ugb2YgdGhlIG51bWJlciwgYmV0d2VlbiAyIGFuZCAzNi4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE51bWJlckZvcm1hdEV4Y2VwdGlvbiAgICAgSWYgdGhlIG51bWJlciBpcyBlbXB0eSwgb3IgY29udGFpbnMgaW52YWxpZCBjaGFycyBmb3IgdGhlIGdpdmVuIGJhc2UuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIGJhc2UgaXMgb3V0IG9mIHJhbmdlLgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJhc2Uoc3RyaW5nICRudW1iZXIsIGludCAkYmFzZSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRudW1iZXIgPT09ICcnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oJ1RoZSBudW1iZXIgY2Fubm90IGJlIGVtcHR5LicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiYXNlIDwgMiB8fCAkYmFzZSA+IDM2KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdCYXNlICVkIGlzIG5vdCBpbiByYW5nZSAyIHRvIDM2LicsICRiYXNlKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG51bWJlclswXSA9PT0gJy0nKSB7CiAgICAgICAgICAgICRzaWduID0gJy0nOwogICAgICAgICAgICAkbnVtYmVyID0gXHN1YnN0cigkbnVtYmVyLCAxKTsKICAgICAgICB9IGVsc2VpZiAoJG51bWJlclswXSA9PT0gJysnKSB7CiAgICAgICAgICAgICRzaWduID0gJyc7CiAgICAgICAgICAgICRudW1iZXIgPSBcc3Vic3RyKCRudW1iZXIsIDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRzaWduID0gJyc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG51bWJlciA9PT0gJycpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE51bWJlckZvcm1hdEV4Y2VwdGlvbignVGhlIG51bWJlciBjYW5ub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gXGx0cmltKCRudW1iZXIsICcwJyk7CgogICAgICAgIGlmICgkbnVtYmVyID09PSAnJykgewogICAgICAgICAgICAvLyBUaGUgcmVzdWx0IHdpbGwgYmUgdGhlIHNhbWUgaW4gYW55IGJhc2UsIGF2b2lkIGZ1cnRoZXIgY2FsY3VsYXRpb24uCiAgICAgICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjp6ZXJvKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG51bWJlciA9PT0gJzEnKSB7CiAgICAgICAgICAgIC8vIFRoZSByZXN1bHQgd2lsbCBiZSB0aGUgc2FtZSBpbiBhbnkgYmFzZSwgYXZvaWQgZnVydGhlciBjYWxjdWxhdGlvbi4KICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCRzaWduIC4gJzEnKTsKICAgICAgICB9CgogICAgICAgICRwYXR0ZXJuID0gJy9bXicgLiBcc3Vic3RyKENhbGN1bGF0b3I6OkFMUEhBQkVULCAwLCAkYmFzZSkgLiAnXS8nOwoKICAgICAgICBpZiAoXHByZWdfbWF0Y2goJHBhdHRlcm4sIFxzdHJ0b2xvd2VyKCRudW1iZXIpLCAkbWF0Y2hlcykgPT09IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE51bWJlckZvcm1hdEV4Y2VwdGlvbihcc3ByaW50ZignIiVzIiBpcyBub3QgYSB2YWxpZCBjaGFyYWN0ZXIgaW4gYmFzZSAlZC4nLCAkbWF0Y2hlc1swXSwgJGJhc2UpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYmFzZSA9PT0gMTApIHsKICAgICAgICAgICAgLy8gVGhlIG51bWJlciBpcyB1c2FibGUgYXMgaXMsIGF2b2lkIGZ1cnRoZXIgY2FsY3VsYXRpb24uCiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkc2lnbiAuICRudW1iZXIpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IENhbGN1bGF0b3I6OmdldCgpLT5mcm9tQmFzZSgkbnVtYmVyLCAkYmFzZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkc2lnbiAuICRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW4gaW50ZWdlciBpbiBhbiBhcmJpdHJhcnkgYmFzZSwgdXNpbmcgYSBjdXN0b20gYWxwaGFiZXQuCiAgICAgKgogICAgICogQmVjYXVzZSB0aGlzIG1ldGhvZCBhY2NlcHRzIGFuIGFscGhhYmV0IHdpdGggYW55IGNoYXJhY3RlciwgaW5jbHVkaW5nIGRhc2gsIGl0IGRvZXMgbm90IGhhbmRsZSBuZWdhdGl2ZSBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG51bWJlciAgIFRoZSBudW1iZXIgdG8gcGFyc2UuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbHBoYWJldCBUaGUgYWxwaGFiZXQsIGZvciBleGFtcGxlICcwMScgZm9yIGJhc2UgMiwgb3IgJzAxMjM0NTY3JyBmb3IgYmFzZSA4LgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uICAgICBJZiB0aGUgZ2l2ZW4gbnVtYmVyIGlzIGVtcHR5IG9yIGNvbnRhaW5zIGludmFsaWQgY2hhcnMgZm9yIHRoZSBnaXZlbiBhbHBoYWJldC4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgYWxwaGFiZXQgZG9lcyBub3QgY29udGFpbiBhdCBsZWFzdCAyIGNoYXJzLgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUFyYml0cmFyeUJhc2Uoc3RyaW5nICRudW1iZXIsIHN0cmluZyAkYWxwaGFiZXQpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIGlmICgkbnVtYmVyID09PSAnJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCdUaGUgbnVtYmVyIGNhbm5vdCBiZSBlbXB0eS4nKTsKICAgICAgICB9CgogICAgICAgICRiYXNlID0gXHN0cmxlbigkYWxwaGFiZXQpOwoKICAgICAgICBpZiAoJGJhc2UgPCAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgYWxwaGFiZXQgbXVzdCBjb250YWluIGF0IGxlYXN0IDIgY2hhcnMuJyk7CiAgICAgICAgfQoKICAgICAgICAkcGF0dGVybiA9ICcvW14nIC4gXHByZWdfcXVvdGUoJGFscGhhYmV0LCAnLycpIC4gJ10vJzsKCiAgICAgICAgaWYgKFxwcmVnX21hdGNoKCRwYXR0ZXJuLCAkbnVtYmVyLCAkbWF0Y2hlcykgPT09IDEpIHsKICAgICAgICAgICAgdGhyb3cgTnVtYmVyRm9ybWF0RXhjZXB0aW9uOjpjaGFyTm90SW5BbHBoYWJldCgkbWF0Y2hlc1swXSk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmZyb21BcmJpdHJhcnlCYXNlKCRudW1iZXIsICRhbHBoYWJldCwgJGJhc2UpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoJG51bWJlcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmFuc2xhdGVzIGEgc3RyaW5nIG9mIGJ5dGVzIGNvbnRhaW5pbmcgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBhIEJpZ0ludGVnZXIgaW50byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogVGhlIGlucHV0IHN0cmluZyBpcyBhc3N1bWVkIHRvIGJlIGluIGJpZy1lbmRpYW4gYnl0ZS1vcmRlcjogdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBpcyBpbiB0aGUgemVyb3RoIGVsZW1lbnQuCiAgICAgKgogICAgICogSWYgYCRzaWduZWRgIGlzIHRydWUsIHRoZSBpbnB1dCBpcyBhc3N1bWVkIHRvIGJlIGluIHR3bydzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24sIGFuZCB0aGUgbGVhZGluZyBiaXQgaXMKICAgICAqIGludGVycHJldGVkIGFzIGEgc2lnbiBiaXQuIElmIGAkc2lnbmVkYCBpcyBmYWxzZSwgdGhlIGlucHV0IGlzIGludGVycHJldGVkIGFzIGFuIHVuc2lnbmVkIG51bWJlciwgYW5kIHRoZQogICAgICogcmVzdWx0aW5nIEJpZ0ludGVnZXIgd2lsbCBhbHdheXMgYmUgcG9zaXRpdmUgb3IgemVyby4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byByZXRyaWV2ZSBhIG51bWJlciBleHBvcnRlZCBieSBgdG9CeXRlcygpYCwgYXMgbG9uZyBhcyB0aGUgYCRzaWduZWRgIGZsYWdzIG1hdGNoLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlICBUaGUgYnl0ZSBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYm9vbCAgICRzaWduZWQgV2hldGhlciB0byBpbnRlcnByZXQgYXMgYSBzaWduZWQgbnVtYmVyIGluIHR3bydzLWNvbXBsZW1lbnQgcmVwcmVzZW50YXRpb24gd2l0aCBhIGxlYWRpbmcKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBzaWduIGJpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBJZiB0aGUgc3RyaW5nIGlzIGVtcHR5LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CeXRlcyhzdHJpbmcgJHZhbHVlLCBib29sICRzaWduZWQgPSB0cnVlKSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSAnJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCdUaGUgYnl0ZSBzdHJpbmcgbXVzdCBub3QgYmUgZW1wdHkuJyk7CiAgICAgICAgfQoKICAgICAgICAkdHdvc0NvbXBsZW1lbnQgPSBmYWxzZTsKCiAgICAgICAgaWYgKCRzaWduZWQpIHsKICAgICAgICAgICAgJHggPSBcb3JkKCR2YWx1ZVswXSk7CgogICAgICAgICAgICBpZiAoKCR0d29zQ29tcGxlbWVudCA9ICgkeCA+PSAweDgwKSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IH4kdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRudW1iZXIgPSBzZWxmOjpmcm9tQmFzZShcYmluMmhleCgkdmFsdWUpLCAxNik7CgogICAgICAgIGlmICgkdHdvc0NvbXBsZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuICRudW1iZXItPnBsdXMoMSktPm5lZ2F0ZWQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgfQoKICAgIC8qKgogICAgICogR2VuZXJhdGVzIGEgcHNldWRvLXJhbmRvbSBudW1iZXIgaW4gdGhlIHJhbmdlIDAgdG8gMl5udW1CaXRzIC0gMS4KICAgICAqCiAgICAgKiBVc2luZyB0aGUgZGVmYXVsdCByYW5kb20gYnl0ZXMgZ2VuZXJhdG9yLCB0aGlzIG1ldGhvZCBpcyBzdWl0YWJsZSBmb3IgY3J5cHRvZ3JhcGhpYyB1c2UuCiAgICAgKgogICAgICogQHBzYWxtLXBhcmFtIGNhbGxhYmxlKGludCk6IHN0cmluZyAkcmFuZG9tQnl0ZXNHZW5lcmF0b3IKICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAkbnVtQml0cyAgICAgICAgICAgICAgVGhlIG51bWJlciBvZiBiaXRzLgogICAgICogQHBhcmFtIGNhbGxhYmxlfG51bGwgJHJhbmRvbUJ5dGVzR2VuZXJhdG9yIEEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgbnVtYmVyIG9mIGJ5dGVzIGFzIGFuIGludGVnZXIsIGFuZCByZXR1cm5zIGEKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgb2YgcmFuZG9tIGJ5dGVzIG9mIHRoZSBnaXZlbiBsZW5ndGguIERlZmF1bHRzIHRvIHRoZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGByYW5kb21fYnl0ZXMoKWAgZnVuY3Rpb24uCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmICRudW1CaXRzIGlzIG5lZ2F0aXZlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJhbmRvbUJpdHMoaW50ICRudW1CaXRzLCA/Y2FsbGFibGUgJHJhbmRvbUJ5dGVzR2VuZXJhdG9yID0gbnVsbCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRudW1CaXRzIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIG51bWJlciBvZiBiaXRzIGNhbm5vdCBiZSBuZWdhdGl2ZS4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbnVtQml0cyA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6emVybygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyYW5kb21CeXRlc0dlbmVyYXRvciA9PT0gbnVsbCkgewogICAgICAgICAgICAkcmFuZG9tQnl0ZXNHZW5lcmF0b3IgPSAncmFuZG9tX2J5dGVzJzsKICAgICAgICB9CgogICAgICAgICRieXRlTGVuZ3RoID0gXGludGRpdigkbnVtQml0cyAtIDEsIDgpICsgMTsKCiAgICAgICAgJGV4dHJhQml0cyA9ICgkYnl0ZUxlbmd0aCAqIDggLSAkbnVtQml0cyk7CiAgICAgICAgJGJpdG1hc2sgICA9IFxjaHIoMHhGRiA+PiAkZXh0cmFCaXRzKTsKCiAgICAgICAgJHJhbmRvbUJ5dGVzICAgID0gJHJhbmRvbUJ5dGVzR2VuZXJhdG9yKCRieXRlTGVuZ3RoKTsKICAgICAgICAkcmFuZG9tQnl0ZXNbMF0gPSAkcmFuZG9tQnl0ZXNbMF0gJiAkYml0bWFzazsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21CeXRlcygkcmFuZG9tQnl0ZXMsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdlbmVyYXRlcyBhIHBzZXVkby1yYW5kb20gbnVtYmVyIGJldHdlZW4gYCRtaW5gIGFuZCBgJG1heGAuCiAgICAgKgogICAgICogVXNpbmcgdGhlIGRlZmF1bHQgcmFuZG9tIGJ5dGVzIGdlbmVyYXRvciwgdGhpcyBtZXRob2QgaXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLgogICAgICoKICAgICAqIEBwc2FsbS1wYXJhbSAoY2FsbGFibGUoaW50KTogc3RyaW5nKXxudWxsICRyYW5kb21CeXRlc0dlbmVyYXRvcgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkbWluICAgICAgICAgICAgICAgICAgVGhlIGxvd2VyIGJvdW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkbWF4ICAgICAgICAgICAgICAgICAgVGhlIHVwcGVyIGJvdW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICAgICAgICAgICAgICAkcmFuZG9tQnl0ZXNHZW5lcmF0b3IgQSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgYSBudW1iZXIgb2YgYnl0ZXMgYXMgYW4gaW50ZWdlciwKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHJldHVybnMgYSBzdHJpbmcgb2YgcmFuZG9tIGJ5dGVzIG9mIHRoZSBnaXZlbiBsZW5ndGguCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIHRoZSBgcmFuZG9tX2J5dGVzKClgIGZ1bmN0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiBvbmUgb2YgdGhlIHBhcmFtZXRlcnMgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIEJpZ0ludGVnZXIsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgb3IgYCRtaW5gIGlzIGdyZWF0ZXIgdGhhbiBgJG1heGAuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmFuZG9tUmFuZ2UoJG1pbiwgJG1heCwgP2NhbGxhYmxlICRyYW5kb21CeXRlc0dlbmVyYXRvciA9IG51bGwpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgICRtaW4gPSBCaWdJbnRlZ2VyOjpvZigkbWluKTsKICAgICAgICAkbWF4ID0gQmlnSW50ZWdlcjo6b2YoJG1heCk7CgogICAgICAgIGlmICgkbWluLT5pc0dyZWF0ZXJUaGFuKCRtYXgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBNYXRoRXhjZXB0aW9uKCckbWluIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJG1heC4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkbWluLT5pc0VxdWFsVG8oJG1heCkpIHsKICAgICAgICAgICAgcmV0dXJuICRtaW47CiAgICAgICAgfQoKICAgICAgICAkZGlmZiAgICAgID0gJG1heC0+bWludXMoJG1pbik7CiAgICAgICAgJGJpdExlbmd0aCA9ICRkaWZmLT5nZXRCaXRMZW5ndGgoKTsKCiAgICAgICAgLy8gdHJ5IHVudGlsIHRoZSBudW1iZXIgaXMgaW4gcmFuZ2UgKDUwJSB0byAxMDAlIGNoYW5jZSBvZiBzdWNjZXNzKQogICAgICAgIGRvIHsKICAgICAgICAgICAgJHJhbmRvbU51bWJlciA9IHNlbGY6OnJhbmRvbUJpdHMoJGJpdExlbmd0aCwgJHJhbmRvbUJ5dGVzR2VuZXJhdG9yKTsKICAgICAgICB9IHdoaWxlICgkcmFuZG9tTnVtYmVyLT5pc0dyZWF0ZXJUaGFuKCRkaWZmKSk7CgogICAgICAgIHJldHVybiAkcmFuZG9tTnVtYmVyLT5wbHVzKCRtaW4pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0ludGVnZXIgcmVwcmVzZW50aW5nIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB6ZXJvKCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHBzYWxtLXN1cHByZXNzIEltcHVyZVN0YXRpY1ZhcmlhYmxlCiAgICAgICAgICogQHZhciBCaWdJbnRlZ2VyfG51bGwgJHplcm8KICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgJHplcm87CgogICAgICAgIGlmICgkemVybyA9PT0gbnVsbCkgewogICAgICAgICAgICAkemVybyA9IG5ldyBCaWdJbnRlZ2VyKCcwJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHplcm87CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgQmlnSW50ZWdlciByZXByZXNlbnRpbmcgb25lLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb25lKCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHBzYWxtLXN1cHByZXNzIEltcHVyZVN0YXRpY1ZhcmlhYmxlCiAgICAgICAgICogQHZhciBCaWdJbnRlZ2VyfG51bGwgJG9uZQogICAgICAgICAqLwogICAgICAgIHN0YXRpYyAkb25lOwoKICAgICAgICBpZiAoJG9uZSA9PT0gbnVsbCkgewogICAgICAgICAgICAkb25lID0gbmV3IEJpZ0ludGVnZXIoJzEnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkb25lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ0ludGVnZXIgcmVwcmVzZW50aW5nIHRlbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRlbigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnSW50ZWdlcnxudWxsICR0ZW4KICAgICAgICAgKi8KICAgICAgICBzdGF0aWMgJHRlbjsKCiAgICAgICAgaWYgKCR0ZW4gPT09IG51bGwpIHsKICAgICAgICAgICAgJHRlbiA9IG5ldyBCaWdJbnRlZ2VyKCcxMCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZW47CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzdW0gb2YgdGhpcyBudW1iZXIgYW5kIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBudW1iZXIgdG8gYWRkLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwbHVzKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gJHRoYXQ7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+YWRkKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbnVtYmVyIHRvIHN1YnRyYWN0LiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQsIG9yIGlzIG5vdCBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtaW51cygkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+c3ViKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbXVsdGlwbGllci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBtdWx0aXBsaWVyIGlzIG5vdCBhIHZhbGlkIG51bWJlciwgb3IgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bHRpcGxpZWRCeSgkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm11bCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBkaXZpc2lvbiBvZiB0aGlzIG51bWJlciBieSB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCAgICAgICAgIFRoZSBkaXZpc29yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgICAgICAgICAgICAkcm91bmRpbmdNb2RlIEFuIG9wdGlvbmFsIHJvdW5kaW5nIG1vZGUuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIG5vdCBhIHZhbGlkIG51bWJlciwgaXMgbm90IGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlciwgaXMgemVybywKICAgICAqICAgICAgICAgICAgICAgICAgICAgICBvciBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZIGlzIHVzZWQgYW5kIHRoZSByZW1haW5kZXIgaXMgbm90IHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZpZGVkQnkoJHRoYXQsIGludCAkcm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpVTk5FQ0VTU0FSWSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMCcpIHsKICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246OmRpdmlzaW9uQnlaZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmRpdlJvdW5kKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlLCAkcm91bmRpbmdNb2RlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGlzIG51bWJlciBleHBvbmVudGlhdGVkIHRvIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRleHBvbmVudCBUaGUgZXhwb25lbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBleHBvbmVudCBpcyBub3QgaW4gdGhlIHJhbmdlIDAgdG8gMSwwMDAsMDAwLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93ZXIoaW50ICRleHBvbmVudCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRleHBvbmVudCA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6b25lKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGV4cG9uZW50ID09PSAxKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgIGlmICgkZXhwb25lbnQgPCAwIHx8ICRleHBvbmVudCA+IENhbGN1bGF0b3I6Ok1BWF9QT1dFUikgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihcc3ByaW50ZigKICAgICAgICAgICAgICAgICdUaGUgZXhwb25lbnQgJWQgaXMgbm90IGluIHRoZSByYW5nZSAwIHRvICVkLicsCiAgICAgICAgICAgICAgICAkZXhwb25lbnQsCiAgICAgICAgICAgICAgICBDYWxjdWxhdG9yOjpNQVhfUE9XRVIKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoQ2FsY3VsYXRvcjo6Z2V0KCktPnBvdygkdGhpcy0+dmFsdWUsICRleHBvbmVudCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcXVvdGllbnQgb2YgdGhlIGRpdmlzaW9uIG9mIHRoaXMgbnVtYmVyIGJ5IHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBkaXZpc29yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uIElmIHRoZSBkaXZpc29yIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBxdW90aWVudCgkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoYXQtPnZhbHVlID09PSAnMCcpIHsKICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246OmRpdmlzaW9uQnlaZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkcXVvdGllbnQgPSBDYWxjdWxhdG9yOjpnZXQoKS0+ZGl2USgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkcXVvdGllbnQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluZGVyIG9mIHRoZSBkaXZpc2lvbiBvZiB0aGlzIG51bWJlciBieSB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIFRoZSByZW1haW5kZXIsIHdoZW4gbm9uLXplcm8sIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpZGVuZC4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIGRpdmlzb3IuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdJbnRlZ2VyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICoKICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgemVyby4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbWFpbmRlcigkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6emVybygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkaXZpc2lvbkJ5WmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHJlbWFpbmRlciA9IENhbGN1bGF0b3I6OmdldCgpLT5kaXZSKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCRyZW1haW5kZXIpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcXVvdGllbnQgYW5kIHJlbWFpbmRlciBvZiB0aGUgZGl2aXNpb24gb2YgdGhpcyBudW1iZXIgYnkgdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIGRpdmlzb3IuIE11c3QgYmUgY29udmVydGlibGUgdG8gYSBCaWdJbnRlZ2VyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdIEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHF1b3RpZW50IGFuZCB0aGUgcmVtYWluZGVyLgogICAgICoKICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgemVyby4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHF1b3RpZW50QW5kUmVtYWluZGVyKCR0aGF0KSA6IGFycmF5CiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICB0aHJvdyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbjo6ZGl2aXNpb25CeVplcm8oKTsKICAgICAgICB9CgogICAgICAgIFskcXVvdGllbnQsICRyZW1haW5kZXJdID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmRpdlFSKCR0aGlzLT52YWx1ZSwgJHRoYXQtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgbmV3IEJpZ0ludGVnZXIoJHF1b3RpZW50KSwKICAgICAgICAgICAgbmV3IEJpZ0ludGVnZXIoJHJlbWFpbmRlcikKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbW9kdWxvIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIFRoZSBtb2R1bG8gb3BlcmF0aW9uIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgdGhlIHJlbWFpbmRlciBvcGVyYXRpb24gd2hlbiBib3RoIG9wZXJhbmRzIGFyZSBvZiB0aGUgc2FtZSBzaWduLAogICAgICogYW5kIG1heSBkaWZmZXIgd2hlbiBzaWducyBhcmUgZGlmZmVyZW50LgogICAgICoKICAgICAqIFRoZSByZXN1bHQgb2YgdGhlIG1vZHVsbyBvcGVyYXRpb24sIHdoZW4gbm9uLXplcm8sIGhhcyB0aGUgc2FtZSBzaWduIGFzIHRoZSBkaXZpc29yLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgZGl2aXNvci4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKgogICAgICogQHRocm93cyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbiBJZiB0aGUgZGl2aXNvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0LT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjptb2R1bHVzTXVzdE5vdEJlWmVybygpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm1vZCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbW9kdWxhciBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG9mIHRoaXMgQmlnSW50ZWdlciBtb2R1bG8gJG0uCiAgICAgKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJG0KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uIElmICRtIGlzIHplcm8uCiAgICAgKiBAdGhyb3dzIE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uIElmICRtIGlzIG5lZ2F0aXZlLgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uICAgICAgICAgICBJZiB0aGlzIEJpZ0ludGVnZXIgaGFzIG5vIG11bHRpcGxpY2F0aXZlIGludmVyc2UgbW9kIG0gKHRoYXQgaXMsIHRoaXMgQmlnSW50ZWdlcgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBub3QgcmVsYXRpdmVseSBwcmltZSB0byBtKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZEludmVyc2UoQmlnSW50ZWdlciAkbSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRtLT52YWx1ZSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjptb2R1bHVzTXVzdE5vdEJlWmVybygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtLT5pc05lZ2F0aXZlKCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uKCdNb2R1bHVzIG11c3Qgbm90IGJlIG5lZ2F0aXZlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRtLT52YWx1ZSA9PT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybiBCaWdJbnRlZ2VyOjp6ZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWUgPSBDYWxjdWxhdG9yOjpnZXQoKS0+bW9kSW52ZXJzZSgkdGhpcy0+dmFsdWUsICRtLT52YWx1ZSk7CgogICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IE1hdGhFeGNlcHRpb24oJ1VuYWJsZSB0byBjb21wdXRlIHRoZSBtb2RJbnZlcnNlIGZvciB0aGUgZ2l2ZW4gbW9kdWx1cy4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGlzIG51bWJlciByYWlzZWQgaW50byBwb3dlciB3aXRoIG1vZHVsby4KICAgICAqCiAgICAgKiBUaGlzIG9wZXJhdGlvbiBvbmx5IHdvcmtzIG9uIHBvc2l0aXZlIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICRleHAgVGhlIGV4cG9uZW50LiBNdXN0IGJlIHBvc2l0aXZlIG9yIHplcm8uCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJG1vZCBUaGUgbW9kdWx1cy4gTXVzdCBiZSBzdHJpY3RseSBwb3NpdGl2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uIElmIGFueSBvZiB0aGUgb3BlcmFuZHMgaXMgbmVnYXRpdmUuCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uIElmIHRoZSBtb2R1bHVzIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RQb3coJGV4cCwgJG1vZCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJGV4cCA9IEJpZ0ludGVnZXI6Om9mKCRleHApOwogICAgICAgICRtb2QgPSBCaWdJbnRlZ2VyOjpvZigkbW9kKTsKCiAgICAgICAgaWYgKCR0aGlzLT5pc05lZ2F0aXZlKCkgfHwgJGV4cC0+aXNOZWdhdGl2ZSgpIHx8ICRtb2QtPmlzTmVnYXRpdmUoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24oJ1RoZSBvcGVyYW5kcyBjYW5ub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG1vZC0+aXNaZXJvKCkpIHsKICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246Om1vZHVsdXNNdXN0Tm90QmVaZXJvKCk7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gQ2FsY3VsYXRvcjo6Z2V0KCktPm1vZFBvdygkdGhpcy0+dmFsdWUsICRleHAtPnZhbHVlLCAkbW9kLT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkcmVzdWx0KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGdyZWF0ZXN0IGNvbW1vbiBkaXZpc29yIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIFRoZSBHQ0QgaXMgYWx3YXlzIHBvc2l0aXZlLCB1bmxlc3MgYm90aCBvcGVyYW5kcyBhcmUgemVybywgaW4gd2hpY2ggY2FzZSBpdCBpcyB6ZXJvLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgb3BlcmFuZC4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhbiBpbnRlZ2VyIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdjZCgkdGhhdCkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdJbnRlZ2VyOjpvZigkdGhhdCk7CgogICAgICAgIGlmICgkdGhhdC0+dmFsdWUgPT09ICcwJyAmJiAkdGhpcy0+dmFsdWVbMF0gIT09ICctJykgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09PSAnMCcgJiYgJHRoYXQtPnZhbHVlWzBdICE9PSAnLScpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGF0OwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPmdjZCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcigkdmFsdWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW50ZWdlciBzcXVhcmUgcm9vdCBudW1iZXIgb2YgdGhpcyBudW1iZXIsIHJvdW5kZWQgZG93bi4KICAgICAqCiAgICAgKiBUaGUgcmVzdWx0IGlzIHRoZSBsYXJnZXN0IHggc3VjaCB0aGF0IHjCsiDiiaQgbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqCiAgICAgKiBAdGhyb3dzIE5lZ2F0aXZlTnVtYmVyRXhjZXB0aW9uIElmIHRoaXMgbnVtYmVyIGlzIG5lZ2F0aXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3FydCgpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIGlmICgkdGhpcy0+dmFsdWVbMF0gPT09ICctJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24oJ0Nhbm5vdCBjYWxjdWxhdGUgdGhlIHNxdWFyZSByb290IG9mIGEgbmVnYXRpdmUgbnVtYmVyLicpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gQ2FsY3VsYXRvcjo6Z2V0KCktPnNxcnQoJHRoaXMtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFicygpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aXNOZWdhdGl2ZSgpID8gJHRoaXMtPm5lZ2F0ZWQoKSA6ICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW52ZXJzZSBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5lZ2F0ZWQoKSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoQ2FsY3VsYXRvcjo6Z2V0KCktPm5lZygkdGhpcy0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGludGVnZXIgYml0d2lzZS1hbmQgY29tYmluZWQgd2l0aCBhbm90aGVyIGludGVnZXIuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5lZ2F0aXZlIEJpZ0ludGVnZXIgaWYgYW5kIG9ubHkgaWYgYm90aCBvcGVyYW5kcyBhcmUgbmVnYXRpdmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBvcGVyYW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGFuIGludGVnZXIgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYW5kKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKENhbGN1bGF0b3I6OmdldCgpLT5hbmQoJHRoaXMtPnZhbHVlLCAkdGhhdC0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGludGVnZXIgYml0d2lzZS1vciBjb21iaW5lZCB3aXRoIGFub3RoZXIgaW50ZWdlci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmVnYXRpdmUgQmlnSW50ZWdlciBpZiBhbmQgb25seSBpZiBlaXRoZXIgb2YgdGhlIG9wZXJhbmRzIGlzIG5lZ2F0aXZlLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgb3BlcmFuZC4gTXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhbiBpbnRlZ2VyIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9yKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKENhbGN1bGF0b3I6OmdldCgpLT5vcigkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW50ZWdlciBiaXR3aXNlLXhvciBjb21iaW5lZCB3aXRoIGFub3RoZXIgaW50ZWdlci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbmVnYXRpdmUgQmlnSW50ZWdlciBpZiBhbmQgb25seSBpZiBleGFjdGx5IG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgbmVnYXRpdmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBvcGVyYW5kLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGFuIGludGVnZXIgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24geG9yKCR0aGF0KSA6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ0ludGVnZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKENhbGN1bGF0b3I6OmdldCgpLT54b3IoJHRoaXMtPnZhbHVlLCAkdGhhdC0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2Utbm90IG9mIHRoaXMgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5vdCgpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bmVnYXRlZCgpLT5taW51cygxKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGludGVnZXIgbGVmdCBzaGlmdGVkIGJ5IGEgZ2l2ZW4gbnVtYmVyIG9mIGJpdHMuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkZGlzdGFuY2UgVGhlIGRpc3RhbmNlIHRvIHNoaWZ0LgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hpZnRlZExlZnQoaW50ICRkaXN0YW5jZSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRkaXN0YW5jZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRpc3RhbmNlIDwgMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNoaWZ0ZWRSaWdodCgtICRkaXN0YW5jZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm11bHRpcGxpZWRCeShCaWdJbnRlZ2VyOjpvZigyKS0+cG93ZXIoJGRpc3RhbmNlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBpbnRlZ2VyIHJpZ2h0IHNoaWZ0ZWQgYnkgYSBnaXZlbiBudW1iZXIgb2YgYml0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRkaXN0YW5jZSBUaGUgZGlzdGFuY2UgdG8gc2hpZnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzaGlmdGVkUmlnaHQoaW50ICRkaXN0YW5jZSkgOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgaWYgKCRkaXN0YW5jZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGRpc3RhbmNlIDwgMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnNoaWZ0ZWRMZWZ0KC0gJGRpc3RhbmNlKTsKICAgICAgICB9CgogICAgICAgICRvcGVyYW5kID0gQmlnSW50ZWdlcjo6b2YoMiktPnBvd2VyKCRkaXN0YW5jZSk7CgogICAgICAgIGlmICgkdGhpcy0+aXNQb3NpdGl2ZU9yWmVybygpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cXVvdGllbnQoJG9wZXJhbmQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZpZGVkQnkoJG9wZXJhbmQsIFJvdW5kaW5nTW9kZTo6VVApOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJpdHMgaW4gdGhlIG1pbmltYWwgdHdvJ3MtY29tcGxlbWVudCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEJpZ0ludGVnZXIsIGV4Y2x1ZGluZyBhIHNpZ24gYml0LgogICAgICoKICAgICAqIEZvciBwb3NpdGl2ZSBCaWdJbnRlZ2VycywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgb3JkaW5hcnkgYmluYXJ5IHJlcHJlc2VudGF0aW9uLgogICAgICogQ29tcHV0ZXMgKGNlaWwobG9nMih0aGlzIDwgMCA/IC10aGlzIDogdGhpcysxKSkpLgogICAgICoKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCaXRMZW5ndGgoKSA6IGludAogICAgewogICAgICAgIGlmICgkdGhpcy0+dmFsdWUgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWJzKCktPm1pbnVzKDEpLT5nZXRCaXRMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RybGVuKCR0aGlzLT50b0Jhc2UoMikpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIHJpZ2h0bW9zdCAobG93ZXN0LW9yZGVyKSBvbmUgYml0IGluIHRoaXMgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBSZXR1cm5zIC0xIGlmIHRoaXMgQmlnSW50ZWdlciBjb250YWlucyBubyBvbmUgYml0cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG93ZXN0U2V0Qml0KCkgOiBpbnQKICAgIHsKICAgICAgICAkbiA9ICR0aGlzOwogICAgICAgICRiaXRMZW5ndGggPSAkdGhpcy0+Z2V0Qml0TGVuZ3RoKCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8PSAkYml0TGVuZ3RoOyAkaSsrKSB7CiAgICAgICAgICAgIGlmICgkbi0+aXNPZGQoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbiA9ICRuLT5zaGlmdGVkUmlnaHQoMSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBudW1iZXIgaXMgZXZlbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzRXZlbigpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiBcaW5fYXJyYXkoJHRoaXMtPnZhbHVlWy0xXSwgWycwJywgJzInLCAnNCcsICc2JywgJzgnXSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBudW1iZXIgaXMgb2RkLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNPZGQoKSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gXGluX2FycmF5KCR0aGlzLT52YWx1ZVstMV0sIFsnMScsICczJywgJzUnLCAnNycsICc5J10sIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZSBkZXNpZ25hdGVkIGJpdCBpcyBzZXQuCiAgICAgKgogICAgICogQ29tcHV0ZXMgKCh0aGlzICYgKDE8PG4pKSAhPSAwKS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRuIFRoZSBiaXQgdG8gdGVzdCwgMC1iYXNlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIGJpdCB0byB0ZXN0IGlzIG5lZ2F0aXZlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVzdEJpdChpbnQgJG4pIDogYm9vbAogICAgewogICAgICAgIGlmICgkbiA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBiaXQgdG8gdGVzdCBjYW5ub3QgYmUgbmVnYXRpdmUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnNoaWZ0ZWRSaWdodCgkbiktPmlzT2RkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlVG8oJHRoYXQpIDogaW50CiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdOdW1iZXI6Om9mKCR0aGF0KTsKCiAgICAgICAgaWYgKCR0aGF0IGluc3RhbmNlb2YgQmlnSW50ZWdlcikgewogICAgICAgICAgICByZXR1cm4gQ2FsY3VsYXRvcjo6Z2V0KCktPmNtcCgkdGhpcy0+dmFsdWUsICR0aGF0LT52YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLSAkdGhhdC0+Y29tcGFyZVRvKCR0aGlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpZ24oKSA6IGludAogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPnZhbHVlID09PSAnMCcpID8gMCA6ICgoJHRoaXMtPnZhbHVlWzBdID09PSAnLScpID8gLTEgOiAxKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnSW50ZWdlcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnRGVjaW1hbCgpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiBCaWdEZWNpbWFsOjpjcmVhdGUoJHRoaXMtPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnUmF0aW9uYWwoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgcmV0dXJuIEJpZ1JhdGlvbmFsOjpjcmVhdGUoJHRoaXMsIEJpZ0ludGVnZXI6Om9uZSgpLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1NjYWxlKGludCAkc2NhbGUsIGludCAkcm91bmRpbmdNb2RlID0gUm91bmRpbmdNb2RlOjpVTk5FQ0VTU0FSWSkgOiBCaWdEZWNpbWFsCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50b0JpZ0RlY2ltYWwoKS0+dG9TY2FsZSgkc2NhbGUsICRyb3VuZGluZ01vZGUpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9JbnQoKSA6IGludAogICAgewogICAgICAgICRpbnRWYWx1ZSA9IChpbnQpICR0aGlzLT52YWx1ZTsKCiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSAhPT0gKHN0cmluZykgJGludFZhbHVlKSB7CiAgICAgICAgICAgIHRocm93IEludGVnZXJPdmVyZmxvd0V4Y2VwdGlvbjo6dG9JbnRPdmVyZmxvdygkdGhpcyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGludFZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9GbG9hdCgpIDogZmxvYXQKICAgIHsKICAgICAgICByZXR1cm4gKGZsb2F0KSAkdGhpcy0+dmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgbnVtYmVyIGluIHRoZSBnaXZlbiBiYXNlLgogICAgICoKICAgICAqIFRoZSBvdXRwdXQgd2lsbCBhbHdheXMgYmUgbG93ZXJjYXNlIGZvciBiYXNlcyBncmVhdGVyIHRoYW4gMTAuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkYmFzZQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBiYXNlIGlzIG91dCBvZiByYW5nZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmFzZShpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRiYXNlID09PSAxMCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiYXNlIDwgMiB8fCAkYmFzZSA+IDM2KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKFxzcHJpbnRmKCdCYXNlICVkIGlzIG91dCBvZiByYW5nZSBbMiwgMzZdJywgJGJhc2UpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBDYWxjdWxhdG9yOjpnZXQoKS0+dG9CYXNlKCR0aGlzLT52YWx1ZSwgJGJhc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG51bWJlciBpbiBhbiBhcmJpdHJhcnkgYmFzZSB3aXRoIGEgY3VzdG9tIGFscGhhYmV0LgogICAgICoKICAgICAqIEJlY2F1c2UgdGhpcyBtZXRob2QgYWNjZXB0cyBhbiBhbHBoYWJldCB3aXRoIGFueSBjaGFyYWN0ZXIsIGluY2x1ZGluZyBkYXNoLCBpdCBkb2VzIG5vdCBoYW5kbGUgbmVnYXRpdmUgbnVtYmVyczsKICAgICAqIGEgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gd2lsbCBiZSB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGNhbGwgdGhpcyBtZXRob2Qgb24gYSBuZWdhdGl2ZSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxwaGFiZXQgVGhlIGFscGhhYmV0LCBmb3IgZXhhbXBsZSAnMDEnIGZvciBiYXNlIDIsIG9yICcwMTIzNDU2NycgZm9yIGJhc2UgOC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gICBJZiB0aGlzIG51bWJlciBpcyBuZWdhdGl2ZS4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgZ2l2ZW4gYWxwaGFiZXQgZG9lcyBub3QgY29udGFpbiBhdCBsZWFzdCAyIGNoYXJzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcmJpdHJhcnlCYXNlKHN0cmluZyAkYWxwaGFiZXQpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJGJhc2UgPSBcc3RybGVuKCRhbHBoYWJldCk7CgogICAgICAgIGlmICgkYmFzZSA8IDIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBhbHBoYWJldCBtdXN0IGNvbnRhaW4gYXQgbGVhc3QgMiBjaGFycy4nKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dmFsdWVbMF0gPT09ICctJykgewogICAgICAgICAgICB0aHJvdyBuZXcgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24oX19GVU5DVElPTl9fIC4gJygpIGRvZXMgbm90IHN1cHBvcnQgbmVnYXRpdmUgbnVtYmVycy4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBDYWxjdWxhdG9yOjpnZXQoKS0+dG9BcmJpdHJhcnlCYXNlKCR0aGlzLT52YWx1ZSwgJGFscGhhYmV0LCAkYmFzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIG9mIGJ5dGVzIGNvbnRhaW5pbmcgdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogVGhlIHN0cmluZyBpcyBpbiBiaWctZW5kaWFuIGJ5dGUtb3JkZXI6IHRoZSBtb3N0IHNpZ25pZmljYW50IGJ5dGUgaXMgaW4gdGhlIHplcm90aCBlbGVtZW50LgogICAgICoKICAgICAqIElmIGAkc2lnbmVkYCBpcyB0cnVlLCB0aGUgb3V0cHV0IHdpbGwgYmUgaW4gdHdvJ3MtY29tcGxlbWVudCByZXByZXNlbnRhdGlvbiwgYW5kIGEgc2lnbiBiaXQgd2lsbCBiZSBwcmVwZW5kZWQgdG8KICAgICAqIHRoZSBvdXRwdXQuIElmIGAkc2lnbmVkYCBpcyBmYWxzZSwgbm8gc2lnbiBiaXQgd2lsbCBiZSBwcmVwZW5kZWQsIGFuZCB0aGlzIG1ldGhvZCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUKICAgICAqIG51bWJlciBpcyBuZWdhdGl2ZS4KICAgICAqCiAgICAgKiBUaGUgc3RyaW5nIHdpbGwgY29udGFpbiB0aGUgbWluaW11bSBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gcmVwcmVzZW50IHRoaXMgQmlnSW50ZWdlciwgaW5jbHVkaW5nIGEgc2lnbiBiaXQKICAgICAqIGlmIGAkc2lnbmVkYCBpcyB0cnVlLgogICAgICoKICAgICAqIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBgZnJvbUJ5dGVzKClgIGZhY3RvcnkgbWV0aG9kLCBhcyBsb25nIGFzIHRoZSBgJHNpZ25lZGAgZmxhZ3MgbWF0Y2guCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJHNpZ25lZCBXaGV0aGVyIHRvIG91dHB1dCBhIHNpZ25lZCBudW1iZXIgaW4gdHdvJ3MtY29tcGxlbWVudCByZXByZXNlbnRhdGlvbiB3aXRoIGEgbGVhZGluZyBzaWduIGJpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEB0aHJvd3MgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gSWYgJHNpZ25lZCBpcyBmYWxzZSwgYW5kIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0J5dGVzKGJvb2wgJHNpZ25lZCA9IHRydWUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEgJHNpZ25lZCAmJiAkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBOZWdhdGl2ZU51bWJlckV4Y2VwdGlvbignQ2Fubm90IGNvbnZlcnQgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBieXRlIHN0cmluZyB3aGVuICRzaWduZWQgaXMgZmFsc2UuJyk7CiAgICAgICAgfQoKICAgICAgICAkaGV4ID0gJHRoaXMtPmFicygpLT50b0Jhc2UoMTYpOwoKICAgICAgICBpZiAoXHN0cmxlbigkaGV4KSAlIDIgIT09IDApIHsKICAgICAgICAgICAgJGhleCA9ICcwJyAuICRoZXg7CiAgICAgICAgfQoKICAgICAgICAkYmFzZUhleExlbmd0aCA9IFxzdHJsZW4oJGhleCk7CgogICAgICAgIGlmICgkc2lnbmVkKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgICAgICAkYmluID0gXGhleDJiaW4oJGhleCk7CiAgICAgICAgICAgICAgICBhc3NlcnQoJGJpbiAhPT0gZmFsc2UpOwoKICAgICAgICAgICAgICAgICRoZXggPSBcYmluMmhleCh+JGJpbik7CiAgICAgICAgICAgICAgICAkaGV4ID0gc2VsZjo6ZnJvbUJhc2UoJGhleCwgMTYpLT5wbHVzKDEpLT50b0Jhc2UoMTYpOwoKICAgICAgICAgICAgICAgICRoZXhMZW5ndGggPSBcc3RybGVuKCRoZXgpOwoKICAgICAgICAgICAgICAgIGlmICgkaGV4TGVuZ3RoIDwgJGJhc2VIZXhMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkaGV4ID0gXHN0cl9yZXBlYXQoJzAnLCAkYmFzZUhleExlbmd0aCAtICRoZXhMZW5ndGgpIC4gJGhleDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJGhleFswXSA8ICc4JykgewogICAgICAgICAgICAgICAgICAgICRoZXggPSAnRkYnIC4gJGhleDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkaGV4WzBdID49ICc4JykgewogICAgICAgICAgICAgICAgICAgICRoZXggPSAnMDAnIC4gJGhleDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxoZXgyYmluKCRoZXgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGZvciBzZXJpYWxpemluZyB0aGUgb2JqZWN0IGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7dmFsdWU6IHN0cmluZ30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fc2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsndmFsdWUnID0+ICR0aGlzLT52YWx1ZV07CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyBvbmx5IGhlcmUgdG8gYWxsb3cgdW5zZXJpYWxpemluZyB0aGUgb2JqZWN0IGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50UHJvcGVydHlJbml0aWFsaXphdGlvbkNoZWNrCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5e3ZhbHVlOiBzdHJpbmd9ICRkYXRhCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdW5zZXJpYWxpemUoYXJyYXkgJGRhdGEpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT52YWx1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbignX191bnNlcmlhbGl6ZSgpIGlzIGFuIGludGVybmFsIGZ1bmN0aW9uLCBpdCBtdXN0IG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkuJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkZGF0YVsndmFsdWUnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIHJlcXVpcmVkIGJ5IGludGVyZmFjZSBTZXJpYWxpemFibGUgYW5kIFNIT1VMRCBOT1QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZSgpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGlzIG9ubHkgaGVyZSB0byBpbXBsZW1lbnQgaW50ZXJmYWNlIFNlcmlhbGl6YWJsZSBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBzYWxtLXN1cHByZXNzIFJlZHVuZGFudFByb3BlcnR5SW5pdGlhbGl6YXRpb25DaGVjawogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplKCR2YWx1ZSkgOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT52YWx1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigndW5zZXJpYWxpemUoKSBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgaXQgbXVzdCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigNumber.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTnVtYmVyRm9ybWF0RXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb247CgovKioKICogQ29tbW9uIGludGVyZmFjZSBmb3IgYXJiaXRyYXJ5LXByZWNpc2lvbiByYXRpb25hbCBudW1iZXJzLgogKgogKiBAcHNhbG0taW1tdXRhYmxlCiAqLwphYnN0cmFjdCBjbGFzcyBCaWdOdW1iZXIgaW1wbGVtZW50cyBcU2VyaWFsaXphYmxlLCBcSnNvblNlcmlhbGl6YWJsZQp7CiAgICAvKioKICAgICAqIFRoZSByZWd1bGFyIGV4cHJlc3Npb24gdXNlZCB0byBwYXJzZSBpbnRlZ2VyLCBkZWNpbWFsIGFuZCByYXRpb25hbCBudW1iZXJzLgogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFBBUlNFX1JFR0VYUCA9CiAgICAgICAgJy9eJyAuCiAgICAgICAgICAgICcoPzxzaWduPltcLVwrXSk/JyAuCiAgICAgICAgICAgICcoPzonIC4KICAgICAgICAgICAgICAgICcoPzonIC4KICAgICAgICAgICAgICAgICAgICAnKD88aW50ZWdyYWw+WzAtOV0rKT8nIC4KICAgICAgICAgICAgICAgICAgICAnKD88cG9pbnQ+XC4pPycgLgogICAgICAgICAgICAgICAgICAgICcoPzxmcmFjdGlvbmFsPlswLTldKyk/JyAuCiAgICAgICAgICAgICAgICAgICAgJyg/OltlRV0oPzxleHBvbmVudD5bXC1cK10/WzAtOV0rKSk/JyAuCiAgICAgICAgICAgICAgICAnKXwoPzonIC4KICAgICAgICAgICAgICAgICAgICAnKD88bnVtZXJhdG9yPlswLTldKyknIC4KICAgICAgICAgICAgICAgICAgICAnXC8/JyAuCiAgICAgICAgICAgICAgICAgICAgJyg/PGRlbm9taW5hdG9yPlswLTldKyknIC4KICAgICAgICAgICAgICAgICcpJyAuCiAgICAgICAgICAgICcpJyAuCiAgICAgICAgJyQvJzsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdOdW1iZXIgb2YgdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIFRoZSBjb25jcmV0ZSByZXR1cm4gdHlwZSBpcyBkZXBlbmRlbnQgb24gdGhlIGdpdmVuIHZhbHVlLCB3aXRoIHRoZSBmb2xsb3dpbmcgcnVsZXM6CiAgICAgKgogICAgICogLSBCaWdOdW1iZXIgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBhcyBpcwogICAgICogLSBpbnRlZ2VyIG51bWJlcnMgYXJlIHJldHVybmVkIGFzIEJpZ0ludGVnZXIKICAgICAqIC0gZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgc3RyaW5nIHRoZW4gcGFyc2VkIGFzIHN1Y2gKICAgICAqIC0gc3RyaW5ncyBjb250YWluaW5nIGEgYC9gIGNoYXJhY3RlciBhcmUgcmV0dXJuZWQgYXMgQmlnUmF0aW9uYWwKICAgICAqIC0gc3RyaW5ncyBjb250YWluaW5nIGEgYC5gIGNoYXJhY3RlciBvciB1c2luZyBhbiBleHBvbmVudGlhbCBub3RhdGlvbiBhcmUgcmV0dXJuZWQgYXMgQmlnRGVjaW1hbAogICAgICogLSBzdHJpbmdzIGNvbnRhaW5pbmcgb25seSBkaWdpdHMgd2l0aCBhbiBvcHRpb25hbCBsZWFkaW5nIGArYCBvciBgLWAgc2lnbiBhcmUgcmV0dXJuZWQgYXMgQmlnSW50ZWdlcgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ051bWJlcgogICAgICoKICAgICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uICAgSWYgdGhlIGZvcm1hdCBvZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZC4KICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIHZhbHVlIHJlcHJlc2VudHMgYSByYXRpb25hbCBudW1iZXIgd2l0aCBhIGRlbm9taW5hdG9yIG9mIHplcm8uCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZigkdmFsdWUpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIEJpZ051bWJlcikgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19pbnQoJHZhbHVlKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoKHN0cmluZykgJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50Q2FzdEdpdmVuRG9jYmxvY2tUeXBlIFdlIGNhbm5vdCB0cnVzdCB0aGUgdW50eXBlZCAkdmFsdWUgaGVyZSEgKi8KICAgICAgICAkdmFsdWUgPSBcaXNfZmxvYXQoJHZhbHVlKSA/IHNlbGY6OmZsb2F0VG9TdHJpbmcoJHZhbHVlKSA6IChzdHJpbmcpICR2YWx1ZTsKCiAgICAgICAgJHRocm93ID0gc3RhdGljIGZ1bmN0aW9uKCkgdXNlICgkdmFsdWUpIDogdm9pZCB7CiAgICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oXHNwcmludGYoCiAgICAgICAgICAgICAgICAnVGhlIGdpdmVuIHZhbHVlICIlcyIgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgbnVtYmVyLicsCiAgICAgICAgICAgICAgICAkdmFsdWUKICAgICAgICAgICAgKSk7CiAgICAgICAgfTsKCiAgICAgICAgaWYgKFxwcmVnX21hdGNoKHNlbGY6OlBBUlNFX1JFR0VYUCwgJHZhbHVlLCAkbWF0Y2hlcykgIT09IDEpIHsKICAgICAgICAgICAgJHRocm93KCk7CiAgICAgICAgfQoKICAgICAgICAkZ2V0TWF0Y2ggPSBzdGF0aWMgZnVuY3Rpb24oc3RyaW5nICR2YWx1ZSkgdXNlICgkbWF0Y2hlcykgOiA/c3RyaW5nIHsKICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRtYXRjaGVzWyR2YWx1ZV0pICYmICRtYXRjaGVzWyR2YWx1ZV0gIT09ICcnID8gJG1hdGNoZXNbJHZhbHVlXSA6IG51bGw7CiAgICAgICAgfTsKCiAgICAgICAgJHNpZ24gICAgICAgID0gJGdldE1hdGNoKCdzaWduJyk7CiAgICAgICAgJG51bWVyYXRvciAgID0gJGdldE1hdGNoKCdudW1lcmF0b3InKTsKICAgICAgICAkZGVub21pbmF0b3IgPSAkZ2V0TWF0Y2goJ2Rlbm9taW5hdG9yJyk7CgogICAgICAgIGlmICgkbnVtZXJhdG9yICE9PSBudWxsKSB7CiAgICAgICAgICAgIGFzc2VydCgkZGVub21pbmF0b3IgIT09IG51bGwpOwoKICAgICAgICAgICAgaWYgKCRzaWduICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkbnVtZXJhdG9yID0gJHNpZ24gLiAkbnVtZXJhdG9yOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbnVtZXJhdG9yICAgPSBzZWxmOjpjbGVhblVwKCRudW1lcmF0b3IpOwogICAgICAgICAgICAkZGVub21pbmF0b3IgPSBzZWxmOjpjbGVhblVwKCRkZW5vbWluYXRvcik7CgogICAgICAgICAgICBpZiAoJGRlbm9taW5hdG9yID09PSAnMCcpIHsKICAgICAgICAgICAgICAgIHRocm93IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uOjpkZW5vbWluYXRvck11c3ROb3RCZVplcm8oKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgKICAgICAgICAgICAgICAgIG5ldyBCaWdJbnRlZ2VyKCRudW1lcmF0b3IpLAogICAgICAgICAgICAgICAgbmV3IEJpZ0ludGVnZXIoJGRlbm9taW5hdG9yKSwKICAgICAgICAgICAgICAgIGZhbHNlCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkcG9pbnQgICAgICA9ICRnZXRNYXRjaCgncG9pbnQnKTsKICAgICAgICAkaW50ZWdyYWwgICA9ICRnZXRNYXRjaCgnaW50ZWdyYWwnKTsKICAgICAgICAkZnJhY3Rpb25hbCA9ICRnZXRNYXRjaCgnZnJhY3Rpb25hbCcpOwogICAgICAgICRleHBvbmVudCAgID0gJGdldE1hdGNoKCdleHBvbmVudCcpOwoKICAgICAgICBpZiAoJGludGVncmFsID09PSBudWxsICYmICRmcmFjdGlvbmFsID09PSBudWxsKSB7CiAgICAgICAgICAgICR0aHJvdygpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpbnRlZ3JhbCA9PT0gbnVsbCkgewogICAgICAgICAgICAkaW50ZWdyYWwgPSAnMCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHBvaW50ICE9PSBudWxsIHx8ICRleHBvbmVudCAhPT0gbnVsbCkgewogICAgICAgICAgICAkZnJhY3Rpb25hbCA9ICgkZnJhY3Rpb25hbCA/PyAnJyk7CiAgICAgICAgICAgICRleHBvbmVudCA9ICgkZXhwb25lbnQgIT09IG51bGwpID8gKGludCkgJGV4cG9uZW50IDogMDsKCiAgICAgICAgICAgIGlmICgkZXhwb25lbnQgPT09IFBIUF9JTlRfTUlOIHx8ICRleHBvbmVudCA9PT0gUEhQX0lOVF9NQVgpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oJ0V4cG9uZW50IHRvbyBsYXJnZS4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHVuc2NhbGVkVmFsdWUgPSBzZWxmOjpjbGVhblVwKCgkc2lnbiA/PyAnJykuICRpbnRlZ3JhbCAuICRmcmFjdGlvbmFsKTsKCiAgICAgICAgICAgICRzY2FsZSA9IFxzdHJsZW4oJGZyYWN0aW9uYWwpIC0gJGV4cG9uZW50OwoKICAgICAgICAgICAgaWYgKCRzY2FsZSA8IDApIHsKICAgICAgICAgICAgICAgIGlmICgkdW5zY2FsZWRWYWx1ZSAhPT0gJzAnKSB7CiAgICAgICAgICAgICAgICAgICAgJHVuc2NhbGVkVmFsdWUgLj0gXHN0cl9yZXBlYXQoJzAnLCAtICRzY2FsZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkc2NhbGUgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0RlY2ltYWwoJHVuc2NhbGVkVmFsdWUsICRzY2FsZSk7CiAgICAgICAgfQoKICAgICAgICAkaW50ZWdyYWwgPSBzZWxmOjpjbGVhblVwKCgkc2lnbiA/PyAnJykgLiAkaW50ZWdyYWwpOwoKICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoJGludGVncmFsKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNhZmVseSBjb252ZXJ0cyBmbG9hdCB0byBzdHJpbmcsIGF2b2lkaW5nIGxvY2FsZS1kZXBlbmRlbnQgaXNzdWVzLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2JyaWNrL21hdGgvcHVsbC8yMAogICAgICoKICAgICAqIEBwYXJhbSBmbG9hdCAkZmxvYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW1wdXJlRnVuY3Rpb25DYWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGZsb2F0VG9TdHJpbmcoZmxvYXQgJGZsb2F0KSA6IHN0cmluZwogICAgewogICAgICAgICRjdXJyZW50TG9jYWxlID0gXHNldGxvY2FsZShMQ19OVU1FUklDLCAnMCcpOwogICAgICAgIFxzZXRsb2NhbGUoTENfTlVNRVJJQywgJ0MnKTsKCiAgICAgICAgJHJlc3VsdCA9IChzdHJpbmcpICRmbG9hdDsKCiAgICAgICAgXHNldGxvY2FsZShMQ19OVU1FUklDLCAkY3VycmVudExvY2FsZSk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogUHJveHkgbWV0aG9kIHRvIGFjY2VzcyBwcm90ZWN0ZWQgY29uc3RydWN0b3JzIGZyb20gc2libGluZyBjbGFzc2VzLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAuLi4kYXJncyBUaGUgYXJndW1lbnRzIHRvIHRoZSBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgVG9vTWFueUFyZ3VtZW50cwogICAgICogQHBzYWxtLXN1cHByZXNzIFVuc2FmZUluc3RhbnRpYXRpb24KICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoLi4uICRhcmdzKSA6IEJpZ051bWJlcgogICAgewogICAgICAgIHJldHVybiBuZXcgc3RhdGljKC4uLiAkYXJncyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBtaW5pbXVtIG9mIHRoZSBnaXZlbiB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nIC4uLiR2YWx1ZXMgVGhlIG51bWJlcnMgdG8gY29tcGFyZS4gQWxsIHRoZSBudW1iZXJzIG5lZWQgdG8gYmUgY29udmVydGlibGUKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb24uCiAgICAgKgogICAgICogQHJldHVybiBzdGF0aWMgVGhlIG1pbmltdW0gdmFsdWUuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIG5vIHZhbHVlcyBhcmUgZ2l2ZW4uCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gICAgICAgICAgICAgSWYgYW4gYXJndW1lbnQgaXMgbm90IHZhbGlkLgogICAgICoKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBMZXNzU3BlY2lmaWNSZXR1cm5TdGF0ZW1lbnQKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBNb3JlU3BlY2lmaWNSZXR1cm5UeXBlCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1pbiguLi4kdmFsdWVzKSA6IEJpZ051bWJlcgogICAgewogICAgICAgICRtaW4gPSBudWxsOwoKICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICR2YWx1ZSkgewogICAgICAgICAgICAkdmFsdWUgPSBzdGF0aWM6Om9mKCR2YWx1ZSk7CgogICAgICAgICAgICBpZiAoJG1pbiA9PT0gbnVsbCB8fCAkdmFsdWUtPmlzTGVzc1RoYW4oJG1pbikpIHsKICAgICAgICAgICAgICAgICRtaW4gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkbWluID09PSBudWxsKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKF9fTUVUSE9EX18gLiAnKCkgZXhwZWN0cyBhdCBsZWFzdCBvbmUgdmFsdWUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG1pbjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG1heGltdW0gb2YgdGhlIGdpdmVuIHZhbHVlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgLi4uJHZhbHVlcyBUaGUgbnVtYmVycyB0byBjb21wYXJlLiBBbGwgdGhlIG51bWJlcnMgbmVlZCB0byBiZSBjb252ZXJ0aWJsZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBUaGUgbWF4aW11bSB2YWx1ZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgbm8gdmFsdWVzIGFyZSBnaXZlbi4KICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiAgICAgICAgICAgICBJZiBhbiBhcmd1bWVudCBpcyBub3QgdmFsaWQuCiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIExlc3NTcGVjaWZpY1JldHVyblN0YXRlbWVudAogICAgICogQHBzYWxtLXN1cHByZXNzIE1vcmVTcGVjaWZpY1JldHVyblR5cGUKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWF4KC4uLiR2YWx1ZXMpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgJG1heCA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHN0YXRpYzo6b2YoJHZhbHVlKTsKCiAgICAgICAgICAgIGlmICgkbWF4ID09PSBudWxsIHx8ICR2YWx1ZS0+aXNHcmVhdGVyVGhhbigkbWF4KSkgewogICAgICAgICAgICAgICAgJG1heCA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRtYXggPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oX19NRVRIT0RfXyAuICcoKSBleHBlY3RzIGF0IGxlYXN0IG9uZSB2YWx1ZS4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbWF4OwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc3VtIG9mIHRoZSBnaXZlbiB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nIC4uLiR2YWx1ZXMgVGhlIG51bWJlcnMgdG8gYWRkLiBBbGwgdGhlIG51bWJlcnMgbmVlZCB0byBiZSBjb252ZXJ0aWJsZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBUaGUgc3VtLgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiBubyB2YWx1ZXMgYXJlIGdpdmVuLgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uICAgICAgICAgICAgIElmIGFuIGFyZ3VtZW50IGlzIG5vdCB2YWxpZC4KICAgICAqCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgTGVzc1NwZWNpZmljUmV0dXJuU3RhdGVtZW50CiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgTW9yZVNwZWNpZmljUmV0dXJuVHlwZQogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdW0oLi4uJHZhbHVlcykgOiBCaWdOdW1iZXIKICAgIHsKICAgICAgICAvKiogQHZhciBCaWdOdW1iZXJ8bnVsbCAkc3VtICovCiAgICAgICAgJHN1bSA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IHN0YXRpYzo6b2YoJHZhbHVlKTsKCiAgICAgICAgICAgICRzdW0gPSAkc3VtID09PSBudWxsID8gJHZhbHVlIDogc2VsZjo6YWRkKCRzdW0sICR2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHN1bSA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihfX01FVEhPRF9fIC4gJygpIGV4cGVjdHMgYXQgbGVhc3Qgb25lIHZhbHVlLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzdW07CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIHR3byBCaWdOdW1iZXIgaW5zdGFuY2VzIGluIHRoZSBjb3JyZWN0IG9yZGVyIHRvIGF2b2lkIGEgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb24uCiAgICAgKgogICAgICogQHRvZG8gVGhpcyBjb3VsZCBiZSBiZXR0ZXIgcmVzb2x2ZWQgYnkgY3JlYXRpbmcgYW4gYWJzdHJhY3QgcHJvdGVjdGVkIG1ldGhvZCBpbiBCaWdOdW1iZXIsIGFuZCBsZWF2aW5nIHRvCiAgICAgKiAgICAgICBjb25jcmV0ZSBjbGFzc2VzIHRoZSByZXNwb25zaWJpbGl0eSB0byBwZXJmb3JtIHRoZSBhZGRpdGlvbiB0aGVtc2VsdmVzIG9yIGRlbGVnYXRlIGl0IHRvIHRoZSBnaXZlbiBudW1iZXIsCiAgICAgKiAgICAgICBkZXBlbmRpbmcgb24gdGhlaXIgYWJpbGl0eSB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24uIFRoaXMgd2lsbCBhbHNvIHJlcXVpcmUgYSB2ZXJzaW9uIGJ1bXAgYmVjYXVzZSB3ZSdyZQogICAgICogICAgICAgcG90ZW50aWFsbHkgYnJlYWtpbmcgY3VzdG9tIEJpZ051bWJlciBpbXBsZW1lbnRhdGlvbnMgKGlmIGFueS4uLikKICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyICRhCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyICRiCiAgICAgKgogICAgICogQHJldHVybiBCaWdOdW1iZXIKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBhZGQoQmlnTnVtYmVyICRhLCBCaWdOdW1iZXIgJGIpIDogQmlnTnVtYmVyCiAgICB7CiAgICAgICAgaWYgKCRhIGluc3RhbmNlb2YgQmlnUmF0aW9uYWwpIHsKICAgICAgICAgICAgcmV0dXJuICRhLT5wbHVzKCRiKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYiBpbnN0YW5jZW9mIEJpZ1JhdGlvbmFsKSB7CiAgICAgICAgICAgIHJldHVybiAkYi0+cGx1cygkYSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgaW5zdGFuY2VvZiBCaWdEZWNpbWFsKSB7CiAgICAgICAgICAgIHJldHVybiAkYS0+cGx1cygkYik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGIgaW5zdGFuY2VvZiBCaWdEZWNpbWFsKSB7CiAgICAgICAgICAgIHJldHVybiAkYi0+cGx1cygkYSk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBCaWdJbnRlZ2VyICRhICovCgogICAgICAgIHJldHVybiAkYS0+cGx1cygkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIG9wdGlvbmFsIGxlYWRpbmcgemVyb3MgYW5kICsgc2lnbiBmcm9tIHRoZSBnaXZlbiBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyIFRoZSBudW1iZXIsIHZhbGlkYXRlZCBhcyBhIG5vbi1lbXB0eSBzdHJpbmcgb2YgZGlnaXRzIHdpdGggb3B0aW9uYWwgbGVhZGluZyBzaWduLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2xlYW5VcChzdHJpbmcgJG51bWJlcikgOiBzdHJpbmcKICAgIHsKICAgICAgICAkZmlyc3RDaGFyID0gJG51bWJlclswXTsKCiAgICAgICAgaWYgKCRmaXJzdENoYXIgPT09ICcrJyB8fCAkZmlyc3RDaGFyID09PSAnLScpIHsKICAgICAgICAgICAgJG51bWJlciA9IFxzdWJzdHIoJG51bWJlciwgMSk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gXGx0cmltKCRudW1iZXIsICcwJyk7CgogICAgICAgIGlmICgkbnVtYmVyID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gJzAnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmaXJzdENoYXIgPT09ICctJykgewogICAgICAgICAgICByZXR1cm4gJy0nIC4gJG51bWJlcjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbnVtYmVyOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIGVxdWFsIHRvIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0VxdWFsVG8oJHRoYXQpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGFyZVRvKCR0aGF0KSA9PT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyBpZiB0aGlzIG51bWJlciBpcyBzdHJpY3RseSBsb3dlciB0aGFuIHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0CiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0xlc3NUaGFuKCR0aGF0KSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBhcmVUbygkdGhhdCkgPCAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIGxvd2VyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzTGVzc1RoYW5PckVxdWFsVG8oJHRoYXQpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGFyZVRvKCR0aGF0KSA8PSAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIHN0cmljdGx5IGdyZWF0ZXIgdGhhbiB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNHcmVhdGVyVGhhbigkdGhhdCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb21wYXJlVG8oJHRoYXQpID4gMDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyBpZiB0aGlzIG51bWJlciBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzR3JlYXRlclRoYW5PckVxdWFsVG8oJHRoYXQpIDogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29tcGFyZVRvKCR0aGF0KSA+PSAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGVxdWFscyB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNaZXJvKCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTaWduKCkgPT09IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3MgaWYgdGhpcyBudW1iZXIgaXMgc3RyaWN0bHkgbmVnYXRpdmUuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc05lZ2F0aXZlKCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTaWduKCkgPCAwOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2tzIGlmIHRoaXMgbnVtYmVyIGlzIG5lZ2F0aXZlIG9yIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc05lZ2F0aXZlT3JaZXJvKCkgOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRTaWduKCkgPD0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyBpZiB0aGlzIG51bWJlciBpcyBzdHJpY3RseSBwb3NpdGl2ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUG9zaXRpdmUoKSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNpZ24oKSA+IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3MgaWYgdGhpcyBudW1iZXIgaXMgcG9zaXRpdmUgb3IgemVyby4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUG9zaXRpdmVPclplcm8oKSA6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFNpZ24oKSA+PSAwOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc2lnbiBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludCAtMSBpZiB0aGUgbnVtYmVyIGlzIG5lZ2F0aXZlLCAwIGlmIHplcm8sIDEgaWYgcG9zaXRpdmUuCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduKCkgOiBpbnQ7CgogICAgLyoqCiAgICAgKiBDb21wYXJlcyB0aGlzIG51bWJlciB0byB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdAogICAgICoKICAgICAqIEByZXR1cm4gaW50IFstMSwwLDFdIElmIGAkdGhpc2AgaXMgbG93ZXIgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiBgJHRoYXRgLgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZC4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbygkdGhhdCkgOiBpbnQ7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGlzIG51bWJlciB0byBhIEJpZ0ludGVnZXIuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyIFRoZSBjb252ZXJ0ZWQgbnVtYmVyLgogICAgICoKICAgICAqIEB0aHJvd3MgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb24gSWYgdGhpcyBudW1iZXIgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIEJpZ0ludGVnZXIgd2l0aG91dCByb3VuZGluZy4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHRvQmlnSW50ZWdlcigpIDogQmlnSW50ZWdlcjsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoaXMgbnVtYmVyIHRvIGEgQmlnRGVjaW1hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0RlY2ltYWwgVGhlIGNvbnZlcnRlZCBudW1iZXIuCiAgICAgKgogICAgICogQHRocm93cyBSb3VuZGluZ05lY2Vzc2FyeUV4Y2VwdGlvbiBJZiB0aGlzIG51bWJlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgQmlnRGVjaW1hbCB3aXRob3V0IHJvdW5kaW5nLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9CaWdEZWNpbWFsKCkgOiBCaWdEZWNpbWFsOwoKICAgIC8qKgogICAgICogQ29udmVydHMgdGhpcyBudW1iZXIgdG8gYSBCaWdSYXRpb25hbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsIFRoZSBjb252ZXJ0ZWQgbnVtYmVyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9CaWdSYXRpb25hbCgpIDogQmlnUmF0aW9uYWw7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGlzIG51bWJlciB0byBhIEJpZ0RlY2ltYWwgd2l0aCB0aGUgZ2l2ZW4gc2NhbGUsIHVzaW5nIHJvdW5kaW5nIGlmIG5lY2Vzc2FyeS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRzY2FsZSAgICAgICAgVGhlIHNjYWxlIG9mIHRoZSByZXN1bHRpbmcgYEJpZ0RlY2ltYWxgLgogICAgICogQHBhcmFtIGludCAkcm91bmRpbmdNb2RlIEEgYFJvdW5kaW5nTW9kZWAgY29uc3RhbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdEZWNpbWFsCiAgICAgKgogICAgICogQHRocm93cyBSb3VuZGluZ05lY2Vzc2FyeUV4Y2VwdGlvbiBJZiB0aGlzIG51bWJlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIHRoZSBnaXZlbiBzY2FsZSB3aXRob3V0IHJvdW5kaW5nLgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG9ubHkgYXBwbGllcyB3aGVuIFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlkgaXMgdXNlZC4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHRvU2NhbGUoaW50ICRzY2FsZSwgaW50ICRyb3VuZGluZ01vZGUgPSBSb3VuZGluZ01vZGU6OlVOTkVDRVNTQVJZKSA6IEJpZ0RlY2ltYWw7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBleGFjdCB2YWx1ZSBvZiB0aGlzIG51bWJlciBhcyBhIG5hdGl2ZSBpbnRlZ2VyLgogICAgICoKICAgICAqIElmIHRoaXMgbnVtYmVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBuYXRpdmUgaW50ZWdlciB3aXRob3V0IGxvc2luZyBwcmVjaXNpb24sIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCiAgICAgKiBOb3RlIHRoYXQgdGhlIGFjY2VwdGFibGUgcmFuZ2UgZm9yIGFuIGludGVnZXIgZGVwZW5kcyBvbiB0aGUgcGxhdGZvcm0gYW5kIGRpZmZlcnMgZm9yIDMyLWJpdCBhbmQgNjQtYml0LgogICAgICoKICAgICAqIEByZXR1cm4gaW50IFRoZSBjb252ZXJ0ZWQgdmFsdWUuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoaXMgbnVtYmVyIGNhbm5vdCBiZSBleGFjdGx5IGNvbnZlcnRlZCB0byBhIG5hdGl2ZSBpbnRlZ2VyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9JbnQoKSA6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGlzIG51bWJlciBhcyBhIGZsb2F0aW5nLXBvaW50IHZhbHVlLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBjYW4gZGlzY2FyZCBpbmZvcm1hdGlvbiBhcyB0aGUgcHJlY2lzaW9uIG9mIGEgZmxvYXRpbmctcG9pbnQgdmFsdWUKICAgICAqIGlzIGluaGVyZW50bHkgbGltaXRlZC4KICAgICAqCiAgICAgKiBJZiB0aGUgbnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlIGZsb2F0aW5nIHBvaW50IG51bWJlciwgcG9zaXRpdmUgaW5maW5pdHkgaXMgcmV0dXJuZWQuCiAgICAgKiBJZiB0aGUgbnVtYmVyIGlzIGxlc3MgdGhhbiB0aGUgc21hbGxlc3QgcmVwcmVzZW50YWJsZSBmbG9hdGluZyBwb2ludCBudW1iZXIsIG5lZ2F0aXZlIGluZmluaXR5IGlzIHJldHVybmVkLgogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQgVGhlIGNvbnZlcnRlZCB2YWx1ZS4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHRvRmxvYXQoKSA6IGZsb2F0OwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG51bWJlci4KICAgICAqCiAgICAgKiBUaGUgb3V0cHV0IG9mIHRoaXMgbWV0aG9kIGNhbiBiZSBwYXJzZWQgYnkgdGhlIGBvZigpYCBmYWN0b3J5IG1ldGhvZDsKICAgICAqIHRoaXMgd2lsbCB5aWVsZCBhbiBvYmplY3QgZXF1YWwgdG8gdGhpcyBvbmUsIHdpdGhvdXQgYW55IGluZm9ybWF0aW9uIGxvc3MuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSA6IHN0cmluZzsKCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+X190b1N0cmluZygpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/BigRational.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cRGl2aXNpb25CeVplcm9FeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXEV4Y2VwdGlvblxNYXRoRXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cTnVtYmVyRm9ybWF0RXhjZXB0aW9uOwp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb247CgovKioKICogQW4gYXJiaXRyYXJpbHkgbGFyZ2UgcmF0aW9uYWwgbnVtYmVyLgogKgogKiBUaGlzIGNsYXNzIGlzIGltbXV0YWJsZS4KICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KZmluYWwgY2xhc3MgQmlnUmF0aW9uYWwgZXh0ZW5kcyBCaWdOdW1iZXIKewogICAgLyoqCiAgICAgKiBUaGUgbnVtZXJhdG9yLgogICAgICoKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICRudW1lcmF0b3I7CgogICAgLyoqCiAgICAgKiBUaGUgZGVub21pbmF0b3IuIEFsd2F5cyBzdHJpY3RseSBwb3NpdGl2ZS4KICAgICAqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkZGVub21pbmF0b3I7CgogICAgLyoqCiAgICAgKiBQcm90ZWN0ZWQgY29uc3RydWN0b3IuIFVzZSBhIGZhY3RvcnkgbWV0aG9kIHRvIG9idGFpbiBhbiBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkbnVtZXJhdG9yICAgICAgICBUaGUgbnVtZXJhdG9yLgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJGRlbm9taW5hdG9yICAgICAgVGhlIGRlbm9taW5hdG9yLgogICAgICogQHBhcmFtIGJvb2wgICAgICAgJGNoZWNrRGVub21pbmF0b3IgV2hldGhlciB0byBjaGVjayB0aGUgZGVub21pbmF0b3IgZm9yIG5lZ2F0aXZlIGFuZCB6ZXJvLgogICAgICoKICAgICAqIEB0aHJvd3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gSWYgdGhlIGRlbm9taW5hdG9yIGlzIHplcm8uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfX2NvbnN0cnVjdChCaWdJbnRlZ2VyICRudW1lcmF0b3IsIEJpZ0ludGVnZXIgJGRlbm9taW5hdG9yLCBib29sICRjaGVja0Rlbm9taW5hdG9yKQogICAgewogICAgICAgIGlmICgkY2hlY2tEZW5vbWluYXRvcikgewogICAgICAgICAgICBpZiAoJGRlbm9taW5hdG9yLT5pc1plcm8oKSkgewogICAgICAgICAgICAgICAgdGhyb3cgRGl2aXNpb25CeVplcm9FeGNlcHRpb246OmRlbm9taW5hdG9yTXVzdE5vdEJlWmVybygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGRlbm9taW5hdG9yLT5pc05lZ2F0aXZlKCkpIHsKICAgICAgICAgICAgICAgICRudW1lcmF0b3IgICA9ICRudW1lcmF0b3ItPm5lZ2F0ZWQoKTsKICAgICAgICAgICAgICAgICRkZW5vbWluYXRvciA9ICRkZW5vbWluYXRvci0+bmVnYXRlZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bnVtZXJhdG9yICAgPSAkbnVtZXJhdG9yOwogICAgICAgICR0aGlzLT5kZW5vbWluYXRvciA9ICRkZW5vbWluYXRvcjsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBCaWdSYXRpb25hbCBvZiB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBCaWdSYXRpb25hbC4KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mKCR2YWx1ZSkgOiBCaWdOdW1iZXIKICAgIHsKICAgICAgICByZXR1cm4gcGFyZW50OjpvZigkdmFsdWUpLT50b0JpZ1JhdGlvbmFsKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgQmlnUmF0aW9uYWwgb3V0IG9mIGEgbnVtZXJhdG9yIGFuZCBhIGRlbm9taW5hdG9yLgogICAgICoKICAgICAqIElmIHRoZSBkZW5vbWluYXRvciBpcyBuZWdhdGl2ZSwgdGhlIHNpZ25zIG9mIGJvdGggdGhlIG51bWVyYXRvciBhbmQgdGhlIGRlbm9taW5hdG9yCiAgICAgKiB3aWxsIGJlIGludmVydGVkIHRvIGVuc3VyZSB0aGF0IHRoZSBkZW5vbWluYXRvciBpcyBhbHdheXMgcG9zaXRpdmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICRudW1lcmF0b3IgICBUaGUgbnVtZXJhdG9yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkZGVub21pbmF0b3IgVGhlIGRlbm9taW5hdG9yLiBNdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgQmlnSW50ZWdlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsCiAgICAgKgogICAgICogQHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gICAgICBJZiBhbiBhcmd1bWVudCBkb2VzIG5vdCByZXByZXNlbnQgYSB2YWxpZCBudW1iZXIuCiAgICAgKiBAdGhyb3dzIFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uIElmIGFuIGFyZ3VtZW50IHJlcHJlc2VudHMgYSBub24taW50ZWdlciBudW1iZXIuCiAgICAgKiBAdGhyb3dzIERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uICAgIElmIHRoZSBkZW5vbWluYXRvciBpcyB6ZXJvLgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbmQoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJG51bWVyYXRvciAgID0gQmlnSW50ZWdlcjo6b2YoJG51bWVyYXRvcik7CiAgICAgICAgJGRlbm9taW5hdG9yID0gQmlnSW50ZWdlcjo6b2YoJGRlbm9taW5hdG9yKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ1JhdGlvbmFsIHJlcHJlc2VudGluZyB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHplcm8oKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgLyoqCiAgICAgICAgICogQHBzYWxtLXN1cHByZXNzIEltcHVyZVN0YXRpY1ZhcmlhYmxlCiAgICAgICAgICogQHZhciBCaWdSYXRpb25hbHxudWxsICR6ZXJvCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICR6ZXJvOwoKICAgICAgICBpZiAoJHplcm8gPT09IG51bGwpIHsKICAgICAgICAgICAgJHplcm8gPSBuZXcgQmlnUmF0aW9uYWwoQmlnSW50ZWdlcjo6emVybygpLCBCaWdJbnRlZ2VyOjpvbmUoKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR6ZXJvOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIEJpZ1JhdGlvbmFsIHJlcHJlc2VudGluZyBvbmUuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbAogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb25lKCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNWYXJpYWJsZQogICAgICAgICAqIEB2YXIgQmlnUmF0aW9uYWx8bnVsbCAkb25lCiAgICAgICAgICovCiAgICAgICAgc3RhdGljICRvbmU7CgogICAgICAgIGlmICgkb25lID09PSBudWxsKSB7CiAgICAgICAgICAgICRvbmUgPSBuZXcgQmlnUmF0aW9uYWwoQmlnSW50ZWdlcjo6b25lKCksIEJpZ0ludGVnZXI6Om9uZSgpLCBmYWxzZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG9uZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBCaWdSYXRpb25hbCByZXByZXNlbnRpbmcgdGVuLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRlbigpIDogQmlnUmF0aW9uYWwKICAgIHsKICAgICAgICAvKioKICAgICAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW1wdXJlU3RhdGljVmFyaWFibGUKICAgICAgICAgKiBAdmFyIEJpZ1JhdGlvbmFsfG51bGwgJHRlbgogICAgICAgICAqLwogICAgICAgIHN0YXRpYyAkdGVuOwoKICAgICAgICBpZiAoJHRlbiA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGVuID0gbmV3IEJpZ1JhdGlvbmFsKEJpZ0ludGVnZXI6OnRlbigpLCBCaWdJbnRlZ2VyOjpvbmUoKSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0ZW47CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE51bWVyYXRvcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREZW5vbWluYXRvcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGVub21pbmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBxdW90aWVudCBvZiB0aGUgZGl2aXNpb24gb2YgdGhlIG51bWVyYXRvciBieSB0aGUgZGVub21pbmF0b3IuCiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBxdW90aWVudCgpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yLT5xdW90aWVudCgkdGhpcy0+ZGVub21pbmF0b3IpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluZGVyIG9mIHRoZSBkaXZpc2lvbiBvZiB0aGUgbnVtZXJhdG9yIGJ5IHRoZSBkZW5vbWluYXRvci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbWFpbmRlcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yLT5yZW1haW5kZXIoJHRoaXMtPmRlbm9taW5hdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHF1b3RpZW50IGFuZCByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIG9mIHRoZSBudW1lcmF0b3IgYnkgdGhlIGRlbm9taW5hdG9yLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBxdW90aWVudEFuZFJlbWFpbmRlcigpIDogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvci0+cXVvdGllbnRBbmRSZW1haW5kZXIoJHRoaXMtPmRlbm9taW5hdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGlzIG51bWJlciBhbmQgdGhlIGdpdmVuIG9uZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQmlnTnVtYmVyfGludHxmbG9hdHxzdHJpbmcgJHRoYXQgVGhlIG51bWJlciB0byBhZGQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgTWF0aEV4Y2VwdGlvbiBJZiB0aGUgbnVtYmVyIGlzIG5vdCB2YWxpZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBsdXMoJHRoYXQpIDogQmlnUmF0aW9uYWwKICAgIHsKICAgICAgICAkdGhhdCA9IEJpZ1JhdGlvbmFsOjpvZigkdGhhdCk7CgogICAgICAgICRudW1lcmF0b3IgICA9ICR0aGlzLT5udW1lcmF0b3ItPm11bHRpcGxpZWRCeSgkdGhhdC0+ZGVub21pbmF0b3IpOwogICAgICAgICRudW1lcmF0b3IgICA9ICRudW1lcmF0b3ItPnBsdXMoJHRoYXQtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGlzLT5kZW5vbWluYXRvcikpOwogICAgICAgICRkZW5vbWluYXRvciA9ICR0aGlzLT5kZW5vbWluYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CgogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbnVtYmVyIHRvIHN1YnRyYWN0LgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIG51bWJlciBpcyBub3QgdmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtaW51cygkdGhhdCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnUmF0aW9uYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgJG51bWVyYXRvciAgID0gJHRoaXMtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CiAgICAgICAgJG51bWVyYXRvciAgID0gJG51bWVyYXRvci0+bWludXMoJHRoYXQtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGlzLT5kZW5vbWluYXRvcikpOwogICAgICAgICRkZW5vbWluYXRvciA9ICR0aGlzLT5kZW5vbWluYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CgogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBwcm9kdWN0IG9mIHRoaXMgbnVtYmVyIGFuZCB0aGUgZ2l2ZW4gb25lLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdOdW1iZXJ8aW50fGZsb2F0fHN0cmluZyAkdGhhdCBUaGUgbXVsdGlwbGllci4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsIFRoZSByZXN1bHQuCiAgICAgKgogICAgICogQHRocm93cyBNYXRoRXhjZXB0aW9uIElmIHRoZSBtdWx0aXBsaWVyIGlzIG5vdCBhIHZhbGlkIG51bWJlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bHRpcGxpZWRCeSgkdGhhdCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgICR0aGF0ID0gQmlnUmF0aW9uYWw6Om9mKCR0aGF0KTsKCiAgICAgICAgJG51bWVyYXRvciAgID0gJHRoaXMtPm51bWVyYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5udW1lcmF0b3IpOwogICAgICAgICRkZW5vbWluYXRvciA9ICR0aGlzLT5kZW5vbWluYXRvci0+bXVsdGlwbGllZEJ5KCR0aGF0LT5kZW5vbWluYXRvcik7CgogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG51bWVyYXRvciwgJGRlbm9taW5hdG9yLCBmYWxzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIGRpdmlzaW9uIG9mIHRoaXMgbnVtYmVyIGJ5IHRoZSBnaXZlbiBvbmUuCiAgICAgKgogICAgICogQHBhcmFtIEJpZ051bWJlcnxpbnR8ZmxvYXR8c3RyaW5nICR0aGF0IFRoZSBkaXZpc29yLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwgVGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIE1hdGhFeGNlcHRpb24gSWYgdGhlIGRpdmlzb3IgaXMgbm90IGEgdmFsaWQgbnVtYmVyLCBvciBpcyB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2aWRlZEJ5KCR0aGF0KSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJHRoYXQgPSBCaWdSYXRpb25hbDo6b2YoJHRoYXQpOwoKICAgICAgICAkbnVtZXJhdG9yICAgPSAkdGhpcy0+bnVtZXJhdG9yLT5tdWx0aXBsaWVkQnkoJHRoYXQtPmRlbm9taW5hdG9yKTsKICAgICAgICAkZGVub21pbmF0b3IgPSAkdGhpcy0+ZGVub21pbmF0b3ItPm11bHRpcGxpZWRCeSgkdGhhdC0+bnVtZXJhdG9yKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIHRydWUpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGlzIG51bWJlciBleHBvbmVudGlhdGVkIHRvIHRoZSBnaXZlbiB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRleHBvbmVudCBUaGUgZXhwb25lbnQuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbCBUaGUgcmVzdWx0LgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgZXhwb25lbnQgaXMgbm90IGluIHRoZSByYW5nZSAwIHRvIDEsMDAwLDAwMC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBvd2VyKGludCAkZXhwb25lbnQpIDogQmlnUmF0aW9uYWwKICAgIHsKICAgICAgICBpZiAoJGV4cG9uZW50ID09PSAwKSB7CiAgICAgICAgICAgICRvbmUgPSBCaWdJbnRlZ2VyOjpvbmUoKTsKCiAgICAgICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJG9uZSwgJG9uZSwgZmFsc2UpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRleHBvbmVudCA9PT0gMSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEJpZ1JhdGlvbmFsKAogICAgICAgICAgICAkdGhpcy0+bnVtZXJhdG9yLT5wb3dlcigkZXhwb25lbnQpLAogICAgICAgICAgICAkdGhpcy0+ZGVub21pbmF0b3ItPnBvd2VyKCRleHBvbmVudCksCiAgICAgICAgICAgIGZhbHNlCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlY2lwcm9jYWwgb2YgdGhpcyBCaWdSYXRpb25hbC4KICAgICAqCiAgICAgKiBUaGUgcmVjaXByb2NhbCBoYXMgdGhlIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3Igc3dhcHBlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ1JhdGlvbmFsCiAgICAgKgogICAgICogQHRocm93cyBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbiBJZiB0aGUgbnVtZXJhdG9yIGlzIHplcm8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWNpcHJvY2FsKCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJHRoaXMtPmRlbm9taW5hdG9yLCAkdGhpcy0+bnVtZXJhdG9yLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoaXMgQmlnUmF0aW9uYWwuCiAgICAgKgogICAgICogQHJldHVybiBCaWdSYXRpb25hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWJzKCkgOiBCaWdSYXRpb25hbAogICAgewogICAgICAgIHJldHVybiBuZXcgQmlnUmF0aW9uYWwoJHRoaXMtPm51bWVyYXRvci0+YWJzKCksICR0aGlzLT5kZW5vbWluYXRvciwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmVnYXRlZCB2YWx1ZSBvZiB0aGlzIEJpZ1JhdGlvbmFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG5lZ2F0ZWQoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkdGhpcy0+bnVtZXJhdG9yLT5uZWdhdGVkKCksICR0aGlzLT5kZW5vbWluYXRvciwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc2ltcGxpZmllZCB2YWx1ZSBvZiB0aGlzIEJpZ1JhdGlvbmFsLgogICAgICoKICAgICAqIEByZXR1cm4gQmlnUmF0aW9uYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpbXBsaWZpZWQoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgJGdjZCA9ICR0aGlzLT5udW1lcmF0b3ItPmdjZCgkdGhpcy0+ZGVub21pbmF0b3IpOwoKICAgICAgICAkbnVtZXJhdG9yID0gJHRoaXMtPm51bWVyYXRvci0+cXVvdGllbnQoJGdjZCk7CiAgICAgICAgJGRlbm9taW5hdG9yID0gJHRoaXMtPmRlbm9taW5hdG9yLT5xdW90aWVudCgkZ2NkKTsKCiAgICAgICAgcmV0dXJuIG5ldyBCaWdSYXRpb25hbCgkbnVtZXJhdG9yLCAkZGVub21pbmF0b3IsIGZhbHNlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmVUbygkdGhhdCkgOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1pbnVzKCR0aGF0KS0+Z2V0U2lnbigpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbigpIDogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5udW1lcmF0b3ItPmdldFNpZ24oKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnSW50ZWdlcigpIDogQmlnSW50ZWdlcgogICAgewogICAgICAgICRzaW1wbGlmaWVkID0gJHRoaXMtPnNpbXBsaWZpZWQoKTsKCiAgICAgICAgaWYgKCEgJHNpbXBsaWZpZWQtPmRlbm9taW5hdG9yLT5pc0VxdWFsVG8oMSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uKCdUaGlzIHJhdGlvbmFsIG51bWJlciBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYW4gaW50ZWdlciB2YWx1ZSB3aXRob3V0IHJvdW5kaW5nLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzaW1wbGlmaWVkLT5udW1lcmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0JpZ0RlY2ltYWwoKSA6IEJpZ0RlY2ltYWwKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvci0+dG9CaWdEZWNpbWFsKCktPmV4YWN0bHlEaXZpZGVkQnkoJHRoaXMtPmRlbm9taW5hdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQmlnUmF0aW9uYWwoKSA6IEJpZ1JhdGlvbmFsCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9TY2FsZShpbnQgJHNjYWxlLCBpbnQgJHJvdW5kaW5nTW9kZSA9IFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlkpIDogQmlnRGVjaW1hbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yLT50b0JpZ0RlY2ltYWwoKS0+ZGl2aWRlZEJ5KCR0aGlzLT5kZW5vbWluYXRvciwgJHNjYWxlLCAkcm91bmRpbmdNb2RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvSW50KCkgOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRvQmlnSW50ZWdlcigpLT50b0ludCgpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9GbG9hdCgpIDogZmxvYXQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm51bWVyYXRvci0+dG9GbG9hdCgpIC8gJHRoaXMtPmRlbm9taW5hdG9yLT50b0Zsb2F0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkgOiBzdHJpbmcKICAgIHsKICAgICAgICAkbnVtZXJhdG9yICAgPSAoc3RyaW5nKSAkdGhpcy0+bnVtZXJhdG9yOwogICAgICAgICRkZW5vbWluYXRvciA9IChzdHJpbmcpICR0aGlzLT5kZW5vbWluYXRvcjsKCiAgICAgICAgaWYgKCRkZW5vbWluYXRvciA9PT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybiAkbnVtZXJhdG9yOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5udW1lcmF0b3IgLiAnLycgLiAkdGhpcy0+ZGVub21pbmF0b3I7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBmb3Igc2VyaWFsaXppbmcgdGhlIG9iamVjdCBhbmQgU0hPVUxEIE5PVCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e251bWVyYXRvcjogQmlnSW50ZWdlciwgZGVub21pbmF0b3I6IEJpZ0ludGVnZXJ9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NlcmlhbGl6ZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbJ251bWVyYXRvcicgPT4gJHRoaXMtPm51bWVyYXRvciwgJ2Rlbm9taW5hdG9yJyA9PiAkdGhpcy0+ZGVub21pbmF0b3JdOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgaXMgb25seSBoZXJlIHRvIGFsbG93IHVuc2VyaWFsaXppbmcgdGhlIG9iamVjdCBhbmQgY2Fubm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQHBzYWxtLXN1cHByZXNzIFJlZHVuZGFudFByb3BlcnR5SW5pdGlhbGl6YXRpb25DaGVjawogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXtudW1lcmF0b3I6IEJpZ0ludGVnZXIsIGRlbm9taW5hdG9yOiBCaWdJbnRlZ2VyfSAkZGF0YQogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEB0aHJvd3MgXExvZ2ljRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Vuc2VyaWFsaXplKGFycmF5ICRkYXRhKTogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+bnVtZXJhdG9yKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdfX3Vuc2VyaWFsaXplKCkgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGl0IG11c3Qgbm90IGJlIGNhbGxlZCBkaXJlY3RseS4nKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5udW1lcmF0b3IgPSAkZGF0YVsnbnVtZXJhdG9yJ107CiAgICAgICAgJHRoaXMtPmRlbm9taW5hdG9yID0gJGRhdGFbJ2Rlbm9taW5hdG9yJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyByZXF1aXJlZCBieSBpbnRlcmZhY2UgU2VyaWFsaXphYmxlIGFuZCBTSE9VTEQgTk9UIGJlIGFjY2Vzc2VkIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bnVtZXJhdG9yIC4gJy8nIC4gJHRoaXMtPmRlbm9taW5hdG9yOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgaXMgb25seSBoZXJlIHRvIGltcGxlbWVudCBpbnRlcmZhY2UgU2VyaWFsaXphYmxlIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50UHJvcGVydHlJbml0aWFsaXphdGlvbkNoZWNrCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxMb2dpY0V4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXJpYWxpemUoJHZhbHVlKSA6IHZvaWQKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPm51bWVyYXRvcikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbigndW5zZXJpYWxpemUoKSBpcyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgaXQgbXVzdCBub3QgYmUgY2FsbGVkIGRpcmVjdGx5LicpOwogICAgICAgIH0KCiAgICAgICAgWyRudW1lcmF0b3IsICRkZW5vbWluYXRvcl0gPSBcZXhwbG9kZSgnLycsICR2YWx1ZSk7CgogICAgICAgICR0aGlzLT5udW1lcmF0b3IgICA9IEJpZ0ludGVnZXI6Om9mKCRudW1lcmF0b3IpOwogICAgICAgICR0aGlzLT5kZW5vbWluYXRvciA9IEJpZ0ludGVnZXI6Om9mKCRkZW5vbWluYXRvcik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/DivisionByZeroException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhIGRpdmlzaW9uIGJ5IHplcm8gb2NjdXJzLgogKi8KY2xhc3MgRGl2aXNpb25CeVplcm9FeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHJldHVybiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGl2aXNpb25CeVplcm8oKSA6IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdEaXZpc2lvbiBieSB6ZXJvLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbW9kdWx1c011c3ROb3RCZVplcm8oKSA6IERpdmlzaW9uQnlaZXJvRXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdUaGUgbW9kdWx1cyBtdXN0IG5vdCBiZSB6ZXJvLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVub21pbmF0b3JNdXN0Tm90QmVaZXJvKCkgOiBEaXZpc2lvbkJ5WmVyb0V4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZignVGhlIGRlbm9taW5hdG9yIG9mIGEgcmF0aW9uYWwgbnVtYmVyIGNhbm5vdCBiZSB6ZXJvLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/IntegerOverflowException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gYW4gaW50ZWdlciBvdmVyZmxvdyBvY2N1cnMuCiAqLwpjbGFzcyBJbnRlZ2VyT3ZlcmZsb3dFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBJbnRlZ2VyT3ZlcmZsb3dFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvSW50T3ZlcmZsb3coQmlnSW50ZWdlciAkdmFsdWUpIDogSW50ZWdlck92ZXJmbG93RXhjZXB0aW9uCiAgICB7CiAgICAgICAgJG1lc3NhZ2UgPSAnJXMgaXMgb3V0IG9mIHJhbmdlICVkIHRvICVkIGFuZCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYW4gaW50ZWdlci4nOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoXHNwcmludGYoJG1lc3NhZ2UsIChzdHJpbmcpICR2YWx1ZSwgUEhQX0lOVF9NSU4sIFBIUF9JTlRfTUFYKSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/MathException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEJhc2UgY2xhc3MgZm9yIGFsbCBtYXRoIGV4Y2VwdGlvbnMuCiAqCiAqIFRoaXMgY2xhc3MgaXMgYWJzdHJhY3QgdG8gZW5zdXJlIHRoYXQgb25seSBmaW5lLWdyYWluZWQgZXhjZXB0aW9ucyBhcmUgdGhyb3duIHRocm91Z2hvdXQgdGhlIGNvZGUuCiAqLwpjbGFzcyBNYXRoRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/NegativeNumberException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYW4gdW5zdXBwb3J0ZWQgb3BlcmF0aW9uLCBzdWNoIGFzIGEgc3F1YXJlIHJvb3QsIG9uIGEgbmVnYXRpdmUgbnVtYmVyLgogKi8KY2xhc3MgTmVnYXRpdmVOdW1iZXJFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/NumberFormatException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGNyZWF0ZSBhIG51bWJlciBmcm9tIGEgc3RyaW5nIHdpdGggYW4gaW52YWxpZCBmb3JtYXQuCiAqLwpjbGFzcyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkY2hhciBUaGUgZmFpbGluZyBjaGFyYWN0ZXIuCiAgICAgKgogICAgICogQHJldHVybiBOdW1iZXJGb3JtYXRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcHNhbG0tcHVyZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoYXJOb3RJbkFscGhhYmV0KHN0cmluZyAkY2hhcikgOiBzZWxmCiAgICB7CiAgICAgICAgJG9yZCA9IFxvcmQoJGNoYXIpOwoKICAgICAgICBpZiAoJG9yZCA8IDMyIHx8ICRvcmQgPiAxMjYpIHsKICAgICAgICAgICAgJGNoYXIgPSBcc3RydG91cHBlcihcZGVjaGV4KCRvcmQpKTsKCiAgICAgICAgICAgIGlmICgkb3JkIDwgMTApIHsKICAgICAgICAgICAgICAgICRjaGFyID0gJzAnIC4gJGNoYXI7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2hhciA9ICciJyAuICRjaGFyIC4gJyInOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKHNwcmludGYoJ0NoYXIgJXMgaXMgbm90IGEgdmFsaWQgY2hhcmFjdGVyIGluIHRoZSBnaXZlbiBhbHBoYWJldC4nLCAkY2hhcikpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Exception/RoundingNecessaryException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcRXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBhIG51bWJlciBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXQgdGhlIHJlcXVlc3RlZCBzY2FsZSB3aXRob3V0IHJvdW5kaW5nLgogKi8KY2xhc3MgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb24gZXh0ZW5kcyBNYXRoRXhjZXB0aW9uCnsKICAgIC8qKgogICAgICogQHJldHVybiBSb3VuZGluZ05lY2Vzc2FyeUV4Y2VwdGlvbgogICAgICoKICAgICAqIEBwc2FsbS1wdXJlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcm91bmRpbmdOZWNlc3NhcnkoKSA6IFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCdSb3VuZGluZyBpcyBuZWNlc3NhcnkgdG8gcmVwcmVzZW50IHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBhdCB0aGlzIHNjYWxlLicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWw7Cgp1c2UgQnJpY2tcTWF0aFxFeGNlcHRpb25cUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb247CnVzZSBCcmlja1xNYXRoXFJvdW5kaW5nTW9kZTsKCi8qKgogKiBQZXJmb3JtcyBiYXNpYyBvcGVyYXRpb25zIG9uIGFyYml0cmFyeSBzaXplIGludGVnZXJzLgogKgogKiBVbmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCwgYWxsIHBhcmFtZXRlcnMgbXVzdCBiZSB2YWxpZGF0ZWQgYXMgbm9uLWVtcHR5IHN0cmluZ3Mgb2YgZGlnaXRzLAogKiB3aXRob3V0IGxlYWRpbmcgemVybywgYW5kIHdpdGggYW4gb3B0aW9uYWwgbGVhZGluZyBtaW51cyBzaWduIGlmIHRoZSBudW1iZXIgaXMgbm90IHplcm8uCiAqCiAqIEFueSBvdGhlciBwYXJhbWV0ZXIgZm9ybWF0IHdpbGwgbGVhZCB0byB1bmRlZmluZWQgYmVoYXZpb3VyLgogKiBBbGwgbWV0aG9kcyBtdXN0IHJldHVybiBzdHJpbmdzIHJlc3BlY3RpbmcgdGhpcyBmb3JtYXQsIHVubGVzcyBzcGVjaWZpZWQgb3RoZXJ3aXNlLgogKgogKiBAaW50ZXJuYWwKICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KYWJzdHJhY3QgY2xhc3MgQ2FsY3VsYXRvcgp7CiAgICAvKioKICAgICAqIFRoZSBtYXhpbXVtIGV4cG9uZW50IHZhbHVlIGFsbG93ZWQgZm9yIHRoZSBwb3coKSBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBNQVhfUE9XRVIgPSAxMDAwMDAwOwoKICAgIC8qKgogICAgICogVGhlIGFscGhhYmV0IGZvciBjb252ZXJ0aW5nIGZyb20gYW5kIHRvIGJhc2UgMiB0byAzNiwgbG93ZXJjYXNlLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQUxQSEFCRVQgPSAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JzsKCiAgICAvKioKICAgICAqIFRoZSBDYWxjdWxhdG9yIGluc3RhbmNlIGluIHVzZS4KICAgICAqCiAgICAgKiBAdmFyIENhbGN1bGF0b3J8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkaW5zdGFuY2U7CgogICAgLyoqCiAgICAgKiBTZXRzIHRoZSBDYWxjdWxhdG9yIGluc3RhbmNlIHRvIHVzZS4KICAgICAqCiAgICAgKiBBbiBpbnN0YW5jZSBpcyB0eXBpY2FsbHkgc2V0IG9ubHkgaW4gdW5pdCB0ZXN0czogdGhlIGF1dG9kZXRlY3QgaXMgdXN1YWxseSB0aGUgYmVzdCBvcHRpb24uCiAgICAgKgogICAgICogQHBhcmFtIENhbGN1bGF0b3J8bnVsbCAkY2FsY3VsYXRvciBUaGUgY2FsY3VsYXRvciBpbnN0YW5jZSwgb3IgTlVMTCB0byByZXZlcnQgdG8gYXV0b2RldGVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgZmluYWwgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXQoP0NhbGN1bGF0b3IgJGNhbGN1bGF0b3IpIDogdm9pZAogICAgewogICAgICAgIHNlbGY6OiRpbnN0YW5jZSA9ICRjYWxjdWxhdG9yOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgQ2FsY3VsYXRvciBpbnN0YW5jZSB0byB1c2UuCiAgICAgKgogICAgICogSWYgbm9uZSBoYXMgYmVlbiBleHBsaWNpdGx5IHNldCwgdGhlIGZhc3Rlc3QgYXZhaWxhYmxlIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgcmV0dXJuZWQuCiAgICAgKgogICAgICogQHJldHVybiBDYWxjdWxhdG9yCiAgICAgKgogICAgICogQHBzYWxtLXB1cmUKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVTdGF0aWNQcm9wZXJ0eQogICAgICovCiAgICBmaW5hbCBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldCgpIDogQ2FsY3VsYXRvcgogICAgewogICAgICAgIGlmIChzZWxmOjokaW5zdGFuY2UgPT09IG51bGwpIHsKICAgICAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBJbXB1cmVNZXRob2RDYWxsICovCiAgICAgICAgICAgIHNlbGY6OiRpbnN0YW5jZSA9IHNlbGY6OmRldGVjdCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OiRpbnN0YW5jZTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGZhc3Rlc3QgYXZhaWxhYmxlIENhbGN1bGF0b3IgaW1wbGVtZW50YXRpb24uCiAgICAgKgogICAgICogQGNvZGVDb3ZlcmFnZUlnbm9yZQogICAgICoKICAgICAqIEByZXR1cm4gQ2FsY3VsYXRvcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBkZXRlY3QoKSA6IENhbGN1bGF0b3IKICAgIHsKICAgICAgICBpZiAoXGV4dGVuc2lvbl9sb2FkZWQoJ2dtcCcpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsY3VsYXRvclxHbXBDYWxjdWxhdG9yKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGV4dGVuc2lvbl9sb2FkZWQoJ2JjbWF0aCcpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgQ2FsY3VsYXRvclxCY01hdGhDYWxjdWxhdG9yKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IENhbGN1bGF0b3JcTmF0aXZlQ2FsY3VsYXRvcigpOwogICAgfQoKICAgIC8qKgogICAgICogRXh0cmFjdHMgdGhlIHNpZ24gJiBkaWdpdHMgb2YgdGhlIG9wZXJhbmRzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG9wZXJhbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBzZWNvbmQgb3BlcmFuZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5e2Jvb2wsIGJvb2wsIHN0cmluZywgc3RyaW5nfSBXaGV0aGVyICRhIGFuZCAkYiBhcmUgbmVnYXRpdmUsIGZvbGxvd2VkIGJ5IHRoZWlyIGRpZ2l0cy4KICAgICAqLwogICAgZmluYWwgcHJvdGVjdGVkIGZ1bmN0aW9uIGluaXQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAkYU5lZyA9ICgkYVswXSA9PT0gJy0nKSwKICAgICAgICAgICAgJGJOZWcgPSAoJGJbMF0gPT09ICctJyksCgogICAgICAgICAgICAkYU5lZyA/IFxzdWJzdHIoJGEsIDEpIDogJGEsCiAgICAgICAgICAgICRiTmVnID8gXHN1YnN0cigkYiwgMSkgOiAkYiwKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgYSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbiBUaGUgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBhYnNvbHV0ZSB2YWx1ZS4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGFicyhzdHJpbmcgJG4pIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICgkblswXSA9PT0gJy0nKSA/IFxzdWJzdHIoJG4sIDEpIDogJG47CiAgICB9CgogICAgLyoqCiAgICAgKiBOZWdhdGVzIGEgbnVtYmVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG4gVGhlIG51bWJlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgbmVnYXRlZCB2YWx1ZS4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIG5lZyhzdHJpbmcgJG4pIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRuID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgIGlmICgkblswXSA9PT0gJy0nKSB7CiAgICAgICAgICAgIHJldHVybiBcc3Vic3RyKCRuLCAxKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnLScgLiAkbjsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG51bWJlci4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBpbnQgWy0xLCAwLCAxXSBJZiB0aGUgZmlyc3QgbnVtYmVyIGlzIGxlc3MgdGhhbiwgZXF1YWwgdG8sIG9yIGdyZWF0ZXIgdGhhbiB0aGUgc2Vjb25kIG51bWJlci4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGNtcChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBpbnQKICAgIHsKICAgICAgICBbJGFOZWcsICRiTmVnLCAkYURpZywgJGJEaWddID0gJHRoaXMtPmluaXQoJGEsICRiKTsKCiAgICAgICAgaWYgKCRhTmVnICYmICEgJGJOZWcpIHsKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiTmVnICYmICEgJGFOZWcpIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQoKICAgICAgICAkYUxlbiA9IFxzdHJsZW4oJGFEaWcpOwogICAgICAgICRiTGVuID0gXHN0cmxlbigkYkRpZyk7CgogICAgICAgIGlmICgkYUxlbiA8ICRiTGVuKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAtMTsKICAgICAgICB9IGVsc2VpZiAoJGFMZW4gPiAkYkxlbikgewogICAgICAgICAgICAkcmVzdWx0ID0gMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVzdWx0ID0gJGFEaWcgPD0+ICRiRGlnOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhTmVnID8gLSRyZXN1bHQgOiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBhdWdlbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBhZGRlbmQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIHN1bS4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGFkZChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdHMgdHdvIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgbWludWVuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHN1YnRyYWhlbmQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGRpZmZlcmVuY2UuCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBzdWIoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nOwoKICAgIC8qKgogICAgICogTXVsdGlwbGllcyB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBtdWx0aXBsaWNhbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBtdWx0aXBsaWVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBwcm9kdWN0LgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gbXVsKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHF1b3RpZW50IG9mIHRoZSBkaXZpc2lvbiBvZiB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBkaXZpZGVuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIGRpdmlzb3IsIG11c3Qgbm90IGJlIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIHF1b3RpZW50LgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZGl2UShzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIG9mIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGRpdmlkZW5kLgogICAgICogQHBhcmFtIHN0cmluZyAkYiBUaGUgZGl2aXNvciwgbXVzdCBub3QgYmUgemVyby4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgcmVtYWluZGVyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBxdW90aWVudCBhbmQgcmVtYWluZGVyIG9mIHRoZSBkaXZpc2lvbiBvZiB0d28gbnVtYmVycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBkaXZpZGVuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIGRpdmlzb3IsIG11c3Qgbm90IGJlIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXSBBbiBhcnJheSBjb250YWluaW5nIHRoZSBxdW90aWVudCBhbmQgcmVtYWluZGVyLgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZGl2UVIoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogYXJyYXk7CgogICAgLyoqCiAgICAgKiBFeHBvbmVudGlhdGVzIGEgbnVtYmVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGJhc2UgbnVtYmVyLgogICAgICogQHBhcmFtIGludCAgICAkZSBUaGUgZXhwb25lbnQsIHZhbGlkYXRlZCBhcyBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgTUFYX1BPV0VSLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBwb3dlci4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHBvdyhzdHJpbmcgJGEsIGludCAkZSkgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBtb2R1bHVzOyBtdXN0IG5vdCBiZSB6ZXJvLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2Qoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZSKCR0aGlzLT5hZGQoJHRoaXMtPmRpdlIoJGEsICRiKSwgJGIpLCAkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBtb2R1bGFyIG11bHRpcGxpY2F0aXZlIGludmVyc2Ugb2YgJHggbW9kdWxvICRtLgogICAgICoKICAgICAqIElmICR4IGhhcyBubyBtdWx0aXBsaWNhdGl2ZSBpbnZlcnNlIG1vZCBtLCB0aGlzIG1ldGhvZCBtdXN0IHJldHVybiBudWxsLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHgKICAgICAqIEBwYXJhbSBzdHJpbmcgJG0gVGhlIG1vZHVsdXM7IG11c3Qgbm90IGJlIG5lZ2F0aXZlIG9yIHplcm8uCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kSW52ZXJzZShzdHJpbmcgJHgsIHN0cmluZyAkbSkgOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRtID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgICRtb2RWYWwgPSAkeDsKCiAgICAgICAgaWYgKCR4WzBdID09PSAnLScgfHwgKCR0aGlzLT5jbXAoJHRoaXMtPmFicygkeCksICRtKSA+PSAwKSkgewogICAgICAgICAgICAkbW9kVmFsID0gJHRoaXMtPm1vZCgkeCwgJG0pOwogICAgICAgIH0KCiAgICAgICAgJHggPSAnMCc7CiAgICAgICAgJHkgPSAnMCc7CiAgICAgICAgJGcgPSAkdGhpcy0+Z2NkRXh0ZW5kZWQoJG1vZFZhbCwgJG0sICR4LCAkeSk7CgogICAgICAgIGlmICgkZyAhPT0gJzEnKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2QoJHRoaXMtPmFkZCgkdGhpcy0+bW9kKCR4LCAkbSksICRtKSwgJG0pOwogICAgfQoKICAgIC8qKgogICAgICogUmFpc2VzIGEgbnVtYmVyIGludG8gcG93ZXIgd2l0aCBtb2R1bG8uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYmFzZSBUaGUgYmFzZSBudW1iZXI7IG11c3QgYmUgcG9zaXRpdmUgb3IgemVyby4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGV4cCAgVGhlIGV4cG9uZW50OyBtdXN0IGJlIHBvc2l0aXZlIG9yIHplcm8uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2QgIFRoZSBtb2R1bHVzOyBtdXN0IGJlIHN0cmljdGx5IHBvc2l0aXZlLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBwb3dlci4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIG1vZFBvdyhzdHJpbmcgJGJhc2UsIHN0cmluZyAkZXhwLCBzdHJpbmcgJG1vZCkgOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBncmVhdGVzdCBjb21tb24gZGl2aXNvciBvZiB0aGUgdHdvIG51bWJlcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIGlmIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkKICAgICAqIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBHQ0QgY2FsY3VsYXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG51bWJlci4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIEdDRCwgYWx3YXlzIHBvc2l0aXZlLCBvciB6ZXJvIGlmIGJvdGggYXJndW1lbnRzIGFyZSB6ZXJvLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2NkKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkYSA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWJzKCRiKTsKICAgICAgICB9CgogICAgICAgIGlmICgkYiA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWJzKCRhKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Z2NkKCRiLCAkdGhpcy0+ZGl2UigkYSwgJGIpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdjZEV4dGVuZGVkKHN0cmluZyAkYSwgc3RyaW5nICRiLCBzdHJpbmcgJiR4LCBzdHJpbmcgJiR5KSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkYSA9PT0gJzAnKSB7CiAgICAgICAgICAgICR4ID0gJzAnOwogICAgICAgICAgICAkeSA9ICcxJzsKCiAgICAgICAgICAgIHJldHVybiAkYjsKICAgICAgICB9CgogICAgICAgICR4MSA9ICcwJzsKICAgICAgICAkeTEgPSAnMCc7CgogICAgICAgICRnY2QgPSAkdGhpcy0+Z2NkRXh0ZW5kZWQoJHRoaXMtPm1vZCgkYiwgJGEpLCAkYSwgJHgxLCAkeTEpOwoKICAgICAgICAkeCA9ICR0aGlzLT5zdWIoJHkxLCAkdGhpcy0+bXVsKCR0aGlzLT5kaXZRKCRiLCAkYSksICR4MSkpOwogICAgICAgICR5ID0gJHgxOwoKICAgICAgICByZXR1cm4gJGdjZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNxdWFyZSByb290IG9mIHRoZSBnaXZlbiBudW1iZXIsIHJvdW5kZWQgZG93bi4KICAgICAqCiAgICAgKiBUaGUgcmVzdWx0IGlzIHRoZSBsYXJnZXN0IHggc3VjaCB0aGF0IHjCsiDiiaQgbi4KICAgICAqIFRoZSBpbnB1dCBNVVNUIE5PVCBiZSBuZWdhdGl2ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuIFRoZSBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIHNxdWFyZSByb290LgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gc3FydChzdHJpbmcgJG4pIDogc3RyaW5nOwoKICAgIC8qKgogICAgICogQ29udmVydHMgYSBudW1iZXIgZnJvbSBhbiBhcmJpdHJhcnkgYmFzZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaWYgdGhlIHVuZGVybHlpbmcgbGlicmFyeQogICAgICogaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGJhc2UgY29udmVyc2lvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRudW1iZXIgVGhlIG51bWJlciwgcG9zaXRpdmUgb3IgemVybywgbm9uLWVtcHR5LCBjYXNlLWluc2Vuc2l0aXZlbHkgdmFsaWRhdGVkIGZvciB0aGUgZ2l2ZW4gYmFzZS4KICAgICAqIEBwYXJhbSBpbnQgICAgJGJhc2UgICBUaGUgYmFzZSBvZiB0aGUgbnVtYmVyLCB2YWxpZGF0ZWQgZnJvbSAyIHRvIDM2LgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBjb252ZXJ0ZWQgbnVtYmVyLCBmb2xsb3dpbmcgdGhlIENhbGN1bGF0b3IgY29udmVudGlvbnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmcm9tQmFzZShzdHJpbmcgJG51bWJlciwgaW50ICRiYXNlKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZnJvbUFyYml0cmFyeUJhc2UoXHN0cnRvbG93ZXIoJG51bWJlciksIHNlbGY6OkFMUEhBQkVULCAkYmFzZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIG51bWJlciB0byBhbiBhcmJpdHJhcnkgYmFzZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgY29uY3JldGUgaW1wbGVtZW50YXRpb24gaWYgdGhlIHVuZGVybHlpbmcgbGlicmFyeQogICAgICogaGFzIGJ1aWx0LWluIHN1cHBvcnQgZm9yIGJhc2UgY29udmVyc2lvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRudW1iZXIgVGhlIG51bWJlciB0byBjb252ZXJ0LCBmb2xsb3dpbmcgdGhlIENhbGN1bGF0b3IgY29udmVudGlvbnMuCiAgICAgKiBAcGFyYW0gaW50ICAgICRiYXNlICAgVGhlIGJhc2UgdG8gY29udmVydCB0bywgdmFsaWRhdGVkIGZyb20gMiB0byAzNi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgY29udmVydGVkIG51bWJlciwgbG93ZXJjYXNlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CYXNlKHN0cmluZyAkbnVtYmVyLCBpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJG5lZ2F0aXZlID0gKCRudW1iZXJbMF0gPT09ICctJyk7CgogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgJG51bWJlciA9IFxzdWJzdHIoJG51bWJlciwgMSk7CiAgICAgICAgfQoKICAgICAgICAkbnVtYmVyID0gJHRoaXMtPnRvQXJiaXRyYXJ5QmFzZSgkbnVtYmVyLCBzZWxmOjpBTFBIQUJFVCwgJGJhc2UpOwoKICAgICAgICBpZiAoJG5lZ2F0aXZlKSB7CiAgICAgICAgICAgIHJldHVybiAnLScgLiAkbnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRudW1iZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIG5vbi1uZWdhdGl2ZSBudW1iZXIgaW4gYW4gYXJiaXRyYXJ5IGJhc2UgdXNpbmcgYSBjdXN0b20gYWxwaGFiZXQsIHRvIGJhc2UgMTAuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyICAgVGhlIG51bWJlciB0byBjb252ZXJ0LCB2YWxpZGF0ZWQgYXMgYSBub24tZW1wdHkgc3RyaW5nLAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmluZyBvbmx5IGNoYXJzIGluIHRoZSBnaXZlbiBhbHBoYWJldC9iYXNlLgogICAgICogQHBhcmFtIHN0cmluZyAkYWxwaGFiZXQgVGhlIGFscGhhYmV0IHRoYXQgY29udGFpbnMgZXZlcnkgZGlnaXQsIHZhbGlkYXRlZCBhcyAyIGNoYXJzIG1pbmltdW0uCiAgICAgKiBAcGFyYW0gaW50ICAgICRiYXNlICAgICBUaGUgYmFzZSBvZiB0aGUgbnVtYmVyLCB2YWxpZGF0ZWQgZnJvbSAyIHRvIGFscGhhYmV0IGxlbmd0aC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgbnVtYmVyIGluIGJhc2UgMTAsIGZvbGxvd2luZyB0aGUgQ2FsY3VsYXRvciBjb252ZW50aW9ucy4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGZyb21BcmJpdHJhcnlCYXNlKHN0cmluZyAkbnVtYmVyLCBzdHJpbmcgJGFscGhhYmV0LCBpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gcmVtb3ZlIGxlYWRpbmcgInplcm9zIgogICAgICAgICRudW1iZXIgPSBcbHRyaW0oJG51bWJlciwgJGFscGhhYmV0WzBdKTsKCiAgICAgICAgaWYgKCRudW1iZXIgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAnMCc7CiAgICAgICAgfQoKICAgICAgICAvLyBvcHRpbWl6ZSBmb3IgIm9uZSIKICAgICAgICBpZiAoJG51bWJlciA9PT0gJGFscGhhYmV0WzFdKSB7CiAgICAgICAgICAgIHJldHVybiAnMSc7CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJzAnOwogICAgICAgICRwb3dlciA9ICcxJzsKCiAgICAgICAgJGJhc2UgPSAoc3RyaW5nKSAkYmFzZTsKCiAgICAgICAgZm9yICgkaSA9IFxzdHJsZW4oJG51bWJlcikgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgICRpbmRleCA9IFxzdHJwb3MoJGFscGhhYmV0LCAkbnVtYmVyWyRpXSk7CgogICAgICAgICAgICBpZiAoJGluZGV4ICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmFkZCgkcmVzdWx0LCAoJGluZGV4ID09PSAxKQogICAgICAgICAgICAgICAgICAgID8gJHBvd2VyCiAgICAgICAgICAgICAgICAgICAgOiAkdGhpcy0+bXVsKCRwb3dlciwgKHN0cmluZykgJGluZGV4KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcG93ZXIgPSAkdGhpcy0+bXVsKCRwb3dlciwgJGJhc2UpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgbm9uLW5lZ2F0aXZlIG51bWJlciB0byBhbiBhcmJpdHJhcnkgYmFzZSB1c2luZyBhIGN1c3RvbSBhbHBoYWJldC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRudW1iZXIgICBUaGUgbnVtYmVyIHRvIGNvbnZlcnQsIHBvc2l0aXZlIG9yIHplcm8sIGZvbGxvd2luZyB0aGUgQ2FsY3VsYXRvciBjb252ZW50aW9ucy4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGFscGhhYmV0IFRoZSBhbHBoYWJldCB0aGF0IGNvbnRhaW5zIGV2ZXJ5IGRpZ2l0LCB2YWxpZGF0ZWQgYXMgMiBjaGFycyBtaW5pbXVtLgogICAgICogQHBhcmFtIGludCAgICAkYmFzZSAgICAgVGhlIGJhc2UgdG8gY29udmVydCB0bywgdmFsaWRhdGVkIGZyb20gMiB0byBhbHBoYWJldCBsZW5ndGguCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgVGhlIGNvbnZlcnRlZCBudW1iZXIgaW4gdGhlIGdpdmVuIGFscGhhYmV0LgogICAgICovCiAgICBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gdG9BcmJpdHJhcnlCYXNlKHN0cmluZyAkbnVtYmVyLCBzdHJpbmcgJGFscGhhYmV0LCBpbnQgJGJhc2UpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRudW1iZXIgPT09ICcwJykgewogICAgICAgICAgICByZXR1cm4gJGFscGhhYmV0WzBdOwogICAgICAgIH0KCiAgICAgICAgJGJhc2UgPSAoc3RyaW5nKSAkYmFzZTsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgIHdoaWxlICgkbnVtYmVyICE9PSAnMCcpIHsKICAgICAgICAgICAgWyRudW1iZXIsICRyZW1haW5kZXJdID0gJHRoaXMtPmRpdlFSKCRudW1iZXIsICRiYXNlKTsKICAgICAgICAgICAgJHJlbWFpbmRlciA9IChpbnQpICRyZW1haW5kZXI7CgogICAgICAgICAgICAkcmVzdWx0IC49ICRhbHBoYWJldFskcmVtYWluZGVyXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RycmV2KCRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUGVyZm9ybXMgYSByb3VuZGVkIGRpdmlzaW9uLgogICAgICoKICAgICAqIFJvdW5kaW5nIGlzIHBlcmZvcm1lZCB3aGVuIHRoZSByZW1haW5kZXIgb2YgdGhlIGRpdmlzaW9uIGlzIG5vdCB6ZXJvLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgICAgICAgICAgICBUaGUgZGl2aWRlbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiICAgICAgICAgICAgVGhlIGRpdmlzb3IsIG11c3Qgbm90IGJlIHplcm8uCiAgICAgKiBAcGFyYW0gaW50ICAgICRyb3VuZGluZ01vZGUgVGhlIHJvdW5kaW5nIG1vZGUuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gIElmIHRoZSByb3VuZGluZyBtb2RlIGlzIGludmFsaWQuCiAgICAgKiBAdGhyb3dzIFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uIElmIFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlkgaXMgcHJvdmlkZWQgYnV0IHJvdW5kaW5nIGlzIG5lY2Vzc2FyeS4KICAgICAqLwogICAgZmluYWwgcHVibGljIGZ1bmN0aW9uIGRpdlJvdW5kKHN0cmluZyAkYSwgc3RyaW5nICRiLCBpbnQgJHJvdW5kaW5nTW9kZSkgOiBzdHJpbmcKICAgIHsKICAgICAgICBbJHF1b3RpZW50LCAkcmVtYWluZGVyXSA9ICR0aGlzLT5kaXZRUigkYSwgJGIpOwoKICAgICAgICAkaGFzRGlzY2FyZGVkRnJhY3Rpb24gPSAoJHJlbWFpbmRlciAhPT0gJzAnKTsKICAgICAgICAkaXNQb3NpdGl2ZU9yWmVybyA9ICgkYVswXSA9PT0gJy0nKSA9PT0gKCRiWzBdID09PSAnLScpOwoKICAgICAgICAkZGlzY2FyZGVkRnJhY3Rpb25TaWduID0gZnVuY3Rpb24oKSB1c2UgKCRyZW1haW5kZXIsICRiKSA6IGludCB7CiAgICAgICAgICAgICRyID0gJHRoaXMtPmFicygkdGhpcy0+bXVsKCRyZW1haW5kZXIsICcyJykpOwogICAgICAgICAgICAkYiA9ICR0aGlzLT5hYnMoJGIpOwoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jbXAoJHIsICRiKTsKICAgICAgICB9OwoKICAgICAgICAkaW5jcmVtZW50ID0gZmFsc2U7CgogICAgICAgIHN3aXRjaCAoJHJvdW5kaW5nTW9kZSkgewogICAgICAgICAgICBjYXNlIFJvdW5kaW5nTW9kZTo6VU5ORUNFU1NBUlk6CiAgICAgICAgICAgICAgICBpZiAoJGhhc0Rpc2NhcmRlZEZyYWN0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUm91bmRpbmdOZWNlc3NhcnlFeGNlcHRpb246OnJvdW5kaW5nTmVjZXNzYXJ5KCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpVUDoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaGFzRGlzY2FyZGVkRnJhY3Rpb247CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpET1dOOgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFJvdW5kaW5nTW9kZTo6Q0VJTElORzoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaGFzRGlzY2FyZGVkRnJhY3Rpb24gJiYgJGlzUG9zaXRpdmVPclplcm87CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpGTE9PUjoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaGFzRGlzY2FyZGVkRnJhY3Rpb24gJiYgISAkaXNQb3NpdGl2ZU9yWmVybzsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhBTEZfVVA6CiAgICAgICAgICAgICAgICAkaW5jcmVtZW50ID0gJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID49IDA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIQUxGX0RPV046CiAgICAgICAgICAgICAgICAkaW5jcmVtZW50ID0gJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID4gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhBTEZfQ0VJTElORzoKICAgICAgICAgICAgICAgICRpbmNyZW1lbnQgPSAkaXNQb3NpdGl2ZU9yWmVybyA/ICRkaXNjYXJkZWRGcmFjdGlvblNpZ24oKSA+PSAwIDogJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID4gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSBSb3VuZGluZ01vZGU6OkhBTEZfRkxPT1I6CiAgICAgICAgICAgICAgICAkaW5jcmVtZW50ID0gJGlzUG9zaXRpdmVPclplcm8gPyAkZGlzY2FyZGVkRnJhY3Rpb25TaWduKCkgPiAwIDogJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID49IDA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgUm91bmRpbmdNb2RlOjpIQUxGX0VWRU46CiAgICAgICAgICAgICAgICAkbGFzdERpZ2l0ID0gKGludCkgJHF1b3RpZW50Wy0xXTsKICAgICAgICAgICAgICAgICRsYXN0RGlnaXRJc0V2ZW4gPSAoJGxhc3REaWdpdCAlIDIgPT09IDApOwogICAgICAgICAgICAgICAgJGluY3JlbWVudCA9ICRsYXN0RGlnaXRJc0V2ZW4gPyAkZGlzY2FyZGVkRnJhY3Rpb25TaWduKCkgPiAwIDogJGRpc2NhcmRlZEZyYWN0aW9uU2lnbigpID49IDA7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByb3VuZGluZyBtb2RlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRpbmNyZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5hZGQoJHF1b3RpZW50LCAkaXNQb3NpdGl2ZU9yWmVybyA/ICcxJyA6ICctMScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRxdW90aWVudDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGN1bGF0ZXMgYml0d2lzZSBBTkQgb2YgdHdvIG51bWJlcnMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIGlmIHRoZSB1bmRlcmx5aW5nIGxpYnJhcnkKICAgICAqIGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciBiaXR3aXNlIG9wZXJhdGlvbnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYQogICAgICogQHBhcmFtIHN0cmluZyAkYgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbmQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iaXR3aXNlKCdhbmQnLCAkYSwgJGIpOwogICAgfQoKICAgIC8qKgogICAgICogQ2FsY3VsYXRlcyBiaXR3aXNlIE9SIG9mIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5CiAgICAgKiBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgYml0d2lzZSBvcGVyYXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEKICAgICAqIEBwYXJhbSBzdHJpbmcgJGIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb3Ioc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iaXR3aXNlKCdvcicsICRhLCAkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxjdWxhdGVzIGJpdHdpc2UgWE9SIG9mIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBpZiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5CiAgICAgKiBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgYml0d2lzZSBvcGVyYXRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEKICAgICAqIEBwYXJhbSBzdHJpbmcgJGIKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24geG9yKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Yml0d2lzZSgneG9yJywgJGEsICRiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBlcmZvcm1zIGEgYml0d2lzZSBvcGVyYXRpb24gb24gYSBkZWNpbWFsIG51bWJlci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvcGVyYXRvciBUaGUgb3BlcmF0b3IgdG8gdXNlLCBtdXN0IGJlICJhbmQiLCAib3IiIG9yICJ4b3IiLgogICAgICogQHBhcmFtIHN0cmluZyAkYSAgICAgICAgVGhlIGxlZnQgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgICAgICAgIFRoZSByaWdodCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYml0d2lzZShzdHJpbmcgJG9wZXJhdG9yLCBzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICBbJGFOZWcsICRiTmVnLCAkYURpZywgJGJEaWddID0gJHRoaXMtPmluaXQoJGEsICRiKTsKCiAgICAgICAgJGFCaW4gPSAkdGhpcy0+dG9CaW5hcnkoJGFEaWcpOwogICAgICAgICRiQmluID0gJHRoaXMtPnRvQmluYXJ5KCRiRGlnKTsKCiAgICAgICAgJGFMZW4gPSBcc3RybGVuKCRhQmluKTsKICAgICAgICAkYkxlbiA9IFxzdHJsZW4oJGJCaW4pOwoKICAgICAgICBpZiAoJGFMZW4gPiAkYkxlbikgewogICAgICAgICAgICAkYkJpbiA9IFxzdHJfcmVwZWF0KCJceDAwIiwgJGFMZW4gLSAkYkxlbikgLiAkYkJpbjsKICAgICAgICB9IGVsc2VpZiAoJGJMZW4gPiAkYUxlbikgewogICAgICAgICAgICAkYUJpbiA9IFxzdHJfcmVwZWF0KCJceDAwIiwgJGJMZW4gLSAkYUxlbikgLiAkYUJpbjsKICAgICAgICB9CgogICAgICAgIGlmICgkYU5lZykgewogICAgICAgICAgICAkYUJpbiA9ICR0aGlzLT50d29zQ29tcGxlbWVudCgkYUJpbik7CiAgICAgICAgfQogICAgICAgIGlmICgkYk5lZykgewogICAgICAgICAgICAkYkJpbiA9ICR0aGlzLT50d29zQ29tcGxlbWVudCgkYkJpbik7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRvcGVyYXRvcikgewogICAgICAgICAgICBjYXNlICdhbmQnOgogICAgICAgICAgICAgICAgJHZhbHVlID0gJGFCaW4gJiAkYkJpbjsKICAgICAgICAgICAgICAgICRuZWdhdGl2ZSA9ICgkYU5lZyBhbmQgJGJOZWcpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdvcic6CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkYUJpbiB8ICRiQmluOwogICAgICAgICAgICAgICAgJG5lZ2F0aXZlID0gKCRhTmVnIG9yICRiTmVnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAneG9yJzoKICAgICAgICAgICAgICAgICR2YWx1ZSA9ICRhQmluIF4gJGJCaW47CiAgICAgICAgICAgICAgICAkbmVnYXRpdmUgPSAoJGFOZWcgeG9yICRiTmVnKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgLy8gQGNvZGVDb3ZlcmFnZUlnbm9yZVN0YXJ0CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBiaXR3aXNlIG9wZXJhdG9yLicpOwogICAgICAgICAgICAvLyBAY29kZUNvdmVyYWdlSWdub3JlRW5kCiAgICAgICAgfQoKICAgICAgICBpZiAoJG5lZ2F0aXZlKSB7CiAgICAgICAgICAgICR2YWx1ZSA9ICR0aGlzLT50d29zQ29tcGxlbWVudCgkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT50b0RlY2ltYWwoJHZhbHVlKTsKCiAgICAgICAgcmV0dXJuICRuZWdhdGl2ZSA/ICR0aGlzLT5uZWcoJHJlc3VsdCkgOiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkbnVtYmVyIEEgcG9zaXRpdmUsIGJpbmFyeSBudW1iZXIuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0d29zQ29tcGxlbWVudChzdHJpbmcgJG51bWJlcikgOiBzdHJpbmcKICAgIHsKICAgICAgICAkeG9yID0gXHN0cl9yZXBlYXQoIlx4ZmYiLCBcc3RybGVuKCRudW1iZXIpKTsKCiAgICAgICAgJG51bWJlciBePSAkeG9yOwoKICAgICAgICBmb3IgKCRpID0gXHN0cmxlbigkbnVtYmVyKSAtIDE7ICRpID49IDA7ICRpLS0pIHsKICAgICAgICAgICAgJGJ5dGUgPSBcb3JkKCRudW1iZXJbJGldKTsKCiAgICAgICAgICAgIGlmICgrKyRieXRlICE9PSAyNTYpIHsKICAgICAgICAgICAgICAgICRudW1iZXJbJGldID0gXGNocigkYnl0ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJG51bWJlclskaV0gPSAiXHgwMCI7CgogICAgICAgICAgICBpZiAoJGkgPT09IDApIHsKICAgICAgICAgICAgICAgICRudW1iZXIgPSAiXHgwMSIgLiAkbnVtYmVyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgZGVjaW1hbCBudW1iZXIgdG8gYSBiaW5hcnkgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG51bWJlciBUaGUgbnVtYmVyIHRvIGNvbnZlcnQsIHBvc2l0aXZlIG9yIHplcm8sIG9ubHkgZGlnaXRzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdG9CaW5hcnkoc3RyaW5nICRudW1iZXIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICcnOwoKICAgICAgICB3aGlsZSAoJG51bWJlciAhPT0gJzAnKSB7CiAgICAgICAgICAgIFskbnVtYmVyLCAkcmVtYWluZGVyXSA9ICR0aGlzLT5kaXZRUigkbnVtYmVyLCAnMjU2Jyk7CiAgICAgICAgICAgICRyZXN1bHQgLj0gXGNocigoaW50KSAkcmVtYWluZGVyKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RycmV2KCRyZXN1bHQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcG9zaXRpdmUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiBhIGJpbmFyeSBudW1iZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYnl0ZXMgVGhlIGJ5dGVzIHJlcHJlc2VudGluZyB0aGUgbnVtYmVyLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdG9EZWNpbWFsKHN0cmluZyAkYnl0ZXMpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9ICcwJzsKICAgICAgICAkcG93ZXIgPSAnMSc7CgogICAgICAgIGZvciAoJGkgPSBcc3RybGVuKCRieXRlcykgLSAxOyAkaSA+PSAwOyAkaS0tKSB7CiAgICAgICAgICAgICRpbmRleCA9IFxvcmQoJGJ5dGVzWyRpXSk7CgogICAgICAgICAgICBpZiAoJGluZGV4ICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmFkZCgkcmVzdWx0LCAoJGluZGV4ID09PSAxKQogICAgICAgICAgICAgICAgICAgID8gJHBvd2VyCiAgICAgICAgICAgICAgICAgICAgOiAkdGhpcy0+bXVsKCRwb3dlciwgKHN0cmluZykgJGluZGV4KQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRpICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkcG93ZXIgPSAkdGhpcy0+bXVsKCRwb3dlciwgJzI1NicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/BcMathCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWxcQ2FsY3VsYXRvcjsKCnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQ2FsY3VsYXRvciBpbXBsZW1lbnRhdGlvbiBidWlsdCBhcm91bmQgdGhlIGJjbWF0aCBsaWJyYXJ5LgogKgogKiBAaW50ZXJuYWwKICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KY2xhc3MgQmNNYXRoQ2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3IKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxiY2FkZCgkYSwgJGIsIDApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcYmNzdWIoJGEsICRiLCAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGJjbXVsKCRhLCAkYiwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIEludmFsaWROdWxsYWJsZVJldHVyblR5cGUKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBOdWxsYWJsZVJldHVyblN0YXRlbWVudAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UShzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGJjZGl2KCRhLCAkYiwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIEludmFsaWROdWxsYWJsZVJldHVyblR5cGUKICAgICAqIEBwc2FsbS1zdXBwcmVzcyBOdWxsYWJsZVJldHVyblN0YXRlbWVudAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAodmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNy4yJykgPj0gMCkgewogICAgICAgICAgICByZXR1cm4gXGJjbW9kKCRhLCAkYiwgMCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGJjbW9kKCRhLCAkYik7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZRUihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBhcnJheQogICAgewogICAgICAgICRxID0gXGJjZGl2KCRhLCAkYiwgMCk7CgogICAgICAgIGlmICh2ZXJzaW9uX2NvbXBhcmUoUEhQX1ZFUlNJT04sICc3LjInKSA+PSAwKSB7CiAgICAgICAgICAgICRyID0gXGJjbW9kKCRhLCAkYiwgMCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHIgPSBcYmNtb2QoJGEsICRiKTsKICAgICAgICB9CgogICAgICAgIGFzc2VydCgkcSAhPT0gbnVsbCk7CiAgICAgICAgYXNzZXJ0KCRyICE9PSBudWxsKTsKCiAgICAgICAgcmV0dXJuIFskcSwgJHJdOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG93KHN0cmluZyAkYSwgaW50ICRlKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcYmNwb3coJGEsIChzdHJpbmcpICRlLCAwKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqCiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW52YWxpZE51bGxhYmxlUmV0dXJuVHlwZQogICAgICogQHBzYWxtLXN1cHByZXNzIE51bGxhYmxlUmV0dXJuU3RhdGVtZW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RQb3coc3RyaW5nICRiYXNlLCBzdHJpbmcgJGV4cCwgc3RyaW5nICRtb2QpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxiY3Bvd21vZCgkYmFzZSwgJGV4cCwgJG1vZCwgMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKgogICAgICogQHBzYWxtLXN1cHByZXNzIE51bGxhYmxlUmV0dXJuU3RhdGVtZW50CiAgICAgKiBAcHNhbG0tc3VwcHJlc3MgSW52YWxpZE51bGxhYmxlUmV0dXJuVHlwZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3FydChzdHJpbmcgJG4pIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxiY3NxcnQoJG4sIDApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/GmpCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWxcQ2FsY3VsYXRvcjsKCnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQ2FsY3VsYXRvciBpbXBsZW1lbnRhdGlvbiBidWlsdCBhcm91bmQgdGhlIEdNUCBsaWJyYXJ5LgogKgogKiBAaW50ZXJuYWwKICoKICogQHBzYWxtLWltbXV0YWJsZQogKi8KY2xhc3MgR21wQ2FsY3VsYXRvciBleHRlbmRzIENhbGN1bGF0b3IKewogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxnbXBfc3RydmFsKFxnbXBfYWRkKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3ViKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX3N1YigkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG11bChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9tdWwoJGEsICRiKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXZRKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX2Rpdl9xKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9kaXZfcigkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpdlFSKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IGFycmF5CiAgICB7CiAgICAgICAgWyRxLCAkcl0gPSBcZ21wX2Rpdl9xcigkYSwgJGIpOwoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICBcZ21wX3N0cnZhbCgkcSksCiAgICAgICAgICAgIFxnbXBfc3RydmFsKCRyKQogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3coc3RyaW5nICRhLCBpbnQgJGUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxnbXBfc3RydmFsKFxnbXBfcG93KCRhLCAkZSkpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kSW52ZXJzZShzdHJpbmcgJHgsIHN0cmluZyAkbSkgOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IFxnbXBfaW52ZXJ0KCR4LCAkbSk7CgogICAgICAgIGlmICgkcmVzdWx0ID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbCgkcmVzdWx0KTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZFBvdyhzdHJpbmcgJGJhc2UsIHN0cmluZyAkZXhwLCBzdHJpbmcgJG1vZCkgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9wb3dtKCRiYXNlLCAkZXhwLCAkbW9kKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnY2Qoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFxnbXBfc3RydmFsKFxnbXBfZ2NkKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZnJvbUJhc2Uoc3RyaW5nICRudW1iZXIsIGludCAkYmFzZSkgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoXGdtcF9pbml0KCRudW1iZXIsICRiYXNlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b0Jhc2Uoc3RyaW5nICRudW1iZXIsIGludCAkYmFzZSkgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gXGdtcF9zdHJ2YWwoJG51bWJlciwgJGJhc2UpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYW5kKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX2FuZCgkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG9yKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX29yKCRhLCAkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24geG9yKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX3hvcigkYSwgJGIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNxcnQoc3RyaW5nICRuKSA6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBcZ21wX3N0cnZhbChcZ21wX3NxcnQoJG4pKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/Internal/Calculator/NativeCalculator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGhcSW50ZXJuYWxcQ2FsY3VsYXRvcjsKCnVzZSBCcmlja1xNYXRoXEludGVybmFsXENhbGN1bGF0b3I7CgovKioKICogQ2FsY3VsYXRvciBpbXBsZW1lbnRhdGlvbiB1c2luZyBvbmx5IG5hdGl2ZSBQSFAgY29kZS4KICoKICogQGludGVybmFsCiAqCiAqIEBwc2FsbS1pbW11dGFibGUKICovCmNsYXNzIE5hdGl2ZUNhbGN1bGF0b3IgZXh0ZW5kcyBDYWxjdWxhdG9yCnsKICAgIC8qKgogICAgICogVGhlIG1heCBudW1iZXIgb2YgZGlnaXRzIHRoZSBwbGF0Zm9ybSBjYW4gbmF0aXZlbHkgYWRkLCBzdWJ0cmFjdCwgbXVsdGlwbHkgb3IgZGl2aWRlIHdpdGhvdXQgb3ZlcmZsb3cuCiAgICAgKiBGb3IgbXVsdGlwbGljYXRpb24sIHRoaXMgcmVwcmVzZW50cyB0aGUgbWF4IHN1bSBvZiB0aGUgbGVuZ3RocyBvZiBib3RoIG9wZXJhbmRzLgogICAgICoKICAgICAqIEZvciBhZGRpdGlvbiwgaXQgaXMgYXNzdW1lZCB0aGF0IGFuIGV4dHJhIGRpZ2l0IGNhbiBob2xkIGEgY2FycnkgKDEpIHdpdGhvdXQgb3ZlcmZsb3dpbmcuCiAgICAgKiBFeGFtcGxlOiAzMi1iaXQ6IG1heCBudW1iZXIgMSw5OTksOTk5LDk5OSAoOSBkaWdpdHMgKyBjYXJyeSkKICAgICAqICAgICAgICAgIDY0LWJpdDogbWF4IG51bWJlciAxLDk5OSw5OTksOTk5LDk5OSw5OTksOTk5ICgxOCBkaWdpdHMgKyBjYXJyeSkKICAgICAqCiAgICAgKiBAdmFyIGludAogICAgICovCiAgICBwcml2YXRlICRtYXhEaWdpdHM7CgogICAgLyoqCiAgICAgKiBDbGFzcyBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAY29kZUNvdmVyYWdlSWdub3JlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgc3dpdGNoIChQSFBfSU5UX1NJWkUpIHsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgJHRoaXMtPm1heERpZ2l0cyA9IDk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgODoKICAgICAgICAgICAgICAgICR0aGlzLT5tYXhEaWdpdHMgPSAxODsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVGhlIHBsYXRmb3JtIGlzIG5vdCAzMi1iaXQgb3IgNjQtYml0IGFzIGV4cGVjdGVkLicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICAvKioKICAgICAgICAgKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRhCiAgICAgICAgICogQHBzYWxtLXZhciBudW1lcmljLXN0cmluZyAkYgogICAgICAgICAqLwogICAgICAgICRyZXN1bHQgPSAkYSArICRiOwoKICAgICAgICBpZiAoaXNfaW50KCRyZXN1bHQpKSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuICRiOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuICRhOwogICAgICAgIH0KCiAgICAgICAgWyRhTmVnLCAkYk5lZywgJGFEaWcsICRiRGlnXSA9ICR0aGlzLT5pbml0KCRhLCAkYik7CgogICAgICAgICRyZXN1bHQgPSAkYU5lZyA9PT0gJGJOZWcgPyAkdGhpcy0+ZG9BZGQoJGFEaWcsICRiRGlnKSA6ICR0aGlzLT5kb1N1YigkYURpZywgJGJEaWcpOwoKICAgICAgICBpZiAoJGFOZWcpIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5uZWcoJHJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFkZCgkYSwgJHRoaXMtPm5lZygkYikpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIC8qKgogICAgICAgICAqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGEKICAgICAgICAgKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRiCiAgICAgICAgICovCiAgICAgICAgJHJlc3VsdCA9ICRhICogJGI7CgogICAgICAgIGlmIChpc19pbnQoJHJlc3VsdCkpIHsKICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICcwJyB8fCAkYiA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAnMCc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJGI7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGIgPT09ICcxJykgewogICAgICAgICAgICByZXR1cm4gJGE7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICctMScpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5uZWcoJGIpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiID09PSAnLTEnKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+bmVnKCRhKTsKICAgICAgICB9CgogICAgICAgIFskYU5lZywgJGJOZWcsICRhRGlnLCAkYkRpZ10gPSAkdGhpcy0+aW5pdCgkYSwgJGIpOwoKICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPmRvTXVsKCRhRGlnLCAkYkRpZyk7CgogICAgICAgIGlmICgkYU5lZyAhPT0gJGJOZWcpIHsKICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5uZWcoJHJlc3VsdCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpdlEoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kaXZRUigkYSwgJGIpWzBdOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2UihzdHJpbmcgJGEsIHN0cmluZyAkYik6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGl2UVIoJGEsICRiKVsxXTsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdGRvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRpdlFSKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCRhID09PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuIFsnMCcsICcwJ107CiAgICAgICAgfQoKICAgICAgICBpZiAoJGEgPT09ICRiKSB7CiAgICAgICAgICAgIHJldHVybiBbJzEnLCAnMCddOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRiID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuIFskYSwgJzAnXTsKICAgICAgICB9CgogICAgICAgIGlmICgkYiA9PT0gJy0xJykgewogICAgICAgICAgICByZXR1cm4gWyR0aGlzLT5uZWcoJGEpLCAnMCddOwogICAgICAgIH0KCiAgICAgICAgLyoqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGEgKi8KICAgICAgICAkbmEgPSAkYSAqIDE7IC8vIGNhc3QgdG8gbnVtYmVyCgogICAgICAgIGlmIChpc19pbnQoJG5hKSkgewogICAgICAgICAgICAvKiogQHBzYWxtLXZhciBudW1lcmljLXN0cmluZyAkYiAqLwogICAgICAgICAgICAkbmIgPSAkYiAqIDE7CgogICAgICAgICAgICBpZiAoaXNfaW50KCRuYikpIHsKICAgICAgICAgICAgICAgIC8vIHRoZSBvbmx5IGRpdmlzaW9uIHRoYXQgbWF5IG92ZXJmbG93IGlzIFBIUF9JTlRfTUlOIC8gLTEsCiAgICAgICAgICAgICAgICAvLyB3aGljaCBjYW5ub3QgaGFwcGVuIGhlcmUgYXMgd2UndmUgYWxyZWFkeSBoYW5kbGVkIGEgZGl2aXNvciBvZiAtMSBhYm92ZS4KICAgICAgICAgICAgICAgICRyID0gJG5hICUgJG5iOwogICAgICAgICAgICAgICAgJHEgPSAoJG5hIC0gJHIpIC8gJG5iOwoKICAgICAgICAgICAgICAgIGFzc2VydChpc19pbnQoJHEpKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgIChzdHJpbmcpICRxLAogICAgICAgICAgICAgICAgICAgIChzdHJpbmcpICRyCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBbJGFOZWcsICRiTmVnLCAkYURpZywgJGJEaWddID0gJHRoaXMtPmluaXQoJGEsICRiKTsKCiAgICAgICAgWyRxLCAkcl0gPSAkdGhpcy0+ZG9EaXYoJGFEaWcsICRiRGlnKTsKCiAgICAgICAgaWYgKCRhTmVnICE9PSAkYk5lZykgewogICAgICAgICAgICAkcSA9ICR0aGlzLT5uZWcoJHEpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRhTmVnKSB7CiAgICAgICAgICAgICRyID0gJHRoaXMtPm5lZygkcik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRxLCAkcl07CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3coc3RyaW5nICRhLCBpbnQgJGUpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRlID09PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAnMSc7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGUgPT09IDEpIHsKICAgICAgICAgICAgcmV0dXJuICRhOwogICAgICAgIH0KCiAgICAgICAgJG9kZCA9ICRlICUgMjsKICAgICAgICAkZSAtPSAkb2RkOwoKICAgICAgICAkYWEgPSAkdGhpcy0+bXVsKCRhLCAkYSk7CgogICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgUG9zc2libHlJbnZhbGlkQXJndW1lbnQgV2UncmUgc3VyZSB0aGF0ICRlIC8gMiBpcyBhbiBpbnQgbm93ICovCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wb3coJGFhLCAkZSAvIDIpOwoKICAgICAgICBpZiAoJG9kZCA9PT0gMSkgewogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPm11bCgkcmVzdWx0LCAkYSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEFsZ29yaXRobSBmcm9tOiBodHRwczovL3d3dy5nZWVrc2ZvcmdlZWtzLm9yZy9tb2R1bGFyLWV4cG9uZW50aWF0aW9uLXBvd2VyLWluLW1vZHVsYXItYXJpdGhtZXRpYy8KICAgICAqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RQb3coc3RyaW5nICRiYXNlLCBzdHJpbmcgJGV4cCwgc3RyaW5nICRtb2QpIDogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiB0aGUgYWxnb3JpdGhtIGJlbG93IGZhaWxzIHdpdGggMCBwb3dlciAwIG1vZCAxIChyZXR1cm5zIDEgaW5zdGVhZCBvZiAwKQogICAgICAgIGlmICgkYmFzZSA9PT0gJzAnICYmICRleHAgPT09ICcwJyAmJiAkbW9kID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgIC8vIHNwZWNpYWwgY2FzZTogdGhlIGFsZ29yaXRobSBiZWxvdyBmYWlscyB3aXRoIHBvd2VyIDAgbW9kIDEgKHJldHVybnMgMSBpbnN0ZWFkIG9mIDApCiAgICAgICAgaWYgKCRleHAgPT09ICcwJyAmJiAkbW9kID09PSAnMScpIHsKICAgICAgICAgICAgcmV0dXJuICcwJzsKICAgICAgICB9CgogICAgICAgICR4ID0gJGJhc2U7CgogICAgICAgICRyZXMgPSAnMSc7CgogICAgICAgIC8vIG51bWJlcnMgYXJlIHBvc2l0aXZlLCBzbyB3ZSBjYW4gdXNlIHJlbWFpbmRlciBpbnN0ZWFkIG9mIG1vZHVsbwogICAgICAgICR4ID0gJHRoaXMtPmRpdlIoJHgsICRtb2QpOwoKICAgICAgICB3aGlsZSAoJGV4cCAhPT0gJzAnKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgkZXhwWy0xXSwgWycxJywgJzMnLCAnNScsICc3JywgJzknXSkpIHsgLy8gb2RkCiAgICAgICAgICAgICAgICAkcmVzID0gJHRoaXMtPmRpdlIoJHRoaXMtPm11bCgkcmVzLCAkeCksICRtb2QpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZXhwID0gJHRoaXMtPmRpdlEoJGV4cCwgJzInKTsKICAgICAgICAgICAgJHggPSAkdGhpcy0+ZGl2UigkdGhpcy0+bXVsKCR4LCAkeCksICRtb2QpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGFwdGVkIGZyb20gaHR0cHM6Ly9jcC1hbGdvcml0aG1zLmNvbS9udW1fbWV0aG9kcy9yb290c19uZXd0b24uaHRtbAogICAgICoKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNxcnQoc3RyaW5nICRuKSA6IHN0cmluZwogICAgewogICAgICAgIGlmICgkbiA9PT0gJzAnKSB7CiAgICAgICAgICAgIHJldHVybiAnMCc7CiAgICAgICAgfQoKICAgICAgICAvLyBpbml0aWFsIGFwcHJveGltYXRpb24KICAgICAgICAkeCA9IFxzdHJfcmVwZWF0KCc5JywgXGludGRpdihcc3RybGVuKCRuKSwgMikgPzogMSk7CgogICAgICAgICRkZWNyZWFzZWQgPSBmYWxzZTsKCiAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAkbnggPSAkdGhpcy0+ZGl2USgkdGhpcy0+YWRkKCR4LCAkdGhpcy0+ZGl2USgkbiwgJHgpKSwgJzInKTsKCiAgICAgICAgICAgIGlmICgkeCA9PT0gJG54IHx8ICR0aGlzLT5jbXAoJG54LCAkeCkgPiAwICYmICRkZWNyZWFzZWQpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZGVjcmVhc2VkID0gJHRoaXMtPmNtcCgkbngsICR4KSA8IDA7CiAgICAgICAgICAgICR4ID0gJG54OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR4OwogICAgfQoKICAgIC8qKgogICAgICogUGVyZm9ybXMgdGhlIGFkZGl0aW9uIG9mIHR3byBub24tc2lnbmVkIGxhcmdlIGludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGEgVGhlIGZpcnN0IG9wZXJhbmQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiIFRoZSBzZWNvbmQgb3BlcmFuZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRvQWRkKHN0cmluZyAkYSwgc3RyaW5nICRiKSA6IHN0cmluZwogICAgewogICAgICAgIFskYSwgJGIsICRsZW5ndGhdID0gJHRoaXMtPnBhZCgkYSwgJGIpOwoKICAgICAgICAkY2FycnkgPSAwOwogICAgICAgICRyZXN1bHQgPSAnJzsKCiAgICAgICAgZm9yICgkaSA9ICRsZW5ndGggLSAkdGhpcy0+bWF4RGlnaXRzOzsgJGkgLT0gJHRoaXMtPm1heERpZ2l0cykgewogICAgICAgICAgICAkYmxvY2tMZW5ndGggPSAkdGhpcy0+bWF4RGlnaXRzOwoKICAgICAgICAgICAgaWYgKCRpIDwgMCkgewogICAgICAgICAgICAgICAgJGJsb2NrTGVuZ3RoICs9ICRpOwogICAgICAgICAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBMb29wSW52YWxpZGF0aW9uICovCiAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRibG9ja0EgKi8KICAgICAgICAgICAgJGJsb2NrQSA9IFxzdWJzdHIoJGEsICRpLCAkYmxvY2tMZW5ndGgpOwoKICAgICAgICAgICAgLyoqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGJsb2NrQiAqLwogICAgICAgICAgICAkYmxvY2tCID0gXHN1YnN0cigkYiwgJGksICRibG9ja0xlbmd0aCk7CgogICAgICAgICAgICAkc3VtID0gKHN0cmluZykgKCRibG9ja0EgKyAkYmxvY2tCICsgJGNhcnJ5KTsKICAgICAgICAgICAgJHN1bUxlbmd0aCA9IFxzdHJsZW4oJHN1bSk7CgogICAgICAgICAgICBpZiAoJHN1bUxlbmd0aCA+ICRibG9ja0xlbmd0aCkgewogICAgICAgICAgICAgICAgJHN1bSA9IFxzdWJzdHIoJHN1bSwgMSk7CiAgICAgICAgICAgICAgICAkY2FycnkgPSAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCRzdW1MZW5ndGggPCAkYmxvY2tMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAkc3VtID0gXHN0cl9yZXBlYXQoJzAnLCAkYmxvY2tMZW5ndGggLSAkc3VtTGVuZ3RoKSAuICRzdW07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkY2FycnkgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0ID0gJHN1bSAuICRyZXN1bHQ7CgogICAgICAgICAgICBpZiAoJGkgPT09IDApIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNhcnJ5ID09PSAxKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAnMScgLiAkcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyB0aGUgc3VidHJhY3Rpb24gb2YgdHdvIG5vbi1zaWduZWQgbGFyZ2UgaW50ZWdlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgZmlyc3Qgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZG9TdWIoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRhID09PSAkYikgewogICAgICAgICAgICByZXR1cm4gJzAnOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgYWx3YXlzIHN1YnRyYWN0IHRvIGEgcG9zaXRpdmUgcmVzdWx0OiBiaWdnZXN0IG1pbnVzIHNtYWxsZXN0LgogICAgICAgICRjbXAgPSAkdGhpcy0+ZG9DbXAoJGEsICRiKTsKCiAgICAgICAgJGludmVydCA9ICgkY21wID09PSAtMSk7CgogICAgICAgIGlmICgkaW52ZXJ0KSB7CiAgICAgICAgICAgICRjID0gJGE7CiAgICAgICAgICAgICRhID0gJGI7CiAgICAgICAgICAgICRiID0gJGM7CiAgICAgICAgfQoKICAgICAgICBbJGEsICRiLCAkbGVuZ3RoXSA9ICR0aGlzLT5wYWQoJGEsICRiKTsKCiAgICAgICAgJGNhcnJ5ID0gMDsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgICRjb21wbGVtZW50ID0gMTAgKiogJHRoaXMtPm1heERpZ2l0czsKCiAgICAgICAgZm9yICgkaSA9ICRsZW5ndGggLSAkdGhpcy0+bWF4RGlnaXRzOzsgJGkgLT0gJHRoaXMtPm1heERpZ2l0cykgewogICAgICAgICAgICAkYmxvY2tMZW5ndGggPSAkdGhpcy0+bWF4RGlnaXRzOwoKICAgICAgICAgICAgaWYgKCRpIDwgMCkgewogICAgICAgICAgICAgICAgJGJsb2NrTGVuZ3RoICs9ICRpOwogICAgICAgICAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBMb29wSW52YWxpZGF0aW9uICovCiAgICAgICAgICAgICAgICAkaSA9IDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8qKiBAcHNhbG0tdmFyIG51bWVyaWMtc3RyaW5nICRibG9ja0EgKi8KICAgICAgICAgICAgJGJsb2NrQSA9IFxzdWJzdHIoJGEsICRpLCAkYmxvY2tMZW5ndGgpOwoKICAgICAgICAgICAgLyoqIEBwc2FsbS12YXIgbnVtZXJpYy1zdHJpbmcgJGJsb2NrQiAqLwogICAgICAgICAgICAkYmxvY2tCID0gXHN1YnN0cigkYiwgJGksICRibG9ja0xlbmd0aCk7CgogICAgICAgICAgICAkc3VtID0gJGJsb2NrQSAtICRibG9ja0IgLSAkY2Fycnk7CgogICAgICAgICAgICBpZiAoJHN1bSA8IDApIHsKICAgICAgICAgICAgICAgICRzdW0gKz0gJGNvbXBsZW1lbnQ7CiAgICAgICAgICAgICAgICAkY2FycnkgPSAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGNhcnJ5ID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHN1bSA9IChzdHJpbmcpICRzdW07CiAgICAgICAgICAgICRzdW1MZW5ndGggPSBcc3RybGVuKCRzdW0pOwoKICAgICAgICAgICAgaWYgKCRzdW1MZW5ndGggPCAkYmxvY2tMZW5ndGgpIHsKICAgICAgICAgICAgICAgICRzdW0gPSBcc3RyX3JlcGVhdCgnMCcsICRibG9ja0xlbmd0aCAtICRzdW1MZW5ndGgpIC4gJHN1bTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJlc3VsdCA9ICRzdW0gLiAkcmVzdWx0OwoKICAgICAgICAgICAgaWYgKCRpID09PSAwKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ2FycnkgY2Fubm90IGJlIDEgd2hlbiB0aGUgbG9vcCBlbmRzLCBhcyBhID4gYgogICAgICAgIGFzc2VydCgkY2FycnkgPT09IDApOwoKICAgICAgICAkcmVzdWx0ID0gXGx0cmltKCRyZXN1bHQsICcwJyk7CgogICAgICAgIGlmICgkaW52ZXJ0KSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+bmVnKCRyZXN1bHQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyB0aGUgbXVsdGlwbGljYXRpb24gb2YgdHdvIG5vbi1zaWduZWQgbGFyZ2UgaW50ZWdlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgZmlyc3Qgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZG9NdWwoc3RyaW5nICRhLCBzdHJpbmcgJGIpIDogc3RyaW5nCiAgICB7CiAgICAgICAgJHggPSBcc3RybGVuKCRhKTsKICAgICAgICAkeSA9IFxzdHJsZW4oJGIpOwoKICAgICAgICAkbWF4RGlnaXRzID0gXGludGRpdigkdGhpcy0+bWF4RGlnaXRzLCAyKTsKICAgICAgICAkY29tcGxlbWVudCA9IDEwICoqICRtYXhEaWdpdHM7CgogICAgICAgICRyZXN1bHQgPSAnMCc7CgogICAgICAgIGZvciAoJGkgPSAkeCAtICRtYXhEaWdpdHM7OyAkaSAtPSAkbWF4RGlnaXRzKSB7CiAgICAgICAgICAgICRibG9ja0FMZW5ndGggPSAkbWF4RGlnaXRzOwoKICAgICAgICAgICAgaWYgKCRpIDwgMCkgewogICAgICAgICAgICAgICAgJGJsb2NrQUxlbmd0aCArPSAkaTsKICAgICAgICAgICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgTG9vcEludmFsaWRhdGlvbiAqLwogICAgICAgICAgICAgICAgJGkgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkYmxvY2tBID0gKGludCkgXHN1YnN0cigkYSwgJGksICRibG9ja0FMZW5ndGgpOwoKICAgICAgICAgICAgJGxpbmUgPSAnJzsKICAgICAgICAgICAgJGNhcnJ5ID0gMDsKCiAgICAgICAgICAgIGZvciAoJGogPSAkeSAtICRtYXhEaWdpdHM7OyAkaiAtPSAkbWF4RGlnaXRzKSB7CiAgICAgICAgICAgICAgICAkYmxvY2tCTGVuZ3RoID0gJG1heERpZ2l0czsKCiAgICAgICAgICAgICAgICBpZiAoJGogPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgJGJsb2NrQkxlbmd0aCArPSAkajsKICAgICAgICAgICAgICAgICAgICAvKiogQHBzYWxtLXN1cHByZXNzIExvb3BJbnZhbGlkYXRpb24gKi8KICAgICAgICAgICAgICAgICAgICAkaiA9IDA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJGJsb2NrQiA9IChpbnQpIFxzdWJzdHIoJGIsICRqLCAkYmxvY2tCTGVuZ3RoKTsKCiAgICAgICAgICAgICAgICAkbXVsID0gJGJsb2NrQSAqICRibG9ja0IgKyAkY2Fycnk7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAkbXVsICUgJGNvbXBsZW1lbnQ7CiAgICAgICAgICAgICAgICAkY2FycnkgPSAoJG11bCAtICR2YWx1ZSkgLyAkY29tcGxlbWVudDsKCiAgICAgICAgICAgICAgICAkdmFsdWUgPSAoc3RyaW5nKSAkdmFsdWU7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBcc3RyX3BhZCgkdmFsdWUsICRtYXhEaWdpdHMsICcwJywgU1RSX1BBRF9MRUZUKTsKCiAgICAgICAgICAgICAgICAkbGluZSA9ICR2YWx1ZSAuICRsaW5lOwoKICAgICAgICAgICAgICAgIGlmICgkaiA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGNhcnJ5ICE9PSAwKSB7CiAgICAgICAgICAgICAgICAkbGluZSA9ICRjYXJyeSAuICRsaW5lOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkbGluZSA9IFxsdHJpbSgkbGluZSwgJzAnKTsKCiAgICAgICAgICAgIGlmICgkbGluZSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICRsaW5lIC49IFxzdHJfcmVwZWF0KCcwJywgJHggLSAkYmxvY2tBTGVuZ3RoIC0gJGkpOwogICAgICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5hZGQoJHJlc3VsdCwgJGxpbmUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGkgPT09IDApIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFBlcmZvcm1zIHRoZSBkaXZpc2lvbiBvZiB0d28gbm9uLXNpZ25lZCBsYXJnZSBpbnRlZ2Vycy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBmaXJzdCBvcGVyYW5kLgogICAgICogQHBhcmFtIHN0cmluZyAkYiBUaGUgc2Vjb25kIG9wZXJhbmQuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXSBUaGUgcXVvdGllbnQgYW5kIHJlbWFpbmRlci4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb0RpdihzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBhcnJheQogICAgewogICAgICAgICRjbXAgPSAkdGhpcy0+ZG9DbXAoJGEsICRiKTsKCiAgICAgICAgaWYgKCRjbXAgPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBbJzAnLCAkYV07CiAgICAgICAgfQoKICAgICAgICAkeCA9IFxzdHJsZW4oJGEpOwogICAgICAgICR5ID0gXHN0cmxlbigkYik7CgogICAgICAgIC8vIHdlIG5vdyBrbm93IHRoYXQgYSA+PSBiICYmIHggPj0geQoKICAgICAgICAkcSA9ICcwJzsgLy8gcXVvdGllbnQKICAgICAgICAkciA9ICRhOyAvLyByZW1haW5kZXIKICAgICAgICAkeiA9ICR5OyAvLyBmb2N1cyBsZW5ndGgsIGFsd2F5cyAkeSBvciAkeSsxCgogICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICAgJGZvY3VzID0gXHN1YnN0cigkYSwgMCwgJHopOwoKICAgICAgICAgICAgJGNtcCA9ICR0aGlzLT5kb0NtcCgkZm9jdXMsICRiKTsKCiAgICAgICAgICAgIGlmICgkY21wID09PSAtMSkgewogICAgICAgICAgICAgICAgaWYgKCR6ID09PSAkeCkgeyAvLyByZW1haW5kZXIgPCBkaXZpZGVuZAogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR6Kys7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR6ZXJvcyA9IFxzdHJfcmVwZWF0KCcwJywgJHggLSAkeik7CgogICAgICAgICAgICAkcSA9ICR0aGlzLT5hZGQoJHEsICcxJyAuICR6ZXJvcyk7CiAgICAgICAgICAgICRhID0gJHRoaXMtPnN1YigkYSwgJGIgLiAkemVyb3MpOwoKICAgICAgICAgICAgJHIgPSAkYTsKCiAgICAgICAgICAgIGlmICgkciA9PT0gJzAnKSB7IC8vIHJlbWFpbmRlciA9PSAwCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHggPSBcc3RybGVuKCRhKTsKCiAgICAgICAgICAgIGlmICgkeCA8ICR5KSB7IC8vIHJlbWFpbmRlciA8IGRpdmlkZW5kCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHogPSAkeTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbJHEsICRyXTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBub24tc2lnbmVkIGxhcmdlIG51bWJlcnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYSBUaGUgZmlyc3Qgb3BlcmFuZC4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGIgVGhlIHNlY29uZCBvcGVyYW5kLgogICAgICoKICAgICAqIEByZXR1cm4gaW50IFstMSwgMCwgMV0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBkb0NtcChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBpbnQKICAgIHsKICAgICAgICAkeCA9IFxzdHJsZW4oJGEpOwogICAgICAgICR5ID0gXHN0cmxlbigkYik7CgogICAgICAgICRjbXAgPSAkeCA8PT4gJHk7CgogICAgICAgIGlmICgkY21wICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiAkY21wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxzdHJjbXAoJGEsICRiKSA8PT4gMDsgLy8gZW5mb3JjZSBbLTEsIDAsIDFdCiAgICB9CgogICAgLyoqCiAgICAgKiBQYWRzIHRoZSBsZWZ0IG9mIG9uZSBvZiB0aGUgZ2l2ZW4gbnVtYmVycyB3aXRoIHplcm9zIGlmIG5lY2Vzc2FyeSB0byBtYWtlIGJvdGggbnVtYmVycyB0aGUgc2FtZSBsZW5ndGguCiAgICAgKgogICAgICogVGhlIG51bWJlcnMgbXVzdCBvbmx5IGNvbnNpc3Qgb2YgZGlnaXRzLCB3aXRob3V0IGxlYWRpbmcgbWludXMgc2lnbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhIFRoZSBmaXJzdCBvcGVyYW5kLgogICAgICogQHBhcmFtIHN0cmluZyAkYiBUaGUgc2Vjb25kIG9wZXJhbmQuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXtzdHJpbmcsIHN0cmluZywgaW50fQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBhZChzdHJpbmcgJGEsIHN0cmluZyAkYikgOiBhcnJheQogICAgewogICAgICAgICR4ID0gXHN0cmxlbigkYSk7CiAgICAgICAgJHkgPSBcc3RybGVuKCRiKTsKCiAgICAgICAgaWYgKCR4ID4gJHkpIHsKICAgICAgICAgICAgJGIgPSBcc3RyX3JlcGVhdCgnMCcsICR4IC0gJHkpIC4gJGI7CgogICAgICAgICAgICByZXR1cm4gWyRhLCAkYiwgJHhdOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR4IDwgJHkpIHsKICAgICAgICAgICAgJGEgPSBcc3RyX3JlcGVhdCgnMCcsICR5IC0gJHgpIC4gJGE7CgogICAgICAgICAgICByZXR1cm4gWyRhLCAkYiwgJHldOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskYSwgJGIsICR4XTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/brick/math/src/RoundingMode.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEJyaWNrXE1hdGg7CgovKioKICogU3BlY2lmaWVzIGEgcm91bmRpbmcgYmVoYXZpb3IgZm9yIG51bWVyaWNhbCBvcGVyYXRpb25zIGNhcGFibGUgb2YgZGlzY2FyZGluZyBwcmVjaXNpb24uCiAqCiAqIEVhY2ggcm91bmRpbmcgbW9kZSBpbmRpY2F0ZXMgaG93IHRoZSBsZWFzdCBzaWduaWZpY2FudCByZXR1cm5lZCBkaWdpdCBvZiBhIHJvdW5kZWQgcmVzdWx0CiAqIGlzIHRvIGJlIGNhbGN1bGF0ZWQuIElmIGZld2VyIGRpZ2l0cyBhcmUgcmV0dXJuZWQgdGhhbiB0aGUgZGlnaXRzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlCiAqIGV4YWN0IG51bWVyaWNhbCByZXN1bHQsIHRoZSBkaXNjYXJkZWQgZGlnaXRzIHdpbGwgYmUgcmVmZXJyZWQgdG8gYXMgdGhlIGRpc2NhcmRlZCBmcmFjdGlvbgogKiByZWdhcmRsZXNzIHRoZSBkaWdpdHMnIGNvbnRyaWJ1dGlvbiB0byB0aGUgdmFsdWUgb2YgdGhlIG51bWJlci4gSW4gb3RoZXIgd29yZHMsIGNvbnNpZGVyZWQKICogYXMgYSBudW1lcmljYWwgdmFsdWUsIHRoZSBkaXNjYXJkZWQgZnJhY3Rpb24gY291bGQgaGF2ZSBhbiBhYnNvbHV0ZSB2YWx1ZSBncmVhdGVyIHRoYW4gb25lLgogKi8KZmluYWwgY2xhc3MgUm91bmRpbmdNb2RlCnsKICAgIC8qKgogICAgICogUHJpdmF0ZSBjb25zdHJ1Y3Rvci4gVGhpcyBjbGFzcyBpcyBub3QgaW5zdGFudGlhYmxlLgogICAgICoKICAgICAqIEBjb2RlQ292ZXJhZ2VJZ25vcmUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICB9CgogICAgLyoqCiAgICAgKiBBc3NlcnRzIHRoYXQgdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24gaGFzIGFuIGV4YWN0IHJlc3VsdCwgaGVuY2Ugbm8gcm91bmRpbmcgaXMgbmVjZXNzYXJ5LgogICAgICoKICAgICAqIElmIHRoaXMgcm91bmRpbmcgbW9kZSBpcyBzcGVjaWZpZWQgb24gYW4gb3BlcmF0aW9uIHRoYXQgeWllbGRzIGEgcmVzdWx0IHRoYXQKICAgICAqIGNhbm5vdCBiZSByZXByZXNlbnRlZCBhdCB0aGUgcmVxdWVzdGVkIHNjYWxlLCBhIFJvdW5kaW5nTmVjZXNzYXJ5RXhjZXB0aW9uIGlzIHRocm93bi4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFVOTkVDRVNTQVJZID0gMDsKCiAgICAvKioKICAgICAqIFJvdW5kcyBhd2F5IGZyb20gemVyby4KICAgICAqCiAgICAgKiBBbHdheXMgaW5jcmVtZW50cyB0aGUgZGlnaXQgcHJpb3IgdG8gYSBub256ZXJvIGRpc2NhcmRlZCBmcmFjdGlvbi4KICAgICAqIE5vdGUgdGhhdCB0aGlzIHJvdW5kaW5nIG1vZGUgbmV2ZXIgZGVjcmVhc2VzIHRoZSBtYWduaXR1ZGUgb2YgdGhlIGNhbGN1bGF0ZWQgdmFsdWUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBVUCA9IDE7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyB6ZXJvLgogICAgICoKICAgICAqIE5ldmVyIGluY3JlbWVudHMgdGhlIGRpZ2l0IHByaW9yIHRvIGEgZGlzY2FyZGVkIGZyYWN0aW9uIChpLmUuLCB0cnVuY2F0ZXMpLgogICAgICogTm90ZSB0aGF0IHRoaXMgcm91bmRpbmcgbW9kZSBuZXZlciBpbmNyZWFzZXMgdGhlIG1hZ25pdHVkZSBvZiB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IERPV04gPSAyOwoKICAgIC8qKgogICAgICogUm91bmRzIHRvd2FyZHMgcG9zaXRpdmUgaW5maW5pdHkuCiAgICAgKgogICAgICogSWYgdGhlIHJlc3VsdCBpcyBwb3NpdGl2ZSwgYmVoYXZlcyBhcyBmb3IgVVA7IGlmIG5lZ2F0aXZlLCBiZWhhdmVzIGFzIGZvciBET1dOLgogICAgICogTm90ZSB0aGF0IHRoaXMgcm91bmRpbmcgbW9kZSBuZXZlciBkZWNyZWFzZXMgdGhlIGNhbGN1bGF0ZWQgdmFsdWUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBDRUlMSU5HID0gMzsKCiAgICAvKioKICAgICAqIFJvdW5kcyB0b3dhcmRzIG5lZ2F0aXZlIGluZmluaXR5LgogICAgICoKICAgICAqIElmIHRoZSByZXN1bHQgaXMgcG9zaXRpdmUsIGJlaGF2ZSBhcyBmb3IgRE9XTjsgaWYgbmVnYXRpdmUsIGJlaGF2ZSBhcyBmb3IgVVAuCiAgICAgKiBOb3RlIHRoYXQgdGhpcyByb3VuZGluZyBtb2RlIG5ldmVyIGluY3JlYXNlcyB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEZMT09SID0gNDsKCiAgICAvKioKICAgICAqIFJvdW5kcyB0b3dhcmRzICJuZWFyZXN0IG5laWdoYm9yIiB1bmxlc3MgYm90aCBuZWlnaGJvcnMgYXJlIGVxdWlkaXN0YW50LCBpbiB3aGljaCBjYXNlIHJvdW5kIHVwLgogICAgICoKICAgICAqIEJlaGF2ZXMgYXMgZm9yIFVQIGlmIHRoZSBkaXNjYXJkZWQgZnJhY3Rpb24gaXMgPj0gMC41OyBvdGhlcndpc2UsIGJlaGF2ZXMgYXMgZm9yIERPV04uCiAgICAgKiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgcm91bmRpbmcgbW9kZSBjb21tb25seSB0YXVnaHQgYXQgc2Nob29sLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgSEFMRl9VUCA9IDU7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyAibmVhcmVzdCBuZWlnaGJvciIgdW5sZXNzIGJvdGggbmVpZ2hib3JzIGFyZSBlcXVpZGlzdGFudCwgaW4gd2hpY2ggY2FzZSByb3VuZCBkb3duLgogICAgICoKICAgICAqIEJlaGF2ZXMgYXMgZm9yIFVQIGlmIHRoZSBkaXNjYXJkZWQgZnJhY3Rpb24gaXMgPiAwLjU7IG90aGVyd2lzZSwgYmVoYXZlcyBhcyBmb3IgRE9XTi4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEhBTEZfRE9XTiA9IDY7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyAibmVhcmVzdCBuZWlnaGJvciIgdW5sZXNzIGJvdGggbmVpZ2hib3JzIGFyZSBlcXVpZGlzdGFudCwgaW4gd2hpY2ggY2FzZSByb3VuZCB0b3dhcmRzIHBvc2l0aXZlIGluZmluaXR5LgogICAgICoKICAgICAqIElmIHRoZSByZXN1bHQgaXMgcG9zaXRpdmUsIGJlaGF2ZXMgYXMgZm9yIEhBTEZfVVA7IGlmIG5lZ2F0aXZlLCBiZWhhdmVzIGFzIGZvciBIQUxGX0RPV04uCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBIQUxGX0NFSUxJTkcgPSA3OwoKICAgIC8qKgogICAgICogUm91bmRzIHRvd2FyZHMgIm5lYXJlc3QgbmVpZ2hib3IiIHVubGVzcyBib3RoIG5laWdoYm9ycyBhcmUgZXF1aWRpc3RhbnQsIGluIHdoaWNoIGNhc2Ugcm91bmQgdG93YXJkcyBuZWdhdGl2ZSBpbmZpbml0eS4KICAgICAqCiAgICAgKiBJZiB0aGUgcmVzdWx0IGlzIHBvc2l0aXZlLCBiZWhhdmVzIGFzIGZvciBIQUxGX0RPV047IGlmIG5lZ2F0aXZlLCBiZWhhdmVzIGFzIGZvciBIQUxGX1VQLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgSEFMRl9GTE9PUiA9IDg7CgogICAgLyoqCiAgICAgKiBSb3VuZHMgdG93YXJkcyB0aGUgIm5lYXJlc3QgbmVpZ2hib3IiIHVubGVzcyBib3RoIG5laWdoYm9ycyBhcmUgZXF1aWRpc3RhbnQsIGluIHdoaWNoIGNhc2Ugcm91bmRzIHRvd2FyZHMgdGhlIGV2ZW4gbmVpZ2hib3IuCiAgICAgKgogICAgICogQmVoYXZlcyBhcyBmb3IgSEFMRl9VUCBpZiB0aGUgZGlnaXQgdG8gdGhlIGxlZnQgb2YgdGhlIGRpc2NhcmRlZCBmcmFjdGlvbiBpcyBvZGQ7CiAgICAgKiBiZWhhdmVzIGFzIGZvciBIQUxGX0RPV04gaWYgaXQncyBldmVuLgogICAgICoKICAgICAqIE5vdGUgdGhhdCB0aGlzIGlzIHRoZSByb3VuZGluZyBtb2RlIHRoYXQgc3RhdGlzdGljYWxseSBtaW5pbWl6ZXMKICAgICAqIGN1bXVsYXRpdmUgZXJyb3Igd2hlbiBhcHBsaWVkIHJlcGVhdGVkbHkgb3ZlciBhIHNlcXVlbmNlIG9mIGNhbGN1bGF0aW9ucy4KICAgICAqIEl0IGlzIHNvbWV0aW1lcyBrbm93biBhcyAiQmFua2VyJ3Mgcm91bmRpbmciLCBhbmQgaXMgY2hpZWZseSB1c2VkIGluIHRoZSBVU0EuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBIQUxGX0VWRU4gPSA5Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_classmap.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2NsYXNzbWFwLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShfX0RJUl9fKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJ0NvbXBvc2VyXFxJbnN0YWxsZWRWZXJzaW9ucycgPT4gJHZlbmRvckRpciAuICcvY29tcG9zZXIvSW5zdGFsbGVkVmVyc2lvbnMucGhwJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_files.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX2ZpbGVzLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokdmVuZG9yRGlyID0gZGlybmFtZShfX0RJUl9fKTsKJGJhc2VEaXIgPSBkaXJuYW1lKCR2ZW5kb3JEaXIpOwoKcmV0dXJuIGFycmF5KAogICAgJzdiMTFjNGRjNDJiM2IzMDIzMDczY2IxNGU1MTk2ODNjJyA9PiAkdmVuZG9yRGlyIC4gJy9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy9zcmMvZ2V0YWxsaGVhZGVycy5waHAnLAogICAgJzZlM2ZhZTI5NjMxZWYyODA2NjBiM2NkYWQwNmYyNWE4JyA9PiAkdmVuZG9yRGlyIC4gJy9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cy9mdW5jdGlvbi5waHAnLAogICAgJzM3YTNkYzUxMTFmZThmNzA3YWI0YzEzMmVmMWRiYzYyJyA9PiAkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL2d1enpsZS9zcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwJywKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_namespaces.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX25hbWVzcGFjZXMucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKF9fRElSX18pOwokYmFzZURpciA9IGRpcm5hbWUoJHZlbmRvckRpcik7CgpyZXR1cm4gYXJyYXkoCik7Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_psr4.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3BzcjQucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCiR2ZW5kb3JEaXIgPSBkaXJuYW1lKF9fRElSX18pOwokYmFzZURpciA9IGRpcm5hbWUoJHZlbmRvckRpcik7CgpyZXR1cm4gYXJyYXkoCiAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Bzci9odHRwLWZhY3Rvcnkvc3JjJywgJHZlbmRvckRpciAuICcvcHNyL2h0dHAtbWVzc2FnZS9zcmMnKSwKICAgICdQc3JcXEh0dHBcXENsaWVudFxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9wc3IvaHR0cC1jbGllbnQvc3JjJyksCiAgICAnTWluaXNobGlua1xcV2ViUHVzaFxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9taW5pc2hsaW5rL3dlYi1wdXNoL3NyYycpLAogICAgJ0pvc2VcXENvbXBvbmVudFxcU2lnbmF0dXJlXFxBbGdvcml0aG1cXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhJyksCiAgICAnSm9zZVxcQ29tcG9uZW50XFxTaWduYXR1cmVcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUnKSwKICAgICdKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvd2ViLXRva2VuL2p3dC1rZXktbWdtdCcpLAogICAgJ0pvc2VcXENvbXBvbmVudFxcQ29yZVxcVXRpbFxcRWNjXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3dlYi10b2tlbi9qd3QtdXRpbC1lY2MnKSwKICAgICdKb3NlXFxDb21wb25lbnRcXENvcmVcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvd2ViLXRva2VuL2p3dC1jb3JlJyksCiAgICAnR3V6emxlSHR0cFxcUHNyN1xcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL3Bzcjcvc3JjJyksCiAgICAnR3V6emxlSHR0cFxcUHJvbWlzZVxcJyA9PiBhcnJheSgkdmVuZG9yRGlyIC4gJy9ndXp6bGVodHRwL3Byb21pc2VzL3NyYycpLAogICAgJ0d1enpsZUh0dHBcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvZ3V6emxlaHR0cC9ndXp6bGUvc3JjJyksCiAgICAnRkdcXCcgPT4gYXJyYXkoJHZlbmRvckRpciAuICcvZmdyb3NzZS9waHBhc24xL2xpYicpLAogICAgJ0JyaWNrXFxNYXRoXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL2JyaWNrL21hdGgvc3JjJyksCiAgICAnQmFzZTY0VXJsXFwnID0+IGFycmF5KCR2ZW5kb3JEaXIgLiAnL3Nwb21reS1sYWJzL2Jhc2U2NHVybC9zcmMnKSwKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_real.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3JlYWwucGhwIEBnZW5lcmF0ZWQgYnkgQ29tcG9zZXIKCmNsYXNzIENvbXBvc2VyQXV0b2xvYWRlckluaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYQp7CiAgICBwcml2YXRlIHN0YXRpYyAkbG9hZGVyOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZENsYXNzTG9hZGVyKCRjbGFzcykKICAgIHsKICAgICAgICBpZiAoJ0NvbXBvc2VyXEF1dG9sb2FkXENsYXNzTG9hZGVyJyA9PT0gJGNsYXNzKSB7CiAgICAgICAgICAgIHJlcXVpcmUgX19ESVJfXyAuICcvQ2xhc3NMb2FkZXIucGhwJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldExvYWRlcigpCiAgICB7CiAgICAgICAgaWYgKG51bGwgIT09IHNlbGY6OiRsb2FkZXIpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OiRsb2FkZXI7CiAgICAgICAgfQoKICAgICAgICByZXF1aXJlIF9fRElSX18gLiAnL3BsYXRmb3JtX2NoZWNrLnBocCc7CgogICAgICAgIHNwbF9hdXRvbG9hZF9yZWdpc3RlcihhcnJheSgnQ29tcG9zZXJBdXRvbG9hZGVySW5pdDlmNDFlYjRkNGI1MmI4MzNjNTM4ZjM2N2ExOGE0MzBhJywgJ2xvYWRDbGFzc0xvYWRlcicpLCB0cnVlLCB0cnVlKTsKICAgICAgICBzZWxmOjokbG9hZGVyID0gJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoXGRpcm5hbWUoX19ESVJfXykpOwogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCdDb21wb3NlckF1dG9sb2FkZXJJbml0OWY0MWViNGQ0YjUyYjgzM2M1MzhmMzY3YTE4YTQzMGEnLCAnbG9hZENsYXNzTG9hZGVyJykpOwoKICAgICAgICByZXF1aXJlIF9fRElSX18gLiAnL2F1dG9sb2FkX3N0YXRpYy5waHAnOwogICAgICAgIGNhbGxfdXNlcl9mdW5jKFxDb21wb3NlclxBdXRvbG9hZFxDb21wb3NlclN0YXRpY0luaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYTo6Z2V0SW5pdGlhbGl6ZXIoJGxvYWRlcikpOwoKICAgICAgICAkbG9hZGVyLT5yZWdpc3Rlcih0cnVlKTsKCiAgICAgICAgJGZpbGVzVG9Mb2FkID0gXENvbXBvc2VyXEF1dG9sb2FkXENvbXBvc2VyU3RhdGljSW5pdDlmNDFlYjRkNGI1MmI4MzNjNTM4ZjM2N2ExOGE0MzBhOjokZmlsZXM7CiAgICAgICAgJHJlcXVpcmVGaWxlID0gXENsb3N1cmU6OmJpbmQoc3RhdGljIGZ1bmN0aW9uICgkZmlsZUlkZW50aWZpZXIsICRmaWxlKSB7CiAgICAgICAgICAgIGlmIChlbXB0eSgkR0xPQkFMU1snX19jb21wb3Nlcl9hdXRvbG9hZF9maWxlcyddWyRmaWxlSWRlbnRpZmllcl0pKSB7CiAgICAgICAgICAgICAgICAkR0xPQkFMU1snX19jb21wb3Nlcl9hdXRvbG9hZF9maWxlcyddWyRmaWxlSWRlbnRpZmllcl0gPSB0cnVlOwoKICAgICAgICAgICAgICAgIHJlcXVpcmUgJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9LCBudWxsLCBudWxsKTsKICAgICAgICBmb3JlYWNoICgkZmlsZXNUb0xvYWQgYXMgJGZpbGVJZGVudGlmaWVyID0+ICRmaWxlKSB7CiAgICAgICAgICAgICRyZXF1aXJlRmlsZSgkZmlsZUlkZW50aWZpZXIsICRmaWxlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbG9hZGVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/autoload_static.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIGF1dG9sb2FkX3N0YXRpYy5waHAgQGdlbmVyYXRlZCBieSBDb21wb3NlcgoKbmFtZXNwYWNlIENvbXBvc2VyXEF1dG9sb2FkOwoKY2xhc3MgQ29tcG9zZXJTdGF0aWNJbml0OWY0MWViNGQ0YjUyYjgzM2M1MzhmMzY3YTE4YTQzMGEKewogICAgcHVibGljIHN0YXRpYyAkZmlsZXMgPSBhcnJheSAoCiAgICAgICAgJzdiMTFjNGRjNDJiM2IzMDIzMDczY2IxNGU1MTk2ODNjJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3NyYy9nZXRhbGxoZWFkZXJzLnBocCcsCiAgICAgICAgJzZlM2ZhZTI5NjMxZWYyODA2NjBiM2NkYWQwNmYyNWE4JyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3N5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzL2Z1bmN0aW9uLnBocCcsCiAgICAgICAgJzM3YTNkYzUxMTFmZThmNzA3YWI0YzEzMmVmMWRiYzYyJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvZ3V6emxlL3NyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAnLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljICRwcmVmaXhMZW5ndGhzUHNyNCA9IGFycmF5ICgKICAgICAgICAnUCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdQc3JcXEh0dHBcXE1lc3NhZ2VcXCcgPT4gMTcsCiAgICAgICAgICAgICdQc3JcXEh0dHBcXENsaWVudFxcJyA9PiAxNiwKICAgICAgICApLAogICAgICAgICdNJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ01pbmlzaGxpbmtcXFdlYlB1c2hcXCcgPT4gMTksCiAgICAgICAgKSwKICAgICAgICAnSicgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcQWxnb3JpdGhtXFwnID0+IDM1LAogICAgICAgICAgICAnSm9zZVxcQ29tcG9uZW50XFxTaWduYXR1cmVcXCcgPT4gMjUsCiAgICAgICAgICAgICdKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCcgPT4gMjksCiAgICAgICAgICAgICdKb3NlXFxDb21wb25lbnRcXENvcmVcXFV0aWxcXEVjY1xcJyA9PiAyOSwKICAgICAgICAgICAgJ0pvc2VcXENvbXBvbmVudFxcQ29yZVxcJyA9PiAyMCwKICAgICAgICApLAogICAgICAgICdHJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ0d1enpsZUh0dHBcXFBzcjdcXCcgPT4gMTYsCiAgICAgICAgICAgICdHdXp6bGVIdHRwXFxQcm9taXNlXFwnID0+IDE5LAogICAgICAgICAgICAnR3V6emxlSHR0cFxcJyA9PiAxMSwKICAgICAgICApLAogICAgICAgICdGJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgJ0ZHXFwnID0+IDMsCiAgICAgICAgKSwKICAgICAgICAnQicgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgICdCcmlja1xcTWF0aFxcJyA9PiAxMSwKICAgICAgICAgICAgJ0Jhc2U2NFVybFxcJyA9PiAxMCwKICAgICAgICApLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljICRwcmVmaXhEaXJzUHNyNCA9IGFycmF5ICgKICAgICAgICAnUHNyXFxIdHRwXFxNZXNzYWdlXFwnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvcHNyL2h0dHAtZmFjdG9yeS9zcmMnLAogICAgICAgICAgICAxID0+IF9fRElSX18gLiAnLy4uJyAuICcvcHNyL2h0dHAtbWVzc2FnZS9zcmMnLAogICAgICAgICksCiAgICAgICAgJ1BzclxcSHR0cFxcQ2xpZW50XFwnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvcHNyL2h0dHAtY2xpZW50L3NyYycsCiAgICAgICAgKSwKICAgICAgICAnTWluaXNobGlua1xcV2ViUHVzaFxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL21pbmlzaGxpbmsvd2ViLXB1c2gvc3JjJywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcQWxnb3JpdGhtXFwnID0+CiAgICAgICAgYXJyYXkgKAogICAgICAgICAgICAwID0+IF9fRElSX18gLiAnLy4uJyAuICcvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhJywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlJywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy93ZWItdG9rZW4vand0LWtleS1tZ210JywKICAgICAgICApLAogICAgICAgICdKb3NlXFxDb21wb25lbnRcXENvcmVcXFV0aWxcXEVjY1xcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3dlYi10b2tlbi9qd3QtdXRpbC1lY2MnLAogICAgICAgICksCiAgICAgICAgJ0pvc2VcXENvbXBvbmVudFxcQ29yZVxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL3dlYi10b2tlbi9qd3QtY29yZScsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcUHNyN1xcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvcHNyNy9zcmMnLAogICAgICAgICksCiAgICAgICAgJ0d1enpsZUh0dHBcXFByb21pc2VcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9ndXp6bGVodHRwL3Byb21pc2VzL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnR3V6emxlSHR0cFxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2d1enpsZWh0dHAvZ3V6emxlL3NyYycsCiAgICAgICAgKSwKICAgICAgICAnRkdcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9mZ3Jvc3NlL3BocGFzbjEvbGliJywKICAgICAgICApLAogICAgICAgICdCcmlja1xcTWF0aFxcJyA9PgogICAgICAgIGFycmF5ICgKICAgICAgICAgICAgMCA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2JyaWNrL21hdGgvc3JjJywKICAgICAgICApLAogICAgICAgICdCYXNlNjRVcmxcXCcgPT4KICAgICAgICBhcnJheSAoCiAgICAgICAgICAgIDAgPT4gX19ESVJfXyAuICcvLi4nIC4gJy9zcG9ta3ktbGFicy9iYXNlNjR1cmwvc3JjJywKICAgICAgICApLAogICAgKTsKCiAgICBwdWJsaWMgc3RhdGljICRjbGFzc01hcCA9IGFycmF5ICgKICAgICAgICAnQ29tcG9zZXJcXEluc3RhbGxlZFZlcnNpb25zJyA9PiBfX0RJUl9fIC4gJy8uLicgLiAnL2NvbXBvc2VyL0luc3RhbGxlZFZlcnNpb25zLnBocCcsCiAgICApOwoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5pdGlhbGl6ZXIoQ2xhc3NMb2FkZXIgJGxvYWRlcikKICAgIHsKICAgICAgICByZXR1cm4gXENsb3N1cmU6OmJpbmQoZnVuY3Rpb24gKCkgdXNlICgkbG9hZGVyKSB7CiAgICAgICAgICAgICRsb2FkZXItPnByZWZpeExlbmd0aHNQc3I0ID0gQ29tcG9zZXJTdGF0aWNJbml0OWY0MWViNGQ0YjUyYjgzM2M1MzhmMzY3YTE4YTQzMGE6OiRwcmVmaXhMZW5ndGhzUHNyNDsKICAgICAgICAgICAgJGxvYWRlci0+cHJlZml4RGlyc1BzcjQgPSBDb21wb3NlclN0YXRpY0luaXQ5ZjQxZWI0ZDRiNTJiODMzYzUzOGYzNjdhMThhNDMwYTo6JHByZWZpeERpcnNQc3I0OwogICAgICAgICAgICAkbG9hZGVyLT5jbGFzc01hcCA9IENvbXBvc2VyU3RhdGljSW5pdDlmNDFlYjRkNGI1MmI4MzNjNTM4ZjM2N2ExOGE0MzBhOjokY2xhc3NNYXA7CgogICAgICAgIH0sIG51bGwsIENsYXNzTG9hZGVyOjpjbGFzcyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/ClassLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXJcQXV0b2xvYWQ7CgovKioKICogQ2xhc3NMb2FkZXIgaW1wbGVtZW50cyBhIFBTUi0wLCBQU1ItNCBhbmQgY2xhc3NtYXAgY2xhc3MgbG9hZGVyLgogKgogKiAgICAgJGxvYWRlciA9IG5ldyBcQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXIoKTsKICoKICogICAgIC8vIHJlZ2lzdGVyIGNsYXNzZXMgd2l0aCBuYW1lc3BhY2VzCiAqICAgICAkbG9hZGVyLT5hZGQoJ1N5bWZvbnlcQ29tcG9uZW50JywgX19ESVJfXy4nL2NvbXBvbmVudCcpOwogKiAgICAgJGxvYWRlci0+YWRkKCdTeW1mb255JywgICAgICAgICAgIF9fRElSX18uJy9mcmFtZXdvcmsnKTsKICoKICogICAgIC8vIGFjdGl2YXRlIHRoZSBhdXRvbG9hZGVyCiAqICAgICAkbG9hZGVyLT5yZWdpc3RlcigpOwogKgogKiAgICAgLy8gdG8gZW5hYmxlIHNlYXJjaGluZyB0aGUgaW5jbHVkZSBwYXRoIChlZy4gZm9yIFBFQVIgcGFja2FnZXMpCiAqICAgICAkbG9hZGVyLT5zZXRVc2VJbmNsdWRlUGF0aCh0cnVlKTsKICoKICogSW4gdGhpcyBleGFtcGxlLCBpZiB5b3UgdHJ5IHRvIHVzZSBhIGNsYXNzIGluIHRoZSBTeW1mb255XENvbXBvbmVudAogKiBuYW1lc3BhY2Ugb3Igb25lIG9mIGl0cyBjaGlsZHJlbiAoU3ltZm9ueVxDb21wb25lbnRcQ29uc29sZSBmb3IgaW5zdGFuY2UpLAogKiB0aGUgYXV0b2xvYWRlciB3aWxsIGZpcnN0IGxvb2sgZm9yIHRoZSBjbGFzcyB1bmRlciB0aGUgY29tcG9uZW50LwogKiBkaXJlY3RvcnksIGFuZCBpdCB3aWxsIHRoZW4gZmFsbGJhY2sgdG8gdGhlIGZyYW1ld29yay8gZGlyZWN0b3J5IGlmIG5vdAogKiBmb3VuZCBiZWZvcmUgZ2l2aW5nIHVwLgogKgogKiBUaGlzIGNsYXNzIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlIFN5bWZvbnkgVW5pdmVyc2FsQ2xhc3NMb2FkZXIuCiAqCiAqIEBhdXRob3IgRmFiaWVuIFBvdGVuY2llciA8ZmFiaWVuQHN5bWZvbnkuY29tPgogKiBAYXV0aG9yIEpvcmRpIEJvZ2dpYW5vIDxqLmJvZ2dpYW5vQHNlbGQuYmU+CiAqIEBzZWUgICAgaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci0wLwogKiBAc2VlICAgIGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNC8KICovCmNsYXNzIENsYXNzTG9hZGVyCnsKICAgIC8qKiBAdmFyIFxDbG9zdXJlKHN0cmluZyk6dm9pZCAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJGluY2x1ZGVGaWxlOwoKICAgIC8qKiBAdmFyIHN0cmluZ3xudWxsICovCiAgICBwcml2YXRlICR2ZW5kb3JEaXI7CgogICAgLy8gUFNSLTQKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGFycmF5PHN0cmluZywgaW50Pj4KICAgICAqLwogICAgcHJpdmF0ZSAkcHJlZml4TGVuZ3Roc1BzcjQgPSBhcnJheSgpOwogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgbGlzdDxzdHJpbmc+PgogICAgICovCiAgICBwcml2YXRlICRwcmVmaXhEaXJzUHNyNCA9IGFycmF5KCk7CiAgICAvKioKICAgICAqIEB2YXIgbGlzdDxzdHJpbmc+CiAgICAgKi8KICAgIHByaXZhdGUgJGZhbGxiYWNrRGlyc1BzcjQgPSBhcnJheSgpOwoKICAgIC8vIFBTUi0wCiAgICAvKioKICAgICAqIExpc3Qgb2YgUFNSLTAgcHJlZml4ZXMKICAgICAqCiAgICAgKiBTdHJ1Y3R1cmVkIGFzIGFycmF5KCdGIChmaXJzdCBsZXR0ZXIpJyA9PiBhcnJheSgnRm9vXEJhciAoZnVsbCBwcmVmaXgpJyA9PiBhcnJheSgncGF0aCcsICdwYXRoMicpKSkKICAgICAqCiAgICAgKiBAdmFyIGFycmF5PHN0cmluZywgYXJyYXk8c3RyaW5nLCBsaXN0PHN0cmluZz4+PgogICAgICovCiAgICBwcml2YXRlICRwcmVmaXhlc1BzcjAgPSBhcnJheSgpOwogICAgLyoqCiAgICAgKiBAdmFyIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwcml2YXRlICRmYWxsYmFja0RpcnNQc3IwID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBib29sICovCiAgICBwcml2YXRlICR1c2VJbmNsdWRlUGF0aCA9IGZhbHNlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIHN0cmluZz4KICAgICAqLwogICAgcHJpdmF0ZSAkY2xhc3NNYXAgPSBhcnJheSgpOwoKICAgIC8qKiBAdmFyIGJvb2wgKi8KICAgIHByaXZhdGUgJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSA9IGZhbHNlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxzdHJpbmcsIGJvb2w+CiAgICAgKi8KICAgIHByaXZhdGUgJG1pc3NpbmdDbGFzc2VzID0gYXJyYXkoKTsKCiAgICAvKiogQHZhciBzdHJpbmd8bnVsbCAqLwogICAgcHJpdmF0ZSAkYXBjdVByZWZpeDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8c3RyaW5nLCBzZWxmPgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkcmVnaXN0ZXJlZExvYWRlcnMgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICR2ZW5kb3JEaXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2ZW5kb3JEaXIgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT52ZW5kb3JEaXIgPSAkdmVuZG9yRGlyOwogICAgICAgIHNlbGY6OmluaXRpYWxpemVJbmNsdWRlQ2xvc3VyZSgpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxzdHJpbmcsIGxpc3Q8c3RyaW5nPj4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByZWZpeGVzKCkKICAgIHsKICAgICAgICBpZiAoIWVtcHR5KCR0aGlzLT5wcmVmaXhlc1BzcjApKSB7CiAgICAgICAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheSgnYXJyYXlfbWVyZ2UnLCBhcnJheV92YWx1ZXMoJHRoaXMtPnByZWZpeGVzUHNyMCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgbGlzdDxzdHJpbmc+PgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJlZml4ZXNQc3I0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByZWZpeERpcnNQc3I0OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZhbGxiYWNrRGlycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEZhbGxiYWNrRGlyc1BzcjQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXk8c3RyaW5nLCBzdHJpbmc+IEFycmF5IG9mIGNsYXNzbmFtZSA9PiBwYXRoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGFzc01hcCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIHN0cmluZz4gJGNsYXNzTWFwIENsYXNzIHRvIGZpbGVuYW1lIG1hcAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQ2xhc3NNYXAoYXJyYXkgJGNsYXNzTWFwKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y2xhc3NNYXApIHsKICAgICAgICAgICAgJHRoaXMtPmNsYXNzTWFwID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmNsYXNzTWFwLCAkY2xhc3NNYXApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5jbGFzc01hcCA9ICRjbGFzc01hcDsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgYSBzZXQgb2YgUFNSLTAgZGlyZWN0b3JpZXMgZm9yIGEgZ2l2ZW4gcHJlZml4LCBlaXRoZXIKICAgICAqIGFwcGVuZGluZyBvciBwcmVwZW5kaW5nIHRvIHRoZSBvbmVzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIHByZWZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkcHJlZml4ICBUaGUgcHJlZml4CiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkcGF0aHMgICBUaGUgUFNSLTAgcm9vdCBkaXJlY3RvcmllcwogICAgICogQHBhcmFtIGJvb2wgICAgICAgICAgICAgICAgJHByZXBlbmQgV2hldGhlciB0byBwcmVwZW5kIHRoZSBkaXJlY3RvcmllcwogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKCRwcmVmaXgsICRwYXRocywgJHByZXBlbmQgPSBmYWxzZSkKICAgIHsKICAgICAgICAkcGF0aHMgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgICAgICRwYXRocywKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjAsCiAgICAgICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkZmlyc3QgPSAkcHJlZml4WzBdOwogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdKSkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSAkcGF0aHM7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICgkcHJlcGVuZCkgewogICAgICAgICAgICAkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF1bJHByZWZpeF0gPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICRwYXRocywKICAgICAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XQogICAgICAgICAgICApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhlc1BzcjBbJGZpcnN0XVskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdWyRwcmVmaXhdLAogICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi00IGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIG5hbWVzcGFjZSwgZWl0aGVyCiAgICAgKiBhcHBlbmRpbmcgb3IgcHJlcGVuZGluZyB0byB0aGUgb25lcyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJHByZWZpeCAgVGhlIHByZWZpeC9uYW1lc3BhY2UsIHdpdGggdHJhaWxpbmcgJ1xcJwogICAgICogQHBhcmFtIGxpc3Q8c3RyaW5nPnxzdHJpbmcgJHBhdGhzICAgVGhlIFBTUi00IGJhc2UgZGlyZWN0b3JpZXMKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgICAgICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFBzcjQoJHByZWZpeCwgJHBhdGhzLCAkcHJlcGVuZCA9IGZhbHNlKQogICAgewogICAgICAgICRwYXRocyA9IChhcnJheSkgJHBhdGhzOwogICAgICAgIGlmICghJHByZWZpeCkgewogICAgICAgICAgICAvLyBSZWdpc3RlciBkaXJlY3RvcmllcyBmb3IgdGhlIHJvb3QgbmFtZXNwYWNlLgogICAgICAgICAgICBpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0ID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAgICAgJHBhdGhzLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3I0CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyNCwKICAgICAgICAgICAgICAgICAgICAkcGF0aHMKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoIWlzc2V0KCR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSkpIHsKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZGlyZWN0b3JpZXMgZm9yIGEgbmV3IG5hbWVzcGFjZS4KICAgICAgICAgICAgJGxlbmd0aCA9IHN0cmxlbigkcHJlZml4KTsKICAgICAgICAgICAgaWYgKCdcXCcgIT09ICRwcmVmaXhbJGxlbmd0aCAtIDFdKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiQSBub24tZW1wdHkgUFNSLTQgcHJlZml4IG11c3QgZW5kIHdpdGggYSBuYW1lc3BhY2Ugc2VwYXJhdG9yLiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhMZW5ndGhzUHNyNFskcHJlZml4WzBdXVskcHJlZml4XSA9ICRsZW5ndGg7CiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSA9ICRwYXRoczsKICAgICAgICB9IGVsc2VpZiAoJHByZXBlbmQpIHsKICAgICAgICAgICAgLy8gUHJlcGVuZCBkaXJlY3RvcmllcyBmb3IgYW4gYWxyZWFkeSByZWdpc3RlcmVkIG5hbWVzcGFjZS4KICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICAgICAkcGF0aHMsCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJlZml4RGlyc1BzcjRbJHByZWZpeF0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBBcHBlbmQgZGlyZWN0b3JpZXMgZm9yIGFuIGFscmVhZHkgcmVnaXN0ZXJlZCBuYW1lc3BhY2UuCiAgICAgICAgICAgICR0aGlzLT5wcmVmaXhEaXJzUHNyNFskcHJlZml4XSA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdLAogICAgICAgICAgICAgICAgJHBhdGhzCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIGEgc2V0IG9mIFBTUi0wIGRpcmVjdG9yaWVzIGZvciBhIGdpdmVuIHByZWZpeCwKICAgICAqIHJlcGxhY2luZyBhbnkgb3RoZXJzIHByZXZpb3VzbHkgc2V0IGZvciB0aGlzIHByZWZpeC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAkcHJlZml4IFRoZSBwcmVmaXgKICAgICAqIEBwYXJhbSBsaXN0PHN0cmluZz58c3RyaW5nICRwYXRocyAgVGhlIFBTUi0wIGJhc2UgZGlyZWN0b3JpZXMKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldCgkcHJlZml4LCAkcGF0aHMpCiAgICB7CiAgICAgICAgaWYgKCEkcHJlZml4KSB7CiAgICAgICAgICAgICR0aGlzLT5mYWxsYmFja0RpcnNQc3IwID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeGVzUHNyMFskcHJlZml4WzBdXVskcHJlZml4XSA9IChhcnJheSkgJHBhdGhzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlZ2lzdGVycyBhIHNldCBvZiBQU1ItNCBkaXJlY3RvcmllcyBmb3IgYSBnaXZlbiBuYW1lc3BhY2UsCiAgICAgKiByZXBsYWNpbmcgYW55IG90aGVycyBwcmV2aW91c2x5IHNldCBmb3IgdGhpcyBuYW1lc3BhY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgJHByZWZpeCBUaGUgcHJlZml4L25hbWVzcGFjZSwgd2l0aCB0cmFpbGluZyAnXFwnCiAgICAgKiBAcGFyYW0gbGlzdDxzdHJpbmc+fHN0cmluZyAkcGF0aHMgIFRoZSBQU1ItNCBiYXNlIGRpcmVjdG9yaWVzCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRQc3I0KCRwcmVmaXgsICRwYXRocykKICAgIHsKICAgICAgICBpZiAoISRwcmVmaXgpIHsKICAgICAgICAgICAgJHRoaXMtPmZhbGxiYWNrRGlyc1BzcjQgPSAoYXJyYXkpICRwYXRoczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGVuZ3RoID0gc3RybGVuKCRwcmVmaXgpOwogICAgICAgICAgICBpZiAoJ1xcJyAhPT0gJHByZWZpeFskbGVuZ3RoIC0gMV0pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJBIG5vbi1lbXB0eSBQU1ItNCBwcmVmaXggbXVzdCBlbmQgd2l0aCBhIG5hbWVzcGFjZSBzZXBhcmF0b3IuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnByZWZpeExlbmd0aHNQc3I0WyRwcmVmaXhbMF1dWyRwcmVmaXhdID0gJGxlbmd0aDsKICAgICAgICAgICAgJHRoaXMtPnByZWZpeERpcnNQc3I0WyRwcmVmaXhdID0gKGFycmF5KSAkcGF0aHM7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVHVybnMgb24gc2VhcmNoaW5nIHRoZSBpbmNsdWRlIHBhdGggZm9yIGNsYXNzIGZpbGVzLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICR1c2VJbmNsdWRlUGF0aAogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0VXNlSW5jbHVkZVBhdGgoJHVzZUluY2x1ZGVQYXRoKQogICAgewogICAgICAgICR0aGlzLT51c2VJbmNsdWRlUGF0aCA9ICR1c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIENhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBhdXRvbG9hZGVyIHVzZXMgdGhlIGluY2x1ZGUgcGF0aCB0byBjaGVjawogICAgICogZm9yIGNsYXNzZXMuCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VJbmNsdWRlUGF0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51c2VJbmNsdWRlUGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIFR1cm5zIG9mZiBzZWFyY2hpbmcgdGhlIHByZWZpeCBhbmQgZmFsbGJhY2sgZGlyZWN0b3JpZXMgZm9yIGNsYXNzZXMKICAgICAqIHRoYXQgaGF2ZSBub3QgYmVlbiByZWdpc3RlcmVkIHdpdGggdGhlIGNsYXNzIG1hcC4KICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbCAkY2xhc3NNYXBBdXRob3JpdGF0aXZlCiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDbGFzc01hcEF1dGhvcml0YXRpdmUoJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlID0gJGNsYXNzTWFwQXV0aG9yaXRhdGl2ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFNob3VsZCBjbGFzcyBsb29rdXAgZmFpbCBpZiBub3QgZm91bmQgaW4gdGhlIGN1cnJlbnQgY2xhc3MgbWFwPwogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNDbGFzc01hcEF1dGhvcml0YXRpdmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2xhc3NNYXBBdXRob3JpdGF0aXZlOwogICAgfQoKICAgIC8qKgogICAgICogQVBDdSBwcmVmaXggdG8gdXNlIHRvIGNhY2hlIGZvdW5kL25vdC1mb3VuZCBjbGFzc2VzLCBpZiB0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRhcGN1UHJlZml4CiAgICAgKgogICAgICogQHJldHVybiB2b2lkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBcGN1UHJlZml4KCRhcGN1UHJlZml4KQogICAgewogICAgICAgICR0aGlzLT5hcGN1UHJlZml4ID0gZnVuY3Rpb25fZXhpc3RzKCdhcGN1X2ZldGNoJykgJiYgZmlsdGVyX3ZhcihpbmlfZ2V0KCdhcGMuZW5hYmxlZCcpLCBGSUxURVJfVkFMSURBVEVfQk9PTEVBTikgPyAkYXBjdVByZWZpeCA6IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgQVBDdSBwcmVmaXggaW4gdXNlLCBvciBudWxsIGlmIEFQQ3UgY2FjaGluZyBpcyBub3QgZW5hYmxlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBcGN1UHJlZml4KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmFwY3VQcmVmaXg7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWdpc3RlcnMgdGhpcyBpbnN0YW5jZSBhcyBhbiBhdXRvbG9hZGVyLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICRwcmVwZW5kIFdoZXRoZXIgdG8gcHJlcGVuZCB0aGUgYXV0b2xvYWRlciBvciBub3QKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlZ2lzdGVyKCRwcmVwZW5kID0gZmFsc2UpCiAgICB7CiAgICAgICAgc3BsX2F1dG9sb2FkX3JlZ2lzdGVyKGFycmF5KCR0aGlzLCAnbG9hZENsYXNzJyksIHRydWUsICRwcmVwZW5kKTsKCiAgICAgICAgaWYgKG51bGwgPT09ICR0aGlzLT52ZW5kb3JEaXIpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRwcmVwZW5kKSB7CiAgICAgICAgICAgIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVycyA9IGFycmF5KCR0aGlzLT52ZW5kb3JEaXIgPT4gJHRoaXMpICsgc2VsZjo6JHJlZ2lzdGVyZWRMb2FkZXJzOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHVuc2V0KHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyc1skdGhpcy0+dmVuZG9yRGlyXSk7CiAgICAgICAgICAgIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyc1skdGhpcy0+dmVuZG9yRGlyXSA9ICR0aGlzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFVucmVnaXN0ZXJzIHRoaXMgaW5zdGFuY2UgYXMgYW4gYXV0b2xvYWRlci4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVucmVnaXN0ZXIoKQogICAgewogICAgICAgIHNwbF9hdXRvbG9hZF91bnJlZ2lzdGVyKGFycmF5KCR0aGlzLCAnbG9hZENsYXNzJykpOwoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPnZlbmRvckRpcikgewogICAgICAgICAgICB1bnNldChzZWxmOjokcmVnaXN0ZXJlZExvYWRlcnNbJHRoaXMtPnZlbmRvckRpcl0pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExvYWRzIHRoZSBnaXZlbiBjbGFzcyBvciBpbnRlcmZhY2UuCiAgICAgKgogICAgICogQHBhcmFtICBzdHJpbmcgICAgJGNsYXNzIFRoZSBuYW1lIG9mIHRoZSBjbGFzcwogICAgICogQHJldHVybiB0cnVlfG51bGwgVHJ1ZSBpZiBsb2FkZWQsIG51bGwgb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQ2xhc3MoJGNsYXNzKQogICAgewogICAgICAgIGlmICgkZmlsZSA9ICR0aGlzLT5maW5kRmlsZSgkY2xhc3MpKSB7CiAgICAgICAgICAgICRpbmNsdWRlRmlsZSA9IHNlbGY6OiRpbmNsdWRlRmlsZTsKICAgICAgICAgICAgJGluY2x1ZGVGaWxlKCRmaWxlKTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBGaW5kcyB0aGUgcGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgY2xhc3MgaXMgZGVmaW5lZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjbGFzcyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSBUaGUgcGF0aCBpZiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmaW5kRmlsZSgkY2xhc3MpCiAgICB7CiAgICAgICAgLy8gY2xhc3MgbWFwIGxvb2t1cAogICAgICAgIGlmIChpc3NldCgkdGhpcy0+Y2xhc3NNYXBbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jbGFzc01hcFskY2xhc3NdOwogICAgICAgIH0KICAgICAgICBpZiAoJHRoaXMtPmNsYXNzTWFwQXV0aG9yaXRhdGl2ZSB8fCBpc3NldCgkdGhpcy0+bWlzc2luZ0NsYXNzZXNbJGNsYXNzXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgJGZpbGUgPSBhcGN1X2ZldGNoKCR0aGlzLT5hcGN1UHJlZml4LiRjbGFzcywgJGhpdCk7CiAgICAgICAgICAgIGlmICgkaGl0KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRmaWxlID0gJHRoaXMtPmZpbmRGaWxlV2l0aEV4dGVuc2lvbigkY2xhc3MsICcucGhwJyk7CgogICAgICAgIC8vIFNlYXJjaCBmb3IgSGFjayBmaWxlcyBpZiB3ZSBhcmUgcnVubmluZyBvbiBISFZNCiAgICAgICAgaWYgKGZhbHNlID09PSAkZmlsZSAmJiBkZWZpbmVkKCdISFZNX1ZFUlNJT04nKSkgewogICAgICAgICAgICAkZmlsZSA9ICR0aGlzLT5maW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAnLmhoJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmFwY3VQcmVmaXgpIHsKICAgICAgICAgICAgYXBjdV9hZGQoJHRoaXMtPmFwY3VQcmVmaXguJGNsYXNzLCAkZmlsZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoZmFsc2UgPT09ICRmaWxlKSB7CiAgICAgICAgICAgIC8vIFJlbWVtYmVyIHRoYXQgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdC4KICAgICAgICAgICAgJHRoaXMtPm1pc3NpbmdDbGFzc2VzWyRjbGFzc10gPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmaWxlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgbG9hZGVycyBrZXllZCBieSB0aGVpciBjb3JyZXNwb25kaW5nIHZlbmRvciBkaXJlY3Rvcmllcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5PHN0cmluZywgc2VsZj4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWdpc3RlcmVkTG9hZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OiRyZWdpc3RlcmVkTG9hZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICRjbGFzcwogICAgICogQHBhcmFtICBzdHJpbmcgICAgICAgJGV4dAogICAgICogQHJldHVybiBzdHJpbmd8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaW5kRmlsZVdpdGhFeHRlbnNpb24oJGNsYXNzLCAkZXh0KQogICAgewogICAgICAgIC8vIFBTUi00IGxvb2t1cAogICAgICAgICRsb2dpY2FsUGF0aFBzcjQgPSBzdHJ0cigkY2xhc3MsICdcXCcsIERJUkVDVE9SWV9TRVBBUkFUT1IpIC4gJGV4dDsKCiAgICAgICAgJGZpcnN0ID0gJGNsYXNzWzBdOwogICAgICAgIGlmIChpc3NldCgkdGhpcy0+cHJlZml4TGVuZ3Roc1BzcjRbJGZpcnN0XSkpIHsKICAgICAgICAgICAgJHN1YlBhdGggPSAkY2xhc3M7CiAgICAgICAgICAgIHdoaWxlIChmYWxzZSAhPT0gJGxhc3RQb3MgPSBzdHJycG9zKCRzdWJQYXRoLCAnXFwnKSkgewogICAgICAgICAgICAgICAgJHN1YlBhdGggPSBzdWJzdHIoJHN1YlBhdGgsIDAsICRsYXN0UG9zKTsKICAgICAgICAgICAgICAgICRzZWFyY2ggPSAkc3ViUGF0aCAuICdcXCc7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeERpcnNQc3I0WyRzZWFyY2hdKSkgewogICAgICAgICAgICAgICAgICAgICRwYXRoRW5kID0gRElSRUNUT1JZX1NFUEFSQVRPUiAuIHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkbGFzdFBvcyArIDEpOwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5wcmVmaXhEaXJzUHNyNFskc2VhcmNoXSBhcyAkZGlyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiAkcGF0aEVuZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTQgZmFsbGJhY2sgZGlycwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5mYWxsYmFja0RpcnNQc3I0IGFzICRkaXIpIHsKICAgICAgICAgICAgaWYgKGZpbGVfZXhpc3RzKCRmaWxlID0gJGRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkbG9naWNhbFBhdGhQc3I0KSkgewogICAgICAgICAgICAgICAgcmV0dXJuICRmaWxlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBQU1ItMCBsb29rdXAKICAgICAgICBpZiAoZmFsc2UgIT09ICRwb3MgPSBzdHJycG9zKCRjbGFzcywgJ1xcJykpIHsKICAgICAgICAgICAgLy8gbmFtZXNwYWNlZCBjbGFzcyBuYW1lCiAgICAgICAgICAgICRsb2dpY2FsUGF0aFBzcjAgPSBzdWJzdHIoJGxvZ2ljYWxQYXRoUHNyNCwgMCwgJHBvcyArIDEpCiAgICAgICAgICAgICAgICAuIHN0cnRyKHN1YnN0cigkbG9naWNhbFBhdGhQc3I0LCAkcG9zICsgMSksICdfJywgRElSRUNUT1JZX1NFUEFSQVRPUik7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gUEVBUi1saWtlIGNsYXNzIG5hbWUKICAgICAgICAgICAgJGxvZ2ljYWxQYXRoUHNyMCA9IHN0cnRyKCRjbGFzcywgJ18nLCBESVJFQ1RPUllfU0VQQVJBVE9SKSAuICRleHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnByZWZpeGVzUHNyMFskZmlyc3RdKSkgewogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+cHJlZml4ZXNQc3IwWyRmaXJzdF0gYXMgJHByZWZpeCA9PiAkZGlycykgewogICAgICAgICAgICAgICAgaWYgKDAgPT09IHN0cnBvcygkY2xhc3MsICRwcmVmaXgpKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGRpcnMgYXMgJGRpcikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZpbGUgPSAkZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGZpbGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFBTUi0wIGZhbGxiYWNrIGRpcnMKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZmFsbGJhY2tEaXJzUHNyMCBhcyAkZGlyKSB7CiAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkZmlsZSA9ICRkaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGxvZ2ljYWxQYXRoUHNyMCkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUFNSLTAgaW5jbHVkZSBwYXRocy4KICAgICAgICBpZiAoJHRoaXMtPnVzZUluY2x1ZGVQYXRoICYmICRmaWxlID0gc3RyZWFtX3Jlc29sdmVfaW5jbHVkZV9wYXRoKCRsb2dpY2FsUGF0aFBzcjApKSB7CiAgICAgICAgICAgIHJldHVybiAkZmlsZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpbml0aWFsaXplSW5jbHVkZUNsb3N1cmUoKQogICAgewogICAgICAgIGlmIChzZWxmOjokaW5jbHVkZUZpbGUgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogU2NvcGUgaXNvbGF0ZWQgaW5jbHVkZS4KICAgICAgICAgKgogICAgICAgICAqIFByZXZlbnRzIGFjY2VzcyB0byAkdGhpcy9zZWxmIGZyb20gaW5jbHVkZWQgZmlsZXMuCiAgICAgICAgICoKICAgICAgICAgKiBAcGFyYW0gIHN0cmluZyAkZmlsZQogICAgICAgICAqIEByZXR1cm4gdm9pZAogICAgICAgICAqLwogICAgICAgIHNlbGY6OiRpbmNsdWRlRmlsZSA9IFxDbG9zdXJlOjpiaW5kKHN0YXRpYyBmdW5jdGlvbigkZmlsZSkgewogICAgICAgICAgICBpbmNsdWRlICRmaWxlOwogICAgICAgIH0sIG51bGwsIG51bGwpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/installed.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgInBhY2thZ2VzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiYnJpY2svbWF0aCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOS4zIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIwLjkuMy4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9icmljay9tYXRoLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImNhNTdkMThmMDI4Zjg0Zjc3N2IyMTY4Y2QxOTExYjBkZWUyMzQzYWUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9icmljay9tYXRoL3ppcGJhbGwvY2E1N2QxOGYwMjhmODRmNzc3YjIxNjhjZDE5MTFiMGRlZTIzNDNhZSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImNhNTdkMThmMDI4Zjg0Zjc3N2IyMTY4Y2QxOTExYjBkZWUyMzQzYWUiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgInBocCI6ICJeNy4xIHx8IF44LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHAtY292ZXJhbGxzL3BocC1jb3ZlcmFsbHMiOiAiXjIuMiIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl43LjUuMTUgfHwgXjguNSB8fCBeOS4wIiwKICAgICAgICAgICAgICAgICJ2aW1lby9wc2FsbSI6ICI0LjkuMiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wOC0xNVQyMDo1MDoxOCswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJCcmlja1xcTWF0aFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQXJiaXRyYXJ5LXByZWNpc2lvbiBhcml0aG1ldGljIGxpYnJhcnkiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiQXJiaXRyYXJ5LXByZWNpc2lvbiIsCiAgICAgICAgICAgICAgICAiQmlnSW50ZWdlciIsCiAgICAgICAgICAgICAgICAiQmlnUmF0aW9uYWwiLAogICAgICAgICAgICAgICAgImFyaXRobWV0aWMiLAogICAgICAgICAgICAgICAgImJpZ2RlY2ltYWwiLAogICAgICAgICAgICAgICAgImJpZ251bSIsCiAgICAgICAgICAgICAgICAiYnJpY2siLAogICAgICAgICAgICAgICAgIm1hdGgiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vYnJpY2svbWF0aC90cmVlLzAuOS4zIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9CZW5Nb3JlbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9icmljay9tYXRoIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9icmljay9tYXRoIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJmZ3Jvc3NlL3BocGFzbjEiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi41LjAiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuNS4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0MjA2MGVkNDUzNDQ3ODlmYjlmMjFmOWYxODY0ZmM0N2I5ZTM1MDdiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZmdyb3NzZS9QSFBBU04xL3ppcGJhbGwvNDIwNjBlZDQ1MzQ0Nzg5ZmI5ZjIxZjlmMTg2NGZjNDdiOWUzNTA3YiIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQyMDYwZWQ0NTM0NDc4OWZiOWYyMWY5ZjE4NjRmYzQ3YjllMzUwN2IiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICJeNy4xIHx8IF44LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJwaHAtY292ZXJhbGxzL3BocC1jb3ZlcmFsbHMiOiAifjIuMCIsCiAgICAgICAgICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl43LjAgfHwgXjguMCB8fCBeOS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJleHQtYmNtYXRoIjogIkJDbWF0aCBpcyB0aGUgZmFsbGJhY2sgZXh0ZW5zaW9uIGZvciBiaWcgaW50ZWdlciBjYWxjdWxhdGlvbnMiLAogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIkZvciBsb2FkaW5nIE9JRCBpbmZvcm1hdGlvbiBmcm9tIHRoZSB3ZWIgaWYgdGhleSBoYXZlIG5vdCBiZWUgZGVmaW5lZCBzdGF0aWNhbGx5IiwKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIkdNUCBpcyB0aGUgcHJlZmVycmVkIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAgICAgICAgICJwaHBzZWNsaWIvYmNtYXRoX2NvbXBhdCI6ICJCQ21hdGggcG9seWZpbGwgZm9yIHNlcnZlcnMgd2hlcmUgbmVpdGhlciBHTVAgbm9yIEJDbWF0aCBpcyBhdmFpbGFibGUiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjItMTItMTlUMTE6MDg6MjYrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIkZHXFwiOiAibGliLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZyaWVkcmljaCBHcm/Dn2UiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJmcmllZHJpY2guZ3Jvc3NlQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlIiwKICAgICAgICAgICAgICAgICAgICAicm9sZSI6ICJBdXRob3IiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZS9QSFBBU04xL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgUEhQIEZyYW1ld29yayB0aGF0IGFsbG93cyB5b3UgdG8gZW5jb2RlIGFuZCBkZWNvZGUgYXJiaXRyYXJ5IEFTTi4xIHN0cnVjdHVyZXMgdXNpbmcgdGhlIElUVS1UIFguNjkwIEVuY29kaW5nIFJ1bGVzLiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vRkdyb3NzZS9QSFBBU04xIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkRFUiIsCiAgICAgICAgICAgICAgICAiYXNuLjEiLAogICAgICAgICAgICAgICAgImFzbjEiLAogICAgICAgICAgICAgICAgImJlciIsCiAgICAgICAgICAgICAgICAiYmluYXJ5IiwKICAgICAgICAgICAgICAgICJkZWNvZGluZyIsCiAgICAgICAgICAgICAgICAiZW5jb2RpbmciLAogICAgICAgICAgICAgICAgInguNTA5IiwKICAgICAgICAgICAgICAgICJ4LjY5MCIsCiAgICAgICAgICAgICAgICAieDUwOSIsCiAgICAgICAgICAgICAgICAieDY5MCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS90cmVlL3YyLjUuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImFiYW5kb25lZCI6IHRydWUsCiAgICAgICAgICAgICJpbnN0YWxsLXBhdGgiOiAiLi4vZmdyb3NzZS9waHBhc24xIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJndXp6bGVodHRwL2d1enpsZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMTAuMCIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiNy4xMC4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYjUxYWM3MDdjZmE0MjBiN2JmZDRlNGQ1ZTUxMGJhODAwOGU4MjJiNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9ndXp6bGUvemlwYmFsbC9iNTFhYzcwN2NmYTQyMGI3YmZkNGU0ZDVlNTEwYmE4MDA4ZTgyMmI0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiYjUxYWM3MDdjZmE0MjBiN2JmZDRlNGQ1ZTUxMGJhODAwOGU4MjJiNCIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9wcm9taXNlcyI6ICJeMi4zIiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL3BzcjciOiAiXjIuOCIsCiAgICAgICAgICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiOiAiXjIuMiB8fCBeMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicHJvdmlkZSI6IHsKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQtaW1wbGVtZW50YXRpb24iOiAiMS4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAiYmFtYXJuaS9jb21wb3Nlci1iaW4tcGx1Z2luIjogIl4xLjguMiIsCiAgICAgICAgICAgICAgICAiZXh0LWN1cmwiOiAiKiIsCiAgICAgICAgICAgICAgICAiZ3V6emxlL2NsaWVudC1pbnRlZ3JhdGlvbi10ZXN0cyI6ICIzLjAuMiIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIl4xLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC41LjM5IHx8IF45LjYuMjAiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiXjEuMSB8fCBeMi4wIHx8IF4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIlJlcXVpcmVkIGZvciBDVVJMIGhhbmRsZXIgc3VwcG9ydCIsCiAgICAgICAgICAgICAgICAiZXh0LWludGwiOiAiUmVxdWlyZWQgZm9yIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIChJRE4pIHN1cHBvcnQiLAogICAgICAgICAgICAgICAgInBzci9sb2ciOiAiUmVxdWlyZWQgZm9yIHVzaW5nIHRoZSBMb2cgbWlkZGxld2FyZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNS0wOC0yM1QyMjozNjowMSswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYmFtYXJuaS1iaW4iOiB7CiAgICAgICAgICAgICAgICAgICAgImJpbi1saW5rcyI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgImZvcndhcmQtY29tbWFuZCI6IGZhbHNlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy9mdW5jdGlvbnNfaW5jbHVkZS5waHAiCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImhlbGxvQGdqY2FtcGJlbGwuY28udWsiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJKZXJlbXkgTGluZGJsb20iLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJqZXJlbWVhbWlhQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qZXJlbWVhbWlhIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHZW9yZ2UgTXBvbm9zIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ21wb25vc0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ21wb25vcyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIE55aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhZ2lrYXphcm1hcmsiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RvYmlvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkd1enpsZSBpcyBhIFBIUCBIVFRQIGNsaWVudCBsaWJyYXJ5IiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImNsaWVudCIsCiAgICAgICAgICAgICAgICAiY3VybCIsCiAgICAgICAgICAgICAgICAiZnJhbWV3b3JrIiwKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJodHRwIGNsaWVudCIsCiAgICAgICAgICAgICAgICAicHNyLTE4IiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVzdCIsCiAgICAgICAgICAgICAgICAid2ViIHNlcnZpY2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS90cmVlLzcuMTAuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vTnlob2xtIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly90aWRlbGlmdC5jb20vZnVuZGluZy9naXRodWIvcGFja2FnaXN0L2d1enpsZWh0dHAvZ3V6emxlIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJ0aWRlbGlmdCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9ndXp6bGVodHRwL2d1enpsZSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wcm9taXNlcyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjMuMC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHJvbWlzZXMuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDgxNTU3YjEzMGVmMzc5MGNmODJiNzEzNjY3YjQzMDMwZGM5Yzk1NyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL2d1enpsZS9wcm9taXNlcy96aXBiYWxsLzQ4MTU1N2IxMzBlZjM3OTBjZjgyYjcxMzY2N2I0MzAzMGRjOWM5NTciLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI0ODE1NTdiMTMwZWYzNzkwY2Y4MmI3MTM2NjdiNDMwMzBkYzljOTU3IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJiYW1hcm5pL2NvbXBvc2VyLWJpbi1wbHVnaW4iOiAiXjEuOC4yIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguNS40NCB8fCBeOS42LjI1IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDI1LTA4LTIyVDE0OjM0OjA4KzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJiYW1hcm5pLWJpbiI6IHsKICAgICAgICAgICAgICAgICAgICAiYmluLWxpbmtzIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiR3V6emxlSHR0cFxcUHJvbWlzZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHcmFoYW0gQ2FtcGJlbGwiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJoZWxsb0BnamNhbXBiZWxsLmNvLnVrIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJNaWNoYWVsIERvd2xpbmciLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIE55aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIFNjaHVsdHplIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAid2VibWFzdGVyQHR1Ym8td29ybGQuZGUiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vVG9iaW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIHByb21pc2VzIGxpYnJhcnkiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAicHJvbWlzZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHJvbWlzZXMvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcy90cmVlLzIuMy4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdGh1YiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3RpZGVsaWZ0LmNvbS9mdW5kaW5nL2dpdGh1Yi9wYWNrYWdpc3QvZ3V6emxlaHR0cC9wcm9taXNlcyIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidGlkZWxpZnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpbnN0YWxsLXBhdGgiOiAiLi4vZ3V6emxlaHR0cC9wcm9taXNlcyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wc3I3IiwKICAgICAgICAgICAgInZlcnNpb24iOiAiMi45LjAiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuOS4wLjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjdkMGVkNDJmMjhlNDJkNjEzNTJhN2E3OWRlNjgyZTVlNjdmZWM4ODQiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9ndXp6bGUvcHNyNy96aXBiYWxsLzdkMGVkNDJmMjhlNDJkNjEzNTJhN2E3OWRlNjgyZTVlNjdmZWM4ODQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3ZDBlZDQyZjI4ZTQyZDYxMzUyYTdhNzlkZTY4MmU1ZTY3ZmVjODg0IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiLAogICAgICAgICAgICAgICAgInBzci9odHRwLWZhY3RvcnkiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4xIHx8IF4yLjAiLAogICAgICAgICAgICAgICAgInJhbG91cGhpZS9nZXRhbGxoZWFkZXJzIjogIl4zLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJwcm92aWRlIjogewogICAgICAgICAgICAgICAgInBzci9odHRwLWZhY3RvcnktaW1wbGVtZW50YXRpb24iOiAiMS4wIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlLWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6ICJeMS44LjIiLAogICAgICAgICAgICAgICAgImh0dHAtaW50ZXJvcC9odHRwLWZhY3RvcnktdGVzdHMiOiAiMC45LjAiLAogICAgICAgICAgICAgICAgImpzaHR0cC9taW1lLWRiIjogIjEuNTQuMC4xIiwKICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjguNS40NCB8fCBeOS42LjI1IgogICAgICAgICAgICB9LAogICAgICAgICAgICAic3VnZ2VzdCI6IHsKICAgICAgICAgICAgICAgICJsYW1pbmFzL2xhbWluYXMtaHR0cGhhbmRsZXJydW5uZXIiOiAiRW1pdCBQU1ItNyByZXNwb25zZXMiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjYtMDMtMTBUMTY6NDE6MDIrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJhbWFybmktYmluIjogewogICAgICAgICAgICAgICAgICAgICJiaW4tbGlua3MiOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICJmb3J3YXJkLWNvbW1hbmQiOiBmYWxzZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJHdXp6bGVIdHRwXFxQc3I3XFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogImhlbGxvQGdqY2FtcGJlbGwuY28udWsiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vbXRkb3dsaW5nIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHZW9yZ2UgTXBvbm9zIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAiZ21wb25vc0BnbWFpbC5jb20iLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vZ21wb25vcyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIE55aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhZ2lrYXphcm1hcmsiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1RvYmlvbiIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibWFyay5zYWdpa2F6YXJAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zYWdpa2F6YXJtYXJrLmh1IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTcgbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsc28gcHJvdmlkZXMgY29tbW9uIHV0aWxpdHkgbWV0aG9kcyIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJodHRwIiwKICAgICAgICAgICAgICAgICJtZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICAgICAicmVzcG9uc2UiLAogICAgICAgICAgICAgICAgInN0cmVhbSIsCiAgICAgICAgICAgICAgICAidXJpIiwKICAgICAgICAgICAgICAgICJ1cmwiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L3RyZWUvMi45LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJmdW5kaW5nIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL0dyYWhhbUNhbXBiZWxsIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0aHViIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vdGlkZWxpZnQuY29tL2Z1bmRpbmcvZ2l0aHViL3BhY2thZ2lzdC9ndXp6bGVodHRwL3BzcjciLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInRpZGVsaWZ0IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL2d1enpsZWh0dHAvcHNyNyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAibWluaXNobGluay93ZWItcHVzaCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInY2LjAuNyIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiNi4wLjcuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMjNhNzhiODU4NWJkY2VjYWEzMjNmMWRkMWFjZGM1NDhlMjg4OTJmZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL3ppcGJhbGwvMjNhNzhiODU4NWJkY2VjYWEzMjNmMWRkMWFjZGM1NDhlMjg4OTJmZSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjIzYTc4Yjg1ODViZGNlY2FhMzIzZjFkZDFhY2RjNTQ4ZTI4ODkyZmUiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1qc29uIjogIioiLAogICAgICAgICAgICAgICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICAgICAgICAgICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNy4wLjF8XjYuMiIsCiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4yIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LWtleS1tZ210IjogIl4yLjAiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIjogIl4yLjAiLAogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYSI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIl4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAgICAgICAgICJmcmllbmRzb2ZwaHAvcGhwLWNzLWZpeGVyIjogIl4yLjE0IiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4iOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC4wfF45LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMTEtMjJUMTc6MzY6MDErMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiTWluaXNobGlua1xcV2ViUHVzaFxcIjogInNyYyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkxvdWlzIExhZ3JhbmdlIiwKICAgICAgICAgICAgICAgICAgICAiZW1haWwiOiAibGFncmFuZ2UubG91aXNAZ21haWwuY29tIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL01pbmlzaGxpbmsiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJXZWIgUHVzaCBsaWJyYXJ5IGZvciBQSFAiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIlB1c2ggQVBJIiwKICAgICAgICAgICAgICAgICJXZWJQdXNoIiwKICAgICAgICAgICAgICAgICJub3RpZmljYXRpb25zIiwKICAgICAgICAgICAgICAgICJwdXNoIiwKICAgICAgICAgICAgICAgICJ3ZWIiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgImlzc3VlcyI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXB1c2gtbGlicy93ZWItcHVzaC1waHAvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wdXNoLWxpYnMvd2ViLXB1c2gtcGhwL3RyZWUvdjYuMC43IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL21pbmlzaGxpbmsvd2ViLXB1c2giCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogInBzci9odHRwLWNsaWVudCIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjAuMy4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtY2xpZW50LmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImJiNTkwNmVkYzFjMzI0YzlhMDVhYTA4NzNkNDAxMTc5NDFlNWZhOTAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9waHAtZmlnL2h0dHAtY2xpZW50L3ppcGJhbGwvYmI1OTA2ZWRjMWMzMjRjOWEwNWFhMDg3M2Q0MDExNzk0MWU1ZmE5MCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogImJiNTkwNmVkYzFjMzI0YzlhMDVhYTA4NzNkNDAxMTc5NDFlNWZhOTAiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICJeNy4wIHx8IF44LjAiLAogICAgICAgICAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMCB8fCBeMi4wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDIzLTA5LTIzVDE0OjE3OjUwKzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJleHRyYSI6IHsKICAgICAgICAgICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICAgICAgICAgImRldi1tYXN0ZXIiOiAiMS4wLngtZGV2IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJQc3JcXEh0dHBcXENsaWVudFxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBjbGllbnRzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtY2xpZW50IiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgImh0dHAtY2xpZW50IiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci0xOCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtY2xpZW50IgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3Bzci9odHRwLWNsaWVudCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicHNyL2h0dHAtZmFjdG9yeSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIxLjEuMC4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtZmFjdG9yeS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIyYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcGhwLWZpZy9odHRwLWZhY3RvcnkvemlwYmFsbC8yYjQ3NjVmZGRmZTNiNTA4YWM2MmY4MjllODUyYjE1MDFkM2Y2ZThhIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMmI0NzY1ZmRkZmUzYjUwOGFjNjJmODI5ZTg1MmIxNTAxZDNmNmU4YSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49Ny4xIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1tZXNzYWdlIjogIl4xLjAgfHwgXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyNC0wNC0xNVQxMjowNjoxNCswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiZXh0cmEiOiB7CiAgICAgICAgICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjEuMC54LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3d3dy5waHAtZmlnLm9yZy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJQU1ItMTc6IENvbW1vbiBpbnRlcmZhY2VzIGZvciBQU1ItNyBIVFRQIG1lc3NhZ2UgZmFjdG9yaWVzIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgImZhY3RvcnkiLAogICAgICAgICAgICAgICAgImh0dHAiLAogICAgICAgICAgICAgICAgIm1lc3NhZ2UiLAogICAgICAgICAgICAgICAgInBzciIsCiAgICAgICAgICAgICAgICAicHNyLTE3IiwKICAgICAgICAgICAgICAgICJwc3ItNyIsCiAgICAgICAgICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgICAgICAgICAicmVzcG9uc2UiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWZhY3RvcnkiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsLXBhdGgiOiAiLi4vcHNyL2h0dHAtZmFjdG9yeSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAicHNyL2h0dHAtbWVzc2FnZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMCIsCiAgICAgICAgICAgICJ2ZXJzaW9uX25vcm1hbGl6ZWQiOiAiMi4wLjAuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLW1lc3NhZ2UuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDAyZDM1YmNiOTJjNzBjMDI2ZDFhNmE5ODgzZjA2YjJlYWQyM2Q3MSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3BocC1maWcvaHR0cC1tZXNzYWdlL3ppcGJhbGwvNDAyZDM1YmNiOTJjNzBjMDI2ZDFhNmE5ODgzZjA2YjJlYWQyM2Q3MSIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQwMmQzNWJjYjkyYzcwYzAyNmQxYTZhOTg4M2YwNmIyZWFkMjNkNzEiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICJeNy4yIHx8IF44LjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjMtMDQtMDRUMDk6NTQ6NTErMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIyLjAueC1kZXYiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICAgICAgICAgIlBzclxcSHR0cFxcTWVzc2FnZVxcIjogInNyYy8iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLW1lc3NhZ2UiLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiaHR0cCIsCiAgICAgICAgICAgICAgICAiaHR0cC1tZXNzYWdlIiwKICAgICAgICAgICAgICAgICJwc3IiLAogICAgICAgICAgICAgICAgInBzci03IiwKICAgICAgICAgICAgICAgICJyZXF1ZXN0IiwKICAgICAgICAgICAgICAgICJyZXNwb25zZSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtbWVzc2FnZS90cmVlLzIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi9wc3IvaHR0cC1tZXNzYWdlIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJyYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4zIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIzLjAuMy4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIxMjBiNjA1ZGZlYjk5NjgwOGMzMWI2NDc3MjkwYTcxNGQzNTZlODIyIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvemlwYmFsbC8xMjBiNjA1ZGZlYjk5NjgwOGMzMWI2NDc3MjkwYTcxNGQzNTZlODIyIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMTIwYjYwNWRmZWI5OTY4MDhjMzFiNjQ3NzI5MGE3MTRkMzU2ZTgyMiIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAicGhwIjogIj49NS42IgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgICAgICAgICAicGhwLWNvdmVyYWxscy9waHAtY292ZXJhbGxzIjogIl4yLjEiLAogICAgICAgICAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNSB8fCBeNi41IgogICAgICAgICAgICB9LAogICAgICAgICAgICAidGltZSI6ICIyMDE5LTAzLTA4VDA4OjU1OjM3KzAwOjAwIiwKICAgICAgICAgICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAgICAgICAgICJpbnN0YWxsYXRpb24tc291cmNlIjogImRpc3QiLAogICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgInNyYy9nZXRhbGxoZWFkZXJzLnBocCIKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIlJhbHBoIEtoYXR0YXIiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJyYWxwaC5raGF0dGFyQGdtYWlsLmNvbSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkEgcG9seWZpbGwgZm9yIGdldGFsbGhlYWRlcnMuIiwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy9pc3N1ZXMiLAogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvdHJlZS9kZXZlbG9wIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJzcG9ta3ktbGFicy9iYXNlNjR1cmwiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4wLjQiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMC40LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI3NzUyY2U5MzFlYzI4NWRhNGVkMWY0YzVhYTI3ZTQ1ZTA5N2JlNjFkIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvU3BvbWt5LUxhYnMvYmFzZTY0dXJsL3ppcGJhbGwvNzc1MmNlOTMxZWMyODVkYTRlZDFmNGM1YWEyN2U0NWUwOTdiZTYxZCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjc3NTJjZTkzMWVjMjg1ZGE0ZWQxZjRjNWFhMjdlNDVlMDk3YmU2MWQiLAogICAgICAgICAgICAgICAgInNoYXN1bSI6ICIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgInBocCI6ICI+PTcuMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICAgICAgICAgInBocHN0YW4vZXh0ZW5zaW9uLWluc3RhbGxlciI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJwaHBzdGFuL3BocHN0YW4iOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1iZWJlcmxlaS1hc3NlcnQiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1kZXByZWNhdGlvbi1ydWxlcyI6ICJeMC4xMXxeMC4xMiIsCiAgICAgICAgICAgICAgICAicGhwc3Rhbi9waHBzdGFuLXBocHVuaXQiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1zdHJpY3QtcnVsZXMiOiAiXjAuMTF8XjAuMTIiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjAtMTEtMDNUMDk6MTA6MjUrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiQmFzZTY0VXJsXFwiOiAic3JjLyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkJhc2UgNjQgVVJMIFNhZmUgRW5jb2RpbmcvRGVjb2RpbmcgUEhQIExpYnJhcnkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybCIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJiYXNlNjQiLAogICAgICAgICAgICAgICAgInJmYzQ2NDgiLAogICAgICAgICAgICAgICAgInNhZmUiLAogICAgICAgICAgICAgICAgInVybCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAiaXNzdWVzIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3ktTGFicy9iYXNlNjR1cmwvaXNzdWVzIiwKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reS1MYWJzL2Jhc2U2NHVybC90cmVlL3YyLjAuNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly93d3cucGF0cmVvbi5jb20vRmxvcmVudE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJwYXRyZW9uIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3Nwb21reS1sYWJzL2Jhc2U2NHVybCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi41LjQiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuNS40LjAiLAogICAgICAgICAgICAic291cmNlIjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiZ2l0IiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9naXRodWIuY29tL3N5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjYwNTM4OWYyYTdlNTYyNWYyNzNiNTM5NjBkYzQ2YWVhZjljNjI5MTgiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cy96aXBiYWxsLzYwNTM4OWYyYTdlNTYyNWYyNzNiNTM5NjBkYzQ2YWVhZjljNjI5MTgiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI2MDUzODlmMmE3ZTU2MjVmMjczYjUzOTYwZGM0NmFlYWY5YzYyOTE4IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjQtMDktMjVUMTQ6MTE6MTMrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImV4dHJhIjogewogICAgICAgICAgICAgICAgInRoYW5rcyI6IHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2NvbnRyYWN0cyIsCiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAic3ltZm9ueS9jb250cmFjdHMiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgImJyYW5jaC1hbGlhcyI6IHsKICAgICAgICAgICAgICAgICAgICAiZGV2LW1haW4iOiAiMi41LWRldiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICAgICAgICAiZnVuY3Rpb24ucGhwIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiTmljb2xhcyBHcmVrYXMiLAogICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vc3ltZm9ueS5jb20vY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQSBnZW5lcmljIGZ1bmN0aW9uIGFuZCBjb252ZW50aW9uIHRvIHRyaWdnZXIgZGVwcmVjYXRpb24gbm90aWNlcyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tIiwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cy90cmVlL3YyLjUuNCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3N5bWZvbnkuY29tL3Nwb25zb3IiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogImN1c3RvbSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vZmFicG90IiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXRodWIiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly90aWRlbGlmdC5jb20vZnVuZGluZy9naXRodWIvcGFja2FnaXN0L3N5bWZvbnkvc3ltZm9ueSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAidGlkZWxpZnQiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJpbnN0YWxsLXBhdGgiOiAiLi4vc3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3QtY29yZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjIuMTEiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMi4xMS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWNvcmUuZ2l0IiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNTNiZWI2ZjZjMWVlYzRmYTkzYzFjM2U1ZDllNTcwMWU3MWZhMTY3OCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJ6aXAiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi10b2tlbi9qd3QtY29yZS96aXBiYWxsLzUzYmViNmY2YzFlZWM0ZmE5M2MxYzNlNWQ5ZTU3MDFlNzFmYTE2NzgiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI1M2JlYjZmNmMxZWVjNGZhOTNjMWMzZTVkOWU1NzAxZTcxZmExNjc4IiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIsCiAgICAgICAgICAgICAgICAiZXh0LWpzb24iOiAiKiIsCiAgICAgICAgICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICAgICAgICAgImZncm9zc2UvcGhwYXNuMSI6ICJeMi4wIiwKICAgICAgICAgICAgICAgICJwaHAiOiAiPj03LjIiLAogICAgICAgICAgICAgICAgInNwb21reS1sYWJzL2Jhc2U2NHVybCI6ICJeMS4wfF4yLjAiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJjb25mbGljdCI6IHsKICAgICAgICAgICAgICAgICJzcG9ta3ktbGFicy9qb3NlIjogIioiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMTdUMTQ6NTU6NTIrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiSm9zZVxcQ29tcG9uZW50XFxDb3JlXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmsvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ29yZSBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1jb3JlL3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi93ZWItdG9rZW4vand0LWNvcmUiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3Qta2V5LW1nbXQiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4yLjExIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjIuMTEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1rZXktbWdtdC96aXBiYWxsLzBiMTE2Mzc5NTE1NzAwZDIzN2I0ZTVkZTg2ODc5MDc4Y2NiMDlkOGEiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICAgICAgICAgICAgICJwc3IvaHR0cC1jbGllbnQiOiAiXjEuMCIsCiAgICAgICAgICAgICAgICAicHNyL2h0dHAtZmFjdG9yeSI6ICJeMS4wIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LWNvcmUiOiAiXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LXNvZGl1bSI6ICJTb2RpdW0gaXMgcmVxdWlyZWQgZm9yIE9LUCBrZXkgY3JlYXRpb24sIEVkRFNBIHNpZ25hdHVyZSBhbGdvcml0aG0gYW5kIEVDREgtRVMga2V5IGVuY3J5cHRpb24gd2l0aCBPS1Aga2V5cyIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvaHR0cGx1ZyI6ICJUbyBlbmFibGUgSktVL1g1VSBzdXBwb3J0LiIsCiAgICAgICAgICAgICAgICAicGhwLWh0dHAvbWVzc2FnZS1mYWN0b3J5IjogIlRvIGVuYWJsZSBKS1UvWDVVIHN1cHBvcnQuIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIlRvIHVzZSBFQyBrZXkgYW5hbHl6ZXJzLiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMy0xN1QxNDo1NTo1MiswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWtleS1tZ210L2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIktleSBNYW5hZ2VtZW50IGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAgICAgICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAgICAgICAgICJKT1NFIiwKICAgICAgICAgICAgICAgICJKV0UiLAogICAgICAgICAgICAgICAgIkpXSyIsCiAgICAgICAgICAgICAgICAiSldLU2V0IiwKICAgICAgICAgICAgICAgICJKV1MiLAogICAgICAgICAgICAgICAgIkpvdCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNSIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNiIsCiAgICAgICAgICAgICAgICAiUkZDNzUxNyIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOCIsCiAgICAgICAgICAgICAgICAiUkZDNzUxOSIsCiAgICAgICAgICAgICAgICAiUkZDNzUyMCIsCiAgICAgICAgICAgICAgICAiYnVuZGxlIiwKICAgICAgICAgICAgICAgICJqd2EiLAogICAgICAgICAgICAgICAgImp3dCIsCiAgICAgICAgICAgICAgICAic3ltZm9ueSIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgInN1cHBvcnQiOiB7CiAgICAgICAgICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWtleS1tZ210L3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi93ZWItdG9rZW4vand0LWtleS1tZ210IgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZSIsCiAgICAgICAgICAgICJ2ZXJzaW9uIjogInYyLjIuMTEiLAogICAgICAgICAgICAidmVyc2lvbl9ub3JtYWxpemVkIjogIjIuMi4xMS4wIiwKICAgICAgICAgICAgInNvdXJjZSI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogImdpdCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICIwMTViNTlhYWYzYjZlOGZiOWY1YmQxMzM4ODQ1Yjc0NjRjN2Q4MTAzIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC1zaWduYXR1cmUvemlwYmFsbC8wMTViNTlhYWYzYjZlOGZiOWY1YmQxMzM4ODQ1Yjc0NjRjN2Q4MTAzIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiMDE1YjU5YWFmM2I2ZThmYjlmNWJkMTMzODg0NWI3NDY0YzdkODEwMyIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1jb3JlIjogIl4yLjEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJzdWdnZXN0IjogewogICAgICAgICAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1lY2RzYSI6ICJFQ0RTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVkZHNhIjogIkVkRFNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZXhwZXJpbWVudGFsIjogIkV4cGVyaW1lbnRhbCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWhtYWMiOiAiSE1BQyBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLW5vbmUiOiAiTm9uZSBTaWduYXR1cmUgQWxnb3JpdGhtIiwKICAgICAgICAgICAgICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tcnNhIjogIlJTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMy0wMVQxOTo1NToyOCswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcIjogIiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgIm5vdGlmaWNhdGlvbi11cmwiOiAiaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL2Rvd25sb2Fkcy8iLAogICAgICAgICAgICAibGljZW5zZSI6IFsKICAgICAgICAgICAgICAgICJNSVQiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhdXRob3JzIjogWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlL2NvbnRyaWJ1dG9ycyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNpZ25hdHVyZSBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3dlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4yLjExIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjIuMTEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhLmdpdCIsCiAgICAgICAgICAgICAgICAicmVmZXJlbmNlIjogIjQ0Y2JiYjQzNzRjNTFmMWNmNDhiODJhZTc2MWVmYmYyNGUxYTg1OTEiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJkaXN0IjogewogICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIiwKICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EvemlwYmFsbC80NGNiYmI0Mzc0YzUxZjFjZjQ4YjgyYWU3NjFlZmJmMjRlMWE4NTkxIiwKICAgICAgICAgICAgICAgICJyZWZlcmVuY2UiOiAiNDRjYmJiNDM3NGM1MWYxY2Y0OGI4MmFlNzYxZWZiZjI0ZTFhODU5MSIsCiAgICAgICAgICAgICAgICAic2hhc3VtIjogIiIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInJlcXVpcmUiOiB7CiAgICAgICAgICAgICAgICAiZXh0LW9wZW5zc2wiOiAiKiIsCiAgICAgICAgICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUiOiAiXjIuMCIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInRpbWUiOiAiMjAyMS0wMS0yMVQxOToxODowMyswMDowMCIsCiAgICAgICAgICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbGF0aW9uLXNvdXJjZSI6ICJkaXN0IiwKICAgICAgICAgICAgImF1dG9sb2FkIjogewogICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcQWxnb3JpdGhtXFwiOiAiIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgICAgICAibm90aWZpY2F0aW9uLXVybCI6ICJodHRwczovL3BhY2thZ2lzdC5vcmcvZG93bmxvYWRzLyIsCiAgICAgICAgICAgICJsaWNlbnNlIjogWwogICAgICAgICAgICAgICAgIk1JVCIKICAgICAgICAgICAgXSwKICAgICAgICAgICAgImF1dGhvcnMiOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmsvY29udHJpYnV0b3JzIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICBdLAogICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiRUNEU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgICAgICAgICAia2V5d29yZHMiOiBbCiAgICAgICAgICAgICAgICAiSk9TRSIsCiAgICAgICAgICAgICAgICAiSldFIiwKICAgICAgICAgICAgICAgICJKV0siLAogICAgICAgICAgICAgICAgIkpXS1NldCIsCiAgICAgICAgICAgICAgICAiSldTIiwKICAgICAgICAgICAgICAgICJKb3QiLAogICAgICAgICAgICAgICAgIlJGQzc1MTUiLAogICAgICAgICAgICAgICAgIlJGQzc1MTYiLAogICAgICAgICAgICAgICAgIlJGQzc1MTciLAogICAgICAgICAgICAgICAgIlJGQzc1MTgiLAogICAgICAgICAgICAgICAgIlJGQzc1MTkiLAogICAgICAgICAgICAgICAgIlJGQzc1MjAiLAogICAgICAgICAgICAgICAgImJ1bmRsZSIsCiAgICAgICAgICAgICAgICAiandhIiwKICAgICAgICAgICAgICAgICJqd3QiLAogICAgICAgICAgICAgICAgInN5bWZvbnkiCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJzdXBwb3J0IjogewogICAgICAgICAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhL3RyZWUvdjIuMi4xMSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgImZ1bmRpbmciOiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL3d3dy5wYXRyZW9uLmNvbS9GbG9yZW50TW9yc2VsbGkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInBhdHJlb24iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJhYmFuZG9uZWQiOiAid2ViLXRva2VuL2p3dC1saWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGwtcGF0aCI6ICIuLi93ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiLAogICAgICAgICAgICAidmVyc2lvbiI6ICJ2Mi4yLjExIiwKICAgICAgICAgICAgInZlcnNpb25fbm9ybWFsaXplZCI6ICIyLjIuMTEuMCIsCiAgICAgICAgICAgICJzb3VyY2UiOiB7CiAgICAgICAgICAgICAgICAidHlwZSI6ICJnaXQiLAogICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC11dGlsLWVjYy5naXQiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZGlzdCI6IHsKICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIsCiAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mvd2ViLXRva2VuL2p3dC11dGlsLWVjYy96aXBiYWxsLzkxNWYzZmRlODZmNTIzNmMyMDU2MjBkNjExNzdiOWVmNDM4NjNkZWIiLAogICAgICAgICAgICAgICAgInJlZmVyZW5jZSI6ICI5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViIiwKICAgICAgICAgICAgICAgICJzaGFzdW0iOiAiIgogICAgICAgICAgICB9LAogICAgICAgICAgICAicmVxdWlyZSI6IHsKICAgICAgICAgICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgInN1Z2dlc3QiOiB7CiAgICAgICAgICAgICAgICAiZXh0LWJjbWF0aCI6ICJHTVAgb3IgQkNNYXRoIGlzIGhpZ2hseSByZWNvbW1lbmRlZCB0byBpbXByb3ZlIHRoZSBsaWJyYXJ5IHBlcmZvcm1hbmNlIiwKICAgICAgICAgICAgICAgICJleHQtZ21wIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJ0aW1lIjogIjIwMjEtMDMtMjRUMTM6MzU6MTcrMDA6MDAiLAogICAgICAgICAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICAgICAgICAgImluc3RhbGxhdGlvbi1zb3VyY2UiOiAiZGlzdCIsCiAgICAgICAgICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAgICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgICAgICAgICAiSm9zZVxcQ29tcG9uZW50XFxDb3JlXFxVdGlsXFxFY2NcXCI6ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJub3RpZmljYXRpb24tdXJsIjogImh0dHBzOi8vcGFja2FnaXN0Lm9yZy9kb3dubG9hZHMvIiwKICAgICAgICAgICAgImxpY2Vuc2UiOiBbCiAgICAgICAgICAgICAgICAiTUlUIgogICAgICAgICAgICBdLAogICAgICAgICAgICAiYXV0aG9ycyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yay9jb250cmlidXRvcnMiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJFQ0MgVG9vbHMgZm9yIHRoZSBKV1QgRnJhbWV3b3JrLiIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuIiwKICAgICAgICAgICAgImtleXdvcmRzIjogWwogICAgICAgICAgICAgICAgIkpPU0UiLAogICAgICAgICAgICAgICAgIkpXRSIsCiAgICAgICAgICAgICAgICAiSldLIiwKICAgICAgICAgICAgICAgICJKV0tTZXQiLAogICAgICAgICAgICAgICAgIkpXUyIsCiAgICAgICAgICAgICAgICAiSm90IiwKICAgICAgICAgICAgICAgICJSRkM3NTE1IiwKICAgICAgICAgICAgICAgICJSRkM3NTE2IiwKICAgICAgICAgICAgICAgICJSRkM3NTE3IiwKICAgICAgICAgICAgICAgICJSRkM3NTE4IiwKICAgICAgICAgICAgICAgICJSRkM3NTE5IiwKICAgICAgICAgICAgICAgICJSRkM3NTIwIiwKICAgICAgICAgICAgICAgICJidW5kbGUiLAogICAgICAgICAgICAgICAgImp3YSIsCiAgICAgICAgICAgICAgICAiand0IiwKICAgICAgICAgICAgICAgICJzeW1mb255IgogICAgICAgICAgICBdLAogICAgICAgICAgICAic3VwcG9ydCI6IHsKICAgICAgICAgICAgICAgICJzb3VyY2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtdXRpbC1lY2MvdHJlZS92Mi4yLjExIgogICAgICAgICAgICB9LAogICAgICAgICAgICAiZnVuZGluZyI6IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd3d3LnBhdHJlb24uY29tL0Zsb3JlbnRNb3JzZWxsaSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAicGF0cmVvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgImFiYW5kb25lZCI6ICJ3ZWItdG9rZW4vand0LWxpYnJhcnkiLAogICAgICAgICAgICAiaW5zdGFsbC1wYXRoIjogIi4uL3dlYi10b2tlbi9qd3QtdXRpbC1lY2MiCiAgICAgICAgfQogICAgXSwKICAgICJkZXYiOiB0cnVlLAogICAgImRldi1wYWNrYWdlLW5hbWVzIjogW10KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/installed.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgcmV0dXJuIGFycmF5KAogICAgJ3Jvb3QnID0+IGFycmF5KAogICAgICAgICduYW1lJyA9PiAnX19yb290X18nLAogICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ2Rldi1tYXN0ZXInLAogICAgICAgICd2ZXJzaW9uJyA9PiAnZGV2LW1hc3RlcicsCiAgICAgICAgJ3JlZmVyZW5jZScgPT4gJ2ZlNDYxODJmNmFmYzRmYzA3ZTA3MjVhYzllNWJjZGY1ZjFlMTc4ZjknLAogICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vLi4vJywKICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAnZGV2JyA9PiB0cnVlLAogICAgKSwKICAgICd2ZXJzaW9ucycgPT4gYXJyYXkoCiAgICAgICAgJ19fcm9vdF9fJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnZGV2LW1hc3RlcicsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnZGV2LW1hc3RlcicsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICdmZTQ2MTgyZjZhZmM0ZmMwN2UwNzI1YWM5ZTViY2RmNWYxZTE3OGY5JywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vLi4vJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ2JyaWNrL21hdGgnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICcwLjkuMycsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMC45LjMuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICdjYTU3ZDE4ZjAyOGY4NGY3NzdiMjE2OGNkMTkxMWIwZGVlMjM0M2FlJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vYnJpY2svbWF0aCcsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdmZ3Jvc3NlL3BocGFzbjEnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2Mi41LjAnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuNS4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnNDIwNjBlZDQ1MzQ0Nzg5ZmI5ZjIxZjlmMTg2NGZjNDdiOWUzNTA3YicsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL2Zncm9zc2UvcGhwYXNuMScsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdndXp6bGVodHRwL2d1enpsZScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzcuMTAuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnNy4xMC4wLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnYjUxYWM3MDdjZmE0MjBiN2JmZDRlNGQ1ZTUxMGJhODAwOGU4MjJiNCcsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL2d1enpsZWh0dHAvZ3V6emxlJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ2d1enpsZWh0dHAvcHJvbWlzZXMnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICcyLjMuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi4zLjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc0ODE1NTdiMTMwZWYzNzkwY2Y4MmI3MTM2NjdiNDMwMzBkYzljOTU3JywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vZ3V6emxlaHR0cC9wcm9taXNlcycsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdndXp6bGVodHRwL3BzcjcnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICcyLjkuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi45LjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc3ZDBlZDQyZjI4ZTQyZDYxMzUyYTdhNzlkZTY4MmU1ZTY3ZmVjODg0JywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vZ3V6emxlaHR0cC9wc3I3JywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ21pbmlzaGxpbmsvd2ViLXB1c2gnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2Ni4wLjcnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzYuMC43LjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnMjNhNzhiODU4NWJkY2VjYWEzMjNmMWRkMWFjZGM1NDhlMjg4OTJmZScsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL21pbmlzaGxpbmsvd2ViLXB1c2gnLAogICAgICAgICAgICAnYWxpYXNlcycgPT4gYXJyYXkoKSwKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgKSwKICAgICAgICAncHNyL2h0dHAtY2xpZW50JyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnMS4wLjMnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzEuMC4zLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnYmI1OTA2ZWRjMWMzMjRjOWEwNWFhMDg3M2Q0MDExNzk0MWU1ZmE5MCcsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3Bzci9odHRwLWNsaWVudCcsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdwc3IvaHR0cC1jbGllbnQtaW1wbGVtZW50YXRpb24nID0+IGFycmF5KAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3Byb3ZpZGVkJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgIDAgPT4gJzEuMCcsCiAgICAgICAgICAgICksCiAgICAgICAgKSwKICAgICAgICAncHNyL2h0dHAtZmFjdG9yeScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzEuMS4wJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcxLjEuMC4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzJiNDc2NWZkZGZlM2I1MDhhYzYyZjgyOWU4NTJiMTUwMWQzZjZlOGEnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9wc3IvaHR0cC1mYWN0b3J5JywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3Bzci9odHRwLWZhY3RvcnktaW1wbGVtZW50YXRpb24nID0+IGFycmF5KAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICAgICAgJ3Byb3ZpZGVkJyA9PiBhcnJheSgKICAgICAgICAgICAgICAgIDAgPT4gJzEuMCcsCiAgICAgICAgICAgICksCiAgICAgICAgKSwKICAgICAgICAncHNyL2h0dHAtbWVzc2FnZScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJzIuMCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi4wLjAuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc0MDJkMzViY2I5MmM3MGMwMjZkMWE2YTk4ODNmMDZiMmVhZDIzZDcxJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vcHNyL2h0dHAtbWVzc2FnZScsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICdwc3IvaHR0cC1tZXNzYWdlLWltcGxlbWVudGF0aW9uJyA9PiBhcnJheSgKICAgICAgICAgICAgJ2Rldl9yZXF1aXJlbWVudCcgPT4gZmFsc2UsCiAgICAgICAgICAgICdwcm92aWRlZCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAwID0+ICcxLjAnLAogICAgICAgICAgICApLAogICAgICAgICksCiAgICAgICAgJ3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAnMy4wLjMnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzMuMC4zLjAnLAogICAgICAgICAgICAncmVmZXJlbmNlJyA9PiAnMTIwYjYwNWRmZWI5OTY4MDhjMzFiNjQ3NzI5MGE3MTRkMzU2ZTgyMicsCiAgICAgICAgICAgICd0eXBlJyA9PiAnbGlicmFyeScsCiAgICAgICAgICAgICdpbnN0YWxsX3BhdGgnID0+IF9fRElSX18gLiAnLy4uL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3Nwb21reS1sYWJzL2Jhc2U2NHVybCcgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjAuNCcsCiAgICAgICAgICAgICd2ZXJzaW9uJyA9PiAnMi4wLjQuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc3NzUyY2U5MzFlYzI4NWRhNGVkMWY0YzVhYTI3ZTQ1ZTA5N2JlNjFkJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vc3BvbWt5LWxhYnMvYmFzZTY0dXJsJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3N5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzJyA9PiBhcnJheSgKICAgICAgICAgICAgJ3ByZXR0eV92ZXJzaW9uJyA9PiAndjIuNS40JywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcyLjUuNC4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzYwNTM4OWYyYTdlNTYyNWYyNzNiNTM5NjBkYzQ2YWVhZjljNjI5MTgnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi9zeW1mb255L2RlcHJlY2F0aW9uLWNvbnRyYWN0cycsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICd3ZWItdG9rZW4vand0LWNvcmUnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2Mi4yLjExJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcyLjIuMTEuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc1M2JlYjZmNmMxZWVjNGZhOTNjMWMzZTVkOWU1NzAxZTcxZmExNjc4JywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vd2ViLXRva2VuL2p3dC1jb3JlJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3dlYi10b2tlbi9qd3Qta2V5LW1nbXQnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2Mi4yLjExJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcyLjIuMTEuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICcwYjExNjM3OTUxNTcwMGQyMzdiNGU1ZGU4Njg3OTA3OGNjYjA5ZDhhJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vd2ViLXRva2VuL2p3dC1rZXktbWdtdCcsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICd3ZWItdG9rZW4vand0LXNpZ25hdHVyZScgPT4gYXJyYXkoCiAgICAgICAgICAgICdwcmV0dHlfdmVyc2lvbicgPT4gJ3YyLjIuMTEnLAogICAgICAgICAgICAndmVyc2lvbicgPT4gJzIuMi4xMS4wJywKICAgICAgICAgICAgJ3JlZmVyZW5jZScgPT4gJzAxNWI1OWFhZjNiNmU4ZmI5ZjViZDEzMzg4NDViNzQ2NGM3ZDgxMDMnLAogICAgICAgICAgICAndHlwZScgPT4gJ2xpYnJhcnknLAogICAgICAgICAgICAnaW5zdGFsbF9wYXRoJyA9PiBfX0RJUl9fIC4gJy8uLi93ZWItdG9rZW4vand0LXNpZ25hdHVyZScsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgICAgICd3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2Mi4yLjExJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcyLjIuMTEuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc0NGNiYmI0Mzc0YzUxZjFjZjQ4YjgyYWU3NjFlZmJmMjRlMWE4NTkxJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vd2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhJywKICAgICAgICAgICAgJ2FsaWFzZXMnID0+IGFycmF5KCksCiAgICAgICAgICAgICdkZXZfcmVxdWlyZW1lbnQnID0+IGZhbHNlLAogICAgICAgICksCiAgICAgICAgJ3dlYi10b2tlbi9qd3QtdXRpbC1lY2MnID0+IGFycmF5KAogICAgICAgICAgICAncHJldHR5X3ZlcnNpb24nID0+ICd2Mi4yLjExJywKICAgICAgICAgICAgJ3ZlcnNpb24nID0+ICcyLjIuMTEuMCcsCiAgICAgICAgICAgICdyZWZlcmVuY2UnID0+ICc5MTVmM2ZkZTg2ZjUyMzZjMjA1NjIwZDYxMTc3YjllZjQzODYzZGViJywKICAgICAgICAgICAgJ3R5cGUnID0+ICdsaWJyYXJ5JywKICAgICAgICAgICAgJ2luc3RhbGxfcGF0aCcgPT4gX19ESVJfXyAuICcvLi4vd2ViLXRva2VuL2p3dC11dGlsLWVjYycsCiAgICAgICAgICAgICdhbGlhc2VzJyA9PiBhcnJheSgpLAogICAgICAgICAgICAnZGV2X3JlcXVpcmVtZW50JyA9PiBmYWxzZSwKICAgICAgICApLAogICAgKSwKKTsK]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/InstalledVersions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIENvbXBvc2VyLgogKgogKiAoYykgTmlscyBBZGVybWFubiA8bmFkZXJtYW5AbmFkZXJtYW4uZGU+CiAqICAgICBKb3JkaSBCb2dnaWFubyA8ai5ib2dnaWFub0BzZWxkLmJlPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgQ29tcG9zZXI7Cgp1c2UgQ29tcG9zZXJcQXV0b2xvYWRcQ2xhc3NMb2FkZXI7CnVzZSBDb21wb3NlclxTZW12ZXJcVmVyc2lvblBhcnNlcjsKCi8qKgogKiBUaGlzIGNsYXNzIGlzIGNvcGllZCBpbiBldmVyeSBDb21wb3NlciBpbnN0YWxsZWQgcHJvamVjdCBhbmQgYXZhaWxhYmxlIHRvIGFsbAogKgogKiBTZWUgYWxzbyBodHRwczovL2dldGNvbXBvc2VyLm9yZy9kb2MvMDctcnVudGltZS5tZCNpbnN0YWxsZWQtdmVyc2lvbnMKICoKICogVG8gcmVxdWlyZSBpdHMgcHJlc2VuY2UsIHlvdSBjYW4gcmVxdWlyZSBgY29tcG9zZXItcnVudGltZS1hcGkgXjIuMGAKICoKICogQGZpbmFsCiAqLwpjbGFzcyBJbnN0YWxsZWRWZXJzaW9ucwp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwgaWYgc2V0IChieSByZWZsZWN0aW9uIGJ5IENvbXBvc2VyKSwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHRoZSBwYXRoIHdoZXJlIHRoaXMgY2xhc3MgaXMgYmVpbmcgY29waWVkIHRvCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJHNlbGZEaXIgPSBudWxsOwoKICAgIC8qKgogICAgICogQHZhciBtaXhlZFtdfG51bGwKICAgICAqIEBwc2FsbS12YXIgYXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn18YXJyYXl7fXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljICRpbnN0YWxsZWQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgJGluc3RhbGxlZElzTG9jYWxEaXI7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2x8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkY2FuR2V0VmVuZG9yczsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXlbXQogICAgICogQHBzYWxtLXZhciBhcnJheTxzdHJpbmcsIGFycmF5e3Jvb3Q6IGFycmF5e25hbWU6IHN0cmluZywgcHJldHR5X3ZlcnNpb246IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZ3xudWxsLCB0eXBlOiBzdHJpbmcsIGluc3RhbGxfcGF0aDogc3RyaW5nLCBhbGlhc2VzOiBzdHJpbmdbXSwgZGV2OiBib29sfSwgdmVyc2lvbnM6IGFycmF5PHN0cmluZywgYXJyYXl7cHJldHR5X3ZlcnNpb24/OiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcsIHJlZmVyZW5jZT86IHN0cmluZ3xudWxsLCB0eXBlPzogc3RyaW5nLCBpbnN0YWxsX3BhdGg/OiBzdHJpbmcsIGFsaWFzZXM/OiBzdHJpbmdbXSwgZGV2X3JlcXVpcmVtZW50OiBib29sLCByZXBsYWNlZD86IHN0cmluZ1tdLCBwcm92aWRlZD86IHN0cmluZ1tdfT59PgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkaW5zdGFsbGVkQnlWZW5kb3IgPSBhcnJheSgpOwoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHBhY2thZ2UgbmFtZXMgd2hpY2ggYXJlIHByZXNlbnQsIGVpdGhlciBieSBiZWluZyBpbnN0YWxsZWQsIHJlcGxhY2VkIG9yIHByb3ZpZGVkCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICogQHBzYWxtLXJldHVybiBsaXN0PHN0cmluZz4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRJbnN0YWxsZWRQYWNrYWdlcygpCiAgICB7CiAgICAgICAgJHBhY2thZ2VzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoIChzZWxmOjpnZXRJbnN0YWxsZWQoKSBhcyAkaW5zdGFsbGVkKSB7CiAgICAgICAgICAgICRwYWNrYWdlc1tdID0gYXJyYXlfa2V5cygkaW5zdGFsbGVkWyd2ZXJzaW9ucyddKTsKICAgICAgICB9CgogICAgICAgIGlmICgxID09PSBcY291bnQoJHBhY2thZ2VzKSkgewogICAgICAgICAgICByZXR1cm4gJHBhY2thZ2VzWzBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5X2tleXMoYXJyYXlfZmxpcChcY2FsbF91c2VyX2Z1bmNfYXJyYXkoJ2FycmF5X21lcmdlJywgJHBhY2thZ2VzKSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHBhY2thZ2UgbmFtZXMgd2l0aCBhIHNwZWNpZmljIHR5cGUgZS5nLiAnbGlicmFyeScKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICR0eXBlCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKiBAcHNhbG0tcmV0dXJuIGxpc3Q8c3RyaW5nPgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEluc3RhbGxlZFBhY2thZ2VzQnlUeXBlKCR0eXBlKQogICAgewogICAgICAgICRwYWNrYWdlc0J5VHlwZSA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbGxlZFsndmVyc2lvbnMnXSBhcyAkbmFtZSA9PiAkcGFja2FnZSkgewogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRwYWNrYWdlWyd0eXBlJ10pICYmICRwYWNrYWdlWyd0eXBlJ10gPT09ICR0eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgJHBhY2thZ2VzQnlUeXBlW10gPSAkbmFtZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRwYWNrYWdlc0J5VHlwZTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrcyB3aGV0aGVyIHRoZSBnaXZlbiBwYWNrYWdlIGlzIGluc3RhbGxlZAogICAgICoKICAgICAqIFRoaXMgYWxzbyByZXR1cm5zIHRydWUgaWYgdGhlIHBhY2thZ2UgbmFtZSBpcyBwcm92aWRlZCBvciByZXBsYWNlZCBieSBhbm90aGVyIHBhY2thZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAkcGFja2FnZU5hbWUKICAgICAqIEBwYXJhbSAgYm9vbCAgICRpbmNsdWRlRGV2UmVxdWlyZW1lbnRzCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0luc3RhbGxlZCgkcGFja2FnZU5hbWUsICRpbmNsdWRlRGV2UmVxdWlyZW1lbnRzID0gdHJ1ZSkKICAgIHsKICAgICAgICBmb3JlYWNoIChzZWxmOjpnZXRJbnN0YWxsZWQoKSBhcyAkaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGluY2x1ZGVEZXZSZXF1aXJlbWVudHMgfHwgIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnZGV2X3JlcXVpcmVtZW50J10pIHx8ICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnZGV2X3JlcXVpcmVtZW50J10gPT09IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaGVja3Mgd2hldGhlciB0aGUgZ2l2ZW4gcGFja2FnZSBzYXRpc2ZpZXMgYSB2ZXJzaW9uIGNvbnN0cmFpbnQKICAgICAqCiAgICAgKiBlLmcuIElmIHlvdSB3YW50IHRvIGtub3cgd2hldGhlciB2ZXJzaW9uIDIuMysgb2YgcGFja2FnZSBmb28vYmFyIGlzIGluc3RhbGxlZCwgeW91IHdvdWxkIGNhbGw6CiAgICAgKgogICAgICogICBDb21wb3NlclxJbnN0YWxsZWRWZXJzaW9uczo6c2F0aXNmaWVzKG5ldyBWZXJzaW9uUGFyc2VyLCAnZm9vL2JhcicsICdeMi4zJykKICAgICAqCiAgICAgKiBAcGFyYW0gIFZlcnNpb25QYXJzZXIgJHBhcnNlciAgICAgIEluc3RhbGwgY29tcG9zZXIvc2VtdmVyIHRvIGhhdmUgYWNjZXNzIHRvIHRoaXMgY2xhc3MgYW5kIGZ1bmN0aW9uYWxpdHkKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgICAkcGFja2FnZU5hbWUKICAgICAqIEBwYXJhbSAgc3RyaW5nfG51bGwgICAkY29uc3RyYWludCAgQSB2ZXJzaW9uIGNvbnN0cmFpbnQgdG8gY2hlY2sgZm9yLCBpZiB5b3UgcGFzcyBvbmUgeW91IGhhdmUgdG8gbWFrZSBzdXJlIGNvbXBvc2VyL3NlbXZlciBpcyByZXF1aXJlZCBieSB5b3VyIHBhY2thZ2UKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNhdGlzZmllcyhWZXJzaW9uUGFyc2VyICRwYXJzZXIsICRwYWNrYWdlTmFtZSwgJGNvbnN0cmFpbnQpCiAgICB7CiAgICAgICAgJGNvbnN0cmFpbnQgPSAkcGFyc2VyLT5wYXJzZUNvbnN0cmFpbnRzKChzdHJpbmcpICRjb25zdHJhaW50KTsKICAgICAgICAkcHJvdmlkZWQgPSAkcGFyc2VyLT5wYXJzZUNvbnN0cmFpbnRzKHNlbGY6OmdldFZlcnNpb25SYW5nZXMoJHBhY2thZ2VOYW1lKSk7CgogICAgICAgIHJldHVybiAkcHJvdmlkZWQtPm1hdGNoZXMoJGNvbnN0cmFpbnQpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIHZlcnNpb24gY29uc3RyYWludCByZXByZXNlbnRpbmcgYWxsIHRoZSByYW5nZShzKSB3aGljaCBhcmUgaW5zdGFsbGVkIGZvciBhIGdpdmVuIHBhY2thZ2UKICAgICAqCiAgICAgKiBJdCBpcyBlYXNpZXIgdG8gdXNlIHRoaXMgdmlhIGlzSW5zdGFsbGVkKCkgd2l0aCB0aGUgJGNvbnN0cmFpbnQgYXJndW1lbnQgaWYgeW91IG5lZWQgdG8gY2hlY2sKICAgICAqIHdoZXRoZXIgYSBnaXZlbiB2ZXJzaW9uIG9mIGEgcGFja2FnZSBpcyBpbnN0YWxsZWQsIGFuZCBub3QganVzdCB3aGV0aGVyIGl0IGV4aXN0cwogICAgICoKICAgICAqIEBwYXJhbSAgc3RyaW5nICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmcgVmVyc2lvbiBjb25zdHJhaW50IHVzYWJsZSB3aXRoIGNvbXBvc2VyL3NlbXZlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFZlcnNpb25SYW5nZXMoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHJhbmdlcyA9IGFycmF5KCk7CiAgICAgICAgICAgIGlmIChpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ10pKSB7CiAgICAgICAgICAgICAgICAkcmFuZ2VzW10gPSAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2FsaWFzZXMnLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICAkcmFuZ2VzID0gYXJyYXlfbWVyZ2UoJHJhbmdlcywgJGluc3RhbGxlZFsndmVyc2lvbnMnXVskcGFja2FnZU5hbWVdWydhbGlhc2VzJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdyZXBsYWNlZCcsICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgICRyYW5nZXMgPSBhcnJheV9tZXJnZSgkcmFuZ2VzLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlcGxhY2VkJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwcm92aWRlZCcsICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgICRyYW5nZXMgPSBhcnJheV9tZXJnZSgkcmFuZ2VzLCAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3Byb3ZpZGVkJ10pOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gaW1wbG9kZSgnIHx8ICcsICRyYW5nZXMpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxPdXRPZkJvdW5kc0V4Y2VwdGlvbignUGFja2FnZSAiJyAuICRwYWNrYWdlTmFtZSAuICciIGlzIG5vdCBpbnN0YWxsZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgJHBhY2thZ2VOYW1lCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIElmIHRoZSBwYWNrYWdlIGlzIGJlaW5nIHJlcGxhY2VkIG9yIHByb3ZpZGVkIGJ1dCBpcyBub3QgcmVhbGx5IGluc3RhbGxlZCwgbnVsbCB3aWxsIGJlIHJldHVybmVkIGFzIHZlcnNpb24sIHVzZSBzYXRpc2ZpZXMgb3IgZ2V0VmVyc2lvblJhbmdlcyBpZiB5b3UgbmVlZCB0byBrbm93IGlmIGEgZ2l2ZW4gdmVyc2lvbiBpcyBwcmVzZW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmVyc2lvbigkcGFja2FnZU5hbWUpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoc2VsZjo6Z2V0SW5zdGFsbGVkKCkgYXMgJGluc3RhbGxlZCkgewogICAgICAgICAgICBpZiAoIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIWlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsndmVyc2lvbiddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ZlcnNpb24nXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcT3V0T2ZCb3VuZHNFeGNlcHRpb24oJ1BhY2thZ2UgIicgLiAkcGFja2FnZU5hbWUgLiAnIiBpcyBub3QgaW5zdGFsbGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBJZiB0aGUgcGFja2FnZSBpcyBiZWluZyByZXBsYWNlZCBvciBwcm92aWRlZCBidXQgaXMgbm90IHJlYWxseSBpbnN0YWxsZWQsIG51bGwgd2lsbCBiZSByZXR1cm5lZCBhcyB2ZXJzaW9uLCB1c2Ugc2F0aXNmaWVzIG9yIGdldFZlcnNpb25SYW5nZXMgaWYgeW91IG5lZWQgdG8ga25vdyBpZiBhIGdpdmVuIHZlcnNpb24gaXMgcHJlc2VudAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFByZXR0eVZlcnNpb24oJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3ByZXR0eV92ZXJzaW9uJ10pKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsncHJldHR5X3ZlcnNpb24nXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcT3V0T2ZCb3VuZHNFeGNlcHRpb24oJ1BhY2thZ2UgIicgLiAkcGFja2FnZU5hbWUgLiAnIiBpcyBub3QgaW5zdGFsbGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gIHN0cmluZyAgICAgICRwYWNrYWdlTmFtZQogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBJZiB0aGUgcGFja2FnZSBpcyBiZWluZyByZXBsYWNlZCBvciBwcm92aWRlZCBidXQgaXMgbm90IHJlYWxseSBpbnN0YWxsZWQsIG51bGwgd2lsbCBiZSByZXR1cm5lZCBhcyByZWZlcmVuY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZWZlcmVuY2UoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlZmVyZW5jZSddKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV1bJ3JlZmVyZW5jZSddOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxPdXRPZkJvdW5kc0V4Y2VwdGlvbignUGFja2FnZSAiJyAuICRwYWNrYWdlTmFtZSAuICciIGlzIG5vdCBpbnN0YWxsZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAgc3RyaW5nICAgICAgJHBhY2thZ2VOYW1lCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIElmIHRoZSBwYWNrYWdlIGlzIGJlaW5nIHJlcGxhY2VkIG9yIHByb3ZpZGVkIGJ1dCBpcyBub3QgcmVhbGx5IGluc3RhbGxlZCwgbnVsbCB3aWxsIGJlIHJldHVybmVkIGFzIGluc3RhbGwgcGF0aC4gUGFja2FnZXMgb2YgdHlwZSBtZXRhcGFja2FnZXMgYWxzbyBoYXZlIGEgbnVsbCBpbnN0YWxsIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFsbFBhdGgoJHBhY2thZ2VOYW1lKQogICAgewogICAgICAgIGZvcmVhY2ggKHNlbGY6OmdldEluc3RhbGxlZCgpIGFzICRpbnN0YWxsZWQpIHsKICAgICAgICAgICAgaWYgKCFpc3NldCgkaW5zdGFsbGVkWyd2ZXJzaW9ucyddWyRwYWNrYWdlTmFtZV0pKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRpbnN0YWxsZWRbJ3ZlcnNpb25zJ11bJHBhY2thZ2VOYW1lXVsnaW5zdGFsbF9wYXRoJ10pID8gJGluc3RhbGxlZFsndmVyc2lvbnMnXVskcGFja2FnZU5hbWVdWydpbnN0YWxsX3BhdGgnXSA6IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXE91dE9mQm91bmRzRXhjZXB0aW9uKCdQYWNrYWdlICInIC4gJHBhY2thZ2VOYW1lIC4gJyIgaXMgbm90IGluc3RhbGxlZCcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICogQHBzYWxtLXJldHVybiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSb290UGFja2FnZSgpCiAgICB7CiAgICAgICAgJGluc3RhbGxlZCA9IHNlbGY6OmdldEluc3RhbGxlZCgpOwoKICAgICAgICByZXR1cm4gJGluc3RhbGxlZFswXVsncm9vdCddOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmF3IGluc3RhbGxlZC5waHAgZGF0YSBmb3IgY3VzdG9tIGltcGxlbWVudGF0aW9ucwogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFVzZSBnZXRBbGxSYXdEYXRhKCkgaW5zdGVhZCB3aGljaCByZXR1cm5zIGFsbCBkYXRhc2V0cyBmb3IgYWxsIGF1dG9sb2FkZXJzIHByZXNlbnQgaW4gdGhlIHByb2Nlc3MuIGdldFJhd0RhdGEgb25seSByZXR1cm5zIHRoZSBmaXJzdCBkYXRhc2V0IGxvYWRlZCwgd2hpY2ggbWF5IG5vdCBiZSB3aGF0IHlvdSBleHBlY3QuCiAgICAgKiBAcmV0dXJuIGFycmF5W10KICAgICAqIEBwc2FsbS1yZXR1cm4gYXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn0KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSYXdEYXRhKCkKICAgIHsKICAgICAgICBAdHJpZ2dlcl9lcnJvcignZ2V0UmF3RGF0YSBvbmx5IHJldHVybnMgdGhlIGZpcnN0IGRhdGFzZXQgbG9hZGVkLCB3aGljaCBtYXkgbm90IGJlIHdoYXQgeW91IGV4cGVjdC4gVXNlIGdldEFsbFJhd0RhdGEoKSBpbnN0ZWFkIHdoaWNoIHJldHVybnMgYWxsIGRhdGFzZXRzIGZvciBhbGwgYXV0b2xvYWRlcnMgcHJlc2VudCBpbiB0aGUgcHJvY2Vzcy4nLCBFX1VTRVJfREVQUkVDQVRFRCk7CgogICAgICAgIGlmIChudWxsID09PSBzZWxmOjokaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZSB0aGUgaW5zdGFsbGVkLnBocCBmaWxlIGlmIHRoaXMgZmlsZSBpcyBsb2FkZWQgZnJvbSBpdHMgZHVtcGVkIGxvY2F0aW9uLAogICAgICAgICAgICAvLyBhbmQgbm90IGZyb20gaXRzIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgY29tcG9zZXIvY29tcG9zZXIgcGFja2FnZSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3Nlci9jb21wb3Nlci9pc3N1ZXMvOTkzNwogICAgICAgICAgICBpZiAoc3Vic3RyKF9fRElSX18sIC04LCAxKSAhPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gaW5jbHVkZSBfX0RJUl9fIC4gJy9pbnN0YWxsZWQucGhwJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNlbGY6OiRpbnN0YWxsZWQgPSBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JGluc3RhbGxlZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJhdyBkYXRhIG9mIGFsbCBpbnN0YWxsZWQucGhwIHdoaWNoIGFyZSBjdXJyZW50bHkgbG9hZGVkIGZvciBjdXN0b20gaW1wbGVtZW50YXRpb25zCiAgICAgKgogICAgICogQHJldHVybiBhcnJheVtdCiAgICAgKiBAcHNhbG0tcmV0dXJuIGxpc3Q8YXJyYXl7cm9vdDogYXJyYXl7bmFtZTogc3RyaW5nLCBwcmV0dHlfdmVyc2lvbjogc3RyaW5nLCB2ZXJzaW9uOiBzdHJpbmcsIHJlZmVyZW5jZTogc3RyaW5nfG51bGwsIHR5cGU6IHN0cmluZywgaW5zdGFsbF9wYXRoOiBzdHJpbmcsIGFsaWFzZXM6IHN0cmluZ1tdLCBkZXY6IGJvb2x9LCB2ZXJzaW9uczogYXJyYXk8c3RyaW5nLCBhcnJheXtwcmV0dHlfdmVyc2lvbj86IHN0cmluZywgdmVyc2lvbj86IHN0cmluZywgcmVmZXJlbmNlPzogc3RyaW5nfG51bGwsIHR5cGU/OiBzdHJpbmcsIGluc3RhbGxfcGF0aD86IHN0cmluZywgYWxpYXNlcz86IHN0cmluZ1tdLCBkZXZfcmVxdWlyZW1lbnQ6IGJvb2wsIHJlcGxhY2VkPzogc3RyaW5nW10sIHByb3ZpZGVkPzogc3RyaW5nW119Pn0+CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QWxsUmF3RGF0YSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmdldEluc3RhbGxlZCgpOwogICAgfQoKICAgIC8qKgogICAgICogTGV0cyB5b3UgcmVsb2FkIHRoZSBzdGF0aWMgYXJyYXkgZnJvbSBhbm90aGVyIGZpbGUKICAgICAqCiAgICAgKiBUaGlzIGlzIG9ubHkgdXNlZnVsIGZvciBjb21wbGV4IGludGVncmF0aW9ucyBpbiB3aGljaCBhIHByb2plY3QgbmVlZHMgdG8gdXNlCiAgICAgKiB0aGlzIGNsYXNzIGJ1dCB0aGVuIGFsc28gbmVlZHMgdG8gZXhlY3V0ZSBhbm90aGVyIHByb2plY3QncyBhdXRvbG9hZGVyIGluIHByb2Nlc3MsCiAgICAgKiBhbmQgd2FudHMgdG8gZW5zdXJlIGJvdGggcHJvamVjdHMgaGF2ZSBhY2Nlc3MgdG8gdGhlaXIgdmVyc2lvbiBvZiBpbnN0YWxsZWQucGhwLgogICAgICoKICAgICAqIEEgdHlwaWNhbCBjYXNlIHdvdWxkIGJlIFBIUFVuaXQsIHdoZXJlIGl0IHdvdWxkIG5lZWQgdG8gbWFrZSBzdXJlIGl0IHJlYWRzIGFsbAogICAgICogdGhlIGRhdGEgaXQgbmVlZHMgZnJvbSB0aGlzIGNsYXNzLCB0aGVuIGNhbGwgcmVsb2FkKCkgd2l0aAogICAgICogYHJlcXVpcmUgJENXRC92ZW5kb3IvY29tcG9zZXIvaW5zdGFsbGVkLnBocGAgKG9yIHNpbWlsYXIpIGFzIGlucHV0IHRvIG1ha2Ugc3VyZQogICAgICogdGhlIHByb2plY3QgaW4gd2hpY2ggaXQgcnVucyBjYW4gdGhlbiBhbHNvIHVzZSB0aGlzIGNsYXNzIHNhZmVseSwgd2l0aG91dAogICAgICogaW50ZXJmZXJlbmNlIGJldHdlZW4gUEhQVW5pdCdzIGRlcGVuZGVuY2llcyBhbmQgdGhlIHByb2plY3QncyBkZXBlbmRlbmNpZXMuCiAgICAgKgogICAgICogQHBhcmFtICBhcnJheVtdICRkYXRhIEEgdmVuZG9yL2NvbXBvc2VyL2luc3RhbGxlZC5waHAgZGF0YSBzZXQKICAgICAqIEByZXR1cm4gdm9pZAogICAgICoKICAgICAqIEBwc2FsbS1wYXJhbSBhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fSAkZGF0YQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbG9hZCgkZGF0YSkKICAgIHsKICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gJGRhdGE7CiAgICAgICAgc2VsZjo6JGluc3RhbGxlZEJ5VmVuZG9yID0gYXJyYXkoKTsKCiAgICAgICAgLy8gd2hlbiB1c2luZyByZWxvYWQsIHdlIGRpc2FibGUgdGhlIGR1cGxpY2F0ZSBwcm90ZWN0aW9uIHRvIGVuc3VyZSB0aGF0IHNlbGY6OiRpbnN0YWxsZWQgZGF0YSBpcwogICAgICAgIC8vIGFsd2F5cyByZXR1cm5lZCwgYnV0IHdlIGNhbm5vdCBrbm93IHdoZXRoZXIgaXQgY29tZXMgZnJvbSB0aGUgaW5zdGFsbGVkLnBocCBpbiBfX0RJUl9fIG9yIG5vdCwKICAgICAgICAvLyBzbyB3ZSBoYXZlIHRvIGFzc3VtZSBpdCBkb2VzIG5vdCwgYW5kIHRoYXQgbWF5IHJlc3VsdCBpbiBkdXBsaWNhdGUgZGF0YSBiZWluZyByZXR1cm5lZCB3aGVuIGxpc3RpbmcKICAgICAgICAvLyBhbGwgaW5zdGFsbGVkIHBhY2thZ2VzIGZvciBleGFtcGxlCiAgICAgICAgc2VsZjo6JGluc3RhbGxlZElzTG9jYWxEaXIgPSBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldFNlbGZEaXIoKQogICAgewogICAgICAgIGlmIChzZWxmOjokc2VsZkRpciA9PT0gbnVsbCkgewogICAgICAgICAgICBzZWxmOjokc2VsZkRpciA9IHN0cnRyKF9fRElSX18sICdcXCcsICcvJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6JHNlbGZEaXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5W10KICAgICAqIEBwc2FsbS1yZXR1cm4gbGlzdDxhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fT4KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0SW5zdGFsbGVkKCkKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gc2VsZjo6JGNhbkdldFZlbmRvcnMpIHsKICAgICAgICAgICAgc2VsZjo6JGNhbkdldFZlbmRvcnMgPSBtZXRob2RfZXhpc3RzKCdDb21wb3NlclxBdXRvbG9hZFxDbGFzc0xvYWRlcicsICdnZXRSZWdpc3RlcmVkTG9hZGVycycpOwogICAgICAgIH0KCiAgICAgICAgJGluc3RhbGxlZCA9IGFycmF5KCk7CiAgICAgICAgJGNvcGllZExvY2FsRGlyID0gZmFsc2U7CgogICAgICAgIGlmIChzZWxmOjokY2FuR2V0VmVuZG9ycykgewogICAgICAgICAgICAkc2VsZkRpciA9IHNlbGY6OmdldFNlbGZEaXIoKTsKICAgICAgICAgICAgZm9yZWFjaCAoQ2xhc3NMb2FkZXI6OmdldFJlZ2lzdGVyZWRMb2FkZXJzKCkgYXMgJHZlbmRvckRpciA9PiAkbG9hZGVyKSB7CiAgICAgICAgICAgICAgICAkdmVuZG9yRGlyID0gc3RydHIoJHZlbmRvckRpciwgJ1xcJywgJy8nKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldChzZWxmOjokaW5zdGFsbGVkQnlWZW5kb3JbJHZlbmRvckRpcl0pKSB7CiAgICAgICAgICAgICAgICAgICAgJGluc3RhbGxlZFtdID0gc2VsZjo6JGluc3RhbGxlZEJ5VmVuZG9yWyR2ZW5kb3JEaXJdOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGlzX2ZpbGUoJHZlbmRvckRpci4nL2NvbXBvc2VyL2luc3RhbGxlZC5waHAnKSkgewogICAgICAgICAgICAgICAgICAgIC8qKiBAdmFyIGFycmF5e3Jvb3Q6IGFycmF5e25hbWU6IHN0cmluZywgcHJldHR5X3ZlcnNpb246IHN0cmluZywgdmVyc2lvbjogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZ3xudWxsLCB0eXBlOiBzdHJpbmcsIGluc3RhbGxfcGF0aDogc3RyaW5nLCBhbGlhc2VzOiBzdHJpbmdbXSwgZGV2OiBib29sfSwgdmVyc2lvbnM6IGFycmF5PHN0cmluZywgYXJyYXl7cHJldHR5X3ZlcnNpb24/OiBzdHJpbmcsIHZlcnNpb24/OiBzdHJpbmcsIHJlZmVyZW5jZT86IHN0cmluZ3xudWxsLCB0eXBlPzogc3RyaW5nLCBpbnN0YWxsX3BhdGg/OiBzdHJpbmcsIGFsaWFzZXM/OiBzdHJpbmdbXSwgZGV2X3JlcXVpcmVtZW50OiBib29sLCByZXBsYWNlZD86IHN0cmluZ1tdLCBwcm92aWRlZD86IHN0cmluZ1tdfT59ICRyZXF1aXJlZCAqLwogICAgICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IHJlcXVpcmUgJHZlbmRvckRpci4nL2NvbXBvc2VyL2luc3RhbGxlZC5waHAnOwogICAgICAgICAgICAgICAgICAgIHNlbGY6OiRpbnN0YWxsZWRCeVZlbmRvclskdmVuZG9yRGlyXSA9ICRyZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgICAkaW5zdGFsbGVkW10gPSAkcmVxdWlyZWQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGY6OiRpbnN0YWxsZWQgPT09IG51bGwgJiYgJHZlbmRvckRpci4nL2NvbXBvc2VyJyA9PT0gJHNlbGZEaXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZCA9ICRyZXF1aXJlZDsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZElzTG9jYWxEaXIgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChzZWxmOjokaW5zdGFsbGVkSXNMb2NhbERpciAmJiAkdmVuZG9yRGlyLicvY29tcG9zZXInID09PSAkc2VsZkRpcikgewogICAgICAgICAgICAgICAgICAgICRjb3BpZWRMb2NhbERpciA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsID09PSBzZWxmOjokaW5zdGFsbGVkKSB7CiAgICAgICAgICAgIC8vIG9ubHkgcmVxdWlyZSB0aGUgaW5zdGFsbGVkLnBocCBmaWxlIGlmIHRoaXMgZmlsZSBpcyBsb2FkZWQgZnJvbSBpdHMgZHVtcGVkIGxvY2F0aW9uLAogICAgICAgICAgICAvLyBhbmQgbm90IGZyb20gaXRzIHNvdXJjZSBsb2NhdGlvbiBpbiB0aGUgY29tcG9zZXIvY29tcG9zZXIgcGFja2FnZSwgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21wb3Nlci9jb21wb3Nlci9pc3N1ZXMvOTkzNwogICAgICAgICAgICBpZiAoc3Vic3RyKF9fRElSX18sIC04LCAxKSAhPT0gJ0MnKSB7CiAgICAgICAgICAgICAgICAvKiogQHZhciBhcnJheXtyb290OiBhcnJheXtuYW1lOiBzdHJpbmcsIHByZXR0eV92ZXJzaW9uOiBzdHJpbmcsIHZlcnNpb246IHN0cmluZywgcmVmZXJlbmNlOiBzdHJpbmd8bnVsbCwgdHlwZTogc3RyaW5nLCBpbnN0YWxsX3BhdGg6IHN0cmluZywgYWxpYXNlczogc3RyaW5nW10sIGRldjogYm9vbH0sIHZlcnNpb25zOiBhcnJheTxzdHJpbmcsIGFycmF5e3ByZXR0eV92ZXJzaW9uPzogc3RyaW5nLCB2ZXJzaW9uPzogc3RyaW5nLCByZWZlcmVuY2U/OiBzdHJpbmd8bnVsbCwgdHlwZT86IHN0cmluZywgaW5zdGFsbF9wYXRoPzogc3RyaW5nLCBhbGlhc2VzPzogc3RyaW5nW10sIGRldl9yZXF1aXJlbWVudDogYm9vbCwgcmVwbGFjZWQ/OiBzdHJpbmdbXSwgcHJvdmlkZWQ/OiBzdHJpbmdbXX0+fSAkcmVxdWlyZWQgKi8KICAgICAgICAgICAgICAgICRyZXF1aXJlZCA9IHJlcXVpcmUgX19ESVJfXyAuICcvaW5zdGFsbGVkLnBocCc7CiAgICAgICAgICAgICAgICBzZWxmOjokaW5zdGFsbGVkID0gJHJlcXVpcmVkOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2VsZjo6JGluc3RhbGxlZCA9IGFycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzZWxmOjokaW5zdGFsbGVkICE9PSBhcnJheSgpICYmICEkY29waWVkTG9jYWxEaXIpIHsKICAgICAgICAgICAgJGluc3RhbGxlZFtdID0gc2VsZjo6JGluc3RhbGxlZDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaW5zdGFsbGVkOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CkNvcHlyaWdodCAoYykgTmlscyBBZGVybWFubiwgSm9yZGkgQm9nZ2lhbm8KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQKdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgpUSEUgU09GVFdBUkUuCgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/composer/platform_check.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIHBsYXRmb3JtX2NoZWNrLnBocCBAZ2VuZXJhdGVkIGJ5IENvbXBvc2VyCgokaXNzdWVzID0gYXJyYXkoKTsKCmlmICghKFBIUF9WRVJTSU9OX0lEID49IDcwMjA1KSkgewogICAgJGlzc3Vlc1tdID0gJ1lvdXIgQ29tcG9zZXIgZGVwZW5kZW5jaWVzIHJlcXVpcmUgYSBQSFAgdmVyc2lvbiAiPj0gNy4yLjUiLiBZb3UgYXJlIHJ1bm5pbmcgJyAuIFBIUF9WRVJTSU9OIC4gJy4nOwp9CgppZiAoJGlzc3VlcykgewogICAgaWYgKCFoZWFkZXJzX3NlbnQoKSkgewogICAgICAgIGhlYWRlcignSFRUUC8xLjEgNTAwIEludGVybmFsIFNlcnZlciBFcnJvcicpOwogICAgfQogICAgaWYgKCFpbmlfZ2V0KCdkaXNwbGF5X2Vycm9ycycpKSB7CiAgICAgICAgaWYgKFBIUF9TQVBJID09PSAnY2xpJyB8fCBQSFBfU0FQSSA9PT0gJ3BocGRiZycpIHsKICAgICAgICAgICAgZndyaXRlKFNUREVSUiwgJ0NvbXBvc2VyIGRldGVjdGVkIGlzc3VlcyBpbiB5b3VyIHBsYXRmb3JtOicgLiBQSFBfRU9MLlBIUF9FT0wgLiBpbXBsb2RlKFBIUF9FT0wsICRpc3N1ZXMpIC4gUEhQX0VPTC5QSFBfRU9MKTsKICAgICAgICB9IGVsc2VpZiAoIWhlYWRlcnNfc2VudCgpKSB7CiAgICAgICAgICAgIGVjaG8gJ0NvbXBvc2VyIGRldGVjdGVkIGlzc3VlcyBpbiB5b3VyIHBsYXRmb3JtOicgLiBQSFBfRU9MLlBIUF9FT0wgLiBzdHJfcmVwbGFjZSgnWW91IGFyZSBydW5uaW5nICcuUEhQX1ZFUlNJT04uJy4nLCAnJywgaW1wbG9kZShQSFBfRU9MLCAkaXNzdWVzKSkgLiBQSFBfRU9MLlBIUF9FT0w7CiAgICAgICAgfQogICAgfQogICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICdDb21wb3NlciBkZXRlY3RlZCBpc3N1ZXMgaW4geW91ciBwbGF0Zm9ybTogJyAuIGltcGxvZGUoJyAnLCAkaXNzdWVzKQogICAgKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMjIyB2Mi41LjAgKDIwMjItMTIpCiogU3VwcG9ydCBQSFAgOC4yIFsjOTldKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvcHVsbC85OSkKKiBQSFAgOCBjb21wYXRpYmlsaXR5IGZpeCBmb3IgRGF0ZVRpbWU6OmdldExhc3RFcnJvcnMgWyM5OF0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9wdWxsLzk4KQoqIFN1cHBvcnQgbW9yZSBPSURzIFsjOTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvcHVsbC85NSkKKiBGSU5BTCBSRUxFQVNFLiBMaWJyYXJ5IGlzIG5vdyBubyBsb25nZXIgYWN0aXZlbHkgbWFpbnRhaW5lZCBhbmQgbWFya2VkIGFzIGFyY2hpdmVkIG9uIEdpdEh1YgoKIyMjIyB2Mi40LjAgKDIwMjEtMTIpCiogRHJvcCBzdXBwb3J0IGZvciBQSFAgNy4wIFsjODldKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvcHVsbC84OSkKCiMjIyMgdjIuMy4xICgyMDIxLTEyKQoqIEFkZCBgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdYCBhdHRyaWJ1dGVzIGZvciBQSFAgOC4xIGNvbXBhdGliaWxpdHkgWyM4N10oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9wdWxsLzg3KQoKIyMjIyB2Mi4zLjAgKDIwMjEtMDQpCiogQWxsb3cgY3JlYXRpbmcgYW4gdW5zaWduZWQgQ1NSIGFuZCBhZGRpbmcgdGhlIHNpZ25hdHVyZSBsYXRlciBbIzgyXShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3B1bGwvODIpCgojIyMjIHYyLjIuMCAoMjAyMC0wOCkKKiBzdXBwb3J0IHBvbHlmaWxscyBmb3IgYmNtYXRoIGFuZCBnbXAsIGFuZCBhZGQgYSBjb21wb3Nlci5qc29uCiAgc3VnZ2VzdGlvbiBmb3IgdGhlIGBwaHBzZWNsaWIvYmNtYXRoX3BvbHlmaWxsYCBmb3Igc2VydmVycyB1bmFibGUKICB0byBpbnN0YWxsIFBIUCB0aGUgZ21wIG9yIGJjbWF0aCBleHRlbnNpb25zLgoKIyMjIyB2LjIuMS4xICYgJnYuMi4wLjIgKDIwMTgtMTIpCiogYWRkIHN0cmljdGVyIHZhbGlkYXRpb24gYXJvdW5kIHNvbWUgc3RydWN0dXJlcywgaGlnaGxpZ2hlZAogIGJ5IHd5Y2hlcHJvb2YgdGVzdCBzdWl0ZQoKIyMjIyB2LjIuMS4wICgyMDE4LTAzKQoqIGFkZCBzdXBwb3J0IGZvciBgYmNtYXRoYCBleHRlbnNpb24gKG1ha2luZyBgZ21wYCBvcHRpb25hbCkgWyM2OF0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9wdWxsLzY4KQoKIyMjIyB2LjIuMC4xICYgdi4xLjUuMyAoMjAxNy0xMikKKiBhZGQgLmdpdGF0dHJpYnV0ZXMgZmlsZSB0byBwcmV2ZW50IGV4YW1wbGVzIGFuZCB0ZXN0cyB0byBiZSBpbnN0YWxsZWQgdmlhIGNvbXBvc2VyIHdoZW4gLS1wcmVmZXItZGlzdCB3YXMgc2V0CgojIyMjIHYuMi4wLjAgKDIwMTctMDgpCiogcmVuYW1lIGBGR1xBU04xXE9iamVjdGAgdG8gYEZHXEFTTjFcQVNOT2JqZWN0YCBiZWNhdXNlIGBPYmplY3RgIGlzIGEgc3BlY2lhbCBjbGFzcyBuYW1lIGluIHRoZSBuZXh0IG1ham9yIFBIUCByZWxlYXNlCiAgLSB3aGVuIHlvdSB1cGdyYWRlIHlvdSBoYXZlIHRvIGFkYXB0IGFsbCBjb3JyZXNwb25kaW5nIGB1c2VgIGFuZCBgZXh0ZW5kc2Agc3RhdGVtZW50cyBhcyB3ZWxsIGFzIHR5cGUgaGludHMgYW5kIGFsbAogICAgdXNhZ2VzIG9mIGBPYmplY3Q6OmZyb21CaW5hcnko4oCmKWAuCiogIGdlbmVyYWxseSBkcm9wIFBIUCA1LjYgc3VwcG9ydAoKIyMjIyB2LjEuNS4yICgyMDE2LTEwLTI5KQoqIGFsbG93IGVtcHR5IG9jdGV0IHN0cmluZ3MKCiMjIyMgdi4xLjUuMSAoMjAxNS0xMC0wMikKKiBhZGQga2V5d29yZHMgdG8gY29tcG9zZXIuanNvbiAodGhpcyBpcyBhIHZlcnNpb24gb24gaXRzIG93biBzbyB0aGUga2V5d29yZHMgYXJlIGZvdW5kIG9uIGEgc3RhYmxlIHZlcnNpb24gYXQgcGFja2FnaXN0Lm9yZykKCiMjIyMgdi4xLjUuMCAoMjAxNS0xMC0zMCkKKiBmaXggYSBidWcgdGhhdCB3b3VsZCBwcmV2ZW50IHlvdSBmcm9tIGRlY29kaW5nIGNvbnRleHQgc3BlY2lmaWMgdGFncyBvbiBtdWx0aXBsZSBvYmplY3RzIFsjNTddKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvaXNzdWVzLzU3KQogIC0gYEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6Ol9fY29uc3RydWN0YCBkb2VzIG5vdyBhY2NlcHQgbXVsdGlwbGUgb2JqZWN0cyB0byBiZSB0YWdnZWQgd2l0aCBhIHNpbmdsZSB0YWcKICAtIGBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0OjpnZXRDb250ZW50YCB3aWxsIG5vdyBhbHdheXMgcmV0dXJuIGFuIGFycmF5IChldmVuIGlmIG9ubHkgb25lIG9iamVjdCBpcyB0YWdnZWQpCgojIyMjIHYuMS40LjIgKDIwMTUtMDktMjkpCiogZml4IGEgYnVnIHRoYXQgd291bGQgcHJldmVudCB5b3UgZnJvbSBkZWNvZGluZyBlbXB0eSB0YWdnZWQgb2JqZWN0cyBbIzU3XShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2lzc3Vlcy81NykKCiMjIyMgdi4xLjQuMQoqIGltcHJvdmUgZXhjZXB0aW9uIG1lc3NhZ2VzIGFuZCBnZW5lcmFsIGVycm9yIGhhbmRsaW5nIFsjNTVdKGh0dHBzIDovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3B1bGwvNTUpCgojIyMjIHYuMS40LjAKKiAqKnJlcXVpcmUgUEhQIDUuNioqCiogc3VwcG9ydCBiaWcgaW50ZWdlcnMgKGNsb3NlcyAjMSBhbmQgIzM3KQoqIGVuZm9yY2Ugb25lIGNvZGUgc3R5bGUgdmlhIFtzdHlsZWNpLmlvXVs5XQoqIHRyYWNrIGNvZGUgY292ZXJhZ2UgdmlhIFtjb3ZlcmFsbHMuaW9dWzEwXQoqIHJlcGxhY2Ugb2Jzb2xldGUgYEZHXEFTTjFcRXhjZXB0aW9uXEdlbmVyYWxFeGNlcHRpb25gIHdpdGggYFxFeGNlcHRpb25gCiogYENvbnN0cnVjdGAgKGBTZXF1ZW5jZWAsIGBTZXRgKSBkb2VzIG5vdyBpbXBsZW1lbnQgYEFycmF5QWNjZXNzYCwgYENvdW50YWJsZWAgYW5kIGBJdGVyYXRvcmAgc28gaXRzIGVhc2llciB0byB1c2UKKiBhZGQgW2BUZW1wbGF0ZVBhcnNlcmBdWzExXQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZmdyb3NzZS9waHBhc24xIiwKICAgICJkZXNjcmlwdGlvbiI6ICJBIFBIUCBGcmFtZXdvcmsgdGhhdCBhbGxvd3MgeW91IHRvIGVuY29kZSBhbmQgZGVjb2RlIGFyYml0cmFyeSBBU04uMSBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBJVFUtVCBYLjY5MCBFbmNvZGluZyBSdWxlcy4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL0ZHcm9zc2UvUEhQQVNOMSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGcmllZHJpY2ggR3Jvw59lIiwKICAgICAgICAgICAgImVtYWlsIjogImZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlIiwKICAgICAgICAgICAgInJvbGUiOiAiQXV0aG9yIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9GR3Jvc3NlL1BIUEFTTjEvY29udHJpYnV0b3JzIgogICAgICAgIH0KICAgIF0sCiAgICAia2V5d29yZHMiOiBbICJ4NjkwIiwgInguNjkwIiwgInguNTA5IiwgIng1MDkiLCAiYXNuMSIsICJhc24uMSIsICJiZXIiLCAiZGVyIiwgImJpbmFyeSIsICJlbmNvZGluZyIsICJkZWNvZGluZyIgXSwKCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjEgfHwgXjguMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeNy4wIHx8IF44LjAgfHwgXjkuMCIsCiAgICAgICAgInBocC1jb3ZlcmFsbHMvcGhwLWNvdmVyYWxscyI6ICJ+Mi4wIgogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtZ21wIjogIkdNUCBpcyB0aGUgcHJlZmVycmVkIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAiZXh0LWJjbWF0aCI6ICJCQ21hdGggaXMgdGhlIGZhbGxiYWNrIGV4dGVuc2lvbiBmb3IgYmlnIGludGVnZXIgY2FsY3VsYXRpb25zIiwKICAgICAgICAicGhwc2VjbGliL2JjbWF0aF9jb21wYXQiOiAiQkNtYXRoIHBvbHlmaWxsIGZvciBzZXJ2ZXJzIHdoZXJlIG5laXRoZXIgR01QIG5vciBCQ21hdGggaXMgYXZhaWxhYmxlIiwKICAgICAgICAiZXh0LWN1cmwiOiAiRm9yIGxvYWRpbmcgT0lEIGluZm9ybWF0aW9uIGZyb20gdGhlIHdlYiBpZiB0aGV5IGhhdmUgbm90IGJlZSBkZWZpbmVkIHN0YXRpY2FsbHkiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkZHXFwiOiAibGliLyIKICAgICAgICB9CiAgICB9LAogICAgImF1dG9sb2FkLWRldiI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJGR1xcVGVzdFxcIjogInRlc3RzLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CgphYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFN0cmluZyBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJvdGVjdGVkICR2YWx1ZTsKICAgIHByaXZhdGUgJGNoZWNrU3RyaW5nRm9ySWxsZWdhbENoYXJzID0gdHJ1ZTsKICAgIHByaXZhdGUgJGFsbG93ZWRDaGFyYWN0ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBUaGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgQVNOLjEgY2xhc3NlcyB3aGljaCByZXByZXNlbnQgc29tZSBzdHJpbmcgb2YgY2hhcmFjdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHN0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBEYXRlSW50ZXJ2YWw7CnVzZSBEYXRlVGltZTsKdXNlIERhdGVUaW1lWm9uZTsKdXNlIEV4Y2VwdGlvbjsKCmFic3RyYWN0IGNsYXNzIEFic3RyYWN0VGltZSBleHRlbmRzIEFTTk9iamVjdAp7CiAgICAvKiogQHZhciBEYXRlVGltZSAqLwogICAgcHJvdGVjdGVkICR2YWx1ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGRhdGVUaW1lID0gbnVsbCwgJGRhdGVUaW1lWm9uZSA9ICdVVEMnKQogICAgewogICAgICAgIGlmICgkZGF0ZVRpbWUgPT0gbnVsbCB8fCBpc19zdHJpbmcoJGRhdGVUaW1lKSkgewogICAgICAgICAgICAkdGltZVpvbmUgPSBuZXcgRGF0ZVRpbWVab25lKCRkYXRlVGltZVpvbmUpOwogICAgICAgICAgICAkZGF0ZVRpbWVPYmplY3QgPSBuZXcgRGF0ZVRpbWUoJGRhdGVUaW1lLCAkdGltZVpvbmUpOwogICAgICAgICAgICBpZiAoJGRhdGVUaW1lT2JqZWN0ID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZXJyb3JNZXNzYWdlID0gJHRoaXMtPmdldExhc3REYXRlVGltZUVycm9ycygpOwogICAgICAgICAgICAgICAgJGNsYXNzTmFtZSA9IElkZW50aWZpZXI6OmdldE5hbWUoJHRoaXMtPmdldFR5cGUoKSk7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKHNwcmludGYoIkNvdWxkIG5vdCBjcmVhdGUgJXMgZnJvbSBkYXRlIHRpbWUgc3RyaW5nICclcyc6ICVzIiwgJGNsYXNzTmFtZSwgJGRhdGVUaW1lLCAkZXJyb3JNZXNzYWdlKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGRhdGVUaW1lID0gJGRhdGVUaW1lT2JqZWN0OwogICAgICAgIH0gZWxzZWlmICghJGRhdGVUaW1lIGluc3RhbmNlb2YgRGF0ZVRpbWUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW52YWxpZCBmaXJzdCBhcmd1bWVudCBmb3Igc29tZSBpbnN0YW5jZSBvZiBBYnN0cmFjdFRpbWUgY29uc3RydWN0b3InKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT52YWx1ZSA9ICRkYXRlVGltZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0TGFzdERhdGVUaW1lRXJyb3JzKCkKICAgIHsKICAgICAgICAkbWVzc2FnZXMgPSAnJzsKICAgICAgICAkbGFzdEVycm9ycyA9IERhdGVUaW1lOjpnZXRMYXN0RXJyb3JzKCkgPzogWydlcnJvcnMnID0+IFtdXTsKICAgICAgICBmb3JlYWNoICgkbGFzdEVycm9yc1snZXJyb3JzJ10gYXMgJGVycm9yTWVzc2FnZSkgewogICAgICAgICAgICAkbWVzc2FnZXMgLj0gInskZXJyb3JNZXNzYWdlfSwgIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdWJzdHIoJG1lc3NhZ2VzLCAwLCAtMik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmZvcm1hdCgiWS1tLWRcdEg6aTpzIik7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBleHRyYWN0VGltZVpvbmVEYXRhKCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCwgRGF0ZVRpbWUgJGRhdGVUaW1lKQogICAgewogICAgICAgICRzaWduID0gJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdOwogICAgICAgICR0aW1lT2Zmc2V0SG91cnMgICA9IGludHZhbChzdWJzdHIoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgMikpOwogICAgICAgICR0aW1lT2Zmc2V0TWludXRlcyA9IGludHZhbChzdWJzdHIoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCArIDIsIDIpKTsKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gNDsKCiAgICAgICAgJGludGVydmFsID0gbmV3IERhdGVJbnRlcnZhbCgiUFR7JHRpbWVPZmZzZXRIb3Vyc31IeyR0aW1lT2Zmc2V0TWludXRlc31NIik7CiAgICAgICAgaWYgKCRzaWduID09ICcrJykgewogICAgICAgICAgICAkZGF0ZVRpbWUtPnN1YigkaW50ZXJ2YWwpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkYXRlVGltZS0+YWRkKCRpbnRlcnZhbCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRhdGVUaW1lOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/ASNObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCaXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCb29sZWFuOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcRW51bWVyYXRlZDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdlbmVyYWxpemVkVGltZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxOdWxsT2JqZWN0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFJlbGF0aXZlT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXQ7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxVVENUaW1lOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcTnVtZXJpY1N0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFVURjhTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxVbml2ZXJzYWxTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxDaGFyYWN0ZXJTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxHZW5lcmFsU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVmlzaWJsZVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEdyYXBoaWNTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxCTVBTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxUNjFTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3REZXNjcmlwdG9yOwp1c2UgRkdcVXRpbGl0eVxCaWdJbnRlZ2VyOwp1c2UgTG9naWNFeGNlcHRpb247CgovKioKICogQ2xhc3MgQVNOT2JqZWN0IGlzIHRoZSBiYXNlIGNsYXNzIGZvciBhbGwgY29uY3JldGUgQVNOLjEgb2JqZWN0cy4KICovCmFic3RyYWN0IGNsYXNzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJGNvbnRlbnRMZW5ndGg7CiAgICBwcml2YXRlICRuck9mTGVuZ3RoT2N0ZXRzOwoKICAgIC8qKgogICAgICogTXVzdCByZXR1cm4gdGhlIG51bWJlciBvZiBvY3RldHMgb2YgdGhlIGNvbnRlbnQgcGFydC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpOwoKICAgIC8qKgogICAgICogRW5jb2RlIHRoZSBvYmplY3QgdXNpbmcgREVSIGVuY29kaW5nLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLjY5MCNERVJfZW5jb2RpbmcKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyB0aGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdHMgdmFsdWUKICAgICAqLwogICAgYWJzdHJhY3QgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBjb250ZW50IG9mIHRoaXMgb2JqZWN0IGluIGEgbm9uIGVuY29kZWQgZm9ybS4KICAgICAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJpbnQgdGhlIHZhbHVlIGluIGh1bWFuIHJlYWRhYmxlIGZvcm0uCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpOwoKICAgIC8qKgogICAgICogUmV0dXJuIHRoZSBvYmplY3QgdHlwZSBvY3RldC4KICAgICAqIFRoaXMgc2hvdWxkIHVzZSB0aGUgY2xhc3MgY29uc3RhbnRzIG9mIElkZW50aWZpZXIuCiAgICAgKgogICAgICogQHNlZSBJZGVudGlmaWVyCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIGlkZW50aWZpZXIgb2N0ZXRzLiBJZiBhbiBpbmhlcml0aW5nIGNsYXNzIG1vZGVscyBhIHRhZyB3aXRoCiAgICAgKiB0aGUgbG9uZyBmb3JtIGlkZW50aWZpZXIgZm9ybWF0LCBpdCBNVVNUIHJlaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvCiAgICAgKiByZXR1cm4gYWxsIG9jdGV0cyBvZiB0aGUgaWRlbnRpZmllci4KICAgICAqCiAgICAgKiBAdGhyb3dzIExvZ2ljRXhjZXB0aW9uIElmIHRoZSBpZGVudGlmaWVyIGZvcm1hdCBpcyBsb25nIGZvcm0KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBJZGVudGlmaWVyIGFzIGEgc2V0IG9mIG9jdGV0cwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SWRlbnRpZmllcigpCiAgICB7CiAgICAgICAgJGZpcnN0T2N0ZXQgPSAkdGhpcy0+Z2V0VHlwZSgpOwoKICAgICAgICBpZiAoSWRlbnRpZmllcjo6aXNMb25nRm9ybSgkZmlyc3RPY3RldCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKHNwcmludGYoJ0lkZW50aWZpZXIgb2YgJXMgdXNlcyB0aGUgbG9uZyBmb3JtIGFuZCBtdXN0IHRoZXJlZm9yIG92ZXJyaWRlICJBU05PYmplY3Q6OmdldElkZW50aWZpZXIoKSIuJywgZ2V0X2NsYXNzKCR0aGlzKSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNocigkZmlyc3RPY3RldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmNvZGUgdGhpcyBvYmplY3QgdXNpbmcgREVSIGVuY29kaW5nLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIHRoZSBmdWxsIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29tcGxldGUgb2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRCaW5hcnkoKQogICAgewogICAgICAgICRyZXN1bHQgID0gJHRoaXMtPmdldElkZW50aWZpZXIoKTsKICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5jcmVhdGVMZW5ndGhQYXJ0KCk7CiAgICAgICAgJHJlc3VsdCAuPSAkdGhpcy0+Z2V0RW5jb2RlZFZhbHVlKCk7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlTGVuZ3RoUGFydCgpCiAgICB7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSAkdGhpcy0+Z2V0Q29udGVudExlbmd0aCgpOwogICAgICAgICRuck9mTGVuZ3RoT2N0ZXRzID0gJHRoaXMtPmdldE51bWJlck9mTGVuZ3RoT2N0ZXRzKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgaWYgKCRuck9mTGVuZ3RoT2N0ZXRzID09IDEpIHsKICAgICAgICAgICAgcmV0dXJuIGNocigkY29udGVudExlbmd0aCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gdGhlIGZpcnN0IGxlbmd0aCBvY3RldCBkZXRlcm1pbmVzIHRoZSBudW1iZXIgc3Vic2VxdWVudCBsZW5ndGggb2N0ZXRzCiAgICAgICAgICAgICRsZW5ndGhPY3RldHMgPSBjaHIoMHg4MCB8ICgkbnJPZkxlbmd0aE9jdGV0cyAtIDEpKTsKICAgICAgICAgICAgZm9yICgkc2hpZnRMZW5ndGggPSA4ICogKCRuck9mTGVuZ3RoT2N0ZXRzIC0gMik7ICRzaGlmdExlbmd0aCA+PSAwOyAkc2hpZnRMZW5ndGggLT0gOCkgewogICAgICAgICAgICAgICAgJGxlbmd0aE9jdGV0cyAuPSBjaHIoJGNvbnRlbnRMZW5ndGggPj4gJHNoaWZ0TGVuZ3RoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRsZW5ndGhPY3RldHM7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkY29udGVudExlbmd0aCA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+bnJPZkxlbmd0aE9jdGV0cykpIHsKICAgICAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoID09IG51bGwpIHsKICAgICAgICAgICAgICAgICRjb250ZW50TGVuZ3RoID0gJHRoaXMtPmdldENvbnRlbnRMZW5ndGgoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHMgPSAxOwogICAgICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPiAxMjcpIHsKICAgICAgICAgICAgICAgIGRvIHsgLy8gbG9uZyBmb3JtCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHMrKzsKICAgICAgICAgICAgICAgICAgICAkY29udGVudExlbmd0aCA9ICRjb250ZW50TGVuZ3RoID4+IDg7CiAgICAgICAgICAgICAgICB9IHdoaWxlICgkY29udGVudExlbmd0aCA+IDApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPm5yT2ZMZW5ndGhPY3RldHM7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldENvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmNvbnRlbnRMZW5ndGgpKSB7CiAgICAgICAgICAgICR0aGlzLT5jb250ZW50TGVuZ3RoID0gJHRoaXMtPmNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudExlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0Q29udGVudExlbmd0aCgkbmV3Q29udGVudExlbmd0aCkKICAgIHsKICAgICAgICAkdGhpcy0+Y29udGVudExlbmd0aCA9ICRuZXdDb250ZW50TGVuZ3RoOwogICAgICAgICR0aGlzLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkbmV3Q29udGVudExlbmd0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIHdob2xlIG9iamVjdCAoaW5jbHVkaW5nIHRoZSBpZGVudGlmaWVyIGFuZCBsZW5ndGggb2N0ZXRzKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE9iamVjdExlbmd0aCgpCiAgICB7CiAgICAgICAgJG5yT2ZJZGVudGlmaWVyT2N0ZXRzID0gc3RybGVuKCR0aGlzLT5nZXRJZGVudGlmaWVyKCkpOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gJHRoaXMtPmdldENvbnRlbnRMZW5ndGgoKTsKICAgICAgICAkbnJPZkxlbmd0aE9jdGV0cyA9ICR0aGlzLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkbnJPZklkZW50aWZpZXJPY3RldHMgKyAkbnJPZkxlbmd0aE9jdGV0cyArICRjb250ZW50TGVuZ3RoOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENvbnRlbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIEFTTi4xIFR5cGUgb2YgdGhpcyBvYmplY3QuCiAgICAgKgogICAgICogQHNlZSBJZGVudGlmaWVyOjpnZXROYW1lKCkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGVOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6Z2V0TmFtZSgkdGhpcy0+Z2V0VHlwZSgpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKgogICAgICogQHRocm93cyBQYXJzZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIFxGR1xBU04xXEFTTk9iamVjdAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBpZiAoc3RybGVuKCRiaW5hcnlEYXRhKSA8PSAkb2Zmc2V0SW5kZXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignQ2FuIG5vdCBwYXJzZSBiaW5hcnkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaWRlbnRpZmllck9jdGV0ID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pOwogICAgICAgIGlmIChJZGVudGlmaWVyOjppc0NvbnRleHRTcGVjaWZpY0NsYXNzKCRpZGVudGlmaWVyT2N0ZXQpICYmIElkZW50aWZpZXI6OmlzQ29uc3RydWN0ZWQoJGlkZW50aWZpZXJPY3RldCkpIHsKICAgICAgICAgICAgcmV0dXJuIEV4cGxpY2l0bHlUYWdnZWRPYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRpZGVudGlmaWVyT2N0ZXQpIHsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpCSVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gQml0U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OkJPT0xFQU46CiAgICAgICAgICAgICAgICByZXR1cm4gQm9vbGVhbjo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpFTlVNRVJBVEVEOgogICAgICAgICAgICAgICAgcmV0dXJuIEVudW1lcmF0ZWQ6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6SU5URUdFUjoKICAgICAgICAgICAgICAgIHJldHVybiBJbnRlZ2VyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6Ok5VTEw6CiAgICAgICAgICAgICAgICByZXR1cm4gTnVsbE9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpPQkpFQ1RfSURFTlRJRklFUjoKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3RJZGVudGlmaWVyOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlJFTEFUSVZFX09JRDoKICAgICAgICAgICAgICAgIHJldHVybiBSZWxhdGl2ZU9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6T0NURVRTVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gT2N0ZXRTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6U0VRVUVOQ0U6CiAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2U6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6U0VUOgogICAgICAgICAgICAgICAgcmV0dXJuIFNldDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpVVENfVElNRToKICAgICAgICAgICAgICAgIHJldHVybiBVVENUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OkdFTkVSQUxJWkVEX1RJTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gR2VuZXJhbGl6ZWRUaW1lOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OklBNV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gSUE1U3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlBSSU5UQUJMRV9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gUHJpbnRhYmxlU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6Ok5VTUVSSUNfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIE51bWVyaWNTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6VVRGOF9TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gVVRGOFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpVTklWRVJTQUxfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFVuaXZlcnNhbFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpDSEFSQUNURVJfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIENoYXJhY3RlclN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpHRU5FUkFMX1NUUklORzoKICAgICAgICAgICAgICAgIHJldHVybiBHZW5lcmFsU3RyaW5nOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBjYXNlIElkZW50aWZpZXI6OlZJU0lCTEVfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTdHJpbmc6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIGNhc2UgSWRlbnRpZmllcjo6R1JBUEhJQ19TVFJJTkc6CiAgICAgICAgICAgICAgICByZXR1cm4gR3JhcGhpY1N0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpCTVBfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIEJNUFN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpUNjFfU1RSSU5HOgogICAgICAgICAgICAgICAgcmV0dXJuIFQ2MVN0cmluZzo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgY2FzZSBJZGVudGlmaWVyOjpPQkpFQ1RfREVTQ1JJUFRPUjoKICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3REZXNjcmlwdG9yOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB0aGUgaWRlbnRpZmllciBtYXkgYmUgPjEgYnl0ZS4KICAgICAgICAgICAgICAgIGlmIChJZGVudGlmaWVyOjppc0NvbnN0cnVjdGVkKCRpZGVudGlmaWVyT2N0ZXQpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBVbmtub3duQ29uc3RydWN0ZWRPYmplY3QoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRpZGVudGlmaWVyID0gc2VsZjo6cGFyc2VCaW5hcnlJZGVudGlmaWVyKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICAgICAgICAgICRsZW5ndGhPZlVua25vd25PYmplY3QgPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgJG9mZnNldEluZGV4ICs9ICRsZW5ndGhPZlVua25vd25PYmplY3Q7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgVW5rbm93bk9iamVjdCgkaWRlbnRpZmllciwgJGxlbmd0aE9mVW5rbm93bk9iamVjdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VJZGVudGlmaWVyKCRpZGVudGlmaWVyT2N0ZXQsICRleHBlY3RlZElkZW50aWZpZXIsICRvZmZzZXRGb3JFeGNlcHRpb25IYW5kbGluZykKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRpZGVudGlmaWVyT2N0ZXQpIHx8IGlzX251bWVyaWMoJGlkZW50aWZpZXJPY3RldCkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGlkZW50aWZpZXJPY3RldCA9IG9yZCgkaWRlbnRpZmllck9jdGV0KTsKICAgICAgICB9CgogICAgICAgIGlmICgkaWRlbnRpZmllck9jdGV0ICE9ICRleHBlY3RlZElkZW50aWZpZXIpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSAnQ2FuIG5vdCBjcmVhdGUgYW4gJy5JZGVudGlmaWVyOjpnZXROYW1lKCRleHBlY3RlZElkZW50aWZpZXIpLicgZnJvbSBhbiAnLklkZW50aWZpZXI6OmdldE5hbWUoJGlkZW50aWZpZXJPY3RldCk7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJG1lc3NhZ2UsICRvZmZzZXRGb3JFeGNlcHRpb25IYW5kbGluZyk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VCaW5hcnlJZGVudGlmaWVyKCRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4KQogICAgewogICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGlkZW50aWZpZXIgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaWRlbnRpZmllciA9ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXTsKCiAgICAgICAgaWYgKElkZW50aWZpZXI6OmlzTG9uZ0Zvcm0ob3JkKCRpZGVudGlmaWVyKSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgaWYgKHN0cmxlbigkYmluYXJ5RGF0YSkgPD0gJG9mZnNldEluZGV4KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGlkZW50aWZpZXIgKGxvbmcgZm9ybSkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG5leHRPY3RldCA9ICRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXTsKICAgICAgICAgICAgJGlkZW50aWZpZXIgLj0gJG5leHRPY3RldDsKCiAgICAgICAgICAgIGlmICgob3JkKCRuZXh0T2N0ZXQpICYgMHg4MCkgPT09IDApIHsKICAgICAgICAgICAgICAgIC8vIHRoZSBtb3N0IHNpZ25pZmljYW50IGJpdCBpcyAwIHRvIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpZGVudGlmaWVyOwogICAgfQoKICAgIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gcGFyc2VDb250ZW50TGVuZ3RoKCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCwgJG1pbmltdW1MZW5ndGggPSAwKQogICAgewogICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDYW4gbm90IHBhcnNlIGNvbnRlbnQgbGVuZ3RoIGZyb20gZGF0YTogT2Zmc2V0IGluZGV4IGxhcmdlciB0aGFuIGlucHV0IHNpemUnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKTsKICAgICAgICBpZiAoKCRjb250ZW50TGVuZ3RoICYgMHg4MCkgIT0gMCkgewogICAgICAgICAgICAvLyBiaXQgOCBpcyBzZXQgLT4gdGhpcyBpcyB0aGUgbG9uZyBmb3JtCiAgICAgICAgICAgICRuck9mTGVuZ3RoT2N0ZXRzID0gJGNvbnRlbnRMZW5ndGggJiAweDdGOwogICAgICAgICAgICAkY29udGVudExlbmd0aCA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgweDAwKTsKICAgICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJG5yT2ZMZW5ndGhPY3RldHM7ICRpKyspIHsKICAgICAgICAgICAgICAgIGlmIChzdHJsZW4oJGJpbmFyeURhdGEpIDw9ICRvZmZzZXRJbmRleCkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgY29udGVudCBsZW5ndGggKGxvbmcgZm9ybSkgZnJvbSBkYXRhOiBPZmZzZXQgaW5kZXggbGFyZ2VyIHRoYW4gaW5wdXQgc2l6ZScsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkY29udGVudExlbmd0aCA9ICRjb250ZW50TGVuZ3RoLT5zaGlmdExlZnQoOCktPmFkZChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkY29udGVudExlbmd0aC0+Y29tcGFyZShQSFBfSU5UX01BWCkgPiAwKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCJDYW4gbm90IHBhcnNlIGNvbnRlbnQgbGVuZ3RoIGZyb20gZGF0YTogbGVuZ3RoID4gbWF4aW11bSBpbnRlZ2VyIiwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRlbnRMZW5ndGggPSAkY29udGVudExlbmd0aC0+dG9JbnRlZ2VyKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPCAkbWluaW11bUxlbmd0aCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdBICcuZ2V0X2NhbGxlZF9jbGFzcygpLiIgc2hvdWxkIGhhdmUgYSBjb250ZW50IGxlbmd0aCBvZiBhdCBsZWFzdCB7JG1pbmltdW1MZW5ndGh9LiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyB7JGNvbnRlbnRMZW5ndGh9IiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRsZW5EYXRhUmVtYWluaW5nID0gc3RybGVuKCRiaW5hcnlEYXRhKSAtICRvZmZzZXRJbmRleDsKCiAgICAgICAgaWYgKCRsZW5EYXRhUmVtYWluaW5nIDwgJGNvbnRlbnRMZW5ndGgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQ29udGVudCBsZW5ndGggeyRjb250ZW50TGVuZ3RofSBleGNlZWRzIHJlbWFpbmluZyBkYXRhIGxlbmd0aCB7JGxlbkRhdGFSZW1haW5pbmd9IiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29udGVudExlbmd0aDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Base128.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBGR1xBU04xOwoKdXNlIEZHXFV0aWxpdHlcQmlnSW50ZWdlcjsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKCi8qKgogKiBBIGJhc2UtMTI4IGRlY29kZXIuCiAqLwpjbGFzcyBCYXNlMTI4CnsKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkdmFsdWUpCiAgICB7CiAgICAgICAgJHZhbHVlID0gQmlnSW50ZWdlcjo6Y3JlYXRlKCR2YWx1ZSk7CiAgICAgICAgJG9jdGV0cyA9IGNocigkdmFsdWUtPm1vZHVsdXMoMHg4MCktPnRvSW50ZWdlcigpKTsKCiAgICAgICAgJHZhbHVlID0gJHZhbHVlLT5zaGlmdFJpZ2h0KDcpOwogICAgICAgIHdoaWxlICgkdmFsdWUtPmNvbXBhcmUoMCkgPiAwKSB7CiAgICAgICAgICAgICRvY3RldHMgLj0gY2hyKDB4ODAgfCAkdmFsdWUtPm1vZHVsdXMoMHg4MCktPnRvSW50ZWdlcigpKTsKICAgICAgICAgICAgJHZhbHVlID0gJHZhbHVlLT5zaGlmdFJpZ2h0KDcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN0cnJldigkb2N0ZXRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9jdGV0cwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBvY3RldHMgcmVwcmVzZW50IGEgbWFsZm9ybWVkIGJhc2UtMTI4IHZhbHVlIG9yIHRoZSBkZWNvZGVkIHZhbHVlIHdvdWxkIGV4Y2VlZCB0aGUgdGhlIG1heGltdW0gaW50ZWdlciBsZW5ndGgKICAgICAqCiAgICAgKiBAcmV0dXJuIGludAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29kZSgkb2N0ZXRzKQogICAgewogICAgICAgICRiaXRzUGVyT2N0ZXQgPSA3OwogICAgICAgICR2YWx1ZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgwKTsKICAgICAgICAkaSA9IDA7CgogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJG9jdGV0c1skaV0pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ01hbGZvcm1lZCBiYXNlLTEyOCBlbmNvZGVkIHZhbHVlICgweCVzKS4nLCBzdHJ0b3VwcGVyKGJpbjJoZXgoJG9jdGV0cykpID86ICcwJykpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkb2N0ZXQgPSBvcmQoJG9jdGV0c1skaSsrXSk7CgogICAgICAgICAgICAkbDEgPSAkdmFsdWUtPnNoaWZ0TGVmdCgkYml0c1Blck9jdGV0KTsKICAgICAgICAgICAgJHIxID0gJG9jdGV0ICYgMHg3ZjsKICAgICAgICAgICAgJHZhbHVlID0gJGwxLT5hZGQoJHIxKTsKCiAgICAgICAgICAgIGlmICgwID09PSAoJG9jdGV0ICYgMHg4MCkpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKHN0cmluZykkdmFsdWU7CiAgICB9Cn0K]]></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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBPYmplY3RJZGVudGlmaWVyfHN0cmluZyAkb2JqSWRlbnRpZmllcgogICAgICogQHBhcmFtIFxGR1xBU04xXEFTTk9iamVjdCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmpJZGVudGlmaWVyLCBBU05PYmplY3QgJHZhbHVlKQogICAgewogICAgICAgIGlmICgkb2JqSWRlbnRpZmllciBpbnN0YW5jZW9mIE9iamVjdElkZW50aWZpZXIgPT0gZmFsc2UpIHsKICAgICAgICAgICAgJG9iaklkZW50aWZpZXIgPSBuZXcgT2JqZWN0SWRlbnRpZmllcigkb2JqSWRlbnRpZmllcik7CiAgICAgICAgfQogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG9iaklkZW50aWZpZXIsICR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2hpbGRyZW5bMF0uJzogJy4kdGhpcy0+Y2hpbGRyZW5bMV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/RDNString.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcUHJpbnRhYmxlU3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcVVRGOFN0cmluZzsKCmNsYXNzIFJETlN0cmluZyBleHRlbmRzIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyICRvYmplY3RJZGVudGlmaWVyU3RyaW5nCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXEFTTk9iamVjdCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRvYmplY3RJZGVudGlmaWVyU3RyaW5nLCAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKFByaW50YWJsZVN0cmluZzo6aXNWYWxpZCgkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBQcmludGFibGVTdHJpbmcoJHZhbHVlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoSUE1U3RyaW5nOjppc1ZhbGlkKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBJQTVTdHJpbmcoJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IG5ldyBVVEY4U3RyaW5nKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG9iamVjdElkZW50aWZpZXJTdHJpbmcsICR2YWx1ZSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Composite/RelativeDistinguishedName.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxDb21wb3NpdGU7Cgp1c2UgRkdcQVNOMVxFeGNlcHRpb25cTm90SW1wbGVtZW50ZWRFeGNlcHRpb247CnVzZSBGR1xBU04xXEFTTk9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNldDsKCmNsYXNzIFJlbGF0aXZlRGlzdGluZ3Vpc2hlZE5hbWUgZXh0ZW5kcyBTZXQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFxGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyICRvYmpJZGVudGlmaWVyU3RyaW5nCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcQVNOT2JqZWN0ICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG9iaklkZW50aWZpZXJTdHJpbmcsIEFTTk9iamVjdCAkdmFsdWUpCiAgICB7CiAgICAgICAgLy8gVE9ETzogVGhpcyBkb2VzIG9ubHkgc3VwcG9ydCBvbmUgZWxlbWVudCBpbiB0aGUgUmVsYXRpdmVEaXN0aW5ndWlzaGVkTmFtZSBTZXQgYnV0IGl0IGl0IGlzIGRlZmluZWQgYXMgZm9sbG93czoKICAgICAgICAvLyBSZWxhdGl2ZURpc3Rpbmd1aXNoZWROYW1lIDo6PSBTRVQgU0laRSAoMS4uTUFYKSBPRiBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KG5ldyBBdHRyaWJ1dGVUeXBlQW5kVmFsdWUoJG9iaklkZW50aWZpZXJTdHJpbmcsICR2YWx1ZSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICAvKiogQHZhciBcRkdcQVNOMVxBU05PYmplY3QgJGZpcnN0T2JqZWN0ICovCiAgICAgICAgJGZpcnN0T2JqZWN0ID0gJHRoaXMtPmNoaWxkcmVuWzBdOwogICAgICAgIHJldHVybiAkZmlyc3RPYmplY3QtPl9fdG9TdHJpbmcoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEF0IHRoZSBjdXJyZW50IHZlcnNpb24gdGhpcyBjb2RlIGNhbiBub3Qgd29yayBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgQ29uc3RydWN0IHJlcXVpcmVzCiAgICAgKiB0aGUgY2xhc3MgdG8gc3VwcG9ydCBhIGNvbnN0cnVjdG9yIHdpdGhvdXQgYXJndW1lbnRzLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHRoaXMgZnVuY3Rpb24gaXMgbm90IHlldCBpbXBsZW1lbnRlZCEgRmVlbCBmcmVlIHRvIHN1Ym1pdCBhIHB1bGwgcmVxdWVzdCBvbiBnaXRodWIKICAgICAqIEBwYXJhbSBzdHJpbmcgJGJpbmFyeURhdGEKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldEluZGV4CiAgICAgKiBAdGhyb3dzIE5vdEltcGxlbWVudGVkRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEV4Y2VwdGlvbigpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Construct.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBBcnJheUFjY2VzczsKdXNlIEFycmF5SXRlcmF0b3I7CnVzZSBDb3VudGFibGU7CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBJdGVyYXRvcjsKCmFic3RyYWN0IGNsYXNzIENvbnN0cnVjdCBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIENvdW50YWJsZSwgQXJyYXlBY2Nlc3MsIEl0ZXJhdG9yLCBQYXJzYWJsZQp7CiAgICAvKiogQHZhciBcRkdcQVNOMVxBU05PYmplY3RbXSAqLwogICAgcHJvdGVjdGVkICRjaGlsZHJlbjsKICAgIHByaXZhdGUgJGl0ZXJhdG9yUG9zaXRpb247CgogICAgLyoqCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcQVNOT2JqZWN0W10gJGNoaWxkcmVuIHRoZSB2YXJpYWRpYyB0eXBlIGhpbnQgaXMgY29tbWVudGVkIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svaGh2bS9pc3N1ZXMvNDg1OAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoLyogSEhfRklYTUVbNDg1OF06IHZhcmlhZGljICsgc3RyaWN0ICovIC4uLiRjaGlsZHJlbikKICAgIHsKICAgICAgICAkdGhpcy0+Y2hpbGRyZW4gPSAkY2hpbGRyZW47CiAgICAgICAgJHRoaXMtPml0ZXJhdG9yUG9zaXRpb24gPSAwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPml0ZXJhdG9yUG9zaXRpb24gPSAwOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIGN1cnJlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2hpbGRyZW5bJHRoaXMtPml0ZXJhdG9yUG9zaXRpb25dOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIGtleSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5pdGVyYXRvclBvc2l0aW9uOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIG5leHQoKQogICAgewogICAgICAgICR0aGlzLT5pdGVyYXRvclBvc2l0aW9uKys7CiAgICB9CgogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWQoKQogICAgewogICAgICAgIHJldHVybiBpc3NldCgkdGhpcy0+Y2hpbGRyZW5bJHRoaXMtPml0ZXJhdG9yUG9zaXRpb25dKTsKICAgIH0KCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRFeGlzdHMoJG9mZnNldCkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkb2Zmc2V0LCAkdGhpcy0+Y2hpbGRyZW4pOwogICAgfQoKICAgICNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXQogICAgcHVibGljIGZ1bmN0aW9uIG9mZnNldEdldCgkb2Zmc2V0KQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y2hpbGRyZW5bJG9mZnNldF07CiAgICB9CgogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gb2Zmc2V0U2V0KCRvZmZzZXQsICR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoJG9mZnNldCA9PT0gbnVsbCkgewogICAgICAgICAgICAkb2Zmc2V0ID0gY291bnQoJHRoaXMtPmNoaWxkcmVuKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jaGlsZHJlblskb2Zmc2V0XSA9ICR2YWx1ZTsKICAgIH0KCiAgICAjW1xSZXR1cm5UeXBlV2lsbENoYW5nZV0KICAgIHB1YmxpYyBmdW5jdGlvbiBvZmZzZXRVbnNldCgkb2Zmc2V0KQogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5jaGlsZHJlblskb2Zmc2V0XSk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgICRsZW5ndGggPSAwOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jaGlsZHJlbiBhcyAkY29tcG9uZW50KSB7CiAgICAgICAgICAgICRsZW5ndGggKz0gJGNvbXBvbmVudC0+Z2V0T2JqZWN0TGVuZ3RoKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGxlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNoaWxkcmVuIGFzICRjb21wb25lbnQpIHsKICAgICAgICAgICAgJHJlc3VsdCAuPSAkY29tcG9uZW50LT5nZXRCaW5hcnkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDaGlsZChBU05PYmplY3QgJGNoaWxkKQogICAgewogICAgICAgICR0aGlzLT5jaGlsZHJlbltdID0gJGNoaWxkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRDaGlsZHJlbihhcnJheSAkY2hpbGRyZW4pCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGNoaWxkcmVuIGFzICRjaGlsZCkgewogICAgICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJGNoaWxkKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRuck9mQ2hpbGRyZW4gPSAkdGhpcy0+Z2V0TnVtYmVyT2ZDaGlsZHJlbigpOwogICAgICAgICRjaGlsZFN0cmluZyA9ICRuck9mQ2hpbGRyZW4gPT0gMSA/ICdjaGlsZCcgOiAnY2hpbGRyZW4nOwoKICAgICAgICByZXR1cm4gIlt7JG5yT2ZDaGlsZHJlbn0geyRjaGlsZFN0cmluZ31dIjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtYmVyT2ZDaGlsZHJlbigpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5jaGlsZHJlbik7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxGR1xBU04xXEFTTk9iamVjdFtdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDaGlsZHJlbigpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jaGlsZHJlbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gXEZHXEFTTjFcQVNOT2JqZWN0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGaXJzdENoaWxkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNoaWxkcmVuWzBdOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkYmluYXJ5RGF0YQogICAgICogQHBhcmFtIGludCAkb2Zmc2V0SW5kZXgKICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIENvbnN0cnVjdHxzdGF0aWMKICAgICAqLwogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygpOwogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCAkcGFyc2VkT2JqZWN0LT5nZXRUeXBlKCksICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkc3RhcnRJbmRleCA9ICRvZmZzZXRJbmRleDsKCiAgICAgICAgJGNoaWxkcmVuID0gW107CiAgICAgICAgJG9jdGV0c1RvUmVhZCA9ICRjb250ZW50TGVuZ3RoOwogICAgICAgIHdoaWxlICgkb2N0ZXRzVG9SZWFkID4gMCkgewogICAgICAgICAgICAkbmV3Q2hpbGQgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvY3RldHNUb1JlYWQgLT0gJG5ld0NoaWxkLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkbmV3Q2hpbGQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9jdGV0c1RvUmVhZCAhPT0gMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCJTZXF1ZW5jZSBsZW5ndGggaW5jb3JyZWN0IiwgJHN0YXJ0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkQ2hpbGRyZW4oJGNoaWxkcmVuKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9CgogICAgI1tcUmV0dXJuVHlwZVdpbGxDaGFuZ2VdCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoJG1vZGUgPSBDT1VOVF9OT1JNQUwpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5jaGlsZHJlbiwgJG1vZGUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJdGVyYXRvcigpCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBBcnJheUl0ZXJhdG9yKCR0aGlzLT5jaGlsZHJlbik7CiAgICB9Cn0=]]></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+PiBSZXZpc2VkIE5vdmVtYmVyIDEsIDE5OTMKICoKICogWy4uLl0KICogRXhwbGljaXRseSB0YWdnZWQgdHlwZXMgYXJlIGRlcml2ZWQgZnJvbSBvdGhlciB0eXBlcyBieSBhZGRpbmcgYW4gb3V0ZXIgdGFnIHRvIHRoZSB1bmRlcmx5aW5nIHR5cGUuCiAqIEluIGVmZmVjdCwgZXhwbGljaXRseSB0YWdnZWQgdHlwZXMgYXJlIHN0cnVjdHVyZWQgdHlwZXMgY29uc2lzdGluZyBvZiBvbmUgY29tcG9uZW50LCB0aGUgdW5kZXJseWluZyB0eXBlLgogKiBFeHBsaWNpdCB0YWdnaW5nIGlzIGRlbm90ZWQgYnkgdGhlIEFTTi4xIGtleXdvcmRzIFtjbGFzcyBudW1iZXJdIEVYUExJQ0lUIChzZWUgU2VjdGlvbiA1LjIpLgogKiBbLi4uXQogKgogKiBAc2VlIGh0dHA6Ly9sdWNhLm50b3Aub3JnL1RlYWNoaW5nL0FwcHVudGkvYXNuMS5odG1sCiAqLwpjbGFzcyBFeHBsaWNpdGx5VGFnZ2VkT2JqZWN0IGV4dGVuZHMgQVNOT2JqZWN0CnsKICAgIC8qKiBAdmFyIFxGR1xBU04xXEFTTk9iamVjdFtdICovCiAgICBwcml2YXRlICRkZWNvcmF0ZWRPYmplY3RzOwogICAgcHJpdmF0ZSAkdGFnOwoKICAgIC8qKgogICAgICogQHBhcmFtIGludCAkdGFnCiAgICAgKiBAcGFyYW0gXEZHXEFTTjFcQVNOT2JqZWN0ICRvYmplY3RzLC4uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHRhZywgLyogSEhfRklYTUVbNDg1OF06IHZhcmlhZGljICsgc3RyaWN0ICovIC4uLiRvYmplY3RzKQogICAgewogICAgICAgICR0aGlzLT50YWcgPSAkdGFnOwogICAgICAgICR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzID0gJG9iamVjdHM7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgICRsZW5ndGggPSAwOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzIGFzICRvYmplY3QpIHsKICAgICAgICAgICAgJGxlbmd0aCArPSAkb2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbGVuZ3RoOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICRlbmNvZGVkID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRlY29yYXRlZE9iamVjdHMgYXMgJG9iamVjdCkgewogICAgICAgICAgICAkZW5jb2RlZCAuPSAkb2JqZWN0LT5nZXRCaW5hcnkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZW5jb2RlZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kZWNvcmF0ZWRPYmplY3RzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCkKICAgIHsKICAgICAgICBzd2l0Y2ggKCRsZW5ndGggPSBjb3VudCgkdGhpcy0+ZGVjb3JhdGVkT2JqZWN0cykpIHsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgIHJldHVybiAiQ29udGV4dCBzcGVjaWZpYyBlbXB0eSBvYmplY3Qgd2l0aCB0YWcgW3skdGhpcy0+dGFnfV0iOwogICAgICAgIGNhc2UgMToKICAgICAgICAgICAgJGRlY29yYXRlZFR5cGUgPSBJZGVudGlmaWVyOjpnZXRTaG9ydE5hbWUoJHRoaXMtPmRlY29yYXRlZE9iamVjdHNbMF0tPmdldFR5cGUoKSk7CiAgICAgICAgICAgIHJldHVybiAiQ29udGV4dCBzcGVjaWZpYyAkZGVjb3JhdGVkVHlwZSB3aXRoIHRhZyBbeyR0aGlzLT50YWd9XSI7CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgcmV0dXJuICIkbGVuZ3RoIGNvbnRleHQgc3BlY2lmaWMgb2JqZWN0cyB3aXRoIHRhZyBbeyR0aGlzLT50YWd9XSI7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gb3JkKCR0aGlzLT5nZXRJZGVudGlmaWVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICAkaWRlbnRpZmllciA9IElkZW50aWZpZXI6OmNyZWF0ZShJZGVudGlmaWVyOjpDTEFTU19DT05URVhUX1NQRUNJRklDLCB0cnVlLCAkdGhpcy0+dGFnKTsKCiAgICAgICAgcmV0dXJuIGlzX2ludCgkaWRlbnRpZmllcikgPyBjaHIoJGlkZW50aWZpZXIpIDogJGlkZW50aWZpZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRhZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50YWc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgJGlkZW50aWZpZXIgPSBzZWxmOjpwYXJzZUJpbmFyeUlkZW50aWZpZXIoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgJGZpcnN0SWRlbnRpZmllck9jdGV0ID0gb3JkKCRpZGVudGlmaWVyKTsKICAgICAgICBhc3NlcnQoSWRlbnRpZmllcjo6aXNDb250ZXh0U3BlY2lmaWNDbGFzcygkZmlyc3RJZGVudGlmaWVyT2N0ZXQpLCAnaWRlbnRpZmllciBvY3RldCBzaG91bGQgaW5kaWNhdGUgY29udGV4dCBzcGVjaWZpYyBjbGFzcycpOwogICAgICAgIGFzc2VydChJZGVudGlmaWVyOjppc0NvbnN0cnVjdGVkKCRmaXJzdElkZW50aWZpZXJPY3RldCksICdpZGVudGlmaWVyIG9jdGV0IHNob3VsZCBpbmRpY2F0ZSBjb25zdHJ1Y3RlZCBvYmplY3QnKTsKICAgICAgICAkdGFnID0gSWRlbnRpZmllcjo6Z2V0VGFnTnVtYmVyKCRpZGVudGlmaWVyKTsKCiAgICAgICAgJHRvdGFsQ29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkcmVtYWluaW5nQ29udGVudExlbmd0aCA9ICR0b3RhbENvbnRlbnRMZW5ndGg7CgogICAgICAgICRvZmZzZXRJbmRleE9mRGVjb3JhdGVkT2JqZWN0ID0gJG9mZnNldEluZGV4OwogICAgICAgICRkZWNvcmF0ZWRPYmplY3RzID0gW107CgogICAgICAgIHdoaWxlICgkcmVtYWluaW5nQ29udGVudExlbmd0aCA+IDApIHsKICAgICAgICAgICAgJG5leHRPYmplY3QgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRyZW1haW5pbmdDb250ZW50TGVuZ3RoIC09ICRuZXh0T2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGRlY29yYXRlZE9iamVjdHNbXSA9ICRuZXh0T2JqZWN0OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZW1haW5pbmdDb250ZW50TGVuZ3RoICE9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQ29udGV4dC1TcGVjaWZpYyBleHBsaWNpdGx5IHRhZ2dlZCBvYmplY3QgWyR0YWddIHN0YXJ0aW5nIGF0IG9mZnNldCAkb2Zmc2V0SW5kZXhPZkRlY29yYXRlZE9iamVjdCBzcGVjaWZpZXMgYSBsZW5ndGggb2YgJHRvdGFsQ29udGVudExlbmd0aCBvY3RldHMgYnV0ICRyZW1haW5pbmdDb250ZW50TGVuZ3RoIHJlbWFpbiBhZnRlciBwYXJzaW5nIHRoZSBjb250ZW50IiwgJG9mZnNldEluZGV4T2ZEZWNvcmF0ZWRPYmplY3QpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCR0YWcsIC4uLiRkZWNvcmF0ZWRPYmplY3RzKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5zZXRDb250ZW50TGVuZ3RoKCR0b3RhbENvbnRlbnRMZW5ndGgpOwogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></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/OID.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIE9JRAp7CiAgICBjb25zdCBSU0FfRU5DUllQVElPTiAgICAgICAgICAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnOwogICAgY29uc3QgTUQ1X1dJVEhfUlNBX0VOQ1JZUFRJT04gICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuMS40JzsKICAgIGNvbnN0IFNIQTFfV0lUSF9SU0FfU0lHTkFUVVJFICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjEuNSc7CiAgICBjb25zdCBTSEEyNTZfV0lUSF9SU0FfU0lHTkFUVVJFICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS4xLjExJzsKICAgIGNvbnN0IFBLQ1M5X0VNQUlMICAgICAgICAgICAgICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjkuMSc7CiAgICBjb25zdCBQS0NTOV9VTlNUUlVDVFVSRURfTkFNRSAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS45LjInOwogICAgY29uc3QgUEtDUzlfQ09OVEVOVF9UWVBFICAgICAgICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4zJzsKICAgIGNvbnN0IFBLQ1M5X01FU1NBR0VfRElHRVNUICAgICAgICAgICAgICA9ICcxLjIuODQwLjExMzU0OS4xLjkuNCc7CiAgICBjb25zdCBQS0NTOV9TSUdOSU5HX1RJTUUgICAgICAgICAgICAgICAgPSAnMS4yLjg0MC4xMTM1NDkuMS45LjUnOwogICAgY29uc3QgUEtDUzlfRVhURU5TSU9OX1JFUVVFU1QgICAgICAgICAgID0gJzEuMi44NDAuMTEzNTQ5LjEuOS4xNCc7CgogICAgLy8gY2VydGlmaWNhdGUgZXh0ZW5zaW9uIGlkZW50aWZpZXIKICAgIGNvbnN0IENFUlRfRVhUX1NVQkpFQ1RfRElSRUNUT1JZX0FUVFIgICA9ICcyLjUuMjkuOSc7CiAgICBjb25zdCBDRVJUX0VYVF9TVUJKRUNUX0tFWV9JREVOVElGSUVSICAgPSAnMi41LjI5LjE0JzsKICAgIGNvbnN0IENFUlRfRVhUX0tFWV9VU0FHRSAgICAgICAgICAgICAgICA9ICcyLjUuMjkuMTUnOwogICAgY29uc3QgQ0VSVF9FWFRfUFJJVkFURV9LRVlfVVNBR0VfUEVSSU9EID0gJzIuNS4yOS4xNic7CiAgICBjb25zdCBDRVJUX0VYVF9TVUJKRUNUX0FMVF9OQU1FICAgICAgICAgPSAnMi41LjI5LjE3JzsKICAgIGNvbnN0IENFUlRfRVhUX0lTU1VFUl9BTFRfTkFNRSAgICAgICAgICA9ICcyLjUuMjkuMTgnOwogICAgY29uc3QgQ0VSVF9FWFRfQkFTSUNfQ09OU1RSQUlOVFMgICAgICAgID0gJzIuNS4yOS4xOSc7CiAgICBjb25zdCBDRVJUX0VYVF9DUkxfTlVNQkVSICAgICAgICAgICAgICAgPSAnMi41LjI5LjIwJzsKICAgIGNvbnN0IENFUlRfRVhUX1JFQVNPTl9DT0RFICAgICAgICAgICAgICA9ICcyLjUuMjkuMjEnOwogICAgY29uc3QgQ0VSVF9FWFRfSU5WQUxJRElUWV9EQVRFICAgICAgICAgID0gJzIuNS4yOS4yNCc7CiAgICBjb25zdCBDRVJUX0VYVF9ERUxUQV9DUkxfSU5ESUNBVE9SICAgICAgPSAnMi41LjI5LjI3JzsKICAgIGNvbnN0IENFUlRfRVhUX0lTU1VJTkdfRElTVF9QT0lOVCAgICAgICA9ICcyLjUuMjkuMjgnOwogICAgY29uc3QgQ0VSVF9FWFRfQ0VSVF9JU1NVRVIgICAgICAgICAgICAgID0gJzIuNS4yOS4yOSc7CiAgICBjb25zdCBDRVJUX0VYVF9OQU1FX0NPTlNUUkFJTlRTICAgICAgICAgPSAnMi41LjI5LjMwJzsKICAgIGNvbnN0IENFUlRfRVhUX0NSTF9ESVNUUklCVVRJT05fUE9JTlRTICA9ICcyLjUuMjkuMzEnOwogICAgY29uc3QgQ0VSVF9FWFRfQ0VSVF9QT0xJQ0lFUyAgICAgICAgICAgID0gJzIuNS4yOS4zMic7CiAgICBjb25zdCBDRVJUX0VYVF9BVVRIT1JJVFlfS0VZX0lERU5USUZJRVIgPSAnMi41LjI5LjM1JzsKICAgIGNvbnN0IENFUlRfRVhUX0VYVEVOREVEX0tFWV9VU0FHRSAgICAgICA9ICcyLjUuMjkuMzcnOwoKICAgIC8vIHN0YW5kYXJkIGNlcnRpZmljYXRlIGZpbGVzCiAgICBjb25zdCBDT01NT05fTkFNRSAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuMyc7CiAgICBjb25zdCBTVVJOQU1FICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNCc7CiAgICBjb25zdCBTRVJJQUxfTlVNQkVSICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNSc7CiAgICBjb25zdCBDT1VOVFJZX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNic7CiAgICBjb25zdCBMT0NBTElUWV9OQU1FICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuNyc7CiAgICBjb25zdCBTVEFURV9PUl9QUk9WSU5DRV9OQU1FICAgICAgICAgICAgPSAnMi41LjQuOCc7CiAgICBjb25zdCBTVFJFRVRfQUREUkVTUyAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuOSc7CiAgICBjb25zdCBPUkdBTklaQVRJT05fTkFNRSAgICAgICAgICAgICAgICAgPSAnMi41LjQuMTAnOwogICAgY29uc3QgT1VfTkFNRSAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjExJzsKICAgIGNvbnN0IFRJVExFICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICcyLjUuNC4xMic7CiAgICBjb25zdCBERVNDUklQVElPTiAgICAgICAgICAgICAgICAgICAgICAgPSAnMi41LjQuMTMnOwogICAgY29uc3QgUE9TVEFMX0FERFJFU1MgICAgICAgICAgICAgICAgICAgID0gJzIuNS40LjE2JzsKICAgIGNvbnN0IFBPU1RBTF9DT0RFICAgICAgICAgICAgICAgICAgICAgICA9ICcyLjUuNC4xNyc7CiAgICBjb25zdCBBVVRIT1JJVFlfUkVWT0NBVElPTl9MSVNUICAgICAgICAgPSAnMi41LjQuMzgnOwoKICAgIGNvbnN0IEFVVEhPUklUWV9JTkZPUk1BVElPTl9BQ0NFU1MgICAgICA9ICcxLjMuNi4xLjUuNS43LjEuMSc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBnaXZlbiBvYmplY3QgaWRlbnRpZmllci4KICAgICAqCiAgICAgKiBTb21lIE9JRHMgYXJlIHNhdmVkIGFzIGNsYXNzIGNvbnN0YW50cyBpbiB0aGlzIGNsYXNzLgogICAgICogSWYgdGhlIHdhbnRlZCBvaWRTdHJpbmcgaXMgbm90IGFtb25nIHRoZW0sIHRoaXMgbWV0aG9kIHdpbGwKICAgICAqIHF1ZXJ5IGh0dHA6Ly9vaWQtaW5mby5jb20gZm9yIHRoZSByaWdodCBuYW1lLgogICAgICogVGhpcyBiZWhhdmlvciBjYW4gYmUgc3VwcHJlc3NlZCBieSBzZXR0aW5nIHRoZSBzZWNvbmQgbWV0aG9kIHBhcmFtZXRlciB0byBmYWxzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRvaWRTdHJpbmcKICAgICAqIEBwYXJhbSBib29sICRsb2FkRnJvbVdlYgogICAgICoKICAgICAqIEBzZWUgc2VsZjo6bG9hZEZyb21XZWIoJG9pZFN0cmluZykKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldE5hbWUoJG9pZFN0cmluZywgJGxvYWRGcm9tV2ViID0gdHJ1ZSkKICAgIHsKICAgICAgICAkb2lkcyA9IFsKICAgICAgICAgICAgJzEuMicgPT4gJ0lTTyBNZW1iZXIgQm9keScsCiAgICAgICAgICAgICcxLjMnID0+ICdvcmcnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuOC4xLjEnID0+ICdobWFjLW1kNScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS44LjEuMicgPT4gJ2htYWMtc2hhMScsCiAgICAgICAgICAgICcxLjMuMTMyJyA9PiAnY2VydGljb20tYXJjJywKICAgICAgICAgICAgJzIuMjMnID0+ICdJbnRlcm5hdGlvbmFsIE9yZ2FuaXphdGlvbnMnLAogICAgICAgICAgICAnMi4yMy40MycgPT4gJ3dhcCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEnID0+ICd3YXAtd3NnJywKICAgICAgICAgICAgJzIuNS4xLjUnID0+ICdTZWxlY3RlZCBBdHRyaWJ1dGUgVHlwZXMnLAogICAgICAgICAgICAnMi41LjEuNS41NScgPT4gJ2NsZWFyYW5jZScsCiAgICAgICAgICAgICcxLjIuODQwJyA9PiAnSVNPIFVTIE1lbWJlciBCb2R5JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDAnID0+ICdYOS41NycsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQwLjQnID0+ICdYOS41NyBDTSA/JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDAuNC4xJyA9PiAnZHNhRW5jcnlwdGlvbicsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQwLjQuMycgPT4gJ2RzYVdpdGhTSEExJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUnID0+ICdBTlNJIFg5LjYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMScgPT4gJ1g5LTYyX2lkLWZpZWxkVHlwZScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjEuMScgPT4gJ1g5LTYyX3ByaW1lLWZpZWxkJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMS4yJyA9PiAnWDktNjJfY2hhcmFjdGVyaXN0aWMtdHdvLWZpZWxkJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMS4yLjMnID0+ICdYOS02Ml9pZC1jaGFyYWN0ZXJpc3RpYy10d28tYmFzaXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4xLjIuMy4xJyA9PiAnWDktNjJfb25CYXNpcycsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjEuMi4zLjInID0+ICdYOS02Ml90cEJhc2lzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMS4yLjMuMycgPT4gJ1g5LTYyX3BwQmFzaXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4yJyA9PiAnWDktNjJfaWQtcHVibGljS2V5VHlwZScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjIuMScgPT4gJ1g5LTYyX2lkLWVjUHVibGljS2V5JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMycgPT4gJ1g5LTYyX2VsbGlwdGljQ3VydmUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAnID0+ICdYOS02Ml9jLVR3b0N1cnZlJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjEnID0+ICdYOS02Ml9jMnBuYjE2M3YxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjInID0+ICdYOS02Ml9jMnBuYjE2M3YyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjMnID0+ICdYOS02Ml9jMnBuYjE2M3YzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjQnID0+ICdYOS02Ml9jMnBuYjE3NnYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjUnID0+ICdYOS02Ml9jMnRuYjE5MXYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjYnID0+ICdYOS02Ml9jMnRuYjE5MXYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjcnID0+ICdYOS02Ml9jMnRuYjE5MXYzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjgnID0+ICdYOS02Ml9jMm9uYjE5MXY0JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjknID0+ICdYOS02Ml9jMm9uYjE5MXY1JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjEwJyA9PiAnWDktNjJfYzJwbmIyMDh3MScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4xMScgPT4gJ1g5LTYyX2MydG5iMjM5djEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAuMTInID0+ICdYOS02Ml9jMnRuYjIzOXYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjEzJyA9PiAnWDktNjJfYzJ0bmIyMzl2MycsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4xNCcgPT4gJ1g5LTYyX2Myb25iMjM5djQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAuMTUnID0+ICdYOS02Ml9jMm9uYjIzOXY1JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjE2JyA9PiAnWDktNjJfYzJwbmIyNzJ3MScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4xNycgPT4gJ1g5LTYyX2MycG5iMzA0dzEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjAuMTgnID0+ICdYOS02Ml9jMnRuYjM1OXYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4wLjE5JyA9PiAnWDktNjJfYzJwbmIzNjh3MScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjMuMC4yMCcgPT4gJ1g5LTYyX2MydG5iNDMxcjEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS4zLjEnID0+ICdYOS02Ml9wcmltZUN1cnZlJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjEnID0+ICdYOS02Ml9wcmltZTE5MnYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjInID0+ICdYOS02Ml9wcmltZTE5MnYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjMnID0+ICdYOS02Ml9wcmltZTE5MnYzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjQnID0+ICdYOS02Ml9wcmltZTIzOXYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjUnID0+ICdYOS02Ml9wcmltZTIzOXYyJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjYnID0+ICdYOS02Ml9wcmltZTIzOXYzJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuMy4xLjcnID0+ICdYOS02Ml9wcmltZTI1NnYxJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuNCcgPT4gJ1g5LTYyX2lkLWVjU2lnVHlwZScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMScgPT4gJ2VjZHNhLXdpdGgtU0hBMScsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMicgPT4gJ2VjZHNhLXdpdGgtUmVjb21tZW5kZWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS40LjMnID0+ICdlY2RzYS13aXRoLVNwZWNpZmllZCcsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMy4xJyA9PiAnZWNkc2Etd2l0aC1TSEEyMjQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMDA0NS40LjMuMicgPT4gJ2VjZHNhLXdpdGgtU0hBMjU2JywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDUuNC4zLjMnID0+ICdlY2RzYS13aXRoLVNIQTM4NCcsCiAgICAgICAgICAgICcxLjIuODQwLjEwMDQ1LjQuMy40JyA9PiAnZWNkc2Etd2l0aC1TSEE1MTInLAogICAgICAgICAgICAnMS4zLjEzMi4wJyA9PiAnc2VjZ19lbGxpcHRpY0N1cnZlJywKICAgICAgICAgICAgJzIuMjMuNDMuMS40JyA9PiAnd2FwLXdzZy1pZG0tZWNpZCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC4xJyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzMScsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC4zJyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzMycsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC40JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC41JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNScsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC42JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNicsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC43JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzNycsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC44JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzOCcsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC45JyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzOScsCiAgICAgICAgICAgICcyLjIzLjQzLjEuNC4xMCcgPT4gJ3dhcC13c2ctaWRtLWVjaWQtd3RsczEwJywKICAgICAgICAgICAgJzIuMjMuNDMuMS40LjExJyA9PiAnd2FwLXdzZy1pZG0tZWNpZC13dGxzMTEnLAogICAgICAgICAgICAnMi4yMy40My4xLjQuMTInID0+ICd3YXAtd3NnLWlkbS1lY2lkLXd0bHMxMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzUzMy43LjY2LjEwJyA9PiAnY2FzdDUtY2JjJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTMzLjcuNjYuMTInID0+ICdwYmVXaXRoTUQ1QW5kQ2FzdDVDQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1MzMuNy42Ni4xMycgPT4gJ3Bhc3N3b3JkIGJhc2VkIE1BQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzUzMy43LjY2LjMwJyA9PiAnRGlmZmllLUhlbGxtYW4gYmFzZWQgTUFDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5JyA9PiAnUlNBIERhdGEgU2VjdXJpdHksIEluYy4nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMScgPT4gJ1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIFBLQ1MnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xJyA9PiAncGtjczEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjEnID0+ICdyc2FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4yJyA9PiAnbWQyV2l0aFJTQUVuY3J5cHRpb24nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjMnID0+ICdtZDRXaXRoUlNBRW5jcnlwdGlvbicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEuNCcgPT4gJ21kNVdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS41JyA9PiAnc2hhMVdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS43JyA9PiAncnNhZXNPYWVwJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS44JyA9PiAnbWdmMScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEuOScgPT4gJ3BTcGVjaWZpZWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjEwJyA9PiAncnNhc3NhUHNzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xMScgPT4gJ3NoYTI1NldpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xMicgPT4gJ3NoYTM4NFdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xMycgPT4gJ3NoYTUxMldpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMS4xNCcgPT4gJ3NoYTIyNFdpdGhSU0FFbmNyeXB0aW9uJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMycgPT4gJ3BrY3MzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMy4xJyA9PiAnZGhLZXlBZ3JlZW1lbnQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41JyA9PiAncGtjczUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41LjEnID0+ICdwYmVXaXRoTUQyQW5kREVTLUNCQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMycgPT4gJ3BiZVdpdGhNRDVBbmRERVMtQ0JDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNS40JyA9PiAncGJlV2l0aE1EMkFuZFJDMi1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41LjYnID0+ICdwYmVXaXRoTUQ1QW5kUkMyLUNCQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMTAnID0+ICdwYmVXaXRoU0hBMUFuZERFUy1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS41LjExJyA9PiAncGJlV2l0aFNIQTFBbmRSQzItQ0JDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNS4xMicgPT4gJ1BCS0RGMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMTMnID0+ICdQQkVTMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjUuMTQnID0+ICdQQk1BQzEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS43JyA9PiAncGtjczcnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS43LjEnID0+ICdwa2NzNy1kYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNy4yJyA9PiAncGtjczctc2lnbmVkRGF0YScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjcuMycgPT4gJ3BrY3M3LWVudmVsb3BlZERhdGEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS43LjQnID0+ICdwa2NzNy1zaWduZWRBbmRFbnZlbG9wZWREYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuNy41JyA9PiAncGtjczctZGlnZXN0RGF0YScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjcuNicgPT4gJ3BrY3M3LWVuY3J5cHRlZERhdGEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45JyA9PiAncGtjczknLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjEnID0+ICdlbWFpbEFkZHJlc3MnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjInID0+ICd1bnN0cnVjdHVyZWROYW1lJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4zJyA9PiAnY29udGVudFR5cGUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjQnID0+ICdtZXNzYWdlRGlnZXN0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS41JyA9PiAnc2lnbmluZ1RpbWUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjYnID0+ICdjb3VudGVyc2lnbmF0dXJlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS43JyA9PiAnY2hhbGxlbmdlUGFzc3dvcmQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjgnID0+ICd1bnN0cnVjdHVyZWRBZGRyZXNzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS45JyA9PiAnZXh0ZW5kZWRDZXJ0aWZpY2F0ZUF0dHJpYnV0ZXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE0JyA9PiAnRXh0ZW5zaW9uIFJlcXVlc3QnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE1JyA9PiAnUy9NSU1FIENhcGFiaWxpdGllcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYnID0+ICdTL01JTUUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAnID0+ICdpZC1zbWltZS1tb2QnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjEnID0+ICdpZC1zbWltZS1jdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMicgPT4gJ2lkLXNtaW1lLWFhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4zJyA9PiAnaWQtc21pbWUtYWxnJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi40JyA9PiAnaWQtc21pbWUtY2QnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjUnID0+ICdpZC1zbWltZS1zcHEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYnID0+ICdpZC1zbWltZS1jdGknLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuMScgPT4gJ2lkLXNtaW1lLW1vZC1jbXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuMicgPT4gJ2lkLXNtaW1lLW1vZC1lc3MnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuMycgPT4gJ2lkLXNtaW1lLW1vZC1vaWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuNCcgPT4gJ2lkLXNtaW1lLW1vZC1tc2ctdjMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuNScgPT4gJ2lkLXNtaW1lLW1vZC1ldHMtZVNpZ25hdHVyZS04OCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMC42JyA9PiAnaWQtc21pbWUtbW9kLWV0cy1lU2lnbmF0dXJlLTk3JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4wLjcnID0+ICdpZC1zbWltZS1tb2QtZXRzLWVTaWdQb2xpY3ktODgnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjAuOCcgPT4gJ2lkLXNtaW1lLW1vZC1ldHMtZVNpZ1BvbGljeS05NycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS4xJyA9PiAnaWQtc21pbWUtY3QtcmVjZWlwdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS4yJyA9PiAnaWQtc21pbWUtY3QtYXV0aERhdGEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjEuMycgPT4gJ2lkLXNtaW1lLWN0LXB1Ymxpc2hDZXJ0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjQnID0+ICdpZC1zbWltZS1jdC1UU1RJbmZvJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjUnID0+ICdpZC1zbWltZS1jdC1URFRJbmZvJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjYnID0+ICdpZC1zbWltZS1jdC1jb250ZW50SW5mbycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS43JyA9PiAnaWQtc21pbWUtY3QtRFZDU1JlcXVlc3REYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjgnID0+ICdpZC1zbWltZS1jdC1EVkNTUmVzcG9uc2VEYXRhJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4xLjknID0+ICdpZC1zbWltZS1jdC1jb21wcmVzc2VkRGF0YScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMS4yNycgPT4gJ2lkLWN0LWFzY2lpVGV4dFdpdGhDUkxGJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjEnID0+ICdpZC1zbWltZS1hYS1yZWNlaXB0UmVxdWVzdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yJyA9PiAnaWQtc21pbWUtYWEtc2VjdXJpdHlMYWJlbCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4zJyA9PiAnaWQtc21pbWUtYWEtbWxFeHBhbmRIaXN0b3J5JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjQnID0+ICdpZC1zbWltZS1hYS1jb250ZW50SGludCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi41JyA9PiAnaWQtc21pbWUtYWEtbXNnU2lnRGlnZXN0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjYnID0+ICdpZC1zbWltZS1hYS1lbmNhcENvbnRlbnRUeXBlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjcnID0+ICdpZC1zbWltZS1hYS1jb250ZW50SWRlbnRpZmllcicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi44JyA9PiAnaWQtc21pbWUtYWEtbWFjVmFsdWUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuOScgPT4gJ2lkLXNtaW1lLWFhLWVxdWl2YWxlbnRMYWJlbHMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTAnID0+ICdpZC1zbWltZS1hYS1jb250ZW50UmVmZXJlbmNlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjExJyA9PiAnaWQtc21pbWUtYWEtZW5jcnlwS2V5UHJlZicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4xMicgPT4gJ2lkLXNtaW1lLWFhLXNpZ25pbmdDZXJ0aWZpY2F0ZScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4xMycgPT4gJ2lkLXNtaW1lLWFhLXNtaW1lRW5jcnlwdENlcnRzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjE0JyA9PiAnaWQtc21pbWUtYWEtdGltZVN0YW1wVG9rZW4nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTUnID0+ICdpZC1zbWltZS1hYS1ldHMtc2lnUG9saWN5SWQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTYnID0+ICdpZC1zbWltZS1hYS1ldHMtY29tbWl0bWVudFR5cGUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTcnID0+ICdpZC1zbWltZS1hYS1ldHMtc2lnbmVyTG9jYXRpb24nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMTgnID0+ICdpZC1zbWltZS1hYS1ldHMtc2lnbmVyQXR0cicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4xOScgPT4gJ2lkLXNtaW1lLWFhLWV0cy1vdGhlclNpZ0NlcnQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjAnID0+ICdpZC1zbWltZS1hYS1ldHMtY29udGVudFRpbWVzdGFtcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yMScgPT4gJ2lkLXNtaW1lLWFhLWV0cy1DZXJ0aWZpY2F0ZVJlZnMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjInID0+ICdpZC1zbWltZS1hYS1ldHMtUmV2b2NhdGlvblJlZnMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjMnID0+ICdpZC1zbWltZS1hYS1ldHMtY2VydFZhbHVlcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yNCcgPT4gJ2lkLXNtaW1lLWFhLWV0cy1yZXZvY2F0aW9uVmFsdWVzJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjI1JyA9PiAnaWQtc21pbWUtYWEtZXRzLWVzY1RpbWVTdGFtcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMi4yNicgPT4gJ2lkLXNtaW1lLWFhLWV0cy1jZXJ0Q1JMVGltZXN0YW1wJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjI3JyA9PiAnaWQtc21pbWUtYWEtZXRzLWFyY2hpdmVUaW1lU3RhbXAnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjIuMjgnID0+ICdpZC1zbWltZS1hYS1zaWduYXR1cmVUeXBlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4yLjI5JyA9PiAnaWQtc21pbWUtYWEtZHZjcy1kdmMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuMScgPT4gJ2lkLXNtaW1lLWFsZy1FU0RId2l0aDNERVMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuMicgPT4gJ2lkLXNtaW1lLWFsZy1FU0RId2l0aFJDMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy4zJyA9PiAnaWQtc21pbWUtYWxnLTNERVN3cmFwJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi4zLjQnID0+ICdpZC1zbWltZS1hbGctUkMyd3JhcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy41JyA9PiAnaWQtc21pbWUtYWxnLUVTREgnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuNicgPT4gJ2lkLXNtaW1lLWFsZy1DTVMzREVTd3JhcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy43JyA9PiAnaWQtc21pbWUtYWxnLUNNU1JDMndyYXAnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjMuOScgPT4gJ2lkLWFsZy1QV1JJLUtFSycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuNC4xJyA9PiAnaWQtc21pbWUtY2QtbGRhcCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuNS4xJyA9PiAnaWQtc21pbWUtc3BxLWV0cy1zcXQtdXJpJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi41LjInID0+ICdpZC1zbWltZS1zcHEtZXRzLXNxdC11bm90aWNlJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi42LjEnID0+ICdpZC1zbWltZS1jdGktZXRzLXByb29mT2ZPcmlnaW4nLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYuMicgPT4gJ2lkLXNtaW1lLWN0aS1ldHMtcHJvb2ZPZlJlY2VpcHQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYuMycgPT4gJ2lkLXNtaW1lLWN0aS1ldHMtcHJvb2ZPZkRlbGl2ZXJ5JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi42LjQnID0+ICdpZC1zbWltZS1jdGktZXRzLXByb29mT2ZTZW5kZXInLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjE2LjYuNScgPT4gJ2lkLXNtaW1lLWN0aS1ldHMtcHJvb2ZPZkFwcHJvdmFsJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4xNi42LjYnID0+ICdpZC1zbWltZS1jdGktZXRzLXByb29mT2ZDcmVhdGlvbicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMjAnID0+ICdmcmllbmRseU5hbWUnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjIxJyA9PiAnbG9jYWxLZXlJRCcsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTcuMScgPT4gJ01pY3Jvc29mdCBDU1AgTmFtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTcuMicgPT4gJ01pY3Jvc29mdCBMb2NhbCBLZXkgc2V0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuOS4yMicgPT4gJ2NlcnRUeXBlcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMjIuMScgPT4gJ3g1MDlDZXJ0aWZpY2F0ZScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMjIuMicgPT4gJ3Nkc2lDZXJ0aWZpY2F0ZScsCgogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjIzJyA9PiAnY3JsVHlwZXMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS45LjIzLjEnID0+ICd4NTA5Q3JsJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTInID0+ICdwa2NzMTInLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xJyA9PiAncGtjczEyLXBiZWlkcycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEuMScgPT4gJ3BiZVdpdGhTSEExQW5kMTI4Qml0UkM0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS4yJyA9PiAncGJlV2l0aFNIQTFBbmQ0MEJpdFJDNCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEuMycgPT4gJ3BiZVdpdGhTSEExQW5kMy1LZXlUcmlwbGVERVMtQ0JDJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMS40JyA9PiAncGJlV2l0aFNIQTFBbmQyLUtleVRyaXBsZURFUy1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjUnID0+ICdwYmVXaXRoU0hBMUFuZDEyOEJpdFJDMi1DQkMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xLjYnID0+ICdwYmVXaXRoU0hBMUFuZDQwQml0UkMyLUNCQycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwJyA9PiAncGtjczEyLVZlcnNpb24xJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMScgPT4gJ3BrY3MxMi1CYWdJZHMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjEnID0+ICdrZXlCYWcnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xMi4xMC4xLjInID0+ICdwa2NzOFNocm91ZGVkS2V5QmFnJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjEuMTIuMTAuMS4zJyA9PiAnY2VydEJhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNCcgPT4gJ2NybEJhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNScgPT4gJ3NlY3JldEJhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjEyLjEwLjEuNicgPT4gJ3NhZmVDb250ZW50c0JhZycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4yLjInID0+ICdtZDInLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi40JyA9PiAnbWQ0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjIuNScgPT4gJ21kNScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4yLjYnID0+ICdobWFjV2l0aE1ENScsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4yLjcnID0+ICdobWFjV2l0aFNIQTEnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi44JyA9PiAnaG1hY1dpdGhTSEEyMjQnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi45JyA9PiAnaG1hY1dpdGhTSEEyNTYnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMi4xMCcgPT4gJ2htYWNXaXRoU0hBMzg0JywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjIuMTEnID0+ICdobWFjV2l0aFNIQTUxMicsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4zLjInID0+ICdyYzItY2JjJywKICAgICAgICAgICAgJzEuMi44NDAuMTEzNTQ5LjMuNCcgPT4gJ3JjNCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4zLjcnID0+ICdkZXMtZWRlMy1jYmMnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMy44JyA9PiAncmM1LWNiYycsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMi4xLjE0JyA9PiAnTWljcm9zb2Z0IEV4dGVuc2lvbiBSZXF1ZXN0JywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMxMS4yLjEuMjEnID0+ICdNaWNyb3NvZnQgSW5kaXZpZHVhbCBDb2RlIFNpZ25pbmcnLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMzExLjIuMS4yMicgPT4gJ01pY3Jvc29mdCBDb21tZXJjaWFsIENvZGUgU2lnbmluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTAuMy4xJyA9PiAnTWljcm9zb2Z0IFRydXN0IExpc3QgU2lnbmluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMTAuMy4zJyA9PiAnTWljcm9zb2Z0IFNlcnZlciBHYXRlZCBDcnlwdG8nLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMzExLjEwLjMuNCcgPT4gJ01pY3Jvc29mdCBFbmNyeXB0ZWQgRmlsZSBTeXN0ZW0nLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMzExLjIwLjIuMicgPT4gJ01pY3Jvc29mdCBTbWFydGNhcmRsb2dpbicsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuMjAuMi4zJyA9PiAnTWljcm9zb2Z0IFVuaXZlcnNhbCBQcmluY2lwYWwgTmFtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4xODguNy4xLjEuMicgPT4gJ2lkZWEtY2JjJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMwMjkuMS4yJyA9PiAnYmYtY2JjJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcnID0+ICdQS0lYJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMCcgPT4gJ2lkLXBraXgtbW9kJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMScgPT4gJ2lkLXBlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMicgPT4gJ2lkLXF0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMycgPT4gJ2lkLWtwJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNCcgPT4gJ2lkLWl0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNScgPT4gJ2lkLXBraXAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42JyA9PiAnaWQtYWxnJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNycgPT4gJ2lkLWNtYycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjgnID0+ICdpZC1vbicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjknID0+ICdpZC1wZGEnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMCcgPT4gJ2lkLWFjYScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjExJyA9PiAnaWQtcWNzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTInID0+ICdpZC1jY3QnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4yMScgPT4gJ2lkLXBwbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4JyA9PiAnaWQtYWQnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjEnID0+ICdpZC1wa2l4MS1leHBsaWNpdC04OCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMicgPT4gJ2lkLXBraXgxLWltcGxpY2l0LTg4JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMC4zJyA9PiAnaWQtcGtpeDEtZXhwbGljaXQtOTMnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjQnID0+ICdpZC1wa2l4MS1pbXBsaWNpdC05MycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuNScgPT4gJ2lkLW1vZC1jcm1mJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMC42JyA9PiAnaWQtbW9kLWNtYycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuNycgPT4gJ2lkLW1vZC1rZWEtcHJvZmlsZS04OCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuOCcgPT4gJ2lkLW1vZC1rZWEtcHJvZmlsZS05MycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuOScgPT4gJ2lkLW1vZC1jbXAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjEwJyA9PiAnaWQtbW9kLXF1YWxpZmllZC1jZXJ0LTg4JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMC4xMScgPT4gJ2lkLW1vZC1xdWFsaWZpZWQtY2VydC05MycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTInID0+ICdpZC1tb2QtYXR0cmlidXRlLWNlcnQnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4wLjEzJyA9PiAnaWQtbW9kLXRpbWVzdGFtcC1wcm90b2NvbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTQnID0+ICdpZC1tb2Qtb2NzcCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTUnID0+ICdpZC1tb2QtZHZjcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjAuMTYnID0+ICdpZC1tb2QtY21wMjAwMCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuMScgPT4gJ0F1dGhvcml0eSBJbmZvcm1hdGlvbiBBY2Nlc3MnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjInID0+ICdCaW9tZXRyaWMgSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuMycgPT4gJ3FjU3RhdGVtZW50cycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuNCcgPT4gJ2FjLWF1ZGl0RW50aXR5JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMS41JyA9PiAnYWMtdGFyZ2V0aW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMS42JyA9PiAnYWFDb250cm9scycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEuNycgPT4gJ3NiZ3AtaXBBZGRyQmxvY2snLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjgnID0+ICdzYmdwLWF1dG9ub21vdXNTeXNOdW0nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjknID0+ICdzYmdwLXJvdXRlcklkZW50aWZpZXInLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjEwJyA9PiAnYWMtcHJveHlpbmcnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjExJyA9PiAnU3ViamVjdCBJbmZvcm1hdGlvbiBBY2Nlc3MnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xLjE0JyA9PiAnUHJveHkgQ2VydGlmaWNhdGUgSW5mb3JtYXRpb24nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4yLjEnID0+ICdQb2xpY3kgUXVhbGlmaWVyIENQUycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjIuMicgPT4gJ1BvbGljeSBRdWFsaWZpZXIgVXNlciBOb3RpY2UnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4yLjMnID0+ICd0ZXh0Tm90aWNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy4xJyA9PiAnVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4zLjInID0+ICdUTFMgV2ViIENsaWVudCBBdXRoZW50aWNhdGlvbicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuMycgPT4gJ0NvZGUgU2lnbmluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuNCcgPT4gJ0UtbWFpbCBQcm90ZWN0aW9uJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy41JyA9PiAnSVBTZWMgRW5kIFN5c3RlbScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuNicgPT4gJ0lQU2VjIFR1bm5lbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjMuNycgPT4gJ0lQU2VjIFVzZXInLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4zLjgnID0+ICdUaW1lIFN0YW1waW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy45JyA9PiAnT0NTUCBTaWduaW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMy4xMCcgPT4gJ2R2Y3MnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjEnID0+ICdpZC1pdC1jYVByb3RFbmNDZXJ0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4yJyA9PiAnaWQtaXQtc2lnbktleVBhaXJUeXBlcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuMycgPT4gJ2lkLWl0LWVuY0tleVBhaXJUeXBlcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuNCcgPT4gJ2lkLWl0LXByZWZlcnJlZFN5bW1BbGcnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjUnID0+ICdpZC1pdC1jYUtleVVwZGF0ZUluZm8nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjYnID0+ICdpZC1pdC1jdXJyZW50Q1JMJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC43JyA9PiAnaWQtaXQtdW5zdXBwb3J0ZWRPSURzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC44JyA9PiAnaWQtaXQtc3Vic2NyaXB0aW9uUmVxdWVzdCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuOScgPT4gJ2lkLWl0LXN1YnNjcmlwdGlvblJlc3BvbnNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4xMCcgPT4gJ2lkLWl0LWtleVBhaXJQYXJhbVJlcScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuMTEnID0+ICdpZC1pdC1rZXlQYWlyUGFyYW1SZXAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjEyJyA9PiAnaWQtaXQtcmV2UGFzc3BocmFzZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQuMTMnID0+ICdpZC1pdC1pbXBsaWNpdENvbmZpcm0nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40LjE0JyA9PiAnaWQtaXQtY29uZmlybVdhaXRUaW1lJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4xNScgPT4gJ2lkLWl0LW9yaWdQS0lNZXNzYWdlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNC4xNicgPT4gJ2lkLWl0LXN1cHBMYW5nVGFncycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjUuMScgPT4gJ2lkLXJlZ0N0cmwnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy41LjInID0+ICdpZC1yZWdJbmZvJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjEnID0+ICdpZC1yZWdDdHJsLXJlZ1Rva2VuJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjInID0+ICdpZC1yZWdDdHJsLWF1dGhlbnRpY2F0b3InLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy41LjEuMycgPT4gJ2lkLXJlZ0N0cmwtcGtpUHVibGljYXRpb25JbmZvJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjQnID0+ICdpZC1yZWdDdHJsLXBraUFyY2hpdmVPcHRpb25zJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4xLjUnID0+ICdpZC1yZWdDdHJsLW9sZENlcnRJRCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjUuMS42JyA9PiAnaWQtcmVnQ3RybC1wcm90b2NvbEVuY3JLZXknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy41LjIuMScgPT4gJ2lkLXJlZ0luZm8tdXRmOFBhaXJzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNS4yLjInID0+ICdpZC1yZWdJbmZvLWNlcnRSZXEnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42LjEnID0+ICdpZC1hbGctZGVzNDAnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42LjInID0+ICdpZC1hbGctbm9TaWduYXR1cmUnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy42LjMnID0+ICdpZC1hbGctZGgtc2lnLWhtYWMtc2hhMScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjYuNCcgPT4gJ2lkLWFsZy1kaC1wb3AnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjEnID0+ICdpZC1jbWMtc3RhdHVzSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMicgPT4gJ2lkLWNtYy1pZGVudGlmaWNhdGlvbicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMycgPT4gJ2lkLWNtYy1pZGVudGl0eVByb29mJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy40JyA9PiAnaWQtY21jLWRhdGFSZXR1cm4nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjUnID0+ICdpZC1jbWMtdHJhbnNhY3Rpb25JZCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuNicgPT4gJ2lkLWNtYy1zZW5kZXJOb25jZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuNycgPT4gJ2lkLWNtYy1yZWNpcGllbnROb25jZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuOCcgPT4gJ2lkLWNtYy1hZGRFeHRlbnNpb25zJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy45JyA9PiAnaWQtY21jLWVuY3J5cHRlZFBPUCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMTAnID0+ICdpZC1jbWMtZGVjcnlwdGVkUE9QJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4xMScgPT4gJ2lkLWNtYy1scmFQT1BXaXRuZXNzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4xNScgPT4gJ2lkLWNtYy1nZXRDZXJ0JywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4xNicgPT4gJ2lkLWNtYy1nZXRDUkwnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjE3JyA9PiAnaWQtY21jLXJldm9rZVJlcXVlc3QnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjE4JyA9PiAnaWQtY21jLXJlZ0luZm8nLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy43LjE5JyA9PiAnaWQtY21jLXJlc3BvbnNlSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMjEnID0+ICdpZC1jbWMtcXVlcnlQZW5kaW5nJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4yMicgPT4gJ2lkLWNtYy1wb3BMaW5rUmFuZG9tJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNy4yMycgPT4gJ2lkLWNtYy1wb3BMaW5rV2l0bmVzcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjcuMjQnID0+ICdpZC1jbWMtY29uZmlybUNlcnRBY2NlcHRhbmNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuOC4xJyA9PiAnaWQtb24tcGVyc29uYWxEYXRhJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuOC4zJyA9PiAnUGVybWFuZW50IElkZW50aWZpZXInLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy45LjEnID0+ICdpZC1wZGEtZGF0ZU9mQmlydGgnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy45LjInID0+ICdpZC1wZGEtcGxhY2VPZkJpcnRoJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuOS4zJyA9PiAnaWQtcGRhLWdlbmRlcicsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjkuNCcgPT4gJ2lkLXBkYS1jb3VudHJ5T2ZDaXRpemVuc2hpcCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjkuNScgPT4gJ2lkLXBkYS1jb3VudHJ5T2ZSZXNpZGVuY2UnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMC4xJyA9PiAnaWQtYWNhLWF1dGhlbnRpY2F0aW9uSW5mbycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjEwLjInID0+ICdpZC1hY2EtYWNjZXNzSWRlbnRpdHknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMC4zJyA9PiAnaWQtYWNhLWNoYXJnaW5nSWRlbnRpdHknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMC40JyA9PiAnaWQtYWNhLWdyb3VwJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTAuNScgPT4gJ2lkLWFjYS1yb2xlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTAuNicgPT4gJ2lkLWFjYS1lbmNBdHRycycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjExLjEnID0+ICdpZC1xY3MtcGtpeFFDU3ludGF4LXYxJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMTIuMScgPT4gJ2lkLWNjdC1jcnMnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMi4yJyA9PiAnaWQtY2N0LVBLSURhdGEnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy4xMi4zJyA9PiAnaWQtY2N0LVBLSVJlc3BvbnNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuMjEuMCcgPT4gJ0FueSBsYW5ndWFnZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjIxLjEnID0+ICdJbmhlcml0IGFsbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjIxLjInID0+ICdJbmRlcGVuZGVudCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEnID0+ICdPQ1NQJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMicgPT4gJ0NBIElzc3VlcnMnLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4zJyA9PiAnQUQgVGltZSBTdGFtcGluZycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjQnID0+ICdhZCBkdmNzJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguNScgPT4gJ0NBIFJlcG9zaXRvcnknLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4xLjEnID0+ICdCYXNpYyBPQ1NQIFJlc3BvbnNlJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMS4yJyA9PiAnT0NTUCBOb25jZScsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuMycgPT4gJ09DU1AgQ1JMIElEJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMS40JyA9PiAnQWNjZXB0YWJsZSBPQ1NQIFJlc3BvbnNlcycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuNScgPT4gJ09DU1AgTm8gQ2hlY2snLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4xLjYnID0+ICdPQ1NQIEFyY2hpdmUgQ3V0b2ZmJywKICAgICAgICAgICAgJzEuMy42LjEuNS41LjcuNDguMS43JyA9PiAnT0NTUCBTZXJ2aWNlIExvY2F0b3InLAogICAgICAgICAgICAnMS4zLjYuMS41LjUuNy40OC4xLjgnID0+ICdFeHRlbmRlZCBPQ1NQIFN0YXR1cycsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuOScgPT4gJ2lkLXBraXgtT0NTUF92YWxpZCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuMTAnID0+ICdpZC1wa2l4LU9DU1BfcGF0aCcsCiAgICAgICAgICAgICcxLjMuNi4xLjUuNS43LjQ4LjEuMTEnID0+ICdUcnVzdCBSb290JywKICAgICAgICAgICAgJzEuMy4xNC4zLjInID0+ICdhbGdvcml0aG0nLAogICAgICAgICAgICAnMS4zLjE0LjMuMi4zJyA9PiAnbWQ1V2l0aFJTQScsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjYnID0+ICdkZXMtZWNiJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuNycgPT4gJ2Rlcy1jYmMnLAogICAgICAgICAgICAnMS4zLjE0LjMuMi44JyA9PiAnZGVzLW9mYicsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjknID0+ICdkZXMtY2ZiJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMTEnID0+ICdyc2FTaWduYXR1cmUnLAogICAgICAgICAgICAnMS4zLjE0LjMuMi4xMicgPT4gJ2RzYUVuY3J5cHRpb24tb2xkJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMTMnID0+ICdkc2FXaXRoU0hBJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMTUnID0+ICdzaGFXaXRoUlNBRW5jcnlwdGlvbicsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjE3JyA9PiAnZGVzLWVkZScsCiAgICAgICAgICAgICcxLjMuMTQuMy4yLjE4JyA9PiAnc2hhJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMjYnID0+ICdzaGExJywKICAgICAgICAgICAgJzEuMy4xNC4zLjIuMjcnID0+ICdkc2FXaXRoU0hBMS1vbGQnLAogICAgICAgICAgICAnMS4zLjE0LjMuMi4yOScgPT4gJ3NoYTFXaXRoUlNBJywKICAgICAgICAgICAgJzEuMy4zNi4zLjIuMScgPT4gJ3JpcGVtZDE2MCcsCiAgICAgICAgICAgICcxLjMuMzYuMy4zLjEuMicgPT4gJ3JpcGVtZDE2MFdpdGhSU0EnLAogICAgICAgICAgICAnMS4zLjEwMS4xLjQuMScgPT4gJ1N0cm9uZyBFeHRyYW5ldCBJRCcsCiAgICAgICAgICAgICcyLjUnID0+ICdkaXJlY3Rvcnkgc2VydmljZXMgKFguNTAwKScsCiAgICAgICAgICAgICcyLjUuNCcgPT4gJ1g1MDknLAogICAgICAgICAgICAnMi41LjQuMycgPT4gJ2NvbW1vbk5hbWUnLAogICAgICAgICAgICAnMi41LjQuNCcgPT4gJ3N1cm5hbWUnLAogICAgICAgICAgICAnMi41LjQuNScgPT4gJ3NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICcyLjUuNC42JyA9PiAnY291bnRyeU5hbWUnLAogICAgICAgICAgICAnMi41LjQuNycgPT4gJ2xvY2FsaXR5TmFtZScsCiAgICAgICAgICAgICcyLjUuNC44JyA9PiAnc3RhdGVPclByb3ZpbmNlTmFtZScsCiAgICAgICAgICAgICcyLjUuNC45JyA9PiAnc3RyZWV0QWRkcmVzcycsCiAgICAgICAgICAgICcyLjUuNC4xMCcgPT4gJ29yZ2FuaXphdGlvbk5hbWUnLAogICAgICAgICAgICAnMi41LjQuMTEnID0+ICdvcmdhbml6YXRpb25hbFVuaXROYW1lJywKICAgICAgICAgICAgJzIuNS40LjEyJyA9PiAndGl0bGUnLAogICAgICAgICAgICAnMi41LjQuMTMnID0+ICdkZXNjcmlwdGlvbicsCiAgICAgICAgICAgICcyLjUuNC4xNCcgPT4gJ3NlYXJjaEd1aWRlJywKICAgICAgICAgICAgJzIuNS40LjE1JyA9PiAnYnVzaW5lc3NDYXRlZ29yeScsCiAgICAgICAgICAgICcyLjUuNC4xNicgPT4gJ3Bvc3RhbEFkZHJlc3MnLAogICAgICAgICAgICAnMi41LjQuMTcnID0+ICdwb3N0YWxDb2RlJywKICAgICAgICAgICAgJzIuNS40LjE4JyA9PiAncG9zdE9mZmljZUJveCcsCiAgICAgICAgICAgICcyLjUuNC4xOScgPT4gJ3BoeXNpY2FsRGVsaXZlcnlPZmZpY2VOYW1lJywKICAgICAgICAgICAgJzIuNS40LjIwJyA9PiAndGVsZXBob25lTnVtYmVyJywKICAgICAgICAgICAgJzIuNS40LjIxJyA9PiAndGVsZXhOdW1iZXInLAogICAgICAgICAgICAnMi41LjQuMjInID0+ICd0ZWxldGV4VGVybWluYWxJZGVudGlmaWVyJywKICAgICAgICAgICAgJzIuNS40LjIzJyA9PiAnZmFjc2ltaWxlVGVsZXBob25lTnVtYmVyJywKICAgICAgICAgICAgJzIuNS40LjI0JyA9PiAneDEyMUFkZHJlc3MnLAogICAgICAgICAgICAnMi41LjQuMjUnID0+ICdpbnRlcm5hdGlvbmFsaVNETk51bWJlcicsCiAgICAgICAgICAgICcyLjUuNC4yNicgPT4gJ3JlZ2lzdGVyZWRBZGRyZXNzJywKICAgICAgICAgICAgJzIuNS40LjI3JyA9PiAnZGVzdGluYXRpb25JbmRpY2F0b3InLAogICAgICAgICAgICAnMi41LjQuMjgnID0+ICdwcmVmZXJyZWREZWxpdmVyeU1ldGhvZCcsCiAgICAgICAgICAgICcyLjUuNC4yOScgPT4gJ3ByZXNlbnRhdGlvbkFkZHJlc3MnLAogICAgICAgICAgICAnMi41LjQuMzAnID0+ICdzdXBwb3J0ZWRBcHBsaWNhdGlvbkNvbnRleHQnLAogICAgICAgICAgICAnMi41LjQuMzEnID0+ICdtZW1iZXInLAogICAgICAgICAgICAnMi41LjQuMzInID0+ICdvd25lcicsCiAgICAgICAgICAgICcyLjUuNC4zMycgPT4gJ3JvbGVPY2N1cGFudCcsCiAgICAgICAgICAgICcyLjUuNC4zNCcgPT4gJ3NlZUFsc28nLAogICAgICAgICAgICAnMi41LjQuMzUnID0+ICd1c2VyUGFzc3dvcmQnLAogICAgICAgICAgICAnMi41LjQuMzYnID0+ICd1c2VyQ2VydGlmaWNhdGUnLAogICAgICAgICAgICAnMi41LjQuMzcnID0+ICdjQUNlcnRpZmljYXRlJywKICAgICAgICAgICAgJzIuNS40LjM4JyA9PiAnYXV0aG9yaXR5UmV2b2NhdGlvbkxpc3QnLAogICAgICAgICAgICAnMi41LjQuMzknID0+ICdjZXJ0aWZpY2F0ZVJldm9jYXRpb25MaXN0JywKICAgICAgICAgICAgJzIuNS40LjQwJyA9PiAnY3Jvc3NDZXJ0aWZpY2F0ZVBhaXInLAogICAgICAgICAgICAnMi41LjQuNDEnID0+ICduYW1lJywKICAgICAgICAgICAgJzIuNS40LjQyJyA9PiAnZ2l2ZW5OYW1lJywKICAgICAgICAgICAgJzIuNS40LjQzJyA9PiAnaW5pdGlhbHMnLAogICAgICAgICAgICAnMi41LjQuNDQnID0+ICdnZW5lcmF0aW9uUXVhbGlmaWVyJywKICAgICAgICAgICAgJzIuNS40LjQ1JyA9PiAneDUwMFVuaXF1ZUlkZW50aWZpZXInLAogICAgICAgICAgICAnMi41LjQuNDYnID0+ICdkblF1YWxpZmllcicsCiAgICAgICAgICAgICcyLjUuNC40NycgPT4gJ2VuaGFuY2VkU2VhcmNoR3VpZGUnLAogICAgICAgICAgICAnMi41LjQuNDgnID0+ICdwcm90b2NvbEluZm9ybWF0aW9uJywKICAgICAgICAgICAgJzIuNS40LjQ5JyA9PiAnZGlzdGluZ3Vpc2hlZE5hbWUnLAogICAgICAgICAgICAnMi41LjQuNTAnID0+ICd1bmlxdWVNZW1iZXInLAogICAgICAgICAgICAnMi41LjQuNTEnID0+ICdob3VzZUlkZW50aWZpZXInLAogICAgICAgICAgICAnMi41LjQuNTInID0+ICdzdXBwb3J0ZWRBbGdvcml0aG1zJywKICAgICAgICAgICAgJzIuNS40LjUzJyA9PiAnZGVsdGFSZXZvY2F0aW9uTGlzdCcsCiAgICAgICAgICAgICcyLjUuNC41NCcgPT4gJ2RtZE5hbWUnLAogICAgICAgICAgICAnMi41LjQuNjUnID0+ICdwc2V1ZG9ueW0nLAogICAgICAgICAgICAnMi41LjQuNzInID0+ICdyb2xlJywKICAgICAgICAgICAgJzIuNS44JyA9PiAnZGlyZWN0b3J5IHNlcnZpY2VzIC0gYWxnb3JpdGhtcycsCiAgICAgICAgICAgICcyLjUuOC4xLjEnID0+ICdyc2EnLAogICAgICAgICAgICAnMi41LjguMy4xMDAnID0+ICdtZGMyV2l0aFJTQScsCiAgICAgICAgICAgICcyLjUuOC4zLjEwMScgPT4gJ21kYzInLAogICAgICAgICAgICAnMi41LjI5JyA9PiAnaWQtY2UnLAogICAgICAgICAgICAnMi41LjI5LjknID0+ICdYNTA5djMgU3ViamVjdCBEaXJlY3RvcnkgQXR0cmlidXRlcycsCiAgICAgICAgICAgICcyLjUuMjkuMTQnID0+ICdYNTA5djMgU3ViamVjdCBLZXkgSWRlbnRpZmllcicsCiAgICAgICAgICAgICcyLjUuMjkuMTUnID0+ICdYNTA5djMgS2V5IFVzYWdlJywKICAgICAgICAgICAgJzIuNS4yOS4xNicgPT4gJ1g1MDl2MyBQcml2YXRlIEtleSBVc2FnZSBQZXJpb2QnLAogICAgICAgICAgICAnMi41LjI5LjE3JyA9PiAnWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZScsCiAgICAgICAgICAgICcyLjUuMjkuMTgnID0+ICdYNTA5djMgSXNzdWVyIEFsdGVybmF0aXZlIE5hbWUnLAogICAgICAgICAgICAnMi41LjI5LjE5JyA9PiAnWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzJywKICAgICAgICAgICAgJzIuNS4yOS4yMCcgPT4gJ1g1MDl2MyBDUkwgTnVtYmVyJywKICAgICAgICAgICAgJzIuNS4yOS4yMScgPT4gJ1g1MDl2MyBDUkwgUmVhc29uIENvZGUnLAogICAgICAgICAgICAnMi41LjI5LjI0JyA9PiAnSW52YWxpZGl0eSBEYXRlJywKICAgICAgICAgICAgJzIuNS4yOS4yNycgPT4gJ1g1MDl2MyBEZWx0YSBDUkwgSW5kaWNhdG9yJywKICAgICAgICAgICAgJzIuNS4yOS4yOCcgPT4gJ1g1MDl2MyBJc3N1aW5nIERpc3RyaWJ1dGlvbiBQb2ludCcsCiAgICAgICAgICAgICcyLjUuMjkuMjknID0+ICdYNTA5djMgQ2VydGlmaWNhdGUgSXNzdWVyJywKICAgICAgICAgICAgJzIuNS4yOS4zMCcgPT4gJ1g1MDl2MyBOYW1lIENvbnN0cmFpbnRzJywKICAgICAgICAgICAgJzIuNS4yOS4zMScgPT4gJ1g1MDl2MyBDUkwgRGlzdHJpYnV0aW9uIFBvaW50cycsCiAgICAgICAgICAgICcyLjUuMjkuMzInID0+ICdYNTA5djMgQ2VydGlmaWNhdGUgUG9saWNpZXMnLAogICAgICAgICAgICAnMi41LjI5LjMyLjAnID0+ICdYNTA5djMgQW55IFBvbGljeScsCiAgICAgICAgICAgICcyLjUuMjkuMzMnID0+ICdYNTA5djMgUG9saWN5IE1hcHBpbmdzJywKICAgICAgICAgICAgJzIuNS4yOS4zNScgPT4gJ1g1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXInLAogICAgICAgICAgICAnMi41LjI5LjM2JyA9PiAnWDUwOXYzIFBvbGljeSBDb25zdHJhaW50cycsCiAgICAgICAgICAgICcyLjUuMjkuMzcnID0+ICdYNTA5djMgRXh0ZW5kZWQgS2V5IFVzYWdlJywKICAgICAgICAgICAgJzIuNS4yOS40NicgPT4gJ1g1MDl2MyBGcmVzaGVzdCBDUkwnLAogICAgICAgICAgICAnMi41LjI5LjU0JyA9PiAnWDUwOXYzIEluaGliaXQgQW55IFBvbGljeScsCiAgICAgICAgICAgICcyLjUuMjkuNTUnID0+ICdYNTA5djMgQUMgVGFyZ2V0aW5nJywKICAgICAgICAgICAgJzIuNS4yOS41NicgPT4gJ1g1MDl2MyBObyBSZXZvY2F0aW9uIEF2YWlsYWJsZScsCiAgICAgICAgICAgICcyLjUuMjkuMzcuMCcgPT4gJ0FueSBFeHRlbmRlZCBLZXkgVXNhZ2UnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3MzAnID0+ICdOZXRzY2FwZSBDb21tdW5pY2F0aW9ucyBDb3JwLicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC4xJyA9PiAnTmV0c2NhcGUgQ2VydGlmaWNhdGUgRXh0ZW5zaW9uJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjInID0+ICdOZXRzY2FwZSBEYXRhIFR5cGUnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3MzAuMS4xJyA9PiAnTmV0c2NhcGUgQ2VydCBUeXBlJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuMicgPT4gJ05ldHNjYXBlIEJhc2UgVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuMycgPT4gJ05ldHNjYXBlIFJldm9jYXRpb24gVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuNCcgPT4gJ05ldHNjYXBlIENBIFJldm9jYXRpb24gVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuNycgPT4gJ05ldHNjYXBlIFJlbmV3YWwgVXJsJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTEzNzMwLjEuOCcgPT4gJ05ldHNjYXBlIENBIFBvbGljeSBVcmwnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMTM3MzAuMS4xMicgPT4gJ05ldHNjYXBlIFNTTCBTZXJ2ZXIgTmFtZScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC4xLjEzJyA9PiAnTmV0c2NhcGUgQ29tbWVudCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC4yLjUnID0+ICdOZXRzY2FwZSBDZXJ0aWZpY2F0ZSBTZXF1ZW5jZScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjExMzczMC40LjEnID0+ICdOZXRzY2FwZSBTZXJ2ZXIgR2F0ZWQgQ3J5cHRvJywKICAgICAgICAgICAgJzEuMy42JyA9PiAnZG9kJywKICAgICAgICAgICAgJzEuMy42LjEnID0+ICdpYW5hJywKICAgICAgICAgICAgJzEuMy42LjEuMScgPT4gJ0RpcmVjdG9yeScsCiAgICAgICAgICAgICcxLjMuNi4xLjInID0+ICdNYW5hZ2VtZW50JywKICAgICAgICAgICAgJzEuMy42LjEuMycgPT4gJ0V4cGVyaW1lbnRhbCcsCiAgICAgICAgICAgICcxLjMuNi4xLjQnID0+ICdQcml2YXRlJywKICAgICAgICAgICAgJzEuMy42LjEuNScgPT4gJ1NlY3VyaXR5JywKICAgICAgICAgICAgJzEuMy42LjEuNicgPT4gJ1NOTVB2MicsCiAgICAgICAgICAgICcxLjMuNi4xLjcnID0+ICdNYWlsJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xJyA9PiAnRW50ZXJwcmlzZXMnLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTQ2Ni4zNDQnID0+ICdkY09iamVjdCcsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4xLjkuMTYuMy44JyA9PiAnemxpYiBjb21wcmVzc2lvbicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zJyA9PiAnY3NvcicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQnID0+ICduaXN0QWxnb3JpdGhtcycsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMScgPT4gJ2FlcycsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4xJyA9PiAnYWVzLTEyOC1lY2InLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuMicgPT4gJ2Flcy0xMjgtY2JjJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjMnID0+ICdhZXMtMTI4LW9mYicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS40JyA9PiAnYWVzLTEyOC1jZmInLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNScgPT4gJ2lkLWFlczEyOC13cmFwJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjYnID0+ICdhZXMtMTI4LWdjbScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS43JyA9PiAnYWVzLTEyOC1jY20nLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuOCcgPT4gJ2lkLWFlczEyOC13cmFwLXBhZCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yMScgPT4gJ2Flcy0xOTItZWNiJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjIyJyA9PiAnYWVzLTE5Mi1jYmMnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuMjMnID0+ICdhZXMtMTkyLW9mYicsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNCcgPT4gJ2Flcy0xOTItY2ZiJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjI1JyA9PiAnaWQtYWVzMTkyLXdyYXAnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuMjYnID0+ICdhZXMtMTkyLWdjbScsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS4yNycgPT4gJ2Flcy0xOTItY2NtJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjI4JyA9PiAnaWQtYWVzMTkyLXdyYXAtcGFkJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjQxJyA9PiAnYWVzLTI1Ni1lY2InLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDInID0+ICdhZXMtMjU2LWNiYycsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS40MycgPT4gJ2Flcy0yNTYtb2ZiJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjQ0JyA9PiAnYWVzLTI1Ni1jZmInLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDUnID0+ICdpZC1hZXMyNTYtd3JhcCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMS40NicgPT4gJ2Flcy0yNTYtZ2NtJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4xLjQ3JyA9PiAnYWVzLTI1Ni1jY20nLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjEuNDgnID0+ICdpZC1hZXMyNTYtd3JhcC1wYWQnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjInID0+ICduaXN0X2hhc2hhbGdzJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4yLjEnID0+ICdzaGEyNTYnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjIuMicgPT4gJ3NoYTM4NCcsCiAgICAgICAgICAgICcyLjE2Ljg0MC4xLjEwMS4zLjQuMi4zJyA9PiAnc2hhNTEyJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4yLjQnID0+ICdzaGEyMjQnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjMnID0+ICdkc2Ffd2l0aF9zaGEyJywKICAgICAgICAgICAgJzIuMTYuODQwLjEuMTAxLjMuNC4zLjEnID0+ICdkc2Ffd2l0aF9TSEEyMjQnLAogICAgICAgICAgICAnMi4xNi44NDAuMS4xMDEuMy40LjMuMicgPT4gJ2RzYV93aXRoX1NIQTI1NicsCiAgICAgICAgICAgICcyLjUuMjkuMjMnID0+ICdIb2xkIEluc3RydWN0aW9uIENvZGUnLAogICAgICAgICAgICAnMC45JyA9PiAnZGF0YScsCiAgICAgICAgICAgICcwLjkuMjM0MicgPT4gJ3BzcycsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMCcgPT4gJ3VjbCcsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAnID0+ICdwaWxvdCcsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAuMScgPT4gJ3BpbG90QXR0cmlidXRlVHlwZScsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAuMycgPT4gJ3BpbG90QXR0cmlidXRlU3ludGF4JywKICAgICAgICAgICAgJzAuOS4yMzQyLjE5MjAwMzAwLjEwMC40JyA9PiAncGlsb3RPYmplY3RDbGFzcycsCiAgICAgICAgICAgICcwLjkuMjM0Mi4xOTIwMDMwMC4xMDAuMTAnID0+ICdwaWxvdEdyb3VwcycsCiAgICAgICAgICAgICcyLjIzLjQyJyA9PiAnU2VjdXJlIEVsZWN0cm9uaWMgVHJhbnNhY3Rpb25zJywKICAgICAgICAgICAgJzIuMjMuNDIuMCcgPT4gJ2NvbnRlbnQgdHlwZXMnLAogICAgICAgICAgICAnMi4yMy40Mi4xJyA9PiAnbWVzc2FnZSBleHRlbnNpb25zJywKICAgICAgICAgICAgJzIuMjMuNDIuMycgPT4gJ3NldC1hdHRyJywKICAgICAgICAgICAgJzIuMjMuNDIuNScgPT4gJ3NldC1wb2xpY3knLAogICAgICAgICAgICAnMi4yMy40Mi43JyA9PiAnY2VydGlmaWNhdGUgZXh0ZW5zaW9ucycsCiAgICAgICAgICAgICcyLjIzLjQyLjgnID0+ICdzZXQtYnJhbmQnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjAnID0+ICdzZXRjdC1QQU5EYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4xJyA9PiAnc2V0Y3QtUEFOVG9rZW4nLAogICAgICAgICAgICAnMi4yMy40Mi4wLjInID0+ICdzZXRjdC1QQU5Pbmx5JywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zJyA9PiAnc2V0Y3QtT0lEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC40JyA9PiAnc2V0Y3QtUEknLAogICAgICAgICAgICAnMi4yMy40Mi4wLjUnID0+ICdzZXRjdC1QSURhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjYnID0+ICdzZXRjdC1QSURhdGFVbnNpZ25lZCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNycgPT4gJ3NldGN0LUhPRElucHV0JywKICAgICAgICAgICAgJzIuMjMuNDIuMC44JyA9PiAnc2V0Y3QtQXV0aFJlc0JhZ2dhZ2UnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjknID0+ICdzZXRjdC1BdXRoUmV2UmVxQmFnZ2FnZScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTAnID0+ICdzZXRjdC1BdXRoUmV2UmVzQmFnZ2FnZScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTEnID0+ICdzZXRjdC1DYXBUb2tlblNlcScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTInID0+ICdzZXRjdC1QSW5pdFJlc0RhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjEzJyA9PiAnc2V0Y3QtUEktVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4xNCcgPT4gJ3NldGN0LVBSZXNEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4xNicgPT4gJ3NldGN0LUF1dGhSZXFUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjE3JyA9PiAnc2V0Y3QtQXV0aFJlc1RCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTgnID0+ICdzZXRjdC1BdXRoUmVzVEJTWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMTknID0+ICdzZXRjdC1BdXRoVG9rZW5UQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjIwJyA9PiAnc2V0Y3QtQ2FwVG9rZW5EYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yMScgPT4gJ3NldGN0LUNhcFRva2VuVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yMicgPT4gJ3NldGN0LUFjcUNhcmRDb2RlTXNnJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yMycgPT4gJ3NldGN0LUF1dGhSZXZSZXFUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjI0JyA9PiAnc2V0Y3QtQXV0aFJldlJlc0RhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjI1JyA9PiAnc2V0Y3QtQXV0aFJldlJlc1RCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMjYnID0+ICdzZXRjdC1DYXBSZXFUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjI3JyA9PiAnc2V0Y3QtQ2FwUmVxVEJTWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMjgnID0+ICdzZXRjdC1DYXBSZXNEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4yOScgPT4gJ3NldGN0LUNhcFJldlJlcVRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzAnID0+ICdzZXRjdC1DYXBSZXZSZXFUQlNYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zMScgPT4gJ3NldGN0LUNhcFJldlJlc0RhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjMyJyA9PiAnc2V0Y3QtQ3JlZFJlcVRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzMnID0+ICdzZXRjdC1DcmVkUmVxVEJTWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzQnID0+ICdzZXRjdC1DcmVkUmVzRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzUnID0+ICdzZXRjdC1DcmVkUmV2UmVxVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zNicgPT4gJ3NldGN0LUNyZWRSZXZSZXFUQlNYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zNycgPT4gJ3NldGN0LUNyZWRSZXZSZXNEYXRhJywKICAgICAgICAgICAgJzIuMjMuNDIuMC4zOCcgPT4gJ3NldGN0LVBDZXJ0UmVxRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuMzknID0+ICdzZXRjdC1QQ2VydFJlc1RCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDAnID0+ICdzZXRjdC1CYXRjaEFkbWluUmVxRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDEnID0+ICdzZXRjdC1CYXRjaEFkbWluUmVzRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDInID0+ICdzZXRjdC1DYXJkQ0luaXRSZXNUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjQzJyA9PiAnc2V0Y3QtTWVBcUNJbml0UmVzVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC40NCcgPT4gJ3NldGN0LVJlZ0Zvcm1SZXNUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjQ1JyA9PiAnc2V0Y3QtQ2VydFJlcURhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjQ2JyA9PiAnc2V0Y3QtQ2VydFJlcVRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDcnID0+ICdzZXRjdC1DZXJ0UmVzRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNDgnID0+ICdzZXRjdC1DZXJ0SW5xUmVxVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC40OScgPT4gJ3NldGN0LUVycm9yVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41MCcgPT4gJ3NldGN0LVBJRHVhbFNpZ25lZFRCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNTEnID0+ICdzZXRjdC1QSVVuc2lnbmVkVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41MicgPT4gJ3NldGN0LUF1dGhSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjUzJyA9PiAnc2V0Y3QtQXV0aFJlc1RCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNTQnID0+ICdzZXRjdC1BdXRoUmVzVEJFWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNTUnID0+ICdzZXRjdC1BdXRoVG9rZW5UQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjU2JyA9PiAnc2V0Y3QtQ2FwVG9rZW5UQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjU3JyA9PiAnc2V0Y3QtQ2FwVG9rZW5UQkVYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41OCcgPT4gJ3NldGN0LUFjcUNhcmRDb2RlTXNnVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC41OScgPT4gJ3NldGN0LUF1dGhSZXZSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjYwJyA9PiAnc2V0Y3QtQXV0aFJldlJlc1RCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNjEnID0+ICdzZXRjdC1BdXRoUmV2UmVzVEJFQicsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNjInID0+ICdzZXRjdC1DYXBSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjYzJyA9PiAnc2V0Y3QtQ2FwUmVxVEJFWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNjQnID0+ICdzZXRjdC1DYXBSZXNUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjY1JyA9PiAnc2V0Y3QtQ2FwUmV2UmVxVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC42NicgPT4gJ3NldGN0LUNhcFJldlJlcVRCRVgnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjY3JyA9PiAnc2V0Y3QtQ2FwUmV2UmVzVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC42OCcgPT4gJ3NldGN0LUNyZWRSZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjY5JyA9PiAnc2V0Y3QtQ3JlZFJlcVRCRVgnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjcwJyA9PiAnc2V0Y3QtQ3JlZFJlc1RCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzEnID0+ICdzZXRjdC1DcmVkUmV2UmVxVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC43MicgPT4gJ3NldGN0LUNyZWRSZXZSZXFUQkVYJywKICAgICAgICAgICAgJzIuMjMuNDIuMC43MycgPT4gJ3NldGN0LUNyZWRSZXZSZXNUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjc0JyA9PiAnc2V0Y3QtQmF0Y2hBZG1pblJlcVRCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzUnID0+ICdzZXRjdC1CYXRjaEFkbWluUmVzVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC43NicgPT4gJ3NldGN0LVJlZ0Zvcm1SZXFUQkUnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjc3JyA9PiAnc2V0Y3QtQ2VydFJlcVRCRScsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzgnID0+ICdzZXRjdC1DZXJ0UmVxVEJFWCcsCiAgICAgICAgICAgICcyLjIzLjQyLjAuNzknID0+ICdzZXRjdC1DZXJ0UmVzVEJFJywKICAgICAgICAgICAgJzIuMjMuNDIuMC44MCcgPT4gJ3NldGN0LUNSTE5vdGlmaWNhdGlvblRCUycsCiAgICAgICAgICAgICcyLjIzLjQyLjAuODEnID0+ICdzZXRjdC1DUkxOb3RpZmljYXRpb25SZXNUQlMnLAogICAgICAgICAgICAnMi4yMy40Mi4wLjgyJyA9PiAnc2V0Y3QtQkNJRGlzdHJpYnV0aW9uVEJTJywKICAgICAgICAgICAgJzIuMjMuNDIuMS4xJyA9PiAnZ2VuZXJpYyBjcnlwdG9ncmFtJywKICAgICAgICAgICAgJzIuMjMuNDIuMS4zJyA9PiAnbWVyY2hhbnQgaW5pdGlhdGVkIGF1dGgnLAogICAgICAgICAgICAnMi4yMy40Mi4xLjQnID0+ICdzZXRleHQtcGluU2VjdXJlJywKICAgICAgICAgICAgJzIuMjMuNDIuMS41JyA9PiAnc2V0ZXh0LXBpbkFueScsCiAgICAgICAgICAgICcyLjIzLjQyLjEuNycgPT4gJ3NldGV4dC10cmFjazInLAogICAgICAgICAgICAnMi4yMy40Mi4xLjgnID0+ICdhZGRpdGlvbmFsIHZlcmlmaWNhdGlvbicsCiAgICAgICAgICAgICcyLjIzLjQyLjUuMCcgPT4gJ3NldC1wb2xpY3ktcm9vdCcsCiAgICAgICAgICAgICcyLjIzLjQyLjcuMCcgPT4gJ3NldENleHQtaGFzaGVkUm9vdCcsCiAgICAgICAgICAgICcyLjIzLjQyLjcuMScgPT4gJ3NldENleHQtY2VydFR5cGUnLAogICAgICAgICAgICAnMi4yMy40Mi43LjInID0+ICdzZXRDZXh0LW1lcmNoRGF0YScsCiAgICAgICAgICAgICcyLjIzLjQyLjcuMycgPT4gJ3NldENleHQtY0NlcnRSZXF1aXJlZCcsCiAgICAgICAgICAgICcyLjIzLjQyLjcuNCcgPT4gJ3NldENleHQtdHVubmVsaW5nJywKICAgICAgICAgICAgJzIuMjMuNDIuNy41JyA9PiAnc2V0Q2V4dC1zZXRFeHQnLAogICAgICAgICAgICAnMi4yMy40Mi43LjYnID0+ICdzZXRDZXh0LXNldFF1YWxmJywKICAgICAgICAgICAgJzIuMjMuNDIuNy43JyA9PiAnc2V0Q2V4dC1QR1dZY2FwYWJpbGl0aWVzJywKICAgICAgICAgICAgJzIuMjMuNDIuNy44JyA9PiAnc2V0Q2V4dC1Ub2tlbklkZW50aWZpZXInLAogICAgICAgICAgICAnMi4yMy40Mi43LjknID0+ICdzZXRDZXh0LVRyYWNrMkRhdGEnLAogICAgICAgICAgICAnMi4yMy40Mi43LjEwJyA9PiAnc2V0Q2V4dC1Ub2tlblR5cGUnLAogICAgICAgICAgICAnMi4yMy40Mi43LjExJyA9PiAnc2V0Q2V4dC1Jc3N1ZXJDYXBhYmlsaXRpZXMnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjAnID0+ICdzZXRBdHRyLUNlcnQnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjEnID0+ICdwYXltZW50IGdhdGV3YXkgY2FwYWJpbGl0aWVzJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4yJyA9PiAnc2V0QXR0ci1Ub2tlblR5cGUnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjMnID0+ICdpc3N1ZXIgY2FwYWJpbGl0aWVzJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4wLjAnID0+ICdzZXQtcm9vdEtleVRodW1iJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4wLjEnID0+ICdzZXQtYWRkUG9saWN5JywKICAgICAgICAgICAgJzIuMjMuNDIuMy4yLjEnID0+ICdzZXRBdHRyLVRva2VuLUVNVicsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMi4yJyA9PiAnc2V0QXR0ci1Ub2tlbi1CMFByaW1lJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4zLjMnID0+ICdzZXRBdHRyLUlzc0NhcC1DVk0nLAogICAgICAgICAgICAnMi4yMy40Mi4zLjMuNCcgPT4gJ3NldEF0dHItSXNzQ2FwLVQyJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4zLjUnID0+ICdzZXRBdHRyLUlzc0NhcC1TaWcnLAogICAgICAgICAgICAnMi4yMy40Mi4zLjMuMy4xJyA9PiAnZ2VuZXJhdGUgY3J5cHRvZ3JhbScsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMy40LjEnID0+ICdlbmNyeXB0ZWQgdHJhY2sgMicsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMy40LjInID0+ICdjbGVhcnRleHQgdHJhY2sgMicsCiAgICAgICAgICAgICcyLjIzLjQyLjMuMy41LjEnID0+ICdJQ0Mgb3IgdG9rZW4gc2lnbmF0dXJlJywKICAgICAgICAgICAgJzIuMjMuNDIuMy4zLjUuMicgPT4gJ3NlY3VyZSBkZXZpY2Ugc2lnbmF0dXJlJywKICAgICAgICAgICAgJzIuMjMuNDIuOC4xJyA9PiAnc2V0LWJyYW5kLUlBVEEtQVRBJywKICAgICAgICAgICAgJzIuMjMuNDIuOC4zMCcgPT4gJ3NldC1icmFuZC1EaW5lcnMnLAogICAgICAgICAgICAnMi4yMy40Mi44LjM0JyA9PiAnc2V0LWJyYW5kLUFtZXJpY2FuRXhwcmVzcycsCiAgICAgICAgICAgICcyLjIzLjQyLjguMzUnID0+ICdzZXQtYnJhbmQtSkNCJywKICAgICAgICAgICAgJzIuMjMuNDIuOC40JyA9PiAnc2V0LWJyYW5kLVZpc2EnLAogICAgICAgICAgICAnMi4yMy40Mi44LjUnID0+ICdzZXQtYnJhbmQtTWFzdGVyQ2FyZCcsCiAgICAgICAgICAgICcyLjIzLjQyLjguNjAxMScgPT4gJ3NldC1icmFuZC1Ob3Z1cycsCiAgICAgICAgICAgICcxLjIuODQwLjExMzU0OS4zLjEwJyA9PiAnZGVzLWNkbWYnLAogICAgICAgICAgICAnMS4yLjg0MC4xMTM1NDkuMS4xLjYnID0+ICdyc2FPQUVQRW5jcnlwdGlvblNFVCcsCiAgICAgICAgICAgICcxLjAuMTAxMTguMy4wLjU1JyA9PiAnd2hpcmxwb29sJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yJyA9PiAnY3J5cHRvcHJvJywKICAgICAgICAgICAgJzEuMi42NDMuMi45JyA9PiAnY3J5cHRvY29tJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMnID0+ICdHT1NUIFIgMzQuMTEtOTQgd2l0aCBHT1NUIFIgMzQuMTAtMjAwMScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi40JyA9PiAnR09TVCBSIDM0LjExLTk0IHdpdGggR09TVCBSIDM0LjEwLTk0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjknID0+ICdHT1NUIFIgMzQuMTEtOTQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMTAnID0+ICdITUFDIEdPU1QgMzQuMTEtOTQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMTknID0+ICdHT1NUIFIgMzQuMTAtMjAwMScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMCcgPT4gJ0dPU1QgUiAzNC4xMC05NCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMScgPT4gJ0dPU1QgMjgxNDctODknLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMjInID0+ICdHT1NUIDI4MTQ3LTg5IE1BQycsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMycgPT4gJ0dPU1QgUiAzNC4xMS05NCBQUkYnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuOTgnID0+ICdHT1NUIFIgMzQuMTAtMjAwMSBESCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi45OScgPT4gJ0dPU1QgUiAzNC4xMC05NCBESCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4xNC4xJyA9PiAnaWQtR29zdDI4MTQ3LTg5LUNyeXB0b1Byby1LZXlNZXNoaW5nJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjE0LjAnID0+ICdpZC1Hb3N0MjgxNDctODktTm9uZS1LZXlNZXNoaW5nJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMwLjAnID0+ICdpZC1Hb3N0UjM0MTEtOTQtVGVzdFBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMwLjEnID0+ICdpZC1Hb3N0UjM0MTEtOTQtQ3J5cHRvUHJvUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuMCcgPT4gJ2lkLUdvc3QyODE0Ny04OS1UZXN0UGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuMScgPT4gJ2lkLUdvc3QyODE0Ny04OS1DcnlwdG9Qcm8tQS1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMS4yJyA9PiAnaWQtR29zdDI4MTQ3LTg5LUNyeXB0b1Byby1CLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMxLjMnID0+ICdpZC1Hb3N0MjgxNDctODktQ3J5cHRvUHJvLUMtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuNCcgPT4gJ2lkLUdvc3QyODE0Ny04OS1DcnlwdG9Qcm8tRC1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMS41JyA9PiAnaWQtR29zdDI4MTQ3LTg5LUNyeXB0b1Byby1Pc2Nhci0xLTEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzEuNicgPT4gJ2lkLUdvc3QyODE0Ny04OS1DcnlwdG9Qcm8tT3NjYXItMS0wLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMxLjcnID0+ICdpZC1Hb3N0MjgxNDctODktQ3J5cHRvUHJvLVJJQy0xLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMyLjAnID0+ICdpZC1Hb3N0UjM0MTAtOTQtVGVzdFBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMyLjInID0+ICdpZC1Hb3N0UjM0MTAtOTQtQ3J5cHRvUHJvLUEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzIuMycgPT4gJ2lkLUdvc3RSMzQxMC05NC1DcnlwdG9Qcm8tQi1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMi40JyA9PiAnaWQtR29zdFIzNDEwLTk0LUNyeXB0b1Byby1DLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMyLjUnID0+ICdpZC1Hb3N0UjM0MTAtOTQtQ3J5cHRvUHJvLUQtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzMuMScgPT4gJ2lkLUdvc3RSMzQxMC05NC1DcnlwdG9Qcm8tWGNoQS1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zMy4yJyA9PiAnaWQtR29zdFIzNDEwLTk0LUNyeXB0b1Byby1YY2hCLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjMzLjMnID0+ICdpZC1Hb3N0UjM0MTAtOTQtQ3J5cHRvUHJvLVhjaEMtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzUuMCcgPT4gJ2lkLUdvc3RSMzQxMC0yMDAxLVRlc3RQYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zNS4xJyA9PiAnaWQtR29zdFIzNDEwLTIwMDEtQ3J5cHRvUHJvLUEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzUuMicgPT4gJ2lkLUdvc3RSMzQxMC0yMDAxLUNyeXB0b1Byby1CLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjM1LjMnID0+ICdpZC1Hb3N0UjM0MTAtMjAwMS1DcnlwdG9Qcm8tQy1QYXJhbVNldCcsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4zNi4wJyA9PiAnaWQtR29zdFIzNDEwLTIwMDEtQ3J5cHRvUHJvLVhjaEEtUGFyYW1TZXQnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMzYuMScgPT4gJ2lkLUdvc3RSMzQxMC0yMDAxLUNyeXB0b1Byby1YY2hCLVBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjIwLjEnID0+ICdpZC1Hb3N0UjM0MTAtOTQtYScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuMi4yMC4yJyA9PiAnaWQtR29zdFIzNDEwLTk0LWFCaXMnLAogICAgICAgICAgICAnMS4yLjY0My4yLjIuMjAuMycgPT4gJ2lkLUdvc3RSMzQxMC05NC1iJywKICAgICAgICAgICAgJzEuMi42NDMuMi4yLjIwLjQnID0+ICdpZC1Hb3N0UjM0MTAtOTQtYkJpcycsCiAgICAgICAgICAgICcxLjIuNjQzLjIuOS4xLjYuMScgPT4gJ0dPU1QgMjgxNDctODkgQ3J5cHRvY29tIFBhcmFtU2V0JywKICAgICAgICAgICAgJzEuMi42NDMuMi45LjEuNS4zJyA9PiAnR09TVCAzNC4xMC05NCBDcnlwdG9jb20nLAogICAgICAgICAgICAnMS4yLjY0My4yLjkuMS41LjQnID0+ICdHT1NUIDM0LjEwLTIwMDEgQ3J5cHRvY29tJywKICAgICAgICAgICAgJzEuMi42NDMuMi45LjEuMy4zJyA9PiAnR09TVCBSIDM0LjExLTk0IHdpdGggR09TVCBSIDM0LjEwLTk0IENyeXB0b2NvbScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuOS4xLjMuNCcgPT4gJ0dPU1QgUiAzNC4xMS05NCB3aXRoIEdPU1QgUiAzNC4xMC0yMDAxIENyeXB0b2NvbScsCiAgICAgICAgICAgICcxLjIuNjQzLjIuOS4xLjguMScgPT4gJ0dPU1QgUiAzNDEwLTIwMDEgUGFyYW1ldGVyIFNldCBDcnlwdG9jb20nLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjEuMicgPT4gJ2NhbWVsbGlhLTEyOC1jYmMnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjEuMycgPT4gJ2NhbWVsbGlhLTE5Mi1jYmMnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjEuNCcgPT4gJ2NhbWVsbGlhLTI1Ni1jYmMnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjMuMicgPT4gJ2lkLWNhbWVsbGlhMTI4LXdyYXAnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjMuMycgPT4gJ2lkLWNhbWVsbGlhMTkyLXdyYXAnLAogICAgICAgICAgICAnMS4yLjM5Mi4yMDAwMTEuNjEuMS4xLjMuNCcgPT4gJ2lkLWNhbWVsbGlhMjU2LXdyYXAnLAogICAgICAgICAgICAnMC4zLjQ0MDEuNScgPT4gJ250dC1kcycsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45JyA9PiAnY2FtZWxsaWEnLAogICAgICAgICAgICAnMC4zLjQ0MDEuNS4zLjEuOS4xJyA9PiAnY2FtZWxsaWEtMTI4LWVjYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjMnID0+ICdjYW1lbGxpYS0xMjgtb2ZiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuNCcgPT4gJ2NhbWVsbGlhLTEyOC1jZmInLAogICAgICAgICAgICAnMC4zLjQ0MDEuNS4zLjEuOS42JyA9PiAnY2FtZWxsaWEtMTI4LWdjbScsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjcnID0+ICdjYW1lbGxpYS0xMjgtY2NtJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuOScgPT4gJ2NhbWVsbGlhLTEyOC1jdHInLAogICAgICAgICAgICAnMC4zLjQ0MDEuNS4zLjEuOS4xMCcgPT4gJ2NhbWVsbGlhLTEyOC1jbWFjJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjEnID0+ICdjYW1lbGxpYS0xOTItZWNiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjMnID0+ICdjYW1lbGxpYS0xOTItb2ZiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjQnID0+ICdjYW1lbGxpYS0xOTItY2ZiJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjYnID0+ICdjYW1lbGxpYS0xOTItZ2NtJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjcnID0+ICdjYW1lbGxpYS0xOTItY2NtJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMjknID0+ICdjYW1lbGxpYS0xOTItY3RyJywKICAgICAgICAgICAgJzAuMy40NDAxLjUuMy4xLjkuMzAnID0+ICdjYW1lbGxpYS0xOTItY21hYycsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQxJyA9PiAnY2FtZWxsaWEtMjU2LWVjYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQzJyA9PiAnY2FtZWxsaWEtMjU2LW9mYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ0JyA9PiAnY2FtZWxsaWEtMjU2LWNmYicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ2JyA9PiAnY2FtZWxsaWEtMjU2LWdjbScsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ3JyA9PiAnY2FtZWxsaWEtMjU2LWNjbScsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjQ5JyA9PiAnY2FtZWxsaWEtMjU2LWN0cicsCiAgICAgICAgICAgICcwLjMuNDQwMS41LjMuMS45LjUwJyA9PiAnY2FtZWxsaWEtMjU2LWNtYWMnLAogICAgICAgICAgICAnMS4yLjQxMC4yMDAwMDQnID0+ICdraXNhJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuMycgPT4gJ3NlZWQtZWNiJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuNCcgPT4gJ3NlZWQtY2JjJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuNScgPT4gJ3NlZWQtY2ZiJywKICAgICAgICAgICAgJzEuMi40MTAuMjAwMDA0LjEuNicgPT4gJ3NlZWQtb2ZiJywKICAgICAgICAgICAgJzEuMi44NDAuMTAwNDYuMi4xJyA9PiAnWDkuNDIgREgnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjEnID0+ICdicmFpbnBvb2xQMTYwcjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjInID0+ICdicmFpbnBvb2xQMTYwdDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjMnID0+ICdicmFpbnBvb2xQMTkycjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjQnID0+ICdicmFpbnBvb2xQMTkydDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjUnID0+ICdicmFpbnBvb2xQMjI0cjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjYnID0+ICdicmFpbnBvb2xQMjI0dDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjcnID0+ICdicmFpbnBvb2xQMjU2cjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjgnID0+ICdicmFpbnBvb2xQMjU2dDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjknID0+ICdicmFpbnBvb2xQMzIwcjEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjEwJyA9PiAnYnJhaW5wb29sUDMyMHQxJywKICAgICAgICAgICAgJzEuMy4zNi4zLjMuMi44LjEuMS4xMScgPT4gJ2JyYWlucG9vbFAzODRyMScsCiAgICAgICAgICAgICcxLjMuMzYuMy4zLjIuOC4xLjEuMTInID0+ICdicmFpbnBvb2xQMzg0dDEnLAogICAgICAgICAgICAnMS4zLjM2LjMuMy4yLjguMS4xLjEzJyA9PiAnYnJhaW5wb29sUDUxMnIxJywKICAgICAgICAgICAgJzEuMy4zNi4zLjMuMi44LjEuMS4xNCcgPT4gJ2JyYWlucG9vbFA1MTJ0MScsCiAgICAgICAgICAgICcxLjMuMTMzLjE2Ljg0MC42My4wJyA9PiAneDktNjMtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMScgPT4gJ3NlY2ctc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzMuMTYuODQwLjYzLjAuMicgPT4gJ2RoU2luZ2xlUGFzcy1zdGRESC1zaGExa2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuMTMyLjEuMTEuMCcgPT4gJ2RoU2luZ2xlUGFzcy1zdGRESC1zaGEyMjRrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMS4xMS4xJyA9PiAnZGhTaW5nbGVQYXNzLXN0ZERILXNoYTI1NmtkZi1zY2hlbWUnLAogICAgICAgICAgICAnMS4zLjEzMi4xLjExLjInID0+ICdkaFNpbmdsZVBhc3Mtc3RkREgtc2hhMzg0a2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuMTMyLjEuMTEuMycgPT4gJ2RoU2luZ2xlUGFzcy1zdGRESC1zaGE1MTJrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzMuMTYuODQwLjYzLjAuMycgPT4gJ2RoU2luZ2xlUGFzcy1jb2ZhY3RvckRILXNoYTFrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMS4xNC4wJyA9PiAnZGhTaW5nbGVQYXNzLWNvZmFjdG9yREgtc2hhMjI0a2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuMTMyLjEuMTQuMScgPT4gJ2RoU2luZ2xlUGFzcy1jb2ZhY3RvckRILXNoYTI1NmtkZi1zY2hlbWUnLAogICAgICAgICAgICAnMS4zLjEzMi4xLjE0LjInID0+ICdkaFNpbmdsZVBhc3MtY29mYWN0b3JESC1zaGEzODRrZGYtc2NoZW1lJywKICAgICAgICAgICAgJzEuMy4xMzIuMS4xNC4zJyA9PiAnZGhTaW5nbGVQYXNzLWNvZmFjdG9yREgtc2hhNTEya2RmLXNjaGVtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4xMTEyOS4yLjQuMicgPT4gJ0NUIFByZWNlcnRpZmljYXRlIFNDVHMnLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTExMjkuMi40LjMnID0+ICdDVCBQcmVjZXJ0aWZpY2F0ZSBQb2lzb24nLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTExMjkuMi40LjQnID0+ICdDVCBQcmVjZXJ0aWZpY2F0ZSBTaWduZXInLAogICAgICAgICAgICAnMS4zLjYuMS40LjEuMTExMjkuMi40LjUnID0+ICdDVCBDZXJ0aWZpY2F0ZSBTQ1RzJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMxMS42MC4yLjEuMScgPT4gJ2p1cmlzZGljdGlvbkxvY2FsaXR5TmFtZScsCiAgICAgICAgICAgICcxLjMuNi4xLjQuMS4zMTEuNjAuMi4xLjInID0+ICdqdXJpc2RpY3Rpb25TdGF0ZU9yUHJvdmluY2VOYW1lJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjMxMS42MC4yLjEuMycgPT4gJ2p1cmlzZGljdGlvbkNvdW50cnlOYW1lJywKICAgICAgICAgICAgJzEuMy42LjEuNC4xLjExNTkxLjQuMTEnID0+ICdpZC1zY3J5cHQnLAogICAgICAgIF07CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRvaWRTdHJpbmcsICRvaWRzKSkgewogICAgICAgICAgICByZXR1cm4gJG9pZHNbJG9pZFN0cmluZ107CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRvaWRTdHJpbmcpIHsKICAgICAgICAgICAgY2FzZSBzZWxmOjpSU0FfRU5DUllQVElPTjoKICAgICAgICAgICAgICAgIHJldHVybiAnUlNBIEVuY3J5cHRpb24nOwogICAgICAgICAgICBjYXNlIHNlbGY6Ok1ENV9XSVRIX1JTQV9FTkNSWVBUSU9OOgogICAgICAgICAgICAgICAgcmV0dXJuICdNRDUgd2l0aCBSU0EgRW5jcnlwdGlvbic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U0hBMV9XSVRIX1JTQV9TSUdOQVRVUkU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1NIQS0xIHdpdGggUlNBIFNpZ25hdHVyZSc7CgogICAgICAgICAgICBjYXNlIHNlbGY6OlBLQ1M5X0VNQUlMOgogICAgICAgICAgICAgICAgcmV0dXJuICdQS0NTICM5IEVtYWlsIEFkZHJlc3MnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlBLQ1M5X1VOU1RSVUNUVVJFRF9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdQS0NTICM5IFVuc3RydWN0dXJlZCBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQS0NTOV9DT05URU5UX1RZUEU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1BLQ1MgIzkgQ29udGVudCBUeXBlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQS0NTOV9NRVNTQUdFX0RJR0VTVDoKICAgICAgICAgICAgICAgIHJldHVybiAnUEtDUyAjOSBNZXNzYWdlIERpZ2VzdCc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UEtDUzlfU0lHTklOR19USU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdQS0NTICM5IFNpZ25pbmcgVGltZSc7CgogICAgICAgICAgICBjYXNlIHNlbGY6OkNPTU1PTl9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdDb21tb24gTmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U1VSTkFNRToKICAgICAgICAgICAgICAgIHJldHVybiAnU3VybmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6U0VSSUFMX05VTUJFUjoKICAgICAgICAgICAgICAgIHJldHVybiAnU2VyaWFsIE51bWJlcic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q09VTlRSWV9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdDb3VudHJ5IE5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkxPQ0FMSVRZX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0xvY2FsaXR5IE5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlNUQVRFX09SX1BST1ZJTkNFX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1N0YXRlIG9yIFByb3ZpbmNlIE5hbWUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OlNUUkVFVF9BRERSRVNTOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdHJlZXQgQWRkcmVzcyc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6T1JHQU5JWkFUSU9OX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ09yZ2FuaXphdGlvbiBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpPVV9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdPcmdhbml6YXRpb24gVW5pdCBOYW1lJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpUSVRMRToKICAgICAgICAgICAgICAgIHJldHVybiAnVGl0bGUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkRFU0NSSVBUSU9OOgogICAgICAgICAgICAgICAgcmV0dXJuICdEZXNjcmlwdGlvbic7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6UE9TVEFMX0FERFJFU1M6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1Bvc3RhbCBBZGRyZXNzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpQT1NUQUxfQ09ERToKICAgICAgICAgICAgICAgIHJldHVybiAnUG9zdGFsIENvZGUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkFVVEhPUklUWV9SRVZPQ0FUSU9OX0xJU1Q6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0F1dGhvcml0eSBSZXZvY2F0aW9uIExpc3QnOwoKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9TVUJKRUNUX0RJUkVDVE9SWV9BVFRSOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdWJqZWN0IGRpcmVjdG9yeSBhdHRyaWJ1dGVzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9TVUJKRUNUX0tFWV9JREVOVElGSUVSOgogICAgICAgICAgICAgICAgcmV0dXJuICdTdWJqZWN0IGtleSBpZGVudGlmaWVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9LRVlfVVNBR0U6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0tleSB1c2FnZSBjZXJ0aWZpY2F0ZSBleHRlbnNpb24nOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX1BSSVZBVEVfS0VZX1VTQUdFX1BFUklPRDoKICAgICAgICAgICAgICAgIHJldHVybiAnUHJpdmF0ZSBrZXkgdXNhZ2UnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX1NVQkpFQ1RfQUxUX05BTUU6CiAgICAgICAgICAgICAgICByZXR1cm4gJ1N1YmplY3QgYWx0ZXJuYXRpdmUgbmFtZSAoU0FOKSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfSVNTVUVSX0FMVF9OQU1FOgogICAgICAgICAgICAgICAgcmV0dXJuICdJc3N1ZXIgYWx0ZXJuYXRpdmUgbmFtZSc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfQkFTSUNfQ09OU1RSQUlOVFM6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0Jhc2ljIGNvbnN0cmFpbnRzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9DUkxfTlVNQkVSOgogICAgICAgICAgICAgICAgcmV0dXJuICdDUkwgbnVtYmVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9SRUFTT05fQ09ERToKICAgICAgICAgICAgICAgIHJldHVybiAnUmVhc29uIGNvZGUnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0lOVkFMSURJVFlfREFURToKICAgICAgICAgICAgICAgIHJldHVybiAnSW52YWxpZGl0eSBjb2RlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9ERUxUQV9DUkxfSU5ESUNBVE9SOgogICAgICAgICAgICAgICAgcmV0dXJuICdEZWx0YSBDUkwgaW5kaWNhdG9yJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9JU1NVSU5HX0RJU1RfUE9JTlQ6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0lzc3VpbmcgZGlzdHJpYnV0aW9uIHBvaW50JzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9DRVJUX0lTU1VFUjoKICAgICAgICAgICAgICAgIHJldHVybiAnQ2VydGlmaWNhdGUgaXNzdWVyJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9OQU1FX0NPTlNUUkFJTlRTOgogICAgICAgICAgICAgICAgcmV0dXJuICdOYW1lIGNvbnN0cmFpbnRzJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpDRVJUX0VYVF9DUkxfRElTVFJJQlVUSU9OX1BPSU5UUzoKICAgICAgICAgICAgICAgIHJldHVybiAnQ1JMIGRpc3RyaWJ1dGlvbiBwb2ludHMnOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0NFUlRfUE9MSUNJRVM6CiAgICAgICAgICAgICAgICByZXR1cm4gJ0NlcnRpZmljYXRlIHBvbGljaWVzICc7CiAgICAgICAgICAgIGNhc2Ugc2VsZjo6Q0VSVF9FWFRfQVVUSE9SSVRZX0tFWV9JREVOVElGSUVSOgogICAgICAgICAgICAgICAgcmV0dXJuICdBdXRob3JpdHkga2V5IGlkZW50aWZpZXInOwogICAgICAgICAgICBjYXNlIHNlbGY6OkNFUlRfRVhUX0VYVEVOREVEX0tFWV9VU0FHRToKICAgICAgICAgICAgICAgIHJldHVybiAnRXh0ZW5kZWQga2V5IHVzYWdlJzsKICAgICAgICAgICAgY2FzZSBzZWxmOjpBVVRIT1JJVFlfSU5GT1JNQVRJT05fQUNDRVNTOgogICAgICAgICAgICAgICAgcmV0dXJuICdDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgSW5mb3JtYXRpb24gQWNjZXNzIChBSUEpJzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBpZiAoJGxvYWRGcm9tV2ViKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRGcm9tV2ViKCRvaWRTdHJpbmcpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG9pZFN0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkRnJvbVdlYigkb2lkU3RyaW5nKQogICAgewogICAgICAgICRjaCA9IGN1cmxfaW5pdCgiaHR0cDovL29pZC1pbmZvLmNvbS9nZXQveyRvaWRTdHJpbmd9Iik7CgogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hFQURFUiwgMCk7CgogICAgICAgICRjb250ZW50cyA9IGN1cmxfZXhlYygkY2gpOwogICAgICAgIGN1cmxfY2xvc2UoJGNoKTsKCiAgICAgICAgLy8gVGhpcyBwYXR0ZXJuIG5lZWRzIHRvIGJlIHVwZGF0ZWQgYXMgc29vbiBhcyB0aGUgd2Vic2l0ZSBsYXlvdXQgb2Ygb2lkLWluZm8uY29tIGNoYW5nZXMKICAgICAgICBwcmVnX21hdGNoX2FsbCgnIzx0dD4oLispXChcZCtcKTwvdHQ+I3NpJywgJGNvbnRlbnRzLCAkb2lkTmFtZSk7CgogICAgICAgIGlmIChlbXB0eSgkb2lkTmFtZVsxXSkpIHsKICAgICAgICAgICAgcmV0dXJuICJ7JG9pZFN0cmluZ30gKHVua25vd24pIjsKICAgICAgICB9CgogICAgICAgICRvaWROYW1lID0gdWNmaXJzdChzdHJ0b2xvd2VyKHByZWdfcmVwbGFjZSgnLyhbQS1aXVthLXpdKS8nLCAnICQxJywgJG9pZE5hbWVbMV1bMF0pKSk7CiAgICAgICAgJG9pZE5hbWUgPSBzdHJfcmVwbGFjZSgnLScsICcgJywgJG9pZE5hbWUpOwoKICAgICAgICByZXR1cm4gInskb2lkTmFtZX0gKHskb2lkU3RyaW5nfSkiOwogICAgfQp9Cg==]]></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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCnVzZSBFeGNlcHRpb247CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCmNsYXNzIFRlbXBsYXRlUGFyc2VyCnsKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkZGF0YQogICAgICogQHBhcmFtIGFycmF5ICR0ZW1wbGF0ZQogICAgICogQHJldHVybiBcRkdcQVNOMVxBU05PYmplY3R8U2VxdWVuY2UKICAgICAqIEB0aHJvd3MgUGFyc2VyRXhjZXB0aW9uIGlmIHRoZXJlIHdhcyBhbiBpc3N1ZSBwYXJzaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJzZUJhc2U2NCgkZGF0YSwgYXJyYXkgJHRlbXBsYXRlKQogICAgewogICAgICAgIC8vIFRPRE8gdGVzdCB3aXRoIGludmFsaWQgZGF0YQogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VCaW5hcnkoYmFzZTY0X2RlY29kZSgkZGF0YSksICR0ZW1wbGF0ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRiaW5hcnkKICAgICAqIEBwYXJhbSBhcnJheSAkdGVtcGxhdGUKICAgICAqIEByZXR1cm4gXEZHXEFTTjFcQVNOT2JqZWN0fFNlcXVlbmNlCiAgICAgKiBAdGhyb3dzIFBhcnNlckV4Y2VwdGlvbiBpZiB0aGVyZSB3YXMgYW4gaXNzdWUgcGFyc2luZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyc2VCaW5hcnkoJGJpbmFyeSwgYXJyYXkgJHRlbXBsYXRlKQogICAgewogICAgICAgICRwYXJzZWRPYmplY3QgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeSk7CgogICAgICAgIGZvcmVhY2ggKCR0ZW1wbGF0ZSBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkdGhpcy0+dmFsaWRhdGUoJHBhcnNlZE9iamVjdCwgJGtleSwgJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGUoQVNOT2JqZWN0ICRvYmplY3QsICRrZXksICR2YWx1ZSkKICAgIHsKICAgICAgICBpZiAoaXNfYXJyYXkoJHZhbHVlKSkgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHlwZUlkKCRrZXksICRvYmplY3QpOwoKICAgICAgICAgICAgLyogQHZhciBDb25zdHJ1Y3QgJG9iamVjdCAqLwogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWUgYXMgJGtleSA9PiAkY2hpbGQpIHsKICAgICAgICAgICAgICAgICR0aGlzLT52YWxpZGF0ZSgkb2JqZWN0LT5jdXJyZW50KCksICRrZXksICRjaGlsZCk7CiAgICAgICAgICAgICAgICAkb2JqZWN0LT5uZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0VHlwZUlkKCR2YWx1ZSwgJG9iamVjdCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXNzZXJ0VHlwZUlkKCRleHBlY3RlZFR5cGVJZCwgQVNOT2JqZWN0ICRvYmplY3QpCiAgICB7CiAgICAgICAgJGFjdHVhbFR5cGUgPSAkb2JqZWN0LT5nZXRUeXBlKCk7CiAgICAgICAgaWYgKCRleHBlY3RlZFR5cGVJZCAhPSAkYWN0dWFsVHlwZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJFeHBlY3RlZCB0eXBlICgkZXhwZWN0ZWRUeXBlSWQpIGRvZXMgbm90IG1hdGNoIGFjdHVhbCB0eXBlICgkYWN0dWFsVHlwZSIpOwogICAgICAgIH0KICAgIH0KfQo=]]></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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKCmNsYXNzIEJpdFN0cmluZyBleHRlbmRzIE9jdGV0U3RyaW5nIGltcGxlbWVudHMgUGFyc2FibGUKewogICAgcHJpdmF0ZSAkbnJPZlVudXNlZEJpdHM7CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IEFTTi4xIEJpdFN0cmluZyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgJHZhbHVlIEVpdGhlciB0aGUgaGV4YWRlY2ltYWwgdmFsdWUgYXMgYSBzdHJpbmcgKHNwYWNlcyBhcmUgYWxsb3dlZCAtIGxlYWRpbmcgMHggaXMgb3B0aW9uYWwpIG9yIGEgbnVtZXJpYyB2YWx1ZQogICAgICogQHBhcmFtIGludCAkbnJPZlVudXNlZEJpdHMgdGhlIG51bWJlciBvZiB1bnVzZWQgYml0cyBpbiB0aGUgbGFzdCBvY3RldCBbb3B0aW9uYWxdLgogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIG5vIHBvc2l0aXZlIG51bWVyaWMgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSwgJG5yT2ZVbnVzZWRCaXRzID0gMCkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR2YWx1ZSk7CgogICAgICAgIGlmICghaXNfbnVtZXJpYygkbnJPZlVudXNlZEJpdHMpIHx8ICRuck9mVW51c2VkQml0cyA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignQml0U3RyaW5nOiBzZWNvbmQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGEgcG9zaXRpdmUgbnVtYmVyIChvciB6ZXJvKSEnKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5uck9mVW51c2VkQml0cyA9ICRuck9mVW51c2VkQml0czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OkJJVFNUUklORzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgLy8gYWRkIG9uZSB0byB0aGUgbGVuZ3RoIGZvciB0aGUgZmlyc3Qgb2N0ZXQgd2hpY2ggZW5jb2RlcyB0aGUgbnVtYmVyIG9mIHVudXNlZCBiaXRzIGluIHRoZSBsYXN0IG9jdGV0CiAgICAgICAgcmV0dXJuIHBhcmVudDo6Y2FsY3VsYXRlQ29udGVudExlbmd0aCgpICsgMTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICAvLyB0aGUgZmlyc3Qgb2N0ZXQgZGV0ZXJtaW5lcyB0aGUgbnVtYmVyIG9mIHVudXNlZCBiaXRzCiAgICAgICAgJG5yT2ZVbnVzZWRCaXRzT2N0ZXQgPSBjaHIoJHRoaXMtPm5yT2ZVbnVzZWRCaXRzKTsKICAgICAgICAkYWN0dWFsQ29udGVudCA9IHBhcmVudDo6Z2V0RW5jb2RlZFZhbHVlKCk7CgogICAgICAgIHJldHVybiAkbnJPZlVudXNlZEJpdHNPY3RldC4kYWN0dWFsQ29udGVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TnVtYmVyT2ZVbnVzZWRCaXRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm5yT2ZVbnVzZWRCaXRzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpCSVRTVFJJTkcsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4LCAyKTsKCiAgICAgICAgJG5yT2ZVbnVzZWRCaXRzID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pOwogICAgICAgICR2YWx1ZSA9IHN1YnN0cigkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4ICsgMSwgJGNvbnRlbnRMZW5ndGggLSAxKTsKCiAgICAgICAgaWYgKCRuck9mVW51c2VkQml0cyA+IDcgfHwgLy8gbm8gbGVzcyB0aGFuIDEgdXNlZCwgb3RoZXJ3aXNlIG5vbi1taW5pbWFsCiAgICAgICAgICAgICgkY29udGVudExlbmd0aCAtIDEpID09IDEgJiYgJG5yT2ZVbnVzZWRCaXRzID4gMCB8fCAvLyBjb250ZW50IGxlbmd0aCBvbmx5IDEsIG5vCiAgICAgICAgICAgIChvcmQoJHZhbHVlW3N0cmxlbigkdmFsdWUpLTFdKSYoKDE8PCRuck9mVW51c2VkQml0cyktMSkpICE9IDAgLy8gdW51c2VkIGJpdHMgc2V0CiAgICAgICAgKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oIkNhbiBub3QgcGFyc2UgYml0IHN0cmluZyB3aXRoIGludmFsaWQgcGFkZGluZyIsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkb2Zmc2V0SW5kZXggKz0gJGNvbnRlbnRMZW5ndGg7CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZihiaW4yaGV4KCR2YWx1ZSksICRuck9mVW51c2VkQml0cyk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgQm9vbGVhbiBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHByaXZhdGUgJHZhbHVlOwoKICAgIC8qKgogICAgICogQHBhcmFtIGJvb2wgJHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6Qk9PTEVBTjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT52YWx1ZSA9PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gY2hyKDB4MDApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiBjaHIoMHhGRik7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50KCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlID09IHRydWUpIHsKICAgICAgICAgICAgcmV0dXJuICdUUlVFJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gJ0ZBTFNFJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6OkJPT0xFQU4sICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDEpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQW4gQVNOLjEgQm9vbGVhbiBzaG91bGQgbm90IGhhdmUgYSBsZW5ndGggb3RoZXIgdGhhbiBvbmUuIEV4dHJhY3RlZCBsZW5ndGggd2FzIHskY29udGVudExlbmd0aH0iLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSk7CiAgICAgICAgJGJvb2xlYW5WYWx1ZSA9ICR2YWx1ZSA9PSAweEZGID8gdHJ1ZSA6IGZhbHNlOwoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHNlbGYoJGJvb2xlYW5WYWx1ZSk7CiAgICAgICAgJHBhcnNlZE9iamVjdC0+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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcVXRpbGl0eVxCaWdJbnRlZ2VyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgSW50ZWdlciBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICR2YWx1ZQogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSB2YWx1ZSBpcyBub3QgbnVtZXJpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKQogICAgewogICAgICAgIGlmIChpc19udW1lcmljKCR2YWx1ZSkgPT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiSW52YWxpZCBWQUxVRSBbeyR2YWx1ZX1dIGZvciBBU04xX0lOVEVHRVIiKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6SU5URUdFUjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmxlbigkdGhpcy0+Z2V0RW5jb2RlZFZhbHVlKCkpOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICR2YWx1ZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZSgkdGhpcy0+dmFsdWUsIDEwKTsKICAgICAgICAkbmVnYXRpdmUgPSAkdmFsdWUtPmNvbXBhcmUoMCkgPCAwOwogICAgICAgIGlmICgkbmVnYXRpdmUpIHsKICAgICAgICAgICAgICR2YWx1ZSA9ICR2YWx1ZS0+YWJzb2x1dGVWYWx1ZSgpOwogICAgICAgICAgICAgJGxpbWl0ID0gMHg4MDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgJGxpbWl0ID0gMHg3ZjsKICAgICAgICB9CgogICAgICAgICRtb2QgPSAweGZmKzE7CiAgICAgICAgJHZhbHVlcyA9IFtdOwogICAgICAgIHdoaWxlKCR2YWx1ZS0+Y29tcGFyZSgkbGltaXQpID4gMCkgewogICAgICAgICAgICAkdmFsdWVzW10gPSAkdmFsdWUtPm1vZHVsdXMoJG1vZCktPnRvSW50ZWdlcigpOwogICAgICAgICAgICAkdmFsdWUgPSAkdmFsdWUtPnNoaWZ0UmlnaHQoOCk7CiAgICAgICAgfQoKICAgICAgICAkdmFsdWVzW10gPSAkdmFsdWUtPm1vZHVsdXMoJG1vZCktPnRvSW50ZWdlcigpOwogICAgICAgICRudW1WYWx1ZXMgPSBjb3VudCgkdmFsdWVzKTsKCiAgICAgICAgaWYgKCRuZWdhdGl2ZSkgewogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbnVtVmFsdWVzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRpXSA9IDB4ZmYgLSAkdmFsdWVzWyRpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbnVtVmFsdWVzOyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRpXSArPSAxOwogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZXNbJGldIDw9IDB4ZmYpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFzc2VydCgkaSAhPSAkbnVtVmFsdWVzIC0gMSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzWyRpXSA9IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCR2YWx1ZXNbJG51bVZhbHVlcyAtIDFdID09IDB4N2YpIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9IDB4ZmY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X3JldmVyc2UoJHZhbHVlcyk7CiAgICAgICAgJHIgPSBwYWNrKCJDKiIsIC4uLiR2YWx1ZXMpOwogICAgICAgIHJldHVybiAkcjsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBlbnN1cmVNaW5pbWFsRW5jb2RpbmcoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCkKICAgIHsKICAgICAgICAvLyBBbGwgdGhlIGZpcnN0IG5pbmUgYml0cyBjYW5ub3QgZXF1YWwgMCBvciAxLCB3aGljaCB3b3VsZAogICAgICAgIC8vIGJlIG5vbi1taW5pbWFsIGVuY29kaW5nIGZvciBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgaW50ZWdlcnMgcmVzcGVjdGl2ZWx5CiAgICAgICAgaWYgKChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSkgPT0gMHgwMCAmJiAob3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsxXSkgJiAweDgwKSA9PSAwKSB8fAogICAgICAgICAgICAob3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0pID09IDB4ZmYgJiYgKG9yZCgkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXgrMV0pICYgMHg4MCkgPT0gMHg4MCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiSW50ZWdlciBub3QgbWluaW1hbGx5IGVuY29kZWQiLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygwKTsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgJHBhcnNlZE9iamVjdC0+Z2V0VHlwZSgpLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCwgMSk7CgogICAgICAgIGlmICgkY29udGVudExlbmd0aCA+IDEpIHsKICAgICAgICAgICAgc2VsZjo6ZW5zdXJlTWluaW1hbEVuY29kaW5nKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KICAgICAgICAkaXNOZWdhdGl2ZSA9IChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSkgJiAweDgwKSAhPSAweDAwOwogICAgICAgICRudW1iZXIgPSBCaWdJbnRlZ2VyOjpjcmVhdGUob3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkgJiAweDdGKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgJGNvbnRlbnRMZW5ndGggLSAxOyAkaSsrKSB7CiAgICAgICAgICAgICRudW1iZXIgPSAkbnVtYmVyLT5tdWx0aXBseSgweDEwMCktPmFkZChvcmQoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4KytdKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGlzTmVnYXRpdmUpIHsKICAgICAgICAgICAgJG51bWJlciA9ICRudW1iZXItPnN1YnRyYWN0KEJpZ0ludGVnZXI6OmNyZWF0ZSgyKS0+dG9Qb3dlcig4ICogJGNvbnRlbnRMZW5ndGggLSAxKSk7CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0ID0gbmV3IHN0YXRpYygoc3RyaW5nKSRudW1iZXIpOwogICAgICAgICRwYXJzZWRPYmplY3QtPnNldENvbnRlbnRMZW5ndGgoJGNvbnRlbnRMZW5ndGgpOwoKICAgICAgICByZXR1cm4gJHBhcnNlZE9iamVjdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/Universal/NullObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgTnVsbE9iamVjdCBleHRlbmRzIEFTTk9iamVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gSWRlbnRpZmllcjo6TlVMTDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAnTlVMTCc7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tQmluYXJ5KCYkYmluYXJ5RGF0YSwgJiRvZmZzZXRJbmRleCA9IDApCiAgICB7CiAgICAgICAgc2VsZjo6cGFyc2VJZGVudGlmaWVyKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleF0sIElkZW50aWZpZXI6Ok5VTEwsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICAkY29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQW4gQVNOLjEgTnVsbCBzaG91bGQgbm90IGhhdmUgYSBsZW5ndGggb3RoZXIgdGhhbiB6ZXJvLiBFeHRyYWN0ZWQgbGVuZ3RoIHdhcyB7JGNvbnRlbnRMZW5ndGh9IiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZigpOwogICAgICAgICRwYXJzZWRPYmplY3QtPnNldENvbnRlbnRMZW5ndGgoMCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxCYXNlMTI4Owp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXEFTTk9iamVjdDsKdXNlIEZHXEFTTjFcUGFyc2FibGU7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CgpjbGFzcyBPYmplY3RJZGVudGlmaWVyIGV4dGVuZHMgQVNOT2JqZWN0IGltcGxlbWVudHMgUGFyc2FibGUKewogICAgcHJvdGVjdGVkICRzdWJJZGVudGlmaWVyczsKICAgIHByb3RlY3RlZCAkdmFsdWU7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCR2YWx1ZSkKICAgIHsKICAgICAgICAkdGhpcy0+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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMVxVbml2ZXJzYWw7Cgp1c2UgRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwoKY2xhc3MgT2N0ZXRTdHJpbmcgZXh0ZW5kcyBBU05PYmplY3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcm90ZWN0ZWQgJHZhbHVlOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgIC8vIHJlbW92ZSBnYXBzIGJldHdlZW4gaGV4IGRpZ2l0cwogICAgICAgICAgICAkdmFsdWUgPSBwcmVnX3JlcGxhY2UoJy9cc3wweC8nLCAnJywgJHZhbHVlKTsKICAgICAgICB9IGVsc2VpZiAoaXNfbnVtZXJpYygkdmFsdWUpKSB7CiAgICAgICAgICAgICR2YWx1ZSA9IGRlY2hleCgkdmFsdWUpOwogICAgICAgIH0gZWxzZWlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ09jdGV0U3RyaW5nOiB1bnJlY29nbml6ZWQgaW5wdXQgdHlwZSEnKTsKICAgICAgICB9CgogICAgICAgIGlmIChzdHJsZW4oJHZhbHVlKSAlIDIgIT0gMCkgewogICAgICAgICAgICAvLyB0cmFuc2Zvcm0gdmFsdWVzIGxpa2UgMUYyIHRvIDAxRjIKICAgICAgICAgICAgJHZhbHVlID0gJzAnLiR2YWx1ZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjYWxjdWxhdGVDb250ZW50TGVuZ3RoKCkKICAgIHsKICAgICAgICByZXR1cm4gc3RybGVuKCR0aGlzLT52YWx1ZSkgLyAyOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRFbmNvZGVkVmFsdWUoKQogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkcmVzdWx0ID0gJyc7CgogICAgICAgIC8vQWN0dWFsIGNvbnRlbnQKICAgICAgICB3aGlsZSAoc3RybGVuKCR2YWx1ZSkgPj0gMikgewogICAgICAgICAgICAvLyBnZXQgdGhlIGhleCB2YWx1ZSBieXRlIGJ5IGJ5dGUgZnJvbSB0aGUgc3RyaW5nIGFuZCBhbmQgYWRkIGl0IHRvIGJpbmFyeSByZXN1bHQKICAgICAgICAgICAgJHJlc3VsdCAuPSBjaHIoaGV4ZGVjKHN1YnN0cigkdmFsdWUsIDAsIDIpKSk7CiAgICAgICAgICAgICR2YWx1ZSA9IHN1YnN0cigkdmFsdWUsIDIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiBzdHJ0b3VwcGVyKCR0aGlzLT52YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJpbmFyeUNvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+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+Y29udGVudExlbmd0aCA9IHNlbGY6OnBhcnNlQ29udGVudExlbmd0aCgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKCiAgICAgICAgJGNoaWxkcmVuID0gW107CiAgICAgICAgJG9jdGV0c1RvUmVhZCA9ICR0aGlzLT5jb250ZW50TGVuZ3RoOwogICAgICAgIHdoaWxlICgkb2N0ZXRzVG9SZWFkID4gMCkgewogICAgICAgICAgICAkbmV3Q2hpbGQgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvY3RldHNUb1JlYWQgLT0gJG5ld0NoaWxkLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgICAgICAgICAgJGNoaWxkcmVuW10gPSAkbmV3Q2hpbGQ7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KC4uLiRjaGlsZHJlbik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKQogICAgewogICAgICAgIHJldHVybiBvcmQoJHRoaXMtPmlkZW50aWZpZXIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJZGVudGlmaWVyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlkZW50aWZpZXI7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Y29udGVudExlbmd0aDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0RW5jb2RlZFZhbHVlKCkKICAgIHsKICAgICAgICByZXR1cm4gJyc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/ASN1/UnknownObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcQVNOMTsKCmNsYXNzIFVua25vd25PYmplY3QgZXh0ZW5kcyBBU05PYmplY3QKewogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICR2YWx1ZTsKCiAgICBwcml2YXRlICRpZGVudGlmaWVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ3xpbnQgJGlkZW50aWZpZXIgRWl0aGVyIHRoZSBmaXJzdCBpZGVudGlmaWVyIG9jdGV0IGFzIGludCBvciBhbGwgaWRlbnRpZmllciBieXRlcyBhcyBhIHN0cmluZwogICAgICogQHBhcmFtIGludCAgICAgICAgJGNvbnRlbnRMZW5ndGgKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRpZGVudGlmaWVyLCAkY29udGVudExlbmd0aCkKICAgIHsKICAgICAgICBpZiAoaXNfaW50KCRpZGVudGlmaWVyKSkgewogICAgICAgICAgICAkaWRlbnRpZmllciA9IGNocigkaWRlbnRpZmllcik7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+aWRlbnRpZmllciA9ICRpZGVudGlmaWVyOwogICAgICAgICR0aGlzLT52YWx1ZSA9ICJVbnBhcnNhYmxlIE9iamVjdCAoeyRjb250ZW50TGVuZ3RofSBieXRlcykiOwogICAgICAgICR0aGlzLT5zZXRDb250ZW50TGVuZ3RoKCRjb250ZW50TGVuZ3RoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG9yZCgkdGhpcy0+aWRlbnRpZmllclswXSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldElkZW50aWZpZXIoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aWRlbnRpZmllcjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50TGVuZ3RoKCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICcnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/BigInteger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIEZHXFV0aWxpdHk7CgovKioKICogQ2xhc3MgQmlnSW50ZWdlcgogKiBVdGlsaXR5IGNsYXNzIHRvIHJlbW92ZSBkZXBlbmRlbmNlIG9uIGEgc2luZ2xlIGxhcmdlIG51bWJlciBsaWJyYXJ5LiBOb3QgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZSwgdGhpcyBjbGFzcyBvbmx5CiAqIGltcGxlbWVudHMgdGhlIGZ1bmN0aW9uYWxpdHkgbmVlZGVkIHRocm91Z2hvdXQgdGhpcyBwcm9qZWN0LgogKgogKiBJbnN0YW5jZXMgYXJlIGltbXV0YWJsZSwgYWxsIG9wZXJhdGlvbnMgcmV0dXJuIGEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHJlc3VsdC4KICoKICogQHBhY2thZ2UgRkdcVXRpbGl0eQogKiBAaW50ZXJuYWwKICovCmFic3RyYWN0IGNsYXNzIEJpZ0ludGVnZXIKewogICAgLyoqCiAgICAgKiBGb3JjZSBhIHByZWZlcmVuY2Ugb24gdGhlIHVuZGVybHlpbmcgYmlnIG51bWJlciBpbXBsZW1lbnRhdGlvbiwgdXNlZnVsIGZvciB0ZXN0aW5nLgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkX3ByZWZlcjsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNldFByZWZlcigkcHJlZmVyID0gbnVsbCkKICAgIHsKICAgICAgICBzZWxmOjokX3ByZWZlciA9ICRwcmVmZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBCaWdJbnRlZ2VyIGluc3RhbmNlIGJhc2VkIG9mZiB0aGUgYmFzZSAxMCBzdHJpbmcgb3IgYW4gaW50ZWdlci4KICAgICAqIEBwYXJhbSBzdHJpbmd8aW50ICR2YWwKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlKCR2YWwpCiAgICB7CiAgICAgICAgaWYgKHNlbGY6OiRfcHJlZmVyKSB7CiAgICAgICAgICAgIHN3aXRjaCAoc2VsZjo6JF9wcmVmZXIpIHsKICAgICAgICAgICAgICAgIGNhc2UgJ2dtcCc6CiAgICAgICAgICAgICAgICAgICAgJHJldCA9IG5ldyBCaWdJbnRlZ2VyR21wKCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdiY21hdGgnOgogICAgICAgICAgICAgICAgICAgICRyZXQgPSBuZXcgQmlnSW50ZWdlckJjbWF0aCgpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFVuZXhwZWN0ZWRWYWx1ZUV4Y2VwdGlvbignVW5rbm93biBudW1iZXIgaW1wbGVtZW50YXRpb246ICcgLiBzZWxmOjokX3ByZWZlcik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGF1dG9kZXRlY3QKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnZ21wX2FkZCcpKSB7CiAgICAgICAgICAgICAgICAkcmV0ID0gbmV3IEJpZ0ludGVnZXJHbXAoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygnYmNhZGQnKSkgewogICAgICAgICAgICAgICAgJHJldCA9IG5ldyBCaWdJbnRlZ2VyQmNtYXRoKCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1JlcXVpcmVzIEdNUCBvciBiY21hdGggZXh0ZW5zaW9uLicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfaW50KCR2YWwpKSB7CiAgICAgICAgICAgICRyZXQtPl9mcm9tSW50ZWdlcigkdmFsKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gc3RyaW5nLCBpZiBub3QgYWxyZWFkeSBvbmUKICAgICAgICAgICAgJHZhbCA9IChzdHJpbmcpJHZhbDsKCiAgICAgICAgICAgIC8vIHZhbGlkYXRlIHN0cmluZwogICAgICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eLT9bMC05XSskLycsICR2YWwpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRXhwZWN0cyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnRlZ2VyLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRyZXQtPl9mcm9tU3RyaW5nKCR2YWwpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBCaWdJbnRlZ2VyIGNvbnN0cnVjdG9yLgogICAgICogUHJldmVudCBkaXJlY3RseSBpbnN0YW50aWF0aW5nIG9iamVjdCwgdXNlIEJpZ0ludGVnZXI6OmNyZWF0ZSBpbnN0ZWFkLgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewoKICAgIH0KCiAgICAvKioKICAgICAqIFN1YmNsYXNzZXMgbXVzdCBwcm92aWRlIGNsb25lIGZ1bmN0aW9uYWxpdHkuCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKTsKCiAgICAvKioKICAgICAqIEFzc2lnbiB0aGUgaW5zdGFuY2UgdmFsdWUgZnJvbSBiYXNlIDEwIHN0cmluZy4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cgogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21TdHJpbmcoJHN0cik7CgogICAgLyoqCiAgICAgKiBBc3NpZ24gdGhlIGluc3RhbmNlIHZhbHVlIGZyb20gYW4gaW50ZWdlciB0eXBlLgogICAgICogQHBhcmFtIGludCAkaW50ZWdlcgogICAgICovCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21JbnRlZ2VyKCRpbnRlZ2VyKTsKCiAgICAvKioKICAgICAqIE11c3QgcHJvdmlkZSBzdHJpbmcgaW1wbGVtZW50YXRpb24gdGhhdCByZXR1cm5zIGJhc2UgMTAgbnVtYmVyLgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTsKCiAgICAvKiBJTkZPUk1BVElPTkFMIEZVTkNUSU9OUyAqLwoKICAgIC8qKgogICAgICogUmV0dXJuIGludGVnZXIsIGlmIHBvc3NpYmxlLiBUaHJvd3MgYW4gZXhjZXB0aW9uIGlmIHRoZSBudW1iZXIgY2FuIG5vdCBiZSByZXByZXNlbnRlZCBhcyBhIG5hdGl2ZSBpbnRlZ2VyLgogICAgICogQHJldHVybiBpbnQKICAgICAqIEB0aHJvd3MgXE92ZXJmbG93RXhjZXB0aW9uCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiB0b0ludGVnZXIoKTsKCiAgICAvKioKICAgICAqIElzIHJlcHJlc2VudGVkIGludGVnZXIgbmVnYXRpdmU/CiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGlzTmVnYXRpdmUoKTsKCiAgICAvKioKICAgICAqIENvbXBhcmUgdGhlIGludGVnZXIgd2l0aCAkbnVtYmVyLCByZXR1cm5zIGEgbmVnYXRpdmUgaW50ZWdlciBpZiAkdGhpcyBpcyBsZXNzIHRoYW4gbnVtYmVyLCByZXR1cm5zIDAgaWYgJHRoaXMgaXMKICAgICAqIGVxdWFsIHRvIG51bWJlciBhbmQgcmV0dXJucyBhIHBvc2l0aXZlIGludGVnZXIgaWYgJHRoaXMgaXMgZ3JlYXRlciB0aGFuIG51bWJlci4KICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyfHN0cmluZ3xpbnQgJG51bWJlcgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUoJG51bWJlcik7CgogICAgLyogTU9ESUZZICovCgogICAgLyoqCiAgICAgKiBBZGQgYW5vdGhlciBpbnRlZ2VyICRiIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlcnxzdHJpbmd8aW50ICRiCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIGFkZCgkYik7CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdCAkYiBmcm9tICR0aGlzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlcnxzdHJpbmd8aW50ICRiCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KCRiKTsKCiAgICAvKioKICAgICAqIE11bHRpcGx5IHZhbHVlLgogICAgICogQHBhcmFtIEJpZ0ludGVnZXJ8c3RyaW5nfGludCAkYgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBseSgkYik7CgogICAgLyoqCiAgICAgKiBUaGUgdmFsdWUgJHRoaXMgbW9kdWx1cyAkYi4KICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyfHN0cmluZ3xpbnQgJGIKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gbW9kdWx1cygkYik7CgogICAgLyoqCiAgICAgKiBSYWlzZSAkdGhpcyB0byB0aGUgcG93ZXIgb2YgJGIgYW5kIHJldHVybnMgdGhlIHJlc3VsdC4KICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyfHN0cmluZ3xpbnQgJGIKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gdG9Qb3dlcigkYik7CgogICAgLyoqCiAgICAgKiBTaGlmdCB0aGUgdmFsdWUgdG8gdGhlIHJpZ2h0IGJ5IGEgc2V0IG51bWJlciBvZiBiaXRzIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuCiAgICAgKiBAcGFyYW0gaW50ICRiaXRzCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHNoaWZ0UmlnaHQoJGJpdHMgPSA4KTsKCiAgICAvKioKICAgICAqIFNoaWZ0IHRoZSB2YWx1ZSB0byB0aGUgbGVmdCBieSBhIHNldCBudW1iZXIgb2YgYml0cyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LgogICAgICogQHBhcmFtIGludCAkYml0cwogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBzaGlmdExlZnQoJGJpdHMgPSA4KTsKCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFic29sdXRlIHZhbHVlLgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIGFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBhYnNvbHV0ZVZhbHVlKCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/BigIntegerBcmath.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIEZHXFV0aWxpdHk7CgovKioKICogQ2xhc3MgQmlnSW50ZWdlckJjbWF0aAogKiBJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGJpZyBudW1iZXJzIHVzaW5nIHRoZSBiY21hdGggbGlicmFyeSB0byBwZXJmb3JtIGxhcmdlIG9wZXJhdGlvbnMuCiAqIEBwYWNrYWdlIEZHXFV0aWxpdHkKICogQGludGVybmFsCiAqLwpjbGFzcyBCaWdJbnRlZ2VyQmNtYXRoIGV4dGVuZHMgQmlnSW50ZWdlcgp7CiAgICBwcm90ZWN0ZWQgJF9zdHI7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY2xvbmUoKQogICAgewogICAgICAgIC8vIG5vdGhpbmcgbmVlZGVkIHRvIGNvcHkKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21TdHJpbmcoJHN0cikKICAgIHsKICAgICAgICAkdGhpcy0+X3N0ciA9IChzdHJpbmcpJHN0cjsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21JbnRlZ2VyKCRpbnRlZ2VyKQogICAgewogICAgICAgICR0aGlzLT5fc3RyID0gKHN0cmluZykkaW50ZWdlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fc3RyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0ludGVnZXIoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y29tcGFyZShQSFBfSU5UX01BWCkgPiAwIHx8ICR0aGlzLT5jb21wYXJlKFBIUF9JTlRfTUlOKSA8IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxPdmVyZmxvd0V4Y2VwdGlvbihzcHJpbnRmKCdDYW4gbm90IHJlcHJlc2VudCAlcyBhcyBpbnRlZ2VyLicsICR0aGlzLT5fc3RyKSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAoaW50KSR0aGlzLT5fc3RyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc05lZ2F0aXZlKCkKICAgIHsKICAgICAgICByZXR1cm4gYmNjb21wKCR0aGlzLT5fc3RyLCAnMCcsIDApIDwgMDsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3Vud3JhcCgkbnVtYmVyKQogICAgewogICAgICAgIGlmICgkbnVtYmVyIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm4gJG51bWJlci0+X3N0cjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRudW1iZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvbXBhcmUoJG51bWJlcikKICAgIHsKICAgICAgICByZXR1cm4gYmNjb21wKCR0aGlzLT5fc3RyLCAkdGhpcy0+X3Vud3JhcCgkbnVtYmVyKSwgMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZCgkYikKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fc3RyID0gYmNhZGQoJHRoaXMtPl9zdHIsICR0aGlzLT5fdW53cmFwKCRiKSwgMCk7CiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KCRiKQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9zdHIgPSBiY3N1YigkdGhpcy0+X3N0ciwgJHRoaXMtPl91bndyYXAoJGIpLCAwKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsdGlwbHkoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3N0ciA9IGJjbXVsKCR0aGlzLT5fc3RyLCAkdGhpcy0+X3Vud3JhcCgkYiksIDApOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2R1bHVzKCRiKQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgIGlmICgkdGhpcy0+aXNOZWdhdGl2ZSgpKSB7CiAgICAgICAgICAgIC8vIGJjbW9kIGhhbmRsZXMgbmVnYXRpdmUgbnVtYmVycyBkaWZmZXJlbnRseQogICAgICAgICAgICAkYiA9ICR0aGlzLT5fdW53cmFwKCRiKTsKICAgICAgICAgICAgJHJldC0+X3N0ciA9IGJjc3ViKCRiLCBiY21vZChiY3N1YignMCcsICR0aGlzLT5fc3RyLCAwKSwgJGIpLCAwKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRyZXQtPl9zdHIgPSBiY21vZCgkdGhpcy0+X3N0ciwgJHRoaXMtPl91bndyYXAoJGIpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvUG93ZXIoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3N0ciA9IGJjcG93KCR0aGlzLT5fc3RyLCAkdGhpcy0+X3Vud3JhcCgkYiksIDApOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaGlmdFJpZ2h0KCRiaXRzID0gOCkKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fc3RyID0gYmNkaXYoJHRoaXMtPl9zdHIsIGJjcG93KCcyJywgJGJpdHMpKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hpZnRMZWZ0KCRiaXRzID0gOCkgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9zdHIgPSBiY211bCgkdGhpcy0+X3N0ciwgYmNwb3coJzInLCAkYml0cykpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhYnNvbHV0ZVZhbHVlKCkKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICBpZiAoLTEgPT09IGJjY29tcCgkdGhpcy0+X3N0ciwgJzAnLCAwKSkgewogICAgICAgICAgICAkcmV0LT5fc3RyID0gYmNzdWIoJzAnLCAkdGhpcy0+X3N0ciwgMCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkcmV0LT5fc3RyID0gJHRoaXMtPl9zdHI7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcmV0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/Utility/BigIntegerGmp.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIEZHXFV0aWxpdHk7CgovKioKICogQ2xhc3MgQmlnSW50ZWdlckdtcAogKiBJbnRlZ2VyIHJlcHJlc2VudGF0aW9uIG9mIGJpZyBudW1iZXJzIHVzaW5nIHRoZSBHTVAgZXh0ZW5zaW9uIHRvIHBlcmZvcm0gb3BlcmF0aW9ucy4KICogQHBhY2thZ2UgRkdcVXRpbGl0eQogKiBAaW50ZXJuYWwKICovCmNsYXNzIEJpZ0ludGVnZXJHbXAgZXh0ZW5kcyBCaWdJbnRlZ2VyCnsKICAgIC8qKgogICAgICogUmVzb3VyY2UgaGFuZGxlLgogICAgICogQHZhciBcR01QCiAgICAgKi8KICAgIHByb3RlY3RlZCAkX3JoOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Nsb25lKCkKICAgIHsKICAgICAgICAkdGhpcy0+X3JoID0gZ21wX2FkZCgkdGhpcy0+X3JoLCAwKTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2Zyb21TdHJpbmcoJHN0cikKICAgIHsKICAgICAgICAkdGhpcy0+X3JoID0gZ21wX2luaXQoJHN0ciwgMTApOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBfZnJvbUludGVnZXIoJGludGVnZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPl9yaCA9IGdtcF9pbml0KCRpbnRlZ2VyLCAxMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgIHJldHVybiBnbXBfc3RydmFsKCR0aGlzLT5fcmgsIDEwKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9JbnRlZ2VyKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmNvbXBhcmUoUEhQX0lOVF9NQVgpID4gMCB8fCAkdGhpcy0+Y29tcGFyZShQSFBfSU5UX01JTikgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcT3ZlcmZsb3dFeGNlcHRpb24oc3ByaW50ZignQ2FuIG5vdCByZXByZXNlbnQgJXMgYXMgaW50ZWdlci4nLCAkdGhpcykpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZ21wX2ludHZhbCgkdGhpcy0+X3JoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNOZWdhdGl2ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIGdtcF9zaWduKCR0aGlzLT5fcmgpID09PSAtMTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gX3Vud3JhcCgkbnVtYmVyKQogICAgewogICAgICAgIGlmICgkbnVtYmVyIGluc3RhbmNlb2Ygc2VsZikgewogICAgICAgICAgICByZXR1cm4gJG51bWJlci0+X3JoOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJG51bWJlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY29tcGFyZSgkbnVtYmVyKQogICAgewogICAgICAgIHJldHVybiBnbXBfY21wKCR0aGlzLT5fcmgsICR0aGlzLT5fdW53cmFwKCRudW1iZXIpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKCRiKQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9yaCA9IGdtcF9hZGQoJHRoaXMtPl9yaCwgJHRoaXMtPl91bndyYXAoJGIpKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3VidHJhY3QoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3JoID0gZ21wX3N1YigkdGhpcy0+X3JoLCAkdGhpcy0+X3Vud3JhcCgkYikpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtdWx0aXBseSgkYikKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fcmggPSBnbXBfbXVsKCR0aGlzLT5fcmgsICR0aGlzLT5fdW53cmFwKCRiKSk7CiAgICAgICAgcmV0dXJuICRyZXQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1vZHVsdXMoJGIpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3JoID0gZ21wX21vZCgkdGhpcy0+X3JoLCAkdGhpcy0+X3Vud3JhcCgkYikpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b1Bvd2VyKCRiKQogICAgewogICAgICAgIGlmICgkYiBpbnN0YW5jZW9mIHNlbGYpIHsKICAgICAgICAgICAgLy8gZ21wX3BvdyBhY2NlcHRzIGp1c3QgYW4gaW50ZWdlcgogICAgICAgICAgICBpZiAoJGItPmNvbXBhcmUoUEhQX0lOVF9NQVgpID4gMCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oJ1VuYWJsZSB0byByYWlzZSB0byBwb3dlciBncmVhdGVyIHRoYW4gUEhQX0lOVF9NQVguJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGIgPSBnbXBfaW50dmFsKCRiLT5fcmgpOwogICAgICAgIH0KICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fcmggPSBnbXBfcG93KCR0aGlzLT5fcmgsICRiKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2hpZnRSaWdodCgkYml0cz04KQogICAgewogICAgICAgICRyZXQgPSBuZXcgc2VsZigpOwogICAgICAgICRyZXQtPl9yaCA9IGdtcF9kaXYoJHRoaXMtPl9yaCwgZ21wX3BvdygyLCAkYml0cykpOwogICAgICAgIHJldHVybiAkcmV0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzaGlmdExlZnQoJGJpdHM9OCkKICAgIHsKICAgICAgICAkcmV0ID0gbmV3IHNlbGYoKTsKICAgICAgICAkcmV0LT5fcmggPSBnbXBfbXVsKCR0aGlzLT5fcmgsIGdtcF9wb3coMiwgJGJpdHMpKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWJzb2x1dGVWYWx1ZSgpCiAgICB7CiAgICAgICAgJHJldCA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHJldC0+X3JoID0gZ21wX2FicygkdGhpcy0+X3JoKTsKICAgICAgICByZXR1cm4gJHJldDsKICAgIH0KfQo=]]></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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXEV4Y2VwdGlvblxQYXJzZXJFeGNlcHRpb247CnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcQVNOT2JqZWN0Owp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcSWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9jdGV0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcWDUwOVxTQU5cU3ViamVjdEFsdGVybmF0aXZlTmFtZXM7CgpjbGFzcyBDZXJ0aWZpY2F0ZUV4dGVuc2lvbnMgZXh0ZW5kcyBTZXQgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcml2YXRlICRpbm5lclNlcXVlbmNlOwogICAgcHJpdmF0ZSAkZXh0ZW5zaW9ucyA9IFtdOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgJHRoaXMtPmlubmVyU2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCR0aGlzLT5pbm5lclNlcXVlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3ViamVjdEFsdGVybmF0aXZlTmFtZXMoU3ViamVjdEFsdGVybmF0aXZlTmFtZXMgJHNhbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmFkZEV4dGVuc2lvbihPSUQ6OkNFUlRfRVhUX1NVQkpFQ1RfQUxUX05BTUUsICRzYW5zKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZEV4dGVuc2lvbigkb2lkU3RyaW5nLCBBU05PYmplY3QgJGV4dGVuc2lvbikKICAgIHsKICAgICAgICAkc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkc2VxdWVuY2UtPmFkZENoaWxkKG5ldyBPYmplY3RJZGVudGlmaWVyKCRvaWRTdHJpbmcpKTsKICAgICAgICAkc2VxdWVuY2UtPmFkZENoaWxkKCRleHRlbnNpb24pOwoKICAgICAgICAkdGhpcy0+aW5uZXJTZXF1ZW5jZS0+YWRkQ2hpbGQoJHNlcXVlbmNlKTsKICAgICAgICAkdGhpcy0+ZXh0ZW5zaW9uc1tdID0gJGV4dGVuc2lvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5leHRlbnNpb25zOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpTRVQsICRvZmZzZXRJbmRleCsrKTsKICAgICAgICBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICR0bXBPZmZzZXQgPSAkb2Zmc2V0SW5kZXg7CiAgICAgICAgJGV4dGVuc2lvbnMgPSBTZXF1ZW5jZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAkdG1wT2Zmc2V0ICs9IDEgKyAkZXh0ZW5zaW9ucy0+Z2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMoKTsKCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgZm9yZWFjaCAoJGV4dGVuc2lvbnMgYXMgJGV4dGVuc2lvbikgewogICAgICAgICAgICBpZiAoJGV4dGVuc2lvbi0+Z2V0VHlwZSgpICE9IElkZW50aWZpZXI6OlNFUVVFTkNFKSB7CiAgICAgICAgICAgICAgICAvL0ZJWE1FIHdyb25nIG9mZnNldCBpbmRleAogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbignQ291bGQgbm90IHBhcnNlIENlcnRpZmljYXRlIEV4dGVuc2lvbnM6IEV4cGVjdGVkIEFTTi4xIFNlcXVlbmNlIGJ1dCBnb3QgJy4kZXh0ZW5zaW9uLT5nZXRUeXBlTmFtZSgpLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkdG1wT2Zmc2V0ICs9IDEgKyAkZXh0ZW5zaW9uLT5nZXROdW1iZXJPZkxlbmd0aE9jdGV0cygpOwogICAgICAgICAgICAkY2hpbGRyZW4gPSAkZXh0ZW5zaW9uLT5nZXRDaGlsZHJlbigpOwogICAgICAgICAgICBpZiAoY291bnQoJGNoaWxkcmVuKSA8IDIpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NvdWxkIG5vdCBwYXJzZSBDZXJ0aWZpY2F0ZSBFeHRlbnNpb25zOiBOZWVkcyBhdCBsZWFzdCB0d28gY2hpbGQgZWxlbWVudHMgcGVyIGV4dGVuc2lvbiBzZXF1ZW5jZSAob2JqZWN0IGlkZW50aWZpZXIgYW5kIG9jdGV0IHN0cmluZyknLCAkdG1wT2Zmc2V0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvKiogQHZhciBcRkdcQVNOMVxBU05PYmplY3QgJG9iamVjdElkZW50aWZpZXIgKi8KICAgICAgICAgICAgJG9iamVjdElkZW50aWZpZXIgPSAkY2hpbGRyZW5bMF07CgogICAgICAgICAgICAvKiogQHZhciBPY3RldFN0cmluZyAkb2N0ZXRTdHJpbmcgKi8KICAgICAgICAgICAgJG9jdGV0U3RyaW5nID0gJGNoaWxkcmVuWzFdOwoKICAgICAgICAgICAgaWYgKCRvYmplY3RJZGVudGlmaWVyLT5nZXRUeXBlKCkgIT0gSWRlbnRpZmllcjo6T0JKRUNUX0lERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NvdWxkIG5vdCBwYXJzZSBDZXJ0aWZpY2F0ZSBFeHRlbnNpb25zOiBFeHBlY3RlZCBBU04uMSBPYmplY3QgSWRlbnRpZmllciBidXQgZ290ICcuJGV4dGVuc2lvbi0+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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxDU1I7Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xYNTA5XENlcnRpZmljYXRlRXh0ZW5zaW9uczsKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxQYXJzYWJsZTsKdXNlIEZHXEFTTjFcQ29uc3RydWN0Owp1c2UgRkdcQVNOMVxJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwoKY2xhc3MgQXR0cmlidXRlcyBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIFBhcnNhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gMHhBMDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkQXR0cmlidXRlKCRvYmplY3RJZGVudGlmaWVyLCBTZXQgJGF0dHJpYnV0ZSkKICAgIHsKICAgICAgICBpZiAoaXNfc3RyaW5nKCRvYmplY3RJZGVudGlmaWVyKSkgewogICAgICAgICAgICAkb2JqZWN0SWRlbnRpZmllciA9IG5ldyBPYmplY3RJZGVudGlmaWVyKCRvYmplY3RJZGVudGlmaWVyKTsKICAgICAgICB9CiAgICAgICAgJGF0dHJpYnV0ZVNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCRvYmplY3RJZGVudGlmaWVyLCAkYXR0cmlidXRlKTsKICAgICAgICAkYXR0cmlidXRlU2VxdWVuY2UtPmdldE51bWJlck9mTGVuZ3RoT2N0ZXRzKCk7ICAvLyBsZW5ndGggYW5kIG51bWJlciBvZiBsZW5ndGggb2N0ZXRzIGlzIGNhbGN1bGF0ZWQKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJGF0dHJpYnV0ZVNlcXVlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21CaW5hcnkoJiRiaW5hcnlEYXRhLCAmJG9mZnNldEluZGV4ID0gMCkKICAgIHsKICAgICAgICBzZWxmOjpwYXJzZUlkZW50aWZpZXIoJGJpbmFyeURhdGFbJG9mZnNldEluZGV4XSwgMHhBMCwgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICRvY3RldHNUb1JlYWQgPSAkY29udGVudExlbmd0aDsKCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgd2hpbGUgKCRvY3RldHNUb1JlYWQgPiAwKSB7CiAgICAgICAgICAgICRpbml0aWFsT2Zmc2V0ID0gJG9mZnNldEluZGV4OyAvLyB1c2VkIHRvIGNhbGN1bGF0ZSBob3cgbXVjaCBiaXRzIGhhdmUgYmVlbiByZWFkCiAgICAgICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpTRVFVRU5DRSwgJG9mZnNldEluZGV4KyspOwogICAgICAgICAgICBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CgogICAgICAgICAgICAkb2JqZWN0SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgICAgICRvaWRTdHJpbmcgPSAkb2JqZWN0SWRlbnRpZmllci0+Z2V0Q29udGVudCgpOwogICAgICAgICAgICBpZiAoJG9pZFN0cmluZyA9PSBPSUQ6OlBLQ1M5X0VYVEVOU0lPTl9SRVFVRVNUKSB7CiAgICAgICAgICAgICAgICAkYXR0cmlidXRlID0gQ2VydGlmaWNhdGVFeHRlbnNpb25zOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGF0dHJpYnV0ZSA9IEFTTk9iamVjdDo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldEluZGV4KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkQXR0cmlidXRlKCRvYmplY3RJZGVudGlmaWVyLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAgJG9jdGV0c1RvUmVhZCAtPSAoJG9mZnNldEluZGV4IC0gJGluaXRpYWxPZmZzZXQpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdC0+c2V0Q29udGVudExlbmd0aCgkY29udGVudExlbmd0aCk7CgogICAgICAgIHJldHVybiAkcGFyc2VkT2JqZWN0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/CSR/CSR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxDU1I7Cgp1c2UgRkdcQVNOMVxPSUQ7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxJbnRlZ2VyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2VxdWVuY2U7CnVzZSBGR1xYNTA5XENlcnRpZmljYXRlU3ViamVjdDsKdXNlIEZHXFg1MDlcQWxnb3JpdGhtSWRlbnRpZmllcjsKdXNlIEZHXFg1MDlcUHVibGljS2V5OwoKY2xhc3MgQ1NSIGV4dGVuZHMgU2VxdWVuY2UKewogICAgY29uc3QgQ1NSX1ZFUlNJT05fTlIgPSAwOwoKICAgIHByb3RlY3RlZCAkc3ViamVjdDsKICAgIHByb3RlY3RlZCAkcHVibGljS2V5OwogICAgcHJvdGVjdGVkICRzaWduYXR1cmU7CiAgICBwcm90ZWN0ZWQgJHNpZ25hdHVyZUFsZ29yaXRobTsKCiAgICBwcm90ZWN0ZWQgJHN0YXJ0U2VxdWVuY2U7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb21tb25OYW1lCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbWFpbAogICAgICogQHBhcmFtIHN0cmluZyAkb3JnYW5pemF0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRsb2NhbGl0eQogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdGUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvdW50cnkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG9yZ2FuaXphdGlvbmFsVW5pdAogICAgICogQHBhcmFtIHN0cmluZyAkcHVibGljS2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaWduYXR1cmUKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNpZ25hdHVyZUFsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGNvbW1vbk5hbWUsICRlbWFpbCwgJG9yZ2FuaXphdGlvbiwgJGxvY2FsaXR5LCAkc3RhdGUsICRjb3VudHJ5LCAkb3JnYW5pemF0aW9uYWxVbml0LCAkcHVibGljS2V5LCAkc2lnbmF0dXJlID0gbnVsbCwgJHNpZ25hdHVyZUFsZ29yaXRobSA9IE9JRDo6U0hBMV9XSVRIX1JTQV9TSUdOQVRVUkUpCiAgICB7CiAgICAgICAgJHRoaXMtPnN1YmplY3QgPSBuZXcgQ2VydGlmaWNhdGVTdWJqZWN0KAogICAgICAgICAgICAkY29tbW9uTmFtZSwKICAgICAgICAgICAgJGVtYWlsLAogICAgICAgICAgICAkb3JnYW5pemF0aW9uLAogICAgICAgICAgICAkbG9jYWxpdHksCiAgICAgICAgICAgICRzdGF0ZSwKICAgICAgICAgICAgJGNvdW50cnksCiAgICAgICAgICAgICRvcmdhbml6YXRpb25hbFVuaXQKICAgICAgICApOwogICAgICAgICR0aGlzLT5wdWJsaWNLZXkgPSAkcHVibGljS2V5OwogICAgICAgICR0aGlzLT5zaWduYXR1cmUgPSAkc2lnbmF0dXJlOwogICAgICAgICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG0gPSAkc2lnbmF0dXJlQWxnb3JpdGhtOwoKICAgICAgICBpZiAoaXNzZXQoJHNpZ25hdHVyZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmNyZWF0ZUNTUlNlcXVlbmNlKCk7CiAgICAgICAgfQogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVDU1JTZXF1ZW5jZSgpCiAgICB7CiAgICAgICAgJHZlcnNpb25OciAgICAgICAgICAgID0gbmV3IEludGVnZXIoc2VsZjo6Q1NSX1ZFUlNJT05fTlIpOwogICAgICAgICRwdWJsaWNLZXkgICAgICAgICAgICA9IG5ldyBQdWJsaWNLZXkoJHRoaXMtPnB1YmxpY0tleSk7CiAgICAgICAgJHNpZ25hdHVyZSAgICAgICAgICAgID0gbmV3IEJpdFN0cmluZygkdGhpcy0+c2lnbmF0dXJlKTsKICAgICAgICAkc2lnbmF0dXJlQWxnb3JpdGhtICAgID0gbmV3IEFsZ29yaXRobUlkZW50aWZpZXIoJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobSk7CgogICAgICAgICRjZXJ0UmVxdWVzdEluZm8gID0gbmV3IFNlcXVlbmNlKCR2ZXJzaW9uTnIsICR0aGlzLT5zdWJqZWN0LCAkcHVibGljS2V5KTsKCiAgICAgICAgLy8gQ2xlYXIgdGhlIHVuZGVybHlpbmcgQ29uc3RydWN0CiAgICAgICAgJHRoaXMtPnJld2luZCgpOwogICAgICAgICR0aGlzLT5jaGlsZHJlbiA9IFtdOwogICAgICAgICR0aGlzLT5hZGRDaGlsZCgkY2VydFJlcXVlc3RJbmZvKTsKICAgICAgICAkdGhpcy0+YWRkQ2hpbGQoJHNpZ25hdHVyZUFsZ29yaXRobSk7CiAgICAgICAgJHRoaXMtPmFkZENoaWxkKCRzaWduYXR1cmUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVTdWJqZWN0KCkKICAgIHsKICAgICAgICAkdmVyc2lvbk5yICAgICAgICAgICAgPSBuZXcgSW50ZWdlcihzZWxmOjpDU1JfVkVSU0lPTl9OUik7CiAgICAgICAgJHB1YmxpY0tleSAgICAgICAgICAgID0gbmV3IFB1YmxpY0tleSgkdGhpcy0+cHVibGljS2V5KTsKCiAgICAgICAgJGNlcnRSZXF1ZXN0SW5mbyAgPSBuZXcgU2VxdWVuY2UoJHZlcnNpb25OciwgJHRoaXMtPnN1YmplY3QsICRwdWJsaWNLZXkpOwogICAgICAgIHJldHVybiAkY2VydFJlcXVlc3RJbmZvLT5nZXRCaW5hcnkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2lnbmF0dXJlKCRzaWduYXR1cmUsICRzaWduYXR1cmVBbGdvcml0aG0gPSBPSUQ6OlNIQTFfV0lUSF9SU0FfU0lHTkFUVVJFKQogICAgewogICAgICAgICR0aGlzLT5zaWduYXR1cmUgPSAkc2lnbmF0dXJlOwogICAgICAgICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG0gPSAkc2lnbmF0dXJlQWxnb3JpdGhtOwoKICAgICAgICAkdGhpcy0+Y3JlYXRlQ1NSU2VxdWVuY2UoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCiAgICB7CiAgICAgICAgJHRtcCA9IGJhc2U2NF9lbmNvZGUoJHRoaXMtPmdldEJpbmFyeSgpKTsKCiAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgc3RybGVuKCR0bXApOyAkaSsrKSB7CiAgICAgICAgICAgIGlmICgoJGkgKyAyKSAlIDY1ID09IDApIHsKICAgICAgICAgICAgICAgICR0bXAgPSBzdWJzdHIoJHRtcCwgMCwgJGkgKyAxKS4iXG4iLnN1YnN0cigkdG1wLCAkaSArIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcmVzdWx0ID0gJy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUgUkVRVUVTVC0tLS0tJy5QSFBfRU9MOwogICAgICAgICRyZXN1bHQgLj0gJHRtcC5QSFBfRU9MOwogICAgICAgICRyZXN1bHQgLj0gJy0tLS0tRU5EIENFUlRJRklDQVRFIFJFUVVFU1QtLS0tLSc7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6Q1NSX1ZFUlNJT05fTlI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yZ2FuaXphdGlvbk5hbWUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3ViamVjdC0+Z2V0T3JnYW5pemF0aW9uKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldExvY2FsTmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdWJqZWN0LT5nZXRMb2NhbGl0eSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdWJqZWN0LT5nZXRTdGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb3VudHJ5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YmplY3QtPmdldENvdW50cnkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0T3JnYW5pemF0aW9uYWxVbml0KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YmplY3QtPmdldE9yZ2FuaXphdGlvbmFsVW5pdCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHVibGljS2V5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmUoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVBbGdvcml0aG0oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlQWxnb3JpdGhtOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/PrivateKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBQcml2YXRlS2V5IGV4dGVuZHMgU2VxdWVuY2UKewogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRoZXhLZXkKICAgICAqIEBwYXJhbSBcRkdcQVNOMVxBU05PYmplY3R8c3RyaW5nICRhbGdvcml0aG1JZGVudGlmaWVyU3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkaGV4S2V5LCAkYWxnb3JpdGhtSWRlbnRpZmllclN0cmluZyA9IE9JRDo6UlNBX0VOQ1JZUFRJT04pCiAgICB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgKICAgICAgICAgICAgbmV3IFNlcXVlbmNlKAogICAgICAgICAgICAgICAgbmV3IE9iamVjdElkZW50aWZpZXIoJGFsZ29yaXRobUlkZW50aWZpZXJTdHJpbmcpLAogICAgICAgICAgICAgICAgbmV3IE51bGxPYmplY3QoKQogICAgICAgICAgICApLAogICAgICAgICAgICBuZXcgQml0U3RyaW5nKCRoZXhLZXkpCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/PublicKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOTsKCnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE9iamVjdElkZW50aWZpZXI7CgpjbGFzcyBQdWJsaWNLZXkgZXh0ZW5kcyBTZXF1ZW5jZQp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGhleEtleQogICAgICogQHBhcmFtIFxGR1xBU04xXEFTTk9iamVjdHxzdHJpbmcgJGFsZ29yaXRobUlkZW50aWZpZXJTdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRoZXhLZXksICRhbGdvcml0aG1JZGVudGlmaWVyU3RyaW5nID0gT0lEOjpSU0FfRU5DUllQVElPTikKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KAogICAgICAgICAgICBuZXcgU2VxdWVuY2UoCiAgICAgICAgICAgICAgICBuZXcgT2JqZWN0SWRlbnRpZmllcigkYWxnb3JpdGhtSWRlbnRpZmllclN0cmluZyksCiAgICAgICAgICAgICAgICBuZXcgTnVsbE9iamVjdCgpCiAgICAgICAgICAgICksCiAgICAgICAgICAgIG5ldyBCaXRTdHJpbmcoJGhleEtleSkKICAgICAgICApOwogICAgfQp9Cg==]]></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/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXFBhcnNhYmxlOwp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwoKY2xhc3MgSVBBZGRyZXNzIGV4dGVuZHMgQVNOT2JqZWN0IGltcGxlbWVudHMgUGFyc2FibGUKewogICAgY29uc3QgSURFTlRJRklFUiA9IDB4ODc7IC8vIG5vdCBzdXJlIHlldCB3aHkgdGhpcyBpcyB0aGUgaWRlbnRpZmllciB1c2VkIGluIFNBTiBleHRlbnNpb25zCgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICR2YWx1ZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlwQWRkcmVzc1N0cmluZykKICAgIHsKICAgICAgICAkdGhpcy0+dmFsdWUgPSAkaXBBZGRyZXNzU3RyaW5nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUeXBlKCkKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6SURFTlRJRklFUjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZTsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsY3VsYXRlQ29udGVudExlbmd0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuIDQ7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgJGlwUGFydHMgPSBleHBsb2RlKCcuJywgJHRoaXMtPnZhbHVlKTsKICAgICAgICAkYmluYXJ5ICA9IGNocigkaXBQYXJ0c1swXSk7CiAgICAgICAgJGJpbmFyeSAuPSBjaHIoJGlwUGFydHNbMV0pOwogICAgICAgICRiaW5hcnkgLj0gY2hyKCRpcFBhcnRzWzJdKTsKICAgICAgICAkYmluYXJ5IC49IGNocigkaXBQYXJ0c1szXSk7CgogICAgICAgIHJldHVybiAkYmluYXJ5OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBzZWxmOjpJREVOVElGSUVSLCAkb2Zmc2V0SW5kZXgrKyk7CiAgICAgICAgJGNvbnRlbnRMZW5ndGggPSBzZWxmOjpwYXJzZUNvbnRlbnRMZW5ndGgoJGJpbmFyeURhdGEsICRvZmZzZXRJbmRleCk7CiAgICAgICAgaWYgKCRjb250ZW50TGVuZ3RoICE9IDQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlckV4Y2VwdGlvbigiQSBGR1xcWDUwOVxTQU5cSVBBZGRyZXNzIHNob3VsZCBoYXZlIGEgY29udGVudCBsZW5ndGggb2YgNC4gRXh0cmFjdGVkIGxlbmd0aCB3YXMgeyRjb250ZW50TGVuZ3RofSIsICRvZmZzZXRJbmRleCk7CiAgICAgICAgfQoKICAgICAgICAkaXBBZGRyZXNzU3RyaW5nID0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSkuJy4nOwogICAgICAgICRpcEFkZHJlc3NTdHJpbmcgLj0gb3JkKCRiaW5hcnlEYXRhWyRvZmZzZXRJbmRleCsrXSk7CgogICAgICAgICRwYXJzZWRPYmplY3QgPSBuZXcgc2VsZigkaXBBZGRyZXNzU3RyaW5nKTsKICAgICAgICAkcGFyc2VkT2JqZWN0LT5nZXRPYmplY3RMZW5ndGgoKTsKCiAgICAgICAgcmV0dXJuICRwYXJzZWRPYmplY3Q7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/lib/X509/SAN/SubjectAlternativeNames.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFBIUEFTTjEgbGlicmFyeS4KICoKICogQ29weXJpZ2h0IMKpIEZyaWVkcmljaCBHcm/Dn2UgPGZyaWVkcmljaC5ncm9zc2VAZ21haWwuY29tPgogKgogKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRQogKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS4KICovCgpuYW1lc3BhY2UgRkdcWDUwOVxTQU47Cgp1c2UgRkdcQVNOMVxFeGNlcHRpb25cUGFyc2VyRXhjZXB0aW9uOwp1c2UgRkdcQVNOMVxBU05PYmplY3Q7CnVzZSBGR1xBU04xXE9JRDsKdXNlIEZHXEFTTjFcUGFyc2FibGU7CnVzZSBGR1xBU04xXElkZW50aWZpZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKCi8qKgogKiBTZWUgc2VjdGlvbiA4LjMuMi4xIG9mIElUVS1UIFguNTA5LgogKi8KY2xhc3MgU3ViamVjdEFsdGVybmF0aXZlTmFtZXMgZXh0ZW5kcyBBU05PYmplY3QgaW1wbGVtZW50cyBQYXJzYWJsZQp7CiAgICBwcml2YXRlICRhbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2U7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGNhbGN1bGF0ZUNvbnRlbnRMZW5ndGgoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlLT5nZXRPYmplY3RMZW5ndGgoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VHlwZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6Ok9DVEVUU1RSSU5HOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGREb21haW5OYW1lKEROU05hbWUgJGRvbWFpbk5hbWUpCiAgICB7CiAgICAgICAgJHRoaXMtPmFsdGVybmF0aXZlTmFtZXNTZXF1ZW5jZS0+YWRkQ2hpbGQoJGRvbWFpbk5hbWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGRJUChJUEFkZHJlc3MgJGlwKQogICAgewogICAgICAgICR0aGlzLT5hbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2UtPmFkZENoaWxkKCRpcCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWx0ZXJuYXRpdmVOYW1lc1NlcXVlbmNlLT5nZXRDb250ZW50KCk7CiAgICB9CgogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEVuY29kZWRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5hbHRlcm5hdGl2ZU5hbWVzU2VxdWVuY2UtPmdldEJpbmFyeSgpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUJpbmFyeSgmJGJpbmFyeURhdGEsICYkb2Zmc2V0SW5kZXggPSAwKQogICAgewogICAgICAgIHNlbGY6OnBhcnNlSWRlbnRpZmllcigkYmluYXJ5RGF0YVskb2Zmc2V0SW5kZXhdLCBJZGVudGlmaWVyOjpPQ1RFVFNUUklORywgJG9mZnNldEluZGV4KyspOwogICAgICAgICRjb250ZW50TGVuZ3RoID0gc2VsZjo6cGFyc2VDb250ZW50TGVuZ3RoKCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwoKICAgICAgICBpZiAoJGNvbnRlbnRMZW5ndGggPCAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lczogVGhlIFNlcXVlbmNlIHdpdGhpbiB0aGUgb2N0ZXQgc3RyaW5nIGFmdGVyIHRoZSBPYmplY3QgaWRlbnRpZmllciAnLk9JRDo6Q0VSVF9FWFRfU1VCSkVDVF9BTFRfTkFNRS4iIGlzIHRvbyBzaG9ydCAoeyRjb250ZW50TGVuZ3RofSBvY3RldHMpIiwgJG9mZnNldEluZGV4KTsKICAgICAgICB9CgogICAgICAgICRvZmZzZXRPZlNlcXVlbmNlID0gJG9mZnNldEluZGV4OwogICAgICAgICRzZXF1ZW5jZSA9IFNlcXVlbmNlOjpmcm9tQmluYXJ5KCRiaW5hcnlEYXRhLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICRvZmZzZXRPZlNlcXVlbmNlICs9ICRzZXF1ZW5jZS0+Z2V0TnVtYmVyT2ZMZW5ndGhPY3RldHMoKSArIDE7CgogICAgICAgIGlmICgkc2VxdWVuY2UtPmdldE9iamVjdExlbmd0aCgpICE9ICRjb250ZW50TGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBQYXJzZXJFeGNlcHRpb24oJ0NhbiBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lczogVGhlIFNlcXVlbmNlIGxlbmd0aCBkb2VzIG5vdCBtYXRjaCB0aGUgbGVuZ3RoIG9mIHRoZSBzdXJyb3VuZGluZyBvY3RldCBzdHJpbmcnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgIH0KCiAgICAgICAgJHBhcnNlZE9iamVjdCA9IG5ldyBzZWxmKCk7CiAgICAgICAgLyoqIEB2YXIgXEZHXEFTTjFcQVNOT2JqZWN0ICRvYmplY3QgKi8KICAgICAgICBmb3JlYWNoICgkc2VxdWVuY2UgYXMgJG9iamVjdCkgewogICAgICAgICAgICBpZiAoJG9iamVjdC0+Z2V0VHlwZSgpID09IEROU05hbWU6OklERU5USUZJRVIpIHsKICAgICAgICAgICAgICAgICRkb21haW5OYW1lID0gRE5TTmFtZTo6ZnJvbUJpbmFyeSgkYmluYXJ5RGF0YSwgJG9mZnNldE9mU2VxdWVuY2UpOwogICAgICAgICAgICAgICAgJHBhcnNlZE9iamVjdC0+YWRkRG9tYWluTmFtZSgkZG9tYWluTmFtZSk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkb2JqZWN0LT5nZXRUeXBlKCkgPT0gSVBBZGRyZXNzOjpJREVOVElGSUVSKSB7CiAgICAgICAgICAgICAgICAkaXAgPSBJUEFkZHJlc3M6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEsICRvZmZzZXRPZlNlcXVlbmNlKTsKICAgICAgICAgICAgICAgICRwYXJzZWRPYmplY3QtPmFkZElQKCRpcCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VyRXhjZXB0aW9uKCdDb3VsZCBub3QgcGFyc2UgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiBPbmx5IEROU05hbWUgYW5kIElQIFNBTnMgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQnLCAkb2Zmc2V0SW5kZXgpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkT2JqZWN0LT5nZXRCaW5hcnkoKTsgLy8gRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgY29udGVudCBvY3RldHMgYW5kIG9iamVjdCBzaXplcyBvbmNlIChqdXN0IHRvIGxldCB0aGUgZXF1YWxpdHkgdW5pdCB0ZXN0cyBwYXNzIDovICkKICAgICAgICByZXR1cm4gJHBhcnNlZE9iamVjdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDEyLTIwMTUgRnJpZWRyaWNoIEdyb8OfZSA8ZnJpZWRyaWNoLmdyb3NzZUBnbWFpbC5jb20+CgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/fgrosse/phpasn1/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQQVNOMQo9PT09PT09CgpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvYWN0aW9ucy93b3JrZmxvd3MvcGhwdW5pdC55bWwvYmFkZ2Uuc3ZnKV0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9hY3Rpb25zL3dvcmtmbG93cy9waHB1bml0LnltbCkKWyFbUEhQIDcgcmVhZHldKGh0dHA6Ly9waHA3cmVhZHkudGltZXNwbGludGVyLmNoL2Zncm9zc2UvUEhQQVNOMS9iYWRnZS5zdmcpXShodHRwczovL3RyYXZpcy1jaS5vcmcvZmdyb3NzZS9QSFBBU04xKQpbIVtDb3ZlcmFnZSBTdGF0dXNdKGh0dHBzOi8vY292ZXJhbGxzLmlvL3JlcG9zL2Zncm9zc2UvUEhQQVNOMS9iYWRnZS5zdmc/YnJhbmNoPW1hc3RlciZzZXJ2aWNlPWdpdGh1YildKGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9mZ3Jvc3NlL1BIUEFTTjE/YnJhbmNoPW1hc3RlcikKClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9mZ3Jvc3NlL3BocGFzbjEvdi9zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbVG90YWwgRG93bmxvYWRzXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL2Zncm9zc2UvcGhwYXNuMS9kb3dubG9hZHMucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbTGF0ZXN0IFVuc3RhYmxlIFZlcnNpb25dKGh0dHBzOi8vcG9zZXIucHVneC5vcmcvZmdyb3NzZS9waHBhc24xL3YvdW5zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2Zncm9zc2UvcGhwYXNuMSkKWyFbTGljZW5zZV0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9mZ3Jvc3NlL3BocGFzbjEvbGljZW5zZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvZmdyb3NzZS9waHBhc24xKQoKLS0tCgo8aDI+PHNwYW4gc3R5bGU9ImNvbG9yOnJlZCI+Tm90aWNlOiBUaGlzIGxpYnJhcnkgaXMgbm8gbG9uZ2VyIGFjdGl2ZWx5IG1haW50YWluZWQhPC9zcGFuPjwvaDI+CklmIHlvdSBhcmUgY3VycmVudGx5IHVzaW5nIFBIUEFTTjEsIHRoaXMgbWlnaHQgbm90IGJlIGFuIGltbWVkaWF0ZSBwcm9ibGVtIGZvciB5b3UsIHNpbmNlIHRoaXMgbGlicmFyeSB3YXMgYWx3YXlzIHJhdGhlciBzdGFibGUuCgpIb3dldmVyLCB5b3UgYXJlIGFkdmlzZWQgdG8gbWlncmF0ZSB0byBhbHRlcm5hdGl2ZSBwYWNrYWdlcyB0byBlbnN1cmUgdGhhdCB5b3VyIGFwcGxpY2F0aW9ucyByZW1haW4gZnVuY3Rpb25hbCBhbHNvIHdpdGggbmV3ZXIgUEhQIHZlcnNpb25zLgoKLS0tCgpBIFBIUCBGcmFtZXdvcmsgdGhhdCBhbGxvd3MgeW91IHRvIGVuY29kZSBhbmQgZGVjb2RlIGFyYml0cmFyeSBbQVNOLjFdWzNdIHN0cnVjdHVyZXMKdXNpbmcgdGhlIFtJVFUtVCBYLjY5MCBFbmNvZGluZyBSdWxlc11bNF0uClRoaXMgZW5jb2RpbmcgaXMgdmVyeSBmcmVxdWVudGx5IHVzZWQgaW4gW1guNTA5IFBLSSBlbnZpcm9ubWVudHNdWzVdIG9yIHRoZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gaGV0ZXJvZ2VuZW91cyBjb21wdXRlciBzeXN0ZW1zLgoKVGhlIEFQSSBhbGxvd3MgeW91IHRvIGVuY29kZSBBU04uMSBzdHJ1Y3R1cmVzIHRvIGNyZWF0ZSBiaW5hcnkgZGF0YSBzdWNoIGFzIGNlcnRpZmljYXRlCnNpZ25pbmcgcmVxdWVzdHMgKENTUiksIFguNTA5IGNlcnRpZmljYXRlcyBvciBjZXJ0aWZpY2F0ZSByZXZvY2F0aW9uIGxpc3RzIChDUkwpLgpQSFBBU04xIGNhbiBhbHNvIHJlYWQgW0JFUiBlbmNvZGVkXVs2XSBiaW5hcnkgZGF0YSBpbnRvIHNlcGFyYXRlIFBIUCBvYmplY3RzIHRoYXQgY2FuIGJlIG1hbmlwdWxhdGVkIGJ5IHRoZSB1c2VyIGFuZCByZWVuY29kZWQgYWZ0ZXJ3YXJkcy4KClRoZSAqKmNoYW5nZWxvZyoqIGNhbiBub3cgYmUgZm91bmQgYXQgW0NIQU5HRUxPRy5tZF0oQ0hBTkdFTE9HLm1kKS4KCiMjIERlcGVuZGVuY2llcwoKUEhQQVNOMSByZXF1aXJlcyBhdCBsZWFzdCBgUEhQIDcuMGAgYW5kIGVpdGhlciB0aGUgYGdtcGAgb3IgYGJjbWF0aGAgZXh0ZW5zaW9uLgpTdXBwb3J0IGZvciBvbGRlciBQSFAgdmVyc2lvbnMgKGkuZS4gUEhQIDUuNikgd2FzIGRyb3BwZWQgc3RhcnRpbmcgd2l0aCBgdjIuMGAuCklmIHlvdSBtdXN0IHVzZSBhbiBvdXRkYXRlZCBQSFAgdmVyc2lvbiBjb25zaWRlciB1c2luZyBbUEhQQVNOIHYxLjVdWzEzXS4KCkZvciB0aGUgbG9hZGluZyBvZiBvYmplY3QgaWRlbnRpZmllciBuYW1lcyBkaXJlY3RseSBmcm9tIHRoZSB3ZWIgW2N1cmxdWzddIGlzIHVzZWQuCgojIyBJbnN0YWxsYXRpb24KClRoZSBwcmVmZXJyZWQgd2F5IHRvIGluc3RhbGwgdGhpcyBsaWJyYXJ5IGlzIHRvIHJlbHkgb24gW0NvbXBvc2VyXVsyXToKCmBgYGJhc2gKJCBjb21wb3NlciByZXF1aXJlIGZncm9zc2UvcGhwYXNuMQpgYGAKCiMjIFVzYWdlCgojIyMgRW5jb2RpbmcgQVNOLjEgU3RydWN0dXJlcwoKUEhQQVNOMSBvZmZlcnMgeW91IGEgY2xhc3MgZm9yIGVhY2ggb2YgdGhlIGltcGxlbWVudGVkIEFTTi4xIHVuaXZlcnNhbCB0eXBlcy4KVGhlIGNvbnN0cnVjdG9ycyBzaG91bGQgYmUgcHJldHR5IHNlbGYgZXhwbGFuYXRvcnkgc28geW91IHNob3VsZCBoYXZlIG5vIGJpZyB0cm91YmxlIGdldHRpbmcgc3RhcnRlZC4KQWxsIGRhdGEgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIFtERVIgZW5jb2RpbmddWzhdCgpgYGBwaHAKdXNlIEZHXEFTTjFcT0lEOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJvb2xlYW47CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxFbnVtZXJhdGVkOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSUE1U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2JqZWN0SWRlbnRpZmllcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFByaW50YWJsZVN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXFNlcXVlbmNlOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcU2V0Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcTnVsbE9iamVjdDsKCiRpbnRlZ2VyID0gbmV3IEludGVnZXIoMTIzNDU2KTsgICAgICAgIAokYm9vbGVhbiA9IG5ldyBCb29sZWFuKHRydWUpOwokZW51bSA9IG5ldyBFbnVtZXJhdGVkKDEpOwokaWE1U3RyaW5nID0gbmV3IElBNVN0cmluZygnSGVsbG8gd29ybGQnKTsKCiRhc25OdWxsID0gbmV3IE51bGxPYmplY3QoKTsKJG9iamVjdElkZW50aWZpZXIxID0gbmV3IE9iamVjdElkZW50aWZpZXIoJzEuMi4yNTAuMS4xNi45Jyk7CiRvYmplY3RJZGVudGlmaWVyMiA9IG5ldyBPYmplY3RJZGVudGlmaWVyKE9JRDo6UlNBX0VOQ1JZUFRJT04pOwokcHJpbnRhYmxlU3RyaW5nID0gbmV3IFByaW50YWJsZVN0cmluZygnRm9vIGJhcicpOwoKJHNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCRpbnRlZ2VyLCAkYm9vbGVhbiwgJGVudW0sICRpYTVTdHJpbmcpOwokc2V0ID0gbmV3IFNldCgkc2VxdWVuY2UsICRhc25OdWxsLCAkb2JqZWN0SWRlbnRpZmllcjEsICRvYmplY3RJZGVudGlmaWVyMiwgJHByaW50YWJsZVN0cmluZyk7CgokbXlCaW5hcnkgID0gJHNlcXVlbmNlLT5nZXRCaW5hcnkoKTsKJG15QmluYXJ5IC49ICRzZXQtPmdldEJpbmFyeSgpOwoKZWNobyBiYXNlNjRfZW5jb2RlKCRteUJpbmFyeSk7CmBgYAoKCiMjIyBEZWNvZGluZyBiaW5hcnkgZGF0YQoKRGVjb2RpbmcgQkVSIGVuY29kZWQgYmluYXJ5IGRhdGEgaXMganVzdCBhcyBlYXN5IGFzIGVuY29kaW5nIGl0OgoKYGBgcGhwCnVzZSBGR1xBU04xXEFTTk9iamVjdDsKCiRiYXNlNjRTdHJpbmcgPSAuLi4KJGJpbmFyeURhdGEgPSBiYXNlNjRfZGVjb2RlKCRiYXNlNjRTdHJpbmcpOyAgICAgICAgCiRhc25PYmplY3QgPSBBU05PYmplY3Q6OmZyb21CaW5hcnkoJGJpbmFyeURhdGEpOwoKCi8vIGRvIHN0dWZmCmBgYAoKSWYgeW91IGFscmVhZHkga25vdyBleGFjdGx5IGhvdyB5b3VyIGV4cGVjdGVkIGRhdGEgc2hvdWxkIGxvb2sgbGlrZSB5b3UgY2FuIHVzZSB0aGUgYEZHXEFTTjFcVGVtcGxhdGVQYXJzZXJgOgoKYGBgcGhwCnVzZSBGR1xBU04xXFRlbXBsYXRlUGFyc2VyOwoKLy8gZmlyc3QgZGVmaW5lIHlvdXIgdGVtcGxhdGUKJHRlbXBsYXRlID0gWwogICAgSWRlbnRpZmllcjo6U0VRVUVOQ0UgPT4gWwogICAgICAgIElkZW50aWZpZXI6OlNFVCA9PiBbCiAgICAgICAgICAgIElkZW50aWZpZXI6Ok9CSkVDVF9JREVOVElGSUVSLAogICAgICAgICAgICBJZGVudGlmaWVyOjpTRVFVRU5DRSA9PiBbCiAgICAgICAgICAgICAgICBJZGVudGlmaWVyOjpJTlRFR0VSLAogICAgICAgICAgICAgICAgSWRlbnRpZmllcjo6QklUU1RSSU5HLAogICAgICAgICAgICBdCiAgICAgICAgXQogICAgXQpdOwoKLy8gaWYgeW91ciBiaW5hcnkgZGF0YSBpcyBub3QgbWF0Y2hpbmcgdGhlIHRlbXBsYXRlIHlvdSBwcm92aWRlZCB0aGlzIHdpbGwgdGhyb3cgYW4gYFxFeGNlcHRpb25gOgokcGFyc2VyID0gbmV3IFRlbXBsYXRlUGFyc2VyKCk7CiRvYmplY3QgPSAkcGFyc2VyLT5wYXJzZUJpbmFyeSgkZGF0YSwgJHRlbXBsYXRlKTsKCi8vIHRoZXJlIGlzIGFsc28gYSBjb252ZW5pZW5jZSBmdW5jdGlvbiBpZiB5b3UgcGFyc2UgYmluYXJ5IGRhdGEgZnJvbSBiYXNlNjQ6CiRvYmplY3QgPSAkcGFyc2VyLT5wYXJzZUJhc2U2NCgkZGF0YSwgJHRlbXBsYXRlKTsKYGBgCgpZb3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIG1ha2Ugc3VyZSB5b3VyIGRhdGEgaGFzIGV4YWN0bHkgdGhlIGZvcm1hdCB5b3UgYXJlIGV4cGVjdGluZy4KCiMjIyBOYXZpZ2F0aW5nIGRlY29kZWQgZGF0YQoKQWxsIGNvbnN0cnVjdGVkIGNsYXNzZXMgKGkuZS4gYFNlcXVlbmNlYCBhbmQgYFNldGApIGNhbiBiZSBuYXZpZ2F0ZWQgYnkgYXJyYXkgYWNjZXNzIG9yIHVzaW5nIGFuIGl0ZXJhdG9yLgpZb3UgY2FuIGZpbmQgZXhhbXBsZXMKW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9mZ3Jvc3NlL1BIUEFTTjEvYmxvYi9mNjQ0MmNhZGRhOWQzNmYzNTE4YzczN2UzMmYyODMwMGE1ODhiNzc3L3Rlc3RzL0FTTjEvVW5pdmVyc2FsL1NlcXVlbmNlVGVzdC5waHAjTDE0OC0xNDgpLApbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9ibG9iL2Y2NDQyY2FkZGE5ZDM2ZjM1MThjNzM3ZTMyZjI4MzAwYTU4OGI3NzcvdGVzdHMvQVNOMS9Vbml2ZXJzYWwvU2VxdWVuY2VUZXN0LnBocCNMMTIxKSBhbmQgCltoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL2Jsb2IvZjY0NDJjYWRkYTlkMzZmMzUxOGM3MzdlMzJmMjgzMDBhNTg4Yjc3Ny90ZXN0cy9BU04xL1RlbXBsYXRlUGFyc2VyVGVzdC5waHAjTDQ1KS4KCgojIyMgR2l2ZSBtZSBtb3JlIGV4YW1wbGVzIQoKVG8gc2VlIHNvbWUgZXhhbXBsZSB1c2FnZSBvZiB0aGUgQVBJIGNsYXNzZXMgb3Igc29tZSBnZW5lcmF0ZWQgb3V0cHV0IGNoZWNrIG91dCB0aGUgW2V4YW1wbGVzXShodHRwczovL2dpdGh1Yi5jb20vZmdyb3NzZS9QSFBBU04xL3RyZWUvbWFzdGVyL2V4YW1wbGVzKS4KCgojIyMgSG93IGRvIEkgY29udHJpYnV0ZT8KClRoaXMgcHJvamVjdCBpcyBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgdGh1cyBkb2VzIG5vdCBhY2NlcHQgYW55IG5ldyBjb250cmlidXRpb25zLgoKIyMjIFRoYW5rcwoKVG8gW2FsbCBjb250cmlidXRvcnNdWzFdIHNvIGZhciEKCiMjIExpY2Vuc2UKClRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgW01JVCBMaWNlbnNlXShMSUNFTlNFKS4KClsxXTogaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9ncmFwaHMvY29udHJpYnV0b3JzClsyXTogaHR0cHM6Ly9nZXRjb21wb3Nlci5vcmcvClszXTogaHR0cDovL3d3dy5pdHUuaW50L0lUVS1UL2FzbjEvCls0XTogaHR0cDovL3d3dy5pdHUuaW50L0lUVS1UL3JlY29tbWVuZGF0aW9ucy9yZWMuYXNweD9yZWM9eC42OTAKWzVdOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1guNTA5Cls2XTogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YLjY5MCNCRVJfZW5jb2RpbmcKWzddOiBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vYm9vay5jdXJsLnBocApbOF06IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvWC42OTAjREVSX2VuY29kaW5nCls5XTogaHR0cHM6Ly9zdHlsZWNpLmlvClsxMF06IGh0dHBzOi8vY292ZXJhbGxzLmlvL2dpdGh1Yi9mZ3Jvc3NlL1BIUEFTTjEKWzExXTogaHR0cHM6Ly9naXRodWIuY29tL2Zncm9zc2UvUEhQQVNOMS9ibG9iL21hc3Rlci90ZXN0cy9BU04xL1RlbXBsYXRlUGFyc2VyVGVzdC5waHAjTDE2ClsxMl06IGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZC9mb3J1bS9waHBhc24xClsxM106IGh0dHBzOi8vcGFja2FnaXN0Lm9yZy9wYWNrYWdlcy9mZ3Jvc3NlL3BocGFzbjEjMS41LjIK]]></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[IyBDaGFuZ2UgTG9nCgpQbGVhc2UgcmVmZXIgdG8gW1VQR1JBRElOR10oVVBHUkFESU5HLm1kKSBndWlkZSBmb3IgdXBncmFkaW5nIHRvIGEgbWFqb3IgdmVyc2lvbi4KCiMjIDcuMTAuMCAtIDIwMjUtMDgtMjMKCiMjIyBBZGRlZAoKLSBTdXBwb3J0IGZvciBQSFAgOC41CgojIyMgQ2hhbmdlZAoKLSBBZGp1c3RlZCBgZ3V6emxlaHR0cC9wcm9taXNlc2AgdmVyc2lvbiBjb25zdHJhaW50IHRvIGBeMi4zYAotIEFkanVzdGVkIGBndXp6bGVodHRwL3BzcjdgIHZlcnNpb24gY29uc3RyYWludCB0byBgXjIuOGAKCgojIyA3LjkuMyAtIDIwMjUtMDMtMjcKCiMjIyBDaGFuZ2VkCgotIFJlbW92ZSBleHBsaWNpdCBjb250ZW50LWxlbmd0aCBoZWFkZXIgZm9yIEdFVCByZXF1ZXN0cwotIEltcHJvdmUgY29tcGF0aWJpbGl0eSB3aXRoIGJhZCBzZXJ2ZXJzIGZvciBib29sZWFuIGNvb2tpZSB2YWx1ZXMKCgojIyA3LjkuMiAtIDIwMjQtMDctMjQKCiMjIyBGaXhlZAoKLSBBZGp1c3RlZCBoYW5kbGVyIHNlbGVjdGlvbiB0byB1c2UgY1VSTCBpZiBpdHMgdmVyc2lvbiBpcyA3LjIxLjIgb3IgaGlnaGVyLCByYXRoZXIgdGhhbiA3LjM0LjAKCgojIyA3LjkuMSAtIDIwMjQtMDctMTkKCiMjIyBGaXhlZAoKLSBGaXggVExTIDEuMyBjaGVjayBmb3IgSFRUUC8yIHJlcXVlc3RzCgoKIyMgNy45LjAgLSAyMDI0LTA3LTE4CgojIyMgQ2hhbmdlZAoKLSBJbXByb3ZlIHByb3RvY29sIHZlcnNpb24gY2hlY2tzIHRvIHByb3ZpZGUgZmVlZGJhY2sgYXJvdW5kIHVuc3VwcG9ydGVkIHByb3RvY29scwotIE9ubHkgc2VsZWN0IHRoZSBjVVJMIGhhbmRsZXIgYnkgZGVmYXVsdCBpZiA3LjM0LjAgb3IgaGlnaGVyIGlzIGxpbmtlZAotIEltcHJvdmVkIGBDdXJsTXVsdGlIYW5kbGVyYCB0byBhdm9pZCBidXN5IHdhaXQgaWYgcG9zc2libGUKLSBEcm9wcGVkIHN1cHBvcnQgZm9yIEVPTCBgZ3V6emxlaHR0cC9wc3I3YCB2MQotIEltcHJvdmVkIFVSSSB1c2VyIGluZm8gcmVkYWN0aW9uIGluIGVycm9ycwoKIyMgNy44LjIgLSAyMDI0LTA3LTE4CgojIyMgQWRkZWQKCi0gU3VwcG9ydCBmb3IgUEhQIDguNAoKCiMjIDcuOC4xIC0gMjAyMy0xMi0wMwoKIyMjIENoYW5nZWQKCi0gVXBkYXRlZCBsaW5rcyBpbiBkb2NzIHRvIHRoZWlyIGNhbm9uaWNhbCB2ZXJzaW9ucwotIFJlcGxhY2VkIGBjYWxsX3VzZXJfZnVuYypgIHdpdGggbmF0aXZlIGNhbGxzCgoKIyMgNy44LjAgLSAyMDIzLTA4LTI3CgojIyMgQWRkZWQKCi0gU3VwcG9ydCBmb3IgUEhQIDguMwotIEFkZGVkIGF1dG9tYXRpYyBjbG9zaW5nIG9mIGhhbmRsZXMgb24gYEN1cmxGYWN0b3J5YCBvYmplY3QgZGVzdHJ1Y3Rpb24KCgojIyA3LjcuMSAtIDIwMjMtMDgtMjcKCiMjIyBDaGFuZ2VkCgotIFJlbW92ZSB0aGUgbmVlZCBmb3IgYEFsbG93RHluYW1pY1Byb3BlcnRpZXNgIGluIGBDdXJsTXVsdGlIYW5kbGVyYAoKCiMjIDcuNy4wIC0gMjAyMy0wNS0yMQoKIyMjIEFkZGVkCgotIFN1cHBvcnQgYGd1enpsZWh0dHAvcHJvbWlzZXNgIHYyCgoKIyMgNy42LjEgLSAyMDIzLTA1LTE1CgojIyMgRml4ZWQKCi0gRml4IGBTZXRDb29raWU6OmZyb21TdHJpbmdgIE1heEFnZSBkZXByZWNhdGlvbiB3YXJuaW5nIGFuZCBza2lwIGludmFsaWQgTWF4QWdlIHZhbHVlcwoKCiMjIDcuNi4wIC0gMjAyMy0wNS0xNAoKIyMjIEFkZGVkCgotIFN1cHBvcnQgZm9yIHNldHRpbmcgdGhlIG1pbmltdW0gVExTIHZlcnNpb24gaW4gYSB1bmlmaWVkIHdheQotIEFwcGx5IG9uIHJlcXVlc3QgdGhlIHZlcnNpb24gc2V0IGluIG9wdGlvbnMgcGFyYW1ldGVycwoKCiMjIDcuNS4yIC0gMjAyMy0wNS0xNAoKIyMjIEZpeGVkCgotIEZpeGVkIHNldCBjb29raWUgY29uc3RydWN0b3IgdmFsaWRhdGlvbgotIEZpeGVkIGhhbmRsaW5nIG9mIGZpbGVzIHdpdGggYCcwJ2AgYm9keQoKIyMjIENoYW5nZWQKCi0gQ29ycmVjdGVkIGRvY3MgYW5kIGRlZmF1bHQgY29ubmVjdCB0aW1lb3V0IHZhbHVlIHRvIDMwMCBzZWNvbmRzCgoKIyMgNy41LjEgLSAyMDIzLTA0LTE3CgojIyMgRml4ZWQKCi0gRml4ZWQgYE5PX1BST1hZYCBzZXR0aW5ncyBzbyB0aGF0IHNldHRpbmcgdGhlIGBwcm94eWAgb3B0aW9uIHRvIGBub2Agb3ZlcnJpZGVzIHRoZSBlbnYgdmFyaWFibGUKCiMjIyBDaGFuZ2VkCgotIEFkanVzdGVkIGBndXp6bGVodHRwL3BzcjdgIHZlcnNpb24gY29uc3RyYWludCB0byBgXjEuOS4xIHx8IF4yLjQuNWAKCgojIyA3LjUuMCAtIDIwMjItMDgtMjgKCiMjIyBBZGRlZAoKLSBTdXBwb3J0IFBIUCA4LjIKLSBBZGQgcmVxdWVzdCB0byBkZWxheSBjbG9zdXJlIHBhcmFtcwoKCiMjIDcuNC41IC0gMjAyMi0wNi0yMAoKIyMjIEZpeGVkCgoqIEZpeCBjaGFuZ2UgaW4gcG9ydCBzaG91bGQgYmUgY29uc2lkZXJlZCBhIGNoYW5nZSBpbiBvcmlnaW4KKiBGaXggYENVUkxPUFRfSFRUUEFVVEhgIG9wdGlvbiBub3QgY2xlYXJlZCBvbiBjaGFuZ2Ugb2Ygb3JpZ2luCgoKIyMgNy40LjQgLSAyMDIyLTA2LTA5CgojIyMgRml4ZWQKCiogRml4IGZhaWx1cmUgdG8gc3RyaXAgQXV0aG9yaXphdGlvbiBoZWFkZXIgb24gSFRUUCBkb3duZ3JhZGUKKiBGaXggZmFpbHVyZSB0byBzdHJpcCB0aGUgQ29va2llIGhlYWRlciBvbiBjaGFuZ2UgaW4gaG9zdCBvciBIVFRQIGRvd25ncmFkZQoKCiMjIDcuNC4zIC0gMjAyMi0wNS0yNQoKIyMjIEZpeGVkCgoqIEZpeCBjcm9zcy1kb21haW4gY29va2llIGxlYWthZ2UKCgojIyA3LjQuMiAtIDIwMjItMDMtMjAKCiMjIyBGaXhlZAoKLSBSZW1vdmUgY3VybCBhdXRoIG9uIGNyb3NzLWRvbWFpbiByZWRpcmVjdHMgdG8gYWxpZ24gd2l0aCB0aGUgQXV0aG9yaXphdGlvbiBIVFRQIGhlYWRlcgotIFJlamVjdCBub24tSFRUUCBzY2hlbWVzIGluIFN0cmVhbUhhbmRsZXIKLSBTZXQgYSBkZWZhdWx0IHNzbC5wZWVyX25hbWUgY29udGV4dCBpbiBTdHJlYW1IYW5kbGVyIHRvIGFsbG93IGBmb3JjZV9pcF9yZXNvbHZlYAoKCiMjIDcuNC4xIC0gMjAyMS0xMi0wNgoKIyMjIENoYW5nZWQKCi0gUmVwbGFjZWQgaW1wbGljaXQgVVJJIHRvIHN0cmluZyBjb2VyY2lvbiBbIzI5NDZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjk0NikKLSBBbGxvdyBgc3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHNgIHZlcnNpb24gMyBbIzI5NjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjk2MSkKCiMjIyBGaXhlZAoKLSBPbmx5IGNsb3NlIGN1cmwgaGFuZGxlIGlmIGl0J3MgZG9uZSBbIzI5NTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjk1MCkKCgojIyA3LjQuMCAtIDIwMjEtMTAtMTgKCiMjIyBBZGRlZAoKLSBTdXBwb3J0IFBIUCA4LjEgWyMyOTI5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI5MjkpLCBbIzI5MzldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjkzOSkKLSBTdXBwb3J0IGBwc3IvbG9nYCB2ZXJzaW9uIDIgYW5kIDMgWyMyOTQzXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI5NDMpCgojIyMgRml4ZWQKCi0gTWFrZSBzdXJlIHdlIGFsd2F5cyBjYWxsIGByZXN0b3JlX2Vycm9yX2hhbmRsZXIoKWAgWyMyOTE1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI5MTUpCi0gRml4IHByb2dyZXNzIHBhcmFtZXRlciB0eXBlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB0aGUgY1VSTCBhbmQgc3RyZWFtIGhhbmRsZXJzIFsjMjkzNl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTM2KQotIFRocm93IGBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb25gIHdoZW4gYW4gaW5jb3JyZWN0IGBoZWFkZXJzYCBhcnJheSBpcyBwcm92aWRlZCBbIzI5MTZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjkxNiksIFsjMjk0Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTQyKQoKIyMjIENoYW5nZWQKCi0gQmUgbW9yZSBzdHJpY3Qgd2l0aCB0eXBlcyBbIzI5MTRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjkxNCksIFsjMjkxN10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yOTE3KSwgWyMyOTE5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI5MTkpLCBbIzI5NDVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjk0NSkKCgojIyA3LjMuMCAtIDIwMjEtMDMtMjMKCiMjIyBBZGRlZAoKLSBTdXBwb3J0IGZvciBERVIgYW5kIFAxMiBjZXJ0aWZpY2F0ZXMgWyMyNDEzXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0MTMpCi0gU3VwcG9ydCB0aGUgY1VSTCAoaHR0cDovLykgc2NoZW1lIGZvciBTdHJlYW1IYW5kbGVyIHByb3hpZXMgWyMyODUwXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI4NTApCi0gU3VwcG9ydCBmb3IgYGd1enpsZWh0dHAvcHNyNzpeMi4wYCBbIzI4NzhdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjg3OCkKCiMjIyBGaXhlZAoKLSBIYW5kbGUgZXhjZXB0aW9ucyBvbiBpbnZhbGlkIGhlYWRlciBjb25zaXN0ZW50bHkgYmV0d2VlbiBQSFAgdmVyc2lvbnMgYW5kIGhhbmRsZXJzIFsjMjg3Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yODcyKQoKCiMjIDcuMi4wIC0gMjAyMC0xMC0xMAoKIyMjIEFkZGVkCgotIFN1cHBvcnQgZm9yIFBIUCA4IFsjMjcxMl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNzEyKSwgWyMyNzE1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI3MTUpLCBbIzI3ODldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjc4OSkKLSBTdXBwb3J0IHBhc3NpbmcgYSBib2R5IHN1bW1hcml6ZXIgdG8gdGhlIGh0dHAgZXJyb3JzIG1pZGRsZXdhcmUgWyMyNzk1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI3OTUpCgojIyMgRml4ZWQKCi0gSGFuZGxlIGV4Y2VwdGlvbnMgZHVyaW5nIHJlc3BvbnNlIGNyZWF0aW9uIFsjMjU5MV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNTkxKQotIEZpeCBDVVJMT1BUX0VOQ09ESU5HIG5vdCB0byBiZSBvdmVyd3JpdHRlbiBbIzI1OTVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjU5NSkKLSBNYWtlIHN1cmUgdGhlIFJlcXVlc3QgYWx3YXlzIGhhcyBhIGJvZHkgb2JqZWN0IFsjMjgwNF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yODA0KQoKIyMjIENoYW5nZWQKCi0gVGhlIGBUb29NYW55UmVkaXJlY3RzRXhjZXB0aW9uYCBoYXMgYSByZXNwb25zZSBbIzI2NjBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjY2MCkKLSBBdm9pZCAiZnVuY3Rpb25zIiBmcm9tIGRlcGVuZGVuY2llcyBbIzI3MTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjcxMikKCiMjIyBEZXByZWNhdGVkCgotIFVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlIEdVWlpMRV9DVVJMX1NFTEVDVF9USU1FT1VUIFsjMjc4Nl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNzg2KQoKCiMjIDcuMS4xIC0gMjAyMC0wOS0zMAoKIyMjIEZpeGVkCgotIEluY29ycmVjdCBFT0YgZGV0ZWN0aW9uIGZvciByZXNwb25zZSBib2R5IHN0cmVhbXMgb24gV2luZG93cy4KCiMjIyBDaGFuZ2VkCgotIFdlIGRvbnQgY29ubmVjdCBjdXJsIGBzaW5rYCBvbiBIRUFEIHJlcXVlc3RzLgotIFJlbW92ZWQgc29tZSBQSFAgNSB3b3JrYXJvdW5kcwoKCiMjIDcuMS4wIC0gMjAyMC0wOS0yMgoKIyMjIEFkZGVkCgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VGb3JtYXR0ZXJJbnRlcmZhY2VgCgojIyMgRml4ZWQKCi0gRml4ZWQgaXNzdWUgdGhhdCBjYXVzZWQgY29va2llcyB3aXRoIG5vIHZhbHVlIG5vdCB0byBiZSBzdG9yZWQuCi0gT24gcmVkaXJlY3RzLCB3ZSBhbGxvdyBhbGwgc2FmZSBtZXRob2RzIGxpa2UgR0VULCBIRUFEIGFuZCBPUFRJT05TLgotIEZpeGVkIGxvZ2dpbmcgb24gZW1wdHkgcmVzcG9uc2VzLgotIE1ha2Ugc3VyZSBNZXNzYWdlRm9ybWF0dGVyOjpmb3JtYXQgcmV0dXJucyBzdHJpbmcKCiMjIyBEZXByZWNhdGVkCgotIEFsbCBmdW5jdGlvbnMgaW4gYEd1enpsZUh0dHBgIGhhcyBiZWVuIGRlcHJlY2F0ZWQuIFVzZSBzdGF0aWMgbWV0aG9kcyBvbiBgVXRpbHNgIGluc3RlYWQuCi0gYENsaWVudEludGVyZmFjZTo6Z2V0Q29uZmlnKClgCi0gYENsaWVudDo6Z2V0Q29uZmlnKClgCi0gYENsaWVudDo6X19jYWxsKClgCi0gYFV0aWxzOjpkZWZhdWx0Q2FCdW5kbGUoKWAKLSBgQ3VybEZhY3Rvcnk6OkxPV19DVVJMX1ZFUlNJT05fTlVNQkVSYAoKCiMjIDcuMC4xIC0gMjAyMC0wNi0yNwoKKiBGaXggbXVsdGlwbHkgZGVmaW5lZCBmdW5jdGlvbnMgZmF0YWwgZXJyb3IgWyMyNjk5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI2OTkpCgoKIyMgNy4wLjAgLSAyMDIwLTA2LTI3CgpObyBjaGFuZ2VzIHNpbmNlIDcuMC4wLXJjMS4KCgojIyA3LjAuMC1yYzEgLSAyMDIwLTA2LTE1CgojIyMgQ2hhbmdlZAoKKiBVc2UgZXJyb3IgbGV2ZWwgZm9yIGxvZ2dpbmcgZXJyb3JzIGluIE1pZGRsZXdhcmUgWyMyNjI5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI2MjkpCiogRGlzYWJsZWQgSUROIHN1cHBvcnQgYnkgZGVmYXVsdCBhbmQgcmVxdWlyZSBleHQtaW50bCB0byB1c2UgaXQgWyMyNjc1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI2NzUpCgoKIyMgNy4wLjAtYmV0YTIgLSAyMDIwLTA1LTI1CgojIyMgQWRkZWQKCiogVXNpbmcgYFV0aWxzYCBjbGFzcyBpbnN0ZWFkIG9mIGZ1bmN0aW9ucyBpbiB0aGUgYEd1enpsZUh0dHBgIG5hbWVzcGFjZS4gWyMyNTQ2XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI1NDYpCiogYENsaWVudEludGVyZmFjZTo6TUFKT1JfVkVSU0lPTmAgWyMyNTgzXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI1ODMpCgojIyMgQ2hhbmdlZAoKKiBBdm9pZCB0aGUgYGdldGVudmAgZnVuY3Rpb24gd2hlbiB1bnNhZmUgWyMyNTMxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI1MzEpCiogQWRkZWQgcmVhbCBjbGllbnQgbWV0aG9kcyBbIzI1MjldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjUyOSkKKiBBdm9pZCBmdW5jdGlvbnMgZHVlIHRvIGdsb2JhbCBpbnN0YWxsIGNvbmZsaWN0cyBbIzI1NDZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjU0NikKKiBVc2UgU3ltZm9ueSBpbnRsLWlkbiBwb2x5ZmlsbCBbIzI1NTBdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjU1MCkKKiBBZGRpbmcgbWV0aG9kcyBmb3IgSFRUUCB2ZXJicyBsaWtlIGBDbGllbnQ6OmdldCgpYCwgYENsaWVudDo6aGVhZCgpYCwgYENsaWVudDo6cGF0Y2goKWAgZXRjIFsjMjUyOV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNTI5KQoqIGBDb25uZWN0RXhjZXB0aW9uYCBleHRlbmRzIGBUcmFuc2ZlckV4Y2VwdGlvbmAgWyMyNTQxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI1NDEpCiogVXBkYXRlZCB0aGUgZGVmYXVsdCBVc2VyIEFnZW50IHRvICJHdXp6bGVIdHRwLzciIFsjMjY1NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNjU0KQoKIyMjIEZpeGVkCgoqIFZhcmlvdXMgaW50bCBpY3UgaXNzdWVzIFsjMjYyNl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNjI2KQoKIyMjIFJlbW92ZWQKCiogUG9vbCBvcHRpb24gYHBvb2xfc2l6ZWAgWyMyNTI4XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI1MjgpCgoKIyMgNy4wLjAtYmV0YTEgLSAyMDE5LTEyLTMwCgpUaGUgZGlmZiBtaWdodCBsb29rIHZlcnkgYmlnIGJ1dCA5NSUgb2YgR3V6emxlIHVzZXJzIHdpbGwgYmUgYWJsZSB0byB1cGdyYWRlIHdpdGhvdXQgbW9kaWZpY2F0aW9uLgpQbGVhc2Ugc2VlIFt0aGUgdXBncmFkZSBkb2N1bWVudF0oVVBHUkFESU5HLm1kKSB0aGF0IGRlc2NyaWJlcyBhbGwgQkMgYnJlYWtpbmcgY2hhbmdlcy4KCiMjIyBBZGRlZAoKKiBJbXBsZW1lbnQgUFNSLTE4IGFuZCBkcm9wcGVkIFBIUCA1IHN1cHBvcnQgWyMyNDIxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0MjEpIFsjMjQ3NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDc0KQoqIFBIUCA3IHR5cGVzIFsjMjQ0Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDQyKSBbIzI0NDldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ0OSkgWyMyNDY2XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NjYpIFsjMjQ5N10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDk3KSBbIzI0OTldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ5OSkKKiBJRE4gc3VwcG9ydCBmb3IgcmVkaXJlY3RzIFsyNDI0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0MjQpCgojIyMgQ2hhbmdlZAoKKiBEb250IGFsbG93IHBhc3NpbmcgbnVsbCBhcyB0aGlyZCBhcmd1bWVudCB0byBgQmFkUmVzcG9uc2VFeGNlcHRpb246Ol9fY29uc3RydWN0KClgIFsjMjQyN10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDI3KQoqIFVzZSBTQVBJIGNvbnN0YW50IGluc3RlYWQgb2YgbWV0aG9kIGNhbGwgWyMyNDUwXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NTApCiogVXNlIG5hdGl2ZSBmdW5jdGlvbiBpbnZvY2F0aW9uIFsjMjQ0NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDQ0KQoqIEJldHRlciBkZWZhdWx0cyBmb3IgUEhQIGluc3RhbGxhdGlvbnMgd2l0aCBvbGQgSUNVIGxpYiBbMjQ1NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDU0KQoqIEFkZGVkIHZpc2liaWxpdHkgdG8gYWxsIGNvbnN0YW50cyBbIzI0NjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ2MikKKiBEb250IGFsbG93IHBhc3NpbmcgYG51bGxgIGFzIFVSSSB0byBgQ2xpZW50OjpyZXF1ZXN0KClgIGFuZCBgQ2xpZW50OjpyZXF1ZXN0QXN5bmMoKWAgWyMyNDYxXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NjEpCiogV2lkZW4gdGhlIGV4Y2VwdGlvbiBhcmd1bWVudCB0byB0aHJvd2FibGUgWyMyNDk1XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0OTUpCgojIyMgRml4ZWQKCiogTG9nZ2luZyB3aGVuIFByb21pc2UgcmVqZWN0ZWQgd2l0aCBhIHN0cmluZyBbIzIzMTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjMxMSkKCiMjIyBSZW1vdmVkCgoqIENsYXNzIGBTZWVrRXhjZXB0aW9uYCBbIzIxNjJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjE2MikKKiBgUmVxdWVzdEV4Y2VwdGlvbjo6Z2V0UmVzcG9uc2VCb2R5U3VtbWFyeSgpYCBbIzI0MjVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQyNSkKKiBgQ29va2llSmFyOjpnZXRDb29raWVWYWx1ZSgpYCBbIzI0MzNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQzMykKKiBgdXJpX3RlbXBsYXRlKClgIGFuZCBgVXJpVGVtcGxhdGVgIFsjMjQ0MF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDQwKQoqIFJlcXVlc3Qgb3B0aW9ucyBgc2F2ZV90b2AgYW5kIGBleGNlcHRpb25zYCBbIzI0NjRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQ2NCkKCgojIyA2LjUuMiAtIDIwMTktMTItMjMKCiogaWRuX3RvX2FzY2lpKCkgZml4IGZvciBvbGQgUEhQIHZlcnNpb25zIFsjMjQ4OV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yNDg5KQoKCiMjIDYuNS4xIC0gMjAxOS0xMi0yMQoKKiBCZXR0ZXIgZGVmYXVsdHMgZm9yIFBIUCBpbnN0YWxsYXRpb25zIHdpdGggb2xkIElDVSBsaWIgWyMyNDU0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzI0NTQpCiogSUROIHN1cHBvcnQgZm9yIHJlZGlyZWN0cyBbIzI0MjRdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjQyNCkKCgojIyA2LjUuMCAtIDIwMTktMTItMDcKCiogSW1wcm92ZW1lbnQ6IEFkZGVkIHN1cHBvcnQgZm9yIHJlc2V0IGludGVybmFsIHF1ZXVlIGluIE1vY2tIYW5kbGVyLiBbIzIxNDNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjE0MykKKiBJbXByb3ZlbWVudDogQWRkZWQgc3VwcG9ydCB0byBwYXNzIGFyYml0cmFyeSBvcHRpb25zIHRvIGBjdXJsX211bHRpX2luaXRgLiBbIzIyODddKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjI4NykKKiBGaXg6IEdyYWNlZnVsbHkgaGFuZGxlIHBhc3NpbmcgYG51bGxgIHRvIHRoZSBgaGVhZGVyYCBvcHRpb24uIFsjMjEzMl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMTMyKQoqIEZpeDogYFJldHJ5TWlkZGxld2FyZWAgZGlkIG5vdCBkbyBleHBvbmVudGlhbCBkZWxheSBiZXR3ZWVuIHJldGlyZXMgZHVlIHVuaXQgbWlzbWF0Y2guIFsjMjEzMl0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMTMyKQoqIEZpeDogUHJldmVudCB1bmRlZmluZWQgb2Zmc2V0IHdoZW4gdXNpbmcgYXJyYXkgZm9yIHNzbF9rZXkgb3B0aW9ucy4gWyMyMzQ4XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIzNDgpCiogRGVwcmVjYXRlZCBgQ2xpZW50SW50ZXJmYWNlOjpWRVJTSU9OYAoKCiMjIDYuNC4xIC0gMjAxOS0xMC0yMwoKKiBObyBgZ3V6emxlLnBoYXJgIHdhcyBjcmVhdGVkIGluIDYuNC4wIGR1ZSBleHBpcmVkIEFQSSB0b2tlbi4gVGhpcyByZWxlYXNlIHdpbGwgZml4IHRoYXQKKiBBZGRlZCBgcGFyZW50OjpfX2NvbnN0cnVjdCgpYCB0byBgRmlsZUNvb2tpZUphcmAgYW5kIGBTZXNzaW9uQ29va2llSmFyYAoKCiMjIDYuNC4wIC0gMjAxOS0xMC0yMwoKKiBJbXByb3ZlbWVudDogSW1wcm92ZWQgZXJyb3IgbWVzc2FnZXMgd2hlbiB1c2luZyBjdXJsIDwgNy4yMS4yIFsjMjEwOF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMTA4KQoqIEZpeDogVGVzdCBpZiByZXNwb25zZSBpcyByZWFkYWJsZSBiZWZvcmUgcmV0dXJuaW5nIGEgc3VtbWFyeSBpbiBgUmVxdWVzdEV4Y2VwdGlvbjo6Z2V0UmVzcG9uc2VCb2R5U3VtbWFyeSgpYCBbIzIwODFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjA4MSkKKiBGaXg6IEFkZCBzdXBwb3J0IGZvciBHVVpaTEVfQ1VSTF9TRUxFQ1RfVElNRU9VVCBlbnZpcm9ubWVudCB2YXJpYWJsZSBbIzIxNjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjE2MSkKKiBJbXByb3ZlbWVudDogQWRkZWQgYEd1enpsZUh0dHBcRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbmAgWyMyMTYzXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIxNjMpCiogSW1wcm92ZW1lbnQ6IEFkZGVkIGBHdXp6bGVIdHRwXF9jdXJyZW50X3RpbWUoKWAgdG8gdXNlIGBocnRpbWUoKWAgaWYgdGhhdCBmdW5jdGlvbiBleGlzdHMuIFsjMjI0Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMjQyKQoqIEltcHJvdmVtZW50OiBBZGRlZCBjdXJsJ3MgYGFwcGNvbm5lY3RfdGltZWAgaW4gYFRyYW5zZmVyU3RhdHNgIFsjMjI4NF0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMjg0KQoqIEltcHJvdmVtZW50OiBNYWtlIEd1enpsZUV4Y2VwdGlvbiBleHRlbmQgVGhyb3dhYmxlIHdoZXJldmVyIGl0J3MgYXZhaWxhYmxlIFsjMjI3M10oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMjczKQoqIEZpeDogUHJldmVudCBjb25jdXJyZW50IHdyaXRlcyB0byBmaWxlIHdoZW4gc2F2aW5nIGBDb29raWVKYXJgIFsjMjMzNV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMzM1KQoqIEltcHJvdmVtZW50OiBVcGRhdGUgYE1vY2tIYW5kbGVyYCBzbyB3ZSBjYW4gdGVzdCB0cmFuc2ZlciB0aW1lIFsjMjM2Ml0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8yMzYyKQoKCiMjIDYuMy4zIC0gMjAxOC0wNC0yMgoKKiBGaXg6IERlZmF1bHQgaGVhZGVycyB3aGVuIGRlY29kZV9jb250ZW50IGlzIHNwZWNpZmllZAoKCiMjIDYuMy4yIC0gMjAxOC0wMy0yNgoKKiBGaXg6IFJlbGVhc2UgcHJvY2VzcwoKCiMjIDYuMy4xIC0gMjAxOC0wMy0yNgoKKiBCdWcgZml4OiBQYXJzaW5nIDAgZXBvY2ggZXhwaXJ5IHRpbWVzIGluIGNvb2tpZXMgWyMyMDE0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzIwMTQpCiogSW1wcm92ZW1lbnQ6IEJldHRlciBDb25uZWN0RXhjZXB0aW9uIGRldGVjdGlvbiBbIzIwMTJdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjAxMikKKiBCdWcgZml4OiBNYWxmb3JtZWQgZG9tYWluIHRoYXQgY29udGFpbnMgYSAiLyIgWyMxOTk5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE5OTkpCiogQnVnIGZpeDogVW5kZWZpbmVkIG9mZnNldCB3aGVuIGEgY29va2llIGhhcyBubyBmaXJzdCBrZXktdmFsdWUgcGFpciBbIzE5OThdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTk5OCkKKiBJbXByb3ZlbWVudDogU3VwcG9ydCBQSFBVbml0IDYgWyMxOTUzXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE5NTMpCiogQnVnIGZpeDogU3VwcG9ydCBlbXB0eSBoZWFkZXJzIFsjMTkxNV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xOTE1KQoqIEJ1ZyBmaXg6IElnbm9yZSBjYXNlIGR1cmluZyBoZWFkZXIgbW9kaWZpY2F0aW9ucyBbIzE5MTZdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTkxNikKCisgTWlub3IgY29kZSBjbGVhbnVwcywgZG9jdW1lbnRhdGlvbiBmaXhlcyBhbmQgY2xhcmlmaWNhdGlvbnMuCgoKIyMgNi4zLjAgLSAyMDE3LTA2LTIyCgoqIEZlYXR1cmU6IGZvcmNlIElQIHJlc29sdXRpb24gKGlwdjQgb3IgaXB2NikgWyMxNjA4XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2MDgpLCBbIzE2NTldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTY1OSkKKiBJbXByb3ZlbWVudDogRG9uJ3QgaW5jbHVkZSBzdW1tYXJ5IGluIGV4Y2VwdGlvbiBtZXNzYWdlIHdoZW4gYm9keSBpcyBlbXB0eSBbIzE2MjFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTYyMSkKKiBJbXByb3ZlbWVudDogSGFuZGxlIGBvbl9oZWFkZXJzYCBvcHRpb24gaW4gTW9ja0hhbmRsZXIgWyMxNTgwXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE1ODApCiogSW1wcm92ZW1lbnQ6IEFkZGVkIFNVU0UgTGludXggQ0EgcGF0aCBbIzE2MDldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy8xNjA5KQoqIEltcHJvdmVtZW50OiBVc2UgY2xhc3MgcmVmZXJlbmNlIGZvciBnZXR0aW5nIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBpbnN0ZWFkIG9mIHVzaW5nIGhhcmRjb2RlZCBzdHJpbmdzIFsjMTY0MV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjQxKQoqIEZlYXR1cmU6IEFkZGVkIGByZWFkX3RpbWVvdXRgIG9wdGlvbiBbIzE2MTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTYxMSkKKiBCdWcgZml4OiBQSFAgNy54IGZpeGVzIFsjMTY4NV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNjg1KSwgWyMxNjg2XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2ODYpLCBbIzE4MTFdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTgxMSkKKiBEZXByZWNhdGlvbjogQmFkUmVzcG9uc2VFeGNlcHRpb24gaW5zdGFudGlhdGlvbiB3aXRob3V0IGEgcmVzcG9uc2UgWyMxNjQyXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2NDIpCiogRmVhdHVyZTogQWRkZWQgTlRMTSBhdXRoIFsjMTU2OV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNTY5KQoqIEZlYXR1cmU6IFRyYWNrIHJlZGlyZWN0IEhUVFAgc3RhdHVzIGNvZGVzIFsjMTcxMV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNzExKQoqIEltcHJvdmVtZW50OiBDaGVjayBoYW5kbGVyIHR5cGUgZHVyaW5nIGNvbnN0cnVjdGlvbiBbIzE3NDVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTc0NSkKKiBJbXByb3ZlbWVudDogQWx3YXlzIGluY2x1ZGUgdGhlIENvbnRlbnQtTGVuZ3RoIGlmIHRoZXJlJ3MgYSBib2R5IFsjMTcyMV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNzIxKQoqIEZlYXR1cmU6IEFkZGVkIGNvbnZlbmllbmNlIG1ldGhvZCB0byBhY2Nlc3MgYSBjb29raWUgYnkgbmFtZSBbIzEzMThdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTMxOCkKKiBCdWcgZml4OiBGaWxsIGBDVVJMT1BUX0NBUEFUSGAgYW5kIGBDVVJMT1BUX0NBSU5GT2AgcHJvcGVybHkgWyMxNjg0XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE2ODQpCiogSW1wcm92ZW1lbnQ6ICAJVXNlIGBcR3V6emxlSHR0cFxQcm9taXNlXHJlamVjdGlvbl9mb3JgIGZ1bmN0aW9uIGluc3RlYWQgb2Ygb2JqZWN0IGluaXQgWyMxODI3XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE4MjcpCgorIE1pbm9yIGNvZGUgY2xlYW51cHMsIGRvY3VtZW50YXRpb24gZml4ZXMgYW5kIGNsYXJpZmljYXRpb25zLgoKCiMjIDYuMi4zIC0gMjAxNy0wMi0yOAoKKiBGaXggZGVwcmVjYXRpb25zIHdpdGggZ3V6emxlL3BzcjcgdmVyc2lvbiAxLjQKCgojIyA2LjIuMiAtIDIwMTYtMTAtMDgKCiogQWxsb3cgdG8gcGFzcyBudWxsYWJsZSBSZXNwb25zZSB0byBkZWxheSBjYWxsYWJsZQoqIE9ubHkgYWRkIHNjaGVtZSB3aGVuIGhvc3QgaXMgcHJlc2VudAoqIEZpeCBkcmFpbiBjYXNlIHdoZXJlIGNvbnRlbnQtbGVuZ3RoIGlzIHRoZSBsaXRlcmFsIHN0cmluZyB6ZXJvCiogT2JmdXNjYXRlIGluLVVSTCBjcmVkZW50aWFscyBpbiBleGNlcHRpb25zCgoKIyMgNi4yLjEgLSAyMDE2LTA3LTE4CgoqIEFkZHJlc3MgSFRUUF9QUk9YWSBzZWN1cml0eSB2dWxuZXJhYmlsaXR5LCBDVkUtMjAxNi01Mzg1OgogIGh0dHBzOi8vaHR0cG94eS5vcmcvCiogRml4aW5nIHRpbWVvdXQgYnVnIHdpdGggU3RyZWFtSGFuZGxlcjoKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE0ODgKKiBPbmx5IHJlYWQgdXAgdG8gYENvbnRlbnQtTGVuZ3RoYCBpbiBQSFAgU3RyZWFtSGFuZGxlciB0byBhdm9pZCB0aW1lb3V0cyB3aGVuCiAgYSBzZXJ2ZXIgZG9lcyBub3QgaG9ub3IgYENvbm5lY3Rpb246IGNsb3NlYC4KKiBJZ25vcmUgVVJJIGZyYWdtZW50IHdoZW4gc2VuZGluZyByZXF1ZXN0cy4KCgojIyA2LjIuMCAtIDIwMTYtMDMtMjEKCiogRmVhdHVyZTogYWRkZWQgYEd1enpsZUh0dHBcanNvbl9lbmNvZGVgIGFuZCBgR3V6emxlSHR0cFxqc29uX2RlY29kZWAuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzg5CiogQnVnIGZpeDogRml4IHNsZWVwIGNhbGN1bGF0aW9uIHdoZW4gd2FpdGluZyBmb3IgZGVsYXllZCByZXF1ZXN0cy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEzMjQKKiBGZWF0dXJlOiBNb3JlIGZsZXhpYmxlIGhpc3RvcnkgY29udGFpbmVycy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEzNzMKKiBCdWcgZml4OiBkZWZlciBzaW5rIHN0cmVhbSBvcGVuaW5nIGluIFN0cmVhbUhhbmRsZXIuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzc3CiogQnVnIGZpeDogZG8gbm90IGF0dGVtcHQgdG8gZXNjYXBlIGNvb2tpZSB2YWx1ZXMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNDA2CiogRmVhdHVyZTogcmVwb3J0IG9yaWdpbmFsIGNvbnRlbnQgZW5jb2RpbmcgYW5kIGxlbmd0aCBvbiBkZWNvZGVkIHJlc3BvbnNlcy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzE0MDkKKiBCdWcgZml4OiByZXdpbmQgc2Vla2FibGUgcmVxdWVzdCBib2RpZXMgYmVmb3JlIGRpc3BhdGNoaW5nIHRvIGNVUkwuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xNDIyCiogQnVnIGZpeDogcHJvdmlkZSBhbiBlbXB0eSBzdHJpbmcgdG8gYGh0dHBfYnVpbGRfcXVlcnlgIGZvciBISFZNIHdvcmthcm91bmQuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMzY3CgoKIyMgNi4xLjEgLSAyMDE1LTExLTIyCgoqIEJ1ZyBmaXg6IFByb3h5Ojp3cmFwU3luYygpIG5vdyBjb3JyZWN0bHkgcHJveGllcyB0byB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2NvbW1pdC85MTFiY2JjOGI0MzRhZGNlNjRlMjIzYTZkMWQxNGU5YThmNjNlNGU0CiogRmVhdHVyZTogSGFuZGxlclN0YWNrIGlzIG5vdyBtb3JlIGdlbmVyaWMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvY29tbWl0L2YyMTAyOTQxMzMxY2RhNTQ0NzQ1ZWVkZDk3ZmM4ZmQ0NmUxZWUzM2UKKiBCdWcgZml4OiBzZXR0aW5nIHZlcmlmeSB0byBmYWxzZSBpbiB0aGUgU3RyZWFtSGFuZGxlciBub3cgZGlzYWJsZXMgcGVlcgogIHZlcmlmaWNhdGlvbi4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzEyNTYKKiBGZWF0dXJlOiBNaWRkbGV3YXJlIG5vdyB1c2VzIGFuIGV4Y2VwdGlvbiBmYWN0b3J5LCBpbmNsdWRpbmcgbW9yZSBlcnJvcgogIGNvbnRleHQuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTI4MgoqIEZlYXR1cmU6IGJldHRlciBzdXBwb3J0IGZvciBkaXNhYmxlZCBmdW5jdGlvbnMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjg3CiogQnVnIGZpeDogZml4ZWQgcmVncmVzc2lvbiB3aGVyZSBNb2NrSGFuZGxlciB3YXMgbm90IHVzaW5nIGBzaW5rYC4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyOTIKCgojIyA2LjEuMCAtIDIwMTUtMDktMDgKCiogRmVhdHVyZTogQWRkZWQgdGhlIGBvbl9zdGF0c2AgcmVxdWVzdCBvcHRpb24gdG8gcHJvdmlkZSBhY2Nlc3MgdG8gdHJhbnNmZXIKICBzdGF0aXN0aWNzIGZvciByZXF1ZXN0cy4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjAyCiogRmVhdHVyZTogQWRkZWQgdGhlIGFiaWxpdHkgdG8gcGVyc2lzdCBzZXNzaW9uIGNvb2tpZXMgaW4gQ29va2llSmFycy4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExOTUKKiBGZWF0dXJlOiBTb21lIGNvbXBhdGliaWxpdHkgdXBkYXRlcyBmb3IgR29vZ2xlIEFQUCBFbmdpbmUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMTYKKiBGZWF0dXJlOiBBZGRlZCBzdXBwb3J0IGZvciBOT19QUk9YWSB0byBwcmV2ZW50IHRoZSB1c2Ugb2YgYSBwcm94eSBiYXNlZCBvbgogIGEgc2ltcGxlIHNldCBvZiBydWxlcy4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMTk3CiogRmVhdHVyZTogQ29va2llcyBjYW4gbm93IGNvbnRhaW4gc3F1YXJlIGJyYWNrZXRzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIzNwoqIEJ1ZyBmaXg6IE5vdyBjb3JyZWN0bHkgcGFyc2luZyBgPWAgaW5zaWRlIG9mIHF1b3RlcyBpbiBDb29raWVzLgogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIzMgoqIEJ1ZyBmaXg6IEN1c290bSBjVVJMIG9wdGlvbnMgbm93IGNvcnJlY3RseSBvdmVycmlkZSBjdXJsIG9wdGlvbnMgb2YgdGhlCiAgc2FtZSBuYW1lLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzEyMjEKKiBCdWcgZml4OiBDb250ZW50LVR5cGUgaGVhZGVyIGlzIG5vdyBhZGRlZCB3aGVuIHVzaW5nIGFuIGV4cGxpY2l0bHkgcHJvdmlkZWQKICBtdWx0aXBhcnQgYm9keS4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjE4CiogQnVnIGZpeDogTm93IGlnbm9yaW5nIFNldC1Db29raWUgaGVhZGVycyB0aGF0IGhhdmUgbm8gbmFtZS4KKiBCdWcgZml4OiBSZWFzb24gcGhyYXNlIGlzIG5vIGxvbmdlciBjYXN0IHRvIGFuIGludCBpbiBzb21lIGNhc2VzIGluIHRoZQogIGNVUkwgaGFuZGxlci4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMTg3CiogQnVnIGZpeDogUmVtb3ZlIHRoZSBBdXRob3JpemF0aW9uIGhlYWRlciB3aGVuIHJlZGlyZWN0aW5nIGlmIHRoZSBIb3N0CiAgaGVhZGVyIGNoYW5nZXMuIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMTIwNwoqIEJ1ZyBmaXg6IENvb2tpZSBwYXRoIG1hdGNoaW5nIGZpeGVzCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzExMjkKKiBCdWcgZml4OiBGaXhpbmcgdGhlIGNVUkwgYGJvZHlfYXNfc3RyaW5nYCBzZXR0aW5nCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC8xMjAxCiogQnVnIGZpeDogcXVvdGVzIGFyZSBubyBsb25nZXIgc3RyaXBwZWQgd2hlbiBwYXJzaW5nIGNvb2tpZXMuCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzExNzIKKiBCdWcgZml4OiBgZm9ybV9wYXJhbXNgIGFuZCBgcXVlcnlgIG5vdyBhbHdheXMgdXNlcyB0aGUgYCZgIHNlcGFyYXRvci4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExNjMKKiBCdWcgZml4OiBBZGRpbmcgYSBDb250ZW50LUxlbmd0aCB0byBQSFAgc3RyZWFtIHdyYXBwZXIgcmVxdWVzdHMgaWYgbm90IHNldC4KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzExODkKCgojIyA2LjAuMiAtIDIwMTUtMDctMDQKCiogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgY3VybCBoYW5kbGVycyBpbiB3aGljaCByZWZlcmVuY2VzIHRvIGNhbGxiYWNrcwogIHdlcmUgbm90IGJlaW5nIHJlbW92ZWQgYnkgYGN1cmxfcmVzZXRgLgoqIENvb2tpZXMgYXJlIG5vdyBleHRyYWN0ZWQgcHJvcGVybHkgYmVmb3JlIHJlZGlyZWN0cy4KKiBDb29raWVzIG5vdyBhbGxvdyBtb3JlIGNoYXJhY3RlciByYW5nZXMuCiogRGVjb2RlZCBDb250ZW50LUVuY29kaW5nIHJlc3BvbnNlcyBhcmUgbm93IG1vZGlmaWVkIHRvIGNvcnJlY3RseSByZWZsZWN0CiAgdGhlaXIgc3RhdGUgaWYgdGhlIGVuY29kaW5nIHdhcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQgYnkgYSBoYW5kbGVyLiBUaGlzCiAgbWVhbnMgdGhhdCB0aGUgYENvbnRlbnQtRW5jb2RpbmdgIGhlYWRlciBtYXkgYmUgcmVtb3ZlZCBhbiB0aGUKICBgQ29udGVudC1MZW5ndGhgIG1vZGlmaWVkIHRvIHJlZmxlY3QgdGhlIG1lc3NhZ2Ugc2l6ZSBhZnRlciByZW1vdmluZyB0aGUKICBlbmNvZGluZy4KKiBBZGRlZCBhIG1vcmUgZXhwbGljaXQgZXJyb3IgbWVzc2FnZSB3aGVuIHRyeWluZyB0byB1c2UgYGZvcm1fcGFyYW1zYCBhbmQKICBgbXVsdGlwYXJ0YCBpbiB0aGUgc2FtZSByZXF1ZXN0LgoqIFNldmVyYWwgZml4ZXMgZm9yIEhIVk0gc3VwcG9ydC4KKiBGdW5jdGlvbnMgYXJlIG5vdyBjb25kaXRpb25hbGx5IHJlcXVpcmVkIHVzaW5nIGFuIGFkZGl0aW9uYWwgbGV2ZWwgb2YKICBpbmRpcmVjdGlvbiB0byBoZWxwIHdpdGggZ2xvYmFsIENvbXBvc2VyIGluc3RhbGxhdGlvbnMuCgoKIyMgNi4wLjEgLSAyMDE1LTA1LTI3CgoqIEZpeGVkIGEgYnVnIHdpdGggc2VyaWFsaXppbmcgdGhlIGBxdWVyeWAgcmVxdWVzdCBvcHRpb24gd2hlcmUgdGhlIGAmYAogIHNlcGFyYXRvciB3YXMgbWlzc2luZy4KKiBBZGRlZCBhIGJldHRlciBlcnJvciBtZXNzYWdlIGZvciB3aGVuIGBib2R5YCBpcyBwcm92aWRlZCBhcyBhbiBhcnJheS4gUGxlYXNlCiAgdXNlIGBmb3JtX3BhcmFtc2Agb3IgYG11bHRpcGFydGAgaW5zdGVhZC4KKiBWYXJpb3VzIGRvYyBmaXhlcy4KCgojIyA2LjAuMCAtIDIwMTUtMDUtMjYKCiogU2VlIHRoZSBVUEdSQURJTkcubWQgZG9jdW1lbnQgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiogQWRkZWQgYG11bHRpcGFydGAgYW5kIGBmb3JtX3BhcmFtc2AgcmVxdWVzdCBvcHRpb25zLgoqIEFkZGVkIGBzeW5jaHJvbm91c2AgcmVxdWVzdCBvcHRpb24uCiogQWRkZWQgdGhlIGBvbl9oZWFkZXJzYCByZXF1ZXN0IG9wdGlvbi4KKiBGaXhlZCBgZXhwZWN0YCBoYW5kbGluZy4KKiBObyBsb25nZXIgYWRkaW5nIGRlZmF1bHQgbWlkZGxld2FyZXMgaW4gdGhlIGNsaWVudCBjdG9yLiBUaGVzZSBuZWVkIHRvIGJlCiAgcHJlc2VudCBvbiB0aGUgcHJvdmlkZWQgaGFuZGxlciBpbiBvcmRlciB0byB3b3JrLgoqIFJlcXVlc3RzIGFyZSBubyBsb25nZXIgaW5pdGlhdGVkIHdoZW4gc2VuZGluZyBhc3luYyByZXF1ZXN0cyB3aXRoIHRoZQogIEN1cmxNdWx0aUhhbmRsZXIuIFRoaXMgcHJldmVudHMgdW5leHBlY3RlZCByZWN1cnNpb24gZnJvbSByZXF1ZXN0cyBjb21wbGV0aW5nCiAgd2hpbGUgdGlja2luZyB0aGUgY1VSTCBsb29wLgoqIFJlbW92ZWQgdGhlIHNlbWFudGljcyBvZiBzZXR0aW5nIGBkZWZhdWx0YCB0byBgdHJ1ZWAuIFRoaXMgaXMgbm8gbG9uZ2VyCiAgcmVxdWlyZWQgbm93IHRoYXQgdGhlIGNVUkwgbG9vcCBpcyBub3QgdGlja2VkIGZvciBhc3luYyByZXF1ZXN0cy4KKiBBZGRlZCByZXF1ZXN0IGFuZCByZXNwb25zZSBsb2dnaW5nIG1pZGRsZXdhcmUuCiogTm8gbG9uZ2VyIGFsbG93aW5nIHNlbGYgc2lnbmVkIGNlcnRpZmljYXRlcyB3aGVuIHVzaW5nIHRoZSBTdHJlYW1IYW5kbGVyLgoqIEVuc3VyaW5nIHRoYXQgYHNpbmtgIGlzIHZhbGlkIGlmIHNhdmluZyB0byBhIGZpbGUuCiogUmVxdWVzdCBleGNlcHRpb25zIG5vdyBpbmNsdWRlIGEgImhhbmRsZXIgY29udGV4dCIgd2hpY2ggcHJvdmlkZXMgaGFuZGxlcgogIHNwZWNpZmljIGNvbnRleHR1YWwgaW5mb3JtYXRpb24uCiogQWRkZWQgYEd1enpsZUh0dHBcUmVxdWVzdE9wdGlvbnNgIHRvIGFsbG93IHJlcXVlc3Qgb3B0aW9ucyB0byBiZSBhcHBsaWVkCiAgdXNpbmcgY29uc3RhbnRzLgoqIGAkbWF4SGFuZGxlc2AgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIEN1cmxNdWx0aUhhbmRsZXIuCiogYE11bHRpcGFydFBvc3RCb2R5YCBpcyBub3cgcGFydCBvZiB0aGUgYGd1enpsZWh0dHAvcHNyN2AgcGFja2FnZS4KCgojIyA1LjMuMCAtIDIwMTUtMDUtMTkKCiogTW9jayBub3cgc3VwcG9ydHMgYHNhdmVfdG9gCiogTWFya2VkIGBBYnN0cmFjdFJlcXVlc3RFdmVudDo6Z2V0VHJhbnNhY3Rpb24oKWAgYXMgcHVibGljLgoqIEZpeGVkIGEgYnVnIGluIHdoaWNoIG11bHRpcGxlIGhlYWRlcnMgdXNpbmcgZGlmZmVyZW50IGNhc2luZyB3b3VsZCBvdmVyd3JpdGUKICBwcmV2aW91cyBoZWFkZXJzIGluIHRoZSBhc3NvY2lhdGl2ZSBhcnJheS4KKiBBZGRlZCBgVXRpbHM6OmdldERlZmF1bHRIYW5kbGVyKClgCiogTWFya2VkIGBHdXp6bGVIdHRwXENsaWVudDo6Z2V0RGVmYXVsdFVzZXJBZ2VudGAgYXMgZGVwcmVjYXRlZC4KKiBVUkwgc2NoZW1lIGlzIG5vdyBhbHdheXMgbG93ZXJjYXNlZC4KCgojIyA2LjAuMC1iZXRhLjEKCiogUmVxdWlyZXMgUEhQID49IDUuNQoqIFVwZGF0ZWQgdG8gdXNlIFBTUi03CiAgKiBSZXF1aXJlcyBpbW11dGFibGUgbWVzc2FnZXMsIHdoaWNoIGJhc2ljYWxseSBtZWFucyBhbiBldmVudCBiYXNlZCBzeXN0ZW0KICAgIG93bmVkIGJ5IGEgcmVxdWVzdCBpbnN0YW5jZSBpcyBubyBsb25nZXIgcG9zc2libGUuCiAgKiBVdGlsaXppbmcgdGhlIFtHdXp6bGUgUFNSLTcgcGFja2FnZV0oaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3KS4KICAqIFJlbW92ZWQgdGhlIGRlcGVuZGVuY3kgb24gYGd1enpsZWh0dHAvc3RyZWFtc2AuIFRoZXNlIHN0cmVhbSBhYnN0cmFjdGlvbnMKICAgIGFyZSBhdmFpbGFibGUgaW4gdGhlIGBndXp6bGVodHRwL3BzcjdgIHBhY2thZ2UgdW5kZXIgdGhlIGBHdXp6bGVIdHRwXFBzcjdgCiAgICBuYW1lc3BhY2UuCiogQWRkZWQgbWlkZGxld2FyZSBhbmQgaGFuZGxlciBzeXN0ZW0KICAqIFJlcGxhY2VkIHRoZSBHdXp6bGUgZXZlbnQgYW5kIHN1YnNjcmliZXIgc3lzdGVtIHdpdGggYSBtaWRkbGV3YXJlIHN5c3RlbS4KICAqIE5vIGxvbmdlciBkZXBlbmRzIG9uIFJpbmdQSFAsIGJ1dCByYXRoZXIgcGxhY2VzIHRoZSBIVFRQIGhhbmRsZXJzIGRpcmVjdGx5CiAgICBpbiBHdXp6bGUsIG9wZXJhdGluZyBvbiBQU1ItNyBtZXNzYWdlcy4KICAqIFJldHJ5IGxvZ2ljIGlzIG5vdyBlbmNhcHN1bGF0ZWQgaW4gYEd1enpsZUh0dHBcTWlkZGxld2FyZTo6cmV0cnlgLCB3aGljaAogICAgbWVhbnMgdGhlIGBndXp6bGVodHRwL3JldHJ5LXN1YnNjcmliZXJgIGlzIG5vdyBvYnNvbGV0ZS4KICAqIE1vY2tpbmcgcmVzcG9uc2VzIGlzIG5vdyBoYW5kbGVkIHVzaW5nIGBHdXp6bGVIdHRwXEhhbmRsZXJcTW9ja0hhbmRsZXJgLgoqIEFzeW5jaHJvbm91cyByZXNwb25zZXMKICAqIE5vIGxvbmdlciBzdXBwb3J0cyB0aGUgYGZ1dHVyZWAgcmVxdWVzdCBvcHRpb24gdG8gc2VuZCBhbiBhc3luYyByZXF1ZXN0LgogICAgSW5zdGVhZCwgdXNlIG9uZSBvZiB0aGUgYCpBc3luY2AgbWV0aG9kcyBvZiBhIGNsaWVudCAoZS5nLiwgYHJlcXVlc3RBc3luY2AsCiAgICBgZ2V0QXN5bmNgLCBldGMuKS4KICAqIFV0aWxpemluZyBgR3V6emxlSHR0cFxQcm9taXNlYCBpbnN0ZWFkIG9mIFJlYWN0J3MgcHJvbWlzZSBsaWJyYXJ5IHRvIGF2b2lkCiAgICByZWN1cnNpb24gcmVxdWlyZWQgYnkgY2hhaW5pbmcgYW5kIGZvcndhcmRpbmcgcmVhY3QgcHJvbWlzZXMuIFNlZQogICAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wcm9taXNlcwogICogQWRkZWQgYHJlcXVlc3RBc3luY2AgYW5kIGBzZW5kQXN5bmNgIHRvIHNlbmQgcmVxdWVzdCBhc3luY2hyb25vdXNseS4KICAqIEFkZGVkIG1hZ2ljIG1ldGhvZHMgZm9yIGBnZXRBc3luYygpYCwgYHBvc3RBc3luYygpYCwgZXRjLiB0byBzZW5kIHJlcXVlc3RzCiAgICBhc3luY2hyb25vdXNseS4KKiBSZXF1ZXN0IG9wdGlvbnMKICAqIFBPU1QgYW5kIGZvcm0gdXBkYXRlcwogICAgKiBBZGRlZCB0aGUgYGZvcm1fZmllbGRzYCBhbmQgYGZvcm1fZmlsZXNgIHJlcXVlc3Qgb3B0aW9ucy4KICAgICogUmVtb3ZlZCB0aGUgYEd1enpsZUh0dHBcUG9zdGAgbmFtZXNwYWNlLgogICAgKiBUaGUgYGJvZHlgIHJlcXVlc3Qgb3B0aW9uIG5vIGxvbmdlciBhY2NlcHRzIGFuIGFycmF5IGZvciBQT1NUIHJlcXVlc3RzLgogICogVGhlIGBleGNlcHRpb25zYCByZXF1ZXN0IG9wdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoZQogICAgYGh0dHBfZXJyb3JzYCByZXF1ZXN0IG9wdGlvbnMuCiAgKiBUaGUgYHNhdmVfdG9gIHJlcXVlc3Qgb3B0aW9uIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgYHNpbmtgIHJlcXVlc3QKICAgIG9wdGlvbi4KKiBDbGllbnRzIG5vIGxvbmdlciBhY2NlcHQgYW4gYXJyYXkgb2YgVVJJIHRlbXBsYXRlIHN0cmluZyBhbmQgdmFyaWFibGVzIGZvcgogIFVSSSB2YXJpYWJsZXMuIFlvdSB3aWxsIG5lZWQgdG8gZXhwYW5kIFVSSSB0ZW1wbGF0ZXMgYmVmb3JlIHBhc3NpbmcgdGhlbQogIGludG8gYSBjbGllbnQgY29uc3RydWN0b3Igb3IgcmVxdWVzdCBtZXRob2QuCiogQ2xpZW50IG1ldGhvZHMgYGdldCgpYCwgYHBvc3QoKWAsIGBwdXQoKWAsIGBwYXRjaCgpYCwgYG9wdGlvbnMoKWAsIGV0Yy4gYXJlCiAgbm93IG1hZ2ljIG1ldGhvZHMgdGhhdCB3aWxsIHNlbmQgc3luY2hyb25vdXMgcmVxdWVzdHMuCiogUmVwbGFjZWQgYFV0aWxzLnBocGAgd2l0aCBwbGFpbiBmdW5jdGlvbnMgaW4gYGZ1bmN0aW9ucy5waHBgLgoqIFJlbW92ZWQgYEd1enpsZUh0dHBcQ29sbGVjdGlvbmAuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxCYXRjaFJlc3VsdHNgLiBCYXRjaGVkIHBvb2wgcmVzdWx0cyBhcmUgbm93IHJldHVybmVkIGFzCiAgYW4gYXJyYXkuCiogUmVtb3ZlZCBgR3V6emxlSHR0cFxRdWVyeWAuIFF1ZXJ5IHN0cmluZyBoYW5kbGluZyBpcyBub3cgaGFuZGxlZCB1c2luZyBhbgogIGFzc29jaWF0aXZlIGFycmF5IHBhc3NlZCBpbnRvIHRoZSBgcXVlcnlgIHJlcXVlc3Qgb3B0aW9uLiBUaGUgcXVlcnkgc3RyaW5nCiAgaXMgc2VyaWFsaXplZCB1c2luZyBQSFAncyBgaHR0cF9idWlsZF9xdWVyeWAuIElmIHlvdSBuZWVkIG1vcmUgY29udHJvbCwgeW91CiAgY2FuIHBhc3MgdGhlIHF1ZXJ5IHN0cmluZyBpbiBhcyBhIHN0cmluZy4KKiBgR3V6emxlSHR0cFxRdWVyeVBhcnNlcmAgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCB0aGUKICBgR3V6emxlSHR0cFxQc3I3XHBhcnNlX3F1ZXJ5YC4KCgojIyA1LjIuMCAtIDIwMTUtMDEtMjcKCiogQWRkZWQgYEFwcGxpZXNIZWFkZXJzSW50ZXJmYWNlYCB0byBtYWtlIGFwcGx5aW5nIGhlYWRlcnMgdG8gYSByZXF1ZXN0IGJhc2VkCiAgb24gdGhlIGJvZHkgbW9yZSBnZW5lcmljIGFuZCBub3Qgc3BlY2lmaWMgdG8gYFBvc3RCb2R5SW50ZXJmYWNlYC4KKiBSZWR1Y2VkIHRoZSBudW1iZXIgb2Ygc3RhY2sgZnJhbWVzIG5lZWRlZCB0byBzZW5kIHJlcXVlc3RzLgoqIE5lc3RlZCBmdXR1cmVzIGFyZSBub3cgcmVzb2x2ZWQgaW4gdGhlIGNsaWVudCByYXRoZXIgdGhhbiB0aGUgUmVxdWVzdEZzbQoqIEZpbmlzaGluZyBzdGF0ZSB0cmFuc2l0aW9ucyBpcyBub3cgaGFuZGxlZCBpbiB0aGUgUmVxdWVzdEZzbSByYXRoZXIgdGhhbiB0aGUKICBSaW5nQnJpZGdlLgoqIEFkZGVkIGEgZ3VhcmQgaW4gdGhlIFBvb2wgY2xhc3MgdG8gbm90IHVzZSByZWN1cnNpb24gZm9yIHJlcXVlc3QgcmV0cmllcy4KCgojIyA1LjEuMCAtIDIwMTQtMTItMTkKCiogUG9vbCBjbGFzcyBubyBsb25nZXIgdXNlcyByZWN1cnNpb24gd2hlbiBhIHJlcXVlc3QgaXMgaW50ZXJjZXB0ZWQuCiogVGhlIHNpemUgb2YgYSBQb29sIGNhbiBub3cgYmUgZHluYW1pY2FsbHkgYWRqdXN0ZWQgdXNpbmcgYSBjYWxsYmFjay4KICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC85NDMuCiogU2V0dGluZyBhIHJlcXVlc3Qgb3B0aW9uIHRvIGBudWxsYCB3aGVuIGNyZWF0aW5nIGEgcmVxdWVzdCB3aXRoIGEgY2xpZW50IHdpbGwKICBlbnN1cmUgdGhhdCB0aGUgb3B0aW9uIGlzIG5vdCBzZXQuIFRoaXMgYWxsb3dzIHlvdSB0byBvdmVyd3JpdGUgZGVmYXVsdAogIHJlcXVlc3Qgb3B0aW9ucyBvbiBhIHBlci1yZXF1ZXN0IGJhc2lzLgogIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzkzNy4KKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBsaW1pdCB3aGljaCBwcm90b2NvbHMgYXJlIGFsbG93ZWQgZm9yIHJlZGlyZWN0cyBieQogIHNwZWNpZnlpbmcgYSBgcHJvdG9jb2xzYCBhcnJheSBpbiB0aGUgYGFsbG93X3JlZGlyZWN0c2AgcmVxdWVzdCBvcHRpb24uCiogTmVzdGVkIGZ1dHVyZXMgZHVlIHRvIHJldHJpZXMgYXJlIG5vdyByZXNvbHZlZCB3aGVuIHdhaXRpbmcgZm9yIHN5bmNocm9ub3VzCiAgcmVzcG9uc2VzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvcHVsbC85NDcuCiogYCIwImAgaXMgbm93IGFuIGFsbG93ZWQgVVJJIHBhdGguIFNlZQogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvOTM1LgoqIGBRdWVyeWAgbm8gbG9uZ2VyIHR5cGVoaW50cyBvbiB0aGUgYCRxdWVyeWAgYXJndW1lbnQgaW4gdGhlIGNvbnN0cnVjdG9yLAogIGFsbG93aW5nIGZvciBzdHJpbmdzIGFuZCBhcnJheXMuCiogRXhjZXB0aW9ucyB0aHJvd24gaW4gdGhlIGBlbmRgIGV2ZW50IGFyZSBub3cgY29ycmVjdGx5IHdyYXBwZWQgd2l0aCBHdXp6bGUKICBzcGVjaWZpYyBleGNlcHRpb25zIGlmIG5lY2Vzc2FyeS4KCgojIyA1LjAuMyAtIDIwMTQtMTEtMDMKClRoaXMgY2hhbmdlIHVwZGF0ZXMgcXVlcnkgc3RyaW5ncyBzbyB0aGF0IHRoZXkgYXJlIHRyZWF0ZWQgYXMgdW4tZW5jb2RlZCB2YWx1ZXMKYnkgZGVmYXVsdCB3aGVyZSB0aGUgdmFsdWUgcmVwcmVzZW50cyBhbiB1bi1lbmNvZGVkIHZhbHVlIHRvIHNlbmQgb3ZlciB0aGUKd2lyZS4gQSBRdWVyeSBvYmplY3QgdGhlbiBlbmNvZGVzIHRoZSB2YWx1ZSBiZWZvcmUgc2VuZGluZyBvdmVyIHRoZSB3aXJlLiBUaGlzCm1lYW5zIHRoYXQgZXZlbiB2YWx1ZSBxdWVyeSBzdHJpbmcgdmFsdWVzIChlLmcuLCAiOiIpIGFyZSB1cmwgZW5jb2RlZC4gVGhpcwptYWtlcyB0aGUgUXVlcnkgY2xhc3MgbWF0Y2ggUEhQJ3MgaHR0cF9idWlsZF9xdWVyeSBmdW5jdGlvbi4gSG93ZXZlciwgaWYgeW91CndhbnQgdG8gc2VuZCByZXF1ZXN0cyBvdmVyIHRoZSB3aXJlIHVzaW5nIHZhbGlkIHF1ZXJ5IHN0cmluZyBjaGFyYWN0ZXJzIHRoYXQgZG8Kbm90IG5lZWQgdG8gYmUgZW5jb2RlZCwgdGhlbiB5b3UgY2FuIHByb3ZpZGUgYSBzdHJpbmcgdG8gVXJsOjpzZXRRdWVyeSgpIGFuZApwYXNzIHRydWUgYXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBzcGVjaWZ5IHRoYXQgdGhlIHF1ZXJ5IHN0cmluZyBpcyBhIHJhdwpzdHJpbmcgdGhhdCBzaG91bGQgbm90IGJlIHBhcnNlZCBvciBlbmNvZGVkICh1bmxlc3MgYSBjYWxsIHRvIGdldFF1ZXJ5KCkgaXMKc3Vic2VxdWVudGx5IG1hZGUsIGZvcmNpbmcgdGhlIHF1ZXJ5LXN0cmluZyB0byBiZSBjb252ZXJ0ZWQgaW50byBhIFF1ZXJ5Cm9iamVjdCkuCgoKIyMgNS4wLjIgLSAyMDE0LTEwLTMwCgoqIEFkZGVkIGEgdHJhaWxpbmcgYFxyXG5gIHRvIG11bHRpcGFydC9mb3JtLWRhdGEgcGF5bG9hZHMuIFNlZQogIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvODcxCiogQWRkZWQgYSBgR3V6emxlSHR0cFxQb29sOjpzZW5kKClgIGNvbnZlbmllbmNlIG1ldGhvZCB0byBtYXRjaCB0aGUgZG9jcy4KKiBTdGF0dXMgY29kZXMgYXJlIG5vdyByZXR1cm5lZCBhcyBpbnRlZ2Vycy4gU2VlCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzg4MQoqIE5vIGxvbmdlciBvdmVyd3JpdGluZyBhbiBleGlzdGluZyBgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBoZWFkZXIKICB3aGVuIHNlbmRpbmcgUE9TVCByZXF1ZXN0cywgYWxsb3dpbmcgZm9yIGN1c3RvbWl6ZWQgaGVhZGVycy4gU2VlCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzg3NwoqIEltcHJvdmVkIHBhdGggVVJMIHNlcmlhbGl6YXRpb24uCgogICogTm8gbG9uZ2VyIGRvdWJsZSBwZXJjZW50LWVuY29kaW5nIGNoYXJhY3RlcnMgaW4gdGhlIHBhdGggb3IgcXVlcnkgc3RyaW5nIGlmCiAgICB0aGV5IGFyZSBhbHJlYWR5IGVuY29kZWQuCiAgKiBOb3cgcHJvcGVybHkgZW5jb2RpbmcgdGhlIHN1cHBsaWVkIHBhdGggdG8gYSBVUkwgb2JqZWN0LCBpbnN0ZWFkIG9mIG9ubHkKICAgIGVuY29kaW5nICcgJyBhbmQgJz8nLgogICogTm90ZTogVGhpcyBoYXMgYmVlbiBjaGFuZ2VkIGluIDUuMC4zIHRvIG5vdyBlbmNvZGUgcXVlcnkgc3RyaW5nIHZhbHVlcyBieQogICAgZGVmYXVsdCB1bmxlc3MgdGhlIGByYXdTdHJpbmdgIGFyZ3VtZW50IGlzIHByb3ZpZGVkIHdoZW4gc2V0dGluZyB0aGUgcXVlcnkKICAgIHN0cmluZyBvbiBhIFVSTDogTm93IGFsbG93aW5nIG1hbnkgbW9yZSBjaGFyYWN0ZXJzIHRvIGJlIHByZXNlbnQgaW4gdGhlCiAgICBxdWVyeSBzdHJpbmcgd2l0aG91dCBiZWluZyBwZXJjZW50IGVuY29kZWQuIFNlZQogICAgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I2FwcGVuZGl4LUEKCgojIyA1LjAuMSAtIDIwMTQtMTAtMTYKCkJ1Z2ZpeCByZWxlYXNlLgoKKiBGaXhlZCBhbiBpc3N1ZSB3aGVyZSBjb25uZWN0aW9uIGVycm9ycyBzdGlsbCByZXR1cm5lZCByZXNwb25zZSBvYmplY3QgaW4KICBlcnJvciBhbmQgZW5kIGV2ZW50cyBldmVudCB0aG91Z2ggdGhlIHJlc3BvbnNlIGlzIHVudXNhYmxlLiBUaGlzIGhhcyBiZWVuCiAgY29ycmVjdGVkIHNvIHRoYXQgYSByZXNwb25zZSBpcyBub3QgcmV0dXJuZWQgaW4gdGhlIGBnZXRSZXNwb25zZWAgbWV0aG9kIG9mCiAgdGhlc2UgZXZlbnRzIGlmIHRoZSByZXNwb25zZSBkaWQgbm90IGNvbXBsZXRlLiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvODY3CiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgdHJhbnNmZXIgc3RhdGlzdGljcyB3ZXJlIG5vdCBiZWluZyBwb3B1bGF0ZWQgaW4gdGhlCiAgUmluZ0JyaWRnZS4gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzg2NgoKCiMjIDUuMC4wIC0gMjAxNC0xMC0xMgoKQWRkaW5nIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyByZXNwb25zZXMgYW5kIHNvbWUgbWlub3IgQVBJIGNsZWFudXAuCgojIyMgTmV3IEZlYXR1cmVzCgoqIEFkZGVkIHN1cHBvcnQgZm9yIG5vbi1ibG9ja2luZyByZXNwb25zZXMgYmFzZWQgb24gYGd1enpsZWh0dHAvZ3V6emxlLXJpbmdgLgoqIEFkZGVkIGEgcHVibGljIEFQSSBmb3IgY3JlYXRpbmcgYSBkZWZhdWx0IEhUVFAgYWRhcHRlci4KKiBVcGRhdGVkIHRoZSByZWRpcmVjdCBwbHVnaW4gdG8gYmUgbm9uLWJsb2NraW5nIHNvIHRoYXQgcmVkaXJlY3RzIGFyZSBzZW50CiAgY29uY3VycmVudGx5LiBPdGhlciBwbHVnaW5zIGxpa2UgdGhpcyBjYW4gbm93IGJlIHVwZGF0ZWQgdG8gYmUgbm9uLWJsb2NraW5nLgoqIEFkZGVkIGEgInByb2dyZXNzIiBldmVudCBzbyB0aGF0IHlvdSBjYW4gZ2V0IHVwbG9hZCBhbmQgZG93bmxvYWQgcHJvZ3Jlc3MKICBldmVudHMuCiogQWRkZWQgYEd1enpsZUh0dHBcUG9vbGAgd2hpY2ggaW1wbGVtZW50cyBGdXR1cmVJbnRlcmZhY2UgYW5kIHRyYW5zZmVycwogIHJlcXVlc3RzIGNvbmN1cnJlbnRseSB1c2luZyBhIGNhcHBlZCBwb29sIHNpemUgYXMgZWZmaWNpZW50bHkgYXMgcG9zc2libGUuCiogQWRkZWQgYGhhc0xpc3RlbmVycygpYCB0byBFbWl0dGVySW50ZXJmYWNlLgoqIFJlbW92ZWQgYEd1enpsZUh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZW5kQWxsYCBhbmQgbWFya2VkCiAgYEd1enpsZUh0dHBcQ2xpZW50OjpzZW5kQWxsYCBhcyBkZXByZWNhdGVkIChpdCdzIHN0aWxsIHRoZXJlLCBqdXN0IG5vdCB0aGUKICByZWNvbW1lbmRlZCB3YXkpLgoKIyMjIEJyZWFraW5nIGNoYW5nZXMKClRoZSBicmVha2luZyBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSBhcmUgcmVsYXRpdmVseSBtaW5vci4gVGhlIGJpZ2dlc3QgdGhpbmcgdG8KbG9vayBvdXQgZm9yIGlzIHRoYXQgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cyBubyBsb25nZXIgaW1wbGVtZW50IGZsdWVudAppbnRlcmZhY2VzLgoKKiBSZW1vdmVkIHRoZSBmbHVlbnQgaW50ZXJmYWNlcyAoaS5lLiwgYHJldHVybiAkdGhpc2ApIGZyb20gcmVxdWVzdHMsCiAgcmVzcG9uc2VzLCBgR3V6emxlSHR0cFxDb2xsZWN0aW9uYCwgYEd1enpsZUh0dHBcVXJsYCwKICBgR3V6emxlSHR0cFxRdWVyeWAsIGBHdXp6bGVIdHRwXFBvc3RcUG9zdEJvZHlgLCBhbmQKICBgR3V6emxlSHR0cFxDb29raWVcU2V0Q29va2llYC4gVGhpcyBibG9nIHBvc3QgcHJvdmlkZXMgYSBnb29kIG91dGxpbmUgb2YKICB3aHkgSSBkaWQgdGhpczogaHR0cHM6Ly9vY3JhbWl1cy5naXRodWIuaW8vYmxvZy9mbHVlbnQtaW50ZXJmYWNlcy1hcmUtZXZpbC8uCiAgVGhpcyBhbHNvIG1ha2VzIHRoZSBHdXp6bGUgbWVzc2FnZSBpbnRlcmZhY2VzIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudAogIFBTUi03IG1lc3NhZ2UgcHJvcG9zYWwuCiogUmVtb3ZlZCAiZnVuY3Rpb25zLnBocCIsIHNvIHRoYXQgR3V6emxlIGlzIHRydWx5IFBTUi00IGNvbXBsaWFudC4gRXhjZXB0CiAgZm9yIHRoZSBIVFRQIHJlcXVlc3QgZnVuY3Rpb25zIGZyb20gZnVuY3Rpb24ucGhwLCB0aGVzZSBmdW5jdGlvbnMgYXJlIG5vdwogIGltcGxlbWVudGVkIGluIGBHdXp6bGVIdHRwXFV0aWxzYCB1c2luZyBjYW1lbENhc2UuIGBHdXp6bGVIdHRwXGpzb25fZGVjb2RlYAogIG1vdmVkIHRvIGBHdXp6bGVIdHRwXFV0aWxzOjpqc29uRGVjb2RlYC4gYEd1enpsZUh0dHBcZ2V0X3BhdGhgIG1vdmVkIHRvCiAgYEd1enpsZUh0dHBcVXRpbHM6OmdldFBhdGhgLiBgR3V6emxlSHR0cFxzZXRfcGF0aGAgbW92ZWQgdG8KICBgR3V6emxlSHR0cFxVdGlsczo6c2V0UGF0aGAuIGBHdXp6bGVIdHRwXGJhdGNoYCBzaG91bGQgbm93IGJlCiAgYEd1enpsZUh0dHBcUG9vbDo6YmF0Y2hgLCB3aGljaCByZXR1cm5zIGFuIGBvYmplY3RTdG9yYWdlYC4gVXNpbmcgZnVuY3Rpb25zLnBocAogIGNhdXNlZCBwcm9ibGVtcyBmb3IgbWFueSB1c2VyczogdGhleSBhcmVuJ3QgUFNSLTQgY29tcGxpYW50LCByZXF1aXJlIGFuCiAgZXhwbGljaXQgaW5jbHVkZSwgYW5kIG5lZWRlZCBhbiBpZi1ndWFyZCB0byBlbnN1cmUgdGhhdCB0aGUgZnVuY3Rpb25zIGFyZSBub3QKICBkZWNsYXJlZCBtdWx0aXBsZSB0aW1lcy4KKiBSZXdyb3RlIGFkYXB0ZXIgbGF5ZXIuCiAgICAqIFJlbW92aW5nIGFsbCBjbGFzc2VzIGZyb20gYEd1enpsZUh0dHBcQWRhcHRlcmAsIHRoZXNlIGFyZSBub3cKICAgICAgaW1wbGVtZW50ZWQgYXMgY2FsbGFibGVzIHRoYXQgYXJlIHN0b3JlZCBpbiBgR3V6emxlSHR0cFxSaW5nXENsaWVudGAuCiAgICAqIFJlbW92ZWQgdGhlIGNvbmNlcHQgb2YgInBhcmFsbGVsIGFkYXB0ZXJzIi4gU2VuZGluZyByZXF1ZXN0cyBzZXJpYWxseSBvcgogICAgICBjb25jdXJyZW50bHkgaXMgbm93IGhhbmRsZWQgdXNpbmcgYSBzaW5nbGUgYWRhcHRlci4KICAgICogTW92ZWQgYEd1enpsZUh0dHBcQWRhcHRlclxUcmFuc2FjdGlvbmAgdG8gYEd1enpsZUh0dHBcVHJhbnNhY3Rpb25gLiBUaGUKICAgICAgVHJhbnNhY3Rpb24gb2JqZWN0IG5vdyBleHBvc2VzIHRoZSByZXF1ZXN0LCByZXNwb25zZSwgYW5kIGNsaWVudCBhcyBwdWJsaWMKICAgICAgcHJvcGVydGllcy4gVGhlIGdldHRlcnMgYW5kIHNldHRlcnMgaGF2ZSBiZWVuIHJlbW92ZWQuCiogUmVtb3ZlZCB0aGUgImhlYWRlcnMiIGV2ZW50LiBUaGlzIGV2ZW50IHdhcyBvbmx5IHVzZWZ1bCBmb3IgY2hhbmdpbmcgdGhlCiAgYm9keSBhIHJlc3BvbnNlIG9uY2UgdGhlIGhlYWRlcnMgb2YgdGhlIHJlc3BvbnNlIHdlcmUga25vd24uIFlvdSBjYW4gaW1wbGVtZW50CiAgYSBzaW1pbGFyIGJlaGF2aW9yIGluIGEgbnVtYmVyIG9mIHdheXMuIE9uZSBleGFtcGxlIG1pZ2h0IGJlIHRvIHVzZSBhCiAgRm5TdHJlYW0gdGhhdCBoYXMgYWNjZXNzIHRvIHRoZSB0cmFuc2FjdGlvbiBiZWluZyBzZW50LiBGb3IgZXhhbXBsZSwgd2hlbiB0aGUKICBmaXJzdCBieXRlIGlzIHdyaXR0ZW4sIHlvdSBjb3VsZCBjaGVjayBpZiB0aGUgcmVzcG9uc2UgaGVhZGVycyBtYXRjaCB5b3VyCiAgZXhwZWN0YXRpb25zLCBhbmQgaWYgc28sIGNoYW5nZSB0aGUgYWN0dWFsIHN0cmVhbSBib2R5IHRoYXQgaXMgYmVpbmcKICB3cml0dGVuIHRvLgoqIFJlbW92ZWQgdGhlIGBhc0FycmF5YCBwYXJhbWV0ZXIgZnJvbQogIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVyYC4gSWYgeW91IHdhbnQgdG8gZ2V0IGEgaGVhZGVyCiAgdmFsdWUgYXMgYW4gYXJyYXksIHRoZW4gdXNlIHRoZSBuZXdseSBhZGRlZCBgZ2V0SGVhZGVyQXNBcnJheSgpYCBtZXRob2Qgb2YKICBgTWVzc2FnZUludGVyZmFjZWAuIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBHdXp6bGUgaW50ZXJmYWNlcyBjb21wYXRpYmxlIHdpdGgKICB0aGUgUFNSLTcgaW50ZXJmYWNlcy4KKiBgR3V6emxlSHR0cFxNZXNzYWdlXE1lc3NhZ2VGYWN0b3J5YCBubyBsb25nZXIgYWxsb3dzIHN1YmNsYXNzZXMgdG8gYWRkCiAgY3VzdG9tIHJlcXVlc3Qgb3B0aW9ucyB1c2luZyBkb3VibGUtZGlzcGF0Y2ggKHRoaXMgd2FzIGFuIGltcGxlbWVudGF0aW9uCiAgZGV0YWlsKS4gSW5zdGVhZCwgeW91IHNob3VsZCBub3cgcHJvdmlkZSBhbiBhc3NvY2lhdGl2ZSBhcnJheSB0byB0aGUKICBjb25zdHJ1Y3RvciB3aGljaCBpcyBhIG1hcHBpbmcgb2YgdGhlIHJlcXVlc3Qgb3B0aW9uIG5hbWUgbWFwcGluZyB0byBhCiAgZnVuY3Rpb24gdGhhdCBhcHBsaWVzIHRoZSBvcHRpb24gdmFsdWUgdG8gYSByZXF1ZXN0LgoqIFJlbW92ZWQgdGhlIGNvbmNlcHQgb2YgInRocm93SW1tZWRpYXRlbHkiIGZyb20gZXhjZXB0aW9ucyBhbmQgZXJyb3IgZXZlbnRzLgogIFRoaXMgY29udHJvbCBtZWNoYW5pc20gd2FzIHVzZWQgdG8gc3RvcCBhIHRyYW5zZmVyIG9mIGNvbmN1cnJlbnQgcmVxdWVzdHMKICBmcm9tIGNvbXBsZXRpbmcuIFRoaXMgY2FuIG5vdyBiZSBoYW5kbGVkIGJ5IHRocm93aW5nIHRoZSBleGNlcHRpb24gb3IgYnkKICBjYW5jZWxsaW5nIGEgcG9vbCBvZiByZXF1ZXN0cyBvciBlYWNoIG91dHN0YW5kaW5nIGZ1dHVyZSByZXF1ZXN0IGluZGl2aWR1YWxseS4KKiBVcGRhdGVkIHRvICJHdXp6bGVIdHRwXFN0cmVhbXMiIDMuMC4KICAgICogYEd1enpsZUh0dHBcU3RyZWFtXFN0cmVhbUludGVyZmFjZTo6Z2V0Q29udGVudHMoKWAgbm8gbG9uZ2VyIGFjY2VwdHMgYQogICAgICBgbWF4TGVuYCBwYXJhbWV0ZXIuIFRoaXMgdXBkYXRlIG1ha2VzIHRoZSBHdXp6bGUgc3RyZWFtcyBwcm9qZWN0CiAgICAgIGNvbXBhdGlibGUgd2l0aCB0aGUgY3VycmVudCBQU1ItNyBwcm9wb3NhbC4KICAgICogYEd1enpsZUh0dHBcU3RyZWFtXFN0cmVhbTo6X19jb25zdHJ1Y3RgLAogICAgICBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtOjpmYWN0b3J5YCwgYW5kCiAgICAgIGBHdXp6bGVIdHRwXFN0cmVhbVxVdGlsczo6Y3JlYXRlYCBubyBsb25nZXIgYWNjZXB0IGEgc2l6ZSBpbiB0aGUgc2Vjb25kCiAgICAgIGFyZ3VtZW50LiBUaGV5IG5vdyBhY2NlcHQgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2Ygb3B0aW9ucywgaW5jbHVkaW5nIHRoZQogICAgICAic2l6ZSIga2V5IGFuZCAibWV0YWRhdGEiIGtleSB3aGljaCBjYW4gYmUgdXNlZCB0byBwcm92aWRlIGN1c3RvbSBtZXRhZGF0YS4KCgojIyA0LjIuMiAtIDIwMTQtMDktMDgKCiogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgQ3VybEFkYXB0ZXIgd2hlbiByZXVzaW5nIGNVUkwgaGFuZGxlcy4KKiBObyBsb25nZXIgdXNpbmcgYHJlcXVlc3RfZnVsbHVyaWAgaW4gc3RyZWFtIGFkYXB0ZXIgcHJveGllcy4KKiBSZWxhdGl2ZSByZWRpcmVjdHMgYXJlIG5vdyBiYXNlZCBvbiB0aGUgbGFzdCByZXNwb25zZSwgbm90IHRoZSBmaXJzdCByZXNwb25zZS4KCiMjIDQuMi4xIC0gMjAxNC0wOC0xOQoKKiBFbnN1cmluZyB0aGF0IHRoZSBTdHJlYW1BZGFwdGVyIGRvZXMgbm90IGFsd2F5cyBhZGQgYSBDb250ZW50LVR5cGUgaGVhZGVyCiogQWRkaW5nIGF1dG9tYXRlZCBnaXRodWIgcmVsZWFzZXMgd2l0aCBhIHBoYXIgYW5kIHppcAoKIyMgNC4yLjAgLSAyMDE0LTA4LTE3CgoqIE5vdyBtZXJnaW5nIGluIGRlZmF1bHQgb3B0aW9ucyB1c2luZyBhIGNhc2UtaW5zZW5zaXRpdmUgY29tcGFyaXNvbi4KICBDbG9zZXMgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzc2NwoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGF1dG9tYXRpY2FsbHkgZGVjb2RlIGBDb250ZW50LUVuY29kaW5nYCByZXNwb25zZSBib2RpZXMKICB1c2luZyB0aGUgYGRlY29kZV9jb250ZW50YCByZXF1ZXN0IG9wdGlvbi4gVGhpcyBpcyBzZXQgdG8gYHRydWVgIGJ5IGRlZmF1bHQKICB0byBkZWNvZGUgdGhlIHJlc3BvbnNlIGJvZHkgaWYgaXQgY29tZXMgb3ZlciB0aGUgd2lyZSB3aXRoIGEKICBgQ29udGVudC1FbmNvZGluZ2AuIFNldCB0aGlzIHZhbHVlIHRvIGBmYWxzZWAgdG8gZGlzYWJsZSBkZWNvZGluZyB0aGUKICByZXNwb25zZSBjb250ZW50LCBhbmQgcGFzcyBhIHN0cmluZyB0byBwcm92aWRlIGEgcmVxdWVzdCBgQWNjZXB0LUVuY29kaW5nYAogIGhlYWRlciBhbmQgdHVybiBvbiBhdXRvbWF0aWMgcmVzcG9uc2UgZGVjb2RpbmcuIFRoaXMgZmVhdHVyZSBub3cgYWxsb3dzIHlvdQogIHRvIHBhc3MgYW4gYEFjY2VwdC1FbmNvZGluZ2AgaGVhZGVyIGluIHRoZSBoZWFkZXJzIG9mIGEgcmVxdWVzdCBidXQgc3RpbGwKICBkaXNhYmxlIGF1dG9tYXRpYyByZXNwb25zZSBkZWNvZGluZy4KICBDbG9zZXMgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzc2NAoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpbW1lZGlhdGVseSB3aGVuIHRyYW5zZmVycmluZwogIHJlcXVlc3RzIGluIHBhcmFsbGVsLiBDbG9zZXMgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzc2MAoqIFVwZGF0aW5nIGd1enpsZWh0dHAvc3RyZWFtcyBkZXBlbmRlbmN5IHRvIH4yLjEKKiBObyBsb25nZXIgdXRpbGl6aW5nIHRoZSBub3cgZGVwcmVjYXRlZCBuYW1lc3BhY2VkIG1ldGhvZHMgZnJvbSB0aGUgc3RyZWFtCiAgcGFja2FnZS4KCiMjIDQuMS44IC0gMjAxNC0wOC0xNAoKKiBGaXhlZCBhbiBpc3N1ZSBpbiB0aGUgQ3VybEZhY3RvcnkgdGhhdCBjYXVzZWQgc2V0dGluZyB0aGUgYHN0cmVhbT1mYWxzZWAKICByZXF1ZXN0IG9wdGlvbiB0byB0aHJvdyBhbiBleGNlcHRpb24uCiAgU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvNzY5CiogVHJhbnNhY3Rpb25JdGVyYXRvciBub3cgY2FsbHMgcmV3aW5kIG9uIHRoZSBpbm5lciBpdGVyYXRvci4KICBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvNzY1CiogWW91IGNhbiBub3cgc2V0IHRoZSBgQ29udGVudC1UeXBlYCBoZWFkZXIgdG8gYG11bHRpcGFydC9mb3JtLWRhdGFgCiAgd2hlbiBjcmVhdGluZyBQT1NUIHJlcXVlc3RzIHRvIGZvcmNlIG11bHRpcGFydCBib2RpZXMuCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy83NjgKCiMjIDQuMS43IC0gMjAxNC0wOC0wNwoKKiBGaXhlZCBhbiBlcnJvciBpbiB0aGUgSGlzdG9yeVBsdWdpbiB0aGF0IGNhdXNlZCB0aGUgc2FtZSByZXF1ZXN0IGFuZCByZXNwb25zZQogIHRvIGJlIGxvZ2dlZCBtdWx0aXBsZSB0aW1lcyB3aGVuIGFuIEhUVFAgcHJvdG9jb2wgZXJyb3Igb2NjdXJzLgoqIEVuc3VyaW5nIHRoYXQgY1VSTCBkb2VzIG5vdCBhZGQgYSBkZWZhdWx0IENvbnRlbnQtVHlwZSB3aGVuIG5vIENvbnRlbnQtVHlwZQogIGhhcyBiZWVuIHN1cHBsaWVkIGJ5IHRoZSB1c2VyLiBUaGlzIHByZXZlbnRzIHRoZSBhZGFwdGVyIGxheWVyIGZyb20gbW9kaWZ5aW5nCiAgdGhlIHJlcXVlc3QgdGhhdCBpcyBzZW50IG92ZXIgdGhlIHdpcmUgYWZ0ZXIgYW55IGxpc3RlbmVycyBtYXkgaGF2ZSBhbHJlYWR5CiAgcHV0IHRoZSByZXF1ZXN0IGluIGEgZGVzaXJlZCBzdGF0ZSAoZS5nLiwgc2lnbmVkIHRoZSByZXF1ZXN0KS4KKiBUaHJvd2luZyBhbiBleGNlcHRpb24gd2hlbiB5b3UgYXR0ZW1wdCB0byBzZW5kIHJlcXVlc3RzIHRoYXQgaGF2ZSB0aGUKICAic3RyZWFtIiBzZXQgdG8gdHJ1ZSBpbiBwYXJhbGxlbCB1c2luZyB0aGUgTXVsdGlBZGFwdGVyLgoqIE9ubHkgY2FsbGluZyBjdXJsX211bHRpX3NlbGVjdCB3aGVuIHRoZXJlIGFyZSBhY3RpdmUgY1VSTCBoYW5kbGVzLiBUaGlzIHdhcwogIHByZXZpb3VzbHkgY2hhbmdlZCBhbmQgY2F1c2VkIHBlcmZvcm1hbmNlIHByb2JsZW1zIG9uIHNvbWUgc3lzdGVtcyBkdWUgdG8gUEhQCiAgYWx3YXlzIHNlbGVjdGluZyB1bnRpbCB0aGUgbWF4aW11bSBzZWxlY3QgdGltZW91dC4KKiBGaXhlZCBhIGJ1ZyB3aGVyZSBtdWx0aXBhcnQvZm9ybS1kYXRhIFBPU1QgZmllbGRzIHdlcmUgbm90IGNvcnJlY3RseQogIGFnZ3JlZ2F0ZWQgKGUuZy4sIHZhbHVlcyB3aXRoICImIikuCgojIyA0LjEuNiAtIDIwMTQtMDgtMDMKCiogQWRkZWQgaGVscGVyIG1ldGhvZHMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVwcmVzZW50IG1lc3NhZ2VzIGFzIHN0cmluZ3MsCiAgaW5jbHVkaW5nIGdldHRpbmcgdGhlIHN0YXJ0IGxpbmUgYW5kIGdldHRpbmcgaGVhZGVycyBhcyBhIHN0cmluZy4KCiMjIDQuMS41IC0gMjAxNC0wOC0wMgoKKiBBdXRvbWF0aWNhbGx5IHJldHJ5aW5nIGNVUkwgIkNvbm5lY3Rpb24gZGllZCwgcmV0cnlpbmcgYSBmcmVzaCBjb25uZWN0IgogIGVycm9ycyB3aGVuIHBvc3NpYmxlLgoqIGNVUkwgaW1wbGVtZW50YXRpb24gY2xlYW51cAoqIEFsbG93aW5nIG11bHRpcGxlIGV2ZW50IHN1YnNjcmliZXIgbGlzdGVuZXJzIHRvIGJlIHJlZ2lzdGVyZWQgcGVyIGV2ZW50IGJ5CiAgcGFzc2luZyBhbiBhcnJheSBvZiBhcnJheXMgb2YgbGlzdGVuZXIgY29uZmlndXJhdGlvbi4KCiMjIDQuMS40IC0gMjAxNC0wNy0yMgoKKiBGaXhlZCBhIGJ1ZyB0aGF0IGNhdXNlZCBtdWx0aS1wYXJ0IFBPU1QgcmVxdWVzdHMgd2l0aCBtb3JlIHRoYW4gb25lIGZpZWxkIHRvCiAgc2VyaWFsaXplIGluY29ycmVjdGx5LgoqIFBhdGhzIGNhbiBub3cgYmUgc2V0IHRvICIwIgoqIGBSZXNwb25zZUludGVyZmFjZTo6eG1sYCBub3cgYWNjZXB0cyBhIGBsaWJ4bWxfb3B0aW9uc2Agb3B0aW9uIGFuZCBhZGRlZCBhCiAgbWlzc2luZyBkZWZhdWx0IGFyZ3VtZW50IHRoYXQgd2FzIHJlcXVpcmVkIHdoZW4gcGFyc2luZyBYTUwgcmVzcG9uc2UgYm9kaWVzLgoqIEEgYHNhdmVfdG9gIHN0cmVhbSBpcyBub3cgY3JlYXRlZCBsYXppbHksIHdoaWNoIG1lYW5zIHRoYXQgZmlsZXMgYXJlIG5vdAogIGNyZWF0ZWQgb24gZGlzayB1bmxlc3MgYSByZXF1ZXN0IHN1Y2NlZWRzLgoKIyMgNC4xLjMgLSAyMDE0LTA3LTE1CgoqIFZhcmlvdXMgZml4ZXMgdG8gbXVsdGlwYXJ0L2Zvcm0tZGF0YSBQT1NUIHVwbG9hZHMKKiBXcmFwcGluZyBmdW5jdGlvbi5waHAgaW4gYW4gaWYtc3RhdGVtZW50IHRvIGVuc3VyZSBHdXp6bGUgY2FuIGJlIHVzZWQKICBnbG9iYWxseSBhbmQgaW4gYSBDb21wb3NlciBpbnN0YWxsCiogRml4ZWQgYW4gaXNzdWUgd2l0aCBnZW5lcmF0aW5nIGFuZCBtZXJnaW5nIGluIGV2ZW50cyB0byBhbiBldmVudCBhcnJheQoqIFBPU1QgaGVhZGVycyBhcmUgb25seSBhcHBsaWVkIGJlZm9yZSBzZW5kaW5nIGEgcmVxdWVzdCB0byBhbGxvdyB5b3UgdG8gY2hhbmdlCiAgdGhlIHF1ZXJ5IGFnZ3JlZ2F0b3IgdXNlZCBiZWZvcmUgdXBsb2FkaW5nCiogQWRkZWQgbXVjaCBtb3JlIHJvYnVzdCBxdWVyeSBzdHJpbmcgcGFyc2luZwoqIEZpeGVkIHZhcmlvdXMgcGFyc2luZyBhbmQgbm9ybWFsaXphdGlvbiBpc3N1ZXMgd2l0aCBVUkxzCiogRml4aW5nIGFuIGlzc3VlIHdoZXJlIG11bHRpLXZhbHVlZCBoZWFkZXJzIHdlcmUgbm90IGJlaW5nIHV0aWxpemVkIGNvcnJlY3RseQogIGluIHRoZSBTdHJlYW1BZGFwdGVyCgojIyA0LjEuMiAtIDIwMTQtMDYtMTgKCiogQWRkZWQgc3VwcG9ydCBmb3Igc2VuZGluZyBwYXlsb2FkcyB3aXRoIEdFVCByZXF1ZXN0cwoKIyMgNC4xLjEgLSAyMDE0LTA2LTA4CgoqIEZpeGVkIGFuIGlzc3VlIHJlbGF0ZWQgdG8gdXNpbmcgY3VzdG9tIG1lc3NhZ2UgZmFjdG9yeSBvcHRpb25zIGluIHN1YmNsYXNzZXMKKiBGaXhlZCBhbiBpc3N1ZSB3aXRoIG5lc3RlZCBmb3JtIGZpZWxkcyBpbiBhIG11bHRpLXBhcnQgUE9TVAoqIEZpeGVkIGFuIGlzc3VlIHdpdGggdXNpbmcgdGhlIGBqc29uYCByZXF1ZXN0IG9wdGlvbiBmb3IgUE9TVCByZXF1ZXN0cwoqIEFkZGVkIGBUb0FycmF5SW50ZXJmYWNlYCB0byBgR3V6emxlSHR0cFxDb29raWVcQ29va2llSmFyYAoKIyMgNC4xLjAgLSAyMDE0LTA1LTI3CgoqIEFkZGVkIGEgYGpzb25gIHJlcXVlc3Qgb3B0aW9uIHRvIGVhc2lseSBzZXJpYWxpemUgSlNPTiBwYXlsb2Fkcy4KKiBBZGRlZCBhIGBHdXp6bGVIdHRwXGpzb25fZGVjb2RlKClgIHdyYXBwZXIgdG8gc2FmZWx5IHBhcnNlIEpTT04uCiogQWRkZWQgYHNldFBvcnQoKWAgYW5kIGBnZXRQb3J0KClgIHRvIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAuCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvdmlkZSBhbiBlbWl0dGVyIHRvIGEgY2xpZW50IGluIHRoZSBjbGllbnQgY29uc3RydWN0b3IuCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gcGVyc2lzdCBhIGNvb2tpZSBzZXNzaW9uIHVzaW5nICRfU0VTU0lPTi4KKiBBZGRlZCBhIHRyYWl0IHRoYXQgY2FuIGJlIHVzZWQgdG8gYWRkIGV2ZW50IGxpc3RlbmVycyB0byBhbiBpdGVyYXRvci4KKiBSZW1vdmVkIHJlcXVlc3QgbWV0aG9kIGNvbnN0YW50cyBmcm9tIFJlcXVlc3RJbnRlcmZhY2UuCiogRml4ZWQgd2FybmluZyB3aGVuIGludmFsaWQgcmVxdWVzdCBzdGFydC1saW5lcyBhcmUgcmVjZWl2ZWQuCiogVXBkYXRlZCBNZXNzYWdlRmFjdG9yeSB0byB3b3JrIHdpdGggY3VzdG9tIHJlcXVlc3Qgb3B0aW9uIG1ldGhvZHMuCiogVXBkYXRlZCBjYWNlcnQgYnVuZGxlIHRvIGxhdGVzdCBidWlsZC4KCjQuMC4yICgyMDE0LTA0LTE2KQotLS0tLS0tLS0tLS0tLS0tLS0KCiogUHJveHkgcmVxdWVzdHMgdXNpbmcgdGhlIFN0cmVhbUFkYXB0ZXIgbm93IHByb3Blcmx5IHVzZSByZXF1ZXN0X2Z1bGx1cmkgKCM2MzIpCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gc2V0IHNjYWxhcnMgYXMgUE9TVCBmaWVsZHMgKCM2MjgpCgojIyA0LjAuMSAtIDIwMTQtMDQtMDQKCiogVGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgYSByZXNwb25zZSBpcyBub3cgc2V0IGFzIHRoZSBleGNlcHRpb24gY29kZSBvZgogIFJlcXVlc3RFeGNlcHRpb24gb2JqZWN0cy4KKiAzMDMgcmVkaXJlY3RzIHdpbGwgbm93IGNvcnJlY3RseSBzd2l0Y2ggZnJvbSBQT1NUIHRvIEdFVCByZXF1ZXN0cy4KKiBUaGUgZGVmYXVsdCBwYXJhbGxlbCBhZGFwdGVyIG9mIGEgY2xpZW50IG5vdyBjb3JyZWN0bHkgdXNlcyB0aGUgTXVsdGlBZGFwdGVyLgoqIEhhc0RhdGFUcmFpdCBub3cgaW5pdGlhbGl6ZXMgdGhlIGludGVybmFsIGRhdGEgYXJyYXkgYXMgYW4gZW1wdHkgYXJyYXkgc28KICB0aGF0IHRoZSB0b0FycmF5KCkgbWV0aG9kIGFsd2F5cyByZXR1cm5zIGFuIGFycmF5LgoKIyMgNC4wLjAgLSAyMDE0LTAzLTI5CgoqIEZvciBpbmZvcm1hdGlvbiBvbiBjaGFuZ2VzIGFuZCB1cGdyYWRpbmcsIHNlZToKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9ibG9iL21hc3Rlci9VUEdSQURJTkcubWQjM3gtdG8tNDAKKiBBZGRlZCBgR3V6emxlSHR0cFxiYXRjaCgpYCBhcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGZvciBzZW5kaW5nIHJlcXVlc3RzIGluCiAgcGFyYWxsZWwgd2l0aG91dCBuZWVkaW5nIHRvIHdyaXRlIGFzeW5jaHJvbm91cyBjb2RlLgoqIFJlc3RydWN0dXJlZCBob3cgZXZlbnRzIGFyZSBhZGRlZCB0byBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNlbmRBbGwoKWAuCiAgWW91IGNhbiBub3cgcGFzcyBhIGNhbGxhYmxlIG9yIGFuIGFycmF5IG9mIGFzc29jaWF0aXZlIGFycmF5cyB3aGVyZSBlYWNoCiAgYXNzb2NpYXRpdmUgYXJyYXkgY29udGFpbnMgdGhlICJmbiIsICJwcmlvcml0eSIsIGFuZCAib25jZSIga2V5cy4KCiMjIDQuMC4wLnJjLTIgLSAyMDE0LTAzLTI1CgoqIFJlbW92ZWQgYGdldENvbmZpZygpYCBhbmQgYHNldENvbmZpZygpYCBmcm9tIGNsaWVudHMgdG8gYXZvaWQgY29uZnVzaW9uCiAgYXJvdW5kIHdoZXRoZXIgdGhpbmdzIGxpa2UgYmFzZV91cmwsIG1lc3NhZ2VfZmFjdG9yeSwgZXRjLiBzaG91bGQgYmUgYWJsZSB0bwogIGJlIHJldHJpZXZlZCBvciBtb2RpZmllZC4KKiBBZGRlZCBgZ2V0RGVmYXVsdE9wdGlvbigpYCBhbmQgYHNldERlZmF1bHRPcHRpb24oKWAgdG8gQ2xpZW50SW50ZXJmYWNlCiogZnVuY3Rpb25zLnBocCBmdW5jdGlvbnMgd2VyZSByZW5hbWVkIHVzaW5nIHNuYWtlX2Nhc2UgdG8gbWF0Y2ggUEhQIGlkaW9tcwoqIEFkZGVkIHN1cHBvcnQgZm9yIGBIVFRQX1BST1hZYCwgYEhUVFBTX1BST1hZYCwgYW5kCiAgYEdVWlpMRV9DVVJMX1NFTEVDVF9USU1FT1VUYCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGN1c3RvbSBgc2VuZEFsbCgpYCBldmVudCBwcmlvcml0aWVzCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBjdXN0b20gc3RyZWFtIGNvbnRleHQgb3B0aW9ucyB0byB0aGUgc3RyZWFtCiAgYWRhcHRlci4KKiBBZGRlZCBhIGZ1bmN0aW9ucy5waHAgZnVuY3Rpb24gZm9yIGBnZXRfcGF0aCgpYCBhbmQgYHNldF9wYXRoKClgCiogQ3VybEFkYXB0ZXIgYW5kIE11bHRpQWRhcHRlciBub3cgdXNlIGEgY2FsbGFibGUgdG8gZ2VuZXJhdGUgY3VybCByZXNvdXJjZXMKKiBNb2NrQWRhcHRlciBub3cgcHJvcGVybHkgcmVhZHMgYSBib2R5IGFuZCBlbWl0cyBhIGBoZWFkZXJzYCBldmVudAoqIFVwZGF0ZWQgVXJsIGNsYXNzIHRvIGNoZWNrIGlmIGEgc2NoZW1lIGFuZCBob3N0IGFyZSBzZXQgYmVmb3JlIGFkZGluZyAiOiIKICBhbmQgIi8vIi4gVGhpcyBhbGxvd3MgZW1wdHkgVXJsIChlLmcuLCAiIikgdG8gYmUgc2VyaWFsaXplZCBhcyAiIi4KKiBQYXJzaW5nIGludmFsaWQgWE1MIG5vIGxvbmdlciBlbWl0cyB3YXJuaW5ncwoqIEN1cmwgY2xhc3NlcyBub3cgcHJvcGVybHkgdGhyb3cgQWRhcHRlckV4Y2VwdGlvbnMKKiBWYXJpb3VzIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMKKiBTdHJlYW1zIGFyZSBjcmVhdGVkIHdpdGggdGhlIGZhc3RlciBgU3RyZWFtXGNyZWF0ZSgpYCBmdW5jdGlvbgoqIE1hcmtlZCBkZXByZWNhdGlvbl9wcm94eSgpIGFzIGludGVybmFsCiogVGVzdCBzZXJ2ZXIgaXMgbm93IGEgY29sbGVjdGlvbiBvZiBzdGF0aWMgbWV0aG9kcyBvbiBhIGNsYXNzCgojIyA0LjAuMC1yYy4xIC0gMjAxNC0wMy0xNQoKKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvYmxvYi9tYXN0ZXIvVVBHUkFESU5HLm1kIzN4LXRvLTQwCgojIyAzLjguMSAtIDIwMTQtMDEtMjgKCiogQnVnOiBBbHdheXMgdXNpbmcgR0VUIHJlcXVlc3RzIHdoZW4gcmVkaXJlY3RpbmcgZnJvbSBhIDMwMyByZXNwb25zZQoqIEJ1ZzogQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCBpcyBub3cgY29ycmVjdGx5IHNldCB0byBmYWxzZSB3aGVuIHNldHRpbmcgYCRjZXJ0aWZpY2F0ZUF1dGhvcml0eWAgdG8gZmFsc2UgaW4KICBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXRTc2xWZXJpZmljYXRpb24oKWAKKiBCdWc6IFJlZGlyZWN0UGx1Z2luIG5vdyB1c2VzIHN0cmljdCBSRkMgMzk4NiBjb21wbGlhbmNlIHdoZW4gY29tYmluaW5nIGEgYmFzZSBVUkwgd2l0aCBhIHJlbGF0aXZlIFVSTAoqIEJ1ZzogVGhlIGJvZHkgb2YgYSByZXF1ZXN0IGNhbiBub3cgYmUgc2V0IHRvIGAiMCJgCiogU2VuZGluZyBQSFAgc3RyZWFtIHJlcXVlc3RzIG5vIGxvbmdlciBmb3JjZXMgYEhUVFAvMS4wYAoqIEFkZGluZyBtb3JlIGluZm9ybWF0aW9uIHRvIEV4Y2VwdGlvbkNvbGxlY3Rpb24gZXhjZXB0aW9ucyBzbyB0aGF0IHVzZXJzIGhhdmUgbW9yZSBjb250ZXh0LCBpbmNsdWRpbmcgYSBzdGFjayB0cmFjZSBvZgogIGVhY2ggc3ViLWV4Y2VwdGlvbgoqIFVwZGF0ZWQgdGhlIGAkcmVmYCBhdHRyaWJ1dGUgaW4gc2VydmljZSBkZXNjcmlwdGlvbnMgdG8gbWVyZ2Ugb3ZlciBhbnkgZXhpc3RpbmcgcGFyYW1ldGVycyBvZiBhIHNjaGVtYSAocmF0aGVyIHRoYW4KICBjbG9iYmVyaW5nIGV2ZXJ5dGhpbmcpLgoqIE1lcmdpbmcgVVJMcyB3aWxsIG5vdyB1c2UgdGhlIHF1ZXJ5IHN0cmluZyBvYmplY3QgZnJvbSB0aGUgcmVsYXRpdmUgVVJMICh0aHVzIGFsbG93aW5nIGN1c3RvbSBxdWVyeSBhZ2dyZWdhdG9ycykKKiBRdWVyeSBzdHJpbmdzIGFyZSBub3cgcGFyc2VkIGluIGEgd2F5IHRoYXQgdGhleSBkbyBubyBjb252ZXJ0IGVtcHR5IGtleXMgd2l0aCBubyB2YWx1ZSB0byBoYXZlIGEgZGFuZ2xpbmcgYD1gLgogIEZvciBleGFtcGxlIGBmb28mYmFyPWJhemAgaXMgbm93IGNvcnJlY3RseSBwYXJzZWQgYW5kIHJlY29nbml6ZWQgYXMgYGZvbyZiYXI9YmF6YCByYXRoZXIgdGhhbiBgZm9vPSZiYXI9YmF6YC4KKiBOb3cgcHJvcGVybHkgZXNjYXBpbmcgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBkZWxpbWl0ZXIgd2hlbiBtYXRjaGluZyBDb29raWUgZG9tYWlucy4KKiBOZXR3b3JrIGFjY2VzcyBpcyBub3cgZGlzYWJsZWQgd2hlbiBsb2FkaW5nIFhNTCBkb2N1bWVudHMKCiMjIDMuOC4wIC0gMjAxMy0xMi0wNQoKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBkZWZpbmUgYSBQT1NUIG5hbWUgZm9yIGEgZmlsZQoqIEpTT04gcmVzcG9uc2UgcGFyc2luZyBub3cgcHJvcGVybHkgd2Fsa3MgYWRkaXRpb25hbFByb3BlcnRpZXMKKiBjVVJMIGVycm9yIGNvZGUgMTggaXMgbm93IHJldHJpZWQgYXV0b21hdGljYWxseSBpbiB0aGUgQmFja29mZlBsdWdpbgoqIEZpeGVkIGEgY1VSTCBlcnJvciB3aGVuIFVSTHMgY29udGFpbiBmcmFnbWVudHMKKiBGaXhlZCBhbiBpc3N1ZSBpbiB0aGUgQmFja29mZlBsdWdpbiByZXRyeSBldmVudCB3aGVyZSBpdCB3YXMgdHJ5aW5nIHRvIGFjY2VzcyBhbGwgZXhjZXB0aW9ucyBhcyBpZiB0aGV5IHdlcmUKICBDdXJsRXhjZXB0aW9ucwoqIENVUkxPUFRfUFJPR1JFU1MgZnVuY3Rpb24gZml4IGZvciBQSFAgNS41ICg2OWZjYzFlKQoqIEFkZGVkIHRoZSBhYmlsaXR5IGZvciBHdXp6bGUgdG8gd29yayB3aXRoIG9sZGVyIHZlcnNpb25zIG9mIGNVUkwgdGhhdCBkbyBub3Qgc3VwcG9ydCBgQ1VSTE9QVF9USU1FT1VUX01TYAoqIEZpeGVkIGEgYnVnIHRoYXQgd2FzIGVuY291bnRlcmVkIHdoZW4gcGFyc2luZyBlbXB0eSBoZWFkZXIgcGFyYW1ldGVycwoqIFVyaVRlbXBsYXRlIG5vdyBoYXMgYSBgc2V0UmVnZXgoKWAgbWV0aG9kIHRvIG1hdGNoIHRoZSBkb2NzCiogVGhlIGBkZWJ1Z2AgcmVxdWVzdCBwYXJhbWV0ZXIgbm93IGNoZWNrcyBpZiBpdCBpcyB0cnV0aHkgcmF0aGVyIHRoYW4gaWYgaXQgZXhpc3RzCiogU2V0dGluZyB0aGUgYGRlYnVnYCByZXF1ZXN0IHBhcmFtZXRlciB0byB0cnVlIHNob3dzIHZlcmJvc2UgY1VSTCBvdXRwdXQgaW5zdGVhZCBvZiB1c2luZyB0aGUgTG9nUGx1Z2luCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gY29tYmluZSBVUkxzIHVzaW5nIHN0cmljdCBSRkMgMzk4NiBjb21wbGlhbmNlCiogQ29tbWFuZCBvYmplY3RzIGNhbiBub3cgcmV0dXJuIHRoZSB2YWxpZGF0aW9uIGVycm9ycyBlbmNvdW50ZXJlZCBieSB0aGUgY29tbWFuZAoqIFZhcmlvdXMgZml4ZXMgdG8gY2FjaGUgcmV2YWxpZGF0aW9uICgjNDM3IGFuZCAyOTc5N2U1KQoqIFZhcmlvdXMgZml4ZXMgdG8gdGhlIEFzeW5jUGx1Z2luCiogQ2xlYW5lZCB1cCBidWlsZCBzY3JpcHRzCgojIyAzLjcuNCAtIDIwMTMtMTAtMDIKCiogQnVnIGZpeDogMCBpcyBub3cgYW4gYWxsb3dlZCB2YWx1ZSBpbiBhIGRlc2NyaXB0aW9uIHBhcmFtZXRlciB0aGF0IGhhcyBhIGRlZmF1bHQgdmFsdWUgKCM0MzApCiogQnVnIGZpeDogU2NoZW1hRm9ybWF0dGVyIG5vdyByZXR1cm5zIGFuIGludGVnZXIgd2hlbiBmb3JtYXR0aW5nIHRvIGEgVW5peCB0aW1lc3RhbXAKICAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLXNkay1waHAvaXNzdWVzLzE0NykKKiBCdWcgZml4OiBDbGVhbmVkIHVwIGFuZCBmaXhlZCBVUkwgZG90IHNlZ21lbnQgcmVtb3ZhbCB0byBwcm9wZXJseSByZXNvbHZlIGludGVybmFsIGRvdHMKKiBNaW5pbXVtIFBIUCB2ZXJzaW9uIGlzIG5vdyBwcm9wZXJseSBzcGVjaWZpZWQgYXMgNS4zLjMgKHVwIGZyb20gNS4zLjIpICgjNDIwKQoqIFVwZGF0ZWQgdGhlIGJ1bmRsZWQgY2FjZXJ0LnBlbSAoIzQxOSkKKiBPYXV0aFBsdWdpbiBub3cgc3VwcG9ydHMgYWRkaW5nIGF1dGhlbnRpY2F0aW9uIHRvIGhlYWRlcnMgb3IgcXVlcnkgc3RyaW5nICgjNDI1KQoKIyMgMy43LjMgLSAyMDEzLTA5LTA4CgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGdldCB0aGUgZXhjZXB0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIHJlcXVlc3QvY29tbWFuZCB3aGVuIHVzaW5nIGBNdWx0aVRyYW5zZmVyRXhjZXB0aW9uYCBhbmQKICBgQ29tbWFuZFRyYW5zZmVyRXhjZXB0aW9uYC4KKiBTZXR0aW5nIGBhZGRpdGlvbmFsUGFyYW1ldGVyc2Agb2YgYSByZXNwb25zZSB0byBmYWxzZSBpcyBub3cgaG9ub3JlZCB3aGVuIHBhcnNpbmcgcmVzcG9uc2VzIHdpdGggYSBzZXJ2aWNlIGRlc2NyaXB0aW9uCiogU2NoZW1hcyBhcmUgb25seSBpbmplY3RlZCBpbnRvIHJlc3BvbnNlIG1vZGVscyB3aGVuIGV4cGxpY2l0bHkgY29uZmlndXJlZC4KKiBObyBsb25nZXIgZ3Vlc3NpbmcgQ29udGVudC1UeXBlIGJhc2VkIG9uIHRoZSBwYXRoIG9mIGEgcmVxdWVzdC4gQ29udGVudC1UeXBlIGlzIG5vdyBvbmx5IGd1ZXNzZWQgYmFzZWQgb24gdGhlIHBhdGggb2YKICBhbiBFbnRpdHlCb2R5LgoqIEJ1ZyBmaXg6IENodW5rZWRJdGVyYXRvciBjYW4gbm93IHByb3Blcmx5IGNodW5rIGEgXFRyYXZlcnNhYmxlIGFzIHdlbGwgYXMgYW4gXEl0ZXJhdG9yLgoqIEJ1ZyBmaXg6IEZpbHRlckl0ZXJhdG9yIG5vdyByZWxpZXMgb24gYFxJdGVyYXRvcmAgaW5zdGVhZCBvZiBgXFRyYXZlcnNhYmxlYC4KKiBCdWcgZml4OiBHcmFjZWZ1bGx5IGhhbmRsaW5nIG1hbGZvcm1lZCByZXNwb25zZXMgaW4gUmVxdWVzdE1lZGlhdG9yOjp3cml0ZVJlc3BvbnNlQm9keSgpCiogQnVnIGZpeDogUmVwbGFjZWQgY2FsbCB0byBjYW5DYWNoZSB3aXRoIGNhbkNhY2hlUmVxdWVzdCBpbiB0aGUgQ2FsbGJhY2tDYW5DYWNoZVN0cmF0ZWd5IG9mIHRoZSBDYWNoZVBsdWdpbgoqIEJ1ZyBmaXg6IFZpc2l0aW5nIFhNTCBhdHRyaWJ1dGVzIGZpcnN0IGJlZm9yZSB2aXNpdGluZyBYTUwgY2hpbGRyZW4gd2hlbiBzZXJpYWxpemluZyByZXF1ZXN0cwoqIEJ1ZyBmaXg6IFByb3Blcmx5IHBhcnNpbmcgaGVhZGVycyB0aGF0IGNvbnRhaW4gY29tbWFzIGNvbnRhaW5lZCBpbiBxdW90ZXMKKiBCdWcgZml4OiBtaW1ldHlwZSBndWVzc2luZyBiYXNlZCBvbiBhIGZpbGVuYW1lIGlzIG5vdyBjYXNlLWluc2Vuc2l0aXZlCgojIyAzLjcuMiAtIDIwMTMtMDgtMDIKCiogQnVnIGZpeDogUHJvcGVybHkgVVJMIGVuY29kaW5nIHBhdGhzIHdoZW4gdXNpbmcgdGhlIFBIUC1vbmx5IHZlcnNpb24gb2YgdGhlIFVyaVRlbXBsYXRlIGV4cGFuZGVyCiAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2lzc3Vlcy8zNzEKKiBCdWcgZml4OiBDb29raWUgZG9tYWlucyBhcmUgbm93IG1hdGNoZWQgY29ycmVjdGx5IGFjY29yZGluZyB0byBSRkMgNjI2NQogIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMzc3CiogQnVnIGZpeDogR0VUIHBhcmFtZXRlcnMgYXJlIG5vdyB1c2VkIHdoZW4gY2FsY3VsYXRpbmcgYW4gT0F1dGggc2lnbmF0dXJlCiogQnVnIGZpeDogRml4ZWQgYW4gaXNzdWUgd2l0aCBjYWNoZSByZXZhbGlkYXRpb24gd2hlcmUgdGhlIElmLU5vbmUtTWF0Y2ggaGVhZGVyIHdhcyBiZWluZyBkb3VibGUgcXVvdGVkCiogYEd1enpsZVxDb21tb25cQWJzdHJhY3RIYXNEaXNwYXRjaGVyOjpkaXNwYXRjaCgpYCBub3cgcmV0dXJucyB0aGUgZXZlbnQgdGhhdCB3YXMgZGlzcGF0Y2hlZAoqIGBHdXp6bGVcSHR0cFxRdWVyeVN0cmluZzo6ZmFjdG9yeSgpYCBub3cgZ3Vlc3NlcyB0aGUgbW9zdCBhcHByb3ByaWF0ZSBxdWVyeSBhZ2dyZWdhdG9yIHRvIHVzZWQgYmFzZWQgb24gdGhlIGlucHV0LgogIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9pc3N1ZXMvMzc5CiogQWRkZWQgYSB3YXkgdG8gYWRkIGN1c3RvbSBkb21haW4gb2JqZWN0cyB0byBzZXJ2aWNlIGRlc2NyaXB0aW9uIHBhcnNpbmcgdXNpbmcgdGhlIGBvcGVyYXRpb24ucGFyc2VfY2xhc3NgIGV2ZW50LiBTZWUKICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9wdWxsLzM4MAoqIGNVUkwgbXVsdGkgY2xlYW51cCBhbmQgb3B0aW1pemF0aW9ucwoKIyMgMy43LjEgLSAyMDEzLTA3LTA1CgoqIEJ1ZyBmaXg6IFNldHRpbmcgZGVmYXVsdCBvcHRpb25zIG9uIGEgY2xpZW50IG5vdyB3b3JrcwoqIEJ1ZyBmaXg6IFNldHRpbmcgb3B0aW9ucyBvbiBIRUFEIHJlcXVlc3RzIG5vdyB3b3Jrcy4gU2VlICMzNTIKKiBCdWcgZml4OiBNb3Zpbmcgc3RyZWFtIGZhY3RvcnkgYmVmb3JlIHNlbmQgZXZlbnQgdG8gYmVmb3JlIGJ1aWxkaW5nIHRoZSBzdHJlYW0uIFNlZSAjMzUzCiogQnVnIGZpeDogQ29va2llcyBubyBsb25nZXIgbWF0Y2ggb24gSVAgYWRkcmVzc2VzIHBlciBSRkMgNjI2NQoqIEJ1ZyBmaXg6IENvcnJlY3RseSBwYXJzaW5nIGhlYWRlciBwYXJhbWV0ZXJzIHRoYXQgYXJlIGluIGA8PmAgYW5kIHF1b3RlcwoqIEFkZGVkIGBjZXJ0YCBhbmQgYHNzbF9rZXlgIGFzIHJlcXVlc3Qgb3B0aW9ucwoqIGBIb3N0YCBoZWFkZXIgY2FuIG5vdyBkaXZlcmdlIGZyb20gdGhlIGhvc3QgcGFydCBvZiBhIFVSTCBpZiB0aGUgaGVhZGVyIGlzIHNldCBtYW51YWxseQoqIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXExvY2F0aW9uVmlzaXRvclxSZXF1ZXN0XFhtbFZpc2l0b3JgIHdhcyByZXdyaXR0ZW4gdG8gY2hhbmdlIGZyb20gdXNpbmcgU2ltcGxlWE1MIHRvIFhNTFdyaXRlcgoqIE9BdXRoIHBhcmFtZXRlcnMgYXJlIG9ubHkgYWRkZWQgdmlhIHRoZSBwbHVnaW4gaWYgdGhleSBhcmVuJ3QgYWxyZWFkeSBzZXQKKiBFeGNlcHRpb25zIGFyZSBub3cgdGhyb3duIHdoZW4gYSBVUkwgY2Fubm90IGJlIHBhcnNlZAoqIFJldHVybmluZyBgZmFsc2VgIGlmIGBHdXp6bGVcSHR0cFxFbnRpdHlCb2R5OjpnZXRDb250ZW50TWQ1KClgIGZhaWxzCiogTm90IHNldHRpbmcgYSBgQ29udGVudC1NRDVgIG9uIGEgY29tbWFuZCBpZiBjYWxjdWxhdGluZyB0aGUgQ29udGVudC1NRDUgZmFpbHMgdmlhIHRoZSBDb21tYW5kQ29udGVudE1kNVBsdWdpbgoKIyMgMy43LjAgLSAyMDEzLTA2LTEwCgoqIFNlZSBVUEdSQURJTkcubWQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHVwZ3JhZGUuCiogUmVxdWVzdHMgbm93IHN1cHBvcnQgdGhlIGFiaWxpdHkgdG8gc3BlY2lmeSBhbiBhcnJheSBvZiAkb3B0aW9ucyB3aGVuIGNyZWF0aW5nIGEgcmVxdWVzdCB0byBtb3JlIGVhc2lseSBtb2RpZnkgYQogIHJlcXVlc3QuIFlvdSBjYW4gcGFzcyBhICdyZXF1ZXN0Lm9wdGlvbnMnIGNvbmZpZ3VyYXRpb24gc2V0dGluZyB0byBhIGNsaWVudCB0byBhcHBseSBkZWZhdWx0IHJlcXVlc3Qgb3B0aW9ucyB0bwogIGV2ZXJ5IHJlcXVlc3QgY3JlYXRlZCBieSBhIGNsaWVudCAoZS5nLiBkZWZhdWx0IHF1ZXJ5IHN0cmluZyB2YXJpYWJsZXMsIGhlYWRlcnMsIGN1cmwgb3B0aW9ucywgZXRjLikuCiogQWRkZWQgYSBzdGF0aWMgZmFjYWRlIGNsYXNzIHRoYXQgYWxsb3dzIHlvdSB0byB1c2UgR3V6emxlIHdpdGggc3RhdGljIG1ldGhvZHMgYW5kIG1vdW50IHRoZSBjbGFzcyB0byBgXEd1enpsZWAuCiAgU2VlIGBHdXp6bGVcSHR0cFxTdGF0aWNDbGllbnQ6Om1vdW50YC4KKiBBZGRlZCBgY29tbWFuZC5yZXF1ZXN0X29wdGlvbnNgIHRvIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXEFic3RyYWN0Q29tbWFuZGAgdG8gcGFzcyByZXF1ZXN0IG9wdGlvbnMgdG8gcmVxdWVzdHMKICAgICAgY3JlYXRlZCBieSBhIGNvbW1hbmQgKGUuZy4gY3VzdG9tIGhlYWRlcnMsIHF1ZXJ5IHN0cmluZyB2YXJpYWJsZXMsIHRpbWVvdXQgc2V0dGluZ3MsIGV0Yy4pLgoqIFN0cmVhbSBzaXplIGluIGBHdXp6bGVcU3RyZWFtXFBocFN0cmVhbVJlcXVlc3RGYWN0b3J5YCB3aWxsIG5vdyBiZSBzZXQgaWYgQ29udGVudC1MZW5ndGggaXMgcmV0dXJuZWQgaW4gdGhlCiAgaGVhZGVycyBvZiBhIHJlc3BvbnNlCiogQWRkZWQgYEd1enpsZVxDb21tb25cQ29sbGVjdGlvbjo6c2V0UGF0aCgkcGF0aCwgJHZhbHVlKWAgdG8gc2V0IGEgdmFsdWUgaW50byBhbiBhcnJheSB1c2luZyBhIG5lc3RlZCBrZXkKICAoZS5nLiBgJGNvbGxlY3Rpb24tPnNldFBhdGgoJ2Zvby9iYXovYmFyJywgJ3Rlc3QnKTsgZWNobyAkY29sbGVjdGlvblsnZm9vJ11bJ2JhciddWydiYXInXTtgKQoqIFNlcnZpY2VCdWlsZGVycyBub3cgc3VwcG9ydCBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIGFyYml0cmFyeSBkYXRhCiogQ2FjaGVQbHVnaW4gY2FuIG5vdyBwdXJnZSBhbGwgcmVzb3VyY2VzIGZvciBhIGdpdmVuIFVSSQoqIENhY2hlUGx1Z2luIGNhbiBhdXRvbWF0aWNhbGx5IHB1cmdlIG1hdGNoaW5nIGNhY2hlZCBpdGVtcyB3aGVuIGEgbm9uLWlkZW1wb3RlbnQgcmVxdWVzdCBpcyBzZW50IHRvIGEgcmVzb3VyY2UKKiBDYWNoZVBsdWdpbiBub3cgdXNlcyB0aGUgVmFyeSBoZWFkZXIgdG8gZGV0ZXJtaW5lIGlmIGEgcmVzb3VyY2UgaXMgYSBjYWNoZSBoaXQKKiBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXNwb25zZWAgbm93IGltcGxlbWVudHMgYFxTZXJpYWxpemFibGVgCiogQWRkZWQgYEd1enpsZVxDYWNoZVxDYWNoZUFkYXB0ZXJGYWN0b3J5Ojpmcm9tQ2FjaGUoKWAgdG8gbW9yZSBlYXNpbHkgY3JlYXRlIGNhY2hlIGFkYXB0ZXJzCiogYEd1enpsZVxTZXJ2aWNlXENsaWVudEludGVyZmFjZTo6ZXhlY3V0ZSgpYCBub3cgYWNjZXB0cyBhbiBhcnJheSwgc2luZ2xlIGNvbW1hbmQsIG9yIFRyYXZlcnNhYmxlCiogRml4ZWQgYSBidWcgaW4gYEd1enpsZVxIdHRwXE1lc3NhZ2VcSGVhZGVyXExpbms6OmFkZExpbmsoKWAKKiBCZXR0ZXIgaGFuZGxpbmcgb2YgY2FsY3VsYXRpbmcgdGhlIHNpemUgb2YgYSBzdHJlYW0gaW4gYEd1enpsZVxTdHJlYW1cU3RyZWFtYCB1c2luZyBmc3RhdCgpIGFuZCBjYWNoaW5nIHRoZSBzaXplCiogYEd1enpsZVxDb21tb25cRXhjZXB0aW9uXEV4Y2VwdGlvbkNvbGxlY3Rpb25gIG5vdyBjcmVhdGVzIGEgbW9yZSByZWFkYWJsZSBleGNlcHRpb24gbWVzc2FnZQoqIEZpeGluZyBCQyBicmVhazogQWRkZWQgYmFjayB0aGUgTW9ub2xvZ0xvZ0FkYXB0ZXIgaW1wbGVtZW50YXRpb24gcmF0aGVyIHRoYW4gZXh0ZW5kaW5nIGZyb20gUHNyTG9nIHNvIHRoYXQgb2xkZXIKICBTeW1mb255IHVzZXJzIGNhbiBzdGlsbCB1c2UgdGhlIG9sZCB2ZXJzaW9uIG9mIE1vbm9sb2cuCiogRml4aW5nIEJDIGJyZWFrOiBBZGRlZCB0aGUgaW1wbGVtZW50YXRpb24gYmFjayBpbiBmb3IgYEd1enpsZVxIdHRwXE1lc3NhZ2VcQWJzdHJhY3RNZXNzYWdlOjpnZXRUb2tlbml6ZWRIZWFkZXIoKWAuCiAgTm93IHRyaWdnZXJpbmcgYW4gRV9VU0VSX0RFUFJFQ0FURUQgd2FybmluZyB3aGVuIHVzZWQuIFVzZSBgJG1lc3NhZ2UtPmdldEhlYWRlcigpLT5wYXJzZVBhcmFtcygpYC4KKiBTZXZlcmFsIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50cyB0byBgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uYAoqIEFkZGVkIGFuIGAkb3B0aW9uc2AgYXJndW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgb2YgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZWA6CiAgY3JlYXRlUmVxdWVzdCwgaGVhZCwgZGVsZXRlLCBwdXQsIHBhdGNoLCBwb3N0LCBvcHRpb25zLCBwcmVwYXJlUmVxdWVzdAoqIEFkZGVkIGFuIGAkb3B0aW9uc2AgYXJndW1lbnQgdG8gdGhlIGVuZCBvZiBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0XFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlOjpjcmVhdGVSZXF1ZXN0KClgCiogQWRkZWQgYW4gYGFwcGx5T3B0aW9ucygpYCBtZXRob2QgdG8gYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdFxSZXF1ZXN0RmFjdG9yeUludGVyZmFjZWAKKiBDaGFuZ2VkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldCgkdXJpID0gbnVsbCwgJGhlYWRlcnMgPSBudWxsLCAkYm9keSA9IG51bGwpYCB0bwogIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldCgkdXJpID0gbnVsbCwgJGhlYWRlcnMgPSBudWxsLCAkb3B0aW9ucyA9IGFycmF5KCkpYC4gWW91IGNhbiBzdGlsbCBwYXNzIGluIGEKICByZXNvdXJjZSwgc3RyaW5nLCBvciBFbnRpdHlCb2R5IGludG8gdGhlICRvcHRpb25zIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBkb3dubG9hZCBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UuCiogQ2hhbmdlZCBgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjpfX2NvbnN0cnVjdCgkZGF0YSlgIHRvIG5vIGxvbmdlciBhY2NlcHRzIGEgbnVsbCB2YWx1ZSBmb3IgYCRkYXRhYCBidXQgYQogIGRlZmF1bHQgYGFycmF5KClgCiogQWRkZWQgYEd1enpsZVxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlOjppc1JlcGVhdGFibGVgCiogUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXREZWZhdWx0SGVhZGVycygpLiBVc2UKICAkY2xpZW50LT5nZXRDb25maWcoKS0+c2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2hlYWRlcnMve2hlYWRlcl9uYW1lfScsICd2YWx1ZScpYC4gb3IKICAkY2xpZW50LT5nZXRDb25maWcoKS0+c2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2hlYWRlcnMnLCBhcnJheSgnaGVhZGVyX25hbWUnID0+ICd2YWx1ZScpKWAuCiogUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXREZWZhdWx0SGVhZGVycygpLiBVc2UgJGNsaWVudC0+Z2V0Q29uZmlnKCktPmdldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzJylgLgoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6ZXhwYW5kVGVtcGxhdGUoKWAKKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldFJlcXVlc3RGYWN0b3J5KClgCiogUmVtb3ZlZCBgR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpnZXRDdXJsTXVsdGkoKWAKKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OmNhbkNhY2hlYAoqIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6c2V0SXNSZWRpcmVjdGAKKiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OmlzUmVkaXJlY3RgCiogTWFkZSBgR3V6emxlXEh0dHBcQ2xpZW50OjpleHBhbmRUZW1wbGF0ZWAgYW5kIGBnZXRVcmlUZW1wbGF0ZWAgcHJvdGVjdGVkIG1ldGhvZHMuCiogWW91IGNhbiBub3cgZW5hYmxlIEVfVVNFUl9ERVBSRUNBVEVEIHdhcm5pbmdzIHRvIHNlZSBpZiB5b3UgYXJlIHVzaW5nIGEgZGVwcmVjYXRlZCBtZXRob2QgYnkgc2V0dGluZwogIGBHdXp6bGVcQ29tbW9uXFZlcnNpb246OiRlbWl0V2FybmluZ3NgIHRvIHRydWUuCiogTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmlzUmVzcG9uc2VCb2R5UmVwZWF0YWJsZSgpYCBhcyBkZXByZWNhdGVkLiBVc2UKICAgICAgYCRyZXF1ZXN0LT5nZXRSZXNwb25zZUJvZHkoKS0+aXNSZXBlYXRhYmxlKClgIGluc3RlYWQuCiogTWFya2VkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OmNhbkNhY2hlKClgIGFzIGRlcHJlY2F0ZWQuIFVzZQogIGBHdXp6bGVcUGx1Z2luXENhY2hlXERlZmF1bHRDYW5DYWNoZVN0cmF0ZWd5LT5jYW5DYWNoZVJlcXVlc3QoKWAgaW5zdGVhZC4KKiBNYXJrZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6Y2FuQ2FjaGUoKWAgYXMgZGVwcmVjYXRlZC4gVXNlCiAgYEd1enpsZVxQbHVnaW5cQ2FjaGVcRGVmYXVsdENhbkNhY2hlU3RyYXRlZ3ktPmNhbkNhY2hlUmVxdWVzdCgpYCBpbnN0ZWFkLgoqIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpzZXRJc1JlZGlyZWN0KClgIGFzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgSGlzdG9yeVBsdWdpbiBpbnN0ZWFkLgoqIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0Ojppc1JlZGlyZWN0KClgIGFzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgSGlzdG9yeVBsdWdpbiBpbnN0ZWFkLgoqIE1hcmtlZCBgR3V6emxlXENhY2hlXENhY2hlQWRhcHRlckZhY3Rvcnk6OmZhY3RvcnkoKWAgYXMgZGVwcmVjYXRlZAoqIE1hcmtlZCAnY29tbWFuZC5oZWFkZXJzJywgJ2NvbW1hbmQucmVzcG9uc2VfYm9keScgYW5kICdjb21tYW5kLm9uX2NvbXBsZXRlJyBhcyBkZXByZWNhdGVkIGZvciBBYnN0cmFjdENvbW1hbmQuCiAgVGhlc2Ugd2lsbCB3b3JrIHRocm91Z2ggR3V6emxlIDQuMAoqIE1hcmtlZCAncmVxdWVzdC5wYXJhbXMnIGZvciBgR3V6emxlXEh0dHBcQ2xpZW50YCBhcyBkZXByZWNhdGVkLiBVc2UgW3JlcXVlc3Qub3B0aW9uc11bcGFyYW1zXS4KKiBNYXJrZWQgYEd1enpsZVxTZXJ2aWNlXENsaWVudDo6ZW5hYmxlTWFnaWNNZXRob2RzKClgIGFzIGRlcHJlY2F0ZWQuIE1hZ2ljIG1ldGhvZHMgY2FuIG5vIGxvbmdlciBiZSBkaXNhYmxlZCBvbiBhIEd1enpsZVxTZXJ2aWNlXENsaWVudC4KKiBNYXJrZWQgYEd1enpsZVxTZXJ2aWNlXENsaWVudDo6Z2V0RGVmYXVsdEhlYWRlcnMoKWAgYXMgZGVwcmVjYXRlZC4gVXNlICRjbGllbnQtPmdldENvbmZpZygpLT5nZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycycpYC4KKiBNYXJrZWQgYEd1enpsZVxTZXJ2aWNlXENsaWVudDo6c2V0RGVmYXVsdEhlYWRlcnMoKWAgYXMgZGVwcmVjYXRlZC4gVXNlICRjbGllbnQtPmdldENvbmZpZygpLT5zZXRQYXRoKCdyZXF1ZXN0Lm9wdGlvbnMvaGVhZGVycy97aGVhZGVyX25hbWV9JywgJ3ZhbHVlJylgLgoqIE1hcmtlZCBgR3V6emxlXFBhcnNlclxVcmxcVXJsUGFyc2VyYCBhcyBkZXByZWNhdGVkLiBKdXN0IHVzZSBQSFAncyBgcGFyc2VfdXJsKClgIGFuZCBwZXJjZW50IGVuY29kZSB5b3VyIFVURi04LgoqIE1hcmtlZCBgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjppbmplY3QoKWAgYXMgZGVwcmVjYXRlZC4KKiBNYXJrZWQgYEd1enpsZVxQbHVnaW5cQ3VybEF1dGhcQ3VybEF1dGhQbHVnaW5gIGFzIGRlcHJlY2F0ZWQuIFVzZSBgJGNsaWVudC0+Z2V0Q29uZmlnKCktPnNldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9hdXRoJywgYXJyYXkoJ3VzZXInLCAncGFzcycsICdCYXNpY3xEaWdlc3QnKTtgCiogQ2FjaGVLZXlQcm92aWRlckludGVyZmFjZSBhbmQgRGVmYXVsdENhY2hlS2V5UHJvdmlkZXIgYXJlIG5vIGxvbmdlciB1c2VkLiBBbGwgb2YgdGhpcyBsb2dpYyBpcyBoYW5kbGVkIGluIGEKICBDYWNoZVN0b3JhZ2VJbnRlcmZhY2UuIFRoZXNlIHR3byBvYmplY3RzIGFuZCBpbnRlcmZhY2Ugd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uCiogQWx3YXlzIHNldHRpbmcgWC1jYWNoZSBoZWFkZXJzIG9uIGNhY2hlZCByZXNwb25zZXMKKiBEZWZhdWx0IGNhY2hlIFRUTHMgYXJlIG5vdyBoYW5kbGVkIGJ5IHRoZSBDYWNoZVN0b3JhZ2VJbnRlcmZhY2Ugb2YgYSBDYWNoZVBsdWdpbgoqIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmNhY2hlKCRrZXksIFJlc3BvbnNlICRyZXNwb25zZSwgJHR0bCA9IG51bGwpYCBoYXMgY2hhbmdlZCB0byBgY2FjaGUoUmVxdWVzdEludGVyZmFjZQogICRyZXF1ZXN0LCBSZXNwb25zZSAkcmVzcG9uc2UpO2AKKiBgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlOjpmZXRjaCgka2V5KWAgaGFzIGNoYW5nZWQgdG8gYGZldGNoKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpO2AKKiBgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlOjpkZWxldGUoJGtleSlgIGhhcyBjaGFuZ2VkIHRvIGBkZWxldGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk7YAoqIEFkZGVkIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OnB1cmdlKCR1cmwpYAoqIGBEZWZhdWx0UmV2YWxpZGF0aW9uOjpfX2NvbnN0cnVjdChDYWNoZUtleVByb3ZpZGVySW50ZXJmYWNlICRjYWNoZUtleSwgQ2FjaGVTdG9yYWdlSW50ZXJmYWNlICRjYWNoZSwgQ2FjaGVQbHVnaW4KICAkcGx1Z2luKWAgaGFzIGNoYW5nZWQgdG8gYERlZmF1bHRSZXZhbGlkYXRpb246Ol9fY29uc3RydWN0KENhY2hlU3RvcmFnZUludGVyZmFjZSAkY2FjaGUsCiAgQ2FuQ2FjaGVTdHJhdGVneUludGVyZmFjZSAkY2FuQ2FjaGUgPSBudWxsKWAKKiBBZGRlZCBgUmV2YWxpZGF0aW9uSW50ZXJmYWNlOjpzaG91bGRSZXZhbGlkYXRlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIFJlc3BvbnNlICRyZXNwb25zZSlgCgojIyAzLjYuMCAtIDIwMTMtMDUtMjkKCiogU2VydmljZURlc2NyaXB0aW9uIG5vdyBpbXBsZW1lbnRzIFRvQXJyYXlJbnRlcmZhY2UKKiBBZGRlZCBjb21tYW5kLmhpZGRlbl9wYXJhbXMgdG8gYmxhY2tsaXN0IGNlcnRhaW4gaGVhZGVycyBmcm9tIGJlaW5nIHRyZWF0ZWQgYXMgYWRkaXRpb25hbFBhcmFtZXRlcnMKKiBHdXp6bGUgY2FuIG5vdyBjb3JyZWN0bHkgcGFyc2UgaW5jb21wbGV0ZSBVUkxzCiogTWl4ZWQgY2FzaW5nIG9mIGhlYWRlcnMgYXJlIG5vdyBmb3JjZWQgdG8gYmUgYSBzaW5nbGUgY29uc2lzdGVudCBjYXNpbmcgYWNyb3NzIGFsbCB2YWx1ZXMgZm9yIHRoYXQgaGVhZGVyLgoqIE1lc3NhZ2VzIGludGVybmFsbHkgdXNlIGEgSGVhZGVyQ29sbGVjdGlvbiBvYmplY3QgdG8gZGVsZWdhdGUgaGFuZGxpbmcgY2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgcmVzb2x1dGlvbgoqIFJlbW92ZWQgdGhlIHdob2xlIGNoYW5nZWRIZWFkZXIoKSBmdW5jdGlvbiBzeXN0ZW0gb2YgbWVzc2FnZXMgYmVjYXVzZSBhbGwgaGVhZGVyIGNoYW5nZXMgbm93IGdvIHRocm91Z2ggYWRkSGVhZGVyKCkuCiogU3BlY2lmaWMgaGVhZGVyIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgY3JlYXRlZCBmb3IgY29tcGxleCBoZWFkZXJzLiBXaGVuIGEgbWVzc2FnZSBjcmVhdGVzIGEgaGVhZGVyLCBpdCB1c2VzIGEKICBIZWFkZXJGYWN0b3J5IHdoaWNoIGNhbiBtYXAgc3BlY2lmaWMgaGVhZGVycyB0byBzcGVjaWZpYyBoZWFkZXIgY2xhc3Nlcy4gVGhlcmUgaXMgbm93IGEgTGluayBoZWFkZXIgYW5kCiAgQ2FjaGVDb250cm9sIGhlYWRlciBpbXBsZW1lbnRhdGlvbi4KKiBSZW1vdmVkIGZyb20gaW50ZXJmYWNlOiBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldFVyaVRlbXBsYXRlCiogUmVtb3ZlZCBmcm9tIGludGVyZmFjZTogR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXRDdXJsTXVsdGkoKQoqIFJlbW92ZWQgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpyZWNlaXZlZFJlcXVlc3RIZWFkZXIoKSBhbmQgaW1wbGVtZW50ZWQgdGhpcyBmdW5jdGlvbmFsaXR5IGluCiAgR3V6emxlXEh0dHBcQ3VybFxSZXF1ZXN0TWVkaWF0b3IKKiBSZW1vdmVkIHRoZSBvcHRpb25hbCAkYXNTdHJpbmcgcGFyYW1ldGVyIGZyb20gTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVyKCkuIEp1c3QgY2FzdCB0aGUgaGVhZGVyIHRvIGEgc3RyaW5nLgoqIFJlbW92ZWQgdGhlIG9wdGlvbmFsICR0cnlDaHVua2VkVHJhbnNmZXIgb3B0aW9uIGZyb20gR3V6emxlXEh0dHBcTWVzc2FnZVxFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0SW50ZXJmYWNlCiogUmVtb3ZlZCB0aGUgJGFzT2JqZWN0cyBhcmd1bWVudCBmcm9tIEd1enpsZVxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVycygpCiogUmVtb3ZlZCBHdXp6bGVcUGFyc2VyXFBhcnNlclJlZ2lzdGVyOjpnZXQoKS4gVXNlIGdldFBhcnNlcigpCiogUmVtb3ZlZCBHdXp6bGVcUGFyc2VyXFBhcnNlclJlZ2lzdGVyOjpzZXQoKS4gVXNlIHJlZ2lzdGVyUGFyc2VyKCkuCiogQWxsIHJlc3BvbnNlIGhlYWRlciBoZWxwZXIgZnVuY3Rpb25zIHJldHVybiBhIHN0cmluZyByYXRoZXIgdGhhbiBtaXhpbmcgSGVhZGVyIG9iamVjdHMgYW5kIHN0cmluZ3MgaW5jb25zaXN0ZW50bHkKKiBSZW1vdmVkIGNVUkwgYmxhY2tsaXN0IHN1cHBvcnQuIFRoaXMgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSBub3cgdGhhdCBFeHBlY3QsIEFjY2VwdCwgZXRjLiBhcmUgbWFuYWdlZCBieSBHdXp6bGUKICBkaXJlY3RseSB2aWEgaW50ZXJmYWNlcwoqIFJlbW92ZWQgdGhlIGluamVjdGluZyBvZiBhIHJlcXVlc3Qgb2JqZWN0IG9udG8gYSByZXNwb25zZSBvYmplY3QuIFRoZSBtZXRob2RzIHRvIGdldCBhbmQgc2V0IGEgcmVxdWVzdCBzdGlsbCBleGlzdAogIGJ1dCBhcmUgYSBuby1vcCB1bnRpbCByZW1vdmVkLgoqIE1vc3QgY2xhc3NlcyB0aGF0IHVzZWQgdG8gcmVxdWlyZSBhIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXENvbW1hbmRJbnRlcmZhY2VgIHR5cGVoaW50IG5vdyByZXF1ZXN0IGEKICBgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxBcnJheUNvbW1hbmRJbnRlcmZhY2VgLgoqIEFkZGVkIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U6OnN0YXJ0UmVzcG9uc2UoKWAgdG8gdGhlIFJlcXVlc3RJbnRlcmZhY2UgdG8gaGFuZGxlIGluamVjdGluZyBhIHJlc3BvbnNlCiAgb24gYSByZXF1ZXN0IHdoaWxlIHRoZSByZXF1ZXN0IGlzIHN0aWxsIGJlaW5nIHRyYW5zZmVycmVkCiogVGhlIGFiaWxpdHkgdG8gY2FzZS1pbnNlbnNpdGl2ZWx5IHNlYXJjaCBmb3IgaGVhZGVyIHZhbHVlcwoqIEd1enpsZVxIdHRwXE1lc3NhZ2VcSGVhZGVyOjpoYXNFeGFjdEhlYWRlcgoqIEd1enpsZVxIdHRwXE1lc3NhZ2VcSGVhZGVyOjpyYXcuIFVzZSBnZXRBbGwoKQoqIERlcHJlY2F0ZWQgY2FjaGUgY29udHJvbCBzcGVjaWZpYyBtZXRob2RzIG9uIEd1enpsZVxIdHRwXE1lc3NhZ2VcQWJzdHJhY3RNZXNzYWdlLiBVc2UgdGhlIENhY2hlQ29udHJvbCBoZWFkZXIgb2JqZWN0CiAgaW5zdGVhZC4KKiBgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxDb21tYW5kSW50ZXJmYWNlYCBub3cgZXh0ZW5kcyBmcm9tIFRvQXJyYXlJbnRlcmZhY2UgYW5kIEFycmF5QWNjZXNzCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gY2FzdCBNb2RlbCBvYmplY3RzIHRvIGEgc3RyaW5nIHRvIHZpZXcgZGVidWcgaW5mb3JtYXRpb24uCgojIyAzLjUuMCAtIDIwMTMtMDUtMTMKCiogQnVnOiBGaXhlZCBhIHJlZ3Jlc3Npb24gc28gdGhhdCByZXF1ZXN0IHJlc3BvbnNlcyBhcmUgcGFyc2VkIG9ubHkgb25jZSBwZXIgb25jb21wbGV0ZSBldmVudCByYXRoZXIgdGhhbiBtdWx0aXBsZSB0aW1lcwoqIEJ1ZzogQmV0dGVyIGNsZWFudXAgb2Ygb25lLXRpbWUgZXZlbnRzIGFjcm9zcyB0aGUgYm9hcmQgKHdoZW4gYW4gZXZlbnQgaXMgbWVhbnQgdG8gZmlyZSBvbmNlLCBpdCB3aWxsIG5vdyByZW1vdmUKICBpdHNlbGYgZnJvbSB0aGUgRXZlbnREaXNwYXRjaGVyKQoqIEJ1ZzogYEd1enpsZVxMb2dcTWVzc2FnZUZvcm1hdHRlcmAgbm93IHByb3Blcmx5IHdyaXRlcyAidG90YWxfdGltZSIgYW5kICJjb25uZWN0X3RpbWUiIHZhbHVlcwoqIEJ1ZzogQ2xvbmluZyBhbiBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IG5vdyBjbG9uZXMgdGhlIEVudGl0eUJvZHkgdG9vCiogQnVnOiBGaXhlZCBhbiB1bmRlZmluZWQgaW5kZXggZXJyb3Igd2hlbiBwYXJzaW5nIG5lc3RlZCBKU09OIHJlc3BvbnNlcyB3aXRoIGEgc2VudEFzIHBhcmFtZXRlciB0aGF0IHJlZmVyZW5jZSBhCiAgbm9uLWV4aXN0ZW50IGtleQoqIEJ1ZzogQWxsIF9fY2FsbCgpIG1ldGhvZCBhcmd1bWVudHMgYXJlIG5vdyByZXF1aXJlZCAoaGVscHMgd2l0aCBtb2NraW5nIGZyYW1ld29ya3MpCiogRGVwcmVjYXRpbmcgUmVzcG9uc2U6OmdldFJlcXVlc3QoKSBhbmQgbm93IHVzaW5nIGEgc2hhbGxvdyBjbG9uZSBvZiBhIHJlcXVlc3Qgb2JqZWN0IHRvIHJlbW92ZSBhIGNpcmN1bGFyIHJlZmVyZW5jZQogIHRvIGhlbHAgd2l0aCByZWZjb3VudCBiYXNlZCBnYXJiYWdlIGNvbGxlY3Rpb24gb2YgcmVzb3VyY2VzIGNyZWF0ZWQgYnkgc2VuZGluZyBhIHJlcXVlc3QKKiBEZXByZWNhdGluZyBaRjEgY2FjaGUgYW5kIGxvZyBhZGFwdGVycy4gVGhlc2Ugd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHZlcnNpb24uCiogRGVwcmVjYXRpbmcgYFJlc3BvbnNlOjpnZXRQcmV2aW91c1Jlc3BvbnNlKClgIChtZXRob2Qgc2lnbmF0dXJlIHN0aWxsIGV4aXN0cywgYnV0IGl0J3MgZGVwcmVjYXRlZCkuIFVzZSB0aGUKICBIaXN0b3J5UGx1Z2luIGZvciBhIGhpc3RvcnkuCiogQWRkZWQgYSBgcmVzcG9uc2VCb2R5YCBhbGlhcyBmb3IgdGhlIGByZXNwb25zZV9ib2R5YCBsb2NhdGlvbgoqIFJlZmFjdG9yZWQgaW50ZXJuYWxzIHRvIG5vIGxvbmdlciByZWx5IG9uIFJlc3BvbnNlOjpnZXRSZXF1ZXN0KCkKKiBIaXN0b3J5UGx1Z2luIGNhbiBub3cgYmUgY2FzdCB0byBhIHN0cmluZwoqIEhpc3RvcnlQbHVnaW4gbm93IGxvZ3MgdHJhbnNhY3Rpb25zIHJhdGhlciB0aGFuIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgdG8gbW9yZSBhY2N1cmF0ZWx5IGtlZXAgdHJhY2sgb2YgdGhlIHJlcXVlc3RzCiAgYW5kIHJlc3BvbnNlcyB0aGF0IGFyZSBzZW50IG92ZXIgdGhlIHdpcmUKKiBBZGRlZCBgZ2V0RWZmZWN0aXZlVXJsKClgIGFuZCBgZ2V0UmVkaXJlY3RDb3VudCgpYCB0byBSZXNwb25zZSBvYmplY3RzCgojIyAzLjQuMyAtIDIwMTMtMDQtMzAKCiogQnVnIGZpeDogRml4aW5nIGJ1ZyBpbnRyb2R1Y2VkIGluIDMuNC4yIHdoZXJlIHJlZGlyZWN0IHJlc3BvbnNlcyBhcmUgZHVwbGljYXRlZCBvbiB0aGUgZmluYWwgcmVkaXJlY3RlZCByZXNwb25zZQoqIEFkZGVkIGEgY2hlY2sgdG8gcmUtZXh0cmFjdCB0aGUgdGVtcCBjYWNlcnQgYnVuZGxlIGZyb20gdGhlIHBoYXIgYmVmb3JlIHNlbmRpbmcgZWFjaCByZXF1ZXN0CgojIyAzLjQuMiAtIDIwMTMtMDQtMjkKCiogQnVnIGZpeDogU3RyZWFtIG9iamVjdHMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggImEiIGFuZCAiYSsiIG1vZGVzCiogQnVnIGZpeDogUmVtb3ZpbmcgYFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkYCBoZWFkZXIgd2hlbiBhIENvbnRlbnQtTGVuZ3RoIGlzIHByZXNlbnQKKiBCdWcgZml4OiBBc3luY1BsdWdpbiBubyBsb25nZXIgZm9yY2VzIEhFQUQgcmVxdWVzdHMKKiBCdWcgZml4OiBEYXRlVGltZSB0aW1lem9uZXMgYXJlIG5vdyBwcm9wZXJseSBoYW5kbGVkIHdoZW4gdXNpbmcgdGhlIHNlcnZpY2UgZGVzY3JpcHRpb24gc2NoZW1hIGZvcm1hdHRlcgoqIEJ1ZyBmaXg6IENhY2hlUGx1Z2luIG5vdyBwcm9wZXJseSBoYW5kbGVzIHN0YWxlLWlmLWVycm9yIGRpcmVjdGl2ZXMgd2hlbiBhIHJlcXVlc3QgdG8gdGhlIG9yaWdpbiBzZXJ2ZXIgZmFpbHMKKiBTZXR0aW5nIGEgcmVzcG9uc2Ugb24gYSByZXF1ZXN0IHdpbGwgd3JpdGUgdG8gdGhlIGN1c3RvbSByZXF1ZXN0IGJvZHkgZnJvbSB0aGUgcmVzcG9uc2UgYm9keSBpZiBvbmUgaXMgc3BlY2lmaWVkCiogTG9nUGx1Z2luIG5vdyB3cml0ZXMgdG8gcGhwOi8vb3V0cHV0IHdoZW4gU1RERVJSIGlzIHVuZGVmaW5lZAoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNldCBtdWx0aXBsZSBQT1NUIGZpbGVzIGZvciB0aGUgc2FtZSBrZXkgaW4gYSBzaW5nbGUgY2FsbAoqIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCBQT1NUcyBub3cgdXNlIHRoZSB1dGYtOCBjaGFyc2V0IGJ5IGRlZmF1bHQKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBxdWV1ZSBDdXJsRXhjZXB0aW9ucyB0byB0aGUgTW9ja1BsdWdpbgoqIENsZWFuZWQgdXAgaG93IG1hbnVhbCByZXNwb25zZXMgYXJlIHF1ZXVlZCBvbiByZXF1ZXN0cyAocmVtb3ZlZCAicXVldWVkX3Jlc3BvbnNlIiBhbmQgbm93IHVzaW5nIHJlcXVlc3QuYmVmb3JlX3NlbmQpCiogQ29uZmlndXJhdGlvbiBsb2FkaW5nIG5vdyBhbGxvd3MgcmVtb3RlIGZpbGVzCgojIyAzLjQuMSAtIDIwMTMtMDQtMTYKCiogTGFyZ2UgcmVmYWN0b3JpbmcgdG8gaG93IEN1cmxNdWx0aSBoYW5kbGVzIHdvcmsuIFRoZXJlIGlzIG5vdyBhIHByb3h5IHRoYXQgc2l0cyBpbiBmcm9udCBvZiBhIHBvb2wgb2YgQ3VybE11bHRpCiAgaGFuZGxlcy4gVGhpcyBncmVhdGx5IHNpbXBsaWZpZXMgdGhlIGltcGxlbWVudGF0aW9uLCBmaXhlcyBhIGNvdXBsZSBidWdzLCBhbmQgcHJvdmlkZXMgYSBzbWFsbCBwZXJmb3JtYW5jZSBib29zdC4KKiBFeGNlcHRpb25zIGFyZSBub3cgcHJvcGVybHkgZ3JvdXBlZCB3aGVuIHNlbmRpbmcgcmVxdWVzdHMgaW4gcGFyYWxsZWwKKiBSZWRpcmVjdHMgYXJlIG5vdyBwcm9wZXJseSBhZ2dyZWdhdGVkIHdoZW4gYSBtdWx0aSB0cmFuc2FjdGlvbiBmYWlscwoqIFJlZGlyZWN0cyBub3cgc2V0IHRoZSByZXNwb25zZSBvbiB0aGUgb3JpZ2luYWwgb2JqZWN0IGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGEgZmFpbHVyZQoqIEJ1ZyBmaXg6IE1vZGVsIG5hbWVzIGFyZSBub3cgcHJvcGVybHkgc2V0IGV2ZW4gd2hlbiB1c2luZyAkcmVmcwoqIEFkZGVkIHN1cHBvcnQgZm9yIFBIUCA1LjUncyBDdXJsRmlsZSB0byBwcmV2ZW50IHdhcm5pbmdzIHdpdGggdGhlIGRlcHJlY2F0ZWQgQCBzeW50YXgKKiBBZGRlZCBzdXBwb3J0IGZvciBvYXV0aF9jYWxsYmFjayBpbiBPQXV0aCBzaWduYXR1cmVzCiogQWRkZWQgc3VwcG9ydCBmb3Igb2F1dGhfdmVyaWZpZXIgaW4gT0F1dGggc2lnbmF0dXJlcwoqIEFkZGVkIHN1cHBvcnQgdG8gYXR0ZW1wdCB0byByZXRyaWV2ZSBhIGNvbW1hbmQgZmlyc3QgbGl0ZXJhbGx5LCB0aGVuIHVjZmlyc3QsIHRoZSB3aXRoIGluZmxlY3Rpb24KCiMjIDMuNC4wIC0gMjAxMy0wNC0xMQoKKiBCdWcgZml4OiBVUkxzIGFyZSBub3cgcmVzb2x2ZWQgY29ycmVjdGx5IGJhc2VkIG9uIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi4gIzI4OQoqIEJ1ZyBmaXg6IEFic29sdXRlIFVSTHMgd2l0aCBhIHBhdGggaW4gYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIHdpbGwgbm93IHByb3Blcmx5IG92ZXJyaWRlIHRoZSBiYXNlIFVSTC4gIzI4OQoqIEJ1ZyBmaXg6IFBhcnNpbmcgYSBxdWVyeSBzdHJpbmcgd2l0aCBhIHNpbmdsZSBQSFAgYXJyYXkgdmFsdWUgd2lsbCBub3cgcmVzdWx0IGluIGFuIGFycmF5LiAjMjYzCiogQnVnIGZpeDogQmV0dGVyIG5vcm1hbGl6YXRpb24gb2YgdGhlIFVzZXItQWdlbnQgaGVhZGVyIHRvIHByZXZlbnQgZHVwbGljYXRlIGhlYWRlcnMuICMyNjQuCiogQnVnIGZpeDogQWRkZWQgYG51bWJlcmAgdHlwZSB0byBzZXJ2aWNlIGRlc2NyaXB0aW9ucy4KKiBCdWcgZml4OiBlbXB0eSBwYXJhbWV0ZXJzIGFyZSByZW1vdmVkIGZyb20gYW4gT0F1dGggc2lnbmF0dXJlCiogQnVnIGZpeDogUmV2YWxpZGF0aW5nIGEgY2FjaGUgZW50cnkgcHJlZmVycyB0aGUgTGFzdC1Nb2RpZmllZCBvdmVyIHRoZSBEYXRlIGhlYWRlcgoqIEJ1ZyBmaXg6IEZpeGVkICJhcnJheSB0byBzdHJpbmciIGVycm9yIHdoZW4gdmFsaWRhdGluZyBhIHVuaW9uIG9mIHR5cGVzIGluIGEgc2VydmljZSBkZXNjcmlwdGlvbgoqIEJ1ZyBmaXg6IFJlbW92ZWQgY29kZSB0aGF0IGF0dGVtcHRlZCB0byBkZXRlcm1pbmUgdGhlIHNpemUgb2YgYSBzdHJlYW0gd2hlbiBkYXRhIGlzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbQoqIEJ1ZyBmaXg6IE5vdCBpbmNsdWRpbmcgYW4gYG9hdXRoX3Rva2VuYCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBpbiB0aGUgT2F1dGhQbHVnaW4uCiogQnVnIGZpeDogTm93IGNvcnJlY3RseSBhZ2dyZWdhdGluZyBzdWNjZXNzZnVsIHJlcXVlc3RzIGFuZCBmYWlsZWQgcmVxdWVzdHMgaW4gQ3VybE11bHRpIHdoZW4gYSByZWRpcmVjdCBvY2N1cnMuCiogVGhlIG5ldyBkZWZhdWx0IENVUkxPUFRfVElNRU9VVCBzZXR0aW5nIGhhcyBiZWVuIGluY3JlYXNlZCB0byAxNTAgc2Vjb25kcyBzbyB0aGF0IEd1enpsZSB3b3JrcyBvbiBwb29yIGNvbm5lY3Rpb25zLgoqIEFkZGVkIGEgZmVhdHVyZSB0byBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0OjpzZXRCb2R5KCkgdGhhdCB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IHRoZSBDb250ZW50LVR5cGUgb2YgdGhlIHJlcXVlc3QgaWYKICB0aGUgQ29udGVudC1UeXBlIGNhbiBiZSBkZXRlcm1pbmVkIGJhc2VkIG9uIHRoZSBlbnRpdHkgYm9keSBvciB0aGUgcGF0aCBvZiB0aGUgcmVxdWVzdC4KKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBvdmVyd3JpdGUgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBpbiBhIGNsaWVudCB3aGVuIGdyYWJiaW5nIGEgdGhyb3dhd2F5IGNsaWVudCBmcm9tIGEgYnVpbGRlci4KKiBBZGRlZCBzdXBwb3J0IGZvciBhIFBTUi0zIExvZ0FkYXB0ZXIuCiogQWRkZWQgYSBgY29tbWFuZC5hZnRlcl9wcmVwYXJlYCBldmVudAoqIEFkZGVkIGBvYXV0aF9jYWxsYmFja2AgcGFyYW1ldGVyIHRvIHRoZSBPYXV0aFBsdWdpbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhIGN1c3RvbSBzdHJlYW0gY2xhc3Mgd2hlbiB1c2luZyBhIHN0cmVhbSBmYWN0b3J5CiogQWRkZWQgYSBDYWNoaW5nRW50aXR5Qm9keSBkZWNvcmF0b3IKKiBBZGRlZCBzdXBwb3J0IGZvciBgYWRkaXRpb25hbFBhcmFtZXRlcnNgIGluIHNlcnZpY2UgZGVzY3JpcHRpb25zIHRvIGRlZmluZSBob3cgY3VzdG9tIHBhcmFtZXRlcnMgYXJlIHNlcmlhbGl6ZWQuCiogVGhlIGJ1bmRsZWQgU1NMIGNlcnRpZmljYXRlIGlzIG5vdyBwcm92aWRlZCBpbiB0aGUgcGhhciBmaWxlIGFuZCBleHRyYWN0ZWQgd2hlbiBydW5uaW5nIEd1enpsZSBmcm9tIGEgcGhhci4KKiBZb3UgY2FuIG5vdyBzZW5kIGFueSBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IHdpdGggUE9TVCBmaWVsZHMgb3IgUE9TVCBmaWxlcyBhbmQgY1VSTCB3aWxsIGhhbmRsZSBjcmVhdGluZyBib2RpZXMKKiBQT1NUIHJlcXVlc3RzIHVzaW5nIGEgY3VzdG9tIGVudGl0eSBib2R5IGFyZSBub3cgdHJlYXRlZCBleGFjdGx5IGxpa2UgUFVUIHJlcXVlc3RzIGJ1dCB3aXRoIGEgY3VzdG9tIGNVUkwgbWV0aG9kLiBUaGlzCiAgbWVhbnMgdGhhdCB0aGUgcmVkaXJlY3QgYmVoYXZpb3Igb2YgUE9TVCByZXF1ZXN0cyB3aXRoIGN1c3RvbSBib2RpZXMgd2lsbCBub3QgYmUgdGhlIHNhbWUgYXMgUE9TVCByZXF1ZXN0cyB0aGF0IHVzZQogIFBPU1QgZmllbGRzIG9yIGZpbGVzICh0aGUgbGF0dGVyIGlzIG9ubHkgdXNlZCB3aGVuIGVtdWxhdGluZyBhIGZvcm0gUE9TVCBpbiB0aGUgYnJvd3NlcikuCiogTG90cyBvZiBjbGVhbnVwIHRvIEN1cmxIYW5kbGU6OmZhY3RvcnkgYW5kIFJlcXVlc3RGYWN0b3J5OjpjcmVhdGVSZXF1ZXN0CgojIyAzLjMuMSAtIDIwMTMtMDMtMTAKCiogQWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIFBIUCBzdHJlYW1pbmcgcmVzcG9uc2VzIGZyb20gSFRUUCByZXF1ZXN0cwoqIEJ1ZyBmaXg6IFJ1bm5pbmcgYW55IGZpbHRlcnMgd2hlbiBwYXJzaW5nIHJlc3BvbnNlIGhlYWRlcnMgd2l0aCBzZXJ2aWNlIGRlc2NyaXB0aW9ucwoqIEJ1ZyBmaXg6IE9hdXRoUGx1Z2luIGZpeGVzIHRvIGFsbG93IGZvciBtdWx0aS1kaW1lbnNpb25hbCBhcnJheSBzaWduaW5nLCBhbmQgc29ydGluZyBwYXJhbWV0ZXJzIGJlZm9yZSBzaWduaW5nCiogQnVnIGZpeDogUmVtb3ZlZCB0aGUgYWRkaW5nIG9mIGRlZmF1bHQgZW1wdHkgYXJyYXlzIGFuZCBmYWxzZSBCb29sZWFucyB0byByZXNwb25zZXMgaW4gb3JkZXIgdG8gYmUgY29uc2lzdGVudCBhY3Jvc3MKICByZXNwb25zZSBsb2NhdGlvbiB2aXNpdG9ycy4KKiBCdWcgZml4OiBSZW1vdmVkIHRoZSBwb3NzaWJpbGl0eSBvZiBjcmVhdGluZyBjb25maWd1cmF0aW9uIGZpbGVzIHdpdGggY2lyY3VsYXIgZGVwZW5kZW5jaWVzCiogUmVxdWVzdEZhY3Rvcnk6OmNyZWF0ZSgpIG5vdyB1c2VzIHRoZSBrZXkgb2YgYSBQT1NUIGZpbGUgd2hlbiBzZXR0aW5nIHRoZSBQT1NUIGZpbGUgbmFtZQoqIEFkZGVkIHhtbEFsbG93RW1wdHkgdG8gc2VyaWFsaXplIGFuIFhNTCBib2R5IGV2ZW4gaWYgbm8gWE1MIHNwZWNpZmljIHBhcmFtZXRlcnMgYXJlIHNldAoKIyMgMy4zLjAgLSAyMDEzLTAzLTAzCgoqIEEgbGFyZ2UgbnVtYmVyIG9mIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbnMgaGF2ZSBiZWVuIG1hZGUKKiBCdWcgZml4OiBBZGRlZCAnd2InIGFzIGEgdmFsaWQgd3JpdGUgbW9kZSBmb3Igc3RyZWFtcwoqIEJ1ZyBmaXg6IGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpqc29uKClgIG5vdyBhbGxvd3Mgc2NhbGFyIHZhbHVlcyB0byBiZSByZXR1cm5lZAoqIEJ1ZyBmaXg6IEZpeGVkIGJ1ZyBpbiBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXNwb25zZWAgd2hlcmUgd3JhcHBpbmcgcXVvdGVzIHdlcmUgc3RyaXBwZWQgZnJvbSBgZ2V0RXRhZygpYAoqIEJDOiBSZW1vdmVkIGBHdXp6bGVcSHR0cFxVdGlsc2AgY2xhc3MKKiBCQzogU2V0dGluZyBhIHNlcnZpY2UgZGVzY3JpcHRpb24gb24gYSBjbGllbnQgd2lsbCBubyBsb25nZXIgbW9kaWZ5IHRoZSBjbGllbnQncyBjb21tYW5kIGZhY3Rvcmllcy4KKiBCQzogRW1pdHRpbmcgSU8gZXZlbnRzIGZyb20gYSBSZXF1ZXN0TWVkaWF0b3IgaXMgbm93IGEgcGFyYW1ldGVyIHRoYXQgbXVzdCBiZSBzZXQgaW4gYSByZXF1ZXN0J3MgY3VybCBvcHRpb25zIHVzaW5nCiAgdGhlICdlbWl0X2lvJyBrZXkuIFRoaXMgd2FzIHByZXZpb3VzbHkgc2V0IHVuZGVyIGEgcmVxdWVzdCdzIHBhcmFtZXRlcnMgdXNpbmcgJ2N1cmwuZW1pdF9pbycKKiBCQzogYEd1enpsZVxTdHJlYW1cU3RyZWFtOjpnZXRXcmFwcGVyKClgIGFuZCBgR3V6emxlXFN0cmVhbVxTdHJlYW06OmdldFN0ZWFtVHlwZSgpYCBhcmUgbm8gbG9uZ2VyIGNvbnZlcnRlZCB0bwogIGxvd2VyY2FzZQoqIE9wZXJhdGlvbiBwYXJhbWV0ZXIgb2JqZWN0cyBhcmUgbm93IGxhenkgbG9hZGVkIGludGVybmFsbHkKKiBBZGRlZCBFcnJvclJlc3BvbnNlUGx1Z2luIHRoYXQgY2FuIHRocm93IGVycm9ycyBmb3IgcmVzcG9uc2VzIGRlZmluZWQgaW4gc2VydmljZSBkZXNjcmlwdGlvbiBvcGVyYXRpb25zJyBlcnJvclJlc3BvbnNlcwoqIEFkZGVkIHN1cHBvcnQgZm9yIGluc3RhbnRpYXRpbmcgcmVzcG9uc2VUeXBlPWNsYXNzIHJlc3BvbnNlQ2xhc3MgY2xhc3Nlcy4gQ2xhc3NlcyBtdXN0IGltcGxlbWVudAogIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXFJlc3BvbnNlQ2xhc3NJbnRlcmZhY2VgCiogQWRkZWQgc3VwcG9ydCBmb3IgYWRkaXRpb25hbFByb3BlcnRpZXMgZm9yIHRvcC1sZXZlbCBwYXJhbWV0ZXJzIGluIHJlc3BvbnNlVHlwZT1tb2RlbCByZXNwb25zZUNsYXNzZXMuIFRoZXNlCiAgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGFsc28gc3VwcG9ydCBsb2NhdGlvbnMgYW5kIGNhbiBiZSB1c2VkIHRvIHBhcnNlIEpTT04gcmVzcG9uc2VzIHdoZXJlIHRoZSBvdXRlcm1vc3QgcGFydCBvZiB0aGUKICBKU09OIGlzIGFuIGFycmF5CiogQWRkZWQgc3VwcG9ydCBmb3IgbmVzdGVkIHJlbmFtaW5nIG9mIEpTT04gbW9kZWxzIChyZW5hbWUgc2VudEFzIHRvIG5hbWUpCiogQ2FjaGVQbHVnaW4KICAgICogQWRkZWQgc3VwcG9ydCBmb3Igc3RhbGUtaWYtZXJyb3Igc28gdGhhdCB0aGUgQ2FjaGVQbHVnaW4gY2FuIG5vdyBzZXJ2ZSBzdGFsZSBjb250ZW50IGZyb20gdGhlIGNhY2hlIG9uIGVycm9yCiAgICAqIERlYnVnIGhlYWRlcnMgY2FuIG5vdyBhZGRlZCB0byBjYWNoZWQgcmVzcG9uc2UgaW4gdGhlIENhY2hlUGx1Z2luCgojIyAzLjIuMCAtIDIwMTMtMDItMTQKCiogQ3VybE11bHRpIGlzIG5vIGxvbmdlciByZXVzZWQgZ2xvYmFsbHkuIEEgbmV3IG11bHRpIG9iamVjdCBpcyBjcmVhdGVkIHBlci1jbGllbnQuIFRoaXMgaGVscHMgdG8gaXNvbGF0ZSBjbGllbnRzLgoqIFVSTHMgd2l0aCBubyBwYXRoIG5vIGxvbmdlciBjb250YWluIGEgIi8iIGJ5IGRlZmF1bHQKKiBHdXp6bGVcSHR0cFxRdWVyeVN0cmluZyBkb2VzIG5vIGxvbmdlciBtYW5hZ2VzIHRoZSBsZWFkaW5nICI/Ii4gVGhpcyBpcyBub3cgaGFuZGxlZCBpbiBHdXp6bGVcSHR0cFxVcmwuCiogQmFkUmVzcG9uc2VFeGNlcHRpb24gbm8gbG9uZ2VyIGluY2x1ZGVzIHRoZSBmdWxsIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG1lc3NhZ2UKKiBBZGRpbmcgc2V0RGF0YSgpIHRvIEd1enpsZVxTZXJ2aWNlXERlc2NyaXB0aW9uXFNlcnZpY2VEZXNjcmlwdGlvbkludGVyZmFjZQoqIEFkZGluZyBnZXRSZXNwb25zZUJvZHkoKSB0byBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2UKKiBWYXJpb3VzIHVwZGF0ZXMgdG8gY2xhc3NlcyB0byB1c2UgU2VydmljZURlc2NyaXB0aW9uSW50ZXJmYWNlIHR5cGUgaGludHMgcmF0aGVyIHRoYW4gU2VydmljZURlc2NyaXB0aW9uCiogSGVhZGVyIHZhbHVlcyBjYW4gbm93IGJlIG5vcm1hbGl6ZWQgaW50byBkaXN0aW5jdCB2YWx1ZXMgd2hlbiBtdWx0aXBsZSBoZWFkZXJzIGFyZSBjb21iaW5lZCB3aXRoIGEgY29tbWEgc2VwYXJhdGVkIGxpc3QKKiB4bWxFbmNvZGluZyBjYW4gbm93IGJlIGN1c3RvbWl6ZWQgZm9yIHRoZSBYTUwgZGVjbGFyYXRpb24gb2YgYSBYTUwgc2VydmljZSBkZXNjcmlwdGlvbiBvcGVyYXRpb24KKiBHdXp6bGVcSHR0cFxRdWVyeVN0cmluZyBub3cgdXNlcyBHdXp6bGVcSHR0cFxRdWVyeUFnZ3JlZ2F0b3JcUXVlcnlBZ2dyZWdhdG9ySW50ZXJmYWNlIG9iamVjdHMgdG8gYWRkIGN1c3RvbSB2YWx1ZQogIGFnZ3JlZ2F0aW9uIGFuZCBubyBsb25nZXIgdXNlcyBjYWxsYmFja3MKKiBUaGUgVVJMIGVuY29kaW5nIGltcGxlbWVudGF0aW9uIG9mIEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nIGNhbiBub3cgYmUgY3VzdG9taXplZAoqIEJ1ZyBmaXg6IEZpbHRlcnMgd2VyZSBub3QgYWx3YXlzIGludm9rZWQgZm9yIGFycmF5IHNlcnZpY2UgZGVzY3JpcHRpb24gcGFyYW1ldGVycwoqIEJ1ZyBmaXg6IFJlZGlyZWN0cyBub3cgdXNlIGEgdGFyZ2V0IHJlc3BvbnNlIGJvZHkgcmF0aGVyIHRoYW4gYSB0ZW1wb3JhcnkgcmVzcG9uc2UgYm9keQoqIEJ1ZyBmaXg6IFRoZSBkZWZhdWx0IGV4cG9uZW50aWFsIGJhY2tvZmYgQmFja29mZlBsdWdpbiB3YXMgbm90IGdpdmluZyB3aGVuIHRoZSByZXF1ZXN0IHRocmVzaG9sZCB3YXMgZXhjZWVkZWQKKiBCdWcgZml4OiBHdXp6bGUgbm93IHRha2VzIHRoZSBmaXJzdCBmb3VuZCB2YWx1ZSB3aGVuIGdyYWJiaW5nIENhY2hlLUNvbnRyb2wgZGlyZWN0aXZlcwoKIyMgMy4xLjIgLSAyMDEzLTAxLTI3CgoqIFJlZmFjdG9yZWQgaG93IG9wZXJhdGlvbiByZXNwb25zZXMgYXJlIHBhcnNlZC4gVmlzaXRvcnMgbm93IGluY2x1ZGUgYSBiZWZvcmUoKSBtZXRob2QgcmVzcG9uc2libGUgZm9yIHBhcnNpbmcgdGhlCiAgcmVzcG9uc2UgYm9keS4gRm9yIGV4YW1wbGUsIHRoZSBYbWxWaXNpdG9yIG5vdyBwYXJzZXMgdGhlIFhNTCByZXNwb25zZSBpbnRvIGFuIGFycmF5IGluIHRoZSBiZWZvcmUoKSBtZXRob2QuCiogRml4ZWQgYW4gaXNzdWUgd2hlcmUgY1VSTCB3b3VsZCBub3QgYXV0b21hdGljYWxseSBkZWNvbXByZXNzIHJlc3BvbnNlcyB3aGVuIHRoZSBBY2NlcHQtRW5jb2RpbmcgaGVhZGVyIHdhcyBzZW50CiogQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCBpcyBuZXZlciBzZXQgdG8gMSBiZWNhdXNlIGl0IGlzIGRlcHJlY2F0ZWQgKHNlZSA1ZTBmZjJlZjIwZjgzOWUxOWQxZWViMjk4ZjkwYmEzNTk4Nzg0NDQ0KQoqIEZpeGVkIGEgYnVnIHdoZXJlIHJlZGlyZWN0IHJlc3BvbnNlcyB3ZXJlIG5vdCBjaGFpbmVkIGNvcnJlY3RseSB1c2luZyBnZXRQcmV2aW91c1Jlc3BvbnNlKCkKKiBTZXR0aW5nIGRlZmF1bHQgaGVhZGVycyBvbiBhIGNsaWVudCBhZnRlciBzZXR0aW5nIHRoZSB1c2VyLWFnZW50IHdpbGwgbm90IGVyYXNlIHRoZSB1c2VyLWFnZW50IHNldHRpbmcKCiMjIDMuMS4xIC0gMjAxMy0wMS0yMAoKKiBBZGRpbmcgd2lsZGNhcmQgc3VwcG9ydCB0byBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmdldFBhdGgoKQoqIEFkZGluZyBhbGlhcyBzdXBwb3J0IHRvIFNlcnZpY2VCdWlsZGVyIGNvbmZpZ3MKKiBBZGRpbmcgR3V6emxlXFNlcnZpY2VcUmVzb3VyY2VcQ29tcG9zaXRlUmVzb3VyY2VJdGVyYXRvckZhY3RvcnkgYW5kIGNsZWFuaW5nIHVwIGZhY3RvcnkgaW50ZXJmYWNlCgojIyAzLjEuMCAtIDIwMTMtMDEtMTIKCiogQkM6IEN1cmxFeGNlcHRpb24gbm93IGV4dGVuZHMgZnJvbSBSZXF1ZXN0RXhjZXB0aW9uIHJhdGhlciB0aGFuIEJhZFJlc3BvbnNlRXhjZXB0aW9uCiogQkM6IFJlbmFtZWQgR3V6emxlXFBsdWdpblxDYWNoZVxDYW5DYWNoZVN0cmF0ZWd5SW50ZXJmYWNlOjpjYW5DYWNoZSgpIHRvIGNhbkNhY2hlUmVxdWVzdCgpIGFuZCBhZGRlZCBDYW5DYWNoZVJlc3BvbnNlKCkKKiBBZGRlZCBnZXREYXRhIHRvIFNlcnZpY2VEZXNjcmlwdGlvbkludGVyZmFjZQoqIEFkZGVkIGNvbnRleHQgYXJyYXkgdG8gUmVxdWVzdEludGVyZmFjZTo6c2V0U3RhdGUoKQoqIEJ1ZzogUmVtb3ZpbmcgaGFyZCBkZXBlbmRlbmN5IG9uIHRoZSBCYWNrb2ZmUGx1Z2luIGZyb20gR3V6emxlXEh0dHAKKiBCdWc6IEFkZGluZyByZXF1aXJlZCBjb250ZW50LXR5cGUgd2hlbiBKU09OIHJlcXVlc3QgdmlzaXRvciBhZGRzIEpTT04gdG8gYSBjb21tYW5kCiogQnVnOiBGaXhpbmcgdGhlIHNlcmlhbGl6YXRpb24gb2YgYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIHdpdGggY3VzdG9tIGRhdGEKKiBNYWRlIGl0IGVhc2llciB0byBkZWFsIHdpdGggZXhjZXB0aW9ucyB0aHJvd24gd2hlbiB0cmFuc2ZlcnJpbmcgY29tbWFuZHMgb3IgcmVxdWVzdHMgaW4gcGFyYWxsZWwgYnkgcHJvdmlkaW5nCiAgYW4gYXJyYXkgb2Ygc3VjY2Vzc2Z1bCBhbmQgZmFpbGVkIHJlc3BvbnNlcwoqIE1vdmVkIGdldFBhdGggZnJvbSBHdXp6bGVcU2VydmljZVxSZXNvdXJjZVxNb2RlbCB0byBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb24KKiBBZGRlZCBHdXp6bGVcSHR0cFxJb0VtaXR0aW5nRW50aXR5Qm9keQoqIE1vdmVkIGNvbW1hbmQgZmlsdHJhdGlvbiBmcm9tIHZhbGlkYXRvcnMgdG8gbG9jYXRpb24gdmlzaXRvcnMKKiBBZGRlZCBgZXh0ZW5kc2AgYXR0cmlidXRlcyB0byBzZXJ2aWNlIGRlc2NyaXB0aW9uIHBhcmFtZXRlcnMKKiBBZGRlZCBnZXRNb2RlbHMgdG8gU2VydmljZURlc2NyaXB0aW9uSW50ZXJmYWNlCgojIyAzLjAuNyAtIDIwMTItMTItMTkKCiogRml4aW5nIHBoYXIgZGV0ZWN0aW9uIHdoZW4gZm9yY2luZyBhIGNhY2VydCB0byBzeXN0ZW0gaWYgbnVsbCBvciB0cnVlCiogQWxsb3dpbmcgZmlsZW5hbWUgdG8gYmUgcGFzc2VkIHRvIGBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlcXVlc3Q6OnNldFJlc3BvbnNlQm9keSgpYAoqIENsZWFuaW5nIHVwIGBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb246OmluamVjdGAgbWV0aG9kCiogQWRkaW5nIGEgcmVzcG9uc2VfYm9keSBsb2NhdGlvbiB0byBzZXJ2aWNlIGRlc2NyaXB0aW9ucwoKIyMgMy4wLjYgLSAyMDEyLTEyLTA5CgoqIEN1cmxNdWx0aSBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMKKiBBZGRpbmcgc2V0RXJyb3JSZXNwb25zZXMoKSB0byBPcGVyYXRpb24KKiBjb21wb3Nlci5qc29uIHR3ZWFrcwoKIyMgMy4wLjUgLSAyMDEyLTExLTE4CgoqIEJ1ZzogRml4aW5nIGFuIGluZmluaXRlIHJlY3Vyc2lvbiBidWcgY2F1c2VkIGZyb20gcmV2YWxpZGF0aW5nIHdpdGggdGhlIENhY2hlUGx1Z2luCiogQnVnOiBSZXNwb25zZSBib2R5IGNhbiBub3cgYmUgYSBzdHJpbmcgY29udGFpbmluZyAiMCIKKiBCdWc6IFVzaW5nIEd1enpsZSBpbnNpZGUgb2YgYSBwaGFyIHVzZXMgc3lzdGVtIGJ5IGRlZmF1bHQgYnV0IG5vdyBhbGxvd3MgZm9yIGEgY3VzdG9tIGNhY2VydAoqIEJ1ZzogUXVlcnlTdHJpbmc6OmZyb21TdHJpbmcgbm93IHByb3Blcmx5IHBhcnNlcyBxdWVyeSBzdHJpbmcgcGFyYW1ldGVycyB0aGF0IGNvbnRhaW4gZXF1YWwgc2lnbnMKKiBBZGRlZCBzdXBwb3J0IGZvciBYTUwgYXR0cmlidXRlcyBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9uIHJlc3BvbnNlcwoqIERlZmF1bHRSZXF1ZXN0U2VyaWFsaXplciBub3cgc3VwcG9ydHMgYXJyYXkgVVJJIHBhcmFtZXRlciB2YWx1ZXMgZm9yIFVSSSB0ZW1wbGF0ZSBleHBhbnNpb24KKiBBZGRlZCBiZXR0ZXIgbWltZXR5cGUgZ3Vlc3NpbmcgdG8gcmVxdWVzdHMgYW5kIHBvc3QgZmlsZXMKCiMjIDMuMC40IC0gMjAxMi0xMS0xMQoKKiBCdWc6IEZpeGVkIGEgYnVnIHdoZW4gYWRkaW5nIG11bHRpcGxlIGNvb2tpZXMgdG8gYSByZXF1ZXN0IHRvIHVzZSB0aGUgY29ycmVjdCBnbHVlIHZhbHVlCiogQnVnOiBDb29raWVzIGNhbiBub3cgYmUgYWRkZWQgdGhhdCBoYXZlIGEgbmFtZSwgZG9tYWluLCBvciB2YWx1ZSBzZXQgdG8gIjAiCiogQnVnOiBVc2luZyB0aGUgc3lzdGVtIGNhY2VydCBidW5kbGUgd2hlbiB1c2luZyB0aGUgUGhhcgoqIEFkZGVkIGpzb24gYW5kIHhtbCBtZXRob2RzIHRvIFJlc3BvbnNlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHBhcnNlIEpTT04gYW5kIFhNTCByZXNwb25zZSBkYXRhIGludG8gZGF0YSBzdHJ1Y3R1cmVzCiogRW5oYW5jZWQgY29va2llIGphciBkZS1kdXBsaWNhdGlvbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGVuYWJsZSBzdHJpY3QgY29va2llIGphcnMgdGhhdCB0aHJvdyBleGNlcHRpb25zIHdoZW4gaW52YWxpZCBjb29raWVzIGFyZSBhZGRlZAoqIEFkZGVkIHNldFN0cmVhbSB0byBTdHJlYW1JbnRlcmZhY2UgdG8gYWN0dWFsbHkgbWFrZSBpdCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgY3VzdG9tIHJld2luZCBiZWhhdmlvciBmb3IgZW50aXR5IGJvZGllcwoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGNyZWF0ZSBhbnkgc29ydCBvZiBoYXNoIGZvciBhIHN0cmVhbSByYXRoZXIgdGhhbiBqdXN0IGFuIE1ENSBoYXNoCgojIyAzLjAuMyAtIDIwMTItMTEtMDQKCiogSW1wbGVtZW50aW5nIHJlZGlyZWN0cyBpbiBQSFAgcmF0aGVyIHRoYW4gY1VSTAoqIEFkZGVkIFBFQ0wgVVJJIHRlbXBsYXRlIGV4dGVuc2lvbiBhbmQgdXNpbmcgYXMgZGVmYXVsdCBwYXJzZXIgaWYgYXZhaWxhYmxlCiogQnVnOiBGaXhlZCBDb250ZW50LUxlbmd0aCBwYXJzaW5nIG9mIFJlc3BvbnNlIGZhY3RvcnkKKiBBZGRpbmcgcmV3aW5kKCkgbWV0aG9kIHRvIGVudGl0eSBib2RpZXMgYW5kIHN0cmVhbXMuIEFsbG93cyBmb3IgY3VzdG9tIHJld2luZGluZyBvZiBub24tcmVwZWF0YWJsZSBzdHJlYW1zLgoqIEFkZGluZyBUb0FycmF5SW50ZXJmYWNlIHRocm91Z2hvdXQgbGlicmFyeQoqIEZpeGluZyBPYXV0aFBsdWdpbiB0byBjcmVhdGUgdW5pcXVlIG5vbmNlIHZhbHVlcyBwZXIgcmVxdWVzdAoKIyMgMy4wLjIgLSAyMDEyLTEwLTI1CgoqIE1hZ2ljIG1ldGhvZHMgYXJlIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBjbGllbnRzCiogTWFnaWMgbWV0aG9kcyByZXR1cm4gdGhlIHJlc3VsdCBvZiBhIGNvbW1hbmQKKiBTZXJ2aWNlIGNsaWVudHMgbm8gbG9uZ2VyIHJlcXVpcmUgYSBiYXNlX3VybCBvcHRpb24gaW4gdGhlIGZhY3RvcnkKKiBCdWc6IEZpeGVkIGFuIGlzc3VlIHdpdGggVVJJIHRlbXBsYXRlcyB3aGVyZSBudWxsIHRlbXBsYXRlIHZhcmlhYmxlcyB3ZXJlIGJlaW5nIGV4cGFuZGVkCgojIyAzLjAuMSAtIDIwMTItMTAtMjIKCiogTW9kZWxzIGNhbiBub3cgYmUgdXNlZCBsaWtlIHJlZ3VsYXIgY29sbGVjdGlvbiBvYmplY3RzIGJ5IGNhbGxpbmcgZmlsdGVyLCBtYXAsIGV0Yy4KKiBNb2RlbHMgbm8gbG9uZ2VyIHJlcXVpcmUgYSBQYXJhbWV0ZXIgc3RydWN0dXJlIG9yIGluaXRpYWwgZGF0YSBpbiB0aGUgY29uc3RydWN0b3IKKiBBZGRlZCBhIGN1c3RvbSBBcHBlbmRJdGVyYXRvciB0byBnZXQgYXJvdW5kIGEgUEhQIGJ1ZyB3aXRoIHRoZSBgXEFwcGVuZEl0ZXJhdG9yYAoKIyMgMy4wLjAgLSAyMDEyLTEwLTE1CgoqIFJld3JvdGUgc2VydmljZSBkZXNjcmlwdGlvbiBmb3JtYXQgdG8gYmUgYmFzZWQgb24gU3dhZ2dlcgogICAgKiBOb3cgYmFzZWQgb24gSlNPTiBzY2hlbWEKICAgICogQWRkZWQgbmVzdGVkIGlucHV0IHN0cnVjdHVyZXMgYW5kIG5lc3RlZCByZXNwb25zZSBtb2RlbHMKICAgICogU3VwcG9ydCBmb3IgSlNPTiBhbmQgWE1MIGlucHV0IGFuZCBvdXRwdXQgbW9kZWxzCiAgICAqIFJlbmFtZWQgYGNvbW1hbmRzYCB0byBgb3BlcmF0aW9uc2AKICAgICogUmVtb3ZlZCBkb3QgY2xhc3Mgbm90YXRpb24KICAgICogUmVtb3ZlZCBjdXN0b20gdHlwZXMKKiBCcm9rZSB0aGUgcHJvamVjdCBpbnRvIHNtYWxsZXIgdG9wLWxldmVsIG5hbWVzcGFjZXMgdG8gYmUgbW9yZSBjb21wb25lbnQgZnJpZW5kbHkKKiBSZW1vdmVkIHN1cHBvcnQgZm9yIFhNTCBjb25maWdzIGFuZCBkZXNjcmlwdGlvbnMuIFVzZSBhcnJheXMgb3IgSlNPTiBmaWxlcy4KKiBSZW1vdmVkIHRoZSBWYWxpZGF0aW9uIGNvbXBvbmVudCBhbmQgSW5zcGVjdG9yCiogTW92ZWQgYWxsIGNvb2tpZSBjb2RlIHRvIEd1enpsZVxQbHVnaW5cQ29va2llCiogTWFnaWMgbWV0aG9kcyBvbiBhIEd1enpsZVxTZXJ2aWNlXENsaWVudCBub3cgcmV0dXJuIHRoZSBjb21tYW5kIHVuLWV4ZWN1dGVkLgoqIENhbGxpbmcgZ2V0UmVzdWx0KCkgb3IgZ2V0UmVzcG9uc2UoKSBvbiBhIGNvbW1hbmQgd2lsbCBsYXppbHkgZXhlY3V0ZSB0aGUgY29tbWFuZCBpZiBuZWVkZWQuCiogTm93IHNoaXBwaW5nIHdpdGggY1VSTCdzIENBIGNlcnRzIGFuZCB1c2luZyBpdCBieSBkZWZhdWx0CiogQWRkZWQgcHJldmlvdXNSZXNwb25zZSgpIG1ldGhvZCB0byByZXNwb25zZSBvYmplY3RzCiogTm8gbG9uZ2VyIHNlbmRpbmcgQWNjZXB0IGFuZCBBY2NlcHQtRW5jb2RpbmcgaGVhZGVycyBvbiBldmVyeSByZXF1ZXN0CiogT25seSBzZW5kaW5nIGFuIEV4cGVjdCBoZWFkZXIgYnkgZGVmYXVsdCB3aGVuIGEgcGF5bG9hZCBpcyBncmVhdGVyIHRoYW4gMU1CCiogQWRkZWQvbW92ZWQgY2xpZW50IG9wdGlvbnM6CiAgICAqIGN1cmwuYmxhY2tsaXN0IHRvIGN1cmwub3B0aW9uLmJsYWNrbGlzdAogICAgKiBBZGRlZCBzc2wuY2VydGlmaWNhdGVfYXV0aG9yaXR5CiogQWRkZWQgYSBHdXp6bGVcSXRlcmF0b3IgY29tcG9uZW50CiogTW92ZWQgcGx1Z2lucyBmcm9tIEd1enpsZVxIdHRwXFBsdWdpbiB0byBHdXp6bGVcUGx1Z2luCiogQWRkZWQgYSBtb3JlIHJvYnVzdCBiYWNrb2ZmIHJldHJ5IHN0cmF0ZWd5IChyZXBsYWNlZCB0aGUgRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luKQoqIEFkZGVkIGEgbW9yZSByb2J1c3QgY2FjaGluZyBwbHVnaW4KKiBBZGRlZCBzZXRCb2R5IHRvIHJlc3BvbnNlIG9iamVjdHMKKiBVcGRhdGluZyBMb2dQbHVnaW4gdG8gdXNlIGEgbW9yZSBmbGV4aWJsZSBNZXNzYWdlRm9ybWF0dGVyCiogQWRkZWQgYSBjb21wbGV0ZWx5IHJldmFtcGVkIGJ1aWxkIHByb2Nlc3MKKiBDbGVhbmluZyB1cCBDb2xsZWN0aW9uIGNsYXNzIGFuZCByZW1vdmluZyBkZWZhdWx0IHZhbHVlcyBmcm9tIHRoZSBnZXQgbWV0aG9kCiogRml4ZWQgWkYyIGNhY2hlIGFkYXB0ZXJzCgojIyAyLjguOCAtIDIwMTItMTAtMTUKCiogQnVnOiBGaXhlZCBhIGNvb2tpZSBpc3N1ZSB0aGF0IGNhdXNlZCBkb3QgcHJlZml4ZWQgZG9tYWlucyB0byBub3QgbWF0Y2ggd2hlcmUgcG9wdWxhciBicm93c2VycyBkaWQKCiMjIDIuOC43IC0gMjAxMi0wOS0zMAoKKiBCdWc6IEZpeGVkIGNvbmZpZyBmaWxlIGFsaWFzZXMgZm9yIEpTT04gaW5jbHVkZXMKKiBCdWc6IEZpeGVkIGNvb2tpZSBidWcgb24gYSByZXF1ZXN0IG9iamVjdCBieSB1c2luZyBDb29raWVQYXJzZXIgdG8gcGFyc2UgY29va2llcyBvbiByZXF1ZXN0cwoqIEJ1ZzogUmVtb3ZpbmcgdGhlIHBhdGggdG8gYSBmaWxlIHdoZW4gc2VuZGluZyBhIENvbnRlbnQtRGlzcG9zaXRpb24gaGVhZGVyIG9uIGEgUE9TVCB1cGxvYWQKKiBCdWc6IEhhcmRlbmluZyByZXF1ZXN0IGFuZCByZXNwb25zZSBwYXJzaW5nIHRvIGFjY291bnQgZm9yIG1pc3NpbmcgcGFydHMKKiBCdWc6IEZpeGVkIFBFQVIgcGFja2FnaW5nCiogQnVnOiBGaXhlZCBSZXF1ZXN0OjpnZXRJbmZvCiogQnVnOiBGaXhlZCBjYXNlcyB3aGVyZSBDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0gcmV0dXJuIGNvZGVzIHdlcmUgY2F1c2luZyBjdXJsIHRyYW5zYWN0aW9ucyB0byBmYWlsCiogQWRkaW5nIHRoZSBhYmlsaXR5IGZvciB0aGUgbmFtZXNwYWNlIEl0ZXJhdG9yIGZhY3RvcnkgdG8gbG9vayBpbiBtdWx0aXBsZSBkaXJlY3RvcmllcwoqIEFkZGVkIG1vcmUgZ2V0dGVycy9zZXR0ZXJzL3JlbW92ZXJzIGZyb20gc2VydmljZSBkZXNjcmlwdGlvbnMKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byByZW1vdmUgUE9TVCBmaWVsZHMgZnJvbSBPQXV0aCBzaWduYXR1cmVzCiogT0F1dGggcGx1Z2luIG5vdyBzdXBwb3J0cyAyLWxlZ2dlZCBPQXV0aAoKIyMgMi44LjYgLSAyMDEyLTA5LTA1CgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIG1vZGlmeSBhbmQgYnVpbGQgc2VydmljZSBkZXNjcmlwdGlvbnMKKiBBZGRlZCB0aGUgdXNlIG9mIHZpc2l0b3JzIHRvIGFwcGx5IHBhcmFtZXRlcnMgdG8gbG9jYXRpb25zIGluIHNlcnZpY2UgZGVzY3JpcHRpb25zIHVzaW5nIHRoZSBkeW5hbWljIGNvbW1hbmQKKiBBZGRlZCBhIGBqc29uYCBwYXJhbWV0ZXIgbG9jYXRpb24KKiBOb3cgYWxsb3dpbmcgZG90IG5vdGF0aW9uIGZvciBjbGFzc2VzIGluIHRoZSBDYWNoZUFkYXB0ZXJGYWN0b3J5CiogVXNpbmcgdGhlIHVuaW9uIG9mIHR3byBhcnJheXMgcmF0aGVyIHRoYW4gYW4gYXJyYXlfbWVyZ2Ugd2hlbiBleHRlbmRpbmcgc2VydmljZSBidWlsZGVyIHNlcnZpY2VzIGFuZCBzZXJ2aWNlIHBhcmFtcwoqIEVuc3VyaW5nIHRoYXQgYSBzZXJ2aWNlIGlzIGEgc3RyaW5nIGJlZm9yZSBkb2luZyBzdHJwb3MoKSBjaGVja3Mgb24gaXQgd2hlbiBzdWJzdGl0dXRpbmcgc2VydmljZXMgZm9yIHJlZmVyZW5jZXMKICBpbiBzZXJ2aWNlIGJ1aWxkZXIgY29uZmlnIGZpbGVzLgoqIFNlcnZpY2VzIGRlZmluZWQgaW4gdHdvIGRpZmZlcmVudCBjb25maWcgZmlsZXMgdGhhdCBpbmNsdWRlIG9uZSBhbm90aGVyIHdpbGwgYnkgZGVmYXVsdCByZXBsYWNlIHRoZSBwcmV2aW91c2x5CiAgZGVmaW5lZCBzZXJ2aWNlLCBidXQgeW91IGNhbiBub3cgY3JlYXRlIHNlcnZpY2VzIHRoYXQgZXh0ZW5kIHRoZW1zZWx2ZXMgYW5kIG1lcmdlIHRoZWlyIHNldHRpbmdzIG92ZXIgdGhlIHByZXZpb3VzCiogVGhlIEpzb25Mb2FkZXIgbm93IHN1cHBvcnRzIGFsaWFzaW5nIGZpbGVuYW1lcyB3aXRoIGRpZmZlcmVudCBmaWxlbmFtZXMuIFRoaXMgYWxsb3dzIHlvdSB0byBhbGlhcyBzb21ldGhpbmcgbGlrZQogICdfZGVmYXVsdCcgd2l0aCBhIGRlZmF1bHQgSlNPTiBjb25maWd1cmF0aW9uIGZpbGUuCgojIyAyLjguNSAtIDIwMTItMDgtMjkKCiogQnVnOiBTdXBwcmVzc2VkIGVtcHR5IGFycmF5cyBmcm9tIFVSSSB0ZW1wbGF0ZXMKKiBCdWc6IEFkZGVkIHRoZSBtaXNzaW5nICRvcHRpb25zIGFyZ3VtZW50IGZyb20gU2VydmljZURlc2NyaXB0aW9uOjpmYWN0b3J5IHRvIGVuYWJsZSBjYWNoaW5nCiogQWRkZWQgc3VwcG9ydCBmb3IgSFRUUCByZXNwb25zZXMgdGhhdCBkbyBub3QgY29udGFpbiBhIHJlYXNvbiBwaHJhc2UgaW4gdGhlIHN0YXJ0LWxpbmUKKiBBYnN0cmFjdENvbW1hbmQgY29tbWFuZHMgYXJlIG5vdyBpbnZva2FibGUKKiBBZGRlZCBhIHdheSB0byBnZXQgdGhlIGRhdGEgdXNlZCB3aGVuIHNpZ25pbmcgYW4gT2F1dGggcmVxdWVzdCBiZWZvcmUgYSByZXF1ZXN0IGlzIHNlbnQKCiMjIDIuOC40IC0gMjAxMi0wOC0xNQoKKiBCdWc6IEN1c3RvbSBkZWxheSB0aW1lIGNhbGN1bGF0aW9ucyBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQgaW4gdGhlIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHRyYW5zZmVyIGVudGl0eSBib2RpZXMgYXMgYSBzdHJpbmcgcmF0aGVyIHRoYW4gc3RyZWFtZWQuIFRoaXMgZ2V0cyBhcm91bmQgY3VybCBlcnJvciA2NS4gU2V0IGBib2R5X2FzX3N0cmluZ2AgaW4gYSByZXF1ZXN0J3MgY3VybCBvcHRpb25zIHRvIGVuYWJsZS4KKiBBZGRlZCBhIFN0cmVhbUludGVyZmFjZSwgRW50aXR5Qm9keUludGVyZmFjZSwgYW5kIGFkZGVkIGZ0ZWxsKCkgdG8gR3V6emxlXENvbW1vblxTdHJlYW0KKiBBZGRlZCBhbiBBYnN0cmFjdEVudGl0eUJvZHlEZWNvcmF0b3IgYW5kIGEgUmVhZExpbWl0RW50aXR5Qm9keSBkZWNvcmF0b3IgdG8gdHJhbnNmZXIgb25seSBhIHN1YnNldCBvZiBhIGRlY29yYXRlZCBzdHJlYW0KKiBTdHJlYW0gYW5kIEVudGl0eUJvZHkgb2JqZWN0cyB3aWxsIG5vdyByZXR1cm4gdGhlIGZpbGUgcG9zaXRpb24gdG8gdGhlIHByZXZpb3VzIHBvc2l0aW9uIGFmdGVyIGEgcmVhZCByZXF1aXJlZCBvcGVyYXRpb24gKGUuZy4gZ2V0Q29udGVudE1kNSgpKQoqIEFkZGVkIGFkZGl0aW9uYWwgcmVzcG9uc2Ugc3RhdHVzIGNvZGVzCiogUmVtb3ZlZCBTU0wgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGVmYXVsdCBVc2VyLUFnZW50IGhlYWRlcgoqIERFTEVURSByZXF1ZXN0cyBjYW4gbm93IHNlbmQgYW4gZW50aXR5IGJvZHkKKiBBZGRlZCBhbiBFdmVudERpc3BhdGNoZXIgdG8gdGhlIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbiBhbmQgYWRkZWQgYW4gRXhwb25lbnRpYWxCYWNrb2ZmTG9nZ2VyIHRvIGxvZyBiYWNrb2ZmIHJldHJpZXMKKiBBZGRlZCB0aGUgYWJpbGl0eSBvZiB0aGUgTW9ja1BsdWdpbiB0byBjb25zdW1lIG1vY2tlZCByZXF1ZXN0IGJvZGllcwoqIExvZ1BsdWdpbiBub3cgZXhwb3NlcyByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIGluIHRoZSBleHRyYXMgYXJyYXkKCiMjIDIuOC4zIC0gMjAxMi0wNy0zMAoKKiBCdWc6IEZpeGVkIGEgY2FzZSB3aGVyZSBlbXB0eSBQT1NUIHJlcXVlc3RzIHdlcmUgc2VudCBhcyBHRVQgcmVxdWVzdHMKKiBCdWc6IEZpeGVkIGEgYnVnIGluIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbiB0aGF0IGNhdXNlZCBmYXRhbCBlcnJvcnMgd2hlbiByZXRyeWluZyBhbiBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IHRoYXQgZG9lcyBub3QgaGF2ZSBhIGJvZHkKKiBCdWc6IFNldHRpbmcgdGhlIHJlc3BvbnNlIGJvZHkgb2YgYSByZXF1ZXN0IHRvIG51bGwgYWZ0ZXIgY29tcGxldGluZyBhIHJlcXVlc3QsIG5vdCB3aGVuIHNldHRpbmcgdGhlIHN0YXRlIG9mIGEgcmVxdWVzdCB0byBuZXcKKiBBZGRlZCBtdWx0aXBsZSBpbmhlcml0YW5jZSB0byBzZXJ2aWNlIGRlc2NyaXB0aW9uIGNvbW1hbmRzCiogQWRkZWQgYW4gQXBpQ29tbWFuZEludGVyZmFjZSBhbmQgYWRkZWQgYGdldFBhcmFtTmFtZXMoKWAgYW5kIGBoYXNQYXJhbSgpYAoqIFJlbW92ZWQgdGhlIGRlZmF1bHQgMm1iIHNpemUgY3V0b2ZmIGZyb20gdGhlIE1kNVZhbGlkYXRvclBsdWdpbiBzbyB0aGF0IGl0IG5vdyBkZWZhdWx0cyB0byB2YWxpZGF0aW5nIGV2ZXJ5dGhpbmcKKiBDaGFuZ2VkIEN1cmxNdWx0aTo6cGVyZm9ybSB0byBwYXNzIGEgc21hbGxlciB0aW1lb3V0IHRvIEN1cmxNdWx0aTo6ZXhlY3V0ZUhhbmRsZXMKCiMjIDIuOC4yIC0gMjAxMi0wNy0yNAoKKiBCdWc6IFF1ZXJ5IHN0cmluZyB2YWx1ZXMgc2V0IHRvIDAgYXJlIG5vIGxvbmdlciBkcm9wcGVkIGZyb20gdGhlIHF1ZXJ5IHN0cmluZwoqIEJ1ZzogQSBDb2xsZWN0aW9uIG9iamVjdCBpcyBubyBsb25nZXIgY3JlYXRlZCBlYWNoIHRpbWUgYSBjYWxsIGlzIG1hZGUgdG8gYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQWJzdHJhY3RDb21tYW5kOjpnZXRSZXF1ZXN0SGVhZGVycygpYAoqIEJ1ZzogYCtgIGlzIG5vdyB0cmVhdGVkIGFzIGFuIGVuY29kZWQgc3BhY2Ugd2hlbiBwYXJzaW5nIHF1ZXJ5IHN0cmluZ3MKKiBRdWVyeVN0cmluZyBhbmQgQ29sbGVjdGlvbiBwZXJmb3JtYW5jZSBpbXByb3ZlbWVudHMKKiBBbGxvd2luZyBkb3Qgbm90YXRpb24gZm9yIGNsYXNzIHBhdGhzIGluIGZpbHRlcnMgYXR0cmlidXRlIG9mIGEgc2VydmljZSBkZXNjcmlwdGlvbnMKCiMjIDIuOC4xIC0gMjAxMi0wNy0xNgoKKiBMb29zZW5pbmcgRXZlbnQgRGlzcGF0Y2hlciBkZXBlbmRlbmN5CiogUE9TVCByZWRpcmVjdHMgY2FuIG5vdyBiZSBjdXN0b21pemVkIHVzaW5nIENVUkxPUFRfUE9TVFJFRElSCgojIyAyLjguMCAtIDIwMTItMDctMTUKCiogQkM6IEd1enpsZVxIdHRwXFF1ZXJ5CiAgICAqIFF1ZXJ5IHN0cmluZ3Mgd2l0aCBlbXB0eSB2YXJpYWJsZXMgd2lsbCBhbHdheXMgc2hvdyBhbiBlcXVhbCBzaWduIHVubGVzcyB0aGUgdmFyaWFibGUgaXMgc2V0IHRvIFF1ZXJ5U3RyaW5nOjpCTEFOSyAoZS5nLiA/YWNsPSB2cyA/YWNsKQogICAgKiBDaGFuZ2VkIGlzRW5jb2RpbmdWYWx1ZXMoKSBhbmQgaXNFbmNvZGluZ0ZpZWxkcygpIHRvIGlzVXJsRW5jb2RpbmcoKQogICAgKiBDaGFuZ2VkIHNldEVuY29kZVZhbHVlcyhib29sKSBhbmQgc2V0RW5jb2RlRmllbGRzKGJvb2wpIHRvIHVzZVVybEVuY29kaW5nKGJvb2wpCiAgICAqIENoYW5nZWQgdGhlIGFnZ3JlZ2F0aW9uIGZ1bmN0aW9ucyBvZiBRdWVyeVN0cmluZyB0byBiZSBzdGF0aWMgbWV0aG9kcwogICAgKiBDYW4gbm93IHVzZSBmcm9tU3RyaW5nKCkgd2l0aCBxdWVyeXN0cmluZ3MgdGhhdCBoYXZlIGEgbGVhZGluZyA/CiogY1VSTCBjb25maWd1cmF0aW9uIHZhbHVlcyBjYW4gYmUgc3BlY2lmaWVkIGluIHNlcnZpY2UgZGVzY3JpcHRpb25zIHVzaW5nIGBjdXJsLmAgcHJlZml4ZWQgcGFyYW1ldGVycwoqIENvbnRlbnQtTGVuZ3RoIGlzIHNldCB0byAwIGJlZm9yZSBlbWl0dGluZyB0aGUgcmVxdWVzdC5iZWZvcmVfc2VuZCBldmVudCB3aGVuIHNlbmRpbmcgYW4gZW1wdHkgcmVxdWVzdCBib2R5CiogQ29va2llcyBhcmUgbm8gbG9uZ2VyIFVSTCBkZWNvZGVkIGJ5IGRlZmF1bHQKKiBCdWc6IFVSSSB0ZW1wbGF0ZSB2YXJpYWJsZXMgc2V0IHRvIG51bGwgYXJlIG5vIGxvbmdlciBleHBhbmRlZAoKIyMgMi43LjIgLSAyMDEyLTA3LTAyCgoqIEJDOiBNb3ZpbmcgdGhpbmdzIHRvIGdldCByZWFkeSBmb3Igc3VidHJlZSBzcGxpdHMuIE1vdmluZyBJbmZsZWN0aW9uIGludG8gQ29tbW9uLiBNb3ZpbmcgR3V6emxlXEh0dHBcUGFyc2VyIHRvIEd1enpsZVxQYXJzZXIuCiogQkM6IFJlbW92aW5nIEd1enpsZVxDb21tb25cQmF0Y2hcQmF0Y2g6OmNvdW50KCkgYW5kIHJlcGxhY2luZyBpdCB3aXRoIGlzRW1wdHkoKQoqIENhY2hlUGx1Z2luIG5vdyBhbGxvd3MgZm9yIGEgY3VzdG9tIHJlcXVlc3QgcGFyYW1ldGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgcmVxdWVzdCBjYW4gYmUgY2FjaGVkCiogQnVnIGZpeDogQ2FjaGVQbHVnaW4gbm93IG9ubHkgY2FjaGVzIEdFVCBhbmQgSEVBRCByZXF1ZXN0cyBieSBkZWZhdWx0CiogQnVnIGZpeDogVXNpbmcgaGVhZGVyIGdsdWUgd2hlbiB0cmFuc2ZlcnJpbmcgaGVhZGVycyBvdmVyIHRoZSB3aXJlCiogQWxsb3dpbmcgZGVlcGx5IG5lc3RlZCBhcnJheXMgZm9yIGNvbXBvc2l0ZSB2YXJpYWJsZXMgaW4gVVJJIHRlbXBsYXRlcwoqIEJhdGNoIGRpdmlzb3JzIGNhbiBub3cgcmV0dXJuIGl0ZXJhdG9ycyBvciBhcnJheXMKCiMjIDIuNy4xIC0gMjAxMi0wNi0yNgoKKiBNaW5vciBwYXRjaCB0byB1cGRhdGUgdmVyc2lvbiBudW1iZXIgaW4gVUEgc3RyaW5nCiogVXBkYXRpbmcgYnVpbGQgcHJvY2VzcwoKIyMgMi43LjAgLSAyMDEyLTA2LTI1CgoqIEJDOiBJbmZsZWN0aW9uIGNsYXNzZXMgbW92ZWQgdG8gR3V6emxlXEluZmxlY3Rpb24uIE5vIGxvbmdlciBzdGF0aWMgbWV0aG9kcy4gQ2FuIG5vdyBpbmplY3QgY3VzdG9tIGluZmxlY3RvcnMgaW50byBjbGFzc2VzLgoqIEJDOiBSZW1vdmVkIG1hZ2ljIHNldFggbWV0aG9kcyBmcm9tIGNvbW1hbmRzCiogQkM6IE1hZ2ljIG1ldGhvZHMgbWFwcGVkIHRvIHNlcnZpY2UgZGVzY3JpcHRpb24gY29tbWFuZHMgYXJlIG5vdyBpbmZsZWN0ZWQgaW4gdGhlIGNvbW1hbmQgZmFjdG9yeSByYXRoZXIgdGhhbiB0aGUgY2xpZW50IF9fY2FsbCgpIG1ldGhvZAoqIFZlcmJvc2UgY1VSTCBvcHRpb25zIGFyZSBubyBsb25nZXIgZW5hYmxlZCBieSBkZWZhdWx0LiBTZXQgY3VybC5kZWJ1ZyB0byB0cnVlIG9uIGEgY2xpZW50IHRvIGVuYWJsZS4KKiBCdWc6IE5vdyBhbGxvd2luZyBjb2xvbnMgaW4gYSByZXNwb25zZSBzdGFydC1saW5lIChlLmcuIEhUVFAvMS4xIDUwMyBTZXJ2aWNlIFVuYXZhaWxhYmxlOiBCYWNrLWVuZCBzZXJ2ZXIgaXMgYXQgY2FwYWNpdHkpCiogR3V6emxlXFNlcnZpY2VcUmVzb3VyY2VcUmVzb3VyY2VJdGVyYXRvckFwcGx5QmF0Y2hlZCBub3cgaW50ZXJuYWxseSB1c2VzIHRoZSBHdXp6bGVcQ29tbW9uXEJhdGNoIG5hbWVzcGFjZQoqIEFkZGVkIEd1enpsZVxTZXJ2aWNlXFBsdWdpbiBuYW1lc3BhY2UgYW5kIGEgUGx1Z2luQ29sbGVjdGlvblBsdWdpbgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHNldCBQT1NUIGZpZWxkcyBhbmQgZmlsZXMgaW4gYSBzZXJ2aWNlIGRlc2NyaXB0aW9uCiogR3V6emxlXEh0dHBcRW50aXR5Qm9keTo6ZmFjdG9yeSgpIG5vdyBhY2NlcHRzIG9iamVjdHMgd2l0aCBhIF9fdG9TdHJpbmcoKSBtZXRob2QKKiBBZGRpbmcgYSBjb21tYW5kLmJlZm9yZV9wcmVwYXJlIGV2ZW50IHRvIGNsaWVudHMKKiBBZGRlZCBCYXRjaENsb3N1cmVUcmFuc2ZlciBhbmQgQmF0Y2hDbG9zdXJlRGl2aXNvcgoqIEJhdGNoVHJhbnNmZXJFeGNlcHRpb24gbm93IGluY2x1ZGVzIHJlZmVyZW5jZXMgdG8gdGhlIGJhdGNoIGRpdmlzb3IgYW5kIHRyYW5zZmVyIHN0cmF0ZWdpZXMKKiBGaXhlZCBzb21lIHRlc3RzIHNvIHRoYXQgdGhleSBwYXNzIG1vcmUgcmVsaWFibHkKKiBBZGRlZCBHdXp6bGVcQ29tbW9uXExvZ1xBcnJheUxvZ0FkYXB0ZXIKCiMjIDIuNi42IC0gMjAxMi0wNi0xMAoKKiBCQzogUmVtb3ZpbmcgR3V6emxlXEh0dHBcUGx1Z2luXEJhdGNoUXVldWVQbHVnaW4KKiBCQzogUmVtb3ZpbmcgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxDb21tYW5kU2V0CiogQWRkaW5nIGdlbmVyaWMgYmF0Y2hpbmcgc3lzdGVtIChyZXBsYWNlcyB0aGUgYmF0Y2ggcXVldWUgcGx1Z2luIGFuZCBjb21tYW5kIHNldCkKKiBVcGRhdGluZyBaRiBjYWNoZSBhbmQgbG9nIGFkYXB0ZXJzIGFuZCBub3cgdXNpbmcgWkYncyBjb21wb3NlciByZXBvc2l0b3J5CiogQnVnOiBTZXR0aW5nIHRoZSBuYW1lIG9mIGVhY2ggQXBpUGFyYW0gd2hlbiBjcmVhdGluZyB0aHJvdWdoIGFuIEFwaUNvbW1hbmQKKiBBZGRpbmcgcmVzdWx0X3R5cGUsIHJlc3VsdF9kb2MsIGRlcHJlY2F0ZWQsIGFuZCBkb2NfdXJsIHRvIHNlcnZpY2UgZGVzY3JpcHRpb25zCiogQnVnOiBDaGFuZ2VkIHRoZSBkZWZhdWx0IGNvb2tpZSBoZWFkZXIgY2FzaW5nIGJhY2sgdG8gJ0Nvb2tpZScKCiMjIDIuNi41IC0gMjAxMi0wNi0wMwoKKiBCQzogUmVuYW1pbmcgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjpnZXRSZXNvdXJjZVVyaSgpIHRvIGdldFJlc291cmNlKCkKKiBCQzogUmVtb3ZpbmcgdW51c2VkIEFVVEhfQkFTSUMgYW5kIEFVVEhfRElHRVNUIGNvbnN0YW50cyBmcm9tCiogQkM6IEd1enpsZVxIdHRwXENvb2tpZSBpcyBub3cgdXNlZCB0byBtYW5hZ2UgU2V0LUNvb2tpZSBkYXRhLCBub3QgQ29va2llIGRhdGEKKiBCQzogUmVuYW1pbmcgbWV0aG9kcyBpbiB0aGUgQ29va2llSmFySW50ZXJmYWNlCiogTW92aW5nIGFsbW9zdCBhbGwgY29va2llIGxvZ2ljIG91dCBvZiB0aGUgQ29va2llUGx1Z2luIGFuZCBpbnRvIHRoZSBDb29raWUgb3IgQ29va2llSmFyIGltcGxlbWVudGF0aW9ucwoqIE1ha2luZyB0aGUgZGVmYXVsdCBnbHVlIGZvciBIVFRQIGhlYWRlcnMgJzsnIGluc3RlYWQgb2YgJywnCiogQWRkaW5nIGEgcmVtb3ZlVmFsdWUgdG8gR3V6emxlXEh0dHBcTWVzc2FnZVxIZWFkZXIKKiBBZGRpbmcgZ2V0Q29va2llcygpIHRvIHJlcXVlc3QgaW50ZXJmYWNlLgoqIE1ha2luZyBpdCBlYXNpZXIgdG8gYWRkIGV2ZW50IHN1YnNjcmliZXJzIHRvIEhhc0Rpc3BhdGNoZXJJbnRlcmZhY2UgY2xhc3Nlcy4gQ2FuIG5vdyBkaXJlY3RseSBjYWxsIGFkZFN1YnNjcmliZXIoKQoKIyMgMi42LjQgLSAyMDEyLTA1LTMwCgoqIEJDOiBDbGVhbmluZyB1cCBob3cgUE9TVCBmaWxlcyBhcmUgc3RvcmVkIGluIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgb2JqZWN0cy4gQWRkaW5nIFBvc3RGaWxlIGNsYXNzLgoqIEJDOiBNb3ZpbmcgQXBpQ29tbWFuZCBzcGVjaWZpYyBmdW5jdGlvbmFsaXR5IGZyb20gdGhlIEluc3BlY3RvciBhbmQgb24gdG8gdGhlIEFwaUNvbW1hbmQKKiBCdWc6IEZpeGluZyBtYWdpYyBtZXRob2QgY29tbWFuZCBjYWxscyBvbiBjbGllbnRzCiogQnVnOiBFbWFpbCBjb25zdHJhaW50IG9ubHkgdmFsaWRhdGVzIHN0cmluZ3MKKiBCdWc6IEFnZ3JlZ2F0ZSBQT1NUIGZpZWxkcyB3aGVuIFBPU1QgZmlsZXMgYXJlIHByZXNlbnQgaW4gY3VybCBoYW5kbGUKKiBCdWc6IEZpeGluZyBkZWZhdWx0IFVzZXItQWdlbnQgaGVhZGVyCiogQnVnOiBPbmx5IGFwcGVuZGluZyBvciBwcmVwZW5kaW5nIHBhcmFtZXRlcnMgaW4gY29tbWFuZHMgaWYgdGhleSBhcmUgc3BlY2lmaWVkCiogQnVnOiBOb3QgcmVxdWlyaW5nIHJlc3BvbnNlIHJlYXNvbiBwaHJhc2VzIG9yIHN0YXR1cyBjb2RlcyB0byBtYXRjaCBhIHByZWRlZmluZWQgbGlzdCBvZiBjb2RlcwoqIEFsbG93aW5nIHRoZSB1c2Ugb2YgZG90IG5vdGF0aW9uIGZvciBjbGFzcyBuYW1lc3BhY2VzIHdoZW4gdXNpbmcgaW5zdGFuY2Vfb2YgY29uc3RyYWludAoqIEFkZGVkIGFueV9tYXRjaCB2YWxpZGF0aW9uIGNvbnN0cmFpbnQKKiBBZGRlZCBhbiBBc3luY1BsdWdpbgoqIFBhc3NpbmcgcmVxdWVzdCBvYmplY3QgdG8gdGhlIGNhbGN1bGF0ZVdhaXQgbWV0aG9kIG9mIHRoZSBFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW4KKiBBbGxvd2luZyB0aGUgcmVzdWx0IG9mIGEgY29tbWFuZCBvYmplY3QgdG8gYmUgY2hhbmdlZAoqIFBhcnNpbmcgbG9jYXRpb24gYW5kIHR5cGUgc3ViIHZhbHVlcyB3aGVuIGluc3RhbnRpYXRpbmcgYSBzZXJ2aWNlIGRlc2NyaXB0aW9uIHJhdGhlciB0aGFuIG92ZXIgYW5kIG92ZXIgYXQgcnVudGltZQoKIyMgMi42LjMgLSAyMDEyLTA1LTIzCgoqIFtCQ10gR3V6emxlXENvbW1vblxGcm9tQ29uZmlnSW50ZXJmYWNlIG5vIGxvbmdlciByZXF1aXJlcyBhbnkgY29uZmlnIG9wdGlvbnMuCiogW0JDXSBSZWZhY3RvcmluZyBob3cgUE9TVCBmaWxlcyBhcmUgc3RvcmVkIG9uIGFuIEVudGl0eUVuY2xvc2luZ1JlcXVlc3QuIFRoZXkgYXJlIG5vdyBzZXBhcmF0ZSBmcm9tIFBPU1QgZmllbGRzLgoqIFlvdSBjYW4gbm93IHVzZSBhbiBhcnJheSBvZiBkYXRhIHdoZW4gY3JlYXRpbmcgUFVUIHJlcXVlc3QgYm9kaWVzIGluIHRoZSByZXF1ZXN0IGZhY3RvcnkuCiogUmVtb3ZpbmcgdGhlIHJlcXVpcmVtZW50IHRoYXQgSFRUUFMgcmVxdWVzdHMgbmVlZGVkIGEgQ2FjaGUtQ29udHJvbDogcHVibGljIGRpcmVjdGl2ZSB0byBiZSBjYWNoZWFibGUuCiogW0h0dHBdIEFkZGluZyBzdXBwb3J0IGZvciBDb250ZW50LVR5cGUgaW4gbXVsdGlwYXJ0IFBPU1QgdXBsb2FkcyBwZXIgdXBsb2FkCiogW0h0dHBdIEFkZGVkIHN1cHBvcnQgZm9yIHVwbG9hZGluZyBtdWx0aXBsZSBmaWxlcyB1c2luZyB0aGUgc2FtZSBuYW1lIChmb29bMF0sIGZvb1sxXSkKKiBBZGRpbmcgbW9yZSBQT1NUIGRhdGEgb3BlcmF0aW9ucyBmb3IgZWFzaWVyIG1hbmlwdWxhdGlvbiBvZiBQT1NUIGRhdGEuCiogWW91IGNhbiBub3cgc2V0IGVtcHR5IFBPU1QgZmllbGRzLgoqIFRoZSBib2R5IG9mIGEgcmVxdWVzdCBpcyBvbmx5IHNob3duIG9uIEVudGl0eUVuY2xvc2luZ1JlcXVlc3Qgb2JqZWN0cyB0aGF0IGRvIG5vdCB1c2UgUE9TVCBmaWxlcy4KKiBTcGxpdCB0aGUgR3V6emxlXFNlcnZpY2VcSW5zcGVjdG9yOjp2YWxpZGF0ZUNvbmZpZyBtZXRob2QgaW50byB0d28gbWV0aG9kcy4gT25lIHRvIGluaXRpYWxpemUgd2hlbiBhIGNvbW1hbmQgaXMgY3JlYXRlZCwgYW5kIG9uZSB0byB2YWxpZGF0ZS4KKiBDUyB1cGRhdGVzCgojIyAyLjYuMiAtIDIwMTItMDUtMTkKCiogW0h0dHBdIEJldHRlciBoYW5kbGluZyBvZiBuZXN0ZWQgc2NvcGUgcmVxdWVzdHMgaW4gQ3VybE11bHRpLiAgUmVxdWVzdHMgYXJlIG5vdyBhbHdheXMgcHJlcGFyZXMgaW4gdGhlIHNlbmQoKSBtZXRob2QgcmF0aGVyIHRoYW4gdGhlIGFkZFJlcXVlc3QoKSBtZXRob2QuCgojIyAyLjYuMSAtIDIwMTItMDUtMTkKCiogW0JDXSBSZW1vdmluZyAncGF0aCcgc3VwcG9ydCBpbiBzZXJ2aWNlIGRlc2NyaXB0aW9ucy4gIFVzZSAndXJpJy4KKiBbQkNdIEd1enpsZVxTZXJ2aWNlXEluc3BlY3Rvcjo6cGFyc2VEb2NCbG9jayBpcyBub3cgcHJvdGVjdGVkLiBBZGRpbmcgZ2V0QXBpUGFyYW1zRm9yQ2xhc3MoKSB3aXRoIGNhY2hlLgoqIFtCQ10gUmVtb3ZpbmcgR3V6emxlXENvbW1vblxOdWxsT2JqZWN0LiAgVXNlIGh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmcvTnVsbE9iamVjdCBpZiB5b3UgbmVlZCBpdC4KKiBbQkNdIFJlbW92aW5nIEd1enpsZVxDb21tb25cWG1sRWxlbWVudC4KKiBBbGwgY29tbWFuZHMsIGJvdGggZHluYW1pYyBhbmQgY29uY3JldGUsIGhhdmUgQXBpQ29tbWFuZCBvYmplY3RzLgoqIEFkZGluZyBhIGZpeCBmb3IgQ3VybE11bHRpIHNvIHRoYXQgaWYgYWxsIG9mIHRoZSBjb25uZWN0aW9ucyBlbmNvdW50ZXIgc29tZSBzb3J0IG9mIGN1cmwgZXJyb3IsIHRoZW4gdGhlIGxvb3AgZXhpdHMuCiogQWRkaW5nIGNoZWNrcyB0byBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IHNvIHRoYXQgZW1wdHkgUE9TVCBmaWxlcyBhbmQgZmllbGRzIGFyZSBpZ25vcmVkLgoqIE1ha2luZyB0aGUgbWV0aG9kIHNpZ25hdHVyZSBvZiBHdXp6bGVcU2VydmljZVxCdWlsZGVyXFNlcnZpY2VCdWlsZGVyOjpmYWN0b3J5IG1vcmUgZmxleGlibGUuCgojIyAyLjYuMCAtIDIwMTItMDUtMTUKCiogW0JDXSBNb3ZpbmcgR3V6emxlXFNlcnZpY2VcQnVpbGRlciB0byBHdXp6bGVcU2VydmljZVxCdWlsZGVyXFNlcnZpY2VCdWlsZGVyCiogW0JDXSBFeGVjdXRpbmcgYSBDb21tYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgY29tbWFuZCByYXRoZXIgdGhhbiB0aGUgY29tbWFuZAoqIFtCQ10gTW92aW5nIGFsbCBIVFRQIHBhcnNpbmcgbG9naWMgdG8gR3V6emxlXEh0dHBcUGFyc2Vycy4gQWxsb3dzIGZvciBmYXN0ZXIgQyBpbXBsZW1lbnRhdGlvbnMgaWYgbmVlZGVkLgoqIFtCQ10gQ2hhbmdpbmcgdGhlIEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OnNldFByb3RvY29sKCkgbWV0aG9kIHRvIGFjY2VwdCBhIHByb3RvY29sIGFuZCB2ZXJzaW9uIGluIHNlcGFyYXRlIGFyZ3MuCiogW0JDXSBNb3ZpbmcgUmVzb3VyY2VJdGVyYXRvciogdG8gR3V6emxlXFNlcnZpY2VcUmVzb3VyY2UKKiBbQkNdIENvbXBsZXRlbHkgcmVmYWN0b3JlZCBSZXNvdXJjZUl0ZXJhdG9ycyB0byBpdGVyYXRlIG92ZXIgYSBjbG9uZWQgY29tbWFuZCBvYmplY3QKKiBbQkNdIE1vdmVkIEd1enpsZVxIdHRwXFVyaVRlbXBsYXRlIHRvIEd1enpsZVxIdHRwXFBhcnNlclxVcmlUZW1wbGF0ZVxVcmlUZW1wbGF0ZQoqIFtCQ10gR3V6emxlXEd1enpsZSBpcyBub3cgZGVwcmVjYXRlZAoqIE1vdmluZyBHdXp6bGVcQ29tbW9uXEd1enpsZTo6aW5qZWN0IHRvIEd1enpsZVxDb21tb25cQ29sbGVjdGlvbjo6aW5qZWN0CiogQWRkaW5nIEd1enpsZVxWZXJzaW9uIGNsYXNzIHRvIGdpdmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBhYm91dCBHdXp6bGUKKiBBZGRpbmcgR3V6emxlXEh0dHBcVXRpbHMgY2xhc3MgdG8gcHJvdmlkZSBnZXREZWZhdWx0VXNlckFnZW50KCkgYW5kIGdldEh0dHBEYXRlKCkKKiBBZGRpbmcgR3V6emxlXEN1cmxcQ3VybFZlcnNpb24gdG8gbWFuYWdlIGNhY2hpbmcgY3VybF92ZXJzaW9uKCkgZGF0YQoqIFNlcnZpY2VEZXNjcmlwdGlvbiBhbmQgU2VydmljZUJ1aWxkZXIgYXJlIG5vdyBjYWNoZWFibGUgdXNpbmcgc2ltaWxhciBjb25maWdzCiogQ2hhbmdpbmcgdGhlIGZvcm1hdCBvZiBYTUwgYW5kIEpTT04gc2VydmljZSBidWlsZGVyIGNvbmZpZ3MuICBCYWNrd2FyZHMgY29tcGF0aWJsZS4KKiBDbGVhbmVkIHVwIENvb2tpZSBwYXJzaW5nCiogVHJpbW1pbmcgdGhlIGRlZmF1bHQgR3V6emxlIFVzZXItQWdlbnQgaGVhZGVyCiogQWRkaW5nIGEgc2V0T25Db21wbGV0ZSgpIG1ldGhvZCB0byBDb21tYW5kcyB0aGF0IGlzIGNhbGxlZCB3aGVuIGEgY29tbWFuZCBjb21wbGV0ZXMKKiBLZWVwaW5nIHRyYWNrIG9mIHJlcXVlc3RzIHRoYXQgd2VyZSBtb2NrZWQgaW4gdGhlIE1vY2tQbHVnaW4KKiBGaXhlZCBhIGNhY2hpbmcgYnVnIGluIHRoZSBDYWNoZUFkYXB0ZXJGYWN0b3J5CiogSW5zcGVjdG9yIG9iamVjdHMgY2FuIGJlIGluamVjdGVkIGludG8gYSBDb21tYW5kIG9iamVjdAoqIFJlZmFjdG9yaW5nIGEgbG90IG9mIGNvZGUgYW5kIHRlc3RzIHRvIGJlIGNhc2UgaW5zZW5zaXRpdmUgd2hlbiBkZWFsaW5nIHdpdGggaGVhZGVycwoqIEFkZGluZyBHdXp6bGVcSHR0cFxNZXNzYWdlXEhlYWRlckNvbXBhcmlzb24gZm9yIGVhc3kgY29tcGFyaXNvbiBvZiBIVFRQIGhlYWRlcnMgdXNpbmcgYSBEU0wKKiBBZGRpbmcgdGhlIGFiaWxpdHkgdG8gc2V0IGdsb2JhbCBvcHRpb24gb3ZlcnJpZGVzIHRvIHNlcnZpY2UgYnVpbGRlciBjb25maWdzCiogQWRkaW5nIHRoZSBhYmlsaXR5IHRvIGluY2x1ZGUgb3RoZXIgc2VydmljZSBidWlsZGVyIGNvbmZpZyBmaWxlcyBmcm9tIHdpdGhpbiBYTUwgYW5kIEpTT04gZmlsZXMKKiBNb3ZpbmcgdGhlIHBhcnNlUXVlcnkgbWV0aG9kIG91dCBvZiBVcmwgYW5kIG9uIHRvIFF1ZXJ5U3RyaW5nOjpmcm9tU3RyaW5nKCkgYXMgYSBzdGF0aWMgZmFjdG9yeSBtZXRob2QuCgojIyAyLjUuMCAtIDIwMTItMDUtMDgKCiogTWFqb3IgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnRzCiogW0JDXSBTaW1wbGlmeWluZyBHdXp6bGVcQ29tbW9uXENvbGxlY3Rpb24uICBQbGVhc2UgY2hlY2sgdG8gc2VlIGlmIHlvdSBhcmUgdXNpbmcgZmVhdHVyZXMgdGhhdCBhcmUgbm93IGRlcHJlY2F0ZWQuCiogW0JDXSBVc2luZyBhIGN1c3RvbSB2YWxpZGF0aW9uIHN5c3RlbSB0aGF0IGFsbG93cyBhIGZseXdlaWdodCBpbXBsZW1lbnRhdGlvbiBmb3IgbXVjaCBmYXN0ZXIgdmFsaWRhdGlvbi4gTm8gbG9uZ2VyIHVzaW5nIFN5bWZvbnkyIFZhbGlkYXRpb24gY29tcG9uZW50LgoqIFtCQ10gTm8gbG9uZ2VyIHN1cHBvcnRpbmcgInt7IH19IiBmb3IgaW5qZWN0aW5nIGludG8gY29tbWFuZCBvciBVcmlUZW1wbGF0ZXMuICBVc2UgInt9IgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIHBhc3NlZCBwYXJhbWV0ZXJzIHRvIGFsbCByZXF1ZXN0cyBjcmVhdGVkIGJ5IGEgY2xpZW50CiogQWRkZWQgY2FsbGJhY2sgZnVuY3Rpb25hbGl0eSB0byB0aGUgRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luCiogVXNpbmcgbWljcm90aW1lIGluIEV4cG9uZW50aWFsQmFja29mZlBsdWdpbiB0byBhbGxvdyBtb3JlIGdyYW51bGFyIGJhY2tvZmYgc3RyYXRlZ2llcy4KKiBSZXdpbmRpbmcgcmVxdWVzdCBzdHJlYW0gYm9kaWVzIHdoZW4gcmV0cnlpbmcgcmVxdWVzdHMKKiBFeGNlcHRpb24gaXMgdGhyb3duIHdoZW4gSlNPTiByZXNwb25zZSBib2R5IGNhbm5vdCBiZSBkZWNvZGVkCiogQWRkZWQgY29uZmlndXJhYmxlIG1hZ2ljIG1ldGhvZCBjYWxscyB0byBjbGllbnRzIGFuZCBjb21tYW5kcy4gIFRoaXMgaXMgb2ZmIGJ5IGRlZmF1bHQuCiogRml4ZWQgYSBkZWZlY3QgdGhhdCBhZGRlZCBhIGhhc2ggdG8gZXZlcnkgcGFyc2VkIFVSTCBwYXJ0CiogRml4ZWQgZHVwbGljYXRlIG5vbmUgZ2VuZXJhdGlvbiBmb3IgT2F1dGhQbHVnaW4uCiogRW1pdHRpbmcgYW4gZXZlbnQgZWFjaCB0aW1lIGEgY2xpZW50IGlzIGdlbmVyYXRlZCBieSBhIFNlcnZpY2VCdWlsZGVyCiogVXNpbmcgYW4gQXBpUGFyYW1zIG9iamVjdCBpbnN0ZWFkIG9mIGEgQ29sbGVjdGlvbiBmb3IgcGFyYW1ldGVycyBvZiBhbiBBcGlDb21tYW5kCiogY2FjaGUuKiByZXF1ZXN0IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHJlbmFtZWQgdG8gcGFyYW1zLmNhY2hlLioKKiBBZGRlZCB0aGUgYWJpbGl0eSB0byBzZXQgYXJiaXRyYXJ5IGN1cmwgb3B0aW9ucyBvbiByZXF1ZXN0cyAoZGlzYWJsZV93aXJlLCBwcm9ncmVzcywgZXRjLikuIFNlZSBDdXJsSGFuZGxlLgoqIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGRpc2FibGUgdHlwZSB2YWxpZGF0aW9uIG9mIHNlcnZpY2UgZGVzY3JpcHRpb25zCiogU2VydmljZURlc2NyaXB0aW9ucyBhbmQgU2VydmljZUJ1aWxkZXJzIGFyZSBub3cgU2VyaWFsaXphYmxlCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9ndXp6bGUiLAogICAgImRlc2NyaXB0aW9uIjogIkd1enpsZSBpcyBhIFBIUCBIVFRQIGNsaWVudCBsaWJyYXJ5IiwKICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAiZnJhbWV3b3JrIiwKICAgICAgICAiaHR0cCIsCiAgICAgICAgInJlc3QiLAogICAgICAgICJ3ZWIgc2VydmljZSIsCiAgICAgICAgImN1cmwiLAogICAgICAgICJjbGllbnQiLAogICAgICAgICJIVFRQIGNsaWVudCIsCiAgICAgICAgIlBTUi03IiwKICAgICAgICAiUFNSLTE4IgogICAgXSwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkdyYWhhbSBDYW1wYmVsbCIsCiAgICAgICAgICAgICJlbWFpbCI6ICJoZWxsb0BnamNhbXBiZWxsLmNvLnVrIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9HcmFoYW1DYW1wYmVsbCIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTWljaGFlbCBEb3dsaW5nIiwKICAgICAgICAgICAgImVtYWlsIjogIm10ZG93bGluZ0BnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL210ZG93bGluZyIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiSmVyZW15IExpbmRibG9tIiwKICAgICAgICAgICAgImVtYWlsIjogImplcmVtZWFtaWFAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9qZXJlbWVhbWlhIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHZW9yZ2UgTXBvbm9zIiwKICAgICAgICAgICAgImVtYWlsIjogImdtcG9ub3NAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9nbXBvbm9zIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJUb2JpYXMgTnlob2xtIiwKICAgICAgICAgICAgImVtYWlsIjogInRvYmlhcy5ueWhvbG1AZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9OeWhvbG0iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtYXJrLnNhZ2lrYXphckBnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3NhZ2lrYXphcm1hcmsiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBTY2h1bHR6ZSIsCiAgICAgICAgICAgICJlbWFpbCI6ICJ3ZWJtYXN0ZXJAdHViby13b3JsZC5kZSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vVG9iaW9uIgogICAgICAgIH0KICAgIF0sCiAgICAicmVwb3NpdG9yaWVzIjogWwogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicGFja2FnZSIsCiAgICAgICAgICAgICJwYWNrYWdlIjogewogICAgICAgICAgICAgICAgIm5hbWUiOiAiZ3V6emxlL2NsaWVudC1pbnRlZ3JhdGlvbi10ZXN0cyIsCiAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICJ2My4wLjIiLAogICAgICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2NvZGVsb2FkLmdpdGh1Yi5jb20vZ3V6emxlL2NsaWVudC1pbnRlZ3JhdGlvbi10ZXN0cy96aXAvMmMwMjU4NDg0MTdjMTEzNTAzMWZkZjljNzI4ZWU1M2QwYTdjZWFlZSIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAiemlwIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJyZXF1aXJlIjogewogICAgICAgICAgICAgICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiLAogICAgICAgICAgICAgICAgICAgICJwaHB1bml0L3BocHVuaXQiOiAiXjcuNS4yMCB8fCBeOC41LjggfHwgXjkuMy4xMSIsCiAgICAgICAgICAgICAgICAgICAgInBocC1odHRwL21lc3NhZ2UiOiAiXjEuMCB8fCBeMi4wIiwKICAgICAgICAgICAgICAgICAgICAiZ3V6emxlaHR0cC9wc3I3IjogIl4xLjcgfHwgXjIuMCIsCiAgICAgICAgICAgICAgICAgICAgInRoM24zcmQvY2FydGVzaWFuLXByb2R1Y3QiOiAiXjAuMyIKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgICAgICAgICAgICAgInBzci00IjogewogICAgICAgICAgICAgICAgICAgICAgICAiSHR0cFxcQ2xpZW50XFxUZXN0c1xcIjogInNyYy8iCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJiaW4iOiBbCiAgICAgICAgICAgICAgICAgICAgImJpbi9odHRwX3Rlc3Rfc2VydmVyIgogICAgICAgICAgICAgICAgXQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiLAogICAgICAgICJleHQtanNvbiI6ICIqIiwKICAgICAgICAiZ3V6emxlaHR0cC9wcm9taXNlcyI6ICJeMi4zIiwKICAgICAgICAiZ3V6emxlaHR0cC9wc3I3IjogIl4yLjgiLAogICAgICAgICJwc3IvaHR0cC1jbGllbnQiOiAiXjEuMCIsCiAgICAgICAgInN5bWZvbnkvZGVwcmVjYXRpb24tY29udHJhY3RzIjogIl4yLjIgfHwgXjMuMCIKICAgIH0sCiAgICAicHJvdmlkZSI6IHsKICAgICAgICAicHNyL2h0dHAtY2xpZW50LWltcGxlbWVudGF0aW9uIjogIjEuMCIKICAgIH0sCiAgICAicmVxdWlyZS1kZXYiOiB7CiAgICAgICAgImV4dC1jdXJsIjogIioiLAogICAgICAgICJiYW1hcm5pL2NvbXBvc2VyLWJpbi1wbHVnaW4iOiAiXjEuOC4yIiwKICAgICAgICAiZ3V6emxlL2NsaWVudC1pbnRlZ3JhdGlvbi10ZXN0cyI6ICIzLjAuMiIsCiAgICAgICAgInBocC1odHRwL21lc3NhZ2UtZmFjdG9yeSI6ICJeMS4xIiwKICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl44LjUuMzkgfHwgXjkuNi4yMCIsCiAgICAgICAgInBzci9sb2ciOiAiXjEuMSB8fCBeMi4wIHx8IF4zLjAiCiAgICB9LAogICAgInN1Z2dlc3QiOiB7CiAgICAgICAgImV4dC1jdXJsIjogIlJlcXVpcmVkIGZvciBDVVJMIGhhbmRsZXIgc3VwcG9ydCIsCiAgICAgICAgImV4dC1pbnRsIjogIlJlcXVpcmVkIGZvciBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSAoSUROKSBzdXBwb3J0IiwKICAgICAgICAicHNyL2xvZyI6ICJSZXF1aXJlZCBmb3IgdXNpbmcgdGhlIExvZyBtaWRkbGV3YXJlIgogICAgfSwKICAgICJjb25maWciOiB7CiAgICAgICAgImFsbG93LXBsdWdpbnMiOiB7CiAgICAgICAgICAgICJiYW1hcm5pL2NvbXBvc2VyLWJpbi1wbHVnaW4iOiB0cnVlCiAgICAgICAgfSwKICAgICAgICAicHJlZmVycmVkLWluc3RhbGwiOiAiZGlzdCIsCiAgICAgICAgInNvcnQtcGFja2FnZXMiOiB0cnVlCiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJiYW1hcm5pLWJpbiI6IHsKICAgICAgICAgICAgImJpbi1saW5rcyI6IHRydWUsCiAgICAgICAgICAgICJmb3J3YXJkLWNvbW1hbmQiOiBmYWxzZQogICAgICAgIH0KICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcIjogInNyYy8iCiAgICAgICAgfSwKICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICJzcmMvZnVuY3Rpb25zX2luY2x1ZGUucGhwIgogICAgICAgIF0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkd1enpsZUh0dHBcXFRlc3RzXFwiOiAidGVzdHMvIgogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTEgTWljaGFlbCBEb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTIgSmVyZW15IExpbmRibG9tIDxqZXJlbWVhbWlhQGdtYWlsLmNvbT4KQ29weXJpZ2h0IChjKSAyMDE0IEdyYWhhbSBDYW1wYmVsbCA8aGVsbG9AZ2pjYW1wYmVsbC5jby51az4KQ29weXJpZ2h0IChjKSAyMDE1IE3DoXJrIFPDoWdpLUthesOhciA8bWFyay5zYWdpa2F6YXJAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTUgVG9iaWFzIFNjaHVsdHplIDx3ZWJtYXN0ZXJAdHViby13b3JsZC5kZT4KQ29weXJpZ2h0IChjKSAyMDE2IFRvYmlhcyBOeWhvbG0gPHRvYmlhcy5ueWhvbG1AZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTYgR2VvcmdlIE1wb25vcyA8Z21wb25vc0BnbWFpbC5jb20+CgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/package-lock.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogImd1enpsZSIsCiAgImxvY2tmaWxlVmVyc2lvbiI6IDMsCiAgInJlcXVpcmVzIjogdHJ1ZSwKICAicGFja2FnZXMiOiB7fQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IVtHdXp6bGVdKC5naXRodWIvbG9nby5wbmc/cmF3PXRydWUpCgojIEd1enpsZSwgUEhQIEhUVFAgY2xpZW50CgpbIVtMYXRlc3QgVmVyc2lvbl0oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9naXRodWIvcmVsZWFzZS9ndXp6bGUvZ3V6emxlLnN2Zz9zdHlsZT1mbGF0LXNxdWFyZSldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3JlbGVhc2VzKQpbIVtCdWlsZCBTdGF0dXNdKGh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vZ2l0aHViL2FjdGlvbnMvd29ya2Zsb3cvc3RhdHVzL2d1enpsZS9ndXp6bGUvY2kueW1sP2xhYmVsPWNpJTIwYnVpbGQmc3R5bGU9ZmxhdC1zcXVhcmUpXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9hY3Rpb25zP3F1ZXJ5PXdvcmtmbG93JTNBQ0kpClshW1RvdGFsIERvd25sb2Fkc10oaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9wYWNrYWdpc3QvZHQvZ3V6emxlaHR0cC9ndXp6bGUuc3ZnP3N0eWxlPWZsYXQtc3F1YXJlKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL2d1enpsZWh0dHAvZ3V6emxlKQoKR3V6emxlIGlzIGEgUEhQIEhUVFAgY2xpZW50IHRoYXQgbWFrZXMgaXQgZWFzeSB0byBzZW5kIEhUVFAgcmVxdWVzdHMgYW5kCnRyaXZpYWwgdG8gaW50ZWdyYXRlIHdpdGggd2ViIHNlcnZpY2VzLgoKLSBTaW1wbGUgaW50ZXJmYWNlIGZvciBidWlsZGluZyBxdWVyeSBzdHJpbmdzLCBQT1NUIHJlcXVlc3RzLCBzdHJlYW1pbmcgbGFyZ2UKICB1cGxvYWRzLCBzdHJlYW1pbmcgbGFyZ2UgZG93bmxvYWRzLCB1c2luZyBIVFRQIGNvb2tpZXMsIHVwbG9hZGluZyBKU09OIGRhdGEsCiAgZXRjLi4uCi0gQ2FuIHNlbmQgYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNocm9ub3VzIHJlcXVlc3RzIHVzaW5nIHRoZSBzYW1lIGludGVyZmFjZS4KLSBVc2VzIFBTUi03IGludGVyZmFjZXMgZm9yIHJlcXVlc3RzLCByZXNwb25zZXMsIGFuZCBzdHJlYW1zLiBUaGlzIGFsbG93cyB5b3UKICB0byB1dGlsaXplIG90aGVyIFBTUi03IGNvbXBhdGlibGUgbGlicmFyaWVzIHdpdGggR3V6emxlLgotIFN1cHBvcnRzIFBTUi0xOCBhbGxvd2luZyBpbnRlcm9wZXJhYmlsaXR5IGJldHdlZW4gb3RoZXIgUFNSLTE4IEhUVFAgQ2xpZW50cy4KLSBBYnN0cmFjdHMgYXdheSB0aGUgdW5kZXJseWluZyBIVFRQIHRyYW5zcG9ydCwgYWxsb3dpbmcgeW91IHRvIHdyaXRlCiAgZW52aXJvbm1lbnQgYW5kIHRyYW5zcG9ydCBhZ25vc3RpYyBjb2RlOyBpLmUuLCBubyBoYXJkIGRlcGVuZGVuY3kgb24gY1VSTCwKICBQSFAgc3RyZWFtcywgc29ja2V0cywgb3Igbm9uLWJsb2NraW5nIGV2ZW50IGxvb3BzLgotIE1pZGRsZXdhcmUgc3lzdGVtIGFsbG93cyB5b3UgdG8gYXVnbWVudCBhbmQgY29tcG9zZSBjbGllbnQgYmVoYXZpb3IuCgpgYGBwaHAKJGNsaWVudCA9IG5ldyBcR3V6emxlSHR0cFxDbGllbnQoKTsKJHJlc3BvbnNlID0gJGNsaWVudC0+cmVxdWVzdCgnR0VUJywgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvZ3V6emxlL2d1enpsZScpOwoKZWNobyAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKTsgLy8gMjAwCmVjaG8gJHJlc3BvbnNlLT5nZXRIZWFkZXJMaW5lKCdjb250ZW50LXR5cGUnKTsgLy8gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9dXRmOCcKZWNobyAkcmVzcG9uc2UtPmdldEJvZHkoKTsgLy8gJ3siaWQiOiAxNDIwMDUzLCAibmFtZSI6ICJndXp6bGUiLCAuLi59JwoKLy8gU2VuZCBhbiBhc3luY2hyb25vdXMgcmVxdWVzdC4KJHJlcXVlc3QgPSBuZXcgXEd1enpsZUh0dHBcUHNyN1xSZXF1ZXN0KCdHRVQnLCAnaHR0cDovL2h0dHBiaW4ub3JnJyk7CiRwcm9taXNlID0gJGNsaWVudC0+c2VuZEFzeW5jKCRyZXF1ZXN0KS0+dGhlbihmdW5jdGlvbiAoJHJlc3BvbnNlKSB7CiAgICBlY2hvICdJIGNvbXBsZXRlZCEgJyAuICRyZXNwb25zZS0+Z2V0Qm9keSgpOwp9KTsKCiRwcm9taXNlLT53YWl0KCk7CmBgYAoKIyMgSGVscCBhbmQgZG9jcwoKV2UgdXNlIEdpdEh1YiBpc3N1ZXMgb25seSB0byBkaXNjdXNzIGJ1Z3MgYW5kIG5ldyBmZWF0dXJlcy4gRm9yIHN1cHBvcnQgcGxlYXNlIHJlZmVyIHRvOgoKLSBbRG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kb2NzLmd1enpsZXBocC5vcmcpCi0gW1N0YWNrIE92ZXJmbG93XShodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy90YWdnZWQvZ3V6emxlKQotIFsjZ3V6emxlXShodHRwczovL2FwcC5zbGFjay5jb20vY2xpZW50L1QwRDJTOUpDVC9DRTZVQUFLTDQpIGNoYW5uZWwgb24gW1BIUC1IVFRQIFNsYWNrXShodHRwczovL3NsYWNrLmh0dHBsdWcuaW8vKQotIFtHaXR0ZXJdKGh0dHBzOi8vZ2l0dGVyLmltL2d1enpsZS9ndXp6bGUpCgoKIyMgSW5zdGFsbGluZyBHdXp6bGUKClRoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zdGFsbCBHdXp6bGUgaXMgdGhyb3VnaApbQ29tcG9zZXJdKGh0dHBzOi8vZ2V0Y29tcG9zZXIub3JnLykuCgpgYGBiYXNoCmNvbXBvc2VyIHJlcXVpcmUgZ3V6emxlaHR0cC9ndXp6bGUKYGBgCgoKIyMgVmVyc2lvbiBHdWlkYW5jZQoKfCBWZXJzaW9uIHwgU3RhdHVzICAgICAgICAgICAgICB8IFBhY2thZ2lzdCAgICAgICAgICAgfCBOYW1lc3BhY2UgICAgfCBSZXBvICAgICAgICAgICAgICAgIHwgRG9jcyAgICAgICAgICAgICAgICB8IFBTUi03IHwgUEhQIFZlcnNpb24gIHwKfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwKfCAzLnggICAgIHwgRU9MICgyMDE2LTEwLTMxKSAgICB8IGBndXp6bGUvZ3V6emxlYCAgICAgfCBgR3V6emxlYCAgICAgfCBbdjNdW2d1enpsZS0zLXJlcG9dIHwgW3YzXVtndXp6bGUtMy1kb2NzXSB8IE5vICAgIHwgPj01LjMuMyw8Ny4wIHwKfCA0LnggICAgIHwgRU9MICgyMDE2LTEwLTMxKSAgICB8IGBndXp6bGVodHRwL2d1enpsZWAgfCBgR3V6emxlSHR0cGAgfCBbdjRdW2d1enpsZS00LXJlcG9dIHwgTi9BICAgICAgICAgICAgICAgICB8IE5vICAgIHwgPj01LjQsPDcuMCAgIHwKfCA1LnggICAgIHwgRU9MICgyMDE5LTEwLTMxKSAgICB8IGBndXp6bGVodHRwL2d1enpsZWAgfCBgR3V6emxlSHR0cGAgfCBbdjVdW2d1enpsZS01LXJlcG9dIHwgW3Y1XVtndXp6bGUtNS1kb2NzXSB8IE5vICAgIHwgPj01LjQsPDcuNCAgIHwKfCA2LnggICAgIHwgRU9MICgyMDIzLTEwLTMxKSAgICB8IGBndXp6bGVodHRwL2d1enpsZWAgfCBgR3V6emxlSHR0cGAgfCBbdjZdW2d1enpsZS02LXJlcG9dIHwgW3Y2XVtndXp6bGUtNi1kb2NzXSB8IFllcyAgIHwgPj01LjUsPDguMCAgIHwKfCA3LnggICAgIHwgTGF0ZXN0ICAgICAgICAgICAgICB8IGBndXp6bGVodHRwL2d1enpsZWAgfCBgR3V6emxlSHR0cGAgfCBbdjddW2d1enpsZS03LXJlcG9dIHwgW3Y3XVtndXp6bGUtNy1kb2NzXSB8IFllcyAgIHwgPj03LjIuNSw8OC41IHwKCltndXp6bGUtMy1yZXBvXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUzCltndXp6bGUtNC1yZXBvXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvdHJlZS80LngKW2d1enpsZS01LXJlcG9dOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS90cmVlLzUuMwpbZ3V6emxlLTYtcmVwb106IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3RyZWUvNi41CltndXp6bGUtNy1yZXBvXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUKW2d1enpsZS0zLWRvY3NdOiBodHRwczovL2d1enpsZTMucmVhZHRoZWRvY3MuaW8vCltndXp6bGUtNS1kb2NzXTogaHR0cHM6Ly9kb2NzLmd1enpsZXBocC5vcmcvZW4vNS4zLwpbZ3V6emxlLTYtZG9jc106IGh0dHBzOi8vZG9jcy5ndXp6bGVwaHAub3JnL2VuLzYuNS8KW2d1enpsZS03LWRvY3NdOiBodHRwczovL2RvY3MuZ3V6emxlcGhwLm9yZy9lbi9sYXRlc3QvCgoKIyMgU2VjdXJpdHkKCklmIHlvdSBkaXNjb3ZlciBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoaXMgcGFja2FnZSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gc2VjdXJpdHlAdGlkZWxpZnQuY29tLiBBbGwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpbGwgYmUgcHJvbXB0bHkgYWRkcmVzc2VkLiBQbGVhc2UgZG8gbm90IGRpc2Nsb3NlIHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIHB1YmxpY2x5IHVudGlsIGEgZml4IGhhcyBiZWVuIGFubm91bmNlZC4gUGxlYXNlIHNlZSBbU2VjdXJpdHkgUG9saWN5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2d1enpsZS9zZWN1cml0eS9wb2xpY3kpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKIyMgTGljZW5zZQoKR3V6emxlIGlzIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKS4gUGxlYXNlIHNlZSBbTGljZW5zZSBGaWxlXShMSUNFTlNFKSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCiMjIEZvciBFbnRlcnByaXNlCgpBdmFpbGFibGUgYXMgcGFydCBvZiB0aGUgVGlkZWxpZnQgU3Vic2NyaXB0aW9uCgpUaGUgbWFpbnRhaW5lcnMgb2YgR3V6emxlIGFuZCB0aG91c2FuZHMgb2Ygb3RoZXIgcGFja2FnZXMgYXJlIHdvcmtpbmcgd2l0aCBUaWRlbGlmdCB0byBkZWxpdmVyIGNvbW1lcmNpYWwgc3VwcG9ydCBhbmQgbWFpbnRlbmFuY2UgZm9yIHRoZSBvcGVuIHNvdXJjZSBkZXBlbmRlbmNpZXMgeW91IHVzZSB0byBidWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4gU2F2ZSB0aW1lLCByZWR1Y2UgcmlzaywgYW5kIGltcHJvdmUgY29kZSBoZWFsdGgsIHdoaWxlIHBheWluZyB0aGUgbWFpbnRhaW5lcnMgb2YgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyB5b3UgdXNlLiBbTGVhcm4gbW9yZS5dKGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcGFja2FnaXN0LWd1enpsZWh0dHAtZ3V6emxlP3V0bV9zb3VyY2U9cGFja2FnaXN0LWd1enpsZWh0dHAtZ3V6emxlJnV0bV9tZWRpdW09cmVmZXJyYWwmdXRtX2NhbXBhaWduPWVudGVycHJpc2UmdXRtX3Rlcm09cmVwbykK]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/BodySummarizer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIEJvZHlTdW1tYXJpemVyIGltcGxlbWVudHMgQm9keVN1bW1hcml6ZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIGludHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHRydW5jYXRlQXQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KD9pbnQgJHRydW5jYXRlQXQgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT50cnVuY2F0ZUF0ID0gJHRydW5jYXRlQXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgc3VtbWFyaXplZCBtZXNzYWdlIGJvZHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdW1tYXJpemUoTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRydW5jYXRlQXQgPT09IG51bGwKICAgICAgICAgICAgPyBQc3I3XE1lc3NhZ2U6OmJvZHlTdW1tYXJ5KCRtZXNzYWdlKQogICAgICAgICAgICA6IFBzcjdcTWVzc2FnZTo6Ym9keVN1bW1hcnkoJG1lc3NhZ2UsICR0aGlzLT50cnVuY2F0ZUF0KTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/BodySummarizerInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTsKCmludGVyZmFjZSBCb2R5U3VtbWFyaXplckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgYSBzdW1tYXJpemVkIG1lc3NhZ2UgYm9keS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1bW1hcml6ZShNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlKTogP3N0cmluZzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Client.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphcjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEd1enpsZUV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogQGZpbmFsCiAqLwpjbGFzcyBDbGllbnQgaW1wbGVtZW50cyBDbGllbnRJbnRlcmZhY2UsIFxQc3JcSHR0cFxDbGllbnRcQ2xpZW50SW50ZXJmYWNlCnsKICAgIHVzZSBDbGllbnRUcmFpdDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkgRGVmYXVsdCByZXF1ZXN0IG9wdGlvbnMKICAgICAqLwogICAgcHJpdmF0ZSAkY29uZmlnOwoKICAgIC8qKgogICAgICogQ2xpZW50cyBhY2NlcHQgYW4gYXJyYXkgb2YgY29uc3RydWN0b3IgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBIZXJlJ3MgYW4gZXhhbXBsZSBvZiBjcmVhdGluZyBhIGNsaWVudCB1c2luZyBhIGJhc2VfdXJpIGFuZCBhbiBhcnJheSBvZgogICAgICogZGVmYXVsdCByZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gZWFjaCByZXF1ZXN0OgogICAgICoKICAgICAqICAgICAkY2xpZW50ID0gbmV3IENsaWVudChbCiAgICAgKiAgICAgICAgICdiYXNlX3VyaScgICAgICAgID0+ICdodHRwOi8vd3d3LmZvby5jb20vMS4wLycsCiAgICAgKiAgICAgICAgICd0aW1lb3V0JyAgICAgICAgID0+IDAsCiAgICAgKiAgICAgICAgICdhbGxvd19yZWRpcmVjdHMnID0+IGZhbHNlLAogICAgICogICAgICAgICAncHJveHknICAgICAgICAgICA9PiAnMTkyLjE2OC4xNi4xOjEwJwogICAgICogICAgIF0pOwogICAgICoKICAgICAqIENsaWVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBvcHRpb25zOgogICAgICoKICAgICAqIC0gaGFuZGxlcjogKGNhbGxhYmxlKSBGdW5jdGlvbiB0aGF0IHRyYW5zZmVycyBIVFRQIHJlcXVlc3RzIG92ZXIgdGhlCiAgICAgKiAgIHdpcmUuIFRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhIFBzcjdcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2UKICAgICAqICAgYW5kIGFycmF5IG9mIHRyYW5zZmVyIG9wdGlvbnMsIGFuZCBtdXN0IHJldHVybiBhCiAgICAgKiAgIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlIHRoYXQgaXMgZnVsZmlsbGVkIHdpdGggYQogICAgICogICBQc3I3XEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZSBvbiBzdWNjZXNzLgogICAgICogICBJZiBubyBoYW5kbGVyIGlzIHByb3ZpZGVkLCBhIGRlZmF1bHQgaGFuZGxlciB3aWxsIGJlIGNyZWF0ZWQKICAgICAqICAgdGhhdCBlbmFibGVzIGFsbCBvZiB0aGUgcmVxdWVzdCBvcHRpb25zIGJlbG93IGJ5IGF0dGFjaGluZyBhbGwgb2YgdGhlCiAgICAgKiAgIGRlZmF1bHQgbWlkZGxld2FyZSB0byB0aGUgaGFuZGxlci4KICAgICAqIC0gYmFzZV91cmk6IChzdHJpbmd8VXJpSW50ZXJmYWNlKSBCYXNlIFVSSSBvZiB0aGUgY2xpZW50IHRoYXQgaXMgbWVyZ2VkCiAgICAgKiAgIGludG8gcmVsYXRpdmUgVVJJcy4gQ2FuIGJlIGEgc3RyaW5nIG9yIGluc3RhbmNlIG9mIFVyaUludGVyZmFjZS4KICAgICAqIC0gKio6IGFueSByZXF1ZXN0IG9wdGlvbgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkY29uZmlnIENsaWVudCBjb25maWd1cmF0aW9uIHNldHRpbmdzLgogICAgICoKICAgICAqIEBzZWUgUmVxdWVzdE9wdGlvbnMgZm9yIGEgbGlzdCBvZiBhdmFpbGFibGUgcmVxdWVzdCBvcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGNvbmZpZyA9IFtdKQogICAgewogICAgICAgIGlmICghaXNzZXQoJGNvbmZpZ1snaGFuZGxlciddKSkgewogICAgICAgICAgICAkY29uZmlnWydoYW5kbGVyJ10gPSBIYW5kbGVyU3RhY2s6OmNyZWF0ZSgpOwogICAgICAgIH0gZWxzZWlmICghXGlzX2NhbGxhYmxlKCRjb25maWdbJ2hhbmRsZXInXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignaGFuZGxlciBtdXN0IGJlIGEgY2FsbGFibGUnKTsKICAgICAgICB9CgogICAgICAgIC8vIENvbnZlcnQgdGhlIGJhc2VfdXJpIHRvIGEgVXJpSW50ZXJmYWNlCiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ2Jhc2VfdXJpJ10pKSB7CiAgICAgICAgICAgICRjb25maWdbJ2Jhc2VfdXJpJ10gPSBQc3I3XFV0aWxzOjp1cmlGb3IoJGNvbmZpZ1snYmFzZV91cmknXSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y29uZmlndXJlRGVmYXVsdHMoJGNvbmZpZyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2QKICAgICAqIEBwYXJhbSBhcnJheSAgJGFyZ3MKICAgICAqCiAgICAgKiBAcmV0dXJuIFByb21pc2VJbnRlcmZhY2V8UmVzcG9uc2VJbnRlcmZhY2UKICAgICAqCiAgICAgKiBAZGVwcmVjYXRlZCBDbGllbnQ6Ol9fY2FsbCB3aWxsIGJlIHJlbW92ZWQgaW4gZ3V6emxlaHR0cC9ndXp6bGU6OC4wLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCRtZXRob2QsICRhcmdzKQogICAgewogICAgICAgIGlmIChcY291bnQoJGFyZ3MpIDwgMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdNYWdpYyByZXF1ZXN0IG1ldGhvZHMgcmVxdWlyZSBhIFVSSSBhbmQgb3B0aW9uYWwgb3B0aW9ucyBhcnJheScpOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9ICRhcmdzWzBdOwogICAgICAgICRvcHRzID0gJGFyZ3NbMV0gPz8gW107CgogICAgICAgIHJldHVybiBcc3Vic3RyKCRtZXRob2QsIC01KSA9PT0gJ0FzeW5jJwogICAgICAgICAgICA/ICR0aGlzLT5yZXF1ZXN0QXN5bmMoXHN1YnN0cigkbWV0aG9kLCAwLCAtNSksICR1cmksICRvcHRzKQogICAgICAgICAgICA6ICR0aGlzLT5yZXF1ZXN0KCRtZXRob2QsICR1cmksICRvcHRzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFzeW5jaHJvbm91c2x5IHNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gdGhlIGdpdmVuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBhbmQgdG8gdGhlIHRyYW5zZmVyLiBTZWUgXEd1enpsZUh0dHBcUmVxdWVzdE9wdGlvbnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kQXN5bmMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAvLyBNZXJnZSB0aGUgYmFzZSBVUkkgaW50byB0aGUgcmVxdWVzdCBVUkkgaWYgbmVlZGVkLgogICAgICAgICRvcHRpb25zID0gJHRoaXMtPnByZXBhcmVEZWZhdWx0cygkb3B0aW9ucyk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dHJhbnNmZXIoCiAgICAgICAgICAgICRyZXF1ZXN0LT53aXRoVXJpKCR0aGlzLT5idWlsZFVyaSgkcmVxdWVzdC0+Z2V0VXJpKCksICRvcHRpb25zKSwgJHJlcXVlc3QtPmhhc0hlYWRlcignSG9zdCcpKSwKICAgICAgICAgICAgJG9wdGlvbnMKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogU2VuZCBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseSB0byB0aGUgZ2l2ZW4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGFuZCB0byB0aGUgdHJhbnNmZXIuIFNlZSBcR3V6emxlSHR0cFxSZXF1ZXN0T3B0aW9ucy4KICAgICAqCiAgICAgKiBAdGhyb3dzIEd1enpsZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkb3B0aW9uc1tSZXF1ZXN0T3B0aW9uczo6U1lOQ0hST05PVVNdID0gdHJ1ZTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5zZW5kQXN5bmMoJHJlcXVlc3QsICRvcHRpb25zKS0+d2FpdCgpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIEh0dHBDbGllbnQgUFNSIChQU1ItMTgpIHNwZWNpZnkgdGhpcyBtZXRob2QuCiAgICAgKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZFJlcXVlc3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJG9wdGlvbnNbUmVxdWVzdE9wdGlvbnM6OlNZTkNIUk9OT1VTXSA9IHRydWU7CiAgICAgICAgJG9wdGlvbnNbUmVxdWVzdE9wdGlvbnM6OkFMTE9XX1JFRElSRUNUU10gPSBmYWxzZTsKICAgICAgICAkb3B0aW9uc1tSZXF1ZXN0T3B0aW9uczo6SFRUUF9FUlJPUlNdID0gZmFsc2U7CgogICAgICAgIHJldHVybiAkdGhpcy0+c2VuZEFzeW5jKCRyZXF1ZXN0LCAkb3B0aW9ucyktPndhaXQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4gU2VlIFxHdXp6bGVIdHRwXFJlcXVlc3RPcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVxdWVzdEFzeW5jKHN0cmluZyAkbWV0aG9kLCAkdXJpID0gJycsIGFycmF5ICRvcHRpb25zID0gW10pOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJG9wdGlvbnMgPSAkdGhpcy0+cHJlcGFyZURlZmF1bHRzKCRvcHRpb25zKTsKICAgICAgICAvLyBSZW1vdmUgcmVxdWVzdCBtb2RpZnlpbmcgcGFyYW1ldGVyIGJlY2F1c2UgaXQgY2FuIGJlIGRvbmUgdXAtZnJvbnQuCiAgICAgICAgJGhlYWRlcnMgPSAkb3B0aW9uc1snaGVhZGVycyddID8/IFtdOwogICAgICAgICRib2R5ID0gJG9wdGlvbnNbJ2JvZHknXSA/PyBudWxsOwogICAgICAgICR2ZXJzaW9uID0gJG9wdGlvbnNbJ3ZlcnNpb24nXSA/PyAnMS4xJzsKICAgICAgICAvLyBNZXJnZSB0aGUgVVJJIGludG8gdGhlIGJhc2UgVVJJLgogICAgICAgICR1cmkgPSAkdGhpcy0+YnVpbGRVcmkoUHNyN1xVdGlsczo6dXJpRm9yKCR1cmkpLCAkb3B0aW9ucyk7CiAgICAgICAgaWYgKFxpc19hcnJheSgkYm9keSkpIHsKICAgICAgICAgICAgdGhyb3cgJHRoaXMtPmludmFsaWRCb2R5KCk7CiAgICAgICAgfQogICAgICAgICRyZXF1ZXN0ID0gbmV3IFBzcjdcUmVxdWVzdCgkbWV0aG9kLCAkdXJpLCAkaGVhZGVycywgJGJvZHksICR2ZXJzaW9uKTsKICAgICAgICAvLyBSZW1vdmUgdGhlIG9wdGlvbiBzbyB0aGF0IHRoZXkgYXJlIG5vdCBkb3VibHktYXBwbGllZC4KICAgICAgICB1bnNldCgkb3B0aW9uc1snaGVhZGVycyddLCAkb3B0aW9uc1snYm9keSddLCAkb3B0aW9uc1sndmVyc2lvbiddKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT50cmFuc2ZlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuZCBzZW5kIGFuIEhUVFAgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kLgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuIFNlZSBcR3V6emxlSHR0cFxSZXF1ZXN0T3B0aW9ucy4KICAgICAqCiAgICAgKiBAdGhyb3dzIEd1enpsZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVxdWVzdChzdHJpbmcgJG1ldGhvZCwgJHVyaSA9ICcnLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkb3B0aW9uc1tSZXF1ZXN0T3B0aW9uczo6U1lOQ0hST05PVVNdID0gdHJ1ZTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0QXN5bmMoJG1ldGhvZCwgJHVyaSwgJG9wdGlvbnMpLT53YWl0KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBjbGllbnQgY29uZmlndXJhdGlvbiBvcHRpb24uCiAgICAgKgogICAgICogVGhlc2Ugb3B0aW9ucyBpbmNsdWRlIGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIG9mIHRoZSBjbGllbnQsIGEgImhhbmRsZXIiCiAgICAgKiAoaWYgdXRpbGl6ZWQgYnkgdGhlIGNvbmNyZXRlIGNsaWVudCksIGFuZCBhICJiYXNlX3VyaSIgaWYgdXRpbGl6ZWQgYnkKICAgICAqIHRoZSBjb25jcmV0ZSBjbGllbnQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRvcHRpb24gVGhlIGNvbmZpZyBvcHRpb24gdG8gcmV0cmlldmUuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIENsaWVudDo6Z2V0Q29uZmlnIHdpbGwgYmUgcmVtb3ZlZCBpbiBndXp6bGVodHRwL2d1enpsZTo4LjAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWcoP3N0cmluZyAkb3B0aW9uID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJG9wdGlvbiA9PT0gbnVsbAogICAgICAgICAgICA/ICR0aGlzLT5jb25maWcKICAgICAgICAgICAgOiAoJHRoaXMtPmNvbmZpZ1skb3B0aW9uXSA/PyBudWxsKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGJ1aWxkVXJpKFVyaUludGVyZmFjZSAkdXJpLCBhcnJheSAkY29uZmlnKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ2Jhc2VfdXJpJ10pKSB7CiAgICAgICAgICAgICR1cmkgPSBQc3I3XFVyaVJlc29sdmVyOjpyZXNvbHZlKFBzcjdcVXRpbHM6OnVyaUZvcigkY29uZmlnWydiYXNlX3VyaSddKSwgJHVyaSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGNvbmZpZ1snaWRuX2NvbnZlcnNpb24nXSkgJiYgKCRjb25maWdbJ2lkbl9jb252ZXJzaW9uJ10gIT09IGZhbHNlKSkgewogICAgICAgICAgICAkaWRuT3B0aW9ucyA9ICgkY29uZmlnWydpZG5fY29udmVyc2lvbiddID09PSB0cnVlKSA/IFxJRE5BX0RFRkFVTFQgOiAkY29uZmlnWydpZG5fY29udmVyc2lvbiddOwogICAgICAgICAgICAkdXJpID0gVXRpbHM6OmlkblVyaUNvbnZlcnQoJHVyaSwgJGlkbk9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmktPmdldFNjaGVtZSgpID09PSAnJyAmJiAkdXJpLT5nZXRIb3N0KCkgIT09ICcnID8gJHVyaS0+d2l0aFNjaGVtZSgnaHR0cCcpIDogJHVyaTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbmZpZ3VyZXMgdGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgYSBjbGllbnQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY29uZmlndXJlRGVmYXVsdHMoYXJyYXkgJGNvbmZpZyk6IHZvaWQKICAgIHsKICAgICAgICAkZGVmYXVsdHMgPSBbCiAgICAgICAgICAgICdhbGxvd19yZWRpcmVjdHMnID0+IFJlZGlyZWN0TWlkZGxld2FyZTo6JGRlZmF1bHRTZXR0aW5ncywKICAgICAgICAgICAgJ2h0dHBfZXJyb3JzJyA9PiB0cnVlLAogICAgICAgICAgICAnZGVjb2RlX2NvbnRlbnQnID0+IHRydWUsCiAgICAgICAgICAgICd2ZXJpZnknID0+IHRydWUsCiAgICAgICAgICAgICdjb29raWVzJyA9PiBmYWxzZSwKICAgICAgICAgICAgJ2lkbl9jb252ZXJzaW9uJyA9PiBmYWxzZSwKICAgICAgICBdOwoKICAgICAgICAvLyBVc2UgdGhlIHN0YW5kYXJkIExpbnV4IEhUVFBfUFJPWFkgYW5kIEhUVFBTX1BST1hZIGlmIHNldC4KCiAgICAgICAgLy8gV2UgY2FuIG9ubHkgdHJ1c3QgdGhlIEhUVFBfUFJPWFkgZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gYSBDTEkKICAgICAgICAvLyBwcm9jZXNzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IFBIUCBoYXMgbm8gcmVsaWFibGUgbWVjaGFuaXNtIHRvCiAgICAgICAgLy8gZ2V0IGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IHN0YXJ0IHdpdGggIkhUVFBfIi4KICAgICAgICBpZiAoXFBIUF9TQVBJID09PSAnY2xpJyAmJiAoJHByb3h5ID0gVXRpbHM6OmdldGVudignSFRUUF9QUk9YWScpKSkgewogICAgICAgICAgICAkZGVmYXVsdHNbJ3Byb3h5J11bJ2h0dHAnXSA9ICRwcm94eTsKICAgICAgICB9CgogICAgICAgIGlmICgkcHJveHkgPSBVdGlsczo6Z2V0ZW52KCdIVFRQU19QUk9YWScpKSB7CiAgICAgICAgICAgICRkZWZhdWx0c1sncHJveHknXVsnaHR0cHMnXSA9ICRwcm94eTsKICAgICAgICB9CgogICAgICAgIGlmICgkbm9Qcm94eSA9IFV0aWxzOjpnZXRlbnYoJ05PX1BST1hZJykpIHsKICAgICAgICAgICAgJGNsZWFuZWROb1Byb3h5ID0gXHN0cl9yZXBsYWNlKCcgJywgJycsICRub1Byb3h5KTsKICAgICAgICAgICAgJGRlZmF1bHRzWydwcm94eSddWydubyddID0gXGV4cGxvZGUoJywnLCAkY2xlYW5lZE5vUHJveHkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmNvbmZpZyA9ICRjb25maWcgKyAkZGVmYXVsdHM7CgogICAgICAgIGlmICghZW1wdHkoJGNvbmZpZ1snY29va2llcyddKSAmJiAkY29uZmlnWydjb29raWVzJ10gPT09IHRydWUpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbmZpZ1snY29va2llcyddID0gbmV3IENvb2tpZUphcigpOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSBkZWZhdWx0IHVzZXItYWdlbnQgaGVhZGVyLgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmNvbmZpZ1snaGVhZGVycyddKSkgewogICAgICAgICAgICAkdGhpcy0+Y29uZmlnWydoZWFkZXJzJ10gPSBbJ1VzZXItQWdlbnQnID0+IFV0aWxzOjpkZWZhdWx0VXNlckFnZW50KCldOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIEFkZCB0aGUgVXNlci1BZ2VudCBoZWFkZXIgaWYgb25lIHdhcyBub3QgYWxyZWFkeSBzZXQuCiAgICAgICAgICAgIGZvcmVhY2ggKFxhcnJheV9rZXlzKCR0aGlzLT5jb25maWdbJ2hlYWRlcnMnXSkgYXMgJG5hbWUpIHsKICAgICAgICAgICAgICAgIGlmIChcc3RydG9sb3dlcigkbmFtZSkgPT09ICd1c2VyLWFnZW50JykgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+Y29uZmlnWydoZWFkZXJzJ11bJ1VzZXItQWdlbnQnXSA9IFV0aWxzOjpkZWZhdWx0VXNlckFnZW50KCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogTWVyZ2VzIGRlZmF1bHQgb3B0aW9ucyBpbnRvIHRoZSBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJG9wdGlvbnMgT3B0aW9ucyB0byBtb2RpZnkgYnkgcmVmZXJlbmNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcHJlcGFyZURlZmF1bHRzKGFycmF5ICRvcHRpb25zKTogYXJyYXkKICAgIHsKICAgICAgICAkZGVmYXVsdHMgPSAkdGhpcy0+Y29uZmlnOwoKICAgICAgICBpZiAoIWVtcHR5KCRkZWZhdWx0c1snaGVhZGVycyddKSkgewogICAgICAgICAgICAvLyBEZWZhdWx0IGhlYWRlcnMgYXJlIG9ubHkgYWRkZWQgaWYgdGhleSBhcmUgbm90IHByZXNlbnQuCiAgICAgICAgICAgICRkZWZhdWx0c1snX2NvbmRpdGlvbmFsJ10gPSAkZGVmYXVsdHNbJ2hlYWRlcnMnXTsKICAgICAgICAgICAgdW5zZXQoJGRlZmF1bHRzWydoZWFkZXJzJ10pOwogICAgICAgIH0KCiAgICAgICAgLy8gU3BlY2lhbCBoYW5kbGluZyBmb3IgaGVhZGVycyBpcyByZXF1aXJlZCBhcyB0aGV5IGFyZSBhZGRlZCBhcwogICAgICAgIC8vIGNvbmRpdGlvbmFsIGhlYWRlcnMgYW5kIGFzIGhlYWRlcnMgcGFzc2VkIHRvIGEgcmVxdWVzdCBjdG9yLgogICAgICAgIGlmIChcYXJyYXlfa2V5X2V4aXN0cygnaGVhZGVycycsICRvcHRpb25zKSkgewogICAgICAgICAgICAvLyBBbGxvd3MgZGVmYXVsdCBoZWFkZXJzIHRvIGJlIHVuc2V0LgogICAgICAgICAgICBpZiAoJG9wdGlvbnNbJ2hlYWRlcnMnXSA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgJGRlZmF1bHRzWydfY29uZGl0aW9uYWwnXSA9IFtdOwogICAgICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2hlYWRlcnMnXSk7CiAgICAgICAgICAgIH0gZWxzZWlmICghXGlzX2FycmF5KCRvcHRpb25zWydoZWFkZXJzJ10pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdoZWFkZXJzIG11c3QgYmUgYW4gYXJyYXknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gU2hhbGxvdyBtZXJnZSBkZWZhdWx0cyB1bmRlcm5lYXRoIG9wdGlvbnMuCiAgICAgICAgJHJlc3VsdCA9ICRvcHRpb25zICsgJGRlZmF1bHRzOwoKICAgICAgICAvLyBSZW1vdmUgbnVsbCB2YWx1ZXMuCiAgICAgICAgZm9yZWFjaCAoJHJlc3VsdCBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoJHYgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRyZXN1bHRbJGtdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmFuc2ZlcnMgdGhlIGdpdmVuIHJlcXVlc3QgYW5kIGFwcGxpZXMgcmVxdWVzdCBvcHRpb25zLgogICAgICoKICAgICAqIFRoZSBVUkkgb2YgdGhlIHJlcXVlc3QgaXMgbm90IG1vZGlmaWVkIGFuZCB0aGUgcmVxdWVzdCBvcHRpb25zIGFyZSB1c2VkCiAgICAgKiBhcy1pcyB3aXRob3V0IG1lcmdpbmcgaW4gZGVmYXVsdCBvcHRpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBTZWUgXEd1enpsZUh0dHBcUmVxdWVzdE9wdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJhbnNmZXIoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHJlcXVlc3QgPSAkdGhpcy0+YXBwbHlPcHRpb25zKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgLyoqIEB2YXIgSGFuZGxlclN0YWNrICRoYW5kbGVyICovCiAgICAgICAgJGhhbmRsZXIgPSAkb3B0aW9uc1snaGFuZGxlciddOwoKICAgICAgICB0cnkgewogICAgICAgICAgICByZXR1cm4gUFxDcmVhdGU6OnByb21pc2VGb3IoJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKSk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gUFxDcmVhdGU6OnJlamVjdGlvbkZvcigkZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQXBwbGllcyB0aGUgYXJyYXkgb2YgcmVxdWVzdCBvcHRpb25zIHRvIGEgcmVxdWVzdC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhcHBseU9wdGlvbnMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zKTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgICRtb2RpZnkgPSBbCiAgICAgICAgICAgICdzZXRfaGVhZGVycycgPT4gW10sCiAgICAgICAgXTsKCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydoZWFkZXJzJ10pKSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlzKCRvcHRpb25zWydoZWFkZXJzJ10pID09PSByYW5nZSgwLCBjb3VudCgkb3B0aW9uc1snaGVhZGVycyddKSAtIDEpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgaGVhZGVycyBhcnJheSBtdXN0IGhhdmUgaGVhZGVyIG5hbWUgYXMga2V5cy4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddID0gJG9wdGlvbnNbJ2hlYWRlcnMnXTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2hlYWRlcnMnXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2Zvcm1fcGFyYW1zJ10pKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snbXVsdGlwYXJ0J10pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdZb3UgY2Fubm90IHVzZSAnCiAgICAgICAgICAgICAgICAgICAgLidmb3JtX3BhcmFtcyBhbmQgbXVsdGlwYXJ0IGF0IHRoZSBzYW1lIHRpbWUuIFVzZSB0aGUgJwogICAgICAgICAgICAgICAgICAgIC4nZm9ybV9wYXJhbXMgb3B0aW9uIGlmIHlvdSB3YW50IHRvIHNlbmQgYXBwbGljYXRpb24vJwogICAgICAgICAgICAgICAgICAgIC4neC13d3ctZm9ybS11cmxlbmNvZGVkIHJlcXVlc3RzLCBhbmQgdGhlIG11bHRpcGFydCAnCiAgICAgICAgICAgICAgICAgICAgLidvcHRpb24gdG8gc2VuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHJlcXVlc3RzLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvcHRpb25zWydib2R5J10gPSBcaHR0cF9idWlsZF9xdWVyeSgkb3B0aW9uc1snZm9ybV9wYXJhbXMnXSwgJycsICcmJyk7CiAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydmb3JtX3BhcmFtcyddKTsKICAgICAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0aGUgaGVhZGVyIGluIGRpZmZlcmVudCBjYXNlIGFuZCBzZXQgdGhlIG5ldyB2YWx1ZS4KICAgICAgICAgICAgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddID0gUHNyN1xVdGlsczo6Y2FzZWxlc3NSZW1vdmUoWydDb250ZW50LVR5cGUnXSwgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddKTsKICAgICAgICAgICAgJG9wdGlvbnNbJ19jb25kaXRpb25hbCddWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydtdWx0aXBhcnQnXSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ2JvZHknXSA9IG5ldyBQc3I3XE11bHRpcGFydFN0cmVhbSgkb3B0aW9uc1snbXVsdGlwYXJ0J10pOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1snbXVsdGlwYXJ0J10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydqc29uJ10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydib2R5J10gPSBVdGlsczo6anNvbkVuY29kZSgkb3B0aW9uc1snanNvbiddKTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2pzb24nXSk7CiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgdGhlIGhlYWRlciBpbiBkaWZmZXJlbnQgY2FzZSBhbmQgc2V0IHRoZSBuZXcgdmFsdWUuCiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlKFsnQ29udGVudC1UeXBlJ10sICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXVsnQ29udGVudC1UeXBlJ10gPSAnYXBwbGljYXRpb24vanNvbic7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydkZWNvZGVfY29udGVudCddKQogICAgICAgICAgICAmJiAkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXSAhPT0gdHJ1ZQogICAgICAgICkgewogICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBkb24ndCBoYXZlIHRoZSBoZWFkZXIgaW4gZGlmZmVyZW50IGNhc2UgYW5kIHNldCB0aGUgbmV3IHZhbHVlLgogICAgICAgICAgICAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10gPSBQc3I3XFV0aWxzOjpjYXNlbGVzc1JlbW92ZShbJ0FjY2VwdC1FbmNvZGluZyddLCAkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pOwogICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydBY2NlcHQtRW5jb2RpbmcnXSA9ICRvcHRpb25zWydkZWNvZGVfY29udGVudCddOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydib2R5J10pKSB7CiAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJG9wdGlvbnNbJ2JvZHknXSkpIHsKICAgICAgICAgICAgICAgIHRocm93ICR0aGlzLT5pbnZhbGlkQm9keSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtb2RpZnlbJ2JvZHknXSA9IFBzcjdcVXRpbHM6OnN0cmVhbUZvcigkb3B0aW9uc1snYm9keSddKTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2JvZHknXSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydhdXRoJ10pICYmIFxpc19hcnJheSgkb3B0aW9uc1snYXV0aCddKSkgewogICAgICAgICAgICAkdmFsdWUgPSAkb3B0aW9uc1snYXV0aCddOwogICAgICAgICAgICAkdHlwZSA9IGlzc2V0KCR2YWx1ZVsyXSkgPyBcc3RydG9sb3dlcigkdmFsdWVbMl0pIDogJ2Jhc2ljJzsKICAgICAgICAgICAgc3dpdGNoICgkdHlwZSkgewogICAgICAgICAgICAgICAgY2FzZSAnYmFzaWMnOgogICAgICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgdGhlIGhlYWRlciBpbiBkaWZmZXJlbnQgY2FzZSBhbmQgc2V0IHRoZSBuZXcgdmFsdWUuCiAgICAgICAgICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXSA9IFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlKFsnQXV0aG9yaXphdGlvbiddLCAkbW9kaWZ5WydzZXRfaGVhZGVycyddKTsKICAgICAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydBdXRob3JpemF0aW9uJ10gPSAnQmFzaWMgJwogICAgICAgICAgICAgICAgICAgICAgICAuXGJhc2U2NF9lbmNvZGUoIiR2YWx1ZVswXTokdmFsdWVbMV0iKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2RpZ2VzdCc6CiAgICAgICAgICAgICAgICAgICAgLy8gQHRvZG86IERvIG5vdCByZWx5IG9uIGN1cmwKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uc1snY3VybCddW1xDVVJMT1BUX0hUVFBBVVRIXSA9IFxDVVJMQVVUSF9ESUdFU1Q7CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9VU0VSUFdEXSA9ICIkdmFsdWVbMF06JHZhbHVlWzFdIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ250bG0nOgogICAgICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bXENVUkxPUFRfSFRUUEFVVEhdID0gXENVUkxBVVRIX05UTE07CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9VU0VSUFdEXSA9ICIkdmFsdWVbMF06JHZhbHVlWzFdIjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydxdWVyeSddKSkgewogICAgICAgICAgICAkdmFsdWUgPSAkb3B0aW9uc1sncXVlcnknXTsKICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSBcaHR0cF9idWlsZF9xdWVyeSgkdmFsdWUsICcnLCAnJicsIFxQSFBfUVVFUllfUkZDMzk4Nik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCFcaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ3F1ZXJ5IG11c3QgYmUgYSBzdHJpbmcgb3IgYXJyYXknKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbW9kaWZ5WydxdWVyeSddID0gJHZhbHVlOwogICAgICAgICAgICB1bnNldCgkb3B0aW9uc1sncXVlcnknXSk7CiAgICAgICAgfQoKICAgICAgICAvLyBFbnN1cmUgdGhhdCBzaW5rIGlzIG5vdCBhbiBpbnZhbGlkIHZhbHVlLgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snc2luayddKSkgewogICAgICAgICAgICAvLyBUT0RPOiBBZGQgbW9yZSBzaW5rIHZhbGlkYXRpb24/CiAgICAgICAgICAgIGlmIChcaXNfYm9vbCgkb3B0aW9uc1snc2luayddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignc2luayBtdXN0IG5vdCBiZSBhIGJvb2xlYW4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWyd2ZXJzaW9uJ10pKSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3ZlcnNpb24nXSA9ICRvcHRpb25zWyd2ZXJzaW9uJ107CiAgICAgICAgfQoKICAgICAgICAkcmVxdWVzdCA9IFBzcjdcVXRpbHM6Om1vZGlmeVJlcXVlc3QoJHJlcXVlc3QsICRtb2RpZnkpOwogICAgICAgIGlmICgkcmVxdWVzdC0+Z2V0Qm9keSgpIGluc3RhbmNlb2YgUHNyN1xNdWx0aXBhcnRTdHJlYW0pIHsKICAgICAgICAgICAgLy8gVXNlIGEgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBQT1NUIGlmIGEgQ29udGVudC1UeXBlIGlzIG5vdCBzZXQuCiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHdlIGRvbid0IGhhdmUgdGhlIGhlYWRlciBpbiBkaWZmZXJlbnQgY2FzZSBhbmQgc2V0IHRoZSBuZXcgdmFsdWUuCiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSA9IFBzcjdcVXRpbHM6OmNhc2VsZXNzUmVtb3ZlKFsnQ29udGVudC1UeXBlJ10sICRvcHRpb25zWydfY29uZGl0aW9uYWwnXSk7CiAgICAgICAgICAgICRvcHRpb25zWydfY29uZGl0aW9uYWwnXVsnQ29udGVudC1UeXBlJ10gPSAnbXVsdGlwYXJ0L2Zvcm0tZGF0YTsgYm91bmRhcnk9JwogICAgICAgICAgICAgICAgLiRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldEJvdW5kYXJ5KCk7CiAgICAgICAgfQoKICAgICAgICAvLyBNZXJnZSBpbiBjb25kaXRpb25hbCBoZWFkZXJzIGlmIHRoZXkgYXJlIG5vdCBwcmVzZW50LgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snX2NvbmRpdGlvbmFsJ10pKSB7CiAgICAgICAgICAgIC8vIEJ1aWxkIHVwIHRoZSBjaGFuZ2VzIHNvIGl0J3MgaW4gYSBzaW5nbGUgY2xvbmUgb2YgdGhlIG1lc3NhZ2UuCiAgICAgICAgICAgICRtb2RpZnkgPSBbXTsKICAgICAgICAgICAgZm9yZWFjaCAoJG9wdGlvbnNbJ19jb25kaXRpb25hbCddIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJGspKSB7CiAgICAgICAgICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVska10gPSAkdjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkcmVxdWVzdCA9IFBzcjdcVXRpbHM6Om1vZGlmeVJlcXVlc3QoJHJlcXVlc3QsICRtb2RpZnkpOwogICAgICAgICAgICAvLyBEb24ndCBwYXNzIHRoaXMgaW50ZXJuYWwgdmFsdWUgYWxvbmcgdG8gbWlkZGxld2FyZS9oYW5kbGVycy4KICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ19jb25kaXRpb25hbCddKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVxdWVzdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybiBhbiBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gd2l0aCBwcmUtc2V0IG1lc3NhZ2UuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaW52YWxpZEJvZHkoKTogSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Bhc3NpbmcgaW4gdGhlICJib2R5IiByZXF1ZXN0ICcKICAgICAgICAgICAgLidvcHRpb24gYXMgYW4gYXJyYXkgdG8gc2VuZCBhIHJlcXVlc3QgaXMgbm90IHN1cHBvcnRlZC4gJwogICAgICAgICAgICAuJ1BsZWFzZSB1c2UgdGhlICJmb3JtX3BhcmFtcyIgcmVxdWVzdCBvcHRpb24gdG8gc2VuZCBhICcKICAgICAgICAgICAgLidhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQgcmVxdWVzdCwgb3IgdGhlICJtdWx0aXBhcnQiICcKICAgICAgICAgICAgLidyZXF1ZXN0IG9wdGlvbiB0byBzZW5kIGEgbXVsdGlwYXJ0L2Zvcm0tZGF0YSByZXF1ZXN0LicpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/ClientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEd1enpsZUV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIENsaWVudCBpbnRlcmZhY2UgZm9yIHNlbmRpbmcgSFRUUCByZXF1ZXN0cy4KICovCmludGVyZmFjZSBDbGllbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBUaGUgR3V6emxlIG1ham9yIHZlcnNpb24uCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBNQUpPUl9WRVJTSU9OID0gNzsKCiAgICAvKioKICAgICAqIFNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gc2VuZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5IHRvIHRoZSBnaXZlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBhbmQgdG8gdGhlIHRyYW5zZmVyLgogICAgICoKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZW5kKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIEFzeW5jaHJvbm91c2x5IHNlbmQgYW4gSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QgdG8gc2VuZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5IHRvIHRoZSBnaXZlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCBhbmQgdG8gdGhlIHRyYW5zZmVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEFzeW5jKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zID0gW10pOiBQcm9taXNlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogQ3JlYXRlIGFuZCBzZW5kIGFuIEhUVFAgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kLgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3RBc3luYyhzdHJpbmcgJG1ldGhvZCwgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBHZXQgYSBjbGllbnQgY29uZmlndXJhdGlvbiBvcHRpb24uCiAgICAgKgogICAgICogVGhlc2Ugb3B0aW9ucyBpbmNsdWRlIGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIG9mIHRoZSBjbGllbnQsIGEgImhhbmRsZXIiCiAgICAgKiAoaWYgdXRpbGl6ZWQgYnkgdGhlIGNvbmNyZXRlIGNsaWVudCksIGFuZCBhICJiYXNlX3VyaSIgaWYgdXRpbGl6ZWQgYnkKICAgICAqIHRoZSBjb25jcmV0ZSBjbGllbnQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRvcHRpb24gVGhlIGNvbmZpZyBvcHRpb24gdG8gcmV0cmlldmUuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICoKICAgICAqIEBkZXByZWNhdGVkIENsaWVudEludGVyZmFjZTo6Z2V0Q29uZmlnIHdpbGwgYmUgcmVtb3ZlZCBpbiBndXp6bGVodHRwL2d1enpsZTo4LjAuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWcoP3N0cmluZyAkb3B0aW9uID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/ClientTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEd1enpsZUV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIENsaWVudCBpbnRlcmZhY2UgZm9yIHNlbmRpbmcgSFRUUCByZXF1ZXN0cy4KICovCnRyYWl0IENsaWVudFRyYWl0CnsKICAgIC8qKgogICAgICogQ3JlYXRlIGFuZCBzZW5kIGFuIEhUVFAgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kLgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIEdFVCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldCgkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QoJ0dFVCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIEhFQUQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICoKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoZWFkKCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdCgnSEVBRCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIFBVVCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHB1dCgkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QoJ1BVVCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIFBPU1QgcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICoKICAgICAqIEB0aHJvd3MgR3V6emxlRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwb3N0KCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBSZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdCgnUE9TVCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIFBBVENIIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqCiAgICAgKiBAdGhyb3dzIEd1enpsZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcGF0Y2goJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0KCdQQVRDSCcsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBIVFRQIERFTEVURSByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKgogICAgICogQHRocm93cyBHdXp6bGVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QoJ0RFTEVURScsICR1cmksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbmQgc2VuZCBhbiBhc3luY2hyb25vdXMgSFRUUCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICRtZXRob2QgIEhUVFAgbWV0aG9kCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqLwogICAgYWJzdHJhY3QgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3RBc3luYyhzdHJpbmcgJG1ldGhvZCwgJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgR0VUIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4gVXNlIGFuIGFycmF5IHRvIHByb3ZpZGUgYSBVUkwKICAgICAqIHRlbXBsYXRlIGFuZCBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byB1c2UgaW4gdGhlIFVSTCB0ZW1wbGF0ZSBleHBhbnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBc3luYygkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdEFzeW5jKCdHRVQnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgSEVBRCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGVhZEFzeW5jKCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0QXN5bmMoJ0hFQUQnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgUFVUIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4gVXNlIGFuIGFycmF5IHRvIHByb3ZpZGUgYSBVUkwKICAgICAqIHRlbXBsYXRlIGFuZCBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byB1c2UgaW4gdGhlIFVSTCB0ZW1wbGF0ZSBleHBhbnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwdXRBc3luYygkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdEFzeW5jKCdQVVQnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgUE9TVCByZXF1ZXN0LgogICAgICoKICAgICAqIFVzZSBhbiBhYnNvbHV0ZSBwYXRoIHRvIG92ZXJyaWRlIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudCwgb3IgYQogICAgICogcmVsYXRpdmUgcGF0aCB0byBhcHBlbmQgdG8gdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LiBUaGUgVVJMIGNhbgogICAgICogY29udGFpbiB0aGUgcXVlcnkgc3RyaW5nIGFzIHdlbGwuIFVzZSBhbiBhcnJheSB0byBwcm92aWRlIGEgVVJMCiAgICAgKiB0ZW1wbGF0ZSBhbmQgYWRkaXRpb25hbCB2YXJpYWJsZXMgdG8gdXNlIGluIHRoZSBVUkwgdGVtcGxhdGUgZXhwYW5zaW9uLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICR1cmkgICAgIFVSSSBvYmplY3Qgb3Igc3RyaW5nLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCBvcHRpb25zIHRvIGFwcGx5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcG9zdEFzeW5jKCR1cmksIGFycmF5ICRvcHRpb25zID0gW10pOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0QXN5bmMoJ1BPU1QnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgUEFUQ0ggcmVxdWVzdC4KICAgICAqCiAgICAgKiBVc2UgYW4gYWJzb2x1dGUgcGF0aCB0byBvdmVycmlkZSB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQsIG9yIGEKICAgICAqIHJlbGF0aXZlIHBhdGggdG8gYXBwZW5kIHRvIHRoZSBiYXNlIHBhdGggb2YgdGhlIGNsaWVudC4gVGhlIFVSTCBjYW4KICAgICAqIGNvbnRhaW4gdGhlIHF1ZXJ5IHN0cmluZyBhcyB3ZWxsLiBVc2UgYW4gYXJyYXkgdG8gcHJvdmlkZSBhIFVSTAogICAgICogdGVtcGxhdGUgYW5kIGFkZGl0aW9uYWwgdmFyaWFibGVzIHRvIHVzZSBpbiB0aGUgVVJMIHRlbXBsYXRlIGV4cGFuc2lvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfFVyaUludGVyZmFjZSAkdXJpICAgICBVUkkgb2JqZWN0IG9yIHN0cmluZy4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICRvcHRpb25zIFJlcXVlc3Qgb3B0aW9ucyB0byBhcHBseS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHBhdGNoQXN5bmMoJHVyaSwgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3RBc3luYygnUEFUQ0gnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHNlbmQgYW4gYXN5bmNocm9ub3VzIEhUVFAgREVMRVRFIHJlcXVlc3QuCiAgICAgKgogICAgICogVXNlIGFuIGFic29sdXRlIHBhdGggdG8gb3ZlcnJpZGUgdGhlIGJhc2UgcGF0aCBvZiB0aGUgY2xpZW50LCBvciBhCiAgICAgKiByZWxhdGl2ZSBwYXRoIHRvIGFwcGVuZCB0byB0aGUgYmFzZSBwYXRoIG9mIHRoZSBjbGllbnQuIFRoZSBVUkwgY2FuCiAgICAgKiBjb250YWluIHRoZSBxdWVyeSBzdHJpbmcgYXMgd2VsbC4gVXNlIGFuIGFycmF5IHRvIHByb3ZpZGUgYSBVUkwKICAgICAqIHRlbXBsYXRlIGFuZCBhZGRpdGlvbmFsIHZhcmlhYmxlcyB0byB1c2UgaW4gdGhlIFVSTCB0ZW1wbGF0ZSBleHBhbnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSAgICAgVVJJIG9iamVjdCBvciBzdHJpbmcuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAkb3B0aW9ucyBSZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZWxldGVBc3luYygkdXJpLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdEFzeW5jKCdERUxFVEUnLCAkdXJpLCAkb3B0aW9ucyk7CiAgICB9Cn0K]]></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[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIENvb2tpZSBqYXIgdGhhdCBzdG9yZXMgY29va2llcyBhcyBhbiBhcnJheQogKi8KY2xhc3MgQ29va2llSmFyIGltcGxlbWVudHMgQ29va2llSmFySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBTZXRDb29raWVbXSBMb2FkZWQgY29va2llIGRhdGEKICAgICAqLwogICAgcHJpdmF0ZSAkY29va2llcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJHN0cmljdE1vZGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYm9vbCAgJHN0cmljdE1vZGUgIFNldCB0byB0cnVlIHRvIHRocm93IGV4Y2VwdGlvbnMgd2hlbiBpbnZhbGlkCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2tpZXMgYXJlIGFkZGVkIHRvIHRoZSBjb29raWUgamFyLgogICAgICogQHBhcmFtIGFycmF5ICRjb29raWVBcnJheSBBcnJheSBvZiBTZXRDb29raWUgb2JqZWN0cyBvciBhIGhhc2ggb2YKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgU2V0Q29va2llCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChib29sICRzdHJpY3RNb2RlID0gZmFsc2UsIGFycmF5ICRjb29raWVBcnJheSA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5zdHJpY3RNb2RlID0gJHN0cmljdE1vZGU7CgogICAgICAgIGZvcmVhY2ggKCRjb29raWVBcnJheSBhcyAkY29va2llKSB7CiAgICAgICAgICAgIGlmICghKCRjb29raWUgaW5zdGFuY2VvZiBTZXRDb29raWUpKSB7CiAgICAgICAgICAgICAgICAkY29va2llID0gbmV3IFNldENvb2tpZSgkY29va2llKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdGhpcy0+c2V0Q29va2llKCRjb29raWUpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBDb29raWUgamFyIGZyb20gYW4gYXNzb2NpYXRpdmUgYXJyYXkgYW5kIGRvbWFpbi4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgICRjb29raWVzIENvb2tpZXMgdG8gY3JlYXRlIHRoZSBqYXIgZnJvbQogICAgICogQHBhcmFtIHN0cmluZyAkZG9tYWluICBEb21haW4gdG8gc2V0IHRoZSBjb29raWVzIHRvCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUFycmF5KGFycmF5ICRjb29raWVzLCBzdHJpbmcgJGRvbWFpbik6IHNlbGYKICAgIHsKICAgICAgICAkY29va2llSmFyID0gbmV3IHNlbGYoKTsKICAgICAgICBmb3JlYWNoICgkY29va2llcyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgJGNvb2tpZUphci0+c2V0Q29va2llKG5ldyBTZXRDb29raWUoWwogICAgICAgICAgICAgICAgJ0RvbWFpbicgPT4gJGRvbWFpbiwKICAgICAgICAgICAgICAgICdOYW1lJyA9PiAkbmFtZSwKICAgICAgICAgICAgICAgICdWYWx1ZScgPT4gJHZhbHVlLAogICAgICAgICAgICAgICAgJ0Rpc2NhcmQnID0+IHRydWUsCiAgICAgICAgICAgIF0pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29va2llSmFyOwogICAgfQoKICAgIC8qKgogICAgICogRXZhbHVhdGUgaWYgdGhpcyBjb29raWUgc2hvdWxkIGJlIHBlcnNpc3RlZCB0byBzdG9yYWdlCiAgICAgKiB0aGF0IHN1cnZpdmVzIGJldHdlZW4gcmVxdWVzdHMuCiAgICAgKgogICAgICogQHBhcmFtIFNldENvb2tpZSAkY29va2llICAgICAgICAgICAgICBCZWluZyBldmFsdWF0ZWQuCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICRhbGxvd1Nlc3Npb25Db29raWVzIElmIHdlIHNob3VsZCBwZXJzaXN0IHNlc3Npb24gY29va2llcwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNob3VsZFBlcnNpc3QoU2V0Q29va2llICRjb29raWUsIGJvb2wgJGFsbG93U2Vzc2lvbkNvb2tpZXMgPSBmYWxzZSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJGNvb2tpZS0+Z2V0RXhwaXJlcygpIHx8ICRhbGxvd1Nlc3Npb25Db29raWVzKSB7CiAgICAgICAgICAgIGlmICghJGNvb2tpZS0+Z2V0RGlzY2FyZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogRmluZHMgYW5kIHJldHVybnMgdGhlIGNvb2tpZSBiYXNlZCBvbiB0aGUgbmFtZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgY29va2llIG5hbWUgdG8gc2VhcmNoIGZvcgogICAgICoKICAgICAqIEByZXR1cm4gU2V0Q29va2llfG51bGwgY29va2llIHRoYXQgd2FzIGZvdW5kIG9yIG51bGwgaWYgbm90IGZvdW5kCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb29raWVCeU5hbWUoc3RyaW5nICRuYW1lKTogP1NldENvb2tpZQogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb29raWVzIGFzICRjb29raWUpIHsKICAgICAgICAgICAgaWYgKCRjb29raWUtPmdldE5hbWUoKSAhPT0gbnVsbCAmJiBcc3RyY2FzZWNtcCgkY29va2llLT5nZXROYW1lKCksICRuYW1lKSA9PT0gMCkgewogICAgICAgICAgICAgICAgcmV0dXJuICRjb29raWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFxhcnJheV9tYXAoc3RhdGljIGZ1bmN0aW9uIChTZXRDb29raWUgJGNvb2tpZSk6IGFycmF5IHsKICAgICAgICAgICAgcmV0dXJuICRjb29raWUtPnRvQXJyYXkoKTsKICAgICAgICB9LCAkdGhpcy0+Z2V0SXRlcmF0b3IoKS0+Z2V0QXJyYXlDb3B5KCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhcig/c3RyaW5nICRkb21haW4gPSBudWxsLCA/c3RyaW5nICRwYXRoID0gbnVsbCwgP3N0cmluZyAkbmFtZSA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkZG9tYWluKSB7CiAgICAgICAgICAgICR0aGlzLT5jb29raWVzID0gW107CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfSBlbHNlaWYgKCEkcGF0aCkgewogICAgICAgICAgICAkdGhpcy0+Y29va2llcyA9IFxhcnJheV9maWx0ZXIoCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29va2llcywKICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoU2V0Q29va2llICRjb29raWUpIHVzZSAoJGRvbWFpbik6IGJvb2wgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhJGNvb2tpZS0+bWF0Y2hlc0RvbWFpbigkZG9tYWluKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2VpZiAoISRuYW1lKSB7CiAgICAgICAgICAgICR0aGlzLT5jb29raWVzID0gXGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgICAgICR0aGlzLT5jb29raWVzLAogICAgICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uIChTZXRDb29raWUgJGNvb2tpZSkgdXNlICgkcGF0aCwgJGRvbWFpbik6IGJvb2wgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAhKCRjb29raWUtPm1hdGNoZXNQYXRoKCRwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkY29va2llLT5tYXRjaGVzRG9tYWluKCRkb21haW4pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+Y29va2llcyA9IFxhcnJheV9maWx0ZXIoCiAgICAgICAgICAgICAgICAkdGhpcy0+Y29va2llcywKICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoU2V0Q29va2llICRjb29raWUpIHVzZSAoJHBhdGgsICRkb21haW4sICRuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoJGNvb2tpZS0+Z2V0TmFtZSgpID09ICRuYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICYmICRjb29raWUtPm1hdGNoZXNQYXRoKCRwYXRoKQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkY29va2llLT5tYXRjaGVzRG9tYWluKCRkb21haW4pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyU2Vzc2lvbkNvb2tpZXMoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5jb29raWVzID0gXGFycmF5X2ZpbHRlcigKICAgICAgICAgICAgJHRoaXMtPmNvb2tpZXMsCiAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoU2V0Q29va2llICRjb29raWUpOiBib29sIHsKICAgICAgICAgICAgICAgIHJldHVybiAhJGNvb2tpZS0+Z2V0RGlzY2FyZCgpICYmICRjb29raWUtPmdldEV4cGlyZXMoKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldENvb2tpZShTZXRDb29raWUgJGNvb2tpZSk6IGJvb2wKICAgIHsKICAgICAgICAvLyBJZiB0aGUgbmFtZSBzdHJpbmcgaXMgZW1wdHkgKGJ1dCBub3QgMCksIGlnbm9yZSB0aGUgc2V0LWNvb2tpZQogICAgICAgIC8vIHN0cmluZyBlbnRpcmVseS4KICAgICAgICAkbmFtZSA9ICRjb29raWUtPmdldE5hbWUoKTsKICAgICAgICBpZiAoISRuYW1lICYmICRuYW1lICE9PSAnMCcpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gT25seSBhbGxvdyBjb29raWVzIHdpdGggc2V0IGFuZCB2YWxpZCBkb21haW4sIG5hbWUsIHZhbHVlCiAgICAgICAgJHJlc3VsdCA9ICRjb29raWUtPnZhbGlkYXRlKCk7CiAgICAgICAgaWYgKCRyZXN1bHQgIT09IHRydWUpIHsKICAgICAgICAgICAgaWYgKCR0aGlzLT5zdHJpY3RNb2RlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0ludmFsaWQgY29va2llOiAnLiRyZXN1bHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5yZW1vdmVDb29raWVJZkVtcHR5KCRjb29raWUpOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgLy8gUmVzb2x2ZSBjb25mbGljdHMgd2l0aCBwcmV2aW91c2x5IHNldCBjb29raWVzCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmNvb2tpZXMgYXMgJGkgPT4gJGMpIHsKICAgICAgICAgICAgLy8gVHdvIGNvb2tpZXMgYXJlIGlkZW50aWNhbCwgd2hlbiB0aGVpciBwYXRoLCBhbmQgZG9tYWluIGFyZQogICAgICAgICAgICAvLyBpZGVudGljYWwuCiAgICAgICAgICAgIGlmICgkYy0+Z2V0UGF0aCgpICE9ICRjb29raWUtPmdldFBhdGgoKQogICAgICAgICAgICAgICAgfHwgJGMtPmdldERvbWFpbigpICE9ICRjb29raWUtPmdldERvbWFpbigpCiAgICAgICAgICAgICAgICB8fCAkYy0+Z2V0TmFtZSgpICE9ICRjb29raWUtPmdldE5hbWUoKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBUaGUgcHJldmlvdXNseSBzZXQgY29va2llIGlzIGEgZGlzY2FyZCBjb29raWUgYW5kIHRoaXMgb25lIGlzCiAgICAgICAgICAgIC8vIG5vdCBzbyBhbGxvdyB0aGUgbmV3IGNvb2tpZSB0byBiZSBzZXQKICAgICAgICAgICAgaWYgKCEkY29va2llLT5nZXREaXNjYXJkKCkgJiYgJGMtPmdldERpc2NhcmQoKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmNvb2tpZXNbJGldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgbmV3IGNvb2tpZSdzIGV4cGlyYXRpb24gaXMgZnVydGhlciBpbnRvIHRoZSBmdXR1cmUsIHRoZW4KICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgb2xkIGNvb2tpZQogICAgICAgICAgICBpZiAoJGNvb2tpZS0+Z2V0RXhwaXJlcygpID4gJGMtPmdldEV4cGlyZXMoKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmNvb2tpZXNbJGldKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQsIHdlIGJldHRlciBjaGFuZ2UgaXQKICAgICAgICAgICAgaWYgKCRjb29raWUtPmdldFZhbHVlKCkgIT09ICRjLT5nZXRWYWx1ZSgpKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkdGhpcy0+Y29va2llc1skaV0pOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFRoZSBjb29raWUgZXhpc3RzLCBzbyBubyBuZWVkIHRvIGNvbnRpbnVlCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jb29raWVzW10gPSAkY29va2llOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIFxjb3VudCgkdGhpcy0+Y29va2llcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFxBcnJheUl0ZXJhdG9yPGludCwgU2V0Q29va2llPgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SXRlcmF0b3IoKTogXEFycmF5SXRlcmF0b3IKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFxBcnJheUl0ZXJhdG9yKFxhcnJheV92YWx1ZXMoJHRoaXMtPmNvb2tpZXMpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZXh0cmFjdENvb2tpZXMoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKTogdm9pZAogICAgewogICAgICAgIGlmICgkY29va2llSGVhZGVyID0gJHJlc3BvbnNlLT5nZXRIZWFkZXIoJ1NldC1Db29raWUnKSkgewogICAgICAgICAgICBmb3JlYWNoICgkY29va2llSGVhZGVyIGFzICRjb29raWUpIHsKICAgICAgICAgICAgICAgICRzYyA9IFNldENvb2tpZTo6ZnJvbVN0cmluZygkY29va2llKTsKICAgICAgICAgICAgICAgIGlmICghJHNjLT5nZXREb21haW4oKSkgewogICAgICAgICAgICAgICAgICAgICRzYy0+c2V0RG9tYWluKCRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgwICE9PSBcc3RycG9zKCRzYy0+Z2V0UGF0aCgpLCAnLycpKSB7CiAgICAgICAgICAgICAgICAgICAgJHNjLT5zZXRQYXRoKCR0aGlzLT5nZXRDb29raWVQYXRoRnJvbVJlcXVlc3QoJHJlcXVlc3QpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICghJHNjLT5tYXRjaGVzRG9tYWluKCRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gTm90ZTogQXQgdGhpcyBwb2ludCBgJHNjLT5nZXREb21haW4oKWAgYmVpbmcgYSBwdWJsaWMgc3VmZml4IHNob3VsZAogICAgICAgICAgICAgICAgLy8gYmUgcmVqZWN0ZWQsIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHB1bGwgaW4gdGhlIGZ1bGwgUFNMIGRlcGVuZGVuY3kuCiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0Q29va2llKCRzYyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wdXRlcyBjb29raWUgcGF0aCBmb2xsb3dpbmcgUkZDIDYyNjUgc2VjdGlvbiA1LjEuNAogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4xLjQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXRDb29raWVQYXRoRnJvbVJlcXVlc3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk6IHN0cmluZwogICAgewogICAgICAgICR1cmlQYXRoID0gJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRQYXRoKCk7CiAgICAgICAgaWYgKCcnID09PSAkdXJpUGF0aCkgewogICAgICAgICAgICByZXR1cm4gJy8nOwogICAgICAgIH0KICAgICAgICBpZiAoMCAhPT0gXHN0cnBvcygkdXJpUGF0aCwgJy8nKSkgewogICAgICAgICAgICByZXR1cm4gJy8nOwogICAgICAgIH0KICAgICAgICBpZiAoJy8nID09PSAkdXJpUGF0aCkgewogICAgICAgICAgICByZXR1cm4gJy8nOwogICAgICAgIH0KICAgICAgICAkbGFzdFNsYXNoUG9zID0gXHN0cnJwb3MoJHVyaVBhdGgsICcvJyk7CiAgICAgICAgaWYgKDAgPT09ICRsYXN0U2xhc2hQb3MgfHwgZmFsc2UgPT09ICRsYXN0U2xhc2hQb3MpIHsKICAgICAgICAgICAgcmV0dXJuICcvJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3Vic3RyKCR1cmlQYXRoLCAwLCAkbGFzdFNsYXNoUG9zKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENvb2tpZUhlYWRlcihSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgICR2YWx1ZXMgPSBbXTsKICAgICAgICAkdXJpID0gJHJlcXVlc3QtPmdldFVyaSgpOwogICAgICAgICRzY2hlbWUgPSAkdXJpLT5nZXRTY2hlbWUoKTsKICAgICAgICAkaG9zdCA9ICR1cmktPmdldEhvc3QoKTsKICAgICAgICAkcGF0aCA9ICR1cmktPmdldFBhdGgoKSA/OiAnLyc7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb29raWVzIGFzICRjb29raWUpIHsKICAgICAgICAgICAgaWYgKCRjb29raWUtPm1hdGNoZXNQYXRoKCRwYXRoKQogICAgICAgICAgICAgICAgJiYgJGNvb2tpZS0+bWF0Y2hlc0RvbWFpbigkaG9zdCkKICAgICAgICAgICAgICAgICYmICEkY29va2llLT5pc0V4cGlyZWQoKQogICAgICAgICAgICAgICAgJiYgKCEkY29va2llLT5nZXRTZWN1cmUoKSB8fCAkc2NoZW1lID09PSAnaHR0cHMnKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICRjb29raWUtPmdldE5hbWUoKS4nPScKICAgICAgICAgICAgICAgICAgICAuJGNvb2tpZS0+Z2V0VmFsdWUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR2YWx1ZXMKICAgICAgICAgICAgPyAkcmVxdWVzdC0+d2l0aEhlYWRlcignQ29va2llJywgXGltcGxvZGUoJzsgJywgJHZhbHVlcykpCiAgICAgICAgICAgIDogJHJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBJZiBhIGNvb2tpZSBhbHJlYWR5IGV4aXN0cyBhbmQgdGhlIHNlcnZlciBhc2tzIHRvIHNldCBpdCBhZ2FpbiB3aXRoIGEKICAgICAqIG51bGwgdmFsdWUsIHRoZSBjb29raWUgbXVzdCBiZSBkZWxldGVkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHJlbW92ZUNvb2tpZUlmRW1wdHkoU2V0Q29va2llICRjb29raWUpOiB2b2lkCiAgICB7CiAgICAgICAgJGNvb2tpZVZhbHVlID0gJGNvb2tpZS0+Z2V0VmFsdWUoKTsKICAgICAgICBpZiAoJGNvb2tpZVZhbHVlID09PSBudWxsIHx8ICRjb29raWVWYWx1ZSA9PT0gJycpIHsKICAgICAgICAgICAgJHRoaXMtPmNsZWFyKAogICAgICAgICAgICAgICAgJGNvb2tpZS0+Z2V0RG9tYWluKCksCiAgICAgICAgICAgICAgICAkY29va2llLT5nZXRQYXRoKCksCiAgICAgICAgICAgICAgICAkY29va2llLT5nZXROYW1lKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/CookieJarInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIFN0b3JlcyBIVFRQIGNvb2tpZXMuCiAqCiAqIEl0IGV4dHJhY3RzIGNvb2tpZXMgZnJvbSBIVFRQIHJlcXVlc3RzLCBhbmQgcmV0dXJucyB0aGVtIGluIEhUVFAgcmVzcG9uc2VzLgogKiBDb29raWVKYXJJbnRlcmZhY2UgaW5zdGFuY2VzIGF1dG9tYXRpY2FsbHkgZXhwaXJlIGNvbnRhaW5lZCBjb29raWVzIHdoZW4KICogbmVjZXNzYXJ5LiBTdWJjbGFzc2VzIGFyZSBhbHNvIHJlc3BvbnNpYmxlIGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nCiAqIGNvb2tpZXMgZnJvbSBhIGZpbGUsIGRhdGFiYXNlLCBldGMuCiAqCiAqIEBzZWUgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMi9saWJyYXJ5L2Nvb2tpZWxpYi5odG1sIEluc3BpcmF0aW9uCiAqCiAqIEBleHRlbmRzIFxJdGVyYXRvckFnZ3JlZ2F0ZTxTZXRDb29raWU+CiAqLwppbnRlcmZhY2UgQ29va2llSmFySW50ZXJmYWNlIGV4dGVuZHMgXENvdW50YWJsZSwgXEl0ZXJhdG9yQWdncmVnYXRlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgcmVxdWVzdCB3aXRoIGFkZGVkIGNvb2tpZSBoZWFkZXJzLgogICAgICoKICAgICAqIElmIG5vIG1hdGNoaW5nIGNvb2tpZXMgYXJlIGZvdW5kIGluIHRoZSBjb29raWUgamFyLCB0aGVuIG5vIENvb2tpZQogICAgICogaGVhZGVyIGlzIGFkZGVkIHRvIHRoZSByZXF1ZXN0IGFuZCB0aGUgc2FtZSByZXF1ZXN0IGlzIHJldHVybmVkLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3Qgb2JqZWN0IHRvIG1vZGlmeS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UgcmV0dXJucyB0aGUgbW9kaWZpZWQgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhDb29raWVIZWFkZXIoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk6IFJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBFeHRyYWN0IGNvb2tpZXMgZnJvbSBhbiBIVFRQIHJlc3BvbnNlIGFuZCBzdG9yZSB0aGVtIGluIHRoZSBDb29raWVKYXIuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICRyZXF1ZXN0ICBSZXF1ZXN0IHRoYXQgd2FzIHNlbnQKICAgICAqIEBwYXJhbSBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgUmVzcG9uc2UgdGhhdCB3YXMgcmVjZWl2ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4dHJhY3RDb29raWVzKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBTZXRzIGEgY29va2llIGluIHRoZSBjb29raWUgamFyLgogICAgICoKICAgICAqIEBwYXJhbSBTZXRDb29raWUgJGNvb2tpZSBDb29raWUgdG8gc2V0LgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCBSZXR1cm5zIHRydWUgb24gc3VjY2VzcyBvciBmYWxzZSBvbiBmYWlsdXJlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRDb29raWUoU2V0Q29va2llICRjb29raWUpOiBib29sOwoKICAgIC8qKgogICAgICogUmVtb3ZlIGNvb2tpZXMgY3VycmVudGx5IGhlbGQgaW4gdGhlIGNvb2tpZSBqYXIuCiAgICAgKgogICAgICogSW52b2tpbmcgdGhpcyBtZXRob2Qgd2l0aG91dCBhcmd1bWVudHMgd2lsbCBlbXB0eSB0aGUgd2hvbGUgY29va2llIGphci4KICAgICAqIElmIGdpdmVuIGEgJGRvbWFpbiBhcmd1bWVudCBvbmx5IGNvb2tpZXMgYmVsb25naW5nIHRvIHRoYXQgZG9tYWluIHdpbGwKICAgICAqIGJlIHJlbW92ZWQuIElmIGdpdmVuIGEgJGRvbWFpbiBhbmQgJHBhdGggYXJndW1lbnQsIGNvb2tpZXMgYmVsb25naW5nIHRvCiAgICAgKiB0aGUgc3BlY2lmaWVkIHBhdGggd2l0aGluIHRoYXQgZG9tYWluIGFyZSByZW1vdmVkLiBJZiBnaXZlbiBhbGwgdGhyZWUKICAgICAqIGFyZ3VtZW50cywgdGhlbiB0aGUgY29va2llIHdpdGggdGhlIHNwZWNpZmllZCBuYW1lLCBwYXRoIGFuZCBkb21haW4gaXMKICAgICAqIHJlbW92ZWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRkb21haW4gQ2xlYXJzIGNvb2tpZXMgbWF0Y2hpbmcgYSBkb21haW4KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcGF0aCAgIENsZWFycyBjb29raWVzIG1hdGNoaW5nIGEgZG9tYWluIGFuZCBwYXRoCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJG5hbWUgICBDbGVhcnMgY29va2llcyBtYXRjaGluZyBhIGRvbWFpbiwgcGF0aCwgYW5kIG5hbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNsZWFyKD9zdHJpbmcgJGRvbWFpbiA9IG51bGwsID9zdHJpbmcgJHBhdGggPSBudWxsLCA/c3RyaW5nICRuYW1lID0gbnVsbCk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBEaXNjYXJkIGFsbCBzZXNzaW9ucyBjb29raWVzLgogICAgICoKICAgICAqIFJlbW92ZXMgY29va2llcyB0aGF0IGRvbid0IGhhdmUgYW4gZXhwaXJlIGZpZWxkIG9yIGEgaGF2ZSBhIGRpc2NhcmQKICAgICAqIGZpZWxkIHNldCB0byB0cnVlLiBUbyBiZSBjYWxsZWQgd2hlbiB0aGUgdXNlciBhZ2VudCBzaHV0cyBkb3duIGFjY29yZGluZwogICAgICogdG8gUkZDIDI5NjUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbGVhclNlc3Npb25Db29raWVzKCk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGUgY29va2llIGphciB0byBhbiBhcnJheS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRvQXJyYXkoKTogYXJyYXk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/FileCookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCnVzZSBHdXp6bGVIdHRwXFV0aWxzOwoKLyoqCiAqIFBlcnNpc3RzIG5vbi1zZXNzaW9uIGNvb2tpZXMgdXNpbmcgYSBKU09OIGZvcm1hdHRlZCBmaWxlCiAqLwpjbGFzcyBGaWxlQ29va2llSmFyIGV4dGVuZHMgQ29va2llSmFyCnsKICAgIC8qKgogICAgICogQHZhciBzdHJpbmcgZmlsZW5hbWUKICAgICAqLwogICAgcHJpdmF0ZSAkZmlsZW5hbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wgQ29udHJvbCB3aGV0aGVyIHRvIHBlcnNpc3Qgc2Vzc2lvbiBjb29raWVzIG9yIG5vdC4KICAgICAqLwogICAgcHJpdmF0ZSAkc3RvcmVTZXNzaW9uQ29va2llczsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBGaWxlQ29va2llSmFyIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvb2tpZUZpbGUgICAgICAgICAgRmlsZSB0byBzdG9yZSB0aGUgY29va2llIGRhdGEKICAgICAqIEBwYXJhbSBib29sICAgJHN0b3JlU2Vzc2lvbkNvb2tpZXMgU2V0IHRvIHRydWUgdG8gc3RvcmUgc2Vzc2lvbiBjb29raWVzCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBjb29raWUgamFyLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yIGNyZWF0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkY29va2llRmlsZSwgYm9vbCAkc3RvcmVTZXNzaW9uQ29va2llcyA9IGZhbHNlKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsKICAgICAgICAkdGhpcy0+ZmlsZW5hbWUgPSAkY29va2llRmlsZTsKICAgICAgICAkdGhpcy0+c3RvcmVTZXNzaW9uQ29va2llcyA9ICRzdG9yZVNlc3Npb25Db29raWVzOwoKICAgICAgICBpZiAoXGZpbGVfZXhpc3RzKCRjb29raWVGaWxlKSkgewogICAgICAgICAgICAkdGhpcy0+bG9hZCgkY29va2llRmlsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogU2F2ZXMgdGhlIGZpbGUgd2hlbiBzaHV0dGluZyBkb3duCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+c2F2ZSgkdGhpcy0+ZmlsZW5hbWUpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZXMgdGhlIGNvb2tpZXMgdG8gYSBmaWxlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZpbGVuYW1lIEZpbGUgdG8gc2F2ZQogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGZpbGUgY2Fubm90IGJlIGZvdW5kIG9yIGNyZWF0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNhdmUoc3RyaW5nICRmaWxlbmFtZSk6IHZvaWQKICAgIHsKICAgICAgICAkanNvbiA9IFtdOwogICAgICAgIC8qKiBAdmFyIFNldENvb2tpZSAkY29va2llICovCiAgICAgICAgZm9yZWFjaCAoJHRoaXMgYXMgJGNvb2tpZSkgewogICAgICAgICAgICBpZiAoQ29va2llSmFyOjpzaG91bGRQZXJzaXN0KCRjb29raWUsICR0aGlzLT5zdG9yZVNlc3Npb25Db29raWVzKSkgewogICAgICAgICAgICAgICAgJGpzb25bXSA9ICRjb29raWUtPnRvQXJyYXkoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGpzb25TdHIgPSBVdGlsczo6anNvbkVuY29kZSgkanNvbik7CiAgICAgICAgaWYgKGZhbHNlID09PSBcZmlsZV9wdXRfY29udGVudHMoJGZpbGVuYW1lLCAkanNvblN0ciwgXExPQ0tfRVgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiVW5hYmxlIHRvIHNhdmUgZmlsZSB7JGZpbGVuYW1lfSIpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExvYWQgY29va2llcyBmcm9tIGEgSlNPTiBmb3JtYXR0ZWQgZmlsZS4KICAgICAqCiAgICAgKiBPbGQgY29va2llcyBhcmUga2VwdCB1bmxlc3Mgb3ZlcndyaXR0ZW4gYnkgbmV3bHkgbG9hZGVkIG9uZXMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgQ29va2llIGZpbGUgdG8gbG9hZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBmaWxlIGNhbm5vdCBiZSBsb2FkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkKHN0cmluZyAkZmlsZW5hbWUpOiB2b2lkCiAgICB7CiAgICAgICAgJGpzb24gPSBcZmlsZV9nZXRfY29udGVudHMoJGZpbGVuYW1lKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRqc29uKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiVW5hYmxlIHRvIGxvYWQgZmlsZSB7JGZpbGVuYW1lfSIpOwogICAgICAgIH0KICAgICAgICBpZiAoJGpzb24gPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRkYXRhID0gVXRpbHM6Ompzb25EZWNvZGUoJGpzb24sIHRydWUpOwogICAgICAgIGlmIChcaXNfYXJyYXkoJGRhdGEpKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRjb29raWUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5zZXRDb29raWUobmV3IFNldENvb2tpZSgkY29va2llKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoXGlzX3NjYWxhcigkZGF0YSkgJiYgIWVtcHR5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkludmFsaWQgY29va2llIGZpbGU6IHskZmlsZW5hbWV9Iik7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/SessionCookieJar.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCi8qKgogKiBQZXJzaXN0cyBjb29raWVzIGluIHRoZSBjbGllbnQgc2Vzc2lvbgogKi8KY2xhc3MgU2Vzc2lvbkNvb2tpZUphciBleHRlbmRzIENvb2tpZUphcgp7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nIHNlc3Npb24ga2V5CiAgICAgKi8KICAgIHByaXZhdGUgJHNlc3Npb25LZXk7CgogICAgLyoqCiAgICAgKiBAdmFyIGJvb2wgQ29udHJvbCB3aGV0aGVyIHRvIHBlcnNpc3Qgc2Vzc2lvbiBjb29raWVzIG9yIG5vdC4KICAgICAqLwogICAgcHJpdmF0ZSAkc3RvcmVTZXNzaW9uQ29va2llczsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBTZXNzaW9uQ29va2llSmFyIG9iamVjdAogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHNlc3Npb25LZXkgICAgICAgICAgU2Vzc2lvbiBrZXkgbmFtZSB0byBzdG9yZSB0aGUgY29va2llCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgaW4gc2Vzc2lvbgogICAgICogQHBhcmFtIGJvb2wgICAkc3RvcmVTZXNzaW9uQ29va2llcyBTZXQgdG8gdHJ1ZSB0byBzdG9yZSBzZXNzaW9uIGNvb2tpZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGNvb2tpZSBqYXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChzdHJpbmcgJHNlc3Npb25LZXksIGJvb2wgJHN0b3JlU2Vzc2lvbkNvb2tpZXMgPSBmYWxzZSkKICAgIHsKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAgICAgJHRoaXMtPnNlc3Npb25LZXkgPSAkc2Vzc2lvbktleTsKICAgICAgICAkdGhpcy0+c3RvcmVTZXNzaW9uQ29va2llcyA9ICRzdG9yZVNlc3Npb25Db29raWVzOwogICAgICAgICR0aGlzLT5sb2FkKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYXZlcyBjb29raWVzIHRvIHNlc3Npb24gd2hlbiBzaHV0dGluZyBkb3duCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICAkdGhpcy0+c2F2ZSgpOwogICAgfQoKICAgIC8qKgogICAgICogU2F2ZSBjb29raWVzIHRvIHRoZSBjbGllbnQgc2Vzc2lvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJGpzb24gPSBbXTsKICAgICAgICAvKiogQHZhciBTZXRDb29raWUgJGNvb2tpZSAqLwogICAgICAgIGZvcmVhY2ggKCR0aGlzIGFzICRjb29raWUpIHsKICAgICAgICAgICAgaWYgKENvb2tpZUphcjo6c2hvdWxkUGVyc2lzdCgkY29va2llLCAkdGhpcy0+c3RvcmVTZXNzaW9uQ29va2llcykpIHsKICAgICAgICAgICAgICAgICRqc29uW10gPSAkY29va2llLT50b0FycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRfU0VTU0lPTlskdGhpcy0+c2Vzc2lvbktleV0gPSBcanNvbl9lbmNvZGUoJGpzb24pOwogICAgfQoKICAgIC8qKgogICAgICogTG9hZCB0aGUgY29udGVudHMgb2YgdGhlIGNsaWVudCBzZXNzaW9uIGludG8gdGhlIGRhdGEgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIGZ1bmN0aW9uIGxvYWQoKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNzZXQoJF9TRVNTSU9OWyR0aGlzLT5zZXNzaW9uS2V5XSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkZGF0YSA9IFxqc29uX2RlY29kZSgkX1NFU1NJT05bJHRoaXMtPnNlc3Npb25LZXldLCB0cnVlKTsKICAgICAgICBpZiAoXGlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICBmb3JlYWNoICgkZGF0YSBhcyAkY29va2llKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2V0Q29va2llKG5ldyBTZXRDb29raWUoJGNvb2tpZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKFxzdHJsZW4oJGRhdGEpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb29raWUgZGF0YScpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Cookie/SetCookie.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXENvb2tpZTsKCi8qKgogKiBTZXQtQ29va2llIG9iamVjdAogKi8KY2xhc3MgU2V0Q29va2llCnsKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyAkZGVmYXVsdHMgPSBbCiAgICAgICAgJ05hbWUnID0+IG51bGwsCiAgICAgICAgJ1ZhbHVlJyA9PiBudWxsLAogICAgICAgICdEb21haW4nID0+IG51bGwsCiAgICAgICAgJ1BhdGgnID0+ICcvJywKICAgICAgICAnTWF4LUFnZScgPT4gbnVsbCwKICAgICAgICAnRXhwaXJlcycgPT4gbnVsbCwKICAgICAgICAnU2VjdXJlJyA9PiBmYWxzZSwKICAgICAgICAnRGlzY2FyZCcgPT4gZmFsc2UsCiAgICAgICAgJ0h0dHBPbmx5JyA9PiBmYWxzZSwKICAgIF07CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5IENvb2tpZSBkYXRhCiAgICAgKi8KICAgIHByaXZhdGUgJGRhdGE7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgU2V0Q29va2llIG9iamVjdCBmcm9tIGEgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvb2tpZSBTZXQtQ29va2llIGhlYWRlciBzdHJpbmcKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tU3RyaW5nKHN0cmluZyAkY29va2llKTogc2VsZgogICAgewogICAgICAgIC8vIENyZWF0ZSB0aGUgZGVmYXVsdCByZXR1cm4gYXJyYXkKICAgICAgICAkZGF0YSA9IHNlbGY6OiRkZWZhdWx0czsKICAgICAgICAvLyBFeHBsb2RlIHRoZSBjb29raWUgc3RyaW5nIHVzaW5nIGEgc2VyaWVzIG9mIHNlbWljb2xvbnMKICAgICAgICAkcGllY2VzID0gXGFycmF5X2ZpbHRlcihcYXJyYXlfbWFwKCd0cmltJywgXGV4cGxvZGUoJzsnLCAkY29va2llKSkpOwogICAgICAgIC8vIFRoZSBuYW1lIG9mIHRoZSBjb29raWUgKGZpcnN0IGt2cCkgbXVzdCBleGlzdCBhbmQgaW5jbHVkZSBhbiBlcXVhbCBzaWduLgogICAgICAgIGlmICghaXNzZXQoJHBpZWNlc1swXSkgfHwgXHN0cnBvcygkcGllY2VzWzBdLCAnPScpID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSBjb29raWUgcGllY2VzIGludG8gdGhlIHBhcnNlZCBkYXRhIGFycmF5CiAgICAgICAgZm9yZWFjaCAoJHBpZWNlcyBhcyAkcGFydCkgewogICAgICAgICAgICAkY29va2llUGFydHMgPSBcZXhwbG9kZSgnPScsICRwYXJ0LCAyKTsKICAgICAgICAgICAgJGtleSA9IFx0cmltKCRjb29raWVQYXJ0c1swXSk7CiAgICAgICAgICAgICR2YWx1ZSA9IGlzc2V0KCRjb29raWVQYXJ0c1sxXSkKICAgICAgICAgICAgICAgID8gXHRyaW0oJGNvb2tpZVBhcnRzWzFdLCAiIFxuXHJcdFwwXHgwQiIpCiAgICAgICAgICAgICAgICA6IHRydWU7CgogICAgICAgICAgICAvLyBPbmx5IGNoZWNrIGZvciBub24tY29va2llcyB3aGVuIGNvb2tpZXMgaGF2ZSBiZWVuIGZvdW5kCiAgICAgICAgICAgIGlmICghaXNzZXQoJGRhdGFbJ05hbWUnXSkpIHsKICAgICAgICAgICAgICAgICRkYXRhWydOYW1lJ10gPSAka2V5OwogICAgICAgICAgICAgICAgJGRhdGFbJ1ZhbHVlJ10gPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoIChcYXJyYXlfa2V5cyhzZWxmOjokZGVmYXVsdHMpIGFzICRzZWFyY2gpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIVxzdHJjYXNlY21wKCRzZWFyY2gsICRrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2VhcmNoID09PSAnTWF4LUFnZScpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc19udW1lcmljKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGF0YVskc2VhcmNoXSA9IChpbnQpICR2YWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCRzZWFyY2ggPT09ICdTZWN1cmUnIHx8ICRzZWFyY2ggPT09ICdEaXNjYXJkJyB8fCAkc2VhcmNoID09PSAnSHR0cE9ubHknKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFbJHNlYXJjaF0gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRhdGFbJHNlYXJjaF0gPSAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkZGF0YVska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGF0YSBBcnJheSBvZiBjb29raWUgZGF0YSBwcm92aWRlZCBieSBhIENvb2tpZSBwYXJzZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRkYXRhID0gW10pCiAgICB7CiAgICAgICAgJHRoaXMtPmRhdGEgPSBzZWxmOjokZGVmYXVsdHM7CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnTmFtZSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0TmFtZSgkZGF0YVsnTmFtZSddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnVmFsdWUnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFZhbHVlKCRkYXRhWydWYWx1ZSddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnRG9tYWluJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXREb21haW4oJGRhdGFbJ0RvbWFpbiddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnUGF0aCddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0UGF0aCgkZGF0YVsnUGF0aCddKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsnTWF4LUFnZSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0TWF4QWdlKCRkYXRhWydNYXgtQWdlJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydFeHBpcmVzJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKCRkYXRhWydFeHBpcmVzJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydTZWN1cmUnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFNlY3VyZSgkZGF0YVsnU2VjdXJlJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydEaXNjYXJkJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXREaXNjYXJkKCRkYXRhWydEaXNjYXJkJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydIdHRwT25seSddKSkgewogICAgICAgICAgICAkdGhpcy0+c2V0SHR0cE9ubHkoJGRhdGFbJ0h0dHBPbmx5J10pOwogICAgICAgIH0KCiAgICAgICAgLy8gU2V0IHRoZSByZW1haW5pbmcgdmFsdWVzIHRoYXQgZG9uJ3QgaGF2ZSBleHRyYSB2YWxpZGF0aW9uIGxvZ2ljCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfZGlmZihhcnJheV9rZXlzKCRkYXRhKSwgYXJyYXlfa2V5cyhzZWxmOjokZGVmYXVsdHMpKSBhcyAka2V5KSB7CiAgICAgICAgICAgICR0aGlzLT5kYXRhWyRrZXldID0gJGRhdGFbJGtleV07CiAgICAgICAgfQoKICAgICAgICAvLyBFeHRyYWN0IHRoZSBFeHBpcmVzIHZhbHVlIGFuZCB0dXJuIGl0IGludG8gYSBVTklYIHRpbWVzdGFtcCBpZiBuZWVkZWQKICAgICAgICBpZiAoISR0aGlzLT5nZXRFeHBpcmVzKCkgJiYgJHRoaXMtPmdldE1heEFnZSgpKSB7CiAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgRXhwaXJlcyBkYXRlCiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKFx0aW1lKCkgKyAkdGhpcy0+Z2V0TWF4QWdlKCkpOwogICAgICAgIH0gZWxzZWlmIChudWxsICE9PSAoJGV4cGlyZXMgPSAkdGhpcy0+Z2V0RXhwaXJlcygpKSAmJiAhXGlzX251bWVyaWMoJGV4cGlyZXMpKSB7CiAgICAgICAgICAgICR0aGlzLT5zZXRFeHBpcmVzKCRleHBpcmVzKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRzdHIgPSAkdGhpcy0+ZGF0YVsnTmFtZSddLic9Jy4oJHRoaXMtPmRhdGFbJ1ZhbHVlJ10gPz8gJycpLic7ICc7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRhdGEgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgaWYgKCRrICE9PSAnTmFtZScgJiYgJGsgIT09ICdWYWx1ZScgJiYgJHYgIT09IG51bGwgJiYgJHYgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBpZiAoJGsgPT09ICdFeHBpcmVzJykgewogICAgICAgICAgICAgICAgICAgICRzdHIgLj0gJ0V4cGlyZXM9Jy5cZ21kYXRlKCdELCBkIE0gWSBIOmk6cyBcR1xNXFQnLCAkdikuJzsgJzsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJHN0ciAuPSAoJHYgPT09IHRydWUgPyAkayA6ICJ7JGt9PXskdn0iKS4nOyAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXHJ0cmltKCRzdHIsICc7ICcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBjb29raWUgbmFtZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TmFtZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydOYW1lJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGNvb2tpZSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ29va2llIG5hbWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldE5hbWUoJG5hbWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJG5hbWUpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIHN0cmluZyB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGF0YVsnTmFtZSddID0gKHN0cmluZykgJG5hbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGNvb2tpZSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRWYWx1ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydWYWx1ZSddOwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBjb29raWUgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUgQ29va2llIHZhbHVlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRWYWx1ZSgkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHZhbHVlKSkgewogICAgICAgICAgICB0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjQnLCAnTm90IHBhc3NpbmcgYSBzdHJpbmcgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBjYXVzZSBhbiBlcnJvciBpbiA4LjAuJywgX19DTEFTU19fLCBfX0ZVTkNUSU9OX18pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRhdGFbJ1ZhbHVlJ10gPSAoc3RyaW5nKSAkdmFsdWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGRvbWFpbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREb21haW4oKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+ZGF0YVsnRG9tYWluJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGRvbWFpbiBvZiB0aGUgY29va2llLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZG9tYWluCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREb21haW4oJGRvbWFpbik6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkZG9tYWluKSAmJiBudWxsICE9PSAkZG9tYWluKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIHN0cmluZyBvciBudWxsIHRvICVzOjolcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgaW4gOC4wLicsIF9fQ0xBU1NfXywgX19GVU5DVElPTl9fKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5kYXRhWydEb21haW4nXSA9IG51bGwgPT09ICRkb21haW4gPyBudWxsIDogKHN0cmluZykgJGRvbWFpbjsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcGF0aC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UGF0aCgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydQYXRoJ107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHBhdGggb2YgdGhlIGNvb2tpZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFBhdGggb2YgdGhlIGNvb2tpZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UGF0aCgkcGF0aCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkcGF0aCkpIHsKICAgICAgICAgICAgdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy40JywgJ05vdCBwYXNzaW5nIGEgc3RyaW5nIHRvICVzOjolcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgaW4gOC4wLicsIF9fQ0xBU1NfXywgX19GVU5DVElPTl9fKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5kYXRhWydQYXRoJ10gPSAoc3RyaW5nKSAkcGF0aDsKICAgIH0KCiAgICAvKioKICAgICAqIE1heGltdW0gbGlmZXRpbWUgb2YgdGhlIGNvb2tpZSBpbiBzZWNvbmRzLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1heEFnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIG51bGwgPT09ICR0aGlzLT5kYXRhWydNYXgtQWdlJ10gPyBudWxsIDogKGludCkgJHRoaXMtPmRhdGFbJ01heC1BZ2UnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgbWF4LWFnZSBvZiB0aGUgY29va2llLgogICAgICoKICAgICAqIEBwYXJhbSBpbnR8bnVsbCAkbWF4QWdlIE1heCBhZ2Ugb2YgdGhlIGNvb2tpZSBpbiBzZWNvbmRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRNYXhBZ2UoJG1heEFnZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWlzX2ludCgkbWF4QWdlKSAmJiBudWxsICE9PSAkbWF4QWdlKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhbiBpbnQgb3IgbnVsbCB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGF0YVsnTWF4LUFnZSddID0gJG1heEFnZSA9PT0gbnVsbCA/IG51bGwgOiAoaW50KSAkbWF4QWdlOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIFVOSVggdGltZXN0YW1wIHdoZW4gdGhlIGNvb2tpZSBFeHBpcmVzLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nfGludHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHBpcmVzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ0V4cGlyZXMnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgdW5peCB0aW1lc3RhbXAgZm9yIHdoaWNoIHRoZSBjb29raWUgd2lsbCBleHBpcmUuCiAgICAgKgogICAgICogQHBhcmFtIGludHxzdHJpbmd8bnVsbCAkdGltZXN0YW1wIFVuaXggdGltZXN0YW1wIG9yIGFueSBFbmdsaXNoIHRleHR1YWwgZGF0ZXRpbWUgZGVzY3JpcHRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRFeHBpcmVzKCR0aW1lc3RhbXApOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19pbnQoJHRpbWVzdGFtcCkgJiYgIWlzX3N0cmluZygkdGltZXN0YW1wKSAmJiBudWxsICE9PSAkdGltZXN0YW1wKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhbiBpbnQsIHN0cmluZyBvciBudWxsIHRvICVzOjolcygpIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgY2F1c2UgYW4gZXJyb3IgaW4gOC4wLicsIF9fQ0xBU1NfXywgX19GVU5DVElPTl9fKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5kYXRhWydFeHBpcmVzJ10gPSBudWxsID09PSAkdGltZXN0YW1wID8gbnVsbCA6IChcaXNfbnVtZXJpYygkdGltZXN0YW1wKSA/IChpbnQpICR0aW1lc3RhbXAgOiBcc3RydG90aW1lKChzdHJpbmcpICR0aW1lc3RhbXApKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGEgc2VjdXJlIGNvb2tpZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNlY3VyZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5kYXRhWydTZWN1cmUnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB3aGV0aGVyIG9yIG5vdCB0aGUgY29va2llIGlzIHNlY3VyZS4KICAgICAqCiAgICAgKiBAcGFyYW0gYm9vbCAkc2VjdXJlIFNldCB0byB0cnVlIG9yIGZhbHNlIGlmIHNlY3VyZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U2VjdXJlKCRzZWN1cmUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19ib29sKCRzZWN1cmUpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIGJvb2wgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBjYXVzZSBhbiBlcnJvciBpbiA4LjAuJywgX19DTEFTU19fLCBfX0ZVTkNUSU9OX18pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRhdGFbJ1NlY3VyZSddID0gKGJvb2wpICRzZWN1cmU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhIHNlc3Npb24gY29va2llLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXREaXNjYXJkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ0Rpc2NhcmQnXTsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB3aGV0aGVyIG9yIG5vdCB0aGlzIGlzIGEgc2Vzc2lvbiBjb29raWUuCiAgICAgKgogICAgICogQHBhcmFtIGJvb2wgJGRpc2NhcmQgU2V0IHRvIHRydWUgb3IgZmFsc2UgaWYgdGhpcyBpcyBhIHNlc3Npb24gY29va2llCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREaXNjYXJkKCRkaXNjYXJkKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfYm9vbCgkZGlzY2FyZCkpIHsKICAgICAgICAgICAgdHJpZ2dlcl9kZXByZWNhdGlvbignZ3V6emxlaHR0cC9ndXp6bGUnLCAnNy40JywgJ05vdCBwYXNzaW5nIGEgYm9vbCB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZGF0YVsnRGlzY2FyZCddID0gKGJvb2wpICRkaXNjYXJkOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHdoZXRoZXIgb3Igbm90IHRoaXMgaXMgYW4gSFRUUCBvbmx5IGNvb2tpZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEh0dHBPbmx5KCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRhdGFbJ0h0dHBPbmx5J107CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgd2hldGhlciBvciBub3QgdGhpcyBpcyBhbiBIVFRQIG9ubHkgY29va2llLgogICAgICoKICAgICAqIEBwYXJhbSBib29sICRodHRwT25seSBTZXQgdG8gdHJ1ZSBvciBmYWxzZSBpZiB0aGlzIGlzIEhUVFAgb25seQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0SHR0cE9ubHkoJGh0dHBPbmx5KTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfYm9vbCgkaHR0cE9ubHkpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIGJvb2wgdG8gJXM6OiVzKCkgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBjYXVzZSBhbiBlcnJvciBpbiA4LjAuJywgX19DTEFTU19fLCBfX0ZVTkNUSU9OX18pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmRhdGFbJ0h0dHBPbmx5J10gPSAoYm9vbCkgJGh0dHBPbmx5OwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgdGhlIGNvb2tpZSBtYXRjaGVzIGEgcGF0aCB2YWx1ZS4KICAgICAqCiAgICAgKiBBIHJlcXVlc3QtcGF0aCBwYXRoLW1hdGNoZXMgYSBnaXZlbiBjb29raWUtcGF0aCBpZiBhdCBsZWFzdCBvbmUgb2YKICAgICAqIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBob2xkczoKICAgICAqCiAgICAgKiAtIFRoZSBjb29raWUtcGF0aCBhbmQgdGhlIHJlcXVlc3QtcGF0aCBhcmUgaWRlbnRpY2FsLgogICAgICogLSBUaGUgY29va2llLXBhdGggaXMgYSBwcmVmaXggb2YgdGhlIHJlcXVlc3QtcGF0aCwgYW5kIHRoZSBsYXN0CiAgICAgKiAgIGNoYXJhY3RlciBvZiB0aGUgY29va2llLXBhdGggaXMgJXgyRiAoIi8iKS4KICAgICAqIC0gVGhlIGNvb2tpZS1wYXRoIGlzIGEgcHJlZml4IG9mIHRoZSByZXF1ZXN0LXBhdGgsIGFuZCB0aGUgZmlyc3QKICAgICAqICAgY2hhcmFjdGVyIG9mIHRoZSByZXF1ZXN0LXBhdGggdGhhdCBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIGNvb2tpZS0KICAgICAqICAgcGF0aCBpcyBhICV4MkYgKCIvIikgY2hhcmFjdGVyLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJlcXVlc3RQYXRoIFBhdGggdG8gY2hlY2sgYWdhaW5zdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbWF0Y2hlc1BhdGgoc3RyaW5nICRyZXF1ZXN0UGF0aCk6IGJvb2wKICAgIHsKICAgICAgICAkY29va2llUGF0aCA9ICR0aGlzLT5nZXRQYXRoKCk7CgogICAgICAgIC8vIE1hdGNoIG9uIGV4YWN0IG1hdGNoZXMgb3Igd2hlbiBwYXRoIGlzIHRoZSBkZWZhdWx0IGVtcHR5ICIvIgogICAgICAgIGlmICgkY29va2llUGF0aCA9PT0gJy8nIHx8ICRjb29raWVQYXRoID09ICRyZXF1ZXN0UGF0aCkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBjb29raWUtcGF0aCBpcyBhIHByZWZpeCBvZiB0aGUgcmVxdWVzdCBwYXRoLgogICAgICAgIGlmICgwICE9PSBcc3RycG9zKCRyZXF1ZXN0UGF0aCwgJGNvb2tpZVBhdGgpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIC8vIE1hdGNoIGlmIHRoZSBsYXN0IGNoYXJhY3RlciBvZiB0aGUgY29va2llLXBhdGggaXMgIi8iCiAgICAgICAgaWYgKFxzdWJzdHIoJGNvb2tpZVBhdGgsIC0xLCAxKSA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gTWF0Y2ggaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBub3QgaW5jbHVkZWQgaW4gY29va2llIHBhdGggaXMgIi8iCiAgICAgICAgcmV0dXJuIFxzdWJzdHIoJHJlcXVlc3RQYXRoLCBcc3RybGVuKCRjb29raWVQYXRoKSwgMSkgPT09ICcvJzsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIHRoZSBjb29raWUgbWF0Y2hlcyBhIGRvbWFpbiB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkb21haW4gRG9tYWluIHRvIGNoZWNrIGFnYWluc3QKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1hdGNoZXNEb21haW4oc3RyaW5nICRkb21haW4pOiBib29sCiAgICB7CiAgICAgICAgJGNvb2tpZURvbWFpbiA9ICR0aGlzLT5nZXREb21haW4oKTsKICAgICAgICBpZiAobnVsbCA9PT0gJGNvb2tpZURvbWFpbikgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIC8vIFJlbW92ZSB0aGUgbGVhZGluZyAnLicgYXMgcGVyIHNwZWMgaW4gUkZDIDYyNjUuCiAgICAgICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4yLjMKICAgICAgICAkY29va2llRG9tYWluID0gXGx0cmltKFxzdHJ0b2xvd2VyKCRjb29raWVEb21haW4pLCAnLicpOwoKICAgICAgICAkZG9tYWluID0gXHN0cnRvbG93ZXIoJGRvbWFpbik7CgogICAgICAgIC8vIERvbWFpbiBub3Qgc2V0IG9yIGV4YWN0IG1hdGNoLgogICAgICAgIGlmICgnJyA9PT0gJGNvb2tpZURvbWFpbiB8fCAkZG9tYWluID09PSAkY29va2llRG9tYWluKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gTWF0Y2hpbmcgdGhlIHN1YmRvbWFpbiBhY2NvcmRpbmcgdG8gUkZDIDYyNjUuCiAgICAgICAgLy8gaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM2MjY1I3NlY3Rpb24tNS4xLjMKICAgICAgICBpZiAoXGZpbHRlcl92YXIoJGRvbWFpbiwgXEZJTFRFUl9WQUxJREFURV9JUCkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIChib29sKSBccHJlZ19tYXRjaCgnL1wuJy5ccHJlZ19xdW90ZSgkY29va2llRG9tYWluLCAnLycpLickLycsICRkb21haW4pOwogICAgfQoKICAgIC8qKgogICAgICogQ2hlY2sgaWYgdGhlIGNvb2tpZSBpcyBleHBpcmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFeHBpcmVkKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldEV4cGlyZXMoKSAhPT0gbnVsbCAmJiBcdGltZSgpID4gJHRoaXMtPmdldEV4cGlyZXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIHRoZSBjb29raWUgaXMgdmFsaWQgYWNjb3JkaW5nIHRvIFJGQyA2MjY1LgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxzdHJpbmcgUmV0dXJucyB0cnVlIGlmIHZhbGlkIG9yIGFuIGVycm9yIG1lc3NhZ2UgaWYgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdmFsaWRhdGUoKQogICAgewogICAgICAgICRuYW1lID0gJHRoaXMtPmdldE5hbWUoKTsKICAgICAgICBpZiAoJG5hbWUgPT09ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAnVGhlIGNvb2tpZSBuYW1lIG11c3Qgbm90IGJlIGVtcHR5JzsKICAgICAgICB9CgogICAgICAgIC8vIENoZWNrIGlmIGFueSBvZiB0aGUgaW52YWxpZCBjaGFyYWN0ZXJzIGFyZSBwcmVzZW50IGluIHRoZSBjb29raWUgbmFtZQogICAgICAgIGlmIChccHJlZ19tYXRjaCgKICAgICAgICAgICAgJy9bXHgwMC1ceDIwXHgyMlx4MjgtXHgyOVx4MmNceDJmXHgzYS1ceDQwXHg1Y1x4N2JceDdkXHg3Zl0vJywKICAgICAgICAgICAgJG5hbWUKICAgICAgICApKSB7CiAgICAgICAgICAgIHJldHVybiAnQ29va2llIG5hbWUgbXVzdCBub3QgY29udGFpbiBpbnZhbGlkIGNoYXJhY3RlcnM6IEFTQ0lJICcKICAgICAgICAgICAgICAgIC4nQ29udHJvbCBjaGFyYWN0ZXJzICgwLTMxOzEyNyksIHNwYWNlLCB0YWIgYW5kIHRoZSAnCiAgICAgICAgICAgICAgICAuJ2ZvbGxvd2luZyBjaGFyYWN0ZXJzOiAoKTw+QCw7OlwiLz89e30nOwogICAgICAgIH0KCiAgICAgICAgLy8gVmFsdWUgbXVzdCBub3QgYmUgbnVsbC4gMCBhbmQgZW1wdHkgc3RyaW5nIGFyZSB2YWxpZC4gRW1wdHkgc3RyaW5ncwogICAgICAgIC8vIGFyZSB0ZWNobmljYWxseSBhZ2FpbnN0IFJGQyA2MjY1LCBidXQga25vd24gdG8gaGFwcGVuIGluIHRoZSB3aWxkLgogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5nZXRWYWx1ZSgpOwogICAgICAgIGlmICgkdmFsdWUgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICdUaGUgY29va2llIHZhbHVlIG11c3Qgbm90IGJlIGVtcHR5JzsKICAgICAgICB9CgogICAgICAgIC8vIERvbWFpbnMgbXVzdCBub3QgYmUgZW1wdHksIGJ1dCBjYW4gYmUgMC4gIjAiIGlzIG5vdCBhIHZhbGlkIGludGVybmV0CiAgICAgICAgLy8gZG9tYWluLCBidXQgbWF5IGJlIHVzZWQgYXMgc2VydmVyIG5hbWUgaW4gYSBwcml2YXRlIG5ldHdvcmsuCiAgICAgICAgJGRvbWFpbiA9ICR0aGlzLT5nZXREb21haW4oKTsKICAgICAgICBpZiAoJGRvbWFpbiA9PT0gbnVsbCB8fCAkZG9tYWluID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gJ1RoZSBjb29raWUgZG9tYWluIG11c3Qgbm90IGJlIGVtcHR5JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQp9Cg==]]></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[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIEV4Y2VwdGlvbiB3aGVuIGFuIEhUVFAgZXJyb3Igb2NjdXJzICg0eHggb3IgNXh4IGVycm9yKQogKi8KY2xhc3MgQmFkUmVzcG9uc2VFeGNlcHRpb24gZXh0ZW5kcyBSZXF1ZXN0RXhjZXB0aW9uCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG1lc3NhZ2UsCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UsCiAgICAgICAgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCwKICAgICAgICBhcnJheSAkaGFuZGxlckNvbnRleHQgPSBbXQogICAgKSB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgJHJlcXVlc3QsICRyZXNwb25zZSwgJHByZXZpb3VzLCAkaGFuZGxlckNvbnRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogQ3VycmVudCBleGNlcHRpb24gYW5kIHRoZSBvbmVzIHRoYXQgZXh0ZW5kIGl0IHdpbGwgYWx3YXlzIGhhdmUgYSByZXNwb25zZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Jlc3BvbnNlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgZnVuY3Rpb24gbmFycm93cyB0aGUgcmV0dXJuIHR5cGUgZnJvbSB0aGUgcGFyZW50IGNsYXNzIGFuZCBkb2VzIG5vdCBhbGxvdyBpdCB0byBiZSBudWxsYWJsZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3BvbnNlKCk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLyoqIEB2YXIgUmVzcG9uc2VJbnRlcmZhY2UgKi8KICAgICAgICByZXR1cm4gcGFyZW50OjpnZXRSZXNwb25zZSgpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ClientException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCi8qKgogKiBFeGNlcHRpb24gd2hlbiBhIGNsaWVudCBlcnJvciBpcyBlbmNvdW50ZXJlZCAoNHh4IGNvZGVzKQogKi8KY2xhc3MgQ2xpZW50RXhjZXB0aW9uIGV4dGVuZHMgQmFkUmVzcG9uc2VFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ConnectException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBQc3JcSHR0cFxDbGllbnRcTmV0d29ya0V4Y2VwdGlvbkludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gYSBjb25uZWN0aW9uIGNhbm5vdCBiZSBlc3RhYmxpc2hlZC4KICoKICogTm90ZSB0aGF0IG5vIHJlc3BvbnNlIGlzIHByZXNlbnQgZm9yIGEgQ29ubmVjdEV4Y2VwdGlvbgogKi8KY2xhc3MgQ29ubmVjdEV4Y2VwdGlvbiBleHRlbmRzIFRyYW5zZmVyRXhjZXB0aW9uIGltcGxlbWVudHMgTmV0d29ya0V4Y2VwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRyZXF1ZXN0OwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRoYW5kbGVyQ29udGV4dDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgc3RyaW5nICRtZXNzYWdlLAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgP1xUaHJvd2FibGUgJHByZXZpb3VzID0gbnVsbCwKICAgICAgICBhcnJheSAkaGFuZGxlckNvbnRleHQgPSBbXQogICAgKSB7CiAgICAgICAgcGFyZW50OjpfX2NvbnN0cnVjdCgkbWVzc2FnZSwgMCwgJHByZXZpb3VzKTsKICAgICAgICAkdGhpcy0+cmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5oYW5kbGVyQ29udGV4dCA9ICRoYW5kbGVyQ29udGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgcmVxdWVzdCB0aGF0IGNhdXNlZCB0aGUgZXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0KCk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXJyb3IgZnJvbSB0aGUgdW5kZXJseWluZyBoYW5kbGVyLgogICAgICoKICAgICAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGFycmF5IHdpbGwgdmFyeSBkZXBlbmRpbmcgb24gd2hpY2ggaGFuZGxlciB5b3UgYXJlCiAgICAgKiB1c2luZy4gSXQgbWF5IGFsc28gYmUganVzdCBhbiBlbXB0eSBhcnJheS4gUmVseWluZyBvbiB0aGlzIGRhdGEgd2lsbAogICAgICogY291cGxlIHlvdSB0byBhIHNwZWNpZmljIGhhbmRsZXIsIGJ1dCBjYW4gZ2l2ZSBtb3JlIGRlYnVnIGluZm9ybWF0aW9uCiAgICAgKiB3aGVuIG5lZWRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhhbmRsZXJDb250ZXh0KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyQ29udGV4dDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/GuzzleException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBQc3JcSHR0cFxDbGllbnRcQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlOwoKaW50ZXJmYWNlIEd1enpsZUV4Y2VwdGlvbiBleHRlbmRzIENsaWVudEV4Y2VwdGlvbkludGVyZmFjZQp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/InvalidArgumentException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCmZpbmFsIGNsYXNzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBleHRlbmRzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaW1wbGVtZW50cyBHdXp6bGVFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/RequestException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCnVzZSBHdXp6bGVIdHRwXEJvZHlTdW1tYXJpemVyOwp1c2UgR3V6emxlSHR0cFxCb2R5U3VtbWFyaXplckludGVyZmFjZTsKdXNlIFBzclxIdHRwXENsaWVudFxSZXF1ZXN0RXhjZXB0aW9uSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCi8qKgogKiBIVFRQIFJlcXVlc3QgZXhjZXB0aW9uCiAqLwpjbGFzcyBSZXF1ZXN0RXhjZXB0aW9uIGV4dGVuZHMgVHJhbnNmZXJFeGNlcHRpb24gaW1wbGVtZW50cyBSZXF1ZXN0RXhjZXB0aW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHZhciBSZXF1ZXN0SW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJHJlcXVlc3Q7CgogICAgLyoqCiAgICAgKiBAdmFyIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcmVzcG9uc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhhbmRsZXJDb250ZXh0OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG1lc3NhZ2UsCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICA/UmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsLAogICAgICAgIGFycmF5ICRoYW5kbGVyQ29udGV4dCA9IFtdCiAgICApIHsKICAgICAgICAvLyBTZXQgdGhlIGNvZGUgb2YgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzcG9uc2UgaXMgc2V0IGFuZCBub3QgZnV0dXJlLgogICAgICAgICRjb2RlID0gJHJlc3BvbnNlID8gJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkgOiAwOwogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoJG1lc3NhZ2UsICRjb2RlLCAkcHJldmlvdXMpOwogICAgICAgICR0aGlzLT5yZXF1ZXN0ID0gJHJlcXVlc3Q7CiAgICAgICAgJHRoaXMtPnJlc3BvbnNlID0gJHJlc3BvbnNlOwogICAgICAgICR0aGlzLT5oYW5kbGVyQ29udGV4dCA9ICRoYW5kbGVyQ29udGV4dDsKICAgIH0KCiAgICAvKioKICAgICAqIFdyYXAgbm9uLVJlcXVlc3RFeGNlcHRpb25zIHdpdGggYSBSZXF1ZXN0RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd3JhcEV4Y2VwdGlvbihSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBcVGhyb3dhYmxlICRlKTogUmVxdWVzdEV4Y2VwdGlvbgogICAgewogICAgICAgIHJldHVybiAkZSBpbnN0YW5jZW9mIFJlcXVlc3RFeGNlcHRpb24gPyAkZSA6IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKCRlLT5nZXRNZXNzYWdlKCksICRyZXF1ZXN0LCBudWxsLCAkZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBGYWN0b3J5IG1ldGhvZCB0byBjcmVhdGUgYSBuZXcgZXhjZXB0aW9uIHdpdGggYSBub3JtYWxpemVkIGVycm9yIG1lc3NhZ2UKICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAgICAgICAgICAgICAkcmVxdWVzdCAgICAgICAgUmVxdWVzdCBzZW50CiAgICAgKiBAcGFyYW0gUmVzcG9uc2VJbnRlcmZhY2UgICAgICAgICAgICAkcmVzcG9uc2UgICAgICAgUmVzcG9uc2UgcmVjZWl2ZWQKICAgICAqIEBwYXJhbSBcVGhyb3dhYmxlfG51bGwgICAgICAgICAgICAgICRwcmV2aW91cyAgICAgICBQcmV2aW91cyBleGNlcHRpb24KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICAgICAgICRoYW5kbGVyQ29udGV4dCBPcHRpb25hbCBoYW5kbGVyIGNvbnRleHQKICAgICAqIEBwYXJhbSBCb2R5U3VtbWFyaXplckludGVyZmFjZXxudWxsICRib2R5U3VtbWFyaXplciBPcHRpb25hbCBib2R5IHN1bW1hcml6ZXIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoCiAgICAgICAgUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwKICAgICAgICA/UmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwKICAgICAgICA/XFRocm93YWJsZSAkcHJldmlvdXMgPSBudWxsLAogICAgICAgIGFycmF5ICRoYW5kbGVyQ29udGV4dCA9IFtdLAogICAgICAgID9Cb2R5U3VtbWFyaXplckludGVyZmFjZSAkYm9keVN1bW1hcml6ZXIgPSBudWxsCiAgICApOiBzZWxmIHsKICAgICAgICBpZiAoISRyZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICAnRXJyb3IgY29tcGxldGluZyByZXF1ZXN0JywKICAgICAgICAgICAgICAgICRyZXF1ZXN0LAogICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICRwcmV2aW91cywKICAgICAgICAgICAgICAgICRoYW5kbGVyQ29udGV4dAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJGxldmVsID0gKGludCkgXGZsb29yKCRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpIC8gMTAwKTsKICAgICAgICBpZiAoJGxldmVsID09PSA0KSB7CiAgICAgICAgICAgICRsYWJlbCA9ICdDbGllbnQgZXJyb3InOwogICAgICAgICAgICAkY2xhc3NOYW1lID0gQ2xpZW50RXhjZXB0aW9uOjpjbGFzczsKICAgICAgICB9IGVsc2VpZiAoJGxldmVsID09PSA1KSB7CiAgICAgICAgICAgICRsYWJlbCA9ICdTZXJ2ZXIgZXJyb3InOwogICAgICAgICAgICAkY2xhc3NOYW1lID0gU2VydmVyRXhjZXB0aW9uOjpjbGFzczsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGFiZWwgPSAnVW5zdWNjZXNzZnVsIHJlcXVlc3QnOwogICAgICAgICAgICAkY2xhc3NOYW1lID0gX19DTEFTU19fOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9IFxHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnJlZGFjdFVzZXJJbmZvKCRyZXF1ZXN0LT5nZXRVcmkoKSk7CgogICAgICAgIC8vIENsaWVudCBFcnJvcjogYEdFVCAvYCByZXN1bHRlZCBpbiBhIGA0MDQgTm90IEZvdW5kYCByZXNwb25zZToKICAgICAgICAvLyA8aHRtbD4gLi4uICh0cnVuY2F0ZWQpCiAgICAgICAgJG1lc3NhZ2UgPSBcc3ByaW50ZigKICAgICAgICAgICAgJyVzOiBgJXMgJXNgIHJlc3VsdGVkIGluIGEgYCVzICVzYCByZXNwb25zZScsCiAgICAgICAgICAgICRsYWJlbCwKICAgICAgICAgICAgJHJlcXVlc3QtPmdldE1ldGhvZCgpLAogICAgICAgICAgICAkdXJpLT5fX3RvU3RyaW5nKCksCiAgICAgICAgICAgICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpLAogICAgICAgICAgICAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpCiAgICAgICAgKTsKCiAgICAgICAgJHN1bW1hcnkgPSAoJGJvZHlTdW1tYXJpemVyID8/IG5ldyBCb2R5U3VtbWFyaXplcigpKS0+c3VtbWFyaXplKCRyZXNwb25zZSk7CgogICAgICAgIGlmICgkc3VtbWFyeSAhPT0gbnVsbCkgewogICAgICAgICAgICAkbWVzc2FnZSAuPSAiOlxueyRzdW1tYXJ5fVxuIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgJGNsYXNzTmFtZSgkbWVzc2FnZSwgJHJlcXVlc3QsICRyZXNwb25zZSwgJHByZXZpb3VzLCAkaGFuZGxlckNvbnRleHQpOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBleGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlcXVlc3QoKTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgYXNzb2NpYXRlZCByZXNwb25zZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVzcG9uc2UoKTogP1Jlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXNwb25zZTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGlmIGEgcmVzcG9uc2Ugd2FzIHJlY2VpdmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNSZXNwb25zZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXNwb25zZSAhPT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBjb250ZXh0dWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvciBmcm9tIHRoZSB1bmRlcmx5aW5nIGhhbmRsZXIuCiAgICAgKgogICAgICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgYXJyYXkgd2lsbCB2YXJ5IGRlcGVuZGluZyBvbiB3aGljaCBoYW5kbGVyIHlvdSBhcmUKICAgICAqIHVzaW5nLiBJdCBtYXkgYWxzbyBiZSBqdXN0IGFuIGVtcHR5IGFycmF5LiBSZWx5aW5nIG9uIHRoaXMgZGF0YSB3aWxsCiAgICAgKiBjb3VwbGUgeW91IHRvIGEgc3BlY2lmaWMgaGFuZGxlciwgYnV0IGNhbiBnaXZlIG1vcmUgZGVidWcgaW5mb3JtYXRpb24KICAgICAqIHdoZW4gbmVlZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGFuZGxlckNvbnRleHQoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmhhbmRsZXJDb250ZXh0OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/ServerException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCi8qKgogKiBFeGNlcHRpb24gd2hlbiBhIHNlcnZlciBlcnJvciBpcyBlbmNvdW50ZXJlZCAoNXh4IGNvZGVzKQogKi8KY2xhc3MgU2VydmVyRXhjZXB0aW9uIGV4dGVuZHMgQmFkUmVzcG9uc2VFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/TooManyRedirectsException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCmNsYXNzIFRvb01hbnlSZWRpcmVjdHNFeGNlcHRpb24gZXh0ZW5kcyBSZXF1ZXN0RXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Exception/TransferException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEV4Y2VwdGlvbjsKCmNsYXNzIFRyYW5zZmVyRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24gaW1wbGVtZW50cyBHdXp6bGVFeGNlcHRpb24Kewp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/functions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKLyoqCiAqIERlYnVnIGZ1bmN0aW9uIHVzZWQgdG8gZGVzY3JpYmUgdGhlIHByb3ZpZGVkIHZhbHVlIHR5cGUgYW5kIGNsYXNzLgogKgogKiBAcGFyYW0gbWl4ZWQgJGlucHV0IEFueSB0eXBlIG9mIHZhcmlhYmxlIHRvIGRlc2NyaWJlIHRoZSB0eXBlIG9mLiBUaGlzCiAqICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIG1pc3NlcyBhIHR5cGVoaW50IGJlY2F1c2Ugb2YgdGhhdC4KICoKICogQHJldHVybiBzdHJpbmcgUmV0dXJucyBhIHN0cmluZyBjb250YWluaW5nIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZSBhbmQKICogICAgICAgICAgICAgICAgaWYgYSBjbGFzcyBpcyBwcm92aWRlZCwgdGhlIGNsYXNzIG5hbWUuCiAqCiAqIEBkZXByZWNhdGVkIGRlc2NyaWJlX3R5cGUgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpkZXNjcmliZVR5cGUgaW5zdGVhZC4KICovCmZ1bmN0aW9uIGRlc2NyaWJlX3R5cGUoJGlucHV0KTogc3RyaW5nCnsKICAgIHJldHVybiBVdGlsczo6ZGVzY3JpYmVUeXBlKCRpbnB1dCk7Cn0KCi8qKgogKiBQYXJzZXMgYW4gYXJyYXkgb2YgaGVhZGVyIGxpbmVzIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgaGVhZGVycy4KICoKICogQHBhcmFtIGl0ZXJhYmxlICRsaW5lcyBIZWFkZXIgbGluZXMgYXJyYXkgb2Ygc3RyaW5ncyBpbiB0aGUgZm9sbG93aW5nCiAqICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0OiAiTmFtZTogVmFsdWUiCiAqCiAqIEBkZXByZWNhdGVkIGhlYWRlcnNfZnJvbV9saW5lcyB3aWxsIGJlIHJlbW92ZWQgaW4gZ3V6emxlaHR0cC9ndXp6bGU6OC4wLiBVc2UgVXRpbHM6OmhlYWRlcnNGcm9tTGluZXMgaW5zdGVhZC4KICovCmZ1bmN0aW9uIGhlYWRlcnNfZnJvbV9saW5lcyhpdGVyYWJsZSAkbGluZXMpOiBhcnJheQp7CiAgICByZXR1cm4gVXRpbHM6OmhlYWRlcnNGcm9tTGluZXMoJGxpbmVzKTsKfQoKLyoqCiAqIFJldHVybnMgYSBkZWJ1ZyBzdHJlYW0gYmFzZWQgb24gdGhlIHByb3ZpZGVkIHZhcmlhYmxlLgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIE9wdGlvbmFsIHZhbHVlCiAqCiAqIEByZXR1cm4gcmVzb3VyY2UKICoKICogQGRlcHJlY2F0ZWQgZGVidWdfcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpkZWJ1Z1Jlc291cmNlIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBkZWJ1Z19yZXNvdXJjZSgkdmFsdWUgPSBudWxsKQp7CiAgICByZXR1cm4gVXRpbHM6OmRlYnVnUmVzb3VyY2UoJHZhbHVlKTsKfQoKLyoqCiAqIENob29zZXMgYW5kIGNyZWF0ZXMgYSBkZWZhdWx0IGhhbmRsZXIgdG8gdXNlIGJhc2VkIG9uIHRoZSBlbnZpcm9ubWVudC4KICoKICogVGhlIHJldHVybmVkIGhhbmRsZXIgaXMgbm90IHdyYXBwZWQgYnkgYW55IGRlZmF1bHQgbWlkZGxld2FyZXMuCiAqCiAqIEByZXR1cm4gY2FsbGFibGUoXFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlXFByb21pc2VJbnRlcmZhY2UgUmV0dXJucyB0aGUgYmVzdCBoYW5kbGVyIGZvciB0aGUgZ2l2ZW4gc3lzdGVtLgogKgogKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIG5vIHZpYWJsZSBIYW5kbGVyIGlzIGF2YWlsYWJsZS4KICoKICogQGRlcHJlY2F0ZWQgY2hvb3NlX2hhbmRsZXIgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpjaG9vc2VIYW5kbGVyIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBjaG9vc2VfaGFuZGxlcigpOiBjYWxsYWJsZQp7CiAgICByZXR1cm4gVXRpbHM6OmNob29zZUhhbmRsZXIoKTsKfQoKLyoqCiAqIEdldCB0aGUgZGVmYXVsdCBVc2VyLUFnZW50IHN0cmluZyB0byB1c2Ugd2l0aCBHdXp6bGUuCiAqCiAqIEBkZXByZWNhdGVkIGRlZmF1bHRfdXNlcl9hZ2VudCB3aWxsIGJlIHJlbW92ZWQgaW4gZ3V6emxlaHR0cC9ndXp6bGU6OC4wLiBVc2UgVXRpbHM6OmRlZmF1bHRVc2VyQWdlbnQgaW5zdGVhZC4KICovCmZ1bmN0aW9uIGRlZmF1bHRfdXNlcl9hZ2VudCgpOiBzdHJpbmcKewogICAgcmV0dXJuIFV0aWxzOjpkZWZhdWx0VXNlckFnZW50KCk7Cn0KCi8qKgogKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGNhY2VydCBidW5kbGUgZm9yIHRoZSBjdXJyZW50IHN5c3RlbS4KICoKICogRmlyc3QsIHRoZSBvcGVuc3NsLmNhZmlsZSBhbmQgY3VybC5jYWluZm8gcGhwLmluaSBzZXR0aW5ncyBhcmUgY2hlY2tlZC4KICogSWYgdGhvc2Ugc2V0dGluZ3MgYXJlIG5vdCBjb25maWd1cmVkLCB0aGVuIHRoZSBjb21tb24gbG9jYXRpb25zIGZvcgogKiBidW5kbGVzIGZvdW5kIG9uIFJlZCBIYXQsIENlbnRPUywgRmVkb3JhLCBVYnVudHUsIERlYmlhbiwgRnJlZUJTRCwgT1MgWAogKiBhbmQgV2luZG93cyBhcmUgY2hlY2tlZC4gSWYgYW55IG9mIHRoZXNlIGZpbGUgbG9jYXRpb25zIGFyZSBmb3VuZCBvbgogKiBkaXNrLCB0aGV5IHdpbGwgYmUgdXRpbGl6ZWQuCiAqCiAqIE5vdGU6IHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCiAqCiAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgbm8gYnVuZGxlIGNhbiBiZSBmb3VuZC4KICoKICogQGRlcHJlY2F0ZWQgZGVmYXVsdF9jYV9idW5kbGUgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVGhpcyBmdW5jdGlvbiBpcyBub3QgbmVlZGVkIGluIFBIUCA1LjYrLgogKi8KZnVuY3Rpb24gZGVmYXVsdF9jYV9idW5kbGUoKTogc3RyaW5nCnsKICAgIHJldHVybiBVdGlsczo6ZGVmYXVsdENhQnVuZGxlKCk7Cn0KCi8qKgogKiBDcmVhdGVzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIGxvd2VyY2FzZSBoZWFkZXIgbmFtZXMgdG8gdGhlIGFjdHVhbAogKiBoZWFkZXIgY2FzaW5nLgogKgogKiBAZGVwcmVjYXRlZCBub3JtYWxpemVfaGVhZGVyX2tleXMgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpub3JtYWxpemVIZWFkZXJLZXlzIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBub3JtYWxpemVfaGVhZGVyX2tleXMoYXJyYXkgJGhlYWRlcnMpOiBhcnJheQp7CiAgICByZXR1cm4gVXRpbHM6Om5vcm1hbGl6ZUhlYWRlcktleXMoJGhlYWRlcnMpOwp9CgovKioKICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlZCBob3N0IG1hdGNoZXMgYW55IG9mIHRoZSBubyBwcm94eSBhcmVhcy4KICoKICogVGhpcyBtZXRob2Qgd2lsbCBzdHJpcCBhIHBvcnQgZnJvbSB0aGUgaG9zdCBpZiBpdCBpcyBwcmVzZW50LiBFYWNoIHBhdHRlcm4KICogY2FuIGJlIG1hdGNoZWQgd2l0aCBhbiBleGFjdCBtYXRjaCAoZS5nLiwgImZvby5jb20iID09ICJmb28uY29tIikgb3IgYQogKiBwYXJ0aWFsIG1hdGNoOiAoZS5nLiwgImZvby5jb20iID09ICJiYXouZm9vLmNvbSIgYW5kICIuZm9vLmNvbSIgPT0KICogImJhei5mb28uY29tIiwgYnV0ICIuZm9vLmNvbSIgIT0gImZvby5jb20iKS4KICoKICogQXJlYXMgYXJlIG1hdGNoZWQgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKICogMS4gIioiICh3aXRob3V0IHF1b3RlcykgYWx3YXlzIG1hdGNoZXMgYW55IGhvc3RzLgogKiAyLiBBbiBleGFjdCBtYXRjaC4KICogMy4gVGhlIGFyZWEgc3RhcnRzIHdpdGggIi4iIGFuZCB0aGUgYXJlYSBpcyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBob3N0LiBlLmcuCiAqICAgICcubWl0LmVkdScgd2lsbCBtYXRjaCBhbnkgaG9zdCB0aGF0IGVuZHMgd2l0aCAnLm1pdC5lZHUnLgogKgogKiBAcGFyYW0gc3RyaW5nICAgJGhvc3QgICAgICAgICBIb3N0IHRvIGNoZWNrIGFnYWluc3QgdGhlIHBhdHRlcm5zLgogKiBAcGFyYW0gc3RyaW5nW10gJG5vUHJveHlBcnJheSBBbiBhcnJheSBvZiBob3N0IHBhdHRlcm5zLgogKgogKiBAdGhyb3dzIEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICoKICogQGRlcHJlY2F0ZWQgaXNfaG9zdF9pbl9ub3Byb3h5IHdpbGwgYmUgcmVtb3ZlZCBpbiBndXp6bGVodHRwL2d1enpsZTo4LjAuIFVzZSBVdGlsczo6aXNIb3N0SW5Ob1Byb3h5IGluc3RlYWQuCiAqLwpmdW5jdGlvbiBpc19ob3N0X2luX25vcHJveHkoc3RyaW5nICRob3N0LCBhcnJheSAkbm9Qcm94eUFycmF5KTogYm9vbAp7CiAgICByZXR1cm4gVXRpbHM6OmlzSG9zdEluTm9Qcm94eSgkaG9zdCwgJG5vUHJveHlBcnJheSk7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBqc29uX2RlY29kZSB0aGF0IHRocm93cyB3aGVuIGFuIGVycm9yIG9jY3Vycy4KICoKICogQHBhcmFtIHN0cmluZyAkanNvbiAgICBKU09OIGRhdGEgdG8gcGFyc2UKICogQHBhcmFtIGJvb2wgICAkYXNzb2MgICBXaGVuIHRydWUsIHJldHVybmVkIG9iamVjdHMgd2lsbCBiZSBjb252ZXJ0ZWQKICogICAgICAgICAgICAgICAgICAgICAgICBpbnRvIGFzc29jaWF0aXZlIGFycmF5cy4KICogQHBhcmFtIGludCAgICAkZGVwdGggICBVc2VyIHNwZWNpZmllZCByZWN1cnNpb24gZGVwdGguCiAqIEBwYXJhbSBpbnQgICAgJG9wdGlvbnMgQml0bWFzayBvZiBKU09OIGRlY29kZSBvcHRpb25zLgogKgogKiBAcmV0dXJuIG9iamVjdHxhcnJheXxzdHJpbmd8aW50fGZsb2F0fGJvb2x8bnVsbAogKgogKiBAdGhyb3dzIEV4Y2VwdGlvblxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIEpTT04gY2Fubm90IGJlIGRlY29kZWQuCiAqCiAqIEBzZWUgaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uanNvbi1kZWNvZGUucGhwCiAqIEBkZXByZWNhdGVkIGpzb25fZGVjb2RlIHdpbGwgYmUgcmVtb3ZlZCBpbiBndXp6bGVodHRwL2d1enpsZTo4LjAuIFVzZSBVdGlsczo6anNvbkRlY29kZSBpbnN0ZWFkLgogKi8KZnVuY3Rpb24ganNvbl9kZWNvZGUoc3RyaW5nICRqc29uLCBib29sICRhc3NvYyA9IGZhbHNlLCBpbnQgJGRlcHRoID0gNTEyLCBpbnQgJG9wdGlvbnMgPSAwKQp7CiAgICByZXR1cm4gVXRpbHM6Ompzb25EZWNvZGUoJGpzb24sICRhc3NvYywgJGRlcHRoLCAkb3B0aW9ucyk7Cn0KCi8qKgogKiBXcmFwcGVyIGZvciBKU09OIGVuY29kaW5nIHRoYXQgdGhyb3dzIHdoZW4gYW4gZXJyb3Igb2NjdXJzLgogKgogKiBAcGFyYW0gbWl4ZWQgJHZhbHVlICAgVGhlIHZhbHVlIGJlaW5nIGVuY29kZWQKICogQHBhcmFtIGludCAgICRvcHRpb25zIEpTT04gZW5jb2RlIG9wdGlvbiBiaXRtYXNrCiAqIEBwYXJhbSBpbnQgICAkZGVwdGggICBTZXQgdGhlIG1heGltdW0gZGVwdGguIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCiAqCiAqIEB0aHJvd3MgRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSlNPTiBjYW5ub3QgYmUgZW5jb2RlZC4KICoKICogQHNlZSBodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5qc29uLWVuY29kZS5waHAKICogQGRlcHJlY2F0ZWQganNvbl9lbmNvZGUgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVXNlIFV0aWxzOjpqc29uRW5jb2RlIGluc3RlYWQuCiAqLwpmdW5jdGlvbiBqc29uX2VuY29kZSgkdmFsdWUsIGludCAkb3B0aW9ucyA9IDAsIGludCAkZGVwdGggPSA1MTIpOiBzdHJpbmcKewogICAgcmV0dXJuIFV0aWxzOjpqc29uRW5jb2RlKCR2YWx1ZSwgJG9wdGlvbnMsICRkZXB0aCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/functions_include.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIERvbid0IHJlZGVmaW5lIHRoZSBmdW5jdGlvbnMgaWYgaW5jbHVkZWQgbXVsdGlwbGUgdGltZXMuCmlmICghXGZ1bmN0aW9uX2V4aXN0cygnR3V6emxlSHR0cFxkZXNjcmliZV90eXBlJykpIHsKICAgIHJlcXVpcmUgX19ESVJfXy4nL2Z1bmN0aW9ucy5waHAnOwp9Cg==]]></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[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXFJlcXVlc3RFeGNlcHRpb247CnVzZSBHdXp6bGVIdHRwXFByb21pc2UgYXMgUDsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjdcTGF6eU9wZW5TdHJlYW07CnVzZSBHdXp6bGVIdHRwXFRyYW5zZmVyU3RhdHM7CnVzZSBHdXp6bGVIdHRwXFV0aWxzOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogQ3JlYXRlcyBjdXJsIHJlc291cmNlcyBmcm9tIGEgcmVxdWVzdAogKgogKiBAZmluYWwKICovCmNsYXNzIEN1cmxGYWN0b3J5IGltcGxlbWVudHMgQ3VybEZhY3RvcnlJbnRlcmZhY2UKewogICAgcHVibGljIGNvbnN0IENVUkxfVkVSU0lPTl9TVFIgPSAnY3VybF92ZXJzaW9uJzsKCiAgICAvKioKICAgICAqIEBkZXByZWNhdGVkCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBMT1dfQ1VSTF9WRVJTSU9OX05VTUJFUiA9ICc3LjIxLjInOwoKICAgIC8qKgogICAgICogQHZhciByZXNvdXJjZVtdfFxDdXJsSGFuZGxlW10KICAgICAqLwogICAgcHJpdmF0ZSAkaGFuZGxlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBpbnQgVG90YWwgbnVtYmVyIG9mIGlkbGUgaGFuZGxlcyB0byBrZWVwIGluIGNhY2hlCiAgICAgKi8KICAgIHByaXZhdGUgJG1heEhhbmRsZXM7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRtYXhIYW5kbGVzIE1heGltdW0gbnVtYmVyIG9mIGlkbGUgaGFuZGxlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGludCAkbWF4SGFuZGxlcykKICAgIHsKICAgICAgICAkdGhpcy0+bWF4SGFuZGxlcyA9ICRtYXhIYW5kbGVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBFYXN5SGFuZGxlCiAgICB7CiAgICAgICAgJHByb3RvY29sVmVyc2lvbiA9ICRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKTsKCiAgICAgICAgaWYgKCcyJyA9PT0gJHByb3RvY29sVmVyc2lvbiB8fCAnMi4wJyA9PT0gJHByb3RvY29sVmVyc2lvbikgewogICAgICAgICAgICBpZiAoIXNlbGY6OnN1cHBvcnRzSHR0cDIoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IENvbm5lY3RFeGNlcHRpb24oJ0hUVFAvMiBpcyBzdXBwb3J0ZWQgYnkgdGhlIGNVUkwgaGFuZGxlciwgaG93ZXZlciBsaWJjdXJsIGlzIGJ1aWx0IHdpdGhvdXQgSFRUUC8yIHN1cHBvcnQuJywgJHJlcXVlc3QpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCcxLjAnICE9PSAkcHJvdG9jb2xWZXJzaW9uICYmICcxLjEnICE9PSAkcHJvdG9jb2xWZXJzaW9uKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBDb25uZWN0RXhjZXB0aW9uKHNwcmludGYoJ0hUVFAvJXMgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY1VSTCBoYW5kbGVyLicsICRwcm90b2NvbFZlcnNpb24pLCAkcmVxdWVzdCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2N1cmwnXVsnYm9keV9hc19zdHJpbmcnXSkpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ19ib2R5X2FzX3N0cmluZyddID0gJG9wdGlvbnNbJ2N1cmwnXVsnYm9keV9hc19zdHJpbmcnXTsKICAgICAgICAgICAgdW5zZXQoJG9wdGlvbnNbJ2N1cmwnXVsnYm9keV9hc19zdHJpbmcnXSk7CiAgICAgICAgfQoKICAgICAgICAkZWFzeSA9IG5ldyBFYXN5SGFuZGxlKCk7CiAgICAgICAgJGVhc3ktPnJlcXVlc3QgPSAkcmVxdWVzdDsKICAgICAgICAkZWFzeS0+b3B0aW9ucyA9ICRvcHRpb25zOwogICAgICAgICRjb25mID0gJHRoaXMtPmdldERlZmF1bHRDb25mKCRlYXN5KTsKICAgICAgICAkdGhpcy0+YXBwbHlNZXRob2QoJGVhc3ksICRjb25mKTsKICAgICAgICAkdGhpcy0+YXBwbHlIYW5kbGVyT3B0aW9ucygkZWFzeSwgJGNvbmYpOwogICAgICAgICR0aGlzLT5hcHBseUhlYWRlcnMoJGVhc3ksICRjb25mKTsKICAgICAgICB1bnNldCgkY29uZlsnX2hlYWRlcnMnXSk7CgogICAgICAgIC8vIEFkZCBoYW5kbGVyIG9wdGlvbnMgZnJvbSB0aGUgcmVxdWVzdCBjb25maWd1cmF0aW9uIG9wdGlvbnMKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2N1cmwnXSkpIHsKICAgICAgICAgICAgJGNvbmYgPSBcYXJyYXlfcmVwbGFjZSgkY29uZiwgJG9wdGlvbnNbJ2N1cmwnXSk7CiAgICAgICAgfQoKICAgICAgICAkY29uZltcQ1VSTE9QVF9IRUFERVJGVU5DVElPTl0gPSAkdGhpcy0+Y3JlYXRlSGVhZGVyRm4oJGVhc3kpOwogICAgICAgICRlYXN5LT5oYW5kbGUgPSAkdGhpcy0+aGFuZGxlcyA/IFxhcnJheV9wb3AoJHRoaXMtPmhhbmRsZXMpIDogXGN1cmxfaW5pdCgpOwogICAgICAgIGN1cmxfc2V0b3B0X2FycmF5KCRlYXN5LT5oYW5kbGUsICRjb25mKTsKCiAgICAgICAgcmV0dXJuICRlYXN5OwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHN1cHBvcnRzSHR0cDIoKTogYm9vbAogICAgewogICAgICAgIHN0YXRpYyAkc3VwcG9ydHNIdHRwMiA9IG51bGw7CgogICAgICAgIGlmIChudWxsID09PSAkc3VwcG9ydHNIdHRwMikgewogICAgICAgICAgICAkc3VwcG9ydHNIdHRwMiA9IHNlbGY6OnN1cHBvcnRzVGxzMTIoKQogICAgICAgICAgICAgICAgJiYgZGVmaW5lZCgnQ1VSTF9WRVJTSU9OX0hUVFAyJykKICAgICAgICAgICAgICAgICYmIChcQ1VSTF9WRVJTSU9OX0hUVFAyICYgXGN1cmxfdmVyc2lvbigpWydmZWF0dXJlcyddKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc3VwcG9ydHNIdHRwMjsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzdXBwb3J0c1RsczEyKCk6IGJvb2wKICAgIHsKICAgICAgICBzdGF0aWMgJHN1cHBvcnRzVGxzMTIgPSBudWxsOwoKICAgICAgICBpZiAobnVsbCA9PT0gJHN1cHBvcnRzVGxzMTIpIHsKICAgICAgICAgICAgJHN1cHBvcnRzVGxzMTIgPSBcQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzIgJiBcY3VybF92ZXJzaW9uKClbJ2ZlYXR1cmVzJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN1cHBvcnRzVGxzMTI7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc3VwcG9ydHNUbHMxMygpOiBib29sCiAgICB7CiAgICAgICAgc3RhdGljICRzdXBwb3J0c1RsczEzID0gbnVsbDsKCiAgICAgICAgaWYgKG51bGwgPT09ICRzdXBwb3J0c1RsczEzKSB7CiAgICAgICAgICAgICRzdXBwb3J0c1RsczEzID0gZGVmaW5lZCgnQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzMnKQogICAgICAgICAgICAgICAgJiYgKFxDVVJMX1NTTFZFUlNJT05fVExTdjFfMyAmIFxjdXJsX3ZlcnNpb24oKVsnZmVhdHVyZXMnXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN1cHBvcnRzVGxzMTM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlbGVhc2UoRWFzeUhhbmRsZSAkZWFzeSk6IHZvaWQKICAgIHsKICAgICAgICAkcmVzb3VyY2UgPSAkZWFzeS0+aGFuZGxlOwogICAgICAgIHVuc2V0KCRlYXN5LT5oYW5kbGUpOwoKICAgICAgICBpZiAoXGNvdW50KCR0aGlzLT5oYW5kbGVzKSA+PSAkdGhpcy0+bWF4SGFuZGxlcykgewogICAgICAgICAgICBpZiAoUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgICAgICAgICAgICAgXGN1cmxfY2xvc2UoJHJlc291cmNlKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFJlbW92ZSBhbGwgY2FsbGJhY2sgZnVuY3Rpb25zIGFzIHRoZXkgY2FuIGhvbGQgb250byByZWZlcmVuY2VzCiAgICAgICAgICAgIC8vIGFuZCBhcmUgbm90IGNsZWFuZWQgdXAgYnkgY3VybF9yZXNldC4gVXNpbmcgY3VybF9zZXRvcHRfYXJyYXkKICAgICAgICAgICAgLy8gZG9lcyBub3Qgd29yayBmb3Igc29tZSByZWFzb24sIHNvIHJlbW92aW5nIGVhY2ggb25lCiAgICAgICAgICAgIC8vIGluZGl2aWR1YWxseS4KICAgICAgICAgICAgXGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgXENVUkxPUFRfSEVBREVSRlVOQ1RJT04sIG51bGwpOwogICAgICAgICAgICBcY3VybF9zZXRvcHQoJHJlc291cmNlLCBcQ1VSTE9QVF9SRUFERlVOQ1RJT04sIG51bGwpOwogICAgICAgICAgICBcY3VybF9zZXRvcHQoJHJlc291cmNlLCBcQ1VSTE9QVF9XUklURUZVTkNUSU9OLCBudWxsKTsKICAgICAgICAgICAgXGN1cmxfc2V0b3B0KCRyZXNvdXJjZSwgXENVUkxPUFRfUFJPR1JFU1NGVU5DVElPTiwgbnVsbCk7CiAgICAgICAgICAgIFxjdXJsX3Jlc2V0KCRyZXNvdXJjZSk7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVzW10gPSAkcmVzb3VyY2U7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQ29tcGxldGVzIGEgY1VSTCB0cmFuc2FjdGlvbiwgZWl0aGVyIHJldHVybmluZyBhIHJlc3BvbnNlIHByb21pc2Ugb3IgYQogICAgICogcmVqZWN0ZWQgcHJvbWlzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRoYW5kbGVyCiAgICAgKiBAcGFyYW0gQ3VybEZhY3RvcnlJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRmYWN0b3J5IERpY3RhdGVzIGhvdyB0aGUgaGFuZGxlIGlzIHJlbGVhc2VkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZmluaXNoKGNhbGxhYmxlICRoYW5kbGVyLCBFYXN5SGFuZGxlICRlYXN5LCBDdXJsRmFjdG9yeUludGVyZmFjZSAkZmFjdG9yeSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJGVhc3ktPm9wdGlvbnNbJ29uX3N0YXRzJ10pKSB7CiAgICAgICAgICAgIHNlbGY6Omludm9rZVN0YXRzKCRlYXN5KTsKICAgICAgICB9CgogICAgICAgIGlmICghJGVhc3ktPnJlc3BvbnNlIHx8ICRlYXN5LT5lcnJubykgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6ZmluaXNoRXJyb3IoJGhhbmRsZXIsICRlYXN5LCAkZmFjdG9yeSk7CiAgICAgICAgfQoKICAgICAgICAvLyBSZXR1cm4gdGhlIHJlc3BvbnNlIGlmIGl0IGlzIHByZXNlbnQgYW5kIHRoZXJlIGlzIG5vIGVycm9yLgogICAgICAgICRmYWN0b3J5LT5yZWxlYXNlKCRlYXN5KTsKCiAgICAgICAgLy8gUmV3aW5kIHRoZSBib2R5IG9mIHRoZSByZXNwb25zZSBpZiBwb3NzaWJsZS4KICAgICAgICAkYm9keSA9ICRlYXN5LT5yZXNwb25zZS0+Z2V0Qm9keSgpOwogICAgICAgIGlmICgkYm9keS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICRib2R5LT5yZXdpbmQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgRnVsZmlsbGVkUHJvbWlzZSgkZWFzeS0+cmVzcG9uc2UpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGludm9rZVN0YXRzKEVhc3lIYW5kbGUgJGVhc3kpOiB2b2lkCiAgICB7CiAgICAgICAgJGN1cmxTdGF0cyA9IFxjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGN1cmxTdGF0c1snYXBwY29ubmVjdF90aW1lJ10gPSBcY3VybF9nZXRpbmZvKCRlYXN5LT5oYW5kbGUsIFxDVVJMSU5GT19BUFBDT05ORUNUX1RJTUUpOwogICAgICAgICRzdGF0cyA9IG5ldyBUcmFuc2ZlclN0YXRzKAogICAgICAgICAgICAkZWFzeS0+cmVxdWVzdCwKICAgICAgICAgICAgJGVhc3ktPnJlc3BvbnNlLAogICAgICAgICAgICAkY3VybFN0YXRzWyd0b3RhbF90aW1lJ10sCiAgICAgICAgICAgICRlYXN5LT5lcnJubywKICAgICAgICAgICAgJGN1cmxTdGF0cwogICAgICAgICk7CiAgICAgICAgKCRlYXN5LT5vcHRpb25zWydvbl9zdGF0cyddKSgkc3RhdHMpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkaGFuZGxlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBmaW5pc2hFcnJvcihjYWxsYWJsZSAkaGFuZGxlciwgRWFzeUhhbmRsZSAkZWFzeSwgQ3VybEZhY3RvcnlJbnRlcmZhY2UgJGZhY3RvcnkpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gR2V0IGVycm9yIGluZm9ybWF0aW9uIGFuZCByZWxlYXNlIHRoZSBoYW5kbGUgdG8gdGhlIGZhY3RvcnkuCiAgICAgICAgJGN0eCA9IFsKICAgICAgICAgICAgJ2Vycm5vJyA9PiAkZWFzeS0+ZXJybm8sCiAgICAgICAgICAgICdlcnJvcicgPT4gXGN1cmxfZXJyb3IoJGVhc3ktPmhhbmRsZSksCiAgICAgICAgICAgICdhcHBjb25uZWN0X3RpbWUnID0+IFxjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSwgXENVUkxJTkZPX0FQUENPTk5FQ1RfVElNRSksCiAgICAgICAgXSArIFxjdXJsX2dldGluZm8oJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGN0eFtzZWxmOjpDVVJMX1ZFUlNJT05fU1RSXSA9IHNlbGY6OmdldEN1cmxWZXJzaW9uKCk7CiAgICAgICAgJGZhY3RvcnktPnJlbGVhc2UoJGVhc3kpOwoKICAgICAgICAvLyBSZXRyeSB3aGVuIG5vdGhpbmcgaXMgcHJlc2VudCBvciB3aGVuIGN1cmwgZmFpbGVkIHRvIHJld2luZC4KICAgICAgICBpZiAoZW1wdHkoJGVhc3ktPm9wdGlvbnNbJ19lcnJfbWVzc2FnZSddKSAmJiAoISRlYXN5LT5lcnJubyB8fCAkZWFzeS0+ZXJybm8gPT0gNjUpKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpyZXRyeUZhaWxlZFJld2luZCgkaGFuZGxlciwgJGVhc3ksICRjdHgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZVJlamVjdGlvbigkZWFzeSwgJGN0eCk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0Q3VybFZlcnNpb24oKTogc3RyaW5nCiAgICB7CiAgICAgICAgc3RhdGljICRjdXJsVmVyc2lvbiA9IG51bGw7CgogICAgICAgIGlmIChudWxsID09PSAkY3VybFZlcnNpb24pIHsKICAgICAgICAgICAgJGN1cmxWZXJzaW9uID0gXGN1cmxfdmVyc2lvbigpWyd2ZXJzaW9uJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGN1cmxWZXJzaW9uOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVJlamVjdGlvbihFYXN5SGFuZGxlICRlYXN5LCBhcnJheSAkY3R4KTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHN0YXRpYyAkY29ubmVjdGlvbkVycm9ycyA9IFsKICAgICAgICAgICAgXENVUkxFX09QRVJBVElPTl9USU1FT1VURUQgPT4gdHJ1ZSwKICAgICAgICAgICAgXENVUkxFX0NPVUxETlRfUkVTT0xWRV9IT1NUID0+IHRydWUsCiAgICAgICAgICAgIFxDVVJMRV9DT1VMRE5UX0NPTk5FQ1QgPT4gdHJ1ZSwKICAgICAgICAgICAgXENVUkxFX1NTTF9DT05ORUNUX0VSUk9SID0+IHRydWUsCiAgICAgICAgICAgIFxDVVJMRV9HT1RfTk9USElORyA9PiB0cnVlLAogICAgICAgIF07CgogICAgICAgIGlmICgkZWFzeS0+Y3JlYXRlUmVzcG9uc2VFeGNlcHRpb24pIHsKICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoCiAgICAgICAgICAgICAgICBuZXcgUmVxdWVzdEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAnQW4gZXJyb3Igd2FzIGVuY291bnRlcmVkIHdoaWxlIGNyZWF0aW5nIHRoZSByZXNwb25zZScsCiAgICAgICAgICAgICAgICAgICAgJGVhc3ktPnJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgJGVhc3ktPnJlc3BvbnNlLAogICAgICAgICAgICAgICAgICAgICRlYXN5LT5jcmVhdGVSZXNwb25zZUV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICAgICAkY3R4CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAvLyBJZiBhbiBleGNlcHRpb24gd2FzIGVuY291bnRlcmVkIGR1cmluZyB0aGUgb25IZWFkZXJzIGV2ZW50LCB0aGVuCiAgICAgICAgLy8gcmV0dXJuIGEgcmVqZWN0ZWQgcHJvbWlzZSB0aGF0IHdyYXBzIHRoYXQgZXhjZXB0aW9uLgogICAgICAgIGlmICgkZWFzeS0+b25IZWFkZXJzRXhjZXB0aW9uKSB7CiAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKAogICAgICAgICAgICAgICAgbmV3IFJlcXVlc3RFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIG9uX2hlYWRlcnMgZXZlbnQnLAogICAgICAgICAgICAgICAgICAgICRlYXN5LT5yZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICRlYXN5LT5yZXNwb25zZSwKICAgICAgICAgICAgICAgICAgICAkZWFzeS0+b25IZWFkZXJzRXhjZXB0aW9uLAogICAgICAgICAgICAgICAgICAgICRjdHgKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR1cmkgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0VXJpKCk7CgogICAgICAgICRzYW5pdGl6ZWRFcnJvciA9IHNlbGY6OnNhbml0aXplQ3VybEVycm9yKCRjdHhbJ2Vycm9yJ10gPz8gJycsICR1cmkpOwoKICAgICAgICAkbWVzc2FnZSA9IFxzcHJpbnRmKAogICAgICAgICAgICAnY1VSTCBlcnJvciAlczogJXMgKCVzKScsCiAgICAgICAgICAgICRjdHhbJ2Vycm5vJ10sCiAgICAgICAgICAgICRzYW5pdGl6ZWRFcnJvciwKICAgICAgICAgICAgJ3NlZSBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvbGliY3VybC1lcnJvcnMuaHRtbCcKICAgICAgICApOwoKICAgICAgICBpZiAoJycgIT09ICRzYW5pdGl6ZWRFcnJvcikgewogICAgICAgICAgICAkcmVkYWN0ZWRVcmlTdHJpbmcgPSBcR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpyZWRhY3RVc2VySW5mbygkdXJpKS0+X190b1N0cmluZygpOwogICAgICAgICAgICBpZiAoJHJlZGFjdGVkVXJpU3RyaW5nICE9PSAnJyAmJiBmYWxzZSA9PT0gXHN0cnBvcygkc2FuaXRpemVkRXJyb3IsICRyZWRhY3RlZFVyaVN0cmluZykpIHsKICAgICAgICAgICAgICAgICRtZXNzYWdlIC49IFxzcHJpbnRmKCcgZm9yICVzJywgJHJlZGFjdGVkVXJpU3RyaW5nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQ3JlYXRlIGEgY29ubmVjdGlvbiBleGNlcHRpb24gaWYgaXQgd2FzIGEgc3BlY2lmaWMgZXJyb3IgY29kZS4KICAgICAgICAkZXJyb3IgPSBpc3NldCgkY29ubmVjdGlvbkVycm9yc1skZWFzeS0+ZXJybm9dKQogICAgICAgICAgICA/IG5ldyBDb25uZWN0RXhjZXB0aW9uKCRtZXNzYWdlLCAkZWFzeS0+cmVxdWVzdCwgbnVsbCwgJGN0eCkKICAgICAgICAgICAgOiBuZXcgUmVxdWVzdEV4Y2VwdGlvbigkbWVzc2FnZSwgJGVhc3ktPnJlcXVlc3QsICRlYXN5LT5yZXNwb25zZSwgbnVsbCwgJGN0eCk7CgogICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKCRlcnJvcik7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gc2FuaXRpemVDdXJsRXJyb3Ioc3RyaW5nICRlcnJvciwgVXJpSW50ZXJmYWNlICR1cmkpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJycgPT09ICRlcnJvcikgewogICAgICAgICAgICByZXR1cm4gJGVycm9yOwogICAgICAgIH0KCiAgICAgICAgJGJhc2VVcmkgPSAkdXJpLT53aXRoUXVlcnkoJycpLT53aXRoRnJhZ21lbnQoJycpOwogICAgICAgICRiYXNlVXJpU3RyaW5nID0gJGJhc2VVcmktPl9fdG9TdHJpbmcoKTsKCiAgICAgICAgaWYgKCcnID09PSAkYmFzZVVyaVN0cmluZykgewogICAgICAgICAgICByZXR1cm4gJGVycm9yOwogICAgICAgIH0KCiAgICAgICAgJHJlZGFjdGVkVXJpU3RyaW5nID0gXEd1enpsZUh0dHBcUHNyN1xVdGlsczo6cmVkYWN0VXNlckluZm8oJGJhc2VVcmkpLT5fX3RvU3RyaW5nKCk7CgogICAgICAgIHJldHVybiBzdHJfcmVwbGFjZSgkYmFzZVVyaVN0cmluZywgJHJlZGFjdGVkVXJpU3RyaW5nLCAkZXJyb3IpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheTxpbnR8c3RyaW5nLCBtaXhlZD4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXREZWZhdWx0Q29uZihFYXN5SGFuZGxlICRlYXN5KTogYXJyYXkKICAgIHsKICAgICAgICAkY29uZiA9IFsKICAgICAgICAgICAgJ19oZWFkZXJzJyA9PiAkZWFzeS0+cmVxdWVzdC0+Z2V0SGVhZGVycygpLAogICAgICAgICAgICBcQ1VSTE9QVF9DVVNUT01SRVFVRVNUID0+ICRlYXN5LT5yZXF1ZXN0LT5nZXRNZXRob2QoKSwKICAgICAgICAgICAgXENVUkxPUFRfVVJMID0+IChzdHJpbmcpICRlYXN5LT5yZXF1ZXN0LT5nZXRVcmkoKS0+d2l0aEZyYWdtZW50KCcnKSwKICAgICAgICAgICAgXENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgPT4gZmFsc2UsCiAgICAgICAgICAgIFxDVVJMT1BUX0hFQURFUiA9PiBmYWxzZSwKICAgICAgICAgICAgXENVUkxPUFRfQ09OTkVDVFRJTUVPVVQgPT4gMzAwLAogICAgICAgIF07CgogICAgICAgIGlmIChcZGVmaW5lZCgnQ1VSTE9QVF9QUk9UT0NPTFMnKSkgewogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9QUk9UT0NPTFNdID0gXENVUkxQUk9UT19IVFRQIHwgXENVUkxQUk9UT19IVFRQUzsKICAgICAgICB9CgogICAgICAgICR2ZXJzaW9uID0gJGVhc3ktPnJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpOwoKICAgICAgICBpZiAoJzInID09PSAkdmVyc2lvbiB8fCAnMi4wJyA9PT0gJHZlcnNpb24pIHsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSFRUUF9WRVJTSU9OXSA9IFxDVVJMX0hUVFBfVkVSU0lPTl8yXzA7CiAgICAgICAgfSBlbHNlaWYgKCcxLjEnID09PSAkdmVyc2lvbikgewogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9IVFRQX1ZFUlNJT05dID0gXENVUkxfSFRUUF9WRVJTSU9OXzFfMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9IVFRQX1ZFUlNJT05dID0gXENVUkxfSFRUUF9WRVJTSU9OXzFfMDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY29uZjsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5TWV0aG9kKEVhc3lIYW5kbGUgJGVhc3ksIGFycmF5ICYkY29uZik6IHZvaWQKICAgIHsKICAgICAgICAkYm9keSA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRCb2R5KCk7CiAgICAgICAgJHNpemUgPSAkYm9keS0+Z2V0U2l6ZSgpOwoKICAgICAgICBpZiAoJHNpemUgPT09IG51bGwgfHwgJHNpemUgPiAwKSB7CiAgICAgICAgICAgICR0aGlzLT5hcHBseUJvZHkoJGVhc3ktPnJlcXVlc3QsICRlYXN5LT5vcHRpb25zLCAkY29uZik7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkbWV0aG9kID0gJGVhc3ktPnJlcXVlc3QtPmdldE1ldGhvZCgpOwogICAgICAgIGlmICgkbWV0aG9kID09PSAnUFVUJyB8fCAkbWV0aG9kID09PSAnUE9TVCcpIHsKICAgICAgICAgICAgLy8gU2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMy4yCiAgICAgICAgICAgIGlmICghJGVhc3ktPnJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1MZW5ndGgnKSkgewogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdDb250ZW50LUxlbmd0aDogMCc7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJG1ldGhvZCA9PT0gJ0hFQUQnKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX05PQk9EWV0gPSB0cnVlOwogICAgICAgICAgICB1bnNldCgKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1dSSVRFRlVOQ1RJT05dLAogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfUkVBREZVTkNUSU9OXSwKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0ZJTEVdLAogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSU5GSUxFXQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFwcGx5Qm9keShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucywgYXJyYXkgJiRjb25mKTogdm9pZAogICAgewogICAgICAgICRzaXplID0gJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1MZW5ndGgnKQogICAgICAgICAgICA/IChpbnQpICRyZXF1ZXN0LT5nZXRIZWFkZXJMaW5lKCdDb250ZW50LUxlbmd0aCcpCiAgICAgICAgICAgIDogbnVsbDsKCiAgICAgICAgLy8gU2VuZCB0aGUgYm9keSBhcyBhIHN0cmluZyBpZiB0aGUgc2l6ZSBpcyBsZXNzIHRoYW4gMU1CIE9SIGlmIHRoZQogICAgICAgIC8vIFtjdXJsXVtib2R5X2FzX3N0cmluZ10gcmVxdWVzdCB2YWx1ZSBpcyBzZXQuCiAgICAgICAgaWYgKCgkc2l6ZSAhPT0gbnVsbCAmJiAkc2l6ZSA8IDEwMDAwMDApIHx8ICFlbXB0eSgkb3B0aW9uc1snX2JvZHlfYXNfc3RyaW5nJ10pKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1BPU1RGSUVMRFNdID0gKHN0cmluZykgJHJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAgICAgLy8gRG9uJ3QgZHVwbGljYXRlIHRoZSBDb250ZW50LUxlbmd0aCBoZWFkZXIKICAgICAgICAgICAgJHRoaXMtPnJlbW92ZUhlYWRlcignQ29udGVudC1MZW5ndGgnLCAkY29uZik7CiAgICAgICAgICAgICR0aGlzLT5yZW1vdmVIZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJywgJGNvbmYpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1VQTE9BRF0gPSB0cnVlOwogICAgICAgICAgICBpZiAoJHNpemUgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0lORklMRVNJWkVdID0gJHNpemU7CiAgICAgICAgICAgICAgICAkdGhpcy0+cmVtb3ZlSGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICRjb25mKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYm9keSA9ICRyZXF1ZXN0LT5nZXRCb2R5KCk7CiAgICAgICAgICAgIGlmICgkYm9keS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkYm9keS0+cmV3aW5kKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfUkVBREZVTkNUSU9OXSA9IHN0YXRpYyBmdW5jdGlvbiAoJGNoLCAkZmQsICRsZW5ndGgpIHVzZSAoJGJvZHkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkYm9keS0+cmVhZCgkbGVuZ3RoKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZSBFeHBlY3QgaGVhZGVyIGlzIG5vdCBwcmVzZW50LCBwcmV2ZW50IGN1cmwgZnJvbSBhZGRpbmcgaXQKICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0V4cGVjdCcpKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAnRXhwZWN0Oic7CiAgICAgICAgfQoKICAgICAgICAvLyBjVVJMIHNvbWV0aW1lcyBhZGRzIGEgY29udGVudC10eXBlIGJ5IGRlZmF1bHQuIFByZXZlbnQgdGhpcy4KICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0NvbnRlbnQtVHlwZScpKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAnQ29udGVudC1UeXBlOic7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlIZWFkZXJzKEVhc3lIYW5kbGUgJGVhc3ksIGFycmF5ICYkY29uZik6IHZvaWQKICAgIHsKICAgICAgICBmb3JlYWNoICgkY29uZlsnX2hlYWRlcnMnXSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkdmFsdWUgPSAoc3RyaW5nKSAkdmFsdWU7CiAgICAgICAgICAgICAgICBpZiAoJHZhbHVlID09PSAnJykgewogICAgICAgICAgICAgICAgICAgIC8vIGNVUkwgcmVxdWlyZXMgYSBzcGVjaWFsIGZvcm1hdCBmb3IgZW1wdHkgaGVhZGVycy4KICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUvaXNzdWVzLzE4ODIgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9IVFRQSEVBREVSXVtdID0gIiRuYW1lOyI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAiJG5hbWU6ICR2YWx1ZSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFJlbW92ZSB0aGUgQWNjZXB0IGhlYWRlciBpZiBvbmUgd2FzIG5vdCBzZXQKICAgICAgICBpZiAoISRlYXN5LT5yZXF1ZXN0LT5oYXNIZWFkZXIoJ0FjY2VwdCcpKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0hUVFBIRUFERVJdW10gPSAnQWNjZXB0Oic7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgaGVhZGVyIGZyb20gdGhlIG9wdGlvbnMgYXJyYXkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSAgICBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciB0byByZW1vdmUKICAgICAqIEBwYXJhbSBhcnJheSAgJG9wdGlvbnMgQXJyYXkgb2Ygb3B0aW9ucyB0byBtb2RpZnkKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiByZW1vdmVIZWFkZXIoc3RyaW5nICRuYW1lLCBhcnJheSAmJG9wdGlvbnMpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoXGFycmF5X2tleXMoJG9wdGlvbnNbJ19oZWFkZXJzJ10pIGFzICRrZXkpIHsKICAgICAgICAgICAgaWYgKCFcc3RyY2FzZWNtcCgka2V5LCAkbmFtZSkpIHsKICAgICAgICAgICAgICAgIHVuc2V0KCRvcHRpb25zWydfaGVhZGVycyddWyRrZXldKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhcHBseUhhbmRsZXJPcHRpb25zKEVhc3lIYW5kbGUgJGVhc3ksIGFycmF5ICYkY29uZik6IHZvaWQKICAgIHsKICAgICAgICAkb3B0aW9ucyA9ICRlYXN5LT5vcHRpb25zOwogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgIGlmICgkb3B0aW9uc1sndmVyaWZ5J10gPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICB1bnNldCgkY29uZltcQ1VSTE9QVF9DQUlORk9dKTsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTF9WRVJJRllIT1NUXSA9IDA7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUl0gPSBmYWxzZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTF9WRVJJRllIT1NUXSA9IDI7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUl0gPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKFxpc19zdHJpbmcoJG9wdGlvbnNbJ3ZlcmlmeSddKSkgewogICAgICAgICAgICAgICAgICAgIC8vIFRocm93IGFuIGVycm9yIGlmIHRoZSBmaWxlL2ZvbGRlci9saW5rIHBhdGggaXMgbm90IHZhbGlkIG9yIGRvZXNuJ3QgZXhpc3QuCiAgICAgICAgICAgICAgICAgICAgaWYgKCFcZmlsZV9leGlzdHMoJG9wdGlvbnNbJ3ZlcmlmeSddKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiU1NMIENBIGJ1bmRsZSBub3QgZm91bmQ6IHskb3B0aW9uc1sndmVyaWZ5J119Iik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIElmIGl0J3MgYSBkaXJlY3Rvcnkgb3IgYSBsaW5rIHRvIGEgZGlyZWN0b3J5IHVzZSBDVVJMT1BUX0NBUEFUSC4KICAgICAgICAgICAgICAgICAgICAvLyBJZiBub3QsIGl0J3MgcHJvYmFibHkgYSBmaWxlLCBvciBhIGxpbmsgdG8gYSBmaWxlLCBzbyB1c2UgQ1VSTE9QVF9DQUlORk8uCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBcaXNfZGlyKCRvcHRpb25zWyd2ZXJpZnknXSkKICAgICAgICAgICAgICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXGlzX2xpbmsoJG9wdGlvbnNbJ3ZlcmlmeSddKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCR2ZXJpZnlMaW5rID0gXHJlYWRsaW5rKCRvcHRpb25zWyd2ZXJpZnknXSkpICE9PSBmYWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgXGlzX2RpcigkdmVyaWZ5TGluaykKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9DQVBBVEhdID0gJG9wdGlvbnNbJ3ZlcmlmeSddOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0NBSU5GT10gPSAkb3B0aW9uc1sndmVyaWZ5J107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIWlzc2V0KCRvcHRpb25zWydjdXJsJ11bXENVUkxPUFRfRU5DT0RJTkddKSAmJiAhZW1wdHkoJG9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10pKSB7CiAgICAgICAgICAgICRhY2NlcHQgPSAkZWFzeS0+cmVxdWVzdC0+Z2V0SGVhZGVyTGluZSgnQWNjZXB0LUVuY29kaW5nJyk7CiAgICAgICAgICAgIGlmICgkYWNjZXB0KSB7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9FTkNPRElOR10gPSAkYWNjZXB0OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgLy8gVGhlIGVtcHR5IHN0cmluZyBlbmFibGVzIGFsbCBhdmFpbGFibGUgZGVjb2RlcnMgYW5kIGltcGxpY2l0bHkKICAgICAgICAgICAgICAgIC8vIHNldHMgYSBtYXRjaGluZyAnQWNjZXB0LUVuY29kaW5nJyBoZWFkZXIuCiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9FTkNPRElOR10gPSAnJzsKICAgICAgICAgICAgICAgIC8vIEJ1dCBhcyB0aGUgdXNlciBkaWQgbm90IHNwZWNpZnkgYW55IGVuY29kaW5nIHByZWZlcmVuY2UsCiAgICAgICAgICAgICAgICAvLyBsZXQncyBsZWF2ZSBpdCB1cCB0byBzZXJ2ZXIgYnkgcHJldmVudGluZyBjdXJsIGZyb20gc2VuZGluZwogICAgICAgICAgICAgICAgLy8gdGhlIGhlYWRlciwgd2hpY2ggd2lsbCBiZSBpbnRlcnByZXRlZCBhcyAnQWNjZXB0LUVuY29kaW5nOiAqJy4KICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM5MTEwI2ZpZWxkLmFjY2VwdC1lbmNvZGluZwogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfSFRUUEhFQURFUl1bXSA9ICdBY2NlcHQtRW5jb2Rpbmc6JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1snc2luayddKSkgewogICAgICAgICAgICAvLyBVc2UgYSBkZWZhdWx0IHRlbXAgc3RyZWFtIGlmIG5vIHNpbmsgd2FzIHNldC4KICAgICAgICAgICAgJG9wdGlvbnNbJ3NpbmsnXSA9IFxHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnRyeUZvcGVuKCdwaHA6Ly90ZW1wJywgJ3crJyk7CiAgICAgICAgfQogICAgICAgICRzaW5rID0gJG9wdGlvbnNbJ3NpbmsnXTsKICAgICAgICBpZiAoIVxpc19zdHJpbmcoJHNpbmspKSB7CiAgICAgICAgICAgICRzaW5rID0gXEd1enpsZUh0dHBcUHNyN1xVdGlsczo6c3RyZWFtRm9yKCRzaW5rKTsKICAgICAgICB9IGVsc2VpZiAoIVxpc19kaXIoXGRpcm5hbWUoJHNpbmspKSkgewogICAgICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZGlyZWN0b3J5IGV4aXN0cyBiZWZvcmUgZmFpbGluZyBpbiBjdXJsLgogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oXHNwcmludGYoJ0RpcmVjdG9yeSAlcyBkb2VzIG5vdCBleGlzdCBmb3Igc2luayB2YWx1ZSBvZiAlcycsIFxkaXJuYW1lKCRzaW5rKSwgJHNpbmspKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc2luayA9IG5ldyBMYXp5T3BlblN0cmVhbSgkc2luaywgJ3crJyk7CiAgICAgICAgfQogICAgICAgICRlYXN5LT5zaW5rID0gJHNpbms7CiAgICAgICAgJGNvbmZbXENVUkxPUFRfV1JJVEVGVU5DVElPTl0gPSBzdGF0aWMgZnVuY3Rpb24gKCRjaCwgJHdyaXRlKSB1c2UgKCRzaW5rKTogaW50IHsKICAgICAgICAgICAgcmV0dXJuICRzaW5rLT53cml0ZSgkd3JpdGUpOwogICAgICAgIH07CgogICAgICAgICR0aW1lb3V0UmVxdWlyZXNOb1NpZ25hbCA9IGZhbHNlOwogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sndGltZW91dCddKSkgewogICAgICAgICAgICAkdGltZW91dFJlcXVpcmVzTm9TaWduYWwgfD0gJG9wdGlvbnNbJ3RpbWVvdXQnXSA8IDE7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1RJTUVPVVRfTVNdID0gJG9wdGlvbnNbJ3RpbWVvdXQnXSAqIDEwMDA7CiAgICAgICAgfQoKICAgICAgICAvLyBDVVJMIGRlZmF1bHQgdmFsdWUgaXMgQ1VSTF9JUFJFU09MVkVfV0hBVEVWRVIKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkpIHsKICAgICAgICAgICAgaWYgKCd2NCcgPT09ICRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pIHsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX0lQUkVTT0xWRV0gPSBcQ1VSTF9JUFJFU09MVkVfVjQ7CiAgICAgICAgICAgIH0gZWxzZWlmICgndjYnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9JUFJFU09MVkVdID0gXENVUkxfSVBSRVNPTFZFX1Y2OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2Nvbm5lY3RfdGltZW91dCddKSkgewogICAgICAgICAgICAkdGltZW91dFJlcXVpcmVzTm9TaWduYWwgfD0gJG9wdGlvbnNbJ2Nvbm5lY3RfdGltZW91dCddIDwgMTsKICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfQ09OTkVDVFRJTUVPVVRfTVNdID0gJG9wdGlvbnNbJ2Nvbm5lY3RfdGltZW91dCddICogMTAwMDsKICAgICAgICB9CgogICAgICAgIGlmICgkdGltZW91dFJlcXVpcmVzTm9TaWduYWwgJiYgXHN0cnRvdXBwZXIoXHN1YnN0cihcUEhQX09TLCAwLCAzKSkgIT09ICdXSU4nKSB7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX05PU0lHTkFMXSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3Byb3h5J10pKSB7CiAgICAgICAgICAgIGlmICghXGlzX2FycmF5KCRvcHRpb25zWydwcm94eSddKSkgewogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfUFJPWFldID0gJG9wdGlvbnNbJ3Byb3h5J107CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkc2NoZW1lID0gJGVhc3ktPnJlcXVlc3QtPmdldFVyaSgpLT5nZXRTY2hlbWUoKTsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncHJveHknXVskc2NoZW1lXSkpIHsKICAgICAgICAgICAgICAgICAgICAkaG9zdCA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpOwogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sncHJveHknXVsnbm8nXSkgJiYgVXRpbHM6OmlzSG9zdEluTm9Qcm94eSgkaG9zdCwgJG9wdGlvbnNbJ3Byb3h5J11bJ25vJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRjb25mW1xDVVJMT1BUX1BST1hZXSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfUFJPWFldID0gJG9wdGlvbnNbJ3Byb3h5J11bJHNjaGVtZV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2NyeXB0b19tZXRob2QnXSkpIHsKICAgICAgICAgICAgJHByb3RvY29sVmVyc2lvbiA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKTsKCiAgICAgICAgICAgIC8vIElmIEhUVFAvMiwgdXBncmFkZSBUTFMgMS4wIGFuZCAxLjEgdG8gMS4yCiAgICAgICAgICAgIGlmICgnMicgPT09ICRwcm90b2NvbFZlcnNpb24gfHwgJzIuMCcgPT09ICRwcm90b2NvbFZlcnNpb24pIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBcU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfMF9DTElFTlQgPT09ICRvcHRpb25zWydjcnlwdG9fbWV0aG9kJ10KICAgICAgICAgICAgICAgICAgICB8fCBcU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfMV9DTElFTlQgPT09ICRvcHRpb25zWydjcnlwdG9fbWV0aG9kJ10KICAgICAgICAgICAgICAgICAgICB8fCBcU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfMl9DTElFTlQgPT09ICRvcHRpb25zWydjcnlwdG9fbWV0aG9kJ10KICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTFZFUlNJT05dID0gXENVUkxfU1NMVkVSU0lPTl9UTFN2MV8yOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKGRlZmluZWQoJ1NUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzNfQ0xJRU5UJykgJiYgXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzNfQ0xJRU5UID09PSAkb3B0aW9uc1snY3J5cHRvX21ldGhvZCddKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWxmOjpzdXBwb3J0c1RsczEzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgY3J5cHRvX21ldGhvZCByZXF1ZXN0IG9wdGlvbjogVExTIDEuMyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgdmVyc2lvbiBvZiBjVVJMJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTFZFUlNJT05dID0gXENVUkxfU1NMVkVSU0lPTl9UTFN2MV8zOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBjcnlwdG9fbWV0aG9kIHJlcXVlc3Qgb3B0aW9uOiB1bmtub3duIHZlcnNpb24gcHJvdmlkZWQnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKFxTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8wX0NMSUVOVCA9PT0gJG9wdGlvbnNbJ2NyeXB0b19tZXRob2QnXSkgewogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMVkVSU0lPTl0gPSBcQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzA7CiAgICAgICAgICAgIH0gZWxzZWlmIChcU1RSRUFNX0NSWVBUT19NRVRIT0RfVExTdjFfMV9DTElFTlQgPT09ICRvcHRpb25zWydjcnlwdG9fbWV0aG9kJ10pIHsKICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTFZFUlNJT05dID0gXENVUkxfU1NMVkVSU0lPTl9UTFN2MV8xOwogICAgICAgICAgICB9IGVsc2VpZiAoXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzJfQ0xJRU5UID09PSAkb3B0aW9uc1snY3J5cHRvX21ldGhvZCddKSB7CiAgICAgICAgICAgICAgICBpZiAoIXNlbGY6OnN1cHBvcnRzVGxzMTIoKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGNyeXB0b19tZXRob2QgcmVxdWVzdCBvcHRpb246IFRMUyAxLjIgbm90IHN1cHBvcnRlZCBieSB5b3VyIHZlcnNpb24gb2YgY1VSTCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJGNvbmZbXENVUkxPUFRfU1NMVkVSU0lPTl0gPSBcQ1VSTF9TU0xWRVJTSU9OX1RMU3YxXzI7CiAgICAgICAgICAgIH0gZWxzZWlmIChkZWZpbmVkKCdTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8zX0NMSUVOVCcpICYmIFxTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8zX0NMSUVOVCA9PT0gJG9wdGlvbnNbJ2NyeXB0b19tZXRob2QnXSkgewogICAgICAgICAgICAgICAgaWYgKCFzZWxmOjpzdXBwb3J0c1RsczEzKCkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBjcnlwdG9fbWV0aG9kIHJlcXVlc3Qgb3B0aW9uOiBUTFMgMS4zIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciB2ZXJzaW9uIG9mIGNVUkwnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTFZFUlNJT05dID0gXENVUkxfU1NMVkVSU0lPTl9UTFN2MV8zOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgY3J5cHRvX21ldGhvZCByZXF1ZXN0IG9wdGlvbjogdW5rbm93biB2ZXJzaW9uIHByb3ZpZGVkJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snY2VydCddKSkgewogICAgICAgICAgICAkY2VydCA9ICRvcHRpb25zWydjZXJ0J107CiAgICAgICAgICAgIGlmIChcaXNfYXJyYXkoJGNlcnQpKSB7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9TU0xDRVJUUEFTU1dEXSA9ICRjZXJ0WzFdOwogICAgICAgICAgICAgICAgJGNlcnQgPSAkY2VydFswXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoIVxmaWxlX2V4aXN0cygkY2VydCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJTU0wgY2VydGlmaWNhdGUgbm90IGZvdW5kOiB7JGNlcnR9Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gT3BlblNTTCAodmVyc2lvbnMgMC45LjMgYW5kIGxhdGVyKSBhbHNvIHN1cHBvcnQgIlAxMiIgZm9yIFBLQ1MjMTItZW5jb2RlZCBmaWxlcy4KICAgICAgICAgICAgLy8gc2VlIGh0dHBzOi8vY3VybC5zZS9saWJjdXJsL2MvQ1VSTE9QVF9TU0xDRVJUVFlQRS5odG1sCiAgICAgICAgICAgICRleHQgPSBwYXRoaW5mbygkY2VydCwgXFBBVEhJTkZPX0VYVEVOU0lPTik7CiAgICAgICAgICAgIGlmIChwcmVnX21hdGNoKCcjXihkZXJ8cDEyKSQjaScsICRleHQpKSB7CiAgICAgICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9TU0xDRVJUVFlQRV0gPSBzdHJ0b3VwcGVyKCRleHQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTENFUlRdID0gJGNlcnQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ3NzbF9rZXknXSkpIHsKICAgICAgICAgICAgaWYgKFxpc19hcnJheSgkb3B0aW9uc1snc3NsX2tleSddKSkgewogICAgICAgICAgICAgICAgaWYgKFxjb3VudCgkb3B0aW9uc1snc3NsX2tleSddKSA9PT0gMikgewogICAgICAgICAgICAgICAgICAgIFskc3NsS2V5LCAkY29uZltcQ1VSTE9QVF9TU0xLRVlQQVNTV0RdXSA9ICRvcHRpb25zWydzc2xfa2V5J107CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIFskc3NsS2V5XSA9ICRvcHRpb25zWydzc2xfa2V5J107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRzc2xLZXkgPSAkc3NsS2V5ID8/ICRvcHRpb25zWydzc2xfa2V5J107CgogICAgICAgICAgICBpZiAoIVxmaWxlX2V4aXN0cygkc3NsS2V5KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oIlNTTCBwcml2YXRlIGtleSBub3QgZm91bmQ6IHskc3NsS2V5fSIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1NTTEtFWV0gPSAkc3NsS2V5OwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydwcm9ncmVzcyddKSkgewogICAgICAgICAgICAkcHJvZ3Jlc3MgPSAkb3B0aW9uc1sncHJvZ3Jlc3MnXTsKICAgICAgICAgICAgaWYgKCFcaXNfY2FsbGFibGUoJHByb2dyZXNzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ3Byb2dyZXNzIGNsaWVudCBvcHRpb24gbXVzdCBiZSBjYWxsYWJsZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX05PUFJPR1JFU1NdID0gZmFsc2U7CiAgICAgICAgICAgICRjb25mW1xDVVJMT1BUX1BST0dSRVNTRlVOQ1RJT05dID0gc3RhdGljIGZ1bmN0aW9uICgkcmVzb3VyY2UsIGludCAkZG93bmxvYWRTaXplLCBpbnQgJGRvd25sb2FkZWQsIGludCAkdXBsb2FkU2l6ZSwgaW50ICR1cGxvYWRlZCkgdXNlICgkcHJvZ3Jlc3MpIHsKICAgICAgICAgICAgICAgICRwcm9ncmVzcygkZG93bmxvYWRTaXplLCAkZG93bmxvYWRlZCwgJHVwbG9hZFNpemUsICR1cGxvYWRlZCk7CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zWydkZWJ1ZyddKSkgewogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9TVERFUlJdID0gVXRpbHM6OmRlYnVnUmVzb3VyY2UoJG9wdGlvbnNbJ2RlYnVnJ10pOwogICAgICAgICAgICAkY29uZltcQ1VSTE9QVF9WRVJCT1NFXSA9IHRydWU7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBmdW5jdGlvbiBlbnN1cmVzIHRoYXQgYSByZXNwb25zZSB3YXMgc2V0IG9uIGEgdHJhbnNhY3Rpb24uIElmIG9uZQogICAgICogd2FzIG5vdCBzZXQsIHRoZW4gdGhlIHJlcXVlc3QgaXMgcmV0cmllZCBpZiBwb3NzaWJsZS4gVGhpcyBlcnJvcgogICAgICogdHlwaWNhbGx5IG1lYW5zIHlvdSBhcmUgc2VuZGluZyBhIHBheWxvYWQsIGN1cmwgZW5jb3VudGVyZWQgYQogICAgICogIkNvbm5lY3Rpb24gZGllZCwgcmV0cnlpbmcgYSBmcmVzaCBjb25uZWN0IiBlcnJvciwgdHJpZWQgdG8gcmV3aW5kIHRoZQogICAgICogc3RyZWFtLCBhbmQgdGhlbiBlbmNvdW50ZXJlZCBhICJuZWNlc3NhcnkgZGF0YSByZXdpbmQgd2Fzbid0IHBvc3NpYmxlIgogICAgICogZXJyb3IsIGNhdXNpbmcgdGhlIHJlcXVlc3QgdG8gYmUgc2VudCB0aHJvdWdoIGN1cmxfbXVsdGlfaW5mb19yZWFkKCkKICAgICAqIHdpdGhvdXQgYW4gZXJyb3Igc3RhdHVzLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UgJGhhbmRsZXIKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcmV0cnlGYWlsZWRSZXdpbmQoY2FsbGFibGUgJGhhbmRsZXIsIEVhc3lIYW5kbGUgJGVhc3ksIGFycmF5ICRjdHgpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gT25seSByZXdpbmQgaWYgdGhlIGJvZHkgaGFzIGJlZW4gcmVhZCBmcm9tLgogICAgICAgICAgICAkYm9keSA9ICRlYXN5LT5yZXF1ZXN0LT5nZXRCb2R5KCk7CiAgICAgICAgICAgIGlmICgkYm9keS0+dGVsbCgpID4gMCkgewogICAgICAgICAgICAgICAgJGJvZHktPnJld2luZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoXFJ1bnRpbWVFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgJGN0eFsnZXJyb3InXSA9ICdUaGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkgZmFpbGVkIHdpdGhvdXQgJwogICAgICAgICAgICAgICAgLidwcm92aWRpbmcgYW4gZXJyb3IuIFRoZSByZXF1ZXN0IHdvdWxkIGhhdmUgYmVlbiByZXRyaWVkLCAnCiAgICAgICAgICAgICAgICAuJ2J1dCBhdHRlbXB0aW5nIHRvIHJld2luZCB0aGUgcmVxdWVzdCBib2R5IGZhaWxlZC4gJwogICAgICAgICAgICAgICAgLidFeGNlcHRpb246ICcuJGU7CgogICAgICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlUmVqZWN0aW9uKCRlYXN5LCAkY3R4KTsKICAgICAgICB9CgogICAgICAgIC8vIFJldHJ5IG5vIG1vcmUgdGhhbiAzIHRpbWVzIGJlZm9yZSBnaXZpbmcgdXAuCiAgICAgICAgaWYgKCFpc3NldCgkZWFzeS0+b3B0aW9uc1snX2N1cmxfcmV0cmllcyddKSkgewogICAgICAgICAgICAkZWFzeS0+b3B0aW9uc1snX2N1cmxfcmV0cmllcyddID0gMTsKICAgICAgICB9IGVsc2VpZiAoJGVhc3ktPm9wdGlvbnNbJ19jdXJsX3JldHJpZXMnXSA9PSAyKSB7CiAgICAgICAgICAgICRjdHhbJ2Vycm9yJ10gPSAnVGhlIGNVUkwgcmVxdWVzdCB3YXMgcmV0cmllZCAzIHRpbWVzICcKICAgICAgICAgICAgICAgIC4nYW5kIGRpZCBub3Qgc3VjY2VlZC4gVGhlIG1vc3QgbGlrZWx5IHJlYXNvbiBmb3IgdGhlIGZhaWx1cmUgJwogICAgICAgICAgICAgICAgLidpcyB0aGF0IGNVUkwgd2FzIHVuYWJsZSB0byByZXdpbmQgdGhlIGJvZHkgb2YgdGhlIHJlcXVlc3QgJwogICAgICAgICAgICAgICAgLidhbmQgc3Vic2VxdWVudCByZXRyaWVzIHJlc3VsdGVkIGluIHRoZSBzYW1lIGVycm9yLiBUdXJuIG9uICcKICAgICAgICAgICAgICAgIC4ndGhlIGRlYnVnIG9wdGlvbiB0byBzZWUgd2hhdCB3ZW50IHdyb25nLiBTZWUgJwogICAgICAgICAgICAgICAgLidodHRwczovL2J1Z3MucGhwLm5ldC9idWcucGhwP2lkPTQ3MjA0IGZvciBtb3JlIGluZm9ybWF0aW9uLic7CgogICAgICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlUmVqZWN0aW9uKCRlYXN5LCAkY3R4KTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICArKyRlYXN5LT5vcHRpb25zWydfY3VybF9yZXRyaWVzJ107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhhbmRsZXIoJGVhc3ktPnJlcXVlc3QsICRlYXN5LT5vcHRpb25zKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZUhlYWRlckZuKEVhc3lIYW5kbGUgJGVhc3kpOiBjYWxsYWJsZQogICAgewogICAgICAgIGlmIChpc3NldCgkZWFzeS0+b3B0aW9uc1snb25faGVhZGVycyddKSkgewogICAgICAgICAgICAkb25IZWFkZXJzID0gJGVhc3ktPm9wdGlvbnNbJ29uX2hlYWRlcnMnXTsKCiAgICAgICAgICAgIGlmICghXGlzX2NhbGxhYmxlKCRvbkhlYWRlcnMpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignb25faGVhZGVycyBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkb25IZWFkZXJzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKCRjaCwgJGgpIHVzZSAoCiAgICAgICAgICAgICRvbkhlYWRlcnMsCiAgICAgICAgICAgICRlYXN5LAogICAgICAgICAgICAmJHN0YXJ0aW5nUmVzcG9uc2UKICAgICAgICApIHsKICAgICAgICAgICAgJHZhbHVlID0gXHRyaW0oJGgpOwogICAgICAgICAgICBpZiAoJHZhbHVlID09PSAnJykgewogICAgICAgICAgICAgICAgJHN0YXJ0aW5nUmVzcG9uc2UgPSB0cnVlOwogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkZWFzeS0+Y3JlYXRlUmVzcG9uc2UoKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgICAgICAgICAkZWFzeS0+Y3JlYXRlUmVzcG9uc2VFeGNlcHRpb24gPSAkZTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCRvbkhlYWRlcnMgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICAgICAkb25IZWFkZXJzKCRlYXN5LT5yZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyBBc3NvY2lhdGUgdGhlIGV4Y2VwdGlvbiB3aXRoIHRoZSBoYW5kbGUgYW5kIHRyaWdnZXIKICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSBjdXJsIGhlYWRlciB3cml0ZSBlcnJvciBieSByZXR1cm5pbmcgMC4KICAgICAgICAgICAgICAgICAgICAgICAgJGVhc3ktPm9uSGVhZGVyc0V4Y2VwdGlvbiA9ICRlOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKCRzdGFydGluZ1Jlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAkc3RhcnRpbmdSZXNwb25zZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgJGVhc3ktPmhlYWRlcnMgPSBbJHZhbHVlXTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRlYXN5LT5oZWFkZXJzW10gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBcc3RybGVuKCRoKTsKICAgICAgICB9OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+aGFuZGxlcyBhcyAkaWQgPT4gJGhhbmRsZSkgewogICAgICAgICAgICBpZiAoUEhQX1ZFUlNJT05fSUQgPCA4MDAwMCkgewogICAgICAgICAgICAgICAgXGN1cmxfY2xvc2UoJGhhbmRsZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHVuc2V0KCR0aGlzLT5oYW5kbGVzWyRpZF0pOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKaW50ZXJmYWNlIEN1cmxGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGNVUkwgaGFuZGxlIHJlc291cmNlLgogICAgICoKICAgICAqIEBwYXJhbSBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0IFJlcXVlc3QKICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICRvcHRpb25zIFRyYW5zZmVyIG9wdGlvbnMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIHdoZW4gYW4gb3B0aW9uIGNhbm5vdCBiZSBhcHBsaWVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBFYXN5SGFuZGxlOwoKICAgIC8qKgogICAgICogUmVsZWFzZSBhbiBlYXN5IGhhbmRsZSwgYWxsb3dpbmcgaXQgdG8gYmUgcmV1c2VkIG9yIGNsb3NlZC4KICAgICAqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIG11c3QgY2FsbCB1bnNldCBvbiB0aGUgZWFzeSBoYW5kbGUncyAiaGFuZGxlIiBwcm9wZXJ0eS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlbGVhc2UoRWFzeUhhbmRsZSAkZWFzeSk6IHZvaWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogSFRUUCBoYW5kbGVyIHRoYXQgdXNlcyBjVVJMIGVhc3kgaGFuZGxlcyBhcyBhIHRyYW5zcG9ydCBsYXllci4KICoKICogV2hlbiB1c2luZyB0aGUgQ3VybEhhbmRsZXIsIGN1c3RvbSBjdXJsIG9wdGlvbnMgY2FuIGJlIHNwZWNpZmllZCBhcyBhbgogKiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBjdXJsIG9wdGlvbiBjb25zdGFudHMgbWFwcGluZyB0byB2YWx1ZXMgaW4gdGhlCiAqICoqY3VybCoqIGtleSBvZiB0aGUgImNsaWVudCIga2V5IG9mIHRoZSByZXF1ZXN0LgogKgogKiBAZmluYWwKICovCmNsYXNzIEN1cmxIYW5kbGVyCnsKICAgIC8qKgogICAgICogQHZhciBDdXJsRmFjdG9yeUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRmYWN0b3J5OwoKICAgIC8qKgogICAgICogQWNjZXB0cyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zOgogICAgICoKICAgICAqIC0gaGFuZGxlX2ZhY3Rvcnk6IE9wdGlvbmFsIGN1cmwgZmFjdG9yeSB1c2VkIHRvIGNyZWF0ZSBjVVJMIGhhbmRsZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5e2hhbmRsZV9mYWN0b3J5PzogP0N1cmxGYWN0b3J5SW50ZXJmYWNlfSAkb3B0aW9ucyBBcnJheSBvZiBvcHRpb25zIHRvIHVzZSB3aXRoIHRoZSBoYW5kbGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5mYWN0b3J5ID0gJG9wdGlvbnNbJ2hhbmRsZV9mYWN0b3J5J10KICAgICAgICAgICAgPz8gbmV3IEN1cmxGYWN0b3J5KDMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2RlbGF5J10pKSB7CiAgICAgICAgICAgIFx1c2xlZXAoJG9wdGlvbnNbJ2RlbGF5J10gKiAxMDAwKTsKICAgICAgICB9CgogICAgICAgICRlYXN5ID0gJHRoaXMtPmZhY3RvcnktPmNyZWF0ZSgkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIFxjdXJsX2V4ZWMoJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgJGVhc3ktPmVycm5vID0gXGN1cmxfZXJybm8oJGVhc3ktPmhhbmRsZSk7CgogICAgICAgIHJldHVybiBDdXJsRmFjdG9yeTo6ZmluaXNoKCR0aGlzLCAkZWFzeSwgJHRoaXMtPmZhY3RvcnkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgQ2xvc3VyZTsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2U7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZUludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcVXRpbHM7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogUmV0dXJucyBhbiBhc3luY2hyb25vdXMgcmVzcG9uc2UgdXNpbmcgY3VybF9tdWx0aV8qIGZ1bmN0aW9ucy4KICoKICogV2hlbiB1c2luZyB0aGUgQ3VybE11bHRpSGFuZGxlciwgY3VzdG9tIGN1cmwgb3B0aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGFzIGFuCiAqIGFzc29jaWF0aXZlIGFycmF5IG9mIGN1cmwgb3B0aW9uIGNvbnN0YW50cyBtYXBwaW5nIHRvIHZhbHVlcyBpbiB0aGUKICogKipjdXJsKioga2V5IG9mIHRoZSBwcm92aWRlZCByZXF1ZXN0IG9wdGlvbnMuCiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgQ3VybE11bHRpSGFuZGxlcgp7CiAgICAvKioKICAgICAqIEB2YXIgQ3VybEZhY3RvcnlJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkZmFjdG9yeTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJHNlbGVjdFRpbWVvdXQ7CgogICAgLyoqCiAgICAgKiBAdmFyIGludCBXaWxsIGJlIGhpZ2hlciB0aGFuIDAgd2hlbiBgY3VybF9tdWx0aV9leGVjYCBpcyBzdGlsbCBydW5uaW5nLgogICAgICovCiAgICBwcml2YXRlICRhY3RpdmUgPSAwOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheSBSZXF1ZXN0IGVudHJ5IGhhbmRsZXMsIGluZGV4ZWQgYnkgaGFuZGxlIGlkIGluIGBhZGRSZXF1ZXN0YC4KICAgICAqCiAgICAgKiBAc2VlIEN1cmxNdWx0aUhhbmRsZXI6OmFkZFJlcXVlc3QKICAgICAqLwogICAgcHJpdmF0ZSAkaGFuZGxlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheTxpbnQsIGZsb2F0PiBBbiBhcnJheSBvZiBkZWxheSB0aW1lcywgaW5kZXhlZCBieSBoYW5kbGUgaWQgaW4gYGFkZFJlcXVlc3RgLgogICAgICoKICAgICAqIEBzZWUgQ3VybE11bHRpSGFuZGxlcjo6YWRkUmVxdWVzdAogICAgICovCiAgICBwcml2YXRlICRkZWxheXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXk8bWl4ZWQ+IEFuIGFzc29jaWF0aXZlIGFycmF5IG9mIENVUkxNT1BUXyogb3B0aW9ucyBhbmQgY29ycmVzcG9uZGluZyB2YWx1ZXMgZm9yIGN1cmxfbXVsdGlfc2V0b3B0KCkKICAgICAqLwogICAgcHJpdmF0ZSAkb3B0aW9ucyA9IFtdOwoKICAgIC8qKiBAdmFyIHJlc291cmNlfFxDdXJsTXVsdGlIYW5kbGUgKi8KICAgIHByaXZhdGUgJF9taDsKCiAgICAvKioKICAgICAqIFRoaXMgaGFuZGxlciBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKICAgICAqCiAgICAgKiAtIGhhbmRsZV9mYWN0b3J5OiBBbiBvcHRpb25hbCBmYWN0b3J5ICB1c2VkIHRvIGNyZWF0ZSBjdXJsIGhhbmRsZXMKICAgICAqIC0gc2VsZWN0X3RpbWVvdXQ6IE9wdGlvbmFsIHRpbWVvdXQgKGluIHNlY29uZHMpIHRvIGJsb2NrIGJlZm9yZSB0aW1pbmcKICAgICAqICAgb3V0IHdoaWxlIHNlbGVjdGluZyBjdXJsIGhhbmRsZXMuIERlZmF1bHRzIHRvIDEgc2Vjb25kLgogICAgICogLSBvcHRpb25zOiBBbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBDVVJMTU9QVF8qIG9wdGlvbnMgYW5kCiAgICAgKiAgIGNvcnJlc3BvbmRpbmcgdmFsdWVzIGZvciBjdXJsX211bHRpX3NldG9wdCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkb3B0aW9ucyA9IFtdKQogICAgewogICAgICAgICR0aGlzLT5mYWN0b3J5ID0gJG9wdGlvbnNbJ2hhbmRsZV9mYWN0b3J5J10gPz8gbmV3IEN1cmxGYWN0b3J5KDUwKTsKCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzZWxlY3RfdGltZW91dCddKSkgewogICAgICAgICAgICAkdGhpcy0+c2VsZWN0VGltZW91dCA9ICRvcHRpb25zWydzZWxlY3RfdGltZW91dCddOwogICAgICAgIH0gZWxzZWlmICgkc2VsZWN0VGltZW91dCA9IFV0aWxzOjpnZXRlbnYoJ0dVWlpMRV9DVVJMX1NFTEVDVF9USU1FT1VUJykpIHsKICAgICAgICAgICAgQHRyaWdnZXJfZXJyb3IoJ1NpbmNlIGd1enpsZWh0dHAvZ3V6emxlIDcuMi4wOiBVc2luZyBlbnZpcm9ubWVudCB2YXJpYWJsZSBHVVpaTEVfQ1VSTF9TRUxFQ1RfVElNRU9VVCBpcyBkZXByZWNhdGVkLiBVc2Ugb3B0aW9uICJzZWxlY3RfdGltZW91dCIgaW5zdGVhZC4nLCBcRV9VU0VSX0RFUFJFQ0FURUQpOwogICAgICAgICAgICAkdGhpcy0+c2VsZWN0VGltZW91dCA9IChpbnQpICRzZWxlY3RUaW1lb3V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICR0aGlzLT5zZWxlY3RUaW1lb3V0ID0gMTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5vcHRpb25zID0gJG9wdGlvbnNbJ29wdGlvbnMnXSA/PyBbXTsKCiAgICAgICAgLy8gdW5zZXR0aW5nIHRoZSBwcm9wZXJ0eSBmb3JjZXMgdGhlIGZpcnN0IGFjY2VzcyB0byBnbyB0aHJvdWdoCiAgICAgICAgLy8gX19nZXQoKS4KICAgICAgICB1bnNldCgkdGhpcy0+X21oKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlfFxDdXJsTXVsdGlIYW5kbGUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uIHdoZW4gYW5vdGhlciBmaWVsZCBhcyBgX21oYCB3aWxsIGJlIGdvdHRlbgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiAgICAgICB3aGVuIGN1cmwgY2FuIG5vdCBpbml0aWFsaXplIGEgbXVsdGkgaGFuZGxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICBpZiAoJG5hbWUgIT09ICdfbWgnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbigiQ2FuIG5vdCBnZXQgb3RoZXIgcHJvcGVydHkgYXMgJ19taCcuIik7CiAgICAgICAgfQoKICAgICAgICAkbXVsdGlIYW5kbGUgPSBcY3VybF9tdWx0aV9pbml0KCk7CgogICAgICAgIGlmIChmYWxzZSA9PT0gJG11bHRpSGFuZGxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2FuIG5vdCBpbml0aWFsaXplIGN1cmwgbXVsdGkgaGFuZGxlLicpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPl9taCA9ICRtdWx0aUhhbmRsZTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPm9wdGlvbnMgYXMgJG9wdGlvbiA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgLy8gQSB3YXJuaW5nIGlzIHJhaXNlZCBpbiBjYXNlIG9mIGEgd3Jvbmcgb3B0aW9uLgogICAgICAgICAgICBjdXJsX211bHRpX3NldG9wdCgkdGhpcy0+X21oLCAkb3B0aW9uLCAkdmFsdWUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5fbWg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgIGlmIChpc3NldCgkdGhpcy0+X21oKSkgewogICAgICAgICAgICBcY3VybF9tdWx0aV9jbG9zZSgkdGhpcy0+X21oKTsKICAgICAgICAgICAgdW5zZXQoJHRoaXMtPl9taCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkZWFzeSA9ICR0aGlzLT5mYWN0b3J5LT5jcmVhdGUoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAkaWQgPSAoaW50KSAkZWFzeS0+aGFuZGxlOwoKICAgICAgICAkcHJvbWlzZSA9IG5ldyBQcm9taXNlKAogICAgICAgICAgICBbJHRoaXMsICdleGVjdXRlJ10sCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHVzZSAoJGlkKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNhbmNlbCgkaWQpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgJHRoaXMtPmFkZFJlcXVlc3QoWydlYXN5JyA9PiAkZWFzeSwgJ2RlZmVycmVkJyA9PiAkcHJvbWlzZV0pOwoKICAgICAgICByZXR1cm4gJHByb21pc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaWNrcyB0aGUgY3VybCBldmVudCBsb29wLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGljaygpOiB2b2lkCiAgICB7CiAgICAgICAgLy8gQWRkIGFueSBkZWxheWVkIGhhbmRsZXMgaWYgbmVlZGVkLgogICAgICAgIGlmICgkdGhpcy0+ZGVsYXlzKSB7CiAgICAgICAgICAgICRjdXJyZW50VGltZSA9IFV0aWxzOjpjdXJyZW50VGltZSgpOwogICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZGVsYXlzIGFzICRpZCA9PiAkZGVsYXkpIHsKICAgICAgICAgICAgICAgIGlmICgkY3VycmVudFRpbWUgPj0gJGRlbGF5KSB7CiAgICAgICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmRlbGF5c1skaWRdKTsKICAgICAgICAgICAgICAgICAgICBcY3VybF9tdWx0aV9hZGRfaGFuZGxlKAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+X21oLAogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aGFuZGxlc1skaWRdWydlYXN5J10tPmhhbmRsZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIFJ1biBjdXJsX211bHRpX2V4ZWMgaW4gdGhlIHF1ZXVlIHRvIGVuYWJsZSBvdGhlciBhc3luYyB0YXNrcyB0byBydW4KICAgICAgICBQXFV0aWxzOjpxdWV1ZSgpLT5hZGQoQ2xvc3VyZTo6ZnJvbUNhbGxhYmxlKFskdGhpcywgJ3RpY2tJblF1ZXVlJ10pKTsKCiAgICAgICAgLy8gU3RlcCB0aHJvdWdoIHRoZSB0YXNrIHF1ZXVlIHdoaWNoIG1heSBhZGQgYWRkaXRpb25hbCByZXF1ZXN0cy4KICAgICAgICBQXFV0aWxzOjpxdWV1ZSgpLT5ydW4oKTsKCiAgICAgICAgaWYgKCR0aGlzLT5hY3RpdmUgJiYgXGN1cmxfbXVsdGlfc2VsZWN0KCR0aGlzLT5fbWgsICR0aGlzLT5zZWxlY3RUaW1lb3V0KSA9PT0gLTEpIHsKICAgICAgICAgICAgLy8gUGVyZm9ybSBhIHVzbGVlcCBpZiBhIHNlbGVjdCByZXR1cm5zIC0xLgogICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vYnVncy5waHAubmV0L2J1Zy5waHA/aWQ9NjExNDEKICAgICAgICAgICAgXHVzbGVlcCgyNTApOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKFxjdXJsX211bHRpX2V4ZWMoJHRoaXMtPl9taCwgJHRoaXMtPmFjdGl2ZSkgPT09IFxDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0pIHsKICAgICAgICAgICAgLy8gUHJldmVudCBidXN5IGxvb3BpbmcgZm9yIHNsb3cgSFRUUCByZXF1ZXN0cy4KICAgICAgICAgICAgXGN1cmxfbXVsdGlfc2VsZWN0KCR0aGlzLT5fbWgsICR0aGlzLT5zZWxlY3RUaW1lb3V0KTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5wcm9jZXNzTWVzc2FnZXMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJ1bnMgXGN1cmxfbXVsdGlfZXhlYygpIGluc2lkZSB0aGUgZXZlbnQgbG9vcCwgdG8gcHJldmVudCBidXN5IGxvb3BpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB0aWNrSW5RdWV1ZSgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKFxjdXJsX211bHRpX2V4ZWMoJHRoaXMtPl9taCwgJHRoaXMtPmFjdGl2ZSkgPT09IFxDVVJMTV9DQUxMX01VTFRJX1BFUkZPUk0pIHsKICAgICAgICAgICAgXGN1cmxfbXVsdGlfc2VsZWN0KCR0aGlzLT5fbWgsIDApOwogICAgICAgICAgICBQXFV0aWxzOjpxdWV1ZSgpLT5hZGQoQ2xvc3VyZTo6ZnJvbUNhbGxhYmxlKFskdGhpcywgJ3RpY2tJblF1ZXVlJ10pKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBSdW5zIHVudGlsIGFsbCBvdXRzdGFuZGluZyBjb25uZWN0aW9ucyBoYXZlIGNvbXBsZXRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoKTogdm9pZAogICAgewogICAgICAgICRxdWV1ZSA9IFBcVXRpbHM6OnF1ZXVlKCk7CgogICAgICAgIHdoaWxlICgkdGhpcy0+aGFuZGxlcyB8fCAhJHF1ZXVlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIHRyYW5zZmVycywgdGhlbiBzbGVlcCBmb3IgdGhlIG5leHQgZGVsYXkKICAgICAgICAgICAgaWYgKCEkdGhpcy0+YWN0aXZlICYmICR0aGlzLT5kZWxheXMpIHsKICAgICAgICAgICAgICAgIFx1c2xlZXAoJHRoaXMtPnRpbWVUb05leHQoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPnRpY2soKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRSZXF1ZXN0KGFycmF5ICRlbnRyeSk6IHZvaWQKICAgIHsKICAgICAgICAkZWFzeSA9ICRlbnRyeVsnZWFzeSddOwogICAgICAgICRpZCA9IChpbnQpICRlYXN5LT5oYW5kbGU7CiAgICAgICAgJHRoaXMtPmhhbmRsZXNbJGlkXSA9ICRlbnRyeTsKICAgICAgICBpZiAoZW1wdHkoJGVhc3ktPm9wdGlvbnNbJ2RlbGF5J10pKSB7CiAgICAgICAgICAgIFxjdXJsX211bHRpX2FkZF9oYW5kbGUoJHRoaXMtPl9taCwgJGVhc3ktPmhhbmRsZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPmRlbGF5c1skaWRdID0gVXRpbHM6OmN1cnJlbnRUaW1lKCkgKyAoJGVhc3ktPm9wdGlvbnNbJ2RlbGF5J10gLyAxMDAwKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDYW5jZWxzIGEgaGFuZGxlIGZyb20gc2VuZGluZyBhbmQgcmVtb3ZlcyByZWZlcmVuY2VzIHRvIGl0LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJGlkIEhhbmRsZSBJRCB0byBjYW5jZWwgYW5kIHJlbW92ZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsdXJlLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhbmNlbCgkaWQpOiBib29sCiAgICB7CiAgICAgICAgaWYgKCFpc19pbnQoJGlkKSkgewogICAgICAgICAgICB0cmlnZ2VyX2RlcHJlY2F0aW9uKCdndXp6bGVodHRwL2d1enpsZScsICc3LjQnLCAnTm90IHBhc3NpbmcgYW4gaW50ZWdlciB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAvLyBDYW5ub3QgY2FuY2VsIGlmIGl0IGhhcyBiZWVuIHByb2Nlc3NlZC4KICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5oYW5kbGVzWyRpZF0pKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRoYW5kbGUgPSAkdGhpcy0+aGFuZGxlc1skaWRdWydlYXN5J10tPmhhbmRsZTsKICAgICAgICB1bnNldCgkdGhpcy0+ZGVsYXlzWyRpZF0sICR0aGlzLT5oYW5kbGVzWyRpZF0pOwogICAgICAgIFxjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoJHRoaXMtPl9taCwgJGhhbmRsZSk7CgogICAgICAgIGlmIChQSFBfVkVSU0lPTl9JRCA8IDgwMDAwKSB7CiAgICAgICAgICAgIFxjdXJsX2Nsb3NlKCRoYW5kbGUpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzTWVzc2FnZXMoKTogdm9pZAogICAgewogICAgICAgIHdoaWxlICgkZG9uZSA9IFxjdXJsX211bHRpX2luZm9fcmVhZCgkdGhpcy0+X21oKSkgewogICAgICAgICAgICBpZiAoJGRvbmVbJ21zZyddICE9PSBcQ1VSTE1TR19ET05FKSB7CiAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIG5vdCBkb25lLCB0aGVuIGl0IHdvdWxkIGJlIHByZW1hdHVyZSB0byByZW1vdmUgdGhlIGhhbmRsZS4gcmVmIGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL3B1bGwvMjg5MiNpc3N1ZWNvbW1lbnQtOTQ1MTUwMjE2CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaWQgPSAoaW50KSAkZG9uZVsnaGFuZGxlJ107CiAgICAgICAgICAgIFxjdXJsX211bHRpX3JlbW92ZV9oYW5kbGUoJHRoaXMtPl9taCwgJGRvbmVbJ2hhbmRsZSddKTsKCiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhhbmRsZXNbJGlkXSkpIHsKICAgICAgICAgICAgICAgIC8vIFByb2JhYmx5IHdhcyBjYW5jZWxsZWQuCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVudHJ5ID0gJHRoaXMtPmhhbmRsZXNbJGlkXTsKICAgICAgICAgICAgdW5zZXQoJHRoaXMtPmhhbmRsZXNbJGlkXSwgJHRoaXMtPmRlbGF5c1skaWRdKTsKICAgICAgICAgICAgJGVudHJ5WydlYXN5J10tPmVycm5vID0gJGRvbmVbJ3Jlc3VsdCddOwogICAgICAgICAgICAkZW50cnlbJ2RlZmVycmVkJ10tPnJlc29sdmUoCiAgICAgICAgICAgICAgICBDdXJsRmFjdG9yeTo6ZmluaXNoKCR0aGlzLCAkZW50cnlbJ2Vhc3knXSwgJHRoaXMtPmZhY3RvcnkpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdGltZVRvTmV4dCgpOiBpbnQKICAgIHsKICAgICAgICAkY3VycmVudFRpbWUgPSBVdGlsczo6Y3VycmVudFRpbWUoKTsKICAgICAgICAkbmV4dFRpbWUgPSBcUEhQX0lOVF9NQVg7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmRlbGF5cyBhcyAkdGltZSkgewogICAgICAgICAgICBpZiAoJHRpbWUgPCAkbmV4dFRpbWUpIHsKICAgICAgICAgICAgICAgICRuZXh0VGltZSA9ICR0aW1lOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gKChpbnQpIFxtYXgoMCwgJG5leHRUaW1lIC0gJGN1cnJlbnRUaW1lKSkgKiAxMDAwMDAwOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/EasyHandle.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxQc3I3XFJlc3BvbnNlOwp1c2UgR3V6emxlSHR0cFxVdGlsczsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBSZXByZXNlbnRzIGEgY1VSTCBlYXN5IGhhbmRsZSBhbmQgdGhlIGRhdGEgaXQgcG9wdWxhdGVzLgogKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEVhc3lIYW5kbGUKewogICAgLyoqCiAgICAgKiBAdmFyIHJlc291cmNlfFxDdXJsSGFuZGxlIGNVUkwgcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljICRoYW5kbGU7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZSBXaGVyZSBkYXRhIGlzIGJlaW5nIHdyaXR0ZW4KICAgICAqLwogICAgcHVibGljICRzaW5rOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheSBSZWNlaXZlZCBIVFRQIGhlYWRlcnMgc28gZmFyCiAgICAgKi8KICAgIHB1YmxpYyAkaGVhZGVycyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBSZXNwb25zZUludGVyZmFjZXxudWxsIFJlY2VpdmVkIHJlc3BvbnNlIChpZiBhbnkpCiAgICAgKi8KICAgIHB1YmxpYyAkcmVzcG9uc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIFJlcXVlc3RJbnRlcmZhY2UgUmVxdWVzdCBiZWluZyBzZW50CiAgICAgKi8KICAgIHB1YmxpYyAkcmVxdWVzdDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkgUmVxdWVzdCBvcHRpb25zCiAgICAgKi8KICAgIHB1YmxpYyAkb3B0aW9ucyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBpbnQgY1VSTCBlcnJvciBudW1iZXIgKGlmIGFueSkKICAgICAqLwogICAgcHVibGljICRlcnJubyA9IDA7CgogICAgLyoqCiAgICAgKiBAdmFyIFxUaHJvd2FibGV8bnVsbCBFeGNlcHRpb24gZHVyaW5nIG9uX2hlYWRlcnMgKGlmIGFueSkKICAgICAqLwogICAgcHVibGljICRvbkhlYWRlcnNFeGNlcHRpb247CgogICAgLyoqCiAgICAgKiBAdmFyIFxFeGNlcHRpb258bnVsbCBFeGNlcHRpb24gZHVyaW5nIGNyZWF0ZVJlc3BvbnNlIChpZiBhbnkpCiAgICAgKi8KICAgIHB1YmxpYyAkY3JlYXRlUmVzcG9uc2VFeGNlcHRpb247CgogICAgLyoqCiAgICAgKiBBdHRhY2ggYSByZXNwb25zZSB0byB0aGUgZWFzeSBoYW5kbGUgYmFzZWQgb24gdGhlIHJlY2VpdmVkIGhlYWRlcnMuCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBubyBoZWFkZXJzIGhhdmUgYmVlbiByZWNlaXZlZCBvciB0aGUgZmlyc3QKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyIGxpbmUgaXMgaW52YWxpZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlKCk6IHZvaWQKICAgIHsKICAgICAgICBbJHZlciwgJHN0YXR1cywgJHJlYXNvbiwgJGhlYWRlcnNdID0gSGVhZGVyUHJvY2Vzc29yOjpwYXJzZUhlYWRlcnMoJHRoaXMtPmhlYWRlcnMpOwoKICAgICAgICAkbm9ybWFsaXplZEtleXMgPSBVdGlsczo6bm9ybWFsaXplSGVhZGVyS2V5cygkaGVhZGVycyk7CgogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPm9wdGlvbnNbJ2RlY29kZV9jb250ZW50J10pICYmIGlzc2V0KCRub3JtYWxpemVkS2V5c1snY29udGVudC1lbmNvZGluZyddKSkgewogICAgICAgICAgICAkaGVhZGVyc1sneC1lbmNvZGVkLWNvbnRlbnQtZW5jb2RpbmcnXSA9ICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1lbmNvZGluZyddXTsKICAgICAgICAgICAgdW5zZXQoJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ11dKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWyd4LWVuY29kZWQtY29udGVudC1sZW5ndGgnXSA9ICRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXV07CgogICAgICAgICAgICAgICAgJGJvZHlMZW5ndGggPSAoaW50KSAkdGhpcy0+c2luay0+Z2V0U2l6ZSgpOwogICAgICAgICAgICAgICAgaWYgKCRib2R5TGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXSA9ICRib2R5TGVuZ3RoOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtbGVuZ3RoJ11dKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQXR0YWNoIGEgcmVzcG9uc2UgdG8gdGhlIGVhc3kgaGFuZGxlIHdpdGggdGhlIHBhcnNlZCBoZWFkZXJzLgogICAgICAgICR0aGlzLT5yZXNwb25zZSA9IG5ldyBSZXNwb25zZSgKICAgICAgICAgICAgJHN0YXR1cywKICAgICAgICAgICAgJGhlYWRlcnMsCiAgICAgICAgICAgICR0aGlzLT5zaW5rLAogICAgICAgICAgICAkdmVyLAogICAgICAgICAgICAkcmVhc29uCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkbmFtZSkKICAgIHsKICAgICAgICAkbXNnID0gJG5hbWUgPT09ICdoYW5kbGUnID8gJ1RoZSBFYXN5SGFuZGxlIGhhcyBiZWVuIHJlbGVhc2VkJyA6ICdJbnZhbGlkIHByb3BlcnR5OiAnLiRuYW1lOwogICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbigkbXNnKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxVdGlsczsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIEhlYWRlclByb2Nlc3Nvcgp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEhUVFAgdmVyc2lvbiwgc3RhdHVzIGNvZGUsIHJlYXNvbiBwaHJhc2UsIGFuZCBoZWFkZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkaGVhZGVycwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl7MDpzdHJpbmcsIDE6aW50LCAyOj9zdHJpbmcsIDM6YXJyYXl9CiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlSGVhZGVycyhhcnJheSAkaGVhZGVycyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCRoZWFkZXJzID09PSBbXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0V4cGVjdGVkIGEgbm9uLWVtcHR5IGFycmF5IG9mIGhlYWRlciBkYXRhJyk7CiAgICAgICAgfQoKICAgICAgICAkcGFydHMgPSBcZXhwbG9kZSgnICcsIFxhcnJheV9zaGlmdCgkaGVhZGVycyksIDMpOwogICAgICAgICR2ZXJzaW9uID0gXGV4cGxvZGUoJy8nLCAkcGFydHNbMF0pWzFdID8/IG51bGw7CgogICAgICAgIGlmICgkdmVyc2lvbiA9PT0gbnVsbCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0hUVFAgdmVyc2lvbiBtaXNzaW5nIGZyb20gaGVhZGVyIGRhdGEnKTsKICAgICAgICB9CgogICAgICAgICRzdGF0dXMgPSAkcGFydHNbMV0gPz8gbnVsbDsKCiAgICAgICAgaWYgKCRzdGF0dXMgPT09IG51bGwpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdIVFRQIHN0YXR1cyBjb2RlIG1pc3NpbmcgZnJvbSBoZWFkZXIgZGF0YScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskdmVyc2lvbiwgKGludCkgJHN0YXR1cywgJHBhcnRzWzJdID8/IG51bGwsIFV0aWxzOjpoZWFkZXJzRnJvbUxpbmVzKCRoZWFkZXJzKV07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/MockHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcSGFuZGxlclN0YWNrOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlIGFzIFA7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZUludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcVHJhbnNmZXJTdGF0czsKdXNlIEd1enpsZUh0dHBcVXRpbHM7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CgovKioKICogSGFuZGxlciB0aGF0IHJldHVybnMgcmVzcG9uc2VzIG9yIHRocm93IGV4Y2VwdGlvbnMgZnJvbSBhIHF1ZXVlLgogKgogKiBAZmluYWwKICovCmNsYXNzIE1vY2tIYW5kbGVyIGltcGxlbWVudHMgXENvdW50YWJsZQp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkcXVldWUgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgUmVxdWVzdEludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGxhc3RSZXF1ZXN0OwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRsYXN0T3B0aW9ucyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJG9uRnVsZmlsbGVkOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJG9uUmVqZWN0ZWQ7CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbmV3IE1vY2tIYW5kbGVyIHRoYXQgdXNlcyB0aGUgZGVmYXVsdCBoYW5kbGVyIHN0YWNrIGxpc3Qgb2YKICAgICAqIG1pZGRsZXdhcmVzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheXxudWxsICAgICRxdWV1ZSAgICAgICBBcnJheSBvZiByZXNwb25zZXMsIGNhbGxhYmxlcywgb3IgZXhjZXB0aW9ucy4KICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICRvbkZ1bGZpbGxlZCBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIGZ1bGZpbGxlZC4KICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICRvblJlamVjdGVkICBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIHJlamVjdGVkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZVdpdGhNaWRkbGV3YXJlKD9hcnJheSAkcXVldWUgPSBudWxsLCA/Y2FsbGFibGUgJG9uRnVsZmlsbGVkID0gbnVsbCwgP2NhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbCk6IEhhbmRsZXJTdGFjawogICAgewogICAgICAgIHJldHVybiBIYW5kbGVyU3RhY2s6OmNyZWF0ZShuZXcgc2VsZigkcXVldWUsICRvbkZ1bGZpbGxlZCwgJG9uUmVqZWN0ZWQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoZSBwYXNzZWQgaW4gdmFsdWUgbXVzdCBiZSBhbiBhcnJheSBvZgogICAgICoge0BzZWUgUmVzcG9uc2VJbnRlcmZhY2V9IG9iamVjdHMsIEV4Y2VwdGlvbnMsCiAgICAgKiBjYWxsYWJsZXMsIG9yIFByb21pc2VzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheTxpbnQsIG1peGVkPnxudWxsICRxdWV1ZSAgICAgICBUaGUgcGFyYW1ldGVycyB0byBiZSBwYXNzZWQgdG8gdGhlIGFwcGVuZCBmdW5jdGlvbiwgYXMgYW4gaW5kZXhlZCBhcnJheS4KICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICAgICAgICAgICRvbkZ1bGZpbGxlZCBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIGZ1bGZpbGxlZC4KICAgICAqIEBwYXJhbSBjYWxsYWJsZXxudWxsICAgICAgICAgICRvblJlamVjdGVkICBDYWxsYmFjayB0byBpbnZva2Ugd2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIHJlamVjdGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP2FycmF5ICRxdWV1ZSA9IG51bGwsID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLCA/Y2FsbGFibGUgJG9uUmVqZWN0ZWQgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5vbkZ1bGZpbGxlZCA9ICRvbkZ1bGZpbGxlZDsKICAgICAgICAkdGhpcy0+b25SZWplY3RlZCA9ICRvblJlamVjdGVkOwoKICAgICAgICBpZiAoJHF1ZXVlKSB7CiAgICAgICAgICAgIC8vIGFycmF5X3ZhbHVlcyBpbmNsdWRlZCBmb3IgQkMKICAgICAgICAgICAgJHRoaXMtPmFwcGVuZCguLi5hcnJheV92YWx1ZXMoJHF1ZXVlKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5xdWV1ZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXE91dE9mQm91bmRzRXhjZXB0aW9uKCdNb2NrIHF1ZXVlIGlzIGVtcHR5Jyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2RlbGF5J10pICYmIFxpc19udW1lcmljKCRvcHRpb25zWydkZWxheSddKSkgewogICAgICAgICAgICBcdXNsZWVwKChpbnQpICRvcHRpb25zWydkZWxheSddICogMTAwMCk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bGFzdFJlcXVlc3QgPSAkcmVxdWVzdDsKICAgICAgICAkdGhpcy0+bGFzdE9wdGlvbnMgPSAkb3B0aW9uczsKICAgICAgICAkcmVzcG9uc2UgPSBcYXJyYXlfc2hpZnQoJHRoaXMtPnF1ZXVlKTsKCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydvbl9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgIGlmICghXGlzX2NhbGxhYmxlKCRvcHRpb25zWydvbl9oZWFkZXJzJ10pKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignb25faGVhZGVycyBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRvcHRpb25zWydvbl9oZWFkZXJzJ10oJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgJG1zZyA9ICdBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgZHVyaW5nIHRoZSBvbl9oZWFkZXJzIGV2ZW50JzsKICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKCRtc2csICRyZXF1ZXN0LCAkcmVzcG9uc2UsICRlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKFxpc19jYWxsYWJsZSgkcmVzcG9uc2UpKSB7CiAgICAgICAgICAgICRyZXNwb25zZSA9ICRyZXNwb25zZSgkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgJHJlc3BvbnNlID0gJHJlc3BvbnNlIGluc3RhbmNlb2YgXFRocm93YWJsZQogICAgICAgICAgICA/IFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoJHJlc3BvbnNlKQogICAgICAgICAgICA6IFBcQ3JlYXRlOjpwcm9taXNlRm9yKCRyZXNwb25zZSk7CgogICAgICAgIHJldHVybiAkcmVzcG9uc2UtPnRoZW4oCiAgICAgICAgICAgIGZ1bmN0aW9uICg/UmVzcG9uc2VJbnRlcmZhY2UgJHZhbHVlKSB1c2UgKCRyZXF1ZXN0LCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRyZXF1ZXN0LCAkb3B0aW9ucywgJHZhbHVlKTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+b25GdWxmaWxsZWQpIHsKICAgICAgICAgICAgICAgICAgICAoJHRoaXMtPm9uRnVsZmlsbGVkKSgkdmFsdWUpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkdmFsdWUgIT09IG51bGwgJiYgaXNzZXQoJG9wdGlvbnNbJ3NpbmsnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkY29udGVudHMgPSAoc3RyaW5nKSAkdmFsdWUtPmdldEJvZHkoKTsKICAgICAgICAgICAgICAgICAgICAkc2luayA9ICRvcHRpb25zWydzaW5rJ107CgogICAgICAgICAgICAgICAgICAgIGlmIChcaXNfcmVzb3VyY2UoJHNpbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFxmd3JpdGUoJHNpbmssICRjb250ZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKFxpc19zdHJpbmcoJHNpbmspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFxmaWxlX3B1dF9jb250ZW50cygkc2luaywgJGNvbnRlbnRzKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHNpbmsgaW5zdGFuY2VvZiBTdHJlYW1JbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNpbmstPndyaXRlKCRjb250ZW50cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVhc29uKSB1c2UgKCRyZXF1ZXN0LCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRyZXF1ZXN0LCAkb3B0aW9ucywgbnVsbCwgJHJlYXNvbik7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm9uUmVqZWN0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAoJHRoaXMtPm9uUmVqZWN0ZWQpKCRyZWFzb24pOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKCRyZWFzb24pOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgb25lIG9yIG1vcmUgdmFyaWFkaWMgcmVxdWVzdHMsIGV4Y2VwdGlvbnMsIGNhbGxhYmxlcywgb3IgcHJvbWlzZXMKICAgICAqIHRvIHRoZSBxdWV1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgLi4uJHZhbHVlcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYXBwZW5kKC4uLiR2YWx1ZXMpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpIHsKICAgICAgICAgICAgaWYgKCR2YWx1ZSBpbnN0YW5jZW9mIFJlc3BvbnNlSW50ZXJmYWNlCiAgICAgICAgICAgICAgICB8fCAkdmFsdWUgaW5zdGFuY2VvZiBcVGhyb3dhYmxlCiAgICAgICAgICAgICAgICB8fCAkdmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlCiAgICAgICAgICAgICAgICB8fCBcaXNfY2FsbGFibGUoJHZhbHVlKQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICR0aGlzLT5xdWV1ZVtdID0gJHZhbHVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgUmVzcG9uc2UsIFByb21pc2UsIFRocm93YWJsZSBvciBjYWxsYWJsZS4gRm91bmQgJy5VdGlsczo6ZGVzY3JpYmVUeXBlKCR2YWx1ZSkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSBsYXN0IHJlY2VpdmVkIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMYXN0UmVxdWVzdCgpOiA/UmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGFzdFJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGxhc3QgcmVjZWl2ZWQgcmVxdWVzdCBvcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGFzdE9wdGlvbnMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmxhc3RPcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBpdGVtcyBpbiB0aGUgcXVldWUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gXGNvdW50KCR0aGlzLT5xdWV1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlc2V0KCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cXVldWUgPSBbXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkcmVhc29uIFByb21pc2Ugb3IgcmVhc29uLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludm9rZVN0YXRzKAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgYXJyYXkgJG9wdGlvbnMsCiAgICAgICAgP1Jlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwsCiAgICAgICAgJHJlYXNvbiA9IG51bGwKICAgICk6IHZvaWQgewogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snb25fc3RhdHMnXSkpIHsKICAgICAgICAgICAgJHRyYW5zZmVyVGltZSA9ICRvcHRpb25zWyd0cmFuc2Zlcl90aW1lJ10gPz8gMDsKICAgICAgICAgICAgJHN0YXRzID0gbmV3IFRyYW5zZmVyU3RhdHMoJHJlcXVlc3QsICRyZXNwb25zZSwgJHRyYW5zZmVyVGltZSwgJHJlYXNvbik7CiAgICAgICAgICAgICgkb3B0aW9uc1snb25fc3RhdHMnXSkoJHN0YXRzKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/Proxy.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFJlcXVlc3RPcHRpb25zOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFByb3ZpZGVzIGJhc2ljIHByb3hpZXMgZm9yIGhhbmRsZXJzLgogKgogKiBAZmluYWwKICovCmNsYXNzIFByb3h5CnsKICAgIC8qKgogICAgICogU2VuZHMgc3luY2hyb25vdXMgcmVxdWVzdHMgdG8gYSBzcGVjaWZpYyBoYW5kbGVyIHdoaWxlIHNlbmRpbmcgYWxsIG90aGVyCiAgICAgKiByZXF1ZXN0cyB0byBhbm90aGVyIGhhbmRsZXIuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkZGVmYXVsdCBIYW5kbGVyIHVzZWQgZm9yIG5vcm1hbCByZXNwb25zZXMKICAgICAqIEBwYXJhbSBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UgJHN5bmMgICAgSGFuZGxlciB1c2VkIGZvciBzeW5jaHJvbm91cyByZXNwb25zZXMuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UgUmV0dXJucyB0aGUgY29tcG9zZWQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3cmFwU3luYyhjYWxsYWJsZSAkZGVmYXVsdCwgY2FsbGFibGUgJHN5bmMpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRkZWZhdWx0LCAkc3luYyk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgICAgICByZXR1cm4gZW1wdHkoJG9wdGlvbnNbUmVxdWVzdE9wdGlvbnM6OlNZTkNIUk9OT1VTXSkgPyAkZGVmYXVsdCgkcmVxdWVzdCwgJG9wdGlvbnMpIDogJHN5bmMoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogU2VuZHMgc3RyZWFtaW5nIHJlcXVlc3RzIHRvIGEgc3RyZWFtaW5nIGNvbXBhdGlibGUgaGFuZGxlciB3aGlsZSBzZW5kaW5nCiAgICAgKiBhbGwgb3RoZXIgcmVxdWVzdHMgdG8gYSBkZWZhdWx0IGhhbmRsZXIuCiAgICAgKgogICAgICogVGhpcywgZm9yIGV4YW1wbGUsIGNvdWxkIGJlIHVzZWZ1bCBmb3IgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUKICAgICAqIHBlcmZvcm1hbmNlIGJlbmVmaXRzIG9mIGN1cmwgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyB0cnVlIHN0cmVhbWluZwogICAgICogdGhyb3VnaCB0aGUgU3RyZWFtSGFuZGxlci4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRkZWZhdWx0ICAgSGFuZGxlciB1c2VkIGZvciBub24tc3RyZWFtaW5nIHJlc3BvbnNlcwogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkc3RyZWFtaW5nIEhhbmRsZXIgdXNlZCBmb3Igc3RyZWFtaW5nIHJlc3BvbnNlcwogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlIFJldHVybnMgdGhlIGNvbXBvc2VkIGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd3JhcFN0cmVhbWluZyhjYWxsYWJsZSAkZGVmYXVsdCwgY2FsbGFibGUgJHN0cmVhbWluZyk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGRlZmF1bHQsICRzdHJlYW1pbmcpOiBQcm9taXNlSW50ZXJmYWNlIHsKICAgICAgICAgICAgcmV0dXJuIGVtcHR5KCRvcHRpb25zWydzdHJlYW0nXSkgPyAkZGVmYXVsdCgkcmVxdWVzdCwgJG9wdGlvbnMpIDogJHN0cmVhbWluZygkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwXEhhbmRsZXI7Cgp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXFJlcXVlc3RFeGNlcHRpb247CnVzZSBHdXp6bGVIdHRwXFByb21pc2UgYXMgUDsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxGdWxmaWxsZWRQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjc7CnVzZSBHdXp6bGVIdHRwXFRyYW5zZmVyU3RhdHM7CnVzZSBHdXp6bGVIdHRwXFV0aWxzOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogSFRUUCBoYW5kbGVyIHRoYXQgdXNlcyBQSFAncyBIVFRQIHN0cmVhbSB3cmFwcGVyLgogKgogKiBAZmluYWwKICovCmNsYXNzIFN0cmVhbUhhbmRsZXIKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGxhc3RIZWFkZXJzID0gW107CgogICAgLyoqCiAgICAgKiBTZW5kcyBhbiBIVFRQIHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdCB0byBzZW5kLgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJG9wdGlvbnMgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19pbnZva2UoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gU2xlZXAgaWYgdGhlcmUgaXMgYSBkZWxheSBzcGVjaWZpZWQuCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydkZWxheSddKSkgewogICAgICAgICAgICBcdXNsZWVwKCRvcHRpb25zWydkZWxheSddICogMTAwMCk7CiAgICAgICAgfQoKICAgICAgICAkcHJvdG9jb2xWZXJzaW9uID0gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpOwoKICAgICAgICBpZiAoJzEuMCcgIT09ICRwcm90b2NvbFZlcnNpb24gJiYgJzEuMScgIT09ICRwcm90b2NvbFZlcnNpb24pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IENvbm5lY3RFeGNlcHRpb24oc3ByaW50ZignSFRUUC8lcyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBzdHJlYW0gaGFuZGxlci4nLCAkcHJvdG9jb2xWZXJzaW9uKSwgJHJlcXVlc3QpOwogICAgICAgIH0KCiAgICAgICAgJHN0YXJ0VGltZSA9IGlzc2V0KCRvcHRpb25zWydvbl9zdGF0cyddKSA/IFV0aWxzOjpjdXJyZW50VGltZSgpIDogbnVsbDsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgLy8gRG9lcyBub3Qgc3VwcG9ydCB0aGUgZXhwZWN0IGhlYWRlci4KICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aG91dEhlYWRlcignRXhwZWN0Jyk7CgogICAgICAgICAgICAvLyBBcHBlbmQgYSBjb250ZW50LWxlbmd0aCBoZWFkZXIgaWYgYm9keSBzaXplIGlzIHplcm8gdG8gbWF0Y2gKICAgICAgICAgICAgLy8gdGhlIGJlaGF2aW9yIG9mIGBDdXJsSGFuZGxlcmAKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgIDAgPT09IFxzdHJjYXNlY21wKCdQVVQnLCAkcmVxdWVzdC0+Z2V0TWV0aG9kKCkpCiAgICAgICAgICAgICAgICAgICAgfHwgMCA9PT0gXHN0cmNhc2VjbXAoJ1BPU1QnLCAkcmVxdWVzdC0+Z2V0TWV0aG9kKCkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAmJiAwID09PSAkcmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRTaXplKCkKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAkcmVxdWVzdCA9ICRyZXF1ZXN0LT53aXRoSGVhZGVyKCdDb250ZW50LUxlbmd0aCcsICcwJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y3JlYXRlUmVzcG9uc2UoCiAgICAgICAgICAgICAgICAkcmVxdWVzdCwKICAgICAgICAgICAgICAgICRvcHRpb25zLAogICAgICAgICAgICAgICAgJHRoaXMtPmNyZWF0ZVN0cmVhbSgkcmVxdWVzdCwgJG9wdGlvbnMpLAogICAgICAgICAgICAgICAgJHN0YXJ0VGltZQogICAgICAgICAgICApOwogICAgICAgIH0gY2F0Y2ggKFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIGVycm9yIHdhcyBhIG5ldHdvcmtpbmcgZXJyb3IuCiAgICAgICAgICAgICRtZXNzYWdlID0gJGUtPmdldE1lc3NhZ2UoKTsKICAgICAgICAgICAgLy8gVGhpcyBsaXN0IGNhbiBwcm9iYWJseSBnZXQgbW9yZSBjb21wcmVoZW5zaXZlLgogICAgICAgICAgICBpZiAoZmFsc2UgIT09IFxzdHJwb3MoJG1lc3NhZ2UsICdnZXRhZGRyaW5mbycpIC8vIEROUyBsb29rdXAgZmFpbGVkCiAgICAgICAgICAgICAgICB8fCBmYWxzZSAhPT0gXHN0cnBvcygkbWVzc2FnZSwgJ0Nvbm5lY3Rpb24gcmVmdXNlZCcpCiAgICAgICAgICAgICAgICB8fCBmYWxzZSAhPT0gXHN0cnBvcygkbWVzc2FnZSwgImNvdWxkbid0IGNvbm5lY3QgdG8gaG9zdCIpIC8vIGVycm9yIG9uIEhIVk0KICAgICAgICAgICAgICAgIHx8IGZhbHNlICE9PSBcc3RycG9zKCRtZXNzYWdlLCAnY29ubmVjdGlvbiBhdHRlbXB0IGZhaWxlZCcpCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgJGUgPSBuZXcgQ29ubmVjdEV4Y2VwdGlvbigkZS0+Z2V0TWVzc2FnZSgpLCAkcmVxdWVzdCwgJGUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGUgPSBSZXF1ZXN0RXhjZXB0aW9uOjp3cmFwRXhjZXB0aW9uKCRyZXF1ZXN0LCAkZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRvcHRpb25zLCAkcmVxdWVzdCwgJHN0YXJ0VGltZSwgbnVsbCwgJGUpOwoKICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoJGUpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludm9rZVN0YXRzKAogICAgICAgIGFycmF5ICRvcHRpb25zLAogICAgICAgIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsCiAgICAgICAgP2Zsb2F0ICRzdGFydFRpbWUsCiAgICAgICAgP1Jlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwsCiAgICAgICAgP1xUaHJvd2FibGUgJGVycm9yID0gbnVsbAogICAgKTogdm9pZCB7CiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydvbl9zdGF0cyddKSkgewogICAgICAgICAgICAkc3RhdHMgPSBuZXcgVHJhbnNmZXJTdGF0cygkcmVxdWVzdCwgJHJlc3BvbnNlLCBVdGlsczo6Y3VycmVudFRpbWUoKSAtICRzdGFydFRpbWUsICRlcnJvciwgW10pOwogICAgICAgICAgICAoJG9wdGlvbnNbJ29uX3N0YXRzJ10pKCRzdGF0cyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHJlc291cmNlICRzdHJlYW0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVSZXNwb25zZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucywgJHN0cmVhbSwgP2Zsb2F0ICRzdGFydFRpbWUpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGhkcnMgPSAkdGhpcy0+bGFzdEhlYWRlcnM7CiAgICAgICAgJHRoaXMtPmxhc3RIZWFkZXJzID0gW107CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgIFskdmVyLCAkc3RhdHVzLCAkcmVhc29uLCAkaGVhZGVyc10gPSBIZWFkZXJQcm9jZXNzb3I6OnBhcnNlSGVhZGVycygkaGRycyk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gUFxDcmVhdGU6OnJlamVjdGlvbkZvcigKICAgICAgICAgICAgICAgIG5ldyBSZXF1ZXN0RXhjZXB0aW9uKCdBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgd2hpbGUgY3JlYXRpbmcgdGhlIHJlc3BvbnNlJywgJHJlcXVlc3QsIG51bGwsICRlKQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgWyRzdHJlYW0sICRoZWFkZXJzXSA9ICR0aGlzLT5jaGVja0RlY29kZSgkb3B0aW9ucywgJGhlYWRlcnMsICRzdHJlYW0pOwogICAgICAgICRzdHJlYW0gPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJHN0cmVhbSk7CiAgICAgICAgJHNpbmsgPSAkc3RyZWFtOwoKICAgICAgICBpZiAoXHN0cmNhc2VjbXAoJ0hFQUQnLCAkcmVxdWVzdC0+Z2V0TWV0aG9kKCkpKSB7CiAgICAgICAgICAgICRzaW5rID0gJHRoaXMtPmNyZWF0ZVNpbmsoJHN0cmVhbSwgJG9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHJlc3BvbnNlID0gbmV3IFBzcjdcUmVzcG9uc2UoJHN0YXR1cywgJGhlYWRlcnMsICRzaW5rLCAkdmVyLCAkcmVhc29uKTsKICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBQXENyZWF0ZTo6cmVqZWN0aW9uRm9yKAogICAgICAgICAgICAgICAgbmV3IFJlcXVlc3RFeGNlcHRpb24oJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCB3aGlsZSBjcmVhdGluZyB0aGUgcmVzcG9uc2UnLCAkcmVxdWVzdCwgbnVsbCwgJGUpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRvcHRpb25zWydvbl9oZWFkZXJzJ10oJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoCiAgICAgICAgICAgICAgICAgICAgbmV3IFJlcXVlc3RFeGNlcHRpb24oJ0FuIGVycm9yIHdhcyBlbmNvdW50ZXJlZCBkdXJpbmcgdGhlIG9uX2hlYWRlcnMgZXZlbnQnLCAkcmVxdWVzdCwgJHJlc3BvbnNlLCAkZSkKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIERvIG5vdCBkcmFpbiB3aGVuIHRoZSByZXF1ZXN0IGlzIGEgSEVBRCByZXF1ZXN0IGJlY2F1c2UgdGhleSBoYXZlCiAgICAgICAgLy8gbm8gYm9keS4KICAgICAgICBpZiAoJHNpbmsgIT09ICRzdHJlYW0pIHsKICAgICAgICAgICAgJHRoaXMtPmRyYWluKCRzdHJlYW0sICRzaW5rLCAkcmVzcG9uc2UtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtTGVuZ3RoJykpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPmludm9rZVN0YXRzKCRvcHRpb25zLCAkcmVxdWVzdCwgJHN0YXJ0VGltZSwgJHJlc3BvbnNlLCBudWxsKTsKCiAgICAgICAgcmV0dXJuIG5ldyBGdWxmaWxsZWRQcm9taXNlKCRyZXNwb25zZSk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVTaW5rKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCBhcnJheSAkb3B0aW9ucyk6IFN0cmVhbUludGVyZmFjZQogICAgewogICAgICAgIGlmICghZW1wdHkoJG9wdGlvbnNbJ3N0cmVhbSddKSkgewogICAgICAgICAgICByZXR1cm4gJHN0cmVhbTsKICAgICAgICB9CgogICAgICAgICRzaW5rID0gJG9wdGlvbnNbJ3NpbmsnXSA/PyBQc3I3XFV0aWxzOjp0cnlGb3BlbigncGhwOi8vdGVtcCcsICdyKycpOwoKICAgICAgICByZXR1cm4gXGlzX3N0cmluZygkc2luaykgPyBuZXcgUHNyN1xMYXp5T3BlblN0cmVhbSgkc2luaywgJ3crJykgOiBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJHNpbmspOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHJlc291cmNlICRzdHJlYW0KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0RlY29kZShhcnJheSAkb3B0aW9ucywgYXJyYXkgJGhlYWRlcnMsICRzdHJlYW0pOiBhcnJheQogICAgewogICAgICAgIC8vIEF1dG9tYXRpY2FsbHkgZGVjb2RlIHJlc3BvbnNlcyB3aGVuIGluc3RydWN0ZWQuCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snZGVjb2RlX2NvbnRlbnQnXSkpIHsKICAgICAgICAgICAgJG5vcm1hbGl6ZWRLZXlzID0gVXRpbHM6Om5vcm1hbGl6ZUhlYWRlcktleXMoJGhlYWRlcnMpOwogICAgICAgICAgICBpZiAoaXNzZXQoJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ10pKSB7CiAgICAgICAgICAgICAgICAkZW5jb2RpbmcgPSAkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV07CiAgICAgICAgICAgICAgICBpZiAoJGVuY29kaW5nWzBdID09PSAnZ3ppcCcgfHwgJGVuY29kaW5nWzBdID09PSAnZGVmbGF0ZScpIHsKICAgICAgICAgICAgICAgICAgICAkc3RyZWFtID0gbmV3IFBzcjdcSW5mbGF0ZVN0cmVhbShQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJHN0cmVhbSkpOwogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWyd4LWVuY29kZWQtY29udGVudC1lbmNvZGluZyddID0gJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWVuY29kaW5nJ11dOwoKICAgICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgY29udGVudC1lbmNvZGluZyBoZWFkZXIKICAgICAgICAgICAgICAgICAgICB1bnNldCgkaGVhZGVyc1skbm9ybWFsaXplZEtleXNbJ2NvbnRlbnQtZW5jb2RpbmcnXV0pOwoKICAgICAgICAgICAgICAgICAgICAvLyBGaXggY29udGVudC1sZW5ndGggaGVhZGVyCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnNbJ3gtZW5jb2RlZC1jb250ZW50LWxlbmd0aCddID0gJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxlbmd0aCA9IChpbnQpICRzdHJlYW0tPmdldFNpemUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2V0KCRoZWFkZXJzWyRub3JtYWxpemVkS2V5c1snY29udGVudC1sZW5ndGgnXV0pOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnNbJG5vcm1hbGl6ZWRLZXlzWydjb250ZW50LWxlbmd0aCddXSA9IFskbGVuZ3RoXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFskc3RyZWFtLCAkaGVhZGVyc107CiAgICB9CgogICAgLyoqCiAgICAgKiBEcmFpbnMgdGhlIHNvdXJjZSBzdHJlYW0gaW50byB0aGUgInNpbmsiIGNsaWVudCBvcHRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY29udGVudExlbmd0aCBIZWFkZXIgc3BlY2lmeWluZyB0aGUgYW1vdW50IG9mCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgdG8gcmVhZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIHdoZW4gdGhlIHNpbmsgb3B0aW9uIGlzIGludmFsaWQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZHJhaW4oU3RyZWFtSW50ZXJmYWNlICRzb3VyY2UsIFN0cmVhbUludGVyZmFjZSAkc2luaywgc3RyaW5nICRjb250ZW50TGVuZ3RoKTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgLy8gSWYgYSBjb250ZW50LWxlbmd0aCBoZWFkZXIgaXMgcHJvdmlkZWQsIHRoZW4gc3RvcCByZWFkaW5nIG9uY2UKICAgICAgICAvLyB0aGF0IG51bWJlciBvZiBieXRlcyBoYXMgYmVlbiByZWFkLiBUaGlzIGNhbiBwcmV2ZW50IGluZmluaXRlbHkKICAgICAgICAvLyByZWFkaW5nIGZyb20gYSBzdHJlYW0gd2hlbiBkZWFsaW5nIHdpdGggc2VydmVycyB0aGF0IGRvIG5vdCBob25vcgogICAgICAgIC8vIENvbm5lY3Rpb246IENsb3NlIGhlYWRlcnMuCiAgICAgICAgUHNyN1xVdGlsczo6Y29weVRvU3RyZWFtKAogICAgICAgICAgICAkc291cmNlLAogICAgICAgICAgICAkc2luaywKICAgICAgICAgICAgKFxzdHJsZW4oJGNvbnRlbnRMZW5ndGgpID4gMCAmJiAoaW50KSAkY29udGVudExlbmd0aCA+IDApID8gKGludCkgJGNvbnRlbnRMZW5ndGggOiAtMQogICAgICAgICk7CgogICAgICAgICRzaW5rLT5zZWVrKDApOwogICAgICAgICRzb3VyY2UtPmNsb3NlKCk7CgogICAgICAgIHJldHVybiAkc2luazsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhIHJlc291cmNlIGFuZCBjaGVjayB0byBlbnN1cmUgaXQgd2FzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5CiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRjYWxsYmFjayBDYWxsYWJsZSB0aGF0IHJldHVybnMgc3RyZWFtIHJlc291cmNlCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZQogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVSZXNvdXJjZShjYWxsYWJsZSAkY2FsbGJhY2spCiAgICB7CiAgICAgICAgJGVycm9ycyA9IFtdOwogICAgICAgIFxzZXRfZXJyb3JfaGFuZGxlcihzdGF0aWMgZnVuY3Rpb24gKCRfLCAkbXNnLCAkZmlsZSwgJGxpbmUpIHVzZSAoJiRlcnJvcnMpOiBib29sIHsKICAgICAgICAgICAgJGVycm9yc1tdID0gWwogICAgICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICRtc2csCiAgICAgICAgICAgICAgICAnZmlsZScgPT4gJGZpbGUsCiAgICAgICAgICAgICAgICAnbGluZScgPT4gJGxpbmUsCiAgICAgICAgICAgIF07CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9KTsKCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHJlc291cmNlID0gJGNhbGxiYWNrKCk7CiAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgXHJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkcmVzb3VyY2UpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgPSAnRXJyb3IgY3JlYXRpbmcgcmVzb3VyY2U6ICc7CiAgICAgICAgICAgIGZvcmVhY2ggKCRlcnJvcnMgYXMgJGVycikgewogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGVyciBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICRtZXNzYWdlIC49ICJbJGtleV0gJHZhbHVlIi5cUEhQX0VPTDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oXHRyaW0oJG1lc3NhZ2UpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzb3VyY2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlU3RyZWFtKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgIHN0YXRpYyAkbWV0aG9kczsKICAgICAgICBpZiAoISRtZXRob2RzKSB7CiAgICAgICAgICAgICRtZXRob2RzID0gXGFycmF5X2ZsaXAoXGdldF9jbGFzc19tZXRob2RzKF9fQ0xBU1NfXykpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFcaW5fYXJyYXkoJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRTY2hlbWUoKSwgWydodHRwJywgJ2h0dHBzJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSZXF1ZXN0RXhjZXB0aW9uKFxzcHJpbnRmKCJUaGUgc2NoZW1lICclcycgaXMgbm90IHN1cHBvcnRlZC4iLCAkcmVxdWVzdC0+Z2V0VXJpKCktPmdldFNjaGVtZSgpKSwgJHJlcXVlc3QpOwogICAgICAgIH0KCiAgICAgICAgLy8gSFRUUC8xLjEgc3RyZWFtcyB1c2luZyB0aGUgUEhQIHN0cmVhbSB3cmFwcGVyIHJlcXVpcmUgYQogICAgICAgIC8vIENvbm5lY3Rpb246IGNsb3NlIGhlYWRlcgogICAgICAgIGlmICgkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCkgPT09ICcxLjEnCiAgICAgICAgICAgICYmICEkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb25uZWN0aW9uJykKICAgICAgICApIHsKICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aEhlYWRlcignQ29ubmVjdGlvbicsICdjbG9zZScpOwogICAgICAgIH0KCiAgICAgICAgLy8gRW5zdXJlIFNTTCBpcyB2ZXJpZmllZCBieSBkZWZhdWx0CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1sndmVyaWZ5J10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWyd2ZXJpZnknXSA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICAkcGFyYW1zID0gW107CiAgICAgICAgJGNvbnRleHQgPSAkdGhpcy0+Z2V0RGVmYXVsdENvbnRleHQoJHJlcXVlc3QpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ29uX2hlYWRlcnMnXSkgJiYgIVxpc19jYWxsYWJsZSgkb3B0aW9uc1snb25faGVhZGVycyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignb25faGVhZGVycyBtdXN0IGJlIGNhbGxhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIWVtcHR5KCRvcHRpb25zKSkgewogICAgICAgICAgICBmb3JlYWNoICgkb3B0aW9ucyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgJG1ldGhvZCA9ICJhZGRfeyRrZXl9IjsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbWV0aG9kc1skbWV0aG9kXSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+eyRtZXRob2R9KCRyZXF1ZXN0LCAkY29udGV4dCwgJHZhbHVlLCAkcGFyYW1zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzdHJlYW1fY29udGV4dCddKSkgewogICAgICAgICAgICBpZiAoIVxpc19hcnJheSgkb3B0aW9uc1snc3RyZWFtX2NvbnRleHQnXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdzdHJlYW1fY29udGV4dCBtdXN0IGJlIGFuIGFycmF5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGNvbnRleHQgPSBcYXJyYXlfcmVwbGFjZV9yZWN1cnNpdmUoJGNvbnRleHQsICRvcHRpb25zWydzdHJlYW1fY29udGV4dCddKTsKICAgICAgICB9CgogICAgICAgIC8vIE1pY3Jvc29mdCBOVExNIGF1dGhlbnRpY2F0aW9uIG9ubHkgc3VwcG9ydGVkIHdpdGggY3VybCBoYW5kbGVyCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydhdXRoJ11bMl0pICYmICdudGxtJyA9PT0gJG9wdGlvbnNbJ2F1dGgnXVsyXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignTWljcm9zb2Z0IE5UTE0gYXV0aGVudGljYXRpb24gb25seSBzdXBwb3J0ZWQgd2l0aCBjdXJsIGhhbmRsZXInKTsKICAgICAgICB9CgogICAgICAgICR1cmkgPSAkdGhpcy0+cmVzb2x2ZUhvc3QoJHJlcXVlc3QsICRvcHRpb25zKTsKCiAgICAgICAgJGNvbnRleHRSZXNvdXJjZSA9ICR0aGlzLT5jcmVhdGVSZXNvdXJjZSgKICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgpIHVzZSAoJGNvbnRleHQsICRwYXJhbXMpIHsKICAgICAgICAgICAgICAgIHJldHVybiBcc3RyZWFtX2NvbnRleHRfY3JlYXRlKCRjb250ZXh0LCAkcGFyYW1zKTsKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIHJldHVybiAkdGhpcy0+Y3JlYXRlUmVzb3VyY2UoCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHVzZSAoJHVyaSwgJGNvbnRleHRSZXNvdXJjZSwgJGNvbnRleHQsICRvcHRpb25zLCAkcmVxdWVzdCkgewogICAgICAgICAgICAgICAgJHJlc291cmNlID0gQFxmb3Blbigoc3RyaW5nKSAkdXJpLCAncicsIGZhbHNlLCAkY29udGV4dFJlc291cmNlKTsKCiAgICAgICAgICAgICAgICAvLyBTZWUgaHR0cHM6Ly93aWtpLnBocC5uZXQvcmZjL2RlcHJlY2F0aW9uc19waHBfOF81I2RlcHJlY2F0ZV90aGVfaHR0cF9yZXNwb25zZV9oZWFkZXJfcHJlZGVmaW5lZF92YXJpYWJsZQogICAgICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnaHR0cF9nZXRfbGFzdF9yZXNwb25zZV9oZWFkZXJzJykpIHsKICAgICAgICAgICAgICAgICAgICAvKiogQHZhciBhcnJheXxudWxsICovCiAgICAgICAgICAgICAgICAgICAgJGh0dHBfcmVzcG9uc2VfaGVhZGVyID0gXGh0dHBfZ2V0X2xhc3RfcmVzcG9uc2VfaGVhZGVycygpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICR0aGlzLT5sYXN0SGVhZGVycyA9ICRodHRwX3Jlc3BvbnNlX2hlYWRlciA/PyBbXTsKCiAgICAgICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXNvdXJjZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb25uZWN0RXhjZXB0aW9uKHNwcmludGYoJ0Nvbm5lY3Rpb24gcmVmdXNlZCBmb3IgVVJJICVzJywgJHVyaSksICRyZXF1ZXN0LCBudWxsLCAkY29udGV4dCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydyZWFkX3RpbWVvdXQnXSkpIHsKICAgICAgICAgICAgICAgICAgICAkcmVhZFRpbWVvdXQgPSAkb3B0aW9uc1sncmVhZF90aW1lb3V0J107CiAgICAgICAgICAgICAgICAgICAgJHNlYyA9IChpbnQpICRyZWFkVGltZW91dDsKICAgICAgICAgICAgICAgICAgICAkdXNlYyA9ICgkcmVhZFRpbWVvdXQgLSAkc2VjKSAqIDEwMDAwMDsKICAgICAgICAgICAgICAgICAgICBcc3RyZWFtX3NldF90aW1lb3V0KCRyZXNvdXJjZSwgJHNlYywgJHVzZWMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkcmVzb3VyY2U7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmVzb2x2ZUhvc3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkdXJpID0gJHJlcXVlc3QtPmdldFVyaSgpOwoKICAgICAgICBpZiAoaXNzZXQoJG9wdGlvbnNbJ2ZvcmNlX2lwX3Jlc29sdmUnXSkgJiYgIVxmaWx0ZXJfdmFyKCR1cmktPmdldEhvc3QoKSwgXEZJTFRFUl9WQUxJREFURV9JUCkpIHsKICAgICAgICAgICAgaWYgKCd2NCcgPT09ICRvcHRpb25zWydmb3JjZV9pcF9yZXNvbHZlJ10pIHsKICAgICAgICAgICAgICAgICRyZWNvcmRzID0gXGRuc19nZXRfcmVjb3JkKCR1cmktPmdldEhvc3QoKSwgXEROU19BKTsKICAgICAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHJlY29yZHMgfHwgIWlzc2V0KCRyZWNvcmRzWzBdWydpcCddKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb25uZWN0RXhjZXB0aW9uKFxzcHJpbnRmKCJDb3VsZCBub3QgcmVzb2x2ZSBJUHY0IGFkZHJlc3MgZm9yIGhvc3QgJyVzJyIsICR1cmktPmdldEhvc3QoKSksICRyZXF1ZXN0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHVyaS0+d2l0aEhvc3QoJHJlY29yZHNbMF1bJ2lwJ10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgndjYnID09PSAkb3B0aW9uc1snZm9yY2VfaXBfcmVzb2x2ZSddKSB7CiAgICAgICAgICAgICAgICAkcmVjb3JkcyA9IFxkbnNfZ2V0X3JlY29yZCgkdXJpLT5nZXRIb3N0KCksIFxETlNfQUFBQSk7CiAgICAgICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRyZWNvcmRzIHx8ICFpc3NldCgkcmVjb3Jkc1swXVsnaXB2NiddKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBDb25uZWN0RXhjZXB0aW9uKFxzcHJpbnRmKCJDb3VsZCBub3QgcmVzb2x2ZSBJUHY2IGFkZHJlc3MgZm9yIGhvc3QgJyVzJyIsICR1cmktPmdldEhvc3QoKSksICRyZXF1ZXN0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHVyaS0+d2l0aEhvc3QoJ1snLiRyZWNvcmRzWzBdWydpcHY2J10uJ10nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBnZXREZWZhdWx0Q29udGV4dChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTogYXJyYXkKICAgIHsKICAgICAgICAkaGVhZGVycyA9ICcnOwogICAgICAgIGZvcmVhY2ggKCRyZXF1ZXN0LT5nZXRIZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCR2YWx1ZSBhcyAkdmFsKSB7CiAgICAgICAgICAgICAgICAkaGVhZGVycyAuPSAiJG5hbWU6ICR2YWxcclxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGNvbnRleHQgPSBbCiAgICAgICAgICAgICdodHRwJyA9PiBbCiAgICAgICAgICAgICAgICAnbWV0aG9kJyA9PiAkcmVxdWVzdC0+Z2V0TWV0aG9kKCksCiAgICAgICAgICAgICAgICAnaGVhZGVyJyA9PiAkaGVhZGVycywKICAgICAgICAgICAgICAgICdwcm90b2NvbF92ZXJzaW9uJyA9PiAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCksCiAgICAgICAgICAgICAgICAnaWdub3JlX2Vycm9ycycgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgICdmb2xsb3dfbG9jYXRpb24nID0+IDAsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICdzc2wnID0+IFsKICAgICAgICAgICAgICAgICdwZWVyX25hbWUnID0+ICRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0SG9zdCgpLAogICAgICAgICAgICBdLAogICAgICAgIF07CgogICAgICAgICRib2R5ID0gKHN0cmluZykgJHJlcXVlc3QtPmdldEJvZHkoKTsKCiAgICAgICAgaWYgKCcnICE9PSAkYm9keSkgewogICAgICAgICAgICAkY29udGV4dFsnaHR0cCddWydjb250ZW50J10gPSAkYm9keTsKICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgSFRUUCBoYW5kbGVyIGZyb20gYWRkaW5nIGEgQ29udGVudC1UeXBlIGhlYWRlci4KICAgICAgICAgICAgaWYgKCEkcmVxdWVzdC0+aGFzSGVhZGVyKCdDb250ZW50LVR5cGUnKSkgewogICAgICAgICAgICAgICAgJGNvbnRleHRbJ2h0dHAnXVsnaGVhZGVyJ10gLj0gIkNvbnRlbnQtVHlwZTpcclxuIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJGNvbnRleHRbJ2h0dHAnXVsnaGVhZGVyJ10gPSBccnRyaW0oJGNvbnRleHRbJ2h0dHAnXVsnaGVhZGVyJ10pOwoKICAgICAgICByZXR1cm4gJGNvbnRleHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9wcm94eShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMsICR2YWx1ZSwgYXJyYXkgJiRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgJHVyaSA9IG51bGw7CgogICAgICAgIGlmICghXGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgJHVyaSA9ICR2YWx1ZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkc2NoZW1lID0gJHJlcXVlc3QtPmdldFVyaSgpLT5nZXRTY2hlbWUoKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCR2YWx1ZVskc2NoZW1lXSkpIHsKICAgICAgICAgICAgICAgIGlmICghaXNzZXQoJHZhbHVlWydubyddKSB8fCAhVXRpbHM6OmlzSG9zdEluTm9Qcm94eSgkcmVxdWVzdC0+Z2V0VXJpKCktPmdldEhvc3QoKSwgJHZhbHVlWydubyddKSkgewogICAgICAgICAgICAgICAgICAgICR1cmkgPSAkdmFsdWVbJHNjaGVtZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghJHVyaSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkcGFyc2VkID0gJHRoaXMtPnBhcnNlX3Byb3h5KCR1cmkpOwogICAgICAgICRvcHRpb25zWydodHRwJ11bJ3Byb3h5J10gPSAkcGFyc2VkWydwcm94eSddOwoKICAgICAgICBpZiAoJHBhcnNlZFsnYXV0aCddKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJ2h0dHAnXVsnaGVhZGVyJ10pKSB7CiAgICAgICAgICAgICAgICAkb3B0aW9uc1snaHR0cCddWydoZWFkZXInXSA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRvcHRpb25zWydodHRwJ11bJ2hlYWRlciddIC49ICJcclxuUHJveHktQXV0aG9yaXphdGlvbjogeyRwYXJzZWRbJ2F1dGgnXX0iOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyB0aGUgZ2l2ZW4gcHJveHkgVVJMIHRvIG1ha2UgaXQgY29tcGF0aWJsZSB3aXRoIHRoZSBmb3JtYXQgUEhQJ3Mgc3RyZWFtIGNvbnRleHQgZXhwZWN0cy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBwYXJzZV9wcm94eShzdHJpbmcgJHVybCk6IGFycmF5CiAgICB7CiAgICAgICAgJHBhcnNlZCA9IFxwYXJzZV91cmwoJHVybCk7CgogICAgICAgIGlmICgkcGFyc2VkICE9PSBmYWxzZSAmJiBpc3NldCgkcGFyc2VkWydzY2hlbWUnXSkgJiYgJHBhcnNlZFsnc2NoZW1lJ10gPT09ICdodHRwJykgewogICAgICAgICAgICBpZiAoaXNzZXQoJHBhcnNlZFsnaG9zdCddKSAmJiBpc3NldCgkcGFyc2VkWydwb3J0J10pKSB7CiAgICAgICAgICAgICAgICAkYXV0aCA9IG51bGw7CiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHBhcnNlZFsndXNlciddKSAmJiBpc3NldCgkcGFyc2VkWydwYXNzJ10pKSB7CiAgICAgICAgICAgICAgICAgICAgJGF1dGggPSBcYmFzZTY0X2VuY29kZSgieyRwYXJzZWRbJ3VzZXInXX06eyRwYXJzZWRbJ3Bhc3MnXX0iKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgICAgICdwcm94eScgPT4gInRjcDovL3skcGFyc2VkWydob3N0J119OnskcGFyc2VkWydwb3J0J119IiwKICAgICAgICAgICAgICAgICAgICAnYXV0aCcgPT4gJGF1dGggPyAiQmFzaWMgeyRhdXRofSIgOiBudWxsLAogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIHByb3h5IGFzLWlzLgogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdwcm94eScgPT4gJHVybCwKICAgICAgICAgICAgJ2F1dGgnID0+IG51bGwsCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgYXMgcGFzc2VkIHZpYSBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX3RpbWVvdXQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zLCAkdmFsdWUsIGFycmF5ICYkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgIGlmICgkdmFsdWUgPiAwKSB7CiAgICAgICAgICAgICRvcHRpb25zWydodHRwJ11bJ3RpbWVvdXQnXSA9ICR2YWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlIGFzIHBhc3NlZCB2aWEgUmVxdWVzdCB0cmFuc2ZlciBvcHRpb25zLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkZF9jcnlwdG9fbWV0aG9kKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICYkb3B0aW9ucywgJHZhbHVlLCBhcnJheSAmJHBhcmFtcyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzBfQ0xJRU5UCiAgICAgICAgICAgIHx8ICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzFfQ0xJRU5UCiAgICAgICAgICAgIHx8ICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzJfQ0xJRU5UCiAgICAgICAgICAgIHx8IChkZWZpbmVkKCdTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFN2MV8zX0NMSUVOVCcpICYmICR2YWx1ZSA9PT0gXFNUUkVBTV9DUllQVE9fTUVUSE9EX1RMU3YxXzNfQ0xJRU5UKQogICAgICAgICkgewogICAgICAgICAgICAkb3B0aW9uc1snaHR0cCddWydjcnlwdG9fbWV0aG9kJ10gPSAkdmFsdWU7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBjcnlwdG9fbWV0aG9kIHJlcXVlc3Qgb3B0aW9uOiB1bmtub3duIHZlcnNpb24gcHJvdmlkZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgYXMgcGFzc2VkIHZpYSBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX3ZlcmlmeShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMsICR2YWx1ZSwgYXJyYXkgJiRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgJG9wdGlvbnNbJ3NzbCddWyd2ZXJpZnlfcGVlciddID0gZmFsc2U7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXJfbmFtZSddID0gZmFsc2U7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsnY2FmaWxlJ10gPSAkdmFsdWU7CiAgICAgICAgICAgIGlmICghXGZpbGVfZXhpc3RzKCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiU1NMIENBIGJ1bmRsZSBub3QgZm91bmQ6ICR2YWx1ZSIpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKCR2YWx1ZSAhPT0gdHJ1ZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB2ZXJpZnkgcmVxdWVzdCBvcHRpb24nKTsKICAgICAgICB9CgogICAgICAgICRvcHRpb25zWydzc2wnXVsndmVyaWZ5X3BlZXInXSA9IHRydWU7CiAgICAgICAgJG9wdGlvbnNbJ3NzbCddWyd2ZXJpZnlfcGVlcl9uYW1lJ10gPSB0cnVlOwogICAgICAgICRvcHRpb25zWydzc2wnXVsnYWxsb3dfc2VsZl9zaWduZWQnXSA9IGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBhcyBwYXNzZWQgdmlhIFJlcXVlc3QgdHJhbnNmZXIgb3B0aW9ucy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfY2VydChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAmJG9wdGlvbnMsICR2YWx1ZSwgYXJyYXkgJiRwYXJhbXMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKFxpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICRvcHRpb25zWydzc2wnXVsncGFzc3BocmFzZSddID0gJHZhbHVlWzFdOwogICAgICAgICAgICAkdmFsdWUgPSAkdmFsdWVbMF07CiAgICAgICAgfQoKICAgICAgICBpZiAoIVxmaWxlX2V4aXN0cygkdmFsdWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbigiU1NMIGNlcnRpZmljYXRlIG5vdCBmb3VuZDogeyR2YWx1ZX0iKTsKICAgICAgICB9CgogICAgICAgICRvcHRpb25zWydzc2wnXVsnbG9jYWxfY2VydCddID0gJHZhbHVlOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBhcyBwYXNzZWQgdmlhIFJlcXVlc3QgdHJhbnNmZXIgb3B0aW9ucy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRfcHJvZ3Jlc3MoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJiRvcHRpb25zLCAkdmFsdWUsIGFycmF5ICYkcGFyYW1zKTogdm9pZAogICAgewogICAgICAgIHNlbGY6OmFkZE5vdGlmaWNhdGlvbigKICAgICAgICAgICAgJHBhcmFtcywKICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgkY29kZSwgJGEsICRiLCAkYywgJHRyYW5zZmVycmVkLCAkdG90YWwpIHVzZSAoJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoJGNvZGUgPT0gXFNUUkVBTV9OT1RJRllfUFJPR1JFU1MpIHsKICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdXBsb2FkIHByb2dyZXNzIGNhbm5vdCBiZSBkZXRlcm1pbmVkLiBVc2UgMCBmb3IgY1VSTCBjb21wYXRpYmlsaXR5OgogICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vY3VybC5zZS9saWJjdXJsL2MvQ1VSTE9QVF9QUk9HUkVTU0ZVTkNUSU9OLmh0bWwKICAgICAgICAgICAgICAgICAgICAkdmFsdWUoJHRvdGFsLCAkdHJhbnNmZXJyZWQsIDAsIDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgYXMgcGFzc2VkIHZpYSBSZXF1ZXN0IHRyYW5zZmVyIG9wdGlvbnMuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkX2RlYnVnKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICYkb3B0aW9ucywgJHZhbHVlLCBhcnJheSAmJHBhcmFtcyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHZhbHVlID09PSBmYWxzZSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgJG1hcCA9IFsKICAgICAgICAgICAgXFNUUkVBTV9OT1RJRllfQ09OTkVDVCA9PiAnQ09OTkVDVCcsCiAgICAgICAgICAgIFxTVFJFQU1fTk9USUZZX0FVVEhfUkVRVUlSRUQgPT4gJ0FVVEhfUkVRVUlSRUQnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9BVVRIX1JFU1VMVCA9PiAnQVVUSF9SRVNVTFQnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9NSU1FX1RZUEVfSVMgPT4gJ01JTUVfVFlQRV9JUycsCiAgICAgICAgICAgIFxTVFJFQU1fTk9USUZZX0ZJTEVfU0laRV9JUyA9PiAnRklMRV9TSVpFX0lTJywKICAgICAgICAgICAgXFNUUkVBTV9OT1RJRllfUkVESVJFQ1RFRCA9PiAnUkVESVJFQ1RFRCcsCiAgICAgICAgICAgIFxTVFJFQU1fTk9USUZZX1BST0dSRVNTID0+ICdQUk9HUkVTUycsCiAgICAgICAgICAgIFxTVFJFQU1fTk9USUZZX0ZBSUxVUkUgPT4gJ0ZBSUxVUkUnLAogICAgICAgICAgICBcU1RSRUFNX05PVElGWV9DT01QTEVURUQgPT4gJ0NPTVBMRVRFRCcsCiAgICAgICAgICAgIFxTVFJFQU1fTk9USUZZX1JFU09MVkUgPT4gJ1JFU09MVkUnLAogICAgICAgIF07CiAgICAgICAgc3RhdGljICRhcmdzID0gWydzZXZlcml0eScsICdtZXNzYWdlJywgJ21lc3NhZ2VfY29kZScsICdieXRlc190cmFuc2ZlcnJlZCcsICdieXRlc19tYXgnXTsKCiAgICAgICAgJHZhbHVlID0gVXRpbHM6OmRlYnVnUmVzb3VyY2UoJHZhbHVlKTsKICAgICAgICAkaWRlbnQgPSAkcmVxdWVzdC0+Z2V0TWV0aG9kKCkuJyAnLiRyZXF1ZXN0LT5nZXRVcmkoKS0+d2l0aEZyYWdtZW50KCcnKTsKICAgICAgICBzZWxmOjphZGROb3RpZmljYXRpb24oCiAgICAgICAgICAgICRwYXJhbXMsCiAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoaW50ICRjb2RlLCAuLi4kcGFzc2VkKSB1c2UgKCRpZGVudCwgJHZhbHVlLCAkbWFwLCAkYXJncyk6IHZvaWQgewogICAgICAgICAgICAgICAgXGZwcmludGYoJHZhbHVlLCAnPCVzPiBbJXNdICcsICRpZGVudCwgJG1hcFskY29kZV0pOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoXGFycmF5X2ZpbHRlcigkcGFzc2VkKSBhcyAkaSA9PiAkdikgewogICAgICAgICAgICAgICAgICAgIFxmd3JpdGUoJHZhbHVlLCAkYXJnc1skaV0uJzogIicuJHYuJyIgJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBcZndyaXRlKCR2YWx1ZSwgIlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGFkZE5vdGlmaWNhdGlvbihhcnJheSAmJHBhcmFtcywgY2FsbGFibGUgJG5vdGlmeSk6IHZvaWQKICAgIHsKICAgICAgICAvLyBXcmFwIHRoZSBleGlzdGluZyBmdW5jdGlvbiBpZiBuZWVkZWQuCiAgICAgICAgaWYgKCFpc3NldCgkcGFyYW1zWydub3RpZmljYXRpb24nXSkpIHsKICAgICAgICAgICAgJHBhcmFtc1snbm90aWZpY2F0aW9uJ10gPSAkbm90aWZ5OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRwYXJhbXNbJ25vdGlmaWNhdGlvbiddID0gc2VsZjo6Y2FsbEFycmF5KFsKICAgICAgICAgICAgICAgICRwYXJhbXNbJ25vdGlmaWNhdGlvbiddLAogICAgICAgICAgICAgICAgJG5vdGlmeSwKICAgICAgICAgICAgXSk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNhbGxBcnJheShhcnJheSAkZnVuY3Rpb25zKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uICguLi4kYXJncykgdXNlICgkZnVuY3Rpb25zKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRmdW5jdGlvbnMgYXMgJGZuKSB7CiAgICAgICAgICAgICAgICAkZm4oLi4uJGFyZ3MpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/HandlerStack.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCi8qKgogKiBDcmVhdGVzIGEgY29tcG9zZWQgR3V6emxlIGhhbmRsZXIgZnVuY3Rpb24gYnkgc3RhY2tpbmcgbWlkZGxld2FyZXMgb24gdG9wIG9mCiAqIGFuIEhUVFAgaGFuZGxlciBmdW5jdGlvbi4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBIYW5kbGVyU3RhY2sKewogICAgLyoqCiAgICAgKiBAdmFyIChjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UpfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkaGFuZGxlcjsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXl7KGNhbGxhYmxlKGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSk6IGNhbGxhYmxlKSwgKHN0cmluZ3xudWxsKX1bXQogICAgICovCiAgICBwcml2YXRlICRzdGFjayA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciAoY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlKXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGNhY2hlZDsKCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBkZWZhdWx0IGhhbmRsZXIgc3RhY2sgdGhhdCBjYW4gYmUgdXNlZCBieSBjbGllbnRzLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBoYW5kbGVyIHdpbGwgd3JhcCB0aGUgcHJvdmlkZWQgaGFuZGxlciBvciB1c2UgdGhlIG1vc3QKICAgICAqIGFwcHJvcHJpYXRlIGRlZmF1bHQgaGFuZGxlciBmb3IgeW91ciBzeXN0ZW0uIFRoZSByZXR1cm5lZCBIYW5kbGVyU3RhY2sgaGFzCiAgICAgKiBzdXBwb3J0IGZvciBjb29raWVzLCByZWRpcmVjdHMsIEhUVFAgZXJyb3IgZXhjZXB0aW9ucywgYW5kIHByZXBhcmluZyBhIGJvZHkKICAgICAqIGJlZm9yZSBzZW5kaW5nLgogICAgICoKICAgICAqIFRoZSByZXR1cm5lZCBoYW5kbGVyIHN0YWNrIGNhbiBiZSBwYXNzZWQgdG8gYSBjbGllbnQgaW4gdGhlICJoYW5kbGVyIgogICAgICogb3B0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSAoY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlKXxudWxsICRoYW5kbGVyIEhUVFAgaGFuZGxlciBmdW5jdGlvbiB0byB1c2Ugd2l0aCB0aGUgc3RhY2suIElmIG5vCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIGlzIHByb3ZpZGVkLCB0aGUgYmVzdCBoYW5kbGVyIGZvciB5b3VyCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gd2lsbCBiZSB1dGlsaXplZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoP2NhbGxhYmxlICRoYW5kbGVyID0gbnVsbCk6IHNlbGYKICAgIHsKICAgICAgICAkc3RhY2sgPSBuZXcgc2VsZigkaGFuZGxlciA/OiBVdGlsczo6Y2hvb3NlSGFuZGxlcigpKTsKICAgICAgICAkc3RhY2stPnB1c2goTWlkZGxld2FyZTo6aHR0cEVycm9ycygpLCAnaHR0cF9lcnJvcnMnKTsKICAgICAgICAkc3RhY2stPnB1c2goTWlkZGxld2FyZTo6cmVkaXJlY3QoKSwgJ2FsbG93X3JlZGlyZWN0cycpOwogICAgICAgICRzdGFjay0+cHVzaChNaWRkbGV3YXJlOjpjb29raWVzKCksICdjb29raWVzJyk7CiAgICAgICAgJHN0YWNrLT5wdXNoKE1pZGRsZXdhcmU6OnByZXBhcmVCb2R5KCksICdwcmVwYXJlX2JvZHknKTsKCiAgICAgICAgcmV0dXJuICRzdGFjazsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAoY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlKXxudWxsICRoYW5kbGVyIFVuZGVybHlpbmcgSFRUUCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP2NhbGxhYmxlICRoYW5kbGVyID0gbnVsbCkKICAgIHsKICAgICAgICAkdGhpcy0+aGFuZGxlciA9ICRoYW5kbGVyOwogICAgfQoKICAgIC8qKgogICAgICogSW52b2tlcyB0aGUgaGFuZGxlciBzdGFjayBhcyBhIGNvbXBvc2VkIGhhbmRsZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIFJlc3BvbnNlSW50ZXJmYWNlfFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKQogICAgewogICAgICAgICRoYW5kbGVyID0gJHRoaXMtPnJlc29sdmUoKTsKCiAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBEdW1wcyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQogICAgewogICAgICAgICRkZXB0aCA9IDA7CiAgICAgICAgJHN0YWNrID0gW107CgogICAgICAgIGlmICgkdGhpcy0+aGFuZGxlciAhPT0gbnVsbCkgewogICAgICAgICAgICAkc3RhY2tbXSA9ICcwKSBIYW5kbGVyOiAnLiR0aGlzLT5kZWJ1Z0NhbGxhYmxlKCR0aGlzLT5oYW5kbGVyKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICBmb3JlYWNoIChcYXJyYXlfcmV2ZXJzZSgkdGhpcy0+c3RhY2spIGFzICR0dXBsZSkgewogICAgICAgICAgICArKyRkZXB0aDsKICAgICAgICAgICAgJHN0ciA9ICJ7JGRlcHRofSkgTmFtZTogJ3skdHVwbGVbMV19JywgIjsKICAgICAgICAgICAgJHN0ciAuPSAnRnVuY3Rpb246ICcuJHRoaXMtPmRlYnVnQ2FsbGFibGUoJHR1cGxlWzBdKTsKICAgICAgICAgICAgJHJlc3VsdCA9ICI+IHskc3RyfVxueyRyZXN1bHR9IjsKICAgICAgICAgICAgJHN0YWNrW10gPSAkc3RyOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoXGFycmF5X2tleXMoJHN0YWNrKSBhcyAkaykgewogICAgICAgICAgICAkcmVzdWx0IC49ICI8IHskc3RhY2tbJGtdfVxuIjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBIVFRQIGhhbmRsZXIgdGhhdCBhY3R1YWxseSByZXR1cm5zIGEgcHJvbWlzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRoYW5kbGVyIEFjY2VwdHMgYSByZXF1ZXN0IGFuZCBhcnJheSBvZiBvcHRpb25zIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIGEgUHJvbWlzZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldEhhbmRsZXIoY2FsbGFibGUgJGhhbmRsZXIpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmhhbmRsZXIgPSAkaGFuZGxlcjsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYnVpbGRlciBoYXMgYSBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGFuZGxlcigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyICE9PSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogVW5zaGlmdCBhIG1pZGRsZXdhcmUgdG8gdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2suCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlKGNhbGxhYmxlKTogY2FsbGFibGUgJG1pZGRsZXdhcmUgTWlkZGxld2FyZSBmdW5jdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgICAgICAgTmFtZSB0byByZWdpc3RlciBmb3IgdGhpcyBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zaGlmdChjYWxsYWJsZSAkbWlkZGxld2FyZSwgP3N0cmluZyAkbmFtZSA9IG51bGwpOiB2b2lkCiAgICB7CiAgICAgICAgXGFycmF5X3Vuc2hpZnQoJHRoaXMtPnN0YWNrLCBbJG1pZGRsZXdhcmUsICRuYW1lXSk7CiAgICAgICAgJHRoaXMtPmNhY2hlZCA9IG51bGw7CiAgICB9CgogICAgLyoqCiAgICAgKiBQdXNoIGEgbWlkZGxld2FyZSB0byB0aGUgdG9wIG9mIHRoZSBzdGFjay4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoY2FsbGFibGUpOiBjYWxsYWJsZSAkbWlkZGxld2FyZSBNaWRkbGV3YXJlIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkbmFtZSAgICAgICBOYW1lIHRvIHJlZ2lzdGVyIGZvciB0aGlzIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwdXNoKGNhbGxhYmxlICRtaWRkbGV3YXJlLCBzdHJpbmcgJG5hbWUgPSAnJyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c3RhY2tbXSA9IFskbWlkZGxld2FyZSwgJG5hbWVdOwogICAgICAgICR0aGlzLT5jYWNoZWQgPSBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQWRkIGEgbWlkZGxld2FyZSBiZWZvcmUgYW5vdGhlciBtaWRkbGV3YXJlIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJGZpbmROYW1lICAgTWlkZGxld2FyZSB0byBmaW5kCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoY2FsbGFibGUpOiBjYWxsYWJsZSAkbWlkZGxld2FyZSBNaWRkbGV3YXJlIGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAkd2l0aE5hbWUgICBOYW1lIHRvIHJlZ2lzdGVyIGZvciB0aGlzIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBiZWZvcmUoc3RyaW5nICRmaW5kTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsIHN0cmluZyAkd2l0aE5hbWUgPSAnJyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c3BsaWNlKCRmaW5kTmFtZSwgJHdpdGhOYW1lLCAkbWlkZGxld2FyZSwgdHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBtaWRkbGV3YXJlIGFmdGVyIGFub3RoZXIgbWlkZGxld2FyZSBieSBuYW1lLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICRmaW5kTmFtZSAgIE1pZGRsZXdhcmUgdG8gZmluZAogICAgICogQHBhcmFtIGNhbGxhYmxlKGNhbGxhYmxlKTogY2FsbGFibGUgJG1pZGRsZXdhcmUgTWlkZGxld2FyZSBmdW5jdGlvbgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgJHdpdGhOYW1lICAgTmFtZSB0byByZWdpc3RlciBmb3IgdGhpcyBtaWRkbGV3YXJlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWZ0ZXIoc3RyaW5nICRmaW5kTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsIHN0cmluZyAkd2l0aE5hbWUgPSAnJyk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c3BsaWNlKCRmaW5kTmFtZSwgJHdpdGhOYW1lLCAkbWlkZGxld2FyZSwgZmFsc2UpOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGEgbWlkZGxld2FyZSBieSBpbnN0YW5jZSBvciBuYW1lIGZyb20gdGhlIHN0YWNrLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZXxzdHJpbmcgJHJlbW92ZSBNaWRkbGV3YXJlIHRvIHJlbW92ZSBieSBpbnN0YW5jZSBvciBuYW1lLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlKCRyZW1vdmUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHJlbW92ZSkgJiYgIWlzX2NhbGxhYmxlKCRyZW1vdmUpKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ2d1enpsZWh0dHAvZ3V6emxlJywgJzcuNCcsICdOb3QgcGFzc2luZyBhIGNhbGxhYmxlIG9yIHN0cmluZyB0byAlczo6JXMoKSBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGNhdXNlIGFuIGVycm9yIGluIDguMC4nLCBfX0NMQVNTX18sIF9fRlVOQ1RJT05fXyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgICAgICAkaWR4ID0gXGlzX2NhbGxhYmxlKCRyZW1vdmUpID8gMCA6IDE7CiAgICAgICAgJHRoaXMtPnN0YWNrID0gXGFycmF5X3ZhbHVlcyhcYXJyYXlfZmlsdGVyKAogICAgICAgICAgICAkdGhpcy0+c3RhY2ssCiAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoJHR1cGxlKSB1c2UgKCRpZHgsICRyZW1vdmUpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdHVwbGVbJGlkeF0gIT09ICRyZW1vdmU7CiAgICAgICAgICAgIH0KICAgICAgICApKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBvc2UgdGhlIG1pZGRsZXdhcmUgYW5kIGhhbmRsZXIgaW50byBhIHNpbmdsZSBjYWxsYWJsZSBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZSgpOiBjYWxsYWJsZQogICAgewogICAgICAgIGlmICgkdGhpcy0+Y2FjaGVkID09PSBudWxsKSB7CiAgICAgICAgICAgIGlmICgoJHByZXYgPSAkdGhpcy0+aGFuZGxlcikgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ05vIGhhbmRsZXIgaGFzIGJlZW4gc3BlY2lmaWVkJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKFxhcnJheV9yZXZlcnNlKCR0aGlzLT5zdGFjaykgYXMgJGZuKSB7CiAgICAgICAgICAgICAgICAvKiogQHZhciBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UgJHByZXYgKi8KICAgICAgICAgICAgICAgICRwcmV2ID0gJGZuWzBdKCRwcmV2KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPmNhY2hlZCA9ICRwcmV2OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5jYWNoZWQ7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaW5kQnlOYW1lKHN0cmluZyAkbmFtZSk6IGludAogICAgewogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zdGFjayBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoJHZbMV0gPT09ICRuYW1lKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCJNaWRkbGV3YXJlIG5vdCBmb3VuZDogJG5hbWUiKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGljZXMgYSBmdW5jdGlvbiBpbnRvIHRoZSBtaWRkbGV3YXJlIGxpc3QgYXQgYSBzcGVjaWZpYyBwb3NpdGlvbi4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzcGxpY2Uoc3RyaW5nICRmaW5kTmFtZSwgc3RyaW5nICR3aXRoTmFtZSwgY2FsbGFibGUgJG1pZGRsZXdhcmUsIGJvb2wgJGJlZm9yZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+Y2FjaGVkID0gbnVsbDsKICAgICAgICAkaWR4ID0gJHRoaXMtPmZpbmRCeU5hbWUoJGZpbmROYW1lKTsKICAgICAgICAkdHVwbGUgPSBbJG1pZGRsZXdhcmUsICR3aXRoTmFtZV07CgogICAgICAgIGlmICgkYmVmb3JlKSB7CiAgICAgICAgICAgIGlmICgkaWR4ID09PSAwKSB7CiAgICAgICAgICAgICAgICBcYXJyYXlfdW5zaGlmdCgkdGhpcy0+c3RhY2ssICR0dXBsZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVwbGFjZW1lbnQgPSBbJHR1cGxlLCAkdGhpcy0+c3RhY2tbJGlkeF1dOwogICAgICAgICAgICAgICAgXGFycmF5X3NwbGljZSgkdGhpcy0+c3RhY2ssICRpZHgsIDEsICRyZXBsYWNlbWVudCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoJGlkeCA9PT0gXGNvdW50KCR0aGlzLT5zdGFjaykgLSAxKSB7CiAgICAgICAgICAgICR0aGlzLT5zdGFja1tdID0gJHR1cGxlOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRyZXBsYWNlbWVudCA9IFskdGhpcy0+c3RhY2tbJGlkeF0sICR0dXBsZV07CiAgICAgICAgICAgIFxhcnJheV9zcGxpY2UoJHRoaXMtPnN0YWNrLCAkaWR4LCAxLCAkcmVwbGFjZW1lbnQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFByb3ZpZGVzIGEgZGVidWcgc3RyaW5nIGZvciBhIGdpdmVuIGNhbGxhYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZXxzdHJpbmcgJGZuIEZ1bmN0aW9uIHRvIHdyaXRlIGFzIGEgc3RyaW5nLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRlYnVnQ2FsbGFibGUoJGZuKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKFxpc19zdHJpbmcoJGZuKSkgewogICAgICAgICAgICByZXR1cm4gImNhbGxhYmxlKHskZm59KSI7CiAgICAgICAgfQoKICAgICAgICBpZiAoXGlzX2FycmF5KCRmbikpIHsKICAgICAgICAgICAgcmV0dXJuIFxpc19zdHJpbmcoJGZuWzBdKQogICAgICAgICAgICAgICAgPyAiY2FsbGFibGUoeyRmblswXX06OnskZm5bMV19KSIKICAgICAgICAgICAgICAgIDogImNhbGxhYmxlKFsnIi5cZ2V0X2NsYXNzKCRmblswXSkuIicsICd7JGZuWzFdfSddKSI7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBvYmplY3QgJGZuICovCiAgICAgICAgcmV0dXJuICdjYWxsYWJsZSgnLlxzcGxfb2JqZWN0X2hhc2goJGZuKS4nKSc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/MessageFormatter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CgovKioKICogRm9ybWF0cyBsb2cgbWVzc2FnZXMgdXNpbmcgdmFyaWFibGUgc3Vic3RpdHV0aW9ucyBmb3IgcmVxdWVzdHMsIHJlc3BvbnNlcywKICogYW5kIG90aGVyIHRyYW5zYWN0aW9uYWwgZGF0YS4KICoKICogVGhlIGZvbGxvd2luZyB2YXJpYWJsZSBzdWJzdGl0dXRpb25zIGFyZSBzdXBwb3J0ZWQ6CiAqCiAqIC0ge3JlcXVlc3R9OiAgICAgICAgRnVsbCBIVFRQIHJlcXVlc3QgbWVzc2FnZQogKiAtIHtyZXNwb25zZX06ICAgICAgIEZ1bGwgSFRUUCByZXNwb25zZSBtZXNzYWdlCiAqIC0ge3RzfTogICAgICAgICAgICAgSVNPIDg2MDEgZGF0ZSBpbiBHTVQKICogLSB7ZGF0ZV9pc29fODYwMX0gICBJU08gODYwMSBkYXRlIGluIEdNVAogKiAtIHtkYXRlX2NvbW1vbl9sb2d9IEFwYWNoZSBjb21tb24gbG9nIGRhdGUgdXNpbmcgdGhlIGNvbmZpZ3VyZWQgdGltZXpvbmUuCiAqIC0ge2hvc3R9OiAgICAgICAgICAgSG9zdCBvZiB0aGUgcmVxdWVzdAogKiAtIHttZXRob2R9OiAgICAgICAgIE1ldGhvZCBvZiB0aGUgcmVxdWVzdAogKiAtIHt1cml9OiAgICAgICAgICAgIFVSSSBvZiB0aGUgcmVxdWVzdAogKiAtIHt2ZXJzaW9ufTogICAgICAgIFByb3RvY29sIHZlcnNpb24KICogLSB7dGFyZ2V0fTogICAgICAgICBSZXF1ZXN0IHRhcmdldCBvZiB0aGUgcmVxdWVzdCAocGF0aCArIHF1ZXJ5ICsgZnJhZ21lbnQpCiAqIC0ge2hvc3RuYW1lfTogICAgICAgSG9zdG5hbWUgb2YgdGhlIG1hY2hpbmUgdGhhdCBzZW50IHRoZSByZXF1ZXN0CiAqIC0ge2NvZGV9OiAgICAgICAgICAgU3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlIChpZiBhdmFpbGFibGUpCiAqIC0ge3BocmFzZX06ICAgICAgICAgUmVhc29uIHBocmFzZSBvZiB0aGUgcmVzcG9uc2UgIChpZiBhdmFpbGFibGUpCiAqIC0ge2Vycm9yfTogICAgICAgICAgQW55IGVycm9yIG1lc3NhZ2VzIChpZiBhdmFpbGFibGUpCiAqIC0ge3JlcV9oZWFkZXJfKn06ICAgUmVwbGFjZSBgKmAgd2l0aCB0aGUgbG93ZXJjYXNlZCBuYW1lIG9mIGEgcmVxdWVzdCBoZWFkZXIgdG8gYWRkIHRvIHRoZSBtZXNzYWdlCiAqIC0ge3Jlc19oZWFkZXJfKn06ICAgUmVwbGFjZSBgKmAgd2l0aCB0aGUgbG93ZXJjYXNlZCBuYW1lIG9mIGEgcmVzcG9uc2UgaGVhZGVyIHRvIGFkZCB0byB0aGUgbWVzc2FnZQogKiAtIHtyZXFfaGVhZGVyc306ICAgIFJlcXVlc3QgaGVhZGVycwogKiAtIHtyZXNfaGVhZGVyc306ICAgIFJlc3BvbnNlIGhlYWRlcnMKICogLSB7cmVxX2JvZHl9OiAgICAgICBSZXF1ZXN0IGJvZHkKICogLSB7cmVzX2JvZHl9OiAgICAgICBSZXNwb25zZSBib2R5CiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgTWVzc2FnZUZvcm1hdHRlciBpbXBsZW1lbnRzIE1lc3NhZ2VGb3JtYXR0ZXJJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBBcGFjaGUgQ29tbW9uIExvZyBGb3JtYXQuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2h0dHBkLmFwYWNoZS5vcmcvZG9jcy8yLjQvbG9ncy5odG1sI2NvbW1vbgogICAgICoKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBDTEYgPSAne2hvc3RuYW1lfSB7cmVxX2hlYWRlcl9Vc2VyLUFnZW50fSAtIFt7ZGF0ZV9jb21tb25fbG9nfV0gInttZXRob2R9IHt0YXJnZXR9IEhUVFAve3ZlcnNpb259IiB7Y29kZX0ge3Jlc19oZWFkZXJfQ29udGVudC1MZW5ndGh9JzsKICAgIHB1YmxpYyBjb25zdCBERUJVRyA9ICI+Pj4+Pj4+Plxue3JlcXVlc3R9XG48PDw8PDw8PFxue3Jlc3BvbnNlfVxuLS0tLS0tLS1cbntlcnJvcn0iOwogICAgcHVibGljIGNvbnN0IFNIT1JUID0gJ1t7dHN9XSAie21ldGhvZH0ge3RhcmdldH0gSFRUUC97dmVyc2lvbn0iIHtjb2RlfSc7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZyBUZW1wbGF0ZSB1c2VkIHRvIGZvcm1hdCBsb2cgbWVzc2FnZXMKICAgICAqLwogICAgcHJpdmF0ZSAkdGVtcGxhdGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0ZW1wbGF0ZSBMb2cgbWVzc2FnZSB0ZW1wbGF0ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoP3N0cmluZyAkdGVtcGxhdGUgPSBzZWxmOjpDTEYpCiAgICB7CiAgICAgICAgJHRoaXMtPnRlbXBsYXRlID0gJHRlbXBsYXRlID86IHNlbGY6OkNMRjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBmb3JtYXR0ZWQgbWVzc2FnZSBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICAgICAgJHJlcXVlc3QgIFJlcXVlc3QgdGhhdCB3YXMgc2VudAogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwgJHJlc3BvbnNlIFJlc3BvbnNlIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKiBAcGFyYW0gXFRocm93YWJsZXxudWxsICAgICAgICAkZXJyb3IgICAgRXhjZXB0aW9uIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmb3JtYXQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgP1Jlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwsID9cVGhyb3dhYmxlICRlcnJvciA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICAkY2FjaGUgPSBbXTsKCiAgICAgICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICAgICAgcmV0dXJuIFxwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcve1xzKihbQS1aYS16X1wtXC4wLTldKylccyp9LycsCiAgICAgICAgICAgIGZ1bmN0aW9uIChhcnJheSAkbWF0Y2hlcykgdXNlICgkcmVxdWVzdCwgJHJlc3BvbnNlLCAkZXJyb3IsICYkY2FjaGUpIHsKICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2FjaGVbJG1hdGNoZXNbMV1dKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkY2FjaGVbJG1hdGNoZXNbMV1dOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICAgICAgICAgIHN3aXRjaCAoJG1hdGNoZXNbMV0pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXF1ZXN0JzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9IFBzcjdcTWVzc2FnZTo6dG9TdHJpbmcoJHJlcXVlc3QpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNwb25zZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPyBQc3I3XE1lc3NhZ2U6OnRvU3RyaW5nKCRyZXNwb25zZSkgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX2hlYWRlcnMnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXHRyaW0oJHJlcXVlc3QtPmdldE1ldGhvZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLicgJy4kcmVxdWVzdC0+Z2V0UmVxdWVzdFRhcmdldCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLicgSFRUUC8nLiRyZXF1ZXN0LT5nZXRQcm90b2NvbFZlcnNpb24oKS4iXHJcbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4kdGhpcy0+aGVhZGVycygkcmVxdWVzdCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3Jlc19oZWFkZXJzJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXNwb25zZSA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSFRUUC8lcyAlZCAlcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlLT5nZXRQcm90b2NvbFZlcnNpb24oKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLiJcclxuIi4kdGhpcy0+aGVhZGVycygkcmVzcG9uc2UpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX2JvZHknOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldEJvZHkoKS0+X190b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNfYm9keSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHJlc3BvbnNlIGluc3RhbmNlb2YgUmVzcG9uc2VJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgJGJvZHkgPSAkcmVzcG9uc2UtPmdldEJvZHkoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJGJvZHktPmlzU2Vla2FibGUoKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICdSRVNQT05TRV9OT1RfTE9HR0VBQkxFJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlLT5nZXRCb2R5KCktPl9fdG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndHMnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RhdGVfaXNvXzg2MDEnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXGdtZGF0ZSgnYycpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXRlX2NvbW1vbl9sb2cnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXGRhdGUoJ2QvTS9ZOkg6aTpzIE8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWV0aG9kJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRNZXRob2QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVyc2lvbic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3VyaSc6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAndXJsJzoKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXF1ZXN0LT5nZXRVcmkoKS0+X190b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd0YXJnZXQnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldFJlcXVlc3RUYXJnZXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVxX3ZlcnNpb24nOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdyZXNfdmVyc2lvbic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJHJlc3BvbnNlLT5nZXRQcm90b2NvbFZlcnNpb24oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvc3QnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0hvc3QnKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG9zdG5hbWUnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gXGdldGhvc3RuYW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NvZGUnOgogICAgICAgICAgICAgICAgICAgICAgICAkcmVzdWx0ID0gJHJlc3BvbnNlID8gJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3BocmFzZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UgPyAkcmVzcG9uc2UtPmdldFJlYXNvblBocmFzZSgpIDogJ05VTEwnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdlcnJvcic6CiAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkZXJyb3IgPyAkZXJyb3ItPmdldE1lc3NhZ2UoKSA6ICdOVUxMJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHByZWZpeGVkIGR5bmFtaWMgaGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHN0cnBvcygkbWF0Y2hlc1sxXSwgJ3JlcV9oZWFkZXJfJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVxdWVzdC0+Z2V0SGVhZGVyTGluZShcc3Vic3RyKCRtYXRjaGVzWzFdLCAxMSkpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAoXHN0cnBvcygkbWF0Y2hlc1sxXSwgJ3Jlc19oZWFkZXJfJykgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzcG9uc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICRyZXNwb25zZS0+Z2V0SGVhZGVyTGluZShcc3Vic3RyKCRtYXRjaGVzWzFdLCAxMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnTlVMTCc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkY2FjaGVbJG1hdGNoZXNbMV1dID0gJHJlc3VsdDsKCiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJHRoaXMtPnRlbXBsYXRlCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBoZWFkZXJzIGZyb20gbWVzc2FnZSBhcyBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBoZWFkZXJzKE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcmVzdWx0ID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJG1lc3NhZ2UtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgICAgICAgICRyZXN1bHQgLj0gJG5hbWUuJzogJy5caW1wbG9kZSgnLCAnLCAkdmFsdWVzKS4iXHJcbiI7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXHRyaW0oJHJlc3VsdCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/MessageFormatterInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CgppbnRlcmZhY2UgTWVzc2FnZUZvcm1hdHRlckludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgYSBmb3JtYXR0ZWQgbWVzc2FnZSBzdHJpbmcuCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICAgICAgJHJlcXVlc3QgIFJlcXVlc3QgdGhhdCB3YXMgc2VudAogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwgJHJlc3BvbnNlIFJlc3BvbnNlIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKiBAcGFyYW0gXFRocm93YWJsZXxudWxsICAgICAgICAkZXJyb3IgICAgRXhjZXB0aW9uIHRoYXQgd2FzIHJlY2VpdmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmb3JtYXQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgP1Jlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSA9IG51bGwsID9cVGhyb3dhYmxlICRlcnJvciA9IG51bGwpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Middleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcQ29va2llXENvb2tpZUphckludGVyZmFjZTsKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXFJlcXVlc3RFeGNlcHRpb247CnVzZSBHdXp6bGVIdHRwXFByb21pc2UgYXMgUDsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxMb2dcTG9nZ2VySW50ZXJmYWNlOwoKLyoqCiAqIEZ1bmN0aW9ucyB1c2VkIHRvIGNyZWF0ZSBhbmQgd3JhcCBoYW5kbGVycyB3aXRoIGhhbmRsZXIgbWlkZGxld2FyZS4KICovCmZpbmFsIGNsYXNzIE1pZGRsZXdhcmUKewogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYWRkcyBjb29raWVzIHRvIHJlcXVlc3RzLgogICAgICoKICAgICAqIFRoZSBvcHRpb25zIGFycmF5IG11c3QgYmUgc2V0IHRvIGEgQ29va2llSmFySW50ZXJmYWNlIGluIG9yZGVyIHRvIHVzZQogICAgICogY29va2llcy4gVGhpcyBpcyB0eXBpY2FsbHkgaGFuZGxlZCBmb3IgeW91IGJ5IGEgY2xpZW50LgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvb2tpZXMoKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcik6IGNhbGxhYmxlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyKSB7CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJG9wdGlvbnNbJ2Nvb2tpZXMnXSkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmICghKCRvcHRpb25zWydjb29raWVzJ10gaW5zdGFuY2VvZiBDb29raWVKYXJJbnRlcmZhY2UpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2Nvb2tpZXMgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBHdXp6bGVIdHRwXENvb2tpZVxDb29raWVKYXJJbnRlcmZhY2UnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRjb29raWVKYXIgPSAkb3B0aW9uc1snY29va2llcyddOwogICAgICAgICAgICAgICAgJHJlcXVlc3QgPSAkY29va2llSmFyLT53aXRoQ29va2llSGVhZGVyKCRyZXF1ZXN0KTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKQogICAgICAgICAgICAgICAgICAgIC0+dGhlbigKICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uIChSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UpIHVzZSAoJGNvb2tpZUphciwgJHJlcXVlc3QpOiBSZXNwb25zZUludGVyZmFjZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29va2llSmFyLT5leHRyYWN0Q29va2llcygkcmVxdWVzdCwgJHJlc3BvbnNlKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IHRocm93cyBleGNlcHRpb25zIGZvciA0eHggb3IgNXh4IHJlc3BvbnNlcyB3aGVuIHRoZQogICAgICogImh0dHBfZXJyb3JzIiByZXF1ZXN0IG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gQm9keVN1bW1hcml6ZXJJbnRlcmZhY2V8bnVsbCAkYm9keVN1bW1hcml6ZXIgVGhlIGJvZHkgc3VtbWFyaXplciB0byB1c2UgaW4gZXhjZXB0aW9uIG1lc3NhZ2VzLgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUoY2FsbGFibGUpOiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaHR0cEVycm9ycyg/Qm9keVN1bW1hcml6ZXJJbnRlcmZhY2UgJGJvZHlTdW1tYXJpemVyID0gbnVsbCk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGJvZHlTdW1tYXJpemVyKTogY2FsbGFibGUgewogICAgICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uICgkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIsICRib2R5U3VtbWFyaXplcikgewogICAgICAgICAgICAgICAgaWYgKGVtcHR5KCRvcHRpb25zWydodHRwX2Vycm9ycyddKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkcmVxdWVzdCwgJG9wdGlvbnMpLT50aGVuKAogICAgICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKSB1c2UgKCRyZXF1ZXN0LCAkYm9keVN1bW1hcml6ZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGNvZGUgPSAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjb2RlIDwgNDAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3BvbnNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFJlcXVlc3RFeGNlcHRpb246OmNyZWF0ZSgkcmVxdWVzdCwgJHJlc3BvbnNlLCBudWxsLCBbXSwgJGJvZHlTdW1tYXJpemVyKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgcHVzaGVzIGhpc3RvcnkgZGF0YSB0byBhbiBBcnJheUFjY2VzcyBjb250YWluZXIuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5fFxBcnJheUFjY2VzczxpbnQsIGFycmF5PiAkY29udGFpbmVyIENvbnRhaW5lciB0byBob2xkIHRoZSBoaXN0b3J5IChieSByZWZlcmVuY2UpLgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUoY2FsbGFibGUpOiBjYWxsYWJsZSBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBuZXh0IGhhbmRsZXIuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIGNvbnRhaW5lciBpcyBub3QgYW4gYXJyYXkgb3IgQXJyYXlBY2Nlc3MuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGlzdG9yeSgmJGNvbnRhaW5lcik6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgaWYgKCFcaXNfYXJyYXkoJGNvbnRhaW5lcikgJiYgISRjb250YWluZXIgaW5zdGFuY2VvZiBcQXJyYXlBY2Nlc3MpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ2hpc3RvcnkgY29udGFpbmVyIG11c3QgYmUgYW4gYXJyYXkgb3Igb2JqZWN0IGltcGxlbWVudGluZyBBcnJheUFjY2VzcycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJiRjb250YWluZXIpOiBjYWxsYWJsZSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAmJGNvbnRhaW5lcikgewogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyktPnRoZW4oCiAgICAgICAgICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJHJlcXVlc3QsICYkY29udGFpbmVyLCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcgPT4gJHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzcG9uc2UnID0+ICR2YWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcicgPT4gbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25zJyA9PiAkb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJHJlcXVlc3QsICYkY29udGFpbmVyLCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkY29udGFpbmVyW10gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcgPT4gJHJlcXVlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVzcG9uc2UnID0+IG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXJyb3InID0+ICRyZWFzb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb3B0aW9ucycgPT4gJG9wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFxDcmVhdGU6OnJlamVjdGlvbkZvcigkcmVhc29uKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgaW52b2tlcyBhIGNhbGxiYWNrIGJlZm9yZSBhbmQgYWZ0ZXIgc2VuZGluZyBhIHJlcXVlc3QuCiAgICAgKgogICAgICogVGhlIHByb3ZpZGVkIGxpc3RlbmVyIGNhbm5vdCBtb2RpZnkgb3IgYWx0ZXIgdGhlIHJlc3BvbnNlLiBJdCBzaW1wbHkKICAgICAqICJ0YXBzIiBpbnRvIHRoZSBjaGFpbiB0byBiZSBub3RpZmllZCBiZWZvcmUgcmV0dXJuaW5nIHRoZSBwcm9taXNlLiBUaGUKICAgICAqIGJlZm9yZSBsaXN0ZW5lciBhY2NlcHRzIGEgcmVxdWVzdCBhbmQgb3B0aW9ucyBhcnJheSwgYW5kIHRoZSBhZnRlcgogICAgICogbGlzdGVuZXIgYWNjZXB0cyBhIHJlcXVlc3QsIG9wdGlvbnMgYXJyYXksIGFuZCByZXNwb25zZSBwcm9taXNlLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkYmVmb3JlIEZ1bmN0aW9uIHRvIGludm9rZSBiZWZvcmUgZm9yd2FyZGluZyB0aGUgcmVxdWVzdC4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkYWZ0ZXIgIEZ1bmN0aW9uIGludm9rZWQgYWZ0ZXIgZm9yd2FyZGluZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0YXAoP2NhbGxhYmxlICRiZWZvcmUgPSBudWxsLCA/Y2FsbGFibGUgJGFmdGVyID0gbnVsbCk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGJlZm9yZSwgJGFmdGVyKTogY2FsbGFibGUgewogICAgICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucykgdXNlICgkaGFuZGxlciwgJGJlZm9yZSwgJGFmdGVyKSB7CiAgICAgICAgICAgICAgICBpZiAoJGJlZm9yZSkgewogICAgICAgICAgICAgICAgICAgICRiZWZvcmUoJHJlcXVlc3QsICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXNwb25zZSA9ICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgICAgICAgICBpZiAoJGFmdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgJGFmdGVyKCRyZXF1ZXN0LCAkb3B0aW9ucywgJHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3BvbnNlOwogICAgICAgICAgICB9OwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgaGFuZGxlcyByZXF1ZXN0IHJlZGlyZWN0cy4KICAgICAqCiAgICAgKiBAcmV0dXJuIGNhbGxhYmxlIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG5leHQgaGFuZGxlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWRpcmVjdCgpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKTogUmVkaXJlY3RNaWRkbGV3YXJlIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWRpcmVjdE1pZGRsZXdhcmUoJGhhbmRsZXIpOwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgcmV0cmllcyByZXF1ZXN0cyBiYXNlZCBvbiB0aGUgYm9vbGVhbiByZXN1bHQgb2YKICAgICAqIGludm9raW5nIHRoZSBwcm92aWRlZCAiZGVjaWRlciIgZnVuY3Rpb24uCiAgICAgKgogICAgICogSWYgbm8gZGVsYXkgZnVuY3Rpb24gaXMgcHJvdmlkZWQsIGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIGV4cG9uZW50aWFsCiAgICAgKiBiYWNrb2ZmIHdpbGwgYmUgdXRpbGl6ZWQuCiAgICAgKgogICAgICogQHBhcmFtIGNhbGxhYmxlICRkZWNpZGVyIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbnVtYmVyIG9mIHJldHJpZXMsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgYSByZXF1ZXN0LCBbcmVzcG9uc2VdLCBhbmQgW2V4Y2VwdGlvbl0gYW5kCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyB0cnVlIGlmIHRoZSByZXF1ZXN0IGlzIHRvIGJlIHJldHJpZWQuCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGRlbGF5ICAgRnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBudW1iZXIgb2YgcmV0cmllcyBhbmQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5zIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJ5KGNhbGxhYmxlICRkZWNpZGVyLCA/Y2FsbGFibGUgJGRlbGF5ID0gbnVsbCk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoY2FsbGFibGUgJGhhbmRsZXIpIHVzZSAoJGRlY2lkZXIsICRkZWxheSk6IFJldHJ5TWlkZGxld2FyZSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgUmV0cnlNaWRkbGV3YXJlKCRkZWNpZGVyLCAkaGFuZGxlciwgJGRlbGF5KTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogTWlkZGxld2FyZSB0aGF0IGxvZ3MgcmVxdWVzdHMsIHJlc3BvbnNlcywgYW5kIGVycm9ycyB1c2luZyBhIG1lc3NhZ2UKICAgICAqIGZvcm1hdHRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gTG9nZ2VySW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsb2dnZXIgICAgTG9ncyBtZXNzYWdlcy4KICAgICAqIEBwYXJhbSBNZXNzYWdlRm9ybWF0dGVySW50ZXJmYWNlfE1lc3NhZ2VGb3JtYXR0ZXIgJGZvcm1hdHRlciBGb3JtYXR0ZXIgdXNlZCB0byBjcmVhdGUgbWVzc2FnZSBzdHJpbmdzLgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbG9nTGV2ZWwgIExldmVsIGF0IHdoaWNoIHRvIGxvZyByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcGhwc3Rhbi1wYXJhbSBcUHNyXExvZ1xMb2dMZXZlbDo6KiAkbG9nTGV2ZWwgTGV2ZWwgYXQgd2hpY2ggdG8gbG9nIHJlcXVlc3RzLgogICAgICoKICAgICAqIEByZXR1cm4gY2FsbGFibGUgUmV0dXJucyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbmV4dCBoYW5kbGVyLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvZyhMb2dnZXJJbnRlcmZhY2UgJGxvZ2dlciwgJGZvcm1hdHRlciwgc3RyaW5nICRsb2dMZXZlbCA9ICdpbmZvJyk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgLy8gVG8gYmUgY29tcGF0aWJsZSB3aXRoIEd1enpsZSA3LjEueCB3ZSBuZWVkIHRvIGFsbG93IHVzZXJzIHRvIHBhc3MgYSBNZXNzYWdlRm9ybWF0dGVyCiAgICAgICAgaWYgKCEkZm9ybWF0dGVyIGluc3RhbmNlb2YgTWVzc2FnZUZvcm1hdHRlciAmJiAhJGZvcm1hdHRlciBpbnN0YW5jZW9mIE1lc3NhZ2VGb3JtYXR0ZXJJbnRlcmZhY2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxMb2dpY0V4Y2VwdGlvbihzcHJpbnRmKCdBcmd1bWVudCAyIHRvICVzOjpsb2coKSBtdXN0IGJlIG9mIHR5cGUgJXMnLCBzZWxmOjpjbGFzcywgTWVzc2FnZUZvcm1hdHRlckludGVyZmFjZTo6Y2xhc3MpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCRsb2dnZXIsICRmb3JtYXR0ZXIsICRsb2dMZXZlbCk6IGNhbGxhYmxlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMgPSBbXSkgdXNlICgkaGFuZGxlciwgJGxvZ2dlciwgJGZvcm1hdHRlciwgJGxvZ0xldmVsKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGhhbmRsZXIoJHJlcXVlc3QsICRvcHRpb25zKS0+dGhlbigKICAgICAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCRyZXNwb25zZSkgdXNlICgkbG9nZ2VyLCAkcmVxdWVzdCwgJGZvcm1hdHRlciwgJGxvZ0xldmVsKTogUmVzcG9uc2VJbnRlcmZhY2UgewogICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICRmb3JtYXR0ZXItPmZvcm1hdCgkcmVxdWVzdCwgJHJlc3BvbnNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxvZ2dlci0+bG9nKCRsb2dMZXZlbCwgJG1lc3NhZ2UpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgkbG9nZ2VyLCAkcmVxdWVzdCwgJGZvcm1hdHRlcik6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcmVzcG9uc2UgPSAkcmVhc29uIGluc3RhbmNlb2YgUmVxdWVzdEV4Y2VwdGlvbiA/ICRyZWFzb24tPmdldFJlc3BvbnNlKCkgOiBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAkbWVzc2FnZSA9ICRmb3JtYXR0ZXItPmZvcm1hdCgkcmVxdWVzdCwgJHJlc3BvbnNlLCBQXENyZWF0ZTo6ZXhjZXB0aW9uRm9yKCRyZWFzb24pKTsKICAgICAgICAgICAgICAgICAgICAgICAgJGxvZ2dlci0+ZXJyb3IoJG1lc3NhZ2UpOwoKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoJHJlYXNvbik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtaWRkbGV3YXJlIGFkZHMgYSBkZWZhdWx0IGNvbnRlbnQtdHlwZSBpZiBwb3NzaWJsZSwgYSBkZWZhdWx0CiAgICAgKiBjb250ZW50LWxlbmd0aCBvciB0cmFuc2Zlci1lbmNvZGluZyBoZWFkZXIsIGFuZCB0aGUgZXhwZWN0IGhlYWRlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmVwYXJlQm9keSgpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKTogUHJlcGFyZUJvZHlNaWRkbGV3YXJlIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBQcmVwYXJlQm9keU1pZGRsZXdhcmUoJGhhbmRsZXIpOwogICAgICAgIH07CiAgICB9CgogICAgLyoqCiAgICAgKiBNaWRkbGV3YXJlIHRoYXQgYXBwbGllcyBhIG1hcCBmdW5jdGlvbiB0byB0aGUgcmVxdWVzdCBiZWZvcmUgcGFzc2luZyB0bwogICAgICogdGhlIG5leHQgaGFuZGxlci4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJGZuIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyBhIFJlcXVlc3RJbnRlcmZhY2UgYW5kIHJldHVybnMKICAgICAqICAgICAgICAgICAgICAgICAgICAgYSBSZXF1ZXN0SW50ZXJmYWNlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1hcFJlcXVlc3QoY2FsbGFibGUgJGZuKTogY2FsbGFibGUKICAgIHsKICAgICAgICByZXR1cm4gc3RhdGljIGZ1bmN0aW9uIChjYWxsYWJsZSAkaGFuZGxlcikgdXNlICgkZm4pOiBjYWxsYWJsZSB7CiAgICAgICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKSB1c2UgKCRoYW5kbGVyLCAkZm4pIHsKICAgICAgICAgICAgICAgIHJldHVybiAkaGFuZGxlcigkZm4oJHJlcXVlc3QpLCAkb3B0aW9ucyk7CiAgICAgICAgICAgIH07CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIE1pZGRsZXdhcmUgdGhhdCBhcHBsaWVzIGEgbWFwIGZ1bmN0aW9uIHRvIHRoZSByZXNvbHZlZCBwcm9taXNlJ3MKICAgICAqIHJlc3BvbnNlLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkZm4gRnVuY3Rpb24gdGhhdCBhY2NlcHRzIGEgUmVzcG9uc2VJbnRlcmZhY2UgYW5kCiAgICAgKiAgICAgICAgICAgICAgICAgICAgIHJldHVybnMgYSBSZXNwb25zZUludGVyZmFjZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYXBSZXNwb25zZShjYWxsYWJsZSAkZm4pOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBzdGF0aWMgZnVuY3Rpb24gKGNhbGxhYmxlICRoYW5kbGVyKSB1c2UgKCRmbik6IGNhbGxhYmxlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYyBmdW5jdGlvbiAoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpIHVzZSAoJGhhbmRsZXIsICRmbikgewogICAgICAgICAgICAgICAgcmV0dXJuICRoYW5kbGVyKCRyZXF1ZXN0LCAkb3B0aW9ucyktPnRoZW4oJGZuKTsKICAgICAgICAgICAgfTsKICAgICAgICB9OwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Pool.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXEVhY2hQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzb3JJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CgovKioKICogU2VuZHMgYW4gaXRlcmF0b3Igb2YgcmVxdWVzdHMgY29uY3VycmVudGx5IHVzaW5nIGEgY2FwcGVkIHBvb2wgc2l6ZS4KICoKICogVGhlIHBvb2wgd2lsbCByZWFkIGZyb20gYW4gaXRlcmF0b3IgdW50aWwgaXQgaXMgY2FuY2VsbGVkIG9yIHVudGlsIHRoZQogKiBpdGVyYXRvciBpcyBjb25zdW1lZC4gV2hlbiBhIHJlcXVlc3QgaXMgeWllbGRlZCwgdGhlIHJlcXVlc3QgaXMgc2VudCBhZnRlcgogKiBhcHBseWluZyB0aGUgInJlcXVlc3Rfb3B0aW9ucyIgcmVxdWVzdCBvcHRpb25zIChpZiBwcm92aWRlZCBpbiB0aGUgY3RvcikuCiAqCiAqIFdoZW4gYSBmdW5jdGlvbiBpcyB5aWVsZGVkIGJ5IHRoZSBpdGVyYXRvciwgdGhlIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIHRoZQogKiAicmVxdWVzdF9vcHRpb25zIiBhcnJheSB0aGF0IHNob3VsZCBiZSBtZXJnZWQgb24gdG9wIG9mIGFueSBleGlzdGluZwogKiBvcHRpb25zLCBhbmQgdGhlIGZ1bmN0aW9uIE1VU1QgdGhlbiByZXR1cm4gYSB3YWl0LWFibGUgcHJvbWlzZS4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBQb29sIGltcGxlbWVudHMgUHJvbWlzb3JJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBAdmFyIEVhY2hQcm9taXNlCiAgICAgKi8KICAgIHByaXZhdGUgJGVhY2g7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ2xpZW50SW50ZXJmYWNlICRjbGllbnQgICBDbGllbnQgdXNlZCB0byBzZW5kIHRoZSByZXF1ZXN0cy4KICAgICAqIEBwYXJhbSBhcnJheXxcSXRlcmF0b3IgJHJlcXVlc3RzIFJlcXVlc3RzIG9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMgdG8gc2VuZCBjb25jdXJyZW50bHkuCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICRjb25maWcgICBBc3NvY2lhdGl2ZSBhcnJheSBvZiBvcHRpb25zCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIGNvbmN1cnJlbmN5OiAoaW50KSBNYXhpbXVtIG51bWJlciBvZiByZXF1ZXN0cyB0byBzZW5kIGNvbmN1cnJlbnRseQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBvcHRpb25zOiBBcnJheSBvZiByZXF1ZXN0IG9wdGlvbnMgdG8gYXBwbHkgdG8gZWFjaCByZXF1ZXN0LgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBmdWxmaWxsZWQ6IChjYWxsYWJsZSkgRnVuY3Rpb24gdG8gaW52b2tlIHdoZW4gYSByZXF1ZXN0IGNvbXBsZXRlcy4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcmVqZWN0ZWQ6IChjYWxsYWJsZSkgRnVuY3Rpb24gdG8gaW52b2tlIHdoZW4gYSByZXF1ZXN0IGlzIHJlamVjdGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ2xpZW50SW50ZXJmYWNlICRjbGllbnQsICRyZXF1ZXN0cywgYXJyYXkgJGNvbmZpZyA9IFtdKQogICAgewogICAgICAgIGlmICghaXNzZXQoJGNvbmZpZ1snY29uY3VycmVuY3knXSkpIHsKICAgICAgICAgICAgJGNvbmZpZ1snY29uY3VycmVuY3knXSA9IDI1OwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ29wdGlvbnMnXSkpIHsKICAgICAgICAgICAgJG9wdHMgPSAkY29uZmlnWydvcHRpb25zJ107CiAgICAgICAgICAgIHVuc2V0KCRjb25maWdbJ29wdGlvbnMnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG9wdHMgPSBbXTsKICAgICAgICB9CgogICAgICAgICRpdGVyYWJsZSA9IFBcQ3JlYXRlOjppdGVyRm9yKCRyZXF1ZXN0cyk7CiAgICAgICAgJHJlcXVlc3RzID0gc3RhdGljIGZ1bmN0aW9uICgpIHVzZSAoJGl0ZXJhYmxlLCAkY2xpZW50LCAkb3B0cykgewogICAgICAgICAgICBmb3JlYWNoICgkaXRlcmFibGUgYXMgJGtleSA9PiAkcmZuKSB7CiAgICAgICAgICAgICAgICBpZiAoJHJmbiBpbnN0YW5jZW9mIFJlcXVlc3RJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICAgICB5aWVsZCAka2V5ID0+ICRjbGllbnQtPnNlbmRBc3luYygkcmZuLCAkb3B0cyk7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoXGlzX2NhbGxhYmxlKCRyZm4pKSB7CiAgICAgICAgICAgICAgICAgICAgeWllbGQgJGtleSA9PiAkcmZuKCRvcHRzKTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0VhY2ggdmFsdWUgeWllbGRlZCBieSB0aGUgaXRlcmF0b3IgbXVzdCBiZSBhIFBzcjdcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2Ugb3IgYSBjYWxsYWJsZSB0aGF0IHJldHVybnMgYSBwcm9taXNlIHRoYXQgZnVsZmlsbHMgd2l0aCBhIFBzcjdcTWVzc2FnZVxIdHRwXFJlc3BvbnNlSW50ZXJmYWNlIG9iamVjdC4nKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgICR0aGlzLT5lYWNoID0gbmV3IEVhY2hQcm9taXNlKCRyZXF1ZXN0cygpLCAkY29uZmlnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBwcm9taXNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9taXNlKCk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVhY2gtPnByb21pc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIFNlbmRzIG11bHRpcGxlIHJlcXVlc3RzIGNvbmN1cnJlbnRseSBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiByZXNwb25zZXMKICAgICAqIGFuZCBleGNlcHRpb25zIHRoYXQgdXNlcyB0aGUgc2FtZSBvcmRlcmluZyBhcyB0aGUgcHJvdmlkZWQgcmVxdWVzdHMuCiAgICAgKgogICAgICogSU1QT1JUQU5UOiBUaGlzIG1ldGhvZCBrZWVwcyBldmVyeSByZXF1ZXN0IGFuZCByZXNwb25zZSBpbiBtZW1vcnksIGFuZAogICAgICogYXMgc3VjaCwgaXMgTk9UIHJlY29tbWVuZGVkIHdoZW4gc2VuZGluZyBhIGxhcmdlIG51bWJlciBvciBhbgogICAgICogaW5kZXRlcm1pbmF0ZSBudW1iZXIgb2YgcmVxdWVzdHMgY29uY3VycmVudGx5LgogICAgICoKICAgICAqIEBwYXJhbSBDbGllbnRJbnRlcmZhY2UgJGNsaWVudCAgIENsaWVudCB1c2VkIHRvIHNlbmQgdGhlIHJlcXVlc3RzCiAgICAgKiBAcGFyYW0gYXJyYXl8XEl0ZXJhdG9yICRyZXF1ZXN0cyBSZXF1ZXN0cyB0byBzZW5kIGNvbmN1cnJlbnRseS4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgJG9wdGlvbnMgIFBhc3NlcyB0aHJvdWdoIHRoZSBvcHRpb25zIGF2YWlsYWJsZSBpbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge0BzZWUgUG9vbDo6X19jb25zdHJ1Y3R9CiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJlc3BvbnNlIG9yIGFuIGV4Y2VwdGlvbgogICAgICogICAgICAgICAgICAgICBpbiB0aGUgc2FtZSBvcmRlciB0aGF0IHRoZSByZXF1ZXN0cyB3ZXJlIHNlbnQuCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBldmVudCBmb3JtYXQgaXMgaW5jb3JyZWN0LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGJhdGNoKENsaWVudEludGVyZmFjZSAkY2xpZW50LCAkcmVxdWVzdHMsIGFycmF5ICRvcHRpb25zID0gW10pOiBhcnJheQogICAgewogICAgICAgICRyZXMgPSBbXTsKICAgICAgICBzZWxmOjpjbXBDYWxsYmFjaygkb3B0aW9ucywgJ2Z1bGZpbGxlZCcsICRyZXMpOwogICAgICAgIHNlbGY6OmNtcENhbGxiYWNrKCRvcHRpb25zLCAncmVqZWN0ZWQnLCAkcmVzKTsKICAgICAgICAkcG9vbCA9IG5ldyBzdGF0aWMoJGNsaWVudCwgJHJlcXVlc3RzLCAkb3B0aW9ucyk7CiAgICAgICAgJHBvb2wtPnByb21pc2UoKS0+d2FpdCgpOwogICAgICAgIFxrc29ydCgkcmVzKTsKCiAgICAgICAgcmV0dXJuICRyZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeGVjdXRlIGNhbGxiYWNrKHMpCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNtcENhbGxiYWNrKGFycmF5ICYkb3B0aW9ucywgc3RyaW5nICRuYW1lLCBhcnJheSAmJHJlc3VsdHMpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkb3B0aW9uc1skbmFtZV0pKSB7CiAgICAgICAgICAgICRvcHRpb25zWyRuYW1lXSA9IHN0YXRpYyBmdW5jdGlvbiAoJHYsICRrKSB1c2UgKCYkcmVzdWx0cykgewogICAgICAgICAgICAgICAgJHJlc3VsdHNbJGtdID0gJHY7CiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGN1cnJlbnRGbiA9ICRvcHRpb25zWyRuYW1lXTsKICAgICAgICAgICAgJG9wdGlvbnNbJG5hbWVdID0gc3RhdGljIGZ1bmN0aW9uICgkdiwgJGspIHVzZSAoJiRyZXN1bHRzLCAkY3VycmVudEZuKSB7CiAgICAgICAgICAgICAgICAkY3VycmVudEZuKCR2LCAkayk7CiAgICAgICAgICAgICAgICAkcmVzdWx0c1ska10gPSAkdjsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/PrepareBodyMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFByZXBhcmVzIHJlcXVlc3RzIHRoYXQgY29udGFpbiBhIGJvZHksIGFkZGluZyB0aGUgQ29udGVudC1MZW5ndGgsCiAqIENvbnRlbnQtVHlwZSwgYW5kIEV4cGVjdCBoZWFkZXJzLgogKgogKiBAZmluYWwKICovCmNsYXNzIFByZXBhcmVCb2R5TWlkZGxld2FyZQp7CiAgICAvKioKICAgICAqIEB2YXIgY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJG5leHRIYW5kbGVyOwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkbmV4dEhhbmRsZXIgTmV4dCBoYW5kbGVyIHRvIGludm9rZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRuZXh0SGFuZGxlcikKICAgIHsKICAgICAgICAkdGhpcy0+bmV4dEhhbmRsZXIgPSAkbmV4dEhhbmRsZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9faW52b2tlKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgICRmbiA9ICR0aGlzLT5uZXh0SGFuZGxlcjsKCiAgICAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlIHJlcXVlc3QgaGFzIG5vIGJvZHkuCiAgICAgICAgaWYgKCRyZXF1ZXN0LT5nZXRCb2R5KCktPmdldFNpemUoKSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gJGZuKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICAkbW9kaWZ5ID0gW107CgogICAgICAgIC8vIEFkZCBhIGRlZmF1bHQgY29udGVudC10eXBlIGlmIHBvc3NpYmxlLgogICAgICAgIGlmICghJHJlcXVlc3QtPmhhc0hlYWRlcignQ29udGVudC1UeXBlJykpIHsKICAgICAgICAgICAgaWYgKCR1cmkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRNZXRhZGF0YSgndXJpJykpIHsKICAgICAgICAgICAgICAgIGlmIChpc19zdHJpbmcoJHVyaSkgJiYgJHR5cGUgPSBQc3I3XE1pbWVUeXBlOjpmcm9tRmlsZW5hbWUoJHVyaSkpIHsKICAgICAgICAgICAgICAgICAgICAkbW9kaWZ5WydzZXRfaGVhZGVycyddWydDb250ZW50LVR5cGUnXSA9ICR0eXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBBZGQgYSBkZWZhdWx0IGNvbnRlbnQtbGVuZ3RoIG9yIHRyYW5zZmVyLWVuY29kaW5nIGhlYWRlci4KICAgICAgICBpZiAoISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJykKICAgICAgICAgICAgJiYgISRyZXF1ZXN0LT5oYXNIZWFkZXIoJ1RyYW5zZmVyLUVuY29kaW5nJykKICAgICAgICApIHsKICAgICAgICAgICAgJHNpemUgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRTaXplKCk7CiAgICAgICAgICAgIGlmICgkc2l6ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnQ29udGVudC1MZW5ndGgnXSA9ICRzaXplOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnVHJhbnNmZXItRW5jb2RpbmcnXSA9ICdjaHVua2VkJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIHRoZSBleHBlY3QgaGVhZGVyIGlmIG5lZWRlZC4KICAgICAgICAkdGhpcy0+YWRkRXhwZWN0SGVhZGVyKCRyZXF1ZXN0LCAkb3B0aW9ucywgJG1vZGlmeSk7CgogICAgICAgIHJldHVybiAkZm4oUHNyN1xVdGlsczo6bW9kaWZ5UmVxdWVzdCgkcmVxdWVzdCwgJG1vZGlmeSksICRvcHRpb25zKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBleHBlY3QgaGVhZGVyCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkRXhwZWN0SGVhZGVyKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRvcHRpb25zLCBhcnJheSAmJG1vZGlmeSk6IHZvaWQKICAgIHsKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIEV4cGVjdCBoZWFkZXIgc2hvdWxkIGJlIHVzZWQKICAgICAgICBpZiAoJHJlcXVlc3QtPmhhc0hlYWRlcignRXhwZWN0JykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGV4cGVjdCA9ICRvcHRpb25zWydleHBlY3QnXSA/PyBudWxsOwoKICAgICAgICAvLyBSZXR1cm4gaWYgZGlzYWJsZWQgb3IgdXNpbmcgSFRUUC8xLjAKICAgICAgICBpZiAoJGV4cGVjdCA9PT0gZmFsc2UgfHwgJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpID09PSAnMS4wJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgZXhwZWN0IGhlYWRlciBpcyB1bmNvbmRpdGlvbmFsbHkgZW5hYmxlZAogICAgICAgIGlmICgkZXhwZWN0ID09PSB0cnVlKSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0V4cGVjdCddID0gJzEwMC1Db250aW51ZSc7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBCeSBkZWZhdWx0LCBzZW5kIHRoZSBleHBlY3QgaGVhZGVyIHdoZW4gdGhlIHBheWxvYWQgaXMgPiAxbWIKICAgICAgICBpZiAoJGV4cGVjdCA9PT0gbnVsbCkgewogICAgICAgICAgICAkZXhwZWN0ID0gMTA0ODU3NjsKICAgICAgICB9CgogICAgICAgIC8vIEFsd2F5cyBhZGQgaWYgdGhlIGJvZHkgY2Fubm90IGJlIHJld291bmQsIHRoZSBzaXplIGNhbm5vdCBiZQogICAgICAgIC8vIGRldGVybWluZWQsIG9yIHRoZSBzaXplIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3V0b2ZmIHRocmVzaG9sZAogICAgICAgICRib2R5ID0gJHJlcXVlc3QtPmdldEJvZHkoKTsKICAgICAgICAkc2l6ZSA9ICRib2R5LT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkc2l6ZSA9PT0gbnVsbCB8fCAkc2l6ZSA+PSAoaW50KSAkZXhwZWN0IHx8ICEkYm9keS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3NldF9oZWFkZXJzJ11bJ0V4cGVjdCddID0gJzEwMC1Db250aW51ZSc7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RedirectMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEJhZFJlc3BvbnNlRXhjZXB0aW9uOwp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cVG9vTWFueVJlZGlyZWN0c0V4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFJlcXVlc3QgcmVkaXJlY3QgbWlkZGxld2FyZS4KICoKICogQXBwbHkgdGhpcyBtaWRkbGV3YXJlIGxpa2Ugb3RoZXIgbWlkZGxld2FyZSB1c2luZwogKiB7QHNlZSBcR3V6emxlSHR0cFxNaWRkbGV3YXJlOjpyZWRpcmVjdCgpfS4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBSZWRpcmVjdE1pZGRsZXdhcmUKewogICAgcHVibGljIGNvbnN0IEhJU1RPUllfSEVBREVSID0gJ1gtR3V6emxlLVJlZGlyZWN0LUhpc3RvcnknOwoKICAgIHB1YmxpYyBjb25zdCBTVEFUVVNfSElTVE9SWV9IRUFERVIgPSAnWC1HdXp6bGUtUmVkaXJlY3QtU3RhdHVzLUhpc3RvcnknOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljICRkZWZhdWx0U2V0dGluZ3MgPSBbCiAgICAgICAgJ21heCcgPT4gNSwKICAgICAgICAncHJvdG9jb2xzJyA9PiBbJ2h0dHAnLCAnaHR0cHMnXSwKICAgICAgICAnc3RyaWN0JyA9PiBmYWxzZSwKICAgICAgICAncmVmZXJlcicgPT4gZmFsc2UsCiAgICAgICAgJ3RyYWNrX3JlZGlyZWN0cycgPT4gZmFsc2UsCiAgICBdOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZShSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkbmV4dEhhbmRsZXI7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlICRuZXh0SGFuZGxlciBOZXh0IGhhbmRsZXIgdG8gaW52b2tlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY2FsbGFibGUgJG5leHRIYW5kbGVyKQogICAgewogICAgICAgICR0aGlzLT5uZXh0SGFuZGxlciA9ICRuZXh0SGFuZGxlcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX19pbnZva2UoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGZuID0gJHRoaXMtPm5leHRIYW5kbGVyOwoKICAgICAgICBpZiAoZW1wdHkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddKSkgewogICAgICAgICAgICByZXR1cm4gJGZuKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddID09PSB0cnVlKSB7CiAgICAgICAgICAgICRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXSA9IHNlbGY6OiRkZWZhdWx0U2V0dGluZ3M7CiAgICAgICAgfSBlbHNlaWYgKCFcaXNfYXJyYXkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignYWxsb3dfcmVkaXJlY3RzIG11c3QgYmUgdHJ1ZSwgZmFsc2UsIG9yIGFycmF5Jyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gTWVyZ2UgdGhlIGRlZmF1bHQgc2V0dGluZ3Mgd2l0aCB0aGUgcHJvdmlkZWQgc2V0dGluZ3MKICAgICAgICAgICAgJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddICs9IHNlbGY6OiRkZWZhdWx0U2V0dGluZ3M7CiAgICAgICAgfQoKICAgICAgICBpZiAoZW1wdHkoJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddWydtYXgnXSkpIHsKICAgICAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRmbigkcmVxdWVzdCwgJG9wdGlvbnMpCiAgICAgICAgICAgIC0+dGhlbihmdW5jdGlvbiAoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKSB1c2UgKCRyZXF1ZXN0LCAkb3B0aW9ucykgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5jaGVja1JlZGlyZWN0KCRyZXF1ZXN0LCAkb3B0aW9ucywgJHJlc3BvbnNlKTsKICAgICAgICAgICAgfSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFJlc3BvbnNlSW50ZXJmYWNlfFByb21pc2VJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNoZWNrUmVkaXJlY3QoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMsIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSkKICAgIHsKICAgICAgICBpZiAoXHN0cnBvcygoc3RyaW5nKSAkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSwgJzMnKSAhPT0gMAogICAgICAgICAgICB8fCAhJHJlc3BvbnNlLT5oYXNIZWFkZXIoJ0xvY2F0aW9uJykKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuICRyZXNwb25zZTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5ndWFyZE1heCgkcmVxdWVzdCwgJHJlc3BvbnNlLCAkb3B0aW9ucyk7CiAgICAgICAgJG5leHRSZXF1ZXN0ID0gJHRoaXMtPm1vZGlmeVJlcXVlc3QoJHJlcXVlc3QsICRvcHRpb25zLCAkcmVzcG9uc2UpOwoKICAgICAgICAvLyBJZiBhdXRob3JpemF0aW9uIGlzIGhhbmRsZWQgYnkgY3VybCwgdW5zZXQgaXQgaWYgVVJJIGlzIGNyb3NzLW9yaWdpbi4KICAgICAgICBpZiAoUHNyN1xVcmlDb21wYXJhdG9yOjppc0Nyb3NzT3JpZ2luKCRyZXF1ZXN0LT5nZXRVcmkoKSwgJG5leHRSZXF1ZXN0LT5nZXRVcmkoKSkgJiYgZGVmaW5lZCgnXENVUkxPUFRfSFRUUEFVVEgnKSkgewogICAgICAgICAgICB1bnNldCgKICAgICAgICAgICAgICAgICRvcHRpb25zWydjdXJsJ11bXENVUkxPUFRfSFRUUEFVVEhdLAogICAgICAgICAgICAgICAgJG9wdGlvbnNbJ2N1cmwnXVtcQ1VSTE9QVF9VU0VSUFdEXQogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsnb25fcmVkaXJlY3QnXSkpIHsKICAgICAgICAgICAgKCRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsnb25fcmVkaXJlY3QnXSkoCiAgICAgICAgICAgICAgICAkcmVxdWVzdCwKICAgICAgICAgICAgICAgICRyZXNwb25zZSwKICAgICAgICAgICAgICAgICRuZXh0UmVxdWVzdC0+Z2V0VXJpKCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRwcm9taXNlID0gJHRoaXMoJG5leHRSZXF1ZXN0LCAkb3B0aW9ucyk7CgogICAgICAgIC8vIEFkZCBoZWFkZXJzIHRvIGJlIGFibGUgdG8gdHJhY2sgaGlzdG9yeSBvZiByZWRpcmVjdHMuCiAgICAgICAgaWYgKCFlbXB0eSgkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ3RyYWNrX3JlZGlyZWN0cyddKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPndpdGhUcmFja2luZygKICAgICAgICAgICAgICAgICRwcm9taXNlLAogICAgICAgICAgICAgICAgKHN0cmluZykgJG5leHRSZXF1ZXN0LT5nZXRVcmkoKSwKICAgICAgICAgICAgICAgICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHByb21pc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBFbmFibGUgdHJhY2tpbmcgb24gcHJvbWlzZS4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB3aXRoVHJhY2tpbmcoUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZSwgc3RyaW5nICR1cmksIGludCAkc3RhdHVzQ29kZSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHByb21pc2UtPnRoZW4oCiAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKSB1c2UgKCR1cmksICRzdGF0dXNDb2RlKSB7CiAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgYXJlIHB1c2hpbmcgdG8gdGhlIGZyb250IG9mIHRoZSBsaXN0IGFzIHRoaXMKICAgICAgICAgICAgICAgIC8vIHdvdWxkIGJlIGFuIGVhcmxpZXIgcmVzcG9uc2UgdGhhbiB3aGF0IGlzIGN1cnJlbnRseSBwcmVzZW50CiAgICAgICAgICAgICAgICAvLyBpbiB0aGUgaGlzdG9yeSBoZWFkZXIuCiAgICAgICAgICAgICAgICAkaGlzdG9yeUhlYWRlciA9ICRyZXNwb25zZS0+Z2V0SGVhZGVyKHNlbGY6OkhJU1RPUllfSEVBREVSKTsKICAgICAgICAgICAgICAgICRzdGF0dXNIZWFkZXIgPSAkcmVzcG9uc2UtPmdldEhlYWRlcihzZWxmOjpTVEFUVVNfSElTVE9SWV9IRUFERVIpOwogICAgICAgICAgICAgICAgXGFycmF5X3Vuc2hpZnQoJGhpc3RvcnlIZWFkZXIsICR1cmkpOwogICAgICAgICAgICAgICAgXGFycmF5X3Vuc2hpZnQoJHN0YXR1c0hlYWRlciwgKHN0cmluZykgJHN0YXR1c0NvZGUpOwoKICAgICAgICAgICAgICAgIHJldHVybiAkcmVzcG9uc2UtPndpdGhIZWFkZXIoc2VsZjo6SElTVE9SWV9IRUFERVIsICRoaXN0b3J5SGVhZGVyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+d2l0aEhlYWRlcihzZWxmOjpTVEFUVVNfSElTVE9SWV9IRUFERVIsICRzdGF0dXNIZWFkZXIpOwogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENoZWNrIGZvciB0b28gbWFueSByZWRpcmVjdHMuCiAgICAgKgogICAgICogQHRocm93cyBUb29NYW55UmVkaXJlY3RzRXhjZXB0aW9uIFRvbyBtYW55IHJlZGlyZWN0cy4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBndWFyZE1heChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UsIGFycmF5ICYkb3B0aW9ucyk6IHZvaWQKICAgIHsKICAgICAgICAkY3VycmVudCA9ICRvcHRpb25zWydfX3JlZGlyZWN0X2NvdW50J10KICAgICAgICAgICAgPz8gMDsKICAgICAgICAkb3B0aW9uc1snX19yZWRpcmVjdF9jb3VudCddID0gJGN1cnJlbnQgKyAxOwogICAgICAgICRtYXggPSAkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ21heCddOwoKICAgICAgICBpZiAoJG9wdGlvbnNbJ19fcmVkaXJlY3RfY291bnQnXSA+ICRtYXgpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFRvb01hbnlSZWRpcmVjdHNFeGNlcHRpb24oIldpbGwgbm90IGZvbGxvdyBtb3JlIHRoYW4geyRtYXh9IHJlZGlyZWN0cyIsICRyZXF1ZXN0LCAkcmVzcG9uc2UpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kaWZ5UmVxdWVzdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucywgUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgIC8vIFJlcXVlc3QgbW9kaWZpY2F0aW9ucyB0byBhcHBseS4KICAgICAgICAkbW9kaWZ5ID0gW107CiAgICAgICAgJHByb3RvY29scyA9ICRvcHRpb25zWydhbGxvd19yZWRpcmVjdHMnXVsncHJvdG9jb2xzJ107CgogICAgICAgIC8vIFVzZSBhIEdFVCByZXF1ZXN0IGlmIHRoaXMgaXMgYW4gZW50aXR5IGVuY2xvc2luZyByZXF1ZXN0IGFuZCB3ZSBhcmUKICAgICAgICAvLyBub3QgZm9yY2luZyBSRkMgY29tcGxpYW5jZSwgYnV0IHJhdGhlciBlbXVsYXRpbmcgd2hhdCBhbGwgYnJvd3NlcnMKICAgICAgICAvLyB3b3VsZCBkby4KICAgICAgICAkc3RhdHVzQ29kZSA9ICRyZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpOwogICAgICAgIGlmICgkc3RhdHVzQ29kZSA9PSAzMDMKICAgICAgICAgICAgfHwgKCRzdGF0dXNDb2RlIDw9IDMwMiAmJiAhJG9wdGlvbnNbJ2FsbG93X3JlZGlyZWN0cyddWydzdHJpY3QnXSkKICAgICAgICApIHsKICAgICAgICAgICAgJHNhZmVNZXRob2RzID0gWydHRVQnLCAnSEVBRCcsICdPUFRJT05TJ107CiAgICAgICAgICAgICRyZXF1ZXN0TWV0aG9kID0gJHJlcXVlc3QtPmdldE1ldGhvZCgpOwoKICAgICAgICAgICAgJG1vZGlmeVsnbWV0aG9kJ10gPSBpbl9hcnJheSgkcmVxdWVzdE1ldGhvZCwgJHNhZmVNZXRob2RzKSA/ICRyZXF1ZXN0TWV0aG9kIDogJ0dFVCc7CiAgICAgICAgICAgICRtb2RpZnlbJ2JvZHknXSA9ICcnOwogICAgICAgIH0KCiAgICAgICAgJHVyaSA9IHNlbGY6OnJlZGlyZWN0VXJpKCRyZXF1ZXN0LCAkcmVzcG9uc2UsICRwcm90b2NvbHMpOwogICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1snaWRuX2NvbnZlcnNpb24nXSkgJiYgKCRvcHRpb25zWydpZG5fY29udmVyc2lvbiddICE9PSBmYWxzZSkpIHsKICAgICAgICAgICAgJGlkbk9wdGlvbnMgPSAoJG9wdGlvbnNbJ2lkbl9jb252ZXJzaW9uJ10gPT09IHRydWUpID8gXElETkFfREVGQVVMVCA6ICRvcHRpb25zWydpZG5fY29udmVyc2lvbiddOwogICAgICAgICAgICAkdXJpID0gVXRpbHM6OmlkblVyaUNvbnZlcnQoJHVyaSwgJGlkbk9wdGlvbnMpOwogICAgICAgIH0KCiAgICAgICAgJG1vZGlmeVsndXJpJ10gPSAkdXJpOwogICAgICAgIFBzcjdcTWVzc2FnZTo6cmV3aW5kQm9keSgkcmVxdWVzdCk7CgogICAgICAgIC8vIEFkZCB0aGUgUmVmZXJlciBoZWFkZXIgaWYgaXQgaXMgdG9sZCB0byBkbyBzbyBhbmQgb25seQogICAgICAgIC8vIGFkZCB0aGUgaGVhZGVyIGlmIHdlIGFyZSBub3QgcmVkaXJlY3RpbmcgZnJvbSBodHRwcyB0byBodHRwLgogICAgICAgIGlmICgkb3B0aW9uc1snYWxsb3dfcmVkaXJlY3RzJ11bJ3JlZmVyZXInXQogICAgICAgICAgICAmJiAkbW9kaWZ5Wyd1cmknXS0+Z2V0U2NoZW1lKCkgPT09ICRyZXF1ZXN0LT5nZXRVcmkoKS0+Z2V0U2NoZW1lKCkKICAgICAgICApIHsKICAgICAgICAgICAgJHVyaSA9ICRyZXF1ZXN0LT5nZXRVcmkoKS0+d2l0aFVzZXJJbmZvKCcnKTsKICAgICAgICAgICAgJG1vZGlmeVsnc2V0X2hlYWRlcnMnXVsnUmVmZXJlciddID0gKHN0cmluZykgJHVyaTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbW9kaWZ5WydyZW1vdmVfaGVhZGVycyddW10gPSAnUmVmZXJlcic7CiAgICAgICAgfQoKICAgICAgICAvLyBSZW1vdmUgQXV0aG9yaXphdGlvbiBhbmQgQ29va2llIGhlYWRlcnMgaWYgVVJJIGlzIGNyb3NzLW9yaWdpbi4KICAgICAgICBpZiAoUHNyN1xVcmlDb21wYXJhdG9yOjppc0Nyb3NzT3JpZ2luKCRyZXF1ZXN0LT5nZXRVcmkoKSwgJG1vZGlmeVsndXJpJ10pKSB7CiAgICAgICAgICAgICRtb2RpZnlbJ3JlbW92ZV9oZWFkZXJzJ11bXSA9ICdBdXRob3JpemF0aW9uJzsKICAgICAgICAgICAgJG1vZGlmeVsncmVtb3ZlX2hlYWRlcnMnXVtdID0gJ0Nvb2tpZSc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUHNyN1xVdGlsczo6bW9kaWZ5UmVxdWVzdCgkcmVxdWVzdCwgJG1vZGlmeSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIGFwcHJvcHJpYXRlIFVSTCBvbiB0aGUgcmVxdWVzdCBiYXNlZCBvbiB0aGUgbG9jYXRpb24gaGVhZGVyLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZWRpcmVjdFVyaSgKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgIFJlc3BvbnNlSW50ZXJmYWNlICRyZXNwb25zZSwKICAgICAgICBhcnJheSAkcHJvdG9jb2xzCiAgICApOiBVcmlJbnRlcmZhY2UgewogICAgICAgICRsb2NhdGlvbiA9IFBzcjdcVXJpUmVzb2x2ZXI6OnJlc29sdmUoCiAgICAgICAgICAgICRyZXF1ZXN0LT5nZXRVcmkoKSwKICAgICAgICAgICAgbmV3IFBzcjdcVXJpKCRyZXNwb25zZS0+Z2V0SGVhZGVyTGluZSgnTG9jYXRpb24nKSkKICAgICAgICApOwoKICAgICAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcmVkaXJlY3QgVVJJIGlzIGFsbG93ZWQgYmFzZWQgb24gdGhlIHByb3RvY29scy4KICAgICAgICBpZiAoIVxpbl9hcnJheSgkbG9jYXRpb24tPmdldFNjaGVtZSgpLCAkcHJvdG9jb2xzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgQmFkUmVzcG9uc2VFeGNlcHRpb24oXHNwcmludGYoJ1JlZGlyZWN0IFVSSSwgJXMsIGRvZXMgbm90IHVzZSBvbmUgb2YgdGhlIGFsbG93ZWQgcmVkaXJlY3QgcHJvdG9jb2xzOiAlcycsICRsb2NhdGlvbiwgXGltcGxvZGUoJywgJywgJHByb3RvY29scykpLCAkcmVxdWVzdCwgJHJlc3BvbnNlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbG9jYXRpb247CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RequestOptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKLyoqCiAqIFRoaXMgY2xhc3MgY29udGFpbnMgYSBsaXN0IG9mIGJ1aWx0LWluIEd1enpsZSByZXF1ZXN0IG9wdGlvbnMuCiAqCiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmd1enpsZXBocC5vcmcvZW4vbGF0ZXN0L3JlcXVlc3Qtb3B0aW9ucy5odG1sCiAqLwpmaW5hbCBjbGFzcyBSZXF1ZXN0T3B0aW9ucwp7CiAgICAvKioKICAgICAqIGFsbG93X3JlZGlyZWN0czogKGJvb2x8YXJyYXkpIENvbnRyb2xzIHJlZGlyZWN0IGJlaGF2aW9yLiBQYXNzIGZhbHNlCiAgICAgKiB0byBkaXNhYmxlIHJlZGlyZWN0cywgcGFzcyB0cnVlIHRvIGVuYWJsZSByZWRpcmVjdHMsIHBhc3MgYW4KICAgICAqIGFzc29jaWF0aXZlIHRvIHByb3ZpZGUgY3VzdG9tIHJlZGlyZWN0IHNldHRpbmdzLiBEZWZhdWx0cyB0byAiZmFsc2UiLgogICAgICogVGhpcyBvcHRpb24gb25seSB3b3JrcyBpZiB5b3VyIGhhbmRsZXIgaGFzIHRoZSBSZWRpcmVjdE1pZGRsZXdhcmUuIFdoZW4KICAgICAqIHBhc3NpbmcgYW4gYXNzb2NpYXRpdmUgYXJyYXksIHlvdSBjYW4gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGtleSB2YWx1ZQogICAgICogcGFpcnM6CiAgICAgKgogICAgICogLSBtYXg6IChpbnQsIGRlZmF1bHQ9NSkgbWF4aW11bSBudW1iZXIgb2YgYWxsb3dlZCByZWRpcmVjdHMuCiAgICAgKiAtIHN0cmljdDogKGJvb2wsIGRlZmF1bHQ9ZmFsc2UpIFNldCB0byB0cnVlIHRvIHVzZSBzdHJpY3QgcmVkaXJlY3RzCiAgICAgKiAgIG1lYW5pbmcgcmVkaXJlY3QgUE9TVCByZXF1ZXN0cyB3aXRoIFBPU1QgcmVxdWVzdHMgdnMuIGRvaW5nIHdoYXQgbW9zdAogICAgICogICBicm93c2VycyBkbyB3aGljaCBpcyByZWRpcmVjdCBQT1NUIHJlcXVlc3RzIHdpdGggR0VUIHJlcXVlc3RzCiAgICAgKiAtIHJlZmVyZXI6IChib29sLCBkZWZhdWx0PWZhbHNlKSBTZXQgdG8gdHJ1ZSB0byBlbmFibGUgdGhlIFJlZmVyZXIKICAgICAqICAgaGVhZGVyLgogICAgICogLSBwcm90b2NvbHM6IChhcnJheSwgZGVmYXVsdD1bJ2h0dHAnLCAnaHR0cHMnXSkgQWxsb3dlZCByZWRpcmVjdAogICAgICogICBwcm90b2NvbHMuCiAgICAgKiAtIG9uX3JlZGlyZWN0OiAoY2FsbGFibGUpIFBIUCBjYWxsYWJsZSB0aGF0IGlzIGludm9rZWQgd2hlbiBhIHJlZGlyZWN0CiAgICAgKiAgIGlzIGVuY291bnRlcmVkLiBUaGUgY2FsbGFibGUgaXMgaW52b2tlZCB3aXRoIHRoZSByZXF1ZXN0LCB0aGUgcmVkaXJlY3QKICAgICAqICAgcmVzcG9uc2UgdGhhdCB3YXMgcmVjZWl2ZWQsIGFuZCB0aGUgZWZmZWN0aXZlIFVSSS4gQW55IHJldHVybiB2YWx1ZQogICAgICogICBmcm9tIHRoZSBvbl9yZWRpcmVjdCBmdW5jdGlvbiBpcyBpZ25vcmVkLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQUxMT1dfUkVESVJFQ1RTID0gJ2FsbG93X3JlZGlyZWN0cyc7CgogICAgLyoqCiAgICAgKiBhdXRoOiAoYXJyYXkpIFBhc3MgYW4gYXJyYXkgb2YgSFRUUCBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIHRvIHVzZQogICAgICogd2l0aCB0aGUgcmVxdWVzdC4gVGhlIGFycmF5IG11c3QgY29udGFpbiB0aGUgdXNlcm5hbWUgaW4gaW5kZXggWzBdLAogICAgICogdGhlIHBhc3N3b3JkIGluIGluZGV4IFsxXSwgYW5kIHlvdSBjYW4gb3B0aW9uYWxseSBwcm92aWRlIGEgYnVpbHQtaW4KICAgICAqIGF1dGhlbnRpY2F0aW9uIHR5cGUgaW4gaW5kZXggWzJdLiBQYXNzIG51bGwgdG8gZGlzYWJsZSBhdXRoZW50aWNhdGlvbgogICAgICogZm9yIGEgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEFVVEggPSAnYXV0aCc7CgogICAgLyoqCiAgICAgKiBib2R5OiAocmVzb3VyY2V8c3RyaW5nfG51bGx8aW50fGZsb2F0fFN0cmVhbUludGVyZmFjZXxjYWxsYWJsZXxcSXRlcmF0b3IpCiAgICAgKiBCb2R5IHRvIHNlbmQgaW4gdGhlIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBCT0RZID0gJ2JvZHknOwoKICAgIC8qKgogICAgICogY2VydDogKHN0cmluZ3xhcnJheSkgU2V0IHRvIGEgc3RyaW5nIHRvIHNwZWNpZnkgdGhlIHBhdGggdG8gYSBmaWxlCiAgICAgKiBjb250YWluaW5nIGEgUEVNIGZvcm1hdHRlZCBTU0wgY2xpZW50IHNpZGUgY2VydGlmaWNhdGUuIElmIGEgcGFzc3dvcmQKICAgICAqIGlzIHJlcXVpcmVkLCB0aGVuIHNldCBjZXJ0IHRvIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHBhdGggdG8gdGhlIFBFTQogICAgICogZmlsZSBpbiB0aGUgZmlyc3QgYXJyYXkgZWxlbWVudCBmb2xsb3dlZCBieSB0aGUgY2VydGlmaWNhdGUgcGFzc3dvcmQKICAgICAqIGluIHRoZSBzZWNvbmQgYXJyYXkgZWxlbWVudC4KICAgICAqLwogICAgcHVibGljIGNvbnN0IENFUlQgPSAnY2VydCc7CgogICAgLyoqCiAgICAgKiBjb29raWVzOiAoYm9vbHxHdXp6bGVIdHRwXENvb2tpZVxDb29raWVKYXJJbnRlcmZhY2UsIGRlZmF1bHQ9ZmFsc2UpCiAgICAgKiBTcGVjaWZpZXMgd2hldGhlciBvciBub3QgY29va2llcyBhcmUgdXNlZCBpbiBhIHJlcXVlc3Qgb3Igd2hhdCBjb29raWUKICAgICAqIGphciB0byB1c2Ugb3Igd2hhdCBjb29raWVzIHRvIHNlbmQuIFRoaXMgb3B0aW9uIG9ubHkgd29ya3MgaWYgeW91cgogICAgICogaGFuZGxlciBoYXMgdGhlIGBjb29raWVgIG1pZGRsZXdhcmUuIFZhbGlkIHZhbHVlcyBhcmUgYGZhbHNlYCBhbmQKICAgICAqIGFuIGluc3RhbmNlIG9mIHtAc2VlIENvb2tpZVxDb29raWVKYXJJbnRlcmZhY2V9LgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQ09PS0lFUyA9ICdjb29raWVzJzsKCiAgICAvKioKICAgICAqIGNvbm5lY3RfdGltZW91dDogKGZsb2F0LCBkZWZhdWx0PTApIEZsb2F0IGRlc2NyaWJpbmcgdGhlIG51bWJlciBvZgogICAgICogc2Vjb25kcyB0byB3YWl0IHdoaWxlIHRyeWluZyB0byBjb25uZWN0IHRvIGEgc2VydmVyLiBVc2UgMCB0byB3YWl0CiAgICAgKiAzMDAgc2Vjb25kcyAodGhlIGRlZmF1bHQgYmVoYXZpb3IpLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQ09OTkVDVF9USU1FT1VUID0gJ2Nvbm5lY3RfdGltZW91dCc7CgogICAgLyoqCiAgICAgKiBjcnlwdG9fbWV0aG9kOiAoaW50KSBBIHZhbHVlIGRlc2NyaWJpbmcgdGhlIG1pbmltdW0gVExTIHByb3RvY29sCiAgICAgKiB2ZXJzaW9uIHRvIHVzZS4KICAgICAqCiAgICAgKiBUaGlzIHNldHRpbmcgbXVzdCBiZSBzZXQgdG8gb25lIG9mIHRoZQogICAgICogYGBTVFJFQU1fQ1JZUFRPX01FVEhPRF9UTFMqX0NMSUVOVGBgIGNvbnN0YW50cy4gUEhQIDcuNCBvciBoaWdoZXIgaXMKICAgICAqIHJlcXVpcmVkIGluIG9yZGVyIHRvIHVzZSBUTFMgMS4zLCBhbmQgY1VSTCA3LjM0LjAgb3IgaGlnaGVyIGlzIHJlcXVpcmVkCiAgICAgKiBpbiBvcmRlciB0byBzcGVjaWZ5IGEgY3J5cHRvIG1ldGhvZCwgd2l0aCBjVVJMIDcuNTIuMCBvciBoaWdoZXIgYmVpbmcKICAgICAqIHJlcXVpcmVkIHRvIHVzZSBUTFMgMS4zLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgQ1JZUFRPX01FVEhPRCA9ICdjcnlwdG9fbWV0aG9kJzsKCiAgICAvKioKICAgICAqIGRlYnVnOiAoYm9vbHxyZXNvdXJjZSkgU2V0IHRvIHRydWUgb3Igc2V0IHRvIGEgUEhQIHN0cmVhbSByZXR1cm5lZCBieQogICAgICogZm9wZW4oKSAgZW5hYmxlIGRlYnVnIG91dHB1dCB3aXRoIHRoZSBIVFRQIGhhbmRsZXIgdXNlZCB0byBzZW5kIGEKICAgICAqIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBERUJVRyA9ICdkZWJ1Zyc7CgogICAgLyoqCiAgICAgKiBkZWNvZGVfY29udGVudDogKGJvb2wsIGRlZmF1bHQ9dHJ1ZSkgU3BlY2lmeSB3aGV0aGVyIG9yIG5vdAogICAgICogQ29udGVudC1FbmNvZGluZyByZXNwb25zZXMgKGd6aXAsIGRlZmxhdGUsIGV0Yy4pIGFyZSBhdXRvbWF0aWNhbGx5CiAgICAgKiBkZWNvZGVkLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgREVDT0RFX0NPTlRFTlQgPSAnZGVjb2RlX2NvbnRlbnQnOwoKICAgIC8qKgogICAgICogZGVsYXk6IChpbnQpIFRoZSBhbW91bnQgb2YgdGltZSB0byBkZWxheSBiZWZvcmUgc2VuZGluZyBpbiBtaWxsaXNlY29uZHMuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBERUxBWSA9ICdkZWxheSc7CgogICAgLyoqCiAgICAgKiBleHBlY3Q6IChib29sfGludGVnZXIpIENvbnRyb2xzIHRoZSBiZWhhdmlvciBvZiB0aGUKICAgICAqICJFeHBlY3Q6IDEwMC1Db250aW51ZSIgaGVhZGVyLgogICAgICoKICAgICAqIFNldCB0byBgdHJ1ZWAgdG8gZW5hYmxlIHRoZSAiRXhwZWN0OiAxMDAtQ29udGludWUiIGhlYWRlciBmb3IgYWxsCiAgICAgKiByZXF1ZXN0cyB0aGF0IHNlbmRzIGEgYm9keS4gU2V0IHRvIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGUKICAgICAqICJFeHBlY3Q6IDEwMC1Db250aW51ZSIgaGVhZGVyIGZvciBhbGwgcmVxdWVzdHMuIFNldCB0byBhIG51bWJlciBzbyB0aGF0CiAgICAgKiB0aGUgc2l6ZSBvZiB0aGUgcGF5bG9hZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgbnVtYmVyIGluIG9yZGVyIHRvIHNlbmQKICAgICAqIHRoZSBFeHBlY3QgaGVhZGVyLiBTZXR0aW5nIHRvIGEgbnVtYmVyIHdpbGwgc2VuZCB0aGUgRXhwZWN0IGhlYWRlciBmb3IKICAgICAqIGFsbCByZXF1ZXN0cyBpbiB3aGljaCB0aGUgc2l6ZSBvZiB0aGUgcGF5bG9hZCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBvcgogICAgICogd2hlcmUgdGhlIGJvZHkgaXMgbm90IHJld2luZGFibGUuCiAgICAgKgogICAgICogQnkgZGVmYXVsdCwgR3V6emxlIHdpbGwgYWRkIHRoZSAiRXhwZWN0OiAxMDAtQ29udGludWUiIGhlYWRlciB3aGVuIHRoZQogICAgICogc2l6ZSBvZiB0aGUgYm9keSBvZiBhIHJlcXVlc3QgaXMgZ3JlYXRlciB0aGFuIDEgTUIgYW5kIGEgcmVxdWVzdCBpcwogICAgICogdXNpbmcgSFRUUC8xLjEuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBFWFBFQ1QgPSAnZXhwZWN0JzsKCiAgICAvKioKICAgICAqIGZvcm1fcGFyYW1zOiAoYXJyYXkpIEFzc29jaWF0aXZlIGFycmF5IG9mIGZvcm0gZmllbGQgbmFtZXMgdG8gdmFsdWVzCiAgICAgKiB3aGVyZSBlYWNoIHZhbHVlIGlzIGEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MuIFNldHMgdGhlIENvbnRlbnQtVHlwZQogICAgICogaGVhZGVyIHRvIGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCB3aGVuIG5vIENvbnRlbnQtVHlwZSBoZWFkZXIKICAgICAqIGlzIGFscmVhZHkgcHJlc2VudC4KICAgICAqLwogICAgcHVibGljIGNvbnN0IEZPUk1fUEFSQU1TID0gJ2Zvcm1fcGFyYW1zJzsKCiAgICAvKioKICAgICAqIGhlYWRlcnM6IChhcnJheSkgQXNzb2NpYXRpdmUgYXJyYXkgb2YgSFRUUCBoZWFkZXJzLiBFYWNoIHZhbHVlIE1VU1QgYmUKICAgICAqIGEgc3RyaW5nIG9yIGFycmF5IG9mIHN0cmluZ3MuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBIRUFERVJTID0gJ2hlYWRlcnMnOwoKICAgIC8qKgogICAgICogaHR0cF9lcnJvcnM6IChib29sLCBkZWZhdWx0PXRydWUpIFNldCB0byBmYWxzZSB0byBkaXNhYmxlIGV4Y2VwdGlvbnMKICAgICAqIHdoZW4gYSBub24tIHN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZSBpcyByZWNlaXZlZC4gQnkgZGVmYXVsdCwKICAgICAqIGV4Y2VwdGlvbnMgd2lsbCBiZSB0aHJvd24gZm9yIDR4eCBhbmQgNXh4IHJlc3BvbnNlcy4gVGhpcyBvcHRpb24gb25seQogICAgICogd29ya3MgaWYgeW91ciBoYW5kbGVyIGhhcyB0aGUgYGh0dHBFcnJvcnNgIG1pZGRsZXdhcmUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBIVFRQX0VSUk9SUyA9ICdodHRwX2Vycm9ycyc7CgogICAgLyoqCiAgICAgKiBpZG46IChib29sfGludCwgZGVmYXVsdD10cnVlKSBBIGNvbWJpbmF0aW9uIG9mIElETkFfKiBjb25zdGFudHMgZm9yCiAgICAgKiBpZG5fdG9fYXNjaWkoKSBQSFAncyBmdW5jdGlvbiAoc2VlICJvcHRpb25zIiBwYXJhbWV0ZXIpLiBTZXQgdG8gZmFsc2UgdG8KICAgICAqIGRpc2FibGUgSUROIHN1cHBvcnQgY29tcGxldGVseSwgb3IgdG8gdHJ1ZSB0byB1c2UgdGhlIGRlZmF1bHQKICAgICAqIGNvbmZpZ3VyYXRpb24gKElETkFfREVGQVVMVCBjb25zdGFudCkuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBJRE5fQ09OVkVSU0lPTiA9ICdpZG5fY29udmVyc2lvbic7CgogICAgLyoqCiAgICAgKiBqc29uOiAobWl4ZWQpIEFkZHMgSlNPTiBkYXRhIHRvIGEgcmVxdWVzdC4gVGhlIHByb3ZpZGVkIHZhbHVlIGlzIEpTT04KICAgICAqIGVuY29kZWQgYW5kIGEgQ29udGVudC1UeXBlIGhlYWRlciBvZiBhcHBsaWNhdGlvbi9qc29uIHdpbGwgYmUgYWRkZWQgdG8KICAgICAqIHRoZSByZXF1ZXN0IGlmIG5vIENvbnRlbnQtVHlwZSBoZWFkZXIgaXMgYWxyZWFkeSBwcmVzZW50LgogICAgICovCiAgICBwdWJsaWMgY29uc3QgSlNPTiA9ICdqc29uJzsKCiAgICAvKioKICAgICAqIG11bHRpcGFydDogKGFycmF5KSBBcnJheSBvZiBhc3NvY2lhdGl2ZSBhcnJheXMsIGVhY2ggY29udGFpbmluZyBhCiAgICAgKiByZXF1aXJlZCAibmFtZSIga2V5IG1hcHBpbmcgdG8gdGhlIGZvcm0gZmllbGQsIG5hbWUsIGEgcmVxdWlyZWQKICAgICAqICJjb250ZW50cyIga2V5IG1hcHBpbmcgdG8gYSBTdHJlYW1JbnRlcmZhY2V8cmVzb3VyY2V8c3RyaW5nLCBhbgogICAgICogb3B0aW9uYWwgImhlYWRlcnMiIGFzc29jaWF0aXZlIGFycmF5IG9mIGN1c3RvbSBoZWFkZXJzLCBhbmQgYW4KICAgICAqIG9wdGlvbmFsICJmaWxlbmFtZSIga2V5IG1hcHBpbmcgdG8gYSBzdHJpbmcgdG8gc2VuZCBhcyB0aGUgZmlsZW5hbWUgaW4KICAgICAqIHRoZSBwYXJ0LiBJZiBubyAiZmlsZW5hbWUiIGtleSBpcyBwcmVzZW50LCB0aGVuIG5vICJmaWxlbmFtZSIgYXR0cmlidXRlCiAgICAgKiB3aWxsIGJlIGFkZGVkIHRvIHRoZSBwYXJ0LgogICAgICovCiAgICBwdWJsaWMgY29uc3QgTVVMVElQQVJUID0gJ211bHRpcGFydCc7CgogICAgLyoqCiAgICAgKiBvbl9oZWFkZXJzOiAoY2FsbGFibGUpIEEgY2FsbGFibGUgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIEhUVFAgaGVhZGVycwogICAgICogb2YgdGhlIHJlc3BvbnNlIGhhdmUgYmVlbiByZWNlaXZlZCBidXQgdGhlIGJvZHkgaGFzIG5vdCB5ZXQgYmVndW4gdG8KICAgICAqIGRvd25sb2FkLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgT05fSEVBREVSUyA9ICdvbl9oZWFkZXJzJzsKCiAgICAvKioKICAgICAqIG9uX3N0YXRzOiAoY2FsbGFibGUpIGFsbG93cyB5b3UgdG8gZ2V0IGFjY2VzcyB0byB0cmFuc2ZlciBzdGF0aXN0aWNzIG9mCiAgICAgKiBhIHJlcXVlc3QgYW5kIGFjY2VzcyB0aGUgbG93ZXIgbGV2ZWwgdHJhbnNmZXIgZGV0YWlscyBvZiB0aGUgaGFuZGxlcgogICAgICogYXNzb2NpYXRlZCB3aXRoIHlvdXIgY2xpZW50LiBgYG9uX3N0YXRzYGAgaXMgYSBjYWxsYWJsZSB0aGF0IGlzIGludm9rZWQKICAgICAqIHdoZW4gYSBoYW5kbGVyIGhhcyBmaW5pc2hlZCBzZW5kaW5nIGEgcmVxdWVzdC4gVGhlIGNhbGxiYWNrIGlzIGludm9rZWQKICAgICAqIHdpdGggdHJhbnNmZXIgc3RhdGlzdGljcyBhYm91dCB0aGUgcmVxdWVzdCwgdGhlIHJlc3BvbnNlIHJlY2VpdmVkLCBvcgogICAgICogdGhlIGVycm9yIGVuY291bnRlcmVkLiBJbmNsdWRlZCBpbiB0aGUgZGF0YSBpcyB0aGUgdG90YWwgYW1vdW50IG9mIHRpbWUKICAgICAqIHRha2VuIHRvIHNlbmQgdGhlIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBPTl9TVEFUUyA9ICdvbl9zdGF0cyc7CgogICAgLyoqCiAgICAgKiBwcm9ncmVzczogKGNhbGxhYmxlKSBEZWZpbmVzIGEgZnVuY3Rpb24gdG8gaW52b2tlIHdoZW4gdHJhbnNmZXIKICAgICAqIHByb2dyZXNzIGlzIG1hZGUuIFRoZSBmdW5jdGlvbiBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgcG9zaXRpb25hbAogICAgICogYXJndW1lbnRzOiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlIGRvd25sb2FkZWQsIHRoZQogICAgICogbnVtYmVyIG9mIGJ5dGVzIGRvd25sb2FkZWQgc28gZmFyLCB0aGUgbnVtYmVyIG9mIGJ5dGVzIGV4cGVjdGVkIHRvIGJlCiAgICAgKiB1cGxvYWRlZCwgdGhlIG51bWJlciBvZiBieXRlcyB1cGxvYWRlZCBzbyBmYXIuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBQUk9HUkVTUyA9ICdwcm9ncmVzcyc7CgogICAgLyoqCiAgICAgKiBwcm94eTogKHN0cmluZ3xhcnJheSkgUGFzcyBhIHN0cmluZyB0byBzcGVjaWZ5IGFuIEhUVFAgcHJveHksIG9yIGFuCiAgICAgKiBhcnJheSB0byBzcGVjaWZ5IGRpZmZlcmVudCBwcm94aWVzIGZvciBkaWZmZXJlbnQgcHJvdG9jb2xzICh3aGVyZSB0aGUKICAgICAqIGtleSBpcyB0aGUgcHJvdG9jb2wgYW5kIHRoZSB2YWx1ZSBpcyBhIHByb3h5IHN0cmluZykuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBQUk9YWSA9ICdwcm94eSc7CgogICAgLyoqCiAgICAgKiBxdWVyeTogKGFycmF5fHN0cmluZykgQXNzb2NpYXRpdmUgYXJyYXkgb2YgcXVlcnkgc3RyaW5nIHZhbHVlcyB0byBhZGQKICAgICAqIHRvIHRoZSByZXF1ZXN0LiBUaGlzIG9wdGlvbiB1c2VzIFBIUCdzIGh0dHBfYnVpbGRfcXVlcnkoKSB0byBjcmVhdGUKICAgICAqIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24uIFBhc3MgYSBzdHJpbmcgdmFsdWUgaWYgeW91IG5lZWQgbW9yZQogICAgICogY29udHJvbCB0aGFuIHdoYXQgdGhpcyBtZXRob2QgcHJvdmlkZXMKICAgICAqLwogICAgcHVibGljIGNvbnN0IFFVRVJZID0gJ3F1ZXJ5JzsKCiAgICAvKioKICAgICAqIHNpbms6IChyZXNvdXJjZXxzdHJpbmd8U3RyZWFtSW50ZXJmYWNlKSBXaGVyZSB0aGUgZGF0YSBvZiB0aGUKICAgICAqIHJlc3BvbnNlIGlzIHdyaXR0ZW4gdG8uIERlZmF1bHRzIHRvIGEgUEhQIHRlbXAgc3RyZWFtLiBQcm92aWRpbmcgYQogICAgICogc3RyaW5nIHdpbGwgd3JpdGUgZGF0YSB0byBhIGZpbGUgYnkgdGhlIGdpdmVuIG5hbWUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBTSU5LID0gJ3NpbmsnOwoKICAgIC8qKgogICAgICogc3luY2hyb25vdXM6IChib29sKSBTZXQgdG8gdHJ1ZSB0byBpbmZvcm0gSFRUUCBoYW5kbGVycyB0aGF0IHlvdSBpbnRlbmQKICAgICAqIG9uIHdhaXRpbmcgb24gdGhlIHJlc3BvbnNlLiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIG9wdGltaXphdGlvbnMuIE5vdGUKICAgICAqIHRoYXQgYSBwcm9taXNlIGlzIHN0aWxsIHJldHVybmVkIGlmIHlvdSBhcmUgdXNpbmcgb25lIG9mIHRoZSBhc3luYwogICAgICogY2xpZW50IG1ldGhvZHMuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBTWU5DSFJPTk9VUyA9ICdzeW5jaHJvbm91cyc7CgogICAgLyoqCiAgICAgKiBzc2xfa2V5OiAoYXJyYXl8c3RyaW5nKSBTcGVjaWZ5IHRoZSBwYXRoIHRvIGEgZmlsZSBjb250YWluaW5nIGEgcHJpdmF0ZQogICAgICogU1NMIGtleSBpbiBQRU0gZm9ybWF0LiBJZiBhIHBhc3N3b3JkIGlzIHJlcXVpcmVkLCB0aGVuIHNldCB0byBhbiBhcnJheQogICAgICogY29udGFpbmluZyB0aGUgcGF0aCB0byB0aGUgU1NMIGtleSBpbiB0aGUgZmlyc3QgYXJyYXkgZWxlbWVudCBmb2xsb3dlZAogICAgICogYnkgdGhlIHBhc3N3b3JkIHJlcXVpcmVkIGZvciB0aGUgY2VydGlmaWNhdGUgaW4gdGhlIHNlY29uZCBlbGVtZW50LgogICAgICovCiAgICBwdWJsaWMgY29uc3QgU1NMX0tFWSA9ICdzc2xfa2V5JzsKCiAgICAvKioKICAgICAqIHN0cmVhbTogU2V0IHRvIHRydWUgdG8gYXR0ZW1wdCB0byBzdHJlYW0gYSByZXNwb25zZSByYXRoZXIgdGhhbgogICAgICogZG93bmxvYWQgaXQgYWxsIHVwLWZyb250LgogICAgICovCiAgICBwdWJsaWMgY29uc3QgU1RSRUFNID0gJ3N0cmVhbSc7CgogICAgLyoqCiAgICAgKiB2ZXJpZnk6IChib29sfHN0cmluZywgZGVmYXVsdD10cnVlKSBEZXNjcmliZXMgdGhlIFNTTCBjZXJ0aWZpY2F0ZQogICAgICogdmVyaWZpY2F0aW9uIGJlaGF2aW9yIG9mIGEgcmVxdWVzdC4gU2V0IHRvIHRydWUgdG8gZW5hYmxlIFNTTAogICAgICogY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIHVzaW5nIHRoZSBzeXN0ZW0gQ0EgYnVuZGxlIHdoZW4gYXZhaWxhYmxlCiAgICAgKiAodGhlIGRlZmF1bHQpLiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gKHRoaXMKICAgICAqIGlzIGluc2VjdXJlISkuIFNldCB0byBhIHN0cmluZyB0byBwcm92aWRlIHRoZSBwYXRoIHRvIGEgQ0EgYnVuZGxlIG9uCiAgICAgKiBkaXNrIHRvIGVuYWJsZSB2ZXJpZmljYXRpb24gdXNpbmcgYSBjdXN0b20gY2VydGlmaWNhdGUuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBWRVJJRlkgPSAndmVyaWZ5JzsKCiAgICAvKioKICAgICAqIHRpbWVvdXQ6IChmbG9hdCwgZGVmYXVsdD0wKSBGbG9hdCBkZXNjcmliaW5nIHRoZSB0aW1lb3V0IG9mIHRoZQogICAgICogcmVxdWVzdCBpbiBzZWNvbmRzLiBVc2UgMCB0byB3YWl0IGluZGVmaW5pdGVseSAodGhlIGRlZmF1bHQgYmVoYXZpb3IpLgogICAgICovCiAgICBwdWJsaWMgY29uc3QgVElNRU9VVCA9ICd0aW1lb3V0JzsKCiAgICAvKioKICAgICAqIHJlYWRfdGltZW91dDogKGZsb2F0LCBkZWZhdWx0PWRlZmF1bHRfc29ja2V0X3RpbWVvdXQgaW5pIHNldHRpbmcpIEZsb2F0IGRlc2NyaWJpbmcKICAgICAqIHRoZSBib2R5IHJlYWQgdGltZW91dCwgZm9yIHN0cmVhbSByZXF1ZXN0cy4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFJFQURfVElNRU9VVCA9ICdyZWFkX3RpbWVvdXQnOwoKICAgIC8qKgogICAgICogdmVyc2lvbjogKGZsb2F0KSBTcGVjaWZpZXMgdGhlIEhUVFAgcHJvdG9jb2wgdmVyc2lvbiB0byBhdHRlbXB0IHRvIHVzZS4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFZFUlNJT04gPSAndmVyc2lvbic7CgogICAgLyoqCiAgICAgKiBmb3JjZV9pcF9yZXNvbHZlOiAoYm9vbCkgRm9yY2UgY2xpZW50IHRvIHVzZSBvbmx5IGlwdjQgb3IgaXB2NiBwcm90b2NvbAogICAgICovCiAgICBwdWJsaWMgY29uc3QgRk9SQ0VfSVBfUkVTT0xWRSA9ICdmb3JjZV9pcF9yZXNvbHZlJzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/RetryMiddleware.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZSBhcyBQOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIE1pZGRsZXdhcmUgdGhhdCByZXRyaWVzIHJlcXVlc3RzIGJhc2VkIG9uIHRoZSBib29sZWFuIHJlc3VsdCBvZgogKiBpbnZva2luZyB0aGUgcHJvdmlkZWQgImRlY2lkZXIiIGZ1bmN0aW9uLgogKgogKiBAZmluYWwKICovCmNsYXNzIFJldHJ5TWlkZGxld2FyZQp7CiAgICAvKioKICAgICAqIEB2YXIgY2FsbGFibGUoUmVxdWVzdEludGVyZmFjZSwgYXJyYXkpOiBQcm9taXNlSW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJG5leHRIYW5kbGVyOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZQogICAgICovCiAgICBwcml2YXRlICRkZWNpZGVyOwoKICAgIC8qKgogICAgICogQHZhciBjYWxsYWJsZShpbnQpCiAgICAgKi8KICAgIHByaXZhdGUgJGRlbGF5OwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZGVjaWRlciAgICAgRnVuY3Rpb24gdGhhdCBhY2NlcHRzIHRoZSBudW1iZXIgb2YgcmV0cmllcywKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgcmVxdWVzdCwgW3Jlc3BvbnNlXSwgYW5kIFtleGNlcHRpb25dIGFuZAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJucyB0cnVlIGlmIHRoZSByZXF1ZXN0IGlzIHRvIGJlCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRyaWVkLgogICAgICogQHBhcmFtIGNhbGxhYmxlKFJlcXVlc3RJbnRlcmZhY2UsIGFycmF5KTogUHJvbWlzZUludGVyZmFjZSAkbmV4dEhhbmRsZXIgTmV4dCBoYW5kbGVyIHRvIGludm9rZS4KICAgICAqIEBwYXJhbSAoY2FsbGFibGUoaW50KTogaW50KXxudWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgJGRlbGF5ICAgICAgIEZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgbnVtYmVyIG9mIHJldHJpZXMKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByZXR1cm5zIHRoZSBudW1iZXIgb2YKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpc2Vjb25kcyB0byBkZWxheS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGNhbGxhYmxlICRkZWNpZGVyLCBjYWxsYWJsZSAkbmV4dEhhbmRsZXIsID9jYWxsYWJsZSAkZGVsYXkgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5kZWNpZGVyID0gJGRlY2lkZXI7CiAgICAgICAgJHRoaXMtPm5leHRIYW5kbGVyID0gJG5leHRIYW5kbGVyOwogICAgICAgICR0aGlzLT5kZWxheSA9ICRkZWxheSA/OiBfX0NMQVNTX18uJzo6ZXhwb25lbnRpYWxEZWxheSc7CiAgICB9CgogICAgLyoqCiAgICAgKiBEZWZhdWx0IGV4cG9uZW50aWFsIGJhY2tvZmYgZGVsYXkgZnVuY3Rpb24uCiAgICAgKgogICAgICogQHJldHVybiBpbnQgbWlsbGlzZWNvbmRzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4cG9uZW50aWFsRGVsYXkoaW50ICRyZXRyaWVzKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIChpbnQpIDIgKiogKCRyZXRyaWVzIC0gMSkgKiAxMDAwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2ludm9rZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkb3B0aW9ucyk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRvcHRpb25zWydyZXRyaWVzJ10pKSB7CiAgICAgICAgICAgICRvcHRpb25zWydyZXRyaWVzJ10gPSAwOwogICAgICAgIH0KCiAgICAgICAgJGZuID0gJHRoaXMtPm5leHRIYW5kbGVyOwoKICAgICAgICByZXR1cm4gJGZuKCRyZXF1ZXN0LCAkb3B0aW9ucykKICAgICAgICAgICAgLT50aGVuKAogICAgICAgICAgICAgICAgJHRoaXMtPm9uRnVsZmlsbGVkKCRyZXF1ZXN0LCAkb3B0aW9ucyksCiAgICAgICAgICAgICAgICAkdGhpcy0+b25SZWplY3RlZCgkcmVxdWVzdCwgJG9wdGlvbnMpCiAgICAgICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeGVjdXRlIGZ1bGZpbGxlZCBjbG9zdXJlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gb25GdWxmaWxsZWQoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMpOiBjYWxsYWJsZQogICAgewogICAgICAgIHJldHVybiBmdW5jdGlvbiAoJHZhbHVlKSB1c2UgKCRyZXF1ZXN0LCAkb3B0aW9ucykgewogICAgICAgICAgICBpZiAoISgkdGhpcy0+ZGVjaWRlcikoCiAgICAgICAgICAgICAgICAkb3B0aW9uc1sncmV0cmllcyddLAogICAgICAgICAgICAgICAgJHJlcXVlc3QsCiAgICAgICAgICAgICAgICAkdmFsdWUsCiAgICAgICAgICAgICAgICBudWxsCiAgICAgICAgICAgICkpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZG9SZXRyeSgkcmVxdWVzdCwgJG9wdGlvbnMsICR2YWx1ZSk7CiAgICAgICAgfTsKICAgIH0KCiAgICAvKioKICAgICAqIEV4ZWN1dGUgcmVqZWN0ZWQgY2xvc3VyZQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG9uUmVqZWN0ZWQoUmVxdWVzdEludGVyZmFjZSAkcmVxLCBhcnJheSAkb3B0aW9ucyk6IGNhbGxhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgkcmVhc29uKSB1c2UgKCRyZXEsICRvcHRpb25zKSB7CiAgICAgICAgICAgIGlmICghKCR0aGlzLT5kZWNpZGVyKSgKICAgICAgICAgICAgICAgICRvcHRpb25zWydyZXRyaWVzJ10sCiAgICAgICAgICAgICAgICAkcmVxLAogICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICRyZWFzb24KICAgICAgICAgICAgKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFBcQ3JlYXRlOjpyZWplY3Rpb25Gb3IoJHJlYXNvbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+ZG9SZXRyeSgkcmVxLCAkb3B0aW9ucyk7CiAgICAgICAgfTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGRvUmV0cnkoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgYXJyYXkgJG9wdGlvbnMsID9SZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgPSBudWxsKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgICRvcHRpb25zWydkZWxheSddID0gKCR0aGlzLT5kZWxheSkoKyskb3B0aW9uc1sncmV0cmllcyddLCAkcmVzcG9uc2UsICRyZXF1ZXN0KTsKCiAgICAgICAgcmV0dXJuICR0aGlzKCRyZXF1ZXN0LCAkb3B0aW9ucyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/TransferStats.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBSZXByZXNlbnRzIGRhdGEgYXQgdGhlIHBvaW50IGFmdGVyIGl0IHdhcyB0cmFuc2ZlcnJlZCBlaXRoZXIgc3VjY2Vzc2Z1bGx5CiAqIG9yIGFmdGVyIGEgbmV0d29yayBlcnJvci4KICovCmZpbmFsIGNsYXNzIFRyYW5zZmVyU3RhdHMKewogICAgLyoqCiAgICAgKiBAdmFyIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVxdWVzdDsKCiAgICAvKioKICAgICAqIEB2YXIgUmVzcG9uc2VJbnRlcmZhY2V8bnVsbAogICAgICovCiAgICBwcml2YXRlICRyZXNwb25zZTsKCiAgICAvKioKICAgICAqIEB2YXIgZmxvYXR8bnVsbAogICAgICovCiAgICBwcml2YXRlICR0cmFuc2ZlclRpbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhhbmRsZXJTdGF0czsKCiAgICAvKioKICAgICAqIEB2YXIgbWl4ZWR8bnVsbAogICAgICovCiAgICBwcml2YXRlICRoYW5kbGVyRXJyb3JEYXRhOwoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICAgICAgJHJlcXVlc3QgICAgICAgICAgUmVxdWVzdCB0aGF0IHdhcyBzZW50LgogICAgICogQHBhcmFtIFJlc3BvbnNlSW50ZXJmYWNlfG51bGwgJHJlc3BvbnNlICAgICAgICAgUmVzcG9uc2UgcmVjZWl2ZWQgKGlmIGFueSkKICAgICAqIEBwYXJhbSBmbG9hdHxudWxsICAgICAgICAgICAgICR0cmFuc2ZlclRpbWUgICAgIFRvdGFsIGhhbmRsZXIgdHJhbnNmZXIgdGltZS4KICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgICAgICAgICAgICRoYW5kbGVyRXJyb3JEYXRhIEhhbmRsZXIgZXJyb3IgZGF0YS4KICAgICAqIEBwYXJhbSBhcnJheSAgICAgICAgICAgICAgICAgICRoYW5kbGVyU3RhdHMgICAgIEhhbmRsZXIgc3BlY2lmaWMgc3RhdHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LAogICAgICAgID9SZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgPSBudWxsLAogICAgICAgID9mbG9hdCAkdHJhbnNmZXJUaW1lID0gbnVsbCwKICAgICAgICAkaGFuZGxlckVycm9yRGF0YSA9IG51bGwsCiAgICAgICAgYXJyYXkgJGhhbmRsZXJTdGF0cyA9IFtdCiAgICApIHsKICAgICAgICAkdGhpcy0+cmVxdWVzdCA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5yZXNwb25zZSA9ICRyZXNwb25zZTsKICAgICAgICAkdGhpcy0+dHJhbnNmZXJUaW1lID0gJHRyYW5zZmVyVGltZTsKICAgICAgICAkdGhpcy0+aGFuZGxlckVycm9yRGF0YSA9ICRoYW5kbGVyRXJyb3JEYXRhOwogICAgICAgICR0aGlzLT5oYW5kbGVyU3RhdHMgPSAkaGFuZGxlclN0YXRzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0KCk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3Q7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSByZXNwb25zZSB0aGF0IHdhcyByZWNlaXZlZCAoaWYgYW55KS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3BvbnNlKCk6ID9SZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgYSByZXNwb25zZSB3YXMgcmVjZWl2ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNSZXNwb25zZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXNwb25zZSAhPT0gbnVsbDsKICAgIH0KCiAgICAvKioKICAgICAqIEdldHMgaGFuZGxlciBzcGVjaWZpYyBlcnJvciBkYXRhLgogICAgICoKICAgICAqIFRoaXMgbWlnaHQgYmUgYW4gZXhjZXB0aW9uLCBhIGludGVnZXIgcmVwcmVzZW50aW5nIGFuIGVycm9yIGNvZGUsIG9yCiAgICAgKiBhbnl0aGluZyBlbHNlLiBSZWx5aW5nIG9uIHRoaXMgdmFsdWUgYXNzdW1lcyB0aGF0IHlvdSBrbm93IHdoYXQgaGFuZGxlcgogICAgICogeW91IGFyZSB1c2luZy4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyRXJyb3JEYXRhKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmhhbmRsZXJFcnJvckRhdGE7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGVmZmVjdGl2ZSBVUkkgdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdG8uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFZmZlY3RpdmVVcmkoKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0LT5nZXRVcmkoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgZXN0aW1hdGVkIHRpbWUgdGhlIHJlcXVlc3Qgd2FzIGJlaW5nIHRyYW5zZmVycmVkIGJ5IHRoZSBoYW5kbGVyLgogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXR8bnVsbCBUaW1lIGluIHNlY29uZHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRUcmFuc2ZlclRpbWUoKTogP2Zsb2F0CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50cmFuc2ZlclRpbWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXRzIGFuIGFycmF5IG9mIGFsbCBvZiB0aGUgaGFuZGxlciBzcGVjaWZpYyB0cmFuc2ZlciBkYXRhLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGFuZGxlclN0YXRzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyU3RhdHM7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBzcGVjaWZpYyBoYW5kbGVyIHN0YXRpc3RpYyBmcm9tIHRoZSBoYW5kbGVyIGJ5IG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc3RhdCBIYW5kbGVyIHNwZWNpZmljIHRyYW5zZmVyIHN0YXQgdG8gcmV0cmlldmUuCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZHxudWxsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIYW5kbGVyU3RhdChzdHJpbmcgJHN0YXQpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oYW5kbGVyU3RhdHNbJHN0YXRdID8/IG51bGw7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBHdXp6bGVIdHRwOwoKdXNlIEd1enpsZUh0dHBcRXhjZXB0aW9uXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcSGFuZGxlclxDdXJsSGFuZGxlcjsKdXNlIEd1enpsZUh0dHBcSGFuZGxlclxDdXJsTXVsdGlIYW5kbGVyOwp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXFByb3h5Owp1c2UgR3V6emxlSHR0cFxIYW5kbGVyXFN0cmVhbUhhbmRsZXI7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCmZpbmFsIGNsYXNzIFV0aWxzCnsKICAgIC8qKgogICAgICogRGVidWcgZnVuY3Rpb24gdXNlZCB0byBkZXNjcmliZSB0aGUgcHJvdmlkZWQgdmFsdWUgdHlwZSBhbmQgY2xhc3MuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRpbnB1dAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBvZiB0aGUgdmFyaWFibGUgYW5kCiAgICAgKiAgICAgICAgICAgICAgICBpZiBhIGNsYXNzIGlzIHByb3ZpZGVkLCB0aGUgY2xhc3MgbmFtZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZXNjcmliZVR5cGUoJGlucHV0KTogc3RyaW5nCiAgICB7CiAgICAgICAgc3dpdGNoIChcZ2V0dHlwZSgkaW5wdXQpKSB7CiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6CiAgICAgICAgICAgICAgICByZXR1cm4gJ29iamVjdCgnLlxnZXRfY2xhc3MoJGlucHV0KS4nKSc7CiAgICAgICAgICAgIGNhc2UgJ2FycmF5JzoKICAgICAgICAgICAgICAgIHJldHVybiAnYXJyYXkoJy5cY291bnQoJGlucHV0KS4nKSc7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBcb2Jfc3RhcnQoKTsKICAgICAgICAgICAgICAgIFx2YXJfZHVtcCgkaW5wdXQpOwogICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIGZsb2F0IHZzIGRvdWJsZQogICAgICAgICAgICAgICAgLyoqIEB2YXIgc3RyaW5nICR2YXJEdW1wQ29udGVudCAqLwogICAgICAgICAgICAgICAgJHZhckR1bXBDb250ZW50ID0gXG9iX2dldF9jbGVhbigpOwoKICAgICAgICAgICAgICAgIHJldHVybiBcc3RyX3JlcGxhY2UoJ2RvdWJsZSgnLCAnZmxvYXQoJywgXHJ0cmltKCR2YXJEdW1wQ29udGVudCkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFBhcnNlcyBhbiBhcnJheSBvZiBoZWFkZXIgbGluZXMgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBoZWFkZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBpdGVyYWJsZSAkbGluZXMgSGVhZGVyIGxpbmVzIGFycmF5IG9mIHN0cmluZ3MgaW4gdGhlIGZvbGxvd2luZwogICAgICogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXQ6ICJOYW1lOiBWYWx1ZSIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoZWFkZXJzRnJvbUxpbmVzKGl0ZXJhYmxlICRsaW5lcyk6IGFycmF5CiAgICB7CiAgICAgICAgJGhlYWRlcnMgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgICAgICRwYXJ0cyA9IFxleHBsb2RlKCc6JywgJGxpbmUsIDIpOwogICAgICAgICAgICAkaGVhZGVyc1tcdHJpbSgkcGFydHNbMF0pXVtdID0gaXNzZXQoJHBhcnRzWzFdKSA/IFx0cmltKCRwYXJ0c1sxXSkgOiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIGRlYnVnIHN0cmVhbSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdmFyaWFibGUuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBPcHRpb25hbCB2YWx1ZQogICAgICoKICAgICAqIEByZXR1cm4gcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWJ1Z1Jlc291cmNlKCR2YWx1ZSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKFxpc19yZXNvdXJjZSgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdmFsdWU7CiAgICAgICAgfQogICAgICAgIGlmIChcZGVmaW5lZCgnU1RET1VUJykpIHsKICAgICAgICAgICAgcmV0dXJuIFxTVERPVVQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gUHNyN1xVdGlsczo6dHJ5Rm9wZW4oJ3BocDovL291dHB1dCcsICd3Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDaG9vc2VzIGFuZCBjcmVhdGVzIGEgZGVmYXVsdCBoYW5kbGVyIHRvIHVzZSBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQuCiAgICAgKgogICAgICogVGhlIHJldHVybmVkIGhhbmRsZXIgaXMgbm90IHdyYXBwZWQgYnkgYW55IGRlZmF1bHQgbWlkZGxld2FyZXMuCiAgICAgKgogICAgICogQHJldHVybiBjYWxsYWJsZShcUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlLCBhcnJheSk6IFByb21pc2VcUHJvbWlzZUludGVyZmFjZSBSZXR1cm5zIHRoZSBiZXN0IGhhbmRsZXIgZm9yIHRoZSBnaXZlbiBzeXN0ZW0uCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBubyB2aWFibGUgSGFuZGxlciBpcyBhdmFpbGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hvb3NlSGFuZGxlcigpOiBjYWxsYWJsZQogICAgewogICAgICAgICRoYW5kbGVyID0gbnVsbDsKCiAgICAgICAgaWYgKFxkZWZpbmVkKCdDVVJMT1BUX0NVU1RPTVJFUVVFU1QnKSAmJiBcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX3ZlcnNpb24nKSAmJiB2ZXJzaW9uX2NvbXBhcmUoY3VybF92ZXJzaW9uKClbJ3ZlcnNpb24nXSwgJzcuMjEuMicpID49IDApIHsKICAgICAgICAgICAgaWYgKFxmdW5jdGlvbl9leGlzdHMoJ2N1cmxfbXVsdGlfZXhlYycpICYmIFxmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKSB7CiAgICAgICAgICAgICAgICAkaGFuZGxlciA9IFByb3h5Ojp3cmFwU3luYyhuZXcgQ3VybE11bHRpSGFuZGxlcigpLCBuZXcgQ3VybEhhbmRsZXIoKSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChcZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2V4ZWMnKSkgewogICAgICAgICAgICAgICAgJGhhbmRsZXIgPSBuZXcgQ3VybEhhbmRsZXIoKTsKICAgICAgICAgICAgfSBlbHNlaWYgKFxmdW5jdGlvbl9leGlzdHMoJ2N1cmxfbXVsdGlfZXhlYycpKSB7CiAgICAgICAgICAgICAgICAkaGFuZGxlciA9IG5ldyBDdXJsTXVsdGlIYW5kbGVyKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChcaW5pX2dldCgnYWxsb3dfdXJsX2ZvcGVuJykpIHsKICAgICAgICAgICAgJGhhbmRsZXIgPSAkaGFuZGxlcgogICAgICAgICAgICAgICAgPyBQcm94eTo6d3JhcFN0cmVhbWluZygkaGFuZGxlciwgbmV3IFN0cmVhbUhhbmRsZXIoKSkKICAgICAgICAgICAgICAgIDogbmV3IFN0cmVhbUhhbmRsZXIoKTsKICAgICAgICB9IGVsc2VpZiAoISRoYW5kbGVyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignR3V6emxlSHR0cCByZXF1aXJlcyBjVVJMLCB0aGUgYWxsb3dfdXJsX2ZvcGVuIGluaSBzZXR0aW5nLCBvciBhIGN1c3RvbSBIVFRQIGhhbmRsZXIuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhhbmRsZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgdGhlIGRlZmF1bHQgVXNlci1BZ2VudCBzdHJpbmcgdG8gdXNlIHdpdGggR3V6emxlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlZmF1bHRVc2VyQWdlbnQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNwcmludGYoJ0d1enpsZUh0dHAvJWQnLCBDbGllbnRJbnRlcmZhY2U6Ok1BSk9SX1ZFUlNJT04pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgZGVmYXVsdCBjYWNlcnQgYnVuZGxlIGZvciB0aGUgY3VycmVudCBzeXN0ZW0uCiAgICAgKgogICAgICogRmlyc3QsIHRoZSBvcGVuc3NsLmNhZmlsZSBhbmQgY3VybC5jYWluZm8gcGhwLmluaSBzZXR0aW5ncyBhcmUgY2hlY2tlZC4KICAgICAqIElmIHRob3NlIHNldHRpbmdzIGFyZSBub3QgY29uZmlndXJlZCwgdGhlbiB0aGUgY29tbW9uIGxvY2F0aW9ucyBmb3IKICAgICAqIGJ1bmRsZXMgZm91bmQgb24gUmVkIEhhdCwgQ2VudE9TLCBGZWRvcmEsIFVidW50dSwgRGViaWFuLCBGcmVlQlNELCBPUyBYCiAgICAgKiBhbmQgV2luZG93cyBhcmUgY2hlY2tlZC4gSWYgYW55IG9mIHRoZXNlIGZpbGUgbG9jYXRpb25zIGFyZSBmb3VuZCBvbgogICAgICogZGlzaywgdGhleSB3aWxsIGJlIHV0aWxpemVkLgogICAgICoKICAgICAqIE5vdGU6IHRoZSByZXN1bHQgb2YgdGhpcyBmdW5jdGlvbiBpcyBjYWNoZWQgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBubyBidW5kbGUgY2FuIGJlIGZvdW5kLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFV0aWxzOjpkZWZhdWx0Q2FCdW5kbGUgd2lsbCBiZSByZW1vdmVkIGluIGd1enpsZWh0dHAvZ3V6emxlOjguMC4gVGhpcyBtZXRob2QgaXMgbm90IG5lZWRlZCBpbiBQSFAgNS42Ky4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWZhdWx0Q2FCdW5kbGUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgc3RhdGljICRjYWNoZWQgPSBudWxsOwogICAgICAgIHN0YXRpYyAkY2FmaWxlcyA9IFsKICAgICAgICAgICAgLy8gUmVkIEhhdCwgQ2VudE9TLCBGZWRvcmEgKHByb3ZpZGVkIGJ5IHRoZSBjYS1jZXJ0aWZpY2F0ZXMgcGFja2FnZSkKICAgICAgICAgICAgJy9ldGMvcGtpL3Rscy9jZXJ0cy9jYS1idW5kbGUuY3J0JywKICAgICAgICAgICAgLy8gVWJ1bnR1LCBEZWJpYW4gKHByb3ZpZGVkIGJ5IHRoZSBjYS1jZXJ0aWZpY2F0ZXMgcGFja2FnZSkKICAgICAgICAgICAgJy9ldGMvc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQnLAogICAgICAgICAgICAvLyBGcmVlQlNEIChwcm92aWRlZCBieSB0aGUgY2Ffcm9vdF9uc3MgcGFja2FnZSkKICAgICAgICAgICAgJy91c3IvbG9jYWwvc2hhcmUvY2VydHMvY2Etcm9vdC1uc3MuY3J0JywKICAgICAgICAgICAgLy8gU0xFUyAxMiAocHJvdmlkZWQgYnkgdGhlIGNhLWNlcnRpZmljYXRlcyBwYWNrYWdlKQogICAgICAgICAgICAnL3Zhci9saWIvY2EtY2VydGlmaWNhdGVzL2NhLWJ1bmRsZS5wZW0nLAogICAgICAgICAgICAvLyBPUyBYIHByb3ZpZGVkIGJ5IGhvbWVicmV3ICh1c2luZyB0aGUgZGVmYXVsdCBwYXRoKQogICAgICAgICAgICAnL3Vzci9sb2NhbC9ldGMvb3BlbnNzbC9jZXJ0LnBlbScsCiAgICAgICAgICAgIC8vIEdvb2dsZSBhcHAgZW5naW5lCiAgICAgICAgICAgICcvZXRjL2NhLWNlcnRpZmljYXRlcy5jcnQnLAogICAgICAgICAgICAvLyBXaW5kb3dzPwogICAgICAgICAgICAnQzpcXHdpbmRvd3NcXHN5c3RlbTMyXFxjdXJsLWNhLWJ1bmRsZS5jcnQnLAogICAgICAgICAgICAnQzpcXHdpbmRvd3NcXGN1cmwtY2EtYnVuZGxlLmNydCcsCiAgICAgICAgXTsKCiAgICAgICAgaWYgKCRjYWNoZWQpIHsKICAgICAgICAgICAgcmV0dXJuICRjYWNoZWQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNhID0gXGluaV9nZXQoJ29wZW5zc2wuY2FmaWxlJykpIHsKICAgICAgICAgICAgcmV0dXJuICRjYWNoZWQgPSAkY2E7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNhID0gXGluaV9nZXQoJ2N1cmwuY2FpbmZvJykpIHsKICAgICAgICAgICAgcmV0dXJuICRjYWNoZWQgPSAkY2E7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkY2FmaWxlcyBhcyAkZmlsZW5hbWUpIHsKICAgICAgICAgICAgaWYgKFxmaWxlX2V4aXN0cygkZmlsZW5hbWUpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGNhY2hlZCA9ICRmaWxlbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICAgICA8PDwgRU9UCk5vIHN5c3RlbSBDQSBidW5kbGUgY291bGQgYmUgZm91bmQgaW4gYW55IG9mIHRoZSB0aGUgY29tbW9uIHN5c3RlbSBsb2NhdGlvbnMuClBIUCB2ZXJzaW9ucyBlYXJsaWVyIHRoYW4gNS42IGFyZSBub3QgcHJvcGVybHkgY29uZmlndXJlZCB0byB1c2UgdGhlIHN5c3RlbSdzCkNBIGJ1bmRsZSBieSBkZWZhdWx0LiBJbiBvcmRlciB0byB2ZXJpZnkgcGVlciBjZXJ0aWZpY2F0ZXMsIHlvdSB3aWxsIG5lZWQgdG8Kc3VwcGx5IHRoZSBwYXRoIG9uIGRpc2sgdG8gYSBjZXJ0aWZpY2F0ZSBidW5kbGUgdG8gdGhlICd2ZXJpZnknIHJlcXVlc3QKb3B0aW9uOiBodHRwczovL2RvY3MuZ3V6emxlcGhwLm9yZy9lbi9sYXRlc3QvcmVxdWVzdC1vcHRpb25zLmh0bWwjdmVyaWZ5LiBJZgp5b3UgZG8gbm90IG5lZWQgYSBzcGVjaWZpYyBjZXJ0aWZpY2F0ZSBidW5kbGUsIHRoZW4gTW96aWxsYSBwcm92aWRlcyBhIGNvbW1vbmx5CnVzZWQgQ0EgYnVuZGxlIHdoaWNoIGNhbiBiZSBkb3dubG9hZGVkIGhlcmUgKHByb3ZpZGVkIGJ5IHRoZSBtYWludGFpbmVyIG9mCmNVUkwpOiBodHRwczovL2N1cmwuaGF4eC5zZS9jYS9jYWNlcnQucGVtLiBPbmNlIHlvdSBoYXZlIGEgQ0EgYnVuZGxlIGF2YWlsYWJsZQpvbiBkaXNrLCB5b3UgY2FuIHNldCB0aGUgJ29wZW5zc2wuY2FmaWxlJyBQSFAgaW5pIHNldHRpbmcgdG8gcG9pbnQgdG8gdGhlIHBhdGgKdG8gdGhlIGZpbGUsIGFsbG93aW5nIHlvdSB0byBvbWl0IHRoZSAndmVyaWZ5JyByZXF1ZXN0IG9wdGlvbi4gU2VlCmh0dHBzOi8vY3VybC5oYXh4LnNlL2RvY3Mvc3NsY2VydHMuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KRU9UCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YgbG93ZXJjYXNlIGhlYWRlciBuYW1lcyB0byB0aGUgYWN0dWFsCiAgICAgKiBoZWFkZXIgY2FzaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlcktleXMoYXJyYXkgJGhlYWRlcnMpOiBhcnJheQogICAgewogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICBmb3JlYWNoIChcYXJyYXlfa2V5cygkaGVhZGVycykgYXMgJGtleSkgewogICAgICAgICAgICAkcmVzdWx0W1xzdHJ0b2xvd2VyKCRrZXkpXSA9ICRrZXk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZWQgaG9zdCBtYXRjaGVzIGFueSBvZiB0aGUgbm8gcHJveHkgYXJlYXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCBzdHJpcCBhIHBvcnQgZnJvbSB0aGUgaG9zdCBpZiBpdCBpcyBwcmVzZW50LiBFYWNoIHBhdHRlcm4KICAgICAqIGNhbiBiZSBtYXRjaGVkIHdpdGggYW4gZXhhY3QgbWF0Y2ggKGUuZy4sICJmb28uY29tIiA9PSAiZm9vLmNvbSIpIG9yIGEKICAgICAqIHBhcnRpYWwgbWF0Y2g6IChlLmcuLCAiZm9vLmNvbSIgPT0gImJhei5mb28uY29tIiBhbmQgIi5mb28uY29tIiA9PQogICAgICogImJhei5mb28uY29tIiwgYnV0ICIuZm9vLmNvbSIgIT0gImZvby5jb20iKS4KICAgICAqCiAgICAgKiBBcmVhcyBhcmUgbWF0Y2hlZCBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOgogICAgICogMS4gIioiICh3aXRob3V0IHF1b3RlcykgYWx3YXlzIG1hdGNoZXMgYW55IGhvc3RzLgogICAgICogMi4gQW4gZXhhY3QgbWF0Y2guCiAgICAgKiAzLiBUaGUgYXJlYSBzdGFydHMgd2l0aCAiLiIgYW5kIHRoZSBhcmVhIGlzIHRoZSBsYXN0IHBhcnQgb2YgdGhlIGhvc3QuIGUuZy4KICAgICAqICAgICcubWl0LmVkdScgd2lsbCBtYXRjaCBhbnkgaG9zdCB0aGF0IGVuZHMgd2l0aCAnLm1pdC5lZHUnLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkaG9zdCAgICAgICAgIEhvc3QgdG8gY2hlY2sgYWdhaW5zdCB0aGUgcGF0dGVybnMuCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG5vUHJveHlBcnJheSBBbiBhcnJheSBvZiBob3N0IHBhdHRlcm5zLgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNIb3N0SW5Ob1Byb3h5KHN0cmluZyAkaG9zdCwgYXJyYXkgJG5vUHJveHlBcnJheSk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoXHN0cmxlbigkaG9zdCkgPT09IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRW1wdHkgaG9zdCBwcm92aWRlZCcpOwogICAgICAgIH0KCiAgICAgICAgLy8gU3RyaXAgcG9ydCBpZiBwcmVzZW50LgogICAgICAgIFskaG9zdF0gPSBcZXhwbG9kZSgnOicsICRob3N0LCAyKTsKCiAgICAgICAgZm9yZWFjaCAoJG5vUHJveHlBcnJheSBhcyAkYXJlYSkgewogICAgICAgICAgICAvLyBBbHdheXMgbWF0Y2ggb24gd2lsZGNhcmRzLgogICAgICAgICAgICBpZiAoJGFyZWEgPT09ICcqJykgewogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChlbXB0eSgkYXJlYSkpIHsKICAgICAgICAgICAgICAgIC8vIERvbid0IG1hdGNoIG9uIGVtcHR5IHZhbHVlcy4KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGFyZWEgPT09ICRob3N0KSB7CiAgICAgICAgICAgICAgICAvLyBFeGFjdCBtYXRjaGVzLgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gU3BlY2lhbCBtYXRjaCBpZiB0aGUgYXJlYSB3aGVuIHByZWZpeGVkIHdpdGggIi4iLiBSZW1vdmUgYW55CiAgICAgICAgICAgIC8vIGV4aXN0aW5nIGxlYWRpbmcgIi4iIGFuZCBhZGQgYSBuZXcgbGVhZGluZyAiLiIuCiAgICAgICAgICAgICRhcmVhID0gJy4nLlxsdHJpbSgkYXJlYSwgJy4nKTsKICAgICAgICAgICAgaWYgKFxzdWJzdHIoJGhvc3QsIC1cc3RybGVuKCRhcmVhKSkgPT09ICRhcmVhKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIC8qKgogICAgICogV3JhcHBlciBmb3IganNvbl9kZWNvZGUgdGhhdCB0aHJvd3Mgd2hlbiBhbiBlcnJvciBvY2N1cnMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkanNvbiAgICBKU09OIGRhdGEgdG8gcGFyc2UKICAgICAqIEBwYXJhbSBib29sICAgJGFzc29jICAgV2hlbiB0cnVlLCByZXR1cm5lZCBvYmplY3RzIHdpbGwgYmUgY29udmVydGVkCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIGludG8gYXNzb2NpYXRpdmUgYXJyYXlzLgogICAgICogQHBhcmFtIGludCAgICAkZGVwdGggICBVc2VyIHNwZWNpZmllZCByZWN1cnNpb24gZGVwdGguCiAgICAgKiBAcGFyYW0gaW50ICAgICRvcHRpb25zIEJpdG1hc2sgb2YgSlNPTiBkZWNvZGUgb3B0aW9ucy4KICAgICAqCiAgICAgKiBAcmV0dXJuIG9iamVjdHxhcnJheXxzdHJpbmd8aW50fGZsb2F0fGJvb2x8bnVsbAogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBKU09OIGNhbm5vdCBiZSBkZWNvZGVkLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uanNvbi1kZWNvZGUucGhwCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24ganNvbkRlY29kZShzdHJpbmcgJGpzb24sIGJvb2wgJGFzc29jID0gZmFsc2UsIGludCAkZGVwdGggPSA1MTIsIGludCAkb3B0aW9ucyA9IDApCiAgICB7CiAgICAgICAgJGRhdGEgPSBcanNvbl9kZWNvZGUoJGpzb24sICRhc3NvYywgJGRlcHRoLCAkb3B0aW9ucyk7CiAgICAgICAgaWYgKFxKU09OX0VSUk9SX05PTkUgIT09IFxqc29uX2xhc3RfZXJyb3IoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdqc29uX2RlY29kZSBlcnJvcjogJy5canNvbl9sYXN0X2Vycm9yX21zZygpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICAvKioKICAgICAqIFdyYXBwZXIgZm9yIEpTT04gZW5jb2RpbmcgdGhhdCB0aHJvd3Mgd2hlbiBhbiBlcnJvciBvY2N1cnMuCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSAgIFRoZSB2YWx1ZSBiZWluZyBlbmNvZGVkCiAgICAgKiBAcGFyYW0gaW50ICAgJG9wdGlvbnMgSlNPTiBlbmNvZGUgb3B0aW9uIGJpdG1hc2sKICAgICAqIEBwYXJhbSBpbnQgICAkZGVwdGggICBTZXQgdGhlIG1heGltdW0gZGVwdGguIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIEpTT04gY2Fubm90IGJlIGVuY29kZWQuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5qc29uLWVuY29kZS5waHAKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBqc29uRW5jb2RlKCR2YWx1ZSwgaW50ICRvcHRpb25zID0gMCwgaW50ICRkZXB0aCA9IDUxMik6IHN0cmluZwogICAgewogICAgICAgICRqc29uID0gXGpzb25fZW5jb2RlKCR2YWx1ZSwgJG9wdGlvbnMsICRkZXB0aCk7CiAgICAgICAgaWYgKFxKU09OX0VSUk9SX05PTkUgIT09IFxqc29uX2xhc3RfZXJyb3IoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdqc29uX2VuY29kZSBlcnJvcjogJy5canNvbl9sYXN0X2Vycm9yX21zZygpKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgICAgIHJldHVybiAkanNvbjsKICAgIH0KCiAgICAvKioKICAgICAqIFdyYXBwZXIgZm9yIHRoZSBocnRpbWUoKSBvciBtaWNyb3RpbWUoKSBmdW5jdGlvbnMKICAgICAqIChkZXBlbmRpbmcgb24gdGhlIFBIUCB2ZXJzaW9uLCBvbmUgb2YgdGhlIHR3byBpcyB1c2VkKQogICAgICoKICAgICAqIEByZXR1cm4gZmxvYXQgVU5JWCB0aW1lc3RhbXAKICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjdXJyZW50VGltZSgpOiBmbG9hdAogICAgewogICAgICAgIHJldHVybiAoZmxvYXQpIFxmdW5jdGlvbl9leGlzdHMoJ2hydGltZScpID8gXGhydGltZSh0cnVlKSAvIDFlOSA6IFxtaWNyb3RpbWUodHJ1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlkblVyaUNvbnZlcnQoVXJpSW50ZXJmYWNlICR1cmksIGludCAkb3B0aW9ucyA9IDApOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHVyaS0+Z2V0SG9zdCgpKSB7CiAgICAgICAgICAgICRhc2NpaUhvc3QgPSBzZWxmOjppZG5Ub0FzY2koJHVyaS0+Z2V0SG9zdCgpLCAkb3B0aW9ucywgJGluZm8pOwogICAgICAgICAgICBpZiAoJGFzY2lpSG9zdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRlcnJvckJpdFNldCA9ICRpbmZvWydlcnJvcnMnXSA/PyAwOwoKICAgICAgICAgICAgICAgICRlcnJvckNvbnN0YW50cyA9IGFycmF5X2ZpbHRlcihhcnJheV9rZXlzKGdldF9kZWZpbmVkX2NvbnN0YW50cygpKSwgc3RhdGljIGZ1bmN0aW9uIChzdHJpbmcgJG5hbWUpOiBib29sIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRuYW1lLCAwLCAxMSkgPT09ICdJRE5BX0VSUk9SXyc7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkZXJyb3JzID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkZXJyb3JDb25zdGFudHMgYXMgJGVycm9yQ29uc3RhbnQpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJGVycm9yQml0U2V0ICYgY29uc3RhbnQoJGVycm9yQ29uc3RhbnQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRlcnJvcnNbXSA9ICRlcnJvckNvbnN0YW50OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZXJyb3JNZXNzYWdlID0gJ0lETiBjb252ZXJzaW9uIGZhaWxlZCc7CiAgICAgICAgICAgICAgICBpZiAoJGVycm9ycykgewogICAgICAgICAgICAgICAgICAgICRlcnJvck1lc3NhZ2UgLj0gJyAoZXJyb3JzOiAnLmltcGxvZGUoJywgJywgJGVycm9ycykuJyknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJGVycm9yTWVzc2FnZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCR1cmktPmdldEhvc3QoKSAhPT0gJGFzY2lpSG9zdCkgewogICAgICAgICAgICAgICAgLy8gUmVwbGFjZSBVUkkgb25seSBpZiB0aGUgQVNDSUkgdmVyc2lvbiBpcyBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgkYXNjaWlIb3N0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRlbnYoc3RyaW5nICRuYW1lKTogP3N0cmluZwogICAgewogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlskbmFtZV0pKSB7CiAgICAgICAgICAgIHJldHVybiAoc3RyaW5nKSAkX1NFUlZFUlskbmFtZV07CiAgICAgICAgfQoKICAgICAgICBpZiAoXFBIUF9TQVBJID09PSAnY2xpJyAmJiAoJHZhbHVlID0gXGdldGVudigkbmFtZSkpICE9PSBmYWxzZSAmJiAkdmFsdWUgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIChzdHJpbmcpICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmd8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaWRuVG9Bc2NpKHN0cmluZyAkZG9tYWluLCBpbnQgJG9wdGlvbnMsID9hcnJheSAmJGluZm8gPSBbXSkKICAgIHsKICAgICAgICBpZiAoXGZ1bmN0aW9uX2V4aXN0cygnaWRuX3RvX2FzY2lpJykgJiYgXGRlZmluZWQoJ0lOVExfSUROQV9WQVJJQU5UX1VUUzQ2JykpIHsKICAgICAgICAgICAgcmV0dXJuIFxpZG5fdG9fYXNjaWkoJGRvbWFpbiwgJG9wdGlvbnMsIFxJTlRMX0lETkFfVkFSSUFOVF9VVFM0NiwgJGluZm8pOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxFcnJvcignZXh0LWlkbiBvciBzeW1mb255L3BvbHlmaWxsLWludGwtaWRuIG5vdCBsb2FkZWQgb3IgdG9vIG9sZCcpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/guzzle/UPGRADING.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R3V6emxlIFVwZ3JhZGUgR3VpZGUKPT09PT09PT09PT09PT09PT09PT0KCjYuMCB0byA3LjAKLS0tLS0tLS0tLQoKSW4gb3JkZXIgdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5ldyBmZWF0dXJlcyBvZiBQSFAsIEd1enpsZSBkcm9wcGVkIHRoZSBzdXBwb3J0Cm9mIFBIUCA1LiBUaGUgbWluaW11bSBzdXBwb3J0ZWQgUEhQIHZlcnNpb24gaXMgbm93IFBIUCA3LjIuIFR5cGUgaGludHMgYW5kIHJldHVybgp0eXBlcyBmb3IgZnVuY3Rpb25zIGFuZCBtZXRob2RzIGhhdmUgYmVlbiBhZGRlZCB3aGVyZXZlciBwb3NzaWJsZS4gCgpQbGVhc2UgbWFrZSBzdXJlOgotIFlvdSBhcmUgY2FsbGluZyBhIGZ1bmN0aW9uIG9yIGEgbWV0aG9kIHdpdGggdGhlIGNvcnJlY3QgdHlwZS4KLSBJZiB5b3UgZXh0ZW5kIGEgY2xhc3Mgb2YgR3V6emxlOyB1cGRhdGUgYWxsIHNpZ25hdHVyZXMgb24gbWV0aG9kcyB5b3Ugb3ZlcnJpZGUuCgojIyMjIE90aGVyIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGJyZWFraW5nIGNoYW5nZXMKCi0gQ2xhc3MgYEd1enpsZUh0dHBcVXJpVGVtcGxhdGVgIGlzIHJlbW92ZWQuCi0gQ2xhc3MgYEd1enpsZUh0dHBcRXhjZXB0aW9uXFNlZWtFeGNlcHRpb25gIGlzIHJlbW92ZWQuCi0gQ2xhc3NlcyBgR3V6emxlSHR0cFxFeGNlcHRpb25cQmFkUmVzcG9uc2VFeGNlcHRpb25gLCBgR3V6emxlSHR0cFxFeGNlcHRpb25cQ2xpZW50RXhjZXB0aW9uYCwgCiAgYEd1enpsZUh0dHBcRXhjZXB0aW9uXFNlcnZlckV4Y2VwdGlvbmAgY2FuIG5vIGxvbmdlciBiZSBpbml0aWFsaXplZCB3aXRoIGFuIGVtcHR5CiAgUmVzcG9uc2UgYXMgYXJndW1lbnQuCi0gQ2xhc3MgYEd1enpsZUh0dHBcRXhjZXB0aW9uXENvbm5lY3RFeGNlcHRpb25gIG5vdyBleHRlbmRzIGBHdXp6bGVIdHRwXEV4Y2VwdGlvblxUcmFuc2ZlckV4Y2VwdGlvbmAKICBpbnN0ZWFkIG9mIGBHdXp6bGVIdHRwXEV4Y2VwdGlvblxSZXF1ZXN0RXhjZXB0aW9uYC4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjo6Z2V0UmVzcG9uc2UoKWAgaXMgcmVtb3ZlZC4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxFeGNlcHRpb25cQ29ubmVjdEV4Y2VwdGlvbjo6aGFzUmVzcG9uc2UoKWAgaXMgcmVtb3ZlZC4KLSBDb25zdGFudCBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OlZFUlNJT05gIGlzIHJlbW92ZWQuIEFkZGVkIGBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZTo6TUFKT1JfVkVSU0lPTmAgaW5zdGVhZC4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjo6Z2V0UmVzcG9uc2VCb2R5U3VtbWFyeWAgaXMgcmVtb3ZlZC4KICBVc2UgYFxHdXp6bGVIdHRwXFBzcjdcZ2V0X21lc3NhZ2VfYm9keV9zdW1tYXJ5YCBhcyBhbiBhbHRlcm5hdGl2ZS4KLSBGdW5jdGlvbiBgR3V6emxlSHR0cFxDb29raWVcQ29va2llSmFyOjpnZXRDb29raWVWYWx1ZWAgaXMgcmVtb3ZlZC4KLSBSZXF1ZXN0IG9wdGlvbiBgZXhjZXB0aW9uc2AgaXMgcmVtb3ZlZC4gUGxlYXNlIHVzZSBgaHR0cF9lcnJvcnNgLgotIFJlcXVlc3Qgb3B0aW9uIGBzYXZlX3RvYCBpcyByZW1vdmVkLiBQbGVhc2UgdXNlIGBzaW5rYC4KLSBQb29sIG9wdGlvbiBgcG9vbF9zaXplYCBpcyByZW1vdmVkLiBQbGVhc2UgdXNlIGBjb25jdXJyZW5jeWAuCi0gV2Ugbm93IGxvb2sgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB0aGUgYCRfU0VSVkVSYCBzdXBlciBnbG9iYWwsIGR1ZSB0byB0aHJlYWQgc2FmZXR5IGlzc3VlcyB3aXRoIGBnZXRlbnZgLiBXZSBjb250aW51ZSB0byBmYWxsYmFjayB0byBgZ2V0ZW52YCBpbiBDTEkgZW52aXJvbm1lbnRzLCBmb3IgbWF4aW11bSBjb21wYXRpYmlsaXR5LgotIFRoZSBgZ2V0YCwgYGhlYWRgLCBgcHV0YCwgYHBvc3RgLCBgcGF0Y2hgLCBgZGVsZXRlYCwgYGdldEFzeW5jYCwgYGhlYWRBc3luY2AsIGBwdXRBc3luY2AsIGBwb3N0QXN5bmNgLCBgcGF0Y2hBc3luY2AsIGFuZCBgZGVsZXRlQXN5bmNgIG1ldGhvZHMgYXJlIG5vdyBpbXBsZW1lbnRlZCBhcyBnZW51aW5lIG1ldGhvZHMgb24gYEd1enpsZUh0dHBcQ2xpZW50YCwgd2l0aCBzdHJvbmcgdHlwaW5nLiBUaGUgb3JpZ2luYWwgYF9fY2FsbGAgaW1wbGVtZW50YXRpb24gcmVtYWlucyB1bmNoYW5nZWQgZm9yIG5vdywgZm9yIG1heGltdW0gYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGJ1dCB3b24ndCBiZSBpbnZva2VkIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uCi0gVGhlIGBsb2dgIG1pZGRsZXdhcmUgd2lsbCBsb2cgdGhlIGVycm9ycyB3aXRoIGxldmVsIGBlcnJvcmAgaW5zdGVhZCBvZiBgbm90aWNlYCAKLSBTdXBwb3J0IGZvciBpbnRlcm5hdGlvbmFsIGRvbWFpbiBuYW1lcyAoSUROKSBpcyBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCwgYW5kIGVuYWJsaW5nIGl0IHJlcXVpcmVzIGluc3RhbGxpbmcgZXh0LWludGwsIGxpbmtlZCBhZ2FpbnN0IGEgbW9kZXJuIHZlcnNpb24gb2YgdGhlIEMgbGlicmFyeSAoSUNVIDQuNiBvciBoaWdoZXIpLgoKIyMjIyBOYXRpdmUgZnVuY3Rpb25zIGNhbGxzCgpBbGwgaW50ZXJuYWwgbmF0aXZlIGZ1bmN0aW9ucyBjYWxscyBvZiBHdXp6bGUgYXJlIG5vdyBwcmVmaXhlZCB3aXRoIGEgc2xhc2guIFRoaXMKY2hhbmdlIG1ha2VzIGl0IGltcG9zc2libGUgZm9yIG1ldGhvZCBvdmVybG9hZGluZyBieSBvdGhlciBsaWJyYXJpZXMgb3IgYXBwbGljYXRpb25zLgpFeGFtcGxlOgoKYGBgcGhwCi8vIEJlZm9yZToKY3VybF92ZXJzaW9uKCk7CgovLyBBZnRlcjoKXGN1cmxfdmVyc2lvbigpOwpgYGAKCkZvciB0aGUgZnVsbCBkaWZmIHlvdSBjYW4gY2hlY2sgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvZ3V6emxlL2NvbXBhcmUvNi41LjQuLm1hc3RlcikuCgo1LjAgdG8gNi4wCi0tLS0tLS0tLS0KCkd1enpsZSBub3cgdXNlcyBbUFNSLTddKGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8pIGZvciBIVFRQIG1lc3NhZ2VzLgpEdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGVzZSBtZXNzYWdlcyBhcmUgaW1tdXRhYmxlLCB0aGlzIHByb21wdGVkIGEgcmVmYWN0b3JpbmcKb2YgR3V6emxlIHRvIHVzZSBhIG1pZGRsZXdhcmUgYmFzZWQgc3lzdGVtIHJhdGhlciB0aGFuIGFuIGV2ZW50IHN5c3RlbS4gQW55CkhUVFAgbWVzc2FnZSBpbnRlcmFjdGlvbiAoZS5nLiwgYEd1enpsZUh0dHBcTWVzc2FnZVxSZXF1ZXN0YCkgbmVlZCB0byBiZQp1cGRhdGVkIHRvIHdvcmsgd2l0aCB0aGUgbmV3IGltbXV0YWJsZSBQU1ItNyByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzLiBBbnkKZXZlbnQgbGlzdGVuZXJzIG9yIHN1YnNjcmliZXJzIG5lZWQgdG8gYmUgdXBkYXRlZCB0byBiZWNvbWUgbWlkZGxld2FyZQpmdW5jdGlvbnMgdGhhdCB3cmFwIGhhbmRsZXJzIChvciBhcmUgaW5qZWN0ZWQgaW50byBhCmBHdXp6bGVIdHRwXEhhbmRsZXJTdGFja2ApLgoKLSBSZW1vdmVkIGBHdXp6bGVIdHRwXEJhdGNoUmVzdWx0c2AKLSBSZW1vdmVkIGBHdXp6bGVIdHRwXENvbGxlY3Rpb25gCi0gUmVtb3ZlZCBgR3V6emxlSHR0cFxIYXNEYXRhVHJhaXRgCi0gUmVtb3ZlZCBgR3V6emxlSHR0cFxUb0FycmF5SW50ZXJmYWNlYAotIFRoZSBgZ3V6emxlaHR0cC9zdHJlYW1zYCBkZXBlbmRlbmN5IGhhcyBiZWVuIHJlbW92ZWQuIFN0cmVhbSBmdW5jdGlvbmFsaXR5CiAgaXMgbm93IHByZXNlbnQgaW4gdGhlIGBHdXp6bGVIdHRwXFBzcjdgIG5hbWVzcGFjZSBwcm92aWRlZCBieSB0aGUKICBgZ3V6emxlaHR0cC9wc3I3YCBwYWNrYWdlLgotIEd1enpsZSBubyBsb25nZXIgdXNlcyBSZWFjdFBIUCBwcm9taXNlcyBhbmQgbm93IHVzZXMgdGhlCiAgYGd1enpsZWh0dHAvcHJvbWlzZXNgIGxpYnJhcnkuIFdlIHVzZSBhIGN1c3RvbSBwcm9taXNlIGxpYnJhcnkgZm9yIHRocmVlCiAgc2lnbmlmaWNhbnQgcmVhc29uczoKICAxLiBSZWFjdCBwcm9taXNlcyAoYXQgdGhlIHRpbWUgb2Ygd3JpdGluZyB0aGlzKSBhcmUgcmVjdXJzaXZlLiBQcm9taXNlCiAgICAgY2hhaW5pbmcgYW5kIHByb21pc2UgcmVzb2x1dGlvbiB3aWxsIGV2ZW50dWFsbHkgYmxvdyB0aGUgc3RhY2suIEd1enpsZQogICAgIHByb21pc2VzIGFyZSBub3QgcmVjdXJzaXZlIGFzIHRoZXkgdXNlIGEgc29ydCBvZiB0cmFtcG9saW5pbmcgdGVjaG5pcXVlLgogICAgIE5vdGU6IHRoZXJlIGhhcyBiZWVuIG1vdmVtZW50IGluIHRoZSBSZWFjdCBwcm9qZWN0IHRvIG1vZGlmeSBwcm9taXNlcyB0bwogICAgIG5vIGxvbmdlciB1dGlsaXplIHJlY3Vyc2lvbi4KICAyLiBHdXp6bGUgbmVlZHMgdG8gaGF2ZSB0aGUgYWJpbGl0eSB0byBzeW5jaHJvbm91c2x5IGJsb2NrIG9uIGEgcHJvbWlzZSB0bwogICAgIHdhaXQgZm9yIGEgcmVzdWx0LiBHdXp6bGUgcHJvbWlzZXMgYWxsb3dzIHRoaXMgZnVuY3Rpb25hbGl0eSAoYW5kIGRvZXMKICAgICBub3QgcmVxdWlyZSB0aGUgdXNlIG9mIHJlY3Vyc2lvbikuCiAgMy4gQmVjYXVzZSB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gd2FpdCBvbiBhIHJlc3VsdCwgZG9pbmcgc28gdXNpbmcgUmVhY3QKICAgICBwcm9taXNlcyByZXF1aXJlcyB3cmFwcGluZyByZWFjdCBwcm9taXNlcyB3aXRoIFJpbmdQSFAgZnV0dXJlcy4gVGhpcwogICAgIG92ZXJoZWFkIGlzIG5vIGxvbmdlciBuZWVkZWQsIHJlZHVjaW5nIHN0YWNrIHNpemVzLCByZWR1Y2luZyBjb21wbGV4aXR5LAogICAgIGFuZCBpbXByb3ZpbmcgcGVyZm9ybWFuY2UuCi0gYEd1enpsZUh0dHBcTWltZXR5cGVzYCBoYXMgYmVlbiBtb3ZlZCB0byBhIGZ1bmN0aW9uIGluCiAgYEd1enpsZUh0dHBcUHNyN1xtaW1ldHlwZV9mcm9tX2V4dGVuc2lvbmAgYW5kCiAgYEd1enpsZUh0dHBcUHNyN1xtaW1ldHlwZV9mcm9tX2ZpbGVuYW1lYC4KLSBgR3V6emxlSHR0cFxRdWVyeWAgYW5kIGBHdXp6bGVIdHRwXFF1ZXJ5UGFyc2VyYCBoYXZlIGJlZW4gcmVtb3ZlZC4gUXVlcnkKICBzdHJpbmdzIG11c3Qgbm93IGJlIHBhc3NlZCBpbnRvIHJlcXVlc3Qgb2JqZWN0cyBhcyBzdHJpbmdzLCBvciBwcm92aWRlZCB0bwogIHRoZSBgcXVlcnlgIHJlcXVlc3Qgb3B0aW9uIHdoZW4gY3JlYXRpbmcgcmVxdWVzdHMgd2l0aCBjbGllbnRzLiBUaGUgYHF1ZXJ5YAogIG9wdGlvbiB1c2VzIFBIUCdzIGBodHRwX2J1aWxkX3F1ZXJ5YCB0byBjb252ZXJ0IGFuIGFycmF5IHRvIGEgc3RyaW5nLiBJZiB5b3UKICBuZWVkIGEgZGlmZmVyZW50IHNlcmlhbGl6YXRpb24gdGVjaG5pcXVlLCB5b3Ugd2lsbCBuZWVkIHRvIHBhc3MgdGhlIHF1ZXJ5CiAgc3RyaW5nIGluIGFzIGEgc3RyaW5nLiBUaGVyZSBhcmUgYSBjb3VwbGUgaGVscGVyIGZ1bmN0aW9ucyB0aGF0IHdpbGwgbWFrZQogIHdvcmtpbmcgd2l0aCBxdWVyeSBzdHJpbmdzIGVhc2llcjogYEd1enpsZUh0dHBcUHNyN1xwYXJzZV9xdWVyeWAgYW5kCiAgYEd1enpsZUh0dHBcUHNyN1xidWlsZF9xdWVyeWAuCi0gR3V6emxlIG5vIGxvbmdlciBoYXMgYSBkZXBlbmRlbmN5IG9uIFJpbmdQSFAuIER1ZSB0byB0aGUgdXNlIG9mIGEgbWlkZGxld2FyZQogIHN5c3RlbSBiYXNlZCBvbiBQU1ItNywgdXNpbmcgUmluZ1BIUCBhbmQgaXQncyBtaWRkbGV3YXJlIHN5c3RlbSBhcyB3ZWxsIGFkZHMKICBtb3JlIGNvbXBsZXhpdHkgdGhhbiB0aGUgYmVuZWZpdHMgaXQgcHJvdmlkZXMuIEFsbCBIVFRQIGhhbmRsZXJzIHRoYXQgd2VyZQogIHByZXNlbnQgaW4gUmluZ1BIUCBoYXZlIGJlZW4gbW9kaWZpZWQgdG8gd29yayBkaXJlY3RseSB3aXRoIFBTUi03IG1lc3NhZ2VzCiAgYW5kIHBsYWNlZCBpbiB0aGUgYEd1enpsZUh0dHBcSGFuZGxlcmAgbmFtZXNwYWNlLiBUaGlzIHNpZ25pZmljYW50bHkgcmVkdWNlcwogIGNvbXBsZXhpdHkgaW4gR3V6emxlLCByZW1vdmVzIGEgZGVwZW5kZW5jeSwgYW5kIGltcHJvdmVzIHBlcmZvcm1hbmNlLiBSaW5nUEhQCiAgd2lsbCBiZSBtYWludGFpbmVkIGZvciBHdXp6bGUgNSBzdXBwb3J0LCBidXQgd2lsbCBubyBsb25nZXIgYmUgYSBwYXJ0IG9mCiAgR3V6emxlIDYuCi0gQXMgR3V6emxlIG5vdyB1c2VzIGEgbWlkZGxld2FyZSBiYXNlZCBzeXN0ZW1zIHRoZSBldmVudCBzeXN0ZW0gYW5kIFJpbmdQSFAKICBpbnRlZ3JhdGlvbiBoYXMgYmVlbiByZW1vdmVkLiBOb3RlOiB3aGlsZSB0aGUgZXZlbnQgc3lzdGVtIGhhcyBiZWVuIHJlbW92ZWQsCiAgaXQgaXMgcG9zc2libGUgdG8gYWRkIHlvdXIgb3duIHR5cGUgb2YgZXZlbnQgc3lzdGVtIHRoYXQgaXMgcG93ZXJlZCBieSB0aGUKICBtaWRkbGV3YXJlIHN5c3RlbS4KICAtIFJlbW92ZWQgdGhlIGBFdmVudGAgbmFtZXNwYWNlLgogIC0gUmVtb3ZlZCB0aGUgYFN1YnNjcmliZXJgIG5hbWVzcGFjZS4KICAtIFJlbW92ZWQgYFRyYW5zYWN0aW9uYCBjbGFzcwogIC0gUmVtb3ZlZCBgUmVxdWVzdEZzbWAKICAtIFJlbW92ZWQgYFJpbmdCcmlkZ2VgCiAgLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXENvb2tpZWAgaXMgbm93IHByb3ZpZGVkIGJ5CiAgICBgR3V6emxlSHR0cFxNaWRkbGV3YXJlOjpjb29raWVzYAogIC0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxIdHRwRXJyb3JgIGlzIG5vdyBwcm92aWRlZCBieQogICAgYEd1enpsZUh0dHBcTWlkZGxld2FyZTo6aHR0cEVycm9yYAogIC0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxIaXN0b3J5YCBpcyBub3cgcHJvdmlkZWQgYnkKICAgIGBHdXp6bGVIdHRwXE1pZGRsZXdhcmU6Omhpc3RvcnlgCiAgLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXE1vY2tgIGlzIG5vdyBwcm92aWRlZCBieQogICAgYEd1enpsZUh0dHBcSGFuZGxlclxNb2NrSGFuZGxlcmAKICAtIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcUHJlcGFyZWAgaXMgbm93IHByb3ZpZGVkIGJ5CiAgICBgR3V6emxlSHR0cFxQcmVwYXJlQm9keU1pZGRsZXdhcmVgCiAgLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXFJlZGlyZWN0YCBpcyBub3cgcHJvdmlkZWQgYnkKICAgIGBHdXp6bGVIdHRwXFJlZGlyZWN0TWlkZGxld2FyZWAKLSBHdXp6bGUgbm93IHVzZXMgYFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlYCAoaW1wbGVtZW50cyBpbgogIGBHdXp6bGVIdHRwXFBzcjdcVXJpYCkgZm9yIFVSSSBzdXBwb3J0LiBgR3V6emxlSHR0cFxVcmxgIGlzIG5vdyBnb25lLgotIFN0YXRpYyBmdW5jdGlvbnMgaW4gYEd1enpsZUh0dHBcVXRpbHNgIGhhdmUgYmVlbiBtb3ZlZCB0byBuYW1lc3BhY2VkCiAgZnVuY3Rpb25zIHVuZGVyIHRoZSBgR3V6emxlSHR0cGAgbmFtZXNwYWNlLiBUaGlzIHJlcXVpcmVzIGVpdGhlciBhIENvbXBvc2VyCiAgYmFzZWQgYXV0b2xvYWRlciBvciB5b3UgdG8gaW5jbHVkZSBmdW5jdGlvbnMucGhwLgotIGBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0RGVmYXVsdE9wdGlvbmAgaGFzIGJlZW4gcmVuYW1lZCB0bwogIGBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0Q29uZmlnYC4KLSBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldERlZmF1bHRPcHRpb25gIGhhcyBiZWVuIHJlbW92ZWQuCi0gVGhlIGBqc29uYCBhbmQgYHhtbGAgbWV0aG9kcyBvZiByZXNwb25zZSBvYmplY3RzIGhhcyBiZWVuIHJlbW92ZWQuIFdpdGggdGhlCiAgbWlncmF0aW9uIHRvIHN0cmljdGx5IGFkaGVyaW5nIHRvIFBTUi03IGFzIHRoZSBpbnRlcmZhY2UgZm9yIEd1enpsZSBtZXNzYWdlcywKICBhZGRpbmcgbWV0aG9kcyB0byBtZXNzYWdlIGludGVyZmFjZXMgd291bGQgYWN0dWFsbHkgcmVxdWlyZSBHdXp6bGUgbWVzc2FnZXMKICB0byBleHRlbmQgZnJvbSBQU1ItNyBtZXNzYWdlcyByYXRoZXIgdGhlbiB3b3JrIHdpdGggdGhlbSBkaXJlY3RseS4KCiMjIE1pZ3JhdGluZyB0byBtaWRkbGV3YXJlCgpUaGUgY2hhbmdlIHRvIFBTUi03IHVuZm9ydHVuYXRlbHkgcmVxdWlyZWQgc2lnbmlmaWNhbnQgcmVmYWN0b3JpbmcgdG8gR3V6emxlCmR1ZSB0byB0aGUgZmFjdCB0aGF0IFBTUi03IG1lc3NhZ2VzIGFyZSBpbW11dGFibGUuIEd1enpsZSA1IHJlbGllZCBvbiBhbiBldmVudApzeXN0ZW0gZnJvbSBwbHVnaW5zLiBUaGUgZXZlbnQgc3lzdGVtIHJlbGllZCBvbiBtdXRhYmlsaXR5IG9mIEhUVFAgbWVzc2FnZXMgYW5kCnNpZGUgZWZmZWN0cyBpbiBvcmRlciB0byB3b3JrLiBXaXRoIGltbXV0YWJsZSBtZXNzYWdlcywgeW91IGhhdmUgdG8gY2hhbmdlIHlvdXIKd29ya2Zsb3cgdG8gYmVjb21lIG1vcmUgYWJvdXQgZWl0aGVyIHJldHVybmluZyBhIHZhbHVlIChlLmcuLCBmdW5jdGlvbmFsCm1pZGRsZXdhcmVzKSBvciBzZXR0aW5nIGEgdmFsdWUgb24gYW4gb2JqZWN0LiBHdXp6bGUgdjYgaGFzIGNob3NlbiB0aGUKZnVuY3Rpb25hbCBtaWRkbGV3YXJlIGFwcHJvYWNoLgoKSW5zdGVhZCBvZiB1c2luZyB0aGUgZXZlbnQgc3lzdGVtIHRvIGxpc3RlbiBmb3IgdGhpbmdzIGxpa2UgdGhlIGBiZWZvcmVgIGV2ZW50LAp5b3Ugbm93IGNyZWF0ZSBhIHN0YWNrIGJhc2VkIG1pZGRsZXdhcmUgZnVuY3Rpb24gdGhhdCBpbnRlcmNlcHRzIGEgcmVxdWVzdCBvbgp0aGUgd2F5IGluIGFuZCB0aGUgcHJvbWlzZSBvZiB0aGUgcmVzcG9uc2Ugb24gdGhlIHdheSBvdXQuIFRoaXMgaXMgYSBtdWNoCnNpbXBsZXIgYW5kIG1vcmUgcHJlZGljdGFibGUgYXBwcm9hY2ggdGhhbiB0aGUgZXZlbnQgc3lzdGVtIGFuZCB3b3JrcyBuaWNlbHkKd2l0aCBQU1ItNyBtaWRkbGV3YXJlLiBEdWUgdG8gdGhlIHVzZSBvZiBwcm9taXNlcywgdGhlIG1pZGRsZXdhcmUgc3lzdGVtIGlzCmFsc28gYXN5bmNocm9ub3VzLgoKdjU6CgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcRXZlbnRcQmVmb3JlRXZlbnQ7CiRjbGllbnQgPSBuZXcgR3V6emxlSHR0cFxDbGllbnQoKTsKLy8gR2V0IHRoZSBlbWl0dGVyIGFuZCBsaXN0ZW4gdG8gdGhlIGJlZm9yZSBldmVudC4KJGNsaWVudC0+Z2V0RW1pdHRlcigpLT5vbignYmVmb3JlJywgZnVuY3Rpb24gKEJlZm9yZUV2ZW50ICRlKSB7CiAgICAvLyBHdXp6bGUgdjUgZXZlbnRzIHJlbGllZCBvbiBtdXRhdGlvbgogICAgJGUtPmdldFJlcXVlc3QoKS0+c2V0SGVhZGVyKCdYLUZvbycsICdCYXInKTsKfSk7CmBgYAoKdjY6CgpJbiB2NiwgeW91IGNhbiBtb2RpZnkgdGhlIHJlcXVlc3QgYmVmb3JlIGl0IGlzIHNlbnQgdXNpbmcgdGhlIGBtYXBSZXF1ZXN0YAptaWRkbGV3YXJlLiBUaGUgaWRpb21hdGljIHdheSBpbiB2NiB0byBtb2RpZnkgdGhlIHJlcXVlc3QvcmVzcG9uc2UgbGlmZWN5Y2xlIGlzCnRvIHNldHVwIGEgaGFuZGxlciBtaWRkbGV3YXJlIHN0YWNrIHVwIGZyb250IGFuZCBpbmplY3QgdGhlIGhhbmRsZXIgaW50byBhCmNsaWVudC4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxNaWRkbGV3YXJlOwovLyBDcmVhdGUgYSBoYW5kbGVyIHN0YWNrIHRoYXQgaGFzIGFsbCBvZiB0aGUgZGVmYXVsdCBtaWRkbGV3YXJlcyBhdHRhY2hlZAokaGFuZGxlciA9IEd1enpsZUh0dHBcSGFuZGxlclN0YWNrOjpjcmVhdGUoKTsKLy8gUHVzaCB0aGUgaGFuZGxlciBvbnRvIHRoZSBoYW5kbGVyIHN0YWNrCiRoYW5kbGVyLT5wdXNoKE1pZGRsZXdhcmU6Om1hcFJlcXVlc3QoZnVuY3Rpb24gKFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpIHsKICAgIC8vIE5vdGljZSB0aGF0IHdlIGhhdmUgdG8gcmV0dXJuIGEgcmVxdWVzdCBvYmplY3QKICAgIHJldHVybiAkcmVxdWVzdC0+d2l0aEhlYWRlcignWC1Gb28nLCAnQmFyJyk7Cn0pKTsKLy8gSW5qZWN0IHRoZSBoYW5kbGVyIGludG8gdGhlIGNsaWVudAokY2xpZW50ID0gbmV3IEd1enpsZUh0dHBcQ2xpZW50KFsnaGFuZGxlcicgPT4gJGhhbmRsZXJdKTsKYGBgCgojIyBQT1NUIFJlcXVlc3RzCgpUaGlzIHZlcnNpb24gYWRkZWQgdGhlIFtgZm9ybV9wYXJhbXNgXShodHRwczovL2RvY3MuZ3V6emxlcGhwLm9yZy9lbi9sYXRlc3QvcmVxdWVzdC1vcHRpb25zLmh0bWwjZm9ybV9wYXJhbXMpCmFuZCBgbXVsdGlwYXJ0YCByZXF1ZXN0IG9wdGlvbnMuIGBmb3JtX3BhcmFtc2AgaXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2YKc3RyaW5ncyBvciBhcnJheSBvZiBzdHJpbmdzIGFuZCBpcyB1c2VkIHRvIHNlcmlhbGl6ZSBhbgpgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYCBQT1NUIHJlcXVlc3QuIFRoZQpbYG11bHRpcGFydGBdKGh0dHBzOi8vZG9jcy5ndXp6bGVwaHAub3JnL2VuL2xhdGVzdC9yZXF1ZXN0LW9wdGlvbnMuaHRtbCNtdWx0aXBhcnQpCm9wdGlvbiBpcyBub3cgdXNlZCB0byBzZW5kIGEgbXVsdGlwYXJ0L2Zvcm0tZGF0YSBQT1NUIHJlcXVlc3QuCgpgR3V6emxlSHR0cFxQb3N0XFBvc3RGaWxlYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGBtdWx0aXBhcnRgIG9wdGlvbiB0byBhZGQKUE9TVCBmaWxlcyB0byBhIG11bHRpcGFydC9mb3JtLWRhdGEgcmVxdWVzdC4KClRoZSBgYm9keWAgb3B0aW9uIG5vIGxvbmdlciBhY2NlcHRzIGFuIGFycmF5IHRvIHNlbmQgUE9TVCByZXF1ZXN0cy4gUGxlYXNlIHVzZQpgbXVsdGlwYXJ0YCBvciBgZm9ybV9wYXJhbXNgIGluc3RlYWQuCgpUaGUgYGJhc2VfdXJsYCBvcHRpb24gaGFzIGJlZW4gcmVuYW1lZCB0byBgYmFzZV91cmlgLgoKNC54IHRvIDUuMAotLS0tLS0tLS0tCgojIyBSZXdyaXR0ZW4gQWRhcHRlciBMYXllcgoKR3V6emxlIG5vdyB1c2VzIFtSaW5nUEhQXShodHRwczovL3JpbmdwaHAucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdCkgdG8gc2VuZApIVFRQIHJlcXVlc3RzLiBUaGUgYGFkYXB0ZXJgIG9wdGlvbiBpbiBhIGBHdXp6bGVIdHRwXENsaWVudGAgY29uc3RydWN0b3IKaXMgc3RpbGwgc3VwcG9ydGVkLCBidXQgaXQgaGFzIG5vdyBiZWVuIHJlbmFtZWQgdG8gYGhhbmRsZXJgLiBJbnN0ZWFkIG9mCnBhc3NpbmcgYSBgR3V6emxlSHR0cFxBZGFwdGVyXEFkYXB0ZXJJbnRlcmZhY2VgLCB5b3UgbXVzdCBub3cgcGFzcyBhIFBIUApgY2FsbGFibGVgIHRoYXQgZm9sbG93cyB0aGUgUmluZ1BIUCBzcGVjaWZpY2F0aW9uLgoKIyMgUmVtb3ZlZCBGbHVlbnQgSW50ZXJmYWNlcwoKW0ZsdWVudCBpbnRlcmZhY2VzIHdlcmUgcmVtb3ZlZF0oaHR0cHM6Ly9vY3JhbWl1cy5naXRodWIuaW8vYmxvZy9mbHVlbnQtaW50ZXJmYWNlcy1hcmUtZXZpbC8pCmZyb20gdGhlIGZvbGxvd2luZyBjbGFzc2VzOgoKLSBgR3V6emxlSHR0cFxDb2xsZWN0aW9uYAotIGBHdXp6bGVIdHRwXFVybGAKLSBgR3V6emxlSHR0cFxRdWVyeWAKLSBgR3V6emxlSHR0cFxQb3N0XFBvc3RCb2R5YAotIGBHdXp6bGVIdHRwXENvb2tpZVxTZXRDb29raWVgCgojIyBSZW1vdmVkIGZ1bmN0aW9ucy5waHAKClJlbW92ZWQgImZ1bmN0aW9ucy5waHAiLCBzbyB0aGF0IEd1enpsZSBpcyB0cnVseSBQU1ItNCBjb21wbGlhbnQuIFRoZSBmb2xsb3dpbmcKZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGFzIHJlcGxhY2VtZW50cy4KCi0gYEd1enpsZUh0dHBcanNvbl9kZWNvZGVgIC0+IGBHdXp6bGVIdHRwXFV0aWxzOjpqc29uRGVjb2RlYAotIGBHdXp6bGVIdHRwXGdldF9wYXRoYCAtPiBgR3V6emxlSHR0cFxVdGlsczo6Z2V0UGF0aGAKLSBgR3V6emxlSHR0cFxVdGlsczo6c2V0UGF0aGAgLT4gYEd1enpsZUh0dHBcc2V0X3BhdGhgCi0gYEd1enpsZUh0dHBcUG9vbDo6YmF0Y2hgIC0+IGBHdXp6bGVIdHRwXGJhdGNoYC4gVGhpcyBmdW5jdGlvbiBpcywgaG93ZXZlciwKICBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHVzaW5nIGBHdXp6bGVIdHRwXFBvb2w6OmJhdGNoKClgLgoKVGhlICJwcm9jZWR1cmFsIiBnbG9iYWwgY2xpZW50IGhhcyBiZWVuIHJlbW92ZWQgd2l0aCBubyByZXBsYWNlbWVudCAoZS5nLiwKYEd1enpsZUh0dHBcZ2V0KClgLCBgR3V6emxlSHR0cFxwb3N0KClgLCBldGMuKS4gVXNlIGEgYEd1enpsZUh0dHBcQ2xpZW50YApvYmplY3QgYXMgYSByZXBsYWNlbWVudC4KCiMjIGB0aHJvd0ltbWVkaWF0ZWx5YCBoYXMgYmVlbiByZW1vdmVkCgpUaGUgY29uY2VwdCBvZiAidGhyb3dJbW1lZGlhdGVseSIgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGV4Y2VwdGlvbnMgYW5kIGVycm9yCmV2ZW50cy4gVGhpcyBjb250cm9sIG1lY2hhbmlzbSB3YXMgdXNlZCB0byBzdG9wIGEgdHJhbnNmZXIgb2YgY29uY3VycmVudApyZXF1ZXN0cyBmcm9tIGNvbXBsZXRpbmcuIFRoaXMgY2FuIG5vdyBiZSBoYW5kbGVkIGJ5IHRocm93aW5nIHRoZSBleGNlcHRpb24gb3IKYnkgY2FuY2VsbGluZyBhIHBvb2wgb2YgcmVxdWVzdHMgb3IgZWFjaCBvdXRzdGFuZGluZyBmdXR1cmUgcmVxdWVzdAppbmRpdmlkdWFsbHkuCgojIyBoZWFkZXJzIGV2ZW50IGhhcyBiZWVuIHJlbW92ZWQKClJlbW92ZWQgdGhlICJoZWFkZXJzIiBldmVudC4gVGhpcyBldmVudCB3YXMgb25seSB1c2VmdWwgZm9yIGNoYW5naW5nIHRoZQpib2R5IGEgcmVzcG9uc2Ugb25jZSB0aGUgaGVhZGVycyBvZiB0aGUgcmVzcG9uc2Ugd2VyZSBrbm93bi4gWW91IGNhbiBpbXBsZW1lbnQKYSBzaW1pbGFyIGJlaGF2aW9yIGluIGEgbnVtYmVyIG9mIHdheXMuIE9uZSBleGFtcGxlIG1pZ2h0IGJlIHRvIHVzZSBhCkZuU3RyZWFtIHRoYXQgaGFzIGFjY2VzcyB0byB0aGUgdHJhbnNhY3Rpb24gYmVpbmcgc2VudC4gRm9yIGV4YW1wbGUsIHdoZW4gdGhlCmZpcnN0IGJ5dGUgaXMgd3JpdHRlbiwgeW91IGNvdWxkIGNoZWNrIGlmIHRoZSByZXNwb25zZSBoZWFkZXJzIG1hdGNoIHlvdXIKZXhwZWN0YXRpb25zLCBhbmQgaWYgc28sIGNoYW5nZSB0aGUgYWN0dWFsIHN0cmVhbSBib2R5IHRoYXQgaXMgYmVpbmcKd3JpdHRlbiB0by4KCiMjIFVwZGF0ZXMgdG8gSFRUUCBNZXNzYWdlcwoKUmVtb3ZlZCB0aGUgYGFzQXJyYXlgIHBhcmFtZXRlciBmcm9tCmBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZTo6Z2V0SGVhZGVyYC4gSWYgeW91IHdhbnQgdG8gZ2V0IGEgaGVhZGVyCnZhbHVlIGFzIGFuIGFycmF5LCB0aGVuIHVzZSB0aGUgbmV3bHkgYWRkZWQgYGdldEhlYWRlckFzQXJyYXkoKWAgbWV0aG9kIG9mCmBNZXNzYWdlSW50ZXJmYWNlYC4gVGhpcyBjaGFuZ2UgbWFrZXMgdGhlIEd1enpsZSBpbnRlcmZhY2VzIGNvbXBhdGlibGUgd2l0aAp0aGUgUFNSLTcgaW50ZXJmYWNlcy4KCjMueCB0byA0LjAKLS0tLS0tLS0tLQoKIyMgT3ZlcmFyY2hpbmcgY2hhbmdlczoKCi0gTm93IHJlcXVpcmVzIFBIUCA1LjQgb3IgZ3JlYXRlci4KLSBObyBsb25nZXIgcmVxdWlyZXMgY1VSTCB0byBzZW5kIHJlcXVlc3RzLgotIEd1enpsZSBubyBsb25nZXIgd3JhcHMgZXZlcnkgZXhjZXB0aW9uIGl0IHRocm93cy4gT25seSBleGNlcHRpb25zIHRoYXQgYXJlCiAgcmVjb3ZlcmFibGUgYXJlIG5vdyB3cmFwcGVkIGJ5IEd1enpsZS4KLSBWYXJpb3VzIG5hbWVzcGFjZXMgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgcmVuYW1lZC4KLSBObyBsb25nZXIgcmVxdWlyaW5nIHRoZSBTeW1mb255IEV2ZW50RGlzcGF0Y2hlci4gQSBjdXN0b20gZXZlbnQgZGlzcGF0Y2hlcgogIGJhc2VkIG9uIHRoZSBTeW1mb255IEV2ZW50RGlzcGF0Y2hlciBpcwogIG5vdyB1dGlsaXplZCBpbiBgR3V6emxlSHR0cFxFdmVudFxFbWl0dGVySW50ZXJmYWNlYCAocmVzdWx0aW5nIGluIHNpZ25pZmljYW50CiAgc3BlZWQgYW5kIGZ1bmN0aW9uYWxpdHkgaW1wcm92ZW1lbnRzKS4KCkNoYW5nZXMgcGVyIEd1enpsZSAzLnggbmFtZXNwYWNlIGFyZSBkZXNjcmliZWQgYmVsb3cuCgojIyBCYXRjaAoKVGhlIGBHdXp6bGVcQmF0Y2hgIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLiBUaGlzIGlzIGJlc3QgbGVmdCB0bwp0aGlyZC1wYXJ0aWVzIHRvIGltcGxlbWVudCBvbiB0b3Agb2YgR3V6emxlJ3MgY29yZSBIVFRQIGxpYnJhcnkuCgojIyBDYWNoZQoKVGhlIGBHdXp6bGVcQ2FjaGVgIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLiAoVG9kbzogTm8gc3VpdGFibGUgcmVwbGFjZW1lbnQKaGFzIGJlZW4gaW1wbGVtZW50ZWQgeWV0LCBidXQgaG9waW5nIHRvIHV0aWxpemUgYSBQU1IgY2FjaGUgaW50ZXJmYWNlKS4KCiMjIENvbW1vbgoKLSBSZW1vdmVkIGFsbCBvZiB0aGUgd3JhcHBlZCBleGNlcHRpb25zLiBJdCdzIGJldHRlciB0byB1c2UgdGhlIHN0YW5kYXJkIFBIUAogIGxpYnJhcnkgZm9yIHVucmVjb3ZlcmFibGUgZXhjZXB0aW9ucy4KLSBgRnJvbUNvbmZpZ0ludGVyZmFjZWAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBgR3V6emxlXENvbW1vblxWZXJzaW9uYCBoYXMgYmVlbiByZW1vdmVkLiBUaGUgVkVSU0lPTiBjb25zdGFudCBjYW4gYmUgZm91bmQKICBhdCBgR3V6emxlSHR0cFxDbGllbnRJbnRlcmZhY2U6OlZFUlNJT05gLgoKIyMjIENvbGxlY3Rpb24KCi0gYGdldEFsbGAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGB0b0FycmF5YCB0byBjb252ZXJ0IGEgY29sbGVjdGlvbiB0byBhbiBhcnJheS4KLSBgaW5qZWN0YCBoYXMgYmVlbiByZW1vdmVkLgotIGBrZXlTZWFyY2hgIGhhcyBiZWVuIHJlbW92ZWQuCi0gYGdldFBhdGhgIG5vIGxvbmdlciBzdXBwb3J0cyB3aWxkY2FyZCBleHByZXNzaW9ucy4gVXNlIHNvbWV0aGluZyBiZXR0ZXIgbGlrZQogIEpNRVNQYXRoIGZvciB0aGlzLgotIGBzZXRQYXRoYCBub3cgc3VwcG9ydHMgYXBwZW5kaW5nIHRvIGFuIGV4aXN0aW5nIGFycmF5IHZpYSB0aGUgYFtdYCBub3RhdGlvbi4KCiMjIyBFdmVudHMKCkd1enpsZSBubyBsb25nZXIgcmVxdWlyZXMgU3ltZm9ueSdzIEV2ZW50RGlzcGF0Y2hlciBjb21wb25lbnQuIEd1enpsZSBub3cgdXNlcwpgR3V6emxlSHR0cFxFdmVudFxFbWl0dGVyYC4KCi0gYFN5bWZvbnlcQ29tcG9uZW50XEV2ZW50RGlzcGF0Y2hlclxFdmVudERpc3BhdGNoZXJJbnRlcmZhY2VgIGlzIHJlcGxhY2VkIGJ5CiAgYEd1enpsZUh0dHBcRXZlbnRcRW1pdHRlckludGVyZmFjZWAuCi0gYFN5bWZvbnlcQ29tcG9uZW50XEV2ZW50RGlzcGF0Y2hlclxFdmVudERpc3BhdGNoZXJgIGlzIHJlcGxhY2VkIGJ5CiAgYEd1enpsZUh0dHBcRXZlbnRcRW1pdHRlcmAuCi0gYFN5bWZvbnlcQ29tcG9uZW50XEV2ZW50RGlzcGF0Y2hlclxFdmVudGAgaXMgcmVwbGFjZWQgYnkKICBgR3V6emxlSHR0cFxFdmVudFxFdmVudGAsIGFuZCBHdXp6bGUgbm93IGhhcyBhbiBFdmVudEludGVyZmFjZSBpbgogIGBHdXp6bGVIdHRwXEV2ZW50XEV2ZW50SW50ZXJmYWNlYC4KLSBgQWJzdHJhY3RIYXNEaXNwYXRjaGVyYCBoYXMgbW92ZWQgdG8gYSB0cmFpdCwgYEhhc0VtaXR0ZXJUcmFpdGAsIGFuZAogIGBIYXNEaXNwYXRjaGVySW50ZXJmYWNlYCBoYXMgbW92ZWQgdG8gYEhhc0VtaXR0ZXJJbnRlcmZhY2VgLiBSZXRyaWV2aW5nIHRoZQogIGV2ZW50IGVtaXR0ZXIgb2YgYSByZXF1ZXN0LCBjbGllbnQsIGV0Yy4gbm93IHVzZXMgdGhlIGBnZXRFbWl0dGVyYCBtZXRob2QKICByYXRoZXIgdGhhbiB0aGUgYGdldERpc3BhdGNoZXJgIG1ldGhvZC4KCiMjIyMgRW1pdHRlcgoKLSBVc2UgdGhlIGBvbmNlKClgIG1ldGhvZCB0byBhZGQgYSBsaXN0ZW5lciB0aGF0IGF1dG9tYXRpY2FsbHkgcmVtb3ZlcyBpdHNlbGYKICB0aGUgZmlyc3QgdGltZSBpdCBpcyBpbnZva2VkLgotIFVzZSB0aGUgYGxpc3RlbmVycygpYCBtZXRob2QgdG8gcmV0cmlldmUgYSBsaXN0IG9mIGV2ZW50IGxpc3RlbmVycyByYXRoZXIgdGhhbgogIHRoZSBgZ2V0TGlzdGVuZXJzKClgIG1ldGhvZC4KLSBVc2UgYGVtaXQoKWAgaW5zdGVhZCBvZiBgZGlzcGF0Y2goKWAgdG8gZW1pdCBhbiBldmVudCBmcm9tIGFuIGVtaXR0ZXIuCi0gVXNlIGBhdHRhY2goKWAgaW5zdGVhZCBvZiBgYWRkU3Vic2NyaWJlcigpYCBhbmQgYGRldGFjaCgpYCBpbnN0ZWFkIG9mCiAgYHJlbW92ZVN1YnNjcmliZXIoKWAuCgpgYGBwaHAKJG1vY2sgPSBuZXcgTW9jaygpOwovLyAzLngKJHJlcXVlc3QtPmdldEV2ZW50RGlzcGF0Y2hlcigpLT5hZGRTdWJzY3JpYmVyKCRtb2NrKTsKJHJlcXVlc3QtPmdldEV2ZW50RGlzcGF0Y2hlcigpLT5yZW1vdmVTdWJzY3JpYmVyKCRtb2NrKTsKLy8gNC54CiRyZXF1ZXN0LT5nZXRFbWl0dGVyKCktPmF0dGFjaCgkbW9jayk7CiRyZXF1ZXN0LT5nZXRFbWl0dGVyKCktPmRldGFjaCgkbW9jayk7CmBgYAoKVXNlIHRoZSBgb24oKWAgbWV0aG9kIHRvIGFkZCBhIGxpc3RlbmVyIHJhdGhlciB0aGFuIHRoZSBgYWRkTGlzdGVuZXIoKWAgbWV0aG9kLgoKYGBgcGhwCi8vIDMueAokcmVxdWVzdC0+Z2V0RXZlbnREaXNwYXRjaGVyKCktPmFkZExpc3RlbmVyKCdmb28nLCBmdW5jdGlvbiAoRXZlbnQgJGV2ZW50KSB7IC8qIC4uLiAqLyB9ICk7Ci8vIDQueAokcmVxdWVzdC0+Z2V0RW1pdHRlcigpLT5vbignZm9vJywgZnVuY3Rpb24gKEV2ZW50ICRldmVudCwgJG5hbWUpIHsgLyogLi4uICovIH0gKTsKYGBgCgojIyBIdHRwCgojIyMgR2VuZXJhbCBjaGFuZ2VzCgotIFRoZSBjYWNlcnQucGVtIGNlcnRpZmljYXRlIGhhcyBiZWVuIG1vdmVkIHRvIGBzcmMvY2FjZXJ0LnBlbWAuCi0gQWRkZWQgdGhlIGNvbmNlcHQgb2YgYWRhcHRlcnMgdGhhdCBhcmUgdXNlZCB0byB0cmFuc2ZlciByZXF1ZXN0cyBvdmVyIHRoZQogIHdpcmUuCi0gU2ltcGxpZmllZCB0aGUgZXZlbnQgc3lzdGVtLgotIFNlbmRpbmcgcmVxdWVzdHMgaW4gcGFyYWxsZWwgaXMgc3RpbGwgcG9zc2libGUsIGJ1dCBiYXRjaGluZyBpcyBubyBsb25nZXIgYQogIGNvbmNlcHQgb2YgdGhlIEhUVFAgbGF5ZXIuIEluc3RlYWQsIHlvdSBtdXN0IHVzZSB0aGUgYGNvbXBsZXRlYCBhbmQgYGVycm9yYAogIGV2ZW50cyB0byBhc3luY2hyb25vdXNseSBtYW5hZ2UgcGFyYWxsZWwgcmVxdWVzdCB0cmFuc2ZlcnMuCi0gYEd1enpsZVxIdHRwXFVybGAgaGFzIG1vdmVkIHRvIGBHdXp6bGVIdHRwXFVybGAuCi0gYEd1enpsZVxIdHRwXFF1ZXJ5U3RyaW5nYCBoYXMgbW92ZWQgdG8gYEd1enpsZUh0dHBcUXVlcnlgLgotIFF1ZXJ5QWdncmVnYXRvcnMgaGF2ZSBiZWVuIHJld3JpdHRlbiBzbyB0aGF0IHRoZXkgYXJlIHNpbXBseSBjYWxsYWJsZQogIGZ1bmN0aW9ucy4KLSBgR3V6emxlSHR0cFxTdGF0aWNDbGllbnRgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIGluCiAgYGZ1bmN0aW9ucy5waHBgIGZvciBhbiBlYXN5IHRvIHVzZSBzdGF0aWMgY2xpZW50IGluc3RhbmNlLgotIEV4Y2VwdGlvbnMgaW4gYEd1enpsZUh0dHBcRXhjZXB0aW9uYCBoYXZlIGJlZW4gdXBkYXRlZCB0byBhbGwgZXh0ZW5kIGZyb20KICBgR3V6emxlSHR0cFxFeGNlcHRpb25cVHJhbnNmZXJFeGNlcHRpb25gLgoKIyMjIENsaWVudAoKQ2FsbGluZyBtZXRob2RzIGxpa2UgYGdldCgpYCwgYHBvc3QoKWAsIGBoZWFkKClgLCBldGMuIG5vIGxvbmdlciBjcmVhdGUgYW5kCnJldHVybiBhIHJlcXVlc3QsIGJ1dCByYXRoZXIgY3JlYXRlcyBhIHJlcXVlc3QsIHNlbmRzIHRoZSByZXF1ZXN0LCBhbmQgcmV0dXJucwp0aGUgcmVzcG9uc2UuCgpgYGBwaHAKLy8gMy4wCiRyZXF1ZXN0ID0gJGNsaWVudC0+Z2V0KCcvJyk7CiRyZXNwb25zZSA9ICRyZXF1ZXN0LT5zZW5kKCk7CgovLyA0LjAKJHJlc3BvbnNlID0gJGNsaWVudC0+Z2V0KCcvJyk7CgovLyBvciwgdG8gbWlycm9yIHRoZSBwcmV2aW91cyBiZWhhdmlvcgokcmVxdWVzdCA9ICRjbGllbnQtPmNyZWF0ZVJlcXVlc3QoJ0dFVCcsICcvJyk7CiRyZXNwb25zZSA9ICRjbGllbnQtPnNlbmQoJHJlcXVlc3QpOwpgYGAKCmBHdXp6bGVIdHRwXENsaWVudEludGVyZmFjZWAgaGFzIGNoYW5nZWQuCgotIFRoZSBgc2VuZGAgbWV0aG9kIG5vIGxvbmdlciBhY2NlcHRzIG1vcmUgdGhhbiBvbmUgcmVxdWVzdC4gVXNlIGBzZW5kQWxsYCB0bwogIHNlbmQgbXVsdGlwbGUgcmVxdWVzdHMgaW4gcGFyYWxsZWwuCi0gYHNldFVzZXJBZ2VudCgpYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYSBkZWZhdWx0IHJlcXVlc3Qgb3B0aW9uIGluc3RlYWQuIFlvdQogIGNvdWxkLCBmb3IgZXhhbXBsZSwgZG8gc29tZXRoaW5nIGxpa2U6CiAgYCRjbGllbnQtPnNldENvbmZpZygnZGVmYXVsdHMvaGVhZGVycy9Vc2VyLUFnZW50JywgJ0Zvby9CYXIgJyAuICRjbGllbnQ6OmdldERlZmF1bHRVc2VyQWdlbnQoKSlgLgotIGBzZXRTc2xWZXJpZmljYXRpb24oKWAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGRlZmF1bHQgcmVxdWVzdCBvcHRpb25zIGluc3RlYWQsCiAgbGlrZSBgJGNsaWVudC0+c2V0Q29uZmlnKCdkZWZhdWx0cy92ZXJpZnknLCB0cnVlKWAuCgpgR3V6emxlSHR0cFxDbGllbnRgIGhhcyBjaGFuZ2VkLgoKLSBUaGUgY29uc3RydWN0b3Igbm93IGFjY2VwdHMgb25seSBhbiBhc3NvY2lhdGl2ZSBhcnJheS4gWW91IGNhbiBpbmNsdWRlIGEKICBgYmFzZV91cmxgIHN0cmluZyBvciBhcnJheSB0byB1c2UgYSBVUkkgdGVtcGxhdGUgYXMgdGhlIGJhc2UgVVJMIG9mIGEgY2xpZW50LgogIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGEgYGRlZmF1bHRzYCBrZXkgdGhhdCBpcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBkZWZhdWx0CiAgcmVxdWVzdCBvcHRpb25zLiBZb3UgY2FuIHBhc3MgYW4gYGFkYXB0ZXJgIHRvIHVzZSBhIGN1c3RvbSBhZGFwdGVyLAogIGBiYXRjaF9hZGFwdGVyYCB0byB1c2UgYSBjdXN0b20gYWRhcHRlciBmb3Igc2VuZGluZyByZXF1ZXN0cyBpbiBwYXJhbGxlbCwgb3IKICBhIGBtZXNzYWdlX2ZhY3RvcnlgIHRvIGNoYW5nZSB0aGUgZmFjdG9yeSB1c2VkIHRvIGNyZWF0ZSBIVFRQIHJlcXVlc3RzIGFuZAogIHJlc3BvbnNlcy4KLSBUaGUgY2xpZW50IG5vIGxvbmdlciBlbWl0cyBhIGBjbGllbnQuY3JlYXRlX3JlcXVlc3RgIGV2ZW50LgotIENyZWF0aW5nIHJlcXVlc3RzIHdpdGggYSBjbGllbnQgbm8gbG9uZ2VyIGF1dG9tYXRpY2FsbHkgdXRpbGl6ZSBhIFVSSQogIHRlbXBsYXRlLiBZb3UgbXVzdCBwYXNzIGFuIGFycmF5IGludG8gYSBjcmVhdGlvbmFsIG1ldGhvZCAoZS5nLiwKICBgY3JlYXRlUmVxdWVzdGAsIGBnZXRgLCBgcHV0YCwgZXRjLikgaW4gb3JkZXIgdG8gZXhwYW5kIGEgVVJJIHRlbXBsYXRlLgoKIyMjIE1lc3NhZ2VzCgpNZXNzYWdlcyBubyBsb25nZXIgaGF2ZSByZWZlcmVuY2VzIHRvIHRoZWlyIGNvdW50ZXJwYXJ0cyAoaS5lLiwgYSByZXF1ZXN0IG5vCmxvbmdlciBoYXMgYSByZWZlcmVuY2UgdG8gaXQncyByZXNwb25zZSwgYW5kIGEgcmVzcG9uc2Ugbm8gbG9nZXIgaGFzIGEKcmVmZXJlbmNlIHRvIGl0cyByZXF1ZXN0KS4gVGhpcyBhc3NvY2lhdGlvbiBpcyBub3cgbWFuYWdlZCB0aHJvdWdoIGEKYEd1enpsZUh0dHBcQWRhcHRlclxUcmFuc2FjdGlvbkludGVyZmFjZWAgb2JqZWN0LiBZb3UgY2FuIGdldCByZWZlcmVuY2VzIHRvCnRoZXNlIHRyYW5zYWN0aW9uIG9iamVjdHMgdXNpbmcgcmVxdWVzdCBldmVudHMgdGhhdCBhcmUgZW1pdHRlZCBvdmVyIHRoZQpsaWZlY3ljbGUgb2YgYSByZXF1ZXN0LgoKIyMjIyBSZXF1ZXN0cyB3aXRoIGEgYm9keQoKLSBgR3V6emxlSHR0cFxNZXNzYWdlXEVudGl0eUVuY2xvc2luZ1JlcXVlc3RgIGFuZAogIGBHdXp6bGVIdHRwXE1lc3NhZ2VcRW50aXR5RW5jbG9zaW5nUmVxdWVzdEludGVyZmFjZWAgaGF2ZSBiZWVuIHJlbW92ZWQuIFRoZQogIHNlcGFyYXRpb24gYmV0d2VlbiByZXF1ZXN0cyB0aGF0IGNvbnRhaW4gYSBib2R5IGFuZCByZXF1ZXN0cyB0aGF0IGRvIG5vdAogIGNvbnRhaW4gYSBib2R5IGhhcyBiZWVuIHJlbW92ZWQsIGFuZCBub3cgYEd1enpsZUh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYAogIGhhbmRsZXMgYm90aCB1c2UgY2FzZXMuCi0gQW55IG1ldGhvZCB0aGF0IHByZXZpb3VzbHkgYWNjZXB0cyBhIGBHdXp6bGVIdHRwXFJlc3BvbnNlYCBvYmplY3Qgbm93IGFjY2VwdCBhCiAgYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZWAuCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXF1ZXN0RmFjdG9yeUludGVyZmFjZWAgaGFzIGJlZW4gcmVuYW1lZCB0bwogIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3RvcnlJbnRlcmZhY2VgLiBUaGlzIGludGVyZmFjZSBpcyB1c2VkIHRvIGNyZWF0ZQogIGJvdGggcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBhbmQgaXMgaW1wbGVtZW50ZWQgaW4KICBgR3V6emxlSHR0cFxNZXNzYWdlXE1lc3NhZ2VGYWN0b3J5YC4KLSBQT1NUIGZpZWxkIGFuZCBmaWxlIG1ldGhvZHMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcmVxdWVzdCBvYmplY3QuIFlvdQogIG11c3Qgbm93IHVzZSB0aGUgbWV0aG9kcyBtYWRlIGF2YWlsYWJsZSB0byBgR3V6emxlSHR0cFxQb3N0XFBvc3RCb2R5SW50ZXJmYWNlYAogIHRvIGNvbnRyb2wgdGhlIGZvcm1hdCBvZiBhIFBPU1QgYm9keS4gUmVxdWVzdHMgdGhhdCBhcmUgY3JlYXRlZCB1c2luZyBhCiAgc3RhbmRhcmQgYEd1enpsZUh0dHBcTWVzc2FnZVxNZXNzYWdlRmFjdG9yeUludGVyZmFjZWAgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZQogIGEgYEd1enpsZUh0dHBcUG9zdFxQb3N0Qm9keWAgYm9keSBpZiB0aGUgYm9keSB3YXMgcGFzc2VkIGFzIGFuIGFycmF5IG9yIGlmCiAgdGhlIG1ldGhvZCBpcyBQT1NUIGFuZCBubyBib2R5IGlzIHByb3ZpZGVkLgoKYGBgcGhwCiRyZXF1ZXN0ID0gJGNsaWVudC0+Y3JlYXRlUmVxdWVzdCgnUE9TVCcsICcvJyk7CiRyZXF1ZXN0LT5nZXRCb2R5KCktPnNldEZpZWxkKCdmb28nLCAnYmFyJyk7CiRyZXF1ZXN0LT5nZXRCb2R5KCktPmFkZEZpbGUobmV3IFBvc3RGaWxlKCdmaWxlX2tleScsIGZvcGVuKCcvcGF0aC90by9jb250ZW50JywgJ3InKSkpOwpgYGAKCiMjIyMgSGVhZGVycwoKLSBgR3V6emxlSHR0cFxNZXNzYWdlXEhlYWRlcmAgaGFzIGJlZW4gcmVtb3ZlZC4gSGVhZGVyIHZhbHVlcyBhcmUgbm93IHNpbXBseQogIHJlcHJlc2VudGVkIGJ5IGFuIGFycmF5IG9mIHZhbHVlcyBvciBhcyBhIHN0cmluZy4gSGVhZGVyIHZhbHVlcyBhcmUgcmV0dXJuZWQKICBhcyBhIHN0cmluZyBieSBkZWZhdWx0IHdoZW4gcmV0cmlldmluZyBhIGhlYWRlciB2YWx1ZSBmcm9tIGEgbWVzc2FnZS4gWW91IGNhbgogIHBhc3MgYW4gb3B0aW9uYWwgYXJndW1lbnQgb2YgYHRydWVgIHRvIHJldHJpZXZlIGEgaGVhZGVyIHZhbHVlIGFzIGFuIGFycmF5CiAgb2Ygc3RyaW5ncyBpbnN0ZWFkIG9mIGEgc2luZ2xlIGNvbmNhdGVuYXRlZCBzdHJpbmcuCi0gYEd1enpsZUh0dHBcUG9zdEZpbGVgIGFuZCBgR3V6emxlSHR0cFxQb3N0RmlsZUludGVyZmFjZWAgaGF2ZSBiZWVuIG1vdmVkIHRvCiAgYEd1enpsZUh0dHBcUG9zdGAuIFRoaXMgaW50ZXJmYWNlIGhhcyBiZWVuIHNpbXBsaWZpZWQgYW5kIG5vdyBhbGxvd3MgdGhlCiAgYWRkaXRpb24gb2YgYXJiaXRyYXJ5IGhlYWRlcnMuCi0gQ3VzdG9tIGhlYWRlcnMgbGlrZSBgR3V6emxlSHR0cFxNZXNzYWdlXEhlYWRlclxMaW5rYCBoYXZlIGJlZW4gcmVtb3ZlZC4gTW9zdAogIG9mIHRoZSBjdXN0b20gaGVhZGVycyBhcmUgbm93IGhhbmRsZWQgc2VwYXJhdGVseSBpbiBzcGVjaWZpYwogIHN1YnNjcmliZXJzL3BsdWdpbnMsIGFuZCBgR3V6emxlSHR0cFxNZXNzYWdlXEhlYWRlclZhbHVlczo6cGFyc2VQYXJhbXMoKWAgaGFzCiAgYmVlbiB1cGRhdGVkIHRvIHByb3Blcmx5IGhhbmRsZSBoZWFkZXJzIHRoYXQgY29udGFpbiBwYXJhbWV0ZXJzIChsaWtlIHRoZQogIGBMaW5rYCBoZWFkZXIpLgoKIyMjIyBSZXNwb25zZXMKCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0SW5mbygpYCBhbmQKICBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpzZXRJbmZvKClgIGhhdmUgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGV2ZW50CiAgc3lzdGVtIHRvIHJldHJpZXZlIHRoaXMgdHlwZSBvZiBpbmZvcm1hdGlvbi4KLSBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpnZXRSYXdIZWFkZXJzKClgIGhhcyBiZWVuIHJlbW92ZWQuCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0TWVzc2FnZSgpYCBoYXMgYmVlbiByZW1vdmVkLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmNhbGN1bGF0ZUFnZSgpYCBhbmQgb3RoZXIgY2FjaGUgc3BlY2lmaWMKICBtZXRob2RzIGhhdmUgbW92ZWQgdG8gdGhlIENhY2hlU3Vic2NyaWJlci4KLSBIZWFkZXIgc3BlY2lmaWMgaGVscGVyIGZ1bmN0aW9ucyBsaWtlIGBnZXRDb250ZW50TWQ1KClgIGhhdmUgYmVlbiByZW1vdmVkLgogIEp1c3QgdXNlIGBnZXRIZWFkZXIoJ0NvbnRlbnQtTUQ1JylgIGluc3RlYWQuCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6c2V0UmVxdWVzdCgpYCBhbmQKICBgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpnZXRSZXF1ZXN0KClgIGhhdmUgYmVlbiByZW1vdmVkLiBVc2UgdGhlIGV2ZW50CiAgc3lzdGVtIHRvIHdvcmsgd2l0aCByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzIGFzIGEgdHJhbnNhY3Rpb24uCi0gYEd1enpsZUh0dHBcTWVzc2FnZVxSZXNwb25zZTo6Z2V0UmVkaXJlY3RDb3VudCgpYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgdGhlCiAgUmVkaXJlY3Qgc3Vic2NyaWJlciBpbnN0ZWFkLgotIGBHdXp6bGVIdHRwXE1lc3NhZ2VcUmVzcG9uc2U6OmlzU3VjY2Vzc2Z1bCgpYCBhbmQgb3RoZXIgcmVsYXRlZCBtZXRob2RzIGhhdmUKICBiZWVuIHJlbW92ZWQuIFVzZSBgZ2V0U3RhdHVzQ29kZSgpYCBpbnN0ZWFkLgoKIyMjIyBTdHJlYW1pbmcgcmVzcG9uc2VzCgpTdHJlYW1pbmcgcmVxdWVzdHMgY2FuIG5vdyBiZSBjcmVhdGVkIGJ5IGEgY2xpZW50IGRpcmVjdGx5LCByZXR1cm5pbmcgYQpgR3V6emxlSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlYCBvYmplY3QgdGhhdCBjb250YWlucyBhIGJvZHkgc3RyZWFtCnJlZmVyZW5jaW5nIGFuIG9wZW4gUEhQIEhUVFAgc3RyZWFtLgoKYGBgcGhwCi8vIDMuMAp1c2UgR3V6emxlXFN0cmVhbVxQaHBTdHJlYW1SZXF1ZXN0RmFjdG9yeTsKJHJlcXVlc3QgPSAkY2xpZW50LT5nZXQoJy8nKTsKJGZhY3RvcnkgPSBuZXcgUGhwU3RyZWFtUmVxdWVzdEZhY3RvcnkoKTsKJHN0cmVhbSA9ICRmYWN0b3J5LT5mcm9tUmVxdWVzdCgkcmVxdWVzdCk7CiRkYXRhID0gJHN0cmVhbS0+cmVhZCgxMDI0KTsKCi8vIDQuMAokcmVzcG9uc2UgPSAkY2xpZW50LT5nZXQoJy8nLCBbJ3N0cmVhbScgPT4gdHJ1ZV0pOwovLyBSZWFkIHNvbWUgZGF0YSBvZmYgb2YgdGhlIHN0cmVhbSBpbiB0aGUgcmVzcG9uc2UgYm9keQokZGF0YSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpLT5yZWFkKDEwMjQpOwpgYGAKCiMjIyMgUmVkaXJlY3RzCgpUaGUgYGNvbmZpZ3VyZVJlZGlyZWN0cygpYCBtZXRob2QgaGFzIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZiBhCmBhbGxvd19yZWRpcmVjdHNgIHJlcXVlc3Qgb3B0aW9uLgoKYGBgcGhwCi8vIFN0YW5kYXJkIHJlZGlyZWN0cyB3aXRoIGEgZGVmYXVsdCBvZiBhIG1heCBvZiA1IHJlZGlyZWN0cwokcmVxdWVzdCA9ICRjbGllbnQtPmNyZWF0ZVJlcXVlc3QoJ0dFVCcsICcvJywgWydhbGxvd19yZWRpcmVjdHMnID0+IHRydWVdKTsKCi8vIFN0cmljdCByZWRpcmVjdHMgd2l0aCBhIGN1c3RvbSBudW1iZXIgb2YgcmVkaXJlY3RzCiRyZXF1ZXN0ID0gJGNsaWVudC0+Y3JlYXRlUmVxdWVzdCgnR0VUJywgJy8nLCBbCiAgICAnYWxsb3dfcmVkaXJlY3RzJyA9PiBbJ21heCcgPT4gNSwgJ3N0cmljdCcgPT4gdHJ1ZV0KXSk7CmBgYAoKIyMjIyBFbnRpdHlCb2R5CgpFbnRpdHlCb2R5IGludGVyZmFjZXMgYW5kIGNsYXNzZXMgaGF2ZSBiZWVuIHJlbW92ZWQgb3IgbW92ZWQgdG8KYEd1enpsZUh0dHBcU3RyZWFtYC4gQWxsIGNsYXNzZXMgYW5kIGludGVyZmFjZXMgdGhhdCBvbmNlIHJlcXVpcmVkCmBHdXp6bGVIdHRwXEVudGl0eUJvZHlJbnRlcmZhY2VgIG5vdyByZXF1aXJlCmBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2VgLiBDcmVhdGluZyBhIG5ldyBib2R5IGZvciBhIHJlcXVlc3Qgbm8KbG9uZ2VyIHVzZXMgYEd1enpsZUh0dHBcRW50aXR5Qm9keTo6ZmFjdG9yeWAgYnV0IG5vdyB1c2VzCmBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW06OmZhY3RvcnlgIG9yIGV2ZW4gYmV0dGVyOgpgR3V6emxlSHR0cFxTdHJlYW1cY3JlYXRlKClgLgoKLSBgR3V6emxlXEh0dHBcRW50aXR5Qm9keUludGVyZmFjZWAgaXMgbm93IGBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2VgCi0gYEd1enpsZVxIdHRwXEVudGl0eUJvZHlgIGlzIG5vdyBgR3V6emxlSHR0cFxTdHJlYW1cU3RyZWFtYAotIGBHdXp6bGVcSHR0cFxDYWNoaW5nRW50aXR5Qm9keWAgaXMgbm93IGBHdXp6bGVIdHRwXFN0cmVhbVxDYWNoaW5nU3RyZWFtYAotIGBHdXp6bGVcSHR0cFxSZWFkTGltaXRFbnRpdHlCb2R5YCBpcyBub3cgYEd1enpsZUh0dHBcU3RyZWFtXExpbWl0U3RyZWFtYAotIGBHdXp6bGVcSHR0cFxJb0VtaXR0eWluRW50aXR5Qm9keWAgaGFzIGJlZW4gcmVtb3ZlZC4KCiMjIyMgUmVxdWVzdCBsaWZlY3ljbGUgZXZlbnRzCgpSZXF1ZXN0cyBwcmV2aW91c2x5IHN1Ym1pdHRlZCBhIGxhcmdlIG51bWJlciBvZiByZXF1ZXN0cy4gVGhlIG51bWJlciBvZiBldmVudHMKZW1pdHRlZCBvdmVyIHRoZSBsaWZlY3ljbGUgb2YgYSByZXF1ZXN0IGhhcyBiZWVuIHNpZ25pZmljYW50bHkgcmVkdWNlZCB0byBtYWtlCml0IGVhc2llciB0byB1bmRlcnN0YW5kIGhvdyB0byBleHRlbmQgdGhlIGJlaGF2aW9yIG9mIGEgcmVxdWVzdC4gQWxsIGV2ZW50cwplbWl0dGVkIGR1cmluZyB0aGUgbGlmZWN5Y2xlIG9mIGEgcmVxdWVzdCBub3cgZW1pdCBhIGN1c3RvbQpgR3V6emxlSHR0cFxFdmVudFxFdmVudEludGVyZmFjZWAgb2JqZWN0IHRoYXQgY29udGFpbnMgY29udGV4dCBwcm92aWRpbmcKbWV0aG9kcyBhbmQgYSB3YXkgaW4gd2hpY2ggdG8gbW9kaWZ5IHRoZSB0cmFuc2FjdGlvbiBhdCB0aGF0IHNwZWNpZmljIHBvaW50IGluCnRpbWUgKGUuZy4sIGludGVyY2VwdCB0aGUgcmVxdWVzdCBhbmQgc2V0IGEgcmVzcG9uc2Ugb24gdGhlIHRyYW5zYWN0aW9uKS4KCi0gYHJlcXVlc3QuYmVmb3JlX3NlbmRgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGJlZm9yZWAgYW5kIG5vdyBlbWl0cyBhCiAgYEd1enpsZUh0dHBcRXZlbnRcQmVmb3JlRXZlbnRgCi0gYHJlcXVlc3QuY29tcGxldGVgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYGNvbXBsZXRlYCBhbmQgbm93IGVtaXRzIGEKICBgR3V6emxlSHR0cFxFdmVudFxDb21wbGV0ZUV2ZW50YC4KLSBgcmVxdWVzdC5zZW50YCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYGNvbXBsZXRlYC4KLSBgcmVxdWVzdC5zdWNjZXNzYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYGNvbXBsZXRlYC4KLSBgZXJyb3JgIGlzIG5vdyBhbiBldmVudCB0aGF0IGVtaXRzIGEgYEd1enpsZUh0dHBcRXZlbnRcRXJyb3JFdmVudGAuCi0gYHJlcXVlc3QuZXhjZXB0aW9uYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYGVycm9yYC4KLSBgcmVxdWVzdC5yZWNlaXZlLnN0YXR1c19saW5lYCBoYXMgYmVlbiByZW1vdmVkLgotIGBjdXJsLmNhbGxiYWNrLnByb2dyZXNzYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYSBjdXN0b20gYFN0cmVhbUludGVyZmFjZWAgdG8KICBtYWludGFpbiBhIHN0YXR1cyB1cGRhdGUuCi0gYGN1cmwuY2FsbGJhY2sud3JpdGVgIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSBhIGN1c3RvbSBgU3RyZWFtSW50ZXJmYWNlYCB0bwogIGludGVyY2VwdCB3cml0ZXMuCi0gYGN1cmwuY2FsbGJhY2sucmVhZGAgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGEgY3VzdG9tIGBTdHJlYW1JbnRlcmZhY2VgIHRvCiAgaW50ZXJjZXB0IHJlYWRzLgoKYGhlYWRlcnNgIGlzIGEgbmV3IGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgcmVzcG9uc2UgaGVhZGVycyBvZiBhCnJlcXVlc3QgaGF2ZSBiZWVuIHJlY2VpdmVkIGJlZm9yZSB0aGUgYm9keSBvZiB0aGUgcmVzcG9uc2UgaXMgZG93bmxvYWRlZC4gVGhpcwpldmVudCBlbWl0cyBhIGBHdXp6bGVIdHRwXEV2ZW50XEhlYWRlcnNFdmVudGAuCgpZb3UgY2FuIGludGVyY2VwdCBhIHJlcXVlc3QgYW5kIGluamVjdCBhIHJlc3BvbnNlIHVzaW5nIHRoZSBgaW50ZXJjZXB0KClgIGV2ZW50Cm9mIGEgYEd1enpsZUh0dHBcRXZlbnRcQmVmb3JlRXZlbnRgLCBgR3V6emxlSHR0cFxFdmVudFxDb21wbGV0ZUV2ZW50YCwgYW5kCmBHdXp6bGVIdHRwXEV2ZW50XEVycm9yRXZlbnRgIGV2ZW50LgoKU2VlOiBodHRwczovL2RvY3MuZ3V6emxlcGhwLm9yZy9lbi9sYXRlc3QvZXZlbnRzLmh0bWwKCiMjIEluZmxlY3Rpb24KClRoZSBgR3V6emxlXEluZmxlY3Rpb25gIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLiBUaGlzIGlzIG5vdCBhIGNvcmUgY29uY2VybgpvZiBHdXp6bGUuCgojIyBJdGVyYXRvcgoKVGhlIGBHdXp6bGVcSXRlcmF0b3JgIG5hbWVzcGFjZSBoYXMgYmVlbiByZW1vdmVkLgoKLSBgR3V6emxlXEl0ZXJhdG9yXEFwcGVuZEl0ZXJhdG9yYCwgYEd1enpsZVxJdGVyYXRvclxDaHVua2VkSXRlcmF0b3JgLCBhbmQKICBgR3V6emxlXEl0ZXJhdG9yXE1ldGhvZFByb3h5SXRlcmF0b3JgIGFyZSBuaWNlLCBidXQgbm90IGEgY29yZSByZXF1aXJlbWVudCBvZgogIEd1enpsZSBpdHNlbGYuCi0gYEd1enpsZVxJdGVyYXRvclxGaWx0ZXJJdGVyYXRvcmAgaXMgbm8gbG9uZ2VyIG5lZWRlZCBiZWNhdXNlIGFuIGVxdWl2YWxlbnQKICBjbGFzcyBpcyBzaGlwcGVkIHdpdGggUEhQIDUuNC4KLSBgR3V6emxlXEl0ZXJhdG9yXE1hcEl0ZXJhdG9yYCBpcyBub3QgcmVhbGx5IG5lZWRlZCB3aGVuIHVzaW5nIFBIUCA1LjUgYmVjYXVzZQogIGl0J3MgZWFzaWVyIHRvIGp1c3Qgd3JhcCBhbiBpdGVyYXRvciBpbiBhIGdlbmVyYXRvciB0aGF0IG1hcHMgdmFsdWVzLgoKRm9yIGEgcmVwbGFjZW1lbnQgb2YgdGhlc2UgaXRlcmF0b3JzLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25pa2ljL2l0ZXIKCiMjIExvZwoKVGhlIExvZ1BsdWdpbiBoYXMgbW92ZWQgdG8gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9sb2ctc3Vic2NyaWJlci4gVGhlCmBHdXp6bGVcTG9nYCBuYW1lc3BhY2UgaGFzIGJlZW4gcmVtb3ZlZC4gR3V6emxlIG5vdyByZWxpZXMgb24KYFBzclxMb2dcTG9nZ2VySW50ZXJmYWNlYCBmb3IgYWxsIGxvZ2dpbmcuIFRoZSBNZXNzYWdlRm9ybWF0dGVyIGNsYXNzIGhhcyBiZWVuCm1vdmVkIHRvIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcTG9nXEZvcm1hdHRlcmAuCgojIyBQYXJzZXIKClRoZSBgR3V6emxlXFBhcnNlcmAgbmFtZXNwYWNlIGhhcyBiZWVuIHJlbW92ZWQuIFRoaXMgd2FzIHByZXZpb3VzbHkgdXNlZCB0bwptYWtlIGl0IHBvc3NpYmxlIHRvIHBsdWcgaW4gY3VzdG9tIHBhcnNlcnMgZm9yIGNvb2tpZXMsIG1lc3NhZ2VzLCBVUkkKdGVtcGxhdGVzLCBhbmQgVVJMczsgaG93ZXZlciwgdGhpcyBsZXZlbCBvZiBjb21wbGV4aXR5IGlzIG5vdCBuZWVkZWQgaW4gR3V6emxlCnNvIGl0IGhhcyBiZWVuIHJlbW92ZWQuCgotIENvb2tpZTogQ29va2llIHBhcnNpbmcgbG9naWMgaGFzIGJlZW4gbW92ZWQgdG8KICBgR3V6emxlSHR0cFxDb29raWVcU2V0Q29va2llOjpmcm9tU3RyaW5nYC4KLSBNZXNzYWdlOiBNZXNzYWdlIHBhcnNpbmcgbG9naWMgZm9yIGJvdGggcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBoYXMgYmVlbiBtb3ZlZAogIHRvIGBHdXp6bGVIdHRwXE1lc3NhZ2VcTWVzc2FnZUZhY3Rvcnk6OmZyb21NZXNzYWdlYC4gTWVzc2FnZSBwYXJzaW5nIGlzIG9ubHkKICB1c2VkIGluIGRlYnVnZ2luZyBvciBkZXNlcmlhbGl6aW5nIG1lc3NhZ2VzLCBzbyBpdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yCiAgR3V6emxlIGFzIGEgbGlicmFyeSB0byBhZGQgdGhpcyBsZXZlbCBvZiBjb21wbGV4aXR5IHRvIHBhcnNpbmcgbWVzc2FnZXMuCi0gVXJpVGVtcGxhdGU6IFVSSSB0ZW1wbGF0ZSBwYXJzaW5nIGhhcyBiZWVuIG1vdmVkIHRvCiAgYEd1enpsZUh0dHBcVXJpVGVtcGxhdGVgLiBUaGUgR3V6emxlIGxpYnJhcnkgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgUEVDTAogIFVSSSB0ZW1wbGF0ZSBsaWJyYXJ5IGlmIGl0IGlzIGluc3RhbGxlZC4KLSBVcmw6IFVSTCBwYXJzaW5nIGlzIG5vdyBwZXJmb3JtZWQgaW4gYEd1enpsZUh0dHBcVXJsOjpmcm9tU3RyaW5nYCAocHJldmlvdXNseQogIGl0IHdhcyBgR3V6emxlXEh0dHBcVXJsOjpmYWN0b3J5KClgKS4gSWYgY3VzdG9tIFVSTCBwYXJzaW5nIGlzIG5lY2Vzc2FyeSwKICB0aGVuIGRldmVsb3BlcnMgYXJlIGZyZWUgdG8gc3ViY2xhc3MgYEd1enpsZUh0dHBcVXJsYC4KCiMjIFBsdWdpbgoKVGhlIGBHdXp6bGVcUGx1Z2luYCBuYW1lc3BhY2UgaGFzIGJlZW4gcmVuYW1lZCB0byBgR3V6emxlSHR0cFxTdWJzY3JpYmVyYC4KU2V2ZXJhbCBwbHVnaW5zIGFyZSBzaGlwcGluZyB3aXRoIHRoZSBjb3JlIEd1enpsZSBsaWJyYXJ5IHVuZGVyIHRoaXMgbmFtZXNwYWNlLgoKLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXENvb2tpZWA6IFJlcGxhY2VzIHRoZSBvbGQgQ29va2llUGx1Z2luLiBDb29raWUgamFyCiAgY29kZSBoYXMgbW92ZWQgdG8gYEd1enpsZUh0dHBcQ29va2llYC4KLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXEhpc3RvcnlgOiBSZXBsYWNlcyB0aGUgb2xkIEhpc3RvcnlQbHVnaW4uCi0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxIdHRwRXJyb3JgOiBUaHJvd3MgZXJyb3JzIHdoZW4gYSBiYWQgSFRUUCByZXNwb25zZSBpcwogIHJlY2VpdmVkLgotIGBHdXp6bGVIdHRwXFN1YnNjcmliZXJcTW9ja2A6IFJlcGxhY2VzIHRoZSBvbGQgTW9ja1BsdWdpbi4KLSBgR3V6emxlSHR0cFxTdWJzY3JpYmVyXFByZXBhcmVgOiBQcmVwYXJlcyB0aGUgYm9keSBvZiBhIHJlcXVlc3QganVzdCBiZWZvcmUKICBzZW5kaW5nLiBUaGlzIHN1YnNjcmliZXIgaXMgYXR0YWNoZWQgdG8gYWxsIHJlcXVlc3RzIGJ5IGRlZmF1bHQuCi0gYEd1enpsZUh0dHBcU3Vic2NyaWJlclxSZWRpcmVjdGA6IFJlcGxhY2VzIHRoZSBSZWRpcmVjdFBsdWdpbi4KClRoZSBmb2xsb3dpbmcgcGx1Z2lucyBoYXZlIGJlZW4gcmVtb3ZlZCAodGhpcmQtcGFydGllcyBhcmUgZnJlZSB0byByZS1pbXBsZW1lbnQKdGhlc2UgaWYgbmVlZGVkKToKCi0gYEd1enpsZUh0dHBcUGx1Z2luXEFzeW5jYCBoYXMgYmVlbiByZW1vdmVkLgotIGBHdXp6bGVIdHRwXFBsdWdpblxDdXJsQXV0aGAgaGFzIGJlZW4gcmVtb3ZlZC4KLSBgR3V6emxlSHR0cFxQbHVnaW5cRXJyb3JSZXNwb25zZVxFcnJvclJlc3BvbnNlUGx1Z2luYCBoYXMgYmVlbiByZW1vdmVkLiBUaGlzCiAgZnVuY3Rpb25hbGl0eSBzaG91bGQgaW5zdGVhZCBiZSBpbXBsZW1lbnRlZCB3aXRoIGV2ZW50IGxpc3RlbmVycyB0aGF0IG9jY3VyCiAgYWZ0ZXIgbm9ybWFsIHJlc3BvbnNlIHBhcnNpbmcgb2NjdXJzIGluIHRoZSBndXp6bGUvY29tbWFuZCBwYWNrYWdlLgoKVGhlIGZvbGxvd2luZyBwbHVnaW5zIGFyZSBub3QgcGFydCBvZiB0aGUgY29yZSBHdXp6bGUgcGFja2FnZSwgYnV0IGFyZSBwcm92aWRlZAppbiBzZXBhcmF0ZSByZXBvc2l0b3JpZXM6CgotIGBHdXp6bGVcSHR0cFxQbHVnaW5cQmFja29mZlBsdWdpbmAgaGFzIGJlZW4gcmV3cml0dGVuIHRvIGJlIG11Y2ggc2ltcGxlcgogIHRvIGJ1aWxkIGN1c3RvbSByZXRyeSBwb2xpY2llcyB1c2luZyBzaW1wbGUgZnVuY3Rpb25zIHJhdGhlciB0aGFuIHZhcmlvdXMKICBjaGFpbmVkIGNsYXNzZXMuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9yZXRyeS1zdWJzY3JpYmVyCi0gYEd1enpsZVxIdHRwXFBsdWdpblxDYWNoZVxDYWNoZVBsdWdpbmAgaGFzIG1vdmVkIHRvCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9jYWNoZS1zdWJzY3JpYmVyCi0gYEd1enpsZVxIdHRwXFBsdWdpblxMb2dcTG9nUGx1Z2luYCBoYXMgbW92ZWQgdG8KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2xvZy1zdWJzY3JpYmVyCi0gYEd1enpsZVxIdHRwXFBsdWdpblxNZDVcTWQ1UGx1Z2luYCBoYXMgbW92ZWQgdG8KICBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL21lc3NhZ2UtaW50ZWdyaXR5LXN1YnNjcmliZXIKLSBgR3V6emxlXEh0dHBcUGx1Z2luXE1vY2tcTW9ja1BsdWdpbmAgaGFzIG1vdmVkIHRvCiAgYEd1enpsZUh0dHBcU3Vic2NyaWJlclxNb2NrU3Vic2NyaWJlcmAuCi0gYEd1enpsZVxIdHRwXFBsdWdpblxPYXV0aFxPYXV0aFBsdWdpbmAgaGFzIG1vdmVkIHRvCiAgaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9vYXV0aC1zdWJzY3JpYmVyCgojIyBTZXJ2aWNlCgpUaGUgc2VydmljZSBkZXNjcmlwdGlvbiBsYXllciBvZiBHdXp6bGUgaGFzIG1vdmVkIGludG8gdHdvIHNlcGFyYXRlIHBhY2thZ2VzOgoKLSBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL2NvbW1hbmQgUHJvdmlkZXMgYSBoaWdoIGxldmVsIGFic3RyYWN0aW9uIG92ZXIgd2ViCiAgc2VydmljZXMgYnkgcmVwcmVzZW50aW5nIHdlYiBzZXJ2aWNlIG9wZXJhdGlvbnMgdXNpbmcgY29tbWFuZHMuCi0gaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9ndXp6bGUtc2VydmljZXMgUHJvdmlkZXMgYW4gaW1wbGVtZW50YXRpb24gb2YKICBndXp6bGUvY29tbWFuZCB0aGF0IHByb3ZpZGVzIHJlcXVlc3Qgc2VyaWFsaXphdGlvbiBhbmQgcmVzcG9uc2UgcGFyc2luZyB1c2luZwogIEd1enpsZSBzZXJ2aWNlIGRlc2NyaXB0aW9ucy4KCiMjIFN0cmVhbQoKU3RyZWFtIGhhdmUgbW92ZWQgdG8gYSBzZXBhcmF0ZSBwYWNrYWdlIGF2YWlsYWJsZSBhdApodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3N0cmVhbXMuCgpgR3V6emxlXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2VgIGhhcyBiZWVuIGdpdmVuIGEgbGFyZ2UgdXBkYXRlIHRvIGNsZWFubHkgdGFrZQpvbiB0aGUgcmVzcG9uc2liaWxpdGllcyBvZiBgR3V6emxlXEh0dHBcRW50aXR5Qm9keWAgYW5kCmBHdXp6bGVcSHR0cFxFbnRpdHlCb2R5SW50ZXJmYWNlYCBub3cgdGhhdCB0aGV5IGhhdmUgYmVlbiByZW1vdmVkLiBUaGUgbnVtYmVyCm9mIG1ldGhvZHMgaW1wbGVtZW50ZWQgYnkgdGhlIGBTdHJlYW1JbnRlcmZhY2VgIGhhcyBiZWVuIGRyYXN0aWNhbGx5IHJlZHVjZWQgdG8KYWxsb3cgZGV2ZWxvcGVycyB0byBtb3JlIGVhc2lseSBleHRlbmQgYW5kIGRlY29yYXRlIHN0cmVhbSBiZWhhdmlvci4KCiMjIFJlbW92ZWQgbWV0aG9kcyBmcm9tIFN0cmVhbUludGVyZmFjZQoKLSBgZ2V0U3RyZWFtYCBhbmQgYHNldFN0cmVhbWAgaGF2ZSBiZWVuIHJlbW92ZWQgdG8gYmV0dGVyIGVuY2Fwc3VsYXRlIHN0cmVhbXMuCi0gYGdldE1ldGFkYXRhYCBhbmQgYHNldE1ldGFkYXRhYCBoYXZlIGJlZW4gcmVtb3ZlZCBpbiBmYXZvciBvZgogIGBHdXp6bGVIdHRwXFN0cmVhbVxNZXRhZGF0YVN0cmVhbUludGVyZmFjZWAuCi0gYGdldFdyYXBwZXJgLCBgZ2V0V3JhcHBlckRhdGFgLCBgZ2V0U3RyZWFtVHlwZWAsIGFuZCBgZ2V0VXJpYCBoYXZlIGFsbCBiZWVuCiAgcmVtb3ZlZC4gVGhpcyBkYXRhIGlzIGFjY2Vzc2libGUgd2hlbgogIHVzaW5nIHN0cmVhbXMgdGhhdCBpbXBsZW1lbnQgYEd1enpsZUh0dHBcU3RyZWFtXE1ldGFkYXRhU3RyZWFtSW50ZXJmYWNlYC4KLSBgcmV3aW5kYCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgYHNlZWsoMClgIGZvciBhIHNpbWlsYXIgYmVoYXZpb3IuCgojIyBSZW5hbWVkIG1ldGhvZHMKCi0gYGRldGFjaFN0cmVhbWAgaGFzIGJlZW4gcmVuYW1lZCB0byBgZGV0YWNoYC4KLSBgZmVvZmAgaGFzIGJlZW4gcmVuYW1lZCB0byBgZW9mYC4KLSBgZnRlbGxgIGhhcyBiZWVuIHJlbmFtZWQgdG8gYHRlbGxgLgotIGByZWFkTGluZWAgaGFzIG1vdmVkIGZyb20gYW4gaW5zdGFuY2UgbWV0aG9kIHRvIGEgc3RhdGljIGNsYXNzIG1ldGhvZCBvZgogIGBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW1gLgoKIyMgTWV0YWRhdGEgc3RyZWFtcwoKYEd1enpsZUh0dHBcU3RyZWFtXE1ldGFkYXRhU3RyZWFtSW50ZXJmYWNlYCBoYXMgYmVlbiBhZGRlZCB0byBkZW5vdGUgc3RyZWFtcwp0aGF0IGNvbnRhaW4gYWRkaXRpb25hbCBtZXRhZGF0YSBhY2Nlc3NpYmxlIHZpYSBgZ2V0TWV0YWRhdGEoKWAuCmBHdXp6bGVIdHRwXFN0cmVhbVxTdHJlYW1JbnRlcmZhY2U6OmdldE1ldGFkYXRhYCBhbmQKYEd1enpsZUh0dHBcU3RyZWFtXFN0cmVhbUludGVyZmFjZTo6c2V0TWV0YWRhdGFgIGhhdmUgYmVlbiByZW1vdmVkLgoKIyMgU3RyZWFtUmVxdWVzdEZhY3RvcnkKClRoZSBlbnRpcmUgY29uY2VwdCBvZiB0aGUgU3RyZWFtUmVxdWVzdEZhY3RvcnkgaGFzIGJlZW4gcmVtb3ZlZC4gVGhlIHdheSB0aGlzCndhcyB1c2VkIGluIEd1enpsZSAzIGJyb2tlIHRoZSBhY3R1YWwgaW50ZXJmYWNlIG9mIHNlbmRpbmcgc3RyZWFtaW5nIHJlcXVlc3RzCihpbnN0ZWFkIG9mIGdldHRpbmcgYmFjayBhIFJlc3BvbnNlLCB5b3UgZ290IGEgU3RyZWFtSW50ZXJmYWNlKS4gU3RyZWFtaW5nClBIUCByZXF1ZXN0cyBhcmUgbm93IGltcGxlbWVudGVkIHRocm91Z2ggdGhlIGBHdXp6bGVIdHRwXEFkYXB0ZXJcU3RyZWFtQWRhcHRlcmAuCgozLjYgdG8gMy43Ci0tLS0tLS0tLS0KCiMjIyBEZXByZWNhdGlvbnMKCi0gWW91IGNhbiBub3cgZW5hYmxlIEVfVVNFUl9ERVBSRUNBVEVEIHdhcm5pbmdzIHRvIHNlZSBpZiB5b3UgYXJlIHVzaW5nIGFueSBkZXByZWNhdGVkIG1ldGhvZHMuOgoKYGBgcGhwClxHdXp6bGVcQ29tbW9uXFZlcnNpb246OiRlbWl0V2FybmluZ3MgPSB0cnVlOwpgYGAKClRoZSBmb2xsb3dpbmcgQVBJcyBhbmQgb3B0aW9ucyBoYXZlIGJlZW4gbWFya2VkIGFzIGRlcHJlY2F0ZWQ6CgotIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0Ojppc1Jlc3BvbnNlQm9keVJlcGVhdGFibGUoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIGAkcmVxdWVzdC0+Z2V0UmVzcG9uc2VCb2R5KCktPmlzUmVwZWF0YWJsZSgpYCBpbnN0ZWFkLgotIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpjYW5DYWNoZSgpYCBhcyBkZXByZWNhdGVkLiBVc2UgYEd1enpsZVxQbHVnaW5cQ2FjaGVcRGVmYXVsdENhbkNhY2hlU3RyYXRlZ3ktPmNhbkNhY2hlUmVxdWVzdCgpYCBpbnN0ZWFkLgotIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpjYW5DYWNoZSgpYCBhcyBkZXByZWNhdGVkLiBVc2UgYEd1enpsZVxQbHVnaW5cQ2FjaGVcRGVmYXVsdENhbkNhY2hlU3RyYXRlZ3ktPmNhbkNhY2hlUmVxdWVzdCgpYCBpbnN0ZWFkLgotIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0OjpzZXRJc1JlZGlyZWN0KClgIGFzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgSGlzdG9yeVBsdWdpbiBpbnN0ZWFkLgotIE1hcmtlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0Ojppc1JlZGlyZWN0KClgIGFzIGRlcHJlY2F0ZWQuIFVzZSB0aGUgSGlzdG9yeVBsdWdpbiBpbnN0ZWFkLgotIE1hcmtlZCBgR3V6emxlXENhY2hlXENhY2hlQWRhcHRlckZhY3Rvcnk6OmZhY3RvcnkoKWAgYXMgZGVwcmVjYXRlZAotIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjplbmFibGVNYWdpY01ldGhvZHMoKWAgYXMgZGVwcmVjYXRlZC4gTWFnaWMgbWV0aG9kcyBjYW4gbm8gbG9uZ2VyIGJlIGRpc2FibGVkIG9uIGEgR3V6emxlXFNlcnZpY2VcQ2xpZW50LgotIE1hcmtlZCBgR3V6emxlXFBhcnNlclxVcmxcVXJsUGFyc2VyYCBhcyBkZXByZWNhdGVkLiBKdXN0IHVzZSBQSFAncyBgcGFyc2VfdXJsKClgIGFuZCBwZXJjZW50IGVuY29kZSB5b3VyIFVURi04LgotIE1hcmtlZCBgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjppbmplY3QoKWAgYXMgZGVwcmVjYXRlZC4KLSBNYXJrZWQgYEd1enpsZVxQbHVnaW5cQ3VybEF1dGhcQ3VybEF1dGhQbHVnaW5gIGFzIGRlcHJlY2F0ZWQuIFVzZQogIGAkY2xpZW50LT5nZXRDb25maWcoKS0+c2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2F1dGgnLCBhcnJheSgndXNlcicsICdwYXNzJywgJ0Jhc2ljfERpZ2VzdHxOVExNfEFueScpKTtgIG9yCiAgYCRjbGllbnQtPnNldERlZmF1bHRPcHRpb24oJ2F1dGgnLCBhcnJheSgndXNlcicsICdwYXNzJywgJ0Jhc2ljfERpZ2VzdHxOVExNfEFueScpKTtgCgozLjcgaW50cm9kdWNlcyBgcmVxdWVzdC5vcHRpb25zYCBhcyBhIHBhcmFtZXRlciBmb3IgYSBjbGllbnQgY29uZmlndXJhdGlvbiBhbmQgYXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdG8gYWxsIGNyZWF0aW9uYWwKcmVxdWVzdCBtZXRob2RzLiBXaGVuIHBhaXJlZCB3aXRoIGEgY2xpZW50J3MgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgdGhlc2Ugb3B0aW9ucyBhbGxvdyB5b3UgdG8gc3BlY2lmeSBkZWZhdWx0IHNldHRpbmdzCmZvciB2YXJpb3VzIGFzcGVjdHMgb2YgYSByZXF1ZXN0LiBCZWNhdXNlIHRoZXNlIG9wdGlvbnMgbWFrZSBvdGhlciBwcmV2aW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVkdW5kYW50LCBzZXZlcmFsCmNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgbWV0aG9kcyBvZiBhIGNsaWVudCBhbmQgQWJzdHJhY3RDb21tYW5kIGhhdmUgYmVlbiBkZXByZWNhdGVkLgoKLSBNYXJrZWQgYEd1enpsZVxTZXJ2aWNlXENsaWVudDo6Z2V0RGVmYXVsdEhlYWRlcnMoKWAgYXMgZGVwcmVjYXRlZC4gVXNlIGAkY2xpZW50LT5nZXREZWZhdWx0T3B0aW9uKCdoZWFkZXJzJylgLgotIE1hcmtlZCBgR3V6emxlXFNlcnZpY2VcQ2xpZW50OjpzZXREZWZhdWx0SGVhZGVycygpYCBhcyBkZXByZWNhdGVkLiBVc2UgYCRjbGllbnQtPnNldERlZmF1bHRPcHRpb24oJ2hlYWRlcnMve2hlYWRlcl9uYW1lfScsICd2YWx1ZScpYC4KLSBNYXJrZWQgJ3JlcXVlc3QucGFyYW1zJyBmb3IgYEd1enpsZVxIdHRwXENsaWVudGAgYXMgZGVwcmVjYXRlZC4gVXNlIGAkY2xpZW50LT5zZXREZWZhdWx0T3B0aW9uKCdwYXJhbXMve3BhcmFtX25hbWV9JywgJ3ZhbHVlJylgCi0gTWFya2VkICdjb21tYW5kLmhlYWRlcnMnLCAnY29tbWFuZC5yZXNwb25zZV9ib2R5JyBhbmQgJ2NvbW1hbmQub25fY29tcGxldGUnIGFzIGRlcHJlY2F0ZWQgZm9yIEFic3RyYWN0Q29tbWFuZC4gVGhlc2Ugd2lsbCB3b3JrIHRocm91Z2ggR3V6emxlIDQuMAoKICAgICAgICAkY29tbWFuZCA9ICRjbGllbnQtPmdldENvbW1hbmQoJ2ZvbycsIGFycmF5KAogICAgICAgICAgICAnY29tbWFuZC5oZWFkZXJzJyA9PiBhcnJheSgnVGVzdCcgPT4gJzEyMycpLAogICAgICAgICAgICAnY29tbWFuZC5yZXNwb25zZV9ib2R5JyA9PiAnL3BhdGgvdG8vZmlsZScKICAgICAgICApKTsKCiAgICAgICAgLy8gU2hvdWxkIGJlIGNoYW5nZWQgdG86CgogICAgICAgICRjb21tYW5kID0gJGNsaWVudC0+Z2V0Q29tbWFuZCgnZm9vJywgYXJyYXkoCiAgICAgICAgICAgICdjb21tYW5kLnJlcXVlc3Rfb3B0aW9ucycgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAnaGVhZGVycycgPT4gYXJyYXkoJ1Rlc3QnID0+ICcxMjMnKSwKICAgICAgICAgICAgICAgICdzYXZlX2FzJyA9PiAnL3BhdGgvdG8vZmlsZScKICAgICAgICAgICAgKQogICAgICAgICkpOwoKIyMjIEludGVyZmFjZSBjaGFuZ2VzCgpBZGRpdGlvbnMgYW5kIGNoYW5nZXMgKHlvdSB3aWxsIG5lZWQgdG8gdXBkYXRlIGFueSBpbXBsZW1lbnRhdGlvbnMgb3Igc3ViY2xhc3NlcyB5b3UgbWF5IGhhdmUgY3JlYXRlZCk6CgotIEFkZGVkIGFuIGAkb3B0aW9uc2AgYXJndW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgZm9sbG93aW5nIG1ldGhvZHMgb2YgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZWA6CiAgY3JlYXRlUmVxdWVzdCwgaGVhZCwgZGVsZXRlLCBwdXQsIHBhdGNoLCBwb3N0LCBvcHRpb25zLCBwcmVwYXJlUmVxdWVzdAotIEFkZGVkIGFuIGAkb3B0aW9uc2AgYXJndW1lbnQgdG8gdGhlIGVuZCBvZiBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0XFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlOjpjcmVhdGVSZXF1ZXN0KClgCi0gQWRkZWQgYW4gYGFwcGx5T3B0aW9ucygpYCBtZXRob2QgdG8gYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdFxSZXF1ZXN0RmFjdG9yeUludGVyZmFjZWAKLSBDaGFuZ2VkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldCgkdXJpID0gbnVsbCwgJGhlYWRlcnMgPSBudWxsLCAkYm9keSA9IG51bGwpYCB0bwogIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldCgkdXJpID0gbnVsbCwgJGhlYWRlcnMgPSBudWxsLCAkb3B0aW9ucyA9IGFycmF5KCkpYC4gWW91IGNhbiBzdGlsbCBwYXNzIGluIGEKICByZXNvdXJjZSwgc3RyaW5nLCBvciBFbnRpdHlCb2R5IGludG8gdGhlICRvcHRpb25zIHBhcmFtZXRlciB0byBzcGVjaWZ5IHRoZSBkb3dubG9hZCBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UuCi0gQ2hhbmdlZCBgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjpfX2NvbnN0cnVjdCgkZGF0YSlgIHRvIG5vIGxvbmdlciBhY2NlcHRzIGEgbnVsbCB2YWx1ZSBmb3IgYCRkYXRhYCBidXQgYQogIGRlZmF1bHQgYGFycmF5KClgCi0gQWRkZWQgYEd1enpsZVxTdHJlYW1cU3RyZWFtSW50ZXJmYWNlOjppc1JlcGVhdGFibGVgCi0gTWFkZSBgR3V6emxlXEh0dHBcQ2xpZW50OjpleHBhbmRUZW1wbGF0ZWAgYW5kIGBnZXRVcmlUZW1wbGF0ZWAgcHJvdGVjdGVkIG1ldGhvZHMuCgpUaGUgZm9sbG93aW5nIG1ldGhvZHMgd2VyZSByZW1vdmVkIGZyb20gaW50ZXJmYWNlcy4gQWxsIG9mIHRoZXNlIG1ldGhvZHMgYXJlIHN0aWxsIGF2YWlsYWJsZSBpbiB0aGUgY29uY3JldGUgY2xhc3Nlcwp0aGF0IGltcGxlbWVudCB0aGVtLCBidXQgeW91IHNob3VsZCB1cGRhdGUgeW91ciBjb2RlIHRvIHVzZSBhbHRlcm5hdGl2ZSBtZXRob2RzOgoKLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OnNldERlZmF1bHRIZWFkZXJzKCkuIFVzZQogIGAkY2xpZW50LT5nZXRDb25maWcoKS0+c2V0UGF0aCgncmVxdWVzdC5vcHRpb25zL2hlYWRlcnMve2hlYWRlcl9uYW1lfScsICd2YWx1ZScpYC4gb3IKICBgJGNsaWVudC0+Z2V0Q29uZmlnKCktPnNldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzJywgYXJyYXkoJ2hlYWRlcl9uYW1lJyA9PiAndmFsdWUnKSlgIG9yCiAgYCRjbGllbnQtPnNldERlZmF1bHRPcHRpb24oJ2hlYWRlcnMve2hlYWRlcl9uYW1lfScsICd2YWx1ZScpYC4gb3IKICBgJGNsaWVudC0+c2V0RGVmYXVsdE9wdGlvbignaGVhZGVycycsIGFycmF5KCdoZWFkZXJfbmFtZScgPT4gJ3ZhbHVlJykpYC4KLSBSZW1vdmVkIGBHdXp6bGVcSHR0cFxDbGllbnRJbnRlcmZhY2U6OmdldERlZmF1bHRIZWFkZXJzKCkuIFVzZSBgJGNsaWVudC0+Z2V0Q29uZmlnKCktPmdldFBhdGgoJ3JlcXVlc3Qub3B0aW9ucy9oZWFkZXJzJylgLgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6ZXhwYW5kVGVtcGxhdGUoKWAuIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0UmVxdWVzdEZhY3RvcnkoKWAuIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6Z2V0Q3VybE11bHRpKClgLiBUaGlzIGlzIGEgdmVyeSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjpjYW5DYWNoZWAuIFVzZSB0aGUgQ2FjaGVQbHVnaW4uCi0gUmVtb3ZlZCBgR3V6emxlXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOjpzZXRJc1JlZGlyZWN0YC4gVXNlIHRoZSBIaXN0b3J5UGx1Z2luLgotIFJlbW92ZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6aXNSZWRpcmVjdGAuIFVzZSB0aGUgSGlzdG9yeVBsdWdpbi4KCiMjIyBDYWNoZSBwbHVnaW4gYnJlYWtpbmcgY2hhbmdlcwoKLSBDYWNoZUtleVByb3ZpZGVySW50ZXJmYWNlIGFuZCBEZWZhdWx0Q2FjaGVLZXlQcm92aWRlciBhcmUgbm8gbG9uZ2VyIHVzZWQuIEFsbCBvZiB0aGlzIGxvZ2ljIGlzIGhhbmRsZWQgaW4gYQogIENhY2hlU3RvcmFnZUludGVyZmFjZS4gVGhlc2UgdHdvIG9iamVjdHMgYW5kIGludGVyZmFjZSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4KLSBBbHdheXMgc2V0dGluZyBYLWNhY2hlIGhlYWRlcnMgb24gY2FjaGVkIHJlc3BvbnNlcwotIERlZmF1bHQgY2FjaGUgVFRMcyBhcmUgbm93IGhhbmRsZWQgYnkgdGhlIENhY2hlU3RvcmFnZUludGVyZmFjZSBvZiBhIENhY2hlUGx1Z2luCi0gYENhY2hlU3RvcmFnZUludGVyZmFjZTo6Y2FjaGUoJGtleSwgUmVzcG9uc2UgJHJlc3BvbnNlLCAkdHRsID0gbnVsbClgIGhhcyBjaGFuZ2VkIHRvIGBjYWNoZShSZXF1ZXN0SW50ZXJmYWNlCiAgJHJlcXVlc3QsIFJlc3BvbnNlICRyZXNwb25zZSk7YAotIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmZldGNoKCRrZXkpYCBoYXMgY2hhbmdlZCB0byBgZmV0Y2goUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCk7YAotIGBDYWNoZVN0b3JhZ2VJbnRlcmZhY2U6OmRlbGV0ZSgka2V5KWAgaGFzIGNoYW5nZWQgdG8gYGRlbGV0ZShSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0KTtgCi0gQWRkZWQgYENhY2hlU3RvcmFnZUludGVyZmFjZTo6cHVyZ2UoJHVybClgCi0gYERlZmF1bHRSZXZhbGlkYXRpb246Ol9fY29uc3RydWN0KENhY2hlS2V5UHJvdmlkZXJJbnRlcmZhY2UgJGNhY2hlS2V5LCBDYWNoZVN0b3JhZ2VJbnRlcmZhY2UgJGNhY2hlLCBDYWNoZVBsdWdpbgogICRwbHVnaW4pYCBoYXMgY2hhbmdlZCB0byBgRGVmYXVsdFJldmFsaWRhdGlvbjo6X19jb25zdHJ1Y3QoQ2FjaGVTdG9yYWdlSW50ZXJmYWNlICRjYWNoZSwKICBDYW5DYWNoZVN0cmF0ZWd5SW50ZXJmYWNlICRjYW5DYWNoZSA9IG51bGwpYAotIEFkZGVkIGBSZXZhbGlkYXRpb25JbnRlcmZhY2U6OnNob3VsZFJldmFsaWRhdGUoUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdCwgUmVzcG9uc2UgJHJlc3BvbnNlKWAKCjMuNSB0byAzLjYKLS0tLS0tLS0tLQoKKiBNaXhlZCBjYXNpbmcgb2YgaGVhZGVycyBhcmUgbm93IGZvcmNlZCB0byBiZSBhIHNpbmdsZSBjb25zaXN0ZW50IGNhc2luZyBhY3Jvc3MgYWxsIHZhbHVlcyBmb3IgdGhhdCBoZWFkZXIuCiogTWVzc2FnZXMgaW50ZXJuYWxseSB1c2UgYSBIZWFkZXJDb2xsZWN0aW9uIG9iamVjdCB0byBkZWxlZ2F0ZSBoYW5kbGluZyBjYXNlLWluc2Vuc2l0aXZlIGhlYWRlciByZXNvbHV0aW9uCiogUmVtb3ZlZCB0aGUgd2hvbGUgY2hhbmdlZEhlYWRlcigpIGZ1bmN0aW9uIHN5c3RlbSBvZiBtZXNzYWdlcyBiZWNhdXNlIGFsbCBoZWFkZXIgY2hhbmdlcyBub3cgZ28gdGhyb3VnaCBhZGRIZWFkZXIoKS4KICBGb3IgZXhhbXBsZSwgc2V0SGVhZGVyKCkgZmlyc3QgcmVtb3ZlcyB0aGUgaGVhZGVyIHVzaW5nIHVuc2V0IG9uIGEgSGVhZGVyQ29sbGVjdGlvbiBhbmQgdGhlbiBjYWxscyBhZGRIZWFkZXIoKS4KICBLZWVwaW5nIHRoZSBIb3N0IGhlYWRlciBhbmQgVVJMIGhvc3QgaW4gc3luYyBpcyBub3cgaGFuZGxlZCBieSBvdmVycmlkaW5nIHRoZSBhZGRIZWFkZXIgbWV0aG9kIGluIFJlcXVlc3QuCiogU3BlY2lmaWMgaGVhZGVyIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgY3JlYXRlZCBmb3IgY29tcGxleCBoZWFkZXJzLiBXaGVuIGEgbWVzc2FnZSBjcmVhdGVzIGEgaGVhZGVyLCBpdCB1c2VzIGEKICBIZWFkZXJGYWN0b3J5IHdoaWNoIGNhbiBtYXAgc3BlY2lmaWMgaGVhZGVycyB0byBzcGVjaWZpYyBoZWFkZXIgY2xhc3Nlcy4gVGhlcmUgaXMgbm93IGEgTGluayBoZWFkZXIgYW5kCiAgQ2FjaGVDb250cm9sIGhlYWRlciBpbXBsZW1lbnRhdGlvbi4KKiBNb3ZlZCBnZXRMaW5rcygpIGZyb20gUmVzcG9uc2UgdG8ganVzdCBiZSB1c2VkIG9uIGEgTGluayBoZWFkZXIgb2JqZWN0LgoKSWYgeW91IHByZXZpb3VzbHkgcmVsaWVkIG9uIEd1enpsZVxIdHRwXE1lc3NhZ2VcSGVhZGVyOjpyYXcoKSwgdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIHVwZGF0ZSB5b3VyIGNvZGUgdG8gdXNlIHRoZQpIZWFkZXJJbnRlcmZhY2UgKGUuZy4gdG9BcnJheSgpLCBnZXRBbGwoKSwgZXRjLikuCgojIyMgSW50ZXJmYWNlIGNoYW5nZXMKCiogUmVtb3ZlZCBmcm9tIGludGVyZmFjZTogR3V6emxlXEh0dHBcQ2xpZW50SW50ZXJmYWNlOjpzZXRVcmlUZW1wbGF0ZQoqIFJlbW92ZWQgZnJvbSBpbnRlcmZhY2U6IEd1enpsZVxIdHRwXENsaWVudEludGVyZmFjZTo6c2V0Q3VybE11bHRpKCkKKiBSZW1vdmVkIEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdDo6cmVjZWl2ZWRSZXF1ZXN0SGVhZGVyKCkgYW5kIGltcGxlbWVudGVkIHRoaXMgZnVuY3Rpb25hbGl0eSBpbgogIEd1enpsZVxIdHRwXEN1cmxcUmVxdWVzdE1lZGlhdG9yCiogUmVtb3ZlZCB0aGUgb3B0aW9uYWwgJGFzU3RyaW5nIHBhcmFtZXRlciBmcm9tIE1lc3NhZ2VJbnRlcmZhY2U6OmdldEhlYWRlcigpLiBKdXN0IGNhc3QgdGhlIGhlYWRlciB0byBhIHN0cmluZy4KKiBSZW1vdmVkIHRoZSBvcHRpb25hbCAkdHJ5Q2h1bmtlZFRyYW5zZmVyIG9wdGlvbiBmcm9tIEd1enpsZVxIdHRwXE1lc3NhZ2VcRW50aXR5RW5jbG9zaW5nUmVxdWVzdEludGVyZmFjZQoqIFJlbW92ZWQgdGhlICRhc09iamVjdHMgYXJndW1lbnQgZnJvbSBHdXp6bGVcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2U6OmdldEhlYWRlcnMoKQoKIyMjIFJlbW92ZWQgZGVwcmVjYXRlZCBmdW5jdGlvbnMKCiogUmVtb3ZlZCBHdXp6bGVcUGFyc2VyXFBhcnNlclJlZ2lzdGVyOjpnZXQoKS4gVXNlIGdldFBhcnNlcigpCiogUmVtb3ZlZCBHdXp6bGVcUGFyc2VyXFBhcnNlclJlZ2lzdGVyOjpzZXQoKS4gVXNlIHJlZ2lzdGVyUGFyc2VyKCkuCgojIyMgRGVwcmVjYXRpb25zCgoqIFRoZSBhYmlsaXR5IHRvIGNhc2UtaW5zZW5zaXRpdmVseSBzZWFyY2ggZm9yIGhlYWRlciB2YWx1ZXMKKiBHdXp6bGVcSHR0cFxNZXNzYWdlXEhlYWRlcjo6aGFzRXhhY3RIZWFkZXIKKiBHdXp6bGVcSHR0cFxNZXNzYWdlXEhlYWRlcjo6cmF3LiBVc2UgZ2V0QWxsKCkKKiBEZXByZWNhdGVkIGNhY2hlIGNvbnRyb2wgc3BlY2lmaWMgbWV0aG9kcyBvbiBHdXp6bGVcSHR0cFxNZXNzYWdlXEFic3RyYWN0TWVzc2FnZS4gVXNlIHRoZSBDYWNoZUNvbnRyb2wgaGVhZGVyIG9iamVjdAogIGluc3RlYWQuCgojIyMgT3RoZXIgY2hhbmdlcwoKKiBBbGwgcmVzcG9uc2UgaGVhZGVyIGhlbHBlciBmdW5jdGlvbnMgcmV0dXJuIGEgc3RyaW5nIHJhdGhlciB0aGFuIG1peGluZyBIZWFkZXIgb2JqZWN0cyBhbmQgc3RyaW5ncyBpbmNvbnNpc3RlbnRseQoqIFJlbW92ZWQgY1VSTCBibGFja2xpc3Qgc3VwcG9ydC4gVGhpcyBpcyBubyBsb25nZXIgbmVjZXNzYXJ5IG5vdyB0aGF0IEV4cGVjdCwgQWNjZXB0LCBldGMuIGFyZSBtYW5hZ2VkIGJ5IEd1enpsZQogIGRpcmVjdGx5IHZpYSBpbnRlcmZhY2VzCiogUmVtb3ZlZCB0aGUgaW5qZWN0aW5nIG9mIGEgcmVxdWVzdCBvYmplY3Qgb250byBhIHJlc3BvbnNlIG9iamVjdC4gVGhlIG1ldGhvZHMgdG8gZ2V0IGFuZCBzZXQgYSByZXF1ZXN0IHN0aWxsIGV4aXN0CiAgYnV0IGFyZSBhIG5vLW9wIHVudGlsIHJlbW92ZWQuCiogTW9zdCBjbGFzc2VzIHRoYXQgdXNlZCB0byByZXF1aXJlIGEgYEd1enpsZVxTZXJ2aWNlXENvbW1hbmRcQ29tbWFuZEludGVyZmFjZWAgdHlwZWhpbnQgbm93IHJlcXVlc3QgYQogIGBHdXp6bGVcU2VydmljZVxDb21tYW5kXEFycmF5Q29tbWFuZEludGVyZmFjZWAuCiogQWRkZWQgYEd1enpsZVxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZTo6c3RhcnRSZXNwb25zZSgpYCB0byB0aGUgUmVxdWVzdEludGVyZmFjZSB0byBoYW5kbGUgaW5qZWN0aW5nIGEgcmVzcG9uc2UKICBvbiBhIHJlcXVlc3Qgd2hpbGUgdGhlIHJlcXVlc3QgaXMgc3RpbGwgYmVpbmcgdHJhbnNmZXJyZWQKKiBgR3V6emxlXFNlcnZpY2VcQ29tbWFuZFxDb21tYW5kSW50ZXJmYWNlYCBub3cgZXh0ZW5kcyBmcm9tIFRvQXJyYXlJbnRlcmZhY2UgYW5kIEFycmF5QWNjZXNzCgozLjMgdG8gMy40Ci0tLS0tLS0tLS0KCkJhc2UgVVJMcyBvZiBhIGNsaWVudCBub3cgZm9sbG93IHRoZSBydWxlcyBvZiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIuMiB3aGVuIG1lcmdpbmcgVVJMcy4KCjMuMiB0byAzLjMKLS0tLS0tLS0tLQoKIyMjIFJlc3BvbnNlOjpnZXRFdGFnKCkgcXVvdGUgc3RyaXBwaW5nIHJlbW92ZWQKCmBHdXp6bGVcSHR0cFxNZXNzYWdlXFJlc3BvbnNlOjpnZXRFdGFnKClgIG5vIGxvbmdlciBzdHJpcHMgcXVvdGVzIGFyb3VuZCB0aGUgRVRhZyByZXNwb25zZSBoZWFkZXIKCiMjIyBSZW1vdmVkIGBHdXp6bGVcSHR0cFxVdGlsc2AKClRoZSBgR3V6emxlXEh0dHBcVXRpbHNgIGNsYXNzIHdhcyByZW1vdmVkLiBUaGlzIGNsYXNzIHdhcyBvbmx5IHVzZWQgZm9yIHRlc3RpbmcuCgojIyMgU3RyZWFtIHdyYXBwZXIgYW5kIHR5cGUKCmBHdXp6bGVcU3RyZWFtXFN0cmVhbTo6Z2V0V3JhcHBlcigpYCBhbmQgYEd1enpsZVxTdHJlYW1cU3RyZWFtOjpnZXRTdHJlYW1UeXBlKClgIGFyZSBubyBsb25nZXIgY29udmVydGVkIHRvIGxvd2VyY2FzZS4KCiMjIyBjdXJsLmVtaXRfaW8gYmVjYW1lIGVtaXRfaW8KCkVtaXR0aW5nIElPIGV2ZW50cyBmcm9tIGEgUmVxdWVzdE1lZGlhdG9yIGlzIG5vdyBhIHBhcmFtZXRlciB0aGF0IG11c3QgYmUgc2V0IGluIGEgcmVxdWVzdCdzIGN1cmwgb3B0aW9ucyB1c2luZyB0aGUKJ2VtaXRfaW8nIGtleS4gVGhpcyB3YXMgcHJldmlvdXNseSBzZXQgdW5kZXIgYSByZXF1ZXN0J3MgcGFyYW1ldGVycyB1c2luZyAnY3VybC5lbWl0X2lvJwoKMy4xIHRvIDMuMgotLS0tLS0tLS0tCgojIyMgQ3VybE11bHRpIGlzIG5vIGxvbmdlciByZXVzZWQgZ2xvYmFsbHkKCkJlZm9yZSAzLjIsIHRoZSBzYW1lIEN1cmxNdWx0aSBvYmplY3Qgd2FzIHJldXNlZCBnbG9iYWxseSBmb3IgZWFjaCBjbGllbnQuIFRoaXMgY2FuIGNhdXNlIGlzc3VlIHdoZXJlIHBsdWdpbnMgYWRkZWQKdG8gYSBzaW5nbGUgY2xpZW50IGNhbiBwb2xsdXRlIHJlcXVlc3RzIGRpc3BhdGNoZWQgZnJvbSBvdGhlciBjbGllbnRzLgoKSWYgeW91IHN0aWxsIHdpc2ggdG8gcmV1c2UgdGhlIHNhbWUgQ3VybE11bHRpIG9iamVjdCB3aXRoIGVhY2ggY2xpZW50LCB0aGVuIHlvdSBjYW4gYWRkIGEgbGlzdGVuZXIgdG8gdGhlClNlcnZpY2VCdWlsZGVyJ3MgYHNlcnZpY2VfYnVpbGRlci5jcmVhdGVfY2xpZW50YCBldmVudCB0byBpbmplY3QgYSBjdXN0b20gQ3VybE11bHRpIG9iamVjdCBpbnRvIGVhY2ggY2xpZW50IGFzIGl0IGlzCmNyZWF0ZWQuCgpgYGBwaHAKJG11bHRpID0gbmV3IEd1enpsZVxIdHRwXEN1cmxcQ3VybE11bHRpKCk7CiRidWlsZGVyID0gR3V6emxlXFNlcnZpY2VcQnVpbGRlclxTZXJ2aWNlQnVpbGRlcjo6ZmFjdG9yeSgnL3BhdGgvdG8vY29uZmlnLmpzb24nKTsKJGJ1aWxkZXItPmFkZExpc3RlbmVyKCdzZXJ2aWNlX2J1aWxkZXIuY3JlYXRlX2NsaWVudCcsIGZ1bmN0aW9uICgkZXZlbnQpIHVzZSAoJG11bHRpKSB7CiAgICAkZXZlbnRbJ2NsaWVudCddLT5zZXRDdXJsTXVsdGkoJG11bHRpKTsKfQp9KTsKYGBgCgojIyMgTm8gZGVmYXVsdCBwYXRoCgpVUkxzIG5vIGxvbmdlciBoYXZlIGEgZGVmYXVsdCBwYXRoIHZhbHVlIG9mICcvJyBpZiBubyBwYXRoIHdhcyBzcGVjaWZpZWQuCgpCZWZvcmU6CgpgYGBwaHAKJHJlcXVlc3QgPSAkY2xpZW50LT5nZXQoJ2h0dHA6Ly93d3cuZm9vLmNvbScpOwplY2hvICRyZXF1ZXN0LT5nZXRVcmwoKTsKLy8gPj4gaHR0cDovL3d3dy5mb28uY29tLwpgYGAKCkFmdGVyOgoKYGBgcGhwCiRyZXF1ZXN0ID0gJGNsaWVudC0+Z2V0KCdodHRwOi8vd3d3LmZvby5jb20nKTsKZWNobyAkcmVxdWVzdC0+Z2V0VXJsKCk7Ci8vID4+IGh0dHA6Ly93d3cuZm9vLmNvbQpgYGAKCiMjIyBMZXNzIHZlcmJvc2UgQmFkUmVzcG9uc2VFeGNlcHRpb24KClRoZSBleGNlcHRpb24gbWVzc2FnZSBmb3IgYEd1enpsZVxIdHRwXEV4Y2VwdGlvblxCYWRSZXNwb25zZUV4Y2VwdGlvbmAgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBmdWxsIEhUVFAgcmVxdWVzdCBhbmQKcmVzcG9uc2UgaW5mb3JtYXRpb24uIFlvdSBjYW4sIGhvd2V2ZXIsIGdldCBhY2Nlc3MgdG8gdGhlIHJlcXVlc3QgYW5kIHJlc3BvbnNlIG9iamVjdCBieSBjYWxsaW5nIGBnZXRSZXF1ZXN0KClgIG9yCmBnZXRSZXNwb25zZSgpYCBvbiB0aGUgZXhjZXB0aW9uIG9iamVjdC4KCiMjIyBRdWVyeSBwYXJhbWV0ZXIgYWdncmVnYXRpb24KCk11bHRpLXZhbHVlZCBxdWVyeSBwYXJhbWV0ZXJzIGFyZSBubyBsb25nZXIgYWdncmVnYXRlZCB1c2luZyBhIGNhbGxiYWNrIGZ1bmN0aW9uLiBgR3V6emxlXEh0dHBcUXVlcnlgIG5vdyBoYXMgYQpzZXRBZ2dyZWdhdG9yKCkgbWV0aG9kIHRoYXQgYWNjZXB0cyBhIGBHdXp6bGVcSHR0cFxRdWVyeUFnZ3JlZ2F0b3JcUXVlcnlBZ2dyZWdhdG9ySW50ZXJmYWNlYCBvYmplY3QuIFRoaXMgb2JqZWN0IGlzCnJlc3BvbnNpYmxlIGZvciBoYW5kbGluZyB0aGUgYWdncmVnYXRpb24gb2YgbXVsdGktdmFsdWVkIHF1ZXJ5IHN0cmluZyB2YXJpYWJsZXMgaW50byBhIGZsYXR0ZW5lZCBoYXNoLgoKMi44IHRvIDMueAotLS0tLS0tLS0tCgojIyMgR3V6emxlXFNlcnZpY2VcSW5zcGVjdG9yCgpDaGFuZ2UgYFxHdXp6bGVcU2VydmljZVxJbnNwZWN0b3I6OmZyb21Db25maWdgIHRvIGBcR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOjpmcm9tQ29uZmlnYAoKKipCZWZvcmUqKgoKYGBgcGhwCnVzZSBHdXp6bGVcU2VydmljZVxJbnNwZWN0b3I7CgpjbGFzcyBZb3VyQ2xpZW50IGV4dGVuZHMgXEd1enpsZVxTZXJ2aWNlXENsaWVudAp7CiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhY3RvcnkoJGNvbmZpZyA9IGFycmF5KCkpCiAgICB7CiAgICAgICAgJGRlZmF1bHQgPSBhcnJheSgpOwogICAgICAgICRyZXF1aXJlZCA9IGFycmF5KCdiYXNlX3VybCcsICd1c2VybmFtZScsICdhcGlfa2V5Jyk7CiAgICAgICAgJGNvbmZpZyA9IEluc3BlY3Rvcjo6ZnJvbUNvbmZpZygkY29uZmlnLCAkZGVmYXVsdCwgJHJlcXVpcmVkKTsKCiAgICAgICAgJGNsaWVudCA9IG5ldyBzZWxmKAogICAgICAgICAgICAkY29uZmlnLT5nZXQoJ2Jhc2VfdXJsJyksCiAgICAgICAgICAgICRjb25maWctPmdldCgndXNlcm5hbWUnKSwKICAgICAgICAgICAgJGNvbmZpZy0+Z2V0KCdhcGlfa2V5JykKICAgICAgICApOwogICAgICAgICRjbGllbnQtPnNldENvbmZpZygkY29uZmlnKTsKCiAgICAgICAgJGNsaWVudC0+c2V0RGVzY3JpcHRpb24oU2VydmljZURlc2NyaXB0aW9uOjpmYWN0b3J5KF9fRElSX18gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ2NsaWVudC5qc29uJykpOwoKICAgICAgICByZXR1cm4gJGNsaWVudDsKICAgIH0KYGBgCgoqKkFmdGVyKioKCmBgYHBocAp1c2UgR3V6emxlXENvbW1vblxDb2xsZWN0aW9uOwoKY2xhc3MgWW91ckNsaWVudCBleHRlbmRzIFxHdXp6bGVcU2VydmljZVxDbGllbnQKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYWN0b3J5KCRjb25maWcgPSBhcnJheSgpKQogICAgewogICAgICAgICRkZWZhdWx0ID0gYXJyYXkoKTsKICAgICAgICAkcmVxdWlyZWQgPSBhcnJheSgnYmFzZV91cmwnLCAndXNlcm5hbWUnLCAnYXBpX2tleScpOwogICAgICAgICRjb25maWcgPSBDb2xsZWN0aW9uOjpmcm9tQ29uZmlnKCRjb25maWcsICRkZWZhdWx0LCAkcmVxdWlyZWQpOwoKICAgICAgICAkY2xpZW50ID0gbmV3IHNlbGYoCiAgICAgICAgICAgICRjb25maWctPmdldCgnYmFzZV91cmwnKSwKICAgICAgICAgICAgJGNvbmZpZy0+Z2V0KCd1c2VybmFtZScpLAogICAgICAgICAgICAkY29uZmlnLT5nZXQoJ2FwaV9rZXknKQogICAgICAgICk7CiAgICAgICAgJGNsaWVudC0+c2V0Q29uZmlnKCRjb25maWcpOwoKICAgICAgICAkY2xpZW50LT5zZXREZXNjcmlwdGlvbihTZXJ2aWNlRGVzY3JpcHRpb246OmZhY3RvcnkoX19ESVJfXyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnY2xpZW50Lmpzb24nKSk7CgogICAgICAgIHJldHVybiAkY2xpZW50OwogICAgfQpgYGAKCiMjIyBDb252ZXJ0IFhNTCBTZXJ2aWNlIERlc2NyaXB0aW9ucyB0byBKU09OCgoqKkJlZm9yZSoqCgpgYGB4bWwKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPGNsaWVudD4KICAgIDxjb21tYW5kcz4KICAgICAgICA8IS0tIEdyb3VwcyAtLT4KICAgICAgICA8Y29tbWFuZCBuYW1lPSJsaXN0X2dyb3VwcyIgbWV0aG9kPSJHRVQiIHVyaT0iZ3JvdXBzLmpzb24iPgogICAgICAgICAgICA8ZG9jPkdldCBhIGxpc3Qgb2YgZ3JvdXBzPC9kb2M+CiAgICAgICAgPC9jb21tYW5kPgogICAgICAgIDxjb21tYW5kIG5hbWU9InNlYXJjaF9ncm91cHMiIG1ldGhvZD0iR0VUIiB1cmk9J3NlYXJjaC5qc29uP3F1ZXJ5PSJ7e3F1ZXJ5fX0gdHlwZTpncm91cCInPgogICAgICAgICAgICA8ZG9jPlVzZXMgYSBzZWFyY2ggcXVlcnkgdG8gZ2V0IGEgbGlzdCBvZiBncm91cHM8L2RvYz4KICAgICAgICAgICAgPHBhcmFtIG5hbWU9InF1ZXJ5IiB0eXBlPSJzdHJpbmciIHJlcXVpcmVkPSJ0cnVlIiAvPgogICAgICAgIDwvY29tbWFuZD4KICAgICAgICA8Y29tbWFuZCBuYW1lPSJjcmVhdGVfZ3JvdXAiIG1ldGhvZD0iUE9TVCIgdXJpPSJncm91cHMuanNvbiI+CiAgICAgICAgICAgIDxkb2M+Q3JlYXRlIGEgZ3JvdXA8L2RvYz4KICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImRhdGEiIHR5cGU9ImFycmF5IiBsb2NhdGlvbj0iYm9keSIgZmlsdGVycz0ianNvbl9lbmNvZGUiIGRvYz0iR3JvdXAgSlNPTiIvPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0iQ29udGVudC1UeXBlIiBsb2NhdGlvbj0iaGVhZGVyIiBzdGF0aWM9ImFwcGxpY2F0aW9uL2pzb24iLz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgPGNvbW1hbmQgbmFtZT0iZGVsZXRlX2dyb3VwIiBtZXRob2Q9IkRFTEVURSIgdXJpPSJncm91cHMve3tpZH19Lmpzb24iPgogICAgICAgICAgICA8ZG9jPkRlbGV0ZSBhIGdyb3VwIGJ5IElEPC9kb2M+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJpZCIgdHlwZT0iaW50ZWdlciIgcmVxdWlyZWQ9InRydWUiLz4KICAgICAgICA8L2NvbW1hbmQ+CiAgICAgICAgPGNvbW1hbmQgbmFtZT0iZ2V0X2dyb3VwIiBtZXRob2Q9IkdFVCIgdXJpPSJncm91cHMve3tpZH19Lmpzb24iPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0iaWQiIHR5cGU9ImludGVnZXIiIHJlcXVpcmVkPSJ0cnVlIi8+CiAgICAgICAgPC9jb21tYW5kPgogICAgICAgIDxjb21tYW5kIG5hbWU9InVwZGF0ZV9ncm91cCIgbWV0aG9kPSJQVVQiIHVyaT0iZ3JvdXBzL3t7aWR9fS5qc29uIj4KICAgICAgICAgICAgPGRvYz5VcGRhdGUgYSBncm91cDwvZG9jPgogICAgICAgICAgICA8cGFyYW0gbmFtZT0iaWQiIHR5cGU9ImludGVnZXIiIHJlcXVpcmVkPSJ0cnVlIi8+CiAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJkYXRhIiB0eXBlPSJhcnJheSIgbG9jYXRpb249ImJvZHkiIGZpbHRlcnM9Impzb25fZW5jb2RlIiBkb2M9Ikdyb3VwIEpTT04iLz4KICAgICAgICAgICAgPHBhcmFtIG5hbWU9IkNvbnRlbnQtVHlwZSIgbG9jYXRpb249ImhlYWRlciIgc3RhdGljPSJhcHBsaWNhdGlvbi9qc29uIi8+CiAgICAgICAgPC9jb21tYW5kPgogICAgPC9jb21tYW5kcz4KPC9jbGllbnQ+CmBgYAoKKipBZnRlcioqCgpgYGBqc29uCnsKICAgICJuYW1lIjogICAgICAgIlplbmRlc2sgUkVTVCBBUEkgdjIiLAogICAgImFwaVZlcnNpb24iOiAiMjAxMi0xMi0zMSIsCiAgICAiZGVzY3JpcHRpb24iOiJQcm92aWRlcyBhY2Nlc3MgdG8gWmVuZGVzayB2aWV3cywgZ3JvdXBzLCB0aWNrZXRzLCB0aWNrZXQgZmllbGRzLCBhbmQgdXNlcnMiLAogICAgIm9wZXJhdGlvbnMiOiB7CiAgICAgICAgImxpc3RfZ3JvdXBzIjogIHsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJHRVQiLAogICAgICAgICAgICAidXJpIjogICAgICAgImdyb3Vwcy5qc29uIiwKICAgICAgICAgICAgInN1bW1hcnkiOiAgICJHZXQgYSBsaXN0IG9mIGdyb3VwcyIKICAgICAgICB9LAogICAgICAgICJzZWFyY2hfZ3JvdXBzIjp7CiAgICAgICAgICAgICJodHRwTWV0aG9kIjoiR0VUIiwKICAgICAgICAgICAgInVyaSI6ICAgICAgICJzZWFyY2guanNvbj9xdWVyeT1cIntxdWVyeX0gdHlwZTpncm91cFwiIiwKICAgICAgICAgICAgInN1bW1hcnkiOiAgICJVc2VzIGEgc2VhcmNoIHF1ZXJ5IHRvIGdldCBhIGxpc3Qgb2YgZ3JvdXBzIiwKICAgICAgICAgICAgInBhcmFtZXRlcnMiOnsKICAgICAgICAgICAgICAgICJxdWVyeSI6ewogICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiI6ICAgInVyaSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjoiWmVuZGVzayBTZWFyY2ggUXVlcnkiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgInN0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJjcmVhdGVfZ3JvdXAiOiB7CiAgICAgICAgICAgICJodHRwTWV0aG9kIjoiUE9TVCIsCiAgICAgICAgICAgICJ1cmkiOiAgICAgICAiZ3JvdXBzLmpzb24iLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIkNyZWF0ZSBhIGdyb3VwIiwKICAgICAgICAgICAgInBhcmFtZXRlcnMiOnsKICAgICAgICAgICAgICAgICJkYXRhIjogICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogICAiYm9keSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjoiR3JvdXAgSlNPTiIsCiAgICAgICAgICAgICAgICAgICAgImZpbHRlcnMiOiAgICAianNvbl9lbmNvZGUiLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6ICAgdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGUiOnsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiI6ImhlYWRlciIsCiAgICAgICAgICAgICAgICAgICAgInN0YXRpYyI6ICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImRlbGV0ZV9ncm91cCI6IHsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJERUxFVEUiLAogICAgICAgICAgICAidXJpIjogICAgICAgImdyb3Vwcy97aWR9Lmpzb24iLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIkRlbGV0ZSBhIGdyb3VwIiwKICAgICAgICAgICAgInBhcmFtZXRlcnMiOnsKICAgICAgICAgICAgICAgICJpZCI6ewogICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiI6ICAgInVyaSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjoiR3JvdXAgdG8gZGVsZXRlIGJ5IElEIiwKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICAgICAgICJpbnRlZ2VyIiwKICAgICAgICAgICAgICAgICAgICAicmVxdWlyZWQiOiAgIHRydWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgImdldF9ncm91cCI6ICAgIHsKICAgICAgICAgICAgImh0dHBNZXRob2QiOiJHRVQiLAogICAgICAgICAgICAidXJpIjogICAgICAgImdyb3Vwcy97aWR9Lmpzb24iLAogICAgICAgICAgICAic3VtbWFyeSI6ICAgIkdldCBhIHRpY2tldCIsCiAgICAgICAgICAgICJwYXJhbWV0ZXJzIjp7CiAgICAgICAgICAgICAgICAiaWQiOnsKICAgICAgICAgICAgICAgICAgICAibG9jYXRpb24iOiAgICJ1cmkiLAogICAgICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6Ikdyb3VwIHRvIGdldCBieSBJRCIsCiAgICAgICAgICAgICAgICAgICAgInR5cGUiOiAgICAgICAiaW50ZWdlciIsCiAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVkIjogICB0cnVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgICJ1cGRhdGVfZ3JvdXAiOiB7CiAgICAgICAgICAgICJodHRwTWV0aG9kIjoiUFVUIiwKICAgICAgICAgICAgInVyaSI6ICAgICAgICJncm91cHMve2lkfS5qc29uIiwKICAgICAgICAgICAgInN1bW1hcnkiOiAgICJVcGRhdGUgYSBncm91cCIsCiAgICAgICAgICAgICJwYXJhbWV0ZXJzIjp7CiAgICAgICAgICAgICAgICAiaWQiOiAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogICAidXJpIiwKICAgICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiJHcm91cCB0byB1cGRhdGUgYnkgSUQiLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogICAgICAgImludGVnZXIiLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6ICAgdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJkYXRhIjogICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICAgICAgICJhcnJheSIsCiAgICAgICAgICAgICAgICAgICAgImxvY2F0aW9uIjogICAiYm9keSIsCiAgICAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjoiR3JvdXAgSlNPTiIsCiAgICAgICAgICAgICAgICAgICAgImZpbHRlcnMiOiAgICAianNvbl9lbmNvZGUiLAogICAgICAgICAgICAgICAgICAgICJyZXF1aXJlZCI6ICAgdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICJDb250ZW50LVR5cGUiOnsKICAgICAgICAgICAgICAgICAgICAidHlwZSI6ICAgICJzdHJpbmciLAogICAgICAgICAgICAgICAgICAgICJsb2NhdGlvbiI6ImhlYWRlciIsCiAgICAgICAgICAgICAgICAgICAgInN0YXRpYyI6ICAiYXBwbGljYXRpb24vanNvbiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KfQpgYGAKCiMjIyBHdXp6bGVcU2VydmljZVxEZXNjcmlwdGlvblxTZXJ2aWNlRGVzY3JpcHRpb24KCkNvbW1hbmRzIGFyZSBub3cgY2FsbGVkIE9wZXJhdGlvbnMKCioqQmVmb3JlKioKCmBgYHBocAp1c2UgR3V6emxlXFNlcnZpY2VcRGVzY3JpcHRpb25cU2VydmljZURlc2NyaXB0aW9uOwoKJHNkID0gbmV3IFNlcnZpY2VEZXNjcmlwdGlvbigpOwokc2QtPmdldENvbW1hbmRzKCk7ICAgICAvLyBAcmV0dXJucyBBcGlDb21tYW5kSW50ZXJmYWNlW10KJHNkLT5oYXNDb21tYW5kKCRuYW1lKTsKJHNkLT5nZXRDb21tYW5kKCRuYW1lKTsgLy8gQHJldHVybnMgQXBpQ29tbWFuZEludGVyZmFjZXxudWxsCiRzZC0+YWRkQ29tbWFuZCgkY29tbWFuZCk7IC8vIEBwYXJhbSBBcGlDb21tYW5kSW50ZXJmYWNlICRjb21tYW5kCmBgYAoKKipBZnRlcioqCgpgYGBwaHAKdXNlIEd1enpsZVxTZXJ2aWNlXERlc2NyaXB0aW9uXFNlcnZpY2VEZXNjcmlwdGlvbjsKCiRzZCA9IG5ldyBTZXJ2aWNlRGVzY3JpcHRpb24oKTsKJHNkLT5nZXRPcGVyYXRpb25zKCk7ICAgICAgICAgICAvLyBAcmV0dXJucyBPcGVyYXRpb25JbnRlcmZhY2VbXQokc2QtPmhhc09wZXJhdGlvbigkbmFtZSk7CiRzZC0+Z2V0T3BlcmF0aW9uKCRuYW1lKTsgICAgICAgLy8gQHJldHVybnMgT3BlcmF0aW9uSW50ZXJmYWNlfG51bGwKJHNkLT5hZGRPcGVyYXRpb24oJG9wZXJhdGlvbik7ICAvLyBAcGFyYW0gT3BlcmF0aW9uSW50ZXJmYWNlICRvcGVyYXRpb24KYGBgCgojIyMgR3V6emxlXENvbW1vblxJbmZsZWN0aW9uXEluZmxlY3RvcgoKTmFtZXNwYWNlIGlzIG5vdyBgR3V6emxlXEluZmxlY3Rpb25cSW5mbGVjdG9yYAoKIyMjIEd1enpsZVxIdHRwXFBsdWdpbgoKTmFtZXNwYWNlIGlzIG5vdyBgR3V6emxlXFBsdWdpbmAuIE1hbnkgb3RoZXIgY2hhbmdlcyBvY2N1ciB3aXRoaW4gdGhpcyBuYW1lc3BhY2UgYW5kIGFyZSBkZXRhaWxlZCBpbiB0aGVpciBvd24gc2VjdGlvbnMgYmVsb3cuCgojIyMgR3V6emxlXEh0dHBcUGx1Z2luXExvZ1BsdWdpbiBhbmQgR3V6emxlXENvbW1vblxMb2cKCk5vdyBgR3V6emxlXFBsdWdpblxMb2dcTG9nUGx1Z2luYCBhbmQgYEd1enpsZVxMb2dgIHJlc3BlY3RpdmVseS4KCioqQmVmb3JlKioKCmBgYHBocAp1c2UgR3V6emxlXENvbW1vblxMb2dcQ2xvc3VyZUxvZ0FkYXB0ZXI7CnVzZSBHdXp6bGVcSHR0cFxQbHVnaW5cTG9nUGx1Z2luOwoKLyoqIEB2YXIgXEd1enpsZVxIdHRwXENsaWVudCAqLwokY2xpZW50OwoKLy8gJHZlcmJvc2l0eSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgZGVzaXJlZCBtZXNzYWdlIHZlcmJvc2l0eSBsZXZlbAokY2xpZW50LT5hZGRTdWJzY3JpYmVyKG5ldyBMb2dQbHVnaW4obmV3IENsb3N1cmVMb2dBZGFwdGVyKGZ1bmN0aW9uKCRtKSB7IGVjaG8gJG07IH0sICR2ZXJib3NpdHkgPSBMb2dQbHVnaW46OkxPR19WRVJCT1NFKTsKYGBgCgoqKkFmdGVyKioKCmBgYHBocAp1c2UgR3V6emxlXExvZ1xDbG9zdXJlTG9nQWRhcHRlcjsKdXNlIEd1enpsZVxMb2dcTWVzc2FnZUZvcm1hdHRlcjsKdXNlIEd1enpsZVxQbHVnaW5cTG9nXExvZ1BsdWdpbjsKCi8qKiBAdmFyIFxHdXp6bGVcSHR0cFxDbGllbnQgKi8KJGNsaWVudDsKCi8vICRmb3JtYXQgaXMgYSBzdHJpbmcgaW5kaWNhdGluZyBkZXNpcmVkIG1lc3NhZ2UgZm9ybWF0IC0tIEBzZWUgTWVzc2FnZUZvcm1hdHRlcgokY2xpZW50LT5hZGRTdWJzY3JpYmVyKG5ldyBMb2dQbHVnaW4obmV3IENsb3N1cmVMb2dBZGFwdGVyKGZ1bmN0aW9uKCRtKSB7IGVjaG8gJG07IH0sICRmb3JtYXQgPSBNZXNzYWdlRm9ybWF0dGVyOjpERUJVR19GT1JNQVQpOwpgYGAKCiMjIyBHdXp6bGVcSHR0cFxQbHVnaW5cQ3VybEF1dGhQbHVnaW4KCk5vdyBgR3V6emxlXFBsdWdpblxDdXJsQXV0aFxDdXJsQXV0aFBsdWdpbmAuCgojIyMgR3V6emxlXEh0dHBcUGx1Z2luXEV4cG9uZW50aWFsQmFja29mZlBsdWdpbgoKTm93IGBHdXp6bGVcUGx1Z2luXEJhY2tvZmZcQmFja29mZlBsdWdpbmAsIGFuZCBvdGhlciBjaGFuZ2VzLgoKKipCZWZvcmUqKgoKYGBgcGhwCnVzZSBHdXp6bGVcSHR0cFxQbHVnaW5cRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luOwoKJGJhY2tvZmZQbHVnaW4gPSBuZXcgRXhwb25lbnRpYWxCYWNrb2ZmUGx1Z2luKCRtYXhSZXRyaWVzLCBhcnJheV9tZXJnZSgKICAgICAgICBFeHBvbmVudGlhbEJhY2tvZmZQbHVnaW46OmdldERlZmF1bHRGYWlsdXJlQ29kZXMoKSwgYXJyYXkoNDI5KQogICAgKSk7CgokY2xpZW50LT5hZGRTdWJzY3JpYmVyKCRiYWNrb2ZmUGx1Z2luKTsKYGBgCgoqKkFmdGVyKioKCmBgYHBocAp1c2UgR3V6emxlXFBsdWdpblxCYWNrb2ZmXEJhY2tvZmZQbHVnaW47CnVzZSBHdXp6bGVcUGx1Z2luXEJhY2tvZmZcSHR0cEJhY2tvZmZTdHJhdGVneTsKCi8vIFVzZSBjb252ZW5pZW50IGZhY3RvcnkgbWV0aG9kIGluc3RlYWQgLS0gc2VlIGltcGxlbWVudGF0aW9uIGZvciBpZGVhcyBvZiB3aGF0Ci8vIHlvdSBjYW4gZG8gd2l0aCBjaGFpbmluZyBiYWNrb2ZmIHN0cmF0ZWdpZXMKJGJhY2tvZmZQbHVnaW4gPSBCYWNrb2ZmUGx1Z2luOjpnZXRFeHBvbmVudGlhbEJhY2tvZmYoJG1heFJldHJpZXMsIGFycmF5X21lcmdlKAogICAgICAgIEh0dHBCYWNrb2ZmU3RyYXRlZ3k6OmdldERlZmF1bHRGYWlsdXJlQ29kZXMoKSwgYXJyYXkoNDI5KQogICAgKSk7CiRjbGllbnQtPmFkZFN1YnNjcmliZXIoJGJhY2tvZmZQbHVnaW4pOwpgYGAKCiMjIyBLbm93biBJc3N1ZXMKCiMjIyMgW0JVR10gQWNjZXB0LUVuY29kaW5nIGhlYWRlciBiZWhhdmlvciBjaGFuZ2VkIHVuaW50ZW50aW9uYWxseS4KCihTZWUgIzIxNykgKEZpeGVkIGluIDA5ZGFlYjhjNjY2ZmI0NDQ5OWEwNjQ2ZDY1NWE4YWUzNjQ1NjU3NWUpCgpJbiB2ZXJzaW9uIDIuOCBzZXR0aW5nIHRoZSBgQWNjZXB0LUVuY29kaW5nYCBoZWFkZXIgd291bGQgc2V0IHRoZSBDVVJMT1BUX0VOQ09ESU5HIG9wdGlvbiwgd2hpY2ggcGVybWl0dGVkIGNVUkwgdG8KcHJvcGVybHkgaGFuZGxlIGd6aXAvZGVmbGF0ZSBjb21wcmVzc2VkIHJlc3BvbnNlcyBmcm9tIHRoZSBzZXJ2ZXIuIEluIHZlcnNpb25zIGFmZmVjdGVkIGJ5IHRoaXMgYnVnIHRoaXMgZG9lcyBub3QgaGFwcGVuLgpTZWUgaXNzdWUgIzIxNyBmb3IgYSB3b3JrYXJvdW5kLCBvciB1c2UgYSB2ZXJzaW9uIGNvbnRhaW5pbmcgdGhlIGZpeC4K]]></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[IyBDSEFOR0VMT0cKCgojIyAyLjMuMCAtIDIwMjUtMDgtMjIKCiMjIyBBZGRlZAoKLSBQSFAgOC41IHN1cHBvcnQKCgojIyAyLjIuMCAtIDIwMjUtMDMtMjcKCiMjIyBGaXhlZAoKLSBSZXZlcnQgIkFsbG93IGFuIGVtcHR5IEVhY2hQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJ5IHJ1bm5pbmcgdGhlIHF1ZXVlIgoKCiMjIDIuMS4wIC0gMjAyNS0wMy0yNwoKIyMjIEFkZGVkCgotIEFsbG93IGFuIGVtcHR5IEVhY2hQcm9taXNlIHRvIGJlIHJlc29sdmVkIGJ5IHJ1bm5pbmcgdGhlIHF1ZXVlCgoKIyMgMi4wLjQgLSAyMDI0LTEwLTE3CgojIyMgRml4ZWQKCi0gT25jZSBzZXR0bGVkLCBkb24ndCBhbGxvdyBmdXJ0aGVyIHJlamVjdGlvbiBvZiBhZGRpdGlvbmFsIHByb21pc2VzCgoKIyMgMi4wLjMgLSAyMDI0LTA3LTE4CgojIyMgQ2hhbmdlZAoKLSBQSFAgOC40IHN1cHBvcnQKCgojIyAyLjAuMiAtIDIwMjMtMTItMDMKCiMjIyBDaGFuZ2VkCgotIFJlcGxhY2VkIGBjYWxsX3VzZXJfZnVuYypgIHdpdGggbmF0aXZlIGNhbGxzCgoKIyMgMi4wLjEgLSAyMDIzLTA4LTAzCgojIyMgQ2hhbmdlZAoKLSBQSFAgOC4zIHN1cHBvcnQKCgojIyAyLjAuMCAtIDIwMjMtMDUtMjEKCiMjIyBBZGRlZAoKLSBBZGRlZCBQSFAgNyB0eXBlIGhpbnRzCgojIyMgQ2hhbmdlZAoKLSBBbGwgcHJldmlvdXNseSBub24tZmluYWwgbm9uLWV4Y2VwdGlvbiBjbGFzc2VzIGhhdmUgYmVlbiBtYXJrZWQgYXMgc29mdC1maW5hbAoKIyMjIFJlbW92ZWQKCi0gRHJvcHBlZCBQSFAgPCA3LjIgc3VwcG9ydAotIEFsbCBmdW5jdGlvbnMgaW4gdGhlIGBHdXp6bGVIdHRwXFByb21pc2VgIG5hbWVzcGFjZQoKCiMjIDEuNS4zIC0gMjAyMy0wNS0yMQoKIyMjIENoYW5nZWQKCi0gUmVtb3ZlZCByZW1haW5pbmcgdXNhZ2Ugb2YgZGVwcmVjYXRlZCBmdW5jdGlvbnMKCgojIyAxLjUuMiAtIDIwMjItMDgtMDcKCiMjIyBDaGFuZ2VkCgotIE9mZmljaWFsbHkgc3VwcG9ydCBQSFAgOC4yCgoKIyMgMS41LjEgLSAyMDIxLTEwLTIyCgojIyMgRml4ZWQKCi0gUmV2ZXJ0ICJDYWxsIGhhbmRsZXIgd2hlbiB3YWl0aW5nIG9uIGZ1bGZpbGxlZC9yZWplY3RlZCBQcm9taXNlIgotIEZpeCBwb29sIG1lbW9yeSBsZWFrIHdoZW4gZW1wdHkgYXJyYXkgb2YgcHJvbWlzZXMgcHJvdmlkZWQKCgojIyAxLjUuMCAtIDIwMjEtMTAtMDcKCiMjIyBDaGFuZ2VkCgotIENhbGwgaGFuZGxlciB3aGVuIHdhaXRpbmcgb24gZnVsZmlsbGVkL3JlamVjdGVkIFByb21pc2UKLSBPZmZpY2lhbGx5IHN1cHBvcnQgUEhQIDguMQoKIyMjIEZpeGVkCgotIEZpeCBtYW51YWxseSBzZXR0bGUgcHJvbWlzZXMgZ2VuZXJhdGVkIHdpdGggYFV0aWxzOjp0YXNrYAoKCiMjIDEuNC4xIC0gMjAyMS0wMi0xOAoKIyMjIEZpeGVkCgotIEZpeGVkIGBlYWNoX2xpbWl0YCBza2lwcGluZyBwcm9taXNlcyBhbmQgZmFpbGluZwoKCiMjIDEuNC4wIC0gMjAyMC0wOS0zMAoKIyMjIEFkZGVkCgotIFN1cHBvcnQgZm9yIFBIUCA4Ci0gT3B0aW9uYWwgYCRyZWN1cnNpdmVgIGZsYWcgdG8gYGFsbGAKLSBSZXBsYWNlZCBmdW5jdGlvbnMgYnkgc3RhdGljIG1ldGhvZHMKCiMjIyBGaXhlZAoKLSBGaXggZW1wdHkgYGVhY2hgIHByb2Nlc3NpbmcKLSBGaXggcHJvbWlzZSBoYW5kbGluZyBmb3IgSXRlcmF0b3JzIG9mIG5vbi11bmlxdWUga2V5cwotIEZpeGVkIGBtZXRob2RfZXhpc3RzYCBjcmFzaGVzIG9uIFBIUCA4Ci0gTWVtb3J5IGxlYWsgb24gZXhjZXB0aW9ucwoKCiMjIDEuMy4xIC0gMjAxNi0xMi0yMAoKIyMjIEZpeGVkCgotIGB3YWl0KClgIGZvcmVpZ24gcHJvbWlzZSBjb21wYXRpYmlsaXR5CgoKIyMgMS4zLjAgLSAyMDE2LTExLTE4CgojIyMgQWRkZWQKCi0gQWRkcyBzdXBwb3J0IGZvciBjdXN0b20gdGFzayBxdWV1ZXMuCgojIyMgRml4ZWQKCi0gRml4ZWQgY29yb3V0aW5lIHByb21pc2UgbWVtb3J5IGxlYWsuCgoKIyMgMS4yLjAgLSAyMDE2LTA1LTE4CgojIyMgQ2hhbmdlZAoKLSBVcGRhdGUgdG8gbm93IGNhdGNoIGBcVGhyb3dhYmxlYCBvbiBQSFAgNysKCgojIyAxLjEuMCAtIDIwMTYtMDMtMDcKCiMjIyBDaGFuZ2VkCgotIFVwZGF0ZSBFYWNoUHJvbWlzZSB0byBwcmV2ZW50IHJlY3VycmluZyBvbiBhIGl0ZXJhdG9yIHdoZW4gYWR2YW5jaW5nLCBhcyB0aGlzCiAgY291bGQgdHJpZ2dlciBmYXRhbCBnZW5lcmF0b3IgZXJyb3JzLgotIFVwZGF0ZSBQcm9taXNlIHRvIGFsbG93IHJlY3Vyc2l2ZSB3YWl0aW5nIHdpdGhvdXQgdW53cmFwcGluZyBleGNlcHRpb25zLgoKCiMjIDEuMC4zIC0gMjAxNS0xMC0xNQoKIyMjIENoYW5nZWQKCi0gVXBkYXRlIEVhY2hQcm9taXNlIHRvIGltbWVkaWF0ZWx5IHJlc29sdmUgd2hlbiB0aGUgdW5kZXJseWluZyBwcm9taXNlIGl0ZXJhdG9yCiAgaXMgZW1wdHkuIFByZXZpb3VzbHksIHN1Y2ggYSBwcm9taXNlIHdvdWxkIHRocm93IGFuIGV4Y2VwdGlvbiB3aGVuIGl0cyBgd2FpdGAKICBmdW5jdGlvbiB3YXMgY2FsbGVkLgoKCiMjIDEuMC4yIC0gMjAxNS0wNS0xNQoKIyMjIENoYW5nZWQKCi0gQ29uZGl0aW9uYWxseSByZXF1aXJlIGZ1bmN0aW9ucy5waHAuCgoKIyMgMS4wLjEgLSAyMDE1LTA2LTI0CgojIyMgQ2hhbmdlZAoKLSBVcGRhdGluZyBFYWNoUHJvbWlzZSB0byBjYWxsIG5leHQgb24gdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBpdGVyYXRvciBhcyBsYXRlCiAgYXMgcG9zc2libGUgdG8gZW5zdXJlIHRoYXQgZ2VuZXJhdG9ycyB0aGF0IGdlbmVyYXRlIG5ldyByZXF1ZXN0cyBiYXNlZCBvbgogIGNhbGxiYWNrcyBhcmUgbm90IGl0ZXJhdGVkIHVudGlsIGFmdGVyIGNhbGxiYWNrcyBhcmUgaW52b2tlZC4KCgojIyAxLjAuMCAtIDIwMTUtMDUtMTIKCi0gSW5pdGlhbCByZWxlYXNlCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wcm9taXNlcyIsCiAgICAiZGVzY3JpcHRpb24iOiAiR3V6emxlIHByb21pc2VzIGxpYnJhcnkiLAogICAgImtleXdvcmRzIjogWyJwcm9taXNlIl0sCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHcmFoYW0gQ2FtcGJlbGwiLAogICAgICAgICAgICAiZW1haWwiOiAiaGVsbG9AZ2pjYW1wYmVsbC5jby51ayIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBOeWhvbG0iLAogICAgICAgICAgICAiZW1haWwiOiAidG9iaWFzLm55aG9sbUBnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIFNjaHVsdHplIiwKICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgfQogICAgXSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiXjcuMi41IHx8IF44LjAiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJiYW1hcm5pL2NvbXBvc2VyLWJpbi1wbHVnaW4iOiAiXjEuOC4yIiwKICAgICAgICAicGhwdW5pdC9waHB1bml0IjogIl44LjUuNDQgfHwgXjkuNi4yNSIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcUHJvbWlzZVxcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJhdXRvbG9hZC1kZXYiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcUHJvbWlzZVxcVGVzdHNcXCI6ICJ0ZXN0cy8iCiAgICAgICAgfQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYmFtYXJuaS1iaW4iOiB7CiAgICAgICAgICAgICJiaW4tbGlua3MiOiB0cnVlLAogICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICB9CiAgICB9LAogICAgImNvbmZpZyI6IHsKICAgICAgICAiYWxsb3ctcGx1Z2lucyI6IHsKICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6IHRydWUKICAgICAgICB9LAogICAgICAgICJwcmVmZXJyZWQtaW5zdGFsbCI6ICJkaXN0IiwKICAgICAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTUgTWljaGFlbCBEb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTUgR3JhaGFtIENhbXBiZWxsIDxoZWxsb0BnamNhbXBiZWxsLmNvLnVrPgpDb3B5cmlnaHQgKGMpIDIwMTcgVG9iaWFzIFNjaHVsdHplIDx3ZWJtYXN0ZXJAdHViby13b3JsZC5kZT4KQ29weXJpZ2h0IChjKSAyMDIwIFRvYmlhcyBOeWhvbG0gPHRvYmlhcy5ueWhvbG1AZ21haWwuY29tPgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgphbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBHdXp6bGUgUHJvbWlzZXMKCltQcm9taXNlcy9BK10oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pIGltcGxlbWVudGF0aW9uIHRoYXQgaGFuZGxlcyBwcm9taXNlCmNoYWluaW5nIGFuZCByZXNvbHV0aW9uIGl0ZXJhdGl2ZWx5LCBhbGxvd2luZyBmb3IgImluZmluaXRlIiBwcm9taXNlIGNoYWluaW5nCndoaWxlIGtlZXBpbmcgdGhlIHN0YWNrIHNpemUgY29uc3RhbnQuIFJlYWQgW3RoaXMgYmxvZyBwb3N0XShodHRwczovL2Jsb2cuZG9tZW5pYy5tZS95b3VyZS1taXNzaW5nLXRoZS1wb2ludC1vZi1wcm9taXNlcy8pCmZvciBhIGdlbmVyYWwgaW50cm9kdWN0aW9uIHRvIHByb21pc2VzLgoKLSBbRmVhdHVyZXNdKCNmZWF0dXJlcykKLSBbUXVpY2sgc3RhcnRdKCNxdWljay1zdGFydCkKLSBbU3luY2hyb25vdXMgd2FpdF0oI3N5bmNocm9ub3VzLXdhaXQpCi0gW0NhbmNlbGxhdGlvbl0oI2NhbmNlbGxhdGlvbikKLSBbQVBJXSgjYXBpKQogIC0gW1Byb21pc2VdKCNwcm9taXNlKQogIC0gW0Z1bGZpbGxlZFByb21pc2VdKCNmdWxmaWxsZWRwcm9taXNlKQogIC0gW1JlamVjdGVkUHJvbWlzZV0oI3JlamVjdGVkcHJvbWlzZSkKLSBbUHJvbWlzZSBpbnRlcm9wXSgjcHJvbWlzZS1pbnRlcm9wKQotIFtJbXBsZW1lbnRhdGlvbiBub3Rlc10oI2ltcGxlbWVudGF0aW9uLW5vdGVzKQoKCiMjIEZlYXR1cmVzCgotIFtQcm9taXNlcy9BK10oaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8pIGltcGxlbWVudGF0aW9uLgotIFByb21pc2UgcmVzb2x1dGlvbiBhbmQgY2hhaW5pbmcgaXMgaGFuZGxlZCBpdGVyYXRpdmVseSwgYWxsb3dpbmcgZm9yCiAgImluZmluaXRlIiBwcm9taXNlIGNoYWluaW5nLgotIFByb21pc2VzIGhhdmUgYSBzeW5jaHJvbm91cyBgd2FpdGAgbWV0aG9kLgotIFByb21pc2VzIGNhbiBiZSBjYW5jZWxsZWQuCi0gV29ya3Mgd2l0aCBhbnkgb2JqZWN0IHRoYXQgaGFzIGEgYHRoZW5gIGZ1bmN0aW9uLgotIEMjIHN0eWxlIGFzeW5jL2F3YWl0IGNvcm91dGluZSBwcm9taXNlcyB1c2luZwogIGBHdXp6bGVIdHRwXFByb21pc2VcQ29yb3V0aW5lOjpvZigpYC4KCgojIyBJbnN0YWxsYXRpb24KCmBgYHNoZWxsCmNvbXBvc2VyIHJlcXVpcmUgZ3V6emxlaHR0cC9wcm9taXNlcwpgYGAKCgojIyBWZXJzaW9uIEd1aWRhbmNlCgp8IFZlcnNpb24gfCBTdGF0dXMgICAgICAgICAgICAgIHwgUEhQIFZlcnNpb24gIHwKfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18CnwgMS54ICAgICB8IFNlY3VyaXR5IGZpeGVzIG9ubHkgfCA+PTUuNSw8OC4zICAgfAp8IDIueCAgICAgfCBMYXRlc3QgICAgICAgICAgICAgIHwgPj03LjIuNSw8OC42IHwKCgojIyBRdWljayBTdGFydAoKQSAqcHJvbWlzZSogcmVwcmVzZW50cyB0aGUgZXZlbnR1YWwgcmVzdWx0IG9mIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uIFRoZQpwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyBgdGhlbmAgbWV0aG9kLCB3aGljaApyZWdpc3RlcnMgY2FsbGJhY2tzIHRvIHJlY2VpdmUgZWl0aGVyIGEgcHJvbWlzZSdzIGV2ZW50dWFsIHZhbHVlIG9yIHRoZSByZWFzb24Kd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuCgojIyMgQ2FsbGJhY2tzCgpDYWxsYmFja3MgYXJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgYHRoZW5gIG1ldGhvZCBieSBwcm92aWRpbmcgYW4gb3B0aW9uYWwgCmAkb25GdWxmaWxsZWRgIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIGAkb25SZWplY3RlZGAgZnVuY3Rpb24uCgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UtPnRoZW4oCiAgICAvLyAkb25GdWxmaWxsZWQKICAgIGZ1bmN0aW9uICgkdmFsdWUpIHsKICAgICAgICBlY2hvICdUaGUgcHJvbWlzZSB3YXMgZnVsZmlsbGVkLic7CiAgICB9LAogICAgLy8gJG9uUmVqZWN0ZWQKICAgIGZ1bmN0aW9uICgkcmVhc29uKSB7CiAgICAgICAgZWNobyAnVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkLic7CiAgICB9Cik7CmBgYAoKKlJlc29sdmluZyogYSBwcm9taXNlIG1lYW5zIHRoYXQgeW91IGVpdGhlciBmdWxmaWxsIGEgcHJvbWlzZSB3aXRoIGEgKnZhbHVlKiBvcgpyZWplY3QgYSBwcm9taXNlIHdpdGggYSAqcmVhc29uKi4gUmVzb2x2aW5nIGEgcHJvbWlzZSB0cmlnZ2VycyBjYWxsYmFja3MKcmVnaXN0ZXJlZCB3aXRoIHRoZSBwcm9taXNlJ3MgYHRoZW5gIG1ldGhvZC4gVGhlc2UgY2FsbGJhY2tzIGFyZSB0cmlnZ2VyZWQKb25seSBvbmNlIGFuZCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLgoKIyMjIFJlc29sdmluZyBhIFByb21pc2UKClByb21pc2VzIGFyZSBmdWxmaWxsZWQgdXNpbmcgdGhlIGByZXNvbHZlKCR2YWx1ZSlgIG1ldGhvZC4gUmVzb2x2aW5nIGEgcHJvbWlzZQp3aXRoIGFueSB2YWx1ZSBvdGhlciB0aGFuIGEgYEd1enpsZUh0dHBcUHJvbWlzZVxSZWplY3RlZFByb21pc2VgIHdpbGwgdHJpZ2dlcgphbGwgb2YgdGhlIG9uRnVsZmlsbGVkIGNhbGxiYWNrcyAocmVzb2x2aW5nIGEgcHJvbWlzZSB3aXRoIGEgcmVqZWN0ZWQgcHJvbWlzZQp3aWxsIHJlamVjdCB0aGUgcHJvbWlzZSBhbmQgdHJpZ2dlciB0aGUgYCRvblJlamVjdGVkYCBjYWxsYmFja3MpLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UKICAgIC0+dGhlbihmdW5jdGlvbiAoJHZhbHVlKSB7CiAgICAgICAgLy8gUmV0dXJuIGEgdmFsdWUgYW5kIGRvbid0IGJyZWFrIHRoZSBjaGFpbgogICAgICAgIHJldHVybiAiSGVsbG8sICIgLiAkdmFsdWU7CiAgICB9KQogICAgLy8gVGhpcyB0aGVuIGlzIGV4ZWN1dGVkIGFmdGVyIHRoZSBmaXJzdCB0aGVuIGFuZCByZWNlaXZlcyB0aGUgdmFsdWUKICAgIC8vIHJldHVybmVkIGZyb20gdGhlIGZpcnN0IHRoZW4uCiAgICAtPnRoZW4oZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgICAgIGVjaG8gJHZhbHVlOwogICAgfSk7CgovLyBSZXNvbHZpbmcgdGhlIHByb21pc2UgdHJpZ2dlcnMgdGhlICRvbkZ1bGZpbGxlZCBjYWxsYmFja3MgYW5kIG91dHB1dHMKLy8gIkhlbGxvLCByZWFkZXIuIgokcHJvbWlzZS0+cmVzb2x2ZSgncmVhZGVyLicpOwpgYGAKCiMjIyBQcm9taXNlIEZvcndhcmRpbmcKClByb21pc2VzIGNhbiBiZSBjaGFpbmVkIG9uZSBhZnRlciB0aGUgb3RoZXIuIEVhY2ggdGhlbiBpbiB0aGUgY2hhaW4gaXMgYSBuZXcKcHJvbWlzZS4gVGhlIHJldHVybiB2YWx1ZSBvZiBhIHByb21pc2UgaXMgd2hhdCdzIGZvcndhcmRlZCB0byB0aGUgbmV4dApwcm9taXNlIGluIHRoZSBjaGFpbi4gUmV0dXJuaW5nIGEgcHJvbWlzZSBpbiBhIGB0aGVuYCBjYWxsYmFjayB3aWxsIGNhdXNlIHRoZQpzdWJzZXF1ZW50IHByb21pc2VzIGluIHRoZSBjaGFpbiB0byBvbmx5IGJlIGZ1bGZpbGxlZCB3aGVuIHRoZSByZXR1cm5lZCBwcm9taXNlCmhhcyBiZWVuIGZ1bGZpbGxlZC4gVGhlIG5leHQgcHJvbWlzZSBpbiB0aGUgY2hhaW4gd2lsbCBiZSBpbnZva2VkIHdpdGggdGhlCnJlc29sdmVkIHZhbHVlIG9mIHRoZSBwcm9taXNlLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJG5leHRQcm9taXNlID0gbmV3IFByb21pc2UoKTsKCiRwcm9taXNlCiAgICAtPnRoZW4oZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkbmV4dFByb21pc2UpIHsKICAgICAgICBlY2hvICR2YWx1ZTsKICAgICAgICByZXR1cm4gJG5leHRQcm9taXNlOwogICAgfSkKICAgIC0+dGhlbihmdW5jdGlvbiAoJHZhbHVlKSB7CiAgICAgICAgZWNobyAkdmFsdWU7CiAgICB9KTsKCi8vIFRyaWdnZXJzIHRoZSBmaXJzdCBjYWxsYmFjayBhbmQgb3V0cHV0cyAiQSIKJHByb21pc2UtPnJlc29sdmUoJ0EnKTsKLy8gVHJpZ2dlcnMgdGhlIHNlY29uZCBjYWxsYmFjayBhbmQgb3V0cHV0cyAiQiIKJG5leHRQcm9taXNlLT5yZXNvbHZlKCdCJyk7CmBgYAoKIyMjIFByb21pc2UgUmVqZWN0aW9uCgpXaGVuIGEgcHJvbWlzZSBpcyByZWplY3RlZCwgdGhlIGAkb25SZWplY3RlZGAgY2FsbGJhY2tzIGFyZSBpbnZva2VkIHdpdGggdGhlCnJlamVjdGlvbiByZWFzb24uCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgpOwokcHJvbWlzZS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgZWNobyAkcmVhc29uOwp9KTsKCiRwcm9taXNlLT5yZWplY3QoJ0Vycm9yIScpOwovLyBPdXRwdXRzICJFcnJvciEiCmBgYAoKIyMjIFJlamVjdGlvbiBGb3J3YXJkaW5nCgpJZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGluIGFuIGAkb25SZWplY3RlZGAgY2FsbGJhY2ssIHN1YnNlcXVlbnQKYCRvblJlamVjdGVkYCBjYWxsYmFja3MgYXJlIGludm9rZWQgd2l0aCB0aGUgdGhyb3duIGV4Y2VwdGlvbiBhcyB0aGUgcmVhc29uLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UtPnRoZW4obnVsbCwgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgIHRocm93IG5ldyBFeGNlcHRpb24oJHJlYXNvbik7Cn0pLT50aGVuKG51bGwsIGZ1bmN0aW9uICgkcmVhc29uKSB7CiAgICBhc3NlcnQoJHJlYXNvbi0+Z2V0TWVzc2FnZSgpID09PSAnRXJyb3IhJyk7Cn0pOwoKJHByb21pc2UtPnJlamVjdCgnRXJyb3IhJyk7CmBgYAoKWW91IGNhbiBhbHNvIGZvcndhcmQgYSByZWplY3Rpb24gZG93biB0aGUgcHJvbWlzZSBjaGFpbiBieSByZXR1cm5pbmcgYQpgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGVkUHJvbWlzZWAgaW4gZWl0aGVyIGFuIGAkb25GdWxmaWxsZWRgIG9yCmAkb25SZWplY3RlZGAgY2FsbGJhY2suCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGVkUHJvbWlzZTsKCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UtPnRoZW4obnVsbCwgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgIHJldHVybiBuZXcgUmVqZWN0ZWRQcm9taXNlKCRyZWFzb24pOwp9KS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgYXNzZXJ0KCRyZWFzb24gPT09ICdFcnJvciEnKTsKfSk7CgokcHJvbWlzZS0+cmVqZWN0KCdFcnJvciEnKTsKYGBgCgpJZiBhbiBleGNlcHRpb24gaXMgbm90IHRocm93biBpbiBhIGAkb25SZWplY3RlZGAgY2FsbGJhY2sgYW5kIHRoZSBjYWxsYmFjawpkb2VzIG5vdCByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlLCBkb3duc3RyZWFtIGAkb25GdWxmaWxsZWRgIGNhbGxiYWNrcyBhcmUKaW52b2tlZCB1c2luZyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSB0aGUgYCRvblJlamVjdGVkYCBjYWxsYmFjay4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQcm9taXNlXFByb21pc2U7CgokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlCiAgICAtPnRoZW4obnVsbCwgZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgICAgICByZXR1cm4gIkl0J3Mgb2siOwogICAgfSkKICAgIC0+dGhlbihmdW5jdGlvbiAoJHZhbHVlKSB7CiAgICAgICAgYXNzZXJ0KCR2YWx1ZSA9PT0gIkl0J3Mgb2siKTsKICAgIH0pOwoKJHByb21pc2UtPnJlamVjdCgnRXJyb3IhJyk7CmBgYAoKCiMjIFN5bmNocm9ub3VzIFdhaXQKCllvdSBjYW4gc3luY2hyb25vdXNseSBmb3JjZSBwcm9taXNlcyB0byBjb21wbGV0ZSB1c2luZyBhIHByb21pc2UncyBgd2FpdGAKbWV0aG9kLiBXaGVuIGNyZWF0aW5nIGEgcHJvbWlzZSwgeW91IGNhbiBwcm92aWRlIGEgd2FpdCBmdW5jdGlvbiB0aGF0IGlzIHVzZWQKdG8gc3luY2hyb25vdXNseSBmb3JjZSBhIHByb21pc2UgdG8gY29tcGxldGUuIFdoZW4gYSB3YWl0IGZ1bmN0aW9uIGlzIGludm9rZWQKaXQgaXMgZXhwZWN0ZWQgdG8gZGVsaXZlciBhIHZhbHVlIHRvIHRoZSBwcm9taXNlIG9yIHJlamVjdCB0aGUgcHJvbWlzZS4gSWYgdGhlCndhaXQgZnVuY3Rpb24gZG9lcyBub3QgZGVsaXZlciBhIHZhbHVlLCB0aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uIFRoZSB3YWl0CmZ1bmN0aW9uIHByb3ZpZGVkIHRvIGEgcHJvbWlzZSBjb25zdHJ1Y3RvciBpcyBpbnZva2VkIHdoZW4gdGhlIGB3YWl0YCBmdW5jdGlvbgpvZiB0aGUgcHJvbWlzZSBpcyBjYWxsZWQuCgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB1c2UgKCYkcHJvbWlzZSkgewogICAgJHByb21pc2UtPnJlc29sdmUoJ2ZvbycpOwp9KTsKCi8vIENhbGxpbmcgd2FpdCB3aWxsIHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIHByb21pc2UuCmVjaG8gJHByb21pc2UtPndhaXQoKTsgLy8gb3V0cHV0cyAiZm9vIgpgYGAKCklmIGFuIGV4Y2VwdGlvbiBpcyBlbmNvdW50ZXJlZCB3aGlsZSBpbnZva2luZyB0aGUgd2FpdCBmdW5jdGlvbiBvZiBhIHByb21pc2UsCnRoZSBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhlIGV4Y2VwdGlvbiBhbmQgdGhlIGV4Y2VwdGlvbiBpcyB0aHJvd24uCgpgYGBwaHAKJHByb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAoKSB1c2UgKCYkcHJvbWlzZSkgewogICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignZm9vJyk7Cn0pOwoKJHByb21pc2UtPndhaXQoKTsgLy8gdGhyb3dzIHRoZSBleGNlcHRpb24uCmBgYAoKQ2FsbGluZyBgd2FpdGAgb24gYSBwcm9taXNlIHRoYXQgaGFzIGJlZW4gZnVsZmlsbGVkIHdpbGwgbm90IHRyaWdnZXIgdGhlIHdhaXQKZnVuY3Rpb24uIEl0IHdpbGwgc2ltcGx5IHJldHVybiB0aGUgcHJldmlvdXNseSByZXNvbHZlZCB2YWx1ZS4KCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uICgpIHsgZGllKCd0aGlzIGlzIG5vdCBjYWxsZWQhJyk7IH0pOwokcHJvbWlzZS0+cmVzb2x2ZSgnZm9vJyk7CmVjaG8gJHByb21pc2UtPndhaXQoKTsgLy8gb3V0cHV0cyAiZm9vIgpgYGAKCkNhbGxpbmcgYHdhaXRgIG9uIGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuIHJlamVjdGVkIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiBJZgp0aGUgcmVqZWN0aW9uIHJlYXNvbiBpcyBhbiBpbnN0YW5jZSBvZiBgXEV4Y2VwdGlvbmAgdGhlIHJlYXNvbiBpcyB0aHJvd24uCk90aGVyd2lzZSwgYSBgR3V6emxlSHR0cFxQcm9taXNlXFJlamVjdGlvbkV4Y2VwdGlvbmAgaXMgdGhyb3duIGFuZCB0aGUgcmVhc29uCmNhbiBiZSBvYnRhaW5lZCBieSBjYWxsaW5nIHRoZSBgZ2V0UmVhc29uYCBtZXRob2Qgb2YgdGhlIGV4Y2VwdGlvbi4KCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT5yZWplY3QoJ2ZvbycpOwokcHJvbWlzZS0+d2FpdCgpOwpgYGAKCj4gUEhQIEZhdGFsIGVycm9yOiAgVW5jYXVnaHQgZXhjZXB0aW9uICdHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0aW9uRXhjZXB0aW9uJyB3aXRoIG1lc3NhZ2UgJ1RoZSBwcm9taXNlIHdhcyByZWplY3RlZCB3aXRoIHZhbHVlOiBmb28nCgojIyMgVW53cmFwcGluZyBhIFByb21pc2UKCldoZW4gc3luY2hyb25vdXNseSB3YWl0aW5nIG9uIGEgcHJvbWlzZSwgeW91IGFyZSBqb2luaW5nIHRoZSBzdGF0ZSBvZiB0aGUKcHJvbWlzZSBpbnRvIHRoZSBjdXJyZW50IHN0YXRlIG9mIGV4ZWN1dGlvbiAoaS5lLiwgcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUKcHJvbWlzZSBpZiBpdCB3YXMgZnVsZmlsbGVkIG9yIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBpdCB3YXMgcmVqZWN0ZWQpLiBUaGlzIGlzCmNhbGxlZCAidW53cmFwcGluZyIgdGhlIHByb21pc2UuIFdhaXRpbmcgb24gYSBwcm9taXNlIHdpbGwgYnkgZGVmYXVsdCB1bndyYXAKdGhlIHByb21pc2Ugc3RhdGUuCgpZb3UgY2FuIGZvcmNlIGEgcHJvbWlzZSB0byByZXNvbHZlIGFuZCAqbm90KiB1bndyYXAgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlCmJ5IHBhc3NpbmcgYGZhbHNlYCB0byB0aGUgZmlyc3QgYXJndW1lbnQgb2YgdGhlIGB3YWl0YCBmdW5jdGlvbjoKCmBgYHBocAokcHJvbWlzZSA9IG5ldyBQcm9taXNlKCk7CiRwcm9taXNlLT5yZWplY3QoJ2ZvbycpOwovLyBUaGlzIHdpbGwgbm90IHRocm93IGFuIGV4Y2VwdGlvbi4gSXQgc2ltcGx5IGVuc3VyZXMgdGhlIHByb21pc2UgaGFzCi8vIGJlZW4gcmVzb2x2ZWQuCiRwcm9taXNlLT53YWl0KGZhbHNlKTsKYGBgCgpXaGVuIHVud3JhcHBpbmcgYSBwcm9taXNlLCB0aGUgcmVzb2x2ZWQgdmFsdWUgb2YgdGhlIHByb21pc2Ugd2lsbCBiZSB3YWl0ZWQKdXBvbiB1bnRpbCB0aGUgdW53cmFwcGVkIHZhbHVlIGlzIG5vdCBhIHByb21pc2UuIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgcmVzb2x2ZQpwcm9taXNlIEEgd2l0aCBhIHByb21pc2UgQiBhbmQgdW53cmFwIHByb21pc2UgQSwgdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoZQp3YWl0IGZ1bmN0aW9uIHdpbGwgYmUgdGhlIHZhbHVlIGRlbGl2ZXJlZCB0byBwcm9taXNlIEIuCgoqKk5vdGUqKjogd2hlbiB5b3UgZG8gbm90IHVud3JhcCB0aGUgcHJvbWlzZSwgbm8gdmFsdWUgaXMgcmV0dXJuZWQuCgoKIyMgQ2FuY2VsbGF0aW9uCgpZb3UgY2FuIGNhbmNlbCBhIHByb21pc2UgdGhhdCBoYXMgbm90IHlldCBiZWVuIGZ1bGZpbGxlZCB1c2luZyB0aGUgYGNhbmNlbCgpYAptZXRob2Qgb2YgYSBwcm9taXNlLiBXaGVuIGNyZWF0aW5nIGEgcHJvbWlzZSB5b3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwKY2FuY2VsIGZ1bmN0aW9uIHRoYXQgd2hlbiBpbnZva2VkIGNhbmNlbHMgdGhlIGFjdGlvbiBvZiBjb21wdXRpbmcgYSByZXNvbHV0aW9uCm9mIHRoZSBwcm9taXNlLgoKCiMjIEFQSQoKIyMjIFByb21pc2UKCldoZW4gY3JlYXRpbmcgYSBwcm9taXNlIG9iamVjdCwgeW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsIGAkd2FpdEZuYCBhbmQKYCRjYW5jZWxGbmAuIGAkd2FpdEZuYCBpcyBhIGZ1bmN0aW9uIHRoYXQgaXMgaW52b2tlZCB3aXRoIG5vIGFyZ3VtZW50cyBhbmQgaXMKZXhwZWN0ZWQgdG8gcmVzb2x2ZSB0aGUgcHJvbWlzZS4gYCRjYW5jZWxGbmAgaXMgYSBmdW5jdGlvbiB3aXRoIG5vIGFyZ3VtZW50cwp0aGF0IGlzIGV4cGVjdGVkIHRvIGNhbmNlbCB0aGUgY29tcHV0YXRpb24gb2YgYSBwcm9taXNlLiBJdCBpcyBpbnZva2VkIHdoZW4gdGhlCmBjYW5jZWwoKWAgbWV0aG9kIG9mIGEgcHJvbWlzZSBpcyBjYWxsZWQuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUHJvbWlzZSgKICAgIGZ1bmN0aW9uICgpIHVzZSAoJiRwcm9taXNlKSB7CiAgICAgICAgJHByb21pc2UtPnJlc29sdmUoJ3dhaXRlZCcpOwogICAgfSwKICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAvLyBkbyBzb21ldGhpbmcgdGhhdCB3aWxsIGNhbmNlbCB0aGUgcHJvbWlzZSBjb21wdXRhdGlvbiAoZS5nLiwgY2xvc2UKICAgICAgICAvLyBhIHNvY2tldCwgY2FuY2VsIGEgZGF0YWJhc2UgcXVlcnksIGV0Yy4uLikKICAgIH0KKTsKCmFzc2VydCgnd2FpdGVkJyA9PT0gJHByb21pc2UtPndhaXQoKSk7CmBgYAoKQSBwcm9taXNlIGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CgotIGB0aGVuKGNhbGxhYmxlICRvbkZ1bGZpbGxlZCwgY2FsbGFibGUgJG9uUmVqZWN0ZWQpIDogUHJvbWlzZUludGVyZmFjZWAKICAKICBBcHBlbmRzIGZ1bGZpbGxtZW50IGFuZCByZWplY3Rpb24gaGFuZGxlcnMgdG8gdGhlIHByb21pc2UsIGFuZCByZXR1cm5zIGEgbmV3IHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxlZCBoYW5kbGVyLgoKLSBgb3RoZXJ3aXNlKGNhbGxhYmxlICRvblJlamVjdGVkKSA6IFByb21pc2VJbnRlcmZhY2VgCiAgCiAgQXBwZW5kcyBhIHJlamVjdGlvbiBoYW5kbGVyIGNhbGxiYWNrIHRvIHRoZSBwcm9taXNlLCBhbmQgcmV0dXJucyBhIG5ldyBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpZiBpdCBpcyBjYWxsZWQsIG9yIHRvIGl0cyBvcmlnaW5hbCBmdWxmaWxsbWVudCB2YWx1ZSBpZiB0aGUgcHJvbWlzZSBpcyBpbnN0ZWFkIGZ1bGZpbGxlZC4KCi0gYHdhaXQoJHVud3JhcCA9IHRydWUpIDogbWl4ZWRgCgogIFN5bmNocm9ub3VzbHkgd2FpdHMgb24gdGhlIHByb21pc2UgdG8gY29tcGxldGUuCiAgCiAgYCR1bndyYXBgIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSB2YWx1ZSBvZiB0aGUgcHJvbWlzZSBpcyByZXR1cm5lZCBmb3IgYQogIGZ1bGZpbGxlZCBwcm9taXNlIG9yIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuCiAgVGhpcyBpcyBzZXQgdG8gYHRydWVgIGJ5IGRlZmF1bHQuCgotIGBjYW5jZWwoKWAKCiAgQXR0ZW1wdHMgdG8gY2FuY2VsIHRoZSBwcm9taXNlIGlmIHBvc3NpYmxlLiBUaGUgcHJvbWlzZSBiZWluZyBjYW5jZWxsZWQgYW5kCiAgdGhlIHBhcmVudCBtb3N0IGFuY2VzdG9yIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiByZXNvbHZlZCB3aWxsIGFsc28gYmUKICBjYW5jZWxsZWQuIEFueSBwcm9taXNlcyB3YWl0aW5nIG9uIHRoZSBjYW5jZWxsZWQgcHJvbWlzZSB0byByZXNvbHZlIHdpbGwgYWxzbwogIGJlIGNhbmNlbGxlZC4KCi0gYGdldFN0YXRlKCkgOiBzdHJpbmdgCgogIFJldHVybnMgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlLiBPbmUgb2YgYHBlbmRpbmdgLCBgZnVsZmlsbGVkYCwgb3IKICBgcmVqZWN0ZWRgLgoKLSBgcmVzb2x2ZSgkdmFsdWUpYAoKICBGdWxmaWxscyB0aGUgcHJvbWlzZSB3aXRoIHRoZSBnaXZlbiBgJHZhbHVlYC4KCi0gYHJlamVjdCgkcmVhc29uKWAKCiAgUmVqZWN0cyB0aGUgcHJvbWlzZSB3aXRoIHRoZSBnaXZlbiBgJHJlYXNvbmAuCgoKIyMjIEZ1bGZpbGxlZFByb21pc2UKCkEgZnVsZmlsbGVkIHByb21pc2UgY2FuIGJlIGNyZWF0ZWQgdG8gcmVwcmVzZW50IGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuCmZ1bGZpbGxlZC4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQcm9taXNlXEZ1bGZpbGxlZFByb21pc2U7CgokcHJvbWlzZSA9IG5ldyBGdWxmaWxsZWRQcm9taXNlKCd2YWx1ZScpOwoKLy8gRnVsZmlsbGVkIGNhbGxiYWNrcyBhcmUgaW1tZWRpYXRlbHkgaW52b2tlZC4KJHByb21pc2UtPnRoZW4oZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgZWNobyAkdmFsdWU7Cn0pOwpgYGAKCgojIyMgUmVqZWN0ZWRQcm9taXNlCgpBIHJlamVjdGVkIHByb21pc2UgY2FuIGJlIGNyZWF0ZWQgdG8gcmVwcmVzZW50IGEgcHJvbWlzZSB0aGF0IGhhcyBiZWVuCnJlamVjdGVkLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFByb21pc2VcUmVqZWN0ZWRQcm9taXNlOwoKJHByb21pc2UgPSBuZXcgUmVqZWN0ZWRQcm9taXNlKCdFcnJvcicpOwoKLy8gUmVqZWN0ZWQgY2FsbGJhY2tzIGFyZSBpbW1lZGlhdGVseSBpbnZva2VkLgokcHJvbWlzZS0+dGhlbihudWxsLCBmdW5jdGlvbiAoJHJlYXNvbikgewogICAgZWNobyAkcmVhc29uOwp9KTsKYGBgCgoKIyMgUHJvbWlzZSBJbnRlcm9wZXJhYmlsaXR5CgpUaGlzIGxpYnJhcnkgd29ya3Mgd2l0aCBmb3JlaWduIHByb21pc2VzIHRoYXQgaGF2ZSBhIGB0aGVuYCBtZXRob2QuIFRoaXMgbWVhbnMKeW91IGNhbiB1c2UgR3V6emxlIHByb21pc2VzIHdpdGggW1JlYWN0IHByb21pc2VzXShodHRwczovL2dpdGh1Yi5jb20vcmVhY3RwaHAvcHJvbWlzZSkKZm9yIGV4YW1wbGUuIFdoZW4gYSBmb3JlaWduIHByb21pc2UgaXMgcmV0dXJuZWQgaW5zaWRlIG9mIGEgdGhlbiBtZXRob2QKY2FsbGJhY2ssIHByb21pc2UgcmVzb2x1dGlvbiB3aWxsIG9jY3VyIHJlY3Vyc2l2ZWx5LgoKYGBgcGhwCi8vIENyZWF0ZSBhIFJlYWN0IHByb21pc2UKJGRlZmVycmVkID0gbmV3IFJlYWN0XFByb21pc2VcRGVmZXJyZWQoKTsKJHJlYWN0UHJvbWlzZSA9ICRkZWZlcnJlZC0+cHJvbWlzZSgpOwoKLy8gQ3JlYXRlIGEgR3V6emxlIHByb21pc2UgdGhhdCBpcyBmdWxmaWxsZWQgd2l0aCBhIFJlYWN0IHByb21pc2UuCiRndXp6bGVQcm9taXNlID0gbmV3IEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlKCk7CiRndXp6bGVQcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJHJlYWN0UHJvbWlzZSkgewogICAgLy8gRG8gc29tZXRoaW5nIHNvbWV0aGluZyB3aXRoIHRoZSB2YWx1ZS4uLgogICAgLy8gUmV0dXJuIHRoZSBSZWFjdCBwcm9taXNlCiAgICByZXR1cm4gJHJlYWN0UHJvbWlzZTsKfSk7CmBgYAoKUGxlYXNlIG5vdGUgdGhhdCB3YWl0IGFuZCBjYW5jZWwgY2hhaW5pbmcgaXMgbm8gbG9uZ2VyIHBvc3NpYmxlIHdoZW4gZm9yd2FyZGluZwphIGZvcmVpZ24gcHJvbWlzZS4gWW91IHdpbGwgbmVlZCB0byB3cmFwIGEgdGhpcmQtcGFydHkgcHJvbWlzZSB3aXRoIGEgR3V6emxlCnByb21pc2UgaW4gb3JkZXIgdG8gdXRpbGl6ZSB3YWl0IGFuZCBjYW5jZWwgZnVuY3Rpb25zIHdpdGggZm9yZWlnbiBwcm9taXNlcy4KCgojIyMgRXZlbnQgTG9vcCBJbnRlZ3JhdGlvbgoKSW4gb3JkZXIgdG8ga2VlcCB0aGUgc3RhY2sgc2l6ZSBjb25zdGFudCwgR3V6emxlIHByb21pc2VzIGFyZSByZXNvbHZlZAphc3luY2hyb25vdXNseSB1c2luZyBhIHRhc2sgcXVldWUuIFdoZW4gd2FpdGluZyBvbiBwcm9taXNlcyBzeW5jaHJvbm91c2x5LCB0aGUKdGFzayBxdWV1ZSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcnVuIHRvIGVuc3VyZSB0aGF0IHRoZSBibG9ja2luZyBwcm9taXNlIGFuZAphbnkgZm9yd2FyZGVkIHByb21pc2VzIGFyZSByZXNvbHZlZC4gV2hlbiB1c2luZyBwcm9taXNlcyBhc3luY2hyb25vdXNseSBpbiBhbgpldmVudCBsb29wLCB5b3Ugd2lsbCBuZWVkIHRvIHJ1biB0aGUgdGFzayBxdWV1ZSBvbiBlYWNoIHRpY2sgb2YgdGhlIGxvb3AuIElmCnlvdSBkbyBub3QgcnVuIHRoZSB0YXNrIHF1ZXVlLCB0aGVuIHByb21pc2VzIHdpbGwgbm90IGJlIHJlc29sdmVkLgoKWW91IGNhbiBydW4gdGhlIHRhc2sgcXVldWUgdXNpbmcgdGhlIGBydW4oKWAgbWV0aG9kIG9mIHRoZSBnbG9iYWwgdGFzayBxdWV1ZQppbnN0YW5jZS4KCmBgYHBocAovLyBHZXQgdGhlIGdsb2JhbCB0YXNrIHF1ZXVlCiRxdWV1ZSA9IEd1enpsZUh0dHBcUHJvbWlzZVxVdGlsczo6cXVldWUoKTsKJHF1ZXVlLT5ydW4oKTsKYGBgCgpGb3IgZXhhbXBsZSwgeW91IGNvdWxkIHVzZSBHdXp6bGUgcHJvbWlzZXMgd2l0aCBSZWFjdCB1c2luZyBhIHBlcmlvZGljIHRpbWVyOgoKYGBgcGhwCiRsb29wID0gUmVhY3RcRXZlbnRMb29wXEZhY3Rvcnk6OmNyZWF0ZSgpOwokbG9vcC0+YWRkUGVyaW9kaWNUaW1lcigwLCBbJHF1ZXVlLCAncnVuJ10pOwpgYGAKCgojIyBJbXBsZW1lbnRhdGlvbiBOb3RlcwoKIyMjIFByb21pc2UgUmVzb2x1dGlvbiBhbmQgQ2hhaW5pbmcgaXMgSGFuZGxlZCBJdGVyYXRpdmVseQoKQnkgc2h1ZmZsaW5nIHBlbmRpbmcgaGFuZGxlcnMgZnJvbSBvbmUgb3duZXIgdG8gYW5vdGhlciwgcHJvbWlzZXMgYXJlCnJlc29sdmVkIGl0ZXJhdGl2ZWx5LCBhbGxvd2luZyBmb3IgImluZmluaXRlIiB0aGVuIGNoYWluaW5nLgoKYGBgcGhwCjw/cGhwCnJlcXVpcmUgJ3ZlbmRvci9hdXRvbG9hZC5waHAnOwoKdXNlIEd1enpsZUh0dHBcUHJvbWlzZVxQcm9taXNlOwoKJHBhcmVudCA9IG5ldyBQcm9taXNlKCk7CiRwID0gJHBhcmVudDsKCmZvciAoJGkgPSAwOyAkaSA8IDEwMDA7ICRpKyspIHsKICAgICRwID0gJHAtPnRoZW4oZnVuY3Rpb24gKCR2KSB7CiAgICAgICAgLy8gVGhlIHN0YWNrIHNpemUgcmVtYWlucyBjb25zdGFudCAoYSBnb29kIHRoaW5nKQogICAgICAgIGVjaG8geGRlYnVnX2dldF9zdGFja19kZXB0aCgpIC4gJywgJzsKICAgICAgICByZXR1cm4gJHYgKyAxOwogICAgfSk7Cn0KCiRwYXJlbnQtPnJlc29sdmUoMCk7CnZhcl9kdW1wKCRwLT53YWl0KCkpOyAvLyBpbnQoMTAwMCkKCmBgYAoKV2hlbiBhIHByb21pc2UgaXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIHdpdGggYSBub24tcHJvbWlzZSB2YWx1ZSwgdGhlIHByb21pc2UKdGhlbiB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIGhhbmRsZXJzIG9mIGVhY2ggY2hpbGQgcHJvbWlzZSBhbmQgZGVsaXZlcnMgdmFsdWVzCmRvd24gdGhlIGNoYWluIHdpdGhvdXQgdXNpbmcgcmVjdXJzaW9uLgoKV2hlbiBhIHByb21pc2UgaXMgcmVzb2x2ZWQgd2l0aCBhbm90aGVyIHByb21pc2UsIHRoZSBvcmlnaW5hbCBwcm9taXNlIHRyYW5zZmVycwphbGwgb2YgaXRzIHBlbmRpbmcgaGFuZGxlcnMgdG8gdGhlIG5ldyBwcm9taXNlLiBXaGVuIHRoZSBuZXcgcHJvbWlzZSBpcwpldmVudHVhbGx5IHJlc29sdmVkLCBhbGwgb2YgdGhlIHBlbmRpbmcgaGFuZGxlcnMgYXJlIGRlbGl2ZXJlZCB0aGUgZm9yd2FyZGVkCnZhbHVlLgoKIyMjIEEgUHJvbWlzZSBpcyB0aGUgRGVmZXJyZWQKClNvbWUgcHJvbWlzZSBsaWJyYXJpZXMgaW1wbGVtZW50IHByb21pc2VzIHVzaW5nIGEgZGVmZXJyZWQgb2JqZWN0IHRvIHJlcHJlc2VudAphIGNvbXB1dGF0aW9uIGFuZCBhIHByb21pc2Ugb2JqZWN0IHRvIHJlcHJlc2VudCB0aGUgZGVsaXZlcnkgb2YgdGhlIHJlc3VsdCBvZgp0aGUgY29tcHV0YXRpb24uIFRoaXMgaXMgYSBuaWNlIHNlcGFyYXRpb24gb2YgY29tcHV0YXRpb24gYW5kIGRlbGl2ZXJ5IGJlY2F1c2UKY29uc3VtZXJzIG9mIHRoZSBwcm9taXNlIGNhbm5vdCBtb2RpZnkgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSBldmVudHVhbGx5CmRlbGl2ZXJlZC4KCk9uZSBzaWRlIGVmZmVjdCBvZiBiZWluZyBhYmxlIHRvIGltcGxlbWVudCBwcm9taXNlIHJlc29sdXRpb24gYW5kIGNoYWluaW5nCml0ZXJhdGl2ZWx5IGlzIHRoYXQgeW91IG5lZWQgdG8gYmUgYWJsZSBmb3Igb25lIHByb21pc2UgdG8gcmVhY2ggaW50byB0aGUgc3RhdGUKb2YgYW5vdGhlciBwcm9taXNlIHRvIHNodWZmbGUgYXJvdW5kIG93bmVyc2hpcCBvZiBoYW5kbGVycy4gSW4gb3JkZXIgdG8gYWNoaWV2ZQp0aGlzIHdpdGhvdXQgbWFraW5nIHRoZSBoYW5kbGVycyBvZiBhIHByb21pc2UgcHVibGljbHkgbXV0YWJsZSwgYSBwcm9taXNlIGlzCmFsc28gdGhlIGRlZmVycmVkIHZhbHVlLCBhbGxvd2luZyBwcm9taXNlcyBvZiB0aGUgc2FtZSBwYXJlbnQgY2xhc3MgdG8gcmVhY2gKaW50byBhbmQgbW9kaWZ5IHRoZSBwcml2YXRlIHByb3BlcnRpZXMgb2YgcHJvbWlzZXMgb2YgdGhlIHNhbWUgdHlwZS4gV2hpbGUgdGhpcwpkb2VzIGFsbG93IGNvbnN1bWVycyBvZiB0aGUgdmFsdWUgdG8gbW9kaWZ5IHRoZSByZXNvbHV0aW9uIG9yIHJlamVjdGlvbiBvZiB0aGUKZGVmZXJyZWQsIGl0IGlzIGEgc21hbGwgcHJpY2UgdG8gcGF5IGZvciBrZWVwaW5nIHRoZSBzdGFjayBzaXplIGNvbnN0YW50LgoKYGBgcGhwCiRwcm9taXNlID0gbmV3IFByb21pc2UoKTsKJHByb21pc2UtPnRoZW4oZnVuY3Rpb24gKCR2YWx1ZSkgeyBlY2hvICR2YWx1ZTsgfSk7Ci8vIFRoZSBwcm9taXNlIGlzIHRoZSBkZWZlcnJlZCB2YWx1ZSwgc28geW91IGNhbiBkZWxpdmVyIGEgdmFsdWUgdG8gaXQuCiRwcm9taXNlLT5yZXNvbHZlKCdmb28nKTsKLy8gcHJpbnRzICJmb28iCmBgYAoKCiMjIFVwZ3JhZGluZyBmcm9tIEZ1bmN0aW9uIEFQSQoKQSBzdGF0aWMgQVBJIHdhcyBmaXJzdCBpbnRyb2R1Y2VkIGluIDEuNC4wLCBpbiBvcmRlciB0byBtaXRpZ2F0ZSBwcm9ibGVtcyB3aXRoCmZ1bmN0aW9ucyBjb25mbGljdGluZyBiZXR3ZWVuIGdsb2JhbCBhbmQgbG9jYWwgY29waWVzIG9mIHRoZSBwYWNrYWdlLiBUaGUKZnVuY3Rpb24gQVBJIHdhcyByZW1vdmVkIGluIDIuMC4wLiBBIG1pZ3JhdGlvbiB0YWJsZSBoYXMgYmVlbiBwcm92aWRlZCBoZXJlIGZvcgp5b3VyIGNvbnZlbmllbmNlOgoKfCBPcmlnaW5hbCBGdW5jdGlvbiB8IFJlcGxhY2VtZW50IE1ldGhvZCB8CnwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18CnwgYHF1ZXVlYCB8IGBVdGlsczo6cXVldWVgIHwKfCBgdGFza2AgfCBgVXRpbHM6OnRhc2tgIHwKfCBgcHJvbWlzZV9mb3JgIHwgYENyZWF0ZTo6cHJvbWlzZUZvcmAgfAp8IGByZWplY3Rpb25fZm9yYCB8IGBDcmVhdGU6OnJlamVjdGlvbkZvcmAgfAp8IGBleGNlcHRpb25fZm9yYCB8IGBDcmVhdGU6OmV4Y2VwdGlvbkZvcmAgfAp8IGBpdGVyX2ZvcmAgfCBgQ3JlYXRlOjppdGVyRm9yYCB8CnwgYGluc3BlY3RgIHwgYFV0aWxzOjppbnNwZWN0YCB8CnwgYGluc3BlY3RfYWxsYCB8IGBVdGlsczo6aW5zcGVjdEFsbGAgfAp8IGB1bndyYXBgIHwgYFV0aWxzOjp1bndyYXBgIHwKfCBgYWxsYCB8IGBVdGlsczo6YWxsYCB8CnwgYHNvbWVgIHwgYFV0aWxzOjpzb21lYCB8CnwgYGFueWAgfCBgVXRpbHM6OmFueWAgfAp8IGBzZXR0bGVgIHwgYFV0aWxzOjpzZXR0bGVgIHwKfCBgZWFjaGAgfCBgRWFjaDo6b2ZgIHwKfCBgZWFjaF9saW1pdGAgfCBgRWFjaDo6b2ZMaW1pdGAgfAp8IGBlYWNoX2xpbWl0X2FsbGAgfCBgRWFjaDo6b2ZMaW1pdEFsbGAgfAp8IGAhaXNfZnVsZmlsbGVkYCB8IGBJczo6cGVuZGluZ2AgfAp8IGBpc19mdWxmaWxsZWRgIHwgYElzOjpmdWxmaWxsZWRgIHwKfCBgaXNfcmVqZWN0ZWRgIHwgYElzOjpyZWplY3RlZGAgfAp8IGBpc19zZXR0bGVkYCB8IGBJczo6c2V0dGxlZGAgfAp8IGBjb3JvdXRpbmVgIHwgYENvcm91dGluZTo6b2ZgIHwKCgojIyBTZWN1cml0eQoKSWYgeW91IGRpc2NvdmVyIGEgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSB3aXRoaW4gdGhpcyBwYWNrYWdlLCBwbGVhc2Ugc2VuZCBhbiBlbWFpbCB0byBzZWN1cml0eUB0aWRlbGlmdC5jb20uIEFsbCBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgd2lsbCBiZSBwcm9tcHRseSBhZGRyZXNzZWQuIFBsZWFzZSBkbyBub3QgZGlzY2xvc2Ugc2VjdXJpdHktcmVsYXRlZCBpc3N1ZXMgcHVibGljbHkgdW50aWwgYSBmaXggaGFzIGJlZW4gYW5ub3VuY2VkLiBQbGVhc2Ugc2VlIFtTZWN1cml0eSBQb2xpY3ldKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHJvbWlzZXMvc2VjdXJpdHkvcG9saWN5KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCgojIyBMaWNlbnNlCgpHdXp6bGUgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKCiMjIEZvciBFbnRlcnByaXNlCgpBdmFpbGFibGUgYXMgcGFydCBvZiB0aGUgVGlkZWxpZnQgU3Vic2NyaXB0aW9uCgpUaGUgbWFpbnRhaW5lcnMgb2YgR3V6emxlIGFuZCB0aG91c2FuZHMgb2Ygb3RoZXIgcGFja2FnZXMgYXJlIHdvcmtpbmcgd2l0aCBUaWRlbGlmdCB0byBkZWxpdmVyIGNvbW1lcmNpYWwgc3VwcG9ydCBhbmQgbWFpbnRlbmFuY2UgZm9yIHRoZSBvcGVuIHNvdXJjZSBkZXBlbmRlbmNpZXMgeW91IHVzZSB0byBidWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4gU2F2ZSB0aW1lLCByZWR1Y2UgcmlzaywgYW5kIGltcHJvdmUgY29kZSBoZWFsdGgsIHdoaWxlIHBheWluZyB0aGUgbWFpbnRhaW5lcnMgb2YgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyB5b3UgdXNlLiBbTGVhcm4gbW9yZS5dKGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcGFja2FnaXN0LWd1enpsZWh0dHAtcHJvbWlzZXM/dXRtX3NvdXJjZT1wYWNrYWdpc3QtZ3V6emxlaHR0cC1wcm9taXNlcyZ1dG1fbWVkaXVtPXJlZmVycmFsJnV0bV9jYW1wYWlnbj1lbnRlcnByaXNlJnV0bV90ZXJtPXJlcG8pCg==]]></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[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBFeGNlcHRpb24gdGhyb3duIHdoZW4gdG9vIG1hbnkgZXJyb3JzIG9jY3VyIGluIHRoZSBzb21lKCkgb3IgYW55KCkgbWV0aG9kcy4KICovCmNsYXNzIEFnZ3JlZ2F0ZUV4Y2VwdGlvbiBleHRlbmRzIFJlamVjdGlvbkV4Y2VwdGlvbgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRtc2csIGFycmF5ICRyZWFzb25zKQogICAgewogICAgICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoCiAgICAgICAgICAgICRyZWFzb25zLAogICAgICAgICAgICBzcHJpbnRmKCclczsgJWQgcmVqZWN0ZWQgcHJvbWlzZXMnLCAkbXNnLCBjb3VudCgkcmVhc29ucykpCiAgICAgICAgKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/CancellationException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBFeGNlcHRpb24gdGhhdCBpcyBzZXQgYXMgdGhlIHJlYXNvbiBmb3IgYSBwcm9taXNlIHRoYXQgaGFzIGJlZW4gY2FuY2VsbGVkLgogKi8KY2xhc3MgQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIGV4dGVuZHMgUmVqZWN0aW9uRXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Coroutine.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCnVzZSBHZW5lcmF0b3I7CnVzZSBUaHJvd2FibGU7CgovKioKICogQ3JlYXRlcyBhIHByb21pc2UgdGhhdCBpcyByZXNvbHZlZCB1c2luZyBhIGdlbmVyYXRvciB0aGF0IHlpZWxkcyB2YWx1ZXMgb3IKICogcHJvbWlzZXMgKHNvbWV3aGF0IHNpbWlsYXIgdG8gQyMncyBhc3luYyBrZXl3b3JkKS4KICoKICogV2hlbiBjYWxsZWQsIHRoZSBDb3JvdXRpbmU6Om9mIG1ldGhvZCB3aWxsIHN0YXJ0IGFuIGluc3RhbmNlIG9mIHRoZSBnZW5lcmF0b3IKICogYW5kIHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdpdGggaXRzIGZpbmFsIHlpZWxkZWQgdmFsdWUuCiAqCiAqIENvbnRyb2wgaXMgcmV0dXJuZWQgYmFjayB0byB0aGUgZ2VuZXJhdG9yIHdoZW4gdGhlIHlpZWxkZWQgcHJvbWlzZSBzZXR0bGVzLgogKiBUaGlzIGNhbiBsZWFkIHRvIGxlc3MgdmVyYm9zZSBjb2RlIHdoZW4gZG9pbmcgbG90cyBvZiBzZXF1ZW50aWFsIGFzeW5jIGNhbGxzCiAqIHdpdGggbWluaW1hbCBwcm9jZXNzaW5nIGluIGJldHdlZW4uCiAqCiAqICAgICB1c2UgR3V6emxlSHR0cFxQcm9taXNlOwogKgogKiAgICAgZnVuY3Rpb24gY3JlYXRlUHJvbWlzZSgkdmFsdWUpIHsKICogICAgICAgICByZXR1cm4gbmV3IFByb21pc2VcRnVsZmlsbGVkUHJvbWlzZSgkdmFsdWUpOwogKiAgICAgfQogKgogKiAgICAgJHByb21pc2UgPSBQcm9taXNlXENvcm91dGluZTo6b2YoZnVuY3Rpb24gKCkgewogKiAgICAgICAgICR2YWx1ZSA9ICh5aWVsZCBjcmVhdGVQcm9taXNlKCdhJykpOwogKiAgICAgICAgIHRyeSB7CiAqICAgICAgICAgICAgICR2YWx1ZSA9ICh5aWVsZCBjcmVhdGVQcm9taXNlKCR2YWx1ZSAuICdiJykpOwogKiAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICogICAgICAgICAgICAgLy8gVGhlIHByb21pc2Ugd2FzIHJlamVjdGVkLgogKiAgICAgICAgIH0KICogICAgICAgICB5aWVsZCAkdmFsdWUgLiAnYyc7CiAqICAgICB9KTsKICoKICogICAgIC8vIE91dHB1dHMgImFiYyIKICogICAgICRwcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkdikgeyBlY2hvICR2OyB9KTsKICoKICogQHBhcmFtIGNhbGxhYmxlICRnZW5lcmF0b3JGbiBHZW5lcmF0b3IgZnVuY3Rpb24gdG8gd3JhcCBpbnRvIGEgcHJvbWlzZS4KICoKICogQHJldHVybiBQcm9taXNlCiAqCiAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BldGthYW50b25vdi9ibHVlYmlyZC9ibG9iL21hc3Rlci9BUEkubWQjZ2VuZXJhdG9ycyBpbnNwaXJhdGlvbgogKi8KZmluYWwgY2xhc3MgQ29yb3V0aW5lIGltcGxlbWVudHMgUHJvbWlzZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgUHJvbWlzZUludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGN1cnJlbnRQcm9taXNlOwoKICAgIC8qKgogICAgICogQHZhciBHZW5lcmF0b3IKICAgICAqLwogICAgcHJpdmF0ZSAkZ2VuZXJhdG9yOwoKICAgIC8qKgogICAgICogQHZhciBQcm9taXNlCiAgICAgKi8KICAgIHByaXZhdGUgJHJlc3VsdDsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY2FsbGFibGUgJGdlbmVyYXRvckZuKQogICAgewogICAgICAgICR0aGlzLT5nZW5lcmF0b3IgPSAkZ2VuZXJhdG9yRm4oKTsKICAgICAgICAkdGhpcy0+cmVzdWx0ID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKCk6IHZvaWQgewogICAgICAgICAgICB3aGlsZSAoaXNzZXQoJHRoaXMtPmN1cnJlbnRQcm9taXNlKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPmN1cnJlbnRQcm9taXNlLT53YWl0KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+bmV4dENvcm91dGluZSgkdGhpcy0+Z2VuZXJhdG9yLT5jdXJyZW50KCkpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkdGhyb3dhYmxlKSB7CiAgICAgICAgICAgICR0aGlzLT5yZXN1bHQtPnJlamVjdCgkdGhyb3dhYmxlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgY29yb3V0aW5lLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mKGNhbGxhYmxlICRnZW5lcmF0b3JGbik6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGdlbmVyYXRvckZuKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGhlbigKICAgICAgICA/Y2FsbGFibGUgJG9uRnVsZmlsbGVkID0gbnVsbCwKICAgICAgICA/Y2FsbGFibGUgJG9uUmVqZWN0ZWQgPSBudWxsCiAgICApOiBQcm9taXNlSW50ZXJmYWNlIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3VsdC0+dGhlbigkb25GdWxmaWxsZWQsICRvblJlamVjdGVkKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb3RoZXJ3aXNlKGNhbGxhYmxlICRvblJlamVjdGVkKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0LT5vdGhlcndpc2UoJG9uUmVqZWN0ZWQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YWl0KGJvb2wgJHVud3JhcCA9IHRydWUpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXN1bHQtPndhaXQoJHVud3JhcCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFN0YXRlKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0LT5nZXRTdGF0ZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZXNvbHZlKCR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlamVjdCgkcmVhc29uKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5yZXN1bHQtPnJlamVjdCgkcmVhc29uKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+Y3VycmVudFByb21pc2UtPmNhbmNlbCgpOwogICAgICAgICR0aGlzLT5yZXN1bHQtPmNhbmNlbCgpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gbmV4dENvcm91dGluZSgkeWllbGRlZCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+Y3VycmVudFByb21pc2UgPSBDcmVhdGU6OnByb21pc2VGb3IoJHlpZWxkZWQpCiAgICAgICAgICAgIC0+dGhlbihbJHRoaXMsICdfaGFuZGxlU3VjY2VzcyddLCBbJHRoaXMsICdfaGFuZGxlRmFpbHVyZSddKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBpbnRlcm5hbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX2hhbmRsZVN1Y2Nlc3MoJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5jdXJyZW50UHJvbWlzZSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG5leHQgPSAkdGhpcy0+Z2VuZXJhdG9yLT5zZW5kKCR2YWx1ZSk7CiAgICAgICAgICAgIGlmICgkdGhpcy0+Z2VuZXJhdG9yLT52YWxpZCgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+bmV4dENvcm91dGluZSgkbmV4dCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZXNvbHZlKCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJHRocm93YWJsZSkgewogICAgICAgICAgICAkdGhpcy0+cmVzdWx0LT5yZWplY3QoJHRocm93YWJsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfaGFuZGxlRmFpbHVyZSgkcmVhc29uKTogdm9pZAogICAgewogICAgICAgIHVuc2V0KCR0aGlzLT5jdXJyZW50UHJvbWlzZSk7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG5leHRZaWVsZCA9ICR0aGlzLT5nZW5lcmF0b3ItPnRocm93KENyZWF0ZTo6ZXhjZXB0aW9uRm9yKCRyZWFzb24pKTsKICAgICAgICAgICAgLy8gVGhlIHRocm93IHdhcyBjYXVnaHQsIHNvIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBjb3JvdXRpbmUKICAgICAgICAgICAgJHRoaXMtPm5leHRDb3JvdXRpbmUoJG5leHRZaWVsZCk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICR0aHJvd2FibGUpIHsKICAgICAgICAgICAgJHRoaXMtPnJlc3VsdC0+cmVqZWN0KCR0aHJvd2FibGUpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Create.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIENyZWF0ZQp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBwcm9taXNlIGZvciBhIHZhbHVlIGlmIHRoZSB2YWx1ZSBpcyBub3QgYSBwcm9taXNlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUgUHJvbWlzZSBvciB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9taXNlRm9yKCR2YWx1ZSk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZUludGVyZmFjZSkgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlOwogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIGEgR3V6emxlIHByb21pc2UgdGhhdCBzaGFkb3dzIHRoZSBnaXZlbiBwcm9taXNlLgogICAgICAgIGlmIChpc19vYmplY3QoJHZhbHVlKSAmJiBtZXRob2RfZXhpc3RzKCR2YWx1ZSwgJ3RoZW4nKSkgewogICAgICAgICAgICAkd2ZuID0gbWV0aG9kX2V4aXN0cygkdmFsdWUsICd3YWl0JykgPyBbJHZhbHVlLCAnd2FpdCddIDogbnVsbDsKICAgICAgICAgICAgJGNmbiA9IG1ldGhvZF9leGlzdHMoJHZhbHVlLCAnY2FuY2VsJykgPyBbJHZhbHVlLCAnY2FuY2VsJ10gOiBudWxsOwogICAgICAgICAgICAkcHJvbWlzZSA9IG5ldyBQcm9taXNlKCR3Zm4sICRjZm4pOwogICAgICAgICAgICAkdmFsdWUtPnRoZW4oWyRwcm9taXNlLCAncmVzb2x2ZSddLCBbJHByb21pc2UsICdyZWplY3QnXSk7CgogICAgICAgICAgICByZXR1cm4gJHByb21pc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEZ1bGZpbGxlZFByb21pc2UoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSByZWplY3RlZCBwcm9taXNlIGZvciBhIHJlYXNvbiBpZiB0aGUgcmVhc29uIGlzIG5vdCBhIHByb21pc2UuCiAgICAgKiBJZiB0aGUgcHJvdmlkZWQgcmVhc29uIGlzIGEgcHJvbWlzZSwgdGhlbiBpdCBpcyByZXR1cm5lZCBhcy1pcy4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHJlYXNvbiBQcm9taXNlIG9yIHJlYXNvbi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWplY3Rpb25Gb3IoJHJlYXNvbik6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHJlYXNvbiBpbnN0YW5jZW9mIFByb21pc2VJbnRlcmZhY2UpIHsKICAgICAgICAgICAgcmV0dXJuICRyZWFzb247CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFJlamVjdGVkUHJvbWlzZSgkcmVhc29uKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBleGNlcHRpb24gZm9yIGEgcmVqZWN0ZWQgcHJvbWlzZSB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHJlYXNvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGV4Y2VwdGlvbkZvcigkcmVhc29uKTogXFRocm93YWJsZQogICAgewogICAgICAgIGlmICgkcmVhc29uIGluc3RhbmNlb2YgXFRocm93YWJsZSkgewogICAgICAgICAgICByZXR1cm4gJHJlYXNvbjsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgUmVqZWN0aW9uRXhjZXB0aW9uKCRyZWFzb24pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBpdGVyYXRvciBmb3IgdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpdGVyRm9yKCR2YWx1ZSk6IFxJdGVyYXRvcgogICAgewogICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBcSXRlcmF0b3IpIHsKICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIGlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgXEFycmF5SXRlcmF0b3IoJHZhbHVlKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgXEFycmF5SXRlcmF0b3IoWyR2YWx1ZV0pOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Each.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIEVhY2gKewogICAgLyoqCiAgICAgKiBHaXZlbiBhbiBpdGVyYXRvciB0aGF0IHlpZWxkcyBwcm9taXNlcyBvciB2YWx1ZXMsIHJldHVybnMgYSBwcm9taXNlIHRoYXQKICAgICAqIGlzIGZ1bGZpbGxlZCB3aXRoIGEgbnVsbCB2YWx1ZSB3aGVuIHRoZSBpdGVyYXRvciBoYXMgYmVlbiBjb25zdW1lZCBvcgogICAgICogdGhlIGFnZ3JlZ2F0ZSBwcm9taXNlIGhhcyBiZWVuIGZ1bGZpbGxlZCBvciByZWplY3RlZC4KICAgICAqCiAgICAgKiAkb25GdWxmaWxsZWQgaXMgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIGZ1bGZpbGxlZCB2YWx1ZSwgaXRlcmF0b3IKICAgICAqIGluZGV4LCBhbmQgdGhlIGFnZ3JlZ2F0ZSBwcm9taXNlLiBUaGUgY2FsbGJhY2sgY2FuIGludm9rZSBhbnkgbmVjZXNzYXJ5CiAgICAgKiBzaWRlIGVmZmVjdHMgYW5kIGNob29zZSB0byByZXNvbHZlIG9yIHJlamVjdCB0aGUgYWdncmVnYXRlIGlmIG5lZWRlZC4KICAgICAqCiAgICAgKiAkb25SZWplY3RlZCBpcyBhIGZ1bmN0aW9uIHRoYXQgYWNjZXB0cyB0aGUgcmVqZWN0aW9uIHJlYXNvbiwgaXRlcmF0b3IKICAgICAqIGluZGV4LCBhbmQgdGhlIGFnZ3JlZ2F0ZSBwcm9taXNlLiBUaGUgY2FsbGJhY2sgY2FuIGludm9rZSBhbnkgbmVjZXNzYXJ5CiAgICAgKiBzaWRlIGVmZmVjdHMgYW5kIGNob29zZSB0byByZXNvbHZlIG9yIHJlamVjdCB0aGUgYWdncmVnYXRlIGlmIG5lZWRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGl0ZXJhYmxlIEl0ZXJhdG9yIG9yIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZigKICAgICAgICAkaXRlcmFibGUsCiAgICAgICAgP2NhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICAgICAgP2NhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKTogUHJvbWlzZUludGVyZmFjZSB7CiAgICAgICAgcmV0dXJuIChuZXcgRWFjaFByb21pc2UoJGl0ZXJhYmxlLCBbCiAgICAgICAgICAgICdmdWxmaWxsZWQnID0+ICRvbkZ1bGZpbGxlZCwKICAgICAgICAgICAgJ3JlamVjdGVkJyA9PiAkb25SZWplY3RlZCwKICAgICAgICBdKSktPnByb21pc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIExpa2Ugb2YsIGJ1dCBvbmx5IGFsbG93cyBhIGNlcnRhaW4gbnVtYmVyIG9mIG91dHN0YW5kaW5nIHByb21pc2VzIGF0IGFueQogICAgICogZ2l2ZW4gdGltZS4KICAgICAqCiAgICAgKiAkY29uY3VycmVuY3kgbWF5IGJlIGFuIGludGVnZXIgb3IgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgdGhlIG51bWJlciBvZgogICAgICogcGVuZGluZyBwcm9taXNlcyBhbmQgcmV0dXJucyBhIG51bWVyaWMgY29uY3VycmVuY3kgbGltaXQgdmFsdWUgdG8gYWxsb3cKICAgICAqIGZvciBkeW5hbWljIGEgY29uY3VycmVuY3kgc2l6ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgICAgICAgICRpdGVyYWJsZQogICAgICogQHBhcmFtIGludHxjYWxsYWJsZSAkY29uY3VycmVuY3kKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZkxpbWl0KAogICAgICAgICRpdGVyYWJsZSwKICAgICAgICAkY29uY3VycmVuY3ksCiAgICAgICAgP2NhbGxhYmxlICRvbkZ1bGZpbGxlZCA9IG51bGwsCiAgICAgICAgP2NhbGxhYmxlICRvblJlamVjdGVkID0gbnVsbAogICAgKTogUHJvbWlzZUludGVyZmFjZSB7CiAgICAgICAgcmV0dXJuIChuZXcgRWFjaFByb21pc2UoJGl0ZXJhYmxlLCBbCiAgICAgICAgICAgICdmdWxmaWxsZWQnID0+ICRvbkZ1bGZpbGxlZCwKICAgICAgICAgICAgJ3JlamVjdGVkJyA9PiAkb25SZWplY3RlZCwKICAgICAgICAgICAgJ2NvbmN1cnJlbmN5JyA9PiAkY29uY3VycmVuY3ksCiAgICAgICAgXSkpLT5wcm9taXNlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMaWtlIGxpbWl0LCBidXQgZW5zdXJlcyB0aGF0IG5vIHByb21pc2UgaW4gdGhlIGdpdmVuICRpdGVyYWJsZSBhcmd1bWVudAogICAgICogaXMgcmVqZWN0ZWQuIElmIGFueSBwcm9taXNlIGlzIHJlamVjdGVkLCB0aGVuIHRoZSBhZ2dyZWdhdGUgcHJvbWlzZSBpcwogICAgICogcmVqZWN0ZWQgd2l0aCB0aGUgZW5jb3VudGVyZWQgcmVqZWN0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAgJGl0ZXJhYmxlCiAgICAgKiBAcGFyYW0gaW50fGNhbGxhYmxlICRjb25jdXJyZW5jeQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9mTGltaXRBbGwoCiAgICAgICAgJGl0ZXJhYmxlLAogICAgICAgICRjb25jdXJyZW5jeSwKICAgICAgICA/Y2FsbGFibGUgJG9uRnVsZmlsbGVkID0gbnVsbAogICAgKTogUHJvbWlzZUludGVyZmFjZSB7CiAgICAgICAgcmV0dXJuIHNlbGY6Om9mTGltaXQoCiAgICAgICAgICAgICRpdGVyYWJsZSwKICAgICAgICAgICAgJGNvbmN1cnJlbmN5LAogICAgICAgICAgICAkb25GdWxmaWxsZWQsCiAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVhc29uLCAkaWR4LCBQcm9taXNlSW50ZXJmYWNlICRhZ2dyZWdhdGUpOiB2b2lkIHsKICAgICAgICAgICAgICAgICRhZ2dyZWdhdGUtPnJlamVjdCgkcmVhc29uKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/EachPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBSZXByZXNlbnRzIGEgcHJvbWlzZSB0aGF0IGl0ZXJhdGVzIG92ZXIgbWFueSBwcm9taXNlcyBhbmQgaW52b2tlcwogKiBzaWRlLWVmZmVjdCBmdW5jdGlvbnMgaW4gdGhlIHByb2Nlc3MuCiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgRWFjaFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNvckludGVyZmFjZQp7CiAgICBwcml2YXRlICRwZW5kaW5nID0gW107CgogICAgcHJpdmF0ZSAkbmV4dFBlbmRpbmdJbmRleCA9IDA7CgogICAgLyoqIEB2YXIgXEl0ZXJhdG9yfG51bGwgKi8KICAgIHByaXZhdGUgJGl0ZXJhYmxlOwoKICAgIC8qKiBAdmFyIGNhbGxhYmxlfGludHxudWxsICovCiAgICBwcml2YXRlICRjb25jdXJyZW5jeTsKCiAgICAvKiogQHZhciBjYWxsYWJsZXxudWxsICovCiAgICBwcml2YXRlICRvbkZ1bGZpbGxlZDsKCiAgICAvKiogQHZhciBjYWxsYWJsZXxudWxsICovCiAgICBwcml2YXRlICRvblJlamVjdGVkOwoKICAgIC8qKiBAdmFyIFByb21pc2V8bnVsbCAqLwogICAgcHJpdmF0ZSAkYWdncmVnYXRlOwoKICAgIC8qKiBAdmFyIGJvb2x8bnVsbCAqLwogICAgcHJpdmF0ZSAkbXV0ZXg7CgogICAgLyoqCiAgICAgKiBDb25maWd1cmF0aW9uIGhhc2ggY2FuIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBrZXkgdmFsdWUgcGFpcnM6CiAgICAgKgogICAgICogLSBmdWxmaWxsZWQ6IChjYWxsYWJsZSkgSW52b2tlZCB3aGVuIGEgcHJvbWlzZSBmdWxmaWxscy4gVGhlIGZ1bmN0aW9uCiAgICAgKiAgIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6IHRoZSBmdWxmaWxsbWVudCB2YWx1ZSwgdGhlIGluZGV4CiAgICAgKiAgIHBvc2l0aW9uIGZyb20gdGhlIGl0ZXJhYmxlIGxpc3Qgb2YgdGhlIHByb21pc2UsIGFuZCB0aGUgYWdncmVnYXRlCiAgICAgKiAgIHByb21pc2UgdGhhdCBtYW5hZ2VzIGFsbCBvZiB0aGUgcHJvbWlzZXMuIFRoZSBhZ2dyZWdhdGUgcHJvbWlzZSBtYXkKICAgICAqICAgYmUgcmVzb2x2ZWQgZnJvbSB3aXRoaW4gdGhlIGNhbGxiYWNrIHRvIHNob3J0LWNpcmN1aXQgdGhlIHByb21pc2UuCiAgICAgKiAtIHJlamVjdGVkOiAoY2FsbGFibGUpIEludm9rZWQgd2hlbiBhIHByb21pc2UgaXMgcmVqZWN0ZWQuIFRoZQogICAgICogICBmdW5jdGlvbiBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOiB0aGUgcmVqZWN0aW9uIHJlYXNvbiwgdGhlCiAgICAgKiAgIGluZGV4IHBvc2l0aW9uIGZyb20gdGhlIGl0ZXJhYmxlIGxpc3Qgb2YgdGhlIHByb21pc2UsIGFuZCB0aGUKICAgICAqICAgYWdncmVnYXRlIHByb21pc2UgdGhhdCBtYW5hZ2VzIGFsbCBvZiB0aGUgcHJvbWlzZXMuIFRoZSBhZ2dyZWdhdGUKICAgICAqICAgcHJvbWlzZSBtYXkgYmUgcmVzb2x2ZWQgZnJvbSB3aXRoaW4gdGhlIGNhbGxiYWNrIHRvIHNob3J0LWNpcmN1aXQKICAgICAqICAgdGhlIHByb21pc2UuCiAgICAgKiAtIGNvbmN1cnJlbmN5OiAoaW50ZWdlcikgUGFzcyB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGxpbWl0IHRoZQogICAgICogICBhbGxvd2VkIG51bWJlciBvZiBvdXRzdGFuZGluZyBjb25jdXJyZW50bHkgZXhlY3V0aW5nIHByb21pc2VzLAogICAgICogICBjcmVhdGluZyBhIGNhcHBlZCBwb29sIG9mIHByb21pc2VzLiBUaGVyZSBpcyBubyBsaW1pdCBieSBkZWZhdWx0LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkaXRlcmFibGUgUHJvbWlzZXMgb3IgdmFsdWVzIHRvIGl0ZXJhdGUuCiAgICAgKiBAcGFyYW0gYXJyYXkgJGNvbmZpZyAgIENvbmZpZ3VyYXRpb24gb3B0aW9ucwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGl0ZXJhYmxlLCBhcnJheSAkY29uZmlnID0gW10pCiAgICB7CiAgICAgICAgJHRoaXMtPml0ZXJhYmxlID0gQ3JlYXRlOjppdGVyRm9yKCRpdGVyYWJsZSk7CgogICAgICAgIGlmIChpc3NldCgkY29uZmlnWydjb25jdXJyZW5jeSddKSkgewogICAgICAgICAgICAkdGhpcy0+Y29uY3VycmVuY3kgPSAkY29uZmlnWydjb25jdXJyZW5jeSddOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRjb25maWdbJ2Z1bGZpbGxlZCddKSkgewogICAgICAgICAgICAkdGhpcy0+b25GdWxmaWxsZWQgPSAkY29uZmlnWydmdWxmaWxsZWQnXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkY29uZmlnWydyZWplY3RlZCddKSkgewogICAgICAgICAgICAkdGhpcy0+b25SZWplY3RlZCA9ICRjb25maWdbJ3JlamVjdGVkJ107CiAgICAgICAgfQogICAgfQoKICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgSW52YWxpZE51bGxhYmxlUmV0dXJuVHlwZSAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByb21pc2UoKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIGlmICgkdGhpcy0+YWdncmVnYXRlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+YWdncmVnYXRlOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRoaXMtPmNyZWF0ZVByb21pc2UoKTsKICAgICAgICAgICAgLyoqIEBwc2FsbS1hc3NlcnQgUHJvbWlzZSAkdGhpcy0+YWdncmVnYXRlICovCiAgICAgICAgICAgICR0aGlzLT5pdGVyYWJsZS0+cmV3aW5kKCk7CiAgICAgICAgICAgICR0aGlzLT5yZWZpbGxQZW5kaW5nKCk7CiAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAkdGhpcy0+YWdncmVnYXRlLT5yZWplY3QoJGUpOwogICAgICAgIH0KCiAgICAgICAgLyoqCiAgICAgICAgICogQHBzYWxtLXN1cHByZXNzIE51bGxhYmxlUmV0dXJuU3RhdGVtZW50CiAgICAgICAgICovCiAgICAgICAgcmV0dXJuICR0aGlzLT5hZ2dyZWdhdGU7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjcmVhdGVQcm9taXNlKCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+bXV0ZXggPSBmYWxzZTsKICAgICAgICAkdGhpcy0+YWdncmVnYXRlID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKCk6IHZvaWQgewogICAgICAgICAgICBpZiAoJHRoaXMtPmNoZWNrSWZGaW5pc2hlZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmVzZXQoJHRoaXMtPnBlbmRpbmcpOwogICAgICAgICAgICAvLyBDb25zdW1lIGEgcG90ZW50aWFsbHkgZmx1Y3R1YXRpbmcgbGlzdCBvZiBwcm9taXNlcyB3aGlsZQogICAgICAgICAgICAvLyBlbnN1cmluZyB0aGF0IGluZGV4ZXMgYXJlIG1haW50YWluZWQgKHByZWNsdWRpbmcgYXJyYXlfc2hpZnQpLgogICAgICAgICAgICB3aGlsZSAoJHByb21pc2UgPSBjdXJyZW50KCR0aGlzLT5wZW5kaW5nKSkgewogICAgICAgICAgICAgICAgbmV4dCgkdGhpcy0+cGVuZGluZyk7CiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+d2FpdCgpOwogICAgICAgICAgICAgICAgaWYgKElzOjpzZXR0bGVkKCR0aGlzLT5hZ2dyZWdhdGUpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIENsZWFyIHRoZSByZWZlcmVuY2VzIHdoZW4gdGhlIHByb21pc2UgaXMgcmVzb2x2ZWQuCiAgICAgICAgJGNsZWFyRm4gPSBmdW5jdGlvbiAoKTogdm9pZCB7CiAgICAgICAgICAgICR0aGlzLT5pdGVyYWJsZSA9ICR0aGlzLT5jb25jdXJyZW5jeSA9ICR0aGlzLT5wZW5kaW5nID0gbnVsbDsKICAgICAgICAgICAgJHRoaXMtPm9uRnVsZmlsbGVkID0gJHRoaXMtPm9uUmVqZWN0ZWQgPSBudWxsOwogICAgICAgICAgICAkdGhpcy0+bmV4dFBlbmRpbmdJbmRleCA9IDA7CiAgICAgICAgfTsKCiAgICAgICAgJHRoaXMtPmFnZ3JlZ2F0ZS0+dGhlbigkY2xlYXJGbiwgJGNsZWFyRm4pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmVmaWxsUGVuZGluZygpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkdGhpcy0+Y29uY3VycmVuY3kpIHsKICAgICAgICAgICAgLy8gQWRkIGFsbCBwZW5kaW5nIHByb21pc2VzLgogICAgICAgICAgICB3aGlsZSAoJHRoaXMtPmFkZFBlbmRpbmcoKSAmJiAkdGhpcy0+YWR2YW5jZUl0ZXJhdG9yKCkpIHsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gQWRkIG9ubHkgdXAgdG8gTiBwZW5kaW5nIHByb21pc2VzLgogICAgICAgICRjb25jdXJyZW5jeSA9IGlzX2NhbGxhYmxlKCR0aGlzLT5jb25jdXJyZW5jeSkKICAgICAgICAgICAgPyAoJHRoaXMtPmNvbmN1cnJlbmN5KShjb3VudCgkdGhpcy0+cGVuZGluZykpCiAgICAgICAgICAgIDogJHRoaXMtPmNvbmN1cnJlbmN5OwogICAgICAgICRjb25jdXJyZW5jeSA9IG1heCgkY29uY3VycmVuY3kgLSBjb3VudCgkdGhpcy0+cGVuZGluZyksIDApOwogICAgICAgIC8vIENvbmN1cnJlbmN5IG1heSBiZSBzZXQgdG8gMCB0byBkaXNhbGxvdyBuZXcgcHJvbWlzZXMuCiAgICAgICAgaWYgKCEkY29uY3VycmVuY3kpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAvLyBBZGQgdGhlIGZpcnN0IHBlbmRpbmcgcHJvbWlzZS4KICAgICAgICAkdGhpcy0+YWRkUGVuZGluZygpOwogICAgICAgIC8vIE5vdGUgdGhpcyBpcyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjb25jdXJyZW5jeT0xIHNvIHRoYXQgd2UgZG8KICAgICAgICAvLyBub3QgYWR2YW5jZSB0aGUgaXRlcmF0b3IgYWZ0ZXIgYWRkaW5nIHRoZSBmaXJzdCBwcm9taXNlLiBUaGlzCiAgICAgICAgLy8gaGVscHMgd29yayBhcm91bmQgaXNzdWVzIHdpdGggZ2VuZXJhdG9ycyB0aGF0IG1pZ2h0IG5vdCBoYXZlIHRoZQogICAgICAgIC8vIG5leHQgdmFsdWUgdG8geWllbGQgdW50aWwgcHJvbWlzZSBjYWxsYmFja3MgYXJlIGNhbGxlZC4KICAgICAgICB3aGlsZSAoLS0kY29uY3VycmVuY3kKICAgICAgICAgICAgJiYgJHRoaXMtPmFkdmFuY2VJdGVyYXRvcigpCiAgICAgICAgICAgICYmICR0aGlzLT5hZGRQZW5kaW5nKCkpIHsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGRQZW5kaW5nKCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5pdGVyYWJsZSB8fCAhJHRoaXMtPml0ZXJhYmxlLT52YWxpZCgpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CgogICAgICAgICRwcm9taXNlID0gQ3JlYXRlOjpwcm9taXNlRm9yKCR0aGlzLT5pdGVyYWJsZS0+Y3VycmVudCgpKTsKICAgICAgICAka2V5ID0gJHRoaXMtPml0ZXJhYmxlLT5rZXkoKTsKCiAgICAgICAgLy8gSXRlcmFibGUga2V5cyBtYXkgbm90IGJlIHVuaXF1ZSwgc28gd2UgdXNlIGEgY291bnRlciB0bwogICAgICAgIC8vIGd1YXJhbnRlZSB1bmlxdWVuZXNzCiAgICAgICAgJGlkeCA9ICR0aGlzLT5uZXh0UGVuZGluZ0luZGV4Kys7CgogICAgICAgICR0aGlzLT5wZW5kaW5nWyRpZHhdID0gJHByb21pc2UtPnRoZW4oCiAgICAgICAgICAgIGZ1bmN0aW9uICgkdmFsdWUpIHVzZSAoJGlkeCwgJGtleSk6IHZvaWQgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5vbkZ1bGZpbGxlZCkgewogICAgICAgICAgICAgICAgICAgICgkdGhpcy0+b25GdWxmaWxsZWQpKAogICAgICAgICAgICAgICAgICAgICAgICAkdmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICRrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnN0ZXAoJGlkeCk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVhc29uKSB1c2UgKCRpZHgsICRrZXkpOiB2b2lkIHsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+b25SZWplY3RlZCkgewogICAgICAgICAgICAgICAgICAgICgkdGhpcy0+b25SZWplY3RlZCkoCiAgICAgICAgICAgICAgICAgICAgICAgICRyZWFzb24sCiAgICAgICAgICAgICAgICAgICAgICAgICRrZXksCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHRoaXMtPnN0ZXAoJGlkeCk7CiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFkdmFuY2VJdGVyYXRvcigpOiBib29sCiAgICB7CiAgICAgICAgLy8gUGxhY2UgYSBsb2NrIG9uIHRoZSBpdGVyYXRvciBzbyB0aGF0IHdlIGVuc3VyZSB0byBub3QgcmVjdXJzZSwKICAgICAgICAvLyBwcmV2ZW50aW5nIGZhdGFsIGdlbmVyYXRvciBlcnJvcnMuCiAgICAgICAgaWYgKCR0aGlzLT5tdXRleCkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+bXV0ZXggPSB0cnVlOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAkdGhpcy0+aXRlcmFibGUtPm5leHQoKTsKICAgICAgICAgICAgJHRoaXMtPm11dGV4ID0gZmFsc2U7CgogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICR0aGlzLT5hZ2dyZWdhdGUtPnJlamVjdCgkZSk7CiAgICAgICAgICAgICR0aGlzLT5tdXRleCA9IGZhbHNlOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHN0ZXAoaW50ICRpZHgpOiB2b2lkCiAgICB7CiAgICAgICAgLy8gSWYgdGhlIHByb21pc2Ugd2FzIGFscmVhZHkgcmVzb2x2ZWQsIHRoZW4gaWdub3JlIHRoaXMgc3RlcC4KICAgICAgICBpZiAoSXM6OnNldHRsZWQoJHRoaXMtPmFnZ3JlZ2F0ZSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdW5zZXQoJHRoaXMtPnBlbmRpbmdbJGlkeF0pOwoKICAgICAgICAvLyBPbmx5IHJlZmlsbCBwZW5kaW5nIHByb21pc2VzIGlmIHdlIGFyZSBub3QgbG9ja2VkLCBwcmV2ZW50aW5nIHRoZQogICAgICAgIC8vIEVhY2hQcm9taXNlIHRvIHJlY3Vyc2l2ZWx5IGludm9rZSB0aGUgcHJvdmlkZWQgaXRlcmF0b3IsIHdoaWNoCiAgICAgICAgLy8gY2F1c2UgYSBmYXRhbCBlcnJvcjogIkNhbm5vdCByZXN1bWUgYW4gYWxyZWFkeSBydW5uaW5nIGdlbmVyYXRvciIKICAgICAgICBpZiAoJHRoaXMtPmFkdmFuY2VJdGVyYXRvcigpICYmICEkdGhpcy0+Y2hlY2tJZkZpbmlzaGVkKCkpIHsKICAgICAgICAgICAgLy8gQWRkIG1vcmUgcGVuZGluZyBwcm9taXNlcyBpZiBwb3NzaWJsZS4KICAgICAgICAgICAgJHRoaXMtPnJlZmlsbFBlbmRpbmcoKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0lmRmluaXNoZWQoKTogYm9vbAogICAgewogICAgICAgIGlmICghJHRoaXMtPnBlbmRpbmcgJiYgISR0aGlzLT5pdGVyYWJsZS0+dmFsaWQoKSkgewogICAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBwcm9taXNlIGlmIHRoZXJlJ3Mgbm90aGluZyBsZWZ0IHRvIGRvLgogICAgICAgICAgICAkdGhpcy0+YWdncmVnYXRlLT5yZXNvbHZlKG51bGwpOwoKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/FulfilledPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgdGhhdCBoYXMgYmVlbiBmdWxmaWxsZWQuCiAqCiAqIFRoZW5uaW5nIG9mZiBvZiB0aGlzIHByb21pc2Ugd2lsbCBpbnZva2UgdGhlIG9uRnVsZmlsbGVkIGNhbGxiYWNrCiAqIGltbWVkaWF0ZWx5IGFuZCBpZ25vcmUgb3RoZXIgY2FsbGJhY2tzLgogKgogKiBAZmluYWwKICovCmNsYXNzIEZ1bGZpbGxlZFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHZhbHVlOwoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHZhbHVlKQogICAgewogICAgICAgIGlmIChpc19vYmplY3QoJHZhbHVlKSAmJiBtZXRob2RfZXhpc3RzKCR2YWx1ZSwgJ3RoZW4nKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdZb3UgY2Fubm90IGNyZWF0ZSBhIEZ1bGZpbGxlZFByb21pc2Ugd2l0aCBhIHByb21pc2UuJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgIC8vIFJldHVybiBpdHNlbGYgaWYgdGhlcmUgaXMgbm8gb25GdWxmaWxsZWQgZnVuY3Rpb24uCiAgICAgICAgaWYgKCEkb25GdWxmaWxsZWQpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJHF1ZXVlID0gVXRpbHM6OnF1ZXVlKCk7CiAgICAgICAgJHAgPSBuZXcgUHJvbWlzZShbJHF1ZXVlLCAncnVuJ10pOwogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZTsKICAgICAgICAkcXVldWUtPmFkZChzdGF0aWMgZnVuY3Rpb24gKCkgdXNlICgkcCwgJHZhbHVlLCAkb25GdWxmaWxsZWQpOiB2b2lkIHsKICAgICAgICAgICAgaWYgKElzOjpwZW5kaW5nKCRwKSkgewogICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAkcC0+cmVzb2x2ZSgkb25GdWxmaWxsZWQoJHZhbHVlKSk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICAgICAgICAgJHAtPnJlamVjdCgkZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgcmV0dXJuICRwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBvdGhlcndpc2UoY2FsbGFibGUgJG9uUmVqZWN0ZWQpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT50aGVuKG51bGwsICRvblJlamVjdGVkKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FpdChib29sICR1bndyYXAgPSB0cnVlKQogICAgewogICAgICAgIHJldHVybiAkdW53cmFwID8gJHRoaXMtPnZhbHVlIDogbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdGUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OkZVTEZJTExFRDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZSgkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gJHRoaXMtPnZhbHVlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZXNvbHZlIGEgZnVsZmlsbGVkIHByb21pc2UnKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlamVjdCgkcmVhc29uKTogdm9pZAogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZWplY3QgYSBmdWxmaWxsZWQgcHJvbWlzZScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjYW5jZWwoKTogdm9pZAogICAgewogICAgICAgIC8vIHBhc3MKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Is.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIElzCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGEgcHJvbWlzZSBpcyBwZW5kaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBlbmRpbmcoUHJvbWlzZUludGVyZmFjZSAkcHJvbWlzZSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHByb21pc2UtPmdldFN0YXRlKCkgPT09IFByb21pc2VJbnRlcmZhY2U6OlBFTkRJTkc7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgYSBwcm9taXNlIGlzIGZ1bGZpbGxlZCBvciByZWplY3RlZC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXR0bGVkKFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpICE9PSBQcm9taXNlSW50ZXJmYWNlOjpQRU5ESU5HOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIGEgcHJvbWlzZSBpcyBmdWxmaWxsZWQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnVsZmlsbGVkKFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpID09PSBQcm9taXNlSW50ZXJmYWNlOjpGVUxGSUxMRUQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgYSBwcm9taXNlIGlzIHJlamVjdGVkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlamVjdGVkKFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICRwcm9taXNlLT5nZXRTdGF0ZSgpID09PSBQcm9taXNlSW50ZXJmYWNlOjpSRUpFQ1RFRDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Promise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBQcm9taXNlcy9BKyBpbXBsZW1lbnRhdGlvbiB0aGF0IGF2b2lkcyByZWN1cnNpb24gd2hlbiBwb3NzaWJsZS4KICoKICogQHNlZSBodHRwczovL3Byb21pc2VzYXBsdXMuY29tLwogKgogKiBAZmluYWwKICovCmNsYXNzIFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHN0YXRlID0gc2VsZjo6UEVORElORzsKICAgIHByaXZhdGUgJHJlc3VsdDsKICAgIHByaXZhdGUgJGNhbmNlbEZuOwogICAgcHJpdmF0ZSAkd2FpdEZuOwogICAgcHJpdmF0ZSAkd2FpdExpc3Q7CiAgICBwcml2YXRlICRoYW5kbGVycyA9IFtdOwoKICAgIC8qKgogICAgICogQHBhcmFtIGNhbGxhYmxlICR3YWl0Rm4gICBGbiB0aGF0IHdoZW4gaW52b2tlZCByZXNvbHZlcyB0aGUgcHJvbWlzZS4KICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkY2FuY2VsRm4gRm4gdGhhdCB3aGVuIGludm9rZWQgY2FuY2VscyB0aGUgcHJvbWlzZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgID9jYWxsYWJsZSAkd2FpdEZuID0gbnVsbCwKICAgICAgICA/Y2FsbGFibGUgJGNhbmNlbEZuID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPndhaXRGbiA9ICR3YWl0Rm47CiAgICAgICAgJHRoaXMtPmNhbmNlbEZuID0gJGNhbmNlbEZuOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgPT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgJHAgPSBuZXcgUHJvbWlzZShudWxsLCBbJHRoaXMsICdjYW5jZWwnXSk7CiAgICAgICAgICAgICR0aGlzLT5oYW5kbGVyc1tdID0gWyRwLCAkb25GdWxmaWxsZWQsICRvblJlamVjdGVkXTsKICAgICAgICAgICAgJHAtPndhaXRMaXN0ID0gJHRoaXMtPndhaXRMaXN0OwogICAgICAgICAgICAkcC0+d2FpdExpc3RbXSA9ICR0aGlzOwoKICAgICAgICAgICAgcmV0dXJuICRwOwogICAgICAgIH0KCiAgICAgICAgLy8gUmV0dXJuIGEgZnVsZmlsbGVkIHByb21pc2UgYW5kIGltbWVkaWF0ZWx5IGludm9rZSBhbnkgY2FsbGJhY2tzLgogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgPT09IHNlbGY6OkZVTEZJTExFRCkgewogICAgICAgICAgICAkcHJvbWlzZSA9IENyZWF0ZTo6cHJvbWlzZUZvcigkdGhpcy0+cmVzdWx0KTsKCiAgICAgICAgICAgIHJldHVybiAkb25GdWxmaWxsZWQgPyAkcHJvbWlzZS0+dGhlbigkb25GdWxmaWxsZWQpIDogJHByb21pc2U7CiAgICAgICAgfQoKICAgICAgICAvLyBJdCdzIGVpdGhlciBjYW5jZWxsZWQgb3IgcmVqZWN0ZWQsIHNvIHJldHVybiBhIHJlamVjdGVkIHByb21pc2UKICAgICAgICAvLyBhbmQgaW1tZWRpYXRlbHkgaW52b2tlIGFueSBjYWxsYmFja3MuCiAgICAgICAgJHJlamVjdGlvbiA9IENyZWF0ZTo6cmVqZWN0aW9uRm9yKCR0aGlzLT5yZXN1bHQpOwoKICAgICAgICByZXR1cm4gJG9uUmVqZWN0ZWQgPyAkcmVqZWN0aW9uLT50aGVuKG51bGwsICRvblJlamVjdGVkKSA6ICRyZWplY3Rpb247CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG90aGVyd2lzZShjYWxsYWJsZSAkb25SZWplY3RlZCk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRoZW4obnVsbCwgJG9uUmVqZWN0ZWQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3YWl0KGJvb2wgJHVud3JhcCA9IHRydWUpCiAgICB7CiAgICAgICAgJHRoaXMtPndhaXRJZlBlbmRpbmcoKTsKCiAgICAgICAgaWYgKCR0aGlzLT5yZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0LT53YWl0KCR1bndyYXApOwogICAgICAgIH0KICAgICAgICBpZiAoJHVud3JhcCkgewogICAgICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpGVUxGSUxMRUQpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVzdWx0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEl0J3MgcmVqZWN0ZWQgc28gInVud3JhcCIgYW5kIHRocm93IGFuIGV4Y2VwdGlvbi4KICAgICAgICAgICAgdGhyb3cgQ3JlYXRlOjpleGNlcHRpb25Gb3IoJHRoaXMtPnJlc3VsdCk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXRlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjYW5jZWwoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+c3RhdGUgIT09IHNlbGY6OlBFTkRJTkcpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPndhaXRGbiA9ICR0aGlzLT53YWl0TGlzdCA9IG51bGw7CgogICAgICAgIGlmICgkdGhpcy0+Y2FuY2VsRm4pIHsKICAgICAgICAgICAgJGZuID0gJHRoaXMtPmNhbmNlbEZuOwogICAgICAgICAgICAkdGhpcy0+Y2FuY2VsRm4gPSBudWxsOwogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJGZuKCk7CiAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJGUpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBSZWplY3QgdGhlIHByb21pc2Ugb25seSBpZiBpdCB3YXNuJ3QgcmVqZWN0ZWQgaW4gYSB0aGVuIGNhbGxiYWNrLgogICAgICAgIC8qKiBAcHNhbG0tc3VwcHJlc3MgUmVkdW5kYW50Q29uZGl0aW9uICovCiAgICAgICAgaWYgKCR0aGlzLT5zdGF0ZSA9PT0gc2VsZjo6UEVORElORykgewogICAgICAgICAgICAkdGhpcy0+cmVqZWN0KG5ldyBDYW5jZWxsYXRpb25FeGNlcHRpb24oJ1Byb21pc2UgaGFzIGJlZW4gY2FuY2VsbGVkJykpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzb2x2ZSgkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNldHRsZShzZWxmOjpGVUxGSUxMRUQsICR2YWx1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlamVjdCgkcmVhc29uKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZXR0bGUoc2VsZjo6UkVKRUNURUQsICRyZWFzb24pOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gc2V0dGxlKHN0cmluZyAkc3RhdGUsICR2YWx1ZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnN0YXRlICE9PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgIC8vIElnbm9yZSBjYWxscyB3aXRoIHRoZSBzYW1lIHJlc29sdXRpb24uCiAgICAgICAgICAgIGlmICgkc3RhdGUgPT09ICR0aGlzLT5zdGF0ZSAmJiAkdmFsdWUgPT09ICR0aGlzLT5yZXN1bHQpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvdyAkdGhpcy0+c3RhdGUgPT09ICRzdGF0ZQogICAgICAgICAgICAgICAgPyBuZXcgXExvZ2ljRXhjZXB0aW9uKCJUaGUgcHJvbWlzZSBpcyBhbHJlYWR5IHskc3RhdGV9LiIpCiAgICAgICAgICAgICAgICA6IG5ldyBcTG9naWNFeGNlcHRpb24oIkNhbm5vdCBjaGFuZ2UgYSB7JHRoaXMtPnN0YXRlfSBwcm9taXNlIHRvIHskc3RhdGV9Iik7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHZhbHVlID09PSAkdGhpcykgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgZnVsZmlsbCBvciByZWplY3QgYSBwcm9taXNlIHdpdGggaXRzZWxmJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhciBvdXQgdGhlIHN0YXRlIG9mIHRoZSBwcm9taXNlIGJ1dCBzdGFzaCB0aGUgaGFuZGxlcnMuCiAgICAgICAgJHRoaXMtPnN0YXRlID0gJHN0YXRlOwogICAgICAgICR0aGlzLT5yZXN1bHQgPSAkdmFsdWU7CiAgICAgICAgJGhhbmRsZXJzID0gJHRoaXMtPmhhbmRsZXJzOwogICAgICAgICR0aGlzLT5oYW5kbGVycyA9IG51bGw7CiAgICAgICAgJHRoaXMtPndhaXRMaXN0ID0gJHRoaXMtPndhaXRGbiA9IG51bGw7CiAgICAgICAgJHRoaXMtPmNhbmNlbEZuID0gbnVsbDsKCiAgICAgICAgaWYgKCEkaGFuZGxlcnMpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlIHZhbHVlIHdhcyBub3QgYSBzZXR0bGVkIHByb21pc2Ugb3IgYSB0aGVuYWJsZSwgdGhlbiByZXNvbHZlCiAgICAgICAgLy8gaXQgaW4gdGhlIHRhc2sgcXVldWUgdXNpbmcgdGhlIGNvcnJlY3QgSUQuCiAgICAgICAgaWYgKCFpc19vYmplY3QoJHZhbHVlKSB8fCAhbWV0aG9kX2V4aXN0cygkdmFsdWUsICd0aGVuJykpIHsKICAgICAgICAgICAgJGlkID0gJHN0YXRlID09PSBzZWxmOjpGVUxGSUxMRUQgPyAxIDogMjsKICAgICAgICAgICAgLy8gSXQncyBhIHN1Y2Nlc3MsIHNvIHJlc29sdmUgdGhlIGhhbmRsZXJzIGluIHRoZSBxdWV1ZS4KICAgICAgICAgICAgVXRpbHM6OnF1ZXVlKCktPmFkZChzdGF0aWMgZnVuY3Rpb24gKCkgdXNlICgkaWQsICR2YWx1ZSwgJGhhbmRsZXJzKTogdm9pZCB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICBzZWxmOjpjYWxsSGFuZGxlcigkaWQsICR2YWx1ZSwgJGhhbmRsZXIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9IGVsc2VpZiAoJHZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSAmJiBJczo6cGVuZGluZygkdmFsdWUpKSB7CiAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IG1lcmdlIG91ciBoYW5kbGVycyBvbnRvIHRoZSBuZXh0IHByb21pc2UuCiAgICAgICAgICAgICR2YWx1ZS0+aGFuZGxlcnMgPSBhcnJheV9tZXJnZSgkdmFsdWUtPmhhbmRsZXJzLCAkaGFuZGxlcnMpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIGhhbmRsZXJzIHdoZW4gdGhlIGZvcndhcmRlZCBwcm9taXNlIGlzIHJlc29sdmVkLgogICAgICAgICAgICAkdmFsdWUtPnRoZW4oCiAgICAgICAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gKCR2YWx1ZSkgdXNlICgkaGFuZGxlcnMpOiB2b2lkIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6Y2FsbEhhbmRsZXIoMSwgJHZhbHVlLCAkaGFuZGxlcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHN0YXRpYyBmdW5jdGlvbiAoJHJlYXNvbikgdXNlICgkaGFuZGxlcnMpOiB2b2lkIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkaGFuZGxlcnMgYXMgJGhhbmRsZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZjo6Y2FsbEhhbmRsZXIoMiwgJHJlYXNvbiwgJGhhbmRsZXIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDYWxsIGEgc3RhY2sgb2YgaGFuZGxlcnMgdXNpbmcgYSBzcGVjaWZpYyBjYWxsYmFjayBpbmRleCBhbmQgdmFsdWUuCiAgICAgKgogICAgICogQHBhcmFtIGludCAgICRpbmRleCAgIDEgKHJlc29sdmUpIG9yIDIgKHJlamVjdCkuCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlICAgVmFsdWUgdG8gcGFzcyB0byB0aGUgY2FsbGJhY2suCiAgICAgKiBAcGFyYW0gYXJyYXkgJGhhbmRsZXIgQXJyYXkgb2YgaGFuZGxlciBkYXRhIChwcm9taXNlIGFuZCBjYWxsYmFja3MpLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjYWxsSGFuZGxlcihpbnQgJGluZGV4LCAkdmFsdWUsIGFycmF5ICRoYW5kbGVyKTogdm9pZAogICAgewogICAgICAgIC8qKiBAdmFyIFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UgKi8KICAgICAgICAkcHJvbWlzZSA9ICRoYW5kbGVyWzBdOwoKICAgICAgICAvLyBUaGUgcHJvbWlzZSBtYXkgaGF2ZSBiZWVuIGNhbmNlbGxlZCBvciByZXNvbHZlZCBiZWZvcmUgcGxhY2luZwogICAgICAgIC8vIHRoaXMgdGh1bmsgaW4gdGhlIHF1ZXVlLgogICAgICAgIGlmIChJczo6c2V0dGxlZCgkcHJvbWlzZSkpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRoYW5kbGVyWyRpbmRleF0pKSB7CiAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICogSWYgJGYgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgdGhlbiAkaGFuZGxlciB3aWxsIGJlIGluIHRoZSBleGNlcHRpb24KICAgICAgICAgICAgICAgICAqIHN0YWNrIHRyYWNlLiBTaW5jZSAkaGFuZGxlciBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY2FsbGFibGUKICAgICAgICAgICAgICAgICAqIGl0c2VsZiB3ZSBnZXQgYSBjaXJjdWxhciByZWZlcmVuY2UuIFdlIGNsZWFyIHRoZSAkaGFuZGxlcgogICAgICAgICAgICAgICAgICogaGVyZSB0byBhdm9pZCB0aGF0IG1lbW9yeSBsZWFrLgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAkZiA9ICRoYW5kbGVyWyRpbmRleF07CiAgICAgICAgICAgICAgICB1bnNldCgkaGFuZGxlcik7CiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+cmVzb2x2ZSgkZigkdmFsdWUpKTsKICAgICAgICAgICAgfSBlbHNlaWYgKCRpbmRleCA9PT0gMSkgewogICAgICAgICAgICAgICAgLy8gRm9yd2FyZCByZXNvbHV0aW9uIHZhbHVlcyBhcy1pcy4KICAgICAgICAgICAgICAgICRwcm9taXNlLT5yZXNvbHZlKCR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBGb3J3YXJkIHJlamVjdGlvbnMgZG93biB0aGUgY2hhaW4uCiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+cmVqZWN0KCR2YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRyZWFzb24pIHsKICAgICAgICAgICAgJHByb21pc2UtPnJlamVjdCgkcmVhc29uKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB3YWl0SWZQZW5kaW5nKCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnN0YXRlICE9PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPndhaXRGbikgewogICAgICAgICAgICAkdGhpcy0+aW52b2tlV2FpdEZuKCk7CiAgICAgICAgfSBlbHNlaWYgKCR0aGlzLT53YWl0TGlzdCkgewogICAgICAgICAgICAkdGhpcy0+aW52b2tlV2FpdExpc3QoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIHdhaXQgZnVuY3Rpb24sIHRoZW4gcmVqZWN0IHRoZSBwcm9taXNlLgogICAgICAgICAgICAkdGhpcy0+cmVqZWN0KCdDYW5ub3Qgd2FpdCBvbiBhIHByb21pc2UgdGhhdCBoYXMgJwogICAgICAgICAgICAgICAgLidubyBpbnRlcm5hbCB3YWl0IGZ1bmN0aW9uLiBZb3UgbXVzdCBwcm92aWRlIGEgd2FpdCAnCiAgICAgICAgICAgICAgICAuJ2Z1bmN0aW9uIHdoZW4gY29uc3RydWN0aW5nIHRoZSBwcm9taXNlIHRvIGJlIGFibGUgdG8gJwogICAgICAgICAgICAgICAgLid3YWl0IG9uIGEgcHJvbWlzZS4nKTsKICAgICAgICB9CgogICAgICAgIFV0aWxzOjpxdWV1ZSgpLT5ydW4oKTsKCiAgICAgICAgLyoqIEBwc2FsbS1zdXBwcmVzcyBSZWR1bmRhbnRDb25kaXRpb24gKi8KICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJ0ludm9raW5nIHRoZSB3YWl0IGNhbGxiYWNrIGRpZCBub3QgcmVzb2x2ZSB0aGUgcHJvbWlzZScpOwogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGludm9rZVdhaXRGbigpOiB2b2lkCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHdmbiA9ICR0aGlzLT53YWl0Rm47CiAgICAgICAgICAgICR0aGlzLT53YWl0Rm4gPSBudWxsOwogICAgICAgICAgICAkd2ZuKHRydWUpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJHJlYXNvbikgewogICAgICAgICAgICBpZiAoJHRoaXMtPnN0YXRlID09PSBzZWxmOjpQRU5ESU5HKSB7CiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSBoYXMgbm90IGJlZW4gcmVzb2x2ZWQgeWV0LCBzbyByZWplY3QgdGhlIHByb21pc2UKICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGV4Y2VwdGlvbi4KICAgICAgICAgICAgICAgICR0aGlzLT5yZWplY3QoJHJlYXNvbik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBUaGUgcHJvbWlzZSB3YXMgYWxyZWFkeSByZXNvbHZlZCwgc28gdGhlcmUncyBhIHByb2JsZW0gaW4KICAgICAgICAgICAgICAgIC8vIHRoZSBhcHBsaWNhdGlvbi4KICAgICAgICAgICAgICAgIHRocm93ICRyZWFzb247CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBpbnZva2VXYWl0TGlzdCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHdhaXRMaXN0ID0gJHRoaXMtPndhaXRMaXN0OwogICAgICAgICR0aGlzLT53YWl0TGlzdCA9IG51bGw7CgogICAgICAgIGZvcmVhY2ggKCR3YWl0TGlzdCBhcyAkcmVzdWx0KSB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRyZXN1bHQtPndhaXRJZlBlbmRpbmcoKTsKICAgICAgICAgICAgICAgICRyZXN1bHQgPSAkcmVzdWx0LT5yZXN1bHQ7CiAgICAgICAgICAgIH0gd2hpbGUgKCRyZXN1bHQgaW5zdGFuY2VvZiBQcm9taXNlKTsKCiAgICAgICAgICAgIGlmICgkcmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZUludGVyZmFjZSkgewogICAgICAgICAgICAgICAgJHJlc3VsdC0+d2FpdChmYWxzZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/PromiseInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgcmVwcmVzZW50cyB0aGUgZXZlbnR1YWwgcmVzdWx0IG9mIGFuIGFzeW5jaHJvbm91cyBvcGVyYXRpb24uCiAqCiAqIFRoZSBwcmltYXJ5IHdheSBvZiBpbnRlcmFjdGluZyB3aXRoIGEgcHJvbWlzZSBpcyB0aHJvdWdoIGl0cyB0aGVuIG1ldGhvZCwKICogd2hpY2ggcmVnaXN0ZXJzIGNhbGxiYWNrcyB0byByZWNlaXZlIGVpdGhlciBhIHByb21pc2XigJlzIGV2ZW50dWFsIHZhbHVlIG9yCiAqIHRoZSByZWFzb24gd2h5IHRoZSBwcm9taXNlIGNhbm5vdCBiZSBmdWxmaWxsZWQuCiAqCiAqIEBzZWUgaHR0cHM6Ly9wcm9taXNlc2FwbHVzLmNvbS8KICovCmludGVyZmFjZSBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHB1YmxpYyBjb25zdCBQRU5ESU5HID0gJ3BlbmRpbmcnOwogICAgcHVibGljIGNvbnN0IEZVTEZJTExFRCA9ICdmdWxmaWxsZWQnOwogICAgcHVibGljIGNvbnN0IFJFSkVDVEVEID0gJ3JlamVjdGVkJzsKCiAgICAvKioKICAgICAqIEFwcGVuZHMgZnVsZmlsbG1lbnQgYW5kIHJlamVjdGlvbiBoYW5kbGVycyB0byB0aGUgcHJvbWlzZSwgYW5kIHJldHVybnMKICAgICAqIGEgbmV3IHByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGNhbGxlZCBoYW5kbGVyLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkb25GdWxmaWxsZWQgSW52b2tlZCB3aGVuIHRoZSBwcm9taXNlIGZ1bGZpbGxzLgogICAgICogQHBhcmFtIGNhbGxhYmxlICRvblJlamVjdGVkICBJbnZva2VkIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBBcHBlbmRzIGEgcmVqZWN0aW9uIGhhbmRsZXIgY2FsbGJhY2sgdG8gdGhlIHByb21pc2UsIGFuZCByZXR1cm5zIGEgbmV3CiAgICAgKiBwcm9taXNlIHJlc29sdmluZyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBjYWxsYmFjayBpZiBpdCBpcyBjYWxsZWQsCiAgICAgKiBvciB0byBpdHMgb3JpZ2luYWwgZnVsZmlsbG1lbnQgdmFsdWUgaWYgdGhlIHByb21pc2UgaXMgaW5zdGVhZAogICAgICogZnVsZmlsbGVkLgogICAgICoKICAgICAqIEBwYXJhbSBjYWxsYWJsZSAkb25SZWplY3RlZCBJbnZva2VkIHdoZW4gdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBvdGhlcndpc2UoY2FsbGFibGUgJG9uUmVqZWN0ZWQpOiBQcm9taXNlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogR2V0IHRoZSBzdGF0ZSBvZiB0aGUgcHJvbWlzZSAoInBlbmRpbmciLCAicmVqZWN0ZWQiLCBvciAiZnVsZmlsbGVkIikuCiAgICAgKgogICAgICogVGhlIHRocmVlIHN0YXRlcyBjYW4gYmUgY2hlY2tlZCBhZ2FpbnN0IHRoZSBjb25zdGFudHMgZGVmaW5lZCBvbgogICAgICogUHJvbWlzZUludGVyZmFjZTogUEVORElORywgRlVMRklMTEVELCBhbmQgUkVKRUNURUQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXNvbHZlIHRoZSBwcm9taXNlIHdpdGggdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkdmFsdWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwcm9taXNlIGlzIGFscmVhZHkgcmVzb2x2ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZXNvbHZlKCR2YWx1ZSk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBSZWplY3QgdGhlIHByb21pc2Ugd2l0aCB0aGUgZ2l2ZW4gcmVhc29uLgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkcmVhc29uCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgcHJvbWlzZSBpcyBhbHJlYWR5IHJlc29sdmVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVqZWN0KCRyZWFzb24pOiB2b2lkOwoKICAgIC8qKgogICAgICogQ2FuY2VscyB0aGUgcHJvbWlzZSBpZiBwb3NzaWJsZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9jYW5jZWxsYXRpb24tc3BlYy9pc3N1ZXMvNwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCk6IHZvaWQ7CgogICAgLyoqCiAgICAgKiBXYWl0cyB1bnRpbCB0aGUgcHJvbWlzZSBjb21wbGV0ZXMgaWYgcG9zc2libGUuCiAgICAgKgogICAgICogUGFzcyAkdW53cmFwIGFzIHRydWUgdG8gdW53cmFwIHRoZSByZXN1bHQgb2YgdGhlIHByb21pc2UsIGVpdGhlcgogICAgICogcmV0dXJuaW5nIHRoZSByZXNvbHZlZCB2YWx1ZSBvciB0aHJvd2luZyB0aGUgcmVqZWN0ZWQgZXhjZXB0aW9uLgogICAgICoKICAgICAqIElmIHRoZSBwcm9taXNlIGNhbm5vdCBiZSB3YWl0ZWQgb24sIHRoZW4gdGhlIHByb21pc2Ugd2lsbCBiZSByZWplY3RlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKgogICAgICogQHRocm93cyBcTG9naWNFeGNlcHRpb24gaWYgdGhlIHByb21pc2UgaGFzIG5vIHdhaXQgZnVuY3Rpb24gb3IgaWYgdGhlCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlIGRvZXMgbm90IHNldHRsZSBhZnRlciB3YWl0aW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2FpdChib29sICR1bndyYXAgPSB0cnVlKTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/PromisorInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBJbnRlcmZhY2UgdXNlZCB3aXRoIGNsYXNzZXMgdGhhdCByZXR1cm4gYSBwcm9taXNlLgogKi8KaW50ZXJmYWNlIFByb21pc29ySW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyBhIHByb21pc2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBwcm9taXNlKCk6IFByb21pc2VJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/RejectedPromise.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHByb21pc2UgdGhhdCBoYXMgYmVlbiByZWplY3RlZC4KICoKICogVGhlbm5pbmcgb2ZmIG9mIHRoaXMgcHJvbWlzZSB3aWxsIGludm9rZSB0aGUgb25SZWplY3RlZCBjYWxsYmFjawogKiBpbW1lZGlhdGVseSBhbmQgaWdub3JlIG90aGVyIGNhbGxiYWNrcy4KICoKICogQGZpbmFsCiAqLwpjbGFzcyBSZWplY3RlZFByb21pc2UgaW1wbGVtZW50cyBQcm9taXNlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJHJlYXNvbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkcmVhc29uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmVhc29uKQogICAgewogICAgICAgIGlmIChpc19vYmplY3QoJHJlYXNvbikgJiYgbWV0aG9kX2V4aXN0cygkcmVhc29uLCAndGhlbicpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ1lvdSBjYW5ub3QgY3JlYXRlIGEgUmVqZWN0ZWRQcm9taXNlIHdpdGggYSBwcm9taXNlLicKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5yZWFzb24gPSAkcmVhc29uOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0aGVuKAogICAgICAgID9jYWxsYWJsZSAkb25GdWxmaWxsZWQgPSBudWxsLAogICAgICAgID9jYWxsYWJsZSAkb25SZWplY3RlZCA9IG51bGwKICAgICk6IFByb21pc2VJbnRlcmZhY2UgewogICAgICAgIC8vIElmIHRoZXJlJ3Mgbm8gb25SZWplY3RlZCBjYWxsYmFjayB0aGVuIGp1c3QgcmV0dXJuIHNlbGYuCiAgICAgICAgaWYgKCEkb25SZWplY3RlZCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkcXVldWUgPSBVdGlsczo6cXVldWUoKTsKICAgICAgICAkcmVhc29uID0gJHRoaXMtPnJlYXNvbjsKICAgICAgICAkcCA9IG5ldyBQcm9taXNlKFskcXVldWUsICdydW4nXSk7CiAgICAgICAgJHF1ZXVlLT5hZGQoc3RhdGljIGZ1bmN0aW9uICgpIHVzZSAoJHAsICRyZWFzb24sICRvblJlamVjdGVkKTogdm9pZCB7CiAgICAgICAgICAgIGlmIChJczo6cGVuZGluZygkcCkpIHsKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSBpZiBvblJlamVjdGVkIGRvZXMgbm90IHRocm93LgogICAgICAgICAgICAgICAgICAgICRwLT5yZXNvbHZlKCRvblJlamVjdGVkKCRyZWFzb24pKTsKICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBvblJlamVjdGVkIHRocmV3LCBzbyByZXR1cm4gYSByZWplY3RlZCBwcm9taXNlLgogICAgICAgICAgICAgICAgICAgICRwLT5yZWplY3QoJGUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiAkcDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gb3RoZXJ3aXNlKGNhbGxhYmxlICRvblJlamVjdGVkKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dGhlbihudWxsLCAkb25SZWplY3RlZCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdhaXQoYm9vbCAkdW53cmFwID0gdHJ1ZSkKICAgIHsKICAgICAgICBpZiAoJHVud3JhcCkgewogICAgICAgICAgICB0aHJvdyBDcmVhdGU6OmV4Y2VwdGlvbkZvcigkdGhpcy0+cmVhc29uKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0ZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6UkVKRUNURUQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlc29sdmUoJHZhbHVlKTogdm9pZAogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0Nhbm5vdCByZXNvbHZlIGEgcmVqZWN0ZWQgcHJvbWlzZScpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWplY3QoJHJlYXNvbik6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHJlYXNvbiAhPT0gJHRoaXMtPnJlYXNvbikgewogICAgICAgICAgICB0aHJvdyBuZXcgXExvZ2ljRXhjZXB0aW9uKCdDYW5ub3QgcmVqZWN0IGEgcmVqZWN0ZWQgcHJvbWlzZScpOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY2FuY2VsKCk6IHZvaWQKICAgIHsKICAgICAgICAvLyBwYXNzCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/RejectionException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHNwZWNpYWwgZXhjZXB0aW9uIHRoYXQgaXMgdGhyb3duIHdoZW4gd2FpdGluZyBvbiBhIHJlamVjdGVkIHByb21pc2UuCiAqCiAqIFRoZSByZWFzb24gdmFsdWUgaXMgYXZhaWxhYmxlIHZpYSB0aGUgZ2V0UmVhc29uKCkgbWV0aG9kLgogKi8KY2xhc3MgUmVqZWN0aW9uRXhjZXB0aW9uIGV4dGVuZHMgXFJ1bnRpbWVFeGNlcHRpb24KewogICAgLyoqIEB2YXIgbWl4ZWQgUmVqZWN0aW9uIHJlYXNvbi4gKi8KICAgIHByaXZhdGUgJHJlYXNvbjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAgICAgICAkcmVhc29uICAgICAgUmVqZWN0aW9uIHJlYXNvbi4KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkZGVzY3JpcHRpb24gT3B0aW9uYWwgZGVzY3JpcHRpb24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmVhc29uLCA/c3RyaW5nICRkZXNjcmlwdGlvbiA9IG51bGwpCiAgICB7CiAgICAgICAgJHRoaXMtPnJlYXNvbiA9ICRyZWFzb247CgogICAgICAgICRtZXNzYWdlID0gJ1RoZSBwcm9taXNlIHdhcyByZWplY3RlZCc7CgogICAgICAgIGlmICgkZGVzY3JpcHRpb24pIHsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gJyB3aXRoIHJlYXNvbjogJy4kZGVzY3JpcHRpb247CiAgICAgICAgfSBlbHNlaWYgKGlzX3N0cmluZygkcmVhc29uKQogICAgICAgICAgICB8fCAoaXNfb2JqZWN0KCRyZWFzb24pICYmIG1ldGhvZF9leGlzdHMoJHJlYXNvbiwgJ19fdG9TdHJpbmcnKSkKICAgICAgICApIHsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gJyB3aXRoIHJlYXNvbjogJy4kdGhpcy0+cmVhc29uOwogICAgICAgIH0gZWxzZWlmICgkcmVhc29uIGluc3RhbmNlb2YgXEpzb25TZXJpYWxpemFibGUpIHsKICAgICAgICAgICAgJG1lc3NhZ2UgLj0gJyB3aXRoIHJlYXNvbjogJy5qc29uX2VuY29kZSgkdGhpcy0+cmVhc29uLCBKU09OX1BSRVRUWV9QUklOVCk7CiAgICAgICAgfQoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXNzYWdlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHJlamVjdGlvbiByZWFzb24uCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVhc29uKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlYXNvbjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/TaskQueue.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCi8qKgogKiBBIHRhc2sgcXVldWUgdGhhdCBleGVjdXRlcyB0YXNrcyBpbiBhIEZJRk8gb3JkZXIuCiAqCiAqIFRoaXMgdGFzayBxdWV1ZSBjbGFzcyBpcyB1c2VkIHRvIHNldHRsZSBwcm9taXNlcyBhc3luY2hyb25vdXNseSBhbmQKICogbWFpbnRhaW5zIGEgY29uc3RhbnQgc3RhY2sgc2l6ZS4gWW91IGNhbiB1c2UgdGhlIHRhc2sgcXVldWUgYXN5bmNocm9ub3VzbHkKICogYnkgY2FsbGluZyB0aGUgYHJ1bigpYCBmdW5jdGlvbiBvZiB0aGUgZ2xvYmFsIHRhc2sgcXVldWUgaW4gYW4gZXZlbnQgbG9vcC4KICoKICogICAgIEd1enpsZUh0dHBcUHJvbWlzZVxVdGlsczo6cXVldWUoKS0+cnVuKCk7CiAqCiAqIEBmaW5hbAogKi8KY2xhc3MgVGFza1F1ZXVlIGltcGxlbWVudHMgVGFza1F1ZXVlSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgJGVuYWJsZVNodXRkb3duID0gdHJ1ZTsKICAgIHByaXZhdGUgJHF1ZXVlID0gW107CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGJvb2wgJHdpdGhTaHV0ZG93biA9IHRydWUpCiAgICB7CiAgICAgICAgaWYgKCR3aXRoU2h1dGRvd24pIHsKICAgICAgICAgICAgcmVnaXN0ZXJfc2h1dGRvd25fZnVuY3Rpb24oZnVuY3Rpb24gKCk6IHZvaWQgewogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5lbmFibGVTaHV0ZG93bikgewogICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgcnVuIHRoZSB0YXNrcyBpZiBhbiBFX0VSUk9SIGRpZG4ndCBvY2N1ci4KICAgICAgICAgICAgICAgICAgICAkZXJyID0gZXJyb3JfZ2V0X2xhc3QoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoISRlcnIgfHwgKCRlcnJbJ3R5cGUnXSBeIEVfRVJST1IpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5ydW4oKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+cXVldWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZChjYWxsYWJsZSAkdGFzayk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+cXVldWVbXSA9ICR0YXNrOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBydW4oKTogdm9pZAogICAgewogICAgICAgIHdoaWxlICgkdGFzayA9IGFycmF5X3NoaWZ0KCR0aGlzLT5xdWV1ZSkpIHsKICAgICAgICAgICAgLyoqIEB2YXIgY2FsbGFibGUgJHRhc2sgKi8KICAgICAgICAgICAgJHRhc2soKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgdGFzayBxdWV1ZSB3aWxsIGJlIHJ1biBhbmQgZXhoYXVzdGVkIGJ5IGRlZmF1bHQgd2hlbiB0aGUgcHJvY2VzcwogICAgICogZXhpdHMgSUZGIHRoZSBleGl0IGlzIG5vdCB0aGUgcmVzdWx0IG9mIGEgUEhQIEVfRVJST1IgZXJyb3IuCiAgICAgKgogICAgICogWW91IGNhbiBkaXNhYmxlIHJ1bm5pbmcgdGhlIGF1dG9tYXRpYyBzaHV0ZG93biBvZiB0aGUgcXVldWUgYnkgY2FsbGluZwogICAgICogdGhpcyBmdW5jdGlvbi4gSWYgeW91IGRpc2FibGUgdGhlIHRhc2sgcXVldWUgc2h1dGRvd24gcHJvY2VzcywgdGhlbiB5b3UKICAgICAqIE1VU1QgZWl0aGVyIHJ1biB0aGUgdGFzayBxdWV1ZSAoYXMgYSByZXN1bHQgb2YgcnVubmluZyB5b3VyIGV2ZW50IGxvb3AKICAgICAqIG9yIG1hbnVhbGx5IHVzaW5nIHRoZSBydW4oKSBtZXRob2QpIG9yIHdhaXQgb24gZWFjaCBvdXRzdGFuZGluZyBwcm9taXNlLgogICAgICoKICAgICAqIE5vdGU6IFRoaXMgc2h1dGRvd24gd2lsbCBvY2N1ciBiZWZvcmUgYW55IGRlc3RydWN0b3JzIGFyZSB0cmlnZ2VyZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkaXNhYmxlU2h1dGRvd24oKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5lbmFibGVTaHV0ZG93biA9IGZhbHNlOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/TaskQueueInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmludGVyZmFjZSBUYXNrUXVldWVJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXVlIGlzIGVtcHR5LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFbXB0eSgpOiBib29sOwoKICAgIC8qKgogICAgICogQWRkcyBhIHRhc2sgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBleGVjdXRlZCB0aGUgbmV4dCB0aW1lIHJ1biBpcwogICAgICogY2FsbGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKGNhbGxhYmxlICR0YXNrKTogdm9pZDsKCiAgICAvKioKICAgICAqIEV4ZWN1dGUgYWxsIG9mIHRoZSBwZW5kaW5nIHRhc2sgaW4gdGhlIHF1ZXVlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcnVuKCk6IHZvaWQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/promises/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHJvbWlzZTsKCmZpbmFsIGNsYXNzIFV0aWxzCnsKICAgIC8qKgogICAgICogR2V0IHRoZSBnbG9iYWwgdGFzayBxdWV1ZSB1c2VkIGZvciBwcm9taXNlIHJlc29sdXRpb24uCiAgICAgKgogICAgICogVGhpcyB0YXNrIHF1ZXVlIE1VU1QgYmUgcnVuIGluIGFuIGV2ZW50IGxvb3AgaW4gb3JkZXIgZm9yIHByb21pc2VzIHRvIGJlCiAgICAgKiBzZXR0bGVkIGFzeW5jaHJvbm91c2x5LiBJdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgcnVuIHdoZW4gc3luY2hyb25vdXNseQogICAgICogd2FpdGluZyBvbiBhIHByb21pc2UuCiAgICAgKgogICAgICogPGNvZGU+CiAgICAgKiB3aGlsZSAoJGV2ZW50TG9vcC0+aXNSdW5uaW5nKCkpIHsKICAgICAqICAgICBHdXp6bGVIdHRwXFByb21pc2VcVXRpbHM6OnF1ZXVlKCktPnJ1bigpOwogICAgICogfQogICAgICogPC9jb2RlPgogICAgICoKICAgICAqIEBwYXJhbSBUYXNrUXVldWVJbnRlcmZhY2V8bnVsbCAkYXNzaWduIE9wdGlvbmFsbHkgc3BlY2lmeSBhIG5ldyBxdWV1ZSBpbnN0YW5jZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBxdWV1ZSg/VGFza1F1ZXVlSW50ZXJmYWNlICRhc3NpZ24gPSBudWxsKTogVGFza1F1ZXVlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgc3RhdGljICRxdWV1ZTsKCiAgICAgICAgaWYgKCRhc3NpZ24pIHsKICAgICAgICAgICAgJHF1ZXVlID0gJGFzc2lnbjsKICAgICAgICB9IGVsc2VpZiAoISRxdWV1ZSkgewogICAgICAgICAgICAkcXVldWUgPSBuZXcgVGFza1F1ZXVlKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHF1ZXVlOwogICAgfQoKICAgIC8qKgogICAgICogQWRkcyBhIGZ1bmN0aW9uIHRvIHJ1biBpbiB0aGUgdGFzayBxdWV1ZSB3aGVuIGl0IGlzIG5leHQgYHJ1bigpYCBhbmQKICAgICAqIHJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIG9yIHJlamVjdGVkIHdpdGggdGhlIHJlc3VsdC4KICAgICAqCiAgICAgKiBAcGFyYW0gY2FsbGFibGUgJHRhc2sgVGFzayBmdW5jdGlvbiB0byBydW4uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdGFzayhjYWxsYWJsZSAkdGFzayk6IFByb21pc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcXVldWUgPSBzZWxmOjpxdWV1ZSgpOwogICAgICAgICRwcm9taXNlID0gbmV3IFByb21pc2UoWyRxdWV1ZSwgJ3J1biddKTsKICAgICAgICAkcXVldWUtPmFkZChmdW5jdGlvbiAoKSB1c2UgKCR0YXNrLCAkcHJvbWlzZSk6IHZvaWQgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgaWYgKElzOjpwZW5kaW5nKCRwcm9taXNlKSkgewogICAgICAgICAgICAgICAgICAgICRwcm9taXNlLT5yZXNvbHZlKCR0YXNrKCkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICAgICAkcHJvbWlzZS0+cmVqZWN0KCRlKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICByZXR1cm4gJHByb21pc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBTeW5jaHJvbm91c2x5IHdhaXRzIG9uIGEgcHJvbWlzZSB0byByZXNvbHZlIGFuZCByZXR1cm5zIGFuIGluc3BlY3Rpb24KICAgICAqIHN0YXRlIGFycmF5LgogICAgICoKICAgICAqIFJldHVybnMgYSBzdGF0ZSBhc3NvY2lhdGl2ZSBhcnJheSBjb250YWluaW5nIGEgInN0YXRlIiBrZXkgbWFwcGluZyB0byBhCiAgICAgKiB2YWxpZCBwcm9taXNlIHN0YXRlLiBJZiB0aGUgc3RhdGUgb2YgdGhlIHByb21pc2UgaXMgImZ1bGZpbGxlZCIsIHRoZQogICAgICogYXJyYXkgd2lsbCBjb250YWluIGEgInZhbHVlIiBrZXkgbWFwcGluZyB0byB0aGUgZnVsZmlsbGVkIHZhbHVlIG9mIHRoZQogICAgICogcHJvbWlzZS4gSWYgdGhlIHByb21pc2UgaXMgcmVqZWN0ZWQsIHRoZSBhcnJheSB3aWxsIGNvbnRhaW4gYSAicmVhc29uIgogICAgICoga2V5IG1hcHBpbmcgdG8gdGhlIHJlamVjdGlvbiByZWFzb24gb2YgdGhlIHByb21pc2UuCiAgICAgKgogICAgICogQHBhcmFtIFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UgUHJvbWlzZSBvciB2YWx1ZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnNwZWN0KFByb21pc2VJbnRlcmZhY2UgJHByb21pc2UpOiBhcnJheQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OkZVTEZJTExFRCwKICAgICAgICAgICAgICAgICd2YWx1ZScgPT4gJHByb21pc2UtPndhaXQoKSwKICAgICAgICAgICAgXTsKICAgICAgICB9IGNhdGNoIChSZWplY3Rpb25FeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgcmV0dXJuIFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OlJFSkVDVEVELCAncmVhc29uJyA9PiAkZS0+Z2V0UmVhc29uKCldOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgcmV0dXJuIFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OlJFSkVDVEVELCAncmVhc29uJyA9PiAkZV07CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogV2FpdHMgb24gYWxsIG9mIHRoZSBwcm92aWRlZCBwcm9taXNlcywgYnV0IGRvZXMgbm90IHVud3JhcCByZWplY3RlZAogICAgICogcHJvbWlzZXMgYXMgdGhyb3duIGV4Y2VwdGlvbi4KICAgICAqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGluc3BlY3Rpb24gc3RhdGUgYXJyYXlzLgogICAgICoKICAgICAqIEBzZWUgaW5zcGVjdCBmb3IgdGhlIGluc3BlY3Rpb24gc3RhdGUgYXJyYXkgZm9ybWF0LgogICAgICoKICAgICAqIEBwYXJhbSBQcm9taXNlSW50ZXJmYWNlW10gJHByb21pc2VzIFRyYXZlcnNhYmxlIG9mIHByb21pc2VzIHRvIHdhaXQgdXBvbi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbnNwZWN0QWxsKCRwcm9taXNlcyk6IGFycmF5CiAgICB7CiAgICAgICAgJHJlc3VsdHMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkcHJvbWlzZXMgYXMgJGtleSA9PiAkcHJvbWlzZSkgewogICAgICAgICAgICAkcmVzdWx0c1ska2V5XSA9IHNlbGY6Omluc3BlY3QoJHByb21pc2UpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgfQoKICAgIC8qKgogICAgICogV2FpdHMgb24gYWxsIG9mIHRoZSBwcm92aWRlZCBwcm9taXNlcyBhbmQgcmV0dXJucyB0aGUgZnVsZmlsbGVkIHZhbHVlcy4KICAgICAqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IHRoYXQgY29udGFpbnMgdGhlIHZhbHVlIG9mIGVhY2ggcHJvbWlzZSAoaW4gdGhlIHNhbWUKICAgICAqIG9yZGVyIHRoZSBwcm9taXNlcyB3ZXJlIHByb3ZpZGVkKS4gQW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBhbnkgb2YgdGhlCiAgICAgKiBwcm9taXNlcyBhcmUgcmVqZWN0ZWQuCiAgICAgKgogICAgICogQHBhcmFtIGl0ZXJhYmxlPFByb21pc2VJbnRlcmZhY2U+ICRwcm9taXNlcyBJdGVyYWJsZSBvZiBQcm9taXNlSW50ZXJmYWNlIG9iamVjdHMgdG8gd2FpdCBvbi4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxUaHJvd2FibGUgb24gZXJyb3IKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB1bndyYXAoJHByb21pc2VzKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzdWx0cyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRwcm9taXNlcyBhcyAka2V5ID0+ICRwcm9taXNlKSB7CiAgICAgICAgICAgICRyZXN1bHRzWyRrZXldID0gJHByb21pc2UtPndhaXQoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0czsKICAgIH0KCiAgICAvKioKICAgICAqIEdpdmVuIGFuIGFycmF5IG9mIHByb21pc2VzLCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gYWxsCiAgICAgKiB0aGUgaXRlbXMgaW4gdGhlIGFycmF5IGFyZSBmdWxmaWxsZWQuCiAgICAgKgogICAgICogVGhlIHByb21pc2UncyBmdWxmaWxsbWVudCB2YWx1ZSBpcyBhbiBhcnJheSB3aXRoIGZ1bGZpbGxtZW50IHZhbHVlcyBhdAogICAgICogcmVzcGVjdGl2ZSBwb3NpdGlvbnMgdG8gdGhlIG9yaWdpbmFsIGFycmF5LiBJZiBhbnkgcHJvbWlzZSBpbiB0aGUgYXJyYXkKICAgICAqIHJlamVjdHMsIHRoZSByZXR1cm5lZCBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggdGhlIHJlamVjdGlvbiByZWFzb24uCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkICRwcm9taXNlcyAgUHJvbWlzZXMgb3IgdmFsdWVzLgogICAgICogQHBhcmFtIGJvb2wgICRyZWN1cnNpdmUgSWYgdHJ1ZSwgcmVzb2x2ZXMgbmV3IHByb21pc2VzIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGFkZGVkIHRvIHRoZSBzdGFjayBkdXJpbmcgaXRzIG93biByZXNvbHV0aW9uLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFsbCgkcHJvbWlzZXMsIGJvb2wgJHJlY3Vyc2l2ZSA9IGZhbHNlKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgICRyZXN1bHRzID0gW107CiAgICAgICAgJHByb21pc2UgPSBFYWNoOjpvZigKICAgICAgICAgICAgJHByb21pc2VzLAogICAgICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAkaWR4KSB1c2UgKCYkcmVzdWx0cyk6IHZvaWQgewogICAgICAgICAgICAgICAgJHJlc3VsdHNbJGlkeF0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGZ1bmN0aW9uICgkcmVhc29uLCAkaWR4LCBQcm9taXNlICRhZ2dyZWdhdGUpOiB2b2lkIHsKICAgICAgICAgICAgICAgIGlmIChJczo6cGVuZGluZygkYWdncmVnYXRlKSkgewogICAgICAgICAgICAgICAgICAgICRhZ2dyZWdhdGUtPnJlamVjdCgkcmVhc29uKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICktPnRoZW4oZnVuY3Rpb24gKCkgdXNlICgmJHJlc3VsdHMpIHsKICAgICAgICAgICAga3NvcnQoJHJlc3VsdHMpOwoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgICAgIH0pOwoKICAgICAgICBpZiAodHJ1ZSA9PT0gJHJlY3Vyc2l2ZSkgewogICAgICAgICAgICAkcHJvbWlzZSA9ICRwcm9taXNlLT50aGVuKGZ1bmN0aW9uICgkcmVzdWx0cykgdXNlICgkcmVjdXJzaXZlLCAmJHByb21pc2VzKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkcHJvbWlzZXMgYXMgJHByb21pc2UpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoSXM6OnBlbmRpbmcoJHByb21pc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjphbGwoJHByb21pc2VzLCAkcmVjdXJzaXZlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcHJvbWlzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEluaXRpYXRlIGEgY29tcGV0aXRpdmUgcmFjZSBiZXR3ZWVuIG11bHRpcGxlIHByb21pc2VzIG9yIHZhbHVlcyAodmFsdWVzCiAgICAgKiB3aWxsIGJlY29tZSBpbW1lZGlhdGVseSBmdWxmaWxsZWQgcHJvbWlzZXMpLgogICAgICoKICAgICAqIFdoZW4gY291bnQgYW1vdW50IG9mIHByb21pc2VzIGhhdmUgYmVlbiBmdWxmaWxsZWQsIHRoZSByZXR1cm5lZCBwcm9taXNlCiAgICAgKiBpcyBmdWxmaWxsZWQgd2l0aCBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIHRoZSBmdWxmaWxsbWVudCB2YWx1ZXMgb2YgdGhlCiAgICAgKiB3aW5uZXJzIGluIG9yZGVyIG9mIHJlc29sdXRpb24uCiAgICAgKgogICAgICogVGhpcyBwcm9taXNlIGlzIHJlamVjdGVkIHdpdGggYSB7QHNlZSBBZ2dyZWdhdGVFeGNlcHRpb259IGlmIHRoZSBudW1iZXIKICAgICAqIG9mIGZ1bGZpbGxlZCBwcm9taXNlcyBpcyBsZXNzIHRoYW4gdGhlIGRlc2lyZWQgJGNvdW50LgogICAgICoKICAgICAqIEBwYXJhbSBpbnQgICAkY291bnQgICAgVG90YWwgbnVtYmVyIG9mIHByb21pc2VzLgogICAgICogQHBhcmFtIG1peGVkICRwcm9taXNlcyBQcm9taXNlcyBvciB2YWx1ZXMuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc29tZShpbnQgJGNvdW50LCAkcHJvbWlzZXMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHJlc3VsdHMgPSBbXTsKICAgICAgICAkcmVqZWN0aW9ucyA9IFtdOwoKICAgICAgICByZXR1cm4gRWFjaDo6b2YoCiAgICAgICAgICAgICRwcm9taXNlcywKICAgICAgICAgICAgZnVuY3Rpb24gKCR2YWx1ZSwgJGlkeCwgUHJvbWlzZUludGVyZmFjZSAkcCkgdXNlICgmJHJlc3VsdHMsICRjb3VudCk6IHZvaWQgewogICAgICAgICAgICAgICAgaWYgKElzOjpzZXR0bGVkKCRwKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXN1bHRzWyRpZHhdID0gJHZhbHVlOwogICAgICAgICAgICAgICAgaWYgKGNvdW50KCRyZXN1bHRzKSA+PSAkY291bnQpIHsKICAgICAgICAgICAgICAgICAgICAkcC0+cmVzb2x2ZShudWxsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24pIHVzZSAoJiRyZWplY3Rpb25zKTogdm9pZCB7CiAgICAgICAgICAgICAgICAkcmVqZWN0aW9uc1tdID0gJHJlYXNvbjsKICAgICAgICAgICAgfQogICAgICAgICktPnRoZW4oCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHVzZSAoJiRyZXN1bHRzLCAmJHJlamVjdGlvbnMsICRjb3VudCkgewogICAgICAgICAgICAgICAgaWYgKGNvdW50KCRyZXN1bHRzKSAhPT0gJGNvdW50KSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFnZ3JlZ2F0ZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgJ05vdCBlbm91Z2ggcHJvbWlzZXMgdG8gZnVsZmlsbCBjb3VudCcsCiAgICAgICAgICAgICAgICAgICAgICAgICRyZWplY3Rpb25zCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGtzb3J0KCRyZXN1bHRzKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXlfdmFsdWVzKCRyZXN1bHRzKTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMaWtlIHNvbWUoKSwgd2l0aCAxIGFzIGNvdW50LiBIb3dldmVyLCBpZiB0aGUgcHJvbWlzZSBmdWxmaWxscywgdGhlCiAgICAgKiBmdWxmaWxsbWVudCB2YWx1ZSBpcyBub3QgYW4gYXJyYXkgb2YgMSBidXQgdGhlIHZhbHVlIGRpcmVjdGx5LgogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkcHJvbWlzZXMgUHJvbWlzZXMgb3IgdmFsdWVzLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFueSgkcHJvbWlzZXMpOiBQcm9taXNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OnNvbWUoMSwgJHByb21pc2VzKS0+dGhlbihmdW5jdGlvbiAoJHZhbHVlcykgewogICAgICAgICAgICByZXR1cm4gJHZhbHVlc1swXTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYSBwcm9taXNlIHRoYXQgaXMgZnVsZmlsbGVkIHdoZW4gYWxsIG9mIHRoZSBwcm92aWRlZCBwcm9taXNlcyBoYXZlCiAgICAgKiBiZWVuIGZ1bGZpbGxlZCBvciByZWplY3RlZC4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuZWQgcHJvbWlzZSBpcyBmdWxmaWxsZWQgd2l0aCBhbiBhcnJheSBvZiBpbnNwZWN0aW9uIHN0YXRlIGFycmF5cy4KICAgICAqCiAgICAgKiBAc2VlIGluc3BlY3QgZm9yIHRoZSBpbnNwZWN0aW9uIHN0YXRlIGFycmF5IGZvcm1hdC4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHByb21pc2VzIFByb21pc2VzIG9yIHZhbHVlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXR0bGUoJHByb21pc2VzKTogUHJvbWlzZUludGVyZmFjZQogICAgewogICAgICAgICRyZXN1bHRzID0gW107CgogICAgICAgIHJldHVybiBFYWNoOjpvZigKICAgICAgICAgICAgJHByb21pc2VzLAogICAgICAgICAgICBmdW5jdGlvbiAoJHZhbHVlLCAkaWR4KSB1c2UgKCYkcmVzdWx0cyk6IHZvaWQgewogICAgICAgICAgICAgICAgJHJlc3VsdHNbJGlkeF0gPSBbJ3N0YXRlJyA9PiBQcm9taXNlSW50ZXJmYWNlOjpGVUxGSUxMRUQsICd2YWx1ZScgPT4gJHZhbHVlXTsKICAgICAgICAgICAgfSwKICAgICAgICAgICAgZnVuY3Rpb24gKCRyZWFzb24sICRpZHgpIHVzZSAoJiRyZXN1bHRzKTogdm9pZCB7CiAgICAgICAgICAgICAgICAkcmVzdWx0c1skaWR4XSA9IFsnc3RhdGUnID0+IFByb21pc2VJbnRlcmZhY2U6OlJFSkVDVEVELCAncmVhc29uJyA9PiAkcmVhc29uXTsKICAgICAgICAgICAgfQogICAgICAgICktPnRoZW4oZnVuY3Rpb24gKCkgdXNlICgmJHJlc3VsdHMpIHsKICAgICAgICAgICAga3NvcnQoJHJlc3VsdHMpOwoKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHRzOwogICAgICAgIH0pOwogICAgfQp9Cg==]]></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[IyBDaGFuZ2UgTG9nCgpBbGwgbm90YWJsZSBjaGFuZ2VzIHRvIHRoaXMgcHJvamVjdCB3aWxsIGJlIGRvY3VtZW50ZWQgaW4gdGhpcyBmaWxlLgoKVGhlIGZvcm1hdCBpcyBiYXNlZCBvbiBbS2VlcCBhIENoYW5nZWxvZ10oaHR0cHM6Ly9rZWVwYWNoYW5nZWxvZy5jb20vZW4vMS4wLjAvKQphbmQgdGhpcyBwcm9qZWN0IGFkaGVyZXMgdG8gW1NlbWFudGljIFZlcnNpb25pbmddKGh0dHBzOi8vc2VtdmVyLm9yZy9zcGVjL3YyLjAuMC5odG1sKS4KCiMjIDIuOS4wIC0gMjAyNi0wMy0xMAoKIyMjIEFkZGVkCgotIEFkZGVkIG5lc3RlZCBhcnJheSBleHBhbnNpb24gc3VwcG9ydCB0byBgTXVsdGlwYXJ0U3RyZWFtYAotIEFkZGVkIGBAcmV0dXJuIHN0YXRpY2AgdG8gYE1lc3NhZ2VUcmFpdGAgbWV0aG9kcwoKIyMjIENoYW5nZWQKCi0gVXBkYXRlZCBNSU1FIHR5cGUgbWFwcGluZ3MKCiMjIDIuOC4xIC0gMjAyNi0wMy0xMAoKIyMjIEZpeGVkCgotIEVuY29kZSBgK2Agc2lnbnMgaW4gYFVyaTo6d2l0aFF1ZXJ5VmFsdWUoKWAgYW5kIGBVcmk6OndpdGhRdWVyeVZhbHVlcygpYCB0byBwcmV2ZW50IHRoZW0gYmVpbmcgaW50ZXJwcmV0ZWQgYXMgc3BhY2VzCgojIyAyLjguMCAtIDIwMjUtMDgtMjMKCiMjIyBBZGRlZAoKLSBBbGxvdyBlbXB0eSBsaXN0cyBhcyBoZWFkZXIgdmFsdWVzCgojIyMgQ2hhbmdlZAoKLSBQSFAgOC41IHN1cHBvcnQKCiMjIDIuNy4xIC0gMjAyNS0wMy0yNwoKIyMjIEZpeGVkCgotIEZpeGVkIHVwcGVyY2FzZSBJUHY2IGFkZHJlc3NlcyBpbiBVUkkKCiMjIyBDaGFuZ2VkCgotIEltcHJvdmUgdXBsb2FkZWQgZmlsZSBlcnJvciBtZXNzYWdlCgojIyAyLjcuMCAtIDIwMjQtMDctMTgKCiMjIyBBZGRlZAoKLSBBZGQgYFV0aWxzOjpyZWRhY3RVc2VySW5mbygpYCBtZXRob2QKLSBBZGQgYWJpbGl0eSB0byBlbmNvZGUgYm9vbHMgYXMgaW50cyBpbiBgUXVlcnk6OmJ1aWxkYAoKIyMgMi42LjMgLSAyMDI0LTA3LTE4CgojIyMgRml4ZWQKCi0gTWFrZSBgU3RyZWFtV3JhcHBlcjo6c3RyZWFtX3N0YXQoKWAgcmV0dXJuIGBmYWxzZWAgaWYgaW5uZXIgc3RyZWFtJ3Mgc2l6ZSBpcyBgbnVsbGAgCgojIyMgQ2hhbmdlZAoKLSBQSFAgOC40IHN1cHBvcnQKCiMjIDIuNi4yIC0gMjAyMy0xMi0wMwoKIyMjIEZpeGVkCgotIEZpeGVkIGFub3RoZXIgaXNzdWUgd2l0aCB0aGUgZmFjdCB0aGF0IFBIUCB0cmFuc2Zvcm1zIG51bWVyaWMgc3RyaW5ncyBpbiBhcnJheSBrZXlzIHRvIGludHMKCiMjIyBDaGFuZ2VkCgotIFVwZGF0ZWQgbGlua3MgaW4gZG9jcyB0byB0aGVpciBjYW5vbmljYWwgdmVyc2lvbnMKLSBSZXBsYWNlZCBgY2FsbF91c2VyX2Z1bmMqYCB3aXRoIG5hdGl2ZSBjYWxscwoKIyMgMi42LjEgLSAyMDIzLTA4LTI3CgojIyMgRml4ZWQKCi0gUHJvcGVybHkgaGFuZGxlIHRoZSBmYWN0IHRoYXQgUEhQIHRyYW5zZm9ybXMgbnVtZXJpYyBzdHJpbmdzIGluIGFycmF5IGtleXMgdG8gaW50cwoKIyMgMi42LjAgLSAyMDIzLTA4LTAzCgojIyMgQ2hhbmdlZAoKLSBVcGRhdGVkIHRoZSBtaW1lIHR5cGUgbWFwIHRvIGFkZCBzb21lIG5ldyBlbnRyaWVzLCBmaXggYSBjb3VwbGUgb2YgaW52YWxpZCBlbnRyaWVzLCBhbmQgcmVtb3ZlIGFuIGludmFsaWQgZW50cnkKLSBGYWxsYmFjayB0byBgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtYCBpZiB3ZSBhcmUgdW5hYmxlIHRvIGd1ZXNzIHRoZSBjb250ZW50IHR5cGUgZm9yIGEgbXVsdGlwYXJ0IGZpbGUgdXBsb2FkCgojIyAyLjUuMSAtIDIwMjMtMDgtMDMKCiMjIyBGaXhlZAoKLSBDb3JyZWN0ZWQgbWltZSB0eXBlIGZvciBgLmFjY2AgZmlsZXMgdG8gYGF1ZGlvL2FhY2AKCiMjIyBDaGFuZ2VkCgotIFBIUCA4LjMgc3VwcG9ydAoKIyMgMi41LjAgLSAyMDIzLTA0LTE3CgojIyMgQ2hhbmdlZAoKLSBBZGp1c3RlZCBgcHNyL2h0dHAtbWVzc2FnZWAgdmVyc2lvbiBjb25zdHJhaW50IHRvIGBeMS4xIHx8IF4yLjBgCgojIyAyLjQuNSAtIDIwMjMtMDQtMTcKCiMjIyBGaXhlZAoKLSBQcmV2ZW50IHBvc3NpYmxlIHdhcm5pbmdzIG9uIHVuc2V0IHZhcmlhYmxlcyBpbiBgU2VydmVyUmVxdWVzdDo6bm9ybWFsaXplTmVzdGVkRmlsZVNwZWNgCi0gRml4ZWQgYE1lc3NhZ2U6OmJvZHlTdW1tYXJ5YCB3aGVuIGBwcmVnX21hdGNoYCBmYWlscwotIEZpeGVkIGhlYWRlciB2YWxpZGF0aW9uIGlzc3VlCgojIyAyLjQuNCAtIDIwMjMtMDMtMDkKCiMjIyBDaGFuZ2VkCgotIFJlbW92ZWQgdGhlIG5lZWQgZm9yIGBBbGxvd0R5bmFtaWNQcm9wZXJ0aWVzYCBpbiBgTGF6eU9wZW5TdHJlYW1gCgojIyAyLjQuMyAtIDIwMjItMTAtMjYKCiMjIyBDaGFuZ2VkCgotIFJlcGxhY2VkIGBzaGExKHVuaXFpZCgpKWAgYnkgYGJpbjJoZXgocmFuZG9tX2J5dGVzKDIwKSlgCgojIyAyLjQuMiAtIDIwMjItMTAtMjUKCiMjIyBGaXhlZAoKLSBGaXhlZCBlcnJvbmVvdXMgYmVoYXZpb3VyIHdoZW4gY29tYmluaW5nIGhvc3QgYW5kIHJlbGF0aXZlIHBhdGgKCiMjIDIuNC4xIC0gMjAyMi0wOC0yOAoKIyMjIEZpeGVkCgotIFJld2luZCBib2R5IGJlZm9yZSByZWFkaW5nIGluIGBNZXNzYWdlOjpib2R5U3VtbWFyeWAKCiMjIDIuNC4wIC0gMjAyMi0wNi0yMAoKIyMjIEFkZGVkCgotIEFkZGVkIHByb3Zpc2lvbmFsIFBIUCA4LjIgc3VwcG9ydAotIEFkZGVkIGBVcmlDb21wYXJhdG9yOjppc0Nyb3NzT3JpZ2luYCBtZXRob2QKCiMjIDIuMy4wIC0gMjAyMi0wNi0wOQoKIyMjIEZpeGVkCgotIEFkZGVkIGBIZWFkZXI6OnNwbGl0TGlzdGAgbWV0aG9kCi0gQWRkZWQgYFV0aWxzOjp0cnlHZXRDb250ZW50c2AgbWV0aG9kCi0gSW1wcm92ZWQgYFN0cmVhbTo6Z2V0Q29udGVudHNgIG1ldGhvZAotIFVwZGF0ZWQgbWltZXR5cGUgbWFwcGluZ3MKCiMjIDIuMi4yIC0gMjAyMi0wNi0wOAoKIyMjIEZpeGVkCgotIEZpeCBgTWVzc2FnZTo6cGFyc2VSZXF1ZXN0VXJpYCBmb3IgbnVtZXJpYyBoZWFkZXJzCi0gUmUtd3JhcCBleGNlcHRpb25zIHRocm93biBpbiBgZnJlYWRgIGludG8gcnVudGltZSBleGNlcHRpb25zCi0gVGhyb3cgYW4gZXhjZXB0aW9uIHdoZW4gbXVsdGlwYXJ0IG9wdGlvbnMgaXMgbWlzZm9ybWF0dGVkCgojIyAyLjIuMSAtIDIwMjItMDMtMjAKCiMjIyBGaXhlZAoKLSBDb3JyZWN0IGhlYWRlciB2YWx1ZSB2YWxpZGF0aW9uCgojIyAyLjIuMCAtIDIwMjItMDMtMjAKCiMjIyBBZGRlZAoKLSBBIG1vcmUgY29tcHJlc3NpdmUgbGlzdCBvZiBtaW1lIHR5cGVzCi0gQWRkIEpzb25TZXJpYWxpemFibGUgdG8gVXJpCi0gTWlzc2luZyByZXR1cm4gdHlwZXMKCiMjIyBGaXhlZAoKLSBCdWcgTXVsdGlwYXJ0U3RyZWFtIG5vIGB1cmlgIG1ldGFkYXRhCi0gQnVnIE11bHRpcGFydFN0cmVhbSB3aXRoIGZpbGVuYW1lIGZvciBgZGF0YTovL2Agc3RyZWFtcwotIEZpeGVkIG5ldyBsaW5lIGhhbmRsaW5nIGluIE11bHRpcGFydFN0cmVhbQotIFJlZHVjZWQgUkFNIHVzYWdlIHdoZW4gY29weWluZyBzdHJlYW1zCi0gVXBkYXRlZCBwYXJzaW5nIGluIGBIZWFkZXI6Om5vcm1hbGl6ZSgpYAoKIyMgMi4xLjEgLSAyMDIyLTAzLTIwCgojIyMgRml4ZWQKCi0gVmFsaWRhdGUgaGVhZGVyIHZhbHVlcyBwcm9wZXJseQoKIyMgMi4xLjAgLSAyMDIxLTEwLTA2CgojIyMgQ2hhbmdlZAoKLSBBdHRlbXB0aW5nIHRvIGNyZWF0ZSBhIGBVcmlgIG9iamVjdCBmcm9tIGEgbWFsZm9ybWVkIFVSSSB3aWxsIG5vIGxvbmdlciB0aHJvdyBhIGdlbmVyaWMKICBgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uYCwgYnV0IHJhdGhlciBhIGBNYWxmb3JtZWRVcmlFeGNlcHRpb25gLCB3aGljaCBpbmhlcml0cyBmcm9tIHRoZSBmb3JtZXIKICBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIENhbGxlcnMgcmVseWluZyBvbiB0aGUgZXhjZXB0aW9uIGJlaW5nIHRocm93biB0byBkZXRlY3QgaW52YWxpZAogIFVSSXMgc2hvdWxkIGNhdGNoIHRoZSBuZXcgZXhjZXB0aW9uLgoKIyMjIEZpeGVkCgotIFJldHVybiBgbnVsbGAgaW4gY2FjaGluZyBzdHJlYW0gc2l6ZSBpZiByZW1vdGUgc2l6ZSBpcyBgbnVsbGAKCiMjIDIuMC4wIC0gMjAyMS0wNi0zMAoKSWRlbnRpY2FsIHRvIHRoZSBSQyByZWxlYXNlLgoKIyMgMi4wLjBAUkMtMSAtIDIwMjEtMDQtMjkKCiMjIyBGaXhlZAoKLSBIYW5kbGUgcG9zc2libHkgdW5zZXQgYHVybGAgaW4gYHN0cmVhbV9nZXRfbWV0YV9kYXRhYAoKIyMgMi4wLjBAYmV0YS0xIC0gMjAyMS0wMy0yMQoKIyMjIEFkZGVkCgotIFBTUi0xNyBmYWN0b3JpZXMKLSBNYWRlIGNsYXNzZXMgZmluYWwKLSBQSFA3IHR5cGUgaGludHMKCiMjIyBDaGFuZ2VkCgotIFdoZW4gYnVpbGRpbmcgYSBxdWVyeSBzdHJpbmcsIGJvb2xlYW5zIGFyZSByZXByZXNlbnRlZCBhcyAxIGFuZCAwLgoKIyMjIFJlbW92ZWQKCi0gUEhQIDwgNy4yIHN1cHBvcnQKLSBBbGwgZnVuY3Rpb25zIGluIHRoZSBgR3V6emxlSHR0cFxQc3I3YCBuYW1lc3BhY2UKCiMjIDEuOC4xIC0gMjAyMS0wMy0yMQoKIyMjIEZpeGVkCgotIElzc3VlIHBhcnNpbmcgSVB2NiBVUkxzCi0gSXNzdWUgbW9kaWZ5aW5nIFNlcnZlclJlcXVlc3QgbG9zdCBhbGwgaXRzIGF0dHJpYnV0ZXMKCiMjIDEuOC4wIC0gMjAyMS0wMy0yMQoKIyMjIEFkZGVkCgotIExvY2FsZSBpbmRlcGVuZGVudCBVUkwgcGFyc2luZwotIE1vc3QgY2xhc3NlcyBnb3QgYSBgQGZpbmFsYCBhbm5vdGF0aW9uIHRvIHByZXBhcmUgZm9yIDIuMAoKIyMjIEZpeGVkCgotIElzc3VlIHdoZW4gY3JlYXRpbmcgc3RyZWFtIGZyb20gYHBocDovL2lucHV0YCBhbmQgY3VybC1leHQgaXMgbm90IGluc3RhbGxlZAotIEJyb2tlbiBgVXRpbHM6OnRyeUZvcGVuKClgIG9uIFBIUCA4CgojIyAxLjcuMCAtIDIwMjAtMDktMzAKCiMjIyBBZGRlZAoKLSBSZXBsYWNlZCBmdW5jdGlvbnMgYnkgc3RhdGljIG1ldGhvZHMKCiMjIyBGaXhlZAoKLSBDb252ZXJ0aW5nIGEgbm9uLXNlZWthYmxlIHN0cmVhbSB0byBhIHN0cmluZwotIEhhbmRsZSBtdWx0aXBsZSBTZXQtQ29va2llIGNvcnJlY3RseQotIElnbm9yZSBhcnJheSBrZXlzIGluIGhlYWRlciB2YWx1ZXMgd2hlbiBtZXJnaW5nCi0gQWxsb3cgbXVsdGlieXRlIGNoYXJhY3RlcnMgdG8gYmUgcGFyc2VkIGluIGBNZXNzYWdlOmJvZHlTdW1tYXJ5KClgCgojIyMgQ2hhbmdlZAoKLSBSZXN0b3JlZCBwYXJ0aWFsIEhIVk0gMyBzdXBwb3J0CgoKIyMgWzEuNi4xXSAtIDIwMTktMDctMDIKCiMjIyBGaXhlZAoKLSBBY2NlcHQgbnVsbCBhbmQgYm9vbCBoZWFkZXIgdmFsdWVzIGFnYWluCgoKIyMgWzEuNi4wXSAtIDIwMTktMDYtMzAKCiMjIyBBZGRlZAoKLSBBbGxvd2VkIHZlcnNpb24gYF4zLjBgIG9mIGByYWxvdXBoaWUvZ2V0YWxsaGVhZGVyc2AgZGVwZW5kZW5jeSAoIzI0NCkKLSBBZGRlZCBNSU1FIHR5cGUgZm9yIFdFQlAgaW1hZ2UgZm9ybWF0ICgjMjQ2KQotIEFkZGVkIG1vcmUgdmFsaWRhdGlvbiBvZiB2YWx1ZXMgYWNjb3JkaW5nIHRvIFBTUi03IGFuZCBSRkMgc3RhbmRhcmRzLCBlLmcuIHN0YXR1cyBjb2RlIHJhbmdlICgjMjUwLCAjMjcyKQoKIyMjIENoYW5nZWQKCi0gVGVzdHMgZG9uJ3QgcGFzcyB3aXRoIEhIVk0gNC4wLCBzbyBISFZNIHN1cHBvcnQgZ290IGRyb3BwZWQuIE90aGVyIGxpYnJhcmllcyBsaWtlIGNvbXBvc2VyIGhhdmUgZG9uZSB0aGUgc2FtZS4gKCMyNjIpCi0gQWNjZXB0IHBvcnQgbnVtYmVyIDAgdG8gYmUgdmFsaWQgKCMyNzApCgojIyMgRml4ZWQKCi0gRml4ZWQgc3Vic2VxdWVudCByZWFkcyBmcm9tIGBwaHA6Ly9pbnB1dGAgaW4gU2VydmVyUmVxdWVzdCAoIzI0NykKLSBGaXhlZCByZWFkYWJsZS93cml0YWJsZSBkZXRlY3Rpb24gZm9yIGNlcnRhaW4gc3RyZWFtIG1vZGVzICgjMjQ4KQotIEZpeGVkIGVuY29kaW5nIG9mIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0aGUgYHVzZXJJbmZvYCBjb21wb25lbnQgb2YgYW4gVVJJICgjMjUzKQoKCiMjIFsxLjUuMl0gLSAyMDE4LTEyLTA0CgojIyMgRml4ZWQKCi0gQ2hlY2sgYm9keSBzaXplIHdoZW4gZ2V0dGluZyB0aGUgbWVzc2FnZSBzdW1tYXJ5CgoKIyMgWzEuNS4xXSAtIDIwMTgtMTItMDQKCiMjIyBGaXhlZAoKLSBHZXQgdGhlIHN1bW1hcnkgb2YgYSBib2R5IG9ubHkgaWYgaXQgaXMgcmVhZGFibGUKCgojIyBbMS41LjBdIC0gMjAxOC0xMi0wMwoKIyMjIEFkZGVkCgotIFJlc3BvbnNlIGZpcnN0LWxpbmUgdG8gcmVzcG9uc2Ugc3RyaW5nIGV4Y2VwdGlvbiAoZml4ZXMgIzE0NSkKLSBBIHRlc3QgZm9yICMxMjkgYmVoYXZpb3IKLSBgZ2V0X21lc3NhZ2VfYm9keV9zdW1tYXJ5YCBmdW5jdGlvbiBpbiBvcmRlciB0byBnZXQgdGhlIG1lc3NhZ2Ugc3VtbWFyeQotIGAzZ3BgIGFuZCBgbWt2YCBtaW1lIHR5cGVzCgojIyMgQ2hhbmdlZAoKLSBDbGFyaWZ5IGV4Y2VwdGlvbiBtZXNzYWdlIHdoZW4gc3RyZWFtIGlzIGRldGFjaGVkCgojIyMgRGVwcmVjYXRlZAoKLSBEZXByZWNhdGVkIHBhcnNpbmcgZm9sZGVkIGhlYWRlciBsaW5lcyBhcyBwZXIgUkZDIDcyMzAKCiMjIyBGaXhlZAoKLSBGaXggYEFwcGVuZFN0cmVhbTo6ZGV0YWNoYCB0byBub3QgY2xvc2Ugc3RyZWFtcwotIGBJbmZsYXRlU3RyZWFtYCBwcmVzZXJ2ZXMgYGlzU2Vla2FibGVgIGF0dHJpYnV0ZSBvZiB0aGUgdW5kZXJseWluZyBzdHJlYW0KLSBgU2VydmVyUmVxdWVzdDo6Z2V0VXJpRnJvbUdsb2JhbHNgIHRvIHN1cHBvcnQgVVJMcyBpbiBxdWVyeSBwYXJhbWV0ZXJzCgoKU2V2ZXJhbCBvdGhlciBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzLgoKCiMjIFsxLjQuMl0gLSAyMDE3LTAzLTIwCgojIyMgRml4ZWQKCi0gUmV2ZXJ0ZWQgQkMgYnJlYWsgdG8gYFVyaTo6cmVzb2x2ZWAgYW5kIGBVcmk6OnJlbW92ZURvdFNlZ21lbnRzYCBieSByZW1vdmluZwogIGNhbGxzIHRvIGB0cmlnZ2VyX2Vycm9yYCB3aGVuIGRlcHJlY2F0ZWQgbWV0aG9kcyBhcmUgaW52b2tlZC4KCgojIyBbMS40LjFdIC0gMjAxNy0wMi0yNwoKIyMjIEFkZGVkCgotIFJyaWdnZXJpbmcgb2Ygc2lsZW5jZWQgZGVwcmVjYXRpb24gd2FybmluZ3MuCgojIyMgRml4ZWQKCi0gUmV2ZXJ0ZWQgQkMgYnJlYWsgYnkgcmVpbnRyb2R1Y2luZyBiZWhhdmlvciB0byBhdXRvbWFnaWNhbGx5IGZpeCBhIFVSSSB3aXRoIGEKICByZWxhdGl2ZSBwYXRoIGFuZCBhbiBhdXRob3JpdHkgYnkgYWRkaW5nIGEgbGVhZGluZyBzbGFzaCB0byB0aGUgcGF0aC4gSXQncyBvbmx5CiAgZGVwcmVjYXRlZCBub3cuCgoKIyMgWzEuNC4wXSAtIDIwMTctMDItMjEKCiMjIyBBZGRlZAoKLSBBZGRlZCBjb21tb24gVVJJIHV0aWxpdHkgbWV0aG9kcyBiYXNlZCBvbiBSRkMgMzk4NiAoc2VlIGRvY3VtZW50YXRpb24gaW4gdGhlIHJlYWRtZSk6CiAgLSBgVXJpOjppc0RlZmF1bHRQb3J0YAogIC0gYFVyaTo6aXNBYnNvbHV0ZWAKICAtIGBVcmk6OmlzTmV0d29ya1BhdGhSZWZlcmVuY2VgCiAgLSBgVXJpOjppc0Fic29sdXRlUGF0aFJlZmVyZW5jZWAKICAtIGBVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlYAogIC0gYFVyaTo6aXNTYW1lRG9jdW1lbnRSZWZlcmVuY2VgCiAgLSBgVXJpOjpjb21wb3NlQ29tcG9uZW50c2AKICAtIGBVcmlOb3JtYWxpemVyOjpub3JtYWxpemVgCiAgLSBgVXJpTm9ybWFsaXplcjo6aXNFcXVpdmFsZW50YAogIC0gYFVyaVJlc29sdmVyOjpyZWxhdGl2aXplYAoKIyMjIENoYW5nZWQKCi0gRW5zdXJlIGBTZXJ2ZXJSZXF1ZXN0OjpnZXRVcmlGcm9tR2xvYmFsc2AgcmV0dXJucyBhIFVSSSBpbiBhYnNvbHV0ZSBmb3JtLgotIEFsbG93IGBwYXJzZV9yZXNwb25zZWAgdG8gcGFyc2UgYSByZXNwb25zZSB3aXRob3V0IGRlbGltaXRpbmcgc3BhY2UgYW5kIHJlYXNvbi4KLSBFbnN1cmUgZWFjaCBVUkkgbW9kaWZpY2F0aW9uIHJlc3VsdHMgaW4gYSB2YWxpZCBVUkkgYWNjb3JkaW5nIHRvIFBTUi03IGRpc2N1c3Npb25zLgogIEludmFsaWQgbW9kaWZpY2F0aW9ucyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpbnN0ZWFkIG9mIHJldHVybmluZyBhIHdyb25nIFVSSSBvcgogIGRvaW5nIHNvbWUgbWFnaWMuCiAgLSBgKG5ldyBVcmkpLT53aXRoUGF0aCgnZm9vJyktPndpdGhIb3N0KCdleGFtcGxlLmNvbScpYCB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbgogICAgYmVjYXVzZSB0aGUgcGF0aCBvZiBhIFVSSSB3aXRoIGFuIGF1dGhvcml0eSBtdXN0IHN0YXJ0IHdpdGggYSBzbGFzaCAiLyIgb3IgYmUgZW1wdHkKICAtIGAobmV3IFVyaSgpKS0+d2l0aFNjaGVtZSgnaHR0cCcpYCB3aWxsIHJldHVybiBgJ2h0dHA6Ly9sb2NhbGhvc3QnYAoKIyMjIERlcHJlY2F0ZWQKCi0gYFVyaTo6cmVzb2x2ZWAgaW4gZmF2b3Igb2YgYFVyaVJlc29sdmVyOjpyZXNvbHZlYAotIGBVcmk6OnJlbW92ZURvdFNlZ21lbnRzYCBpbiBmYXZvciBvZiBgVXJpUmVzb2x2ZXI6OnJlbW92ZURvdFNlZ21lbnRzYAoKIyMjIEZpeGVkCgotIGBTdHJlYW06OnJlYWRgIHdoZW4gbGVuZ3RoIHBhcmFtZXRlciA8PSAwLgotIGBjb3B5X3RvX3N0cmVhbWAgcmVhZHMgYnl0ZXMgaW4gY2h1bmtzIGluc3RlYWQgb2YgYG1heExlbmAgaW50byBtZW1vcnkuCi0gYFNlcnZlclJlcXVlc3Q6OmdldFVyaUZyb21HbG9iYWxzYCB3aGVuIGBIb3N0YCBoZWFkZXIgY29udGFpbnMgcG9ydC4KLSBDb21wYXRpYmlsaXR5IG9mIFVSSXMgd2l0aCBgZmlsZWAgc2NoZW1lIGFuZCBlbXB0eSBob3N0LgoKCiMjIFsxLjMuMV0gLSAyMDE2LTA2LTI1CgojIyMgRml4ZWQKCi0gYFVyaTo6X190b1N0cmluZ2AgZm9yIG5ldHdvcmsgcGF0aCByZWZlcmVuY2VzLCBlLmcuIGAvL2V4YW1wbGUub3JnYC4KLSBNaXNzaW5nIGxvd2VyY2FzZSBub3JtYWxpemF0aW9uIGZvciBob3N0LgotIEhhbmRsaW5nIG9mIFVSSSBjb21wb25lbnRzIGluIGNhc2UgdGhleSBhcmUgYCcwJ2AgaW4gYSBsb3Qgb2YgcGxhY2VzLAogIGUuZy4gYXMgYSB1c2VyIGluZm8gcGFzc3dvcmQuCi0gYFVyaTo6d2l0aEFkZGVkSGVhZGVyYCB0byBjb3JyZWN0bHkgbWVyZ2UgaGVhZGVycyB3aXRoIGRpZmZlcmVudCBjYXNlLgotIFRyaW1taW5nIG9mIGhlYWRlciB2YWx1ZXMgaW4gYFVyaTo6d2l0aEFkZGVkSGVhZGVyYC4gSGVhZGVyIHZhbHVlcyBtYXkKICBiZSBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2Ugd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQgYWNjb3JkaW5nIHRvIFJGQyA3MjMwCiAgU2VjdGlvbiAzLjIuNC4gVGhpcyBkb2VzIG5vdCBhcHBseSB0byBoZWFkZXIgbmFtZXMuCi0gYFVyaTo6d2l0aEFkZGVkSGVhZGVyYCB3aXRoIGFuIGFycmF5IG9mIGhlYWRlciB2YWx1ZXMuCi0gYFVyaTo6cmVzb2x2ZWAgd2hlbiBiYXNlIHBhdGggaGFzIG5vIHNsYXNoIGFuZCBoYW5kbGluZyBvZiBmcmFnbWVudC4KLSBIYW5kbGluZyBvZiBlbmNvZGluZyBpbiBgVXJpOjp3aXRoKG91dClRdWVyeVZhbHVlYCBzbyBvbmUgY2FuIHBhc3MgdGhlCiAga2V5L3ZhbHVlIGJvdGggaW4gZW5jb2RlZCBhcyB3ZWxsIGFzIGRlY29kZWQgZm9ybSB0byB0aG9zZSBtZXRob2RzLiBUaGlzIGlzCiAgY29uc2lzdGVudCB3aXRoIHdpdGhQYXRoLCB3aXRoUXVlcnkgZXRjLgotIGBTZXJ2ZXJSZXF1ZXN0Ojp3aXRob3V0QXR0cmlidXRlYCB3aGVuIGF0dHJpYnV0ZSB2YWx1ZSBpcyBudWxsLgoKCiMjIFsxLjMuMF0gLSAyMDE2LTA0LTEzCgojIyMgQWRkZWQKCi0gUmVtYWluaW5nIGludGVyZmFjZXMgbmVlZGVkIGZvciBmdWxsIFBTUjcgY29tcGF0aWJpbGl0eQogIChTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlLCBVcGxvYWRlZEZpbGVJbnRlcmZhY2UsIGV0Yy4pLgotIFN1cHBvcnQgZm9yIHN0cmVhbV9mb3IgZnJvbSBzY2FsYXJzLgoKIyMjIENoYW5nZWQKCi0gQ2FuIG5vdyBleHRlbmQgVXJpLgoKIyMjIEZpeGVkCi0gQSBidWcgaW4gdmFsaWRhdGluZyByZXF1ZXN0IG1ldGhvZHMgYnkgbWFraW5nIGl0IG1vcmUgcGVybWlzc2l2ZS4KCgojIyBbMS4yLjNdIC0gMjAxNi0wMi0xOAoKIyMjIEZpeGVkCgotIFN1cHBvcnQgaW4gYEd1enpsZUh0dHBcUHNyN1xDYWNoaW5nU3RyZWFtYCBmb3Igc2Vla2luZyBmb3J3YXJkIG9uIHJlbW90ZQogIHN0cmVhbXMsIHdoaWNoIGNhbiBzb21ldGltZXMgcmV0dXJuIGZld2VyIGJ5dGVzIHRoYW4gcmVxdWVzdGVkIHdpdGggYGZyZWFkYC4KLSBIYW5kbGluZyBvZiBnemlwcGVkIHJlc3BvbnNlcyB3aXRoIEZOQU1FIGhlYWRlcnMuCgoKIyMgWzEuMi4yXSAtIDIwMTYtMDEtMjIKCiMjIyBBZGRlZAoKLSBTdXBwb3J0IGZvciBVUklzIHdpdGhvdXQgYW55IGF1dGhvcml0eS4KLSBTdXBwb3J0IGZvciBIVFRQIDQ1MSAnVW5hdmFpbGFibGUgRm9yIExlZ2FsIFJlYXNvbnMuJwotIFN1cHBvcnQgZm9yIHVzaW5nICcwJyBhcyBhIGZpbGVuYW1lLgotIFN1cHBvcnQgZm9yIGluY2x1ZGluZyBub24tc3RhbmRhcmQgcG9ydHMgaW4gSG9zdCBoZWFkZXJzLgoKCiMjIFsxLjIuMV0gLSAyMDE1LTExLTAyCgojIyMgQ2hhbmdlcwoKLSBOb3cgc3VwcG9ydGluZyBuZWdhdGl2ZSBvZmZzZXRzIHdoZW4gc2Vla2luZyB0byBTRUVLX0VORC4KCgojIyBbMS4yLjBdIC0gMjAxNS0wOC0xNQoKIyMjIENoYW5nZWQKCi0gQm9keSBhcyBgIjAiYCBpcyBub3cgcHJvcGVybHkgYWRkZWQgdG8gYSByZXNwb25zZS4KLSBOb3cgYWxsb3dpbmcgZm9yd2FyZCBzZWVraW5nIGluIENhY2hpbmdTdHJlYW0uCi0gTm93IHByb3Blcmx5IHBhcnNpbmcgSFRUUCByZXF1ZXN0cyB0aGF0IGNvbnRhaW4gcHJveHkgdGFyZ2V0cyBpbgogIGBwYXJzZV9yZXF1ZXN0YC4KLSBmdW5jdGlvbnMucGhwIGlzIG5vdyBjb25kaXRpb25hbGx5IHJlcXVpcmVkLgotIHVzZXItaW5mbyBpcyBubyBsb25nZXIgZHJvcHBlZCB3aGVuIHJlc29sdmluZyBVUklzLgoKCiMjIFsxLjEuMF0gLSAyMDE1LTA2LTI0CgojIyMgQ2hhbmdlZAoKLSBVUklzIGNhbiBub3cgYmUgcmVsYXRpdmUuCi0gYG11bHRpcGFydC9mb3JtLWRhdGFgIGhlYWRlcnMgYXJlIG5vdyBvdmVycmlkZGVuIGNhc2UtaW5zZW5zaXRpdmVseS4KLSBVUkkgcGF0aHMgbm8gbG9uZ2VyIGVuY29kZSB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnMgYmVjYXVzZSB0aGV5IGFyZSBhbGxvd2VkCiAgaW4gVVJJczogIigiLCAiKSIsICIqIiwgIiEiLCAiJyIKLSBBIHBvcnQgaXMgbm8gbG9uZ2VyIGFkZGVkIHRvIGEgVVJJIHdoZW4gdGhlIHNjaGVtZSBpcyBtaXNzaW5nIGFuZCBubyBwb3J0IGlzCiAgcHJlc2VudC4KCgojIyAxLjAuMCAtIDIwMTUtMDUtMTkKCkluaXRpYWwgcmVsZWFzZS4KCkN1cnJlbnRseSB1bnN1cHBvcnRlZDoKCi0gYFBzclxIdHRwXE1lc3NhZ2VcU2VydmVyUmVxdWVzdEludGVyZmFjZWAKLSBgUHNyXEh0dHBcTWVzc2FnZVxVcGxvYWRlZEZpbGVJbnRlcmZhY2VgCgoKClsxLjYuMF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuNS4yLi4uMS42LjAKWzEuNS4yXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS41LjEuLi4xLjUuMgpbMS41LjFdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjUuMC4uLjEuNS4xClsxLjUuMF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuNC4yLi4uMS41LjAKWzEuNC4yXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS40LjEuLi4xLjQuMgpbMS40LjFdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjQuMC4uLjEuNC4xClsxLjQuMF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuMy4xLi4uMS40LjAKWzEuMy4xXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS4zLjAuLi4xLjMuMQpbMS4zLjBdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjIuMy4uLjEuMy4wClsxLjIuM106IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuMi4yLi4uMS4yLjMKWzEuMi4yXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS4yLjEuLi4xLjIuMgpbMS4yLjFdOiBodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3BzcjcvY29tcGFyZS8xLjIuMC4uLjEuMi4xClsxLjIuMF06IGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy9jb21wYXJlLzEuMS4wLi4uMS4yLjAKWzEuMS4wXTogaHR0cHM6Ly9naXRodWIuY29tL2d1enpsZS9wc3I3L2NvbXBhcmUvMS4wLjAuLi4xLjEuMAo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAiZ3V6emxlaHR0cC9wc3I3IiwKICAgICJkZXNjcmlwdGlvbiI6ICJQU1ItNyBtZXNzYWdlIGltcGxlbWVudGF0aW9uIHRoYXQgYWxzbyBwcm92aWRlcyBjb21tb24gdXRpbGl0eSBtZXRob2RzIiwKICAgICJrZXl3b3JkcyI6IFsKICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgInJlc3BvbnNlIiwKICAgICAgICAibWVzc2FnZSIsCiAgICAgICAgInN0cmVhbSIsCiAgICAgICAgImh0dHAiLAogICAgICAgICJ1cmkiLAogICAgICAgICJ1cmwiLAogICAgICAgICJwc3ItNyIKICAgIF0sCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJHcmFoYW0gQ2FtcGJlbGwiLAogICAgICAgICAgICAiZW1haWwiOiAiaGVsbG9AZ2pjYW1wYmVsbC5jby51ayIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vR3JhaGFtQ2FtcGJlbGwiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk1pY2hhZWwgRG93bGluZyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtdGRvd2xpbmdAZ21haWwuY29tIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9tdGRvd2xpbmciCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkdlb3JnZSBNcG9ub3MiLAogICAgICAgICAgICAiZW1haWwiOiAiZ21wb25vc0BnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL2dtcG9ub3MiCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlRvYmlhcyBOeWhvbG0iLAogICAgICAgICAgICAiZW1haWwiOiAidG9iaWFzLm55aG9sbUBnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL055aG9sbSIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiTcOhcmsgU8OhZ2ktS2F6w6FyIiwKICAgICAgICAgICAgImVtYWlsIjogIm1hcmsuc2FnaWthemFyQGdtYWlsLmNvbSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vc2FnaWthemFybWFyayIKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiVG9iaWFzIFNjaHVsdHplIiwKICAgICAgICAgICAgImVtYWlsIjogIndlYm1hc3RlckB0dWJvLXdvcmxkLmRlIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9Ub2Jpb24iCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIk3DoXJrIFPDoWdpLUthesOhciIsCiAgICAgICAgICAgICJlbWFpbCI6ICJtYXJrLnNhZ2lrYXphckBnbWFpbC5jb20iLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zYWdpa2F6YXJtYXJrLmh1IgogICAgICAgIH0KICAgIF0sCiAgICAicmVwb3NpdG9yaWVzIjogWwogICAgICAgIHsKICAgICAgICAgICAgInR5cGUiOiAicGFja2FnZSIsCiAgICAgICAgICAgICJwYWNrYWdlIjogewogICAgICAgICAgICAgICAgIm5hbWUiOiAianNodHRwL21pbWUtZGIiLAogICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS41NC4wLjEiLAogICAgICAgICAgICAgICAgImRpc3QiOiB7CiAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2NvZGVsb2FkLmdpdGh1Yi5jb20vanNodHRwL21pbWUtZGIvemlwLzBhOWZkMGJmYmM4N2E3MjVmZjYzODQ5NTgzOTExNGU3ODA3YjcxNzciLAogICAgICAgICAgICAgICAgICAgICJ0eXBlIjogInppcCIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjIuNSB8fCBeOC4wIiwKICAgICAgICAicHNyL2h0dHAtZmFjdG9yeSI6ICJeMS4wIiwKICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4xIHx8IF4yLjAiLAogICAgICAgICJyYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyI6ICJeMy4wIgogICAgfSwKICAgICJwcm92aWRlIjogewogICAgICAgICJwc3IvaHR0cC1mYWN0b3J5LWltcGxlbWVudGF0aW9uIjogIjEuMCIsCiAgICAgICAgInBzci9odHRwLW1lc3NhZ2UtaW1wbGVtZW50YXRpb24iOiAiMS4wIgogICAgfSwKICAgICJyZXF1aXJlLWRldiI6IHsKICAgICAgICAiYmFtYXJuaS9jb21wb3Nlci1iaW4tcGx1Z2luIjogIl4xLjguMiIsCiAgICAgICAgImh0dHAtaW50ZXJvcC9odHRwLWZhY3RvcnktdGVzdHMiOiAiMC45LjAiLAogICAgICAgICJqc2h0dHAvbWltZS1kYiI6ICIxLjU0LjAuMSIsCiAgICAgICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC41LjQ0IHx8IF45LjYuMjUiCiAgICB9LAogICAgInN1Z2dlc3QiOiB7CiAgICAgICAgImxhbWluYXMvbGFtaW5hcy1odHRwaGFuZGxlcnJ1bm5lciI6ICJFbWl0IFBTUi03IHJlc3BvbnNlcyIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcUHNyN1xcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJhdXRvbG9hZC1kZXYiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiR3V6emxlSHR0cFxcVGVzdHNcXFBzcjdcXCI6ICJ0ZXN0cy8iCiAgICAgICAgfQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYmFtYXJuaS1iaW4iOiB7CiAgICAgICAgICAgICJiaW4tbGlua3MiOiB0cnVlLAogICAgICAgICAgICAiZm9yd2FyZC1jb21tYW5kIjogZmFsc2UKICAgICAgICB9CiAgICB9LAogICAgImNvbmZpZyI6IHsKICAgICAgICAiYWxsb3ctcGx1Z2lucyI6IHsKICAgICAgICAgICAgImJhbWFybmkvY29tcG9zZXItYmluLXBsdWdpbiI6IHRydWUKICAgICAgICB9LAogICAgICAgICJwcmVmZXJyZWQtaW5zdGFsbCI6ICJkaXN0IiwKICAgICAgICAic29ydC1wYWNrYWdlcyI6IHRydWUKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTUgTWljaGFlbCBEb3dsaW5nIDxtdGRvd2xpbmdAZ21haWwuY29tPgpDb3B5cmlnaHQgKGMpIDIwMTUgTcOhcmsgU8OhZ2ktS2F6w6FyIDxtYXJrLnNhZ2lrYXphckBnbWFpbC5jb20+CkNvcHlyaWdodCAoYykgMjAxNSBHcmFoYW0gQ2FtcGJlbGwgPGhlbGxvQGdqY2FtcGJlbGwuY28udWs+CkNvcHlyaWdodCAoYykgMjAxNiBUb2JpYXMgU2NodWx0emUgPHdlYm1hc3RlckB0dWJvLXdvcmxkLmRlPgpDb3B5cmlnaHQgKGMpIDIwMTYgR2VvcmdlIE1wb25vcyA8Z21wb25vc0BnbWFpbC5jb20+CkNvcHlyaWdodCAoYykgMjAxOCBUb2JpYXMgTnlob2xtIDx0b2JpYXMubnlob2xtQGdtYWlsLmNvbT4KClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTgpUSEUgU09GVFdBUkUuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBQU1ItNyBNZXNzYWdlIEltcGxlbWVudGF0aW9uCgpUaGlzIHJlcG9zaXRvcnkgY29udGFpbnMgYSBmdWxsIFtQU1ItN10oaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykKbWVzc2FnZSBpbXBsZW1lbnRhdGlvbiwgc2V2ZXJhbCBzdHJlYW0gZGVjb3JhdG9ycywgYW5kIHNvbWUgaGVscGZ1bApmdW5jdGlvbmFsaXR5IGxpa2UgcXVlcnkgc3RyaW5nIHBhcnNpbmcuCgohW0NJXShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Bzcjcvd29ya2Zsb3dzL0NJL2JhZGdlLnN2ZykKIVtTdGF0aWMgYW5hbHlzaXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9ndXp6bGUvcHNyNy93b3JrZmxvd3MvU3RhdGljJTIwYW5hbHlzaXMvYmFkZ2Uuc3ZnKQoKCiMjIEZlYXR1cmVzCgpUaGlzIHBhY2thZ2UgY29tZXMgd2l0aCBhIG51bWJlciBvZiBzdHJlYW0gaW1wbGVtZW50YXRpb25zIGFuZCBzdHJlYW0KZGVjb3JhdG9ycy4KCgojIyBJbnN0YWxsYXRpb24KCmBgYHNoZWxsCmNvbXBvc2VyIHJlcXVpcmUgZ3V6emxlaHR0cC9wc3I3CmBgYAoKIyMgVmVyc2lvbiBHdWlkYW5jZQoKfCBWZXJzaW9uIHwgU3RhdHVzICAgICAgICAgICAgICB8IFBIUCBWZXJzaW9uICB8CnwtLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfAp8IDEueCAgICAgfCBFT0wgKDIwMjQtMDYtMzApICAgIHwgPj01LjQsPDguMiAgIHwKfCAyLnggICAgIHwgTGF0ZXN0ICAgICAgICAgICAgICB8ID49Ny4yLjUsPDguNiB8CgoKIyMgQXBwZW5kU3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XEFwcGVuZFN0cmVhbWAKClJlYWRzIGZyb20gbXVsdGlwbGUgc3RyZWFtcywgb25lIGFmdGVyIHRoZSBvdGhlci4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJGEgPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJ2FiYywgJyk7CiRiID0gUHNyN1xVdGlsczo6c3RyZWFtRm9yKCcxMjMuJyk7CiRjb21wb3NlZCA9IG5ldyBQc3I3XEFwcGVuZFN0cmVhbShbJGEsICRiXSk7CgokY29tcG9zZWQtPmFkZFN0cmVhbShQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJyBBYm92ZSBhbGwgbGlzdGVuIHRvIG1lJykpOwoKZWNobyAkY29tcG9zZWQ7IC8vIGFiYywgMTIzLiBBYm92ZSBhbGwgbGlzdGVuIHRvIG1lLgpgYGAKCgojIyBCdWZmZXJTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcQnVmZmVyU3RyZWFtYAoKUHJvdmlkZXMgYSBidWZmZXIgc3RyZWFtIHRoYXQgY2FuIGJlIHdyaXR0ZW4gdG8gZmlsbCBhIGJ1ZmZlciwgYW5kIHJlYWQKZnJvbSB0byByZW1vdmUgYnl0ZXMgZnJvbSB0aGUgYnVmZmVyLgoKVGhpcyBzdHJlYW0gcmV0dXJucyBhICJod20iIG1ldGFkYXRhIHZhbHVlIHRoYXQgdGVsbHMgdXBzdHJlYW0gY29uc3VtZXJzCndoYXQgdGhlIGNvbmZpZ3VyZWQgaGlnaCB3YXRlciBtYXJrIG9mIHRoZSBzdHJlYW0gaXMsIG9yIHRoZSBtYXhpbXVtCnByZWZlcnJlZCBzaXplIG9mIHRoZSBidWZmZXIuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyNzsKCi8vIFdoZW4gbW9yZSB0aGFuIDEwMjQgYnl0ZXMgYXJlIGluIHRoZSBidWZmZXIsIGl0IHdpbGwgYmVnaW4gcmV0dXJuaW5nCi8vIGZhbHNlIHRvIHdyaXRlcy4gVGhpcyBpcyBhbiBpbmRpY2F0aW9uIHRoYXQgd3JpdGVycyBzaG91bGQgc2xvdyBkb3duLgokYnVmZmVyID0gbmV3IFBzcjdcQnVmZmVyU3RyZWFtKDEwMjQpOwpgYGAKCgojIyBDYWNoaW5nU3RyZWFtCgpUaGUgQ2FjaGluZ1N0cmVhbSBpcyB1c2VkIHRvIGFsbG93IHNlZWtpbmcgb3ZlciBwcmV2aW91c2x5IHJlYWQgYnl0ZXMgb24Kbm9uLXNlZWthYmxlIHN0cmVhbXMuIFRoaXMgY2FuIGJlIHVzZWZ1bCB3aGVuIHRyYW5zZmVycmluZyBhIG5vbi1zZWVrYWJsZQplbnRpdHkgYm9keSBmYWlscyBkdWUgdG8gbmVlZGluZyB0byByZXdpbmQgdGhlIHN0cmVhbSAoZm9yIGV4YW1wbGUsIHJlc3VsdGluZwpmcm9tIGEgcmVkaXJlY3QpLiBEYXRhIHRoYXQgaXMgcmVhZCBmcm9tIHRoZSByZW1vdGUgc3RyZWFtIHdpbGwgYmUgYnVmZmVyZWQgaW4KYSBQSFAgdGVtcCBzdHJlYW0gc28gdGhhdCBwcmV2aW91c2x5IHJlYWQgYnl0ZXMgYXJlIGNhY2hlZCBmaXJzdCBpbiBtZW1vcnksCnRoZW4gb24gZGlzay4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJG9yaWdpbmFsID0gUHNyN1xVdGlsczo6c3RyZWFtRm9yKGZvcGVuKCdodHRwOi8vd3d3Lmdvb2dsZS5jb20nLCAncicpKTsKJHN0cmVhbSA9IG5ldyBQc3I3XENhY2hpbmdTdHJlYW0oJG9yaWdpbmFsKTsKCiRzdHJlYW0tPnJlYWQoMTAyNCk7CmVjaG8gJHN0cmVhbS0+dGVsbCgpOwovLyAxMDI0Cgokc3RyZWFtLT5zZWVrKDApOwplY2hvICRzdHJlYW0tPnRlbGwoKTsKLy8gMApgYGAKCgojIyBEcm9wcGluZ1N0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xEcm9wcGluZ1N0cmVhbWAKClN0cmVhbSBkZWNvcmF0b3IgdGhhdCBiZWdpbnMgZHJvcHBpbmcgZGF0YSBvbmNlIHRoZSBzaXplIG9mIHRoZSB1bmRlcmx5aW5nCnN0cmVhbSBiZWNvbWVzIHRvbyBmdWxsLgoKYGBgcGhwCnVzZSBHdXp6bGVIdHRwXFBzcjc7CgovLyBDcmVhdGUgYW4gZW1wdHkgc3RyZWFtCiRzdHJlYW0gPSBQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoKTsKCi8vIFN0YXJ0IGRyb3BwaW5nIGRhdGEgd2hlbiB0aGUgc3RyZWFtIGhhcyBtb3JlIHRoYW4gMTAgYnl0ZXMKJGRyb3BwaW5nID0gbmV3IFBzcjdcRHJvcHBpbmdTdHJlYW0oJHN0cmVhbSwgMTApOwoKJGRyb3BwaW5nLT53cml0ZSgnMDEyMzQ1Njc4OTAxMjM0NTY3ODknKTsKZWNobyAkc3RyZWFtOyAvLyAwMTIzNDU2Nzg5CmBgYAoKCiMjIEZuU3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XEZuU3RyZWFtYAoKQ29tcG9zZSBzdHJlYW0gaW1wbGVtZW50YXRpb25zIGJhc2VkIG9uIGEgaGFzaCBvZiBmdW5jdGlvbnMuCgpBbGxvd3MgZm9yIGVhc3kgdGVzdGluZyBhbmQgZXh0ZW5zaW9uIG9mIGEgcHJvdmlkZWQgc3RyZWFtIHdpdGhvdXQgbmVlZGluZwp0byBjcmVhdGUgYSBjb25jcmV0ZSBjbGFzcyBmb3IgYSBzaW1wbGUgZXh0ZW5zaW9uIHBvaW50LgoKYGBgcGhwCgp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJHN0cmVhbSA9IFBzcjdcVXRpbHM6OnN0cmVhbUZvcignaGknKTsKJGZuU3RyZWFtID0gUHNyN1xGblN0cmVhbTo6ZGVjb3JhdGUoJHN0cmVhbSwgWwogICAgJ3Jld2luZCcgPT4gZnVuY3Rpb24gKCkgdXNlICgkc3RyZWFtKSB7CiAgICAgICAgZWNobyAnQWJvdXQgdG8gcmV3aW5kIC0gJzsKICAgICAgICAkc3RyZWFtLT5yZXdpbmQoKTsKICAgICAgICBlY2hvICdyZXdvdW5kISc7CiAgICB9Cl0pOwoKJGZuU3RyZWFtLT5yZXdpbmQoKTsKLy8gT3V0cHV0czogQWJvdXQgdG8gcmV3aW5kIC0gcmV3b3VuZCEKYGBgCgoKIyMgSW5mbGF0ZVN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xJbmZsYXRlU3RyZWFtYAoKVXNlcyBQSFAncyB6bGliLmluZmxhdGUgZmlsdGVyIHRvIGluZmxhdGUgemxpYiAoSFRUUCBkZWZsYXRlLCBSRkMxOTUwKSBvciBnemlwcGVkIChSRkMxOTUyKSBjb250ZW50LgoKVGhpcyBzdHJlYW0gZGVjb3JhdG9yIGNvbnZlcnRzIHRoZSBwcm92aWRlZCBzdHJlYW0gdG8gYSBQSFAgc3RyZWFtIHJlc291cmNlLAp0aGVuIGFwcGVuZHMgdGhlIHpsaWIuaW5mbGF0ZSBmaWx0ZXIuIFRoZSBzdHJlYW0gaXMgdGhlbiBjb252ZXJ0ZWQgYmFjawp0byBhIEd1enpsZSBzdHJlYW0gcmVzb3VyY2UgdG8gYmUgdXNlZCBhcyBhIEd1enpsZSBzdHJlYW0uCgoKIyMgTGF6eU9wZW5TdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcTGF6eU9wZW5TdHJlYW1gCgpMYXppbHkgcmVhZHMgb3Igd3JpdGVzIHRvIGEgZmlsZSB0aGF0IGlzIG9wZW5lZCBvbmx5IGFmdGVyIGFuIElPIG9wZXJhdGlvbgp0YWtlIHBsYWNlIG9uIHRoZSBzdHJlYW0uCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyNzsKCiRzdHJlYW0gPSBuZXcgUHNyN1xMYXp5T3BlblN0cmVhbSgnL3BhdGgvdG8vZmlsZScsICdyJyk7Ci8vIFRoZSBmaWxlIGhhcyBub3QgeWV0IGJlZW4gb3BlbmVkLi4uCgplY2hvICRzdHJlYW0tPnJlYWQoMTApOwovLyBUaGUgZmlsZSBpcyBvcGVuZWQgYW5kIHJlYWQgZnJvbSBvbmx5IHdoZW4gbmVlZGVkLgpgYGAKCgojIyBMaW1pdFN0cmVhbQoKYEd1enpsZUh0dHBcUHNyN1xMaW1pdFN0cmVhbWAKCkxpbWl0U3RyZWFtIGNhbiBiZSB1c2VkIHRvIHJlYWQgYSBzdWJzZXQgb3Igc2xpY2Ugb2YgYW4gZXhpc3Rpbmcgc3RyZWFtIG9iamVjdC4KVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBicmVha2luZyBhIGxhcmdlIGZpbGUgaW50byBzbWFsbGVyIHBpZWNlcyB0byBiZSBzZW50IGluCmNodW5rcyAoZS5nLiBBbWF6b24gUzMncyBtdWx0aXBhcnQgdXBsb2FkIEFQSSkuCgpgYGBwaHAKdXNlIEd1enpsZUh0dHBcUHNyNzsKCiRvcmlnaW5hbCA9IFBzcjdcVXRpbHM6OnN0cmVhbUZvcihmb3BlbignL3RtcC90ZXN0LnR4dCcsICdyKycpKTsKZWNobyAkb3JpZ2luYWwtPmdldFNpemUoKTsKLy8gPj4+IDEwNDg1NzYKCi8vIExpbWl0IHRoZSBzaXplIG9mIHRoZSBib2R5IHRvIDEwMjQgYnl0ZXMgYW5kIHN0YXJ0IHJlYWRpbmcgZnJvbSBieXRlIDIwNDgKJHN0cmVhbSA9IG5ldyBQc3I3XExpbWl0U3RyZWFtKCRvcmlnaW5hbCwgMTAyNCwgMjA0OCk7CmVjaG8gJHN0cmVhbS0+Z2V0U2l6ZSgpOwovLyA+Pj4gMTAyNAplY2hvICRzdHJlYW0tPnRlbGwoKTsKLy8gPj4+IDAKYGBgCgoKIyMgTXVsdGlwYXJ0U3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XE11bHRpcGFydFN0cmVhbWAKClN0cmVhbSB0aGF0IHdoZW4gcmVhZCByZXR1cm5zIGJ5dGVzIGZvciBhIHN0cmVhbWluZyBtdWx0aXBhcnQgb3IKbXVsdGlwYXJ0L2Zvcm0tZGF0YSBzdHJlYW0uCgoKIyMgTm9TZWVrU3RyZWFtCgpgR3V6emxlSHR0cFxQc3I3XE5vU2Vla1N0cmVhbWAKCk5vU2Vla1N0cmVhbSB3cmFwcyBhIHN0cmVhbSBhbmQgZG9lcyBub3QgYWxsb3cgc2Vla2luZy4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJG9yaWdpbmFsID0gUHNyN1xVdGlsczo6c3RyZWFtRm9yKCdmb28nKTsKJG5vU2VlayA9IG5ldyBQc3I3XE5vU2Vla1N0cmVhbSgkb3JpZ2luYWwpOwoKZWNobyAkbm9TZWVrLT5yZWFkKDMpOwovLyBmb28KdmFyX2V4cG9ydCgkbm9TZWVrLT5pc1NlZWthYmxlKCkpOwovLyBmYWxzZQokbm9TZWVrLT5zZWVrKDApOwp2YXJfZXhwb3J0KCRub1NlZWstPnJlYWQoMykpOwovLyBOVUxMCmBgYAoKCiMjIFB1bXBTdHJlYW0KCmBHdXp6bGVIdHRwXFBzcjdcUHVtcFN0cmVhbWAKClByb3ZpZGVzIGEgcmVhZCBvbmx5IHN0cmVhbSB0aGF0IHB1bXBzIGRhdGEgZnJvbSBhIFBIUCBjYWxsYWJsZS4KCldoZW4gaW52b2tpbmcgdGhlIHByb3ZpZGVkIGNhbGxhYmxlLCB0aGUgUHVtcFN0cmVhbSB3aWxsIHBhc3MgdGhlIGFtb3VudCBvZgpkYXRhIHJlcXVlc3RlZCB0byByZWFkIHRvIHRoZSBjYWxsYWJsZS4gVGhlIGNhbGxhYmxlIGNhbiBjaG9vc2UgdG8gaWdub3JlCnRoaXMgdmFsdWUgYW5kIHJldHVybiBmZXdlciBvciBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLiBBbnkgZXh0cmEgZGF0YQpyZXR1cm5lZCBieSB0aGUgcHJvdmlkZWQgY2FsbGFibGUgaXMgYnVmZmVyZWQgaW50ZXJuYWxseSB1bnRpbCBkcmFpbmVkIHVzaW5nCnRoZSByZWFkKCkgZnVuY3Rpb24gb2YgdGhlIFB1bXBTdHJlYW0uIFRoZSBwcm92aWRlZCBjYWxsYWJsZSBNVVNUIHJldHVybgpmYWxzZSB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZWFkLgoKCiMjIEltcGxlbWVudGluZyBzdHJlYW0gZGVjb3JhdG9ycwoKQ3JlYXRpbmcgYSBzdHJlYW0gZGVjb3JhdG9yIGlzIHZlcnkgZWFzeSB0aGFua3MgdG8gdGhlCmBHdXp6bGVIdHRwXFBzcjdcU3RyZWFtRGVjb3JhdG9yVHJhaXRgLiBUaGlzIHRyYWl0IHByb3ZpZGVzIG1ldGhvZHMgdGhhdAppbXBsZW1lbnQgYFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlYCBieSBwcm94eWluZyB0byBhbiB1bmRlcmx5aW5nCnN0cmVhbS4gSnVzdCBgdXNlYCB0aGUgYFN0cmVhbURlY29yYXRvclRyYWl0YCBhbmQgaW1wbGVtZW50IHlvdXIgY3VzdG9tCm1ldGhvZHMuCgpGb3IgZXhhbXBsZSwgbGV0J3Mgc2F5IHdlIHdhbnRlZCB0byBjYWxsIGEgc3BlY2lmaWMgZnVuY3Rpb24gZWFjaCB0aW1lIHRoZSBsYXN0CmJ5dGUgaXMgcmVhZCBmcm9tIGEgc3RyZWFtLiBUaGlzIGNvdWxkIGJlIGltcGxlbWVudGVkIGJ5IG92ZXJyaWRpbmcgdGhlCmByZWFkKClgIG1ldGhvZC4KCmBgYHBocAp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CnVzZSBHdXp6bGVIdHRwXFBzcjdcU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgpjbGFzcyBFb2ZDYWxsYmFja1N0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgcHJpdmF0ZSAkY2FsbGJhY2s7CgogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgY2FsbGFibGUgJGNiKQogICAgewogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkc3RyZWFtOwogICAgICAgICR0aGlzLT5jYWxsYmFjayA9ICRjYjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKQogICAgewogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+c3RyZWFtLT5yZWFkKCRsZW5ndGgpOwoKICAgICAgICAvLyBJbnZva2UgdGhlIGNhbGxiYWNrIHdoZW4gRU9GIGlzIGhpdC4KICAgICAgICBpZiAoJHRoaXMtPmVvZigpKSB7CiAgICAgICAgICAgICgkdGhpcy0+Y2FsbGJhY2spKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KfQpgYGAKClRoaXMgZGVjb3JhdG9yIGNvdWxkIGJlIGFkZGVkIHRvIGFueSBleGlzdGluZyBzdHJlYW0gYW5kIHVzZWQgbGlrZSBzbzoKCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3OwoKJG9yaWdpbmFsID0gUHNyN1xVdGlsczo6c3RyZWFtRm9yKCdmb28nKTsKCiRlb2ZTdHJlYW0gPSBuZXcgRW9mQ2FsbGJhY2tTdHJlYW0oJG9yaWdpbmFsLCBmdW5jdGlvbiAoKSB7CiAgICBlY2hvICdFT0YhJzsKfSk7CgokZW9mU3RyZWFtLT5yZWFkKDIpOwokZW9mU3RyZWFtLT5yZWFkKDEpOwovLyBlY2hvZXMgIkVPRiEiCiRlb2ZTdHJlYW0tPnNlZWsoMCk7CiRlb2ZTdHJlYW0tPnJlYWQoMyk7Ci8vIGVjaG9lcyAiRU9GISIKYGBgCgoKIyMgUEhQIFN0cmVhbVdyYXBwZXIKCllvdSBjYW4gdXNlIHRoZSBgR3V6emxlSHR0cFxQc3I3XFN0cmVhbVdyYXBwZXJgIGNsYXNzIGlmIHlvdSBuZWVkIHRvIHVzZSBhClBTUi03IHN0cmVhbSBhcyBhIFBIUCBzdHJlYW0gcmVzb3VyY2UuCgpVc2UgdGhlIGBHdXp6bGVIdHRwXFBzcjdcU3RyZWFtV3JhcHBlcjo6Z2V0UmVzb3VyY2UoKWAgbWV0aG9kIHRvIGNyZWF0ZSBhIFBIUApzdHJlYW0gZnJvbSBhIFBTUi03IHN0cmVhbS4KCmBgYHBocAp1c2UgR3V6emxlSHR0cFxQc3I3XFN0cmVhbVdyYXBwZXI7Cgokc3RyZWFtID0gR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJ2hlbGxvIScpOwokcmVzb3VyY2UgPSBTdHJlYW1XcmFwcGVyOjpnZXRSZXNvdXJjZSgkc3RyZWFtKTsKZWNobyBmcmVhZCgkcmVzb3VyY2UsIDYpOyAvLyBvdXRwdXRzIGhlbGxvIQpgYGAKCgojIFN0YXRpYyBBUEkKClRoZXJlIGFyZSB2YXJpb3VzIHN0YXRpYyBtZXRob2RzIGF2YWlsYWJsZSB1bmRlciB0aGUgYEd1enpsZUh0dHBcUHNyN2AgbmFtZXNwYWNlLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWVzc2FnZTo6dG9TdHJpbmdgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1N0cmluZyhNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlKTogc3RyaW5nYAoKUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIEhUVFAgbWVzc2FnZS4KCmBgYHBocAokcmVxdWVzdCA9IG5ldyBHdXp6bGVIdHRwXFBzcjdcUmVxdWVzdCgnR0VUJywgJ2h0dHA6Ly9leGFtcGxlLmNvbScpOwplY2hvIEd1enpsZUh0dHBcUHNyN1xNZXNzYWdlOjp0b1N0cmluZygkcmVxdWVzdCk7CmBgYAoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWVzc2FnZTo6Ym9keVN1bW1hcnlgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBib2R5U3VtbWFyeShNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlLCBpbnQgJHRydW5jYXRlQXQgPSAxMjApOiBzdHJpbmd8bnVsbGAKCkdldCBhIHNob3J0IHN1bW1hcnkgb2YgdGhlIG1lc3NhZ2UgYm9keS4KCldpbGwgcmV0dXJuIGBudWxsYCBpZiB0aGUgcmVzcG9uc2UgaXMgbm90IHByaW50YWJsZS4KCgojIyBgR3V6emxlSHR0cFxQc3I3XE1lc3NhZ2U6OnJld2luZEJvZHlgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXdpbmRCb2R5KE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiB2b2lkYAoKQXR0ZW1wdHMgdG8gcmV3aW5kIGEgbWVzc2FnZSBib2R5IGFuZCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIGZhaWx1cmUuCgpUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSB3aWxsIG9ubHkgYmUgcmV3b3VuZCBpZiBhIGNhbGwgdG8gYHRlbGwoKWAKcmV0dXJucyBhIHZhbHVlIG90aGVyIHRoYW4gYDBgLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWVzc2FnZTo6cGFyc2VNZXNzYWdlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VNZXNzYWdlKHN0cmluZyAkbWVzc2FnZSk6IGFycmF5YAoKUGFyc2VzIGFuIEhUVFAgbWVzc2FnZSBpbnRvIGFuIGFzc29jaWF0aXZlIGFycmF5LgoKVGhlIGFycmF5IGNvbnRhaW5zIHRoZSAic3RhcnQtbGluZSIga2V5IGNvbnRhaW5pbmcgdGhlIHN0YXJ0IGxpbmUgb2YKdGhlIG1lc3NhZ2UsICJoZWFkZXJzIiBrZXkgY29udGFpbmluZyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiBoZWFkZXIKYXJyYXkgdmFsdWVzLCBhbmQgYSAiYm9keSIga2V5IGNvbnRhaW5pbmcgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xNZXNzYWdlOjpwYXJzZVJlcXVlc3RVcmlgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZVJlcXVlc3RVcmkoc3RyaW5nICRwYXRoLCBhcnJheSAkaGVhZGVycyk6IHN0cmluZ2AKCkNvbnN0cnVjdHMgYSBVUkkgZm9yIGFuIEhUVFAgcmVxdWVzdCBtZXNzYWdlLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWVzc2FnZTo6cGFyc2VSZXF1ZXN0YAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VSZXF1ZXN0KHN0cmluZyAkbWVzc2FnZSk6IFJlcXVlc3RgCgpQYXJzZXMgYSByZXF1ZXN0IG1lc3NhZ2Ugc3RyaW5nIGludG8gYSByZXF1ZXN0IG9iamVjdC4KCgojIyBgR3V6emxlSHR0cFxQc3I3XE1lc3NhZ2U6OnBhcnNlUmVzcG9uc2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZVJlc3BvbnNlKHN0cmluZyAkbWVzc2FnZSk6IFJlc3BvbnNlYAoKUGFyc2VzIGEgcmVzcG9uc2UgbWVzc2FnZSBzdHJpbmcgaW50byBhIHJlc3BvbnNlIG9iamVjdC4KCgojIyBgR3V6emxlSHR0cFxQc3I3XEhlYWRlcjo6cGFyc2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShzdHJpbmd8YXJyYXkgJGhlYWRlcik6IGFycmF5YAoKUGFyc2UgYW4gYXJyYXkgb2YgaGVhZGVyIHZhbHVlcyBjb250YWluaW5nICI7IiBzZXBhcmF0ZWQgZGF0YSBpbnRvIGFuCmFycmF5IG9mIGFzc29jaWF0aXZlIGFycmF5cyByZXByZXNlbnRpbmcgdGhlIGhlYWRlciBrZXkgdmFsdWUgcGFpciBkYXRhCm9mIHRoZSBoZWFkZXIuIFdoZW4gYSBwYXJhbWV0ZXIgZG9lcyBub3QgY29udGFpbiBhIHZhbHVlLCBidXQganVzdApjb250YWlucyBhIGtleSwgdGhpcyBmdW5jdGlvbiB3aWxsIGluamVjdCBhIGtleSB3aXRoIGEgJycgc3RyaW5nIHZhbHVlLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcSGVhZGVyOjpzcGxpdExpc3RgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzcGxpdExpc3Qoc3RyaW5nfHN0cmluZ1tdICRoZWFkZXIpOiBzdHJpbmdbXWAKClNwbGl0cyBhIEhUVFAgaGVhZGVyIGRlZmluZWQgdG8gY29udGFpbiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGludG8KZWFjaCBpbmRpdmlkdWFsIHZhbHVlOgoKYGBgCiRrbm93bkV0YWdzID0gSGVhZGVyOjpzcGxpdExpc3QoJHJlcXVlc3QtPmdldEhlYWRlcignaWYtbm9uZS1tYXRjaCcpKTsKYGBgCgpFeGFtcGxlIGhlYWRlcnMgaW5jbHVkZSBgYWNjZXB0YCwgYGNhY2hlLWNvbnRyb2xgIGFuZCBgaWYtbm9uZS1tYXRjaGAuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xIZWFkZXI6Om5vcm1hbGl6ZWAgKGRlcHJlY2F0ZWQpCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoc3RyaW5nfGFycmF5ICRoZWFkZXIpOiBhcnJheWAKCmBIZWFkZXI6Om5vcm1hbGl6ZSgpYCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIFtgSGVhZGVyOjpzcGxpdExpc3QoKWBdKFJFQURNRS5tZCNndXp6bGVodHRwcHNyN2hlYWRlcnNwbGl0bGlzdCkKd2hpY2ggcGVyZm9ybXMgdGhlIHNhbWUgb3BlcmF0aW9uIHdpdGggYSBjbGVhbmVkIHVwIEFQSSBhbmQgaW1wcm92ZWQKZG9jdW1lbnRhdGlvbi4KCkNvbnZlcnRzIGFuIGFycmF5IG9mIGhlYWRlciB2YWx1ZXMgdGhhdCBtYXkgY29udGFpbiBjb21tYSBzZXBhcmF0ZWQKaGVhZGVycyBpbnRvIGFuIGFycmF5IG9mIGhlYWRlcnMgd2l0aCBubyBjb21tYSBzZXBhcmF0ZWQgdmFsdWVzLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcUXVlcnk6OnBhcnNlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2Uoc3RyaW5nICRzdHIsIGludHxib29sICR1cmxFbmNvZGluZyA9IHRydWUpOiBhcnJheWAKClBhcnNlIGEgcXVlcnkgc3RyaW5nIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkuCgpJZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIGZvdW5kIGZvciB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSBvZiB0aGF0IGtleQp2YWx1ZSBwYWlyIHdpbGwgYmVjb21lIGFuIGFycmF5LiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHBhcnNlIG5lc3RlZApQSFAgc3R5bGUgYXJyYXlzIGludG8gYW4gYXNzb2NpYXRpdmUgYXJyYXkgKGUuZy4sIGBmb29bYV09MSZmb29bYl09MmAKd2lsbCBiZSBwYXJzZWQgaW50byBgWydmb29bYV0nID0+ICcxJywgJ2Zvb1tiXScgPT4gJzInXSlgLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcUXVlcnk6OmJ1aWxkYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGQoYXJyYXkgJHBhcmFtcywgaW50fGZhbHNlICRlbmNvZGluZyA9IFBIUF9RVUVSWV9SRkMzOTg2LCBib29sICR0cmVhdEJvb2xzQXNJbnRzID0gdHJ1ZSk6IHN0cmluZ2AKCkJ1aWxkIGEgcXVlcnkgc3RyaW5nIGZyb20gYW4gYXJyYXkgb2Yga2V5IHZhbHVlIHBhaXJzLgoKVGhpcyBmdW5jdGlvbiBjYW4gdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYHBhcnNlKClgIHRvIGJ1aWxkIGEgcXVlcnkKc3RyaW5nLiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IG1vZGlmeSB0aGUgcHJvdmlkZWQga2V5cyB3aGVuIGFuIGFycmF5IGlzCmVuY291bnRlcmVkIChsaWtlIGBodHRwX2J1aWxkX3F1ZXJ5KClgIHdvdWxkKS4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpjYXNlbGVzc1JlbW92ZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNhc2VsZXNzUmVtb3ZlKGl0ZXJhYmxlPHN0cmluZz4gJGtleXMsICRrZXlzLCBhcnJheSAkZGF0YSk6IGFycmF5YAoKUmVtb3ZlIHRoZSBpdGVtcyBnaXZlbiBieSB0aGUga2V5cywgY2FzZSBpbnNlbnNpdGl2ZWx5IGZyb20gdGhlIGRhdGEuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xVdGlsczo6Y29weVRvU3RyZWFtYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29weVRvU3RyZWFtKFN0cmVhbUludGVyZmFjZSAkc291cmNlLCBTdHJlYW1JbnRlcmZhY2UgJGRlc3QsIGludCAkbWF4TGVuID0gLTEpOiB2b2lkYAoKQ29weSB0aGUgY29udGVudHMgb2YgYSBzdHJlYW0gaW50byBhbm90aGVyIHN0cmVhbSB1bnRpbCB0aGUgZ2l2ZW4gbnVtYmVyCm9mIGJ5dGVzIGhhdmUgYmVlbiByZWFkLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OmNvcHlUb1N0cmluZ2AKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvcHlUb1N0cmluZyhTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgaW50ICRtYXhMZW4gPSAtMSk6IHN0cmluZ2AKCkNvcHkgdGhlIGNvbnRlbnRzIG9mIGEgc3RyZWFtIGludG8gYSBzdHJpbmcgdW50aWwgdGhlIGdpdmVuIG51bWJlciBvZgpieXRlcyBoYXZlIGJlZW4gcmVhZC4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpoYXNoYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzaChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgc3RyaW5nICRhbGdvLCBib29sICRyYXdPdXRwdXQgPSBmYWxzZSk6IHN0cmluZ2AKCkNhbGN1bGF0ZSBhIGhhc2ggb2YgYSBzdHJlYW0uCgpUaGlzIG1ldGhvZCByZWFkcyB0aGUgZW50aXJlIHN0cmVhbSB0byBjYWxjdWxhdGUgYSByb2xsaW5nIGhhc2gsIGJhc2VkIG9uClBIUCdzIGBoYXNoX2luaXRgIGZ1bmN0aW9ucy4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjptb2RpZnlSZXF1ZXN0YAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbW9kaWZ5UmVxdWVzdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCBhcnJheSAkY2hhbmdlcyk6IFJlcXVlc3RJbnRlcmZhY2VgCgpDbG9uZSBhbmQgbW9kaWZ5IGEgcmVxdWVzdCB3aXRoIHRoZSBnaXZlbiBjaGFuZ2VzLgoKVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNsb25lcyBuZWVkZWQgdG8gbXV0YXRlCmEgbWVzc2FnZS4KCi0gbWV0aG9kOiAoc3RyaW5nKSBDaGFuZ2VzIHRoZSBIVFRQIG1ldGhvZC4KLSBzZXRfaGVhZGVyczogKGFycmF5KSBTZXRzIHRoZSBnaXZlbiBoZWFkZXJzLgotIHJlbW92ZV9oZWFkZXJzOiAoYXJyYXkpIFJlbW92ZSB0aGUgZ2l2ZW4gaGVhZGVycy4KLSBib2R5OiAobWl4ZWQpIFNldHMgdGhlIGdpdmVuIGJvZHkuCi0gdXJpOiAoVXJpSW50ZXJmYWNlKSBTZXQgdGhlIFVSSS4KLSBxdWVyeTogKHN0cmluZykgU2V0IHRoZSBxdWVyeSBzdHJpbmcgdmFsdWUgb2YgdGhlIFVSSS4KLSB2ZXJzaW9uOiAoc3RyaW5nKSBTZXQgdGhlIHByb3RvY29sIHZlcnNpb24uCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xVdGlsczo6cmVhZExpbmVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWFkTGluZShTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgP2ludCAkbWF4TGVuZ3RoID0gbnVsbCk6IHN0cmluZ2AKClJlYWQgYSBsaW5lIGZyb20gdGhlIHN0cmVhbSB1cCB0byB0aGUgbWF4aW11bSBhbGxvd2VkIGJ1ZmZlciBsZW5ndGguCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xVdGlsczo6cmVkYWN0VXNlckluZm9gCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWRhY3RVc2VySW5mbyhVcmlJbnRlcmZhY2UgJHVyaSk6IFVyaUludGVyZmFjZWAKClJlZGFjdCB0aGUgcGFzc3dvcmQgaW4gdGhlIHVzZXIgaW5mbyBwYXJ0IG9mIGEgVVJJLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnN0cmVhbUZvcmAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0cmVhbUZvcihyZXNvdXJjZXxzdHJpbmd8bnVsbHxpbnR8ZmxvYXR8Ym9vbHxTdHJlYW1JbnRlcmZhY2V8Y2FsbGFibGV8XEl0ZXJhdG9yICRyZXNvdXJjZSA9ICcnLCBhcnJheSAkb3B0aW9ucyA9IFtdKTogU3RyZWFtSW50ZXJmYWNlYAoKQ3JlYXRlIGEgbmV3IHN0cmVhbSBiYXNlZCBvbiB0aGUgaW5wdXQgdHlwZS4KCk9wdGlvbnMgaXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgdGhhdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIGtleXM6CgotIG1ldGFkYXRhOiBBcnJheSBvZiBjdXN0b20gbWV0YWRhdGEuCi0gc2l6ZTogU2l6ZSBvZiB0aGUgc3RyZWFtLgoKVGhpcyBtZXRob2QgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGAkcmVzb3VyY2VgIHR5cGVzOgoKLSBgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2VgOiBSZXR1cm5zIHRoZSB2YWx1ZSBhcy1pcy4KLSBgc3RyaW5nYDogQ3JlYXRlcyBhIHN0cmVhbSBvYmplY3QgdGhhdCB1c2VzIHRoZSBnaXZlbiBzdHJpbmcgYXMgdGhlIGNvbnRlbnRzLgotIGByZXNvdXJjZWA6IENyZWF0ZXMgYSBzdHJlYW0gb2JqZWN0IHRoYXQgd3JhcHMgdGhlIGdpdmVuIFBIUCBzdHJlYW0gcmVzb3VyY2UuCi0gYEl0ZXJhdG9yYDogSWYgdGhlIHByb3ZpZGVkIHZhbHVlIGltcGxlbWVudHMgYEl0ZXJhdG9yYCwgdGhlbiBhIHJlYWQtb25seQogIHN0cmVhbSBvYmplY3Qgd2lsbCBiZSBjcmVhdGVkIHRoYXQgd3JhcHMgdGhlIGdpdmVuIGl0ZXJhYmxlLiBFYWNoIHRpbWUgdGhlCiAgc3RyZWFtIGlzIHJlYWQgZnJvbSwgZGF0YSBmcm9tIHRoZSBpdGVyYXRvciB3aWxsIGZpbGwgYSBidWZmZXIgYW5kIHdpbGwgYmUKICBjb250aW51b3VzbHkgY2FsbGVkIHVudGlsIHRoZSBidWZmZXIgaXMgZXF1YWwgdG8gdGhlIHJlcXVlc3RlZCByZWFkIHNpemUuCiAgU3Vic2VxdWVudCByZWFkIGNhbGxzIHdpbGwgZmlyc3QgcmVhZCBmcm9tIHRoZSBidWZmZXIgYW5kIHRoZW4gY2FsbCBgbmV4dGAKICBvbiB0aGUgdW5kZXJseWluZyBpdGVyYXRvciB1bnRpbCBpdCBpcyBleGhhdXN0ZWQuCi0gYG9iamVjdGAgd2l0aCBgX190b1N0cmluZygpYDogSWYgdGhlIG9iamVjdCBoYXMgdGhlIGBfX3RvU3RyaW5nKClgIG1ldGhvZCwKICB0aGUgb2JqZWN0IHdpbGwgYmUgY2FzdCB0byBhIHN0cmluZyBhbmQgdGhlbiBhIHN0cmVhbSB3aWxsIGJlIHJldHVybmVkIHRoYXQKICB1c2VzIHRoZSBzdHJpbmcgdmFsdWUuCi0gYE5VTExgOiBXaGVuIGBudWxsYCBpcyBwYXNzZWQsIGFuIGVtcHR5IHN0cmVhbSBvYmplY3QgaXMgcmV0dXJuZWQuCi0gYGNhbGxhYmxlYCBXaGVuIGEgY2FsbGFibGUgaXMgcGFzc2VkLCBhIHJlYWQtb25seSBzdHJlYW0gb2JqZWN0IHdpbGwgYmUKICBjcmVhdGVkIHRoYXQgaW52b2tlcyB0aGUgZ2l2ZW4gY2FsbGFibGUuIFRoZSBjYWxsYWJsZSBpcyBpbnZva2VkIHdpdGggdGhlCiAgbnVtYmVyIG9mIHN1Z2dlc3RlZCBieXRlcyB0byByZWFkLiBUaGUgY2FsbGFibGUgY2FuIHJldHVybiBhbnkgbnVtYmVyIG9mCiAgYnl0ZXMsIGJ1dCBNVVNUIHJldHVybiBgZmFsc2VgIHdoZW4gdGhlcmUgaXMgbm8gbW9yZSBkYXRhIHRvIHJldHVybi4gVGhlCiAgc3RyZWFtIG9iamVjdCB0aGF0IHdyYXBzIHRoZSBjYWxsYWJsZSB3aWxsIGludm9rZSB0aGUgY2FsbGFibGUgdW50aWwgdGhlCiAgbnVtYmVyIG9mIHJlcXVlc3RlZCBieXRlcyBhcmUgYXZhaWxhYmxlLiBBbnkgYWRkaXRpb25hbCBieXRlcyB3aWxsIGJlCiAgYnVmZmVyZWQgYW5kIHVzZWQgaW4gc3Vic2VxdWVudCByZWFkcy4KCmBgYHBocAokc3RyZWFtID0gR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoJ2ZvbycpOwokc3RyZWFtID0gR3V6emxlSHR0cFxQc3I3XFV0aWxzOjpzdHJlYW1Gb3IoZm9wZW4oJy9wYXRoL3RvL2ZpbGUnLCAncicpKTsKCiRnZW5lcmF0b3IgPSBmdW5jdGlvbiAoJGJ5dGVzKSB7CiAgICBmb3IgKCRpID0gMDsgJGkgPCAkYnl0ZXM7ICRpKyspIHsKICAgICAgICB5aWVsZCAnICc7CiAgICB9Cn0KCiRzdHJlYW0gPSBHdXp6bGVIdHRwXFBzcjdcVXRpbHM6OnN0cmVhbUZvcigkZ2VuZXJhdG9yKDEwMCkpOwpgYGAKCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjp0cnlGb3BlbmAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRyeUZvcGVuKHN0cmluZyAkZmlsZW5hbWUsIHN0cmluZyAkbW9kZSk6IHJlc291cmNlYAoKU2FmZWx5IG9wZW5zIGEgUEhQIHN0cmVhbSByZXNvdXJjZSB1c2luZyBhIGZpbGVuYW1lLgoKV2hlbiBmb3BlbiBmYWlscywgUEhQIG5vcm1hbGx5IHJhaXNlcyBhIHdhcm5pbmcuIFRoaXMgZnVuY3Rpb24gYWRkcyBhbgplcnJvciBoYW5kbGVyIHRoYXQgY2hlY2tzIGZvciBlcnJvcnMgYW5kIHRocm93cyBhbiBleGNlcHRpb24gaW5zdGVhZC4KCgojIyBgR3V6emxlSHR0cFxQc3I3XFV0aWxzOjp0cnlHZXRDb250ZW50c2AKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRyeUdldENvbnRlbnRzKHJlc291cmNlICRzdHJlYW0pOiBzdHJpbmdgCgpTYWZlbHkgZ2V0cyB0aGUgY29udGVudHMgb2YgYSBnaXZlbiBzdHJlYW0uCgpXaGVuIHN0cmVhbV9nZXRfY29udGVudHMgZmFpbHMsIFBIUCBub3JtYWxseSByYWlzZXMgYSB3YXJuaW5nLiBUaGlzCmZ1bmN0aW9uIGFkZHMgYW4gZXJyb3IgaGFuZGxlciB0aGF0IGNoZWNrcyBmb3IgZXJyb3JzIGFuZCB0aHJvd3MgYW4KZXhjZXB0aW9uIGluc3RlYWQuCgoKIyMgYEd1enpsZUh0dHBcUHNyN1xVdGlsczo6dXJpRm9yYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXJpRm9yKHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaSk6IFVyaUludGVyZmFjZWAKClJldHVybnMgYSBVcmlJbnRlcmZhY2UgZm9yIHRoZSBnaXZlbiB2YWx1ZS4KClRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhIHN0cmluZyBvciBVcmlJbnRlcmZhY2UgYW5kIHJldHVybnMgYQpVcmlJbnRlcmZhY2UgZm9yIHRoZSBnaXZlbiB2YWx1ZS4gSWYgdGhlIHZhbHVlIGlzIGFscmVhZHkgYQpVcmlJbnRlcmZhY2UsIGl0IGlzIHJldHVybmVkIGFzLWlzLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWltZVR5cGU6OmZyb21GaWxlbmFtZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21GaWxlbmFtZShzdHJpbmcgJGZpbGVuYW1lKTogc3RyaW5nfG51bGxgCgpEZXRlcm1pbmVzIHRoZSBtaW1ldHlwZSBvZiBhIGZpbGUgYnkgbG9va2luZyBhdCBpdHMgZXh0ZW5zaW9uLgoKCiMjIGBHdXp6bGVIdHRwXFBzcjdcTWltZVR5cGU6OmZyb21FeHRlbnNpb25gCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tRXh0ZW5zaW9uKHN0cmluZyAkZXh0ZW5zaW9uKTogc3RyaW5nfG51bGxgCgpNYXBzIGEgZmlsZSBleHRlbnNpb25zIHRvIGEgbWltZXR5cGUuCgoKIyMgVXBncmFkaW5nIGZyb20gRnVuY3Rpb24gQVBJCgpUaGUgc3RhdGljIEFQSSB3YXMgZmlyc3QgaW50cm9kdWNlZCBpbiAxLjcuMCwgaW4gb3JkZXIgdG8gbWl0aWdhdGUgcHJvYmxlbXMgd2l0aCBmdW5jdGlvbnMgY29uZmxpY3RpbmcgYmV0d2VlbiBnbG9iYWwgYW5kIGxvY2FsIGNvcGllcyBvZiB0aGUgcGFja2FnZS4gVGhlIGZ1bmN0aW9uIEFQSSB3YXMgcmVtb3ZlZCBpbiAyLjAuMC4gQSBtaWdyYXRpb24gdGFibGUgaGFzIGJlZW4gcHJvdmlkZWQgaGVyZSBmb3IgeW91ciBjb252ZW5pZW5jZToKCnwgT3JpZ2luYWwgRnVuY3Rpb24gfCBSZXBsYWNlbWVudCBNZXRob2QgfAp8LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tfAp8IGBzdHJgIHwgYE1lc3NhZ2U6OnRvU3RyaW5nYCB8CnwgYHVyaV9mb3JgIHwgYFV0aWxzOjp1cmlGb3JgIHwKfCBgc3RyZWFtX2ZvcmAgfCBgVXRpbHM6OnN0cmVhbUZvcmAgfAp8IGBwYXJzZV9oZWFkZXJgIHwgYEhlYWRlcjo6cGFyc2VgIHwKfCBgbm9ybWFsaXplX2hlYWRlcmAgfCBgSGVhZGVyOjpub3JtYWxpemVgIHwKfCBgbW9kaWZ5X3JlcXVlc3RgIHwgYFV0aWxzOjptb2RpZnlSZXF1ZXN0YCB8CnwgYHJld2luZF9ib2R5YCB8IGBNZXNzYWdlOjpyZXdpbmRCb2R5YCB8CnwgYHRyeV9mb3BlbmAgfCBgVXRpbHM6OnRyeUZvcGVuYCB8CnwgYGNvcHlfdG9fc3RyaW5nYCB8IGBVdGlsczo6Y29weVRvU3RyaW5nYCB8CnwgYGNvcHlfdG9fc3RyZWFtYCB8IGBVdGlsczo6Y29weVRvU3RyZWFtYCB8CnwgYGhhc2hgIHwgYFV0aWxzOjpoYXNoYCB8CnwgYHJlYWRsaW5lYCB8IGBVdGlsczo6cmVhZExpbmVgIHwKfCBgcGFyc2VfcmVxdWVzdGAgfCBgTWVzc2FnZTo6cGFyc2VSZXF1ZXN0YCB8CnwgYHBhcnNlX3Jlc3BvbnNlYCB8IGBNZXNzYWdlOjpwYXJzZVJlc3BvbnNlYCB8CnwgYHBhcnNlX3F1ZXJ5YCB8IGBRdWVyeTo6cGFyc2VgIHwKfCBgYnVpbGRfcXVlcnlgIHwgYFF1ZXJ5OjpidWlsZGAgfAp8IGBtaW1ldHlwZV9mcm9tX2ZpbGVuYW1lYCB8IGBNaW1lVHlwZTo6ZnJvbUZpbGVuYW1lYCB8CnwgYG1pbWV0eXBlX2Zyb21fZXh0ZW5zaW9uYCB8IGBNaW1lVHlwZTo6ZnJvbUV4dGVuc2lvbmAgfAp8IGBfcGFyc2VfbWVzc2FnZWAgfCBgTWVzc2FnZTo6cGFyc2VNZXNzYWdlYCB8CnwgYF9wYXJzZV9yZXF1ZXN0X3VyaWAgfCBgTWVzc2FnZTo6cGFyc2VSZXF1ZXN0VXJpYCB8CnwgYGdldF9tZXNzYWdlX2JvZHlfc3VtbWFyeWAgfCBgTWVzc2FnZTo6Ym9keVN1bW1hcnlgIHwKfCBgX2Nhc2VsZXNzX3JlbW92ZWAgfCBgVXRpbHM6OmNhc2VsZXNzUmVtb3ZlYCB8CgoKIyBBZGRpdGlvbmFsIFVSSSBNZXRob2RzCgpBc2lkZSBmcm9tIHRoZSBzdGFuZGFyZCBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIGltcGxlbWVudGF0aW9uIGluIGZvcm0gb2YgdGhlIGBHdXp6bGVIdHRwXFBzcjdcVXJpYCBjbGFzcywKdGhpcyBsaWJyYXJ5IGFsc28gcHJvdmlkZXMgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IHdoZW4gd29ya2luZyB3aXRoIFVSSXMgYXMgc3RhdGljIG1ldGhvZHMuCgojIyBVUkkgVHlwZXMKCkFuIGluc3RhbmNlIG9mIGBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZWAgY2FuIGVpdGhlciBiZSBhbiBhYnNvbHV0ZSBVUkkgb3IgYSByZWxhdGl2ZSByZWZlcmVuY2UuCkFuIGFic29sdXRlIFVSSSBoYXMgYSBzY2hlbWUuIEEgcmVsYXRpdmUgcmVmZXJlbmNlIGlzIHVzZWQgdG8gZXhwcmVzcyBhIFVSSSByZWxhdGl2ZSB0byBhbm90aGVyIFVSSSwKdGhlIGJhc2UgVVJJLiBSZWxhdGl2ZSByZWZlcmVuY2VzIGNhbiBiZSBkaXZpZGVkIGludG8gc2V2ZXJhbCBmb3JtcyBhY2NvcmRpbmcgdG8KW1JGQyAzOTg2IFNlY3Rpb24gNC4yXShodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjIpOgoKLSBuZXR3b3JrLXBhdGggcmVmZXJlbmNlcywgZS5nLiBgLy9leGFtcGxlLmNvbS9wYXRoYAotIGFic29sdXRlLXBhdGggcmVmZXJlbmNlcywgZS5nLiBgL3BhdGhgCi0gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzLCBlLmcuIGBzdWJwYXRoYAoKVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IHRoZSB0eXBlIG9mIHRoZSBVUkkuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmlzQWJzb2x1dGVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Fic29sdXRlKFVyaUludGVyZmFjZSAkdXJpKTogYm9vbGAKCldoZXRoZXIgdGhlIFVSSSBpcyBhYnNvbHV0ZSwgaS5lLiBpdCBoYXMgYSBzY2hlbWUuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmlzTmV0d29ya1BhdGhSZWZlcmVuY2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc05ldHdvcmtQYXRoUmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpKTogYm9vbGAKCldoZXRoZXIgdGhlIFVSSSBpcyBhIG5ldHdvcmstcGF0aCByZWZlcmVuY2UuIEEgcmVsYXRpdmUgcmVmZXJlbmNlIHRoYXQgYmVnaW5zIHdpdGggdHdvIHNsYXNoIGNoYXJhY3RlcnMgaXMKdGVybWVkIGFuIG5ldHdvcmstcGF0aCByZWZlcmVuY2UuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmlzQWJzb2x1dGVQYXRoUmVmZXJlbmNlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNBYnNvbHV0ZVBhdGhSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sYAoKV2hldGhlciB0aGUgVVJJIGlzIGEgYWJzb2x1dGUtcGF0aCByZWZlcmVuY2UuIEEgcmVsYXRpdmUgcmVmZXJlbmNlIHRoYXQgYmVnaW5zIHdpdGggYSBzaW5nbGUgc2xhc2ggY2hhcmFjdGVyIGlzCnRlcm1lZCBhbiBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6aXNSZWxhdGl2ZVBhdGhSZWZlcmVuY2VgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc1JlbGF0aXZlUGF0aFJlZmVyZW5jZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2xgCgpXaGV0aGVyIHRoZSBVUkkgaXMgYSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZS4gQSByZWxhdGl2ZSByZWZlcmVuY2UgdGhhdCBkb2VzIG5vdCBiZWdpbiB3aXRoIGEgc2xhc2ggY2hhcmFjdGVyIGlzCnRlcm1lZCBhIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjppc1NhbWVEb2N1bWVudFJlZmVyZW5jZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzU2FtZURvY3VtZW50UmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpLCA/VXJpSW50ZXJmYWNlICRiYXNlID0gbnVsbCk6IGJvb2xgCgpXaGV0aGVyIHRoZSBVUkkgaXMgYSBzYW1lLWRvY3VtZW50IHJlZmVyZW5jZS4gQSBzYW1lLWRvY3VtZW50IHJlZmVyZW5jZSByZWZlcnMgdG8gYSBVUkkgdGhhdCBpcywgYXNpZGUgZnJvbSBpdHMKZnJhZ21lbnQgY29tcG9uZW50LCBpZGVudGljYWwgdG8gdGhlIGJhc2UgVVJJLiBXaGVuIG5vIGJhc2UgVVJJIGlzIGdpdmVuLCBvbmx5IGFuIGVtcHR5IFVSSSByZWZlcmVuY2UKKGFwYXJ0IGZyb20gaXRzIGZyYWdtZW50KSBpcyBjb25zaWRlcmVkIGEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UuCgojIyBVUkkgQ29tcG9uZW50cwoKQWRkaXRpb25hbCBtZXRob2RzIHRvIHdvcmsgd2l0aCBVUkkgY29tcG9uZW50cy4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6aXNEZWZhdWx0UG9ydGAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzRGVmYXVsdFBvcnQoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sYAoKV2hldGhlciB0aGUgVVJJIGhhcyB0aGUgZGVmYXVsdCBwb3J0IG9mIHRoZSBjdXJyZW50IHNjaGVtZS4gYFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOjpnZXRQb3J0YCBtYXkgcmV0dXJuIG51bGwKb3IgdGhlIHN0YW5kYXJkIHBvcnQuIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIGluZGVwZW5kZW50bHkgb2YgdGhlIGltcGxlbWVudGF0aW9uLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjpjb21wb3NlQ29tcG9uZW50c2AKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbXBvc2VDb21wb25lbnRzKCRzY2hlbWUsICRhdXRob3JpdHksICRwYXRoLCAkcXVlcnksICRmcmFnbWVudCk6IHN0cmluZ2AKCkNvbXBvc2VzIGEgVVJJIHJlZmVyZW5jZSBzdHJpbmcgZnJvbSBpdHMgdmFyaW91cyBjb21wb25lbnRzIGFjY29yZGluZyB0bwpbUkZDIDM5ODYgU2VjdGlvbiA1LjNdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMykuIFVzdWFsbHkgdGhpcyBtZXRob2QgZG9lcyBub3QgbmVlZAp0byBiZSBjYWxsZWQgbWFudWFsbHkgYnV0IGluc3RlYWQgaXMgdXNlZCBpbmRpcmVjdGx5IHZpYSBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U6Ol9fdG9TdHJpbmdgLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjpmcm9tUGFydHNgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tUGFydHMoYXJyYXkgJHBhcnRzKTogVXJpSW50ZXJmYWNlYAoKQ3JlYXRlcyBhIFVSSSBmcm9tIGEgaGFzaCBvZiBbYHBhcnNlX3VybGBdKGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLnBhcnNlLXVybC5waHApIGNvbXBvbmVudHMuCgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpOjp3aXRoUXVlcnlWYWx1ZWAKCmBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHdpdGhRdWVyeVZhbHVlKFVyaUludGVyZmFjZSAkdXJpLCAka2V5LCAkdmFsdWUpOiBVcmlJbnRlcmZhY2VgCgpDcmVhdGVzIGEgbmV3IFVSSSB3aXRoIGEgc3BlY2lmaWMgcXVlcnkgc3RyaW5nIHZhbHVlLiBBbnkgZXhpc3RpbmcgcXVlcnkgc3RyaW5nIHZhbHVlcyB0aGF0IGV4YWN0bHkgbWF0Y2ggdGhlCnByb3ZpZGVkIGtleSBhcmUgcmVtb3ZlZCBhbmQgcmVwbGFjZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5IHZhbHVlIHBhaXIuIEEgdmFsdWUgb2YgbnVsbCB3aWxsIHNldCB0aGUgcXVlcnkgc3RyaW5nCmtleSB3aXRob3V0IGEgdmFsdWUsIGUuZy4gImtleSIgaW5zdGVhZCBvZiAia2V5PXZhbHVlIi4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6d2l0aFF1ZXJ5VmFsdWVzYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd2l0aFF1ZXJ5VmFsdWVzKFVyaUludGVyZmFjZSAkdXJpLCBhcnJheSAka2V5VmFsdWVBcnJheSk6IFVyaUludGVyZmFjZWAKCkNyZWF0ZXMgYSBuZXcgVVJJIHdpdGggbXVsdGlwbGUgcXVlcnkgc3RyaW5nIHZhbHVlcy4gSXQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGB3aXRoUXVlcnlWYWx1ZSgpYCBidXQgZm9yIGFuCmFzc29jaWF0aXZlIGFycmF5IG9mIGtleSA9PiB2YWx1ZS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaTo6d2l0aG91dFF1ZXJ5VmFsdWVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB3aXRob3V0UXVlcnlWYWx1ZShVcmlJbnRlcmZhY2UgJHVyaSwgJGtleSk6IFVyaUludGVyZmFjZWAKCkNyZWF0ZXMgYSBuZXcgVVJJIHdpdGggYSBzcGVjaWZpYyBxdWVyeSBzdHJpbmcgdmFsdWUgcmVtb3ZlZC4gQW55IGV4aXN0aW5nIHF1ZXJ5IHN0cmluZyB2YWx1ZXMgdGhhdCBleGFjdGx5IG1hdGNoIHRoZQpwcm92aWRlZCBrZXkgYXJlIHJlbW92ZWQuCgojIyBDcm9zcy1PcmlnaW4gRGV0ZWN0aW9uCgpgR3V6emxlSHR0cFxQc3I3XFVyaUNvbXBhcmF0b3JgIHByb3ZpZGVzIG1ldGhvZHMgdG8gZGV0ZXJtaW5lIGlmIGEgbW9kaWZpZWQgVVJMIHNob3VsZCBiZSBjb25zaWRlcmVkIGNyb3NzLW9yaWdpbi4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaUNvbXBhcmF0b3I6OmlzQ3Jvc3NPcmlnaW5gCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Nyb3NzT3JpZ2luKFVyaUludGVyZmFjZSAkb3JpZ2luYWwsIFVyaUludGVyZmFjZSAkbW9kaWZpZWQpOiBib29sYAoKRGV0ZXJtaW5lcyBpZiBhIG1vZGlmaWVkIFVSTCBzaG91bGQgYmUgY29uc2lkZXJlZCBjcm9zcy1vcmlnaW4gd2l0aCByZXNwZWN0IHRvIGFuIG9yaWdpbmFsIFVSTC4KCiMjIFJlZmVyZW5jZSBSZXNvbHV0aW9uCgpgR3V6emxlSHR0cFxQc3I3XFVyaVJlc29sdmVyYCBwcm92aWRlcyBtZXRob2RzIHRvIHJlc29sdmUgYSBVUkkgcmVmZXJlbmNlIGluIHRoZSBjb250ZXh0IG9mIGEgYmFzZSBVUkkgYWNjb3JkaW5nCnRvIFtSRkMgMzk4NiBTZWN0aW9uIDVdKGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUpLiBUaGlzIGlzIGZvciBleGFtcGxlIGFsc28gd2hhdCB3ZWIKYnJvd3NlcnMgZG8gd2hlbiByZXNvbHZpbmcgYSBsaW5rIGluIGEgd2Vic2l0ZSBiYXNlZCBvbiB0aGUgY3VycmVudCByZXF1ZXN0IFVSSS4KCiMjIyBgR3V6emxlSHR0cFxQc3I3XFVyaVJlc29sdmVyOjpyZXNvbHZlYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVzb2x2ZShVcmlJbnRlcmZhY2UgJGJhc2UsIFVyaUludGVyZmFjZSAkcmVsKTogVXJpSW50ZXJmYWNlYAoKQ29udmVydHMgdGhlIHJlbGF0aXZlIFVSSSBpbnRvIGEgbmV3IFVSSSB0aGF0IGlzIHJlc29sdmVkIGFnYWluc3QgdGhlIGJhc2UgVVJJLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpUmVzb2x2ZXI6OnJlbW92ZURvdFNlZ21lbnRzYAoKYHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoc3RyaW5nICRwYXRoKTogc3RyaW5nYAoKUmVtb3ZlcyBkb3Qgc2VnbWVudHMgZnJvbSBhIHBhdGggYW5kIHJldHVybnMgdGhlIG5ldyBwYXRoIGFjY29yZGluZyB0bwpbUkZDIDM5ODYgU2VjdGlvbiA1LjIuNF0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNS4yLjQpLgoKIyMjIGBHdXp6bGVIdHRwXFBzcjdcVXJpUmVzb2x2ZXI6OnJlbGF0aXZpemVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWxhdGl2aXplKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICR0YXJnZXQpOiBVcmlJbnRlcmZhY2VgCgpSZXR1cm5zIHRoZSB0YXJnZXQgVVJJIGFzIGEgcmVsYXRpdmUgcmVmZXJlbmNlIGZyb20gdGhlIGJhc2UgVVJJLiBUaGlzIG1ldGhvZCBpcyB0aGUgY291bnRlcnBhcnQgdG8gcmVzb2x2ZSgpOgoKYGBgcGhwCihzdHJpbmcpICR0YXJnZXQgPT09IChzdHJpbmcpIFVyaVJlc29sdmVyOjpyZXNvbHZlKCRiYXNlLCBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgJHRhcmdldCkpCmBgYAoKT25lIHVzZS1jYXNlIGlzIHRvIHVzZSB0aGUgY3VycmVudCByZXF1ZXN0IFVSSSBhcyBiYXNlIFVSSSBhbmQgdGhlbiBnZW5lcmF0ZSByZWxhdGl2ZSBsaW5rcyBpbiB5b3VyIGRvY3VtZW50cwp0byByZWR1Y2UgdGhlIGRvY3VtZW50IHNpemUgb3Igb2ZmZXIgc2VsZi1jb250YWluZWQgZG93bmxvYWRhYmxlIGRvY3VtZW50IGFyY2hpdmVzLgoKYGBgcGhwCiRiYXNlID0gbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi8nKTsKZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi9jJykpOyAgLy8gcHJpbnRzICdjJy4KZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EveC95JykpOyAgLy8gcHJpbnRzICcuLi94L3knLgplY2hvIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCBuZXcgVXJpKCdodHRwOi8vZXhhbXBsZS5jb20vYS9iLz9xJykpOyAvLyBwcmludHMgJz9xJy4KZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUub3JnL2EvYi8nKSk7ICAgLy8gcHJpbnRzICcvL2V4YW1wbGUub3JnL2EvYi8nLgpgYGAKCiMjIE5vcm1hbGl6YXRpb24gYW5kIENvbXBhcmlzb24KCmBHdXp6bGVIdHRwXFBzcjdcVXJpTm9ybWFsaXplcmAgcHJvdmlkZXMgbWV0aG9kcyB0byBub3JtYWxpemUgYW5kIGNvbXBhcmUgVVJJcyBhY2NvcmRpbmcgdG8KW1JGQyAzOTg2IFNlY3Rpb24gNl0oaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNikuCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlOb3JtYWxpemVyOjpub3JtYWxpemVgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemUoVXJpSW50ZXJmYWNlICR1cmksICRmbGFncyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBVcmlJbnRlcmZhY2VgCgpSZXR1cm5zIGEgbm9ybWFsaXplZCBVUkkuIFRoZSBzY2hlbWUgYW5kIGhvc3QgY29tcG9uZW50IGFyZSBhbHJlYWR5IG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlIHBlciBQU1ItNyBVcmlJbnRlcmZhY2UuClRoaXMgbWV0aG9kcyBhZGRzIGFkZGl0aW9uYWwgbm9ybWFsaXphdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSBgJGZsYWdzYCBwYXJhbWV0ZXIgd2hpY2ggaXMgYSBiaXRtYXNrCm9mIG5vcm1hbGl6YXRpb25zIHRvIGFwcGx5LiBUaGUgZm9sbG93aW5nIG5vcm1hbGl6YXRpb25zIGFyZSBhdmFpbGFibGU6CgotIGBVcmlOb3JtYWxpemVyOjpQUkVTRVJWSU5HX05PUk1BTElaQVRJT05TYAoKICAgIERlZmF1bHQgbm9ybWFsaXphdGlvbnMgd2hpY2ggb25seSBpbmNsdWRlIHRoZSBvbmVzIHRoYXQgcHJlc2VydmUgc2VtYW50aWNzLgoKLSBgVXJpTm9ybWFsaXplcjo6Q0FQSVRBTElaRV9QRVJDRU5UX0VOQ09ESU5HYAoKICAgIEFsbCBsZXR0ZXJzIHdpdGhpbiBhIHBlcmNlbnQtZW5jb2RpbmcgdHJpcGxldCAoZS5nLiwgIiUzQSIpIGFyZSBjYXNlLWluc2Vuc2l0aXZlLCBhbmQgc2hvdWxkIGJlIGNhcGl0YWxpemVkLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmcvYSVjMiViMWJgIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL2ElQzIlQjFiYAoKLSBgVXJpTm9ybWFsaXplcjo6REVDT0RFX1VOUkVTRVJWRURfQ0hBUkFDVEVSU2AKCiAgICBEZWNvZGVzIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgb2YgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzLiBGb3IgY29uc2lzdGVuY3ksIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgaW4gdGhlIHJhbmdlcyBvZgogICAgQUxQSEEgKCU0MeKAkyU1QSBhbmQgJTYx4oCTJTdBKSwgRElHSVQgKCUzMOKAkyUzOSksIGh5cGhlbiAoJTJEKSwgcGVyaW9kICglMkUpLCB1bmRlcnNjb3JlICglNUYpLCBvciB0aWxkZSAoJTdFKSBzaG91bGQKICAgIG5vdCBiZSBjcmVhdGVkIGJ5IFVSSSBwcm9kdWNlcnMgYW5kLCB3aGVuIGZvdW5kIGluIGEgVVJJLCBzaG91bGQgYmUgZGVjb2RlZCB0byB0aGVpciBjb3JyZXNwb25kaW5nIHVucmVzZXJ2ZWQKICAgIGNoYXJhY3RlcnMgYnkgVVJJIG5vcm1hbGl6ZXJzLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmcvJTdFdXNlcm4lNjFtZS9gIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL351c2VybmFtZS9gCgotIGBVcmlOb3JtYWxpemVyOjpDT05WRVJUX0VNUFRZX1BBVEhgCgogICAgQ29udmVydHMgdGhlIGVtcHR5IHBhdGggdG8gIi8iIGZvciBodHRwIGFuZCBodHRwcyBVUklzLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmdgIOKGkiBgaHR0cDovL2V4YW1wbGUub3JnL2AKCi0gYFVyaU5vcm1hbGl6ZXI6OlJFTU9WRV9ERUZBVUxUX0hPU1RgCgogICAgUmVtb3ZlcyB0aGUgZGVmYXVsdCBob3N0IG9mIHRoZSBnaXZlbiBVUkkgc2NoZW1lIGZyb20gdGhlIFVSSS4gT25seSB0aGUgImZpbGUiIHNjaGVtZSBkZWZpbmVzIHRoZSBkZWZhdWx0IGhvc3QKICAgICJsb2NhbGhvc3QiLiBBbGwgb2YgYGZpbGU6L215ZmlsZWAsIGBmaWxlOi8vL215ZmlsZWAsIGFuZCBgZmlsZTovL2xvY2FsaG9zdC9teWZpbGVgIGFyZSBlcXVpdmFsZW50IGFjY29yZGluZyB0bwogICAgUkZDIDM5ODYuCgogICAgRXhhbXBsZTogYGZpbGU6Ly9sb2NhbGhvc3QvbXlmaWxlYCDihpIgYGZpbGU6Ly8vbXlmaWxlYAoKLSBgVXJpTm9ybWFsaXplcjo6UkVNT1ZFX0RFRkFVTFRfUE9SVGAKCiAgICBSZW1vdmVzIHRoZSBkZWZhdWx0IHBvcnQgb2YgdGhlIGdpdmVuIFVSSSBzY2hlbWUgZnJvbSB0aGUgVVJJLgoKICAgIEV4YW1wbGU6IGBodHRwOi8vZXhhbXBsZS5vcmc6ODAvYCDihpIgYGh0dHA6Ly9leGFtcGxlLm9yZy9gCgotIGBVcmlOb3JtYWxpemVyOjpSRU1PVkVfRE9UX1NFR01FTlRTYAoKICAgIFJlbW92ZXMgdW5uZWNlc3NhcnkgZG90LXNlZ21lbnRzLiBEb3Qtc2VnbWVudHMgaW4gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzIGFyZSBub3QgcmVtb3ZlZCBhcyBpdCB3b3VsZAogICAgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSByZWZlcmVuY2UuCgogICAgRXhhbXBsZTogYGh0dHA6Ly9leGFtcGxlLm9yZy8uLi9hL2IvLi4vYy8uL2QuaHRtbGAg4oaSIGBodHRwOi8vZXhhbXBsZS5vcmcvYS9jL2QuaHRtbGAKCi0gYFVyaU5vcm1hbGl6ZXI6OlJFTU9WRV9EVVBMSUNBVEVfU0xBU0hFU2AKCiAgICBQYXRocyB3aGljaCBpbmNsdWRlIHR3byBvciBtb3JlIGFkamFjZW50IHNsYXNoZXMgYXJlIGNvbnZlcnRlZCB0byBvbmUuIFdlYnNlcnZlcnMgdXN1YWxseSBpZ25vcmUgZHVwbGljYXRlIHNsYXNoZXMKICAgIGFuZCB0cmVhdCB0aG9zZSBVUklzIGVxdWl2YWxlbnQuIEJ1dCBpbiB0aGVvcnkgdGhvc2UgVVJJcyBkbyBub3QgbmVlZCB0byBiZSBlcXVpdmFsZW50LiBTbyB0aGlzIG5vcm1hbGl6YXRpb24KICAgIG1heSBjaGFuZ2UgdGhlIHNlbWFudGljcy4gRW5jb2RlZCBzbGFzaGVzICglMkYpIGFyZSBub3QgcmVtb3ZlZC4KCiAgICBFeGFtcGxlOiBgaHR0cDovL2V4YW1wbGUub3JnLy9mb28vLy9iYXIuaHRtbGAg4oaSIGBodHRwOi8vZXhhbXBsZS5vcmcvZm9vL2Jhci5odG1sYAoKLSBgVXJpTm9ybWFsaXplcjo6U09SVF9RVUVSWV9QQVJBTUVURVJTYAoKICAgIFNvcnQgcXVlcnkgcGFyYW1ldGVycyB3aXRoIHRoZWlyIHZhbHVlcyBpbiBhbHBoYWJldGljYWwgb3JkZXIuIEhvd2V2ZXIsIHRoZSBvcmRlciBvZiBwYXJhbWV0ZXJzIGluIGEgVVJJIG1heSBiZQogICAgc2lnbmlmaWNhbnQgKHRoaXMgaXMgbm90IGRlZmluZWQgYnkgdGhlIHN0YW5kYXJkKS4gU28gdGhpcyBub3JtYWxpemF0aW9uIGlzIG5vdCBzYWZlIGFuZCBtYXkgY2hhbmdlIHRoZSBzZW1hbnRpY3MKICAgIG9mIHRoZSBVUkkuCgogICAgRXhhbXBsZTogYD9sYW5nPWVuJmFydGljbGU9ZnJlZGAg4oaSIGA/YXJ0aWNsZT1mcmVkJmxhbmc9ZW5gCgojIyMgYEd1enpsZUh0dHBcUHNyN1xVcmlOb3JtYWxpemVyOjppc0VxdWl2YWxlbnRgCgpgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0VxdWl2YWxlbnQoVXJpSW50ZXJmYWNlICR1cmkxLCBVcmlJbnRlcmZhY2UgJHVyaTIsICRub3JtYWxpemF0aW9ucyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBib29sYAoKV2hldGhlciB0d28gVVJJcyBjYW4gYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LiBCb3RoIFVSSXMgYXJlIG5vcm1hbGl6ZWQgYXV0b21hdGljYWxseSBiZWZvcmUgY29tcGFyaXNvbiB3aXRoIHRoZSBnaXZlbgpgJG5vcm1hbGl6YXRpb25zYCBiaXRtYXNrLiBUaGUgbWV0aG9kIGFsc28gYWNjZXB0cyByZWxhdGl2ZSBVUkkgcmVmZXJlbmNlcyBhbmQgcmV0dXJucyB0cnVlIHdoZW4gdGhleSBhcmUgZXF1aXZhbGVudC4KVGhpcyBvZiBjb3Vyc2UgYXNzdW1lcyB0aGV5IHdpbGwgYmUgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgc2FtZSBiYXNlIFVSSS4gSWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGRldGVybWluYXRpb24gb2YKZXF1aXZhbGVuY2Ugb3IgZGlmZmVyZW5jZSBvZiByZWxhdGl2ZSByZWZlcmVuY2VzIGRvZXMgbm90IG1lYW4gYW55dGhpbmcuCgoKIyMgU2VjdXJpdHkKCklmIHlvdSBkaXNjb3ZlciBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgd2l0aGluIHRoaXMgcGFja2FnZSwgcGxlYXNlIHNlbmQgYW4gZW1haWwgdG8gc2VjdXJpdHlAdGlkZWxpZnQuY29tLiBBbGwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpbGwgYmUgcHJvbXB0bHkgYWRkcmVzc2VkLiBQbGVhc2UgZG8gbm90IGRpc2Nsb3NlIHNlY3VyaXR5LXJlbGF0ZWQgaXNzdWVzIHB1YmxpY2x5IHVudGlsIGEgZml4IGhhcyBiZWVuIGFubm91bmNlZC4gUGxlYXNlIHNlZSBbU2VjdXJpdHkgUG9saWN5XShodHRwczovL2dpdGh1Yi5jb20vZ3V6emxlL3Bzcjcvc2VjdXJpdHkvcG9saWN5KSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KCgojIyBMaWNlbnNlCgpHdXp6bGUgaXMgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLiBQbGVhc2Ugc2VlIFtMaWNlbnNlIEZpbGVdKExJQ0VOU0UpIGZvciBtb3JlIGluZm9ybWF0aW9uLgoKCiMjIEZvciBFbnRlcnByaXNlCgpBdmFpbGFibGUgYXMgcGFydCBvZiB0aGUgVGlkZWxpZnQgU3Vic2NyaXB0aW9uCgpUaGUgbWFpbnRhaW5lcnMgb2YgR3V6emxlIGFuZCB0aG91c2FuZHMgb2Ygb3RoZXIgcGFja2FnZXMgYXJlIHdvcmtpbmcgd2l0aCBUaWRlbGlmdCB0byBkZWxpdmVyIGNvbW1lcmNpYWwgc3VwcG9ydCBhbmQgbWFpbnRlbmFuY2UgZm9yIHRoZSBvcGVuIHNvdXJjZSBkZXBlbmRlbmNpZXMgeW91IHVzZSB0byBidWlsZCB5b3VyIGFwcGxpY2F0aW9ucy4gU2F2ZSB0aW1lLCByZWR1Y2UgcmlzaywgYW5kIGltcHJvdmUgY29kZSBoZWFsdGgsIHdoaWxlIHBheWluZyB0aGUgbWFpbnRhaW5lcnMgb2YgdGhlIGV4YWN0IGRlcGVuZGVuY2llcyB5b3UgdXNlLiBbTGVhcm4gbW9yZS5dKGh0dHBzOi8vdGlkZWxpZnQuY29tL3N1YnNjcmlwdGlvbi9wa2cvcGFja2FnaXN0LWd1enpsZWh0dHAtcHNyNz91dG1fc291cmNlPXBhY2thZ2lzdC1ndXp6bGVodHRwLXBzcjcmdXRtX21lZGl1bT1yZWZlcnJhbCZ1dG1fY2FtcGFpZ249ZW50ZXJwcmlzZSZ1dG1fdGVybT1yZXBvKQo=]]></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[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBSZWFkcyBmcm9tIG11bHRpcGxlIHN0cmVhbXMsIG9uZSBhZnRlciB0aGUgb3RoZXIuCiAqCiAqIFRoaXMgaXMgYSByZWFkLW9ubHkgc3RyZWFtIGRlY29yYXRvci4KICovCmZpbmFsIGNsYXNzIEFwcGVuZFN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKiogQHZhciBTdHJlYW1JbnRlcmZhY2VbXSBTdHJlYW1zIGJlaW5nIGRlY29yYXRlZCAqLwogICAgcHJpdmF0ZSAkc3RyZWFtcyA9IFtdOwoKICAgIC8qKiBAdmFyIGJvb2wgKi8KICAgIHByaXZhdGUgJHNlZWthYmxlID0gdHJ1ZTsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJGN1cnJlbnQgPSAwOwoKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkcG9zID0gMDsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2VbXSAkc3RyZWFtcyBTdHJlYW1zIHRvIGRlY29yYXRlLiBFYWNoIHN0cmVhbSBtdXN0CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgcmVhZGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkc3RyZWFtcyA9IFtdKQogICAgewogICAgICAgIGZvcmVhY2ggKCRzdHJlYW1zIGFzICRzdHJlYW0pIHsKICAgICAgICAgICAgJHRoaXMtPmFkZFN0cmVhbSgkc3RyZWFtKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJHRoaXMtPnJld2luZCgpOwoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKFxQSFBfVkVSU0lPTl9JRCA+PSA3MDQwMCkgewogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCclczo6X190b1N0cmluZyBleGNlcHRpb246ICVzJywgc2VsZjo6Y2xhc3MsIChzdHJpbmcpICRlKSwgRV9VU0VSX0VSUk9SKTsKCiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGQgYSBzdHJlYW0gdG8gdGhlIEFwcGVuZFN0cmVhbQogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSBTdHJlYW0gdG8gYXBwZW5kLiBNdXN0IGJlIHJlYWRhYmxlLgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgc3RyZWFtIGlzIG5vdCByZWFkYWJsZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkU3RyZWFtKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtKTogdm9pZAogICAgewogICAgICAgIGlmICghJHN0cmVhbS0+aXNSZWFkYWJsZSgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdFYWNoIHN0cmVhbSBtdXN0IGJlIHJlYWRhYmxlJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBUaGUgc3RyZWFtIGlzIG9ubHkgc2Vla2FibGUgaWYgYWxsIHN0cmVhbXMgYXJlIHNlZWthYmxlCiAgICAgICAgaWYgKCEkc3RyZWFtLT5pc1NlZWthYmxlKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+c3RyZWFtc1tdID0gJHN0cmVhbTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudHMoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIFV0aWxzOjpjb3B5VG9TdHJpbmcoJHRoaXMpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xvc2VzIGVhY2ggYXR0YWNoZWQgc3RyZWFtLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5wb3MgPSAkdGhpcy0+Y3VycmVudCA9IDA7CiAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnN0cmVhbXMgYXMgJHN0cmVhbSkgewogICAgICAgICAgICAkc3RyZWFtLT5jbG9zZSgpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnN0cmVhbXMgPSBbXTsKICAgIH0KCiAgICAvKioKICAgICAqIERldGFjaGVzIGVhY2ggYXR0YWNoZWQgc3RyZWFtLgogICAgICoKICAgICAqIFJldHVybnMgbnVsbCBhcyBpdCdzIG5vdCBjbGVhciB3aGljaCB1bmRlcmx5aW5nIHN0cmVhbSByZXNvdXJjZSB0byByZXR1cm4uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgICR0aGlzLT5wb3MgPSAkdGhpcy0+Y3VycmVudCA9IDA7CiAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gdHJ1ZTsKCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnN0cmVhbXMgYXMgJHN0cmVhbSkgewogICAgICAgICAgICAkc3RyZWFtLT5kZXRhY2goKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5zdHJlYW1zID0gW107CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9zOwogICAgfQoKICAgIC8qKgogICAgICogVHJpZXMgdG8gY2FsY3VsYXRlIHRoZSBzaXplIGJ5IGFkZGluZyB0aGUgc2l6ZSBvZiBlYWNoIHN0cmVhbS4KICAgICAqCiAgICAgKiBJZiBhbnkgb2YgdGhlIHN0cmVhbXMgZG8gbm90IHJldHVybiBhIHZhbGlkIG51bWJlciwgdGhlbiB0aGUgc2l6ZSBvZiB0aGUKICAgICAqIGFwcGVuZCBzdHJlYW0gY2Fubm90IGJlIGRldGVybWluZWQgYW5kIG51bGwgaXMgcmV0dXJuZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQKICAgIHsKICAgICAgICAkc2l6ZSA9IDA7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zdHJlYW1zIGFzICRzdHJlYW0pIHsKICAgICAgICAgICAgJHMgPSAkc3RyZWFtLT5nZXRTaXplKCk7CiAgICAgICAgICAgIGlmICgkcyA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNpemUgKz0gJHM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHNpemU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICEkdGhpcy0+c3RyZWFtcwogICAgICAgICAgICB8fCAoJHRoaXMtPmN1cnJlbnQgPj0gY291bnQoJHRoaXMtPnN0cmVhbXMpIC0gMQogICAgICAgICAgICAgJiYgJHRoaXMtPnN0cmVhbXNbJHRoaXMtPmN1cnJlbnRdLT5lb2YoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBdHRlbXB0cyB0byBzZWVrIHRvIHRoZSBnaXZlbiBwb3NpdGlvbi4gT25seSBzdXBwb3J0cyBTRUVLX1NFVC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZAogICAgewogICAgICAgIGlmICghJHRoaXMtPnNlZWthYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVGhpcyBBcHBlbmRTdHJlYW0gaXMgbm90IHNlZWthYmxlJyk7CiAgICAgICAgfSBlbHNlaWYgKCR3aGVuY2UgIT09IFNFRUtfU0VUKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVGhlIEFwcGVuZFN0cmVhbSBjYW4gb25seSBzZWVrIHdpdGggU0VFS19TRVQnKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5wb3MgPSAkdGhpcy0+Y3VycmVudCA9IDA7CgogICAgICAgIC8vIFJld2luZCBlYWNoIHN0cmVhbQogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zdHJlYW1zIGFzICRpID0+ICRzdHJlYW0pIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRzdHJlYW0tPnJld2luZCgpOwogICAgICAgICAgICB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBzZWVrIHN0cmVhbSAnCiAgICAgICAgICAgICAgICAgICAgLiRpLicgb2YgdGhlIEFwcGVuZFN0cmVhbScsIDAsICRlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gU2VlayB0byB0aGUgYWN0dWFsIHBvc2l0aW9uIGJ5IHJlYWRpbmcgZnJvbSBlYWNoIHN0cmVhbQogICAgICAgIHdoaWxlICgkdGhpcy0+cG9zIDwgJG9mZnNldCAmJiAhJHRoaXMtPmVvZigpKSB7CiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+cmVhZChtaW4oODA5NiwgJG9mZnNldCAtICR0aGlzLT5wb3MpKTsKICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT09ICcnKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJlYWRzIGZyb20gYWxsIG9mIHRoZSBhcHBlbmRlZCBzdHJlYW1zIHVudGlsIHRoZSBsZW5ndGggaXMgbWV0IG9yIEVPRi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJlYWQoJGxlbmd0aCk6IHN0cmluZwogICAgewogICAgICAgICRidWZmZXIgPSAnJzsKICAgICAgICAkdG90YWwgPSBjb3VudCgkdGhpcy0+c3RyZWFtcykgLSAxOwogICAgICAgICRyZW1haW5pbmcgPSAkbGVuZ3RoOwogICAgICAgICRwcm9ncmVzc1RvTmV4dCA9IGZhbHNlOwoKICAgICAgICB3aGlsZSAoJHJlbWFpbmluZyA+IDApIHsKICAgICAgICAgICAgLy8gUHJvZ3Jlc3MgdG8gdGhlIG5leHQgc3RyZWFtIGlmIG5lZWRlZC4KICAgICAgICAgICAgaWYgKCRwcm9ncmVzc1RvTmV4dCB8fCAkdGhpcy0+c3RyZWFtc1skdGhpcy0+Y3VycmVudF0tPmVvZigpKSB7CiAgICAgICAgICAgICAgICAkcHJvZ3Jlc3NUb05leHQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+Y3VycmVudCA9PT0gJHRvdGFsKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICArKyR0aGlzLT5jdXJyZW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnN0cmVhbXNbJHRoaXMtPmN1cnJlbnRdLT5yZWFkKCRyZW1haW5pbmcpOwoKICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT09ICcnKSB7CiAgICAgICAgICAgICAgICAkcHJvZ3Jlc3NUb05leHQgPSB0cnVlOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRidWZmZXIgLj0gJHJlc3VsdDsKICAgICAgICAgICAgJHJlbWFpbmluZyA9ICRsZW5ndGggLSBzdHJsZW4oJGJ1ZmZlcik7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cG9zICs9IHN0cmxlbigkYnVmZmVyKTsKCiAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1dyaXRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2Vla2FibGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpOiBpbnQKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCB3cml0ZSB0byBhbiBBcHBlbmRTdHJlYW0nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGFkYXRhKCRrZXkgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAka2V5ID8gbnVsbCA6IFtdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/BufferStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBhIGJ1ZmZlciBzdHJlYW0gdGhhdCBjYW4gYmUgd3JpdHRlbiB0byB0byBmaWxsIGEgYnVmZmVyLCBhbmQgcmVhZAogKiBmcm9tIHRvIHJlbW92ZSBieXRlcyBmcm9tIHRoZSBidWZmZXIuCiAqCiAqIFRoaXMgc3RyZWFtIHJldHVybnMgYSAiaHdtIiBtZXRhZGF0YSB2YWx1ZSB0aGF0IHRlbGxzIHVwc3RyZWFtIGNvbnN1bWVycwogKiB3aGF0IHRoZSBjb25maWd1cmVkIGhpZ2ggd2F0ZXIgbWFyayBvZiB0aGUgc3RyZWFtIGlzLCBvciB0aGUgbWF4aW11bQogKiBwcmVmZXJyZWQgc2l6ZSBvZiB0aGUgYnVmZmVyLgogKi8KZmluYWwgY2xhc3MgQnVmZmVyU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIC8qKiBAdmFyIGludCAqLwogICAgcHJpdmF0ZSAkaHdtOwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkYnVmZmVyID0gJyc7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICRod20gSGlnaCB3YXRlciBtYXJrLCByZXByZXNlbnRpbmcgdGhlIHByZWZlcnJlZCBtYXhpbXVtCiAgICAgKiAgICAgICAgICAgICAgICAgYnVmZmVyIHNpemUuIElmIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgZXhjZWVkcyB0aGUgaGlnaAogICAgICogICAgICAgICAgICAgICAgIHdhdGVyIG1hcmssIHRoZW4gY2FsbHMgdG8gd3JpdGUgd2lsbCBjb250aW51ZSB0byBzdWNjZWVkCiAgICAgKiAgICAgICAgICAgICAgICAgYnV0IHdpbGwgcmV0dXJuIDAgdG8gaW5mb3JtIHdyaXRlcnMgdG8gc2xvdyBkb3duCiAgICAgKiAgICAgICAgICAgICAgICAgdW50aWwgdGhlIGJ1ZmZlciBoYXMgYmVlbiBkcmFpbmVkIGJ5IHJlYWRpbmcgZnJvbSBpdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGludCAkaHdtID0gMTYzODQpCiAgICB7CiAgICAgICAgJHRoaXMtPmh3bSA9ICRod207CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpOiBzdHJpbmcKICAgIHsKICAgICAgICAkYnVmZmVyID0gJHRoaXMtPmJ1ZmZlcjsKICAgICAgICAkdGhpcy0+YnVmZmVyID0gJyc7CgogICAgICAgIHJldHVybiAkYnVmZmVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciA9ICcnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgICR0aGlzLT5jbG9zZSgpOwoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50CiAgICB7CiAgICAgICAgcmV0dXJuIHN0cmxlbigkdGhpcy0+YnVmZmVyKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNSZWFkYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV3JpdGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZAogICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHNlZWsgYSBCdWZmZXJTdHJlYW0nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZW9mKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gc3RybGVuKCR0aGlzLT5idWZmZXIpID09PSAwOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IGRldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYSBCdWZmZXJTdHJlYW0nKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJlYWRzIGRhdGEgZnJvbSB0aGUgYnVmZmVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGN1cnJlbnRMZW5ndGggPSBzdHJsZW4oJHRoaXMtPmJ1ZmZlcik7CgogICAgICAgIGlmICgkbGVuZ3RoID49ICRjdXJyZW50TGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2xpY2UgdGhlIGJ1ZmZlciBiZWNhdXNlIHdlIGRvbid0IGhhdmUgZW5vdWdoIGRhdGEuCiAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+YnVmZmVyOwogICAgICAgICAgICAkdGhpcy0+YnVmZmVyID0gJyc7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gU2xpY2UgdXAgdGhlIHJlc3VsdCB0byBwcm92aWRlIGEgc3Vic2V0IG9mIHRoZSBidWZmZXIuCiAgICAgICAgICAgICRyZXN1bHQgPSBzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgMCwgJGxlbmd0aCk7CiAgICAgICAgICAgICR0aGlzLT5idWZmZXIgPSBzdWJzdHIoJHRoaXMtPmJ1ZmZlciwgJGxlbmd0aCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFdyaXRlcyBkYXRhIHRvIHRoZSBidWZmZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkc3RyaW5nKTogaW50CiAgICB7CiAgICAgICAgJHRoaXMtPmJ1ZmZlciAuPSAkc3RyaW5nOwoKICAgICAgICBpZiAoc3RybGVuKCR0aGlzLT5idWZmZXIpID49ICR0aGlzLT5od20pIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3RybGVuKCRzdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCRrZXkgPT09ICdod20nKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+aHdtOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRrZXkgPyBudWxsIDogW107CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/CachingStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgY2FuIGNhY2hlIHByZXZpb3VzbHkgcmVhZCBieXRlcyBmcm9tIGEgc2VxdWVudGlhbGx5CiAqIHJlYWQgc3RyZWFtLgogKi8KZmluYWwgY2xhc3MgQ2FjaGluZ1N0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgLyoqIEB2YXIgU3RyZWFtSW50ZXJmYWNlIFN0cmVhbSBiZWluZyB3cmFwcGVkICovCiAgICBwcml2YXRlICRyZW1vdGVTdHJlYW07CgogICAgLyoqIEB2YXIgaW50IE51bWJlciBvZiBieXRlcyB0byBza2lwIHJlYWRpbmcgZHVlIHRvIGEgd3JpdGUgb24gdGhlIGJ1ZmZlciAqLwogICAgcHJpdmF0ZSAkc2tpcFJlYWRCeXRlcyA9IDA7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgLyoqCiAgICAgKiBXZSB3aWxsIHRyZWF0IHRoZSBidWZmZXIgb2JqZWN0IGFzIHRoZSBib2R5IG9mIHRoZSBzdHJlYW0KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gU3RyZWFtIHRvIGNhY2hlLiBUaGUgY3Vyc29yIGlzIGFzc3VtZWQgdG8gYmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkdGFyZ2V0IE9wdGlvbmFsbHkgc3BlY2lmeSB3aGVyZSBkYXRhIGlzIGNhY2hlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sCiAgICAgICAgP1N0cmVhbUludGVyZmFjZSAkdGFyZ2V0ID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPnJlbW90ZVN0cmVhbSA9ICRzdHJlYW07CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICR0YXJnZXQgPzogbmV3IFN0cmVhbShVdGlsczo6dHJ5Rm9wZW4oJ3BocDovL3RlbXAnLCAncisnKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKTogP2ludAogICAgewogICAgICAgICRyZW1vdGVTaXplID0gJHRoaXMtPnJlbW90ZVN0cmVhbS0+Z2V0U2l6ZSgpOwoKICAgICAgICBpZiAobnVsbCA9PT0gJHJlbW90ZVNpemUpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbWF4KCR0aGlzLT5zdHJlYW0tPmdldFNpemUoKSwgJHJlbW90ZVNpemUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJHdoZW5jZSA9PT0gU0VFS19TRVQpIHsKICAgICAgICAgICAgJGJ5dGUgPSAkb2Zmc2V0OwogICAgICAgIH0gZWxzZWlmICgkd2hlbmNlID09PSBTRUVLX0NVUikgewogICAgICAgICAgICAkYnl0ZSA9ICRvZmZzZXQgKyAkdGhpcy0+dGVsbCgpOwogICAgICAgIH0gZWxzZWlmICgkd2hlbmNlID09PSBTRUVLX0VORCkgewogICAgICAgICAgICAkc2l6ZSA9ICR0aGlzLT5yZW1vdGVTdHJlYW0tPmdldFNpemUoKTsKICAgICAgICAgICAgaWYgKCRzaXplID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkc2l6ZSA9ICR0aGlzLT5jYWNoZUVudGlyZVN0cmVhbSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRieXRlID0gJHNpemUgKyAkb2Zmc2V0OwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIHdoZW5jZScpOwogICAgICAgIH0KCiAgICAgICAgJGRpZmYgPSAkYnl0ZSAtICR0aGlzLT5zdHJlYW0tPmdldFNpemUoKTsKCiAgICAgICAgaWYgKCRkaWZmID4gMCkgewogICAgICAgICAgICAvLyBSZWFkIHRoZSByZW1vdGVTdHJlYW0gdW50aWwgd2UgaGF2ZSByZWFkIGluIGF0IGxlYXN0IHRoZSBhbW91bnQKICAgICAgICAgICAgLy8gb2YgYnl0ZXMgcmVxdWVzdGVkLCBvciB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBmaWxlLgogICAgICAgICAgICB3aGlsZSAoJGRpZmYgPiAwICYmICEkdGhpcy0+cmVtb3RlU3RyZWFtLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJHRoaXMtPnJlYWQoJGRpZmYpOwogICAgICAgICAgICAgICAgJGRpZmYgPSAkYnl0ZSAtICR0aGlzLT5zdHJlYW0tPmdldFNpemUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IGRvIGEgbm9ybWFsIHNlZWsgc2luY2Ugd2UndmUgYWxyZWFkeSBzZWVuIHRoaXMgYnl0ZS4KICAgICAgICAgICAgJHRoaXMtPnN0cmVhbS0+c2VlaygkYnl0ZSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAvLyBQZXJmb3JtIGEgcmVndWxhciByZWFkIG9uIGFueSBwcmV2aW91c2x5IHJlYWQgZGF0YSBmcm9tIHRoZSBidWZmZXIKICAgICAgICAkZGF0YSA9ICR0aGlzLT5zdHJlYW0tPnJlYWQoJGxlbmd0aCk7CiAgICAgICAgJHJlbWFpbmluZyA9ICRsZW5ndGggLSBzdHJsZW4oJGRhdGEpOwoKICAgICAgICAvLyBNb3JlIGRhdGEgd2FzIHJlcXVlc3RlZCBzbyByZWFkIGZyb20gdGhlIHJlbW90ZSBzdHJlYW0KICAgICAgICBpZiAoJHJlbWFpbmluZykgewogICAgICAgICAgICAvLyBJZiBkYXRhIHdhcyB3cml0dGVuIHRvIHRoZSBidWZmZXIgaW4gYSBwb3NpdGlvbiB0aGF0IHdvdWxkIGhhdmUKICAgICAgICAgICAgLy8gYmVlbiBmaWxsZWQgZnJvbSB0aGUgcmVtb3RlIHN0cmVhbSwgdGhlbiB3ZSBtdXN0IHNraXAgYnl0ZXMgb24KICAgICAgICAgICAgLy8gdGhlIHJlbW90ZSBzdHJlYW0gdG8gZW11bGF0ZSBvdmVyd3JpdGluZyBieXRlcyBmcm9tIHRoYXQKICAgICAgICAgICAgLy8gcG9zaXRpb24uIFRoaXMgbWltaWNzIHRoZSBiZWhhdmlvciBvZiBvdGhlciBQSFAgc3RyZWFtIHdyYXBwZXJzLgogICAgICAgICAgICAkcmVtb3RlRGF0YSA9ICR0aGlzLT5yZW1vdGVTdHJlYW0tPnJlYWQoCiAgICAgICAgICAgICAgICAkcmVtYWluaW5nICsgJHRoaXMtPnNraXBSZWFkQnl0ZXMKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkdGhpcy0+c2tpcFJlYWRCeXRlcykgewogICAgICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkcmVtb3RlRGF0YSk7CiAgICAgICAgICAgICAgICAkcmVtb3RlRGF0YSA9IHN1YnN0cigkcmVtb3RlRGF0YSwgJHRoaXMtPnNraXBSZWFkQnl0ZXMpOwogICAgICAgICAgICAgICAgJHRoaXMtPnNraXBSZWFkQnl0ZXMgPSBtYXgoMCwgJHRoaXMtPnNraXBSZWFkQnl0ZXMgLSAkbGVuKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGRhdGEgLj0gJHJlbW90ZURhdGE7CiAgICAgICAgICAgICR0aGlzLT5zdHJlYW0tPndyaXRlKCRyZW1vdGVEYXRhKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd3JpdGUoJHN0cmluZyk6IGludAogICAgewogICAgICAgIC8vIFdoZW4gYXBwZW5kaW5nIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnRseSByZWFkIHN0cmVhbSwgeW91J2xsIHdhbnQKICAgICAgICAvLyB0byBza2lwIGJ5dGVzIGZyb20gYmVpbmcgcmVhZCBmcm9tIHRoZSByZW1vdGUgc3RyZWFtIHRvIGVtdWxhdGUKICAgICAgICAvLyBvdGhlciBzdHJlYW0gd3JhcHBlcnMuIEJhc2ljYWxseSByZXBsYWNpbmcgYnl0ZXMgb2YgZGF0YSBvZiBhIGZpeGVkCiAgICAgICAgLy8gbGVuZ3RoLgogICAgICAgICRvdmVyZmxvdyA9IChzdHJsZW4oJHN0cmluZykgKyAkdGhpcy0+dGVsbCgpKSAtICR0aGlzLT5yZW1vdGVTdHJlYW0tPnRlbGwoKTsKICAgICAgICBpZiAoJG92ZXJmbG93ID4gMCkgewogICAgICAgICAgICAkdGhpcy0+c2tpcFJlYWRCeXRlcyArPSAkb3ZlcmZsb3c7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+d3JpdGUoJHN0cmluZyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmVvZigpICYmICR0aGlzLT5yZW1vdGVTdHJlYW0tPmVvZigpOwogICAgfQoKICAgIC8qKgogICAgICogQ2xvc2UgYm90aCB0aGUgcmVtb3RlIHN0cmVhbSBhbmQgYnVmZmVyIHN0cmVhbQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5yZW1vdGVTdHJlYW0tPmNsb3NlKCk7CiAgICAgICAgJHRoaXMtPnN0cmVhbS0+Y2xvc2UoKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNhY2hlRW50aXJlU3RyZWFtKCk6IGludAogICAgewogICAgICAgICR0YXJnZXQgPSBuZXcgRm5TdHJlYW0oWyd3cml0ZScgPT4gJ3N0cmxlbiddKTsKICAgICAgICBVdGlsczo6Y29weVRvU3RyZWFtKCR0aGlzLCAkdGFyZ2V0KTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT50ZWxsKCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/DroppingStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgYmVnaW5zIGRyb3BwaW5nIGRhdGEgb25jZSB0aGUgc2l6ZSBvZiB0aGUgdW5kZXJseWluZwogKiBzdHJlYW0gYmVjb21lcyB0b28gZnVsbC4KICovCmZpbmFsIGNsYXNzIERyb3BwaW5nU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJG1heExlbmd0aDsKCiAgICAvKiogQHZhciBTdHJlYW1JbnRlcmZhY2UgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSAgICBVbmRlcmx5aW5nIHN0cmVhbSB0byBkZWNvcmF0ZS4KICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgICAgJG1heExlbmd0aCBNYXhpbXVtIHNpemUgYmVmb3JlIGRyb3BwaW5nIGRhdGEuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgaW50ICRtYXhMZW5ndGgpCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW07CiAgICAgICAgJHRoaXMtPm1heExlbmd0aCA9ICRtYXhMZW5ndGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpOiBpbnQKICAgIHsKICAgICAgICAkZGlmZiA9ICR0aGlzLT5tYXhMZW5ndGggLSAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCk7CgogICAgICAgIC8vIEJlZ2luIHJldHVybmluZyAwIHdoZW4gdGhlIHVuZGVybHlpbmcgc3RyZWFtIGlzIHRvbyBsYXJnZS4KICAgICAgICBpZiAoJGRpZmYgPD0gMCkgewogICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIC8vIFdyaXRlIHRoZSBzdHJlYW0gb3IgYSBzdWJzZXQgb2YgdGhlIHN0cmVhbSBpZiBuZWVkZWQuCiAgICAgICAgaWYgKHN0cmxlbigkc3RyaW5nKSA8ICRkaWZmKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT53cml0ZSgkc3RyaW5nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT53cml0ZShzdWJzdHIoJHN0cmluZywgMCwgJGRpZmYpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Exception/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Exception/MalformedUriException.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyN1xFeGNlcHRpb247Cgp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwoKLyoqCiAqIEV4Y2VwdGlvbiB0aHJvd24gaWYgYSBVUkkgY2Fubm90IGJlIHBhcnNlZCBiZWNhdXNlIGl0J3MgbWFsZm9ybWVkLgogKi8KY2xhc3MgTWFsZm9ybWVkVXJpRXhjZXB0aW9uIGV4dGVuZHMgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCnsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/FnStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBDb21wb3NlIHN0cmVhbSBpbXBsZW1lbnRhdGlvbnMgYmFzZWQgb24gYSBoYXNoIG9mIGZ1bmN0aW9ucy4KICoKICogQWxsb3dzIGZvciBlYXN5IHRlc3RpbmcgYW5kIGV4dGVuc2lvbiBvZiBhIHByb3ZpZGVkIHN0cmVhbSB3aXRob3V0IG5lZWRpbmcKICogdG8gY3JlYXRlIGEgY29uY3JldGUgY2xhc3MgZm9yIGEgc2ltcGxlIGV4dGVuc2lvbiBwb2ludC4KICovCiNbXEFsbG93RHluYW1pY1Byb3BlcnRpZXNdCmZpbmFsIGNsYXNzIEZuU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHByaXZhdGUgY29uc3QgU0xPVFMgPSBbCiAgICAgICAgJ19fdG9TdHJpbmcnLCAnY2xvc2UnLCAnZGV0YWNoJywgJ3Jld2luZCcsCiAgICAgICAgJ2dldFNpemUnLCAndGVsbCcsICdlb2YnLCAnaXNTZWVrYWJsZScsICdzZWVrJywgJ2lzV3JpdGFibGUnLCAnd3JpdGUnLAogICAgICAgICdpc1JlYWRhYmxlJywgJ3JlYWQnLCAnZ2V0Q29udGVudHMnLCAnZ2V0TWV0YWRhdGEnLAogICAgXTsKCiAgICAvKiogQHZhciBhcnJheTxzdHJpbmcsIGNhbGxhYmxlPiAqLwogICAgcHJpdmF0ZSAkbWV0aG9kczsKCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheTxzdHJpbmcsIGNhbGxhYmxlPiAkbWV0aG9kcyBIYXNoIG9mIG1ldGhvZCBuYW1lIHRvIGEgY2FsbGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkbWV0aG9kcykKICAgIHsKICAgICAgICAkdGhpcy0+bWV0aG9kcyA9ICRtZXRob2RzOwoKICAgICAgICAvLyBDcmVhdGUgdGhlIGZ1bmN0aW9ucyBvbiB0aGUgY2xhc3MKICAgICAgICBmb3JlYWNoICgkbWV0aG9kcyBhcyAkbmFtZSA9PiAkZm4pIHsKICAgICAgICAgICAgJHRoaXMtPnsnX2ZuXycuJG5hbWV9ID0gJGZuOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIExhemlseSBkZXRlcm1pbmUgd2hpY2ggbWV0aG9kcyBhcmUgbm90IGltcGxlbWVudGVkLgogICAgICoKICAgICAqIEB0aHJvd3MgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KHN0cmluZyAkbmFtZSk6IHZvaWQKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXEJhZE1ldGhvZENhbGxFeGNlcHRpb24oc3RyX3JlcGxhY2UoJ19mbl8nLCAnJywgJG5hbWUpCiAgICAgICAgICAgIC4nKCkgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBGblN0cmVhbScpOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIGNsb3NlIG1ldGhvZCBpcyBjYWxsZWQgb24gdGhlIHVuZGVybHlpbmcgc3RyZWFtIG9ubHkgaWYgcG9zc2libGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPl9mbl9jbG9zZSkpIHsKICAgICAgICAgICAgKCR0aGlzLT5fZm5fY2xvc2UpKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQW4gdW5zZXJpYWxpemUgd291bGQgYWxsb3cgdGhlIF9fZGVzdHJ1Y3QgdG8gcnVuIHdoZW4gdGhlIHVuc2VyaWFsaXplZCB2YWx1ZSBnb2VzIG91dCBvZiBzY29wZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxMb2dpY0V4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX193YWtldXAoKTogdm9pZAogICAgewogICAgICAgIHRocm93IG5ldyBcTG9naWNFeGNlcHRpb24oJ0ZuU3RyZWFtIHNob3VsZCBuZXZlciBiZSB1bnNlcmlhbGl6ZWQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgY3VzdG9tIGZ1bmN0aW9uYWxpdHkgdG8gYW4gdW5kZXJseWluZyBzdHJlYW0gYnkgaW50ZXJjZXB0aW5nCiAgICAgKiBzcGVjaWZpYyBtZXRob2QgY2FsbHMuCiAgICAgKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAgICAgICAgICRzdHJlYW0gIFN0cmVhbSB0byBkZWNvcmF0ZQogICAgICogQHBhcmFtIGFycmF5PHN0cmluZywgY2FsbGFibGU+ICRtZXRob2RzIEhhc2ggb2YgbWV0aG9kIG5hbWUgdG8gYSBjbG9zdXJlCiAgICAgKgogICAgICogQHJldHVybiBGblN0cmVhbQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29yYXRlKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCBhcnJheSAkbWV0aG9kcykKICAgIHsKICAgICAgICAvLyBJZiBhbnkgb2YgdGhlIHJlcXVpcmVkIG1ldGhvZHMgd2VyZSBub3QgcHJvdmlkZWQsIHRoZW4gc2ltcGx5CiAgICAgICAgLy8gcHJveHkgdG8gdGhlIGRlY29yYXRlZCBzdHJlYW0uCiAgICAgICAgZm9yZWFjaCAoYXJyYXlfZGlmZihzZWxmOjpTTE9UUywgYXJyYXlfa2V5cygkbWV0aG9kcykpIGFzICRkaWZmKSB7CiAgICAgICAgICAgIC8qKiBAdmFyIGNhbGxhYmxlICRjYWxsYWJsZSAqLwogICAgICAgICAgICAkY2FsbGFibGUgPSBbJHN0cmVhbSwgJGRpZmZdOwogICAgICAgICAgICAkbWV0aG9kc1skZGlmZl0gPSAkY2FsbGFibGU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJG1ldGhvZHMpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgICAgICAgICByZXR1cm4gKCR0aGlzLT5fZm5fX190b1N0cmluZykoKTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPj0gNzA0MDApIHsKICAgICAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3Ioc3ByaW50ZignJXM6Ol9fdG9TdHJpbmcgZXhjZXB0aW9uOiAlcycsIHNlbGY6OmNsYXNzLCAoc3RyaW5nKSAkZSksIEVfVVNFUl9FUlJPUik7CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgKCR0aGlzLT5fZm5fY2xvc2UpKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRldGFjaCgpCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX2RldGFjaCkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50CiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX2dldFNpemUpKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRlbGwoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX3RlbGwpKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX2VvZikoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTZWVrYWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX2lzU2Vla2FibGUpKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkCiAgICB7CiAgICAgICAgKCR0aGlzLT5fZm5fcmV3aW5kKSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCk6IHZvaWQKICAgIHsKICAgICAgICAoJHRoaXMtPl9mbl9zZWVrKSgkb2Zmc2V0LCAkd2hlbmNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX2lzV3JpdGFibGUpKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdyaXRlKCRzdHJpbmcpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5fZm5fd3JpdGUpKCRzdHJpbmcpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlYWRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5fZm5faXNSZWFkYWJsZSkoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVhZCgkbGVuZ3RoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICgkdGhpcy0+X2ZuX3JlYWQpKCRsZW5ndGgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5fZm5fZ2V0Q29udGVudHMpKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRhZGF0YSgka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5fZm5fZ2V0TWV0YWRhdGEpKCRrZXkpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Header.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCmZpbmFsIGNsYXNzIEhlYWRlcgp7CiAgICAvKioKICAgICAqIFBhcnNlIGFuIGFycmF5IG9mIGhlYWRlciB2YWx1ZXMgY29udGFpbmluZyAiOyIgc2VwYXJhdGVkIGRhdGEgaW50byBhbgogICAgICogYXJyYXkgb2YgYXNzb2NpYXRpdmUgYXJyYXlzIHJlcHJlc2VudGluZyB0aGUgaGVhZGVyIGtleSB2YWx1ZSBwYWlyIGRhdGEKICAgICAqIG9mIHRoZSBoZWFkZXIuIFdoZW4gYSBwYXJhbWV0ZXIgZG9lcyBub3QgY29udGFpbiBhIHZhbHVlLCBidXQganVzdAogICAgICogY29udGFpbnMgYSBrZXksIHRoaXMgZnVuY3Rpb24gd2lsbCBpbmplY3QgYSBrZXkgd2l0aCBhICcnIHN0cmluZyB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfGFycmF5ICRoZWFkZXIgSGVhZGVyIHRvIHBhcnNlIGludG8gY29tcG9uZW50cy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZSgkaGVhZGVyKTogYXJyYXkKICAgIHsKICAgICAgICBzdGF0aWMgJHRyaW1tZWQgPSAiXCInICBcblx0XHIiOwogICAgICAgICRwYXJhbXMgPSAkbWF0Y2hlcyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgoYXJyYXkpICRoZWFkZXIgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGZvcmVhY2ggKHNlbGY6OnNwbGl0TGlzdCgkdmFsdWUpIGFzICR2YWwpIHsKICAgICAgICAgICAgICAgICRwYXJ0ID0gW107CiAgICAgICAgICAgICAgICBmb3JlYWNoIChwcmVnX3NwbGl0KCcvOyg/PShbXiJdKiJbXiJdKiIpKlteIl0qJCkvJywgJHZhbCkgPzogW10gYXMgJGt2cCkgewogICAgICAgICAgICAgICAgICAgIGlmIChwcmVnX21hdGNoX2FsbCgnLzxbXj5dKz58W149XSsvJywgJGt2cCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRtID0gJG1hdGNoZXNbMF07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkbVsxXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0W3RyaW0oJG1bMF0sICR0cmltbWVkKV0gPSB0cmltKCRtWzFdLCAkdHJpbW1lZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcGFydFtdID0gdHJpbSgkbVswXSwgJHRyaW1tZWQpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCRwYXJ0KSB7CiAgICAgICAgICAgICAgICAgICAgJHBhcmFtc1tdID0gJHBhcnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGFyYW1zOwogICAgfQoKICAgIC8qKgogICAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgaGVhZGVyIHZhbHVlcyB0aGF0IG1heSBjb250YWluIGNvbW1hIHNlcGFyYXRlZAogICAgICogaGVhZGVycyBpbnRvIGFuIGFycmF5IG9mIGhlYWRlcnMgd2l0aCBubyBjb21tYSBzZXBhcmF0ZWQgdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmd8YXJyYXkgJGhlYWRlciBIZWFkZXIgdG8gbm9ybWFsaXplLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIFVzZSBzZWxmOjpzcGxpdExpc3QoKSBpbnN0ZWFkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZSgkaGVhZGVyKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoKGFycmF5KSAkaGVhZGVyIGFzICR2YWx1ZSkgewogICAgICAgICAgICBmb3JlYWNoIChzZWxmOjpzcGxpdExpc3QoJHZhbHVlKSBhcyAkcGFyc2VkKSB7CiAgICAgICAgICAgICAgICAkcmVzdWx0W10gPSAkcGFyc2VkOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIFNwbGl0cyBhIEhUVFAgaGVhZGVyIGRlZmluZWQgdG8gY29udGFpbiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGludG8KICAgICAqIGVhY2ggaW5kaXZpZHVhbCB2YWx1ZS4gRW1wdHkgdmFsdWVzIHdpbGwgYmUgcmVtb3ZlZC4KICAgICAqCiAgICAgKiBFeGFtcGxlIGhlYWRlcnMgaW5jbHVkZSAnYWNjZXB0JywgJ2NhY2hlLWNvbnRyb2wnIGFuZCAnaWYtbm9uZS1tYXRjaCcuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgbXVzdCBub3QgYmUgdXNlZCB0byBwYXJzZSBoZWFkZXJzIHRoYXQgYXJlIG5vdCBkZWZpbmVkIGFzCiAgICAgKiBhIGxpc3QsIHN1Y2ggYXMgJ3VzZXItYWdlbnQnIG9yICdzZXQtY29va2llJy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nfHN0cmluZ1tdICR2YWx1ZXMgSGVhZGVyIHZhbHVlIGFzIHJldHVybmVkIGJ5IE1lc3NhZ2VJbnRlcmZhY2U6OmdldEhlYWRlcigpCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNwbGl0TGlzdCgkdmFsdWVzKTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoIVxpc19hcnJheSgkdmFsdWVzKSkgewogICAgICAgICAgICAkdmFsdWVzID0gWyR2YWx1ZXNdOwogICAgICAgIH0KCiAgICAgICAgJHJlc3VsdCA9IFtdOwogICAgICAgIGZvcmVhY2ggKCR2YWx1ZXMgYXMgJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICghXGlzX3N0cmluZygkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFR5cGVFcnJvcignJGhlYWRlciBtdXN0IGVpdGhlciBiZSBhIHN0cmluZyBvciBhbiBhcnJheSBjb250YWluaW5nIHN0cmluZ3MuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR2ID0gJyc7CiAgICAgICAgICAgICRpc1F1b3RlZCA9IGZhbHNlOwogICAgICAgICAgICAkaXNFc2NhcGVkID0gZmFsc2U7CiAgICAgICAgICAgIGZvciAoJGkgPSAwLCAkbWF4ID0gXHN0cmxlbigkdmFsdWUpOyAkaSA8ICRtYXg7ICsrJGkpIHsKICAgICAgICAgICAgICAgIGlmICgkaXNFc2NhcGVkKSB7CiAgICAgICAgICAgICAgICAgICAgJHYgLj0gJHZhbHVlWyRpXTsKICAgICAgICAgICAgICAgICAgICAkaXNFc2NhcGVkID0gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICghJGlzUXVvdGVkICYmICR2YWx1ZVskaV0gPT09ICcsJykgewogICAgICAgICAgICAgICAgICAgICR2ID0gXHRyaW0oJHYpOwogICAgICAgICAgICAgICAgICAgIGlmICgkdiAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFtdID0gJHY7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkdiA9ICcnOwogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkaXNRdW90ZWQgJiYgJHZhbHVlWyRpXSA9PT0gJ1xcJykgewogICAgICAgICAgICAgICAgICAgICRpc0VzY2FwZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICR2IC49ICR2YWx1ZVskaV07CgogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCR2YWx1ZVskaV0gPT09ICciJykgewogICAgICAgICAgICAgICAgICAgICRpc1F1b3RlZCA9ICEkaXNRdW90ZWQ7CiAgICAgICAgICAgICAgICAgICAgJHYgLj0gJHZhbHVlWyRpXTsKCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHYgLj0gJHZhbHVlWyRpXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHYgPSBcdHJpbSgkdik7CiAgICAgICAgICAgIGlmICgkdiAhPT0gJycpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbXSA9ICR2OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/HttpFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUZhY3RvcnlJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0RmFjdG9yeUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU2VydmVyUmVxdWVzdEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtRmFjdG9yeUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcGxvYWRlZEZpbGVGYWN0b3J5SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcGxvYWRlZEZpbGVJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUZhY3RvcnlJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBJbXBsZW1lbnRzIGFsbCBvZiB0aGUgUFNSLTE3IGludGVyZmFjZXMuCiAqCiAqIE5vdGU6IGluIGNvbnN1bWluZyBjb2RlIGl0IGlzIHJlY29tbWVuZGVkIHRvIHJlcXVpcmUgdGhlIGltcGxlbWVudGVkIGludGVyZmFjZXMKICogYW5kIGluamVjdCB0aGUgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBtdWx0aXBsZSB0aW1lcy4KICovCmZpbmFsIGNsYXNzIEh0dHBGYWN0b3J5IGltcGxlbWVudHMgUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2UsIFJlc3BvbnNlRmFjdG9yeUludGVyZmFjZSwgU2VydmVyUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2UsIFN0cmVhbUZhY3RvcnlJbnRlcmZhY2UsIFVwbG9hZGVkRmlsZUZhY3RvcnlJbnRlcmZhY2UsIFVyaUZhY3RvcnlJbnRlcmZhY2UKewogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVwbG9hZGVkRmlsZSgKICAgICAgICBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwKICAgICAgICA/aW50ICRzaXplID0gbnVsbCwKICAgICAgICBpbnQgJGVycm9yID0gXFVQTE9BRF9FUlJfT0ssCiAgICAgICAgP3N0cmluZyAkY2xpZW50RmlsZW5hbWUgPSBudWxsLAogICAgICAgID9zdHJpbmcgJGNsaWVudE1lZGlhVHlwZSA9IG51bGwKICAgICk6IFVwbG9hZGVkRmlsZUludGVyZmFjZSB7CiAgICAgICAgaWYgKCRzaXplID09PSBudWxsKSB7CiAgICAgICAgICAgICRzaXplID0gJHN0cmVhbS0+Z2V0U2l6ZSgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBVcGxvYWRlZEZpbGUoJHN0cmVhbSwgJHNpemUsICRlcnJvciwgJGNsaWVudEZpbGVuYW1lLCAkY2xpZW50TWVkaWFUeXBlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlU3RyZWFtKHN0cmluZyAkY29udGVudCA9ICcnKTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIFV0aWxzOjpzdHJlYW1Gb3IoJGNvbnRlbnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW1Gcm9tRmlsZShzdHJpbmcgJGZpbGUsIHN0cmluZyAkbW9kZSA9ICdyJyk6IFN0cmVhbUludGVyZmFjZQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXNvdXJjZSA9IFV0aWxzOjp0cnlGb3BlbigkZmlsZSwgJG1vZGUpOwogICAgICAgIH0gY2F0Y2ggKFxSdW50aW1lRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIGlmICgnJyA9PT0gJG1vZGUgfHwgZmFsc2UgPT09IFxpbl9hcnJheSgkbW9kZVswXSwgWydyJywgJ3cnLCAnYScsICd4JywgJ2MnXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0ludmFsaWQgZmlsZSBvcGVuaW5nIG1vZGUgIiVzIicsICRtb2RlKSwgMCwgJGUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aHJvdyAkZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBVdGlsczo6c3RyZWFtRm9yKCRyZXNvdXJjZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVN0cmVhbUZyb21SZXNvdXJjZSgkcmVzb3VyY2UpOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gVXRpbHM6OnN0cmVhbUZvcigkcmVzb3VyY2UpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTZXJ2ZXJSZXF1ZXN0KHN0cmluZyAkbWV0aG9kLCAkdXJpLCBhcnJheSAkc2VydmVyUGFyYW1zID0gW10pOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRtZXRob2QpKSB7CiAgICAgICAgICAgIGlmICghZW1wdHkoJHNlcnZlclBhcmFtc1snUkVRVUVTVF9NRVRIT0QnXSkpIHsKICAgICAgICAgICAgICAgICRtZXRob2QgPSAkc2VydmVyUGFyYW1zWydSRVFVRVNUX01FVEhPRCddOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0Nhbm5vdCBkZXRlcm1pbmUgSFRUUCBtZXRob2QnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBTZXJ2ZXJSZXF1ZXN0KCRtZXRob2QsICR1cmksIFtdLCBudWxsLCAnMS4xJywgJHNlcnZlclBhcmFtcyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVJlc3BvbnNlKGludCAkY29kZSA9IDIwMCwgc3RyaW5nICRyZWFzb25QaHJhc2UgPSAnJyk6IFJlc3BvbnNlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgkY29kZSwgW10sIG51bGwsICcxLjEnLCAkcmVhc29uUGhyYXNlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlUmVxdWVzdChzdHJpbmcgJG1ldGhvZCwgJHVyaSk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gbmV3IFJlcXVlc3QoJG1ldGhvZCwgJHVyaSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVyaShzdHJpbmcgJHVyaSA9ICcnKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBVcmkoJHVyaSk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/InflateStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBVc2VzIFBIUCdzIHpsaWIuaW5mbGF0ZSBmaWx0ZXIgdG8gaW5mbGF0ZSB6bGliIChIVFRQIGRlZmxhdGUsIFJGQzE5NTApIG9yIGd6aXBwZWQgKFJGQzE5NTIpIGNvbnRlbnQuCiAqCiAqIFRoaXMgc3RyZWFtIGRlY29yYXRvciBjb252ZXJ0cyB0aGUgcHJvdmlkZWQgc3RyZWFtIHRvIGEgUEhQIHN0cmVhbSByZXNvdXJjZSwKICogdGhlbiBhcHBlbmRzIHRoZSB6bGliLmluZmxhdGUgZmlsdGVyLiBUaGUgc3RyZWFtIGlzIHRoZW4gY29udmVydGVkIGJhY2sKICogdG8gYSBHdXp6bGUgc3RyZWFtIHJlc291cmNlIHRvIGJlIHVzZWQgYXMgYSBHdXp6bGUgc3RyZWFtLgogKgogKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMTk1MAogKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMTk1MgogKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2ZpbHRlcnMuY29tcHJlc3Npb24ucGhwCiAqLwpmaW5hbCBjbGFzcyBJbmZsYXRlU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBTdHJlYW1JbnRlcmZhY2UgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0pCiAgICB7CiAgICAgICAgJHJlc291cmNlID0gU3RyZWFtV3JhcHBlcjo6Z2V0UmVzb3VyY2UoJHN0cmVhbSk7CiAgICAgICAgLy8gU3BlY2lmeSB3aW5kb3c9MTUrMzIsIHNvIHpsaWIgd2lsbCB1c2UgaGVhZGVyIGRldGVjdGlvbiB0byBib3RoIGd6aXAgKHdpdGggaGVhZGVyKSBhbmQgemxpYiBkYXRhCiAgICAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnpsaWIubmV0L21hbnVhbC5odG1sI0FkdmFuY2VkIGRlZmluaXRpb24gb2YgaW5mbGF0ZUluaXQyCiAgICAgICAgLy8gIkFkZCAzMiB0byB3aW5kb3dCaXRzIHRvIGVuYWJsZSB6bGliIGFuZCBnemlwIGRlY29kaW5nIHdpdGggYXV0b21hdGljIGhlYWRlciBkZXRlY3Rpb24iCiAgICAgICAgLy8gRGVmYXVsdCB3aW5kb3cgc2l6ZSBpcyAxNS4KICAgICAgICBzdHJlYW1fZmlsdGVyX2FwcGVuZCgkcmVzb3VyY2UsICd6bGliLmluZmxhdGUnLCBTVFJFQU1fRklMVEVSX1JFQUQsIFsnd2luZG93JyA9PiAxNSArIDMyXSk7CiAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICRzdHJlYW0tPmlzU2Vla2FibGUoKSA/IG5ldyBTdHJlYW0oJHJlc291cmNlKSA6IG5ldyBOb1NlZWtTdHJlYW0obmV3IFN0cmVhbSgkcmVzb3VyY2UpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/LazyOpenStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBMYXppbHkgcmVhZHMgb3Igd3JpdGVzIHRvIGEgZmlsZSB0aGF0IGlzIG9wZW5lZCBvbmx5IGFmdGVyIGFuIElPIG9wZXJhdGlvbgogKiB0YWtlIHBsYWNlIG9uIHRoZSBzdHJlYW0uCiAqLwpmaW5hbCBjbGFzcyBMYXp5T3BlblN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICB1c2UgU3RyZWFtRGVjb3JhdG9yVHJhaXQ7CgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICRmaWxlbmFtZTsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJG1vZGU7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBGaWxlIHRvIGxhemlseSBvcGVuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2RlICAgICBmb3BlbiBtb2RlIHRvIHVzZSB3aGVuIG9wZW5pbmcgdGhlIHN0cmVhbQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRmaWxlbmFtZSwgc3RyaW5nICRtb2RlKQogICAgewogICAgICAgICR0aGlzLT5maWxlbmFtZSA9ICRmaWxlbmFtZTsKICAgICAgICAkdGhpcy0+bW9kZSA9ICRtb2RlOwoKICAgICAgICAvLyB1bnNldHRpbmcgdGhlIHByb3BlcnR5IGZvcmNlcyB0aGUgZmlyc3QgYWNjZXNzIHRvIGdvIHRocm91Z2gKICAgICAgICAvLyBfX2dldCgpLgogICAgICAgIHVuc2V0KCR0aGlzLT5zdHJlYW0pOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyB0aGUgdW5kZXJseWluZyBzdHJlYW0gbGF6aWx5IHdoZW4gcmVxdWlyZWQuCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oKTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuIFV0aWxzOjpzdHJlYW1Gb3IoVXRpbHM6OnRyeUZvcGVuKCR0aGlzLT5maWxlbmFtZSwgJHRoaXMtPm1vZGUpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/LimitStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBEZWNvcmF0b3IgdXNlZCB0byByZXR1cm4gb25seSBhIHN1YnNldCBvZiBhIHN0cmVhbS4KICovCmZpbmFsIGNsYXNzIExpbWl0U3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBpbnQgT2Zmc2V0IHRvIHN0YXJ0IHJlYWRpbmcgZnJvbSAqLwogICAgcHJpdmF0ZSAkb2Zmc2V0OwoKICAgIC8qKiBAdmFyIGludCBMaW1pdCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHJlYWQgKi8KICAgIHByaXZhdGUgJGxpbWl0OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIC8qKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtIFN0cmVhbSB0byB3cmFwCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICRsaW1pdCAgVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG93IHRvIGJlIHJlYWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSBzdHJlYW0uIFBhc3MgLTEgZm9yIG5vIGxpbWl0LgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkb2Zmc2V0IFBvc2l0aW9uIHRvIHNlZWsgdG8gYmVmb3JlIHJlYWRpbmcgKG9ubHkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrcyBvbiBzZWVrYWJsZSBzdHJlYW1zKS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLAogICAgICAgIGludCAkbGltaXQgPSAtMSwKICAgICAgICBpbnQgJG9mZnNldCA9IDAKICAgICkgewogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkc3RyZWFtOwogICAgICAgICR0aGlzLT5zZXRMaW1pdCgkbGltaXQpOwogICAgICAgICR0aGlzLT5zZXRPZmZzZXQoJG9mZnNldCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgLy8gQWx3YXlzIHJldHVybiB0cnVlIGlmIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBpcyBFT0YKICAgICAgICBpZiAoJHRoaXMtPnN0cmVhbS0+ZW9mKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICAvLyBObyBsaW1pdCBhbmQgdGhlIHVuZGVybHlpbmcgc3RyZWFtIGlzIG5vdCBhdCBFT0YKICAgICAgICBpZiAoJHRoaXMtPmxpbWl0ID09PSAtMSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+dGVsbCgpID49ICR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBsaW1pdGVkIHN1YnNldCBvZiBkYXRhCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gKCRsZW5ndGggPSAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCkpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+bGltaXQgPT09IC0xKSB7CiAgICAgICAgICAgIHJldHVybiAkbGVuZ3RoIC0gJHRoaXMtPm9mZnNldDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBtaW4oJHRoaXMtPmxpbWl0LCAkbGVuZ3RoIC0gJHRoaXMtPm9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBbGxvdyBmb3IgYSBib3VuZGVkIHNlZWsgb24gdGhlIHJlYWQgbGltaXRlZCBzdHJlYW0KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZAogICAgewogICAgICAgIGlmICgkd2hlbmNlICE9PSBTRUVLX1NFVCB8fCAkb2Zmc2V0IDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICdDYW5ub3Qgc2VlayB0byBvZmZzZXQgJXMgd2l0aCB3aGVuY2UgJXMnLAogICAgICAgICAgICAgICAgJG9mZnNldCwKICAgICAgICAgICAgICAgICR3aGVuY2UKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICAkb2Zmc2V0ICs9ICR0aGlzLT5vZmZzZXQ7CgogICAgICAgIGlmICgkdGhpcy0+bGltaXQgIT09IC0xKSB7CiAgICAgICAgICAgIGlmICgkb2Zmc2V0ID4gJHRoaXMtPm9mZnNldCArICR0aGlzLT5saW1pdCkgewogICAgICAgICAgICAgICAgJG9mZnNldCA9ICR0aGlzLT5vZmZzZXQgKyAkdGhpcy0+bGltaXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR0aGlzLT5zdHJlYW0tPnNlZWsoJG9mZnNldCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHaXZlIGEgcmVsYXRpdmUgdGVsbCgpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT50ZWxsKCkgLSAkdGhpcy0+b2Zmc2V0OwogICAgfQoKICAgIC8qKgogICAgICogU2V0IHRoZSBvZmZzZXQgdG8gc3RhcnQgbGltaXRpbmcgZnJvbQogICAgICoKICAgICAqIEBwYXJhbSBpbnQgJG9mZnNldCBPZmZzZXQgdG8gc2VlayB0byBhbmQgYmVnaW4gYnl0ZSBsaW1pdGluZyBmcm9tCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgc3RyZWFtIGNhbm5vdCBiZSBzZWVrZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRPZmZzZXQoaW50ICRvZmZzZXQpOiB2b2lkCiAgICB7CiAgICAgICAgJGN1cnJlbnQgPSAkdGhpcy0+c3RyZWFtLT50ZWxsKCk7CgogICAgICAgIGlmICgkY3VycmVudCAhPT0gJG9mZnNldCkgewogICAgICAgICAgICAvLyBJZiB0aGUgc3RyZWFtIGNhbm5vdCBzZWVrIHRvIHRoZSBvZmZzZXQgcG9zaXRpb24sIHRoZW4gcmVhZCB0byBpdAogICAgICAgICAgICBpZiAoJHRoaXMtPnN0cmVhbS0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c3RyZWFtLT5zZWVrKCRvZmZzZXQpOwogICAgICAgICAgICB9IGVsc2VpZiAoJGN1cnJlbnQgPiAkb2Zmc2V0KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBzZWVrIHRvIHN0cmVhbSBvZmZzZXQgJG9mZnNldCIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPnN0cmVhbS0+cmVhZCgkb2Zmc2V0IC0gJGN1cnJlbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+b2Zmc2V0ID0gJG9mZnNldDsKICAgIH0KCiAgICAvKioKICAgICAqIFNldCB0aGUgbGltaXQgb2YgYnl0ZXMgdGhhdCB0aGUgZGVjb3JhdG9yIGFsbG93cyB0byBiZSByZWFkIGZyb20gdGhlCiAgICAgKiBzdHJlYW0uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbGltaXQgTnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG93IHRvIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtLgogICAgICogICAgICAgICAgICAgICAgICAgVXNlIC0xIGZvciBubyBsaW1pdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNldExpbWl0KGludCAkbGltaXQpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmxpbWl0ID0gJGxpbWl0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmxpbWl0ID09PSAtMSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+cmVhZCgkbGVuZ3RoKTsKICAgICAgICB9CgogICAgICAgIC8vIENoZWNrIGlmIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGxlc3MgdGhhbiB0aGUgdG90YWwgYWxsb3dlZAogICAgICAgIC8vIGJ5dGVzICsgb3JpZ2luYWwgb2Zmc2V0CiAgICAgICAgJHJlbWFpbmluZyA9ICgkdGhpcy0+b2Zmc2V0ICsgJHRoaXMtPmxpbWl0KSAtICR0aGlzLT5zdHJlYW0tPnRlbGwoKTsKICAgICAgICBpZiAoJHJlbWFpbmluZyA+IDApIHsKICAgICAgICAgICAgLy8gT25seSByZXR1cm4gdGhlIGFtb3VudCBvZiByZXF1ZXN0ZWQgZGF0YSwgZW5zdXJpbmcgdGhhdCB0aGUgYnl0ZQogICAgICAgICAgICAvLyBsaW1pdCBpcyBub3QgZXhjZWVkZWQKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPnJlYWQobWluKCRyZW1haW5pbmcsICRsZW5ndGgpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnJzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Message.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgTWVzc2FnZQp7CiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBIVFRQIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHBhcmFtIE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UgTWVzc2FnZSB0byBjb252ZXJ0IHRvIGEgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvU3RyaW5nKE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJG1lc3NhZ2UgaW5zdGFuY2VvZiBSZXF1ZXN0SW50ZXJmYWNlKSB7CiAgICAgICAgICAgICRtc2cgPSB0cmltKCRtZXNzYWdlLT5nZXRNZXRob2QoKS4nICcKICAgICAgICAgICAgICAgICAgICAuJG1lc3NhZ2UtPmdldFJlcXVlc3RUYXJnZXQoKSkKICAgICAgICAgICAgICAgIC4nIEhUVFAvJy4kbWVzc2FnZS0+Z2V0UHJvdG9jb2xWZXJzaW9uKCk7CiAgICAgICAgICAgIGlmICghJG1lc3NhZ2UtPmhhc0hlYWRlcignaG9zdCcpKSB7CiAgICAgICAgICAgICAgICAkbXNnIC49ICJcclxuSG9zdDogIi4kbWVzc2FnZS0+Z2V0VXJpKCktPmdldEhvc3QoKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmICgkbWVzc2FnZSBpbnN0YW5jZW9mIFJlc3BvbnNlSW50ZXJmYWNlKSB7CiAgICAgICAgICAgICRtc2cgPSAnSFRUUC8nLiRtZXNzYWdlLT5nZXRQcm90b2NvbFZlcnNpb24oKS4nICcKICAgICAgICAgICAgICAgIC4kbWVzc2FnZS0+Z2V0U3RhdHVzQ29kZSgpLicgJwogICAgICAgICAgICAgICAgLiRtZXNzYWdlLT5nZXRSZWFzb25QaHJhc2UoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5rbm93biBtZXNzYWdlIHR5cGUnKTsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRtZXNzYWdlLT5nZXRIZWFkZXJzKCkgYXMgJG5hbWUgPT4gJHZhbHVlcykgewogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRuYW1lKSAmJiBzdHJ0b2xvd2VyKCRuYW1lKSA9PT0gJ3NldC1jb29raWUnKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICR2YWx1ZSkgewogICAgICAgICAgICAgICAgICAgICRtc2cgLj0gIlxyXG57JG5hbWV9OiAiLiR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRtc2cgLj0gIlxyXG57JG5hbWV9OiAiLmltcGxvZGUoJywgJywgJHZhbHVlcyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAieyRtc2d9XHJcblxyXG4iLiRtZXNzYWdlLT5nZXRCb2R5KCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBHZXQgYSBzaG9ydCBzdW1tYXJ5IG9mIHRoZSBtZXNzYWdlIGJvZHkuCiAgICAgKgogICAgICogV2lsbCByZXR1cm4gYG51bGxgIGlmIHRoZSByZXNwb25zZSBpcyBub3QgcHJpbnRhYmxlLgogICAgICoKICAgICAqIEBwYXJhbSBNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlICAgIFRoZSBtZXNzYWdlIHRvIGdldCB0aGUgYm9keSBzdW1tYXJ5CiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAkdHJ1bmNhdGVBdCBUaGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb2YgdGhlIHN1bW1hcnkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBib2R5U3VtbWFyeShNZXNzYWdlSW50ZXJmYWNlICRtZXNzYWdlLCBpbnQgJHRydW5jYXRlQXQgPSAxMjApOiA/c3RyaW5nCiAgICB7CiAgICAgICAgJGJvZHkgPSAkbWVzc2FnZS0+Z2V0Qm9keSgpOwoKICAgICAgICBpZiAoISRib2R5LT5pc1NlZWthYmxlKCkgfHwgISRib2R5LT5pc1JlYWRhYmxlKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkc2l6ZSA9ICRib2R5LT5nZXRTaXplKCk7CgogICAgICAgIGlmICgkc2l6ZSA9PT0gMCkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRib2R5LT5yZXdpbmQoKTsKICAgICAgICAkc3VtbWFyeSA9ICRib2R5LT5yZWFkKCR0cnVuY2F0ZUF0KTsKICAgICAgICAkYm9keS0+cmV3aW5kKCk7CgogICAgICAgIGlmICgkc2l6ZSA+ICR0cnVuY2F0ZUF0KSB7CiAgICAgICAgICAgICRzdW1tYXJ5IC49ICcgKHRydW5jYXRlZC4uLiknOwogICAgICAgIH0KCiAgICAgICAgLy8gTWF0Y2hlcyBhbnkgcHJpbnRhYmxlIGNoYXJhY3RlciwgaW5jbHVkaW5nIHVuaWNvZGUgY2hhcmFjdGVyczoKICAgICAgICAvLyBsZXR0ZXJzLCBtYXJrcywgbnVtYmVycywgcHVuY3R1YXRpb24sIHNwYWNpbmcsIGFuZCBzZXBhcmF0b3JzLgogICAgICAgIGlmIChwcmVnX21hdGNoKCcvW15ccExccE1ccE5ccFBccFNccFpcblxyXHRdL3UnLCAkc3VtbWFyeSkgIT09IDApIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHN1bW1hcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBdHRlbXB0cyB0byByZXdpbmQgYSBtZXNzYWdlIGJvZHkgYW5kIHRocm93cyBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4KICAgICAqCiAgICAgKiBUaGUgYm9keSBvZiB0aGUgbWVzc2FnZSB3aWxsIG9ubHkgYmUgcmV3b3VuZCBpZiBhIGNhbGwgdG8gYHRlbGwoKWAKICAgICAqIHJldHVybnMgYSB2YWx1ZSBvdGhlciB0aGFuIGAwYC4KICAgICAqCiAgICAgKiBAcGFyYW0gTWVzc2FnZUludGVyZmFjZSAkbWVzc2FnZSBNZXNzYWdlIHRvIHJld2luZAogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXdpbmRCb2R5KE1lc3NhZ2VJbnRlcmZhY2UgJG1lc3NhZ2UpOiB2b2lkCiAgICB7CiAgICAgICAgJGJvZHkgPSAkbWVzc2FnZS0+Z2V0Qm9keSgpOwoKICAgICAgICBpZiAoJGJvZHktPnRlbGwoKSkgewogICAgICAgICAgICAkYm9keS0+cmV3aW5kKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGFuIEhUVFAgbWVzc2FnZSBpbnRvIGFuIGFzc29jaWF0aXZlIGFycmF5LgogICAgICoKICAgICAqIFRoZSBhcnJheSBjb250YWlucyB0aGUgInN0YXJ0LWxpbmUiIGtleSBjb250YWluaW5nIHRoZSBzdGFydCBsaW5lIG9mCiAgICAgKiB0aGUgbWVzc2FnZSwgImhlYWRlcnMiIGtleSBjb250YWluaW5nIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIGhlYWRlcgogICAgICogYXJyYXkgdmFsdWVzLCBhbmQgYSAiYm9keSIga2V5IGNvbnRhaW5pbmcgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSBIVFRQIHJlcXVlc3Qgb3IgcmVzcG9uc2UgdG8gcGFyc2UuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VNZXNzYWdlKHN0cmluZyAkbWVzc2FnZSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCEkbWVzc2FnZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBtZXNzYWdlJyk7CiAgICAgICAgfQoKICAgICAgICAkbWVzc2FnZSA9IGx0cmltKCRtZXNzYWdlLCAiXHJcbiIpOwoKICAgICAgICAkbWVzc2FnZVBhcnRzID0gcHJlZ19zcGxpdCgiL1xyP1xuXHI/XG4vIiwgJG1lc3NhZ2UsIDIpOwoKICAgICAgICBpZiAoJG1lc3NhZ2VQYXJ0cyA9PT0gZmFsc2UgfHwgY291bnQoJG1lc3NhZ2VQYXJ0cykgIT09IDIpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgbWVzc2FnZTogTWlzc2luZyBoZWFkZXIgZGVsaW1pdGVyJyk7CiAgICAgICAgfQoKICAgICAgICBbJHJhd0hlYWRlcnMsICRib2R5XSA9ICRtZXNzYWdlUGFydHM7CiAgICAgICAgJHJhd0hlYWRlcnMgLj0gIlxyXG4iOyAvLyBQdXQgYmFjayB0aGUgZGVsaW1pdGVyIHdlIHNwbGl0IHByZXZpb3VzbHkKICAgICAgICAkaGVhZGVyUGFydHMgPSBwcmVnX3NwbGl0KCIvXHI/XG4vIiwgJHJhd0hlYWRlcnMsIDIpOwoKICAgICAgICBpZiAoJGhlYWRlclBhcnRzID09PSBmYWxzZSB8fCBjb3VudCgkaGVhZGVyUGFydHMpICE9PSAyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIG1lc3NhZ2U6IE1pc3Npbmcgc3RhdHVzIGxpbmUnKTsKICAgICAgICB9CgogICAgICAgIFskc3RhcnRMaW5lLCAkcmF3SGVhZGVyc10gPSAkaGVhZGVyUGFydHM7CgogICAgICAgIGlmIChwcmVnX21hdGNoKCIvKD86XkhUVFBcL3xeW0EtWl0rIFxTKyBIVFRQXC8pKFxkKyg/OlwuXGQrKT8pL2kiLCAkc3RhcnRMaW5lLCAkbWF0Y2hlcykgJiYgJG1hdGNoZXNbMV0gPT09ICcxLjAnKSB7CiAgICAgICAgICAgIC8vIEhlYWRlciBmb2xkaW5nIGlzIGRlcHJlY2F0ZWQgZm9yIEhUVFAvMS4xLCBidXQgYWxsb3dlZCBpbiBIVFRQLzEuMAogICAgICAgICAgICAkcmF3SGVhZGVycyA9IHByZWdfcmVwbGFjZShSZmM3MjMwOjpIRUFERVJfRk9MRF9SRUdFWCwgJyAnLCAkcmF3SGVhZGVycyk7CiAgICAgICAgfQoKICAgICAgICAvKiogQHZhciBhcnJheVtdICRoZWFkZXJMaW5lcyAqLwogICAgICAgICRjb3VudCA9IHByZWdfbWF0Y2hfYWxsKFJmYzcyMzA6OkhFQURFUl9SRUdFWCwgJHJhd0hlYWRlcnMsICRoZWFkZXJMaW5lcywgUFJFR19TRVRfT1JERVIpOwoKICAgICAgICAvLyBJZiB0aGVzZSBhcmVuJ3QgdGhlIHNhbWUsIHRoZW4gb25lIGxpbmUgZGlkbid0IG1hdGNoIGFuZCB0aGVyZSdzIGFuIGludmFsaWQgaGVhZGVyLgogICAgICAgIGlmICgkY291bnQgIT09IHN1YnN0cl9jb3VudCgkcmF3SGVhZGVycywgIlxuIikpIHsKICAgICAgICAgICAgLy8gRm9sZGluZyBpcyBkZXByZWNhdGVkLCBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yLjQKICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goUmZjNzIzMDo6SEVBREVSX0ZPTERfUkVHRVgsICRyYXdIZWFkZXJzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgaGVhZGVyIHN5bnRheDogT2Jzb2xldGUgbGluZSBmb2xkaW5nJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGhlYWRlciBzeW50YXgnKTsKICAgICAgICB9CgogICAgICAgICRoZWFkZXJzID0gW107CgogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJMaW5lcyBhcyAkaGVhZGVyTGluZSkgewogICAgICAgICAgICAkaGVhZGVyc1skaGVhZGVyTGluZVsxXV1bXSA9ICRoZWFkZXJMaW5lWzJdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3N0YXJ0LWxpbmUnID0+ICRzdGFydExpbmUsCiAgICAgICAgICAgICdoZWFkZXJzJyA9PiAkaGVhZGVycywKICAgICAgICAgICAgJ2JvZHknID0+ICRib2R5LAogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBDb25zdHJ1Y3RzIGEgVVJJIGZvciBhbiBIVFRQIHJlcXVlc3QgbWVzc2FnZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoICAgIFBhdGggZnJvbSB0aGUgc3RhcnQtbGluZQogICAgICogQHBhcmFtIGFycmF5ICAkaGVhZGVycyBBcnJheSBvZiBoZWFkZXJzIChlYWNoIHZhbHVlIGFuIGFycmF5KS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZVJlcXVlc3RVcmkoc3RyaW5nICRwYXRoLCBhcnJheSAkaGVhZGVycyk6IHN0cmluZwogICAgewogICAgICAgICRob3N0S2V5ID0gYXJyYXlfZmlsdGVyKGFycmF5X2tleXMoJGhlYWRlcnMpLCBmdW5jdGlvbiAoJGspIHsKICAgICAgICAgICAgLy8gTnVtZXJpYyBhcnJheSBrZXlzIGFyZSBjb252ZXJ0ZWQgdG8gaW50IGJ5IFBIUC4KICAgICAgICAgICAgJGsgPSAoc3RyaW5nKSAkazsKCiAgICAgICAgICAgIHJldHVybiBzdHJ0b2xvd2VyKCRrKSA9PT0gJ2hvc3QnOwogICAgICAgIH0pOwoKICAgICAgICAvLyBJZiBubyBob3N0IGlzIGZvdW5kLCB0aGVuIGEgZnVsbCBVUkkgY2Fubm90IGJlIGNvbnN0cnVjdGVkLgogICAgICAgIGlmICghJGhvc3RLZXkpIHsKICAgICAgICAgICAgcmV0dXJuICRwYXRoOwogICAgICAgIH0KCiAgICAgICAgJGhvc3QgPSAkaGVhZGVyc1tyZXNldCgkaG9zdEtleSldWzBdOwogICAgICAgICRzY2hlbWUgPSBzdWJzdHIoJGhvc3QsIC00KSA9PT0gJzo0NDMnID8gJ2h0dHBzJyA6ICdodHRwJzsKCiAgICAgICAgcmV0dXJuICRzY2hlbWUuJzovLycuJGhvc3QuJy8nLmx0cmltKCRwYXRoLCAnLycpOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgcmVxdWVzdCBtZXNzYWdlIHN0cmluZyBpbnRvIGEgcmVxdWVzdCBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSBSZXF1ZXN0IG1lc3NhZ2Ugc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUmVxdWVzdChzdHJpbmcgJG1lc3NhZ2UpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgJGRhdGEgPSBzZWxmOjpwYXJzZU1lc3NhZ2UoJG1lc3NhZ2UpOwogICAgICAgICRtYXRjaGVzID0gW107CiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXltcU10rXHMrKFthLXpBLVpdKzpcL1wvfFwvKS4qLycsICRkYXRhWydzdGFydC1saW5lJ10sICRtYXRjaGVzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByZXF1ZXN0IHN0cmluZycpOwogICAgICAgIH0KICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcgJywgJGRhdGFbJ3N0YXJ0LWxpbmUnXSwgMyk7CiAgICAgICAgJHZlcnNpb24gPSBpc3NldCgkcGFydHNbMl0pID8gZXhwbG9kZSgnLycsICRwYXJ0c1syXSlbMV0gOiAnMS4xJzsKCiAgICAgICAgJHJlcXVlc3QgPSBuZXcgUmVxdWVzdCgKICAgICAgICAgICAgJHBhcnRzWzBdLAogICAgICAgICAgICAkbWF0Y2hlc1sxXSA9PT0gJy8nID8gc2VsZjo6cGFyc2VSZXF1ZXN0VXJpKCRwYXJ0c1sxXSwgJGRhdGFbJ2hlYWRlcnMnXSkgOiAkcGFydHNbMV0sCiAgICAgICAgICAgICRkYXRhWydoZWFkZXJzJ10sCiAgICAgICAgICAgICRkYXRhWydib2R5J10sCiAgICAgICAgICAgICR2ZXJzaW9uCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRtYXRjaGVzWzFdID09PSAnLycgPyAkcmVxdWVzdCA6ICRyZXF1ZXN0LT53aXRoUmVxdWVzdFRhcmdldCgkcGFydHNbMV0pOwogICAgfQoKICAgIC8qKgogICAgICogUGFyc2VzIGEgcmVzcG9uc2UgbWVzc2FnZSBzdHJpbmcgaW50byBhIHJlc3BvbnNlIG9iamVjdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlIFJlc3BvbnNlIG1lc3NhZ2Ugc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhcnNlUmVzcG9uc2Uoc3RyaW5nICRtZXNzYWdlKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkZGF0YSA9IHNlbGY6OnBhcnNlTWVzc2FnZSgkbWVzc2FnZSk7CiAgICAgICAgLy8gQWNjb3JkaW5nIHRvIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMS4yCiAgICAgICAgLy8gdGhlIHNwYWNlIGJldHdlZW4gc3RhdHVzLWNvZGUgYW5kIHJlYXNvbi1waHJhc2UgaXMgcmVxdWlyZWQuIEJ1dAogICAgICAgIC8vIGJyb3dzZXJzIGFjY2VwdCByZXNwb25zZXMgd2l0aG91dCBzcGFjZSBhbmQgcmVhc29uIGFzIHdlbGwuCiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXkhUVFBcLy4qIFswLTldezN9KCAuKnwkKS8nLCAkZGF0YVsnc3RhcnQtbGluZSddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByZXNwb25zZSBzdHJpbmc6ICcuJGRhdGFbJ3N0YXJ0LWxpbmUnXSk7CiAgICAgICAgfQogICAgICAgICRwYXJ0cyA9IGV4cGxvZGUoJyAnLCAkZGF0YVsnc3RhcnQtbGluZSddLCAzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZSgKICAgICAgICAgICAgKGludCkgJHBhcnRzWzFdLAogICAgICAgICAgICAkZGF0YVsnaGVhZGVycyddLAogICAgICAgICAgICAkZGF0YVsnYm9keSddLAogICAgICAgICAgICBleHBsb2RlKCcvJywgJHBhcnRzWzBdKVsxXSwKICAgICAgICAgICAgJHBhcnRzWzJdID8/IG51bGwKICAgICAgICApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MessageTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBUcmFpdCBpbXBsZW1lbnRpbmcgZnVuY3Rpb25hbGl0eSBjb21tb24gdG8gcmVxdWVzdHMgYW5kIHJlc3BvbnNlcy4KICovCnRyYWl0IE1lc3NhZ2VUcmFpdAp7CiAgICAvKiogQHZhciBzdHJpbmdbXVtdIE1hcCBvZiBhbGwgcmVnaXN0ZXJlZCBoZWFkZXJzLCBhcyBvcmlnaW5hbCBuYW1lID0+IGFycmF5IG9mIHZhbHVlcyAqLwogICAgcHJpdmF0ZSAkaGVhZGVycyA9IFtdOwoKICAgIC8qKiBAdmFyIHN0cmluZ1tdIE1hcCBvZiBsb3dlcmNhc2UgaGVhZGVyIG5hbWUgPT4gb3JpZ2luYWwgbmFtZSBhdCByZWdpc3RyYXRpb24gKi8KICAgIHByaXZhdGUgJGhlYWRlck5hbWVzID0gW107CgogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICRwcm90b2NvbCA9ICcxLjEnOwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZXxudWxsICovCiAgICBwcml2YXRlICRzdHJlYW07CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb3RvY29sVmVyc2lvbigpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByb3RvY29sOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQcm90b2NvbFZlcnNpb24oJHZlcnNpb24pOiBNZXNzYWdlSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5wcm90b2NvbCA9PT0gJHZlcnNpb24pIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnByb3RvY29sID0gJHZlcnNpb247CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXJzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWFkZXJzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoYXNIZWFkZXIoJGhlYWRlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzW3N0cnRvbG93ZXIoJGhlYWRlcildKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyKCRoZWFkZXIpOiBhcnJheQogICAgewogICAgICAgICRoZWFkZXIgPSBzdHJ0b2xvd2VyKCRoZWFkZXIpOwoKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5oZWFkZXJOYW1lc1skaGVhZGVyXSkpIHsKICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlciA9ICR0aGlzLT5oZWFkZXJOYW1lc1skaGVhZGVyXTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWFkZXJzWyRoZWFkZXJdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXJMaW5lKCRoZWFkZXIpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gaW1wbG9kZSgnLCAnLCAkdGhpcy0+Z2V0SGVhZGVyKCRoZWFkZXIpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoSGVhZGVyKCRoZWFkZXIsICR2YWx1ZSk6IE1lc3NhZ2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0SGVhZGVyKCRoZWFkZXIpOwogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5ub3JtYWxpemVIZWFkZXJWYWx1ZSgkdmFsdWUpOwogICAgICAgICRub3JtYWxpemVkID0gc3RydG9sb3dlcigkaGVhZGVyKTsKCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgIGlmIChpc3NldCgkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0pKSB7CiAgICAgICAgICAgIHVuc2V0KCRuZXctPmhlYWRlcnNbJG5ldy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdXSk7CiAgICAgICAgfQogICAgICAgICRuZXctPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSA9ICRoZWFkZXI7CiAgICAgICAgJG5ldy0+aGVhZGVyc1skaGVhZGVyXSA9ICR2YWx1ZTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGVkSGVhZGVyKCRoZWFkZXIsICR2YWx1ZSk6IE1lc3NhZ2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0SGVhZGVyKCRoZWFkZXIpOwogICAgICAgICR2YWx1ZSA9ICR0aGlzLT5ub3JtYWxpemVIZWFkZXJWYWx1ZSgkdmFsdWUpOwogICAgICAgICRub3JtYWxpemVkID0gc3RydG9sb3dlcigkaGVhZGVyKTsKCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgIGlmIChpc3NldCgkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0pKSB7CiAgICAgICAgICAgICRoZWFkZXIgPSAkdGhpcy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdOwogICAgICAgICAgICAkbmV3LT5oZWFkZXJzWyRoZWFkZXJdID0gYXJyYXlfbWVyZ2UoJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl0sICR2YWx1ZSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG5ldy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdID0gJGhlYWRlcjsKICAgICAgICAgICAgJG5ldy0+aGVhZGVyc1skaGVhZGVyXSA9ICR2YWx1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRIZWFkZXIoJGhlYWRlcik6IE1lc3NhZ2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbm9ybWFsaXplZCA9IHN0cnRvbG93ZXIoJGhlYWRlcik7CgogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlciA9ICR0aGlzLT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF07CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICB1bnNldCgkbmV3LT5oZWFkZXJzWyRoZWFkZXJdLCAkbmV3LT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0pOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Qm9keSgpOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5zdHJlYW0pIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9IFV0aWxzOjpzdHJlYW1Gb3IoJycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEJvZHkoU3RyZWFtSW50ZXJmYWNlICRib2R5KTogTWVzc2FnZUludGVyZmFjZQogICAgewogICAgICAgIGlmICgkYm9keSA9PT0gJHRoaXMtPnN0cmVhbSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+c3RyZWFtID0gJGJvZHk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIChzdHJpbmd8c3RyaW5nW10pW10gJGhlYWRlcnMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBzZXRIZWFkZXJzKGFycmF5ICRoZWFkZXJzKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5oZWFkZXJOYW1lcyA9ICR0aGlzLT5oZWFkZXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlciA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgLy8gTnVtZXJpYyBhcnJheSBrZXlzIGFyZSBjb252ZXJ0ZWQgdG8gaW50IGJ5IFBIUC4KICAgICAgICAgICAgJGhlYWRlciA9IChzdHJpbmcpICRoZWFkZXI7CgogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0SGVhZGVyKCRoZWFkZXIpOwogICAgICAgICAgICAkdmFsdWUgPSAkdGhpcy0+bm9ybWFsaXplSGVhZGVyVmFsdWUoJHZhbHVlKTsKICAgICAgICAgICAgJG5vcm1hbGl6ZWQgPSBzdHJ0b2xvd2VyKCRoZWFkZXIpOwogICAgICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPmhlYWRlck5hbWVzWyRub3JtYWxpemVkXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXIgPSAkdGhpcy0+aGVhZGVyTmFtZXNbJG5vcm1hbGl6ZWRdOwogICAgICAgICAgICAgICAgJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl0gPSBhcnJheV9tZXJnZSgkdGhpcy0+aGVhZGVyc1skaGVhZGVyXSwgJHZhbHVlKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICR0aGlzLT5oZWFkZXJOYW1lc1skbm9ybWFsaXplZF0gPSAkaGVhZGVyOwogICAgICAgICAgICAgICAgJHRoaXMtPmhlYWRlcnNbJGhlYWRlcl0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlclZhbHVlKCR2YWx1ZSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCFpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dHJpbUFuZFZhbGlkYXRlSGVhZGVyVmFsdWVzKFskdmFsdWVdKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+dHJpbUFuZFZhbGlkYXRlSGVhZGVyVmFsdWVzKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUcmltcyB3aGl0ZXNwYWNlIGZyb20gdGhlIGhlYWRlciB2YWx1ZXMuCiAgICAgKgogICAgICogU3BhY2VzIGFuZCB0YWJzIG91Z2h0IHRvIGJlIGV4Y2x1ZGVkIGJ5IHBhcnNlcnMgd2hlbiBleHRyYWN0aW5nIHRoZSBmaWVsZCB2YWx1ZSBmcm9tIGEgaGVhZGVyIGZpZWxkLgogICAgICoKICAgICAqIGhlYWRlci1maWVsZCA9IGZpZWxkLW5hbWUgIjoiIE9XUyBmaWVsZC12YWx1ZSBPV1MKICAgICAqIE9XUyAgICAgICAgICA9ICooIFNQIC8gSFRBQiApCiAgICAgKgogICAgICogQHBhcmFtIG1peGVkW10gJHZhbHVlcyBIZWFkZXIgdmFsdWVzCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXSBUcmltbWVkIGhlYWRlciB2YWx1ZXMKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMi40CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdHJpbUFuZFZhbGlkYXRlSGVhZGVyVmFsdWVzKGFycmF5ICR2YWx1ZXMpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBhcnJheV9tYXAoZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgICAgICAgICBpZiAoIWlzX3NjYWxhcigkdmFsdWUpICYmIG51bGwgIT09ICR2YWx1ZSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnSGVhZGVyIHZhbHVlIG11c3QgYmUgc2NhbGFyIG9yIG51bGwgYnV0ICVzIHByb3ZpZGVkLicsCiAgICAgICAgICAgICAgICAgICAgaXNfb2JqZWN0KCR2YWx1ZSkgPyBnZXRfY2xhc3MoJHZhbHVlKSA6IGdldHR5cGUoJHZhbHVlKQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0cmltbWVkID0gdHJpbSgoc3RyaW5nKSAkdmFsdWUsICIgXHQiKTsKICAgICAgICAgICAgJHRoaXMtPmFzc2VydFZhbHVlKCR0cmltbWVkKTsKCiAgICAgICAgICAgIHJldHVybiAkdHJpbW1lZDsKICAgICAgICB9LCBhcnJheV92YWx1ZXMoJHZhbHVlcykpOwogICAgfQoKICAgIC8qKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjIKICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGhlYWRlcgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFzc2VydEhlYWRlcigkaGVhZGVyKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRoZWFkZXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICAgICAnSGVhZGVyIG5hbWUgbXVzdCBiZSBhIHN0cmluZyBidXQgJXMgcHJvdmlkZWQuJywKICAgICAgICAgICAgICAgIGlzX29iamVjdCgkaGVhZGVyKSA/IGdldF9jbGFzcygkaGVhZGVyKSA6IGdldHR5cGUoJGhlYWRlcikKICAgICAgICAgICAgKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIXByZWdfbWF0Y2goJy9eW2EtekEtWjAtOVwnYCMkJSYqKy5eX3x+IS1dKyQvRCcsICRoZWFkZXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgc3ByaW50ZignIiVzIiBpcyBub3QgdmFsaWQgaGVhZGVyIG5hbWUuJywgJGhlYWRlcikKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMgogICAgICoKICAgICAqIGZpZWxkLXZhbHVlICAgID0gKiggZmllbGQtY29udGVudCAvIG9icy1mb2xkICkKICAgICAqIGZpZWxkLWNvbnRlbnQgID0gZmllbGQtdmNoYXIgWyAxKiggU1AgLyBIVEFCICkgZmllbGQtdmNoYXIgXQogICAgICogZmllbGQtdmNoYXIgICAgPSBWQ0hBUiAvIG9icy10ZXh0CiAgICAgKiBWQ0hBUiAgICAgICAgICA9ICV4MjEtN0UKICAgICAqIG9icy10ZXh0ICAgICAgID0gJXg4MC1GRgogICAgICogb2JzLWZvbGQgICAgICAgPSBDUkxGIDEqKCBTUCAvIEhUQUIgKQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFzc2VydFZhbHVlKHN0cmluZyAkdmFsdWUpOiB2b2lkCiAgICB7CiAgICAgICAgLy8gVGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBpbnRlbnRpb25hbGx5IGRvZXMgbm90IHN1cHBvcnQgdGhlIG9icy1mb2xkIHByb2R1Y3Rpb24sIGJlY2F1c2UgYXMKICAgICAgICAvLyBwZXIgUkZDIDcyMzAjMy4yLjQ6CiAgICAgICAgLy8KICAgICAgICAvLyBBIHNlbmRlciBNVVNUIE5PVCBnZW5lcmF0ZSBhIG1lc3NhZ2UgdGhhdCBpbmNsdWRlcwogICAgICAgIC8vIGxpbmUgZm9sZGluZyAoaS5lLiwgdGhhdCBoYXMgYW55IGZpZWxkLXZhbHVlIHRoYXQgY29udGFpbnMgYSBtYXRjaCB0bwogICAgICAgIC8vIHRoZSBvYnMtZm9sZCBydWxlKSB1bmxlc3MgdGhlIG1lc3NhZ2UgaXMgaW50ZW5kZWQgZm9yIHBhY2thZ2luZwogICAgICAgIC8vIHdpdGhpbiB0aGUgbWVzc2FnZS9odHRwIG1lZGlhIHR5cGUuCiAgICAgICAgLy8KICAgICAgICAvLyBDbGllbnRzIG11c3Qgbm90IHNlbmQgYSByZXF1ZXN0IHdpdGggbGluZSBmb2xkaW5nIGFuZCBhIHNlcnZlciBzZW5kaW5nIGZvbGRlZCBoZWFkZXJzIGlzCiAgICAgICAgLy8gbGlrZWx5IHZlcnkgcmFyZS4gTGluZSBmb2xkaW5nIGlzIGEgZmFpcmx5IG9ic2N1cmUgZmVhdHVyZSBvZiBIVFRQLzEuMSBhbmQgdGh1cyBub3QgYWNjZXB0aW5nCiAgICAgICAgLy8gZm9sZGluZyBpcyBub3QgbGlrZWx5IHRvIGJyZWFrIGFueSBsZWdpdGltYXRlIHVzZSBjYXNlLgogICAgICAgIGlmICghcHJlZ19tYXRjaCgnL15bXHgyMFx4MDlceDIxLVx4N0VceDgwLVx4RkZdKiQvRCcsICR2YWx1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCciJXMiIGlzIG5vdCB2YWxpZCBoZWFkZXIgdmFsdWUuJywgJHZhbHVlKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MimeType.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCmZpbmFsIGNsYXNzIE1pbWVUeXBlCnsKICAgIHByaXZhdGUgY29uc3QgTUlNRV9UWVBFUyA9IFsKICAgICAgICAnMTIzJyA9PiAnYXBwbGljYXRpb24vdm5kLmxvdHVzLTEtMi0zJywKICAgICAgICAnMWttJyA9PiAnYXBwbGljYXRpb24vdm5kLjEwMDBtaW5kcy5kZWNpc2lvbi1tb2RlbCt4bWwnLAogICAgICAgICcyMTAnID0+ICdtb2RlbC9zdGVwJywKICAgICAgICAnM2RtbCcgPT4gJ3RleHQvdm5kLmluM2QuM2RtbCcsCiAgICAgICAgJzNkcycgPT4gJ2ltYWdlL3gtM2RzJywKICAgICAgICAnM2cyJyA9PiAndmlkZW8vM2dwcDInLAogICAgICAgICczZ3AnID0+ICd2aWRlby8zZ3BwJywKICAgICAgICAnM2dwcCcgPT4gJ3ZpZGVvLzNncHAnLAogICAgICAgICczbWYnID0+ICdtb2RlbC8zbWYnLAogICAgICAgICc3eicgPT4gJ2FwcGxpY2F0aW9uL3gtN3otY29tcHJlc3NlZCcsCiAgICAgICAgJzd6aXAnID0+ICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnLAogICAgICAgICdhYWInID0+ICdhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluJywKICAgICAgICAnYWFjJyA9PiAnYXVkaW8vYWFjJywKICAgICAgICAnYWFtJyA9PiAnYXBwbGljYXRpb24veC1hdXRob3J3YXJlLW1hcCcsCiAgICAgICAgJ2FhcycgPT4gJ2FwcGxpY2F0aW9uL3gtYXV0aG9yd2FyZS1zZWcnLAogICAgICAgICdhYncnID0+ICdhcHBsaWNhdGlvbi94LWFiaXdvcmQnLAogICAgICAgICdhYycgPT4gJ2FwcGxpY2F0aW9uL3BraXgtYXR0ci1jZXJ0JywKICAgICAgICAnYWMzJyA9PiAnYXVkaW8vYWMzJywKICAgICAgICAnYWNjJyA9PiAnYXBwbGljYXRpb24vdm5kLmFtZXJpY2FuZHluYW1pY3MuYWNjJywKICAgICAgICAnYWNlJyA9PiAnYXBwbGljYXRpb24veC1hY2UtY29tcHJlc3NlZCcsCiAgICAgICAgJ2FjdScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hY3Vjb2JvbCcsCiAgICAgICAgJ2FjdXRjJyA9PiAnYXBwbGljYXRpb24vdm5kLmFjdWNvcnAnLAogICAgICAgICdhZHAnID0+ICdhdWRpby9hZHBjbScsCiAgICAgICAgJ2FkdHMnID0+ICdhdWRpby9hYWMnLAogICAgICAgICdhZXAnID0+ICdhcHBsaWNhdGlvbi92bmQuYXVkaW9ncmFwaCcsCiAgICAgICAgJ2FmbScgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ2FmcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pYm0ubW9kY2FwJywKICAgICAgICAnYWdlJyA9PiAnYXBwbGljYXRpb24vdm5kLmFnZScsCiAgICAgICAgJ2FoZWFkJyA9PiAnYXBwbGljYXRpb24vdm5kLmFoZWFkLnNwYWNlJywKICAgICAgICAnYWknID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAnYWlmJyA9PiAnYXVkaW8veC1haWZmJywKICAgICAgICAnYWlmYycgPT4gJ2F1ZGlvL3gtYWlmZicsCiAgICAgICAgJ2FpZmYnID0+ICdhdWRpby94LWFpZmYnLAogICAgICAgICdhaXInID0+ICdhcHBsaWNhdGlvbi92bmQuYWRvYmUuYWlyLWFwcGxpY2F0aW9uLWluc3RhbGxlci1wYWNrYWdlK3ppcCcsCiAgICAgICAgJ2FpdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kdmIuYWl0JywKICAgICAgICAnYW1pJyA9PiAnYXBwbGljYXRpb24vdm5kLmFtaWdhLmFtaScsCiAgICAgICAgJ2FtbCcgPT4gJ2FwcGxpY2F0aW9uL2F1dG9tYXRpb25tbC1hbWwreG1sJywKICAgICAgICAnYW1seCcgPT4gJ2FwcGxpY2F0aW9uL2F1dG9tYXRpb25tbC1hbWx4K3ppcCcsCiAgICAgICAgJ2FtcicgPT4gJ2F1ZGlvL2FtcicsCiAgICAgICAgJ2FwaycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hbmRyb2lkLnBhY2thZ2UtYXJjaGl2ZScsCiAgICAgICAgJ2FwbmcnID0+ICdpbWFnZS9hcG5nJywKICAgICAgICAnYXBwY2FjaGUnID0+ICd0ZXh0L2NhY2hlLW1hbmlmZXN0JywKICAgICAgICAnYXBwaW5zdGFsbGVyJyA9PiAnYXBwbGljYXRpb24vYXBwaW5zdGFsbGVyJywKICAgICAgICAnYXBwbGljYXRpb24nID0+ICdhcHBsaWNhdGlvbi94LW1zLWFwcGxpY2F0aW9uJywKICAgICAgICAnYXBweCcgPT4gJ2FwcGxpY2F0aW9uL2FwcHgnLAogICAgICAgICdhcHB4YnVuZGxlJyA9PiAnYXBwbGljYXRpb24vYXBweGJ1bmRsZScsCiAgICAgICAgJ2FwcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy1hcHByb2FjaCcsCiAgICAgICAgJ2FyYycgPT4gJ2FwcGxpY2F0aW9uL3gtZnJlZWFyYycsCiAgICAgICAgJ2FyaicgPT4gJ2FwcGxpY2F0aW9uL3gtYXJqJywKICAgICAgICAnYXNjJyA9PiAnYXBwbGljYXRpb24vcGdwLWtleXMnLAogICAgICAgICdhc2YnID0+ICd2aWRlby94LW1zLWFzZicsCiAgICAgICAgJ2FzbScgPT4gJ3RleHQveC1hc20nLAogICAgICAgICdhc28nID0+ICdhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5hc28nLAogICAgICAgICdhc3gnID0+ICd2aWRlby94LW1zLWFzZicsCiAgICAgICAgJ2F0YycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hY3Vjb3JwJywKICAgICAgICAnYXRvbScgPT4gJ2FwcGxpY2F0aW9uL2F0b20reG1sJywKICAgICAgICAnYXRvbWNhdCcgPT4gJ2FwcGxpY2F0aW9uL2F0b21jYXQreG1sJywKICAgICAgICAnYXRvbWRlbGV0ZWQnID0+ICdhcHBsaWNhdGlvbi9hdG9tZGVsZXRlZCt4bWwnLAogICAgICAgICdhdG9tc3ZjJyA9PiAnYXBwbGljYXRpb24vYXRvbXN2Yyt4bWwnLAogICAgICAgICdhdHgnID0+ICdhcHBsaWNhdGlvbi92bmQuYW50aXguZ2FtZS1jb21wb25lbnQnLAogICAgICAgICdhdScgPT4gJ2F1ZGlvL2Jhc2ljJywKICAgICAgICAnYXZjaScgPT4gJ2ltYWdlL2F2Y2knLAogICAgICAgICdhdmNzJyA9PiAnaW1hZ2UvYXZjcycsCiAgICAgICAgJ2F2aScgPT4gJ3ZpZGVvL3gtbXN2aWRlbycsCiAgICAgICAgJ2F2aWYnID0+ICdpbWFnZS9hdmlmJywKICAgICAgICAnYXcnID0+ICdhcHBsaWNhdGlvbi9hcHBsaXh3YXJlJywKICAgICAgICAnYXpmJyA9PiAnYXBwbGljYXRpb24vdm5kLmFpcnppcC5maWxlc2VjdXJlLmF6ZicsCiAgICAgICAgJ2F6cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5haXJ6aXAuZmlsZXNlY3VyZS5henMnLAogICAgICAgICdhenYnID0+ICdpbWFnZS92bmQuYWlyemlwLmFjY2VsZXJhdG9yLmF6dicsCiAgICAgICAgJ2F6dycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hbWF6b24uZWJvb2snLAogICAgICAgICdiMTYnID0+ICdpbWFnZS92bmQucGNvLmIxNicsCiAgICAgICAgJ2JhcnknID0+ICdtb2RlbC92bmQuYmFyeScsCiAgICAgICAgJ2JhdCcgPT4gJ2FwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCcsCiAgICAgICAgJ2JjcGlvJyA9PiAnYXBwbGljYXRpb24veC1iY3BpbycsCiAgICAgICAgJ2JkZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1iZGYnLAogICAgICAgICdiZG0nID0+ICdhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtK3dieG1sJywKICAgICAgICAnYmRvJyA9PiAnYXBwbGljYXRpb24vdm5kLm5hdG8uYmluZGluZ2RhdGFvYmplY3QreG1sJywKICAgICAgICAnYmRvYycgPT4gJ2FwcGxpY2F0aW9uL2Jkb2MnLAogICAgICAgICdiZWQnID0+ICdhcHBsaWNhdGlvbi92bmQucmVhbHZuYy5iZWQnLAogICAgICAgICdiaDInID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5c3BycycsCiAgICAgICAgJ2JpbicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2JsYicgPT4gJ2FwcGxpY2F0aW9uL3gtYmxvcmInLAogICAgICAgICdibGVuZCcgPT4gJ2FwcGxpY2F0aW9uL3gtYmxlbmRlcicsCiAgICAgICAgJ2Jsb3JiJyA9PiAnYXBwbGljYXRpb24veC1ibG9yYicsCiAgICAgICAgJ2JtaScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ibWknLAogICAgICAgICdibW1sJyA9PiAnYXBwbGljYXRpb24vdm5kLmJhbHNhbWlxLmJtbWwreG1sJywKICAgICAgICAnYm1wJyA9PiAnaW1hZ2UvYm1wJywKICAgICAgICAnYm9vaycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyJywKICAgICAgICAnYm94JyA9PiAnYXBwbGljYXRpb24vdm5kLnByZXZpZXdzeXN0ZW1zLmJveCcsCiAgICAgICAgJ2JveicgPT4gJ2FwcGxpY2F0aW9uL3gtYnppcDInLAogICAgICAgICdicGsnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdicG1uJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnYnJ1c2gnID0+ICdhcHBsaWNhdGlvbi92bmQucHJvY3JlYXRlLmJydXNoJywKICAgICAgICAnYnJ1c2hzZXQnID0+ICdhcHBsaWNhdGlvbi92bmQucHJvY3JlYXRlLmJydXNoc2V0JywKICAgICAgICAnYnNwJyA9PiAnbW9kZWwvdm5kLnZhbHZlLnNvdXJjZS5jb21waWxlZC1tYXAnLAogICAgICAgICdidGYnID0+ICdpbWFnZS9wcnMuYnRpZicsCiAgICAgICAgJ2J0aWYnID0+ICdpbWFnZS9wcnMuYnRpZicsCiAgICAgICAgJ2J1ZmZlcicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2J6JyA9PiAnYXBwbGljYXRpb24veC1iemlwJywKICAgICAgICAnYnoyJyA9PiAnYXBwbGljYXRpb24veC1iemlwMicsCiAgICAgICAgJ2MnID0+ICd0ZXh0L3gtYycsCiAgICAgICAgJ2MxMWFtYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jbHVldHJ1c3QuY2FydG9tb2JpbGUtY29uZmlnJywKICAgICAgICAnYzExYW16JyA9PiAnYXBwbGljYXRpb24vdm5kLmNsdWV0cnVzdC5jYXJ0b21vYmlsZS1jb25maWctcGtnJywKICAgICAgICAnYzRkJyA9PiAnYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAnLAogICAgICAgICdjNGYnID0+ICdhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCcsCiAgICAgICAgJ2M0ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jbG9uay5jNGdyb3VwJywKICAgICAgICAnYzRwJyA9PiAnYXBwbGljYXRpb24vdm5kLmNsb25rLmM0Z3JvdXAnLAogICAgICAgICdjNHUnID0+ICdhcHBsaWNhdGlvbi92bmQuY2xvbmsuYzRncm91cCcsCiAgICAgICAgJ2NhYicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZCcsCiAgICAgICAgJ2NhZicgPT4gJ2F1ZGlvL3gtY2FmJywKICAgICAgICAnY2FwJyA9PiAnYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCcsCiAgICAgICAgJ2NhcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jdXJsLmNhcicsCiAgICAgICAgJ2NhdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wa2kuc2VjY2F0JywKICAgICAgICAnY2I3JyA9PiAnYXBwbGljYXRpb24veC1jYnInLAogICAgICAgICdjYmEnID0+ICdhcHBsaWNhdGlvbi94LWNicicsCiAgICAgICAgJ2NicicgPT4gJ2FwcGxpY2F0aW9uL3gtY2JyJywKICAgICAgICAnY2J0JyA9PiAnYXBwbGljYXRpb24veC1jYnInLAogICAgICAgICdjYnonID0+ICdhcHBsaWNhdGlvbi94LWNicicsCiAgICAgICAgJ2NjJyA9PiAndGV4dC94LWMnLAogICAgICAgICdjY28nID0+ICdhcHBsaWNhdGlvbi94LWNvY29hJywKICAgICAgICAnY2N0JyA9PiAnYXBwbGljYXRpb24veC1kaXJlY3RvcicsCiAgICAgICAgJ2NjeG1sJyA9PiAnYXBwbGljYXRpb24vY2N4bWwreG1sJywKICAgICAgICAnY2RiY21zZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jb250YWN0LmNtc2cnLAogICAgICAgICdjZGYnID0+ICdhcHBsaWNhdGlvbi94LW5ldGNkZicsCiAgICAgICAgJ2NkZngnID0+ICdhcHBsaWNhdGlvbi9jZGZ4K3htbCcsCiAgICAgICAgJ2Nka2V5JyA9PiAnYXBwbGljYXRpb24vdm5kLm1lZGlhc3RhdGlvbi5jZGtleScsCiAgICAgICAgJ2NkbWlhJyA9PiAnYXBwbGljYXRpb24vY2RtaS1jYXBhYmlsaXR5JywKICAgICAgICAnY2RtaWMnID0+ICdhcHBsaWNhdGlvbi9jZG1pLWNvbnRhaW5lcicsCiAgICAgICAgJ2NkbWlkJyA9PiAnYXBwbGljYXRpb24vY2RtaS1kb21haW4nLAogICAgICAgICdjZG1pbycgPT4gJ2FwcGxpY2F0aW9uL2NkbWktb2JqZWN0JywKICAgICAgICAnY2RtaXEnID0+ICdhcHBsaWNhdGlvbi9jZG1pLXF1ZXVlJywKICAgICAgICAnY2R4JyA9PiAnY2hlbWljYWwveC1jZHgnLAogICAgICAgICdjZHhtbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jaGVtZHJhdyt4bWwnLAogICAgICAgICdjZHknID0+ICdhcHBsaWNhdGlvbi92bmQuY2luZGVyZWxsYScsCiAgICAgICAgJ2NlcicgPT4gJ2FwcGxpY2F0aW9uL3BraXgtY2VydCcsCiAgICAgICAgJ2NmcycgPT4gJ2FwcGxpY2F0aW9uL3gtY2ZzLWNvbXByZXNzZWQnLAogICAgICAgICdjZ20nID0+ICdpbWFnZS9jZ20nLAogICAgICAgICdjaGF0JyA9PiAnYXBwbGljYXRpb24veC1jaGF0JywKICAgICAgICAnY2htJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWh0bWxoZWxwJywKICAgICAgICAnY2hydCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua2NoYXJ0JywKICAgICAgICAnY2lmJyA9PiAnY2hlbWljYWwveC1jaWYnLAogICAgICAgICdjaWknID0+ICdhcHBsaWNhdGlvbi92bmQuYW5zZXItd2ViLWNlcnRpZmljYXRlLWlzc3VlLWluaXRpYXRpb24nLAogICAgICAgICdjaWwnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtYXJ0Z2FscnknLAogICAgICAgICdjanMnID0+ICdhcHBsaWNhdGlvbi9ub2RlJywKICAgICAgICAnY2xhJyA9PiAnYXBwbGljYXRpb24vdm5kLmNsYXltb3JlJywKICAgICAgICAnY2xhc3MnID0+ICdhcHBsaWNhdGlvbi9qYXZhLXZtJywKICAgICAgICAnY2xkJyA9PiAnbW9kZWwvdm5kLmNsZCcsCiAgICAgICAgJ2Nsa2snID0+ICdhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5rZXlib2FyZCcsCiAgICAgICAgJ2Nsa3AnID0+ICdhcHBsaWNhdGlvbi92bmQuY3JpY2suY2xpY2tlci5wYWxldHRlJywKICAgICAgICAnY2xrdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLnRlbXBsYXRlJywKICAgICAgICAnY2xrdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyLndvcmRiYW5rJywKICAgICAgICAnY2xreCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcmljay5jbGlja2VyJywKICAgICAgICAnY2xwJyA9PiAnYXBwbGljYXRpb24veC1tc2NsaXAnLAogICAgICAgICdjbWMnID0+ICdhcHBsaWNhdGlvbi92bmQuY29zbW9jYWxsZXInLAogICAgICAgICdjbWRmJyA9PiAnY2hlbWljYWwveC1jbWRmJywKICAgICAgICAnY21sJyA9PiAnY2hlbWljYWwveC1jbWwnLAogICAgICAgICdjbXAnID0+ICdhcHBsaWNhdGlvbi92bmQueWVsbG93cml2ZXItY3VzdG9tLW1lbnUnLAogICAgICAgICdjbXgnID0+ICdpbWFnZS94LWNteCcsCiAgICAgICAgJ2NvZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5yaW0uY29kJywKICAgICAgICAnY29mZmVlJyA9PiAndGV4dC9jb2ZmZWVzY3JpcHQnLAogICAgICAgICdjb20nID0+ICdhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQnLAogICAgICAgICdjb25mJyA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgJ2NwaW8nID0+ICdhcHBsaWNhdGlvbi94LWNwaW8nLAogICAgICAgICdjcGwnID0+ICdhcHBsaWNhdGlvbi9jcGwreG1sJywKICAgICAgICAnY3BwJyA9PiAndGV4dC94LWMnLAogICAgICAgICdjcHQnID0+ICdhcHBsaWNhdGlvbi9tYWMtY29tcGFjdHBybycsCiAgICAgICAgJ2NyZCcgPT4gJ2FwcGxpY2F0aW9uL3gtbXNjYXJkZmlsZScsCiAgICAgICAgJ2NybCcgPT4gJ2FwcGxpY2F0aW9uL3BraXgtY3JsJywKICAgICAgICAnY3J0JyA9PiAnYXBwbGljYXRpb24veC14NTA5LWNhLWNlcnQnLAogICAgICAgICdjcngnID0+ICdhcHBsaWNhdGlvbi94LWNocm9tZS1leHRlbnNpb24nLAogICAgICAgICdjcnlwdG9ub3RlJyA9PiAnYXBwbGljYXRpb24vdm5kLnJpZy5jcnlwdG9ub3RlJywKICAgICAgICAnY3NoJyA9PiAnYXBwbGljYXRpb24veC1jc2gnLAogICAgICAgICdjc2wnID0+ICdhcHBsaWNhdGlvbi92bmQuY2l0YXRpb25zdHlsZXMuc3R5bGUreG1sJywKICAgICAgICAnY3NtbCcgPT4gJ2NoZW1pY2FsL3gtY3NtbCcsCiAgICAgICAgJ2NzcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jb21tb25zcGFjZScsCiAgICAgICAgJ2NzcicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2NzcycgPT4gJ3RleHQvY3NzJywKICAgICAgICAnY3N0JyA9PiAnYXBwbGljYXRpb24veC1kaXJlY3RvcicsCiAgICAgICAgJ2NzdicgPT4gJ3RleHQvY3N2JywKICAgICAgICAnY3UnID0+ICdhcHBsaWNhdGlvbi9jdS1zZWVtZScsCiAgICAgICAgJ2N1cmwnID0+ICd0ZXh0L3ZuZC5jdXJsJywKICAgICAgICAnY3dsJyA9PiAnYXBwbGljYXRpb24vY3dsJywKICAgICAgICAnY3d3JyA9PiAnYXBwbGljYXRpb24vcHJzLmN3dycsCiAgICAgICAgJ2N4dCcgPT4gJ2FwcGxpY2F0aW9uL3gtZGlyZWN0b3InLAogICAgICAgICdjeHgnID0+ICd0ZXh0L3gtYycsCiAgICAgICAgJ2RhZScgPT4gJ21vZGVsL3ZuZC5jb2xsYWRhK3htbCcsCiAgICAgICAgJ2RhZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tb2JpdXMuZGFmJywKICAgICAgICAnZGFydCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kYXJ0JywKICAgICAgICAnZGF0YWxlc3MnID0+ICdhcHBsaWNhdGlvbi92bmQuZmRzbi5zZWVkJywKICAgICAgICAnZGF2bW91bnQnID0+ICdhcHBsaWNhdGlvbi9kYXZtb3VudCt4bWwnLAogICAgICAgICdkYmYnID0+ICdhcHBsaWNhdGlvbi92bmQuZGJmJywKICAgICAgICAnZGJrJyA9PiAnYXBwbGljYXRpb24vZG9jYm9vayt4bWwnLAogICAgICAgICdkY20nID0+ICdhcHBsaWNhdGlvbi9kaWNvbScsCiAgICAgICAgJ2RjbXAnID0+ICdhcHBsaWNhdGlvbi92bmQuZGNtcCt4bWwnLAogICAgICAgICdkY3InID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnZGN1cmwnID0+ICd0ZXh0L3ZuZC5jdXJsLmRjdXJsJywKICAgICAgICAnZGQyJyA9PiAnYXBwbGljYXRpb24vdm5kLm9tYS5kZDIreG1sJywKICAgICAgICAnZGRkJyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kZGQnLAogICAgICAgICdkZGYnID0+ICdhcHBsaWNhdGlvbi92bmQuc3luY21sLmRtZGRmK3htbCcsCiAgICAgICAgJ2RkcycgPT4gJ2ltYWdlL3ZuZC5tcy1kZHMnLAogICAgICAgICdkZWInID0+ICdhcHBsaWNhdGlvbi94LWRlYmlhbi1wYWNrYWdlJywKICAgICAgICAnZGVmJyA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgJ2RlcGxveScgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2RlcicgPT4gJ2FwcGxpY2F0aW9uL3gteDUwOS1jYS1jZXJ0JywKICAgICAgICAnZGZhYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kcmVhbWZhY3RvcnknLAogICAgICAgICdkZ2MnID0+ICdhcHBsaWNhdGlvbi94LWRnYy1jb21wcmVzc2VkJywKICAgICAgICAnZGliJyA9PiAnaW1hZ2UvYm1wJywKICAgICAgICAnZGljJyA9PiAndGV4dC94LWMnLAogICAgICAgICdkaXInID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnZGlzJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5kaXMnLAogICAgICAgICdkaXNwb3NpdGlvbi1ub3RpZmljYXRpb24nID0+ICdtZXNzYWdlL2Rpc3Bvc2l0aW9uLW5vdGlmaWNhdGlvbicsCiAgICAgICAgJ2Rpc3QnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkaXN0eicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2RqdicgPT4gJ2ltYWdlL3ZuZC5kanZ1JywKICAgICAgICAnZGp2dScgPT4gJ2ltYWdlL3ZuZC5kanZ1JywKICAgICAgICAnZGxsJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnZG1nJyA9PiAnYXBwbGljYXRpb24veC1hcHBsZS1kaXNraW1hZ2UnLAogICAgICAgICdkbW4nID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkbXAnID0+ICdhcHBsaWNhdGlvbi92bmQudGNwZHVtcC5wY2FwJywKICAgICAgICAnZG1zJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAnZG5hJyA9PiAnYXBwbGljYXRpb24vdm5kLmRuYScsCiAgICAgICAgJ2RuZycgPT4gJ2ltYWdlL3gtYWRvYmUtZG5nJywKICAgICAgICAnZG9jJyA9PiAnYXBwbGljYXRpb24vbXN3b3JkJywKICAgICAgICAnZG9jbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy13b3JkLmRvY3VtZW50Lm1hY3JvZW5hYmxlZC4xMicsCiAgICAgICAgJ2RvY3gnID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsCiAgICAgICAgJ2RvdCcgPT4gJ2FwcGxpY2F0aW9uL21zd29yZCcsCiAgICAgICAgJ2RvdG0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtd29yZC50ZW1wbGF0ZS5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdkb3R4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUnLAogICAgICAgICdkcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vc2dpLmRwJywKICAgICAgICAnZHBnJyA9PiAnYXBwbGljYXRpb24vdm5kLmRwZ3JhcGgnLAogICAgICAgICdkcHgnID0+ICdpbWFnZS9kcHgnLAogICAgICAgICdkcmEnID0+ICdhdWRpby92bmQuZHJhJywKICAgICAgICAnZHJsZScgPT4gJ2ltYWdlL2RpY29tLXJsZScsCiAgICAgICAgJ2RybScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wcm9jcmVhdGUuZHJlYW0nLAogICAgICAgICdkc2MnID0+ICd0ZXh0L3Bycy5saW5lcy50YWcnLAogICAgICAgICdkc3NjJyA9PiAnYXBwbGljYXRpb24vZHNzYytkZXInLAogICAgICAgICdkc3QnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkdGInID0+ICdhcHBsaWNhdGlvbi94LWR0Ym9vayt4bWwnLAogICAgICAgICdkdGQnID0+ICdhcHBsaWNhdGlvbi94bWwtZHRkJywKICAgICAgICAnZHRzJyA9PiAnYXVkaW8vdm5kLmR0cycsCiAgICAgICAgJ2R0c2hkJyA9PiAnYXVkaW8vdm5kLmR0cy5oZCcsCiAgICAgICAgJ2R1bXAnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdkdmInID0+ICd2aWRlby92bmQuZHZiLmZpbGUnLAogICAgICAgICdkdmknID0+ICdhcHBsaWNhdGlvbi94LWR2aScsCiAgICAgICAgJ2R3ZCcgPT4gJ2FwcGxpY2F0aW9uL2F0c2MtZHdkK3htbCcsCiAgICAgICAgJ2R3ZicgPT4gJ21vZGVsL3ZuZC5kd2YnLAogICAgICAgICdkd2cnID0+ICdpbWFnZS92bmQuZHdnJywKICAgICAgICAnZHhmJyA9PiAnaW1hZ2Uvdm5kLmR4ZicsCiAgICAgICAgJ2R4cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zcG90ZmlyZS5keHAnLAogICAgICAgICdkeHInID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnZWFyJyA9PiAnYXBwbGljYXRpb24vamF2YS1hcmNoaXZlJywKICAgICAgICAnZWNlbHA0ODAwJyA9PiAnYXVkaW8vdm5kLm51ZXJhLmVjZWxwNDgwMCcsCiAgICAgICAgJ2VjZWxwNzQ3MCcgPT4gJ2F1ZGlvL3ZuZC5udWVyYS5lY2VscDc0NzAnLAogICAgICAgICdlY2VscDk2MDAnID0+ICdhdWRpby92bmQubnVlcmEuZWNlbHA5NjAwJywKICAgICAgICAnZWNtYScgPT4gJ2FwcGxpY2F0aW9uL2VjbWFzY3JpcHQnLAogICAgICAgICdlZG0nID0+ICdhcHBsaWNhdGlvbi92bmQubm92YWRpZ20uZWRtJywKICAgICAgICAnZWR4JyA9PiAnYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmVkeCcsCiAgICAgICAgJ2VmaWYnID0+ICdhcHBsaWNhdGlvbi92bmQucGljc2VsJywKICAgICAgICAnZWk2JyA9PiAnYXBwbGljYXRpb24vdm5kLnBnLm9zYXNsaScsCiAgICAgICAgJ2VsYycgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2VtZicgPT4gJ2ltYWdlL2VtZicsCiAgICAgICAgJ2VtbCcgPT4gJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnZW1tYScgPT4gJ2FwcGxpY2F0aW9uL2VtbWEreG1sJywKICAgICAgICAnZW1vdGlvbm1sJyA9PiAnYXBwbGljYXRpb24vZW1vdGlvbm1sK3htbCcsCiAgICAgICAgJ2VteicgPT4gJ2FwcGxpY2F0aW9uL3gtbXNtZXRhZmlsZScsCiAgICAgICAgJ2VvbCcgPT4gJ2F1ZGlvL3ZuZC5kaWdpdGFsLXdpbmRzJywKICAgICAgICAnZW90JyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWZvbnRvYmplY3QnLAogICAgICAgICdlcHMnID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAnZXB1YicgPT4gJ2FwcGxpY2F0aW9uL2VwdWIremlwJywKICAgICAgICAnZXMzJyA9PiAnYXBwbGljYXRpb24vdm5kLmVzemlnbm8zK3htbCcsCiAgICAgICAgJ2VzYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vc2dpLnN1YnN5c3RlbScsCiAgICAgICAgJ2VzZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5lcHNvbi5lc2YnLAogICAgICAgICdldDMnID0+ICdhcHBsaWNhdGlvbi92bmQuZXN6aWdubzMreG1sJywKICAgICAgICAnZXR4JyA9PiAndGV4dC94LXNldGV4dCcsCiAgICAgICAgJ2V2YScgPT4gJ2FwcGxpY2F0aW9uL3gtZXZhJywKICAgICAgICAnZXZ5JyA9PiAnYXBwbGljYXRpb24veC1lbnZveScsCiAgICAgICAgJ2V4ZScgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2V4aScgPT4gJ2FwcGxpY2F0aW9uL2V4aScsCiAgICAgICAgJ2V4cCcgPT4gJ2FwcGxpY2F0aW9uL2V4cHJlc3MnLAogICAgICAgICdleHInID0+ICdpbWFnZS9hY2VzJywKICAgICAgICAnZXh0JyA9PiAnYXBwbGljYXRpb24vdm5kLm5vdmFkaWdtLmV4dCcsCiAgICAgICAgJ2V6JyA9PiAnYXBwbGljYXRpb24vYW5kcmV3LWluc2V0JywKICAgICAgICAnZXoyJyA9PiAnYXBwbGljYXRpb24vdm5kLmV6cGl4LWFsYnVtJywKICAgICAgICAnZXozJyA9PiAnYXBwbGljYXRpb24vdm5kLmV6cGl4LXBhY2thZ2UnLAogICAgICAgICdmJyA9PiAndGV4dC94LWZvcnRyYW4nLAogICAgICAgICdmNHYnID0+ICd2aWRlby9tcDQnLAogICAgICAgICdmNzcnID0+ICd0ZXh0L3gtZm9ydHJhbicsCiAgICAgICAgJ2Y5MCcgPT4gJ3RleHQveC1mb3J0cmFuJywKICAgICAgICAnZmFjdGknID0+ICdpbWFnZS92bmQuYmxvY2tmYWN0LmZhY3RpJywKICAgICAgICAnZmJzJyA9PiAnaW1hZ2Uvdm5kLmZhc3RiaWRzaGVldCcsCiAgICAgICAgJ2ZieCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hdXRvZGVzay5mYngnLAogICAgICAgICdmY2R0JyA9PiAnYXBwbGljYXRpb24vdm5kLmFkb2JlLmZvcm1zY2VudHJhbC5mY2R0JywKICAgICAgICAnZmNzJyA9PiAnYXBwbGljYXRpb24vdm5kLmlzYWMuZmNzJywKICAgICAgICAnZmRmJyA9PiAnYXBwbGljYXRpb24vZmRmJywKICAgICAgICAnZmR0JyA9PiAnYXBwbGljYXRpb24vZmR0K3htbCcsCiAgICAgICAgJ2ZlX2xhdW5jaCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZW5vdm8uZmNzZWxheW91dC1saW5rJywKICAgICAgICAnZmc1JyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml0c3Uub2FzeXNncCcsCiAgICAgICAgJ2ZnZCcgPT4gJ2FwcGxpY2F0aW9uL3gtZGlyZWN0b3InLAogICAgICAgICdmaCcgPT4gJ2ltYWdlL3gtZnJlZWhhbmQnLAogICAgICAgICdmaDQnID0+ICdpbWFnZS94LWZyZWVoYW5kJywKICAgICAgICAnZmg1JyA9PiAnaW1hZ2UveC1mcmVlaGFuZCcsCiAgICAgICAgJ2ZoNycgPT4gJ2ltYWdlL3gtZnJlZWhhbmQnLAogICAgICAgICdmaGMnID0+ICdpbWFnZS94LWZyZWVoYW5kJywKICAgICAgICAnZmlnJyA9PiAnYXBwbGljYXRpb24veC14ZmlnJywKICAgICAgICAnZml0cycgPT4gJ2ltYWdlL2ZpdHMnLAogICAgICAgICdmbGFjJyA9PiAnYXVkaW8veC1mbGFjJywKICAgICAgICAnZmxpJyA9PiAndmlkZW8veC1mbGknLAogICAgICAgICdmbG8nID0+ICdhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5mbG8nLAogICAgICAgICdmbHYnID0+ICd2aWRlby94LWZsdicsCiAgICAgICAgJ2ZsdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua2l2aW8nLAogICAgICAgICdmbHgnID0+ICd0ZXh0L3ZuZC5mbWkuZmxleHN0b3InLAogICAgICAgICdmbHknID0+ICd0ZXh0L3ZuZC5mbHknLAogICAgICAgICdmbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mcmFtZW1ha2VyJywKICAgICAgICAnZm5jJyA9PiAnYXBwbGljYXRpb24vdm5kLmZyb2dhbnMuZm5jJywKICAgICAgICAnZm8nID0+ICdhcHBsaWNhdGlvbi92bmQuc29mdHdhcmU2MDIuZmlsbGVyLmZvcm0reG1sJywKICAgICAgICAnZm9yJyA9PiAndGV4dC94LWZvcnRyYW4nLAogICAgICAgICdmcHgnID0+ICdpbWFnZS92bmQuZnB4JywKICAgICAgICAnZnJhbWUnID0+ICdhcHBsaWNhdGlvbi92bmQuZnJhbWVtYWtlcicsCiAgICAgICAgJ2ZzYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mc2Mud2VibGF1bmNoJywKICAgICAgICAnZnN0JyA9PiAnaW1hZ2Uvdm5kLmZzdCcsCiAgICAgICAgJ2Z0YycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mbHV4dGltZS5jbGlwJywKICAgICAgICAnZnRpJyA9PiAnYXBwbGljYXRpb24vdm5kLmFuc2VyLXdlYi1mdW5kcy10cmFuc2Zlci1pbml0aWF0aW9uJywKICAgICAgICAnZnZ0JyA9PiAndmlkZW8vdm5kLmZ2dCcsCiAgICAgICAgJ2Z4cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hZG9iZS5meHAnLAogICAgICAgICdmeHBsJyA9PiAnYXBwbGljYXRpb24vdm5kLmFkb2JlLmZ4cCcsCiAgICAgICAgJ2Z6cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mdXp6eXNoZWV0JywKICAgICAgICAnZzJ3JyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb3BsYW4nLAogICAgICAgICdnMycgPT4gJ2ltYWdlL2czZmF4JywKICAgICAgICAnZzN3JyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb3NwYWNlJywKICAgICAgICAnZ2FjJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS1hY2NvdW50JywKICAgICAgICAnZ2FtJyA9PiAnYXBwbGljYXRpb24veC10YWRzJywKICAgICAgICAnZ2JyJyA9PiAnYXBwbGljYXRpb24vcnBraS1naG9zdGJ1c3RlcnMnLAogICAgICAgICdnY2EnID0+ICdhcHBsaWNhdGlvbi94LWdjYS1jb21wcmVzc2VkJywKICAgICAgICAnZ2RsJyA9PiAnbW9kZWwvdm5kLmdkbCcsCiAgICAgICAgJ2dkb2MnID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnQnLAogICAgICAgICdnZHJhdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5kcmF3aW5nJywKICAgICAgICAnZ2VkJyA9PiAndGV4dC92bmQuZmFtaWx5c2VhcmNoLmdlZGNvbScsCiAgICAgICAgJ2dlbycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5keW5hZ2VvJywKICAgICAgICAnZ2VvanNvbicgPT4gJ2FwcGxpY2F0aW9uL2dlbytqc29uJywKICAgICAgICAnZ2V4JyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb21ldHJ5LWV4cGxvcmVyJywKICAgICAgICAnZ2Zvcm0nID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZm9ybScsCiAgICAgICAgJ2dnYicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS5maWxlJywKICAgICAgICAnZ2dzJyA9PiAnYXBwbGljYXRpb24vdm5kLmdlb2dlYnJhLnNsaWRlcycsCiAgICAgICAgJ2dndCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9nZWJyYS50b29sJywKICAgICAgICAnZ2hmJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS1oZWxwJywKICAgICAgICAnZ2lmJyA9PiAnaW1hZ2UvZ2lmJywKICAgICAgICAnZ2ltJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS1pZGVudGl0eS1tZXNzYWdlJywKICAgICAgICAnZ2phbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5qYW0nLAogICAgICAgICdnbGInID0+ICdtb2RlbC9nbHRmLWJpbmFyeScsCiAgICAgICAgJ2dsdGYnID0+ICdtb2RlbC9nbHRmK2pzb24nLAogICAgICAgICdnbWFwJyA9PiAnYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLm1hcCcsCiAgICAgICAgJ2dtbCcgPT4gJ2FwcGxpY2F0aW9uL2dtbCt4bWwnLAogICAgICAgICdnbXgnID0+ICdhcHBsaWNhdGlvbi92bmQuZ214JywKICAgICAgICAnZ251bWVyaWMnID0+ICdhcHBsaWNhdGlvbi94LWdudW1lcmljJywKICAgICAgICAnZ3BoJyA9PiAnYXBwbGljYXRpb24vdm5kLmZsb2dyYXBoaXQnLAogICAgICAgICdncHgnID0+ICdhcHBsaWNhdGlvbi9ncHgreG1sJywKICAgICAgICAnZ3FmJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyYWZlcScsCiAgICAgICAgJ2dxcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ncmFmZXEnLAogICAgICAgICdncmFtJyA9PiAnYXBwbGljYXRpb24vc3JncycsCiAgICAgICAgJ2dyYW1wcycgPT4gJ2FwcGxpY2F0aW9uL3gtZ3JhbXBzLXhtbCcsCiAgICAgICAgJ2dyZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9tZXRyeS1leHBsb3JlcicsCiAgICAgICAgJ2dydicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtaW5qZWN0b3InLAogICAgICAgICdncnhtbCcgPT4gJ2FwcGxpY2F0aW9uL3NyZ3MreG1sJywKICAgICAgICAnZ3NjcmlwdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zY3JpcHQnLAogICAgICAgICdnc2YnID0+ICdhcHBsaWNhdGlvbi94LWZvbnQtZ2hvc3RzY3JpcHQnLAogICAgICAgICdnc2hlZXQnID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuc3ByZWFkc2hlZXQnLAogICAgICAgICdnc2l0ZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zaXRlJywKICAgICAgICAnZ3NsaWRlcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb24nLAogICAgICAgICdndGFyJyA9PiAnYXBwbGljYXRpb24veC1ndGFyJywKICAgICAgICAnZ3RtJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLW1lc3NhZ2UnLAogICAgICAgICdndHcnID0+ICdtb2RlbC92bmQuZ3R3JywKICAgICAgICAnZ3YnID0+ICd0ZXh0L3ZuZC5ncmFwaHZpeicsCiAgICAgICAgJ2d4ZicgPT4gJ2FwcGxpY2F0aW9uL2d4ZicsCiAgICAgICAgJ2d4dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW9uZXh0JywKICAgICAgICAnZ3onID0+ICdhcHBsaWNhdGlvbi9nemlwJywKICAgICAgICAnZ3ppcCcgPT4gJ2FwcGxpY2F0aW9uL2d6aXAnLAogICAgICAgICdoJyA9PiAndGV4dC94LWMnLAogICAgICAgICdoMjYxJyA9PiAndmlkZW8vaDI2MScsCiAgICAgICAgJ2gyNjMnID0+ICd2aWRlby9oMjYzJywKICAgICAgICAnaDI2NCcgPT4gJ3ZpZGVvL2gyNjQnLAogICAgICAgICdoYWwnID0+ICdhcHBsaWNhdGlvbi92bmQuaGFsK3htbCcsCiAgICAgICAgJ2hiY2knID0+ICdhcHBsaWNhdGlvbi92bmQuaGJjaScsCiAgICAgICAgJ2hicycgPT4gJ3RleHQveC1oYW5kbGViYXJzLXRlbXBsYXRlJywKICAgICAgICAnaGRkJyA9PiAnYXBwbGljYXRpb24veC12aXJ0dWFsYm94LWhkZCcsCiAgICAgICAgJ2hkZicgPT4gJ2FwcGxpY2F0aW9uL3gtaGRmJywKICAgICAgICAnaGVpYycgPT4gJ2ltYWdlL2hlaWMnLAogICAgICAgICdoZWljcycgPT4gJ2ltYWdlL2hlaWMtc2VxdWVuY2UnLAogICAgICAgICdoZWlmJyA9PiAnaW1hZ2UvaGVpZicsCiAgICAgICAgJ2hlaWZzJyA9PiAnaW1hZ2UvaGVpZi1zZXF1ZW5jZScsCiAgICAgICAgJ2hlajInID0+ICdpbWFnZS9oZWoyaycsCiAgICAgICAgJ2hlbGQnID0+ICdhcHBsaWNhdGlvbi9hdHNjLWhlbGQreG1sJywKICAgICAgICAnaGgnID0+ICd0ZXh0L3gtYycsCiAgICAgICAgJ2hqc29uJyA9PiAnYXBwbGljYXRpb24vaGpzb24nLAogICAgICAgICdobHAnID0+ICdhcHBsaWNhdGlvbi93aW5obHAnLAogICAgICAgICdocGdsJyA9PiAnYXBwbGljYXRpb24vdm5kLmhwLWhwZ2wnLAogICAgICAgICdocGlkJyA9PiAnYXBwbGljYXRpb24vdm5kLmhwLWhwaWQnLAogICAgICAgICdocHMnID0+ICdhcHBsaWNhdGlvbi92bmQuaHAtaHBzJywKICAgICAgICAnaHF4JyA9PiAnYXBwbGljYXRpb24vbWFjLWJpbmhleDQwJywKICAgICAgICAnaHRjJyA9PiAndGV4dC94LWNvbXBvbmVudCcsCiAgICAgICAgJ2h0a2UnID0+ICdhcHBsaWNhdGlvbi92bmQua2VuYW1lYWFwcCcsCiAgICAgICAgJ2h0bScgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgJ2h0bWwnID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICdodmQnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LWRpYycsCiAgICAgICAgJ2h2cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC55YW1haGEuaHYtdm9pY2UnLAogICAgICAgICdodnMnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLmh2LXNjcmlwdCcsCiAgICAgICAgJ2kyZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnRlcmdlbycsCiAgICAgICAgJ2ljYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pY2Nwcm9maWxlJywKICAgICAgICAnaWNlJyA9PiAneC1jb25mZXJlbmNlL3gtY29vbHRhbGsnLAogICAgICAgICdpY20nID0+ICdhcHBsaWNhdGlvbi92bmQuaWNjcHJvZmlsZScsCiAgICAgICAgJ2ljbycgPT4gJ2ltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbicsCiAgICAgICAgJ2ljcycgPT4gJ3RleHQvY2FsZW5kYXInLAogICAgICAgICdpZWYnID0+ICdpbWFnZS9pZWYnLAogICAgICAgICdpZmInID0+ICd0ZXh0L2NhbGVuZGFyJywKICAgICAgICAnaWZtJyA9PiAnYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm1kYXRhJywKICAgICAgICAnaWdlcycgPT4gJ21vZGVsL2lnZXMnLAogICAgICAgICdpZ2wnID0+ICdhcHBsaWNhdGlvbi92bmQuaWdsb2FkZXInLAogICAgICAgICdpZ20nID0+ICdhcHBsaWNhdGlvbi92bmQuaW5zb3JzLmlnbScsCiAgICAgICAgJ2lncycgPT4gJ21vZGVsL2lnZXMnLAogICAgICAgICdpZ3gnID0+ICdhcHBsaWNhdGlvbi92bmQubWljcm9ncmFmeC5pZ3gnLAogICAgICAgICdpaWYnID0+ICdhcHBsaWNhdGlvbi92bmQuc2hhbmEuaW5mb3JtZWQuaW50ZXJjaGFuZ2UnLAogICAgICAgICdpbWcnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdpbXAnID0+ICdhcHBsaWNhdGlvbi92bmQuYWNjcGFjLnNpbXBseS5pbXAnLAogICAgICAgICdpbXMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtaW1zJywKICAgICAgICAnaW4nID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnaW5kZCcgPT4gJ2FwcGxpY2F0aW9uL3gtaW5kZXNpZ24nLAogICAgICAgICdpbmknID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnaW5rJyA9PiAnYXBwbGljYXRpb24vaW5rbWwreG1sJywKICAgICAgICAnaW5rbWwnID0+ICdhcHBsaWNhdGlvbi9pbmttbCt4bWwnLAogICAgICAgICdpbnN0YWxsJyA9PiAnYXBwbGljYXRpb24veC1pbnN0YWxsLWluc3RydWN0aW9ucycsCiAgICAgICAgJ2lvdGEnID0+ICdhcHBsaWNhdGlvbi92bmQuYXN0cmFlYS1zb2Z0d2FyZS5pb3RhJywKICAgICAgICAnaXBmaXgnID0+ICdhcHBsaWNhdGlvbi9pcGZpeCcsCiAgICAgICAgJ2lwaycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zaGFuYS5pbmZvcm1lZC5wYWNrYWdlJywKICAgICAgICAnaXB5bmInID0+ICdhcHBsaWNhdGlvbi94LWlweW5iK2pzb24nLAogICAgICAgICdpcm0nID0+ICdhcHBsaWNhdGlvbi92bmQuaWJtLnJpZ2h0cy1tYW5hZ2VtZW50JywKICAgICAgICAnaXJwJyA9PiAnYXBwbGljYXRpb24vdm5kLmlyZXBvc2l0b3J5LnBhY2thZ2UreG1sJywKICAgICAgICAnaXNvJyA9PiAnYXBwbGljYXRpb24veC1pc285NjYwLWltYWdlJywKICAgICAgICAnaXRwJyA9PiAnYXBwbGljYXRpb24vdm5kLnNoYW5hLmluZm9ybWVkLmZvcm10ZW1wbGF0ZScsCiAgICAgICAgJ2l0cycgPT4gJ2FwcGxpY2F0aW9uL2l0cyt4bWwnLAogICAgICAgICdpdnAnID0+ICdhcHBsaWNhdGlvbi92bmQuaW1tZXJ2aXNpb24taXZwJywKICAgICAgICAnaXZ1JyA9PiAnYXBwbGljYXRpb24vdm5kLmltbWVydmlzaW9uLWl2dScsCiAgICAgICAgJ2phZCcgPT4gJ3RleHQvdm5kLnN1bi5qMm1lLmFwcC1kZXNjcmlwdG9yJywKICAgICAgICAnamFkZScgPT4gJ3RleHQvamFkZScsCiAgICAgICAgJ2phaWknID0+ICdpbWFnZS9qYWlpJywKICAgICAgICAnamFpcycgPT4gJ2ltYWdlL2phaXMnLAogICAgICAgICdqYW0nID0+ICdhcHBsaWNhdGlvbi92bmQuamFtJywKICAgICAgICAnamFyJyA9PiAnYXBwbGljYXRpb24vamF2YS1hcmNoaXZlJywKICAgICAgICAnamFyZGlmZicgPT4gJ2FwcGxpY2F0aW9uL3gtamF2YS1hcmNoaXZlLWRpZmYnLAogICAgICAgICdqYXZhJyA9PiAndGV4dC94LWphdmEtc291cmNlJywKICAgICAgICAnamZpZicgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICdqaGMnID0+ICdpbWFnZS9qcGhjJywKICAgICAgICAnamlzcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5qaXNwJywKICAgICAgICAnamxzJyA9PiAnaW1hZ2UvamxzJywKICAgICAgICAnamx0JyA9PiAnYXBwbGljYXRpb24vdm5kLmhwLWpseXQnLAogICAgICAgICdqbmcnID0+ICdpbWFnZS94LWpuZycsCiAgICAgICAgJ2pubHAnID0+ICdhcHBsaWNhdGlvbi94LWphdmEtam5scC1maWxlJywKICAgICAgICAnam9kYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5qb29zdC5qb2RhLWFyY2hpdmUnLAogICAgICAgICdqcDInID0+ICdpbWFnZS9qcDInLAogICAgICAgICdqcGUnID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAnanBlZycgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICdqcGYnID0+ICdpbWFnZS9qcHgnLAogICAgICAgICdqcGcnID0+ICdpbWFnZS9qcGVnJywKICAgICAgICAnanBnMicgPT4gJ2ltYWdlL2pwMicsCiAgICAgICAgJ2pwZ20nID0+ICdpbWFnZS9qcG0nLAogICAgICAgICdqcGd2JyA9PiAndmlkZW8vanBlZycsCiAgICAgICAgJ2pwaCcgPT4gJ2ltYWdlL2pwaCcsCiAgICAgICAgJ2pwbScgPT4gJ2ltYWdlL2pwbScsCiAgICAgICAgJ2pweCcgPT4gJ2ltYWdlL2pweCcsCiAgICAgICAgJ2pzJyA9PiAndGV4dC9qYXZhc2NyaXB0JywKICAgICAgICAnanNvbicgPT4gJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICdqc29uNScgPT4gJ2FwcGxpY2F0aW9uL2pzb241JywKICAgICAgICAnanNvbmxkJyA9PiAnYXBwbGljYXRpb24vbGQranNvbicsCiAgICAgICAgJ2pzb25tbCcgPT4gJ2FwcGxpY2F0aW9uL2pzb25tbCtqc29uJywKICAgICAgICAnanN4JyA9PiAndGV4dC9qc3gnLAogICAgICAgICdqdCcgPT4gJ21vZGVsL2p0JywKICAgICAgICAnanhsJyA9PiAnaW1hZ2UvanhsJywKICAgICAgICAnanhyJyA9PiAnaW1hZ2UvanhyJywKICAgICAgICAnanhyYScgPT4gJ2ltYWdlL2p4cmEnLAogICAgICAgICdqeHJzJyA9PiAnaW1hZ2UvanhycycsCiAgICAgICAgJ2p4cycgPT4gJ2ltYWdlL2p4cycsCiAgICAgICAgJ2p4c2MnID0+ICdpbWFnZS9qeHNjJywKICAgICAgICAnanhzaScgPT4gJ2ltYWdlL2p4c2knLAogICAgICAgICdqeHNzJyA9PiAnaW1hZ2UvanhzcycsCiAgICAgICAgJ2thcicgPT4gJ2F1ZGlvL21pZGknLAogICAgICAgICdrYXJib24nID0+ICdhcHBsaWNhdGlvbi92bmQua2RlLmthcmJvbicsCiAgICAgICAgJ2tibCcgPT4gJ2FwcGxpY2F0aW9uL2tibCt4bWwnLAogICAgICAgICdrZGInID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdrZGJ4JyA9PiAnYXBwbGljYXRpb24veC1rZWVwYXNzMicsCiAgICAgICAgJ2tleScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5rZXlub3RlJywKICAgICAgICAna2ZvJyA9PiAnYXBwbGljYXRpb24vdm5kLmtkZS5rZm9ybXVsYScsCiAgICAgICAgJ2tpYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5raWRzcGlyYXRpb24nLAogICAgICAgICdrbWwnID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmttbCt4bWwnLAogICAgICAgICdrbXonID0+ICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWVhcnRoLmtteicsCiAgICAgICAgJ2tuZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5raW5hcicsCiAgICAgICAgJ2tucCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5raW5hcicsCiAgICAgICAgJ2tvbicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua29udG91cicsCiAgICAgICAgJ2twcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlcicsCiAgICAgICAgJ2twdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rZGUua3ByZXNlbnRlcicsCiAgICAgICAgJ2tweHgnID0+ICdhcHBsaWNhdGlvbi92bmQuZHMta2V5cG9pbnQnLAogICAgICAgICdrc3AnID0+ICdhcHBsaWNhdGlvbi92bmQua2RlLmtzcHJlYWQnLAogICAgICAgICdrdHInID0+ICdhcHBsaWNhdGlvbi92bmQua2Fob290eicsCiAgICAgICAgJ2t0eCcgPT4gJ2ltYWdlL2t0eCcsCiAgICAgICAgJ2t0eDInID0+ICdpbWFnZS9rdHgyJywKICAgICAgICAna3R6JyA9PiAnYXBwbGljYXRpb24vdm5kLmthaG9vdHonLAogICAgICAgICdrd2QnID0+ICdhcHBsaWNhdGlvbi92bmQua2RlLmt3b3JkJywKICAgICAgICAna3d0JyA9PiAnYXBwbGljYXRpb24vdm5kLmtkZS5rd29yZCcsCiAgICAgICAgJ2xhc3htbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sYXMubGFzK3htbCcsCiAgICAgICAgJ2xhdGV4JyA9PiAnYXBwbGljYXRpb24veC1sYXRleCcsCiAgICAgICAgJ2xiZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sbGFtYWdyYXBoaWNzLmxpZmUtYmFsYW5jZS5kZXNrdG9wJywKICAgICAgICAnbGJlJyA9PiAnYXBwbGljYXRpb24vdm5kLmxsYW1hZ3JhcGhpY3MubGlmZS1iYWxhbmNlLmV4Y2hhbmdlK3htbCcsCiAgICAgICAgJ2xlcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5oaGUubGVzc29uLXBsYXllcicsCiAgICAgICAgJ2xlc3MnID0+ICd0ZXh0L2xlc3MnLAogICAgICAgICdsZ3InID0+ICdhcHBsaWNhdGlvbi9sZ3IreG1sJywKICAgICAgICAnbGhhJyA9PiAnYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZCcsCiAgICAgICAgJ2xpbms2NicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5yb3V0ZTY2Lmxpbms2Nit4bWwnLAogICAgICAgICdsaXN0JyA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgJ2xpc3QzODIwJyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXAnLAogICAgICAgICdsaXN0YWZwJyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5tb2RjYXAnLAogICAgICAgICdsaXRjb2ZmZWUnID0+ICd0ZXh0L2NvZmZlZXNjcmlwdCcsCiAgICAgICAgJ2xuaycgPT4gJ2FwcGxpY2F0aW9uL3gtbXMtc2hvcnRjdXQnLAogICAgICAgICdsb2cnID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAnbG9zdHhtbCcgPT4gJ2FwcGxpY2F0aW9uL2xvc3QreG1sJywKICAgICAgICAnbG90dGllJyA9PiAnYXBwbGljYXRpb24vemlwK2RvdGxvdHRpZScsCiAgICAgICAgJ2xyZicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ2xybScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1scm0nLAogICAgICAgICdsdGYnID0+ICdhcHBsaWNhdGlvbi92bmQuZnJvZ2Fucy5sdGYnLAogICAgICAgICdsdWEnID0+ICd0ZXh0L3gtbHVhJywKICAgICAgICAnbHVhYycgPT4gJ2FwcGxpY2F0aW9uL3gtbHVhLWJ5dGVjb2RlJywKICAgICAgICAnbHZwJyA9PiAnYXVkaW8vdm5kLmx1Y2VudC52b2ljZScsCiAgICAgICAgJ2x3cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy13b3JkcHJvJywKICAgICAgICAnbHpoJyA9PiAnYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZCcsCiAgICAgICAgJ20xMycgPT4gJ2FwcGxpY2F0aW9uL3gtbXNtZWRpYXZpZXcnLAogICAgICAgICdtMTQnID0+ICdhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3JywKICAgICAgICAnbTF2JyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ20yMScgPT4gJ2FwcGxpY2F0aW9uL21wMjEnLAogICAgICAgICdtMmEnID0+ICdhdWRpby9tcGVnJywKICAgICAgICAnbTJ0JyA9PiAndmlkZW8vbXAydCcsCiAgICAgICAgJ20ydHMnID0+ICd2aWRlby9tcDJ0JywKICAgICAgICAnbTJ2JyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ20zYScgPT4gJ2F1ZGlvL21wZWcnLAogICAgICAgICdtM3UnID0+ICdhdWRpby94LW1wZWd1cmwnLAogICAgICAgICdtM3U4JyA9PiAnYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwnLAogICAgICAgICdtNGEnID0+ICdhdWRpby9tcDQnLAogICAgICAgICdtNGInID0+ICdhdWRpby9tcDQnLAogICAgICAgICdtNHAnID0+ICdhcHBsaWNhdGlvbi9tcDQnLAogICAgICAgICdtNHMnID0+ICd2aWRlby9pc28uc2VnbWVudCcsCiAgICAgICAgJ200dScgPT4gJ3ZpZGVvL3ZuZC5tcGVndXJsJywKICAgICAgICAnbTR2JyA9PiAndmlkZW8veC1tNHYnLAogICAgICAgICdtYScgPT4gJ2FwcGxpY2F0aW9uL21hdGhlbWF0aWNhJywKICAgICAgICAnbWFkcycgPT4gJ2FwcGxpY2F0aW9uL21hZHMreG1sJywKICAgICAgICAnbWFlaScgPT4gJ2FwcGxpY2F0aW9uL21tdC1hZWkreG1sJywKICAgICAgICAnbWFnJyA9PiAnYXBwbGljYXRpb24vdm5kLmVjb3dpbi5jaGFydCcsCiAgICAgICAgJ21ha2VyJyA9PiAnYXBwbGljYXRpb24vdm5kLmZyYW1lbWFrZXInLAogICAgICAgICdtYW4nID0+ICd0ZXh0L3Ryb2ZmJywKICAgICAgICAnbWFuaWZlc3QnID0+ICd0ZXh0L2NhY2hlLW1hbmlmZXN0JywKICAgICAgICAnbWFwJyA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgJ21hcicgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ21hcmtkb3duJyA9PiAndGV4dC9tYXJrZG93bicsCiAgICAgICAgJ21hdGhtbCcgPT4gJ2FwcGxpY2F0aW9uL21hdGhtbCt4bWwnLAogICAgICAgICdtYicgPT4gJ2FwcGxpY2F0aW9uL21hdGhlbWF0aWNhJywKICAgICAgICAnbWJrJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5tYmsnLAogICAgICAgICdtYm94JyA9PiAnYXBwbGljYXRpb24vbWJveCcsCiAgICAgICAgJ21jMScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tZWRjYWxjZGF0YScsCiAgICAgICAgJ21jZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tY2QnLAogICAgICAgICdtY3VybCcgPT4gJ3RleHQvdm5kLmN1cmwubWN1cmwnLAogICAgICAgICdtZCcgPT4gJ3RleHQvbWFya2Rvd24nLAogICAgICAgICdtZGInID0+ICdhcHBsaWNhdGlvbi94LW1zYWNjZXNzJywKICAgICAgICAnbWRpJyA9PiAnaW1hZ2Uvdm5kLm1zLW1vZGknLAogICAgICAgICdtZHgnID0+ICd0ZXh0L21keCcsCiAgICAgICAgJ21lJyA9PiAndGV4dC90cm9mZicsCiAgICAgICAgJ21lc2gnID0+ICdtb2RlbC9tZXNoJywKICAgICAgICAnbWV0YTQnID0+ICdhcHBsaWNhdGlvbi9tZXRhbGluazQreG1sJywKICAgICAgICAnbWV0YWxpbmsnID0+ICdhcHBsaWNhdGlvbi9tZXRhbGluayt4bWwnLAogICAgICAgICdtZXRzJyA9PiAnYXBwbGljYXRpb24vbWV0cyt4bWwnLAogICAgICAgICdtZm0nID0+ICdhcHBsaWNhdGlvbi92bmQubWZtcCcsCiAgICAgICAgJ21mdCcgPT4gJ2FwcGxpY2F0aW9uL3Jwa2ktbWFuaWZlc3QnLAogICAgICAgICdtZ3AnID0+ICdhcHBsaWNhdGlvbi92bmQub3NnZW8ubWFwZ3VpZGUucGFja2FnZScsCiAgICAgICAgJ21neicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wcm90ZXVzLm1hZ2F6aW5lJywKICAgICAgICAnbWh0JyA9PiAnbWVzc2FnZS9yZmM4MjInLAogICAgICAgICdtaHRtbCcgPT4gJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnbWlkJyA9PiAnYXVkaW8vbWlkaScsCiAgICAgICAgJ21pZGknID0+ICdhdWRpby9taWRpJywKICAgICAgICAnbWllJyA9PiAnYXBwbGljYXRpb24veC1taWUnLAogICAgICAgICdtaWYnID0+ICdhcHBsaWNhdGlvbi92bmQubWlmJywKICAgICAgICAnbWltZScgPT4gJ21lc3NhZ2UvcmZjODIyJywKICAgICAgICAnbWoyJyA9PiAndmlkZW8vbWoyJywKICAgICAgICAnbWpwMicgPT4gJ3ZpZGVvL21qMicsCiAgICAgICAgJ21qcycgPT4gJ3RleHQvamF2YXNjcmlwdCcsCiAgICAgICAgJ21rM2QnID0+ICd2aWRlby9tYXRyb3NrYS0zZCcsCiAgICAgICAgJ21rYScgPT4gJ2F1ZGlvL21hdHJvc2thJywKICAgICAgICAnbWtkJyA9PiAndGV4dC94LW1hcmtkb3duJywKICAgICAgICAnbWtzJyA9PiAndmlkZW8veC1tYXRyb3NrYScsCiAgICAgICAgJ21rdicgPT4gJ3ZpZGVvL21hdHJvc2thJywKICAgICAgICAnbWxwJyA9PiAnYXBwbGljYXRpb24vdm5kLmRvbGJ5Lm1scCcsCiAgICAgICAgJ21tZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jaGlwbnV0cy5rYXJhb2tlLW1tZCcsCiAgICAgICAgJ21tZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zbWFmJywKICAgICAgICAnbW1sJyA9PiAndGV4dC9tYXRobWwnLAogICAgICAgICdtbXInID0+ICdpbWFnZS92bmQuZnVqaXhlcm94LmVkbWljcy1tbXInLAogICAgICAgICdtbmcnID0+ICd2aWRlby94LW1uZycsCiAgICAgICAgJ21ueScgPT4gJ2FwcGxpY2F0aW9uL3gtbXNtb25leScsCiAgICAgICAgJ21vYmknID0+ICdhcHBsaWNhdGlvbi94LW1vYmlwb2NrZXQtZWJvb2snLAogICAgICAgICdtb2RzJyA9PiAnYXBwbGljYXRpb24vbW9kcyt4bWwnLAogICAgICAgICdtb3YnID0+ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICdtb3ZpZScgPT4gJ3ZpZGVvL3gtc2dpLW1vdmllJywKICAgICAgICAnbXAyJyA9PiAnYXVkaW8vbXBlZycsCiAgICAgICAgJ21wMjEnID0+ICdhcHBsaWNhdGlvbi9tcDIxJywKICAgICAgICAnbXAyYScgPT4gJ2F1ZGlvL21wZWcnLAogICAgICAgICdtcDMnID0+ICdhdWRpby9tcGVnJywKICAgICAgICAnbXA0JyA9PiAndmlkZW8vbXA0JywKICAgICAgICAnbXA0YScgPT4gJ2F1ZGlvL21wNCcsCiAgICAgICAgJ21wNHMnID0+ICdhcHBsaWNhdGlvbi9tcDQnLAogICAgICAgICdtcDR2JyA9PiAndmlkZW8vbXA0JywKICAgICAgICAnbXBjJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vcGh1bi5jZXJ0aWZpY2F0ZScsCiAgICAgICAgJ21wZCcgPT4gJ2FwcGxpY2F0aW9uL2Rhc2greG1sJywKICAgICAgICAnbXBlJyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ21wZWcnID0+ICd2aWRlby9tcGVnJywKICAgICAgICAnbXBmJyA9PiAnYXBwbGljYXRpb24vbWVkaWEtcG9saWN5LWRhdGFzZXQreG1sJywKICAgICAgICAnbXBnJyA9PiAndmlkZW8vbXBlZycsCiAgICAgICAgJ21wZzQnID0+ICd2aWRlby9tcDQnLAogICAgICAgICdtcGdhJyA9PiAnYXVkaW8vbXBlZycsCiAgICAgICAgJ21wa2cnID0+ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUuaW5zdGFsbGVyK3htbCcsCiAgICAgICAgJ21wbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ibHVlaWNlLm11bHRpcGFzcycsCiAgICAgICAgJ21wbicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tb3BodW4uYXBwbGljYXRpb24nLAogICAgICAgICdtcHAnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcHJvamVjdCcsCiAgICAgICAgJ21wdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wcm9qZWN0JywKICAgICAgICAnbXB5JyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5taW5pcGF5JywKICAgICAgICAnbXF5JyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5tcXknLAogICAgICAgICdtcmMnID0+ICdhcHBsaWNhdGlvbi9tYXJjJywKICAgICAgICAnbXJjeCcgPT4gJ2FwcGxpY2F0aW9uL21hcmN4bWwreG1sJywKICAgICAgICAnbXMnID0+ICd0ZXh0L3Ryb2ZmJywKICAgICAgICAnbXNjbWwnID0+ICdhcHBsaWNhdGlvbi9tZWRpYXNlcnZlcmNvbnRyb2wreG1sJywKICAgICAgICAnbXNlZWQnID0+ICdhcHBsaWNhdGlvbi92bmQuZmRzbi5tc2VlZCcsCiAgICAgICAgJ21zZXEnID0+ICdhcHBsaWNhdGlvbi92bmQubXNlcScsCiAgICAgICAgJ21zZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5lcHNvbi5tc2YnLAogICAgICAgICdtc2cnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtb3V0bG9vaycsCiAgICAgICAgJ21zaCcgPT4gJ21vZGVsL21lc2gnLAogICAgICAgICdtc2knID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdtc2l4JyA9PiAnYXBwbGljYXRpb24vbXNpeCcsCiAgICAgICAgJ21zaXhidW5kbGUnID0+ICdhcHBsaWNhdGlvbi9tc2l4YnVuZGxlJywKICAgICAgICAnbXNsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy5tc2wnLAogICAgICAgICdtc20nID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdtc3AnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdtc3R5JyA9PiAnYXBwbGljYXRpb24vdm5kLm11dmVlLnN0eWxlJywKICAgICAgICAnbXRsJyA9PiAnbW9kZWwvbXRsJywKICAgICAgICAnbXRzJyA9PiAndmlkZW8vbXAydCcsCiAgICAgICAgJ211cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tdXNpY2lhbicsCiAgICAgICAgJ211c2QnID0+ICdhcHBsaWNhdGlvbi9tbXQtdXNkK3htbCcsCiAgICAgICAgJ211c2ljeG1sJyA9PiAnYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCt4bWwnLAogICAgICAgICdtdmInID0+ICdhcHBsaWNhdGlvbi94LW1zbWVkaWF2aWV3JywKICAgICAgICAnbXZ0JyA9PiAnYXBwbGljYXRpb24vdm5kLm1hcGJveC12ZWN0b3ItdGlsZScsCiAgICAgICAgJ213ZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tZmVyJywKICAgICAgICAnbXhmJyA9PiAnYXBwbGljYXRpb24vbXhmJywKICAgICAgICAnbXhsJyA9PiAnYXBwbGljYXRpb24vdm5kLnJlY29yZGFyZS5tdXNpY3htbCcsCiAgICAgICAgJ214bWYnID0+ICdhdWRpby9tb2JpbGUteG1mJywKICAgICAgICAnbXhtbCcgPT4gJ2FwcGxpY2F0aW9uL3h2K3htbCcsCiAgICAgICAgJ214cycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC50cmlzY2FwZS5teHMnLAogICAgICAgICdteHUnID0+ICd2aWRlby92bmQubXBlZ3VybCcsCiAgICAgICAgJ24tZ2FnZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2Uuc3ltYmlhbi5pbnN0YWxsJywKICAgICAgICAnbjMnID0+ICd0ZXh0L24zJywKICAgICAgICAnbmInID0+ICdhcHBsaWNhdGlvbi9tYXRoZW1hdGljYScsCiAgICAgICAgJ25icCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53b2xmcmFtLnBsYXllcicsCiAgICAgICAgJ25jJyA9PiAnYXBwbGljYXRpb24veC1uZXRjZGYnLAogICAgICAgICduY3gnID0+ICdhcHBsaWNhdGlvbi94LWR0Ym5jeCt4bWwnLAogICAgICAgICduZGpzb24nID0+ICdhcHBsaWNhdGlvbi94LW5kanNvbicsCiAgICAgICAgJ25mbycgPT4gJ3RleHQveC1uZm8nLAogICAgICAgICduZ2RhdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ub2tpYS5uLWdhZ2UuZGF0YScsCiAgICAgICAgJ25pdGYnID0+ICdhcHBsaWNhdGlvbi92bmQubml0ZicsCiAgICAgICAgJ25sdScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5uZXVyb2xhbmd1YWdlLm5sdScsCiAgICAgICAgJ25tbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5lbmxpdmVuJywKICAgICAgICAnbm5kJyA9PiAnYXBwbGljYXRpb24vdm5kLm5vYmxlbmV0LWRpcmVjdG9yeScsCiAgICAgICAgJ25ucycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ub2JsZW5ldC1zZWFsZXInLAogICAgICAgICdubncnID0+ICdhcHBsaWNhdGlvbi92bmQubm9ibGVuZXQtd2ViJywKICAgICAgICAnbnB4JyA9PiAnaW1hZ2Uvdm5kLm5ldC1mcHgnLAogICAgICAgICducScgPT4gJ2FwcGxpY2F0aW9uL24tcXVhZHMnLAogICAgICAgICduc2MnID0+ICdhcHBsaWNhdGlvbi94LWNvbmZlcmVuY2UnLAogICAgICAgICduc2YnID0+ICdhcHBsaWNhdGlvbi92bmQubG90dXMtbm90ZXMnLAogICAgICAgICdudCcgPT4gJ2FwcGxpY2F0aW9uL24tdHJpcGxlcycsCiAgICAgICAgJ250ZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5uaXRmJywKICAgICAgICAnbnVtYmVycycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5udW1iZXJzJywKICAgICAgICAnbnpiJyA9PiAnYXBwbGljYXRpb24veC1uemInLAogICAgICAgICdvYTInID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czInLAogICAgICAgICdvYTMnID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5czMnLAogICAgICAgICdvYXMnID0+ICdhcHBsaWNhdGlvbi92bmQuZnVqaXRzdS5vYXN5cycsCiAgICAgICAgJ29iZCcgPT4gJ2FwcGxpY2F0aW9uL3gtbXNiaW5kZXInLAogICAgICAgICdvYmd4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW5ibG94LmdhbWUreG1sJywKICAgICAgICAnb2JqJyA9PiAnbW9kZWwvb2JqJywKICAgICAgICAnb2RhJyA9PiAnYXBwbGljYXRpb24vb2RhJywKICAgICAgICAnb2RiJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5kYXRhYmFzZScsCiAgICAgICAgJ29kYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQnLAogICAgICAgICdvZGYnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LmZvcm11bGEnLAogICAgICAgICdvZGZ0JyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5mb3JtdWxhLXRlbXBsYXRlJywKICAgICAgICAnb2RnJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5ncmFwaGljcycsCiAgICAgICAgJ29kaScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuaW1hZ2UnLAogICAgICAgICdvZG0nID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtbWFzdGVyJywKICAgICAgICAnb2RwJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5wcmVzZW50YXRpb24nLAogICAgICAgICdvZHMnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnNwcmVhZHNoZWV0JywKICAgICAgICAnb2R0JyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0JywKICAgICAgICAnb2dhJyA9PiAnYXVkaW8vb2dnJywKICAgICAgICAnb2dleCcgPT4gJ21vZGVsL3ZuZC5vcGVuZ2V4JywKICAgICAgICAnb2dnJyA9PiAnYXVkaW8vb2dnJywKICAgICAgICAnb2d2JyA9PiAndmlkZW8vb2dnJywKICAgICAgICAnb2d4JyA9PiAnYXBwbGljYXRpb24vb2dnJywKICAgICAgICAnb21kb2MnID0+ICdhcHBsaWNhdGlvbi9vbWRvYyt4bWwnLAogICAgICAgICdvbmUnID0+ICdhcHBsaWNhdGlvbi9vbmVub3RlJywKICAgICAgICAnb25lYScgPT4gJ2FwcGxpY2F0aW9uL29uZW5vdGUnLAogICAgICAgICdvbmVwa2cnID0+ICdhcHBsaWNhdGlvbi9vbmVub3RlJywKICAgICAgICAnb25ldG1wJyA9PiAnYXBwbGljYXRpb24vb25lbm90ZScsCiAgICAgICAgJ29uZXRvYycgPT4gJ2FwcGxpY2F0aW9uL29uZW5vdGUnLAogICAgICAgICdvbmV0b2MyJyA9PiAnYXBwbGljYXRpb24vb25lbm90ZScsCiAgICAgICAgJ29wZicgPT4gJ2FwcGxpY2F0aW9uL29lYnBzLXBhY2thZ2UreG1sJywKICAgICAgICAnb3BtbCcgPT4gJ3RleHQveC1vcG1sJywKICAgICAgICAnb3ByYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wYWxtJywKICAgICAgICAnb3B1cycgPT4gJ2F1ZGlvL29nZycsCiAgICAgICAgJ29yZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5sb3R1cy1vcmdhbml6ZXInLAogICAgICAgICdvc2YnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLm9wZW5zY29yZWZvcm1hdCcsCiAgICAgICAgJ29zZnB2ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC55YW1haGEub3BlbnNjb3JlZm9ybWF0Lm9zZnB2Zyt4bWwnLAogICAgICAgICdvc20nID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnN0cmVldG1hcC5kYXRhK3htbCcsCiAgICAgICAgJ290YycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuY2hhcnQtdGVtcGxhdGUnLAogICAgICAgICdvdGYnID0+ICdmb250L290ZicsCiAgICAgICAgJ290ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuZ3JhcGhpY3MtdGVtcGxhdGUnLAogICAgICAgICdvdGgnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQtd2ViJywKICAgICAgICAnb3RpJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5pbWFnZS10ZW1wbGF0ZScsCiAgICAgICAgJ290cCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQucHJlc2VudGF0aW9uLXRlbXBsYXRlJywKICAgICAgICAnb3RzJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldC10ZW1wbGF0ZScsCiAgICAgICAgJ290dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQudGV4dC10ZW1wbGF0ZScsCiAgICAgICAgJ292YScgPT4gJ2FwcGxpY2F0aW9uL3gtdmlydHVhbGJveC1vdmEnLAogICAgICAgICdvdmYnID0+ICdhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtb3ZmJywKICAgICAgICAnb3dsJyA9PiAnYXBwbGljYXRpb24vcmRmK3htbCcsCiAgICAgICAgJ294cHMnID0+ICdhcHBsaWNhdGlvbi9veHBzJywKICAgICAgICAnb3h0JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW5vZmZpY2VvcmcuZXh0ZW5zaW9uJywKICAgICAgICAncCcgPT4gJ3RleHQveC1wYXNjYWwnLAogICAgICAgICdwMTAnID0+ICdhcHBsaWNhdGlvbi9wa2NzMTAnLAogICAgICAgICdwMTInID0+ICdhcHBsaWNhdGlvbi94LXBrY3MxMicsCiAgICAgICAgJ3AyMScgPT4gJ21vZGVsL3N0ZXAnLAogICAgICAgICdwN2EnID0+ICdhcHBsaWNhdGlvbi94LXBrY3M3LXNpZ25hdHVyZScsCiAgICAgICAgJ3A3YicgPT4gJ2FwcGxpY2F0aW9uL3gtcGtjczctY2VydGlmaWNhdGVzJywKICAgICAgICAncDdjJyA9PiAnYXBwbGljYXRpb24vcGtjczctbWltZScsCiAgICAgICAgJ3A3ZScgPT4gJ2FwcGxpY2F0aW9uL3BrY3M3LW1pbWUnLAogICAgICAgICdwN20nID0+ICdhcHBsaWNhdGlvbi9wa2NzNy1taW1lJywKICAgICAgICAncDdyJyA9PiAnYXBwbGljYXRpb24veC1wa2NzNy1jZXJ0cmVxcmVzcCcsCiAgICAgICAgJ3A3cycgPT4gJ2FwcGxpY2F0aW9uL3BrY3M3LXNpZ25hdHVyZScsCiAgICAgICAgJ3A4JyA9PiAnYXBwbGljYXRpb24vcGtjczgnLAogICAgICAgICdwYWMnID0+ICdhcHBsaWNhdGlvbi94LW5zLXByb3h5LWF1dG9jb25maWcnLAogICAgICAgICdwYWdlcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcHBsZS5wYWdlcycsCiAgICAgICAgJ3BhcnF1ZXQnID0+ICdhcHBsaWNhdGlvbi92bmQuYXBhY2hlLnBhcnF1ZXQnLAogICAgICAgICdwYXMnID0+ICd0ZXh0L3gtcGFzY2FsJywKICAgICAgICAncGF3JyA9PiAnYXBwbGljYXRpb24vdm5kLnBhd2FhZmlsZScsCiAgICAgICAgJ3BiZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wb3dlcmJ1aWxkZXI2JywKICAgICAgICAncGJtJyA9PiAnaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAnLAogICAgICAgICdwY2FwJyA9PiAnYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcCcsCiAgICAgICAgJ3BjZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1wY2YnLAogICAgICAgICdwY2wnID0+ICdhcHBsaWNhdGlvbi92bmQuaHAtcGNsJywKICAgICAgICAncGNseGwnID0+ICdhcHBsaWNhdGlvbi92bmQuaHAtcGNseGwnLAogICAgICAgICdwY3QnID0+ICdpbWFnZS94LXBpY3QnLAogICAgICAgICdwY3VybCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jdXJsLnBjdXJsJywKICAgICAgICAncGN4JyA9PiAnaW1hZ2Uvdm5kLnpicnVzaC5wY3gnLAogICAgICAgICdwZGInID0+ICdhcHBsaWNhdGlvbi92bmQucGFsbScsCiAgICAgICAgJ3BkZScgPT4gJ3RleHQveC1wcm9jZXNzaW5nJywKICAgICAgICAncGRmJyA9PiAnYXBwbGljYXRpb24vcGRmJywKICAgICAgICAncGVtJyA9PiAnYXBwbGljYXRpb24veC14NTA5LXVzZXItY2VydCcsCiAgICAgICAgJ3BmYScgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ3BmYicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ3BmbScgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC10eXBlMScsCiAgICAgICAgJ3BmcicgPT4gJ2FwcGxpY2F0aW9uL2ZvbnQtdGRwZnInLAogICAgICAgICdwZngnID0+ICdhcHBsaWNhdGlvbi94LXBrY3MxMicsCiAgICAgICAgJ3BnbScgPT4gJ2ltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCcsCiAgICAgICAgJ3BnbicgPT4gJ2FwcGxpY2F0aW9uL3gtY2hlc3MtcGduJywKICAgICAgICAncGdwJyA9PiAnYXBwbGljYXRpb24vcGdwLWVuY3J5cHRlZCcsCiAgICAgICAgJ3BoYXInID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdwaHAnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgJ3BocDMnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgJ3BocDQnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsCiAgICAgICAgJ3BocHMnID0+ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocC1zb3VyY2UnLAogICAgICAgICdwaHRtbCcgPT4gJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcGhwJywKICAgICAgICAncGljJyA9PiAnaW1hZ2UveC1waWN0JywKICAgICAgICAncGtnJyA9PiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJywKICAgICAgICAncGtpJyA9PiAnYXBwbGljYXRpb24vcGtpeGNtcCcsCiAgICAgICAgJ3BraXBhdGgnID0+ICdhcHBsaWNhdGlvbi9wa2l4LXBraXBhdGgnLAogICAgICAgICdwa3Bhc3MnID0+ICdhcHBsaWNhdGlvbi92bmQuYXBwbGUucGtwYXNzJywKICAgICAgICAncGwnID0+ICdhcHBsaWNhdGlvbi94LXBlcmwnLAogICAgICAgICdwbGInID0+ICdhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctbGFyZ2UnLAogICAgICAgICdwbGMnID0+ICdhcHBsaWNhdGlvbi92bmQubW9iaXVzLnBsYycsCiAgICAgICAgJ3BsZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wb2NrZXRsZWFybicsCiAgICAgICAgJ3BscycgPT4gJ2FwcGxpY2F0aW9uL3Bscyt4bWwnLAogICAgICAgICdwbScgPT4gJ2FwcGxpY2F0aW9uL3gtcGVybCcsCiAgICAgICAgJ3BtbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jdGMtcG9zbWwnLAogICAgICAgICdwbmcnID0+ICdpbWFnZS9wbmcnLAogICAgICAgICdwbm0nID0+ICdpbWFnZS94LXBvcnRhYmxlLWFueW1hcCcsCiAgICAgICAgJ3BvcnRwa2cnID0+ICdhcHBsaWNhdGlvbi92bmQubWFjcG9ydHMucG9ydHBrZycsCiAgICAgICAgJ3BvdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAncG90bScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnRlbXBsYXRlLm1hY3JvZW5hYmxlZC4xMicsCiAgICAgICAgJ3BvdHgnID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGUnLAogICAgICAgICdwcGEnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsCiAgICAgICAgJ3BwYW0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdwcGQnID0+ICdhcHBsaWNhdGlvbi92bmQuY3Vwcy1wcGQnLAogICAgICAgICdwcG0nID0+ICdpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCcsCiAgICAgICAgJ3BwcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAncHBzbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnNsaWRlc2hvdy5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdwcHN4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdycsCiAgICAgICAgJ3BwdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50JywKICAgICAgICAncHB0bScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50LnByZXNlbnRhdGlvbi5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICdwcHR4JyA9PiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsCiAgICAgICAgJ3BxYScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wYWxtJywKICAgICAgICAncHJjJyA9PiAnbW9kZWwvcHJjJywKICAgICAgICAncHJlJyA9PiAnYXBwbGljYXRpb24vdm5kLmxvdHVzLWZyZWVsYW5jZScsCiAgICAgICAgJ3ByZicgPT4gJ2FwcGxpY2F0aW9uL3BpY3MtcnVsZXMnLAogICAgICAgICdwcm92eCcgPT4gJ2FwcGxpY2F0aW9uL3Byb3ZlbmFuY2UreG1sJywKICAgICAgICAncHMnID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKICAgICAgICAncHNiJyA9PiAnYXBwbGljYXRpb24vdm5kLjNncHAucGljLWJ3LXNtYWxsJywKICAgICAgICAncHNkJyA9PiAnaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcCcsCiAgICAgICAgJ3BzZicgPT4gJ2FwcGxpY2F0aW9uL3gtZm9udC1saW51eC1wc2YnLAogICAgICAgICdwc2tjeG1sJyA9PiAnYXBwbGljYXRpb24vcHNrYyt4bWwnLAogICAgICAgICdwdGknID0+ICdpbWFnZS9wcnMucHRpJywKICAgICAgICAncHRpZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wdmkucHRpZDEnLAogICAgICAgICdwdWInID0+ICdhcHBsaWNhdGlvbi94LW1zcHVibGlzaGVyJywKICAgICAgICAncHYnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdwdmInID0+ICdhcHBsaWNhdGlvbi92bmQuM2dwcC5waWMtYnctdmFyJywKICAgICAgICAncHduJyA9PiAnYXBwbGljYXRpb24vdm5kLjNtLnBvc3QtaXQtbm90ZXMnLAogICAgICAgICdweGYnID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdweWEnID0+ICdhdWRpby92bmQubXMtcGxheXJlYWR5Lm1lZGlhLnB5YScsCiAgICAgICAgJ3B5bycgPT4gJ21vZGVsL3ZuZC5weXRoYS5weW94JywKICAgICAgICAncHlveCcgPT4gJ21vZGVsL3ZuZC5weXRoYS5weW94JywKICAgICAgICAncHl2JyA9PiAndmlkZW8vdm5kLm1zLXBsYXlyZWFkeS5tZWRpYS5weXYnLAogICAgICAgICdxYW0nID0+ICdhcHBsaWNhdGlvbi92bmQuZXBzb24ucXVpY2thbmltZScsCiAgICAgICAgJ3FibycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnR1LnFibycsCiAgICAgICAgJ3FmeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnR1LnFmeCcsCiAgICAgICAgJ3FwcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wdWJsaXNoYXJlLWRlbHRhLXRyZWUnLAogICAgICAgICdxdCcgPT4gJ3ZpZGVvL3F1aWNrdGltZScsCiAgICAgICAgJ3F3ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F3dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4YicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4bCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3F4dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5xdWFyay5xdWFya3hwcmVzcycsCiAgICAgICAgJ3JhJyA9PiAnYXVkaW8veC1yZWFsYXVkaW8nLAogICAgICAgICdyYW0nID0+ICdhdWRpby94LXBuLXJlYWxhdWRpbycsCiAgICAgICAgJ3JhbWwnID0+ICdhcHBsaWNhdGlvbi9yYW1sK3lhbWwnLAogICAgICAgICdyYXBkJyA9PiAnYXBwbGljYXRpb24vcm91dGUtYXBkK3htbCcsCiAgICAgICAgJ3JhcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5yYXInLAogICAgICAgICdyYXMnID0+ICdpbWFnZS94LWNtdS1yYXN0ZXInLAogICAgICAgICdyY3Byb2ZpbGUnID0+ICdhcHBsaWNhdGlvbi92bmQuaXB1bnBsdWdnZWQucmNwcm9maWxlJywKICAgICAgICAncmRmJyA9PiAnYXBwbGljYXRpb24vcmRmK3htbCcsCiAgICAgICAgJ3JkeicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kYXRhLXZpc2lvbi5yZHonLAogICAgICAgICdyZWxvJyA9PiAnYXBwbGljYXRpb24vcDJwLW92ZXJsYXkreG1sJywKICAgICAgICAncmVwJyA9PiAnYXBwbGljYXRpb24vdm5kLmJ1c2luZXNzb2JqZWN0cycsCiAgICAgICAgJ3JlcycgPT4gJ2FwcGxpY2F0aW9uL3gtZHRicmVzb3VyY2UreG1sJywKICAgICAgICAncmdiJyA9PiAnaW1hZ2UveC1yZ2InLAogICAgICAgICdyaWYnID0+ICdhcHBsaWNhdGlvbi9yZWdpbmZvK3htbCcsCiAgICAgICAgJ3JpcCcgPT4gJ2F1ZGlvL3ZuZC5yaXAnLAogICAgICAgICdyaXMnID0+ICdhcHBsaWNhdGlvbi94LXJlc2VhcmNoLWluZm8tc3lzdGVtcycsCiAgICAgICAgJ3JsJyA9PiAnYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMreG1sJywKICAgICAgICAncmxjJyA9PiAnaW1hZ2Uvdm5kLmZ1aml4ZXJveC5lZG1pY3MtcmxjJywKICAgICAgICAncmxkJyA9PiAnYXBwbGljYXRpb24vcmVzb3VyY2UtbGlzdHMtZGlmZit4bWwnLAogICAgICAgICdybScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ybi1yZWFsbWVkaWEnLAogICAgICAgICdybWknID0+ICdhdWRpby9taWRpJywKICAgICAgICAncm1wJyA9PiAnYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luJywKICAgICAgICAncm1zJyA9PiAnYXBwbGljYXRpb24vdm5kLmpjcC5qYXZhbWUubWlkbGV0LXJtcycsCiAgICAgICAgJ3JtdmInID0+ICdhcHBsaWNhdGlvbi92bmQucm4tcmVhbG1lZGlhLXZicicsCiAgICAgICAgJ3JuYycgPT4gJ2FwcGxpY2F0aW9uL3JlbGF4LW5nLWNvbXBhY3Qtc3ludGF4JywKICAgICAgICAncm5nJyA9PiAnYXBwbGljYXRpb24veG1sJywKICAgICAgICAncm9hJyA9PiAnYXBwbGljYXRpb24vcnBraS1yb2EnLAogICAgICAgICdyb2ZmJyA9PiAndGV4dC90cm9mZicsCiAgICAgICAgJ3JwOScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jbG9hbnRvLnJwOScsCiAgICAgICAgJ3JwbScgPT4gJ2FwcGxpY2F0aW9uL3gtcmVkaGF0LXBhY2thZ2UtbWFuYWdlcicsCiAgICAgICAgJ3Jwc3MnID0+ICdhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0cycsCiAgICAgICAgJ3Jwc3QnID0+ICdhcHBsaWNhdGlvbi92bmQubm9raWEucmFkaW8tcHJlc2V0JywKICAgICAgICAncnEnID0+ICdhcHBsaWNhdGlvbi9zcGFycWwtcXVlcnknLAogICAgICAgICdycycgPT4gJ2FwcGxpY2F0aW9uL3Jscy1zZXJ2aWNlcyt4bWwnLAogICAgICAgICdyc2EnID0+ICdhcHBsaWNhdGlvbi94LXBrY3M3JywKICAgICAgICAncnNhdCcgPT4gJ2FwcGxpY2F0aW9uL2F0c2MtcnNhdCt4bWwnLAogICAgICAgICdyc2QnID0+ICdhcHBsaWNhdGlvbi9yc2QreG1sJywKICAgICAgICAncnNoZWV0JyA9PiAnYXBwbGljYXRpb24vdXJjLXJlc3NoZWV0K3htbCcsCiAgICAgICAgJ3JzcycgPT4gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnLAogICAgICAgICdydGYnID0+ICd0ZXh0L3J0ZicsCiAgICAgICAgJ3J0eCcgPT4gJ3RleHQvcmljaHRleHQnLAogICAgICAgICdydW4nID0+ICdhcHBsaWNhdGlvbi94LW1ha2VzZWxmJywKICAgICAgICAncnVzZCcgPT4gJ2FwcGxpY2F0aW9uL3JvdXRlLXVzZCt4bWwnLAogICAgICAgICdydicgPT4gJ3ZpZGVvL3ZuZC5ybi1yZWFsdmlkZW8nLAogICAgICAgICdzJyA9PiAndGV4dC94LWFzbScsCiAgICAgICAgJ3MzbScgPT4gJ2F1ZGlvL3MzbScsCiAgICAgICAgJ3NhZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC55YW1haGEuc21hZi1hdWRpbycsCiAgICAgICAgJ3Nhc3MnID0+ICd0ZXh0L3gtc2FzcycsCiAgICAgICAgJ3NibWwnID0+ICdhcHBsaWNhdGlvbi9zYm1sK3htbCcsCiAgICAgICAgJ3NjJyA9PiAnYXBwbGljYXRpb24vdm5kLmlibS5zZWN1cmUtY29udGFpbmVyJywKICAgICAgICAnc2NkJyA9PiAnYXBwbGljYXRpb24veC1tc3NjaGVkdWxlJywKICAgICAgICAnc2NtJyA9PiAnYXBwbGljYXRpb24vdm5kLmxvdHVzLXNjcmVlbmNhbScsCiAgICAgICAgJ3NjcScgPT4gJ2FwcGxpY2F0aW9uL3NjdnAtY3YtcmVxdWVzdCcsCiAgICAgICAgJ3NjcycgPT4gJ2FwcGxpY2F0aW9uL3NjdnAtY3YtcmVzcG9uc2UnLAogICAgICAgICdzY3NzJyA9PiAndGV4dC94LXNjc3MnLAogICAgICAgICdzY3VybCcgPT4gJ3RleHQvdm5kLmN1cmwuc2N1cmwnLAogICAgICAgICdzZGEnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmRyYXcnLAogICAgICAgICdzZGMnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmNhbGMnLAogICAgICAgICdzZGQnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLmltcHJlc3MnLAogICAgICAgICdzZGtkJyA9PiAnYXBwbGljYXRpb24vdm5kLnNvbGVudC5zZGttK3htbCcsCiAgICAgICAgJ3Nka20nID0+ICdhcHBsaWNhdGlvbi92bmQuc29sZW50LnNka20reG1sJywKICAgICAgICAnc2RwJyA9PiAnYXBwbGljYXRpb24vc2RwJywKICAgICAgICAnc2R3JyA9PiAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXInLAogICAgICAgICdzZWEnID0+ICdhcHBsaWNhdGlvbi94LXNlYScsCiAgICAgICAgJ3NlZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zZWVtYWlsJywKICAgICAgICAnc2VlZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5mZHNuLnNlZWQnLAogICAgICAgICdzZW1hJyA9PiAnYXBwbGljYXRpb24vdm5kLnNlbWEnLAogICAgICAgICdzZW1kJyA9PiAnYXBwbGljYXRpb24vdm5kLnNlbWQnLAogICAgICAgICdzZW1mJyA9PiAnYXBwbGljYXRpb24vdm5kLnNlbWYnLAogICAgICAgICdzZW5tbHgnID0+ICdhcHBsaWNhdGlvbi9zZW5tbCt4bWwnLAogICAgICAgICdzZW5zbWx4JyA9PiAnYXBwbGljYXRpb24vc2Vuc21sK3htbCcsCiAgICAgICAgJ3NlcicgPT4gJ2FwcGxpY2F0aW9uL2phdmEtc2VyaWFsaXplZC1vYmplY3QnLAogICAgICAgICdzZXRwYXknID0+ICdhcHBsaWNhdGlvbi9zZXQtcGF5bWVudC1pbml0aWF0aW9uJywKICAgICAgICAnc2V0cmVnJyA9PiAnYXBwbGljYXRpb24vc2V0LXJlZ2lzdHJhdGlvbi1pbml0aWF0aW9uJywKICAgICAgICAnc2ZkLWhkc3R4JyA9PiAnYXBwbGljYXRpb24vdm5kLmh5ZHJvc3RhdGl4LnNvZi1kYXRhJywKICAgICAgICAnc2ZzJyA9PiAnYXBwbGljYXRpb24vdm5kLnNwb3RmaXJlLnNmcycsCiAgICAgICAgJ3NmdicgPT4gJ3RleHQveC1zZnYnLAogICAgICAgICdzZ2knID0+ICdpbWFnZS9zZ2knLAogICAgICAgICdzZ2wnID0+ICdhcHBsaWNhdGlvbi92bmQuc3RhcmRpdmlzaW9uLndyaXRlci1nbG9iYWwnLAogICAgICAgICdzZ20nID0+ICd0ZXh0L3NnbWwnLAogICAgICAgICdzZ21sJyA9PiAndGV4dC9zZ21sJywKICAgICAgICAnc2gnID0+ICdhcHBsaWNhdGlvbi94LXNoJywKICAgICAgICAnc2hhcicgPT4gJ2FwcGxpY2F0aW9uL3gtc2hhcicsCiAgICAgICAgJ3NoZXgnID0+ICd0ZXh0L3NoZXgnLAogICAgICAgICdzaGYnID0+ICdhcHBsaWNhdGlvbi9zaGYreG1sJywKICAgICAgICAnc2h0bWwnID0+ICd0ZXh0L2h0bWwnLAogICAgICAgICdzaWQnID0+ICdpbWFnZS94LW1yc2lkLWltYWdlJywKICAgICAgICAnc2lldmUnID0+ICdhcHBsaWNhdGlvbi9zaWV2ZScsCiAgICAgICAgJ3NpZycgPT4gJ2FwcGxpY2F0aW9uL3BncC1zaWduYXR1cmUnLAogICAgICAgICdzaWwnID0+ICdhdWRpby9zaWxrJywKICAgICAgICAnc2lsbycgPT4gJ21vZGVsL21lc2gnLAogICAgICAgICdzaXMnID0+ICdhcHBsaWNhdGlvbi92bmQuc3ltYmlhbi5pbnN0YWxsJywKICAgICAgICAnc2lzeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zeW1iaWFuLmluc3RhbGwnLAogICAgICAgICdzaXQnID0+ICdhcHBsaWNhdGlvbi94LXN0dWZmaXQnLAogICAgICAgICdzaXR4JyA9PiAnYXBwbGljYXRpb24veC1zdHVmZml0eCcsCiAgICAgICAgJ3NpdicgPT4gJ2FwcGxpY2F0aW9uL3NpZXZlJywKICAgICAgICAnc2tkJyA9PiAnYXBwbGljYXRpb24vdm5kLmtvYW4nLAogICAgICAgICdza20nID0+ICdhcHBsaWNhdGlvbi92bmQua29hbicsCiAgICAgICAgJ3NrcCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rb2FuJywKICAgICAgICAnc2t0JyA9PiAnYXBwbGljYXRpb24vdm5kLmtvYW4nLAogICAgICAgICdzbGRtJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQuc2xpZGUubWFjcm9lbmFibGVkLjEyJywKICAgICAgICAnc2xkeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5zbGlkZScsCiAgICAgICAgJ3NsaW0nID0+ICd0ZXh0L3NsaW0nLAogICAgICAgICdzbG0nID0+ICd0ZXh0L3NsaW0nLAogICAgICAgICdzbHMnID0+ICdhcHBsaWNhdGlvbi9yb3V0ZS1zLXRzaWQreG1sJywKICAgICAgICAnc2x0JyA9PiAnYXBwbGljYXRpb24vdm5kLmVwc29uLnNhbHQnLAogICAgICAgICdzbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdGVwbWFuaWEuc3RlcGNoYXJ0JywKICAgICAgICAnc21mJyA9PiAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi5tYXRoJywKICAgICAgICAnc21pJyA9PiAnYXBwbGljYXRpb24vc21pbCt4bWwnLAogICAgICAgICdzbWlsJyA9PiAnYXBwbGljYXRpb24vc21pbCt4bWwnLAogICAgICAgICdzbXYnID0+ICd2aWRlby94LXNtdicsCiAgICAgICAgJ3NtemlwJyA9PiAnYXBwbGljYXRpb24vdm5kLnN0ZXBtYW5pYS5wYWNrYWdlJywKICAgICAgICAnc25kJyA9PiAnYXVkaW8vYmFzaWMnLAogICAgICAgICdzbmYnID0+ICdhcHBsaWNhdGlvbi94LWZvbnQtc25mJywKICAgICAgICAnc28nID0+ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nLAogICAgICAgICdzcGMnID0+ICdhcHBsaWNhdGlvbi94LXBrY3M3LWNlcnRpZmljYXRlcycsCiAgICAgICAgJ3NwZHgnID0+ICd0ZXh0L3NwZHgnLAogICAgICAgICdzcGYnID0+ICdhcHBsaWNhdGlvbi92bmQueWFtYWhhLnNtYWYtcGhyYXNlJywKICAgICAgICAnc3BsJyA9PiAnYXBwbGljYXRpb24veC1mdXR1cmVzcGxhc2gnLAogICAgICAgICdzcG90JyA9PiAndGV4dC92bmQuaW4zZC5zcG90JywKICAgICAgICAnc3BwJyA9PiAnYXBwbGljYXRpb24vc2N2cC12cC1yZXNwb25zZScsCiAgICAgICAgJ3NwcScgPT4gJ2FwcGxpY2F0aW9uL3NjdnAtdnAtcmVxdWVzdCcsCiAgICAgICAgJ3NweCcgPT4gJ2F1ZGlvL29nZycsCiAgICAgICAgJ3NxbCcgPT4gJ2FwcGxpY2F0aW9uL3NxbCcsCiAgICAgICAgJ3NxbGl0ZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zcWxpdGUzJywKICAgICAgICAnc3FsaXRlMycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zcWxpdGUzJywKICAgICAgICAnc3JjJyA9PiAnYXBwbGljYXRpb24veC13YWlzLXNvdXJjZScsCiAgICAgICAgJ3NydCcgPT4gJ2FwcGxpY2F0aW9uL3gtc3VicmlwJywKICAgICAgICAnc3J1JyA9PiAnYXBwbGljYXRpb24vc3J1K3htbCcsCiAgICAgICAgJ3NyeCcgPT4gJ2FwcGxpY2F0aW9uL3NwYXJxbC1yZXN1bHRzK3htbCcsCiAgICAgICAgJ3NzZGwnID0+ICdhcHBsaWNhdGlvbi9zc2RsK3htbCcsCiAgICAgICAgJ3NzZScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5rb2Rhay1kZXNjcmlwdG9yJywKICAgICAgICAnc3NmJyA9PiAnYXBwbGljYXRpb24vdm5kLmVwc29uLnNzZicsCiAgICAgICAgJ3NzbWwnID0+ICdhcHBsaWNhdGlvbi9zc21sK3htbCcsCiAgICAgICAgJ3NzdCcgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgJ3N0JyA9PiAnYXBwbGljYXRpb24vdm5kLnNhaWxpbmd0cmFja2VyLnRyYWNrJywKICAgICAgICAnc3RjJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwuY2FsYy50ZW1wbGF0ZScsCiAgICAgICAgJ3N0ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLmRyYXcudGVtcGxhdGUnLAogICAgICAgICdzdGVwJyA9PiAnbW9kZWwvc3RlcCcsCiAgICAgICAgJ3N0ZicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53dC5zdGYnLAogICAgICAgICdzdGknID0+ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzLnRlbXBsYXRlJywKICAgICAgICAnc3RrJyA9PiAnYXBwbGljYXRpb24vaHlwZXJzdHVkaW8nLAogICAgICAgICdzdGwnID0+ICdtb2RlbC9zdGwnLAogICAgICAgICdzdHAnID0+ICdtb2RlbC9zdGVwJywKICAgICAgICAnc3RwbmMnID0+ICdtb2RlbC9zdGVwJywKICAgICAgICAnc3RweCcgPT4gJ21vZGVsL3N0ZXAreG1sJywKICAgICAgICAnc3RweHonID0+ICdtb2RlbC9zdGVwLXhtbCt6aXAnLAogICAgICAgICdzdHB6JyA9PiAnbW9kZWwvc3RlcCt6aXAnLAogICAgICAgICdzdHInID0+ICdhcHBsaWNhdGlvbi92bmQucGcuZm9ybWF0JywKICAgICAgICAnc3R3JyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwud3JpdGVyLnRlbXBsYXRlJywKICAgICAgICAnc3R5bCcgPT4gJ3RleHQvc3R5bHVzJywKICAgICAgICAnc3R5bHVzJyA9PiAndGV4dC9zdHlsdXMnLAogICAgICAgICdzdWInID0+ICdpbWFnZS92bmQuZHZiLnN1YnRpdGxlJywKICAgICAgICAnc3VzJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1cy1jYWxlbmRhcicsCiAgICAgICAgJ3N1c3AnID0+ICdhcHBsaWNhdGlvbi92bmQuc3VzLWNhbGVuZGFyJywKICAgICAgICAnc3Y0Y3BpbycgPT4gJ2FwcGxpY2F0aW9uL3gtc3Y0Y3BpbycsCiAgICAgICAgJ3N2NGNyYycgPT4gJ2FwcGxpY2F0aW9uL3gtc3Y0Y3JjJywKICAgICAgICAnc3ZjJyA9PiAnYXBwbGljYXRpb24vdm5kLmR2Yi5zZXJ2aWNlJywKICAgICAgICAnc3ZkJyA9PiAnYXBwbGljYXRpb24vdm5kLnN2ZCcsCiAgICAgICAgJ3N2ZycgPT4gJ2ltYWdlL3N2Zyt4bWwnLAogICAgICAgICdzdmd6JyA9PiAnaW1hZ2Uvc3ZnK3htbCcsCiAgICAgICAgJ3N3YScgPT4gJ2FwcGxpY2F0aW9uL3gtZGlyZWN0b3InLAogICAgICAgICdzd2YnID0+ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsCiAgICAgICAgJ3N3aScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5hcmlzdGFuZXR3b3Jrcy5zd2knLAogICAgICAgICdzd2lkdGFnJyA9PiAnYXBwbGljYXRpb24vc3dpZCt4bWwnLAogICAgICAgICdzeGMnID0+ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5jYWxjJywKICAgICAgICAnc3hkJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwuZHJhdycsCiAgICAgICAgJ3N4ZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlci5nbG9iYWwnLAogICAgICAgICdzeGknID0+ICdhcHBsaWNhdGlvbi92bmQuc3VuLnhtbC5pbXByZXNzJywKICAgICAgICAnc3htJyA9PiAnYXBwbGljYXRpb24vdm5kLnN1bi54bWwubWF0aCcsCiAgICAgICAgJ3N4dycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ueG1sLndyaXRlcicsCiAgICAgICAgJ3N5c3RlbXZlcmlmeScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5wcC5zeXN0ZW12ZXJpZnkreG1sJywKICAgICAgICAndCcgPT4gJ3RleHQvdHJvZmYnLAogICAgICAgICd0MycgPT4gJ2FwcGxpY2F0aW9uL3gtdDN2bS1pbWFnZScsCiAgICAgICAgJ3QzOCcgPT4gJ2ltYWdlL3QzOCcsCiAgICAgICAgJ3RhZ2xldCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5teW5mYycsCiAgICAgICAgJ3RhbycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC50YW8uaW50ZW50LW1vZHVsZS1hcmNoaXZlJywKICAgICAgICAndGFwJyA9PiAnaW1hZ2Uvdm5kLnRlbmNlbnQudGFwJywKICAgICAgICAndGFyJyA9PiAnYXBwbGljYXRpb24veC10YXInLAogICAgICAgICd0Y2FwJyA9PiAnYXBwbGljYXRpb24vdm5kLjNncHAyLnRjYXAnLAogICAgICAgICd0Y2wnID0+ICdhcHBsaWNhdGlvbi94LXRjbCcsCiAgICAgICAgJ3RkJyA9PiAnYXBwbGljYXRpb24vdXJjLXRhcmdldGRlc2MreG1sJywKICAgICAgICAndGVhY2hlcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zbWFydC50ZWFjaGVyJywKICAgICAgICAndGVpJyA9PiAnYXBwbGljYXRpb24vdGVpK3htbCcsCiAgICAgICAgJ3RlaWNvcnB1cycgPT4gJ2FwcGxpY2F0aW9uL3RlaSt4bWwnLAogICAgICAgICd0ZXgnID0+ICdhcHBsaWNhdGlvbi94LXRleCcsCiAgICAgICAgJ3RleGknID0+ICdhcHBsaWNhdGlvbi94LXRleGluZm8nLAogICAgICAgICd0ZXhpbmZvJyA9PiAnYXBwbGljYXRpb24veC10ZXhpbmZvJywKICAgICAgICAndGV4dCcgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICd0ZmknID0+ICdhcHBsaWNhdGlvbi90aHJhdWQreG1sJywKICAgICAgICAndGZtJyA9PiAnYXBwbGljYXRpb24veC10ZXgtdGZtJywKICAgICAgICAndGZ4JyA9PiAnaW1hZ2UvdGlmZi1meCcsCiAgICAgICAgJ3RnYScgPT4gJ2ltYWdlL3gtdGdhJywKICAgICAgICAndGd6JyA9PiAnYXBwbGljYXRpb24vZ3ppcCcsCiAgICAgICAgJ3RobXgnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtb2ZmaWNldGhlbWUnLAogICAgICAgICd0aWYnID0+ICdpbWFnZS90aWZmJywKICAgICAgICAndGlmZicgPT4gJ2ltYWdlL3RpZmYnLAogICAgICAgICd0aycgPT4gJ2FwcGxpY2F0aW9uL3gtdGNsJywKICAgICAgICAndG1vJyA9PiAnYXBwbGljYXRpb24vdm5kLnRtb2JpbGUtbGl2ZXR2JywKICAgICAgICAndG9tbCcgPT4gJ2FwcGxpY2F0aW9uL3RvbWwnLAogICAgICAgICd0b3JyZW50JyA9PiAnYXBwbGljYXRpb24veC1iaXR0b3JyZW50JywKICAgICAgICAndHBsJyA9PiAnYXBwbGljYXRpb24vdm5kLmdyb292ZS10b29sLXRlbXBsYXRlJywKICAgICAgICAndHB0JyA9PiAnYXBwbGljYXRpb24vdm5kLnRyaWQudHB0JywKICAgICAgICAndHInID0+ICd0ZXh0L3Ryb2ZmJywKICAgICAgICAndHJhJyA9PiAnYXBwbGljYXRpb24vdm5kLnRydWVhcHAnLAogICAgICAgICd0cmlnJyA9PiAnYXBwbGljYXRpb24vdHJpZycsCiAgICAgICAgJ3RybScgPT4gJ2FwcGxpY2F0aW9uL3gtbXN0ZXJtaW5hbCcsCiAgICAgICAgJ3RzJyA9PiAndmlkZW8vbXAydCcsCiAgICAgICAgJ3RzZCcgPT4gJ2FwcGxpY2F0aW9uL3RpbWVzdGFtcGVkLWRhdGEnLAogICAgICAgICd0c3YnID0+ICd0ZXh0L3RhYi1zZXBhcmF0ZWQtdmFsdWVzJywKICAgICAgICAndHRjJyA9PiAnZm9udC9jb2xsZWN0aW9uJywKICAgICAgICAndHRmJyA9PiAnZm9udC90dGYnLAogICAgICAgICd0dGwnID0+ICd0ZXh0L3R1cnRsZScsCiAgICAgICAgJ3R0bWwnID0+ICdhcHBsaWNhdGlvbi90dG1sK3htbCcsCiAgICAgICAgJ3R3ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zaW10ZWNoLW1pbmRtYXBwZXInLAogICAgICAgICd0d2RzJyA9PiAnYXBwbGljYXRpb24vdm5kLnNpbXRlY2gtbWluZG1hcHBlcicsCiAgICAgICAgJ3R4ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5nZW5vbWF0aXgudHV4ZWRvJywKICAgICAgICAndHhmJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vYml1cy50eGYnLAogICAgICAgICd0eHQnID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAndTMyJyA9PiAnYXBwbGljYXRpb24veC1hdXRob3J3YXJlLWJpbicsCiAgICAgICAgJ3UzZCcgPT4gJ21vZGVsL3UzZCcsCiAgICAgICAgJ3U4ZHNuJyA9PiAnbWVzc2FnZS9nbG9iYWwtZGVsaXZlcnktc3RhdHVzJywKICAgICAgICAndThoZHInID0+ICdtZXNzYWdlL2dsb2JhbC1oZWFkZXJzJywKICAgICAgICAndThtZG4nID0+ICdtZXNzYWdlL2dsb2JhbC1kaXNwb3NpdGlvbi1ub3RpZmljYXRpb24nLAogICAgICAgICd1OG1zZycgPT4gJ21lc3NhZ2UvZ2xvYmFsJywKICAgICAgICAndWJqJyA9PiAnYXBwbGljYXRpb24vdWJqc29uJywKICAgICAgICAndWRlYicgPT4gJ2FwcGxpY2F0aW9uL3gtZGViaWFuLXBhY2thZ2UnLAogICAgICAgICd1ZmQnID0+ICdhcHBsaWNhdGlvbi92bmQudWZkbCcsCiAgICAgICAgJ3VmZGwnID0+ICdhcHBsaWNhdGlvbi92bmQudWZkbCcsCiAgICAgICAgJ3VseCcgPT4gJ2FwcGxpY2F0aW9uL3gtZ2x1bHgnLAogICAgICAgICd1bWonID0+ICdhcHBsaWNhdGlvbi92bmQudW1hamluJywKICAgICAgICAndW5pdHl3ZWInID0+ICdhcHBsaWNhdGlvbi92bmQudW5pdHknLAogICAgICAgICd1bycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC51b21sK3htbCcsCiAgICAgICAgJ3VvbWwnID0+ICdhcHBsaWNhdGlvbi92bmQudW9tbCt4bWwnLAogICAgICAgICd1cmknID0+ICd0ZXh0L3VyaS1saXN0JywKICAgICAgICAndXJpcycgPT4gJ3RleHQvdXJpLWxpc3QnLAogICAgICAgICd1cmxzJyA9PiAndGV4dC91cmktbGlzdCcsCiAgICAgICAgJ3VzZGEnID0+ICdtb2RlbC92bmQudXNkYScsCiAgICAgICAgJ3VzZHonID0+ICdtb2RlbC92bmQudXNkeit6aXAnLAogICAgICAgICd1c3RhcicgPT4gJ2FwcGxpY2F0aW9uL3gtdXN0YXInLAogICAgICAgICd1dHonID0+ICdhcHBsaWNhdGlvbi92bmQudWlxLnRoZW1lJywKICAgICAgICAndXUnID0+ICd0ZXh0L3gtdXVlbmNvZGUnLAogICAgICAgICd1dmEnID0+ICdhdWRpby92bmQuZGVjZS5hdWRpbycsCiAgICAgICAgJ3V2ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEnLAogICAgICAgICd1dmYnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS5kYXRhJywKICAgICAgICAndXZnJyA9PiAnaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpYycsCiAgICAgICAgJ3V2aCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLmhkJywKICAgICAgICAndXZpJyA9PiAnaW1hZ2Uvdm5kLmRlY2UuZ3JhcGhpYycsCiAgICAgICAgJ3V2bScgPT4gJ3ZpZGVvL3ZuZC5kZWNlLm1vYmlsZScsCiAgICAgICAgJ3V2cCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnBkJywKICAgICAgICAndXZzJyA9PiAndmlkZW8vdm5kLmRlY2Uuc2QnLAogICAgICAgICd1dnQnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS50dG1sK3htbCcsCiAgICAgICAgJ3V2dScgPT4gJ3ZpZGVvL3ZuZC51dnZ1Lm1wNCcsCiAgICAgICAgJ3V2dicgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnZpZGVvJywKICAgICAgICAndXZ2YScgPT4gJ2F1ZGlvL3ZuZC5kZWNlLmF1ZGlvJywKICAgICAgICAndXZ2ZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLmRhdGEnLAogICAgICAgICd1dnZmJyA9PiAnYXBwbGljYXRpb24vdm5kLmRlY2UuZGF0YScsCiAgICAgICAgJ3V2dmcnID0+ICdpbWFnZS92bmQuZGVjZS5ncmFwaGljJywKICAgICAgICAndXZ2aCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLmhkJywKICAgICAgICAndXZ2aScgPT4gJ2ltYWdlL3ZuZC5kZWNlLmdyYXBoaWMnLAogICAgICAgICd1dnZtJyA9PiAndmlkZW8vdm5kLmRlY2UubW9iaWxlJywKICAgICAgICAndXZ2cCcgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnBkJywKICAgICAgICAndXZ2cycgPT4gJ3ZpZGVvL3ZuZC5kZWNlLnNkJywKICAgICAgICAndXZ2dCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLnR0bWwreG1sJywKICAgICAgICAndXZ2dScgPT4gJ3ZpZGVvL3ZuZC51dnZ1Lm1wNCcsCiAgICAgICAgJ3V2dnYnID0+ICd2aWRlby92bmQuZGVjZS52aWRlbycsCiAgICAgICAgJ3V2dngnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCcsCiAgICAgICAgJ3V2dnonID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS56aXAnLAogICAgICAgICd1dngnID0+ICdhcHBsaWNhdGlvbi92bmQuZGVjZS51bnNwZWNpZmllZCcsCiAgICAgICAgJ3V2eicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5kZWNlLnppcCcsCiAgICAgICAgJ3Zib3gnID0+ICdhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdmJveCcsCiAgICAgICAgJ3Zib3gtZXh0cGFjaycgPT4gJ2FwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12Ym94LWV4dHBhY2snLAogICAgICAgICd2Y2FyZCcgPT4gJ3RleHQvdmNhcmQnLAogICAgICAgICd2Y2QnID0+ICdhcHBsaWNhdGlvbi94LWNkbGluaycsCiAgICAgICAgJ3ZjZicgPT4gJ3RleHQveC12Y2FyZCcsCiAgICAgICAgJ3ZjZycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5ncm9vdmUtdmNhcmQnLAogICAgICAgICd2Y3MnID0+ICd0ZXh0L3gtdmNhbGVuZGFyJywKICAgICAgICAndmN4JyA9PiAnYXBwbGljYXRpb24vdm5kLnZjeCcsCiAgICAgICAgJ3ZkaScgPT4gJ2FwcGxpY2F0aW9uL3gtdmlydHVhbGJveC12ZGknLAogICAgICAgICd2ZHMnID0+ICdtb2RlbC92bmQuc2FwLnZkcycsCiAgICAgICAgJ3ZkeCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy12aXNpby52aWV3ZXInLAogICAgICAgICd2ZWMnID0+ICdhcHBsaWNhdGlvbi92ZWMreG1sJywKICAgICAgICAndmhkJyA9PiAnYXBwbGljYXRpb24veC12aXJ0dWFsYm94LXZoZCcsCiAgICAgICAgJ3ZpcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpb25hcnknLAogICAgICAgICd2aXYnID0+ICd2aWRlby92bmQudml2bycsCiAgICAgICAgJ3ZtZGsnID0+ICdhcHBsaWNhdGlvbi94LXZpcnR1YWxib3gtdm1kaycsCiAgICAgICAgJ3ZvYicgPT4gJ3ZpZGVvL3gtbXMtdm9iJywKICAgICAgICAndm9yJyA9PiAnYXBwbGljYXRpb24vdm5kLnN0YXJkaXZpc2lvbi53cml0ZXInLAogICAgICAgICd2b3gnID0+ICdhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluJywKICAgICAgICAndnJtbCcgPT4gJ21vZGVsL3ZybWwnLAogICAgICAgICd2c2QnID0+ICdhcHBsaWNhdGlvbi92bmQudmlzaW8nLAogICAgICAgICd2c2R4JyA9PiAnYXBwbGljYXRpb24vdm5kLnZpc2lvJywKICAgICAgICAndnNmJyA9PiAnYXBwbGljYXRpb24vdm5kLnZzZicsCiAgICAgICAgJ3ZzcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3ZzdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3ZzdycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3Z0ZicgPT4gJ2ltYWdlL3ZuZC52YWx2ZS5zb3VyY2UudGV4dHVyZScsCiAgICAgICAgJ3Z0dCcgPT4gJ3RleHQvdnR0JywKICAgICAgICAndnR1JyA9PiAnbW9kZWwvdm5kLnZ0dScsCiAgICAgICAgJ3Z0eCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC52aXNpbycsCiAgICAgICAgJ3Z4bWwnID0+ICdhcHBsaWNhdGlvbi92b2ljZXhtbCt4bWwnLAogICAgICAgICd3M2QnID0+ICdhcHBsaWNhdGlvbi94LWRpcmVjdG9yJywKICAgICAgICAnd2FkJyA9PiAnYXBwbGljYXRpb24veC1kb29tJywKICAgICAgICAnd2FkbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zdW4ud2FkbCt4bWwnLAogICAgICAgICd3YXInID0+ICdhcHBsaWNhdGlvbi9qYXZhLWFyY2hpdmUnLAogICAgICAgICd3YXNtJyA9PiAnYXBwbGljYXRpb24vd2FzbScsCiAgICAgICAgJ3dhdicgPT4gJ2F1ZGlvL3dhdicsCiAgICAgICAgJ3dheCcgPT4gJ2F1ZGlvL3gtbXMtd2F4JywKICAgICAgICAnd2JtcCcgPT4gJ2ltYWdlL3ZuZC53YXAud2JtcCcsCiAgICAgICAgJ3dicycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5jcml0aWNhbHRvb2xzLndicyt4bWwnLAogICAgICAgICd3YnhtbCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53YXAud2J4bWwnLAogICAgICAgICd3Y20nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtd29ya3MnLAogICAgICAgICd3ZGInID0+ICdhcHBsaWNhdGlvbi92bmQubXMtd29ya3MnLAogICAgICAgICd3ZHAnID0+ICdpbWFnZS92bmQubXMtcGhvdG8nLAogICAgICAgICd3ZWJhJyA9PiAnYXVkaW8vd2VibScsCiAgICAgICAgJ3dlYmFwcCcgPT4gJ2FwcGxpY2F0aW9uL3gtd2ViLWFwcC1tYW5pZmVzdCtqc29uJywKICAgICAgICAnd2VibScgPT4gJ3ZpZGVvL3dlYm0nLAogICAgICAgICd3ZWJtYW5pZmVzdCcgPT4gJ2FwcGxpY2F0aW9uL21hbmlmZXN0K2pzb24nLAogICAgICAgICd3ZWJwJyA9PiAnaW1hZ2Uvd2VicCcsCiAgICAgICAgJ3dnJyA9PiAnYXBwbGljYXRpb24vdm5kLnBtaS53aWRnZXQnLAogICAgICAgICd3Z3NsJyA9PiAndGV4dC93Z3NsJywKICAgICAgICAnd2d0JyA9PiAnYXBwbGljYXRpb24vd2lkZ2V0JywKICAgICAgICAnd2lmJyA9PiAnYXBwbGljYXRpb24vd2F0Y2hlcmluZm8reG1sJywKICAgICAgICAnd2tzJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXdvcmtzJywKICAgICAgICAnd20nID0+ICd2aWRlby94LW1zLXdtJywKICAgICAgICAnd21hJyA9PiAnYXVkaW8veC1tcy13bWEnLAogICAgICAgICd3bWQnID0+ICdhcHBsaWNhdGlvbi94LW1zLXdtZCcsCiAgICAgICAgJ3dtZicgPT4gJ2ltYWdlL3dtZicsCiAgICAgICAgJ3dtbCcgPT4gJ3RleHQvdm5kLndhcC53bWwnLAogICAgICAgICd3bWxjJyA9PiAnYXBwbGljYXRpb24vdm5kLndhcC53bWxjJywKICAgICAgICAnd21scycgPT4gJ3RleHQvdm5kLndhcC53bWxzY3JpcHQnLAogICAgICAgICd3bWxzYycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53YXAud21sc2NyaXB0YycsCiAgICAgICAgJ3dtdicgPT4gJ3ZpZGVvL3gtbXMtd212JywKICAgICAgICAnd214JyA9PiAndmlkZW8veC1tcy13bXgnLAogICAgICAgICd3bXonID0+ICdhcHBsaWNhdGlvbi94LW1zLXdteicsCiAgICAgICAgJ3dvZmYnID0+ICdmb250L3dvZmYnLAogICAgICAgICd3b2ZmMicgPT4gJ2ZvbnQvd29mZjInLAogICAgICAgICd3b3JkJyA9PiAnYXBwbGljYXRpb24vbXN3b3JkJywKICAgICAgICAnd3BkJyA9PiAnYXBwbGljYXRpb24vdm5kLndvcmRwZXJmZWN0JywKICAgICAgICAnd3BsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXdwbCcsCiAgICAgICAgJ3dwcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy13b3JrcycsCiAgICAgICAgJ3dxZCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC53cWQnLAogICAgICAgICd3cmknID0+ICdhcHBsaWNhdGlvbi94LW1zd3JpdGUnLAogICAgICAgICd3cmwnID0+ICdtb2RlbC92cm1sJywKICAgICAgICAnd3NjJyA9PiAnbWVzc2FnZS92bmQud2ZhLndzYycsCiAgICAgICAgJ3dzZGwnID0+ICdhcHBsaWNhdGlvbi93c2RsK3htbCcsCiAgICAgICAgJ3dzcG9saWN5JyA9PiAnYXBwbGljYXRpb24vd3Nwb2xpY3kreG1sJywKICAgICAgICAnd3RiJyA9PiAnYXBwbGljYXRpb24vdm5kLndlYnR1cmJvJywKICAgICAgICAnd3Z4JyA9PiAndmlkZW8veC1tcy13dngnLAogICAgICAgICd4MzInID0+ICdhcHBsaWNhdGlvbi94LWF1dGhvcndhcmUtYmluJywKICAgICAgICAneDNkJyA9PiAnbW9kZWwveDNkK3htbCcsCiAgICAgICAgJ3gzZGInID0+ICdtb2RlbC94M2QrZmFzdGluZm9zZXQnLAogICAgICAgICd4M2RieicgPT4gJ21vZGVsL3gzZCtiaW5hcnknLAogICAgICAgICd4M2R2JyA9PiAnbW9kZWwveDNkLXZybWwnLAogICAgICAgICd4M2R2eicgPT4gJ21vZGVsL3gzZCt2cm1sJywKICAgICAgICAneDNkeicgPT4gJ21vZGVsL3gzZCt4bWwnLAogICAgICAgICd4X2InID0+ICdtb2RlbC92bmQucGFyYXNvbGlkLnRyYW5zbWl0LmJpbmFyeScsCiAgICAgICAgJ3hfdCcgPT4gJ21vZGVsL3ZuZC5wYXJhc29saWQudHJhbnNtaXQudGV4dCcsCiAgICAgICAgJ3hhbWwnID0+ICdhcHBsaWNhdGlvbi94YW1sK3htbCcsCiAgICAgICAgJ3hhcCcgPT4gJ2FwcGxpY2F0aW9uL3gtc2lsdmVybGlnaHQtYXBwJywKICAgICAgICAneGFyJyA9PiAnYXBwbGljYXRpb24vdm5kLnhhcmEnLAogICAgICAgICd4YXYnID0+ICdhcHBsaWNhdGlvbi94Y2FwLWF0dCt4bWwnLAogICAgICAgICd4YmFwJyA9PiAnYXBwbGljYXRpb24veC1tcy14YmFwJywKICAgICAgICAneGJkJyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MuYmluZGVyJywKICAgICAgICAneGJtJyA9PiAnaW1hZ2UveC14Yml0bWFwJywKICAgICAgICAneGNhJyA9PiAnYXBwbGljYXRpb24veGNhcC1jYXBzK3htbCcsCiAgICAgICAgJ3hjcycgPT4gJ2FwcGxpY2F0aW9uL2NhbGVuZGFyK3htbCcsCiAgICAgICAgJ3hkY2YnID0+ICdhcHBsaWNhdGlvbi92bmQuZ292LnNrLnhtbGRhdGFjb250YWluZXIreG1sJywKICAgICAgICAneGRmJyA9PiAnYXBwbGljYXRpb24veGNhcC1kaWZmK3htbCcsCiAgICAgICAgJ3hkbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zeW5jbWwuZG0reG1sJywKICAgICAgICAneGRwJyA9PiAnYXBwbGljYXRpb24vdm5kLmFkb2JlLnhkcCt4bWwnLAogICAgICAgICd4ZHNzYycgPT4gJ2FwcGxpY2F0aW9uL2Rzc2MreG1sJywKICAgICAgICAneGR3JyA9PiAnYXBwbGljYXRpb24vdm5kLmZ1aml4ZXJveC5kb2N1d29ya3MnLAogICAgICAgICd4ZWwnID0+ICdhcHBsaWNhdGlvbi94Y2FwLWVsK3htbCcsCiAgICAgICAgJ3hlbmMnID0+ICdhcHBsaWNhdGlvbi94ZW5jK3htbCcsCiAgICAgICAgJ3hlcicgPT4gJ2FwcGxpY2F0aW9uL3BhdGNoLW9wcy1lcnJvcit4bWwnLAogICAgICAgICd4ZmRmJyA9PiAnYXBwbGljYXRpb24veGZkZicsCiAgICAgICAgJ3hmZGwnID0+ICdhcHBsaWNhdGlvbi92bmQueGZkbCcsCiAgICAgICAgJ3hodCcgPT4gJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsCiAgICAgICAgJ3hodG0nID0+ICdhcHBsaWNhdGlvbi92bmQucHdnLXhodG1sLXByaW50K3htbCcsCiAgICAgICAgJ3hodG1sJyA9PiAnYXBwbGljYXRpb24veGh0bWwreG1sJywKICAgICAgICAneGh2bWwnID0+ICdhcHBsaWNhdGlvbi94dit4bWwnLAogICAgICAgICd4aWYnID0+ICdpbWFnZS92bmQueGlmZicsCiAgICAgICAgJ3hsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAneGxhJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAneGxhbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbC5hZGRpbi5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICd4bGMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLAogICAgICAgICd4bGYnID0+ICdhcHBsaWNhdGlvbi94bGlmZit4bWwnLAogICAgICAgICd4bG0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLAogICAgICAgICd4bHMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLAogICAgICAgICd4bHNiJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0LmJpbmFyeS5tYWNyb2VuYWJsZWQuMTInLAogICAgICAgICd4bHNtJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsLnNoZWV0Lm1hY3JvZW5hYmxlZC4xMicsCiAgICAgICAgJ3hsc3gnID0+ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsCiAgICAgICAgJ3hsdCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsCiAgICAgICAgJ3hsdG0nID0+ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwudGVtcGxhdGUubWFjcm9lbmFibGVkLjEyJywKICAgICAgICAneGx0eCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlJywKICAgICAgICAneGx3JyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAneG0nID0+ICdhdWRpby94bScsCiAgICAgICAgJ3htbCcgPT4gJ2FwcGxpY2F0aW9uL3htbCcsCiAgICAgICAgJ3hucycgPT4gJ2FwcGxpY2F0aW9uL3hjYXAtbnMreG1sJywKICAgICAgICAneG8nID0+ICdhcHBsaWNhdGlvbi92bmQub2xwYy1zdWdhcicsCiAgICAgICAgJ3hvcCcgPT4gJ2FwcGxpY2F0aW9uL3hvcCt4bWwnLAogICAgICAgICd4cGknID0+ICdhcHBsaWNhdGlvbi94LXhwaW5zdGFsbCcsCiAgICAgICAgJ3hwbCcgPT4gJ2FwcGxpY2F0aW9uL3hwcm9jK3htbCcsCiAgICAgICAgJ3hwbScgPT4gJ2ltYWdlL3gteHBpeG1hcCcsCiAgICAgICAgJ3hwcicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pcy14cHInLAogICAgICAgICd4cHMnID0+ICdhcHBsaWNhdGlvbi92bmQubXMteHBzZG9jdW1lbnQnLAogICAgICAgICd4cHcnID0+ICdhcHBsaWNhdGlvbi92bmQuaW50ZXJjb24uZm9ybW5ldCcsCiAgICAgICAgJ3hweCcgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5pbnRlcmNvbi5mb3JtbmV0JywKICAgICAgICAneHNkJyA9PiAnYXBwbGljYXRpb24veG1sJywKICAgICAgICAneHNmJyA9PiAnYXBwbGljYXRpb24vcHJzLnhzZit4bWwnLAogICAgICAgICd4c2wnID0+ICdhcHBsaWNhdGlvbi94c2x0K3htbCcsCiAgICAgICAgJ3hzbHQnID0+ICdhcHBsaWNhdGlvbi94c2x0K3htbCcsCiAgICAgICAgJ3hzbScgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5zeW5jbWwreG1sJywKICAgICAgICAneHNwZicgPT4gJ2FwcGxpY2F0aW9uL3hzcGYreG1sJywKICAgICAgICAneHVsJyA9PiAnYXBwbGljYXRpb24vdm5kLm1vemlsbGEueHVsK3htbCcsCiAgICAgICAgJ3h2bScgPT4gJ2FwcGxpY2F0aW9uL3h2K3htbCcsCiAgICAgICAgJ3h2bWwnID0+ICdhcHBsaWNhdGlvbi94dit4bWwnLAogICAgICAgICd4d2QnID0+ICdpbWFnZS94LXh3aW5kb3dkdW1wJywKICAgICAgICAneHl6JyA9PiAnY2hlbWljYWwveC14eXonLAogICAgICAgICd4eicgPT4gJ2FwcGxpY2F0aW9uL3gteHonLAogICAgICAgICd5YW1sJyA9PiAndGV4dC95YW1sJywKICAgICAgICAneWFuZycgPT4gJ2FwcGxpY2F0aW9uL3lhbmcnLAogICAgICAgICd5aW4nID0+ICdhcHBsaWNhdGlvbi95aW4reG1sJywKICAgICAgICAneW1sJyA9PiAndGV4dC95YW1sJywKICAgICAgICAneW1wJyA9PiAndGV4dC94LXN1c2UteW1wJywKICAgICAgICAneicgPT4gJ2FwcGxpY2F0aW9uL3gtY29tcHJlc3MnLAogICAgICAgICd6MScgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6MicgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6MycgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NCcgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NScgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NicgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6NycgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6OCcgPT4gJ2FwcGxpY2F0aW9uL3gtem1hY2hpbmUnLAogICAgICAgICd6YXonID0+ICdhcHBsaWNhdGlvbi92bmQuenphenouZGVjayt4bWwnLAogICAgICAgICd6aXAnID0+ICdhcHBsaWNhdGlvbi96aXAnLAogICAgICAgICd6aXInID0+ICdhcHBsaWNhdGlvbi92bmQuenVsJywKICAgICAgICAnemlyeicgPT4gJ2FwcGxpY2F0aW9uL3ZuZC56dWwnLAogICAgICAgICd6bW0nID0+ICdhcHBsaWNhdGlvbi92bmQuaGFuZGhlbGQtZW50ZXJ0YWlubWVudCt4bWwnLAogICAgICAgICd6c2gnID0+ICd0ZXh0L3gtc2NyaXB0enNoJywKICAgIF07CgogICAgLyoqCiAgICAgKiBEZXRlcm1pbmVzIHRoZSBtaW1ldHlwZSBvZiBhIGZpbGUgYnkgbG9va2luZyBhdCBpdHMgZXh0ZW5zaW9uLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2pzaHR0cC9taW1lLWRiL21hc3Rlci9kYi5qc29uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnJvbUZpbGVuYW1lKHN0cmluZyAkZmlsZW5hbWUpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmZyb21FeHRlbnNpb24ocGF0aGluZm8oJGZpbGVuYW1lLCBQQVRISU5GT19FWFRFTlNJT04pKTsKICAgIH0KCiAgICAvKioKICAgICAqIE1hcHMgYSBmaWxlIGV4dGVuc2lvbnMgdG8gYSBtaW1ldHlwZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9qc2h0dHAvbWltZS1kYi9tYXN0ZXIvZGIuanNvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21FeHRlbnNpb24oc3RyaW5nICRleHRlbnNpb24pOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok1JTUVfVFlQRVNbc3RydG9sb3dlcigkZXh0ZW5zaW9uKV0gPz8gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/MultipartStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gdGhhdCB3aGVuIHJlYWQgcmV0dXJucyBieXRlcyBmb3IgYSBzdHJlYW1pbmcgbXVsdGlwYXJ0IG9yCiAqIG11bHRpcGFydC9mb3JtLWRhdGEgc3RyZWFtLgogKi8KZmluYWwgY2xhc3MgTXVsdGlwYXJ0U3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIHVzZSBTdHJlYW1EZWNvcmF0b3JUcmFpdDsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJGJvdW5kYXJ5OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICAkZWxlbWVudHMgQXJyYXkgb2YgYXNzb2NpYXRpdmUgYXJyYXlzLCBlYWNoIGNvbnRhaW5pbmcgYQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgIm5hbWUiIGtleSBtYXBwaW5nIHRvIHRoZSBmb3JtIGZpZWxkLAogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgYSByZXF1aXJlZCAiY29udGVudHMiIGtleSBtYXBwaW5nIHRvIGFueQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgYWNjZXB0ZWQgYnkgVXRpbHM6OnN0cmVhbUZvcigpIChzY2FsYXIsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCByZXNvdXJjZSwgU3RyZWFtSW50ZXJmYWNlLCBJdGVyYXRvciwgb3IKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlKSwgb3IgYW4gYXJyYXkgZm9yIG5lc3RlZCBleHBhbnNpb24uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25hbCBrZXlzIGluY2x1ZGUgImhlYWRlcnMiIChhc3NvY2lhdGl2ZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgb2YgY3VzdG9tIGhlYWRlcnMpIGFuZCAiZmlsZW5hbWUiIChzdHJpbmcKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHNlbmQgYXMgdGhlIGZpbGVuYW1lIGluIHRoZSBwYXJ0KS4KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIFdoZW4gImNvbnRlbnRzIiBpcyBhbiBhcnJheSwgaXQgaXMgcmVjdXJzaXZlbHkKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkIGludG8gbXVsdGlwbGUgZmllbGRzIHVzaW5nIGJyYWNrZXQgbm90YXRpb24KICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuLCBuYW1lWzBdW2tleV0pLiBFbXB0eSBhcnJheXMgcHJvZHVjZSBubyBmaWVsZHMuCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgImZpbGVuYW1lIiBhbmQgImhlYWRlcnMiIG9wdGlvbnMgY2Fubm90IGJlIHVzZWQKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggYXJyYXkgY29udGVudHMuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRib3VuZGFyeSBZb3UgY2FuIG9wdGlvbmFsbHkgcHJvdmlkZSBhIHNwZWNpZmljIGJvdW5kYXJ5CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkZWxlbWVudHMgPSBbXSwgP3N0cmluZyAkYm91bmRhcnkgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5ib3VuZGFyeSA9ICRib3VuZGFyeSA/OiBiaW4yaGV4KHJhbmRvbV9ieXRlcygyMCkpOwogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkdGhpcy0+Y3JlYXRlU3RyZWFtKCRlbGVtZW50cyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvdW5kYXJ5KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Ym91bmRhcnk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV3JpdGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCB0aGUgaGVhZGVycyBuZWVkZWQgYmVmb3JlIHRyYW5zZmVycmluZyB0aGUgY29udGVudCBvZiBhIFBPU1QgZmlsZQogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkaGVhZGVycwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGdldEhlYWRlcnMoYXJyYXkgJGhlYWRlcnMpOiBzdHJpbmcKICAgIHsKICAgICAgICAkc3RyID0gJyc7CiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgJHN0ciAuPSAieyRrZXl9OiB7JHZhbHVlfVxyXG4iOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICItLXskdGhpcy0+Ym91bmRhcnl9XHJcbiIudHJpbSgkc3RyKS4iXHJcblxyXG4iOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIHRoZSBhZ2dyZWdhdGUgc3RyZWFtIHRoYXQgd2lsbCBiZSB1c2VkIHRvIHVwbG9hZCB0aGUgUE9TVCBkYXRhCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oYXJyYXkgJGVsZW1lbnRzID0gW10pOiBTdHJlYW1JbnRlcmZhY2UKICAgIHsKICAgICAgICAkc3RyZWFtID0gbmV3IEFwcGVuZFN0cmVhbSgpOwoKICAgICAgICBmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsZW1lbnQpIHsKICAgICAgICAgICAgaWYgKCFpc19hcnJheSgkZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcVW5leHBlY3RlZFZhbHVlRXhjZXB0aW9uKCdBbiBhcnJheSBpcyBleHBlY3RlZCcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5hZGRFbGVtZW50KCRzdHJlYW0sICRlbGVtZW50KTsKICAgICAgICB9CgogICAgICAgIC8vIEFkZCB0aGUgdHJhaWxpbmcgYm91bmRhcnkgd2l0aCBDUkxGCiAgICAgICAgJHN0cmVhbS0+YWRkU3RyZWFtKFV0aWxzOjpzdHJlYW1Gb3IoIi0teyR0aGlzLT5ib3VuZGFyeX0tLVxyXG4iKSk7CgogICAgICAgIHJldHVybiAkc3RyZWFtOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkRWxlbWVudChBcHBlbmRTdHJlYW0gJHN0cmVhbSwgYXJyYXkgJGVsZW1lbnQpOiB2b2lkCiAgICB7CiAgICAgICAgZm9yZWFjaCAoWydjb250ZW50cycsICduYW1lJ10gYXMgJGtleSkgewogICAgICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiQSAneyRrZXl9JyBrZXkgaXMgcmVxdWlyZWQiKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGVsZW1lbnRbJ25hbWUnXSkgJiYgIWlzX2ludCgkZWxlbWVudFsnbmFtZSddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigiVGhlICduYW1lJyBrZXkgbXVzdCBiZSBhIHN0cmluZyBvciBpbnRlZ2VyIik7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfYXJyYXkoJGVsZW1lbnRbJ2NvbnRlbnRzJ10pKSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdmaWxlbmFtZScsICRlbGVtZW50KSB8fCBhcnJheV9rZXlfZXhpc3RzKCdoZWFkZXJzJywgJGVsZW1lbnQpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiVGhlICdmaWxlbmFtZScgYW5kICdoZWFkZXJzJyBvcHRpb25zIGNhbm5vdCBiZSB1c2VkIHdoZW4gJ2NvbnRlbnRzJyBpcyBhbiBhcnJheSIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR0aGlzLT5hZGROZXN0ZWRFbGVtZW50cygkc3RyZWFtLCAkZWxlbWVudFsnY29udGVudHMnXSwgKHN0cmluZykgJGVsZW1lbnRbJ25hbWUnXSk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkZWxlbWVudFsnY29udGVudHMnXSA9IFV0aWxzOjpzdHJlYW1Gb3IoJGVsZW1lbnRbJ2NvbnRlbnRzJ10pOwoKICAgICAgICBpZiAoZW1wdHkoJGVsZW1lbnRbJ2ZpbGVuYW1lJ10pKSB7CiAgICAgICAgICAgICR1cmkgPSAkZWxlbWVudFsnY29udGVudHMnXS0+Z2V0TWV0YWRhdGEoJ3VyaScpOwogICAgICAgICAgICBpZiAoJHVyaSAmJiBcaXNfc3RyaW5nKCR1cmkpICYmIFxzdWJzdHIoJHVyaSwgMCwgNikgIT09ICdwaHA6Ly8nICYmIFxzdWJzdHIoJHVyaSwgMCwgNykgIT09ICdkYXRhOi8vJykgewogICAgICAgICAgICAgICAgJGVsZW1lbnRbJ2ZpbGVuYW1lJ10gPSAkdXJpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBbJGJvZHksICRoZWFkZXJzXSA9ICR0aGlzLT5jcmVhdGVFbGVtZW50KAogICAgICAgICAgICAoc3RyaW5nKSAkZWxlbWVudFsnbmFtZSddLAogICAgICAgICAgICAkZWxlbWVudFsnY29udGVudHMnXSwKICAgICAgICAgICAgJGVsZW1lbnRbJ2ZpbGVuYW1lJ10gPz8gbnVsbCwKICAgICAgICAgICAgJGVsZW1lbnRbJ2hlYWRlcnMnXSA/PyBbXQogICAgICAgICk7CgogICAgICAgICRzdHJlYW0tPmFkZFN0cmVhbShVdGlsczo6c3RyZWFtRm9yKCR0aGlzLT5nZXRIZWFkZXJzKCRoZWFkZXJzKSkpOwogICAgICAgICRzdHJlYW0tPmFkZFN0cmVhbSgkYm9keSk7CiAgICAgICAgJHN0cmVhbS0+YWRkU3RyZWFtKFV0aWxzOjpzdHJlYW1Gb3IoIlxyXG4iKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWN1cnNpdmVseSBleHBhbmQgYXJyYXkgY29udGVudHMgaW50byBtdWx0aXBsZSBmb3JtIGZpZWxkcy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXk8YXJyYXkta2V5LCBtaXhlZD4gJGNvbnRlbnRzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYWRkTmVzdGVkRWxlbWVudHMoQXBwZW5kU3RyZWFtICRzdHJlYW0sIGFycmF5ICRjb250ZW50cywgc3RyaW5nICRyb290KTogdm9pZAogICAgewogICAgICAgIGZvcmVhY2ggKCRjb250ZW50cyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAgICAgICAkZmllbGROYW1lID0gJHJvb3QgPT09ICcnID8gc3ByaW50ZignWyVzXScsIChzdHJpbmcpICRrZXkpIDogc3ByaW50ZignJXNbJXNdJywgJHJvb3QsIChzdHJpbmcpICRrZXkpOwoKICAgICAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5hZGROZXN0ZWRFbGVtZW50cygkc3RyZWFtLCAkdmFsdWUsICRmaWVsZE5hbWUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmFkZEVsZW1lbnQoJHN0cmVhbSwgWyduYW1lJyA9PiAkZmllbGROYW1lLCAnY29udGVudHMnID0+ICR2YWx1ZV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRoZWFkZXJzCiAgICAgKgogICAgICogQHJldHVybiBhcnJheXswOiBTdHJlYW1JbnRlcmZhY2UsIDE6IHN0cmluZ1tdfQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnQoc3RyaW5nICRuYW1lLCBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgP3N0cmluZyAkZmlsZW5hbWUsIGFycmF5ICRoZWFkZXJzKTogYXJyYXkKICAgIHsKICAgICAgICAvLyBTZXQgYSBkZWZhdWx0IGNvbnRlbnQtZGlzcG9zaXRpb24gaGVhZGVyIGlmIG9uZSB3YXMgbm8gcHJvdmlkZWQKICAgICAgICAkZGlzcG9zaXRpb24gPSBzZWxmOjpnZXRIZWFkZXIoJGhlYWRlcnMsICdjb250ZW50LWRpc3Bvc2l0aW9uJyk7CiAgICAgICAgaWYgKCEkZGlzcG9zaXRpb24pIHsKICAgICAgICAgICAgJGhlYWRlcnNbJ0NvbnRlbnQtRGlzcG9zaXRpb24nXSA9ICgkZmlsZW5hbWUgPT09ICcwJyB8fCAkZmlsZW5hbWUpCiAgICAgICAgICAgICAgICA/IHNwcmludGYoCiAgICAgICAgICAgICAgICAgICAgJ2Zvcm0tZGF0YTsgbmFtZT0iJXMiOyBmaWxlbmFtZT0iJXMiJywKICAgICAgICAgICAgICAgICAgICAkbmFtZSwKICAgICAgICAgICAgICAgICAgICBiYXNlbmFtZSgkZmlsZW5hbWUpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICA6ICJmb3JtLWRhdGE7IG5hbWU9XCJ7JG5hbWV9XCIiOwogICAgICAgIH0KCiAgICAgICAgLy8gU2V0IGEgZGVmYXVsdCBjb250ZW50LWxlbmd0aCBoZWFkZXIgaWYgb25lIHdhcyBubyBwcm92aWRlZAogICAgICAgICRsZW5ndGggPSBzZWxmOjpnZXRIZWFkZXIoJGhlYWRlcnMsICdjb250ZW50LWxlbmd0aCcpOwogICAgICAgIGlmICghJGxlbmd0aCkgewogICAgICAgICAgICBpZiAoJGxlbmd0aCA9ICRzdHJlYW0tPmdldFNpemUoKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSAoc3RyaW5nKSAkbGVuZ3RoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAvLyBTZXQgYSBkZWZhdWx0IENvbnRlbnQtVHlwZSBpZiBvbmUgd2FzIG5vdCBzdXBwbGllZAogICAgICAgICR0eXBlID0gc2VsZjo6Z2V0SGVhZGVyKCRoZWFkZXJzLCAnY29udGVudC10eXBlJyk7CiAgICAgICAgaWYgKCEkdHlwZSAmJiAoJGZpbGVuYW1lID09PSAnMCcgfHwgJGZpbGVuYW1lKSkgewogICAgICAgICAgICAkaGVhZGVyc1snQ29udGVudC1UeXBlJ10gPSBNaW1lVHlwZTo6ZnJvbUZpbGVuYW1lKCRmaWxlbmFtZSkgPz8gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWyRzdHJlYW0sICRoZWFkZXJzXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkaGVhZGVycwogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRIZWFkZXIoYXJyYXkgJGhlYWRlcnMsIHN0cmluZyAka2V5KTogP3N0cmluZwogICAgewogICAgICAgICRsb3dlcmNhc2VIZWFkZXIgPSBzdHJ0b2xvd2VyKCRrZXkpOwogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgIGlmIChzdHJ0b2xvd2VyKChzdHJpbmcpICRrKSA9PT0gJGxvd2VyY2FzZUhlYWRlcikgewogICAgICAgICAgICAgICAgcmV0dXJuICR2OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbnVsbDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/NoSeekStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRoYXQgcHJldmVudHMgYSBzdHJlYW0gZnJvbSBiZWluZyBzZWVrZWQuCiAqLwpmaW5hbCBjbGFzcyBOb1NlZWtTdHJlYW0gaW1wbGVtZW50cyBTdHJlYW1JbnRlcmZhY2UKewogICAgdXNlIFN0cmVhbURlY29yYXRvclRyYWl0OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCk6IHZvaWQKICAgIHsKICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCBzZWVrIGEgTm9TZWVrU3RyZWFtJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/PumpStream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBhIHJlYWQgb25seSBzdHJlYW0gdGhhdCBwdW1wcyBkYXRhIGZyb20gYSBQSFAgY2FsbGFibGUuCiAqCiAqIFdoZW4gaW52b2tpbmcgdGhlIHByb3ZpZGVkIGNhbGxhYmxlLCB0aGUgUHVtcFN0cmVhbSB3aWxsIHBhc3MgdGhlIGFtb3VudCBvZgogKiBkYXRhIHJlcXVlc3RlZCB0byByZWFkIHRvIHRoZSBjYWxsYWJsZS4gVGhlIGNhbGxhYmxlIGNhbiBjaG9vc2UgdG8gaWdub3JlCiAqIHRoaXMgdmFsdWUgYW5kIHJldHVybiBmZXdlciBvciBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLiBBbnkgZXh0cmEgZGF0YQogKiByZXR1cm5lZCBieSB0aGUgcHJvdmlkZWQgY2FsbGFibGUgaXMgYnVmZmVyZWQgaW50ZXJuYWxseSB1bnRpbCBkcmFpbmVkIHVzaW5nCiAqIHRoZSByZWFkKCkgZnVuY3Rpb24gb2YgdGhlIFB1bXBTdHJlYW0uIFRoZSBwcm92aWRlZCBjYWxsYWJsZSBNVVNUIHJldHVybgogKiBmYWxzZSB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZWFkLgogKi8KZmluYWwgY2xhc3MgUHVtcFN0cmVhbSBpbXBsZW1lbnRzIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKiogQHZhciBjYWxsYWJsZShpbnQpOiAoc3RyaW5nfGZhbHNlfG51bGwpfG51bGwgKi8KICAgIHByaXZhdGUgJHNvdXJjZTsKCiAgICAvKiogQHZhciBpbnR8bnVsbCAqLwogICAgcHJpdmF0ZSAkc2l6ZTsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJHRlbGxQb3MgPSAwOwoKICAgIC8qKiBAdmFyIGFycmF5ICovCiAgICBwcml2YXRlICRtZXRhZGF0YTsKCiAgICAvKiogQHZhciBCdWZmZXJTdHJlYW0gKi8KICAgIHByaXZhdGUgJGJ1ZmZlcjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBjYWxsYWJsZShpbnQpOiAoc3RyaW5nfGZhbHNlfG51bGwpICAkc291cmNlICBTb3VyY2Ugb2YgdGhlIHN0cmVhbSBkYXRhLiBUaGUgY2FsbGFibGUgTUFZCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXB0IGFuIGludGVnZXIgYXJndW1lbnQgdXNlZCB0byBjb250cm9sIHRoZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFtb3VudCBvZiBkYXRhIHRvIHJldHVybi4gVGhlIGNhbGxhYmxlIE1VU1QKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSBzdHJpbmcgd2hlbiBjYWxsZWQsIG9yIGZhbHNlfG51bGwgb24gZXJyb3IKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBFT0YuCiAgICAgKiBAcGFyYW0gYXJyYXl7c2l6ZT86IGludCwgbWV0YWRhdGE/OiBhcnJheX0gJG9wdGlvbnMgU3RyZWFtIG9wdGlvbnM6CiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBtZXRhZGF0YTogSGFzaCBvZiBtZXRhZGF0YSB0byB1c2Ugd2l0aCBzdHJlYW0uCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBzaXplOiBTaXplIG9mIHRoZSBzdHJlYW0sIGlmIGtub3duLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoY2FsbGFibGUgJHNvdXJjZSwgYXJyYXkgJG9wdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICAkdGhpcy0+c291cmNlID0gJHNvdXJjZTsKICAgICAgICAkdGhpcy0+c2l6ZSA9ICRvcHRpb25zWydzaXplJ10gPz8gbnVsbDsKICAgICAgICAkdGhpcy0+bWV0YWRhdGEgPSAkb3B0aW9uc1snbWV0YWRhdGEnXSA/PyBbXTsKICAgICAgICAkdGhpcy0+YnVmZmVyID0gbmV3IEJ1ZmZlclN0cmVhbSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBVdGlsczo6Y29weVRvU3RyaW5nKCR0aGlzKTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPj0gNzA0MDApIHsKICAgICAgICAgICAgICAgIHRocm93ICRlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRyaWdnZXJfZXJyb3Ioc3ByaW50ZignJXM6Ol9fdG9TdHJpbmcgZXhjZXB0aW9uOiAlcycsIHNlbGY6OmNsYXNzLCAoc3RyaW5nKSAkZSksIEVfVVNFUl9FUlJPUik7CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmRldGFjaCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKQogICAgewogICAgICAgICR0aGlzLT50ZWxsUG9zID0gMDsKICAgICAgICAkdGhpcy0+c291cmNlID0gbnVsbDsKCiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKTogP2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2l6ZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnRlbGxQb3M7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zb3VyY2UgPT09IG51bGw7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV3aW5kKCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c2VlaygwKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2Vlaygkb2Zmc2V0LCAkd2hlbmNlID0gU0VFS19TRVQpOiB2b2lkCiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3Qgc2VlayBhIFB1bXBTdHJlYW0nKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkc3RyaW5nKTogaW50CiAgICB7CiAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdDYW5ub3Qgd3JpdGUgdG8gYSBQdW1wU3RyZWFtJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkZGF0YSA9ICR0aGlzLT5idWZmZXItPnJlYWQoJGxlbmd0aCk7CiAgICAgICAgJHJlYWRMZW4gPSBzdHJsZW4oJGRhdGEpOwogICAgICAgICR0aGlzLT50ZWxsUG9zICs9ICRyZWFkTGVuOwogICAgICAgICRyZW1haW5pbmcgPSAkbGVuZ3RoIC0gJHJlYWRMZW47CgogICAgICAgIGlmICgkcmVtYWluaW5nKSB7CiAgICAgICAgICAgICR0aGlzLT5wdW1wKCRyZW1haW5pbmcpOwogICAgICAgICAgICAkZGF0YSAuPSAkdGhpcy0+YnVmZmVyLT5yZWFkKCRyZW1haW5pbmcpOwogICAgICAgICAgICAkdGhpcy0+dGVsbFBvcyArPSBzdHJsZW4oJGRhdGEpIC0gJHJlYWRMZW47CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZwogICAgewogICAgICAgICRyZXN1bHQgPSAnJzsKICAgICAgICB3aGlsZSAoISR0aGlzLT5lb2YoKSkgewogICAgICAgICAgICAkcmVzdWx0IC49ICR0aGlzLT5yZWFkKDEwMDAwMDApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRhZGF0YSgka2V5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoISRrZXkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5tZXRhZGF0YTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+bWV0YWRhdGFbJGtleV0gPz8gbnVsbDsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHB1bXAoaW50ICRsZW5ndGgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5zb3VyY2UgIT09IG51bGwpIHsKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgJGRhdGEgPSAoJHRoaXMtPnNvdXJjZSkoJGxlbmd0aCk7CiAgICAgICAgICAgICAgICBpZiAoJGRhdGEgPT09IGZhbHNlIHx8ICRkYXRhID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnNvdXJjZSA9IG51bGw7CgogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICR0aGlzLT5idWZmZXItPndyaXRlKCRkYXRhKTsKICAgICAgICAgICAgICAgICRsZW5ndGggLT0gc3RybGVuKCRkYXRhKTsKICAgICAgICAgICAgfSB3aGlsZSAoJGxlbmd0aCA+IDApOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Query.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCmZpbmFsIGNsYXNzIFF1ZXJ5CnsKICAgIC8qKgogICAgICogUGFyc2UgYSBxdWVyeSBzdHJpbmcgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheS4KICAgICAqCiAgICAgKiBJZiBtdWx0aXBsZSB2YWx1ZXMgYXJlIGZvdW5kIGZvciB0aGUgc2FtZSBrZXksIHRoZSB2YWx1ZSBvZiB0aGF0IGtleQogICAgICogdmFsdWUgcGFpciB3aWxsIGJlY29tZSBhbiBhcnJheS4gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBwYXJzZSBuZXN0ZWQKICAgICAqIFBIUCBzdHlsZSBhcnJheXMgaW50byBhbiBhc3NvY2lhdGl2ZSBhcnJheSAoZS5nLiwgYGZvb1thXT0xJmZvb1tiXT0yYAogICAgICogd2lsbCBiZSBwYXJzZWQgaW50byBgWydmb29bYV0nID0+ICcxJywgJ2Zvb1tiXScgPT4gJzInXSlgLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgICAkc3RyICAgICAgICAgUXVlcnkgc3RyaW5nIHRvIHBhcnNlCiAgICAgKiBAcGFyYW0gaW50fGJvb2wgJHVybEVuY29kaW5nIEhvdyB0aGUgcXVlcnkgc3RyaW5nIGlzIGVuY29kZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwYXJzZShzdHJpbmcgJHN0ciwgJHVybEVuY29kaW5nID0gdHJ1ZSk6IGFycmF5CiAgICB7CiAgICAgICAgJHJlc3VsdCA9IFtdOwoKICAgICAgICBpZiAoJHN0ciA9PT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHVybEVuY29kaW5nID09PSB0cnVlKSB7CiAgICAgICAgICAgICRkZWNvZGVyID0gZnVuY3Rpb24gKCR2YWx1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHJhd3VybGRlY29kZShzdHJfcmVwbGFjZSgnKycsICcgJywgKHN0cmluZykgJHZhbHVlKSk7CiAgICAgICAgICAgIH07CiAgICAgICAgfSBlbHNlaWYgKCR1cmxFbmNvZGluZyA9PT0gUEhQX1FVRVJZX1JGQzM5ODYpIHsKICAgICAgICAgICAgJGRlY29kZXIgPSAncmF3dXJsZGVjb2RlJzsKICAgICAgICB9IGVsc2VpZiAoJHVybEVuY29kaW5nID09PSBQSFBfUVVFUllfUkZDMTczOCkgewogICAgICAgICAgICAkZGVjb2RlciA9ICd1cmxkZWNvZGUnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRkZWNvZGVyID0gZnVuY3Rpb24gKCRzdHIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAkc3RyOwogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoZXhwbG9kZSgnJicsICRzdHIpIGFzICRrdnApIHsKICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnPScsICRrdnAsIDIpOwogICAgICAgICAgICAka2V5ID0gJGRlY29kZXIoJHBhcnRzWzBdKTsKICAgICAgICAgICAgJHZhbHVlID0gaXNzZXQoJHBhcnRzWzFdKSA/ICRkZWNvZGVyKCRwYXJ0c1sxXSkgOiBudWxsOwogICAgICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGtleSwgJHJlc3VsdCkpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbJGtleV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRyZXN1bHRbJGtleV0pKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlc3VsdFska2V5XSA9IFskcmVzdWx0WyRrZXldXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRyZXN1bHRbJGtleV1bXSA9ICR2YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBCdWlsZCBhIHF1ZXJ5IHN0cmluZyBmcm9tIGFuIGFycmF5IG9mIGtleSB2YWx1ZSBwYWlycy4KICAgICAqCiAgICAgKiBUaGlzIGZ1bmN0aW9uIGNhbiB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiBgcGFyc2UoKWAgdG8gYnVpbGQgYSBxdWVyeQogICAgICogc3RyaW5nLiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IG1vZGlmeSB0aGUgcHJvdmlkZWQga2V5cyB3aGVuIGFuIGFycmF5IGlzCiAgICAgKiBlbmNvdW50ZXJlZCAobGlrZSBgaHR0cF9idWlsZF9xdWVyeSgpYCB3b3VsZCkuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICAkcGFyYW1zICAgICAgICAgICBRdWVyeSBzdHJpbmcgcGFyYW1ldGVycy4KICAgICAqIEBwYXJhbSBpbnR8ZmFsc2UgJGVuY29kaW5nICAgICAgICAgU2V0IHRvIGZhbHNlIHRvIG5vdCBlbmNvZGUsCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBIUF9RVUVSWV9SRkMzOTg2IHRvIGVuY29kZSB1c2luZwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRkMzOTg2LCBvciBQSFBfUVVFUllfUkZDMTczOCB0bwogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGUgdXNpbmcgUkZDMTczOC4KICAgICAqIEBwYXJhbSBib29sICAgICAgJHRyZWF0Qm9vbHNBc0ludHMgU2V0IHRvIHRydWUgdG8gZW5jb2RlIGFzIDAvMSwgYW5kCiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIGFzIGZhbHNlL3RydWUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGQoYXJyYXkgJHBhcmFtcywgJGVuY29kaW5nID0gUEhQX1FVRVJZX1JGQzM5ODYsIGJvb2wgJHRyZWF0Qm9vbHNBc0ludHMgPSB0cnVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkcGFyYW1zKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgIGlmICgkZW5jb2RpbmcgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICRlbmNvZGVyID0gZnVuY3Rpb24gKHN0cmluZyAkc3RyKTogc3RyaW5nIHsKICAgICAgICAgICAgICAgIHJldHVybiAkc3RyOwogICAgICAgICAgICB9OwogICAgICAgIH0gZWxzZWlmICgkZW5jb2RpbmcgPT09IFBIUF9RVUVSWV9SRkMzOTg2KSB7CiAgICAgICAgICAgICRlbmNvZGVyID0gJ3Jhd3VybGVuY29kZSc7CiAgICAgICAgfSBlbHNlaWYgKCRlbmNvZGluZyA9PT0gUEhQX1FVRVJZX1JGQzE3MzgpIHsKICAgICAgICAgICAgJGVuY29kZXIgPSAndXJsZW5jb2RlJzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCB0eXBlJyk7CiAgICAgICAgfQoKICAgICAgICAkY2FzdEJvb2wgPSAkdHJlYXRCb29sc0FzSW50cyA/IHN0YXRpYyBmdW5jdGlvbiAoJHYpIHsgcmV0dXJuIChpbnQpICR2OyB9IDogc3RhdGljIGZ1bmN0aW9uICgkdikgeyByZXR1cm4gJHYgPyAndHJ1ZScgOiAnZmFsc2UnOyB9OwoKICAgICAgICAkcXMgPSAnJzsKICAgICAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgICRrID0gJGVuY29kZXIoKHN0cmluZykgJGspOwogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCR2KSkgewogICAgICAgICAgICAgICAgJHFzIC49ICRrOwogICAgICAgICAgICAgICAgJHYgPSBpc19ib29sKCR2KSA/ICRjYXN0Qm9vbCgkdikgOiAkdjsKICAgICAgICAgICAgICAgIGlmICgkdiAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICRxcyAuPSAnPScuJGVuY29kZXIoKHN0cmluZykgJHYpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJHFzIC49ICcmJzsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR2IGFzICR2dikgewogICAgICAgICAgICAgICAgICAgICRxcyAuPSAkazsKICAgICAgICAgICAgICAgICAgICAkdnYgPSBpc19ib29sKCR2dikgPyAkY2FzdEJvb2woJHZ2KSA6ICR2djsKICAgICAgICAgICAgICAgICAgICBpZiAoJHZ2ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRxcyAuPSAnPScuJGVuY29kZXIoKHN0cmluZykgJHZ2KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJHFzIC49ICcmJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRxcyA/IChzdHJpbmcpIHN1YnN0cigkcXMsIDAsIC0xKSA6ICcnOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Request.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFBTUi03IHJlcXVlc3QgaW1wbGVtZW50YXRpb24uCiAqLwpjbGFzcyBSZXF1ZXN0IGltcGxlbWVudHMgUmVxdWVzdEludGVyZmFjZQp7CiAgICB1c2UgTWVzc2FnZVRyYWl0OwoKICAgIC8qKiBAdmFyIHN0cmluZyAqLwogICAgcHJpdmF0ZSAkbWV0aG9kOwoKICAgIC8qKiBAdmFyIHN0cmluZ3xudWxsICovCiAgICBwcml2YXRlICRyZXF1ZXN0VGFyZ2V0OwoKICAgIC8qKiBAdmFyIFVyaUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkdXJpOwoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbWV0aG9kICBIVFRQIG1ldGhvZAogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgICAgICAgICAgICAgICAgICAkdXJpICAgICBVUkkKICAgICAqIEBwYXJhbSAoc3RyaW5nfHN0cmluZ1tdKVtdICAgICAgICAgICAgICAgICAgJGhlYWRlcnMgUmVxdWVzdCBoZWFkZXJzCiAgICAgKiBAcGFyYW0gc3RyaW5nfHJlc291cmNlfFN0cmVhbUludGVyZmFjZXxudWxsICRib2R5ICAgIFJlcXVlc3QgYm9keQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmVyc2lvbiBQcm90b2NvbCB2ZXJzaW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBzdHJpbmcgJG1ldGhvZCwKICAgICAgICAkdXJpLAogICAgICAgIGFycmF5ICRoZWFkZXJzID0gW10sCiAgICAgICAgJGJvZHkgPSBudWxsLAogICAgICAgIHN0cmluZyAkdmVyc2lvbiA9ICcxLjEnCiAgICApIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0TWV0aG9kKCRtZXRob2QpOwogICAgICAgIGlmICghJHVyaSBpbnN0YW5jZW9mIFVyaUludGVyZmFjZSkgewogICAgICAgICAgICAkdXJpID0gbmV3IFVyaSgkdXJpKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5tZXRob2QgPSBzdHJ0b3VwcGVyKCRtZXRob2QpOwogICAgICAgICR0aGlzLT51cmkgPSAkdXJpOwogICAgICAgICR0aGlzLT5zZXRIZWFkZXJzKCRoZWFkZXJzKTsKICAgICAgICAkdGhpcy0+cHJvdG9jb2wgPSAkdmVyc2lvbjsKCiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+aGVhZGVyTmFtZXNbJ2hvc3QnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnVwZGF0ZUhvc3RGcm9tVXJpKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJvZHkgIT09ICcnICYmICRib2R5ICE9PSBudWxsKSB7CiAgICAgICAgICAgICR0aGlzLT5zdHJlYW0gPSBVdGlsczo6c3RyZWFtRm9yKCRib2R5KTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlcXVlc3RUYXJnZXQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5yZXF1ZXN0VGFyZ2V0ICE9PSBudWxsKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdFRhcmdldDsKICAgICAgICB9CgogICAgICAgICR0YXJnZXQgPSAkdGhpcy0+dXJpLT5nZXRQYXRoKCk7CiAgICAgICAgaWYgKCR0YXJnZXQgPT09ICcnKSB7CiAgICAgICAgICAgICR0YXJnZXQgPSAnLyc7CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+dXJpLT5nZXRRdWVyeSgpICE9ICcnKSB7CiAgICAgICAgICAgICR0YXJnZXQgLj0gJz8nLiR0aGlzLT51cmktPmdldFF1ZXJ5KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRhcmdldDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFJlcXVlc3RUYXJnZXQoJHJlcXVlc3RUYXJnZXQpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKHByZWdfbWF0Y2goJyNccyMnLCAkcmVxdWVzdFRhcmdldCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICdJbnZhbGlkIHJlcXVlc3QgdGFyZ2V0IHByb3ZpZGVkOyBjYW5ub3QgY29udGFpbiB3aGl0ZXNwYWNlJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnJlcXVlc3RUYXJnZXQgPSAkcmVxdWVzdFRhcmdldDsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGhvZCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1ldGhvZDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aE1ldGhvZCgkbWV0aG9kKTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgICR0aGlzLT5hc3NlcnRNZXRob2QoJG1ldGhvZCk7CiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPm1ldGhvZCA9IHN0cnRvdXBwZXIoJG1ldGhvZCk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVcmkoKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT51cmk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVcmkoVXJpSW50ZXJmYWNlICR1cmksICRwcmVzZXJ2ZUhvc3QgPSBmYWxzZSk6IFJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoJHVyaSA9PT0gJHRoaXMtPnVyaSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+dXJpID0gJHVyaTsKCiAgICAgICAgaWYgKCEkcHJlc2VydmVIb3N0IHx8ICFpc3NldCgkdGhpcy0+aGVhZGVyTmFtZXNbJ2hvc3QnXSkpIHsKICAgICAgICAgICAgJG5ldy0+dXBkYXRlSG9zdEZyb21VcmkoKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdXBkYXRlSG9zdEZyb21VcmkoKTogdm9pZAogICAgewogICAgICAgICRob3N0ID0gJHRoaXMtPnVyaS0+Z2V0SG9zdCgpOwoKICAgICAgICBpZiAoJGhvc3QgPT0gJycpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKCgkcG9ydCA9ICR0aGlzLT51cmktPmdldFBvcnQoKSkgIT09IG51bGwpIHsKICAgICAgICAgICAgJGhvc3QgLj0gJzonLiRwb3J0OwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5oZWFkZXJOYW1lc1snaG9zdCddKSkgewogICAgICAgICAgICAkaGVhZGVyID0gJHRoaXMtPmhlYWRlck5hbWVzWydob3N0J107CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGhlYWRlciA9ICdIb3N0JzsKICAgICAgICAgICAgJHRoaXMtPmhlYWRlck5hbWVzWydob3N0J10gPSAnSG9zdCc7CiAgICAgICAgfQogICAgICAgIC8vIEVuc3VyZSBIb3N0IGlzIHRoZSBmaXJzdCBoZWFkZXIuCiAgICAgICAgLy8gU2VlOiBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzcyMzAjc2VjdGlvbi01LjQKICAgICAgICAkdGhpcy0+aGVhZGVycyA9IFskaGVhZGVyID0+IFskaG9zdF1dICsgJHRoaXMtPmhlYWRlcnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJG1ldGhvZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGFzc2VydE1ldGhvZCgkbWV0aG9kKTogdm9pZAogICAgewogICAgICAgIGlmICghaXNfc3RyaW5nKCRtZXRob2QpIHx8ICRtZXRob2QgPT09ICcnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ01ldGhvZCBtdXN0IGJlIGEgbm9uLWVtcHR5IHN0cmluZy4nKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Response.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2U7CgovKioKICogUFNSLTcgcmVzcG9uc2UgaW1wbGVtZW50YXRpb24uCiAqLwpjbGFzcyBSZXNwb25zZSBpbXBsZW1lbnRzIFJlc3BvbnNlSW50ZXJmYWNlCnsKICAgIHVzZSBNZXNzYWdlVHJhaXQ7CgogICAgLyoqIE1hcCBvZiBzdGFuZGFyZCBIVFRQIHN0YXR1cyBjb2RlL3JlYXNvbiBwaHJhc2VzICovCiAgICBwcml2YXRlIGNvbnN0IFBIUkFTRVMgPSBbCiAgICAgICAgMTAwID0+ICdDb250aW51ZScsCiAgICAgICAgMTAxID0+ICdTd2l0Y2hpbmcgUHJvdG9jb2xzJywKICAgICAgICAxMDIgPT4gJ1Byb2Nlc3NpbmcnLAogICAgICAgIDIwMCA9PiAnT0snLAogICAgICAgIDIwMSA9PiAnQ3JlYXRlZCcsCiAgICAgICAgMjAyID0+ICdBY2NlcHRlZCcsCiAgICAgICAgMjAzID0+ICdOb24tQXV0aG9yaXRhdGl2ZSBJbmZvcm1hdGlvbicsCiAgICAgICAgMjA0ID0+ICdObyBDb250ZW50JywKICAgICAgICAyMDUgPT4gJ1Jlc2V0IENvbnRlbnQnLAogICAgICAgIDIwNiA9PiAnUGFydGlhbCBDb250ZW50JywKICAgICAgICAyMDcgPT4gJ011bHRpLXN0YXR1cycsCiAgICAgICAgMjA4ID0+ICdBbHJlYWR5IFJlcG9ydGVkJywKICAgICAgICAzMDAgPT4gJ011bHRpcGxlIENob2ljZXMnLAogICAgICAgIDMwMSA9PiAnTW92ZWQgUGVybWFuZW50bHknLAogICAgICAgIDMwMiA9PiAnRm91bmQnLAogICAgICAgIDMwMyA9PiAnU2VlIE90aGVyJywKICAgICAgICAzMDQgPT4gJ05vdCBNb2RpZmllZCcsCiAgICAgICAgMzA1ID0+ICdVc2UgUHJveHknLAogICAgICAgIDMwNiA9PiAnU3dpdGNoIFByb3h5JywKICAgICAgICAzMDcgPT4gJ1RlbXBvcmFyeSBSZWRpcmVjdCcsCiAgICAgICAgMzA4ID0+ICdQZXJtYW5lbnQgUmVkaXJlY3QnLAogICAgICAgIDQwMCA9PiAnQmFkIFJlcXVlc3QnLAogICAgICAgIDQwMSA9PiAnVW5hdXRob3JpemVkJywKICAgICAgICA0MDIgPT4gJ1BheW1lbnQgUmVxdWlyZWQnLAogICAgICAgIDQwMyA9PiAnRm9yYmlkZGVuJywKICAgICAgICA0MDQgPT4gJ05vdCBGb3VuZCcsCiAgICAgICAgNDA1ID0+ICdNZXRob2QgTm90IEFsbG93ZWQnLAogICAgICAgIDQwNiA9PiAnTm90IEFjY2VwdGFibGUnLAogICAgICAgIDQwNyA9PiAnUHJveHkgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAogICAgICAgIDQwOCA9PiAnUmVxdWVzdCBUaW1lLW91dCcsCiAgICAgICAgNDA5ID0+ICdDb25mbGljdCcsCiAgICAgICAgNDEwID0+ICdHb25lJywKICAgICAgICA0MTEgPT4gJ0xlbmd0aCBSZXF1aXJlZCcsCiAgICAgICAgNDEyID0+ICdQcmVjb25kaXRpb24gRmFpbGVkJywKICAgICAgICA0MTMgPT4gJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScsCiAgICAgICAgNDE0ID0+ICdSZXF1ZXN0LVVSSSBUb28gTGFyZ2UnLAogICAgICAgIDQxNSA9PiAnVW5zdXBwb3J0ZWQgTWVkaWEgVHlwZScsCiAgICAgICAgNDE2ID0+ICdSZXF1ZXN0ZWQgcmFuZ2Ugbm90IHNhdGlzZmlhYmxlJywKICAgICAgICA0MTcgPT4gJ0V4cGVjdGF0aW9uIEZhaWxlZCcsCiAgICAgICAgNDE4ID0+ICdJXCdtIGEgdGVhcG90JywKICAgICAgICA0MjIgPT4gJ1VucHJvY2Vzc2FibGUgRW50aXR5JywKICAgICAgICA0MjMgPT4gJ0xvY2tlZCcsCiAgICAgICAgNDI0ID0+ICdGYWlsZWQgRGVwZW5kZW5jeScsCiAgICAgICAgNDI1ID0+ICdVbm9yZGVyZWQgQ29sbGVjdGlvbicsCiAgICAgICAgNDI2ID0+ICdVcGdyYWRlIFJlcXVpcmVkJywKICAgICAgICA0MjggPT4gJ1ByZWNvbmRpdGlvbiBSZXF1aXJlZCcsCiAgICAgICAgNDI5ID0+ICdUb28gTWFueSBSZXF1ZXN0cycsCiAgICAgICAgNDMxID0+ICdSZXF1ZXN0IEhlYWRlciBGaWVsZHMgVG9vIExhcmdlJywKICAgICAgICA0NTEgPT4gJ1VuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zJywKICAgICAgICA1MDAgPT4gJ0ludGVybmFsIFNlcnZlciBFcnJvcicsCiAgICAgICAgNTAxID0+ICdOb3QgSW1wbGVtZW50ZWQnLAogICAgICAgIDUwMiA9PiAnQmFkIEdhdGV3YXknLAogICAgICAgIDUwMyA9PiAnU2VydmljZSBVbmF2YWlsYWJsZScsCiAgICAgICAgNTA0ID0+ICdHYXRld2F5IFRpbWUtb3V0JywKICAgICAgICA1MDUgPT4gJ0hUVFAgVmVyc2lvbiBub3Qgc3VwcG9ydGVkJywKICAgICAgICA1MDYgPT4gJ1ZhcmlhbnQgQWxzbyBOZWdvdGlhdGVzJywKICAgICAgICA1MDcgPT4gJ0luc3VmZmljaWVudCBTdG9yYWdlJywKICAgICAgICA1MDggPT4gJ0xvb3AgRGV0ZWN0ZWQnLAogICAgICAgIDUxMCA9PiAnTm90IEV4dGVuZGVkJywKICAgICAgICA1MTEgPT4gJ05ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWQnLAogICAgXTsKCiAgICAvKiogQHZhciBzdHJpbmcgKi8KICAgIHByaXZhdGUgJHJlYXNvblBocmFzZTsKCiAgICAvKiogQHZhciBpbnQgKi8KICAgIHByaXZhdGUgJHN0YXR1c0NvZGU7CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzdGF0dXMgIFN0YXR1cyBjb2RlCiAgICAgKiBAcGFyYW0gKHN0cmluZ3xzdHJpbmdbXSlbXSAgICAgICAgICAgICAgICAgICRoZWFkZXJzIFJlc3BvbnNlIGhlYWRlcnMKICAgICAqIEBwYXJhbSBzdHJpbmd8cmVzb3VyY2V8U3RyZWFtSW50ZXJmYWNlfG51bGwgJGJvZHkgICAgUmVzcG9uc2UgYm9keQogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmVyc2lvbiBQcm90b2NvbCB2ZXJzaW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgICAgICAgICAgICAgICAgICAgICAgICAgICRyZWFzb24gIFJlYXNvbiBwaHJhc2UgKHdoZW4gZW1wdHkgYSBkZWZhdWx0IHdpbGwgYmUgdXNlZCBiYXNlZCBvbiB0aGUgc3RhdHVzIGNvZGUpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICBpbnQgJHN0YXR1cyA9IDIwMCwKICAgICAgICBhcnJheSAkaGVhZGVycyA9IFtdLAogICAgICAgICRib2R5ID0gbnVsbCwKICAgICAgICBzdHJpbmcgJHZlcnNpb24gPSAnMS4xJywKICAgICAgICA/c3RyaW5nICRyZWFzb24gPSBudWxsCiAgICApIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0U3RhdHVzQ29kZVJhbmdlKCRzdGF0dXMpOwoKICAgICAgICAkdGhpcy0+c3RhdHVzQ29kZSA9ICRzdGF0dXM7CgogICAgICAgIGlmICgkYm9keSAhPT0gJycgJiYgJGJvZHkgIT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9IFV0aWxzOjpzdHJlYW1Gb3IoJGJvZHkpOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPnNldEhlYWRlcnMoJGhlYWRlcnMpOwogICAgICAgIGlmICgkcmVhc29uID09ICcnICYmIGlzc2V0KHNlbGY6OlBIUkFTRVNbJHRoaXMtPnN0YXR1c0NvZGVdKSkgewogICAgICAgICAgICAkdGhpcy0+cmVhc29uUGhyYXNlID0gc2VsZjo6UEhSQVNFU1skdGhpcy0+c3RhdHVzQ29kZV07CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHRoaXMtPnJlYXNvblBocmFzZSA9IChzdHJpbmcpICRyZWFzb247CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cHJvdG9jb2wgPSAkdmVyc2lvbjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3RhdHVzQ29kZSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0YXR1c0NvZGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlYXNvblBocmFzZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlYXNvblBocmFzZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFN0YXR1cygkY29kZSwgJHJlYXNvblBocmFzZSA9ICcnKTogUmVzcG9uc2VJbnRlcmZhY2UKICAgIHsKICAgICAgICAkdGhpcy0+YXNzZXJ0U3RhdHVzQ29kZUlzSW50ZWdlcigkY29kZSk7CiAgICAgICAgJGNvZGUgPSAoaW50KSAkY29kZTsKICAgICAgICAkdGhpcy0+YXNzZXJ0U3RhdHVzQ29kZVJhbmdlKCRjb2RlKTsKCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnN0YXR1c0NvZGUgPSAkY29kZTsKICAgICAgICBpZiAoJHJlYXNvblBocmFzZSA9PSAnJyAmJiBpc3NldChzZWxmOjpQSFJBU0VTWyRuZXctPnN0YXR1c0NvZGVdKSkgewogICAgICAgICAgICAkcmVhc29uUGhyYXNlID0gc2VsZjo6UEhSQVNFU1skbmV3LT5zdGF0dXNDb2RlXTsKICAgICAgICB9CiAgICAgICAgJG5ldy0+cmVhc29uUGhyYXNlID0gKHN0cmluZykgJHJlYXNvblBocmFzZTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHN0YXR1c0NvZGUKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBhc3NlcnRTdGF0dXNDb2RlSXNJbnRlZ2VyKCRzdGF0dXNDb2RlKTogdm9pZAogICAgewogICAgICAgIGlmIChmaWx0ZXJfdmFyKCRzdGF0dXNDb2RlLCBGSUxURVJfVkFMSURBVEVfSU5UKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1N0YXR1cyBjb2RlIG11c3QgYmUgYW4gaW50ZWdlciB2YWx1ZS4nKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhc3NlcnRTdGF0dXNDb2RlUmFuZ2UoaW50ICRzdGF0dXNDb2RlKTogdm9pZAogICAgewogICAgICAgIGlmICgkc3RhdHVzQ29kZSA8IDEwMCB8fCAkc3RhdHVzQ29kZSA+PSA2MDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1N0YXR1cyBjb2RlIG11c3QgYmUgYW4gaW50ZWdlciB2YWx1ZSBiZXR3ZWVuIDF4eCBhbmQgNXh4LicpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Rfc7230.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCi8qKgogKiBAaW50ZXJuYWwKICovCmZpbmFsIGNsYXNzIFJmYzcyMzAKewogICAgLyoqCiAgICAgKiBIZWFkZXIgcmVsYXRlZCByZWd1bGFyIGV4cHJlc3Npb25zIChiYXNlZCBvbiBhbXBocC9odHRwIHBhY2thZ2UpCiAgICAgKgogICAgICogTm90ZTogaGVhZGVyIGRlbGltaXRlciAoXHJcbikgaXMgbW9kaWZpZWQgdG8gXHI/XG4gdG8gYWNjZXB0IGxpbmUgZmVlZCBvbmx5IGRlbGltaXRlcnMgZm9yIEJDIHJlYXNvbnMuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vYW1waHAvaHR0cC9ibG9iL3YxLjAuMS9zcmMvUmZjNzIzMC5waHAjTDEyLUwxNQogICAgICoKICAgICAqIEBsaWNlbnNlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXBocC9odHRwL2Jsb2IvdjEuMC4xL0xJQ0VOU0UKICAgICAqLwogICAgcHVibGljIGNvbnN0IEhFQURFUl9SRUdFWCA9ICIoXihbXigpPD5ALDs6XFxcIi9bXF0/PXt9XHgwMS1ceDIwXHg3Rl0rKyk6WyBcdF0qKygoPzpbIFx0XSorW1x4MjEtXHg3RVx4ODAtXHhGRl0rKykqKylbIFx0XSorXHI/XG4pbSI7CiAgICBwdWJsaWMgY29uc3QgSEVBREVSX0ZPTERfUkVHRVggPSAiKFxyP1xuWyBcdF0rKykiOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/ServerRequest.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2U7CgovKioKICogU2VydmVyLXNpZGUgSFRUUCByZXF1ZXN0CiAqCiAqIEV4dGVuZHMgdGhlIFJlcXVlc3QgZGVmaW5pdGlvbiB0byBhZGQgbWV0aG9kcyBmb3IgYWNjZXNzaW5nIGluY29taW5nIGRhdGEsCiAqIHNwZWNpZmljYWxseSBzZXJ2ZXIgcGFyYW1ldGVycywgY29va2llcywgbWF0Y2hlZCBwYXRoIHBhcmFtZXRlcnMsIHF1ZXJ5CiAqIHN0cmluZyBhcmd1bWVudHMsIGJvZHkgcGFyYW1ldGVycywgYW5kIHVwbG9hZCBmaWxlIGluZm9ybWF0aW9uLgogKgogKiAiQXR0cmlidXRlcyIgYXJlIGRpc2NvdmVyZWQgdmlhIGRlY29tcG9zaW5nIHRoZSByZXF1ZXN0IChhbmQgdXN1YWxseQogKiBzcGVjaWZpY2FsbHkgdGhlIFVSSSBwYXRoKSwgYW5kIHR5cGljYWxseSB3aWxsIGJlIGluamVjdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KICoKICogUmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBhcmUKICogaW1wbGVtZW50ZWQgc3VjaCB0aGF0IHRoZXkgcmV0YWluIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY3VycmVudAogKiBtZXNzYWdlIGFuZCByZXR1cm4gYSBuZXcgaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgY2hhbmdlZCBzdGF0ZS4KICovCmNsYXNzIFNlcnZlclJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IGltcGxlbWVudHMgU2VydmVyUmVxdWVzdEludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkYXR0cmlidXRlcyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRjb29raWVQYXJhbXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXl8b2JqZWN0fG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkcGFyc2VkQm9keTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkcXVlcnlQYXJhbXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkc2VydmVyUGFyYW1zOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICR1cGxvYWRlZEZpbGVzID0gW107CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRtZXRob2QgICAgICAgSFRUUCBtZXRob2QKICAgICAqIEBwYXJhbSBzdHJpbmd8VXJpSW50ZXJmYWNlICAgICAgICAgICAgICAgICAgJHVyaSAgICAgICAgICBVUkkKICAgICAqIEBwYXJhbSAoc3RyaW5nfHN0cmluZ1tdKVtdICAgICAgICAgICAgICAgICAgJGhlYWRlcnMgICAgICBSZXF1ZXN0IGhlYWRlcnMKICAgICAqIEBwYXJhbSBzdHJpbmd8cmVzb3VyY2V8U3RyZWFtSW50ZXJmYWNlfG51bGwgJGJvZHkgICAgICAgICBSZXF1ZXN0IGJvZHkKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZlcnNpb24gICAgICBQcm90b2NvbCB2ZXJzaW9uCiAgICAgKiBAcGFyYW0gYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzZXJ2ZXJQYXJhbXMgVHlwaWNhbGx5IHRoZSAkX1NFUlZFUiBzdXBlcmdsb2JhbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgc3RyaW5nICRtZXRob2QsCiAgICAgICAgJHVyaSwKICAgICAgICBhcnJheSAkaGVhZGVycyA9IFtdLAogICAgICAgICRib2R5ID0gbnVsbCwKICAgICAgICBzdHJpbmcgJHZlcnNpb24gPSAnMS4xJywKICAgICAgICBhcnJheSAkc2VydmVyUGFyYW1zID0gW10KICAgICkgewogICAgICAgICR0aGlzLT5zZXJ2ZXJQYXJhbXMgPSAkc2VydmVyUGFyYW1zOwoKICAgICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtZXRob2QsICR1cmksICRoZWFkZXJzLCAkYm9keSwgJHZlcnNpb24pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIFVwbG9hZGVkRmlsZSBpbnN0YW5jZSBhcnJheS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGZpbGVzIEFuIGFycmF5IHdoaWNoIHJlc3BlY3QgJF9GSUxFUyBzdHJ1Y3R1cmUKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgdW5yZWNvZ25pemVkIHZhbHVlcwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZUZpbGVzKGFycmF5ICRmaWxlcyk6IGFycmF5CiAgICB7CiAgICAgICAgJG5vcm1hbGl6ZWQgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmICgkdmFsdWUgaW5zdGFuY2VvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UpIHsKICAgICAgICAgICAgICAgICRub3JtYWxpemVkWyRrZXldID0gJHZhbHVlOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNfYXJyYXkoJHZhbHVlKSAmJiBpc3NldCgkdmFsdWVbJ3RtcF9uYW1lJ10pKSB7CiAgICAgICAgICAgICAgICAkbm9ybWFsaXplZFska2V5XSA9IHNlbGY6OmNyZWF0ZVVwbG9hZGVkRmlsZUZyb21TcGVjKCR2YWx1ZSk7CiAgICAgICAgICAgIH0gZWxzZWlmIChpc19hcnJheSgkdmFsdWUpKSB7CiAgICAgICAgICAgICAgICAkbm9ybWFsaXplZFska2V5XSA9IHNlbGY6Om5vcm1hbGl6ZUZpbGVzKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgdmFsdWUgaW4gZmlsZXMgc3BlY2lmaWNhdGlvbicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5vcm1hbGl6ZWQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYW5kIHJldHVybiBhbiBVcGxvYWRlZEZpbGUgaW5zdGFuY2UgZnJvbSBhICRfRklMRVMgc3BlY2lmaWNhdGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGUgc3BlY2lmaWNhdGlvbiByZXByZXNlbnRzIGFuIGFycmF5IG9mIHZhbHVlcywgdGhpcyBtZXRob2Qgd2lsbAogICAgICogZGVsZWdhdGUgdG8gbm9ybWFsaXplTmVzdGVkRmlsZVNwZWMoKSBhbmQgcmV0dXJuIHRoYXQgcmV0dXJuIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWUgJF9GSUxFUyBzdHJ1Y3QKICAgICAqCiAgICAgKiBAcmV0dXJuIFVwbG9hZGVkRmlsZUludGVyZmFjZXxVcGxvYWRlZEZpbGVJbnRlcmZhY2VbXQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVVcGxvYWRlZEZpbGVGcm9tU3BlYyhhcnJheSAkdmFsdWUpCiAgICB7CiAgICAgICAgaWYgKGlzX2FycmF5KCR2YWx1ZVsndG1wX25hbWUnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6Om5vcm1hbGl6ZU5lc3RlZEZpbGVTcGVjKCR2YWx1ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IFVwbG9hZGVkRmlsZSgKICAgICAgICAgICAgJHZhbHVlWyd0bXBfbmFtZSddLAogICAgICAgICAgICAoaW50KSAkdmFsdWVbJ3NpemUnXSwKICAgICAgICAgICAgKGludCkgJHZhbHVlWydlcnJvciddLAogICAgICAgICAgICAkdmFsdWVbJ25hbWUnXSwKICAgICAgICAgICAgJHZhbHVlWyd0eXBlJ10KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogTm9ybWFsaXplIGFuIGFycmF5IG9mIGZpbGUgc3BlY2lmaWNhdGlvbnMuCiAgICAgKgogICAgICogTG9vcHMgdGhyb3VnaCBhbGwgbmVzdGVkIGZpbGVzIGFuZCByZXR1cm5zIGEgbm9ybWFsaXplZCBhcnJheSBvZgogICAgICogVXBsb2FkZWRGaWxlSW50ZXJmYWNlIGluc3RhbmNlcy4KICAgICAqCiAgICAgKiBAcmV0dXJuIFVwbG9hZGVkRmlsZUludGVyZmFjZVtdCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIG5vcm1hbGl6ZU5lc3RlZEZpbGVTcGVjKGFycmF5ICRmaWxlcyA9IFtdKTogYXJyYXkKICAgIHsKICAgICAgICAkbm9ybWFsaXplZEZpbGVzID0gW107CgogICAgICAgIGZvcmVhY2ggKGFycmF5X2tleXMoJGZpbGVzWyd0bXBfbmFtZSddKSBhcyAka2V5KSB7CiAgICAgICAgICAgICRzcGVjID0gWwogICAgICAgICAgICAgICAgJ3RtcF9uYW1lJyA9PiAkZmlsZXNbJ3RtcF9uYW1lJ11bJGtleV0sCiAgICAgICAgICAgICAgICAnc2l6ZScgPT4gJGZpbGVzWydzaXplJ11bJGtleV0gPz8gbnVsbCwKICAgICAgICAgICAgICAgICdlcnJvcicgPT4gJGZpbGVzWydlcnJvciddWyRrZXldID8/IG51bGwsCiAgICAgICAgICAgICAgICAnbmFtZScgPT4gJGZpbGVzWyduYW1lJ11bJGtleV0gPz8gbnVsbCwKICAgICAgICAgICAgICAgICd0eXBlJyA9PiAkZmlsZXNbJ3R5cGUnXVska2V5XSA/PyBudWxsLAogICAgICAgICAgICBdOwogICAgICAgICAgICAkbm9ybWFsaXplZEZpbGVzWyRrZXldID0gc2VsZjo6Y3JlYXRlVXBsb2FkZWRGaWxlRnJvbVNwZWMoJHNwZWMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRub3JtYWxpemVkRmlsZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYSBTZXJ2ZXJSZXF1ZXN0IHBvcHVsYXRlZCB3aXRoIHN1cGVyZ2xvYmFsczoKICAgICAqICRfR0VUCiAgICAgKiAkX1BPU1QKICAgICAqICRfQ09PS0lFCiAgICAgKiAkX0ZJTEVTCiAgICAgKiAkX1NFUlZFUgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21HbG9iYWxzKCk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbWV0aG9kID0gJF9TRVJWRVJbJ1JFUVVFU1RfTUVUSE9EJ10gPz8gJ0dFVCc7CiAgICAgICAgJGhlYWRlcnMgPSBnZXRhbGxoZWFkZXJzKCk7CiAgICAgICAgJHVyaSA9IHNlbGY6OmdldFVyaUZyb21HbG9iYWxzKCk7CiAgICAgICAgJGJvZHkgPSBuZXcgQ2FjaGluZ1N0cmVhbShuZXcgTGF6eU9wZW5TdHJlYW0oJ3BocDovL2lucHV0JywgJ3IrJykpOwogICAgICAgICRwcm90b2NvbCA9IGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXSkgPyBzdHJfcmVwbGFjZSgnSFRUUC8nLCAnJywgJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddKSA6ICcxLjEnOwoKICAgICAgICAkc2VydmVyUmVxdWVzdCA9IG5ldyBTZXJ2ZXJSZXF1ZXN0KCRtZXRob2QsICR1cmksICRoZWFkZXJzLCAkYm9keSwgJHByb3RvY29sLCAkX1NFUlZFUik7CgogICAgICAgIHJldHVybiAkc2VydmVyUmVxdWVzdAogICAgICAgICAgICAtPndpdGhDb29raWVQYXJhbXMoJF9DT09LSUUpCiAgICAgICAgICAgIC0+d2l0aFF1ZXJ5UGFyYW1zKCRfR0VUKQogICAgICAgICAgICAtPndpdGhQYXJzZWRCb2R5KCRfUE9TVCkKICAgICAgICAgICAgLT53aXRoVXBsb2FkZWRGaWxlcyhzZWxmOjpub3JtYWxpemVGaWxlcygkX0ZJTEVTKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZXh0cmFjdEhvc3RBbmRQb3J0RnJvbUF1dGhvcml0eShzdHJpbmcgJGF1dGhvcml0eSk6IGFycmF5CiAgICB7CiAgICAgICAgJHVyaSA9ICdodHRwOi8vJy4kYXV0aG9yaXR5OwogICAgICAgICRwYXJ0cyA9IHBhcnNlX3VybCgkdXJpKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRwYXJ0cykgewogICAgICAgICAgICByZXR1cm4gW251bGwsIG51bGxdOwogICAgICAgIH0KCiAgICAgICAgJGhvc3QgPSAkcGFydHNbJ2hvc3QnXSA/PyBudWxsOwogICAgICAgICRwb3J0ID0gJHBhcnRzWydwb3J0J10gPz8gbnVsbDsKCiAgICAgICAgcmV0dXJuIFskaG9zdCwgJHBvcnRdOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IGEgVXJpIHBvcHVsYXRlZCB3aXRoIHZhbHVlcyBmcm9tICRfU0VSVkVSLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFVyaUZyb21HbG9iYWxzKCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICR1cmkgPSBuZXcgVXJpKCcnKTsKCiAgICAgICAgJHVyaSA9ICR1cmktPndpdGhTY2hlbWUoIWVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSAmJiAkX1NFUlZFUlsnSFRUUFMnXSAhPT0gJ29mZicgPyAnaHR0cHMnIDogJ2h0dHAnKTsKCiAgICAgICAgJGhhc1BvcnQgPSBmYWxzZTsKICAgICAgICBpZiAoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKSkgewogICAgICAgICAgICBbJGhvc3QsICRwb3J0XSA9IHNlbGY6OmV4dHJhY3RIb3N0QW5kUG9ydEZyb21BdXRob3JpdHkoJF9TRVJWRVJbJ0hUVFBfSE9TVCddKTsKICAgICAgICAgICAgaWYgKCRob3N0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aEhvc3QoJGhvc3QpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHBvcnQgIT09IG51bGwpIHsKICAgICAgICAgICAgICAgICRoYXNQb3J0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUG9ydCgkcG9ydCk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10pKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgkX1NFUlZFUlsnU0VSVkVSX05BTUUnXSk7CiAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRfU0VSVkVSWydTRVJWRVJfQUREUiddKSkgewogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aEhvc3QoJF9TRVJWRVJbJ1NFUlZFUl9BRERSJ10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCEkaGFzUG9ydCAmJiBpc3NldCgkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSkpIHsKICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhQb3J0KCRfU0VSVkVSWydTRVJWRVJfUE9SVCddKTsKICAgICAgICB9CgogICAgICAgICRoYXNRdWVyeSA9IGZhbHNlOwogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkpIHsKICAgICAgICAgICAgJHJlcXVlc3RVcmlQYXJ0cyA9IGV4cGxvZGUoJz8nLCAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSwgMik7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUGF0aCgkcmVxdWVzdFVyaVBhcnRzWzBdKTsKICAgICAgICAgICAgaWYgKGlzc2V0KCRyZXF1ZXN0VXJpUGFydHNbMV0pKSB7CiAgICAgICAgICAgICAgICAkaGFzUXVlcnkgPSB0cnVlOwogICAgICAgICAgICAgICAgJHVyaSA9ICR1cmktPndpdGhRdWVyeSgkcmVxdWVzdFVyaVBhcnRzWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCEkaGFzUXVlcnkgJiYgaXNzZXQoJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddKSkgewogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFF1ZXJ5KCRfU0VSVkVSWydRVUVSWV9TVFJJTkcnXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVyaTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VydmVyUGFyYW1zKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zZXJ2ZXJQYXJhbXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVwbG9hZGVkRmlsZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnVwbG9hZGVkRmlsZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVcGxvYWRlZEZpbGVzKGFycmF5ICR1cGxvYWRlZEZpbGVzKTogU2VydmVyUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT51cGxvYWRlZEZpbGVzID0gJHVwbG9hZGVkRmlsZXM7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb29raWVQYXJhbXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvb2tpZVBhcmFtczsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aENvb2tpZVBhcmFtcyhhcnJheSAkY29va2llcyk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+Y29va2llUGFyYW1zID0gJGNvb2tpZXM7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeVBhcmFtcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cXVlcnlQYXJhbXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeVBhcmFtcyhhcnJheSAkcXVlcnkpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnF1ZXJ5UGFyYW1zID0gJHF1ZXJ5OwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXl8b2JqZWN0fG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcnNlZEJvZHkoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGFyc2VkQm9keTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhcnNlZEJvZHkoJGRhdGEpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnBhcnNlZEJvZHkgPSAkZGF0YTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEF0dHJpYnV0ZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmF0dHJpYnV0ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUoJGF0dHJpYnV0ZSwgJGRlZmF1bHQgPSBudWxsKQogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gYXJyYXlfa2V5X2V4aXN0cygkYXR0cmlidXRlLCAkdGhpcy0+YXR0cmlidXRlcykpIHsKICAgICAgICAgICAgcmV0dXJuICRkZWZhdWx0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5hdHRyaWJ1dGVzWyRhdHRyaWJ1dGVdOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQXR0cmlidXRlKCRhdHRyaWJ1dGUsICR2YWx1ZSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+YXR0cmlidXRlc1skYXR0cmlidXRlXSA9ICR2YWx1ZTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRBdHRyaWJ1dGUoJGF0dHJpYnV0ZSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoZmFsc2UgPT09IGFycmF5X2tleV9leGlzdHMoJGF0dHJpYnV0ZSwgJHRoaXMtPmF0dHJpYnV0ZXMpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICB1bnNldCgkbmV3LT5hdHRyaWJ1dGVzWyRhdHRyaWJ1dGVdKTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Stream.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBQSFAgc3RyZWFtIGltcGxlbWVudGF0aW9uLgogKi8KY2xhc3MgU3RyZWFtIGltcGxlbWVudHMgU3RyZWFtSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQHNlZSBodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5mb3Blbi5waHAKICAgICAqIEBzZWUgaHR0cHM6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uZ3pvcGVuLnBocAogICAgICovCiAgICBwcml2YXRlIGNvbnN0IFJFQURBQkxFX01PREVTID0gJy9yfGFcK3xhYlwrfHdcK3x3YlwrfHhcK3x4YlwrfGNcK3xjYlwrLyc7CiAgICBwcml2YXRlIGNvbnN0IFdSSVRBQkxFX01PREVTID0gJy9hfHd8clwrfHJiXCt8cnd8eHxjLyc7CgogICAgLyoqIEB2YXIgcmVzb3VyY2UgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKICAgIC8qKiBAdmFyIGludHxudWxsICovCiAgICBwcml2YXRlICRzaXplOwogICAgLyoqIEB2YXIgYm9vbCAqLwogICAgcHJpdmF0ZSAkc2Vla2FibGU7CiAgICAvKiogQHZhciBib29sICovCiAgICBwcml2YXRlICRyZWFkYWJsZTsKICAgIC8qKiBAdmFyIGJvb2wgKi8KICAgIHByaXZhdGUgJHdyaXRhYmxlOwogICAgLyoqIEB2YXIgc3RyaW5nfG51bGwgKi8KICAgIHByaXZhdGUgJHVyaTsKICAgIC8qKiBAdmFyIG1peGVkW10gKi8KICAgIHByaXZhdGUgJGN1c3RvbU1ldGFkYXRhOwoKICAgIC8qKgogICAgICogVGhpcyBjb25zdHJ1Y3RvciBhY2NlcHRzIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIG9wdGlvbnMuCiAgICAgKgogICAgICogLSBzaXplOiAoaW50KSBJZiBhIHJlYWQgc3RyZWFtIHdvdWxkIG90aGVyd2lzZSBoYXZlIGFuIGluZGV0ZXJtaW5hdGUKICAgICAqICAgc2l6ZSwgYnV0IHRoZSBzaXplIGlzIGtub3duIGR1ZSB0byBmb3Jla25vd2xlZGdlLCB0aGVuIHlvdSBjYW4KICAgICAqICAgcHJvdmlkZSB0aGF0IHNpemUsIGluIGJ5dGVzLgogICAgICogLSBtZXRhZGF0YTogKGFycmF5KSBBbnkgYWRkaXRpb25hbCBtZXRhZGF0YSB0byByZXR1cm4gd2hlbiB0aGUgbWV0YWRhdGEKICAgICAqICAgb2YgdGhlIHN0cmVhbSBpcyBhY2Nlc3NlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHN0cmVhbSAgU3RyZWFtIHJlc291cmNlIHRvIHdyYXAuCiAgICAgKiBAcGFyYW0gYXJyYXl7c2l6ZT86IGludCwgbWV0YWRhdGE/OiBhcnJheX0gJG9wdGlvbnMgQXNzb2NpYXRpdmUgYXJyYXkgb2Ygb3B0aW9ucy4KICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHN0cmVhbSBpcyBub3QgYSBzdHJlYW0gcmVzb3VyY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRzdHJlYW0sIGFycmF5ICRvcHRpb25zID0gW10pCiAgICB7CiAgICAgICAgaWYgKCFpc19yZXNvdXJjZSgkc3RyZWFtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignU3RyZWFtIG11c3QgYmUgYSByZXNvdXJjZScpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzc2V0KCRvcHRpb25zWydzaXplJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT5zaXplID0gJG9wdGlvbnNbJ3NpemUnXTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jdXN0b21NZXRhZGF0YSA9ICRvcHRpb25zWydtZXRhZGF0YSddID8/IFtdOwogICAgICAgICR0aGlzLT5zdHJlYW0gPSAkc3RyZWFtOwogICAgICAgICRtZXRhID0gc3RyZWFtX2dldF9tZXRhX2RhdGEoJHRoaXMtPnN0cmVhbSk7CiAgICAgICAgJHRoaXMtPnNlZWthYmxlID0gJG1ldGFbJ3NlZWthYmxlJ107CiAgICAgICAgJHRoaXMtPnJlYWRhYmxlID0gKGJvb2wpIHByZWdfbWF0Y2goc2VsZjo6UkVBREFCTEVfTU9ERVMsICRtZXRhWydtb2RlJ10pOwogICAgICAgICR0aGlzLT53cml0YWJsZSA9IChib29sKSBwcmVnX21hdGNoKHNlbGY6OldSSVRBQkxFX01PREVTLCAkbWV0YVsnbW9kZSddKTsKICAgICAgICAkdGhpcy0+dXJpID0gJHRoaXMtPmdldE1ldGFkYXRhKCd1cmknKTsKICAgIH0KCiAgICAvKioKICAgICAqIENsb3NlcyB0aGUgc3RyZWFtIHdoZW4gdGhlIGRlc3RydWN0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoKQogICAgewogICAgICAgICR0aGlzLT5jbG9zZSgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2VlaygwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKFxQSFBfVkVSU0lPTl9JRCA+PSA3MDQwMCkgewogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCclczo6X190b1N0cmluZyBleGNlcHRpb246ICVzJywgc2VsZjo6Y2xhc3MsIChzdHJpbmcpICRlKSwgRV9VU0VSX0VSUk9SKTsKCiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdTdHJlYW0gaXMgZGV0YWNoZWQnKTsKICAgICAgICB9CgogICAgICAgIGlmICghJHRoaXMtPnJlYWRhYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHJlYWQgZnJvbSBub24tcmVhZGFibGUgc3RyZWFtJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gVXRpbHM6OnRyeUdldENvbnRlbnRzKCR0aGlzLT5zdHJlYW0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5zdHJlYW0pKSB7CiAgICAgICAgICAgIGlmIChpc19yZXNvdXJjZSgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICAgICAgZmNsb3NlKCR0aGlzLT5zdHJlYW0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5kZXRhY2goKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRldGFjaCgpCiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSAkdGhpcy0+c3RyZWFtOwogICAgICAgIHVuc2V0KCR0aGlzLT5zdHJlYW0pOwogICAgICAgICR0aGlzLT5zaXplID0gJHRoaXMtPnVyaSA9IG51bGw7CiAgICAgICAgJHRoaXMtPnJlYWRhYmxlID0gJHRoaXMtPndyaXRhYmxlID0gJHRoaXMtPnNlZWthYmxlID0gZmFsc2U7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnNpemUgIT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zaXplOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIC8vIENsZWFyIHRoZSBzdGF0IGNhY2hlIGlmIHRoZSBzdHJlYW0gaGFzIGEgVVJJCiAgICAgICAgaWYgKCR0aGlzLT51cmkpIHsKICAgICAgICAgICAgY2xlYXJzdGF0Y2FjaGUodHJ1ZSwgJHRoaXMtPnVyaSk7CiAgICAgICAgfQoKICAgICAgICAkc3RhdHMgPSBmc3RhdCgkdGhpcy0+c3RyZWFtKTsKICAgICAgICBpZiAoaXNfYXJyYXkoJHN0YXRzKSAmJiBpc3NldCgkc3RhdHNbJ3NpemUnXSkpIHsKICAgICAgICAgICAgJHRoaXMtPnNpemUgPSAkc3RhdHNbJ3NpemUnXTsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c2l6ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1JlYWRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlYWRhYmxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1dyaXRhYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndyaXRhYmxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1NlZWthYmxlKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlZWthYmxlOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKTogYm9vbAogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdTdHJlYW0gaXMgZGV0YWNoZWQnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmZW9mKCR0aGlzLT5zdHJlYW0pOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdTdHJlYW0gaXMgZGV0YWNoZWQnKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSBmdGVsbCgkdGhpcy0+c3RyZWFtKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGRldGVybWluZSBzdHJlYW0gcG9zaXRpb24nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZXdpbmQoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZWVrKDApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKCRvZmZzZXQsICR3aGVuY2UgPSBTRUVLX1NFVCk6IHZvaWQKICAgIHsKICAgICAgICAkd2hlbmNlID0gKGludCkgJHdoZW5jZTsKCiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1N0cmVhbSBpcyBkZXRhY2hlZCcpOwogICAgICAgIH0KICAgICAgICBpZiAoISR0aGlzLT5zZWVrYWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1N0cmVhbSBpcyBub3Qgc2Vla2FibGUnKTsKICAgICAgICB9CiAgICAgICAgaWYgKGZzZWVrKCR0aGlzLT5zdHJlYW0sICRvZmZzZXQsICR3aGVuY2UpID09PSAtMSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBzZWVrIHRvIHN0cmVhbSBwb3NpdGlvbiAnCiAgICAgICAgICAgICAgICAuJG9mZnNldC4nIHdpdGggd2hlbmNlICcudmFyX2V4cG9ydCgkd2hlbmNlLCB0cnVlKSk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKCRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5zdHJlYW0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignU3RyZWFtIGlzIGRldGFjaGVkJyk7CiAgICAgICAgfQogICAgICAgIGlmICghJHRoaXMtPnJlYWRhYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHJlYWQgZnJvbSBub24tcmVhZGFibGUgc3RyZWFtJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkbGVuZ3RoIDwgMCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0xlbmd0aCBwYXJhbWV0ZXIgY2Fubm90IGJlIG5lZ2F0aXZlJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoMCA9PT0gJGxlbmd0aCkgewogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICB0cnkgewogICAgICAgICAgICAkc3RyaW5nID0gZnJlYWQoJHRoaXMtPnN0cmVhbSwgJGxlbmd0aCk7CiAgICAgICAgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byByZWFkIGZyb20gc3RyZWFtJywgMCwgJGUpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlID09PSAkc3RyaW5nKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIHJlYWQgZnJvbSBzdHJlYW0nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkc3RyaW5nOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkc3RyaW5nKTogaW50CiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+c3RyZWFtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1N0cmVhbSBpcyBkZXRhY2hlZCcpOwogICAgICAgIH0KICAgICAgICBpZiAoISR0aGlzLT53cml0YWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ0Nhbm5vdCB3cml0ZSB0byBhIG5vbi13cml0YWJsZSBzdHJlYW0nKTsKICAgICAgICB9CgogICAgICAgIC8vIFdlIGNhbid0IGtub3cgdGhlIHNpemUgYWZ0ZXIgd3JpdGluZyBhbnl0aGluZwogICAgICAgICR0aGlzLT5zaXplID0gbnVsbDsKICAgICAgICAkcmVzdWx0ID0gZndyaXRlKCR0aGlzLT5zdHJlYW0sICRzdHJpbmcpOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gd3JpdGUgdG8gc3RyZWFtJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGFkYXRhKCRrZXkgPSBudWxsKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnN0cmVhbSkpIHsKICAgICAgICAgICAgcmV0dXJuICRrZXkgPyBudWxsIDogW107CiAgICAgICAgfSBlbHNlaWYgKCEka2V5KSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Y3VzdG9tTWV0YWRhdGEgKyBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkdGhpcy0+c3RyZWFtKTsKICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJHRoaXMtPmN1c3RvbU1ldGFkYXRhWyRrZXldKSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmN1c3RvbU1ldGFkYXRhWyRrZXldOwogICAgICAgIH0KCiAgICAgICAgJG1ldGEgPSBzdHJlYW1fZ2V0X21ldGFfZGF0YSgkdGhpcy0+c3RyZWFtKTsKCiAgICAgICAgcmV0dXJuICRtZXRhWyRrZXldID8/IG51bGw7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/StreamDecoratorTrait.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBTdHJlYW0gZGVjb3JhdG9yIHRyYWl0CiAqCiAqIEBwcm9wZXJ0eSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbQogKi8KdHJhaXQgU3RyZWFtRGVjb3JhdG9yVHJhaXQKewogICAgLyoqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gU3RyZWFtIHRvIGRlY29yYXRlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSkKICAgIHsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbTsKICAgIH0KCiAgICAvKioKICAgICAqIE1hZ2ljIG1ldGhvZCB1c2VkIHRvIGNyZWF0ZSBhIG5ldyBzdHJlYW0gaWYgc3RyZWFtcyBhcmUgbm90IGFkZGVkIGluCiAgICAgKiB0aGUgY29uc3RydWN0b3Igb2YgYSBkZWNvcmF0b3IgKGUuZy4sIExhenlPcGVuU3RyZWFtKS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoc3RyaW5nICRuYW1lKQogICAgewogICAgICAgIGlmICgkbmFtZSA9PT0gJ3N0cmVhbScpIHsKICAgICAgICAgICAgJHRoaXMtPnN0cmVhbSA9ICR0aGlzLT5jcmVhdGVTdHJlYW0oKTsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxVbmV4cGVjdGVkVmFsdWVFeGNlcHRpb24oIiRuYW1lIG5vdCBmb3VuZCBvbiBjbGFzcyIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3RvU3RyaW5nKCk6IHN0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+aXNTZWVrYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2VlaygwKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRDb250ZW50cygpOwogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgaWYgKFxQSFBfVkVSU0lPTl9JRCA+PSA3MDQwMCkgewogICAgICAgICAgICAgICAgdGhyb3cgJGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcihzcHJpbnRmKCclczo6X190b1N0cmluZyBleGNlcHRpb246ICVzJywgc2VsZjo6Y2xhc3MsIChzdHJpbmcpICRlKSwgRV9VU0VSX0VSUk9SKTsKCiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBVdGlsczo6Y29weVRvU3RyaW5nKCR0aGlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEFsbG93IGRlY29yYXRvcnMgdG8gaW1wbGVtZW50IGN1c3RvbSBtZXRob2RzCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jYWxsKHN0cmluZyAkbWV0aG9kLCBhcnJheSAkYXJncykKICAgIHsKICAgICAgICAvKiogQHZhciBjYWxsYWJsZSAkY2FsbGFibGUgKi8KICAgICAgICAkY2FsbGFibGUgPSBbJHRoaXMtPnN0cmVhbSwgJG1ldGhvZF07CiAgICAgICAgJHJlc3VsdCA9ICgkY2FsbGFibGUpKC4uLiRhcmdzKTsKCiAgICAgICAgLy8gQWx3YXlzIHJldHVybiB0aGUgd3JhcHBlZCBvYmplY3QgaWYgdGhlIHJlc3VsdCBpcyBhIHJldHVybiAkdGhpcwogICAgICAgIHJldHVybiAkcmVzdWx0ID09PSAkdGhpcy0+c3RyZWFtID8gJHRoaXMgOiAkcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbS0+Y2xvc2UoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbWl4ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1ldGFkYXRhKCRrZXkgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5nZXRNZXRhZGF0YSgka2V5KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZGV0YWNoKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+ZGV0YWNoKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNpemUoKTogP2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGVvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmVvZigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0ZWxsKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT50ZWxsKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5pc1JlYWRhYmxlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzV3JpdGFibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5pc1dyaXRhYmxlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5pc1NlZWthYmxlKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNlZWsoMCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zdHJlYW0tPnNlZWsoJG9mZnNldCwgJHdoZW5jZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHJlYWQoJGxlbmd0aCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtLT5yZWFkKCRsZW5ndGgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZSgkc3RyaW5nKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPndyaXRlKCRzdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICogSW1wbGVtZW50IGluIHN1YmNsYXNzZXMgdG8gZHluYW1pY2FsbHkgY3JlYXRlIHN0cmVhbXMgd2hlbiByZXF1ZXN0ZWQuCiAgICAgKgogICAgICogQHRocm93cyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlU3RyZWFtKCk6IFN0cmVhbUludGVyZmFjZQogICAgewogICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbignTm90IGltcGxlbWVudGVkJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/StreamWrapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKCi8qKgogKiBDb252ZXJ0cyBHdXp6bGUgc3RyZWFtcyBpbnRvIFBIUCBzdHJlYW0gcmVzb3VyY2VzLgogKgogKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvc3RyZWFtd3JhcHBlcgogKi8KZmluYWwgY2xhc3MgU3RyZWFtV3JhcHBlcgp7CiAgICAvKiogQHZhciByZXNvdXJjZSAqLwogICAgcHVibGljICRjb250ZXh0OwoKICAgIC8qKiBAdmFyIFN0cmVhbUludGVyZmFjZSAqLwogICAgcHJpdmF0ZSAkc3RyZWFtOwoKICAgIC8qKiBAdmFyIHN0cmluZyByLCByKywgb3IgdyAqLwogICAgcHJpdmF0ZSAkbW9kZTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYSByZXNvdXJjZSByZXByZXNlbnRpbmcgdGhlIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gVGhlIHN0cmVhbSB0byBnZXQgYSByZXNvdXJjZSBmb3IKICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHN0cmVhbSBpcyBub3QgcmVhZGFibGUgb3Igd3JpdGFibGUKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSZXNvdXJjZShTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSkKICAgIHsKICAgICAgICBzZWxmOjpyZWdpc3RlcigpOwoKICAgICAgICBpZiAoJHN0cmVhbS0+aXNSZWFkYWJsZSgpKSB7CiAgICAgICAgICAgICRtb2RlID0gJHN0cmVhbS0+aXNXcml0YWJsZSgpID8gJ3IrJyA6ICdyJzsKICAgICAgICB9IGVsc2VpZiAoJHN0cmVhbS0+aXNXcml0YWJsZSgpKSB7CiAgICAgICAgICAgICRtb2RlID0gJ3cnOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgc3RyZWFtIG11c3QgYmUgcmVhZGFibGUsICcKICAgICAgICAgICAgICAgIC4nd3JpdGFibGUsIG9yIGJvdGguJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZm9wZW4oJ2d1enpsZTovL3N0cmVhbScsICRtb2RlLCBmYWxzZSwgc2VsZjo6Y3JlYXRlU3RyZWFtQ29udGV4dCgkc3RyZWFtKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgc3RyZWFtIGNvbnRleHQgdGhhdCBjYW4gYmUgdXNlZCB0byBvcGVuIGEgc3RyZWFtIGFzIGEgcGhwIHN0cmVhbSByZXNvdXJjZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlU3RyZWFtQ29udGV4dChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSkKICAgIHsKICAgICAgICByZXR1cm4gc3RyZWFtX2NvbnRleHRfY3JlYXRlKFsKICAgICAgICAgICAgJ2d1enpsZScgPT4gWydzdHJlYW0nID0+ICRzdHJlYW1dLAogICAgICAgIF0pOwogICAgfQoKICAgIC8qKgogICAgICogUmVnaXN0ZXJzIHRoZSBzdHJlYW0gd3JhcHBlciBpZiBuZWVkZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWdpc3RlcigpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpbl9hcnJheSgnZ3V6emxlJywgc3RyZWFtX2dldF93cmFwcGVycygpKSkgewogICAgICAgICAgICBzdHJlYW1fd3JhcHBlcl9yZWdpc3RlcignZ3V6emxlJywgX19DTEFTU19fKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN0cmVhbV9vcGVuKHN0cmluZyAkcGF0aCwgc3RyaW5nICRtb2RlLCBpbnQgJG9wdGlvbnMsID9zdHJpbmcgJiRvcGVuZWRfcGF0aCA9IG51bGwpOiBib29sCiAgICB7CiAgICAgICAgJG9wdGlvbnMgPSBzdHJlYW1fY29udGV4dF9nZXRfb3B0aW9ucygkdGhpcy0+Y29udGV4dCk7CgogICAgICAgIGlmICghaXNzZXQoJG9wdGlvbnNbJ2d1enpsZSddWydzdHJlYW0nXSkpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm1vZGUgPSAkbW9kZTsKICAgICAgICAkdGhpcy0+c3RyZWFtID0gJG9wdGlvbnNbJ2d1enpsZSddWydzdHJlYW0nXTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHN0cmVhbV9yZWFkKGludCAkY291bnQpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN0cmVhbS0+cmVhZCgkY291bnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fd3JpdGUoc3RyaW5nICRkYXRhKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPndyaXRlKCRkYXRhKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX3RlbGwoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPnRlbGwoKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX2VvZigpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zdHJlYW0tPmVvZigpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fc2VlayhpbnQgJG9mZnNldCwgaW50ICR3aGVuY2UpOiBib29sCiAgICB7CiAgICAgICAgJHRoaXMtPnN0cmVhbS0+c2Vlaygkb2Zmc2V0LCAkd2hlbmNlKTsKCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHJlc291cmNlfGZhbHNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzdHJlYW1fY2FzdChpbnQgJGNhc3RfYXMpCiAgICB7CiAgICAgICAgJHN0cmVhbSA9IGNsb25lICR0aGlzLT5zdHJlYW07CiAgICAgICAgJHJlc291cmNlID0gJHN0cmVhbS0+ZGV0YWNoKCk7CgogICAgICAgIHJldHVybiAkcmVzb3VyY2UgPz8gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5ewogICAgICogICBkZXY6IGludCwKICAgICAqICAgaW5vOiBpbnQsCiAgICAgKiAgIG1vZGU6IGludCwKICAgICAqICAgbmxpbms6IGludCwKICAgICAqICAgdWlkOiBpbnQsCiAgICAgKiAgIGdpZDogaW50LAogICAgICogICByZGV2OiBpbnQsCiAgICAgKiAgIHNpemU6IGludCwKICAgICAqICAgYXRpbWU6IGludCwKICAgICAqICAgbXRpbWU6IGludCwKICAgICAqICAgY3RpbWU6IGludCwKICAgICAqICAgYmxrc2l6ZTogaW50LAogICAgICogICBibG9ja3M6IGludAogICAgICogfXxmYWxzZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3RyZWFtX3N0YXQoKQogICAgewogICAgICAgIGlmICgkdGhpcy0+c3RyZWFtLT5nZXRTaXplKCkgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljICRtb2RlTWFwID0gWwogICAgICAgICAgICAncicgPT4gMzMwNjAsCiAgICAgICAgICAgICdyYicgPT4gMzMwNjAsCiAgICAgICAgICAgICdyKycgPT4gMzMyMDYsCiAgICAgICAgICAgICd3JyA9PiAzMzE4OCwKICAgICAgICAgICAgJ3diJyA9PiAzMzE4OCwKICAgICAgICBdOwoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnZGV2JyA9PiAwLAogICAgICAgICAgICAnaW5vJyA9PiAwLAogICAgICAgICAgICAnbW9kZScgPT4gJG1vZGVNYXBbJHRoaXMtPm1vZGVdLAogICAgICAgICAgICAnbmxpbmsnID0+IDAsCiAgICAgICAgICAgICd1aWQnID0+IDAsCiAgICAgICAgICAgICdnaWQnID0+IDAsCiAgICAgICAgICAgICdyZGV2JyA9PiAwLAogICAgICAgICAgICAnc2l6ZScgPT4gJHRoaXMtPnN0cmVhbS0+Z2V0U2l6ZSgpID86IDAsCiAgICAgICAgICAgICdhdGltZScgPT4gMCwKICAgICAgICAgICAgJ210aW1lJyA9PiAwLAogICAgICAgICAgICAnY3RpbWUnID0+IDAsCiAgICAgICAgICAgICdibGtzaXplJyA9PiAwLAogICAgICAgICAgICAnYmxvY2tzJyA9PiAwLAogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIGFycmF5ewogICAgICogICBkZXY6IGludCwKICAgICAqICAgaW5vOiBpbnQsCiAgICAgKiAgIG1vZGU6IGludCwKICAgICAqICAgbmxpbms6IGludCwKICAgICAqICAgdWlkOiBpbnQsCiAgICAgKiAgIGdpZDogaW50LAogICAgICogICByZGV2OiBpbnQsCiAgICAgKiAgIHNpemU6IGludCwKICAgICAqICAgYXRpbWU6IGludCwKICAgICAqICAgbXRpbWU6IGludCwKICAgICAqICAgY3RpbWU6IGludCwKICAgICAqICAgYmxrc2l6ZTogaW50LAogICAgICogICBibG9ja3M6IGludAogICAgICogfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdXJsX3N0YXQoc3RyaW5nICRwYXRoLCBpbnQgJGZsYWdzKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnZGV2JyA9PiAwLAogICAgICAgICAgICAnaW5vJyA9PiAwLAogICAgICAgICAgICAnbW9kZScgPT4gMCwKICAgICAgICAgICAgJ25saW5rJyA9PiAwLAogICAgICAgICAgICAndWlkJyA9PiAwLAogICAgICAgICAgICAnZ2lkJyA9PiAwLAogICAgICAgICAgICAncmRldicgPT4gMCwKICAgICAgICAgICAgJ3NpemUnID0+IDAsCiAgICAgICAgICAgICdhdGltZScgPT4gMCwKICAgICAgICAgICAgJ210aW1lJyA9PiAwLAogICAgICAgICAgICAnY3RpbWUnID0+IDAsCiAgICAgICAgICAgICdibGtzaXplJyA9PiAwLAogICAgICAgICAgICAnYmxvY2tzJyA9PiAwLAogICAgICAgIF07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UploadedFile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCmNsYXNzIFVwbG9hZGVkRmlsZSBpbXBsZW1lbnRzIFVwbG9hZGVkRmlsZUludGVyZmFjZQp7CiAgICBwcml2YXRlIGNvbnN0IEVSUk9SX01BUCA9IFsKICAgICAgICBVUExPQURfRVJSX09LID0+ICdVUExPQURfRVJSX09LJywKICAgICAgICBVUExPQURfRVJSX0lOSV9TSVpFID0+ICdVUExPQURfRVJSX0lOSV9TSVpFJywKICAgICAgICBVUExPQURfRVJSX0ZPUk1fU0laRSA9PiAnVVBMT0FEX0VSUl9GT1JNX1NJWkUnLAogICAgICAgIFVQTE9BRF9FUlJfUEFSVElBTCA9PiAnVVBMT0FEX0VSUl9QQVJUSUFMJywKICAgICAgICBVUExPQURfRVJSX05PX0ZJTEUgPT4gJ1VQTE9BRF9FUlJfTk9fRklMRScsCiAgICAgICAgVVBMT0FEX0VSUl9OT19UTVBfRElSID0+ICdVUExPQURfRVJSX05PX1RNUF9ESVInLAogICAgICAgIFVQTE9BRF9FUlJfQ0FOVF9XUklURSA9PiAnVVBMT0FEX0VSUl9DQU5UX1dSSVRFJywKICAgICAgICBVUExPQURfRVJSX0VYVEVOU0lPTiA9PiAnVVBMT0FEX0VSUl9FWFRFTlNJT04nLAogICAgXTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nfG51bGwKICAgICAqLwogICAgcHJpdmF0ZSAkY2xpZW50RmlsZW5hbWU7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZ3xudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJGNsaWVudE1lZGlhVHlwZTsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGVycm9yOwoKICAgIC8qKgogICAgICogQHZhciBzdHJpbmd8bnVsbAogICAgICovCiAgICBwcml2YXRlICRmaWxlOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJG1vdmVkID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGludHxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHNpemU7CgogICAgLyoqCiAgICAgKiBAdmFyIFN0cmVhbUludGVyZmFjZXxudWxsCiAgICAgKi8KICAgIHByaXZhdGUgJHN0cmVhbTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2V8c3RyaW5nfHJlc291cmNlICRzdHJlYW1PckZpbGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KAogICAgICAgICRzdHJlYW1PckZpbGUsCiAgICAgICAgP2ludCAkc2l6ZSwKICAgICAgICBpbnQgJGVycm9yU3RhdHVzLAogICAgICAgID9zdHJpbmcgJGNsaWVudEZpbGVuYW1lID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRjbGllbnRNZWRpYVR5cGUgPSBudWxsCiAgICApIHsKICAgICAgICAkdGhpcy0+c2V0RXJyb3IoJGVycm9yU3RhdHVzKTsKICAgICAgICAkdGhpcy0+c2l6ZSA9ICRzaXplOwogICAgICAgICR0aGlzLT5jbGllbnRGaWxlbmFtZSA9ICRjbGllbnRGaWxlbmFtZTsKICAgICAgICAkdGhpcy0+Y2xpZW50TWVkaWFUeXBlID0gJGNsaWVudE1lZGlhVHlwZTsKCiAgICAgICAgaWYgKCR0aGlzLT5pc09rKCkpIHsKICAgICAgICAgICAgJHRoaXMtPnNldFN0cmVhbU9yRmlsZSgkc3RyZWFtT3JGaWxlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIHNldCBmaWxlIG9yIHN0cmVhbSB2YXJpYWJsZQogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2V8c3RyaW5nfHJlc291cmNlICRzdHJlYW1PckZpbGUKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldFN0cmVhbU9yRmlsZSgkc3RyZWFtT3JGaWxlKTogdm9pZAogICAgewogICAgICAgIGlmIChpc19zdHJpbmcoJHN0cmVhbU9yRmlsZSkpIHsKICAgICAgICAgICAgJHRoaXMtPmZpbGUgPSAkc3RyZWFtT3JGaWxlOwogICAgICAgIH0gZWxzZWlmIChpc19yZXNvdXJjZSgkc3RyZWFtT3JGaWxlKSkgewogICAgICAgICAgICAkdGhpcy0+c3RyZWFtID0gbmV3IFN0cmVhbSgkc3RyZWFtT3JGaWxlKTsKICAgICAgICB9IGVsc2VpZiAoJHN0cmVhbU9yRmlsZSBpbnN0YW5jZW9mIFN0cmVhbUludGVyZmFjZSkgewogICAgICAgICAgICAkdGhpcy0+c3RyZWFtID0gJHN0cmVhbU9yRmlsZTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ0ludmFsaWQgc3RyZWFtIG9yIGZpbGUgcHJvdmlkZWQgZm9yIFVwbG9hZGVkRmlsZScKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHNldEVycm9yKGludCAkZXJyb3IpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFpc3NldChVcGxvYWRlZEZpbGU6OkVSUk9SX01BUFskZXJyb3JdKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ0ludmFsaWQgZXJyb3Igc3RhdHVzIGZvciBVcGxvYWRlZEZpbGUnCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+ZXJyb3IgPSAkZXJyb3I7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaXNTdHJpbmdOb3RFbXB0eSgkcGFyYW0pOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIGlzX3N0cmluZygkcGFyYW0pICYmIGZhbHNlID09PSBlbXB0eSgkcGFyYW0pOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgbm8gdXBsb2FkIGVycm9yCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gaXNPaygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lcnJvciA9PT0gVVBMT0FEX0VSUl9PSzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNNb3ZlZCgpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tb3ZlZDsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiBpcyBtb3ZlZCBvciBub3Qgb2sKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiB2YWxpZGF0ZUFjdGl2ZSgpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+aXNPaygpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgcmV0cmlldmUgc3RyZWFtIGR1ZSB0byB1cGxvYWQgZXJyb3IgKCVzKScsIHNlbGY6OkVSUk9SX01BUFskdGhpcy0+ZXJyb3JdKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJHRoaXMtPmlzTW92ZWQoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignQ2Fubm90IHJldHJpZXZlIHN0cmVhbSBhZnRlciBpdCBoYXMgYWxyZWFkeSBiZWVuIG1vdmVkJyk7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJlYW0oKTogU3RyZWFtSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbGlkYXRlQWN0aXZlKCk7CgogICAgICAgIGlmICgkdGhpcy0+c3RyZWFtIGluc3RhbmNlb2YgU3RyZWFtSW50ZXJmYWNlKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+c3RyZWFtOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgc3RyaW5nICRmaWxlICovCiAgICAgICAgJGZpbGUgPSAkdGhpcy0+ZmlsZTsKCiAgICAgICAgcmV0dXJuIG5ldyBMYXp5T3BlblN0cmVhbSgkZmlsZSwgJ3IrJyk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG1vdmVUbygkdGFyZ2V0UGF0aCk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+dmFsaWRhdGVBY3RpdmUoKTsKCiAgICAgICAgaWYgKGZhbHNlID09PSBzZWxmOjppc1N0cmluZ05vdEVtcHR5KCR0YXJnZXRQYXRoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgJ0ludmFsaWQgcGF0aCBwcm92aWRlZCBmb3IgbW92ZSBvcGVyYXRpb247IG11c3QgYmUgYSBub24tZW1wdHkgc3RyaW5nJwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5maWxlKSB7CiAgICAgICAgICAgICR0aGlzLT5tb3ZlZCA9IFBIUF9TQVBJID09PSAnY2xpJwogICAgICAgICAgICAgICAgPyByZW5hbWUoJHRoaXMtPmZpbGUsICR0YXJnZXRQYXRoKQogICAgICAgICAgICAgICAgOiBtb3ZlX3VwbG9hZGVkX2ZpbGUoJHRoaXMtPmZpbGUsICR0YXJnZXRQYXRoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBVdGlsczo6Y29weVRvU3RyZWFtKAogICAgICAgICAgICAgICAgJHRoaXMtPmdldFN0cmVhbSgpLAogICAgICAgICAgICAgICAgbmV3IExhenlPcGVuU3RyZWFtKCR0YXJnZXRQYXRoLCAndycpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkdGhpcy0+bW92ZWQgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKGZhbHNlID09PSAkdGhpcy0+bW92ZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCdVcGxvYWRlZCBmaWxlIGNvdWxkIG5vdCBiZSBtb3ZlZCB0byAlcycsICR0YXJnZXRQYXRoKQogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaXplOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFcnJvcigpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVycm9yOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGllbnRGaWxlbmFtZSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jbGllbnRGaWxlbmFtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2xpZW50TWVkaWFUeXBlKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNsaWVudE1lZGlhVHlwZTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Uri.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBHdXp6bGVIdHRwXFBzcjdcRXhjZXB0aW9uXE1hbGZvcm1lZFVyaUV4Y2VwdGlvbjsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKLyoqCiAqIFBTUi03IFVSSSBpbXBsZW1lbnRhdGlvbi4KICoKICogQGF1dGhvciBNaWNoYWVsIERvd2xpbmcKICogQGF1dGhvciBUb2JpYXMgU2NodWx0emUKICogQGF1dGhvciBNYXR0aGV3IFdlaWVyIE8nUGhpbm5leQogKi8KY2xhc3MgVXJpIGltcGxlbWVudHMgVXJpSW50ZXJmYWNlLCBcSnNvblNlcmlhbGl6YWJsZQp7CiAgICAvKioKICAgICAqIEFic29sdXRlIGh0dHAgYW5kIGh0dHBzIFVSSXMgcmVxdWlyZSBhIGhvc3QgcGVyIFJGQyA3MjMwIFNlY3Rpb24gMi43CiAgICAgKiBidXQgaW4gZ2VuZXJpYyBVUklzIHRoZSBob3N0IGNhbiBiZSBlbXB0eS4gU28gZm9yIGh0dHAocykgVVJJcwogICAgICogd2UgYXBwbHkgdGhpcyBkZWZhdWx0IGhvc3Qgd2hlbiBubyBob3N0IGlzIGdpdmVuIHlldCB0byBmb3JtIGEKICAgICAqIHZhbGlkIFVSSS4KICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBIVFRQX0RFRkFVTFRfSE9TVCA9ICdsb2NhbGhvc3QnOwoKICAgIHByaXZhdGUgY29uc3QgREVGQVVMVF9QT1JUUyA9IFsKICAgICAgICAnaHR0cCcgPT4gODAsCiAgICAgICAgJ2h0dHBzJyA9PiA0NDMsCiAgICAgICAgJ2Z0cCcgPT4gMjEsCiAgICAgICAgJ2dvcGhlcicgPT4gNzAsCiAgICAgICAgJ25udHAnID0+IDExOSwKICAgICAgICAnbmV3cycgPT4gMTE5LAogICAgICAgICd0ZWxuZXQnID0+IDIzLAogICAgICAgICd0bjMyNzAnID0+IDIzLAogICAgICAgICdpbWFwJyA9PiAxNDMsCiAgICAgICAgJ3BvcCcgPT4gMTEwLAogICAgICAgICdsZGFwJyA9PiAzODksCiAgICBdOwoKICAgIC8qKgogICAgICogVW5yZXNlcnZlZCBjaGFyYWN0ZXJzIGZvciB1c2UgaW4gYSByZWdleC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIuMwogICAgICovCiAgICBwcml2YXRlIGNvbnN0IENIQVJfVU5SRVNFUlZFRCA9ICdhLXpBLVowLTlfXC1cLn4nOwoKICAgIC8qKgogICAgICogU3ViLWRlbGltcyBmb3IgdXNlIGluIGEgcmVnZXguCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yLjIKICAgICAqLwogICAgcHJpdmF0ZSBjb25zdCBDSEFSX1NVQl9ERUxJTVMgPSAnIVwkJlwnXChcKVwqXCssOz0nOwogICAgcHJpdmF0ZSBjb25zdCBRVUVSWV9TRVBBUkFUT1JTX1JFUExBQ0VNRU5UID0gWyc9JyA9PiAnJTNEJywgJyYnID0+ICclMjYnLCAnKycgPT4gJyUyQiddOwoKICAgIC8qKiBAdmFyIHN0cmluZyBVcmkgc2NoZW1lLiAqLwogICAgcHJpdmF0ZSAkc2NoZW1lID0gJyc7CgogICAgLyoqIEB2YXIgc3RyaW5nIFVyaSB1c2VyIGluZm8uICovCiAgICBwcml2YXRlICR1c2VySW5mbyA9ICcnOwoKICAgIC8qKiBAdmFyIHN0cmluZyBVcmkgaG9zdC4gKi8KICAgIHByaXZhdGUgJGhvc3QgPSAnJzsKCiAgICAvKiogQHZhciBpbnR8bnVsbCBVcmkgcG9ydC4gKi8KICAgIHByaXZhdGUgJHBvcnQ7CgogICAgLyoqIEB2YXIgc3RyaW5nIFVyaSBwYXRoLiAqLwogICAgcHJpdmF0ZSAkcGF0aCA9ICcnOwoKICAgIC8qKiBAdmFyIHN0cmluZyBVcmkgcXVlcnkgc3RyaW5nLiAqLwogICAgcHJpdmF0ZSAkcXVlcnkgPSAnJzsKCiAgICAvKiogQHZhciBzdHJpbmcgVXJpIGZyYWdtZW50LiAqLwogICAgcHJpdmF0ZSAkZnJhZ21lbnQgPSAnJzsKCiAgICAvKiogQHZhciBzdHJpbmd8bnVsbCBTdHJpbmcgcmVwcmVzZW50YXRpb24gKi8KICAgIHByaXZhdGUgJGNvbXBvc2VkQ29tcG9uZW50czsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICR1cmkgPSAnJykKICAgIHsKICAgICAgICBpZiAoJHVyaSAhPT0gJycpIHsKICAgICAgICAgICAgJHBhcnRzID0gc2VsZjo6cGFyc2UoJHVyaSk7CiAgICAgICAgICAgIGlmICgkcGFydHMgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTWFsZm9ybWVkVXJpRXhjZXB0aW9uKCJVbmFibGUgdG8gcGFyc2UgVVJJOiAkdXJpIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRoaXMtPmFwcGx5UGFydHMoJHBhcnRzKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBVVEYtOCBhd2FyZSBccGFyc2VfdXJsKCkgcmVwbGFjZW1lbnQuCiAgICAgKgogICAgICogVGhlIGludGVybmFsIGZ1bmN0aW9uIHByb2R1Y2VzIGJyb2tlbiBvdXRwdXQgZm9yIG5vbiBBU0NJSSBkb21haW4gbmFtZXMKICAgICAqIChJRE4pIHdoZW4gdXNlZCB3aXRoIGxvY2FsZXMgb3RoZXIgdGhhbiAiQyIuCiAgICAgKgogICAgICogT24gdGhlIG90aGVyIGhhbmQsIGNVUkwgdW5kZXJzdGFuZHMgSUROIGNvcnJlY3RseSBvbmx5IHdoZW4gVVRGLTggbG9jYWxlCiAgICAgKiBpcyBjb25maWd1cmVkICgiQy5VVEYtOCIsICJlbl9VUy5VVEYtOCIsIGV0Yy4pLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9idWdzLnBocC5uZXQvYnVnLnBocD9pZD01MjkyMwogICAgICogQHNlZSBodHRwczovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5wYXJzZS11cmwucGhwIzExNDgxNwogICAgICogQHNlZSBodHRwczovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvQ1VSTE9QVF9VUkwuaHRtbCNFTkNPRElORwogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXl8ZmFsc2UKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcGFyc2Uoc3RyaW5nICR1cmwpCiAgICB7CiAgICAgICAgLy8gSWYgSVB2NgogICAgICAgICRwcmVmaXggPSAnJzsKICAgICAgICBpZiAocHJlZ19tYXRjaCgnJV4oLio6Ly9cW1swLTk6YS1mQS1GXStcXSkoLio/KSQlJywgJHVybCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgIC8qKiBAdmFyIGFycmF5ezA6c3RyaW5nLCAxOnN0cmluZywgMjpzdHJpbmd9ICRtYXRjaGVzICovCiAgICAgICAgICAgICRwcmVmaXggPSAkbWF0Y2hlc1sxXTsKICAgICAgICAgICAgJHVybCA9ICRtYXRjaGVzWzJdOwogICAgICAgIH0KCiAgICAgICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICAgICAgJGVuY29kZWRVcmwgPSBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICclW146L0A/Jj0jXSsldXNEJywKICAgICAgICAgICAgc3RhdGljIGZ1bmN0aW9uICgkbWF0Y2hlcykgewogICAgICAgICAgICAgICAgcmV0dXJuIHVybGVuY29kZSgkbWF0Y2hlc1swXSk7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICR1cmwKICAgICAgICApOwoKICAgICAgICAkcmVzdWx0ID0gcGFyc2VfdXJsKCRwcmVmaXguJGVuY29kZWRVcmwpOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5X21hcCgndXJsZGVjb2RlJywgJHJlc3VsdCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5jb21wb3NlZENvbXBvbmVudHMgPT09IG51bGwpIHsKICAgICAgICAgICAgJHRoaXMtPmNvbXBvc2VkQ29tcG9uZW50cyA9IHNlbGY6OmNvbXBvc2VDb21wb25lbnRzKAogICAgICAgICAgICAgICAgJHRoaXMtPnNjaGVtZSwKICAgICAgICAgICAgICAgICR0aGlzLT5nZXRBdXRob3JpdHkoKSwKICAgICAgICAgICAgICAgICR0aGlzLT5wYXRoLAogICAgICAgICAgICAgICAgJHRoaXMtPnF1ZXJ5LAogICAgICAgICAgICAgICAgJHRoaXMtPmZyYWdtZW50CiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXBvc2VkQ29tcG9uZW50czsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBvc2VzIGEgVVJJIHJlZmVyZW5jZSBzdHJpbmcgZnJvbSBpdHMgdmFyaW91cyBjb21wb25lbnRzLgogICAgICoKICAgICAqIFVzdWFsbHkgdGhpcyBtZXRob2QgZG9lcyBub3QgbmVlZCB0byBiZSBjYWxsZWQgbWFudWFsbHkgYnV0IGluc3RlYWQgaXMgdXNlZCBpbmRpcmVjdGx5IHZpYQogICAgICogYFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOjpfX3RvU3RyaW5nYC4KICAgICAqCiAgICAgKiBQU1ItNyBVcmlJbnRlcmZhY2UgdHJlYXRzIGFuIGVtcHR5IGNvbXBvbmVudCB0aGUgc2FtZSBhcyBhIG1pc3NpbmcgY29tcG9uZW50IGFzCiAgICAgKiBnZXRRdWVyeSgpLCBnZXRGcmFnbWVudCgpIGV0Yy4gYWx3YXlzIHJldHVybiBhIHN0cmluZy4gVGhpcyBleHBsYWlucyB0aGUgc2xpZ2h0CiAgICAgKiBkaWZmZXJlbmNlIHRvIFJGQyAzOTg2IFNlY3Rpb24gNS4zLgogICAgICoKICAgICAqIEFub3RoZXIgYWRqdXN0bWVudCBpcyB0aGF0IHRoZSBhdXRob3JpdHkgc2VwYXJhdG9yIGlzIGFkZGVkIGV2ZW4gd2hlbiB0aGUgYXV0aG9yaXR5IGlzIG1pc3NpbmcvZW1wdHkKICAgICAqIGZvciB0aGUgImZpbGUiIHNjaGVtZS4gVGhpcyBpcyBiZWNhdXNlIFBIUCBzdHJlYW0gZnVuY3Rpb25zIGxpa2UgYGZpbGVfZ2V0X2NvbnRlbnRzYCBvbmx5IHdvcmsgd2l0aAogICAgICogYGZpbGU6Ly8vbXlmaWxlYCBidXQgbm90IHdpdGggYGZpbGU6L215ZmlsZWAgYWx0aG91Z2ggdGhleSBhcmUgZXF1aXZhbGVudCBhY2NvcmRpbmcgdG8gUkZDIDM5ODYuIEJ1dAogICAgICogYGZpbGU6Ly8vYCBpcyB0aGUgbW9yZSBjb21tb24gc3ludGF4IGZvciB0aGUgZmlsZSBzY2hlbWUgYW55d2F5IChDaHJvbWUgZm9yIGV4YW1wbGUgcmVkaXJlY3RzIHRvCiAgICAgKiB0aGF0IGZvcm1hdCkuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wb3NlQ29tcG9uZW50cyg/c3RyaW5nICRzY2hlbWUsID9zdHJpbmcgJGF1dGhvcml0eSwgc3RyaW5nICRwYXRoLCA/c3RyaW5nICRxdWVyeSwgP3N0cmluZyAkZnJhZ21lbnQpOiBzdHJpbmcKICAgIHsKICAgICAgICAkdXJpID0gJyc7CgogICAgICAgIC8vIHdlYWsgdHlwZSBjaGVja3MgdG8gYWxzbyBhY2NlcHQgbnVsbCB1bnRpbCB3ZSBjYW4gYWRkIHNjYWxhciB0eXBlIGhpbnRzCiAgICAgICAgaWYgKCRzY2hlbWUgIT0gJycpIHsKICAgICAgICAgICAgJHVyaSAuPSAkc2NoZW1lLic6JzsKICAgICAgICB9CgogICAgICAgIGlmICgkYXV0aG9yaXR5ICE9ICcnIHx8ICRzY2hlbWUgPT09ICdmaWxlJykgewogICAgICAgICAgICAkdXJpIC49ICcvLycuJGF1dGhvcml0eTsKICAgICAgICB9CgogICAgICAgIGlmICgkYXV0aG9yaXR5ICE9ICcnICYmICRwYXRoICE9ICcnICYmICRwYXRoWzBdICE9ICcvJykgewogICAgICAgICAgICAkcGF0aCA9ICcvJy4kcGF0aDsKICAgICAgICB9CgogICAgICAgICR1cmkgLj0gJHBhdGg7CgogICAgICAgIGlmICgkcXVlcnkgIT0gJycpIHsKICAgICAgICAgICAgJHVyaSAuPSAnPycuJHF1ZXJ5OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmcmFnbWVudCAhPSAnJykgewogICAgICAgICAgICAkdXJpIC49ICcjJy4kZnJhZ21lbnQ7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVyaTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIFVSSSBoYXMgdGhlIGRlZmF1bHQgcG9ydCBvZiB0aGUgY3VycmVudCBzY2hlbWUuCiAgICAgKgogICAgICogYFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOjpnZXRQb3J0YCBtYXkgcmV0dXJuIG51bGwgb3IgdGhlIHN0YW5kYXJkIHBvcnQuIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkCiAgICAgKiBpbmRlcGVuZGVudGx5IG9mIHRoZSBpbXBsZW1lbnRhdGlvbi4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0RlZmF1bHRQb3J0KFVyaUludGVyZmFjZSAkdXJpKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdXJpLT5nZXRQb3J0KCkgPT09IG51bGwKICAgICAgICAgICAgfHwgKGlzc2V0KHNlbGY6OkRFRkFVTFRfUE9SVFNbJHVyaS0+Z2V0U2NoZW1lKCldKSAmJiAkdXJpLT5nZXRQb3J0KCkgPT09IHNlbGY6OkRFRkFVTFRfUE9SVFNbJHVyaS0+Z2V0U2NoZW1lKCldKTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIFVSSSBpcyBhYnNvbHV0ZSwgaS5lLiBpdCBoYXMgYSBzY2hlbWUuCiAgICAgKgogICAgICogQW4gaW5zdGFuY2Ugb2YgVXJpSW50ZXJmYWNlIGNhbiBlaXRoZXIgYmUgYW4gYWJzb2x1dGUgVVJJIG9yIGEgcmVsYXRpdmUgcmVmZXJlbmNlLiBUaGlzIG1ldGhvZCByZXR1cm5zIHRydWUKICAgICAqIGlmIGl0IGlzIHRoZSBmb3JtZXIuIEFuIGFic29sdXRlIFVSSSBoYXMgYSBzY2hlbWUuIEEgcmVsYXRpdmUgcmVmZXJlbmNlIGlzIHVzZWQgdG8gZXhwcmVzcyBhIFVSSSByZWxhdGl2ZQogICAgICogdG8gYW5vdGhlciBVUkksIHRoZSBiYXNlIFVSSS4gUmVsYXRpdmUgcmVmZXJlbmNlcyBjYW4gYmUgZGl2aWRlZCBpbnRvIHNldmVyYWwgZm9ybXM6CiAgICAgKiAtIG5ldHdvcmstcGF0aCByZWZlcmVuY2VzLCBlLmcuICcvL2V4YW1wbGUuY29tL3BhdGgnCiAgICAgKiAtIGFic29sdXRlLXBhdGggcmVmZXJlbmNlcywgZS5nLiAnL3BhdGgnCiAgICAgKiAtIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlcywgZS5nLiAnc3VicGF0aCcKICAgICAqCiAgICAgKiBAc2VlIFVyaTo6aXNOZXR3b3JrUGF0aFJlZmVyZW5jZQogICAgICogQHNlZSBVcmk6OmlzQWJzb2x1dGVQYXRoUmVmZXJlbmNlCiAgICAgKiBAc2VlIFVyaTo6aXNSZWxhdGl2ZVBhdGhSZWZlcmVuY2UKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzQWJzb2x1dGUoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR1cmktPmdldFNjaGVtZSgpICE9PSAnJzsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIFVSSSBpcyBhIG5ldHdvcmstcGF0aCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQSByZWxhdGl2ZSByZWZlcmVuY2UgdGhhdCBiZWdpbnMgd2l0aCB0d28gc2xhc2ggY2hhcmFjdGVycyBpcyB0ZXJtZWQgYW4gbmV0d29yay1wYXRoIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzTmV0d29ya1BhdGhSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR1cmktPmdldFNjaGVtZSgpID09PSAnJyAmJiAkdXJpLT5nZXRBdXRob3JpdHkoKSAhPT0gJyc7CiAgICB9CgogICAgLyoqCiAgICAgKiBXaGV0aGVyIHRoZSBVUkkgaXMgYSBhYnNvbHV0ZS1wYXRoIHJlZmVyZW5jZS4KICAgICAqCiAgICAgKiBBIHJlbGF0aXZlIHJlZmVyZW5jZSB0aGF0IGJlZ2lucyB3aXRoIGEgc2luZ2xlIHNsYXNoIGNoYXJhY3RlciBpcyB0ZXJtZWQgYW4gYWJzb2x1dGUtcGF0aCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc0Fic29sdXRlUGF0aFJlZmVyZW5jZShVcmlJbnRlcmZhY2UgJHVyaSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICcnCiAgICAgICAgICAgICYmICR1cmktPmdldEF1dGhvcml0eSgpID09PSAnJwogICAgICAgICAgICAmJiBpc3NldCgkdXJpLT5nZXRQYXRoKClbMF0pCiAgICAgICAgICAgICYmICR1cmktPmdldFBhdGgoKVswXSA9PT0gJy8nOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0aGUgVVJJIGlzIGEgcmVsYXRpdmUtcGF0aCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQSByZWxhdGl2ZSByZWZlcmVuY2UgdGhhdCBkb2VzIG5vdCBiZWdpbiB3aXRoIGEgc2xhc2ggY2hhcmFjdGVyIGlzIHRlcm1lZCBhIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4yCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNSZWxhdGl2ZVBhdGhSZWZlcmVuY2UoVXJpSW50ZXJmYWNlICR1cmkpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICR1cmktPmdldFNjaGVtZSgpID09PSAnJwogICAgICAgICAgICAmJiAkdXJpLT5nZXRBdXRob3JpdHkoKSA9PT0gJycKICAgICAgICAgICAgJiYgKCFpc3NldCgkdXJpLT5nZXRQYXRoKClbMF0pIHx8ICR1cmktPmdldFBhdGgoKVswXSAhPT0gJy8nKTsKICAgIH0KCiAgICAvKioKICAgICAqIFdoZXRoZXIgdGhlIFVSSSBpcyBhIHNhbWUtZG9jdW1lbnQgcmVmZXJlbmNlLgogICAgICoKICAgICAqIEEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UgcmVmZXJzIHRvIGEgVVJJIHRoYXQgaXMsIGFzaWRlIGZyb20gaXRzIGZyYWdtZW50CiAgICAgKiBjb21wb25lbnQsIGlkZW50aWNhbCB0byB0aGUgYmFzZSBVUkkuIFdoZW4gbm8gYmFzZSBVUkkgaXMgZ2l2ZW4sIG9ubHkgYW4gZW1wdHkKICAgICAqIFVSSSByZWZlcmVuY2UgKGFwYXJ0IGZyb20gaXRzIGZyYWdtZW50KSBpcyBjb25zaWRlcmVkIGEgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAgICAgICR1cmkgIFRoZSBVUkkgdG8gY2hlY2sKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2V8bnVsbCAkYmFzZSBBbiBvcHRpb25hbCBiYXNlIFVSSSB0byBjb21wYXJlIGFnYWluc3QKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuNAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzU2FtZURvY3VtZW50UmVmZXJlbmNlKFVyaUludGVyZmFjZSAkdXJpLCA/VXJpSW50ZXJmYWNlICRiYXNlID0gbnVsbCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoJGJhc2UgIT09IG51bGwpIHsKICAgICAgICAgICAgJHVyaSA9IFVyaVJlc29sdmVyOjpyZXNvbHZlKCRiYXNlLCAkdXJpKTsKCiAgICAgICAgICAgIHJldHVybiAoJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICRiYXNlLT5nZXRTY2hlbWUoKSkKICAgICAgICAgICAgICAgICYmICgkdXJpLT5nZXRBdXRob3JpdHkoKSA9PT0gJGJhc2UtPmdldEF1dGhvcml0eSgpKQogICAgICAgICAgICAgICAgJiYgKCR1cmktPmdldFBhdGgoKSA9PT0gJGJhc2UtPmdldFBhdGgoKSkKICAgICAgICAgICAgICAgICYmICgkdXJpLT5nZXRRdWVyeSgpID09PSAkYmFzZS0+Z2V0UXVlcnkoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICcnICYmICR1cmktPmdldEF1dGhvcml0eSgpID09PSAnJyAmJiAkdXJpLT5nZXRQYXRoKCkgPT09ICcnICYmICR1cmktPmdldFF1ZXJ5KCkgPT09ICcnOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBVUkkgd2l0aCBhIHNwZWNpZmljIHF1ZXJ5IHN0cmluZyB2YWx1ZSByZW1vdmVkLgogICAgICoKICAgICAqIEFueSBleGlzdGluZyBxdWVyeSBzdHJpbmcgdmFsdWVzIHRoYXQgZXhhY3RseSBtYXRjaCB0aGUgcHJvdmlkZWQga2V5IGFyZQogICAgICogcmVtb3ZlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlICR1cmkgVVJJIHRvIHVzZSBhcyBhIGJhc2UuCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICRrZXkgUXVlcnkgc3RyaW5nIGtleSB0byByZW1vdmUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd2l0aG91dFF1ZXJ5VmFsdWUoVXJpSW50ZXJmYWNlICR1cmksIHN0cmluZyAka2V5KTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHJlc3VsdCA9IHNlbGY6OmdldEZpbHRlcmVkUXVlcnlTdHJpbmcoJHVyaSwgWyRrZXldKTsKCiAgICAgICAgcmV0dXJuICR1cmktPndpdGhRdWVyeShpbXBsb2RlKCcmJywgJHJlc3VsdCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBVUkkgd2l0aCBhIHNwZWNpZmljIHF1ZXJ5IHN0cmluZyB2YWx1ZS4KICAgICAqCiAgICAgKiBBbnkgZXhpc3RpbmcgcXVlcnkgc3RyaW5nIHZhbHVlcyB0aGF0IGV4YWN0bHkgbWF0Y2ggdGhlIHByb3ZpZGVkIGtleSBhcmUKICAgICAqIHJlbW92ZWQgYW5kIHJlcGxhY2VkIHdpdGggdGhlIGdpdmVuIGtleSB2YWx1ZSBwYWlyLgogICAgICoKICAgICAqIEEgdmFsdWUgb2YgbnVsbCB3aWxsIHNldCB0aGUgcXVlcnkgc3RyaW5nIGtleSB3aXRob3V0IGEgdmFsdWUsIGUuZy4gImtleSIKICAgICAqIGluc3RlYWQgb2YgImtleT12YWx1ZSIuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpICAgVVJJIHRvIHVzZSBhcyBhIGJhc2UuCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICRrZXkgICBLZXkgdG8gc2V0LgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICAkdmFsdWUgVmFsdWUgdG8gc2V0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd2l0aFF1ZXJ5VmFsdWUoVXJpSW50ZXJmYWNlICR1cmksIHN0cmluZyAka2V5LCA/c3RyaW5nICR2YWx1ZSk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRyZXN1bHQgPSBzZWxmOjpnZXRGaWx0ZXJlZFF1ZXJ5U3RyaW5nKCR1cmksIFska2V5XSk7CgogICAgICAgICRyZXN1bHRbXSA9IHNlbGY6OmdlbmVyYXRlUXVlcnlTdHJpbmcoJGtleSwgJHZhbHVlKTsKCiAgICAgICAgcmV0dXJuICR1cmktPndpdGhRdWVyeShpbXBsb2RlKCcmJywgJHJlc3VsdCkpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG5ldyBVUkkgd2l0aCBtdWx0aXBsZSBzcGVjaWZpYyBxdWVyeSBzdHJpbmcgdmFsdWVzLgogICAgICoKICAgICAqIEl0IGhhcyB0aGUgc2FtZSBiZWhhdmlvciBhcyB3aXRoUXVlcnlWYWx1ZSgpIGJ1dCBmb3IgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb2Yga2V5ID0+IHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgICAgJHVyaSAgICAgICAgICAgVVJJIHRvIHVzZSBhcyBhIGJhc2UuCiAgICAgKiBAcGFyYW0gKHN0cmluZ3xudWxsKVtdICRrZXlWYWx1ZUFycmF5IEFzc29jaWF0aXZlIGFycmF5IG9mIGtleSBhbmQgdmFsdWVzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd2l0aFF1ZXJ5VmFsdWVzKFVyaUludGVyZmFjZSAkdXJpLCBhcnJheSAka2V5VmFsdWVBcnJheSk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRyZXN1bHQgPSBzZWxmOjpnZXRGaWx0ZXJlZFF1ZXJ5U3RyaW5nKCR1cmksIGFycmF5X2tleXMoJGtleVZhbHVlQXJyYXkpKTsKCiAgICAgICAgZm9yZWFjaCAoJGtleVZhbHVlQXJyYXkgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgJHJlc3VsdFtdID0gc2VsZjo6Z2VuZXJhdGVRdWVyeVN0cmluZygoc3RyaW5nKSAka2V5LCAkdmFsdWUgIT09IG51bGwgPyAoc3RyaW5nKSAkdmFsdWUgOiBudWxsKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpLT53aXRoUXVlcnkoaW1wbG9kZSgnJicsICRyZXN1bHQpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBVUkkgZnJvbSBhIGhhc2ggb2YgYHBhcnNlX3VybGAgY29tcG9uZW50cy4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vd3d3LnBocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLnBhcnNlLXVybC5waHAKICAgICAqCiAgICAgKiBAdGhyb3dzIE1hbGZvcm1lZFVyaUV4Y2VwdGlvbiBJZiB0aGUgY29tcG9uZW50cyBkbyBub3QgZm9ybSBhIHZhbGlkIFVSSS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcm9tUGFydHMoYXJyYXkgJHBhcnRzKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHVyaSA9IG5ldyBzZWxmKCk7CiAgICAgICAgJHVyaS0+YXBwbHlQYXJ0cygkcGFydHMpOwogICAgICAgICR1cmktPnZhbGlkYXRlU3RhdGUoKTsKCiAgICAgICAgcmV0dXJuICR1cmk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFNjaGVtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNjaGVtZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXV0aG9yaXR5KCk6IHN0cmluZwogICAgewogICAgICAgICRhdXRob3JpdHkgPSAkdGhpcy0+aG9zdDsKICAgICAgICBpZiAoJHRoaXMtPnVzZXJJbmZvICE9PSAnJykgewogICAgICAgICAgICAkYXV0aG9yaXR5ID0gJHRoaXMtPnVzZXJJbmZvLidAJy4kYXV0aG9yaXR5OwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5wb3J0ICE9PSBudWxsKSB7CiAgICAgICAgICAgICRhdXRob3JpdHkgLj0gJzonLiR0aGlzLT5wb3J0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRhdXRob3JpdHk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXJJbmZvKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dXNlckluZm87CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEhvc3QoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5ob3N0OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3J0KCk6ID9pbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvcnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhdGgoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wYXRoOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnF1ZXJ5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFnbWVudCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmZyYWdtZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU2NoZW1lKCRzY2hlbWUpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkc2NoZW1lID0gJHRoaXMtPmZpbHRlclNjaGVtZSgkc2NoZW1lKTsKCiAgICAgICAgaWYgKCR0aGlzLT5zY2hlbWUgPT09ICRzY2hlbWUpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzOwogICAgICAgIH0KCiAgICAgICAgJG5ldyA9IGNsb25lICR0aGlzOwogICAgICAgICRuZXctPnNjaGVtZSA9ICRzY2hlbWU7CiAgICAgICAgJG5ldy0+Y29tcG9zZWRDb21wb25lbnRzID0gbnVsbDsKICAgICAgICAkbmV3LT5yZW1vdmVEZWZhdWx0UG9ydCgpOwogICAgICAgICRuZXctPnZhbGlkYXRlU3RhdGUoKTsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbygkdXNlciwgJHBhc3N3b3JkID0gbnVsbCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRpbmZvID0gJHRoaXMtPmZpbHRlclVzZXJJbmZvQ29tcG9uZW50KCR1c2VyKTsKICAgICAgICBpZiAoJHBhc3N3b3JkICE9PSBudWxsKSB7CiAgICAgICAgICAgICRpbmZvIC49ICc6Jy4kdGhpcy0+ZmlsdGVyVXNlckluZm9Db21wb25lbnQoJHBhc3N3b3JkKTsKICAgICAgICB9CgogICAgICAgIGlmICgkdGhpcy0+dXNlckluZm8gPT09ICRpbmZvKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT51c2VySW5mbyA9ICRpbmZvOwogICAgICAgICRuZXctPmNvbXBvc2VkQ29tcG9uZW50cyA9IG51bGw7CiAgICAgICAgJG5ldy0+dmFsaWRhdGVTdGF0ZSgpOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhvc3QoJGhvc3QpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkaG9zdCA9ICR0aGlzLT5maWx0ZXJIb3N0KCRob3N0KTsKCiAgICAgICAgaWYgKCR0aGlzLT5ob3N0ID09PSAkaG9zdCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+aG9zdCA9ICRob3N0OwogICAgICAgICRuZXctPmNvbXBvc2VkQ29tcG9uZW50cyA9IG51bGw7CiAgICAgICAgJG5ldy0+dmFsaWRhdGVTdGF0ZSgpOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBvcnQoJHBvcnQpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcG9ydCA9ICR0aGlzLT5maWx0ZXJQb3J0KCRwb3J0KTsKCiAgICAgICAgaWYgKCR0aGlzLT5wb3J0ID09PSAkcG9ydCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+cG9ydCA9ICRwb3J0OwogICAgICAgICRuZXctPmNvbXBvc2VkQ29tcG9uZW50cyA9IG51bGw7CiAgICAgICAgJG5ldy0+cmVtb3ZlRGVmYXVsdFBvcnQoKTsKICAgICAgICAkbmV3LT52YWxpZGF0ZVN0YXRlKCk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUGF0aCgkcGF0aCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRwYXRoID0gJHRoaXMtPmZpbHRlclBhdGgoJHBhdGgpOwoKICAgICAgICBpZiAoJHRoaXMtPnBhdGggPT09ICRwYXRoKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT5wYXRoID0gJHBhdGg7CiAgICAgICAgJG5ldy0+Y29tcG9zZWRDb21wb25lbnRzID0gbnVsbDsKICAgICAgICAkbmV3LT52YWxpZGF0ZVN0YXRlKCk7CgogICAgICAgIHJldHVybiAkbmV3OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUXVlcnkoJHF1ZXJ5KTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJHRoaXMtPmZpbHRlclF1ZXJ5QW5kRnJhZ21lbnQoJHF1ZXJ5KTsKCiAgICAgICAgaWYgKCR0aGlzLT5xdWVyeSA9PT0gJHF1ZXJ5KSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpczsKICAgICAgICB9CgogICAgICAgICRuZXcgPSBjbG9uZSAkdGhpczsKICAgICAgICAkbmV3LT5xdWVyeSA9ICRxdWVyeTsKICAgICAgICAkbmV3LT5jb21wb3NlZENvbXBvbmVudHMgPSBudWxsOwoKICAgICAgICByZXR1cm4gJG5ldzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZyYWdtZW50KCRmcmFnbWVudCk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICRmcmFnbWVudCA9ICR0aGlzLT5maWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRmcmFnbWVudCk7CgogICAgICAgIGlmICgkdGhpcy0+ZnJhZ21lbnQgPT09ICRmcmFnbWVudCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkbmV3ID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJG5ldy0+ZnJhZ21lbnQgPSAkZnJhZ21lbnQ7CiAgICAgICAgJG5ldy0+Y29tcG9zZWRDb21wb25lbnRzID0gbnVsbDsKCiAgICAgICAgcmV0dXJuICRuZXc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5fX3RvU3RyaW5nKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBcHBseSBwYXJzZV91cmwgcGFydHMgdG8gYSBVUkkuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRwYXJ0cyBBcnJheSBvZiBwYXJzZV91cmwgcGFydHMgdG8gYXBwbHkuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gYXBwbHlQYXJ0cyhhcnJheSAkcGFydHMpOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPnNjaGVtZSA9IGlzc2V0KCRwYXJ0c1snc2NoZW1lJ10pCiAgICAgICAgICAgID8gJHRoaXMtPmZpbHRlclNjaGVtZSgkcGFydHNbJ3NjaGVtZSddKQogICAgICAgICAgICA6ICcnOwogICAgICAgICR0aGlzLT51c2VySW5mbyA9IGlzc2V0KCRwYXJ0c1sndXNlciddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJVc2VySW5mb0NvbXBvbmVudCgkcGFydHNbJ3VzZXInXSkKICAgICAgICAgICAgOiAnJzsKICAgICAgICAkdGhpcy0+aG9zdCA9IGlzc2V0KCRwYXJ0c1snaG9zdCddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJIb3N0KCRwYXJ0c1snaG9zdCddKQogICAgICAgICAgICA6ICcnOwogICAgICAgICR0aGlzLT5wb3J0ID0gaXNzZXQoJHBhcnRzWydwb3J0J10pCiAgICAgICAgICAgID8gJHRoaXMtPmZpbHRlclBvcnQoJHBhcnRzWydwb3J0J10pCiAgICAgICAgICAgIDogbnVsbDsKICAgICAgICAkdGhpcy0+cGF0aCA9IGlzc2V0KCRwYXJ0c1sncGF0aCddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJQYXRoKCRwYXJ0c1sncGF0aCddKQogICAgICAgICAgICA6ICcnOwogICAgICAgICR0aGlzLT5xdWVyeSA9IGlzc2V0KCRwYXJ0c1sncXVlcnknXSkKICAgICAgICAgICAgPyAkdGhpcy0+ZmlsdGVyUXVlcnlBbmRGcmFnbWVudCgkcGFydHNbJ3F1ZXJ5J10pCiAgICAgICAgICAgIDogJyc7CiAgICAgICAgJHRoaXMtPmZyYWdtZW50ID0gaXNzZXQoJHBhcnRzWydmcmFnbWVudCddKQogICAgICAgICAgICA/ICR0aGlzLT5maWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRwYXJ0c1snZnJhZ21lbnQnXSkKICAgICAgICAgICAgOiAnJzsKICAgICAgICBpZiAoaXNzZXQoJHBhcnRzWydwYXNzJ10pKSB7CiAgICAgICAgICAgICR0aGlzLT51c2VySW5mbyAuPSAnOicuJHRoaXMtPmZpbHRlclVzZXJJbmZvQ29tcG9uZW50KCRwYXJ0c1sncGFzcyddKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5yZW1vdmVEZWZhdWx0UG9ydCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRzY2hlbWUKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIHNjaGVtZSBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlclNjaGVtZSgkc2NoZW1lKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJHNjaGVtZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1NjaGVtZSBtdXN0IGJlIGEgc3RyaW5nJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXHN0cnRyKCRzY2hlbWUsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicsICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRjb21wb25lbnQKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIHVzZXIgaW5mbyBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlclVzZXJJbmZvQ29tcG9uZW50KCRjb21wb25lbnQpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkY29tcG9uZW50KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVXNlciBpbmZvIG11c3QgYmUgYSBzdHJpbmcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcvKD86W14lJy5zZWxmOjpDSEFSX1VOUkVTRVJWRUQuc2VsZjo6Q0hBUl9TVUJfREVMSU1TLiddK3wlKD8hW0EtRmEtZjAtOV17Mn0pKS8nLAogICAgICAgICAgICBbJHRoaXMsICdyYXd1cmxlbmNvZGVNYXRjaFplcm8nXSwKICAgICAgICAgICAgJGNvbXBvbmVudAogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJGhvc3QKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gSWYgdGhlIGhvc3QgaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJIb3N0KCRob3N0KTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGhvc3QpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdIb3N0IG11c3QgYmUgYSBzdHJpbmcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcc3RydHIoJGhvc3QsICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicsICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIG1peGVkICRwb3J0CiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBwb3J0IGlzIGludmFsaWQuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmlsdGVyUG9ydCgkcG9ydCk6ID9pbnQKICAgIHsKICAgICAgICBpZiAoJHBvcnQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICAkcG9ydCA9IChpbnQpICRwb3J0OwogICAgICAgIGlmICgwID4gJHBvcnQgfHwgMHhGRkZGIDwgJHBvcnQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBzcHJpbnRmKCdJbnZhbGlkIHBvcnQ6ICVkLiBNdXN0IGJlIGJldHdlZW4gMCBhbmQgNjU1MzUnLCAkcG9ydCkKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcG9ydDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSAoc3RyaW5nfGludClbXSAka2V5cwogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW10KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RmlsdGVyZWRRdWVyeVN0cmluZyhVcmlJbnRlcmZhY2UgJHVyaSwgYXJyYXkgJGtleXMpOiBhcnJheQogICAgewogICAgICAgICRjdXJyZW50ID0gJHVyaS0+Z2V0UXVlcnkoKTsKCiAgICAgICAgaWYgKCRjdXJyZW50ID09PSAnJykgewogICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgfQoKICAgICAgICAkZGVjb2RlZEtleXMgPSBhcnJheV9tYXAoZnVuY3Rpb24gKCRrKTogc3RyaW5nIHsKICAgICAgICAgICAgcmV0dXJuIHJhd3VybGRlY29kZSgoc3RyaW5nKSAkayk7CiAgICAgICAgfSwgJGtleXMpOwoKICAgICAgICByZXR1cm4gYXJyYXlfZmlsdGVyKGV4cGxvZGUoJyYnLCAkY3VycmVudCksIGZ1bmN0aW9uICgkcGFydCkgdXNlICgkZGVjb2RlZEtleXMpIHsKICAgICAgICAgICAgcmV0dXJuICFpbl9hcnJheShyYXd1cmxkZWNvZGUoZXhwbG9kZSgnPScsICRwYXJ0KVswXSksICRkZWNvZGVkS2V5cywgdHJ1ZSk7CiAgICAgICAgfSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGVRdWVyeVN0cmluZyhzdHJpbmcgJGtleSwgP3N0cmluZyAkdmFsdWUpOiBzdHJpbmcKICAgIHsKICAgICAgICAvLyBRdWVyeSBzdHJpbmcgc2VwYXJhdG9ycyAoIj0iLCAiJiIpIGFuZCBsaXRlcmFsIHBsdXMgc2lnbnMgKCIrIikgd2l0aGluIHRoZQogICAgICAgIC8vIGtleSBvciB2YWx1ZSBuZWVkIHRvIGJlIGVuY29kZWQKICAgICAgICAvLyAod2hpbGUgcHJldmVudGluZyBkb3VibGUtZW5jb2RpbmcpIGJlZm9yZSBzZXR0aW5nIHRoZSBxdWVyeSBzdHJpbmcuIEFsbCBvdGhlcgogICAgICAgIC8vIGNoYXJzIHRoYXQgbmVlZCBwZXJjZW50LWVuY29kaW5nIHdpbGwgYmUgZW5jb2RlZCBieSB3aXRoUXVlcnkoKS4KICAgICAgICAkcXVlcnlTdHJpbmcgPSBzdHJ0cigka2V5LCBzZWxmOjpRVUVSWV9TRVBBUkFUT1JTX1JFUExBQ0VNRU5UKTsKCiAgICAgICAgaWYgKCR2YWx1ZSAhPT0gbnVsbCkgewogICAgICAgICAgICAkcXVlcnlTdHJpbmcgLj0gJz0nLnN0cnRyKCR2YWx1ZSwgc2VsZjo6UVVFUllfU0VQQVJBVE9SU19SRVBMQUNFTUVOVCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHF1ZXJ5U3RyaW5nOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmVtb3ZlRGVmYXVsdFBvcnQoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+cG9ydCAhPT0gbnVsbCAmJiBzZWxmOjppc0RlZmF1bHRQb3J0KCR0aGlzKSkgewogICAgICAgICAgICAkdGhpcy0+cG9ydCA9IG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogRmlsdGVycyB0aGUgcGF0aCBvZiBhIFVSSQogICAgICoKICAgICAqIEBwYXJhbSBtaXhlZCAkcGF0aAogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgcGF0aCBpcyBpbnZhbGlkLgogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZpbHRlclBhdGgoJHBhdGgpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkcGF0aCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1BhdGggbXVzdCBiZSBhIHN0cmluZycpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZV9jYWxsYmFjaygKICAgICAgICAgICAgJy8oPzpbXicuc2VsZjo6Q0hBUl9VTlJFU0VSVkVELnNlbGY6OkNIQVJfU1VCX0RFTElNUy4nJTpAXC9dKyt8JSg/IVtBLUZhLWYwLTldezJ9KSkvJywKICAgICAgICAgICAgWyR0aGlzLCAncmF3dXJsZW5jb2RlTWF0Y2haZXJvJ10sCiAgICAgICAgICAgICRwYXRoCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZpbHRlcnMgdGhlIHF1ZXJ5IHN0cmluZyBvciBmcmFnbWVudCBvZiBhIFVSSS4KICAgICAqCiAgICAgKiBAcGFyYW0gbWl4ZWQgJHN0cgogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgcXVlcnkgb3IgZnJhZ21lbnQgaXMgaW52YWxpZC4KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBmaWx0ZXJRdWVyeUFuZEZyYWdtZW50KCRzdHIpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWlzX3N0cmluZygkc3RyKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignUXVlcnkgYW5kIGZyYWdtZW50IG11c3QgYmUgYSBzdHJpbmcnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwcmVnX3JlcGxhY2VfY2FsbGJhY2soCiAgICAgICAgICAgICcvKD86W14nLnNlbGY6OkNIQVJfVU5SRVNFUlZFRC5zZWxmOjpDSEFSX1NVQl9ERUxJTVMuJyU6QFwvXD9dKyt8JSg/IVtBLUZhLWYwLTldezJ9KSkvJywKICAgICAgICAgICAgWyR0aGlzLCAncmF3dXJsZW5jb2RlTWF0Y2haZXJvJ10sCiAgICAgICAgICAgICRzdHIKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcmF3dXJsZW5jb2RlTWF0Y2haZXJvKGFycmF5ICRtYXRjaCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiByYXd1cmxlbmNvZGUoJG1hdGNoWzBdKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHZhbGlkYXRlU3RhdGUoKTogdm9pZAogICAgewogICAgICAgIGlmICgkdGhpcy0+aG9zdCA9PT0gJycgJiYgKCR0aGlzLT5zY2hlbWUgPT09ICdodHRwJyB8fCAkdGhpcy0+c2NoZW1lID09PSAnaHR0cHMnKSkgewogICAgICAgICAgICAkdGhpcy0+aG9zdCA9IHNlbGY6OkhUVFBfREVGQVVMVF9IT1NUOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5nZXRBdXRob3JpdHkoKSA9PT0gJycpIHsKICAgICAgICAgICAgaWYgKDAgPT09IHN0cnBvcygkdGhpcy0+cGF0aCwgJy8vJykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBNYWxmb3JtZWRVcmlFeGNlcHRpb24oJ1RoZSBwYXRoIG9mIGEgVVJJIHdpdGhvdXQgYW4gYXV0aG9yaXR5IG11c3Qgbm90IHN0YXJ0IHdpdGggdHdvIHNsYXNoZXMgIi8vIicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgkdGhpcy0+c2NoZW1lID09PSAnJyAmJiBmYWxzZSAhPT0gc3RycG9zKGV4cGxvZGUoJy8nLCAkdGhpcy0+cGF0aCwgMilbMF0sICc6JykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBNYWxmb3JtZWRVcmlFeGNlcHRpb24oJ0EgcmVsYXRpdmUgVVJJIG11c3Qgbm90IGhhdmUgYSBwYXRoIGJlZ2lubmluZyB3aXRoIGEgc2VnbWVudCBjb250YWluaW5nIGEgY29sb24nKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriComparator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBtZXRob2RzIHRvIGRldGVybWluZSBpZiBhIG1vZGlmaWVkIFVSTCBzaG91bGQgYmUgY29uc2lkZXJlZCBjcm9zcy1vcmlnaW4uCiAqCiAqIEBhdXRob3IgR3JhaGFtIENhbXBiZWxsCiAqLwpmaW5hbCBjbGFzcyBVcmlDb21wYXJhdG9yCnsKICAgIC8qKgogICAgICogRGV0ZXJtaW5lcyBpZiBhIG1vZGlmaWVkIFVSTCBzaG91bGQgYmUgY29uc2lkZXJlZCBjcm9zcy1vcmlnaW4gd2l0aAogICAgICogcmVzcGVjdCB0byBhbiBvcmlnaW5hbCBVUkwuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNDcm9zc09yaWdpbihVcmlJbnRlcmZhY2UgJG9yaWdpbmFsLCBVcmlJbnRlcmZhY2UgJG1vZGlmaWVkKTogYm9vbAogICAgewogICAgICAgIGlmIChcc3RyY2FzZWNtcCgkb3JpZ2luYWwtPmdldEhvc3QoKSwgJG1vZGlmaWVkLT5nZXRIb3N0KCkpICE9PSAwKSB7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRvcmlnaW5hbC0+Z2V0U2NoZW1lKCkgIT09ICRtb2RpZmllZC0+Z2V0U2NoZW1lKCkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoc2VsZjo6Y29tcHV0ZVBvcnQoJG9yaWdpbmFsKSAhPT0gc2VsZjo6Y29tcHV0ZVBvcnQoJG1vZGlmaWVkKSkgewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb21wdXRlUG9ydChVcmlJbnRlcmZhY2UgJHVyaSk6IGludAogICAgewogICAgICAgICRwb3J0ID0gJHVyaS0+Z2V0UG9ydCgpOwoKICAgICAgICBpZiAobnVsbCAhPT0gJHBvcnQpIHsKICAgICAgICAgICAgcmV0dXJuICRwb3J0OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICdodHRwcycgPT09ICR1cmktPmdldFNjaGVtZSgpID8gNDQzIDogODA7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgLy8gY2Fubm90IGJlIGluc3RhbnRpYXRlZAogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriNormalizer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBQcm92aWRlcyBtZXRob2RzIHRvIG5vcm1hbGl6ZSBhbmQgY29tcGFyZSBVUklzLgogKgogKiBAYXV0aG9yIFRvYmlhcyBTY2h1bHR6ZQogKgogKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTYKICovCmZpbmFsIGNsYXNzIFVyaU5vcm1hbGl6ZXIKewogICAgLyoqCiAgICAgKiBEZWZhdWx0IG5vcm1hbGl6YXRpb25zIHdoaWNoIG9ubHkgaW5jbHVkZSB0aGUgb25lcyB0aGF0IHByZXNlcnZlIHNlbWFudGljcy4KICAgICAqLwogICAgcHVibGljIGNvbnN0IFBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMgPQogICAgICAgIHNlbGY6OkNBUElUQUxJWkVfUEVSQ0VOVF9FTkNPRElORyB8CiAgICAgICAgc2VsZjo6REVDT0RFX1VOUkVTRVJWRURfQ0hBUkFDVEVSUyB8CiAgICAgICAgc2VsZjo6Q09OVkVSVF9FTVBUWV9QQVRIIHwKICAgICAgICBzZWxmOjpSRU1PVkVfREVGQVVMVF9IT1NUIHwKICAgICAgICBzZWxmOjpSRU1PVkVfREVGQVVMVF9QT1JUIHwKICAgICAgICBzZWxmOjpSRU1PVkVfRE9UX1NFR01FTlRTOwoKICAgIC8qKgogICAgICogQWxsIGxldHRlcnMgd2l0aGluIGEgcGVyY2VudC1lbmNvZGluZyB0cmlwbGV0IChlLmcuLCAiJTNBIikgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIGFuZCBzaG91bGQgYmUgY2FwaXRhbGl6ZWQuCiAgICAgKgogICAgICogRXhhbXBsZTogaHR0cDovL2V4YW1wbGUub3JnL2ElYzIlYjFiIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvYSVDMiVCMWIKICAgICAqLwogICAgcHVibGljIGNvbnN0IENBUElUQUxJWkVfUEVSQ0VOVF9FTkNPRElORyA9IDE7CgogICAgLyoqCiAgICAgKiBEZWNvZGVzIHBlcmNlbnQtZW5jb2RlZCBvY3RldHMgb2YgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzLgogICAgICoKICAgICAqIEZvciBjb25zaXN0ZW5jeSwgcGVyY2VudC1lbmNvZGVkIG9jdGV0cyBpbiB0aGUgcmFuZ2VzIG9mIEFMUEhBICglNDHigJMlNUEgYW5kICU2MeKAkyU3QSksIERJR0lUICglMzDigJMlMzkpLAogICAgICogaHlwaGVuICglMkQpLCBwZXJpb2QgKCUyRSksIHVuZGVyc2NvcmUgKCU1RiksIG9yIHRpbGRlICglN0UpIHNob3VsZCBub3QgYmUgY3JlYXRlZCBieSBVUkkgcHJvZHVjZXJzIGFuZCwKICAgICAqIHdoZW4gZm91bmQgaW4gYSBVUkksIHNob3VsZCBiZSBkZWNvZGVkIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgdW5yZXNlcnZlZCBjaGFyYWN0ZXJzIGJ5IFVSSSBub3JtYWxpemVycy4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcvJTdFdXNlcm4lNjFtZS8g4oaSIGh0dHA6Ly9leGFtcGxlLm9yZy9+dXNlcm5hbWUvCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBERUNPREVfVU5SRVNFUlZFRF9DSEFSQUNURVJTID0gMjsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIHRoZSBlbXB0eSBwYXRoIHRvICIvIiBmb3IgaHR0cCBhbmQgaHR0cHMgVVJJcy4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcg4oaSIGh0dHA6Ly9leGFtcGxlLm9yZy8KICAgICAqLwogICAgcHVibGljIGNvbnN0IENPTlZFUlRfRU1QVFlfUEFUSCA9IDQ7CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIHRoZSBkZWZhdWx0IGhvc3Qgb2YgdGhlIGdpdmVuIFVSSSBzY2hlbWUgZnJvbSB0aGUgVVJJLgogICAgICoKICAgICAqIE9ubHkgdGhlICJmaWxlIiBzY2hlbWUgZGVmaW5lcyB0aGUgZGVmYXVsdCBob3N0ICJsb2NhbGhvc3QiLgogICAgICogQWxsIG9mIGBmaWxlOi9teWZpbGVgLCBgZmlsZTovLy9teWZpbGVgLCBhbmQgYGZpbGU6Ly9sb2NhbGhvc3QvbXlmaWxlYAogICAgICogYXJlIGVxdWl2YWxlbnQgYWNjb3JkaW5nIHRvIFJGQyAzOTg2LiBUaGUgZmlyc3QgZm9ybWF0IGlzIG5vdCBhY2NlcHRlZAogICAgICogYnkgUEhQcyBzdHJlYW0gZnVuY3Rpb25zIGFuZCB0aHVzIGFscmVhZHkgbm9ybWFsaXplZCBpbXBsaWNpdGx5IHRvIHRoZQogICAgICogc2Vjb25kIGZvcm1hdCBpbiB0aGUgVXJpIGNsYXNzLiBTZWUgYEd1enpsZUh0dHBcUHNyN1xVcmk6OmNvbXBvc2VDb21wb25lbnRzYC4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBmaWxlOi8vbG9jYWxob3N0L215ZmlsZSDihpIgZmlsZTovLy9teWZpbGUKICAgICAqLwogICAgcHVibGljIGNvbnN0IFJFTU9WRV9ERUZBVUxUX0hPU1QgPSA4OwoKICAgIC8qKgogICAgICogUmVtb3ZlcyB0aGUgZGVmYXVsdCBwb3J0IG9mIHRoZSBnaXZlbiBVUkkgc2NoZW1lIGZyb20gdGhlIFVSSS4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmc6ODAvIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBSRU1PVkVfREVGQVVMVF9QT1JUID0gMTY7CgogICAgLyoqCiAgICAgKiBSZW1vdmVzIHVubmVjZXNzYXJ5IGRvdC1zZWdtZW50cy4KICAgICAqCiAgICAgKiBEb3Qtc2VnbWVudHMgaW4gcmVsYXRpdmUtcGF0aCByZWZlcmVuY2VzIGFyZSBub3QgcmVtb3ZlZCBhcyBpdCB3b3VsZAogICAgICogY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgdGhlIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogRXhhbXBsZTogaHR0cDovL2V4YW1wbGUub3JnLy4uL2EvYi8uLi9jLy4vZC5odG1sIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvYS9jL2QuaHRtbAogICAgICovCiAgICBwdWJsaWMgY29uc3QgUkVNT1ZFX0RPVF9TRUdNRU5UUyA9IDMyOwoKICAgIC8qKgogICAgICogUGF0aHMgd2hpY2ggaW5jbHVkZSB0d28gb3IgbW9yZSBhZGphY2VudCBzbGFzaGVzIGFyZSBjb252ZXJ0ZWQgdG8gb25lLgogICAgICoKICAgICAqIFdlYnNlcnZlcnMgdXN1YWxseSBpZ25vcmUgZHVwbGljYXRlIHNsYXNoZXMgYW5kIHRyZWF0IHRob3NlIFVSSXMgZXF1aXZhbGVudC4KICAgICAqIEJ1dCBpbiB0aGVvcnkgdGhvc2UgVVJJcyBkbyBub3QgbmVlZCB0byBiZSBlcXVpdmFsZW50LiBTbyB0aGlzIG5vcm1hbGl6YXRpb24KICAgICAqIG1heSBjaGFuZ2UgdGhlIHNlbWFudGljcy4gRW5jb2RlZCBzbGFzaGVzICglMkYpIGFyZSBub3QgcmVtb3ZlZC4KICAgICAqCiAgICAgKiBFeGFtcGxlOiBodHRwOi8vZXhhbXBsZS5vcmcvL2Zvby8vL2Jhci5odG1sIOKGkiBodHRwOi8vZXhhbXBsZS5vcmcvZm9vL2Jhci5odG1sCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBSRU1PVkVfRFVQTElDQVRFX1NMQVNIRVMgPSA2NDsKCiAgICAvKioKICAgICAqIFNvcnQgcXVlcnkgcGFyYW1ldGVycyB3aXRoIHRoZWlyIHZhbHVlcyBpbiBhbHBoYWJldGljYWwgb3JkZXIuCiAgICAgKgogICAgICogSG93ZXZlciwgdGhlIG9yZGVyIG9mIHBhcmFtZXRlcnMgaW4gYSBVUkkgbWF5IGJlIHNpZ25pZmljYW50ICh0aGlzIGlzIG5vdCBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZCkuCiAgICAgKiBTbyB0aGlzIG5vcm1hbGl6YXRpb24gaXMgbm90IHNhZmUgYW5kIG1heSBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIEV4YW1wbGU6ID9sYW5nPWVuJmFydGljbGU9ZnJlZCDihpIgP2FydGljbGU9ZnJlZCZsYW5nPWVuCiAgICAgKgogICAgICogTm90ZTogVGhlIHNvcnRpbmcgaXMgbmVpdGhlciBsb2NhbGUgbm9yIFVuaWNvZGUgYXdhcmUgKHRoZSBVUkkgcXVlcnkgZG9lcyBub3QgZ2V0IGRlY29kZWQgYXQgYWxsKSBhcyB0aGUKICAgICAqIHB1cnBvc2UgaXMgdG8gYmUgYWJsZSB0byBjb21wYXJlIFVSSXMgaW4gYSByZXByb2R1Y2libGUgd2F5LCBub3QgdG8gaGF2ZSB0aGUgcGFyYW1zIHNvcnRlZCBwZXJmZWN0bHkuCiAgICAgKi8KICAgIHB1YmxpYyBjb25zdCBTT1JUX1FVRVJZX1BBUkFNRVRFUlMgPSAxMjg7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGEgbm9ybWFsaXplZCBVUkkuCiAgICAgKgogICAgICogVGhlIHNjaGVtZSBhbmQgaG9zdCBjb21wb25lbnQgYXJlIGFscmVhZHkgbm9ybWFsaXplZCB0byBsb3dlcmNhc2UgcGVyIFBTUi03IFVyaUludGVyZmFjZS4KICAgICAqIFRoaXMgbWV0aG9kcyBhZGRzIGFkZGl0aW9uYWwgbm9ybWFsaXphdGlvbnMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHRoZSAkZmxhZ3MgcGFyYW1ldGVyLgogICAgICoKICAgICAqIFBTUi03IFVyaUludGVyZmFjZSBjYW5ub3QgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBlbXB0eSBjb21wb25lbnQgYW5kIGEgbWlzc2luZyBjb21wb25lbnQgYXMKICAgICAqIGdldFF1ZXJ5KCksIGdldEZyYWdtZW50KCkgZXRjLiBhbHdheXMgcmV0dXJuIGEgc3RyaW5nLiBUaGlzIG1lYW5zIHRoZSBVUklzICIvPyMiIGFuZCAiLyIgYXJlCiAgICAgKiB0cmVhdGVkIGVxdWl2YWxlbnQgd2hpY2ggaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgYWNjb3JkaW5nIHRvIFJGQyAzOTg2LiBCdXQgdGhhdCBkaWZmZXJlbmNlCiAgICAgKiBpcyBoaWdobHkgdW5jb21tb24gaW4gcmVhbGl0eS4gU28gdGhpcyBwb3RlbnRpYWwgbm9ybWFsaXphdGlvbiBpcyBpbXBsaWVkIGluIFBTUi03IGFzIHdlbGwuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpICAgVGhlIFVSSSB0byBub3JtYWxpemUKICAgICAqIEBwYXJhbSBpbnQgICAgICAgICAgJGZsYWdzIEEgYml0bWFzayBvZiBub3JtYWxpemF0aW9ucyB0byBhcHBseSwgc2VlIGNvbnN0YW50cwogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2MvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNi4yCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbm9ybWFsaXplKFVyaUludGVyZmFjZSAkdXJpLCBpbnQgJGZsYWdzID0gc2VsZjo6UFJFU0VSVklOR19OT1JNQUxJWkFUSU9OUyk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpDQVBJVEFMSVpFX1BFUkNFTlRfRU5DT0RJTkcpIHsKICAgICAgICAgICAgJHVyaSA9IHNlbGY6OmNhcGl0YWxpemVQZXJjZW50RW5jb2RpbmcoJHVyaSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6REVDT0RFX1VOUkVTRVJWRURfQ0hBUkFDVEVSUykgewogICAgICAgICAgICAkdXJpID0gc2VsZjo6ZGVjb2RlVW5yZXNlcnZlZENoYXJhY3RlcnMoJHVyaSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6Q09OVkVSVF9FTVBUWV9QQVRIICYmICR1cmktPmdldFBhdGgoKSA9PT0gJycKICAgICAgICAgICAgJiYgKCR1cmktPmdldFNjaGVtZSgpID09PSAnaHR0cCcgfHwgJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICdodHRwcycpCiAgICAgICAgKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUGF0aCgnLycpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRmbGFncyAmIHNlbGY6OlJFTU9WRV9ERUZBVUxUX0hPU1QgJiYgJHVyaS0+Z2V0U2NoZW1lKCkgPT09ICdmaWxlJyAmJiAkdXJpLT5nZXRIb3N0KCkgPT09ICdsb2NhbGhvc3QnKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoSG9zdCgnJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6UkVNT1ZFX0RFRkFVTFRfUE9SVCAmJiAkdXJpLT5nZXRQb3J0KCkgIT09IG51bGwgJiYgVXJpOjppc0RlZmF1bHRQb3J0KCR1cmkpKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUG9ydChudWxsKTsKICAgICAgICB9CgogICAgICAgIGlmICgkZmxhZ3MgJiBzZWxmOjpSRU1PVkVfRE9UX1NFR01FTlRTICYmICFVcmk6OmlzUmVsYXRpdmVQYXRoUmVmZXJlbmNlKCR1cmkpKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUGF0aChVcmlSZXNvbHZlcjo6cmVtb3ZlRG90U2VnbWVudHMoJHVyaS0+Z2V0UGF0aCgpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6UkVNT1ZFX0RVUExJQ0FURV9TTEFTSEVTKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUGF0aChwcmVnX3JlcGxhY2UoJyMvLysrIycsICcvJywgJHVyaS0+Z2V0UGF0aCgpKSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGZsYWdzICYgc2VsZjo6U09SVF9RVUVSWV9QQVJBTUVURVJTICYmICR1cmktPmdldFF1ZXJ5KCkgIT09ICcnKSB7CiAgICAgICAgICAgICRxdWVyeUtleVZhbHVlcyA9IGV4cGxvZGUoJyYnLCAkdXJpLT5nZXRRdWVyeSgpKTsKICAgICAgICAgICAgc29ydCgkcXVlcnlLZXlWYWx1ZXMpOwogICAgICAgICAgICAkdXJpID0gJHVyaS0+d2l0aFF1ZXJ5KGltcGxvZGUoJyYnLCAkcXVlcnlLZXlWYWx1ZXMpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogV2hldGhlciB0d28gVVJJcyBjYW4gYmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LgogICAgICoKICAgICAqIEJvdGggVVJJcyBhcmUgbm9ybWFsaXplZCBhdXRvbWF0aWNhbGx5IGJlZm9yZSBjb21wYXJpc29uIHdpdGggdGhlIGdpdmVuICRub3JtYWxpemF0aW9ucyBiaXRtYXNrLiBUaGUgbWV0aG9kIGFsc28KICAgICAqIGFjY2VwdHMgcmVsYXRpdmUgVVJJIHJlZmVyZW5jZXMgYW5kIHJldHVybnMgdHJ1ZSB3aGVuIHRoZXkgYXJlIGVxdWl2YWxlbnQuIFRoaXMgb2YgY291cnNlIGFzc3VtZXMgdGhleSB3aWxsIGJlCiAgICAgKiByZXNvbHZlZCBhZ2FpbnN0IHRoZSBzYW1lIGJhc2UgVVJJLiBJZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgZGV0ZXJtaW5hdGlvbiBvZiBlcXVpdmFsZW5jZSBvciBkaWZmZXJlbmNlIG9mCiAgICAgKiByZWxhdGl2ZSByZWZlcmVuY2VzIGRvZXMgbm90IG1lYW4gYW55dGhpbmcuCiAgICAgKgogICAgICogQHBhcmFtIFVyaUludGVyZmFjZSAkdXJpMSAgICAgICAgICAgQW4gVVJJIHRvIGNvbXBhcmUKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaTIgICAgICAgICAgIEFuIFVSSSB0byBjb21wYXJlCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICRub3JtYWxpemF0aW9ucyBBIGJpdG1hc2sgb2Ygbm9ybWFsaXphdGlvbnMgdG8gYXBwbHksIHNlZSBjb25zdGFudHMKICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTYuMQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzRXF1aXZhbGVudChVcmlJbnRlcmZhY2UgJHVyaTEsIFVyaUludGVyZmFjZSAkdXJpMiwgaW50ICRub3JtYWxpemF0aW9ucyA9IHNlbGY6OlBSRVNFUlZJTkdfTk9STUFMSVpBVElPTlMpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuIChzdHJpbmcpIHNlbGY6Om5vcm1hbGl6ZSgkdXJpMSwgJG5vcm1hbGl6YXRpb25zKSA9PT0gKHN0cmluZykgc2VsZjo6bm9ybWFsaXplKCR1cmkyLCAkbm9ybWFsaXphdGlvbnMpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNhcGl0YWxpemVQZXJjZW50RW5jb2RpbmcoVXJpSW50ZXJmYWNlICR1cmkpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICAkcmVnZXggPSAnLyg/OiVbQS1GYS1mMC05XXsyfSkrKy8nOwoKICAgICAgICAkY2FsbGJhY2sgPSBmdW5jdGlvbiAoYXJyYXkgJG1hdGNoKTogc3RyaW5nIHsKICAgICAgICAgICAgcmV0dXJuIHN0cnRvdXBwZXIoJG1hdGNoWzBdKTsKICAgICAgICB9OwoKICAgICAgICByZXR1cm4KICAgICAgICAgICAgJHVyaS0+d2l0aFBhdGgoCiAgICAgICAgICAgICAgICBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHJlZ2V4LCAkY2FsbGJhY2ssICR1cmktPmdldFBhdGgoKSkKICAgICAgICAgICAgKS0+d2l0aFF1ZXJ5KAogICAgICAgICAgICAgICAgcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRyZWdleCwgJGNhbGxiYWNrLCAkdXJpLT5nZXRRdWVyeSgpKQogICAgICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGRlY29kZVVucmVzZXJ2ZWRDaGFyYWN0ZXJzKFVyaUludGVyZmFjZSAkdXJpKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgJHJlZ2V4ID0gJy8lKD86MkR8MkV8NUZ8N0V8M1swLTldfFs0Nl1bMS05QS1GXXxbNTddWzAtOUFdKS9pJzsKCiAgICAgICAgJGNhbGxiYWNrID0gZnVuY3Rpb24gKGFycmF5ICRtYXRjaCk6IHN0cmluZyB7CiAgICAgICAgICAgIHJldHVybiByYXd1cmxkZWNvZGUoJG1hdGNoWzBdKTsKICAgICAgICB9OwoKICAgICAgICByZXR1cm4KICAgICAgICAgICAgJHVyaS0+d2l0aFBhdGgoCiAgICAgICAgICAgICAgICBwcmVnX3JlcGxhY2VfY2FsbGJhY2soJHJlZ2V4LCAkY2FsbGJhY2ssICR1cmktPmdldFBhdGgoKSkKICAgICAgICAgICAgKS0+d2l0aFF1ZXJ5KAogICAgICAgICAgICAgICAgcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRyZWdleCwgJGNhbGxiYWNrLCAkdXJpLT5nZXRRdWVyeSgpKQogICAgICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIC8vIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/UriResolver.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFVyaUludGVyZmFjZTsKCi8qKgogKiBSZXNvbHZlcyBhIFVSSSByZWZlcmVuY2UgaW4gdGhlIGNvbnRleHQgb2YgYSBiYXNlIFVSSSBhbmQgdGhlIG9wcG9zaXRlIHdheS4KICoKICogQGF1dGhvciBUb2JpYXMgU2NodWx0emUKICoKICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01CiAqLwpmaW5hbCBjbGFzcyBVcmlSZXNvbHZlcgp7CiAgICAvKioKICAgICAqIFJlbW92ZXMgZG90IHNlZ21lbnRzIGZyb20gYSBwYXRoIGFuZCByZXR1cm5zIHRoZSBuZXcgcGF0aC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTUuMi40CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVtb3ZlRG90U2VnbWVudHMoc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCRwYXRoID09PSAnJyB8fCAkcGF0aCA9PT0gJy8nKSB7CiAgICAgICAgICAgIHJldHVybiAkcGF0aDsKICAgICAgICB9CgogICAgICAgICRyZXN1bHRzID0gW107CiAgICAgICAgJHNlZ21lbnRzID0gZXhwbG9kZSgnLycsICRwYXRoKTsKICAgICAgICBmb3JlYWNoICgkc2VnbWVudHMgYXMgJHNlZ21lbnQpIHsKICAgICAgICAgICAgaWYgKCRzZWdtZW50ID09PSAnLi4nKSB7CiAgICAgICAgICAgICAgICBhcnJheV9wb3AoJHJlc3VsdHMpOwogICAgICAgICAgICB9IGVsc2VpZiAoJHNlZ21lbnQgIT09ICcuJykgewogICAgICAgICAgICAgICAgJHJlc3VsdHNbXSA9ICRzZWdtZW50OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkbmV3UGF0aCA9IGltcGxvZGUoJy8nLCAkcmVzdWx0cyk7CgogICAgICAgIGlmICgkcGF0aFswXSA9PT0gJy8nICYmICghaXNzZXQoJG5ld1BhdGhbMF0pIHx8ICRuZXdQYXRoWzBdICE9PSAnLycpKSB7CiAgICAgICAgICAgIC8vIFJlLWFkZCB0aGUgbGVhZGluZyBzbGFzaCBpZiBuZWNlc3NhcnkgZm9yIGNhc2VzIGxpa2UgIi8uLiIKICAgICAgICAgICAgJG5ld1BhdGggPSAnLycuJG5ld1BhdGg7CiAgICAgICAgfSBlbHNlaWYgKCRuZXdQYXRoICE9PSAnJyAmJiAoJHNlZ21lbnQgPT09ICcuJyB8fCAkc2VnbWVudCA9PT0gJy4uJykpIHsKICAgICAgICAgICAgLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgLy8gSWYgbmV3UGF0aCBpcyBub3QgZW1wdHksIHRoZW4gJHNlZ21lbnQgbXVzdCBiZSBzZXQgYW5kIGlzIHRoZSBsYXN0IHNlZ21lbnQgZnJvbSB0aGUgZm9yZWFjaAogICAgICAgICAgICAkbmV3UGF0aCAuPSAnLyc7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJG5ld1BhdGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyB0aGUgcmVsYXRpdmUgVVJJIGludG8gYSBuZXcgVVJJIHRoYXQgaXMgcmVzb2x2ZWQgYWdhaW5zdCB0aGUgYmFzZSBVUkkuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzM5ODYjc2VjdGlvbi01LjIKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXNvbHZlKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICRyZWwpOiBVcmlJbnRlcmZhY2UKICAgIHsKICAgICAgICBpZiAoKHN0cmluZykgJHJlbCA9PT0gJycpIHsKICAgICAgICAgICAgLy8gd2UgY2FuIHNpbXBseSByZXR1cm4gdGhlIHNhbWUgYmFzZSBVUkkgaW5zdGFuY2UgZm9yIHRoaXMgc2FtZS1kb2N1bWVudCByZWZlcmVuY2UKICAgICAgICAgICAgcmV0dXJuICRiYXNlOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZWwtPmdldFNjaGVtZSgpICE9ICcnKSB7CiAgICAgICAgICAgIHJldHVybiAkcmVsLT53aXRoUGF0aChzZWxmOjpyZW1vdmVEb3RTZWdtZW50cygkcmVsLT5nZXRQYXRoKCkpKTsKICAgICAgICB9CgogICAgICAgIGlmICgkcmVsLT5nZXRBdXRob3JpdHkoKSAhPSAnJykgewogICAgICAgICAgICAkdGFyZ2V0QXV0aG9yaXR5ID0gJHJlbC0+Z2V0QXV0aG9yaXR5KCk7CiAgICAgICAgICAgICR0YXJnZXRQYXRoID0gc2VsZjo6cmVtb3ZlRG90U2VnbWVudHMoJHJlbC0+Z2V0UGF0aCgpKTsKICAgICAgICAgICAgJHRhcmdldFF1ZXJ5ID0gJHJlbC0+Z2V0UXVlcnkoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGFyZ2V0QXV0aG9yaXR5ID0gJGJhc2UtPmdldEF1dGhvcml0eSgpOwogICAgICAgICAgICBpZiAoJHJlbC0+Z2V0UGF0aCgpID09PSAnJykgewogICAgICAgICAgICAgICAgJHRhcmdldFBhdGggPSAkYmFzZS0+Z2V0UGF0aCgpOwogICAgICAgICAgICAgICAgJHRhcmdldFF1ZXJ5ID0gJHJlbC0+Z2V0UXVlcnkoKSAhPSAnJyA/ICRyZWwtPmdldFF1ZXJ5KCkgOiAkYmFzZS0+Z2V0UXVlcnkoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICgkcmVsLT5nZXRQYXRoKClbMF0gPT09ICcvJykgewogICAgICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gJHJlbC0+Z2V0UGF0aCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJHRhcmdldEF1dGhvcml0eSAhPSAnJyAmJiAkYmFzZS0+Z2V0UGF0aCgpID09PSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0UGF0aCA9ICcvJy4kcmVsLT5nZXRQYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGxhc3RTbGFzaFBvcyA9IHN0cnJwb3MoJGJhc2UtPmdldFBhdGgoKSwgJy8nKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRsYXN0U2xhc2hQb3MgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFyZ2V0UGF0aCA9ICRyZWwtPmdldFBhdGgoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YXJnZXRQYXRoID0gc3Vic3RyKCRiYXNlLT5nZXRQYXRoKCksIDAsICRsYXN0U2xhc2hQb3MgKyAxKS4kcmVsLT5nZXRQYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkdGFyZ2V0UGF0aCA9IHNlbGY6OnJlbW92ZURvdFNlZ21lbnRzKCR0YXJnZXRQYXRoKTsKICAgICAgICAgICAgICAgICR0YXJnZXRRdWVyeSA9ICRyZWwtPmdldFF1ZXJ5KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgVXJpKFVyaTo6Y29tcG9zZUNvbXBvbmVudHMoCiAgICAgICAgICAgICRiYXNlLT5nZXRTY2hlbWUoKSwKICAgICAgICAgICAgJHRhcmdldEF1dGhvcml0eSwKICAgICAgICAgICAgJHRhcmdldFBhdGgsCiAgICAgICAgICAgICR0YXJnZXRRdWVyeSwKICAgICAgICAgICAgJHJlbC0+Z2V0RnJhZ21lbnQoKQogICAgICAgICkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgdGFyZ2V0IFVSSSBhcyBhIHJlbGF0aXZlIHJlZmVyZW5jZSBmcm9tIHRoZSBiYXNlIFVSSS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgY291bnRlcnBhcnQgdG8gcmVzb2x2ZSgpOgogICAgICoKICAgICAqICAgIChzdHJpbmcpICR0YXJnZXQgPT09IChzdHJpbmcpIFVyaVJlc29sdmVyOjpyZXNvbHZlKCRiYXNlLCBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgJHRhcmdldCkpCiAgICAgKgogICAgICogT25lIHVzZS1jYXNlIGlzIHRvIHVzZSB0aGUgY3VycmVudCByZXF1ZXN0IFVSSSBhcyBiYXNlIFVSSSBhbmQgdGhlbiBnZW5lcmF0ZSByZWxhdGl2ZSBsaW5rcyBpbiB5b3VyIGRvY3VtZW50cwogICAgICogdG8gcmVkdWNlIHRoZSBkb2N1bWVudCBzaXplIG9yIG9mZmVyIHNlbGYtY29udGFpbmVkIGRvd25sb2FkYWJsZSBkb2N1bWVudCBhcmNoaXZlcy4KICAgICAqCiAgICAgKiAgICAkYmFzZSA9IG5ldyBVcmkoJ2h0dHA6Ly9leGFtcGxlLmNvbS9hL2IvJyk7CiAgICAgKiAgICBlY2hvIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCBuZXcgVXJpKCdodHRwOi8vZXhhbXBsZS5jb20vYS9iL2MnKSk7ICAvLyBwcmludHMgJ2MnLgogICAgICogICAgZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EveC95JykpOyAgLy8gcHJpbnRzICcuLi94L3knLgogICAgICogICAgZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnaHR0cDovL2V4YW1wbGUuY29tL2EvYi8/cScpKTsgLy8gcHJpbnRzICc/cScuCiAgICAgKiAgICBlY2hvIFVyaVJlc29sdmVyOjpyZWxhdGl2aXplKCRiYXNlLCBuZXcgVXJpKCdodHRwOi8vZXhhbXBsZS5vcmcvYS9iLycpKTsgICAvLyBwcmludHMgJy8vZXhhbXBsZS5vcmcvYS9iLycuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgYWxzbyBhY2NlcHRzIGEgdGFyZ2V0IHRoYXQgaXMgYWxyZWFkeSByZWxhdGl2ZSBhbmQgd2lsbCB0cnkgdG8gcmVsYXRpdml6ZSBpdCBmdXJ0aGVyLiBPbmx5IGEKICAgICAqIHJlbGF0aXZlLXBhdGggcmVmZXJlbmNlIHdpbGwgYmUgcmV0dXJuZWQgYXMtaXMuCiAgICAgKgogICAgICogICAgZWNobyBVcmlSZXNvbHZlcjo6cmVsYXRpdml6ZSgkYmFzZSwgbmV3IFVyaSgnL2EvYi9jJykpOyAgLy8gcHJpbnRzICdjJyBhcyB3ZWxsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVsYXRpdml6ZShVcmlJbnRlcmZhY2UgJGJhc2UsIFVyaUludGVyZmFjZSAkdGFyZ2V0KTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCR0YXJnZXQtPmdldFNjaGVtZSgpICE9PSAnJwogICAgICAgICAgICAmJiAoJGJhc2UtPmdldFNjaGVtZSgpICE9PSAkdGFyZ2V0LT5nZXRTY2hlbWUoKSB8fCAkdGFyZ2V0LT5nZXRBdXRob3JpdHkoKSA9PT0gJycgJiYgJGJhc2UtPmdldEF1dGhvcml0eSgpICE9PSAnJykKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuICR0YXJnZXQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoVXJpOjppc1JlbGF0aXZlUGF0aFJlZmVyZW5jZSgkdGFyZ2V0KSkgewogICAgICAgICAgICAvLyBBcyB0aGUgdGFyZ2V0IGlzIGFscmVhZHkgaGlnaGx5IHJlbGF0aXZlIHdlIHJldHVybiBpdCBhcy1pcy4gSXQgd291bGQgYmUgcG9zc2libGUgdG8gcmVzb2x2ZQogICAgICAgICAgICAvLyB0aGUgdGFyZ2V0IHdpdGggYCR0YXJnZXQgPSBzZWxmOjpyZXNvbHZlKCRiYXNlLCAkdGFyZ2V0KTtgIGFuZCB0aGVuIHRyeSBtYWtlIGl0IG1vcmUgcmVsYXRpdmUKICAgICAgICAgICAgLy8gYnkgcmVtb3ZpbmcgYSBkdXBsaWNhdGUgcXVlcnkuIEJ1dCBsZXQncyBub3QgZG8gdGhhdCBhdXRvbWF0aWNhbGx5LgogICAgICAgICAgICByZXR1cm4gJHRhcmdldDsKICAgICAgICB9CgogICAgICAgIGlmICgkdGFyZ2V0LT5nZXRBdXRob3JpdHkoKSAhPT0gJycgJiYgJGJhc2UtPmdldEF1dGhvcml0eSgpICE9PSAkdGFyZ2V0LT5nZXRBdXRob3JpdHkoKSkgewogICAgICAgICAgICByZXR1cm4gJHRhcmdldC0+d2l0aFNjaGVtZSgnJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBXZSBtdXN0IHJlbW92ZSB0aGUgcGF0aCBiZWZvcmUgcmVtb3ZpbmcgdGhlIGF1dGhvcml0eSBiZWNhdXNlIGlmIHRoZSBwYXRoIHN0YXJ0cyB3aXRoIHR3byBzbGFzaGVzLCB0aGUgVVJJCiAgICAgICAgLy8gd291bGQgdHVybiBpbnZhbGlkLiBBbmQgd2UgYWxzbyBjYW5ub3Qgc2V0IGEgcmVsYXRpdmUgcGF0aCBiZWZvcmUgcmVtb3ZpbmcgdGhlIGF1dGhvcml0eSwgYXMgdGhhdCBpcyBhbHNvCiAgICAgICAgLy8gaW52YWxpZC4KICAgICAgICAkZW1wdHlQYXRoVXJpID0gJHRhcmdldC0+d2l0aFNjaGVtZSgnJyktPndpdGhQYXRoKCcnKS0+d2l0aFVzZXJJbmZvKCcnKS0+d2l0aFBvcnQobnVsbCktPndpdGhIb3N0KCcnKTsKCiAgICAgICAgaWYgKCRiYXNlLT5nZXRQYXRoKCkgIT09ICR0YXJnZXQtPmdldFBhdGgoKSkgewogICAgICAgICAgICByZXR1cm4gJGVtcHR5UGF0aFVyaS0+d2l0aFBhdGgoc2VsZjo6Z2V0UmVsYXRpdmVQYXRoKCRiYXNlLCAkdGFyZ2V0KSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGJhc2UtPmdldFF1ZXJ5KCkgPT09ICR0YXJnZXQtPmdldFF1ZXJ5KCkpIHsKICAgICAgICAgICAgLy8gT25seSB0aGUgdGFyZ2V0IGZyYWdtZW50IGlzIGxlZnQuIEFuZCBpdCBtdXN0IGJlIHJldHVybmVkIGV2ZW4gaWYgYmFzZSBhbmQgdGFyZ2V0IGZyYWdtZW50IGFyZSB0aGUgc2FtZS4KICAgICAgICAgICAgcmV0dXJuICRlbXB0eVBhdGhVcmktPndpdGhRdWVyeSgnJyk7CiAgICAgICAgfQoKICAgICAgICAvLyBJZiB0aGUgYmFzZSBVUkkgaGFzIGEgcXVlcnkgYnV0IHRoZSB0YXJnZXQgaGFzIG5vbmUsIHdlIGNhbm5vdCByZXR1cm4gYW4gZW1wdHkgcGF0aCByZWZlcmVuY2UgYXMgaXQgd291bGQKICAgICAgICAvLyBpbmhlcml0IHRoZSBiYXNlIHF1ZXJ5IGNvbXBvbmVudCB3aGVuIHJlc29sdmluZy4KICAgICAgICBpZiAoJHRhcmdldC0+Z2V0UXVlcnkoKSA9PT0gJycpIHsKICAgICAgICAgICAgJHNlZ21lbnRzID0gZXhwbG9kZSgnLycsICR0YXJnZXQtPmdldFBhdGgoKSk7CiAgICAgICAgICAgIC8qKiBAdmFyIHN0cmluZyAkbGFzdFNlZ21lbnQgKi8KICAgICAgICAgICAgJGxhc3RTZWdtZW50ID0gZW5kKCRzZWdtZW50cyk7CgogICAgICAgICAgICByZXR1cm4gJGVtcHR5UGF0aFVyaS0+d2l0aFBhdGgoJGxhc3RTZWdtZW50ID09PSAnJyA/ICcuLycgOiAkbGFzdFNlZ21lbnQpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRlbXB0eVBhdGhVcmk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0UmVsYXRpdmVQYXRoKFVyaUludGVyZmFjZSAkYmFzZSwgVXJpSW50ZXJmYWNlICR0YXJnZXQpOiBzdHJpbmcKICAgIHsKICAgICAgICAkc291cmNlU2VnbWVudHMgPSBleHBsb2RlKCcvJywgJGJhc2UtPmdldFBhdGgoKSk7CiAgICAgICAgJHRhcmdldFNlZ21lbnRzID0gZXhwbG9kZSgnLycsICR0YXJnZXQtPmdldFBhdGgoKSk7CiAgICAgICAgYXJyYXlfcG9wKCRzb3VyY2VTZWdtZW50cyk7CiAgICAgICAgJHRhcmdldExhc3RTZWdtZW50ID0gYXJyYXlfcG9wKCR0YXJnZXRTZWdtZW50cyk7CiAgICAgICAgZm9yZWFjaCAoJHNvdXJjZVNlZ21lbnRzIGFzICRpID0+ICRzZWdtZW50KSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkdGFyZ2V0U2VnbWVudHNbJGldKSAmJiAkc2VnbWVudCA9PT0gJHRhcmdldFNlZ21lbnRzWyRpXSkgewogICAgICAgICAgICAgICAgdW5zZXQoJHNvdXJjZVNlZ21lbnRzWyRpXSwgJHRhcmdldFNlZ21lbnRzWyRpXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkdGFyZ2V0U2VnbWVudHNbXSA9ICR0YXJnZXRMYXN0U2VnbWVudDsKICAgICAgICAkcmVsYXRpdmVQYXRoID0gc3RyX3JlcGVhdCgnLi4vJywgY291bnQoJHNvdXJjZVNlZ21lbnRzKSkuaW1wbG9kZSgnLycsICR0YXJnZXRTZWdtZW50cyk7CgogICAgICAgIC8vIEEgcmVmZXJlbmNlIHRvIGFtIGVtcHR5IGxhc3Qgc2VnbWVudCBvciBhbiBlbXB0eSBmaXJzdCBzdWItc2VnbWVudCBtdXN0IGJlIHByZWZpeGVkIHdpdGggIi4vIi4KICAgICAgICAvLyBUaGlzIGFsc28gYXBwbGllcyB0byBhIHNlZ21lbnQgd2l0aCBhIGNvbG9uIGNoYXJhY3RlciAoZS5nLiwgImZpbGU6Y29sb24iKSB0aGF0IGNhbm5vdCBiZSB1c2VkCiAgICAgICAgLy8gYXMgdGhlIGZpcnN0IHNlZ21lbnQgb2YgYSByZWxhdGl2ZS1wYXRoIHJlZmVyZW5jZSwgYXMgaXQgd291bGQgYmUgbWlzdGFrZW4gZm9yIGEgc2NoZW1lIG5hbWUuCiAgICAgICAgaWYgKCcnID09PSAkcmVsYXRpdmVQYXRoIHx8IGZhbHNlICE9PSBzdHJwb3MoZXhwbG9kZSgnLycsICRyZWxhdGl2ZVBhdGgsIDIpWzBdLCAnOicpKSB7CiAgICAgICAgICAgICRyZWxhdGl2ZVBhdGggPSAiLi8kcmVsYXRpdmVQYXRoIjsKICAgICAgICB9IGVsc2VpZiAoJy8nID09PSAkcmVsYXRpdmVQYXRoWzBdKSB7CiAgICAgICAgICAgIGlmICgkYmFzZS0+Z2V0QXV0aG9yaXR5KCkgIT0gJycgJiYgJGJhc2UtPmdldFBhdGgoKSA9PT0gJycpIHsKICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBhbiBleHRyYSBzbGFzaCBpcyBhZGRlZCBieSByZXNvbHZlKCkgYXV0b21hdGljYWxseS4gU28gd2UgbXVzdCBub3QgYWRkIG9uZSBoZXJlLgogICAgICAgICAgICAgICAgJHJlbGF0aXZlUGF0aCA9ICIuJHJlbGF0aXZlUGF0aCI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcmVsYXRpdmVQYXRoID0gIi4vJHJlbGF0aXZlUGF0aCI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVsYXRpdmVQYXRoOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQogICAgewogICAgICAgIC8vIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/guzzlehttp/psr7/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKbmFtZXNwYWNlIEd1enpsZUh0dHBcUHNyNzsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcVXJpSW50ZXJmYWNlOwoKZmluYWwgY2xhc3MgVXRpbHMKewogICAgLyoqCiAgICAgKiBSZW1vdmUgdGhlIGl0ZW1zIGdpdmVuIGJ5IHRoZSBrZXlzLCBjYXNlIGluc2Vuc2l0aXZlbHkgZnJvbSB0aGUgZGF0YS4KICAgICAqCiAgICAgKiBAcGFyYW0gKHN0cmluZ3xpbnQpW10gJGtleXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYXNlbGVzc1JlbW92ZShhcnJheSAka2V5cywgYXJyYXkgJGRhdGEpOiBhcnJheQogICAgewogICAgICAgICRyZXN1bHQgPSBbXTsKCiAgICAgICAgZm9yZWFjaCAoJGtleXMgYXMgJiRrZXkpIHsKICAgICAgICAgICAgJGtleSA9IHN0cnRvbG93ZXIoKHN0cmluZykgJGtleSk7CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkZGF0YSBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoIWluX2FycmF5KHN0cnRvbG93ZXIoKHN0cmluZykgJGspLCAka2V5cykpIHsKICAgICAgICAgICAgICAgICRyZXN1bHRbJGtdID0gJHY7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogQ29weSB0aGUgY29udGVudHMgb2YgYSBzdHJlYW0gaW50byBhbm90aGVyIHN0cmVhbSB1bnRpbCB0aGUgZ2l2ZW4gbnVtYmVyCiAgICAgKiBvZiBieXRlcyBoYXZlIGJlZW4gcmVhZC4KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzb3VyY2UgU3RyZWFtIHRvIHJlYWQgZnJvbQogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkZGVzdCAgIFN0cmVhbSB0byB3cml0ZSB0bwogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkbWF4TGVuIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQuIFBhc3MgLTEKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWFkIHRoZSBlbnRpcmUgc3RyZWFtLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29weVRvU3RyZWFtKFN0cmVhbUludGVyZmFjZSAkc291cmNlLCBTdHJlYW1JbnRlcmZhY2UgJGRlc3QsIGludCAkbWF4TGVuID0gLTEpOiB2b2lkCiAgICB7CiAgICAgICAgJGJ1ZmZlclNpemUgPSA4MTkyOwoKICAgICAgICBpZiAoJG1heExlbiA9PT0gLTEpIHsKICAgICAgICAgICAgd2hpbGUgKCEkc291cmNlLT5lb2YoKSkgewogICAgICAgICAgICAgICAgaWYgKCEkZGVzdC0+d3JpdGUoJHNvdXJjZS0+cmVhZCgkYnVmZmVyU2l6ZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcmVtYWluaW5nID0gJG1heExlbjsKICAgICAgICAgICAgd2hpbGUgKCRyZW1haW5pbmcgPiAwICYmICEkc291cmNlLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJGJ1ZiA9ICRzb3VyY2UtPnJlYWQobWluKCRidWZmZXJTaXplLCAkcmVtYWluaW5nKSk7CiAgICAgICAgICAgICAgICAkbGVuID0gc3RybGVuKCRidWYpOwogICAgICAgICAgICAgICAgaWYgKCEkbGVuKSB7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkcmVtYWluaW5nIC09ICRsZW47CiAgICAgICAgICAgICAgICAkZGVzdC0+d3JpdGUoJGJ1Zik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDb3B5IHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBpbnRvIGEgc3RyaW5nIHVudGlsIHRoZSBnaXZlbiBudW1iZXIgb2YKICAgICAqIGJ5dGVzIGhhdmUgYmVlbiByZWFkLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSBTdHJlYW0gdG8gcmVhZAogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAkbWF4TGVuIE1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIHJlYWQuIFBhc3MgLTEKICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byByZWFkIHRoZSBlbnRpcmUgc3RyZWFtLgogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29weVRvU3RyaW5nKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCBpbnQgJG1heExlbiA9IC0xKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICcnOwoKICAgICAgICBpZiAoJG1heExlbiA9PT0gLTEpIHsKICAgICAgICAgICAgd2hpbGUgKCEkc3RyZWFtLT5lb2YoKSkgewogICAgICAgICAgICAgICAgJGJ1ZiA9ICRzdHJlYW0tPnJlYWQoMTA0ODU3Nik7CiAgICAgICAgICAgICAgICBpZiAoJGJ1ZiA9PT0gJycpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRidWZmZXIgLj0gJGJ1ZjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICAgICAgfQoKICAgICAgICAkbGVuID0gMDsKICAgICAgICB3aGlsZSAoISRzdHJlYW0tPmVvZigpICYmICRsZW4gPCAkbWF4TGVuKSB7CiAgICAgICAgICAgICRidWYgPSAkc3RyZWFtLT5yZWFkKCRtYXhMZW4gLSAkbGVuKTsKICAgICAgICAgICAgaWYgKCRidWYgPT09ICcnKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYnVmZmVyIC49ICRidWY7CiAgICAgICAgICAgICRsZW4gPSBzdHJsZW4oJGJ1ZmZlcik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgIH0KCiAgICAvKioKICAgICAqIENhbGN1bGF0ZSBhIGhhc2ggb2YgYSBzdHJlYW0uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmVhZHMgdGhlIGVudGlyZSBzdHJlYW0gdG8gY2FsY3VsYXRlIGEgcm9sbGluZyBoYXNoLCBiYXNlZAogICAgICogb24gUEhQJ3MgYGhhc2hfaW5pdGAgZnVuY3Rpb25zLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSAgICBTdHJlYW0gdG8gY2FsY3VsYXRlIHRoZSBoYXNoIGZvcgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICAgICAkYWxnbyAgICAgIEhhc2ggYWxnb3JpdGhtIChlLmcuIG1kNSwgY3JjMzIsIGV0YykKICAgICAqIEBwYXJhbSBib29sICAgICAgICAgICAgJHJhd091dHB1dCBXaGV0aGVyIG9yIG5vdCB0byB1c2UgcmF3IG91dHB1dAogICAgICoKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZXJyb3IuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaGFzaChTdHJlYW1JbnRlcmZhY2UgJHN0cmVhbSwgc3RyaW5nICRhbGdvLCBib29sICRyYXdPdXRwdXQgPSBmYWxzZSk6IHN0cmluZwogICAgewogICAgICAgICRwb3MgPSAkc3RyZWFtLT50ZWxsKCk7CgogICAgICAgIGlmICgkcG9zID4gMCkgewogICAgICAgICAgICAkc3RyZWFtLT5yZXdpbmQoKTsKICAgICAgICB9CgogICAgICAgICRjdHggPSBoYXNoX2luaXQoJGFsZ28pOwogICAgICAgIHdoaWxlICghJHN0cmVhbS0+ZW9mKCkpIHsKICAgICAgICAgICAgaGFzaF91cGRhdGUoJGN0eCwgJHN0cmVhbS0+cmVhZCgxMDQ4NTc2KSk7CiAgICAgICAgfQoKICAgICAgICAkb3V0ID0gaGFzaF9maW5hbCgkY3R4LCAkcmF3T3V0cHV0KTsKICAgICAgICAkc3RyZWFtLT5zZWVrKCRwb3MpOwoKICAgICAgICByZXR1cm4gJG91dDsKICAgIH0KCiAgICAvKioKICAgICAqIENsb25lIGFuZCBtb2RpZnkgYSByZXF1ZXN0IHdpdGggdGhlIGdpdmVuIGNoYW5nZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNsb25lcyBuZWVkZWQgdG8gbXV0YXRlCiAgICAgKiBhIG1lc3NhZ2UuCiAgICAgKgogICAgICogVGhlIGNoYW5nZXMgY2FuIGJlIG9uZSBvZjoKICAgICAqIC0gbWV0aG9kOiAoc3RyaW5nKSBDaGFuZ2VzIHRoZSBIVFRQIG1ldGhvZC4KICAgICAqIC0gc2V0X2hlYWRlcnM6IChhcnJheSkgU2V0cyB0aGUgZ2l2ZW4gaGVhZGVycy4KICAgICAqIC0gcmVtb3ZlX2hlYWRlcnM6IChhcnJheSkgUmVtb3ZlIHRoZSBnaXZlbiBoZWFkZXJzLgogICAgICogLSBib2R5OiAobWl4ZWQpIFNldHMgdGhlIGdpdmVuIGJvZHkuCiAgICAgKiAtIHVyaTogKFVyaUludGVyZmFjZSkgU2V0IHRoZSBVUkkuCiAgICAgKiAtIHF1ZXJ5OiAoc3RyaW5nKSBTZXQgdGhlIHF1ZXJ5IHN0cmluZyB2YWx1ZSBvZiB0aGUgVVJJLgogICAgICogLSB2ZXJzaW9uOiAoc3RyaW5nKSBTZXQgdGhlIHByb3RvY29sIHZlcnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QgUmVxdWVzdCB0byBjbG9uZSBhbmQgbW9kaWZ5LgogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICAgJGNoYW5nZXMgQ2hhbmdlcyB0byBhcHBseS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtb2RpZnlSZXF1ZXN0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QsIGFycmF5ICRjaGFuZ2VzKTogUmVxdWVzdEludGVyZmFjZQogICAgewogICAgICAgIGlmICghJGNoYW5nZXMpIHsKICAgICAgICAgICAgcmV0dXJuICRyZXF1ZXN0OwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlcnMgPSAkcmVxdWVzdC0+Z2V0SGVhZGVycygpOwoKICAgICAgICBpZiAoIWlzc2V0KCRjaGFuZ2VzWyd1cmknXSkpIHsKICAgICAgICAgICAgJHVyaSA9ICRyZXF1ZXN0LT5nZXRVcmkoKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBSZW1vdmUgdGhlIGhvc3QgaGVhZGVyIGlmIG9uZSBpcyBvbiB0aGUgVVJJCiAgICAgICAgICAgIGlmICgkaG9zdCA9ICRjaGFuZ2VzWyd1cmknXS0+Z2V0SG9zdCgpKSB7CiAgICAgICAgICAgICAgICAkY2hhbmdlc1snc2V0X2hlYWRlcnMnXVsnSG9zdCddID0gJGhvc3Q7CgogICAgICAgICAgICAgICAgaWYgKCRwb3J0ID0gJGNoYW5nZXNbJ3VyaSddLT5nZXRQb3J0KCkpIHsKICAgICAgICAgICAgICAgICAgICAkc3RhbmRhcmRQb3J0cyA9IFsnaHR0cCcgPT4gODAsICdodHRwcycgPT4gNDQzXTsKICAgICAgICAgICAgICAgICAgICAkc2NoZW1lID0gJGNoYW5nZXNbJ3VyaSddLT5nZXRTY2hlbWUoKTsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHN0YW5kYXJkUG9ydHNbJHNjaGVtZV0pICYmICRwb3J0ICE9ICRzdGFuZGFyZFBvcnRzWyRzY2hlbWVdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGFuZ2VzWydzZXRfaGVhZGVycyddWydIb3N0J10gLj0gJzonLiRwb3J0OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkdXJpID0gJGNoYW5nZXNbJ3VyaSddOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkY2hhbmdlc1sncmVtb3ZlX2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgJGhlYWRlcnMgPSBzZWxmOjpjYXNlbGVzc1JlbW92ZSgkY2hhbmdlc1sncmVtb3ZlX2hlYWRlcnMnXSwgJGhlYWRlcnMpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFlbXB0eSgkY2hhbmdlc1snc2V0X2hlYWRlcnMnXSkpIHsKICAgICAgICAgICAgJGhlYWRlcnMgPSBzZWxmOjpjYXNlbGVzc1JlbW92ZShhcnJheV9rZXlzKCRjaGFuZ2VzWydzZXRfaGVhZGVycyddKSwgJGhlYWRlcnMpOwogICAgICAgICAgICAkaGVhZGVycyA9ICRjaGFuZ2VzWydzZXRfaGVhZGVycyddICsgJGhlYWRlcnM7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGNoYW5nZXNbJ3F1ZXJ5J10pKSB7CiAgICAgICAgICAgICR1cmkgPSAkdXJpLT53aXRoUXVlcnkoJGNoYW5nZXNbJ3F1ZXJ5J10pOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRyZXF1ZXN0IGluc3RhbmNlb2YgU2VydmVyUmVxdWVzdEludGVyZmFjZSkgewogICAgICAgICAgICAkbmV3ID0gKG5ldyBTZXJ2ZXJSZXF1ZXN0KAogICAgICAgICAgICAgICAgJGNoYW5nZXNbJ21ldGhvZCddID8/ICRyZXF1ZXN0LT5nZXRNZXRob2QoKSwKICAgICAgICAgICAgICAgICR1cmksCiAgICAgICAgICAgICAgICAkaGVhZGVycywKICAgICAgICAgICAgICAgICRjaGFuZ2VzWydib2R5J10gPz8gJHJlcXVlc3QtPmdldEJvZHkoKSwKICAgICAgICAgICAgICAgICRjaGFuZ2VzWyd2ZXJzaW9uJ10gPz8gJHJlcXVlc3QtPmdldFByb3RvY29sVmVyc2lvbigpLAogICAgICAgICAgICAgICAgJHJlcXVlc3QtPmdldFNlcnZlclBhcmFtcygpCiAgICAgICAgICAgICkpCiAgICAgICAgICAgIC0+d2l0aFBhcnNlZEJvZHkoJHJlcXVlc3QtPmdldFBhcnNlZEJvZHkoKSkKICAgICAgICAgICAgLT53aXRoUXVlcnlQYXJhbXMoJHJlcXVlc3QtPmdldFF1ZXJ5UGFyYW1zKCkpCiAgICAgICAgICAgIC0+d2l0aENvb2tpZVBhcmFtcygkcmVxdWVzdC0+Z2V0Q29va2llUGFyYW1zKCkpCiAgICAgICAgICAgIC0+d2l0aFVwbG9hZGVkRmlsZXMoJHJlcXVlc3QtPmdldFVwbG9hZGVkRmlsZXMoKSk7CgogICAgICAgICAgICBmb3JlYWNoICgkcmVxdWVzdC0+Z2V0QXR0cmlidXRlcygpIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICAkbmV3ID0gJG5ldy0+d2l0aEF0dHJpYnV0ZSgka2V5LCAkdmFsdWUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJG5ldzsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgUmVxdWVzdCgKICAgICAgICAgICAgJGNoYW5nZXNbJ21ldGhvZCddID8/ICRyZXF1ZXN0LT5nZXRNZXRob2QoKSwKICAgICAgICAgICAgJHVyaSwKICAgICAgICAgICAgJGhlYWRlcnMsCiAgICAgICAgICAgICRjaGFuZ2VzWydib2R5J10gPz8gJHJlcXVlc3QtPmdldEJvZHkoKSwKICAgICAgICAgICAgJGNoYW5nZXNbJ3ZlcnNpb24nXSA/PyAkcmVxdWVzdC0+Z2V0UHJvdG9jb2xWZXJzaW9uKCkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogUmVhZCBhIGxpbmUgZnJvbSB0aGUgc3RyZWFtIHVwIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgYnVmZmVyIGxlbmd0aC4KICAgICAqCiAgICAgKiBAcGFyYW0gU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0gICAgU3RyZWFtIHRvIHJlYWQgZnJvbQogICAgICogQHBhcmFtIGludHxudWxsICAgICAgICAkbWF4TGVuZ3RoIE1heGltdW0gYnVmZmVyIGxlbmd0aAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlYWRMaW5lKFN0cmVhbUludGVyZmFjZSAkc3RyZWFtLCA/aW50ICRtYXhMZW5ndGggPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGJ1ZmZlciA9ICcnOwogICAgICAgICRzaXplID0gMDsKCiAgICAgICAgd2hpbGUgKCEkc3RyZWFtLT5lb2YoKSkgewogICAgICAgICAgICBpZiAoJycgPT09ICgkYnl0ZSA9ICRzdHJlYW0tPnJlYWQoMSkpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJGJ1ZmZlcjsKICAgICAgICAgICAgfQogICAgICAgICAgICAkYnVmZmVyIC49ICRieXRlOwogICAgICAgICAgICAvLyBCcmVhayB3aGVuIGEgbmV3IGxpbmUgaXMgZm91bmQgb3IgdGhlIG1heCBsZW5ndGggLSAxIGlzIHJlYWNoZWQKICAgICAgICAgICAgaWYgKCRieXRlID09PSAiXG4iIHx8ICsrJHNpemUgPT09ICRtYXhMZW5ndGggLSAxKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRidWZmZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZWRhY3QgdGhlIHBhc3N3b3JkIGluIHRoZSB1c2VyIGluZm8gcGFydCBvZiBhIFVSSS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZWRhY3RVc2VySW5mbyhVcmlJbnRlcmZhY2UgJHVyaSk6IFVyaUludGVyZmFjZQogICAgewogICAgICAgICR1c2VySW5mbyA9ICR1cmktPmdldFVzZXJJbmZvKCk7CgogICAgICAgIGlmIChmYWxzZSAhPT0gKCRwb3MgPSBcc3RycG9zKCR1c2VySW5mbywgJzonKSkpIHsKICAgICAgICAgICAgcmV0dXJuICR1cmktPndpdGhVc2VySW5mbyhcc3Vic3RyKCR1c2VySW5mbywgMCwgJHBvcyksICcqKionKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdXJpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHN0cmVhbSBiYXNlZCBvbiB0aGUgaW5wdXQgdHlwZS4KICAgICAqCiAgICAgKiBPcHRpb25zIGlzIGFuIGFzc29jaWF0aXZlIGFycmF5IHRoYXQgY2FuIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgogICAgICogLSBtZXRhZGF0YTogQXJyYXkgb2YgY3VzdG9tIG1ldGFkYXRhLgogICAgICogLSBzaXplOiBTaXplIG9mIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGAkcmVzb3VyY2VgIHR5cGVzOgogICAgICogLSBgUHNyXEh0dHBcTWVzc2FnZVxTdHJlYW1JbnRlcmZhY2VgOiBSZXR1cm5zIHRoZSB2YWx1ZSBhcy1pcy4KICAgICAqIC0gYHN0cmluZ2A6IENyZWF0ZXMgYSBzdHJlYW0gb2JqZWN0IHRoYXQgdXNlcyB0aGUgZ2l2ZW4gc3RyaW5nIGFzIHRoZSBjb250ZW50cy4KICAgICAqIC0gYHJlc291cmNlYDogQ3JlYXRlcyBhIHN0cmVhbSBvYmplY3QgdGhhdCB3cmFwcyB0aGUgZ2l2ZW4gUEhQIHN0cmVhbSByZXNvdXJjZS4KICAgICAqIC0gYEl0ZXJhdG9yYDogSWYgdGhlIHByb3ZpZGVkIHZhbHVlIGltcGxlbWVudHMgYEl0ZXJhdG9yYCwgdGhlbiBhIHJlYWQtb25seQogICAgICogICBzdHJlYW0gb2JqZWN0IHdpbGwgYmUgY3JlYXRlZCB0aGF0IHdyYXBzIHRoZSBnaXZlbiBpdGVyYWJsZS4gRWFjaCB0aW1lIHRoZQogICAgICogICBzdHJlYW0gaXMgcmVhZCBmcm9tLCBkYXRhIGZyb20gdGhlIGl0ZXJhdG9yIHdpbGwgZmlsbCBhIGJ1ZmZlciBhbmQgd2lsbCBiZQogICAgICogICBjb250aW51b3VzbHkgY2FsbGVkIHVudGlsIHRoZSBidWZmZXIgaXMgZXF1YWwgdG8gdGhlIHJlcXVlc3RlZCByZWFkIHNpemUuCiAgICAgKiAgIFN1YnNlcXVlbnQgcmVhZCBjYWxscyB3aWxsIGZpcnN0IHJlYWQgZnJvbSB0aGUgYnVmZmVyIGFuZCB0aGVuIGNhbGwgYG5leHRgCiAgICAgKiAgIG9uIHRoZSB1bmRlcmx5aW5nIGl0ZXJhdG9yIHVudGlsIGl0IGlzIGV4aGF1c3RlZC4KICAgICAqIC0gYG9iamVjdGAgd2l0aCBgX190b1N0cmluZygpYDogSWYgdGhlIG9iamVjdCBoYXMgdGhlIGBfX3RvU3RyaW5nKClgIG1ldGhvZCwKICAgICAqICAgdGhlIG9iamVjdCB3aWxsIGJlIGNhc3QgdG8gYSBzdHJpbmcgYW5kIHRoZW4gYSBzdHJlYW0gd2lsbCBiZSByZXR1cm5lZCB0aGF0CiAgICAgKiAgIHVzZXMgdGhlIHN0cmluZyB2YWx1ZS4KICAgICAqIC0gYE5VTExgOiBXaGVuIGBudWxsYCBpcyBwYXNzZWQsIGFuIGVtcHR5IHN0cmVhbSBvYmplY3QgaXMgcmV0dXJuZWQuCiAgICAgKiAtIGBjYWxsYWJsZWAgV2hlbiBhIGNhbGxhYmxlIGlzIHBhc3NlZCwgYSByZWFkLW9ubHkgc3RyZWFtIG9iamVjdCB3aWxsIGJlCiAgICAgKiAgIGNyZWF0ZWQgdGhhdCBpbnZva2VzIHRoZSBnaXZlbiBjYWxsYWJsZS4gVGhlIGNhbGxhYmxlIGlzIGludm9rZWQgd2l0aCB0aGUKICAgICAqICAgbnVtYmVyIG9mIHN1Z2dlc3RlZCBieXRlcyB0byByZWFkLiBUaGUgY2FsbGFibGUgY2FuIHJldHVybiBhbnkgbnVtYmVyIG9mCiAgICAgKiAgIGJ5dGVzLCBidXQgTVVTVCByZXR1cm4gYGZhbHNlYCB3aGVuIHRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4uIFRoZQogICAgICogICBzdHJlYW0gb2JqZWN0IHRoYXQgd3JhcHMgdGhlIGNhbGxhYmxlIHdpbGwgaW52b2tlIHRoZSBjYWxsYWJsZSB1bnRpbCB0aGUKICAgICAqICAgbnVtYmVyIG9mIHJlcXVlc3RlZCBieXRlcyBhcmUgYXZhaWxhYmxlLiBBbnkgYWRkaXRpb25hbCBieXRlcyB3aWxsIGJlCiAgICAgKiAgIGJ1ZmZlcmVkIGFuZCB1c2VkIGluIHN1YnNlcXVlbnQgcmVhZHMuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlfHN0cmluZ3xpbnR8ZmxvYXR8Ym9vbHxTdHJlYW1JbnRlcmZhY2V8Y2FsbGFibGV8XEl0ZXJhdG9yfG51bGwgJHJlc291cmNlIEVudGl0eSBib2R5IGRhdGEKICAgICAqIEBwYXJhbSBhcnJheXtzaXplPzogaW50LCBtZXRhZGF0YT86IGFycmF5fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb25zICBBZGRpdGlvbmFsIG9wdGlvbnMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlICRyZXNvdXJjZSBhcmcgaXMgbm90IHZhbGlkLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0cmVhbUZvcigkcmVzb3VyY2UgPSAnJywgYXJyYXkgJG9wdGlvbnMgPSBbXSk6IFN0cmVhbUludGVyZmFjZQogICAgewogICAgICAgIGlmIChpc19zY2FsYXIoJHJlc291cmNlKSkgewogICAgICAgICAgICAkc3RyZWFtID0gc2VsZjo6dHJ5Rm9wZW4oJ3BocDovL3RlbXAnLCAncisnKTsKICAgICAgICAgICAgaWYgKCRyZXNvdXJjZSAhPT0gJycpIHsKICAgICAgICAgICAgICAgIGZ3cml0ZSgkc3RyZWFtLCAoc3RyaW5nKSAkcmVzb3VyY2UpOwogICAgICAgICAgICAgICAgZnNlZWsoJHN0cmVhbSwgMCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtKCRzdHJlYW0sICRvcHRpb25zKTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoZ2V0dHlwZSgkcmVzb3VyY2UpKSB7CiAgICAgICAgICAgIGNhc2UgJ3Jlc291cmNlJzoKICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgKiBUaGUgJ3BocDovL2lucHV0JyBpcyBhIHNwZWNpYWwgc3RyZWFtIHdpdGggcXVpcmtzIGFuZCBpbmNvbnNpc3RlbmNpZXMuCiAgICAgICAgICAgICAgICAgKiBXZSBhdm9pZCB1c2luZyB0aGF0IHN0cmVhbSBieSByZWFkaW5nIGl0IGludG8gcGhwOi8vdGVtcAogICAgICAgICAgICAgICAgICovCgogICAgICAgICAgICAgICAgLyoqIEB2YXIgcmVzb3VyY2UgJHJlc291cmNlICovCiAgICAgICAgICAgICAgICBpZiAoKFxzdHJlYW1fZ2V0X21ldGFfZGF0YSgkcmVzb3VyY2UpWyd1cmknXSA/PyAnJykgPT09ICdwaHA6Ly9pbnB1dCcpIHsKICAgICAgICAgICAgICAgICAgICAkc3RyZWFtID0gc2VsZjo6dHJ5Rm9wZW4oJ3BocDovL3RlbXAnLCAndysnKTsKICAgICAgICAgICAgICAgICAgICBzdHJlYW1fY29weV90b19zdHJlYW0oJHJlc291cmNlLCAkc3RyZWFtKTsKICAgICAgICAgICAgICAgICAgICBmc2Vlaygkc3RyZWFtLCAwKTsKICAgICAgICAgICAgICAgICAgICAkcmVzb3VyY2UgPSAkc3RyZWFtOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU3RyZWFtKCRyZXNvdXJjZSwgJG9wdGlvbnMpOwogICAgICAgICAgICBjYXNlICdvYmplY3QnOgogICAgICAgICAgICAgICAgLyoqIEB2YXIgb2JqZWN0ICRyZXNvdXJjZSAqLwogICAgICAgICAgICAgICAgaWYgKCRyZXNvdXJjZSBpbnN0YW5jZW9mIFN0cmVhbUludGVyZmFjZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzb3VyY2U7CiAgICAgICAgICAgICAgICB9IGVsc2VpZiAoJHJlc291cmNlIGluc3RhbmNlb2YgXEl0ZXJhdG9yKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQdW1wU3RyZWFtKGZ1bmN0aW9uICgpIHVzZSAoJHJlc291cmNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghJHJlc291cmNlLT52YWxpZCgpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3VsdCA9ICRyZXNvdXJjZS0+Y3VycmVudCgpOwogICAgICAgICAgICAgICAgICAgICAgICAkcmVzb3VyY2UtPm5leHQoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgICAgICAgICAgICAgICAgIH0sICRvcHRpb25zKTsKICAgICAgICAgICAgICAgIH0gZWxzZWlmIChtZXRob2RfZXhpc3RzKCRyZXNvdXJjZSwgJ19fdG9TdHJpbmcnKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmOjpzdHJlYW1Gb3IoKHN0cmluZykgJHJlc291cmNlLCAkb3B0aW9ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnTlVMTCc6CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmVhbShzZWxmOjp0cnlGb3BlbigncGhwOi8vdGVtcCcsICdyKycpLCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfY2FsbGFibGUoJHJlc291cmNlKSkgewogICAgICAgICAgICByZXR1cm4gbmV3IFB1bXBTdHJlYW0oJHJlc291cmNlLCAkb3B0aW9ucyk7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCByZXNvdXJjZSB0eXBlOiAnLmdldHR5cGUoJHJlc291cmNlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTYWZlbHkgb3BlbnMgYSBQSFAgc3RyZWFtIHJlc291cmNlIHVzaW5nIGEgZmlsZW5hbWUuCiAgICAgKgogICAgICogV2hlbiBmb3BlbiBmYWlscywgUEhQIG5vcm1hbGx5IHJhaXNlcyBhIHdhcm5pbmcuIFRoaXMgZnVuY3Rpb24gYWRkcyBhbgogICAgICogZXJyb3IgaGFuZGxlciB0aGF0IGNoZWNrcyBmb3IgZXJyb3JzIGFuZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluc3RlYWQuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgRmlsZSB0byBvcGVuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2RlICAgICBNb2RlIHVzZWQgdG8gb3BlbiB0aGUgZmlsZQogICAgICoKICAgICAqIEByZXR1cm4gcmVzb3VyY2UKICAgICAqCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBmaWxlIGNhbm5vdCBiZSBvcGVuZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0cnlGb3BlbihzdHJpbmcgJGZpbGVuYW1lLCBzdHJpbmcgJG1vZGUpCiAgICB7CiAgICAgICAgJGV4ID0gbnVsbDsKICAgICAgICBzZXRfZXJyb3JfaGFuZGxlcihzdGF0aWMgZnVuY3Rpb24gKGludCAkZXJybm8sIHN0cmluZyAkZXJyc3RyKSB1c2UgKCRmaWxlbmFtZSwgJG1vZGUsICYkZXgpOiBib29sIHsKICAgICAgICAgICAgJGV4ID0gbmV3IFxSdW50aW1lRXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICAgICAnVW5hYmxlIHRvIG9wZW4gIiVzIiB1c2luZyBtb2RlICIlcyI6ICVzJywKICAgICAgICAgICAgICAgICRmaWxlbmFtZSwKICAgICAgICAgICAgICAgICRtb2RlLAogICAgICAgICAgICAgICAgJGVycnN0cgogICAgICAgICAgICApKTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0pOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAvKiogQHZhciByZXNvdXJjZSAkaGFuZGxlICovCiAgICAgICAgICAgICRoYW5kbGUgPSBmb3BlbigkZmlsZW5hbWUsICRtb2RlKTsKICAgICAgICB9IGNhdGNoIChcVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgICRleCA9IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgJ1VuYWJsZSB0byBvcGVuICIlcyIgdXNpbmcgbW9kZSAiJXMiOiAlcycsCiAgICAgICAgICAgICAgICAkZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAkbW9kZSwKICAgICAgICAgICAgICAgICRlLT5nZXRNZXNzYWdlKCkKICAgICAgICAgICAgKSwgMCwgJGUpOwogICAgICAgIH0KCiAgICAgICAgcmVzdG9yZV9lcnJvcl9oYW5kbGVyKCk7CgogICAgICAgIGlmICgkZXgpIHsKICAgICAgICAgICAgLyoqIEB2YXIgXFJ1bnRpbWVFeGNlcHRpb24gJGV4ICovCiAgICAgICAgICAgIHRocm93ICRleDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkaGFuZGxlOwogICAgfQoKICAgIC8qKgogICAgICogU2FmZWx5IGdldHMgdGhlIGNvbnRlbnRzIG9mIGEgZ2l2ZW4gc3RyZWFtLgogICAgICoKICAgICAqIFdoZW4gc3RyZWFtX2dldF9jb250ZW50cyBmYWlscywgUEhQIG5vcm1hbGx5IHJhaXNlcyBhIHdhcm5pbmcuIFRoaXMKICAgICAqIGZ1bmN0aW9uIGFkZHMgYW4gZXJyb3IgaGFuZGxlciB0aGF0IGNoZWNrcyBmb3IgZXJyb3JzIGFuZCB0aHJvd3MgYW4KICAgICAqIGV4Y2VwdGlvbiBpbnN0ZWFkLgogICAgICoKICAgICAqIEBwYXJhbSByZXNvdXJjZSAkc3RyZWFtCiAgICAgKgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgc3RyZWFtIGNhbm5vdCBiZSByZWFkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdHJ5R2V0Q29udGVudHMoJHN0cmVhbSk6IHN0cmluZwogICAgewogICAgICAgICRleCA9IG51bGw7CiAgICAgICAgc2V0X2Vycm9yX2hhbmRsZXIoc3RhdGljIGZ1bmN0aW9uIChpbnQgJGVycm5vLCBzdHJpbmcgJGVycnN0cikgdXNlICgmJGV4KTogYm9vbCB7CiAgICAgICAgICAgICRleCA9IG5ldyBcUnVudGltZUV4Y2VwdGlvbihzcHJpbnRmKAogICAgICAgICAgICAgICAgJ1VuYWJsZSB0byByZWFkIHN0cmVhbSBjb250ZW50czogJXMnLAogICAgICAgICAgICAgICAgJGVycnN0cgogICAgICAgICAgICApKTsKCiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0pOwoKICAgICAgICB0cnkgewogICAgICAgICAgICAvKiogQHZhciBzdHJpbmd8ZmFsc2UgJGNvbnRlbnRzICovCiAgICAgICAgICAgICRjb250ZW50cyA9IHN0cmVhbV9nZXRfY29udGVudHMoJHN0cmVhbSk7CgogICAgICAgICAgICBpZiAoJGNvbnRlbnRzID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGV4ID0gbmV3IFxSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gcmVhZCBzdHJlYW0gY29udGVudHMnKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgJGV4ID0gbmV3IFxSdW50aW1lRXhjZXB0aW9uKHNwcmludGYoCiAgICAgICAgICAgICAgICAnVW5hYmxlIHRvIHJlYWQgc3RyZWFtIGNvbnRlbnRzOiAlcycsCiAgICAgICAgICAgICAgICAkZS0+Z2V0TWVzc2FnZSgpCiAgICAgICAgICAgICksIDAsICRlKTsKICAgICAgICB9CgogICAgICAgIHJlc3RvcmVfZXJyb3JfaGFuZGxlcigpOwoKICAgICAgICBpZiAoJGV4KSB7CiAgICAgICAgICAgIC8qKiBAdmFyIFxSdW50aW1lRXhjZXB0aW9uICRleCAqLwogICAgICAgICAgICB0aHJvdyAkZXg7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNvbnRlbnRzOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhIFVyaUludGVyZmFjZSBmb3IgdGhlIGdpdmVuIHZhbHVlLgogICAgICoKICAgICAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhIHN0cmluZyBvciBVcmlJbnRlcmZhY2UgYW5kIHJldHVybnMgYQogICAgICogVXJpSW50ZXJmYWNlIGZvciB0aGUgZ2l2ZW4gdmFsdWUuIElmIHRoZSB2YWx1ZSBpcyBhbHJlYWR5IGEKICAgICAqIFVyaUludGVyZmFjZSwgaXQgaXMgcmV0dXJuZWQgYXMtaXMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZ3xVcmlJbnRlcmZhY2UgJHVyaQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVyaUZvcigkdXJpKTogVXJpSW50ZXJmYWNlCiAgICB7CiAgICAgICAgaWYgKCR1cmkgaW5zdGFuY2VvZiBVcmlJbnRlcmZhY2UpIHsKICAgICAgICAgICAgcmV0dXJuICR1cmk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNfc3RyaW5nKCR1cmkpKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVXJpKCR1cmkpOwogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VSSSBtdXN0IGJlIGEgc3RyaW5nIG9yIFVyaUludGVyZmFjZScpOwogICAgfQp9Cg==]]></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/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICJuYW1lIjogIm1pbmlzaGxpbmsvd2ViLXB1c2giLAogICJ0eXBlIjogImxpYnJhcnkiLAogICJkZXNjcmlwdGlvbiI6ICJXZWIgUHVzaCBsaWJyYXJ5IGZvciBQSFAiLAogICJrZXl3b3JkcyI6IFsicHVzaCIsICJub3RpZmljYXRpb25zIiwgIndlYiIsICJXZWJQdXNoIiwgIlB1c2ggQVBJIl0sCiAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcHVzaC1saWJzL3dlYi1wdXNoLXBocCIsCiAgImxpY2Vuc2UiOiAiTUlUIiwKICAiYXV0aG9ycyI6IFsKICAgIHsKICAgICAgIm5hbWUiOiAiTG91aXMgTGFncmFuZ2UiLAogICAgICAiZW1haWwiOiAibGFncmFuZ2UubG91aXNAZ21haWwuY29tIiwKICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9NaW5pc2hsaW5rIgogICAgfQogIF0sCiAgInNjcmlwdHMiOiB7CiAgICAidGVzdDp1bml0IjogIi4vdmVuZG9yL2Jpbi9waHB1bml0IC0tY29sb3IiLAogICAgInRlc3Q6dHlwaW5nIjogIi4vdmVuZG9yL2Jpbi9waHBzdGFuIGFuYWx5c2UiLAogICAgInRlc3Q6c3ludGF4IjogIi4vdmVuZG9yL2Jpbi9waHAtY3MtZml4ZXIgZml4IC4vc3JjIC0tZHJ5LXJ1biAtLXN0b3Atb24tdmlvbGF0aW9uIC0tdXNpbmctY2FjaGU9bm8iCiAgfSwKICAicmVxdWlyZSI6IHsKICAgICJwaHAiOiAiPj03LjIiLAogICAgImV4dC1jdXJsIjogIioiLAogICAgImV4dC1qc29uIjogIioiLAogICAgImV4dC1tYnN0cmluZyI6ICIqIiwKICAgICJleHQtb3BlbnNzbCI6ICIqIiwKICAgICJndXp6bGVodHRwL2d1enpsZSI6ICJeNy4wLjF8XjYuMiIsCiAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUiOiAiXjIuMCIsCiAgICAid2ViLXRva2VuL2p3dC1rZXktbWdtdCI6ICJeMi4wIiwKICAgICJ3ZWItdG9rZW4vand0LXNpZ25hdHVyZS1hbGdvcml0aG0tZWNkc2EiOiAiXjIuMCIsCiAgICAid2ViLXRva2VuL2p3dC11dGlsLWVjYyI6ICJeMi4wIgogIH0sCiAgInJlcXVpcmUtZGV2IjogewogICAgInBocHVuaXQvcGhwdW5pdCI6ICJeOC4wfF45LjAiLAogICAgInBocHN0YW4vcGhwc3RhbiI6ICJeMC4xMXxeMC4xMiIsCiAgICAiZnJpZW5kc29mcGhwL3BocC1jcy1maXhlciI6ICJeMi4xNCIKICB9LAogICJhdXRvbG9hZCI6IHsKICAgICJwc3ItNCIgOiB7CiAgICAgICJNaW5pc2hsaW5rXFxXZWJQdXNoXFwiIDogInNyYyIKICAgIH0KICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE1IExvdWlzIExhZ3JhbmdlCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/phpstan.neon</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[cGFyYW1ldGVyczoKICAgIGxldmVsOiA3CiAgICBwYXRoczoKICAgICAgICAtIHNyYwogICAgY2hlY2tNaXNzaW5nSXRlcmFibGVWYWx1ZVR5cGU6IGZhbHNlCiAgICBpZ25vcmVFcnJvcnM6CiAgICAgICAgLSAnI1VucmVhY2hhYmxlIHN0YXRlbWVudCBcLSBjb2RlIGFib3ZlIGFsd2F5cyB0ZXJtaW5hdGVzXC4jJw==]]></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[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRWNjXFByaXZhdGVLZXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRUNLZXk7CgpjbGFzcyBFbmNyeXB0aW9uCnsKICAgIHB1YmxpYyBjb25zdCBNQVhfUEFZTE9BRF9MRU5HVEggPSA0MDc4OwogICAgcHVibGljIGNvbnN0IE1BWF9DT01QQVRJQklMSVRZX1BBWUxPQURfTEVOR1RIID0gMzA1MjsKCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBheWxvYWQKICAgICAqIEBwYXJhbSBpbnQgJG1heExlbmd0aFRvUGFkCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50RW5jb2RpbmcKICAgICAqIEByZXR1cm4gc3RyaW5nIHBhZGRlZCBwYXlsb2FkIChwbGFpbnRleHQpCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhZFBheWxvYWQoc3RyaW5nICRwYXlsb2FkLCBpbnQgJG1heExlbmd0aFRvUGFkLCBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZyk6IHN0cmluZwogICAgewogICAgICAgICRwYXlsb2FkTGVuID0gVXRpbHM6OnNhZmVTdHJsZW4oJHBheWxvYWQpOwogICAgICAgICRwYWRMZW4gPSAkbWF4TGVuZ3RoVG9QYWQgPyAkbWF4TGVuZ3RoVG9QYWQgLSAkcGF5bG9hZExlbiA6IDA7CgogICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzZ2NtIikgewogICAgICAgICAgICByZXR1cm4gcGFjaygnbionLCAkcGFkTGVuKS5zdHJfcGFkKCRwYXlsb2FkLCAkcGFkTGVuICsgJHBheWxvYWRMZW4sIGNocigwKSwgU1RSX1BBRF9MRUZUKTsKICAgICAgICB9IGVsc2VpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlczEyOGdjbSIpIHsKICAgICAgICAgICAgcmV0dXJuIHN0cl9wYWQoJHBheWxvYWQuY2hyKDIpLCAkcGFkTGVuICsgJHBheWxvYWRMZW4sIGNocigwKSwgU1RSX1BBRF9SSUdIVCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbigiVGhpcyBjb250ZW50IGVuY29kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXlsb2FkIFdpdGggcGFkZGluZwogICAgICogQHBhcmFtIHN0cmluZyAkdXNlclB1YmxpY0tleSBCYXNlIDY0IGVuY29kZWQgKE1JTUUgb3IgVVJMLXNhZmUpCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VyQXV0aFRva2VuIEJhc2UgNjQgZW5jb2RlZCAoTUlNRSBvciBVUkwtc2FmZSkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZW5jcnlwdChzdHJpbmcgJHBheWxvYWQsIHN0cmluZyAkdXNlclB1YmxpY0tleSwgc3RyaW5nICR1c2VyQXV0aFRva2VuLCBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZyk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6OmRldGVybWluaXN0aWNFbmNyeXB0KAogICAgICAgICAgICAkcGF5bG9hZCwKICAgICAgICAgICAgJHVzZXJQdWJsaWNLZXksCiAgICAgICAgICAgICR1c2VyQXV0aFRva2VuLAogICAgICAgICAgICAkY29udGVudEVuY29kaW5nLAogICAgICAgICAgICBzZWxmOjpjcmVhdGVMb2NhbEtleU9iamVjdCgpLAogICAgICAgICAgICByYW5kb21fYnl0ZXMoMTYpCiAgICAgICAgKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHBheWxvYWQKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJQdWJsaWNLZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJBdXRoVG9rZW4KICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHBhcmFtIGFycmF5ICRsb2NhbEtleU9iamVjdAogICAgICogQHBhcmFtIHN0cmluZyAkc2FsdAogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGV0ZXJtaW5pc3RpY0VuY3J5cHQoc3RyaW5nICRwYXlsb2FkLCBzdHJpbmcgJHVzZXJQdWJsaWNLZXksIHN0cmluZyAkdXNlckF1dGhUb2tlbiwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcsIGFycmF5ICRsb2NhbEtleU9iamVjdCwgc3RyaW5nICRzYWx0KTogYXJyYXkKICAgIHsKICAgICAgICAkdXNlclB1YmxpY0tleSA9IEJhc2U2NFVybDo6ZGVjb2RlKCR1c2VyUHVibGljS2V5KTsKICAgICAgICAkdXNlckF1dGhUb2tlbiA9IEJhc2U2NFVybDo6ZGVjb2RlKCR1c2VyQXV0aFRva2VuKTsKCiAgICAgICAgLy8gZ2V0IGxvY2FsIGtleSBwYWlyCiAgICAgICAgaWYgKGNvdW50KCRsb2NhbEtleU9iamVjdCkgPT09IDEpIHsKICAgICAgICAgICAgLyoqIEB2YXIgSldLICRsb2NhbEp3ayAqLwogICAgICAgICAgICAkbG9jYWxKd2sgPSBjdXJyZW50KCRsb2NhbEtleU9iamVjdCk7CiAgICAgICAgICAgICRsb2NhbFB1YmxpY0tleSA9IGhleDJiaW4oVXRpbHM6OnNlcmlhbGl6ZVB1YmxpY0tleUZyb21KV0soJGxvY2FsSndrKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLyoqIEB2YXIgUHJpdmF0ZUtleSAkbG9jYWxQcml2YXRlS2V5T2JqZWN0ICovCiAgICAgICAgICAgIGxpc3QoJGxvY2FsUHVibGljS2V5T2JqZWN0LCAkbG9jYWxQcml2YXRlS2V5T2JqZWN0KSA9ICRsb2NhbEtleU9iamVjdDsKICAgICAgICAgICAgJGxvY2FsUHVibGljS2V5ID0gaGV4MmJpbihVdGlsczo6c2VyaWFsaXplUHVibGljS2V5KCRsb2NhbFB1YmxpY0tleU9iamVjdCkpOwogICAgICAgICAgICAkbG9jYWxKd2sgPSBuZXcgSldLKFsKICAgICAgICAgICAgICAgICdrdHknID0+ICdFQycsCiAgICAgICAgICAgICAgICAnY3J2JyA9PiAnUC0yNTYnLAogICAgICAgICAgICAgICAgJ2QnID0+IEJhc2U2NFVybDo6ZW5jb2RlKCRsb2NhbFByaXZhdGVLZXlPYmplY3QtPmdldFNlY3JldCgpLT50b0J5dGVzKGZhbHNlKSksCiAgICAgICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoJGxvY2FsUHVibGljS2V5T2JqZWN0WzBdKSwKICAgICAgICAgICAgICAgICd5JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkbG9jYWxQdWJsaWNLZXlPYmplY3RbMV0pLAogICAgICAgICAgICBdKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkbG9jYWxQdWJsaWNLZXkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignRmFpbGVkIHRvIGNvbnZlcnQgbG9jYWwgcHVibGljIGtleSBmcm9tIGhleGFkZWNpbWFsIHRvIGJpbmFyeScpOwogICAgICAgIH0KCiAgICAgICAgLy8gZ2V0IHVzZXIgcHVibGljIGtleSBvYmplY3QKICAgICAgICBbJHVzZXJQdWJsaWNLZXlPYmplY3RYLCAkdXNlclB1YmxpY0tleU9iamVjdFldID0gVXRpbHM6OnVuc2VyaWFsaXplUHVibGljS2V5KCR1c2VyUHVibGljS2V5KTsKICAgICAgICAkdXNlckp3ayA9IG5ldyBKV0soWwogICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAnY3J2JyA9PiAnUC0yNTYnLAogICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoJHVzZXJQdWJsaWNLZXlPYmplY3RYKSwKICAgICAgICAgICAgJ3knID0+IEJhc2U2NFVybDo6ZW5jb2RlKCR1c2VyUHVibGljS2V5T2JqZWN0WSksCiAgICAgICAgXSk7CgogICAgICAgIC8vIGdldCBzaGFyZWQgc2VjcmV0IGZyb20gdXNlciBwdWJsaWMga2V5IGFuZCBsb2NhbCBwcml2YXRlIGtleQoKICAgICAgICAkc2hhcmVkU2VjcmV0ID0gc2VsZjo6Y2FsY3VsYXRlQWdyZWVtZW50S2V5KCRsb2NhbEp3aywgJHVzZXJKd2spOwoKICAgICAgICAkc2hhcmVkU2VjcmV0ID0gc3RyX3BhZCgkc2hhcmVkU2VjcmV0LCAzMiwgY2hyKDApLCBTVFJfUEFEX0xFRlQpOwogICAgICAgIGlmICghJHNoYXJlZFNlY3JldCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdGYWlsZWQgdG8gY29udmVydCBzaGFyZWQgc2VjcmV0IGZyb20gaGV4YWRlY2ltYWwgdG8gYmluYXJ5Jyk7CiAgICAgICAgfQoKICAgICAgICAvLyBzZWN0aW9uIDQuMwogICAgICAgICRpa20gPSBzZWxmOjpnZXRJS00oJHVzZXJBdXRoVG9rZW4sICR1c2VyUHVibGljS2V5LCAkbG9jYWxQdWJsaWNLZXksICRzaGFyZWRTZWNyZXQsICRjb250ZW50RW5jb2RpbmcpOwoKICAgICAgICAvLyBzZWN0aW9uIDQuMgogICAgICAgICRjb250ZXh0ID0gc2VsZjo6Y3JlYXRlQ29udGV4dCgkdXNlclB1YmxpY0tleSwgJGxvY2FsUHVibGljS2V5LCAkY29udGVudEVuY29kaW5nKTsKCiAgICAgICAgLy8gZGVyaXZlIHRoZSBDb250ZW50IEVuY3J5cHRpb24gS2V5CiAgICAgICAgJGNvbnRlbnRFbmNyeXB0aW9uS2V5SW5mbyA9IHNlbGY6OmNyZWF0ZUluZm8oJGNvbnRlbnRFbmNvZGluZywgJGNvbnRleHQsICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgICRjb250ZW50RW5jcnlwdGlvbktleSA9IHNlbGY6OmhrZGYoJHNhbHQsICRpa20sICRjb250ZW50RW5jcnlwdGlvbktleUluZm8sIDE2KTsKCiAgICAgICAgLy8gc2VjdGlvbiAzLjMsIGRlcml2ZSB0aGUgbm9uY2UKICAgICAgICAkbm9uY2VJbmZvID0gc2VsZjo6Y3JlYXRlSW5mbygnbm9uY2UnLCAkY29udGV4dCwgJGNvbnRlbnRFbmNvZGluZyk7CiAgICAgICAgJG5vbmNlID0gc2VsZjo6aGtkZigkc2FsdCwgJGlrbSwgJG5vbmNlSW5mbywgMTIpOwoKICAgICAgICAvLyBlbmNyeXB0CiAgICAgICAgLy8gIlRoZSBhZGRpdGlvbmFsIGRhdGEgcGFzc2VkIHRvIGVhY2ggaW52b2NhdGlvbiBvZiBBRUFEX0FFU18xMjhfR0NNIGlzIGEgemVyby1sZW5ndGggb2N0ZXQgc2VxdWVuY2UuIgogICAgICAgICR0YWcgPSAnJzsKICAgICAgICAkZW5jcnlwdGVkVGV4dCA9IG9wZW5zc2xfZW5jcnlwdCgkcGF5bG9hZCwgJ2Flcy0xMjgtZ2NtJywgJGNvbnRlbnRFbmNyeXB0aW9uS2V5LCBPUEVOU1NMX1JBV19EQVRBLCAkbm9uY2UsICR0YWcpOwoKICAgICAgICAvLyByZXR1cm4gdmFsdWVzIGluIHVybCBzYWZlIGJhc2U2NAogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICdsb2NhbFB1YmxpY0tleScgPT4gJGxvY2FsUHVibGljS2V5LAogICAgICAgICAgICAnc2FsdCcgPT4gJHNhbHQsCiAgICAgICAgICAgICdjaXBoZXJUZXh0JyA9PiAkZW5jcnlwdGVkVGV4dC4kdGFnLAogICAgICAgIF07CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDb250ZW50Q29kaW5nSGVhZGVyKHN0cmluZyAkc2FsdCwgc3RyaW5nICRsb2NhbFB1YmxpY0tleSwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlczEyOGdjbSIpIHsKICAgICAgICAgICAgcmV0dXJuICRzYWx0CiAgICAgICAgICAgICAgICAucGFjaygnTionLCA0MDk2KQogICAgICAgICAgICAgICAgLnBhY2soJ0MqJywgVXRpbHM6OnNhZmVTdHJsZW4oJGxvY2FsUHVibGljS2V5KSkKICAgICAgICAgICAgICAgIC4kbG9jYWxQdWJsaWNLZXk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gIiI7CiAgICB9CgogICAgLyoqCiAgICAgKiBITUFDLWJhc2VkIEV4dHJhY3QtYW5kLUV4cGFuZCBLZXkgRGVyaXZhdGlvbiBGdW5jdGlvbiAoSEtERikuCiAgICAgKgogICAgICogVGhpcyBpcyB1c2VkIHRvIGRlcml2ZSBhIHNlY3VyZSBlbmNyeXB0aW9uIGtleSBmcm9tIGEgbW9zdGx5LXNlY3VyZSBzaGFyZWQKICAgICAqIHNlY3JldC4KICAgICAqCiAgICAgKiBUaGlzIGlzIGEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBIS0RGIHRhaWxvcmVkIHRvIG91ciBzcGVjaWZpYyBwdXJwb3Nlcy4KICAgICAqIEluIHBhcnRpY3VsYXIsIGZvciB1cyB0aGUgdmFsdWUgb2YgTiB3aWxsIGFsd2F5cyBiZSAxLCBhbmQgdGh1cyBUIGFsd2F5cwogICAgICogZXF1YWxzIEhNQUMtSGFzaChQUkssIGluZm8gfCAweDAxKS4KICAgICAqCiAgICAgKiBTZWUge0BsaW5rIGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM1ODY5LnR4dH0KICAgICAqIEZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWUvcHVzaC1lbmNyeXB0aW9uLW5vZGUvYmxvYi9tYXN0ZXIvc3JjL2VuY3J5cHQuanN9CiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc2FsdCAgIEEgbm9uLXNlY3JldCByYW5kb20gdmFsdWUKICAgICAqIEBwYXJhbSBzdHJpbmcgJGlrbSAgICBJbnB1dCBrZXlpbmcgbWF0ZXJpYWwKICAgICAqIEBwYXJhbSBzdHJpbmcgJGluZm8gICBBcHBsaWNhdGlvbi1zcGVjaWZpYyBjb250ZXh0CiAgICAgKiBAcGFyYW0gaW50ICAgICRsZW5ndGggVGhlIGxlbmd0aCAoaW4gYnl0ZXMpIG9mIHRoZSByZXF1aXJlZCBvdXRwdXQga2V5CiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gaGtkZihzdHJpbmcgJHNhbHQsIHN0cmluZyAkaWttLCBzdHJpbmcgJGluZm8sIGludCAkbGVuZ3RoKTogc3RyaW5nCiAgICB7CiAgICAgICAgLy8gZXh0cmFjdAogICAgICAgICRwcmsgPSBoYXNoX2htYWMoJ3NoYTI1NicsICRpa20sICRzYWx0LCB0cnVlKTsKCiAgICAgICAgLy8gZXhwYW5kCiAgICAgICAgcmV0dXJuIG1iX3N1YnN0cihoYXNoX2htYWMoJ3NoYTI1NicsICRpbmZvLmNocigxKSwgJHByaywgdHJ1ZSksIDAsICRsZW5ndGgsICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgY29udGV4dCBmb3IgZGVyaXZpbmcgZW5jcnlwdGlvbiBwYXJhbWV0ZXJzLgogICAgICogU2VlIHNlY3Rpb24gNC4yIG9mCiAgICAgKiB7QGxpbmsgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWlldGYtaHR0cGJpcy1lbmNyeXB0aW9uLWVuY29kaW5nLTAwfQogICAgICogRnJvbSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZS9wdXNoLWVuY3J5cHRpb24tbm9kZS9ibG9iL21hc3Rlci9zcmMvZW5jcnlwdC5qc30uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY2xpZW50UHVibGljS2V5IFRoZSBjbGllbnQncyBwdWJsaWMga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzZXJ2ZXJQdWJsaWNLZXkgT3VyIHB1YmxpYyBrZXkKICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8c3RyaW5nCiAgICAgKgogICAgICogQHRocm93cyBcRXJyb3JFeGNlcHRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlQ29udGV4dChzdHJpbmcgJGNsaWVudFB1YmxpY0tleSwgc3RyaW5nICRzZXJ2ZXJQdWJsaWNLZXksIHN0cmluZyAkY29udGVudEVuY29kaW5nKTogP3N0cmluZwogICAgewogICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzMTI4Z2NtIikgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmIChVdGlsczo6c2FmZVN0cmxlbigkY2xpZW50UHVibGljS2V5KSAhPT0gNjUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignSW52YWxpZCBjbGllbnQgcHVibGljIGtleSBsZW5ndGgnKTsKICAgICAgICB9CgogICAgICAgIC8vIFRoaXMgb25lIHNob3VsZCBuZXZlciBoYXBwZW4sIGJlY2F1c2UgaXQncyBvdXIgY29kZSB0aGF0IGdlbmVyYXRlcyB0aGUga2V5CiAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRzZXJ2ZXJQdWJsaWNLZXkpICE9PSA2NSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdJbnZhbGlkIHNlcnZlciBwdWJsaWMga2V5IGxlbmd0aCcpOwogICAgICAgIH0KCiAgICAgICAgJGxlbiA9IGNocigwKS4nQSc7IC8vIDY1IGFzIFVpbnQxNkJFCgogICAgICAgIHJldHVybiBjaHIoMCkuJGxlbi4kY2xpZW50UHVibGljS2V5LiRsZW4uJHNlcnZlclB1YmxpY0tleTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5mbyByZWNvcmQuIFNlZSBzZWN0aW9ucyAzLjIgYW5kIDMuMyBvZgogICAgICoge0BsaW5rIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1pZXRmLWh0dHBiaXMtZW5jcnlwdGlvbi1lbmNvZGluZy0wMH0KICAgICAqIEZyb20ge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9Hb29nbGVDaHJvbWUvcHVzaC1lbmNyeXB0aW9uLW5vZGUvYmxvYi9tYXN0ZXIvc3JjL2VuY3J5cHQuanN9LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgVGhlIHR5cGUgb2YgdGhlIGluZm8gcmVjb3JkCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNvbnRleHQgVGhlIGNvbnRleHQgZm9yIHRoZSByZWNvcmQKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVJbmZvKHN0cmluZyAkdHlwZSwgP3N0cmluZyAkY29udGV4dCwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlc2djbSIpIHsKICAgICAgICAgICAgaWYgKCEkY29udGV4dCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignQ29udGV4dCBtdXN0IGV4aXN0Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChVdGlsczo6c2FmZVN0cmxlbigkY29udGV4dCkgIT09IDEzNSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignQ29udGV4dCBhcmd1bWVudCBoYXMgaW52YWxpZCBzaXplJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAnQ29udGVudC1FbmNvZGluZzogJy4kdHlwZS5jaHIoMCkuJ1AtMjU2Jy4kY29udGV4dDsKICAgICAgICB9IGVsc2VpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gImFlczEyOGdjbSIpIHsKICAgICAgICAgICAgcmV0dXJuICdDb250ZW50LUVuY29kaW5nOiAnLiR0eXBlLmNocigwKTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1RoaXMgY29udGVudCBlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkLicpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVMb2NhbEtleU9iamVjdCgpOiBhcnJheQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVMb2NhbEtleU9iamVjdFVzaW5nT3BlblNTTCgpOwogICAgICAgIH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNyZWF0ZUxvY2FsS2V5T2JqZWN0VXNpbmdQdXJlUGhwTWV0aG9kKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVMb2NhbEtleU9iamVjdFVzaW5nUHVyZVBocE1ldGhvZCgpOiBhcnJheQogICAgewogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmUyNTYoKTsKICAgICAgICAkcHJpdmF0ZUtleSA9ICRjdXJ2ZS0+Y3JlYXRlUHJpdmF0ZUtleSgpOwogICAgICAgICRwdWJsaWNLZXkgPSAkY3VydmUtPmNyZWF0ZVB1YmxpY0tleSgkcHJpdmF0ZUtleSk7CgogICAgICAgIGlmICgkcHVibGljS2V5LT5nZXRQb2ludCgpLT5nZXRYKCkgaW5zdGFuY2VvZiBCaWdJbnRlZ2VyKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICBuZXcgSldLKFsKICAgICAgICAgICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAgICAgICAgICdjcnYnID0+ICdQLTI1NicsCiAgICAgICAgICAgICAgICAgICAgJ3gnID0+IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmFkZE51bGxQYWRkaW5nKCRwdWJsaWNLZXktPmdldFBvaW50KCktPmdldFgoKS0+dG9CeXRlcyhmYWxzZSkpKSwKICAgICAgICAgICAgICAgICAgICAneScgPT4gQmFzZTY0VXJsOjplbmNvZGUoc2VsZjo6YWRkTnVsbFBhZGRpbmcoJHB1YmxpY0tleS0+Z2V0UG9pbnQoKS0+Z2V0WSgpLT50b0J5dGVzKGZhbHNlKSkpLAogICAgICAgICAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZShzZWxmOjphZGROdWxsUGFkZGluZygkcHJpdmF0ZUtleS0+Z2V0U2VjcmV0KCktPnRvQnl0ZXMoZmFsc2UpKSksCiAgICAgICAgICAgICAgICBdKQogICAgICAgICAgICBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgbmV3IEpXSyhbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAgICAgJ2NydicgPT4gJ1AtMjU2JywKICAgICAgICAgICAgICAgICd4JyA9PiBCYXNlNjRVcmw6OmVuY29kZShzZWxmOjphZGROdWxsUGFkZGluZyhoZXgyYmluKGdtcF9zdHJ2YWwoJHB1YmxpY0tleS0+Z2V0UG9pbnQoKS0+Z2V0WCgpLCAxNikpKSksCiAgICAgICAgICAgICAgICAneScgPT4gQmFzZTY0VXJsOjplbmNvZGUoc2VsZjo6YWRkTnVsbFBhZGRpbmcoaGV4MmJpbihnbXBfc3RydmFsKCRwdWJsaWNLZXktPmdldFBvaW50KCktPmdldFkoKSwgMTYpKSkpLAogICAgICAgICAgICAgICAgJ2QnID0+IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmFkZE51bGxQYWRkaW5nKGhleDJiaW4oZ21wX3N0cnZhbCgkcHJpdmF0ZUtleS0+Z2V0U2VjcmV0KCksIDE2KSkpKSwKICAgICAgICAgICAgXSkKICAgICAgICBdOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVMb2NhbEtleU9iamVjdFVzaW5nT3BlblNTTCgpOiBhcnJheQogICAgewogICAgICAgICRrZXlSZXNvdXJjZSA9IG9wZW5zc2xfcGtleV9uZXcoWwogICAgICAgICAgICAnY3VydmVfbmFtZScgICAgICAgPT4gJ3ByaW1lMjU2djEnLAogICAgICAgICAgICAncHJpdmF0ZV9rZXlfdHlwZScgPT4gT1BFTlNTTF9LRVlUWVBFX0VDLAogICAgICAgIF0pOwoKICAgICAgICBpZiAoISRrZXlSZXNvdXJjZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgXFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBjcmVhdGUgdGhlIGtleScpOwogICAgICAgIH0KCiAgICAgICAgJGRldGFpbHMgPSBvcGVuc3NsX3BrZXlfZ2V0X2RldGFpbHMoJGtleVJlc291cmNlKTsKICAgICAgICBpZiAoUEhQX01BSk9SX1ZFUlNJT04gPCA4KSB7CiAgICAgICAgICAgIG9wZW5zc2xfcGtleV9mcmVlKCRrZXlSZXNvdXJjZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoISRkZXRhaWxzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUga2V5IGRldGFpbHMnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIG5ldyBKV0soWwogICAgICAgICAgICAgICAgJ2t0eScgPT4gJ0VDJywKICAgICAgICAgICAgICAgICdjcnYnID0+ICdQLTI1NicsCiAgICAgICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoc2VsZjo6YWRkTnVsbFBhZGRpbmcoJGRldGFpbHNbJ2VjJ11bJ3gnXSkpLAogICAgICAgICAgICAgICAgJ3knID0+IEJhc2U2NFVybDo6ZW5jb2RlKHNlbGY6OmFkZE51bGxQYWRkaW5nKCRkZXRhaWxzWydlYyddWyd5J10pKSwKICAgICAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZShzZWxmOjphZGROdWxsUGFkZGluZygkZGV0YWlsc1snZWMnXVsnZCddKSksCiAgICAgICAgICAgIF0pCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJBdXRoVG9rZW4KICAgICAqIEBwYXJhbSBzdHJpbmcgJHVzZXJQdWJsaWNLZXkKICAgICAqIEBwYXJhbSBzdHJpbmcgJGxvY2FsUHVibGljS2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaGFyZWRTZWNyZXQKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnRFbmNvZGluZwogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldElLTShzdHJpbmcgJHVzZXJBdXRoVG9rZW4sIHN0cmluZyAkdXNlclB1YmxpY0tleSwgc3RyaW5nICRsb2NhbFB1YmxpY0tleSwgc3RyaW5nICRzaGFyZWRTZWNyZXQsIHN0cmluZyAkY29udGVudEVuY29kaW5nKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkdXNlckF1dGhUb2tlbikpIHsKICAgICAgICAgICAgaWYgKCRjb250ZW50RW5jb2RpbmcgPT09ICJhZXNnY20iKSB7CiAgICAgICAgICAgICAgICAkaW5mbyA9ICdDb250ZW50LUVuY29kaW5nOiBhdXRoJy5jaHIoMCk7CiAgICAgICAgICAgIH0gZWxzZWlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzMTI4Z2NtIikgewogICAgICAgICAgICAgICAgJGluZm8gPSAiV2ViUHVzaDogaW5mbyIuY2hyKDApLiR1c2VyUHVibGljS2V5LiRsb2NhbFB1YmxpY0tleTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oIlRoaXMgY29udGVudCBlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBzZWxmOjpoa2RmKCR1c2VyQXV0aFRva2VuLCAkc2hhcmVkU2VjcmV0LCAkaW5mbywgMzIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRzaGFyZWRTZWNyZXQ7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2FsY3VsYXRlQWdyZWVtZW50S2V5KEpXSyAkcHJpdmF0ZV9rZXksIEpXSyAkcHVibGljX2tleSk6IHN0cmluZwogICAgewogICAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ29wZW5zc2xfcGtleV9kZXJpdmUnKSkgewogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgJHB1YmxpY1BlbSA9IEVDS2V5Ojpjb252ZXJ0UHVibGljS2V5VG9QRU0oJHB1YmxpY19rZXkpOwogICAgICAgICAgICAgICAgJHByaXZhdGVQZW0gPSBFQ0tleTo6Y29udmVydFByaXZhdGVLZXlUb1BFTSgkcHJpdmF0ZV9rZXkpOwoKICAgICAgICAgICAgICAgICRyZXN1bHQgPSBvcGVuc3NsX3BrZXlfZGVyaXZlKCRwdWJsaWNQZW0sICRwcml2YXRlUGVtLCAyNTYpOyAvLyBAcGhwc3Rhbi1pZ25vcmUtbGluZQogICAgICAgICAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFeGNlcHRpb24oJ1VuYWJsZSB0byBjb21wdXRlIHRoZSBhZ3JlZW1lbnQga2V5Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgICAgICAgICAgfSBjYXRjaCAoXFRocm93YWJsZSAkdGhyb3dhYmxlKSB7CiAgICAgICAgICAgICAgICAvL0RvZXMgbm90aGluZy4gV2lsbCBmYWxsYmFjayB0byB0aGUgcHVyZSBQSFAgZnVuY3Rpb24KICAgICAgICAgICAgfQogICAgICAgIH0KCgogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmUyNTYoKTsKICAgICAgICB0cnkgewogICAgICAgICAgICAkcmVjX3ggPSBzZWxmOjpjb252ZXJ0QmFzZTY0VG9CaWdJbnRlZ2VyKCRwdWJsaWNfa2V5LT5nZXQoJ3gnKSk7CiAgICAgICAgICAgICRyZWNfeSA9IHNlbGY6OmNvbnZlcnRCYXNlNjRUb0JpZ0ludGVnZXIoJHB1YmxpY19rZXktPmdldCgneScpKTsKICAgICAgICAgICAgJHNlbl9kID0gc2VsZjo6Y29udmVydEJhc2U2NFRvQmlnSW50ZWdlcigkcHJpdmF0ZV9rZXktPmdldCgnZCcpKTsKICAgICAgICAgICAgJHByaXZfa2V5ID0gUHJpdmF0ZUtleTo6Y3JlYXRlKCRzZW5fZCk7CiAgICAgICAgICAgICRwdWJfa2V5ID0gJGN1cnZlLT5nZXRQdWJsaWNLZXlGcm9tKCRyZWNfeCwgJHJlY195KTsKCiAgICAgICAgICAgIHJldHVybiBoZXgyYmluKHN0cl9wYWQoJGN1cnZlLT5tdWwoJHB1Yl9rZXktPmdldFBvaW50KCksICRwcml2X2tleS0+Z2V0U2VjcmV0KCkpLT5nZXRYKCktPnRvQmFzZSgxNiksIDY0LCAnMCcsIFNUUl9QQURfTEVGVCkpOyAvLyBAcGhwc3Rhbi1pZ25vcmUtbGluZQogICAgICAgIH0gY2F0Y2ggKFxUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgJHJlY194ID0gc2VsZjo6Y29udmVydEJhc2U2NFRvR01QKCRwdWJsaWNfa2V5LT5nZXQoJ3gnKSk7CiAgICAgICAgICAgICRyZWNfeSA9IHNlbGY6OmNvbnZlcnRCYXNlNjRUb0dNUCgkcHVibGljX2tleS0+Z2V0KCd5JykpOwogICAgICAgICAgICAkc2VuX2QgPSBzZWxmOjpjb252ZXJ0QmFzZTY0VG9HTVAoJHByaXZhdGVfa2V5LT5nZXQoJ2QnKSk7CiAgICAgICAgICAgICRwcml2X2tleSA9IFByaXZhdGVLZXk6OmNyZWF0ZSgkc2VuX2QpOyAvLyBAcGhwc3Rhbi1pZ25vcmUtbGluZQogICAgICAgICAgICAkcHViX2tleSA9ICRjdXJ2ZS0+Z2V0UHVibGljS2V5RnJvbSgkcmVjX3gsICRyZWNfeSk7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCgogICAgICAgICAgICByZXR1cm4gaGV4MmJpbihnbXBfc3RydmFsKCRjdXJ2ZS0+bXVsKCRwdWJfa2V5LT5nZXRQb2ludCgpLCAkcHJpdl9rZXktPmdldFNlY3JldCgpKS0+Z2V0WCgpLCAxNikpOyAvLyBAcGhwc3Rhbi1pZ25vcmUtbGluZQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydEJhc2U2NFRvQmlnSW50ZWdlcihzdHJpbmcgJHZhbHVlKTogQmlnSW50ZWdlcgogICAgewogICAgICAgICR2YWx1ZSA9IHVucGFjaygnSConLCBCYXNlNjRVcmw6OmRlY29kZSgkdmFsdWUpKTsKCiAgICAgICAgcmV0dXJuIEJpZ0ludGVnZXI6OmZyb21CYXNlKCR2YWx1ZVsxXSwgMTYpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqIEByZXR1cm4gXEdNUAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0QmFzZTY0VG9HTVAoc3RyaW5nICR2YWx1ZSk6IFxHTVAKICAgIHsKICAgICAgICAkdmFsdWUgPSB1bnBhY2soJ0gqJywgQmFzZTY0VXJsOjpkZWNvZGUoJHZhbHVlKSk7CgogICAgICAgIHJldHVybiBnbXBfaW5pdCgkdmFsdWVbMV0sIDE2KTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBhZGROdWxsUGFkZGluZyhzdHJpbmcgJGRhdGEpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc3RyX3BhZCgkZGF0YSwgMzIsIGNocigwKSwgU1RSX1BBRF9MRUZUKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/MessageSentReport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEBhdXRob3IgSWdvciBUaW1vc2hlbmtvdiBbaXRAY2FtcG9pbnQubmV0XQogKiBAc3RhcnRlZDogMDMuMDkuMjAxOCA5OjIxCiAqLwoKbmFtZXNwYWNlIE1pbmlzaGxpbmtcV2ViUHVzaDsKCnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2U7CnVzZSBQc3JcSHR0cFxNZXNzYWdlXFJlc3BvbnNlSW50ZXJmYWNlOwoKLyoqCiAqIFN0YW5kYXJkaXplZCByZXNwb25zZSBmcm9tIHNlbmRpbmcgYSBtZXNzYWdlCiAqLwpjbGFzcyBNZXNzYWdlU2VudFJlcG9ydCBpbXBsZW1lbnRzIFxKc29uU2VyaWFsaXphYmxlCnsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbGVhbgogICAgICovCiAgICBwcm90ZWN0ZWQgJHN1Y2Nlc3M7CgogICAgLyoqCiAgICAgKiBAdmFyIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHJvdGVjdGVkICRyZXF1ZXN0OwoKICAgIC8qKgogICAgICogQHZhciBSZXNwb25zZUludGVyZmFjZSB8IG51bGwKICAgICAqLwogICAgcHJvdGVjdGVkICRyZXNwb25zZTsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCAkcmVhc29uOwoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgICRyZXF1ZXN0CiAgICAgKiBAcGFyYW0gUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlCiAgICAgKiBAcGFyYW0gYm9vbCAgICAgICAgICAgICAgJHN1Y2Nlc3MKICAgICAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAkcmVhc29uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChSZXF1ZXN0SW50ZXJmYWNlICRyZXF1ZXN0LCA/UmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlID0gbnVsbCwgYm9vbCAkc3VjY2VzcyA9IHRydWUsICRyZWFzb24gPSAnT0snKQogICAgewogICAgICAgICR0aGlzLT5yZXF1ZXN0ICA9ICRyZXF1ZXN0OwogICAgICAgICR0aGlzLT5yZXNwb25zZSA9ICRyZXNwb25zZTsKICAgICAgICAkdGhpcy0+c3VjY2VzcyAgPSAkc3VjY2VzczsKICAgICAgICAkdGhpcy0+cmVhc29uICAgPSAkcmVhc29uOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1N1Y2Nlc3MoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c3VjY2VzczsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBib29sICRzdWNjZXNzCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlU2VudFJlcG9ydAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0U3VjY2Vzcyhib29sICRzdWNjZXNzKTogTWVzc2FnZVNlbnRSZXBvcnQKICAgIHsKICAgICAgICAkdGhpcy0+c3VjY2VzcyA9ICRzdWNjZXNzOwogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXF1ZXN0OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QKICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2VTZW50UmVwb3J0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRSZXF1ZXN0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpOiBNZXNzYWdlU2VudFJlcG9ydAogICAgewogICAgICAgICR0aGlzLT5yZXF1ZXN0ID0gJHJlcXVlc3Q7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSZXNwb25zZUludGVyZmFjZSB8IG51bGwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3BvbnNlKCk6ID9SZXNwb25zZUludGVyZmFjZQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlU2VudFJlcG9ydAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UmVzcG9uc2UoUmVzcG9uc2VJbnRlcmZhY2UgJHJlc3BvbnNlKTogTWVzc2FnZVNlbnRSZXBvcnQKICAgIHsKICAgICAgICAkdGhpcy0+cmVzcG9uc2UgPSAkcmVzcG9uc2U7CiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVuZHBvaW50KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cmVxdWVzdC0+Z2V0VXJpKCktPl9fdG9TdHJpbmcoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNTdWJzY3JpcHRpb25FeHBpcmVkKCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5yZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXGluX2FycmF5KCR0aGlzLT5yZXNwb25zZS0+Z2V0U3RhdHVzQ29kZSgpLCBbNDA0LCA0MTBdLCB0cnVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZWFzb24oKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZWFzb247CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyZWFzb24KICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2VTZW50UmVwb3J0CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRSZWFzb24oc3RyaW5nICRyZWFzb24pOiBNZXNzYWdlU2VudFJlcG9ydAogICAgewogICAgICAgICR0aGlzLT5yZWFzb24gPSAkcmVhc29uOwogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXF1ZXN0UGF5bG9hZCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlcXVlc3QtPmdldEJvZHkoKS0+Z2V0Q29udGVudHMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nIHwgbnVsbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVzcG9uc2VDb250ZW50KCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5yZXNwb25zZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+cmVzcG9uc2UtPmdldEJvZHkoKS0+Z2V0Q29udGVudHMoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGpzb25TZXJpYWxpemUoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAnc3VjY2VzcycgID0+ICR0aGlzLT5pc1N1Y2Nlc3MoKSwKICAgICAgICAgICAgJ2V4cGlyZWQnICA9PiAkdGhpcy0+aXNTdWJzY3JpcHRpb25FeHBpcmVkKCksCiAgICAgICAgICAgICdyZWFzb24nICAgPT4gJHRoaXMtPnJlYXNvbiwKICAgICAgICAgICAgJ2VuZHBvaW50JyA9PiAkdGhpcy0+Z2V0RW5kcG9pbnQoKSwKICAgICAgICAgICAgJ3BheWxvYWQnICA9PiAkdGhpcy0+cmVxdWVzdC0+Z2V0Qm9keSgpLT5nZXRDb250ZW50cygpLAogICAgICAgIF07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Notification.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7CgpjbGFzcyBOb3RpZmljYXRpb24KewogICAgLyoqIEB2YXIgU3Vic2NyaXB0aW9uSW50ZXJmYWNlICovCiAgICBwcml2YXRlICRzdWJzY3JpcHRpb247CgogICAgLyoqIEB2YXIgbnVsbHxzdHJpbmcgKi8KICAgIHByaXZhdGUgJHBheWxvYWQ7CgogICAgLyoqIEB2YXIgYXJyYXkgT3B0aW9ucyA6IFRUTCwgdXJnZW5jeSwgdG9waWMgKi8KICAgIHByaXZhdGUgJG9wdGlvbnM7CgogICAgLyoqIEB2YXIgYXJyYXkgQXV0aCBkZXRhaWxzIDogVkFQSUQgKi8KICAgIHByaXZhdGUgJGF1dGg7CgogICAgLyoqCiAgICAgKiBOb3RpZmljYXRpb24gY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIFN1YnNjcmlwdGlvbkludGVyZmFjZSAkc3Vic2NyaXB0aW9uCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBheWxvYWQKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucwogICAgICogQHBhcmFtIGFycmF5ICRhdXRoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChTdWJzY3JpcHRpb25JbnRlcmZhY2UgJHN1YnNjcmlwdGlvbiwgP3N0cmluZyAkcGF5bG9hZCwgYXJyYXkgJG9wdGlvbnMsIGFycmF5ICRhdXRoKQogICAgewogICAgICAgICR0aGlzLT5zdWJzY3JpcHRpb24gPSAkc3Vic2NyaXB0aW9uOwogICAgICAgICR0aGlzLT5wYXlsb2FkID0gJHBheWxvYWQ7CiAgICAgICAgJHRoaXMtPm9wdGlvbnMgPSAkb3B0aW9uczsKICAgICAgICAkdGhpcy0+YXV0aCA9ICRhdXRoOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBTdWJzY3JpcHRpb25JbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFN1YnNjcmlwdGlvbigpOiBTdWJzY3JpcHRpb25JbnRlcmZhY2UKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnN1YnNjcmlwdGlvbjsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBheWxvYWQoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBhcnJheSAkZGVmYXVsdE9wdGlvbnMKICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcHRpb25zKGFycmF5ICRkZWZhdWx0T3B0aW9ucyA9IFtdKTogYXJyYXkKICAgIHsKICAgICAgICAkb3B0aW9ucyA9ICR0aGlzLT5vcHRpb25zOwogICAgICAgICRvcHRpb25zWydUVEwnXSA9IGFycmF5X2tleV9leGlzdHMoJ1RUTCcsICRvcHRpb25zKSA/ICRvcHRpb25zWydUVEwnXSA6ICRkZWZhdWx0T3B0aW9uc1snVFRMJ107CiAgICAgICAgJG9wdGlvbnNbJ3VyZ2VuY3knXSA9IGFycmF5X2tleV9leGlzdHMoJ3VyZ2VuY3knLCAkb3B0aW9ucykgPyAkb3B0aW9uc1sndXJnZW5jeSddIDogJGRlZmF1bHRPcHRpb25zWyd1cmdlbmN5J107CiAgICAgICAgJG9wdGlvbnNbJ3RvcGljJ10gPSBhcnJheV9rZXlfZXhpc3RzKCd0b3BpYycsICRvcHRpb25zKSA/ICRvcHRpb25zWyd0b3BpYyddIDogJGRlZmF1bHRPcHRpb25zWyd0b3BpYyddOwoKICAgICAgICByZXR1cm4gJG9wdGlvbnM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGRlZmF1bHRBdXRoCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXV0aChhcnJheSAkZGVmYXVsdEF1dGgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+YXV0aCkgPiAwID8gJHRoaXMtPmF1dGggOiAkZGVmYXVsdEF1dGg7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Subscription.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7CgpjbGFzcyBTdWJzY3JpcHRpb24gaW1wbGVtZW50cyBTdWJzY3JpcHRpb25JbnRlcmZhY2UKewogICAgLyoqIEB2YXIgc3RyaW5nICovCiAgICBwcml2YXRlICRlbmRwb2ludDsKCiAgICAvKiogQHZhciBudWxsfHN0cmluZyAqLwogICAgcHJpdmF0ZSAkcHVibGljS2V5OwoKICAgIC8qKiBAdmFyIG51bGx8c3RyaW5nICovCiAgICBwcml2YXRlICRhdXRoVG9rZW47CgogICAgLyoqIEB2YXIgbnVsbHxzdHJpbmcgKi8KICAgIHByaXZhdGUgJGNvbnRlbnRFbmNvZGluZzsKCiAgICAvKioKICAgICAqIFN1YnNjcmlwdGlvbiBjb25zdHJ1Y3Rvci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRlbmRwb2ludAogICAgICogQHBhcmFtIG51bGx8c3RyaW5nICRwdWJsaWNLZXkKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkYXV0aFRva2VuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50RW5jb2RpbmcgKE9wdGlvbmFsKSBNdXN0IGJlICJhZXNnY20iCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoCiAgICAgICAgc3RyaW5nICRlbmRwb2ludCwKICAgICAgICA/c3RyaW5nICRwdWJsaWNLZXkgPSBudWxsLAogICAgICAgID9zdHJpbmcgJGF1dGhUb2tlbiA9IG51bGwsCiAgICAgICAgP3N0cmluZyAkY29udGVudEVuY29kaW5nID0gbnVsbAogICAgKSB7CiAgICAgICAgJHRoaXMtPmVuZHBvaW50ID0gJGVuZHBvaW50OwoKICAgICAgICBpZiAoJHB1YmxpY0tleSB8fCAkYXV0aFRva2VuIHx8ICRjb250ZW50RW5jb2RpbmcpIHsKICAgICAgICAgICAgJHN1cHBvcnRlZENvbnRlbnRFbmNvZGluZ3MgPSBbJ2Flc2djbScsICdhZXMxMjhnY20nXTsKICAgICAgICAgICAgaWYgKCRjb250ZW50RW5jb2RpbmcgJiYgIWluX2FycmF5KCRjb250ZW50RW5jb2RpbmcsICRzdXBwb3J0ZWRDb250ZW50RW5jb2RpbmdzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignVGhpcyBjb250ZW50IGVuY29kaW5nICgnLiRjb250ZW50RW5jb2RpbmcuJykgaXMgbm90IHN1cHBvcnRlZC4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHRoaXMtPnB1YmxpY0tleSA9ICRwdWJsaWNLZXk7CiAgICAgICAgICAgICR0aGlzLT5hdXRoVG9rZW4gPSAkYXV0aFRva2VuOwogICAgICAgICAgICAkdGhpcy0+Y29udGVudEVuY29kaW5nID0gJGNvbnRlbnRFbmNvZGluZyA/OiAiYWVzZ2NtIjsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJzY3JpcHRpb24gZmFjdG9yeS4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJGFzc29jaWF0aXZlQXJyYXkgKHdpdGgga2V5cyBlbmRwb2ludCwgcHVibGljS2V5LCBhdXRoVG9rZW4sIGNvbnRlbnRFbmNvZGluZykKICAgICAqIEByZXR1cm4gc2VsZgogICAgICogQHRocm93cyBcRXJyb3JFeGNlcHRpb24KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoYXJyYXkgJGFzc29jaWF0aXZlQXJyYXkpOiBzZWxmCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2tleXMnLCAkYXNzb2NpYXRpdmVBcnJheSkgJiYgaXNfYXJyYXkoJGFzc29jaWF0aXZlQXJyYXlbJ2tleXMnXSkpIHsKICAgICAgICAgICAgcmV0dXJuIG5ldyBzZWxmKAogICAgICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2VuZHBvaW50J10sCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsna2V5cyddWydwMjU2ZGgnXSA/PyBudWxsLAogICAgICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2tleXMnXVsnYXV0aCddID8/IG51bGwsCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsnY29udGVudEVuY29kaW5nJ10gPz8gImFlc2djbSIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwdWJsaWNLZXknLCAkYXNzb2NpYXRpdmVBcnJheSkgfHwgYXJyYXlfa2V5X2V4aXN0cygnYXV0aFRva2VuJywgJGFzc29jaWF0aXZlQXJyYXkpIHx8IGFycmF5X2tleV9leGlzdHMoJ2NvbnRlbnRFbmNvZGluZycsICRhc3NvY2lhdGl2ZUFycmF5KSkgewogICAgICAgICAgICByZXR1cm4gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsnZW5kcG9pbnQnXSwKICAgICAgICAgICAgICAgICRhc3NvY2lhdGl2ZUFycmF5WydwdWJsaWNLZXknXSA/PyBudWxsLAogICAgICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2F1dGhUb2tlbiddID8/IG51bGwsCiAgICAgICAgICAgICAgICAkYXNzb2NpYXRpdmVBcnJheVsnY29udGVudEVuY29kaW5nJ10gPz8gImFlc2djbSIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgc2VsZigKICAgICAgICAgICAgJGFzc29jaWF0aXZlQXJyYXlbJ2VuZHBvaW50J10KICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RW5kcG9pbnQoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmRwb2ludDsKICAgIH0KCiAgICAvKioKICAgICAqIHtAaW5oZXJpdERvY30KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFB1YmxpY0tleSgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wdWJsaWNLZXk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXREb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRoVG9rZW4oKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXV0aFRva2VuOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0RG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudEVuY29kaW5nKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvbnRlbnRFbmNvZGluZzsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/SubscriptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7CgovKioKICogQGF1dGhvciBTZXJnaWkgQm9uZGFyZW5rbyA8c2JAZmlyc3R2ZWN0b3Iub3JnPgogKi8KaW50ZXJmYWNlIFN1YnNjcmlwdGlvbkludGVyZmFjZQp7CiAgICAvKioKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmRwb2ludCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoKTogP3N0cmluZzsKCiAgICAvKioKICAgICAqIEByZXR1cm4gbnVsbHxzdHJpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEF1dGhUb2tlbigpOiA/c3RyaW5nOwoKICAgIC8qKgogICAgICogQHJldHVybiBudWxsfHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29udGVudEVuY29kaW5nKCk6ID9zdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/Utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xQdWJsaWNLZXk7CgpjbGFzcyBVdGlscwp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlCiAgICAgKgogICAgICogQHJldHVybiBpbnQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzYWZlU3RybGVuKHN0cmluZyAkdmFsdWUpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gbWJfc3RybGVuKCR2YWx1ZSwgJzhiaXQnKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBQdWJsaWNLZXkgJHB1YmxpY0tleQogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2VyaWFsaXplUHVibGljS2V5KFB1YmxpY0tleSAkcHVibGljS2V5KTogc3RyaW5nCiAgICB7CiAgICAgICAgJGhleFN0cmluZyA9ICcwNCc7CiAgICAgICAgJHBvaW50ID0gJHB1YmxpY0tleS0+Z2V0UG9pbnQoKTsKICAgICAgICBpZiAoJHBvaW50LT5nZXRYKCkgaW5zdGFuY2VvZiBCaWdJbnRlZ2VyKSB7CiAgICAgICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZCgkcG9pbnQtPmdldFgoKS0+dG9CYXNlKDE2KSwgNjQsICcwJywgU1RSX1BBRF9MRUZUKTsKICAgICAgICAgICAgJGhleFN0cmluZyAuPSBzdHJfcGFkKCRwb2ludC0+Z2V0WSgpLT50b0Jhc2UoMTYpLCA2NCwgJzAnLCBTVFJfUEFEX0xFRlQpOwogICAgICAgIH0gZWxzZSB7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCiAgICAgICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZChnbXBfc3RydmFsKCRwb2ludC0+Z2V0WCgpLCAxNiksIDY0LCAnMCcsIFNUUl9QQURfTEVGVCk7CiAgICAgICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZChnbXBfc3RydmFsKCRwb2ludC0+Z2V0WSgpLCAxNiksIDY0LCAnMCcsIFNUUl9QQURfTEVGVCk7IC8vIEBwaHBzdGFuLWlnbm9yZS1saW5lCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGhleFN0cmluZzsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0sgJGp3awogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2VyaWFsaXplUHVibGljS2V5RnJvbUpXSyhKV0sgJGp3ayk6IHN0cmluZwogICAgewogICAgICAgICRoZXhTdHJpbmcgPSAnMDQnOwogICAgICAgICRoZXhTdHJpbmcgLj0gc3RyX3BhZChiaW4yaGV4KEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneCcpKSksIDY0LCAnMCcsIFNUUl9QQURfTEVGVCk7CiAgICAgICAgJGhleFN0cmluZyAuPSBzdHJfcGFkKGJpbjJoZXgoQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd5JykpKSwgNjQsICcwJywgU1RSX1BBRF9MRUZUKTsKCiAgICAgICAgcmV0dXJuICRoZXhTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRkYXRhCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplUHVibGljS2V5KHN0cmluZyAkZGF0YSk6IGFycmF5CiAgICB7CiAgICAgICAgJGRhdGEgPSBiaW4yaGV4KCRkYXRhKTsKICAgICAgICBpZiAobWJfc3Vic3RyKCRkYXRhLCAwLCAyLCAnOGJpdCcpICE9PSAnMDQnKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGRhdGE6IG9ubHkgdW5jb21wcmVzc2VkIGtleXMgYXJlIHN1cHBvcnRlZC4nKTsKICAgICAgICB9CiAgICAgICAgJGRhdGEgPSBtYl9zdWJzdHIoJGRhdGEsIDIsIG51bGwsICc4Yml0Jyk7CiAgICAgICAgJGRhdGFMZW5ndGggPSBzZWxmOjpzYWZlU3RybGVuKCRkYXRhKTsKCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgaGV4MmJpbihtYl9zdWJzdHIoJGRhdGEsIDAsICRkYXRhTGVuZ3RoIC8gMiwgJzhiaXQnKSksCiAgICAgICAgICAgIGhleDJiaW4obWJfc3Vic3RyKCRkYXRhLCAkZGF0YUxlbmd0aCAvIDIsIG51bGwsICc4Yml0JykpLAogICAgICAgIF07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/VAPID.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcQWxnb3JpdGhtTWFuYWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcS2V5TWFuYWdlbWVudFxKV0tGYWN0b3J5Owp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEFsZ29yaXRobVxFUzI1NjsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxKV1NCdWlsZGVyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXFNlcmlhbGl6ZXJcQ29tcGFjdFNlcmlhbGl6ZXI7CgpjbGFzcyBWQVBJRAp7CiAgICBwcml2YXRlIGNvbnN0IFBVQkxJQ19LRVlfTEVOR1RIID0gNjU7CiAgICBwcml2YXRlIGNvbnN0IFBSSVZBVEVfS0VZX0xFTkdUSCA9IDMyOwoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICR2YXBpZAogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZhbGlkYXRlKGFycmF5ICR2YXBpZCk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCFpc3NldCgkdmFwaWRbJ3N1YmplY3QnXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignW1ZBUElEXSBZb3UgbXVzdCBwcm92aWRlIGEgc3ViamVjdCB0aGF0IGlzIGVpdGhlciBhIG1haWx0bzogb3IgYSBVUkwuJyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJHZhcGlkWydwZW1GaWxlJ10pKSB7CiAgICAgICAgICAgICR2YXBpZFsncGVtJ10gPSBmaWxlX2dldF9jb250ZW50cygkdmFwaWRbJ3BlbUZpbGUnXSk7CgogICAgICAgICAgICBpZiAoISR2YXBpZFsncGVtJ10pIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0Vycm9yIGxvYWRpbmcgUEVNIGZpbGUuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkdmFwaWRbJ3BlbSddKSkgewogICAgICAgICAgICAkandrID0gSldLRmFjdG9yeTo6Y3JlYXRlRnJvbUtleSgkdmFwaWRbJ3BlbSddKTsKICAgICAgICAgICAgaWYgKCRqd2stPmdldCgna3R5JykgIT09ICdFQycgfHwgISRqd2stPmhhcygnZCcpIHx8ICEkandrLT5oYXMoJ3gnKSB8fCAhJGp3ay0+aGFzKCd5JykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0ludmFsaWQgUEVNIGRhdGEuJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRiaW5hcnlQdWJsaWNLZXkgPSBoZXgyYmluKFV0aWxzOjpzZXJpYWxpemVQdWJsaWNLZXlGcm9tSldLKCRqd2spKTsKICAgICAgICAgICAgaWYgKCEkYmluYXJ5UHVibGljS2V5KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdGYWlsZWQgdG8gY29udmVydCBWQVBJRCBwdWJsaWMga2V5IGZyb20gaGV4YWRlY2ltYWwgdG8gYmluYXJ5Jyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHZhcGlkWydwdWJsaWNLZXknXSA9IGJhc2U2NF9lbmNvZGUoJGJpbmFyeVB1YmxpY0tleSk7CiAgICAgICAgICAgICR2YXBpZFsncHJpdmF0ZUtleSddID0gYmFzZTY0X2VuY29kZShzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgMiAqIHNlbGY6OlBSSVZBVEVfS0VZX0xFTkdUSCwgJzAnLCBTVFJfUEFEX0xFRlQpKTsKICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJHZhcGlkWydwdWJsaWNLZXknXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignW1ZBUElEXSBZb3UgbXVzdCBwcm92aWRlIGEgcHVibGljIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRwdWJsaWNLZXkgPSBCYXNlNjRVcmw6OmRlY29kZSgkdmFwaWRbJ3B1YmxpY0tleSddKTsKCiAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRwdWJsaWNLZXkpICE9PSBzZWxmOjpQVUJMSUNfS0VZX0xFTkdUSCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdbVkFQSURdIFB1YmxpYyBrZXkgc2hvdWxkIGJlIDY1IGJ5dGVzIGxvbmcgd2hlbiBkZWNvZGVkLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCFpc3NldCgkdmFwaWRbJ3ByaXZhdGVLZXknXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignW1ZBUElEXSBZb3UgbXVzdCBwcm92aWRlIGEgcHJpdmF0ZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkcHJpdmF0ZUtleSA9IEJhc2U2NFVybDo6ZGVjb2RlKCR2YXBpZFsncHJpdmF0ZUtleSddKTsKCiAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRwcml2YXRlS2V5KSAhPT0gc2VsZjo6UFJJVkFURV9LRVlfTEVOR1RIKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1tWQVBJRF0gUHJpdmF0ZSBrZXkgc2hvdWxkIGJlIDMyIGJ5dGVzIGxvbmcgd2hlbiBkZWNvZGVkLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ3N1YmplY3QnID0+ICR2YXBpZFsnc3ViamVjdCddLAogICAgICAgICAgICAncHVibGljS2V5JyA9PiAkcHVibGljS2V5LAogICAgICAgICAgICAncHJpdmF0ZUtleScgPT4gJHByaXZhdGVLZXksCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHRha2VzIHRoZSByZXF1aXJlZCBWQVBJRCBwYXJhbWV0ZXJzIGFuZCByZXR1cm5zIHRoZSByZXF1aXJlZAogICAgICogaGVhZGVyIHRvIGJlIGFkZGVkIHRvIGEgV2ViIFB1c2ggUHJvdG9jb2wgUmVxdWVzdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhdWRpZW5jZSBUaGlzIG11c3QgYmUgdGhlIG9yaWdpbiBvZiB0aGUgcHVzaCBzZXJ2aWNlCiAgICAgKiBAcGFyYW0gc3RyaW5nICRzdWJqZWN0IFRoaXMgc2hvdWxkIGJlIGEgVVJMIG9yIGEgJ21haWx0bzonIGVtYWlsIGFkZHJlc3MKICAgICAqIEBwYXJhbSBzdHJpbmcgJHB1YmxpY0tleSBUaGUgZGVjb2RlZCBWQVBJRCBwdWJsaWMga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRwcml2YXRlS2V5IFRoZSBkZWNvZGVkIFZBUElEIHByaXZhdGUga2V5CiAgICAgKiBAcGFyYW0gc3RyaW5nICRjb250ZW50RW5jb2RpbmcKICAgICAqIEBwYXJhbSBudWxsfGludCAkZXhwaXJhdGlvbiBUaGUgZXhwaXJhdGlvbiBvZiB0aGUgVkFQSUQgSldULiAoVU5JWCB0aW1lc3RhbXApCiAgICAgKgogICAgICogQHJldHVybiBhcnJheSBSZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlICdBdXRob3JpemF0aW9uJyBhbmQgJ0NyeXB0by1LZXknIHZhbHVlcyB0byBiZSB1c2VkIGFzIGhlYWRlcnMKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VmFwaWRIZWFkZXJzKHN0cmluZyAkYXVkaWVuY2UsIHN0cmluZyAkc3ViamVjdCwgc3RyaW5nICRwdWJsaWNLZXksIHN0cmluZyAkcHJpdmF0ZUtleSwgc3RyaW5nICRjb250ZW50RW5jb2RpbmcsID9pbnQgJGV4cGlyYXRpb24gPSBudWxsKQogICAgewogICAgICAgICRleHBpcmF0aW9uTGltaXQgPSB0aW1lKCkgKyA0MzIwMDsgLy8gZXF1YWwgbWFyZ2luIG9mIGVycm9yIGJldHdlZW4gMCBhbmQgMjRoCiAgICAgICAgaWYgKG51bGwgPT09ICRleHBpcmF0aW9uIHx8ICRleHBpcmF0aW9uID4gJGV4cGlyYXRpb25MaW1pdCkgewogICAgICAgICAgICAkZXhwaXJhdGlvbiA9ICRleHBpcmF0aW9uTGltaXQ7CiAgICAgICAgfQoKICAgICAgICAkaGVhZGVyID0gWwogICAgICAgICAgICAndHlwJyA9PiAnSldUJywKICAgICAgICAgICAgJ2FsZycgPT4gJ0VTMjU2JywKICAgICAgICBdOwoKICAgICAgICAkand0UGF5bG9hZCA9IGpzb25fZW5jb2RlKFsKICAgICAgICAgICAgJ2F1ZCcgPT4gJGF1ZGllbmNlLAogICAgICAgICAgICAnZXhwJyA9PiAkZXhwaXJhdGlvbiwKICAgICAgICAgICAgJ3N1YicgPT4gJHN1YmplY3QsCiAgICAgICAgXSwgSlNPTl9VTkVTQ0FQRURfU0xBU0hFUyB8IEpTT05fTlVNRVJJQ19DSEVDSyk7CiAgICAgICAgaWYgKCEkand0UGF5bG9hZCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdGYWlsZWQgdG8gZW5jb2RlIEpXVCBwYXlsb2FkIGluIEpTT04nKTsKICAgICAgICB9CgogICAgICAgIGxpc3QoJHgsICR5KSA9IFV0aWxzOjp1bnNlcmlhbGl6ZVB1YmxpY0tleSgkcHVibGljS2V5KTsKICAgICAgICAkandrID0gbmV3IEpXSyhbCiAgICAgICAgICAgICdrdHknID0+ICdFQycsCiAgICAgICAgICAgICdjcnYnID0+ICdQLTI1NicsCiAgICAgICAgICAgICd4JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkeCksCiAgICAgICAgICAgICd5JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkeSksCiAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkcHJpdmF0ZUtleSksCiAgICAgICAgXSk7CgogICAgICAgICRqd3NDb21wYWN0U2VyaWFsaXplciA9IG5ldyBDb21wYWN0U2VyaWFsaXplcigpOwogICAgICAgICRqd3NCdWlsZGVyID0gbmV3IEpXU0J1aWxkZXIobmV3IEFsZ29yaXRobU1hbmFnZXIoW25ldyBFUzI1NigpXSkpOwogICAgICAgICRqd3MgPSAkandzQnVpbGRlcgogICAgICAgICAgICAtPmNyZWF0ZSgpCiAgICAgICAgICAgIC0+d2l0aFBheWxvYWQoJGp3dFBheWxvYWQpCiAgICAgICAgICAgIC0+YWRkU2lnbmF0dXJlKCRqd2ssICRoZWFkZXIpCiAgICAgICAgICAgIC0+YnVpbGQoKTsKCiAgICAgICAgJGp3dCA9ICRqd3NDb21wYWN0U2VyaWFsaXplci0+c2VyaWFsaXplKCRqd3MsIDApOwogICAgICAgICRlbmNvZGVkUHVibGljS2V5ID0gQmFzZTY0VXJsOjplbmNvZGUoJHB1YmxpY0tleSk7CgogICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzZ2NtIikgewogICAgICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nID0+ICdXZWJQdXNoICcuJGp3dCwKICAgICAgICAgICAgICAgICdDcnlwdG8tS2V5JyA9PiAncDI1NmVjZHNhPScuJGVuY29kZWRQdWJsaWNLZXksCiAgICAgICAgICAgIF07CiAgICAgICAgfSBlbHNlaWYgKCRjb250ZW50RW5jb2RpbmcgPT09ICdhZXMxMjhnY20nKSB7CiAgICAgICAgICAgIHJldHVybiBbCiAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbicgPT4gJ3ZhcGlkIHQ9Jy4kand0LicsIGs9Jy4kZW5jb2RlZFB1YmxpY0tleSwKICAgICAgICAgICAgXTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1RoaXMgY29udGVudCBlbmNvZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBjcmVhdGVzIFZBUElEIGtleXMgaW4gY2FzZSB5b3Ugd291bGQgbm90IGJlIGFibGUgdG8gaGF2ZSBhIExpbnV4IGJhc2guCiAgICAgKiBETyBOT1QgY3JlYXRlIGtleXMgYXQgZWFjaCBpbml0aWFsaXphdGlvbiEgU2F2ZSB0aG9zZSBrZXlzIGFuZCByZXVzZSB0aGVtLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlVmFwaWRLZXlzKCk6IGFycmF5CiAgICB7CiAgICAgICAgJGp3ayA9IEpXS0ZhY3Rvcnk6OmNyZWF0ZUVDS2V5KCdQLTI1NicpOwoKICAgICAgICAkYmluYXJ5UHVibGljS2V5ID0gaGV4MmJpbihVdGlsczo6c2VyaWFsaXplUHVibGljS2V5RnJvbUpXSygkandrKSk7CiAgICAgICAgaWYgKCEkYmluYXJ5UHVibGljS2V5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0ZhaWxlZCB0byBjb252ZXJ0IFZBUElEIHB1YmxpYyBrZXkgZnJvbSBoZXhhZGVjaW1hbCB0byBiaW5hcnknKTsKICAgICAgICB9CgogICAgICAgICRiaW5hcnlQcml2YXRlS2V5ID0gaGV4MmJpbihzdHJfcGFkKGJpbjJoZXgoQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCdkJykpKSwgMiAqIHNlbGY6OlBSSVZBVEVfS0VZX0xFTkdUSCwgJzAnLCBTVFJfUEFEX0xFRlQpKTsKICAgICAgICBpZiAoISRiaW5hcnlQcml2YXRlS2V5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ0ZhaWxlZCB0byBjb252ZXJ0IFZBUElEIHByaXZhdGUga2V5IGZyb20gaGV4YWRlY2ltYWwgdG8gYmluYXJ5Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAncHVibGljS2V5JyAgPT4gQmFzZTY0VXJsOjplbmNvZGUoJGJpbmFyeVB1YmxpY0tleSksCiAgICAgICAgICAgICdwcml2YXRlS2V5JyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkYmluYXJ5UHJpdmF0ZUtleSkKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/minishlink/web-push/src/WebPush.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYlB1c2ggbGlicmFyeS4KICoKICogKGMpIExvdWlzIExhZ3JhbmdlIDxsYWdyYW5nZS5sb3Vpc0BnbWFpbC5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCm5hbWVzcGFjZSBNaW5pc2hsaW5rXFdlYlB1c2g7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEd1enpsZUh0dHBcQ2xpZW50Owp1c2UgR3V6emxlSHR0cFxFeGNlcHRpb25cUmVxdWVzdEV4Y2VwdGlvbjsKdXNlIEd1enpsZUh0dHBcUHNyN1xSZXF1ZXN0Owp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCmNsYXNzIFdlYlB1c2gKewogICAgLyoqCiAgICAgKiBAdmFyIENsaWVudAogICAgICovCiAgICBwcm90ZWN0ZWQgJGNsaWVudDsKCiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkICRhdXRoOwoKICAgIC8qKgogICAgICogQHZhciBudWxsfGFycmF5IEFycmF5IG9mIGFycmF5IG9mIE5vdGlmaWNhdGlvbnMKICAgICAqLwogICAgcHJvdGVjdGVkICRub3RpZmljYXRpb25zOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheSBEZWZhdWx0IG9wdGlvbnMgOiBUVEwsIHVyZ2VuY3ksIHRvcGljLCBiYXRjaFNpemUKICAgICAqLwogICAgcHJvdGVjdGVkICRkZWZhdWx0T3B0aW9uczsKCiAgICAvKioKICAgICAqIEB2YXIgaW50IEF1dG9tYXRpYyBwYWRkaW5nIG9mIHBheWxvYWRzLCBpZiBkaXNhYmxlZCwgdHJhZGUgc2VjdXJpdHkgZm9yIGJhbmR3aWR0aAogICAgICovCiAgICBwcm90ZWN0ZWQgJGF1dG9tYXRpY1BhZGRpbmcgPSBFbmNyeXB0aW9uOjpNQVhfQ09NUEFUSUJJTElUWV9QQVlMT0FEX0xFTkdUSDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbCBSZXVzZSBWQVBJRCBoZWFkZXJzIGluIHRoZSBzYW1lIGZsdXNoIHNlc3Npb24gdG8gaW1wcm92ZSBwZXJmb3JtYW5jZQogICAgICovCiAgICBwcm90ZWN0ZWQgJHJldXNlVkFQSURIZWFkZXJzID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5IERpY3Rpb25hcnkgZm9yIFZBUElEIGhlYWRlcnMgY2FjaGUKICAgICAqLwogICAgcHJvdGVjdGVkICR2YXBpZEhlYWRlcnMgPSBbXTsKCiAgICAvKioKICAgICAqIFdlYlB1c2ggY29uc3RydWN0b3IuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICAgICRhdXRoICAgICAgICAgICBTb21lIHNlcnZlcnMgbmVlZHMgYXV0aGVudGljYXRpb24KICAgICAqIEBwYXJhbSBhcnJheSAgICAkZGVmYXVsdE9wdGlvbnMgVFRMLCB1cmdlbmN5LCB0b3BpYywgYmF0Y2hTaXplCiAgICAgKiBAcGFyYW0gaW50fG51bGwgJHRpbWVvdXQgICAgICAgIFRpbWVvdXQgb2YgUE9TVCByZXF1ZXN0CiAgICAgKiBAcGFyYW0gYXJyYXkgICAgJGNsaWVudE9wdGlvbnMKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGF1dGggPSBbXSwgYXJyYXkgJGRlZmF1bHRPcHRpb25zID0gW10sID9pbnQgJHRpbWVvdXQgPSAzMCwgYXJyYXkgJGNsaWVudE9wdGlvbnMgPSBbXSkKICAgIHsKICAgICAgICAkZXh0ZW5zaW9ucyA9IFsKICAgICAgICAgICAgJ2N1cmwnID0+ICdbV2ViUHVzaF0gY3VybCBleHRlbnNpb24gaXMgbm90IGxvYWRlZCBidXQgaXMgcmVxdWlyZWQuIFlvdSBjYW4gZml4IHRoaXMgaW4geW91ciBwaHAuaW5pLicsCiAgICAgICAgICAgICdnbXAnID0+ICdbV2ViUHVzaF0gZ21wIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIGJ1dCBpcyByZXF1aXJlZCBmb3Igc2VuZGluZyBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIGZvciBWQVBJRCBhdXRoZW50aWNhdGlvbi4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuJywKICAgICAgICAgICAgJ21ic3RyaW5nJyA9PiAnW1dlYlB1c2hdIG1ic3RyaW5nIGV4dGVuc2lvbiBpcyBub3QgbG9hZGVkIGJ1dCBpcyByZXF1aXJlZCBmb3Igc2VuZGluZyBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIGZvciBWQVBJRCBhdXRoZW50aWNhdGlvbi4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuJywKICAgICAgICAgICAgJ29wZW5zc2wnID0+ICdbV2ViUHVzaF0gb3BlbnNzbCBleHRlbnNpb24gaXMgbm90IGxvYWRlZCBidXQgaXMgcmVxdWlyZWQgZm9yIHNlbmRpbmcgcHVzaCBub3RpZmljYXRpb25zIHdpdGggcGF5bG9hZCBvciBmb3IgVkFQSUQgYXV0aGVudGljYXRpb24uIFlvdSBjYW4gZml4IHRoaXMgaW4geW91ciBwaHAuaW5pLicsCiAgICAgICAgXTsKICAgICAgICBmb3JlYWNoICgkZXh0ZW5zaW9ucyBhcyAkZXh0ZW5zaW9uID0+ICRtZXNzYWdlKSB7CiAgICAgICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgkZXh0ZW5zaW9uKSkgewogICAgICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcigkbWVzc2FnZSwgRV9VU0VSX1dBUk5JTkcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoaW5pX2dldCgnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcpID49IDIpIHsKICAgICAgICAgICAgdHJpZ2dlcl9lcnJvcigiW1dlYlB1c2hdIG1ic3RyaW5nLmZ1bmNfb3ZlcmxvYWQgaXMgZW5hYmxlZCBmb3Igc3RyKiBmdW5jdGlvbnMuIFlvdSBtdXN0IGRpc2FibGUgaXQgaWYgeW91IHdhbnQgdG8gc2VuZCBwdXNoIG5vdGlmaWNhdGlvbnMgd2l0aCBwYXlsb2FkIG9yIHVzZSBWQVBJRC4gWW91IGNhbiBmaXggdGhpcyBpbiB5b3VyIHBocC5pbmkuIiwgRV9VU0VSX05PVElDRSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNzZXQoJGF1dGhbJ1ZBUElEJ10pKSB7CiAgICAgICAgICAgICRhdXRoWydWQVBJRCddID0gVkFQSUQ6OnZhbGlkYXRlKCRhdXRoWydWQVBJRCddKTsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5hdXRoID0gJGF1dGg7CgogICAgICAgICR0aGlzLT5zZXREZWZhdWx0T3B0aW9ucygkZGVmYXVsdE9wdGlvbnMpOwoKICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJ3RpbWVvdXQnLCAkY2xpZW50T3B0aW9ucykgJiYgaXNzZXQoJHRpbWVvdXQpKSB7CiAgICAgICAgICAgICRjbGllbnRPcHRpb25zWyd0aW1lb3V0J10gPSAkdGltZW91dDsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmNsaWVudCA9IG5ldyBDbGllbnQoJGNsaWVudE9wdGlvbnMpOwogICAgfQoKICAgIC8qKgogICAgICogUXVldWUgYSBub3RpZmljYXRpb24uIFdpbGwgYmUgc2VudCB3aGVuIGZsdXNoKCkgaXMgY2FsbGVkLgogICAgICoKICAgICAqIEBwYXJhbSBTdWJzY3JpcHRpb25JbnRlcmZhY2UgJHN1YnNjcmlwdGlvbgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRwYXlsb2FkIElmIHlvdSB3YW50IHRvIHNlbmQgYW4gYXJyYXkgb3Igb2JqZWN0LCBqc29uX2VuY29kZSBpdAogICAgICogQHBhcmFtIGFycmF5ICRvcHRpb25zIEFycmF5IHdpdGggc2V2ZXJhbCBvcHRpb25zIHRpZWQgdG8gdGhpcyBub3RpZmljYXRpb24uIElmIG5vdCBzZXQsIHdpbGwgdXNlIHRoZSBkZWZhdWx0IG9wdGlvbnMgdGhhdCB5b3UgY2FuIHNldCBpbiB0aGUgV2ViUHVzaCBvYmplY3QKICAgICAqIEBwYXJhbSBhcnJheSAkYXV0aCBVc2UgdGhpcyBhdXRoIGRldGFpbHMgaW5zdGVhZCBvZiB3aGF0IHlvdSBwcm92aWRlZCB3aGVuIGNyZWF0aW5nIFdlYlB1c2gKICAgICAqCiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcXVldWVOb3RpZmljYXRpb24oU3Vic2NyaXB0aW9uSW50ZXJmYWNlICRzdWJzY3JpcHRpb24sID9zdHJpbmcgJHBheWxvYWQgPSBudWxsLCBhcnJheSAkb3B0aW9ucyA9IFtdLCBhcnJheSAkYXV0aCA9IFtdKTogdm9pZAogICAgewogICAgICAgIGlmIChpc3NldCgkcGF5bG9hZCkpIHsKICAgICAgICAgICAgaWYgKFV0aWxzOjpzYWZlU3RybGVuKCRwYXlsb2FkKSA+IEVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignU2l6ZSBvZiBwYXlsb2FkIG11c3Qgbm90IGJlIGdyZWF0ZXIgdGhhbiAnLkVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSC4nIG9jdGV0cy4nKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbnRlbnRFbmNvZGluZyA9ICRzdWJzY3JpcHRpb24tPmdldENvbnRlbnRFbmNvZGluZygpOwogICAgICAgICAgICBpZiAoISRjb250ZW50RW5jb2RpbmcpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBcRXJyb3JFeGNlcHRpb24oJ1N1YnNjcmlwdGlvbiBzaG91bGQgaGF2ZSBhIGNvbnRlbnQgZW5jb2RpbmcnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHBheWxvYWQgPSBFbmNyeXB0aW9uOjpwYWRQYXlsb2FkKCRwYXlsb2FkLCAkdGhpcy0+YXV0b21hdGljUGFkZGluZywgJGNvbnRlbnRFbmNvZGluZyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnVkFQSUQnLCAkYXV0aCkpIHsKICAgICAgICAgICAgJGF1dGhbJ1ZBUElEJ10gPSBWQVBJRDo6dmFsaWRhdGUoJGF1dGhbJ1ZBUElEJ10pOwogICAgICAgIH0KCiAgICAgICAgJHRoaXMtPm5vdGlmaWNhdGlvbnNbXSA9IG5ldyBOb3RpZmljYXRpb24oJHN1YnNjcmlwdGlvbiwgJHBheWxvYWQsICRvcHRpb25zLCAkYXV0aCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gU3Vic2NyaXB0aW9uSW50ZXJmYWNlICRzdWJzY3JpcHRpb24KICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcGF5bG9hZCBJZiB5b3Ugd2FudCB0byBzZW5kIGFuIGFycmF5IG9yIG9iamVjdCwganNvbl9lbmNvZGUgaXQKICAgICAqIEBwYXJhbSBhcnJheSAkb3B0aW9ucyBBcnJheSB3aXRoIHNldmVyYWwgb3B0aW9ucyB0aWVkIHRvIHRoaXMgbm90aWZpY2F0aW9uLiBJZiBub3Qgc2V0LCB3aWxsIHVzZSB0aGUgZGVmYXVsdCBvcHRpb25zIHRoYXQgeW91IGNhbiBzZXQgaW4gdGhlIFdlYlB1c2ggb2JqZWN0CiAgICAgKiBAcGFyYW0gYXJyYXkgJGF1dGggVXNlIHRoaXMgYXV0aCBkZXRhaWxzIGluc3RlYWQgb2Ygd2hhdCB5b3UgcHJvdmlkZWQgd2hlbiBjcmVhdGluZyBXZWJQdXNoCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2VTZW50UmVwb3J0CiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZE9uZU5vdGlmaWNhdGlvbihTdWJzY3JpcHRpb25JbnRlcmZhY2UgJHN1YnNjcmlwdGlvbiwgP3N0cmluZyAkcGF5bG9hZCA9IG51bGwsIGFycmF5ICRvcHRpb25zID0gW10sIGFycmF5ICRhdXRoID0gW10pOiBNZXNzYWdlU2VudFJlcG9ydAogICAgewogICAgICAgICR0aGlzLT5xdWV1ZU5vdGlmaWNhdGlvbigkc3Vic2NyaXB0aW9uLCAkcGF5bG9hZCwgJG9wdGlvbnMsICRhdXRoKTsKICAgICAgICByZXR1cm4gJHRoaXMtPmZsdXNoKCktPmN1cnJlbnQoKTsKICAgIH0KCiAgICAvKioKICAgICAqIEZsdXNoIG5vdGlmaWNhdGlvbnMuIFRyaWdnZXJzIHRoZSByZXF1ZXN0cy4KICAgICAqCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgJGJhdGNoU2l6ZSBEZWZhdWx0cyB0aGUgdmFsdWUgZGVmaW5lZCBpbiBkZWZhdWx0T3B0aW9ucyBkdXJpbmcgaW5zdGFudGlhdGlvbiAod2hpY2ggZGVmYXVsdHMgdG8gMTAwMCkuCiAgICAgKgogICAgICogQHJldHVybiBcR2VuZXJhdG9yfE1lc3NhZ2VTZW50UmVwb3J0W10KICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBmbHVzaCg/aW50ICRiYXRjaFNpemUgPSBudWxsKTogXEdlbmVyYXRvcgogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+bm90aWZpY2F0aW9ucyB8fCBlbXB0eSgkdGhpcy0+bm90aWZpY2F0aW9ucykpIHsKICAgICAgICAgICAgeWllbGQgZnJvbSBbXTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKG51bGwgPT09ICRiYXRjaFNpemUpIHsKICAgICAgICAgICAgJGJhdGNoU2l6ZSA9ICR0aGlzLT5kZWZhdWx0T3B0aW9uc1snYmF0Y2hTaXplJ107CiAgICAgICAgfQoKICAgICAgICAkYmF0Y2hlcyA9IGFycmF5X2NodW5rKCR0aGlzLT5ub3RpZmljYXRpb25zLCAkYmF0Y2hTaXplKTsKCiAgICAgICAgLy8gcmVzZXQgcXVldWUKICAgICAgICAkdGhpcy0+bm90aWZpY2F0aW9ucyA9IFtdOwoKICAgICAgICBmb3JlYWNoICgkYmF0Y2hlcyBhcyAkYmF0Y2gpIHsKICAgICAgICAgICAgLy8gZm9yIGVhY2ggZW5kcG9pbnQgc2VydmVyIHR5cGUKICAgICAgICAgICAgJHJlcXVlc3RzID0gJHRoaXMtPnByZXBhcmUoJGJhdGNoKTsKCiAgICAgICAgICAgICRwcm9taXNlcyA9IFtdOwoKICAgICAgICAgICAgZm9yZWFjaCAoJHJlcXVlc3RzIGFzICRyZXF1ZXN0KSB7CiAgICAgICAgICAgICAgICAkcHJvbWlzZXNbXSA9ICR0aGlzLT5jbGllbnQtPnNlbmRBc3luYygkcmVxdWVzdCkKICAgICAgICAgICAgICAgICAgICAtPnRoZW4oZnVuY3Rpb24gKCRyZXNwb25zZSkgdXNlICgkcmVxdWVzdCkgewogICAgICAgICAgICAgICAgICAgICAgICAvKiogQHZhciBSZXNwb25zZUludGVyZmFjZSAkcmVzcG9uc2UgKiAqLwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE1lc3NhZ2VTZW50UmVwb3J0KCRyZXF1ZXN0LCAkcmVzcG9uc2UpOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgLT5vdGhlcndpc2UoZnVuY3Rpb24gKCRyZWFzb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgLyoqIEB2YXIgUmVxdWVzdEV4Y2VwdGlvbiAkcmVhc29uICoqLwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkcmVhc29uLCAnZ2V0UmVzcG9uc2UnKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJlc3BvbnNlID0gJHJlYXNvbi0+Z2V0UmVzcG9uc2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXNwb25zZSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNZXNzYWdlU2VudFJlcG9ydCgkcmVhc29uLT5nZXRSZXF1ZXN0KCksICRyZXNwb25zZSwgZmFsc2UsICRyZWFzb24tPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZvcmVhY2ggKCRwcm9taXNlcyBhcyAkcHJvbWlzZSkgewogICAgICAgICAgICAgICAgeWllbGQgJHByb21pc2UtPndhaXQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5yZXVzZVZBUElESGVhZGVycykgewogICAgICAgICAgICAkdGhpcy0+dmFwaWRIZWFkZXJzID0gW107CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRub3RpZmljYXRpb25zCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICoKICAgICAqIEB0aHJvd3MgXEVycm9yRXhjZXB0aW9uCiAgICAgKi8KICAgIHByb3RlY3RlZCBmdW5jdGlvbiBwcmVwYXJlKGFycmF5ICRub3RpZmljYXRpb25zKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVxdWVzdHMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkbm90aWZpY2F0aW9ucyBhcyAkbm90aWZpY2F0aW9uKSB7CiAgICAgICAgICAgIFxhc3NlcnQoJG5vdGlmaWNhdGlvbiBpbnN0YW5jZW9mIE5vdGlmaWNhdGlvbik7CiAgICAgICAgICAgICRzdWJzY3JpcHRpb24gPSAkbm90aWZpY2F0aW9uLT5nZXRTdWJzY3JpcHRpb24oKTsKICAgICAgICAgICAgJGVuZHBvaW50ID0gJHN1YnNjcmlwdGlvbi0+Z2V0RW5kcG9pbnQoKTsKICAgICAgICAgICAgJHVzZXJQdWJsaWNLZXkgPSAkc3Vic2NyaXB0aW9uLT5nZXRQdWJsaWNLZXkoKTsKICAgICAgICAgICAgJHVzZXJBdXRoVG9rZW4gPSAkc3Vic2NyaXB0aW9uLT5nZXRBdXRoVG9rZW4oKTsKICAgICAgICAgICAgJGNvbnRlbnRFbmNvZGluZyA9ICRzdWJzY3JpcHRpb24tPmdldENvbnRlbnRFbmNvZGluZygpOwogICAgICAgICAgICAkcGF5bG9hZCA9ICRub3RpZmljYXRpb24tPmdldFBheWxvYWQoKTsKICAgICAgICAgICAgJG9wdGlvbnMgPSAkbm90aWZpY2F0aW9uLT5nZXRPcHRpb25zKCR0aGlzLT5nZXREZWZhdWx0T3B0aW9ucygpKTsKICAgICAgICAgICAgJGF1dGggPSAkbm90aWZpY2F0aW9uLT5nZXRBdXRoKCR0aGlzLT5hdXRoKTsKCiAgICAgICAgICAgIGlmICghZW1wdHkoJHBheWxvYWQpICYmICFlbXB0eSgkdXNlclB1YmxpY0tleSkgJiYgIWVtcHR5KCR1c2VyQXV0aFRva2VuKSkgewogICAgICAgICAgICAgICAgaWYgKCEkY29udGVudEVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFxFcnJvckV4Y2VwdGlvbignU3Vic2NyaXB0aW9uIHNob3VsZCBoYXZlIGEgY29udGVudCBlbmNvZGluZycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRlbmNyeXB0ZWQgPSBFbmNyeXB0aW9uOjplbmNyeXB0KCRwYXlsb2FkLCAkdXNlclB1YmxpY0tleSwgJHVzZXJBdXRoVG9rZW4sICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGNpcGhlclRleHQgPSAkZW5jcnlwdGVkWydjaXBoZXJUZXh0J107CiAgICAgICAgICAgICAgICAkc2FsdCA9ICRlbmNyeXB0ZWRbJ3NhbHQnXTsKICAgICAgICAgICAgICAgICRsb2NhbFB1YmxpY0tleSA9ICRlbmNyeXB0ZWRbJ2xvY2FsUHVibGljS2V5J107CgogICAgICAgICAgICAgICAgJGhlYWRlcnMgPSBbCiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZScgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsCiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtRW5jb2RpbmcnID0+ICRjb250ZW50RW5jb2RpbmcsCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgIGlmICgkY29udGVudEVuY29kaW5nID09PSAiYWVzZ2NtIikgewogICAgICAgICAgICAgICAgICAgICRoZWFkZXJzWydFbmNyeXB0aW9uJ10gPSAnc2FsdD0nLkJhc2U2NFVybDo6ZW5jb2RlKCRzYWx0KTsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1snQ3J5cHRvLUtleSddID0gJ2RoPScuQmFzZTY0VXJsOjplbmNvZGUoJGxvY2FsUHVibGljS2V5KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZW5jcnlwdGlvbkNvbnRlbnRDb2RpbmdIZWFkZXIgPSBFbmNyeXB0aW9uOjpnZXRDb250ZW50Q29kaW5nSGVhZGVyKCRzYWx0LCAkbG9jYWxQdWJsaWNLZXksICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgICAgICAgICAgJGNvbnRlbnQgPSAkZW5jcnlwdGlvbkNvbnRlbnRDb2RpbmdIZWFkZXIuJGNpcGhlclRleHQ7CgogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NvbnRlbnQtTGVuZ3RoJ10gPSBVdGlsczo6c2FmZVN0cmxlbigkY29udGVudCk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkaGVhZGVycyA9IFsKICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1MZW5ndGgnID0+IDAsCiAgICAgICAgICAgICAgICBdOwoKICAgICAgICAgICAgICAgICRjb250ZW50ID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRoZWFkZXJzWydUVEwnXSA9ICRvcHRpb25zWydUVEwnXTsKCiAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sndXJnZW5jeSddKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ1VyZ2VuY3knXSA9ICRvcHRpb25zWyd1cmdlbmN5J107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChpc3NldCgkb3B0aW9uc1sndG9waWMnXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWydUb3BpYyddID0gJG9wdGlvbnNbJ3RvcGljJ107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdWQVBJRCcsICRhdXRoKSAmJiAkY29udGVudEVuY29kaW5nKSB7CiAgICAgICAgICAgICAgICAkYXVkaWVuY2UgPSBwYXJzZV91cmwoJGVuZHBvaW50LCBQSFBfVVJMX1NDSEVNRSkuJzovLycucGFyc2VfdXJsKCRlbmRwb2ludCwgUEhQX1VSTF9IT1NUKTsKICAgICAgICAgICAgICAgIGlmICghcGFyc2VfdXJsKCRhdWRpZW5jZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgXEVycm9yRXhjZXB0aW9uKCdBdWRpZW5jZSAiJy4kYXVkaWVuY2UuJyIiIGNvdWxkIG5vdCBiZSBnZW5lcmF0ZWQuJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHZhcGlkSGVhZGVycyA9ICR0aGlzLT5nZXRWQVBJREhlYWRlcnMoJGF1ZGllbmNlLCAkY29udGVudEVuY29kaW5nLCAkYXV0aFsnVkFQSUQnXSk7CgogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICR2YXBpZEhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXTsKCiAgICAgICAgICAgICAgICBpZiAoJGNvbnRlbnRFbmNvZGluZyA9PT0gJ2Flc2djbScpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnQ3J5cHRvLUtleScsICRoZWFkZXJzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1snQ3J5cHRvLUtleSddIC49ICc7Jy4kdmFwaWRIZWFkZXJzWydDcnlwdG8tS2V5J107CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0NyeXB0by1LZXknXSA9ICR2YXBpZEhlYWRlcnNbJ0NyeXB0by1LZXknXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXF1ZXN0c1tdID0gbmV3IFJlcXVlc3QoJ1BPU1QnLCAkZW5kcG9pbnQsICRoZWFkZXJzLCAkY29udGVudCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHJlcXVlc3RzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0F1dG9tYXRpY1BhZGRpbmcoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YXV0b21hdGljUGFkZGluZyAhPT0gMDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRvbWF0aWNQYWRkaW5nKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmF1dG9tYXRpY1BhZGRpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gaW50fGJvb2wgJGF1dG9tYXRpY1BhZGRpbmcgTWF4IHBhZGRpbmcgbGVuZ3RoCiAgICAgKgogICAgICogQHJldHVybiBXZWJQdXNoCiAgICAgKgogICAgICogQHRocm93cyBcRXhjZXB0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXRBdXRvbWF0aWNQYWRkaW5nKCRhdXRvbWF0aWNQYWRkaW5nKTogV2ViUHVzaAogICAgewogICAgICAgIGlmICgkYXV0b21hdGljUGFkZGluZyA+IEVuY3J5cHRpb246Ok1BWF9QQVlMT0FEX0xFTkdUSCkgewogICAgICAgICAgICB0aHJvdyBuZXcgXEV4Y2VwdGlvbignQXV0b21hdGljIHBhZGRpbmcgaXMgdG9vIGxhcmdlLiBNYXggaXMgJy5FbmNyeXB0aW9uOjpNQVhfUEFZTE9BRF9MRU5HVEguJy4gUmVjb21tZW5kZWQgbWF4IGlzICcuRW5jcnlwdGlvbjo6TUFYX0NPTVBBVElCSUxJVFlfUEFZTE9BRF9MRU5HVEguJyBmb3IgY29tcGF0aWJpbGl0eSByZWFzb25zIChzZWUgUkVBRE1FKS4nKTsKICAgICAgICB9IGVsc2VpZiAoJGF1dG9tYXRpY1BhZGRpbmcgPCAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBcRXhjZXB0aW9uKCdQYWRkaW5nIGxlbmd0aCBzaG91bGQgYmUgcG9zaXRpdmUgb3IgemVyby4nKTsKICAgICAgICB9IGVsc2VpZiAoJGF1dG9tYXRpY1BhZGRpbmcgPT09IHRydWUpIHsKICAgICAgICAgICAgJHRoaXMtPmF1dG9tYXRpY1BhZGRpbmcgPSBFbmNyeXB0aW9uOjpNQVhfQ09NUEFUSUJJTElUWV9QQVlMT0FEX0xFTkdUSDsKICAgICAgICB9IGVsc2VpZiAoJGF1dG9tYXRpY1BhZGRpbmcgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICR0aGlzLT5hdXRvbWF0aWNQYWRkaW5nID0gMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkdGhpcy0+YXV0b21hdGljUGFkZGluZyA9ICRhdXRvbWF0aWNQYWRkaW5nOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZXVzZVZBUElESGVhZGVycygpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5yZXVzZVZBUElESGVhZGVyczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldXNlIFZBUElEIGhlYWRlcnMgaW4gdGhlIHNhbWUgZmx1c2ggc2Vzc2lvbiB0byBpbXByb3ZlIHBlcmZvcm1hbmNlCiAgICAgKiBAcGFyYW0gYm9vbCAkZW5hYmxlZAogICAgICoKICAgICAqIEByZXR1cm4gV2ViUHVzaAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0UmV1c2VWQVBJREhlYWRlcnMoYm9vbCAkZW5hYmxlZCkKICAgIHsKICAgICAgICAkdGhpcy0+cmV1c2VWQVBJREhlYWRlcnMgPSAkZW5hYmxlZDsKCiAgICAgICAgcmV0dXJuICR0aGlzOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmRlZmF1bHRPcHRpb25zOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIGFycmF5ICRkZWZhdWx0T3B0aW9ucyBLZXlzICdUVEwnIChUaW1lIFRvIExpdmUsIGRlZmF1bHRzIDQgd2Vla3MpLCAndXJnZW5jeScsICd0b3BpYycsICdiYXRjaFNpemUnCiAgICAgKgogICAgICogQHJldHVybiBXZWJQdXNoCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXREZWZhdWx0T3B0aW9ucyhhcnJheSAkZGVmYXVsdE9wdGlvbnMpCiAgICB7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWydUVEwnXSA9IGlzc2V0KCRkZWZhdWx0T3B0aW9uc1snVFRMJ10pID8gJGRlZmF1bHRPcHRpb25zWydUVEwnXSA6IDI0MTkyMDA7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWyd1cmdlbmN5J10gPSBpc3NldCgkZGVmYXVsdE9wdGlvbnNbJ3VyZ2VuY3knXSkgPyAkZGVmYXVsdE9wdGlvbnNbJ3VyZ2VuY3knXSA6IG51bGw7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWyd0b3BpYyddID0gaXNzZXQoJGRlZmF1bHRPcHRpb25zWyd0b3BpYyddKSA/ICRkZWZhdWx0T3B0aW9uc1sndG9waWMnXSA6IG51bGw7CiAgICAgICAgJHRoaXMtPmRlZmF1bHRPcHRpb25zWydiYXRjaFNpemUnXSA9IGlzc2V0KCRkZWZhdWx0T3B0aW9uc1snYmF0Y2hTaXplJ10pID8gJGRlZmF1bHRPcHRpb25zWydiYXRjaFNpemUnXSA6IDEwMDA7CgogICAgICAgIHJldHVybiAkdGhpczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudFBlbmRpbmdOb3RpZmljYXRpb25zKCk6IGludAogICAgewogICAgICAgIHJldHVybiBudWxsICE9PSAkdGhpcy0+bm90aWZpY2F0aW9ucyA/IGNvdW50KCR0aGlzLT5ub3RpZmljYXRpb25zKSA6IDA7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhdWRpZW5jZQogICAgICogQHBhcmFtIHN0cmluZyAkY29udGVudEVuY29kaW5nCiAgICAgKiBAcGFyYW0gYXJyYXkgJHZhcGlkCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKiBAdGhyb3dzIFxFcnJvckV4Y2VwdGlvbgogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0VkFQSURIZWFkZXJzKHN0cmluZyAkYXVkaWVuY2UsIHN0cmluZyAkY29udGVudEVuY29kaW5nLCBhcnJheSAkdmFwaWQpCiAgICB7CiAgICAgICAgJHZhcGlkSGVhZGVycyA9IG51bGw7CgogICAgICAgICRjYWNoZV9rZXkgPSBudWxsOwogICAgICAgIGlmICgkdGhpcy0+cmV1c2VWQVBJREhlYWRlcnMpIHsKICAgICAgICAgICAgJGNhY2hlX2tleSA9IGltcGxvZGUoJyMnLCBbJGF1ZGllbmNlLCAkY29udGVudEVuY29kaW5nLCBjcmMzMihzZXJpYWxpemUoJHZhcGlkKSldKTsKICAgICAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGNhY2hlX2tleSwgJHRoaXMtPnZhcGlkSGVhZGVycykpIHsKICAgICAgICAgICAgICAgICR2YXBpZEhlYWRlcnMgPSAkdGhpcy0+dmFwaWRIZWFkZXJzWyRjYWNoZV9rZXldOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoISR2YXBpZEhlYWRlcnMpIHsKICAgICAgICAgICAgJHZhcGlkSGVhZGVycyA9IFZBUElEOjpnZXRWYXBpZEhlYWRlcnMoJGF1ZGllbmNlLCAkdmFwaWRbJ3N1YmplY3QnXSwgJHZhcGlkWydwdWJsaWNLZXknXSwgJHZhcGlkWydwcml2YXRlS2V5J10sICRjb250ZW50RW5jb2RpbmcpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCR0aGlzLT5yZXVzZVZBUElESGVhZGVycykgewogICAgICAgICAgICAkdGhpcy0+dmFwaWRIZWFkZXJzWyRjYWNoZV9rZXldID0gJHZhcGlkSGVhZGVyczsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdmFwaWRIZWFkZXJzOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBDaGFuZ2Vsb2cKCkFsbCBub3RhYmxlIGNoYW5nZXMgdG8gdGhpcyBwcm9qZWN0IHdpbGwgYmUgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUsIGluIHJldmVyc2UgY2hyb25vbG9naWNhbCBvcmRlciBieSByZWxlYXNlLgoKIyMgMS4wLjMKCkFkZCBgc291cmNlYCBsaW5rIGluIGNvbXBvc2VyLmpzb24uIE5vIGNvZGUgY2hhbmdlcy4KCiMjIDEuMC4yCgpBbGxvdyBQU1ItNyAocHNyL2h0dHAtbWVzc2FnZSkgMi4wLiBObyBjb2RlIGNoYW5nZXMuCgojIyAxLjAuMQoKQWxsb3cgaW5zdGFsbGF0aW9uIHdpdGggUEhQIDguIE5vIGNvZGUgY2hhbmdlcy4KCiMjIDEuMC4wCgpGaXJzdCBzdGFibGUgcmVsZWFzZS4gTm8gY2hhbmdlcyBzaW5jZSAwLjMuMC4KCiMjIDAuMy4wCgpBZGRlZCBJbnRlcmZhY2Ugc3VmZml4IG9uIGV4Y2VwdGlvbnMKIAojIyAwLjIuMCAKCkFsbCBleGNlcHRpb25zIGFyZSBpbiBgUHNyXEh0dHBcQ2xpZW50YCBuYW1lc3BhY2UKCiMjIDAuMS4wCgpGaXJzdCByZWxlYXNlCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtY2xpZW50IiwKICAgICJkZXNjcmlwdGlvbiI6ICJDb21tb24gaW50ZXJmYWNlIGZvciBIVFRQIGNsaWVudHMiLAogICAgImtleXdvcmRzIjogWyJwc3IiLCAicHNyLTE4IiwgImh0dHAiLCAiaHR0cC1jbGllbnQiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWNsaWVudCIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJQSFAtRklHIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vd3d3LnBocC1maWcub3JnLyIKICAgICAgICB9CiAgICBdLAogICAgInN1cHBvcnQiOiB7CiAgICAgICAgInNvdXJjZSI6ICJodHRwczovL2dpdGh1Yi5jb20vcGhwLWZpZy9odHRwLWNsaWVudCIKICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjAgfHwgXjguMCIsCiAgICAgICAgInBzci9odHRwLW1lc3NhZ2UiOiAiXjEuMCB8fCBeMi4wIgogICAgfSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJQc3JcXEh0dHBcXENsaWVudFxcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDE3IFBIUCBGcmFtZXdvcmsgSW50ZXJvcGVyYWJpbGl0eSBHcm91cAoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSAKb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyAKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIApmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4KVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[SFRUUCBDbGllbnQKPT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBob2xkcyBhbGwgdGhlIGNvbW1vbiBjb2RlIHJlbGF0ZWQgdG8gW1BTUi0xOCAoSFRUUCBDbGllbnQpXVtwc3ItdXJsXS4KCk5vdGUgdGhhdCB0aGlzIGlzIG5vdCBhIEhUVFAgQ2xpZW50IGltcGxlbWVudGF0aW9uIG9mIGl0cyBvd24uIEl0IGlzIG1lcmVseSBhYnN0cmFjdGlvbnMgdGhhdCBkZXNjcmliZSB0aGUgY29tcG9uZW50cyBvZiBhIEhUVFAgQ2xpZW50LgoKVGhlIGluc3RhbGxhYmxlIFtwYWNrYWdlXVtwYWNrYWdlLXVybF0gYW5kIFtpbXBsZW1lbnRhdGlvbnNdW2ltcGxlbWVudGF0aW9uLXVybF0gYXJlIGxpc3RlZCBvbiBQYWNrYWdpc3QuCgpbcHNyLXVybF06IGh0dHBzOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItMTgKW3BhY2thZ2UtdXJsXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3Bzci9odHRwLWNsaWVudApbaW1wbGVtZW50YXRpb24tdXJsXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3Byb3ZpZGVycy9wc3IvaHR0cC1jbGllbnQtaW1wbGVtZW50YXRpb24K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/ClientExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7CgovKioKICogRXZlcnkgSFRUUCBjbGllbnQgcmVsYXRlZCBleGNlcHRpb24gTVVTVCBpbXBsZW1lbnQgdGhpcyBpbnRlcmZhY2UuCiAqLwppbnRlcmZhY2UgQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlIGV4dGVuZHMgXFRocm93YWJsZQp7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/ClientInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXNwb25zZUludGVyZmFjZTsKCmludGVyZmFjZSBDbGllbnRJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBTZW5kcyBhIFBTUi03IHJlcXVlc3QgYW5kIHJldHVybnMgYSBQU1ItNyByZXNwb25zZS4KICAgICAqCiAgICAgKiBAcGFyYW0gUmVxdWVzdEludGVyZmFjZSAkcmVxdWVzdAogICAgICoKICAgICAqIEByZXR1cm4gUmVzcG9uc2VJbnRlcmZhY2UKICAgICAqCiAgICAgKiBAdGhyb3dzIFxQc3JcSHR0cFxDbGllbnRcQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlIElmIGFuIGVycm9yIGhhcHBlbnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlbmRSZXF1ZXN0KFJlcXVlc3RJbnRlcmZhY2UgJHJlcXVlc3QpOiBSZXNwb25zZUludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/NetworkExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIFRocm93biB3aGVuIHRoZSByZXF1ZXN0IGNhbm5vdCBiZSBjb21wbGV0ZWQgYmVjYXVzZSBvZiBuZXR3b3JrIGlzc3Vlcy4KICoKICogVGhlcmUgaXMgbm8gcmVzcG9uc2Ugb2JqZWN0IGFzIHRoaXMgZXhjZXB0aW9uIGlzIHRocm93biB3aGVuIG5vIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLgogKgogKiBFeGFtcGxlOiB0aGUgdGFyZ2V0IGhvc3QgbmFtZSBjYW4gbm90IGJlIHJlc29sdmVkIG9yIHRoZSBjb25uZWN0aW9uIGZhaWxlZC4KICovCmludGVyZmFjZSBOZXR3b3JrRXhjZXB0aW9uSW50ZXJmYWNlIGV4dGVuZHMgQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGUgcmVxdWVzdCBvYmplY3QgTUFZIGJlIGEgZGlmZmVyZW50IG9iamVjdCBmcm9tIHRoZSBvbmUgcGFzc2VkIHRvIENsaWVudEludGVyZmFjZTo6c2VuZFJlcXVlc3QoKQogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-client/src/RequestExceptionInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxDbGllbnQ7Cgp1c2UgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlOwoKLyoqCiAqIEV4Y2VwdGlvbiBmb3Igd2hlbiBhIHJlcXVlc3QgZmFpbGVkLgogKgogKiBFeGFtcGxlczoKICogICAgICAtIFJlcXVlc3QgaXMgaW52YWxpZCAoZS5nLiBtZXRob2QgaXMgbWlzc2luZykKICogICAgICAtIFJ1bnRpbWUgcmVxdWVzdCBlcnJvcnMgKGUuZy4gdGhlIGJvZHkgc3RyZWFtIGlzIG5vdCBzZWVrYWJsZSkKICovCmludGVyZmFjZSBSZXF1ZXN0RXhjZXB0aW9uSW50ZXJmYWNlIGV4dGVuZHMgQ2xpZW50RXhjZXB0aW9uSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGUgcmVxdWVzdCBvYmplY3QgTUFZIGJlIGEgZGlmZmVyZW50IG9iamVjdCBmcm9tIHRoZSBvbmUgcGFzc2VkIHRvIENsaWVudEludGVyZmFjZTo6c2VuZFJlcXVlc3QoKQogICAgICoKICAgICAqIEByZXR1cm4gUmVxdWVzdEludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdCgpOiBSZXF1ZXN0SW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtZmFjdG9yeSIsCiAgICAiZGVzY3JpcHRpb24iOiAiUFNSLTE3OiBDb21tb24gaW50ZXJmYWNlcyBmb3IgUFNSLTcgSFRUUCBtZXNzYWdlIGZhY3RvcmllcyIsCiAgICAia2V5d29yZHMiOiBbCiAgICAgICAgInBzciIsCiAgICAgICAgInBzci03IiwKICAgICAgICAicHNyLTE3IiwKICAgICAgICAiaHR0cCIsCiAgICAgICAgImZhY3RvcnkiLAogICAgICAgICJtZXNzYWdlIiwKICAgICAgICAicmVxdWVzdCIsCiAgICAgICAgInJlc3BvbnNlIgogICAgXSwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgIH0KICAgIF0sCiAgICAic3VwcG9ydCI6IHsKICAgICAgICAic291cmNlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9waHAtZmlnL2h0dHAtZmFjdG9yeSIKICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIj49Ny4xIiwKICAgICAgICAicHNyL2h0dHAtbWVzc2FnZSI6ICJeMS4wIHx8IF4yLjAiCiAgICB9LAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIlBzclxcSHR0cFxcTWVzc2FnZVxcIjogInNyYy8iCiAgICAgICAgfQogICAgfSwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1hc3RlciI6ICIxLjAueC1kZXYiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUlUIExpY2Vuc2UKCkNvcHlyaWdodCAoYykgMjAxOCBQSFAtRklHCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Cm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbApjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbApjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQpBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCkxJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFClNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[SFRUUCBGYWN0b3JpZXMKPT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBob2xkcyBhbGwgaW50ZXJmYWNlcyByZWxhdGVkIHRvIFtQU1ItMTcgKEhUVFAgRmFjdG9yaWVzKV1bcHNyLXVybF0uCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBIVFRQIEZhY3RvcnkgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGludGVyZmFjZXMgdGhhdCBkZXNjcmliZSB0aGUgY29tcG9uZW50cyBvZiBhIEhUVFAgRmFjdG9yeS4KClRoZSBpbnN0YWxsYWJsZSBbcGFja2FnZV1bcGFja2FnZS11cmxdIGFuZCBbaW1wbGVtZW50YXRpb25zXVtpbXBsZW1lbnRhdGlvbi11cmxdIGFyZSBsaXN0ZWQgb24gUGFja2FnaXN0LgoKW3Bzci11cmxdOiBodHRwczovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTE3LwpbcGFja2FnZS11cmxdOiBodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvcHNyL2h0dHAtZmFjdG9yeQpbaW1wbGVtZW50YXRpb24tdXJsXTogaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3Byb3ZpZGVycy9wc3IvaHR0cC1mYWN0b3J5LWltcGxlbWVudGF0aW9uCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/RequestFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHJlcXVlc3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbWV0aG9kIFRoZSBIVFRQIG1ldGhvZCBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuCiAgICAgKiBAcGFyYW0gVXJpSW50ZXJmYWNlfHN0cmluZyAkdXJpIFRoZSBVUkkgYXNzb2NpYXRlZCB3aXRoIHRoZSByZXF1ZXN0LiBJZgogICAgICogICAgIHRoZSB2YWx1ZSBpcyBhIHN0cmluZywgdGhlIGZhY3RvcnkgTVVTVCBjcmVhdGUgYSBVcmlJbnRlcmZhY2UKICAgICAqICAgICBpbnN0YW5jZSBiYXNlZCBvbiBpdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIFJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmkpOiBSZXF1ZXN0SW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/ResponseFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFJlc3BvbnNlRmFjdG9yeUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyByZXNwb25zZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICRjb2RlIEhUVFAgc3RhdHVzIGNvZGU7IGRlZmF1bHRzIHRvIDIwMAogICAgICogQHBhcmFtIHN0cmluZyAkcmVhc29uUGhyYXNlIFJlYXNvbiBwaHJhc2UgdG8gYXNzb2NpYXRlIHdpdGggc3RhdHVzIGNvZGUKICAgICAqICAgICBpbiBnZW5lcmF0ZWQgcmVzcG9uc2U7IGlmIG5vbmUgaXMgcHJvdmlkZWQgaW1wbGVtZW50YXRpb25zIE1BWSB1c2UKICAgICAqICAgICB0aGUgZGVmYXVsdHMgYXMgc3VnZ2VzdGVkIGluIHRoZSBIVFRQIHNwZWNpZmljYXRpb24uCiAgICAgKgogICAgICogQHJldHVybiBSZXNwb25zZUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlUmVzcG9uc2UoaW50ICRjb2RlID0gMjAwLCBzdHJpbmcgJHJlYXNvblBocmFzZSA9ICcnKTogUmVzcG9uc2VJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/ServerRequestFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFNlcnZlclJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogQ3JlYXRlIGEgbmV3IHNlcnZlciByZXF1ZXN0LgogICAgICoKICAgICAqIE5vdGUgdGhhdCBzZXJ2ZXItcGFyYW1zIGFyZSB0YWtlbiBwcmVjaXNlbHkgYXMgZ2l2ZW4gLSBubyBwYXJzaW5nL3Byb2Nlc3NpbmcKICAgICAqIG9mIHRoZSBnaXZlbiB2YWx1ZXMgaXMgcGVyZm9ybWVkLCBhbmQsIGluIHBhcnRpY3VsYXIsIG5vIGF0dGVtcHQgaXMgbWFkZSB0bwogICAgICogZGV0ZXJtaW5lIHRoZSBIVFRQIG1ldGhvZCBvciBVUkksIHdoaWNoIG11c3QgYmUgcHJvdmlkZWQgZXhwbGljaXRseS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtZXRob2QgVGhlIEhUVFAgbWV0aG9kIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdC4KICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2V8c3RyaW5nICR1cmkgVGhlIFVSSSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcXVlc3QuIElmCiAgICAgKiAgICAgdGhlIHZhbHVlIGlzIGEgc3RyaW5nLCB0aGUgZmFjdG9yeSBNVVNUIGNyZWF0ZSBhIFVyaUludGVyZmFjZQogICAgICogICAgIGluc3RhbmNlIGJhc2VkIG9uIGl0LgogICAgICogQHBhcmFtIGFycmF5ICRzZXJ2ZXJQYXJhbXMgQXJyYXkgb2YgU0FQSSBwYXJhbWV0ZXJzIHdpdGggd2hpY2ggdG8gc2VlZAogICAgICogICAgIHRoZSBnZW5lcmF0ZWQgcmVxdWVzdCBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFNlcnZlclJlcXVlc3RJbnRlcmZhY2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVNlcnZlclJlcXVlc3Qoc3RyaW5nICRtZXRob2QsICR1cmksIGFycmF5ICRzZXJ2ZXJQYXJhbXMgPSBbXSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/StreamFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFN0cmVhbUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgc3RyZWFtIGZyb20gYSBzdHJpbmcuCiAgICAgKgogICAgICogVGhlIHN0cmVhbSBTSE9VTEQgYmUgY3JlYXRlZCB3aXRoIGEgdGVtcG9yYXJ5IHJlc291cmNlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGNvbnRlbnQgU3RyaW5nIGNvbnRlbnQgd2l0aCB3aGljaCB0byBwb3B1bGF0ZSB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEByZXR1cm4gU3RyZWFtSW50ZXJmYWNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW0oc3RyaW5nICRjb250ZW50ID0gJycpOiBTdHJlYW1JbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBzdHJlYW0gZnJvbSBhbiBleGlzdGluZyBmaWxlLgogICAgICoKICAgICAqIFRoZSBmaWxlIE1VU1QgYmUgb3BlbmVkIHVzaW5nIHRoZSBnaXZlbiBtb2RlLCB3aGljaCBtYXkgYmUgYW55IG1vZGUKICAgICAqIHN1cHBvcnRlZCBieSB0aGUgYGZvcGVuYCBmdW5jdGlvbi4KICAgICAqCiAgICAgKiBUaGUgYCRmaWxlbmFtZWAgTUFZIGJlIGFueSBzdHJpbmcgc3VwcG9ydGVkIGJ5IGBmb3BlbigpYC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRmaWxlbmFtZSBGaWxlbmFtZSBvciBzdHJlYW0gVVJJIHRvIHVzZSBhcyBiYXNpcyBvZiBzdHJlYW0uCiAgICAgKiBAcGFyYW0gc3RyaW5nICRtb2RlIE1vZGUgd2l0aCB3aGljaCB0byBvcGVuIHRoZSB1bmRlcmx5aW5nIGZpbGVuYW1lL3N0cmVhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBJZiB0aGUgZmlsZSBjYW5ub3QgYmUgb3BlbmVkLgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBtb2RlIGlzIGludmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVTdHJlYW1Gcm9tRmlsZShzdHJpbmcgJGZpbGVuYW1lLCBzdHJpbmcgJG1vZGUgPSAncicpOiBTdHJlYW1JbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgc3RyZWFtIGZyb20gYW4gZXhpc3RpbmcgcmVzb3VyY2UuCiAgICAgKgogICAgICogVGhlIHN0cmVhbSBNVVNUIGJlIHJlYWRhYmxlIGFuZCBtYXkgYmUgd3JpdGFibGUuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlICRyZXNvdXJjZSBQSFAgcmVzb3VyY2UgdG8gdXNlIGFzIGJhc2lzIG9mIHN0cmVhbS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFN0cmVhbUludGVyZmFjZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlU3RyZWFtRnJvbVJlc291cmNlKCRyZXNvdXJjZSk6IFN0cmVhbUludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/UploadedFileFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFVwbG9hZGVkRmlsZUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBJZiBhIHNpemUgaXMgbm90IHByb3ZpZGVkIGl0IHdpbGwgYmUgZGV0ZXJtaW5lZCBieSBjaGVja2luZyB0aGUgc2l6ZSBvZgogICAgICogdGhlIGZpbGUuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZmVhdHVyZXMuZmlsZS11cGxvYWQucG9zdC1tZXRob2QucGhwCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L21hbnVhbC9mZWF0dXJlcy5maWxlLXVwbG9hZC5lcnJvcnMucGhwCiAgICAgKgogICAgICogQHBhcmFtIFN0cmVhbUludGVyZmFjZSAkc3RyZWFtIFVuZGVybHlpbmcgc3RyZWFtIHJlcHJlc2VudGluZyB0aGUKICAgICAqICAgICB1cGxvYWRlZCBmaWxlIGNvbnRlbnQuCiAgICAgKiBAcGFyYW0gaW50fG51bGwgJHNpemUgaW4gYnl0ZXMKICAgICAqIEBwYXJhbSBpbnQgJGVycm9yIFBIUCBmaWxlIHVwbG9hZCBlcnJvcgogICAgICogQHBhcmFtIHN0cmluZ3xudWxsICRjbGllbnRGaWxlbmFtZSBGaWxlbmFtZSBhcyBwcm92aWRlZCBieSB0aGUgY2xpZW50LCBpZiBhbnkuCiAgICAgKiBAcGFyYW0gc3RyaW5nfG51bGwgJGNsaWVudE1lZGlhVHlwZSBNZWRpYSB0eXBlIGFzIHByb3ZpZGVkIGJ5IHRoZSBjbGllbnQsIGlmIGFueS4KICAgICAqCiAgICAgKiBAcmV0dXJuIFVwbG9hZGVkRmlsZUludGVyZmFjZQogICAgICoKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgZmlsZSByZXNvdXJjZSBpcyBub3QgcmVhZGFibGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVVcGxvYWRlZEZpbGUoCiAgICAgICAgU3RyZWFtSW50ZXJmYWNlICRzdHJlYW0sCiAgICAgICAgP2ludCAkc2l6ZSA9IG51bGwsCiAgICAgICAgaW50ICRlcnJvciA9IFxVUExPQURfRVJSX09LLAogICAgICAgID9zdHJpbmcgJGNsaWVudEZpbGVuYW1lID0gbnVsbCwKICAgICAgICA/c3RyaW5nICRjbGllbnRNZWRpYVR5cGUgPSBudWxsCiAgICApOiBVcGxvYWRlZEZpbGVJbnRlcmZhY2U7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-factory/src/UriFactoryInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKaW50ZXJmYWNlIFVyaUZhY3RvcnlJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBDcmVhdGUgYSBuZXcgVVJJLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHVyaQogICAgICoKICAgICAqIEByZXR1cm4gVXJpSW50ZXJmYWNlCiAgICAgKgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIElmIHRoZSBnaXZlbiBVUkkgY2Fubm90IGJlIHBhcnNlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZVVyaShzdHJpbmcgJHVyaSA9ICcnKTogVXJpSW50ZXJmYWNlOwp9Cg==]]></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[ewogICAgIm5hbWUiOiAicHNyL2h0dHAtbWVzc2FnZSIsCiAgICAiZGVzY3JpcHRpb24iOiAiQ29tbW9uIGludGVyZmFjZSBmb3IgSFRUUCBtZXNzYWdlcyIsCiAgICAia2V5d29yZHMiOiBbInBzciIsICJwc3ItNyIsICJodHRwIiwgImh0dHAtbWVzc2FnZSIsICJyZXF1ZXN0IiwgInJlc3BvbnNlIl0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3BocC1maWcvaHR0cC1tZXNzYWdlIiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIlBIUC1GSUciLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly93d3cucGhwLWZpZy5vcmcvIgogICAgICAgIH0KICAgIF0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAicGhwIjogIl43LjIgfHwgXjguMCIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgInBzci00IjogewogICAgICAgICAgICAiUHNyXFxIdHRwXFxNZXNzYWdlXFwiOiAic3JjLyIKICAgICAgICB9CiAgICB9LAogICAgImV4dHJhIjogewogICAgICAgICJicmFuY2gtYWxpYXMiOiB7CiAgICAgICAgICAgICJkZXYtbWFzdGVyIjogIjIuMC54LWRldiIKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/docs/PSR7-Interfaces.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyBJbnRlcmZhY2VzCgpUaGUgcHVycG9zZSBvZiB0aGlzIGxpc3QgaXMgdG8gaGVscCBpbiBmaW5kaW5nIHRoZSBtZXRob2RzIHdoZW4gd29ya2luZyB3aXRoIFBTUi03LiBUaGlzIGNhbiBiZSBjb25zaWRlcmVkIGFzIGEgY2hlYXRzaGVldCBmb3IgUFNSLTcgaW50ZXJmYWNlcy4KClRoZSBpbnRlcmZhY2VzIGRlZmluZWQgaW4gUFNSLTcgYXJlIHRoZSBmb2xsb3dpbmc6Cgp8IENsYXNzIE5hbWUgfCBEZXNjcmlwdGlvbiB8CnwtLS18LS0tfAp8IFtQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZW1lc3NhZ2VpbnRlcmZhY2UpIHwgUmVwcmVzZW50YXRpb24gb2YgYSBIVFRQIG1lc3NhZ2UgfAp8IFtQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXJlcXVlc3RpbnRlcmZhY2UpIHwgUmVwcmVzZW50YXRpb24gb2YgYW4gb3V0Z29pbmcsIGNsaWVudC1zaWRlIHJlcXVlc3QuIHwKfCBbUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlXShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8jcHNyaHR0cG1lc3NhZ2VzZXJ2ZXJyZXF1ZXN0aW50ZXJmYWNlKSB8IFJlcHJlc2VudGF0aW9uIG9mIGFuIGluY29taW5nLCBzZXJ2ZXItc2lkZSBIVFRQIHJlcXVlc3QuIHwgCnwgW1BzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXJlc3BvbnNlaW50ZXJmYWNlKSB8IFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBzZXJ2ZXItc2lkZSByZXNwb25zZS4gfAp8IFtQc3JcSHR0cFxNZXNzYWdlXFN0cmVhbUludGVyZmFjZV0oaHR0cDovL3d3dy5waHAtZmlnLm9yZy9wc3IvcHNyLTcvI3Bzcmh0dHBtZXNzYWdlc3RyZWFtaW50ZXJmYWNlKSB8IERlc2NyaWJlcyBhIGRhdGEgc3RyZWFtIHwKfCBbUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VdKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LyNwc3JodHRwbWVzc2FnZXVyaWludGVyZmFjZSkgfCBWYWx1ZSBvYmplY3QgcmVwcmVzZW50aW5nIGEgVVJJLiB8CnwgW1BzclxIdHRwXE1lc3NhZ2VcVXBsb2FkZWRGaWxlSW50ZXJmYWNlXShodHRwOi8vd3d3LnBocC1maWcub3JnL3Bzci9wc3ItNy8jcHNyaHR0cG1lc3NhZ2V1cGxvYWRlZGZpbGVpbnRlcmZhY2UpIHwgVmFsdWUgb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgdXBsb2FkZWQgdGhyb3VnaCBhbiBIVFRQIHJlcXVlc3QuIHwKCiMjIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIE1ldGhvZHMKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0UHJvdG9jb2xWZXJzaW9uKClgICAgICAgICAgICAgIHwgUmV0cmlldmUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uICAgICAgICAgIHwgIDEuMCBvciAxLjEgfAp8IGB3aXRoUHJvdG9jb2xWZXJzaW9uKCR2ZXJzaW9uKWAgICAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBwcm90b2NvbCB2ZXJzaW9uICAgICAgICAgIHwgICAgICB8CnwgYGdldEhlYWRlcnMoKWAgICAgICAgICAgICAgICAgICAgICB8IFJldHJpZXZlIGFsbCBIVFRQIEhlYWRlcnMgICAgICAgICAgICAgICB8IFtSZXF1ZXN0IEhlYWRlciBMaXN0XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MaXN0X29mX0hUVFBfaGVhZGVyX2ZpZWxkcyNSZXF1ZXN0X2ZpZWxkcyksIFtSZXNwb25zZSBIZWFkZXIgTGlzdF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGlzdF9vZl9IVFRQX2hlYWRlcl9maWVsZHMjUmVzcG9uc2VfZmllbGRzKSAgICAgIHwKfCBgaGFzSGVhZGVyKCRuYW1lKWAgICAgICAgICAgICAgICAgIHwgQ2hlY2tzIGlmIEhUVFAgSGVhZGVyIHdpdGggZ2l2ZW4gbmFtZSBleGlzdHMgIHwgfAp8IGBnZXRIZWFkZXIoJG5hbWUpYCAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgYSBhcnJheSB3aXRoIHRoZSB2YWx1ZXMgZm9yIGEgc2luZ2xlIGhlYWRlciB8IHwKfCBgZ2V0SGVhZGVyTGluZSgkbmFtZSlgICAgICAgICAgICAgIHwgUmV0cmlldmVzIGEgY29tbWEtc2VwYXJhdGVkIHN0cmluZyBvZiB0aGUgdmFsdWVzIGZvciBhIHNpbmdsZSBoZWFkZXIgfCAgfAp8IGB3aXRoSGVhZGVyKCRuYW1lLCAkdmFsdWUpYCAgICAgICAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBIZWFkZXIgfCBpZiB0aGUgaGVhZGVyIGV4aXN0ZWQgaW4gdGhlIG9yaWdpbmFsIGluc3RhbmNlLCByZXBsYWNlcyB0aGUgaGVhZGVyIHZhbHVlIGZyb20gdGhlIG9yaWdpbmFsIG1lc3NhZ2Ugd2l0aCB0aGUgdmFsdWUgcHJvdmlkZWQgd2hlbiBjcmVhdGluZyB0aGUgbmV3IGluc3RhbmNlLiB8CnwgYHdpdGhBZGRlZEhlYWRlcigkbmFtZSwgJHZhbHVlKWAgICB8IFJldHVybnMgbmV3IG1lc3NhZ2UgaW5zdGFuY2Ugd2l0aCBhcHBlbmRlZCB2YWx1ZSB0byBnaXZlbiBoZWFkZXIgfCBJZiBoZWFkZXIgYWxyZWFkeSBleGlzdHMgdmFsdWUgd2lsbCBiZSBhcHBlbmRlZCwgaWYgbm90IGEgbmV3IGhlYWRlciB3aWxsIGJlIGNyZWF0ZWQgfAp8IGB3aXRob3V0SGVhZGVyKCRuYW1lKWAgICAgICAgICAgICAgfCBSZW1vdmVzIEhUVFAgSGVhZGVyIHdpdGggZ2l2ZW4gbmFtZXwgfAp8IGBnZXRCb2R5KClgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIEhUVFAgTWVzc2FnZSBCb2R5IHwgUmV0dXJucyBvYmplY3QgaW1wbGVtZW50aW5nIGBTdHJlYW1JbnRlcmZhY2VgfAp8IGB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpYCAgfCBSZXR1cm5zIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggZ2l2ZW4gSFRUUCBNZXNzYWdlIEJvZHkgfCB8CgoKIyMgYFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAgTWV0aG9kcwoKU2FtZSBtZXRob2RzIGFzIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgICArIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0UmVxdWVzdFRhcmdldCgpYCAgICAgICAgICAgICAgICB8IFJldHJpZXZlcyB0aGUgbWVzc2FnZSdzIHJlcXVlc3QgdGFyZ2V0ICAgICAgICAgICAgICB8IG9yaWdpbi1mb3JtLCBhYnNvbHV0ZS1mb3JtLCBhdXRob3JpdHktZm9ybSwgYXN0ZXJpc2stZm9ybSAoW1JGQzcyMzBdKGh0dHBzOi8vd3d3LnJmYy1lZGl0b3Iub3JnL3JmYy9yZmM3MjMwLnR4dCkpIHwKfCBgd2l0aFJlcXVlc3RUYXJnZXQoJHJlcXVlc3RUYXJnZXQpYCB8IFJldHVybiBhIG5ldyBtZXNzYWdlIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmljIHJlcXVlc3QtdGFyZ2V0IHwgICAgICB8CnwgYGdldE1ldGhvZCgpYCAgICAgICAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIEhUVFAgbWV0aG9kIG9mIHRoZSByZXF1ZXN0LiAgfCAgR0VULCBIRUFELCBQT1NULCBQVVQsIERFTEVURSwgQ09OTkVDVCwgT1BUSU9OUywgVFJBQ0UgKGRlZmluZWQgaW4gW1JGQzcyMzFdKGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxKSksIFBBVENIIChkZWZpbmVkIGluIFtSRkM1Nzg5XShodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNTc4OSkpIHwKfCBgd2l0aE1ldGhvZCgkbWV0aG9kKWAgICAgICAgICAgICAgICB8IFJldHVybnMgYSBuZXcgbWVzc2FnZSBpbnN0YW5jZSB3aXRoIHRoZSBwcm92aWRlZCBIVFRQIG1ldGhvZCAgfCB8CnwgYGdldFVyaSgpYCAgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZXMgdGhlIFVSSSBpbnN0YW5jZSB8IHwKfCBgd2l0aFVyaShVcmlJbnRlcmZhY2UgJHVyaSwgJHByZXNlcnZlSG9zdCA9IGZhbHNlKWAgfCBSZXR1cm5zIGEgbmV3IG1lc3NhZ2UgaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgVVJJIHwgIHwKCgojIyBgUHNyXEh0dHBcTWVzc2FnZVxTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCBNZXRob2RzCgpTYW1lIG1ldGhvZHMgYXMgYFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEludGVyZmFjZWAgICsgdGhlIGZvbGxvd2luZyBtZXRob2RzOgoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTZXJ2ZXJQYXJhbXMoKSBgICAgICAgICAgICAgICAgfCBSZXRyaWV2ZSBzZXJ2ZXIgcGFyYW1ldGVycyAgfCBUeXBpY2FsbHkgZGVyaXZlZCBmcm9tIGAkX1NFUlZFUmAgIHwKfCBgZ2V0Q29va2llUGFyYW1zKClgICAgICAgICAgICAgICAgIHwgUmV0cmlldmVzIGNvb2tpZXMgc2VudCBieSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIuIHwgVHlwaWNhbGx5IGRlcml2ZWQgZnJvbSBgJF9DT09LSUVTYCB8CnwgYHdpdGhDb29raWVQYXJhbXMoYXJyYXkgJGNvb2tpZXMpYCB8ICBSZXR1cm5zIGEgbmV3IHJlcXVlc3QgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGNvb2tpZXMgICAgICB8ICAgfCAKfCBgd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSlgIHwgUmV0dXJucyBhIG5ldyByZXF1ZXN0IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcgYXJndW1lbnRzICB8ICB8CnwgYGdldFVwbG9hZGVkRmlsZXMoKWAgfCBSZXRyaWV2ZSBub3JtYWxpemVkIGZpbGUgdXBsb2FkIGRhdGEgIHwgIHwKfCBgd2l0aFVwbG9hZGVkRmlsZXMoYXJyYXkgJHVwbG9hZGVkRmlsZXMpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXBsb2FkZWQgZmlsZXMgIHwgIHwKfCBgZ2V0UGFyc2VkQm9keSgpYCB8IFJldHJpZXZlIGFueSBwYXJhbWV0ZXJzIHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0IGJvZHkgIHwgIHwKfCBgd2l0aFBhcnNlZEJvZHkoJGRhdGEpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYm9keSBwYXJhbWV0ZXJzICB8ICB8CnwgYGdldEF0dHJpYnV0ZXMoKWAgfCBSZXRyaWV2ZSBhdHRyaWJ1dGVzIGRlcml2ZWQgZnJvbSB0aGUgcmVxdWVzdCAgfCAgfAp8IGBnZXRBdHRyaWJ1dGUoJG5hbWUsICRkZWZhdWx0ID0gbnVsbClgIHwgUmV0cmlldmUgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAp8IGB3aXRoQXR0cmlidXRlKCRuYW1lLCAkdmFsdWUpYCB8IFJldHVybnMgYSBuZXcgcmVxdWVzdCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAp8IGB3aXRob3V0QXR0cmlidXRlKCRuYW1lKWAgfCBSZXR1cm5zIGEgbmV3IHJlcXVlc3QgaW5zdGFuY2UgdGhhdCB3aXRob3V0IHRoZSBzcGVjaWZpZWQgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSAgfCAgfAoKIyMgYFBzclxIdHRwXE1lc3NhZ2VcUmVzcG9uc2VJbnRlcmZhY2VgIE1ldGhvZHM6CgpTYW1lIG1ldGhvZHMgYXMgYFBzclxIdHRwXE1lc3NhZ2VcTWVzc2FnZUludGVyZmFjZWAgICsgdGhlIGZvbGxvd2luZyBtZXRob2RzOgoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTdGF0dXNDb2RlKClgIHwgR2V0cyB0aGUgcmVzcG9uc2Ugc3RhdHVzIGNvZGUuIHwgfAp8IGB3aXRoU3RhdHVzKCRjb2RlLCAkcmVhc29uUGhyYXNlID0gJycpYCB8IFJldHVybnMgYSBuZXcgcmVzcG9uc2UgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHN0YXR1cyBjb2RlIGFuZCwgb3B0aW9uYWxseSwgcmVhc29uIHBocmFzZS4gfCB8CnwgYGdldFJlYXNvblBocmFzZSgpYCB8IEdldHMgdGhlIHJlc3BvbnNlIHJlYXNvbiBwaHJhc2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGF0dXMgY29kZS4gfCB8CgojIyAgYFBzclxIdHRwXE1lc3NhZ2VcU3RyZWFtSW50ZXJmYWNlYCBNZXRob2RzCgp8IE1ldGhvZCBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiB8IE5vdGVzIHwKfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwgLS0tLS0tLS0tLS0gfCAtLS0tLSB8CnwgYF9fdG9TdHJpbmcoKWAgfCBSZWFkcyBhbGwgZGF0YSBmcm9tIHRoZSBzdHJlYW0gaW50byBhIHN0cmluZywgZnJvbSB0aGUgYmVnaW5uaW5nIHRvIGVuZC4gfCB8CnwgYGNsb3NlKClgIHwgQ2xvc2VzIHRoZSBzdHJlYW0gYW5kIGFueSB1bmRlcmx5aW5nIHJlc291cmNlcy4gfCB8CnwgYGRldGFjaCgpYCB8IFNlcGFyYXRlcyBhbnkgdW5kZXJseWluZyByZXNvdXJjZXMgZnJvbSB0aGUgc3RyZWFtLiB8IHwKfCBgZ2V0U2l6ZSgpYCB8IEdldCB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGlmIGtub3duLiB8IHwKfCBgZW9mKClgIHwgUmV0dXJucyB0cnVlIGlmIHRoZSBzdHJlYW0gaXMgYXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLnwgfAp8IGBpc1NlZWthYmxlKClgIHwgIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyBzZWVrYWJsZS4gfCB8CnwgYHNlZWsoJG9mZnNldCwgJHdoZW5jZSA9IFNFRUtfU0VUKWAgfCBTZWVrIHRvIGEgcG9zaXRpb24gaW4gdGhlIHN0cmVhbS4gfCB8CnwgYHJld2luZCgpYCB8IFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLiB8IHwKfCBgaXNXcml0YWJsZSgpYCB8IFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyB3cml0YWJsZS4gfCB8CnwgYHdyaXRlKCRzdHJpbmcpYCB8IFdyaXRlIGRhdGEgdG8gdGhlIHN0cmVhbS4gfCB8CnwgYGlzUmVhZGFibGUoKWAgfCBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBzdHJlYW0gaXMgcmVhZGFibGUuIHwgfAp8IGByZWFkKCRsZW5ndGgpYCB8IFJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0uIHwgfAp8IGBnZXRDb250ZW50cygpYCB8IFJldHVybnMgdGhlIHJlbWFpbmluZyBjb250ZW50cyBpbiBhIHN0cmluZyB8IHwKfCBgZ2V0TWV0YWRhdGEoJGtleSA9IG51bGwpKClgIHwgR2V0IHN0cmVhbSBtZXRhZGF0YSBhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvciByZXRyaWV2ZSBhIHNwZWNpZmljIGtleS4gfCB8CgojIyBgUHNyXEh0dHBcTWVzc2FnZVxVcmlJbnRlcmZhY2VgIE1ldGhvZHMKCnwgTWV0aG9kIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICB8IERlc2NyaXB0aW9uIHwgTm90ZXMgfAp8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfCAtLS0tLS0tLS0tLSB8IC0tLS0tIHwKfCBgZ2V0U2NoZW1lKClgIHwgUmV0cmlldmUgdGhlIHNjaGVtZSBjb21wb25lbnQgb2YgdGhlIFVSSS4gfCB8CnwgYGdldEF1dGhvcml0eSgpYCB8IFJldHJpZXZlIHRoZSBhdXRob3JpdHkgY29tcG9uZW50IG9mIHRoZSBVUkkuIHwgfAp8IGBnZXRVc2VySW5mbygpYCB8IFJldHJpZXZlIHRoZSB1c2VyIGluZm9ybWF0aW9uIGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0SG9zdCgpYCB8IFJldHJpZXZlIHRoZSBob3N0IGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UG9ydCgpYCB8IFJldHJpZXZlIHRoZSBwb3J0IGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UGF0aCgpYCB8IFJldHJpZXZlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJJLiB8IHwKfCBgZ2V0UXVlcnkoKWAgfCBSZXRyaWV2ZSB0aGUgcXVlcnkgc3RyaW5nIG9mIHRoZSBVUkkuIHwgfAp8IGBnZXRGcmFnbWVudCgpYCB8IFJldHJpZXZlIHRoZSBmcmFnbWVudCBjb21wb25lbnQgb2YgdGhlIFVSSS4gfCB8CnwgYHdpdGhTY2hlbWUoJHNjaGVtZSlgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBzY2hlbWUuIHwgfAp8IGB3aXRoVXNlckluZm8oJHVzZXIsICRwYXNzd29yZCA9IG51bGwpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4gfCB8CnwgYHdpdGhIb3N0KCRob3N0KWAgfCBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuIHwgfAp8IGB3aXRoUG9ydCgkcG9ydClgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LiB8IHwKfCBgd2l0aFBhdGgoJHBhdGgpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4gfCB8CnwgYHdpdGhRdWVyeSgkcXVlcnkpYCB8IFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVlcnkgc3RyaW5nLiB8IHwKfCBgd2l0aEZyYWdtZW50KCRmcmFnbWVudClgIHwgUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuIHwgfAp8IGBfX3RvU3RyaW5nKClgIHwgUmV0dXJuIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gYXMgYSBVUkkgcmVmZXJlbmNlLiB8IHwKCiMjIGBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZWAgTWV0aG9kcwoKfCBNZXRob2QgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gfCBOb3RlcyB8CnwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IC0tLS0tLS0tLS0tIHwgLS0tLS0gfAp8IGBnZXRTdHJlYW0oKWAgfCBSZXRyaWV2ZSBhIHN0cmVhbSByZXByZXNlbnRpbmcgdGhlIHVwbG9hZGVkIGZpbGUuIHwgfAp8IGBtb3ZlVG8oJHRhcmdldFBhdGgpYCB8IE1vdmUgdGhlIHVwbG9hZGVkIGZpbGUgdG8gYSBuZXcgbG9jYXRpb24uIHwgfAp8IGBnZXRTaXplKClgIHwgUmV0cmlldmUgdGhlIGZpbGUgc2l6ZS4gfCB8CnwgYGdldEVycm9yKClgIHwgUmV0cmlldmUgdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBsb2FkZWQgZmlsZS4gfCB8CnwgYGdldENsaWVudEZpbGVuYW1lKClgIHwgUmV0cmlldmUgdGhlIGZpbGVuYW1lIHNlbnQgYnkgdGhlIGNsaWVudC4gfCB8CnwgYGdldENsaWVudE1lZGlhVHlwZSgpYCB8IFJldHJpZXZlIHRoZSBtZWRpYSB0eXBlIHNlbnQgYnkgdGhlIGNsaWVudC4gfCB8Cgo+IGBSZXF1ZXN0SW50ZXJmYWNlYCwgYFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgLCBgUmVzcG9uc2VJbnRlcmZhY2VgIGV4dGVuZCBgTWVzc2FnZUludGVyZmFjZWAgIGJlY2F1c2UgdGhlIGBSZXF1ZXN0YCBhbmQgdGhlIGBSZXNwb25zZWAgYXJlIGBIVFRQIE1lc3NhZ2VzYC4KPiBXaGVuIHVzaW5nIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCwgYm90aCBgUmVxdWVzdEludGVyZmFjZWAgYW5kIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIG1ldGhvZHMgYXJlIGNvbnNpZGVyZWQuCgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/docs/PSR7-Usage.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMjIFBTUi03IFVzYWdlCgpBbGwgUFNSLTcgYXBwbGljYXRpb25zIGNvbXBseSB3aXRoIHRoZXNlIGludGVyZmFjZXMgClRoZXkgd2VyZSBjcmVhdGVkIHRvIGVzdGFibGlzaCBhIHN0YW5kYXJkIGJldHdlZW4gbWlkZGxld2FyZSBpbXBsZW1lbnRhdGlvbnMuCgo+IGBSZXF1ZXN0SW50ZXJmYWNlYCwgYFNlcnZlclJlcXVlc3RJbnRlcmZhY2VgLCBgUmVzcG9uc2VJbnRlcmZhY2VgIGV4dGVuZCBgTWVzc2FnZUludGVyZmFjZWAgIGJlY2F1c2UgdGhlIGBSZXF1ZXN0YCBhbmQgdGhlIGBSZXNwb25zZWAgYXJlIGBIVFRQIE1lc3NhZ2VzYC4KPiBXaGVuIHVzaW5nIGBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlYCwgYm90aCBgUmVxdWVzdEludGVyZmFjZWAgYW5kIGBQc3JcSHR0cFxNZXNzYWdlXE1lc3NhZ2VJbnRlcmZhY2VgIG1ldGhvZHMgYXJlIGNvbnNpZGVyZWQuCgoKVGhlIGZvbGxvd2luZyBleGFtcGxlcyB3aWxsIGlsbHVzdHJhdGUgaG93IGJhc2ljIG9wZXJhdGlvbnMgYXJlIGRvbmUgaW4gUFNSLTcuCgojIyMjIyBFeGFtcGxlcwoKCkZvciB0aGlzIGV4YW1wbGVzIHRvIHdvcmsgKGF0IGxlYXN0KSBhIFBTUi03IGltcGxlbWVudGF0aW9uIHBhY2thZ2UgaXMgcmVxdWlyZWQuIChlZzogemVuZGZyYW1ld29yay96ZW5kLWRpYWN0b3JvcywgZ3V6emxlaHR0cC9wc3I3LCBzbGltL3NsaW0sIGV0YykKQWxsIFBTUi03IGltcGxlbWVudGF0aW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIuCgpUaGUgZm9sbG93aW5nIHdpbGwgYmUgYXNzdW1lZDogCmAkcmVxdWVzdGAgaXMgYW4gb2JqZWN0IG9mIGBQc3JcSHR0cFxNZXNzYWdlXFJlcXVlc3RJbnRlcmZhY2VgIGFuZAoKYCRyZXNwb25zZWAgaXMgYW4gb2JqZWN0IGltcGxlbWVudGluZyBgUHNyXEh0dHBcTWVzc2FnZVxSZXF1ZXN0SW50ZXJmYWNlYAoKCiMjIyBXb3JraW5nIHdpdGggSFRUUCBIZWFkZXJzCgojIyMjIEFkZGluZyBoZWFkZXJzIHRvIHJlc3BvbnNlOgoKYGBgcGhwCiRyZXNwb25zZS0+d2l0aEhlYWRlcignTXktQ3VzdG9tLUhlYWRlcicsICdNeSBDdXN0b20gTWVzc2FnZScpOwpgYGAKCiMjIyMgQXBwZW5kaW5nIHZhbHVlcyB0byBoZWFkZXJzCgpgYGBwaHAKJHJlc3BvbnNlLT53aXRoQWRkZWRIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInLCAnVGhlIHNlY29uZCBtZXNzYWdlJyk7CmBgYAoKIyMjIyBDaGVja2luZyBpZiBoZWFkZXIgZXhpc3RzOgoKYGBgcGhwCiRyZXF1ZXN0LT5oYXNIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInKTsgLy8gd2lsbCByZXR1cm4gZmFsc2UKJHJlc3BvbnNlLT5oYXNIZWFkZXIoJ015LUN1c3RvbS1IZWFkZXInKTsgLy8gd2lsbCByZXR1cm4gdHJ1ZQpgYGAKCj4gTm90ZTogTXktQ3VzdG9tLUhlYWRlciB3YXMgb25seSBhZGRlZCBpbiB0aGUgUmVzcG9uc2UKCiMjIyMgR2V0dGluZyBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIGZyb20gYSBoZWFkZXIgKGFsc28gYXBwbGllcyB0byByZXF1ZXN0KQoKYGBgcGhwCi8vIGdldHRpbmcgdmFsdWUgZnJvbSByZXF1ZXN0IGhlYWRlcnMKJHJlcXVlc3QtPmdldEhlYWRlckxpbmUoJ0NvbnRlbnQtVHlwZScpOyAvLyB3aWxsIHJldHVybjogInRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIKLy8gZ2V0dGluZyB2YWx1ZSBmcm9tIHJlc3BvbnNlIGhlYWRlcnMKJHJlc3BvbnNlLT5nZXRIZWFkZXJMaW5lKCdNeS1DdXN0b20tSGVhZGVyJyk7IC8vIHdpbGwgcmV0dXJuOiAgIk15IEN1c3RvbSBNZXNzYWdlOyBUaGUgc2Vjb25kIG1lc3NhZ2UiCmBgYAoKIyMjIyBHZXR0aW5nIGFycmF5IG9mIHZhbHVlIGZyb20gYSBoZWFkZXIgKGFsc28gYXBwbGllcyB0byByZXF1ZXN0KQpgYGBwaHAKLy8gZ2V0dGluZyB2YWx1ZSBmcm9tIHJlcXVlc3QgaGVhZGVycwokcmVxdWVzdC0+Z2V0SGVhZGVyKCdDb250ZW50LVR5cGUnKTsgLy8gd2lsbCByZXR1cm46IFsidGV4dC9odG1sIiwgImNoYXJzZXQ9VVRGLTgiXQovLyBnZXR0aW5nIHZhbHVlIGZyb20gcmVzcG9uc2UgaGVhZGVycwokcmVzcG9uc2UtPmdldEhlYWRlcignTXktQ3VzdG9tLUhlYWRlcicpOyAvLyB3aWxsIHJldHVybjogIFsiTXkgQ3VzdG9tIE1lc3NhZ2UiLCAgIlRoZSBzZWNvbmQgbWVzc2FnZSJdCmBgYAoKIyMjIyBSZW1vdmluZyBoZWFkZXJzIGZyb20gSFRUUCBNZXNzYWdlcwpgYGBwaHAKLy8gcmVtb3ZpbmcgYSBoZWFkZXIgZnJvbSBSZXF1ZXN0LCByZW1vdmluZyBkZXByZWNhdGVkICJDb250ZW50LU1ENSIgaGVhZGVyCiRyZXF1ZXN0LT53aXRob3V0SGVhZGVyKCdDb250ZW50LU1ENScpOyAKCi8vIHJlbW92aW5nIGEgaGVhZGVyIGZyb20gUmVzcG9uc2UKLy8gZWZmZWN0OiB0aGUgYnJvd3NlciB3b24ndCBrbm93IHRoZSBzaXplIG9mIHRoZSBzdHJlYW0KLy8gdGhlIGJyb3dzZXIgd2lsbCBkb3dubG9hZCB0aGUgc3RyZWFtIHRpbGwgaXQgZW5kcwokcmVzcG9uc2UtPndpdGhvdXRIZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJyk7CmBgYAoKIyMjIFdvcmtpbmcgd2l0aCBIVFRQIE1lc3NhZ2UgQm9keQoKV2hlbiB3b3JraW5nIHdpdGggdGhlIFBTUi03IHRoZXJlIGFyZSB0d28gbWV0aG9kcyBvZiBpbXBsZW1lbnRhdGlvbjoKIyMjIyAxLiBHZXR0aW5nIHRoZSBib2R5IHNlcGFyYXRlbHkKCj4gVGhpcyBtZXRob2QgbWFrZXMgdGhlIGJvZHkgaGFuZGxpbmcgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGlzIHVzZWZ1bCB3aGVuIHJlcGVhdGVkbHkgY2FsbGluZyBib2R5IG1ldGhvZHMuIChZb3Ugb25seSBjYWxsIGBnZXRCb2R5KClgIG9uY2UpLiBVc2luZyB0aGlzIG1ldGhvZCBtaXN0YWtlcyBsaWtlIGAkcmVzcG9uc2UtPndyaXRlKClgIGFyZSBhbHNvIHByZXZlbnRlZC4KCmBgYHBocAokYm9keSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwovLyBvcGVyYXRpb25zIG9uIGJvZHksIGVnLiByZWFkLCB3cml0ZSwgc2VlawovLyAuLi4KLy8gcmVwbGFjaW5nIHRoZSBvbGQgYm9keQokcmVzcG9uc2UtPndpdGhCb2R5KCRib2R5KTsgCi8vIHRoaXMgbGFzdCBzdGF0ZW1lbnQgaXMgb3B0aW9uYWwgYXMgd2Ugd29ya2luZyB3aXRoIG9iamVjdHMKLy8gaW4gdGhpcyBjYXNlIHRoZSAibmV3IiBib2R5IGlzIHNhbWUgd2l0aCB0aGUgIm9sZCIgb25lCi8vIHRoZSAkYm9keSB2YXJpYWJsZSBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIG9uZSBpbiAkcmVxdWVzdCwgb25seSB0aGUgcmVmZXJlbmNlIGlzIHBhc3NlZApgYGAKCiMjIyMgMi4gV29ya2luZyBkaXJlY3RseSBvbiByZXNwb25zZQoKPiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgd2hlbiBvbmx5IHBlcmZvcm1pbmcgZmV3IG9wZXJhdGlvbnMgYXMgdGhlIGAkcmVxdWVzdC0+Z2V0Qm9keSgpYCBzdGF0ZW1lbnQgZnJhZ21lbnQgaXMgcmVxdWlyZWQKCmBgYHBocAokcmVzcG9uc2UtPmdldEJvZHkoKS0+d3JpdGUoJ2hlbGxvJyk7CmBgYAoKIyMjIEdldHRpbmcgdGhlIGJvZHkgY29udGVudHMKClRoZSBmb2xsb3dpbmcgc25pcHBldCBnZXRzIHRoZSBjb250ZW50cyBvZiBhIHN0cmVhbSBjb250ZW50cy4KPiBOb3RlOiBTdHJlYW1zIG11c3QgYmUgcmV3aW5kZWQsIGlmIGNvbnRlbnQgd2FzIHdyaXR0ZW4gaW50byBzdHJlYW1zLCBpdCB3aWxsIGJlIGlnbm9yZWQgd2hlbiBjYWxsaW5nIGBnZXRDb250ZW50cygpYCBiZWNhdXNlIHRoZSBzdHJlYW0gcG9pbnRlciBpcyBzZXQgdG8gdGhlIGxhc3QgY2hhcmFjdGVyLCB3aGljaCBpcyBgXDBgIC0gbWVhbmluZyBlbmQgb2Ygc3RyZWFtLgpgYGBwaHAgCiRib2R5ID0gJHJlc3BvbnNlLT5nZXRCb2R5KCk7CiRib2R5LT5yZXdpbmQoKTsgLy8gb3IgJGJvZHktPnNlZWsoMCk7CiRib2R5VGV4dCA9ICRib2R5LT5nZXRDb250ZW50cygpOwpgYGAKPiBOb3RlOiBJZiBgJGJvZHktPnNlZWsoMSlgIGlzIGNhbGxlZCBiZWZvcmUgYCRib2R5LT5nZXRDb250ZW50cygpYCwgdGhlIGZpcnN0IGNoYXJhY3RlciB3aWxsIGJlIG9tbWl0ZWQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50ZXIgaXMgc2V0IHRvIGAxYCwgbm90IGAwYC4gVGhpcyBpcyB3aHkgdXNpbmcgYCRib2R5LT5yZXdpbmQoKWAgaXMgcmVjb21tZW5kZWQuCgojIyMgQXBwZW5kIHRvIGJvZHkKCmBgYHBocAokcmVzcG9uc2UtPmdldEJvZHkoKS0+d3JpdGUoJ0hlbGxvJyk7IC8vIHdyaXRpbmcgZGlyZWN0bHkKJGJvZHkgPSAkcmVxdWVzdC0+Z2V0Qm9keSgpOyAvLyB3aGljaCBpcyBhIGBTdHJlYW1JbnRlcmZhY2VgCiRib2R5LT53cml0ZSgneHh4eHgnKTsKYGBgCgojIyMgUHJlcGVuZCB0byBib2R5ClByZXBlbmRpbmcgaXMgZGlmZmVyZW50IHdoZW4gaXQgY29tZXMgdG8gc3RyZWFtcy4gVGhlIGNvbnRlbnQgbXVzdCBiZSBjb3BpZWQgYmVmb3JlIHdyaXRpbmcgdGhlIGNvbnRlbnQgdG8gYmUgcHJlcGVuZGVkLgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgd2lsbCBleHBsYWluIHRoZSBiZWhhdmlvdXIgb2Ygc3RyZWFtcy4KCmBgYHBocAovLyBhc3N1bWluZyBvdXIgcmVzcG9uc2UgaXMgaW5pdGlhbGx5IGVtcHR5CiRib2R5ID0gJHJlcHNvbnNlLT5nZXRCb2R5KCk7Ci8vIHdyaXRpbmcgdGhlIHN0cmluZyAiYWJjZCIKJGJvZHktPndyaXRlKCdhYmNkJyk7CgovLyBzZWVraW5nIHRvIHN0YXJ0IG9mIHN0cmVhbQokYm9keS0+c2VlaygwKTsKLy8gd3JpdGluZyAnZWYnCiRib2R5LT53cml0ZSgnZWYnKTsgLy8gYXQgdGhpcyBwb2ludCB0aGUgc3RyZWFtIGNvbnRhaW5zICJlZmNkIgpgYGAKCiMjIyMgUHJlcGVuZGluZyBieSByZXdyaXRpbmcgc2VwYXJhdGVseQoKYGBgcGhwCi8vIGFzc3VtaW5nIG91ciByZXNwb25zZSBib2R5IHN0cmVhbSBvbmx5IGNvbnRhaW5zOiAiYWJjZCIKJGJvZHkgPSAkcmVzcG9uc2UtPmdldEJvZHkoKTsKJGJvZHktPnJld2luZCgpOwokY29udGVudHMgPSAkYm9keS0+Z2V0Q29udGVudHMoKTsgLy8gYWJjZAovLyBzZWVraW5nIHRoZSBzdHJlYW0gdG8gYmVnaW5uaW5nCiRib2R5LT5yZXdpbmQoKTsKJGJvZHktPndyaXRlKCdlZicpOyAvLyBzdHJlYW0gY29udGFpbnMgImVmY2QiCiRib2R5LT53cml0ZSgkY29udGVudHMpOyAvLyBzdHJlYW0gY29udGFpbnMgImVmYWJjZCIKYGBgCgo+IE5vdGU6IGBnZXRDb250ZW50cygpYCBzZWVrcyB0aGUgc3RyZWFtIHdoaWxlIHJlYWRpbmcgaXQsIHRoZXJlZm9yZSBpZiB0aGUgc2Vjb25kIGByZXdpbmQoKWAgbWV0aG9kIGNhbGwgd2FzIG5vdCBwcmVzZW50IHRoZSBzdHJlYW0gd291bGQgaGF2ZSByZXN1bHRlZCBpbiBgYWJjZGVmYWJjZGAgYmVjYXVzZSB0aGUgYHdyaXRlKClgIG1ldGhvZCBhcHBlbmRzIHRvIHN0cmVhbSBpZiBub3QgcHJlY2VlZGVkIGJ5IGByZXdpbmQoKWAgb3IgYHNlZWsoMClgLgoKIyMjIyBQcmVwZW5kaW5nIGJ5IHVzaW5nIGNvbnRlbnRzIGFzIGEgc3RyaW5nCmBgYHBocAokYm9keSA9ICRyZXNwb25zZS0+Z2V0Qm9keSgpOwokYm9keS0+cmV3aW5kKCk7CiRjb250ZW50cyA9ICRib2R5LT5nZXRDb250ZW50cygpOyAvLyBlZmFiY2QKJGNvbnRlbnRzID0gJ2VmJy4kY29udGVudHM7CiRib2R5LT5yZXdpbmQoKTsKJGJvZHktPndyaXRlKCRjb250ZW50cyk7CmBgYAo=]]></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[UFNSIEh0dHAgTWVzc2FnZQo9PT09PT09PT09PT09PT09CgpUaGlzIHJlcG9zaXRvcnkgaG9sZHMgYWxsIGludGVyZmFjZXMvY2xhc3Nlcy90cmFpdHMgcmVsYXRlZCB0bwpbUFNSLTddKGh0dHA6Ly93d3cucGhwLWZpZy5vcmcvcHNyL3Bzci03LykuCgpOb3RlIHRoYXQgdGhpcyBpcyBub3QgYSBIVFRQIG1lc3NhZ2UgaW1wbGVtZW50YXRpb24gb2YgaXRzIG93bi4gSXQgaXMgbWVyZWx5IGFuCmludGVyZmFjZSB0aGF0IGRlc2NyaWJlcyBhIEhUVFAgbWVzc2FnZS4gU2VlIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCgpVc2FnZQotLS0tLQoKQmVmb3JlIHJlYWRpbmcgdGhlIHVzYWdlIGd1aWRlIHdlIHJlY29tbWVuZCByZWFkaW5nIHRoZSBQU1ItNyBpbnRlcmZhY2VzIG1ldGhvZCBsaXN0OgoKKiBbYFBTUi03IEludGVyZmFjZXMgTWV0aG9kIExpc3RgXShkb2NzL1BTUjctSW50ZXJmYWNlcy5tZCkKKiBbYFBTUi03IFVzYWdlIEd1aWRlYF0oZG9jcy9QU1I3LVVzYWdlLm1kKQ==]]></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[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIEhUVFAgbWVzc2FnZXMgY29uc2lzdCBvZiByZXF1ZXN0cyBmcm9tIGEgY2xpZW50IHRvIGEgc2VydmVyIGFuZCByZXNwb25zZXMKICogZnJvbSBhIHNlcnZlciB0byBhIGNsaWVudC4gVGhpcyBpbnRlcmZhY2UgZGVmaW5lcyB0aGUgbWV0aG9kcyBjb21tb24gdG8KICogZWFjaC4KICoKICogTWVzc2FnZXMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqCiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzAudHh0CiAqIEBsaW5rIGh0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzcyMzEudHh0CiAqLwppbnRlcmZhY2UgTWVzc2FnZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBwcm90b2NvbCB2ZXJzaW9uIGFzIGEgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBzdHJpbmcgTVVTVCBjb250YWluIG9ubHkgdGhlIEhUVFAgdmVyc2lvbiBudW1iZXIgKGUuZy4sICIxLjEiLCAiMS4wIikuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgSFRUUCBwcm90b2NvbCB2ZXJzaW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdG9jb2xWZXJzaW9uKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgSFRUUCBwcm90b2NvbCB2ZXJzaW9uLgogICAgICoKICAgICAqIFRoZSB2ZXJzaW9uIHN0cmluZyBNVVNUIGNvbnRhaW4gb25seSB0aGUgSFRUUCB2ZXJzaW9uIG51bWJlciAoZS5nLiwKICAgICAqICIxLjEiLCAiMS4wIikuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IHByb3RvY29sIHZlcnNpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkdmVyc2lvbiBIVFRQIHByb3RvY29sIHZlcnNpb24KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUHJvdG9jb2xWZXJzaW9uKHN0cmluZyAkdmVyc2lvbik6IE1lc3NhZ2VJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYWxsIG1lc3NhZ2UgaGVhZGVyIHZhbHVlcy4KICAgICAqCiAgICAgKiBUaGUga2V5cyByZXByZXNlbnQgdGhlIGhlYWRlciBuYW1lIGFzIGl0IHdpbGwgYmUgc2VudCBvdmVyIHRoZSB3aXJlLCBhbmQKICAgICAqIGVhY2ggdmFsdWUgaXMgYW4gYXJyYXkgb2Ygc3RyaW5ncyBhc3NvY2lhdGVkIHdpdGggdGhlIGhlYWRlci4KICAgICAqCiAgICAgKiAgICAgLy8gUmVwcmVzZW50IHRoZSBoZWFkZXJzIGFzIGEgc3RyaW5nCiAgICAgKiAgICAgZm9yZWFjaCAoJG1lc3NhZ2UtPmdldEhlYWRlcnMoKSBhcyAkbmFtZSA9PiAkdmFsdWVzKSB7CiAgICAgKiAgICAgICAgIGVjaG8gJG5hbWUgLiAiOiAiIC4gaW1wbG9kZSgiLCAiLCAkdmFsdWVzKTsKICAgICAqICAgICB9CiAgICAgKgogICAgICogICAgIC8vIEVtaXQgaGVhZGVycyBpdGVyYXRpdmVseToKICAgICAqICAgICBmb3JlYWNoICgkbWVzc2FnZS0+Z2V0SGVhZGVycygpIGFzICRuYW1lID0+ICR2YWx1ZXMpIHsKICAgICAqICAgICAgICAgZm9yZWFjaCAoJHZhbHVlcyBhcyAkdmFsdWUpIHsKICAgICAqICAgICAgICAgICAgIGhlYWRlcihzcHJpbnRmKCclczogJXMnLCAkbmFtZSwgJHZhbHVlKSwgZmFsc2UpOwogICAgICogICAgICAgICB9CiAgICAgKiAgICAgfQogICAgICoKICAgICAqIFdoaWxlIGhlYWRlciBuYW1lcyBhcmUgbm90IGNhc2Utc2Vuc2l0aXZlLCBnZXRIZWFkZXJzKCkgd2lsbCBwcmVzZXJ2ZSB0aGUKICAgICAqIGV4YWN0IGNhc2UgaW4gd2hpY2ggaGVhZGVycyB3ZXJlIG9yaWdpbmFsbHkgc3BlY2lmaWVkLgogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nW11bXSBSZXR1cm5zIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHRoZSBtZXNzYWdlJ3MgaGVhZGVycy4gRWFjaAogICAgICogICAgIGtleSBNVVNUIGJlIGEgaGVhZGVyIG5hbWUsIGFuZCBlYWNoIHZhbHVlIE1VU1QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncwogICAgICogICAgIGZvciB0aGF0IGhlYWRlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcnMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBDaGVja3MgaWYgYSBoZWFkZXIgZXhpc3RzIGJ5IHRoZSBnaXZlbiBjYXNlLWluc2Vuc2l0aXZlIG5hbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkbmFtZSBDYXNlLWluc2Vuc2l0aXZlIGhlYWRlciBmaWVsZCBuYW1lLgogICAgICogQHJldHVybiBib29sIFJldHVybnMgdHJ1ZSBpZiBhbnkgaGVhZGVyIG5hbWVzIG1hdGNoIHRoZSBnaXZlbiBoZWFkZXIKICAgICAqICAgICBuYW1lIHVzaW5nIGEgY2FzZS1pbnNlbnNpdGl2ZSBzdHJpbmcgY29tcGFyaXNvbi4gUmV0dXJucyBmYWxzZSBpZgogICAgICogICAgIG5vIG1hdGNoaW5nIGhlYWRlciBuYW1lIGlzIGZvdW5kIGluIHRoZSBtZXNzYWdlLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzSGVhZGVyKHN0cmluZyAkbmFtZSk6IGJvb2w7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYSBtZXNzYWdlIGhlYWRlciB2YWx1ZSBieSB0aGUgZ2l2ZW4gY2FzZS1pbnNlbnNpdGl2ZSBuYW1lLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHRoZSBoZWFkZXIgdmFsdWVzIG9mIHRoZSBnaXZlbgogICAgICogY2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgbmFtZS4KICAgICAqCiAgICAgKiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4KICAgICAqIGVtcHR5IGFycmF5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAqIEByZXR1cm4gc3RyaW5nW10gQW4gYXJyYXkgb2Ygc3RyaW5nIHZhbHVlcyBhcyBwcm92aWRlZCBmb3IgdGhlIGdpdmVuCiAgICAgKiAgICBoZWFkZXIuIElmIHRoZSBoZWFkZXIgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBtZXNzYWdlLCB0aGlzIG1ldGhvZCBNVVNUCiAgICAgKiAgICByZXR1cm4gYW4gZW1wdHkgYXJyYXkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIZWFkZXIoc3RyaW5nICRuYW1lKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZXMgYSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5nIG9mIHRoZSB2YWx1ZXMgZm9yIGEgc2luZ2xlIGhlYWRlci4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGFsbCBvZiB0aGUgaGVhZGVyIHZhbHVlcyBvZiB0aGUgZ2l2ZW4KICAgICAqIGNhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIG5hbWUgYXMgYSBzdHJpbmcgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyIHVzaW5nCiAgICAgKiBhIGNvbW1hLgogICAgICoKICAgICAqIE5PVEU6IE5vdCBhbGwgaGVhZGVyIHZhbHVlcyBtYXkgYmUgYXBwcm9wcmlhdGVseSByZXByZXNlbnRlZCB1c2luZwogICAgICogY29tbWEgY29uY2F0ZW5hdGlvbi4gRm9yIHN1Y2ggaGVhZGVycywgdXNlIGdldEhlYWRlcigpIGluc3RlYWQKICAgICAqIGFuZCBzdXBwbHkgeW91ciBvd24gZGVsaW1pdGVyIHdoZW4gY29uY2F0ZW5hdGluZy4KICAgICAqCiAgICAgKiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbiB0aGUgbWVzc2FnZSwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4KICAgICAqIGFuIGVtcHR5IHN0cmluZy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUuCiAgICAgKiBAcmV0dXJuIHN0cmluZyBBIHN0cmluZyBvZiB2YWx1ZXMgYXMgcHJvdmlkZWQgZm9yIHRoZSBnaXZlbiBoZWFkZXIKICAgICAqICAgIGNvbmNhdGVuYXRlZCB0b2dldGhlciB1c2luZyBhIGNvbW1hLiBJZiB0aGUgaGVhZGVyIGRvZXMgbm90IGFwcGVhciBpbgogICAgICogICAgdGhlIG1lc3NhZ2UsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlckxpbmUoc3RyaW5nICRuYW1lKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIHZhbHVlIHJlcGxhY2luZyB0aGUgc3BlY2lmaWVkIGhlYWRlci4KICAgICAqCiAgICAgKiBXaGlsZSBoZWFkZXIgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUsIHRoZSBjYXNpbmcgb2YgdGhlIGhlYWRlciB3aWxsCiAgICAgKiBiZSBwcmVzZXJ2ZWQgYnkgdGhpcyBmdW5jdGlvbiwgYW5kIHJldHVybmVkIGZyb20gZ2V0SGVhZGVycygpLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIG5ldyBhbmQvb3IgdXBkYXRlZCBoZWFkZXIgYW5kIHZhbHVlLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgQ2FzZS1pbnNlbnNpdGl2ZSBoZWFkZXIgZmllbGQgbmFtZS4KICAgICAqIEBwYXJhbSBzdHJpbmd8c3RyaW5nW10gJHZhbHVlIEhlYWRlciB2YWx1ZShzKS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgaGVhZGVyIG5hbWVzIG9yIHZhbHVlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhIZWFkZXIoc3RyaW5nICRuYW1lLCAkdmFsdWUpOiBNZXNzYWdlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBoZWFkZXIgYXBwZW5kZWQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCiAgICAgKgogICAgICogRXhpc3RpbmcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGhlYWRlciB3aWxsIGJlIG1haW50YWluZWQuIFRoZSBuZXcKICAgICAqIHZhbHVlKHMpIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGV4aXN0aW5nIGxpc3QuIElmIHRoZSBoZWFkZXIgZGlkIG5vdAogICAgICogZXhpc3QgcHJldmlvdXNseSwgaXQgd2lsbCBiZSBhZGRlZC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBuZXcgaGVhZGVyIGFuZC9vciB2YWx1ZS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUgdG8gYWRkLgogICAgICogQHBhcmFtIHN0cmluZ3xzdHJpbmdbXSAkdmFsdWUgSGVhZGVyIHZhbHVlKHMpLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBoZWFkZXIgbmFtZXMgb3IgdmFsdWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEFkZGVkSGVhZGVyKHN0cmluZyAkbmFtZSwgJHZhbHVlKTogTWVzc2FnZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRob3V0IHRoZSBzcGVjaWZpZWQgaGVhZGVyLgogICAgICoKICAgICAqIEhlYWRlciByZXNvbHV0aW9uIE1VU1QgYmUgZG9uZSB3aXRob3V0IGNhc2Utc2Vuc2l0aXZpdHkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgcmVtb3ZlcwogICAgICogdGhlIG5hbWVkIGhlYWRlci4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRuYW1lIENhc2UtaW5zZW5zaXRpdmUgaGVhZGVyIGZpZWxkIG5hbWUgdG8gcmVtb3ZlLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRIZWFkZXIoc3RyaW5nICRuYW1lKTogTWVzc2FnZUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIEdldHMgdGhlIGJvZHkgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKgogICAgICogQHJldHVybiBTdHJlYW1JbnRlcmZhY2UgUmV0dXJucyB0aGUgYm9keSBhcyBhIHN0cmVhbS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvZHkoKTogU3RyZWFtSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBtZXNzYWdlIGJvZHkuCiAgICAgKgogICAgICogVGhlIGJvZHkgTVVTVCBiZSBhIFN0cmVhbUludGVyZmFjZSBvYmplY3QuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGEgbmV3IGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogbmV3IGJvZHkgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBTdHJlYW1JbnRlcmZhY2UgJGJvZHkgQm9keS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gV2hlbiB0aGUgYm9keSBpcyBub3QgdmFsaWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQm9keShTdHJlYW1JbnRlcmZhY2UgJGJvZHkpOiBNZXNzYWdlSW50ZXJmYWNlOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/RequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBjbGllbnQtc2lkZSByZXF1ZXN0LgogKgogKiBQZXIgdGhlIEhUVFAgc3BlY2lmaWNhdGlvbiwgdGhpcyBpbnRlcmZhY2UgaW5jbHVkZXMgcHJvcGVydGllcyBmb3IKICogZWFjaCBvZiB0aGUgZm9sbG93aW5nOgogKgogKiAtIFByb3RvY29sIHZlcnNpb24KICogLSBIVFRQIG1ldGhvZAogKiAtIFVSSQogKiAtIEhlYWRlcnMKICogLSBNZXNzYWdlIGJvZHkKICoKICogRHVyaW5nIGNvbnN0cnVjdGlvbiwgaW1wbGVtZW50YXRpb25zIE1VU1QgYXR0ZW1wdCB0byBzZXQgdGhlIEhvc3QgaGVhZGVyIGZyb20KICogYSBwcm92aWRlZCBVUkkgaWYgbm8gSG9zdCBoZWFkZXIgaXMgcHJvdmlkZWQuCiAqCiAqIFJlcXVlc3RzIGFyZSBjb25zaWRlcmVkIGltbXV0YWJsZTsgYWxsIG1ldGhvZHMgdGhhdCBtaWdodCBjaGFuZ2Ugc3RhdGUgTVVTVAogKiBiZSBpbXBsZW1lbnRlZCBzdWNoIHRoYXQgdGhleSByZXRhaW4gdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBjdXJyZW50CiAqIG1lc3NhZ2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFJlcXVlc3RJbnRlcmZhY2UgZXh0ZW5kcyBNZXNzYWdlSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdCB0YXJnZXQuCiAgICAgKgogICAgICogUmV0cmlldmVzIHRoZSBtZXNzYWdlJ3MgcmVxdWVzdC10YXJnZXQgZWl0aGVyIGFzIGl0IHdpbGwgYXBwZWFyIChmb3IKICAgICAqIGNsaWVudHMpLCBhcyBpdCBhcHBlYXJlZCBhdCByZXF1ZXN0IChmb3Igc2VydmVycyksIG9yIGFzIGl0IHdhcwogICAgICogc3BlY2lmaWVkIGZvciB0aGUgaW5zdGFuY2UgKHNlZSB3aXRoUmVxdWVzdFRhcmdldCgpKS4KICAgICAqCiAgICAgKiBJbiBtb3N0IGNhc2VzLCB0aGlzIHdpbGwgYmUgdGhlIG9yaWdpbi1mb3JtIG9mIHRoZSBjb21wb3NlZCBVUkksCiAgICAgKiB1bmxlc3MgYSB2YWx1ZSB3YXMgcHJvdmlkZWQgdG8gdGhlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9uIChzZWUKICAgICAqIHdpdGhSZXF1ZXN0VGFyZ2V0KCkgYmVsb3cpLgogICAgICoKICAgICAqIElmIG5vIFVSSSBpcyBhdmFpbGFibGUsIGFuZCBubyByZXF1ZXN0LXRhcmdldCBoYXMgYmVlbiBzcGVjaWZpY2FsbHkKICAgICAqIHByb3ZpZGVkLCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiB0aGUgc3RyaW5nICIvIi4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UmVxdWVzdFRhcmdldCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWMgcmVxdWVzdC10YXJnZXQuCiAgICAgKgogICAgICogSWYgdGhlIHJlcXVlc3QgbmVlZHMgYSBub24tb3JpZ2luLWZvcm0gcmVxdWVzdC10YXJnZXQg4oCUIGUuZy4sIGZvcgogICAgICogc3BlY2lmeWluZyBhbiBhYnNvbHV0ZS1mb3JtLCBhdXRob3JpdHktZm9ybSwgb3IgYXN0ZXJpc2stZm9ybSDigJQKICAgICAqIHRoaXMgbWV0aG9kIG1heSBiZSB1c2VkIHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQKICAgICAqIHJlcXVlc3QtdGFyZ2V0LCB2ZXJiYXRpbS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBjaGFuZ2VkIHJlcXVlc3QgdGFyZ2V0LgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi01LjMgKGZvciB0aGUgdmFyaW91cwogICAgICogICAgIHJlcXVlc3QtdGFyZ2V0IGZvcm1zIGFsbG93ZWQgaW4gcmVxdWVzdCBtZXNzYWdlcykKICAgICAqIEBwYXJhbSBzdHJpbmcgJHJlcXVlc3RUYXJnZXQKICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoUmVxdWVzdFRhcmdldChzdHJpbmcgJHJlcXVlc3RUYXJnZXQpOiBSZXF1ZXN0SW50ZXJmYWNlOwoKCiAgICAvKioKICAgICAqIFJldHJpZXZlcyB0aGUgSFRUUCBtZXRob2Qgb2YgdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcgUmV0dXJucyB0aGUgcmVxdWVzdCBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNZXRob2QoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHByb3ZpZGVkIEhUVFAgbWV0aG9kLgogICAgICoKICAgICAqIFdoaWxlIEhUVFAgbWV0aG9kIG5hbWVzIGFyZSB0eXBpY2FsbHkgYWxsIHVwcGVyY2FzZSBjaGFyYWN0ZXJzLCBIVFRQCiAgICAgKiBtZXRob2QgbmFtZXMgYXJlIGNhc2Utc2Vuc2l0aXZlIGFuZCB0aHVzIGltcGxlbWVudGF0aW9ucyBTSE9VTEQgTk9UCiAgICAgKiBtb2RpZnkgdGhlIGdpdmVuIHN0cmluZy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBjaGFuZ2VkIHJlcXVlc3QgbWV0aG9kLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJG1ldGhvZCBDYXNlLXNlbnNpdGl2ZSBtZXRob2QuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvciBpbnZhbGlkIEhUVFAgbWV0aG9kcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhNZXRob2Qoc3RyaW5nICRtZXRob2QpOiBSZXF1ZXN0SW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0cmlldmVzIHRoZSBVUkkgaW5zdGFuY2UuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYSBVcmlJbnRlcmZhY2UgaW5zdGFuY2UuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTQuMwogICAgICogQHJldHVybiBVcmlJbnRlcmZhY2UgUmV0dXJucyBhIFVyaUludGVyZmFjZSBpbnN0YW5jZQogICAgICogICAgIHJlcHJlc2VudGluZyB0aGUgVVJJIG9mIHRoZSByZXF1ZXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXJpKCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gaW5zdGFuY2Ugd2l0aCB0aGUgcHJvdmlkZWQgVVJJLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgdXBkYXRlIHRoZSBIb3N0IGhlYWRlciBvZiB0aGUgcmV0dXJuZWQgcmVxdWVzdCBieQogICAgICogZGVmYXVsdCBpZiB0aGUgVVJJIGNvbnRhaW5zIGEgaG9zdCBjb21wb25lbnQuIElmIHRoZSBVUkkgZG9lcyBub3QKICAgICAqIGNvbnRhaW4gYSBob3N0IGNvbXBvbmVudCwgYW55IHByZS1leGlzdGluZyBIb3N0IGhlYWRlciBNVVNUIGJlIGNhcnJpZWQKICAgICAqIG92ZXIgdG8gdGhlIHJldHVybmVkIHJlcXVlc3QuCiAgICAgKgogICAgICogWW91IGNhbiBvcHQtaW4gdG8gcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgc3RhdGUgb2YgdGhlIEhvc3QgaGVhZGVyIGJ5CiAgICAgKiBzZXR0aW5nIGAkcHJlc2VydmVIb3N0YCB0byBgdHJ1ZWAuIFdoZW4gYCRwcmVzZXJ2ZUhvc3RgIGlzIHNldCB0bwogICAgICogYHRydWVgLCB0aGlzIG1ldGhvZCBpbnRlcmFjdHMgd2l0aCB0aGUgSG9zdCBoZWFkZXIgaW4gdGhlIGZvbGxvd2luZyB3YXlzOgogICAgICoKICAgICAqIC0gSWYgdGhlIEhvc3QgaGVhZGVyIGlzIG1pc3Npbmcgb3IgZW1wdHksIGFuZCB0aGUgbmV3IFVSSSBjb250YWlucwogICAgICogICBhIGhvc3QgY29tcG9uZW50LCB0aGlzIG1ldGhvZCBNVVNUIHVwZGF0ZSB0aGUgSG9zdCBoZWFkZXIgaW4gdGhlIHJldHVybmVkCiAgICAgKiAgIHJlcXVlc3QuCiAgICAgKiAtIElmIHRoZSBIb3N0IGhlYWRlciBpcyBtaXNzaW5nIG9yIGVtcHR5LCBhbmQgdGhlIG5ldyBVUkkgZG9lcyBub3QgY29udGFpbiBhCiAgICAgKiAgIGhvc3QgY29tcG9uZW50LCB0aGlzIG1ldGhvZCBNVVNUIE5PVCB1cGRhdGUgdGhlIEhvc3QgaGVhZGVyIGluIHRoZSByZXR1cm5lZAogICAgICogICByZXF1ZXN0LgogICAgICogLSBJZiBhIEhvc3QgaGVhZGVyIGlzIHByZXNlbnQgYW5kIG5vbi1lbXB0eSwgdGhpcyBtZXRob2QgTVVTVCBOT1QgdXBkYXRlCiAgICAgKiAgIHRoZSBIb3N0IGhlYWRlciBpbiB0aGUgcmV0dXJuZWQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiBuZXcgVXJpSW50ZXJmYWNlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi00LjMKICAgICAqIEBwYXJhbSBVcmlJbnRlcmZhY2UgJHVyaSBOZXcgcmVxdWVzdCBVUkkgdG8gdXNlLgogICAgICogQHBhcmFtIGJvb2wgJHByZXNlcnZlSG9zdCBQcmVzZXJ2ZSB0aGUgb3JpZ2luYWwgc3RhdGUgb2YgdGhlIEhvc3QgaGVhZGVyLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVcmkoVXJpSW50ZXJmYWNlICR1cmksIGJvb2wgJHByZXNlcnZlSG9zdCA9IGZhbHNlKTogUmVxdWVzdEludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/ResponseInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIG91dGdvaW5nLCBzZXJ2ZXItc2lkZSByZXNwb25zZS4KICoKICogUGVyIHRoZSBIVFRQIHNwZWNpZmljYXRpb24sIHRoaXMgaW50ZXJmYWNlIGluY2x1ZGVzIHByb3BlcnRpZXMgZm9yCiAqIGVhY2ggb2YgdGhlIGZvbGxvd2luZzoKICoKICogLSBQcm90b2NvbCB2ZXJzaW9uCiAqIC0gU3RhdHVzIGNvZGUgYW5kIHJlYXNvbiBwaHJhc2UKICogLSBIZWFkZXJzCiAqIC0gTWVzc2FnZSBib2R5CiAqCiAqIFJlc3BvbnNlcyBhcmUgY29uc2lkZXJlZCBpbW11dGFibGU7IGFsbCBtZXRob2RzIHRoYXQgbWlnaHQgY2hhbmdlIHN0YXRlIE1VU1QKICogYmUgaW1wbGVtZW50ZWQgc3VjaCB0aGF0IHRoZXkgcmV0YWluIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgY3VycmVudAogKiBtZXNzYWdlIGFuZCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgY2hhbmdlZCBzdGF0ZS4KICovCmludGVyZmFjZSBSZXNwb25zZUludGVyZmFjZSBleHRlbmRzIE1lc3NhZ2VJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBHZXRzIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBUaGUgc3RhdHVzIGNvZGUgaXMgYSAzLWRpZ2l0IGludGVnZXIgcmVzdWx0IGNvZGUgb2YgdGhlIHNlcnZlcidzIGF0dGVtcHQKICAgICAqIHRvIHVuZGVyc3RhbmQgYW5kIHNhdGlzZnkgdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogQHJldHVybiBpbnQgU3RhdHVzIGNvZGUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdGF0dXNDb2RlKCk6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgc3RhdHVzIGNvZGUgYW5kLCBvcHRpb25hbGx5LCByZWFzb24gcGhyYXNlLgogICAgICoKICAgICAqIElmIG5vIHJlYXNvbiBwaHJhc2UgaXMgc3BlY2lmaWVkLCBpbXBsZW1lbnRhdGlvbnMgTUFZIGNob29zZSB0byBkZWZhdWx0CiAgICAgKiB0byB0aGUgUkZDIDcyMzEgb3IgSUFOQSByZWNvbW1lbmRlZCByZWFzb24gcGhyYXNlIGZvciB0aGUgcmVzcG9uc2UncwogICAgICogc3RhdHVzIGNvZGUuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBzdGF0dXMgYW5kIHJlYXNvbiBwaHJhc2UuCiAgICAgKgogICAgICogQGxpbmsgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMSNzZWN0aW9uLTYKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cuaWFuYS5vcmcvYXNzaWdubWVudHMvaHR0cC1zdGF0dXMtY29kZXMvaHR0cC1zdGF0dXMtY29kZXMueGh0bWwKICAgICAqIEBwYXJhbSBpbnQgJGNvZGUgVGhlIDMtZGlnaXQgaW50ZWdlciByZXN1bHQgY29kZSB0byBzZXQuCiAgICAgKiBAcGFyYW0gc3RyaW5nICRyZWFzb25QaHJhc2UgVGhlIHJlYXNvbiBwaHJhc2UgdG8gdXNlIHdpdGggdGhlCiAgICAgKiAgICAgcHJvdmlkZWQgc3RhdHVzIGNvZGU7IGlmIG5vbmUgaXMgcHJvdmlkZWQsIGltcGxlbWVudGF0aW9ucyBNQVkKICAgICAqICAgICB1c2UgdGhlIGRlZmF1bHRzIGFzIHN1Z2dlc3RlZCBpbiB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBGb3IgaW52YWxpZCBzdGF0dXMgY29kZSBhcmd1bWVudHMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoU3RhdHVzKGludCAkY29kZSwgc3RyaW5nICRyZWFzb25QaHJhc2UgPSAnJyk6IFJlc3BvbnNlSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogR2V0cyB0aGUgcmVzcG9uc2UgcmVhc29uIHBocmFzZSBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXR1cyBjb2RlLgogICAgICoKICAgICAqIEJlY2F1c2UgYSByZWFzb24gcGhyYXNlIGlzIG5vdCBhIHJlcXVpcmVkIGVsZW1lbnQgaW4gYSByZXNwb25zZQogICAgICogc3RhdHVzIGxpbmUsIHRoZSByZWFzb24gcGhyYXNlIHZhbHVlIE1BWSBiZSBudWxsLiBJbXBsZW1lbnRhdGlvbnMgTUFZCiAgICAgKiBjaG9vc2UgdG8gcmV0dXJuIHRoZSBkZWZhdWx0IFJGQyA3MjMxIHJlY29tbWVuZGVkIHJlYXNvbiBwaHJhc2UgKG9yIHRob3NlCiAgICAgKiBsaXN0ZWQgaW4gdGhlIElBTkEgSFRUUCBTdGF0dXMgQ29kZSBSZWdpc3RyeSkgZm9yIHRoZSByZXNwb25zZSdzCiAgICAgKiBzdGF0dXMgY29kZS4KICAgICAqCiAgICAgKiBAbGluayBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMxI3NlY3Rpb24tNgogICAgICogQGxpbmsgaHR0cDovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9odHRwLXN0YXR1cy1jb2Rlcy9odHRwLXN0YXR1cy1jb2Rlcy54aHRtbAogICAgICogQHJldHVybiBzdHJpbmcgUmVhc29uIHBocmFzZTsgbXVzdCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGlmIG5vbmUgcHJlc2VudC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFJlYXNvblBocmFzZSgpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/ServerRequestInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFJlcHJlc2VudGF0aW9uIG9mIGFuIGluY29taW5nLCBzZXJ2ZXItc2lkZSBIVFRQIHJlcXVlc3QuCiAqCiAqIFBlciB0aGUgSFRUUCBzcGVjaWZpY2F0aW9uLCB0aGlzIGludGVyZmFjZSBpbmNsdWRlcyBwcm9wZXJ0aWVzIGZvcgogKiBlYWNoIG9mIHRoZSBmb2xsb3dpbmc6CiAqCiAqIC0gUHJvdG9jb2wgdmVyc2lvbgogKiAtIEhUVFAgbWV0aG9kCiAqIC0gVVJJCiAqIC0gSGVhZGVycwogKiAtIE1lc3NhZ2UgYm9keQogKgogKiBBZGRpdGlvbmFsbHksIGl0IGVuY2Fwc3VsYXRlcyBhbGwgZGF0YSBhcyBpdCBoYXMgYXJyaXZlZCB0byB0aGUKICogYXBwbGljYXRpb24gZnJvbSB0aGUgQ0dJIGFuZC9vciBQSFAgZW52aXJvbm1lbnQsIGluY2x1ZGluZzoKICoKICogLSBUaGUgdmFsdWVzIHJlcHJlc2VudGVkIGluICRfU0VSVkVSLgogKiAtIEFueSBjb29raWVzIHByb3ZpZGVkIChnZW5lcmFsbHkgdmlhICRfQ09PS0lFKQogKiAtIFF1ZXJ5IHN0cmluZyBhcmd1bWVudHMgKGdlbmVyYWxseSB2aWEgJF9HRVQsIG9yIGFzIHBhcnNlZCB2aWEgcGFyc2Vfc3RyKCkpCiAqIC0gVXBsb2FkIGZpbGVzLCBpZiBhbnkgKGFzIHJlcHJlc2VudGVkIGJ5ICRfRklMRVMpCiAqIC0gRGVzZXJpYWxpemVkIGJvZHkgcGFyYW1ldGVycyAoZ2VuZXJhbGx5IGZyb20gJF9QT1NUKQogKgogKiAkX1NFUlZFUiB2YWx1ZXMgTVVTVCBiZSB0cmVhdGVkIGFzIGltbXV0YWJsZSwgYXMgdGhleSByZXByZXNlbnQgYXBwbGljYXRpb24KICogc3RhdGUgYXQgdGhlIHRpbWUgb2YgcmVxdWVzdDsgYXMgc3VjaCwgbm8gbWV0aG9kcyBhcmUgcHJvdmlkZWQgdG8gYWxsb3cKICogbW9kaWZpY2F0aW9uIG9mIHRob3NlIHZhbHVlcy4gVGhlIG90aGVyIHZhbHVlcyBwcm92aWRlIHN1Y2ggbWV0aG9kcywgYXMgdGhleQogKiBjYW4gYmUgcmVzdG9yZWQgZnJvbSAkX1NFUlZFUiBvciB0aGUgcmVxdWVzdCBib2R5LCBhbmQgbWF5IG5lZWQgdHJlYXRtZW50CiAqIGR1cmluZyB0aGUgYXBwbGljYXRpb24gKGUuZy4sIGJvZHkgcGFyYW1ldGVycyBtYXkgYmUgZGVzZXJpYWxpemVkIGJhc2VkIG9uCiAqIGNvbnRlbnQgdHlwZSkuCiAqCiAqIEFkZGl0aW9uYWxseSwgdGhpcyBpbnRlcmZhY2UgcmVjb2duaXplcyB0aGUgdXRpbGl0eSBvZiBpbnRyb3NwZWN0aW5nIGEKICogcmVxdWVzdCB0byBkZXJpdmUgYW5kIG1hdGNoIGFkZGl0aW9uYWwgcGFyYW1ldGVycyAoZS5nLiwgdmlhIFVSSSBwYXRoCiAqIG1hdGNoaW5nLCBkZWNyeXB0aW5nIGNvb2tpZSB2YWx1ZXMsIGRlc2VyaWFsaXppbmcgbm9uLWZvcm0tZW5jb2RlZCBib2R5CiAqIGNvbnRlbnQsIG1hdGNoaW5nIGF1dGhvcml6YXRpb24gaGVhZGVycyB0byB1c2VycywgZXRjKS4gVGhlc2UgcGFyYW1ldGVycwogKiBhcmUgc3RvcmVkIGluIGFuICJhdHRyaWJ1dGVzIiBwcm9wZXJ0eS4KICoKICogUmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0IG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUCiAqIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwgc3RhdGUgb2YgdGhlIGN1cnJlbnQKICogbWVzc2FnZSBhbmQgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIGNoYW5nZWQgc3RhdGUuCiAqLwppbnRlcmZhY2UgU2VydmVyUmVxdWVzdEludGVyZmFjZSBleHRlbmRzIFJlcXVlc3RJbnRlcmZhY2UKewogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBzZXJ2ZXIgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBSZXRyaWV2ZXMgZGF0YSByZWxhdGVkIHRvIHRoZSBpbmNvbWluZyByZXF1ZXN0IGVudmlyb25tZW50LAogICAgICogdHlwaWNhbGx5IGRlcml2ZWQgZnJvbSBQSFAncyAkX1NFUlZFUiBzdXBlcmdsb2JhbC4gVGhlIGRhdGEgSVMgTk9UCiAgICAgKiBSRVFVSVJFRCB0byBvcmlnaW5hdGUgZnJvbSAkX1NFUlZFUi4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXJ2ZXJQYXJhbXMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBjb29raWVzLgogICAgICoKICAgICAqIFJldHJpZXZlcyBjb29raWVzIHNlbnQgYnkgdGhlIGNsaWVudCB0byB0aGUgc2VydmVyLgogICAgICoKICAgICAqIFRoZSBkYXRhIE1VU1QgYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlICRfQ09PS0lFCiAgICAgKiBzdXBlcmdsb2JhbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb29raWVQYXJhbXMoKTogYXJyYXk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGNvb2tpZXMuCiAgICAgKgogICAgICogVGhlIGRhdGEgSVMgTk9UIFJFUVVJUkVEIHRvIGNvbWUgZnJvbSB0aGUgJF9DT09LSUUgc3VwZXJnbG9iYWwsIGJ1dCBNVVNUCiAgICAgKiBiZSBjb21wYXRpYmxlIHdpdGggdGhlIHN0cnVjdHVyZSBvZiAkX0NPT0tJRS4gVHlwaWNhbGx5LCB0aGlzIGRhdGEgd2lsbAogICAgICogYmUgaW5qZWN0ZWQgYXQgaW5zdGFudGlhdGlvbi4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIE5PVCB1cGRhdGUgdGhlIHJlbGF0ZWQgQ29va2llIGhlYWRlciBvZiB0aGUgcmVxdWVzdAogICAgICogaW5zdGFuY2UsIG5vciByZWxhdGVkIHZhbHVlcyBpbiB0aGUgc2VydmVyIHBhcmFtcy4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIGJlIGltcGxlbWVudGVkIGluIHN1Y2ggYSB3YXkgYXMgdG8gcmV0YWluIHRoZQogICAgICogaW1tdXRhYmlsaXR5IG9mIHRoZSBtZXNzYWdlLCBhbmQgTVVTVCByZXR1cm4gYW4gaW5zdGFuY2UgdGhhdCBoYXMgdGhlCiAgICAgKiB1cGRhdGVkIGNvb2tpZSB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICRjb29raWVzIEFycmF5IG9mIGtleS92YWx1ZSBwYWlycyByZXByZXNlbnRpbmcgY29va2llcy4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQ29va2llUGFyYW1zKGFycmF5ICRjb29raWVzKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMuCiAgICAgKgogICAgICogUmV0cmlldmVzIHRoZSBkZXNlcmlhbGl6ZWQgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cywgaWYgYW55LgogICAgICoKICAgICAqIE5vdGU6IHRoZSBxdWVyeSBwYXJhbXMgbWlnaHQgbm90IGJlIGluIHN5bmMgd2l0aCB0aGUgVVJJIG9yIHNlcnZlcgogICAgICogcGFyYW1zLiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgeW91IGFyZSBvbmx5IGdldHRpbmcgdGhlIG9yaWdpbmFsCiAgICAgKiB2YWx1ZXMsIHlvdSBtYXkgbmVlZCB0byBwYXJzZSB0aGUgcXVlcnkgc3RyaW5nIGZyb20gYGdldFVyaSgpLT5nZXRRdWVyeSgpYAogICAgICogb3IgZnJvbSB0aGUgYFFVRVJZX1NUUklOR2Agc2VydmVyIHBhcmFtLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcgYXJndW1lbnRzLgogICAgICoKICAgICAqIFRoZXNlIHZhbHVlcyBTSE9VTEQgcmVtYWluIGltbXV0YWJsZSBvdmVyIHRoZSBjb3Vyc2Ugb2YgdGhlIGluY29taW5nCiAgICAgKiByZXF1ZXN0LiBUaGV5IE1BWSBiZSBpbmplY3RlZCBkdXJpbmcgaW5zdGFudGlhdGlvbiwgc3VjaCBhcyBmcm9tIFBIUCdzCiAgICAgKiAkX0dFVCBzdXBlcmdsb2JhbCwgb3IgTUFZIGJlIGRlcml2ZWQgZnJvbSBzb21lIG90aGVyIHZhbHVlIHN1Y2ggYXMgdGhlCiAgICAgKiBVUkkuIEluIGNhc2VzIHdoZXJlIHRoZSBhcmd1bWVudHMgYXJlIHBhcnNlZCBmcm9tIHRoZSBVUkksIHRoZSBkYXRhCiAgICAgKiBNVVNUIGJlIGNvbXBhdGlibGUgd2l0aCB3aGF0IFBIUCdzIHBhcnNlX3N0cigpIHdvdWxkIHJldHVybiBmb3IKICAgICAqIHB1cnBvc2VzIG9mIGhvdyBkdXBsaWNhdGUgcXVlcnkgcGFyYW1ldGVycyBhcmUgaGFuZGxlZCwgYW5kIGhvdyBuZXN0ZWQKICAgICAqIHNldHMgYXJlIGhhbmRsZWQuCiAgICAgKgogICAgICogU2V0dGluZyBxdWVyeSBzdHJpbmcgYXJndW1lbnRzIE1VU1QgTk9UIGNoYW5nZSB0aGUgVVJJIHN0b3JlZCBieSB0aGUKICAgICAqIHJlcXVlc3QsIG5vciB0aGUgdmFsdWVzIGluIHRoZSBzZXJ2ZXIgcGFyYW1zLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgcXVlcnkgc3RyaW5nIGFyZ3VtZW50cy4KICAgICAqCiAgICAgKiBAcGFyYW0gYXJyYXkgJHF1ZXJ5IEFycmF5IG9mIHF1ZXJ5IHN0cmluZyBhcmd1bWVudHMsIHR5cGljYWxseSBmcm9tCiAgICAgKiAgICAgJF9HRVQuCiAgICAgKiBAcmV0dXJuIHN0YXRpYwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFF1ZXJ5UGFyYW1zKGFycmF5ICRxdWVyeSk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBub3JtYWxpemVkIGZpbGUgdXBsb2FkIGRhdGEuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB1cGxvYWQgbWV0YWRhdGEgaW4gYSBub3JtYWxpemVkIHRyZWUsIHdpdGggZWFjaCBsZWFmCiAgICAgKiBhbiBpbnN0YW5jZSBvZiBQc3JcSHR0cFxNZXNzYWdlXFVwbG9hZGVkRmlsZUludGVyZmFjZS4KICAgICAqCiAgICAgKiBUaGVzZSB2YWx1ZXMgTUFZIGJlIHByZXBhcmVkIGZyb20gJF9GSUxFUyBvciB0aGUgbWVzc2FnZSBib2R5IGR1cmluZwogICAgICogaW5zdGFudGlhdGlvbiwgb3IgTUFZIGJlIGluamVjdGVkIHZpYSB3aXRoVXBsb2FkZWRGaWxlcygpLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQW4gYXJyYXkgdHJlZSBvZiBVcGxvYWRlZEZpbGVJbnRlcmZhY2UgaW5zdGFuY2VzOyBhbiBlbXB0eQogICAgICogICAgIGFycmF5IE1VU1QgYmUgcmV0dXJuZWQgaWYgbm8gZGF0YSBpcyBwcmVzZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VXBsb2FkZWRGaWxlcygpOiBhcnJheTsKCiAgICAvKioKICAgICAqIENyZWF0ZSBhIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXBsb2FkZWQgZmlsZXMuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBib2R5IHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHBhcmFtIGFycmF5ICR1cGxvYWRlZEZpbGVzIEFuIGFycmF5IHRyZWUgb2YgVXBsb2FkZWRGaWxlSW50ZXJmYWNlIGluc3RhbmNlcy4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gaW52YWxpZCBzdHJ1Y3R1cmUgaXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoVXBsb2FkZWRGaWxlcyhhcnJheSAkdXBsb2FkZWRGaWxlcyk6IFNlcnZlclJlcXVlc3RJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSBhbnkgcGFyYW1ldGVycyBwcm92aWRlZCBpbiB0aGUgcmVxdWVzdCBib2R5LgogICAgICoKICAgICAqIElmIHRoZSByZXF1ZXN0IENvbnRlbnQtVHlwZSBpcyBlaXRoZXIgYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkCiAgICAgKiBvciBtdWx0aXBhcnQvZm9ybS1kYXRhLCBhbmQgdGhlIHJlcXVlc3QgbWV0aG9kIGlzIFBPU1QsIHRoaXMgbWV0aG9kIE1VU1QKICAgICAqIHJldHVybiB0aGUgY29udGVudHMgb2YgJF9QT1NULgogICAgICoKICAgICAqIE90aGVyd2lzZSwgdGhpcyBtZXRob2QgbWF5IHJldHVybiBhbnkgcmVzdWx0cyBvZiBkZXNlcmlhbGl6aW5nCiAgICAgKiB0aGUgcmVxdWVzdCBib2R5IGNvbnRlbnQ7IGFzIHBhcnNpbmcgcmV0dXJucyBzdHJ1Y3R1cmVkIGNvbnRlbnQsIHRoZQogICAgICogcG90ZW50aWFsIHR5cGVzIE1VU1QgYmUgYXJyYXlzIG9yIG9iamVjdHMgb25seS4gQSBudWxsIHZhbHVlIGluZGljYXRlcwogICAgICogdGhlIGFic2VuY2Ugb2YgYm9keSBjb250ZW50LgogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxhcnJheXxvYmplY3QgVGhlIGRlc2VyaWFsaXplZCBib2R5IHBhcmFtZXRlcnMsIGlmIGFueS4KICAgICAqICAgICBUaGVzZSB3aWxsIHR5cGljYWxseSBiZSBhbiBhcnJheSBvciBvYmplY3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXJzZWRCb2R5KCk7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGJvZHkgcGFyYW1ldGVycy4KICAgICAqCiAgICAgKiBUaGVzZSBNQVkgYmUgaW5qZWN0ZWQgZHVyaW5nIGluc3RhbnRpYXRpb24uCiAgICAgKgogICAgICogSWYgdGhlIHJlcXVlc3QgQ29udGVudC1UeXBlIGlzIGVpdGhlciBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQKICAgICAqIG9yIG11bHRpcGFydC9mb3JtLWRhdGEsIGFuZCB0aGUgcmVxdWVzdCBtZXRob2QgaXMgUE9TVCwgdXNlIHRoaXMgbWV0aG9kCiAgICAgKiBPTkxZIHRvIGluamVjdCB0aGUgY29udGVudHMgb2YgJF9QT1NULgogICAgICoKICAgICAqIFRoZSBkYXRhIElTIE5PVCBSRVFVSVJFRCB0byBjb21lIGZyb20gJF9QT1NULCBidXQgTVVTVCBiZSB0aGUgcmVzdWx0cyBvZgogICAgICogZGVzZXJpYWxpemluZyB0aGUgcmVxdWVzdCBib2R5IGNvbnRlbnQuIERlc2VyaWFsaXphdGlvbi9wYXJzaW5nIHJldHVybnMKICAgICAqIHN0cnVjdHVyZWQgZGF0YSwgYW5kLCBhcyBzdWNoLCB0aGlzIG1ldGhvZCBPTkxZIGFjY2VwdHMgYXJyYXlzIG9yIG9iamVjdHMsCiAgICAgKiBvciBhIG51bGwgdmFsdWUgaWYgbm90aGluZyB3YXMgYXZhaWxhYmxlIHRvIHBhcnNlLgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIGNvbnRlbnQgbmVnb3RpYXRpb24gZGV0ZXJtaW5lcyB0aGF0IHRoZSByZXF1ZXN0IGRhdGEKICAgICAqIGlzIGEgSlNPTiBwYXlsb2FkLCB0aGlzIG1ldGhvZCBjb3VsZCBiZSB1c2VkIHRvIGNyZWF0ZSBhIHJlcXVlc3QKICAgICAqIGluc3RhbmNlIHdpdGggdGhlIGRlc2VyaWFsaXplZCBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGhhcyB0aGUKICAgICAqIHVwZGF0ZWQgYm9keSBwYXJhbWV0ZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBudWxsfGFycmF5fG9iamVjdCAkZGF0YSBUaGUgZGVzZXJpYWxpemVkIGJvZHkgZGF0YS4gVGhpcyB3aWxsCiAgICAgKiAgICAgdHlwaWNhbGx5IGJlIGluIGFuIGFycmF5IG9yIG9iamVjdC4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gdW5zdXBwb3J0ZWQgYXJndW1lbnQgdHlwZSBpcwogICAgICogICAgIHByb3ZpZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBhcnNlZEJvZHkoJGRhdGEpOiBTZXJ2ZXJSZXF1ZXN0SW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgYXR0cmlidXRlcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3QuCiAgICAgKgogICAgICogVGhlIHJlcXVlc3QgImF0dHJpYnV0ZXMiIG1heSBiZSB1c2VkIHRvIGFsbG93IGluamVjdGlvbiBvZiBhbnkKICAgICAqIHBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIHRoZSByZXF1ZXN0OiBlLmcuLCB0aGUgcmVzdWx0cyBvZiBwYXRoCiAgICAgKiBtYXRjaCBvcGVyYXRpb25zOyB0aGUgcmVzdWx0cyBvZiBkZWNyeXB0aW5nIGNvb2tpZXM7IHRoZSByZXN1bHRzIG9mCiAgICAgKiBkZXNlcmlhbGl6aW5nIG5vbi1mb3JtLWVuY29kZWQgbWVzc2FnZSBib2RpZXM7IGV0Yy4gQXR0cmlidXRlcwogICAgICogd2lsbCBiZSBhcHBsaWNhdGlvbiBhbmQgcmVxdWVzdCBzcGVjaWZpYywgYW5kIENBTiBiZSBtdXRhYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYXJyYXkgQXR0cmlidXRlcyBkZXJpdmVkIGZyb20gdGhlIHJlcXVlc3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGVzKCk6IGFycmF5OwoKICAgIC8qKgogICAgICogUmV0cmlldmUgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZS4KICAgICAqCiAgICAgKiBSZXRyaWV2ZXMgYSBzaW5nbGUgZGVyaXZlZCByZXF1ZXN0IGF0dHJpYnV0ZSBhcyBkZXNjcmliZWQgaW4KICAgICAqIGdldEF0dHJpYnV0ZXMoKS4gSWYgdGhlIGF0dHJpYnV0ZSBoYXMgbm90IGJlZW4gcHJldmlvdXNseSBzZXQsIHJldHVybnMKICAgICAqIHRoZSBkZWZhdWx0IHZhbHVlIGFzIHByb3ZpZGVkLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIG9idmlhdGVzIHRoZSBuZWVkIGZvciBhIGhhc0F0dHJpYnV0ZSgpIG1ldGhvZCwgYXMgaXQgYWxsb3dzCiAgICAgKiBzcGVjaWZ5aW5nIGEgZGVmYXVsdCB2YWx1ZSB0byByZXR1cm4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHBhcmFtIG1peGVkICRkZWZhdWx0IERlZmF1bHQgdmFsdWUgdG8gcmV0dXJuIGlmIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QuCiAgICAgKiBAcmV0dXJuIG1peGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdHRyaWJ1dGUoc3RyaW5nICRuYW1lLCAkZGVmYXVsdCA9IG51bGwpOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsbG93cyBzZXR0aW5nIGEgc2luZ2xlIGRlcml2ZWQgcmVxdWVzdCBhdHRyaWJ1dGUgYXMKICAgICAqIGRlc2NyaWJlZCBpbiBnZXRBdHRyaWJ1dGVzKCkuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCBiZSBpbXBsZW1lbnRlZCBpbiBzdWNoIGEgd2F5IGFzIHRvIHJldGFpbiB0aGUKICAgICAqIGltbXV0YWJpbGl0eSBvZiB0aGUgbWVzc2FnZSwgYW5kIE1VU1QgcmV0dXJuIGFuIGluc3RhbmNlIHRoYXQgaGFzIHRoZQogICAgICogdXBkYXRlZCBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHBhcmFtIG1peGVkICR2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS4KICAgICAqIEByZXR1cm4gc3RhdGljCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3aXRoQXR0cmlidXRlKHN0cmluZyAkbmFtZSwgJHZhbHVlKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB0aGF0IHJlbW92ZXMgdGhlIHNwZWNpZmllZCBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIGFsbG93cyByZW1vdmluZyBhIHNpbmdsZSBkZXJpdmVkIHJlcXVlc3QgYXR0cmlidXRlIGFzCiAgICAgKiBkZXNjcmliZWQgaW4gZ2V0QXR0cmlidXRlcygpLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYmUgaW1wbGVtZW50ZWQgaW4gc3VjaCBhIHdheSBhcyB0byByZXRhaW4gdGhlCiAgICAgKiBpbW11dGFiaWxpdHkgb2YgdGhlIG1lc3NhZ2UsIGFuZCBNVVNUIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IHJlbW92ZXMKICAgICAqIHRoZSBhdHRyaWJ1dGUuCiAgICAgKgogICAgICogQHNlZSBnZXRBdHRyaWJ1dGVzKCkKICAgICAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgVGhlIGF0dHJpYnV0ZSBuYW1lLgogICAgICogQHJldHVybiBzdGF0aWMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhvdXRBdHRyaWJ1dGUoc3RyaW5nICRuYW1lKTogU2VydmVyUmVxdWVzdEludGVyZmFjZTsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/StreamInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIERlc2NyaWJlcyBhIGRhdGEgc3RyZWFtLgogKgogKiBUeXBpY2FsbHksIGFuIGluc3RhbmNlIHdpbGwgd3JhcCBhIFBIUCBzdHJlYW07IHRoaXMgaW50ZXJmYWNlIHByb3ZpZGVzCiAqIGEgd3JhcHBlciBhcm91bmQgdGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbnMsIGluY2x1ZGluZyBzZXJpYWxpemF0aW9uIG9mCiAqIHRoZSBlbnRpcmUgc3RyZWFtIHRvIGEgc3RyaW5nLgogKi8KaW50ZXJmYWNlIFN0cmVhbUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJlYWRzIGFsbCBkYXRhIGZyb20gdGhlIHN0cmVhbSBpbnRvIGEgc3RyaW5nLCBmcm9tIHRoZSBiZWdpbm5pbmcgdG8gZW5kLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgYXR0ZW1wdCB0byBzZWVrIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbSBiZWZvcmUKICAgICAqIHJlYWRpbmcgZGF0YSBhbmQgcmVhZCB0aGUgc3RyZWFtIHVudGlsIHRoZSBlbmQgaXMgcmVhY2hlZC4KICAgICAqCiAgICAgKiBXYXJuaW5nOiBUaGlzIGNvdWxkIGF0dGVtcHQgdG8gbG9hZCBhIGxhcmdlIGFtb3VudCBvZiBkYXRhIGludG8gbWVtb3J5LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgTk9UIHJhaXNlIGFuIGV4Y2VwdGlvbiBpbiBvcmRlciB0byBjb25mb3JtIHdpdGggUEhQJ3MKICAgICAqIHN0cmluZyBjYXN0aW5nIG9wZXJhdGlvbnMuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vbGFuZ3VhZ2Uub29wNS5tYWdpYy5waHAjb2JqZWN0LnRvc3RyaW5nCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBDbG9zZXMgdGhlIHN0cmVhbSBhbmQgYW55IHVuZGVybHlpbmcgcmVzb3VyY2VzLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY2xvc2UoKTogdm9pZDsKCiAgICAvKioKICAgICAqIFNlcGFyYXRlcyBhbnkgdW5kZXJseWluZyByZXNvdXJjZXMgZnJvbSB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEFmdGVyIHRoZSBzdHJlYW0gaGFzIGJlZW4gZGV0YWNoZWQsIHRoZSBzdHJlYW0gaXMgaW4gYW4gdW51c2FibGUgc3RhdGUuCiAgICAgKgogICAgICogQHJldHVybiByZXNvdXJjZXxudWxsIFVuZGVybHlpbmcgUEhQIHN0cmVhbSwgaWYgYW55CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBkZXRhY2goKTsKCiAgICAvKioKICAgICAqIEdldCB0aGUgc2l6ZSBvZiB0aGUgc3RyZWFtIGlmIGtub3duLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwgUmV0dXJucyB0aGUgc2l6ZSBpbiBieXRlcyBpZiBrbm93biwgb3IgbnVsbCBpZiB1bmtub3duLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiA/aW50OwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgZmlsZSByZWFkL3dyaXRlIHBvaW50ZXIKICAgICAqCiAgICAgKiBAcmV0dXJuIGludCBQb3NpdGlvbiBvZiB0aGUgZmlsZSBwb2ludGVyCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGVycm9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdGVsbCgpOiBpbnQ7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHN0cmVhbSBpcyBhdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQHJldHVybiBib29sCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlb2YoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyBzZWVrYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzU2Vla2FibGUoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFNlZWsgdG8gYSBwb3NpdGlvbiBpbiB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly93d3cucGhwLm5ldC9tYW51YWwvZW4vZnVuY3Rpb24uZnNlZWsucGhwCiAgICAgKiBAcGFyYW0gaW50ICRvZmZzZXQgU3RyZWFtIG9mZnNldAogICAgICogQHBhcmFtIGludCAkd2hlbmNlIFNwZWNpZmllcyBob3cgdGhlIGN1cnNvciBwb3NpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQKICAgICAqICAgICBiYXNlZCBvbiB0aGUgc2VlayBvZmZzZXQuIFZhbGlkIHZhbHVlcyBhcmUgaWRlbnRpY2FsIHRvIHRoZSBidWlsdC1pbgogICAgICogICAgIFBIUCAkd2hlbmNlIHZhbHVlcyBmb3IgYGZzZWVrKClgLiAgU0VFS19TRVQ6IFNldCBwb3NpdGlvbiBlcXVhbCB0bwogICAgICogICAgIG9mZnNldCBieXRlcyBTRUVLX0NVUjogU2V0IHBvc2l0aW9uIHRvIGN1cnJlbnQgbG9jYXRpb24gcGx1cyBvZmZzZXQKICAgICAqICAgICBTRUVLX0VORDogU2V0IHBvc2l0aW9uIHRvIGVuZC1vZi1zdHJlYW0gcGx1cyBvZmZzZXQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZWVrKGludCAkb2Zmc2V0LCBpbnQgJHdoZW5jZSA9IFNFRUtfU0VUKTogdm9pZDsKCiAgICAvKioKICAgICAqIFNlZWsgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIElmIHRoZSBzdHJlYW0gaXMgbm90IHNlZWthYmxlLCB0aGlzIG1ldGhvZCB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbjsKICAgICAqIG90aGVyd2lzZSwgaXQgd2lsbCBwZXJmb3JtIGEgc2VlaygwKS4KICAgICAqCiAgICAgKiBAc2VlIHNlZWsoKQogICAgICogQGxpbmsgaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5mc2Vlay5waHAKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gb24gZmFpbHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHJld2luZCgpOiB2b2lkOwoKICAgIC8qKgogICAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgc3RyZWFtIGlzIHdyaXRhYmxlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNXcml0YWJsZSgpOiBib29sOwoKICAgIC8qKgogICAgICogV3JpdGUgZGF0YSB0byB0aGUgc3RyZWFtLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBUaGUgc3RyaW5nIHRoYXQgaXMgdG8gYmUgd3JpdHRlbi4KICAgICAqIEByZXR1cm4gaW50IFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0uCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGZhaWx1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB3cml0ZShzdHJpbmcgJHN0cmluZyk6IGludDsKCiAgICAvKioKICAgICAqIFJldHVybnMgd2hldGhlciBvciBub3QgdGhlIHN0cmVhbSBpcyByZWFkYWJsZS4KICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUmVhZGFibGUoKTogYm9vbDsKCiAgICAvKioKICAgICAqIFJlYWQgZGF0YSBmcm9tIHRoZSBzdHJlYW0uCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbGVuZ3RoIFJlYWQgdXAgdG8gJGxlbmd0aCBieXRlcyBmcm9tIHRoZSBvYmplY3QgYW5kIHJldHVybgogICAgICogICAgIHRoZW0uIEZld2VyIHRoYW4gJGxlbmd0aCBieXRlcyBtYXkgYmUgcmV0dXJuZWQgaWYgdW5kZXJseWluZyBzdHJlYW0KICAgICAqICAgICBjYWxsIHJldHVybnMgZmV3ZXIgYnl0ZXMuCiAgICAgKiBAcmV0dXJuIHN0cmluZyBSZXR1cm5zIHRoZSBkYXRhIHJlYWQgZnJvbSB0aGUgc3RyZWFtLCBvciBhbiBlbXB0eSBzdHJpbmcKICAgICAqICAgICBpZiBubyBieXRlcyBhcmUgYXZhaWxhYmxlLgogICAgICogQHRocm93cyBcUnVudGltZUV4Y2VwdGlvbiBpZiBhbiBlcnJvciBvY2N1cnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWFkKGludCAkbGVuZ3RoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcmVtYWluaW5nIGNvbnRlbnRzIGluIGEgc3RyaW5nCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmcKICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaWYgdW5hYmxlIHRvIHJlYWQgb3IgYW4gZXJyb3Igb2NjdXJzIHdoaWxlCiAgICAgKiAgICAgcmVhZGluZy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnRzKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIEdldCBzdHJlYW0gbWV0YWRhdGEgYXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgb3IgcmV0cmlldmUgYSBzcGVjaWZpYyBrZXkuCiAgICAgKgogICAgICogVGhlIGtleXMgcmV0dXJuZWQgYXJlIGlkZW50aWNhbCB0byB0aGUga2V5cyByZXR1cm5lZCBmcm9tIFBIUCdzCiAgICAgKiBzdHJlYW1fZ2V0X21ldGFfZGF0YSgpIGZ1bmN0aW9uLgogICAgICoKICAgICAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5zdHJlYW0tZ2V0LW1ldGEtZGF0YS5waHAKICAgICAqIEBwYXJhbSBzdHJpbmd8bnVsbCAka2V5IFNwZWNpZmljIG1ldGFkYXRhIHRvIHJldHJpZXZlLgogICAgICogQHJldHVybiBhcnJheXxtaXhlZHxudWxsIFJldHVybnMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgaWYgbm8ga2V5IGlzCiAgICAgKiAgICAgcHJvdmlkZWQuIFJldHVybnMgYSBzcGVjaWZpYyBrZXkgdmFsdWUgaWYgYSBrZXkgaXMgcHJvdmlkZWQgYW5kIHRoZQogICAgICogICAgIHZhbHVlIGlzIGZvdW5kLCBvciBudWxsIGlmIHRoZSBrZXkgaXMgbm90IGZvdW5kLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TWV0YWRhdGEoP3N0cmluZyAka2V5ID0gbnVsbCk7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/UploadedFileInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFZhbHVlIG9iamVjdCByZXByZXNlbnRpbmcgYSBmaWxlIHVwbG9hZGVkIHRocm91Z2ggYW4gSFRUUCByZXF1ZXN0LgogKgogKiBJbnN0YW5jZXMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0CiAqIG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwKICogc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZQogKiBjaGFuZ2VkIHN0YXRlLgogKi8KaW50ZXJmYWNlIFVwbG9hZGVkRmlsZUludGVyZmFjZQp7CiAgICAvKioKICAgICAqIFJldHJpZXZlIGEgc3RyZWFtIHJlcHJlc2VudGluZyB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldHVybiBhIFN0cmVhbUludGVyZmFjZSBpbnN0YW5jZSwgcmVwcmVzZW50aW5nIHRoZQogICAgICogdXBsb2FkZWQgZmlsZS4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBtZXRob2QgaXMgdG8gYWxsb3cgdXRpbGl6aW5nIG5hdGl2ZSBQSFAKICAgICAqIHN0cmVhbSBmdW5jdGlvbmFsaXR5IHRvIG1hbmlwdWxhdGUgdGhlIGZpbGUgdXBsb2FkLCBzdWNoIGFzCiAgICAgKiBzdHJlYW1fY29weV90b19zdHJlYW0oKSAodGhvdWdoIHRoZSByZXN1bHQgd2lsbCBuZWVkIHRvIGJlIGRlY29yYXRlZCBpbiBhCiAgICAgKiBuYXRpdmUgUEhQIHN0cmVhbSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBzdWNoIGZ1bmN0aW9ucykuCiAgICAgKgogICAgICogSWYgdGhlIG1vdmVUbygpIG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQgcHJldmlvdXNseSwgdGhpcyBtZXRob2QgTVVTVCByYWlzZQogICAgICogYW4gZXhjZXB0aW9uLgogICAgICoKICAgICAqIEByZXR1cm4gU3RyZWFtSW50ZXJmYWNlIFN0cmVhbSByZXByZXNlbnRhdGlvbiBvZiB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqIEB0aHJvd3MgXFJ1bnRpbWVFeGNlcHRpb24gaW4gY2FzZXMgd2hlbiBubyBzdHJlYW0gaXMgYXZhaWxhYmxlIG9yIGNhbiBiZQogICAgICogICAgIGNyZWF0ZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTdHJlYW0oKTogU3RyZWFtSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogTW92ZSB0aGUgdXBsb2FkZWQgZmlsZSB0byBhIG5ldyBsb2NhdGlvbi4KICAgICAqCiAgICAgKiBVc2UgdGhpcyBtZXRob2QgYXMgYW4gYWx0ZXJuYXRpdmUgdG8gbW92ZV91cGxvYWRlZF9maWxlKCkuIFRoaXMgbWV0aG9kIGlzCiAgICAgKiBndWFyYW50ZWVkIHRvIHdvcmsgaW4gYm90aCBTQVBJIGFuZCBub24tU0FQSSBlbnZpcm9ubWVudHMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgbXVzdCBkZXRlcm1pbmUgd2hpY2ggZW52aXJvbm1lbnQgdGhleSBhcmUgaW4sIGFuZCB1c2UgdGhlCiAgICAgKiBhcHByb3ByaWF0ZSBtZXRob2QgKG1vdmVfdXBsb2FkZWRfZmlsZSgpLCByZW5hbWUoKSwgb3IgYSBzdHJlYW0KICAgICAqIG9wZXJhdGlvbikgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLgogICAgICoKICAgICAqICR0YXJnZXRQYXRoIG1heSBiZSBhbiBhYnNvbHV0ZSBwYXRoLCBvciBhIHJlbGF0aXZlIHBhdGguIElmIGl0IGlzIGEKICAgICAqIHJlbGF0aXZlIHBhdGgsIHJlc29sdXRpb24gc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHVzZWQgYnkgUEhQJ3MgcmVuYW1lKCkKICAgICAqIGZ1bmN0aW9uLgogICAgICoKICAgICAqIFRoZSBvcmlnaW5hbCBmaWxlIG9yIHN0cmVhbSBNVVNUIGJlIHJlbW92ZWQgb24gY29tcGxldGlvbi4KICAgICAqCiAgICAgKiBJZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGFueSBzdWJzZXF1ZW50IGNhbGxzIE1VU1QgcmFpc2UKICAgICAqIGFuIGV4Y2VwdGlvbi4KICAgICAqCiAgICAgKiBXaGVuIHVzZWQgaW4gYW4gU0FQSSBlbnZpcm9ubWVudCB3aGVyZSAkX0ZJTEVTIGlzIHBvcHVsYXRlZCwgd2hlbiB3cml0aW5nCiAgICAgKiBmaWxlcyB2aWEgbW92ZVRvKCksIGlzX3VwbG9hZGVkX2ZpbGUoKSBhbmQgbW92ZV91cGxvYWRlZF9maWxlKCkgU0hPVUxEIGJlCiAgICAgKiB1c2VkIHRvIGVuc3VyZSBwZXJtaXNzaW9ucyBhbmQgdXBsb2FkIHN0YXR1cyBhcmUgdmVyaWZpZWQgY29ycmVjdGx5LgogICAgICoKICAgICAqIElmIHlvdSB3aXNoIHRvIG1vdmUgdG8gYSBzdHJlYW0sIHVzZSBnZXRTdHJlYW0oKSwgYXMgU0FQSSBvcGVyYXRpb25zCiAgICAgKiBjYW5ub3QgZ3VhcmFudGVlIHdyaXRpbmcgdG8gc3RyZWFtIGRlc3RpbmF0aW9ucy4KICAgICAqCiAgICAgKiBAc2VlIGh0dHA6Ly9waHAubmV0L2lzX3VwbG9hZGVkX2ZpbGUKICAgICAqIEBzZWUgaHR0cDovL3BocC5uZXQvbW92ZV91cGxvYWRlZF9maWxlCiAgICAgKiBAcGFyYW0gc3RyaW5nICR0YXJnZXRQYXRoIFBhdGggdG8gd2hpY2ggdG8gbW92ZSB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgJHRhcmdldFBhdGggc3BlY2lmaWVkIGlzIGludmFsaWQuCiAgICAgKiBAdGhyb3dzIFxSdW50aW1lRXhjZXB0aW9uIG9uIGFueSBlcnJvciBkdXJpbmcgdGhlIG1vdmUgb3BlcmF0aW9uLCBvciBvbgogICAgICogICAgIHRoZSBzZWNvbmQgb3Igc3Vic2VxdWVudCBjYWxsIHRvIHRoZSBtZXRob2QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBtb3ZlVG8oc3RyaW5nICR0YXJnZXRQYXRoKTogdm9pZDsKICAgIAogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZmlsZSBzaXplLgogICAgICoKICAgICAqIEltcGxlbWVudGF0aW9ucyBTSE9VTEQgcmV0dXJuIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhlICJzaXplIiBrZXkgb2YKICAgICAqIHRoZSBmaWxlIGluIHRoZSAkX0ZJTEVTIGFycmF5IGlmIGF2YWlsYWJsZSwgYXMgUEhQIGNhbGN1bGF0ZXMgdGhpcyBiYXNlZAogICAgICogb24gdGhlIGFjdHVhbCBzaXplIHRyYW5zbWl0dGVkLgogICAgICoKICAgICAqIEByZXR1cm4gaW50fG51bGwgVGhlIGZpbGUgc2l6ZSBpbiBieXRlcyBvciBudWxsIGlmIHVua25vd24uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaXplKCk6ID9pbnQ7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIGVycm9yIGFzc29jaWF0ZWQgd2l0aCB0aGUgdXBsb2FkZWQgZmlsZS4KICAgICAqCiAgICAgKiBUaGUgcmV0dXJuIHZhbHVlIE1VU1QgYmUgb25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqCiAgICAgKiBJZiB0aGUgZmlsZSB3YXMgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogVVBMT0FEX0VSUl9PSy4KICAgICAqCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgU0hPVUxEIHJldHVybiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSAiZXJyb3IiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vcGhwLm5ldC9tYW51YWwvZW4vZmVhdHVyZXMuZmlsZS11cGxvYWQuZXJyb3JzLnBocAogICAgICogQHJldHVybiBpbnQgT25lIG9mIFBIUCdzIFVQTE9BRF9FUlJfWFhYIGNvbnN0YW50cy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEVycm9yKCk6IGludDsKICAgIAogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZmlsZW5hbWUgc2VudCBieSB0aGUgY2xpZW50LgogICAgICoKICAgICAqIERvIG5vdCB0cnVzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIEEgY2xpZW50IGNvdWxkIHNlbmQKICAgICAqIGEgbWFsaWNpb3VzIGZpbGVuYW1lIHdpdGggdGhlIGludGVudGlvbiB0byBjb3JydXB0IG9yIGhhY2sgeW91cgogICAgICogYXBwbGljYXRpb24uCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIFNIT1VMRCByZXR1cm4gdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgIm5hbWUiIGtleSBvZgogICAgICogdGhlIGZpbGUgaW4gdGhlICRfRklMRVMgYXJyYXkuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmd8bnVsbCBUaGUgZmlsZW5hbWUgc2VudCBieSB0aGUgY2xpZW50IG9yIG51bGwgaWYgbm9uZQogICAgICogICAgIHdhcyBwcm92aWRlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldENsaWVudEZpbGVuYW1lKCk6ID9zdHJpbmc7CiAgICAKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIG1lZGlhIHR5cGUgc2VudCBieSB0aGUgY2xpZW50LgogICAgICoKICAgICAqIERvIG5vdCB0cnVzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIEEgY2xpZW50IGNvdWxkIHNlbmQKICAgICAqIGEgbWFsaWNpb3VzIG1lZGlhIHR5cGUgd2l0aCB0aGUgaW50ZW50aW9uIHRvIGNvcnJ1cHQgb3IgaGFjayB5b3VyCiAgICAgKiBhcHBsaWNhdGlvbi4KICAgICAqCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgU0hPVUxEIHJldHVybiB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSAidHlwZSIga2V5IG9mCiAgICAgKiB0aGUgZmlsZSBpbiB0aGUgJF9GSUxFUyBhcnJheS4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ3xudWxsIFRoZSBtZWRpYSB0eXBlIHNlbnQgYnkgdGhlIGNsaWVudCBvciBudWxsIGlmIG5vbmUKICAgICAqICAgICB3YXMgcHJvdmlkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDbGllbnRNZWRpYVR5cGUoKTogP3N0cmluZzsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/psr/http-message/src/UriInterface.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCm5hbWVzcGFjZSBQc3JcSHR0cFxNZXNzYWdlOwoKLyoqCiAqIFZhbHVlIG9iamVjdCByZXByZXNlbnRpbmcgYSBVUkkuCiAqCiAqIFRoaXMgaW50ZXJmYWNlIGlzIG1lYW50IHRvIHJlcHJlc2VudCBVUklzIGFjY29yZGluZyB0byBSRkMgMzk4NiBhbmQgdG8KICogcHJvdmlkZSBtZXRob2RzIGZvciBtb3N0IGNvbW1vbiBvcGVyYXRpb25zLiBBZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkgZm9yCiAqIHdvcmtpbmcgd2l0aCBVUklzIGNhbiBiZSBwcm92aWRlZCBvbiB0b3Agb2YgdGhlIGludGVyZmFjZSBvciBleHRlcm5hbGx5LgogKiBJdHMgcHJpbWFyeSB1c2UgaXMgZm9yIEhUVFAgcmVxdWVzdHMsIGJ1dCBtYXkgYWxzbyBiZSB1c2VkIGluIG90aGVyCiAqIGNvbnRleHRzLgogKgogKiBJbnN0YW5jZXMgb2YgdGhpcyBpbnRlcmZhY2UgYXJlIGNvbnNpZGVyZWQgaW1tdXRhYmxlOyBhbGwgbWV0aG9kcyB0aGF0CiAqIG1pZ2h0IGNoYW5nZSBzdGF0ZSBNVVNUIGJlIGltcGxlbWVudGVkIHN1Y2ggdGhhdCB0aGV5IHJldGFpbiB0aGUgaW50ZXJuYWwKICogc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UgYW5kIHJldHVybiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZQogKiBjaGFuZ2VkIHN0YXRlLgogKgogKiBUeXBpY2FsbHkgdGhlIEhvc3QgaGVhZGVyIHdpbGwgYmUgYWxzbyBiZSBwcmVzZW50IGluIHRoZSByZXF1ZXN0IG1lc3NhZ2UuCiAqIEZvciBzZXJ2ZXItc2lkZSByZXF1ZXN0cywgdGhlIHNjaGVtZSB3aWxsIHR5cGljYWxseSBiZSBkaXNjb3ZlcmFibGUgaW4gdGhlCiAqIHNlcnZlciBwYXJhbWV0ZXJzLgogKgogKiBAbGluayBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2ICh0aGUgVVJJIHNwZWNpZmljYXRpb24pCiAqLwppbnRlcmZhY2UgVXJpSW50ZXJmYWNlCnsKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHNjaGVtZSBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBzY2hlbWUgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIG5vcm1hbGl6ZWQgdG8gbG93ZXJjYXNlLCBwZXIgUkZDIDM5ODYKICAgICAqIFNlY3Rpb24gMy4xLgogICAgICoKICAgICAqIFRoZSB0cmFpbGluZyAiOiIgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzY2hlbWUgYW5kIE1VU1QgTk9UIGJlCiAgICAgKiBhZGRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4xCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHNjaGVtZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFNjaGVtZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgYXV0aG9yaXR5IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIG5vIGF1dGhvcml0eSBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eQogICAgICogc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBhdXRob3JpdHkgc3ludGF4IG9mIHRoZSBVUkkgaXM6CiAgICAgKgogICAgICogPHByZT4KICAgICAqIFt1c2VyLWluZm9AXWhvc3RbOnBvcnRdCiAgICAgKiA8L3ByZT4KICAgICAqCiAgICAgKiBJZiB0aGUgcG9ydCBjb21wb25lbnQgaXMgbm90IHNldCBvciBpcyB0aGUgc3RhbmRhcmQgcG9ydCBmb3IgdGhlIGN1cnJlbnQKICAgICAqIHNjaGVtZSwgaXQgU0hPVUxEIE5PVCBiZSBpbmNsdWRlZC4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4yCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIGF1dGhvcml0eSwgaW4gIlt1c2VyLWluZm9AXWhvc3RbOnBvcnRdIiBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRBdXRob3JpdHkoKTogc3RyaW5nOwoKICAgIC8qKgogICAgICogUmV0cmlldmUgdGhlIHVzZXIgaW5mb3JtYXRpb24gY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gdXNlciBpbmZvcm1hdGlvbiBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBhbiBlbXB0eQogICAgICogc3RyaW5nLgogICAgICoKICAgICAqIElmIGEgdXNlciBpcyBwcmVzZW50IGluIHRoZSBVUkksIHRoaXMgd2lsbCByZXR1cm4gdGhhdCB2YWx1ZTsKICAgICAqIGFkZGl0aW9uYWxseSwgaWYgdGhlIHBhc3N3b3JkIGlzIGFsc28gcHJlc2VudCwgaXQgd2lsbCBiZSBhcHBlbmRlZCB0byB0aGUKICAgICAqIHVzZXIgdmFsdWUsIHdpdGggYSBjb2xvbiAoIjoiKSBzZXBhcmF0aW5nIHRoZSB2YWx1ZXMuCiAgICAgKgogICAgICogVGhlIHRyYWlsaW5nICJAIiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHVzZXIgaW5mb3JtYXRpb24gYW5kIE1VU1QKICAgICAqIE5PVCBiZSBhZGRlZC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHVzZXIgaW5mb3JtYXRpb24sIGluICJ1c2VybmFtZVs6cGFzc3dvcmRdIiBmb3JtYXQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRVc2VySW5mbygpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgaG9zdCBjb21wb25lbnQgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBob3N0IGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1VU1QgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KICAgICAqCiAgICAgKiBUaGUgdmFsdWUgcmV0dXJuZWQgTVVTVCBiZSBub3JtYWxpemVkIHRvIGxvd2VyY2FzZSwgcGVyIFJGQyAzOTg2CiAgICAgKiBTZWN0aW9uIDMuMi4yLgogICAgICoKICAgICAqIEBzZWUgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuMi4yCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIGhvc3QuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRIb3N0KCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwb3J0IGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIElmIGEgcG9ydCBpcyBwcmVzZW50LCBhbmQgaXQgaXMgbm9uLXN0YW5kYXJkIGZvciB0aGUgY3VycmVudCBzY2hlbWUsCiAgICAgKiB0aGlzIG1ldGhvZCBNVVNUIHJldHVybiBpdCBhcyBhbiBpbnRlZ2VyLiBJZiB0aGUgcG9ydCBpcyB0aGUgc3RhbmRhcmQgcG9ydAogICAgICogdXNlZCB3aXRoIHRoZSBjdXJyZW50IHNjaGVtZSwgdGhpcyBtZXRob2QgU0hPVUxEIHJldHVybiBudWxsLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYW5kIG5vIHNjaGVtZSBpcyBwcmVzZW50LCB0aGlzIG1ldGhvZCBNVVNUIHJldHVybgogICAgICogYSBudWxsIHZhbHVlLgogICAgICoKICAgICAqIElmIG5vIHBvcnQgaXMgcHJlc2VudCwgYnV0IGEgc2NoZW1lIGlzIHByZXNlbnQsIHRoaXMgbWV0aG9kIE1BWSByZXR1cm4KICAgICAqIHRoZSBzdGFuZGFyZCBwb3J0IGZvciB0aGF0IHNjaGVtZSwgYnV0IFNIT1VMRCByZXR1cm4gbnVsbC4KICAgICAqCiAgICAgKiBAcmV0dXJuIG51bGx8aW50IFRoZSBVUkkgcG9ydC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFBvcnQoKTogP2ludDsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBwYXRoIGNvbXBvbmVudCBvZiB0aGUgVVJJLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIE5vcm1hbGx5LCB0aGUgZW1wdHkgcGF0aCAiIiBhbmQgYWJzb2x1dGUgcGF0aCAiLyIgYXJlIGNvbnNpZGVyZWQgZXF1YWwgYXMKICAgICAqIGRlZmluZWQgaW4gUkZDIDcyMzAgU2VjdGlvbiAyLjcuMy4gQnV0IHRoaXMgbWV0aG9kIE1VU1QgTk9UIGF1dG9tYXRpY2FsbHkKICAgICAqIGRvIHRoaXMgbm9ybWFsaXphdGlvbiBiZWNhdXNlIGluIGNvbnRleHRzIHdpdGggYSB0cmltbWVkIGJhc2UgcGF0aCwgZS5nLgogICAgICogdGhlIGZyb250IGNvbnRyb2xsZXIsIHRoaXMgZGlmZmVyZW5jZSBiZWNvbWVzIHNpZ25pZmljYW50LiBJdCdzIHRoZSB0YXNrCiAgICAgKiBvZiB0aGUgdXNlciB0byBoYW5kbGUgYm90aCAiIiBhbmQgIi8iLgogICAgICoKICAgICAqIFRoZSB2YWx1ZSByZXR1cm5lZCBNVVNUIGJlIHBlcmNlbnQtZW5jb2RlZCwgYnV0IE1VU1QgTk9UIGRvdWJsZS1lbmNvZGUKICAgICAqIGFueSBjaGFyYWN0ZXJzLiBUbyBkZXRlcm1pbmUgd2hhdCBjaGFyYWN0ZXJzIHRvIGVuY29kZSwgcGxlYXNlIHJlZmVyIHRvCiAgICAgKiBSRkMgMzk4NiwgU2VjdGlvbnMgMiBhbmQgMy4zLgogICAgICoKICAgICAqIEFzIGFuIGV4YW1wbGUsIGlmIHRoZSB2YWx1ZSBzaG91bGQgaW5jbHVkZSBhIHNsYXNoICgiLyIpIG5vdCBpbnRlbmRlZCBhcwogICAgICogZGVsaW1pdGVyIGJldHdlZW4gcGF0aCBzZWdtZW50cywgdGhhdCB2YWx1ZSBNVVNUIGJlIHBhc3NlZCBpbiBlbmNvZGVkCiAgICAgKiBmb3JtIChlLmcuLCAiJTJGIikgdG8gdGhlIGluc3RhbmNlLgogICAgICoKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0yCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMy4zCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgVVJJIHBhdGguCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXRoKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIFJldHJpZXZlIHRoZSBxdWVyeSBzdHJpbmcgb2YgdGhlIFVSSS4KICAgICAqCiAgICAgKiBJZiBubyBxdWVyeSBzdHJpbmcgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBsZWFkaW5nICI/IiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIHF1ZXJ5IGFuZCBNVVNUIE5PVCBiZQogICAgICogYWRkZWQuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LCBTZWN0aW9ucyAyIGFuZCAzLjQuCiAgICAgKgogICAgICogQXMgYW4gZXhhbXBsZSwgaWYgYSB2YWx1ZSBpbiBhIGtleS92YWx1ZSBwYWlyIG9mIHRoZSBxdWVyeSBzdHJpbmcgc2hvdWxkCiAgICAgKiBpbmNsdWRlIGFuIGFtcGVyc2FuZCAoIiYiKSBub3QgaW50ZW5kZWQgYXMgYSBkZWxpbWl0ZXIgYmV0d2VlbiB2YWx1ZXMsCiAgICAgKiB0aGF0IHZhbHVlIE1VU1QgYmUgcGFzc2VkIGluIGVuY29kZWQgZm9ybSAoZS5nLiwgIiUyNiIpIHRvIHRoZSBpbnN0YW5jZS4KICAgICAqCiAgICAgKiBAc2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tMgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTMuNAogICAgICogQHJldHVybiBzdHJpbmcgVGhlIFVSSSBxdWVyeSBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRRdWVyeSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXRyaWV2ZSB0aGUgZnJhZ21lbnQgY29tcG9uZW50IG9mIHRoZSBVUkkuCiAgICAgKgogICAgICogSWYgbm8gZnJhZ21lbnQgaXMgcHJlc2VudCwgdGhpcyBtZXRob2QgTVVTVCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgogICAgICoKICAgICAqIFRoZSBsZWFkaW5nICIjIiBjaGFyYWN0ZXIgaXMgbm90IHBhcnQgb2YgdGhlIGZyYWdtZW50IGFuZCBNVVNUIE5PVCBiZQogICAgICogYWRkZWQuCiAgICAgKgogICAgICogVGhlIHZhbHVlIHJldHVybmVkIE1VU1QgYmUgcGVyY2VudC1lbmNvZGVkLCBidXQgTVVTVCBOT1QgZG91YmxlLWVuY29kZQogICAgICogYW55IGNoYXJhY3RlcnMuIFRvIGRldGVybWluZSB3aGF0IGNoYXJhY3RlcnMgdG8gZW5jb2RlLCBwbGVhc2UgcmVmZXIgdG8KICAgICAqIFJGQyAzOTg2LCBTZWN0aW9ucyAyIGFuZCAzLjUuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMzk4NiNzZWN0aW9uLTIKICAgICAqIEBzZWUgaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM5ODYjc2VjdGlvbi0zLjUKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBVUkkgZnJhZ21lbnQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRGcmFnbWVudCgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHNjaGVtZS4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCB0aGUgc2NoZW1lcyAiaHR0cCIgYW5kICJodHRwcyIgY2FzZQogICAgICogaW5zZW5zaXRpdmVseSwgYW5kIE1BWSBhY2NvbW1vZGF0ZSBvdGhlciBzY2hlbWVzIGlmIHJlcXVpcmVkLgogICAgICoKICAgICAqIEFuIGVtcHR5IHNjaGVtZSBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBzY2hlbWUuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkc2NoZW1lIFRoZSBzY2hlbWUgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBzY2hlbWUuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgb3IgdW5zdXBwb3J0ZWQgc2NoZW1lcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhTY2hlbWUoc3RyaW5nICRzY2hlbWUpOiBVcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gYW4gaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIHVzZXIgaW5mb3JtYXRpb24uCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBQYXNzd29yZCBpcyBvcHRpb25hbCwgYnV0IHRoZSB1c2VyIGluZm9ybWF0aW9uIE1VU1QgaW5jbHVkZSB0aGUKICAgICAqIHVzZXI7IGFuIGVtcHR5IHN0cmluZyBmb3IgdGhlIHVzZXIgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB1c2VyCiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICR1c2VyIFRoZSB1c2VyIG5hbWUgdG8gdXNlIGZvciBhdXRob3JpdHkuCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJHBhc3N3b3JkIFRoZSBwYXNzd29yZCBhc3NvY2lhdGVkIHdpdGggJHVzZXIuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgdXNlciBpbmZvcm1hdGlvbi4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhVc2VySW5mbyhzdHJpbmcgJHVzZXIsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgaG9zdC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBob3N0LgogICAgICoKICAgICAqIEFuIGVtcHR5IGhvc3QgdmFsdWUgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgaG9zdC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRob3N0IFRoZSBob3N0bmFtZSB0byB1c2Ugd2l0aCB0aGUgbmV3IGluc3RhbmNlLgogICAgICogQHJldHVybiBzdGF0aWMgQSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGhvc3QuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgaG9zdG5hbWVzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEhvc3Qoc3RyaW5nICRob3N0KTogVXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHBvcnQuCiAgICAgKgogICAgICogSW1wbGVtZW50YXRpb25zIE1VU1QgcmFpc2UgYW4gZXhjZXB0aW9uIGZvciBwb3J0cyBvdXRzaWRlIHRoZQogICAgICogZXN0YWJsaXNoZWQgVENQIGFuZCBVRFAgcG9ydCByYW5nZXMuCiAgICAgKgogICAgICogQSBudWxsIHZhbHVlIHByb3ZpZGVkIGZvciB0aGUgcG9ydCBpcyBlcXVpdmFsZW50IHRvIHJlbW92aW5nIHRoZSBwb3J0CiAgICAgKiBpbmZvcm1hdGlvbi4KICAgICAqCiAgICAgKiBAcGFyYW0gbnVsbHxpbnQgJHBvcnQgVGhlIHBvcnQgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZTsgYSBudWxsIHZhbHVlCiAgICAgKiAgICAgcmVtb3ZlcyB0aGUgcG9ydCBpbmZvcm1hdGlvbi4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBwb3J0LgogICAgICogQHRocm93cyBcSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvciBpbnZhbGlkIHBvcnRzLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBvcnQoP2ludCAkcG9ydCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqCiAgICAgKiBUaGlzIG1ldGhvZCBNVVNUIHJldGFpbiB0aGUgc3RhdGUgb2YgdGhlIGN1cnJlbnQgaW5zdGFuY2UsIGFuZCByZXR1cm4KICAgICAqIGFuIGluc3RhbmNlIHRoYXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBwYXRoLgogICAgICoKICAgICAqIFRoZSBwYXRoIGNhbiBlaXRoZXIgYmUgZW1wdHkgb3IgYWJzb2x1dGUgKHN0YXJ0aW5nIHdpdGggYSBzbGFzaCkgb3IKICAgICAqIHJvb3RsZXNzIChub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoKS4gSW1wbGVtZW50YXRpb25zIE1VU1Qgc3VwcG9ydCBhbGwKICAgICAqIHRocmVlIHN5bnRheGVzLgogICAgICoKICAgICAqIElmIHRoZSBwYXRoIGlzIGludGVuZGVkIHRvIGJlIGRvbWFpbi1yZWxhdGl2ZSByYXRoZXIgdGhhbiBwYXRoIHJlbGF0aXZlIHRoZW4KICAgICAqIGl0IG11c3QgYmVnaW4gd2l0aCBhIHNsYXNoICgiLyIpLiBQYXRocyBub3Qgc3RhcnRpbmcgd2l0aCBhIHNsYXNoICgiLyIpCiAgICAgKiBhcmUgYXNzdW1lZCB0byBiZSByZWxhdGl2ZSB0byBzb21lIGJhc2UgcGF0aCBrbm93biB0byB0aGUgYXBwbGljYXRpb24gb3IKICAgICAqIGNvbnN1bWVyLgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBwYXRoIGNoYXJhY3RlcnMuCiAgICAgKiBJbXBsZW1lbnRhdGlvbnMgZW5zdXJlIHRoZSBjb3JyZWN0IGVuY29kaW5nIGFzIG91dGxpbmVkIGluIGdldFBhdGgoKS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRwYXRoIFRoZSBwYXRoIHRvIHVzZSB3aXRoIHRoZSBuZXcgaW5zdGFuY2UuCiAgICAgKiBAcmV0dXJuIHN0YXRpYyBBIG5ldyBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGF0aC4KICAgICAqIEB0aHJvd3MgXEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3IgaW52YWxpZCBwYXRocy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhQYXRoKHN0cmluZyAkcGF0aCk6IFVyaUludGVyZmFjZTsKCiAgICAvKioKICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIFRoaXMgbWV0aG9kIE1VU1QgcmV0YWluIHRoZSBzdGF0ZSBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSwgYW5kIHJldHVybgogICAgICogYW4gaW5zdGFuY2UgdGhhdCBjb250YWlucyB0aGUgc3BlY2lmaWVkIHF1ZXJ5IHN0cmluZy4KICAgICAqCiAgICAgKiBVc2VycyBjYW4gcHJvdmlkZSBib3RoIGVuY29kZWQgYW5kIGRlY29kZWQgcXVlcnkgY2hhcmFjdGVycy4KICAgICAqIEltcGxlbWVudGF0aW9ucyBlbnN1cmUgdGhlIGNvcnJlY3QgZW5jb2RpbmcgYXMgb3V0bGluZWQgaW4gZ2V0UXVlcnkoKS4KICAgICAqCiAgICAgKiBBbiBlbXB0eSBxdWVyeSBzdHJpbmcgdmFsdWUgaXMgZXF1aXZhbGVudCB0byByZW1vdmluZyB0aGUgcXVlcnkgc3RyaW5nLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5IFRoZSBxdWVyeSBzdHJpbmcgdG8gdXNlIHdpdGggdGhlIG5ldyBpbnN0YW5jZS4KICAgICAqIEByZXR1cm4gc3RhdGljIEEgbmV3IGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBxdWVyeSBzdHJpbmcuCiAgICAgKiBAdGhyb3dzIFxJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9yIGludmFsaWQgcXVlcnkgc3RyaW5ncy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHdpdGhRdWVyeShzdHJpbmcgJHF1ZXJ5KTogVXJpSW50ZXJmYWNlOwoKICAgIC8qKgogICAgICogUmV0dXJuIGFuIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBVUkkgZnJhZ21lbnQuCiAgICAgKgogICAgICogVGhpcyBtZXRob2QgTVVTVCByZXRhaW4gdGhlIHN0YXRlIG9mIHRoZSBjdXJyZW50IGluc3RhbmNlLCBhbmQgcmV0dXJuCiAgICAgKiBhbiBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgVVJJIGZyYWdtZW50LgogICAgICoKICAgICAqIFVzZXJzIGNhbiBwcm92aWRlIGJvdGggZW5jb2RlZCBhbmQgZGVjb2RlZCBmcmFnbWVudCBjaGFyYWN0ZXJzLgogICAgICogSW1wbGVtZW50YXRpb25zIGVuc3VyZSB0aGUgY29ycmVjdCBlbmNvZGluZyBhcyBvdXRsaW5lZCBpbiBnZXRGcmFnbWVudCgpLgogICAgICoKICAgICAqIEFuIGVtcHR5IGZyYWdtZW50IHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gcmVtb3ZpbmcgdGhlIGZyYWdtZW50LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGZyYWdtZW50IFRoZSBmcmFnbWVudCB0byB1c2Ugd2l0aCB0aGUgbmV3IGluc3RhbmNlLgogICAgICogQHJldHVybiBzdGF0aWMgQSBuZXcgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGZyYWdtZW50LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aEZyYWdtZW50KHN0cmluZyAkZnJhZ21lbnQpOiBVcmlJbnRlcmZhY2U7CgogICAgLyoqCiAgICAgKiBSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBhIFVSSSByZWZlcmVuY2UuCiAgICAgKgogICAgICogRGVwZW5kaW5nIG9uIHdoaWNoIGNvbXBvbmVudHMgb2YgdGhlIFVSSSBhcmUgcHJlc2VudCwgdGhlIHJlc3VsdGluZwogICAgICogc3RyaW5nIGlzIGVpdGhlciBhIGZ1bGwgVVJJIG9yIHJlbGF0aXZlIHJlZmVyZW5jZSBhY2NvcmRpbmcgdG8gUkZDIDM5ODYsCiAgICAgKiBTZWN0aW9uIDQuMS4gVGhlIG1ldGhvZCBjb25jYXRlbmF0ZXMgdGhlIHZhcmlvdXMgY29tcG9uZW50cyBvZiB0aGUgVVJJLAogICAgICogdXNpbmcgdGhlIGFwcHJvcHJpYXRlIGRlbGltaXRlcnM6CiAgICAgKgogICAgICogLSBJZiBhIHNjaGVtZSBpcyBwcmVzZW50LCBpdCBNVVNUIGJlIHN1ZmZpeGVkIGJ5ICI6Ii4KICAgICAqIC0gSWYgYW4gYXV0aG9yaXR5IGlzIHByZXNlbnQsIGl0IE1VU1QgYmUgcHJlZml4ZWQgYnkgIi8vIi4KICAgICAqIC0gVGhlIHBhdGggY2FuIGJlIGNvbmNhdGVuYXRlZCB3aXRob3V0IGRlbGltaXRlcnMuIEJ1dCB0aGVyZSBhcmUgdHdvCiAgICAgKiAgIGNhc2VzIHdoZXJlIHRoZSBwYXRoIGhhcyB0byBiZSBhZGp1c3RlZCB0byBtYWtlIHRoZSBVUkkgcmVmZXJlbmNlCiAgICAgKiAgIHZhbGlkIGFzIFBIUCBkb2VzIG5vdCBhbGxvdyB0byB0aHJvdyBhbiBleGNlcHRpb24gaW4gX190b1N0cmluZygpOgogICAgICogICAgIC0gSWYgdGhlIHBhdGggaXMgcm9vdGxlc3MgYW5kIGFuIGF1dGhvcml0eSBpcyBwcmVzZW50LCB0aGUgcGF0aCBNVVNUCiAgICAgKiAgICAgICBiZSBwcmVmaXhlZCBieSAiLyIuCiAgICAgKiAgICAgLSBJZiB0aGUgcGF0aCBpcyBzdGFydGluZyB3aXRoIG1vcmUgdGhhbiBvbmUgIi8iIGFuZCBubyBhdXRob3JpdHkgaXMKICAgICAqICAgICAgIHByZXNlbnQsIHRoZSBzdGFydGluZyBzbGFzaGVzIE1VU1QgYmUgcmVkdWNlZCB0byBvbmUuCiAgICAgKiAtIElmIGEgcXVlcnkgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiPyIuCiAgICAgKiAtIElmIGEgZnJhZ21lbnQgaXMgcHJlc2VudCwgaXQgTVVTVCBiZSBwcmVmaXhlZCBieSAiIyIuCiAgICAgKgogICAgICogQHNlZSBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzOTg2I3NlY3Rpb24tNC4xCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewoJIm5hbWUiOiAicmFsb3VwaGllL2dldGFsbGhlYWRlcnMiLAoJImRlc2NyaXB0aW9uIjogIkEgcG9seWZpbGwgZm9yIGdldGFsbGhlYWRlcnMuIiwKCSJsaWNlbnNlIjogIk1JVCIsCgkiYXV0aG9ycyI6IFsKCQl7CgkJCSJuYW1lIjogIlJhbHBoIEtoYXR0YXIiLAoJCQkiZW1haWwiOiAicmFscGgua2hhdHRhckBnbWFpbC5jb20iCgkJfQoJXSwKCSJyZXF1aXJlIjogewoJCSJwaHAiOiAiPj01LjYiCgl9LAoJInJlcXVpcmUtZGV2IjogewoJCSJwaHB1bml0L3BocHVuaXQiOiAiXjUgfHwgXjYuNSIsCgkJInBocC1jb3ZlcmFsbHMvcGhwLWNvdmVyYWxscyI6ICJeMi4xIgoJfSwKCSJhdXRvbG9hZCI6IHsKCQkiZmlsZXMiOiBbInNyYy9nZXRhbGxoZWFkZXJzLnBocCJdCgl9LAoJImF1dG9sb2FkLWRldiI6IHsKCQkicHNyLTQiOiB7CgkJCSJnZXRhbGxoZWFkZXJzXFxUZXN0c1xcIjogInRlc3RzLyIKCQl9Cgl9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQgUmFscGggS2hhdHRhcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Z2V0YWxsaGVhZGVycwo9PT09PT09PT09PT09CgpQSFAgYGdldGFsbGhlYWRlcnMoKWAgcG9seWZpbGwuIENvbXBhdGlibGUgd2l0aCBQSFAgPj0gNS4zLgoKWyFbQnVpbGQgU3RhdHVzXShodHRwczovL3RyYXZpcy1jaS5vcmcvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMuc3ZnP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL3RyYXZpcy1jaS5vcmcvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMpClshW0NvdmVyYWdlIFN0YXR1c10oaHR0cHM6Ly9jb3ZlcmFsbHMuaW8vcmVwb3MvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMvYmFkZ2UucG5nP2JyYW5jaD1tYXN0ZXIpXShodHRwczovL2NvdmVyYWxscy5pby9yL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzP2JyYW5jaD1tYXN0ZXIpClshW0xhdGVzdCBTdGFibGUgVmVyc2lvbl0oaHR0cHM6Ly9wb3Nlci5wdWd4Lm9yZy9yYWxvdXBoaWUvZ2V0YWxsaGVhZGVycy92L3N0YWJsZS5wbmcpXShodHRwczovL3BhY2thZ2lzdC5vcmcvcGFja2FnZXMvcmFsb3VwaGllL2dldGFsbGhlYWRlcnMpClshW0xhdGVzdCBVbnN0YWJsZSBWZXJzaW9uXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL3YvdW5zdGFibGUucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzKQpbIVtMaWNlbnNlXShodHRwczovL3Bvc2VyLnB1Z3gub3JnL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzL2xpY2Vuc2UucG5nKV0oaHR0cHM6Ly9wYWNrYWdpc3Qub3JnL3BhY2thZ2VzL3JhbG91cGhpZS9nZXRhbGxoZWFkZXJzKQoKClRoaXMgaXMgYSBzaW1wbGUgcG9seWZpbGwgZm9yIFtgZ2V0YWxsaGVhZGVycygpYF0oaHR0cDovL3d3dy5waHAubmV0L21hbnVhbC9lbi9mdW5jdGlvbi5nZXRhbGxoZWFkZXJzLnBocCkuCgojIyBJbnN0YWxsCgpGb3IgUEhQIHZlcnNpb24gKipgPj0gNS42YCoqOgoKYGBgCmNvbXBvc2VyIHJlcXVpcmUgcmFsb3VwaGllL2dldGFsbGhlYWRlcnMKYGBgCgpGb3IgUEhQIHZlcnNpb24gKipgPCA1LjZgKio6CgpgYGAKY29tcG9zZXIgcmVxdWlyZSByYWxvdXBoaWUvZ2V0YWxsaGVhZGVycyAiXjIiCmBgYAo=]]></data>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/src/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/ralouphie/getallheaders/src/getallheaders.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZXRhbGxoZWFkZXJzJykpIHsKCiAgICAvKioKICAgICAqIEdldCBhbGwgSFRUUCBoZWFkZXIga2V5L3ZhbHVlcyBhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSBmb3IgdGhlIGN1cnJlbnQgcmVxdWVzdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tzdHJpbmddIFRoZSBIVFRQIGhlYWRlciBrZXkvdmFsdWUgcGFpcnMuCiAgICAgKi8KICAgIGZ1bmN0aW9uIGdldGFsbGhlYWRlcnMoKQogICAgewogICAgICAgICRoZWFkZXJzID0gYXJyYXkoKTsKCiAgICAgICAgJGNvcHlfc2VydmVyID0gYXJyYXkoCiAgICAgICAgICAgICdDT05URU5UX1RZUEUnICAgPT4gJ0NvbnRlbnQtVHlwZScsCiAgICAgICAgICAgICdDT05URU5UX0xFTkdUSCcgPT4gJ0NvbnRlbnQtTGVuZ3RoJywKICAgICAgICAgICAgJ0NPTlRFTlRfTUQ1JyAgICA9PiAnQ29udGVudC1NZDUnLAogICAgICAgICk7CgogICAgICAgIGZvcmVhY2ggKCRfU0VSVkVSIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChzdWJzdHIoJGtleSwgMCwgNSkgPT09ICdIVFRQXycpIHsKICAgICAgICAgICAgICAgICRrZXkgPSBzdWJzdHIoJGtleSwgNSk7CiAgICAgICAgICAgICAgICBpZiAoIWlzc2V0KCRjb3B5X3NlcnZlclska2V5XSkgfHwgIWlzc2V0KCRfU0VSVkVSWyRrZXldKSkgewogICAgICAgICAgICAgICAgICAgICRrZXkgPSBzdHJfcmVwbGFjZSgnICcsICctJywgdWN3b3JkcyhzdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCdfJywgJyAnLCAka2V5KSkpKTsKICAgICAgICAgICAgICAgICAgICAkaGVhZGVyc1ska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlaWYgKGlzc2V0KCRjb3B5X3NlcnZlclska2V5XSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWyRjb3B5X3NlcnZlclska2V5XV0gPSAkdmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICghaXNzZXQoJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSkpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWydSRURJUkVDVF9IVFRQX0FVVEhPUklaQVRJT04nXSkpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSAkX1NFUlZFUlsnUkVESVJFQ1RfSFRUUF9BVVRIT1JJWkFUSU9OJ107CiAgICAgICAgICAgIH0gZWxzZWlmIChpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSkgewogICAgICAgICAgICAgICAgJGJhc2ljX3Bhc3MgPSBpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSkgPyAkX1NFUlZFUlsnUEhQX0FVVEhfUFcnXSA6ICcnOwogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICdCYXNpYyAnIC4gYmFzZTY0X2VuY29kZSgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddIC4gJzonIC4gJGJhc2ljX3Bhc3MpOwogICAgICAgICAgICB9IGVsc2VpZiAoaXNzZXQoJF9TRVJWRVJbJ1BIUF9BVVRIX0RJR0VTVCddKSkgewogICAgICAgICAgICAgICAgJGhlYWRlcnNbJ0F1dGhvcml6YXRpb24nXSA9ICRfU0VSVkVSWydQSFBfQVVUSF9ESUdFU1QnXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOwogICAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/</filename>
	  <isdir>1</isdir>
	</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[ewogICAgIm5hbWUiOiAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIiwKICAgICJkZXNjcmlwdGlvbiI6ICJCYXNlIDY0IFVSTCBTYWZlIEVuY29kaW5nL0RlY29kaW5nIFBIUCBMaWJyYXJ5IiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJrZXl3b3JkcyI6IFsiQmFzZTY0IiwgIlVSTCIsICJTYWZlIiwgIlJGQzQ2NDgiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5LUxhYnMvYmFzZTY0dXJsL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkJhc2U2NFVybFxcIjogICJzcmMvIgogICAgICAgIH0KICAgIH0sCiAgICAiYXV0b2xvYWQtZGV2IjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkJhc2U2NFVybFxcVGVzdFxcIjogICJ0ZXN0cy8iCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj03LjEiCiAgICB9LAogICAgInJlcXVpcmUtZGV2IjogewogICAgICAgICJwaHBzdGFuL2V4dGVuc2lvbi1pbnN0YWxsZXIiOiAiXjEuMCIsCiAgICAgICAgInBocHN0YW4vcGhwc3RhbiI6ICJeMC4xMXxeMC4xMiIsCiAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1iZWJlcmxlaS1hc3NlcnQiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICJwaHBzdGFuL3BocHN0YW4tZGVwcmVjYXRpb24tcnVsZXMiOiAiXjAuMTF8XjAuMTIiLAogICAgICAgICJwaHBzdGFuL3BocHN0YW4tcGhwdW5pdCI6ICJeMC4xMXxeMC4xMiIsCiAgICAgICAgInBocHN0YW4vcGhwc3Rhbi1zdHJpY3QtcnVsZXMiOiAiXjAuMTF8XjAuMTIiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/spomky-labs/base64url/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOCBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4KCg==]]></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[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEJhc2U2NFVybDsKCnVzZSBmdW5jdGlvbiBiYXNlNjRfZGVjb2RlOwp1c2UgZnVuY3Rpb24gYmFzZTY0X2VuY29kZTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIHJ0cmltOwp1c2UgZnVuY3Rpb24gc3RydHI7CgovKioKICogRW5jb2RlIGFuZCBkZWNvZGUgZGF0YSBpbnRvIEJhc2U2NCBVcmwgU2FmZS4KICovCmZpbmFsIGNsYXNzIEJhc2U2NFVybAp7CiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgICAgICAgVGhlIGRhdGEgdG8gZW5jb2RlCiAgICAgKiBAcGFyYW0gYm9vbCAgICR1c2VQYWRkaW5nIElmIHRydWUsIHRoZSAiPSIgcGFkZGluZyBhdCBlbmQgb2YgdGhlIGVuY29kZWQgdmFsdWUgYXJlIGtlcHQsIGVsc2UgaXQgaXMgcmVtb3ZlZAogICAgICoKICAgICAqIEByZXR1cm4gc3RyaW5nIFRoZSBkYXRhIGVuY29kZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbmNvZGUoc3RyaW5nICRkYXRhLCBib29sICR1c2VQYWRkaW5nID0gZmFsc2UpOiBzdHJpbmcKICAgIHsKICAgICAgICAkZW5jb2RlZCA9IHN0cnRyKGJhc2U2NF9lbmNvZGUoJGRhdGEpLCAnKy8nLCAnLV8nKTsKCiAgICAgICAgcmV0dXJuIHRydWUgPT09ICR1c2VQYWRkaW5nID8gJGVuY29kZWQgOiBydHJpbSgkZW5jb2RlZCwgJz0nKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBzdHJpbmcgJGRhdGEgVGhlIGRhdGEgdG8gZGVjb2RlCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24KICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgZGF0YSBkZWNvZGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVjb2RlKHN0cmluZyAkZGF0YSk6IHN0cmluZwogICAgewogICAgICAgICRkZWNvZGVkID0gYmFzZTY0X2RlY29kZShzdHJ0cigkZGF0YSwgJy1fJywgJysvJyksIHRydWUpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGRlY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBkYXRhIHByb3ZpZGVkJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRlY29kZWQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/CHANGELOG.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q0hBTkdFTE9HCj09PT09PT09PQoKVGhlIGNoYW5nZWxvZyBpcyBtYWludGFpbmVkIGZvciBhbGwgU3ltZm9ueSBjb250cmFjdHMgYXQgdGhlIGZvbGxvd2luZyBVUkw6Cmh0dHBzOi8vZ2l0aHViLmNvbS9zeW1mb255L2NvbnRyYWN0cy9ibG9iL21haW4vQ0hBTkdFTE9HLm1kCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAic3ltZm9ueS9kZXByZWNhdGlvbi1jb250cmFjdHMiLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAiZGVzY3JpcHRpb24iOiAiQSBnZW5lcmljIGZ1bmN0aW9uIGFuZCBjb252ZW50aW9uIHRvIHRyaWdnZXIgZGVwcmVjYXRpb24gbm90aWNlcyIsCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9zeW1mb255LmNvbSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJOaWNvbGFzIEdyZWthcyIsCiAgICAgICAgICAgICJlbWFpbCI6ICJwQHRjaHdvcmsuY29tIgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJTeW1mb255IENvbW11bml0eSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL3N5bWZvbnkuY29tL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgInBocCI6ICI+PTcuMSIKICAgIH0sCiAgICAiYXV0b2xvYWQiOiB7CiAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAiZnVuY3Rpb24ucGhwIgogICAgICAgIF0KICAgIH0sCiAgICAibWluaW11bS1zdGFiaWxpdHkiOiAiZGV2IiwKICAgICJleHRyYSI6IHsKICAgICAgICAiYnJhbmNoLWFsaWFzIjogewogICAgICAgICAgICAiZGV2LW1haW4iOiAiMi41LWRldiIKICAgICAgICB9LAogICAgICAgICJ0aGFua3MiOiB7CiAgICAgICAgICAgICJuYW1lIjogInN5bWZvbnkvY29udHJhY3RzIiwKICAgICAgICAgICAgInVybCI6ICJodHRwczovL2dpdGh1Yi5jb20vc3ltZm9ueS9jb250cmFjdHMiCiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/function.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBTeW1mb255IHBhY2thZ2UuCiAqCiAqIChjKSBGYWJpZW4gUG90ZW5jaWVyIDxmYWJpZW5Ac3ltZm9ueS5jb20+CiAqCiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLgogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCd0cmlnZ2VyX2RlcHJlY2F0aW9uJykpIHsKICAgIC8qKgogICAgICogVHJpZ2dlcnMgYSBzaWxlbmNlZCBkZXByZWNhdGlvbiBub3RpY2UuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkcGFja2FnZSBUaGUgbmFtZSBvZiB0aGUgQ29tcG9zZXIgcGFja2FnZSB0aGF0IGlzIHRyaWdnZXJpbmcgdGhlIGRlcHJlY2F0aW9uCiAgICAgKiBAcGFyYW0gc3RyaW5nICR2ZXJzaW9uIFRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHRoYXQgaW50cm9kdWNlZCB0aGUgZGVwcmVjYXRpb24KICAgICAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgVGhlIG1lc3NhZ2Ugb2YgdGhlIGRlcHJlY2F0aW9uCiAgICAgKiBAcGFyYW0gbWl4ZWQgIC4uLiRhcmdzIFZhbHVlcyB0byBpbnNlcnQgaW4gdGhlIG1lc3NhZ2UgdXNpbmcgcHJpbnRmKCkgZm9ybWF0dGluZwogICAgICoKICAgICAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAgICAgKi8KICAgIGZ1bmN0aW9uIHRyaWdnZXJfZGVwcmVjYXRpb24oc3RyaW5nICRwYWNrYWdlLCBzdHJpbmcgJHZlcnNpb24sIHN0cmluZyAkbWVzc2FnZSwgLi4uJGFyZ3MpOiB2b2lkCiAgICB7CiAgICAgICAgQHRyaWdnZXJfZXJyb3IoKCRwYWNrYWdlIHx8ICR2ZXJzaW9uID8gIlNpbmNlICRwYWNrYWdlICR2ZXJzaW9uOiAiIDogJycpLigkYXJncyA/IHZzcHJpbnRmKCRtZXNzYWdlLCAkYXJncykgOiAkbWVzc2FnZSksIFxFX1VTRVJfREVQUkVDQVRFRCk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDIwLXByZXNlbnQgRmFiaWVuIFBvdGVuY2llcgoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZAp0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOClRIRSBTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/symfony/deprecation-contracts/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[U3ltZm9ueSBEZXByZWNhdGlvbiBDb250cmFjdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkEgZ2VuZXJpYyBmdW5jdGlvbiBhbmQgY29udmVudGlvbiB0byB0cmlnZ2VyIGRlcHJlY2F0aW9uIG5vdGljZXMuCgpUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBzaW5nbGUgZ2xvYmFsIGZ1bmN0aW9uIG5hbWVkIGB0cmlnZ2VyX2RlcHJlY2F0aW9uKClgIHRoYXQgdHJpZ2dlcnMgc2lsZW5jZWQgZGVwcmVjYXRpb24gbm90aWNlcy4KCkJ5IHVzaW5nIGEgY3VzdG9tIFBIUCBlcnJvciBoYW5kbGVyIHN1Y2ggYXMgdGhlIG9uZSBwcm92aWRlZCBieSB0aGUgU3ltZm9ueSBFcnJvckhhbmRsZXIgY29tcG9uZW50LAp0aGUgdHJpZ2dlcmVkIGRlcHJlY2F0aW9ucyBjYW4gYmUgY2F1Z2h0IGFuZCBsb2dnZWQgZm9yIGxhdGVyIGRpc2NvdmVyeSwgYm90aCBvbiBkZXYgYW5kIHByb2QgZW52aXJvbm1lbnRzLgoKVGhlIGZ1bmN0aW9uIHJlcXVpcmVzIGF0IGxlYXN0IDMgYXJndW1lbnRzOgogLSB0aGUgbmFtZSBvZiB0aGUgQ29tcG9zZXIgcGFja2FnZSB0aGF0IGlzIHRyaWdnZXJpbmcgdGhlIGRlcHJlY2F0aW9uCiAtIHRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHRoYXQgaW50cm9kdWNlZCB0aGUgZGVwcmVjYXRpb24KIC0gdGhlIG1lc3NhZ2Ugb2YgdGhlIGRlcHJlY2F0aW9uCiAtIG1vcmUgYXJndW1lbnRzIGNhbiBiZSBwcm92aWRlZDogdGhleSB3aWxsIGJlIGluc2VydGVkIGluIHRoZSBtZXNzYWdlIHVzaW5nIGBwcmludGYoKWAgZm9ybWF0dGluZwoKRXhhbXBsZToKYGBgcGhwCnRyaWdnZXJfZGVwcmVjYXRpb24oJ3N5bWZvbnkvYmxvY2tjaGFpbicsICc4LjknLCAnVXNpbmcgIiVzIiBpcyBkZXByZWNhdGVkLCB1c2UgIiVzIiBpbnN0ZWFkLicsICdiaXRjb2luJywgJ2ZhYmNvaW4nKTsKYGBgCgpUaGlzIHdpbGwgZ2VuZXJhdGUgdGhlIGZvbGxvd2luZyBtZXNzYWdlOgpgU2luY2Ugc3ltZm9ueS9ibG9ja2NoYWluIDguOTogVXNpbmcgImJpdGNvaW4iIGlzIGRlcHJlY2F0ZWQsIHVzZSAiZmFiY29pbiIgaW5zdGVhZC5gCgpXaGlsZSBub3QgbmVjZXNzYXJpbHkgcmVjb21tZW5kZWQsIHRoZSBkZXByZWNhdGlvbiBub3RpY2VzIGNhbiBiZSBjb21wbGV0ZWx5IGlnbm9yZWQgYnkgZGVjbGFyaW5nIGFuIGVtcHR5CmBmdW5jdGlvbiB0cmlnZ2VyX2RlcHJlY2F0aW9uKCkge31gIGluIHlvdXIgYXBwbGljYXRpb24uCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Algorithm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7CgppbnRlcmZhY2UgQWxnb3JpdGhtCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgYWxnb3JpdGhtLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBrZXkgdHlwZXMgc3VpdGFibGUgZm9yIHRoaXMgYWxnb3JpdGhtIChlLmcuICJvY3QiLCAiUlNBIi4uLikuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsb3dlZEtleVR5cGVzKCk6IGFycmF5Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/AlgorithmManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKCmNsYXNzIEFsZ29yaXRobU1hbmFnZXIKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGFsZ29yaXRobXMgPSBbXTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBBbGdvcml0aG1bXSAkYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGFsZ29yaXRobXMpCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJGFsZ29yaXRobXMgYXMgJGFsZ29yaXRobSkgewogICAgICAgICAgICAkdGhpcy0+YWRkKCRhbGdvcml0aG0pOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYWxnb3JpdGhtIGlzIHN1cHBvcnRlZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRhbGdvcml0aG0gVGhlIGFsZ29yaXRobQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKHN0cmluZyAkYWxnb3JpdGhtKTogYm9vbAogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRhbGdvcml0aG0sICR0aGlzLT5hbGdvcml0aG1zKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGxpc3Qgb2YgbmFtZXMgb2Ygc3VwcG9ydGVkIGFsZ29yaXRobXMuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbGlzdCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlzKCR0aGlzLT5hbGdvcml0aG1zKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGFsZ29yaXRobSBpZiBzdXBwb3J0ZWQsIG90aGVyd2lzZSB0aHJvdyBhbiBleGNlcHRpb24uCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkYWxnb3JpdGhtIFRoZSBhbGdvcml0aG0KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYWxnb3JpdGhtIGlzIG5vdCBzdXBwb3J0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldChzdHJpbmcgJGFsZ29yaXRobSk6IEFsZ29yaXRobQogICAgewogICAgICAgIGlmICghJHRoaXMtPmhhcygkYWxnb3JpdGhtKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRhbGdvcml0aG0pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+YWxnb3JpdGhtc1skYWxnb3JpdGhtXTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgYW4gYWxnb3JpdGhtIHRvIHRoZSBtYW5hZ2VyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKEFsZ29yaXRobSAkYWxnb3JpdGhtKTogdm9pZAogICAgewogICAgICAgICRuYW1lID0gJGFsZ29yaXRobS0+bmFtZSgpOwogICAgICAgICR0aGlzLT5hbGdvcml0aG1zWyRuYW1lXSA9ICRhbGdvcml0aG07CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/AlgorithmManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfc3RyaW5nOwoKY2xhc3MgQWxnb3JpdGhtTWFuYWdlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGFsZ29yaXRobXMgPSBbXTsKCiAgICAvKioKICAgICAqIEFkZHMgYW4gYWxnb3JpdGhtLgogICAgICoKICAgICAqIEVhY2ggYWxnb3JpdGhtIGlzIGlkZW50aWZpZWQgYnkgYW4gYWxpYXMgaGVuY2UgaXQgaXMgYWxsb3dlZCB0byBoYXZlIHRoZSBzYW1lIGFsZ29yaXRobSB0d2ljZSAob3IgbW9yZSkuCiAgICAgKiBUaGlzIGNhbiBiZSBoZWxwZnVsIHdoZW4gYW4gYWxnb3JpdGhtIGhhdmUgc2V2ZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc3RyaW5nICRhbGlhcywgQWxnb3JpdGhtICRhbGdvcml0aG0pOiB2b2lkCiAgICB7CiAgICAgICAgJHRoaXMtPmFsZ29yaXRobXNbJGFsaWFzXSA9ICRhbGdvcml0aG07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsaWFzZXMuCiAgICAgKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxpYXNlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBhcnJheV9rZXlzKCR0aGlzLT5hbGdvcml0aG1zKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYWxsIGFsZ29yaXRobXMgc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4KICAgICAqIFRoaXMgaXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkuIEtleXMgYXJlIHRoZSBhbGlhc2VzIG9mIHRoZSBhbGdvcml0aG1zLgogICAgICoKICAgICAqIEByZXR1cm4gQWxnb3JpdGhtW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YWxnb3JpdGhtczsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZSBhbiBhbGdvcml0aG0gbWFuYWdlciB1c2luZyB0aGUgZ2l2ZW4gYWxpYXNlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJGFsaWFzZXMKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgYWxpYXMgaXMgaW52YWxpZCBvciBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGUoYXJyYXkgJGFsaWFzZXMpOiBBbGdvcml0aG1NYW5hZ2VyCiAgICB7CiAgICAgICAgJGFsZ29yaXRobXMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkYWxpYXNlcyBhcyAkYWxpYXMpIHsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJGFsaWFzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBhbGlhcycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPmFsZ29yaXRobXNbJGFsaWFzXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGFsZ29yaXRobSB3aXRoIHRoZSBhbGlhcyAiJXMiIGlzIG5vdCBzdXBwb3J0ZWQuJywgJGFsaWFzKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGFsZ29yaXRobXNbXSA9ICR0aGlzLT5hbGdvcml0aG1zWyRhbGlhc107CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IEFsZ29yaXRobU1hbmFnZXIoJGFsZ29yaXRobXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1jb3JlIiwKICAgICJkZXNjcmlwdGlvbiI6ICJDb3JlIGNvbXBvbmVudCBvZiB0aGUgSldUIEZyYW1ld29yay4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJKV1MiLCAiSldUIiwgIkpXRSIsICJKV0EiLCAiSldLIiwgIkpXS1NldCIsICJKb3QiLCAiSm9zZSIsICJSRkM3NTE1IiwgIlJGQzc1MTYiLCAiUkZDNzUxNyIsICJSRkM3NTE4IiwgIlJGQzc1MTkiLCAiUkZDNzUyMCIsICJCdW5kbGUiLCAiU3ltZm9ueSJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgfSx7CiAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcQ29yZVxcIjogICIiCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJwaHAiOiAiPj03LjIiLAogICAgICAgICJleHQtanNvbiI6ICIqIiwKICAgICAgICAiZXh0LW1ic3RyaW5nIjogIioiLAogICAgICAgICJicmljay9tYXRoIjogIl4wLjguMTd8XjAuOSIsCiAgICAgICAgImZncm9zc2UvcGhwYXNuMSI6ICJeMi4wIiwKICAgICAgICAic3BvbWt5LWxhYnMvYmFzZTY0dXJsIjogIl4xLjB8XjIuMCIKICAgIH0sCiAgICAiY29uZmxpY3QiOiB7CiAgICAgICAgInNwb21reS1sYWJzL2pvc2UiOiAiKiIKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/JWK.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBpbl9hcnJheTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSnNvblNlcmlhbGl6YWJsZTsKCmNsYXNzIEpXSyBpbXBsZW1lbnRzIEpzb25TZXJpYWxpemFibGUKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIEpXSyBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIHZhbHVlcy4KICAgICAqIFRoZSBtZW1iZXIgImt0eSIgaXMgbWFuZGF0b3J5LiBPdGhlciBtZW1iZXJzIGFyZSBOT1QgY2hlY2tlZC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IHBhcmFtZXRlciAia3R5IiBpcyBtaXNzaW5nCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChhcnJheSAkdmFsdWVzKQogICAgewogICAgICAgIGlmICghaXNzZXQoJHZhbHVlc1sna3R5J10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBwYXJhbWV0ZXIgImt0eSIgaXMgbWFuZGF0b3J5LicpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+dmFsdWVzID0gJHZhbHVlczsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBKV0sgb2JqZWN0IHVzaW5nIHRoZSBnaXZlbiBKc29uIHN0cmluZy4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZGF0YSBpcyBub3QgdmFsaWQKICAgICAqCiAgICAgKiBAcmV0dXJuIEpXSwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21Kc29uKHN0cmluZyAkanNvbik6IHNlbGYKICAgIHsKICAgICAgICAkZGF0YSA9IGpzb25fZGVjb2RlKCRqc29uLCB0cnVlKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGFyZ3VtZW50LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlcyB0byBiZSBzZXJpYWxpemVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogR2V0IHRoZSB2YWx1ZSB3aXRoIGEgc3BlY2lmaWMga2V5LgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGtleSBUaGUga2V5CiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBkb2VzIG5vdCBleGlzdAogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxtaXhlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KHN0cmluZyAka2V5KQogICAgewogICAgICAgIGlmICghJHRoaXMtPmhhcygka2V5KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSB2YWx1ZSBpZGVudGlmaWVkIGJ5ICIlcyIgZG9lcyBub3QgZXhpc3QuJywgJGtleSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXNbJGtleV07CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIEpXSyBoYXMgdGhlIHZhbHVlIGlkZW50aWZpZWQgYnkuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhcyhzdHJpbmcgJGtleSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+dmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEdldCBhbGwgdmFsdWVzIHN0b3JlZCBpbiB0aGUgSldLIG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5IFZhbHVlcyBvZiB0aGUgSldLIG9iamVjdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWxsKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB0aHVtYnByaW50IG9mIHRoZSBrZXkuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzYzOAogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoYXNoaW5nIGZ1bmN0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHRodW1icHJpbnQoc3RyaW5nICRoYXNoX2FsZ29yaXRobSk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaW5fYXJyYXkoJGhhc2hfYWxnb3JpdGhtLCBoYXNoX2FsZ29zKCksIHRydWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGhhc2ggYWxnb3JpdGhtICIlcyIgaXMgbm90IHN1cHBvcnRlZC4nLCAkaGFzaF9hbGdvcml0aG0pKTsKICAgICAgICB9CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X2ludGVyc2VjdF9rZXkoJHRoaXMtPnZhbHVlcywgYXJyYXlfZmxpcChbJ2t0eScsICduJywgJ2UnLCAnY3J2JywgJ3gnLCAneScsICdrJ10pKTsKICAgICAgICBrc29ydCgkdmFsdWVzKTsKICAgICAgICAkaW5wdXQgPSBqc29uX2VuY29kZSgkdmFsdWVzLCBKU09OX1VORVNDQVBFRF9TTEFTSEVTIHwgSlNPTl9VTkVTQ0FQRURfVU5JQ09ERSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkaW5wdXQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGNvbXB1dGUgdGhlIGtleSB0aHVtYnByaW50Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gQmFzZTY0VXJsOjplbmNvZGUoaGFzaCgkaGFzaF9hbGdvcml0aG0sICRpbnB1dCwgdHJ1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYXNzb2NpYXRlZCBwdWJsaWMga2V5LgogICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBmb3I6CiAgICAgKiAtIHB1YmxpYyBrZXlzCiAgICAgKiAtIHNoYXJlZCBrZXlzCiAgICAgKiAtIHVua25vd24ga2V5cy4KICAgICAqCiAgICAgKiBLbm93biBrZXlzIGFyZSAib2N0IiwgIlJTQSIsICJFQyIgYW5kICJPS1AiLgogICAgICoKICAgICAqIEByZXR1cm4gSldLCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB0b1B1YmxpYygpOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X2RpZmZfa2V5KCR0aGlzLT52YWx1ZXMsIGFycmF5X2ZsaXAoWydwJywgJ2QnLCAncScsICdkcCcsICdkcScsICdxaSddKSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWVzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/JWKSet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEFycmF5SXRlcmF0b3I7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIENvdW50YWJsZTsKdXNlIGZ1bmN0aW9uIGluX2FycmF5Owp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBJdGVyYXRvckFnZ3JlZ2F0ZTsKdXNlIEpzb25TZXJpYWxpemFibGU7CnVzZSBUcmF2ZXJzYWJsZTsKCmNsYXNzIEpXS1NldCBpbXBsZW1lbnRzIENvdW50YWJsZSwgSXRlcmF0b3JBZ2dyZWdhdGUsIEpzb25TZXJpYWxpemFibGUKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGtleXMgPSBbXTsKCiAgICAvKioKICAgICAqIEBwYXJhbSBKV0tbXSAka2V5cwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBsaXN0IGlzIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KGFycmF5ICRrZXlzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrID0+ICRrZXkpIHsKICAgICAgICAgICAgaWYgKCEka2V5IGluc3RhbmNlb2YgSldLKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGxpc3QuIFNob3VsZCBvbmx5IGNvbnRhaW5zIEpXSyBvYmplY3RzJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgka2V5LT5oYXMoJ2tpZCcpKSB7CiAgICAgICAgICAgICAgICB1bnNldCgka2V5c1ska10pOwogICAgICAgICAgICAgICAgJHRoaXMtPmtleXNbJGtleS0+Z2V0KCdraWQnKV0gPSAka2V5OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmtleXNbXSA9ICRrZXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgSldLU2V0IG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gdmFsdWVzLgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXlzZXQgaXMgbm90IHZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBKV0tTZXQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5RGF0YShhcnJheSAkZGF0YSk6IHNlbGYKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCRkYXRhWydrZXlzJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YVsna2V5cyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGRhdGEuJyk7CiAgICAgICAgfQoKICAgICAgICAkandrc2V0ID0gbmV3IHNlbGYoW10pOwogICAgICAgIGZvcmVhY2ggKCRkYXRhWydrZXlzJ10gYXMgJGtleSkgewogICAgICAgICAgICAkandrID0gbmV3IEpXSygka2V5KTsKICAgICAgICAgICAgaWYgKCRqd2stPmhhcygna2lkJykpIHsKICAgICAgICAgICAgICAgICRqd2tzZXQtPmtleXNbJGp3ay0+Z2V0KCdraWQnKV0gPSAkandrOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJGp3a3NldC0+a2V5c1tdID0gJGp3azsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqd2tzZXQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgSldLU2V0IG9iamVjdCB1c2luZyB0aGUgZ2l2ZW4gSnNvbiBzdHJpbmcuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGRhdGEgaXMgbm90IHZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBKV0tTZXQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tSnNvbihzdHJpbmcgJGpzb24pOiBzZWxmCiAgICB7CiAgICAgICAgJGRhdGEgPSBqc29uX2RlY29kZSgkanNvbiwgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGF0YSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBhcmd1bWVudC4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tS2V5RGF0YSgkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIGtleXMgc3RvcmVkIGluIHRoZSBrZXkgc2V0LgogICAgICoKICAgICAqIEByZXR1cm4gSldLW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+a2V5czsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZCBrZXkgdG8gc3RvcmUgaW4gdGhlIGtleSBzZXQuCiAgICAgKiBUaGlzIG1ldGhvZCBpcyBpbW11dGFibGUgYW5kIHdpbGwgcmV0dXJuIGEgbmV3IG9iamVjdC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEpXS1NldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aChKV0sgJGp3ayk6IHNlbGYKICAgIHsKICAgICAgICAkY2xvbmUgPSBjbG9uZSAkdGhpczsKCiAgICAgICAgaWYgKCRqd2stPmhhcygna2lkJykpIHsKICAgICAgICAgICAgJGNsb25lLT5rZXlzWyRqd2stPmdldCgna2lkJyldID0gJGp3azsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkY2xvbmUtPmtleXNbXSA9ICRqd2s7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGNsb25lOwogICAgfQoKICAgIC8qKgogICAgICogUmVtb3ZlIGtleSBmcm9tIHRoZSBrZXkgc2V0LgogICAgICogVGhpcyBtZXRob2QgaXMgaW1tdXRhYmxlIGFuZCB3aWxsIHJldHVybiBhIG5ldyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIGludHxzdHJpbmcgJGtleSBLZXkgdG8gcmVtb3ZlIGZyb20gdGhlIGtleSBzZXQKICAgICAqCiAgICAgKiBAcmV0dXJuIEpXS1NldAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aG91dCgka2V5KTogc2VsZgogICAgewogICAgICAgIGlmICghJHRoaXMtPmhhcygka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXM7CiAgICAgICAgfQoKICAgICAgICAkY2xvbmUgPSBjbG9uZSAkdGhpczsKICAgICAgICB1bnNldCgkY2xvbmUtPmtleXNbJGtleV0pOwoKICAgICAgICByZXR1cm4gJGNsb25lOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBrZXkgc2V0IGNvbnRhaW5zIGEga2V5IHdpdGggdGhlIGdpdmVuIGluZGV4LgogICAgICoKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpbmRleAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzKCRpbmRleCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygkaW5kZXgsICR0aGlzLT5rZXlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIGtleSB3aXRoIHRoZSBnaXZlbiBpbmRleC4gVGhyb3dzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgbm90IHByZXNlbnQgaW4gdGhlIGtleSBzdG9yZS4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50fHN0cmluZyAkaW5kZXgKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggaXMgbm90IGRlZmluZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldCgkaW5kZXgpOiBKV0sKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5oYXMoJGluZGV4KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmRlZmluZWQgaW5kZXguJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXMtPmtleXNbJGluZGV4XTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlcyB0byBiZSBzZXJpYWxpemVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24ganNvblNlcmlhbGl6ZSgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbJ2tleXMnID0+IGFycmF5X3ZhbHVlcygkdGhpcy0+a2V5cyldOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGtleXMgaW4gdGhlIGtleSBzZXQuCiAgICAgKgogICAgICogQHBhcmFtIGludCAkbW9kZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoJG1vZGUgPSBDT1VOVF9OT1JNQUwpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gY291bnQoJHRoaXMtPmtleXMsICRtb2RlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFRyeSB0byBmaW5kIGEga2V5IHRoYXQgZml0cyBvbiB0aGUgc2VsZWN0ZWQgcmVxdWlyZW1lbnRzLgogICAgICogUmV0dXJucyBudWxsIGlmIG5vdCBmb3VuZC4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICAgICAgICAgJHR5cGUgICAgICAgICBNdXN0IGJlICdzaWcnIChzaWduYXR1cmUpIG9yICdlbmMnIChlbmNyeXB0aW9uKQogICAgICogQHBhcmFtIG51bGx8QWxnb3JpdGhtICRhbGdvcml0aG0gICAgU3BlY2lmaWVzIHRoZSBhbGdvcml0aG0gdG8gYmUgdXNlZAogICAgICogQHBhcmFtIGFycmF5ICAgICAgICAgICRyZXN0cmljdGlvbnMgTW9yZSByZXN0cmljdGlvbnMgc3VjaCBhcyAna2lkJyBvciAna3R5JwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgdHlwZSBpcyBub3QgdmFsaWQgKG11c3QgYmUgInNpZyIgb3IgImVuYyIpCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZWxlY3RLZXkoc3RyaW5nICR0eXBlLCA/QWxnb3JpdGhtICRhbGdvcml0aG0gPSBudWxsLCBhcnJheSAkcmVzdHJpY3Rpb25zID0gW10pOiA/SldLCiAgICB7CiAgICAgICAgaWYgKCFpbl9hcnJheSgkdHlwZSwgWydlbmMnLCAnc2lnJ10sIHRydWUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0FsbG93ZWQga2V5IHR5cGVzIGFyZSAic2lnIiBvciAiZW5jIi4nKTsKICAgICAgICB9CgogICAgICAgICRyZXN1bHQgPSBbXTsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+a2V5cyBhcyAka2V5KSB7CiAgICAgICAgICAgICRpbmQgPSAwOwoKICAgICAgICAgICAgJGNhbl91c2UgPSAkdGhpcy0+Y2FuS2V5QmVVc2VkRm9yKCR0eXBlLCAka2V5KTsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkY2FuX3VzZSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGluZCArPSAkY2FuX3VzZTsKCiAgICAgICAgICAgICRhbGcgPSAkdGhpcy0+Y2FuS2V5QmVVc2VkV2l0aEFsZ29yaXRobSgkYWxnb3JpdGhtLCAka2V5KTsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkYWxnKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaW5kICs9ICRhbGc7CgogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICR0aGlzLT5kb2VzS2V5U2F0aXNmeVJlc3RyaWN0aW9ucygkcmVzdHJpY3Rpb25zLCAka2V5KSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRyZXN1bHRbXSA9IFsna2V5JyA9PiAka2V5LCAnaW5kJyA9PiAkaW5kXTsKICAgICAgICB9CgogICAgICAgIGlmICgwID09PSBjb3VudCgkcmVzdWx0KSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CgogICAgICAgIHVzb3J0KCRyZXN1bHQsIFskdGhpcywgJ3NvcnRLZXlzJ10pOwoKICAgICAgICByZXR1cm4gJHJlc3VsdFswXVsna2V5J107CiAgICB9CgogICAgLyoqCiAgICAgKiBJbnRlcm5hbCBtZXRob2Qgb25seS4gU2hvdWxkIG5vdCBiZSB1c2VkLgogICAgICoKICAgICAqIEBpbnRlcm5hbAogICAgICogQGludGVybmFsCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc29ydEtleXMoYXJyYXkgJGEsIGFycmF5ICRiKTogaW50CiAgICB7CiAgICAgICAgaWYgKCRhWydpbmQnXSA9PT0gJGJbJ2luZCddKSB7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICgkYVsnaW5kJ10gPiAkYlsnaW5kJ10pID8gLTEgOiAxOwogICAgfQoKICAgIC8qKgogICAgICogSW50ZXJuYWwgbWV0aG9kIG9ubHkuIFNob3VsZCBub3QgYmUgdXNlZC4KICAgICAqCiAgICAgKiBAaW50ZXJuYWwKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEl0ZXJhdG9yKCk6IFRyYXZlcnNhYmxlCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBBcnJheUl0ZXJhdG9yKCR0aGlzLT5rZXlzKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgZG9lcyBub3QgZnVsZmlsbCB3aXRoIHRoZSAia2V5X29wcyIgY29uc3RyYWludAogICAgICoKICAgICAqIEByZXR1cm4gYm9vbHxpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYW5LZXlCZVVzZWRGb3Ioc3RyaW5nICR0eXBlLCBKV0sgJGtleSkKICAgIHsKICAgICAgICBpZiAoJGtleS0+aGFzKCd1c2UnKSkgewogICAgICAgICAgICByZXR1cm4gJHR5cGUgPT09ICRrZXktPmdldCgndXNlJykgPyAxIDogZmFsc2U7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2tleV9vcHMnKSkgewogICAgICAgICAgICAka2V5X29wcyA9ICRrZXktPmdldCgna2V5X29wcycpOwogICAgICAgICAgICBpZiAoIWlzX2FycmF5KCRrZXlfb3BzKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBrZXkgcGFyYW1ldGVyICJrZXlfb3BzIi4gU2hvdWxkIGJlIGEgbGlzdCBvZiBrZXkgb3BlcmF0aW9ucycpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHR5cGUgPT09IHNlbGY6OmNvbnZlcnRLZXlPcHNUb0tleVVzZSgka2V5X29wcykgPyAxIDogZmFsc2U7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gYm9vbHxpbnQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjYW5LZXlCZVVzZWRXaXRoQWxnb3JpdGhtKD9BbGdvcml0aG0gJGFsZ29yaXRobSwgSldLICRrZXkpCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRhbGdvcml0aG0pIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIGlmICghaW5fYXJyYXkoJGtleS0+Z2V0KCdrdHknKSwgJGFsZ29yaXRobS0+YWxsb3dlZEtleVR5cGVzKCksIHRydWUpKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRrZXktPmhhcygnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuICRhbGdvcml0aG0tPm5hbWUoKSA9PT0gJGtleS0+Z2V0KCdhbGcnKSA/IDIgOiBmYWxzZTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZG9lc0tleVNhdGlzZnlSZXN0cmljdGlvbnMoYXJyYXkgJHJlc3RyaWN0aW9ucywgSldLICRrZXkpOiBib29sCiAgICB7CiAgICAgICAgZm9yZWFjaCAoJHJlc3RyaWN0aW9ucyBhcyAkayA9PiAkdikgewogICAgICAgICAgICBpZiAoISRrZXktPmhhcygkaykgfHwgJHYgIT09ICRrZXktPmdldCgkaykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnRLZXlPcHNUb0tleVVzZShhcnJheSAka2V5X29wcyk6IHN0cmluZwogICAgewogICAgICAgIHN3aXRjaCAodHJ1ZSkgewogICAgICAgICAgICBjYXNlIGluX2FycmF5KCd2ZXJpZnknLCAka2V5X29wcywgdHJ1ZSk6CiAgICAgICAgICAgIGNhc2UgaW5fYXJyYXkoJ3NpZ24nLCAka2V5X29wcywgdHJ1ZSk6CiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpZyc7CgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCdlbmNyeXB0JywgJGtleV9vcHMsIHRydWUpOgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCdkZWNyeXB0JywgJGtleV9vcHMsIHRydWUpOgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCd3cmFwS2V5JywgJGtleV9vcHMsIHRydWUpOgogICAgICAgICAgICBjYXNlIGluX2FycmF5KCd1bndyYXBLZXknLCAka2V5X29wcywgdHJ1ZSk6CiAgICAgICAgICAgIGNhc2UgaW5fYXJyYXkoJ2Rlcml2ZUtleScsICRrZXlfb3BzLCB0cnVlKToKICAgICAgICAgICAgY2FzZSBpbl9hcnJheSgnZGVyaXZlQml0cycsICRrZXlfb3BzLCB0cnVlKToKICAgICAgICAgICAgICAgIHJldHVybiAnZW5jJzsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1Vuc3VwcG9ydGVkIGtleSBvcGVyYXRpb24gdmFsdWUgIiVzIicsIGltcGxvZGUoJywgJywgJGtleV9vcHMpKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/JWT.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmU7CgppbnRlcmZhY2UgSldUCnsKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgcGF5bG9hZCBvZiB0aGUgSldULgogICAgICogbnVsbCBpcyBhIHZhbGlkIHBheWxvYWQgKGUuZy4gSldTIHdpdGggZGV0YWNoZWQgcGF5bG9hZCkuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQYXlsb2FkKCk6ID9zdHJpbmc7Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQIEpXVCBDb3JlIENvbXBvbmVudAo9PT09PT09PT09PT09PT09PT09PT09CgpUaGlzIHJlcG9zaXRvcnkgaXMgYSBzdWIgcmVwb3NpdG9yeSBvZiBbdGhlIEpXVCBGcmFtZXdvcmtdKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yaykgcHJvamVjdCBhbmQgaXMgUkVBRCBPTkxZLgoKKipQbGVhc2UgZG8gbm90IHN1Ym1pdCBhbnkgUHVsbCBSZXF1ZXN0IGhlcmUuKioKWW91IHNob3VsZCBnbyB0byBbdGhlIG1haW4gcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBpbnN0ZWFkLgoKIyBEb2N1bWVudGF0aW9uCgpUaGUgb2ZmaWNpYWwgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXMgaHR0cHM6Ly93ZWItdG9rZW4uc3BvbWt5LWxhYnMuY29tLyAKCiMgTGljZW5jZQoKVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlIHVuZGVyIFtNSVQgbGljZW5jZV0oTElDRU5TRSkuCg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/BigInteger.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBCcmlja1xNYXRoXEJpZ0ludGVnZXIgYXMgQnJpY2tCaWdJbnRlZ2VyOwp1c2UgZnVuY3Rpb24gY2hyOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgQmlnSW50ZWdlcgp7CiAgICAvKioKICAgICAqIEhvbGRzIHRoZSBCaWdJbnRlZ2VyJ3MgdmFsdWUuCiAgICAgKgogICAgICogQHZhciBCcmlja0JpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWU7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChCcmlja0JpZ0ludGVnZXIgJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT52YWx1ZSA9ICR2YWx1ZTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoc3RyaW5nICR2YWx1ZSk6IHNlbGYKICAgIHsKICAgICAgICAkcmVzID0gdW5wYWNrKCdIKicsICR2YWx1ZSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcmVzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjb252ZXJ0IHRoZSB2YWx1ZScpOwogICAgICAgIH0KICAgICAgICAkZGF0YSA9IGN1cnJlbnQoJHJlcyk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZihCcmlja0JpZ0ludGVnZXI6OmZyb21CYXNlKCRkYXRhLCAxNikpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbURlY2ltYWwoaW50ICR2YWx1ZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoQnJpY2tCaWdJbnRlZ2VyOjpvZigkdmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21CaWdJbnRlZ2VyKEJyaWNrQmlnSW50ZWdlciAkdmFsdWUpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb252ZXJ0cyBhIEJpZ0ludGVnZXIgdG8gYSBiaW5hcnkgc3RyaW5nLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9CeXRlcygpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnZhbHVlLT5pc0VxdWFsVG8oQnJpY2tCaWdJbnRlZ2VyOjp6ZXJvKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CgogICAgICAgICR0ZW1wID0gJHRoaXMtPnZhbHVlLT50b0Jhc2UoMTYpOwogICAgICAgICR0ZW1wID0gMCAhPT0gKG1iX3N0cmxlbigkdGVtcCwgJzhiaXQnKSAmIDEpID8gJzAnLiR0ZW1wIDogJHRlbXA7CiAgICAgICAgJHRlbXAgPSBoZXgyYmluKCR0ZW1wKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICR0ZW1wKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBjb252ZXJ0IHRoZSB2YWx1ZSBpbnRvIGJ5dGVzJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbHRyaW0oJHRlbXAsIGNocigwKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBBZGRzIHR3byBCaWdJbnRlZ2Vycy4KICAgICAqCiAgICAgKiAgQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqCiAgICAgKiAgQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoc2VsZiAkeSk6IHNlbGYKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dmFsdWUtPnBsdXMoJHktPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBTdWJ0cmFjdHMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqICBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqICBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHN1YnRyYWN0KHNlbGYgJHkpOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlLT5taW51cygkeS0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIE11bHRpcGxpZXMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR4CiAgICAgKgogICAgICogIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbXVsdGlwbHkoc2VsZiAkeCk6IHNlbGYKICAgIHsKICAgICAgICAkdmFsdWUgPSAkdGhpcy0+dmFsdWUtPm11bHRpcGxpZWRCeSgkeC0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIERpdmlkZXMgdHdvIEJpZ0ludGVnZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR4CiAgICAgKgogICAgICogIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZGl2aWRlKHNlbGYgJHgpOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlLT5kaXZpZGVkQnkoJHgtPnZhbHVlKTsKCiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR2YWx1ZSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBQZXJmb3JtcyBtb2R1bGFyIGV4cG9uZW50aWF0aW9uLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICRlCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkbgogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbW9kUG93KHNlbGYgJGUsIHNlbGYgJG4pOiBzZWxmCiAgICB7CiAgICAgICAgJHZhbHVlID0gJHRoaXMtPnZhbHVlLT5tb2RQb3coJGUtPnZhbHVlLCAkbi0+dmFsdWUpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIFBlcmZvcm1zIG1vZHVsYXIgZXhwb25lbnRpYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJGQKICAgICAqCiAgICAgKiBAcmV0dXJuIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIG1vZChzZWxmICRkKTogc2VsZgogICAgewogICAgICAgICR2YWx1ZSA9ICR0aGlzLT52YWx1ZS0+bW9kKCRkLT52YWx1ZSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkdmFsdWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBtb2RJbnZlcnNlKEJpZ0ludGVnZXIgJG0pOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR0aGlzLT52YWx1ZS0+bW9kSW52ZXJzZSgkbS0+dmFsdWUpKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbXBhcmVzIHR3byBudW1iZXJzLgogICAgICoKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjb21wYXJlKHNlbGYgJHkpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5jb21wYXJlVG8oJHktPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBlcXVhbHMoc2VsZiAkeSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5pc0VxdWFsVG8oJHktPnZhbHVlKTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwYXJhbSBCaWdJbnRlZ2VyICR5CiAgICAgKgogICAgICogQHJldHVybiBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmFuZG9tKHNlbGYgJHkpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKEJyaWNrQmlnSW50ZWdlcjo6cmFuZG9tUmFuZ2UoMCwgJHktPnZhbHVlKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQmlnSW50ZWdlciAkeQogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2NkKHNlbGYgJHkpOiBzZWxmCiAgICB7CiAgICAgICAgcmV0dXJuIG5ldyBzZWxmKCR0aGlzLT52YWx1ZS0+Z2NkKCR5LT52YWx1ZSkpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEJpZ0ludGVnZXIgJHkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvd2VyVGhhbihzZWxmICR5KTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWUtPmlzTGVzc1RoYW4oJHktPnZhbHVlKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNFdmVuKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnZhbHVlLT5pc0V2ZW4oKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0KCk6IEJyaWNrQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+dmFsdWU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/ECKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gZXh0ZW5zaW9uX2xvYWRlZDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRUNLZXkKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0VG9QRU0oSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoJGp3ay0+aGFzKCdkJykpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmNvbnZlcnRQcml2YXRlS2V5VG9QRU0oJGp3ayk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Y29udmVydFB1YmxpY0tleVRvUEVNKCRqd2spOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGN1cnZlIGlzIG5vdCBzdXBwb3J0ZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb252ZXJ0UHVibGljS2V5VG9QRU0oSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICBzd2l0Y2ggKCRqd2stPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgJGRlciA9IHNlbGY6OnAyNTZQdWJsaWNLZXkoKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ3NlY3AyNTZrMSc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDI1NktQdWJsaWNLZXkoKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ1AtMzg0JzoKICAgICAgICAgICAgICAgICRkZXIgPSBzZWxmOjpwMzg0UHVibGljS2V5KCk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDUyMVB1YmxpY0tleSgpOwoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGN1cnZlLicpOwogICAgICAgIH0KICAgICAgICAkZGVyIC49IHNlbGY6OmdldEtleSgkandrKTsKICAgICAgICAkcGVtID0gJy0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVyKSwgNjQsIFBIUF9FT0wpOwogICAgICAgICRwZW0gLj0gJy0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLScuUEhQX0VPTDsKCiAgICAgICAgcmV0dXJuICRwZW07CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY3VydmUgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNvbnZlcnRQcml2YXRlS2V5VG9QRU0oSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICBzd2l0Y2ggKCRqd2stPmdldCgnY3J2JykpIHsKICAgICAgICAgICAgY2FzZSAnUC0yNTYnOgogICAgICAgICAgICAgICAgJGRlciA9IHNlbGY6OnAyNTZQcml2YXRlS2V5KCRqd2spOwoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnc2VjcDI1NmsxJzoKICAgICAgICAgICAgICAgICRkZXIgPSBzZWxmOjpwMjU2S1ByaXZhdGVLZXkoJGp3ayk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdQLTM4NCc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDM4NFByaXZhdGVLZXkoJGp3ayk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdQLTUyMSc6CiAgICAgICAgICAgICAgICAkZGVyID0gc2VsZjo6cDUyMVByaXZhdGVLZXkoJGp3ayk7CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgY3VydmUuJyk7CiAgICAgICAgfQogICAgICAgICRkZXIgLj0gc2VsZjo6Z2V0S2V5KCRqd2spOwogICAgICAgICRwZW0gPSAnLS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tJy5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVyKSwgNjQsIFBIUF9FT0wpOwogICAgICAgICRwZW0gLj0gJy0tLS0tRU5EIEVDIFBSSVZBVEUgS0VZLS0tLS0nLlBIUF9FT0w7CgogICAgICAgIHJldHVybiAkcGVtOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIEVDIGtleSB3aXRoIHRoZSBnaXZlbiBjdXJ2ZSBhbmQgYWRkaXRpb25hbCB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkY3VydmUgIFRoZSBjdXJ2ZQogICAgICogQHBhcmFtIGFycmF5ICAkdmFsdWVzIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUVDS2V5KHN0cmluZyAkY3VydmUsIGFycmF5ICR2YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICRqd2sgPSBzZWxmOjpjcmVhdGVFQ0tleVVzaW5nT3BlblNTTCgkY3VydmUpOwogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgkdmFsdWVzLCAkandrKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY3VydmUgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXROaXN0Q3VydmVTaXplKHN0cmluZyAkY3VydmUpOiBpbnQKICAgIHsKICAgICAgICBzd2l0Y2ggKCRjdXJ2ZSkgewogICAgICAgICAgICBjYXNlICdQLTI1Nic6CiAgICAgICAgICAgIGNhc2UgJ3NlY3AyNTZrMSc6CiAgICAgICAgICAgICAgICByZXR1cm4gMjU2OwoKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgcmV0dXJuIDM4NDsKCiAgICAgICAgICAgIGNhc2UgJ1AtNTIxJzoKICAgICAgICAgICAgICAgIHJldHVybiA1MjE7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgY3VydmUgIiVzIiBpcyBub3Qgc3VwcG9ydGVkLicsICRjdXJ2ZSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgZXh0ZW5zaW9uIE9wZW5TU0wgaXMgbm90IGF2YWlsYWJsZQogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGNyZWF0ZWQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRUNLZXlVc2luZ09wZW5TU0woc3RyaW5nICRjdXJ2ZSk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdvcGVuc3NsJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1BsZWFzZSBpbnN0YWxsIHRoZSBPcGVuU1NMIGV4dGVuc2lvbicpOwogICAgICAgIH0KICAgICAgICAka2V5ID0gb3BlbnNzbF9wa2V5X25ldyhbCiAgICAgICAgICAgICdjdXJ2ZV9uYW1lJyA9PiBzZWxmOjpnZXRPcGVuc3NsQ3VydmVOYW1lKCRjdXJ2ZSksCiAgICAgICAgICAgICdwcml2YXRlX2tleV90eXBlJyA9PiBPUEVOU1NMX0tFWVRZUEVfRUMsCiAgICAgICAgXSk7CiAgICAgICAgaWYgKGZhbHNlID09PSAka2V5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gY3JlYXRlIHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJHJlc3VsdCA9IG9wZW5zc2xfcGtleV9leHBvcnQoJGtleSwgJG91dCk7CiAgICAgICAgaWYgKGZhbHNlID09PSAkcmVzdWx0KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdVbmFibGUgdG8gY3JlYXRlIHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkb3V0KTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBjcmVhdGUgdGhlIGtleScpOwogICAgICAgIH0KICAgICAgICAkZGV0YWlscyA9IG9wZW5zc2xfcGtleV9nZXRfZGV0YWlscygkcmVzKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRkZXRhaWxzKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgdGhlIGtleSBkZXRhaWxzJyk7CiAgICAgICAgfQogICAgICAgICRuaXN0Q3VydmVTaXplID0gc2VsZjo6Z2V0TmlzdEN1cnZlU2l6ZSgkY3VydmUpOwoKICAgICAgICByZXR1cm4gWwogICAgICAgICAgICAna3R5JyA9PiAnRUMnLAogICAgICAgICAgICAnY3J2JyA9PiAkY3VydmUsCiAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZShzdHJfcGFkKCRkZXRhaWxzWydlYyddWydkJ10sIChpbnQpIGNlaWwoJG5pc3RDdXJ2ZVNpemUgLyA4KSwgIlwwIiwgU1RSX1BBRF9MRUZUKSksCiAgICAgICAgICAgICd4JyA9PiBCYXNlNjRVcmw6OmVuY29kZShzdHJfcGFkKCRkZXRhaWxzWydlYyddWyd4J10sIChpbnQpIGNlaWwoJG5pc3RDdXJ2ZVNpemUgLyA4KSwgIlwwIiwgU1RSX1BBRF9MRUZUKSksCiAgICAgICAgICAgICd5JyA9PiBCYXNlNjRVcmw6OmVuY29kZShzdHJfcGFkKCRkZXRhaWxzWydlYyddWyd5J10sIChpbnQpIGNlaWwoJG5pc3RDdXJ2ZVNpemUgLyA4KSwgIlwwIiwgU1RSX1BBRF9MRUZUKSksCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBjdXJ2ZSBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldE9wZW5zc2xDdXJ2ZU5hbWUoc3RyaW5nICRjdXJ2ZSk6IHN0cmluZwogICAgewogICAgICAgIHN3aXRjaCAoJGN1cnZlKSB7CiAgICAgICAgICAgIGNhc2UgJ1AtMjU2JzoKICAgICAgICAgICAgICAgIHJldHVybiAncHJpbWUyNTZ2MSc7CgogICAgICAgICAgICBjYXNlICdzZWNwMjU2azEnOgogICAgICAgICAgICAgICAgcmV0dXJuICdzZWNwMjU2azEnOwoKICAgICAgICAgICAgY2FzZSAnUC0zODQnOgogICAgICAgICAgICAgICAgcmV0dXJuICdzZWNwMzg0cjEnOwoKICAgICAgICAgICAgY2FzZSAnUC01MjEnOgogICAgICAgICAgICAgICAgcmV0dXJuICdzZWNwNTIxcjEnOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGN1cnZlICIlcyIgaXMgbm90IHN1cHBvcnRlZC4nLCAkY3VydmUpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDI1NlB1YmxpY0tleSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gcGFjaygKICAgICAgICAgICAgJ0gqJywKICAgICAgICAgICAgJzMwNTknIC8vIFNFUVVFTkNFLCBsZW5ndGggODkKICAgICAgICAgICAgICAgIC4nMzAxMycgLy8gU0VRVUVOQ0UsIGxlbmd0aCAxOQogICAgICAgICAgICAgICAgICAgIC4nMDYwNycgLy8gT0lELCBsZW5ndGggNwogICAgICAgICAgICAgICAgICAgICAgICAuJzJhODY0OGNlM2QwMjAxJyAvLyAxLjIuODQwLjEwMDQ1LjIuMSA9IEVDIFB1YmxpYyBLZXkKICAgICAgICAgICAgICAgICAgICAuJzA2MDgnIC8vIE9JRCwgbGVuZ3RoIDgKICAgICAgICAgICAgICAgICAgICAgICAgLicyYTg2NDhjZTNkMDMwMTA3JyAvLyAxLjIuODQwLjEwMDQ1LjMuMS43ID0gUC0yNTYgQ3VydmUKICAgICAgICAgICAgICAgIC4nMDM0MicgLy8gQklUIFNUUklORywgbGVuZ3RoIDY2CiAgICAgICAgICAgICAgICAgICAgLicwMCcgLy8gcHJlcGVuZCB3aXRoIE5VTCAtIHB1YmtleSB3aWxsIGZvbGxvdwogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDI1NktQdWJsaWNLZXkoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHBhY2soCiAgICAgICAgICAgICdIKicsCiAgICAgICAgICAgICczMDU2JyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDg2CiAgICAgICAgICAgICAgICAuJzMwMTAnIC8vIFNFUVVFTkNFLCBsZW5ndGggMTYKICAgICAgICAgICAgICAgICAgICAuJzA2MDcnIC8vIE9JRCwgbGVuZ3RoIDcKICAgICAgICAgICAgICAgICAgICAgICAgLicyYTg2NDhjZTNkMDIwMScgLy8gMS4yLjg0MC4xMDA0NS4yLjEgPSBFQyBQdWJsaWMgS2V5CiAgICAgICAgICAgICAgICAgICAgLicwNjA1JyAvLyBPSUQsIGxlbmd0aCA4CiAgICAgICAgICAgICAgICAgICAgICAgIC4nMkI4MTA0MDAwQScgLy8gMS4zLjEzMi4wLjEwIHNlY3AyNTZrMQogICAgICAgICAgICAgICAgLicwMzQyJyAvLyBCSVQgU1RSSU5HLCBsZW5ndGggNjYKICAgICAgICAgICAgICAgICAgICAuJzAwJyAvLyBwcmVwZW5kIHdpdGggTlVMIC0gcHVia2V5IHdpbGwgZm9sbG93CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwMzg0UHVibGljS2V5KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA3NicgLy8gU0VRVUVOQ0UsIGxlbmd0aCAxMTgKICAgICAgICAgICAgICAgIC4nMzAxMCcgLy8gU0VRVUVOQ0UsIGxlbmd0aCAxNgogICAgICAgICAgICAgICAgICAgIC4nMDYwNycgLy8gT0lELCBsZW5ndGggNwogICAgICAgICAgICAgICAgICAgICAgICAuJzJhODY0OGNlM2QwMjAxJyAvLyAxLjIuODQwLjEwMDQ1LjIuMSA9IEVDIFB1YmxpYyBLZXkKICAgICAgICAgICAgICAgICAgICAuJzA2MDUnIC8vIE9JRCwgbGVuZ3RoIDUKICAgICAgICAgICAgICAgICAgICAgICAgLicyYjgxMDQwMDIyJyAvLyAxLjMuMTMyLjAuMzQgPSBQLTM4NCBDdXJ2ZQogICAgICAgICAgICAgICAgLicwMzYyJyAvLyBCSVQgU1RSSU5HLCBsZW5ndGggOTgKICAgICAgICAgICAgICAgICAgICAuJzAwJyAvLyBwcmVwZW5kIHdpdGggTlVMIC0gcHVia2V5IHdpbGwgZm9sbG93CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwNTIxUHVibGljS2V5KCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA4MTliJyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDE1NAogICAgICAgICAgICAgICAgLiczMDEwJyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDE2CiAgICAgICAgICAgICAgICAgICAgLicwNjA3JyAvLyBPSUQsIGxlbmd0aCA3CiAgICAgICAgICAgICAgICAgICAgICAgIC4nMmE4NjQ4Y2UzZDAyMDEnIC8vIDEuMi44NDAuMTAwNDUuMi4xID0gRUMgUHVibGljIEtleQogICAgICAgICAgICAgICAgICAgIC4nMDYwNScgLy8gT0lELCBsZW5ndGggNQogICAgICAgICAgICAgICAgICAgICAgICAuJzJiODEwNDAwMjMnIC8vIDEuMy4xMzIuMC4zNSA9IFAtNTIxIEN1cnZlCiAgICAgICAgICAgICAgICAuJzAzODE4NicgLy8gQklUIFNUUklORywgbGVuZ3RoIDEzNAogICAgICAgICAgICAgICAgICAgIC4nMDAnIC8vIHByZXBlbmQgd2l0aCBOVUwgLSBwdWJrZXkgd2lsbCBmb2xsb3cKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHAyNTZQcml2YXRlS2V5KEpXSyAkandrKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGQgPSB1bnBhY2soJ0gqJywgc3RyX3BhZChCYXNlNjRVcmw6OmRlY29kZSgkandrLT5nZXQoJ2QnKSksIDMyLCAiXDAiLCBTVFJfUEFEX0xFRlQpKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkKSB8fCAhaXNzZXQoJGRbMV0pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgdGhlIHByaXZhdGUga2V5Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcGFjaygKICAgICAgICAgICAgJ0gqJywKICAgICAgICAgICAgJzMwNzcnIC8vIFNFUVVFTkNFLCBsZW5ndGggODcrbGVuZ3RoKCRkKT0zMgogICAgICAgICAgICAgICAgLicwMjAxMDEnIC8vIElOVEVHRVIsIDEKICAgICAgICAgICAgICAgIC4nMDQyMCcgICAvLyBPQ1RFVCBTVFJJTkcsIGxlbmd0aCgkZCkgPSAzMgogICAgICAgICAgICAgICAgICAgIC4kZFsxXQogICAgICAgICAgICAgICAgLidhMDBhJyAvLyBUQUdHRUQgT0JKRUNUICMwLCBsZW5ndGggMTAKICAgICAgICAgICAgICAgICAgICAuJzA2MDgnIC8vIE9JRCwgbGVuZ3RoIDgKICAgICAgICAgICAgICAgICAgICAgICAgLicyYTg2NDhjZTNkMDMwMTA3JyAvLyAxLjMuMTMyLjAuMzQgPSBQLTI1NiBDdXJ2ZQogICAgICAgICAgICAgICAgLidhMTQ0JyAvLyAgVEFHR0VEIE9CSkVDVCAjMSwgbGVuZ3RoIDY4CiAgICAgICAgICAgICAgICAgICAgLicwMzQyJyAvLyBCSVQgU1RSSU5HLCBsZW5ndGggNjYKICAgICAgICAgICAgICAgICAgICAuJzAwJyAvLyBwcmVwZW5kIHdpdGggTlVMIC0gcHVia2V5IHdpbGwgZm9sbG93CiAgICAgICAgKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBwMjU2S1ByaXZhdGVLZXkoSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICAkZCA9IHVucGFjaygnSConLCBzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgMzIsICJcMCIsIFNUUl9QQURfTEVGVCkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGQpIHx8ICFpc3NldCgkZFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA3NCcgLy8gU0VRVUVOQ0UsIGxlbmd0aCA4NCtsZW5ndGgoJGQpPTMyCiAgICAgICAgICAgICAgICAuJzAyMDEwMScgLy8gSU5URUdFUiwgMQogICAgICAgICAgICAgICAgLicwNDIwJyAgIC8vIE9DVEVUIFNUUklORywgbGVuZ3RoKCRkKSA9IDMyCiAgICAgICAgICAgICAgICAgICAgLiRkWzFdCiAgICAgICAgICAgICAgICAuJ2EwMDcnIC8vIFRBR0dFRCBPQkpFQ1QgIzAsIGxlbmd0aCA3CiAgICAgICAgICAgICAgICAgICAgLicwNjA1JyAvLyBPSUQsIGxlbmd0aCA1CiAgICAgICAgICAgICAgICAgICAgICAgIC4nMmI4MTA0MDAwYScgLy8gIDEuMy4xMzIuMC4xMCBzZWNwMjU2azEKICAgICAgICAgICAgICAgIC4nYTE0NCcgLy8gIFRBR0dFRCBPQkpFQ1QgIzEsIGxlbmd0aCA2OAogICAgICAgICAgICAgICAgICAgIC4nMDM0MicgLy8gQklUIFNUUklORywgbGVuZ3RoIDY2CiAgICAgICAgICAgICAgICAgICAgLicwMCcgLy8gcHJlcGVuZCB3aXRoIE5VTCAtIHB1YmtleSB3aWxsIGZvbGxvdwogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDM4NFByaXZhdGVLZXkoSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICAkZCA9IHVucGFjaygnSConLCBzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgNDgsICJcMCIsIFNUUl9QQURfTEVGVCkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGQpIHx8ICFpc3NldCgkZFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA4MWE0JyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDExNiArIGxlbmd0aCgkZCk9NDgKICAgICAgICAgICAgICAgIC4nMDIwMTAxJyAvLyBJTlRFR0VSLCAxCiAgICAgICAgICAgICAgICAuJzA0MzAnICAgLy8gT0NURVQgU1RSSU5HLCBsZW5ndGgoJGQpID0gMzAKICAgICAgICAgICAgICAgICAgICAuJGRbMV0KICAgICAgICAgICAgICAgIC4nYTAwNycgLy8gVEFHR0VEIE9CSkVDVCAjMCwgbGVuZ3RoIDcKICAgICAgICAgICAgICAgICAgICAuJzA2MDUnIC8vIE9JRCwgbGVuZ3RoIDUKICAgICAgICAgICAgICAgICAgICAgICAgLicyYjgxMDQwMDIyJyAvLyAxLjMuMTMyLjAuMzQgPSBQLTM4NCBDdXJ2ZQogICAgICAgICAgICAgICAgLidhMTY0JyAvLyAgVEFHR0VEIE9CSkVDVCAjMSwgbGVuZ3RoIDEwMAogICAgICAgICAgICAgICAgICAgIC4nMDM2MicgLy8gQklUIFNUUklORywgbGVuZ3RoIDk4CiAgICAgICAgICAgICAgICAgICAgLicwMCcgLy8gcHJlcGVuZCB3aXRoIE5VTCAtIHB1YmtleSB3aWxsIGZvbGxvdwogICAgICAgICk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcDUyMVByaXZhdGVLZXkoSldLICRqd2spOiBzdHJpbmcKICAgIHsKICAgICAgICAkZCA9IHVucGFjaygnSConLCBzdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnZCcpKSwgNjYsICJcMCIsIFNUUl9QQURfTEVGVCkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGQpIHx8ICFpc3NldCgkZFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBwYWNrKAogICAgICAgICAgICAnSConLAogICAgICAgICAgICAnMzA4MWRjJyAvLyBTRVFVRU5DRSwgbGVuZ3RoIDE1NCArIGxlbmd0aCgkZCk9NjYKICAgICAgICAgICAgICAgIC4nMDIwMTAxJyAvLyBJTlRFR0VSLCAxCiAgICAgICAgICAgICAgICAuJzA0NDInICAgLy8gT0NURVQgU1RSSU5HLCBsZW5ndGgoZCkgPSA2NgogICAgICAgICAgICAgICAgICAgIC4kZFsxXQogICAgICAgICAgICAgICAgLidhMDA3JyAvLyBUQUdHRUQgT0JKRUNUICMwLCBsZW5ndGggNwogICAgICAgICAgICAgICAgICAgIC4nMDYwNScgLy8gT0lELCBsZW5ndGggNQogICAgICAgICAgICAgICAgICAgICAgICAuJzJiODEwNDAwMjMnIC8vIDEuMy4xMzIuMC4zNSA9IFAtNTIxIEN1cnZlCiAgICAgICAgICAgICAgICAuJ2ExODE4OScgLy8gIFRBR0dFRCBPQkpFQ1QgIzEsIGxlbmd0aCAxMzcKICAgICAgICAgICAgICAgICAgICAuJzAzODE4NicgLy8gQklUIFNUUklORywgbGVuZ3RoIDEzNAogICAgICAgICAgICAgICAgICAgIC4nMDAnIC8vIHByZXBlbmQgd2l0aCBOVUwgLSBwdWJrZXkgd2lsbCBmb2xsb3cKICAgICAgICApOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEtleShKV0sgJGp3ayk6IHN0cmluZwogICAgewogICAgICAgICRuaXN0Q3VydmVTaXplID0gc2VsZjo6Z2V0TmlzdEN1cnZlU2l6ZSgkandrLT5nZXQoJ2NydicpKTsKICAgICAgICAkbGVuZ3RoID0gKGludCkgY2VpbCgkbmlzdEN1cnZlU2l6ZSAvIDgpOwoKICAgICAgICByZXR1cm4KICAgICAgICAgICAgIlwwNCIKICAgICAgICAgICAgLnN0cl9wYWQoQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpLCAkbGVuZ3RoLCAiXDAiLCBTVFJfUEFEX0xFRlQpCiAgICAgICAgICAgIC5zdHJfcGFkKEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKSwgJGxlbmd0aCwgIlwwIiwgU1RSX1BBRF9MRUZUKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/ECSignature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBjb25zdCBTVFJfUEFEX0xFRlQ7CgovKioKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBFQ1NpZ25hdHVyZQp7CiAgICBwcml2YXRlIGNvbnN0IEFTTjFfU0VRVUVOQ0UgPSAnMzAnOwogICAgcHJpdmF0ZSBjb25zdCBBU04xX0lOVEVHRVIgPSAnMDInOwogICAgcHJpdmF0ZSBjb25zdCBBU04xX01BWF9TSU5HTEVfQllURSA9IDEyODsKICAgIHByaXZhdGUgY29uc3QgQVNOMV9MRU5HVEhfMkJZVEVTID0gJzgxJzsKICAgIHByaXZhdGUgY29uc3QgQVNOMV9CSUdfSU5URUdFUl9MSU1JVCA9ICc3Zic7CiAgICBwcml2YXRlIGNvbnN0IEFTTjFfTkVHQVRJVkVfSU5URUdFUiA9ICcwMCc7CiAgICBwcml2YXRlIGNvbnN0IEJZVEVfU0laRSA9IDI7CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgbGVuZ3RoIG9mIHRoZSBzaWduYXR1cmUgaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvQXNuMShzdHJpbmcgJHNpZ25hdHVyZSwgaW50ICRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkc2lnbmF0dXJlID0gYmluMmhleCgkc2lnbmF0dXJlKTsKCiAgICAgICAgaWYgKHNlbGY6Om9jdGV0TGVuZ3RoKCRzaWduYXR1cmUpICE9PSAkbGVuZ3RoKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgc2lnbmF0dXJlIGxlbmd0aC4nKTsKICAgICAgICB9CgogICAgICAgICRwb2ludFIgPSBzZWxmOjpwcmVwYXJlUG9zaXRpdmVJbnRlZ2VyKG1iX3N1YnN0cigkc2lnbmF0dXJlLCAwLCAkbGVuZ3RoLCAnOGJpdCcpKTsKICAgICAgICAkcG9pbnRTID0gc2VsZjo6cHJlcGFyZVBvc2l0aXZlSW50ZWdlcihtYl9zdWJzdHIoJHNpZ25hdHVyZSwgJGxlbmd0aCwgbnVsbCwgJzhiaXQnKSk7CgogICAgICAgICRsZW5ndGhSID0gc2VsZjo6b2N0ZXRMZW5ndGgoJHBvaW50Uik7CiAgICAgICAgJGxlbmd0aFMgPSBzZWxmOjpvY3RldExlbmd0aCgkcG9pbnRTKTsKCiAgICAgICAgJHRvdGFsTGVuZ3RoID0gJGxlbmd0aFIgKyAkbGVuZ3RoUyArIHNlbGY6OkJZVEVfU0laRSArIHNlbGY6OkJZVEVfU0laRTsKICAgICAgICAkbGVuZ3RoUHJlZml4ID0gJHRvdGFsTGVuZ3RoID4gc2VsZjo6QVNOMV9NQVhfU0lOR0xFX0JZVEUgPyBzZWxmOjpBU04xX0xFTkdUSF8yQllURVMgOiAnJzsKCiAgICAgICAgJGJpbiA9IGhleDJiaW4oCiAgICAgICAgICAgIHNlbGY6OkFTTjFfU0VRVUVOQ0UKICAgICAgICAgICAgLiRsZW5ndGhQcmVmaXguZGVjaGV4KCR0b3RhbExlbmd0aCkKICAgICAgICAgICAgLnNlbGY6OkFTTjFfSU5URUdFUi5kZWNoZXgoJGxlbmd0aFIpLiRwb2ludFIKICAgICAgICAgICAgLnNlbGY6OkFTTjFfSU5URUdFUi5kZWNoZXgoJGxlbmd0aFMpLiRwb2ludFMKICAgICAgICApOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRiaW4pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBwYXJzZSB0aGUgZGF0YScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiaW47CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgc2lnbmF0dXJlIGlzIG5vdCBhbiBBU04uMSBzZXF1ZW5jZQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZyb21Bc24xKHN0cmluZyAkc2lnbmF0dXJlLCBpbnQgJGxlbmd0aCk6IHN0cmluZwogICAgewogICAgICAgICRtZXNzYWdlID0gYmluMmhleCgkc2lnbmF0dXJlKTsKICAgICAgICAkcG9zaXRpb24gPSAwOwoKICAgICAgICBpZiAoc2VsZjo6QVNOMV9TRVFVRU5DRSAhPT0gc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sIHNlbGY6OkJZVEVfU0laRSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBkYXRhLiBTaG91bGQgc3RhcnQgd2l0aCBhIHNlcXVlbmNlLicpOwogICAgICAgIH0KCiAgICAgICAgaWYgKHNlbGY6OkFTTjFfTEVOR1RIXzJCWVRFUyA9PT0gc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sIHNlbGY6OkJZVEVfU0laRSkpIHsKICAgICAgICAgICAgJHBvc2l0aW9uICs9IHNlbGY6OkJZVEVfU0laRTsKICAgICAgICB9CgogICAgICAgICRwb2ludFIgPSBzZWxmOjpyZXRyaWV2ZVBvc2l0aXZlSW50ZWdlcihzZWxmOjpyZWFkQXNuMUludGVnZXIoJG1lc3NhZ2UsICRwb3NpdGlvbikpOwogICAgICAgICRwb2ludFMgPSBzZWxmOjpyZXRyaWV2ZVBvc2l0aXZlSW50ZWdlcihzZWxmOjpyZWFkQXNuMUludGVnZXIoJG1lc3NhZ2UsICRwb3NpdGlvbikpOwoKICAgICAgICAkYmluID0gaGV4MmJpbihzdHJfcGFkKCRwb2ludFIsICRsZW5ndGgsICcwJywgU1RSX1BBRF9MRUZUKS5zdHJfcGFkKCRwb2ludFMsICRsZW5ndGgsICcwJywgU1RSX1BBRF9MRUZUKSk7CiAgICAgICAgaWYgKCFpc19zdHJpbmcoJGJpbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIHBhcnNlIHRoZSBkYXRhJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGJpbjsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBvY3RldExlbmd0aChzdHJpbmcgJGRhdGEpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gKGludCkgKG1iX3N0cmxlbigkZGF0YSwgJzhiaXQnKSAvIHNlbGY6OkJZVEVfU0laRSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gcHJlcGFyZVBvc2l0aXZlSW50ZWdlcihzdHJpbmcgJGRhdGEpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAobWJfc3Vic3RyKCRkYXRhLCAwLCBzZWxmOjpCWVRFX1NJWkUsICc4Yml0JykgPiBzZWxmOjpBU04xX0JJR19JTlRFR0VSX0xJTUlUKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpBU04xX05FR0FUSVZFX0lOVEVHRVIuJGRhdGE7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoMCA9PT0gbWJfc3RycG9zKCRkYXRhLCBzZWxmOjpBU04xX05FR0FUSVZFX0lOVEVHRVIsIDAsICc4Yml0JykKICAgICAgICAgICAgJiYgbWJfc3Vic3RyKCRkYXRhLCAyLCBzZWxmOjpCWVRFX1NJWkUsICc4Yml0JykgPD0gc2VsZjo6QVNOMV9CSUdfSU5URUdFUl9MSU1JVCkgewogICAgICAgICAgICAkZGF0YSA9IG1iX3N1YnN0cigkZGF0YSwgMiwgbnVsbCwgJzhiaXQnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZWFkQXNuMUNvbnRlbnQoc3RyaW5nICRtZXNzYWdlLCBpbnQgJiRwb3NpdGlvbiwgaW50ICRsZW5ndGgpOiBzdHJpbmcKICAgIHsKICAgICAgICAkY29udGVudCA9IG1iX3N1YnN0cigkbWVzc2FnZSwgJHBvc2l0aW9uLCAkbGVuZ3RoLCAnOGJpdCcpOwogICAgICAgICRwb3NpdGlvbiArPSAkbGVuZ3RoOwoKICAgICAgICByZXR1cm4gJGNvbnRlbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZGF0YSBpcyBub3QgYW4gaW50ZWdlcgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiByZWFkQXNuMUludGVnZXIoc3RyaW5nICRtZXNzYWdlLCBpbnQgJiRwb3NpdGlvbik6IHN0cmluZwogICAgewogICAgICAgIGlmIChzZWxmOjpBU04xX0lOVEVHRVIgIT09IHNlbGY6OnJlYWRBc24xQ29udGVudCgkbWVzc2FnZSwgJHBvc2l0aW9uLCBzZWxmOjpCWVRFX1NJWkUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQgZGF0YS4gU2hvdWxkIGNvbnRhaW4gYW4gaW50ZWdlci4nKTsKICAgICAgICB9CgogICAgICAgICRsZW5ndGggPSAoaW50KSBoZXhkZWMoc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sIHNlbGY6OkJZVEVfU0laRSkpOwoKICAgICAgICByZXR1cm4gc2VsZjo6cmVhZEFzbjFDb250ZW50KCRtZXNzYWdlLCAkcG9zaXRpb24sICRsZW5ndGggKiBzZWxmOjpCWVRFX1NJWkUpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlUG9zaXRpdmVJbnRlZ2VyKHN0cmluZyAkZGF0YSk6IHN0cmluZwogICAgewogICAgICAgIHdoaWxlICgwID09PSBtYl9zdHJwb3MoJGRhdGEsIHNlbGY6OkFTTjFfTkVHQVRJVkVfSU5URUdFUiwgMCwgJzhiaXQnKQogICAgICAgICAgICAmJiBtYl9zdWJzdHIoJGRhdGEsIDIsIHNlbGY6OkJZVEVfU0laRSwgJzhiaXQnKSA+IHNlbGY6OkFTTjFfQklHX0lOVEVHRVJfTElNSVQpIHsKICAgICAgICAgICAgJGRhdGEgPSBtYl9zdWJzdHIoJGRhdGEsIDIsIG51bGwsICc4Yml0Jyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGRhdGE7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/Hash.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIEhhc2gKewogICAgLyoqCiAgICAgKiBIYXNoIFBhcmFtZXRlci4KICAgICAqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRoYXNoOwoKICAgIC8qKgogICAgICogREVSIGVuY29kaW5nIFQuCiAgICAgKgogICAgICogQHZhciBzdHJpbmcKICAgICAqLwogICAgcHJpdmF0ZSAkdDsKCiAgICAvKioKICAgICAqIEhhc2ggTGVuZ3RoLgogICAgICoKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJGxlbmd0aDsKCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KHN0cmluZyAkaGFzaCwgaW50ICRsZW5ndGgsIHN0cmluZyAkdCkKICAgIHsKICAgICAgICAkdGhpcy0+aGFzaCA9ICRoYXNoOwogICAgICAgICR0aGlzLT5sZW5ndGggPSAkbGVuZ3RoOwogICAgICAgICR0aGlzLT50ID0gJHQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIEhhc2gKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzaGExKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTEnLCAyMCwgIlx4MzBceDIxXHgzMFx4MDlceDA2XHgwNVx4MmJceDBlXHgwM1x4MDJceDFhXHgwNVx4MDBceDA0XHgxNCIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhMjU2KCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTI1NicsIDMyLCAiXHgzMFx4MzFceDMwXHgwZFx4MDZceDA5XHg2MFx4ODZceDQ4XHgwMVx4NjVceDAzXHgwNFx4MDJceDAxXHgwNVx4MDBceDA0XHgyMCIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhMzg0KCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTM4NCcsIDQ4LCAiXHgzMFx4NDFceDMwXHgwZFx4MDZceDA5XHg2MFx4ODZceDQ4XHgwMVx4NjVceDAzXHgwNFx4MDJceDAyXHgwNVx4MDBceDA0XHgzMCIpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBIYXNoCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2hhNTEyKCk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJ3NoYTUxMicsIDY0LCAiXHgzMFx4NTFceDMwXHgwZFx4MDZceDA5XHg2MFx4ODZceDQ4XHgwMVx4NjVceDAzXHgwNFx4MDJceDAzXHgwNVx4MDBceDA0XHg0MCIpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMZW5ndGgoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5sZW5ndGg7CiAgICB9CgogICAgLyoqCiAgICAgKiBDb21wdXRlIHRoZSBITUFDLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gaGFzaChzdHJpbmcgJHRleHQpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gaGFzaCgkdGhpcy0+aGFzaCwgJHRleHQsIHRydWUpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGFzaDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdCgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/JsonConverter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwp1c2UgVGhyb3dhYmxlOwoKZmluYWwgY2xhc3MgSnNvbkNvbnZlcnRlcgp7CiAgICAvKioKICAgICAqIEBwYXJhbSBtaXhlZCAkcGF5bG9hZAogICAgICoKICAgICAqIEB0aHJvd3MgUnVudGltZUV4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBjYW5ub3QgYmUgZW5jb2RlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVuY29kZSgkcGF5bG9hZCk6IHN0cmluZwogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYXRhID0ganNvbl9lbmNvZGUoJHBheWxvYWQsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgICAgICAgICAgaWYgKCFpc19zdHJpbmcoJGRhdGEpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZW5jb2RlIHRoZSBkYXRhJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAkZGF0YTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJHRocm93YWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb250ZW50LicsICR0aHJvd2FibGUtPmdldENvZGUoKSwgJHRocm93YWJsZSk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwYXlsb2FkIGNhbm5vdCBiZSBkZWNvZGVkCiAgICAgKgogICAgICogQHJldHVybiBtaXhlZAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlY29kZShzdHJpbmcgJHBheWxvYWQpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIGpzb25fZGVjb2RlKCRwYXlsb2FkLCB0cnVlLCA1MTIsIEpTT05fVU5FU0NBUEVEX1NMQVNIRVMgfCBKU09OX1VORVNDQVBFRF9VTklDT0RFKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJHRocm93YWJsZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb250ZW50LicsICR0aHJvd2FibGUtPmdldENvZGUoKSwgJHRocm93YWJsZSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/KeyChecker.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBmdW5jdGlvbiBpbl9hcnJheTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBLZXlDaGVja2VyCnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tLZXlVc2FnZShKV0sgJGtleSwgc3RyaW5nICR1c2FnZSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJGtleS0+aGFzKCd1c2UnKSkgewogICAgICAgICAgICBzZWxmOjpjaGVja1VzYWdlKCRrZXksICR1c2FnZSk7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2tleV9vcHMnKSkgewogICAgICAgICAgICBzZWxmOjpjaGVja09wZXJhdGlvbigka2V5LCAkdXNhZ2UpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgaXMgbm90IHN1aXRhYmxlIGZvciB0aGUgc2VsZWN0ZWQgYWxnb3JpdGhtCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tLZXlBbGdvcml0aG0oSldLICRrZXksIHN0cmluZyAkYWxnb3JpdGhtKTogdm9pZAogICAgewogICAgICAgIGlmICghJGtleS0+aGFzKCdhbGcnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5nZXQoJ2FsZycpICE9PSAkYWxnb3JpdGhtKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignS2V5IGlzIG9ubHkgYWxsb3dlZCBmb3IgYWxnb3JpdGhtICIlcyIuJywgJGtleS0+Z2V0KCdhbGcnKSkpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgaXMgbm90IHN1aXRhYmxlIGZvciB0aGUgc2VsZWN0ZWQgb3BlcmF0aW9uCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNoZWNrT3BlcmF0aW9uKEpXSyAka2V5LCBzdHJpbmcgJHVzYWdlKTogdm9pZAogICAgewogICAgICAgICRvcHMgPSAka2V5LT5nZXQoJ2tleV9vcHMnKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRvcHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0ludmFsaWQga2V5IHBhcmFtZXRlciAia2V5X29wcyIuIFNob3VsZCBiZSBhIGxpc3Qgb2Yga2V5IG9wZXJhdGlvbnMnKTsKICAgICAgICB9CgogICAgICAgIHN3aXRjaCAoJHVzYWdlKSB7CiAgICAgICAgICAgIGNhc2UgJ3ZlcmlmaWNhdGlvbic6CiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCd2ZXJpZnknLCAkb3BzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byB2ZXJpZnkgYSBzaWduYXR1cmUnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ3NpZ25hdHVyZSc6CiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCdzaWduJywgJG9wcywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdLZXkgY2Fubm90IGJlIHVzZWQgdG8gc2lnbicpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAnZW5jcnlwdGlvbic6CiAgICAgICAgICAgICAgICBpZiAoIWluX2FycmF5KCdlbmNyeXB0JywgJG9wcywgdHJ1ZSkgJiYgIWluX2FycmF5KCd3cmFwS2V5JywgJG9wcywgdHJ1ZSkgJiYgIWluX2FycmF5KCdkZXJpdmVLZXknLCAkb3BzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byBlbmNyeXB0Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlICdkZWNyeXB0aW9uJzoKICAgICAgICAgICAgICAgIGlmICghaW5fYXJyYXkoJ2RlY3J5cHQnLCAkb3BzLCB0cnVlKSAmJiAhaW5fYXJyYXkoJ3Vud3JhcEtleScsICRvcHMsIHRydWUpICYmICFpbl9hcnJheSgnZGVyaXZlQml0cycsICRvcHMsIHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignS2V5IGNhbm5vdCBiZSB1c2VkIHRvIGRlY3J5cHQnKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdXNhZ2UuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBpcyBub3Qgc3VpdGFibGUgZm9yIHRoZSBzZWxlY3RlZCBvcGVyYXRpb24KICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY2hlY2tVc2FnZShKV0sgJGtleSwgc3RyaW5nICR1c2FnZSk6IHZvaWQKICAgIHsKICAgICAgICAkdXNlID0gJGtleS0+Z2V0KCd1c2UnKTsKCiAgICAgICAgc3dpdGNoICgkdXNhZ2UpIHsKICAgICAgICAgICAgY2FzZSAndmVyaWZpY2F0aW9uJzoKICAgICAgICAgICAgY2FzZSAnc2lnbmF0dXJlJzoKICAgICAgICAgICAgICAgIGlmICgnc2lnJyAhPT0gJHVzZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byBzaWduIG9yIHZlcmlmeSBhIHNpZ25hdHVyZS4nKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ2VuY3J5cHRpb24nOgogICAgICAgICAgICBjYXNlICdkZWNyeXB0aW9uJzoKICAgICAgICAgICAgICAgIGlmICgnZW5jJyAhPT0gJHVzZSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0tleSBjYW5ub3QgYmUgdXNlZCB0byBlbmNyeXB0IG9yIGRlY3J5cHQuJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQga2V5IHVzYWdlLicpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-core/Util/RSAKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbDsKCnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfZXhpc3RzOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcQml0U3RyaW5nOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcSW50ZWdlcjsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXE51bGxPYmplY3Q7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2N0ZXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUlNBS2V5CnsKICAgIC8qKgogICAgICogQHZhciBTZXF1ZW5jZQogICAgICovCiAgICBwcml2YXRlICRzZXF1ZW5jZTsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcml2YXRlICRwcml2YXRlOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICR2YWx1ZXM7CgogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkbW9kdWx1czsKCiAgICAvKioKICAgICAqIEB2YXIgaW50CiAgICAgKi8KICAgIHByaXZhdGUgJG1vZHVsdXNfbGVuZ3RoOwoKICAgIC8qKgogICAgICogQHZhciBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHB1YmxpY19leHBvbmVudDsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHByaXZhdGVfZXhwb25lbnQ7CgogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXJbXQogICAgICovCiAgICBwcml2YXRlICRwcmltZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHByaXZhdGUgJGV4cG9uZW50cyA9IFtdOwoKICAgIC8qKgogICAgICogQHZhciBudWxsfEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkY29lZmZpY2llbnQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChKV0sgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPnZhbHVlcyA9ICRkYXRhLT5hbGwoKTsKICAgICAgICAkdGhpcy0+cG9wdWxhdGVCaWdJbnRlZ2VycygpOwogICAgICAgICR0aGlzLT5wcml2YXRlID0gYXJyYXlfa2V5X2V4aXN0cygnZCcsICR0aGlzLT52YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tSldLKEpXSyAkandrKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkandrKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kdWx1cygpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tb2R1bHVzOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bHVzTGVuZ3RoKCk6IGludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bW9kdWx1c19sZW5ndGg7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEV4cG9uZW50KCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICAkZCA9ICR0aGlzLT5nZXRQcml2YXRlRXhwb25lbnQoKTsKICAgICAgICBpZiAobnVsbCAhPT0gJGQpIHsKICAgICAgICAgICAgcmV0dXJuICRkOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRQdWJsaWNFeHBvbmVudCgpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaWNFeHBvbmVudCgpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wdWJsaWNfZXhwb25lbnQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFByaXZhdGVFeHBvbmVudCgpOiA/QmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJpdmF0ZV9leHBvbmVudDsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnByaW1lczsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFeHBvbmVudHMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmV4cG9uZW50czsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q29lZmZpY2llbnQoKTogP0JpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmNvZWZmaWNpZW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1B1YmxpYygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICFhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUlNBS2V5ICRwcml2YXRlCiAgICAgKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1B1YmxpYyhzZWxmICRwcml2YXRlKTogc2VsZgogICAgewogICAgICAgICRkYXRhID0gJHByaXZhdGUtPnRvQXJyYXkoKTsKICAgICAgICAka2V5cyA9IFsncCcsICdkJywgJ3EnLCAnZHAnLCAnZHEnLCAncWknXTsKICAgICAgICBmb3JlYWNoICgka2V5cyBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRrZXksICRkYXRhKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJGRhdGFbJGtleV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYobmV3IEpXSygkZGF0YSkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvUEVNKCk6IHN0cmluZwogICAgewogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+c2VxdWVuY2UpIHsKICAgICAgICAgICAgJHRoaXMtPnNlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5pbml0UHJpdmF0ZUtleSgpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHRoaXMtPmluaXRQdWJsaWNLZXkoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkcmVzdWx0ID0gJy0tLS0tQkVHSU4gJy4oJHRoaXMtPnByaXZhdGUgPyAnUlNBIFBSSVZBVEUnIDogJ1BVQkxJQycpLicgS0VZLS0tLS0nLlBIUF9FT0w7CiAgICAgICAgJHJlc3VsdCAuPSBjaHVua19zcGxpdChiYXNlNjRfZW5jb2RlKCR0aGlzLT5zZXF1ZW5jZS0+Z2V0QmluYXJ5KCkpLCA2NCwgUEhQX0VPTCk7CiAgICAgICAgJHJlc3VsdCAuPSAnLS0tLS1FTkQgJy4oJHRoaXMtPnByaXZhdGUgPyAnUlNBIFBSSVZBVEUnIDogJ1BVQkxJQycpLicgS0VZLS0tLS0nLlBIUF9FT0w7CgogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQoKICAgIC8qKgogICAgICogRXhwb25lbnRpYXRlIHdpdGggb3Igd2l0aG91dCBDaGluZXNlIFJlbWFpbmRlciBUaGVvcmVtLgogICAgICogT3BlcmF0aW9uIHdpdGggcHJpbWVzICdwJyBhbmQgJ3EnIGlzIGFwcG94LiAyeCBmYXN0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIFJTQUtleSAka2V5CiAgICAgKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBleHBvbmVudGlhdGlvbiBjYW5ub3QgYmUgYWNoaWV2ZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHBvbmVudGlhdGUoc2VsZiAka2V5LCBCaWdJbnRlZ2VyICRjKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIGlmICgkYy0+Y29tcGFyZShCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tRGVjaW1hbCgwKSkgPCAwIHx8ICRjLT5jb21wYXJlKCRrZXktPmdldE1vZHVsdXMoKSkgPiAwKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5pc1B1YmxpYygpIHx8IG51bGwgPT09ICRrZXktPmdldENvZWZmaWNpZW50KCkgfHwgMCA9PT0gY291bnQoJGtleS0+Z2V0UHJpbWVzKCkpIHx8IDAgPT09IGNvdW50KCRrZXktPmdldEV4cG9uZW50cygpKSkgewogICAgICAgICAgICByZXR1cm4gJGMtPm1vZFBvdygka2V5LT5nZXRFeHBvbmVudCgpLCAka2V5LT5nZXRNb2R1bHVzKCkpOwogICAgICAgIH0KCiAgICAgICAgJHAgPSAka2V5LT5nZXRQcmltZXMoKVswXTsKICAgICAgICAkcSA9ICRrZXktPmdldFByaW1lcygpWzFdOwogICAgICAgICRkUCA9ICRrZXktPmdldEV4cG9uZW50cygpWzBdOwogICAgICAgICRkUSA9ICRrZXktPmdldEV4cG9uZW50cygpWzFdOwogICAgICAgICRxSW52ID0gJGtleS0+Z2V0Q29lZmZpY2llbnQoKTsKCiAgICAgICAgJG0xID0gJGMtPm1vZFBvdygkZFAsICRwKTsKICAgICAgICAkbTIgPSAkYy0+bW9kUG93KCRkUSwgJHEpOwogICAgICAgICRoID0gJHFJbnYtPm11bHRpcGx5KCRtMS0+c3VidHJhY3QoJG0yKS0+YWRkKCRwKSktPm1vZCgkcCk7CgogICAgICAgIHJldHVybiAkbTItPmFkZCgkaC0+bXVsdGlwbHkoJHEpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHBvcHVsYXRlQmlnSW50ZWdlcnMoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5tb2R1bHVzID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snbiddKTsKICAgICAgICAkdGhpcy0+bW9kdWx1c19sZW5ndGggPSBtYl9zdHJsZW4oJHRoaXMtPmdldE1vZHVsdXMoKS0+dG9CeXRlcygpLCAnOGJpdCcpOwogICAgICAgICR0aGlzLT5wdWJsaWNfZXhwb25lbnQgPSAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydlJ10pOwoKICAgICAgICBpZiAoISR0aGlzLT5pc1B1YmxpYygpKSB7CiAgICAgICAgICAgICR0aGlzLT5wcml2YXRlX2V4cG9uZW50ID0gJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZCddKTsKCiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdwJywgJHRoaXMtPnZhbHVlcykgJiYgYXJyYXlfa2V5X2V4aXN0cygncScsICR0aGlzLT52YWx1ZXMpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+cHJpbWVzID0gWwogICAgICAgICAgICAgICAgICAgICR0aGlzLT5jb252ZXJ0QmFzZTY0U3RyaW5nVG9CaWdJbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ3AnXSksCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1sncSddKSwKICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygnZHAnLCAkdGhpcy0+dmFsdWVzKSAmJiBhcnJheV9rZXlfZXhpc3RzKCdkcScsICR0aGlzLT52YWx1ZXMpICYmIGFycmF5X2tleV9leGlzdHMoJ3FpJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+ZXhwb25lbnRzID0gWwogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydkcCddKSwKICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZHEnXSksCiAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Y29lZmZpY2llbnQgPSAkdGhpcy0+Y29udmVydEJhc2U2NFN0cmluZ1RvQmlnSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxaSddKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNvbnZlcnRCYXNlNjRTdHJpbmdUb0JpZ0ludGVnZXIoc3RyaW5nICR2YWx1ZSk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdmFsdWUpKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGluaXRQdWJsaWNLZXkoKTogdm9pZAogICAgewogICAgICAgICRvaWRfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjg0MC4xMTM1NDkuMS4xLjEnKSk7CiAgICAgICAgJG9pZF9zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IE51bGxPYmplY3QoKSk7CiAgICAgICAgJHRoaXMtPnNlcXVlbmNlLT5hZGRDaGlsZCgkb2lkX3NlcXVlbmNlKTsKICAgICAgICAkbiA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ24nXSkpOwogICAgICAgICRlID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZSddKSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZSA9IG5ldyBTZXF1ZW5jZSgpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRuKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZSk7CiAgICAgICAgJGtleV9iaXRfc3RyaW5nID0gbmV3IEJpdFN0cmluZyhiaW4yaGV4KCRrZXlfc2VxdWVuY2UtPmdldEJpbmFyeSgpKSk7CiAgICAgICAgJHRoaXMtPnNlcXVlbmNlLT5hZGRDaGlsZCgka2V5X2JpdF9zdHJpbmcpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW5pdFByaXZhdGVLZXkoKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IEludGVnZXIoMCkpOwogICAgICAgICRvaWRfc2VxdWVuY2UgPSBuZXcgU2VxdWVuY2UoKTsKICAgICAgICAkb2lkX3NlcXVlbmNlLT5hZGRDaGlsZChuZXcgT2JqZWN0SWRlbnRpZmllcignMS4yLjg0MC4xMTM1NDkuMS4xLjEnKSk7CiAgICAgICAgJG9pZF9zZXF1ZW5jZS0+YWRkQ2hpbGQobmV3IE51bGxPYmplY3QoKSk7CiAgICAgICAgJHRoaXMtPnNlcXVlbmNlLT5hZGRDaGlsZCgkb2lkX3NlcXVlbmNlKTsKICAgICAgICAkdiA9IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRuID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snbiddKSk7CiAgICAgICAgJGUgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydlJ10pKTsKICAgICAgICAkZCA9IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICRwID0gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1sncCddKSk7CiAgICAgICAgJHEgPSBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxJ10pKTsKICAgICAgICAkZHAgPSBhcnJheV9rZXlfZXhpc3RzKCdkcCcsICR0aGlzLT52YWx1ZXMpID8gbmV3IEludGVnZXIoJHRoaXMtPmZyb21CYXNlNjRUb0ludGVnZXIoJHRoaXMtPnZhbHVlc1snZHAnXSkpIDogbmV3IEludGVnZXIoMCk7CiAgICAgICAgJGRxID0gYXJyYXlfa2V5X2V4aXN0cygnZHEnLCAkdGhpcy0+dmFsdWVzKSA/IG5ldyBJbnRlZ2VyKCR0aGlzLT5mcm9tQmFzZTY0VG9JbnRlZ2VyKCR0aGlzLT52YWx1ZXNbJ2RxJ10pKSA6IG5ldyBJbnRlZ2VyKDApOwogICAgICAgICRxaSA9IGFycmF5X2tleV9leGlzdHMoJ3FpJywgJHRoaXMtPnZhbHVlcykgPyBuZXcgSW50ZWdlcigkdGhpcy0+ZnJvbUJhc2U2NFRvSW50ZWdlcigkdGhpcy0+dmFsdWVzWydxaSddKSkgOiBuZXcgSW50ZWdlcigwKTsKICAgICAgICAka2V5X3NlcXVlbmNlID0gbmV3IFNlcXVlbmNlKCk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJHYpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRuKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGQpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRwKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkcSk7CiAgICAgICAgJGtleV9zZXF1ZW5jZS0+YWRkQ2hpbGQoJGRwKTsKICAgICAgICAka2V5X3NlcXVlbmNlLT5hZGRDaGlsZCgkZHEpOwogICAgICAgICRrZXlfc2VxdWVuY2UtPmFkZENoaWxkKCRxaSk7CiAgICAgICAgJGtleV9vY3RldF9zdHJpbmcgPSBuZXcgT2N0ZXRTdHJpbmcoYmluMmhleCgka2V5X3NlcXVlbmNlLT5nZXRCaW5hcnkoKSkpOwogICAgICAgICR0aGlzLT5zZXF1ZW5jZS0+YWRkQ2hpbGQoJGtleV9vY3RldF9zdHJpbmcpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZyAkdmFsdWUKICAgICAqCiAgICAgKiBAcmV0dXJuIHN0cmluZwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGZyb21CYXNlNjRUb0ludGVnZXIoJHZhbHVlKQogICAgewogICAgICAgICR1bnBhY2tlZCA9IHVucGFjaygnSConLCBCYXNlNjRVcmw6OmRlY29kZSgkdmFsdWUpKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCR1bnBhY2tlZCkgfHwgMCA9PT0gY291bnQoJHVucGFja2VkKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZ2V0IHRoZSBwcml2YXRlIGtleScpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFxCcmlja1xNYXRoXEJpZ0ludGVnZXI6OmZyb21CYXNlKGN1cnJlbnQoJHVucGFja2VkKSwgMTYpLT50b0Jhc2UoMTApOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/AlgorithmAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBBbGdvcml0aG1BbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjptZWRpdW0oJ1RoZSBwYXJhbWV0ZXIgImFsZyIgc2hvdWxkIGJlIGFkZGVkLicpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ES256KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgRVMyNTZLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBjb21wb25lbnQgIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiIGlzIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoIWNsYXNzX2V4aXN0cyhOaXN0Q3VydmU6OmNsYXNzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIGluc3RhbGwgd2ViLXRva2VuL2p3dC11dGlsLWVjYyB0byB1c2UgdGhpcyBrZXkgYW5hbHl6ZXInKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghJGp3ay0+aGFzKCdjcnYnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnSW52YWxpZCBrZXkuIFRoZSBjb21wb25lbnRzICJjcnYiIGlzIG1pc3NpbmcuJykpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJ1AtMjU2JyAhPT0gJGp3ay0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR4ID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpOwogICAgICAgICR4TGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkeCwgJzhiaXQnKTsKICAgICAgICAkeSA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKTsKICAgICAgICAkeUxlbmd0aCA9IDggKiBtYl9zdHJsZW4oJHksICc4Yml0Jyk7CiAgICAgICAgaWYgKCR5TGVuZ3RoICE9PSAkeExlbmd0aCB8fCAyNTYgIT09ICR5TGVuZ3RoKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdJbnZhbGlkIGtleS4gVGhlIGNvbXBvbmVudHMgIngiIGFuZCAieSIgc2l6ZSBzaGFsbCBiZSAyNTYgYml0cy4nKSk7CiAgICAgICAgfQogICAgICAgICR4QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR4KSwgMTYpOwogICAgICAgICR5QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR5KSwgMTYpOwogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmUyNTYoKTsKICAgICAgICBpZiAoISRjdXJ2ZS0+Y29udGFpbnMoJHhCSSwgJHlCSSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ0ludmFsaWQga2V5LiBUaGUgcG9pbnQgaXMgbm90IG9uIHRoZSBjdXJ2ZS4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ES384KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgRVMzODRLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBjb21wb25lbnQgIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiIGlzIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoIWNsYXNzX2V4aXN0cyhOaXN0Q3VydmU6OmNsYXNzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIGluc3RhbGwgd2ViLXRva2VuL2p3dC11dGlsLWVjYyB0byB1c2UgdGhpcyBrZXkgYW5hbHl6ZXInKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghJGp3ay0+aGFzKCdjcnYnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnSW52YWxpZCBrZXkuIFRoZSBjb21wb25lbnRzICJjcnYiIGlzIG1pc3NpbmcuJykpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJ1AtMzg0JyAhPT0gJGp3ay0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR4ID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpOwogICAgICAgICR4TGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkeCwgJzhiaXQnKTsKICAgICAgICAkeSA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKTsKICAgICAgICAkeUxlbmd0aCA9IDggKiBtYl9zdHJsZW4oJHksICc4Yml0Jyk7CiAgICAgICAgaWYgKCR5TGVuZ3RoICE9PSAkeExlbmd0aCB8fCAzODQgIT09ICR5TGVuZ3RoKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdJbnZhbGlkIGtleS4gVGhlIGNvbXBvbmVudHMgIngiIGFuZCAieSIgc2l6ZSBzaGFsbCBiZSAzODQgYml0cy4nKSk7CiAgICAgICAgfQogICAgICAgICR4QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR4KSwgMTYpOwogICAgICAgICR5QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR5KSwgMTYpOwogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmUzODQoKTsKICAgICAgICBpZiAoISRjdXJ2ZS0+Y29udGFpbnMoJHhCSSwgJHlCSSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ0ludmFsaWQga2V5LiBUaGUgcG9pbnQgaXMgbm90IG9uIHRoZSBjdXJ2ZS4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ES512KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEJyaWNrXE1hdGhcQmlnSW50ZWdlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVjY1xOaXN0Q3VydmU7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgRVM1MTJLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBjb21wb25lbnQgIndlYi10b2tlbi9qd3QtdXRpbC1lY2MiIGlzIG1pc3NpbmcKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICAgIHsKICAgICAgICBpZiAoIWNsYXNzX2V4aXN0cyhOaXN0Q3VydmU6OmNsYXNzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignUGxlYXNlIGluc3RhbGwgd2ViLXRva2VuL2p3dC11dGlsLWVjYyB0byB1c2UgdGhpcyBrZXkgYW5hbHl6ZXInKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghJGp3ay0+aGFzKCdjcnYnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnSW52YWxpZCBrZXkuIFRoZSBjb21wb25lbnRzICJjcnYiIGlzIG1pc3NpbmcuJykpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoJ1AtNTIxJyAhPT0gJGp3ay0+Z2V0KCdjcnYnKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICR4ID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCd4JykpOwogICAgICAgICR4TGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkeCwgJzhiaXQnKTsKICAgICAgICAkeSA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgneScpKTsKICAgICAgICAkeUxlbmd0aCA9IDggKiBtYl9zdHJsZW4oJHksICc4Yml0Jyk7CiAgICAgICAgaWYgKCR5TGVuZ3RoICE9PSAkeExlbmd0aCB8fCA1MjggIT09ICR5TGVuZ3RoKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdJbnZhbGlkIGtleS4gVGhlIGNvbXBvbmVudHMgIngiIGFuZCAieSIgc2l6ZSBzaGFsbCBiZSA1MjggYml0cy4nKSk7CiAgICAgICAgfQogICAgICAgICR4QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR4KSwgMTYpOwogICAgICAgICR5QkkgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZShiaW4yaGV4KCR5KSwgMTYpOwogICAgICAgICRjdXJ2ZSA9IE5pc3RDdXJ2ZTo6Y3VydmU1MjEoKTsKICAgICAgICBpZiAoISRjdXJ2ZS0+Y29udGFpbnMoJHhCSSwgJHlCSSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ0ludmFsaWQga2V5LiBUaGUgcG9pbnQgaXMgbm90IG9uIHRoZSBjdXJ2ZS4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/HS256KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgSFMyNTZLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdvY3QnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpIHx8ICdIUzI1NicgIT09ICRqd2stPmdldCgnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICAka0xlbmd0aCA9IDggKiBtYl9zdHJsZW4oJGssICc4Yml0Jyk7CiAgICAgICAgaWYgKCRrTGVuZ3RoIDwgMjU2KSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdIUzI1NiBhbGdvcml0aG0gcmVxdWlyZXMgYXQgbGVhc3QgMjU2IGJpdHMga2V5IGxlbmd0aC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/HS384KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgSFMzODRLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdvY3QnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpIHx8ICdIUzM4NCcgIT09ICRqd2stPmdldCgnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICAka0xlbmd0aCA9IDggKiBtYl9zdHJsZW4oJGssICc4Yml0Jyk7CiAgICAgICAgaWYgKCRrTGVuZ3RoIDwgMzg0KSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdIUzM4NCBhbGdvcml0aG0gcmVxdWlyZXMgYXQgbGVhc3QgMzg0IGJpdHMga2V5IGxlbmd0aC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/HS512KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgSFM1MTJLZXlBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdvY3QnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgaWYgKCEkandrLT5oYXMoJ2FsZycpIHx8ICdIUzUxMicgIT09ICRqd2stPmdldCgnYWxnJykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICAka0xlbmd0aCA9IDggKiBtYl9zdHJsZW4oJGssICc4Yml0Jyk7CiAgICAgICAgaWYgKCRrTGVuZ3RoIDwgNTEyKSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdIUzUxMiBhbGdvcml0aG0gcmVxdWlyZXMgYXQgbGVhc3QgNTEyIGJpdHMga2V5IGxlbmd0aC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgppbnRlcmZhY2UgS2V5QW5hbHl6ZXIKewogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5c2UgdGhlIGtleSBhbmQgYWRkIG1lc3NhZ2VzIHRvIHRoZSBtZXNzYWdlIGJhZyBpZiBuZWVkZWQuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeyAnalyzerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpjbGFzcyBLZXlBbmFseXplck1hbmFnZXIKewogICAgLyoqCiAgICAgKiBAdmFyIEtleUFuYWx5emVyW10KICAgICAqLwogICAgcHJpdmF0ZSAkYW5hbHl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBBZGRzIGEgS2V5IEFuYWx5emVyIHRvIHRoZSBtYW5hZ2VyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKEtleUFuYWx5emVyICRhbmFseXplcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YW5hbHl6ZXJzW10gPSAkYW5hbHl6ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5emUgdGhlIEpXSyBvYmplY3QgdXNpbmcgYWxsIGFuYWx5emVycy4KICAgICAqIEl0IHJldHVybnMgYSBtZXNzYWdlIGJhZyB0aGF0IG1heSBjb250YWlucyBtZXNzYWdlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2spOiBNZXNzYWdlQmFnCiAgICB7CiAgICAgICAgJGJhZyA9IG5ldyBNZXNzYWdlQmFnKCk7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFuYWx5emVycyBhcyAkYW5hbHl6ZXIpIHsKICAgICAgICAgICAgJGFuYWx5emVyLT5hbmFseXplKCRqd2ssICRiYWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiYWc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeyIdentifierAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBLZXlJZGVudGlmaWVyQW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICghJGp3ay0+aGFzKCdraWQnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6bWVkaXVtKCdUaGUgcGFyYW1ldGVyICJraWQiIHNob3VsZCBiZSBhZGRlZC4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeysetAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgppbnRlcmZhY2UgS2V5c2V0QW5hbHl6ZXIKewogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5c2UgdGhlIGtleSBzZXQgYW5kIGFkZCBtZXNzYWdlcyB0byB0aGUgbWVzc2FnZSBiYWcgaWYgbmVlZGVkLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0tTZXQgJEpXS1NldCwgTWVzc2FnZUJhZyAkYmFnKTogdm9pZDsKfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/KeysetAnalyzerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgpjbGFzcyBLZXlzZXRBbmFseXplck1hbmFnZXIKewogICAgLyoqCiAgICAgKiBAdmFyIEtleXNldEFuYWx5emVyW10KICAgICAqLwogICAgcHJpdmF0ZSAkYW5hbHl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBBZGRzIGEgS2V5c2V0IEFuYWx5emVyIHRvIHRoZSBtYW5hZ2VyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkKEtleXNldEFuYWx5emVyICRhbmFseXplcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+YW5hbHl6ZXJzW10gPSAkYW5hbHl6ZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFuYWx5emUgdGhlIEpXS1NldCBvYmplY3QgdXNpbmcgYWxsIGFuYWx5emVycy4KICAgICAqIEl0IHJldHVybnMgYSBtZXNzYWdlIGJhZyB0aGF0IG1heSBjb250YWlucyBtZXNzYWdlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLU2V0ICRqd2tzZXQpOiBNZXNzYWdlQmFnCiAgICB7CiAgICAgICAgJGJhZyA9IG5ldyBNZXNzYWdlQmFnKCk7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFuYWx5emVycyBhcyAkYW5hbHl6ZXIpIHsKICAgICAgICAgICAgJGFuYWx5emVyLT5hbmFseXplKCRqd2tzZXQsICRiYWcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRiYWc7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/Message.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSnNvblNlcmlhbGl6YWJsZTsKCmNsYXNzIE1lc3NhZ2UgaW1wbGVtZW50cyBKc29uU2VyaWFsaXphYmxlCnsKICAgIHB1YmxpYyBjb25zdCBTRVZFUklUWV9MT1cgPSAnbG93JzsKCiAgICBwdWJsaWMgY29uc3QgU0VWRVJJVFlfTUVESVVNID0gJ21lZGl1bSc7CgogICAgcHVibGljIGNvbnN0IFNFVkVSSVRZX0hJR0ggPSAnaGlnaCc7CiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJG1lc3NhZ2U7CgogICAgLyoqCiAgICAgKiBAdmFyIHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRzZXZlcml0eTsKCiAgICAvKioKICAgICAqIE1lc3NhZ2UgY29uc3RydWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRtZXNzYWdlLCBzdHJpbmcgJHNldmVyaXR5KQogICAgewogICAgICAgICR0aGlzLT5tZXNzYWdlID0gJG1lc3NhZ2U7CiAgICAgICAgJHRoaXMtPnNldmVyaXR5ID0gJHNldmVyaXR5OwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIG1lc3NhZ2Ugd2l0aCBzZXZlcml0eT1sb3cuCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG93KHN0cmluZyAkbWVzc2FnZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJG1lc3NhZ2UsIHNlbGY6OlNFVkVSSVRZX0xPVyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbWVzc2FnZSB3aXRoIHNldmVyaXR5PW1lZGl1bS4KICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtZWRpdW0oc3RyaW5nICRtZXNzYWdlKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkbWVzc2FnZSwgc2VsZjo6U0VWRVJJVFlfTUVESVVNKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBtZXNzYWdlIHdpdGggc2V2ZXJpdHk9aGlnaC4KICAgICAqCiAgICAgKiBAcmV0dXJuIE1lc3NhZ2UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBoaWdoKHN0cmluZyAkbWVzc2FnZSk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJG1lc3NhZ2UsIHNlbGY6OlNFVkVSSVRZX0hJR0gpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgbWVzc2FnZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldE1lc3NhZ2UoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5tZXNzYWdlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgc2V2ZXJpdHkgb2YgdGhlIG1lc3NhZ2UuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXZlcml0eSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNldmVyaXR5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ21lc3NhZ2UnID0+ICR0aGlzLT5tZXNzYWdlLAogICAgICAgICAgICAnc2V2ZXJpdHknID0+ICR0aGlzLT5zZXZlcml0eSwKICAgICAgICBdOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/MessageBag.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQXJyYXlJdGVyYXRvcjsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgQ291bnRhYmxlOwp1c2UgSXRlcmF0b3JBZ2dyZWdhdGU7CnVzZSBKc29uU2VyaWFsaXphYmxlOwp1c2UgVHJhdmVyc2FibGU7CgpjbGFzcyBNZXNzYWdlQmFnIGltcGxlbWVudHMgSnNvblNlcmlhbGl6YWJsZSwgSXRlcmF0b3JBZ2dyZWdhdGUsIENvdW50YWJsZQp7CiAgICAvKioKICAgICAqIEB2YXIgTWVzc2FnZVtdCiAgICAgKi8KICAgIHByaXZhdGUgJG1lc3NhZ2VzID0gW107CgogICAgLyoqCiAgICAgKiBBZGRzIGEgbWVzc2FnZSB0byB0aGUgbWVzc2FnZSBiYWcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoTWVzc2FnZSAkbWVzc2FnZSk6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+bWVzc2FnZXNbXSA9ICRtZXNzYWdlOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyBhbGwgbWVzc2FnZXMuCiAgICAgKgogICAgICogQHJldHVybiBNZXNzYWdlW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bWVzc2FnZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBqc29uU2VyaWFsaXplKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X3ZhbHVlcygkdGhpcy0+bWVzc2FnZXMpOwogICAgfQoKICAgIC8qKgogICAgICoge0Bpbmhlcml0ZG9jfQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnQoKTogaW50CiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5tZXNzYWdlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiB7QGluaGVyaXRkb2N9CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRJdGVyYXRvcigpOiBUcmF2ZXJzYWJsZQogICAgewogICAgICAgIHJldHVybiBuZXcgQXJyYXlJdGVyYXRvcigkdGhpcy0+bWVzc2FnZXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/MixedKeyTypes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgpmaW5hbCBjbGFzcyBNaXhlZEtleVR5cGVzIGltcGxlbWVudHMgS2V5c2V0QW5hbHl6ZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLU2V0ICRqd2tzZXQsIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoMCA9PT0gJGp3a3NldC0+Y291bnQoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkaGFzU3ltbWV0cmljS2V5cyA9IGZhbHNlOwogICAgICAgICRoYXNBc3ltbWV0cmljS2V5cyA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkandrc2V0IGFzICRqd2spIHsKICAgICAgICAgICAgc3dpdGNoICgkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgICAgICBjYXNlICdvY3QnOgogICAgICAgICAgICAgICAgICAgICRoYXNTeW1tZXRyaWNLZXlzID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAnT0tQJzoKICAgICAgICAgICAgICAgIGNhc2UgJ1JTQSc6CiAgICAgICAgICAgICAgICBjYXNlICdFQyc6CiAgICAgICAgICAgICAgICAgICAgJGhhc0FzeW1tZXRyaWNLZXlzID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkaGFzQXN5bW1ldHJpY0tleXMgJiYgJGhhc1N5bW1ldHJpY0tleXMpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6Om1lZGl1bSgnVGhpcyBrZXkgc2V0IG1peGVzIHN5bW1ldHJpYyBhbmQgYXNzeW1ldHJpYyBrZXlzLicpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/MixedPublicAndPrivateKeys.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0tTZXQ7CgpmaW5hbCBjbGFzcyBNaXhlZFB1YmxpY0FuZFByaXZhdGVLZXlzIGltcGxlbWVudHMgS2V5c2V0QW5hbHl6ZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLU2V0ICRqd2tzZXQsIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoMCA9PT0gJGp3a3NldC0+Y291bnQoKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkaGFzUHVibGljS2V5cyA9IGZhbHNlOwogICAgICAgICRoYXNQcml2YXRlS2V5cyA9IGZhbHNlOwoKICAgICAgICBmb3JlYWNoICgkandrc2V0IGFzICRqd2spIHsKICAgICAgICAgICAgc3dpdGNoICgkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgICAgICBjYXNlICdPS1AnOgogICAgICAgICAgICAgICAgY2FzZSAnUlNBJzoKICAgICAgICAgICAgICAgIGNhc2UgJ0VDJzoKICAgICAgICAgICAgICAgICAgICBpZiAoJGp3ay0+aGFzKCdkJykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGhhc1ByaXZhdGVLZXlzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkaGFzUHVibGljS2V5cyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCRoYXNQcml2YXRlS2V5cyAmJiAkaGFzUHVibGljS2V5cykgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6aGlnaCgnVGhpcyBrZXkgc2V0IG1peGVzIHB1YmxpYyBhbmQgcHJpdmF0ZSBrZXlzLicpKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/NoneAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBOb25lQW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICgnbm9uZScgIT09ICRqd2stPmdldCgna3R5JykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoaXMga2V5IGlzIGEgbWVhbnQgdG8gYmUgdXNlZCB3aXRoIHRoZSBhbGdvcml0aG0gIm5vbmUiLiBUaGlzIGFsZ29yaXRobSBpcyBub3Qgc2VjdXJlZCBhbmQgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXJlLicpKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/OctAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwoKZmluYWwgY2xhc3MgT2N0QW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICgnb2N0JyAhPT0gJGp3ay0+Z2V0KCdrdHknKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgICRrID0gQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCdrJykpOwogICAgICAgICRrTGVuZ3RoID0gOCAqIG1iX3N0cmxlbigkaywgJzhiaXQnKTsKICAgICAgICBpZiAoJGtMZW5ndGggPCAxMjgpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoZSBrZXkgbGVuZ3RoIGlzIGxlc3MgdGhhbiAxMjggYml0cy4nKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/RsaAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CgpmaW5hbCBjbGFzcyBSc2FBbmFseXplciBpbXBsZW1lbnRzIEtleUFuYWx5emVyCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBhbmFseXplKEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCdSU0EnICE9PSAkandrLT5nZXQoJ2t0eScpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5jaGVja0V4cG9uZW50KCRqd2ssICRiYWcpOwogICAgICAgICR0aGlzLT5jaGVja01vZHVsdXMoJGp3aywgJGJhZyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0V4cG9uZW50KEpXSyAkandrLCBNZXNzYWdlQmFnICRiYWcpOiB2b2lkCiAgICB7CiAgICAgICAgJGV4cG9uZW50ID0gdW5wYWNrKCdsJywgc3RyX3BhZChCYXNlNjRVcmw6OmRlY29kZSgkandrLT5nZXQoJ2UnKSksIDQsICJcMCIpKTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRleHBvbmVudCkgfHwgIWlzc2V0KCRleHBvbmVudFsxXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGdldCB0aGUgcHJpdmF0ZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRleHBvbmVudFsxXSA8IDY1NTM3KSB7CiAgICAgICAgICAgICRiYWctPmFkZChNZXNzYWdlOjpoaWdoKCdUaGUgZXhwb25lbnQgaXMgdG9vIGxvdy4gSXQgc2hvdWxkIGJlIGF0IGxlYXN0IDY1NTM3LicpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja01vZHVsdXMoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICAkbiA9IDggKiBtYl9zdHJsZW4oQmFzZTY0VXJsOjpkZWNvZGUoJGp3ay0+Z2V0KCduJykpLCAnOGJpdCcpOwogICAgICAgIGlmICgkbiA8IDIwNDgpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoZSBrZXkgbGVuZ3RoIGlzIGxlc3MgdGhhbiAyMDQ4IGJpdHMuJykpOwogICAgICAgIH0KICAgICAgICBpZiAoJGp3ay0+aGFzKCdkJykgJiYgKCEkandrLT5oYXMoJ3AnKSB8fCAhJGp3ay0+aGFzKCdxJykgfHwgISRqd2stPmhhcygnZHAnKSB8fCAhJGp3ay0+aGFzKCdkcScpIHx8ICEkandrLT5oYXMoJ3AnKSB8fCAhJGp3ay0+aGFzKCdxaScpKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6bWVkaXVtKCdUaGUga2V5IGlzIGEgcHJpdmF0ZSBSU0Ega2V5LCBidXQgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSBwcmltZXMgYXJlIG1pc3NpbmcuIFRoZXNlIHByaW1lcyBhcmUgbm90IG1hbmRhdG9yeSwgYnV0IHNpZ25hdHVyZXMgYW5kIGRlY3J5cHRpb24gcHJvY2Vzc2VzIGFyZSBmYXN0ZXIgd2hlbiBhdmFpbGFibGUuJykpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/UsageAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgZnVuY3Rpb24gaW5fYXJyYXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKCmZpbmFsIGNsYXNzIFVzYWdlQW5hbHl6ZXIgaW1wbGVtZW50cyBLZXlBbmFseXplcgp7CiAgICBwdWJsaWMgZnVuY3Rpb24gYW5hbHl6ZShKV0sgJGp3aywgTWVzc2FnZUJhZyAkYmFnKTogdm9pZAogICAgewogICAgICAgIGlmICghJGp3ay0+aGFzKCd1c2UnKSkgewogICAgICAgICAgICAkYmFnLT5hZGQoTWVzc2FnZTo6bWVkaXVtKCdUaGUgcGFyYW1ldGVyICJ1c2UiIHNob3VsZCBiZSBhZGRlZC4nKSk7CiAgICAgICAgfSBlbHNlaWYgKCFpbl9hcnJheSgkandrLT5nZXQoJ3VzZScpLCBbJ3NpZycsICdlbmMnXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goc3ByaW50ZignVGhlIHBhcmFtZXRlciAidXNlIiBoYXMgYW4gdW5zdXBwb3J0ZWQgdmFsdWUgIiVzIi4gUGxlYXNlIHVzZSAic2lnIiAoc2lnbmF0dXJlKSBvciAiZW5jIiAoZW5jcnlwdGlvbikuJywgJGp3ay0+Z2V0KCd1c2UnKSkpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRqd2stPmhhcygna2V5X29wcycpICYmICFpbl9hcnJheSgkandrLT5nZXQoJ2tleV9vcHMnKSwgWydzaWduJywgJ3ZlcmlmeScsICdlbmNyeXB0JywgJ2RlY3J5cHQnLCAnd3JhcEtleScsICd1bndyYXBLZXknXSwgdHJ1ZSkpIHsKICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goc3ByaW50ZignVGhlIHBhcmFtZXRlciAia2V5X29wcyIgaGFzIGFuIHVuc3VwcG9ydGVkIHZhbHVlICIlcyIuIFBsZWFzZSB1c2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiAlcy4nLCAkandrLT5nZXQoJ3VzZScpLCBpbXBsb2RlKCcsICcsIFsndmVyaWZ5JywgJ3NpZ24nLCAnZW5jcnlwJywgJ2RlY3J5cHQnLCAnd3JhcEtleScsICd1bndyYXBLZXknXSkpKSk7CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/Analyzer/ZxcvbnKeyAnalyzer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcQW5hbHl6ZXI7Cgp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLOwp1c2UgWnhjdmJuUGhwXFp4Y3ZibjsKCmZpbmFsIGNsYXNzIFp4Y3ZibktleUFuYWx5emVyIGltcGxlbWVudHMgS2V5QW5hbHl6ZXIKewogICAgcHVibGljIGZ1bmN0aW9uIGFuYWx5emUoSldLICRqd2ssIE1lc3NhZ2VCYWcgJGJhZyk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoJ29jdCcgIT09ICRqd2stPmdldCgna3R5JykpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkayA9IEJhc2U2NFVybDo6ZGVjb2RlKCRqd2stPmdldCgnaycpKTsKICAgICAgICBpZiAoY2xhc3NfZXhpc3RzKFp4Y3Zibjo6Y2xhc3MpKSB7CiAgICAgICAgICAgICR6eGN2Ym4gPSBuZXcgWnhjdmJuKCk7CiAgICAgICAgICAgICRzdHJlbmd0aCA9ICR6eGN2Ym4tPnBhc3N3b3JkU3RyZW5ndGgoJGspOwoKICAgICAgICAgICAgc3dpdGNoICh0cnVlKSB7CiAgICAgICAgICAgICAgICBjYXNlICRzdHJlbmd0aFsnc2NvcmUnXSA8IDM6CiAgICAgICAgICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6OmhpZ2goJ1RoZSBvY3RldCBzdHJpbmcgaXMgd2VhayBhbmQgZWFzaWx5IGd1ZXNzYWJsZS4gUGxlYXNlIGNoYW5nZSB5b3VyIGtleSBhcyBzb29uIGFzIHBvc3NpYmxlLicpKTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgY2FzZSAzID09PSAkc3RyZW5ndGhbJ3Njb3JlJ106CiAgICAgICAgICAgICAgICAgICAgJGJhZy0+YWRkKE1lc3NhZ2U6Om1lZGl1bSgnVGhlIG9jdGV0IHN0cmluZyBpcyBzYWZlLCBidXQgYSBsb25nZXIga2V5IGlzIHByZWZlcmFibGUuJykpOwoKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1rZXktbWdtdCIsCiAgICAiZGVzY3JpcHRpb24iOiAiS2V5IE1hbmFnZW1lbnQgY29tcG9uZW50IG9mIHRoZSBKV1QgRnJhbWV3b3JrLiIsCiAgICAidHlwZSI6ICJsaWJyYXJ5IiwKICAgICJsaWNlbnNlIjogIk1JVCIsCiAgICAia2V5d29yZHMiOiBbIkpXUyIsICJKV1QiLCAiSldFIiwgIkpXQSIsICJKV0siLCAiSldLU2V0IiwgIkpvdCIsICJKb3NlIiwgIlJGQzc1MTUiLCAiUkZDNzUxNiIsICJSRkM3NTE3IiwgIlJGQzc1MTgiLCAiUkZDNzUxOSIsICJSRkM3NTIwIiwgIkJ1bmRsZSIsICJTeW1mb255Il0sCiAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbiIsCiAgICAiYXV0aG9ycyI6IFsKICAgICAgICB7CiAgICAgICAgICAgICJuYW1lIjogIkZsb3JlbnQgTW9yc2VsbGkiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL1Nwb21reSIKICAgICAgICB9LHsKICAgICAgICAgICAgIm5hbWUiOiAiQWxsIGNvbnRyaWJ1dG9ycyIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1rZXktbWdtdC9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXEtleU1hbmFnZW1lbnRcXCI6ICAiIgogICAgICAgIH0KICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAiZXh0LW9wZW5zc2wiOiAiKiIsCiAgICAgICAgInBzci9odHRwLWZhY3RvcnkiOiAiXjEuMCIsCiAgICAgICAgInBzci9odHRwLWNsaWVudCI6ICJeMS4wIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1jb3JlIjogIl4yLjAiCiAgICB9LAogICAgInN1Z2dlc3QiOiB7CiAgICAgICAgImV4dC1zb2RpdW0iOiAiU29kaXVtIGlzIHJlcXVpcmVkIGZvciBPS1Aga2V5IGNyZWF0aW9uLCBFZERTQSBzaWduYXR1cmUgYWxnb3JpdGhtIGFuZCBFQ0RILUVTIGtleSBlbmNyeXB0aW9uIHdpdGggT0tQIGtleXMiLAogICAgICAgICJ3ZWItdG9rZW4vand0LXV0aWwtZWNjIjogIlRvIHVzZSBFQyBrZXkgYW5hbHl6ZXJzLiIsCiAgICAgICAgInBocC1odHRwL21lc3NhZ2UtZmFjdG9yeSI6ICJUbyBlbmFibGUgSktVL1g1VSBzdXBwb3J0LiIsCiAgICAgICAgInBocC1odHRwL2h0dHBsdWciOiAiVG8gZW5hYmxlIEpLVS9YNVUgc3VwcG9ydC4iCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/JKUFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXS1NldDsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxKc29uQ29udmVydGVyOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCmNsYXNzIEpLVUZhY3RvcnkgZXh0ZW5kcyBVcmxLZXlTZXRGYWN0b3J5CnsKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gZmV0Y2ggdGhlIHVybCBhIHJldHJpZXZlIHRoZSBrZXkgc2V0LgogICAgICogVGhyb3dzIGFuIGV4Y2VwdGlvbiBpbiBjYXNlIG9mIGZhaWx1cmUuCiAgICAgKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIHJlYWNoZWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGxvYWRGcm9tVXJsKHN0cmluZyAkdXJsLCBhcnJheSAkaGVhZGVyID0gW10pOiBKV0tTZXQKICAgIHsKICAgICAgICAkY29udGVudCA9ICR0aGlzLT5nZXRDb250ZW50KCR1cmwsICRoZWFkZXIpOwogICAgICAgICRkYXRhID0gSnNvbkNvbnZlcnRlcjo6ZGVjb2RlKCRjb250ZW50KTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignSW52YWxpZCBjb250ZW50LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEpXS1NldDo6Y3JlYXRlRnJvbUtleURhdGEoJGRhdGEpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/JWKFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgZnVuY3Rpb24gYXJyYXlfa2V5X2V4aXN0czsKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBleHRlbnNpb25fbG9hZGVkOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLU2V0Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEVDS2V5Owp1c2UgSm9zZVxDb21wb25lbnRcS2V5TWFuYWdlbWVudFxLZXlDb252ZXJ0ZXJcS2V5Q29udmVydGVyOwp1c2UgSm9zZVxDb21wb25lbnRcS2V5TWFuYWdlbWVudFxLZXlDb252ZXJ0ZXJcUlNBS2V5Owp1c2UgUnVudGltZUV4Y2VwdGlvbjsKdXNlIFRocm93YWJsZTsKCmNsYXNzIEpXS0ZhY3RvcnkKewogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgUlNBIGtleSB3aXRoIHRoZSBnaXZlbiBrZXkgc2l6ZSBhbmQgYWRkaXRpb25hbCB2YWx1ZXMuCiAgICAgKgogICAgICogQHBhcmFtIGludCAgICRzaXplICAgVGhlIGtleSBzaXplIGluIGJpdHMKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleQogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgaGFzIGFuIGludmFsaWQgc2l6ZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSB0aGUga2V5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlUlNBS2V5KGludCAkc2l6ZSwgYXJyYXkgJHZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgaWYgKDAgIT09ICRzaXplICUgOCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGtleSBzaXplLicpOwogICAgICAgIH0KICAgICAgICBpZiAoNTEyID4gJHNpemUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignS2V5IGxlbmd0aCBpcyB0b28gc2hvcnQuIEl0IG5lZWRzIHRvIGJlIGF0IGxlYXN0IDUxMiBiaXRzLicpOwogICAgICAgIH0KCiAgICAgICAgJGtleSA9IG9wZW5zc2xfcGtleV9uZXcoWwogICAgICAgICAgICAncHJpdmF0ZV9rZXlfYml0cycgPT4gJHNpemUsCiAgICAgICAgICAgICdwcml2YXRlX2tleV90eXBlJyA9PiBPUEVOU1NMX0tFWVRZUEVfUlNBLAogICAgICAgIF0pOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGtleSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gY3JlYXRlIHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJGRldGFpbHMgPSBvcGVuc3NsX3BrZXlfZ2V0X2RldGFpbHMoJGtleSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkZGV0YWlscykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGNyZWF0ZSB0aGUga2V5Jyk7CiAgICAgICAgfQogICAgICAgICRyc2EgPSBSU0FLZXk6OmNyZWF0ZUZyb21LZXlEZXRhaWxzKCRkZXRhaWxzWydyc2EnXSk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICAkcnNhLT50b0FycmF5KCkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gbmV3IEpXSygkdmFsdWVzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBFQyBrZXkgd2l0aCB0aGUgZ2l2ZW4gY3VydmUgYW5kIGFkZGl0aW9uYWwgdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGN1cnZlICBUaGUgY3VydmUKICAgICAqIEBwYXJhbSBhcnJheSAgJHZhbHVlcyB2YWx1ZXMgdG8gY29uZmlndXJlIHRoZSBrZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVFQ0tleShzdHJpbmcgJGN1cnZlLCBhcnJheSAkdmFsdWVzID0gW10pOiBKV0sKICAgIHsKICAgICAgICByZXR1cm4gRUNLZXk6OmNyZWF0ZUVDS2V5KCRjdXJ2ZSwgJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgb2N0ZXQga2V5IHdpdGggdGhlIGdpdmVuIGtleSBzaXplIGFuZCBhZGRpdGlvbmFsIHZhbHVlcy4KICAgICAqCiAgICAgKiBAcGFyYW0gaW50ICAgJHNpemUgICBUaGUga2V5IHNpemUgaW4gYml0cwogICAgICogQHBhcmFtIGFycmF5ICR2YWx1ZXMgdmFsdWVzIHRvIGNvbmZpZ3VyZSB0aGUga2V5CiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBoYXMgYW4gaW52YWxpZCBzaXplCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT2N0S2V5KGludCAkc2l6ZSwgYXJyYXkgJHZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgaWYgKDAgIT09ICRzaXplICUgOCkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdJbnZhbGlkIGtleSBzaXplLicpOwogICAgICAgIH0KICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoCiAgICAgICAgICAgICR2YWx1ZXMsCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICdrdHknID0+ICdvY3QnLAogICAgICAgICAgICAgICAgJ2snID0+IEJhc2U2NFVybDo6ZW5jb2RlKHJhbmRvbV9ieXRlcygkc2l6ZSAvIDgpKSwKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIE9LUCBrZXkgd2l0aCB0aGUgZ2l2ZW4gY3VydmUgYW5kIGFkZGl0aW9uYWwgdmFsdWVzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmcgJGN1cnZlICBUaGUgY3VydmUKICAgICAqIEBwYXJhbSBhcnJheSAgJHZhbHVlcyB2YWx1ZXMgdG8gY29uZmlndXJlIHRoZSBrZXkKICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZXh0ZW5zaW9uICJzb2JpdW0iIGlzIG5vdCBhdmFpbGFibGUKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBjdXJ2ZSBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlT0tQS2V5KHN0cmluZyAkY3VydmUsIGFycmF5ICR2YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnc29kaXVtJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBleHRlbnNpb24gInNvZGl1bSIgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGluc3RhbGwgaXQgdG8gdXNlIHRoaXMgbWV0aG9kJyk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRjdXJ2ZSkgewogICAgICAgICAgICBjYXNlICdYMjU1MTknOgogICAgICAgICAgICAgICAgJGtleVBhaXIgPSBzb2RpdW1fY3J5cHRvX2JveF9rZXlwYWlyKCk7CiAgICAgICAgICAgICAgICAkc2VjcmV0ID0gc29kaXVtX2NyeXB0b19ib3hfc2VjcmV0a2V5KCRrZXlQYWlyKTsKICAgICAgICAgICAgICAgICR4ID0gc29kaXVtX2NyeXB0b19ib3hfcHVibGlja2V5KCRrZXlQYWlyKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgJ0VkMjU1MTknOgogICAgICAgICAgICAgICAgJGtleVBhaXIgPSBzb2RpdW1fY3J5cHRvX3NpZ25fa2V5cGFpcigpOwogICAgICAgICAgICAgICAgJHNlY3JldCA9IHNvZGl1bV9jcnlwdG9fc2lnbl9zZWNyZXRrZXkoJGtleVBhaXIpOwogICAgICAgICAgICAgICAgJHggPSBzb2RpdW1fY3J5cHRvX3NpZ25fcHVibGlja2V5KCRrZXlQYWlyKTsKCiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1Vuc3VwcG9ydGVkICIlcyIgY3VydmUnLCAkY3VydmUpKTsKICAgICAgICB9CiAgICAgICAgJHNlY3JldExlbmd0aCA9IG1iX3N0cmxlbigkc2VjcmV0LCAnOGJpdCcpOwogICAgICAgICRkID0gbWJfc3Vic3RyKCRzZWNyZXQsIDAsIC0kc2VjcmV0TGVuZ3RoIC8gMiwgJzhiaXQnKTsKCiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnT0tQJywKICAgICAgICAgICAgICAgICdjcnYnID0+ICRjdXJ2ZSwKICAgICAgICAgICAgICAgICdkJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkZCksCiAgICAgICAgICAgICAgICAneCcgPT4gQmFzZTY0VXJsOjplbmNvZGUoJHgpLAogICAgICAgICAgICBdCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgbm9uZSBrZXkgd2l0aCB0aGUgZ2l2ZW4gYWRkaXRpb25hbCB2YWx1ZXMuCiAgICAgKiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMga2V5IHR5cGUgaXMgbm90IHBhdCBvZiBhbnkgc3BlY2lmaWNhdGlvbi4KICAgICAqIEl0IGlzIHVzZWQgdG8gcHJldmVudCB0aGUgdXNlIG9mIHRoZSAibm9uZSIgYWxnb3JpdGhtIHdpdGggb3RoZXIga2V5IHR5cGVzLgogICAgICoKICAgICAqIEBwYXJhbSBhcnJheSAkdmFsdWVzIHZhbHVlcyB0byBjb25maWd1cmUgdGhlIGtleQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZU5vbmVLZXkoYXJyYXkgJHZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKAogICAgICAgICAgICAkdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnbm9uZScsCiAgICAgICAgICAgICAgICAnYWxnJyA9PiAnbm9uZScsCiAgICAgICAgICAgICAgICAndXNlJyA9PiAnc2lnJywKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogQ3JlYXRlcyBhIGtleSBmcm9tIGEgSnNvbiBzdHJpbmcuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBvciBrZXlzZXQgaXMgbm90IHZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBKV0t8SldLU2V0CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUpzb25PYmplY3Qoc3RyaW5nICR2YWx1ZSkKICAgIHsKICAgICAgICAkanNvbiA9IGpzb25fZGVjb2RlKCR2YWx1ZSwgdHJ1ZSk7CiAgICAgICAgaWYgKCFpc19hcnJheSgkanNvbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSW52YWxpZCBrZXkgb3Iga2V5IHNldC4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tVmFsdWVzKCRqc29uKTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBrZXkgb3Iga2V5IHNldCBmcm9tIHRoZSBnaXZlbiBpbnB1dC4KICAgICAqCiAgICAgKiBAcmV0dXJuIEpXS3xKV0tTZXQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tVmFsdWVzKGFycmF5ICR2YWx1ZXMpCiAgICB7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2tleXMnLCAkdmFsdWVzKSAmJiBpc19hcnJheSgkdmFsdWVzWydrZXlzJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBKV0tTZXQ6OmNyZWF0ZUZyb21LZXlEYXRhKCR2YWx1ZXMpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBjcmVhdGUgYSBKV0sgb2JqZWN0IHVzaW5nIGEgc2hhcmVkIHNlY3JldC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tU2VjcmV0KHN0cmluZyAkc2VjcmV0LCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBhcnJheV9tZXJnZSgKICAgICAgICAgICAgJGFkZGl0aW9uYWxfdmFsdWVzLAogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAna3R5JyA9PiAnb2N0JywKICAgICAgICAgICAgICAgICdrJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkc2VjcmV0KSwKICAgICAgICAgICAgXQogICAgICAgICk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhIFguNTA5IGNlcnRpZmljYXRlIGFuZCBjb252ZXJ0IGl0IGludG8gYSBwdWJsaWMga2V5LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21DZXJ0aWZpY2F0ZUZpbGUoc3RyaW5nICRmaWxlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGVGaWxlKCRmaWxlKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBFeHRyYWN0IGEga2V5ZnJvbSBhIGtleSBzZXQgaWRlbnRpZmllZCBieSB0aGUgZ2l2ZW4gaW5kZXggLgogICAgICoKICAgICAqIEBwYXJhbSBpbnR8c3RyaW5nICRpbmRleAogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21LZXlTZXQoSldLU2V0ICRqd2tzZXQsICRpbmRleCk6IEpXSwogICAgewogICAgICAgIHJldHVybiAkandrc2V0LT5nZXQoJGluZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgdHJ5IHRvIGxvYWQgYSBQS0NTIzEyIGZpbGUgYW5kIGNvbnZlcnQgaXQgaW50byBhIHB1YmxpYyBrZXkuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGNlcnRpZmljYXRlIGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tUEtDUzEyQ2VydGlmaWNhdGVGaWxlKHN0cmluZyAkZmlsZSwgP3N0cmluZyAkc2VjcmV0ID0gJycsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCRjb250ZW50KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byByZWFkIHRoZSBmaWxlLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG9wZW5zc2xfcGtjczEyX3JlYWQoJGNvbnRlbnQsICRjZXJ0cywgJHNlY3JldCk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICR0aHJvd2FibGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZXMuJywgJHRocm93YWJsZS0+Z2V0Q29kZSgpLCAkdGhyb3dhYmxlKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc19hcnJheSgkY2VydHMpIHx8ICFhcnJheV9rZXlfZXhpc3RzKCdwa2V5JywgJGNlcnRzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGNlcnRpZmljYXRlcy4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzZWxmOjpjcmVhdGVGcm9tS2V5KCRjZXJ0c1sncGtleSddLCBudWxsLCAkYWRkaXRpb25hbF92YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gY29udmVydCBhIFguNTA5IGNlcnRpZmljYXRlIGludG8gYSBwdWJsaWMga2V5LgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZUZyb21DZXJ0aWZpY2F0ZShzdHJpbmcgJGNlcnRpZmljYXRlLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnRpZmljYXRlKTsKICAgICAgICAkdmFsdWVzID0gYXJyYXlfbWVyZ2UoJHZhbHVlcywgJGFkZGl0aW9uYWxfdmFsdWVzKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV0soJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBjb252ZXJ0IGEgWC41MDkgY2VydGlmaWNhdGUgcmVzb3VyY2UgaW50byBhIHB1YmxpYyBrZXkuCiAgICAgKgogICAgICogQHBhcmFtIHJlc291cmNlICRyZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDUwOVJlc291cmNlKCRyZXMsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IEtleUNvbnZlcnRlcjo6bG9hZEtleUZyb21YNTA5UmVzb3VyY2UoJHJlcyk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgY29udmVydCBhIGtleSBmaWxlIGludG8gYSBKV0sgb2JqZWN0LgogICAgICogSWYgdGhlIGtleSBpcyBlbmNyeXB0ZWQsIHRoZSBwYXNzd29yZCBtdXN0IGJlIHNldC4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5RmlsZShzdHJpbmcgJGZpbGUsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCwgYXJyYXkgJGFkZGl0aW9uYWxfdmFsdWVzID0gW10pOiBKV0sKICAgIHsKICAgICAgICAkdmFsdWVzID0gS2V5Q29udmVydGVyOjpsb2FkRnJvbUtleUZpbGUoJGZpbGUsICRwYXNzd29yZCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgY29udmVydCBhIGtleSBpbnRvIGEgSldLIG9iamVjdC4KICAgICAqIElmIHRoZSBrZXkgaXMgZW5jcnlwdGVkLCB0aGUgcGFzc3dvcmQgbXVzdCBiZSBzZXQuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUtleShzdHJpbmcgJGtleSwgP3N0cmluZyAkcGFzc3dvcmQgPSBudWxsLCBhcnJheSAkYWRkaXRpb25hbF92YWx1ZXMgPSBbXSk6IEpXSwogICAgewogICAgICAgICR2YWx1ZXMgPSBLZXlDb252ZXJ0ZXI6OmxvYWRGcm9tS2V5KCRrZXksICRwYXNzd29yZCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgY29udmVydCBhIFguNTA5IGNlcnRpZmljYXRlIGNoYWluIGludG8gYSBwdWJsaWMga2V5LgogICAgICoKICAgICAqIEJlIGNhcmVmdWwhIFRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyBsb2FkZWQsIGJ1dCBpdCBpcyBOT1QgVkVSSUZJRUQgYnkgYW55IG1lYW4hCiAgICAgKiBJdCBpcyBtYW5kYXRvcnkgdG8gdmVyaWZ5IHRoZSByb290IENBIG9yIGludGVybWVkaWF0ZSAgQ0EgYXJlIHRydXN0ZWQuCiAgICAgKiBJZiBub3QgZG9uZSwgaXQgbWF5IGxlYWQgdG8gcG90ZW50aWFsIHNlY3VyaXR5IGlzc3Vlcy4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tWDVDKGFycmF5ICR4NWMsIGFycmF5ICRhZGRpdGlvbmFsX3ZhbHVlcyA9IFtdKTogSldLCiAgICB7CiAgICAgICAgJHZhbHVlcyA9IEtleUNvbnZlcnRlcjo6bG9hZEZyb21YNUMoJHg1Yyk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5X21lcmdlKCR2YWx1ZXMsICRhZGRpdGlvbmFsX3ZhbHVlcyk7CgogICAgICAgIHJldHVybiBuZXcgSldLKCR2YWx1ZXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/ECKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcS2V5Q29udmVydGVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gY291bnQ7CnVzZSBGR1xBU04xXEFTTk9iamVjdDsKdXNlIEZHXEFTTjFcRXhjZXB0aW9uXFBhcnNlckV4Y2VwdGlvbjsKdXNlIEZHXEFTTjFcRXhwbGljaXRseVRhZ2dlZE9iamVjdDsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEJpdFN0cmluZzsKdXNlIEZHXEFTTjFcVW5pdmVyc2FsXEludGVnZXI7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxPYmplY3RJZGVudGlmaWVyOwp1c2UgRkdcQVNOMVxVbml2ZXJzYWxcT2N0ZXRTdHJpbmc7CnVzZSBGR1xBU04xXFVuaXZlcnNhbFxTZXF1ZW5jZTsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgZnVuY3Rpb24gaXNfc3RyaW5nOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgRUNLZXkKewogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJHZhbHVlcyA9IFtdOwoKICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbVBFTShzdHJpbmcgJHBlbSk6IHNlbGYKICAgIHsKICAgICAgICAkZGF0YSA9IHNlbGY6OmxvYWRQRU0oJHBlbSk7CgogICAgICAgIHJldHVybiBuZXcgc2VsZigkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gRUNLZXkgJHByaXZhdGUKICAgICAqCiAgICAgKiBAcmV0dXJuIEVDS2V5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdG9QdWJsaWMoc2VsZiAkcHJpdmF0ZSk6IHNlbGYKICAgIHsKICAgICAgICAkZGF0YSA9ICRwcml2YXRlLT50b0FycmF5KCk7CiAgICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJ2QnLCAkZGF0YSkpIHsKICAgICAgICAgICAgdW5zZXQoJGRhdGFbJ2QnXSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9BcnJheSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGNhbm5vdCBiZSBsb2FkZWQKICAgICAqIEB0aHJvd3MgUGFyc2VyRXhjZXB0aW9uICAgICAgICAgIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsb2FkUEVNKHN0cmluZyAkZGF0YSk6IGFycmF5CiAgICB7CiAgICAgICAgJGRhdGEgPSBiYXNlNjRfZGVjb2RlKHByZWdfcmVwbGFjZSgnIy0uKi18XHJ8XG4jJywgJycsICRkYXRhKSwgdHJ1ZSk7CiAgICAgICAgJGFzbk9iamVjdCA9IEFTTk9iamVjdDo6ZnJvbUJpbmFyeSgkZGF0YSk7CiAgICAgICAgaWYgKCEkYXNuT2JqZWN0IGluc3RhbmNlb2YgU2VxdWVuY2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CiAgICAgICAgJGNoaWxkcmVuID0gJGFzbk9iamVjdC0+Z2V0Q2hpbGRyZW4oKTsKICAgICAgICBpZiAoc2VsZjo6aXNQS0NTOCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgICRjaGlsZHJlbiA9IHNlbGY6OmxvYWRQS0NTOCgkY2hpbGRyZW4pOwogICAgICAgIH0KCiAgICAgICAgaWYgKDQgPT09IGNvdW50KCRjaGlsZHJlbikpIHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRQcml2YXRlUEVNKCRjaGlsZHJlbik7CiAgICAgICAgfQogICAgICAgIGlmICgyID09PSBjb3VudCgkY2hpbGRyZW4pKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpsb2FkUHVibGljUEVNKCRjaGlsZHJlbik7CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEFTTk9iamVjdFtdICRjaGlsZHJlbgogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICogQHRocm93cyBQYXJzZXJFeGNlcHRpb24gICAgICAgICAgaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxvYWRQS0NTOChhcnJheSAkY2hpbGRyZW4pOiBhcnJheQogICAgewogICAgICAgICRiaW5hcnkgPSBoZXgyYmluKCRjaGlsZHJlblsyXS0+Z2V0Q29udGVudCgpKTsKICAgICAgICAkYXNuT2JqZWN0ID0gQVNOT2JqZWN0Ojpmcm9tQmluYXJ5KCRiaW5hcnkpOwogICAgICAgIGlmICghJGFzbk9iamVjdCBpbnN0YW5jZW9mIFNlcXVlbmNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFzbk9iamVjdC0+Z2V0Q2hpbGRyZW4oKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBsb2FkUHVibGljUEVNKGFycmF5ICRjaGlsZHJlbik6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCEkY2hpbGRyZW5bMF0gaW5zdGFuY2VvZiBTZXF1ZW5jZSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CgogICAgICAgICRzdWIgPSAkY2hpbGRyZW5bMF0tPmdldENoaWxkcmVuKCk7CiAgICAgICAgaWYgKCEkc3ViWzBdIGluc3RhbmNlb2YgT2JqZWN0SWRlbnRpZmllcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCcxLjIuODQwLjEwMDQ1LjIuMScgIT09ICRzdWJbMF0tPmdldENvbnRlbnQoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkc3ViWzFdIGluc3RhbmNlb2YgT2JqZWN0SWRlbnRpZmllcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBrZXkgdHlwZS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCEkY2hpbGRyZW5bMV0gaW5zdGFuY2VvZiBCaXRTdHJpbmcpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRiaXRzID0gJGNoaWxkcmVuWzFdLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGJpdHNfbGVuZ3RoID0gbWJfc3RybGVuKCRiaXRzLCAnOGJpdCcpOwogICAgICAgIGlmICgwICE9PSBtYl9zdHJwb3MoJGJpdHMsICcwNCcsIDAsICc4Yml0JykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQga2V5IHR5cGUnKTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZXMgPSBbJ2t0eScgPT4gJ0VDJ107CiAgICAgICAgJHZhbHVlc1snY3J2J10gPSBzZWxmOjpnZXRDdXJ2ZSgkc3ViWzFdLT5nZXRDb250ZW50KCkpOwoKICAgICAgICAkeEJpbiA9IGhleDJiaW4obWJfc3Vic3RyKCRiaXRzLCAyLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpKTsKICAgICAgICAkeUJpbiA9IGhleDJiaW4obWJfc3Vic3RyKCRiaXRzLCAoaW50KSAoKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiArIDIpLCAoJGJpdHNfbGVuZ3RoIC0gMikgLyAyLCAnOGJpdCcpKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkeEJpbikgfHwgIWlzX3N0cmluZygkeUJpbikpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICR2YWx1ZXNbJ3gnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR4QmluKTsKICAgICAgICAkdmFsdWVzWyd5J10gPSBCYXNlNjRVcmw6OmVuY29kZSgkeUJpbik7CgogICAgICAgIHJldHVybiAkdmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIE9JRCBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGdldEN1cnZlKHN0cmluZyAkb2lkKTogc3RyaW5nCiAgICB7CiAgICAgICAgJGN1cnZlcyA9IHNlbGY6OmdldFN1cHBvcnRlZEN1cnZlcygpOwogICAgICAgICRjdXJ2ZSA9IGFycmF5X3NlYXJjaCgkb2lkLCAkY3VydmVzLCB0cnVlKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkY3VydmUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIE9JRC4nKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkY3VydmU7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0U3VwcG9ydGVkQ3VydmVzKCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgJ1AtMjU2JyA9PiAnMS4yLjg0MC4xMDA0NS4zLjEuNycsCiAgICAgICAgICAgICdQLTM4NCcgPT4gJzEuMy4xMzIuMC4zNCcsCiAgICAgICAgICAgICdQLTUyMScgPT4gJzEuMy4xMzIuMC4zNScsCiAgICAgICAgXTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiB2ZXJpZnlWZXJzaW9uKEFTTk9iamVjdCAkY2hpbGRyZW4pOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCEkY2hpbGRyZW4gaW5zdGFuY2VvZiBJbnRlZ2VyIHx8ICcxJyAhPT0gJGNoaWxkcmVuLT5nZXRDb250ZW50KCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0WEFuZFkoQVNOT2JqZWN0ICRjaGlsZHJlbiwgc3RyaW5nICYkeCwgc3RyaW5nICYkeSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoISRjaGlsZHJlbiBpbnN0YW5jZW9mIEV4cGxpY2l0bHlUYWdnZWRPYmplY3QgfHwgIWlzX2FycmF5KCRjaGlsZHJlbi0+Z2V0Q29udGVudCgpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgICAgIH0KICAgICAgICBpZiAoISRjaGlsZHJlbi0+Z2V0Q29udGVudCgpWzBdIGluc3RhbmNlb2YgQml0U3RyaW5nKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkYml0cyA9ICRjaGlsZHJlbi0+Z2V0Q29udGVudCgpWzBdLT5nZXRDb250ZW50KCk7CiAgICAgICAgJGJpdHNfbGVuZ3RoID0gbWJfc3RybGVuKCRiaXRzLCAnOGJpdCcpOwoKICAgICAgICBpZiAoMCAhPT0gbWJfc3RycG9zKCRiaXRzLCAnMDQnLCAwLCAnOGJpdCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CiAgICAgICAgfQoKICAgICAgICAkeCA9IG1iX3N1YnN0cigkYml0cywgMiwgKGludCkgKCgkYml0c19sZW5ndGggLSAyKSAvIDIpLCAnOGJpdCcpOwogICAgICAgICR5ID0gbWJfc3Vic3RyKCRiaXRzLCAoaW50KSAoKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiArIDIpLCAoaW50KSAoKCRiaXRzX2xlbmd0aCAtIDIpIC8gMiksICc4Yml0Jyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2V0RChBU05PYmplY3QgJGNoaWxkcmVuKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKCEkY2hpbGRyZW4gaW5zdGFuY2VvZiBPY3RldFN0cmluZykgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRjaGlsZHJlbi0+Z2V0Q29udGVudCgpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxvYWRQcml2YXRlUEVNKGFycmF5ICRjaGlsZHJlbik6IGFycmF5CiAgICB7CiAgICAgICAgc2VsZjo6dmVyaWZ5VmVyc2lvbigkY2hpbGRyZW5bMF0pOwogICAgICAgICR4ID0gJyc7CiAgICAgICAgJHkgPSAnJzsKICAgICAgICAkZCA9IHNlbGY6OmdldEQoJGNoaWxkcmVuWzFdKTsKICAgICAgICBzZWxmOjpnZXRYQW5kWSgkY2hpbGRyZW5bM10sICR4LCAkeSk7CgogICAgICAgIGlmICghJGNoaWxkcmVuWzJdIGluc3RhbmNlb2YgRXhwbGljaXRseVRhZ2dlZE9iamVjdCB8fCAhaXNfYXJyYXkoJGNoaWxkcmVuWzJdLT5nZXRDb250ZW50KCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQogICAgICAgIGlmICghJGNoaWxkcmVuWzJdLT5nZXRDb250ZW50KClbMF0gaW5zdGFuY2VvZiBPYmplY3RJZGVudGlmaWVyKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkY3VydmUgPSAkY2hpbGRyZW5bMl0tPmdldENvbnRlbnQoKVswXS0+Z2V0Q29udGVudCgpOwogICAgICAgICRkQmluID0gaGV4MmJpbigkZCk7CiAgICAgICAgJHhCaW4gPSBoZXgyYmluKCR4KTsKICAgICAgICAkeUJpbiA9IGhleDJiaW4oJHkpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRkQmluKSB8fCAhaXNfc3RyaW5nKCR4QmluKSB8fCAhaXNfc3RyaW5nKCR5QmluKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5LicpOwogICAgICAgIH0KCiAgICAgICAgJHZhbHVlcyA9IFsna3R5JyA9PiAnRUMnXTsKICAgICAgICAkdmFsdWVzWydjcnYnXSA9IHNlbGY6OmdldEN1cnZlKCRjdXJ2ZSk7CiAgICAgICAgJHZhbHVlc1snZCddID0gQmFzZTY0VXJsOjplbmNvZGUoJGRCaW4pOwogICAgICAgICR2YWx1ZXNbJ3gnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR4QmluKTsKICAgICAgICAkdmFsdWVzWyd5J10gPSBCYXNlNjRVcmw6OmVuY29kZSgkeUJpbik7CgogICAgICAgIHJldHVybiAkdmFsdWVzOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEFTTk9iamVjdFtdICRjaGlsZHJlbgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBpc1BLQ1M4KGFycmF5ICRjaGlsZHJlbik6IGJvb2wKICAgIHsKICAgICAgICBpZiAoMyAhPT0gY291bnQoJGNoaWxkcmVuKSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQoKICAgICAgICAkY2xhc3NlcyA9IFswID0+IEludGVnZXI6OmNsYXNzLCAxID0+IFNlcXVlbmNlOjpjbGFzcywgMiA9PiBPY3RldFN0cmluZzo6Y2xhc3NdOwogICAgICAgIGZvcmVhY2ggKCRjbGFzc2VzIGFzICRrID0+ICRjbGFzcykgewogICAgICAgICAgICBpZiAoISRjaGlsZHJlblska10gaW5zdGFuY2VvZiAkY2xhc3MpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUga2V5IGlzIGludmFsaWQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBsb2FkSldLKGFycmF5ICRqd2spOiB2b2lkCiAgICB7CiAgICAgICAgJGtleXMgPSBbCiAgICAgICAgICAgICdrdHknID0+ICdUaGUga2V5IHBhcmFtZXRlciAia3R5IiBpcyBtaXNzaW5nLicsCiAgICAgICAgICAgICdjcnYnID0+ICdDdXJ2ZSBwYXJhbWV0ZXIgaXMgbWlzc2luZycsCiAgICAgICAgICAgICd4JyA9PiAnUG9pbnQgcGFyYW1ldGVycyBhcmUgbWlzc2luZy4nLAogICAgICAgICAgICAneScgPT4gJ1BvaW50IHBhcmFtZXRlcnMgYXJlIG1pc3NpbmcuJywKICAgICAgICBdOwogICAgICAgIGZvcmVhY2ggKCRrZXlzIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygkaywgJGp3aykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJHYpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJ0VDJyAhPT0gJGp3a1sna3R5J10pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignSldLIGlzIG5vdCBhbiBFbGxpcHRpYyBDdXJ2ZSBrZXkuJyk7CiAgICAgICAgfQogICAgICAgICR0aGlzLT52YWx1ZXMgPSAkandrOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/KeyConverter.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcS2V5Q29udmVydGVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gY291bnQ7CnVzZSBmdW5jdGlvbiBleHRlbnNpb25fbG9hZGVkOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwp1c2UgVGhyb3dhYmxlOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgS2V5Q29udmVydGVyCnsKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGNlcnRpZmljYXRlIGZpbGUgY2Fubm90IGJlIHJlYWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbUNlcnRpZmljYXRlRmlsZShzdHJpbmcgJGZpbGUpOiBhcnJheQogICAgewogICAgICAgIGlmICghZmlsZV9leGlzdHMoJGZpbGUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignRmlsZSAiJXMiIGRvZXMgbm90IGV4aXN0LicsICRmaWxlKSk7CiAgICAgICAgfQogICAgICAgICRjb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJGZpbGUpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRjb250ZW50KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ0ZpbGUgIiVzIiBjYW5ub3QgYmUgcmVhZC4nLCAkZmlsZSkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNvbnRlbnQpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIE9wZW5TU0wgZXh0ZW5zaW9uIGlzIG5vdCBhdmFpbGFibGUKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBjZXJ0aWZpY2F0ZSBpcyBpbnZhbGlkIG9yIGNhbm5vdCBiZSBsb2FkZWQKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkS2V5RnJvbUNlcnRpZmljYXRlKHN0cmluZyAkY2VydGlmaWNhdGUpOiBhcnJheQogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2UgaW5zdGFsbCB0aGUgT3BlblNTTCBleHRlbnNpb24nKTsKICAgICAgICB9CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRyZXMgPSBvcGVuc3NsX3g1MDlfcmVhZCgkY2VydGlmaWNhdGUpOwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZS4nKTsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICAkY2VydGlmaWNhdGUgPSBzZWxmOjpjb252ZXJ0RGVyVG9QZW0oJGNlcnRpZmljYXRlKTsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfeDUwOV9yZWFkKCRjZXJ0aWZpY2F0ZSk7CiAgICAgICAgfQogICAgICAgIGlmIChmYWxzZSA9PT0gJHJlcykgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUgY2VydGlmaWNhdGUuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21YNTA5UmVzb3VyY2UoJHJlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gcmVzb3VyY2UgJHJlcwogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBPcGVuU1NMIGV4dGVuc2lvbiBpcyBub3QgYXZhaWxhYmxlCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY2VydGlmaWNhdGUgaXMgaW52YWxpZCBvciBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEtleUZyb21YNTA5UmVzb3VyY2UoJHJlcyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCFleHRlbnNpb25fbG9hZGVkKCdvcGVuc3NsJykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1BsZWFzZSBpbnN0YWxsIHRoZSBPcGVuU1NMIGV4dGVuc2lvbicpOwogICAgICAgIH0KICAgICAgICAka2V5ID0gb3BlbnNzbF9nZXRfcHVibGlja2V5KCRyZXMpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGtleSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUgY2VydGlmaWNhdGUuJyk7CiAgICAgICAgfQogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRrZXkpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRldGFpbHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZScpOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJGRldGFpbHNbJ2tleSddKSkgewogICAgICAgICAgICAkdmFsdWVzID0gc2VsZjo6bG9hZEtleUZyb21QRU0oJGRldGFpbHNbJ2tleSddKTsKICAgICAgICAgICAgb3BlbnNzbF94NTA5X2V4cG9ydCgkcmVzLCAkb3V0KTsKICAgICAgICAgICAgJHg1YyA9IHByZWdfcmVwbGFjZSgnIy0uKi0jJywgJycsICRvdXQpOwogICAgICAgICAgICAkeDVjID0gcHJlZ19yZXBsYWNlKCd+XFJ+JywgUEhQX0VPTCwgJHg1Yyk7CiAgICAgICAgICAgIGlmICghaXNfc3RyaW5nKCR4NWMpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUgY2VydGlmaWNhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkeDVjID0gdHJpbSgkeDVjKTsKCiAgICAgICAgICAgICR4NXRzaGExID0gb3BlbnNzbF94NTA5X2ZpbmdlcnByaW50KCRyZXMsICdzaGExJywgdHJ1ZSk7CiAgICAgICAgICAgICR4NXRzaGEyNTYgPSBvcGVuc3NsX3g1MDlfZmluZ2VycHJpbnQoJHJlcywgJ3NoYTI1NicsIHRydWUpOwogICAgICAgICAgICBpZiAoIWlzX3N0cmluZygkeDV0c2hhMSkgfHwgIWlzX3N0cmluZygkeDV0c2hhMjU2KSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGNvbXB1dGUgdGhlIGNlcnRpZmljYXRlIGZpbmdlcnByaW50Jyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR2YWx1ZXNbJ3g1YyddID0gWyR4NWNdOwogICAgICAgICAgICAkdmFsdWVzWyd4NXQnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR4NXRzaGExKTsKICAgICAgICAgICAgJHZhbHVlc1sneDV0IzI1NiddID0gQmFzZTY0VXJsOjplbmNvZGUoJHg1dHNoYTI1Nik7CgogICAgICAgICAgICByZXR1cm4gJHZhbHVlczsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZScpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21LZXlGaWxlKHN0cmluZyAkZmlsZSwgP3N0cmluZyAkcGFzc3dvcmQgPSBudWxsKTogYXJyYXkKICAgIHsKICAgICAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsKICAgICAgICBpZiAoIWlzX3N0cmluZygkY29udGVudCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleSBmcm9tIHRoZSBmaWxlLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRGcm9tS2V5KCRjb250ZW50LCAkcGFzc3dvcmQpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21LZXkoc3RyaW5nICRrZXksID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IGFycmF5CiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRLZXlGcm9tREVSKCRrZXksICRwYXNzd29yZCk7CiAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlICRlKSB7CiAgICAgICAgICAgIHJldHVybiBzZWxmOjpsb2FkS2V5RnJvbVBFTSgka2V5LCAkcGFzc3dvcmQpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEJlIGNhcmVmdWwhIFRoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyBsb2FkZWQsIGJ1dCBpdCBpcyBOT1QgVkVSSUZJRUQgYnkgYW55IG1lYW4hCiAgICAgKiBJdCBpcyBtYW5kYXRvcnkgdG8gdmVyaWZ5IHRoZSByb290IENBIG9yIGludGVybWVkaWF0ZSAgQ0EgYXJlIHRydXN0ZWQuCiAgICAgKiBJZiBub3QgZG9uZSwgaXQgbWF5IGxlYWQgdG8gcG90ZW50aWFsIHNlY3VyaXR5IGlzc3Vlcy4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgY2VydGlmaWNhdGUgY2hhaW4gaXMgZW1wdHkKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBPcGVuU1NMIGV4dGVuc2lvbiBpcyBub3QgYXZhaWxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZEZyb21YNUMoYXJyYXkgJHg1Yyk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKDAgPT09IGNvdW50KCR4NWMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBjZXJ0aWZpY2F0ZSBjaGFpbiBpcyBlbXB0eScpOwogICAgICAgIH0KICAgICAgICBmb3JlYWNoICgkeDVjIGFzICRpZCA9PiAkY2VydCkgewogICAgICAgICAgICAkeDVjWyRpZF0gPSAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLmNodW5rX3NwbGl0KCRjZXJ0LCA2NCwgUEhQX0VPTCkuJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nOwogICAgICAgICAgICAkeDUwOSA9IG9wZW5zc2xfeDUwOV9yZWFkKCR4NWNbJGlkXSk7CiAgICAgICAgICAgIGlmIChmYWxzZSA9PT0gJHg1MDkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRwYXJzZWQgPSBvcGVuc3NsX3g1MDlfcGFyc2UoJHg1MDkpOwogICAgICAgICAgICBpZiAoZmFsc2UgPT09ICRwYXJzZWQpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBjZXJ0aWZpY2F0ZSBjaGFpbicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6bG9hZEtleUZyb21DZXJ0aWZpY2F0ZShyZXNldCgkeDVjKSk7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gbG9hZEtleUZyb21ERVIoc3RyaW5nICRkZXIsID9zdHJpbmcgJHBhc3N3b3JkID0gbnVsbCk6IGFycmF5CiAgICB7CiAgICAgICAgJHBlbSA9IHNlbGY6OmNvbnZlcnREZXJUb1BlbSgkZGVyKTsKCiAgICAgICAgcmV0dXJuIHNlbGY6OmxvYWRLZXlGcm9tUEVNKCRwZW0sICRwYXNzd29yZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgT3BlblNTTCBleHRlbnNpb24gaXMgbm90IGF2YWlsYWJsZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKi8KICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGxvYWRLZXlGcm9tUEVNKHN0cmluZyAkcGVtLCA/c3RyaW5nICRwYXNzd29yZCA9IG51bGwpOiBhcnJheQogICAgewogICAgICAgIGlmICgxID09PSBwcmVnX21hdGNoKCcjREVLLUluZm86ICguKyksKC4rKSMnLCAkcGVtLCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgJHBlbSA9IHNlbGY6OmRlY29kZVBlbSgkcGVtLCAkbWF0Y2hlcywgJHBhc3N3b3JkKTsKICAgICAgICB9CgogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2UgaW5zdGFsbCB0aGUgT3BlblNTTCBleHRlbnNpb24nKTsKICAgICAgICB9CiAgICAgICAgc2VsZjo6c2FuaXRpemVQRU0oJHBlbSk7CiAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkcGVtKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHVibGljKCRwZW0pOwogICAgICAgIH0KICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRyZXMpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRldGFpbHMpIHx8ICFhcnJheV9rZXlfZXhpc3RzKCd0eXBlJywgJGRldGFpbHMpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgZGV0YWlscyBvZiB0aGUga2V5Jyk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKCRkZXRhaWxzWyd0eXBlJ10pIHsKICAgICAgICAgICAgY2FzZSBPUEVOU1NMX0tFWVRZUEVfRUM6CiAgICAgICAgICAgICAgICAkZWNfa2V5ID0gRUNLZXk6OmNyZWF0ZUZyb21QRU0oJHBlbSk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRlY19rZXktPnRvQXJyYXkoKTsKCiAgICAgICAgICAgIGNhc2UgT1BFTlNTTF9LRVlUWVBFX1JTQToKICAgICAgICAgICAgICAgICRyc2Ffa2V5ID0gUlNBS2V5OjpjcmVhdGVGcm9tUEVNKCRwZW0pOwoKICAgICAgICAgICAgICAgIHJldHVybiAkcnNhX2tleS0+dG9BcnJheSgpOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGtleSB0eXBlJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhlIFBFTSB0byBnZXQgNjQgY2hhciBsaW5lcyBhbmQgZml4IGJ1ZyB3aXRoIG9sZCBPcGVuU1NMIHZlcnNpb25zLgogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBzYW5pdGl6ZVBFTShzdHJpbmcgJiRwZW0pOiB2b2lkCiAgICB7CiAgICAgICAgcHJlZ19tYXRjaF9hbGwoJyMoLS4qLSkjJywgJHBlbSwgJG1hdGNoZXMsIFBSRUdfUEFUVEVSTl9PUkRFUik7CiAgICAgICAgJGNpcGhlcnRleHQgPSBwcmVnX3JlcGxhY2UoJyMtLiotfFxyfFxufCAjJywgJycsICRwZW0pOwoKICAgICAgICAkcGVtID0gJG1hdGNoZXNbMF1bMF0uUEhQX0VPTDsKICAgICAgICAkcGVtIC49IGNodW5rX3NwbGl0KCRjaXBoZXJ0ZXh0LCA2NCwgUEhQX0VPTCk7CiAgICAgICAgJHBlbSAuPSAkbWF0Y2hlc1swXVsxXS5QSFBfRU9MOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIHN0cmluZ1tdICRtYXRjaGVzCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBhc3N3b3JkIHRvIGRlY3J5cHQgdGhlIGtleSBpcyBub3QgcHJvdmlkZWQKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBrZXkgY2Fubm90IGJlIGxvYWRlZAogICAgICovCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBkZWNvZGVQZW0oc3RyaW5nICRwZW0sIGFycmF5ICRtYXRjaGVzLCA/c3RyaW5nICRwYXNzd29yZCA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHBhc3N3b3JkKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Bhc3N3b3JkIHJlcXVpcmVkIGZvciBlbmNyeXB0ZWQga2V5cy4nKTsKICAgICAgICB9CgogICAgICAgICRpdiA9IHBhY2soJ0gqJywgdHJpbSgkbWF0Y2hlc1syXSkpOwogICAgICAgICRpdl9zdWIgPSBtYl9zdWJzdHIoJGl2LCAwLCA4LCAnOGJpdCcpOwogICAgICAgICRzeW1rZXkgPSBwYWNrKCdIKicsIG1kNSgkcGFzc3dvcmQuJGl2X3N1YikpOwogICAgICAgICRzeW1rZXkgLj0gcGFjaygnSConLCBtZDUoJHN5bWtleS4kcGFzc3dvcmQuJGl2X3N1YikpOwogICAgICAgICRrZXkgPSBwcmVnX3JlcGxhY2UoJyNeKD86UHJvYy1UeXBlfERFSy1JbmZvKTogLiojbScsICcnLCAkcGVtKTsKICAgICAgICAkY2lwaGVydGV4dCA9IGJhc2U2NF9kZWNvZGUocHJlZ19yZXBsYWNlKCcjLS4qLXxccnxcbiMnLCAnJywgJGtleSksIHRydWUpOwogICAgICAgIGlmICghaXNfc3RyaW5nKCRjaXBoZXJ0ZXh0KSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZW5jb2RlIHRoZSBkYXRhLicpOwogICAgICAgIH0KCiAgICAgICAgJGRlY29kZWQgPSBvcGVuc3NsX2RlY3J5cHQoJGNpcGhlcnRleHQsIG1iX3N0cnRvbG93ZXIoJG1hdGNoZXNbMV0pLCAkc3lta2V5LCBPUEVOU1NMX1JBV19EQVRBLCAkaXYpOwogICAgICAgIGlmIChmYWxzZSA9PT0gJGRlY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBkZWNyeXB0IHRoZSBrZXknKTsKICAgICAgICB9CiAgICAgICAgJG51bWJlciA9IHByZWdfbWF0Y2hfYWxsKCcjLXs1fS4qLXs1fSMnLCAkcGVtLCAkcmVzdWx0KTsKICAgICAgICBpZiAoMiAhPT0gJG51bWJlcikgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCB0aGUga2V5Jyk7CiAgICAgICAgfQoKICAgICAgICAkcGVtID0gJHJlc3VsdFswXVswXS5QSFBfRU9MOwogICAgICAgICRwZW0gLj0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVjb2RlZCksIDY0KTsKICAgICAgICAkcGVtIC49ICRyZXN1bHRbMF1bMV0uUEhQX0VPTDsKCiAgICAgICAgcmV0dXJuICRwZW07CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gY29udmVydERlclRvUGVtKHN0cmluZyAkZGVyX2RhdGEpOiBzdHJpbmcKICAgIHsKICAgICAgICAkcGVtID0gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkZGVyX2RhdGEpLCA2NCwgUEhQX0VPTCk7CgogICAgICAgIHJldHVybiAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLiRwZW0uJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nLlBIUF9FT0w7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/KeyConverter/RSAKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnRcS2V5Q29udmVydGVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gZXh0ZW5zaW9uX2xvYWRlZDsKdXNlIGZ1bmN0aW9uIGluX2FycmF5Owp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxCaWdJbnRlZ2VyOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIFJTQUtleQp7CiAgICAvKioKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJpdmF0ZSAkdmFsdWVzID0gW107CgogICAgLyoqCiAgICAgKiBSU0FLZXkgY29uc3RydWN0b3IuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJGRhdGEpCiAgICB7CiAgICAgICAgJHRoaXMtPmxvYWRKV0soJGRhdGEpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tS2V5RGV0YWlscyhhcnJheSAkZGV0YWlscyk6IHNlbGYKICAgIHsKICAgICAgICAkdmFsdWVzID0gWydrdHknID0+ICdSU0EnXTsKICAgICAgICAka2V5cyA9IFsKICAgICAgICAgICAgJ24nID0+ICduJywKICAgICAgICAgICAgJ2UnID0+ICdlJywKICAgICAgICAgICAgJ2QnID0+ICdkJywKICAgICAgICAgICAgJ3AnID0+ICdwJywKICAgICAgICAgICAgJ3EnID0+ICdxJywKICAgICAgICAgICAgJ2RwJyA9PiAnZG1wMScsCiAgICAgICAgICAgICdkcScgPT4gJ2RtcTEnLAogICAgICAgICAgICAncWknID0+ICdpcW1wJywKICAgICAgICBdOwogICAgICAgIGZvcmVhY2ggKCRkZXRhaWxzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIGlmIChpbl9hcnJheSgka2V5LCAka2V5cywgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICR2YWx1ZSA9IEJhc2U2NFVybDo6ZW5jb2RlKCR2YWx1ZSk7CiAgICAgICAgICAgICAgICAkdmFsdWVzW2FycmF5X3NlYXJjaCgka2V5LCAka2V5cywgdHJ1ZSldID0gJHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gICAgICAgICBpZiB0aGUgZXh0ZW5zaW9uIE9wZW5TU0wgaXMgbm90IGF2YWlsYWJsZQogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBjYW5ub3QgYmUgbG9hZGVkCiAgICAgKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGVGcm9tUEVNKHN0cmluZyAkcGVtKTogc2VsZgogICAgewogICAgICAgIGlmICghZXh0ZW5zaW9uX2xvYWRlZCgnb3BlbnNzbCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdQbGVhc2UgaW5zdGFsbCB0aGUgT3BlblNTTCBleHRlbnNpb24nKTsKICAgICAgICB9CiAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHJpdmF0ZSgkcGVtKTsKICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgJHJlcyA9IG9wZW5zc2xfcGtleV9nZXRfcHVibGljKCRwZW0pOwogICAgICAgIH0KICAgICAgICBpZiAoZmFsc2UgPT09ICRyZXMpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5hYmxlIHRvIGxvYWQgdGhlIGtleS4nKTsKICAgICAgICB9CgogICAgICAgICRkZXRhaWxzID0gb3BlbnNzbF9wa2V5X2dldF9kZXRhaWxzKCRyZXMpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRldGFpbHMpIHx8ICFpc3NldCgkZGV0YWlsc1sncnNhJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBsb2FkIHRoZSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc2VsZjo6Y3JlYXRlRnJvbUtleURldGFpbHMoJGRldGFpbHNbJ3JzYSddKTsKICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4gUlNBS2V5CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRnJvbUpXSyhKV0sgJGp3ayk6IHNlbGYKICAgIHsKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGp3ay0+YWxsKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBpc1B1YmxpYygpOiBib29sCiAgICB7CiAgICAgICAgcmV0dXJuICFhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gUlNBS2V5ICRwcml2YXRlCiAgICAgKgogICAgICogQHJldHVybiBSU0FLZXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiB0b1B1YmxpYyhzZWxmICRwcml2YXRlKTogc2VsZgogICAgewogICAgICAgICRkYXRhID0gJHByaXZhdGUtPnRvQXJyYXkoKTsKICAgICAgICAka2V5cyA9IFsncCcsICdkJywgJ3EnLCAnZHAnLCAnZHEnLCAncWknXTsKICAgICAgICBmb3JlYWNoICgka2V5cyBhcyAka2V5KSB7CiAgICAgICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCRrZXksICRkYXRhKSkgewogICAgICAgICAgICAgICAgdW5zZXQoJGRhdGFbJGtleV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJGRhdGEpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT52YWx1ZXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRvSndrKCk6IEpXSwogICAgewogICAgICAgIHJldHVybiBuZXcgSldLKCR0aGlzLT52YWx1ZXMpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gYWRkIENoaW5lc2UgUmVtYWluZGVyIFRoZW9yZW0gKENSVCkgcGFyYW1ldGVycy4KICAgICAqIFdpdGggdGhvc2UgcHJpbWVzLCB0aGUgZGVjcnlwdGlvbiBwcm9jZXNzIGlzIHJlYWxseSBmYXN0LgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gb3B0aW1pemUoKTogdm9pZAogICAgewogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgJHRoaXMtPnBvcHVsYXRlQ1JUKCk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGtleSBpcyBpbnZhbGlkIG9yIG5vdCBhbiBSU0Ega2V5CiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gbG9hZEpXSyhhcnJheSAkandrKTogdm9pZAogICAgewogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygna3R5JywgJGp3aykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVGhlIGtleSBwYXJhbWV0ZXIgImt0eSIgaXMgbWlzc2luZy4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCdSU0EnICE9PSAkandrWydrdHknXSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgSldLIGlzIG5vdCBhIFJTQSBrZXkuJyk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsdWVzID0gJGp3azsKICAgIH0KCiAgICAvKioKICAgICAqIFRoaXMgbWV0aG9kIGFkZHMgQ2hpbmVzZSBSZW1haW5kZXIgVGhlb3JlbSAoQ1JUKSBwYXJhbWV0ZXJzIGlmIHByaW1lcyAncCcgYW5kICdxJyBhcmUgYXZhaWxhYmxlLgogICAgICogSWYgJ3AnIGFuZCAncScgYXJlIG1pc3NpbmcsIHRoZXkgYXJlIGNvbXB1dGVkIGFuZCBhZGRlZCB0byB0aGUga2V5IGRhdGEuCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gcG9wdWxhdGVDUlQoKTogdm9pZAogICAgewogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygncCcsICR0aGlzLT52YWx1ZXMpICYmICFhcnJheV9rZXlfZXhpc3RzKCdxJywgJHRoaXMtPnZhbHVlcykpIHsKICAgICAgICAgICAgJGQgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICAgICAkZSA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1snZSddKSk7CiAgICAgICAgICAgICRuID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWyduJ10pKTsKCiAgICAgICAgICAgIFskcCwgJHFdID0gJHRoaXMtPmZpbmRQcmltZUZhY3RvcnMoJGQsICRlLCAkbik7CiAgICAgICAgICAgICR0aGlzLT52YWx1ZXNbJ3AnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRwLT50b0J5dGVzKCkpOwogICAgICAgICAgICAkdGhpcy0+dmFsdWVzWydxJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkcS0+dG9CeXRlcygpKTsKICAgICAgICB9CgogICAgICAgIGlmIChhcnJheV9rZXlfZXhpc3RzKCdkcCcsICR0aGlzLT52YWx1ZXMpICYmIGFycmF5X2tleV9leGlzdHMoJ2RxJywgJHRoaXMtPnZhbHVlcykgJiYgYXJyYXlfa2V5X2V4aXN0cygncWknLCAkdGhpcy0+dmFsdWVzKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkb25lID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMSk7CiAgICAgICAgJGQgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tQmluYXJ5U3RyaW5nKEJhc2U2NFVybDo6ZGVjb2RlKCR0aGlzLT52YWx1ZXNbJ2QnXSkpOwogICAgICAgICRwID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpbmFyeVN0cmluZyhCYXNlNjRVcmw6OmRlY29kZSgkdGhpcy0+dmFsdWVzWydwJ10pKTsKICAgICAgICAkcSA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaW5hcnlTdHJpbmcoQmFzZTY0VXJsOjpkZWNvZGUoJHRoaXMtPnZhbHVlc1sncSddKSk7CgogICAgICAgICR0aGlzLT52YWx1ZXNbJ2RwJ10gPSBCYXNlNjRVcmw6OmVuY29kZSgkZC0+bW9kKCRwLT5zdWJ0cmFjdCgkb25lKSktPnRvQnl0ZXMoKSk7CiAgICAgICAgJHRoaXMtPnZhbHVlc1snZHEnXSA9IEJhc2U2NFVybDo6ZW5jb2RlKCRkLT5tb2QoJHEtPnN1YnRyYWN0KCRvbmUpKS0+dG9CeXRlcygpKTsKICAgICAgICAkdGhpcy0+dmFsdWVzWydxaSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHEtPm1vZEludmVyc2UoJHApLT50b0J5dGVzKCkpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwcmltZSBmYWN0b3JzIGNhbm5vdCBiZSBmb3VuZAogICAgICoKICAgICAqIEByZXR1cm4gQmlnSW50ZWdlcltdCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZFByaW1lRmFjdG9ycyhCaWdJbnRlZ2VyICRkLCBCaWdJbnRlZ2VyICRlLCBCaWdJbnRlZ2VyICRuKTogYXJyYXkKICAgIHsKICAgICAgICAkemVybyA9IEJpZ0ludGVnZXI6OmNyZWF0ZUZyb21EZWNpbWFsKDApOwogICAgICAgICRvbmUgPSBCaWdJbnRlZ2VyOjpjcmVhdGVGcm9tRGVjaW1hbCgxKTsKICAgICAgICAkdHdvID0gQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbURlY2ltYWwoMik7CgogICAgICAgICRrID0gJGQtPm11bHRpcGx5KCRlKS0+c3VidHJhY3QoJG9uZSk7CgogICAgICAgIGlmICgkay0+aXNFdmVuKCkpIHsKICAgICAgICAgICAgJHIgPSAkazsKICAgICAgICAgICAgJHQgPSAkemVybzsKCiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRyID0gJHItPmRpdmlkZSgkdHdvKTsKICAgICAgICAgICAgICAgICR0ID0gJHQtPmFkZCgkb25lKTsKICAgICAgICAgICAgfSB3aGlsZSAoJHItPmlzRXZlbigpKTsKCiAgICAgICAgICAgICRmb3VuZCA9IGZhbHNlOwogICAgICAgICAgICAkeSA9IG51bGw7CgogICAgICAgICAgICBmb3IgKCRpID0gMTsgJGkgPD0gMTAwOyArKyRpKSB7CiAgICAgICAgICAgICAgICAkZyA9IEJpZ0ludGVnZXI6OnJhbmRvbSgkbi0+c3VidHJhY3QoJG9uZSkpOwogICAgICAgICAgICAgICAgJHkgPSAkZy0+bW9kUG93KCRyLCAkbik7CgogICAgICAgICAgICAgICAgaWYgKCR5LT5lcXVhbHMoJG9uZSkgfHwgJHktPmVxdWFscygkbi0+c3VidHJhY3QoJG9uZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZm9yICgkaiA9ICRvbmU7ICRqLT5sb3dlclRoYW4oJHQtPnN1YnRyYWN0KCRvbmUpKTsgJGogPSAkai0+YWRkKCRvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgJHggPSAkeS0+bW9kUG93KCR0d28sICRuKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCR4LT5lcXVhbHMoJG9uZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaWYgKCR4LT5lcXVhbHMoJG4tPnN1YnRyYWN0KCRvbmUpKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICR5ID0gJHg7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHggPSAkeS0+bW9kUG93KCR0d28sICRuKTsKICAgICAgICAgICAgICAgIGlmICgkeC0+ZXF1YWxzKCRvbmUpKSB7CiAgICAgICAgICAgICAgICAgICAgJGZvdW5kID0gdHJ1ZTsKCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG51bGwgPT09ICR5KSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbmFibGUgdG8gZmluZCBwcmltZSBmYWN0b3JzLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0cnVlID09PSAkZm91bmQpIHsKICAgICAgICAgICAgICAgICRwID0gJHktPnN1YnRyYWN0KCRvbmUpLT5nY2QoJG4pOwogICAgICAgICAgICAgICAgJHEgPSAkbi0+ZGl2aWRlKCRwKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gWyRwLCAkcV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1VuYWJsZSB0byBmaW5kIHByaW1lIGZhY3RvcnMuJyk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQIEpXVCBLZXkgTWFuYWdlbWVudCBDb21wb25lbnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBpcyBhIHN1YiByZXBvc2l0b3J5IG9mIFt0aGUgSldUIEZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBwcm9qZWN0IGFuZCBpcyBSRUFEIE9OTFkuCgoqKlBsZWFzZSBkbyBub3Qgc3VibWl0IGFueSBQdWxsIFJlcXVlc3QgaGVyZS4qKgpZb3Ugc2hvdWxkIGdvIHRvIFt0aGUgbWFpbiByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIGluc3RlYWQuCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vIAoKIyBMaWNlbmNlCgpUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2UgdW5kZXIgW01JVCBsaWNlbmNlXShMSUNFTlNFKS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/UrlKeySetFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgUHNyXEh0dHBcQ2xpZW50XENsaWVudEludGVyZmFjZTsKdXNlIFBzclxIdHRwXE1lc3NhZ2VcUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2U7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKYWJzdHJhY3QgY2xhc3MgVXJsS2V5U2V0RmFjdG9yeQp7CiAgICAvKioKICAgICAqIEB2YXIgQ2xpZW50SW50ZXJmYWNlCiAgICAgKi8KICAgIHByaXZhdGUgJGNsaWVudDsKCiAgICAvKioKICAgICAqIEB2YXIgUmVxdWVzdEZhY3RvcnlJbnRlcmZhY2UKICAgICAqLwogICAgcHJpdmF0ZSAkcmVxdWVzdEZhY3Rvcnk7CgogICAgLyoqCiAgICAgKiBVcmxLZXlTZXRGYWN0b3J5IGNvbnN0cnVjdG9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ2xpZW50SW50ZXJmYWNlICRjbGllbnQsIFJlcXVlc3RGYWN0b3J5SW50ZXJmYWNlICRyZXF1ZXN0RmFjdG9yeSkKICAgIHsKICAgICAgICAkdGhpcy0+Y2xpZW50ID0gJGNsaWVudDsKICAgICAgICAkdGhpcy0+cmVxdWVzdEZhY3RvcnkgPSAkcmVxdWVzdEZhY3Rvcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHJlc3BvbnNlIGNvbnRlbnQgaXMgaW52YWxpZAogICAgICovCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0Q29udGVudChzdHJpbmcgJHVybCwgYXJyYXkgJGhlYWRlciA9IFtdKTogc3RyaW5nCiAgICB7CiAgICAgICAgJHJlcXVlc3QgPSAkdGhpcy0+cmVxdWVzdEZhY3RvcnktPmNyZWF0ZVJlcXVlc3QoJ0dFVCcsICR1cmwpOwogICAgICAgIGZvcmVhY2ggKCRoZWFkZXIgYXMgJGsgPT4gJHYpIHsKICAgICAgICAgICAgJHJlcXVlc3QgPSAkcmVxdWVzdC0+d2l0aEhlYWRlcigkaywgJHYpOwogICAgICAgIH0KICAgICAgICAkcmVzcG9uc2UgPSAkdGhpcy0+Y2xpZW50LT5zZW5kUmVxdWVzdCgkcmVxdWVzdCk7CgogICAgICAgIGlmICgkcmVzcG9uc2UtPmdldFN0YXR1c0NvZGUoKSA+PSA0MDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1VuYWJsZSB0byBnZXQgdGhlIGtleSBzZXQuJywgJHJlc3BvbnNlLT5nZXRTdGF0dXNDb2RlKCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXNwb25zZS0+Z2V0Qm9keSgpLT5nZXRDb250ZW50cygpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-key-mgmt/X5UFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XEtleU1hbmFnZW1lbnQ7Cgp1c2UgZnVuY3Rpb24gaXNfYXJyYXk7CnVzZSBmdW5jdGlvbiBpc19zdHJpbmc7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLU2V0Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEpzb25Db252ZXJ0ZXI7CnVzZSBKb3NlXENvbXBvbmVudFxLZXlNYW5hZ2VtZW50XEtleUNvbnZlcnRlclxLZXlDb252ZXJ0ZXI7CnVzZSBSdW50aW1lRXhjZXB0aW9uOwoKY2xhc3MgWDVVRmFjdG9yeSBleHRlbmRzIFVybEtleVNldEZhY3RvcnkKewogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byBmZXRjaCB0aGUgdXJsIGEgcmV0cmlldmUgdGhlIGtleSBzZXQuCiAgICAgKiBUaHJvd3MgYW4gZXhjZXB0aW9uIGluIGNhc2Ugb2YgZmFpbHVyZS4KICAgICAqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHJlc3BvbnNlIGNvbnRlbnQgaXMgaW52YWxpZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEZyb21Vcmwoc3RyaW5nICR1cmwsIGFycmF5ICRoZWFkZXIgPSBbXSk6IEpXS1NldAogICAgewogICAgICAgICRjb250ZW50ID0gJHRoaXMtPmdldENvbnRlbnQoJHVybCwgJGhlYWRlcik7CiAgICAgICAgJGRhdGEgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoJGNvbnRlbnQpOwogICAgICAgIGlmICghaXNfYXJyYXkoJGRhdGEpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIGNvbnRlbnQuJyk7CiAgICAgICAgfQoKICAgICAgICAka2V5cyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRkYXRhIGFzICRraWQgPT4gJGNlcnQpIHsKICAgICAgICAgICAgaWYgKGZhbHNlID09PSBtYl9zdHJwb3MoJGNlcnQsICctLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0nKSkgewogICAgICAgICAgICAgICAgJGNlcnQgPSAnLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tJy5QSFBfRU9MLiRjZXJ0LlBIUF9FT0wuJy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0nOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRqd2sgPSBLZXlDb252ZXJ0ZXI6OmxvYWRLZXlGcm9tQ2VydGlmaWNhdGUoJGNlcnQpOwogICAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRraWQpKSB7CiAgICAgICAgICAgICAgICAkandrWydraWQnXSA9ICRraWQ7CiAgICAgICAgICAgICAgICAka2V5c1ska2lkXSA9IG5ldyBKV0soJGp3ayk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAka2V5c1tdID0gbmV3IEpXSygkandrKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV0tTZXQoJGtleXMpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhIiwKICAgICJkZXNjcmlwdGlvbiI6ICJFQ0RTQSBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyB0aGUgSldUIEZyYW1ld29yay4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJKV1MiLCAiSldUIiwgIkpXRSIsICJKV0EiLCAiSldLIiwgIkpXS1NldCIsICJKb3QiLCAiSm9zZSIsICJSRkM3NTE1IiwgIlJGQzc1MTYiLCAiUkZDNzUxNyIsICJSRkM3NTE4IiwgIlJGQzc1MTkiLCAiUkZDNzUyMCIsICJCdW5kbGUiLCAiU3ltZm9ueSJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgfSx7CiAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcU2lnbmF0dXJlXFxBbGdvcml0aG1cXCI6ICAiIgogICAgICAgIH0KICAgIH0sCiAgICAicmVxdWlyZSI6IHsKICAgICAgICAiZXh0LW9wZW5zc2wiOiAiKiIsCiAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlIjogIl4yLjAiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ECDSA.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07Cgp1c2UgZnVuY3Rpb24gZGVmaW5lZDsKdXNlIGZ1bmN0aW9uIGluX2FycmF5Owp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRUNLZXk7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcRUNTaWduYXR1cmU7CnVzZSBMb2dpY0V4Y2VwdGlvbjsKdXNlIFRocm93YWJsZTsKCmFic3RyYWN0IGNsYXNzIEVDRFNBIGltcGxlbWVudHMgU2lnbmF0dXJlQWxnb3JpdGhtCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpCiAgICB7CiAgICAgICAgaWYgKCFkZWZpbmVkKCdPUEVOU1NMX0tFWVRZUEVfRUMnKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ0VsbGlwdGljIEN1cnZlIGtleSB0eXBlIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBlbnZpcm9ubWVudC4nKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFsbG93ZWRLZXlUeXBlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbJ0VDJ107CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLICRrZXksIHN0cmluZyAkaW5wdXQpOiBzdHJpbmcKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CiAgICAgICAgaWYgKCEka2V5LT5oYXMoJ2QnKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgRUMga2V5IGlzIG5vdCBwcml2YXRlJyk7CiAgICAgICAgfQogICAgICAgICRwZW0gPSBFQ0tleTo6Y29udmVydFByaXZhdGVLZXlUb1BFTSgka2V5KTsKICAgICAgICBvcGVuc3NsX3NpZ24oJGlucHV0LCAkc2lnbmF0dXJlLCAkcGVtLCAkdGhpcy0+Z2V0SGFzaEFsZ29yaXRobSgpKTsKCiAgICAgICAgcmV0dXJuIEVDU2lnbmF0dXJlOjpmcm9tQXNuMSgkc2lnbmF0dXJlLCAkdGhpcy0+Z2V0U2lnbmF0dXJlUGFydExlbmd0aCgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gdmVyaWZ5KEpXSyAka2V5LCBzdHJpbmcgJGlucHV0LCBzdHJpbmcgJHNpZ25hdHVyZSk6IGJvb2wKICAgIHsKICAgICAgICAkdGhpcy0+Y2hlY2tLZXkoJGtleSk7CgogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkZXIgPSBFQ1NpZ25hdHVyZTo6dG9Bc24xKCRzaWduYXR1cmUsICR0aGlzLT5nZXRTaWduYXR1cmVQYXJ0TGVuZ3RoKCkpOwogICAgICAgICAgICAkcGVtID0gRUNLZXk6OmNvbnZlcnRQdWJsaWNLZXlUb1BFTSgka2V5KTsKCiAgICAgICAgICAgIHJldHVybiAxID09PSBvcGVuc3NsX3ZlcmlmeSgkaW5wdXQsICRkZXIsICRwZW0sICR0aGlzLT5nZXRIYXNoQWxnb3JpdGhtKCkpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQoKICAgIGFic3RyYWN0IHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZzsKCiAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0tleShKV0sgJGtleSk6IHZvaWQKICAgIHsKICAgICAgICBpZiAoIWluX2FycmF5KCRrZXktPmdldCgna3R5JyksICR0aGlzLT5hbGxvd2VkS2V5VHlwZXMoKSwgdHJ1ZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignV3Jvbmcga2V5IHR5cGUuJyk7CiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggKFsneCcsICd5JywgJ2NydiddIGFzICRrKSB7CiAgICAgICAgICAgIGlmICghJGtleS0+aGFzKCRrKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUga2V5IHBhcmFtZXRlciAiJXMiIGlzIG1pc3NpbmcuJywgJGspKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ES256.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07CgpmaW5hbCBjbGFzcyBFUzI1NiBleHRlbmRzIEVDRFNBCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnRVMyNTYnOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnc2hhMjU2JzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gNjQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ES384.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07CgpmaW5hbCBjbGFzcyBFUzM4NCBleHRlbmRzIEVDRFNBCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnRVMzODQnOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnc2hhMzg0JzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gOTY7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/ES512.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07CgpmaW5hbCBjbGFzcyBFUzUxMiBleHRlbmRzIEVDRFNBCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBuYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnRVM1MTInOwogICAgfQoKICAgIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRIYXNoQWxnb3JpdGhtKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnc2hhNTEyJzsKICAgIH0KCiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlUGFydExlbmd0aCgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gMTMyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature-algorithm-ecdsa/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[RUNEU0EgQmFzZWQgU2lnbmF0dXJlIEFsZ29yaXRobXMgRm9yIEpXVC1GcmFtZXdvcmsKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBpcyBhIHN1YiByZXBvc2l0b3J5IG9mIFt0aGUgSldUIEZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBwcm9qZWN0IGFuZCBpcyBSRUFEIE9OTFkuCgoqKlBsZWFzZSBkbyBub3Qgc3VibWl0IGFueSBQdWxsIFJlcXVlc3QgaGVyZS4qKgpZb3Ugc2hvdWxkIGdvIHRvIFt0aGUgbWFpbiByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIGluc3RlYWQuCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vIAoKIyBMaWNlbmNlCgpUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2UgdW5kZXIgW01JVCBsaWNlbmNlXShMSUNFTlNFKS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Algorithm/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Algorithm/MacAlgorithm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKCmludGVyZmFjZSBNYWNBbGdvcml0aG0gZXh0ZW5kcyBBbGdvcml0aG0KewogICAgLyoqCiAgICAgKiBTaWduIHRoZSBpbnB1dC4KICAgICAqCiAgICAgKiBAcGFyYW0gSldLICAgICRrZXkgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBoYXNoIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCBUaGUgaW5wdXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc2goSldLICRrZXksIHN0cmluZyAkaW5wdXQpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBKV0sgICAgJGtleSAgICAgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBoYXNoIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCAgICAgVGhlIGlucHV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byB2ZXJpZnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0sgJGtleSwgc3RyaW5nICRpbnB1dCwgc3RyaW5nICRzaWduYXR1cmUpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Algorithm/SignatureAlgorithm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG07Cgp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKCmludGVyZmFjZSBTaWduYXR1cmVBbGdvcml0aG0gZXh0ZW5kcyBBbGdvcml0aG0KewogICAgLyoqCiAgICAgKiBTaWduIHRoZSBpbnB1dC4KICAgICAqCiAgICAgKiBAcGFyYW0gSldLICAgICRrZXkgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBzaWduIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCBUaGUgaW5wdXQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNpZ24oSldLICRrZXksIHN0cmluZyAkaW5wdXQpOiBzdHJpbmc7CgogICAgLyoqCiAgICAgKiBWZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiBkYXRhLgogICAgICoKICAgICAqIEBwYXJhbSBKV0sgICAgJGtleSAgICAgICBUaGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBzaWduIHRoZSBkYXRhCiAgICAgKiBAcGFyYW0gc3RyaW5nICRpbnB1dCAgICAgVGhlIGlucHV0CiAgICAgKiBAcGFyYW0gc3RyaW5nICRzaWduYXR1cmUgVGhlIHNpZ25hdHVyZSB0byB2ZXJpZnkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeShKV0sgJGtleSwgc3RyaW5nICRpbnB1dCwgc3RyaW5nICRzaWduYXR1cmUpOiBib29sOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUiLAogICAgImRlc2NyaXB0aW9uIjogIlNpZ25hdHVyZSBjb21wb25lbnQgb2YgdGhlIEpXVCBGcmFtZXdvcmsuIiwKICAgICJ0eXBlIjogImxpYnJhcnkiLAogICAgImxpY2Vuc2UiOiAiTUlUIiwKICAgICJrZXl3b3JkcyI6IFsiSldTIiwgIkpXVCIsICJKV0UiLCAiSldBIiwgIkpXSyIsICJKV0tTZXQiLCAiSm90IiwgIkpvc2UiLCAiUkZDNzUxNSIsICJSRkM3NTE2IiwgIlJGQzc1MTciLCAiUkZDNzUxOCIsICJSRkM3NTE5IiwgIlJGQzc1MjAiLCAiQnVuZGxlIiwgIlN5bWZvbnkiXSwKICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuIiwKICAgICJhdXRob3JzIjogWwogICAgICAgIHsKICAgICAgICAgICAgIm5hbWUiOiAiRmxvcmVudCBNb3JzZWxsaSIsCiAgICAgICAgICAgICJob21lcGFnZSI6ICJodHRwczovL2dpdGh1Yi5jb20vU3BvbWt5IgogICAgICAgIH0sewogICAgICAgICAgICAibmFtZSI6ICJBbGwgY29udHJpYnV0b3JzIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LXNpZ25hdHVyZS9jb250cmlidXRvcnMiCiAgICAgICAgfQogICAgXSwKICAgICJhdXRvbG9hZCI6IHsKICAgICAgICAicHNyLTQiOiB7CiAgICAgICAgICAgICJKb3NlXFxDb21wb25lbnRcXFNpZ25hdHVyZVxcIjogICIiCiAgICAgICAgfQogICAgfSwKICAgICJyZXF1aXJlIjogewogICAgICAgICJ3ZWItdG9rZW4vand0LWNvcmUiOiAiXjIuMSIKICAgIH0sCiAgICAic3VnZ2VzdCI6IHsKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVjZHNhIjogIkVDRFNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWVkZHNhIjogIkVkRFNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWhtYWMiOiAiSE1BQyBCYXNlZCBTaWduYXR1cmUgQWxnb3JpdGhtcyIsCiAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1ub25lIjogIk5vbmUgU2lnbmF0dXJlIEFsZ29yaXRobSIsCiAgICAgICAgIndlYi10b2tlbi9qd3Qtc2lnbmF0dXJlLWFsZ29yaXRobS1yc2EiOiAiUlNBIEJhc2VkIFNpZ25hdHVyZSBBbGdvcml0aG1zIiwKICAgICAgICAid2ViLXRva2VuL2p3dC1zaWduYXR1cmUtYWxnb3JpdGhtLWV4cGVyaW1lbnRhbCI6ICJFeHBlcmltZW50YWwgU2lnbmF0dXJlIEFsZ29yaXRobXMiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWS.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldUOwoKY2xhc3MgSldTIGltcGxlbWVudHMgSldUCnsKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGlzUGF5bG9hZERldGFjaGVkID0gZmFsc2U7CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJGVuY29kZWRQYXlsb2FkOwoKICAgIC8qKgogICAgICogQHZhciBTaWduYXR1cmVbXQogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVzID0gW107CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHBheWxvYWQ7CgogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KD9zdHJpbmcgJHBheWxvYWQsID9zdHJpbmcgJGVuY29kZWRQYXlsb2FkID0gbnVsbCwgYm9vbCAkaXNQYXlsb2FkRGV0YWNoZWQgPSBmYWxzZSkKICAgIHsKICAgICAgICAkdGhpcy0+cGF5bG9hZCA9ICRwYXlsb2FkOwogICAgICAgICR0aGlzLT5lbmNvZGVkUGF5bG9hZCA9ICRlbmNvZGVkUGF5bG9hZDsKICAgICAgICAkdGhpcy0+aXNQYXlsb2FkRGV0YWNoZWQgPSAkaXNQYXlsb2FkRGV0YWNoZWQ7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFBheWxvYWQoKTogP3N0cmluZwogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGF5bG9hZCBpcyBkZXRhY2hlZC4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGlzUGF5bG9hZERldGFjaGVkKCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlzUGF5bG9hZERldGFjaGVkOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgQmFzZTY0VXJsIGVuY29kZWQgcGF5bG9hZC4KICAgICAqIElmIHRoZSBwYXlsb2FkIGlzIGRldGFjaGVkLCB0aGlzIG1ldGhvZCByZXR1cm5zIG51bGwuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNvZGVkUGF5bG9hZCgpOiA/c3RyaW5nCiAgICB7CiAgICAgICAgaWYgKHRydWUgPT09ICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNvZGVkUGF5bG9hZDsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNpZ25hdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBKV1MuCiAgICAgKgogICAgICogQHJldHVybiBTaWduYXR1cmVbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlcygpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2lnbmF0dXJlczsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHNpZ25hdHVyZSBhdCB0aGUgZ2l2ZW4gaW5kZXguCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNpZ25hdHVyZSBpbmRleCBkb2VzIG5vdCBleGlzdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlKGludCAkaWQpOiBTaWduYXR1cmUKICAgIHsKICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPnNpZ25hdHVyZXNbJGlkXSkpIHsKICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVzWyRpZF07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgc2lnbmF0dXJlIGRvZXMgbm90IGV4aXN0LicpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgYWRkcyBhIHNpZ25hdHVyZSB0byB0aGUgSldTIG9iamVjdC4KICAgICAqIEl0cyByZXR1cm5zIGEgbmV3IEpXUyBvYmplY3QuCiAgICAgKgogICAgICogQGludGVybmFsCiAgICAgKgogICAgICogQHJldHVybiBKV1MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZShzdHJpbmcgJHNpZ25hdHVyZSwgYXJyYXkgJHByb3RlY3RlZEhlYWRlciwgP3N0cmluZyAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgYXJyYXkgJGhlYWRlciA9IFtdKTogc2VsZgogICAgewogICAgICAgICRqd3MgPSBjbG9uZSAkdGhpczsKICAgICAgICAkandzLT5zaWduYXR1cmVzW10gPSBuZXcgU2lnbmF0dXJlKCRzaWduYXR1cmUsICRwcm90ZWN0ZWRIZWFkZXIsICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyKTsKCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc2lnbmF0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSldTLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRTaWduYXR1cmVzKCk6IGludAogICAgewogICAgICAgIHJldHVybiBjb3VudCgkdGhpcy0+c2lnbmF0dXJlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCBzcGxpdHMgdGhlIEpXUyBpbnRvIGEgbGlzdCBvZiBKV1NzLgogICAgICogSXQgaXMgb25seSB1c2VmdWwgd2hlbiB0aGUgSldTIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgc2lnbmF0dXJlIChKU09OIEdlbmVyYWwgU2VyaWFsaXphdGlvbikuCiAgICAgKgogICAgICogQHJldHVybiBKV1NbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc3BsaXQoKTogYXJyYXkKICAgIHsKICAgICAgICAkcmVzdWx0ID0gW107CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPnNpZ25hdHVyZXMgYXMgJHNpZ25hdHVyZSkgewogICAgICAgICAgICAkandzID0gbmV3IHNlbGYoCiAgICAgICAgICAgICAgICAkdGhpcy0+cGF5bG9hZCwKICAgICAgICAgICAgICAgICR0aGlzLT5lbmNvZGVkUGF5bG9hZCwKICAgICAgICAgICAgICAgICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZAogICAgICAgICAgICApOwogICAgICAgICAgICAkandzID0gJGp3cy0+YWRkU2lnbmF0dXJlKAogICAgICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlKCksCiAgICAgICAgICAgICAgICAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoKSwKICAgICAgICAgICAgICAgICRzaWduYXR1cmUtPmdldEVuY29kZWRQcm90ZWN0ZWRIZWFkZXIoKSwKICAgICAgICAgICAgICAgICRzaWduYXR1cmUtPmdldEhlYWRlcigpCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkcmVzdWx0W10gPSAkandzOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSBuilder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfZXhpc3RzOwp1c2UgQmFzZTY0VXJsXEJhc2U2NFVybDsKdXNlIGZ1bmN0aW9uIGNvdW50Owp1c2UgZnVuY3Rpb24gaW5fYXJyYXk7CnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19hcnJheTsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcQWxnb3JpdGhtOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG1NYW5hZ2VyOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXFV0aWxcSnNvbkNvbnZlcnRlcjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxLZXlDaGVja2VyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEFsZ29yaXRobVxNYWNBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxTaWduYXR1cmVcQWxnb3JpdGhtXFNpZ25hdHVyZUFsZ29yaXRobTsKdXNlIExvZ2ljRXhjZXB0aW9uOwp1c2UgUnVudGltZUV4Y2VwdGlvbjsKCmNsYXNzIEpXU0J1aWxkZXIKewogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8c3RyaW5nCiAgICAgKi8KICAgIHByb3RlY3RlZCAkcGF5bG9hZDsKCiAgICAvKioKICAgICAqIEB2YXIgYm9vbAogICAgICovCiAgICBwcm90ZWN0ZWQgJGlzUGF5bG9hZERldGFjaGVkOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcm90ZWN0ZWQgJHNpZ25hdHVyZXMgPSBbXTsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxib29sCiAgICAgKi8KICAgIHByb3RlY3RlZCAkaXNQYXlsb2FkRW5jb2RlZDsKCiAgICAvKioKICAgICAqIEB2YXIgQWxnb3JpdGhtTWFuYWdlcgogICAgICovCiAgICBwcml2YXRlICRzaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChBbGdvcml0aG1NYW5hZ2VyICRzaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyKQogICAgewogICAgICAgICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyID0gJHNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBhbGdvcml0aG0gbWFuYWdlciBhc3NvY2lhdGVkIHRvIHRoZSBidWlsZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlcigpOiBBbGdvcml0aG1NYW5hZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogUmVzZXQgdGhlIGN1cnJlbnQgZGF0YS4KICAgICAqCiAgICAgKiBAcmV0dXJuIEpXU0J1aWxkZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZSgpOiBzZWxmCiAgICB7CiAgICAgICAgJHRoaXMtPnBheWxvYWQgPSBudWxsOwogICAgICAgICR0aGlzLT5pc1BheWxvYWREZXRhY2hlZCA9IGZhbHNlOwogICAgICAgICR0aGlzLT5zaWduYXR1cmVzID0gW107CiAgICAgICAgJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQgPSBudWxsOwoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBTZXQgdGhlIHBheWxvYWQuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBhIG5ldyBKV1NCdWlsZGVyIG9iamVjdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBpcyBub3QgVVRGLTggZW5jb2RlZAogICAgICoKICAgICAqIEByZXR1cm4gSldTQnVpbGRlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gd2l0aFBheWxvYWQoc3RyaW5nICRwYXlsb2FkLCBib29sICRpc1BheWxvYWREZXRhY2hlZCA9IGZhbHNlKTogc2VsZgogICAgewogICAgICAgIGlmIChmYWxzZSA9PT0gbWJfZGV0ZWN0X2VuY29kaW5nKCRwYXlsb2FkLCAnVVRGLTgnLCB0cnVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgcGF5bG9hZCBtdXN0IGJlIGVuY29kZWQgaW4gVVRGLTgnKTsKICAgICAgICB9CiAgICAgICAgJGNsb25lID0gY2xvbmUgJHRoaXM7CiAgICAgICAgJGNsb25lLT5wYXlsb2FkID0gJHBheWxvYWQ7CiAgICAgICAgJGNsb25lLT5pc1BheWxvYWREZXRhY2hlZCA9ICRpc1BheWxvYWREZXRhY2hlZDsKCiAgICAgICAgcmV0dXJuICRjbG9uZTsKICAgIH0KCiAgICAvKioKICAgICAqIEFkZHMgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBjb21wdXRlIHRoZSBzaWduYXR1cmUuCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHJldHVybiBhIG5ldyBKV1NCdWlsZGVyIG9iamVjdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBlbmNvZGluZyBpcyBpbmNvbnNpc3RlbnQKICAgICAqCiAgICAgKiBAcmV0dXJuIEpXU0J1aWxkZXIKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFkZFNpZ25hdHVyZShKV0sgJHNpZ25hdHVyZUtleSwgYXJyYXkgJHByb3RlY3RlZEhlYWRlciwgYXJyYXkgJGhlYWRlciA9IFtdKTogc2VsZgogICAgewogICAgICAgICR0aGlzLT5jaGVja0I2NEFuZENyaXRpY2FsSGVhZGVyKCRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgICRpc1BheWxvYWRFbmNvZGVkID0gJHRoaXMtPmNoZWNrSWZQYXlsb2FkSXNFbmNvZGVkKCRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIGlmIChudWxsID09PSAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCkgewogICAgICAgICAgICAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCA9ICRpc1BheWxvYWRFbmNvZGVkOwogICAgICAgIH0gZWxzZWlmICgkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCAhPT0gJGlzUGF5bG9hZEVuY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRm9yZWlnbiBwYXlsb2FkIGVuY29kaW5nIGRldGVjdGVkLicpOwogICAgICAgIH0KICAgICAgICAkdGhpcy0+Y2hlY2tEdXBsaWNhdGVkSGVhZGVyUGFyYW1ldGVycygkcHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyKTsKICAgICAgICBLZXlDaGVja2VyOjpjaGVja0tleVVzYWdlKCRzaWduYXR1cmVLZXksICdzaWduYXR1cmUnKTsKICAgICAgICAkYWxnb3JpdGhtID0gJHRoaXMtPmZpbmRTaWduYXR1cmVBbGdvcml0aG0oJHNpZ25hdHVyZUtleSwgJHByb3RlY3RlZEhlYWRlciwgJGhlYWRlcik7CiAgICAgICAgS2V5Q2hlY2tlcjo6Y2hlY2tLZXlBbGdvcml0aG0oJHNpZ25hdHVyZUtleSwgJGFsZ29yaXRobS0+bmFtZSgpKTsKICAgICAgICAkY2xvbmUgPSBjbG9uZSAkdGhpczsKICAgICAgICAkY2xvbmUtPnNpZ25hdHVyZXNbXSA9IFsKICAgICAgICAgICAgJ3NpZ25hdHVyZV9hbGdvcml0aG0nID0+ICRhbGdvcml0aG0sCiAgICAgICAgICAgICdzaWduYXR1cmVfa2V5JyA9PiAkc2lnbmF0dXJlS2V5LAogICAgICAgICAgICAncHJvdGVjdGVkX2hlYWRlcicgPT4gJHByb3RlY3RlZEhlYWRlciwKICAgICAgICAgICAgJ2hlYWRlcicgPT4gJGhlYWRlciwKICAgICAgICBdOwoKICAgICAgICByZXR1cm4gJGNsb25lOwogICAgfQoKICAgIC8qKgogICAgICogQ29tcHV0ZXMgYWxsIHNpZ25hdHVyZXMgYW5kIHJldHVybiB0aGUgZXhwZWN0ZWQgSldTIG9iamVjdC4KICAgICAqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIHBheWxvYWQgaXMgbm90IHNldAogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIG5vIHNpZ25hdHVyZSBpcyBkZWZpbmVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBidWlsZCgpOiBKV1MKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHRoaXMtPnBheWxvYWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ1RoZSBwYXlsb2FkIGlzIG5vdCBzZXQuJyk7CiAgICAgICAgfQogICAgICAgIGlmICgwID09PSBjb3VudCgkdGhpcy0+c2lnbmF0dXJlcykpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0F0IGxlYXN0IG9uZSBzaWduYXR1cmUgbXVzdCBiZSBzZXQuJyk7CiAgICAgICAgfQoKICAgICAgICAkZW5jb2RlZFBheWxvYWQgPSBmYWxzZSA9PT0gJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQgPyAkdGhpcy0+cGF5bG9hZCA6IEJhc2U2NFVybDo6ZW5jb2RlKCR0aGlzLT5wYXlsb2FkKTsKICAgICAgICAkandzID0gbmV3IEpXUygkdGhpcy0+cGF5bG9hZCwgJGVuY29kZWRQYXlsb2FkLCAkdGhpcy0+aXNQYXlsb2FkRGV0YWNoZWQpOwogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5zaWduYXR1cmVzIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgLyoqIEB2YXIgTWFjQWxnb3JpdGhtfFNpZ25hdHVyZUFsZ29yaXRobSAkYWxnb3JpdGhtICovCiAgICAgICAgICAgICRhbGdvcml0aG0gPSAkc2lnbmF0dXJlWydzaWduYXR1cmVfYWxnb3JpdGhtJ107CiAgICAgICAgICAgIC8qKiBAdmFyIEpXSyAkc2lnbmF0dXJlS2V5ICovCiAgICAgICAgICAgICRzaWduYXR1cmVLZXkgPSAkc2lnbmF0dXJlWydzaWduYXR1cmVfa2V5J107CiAgICAgICAgICAgIC8qKiBAdmFyIGFycmF5ICRwcm90ZWN0ZWRIZWFkZXIgKi8KICAgICAgICAgICAgJHByb3RlY3RlZEhlYWRlciA9ICRzaWduYXR1cmVbJ3Byb3RlY3RlZF9oZWFkZXInXTsKICAgICAgICAgICAgLyoqIEB2YXIgYXJyYXkgJGhlYWRlciAqLwogICAgICAgICAgICAkaGVhZGVyID0gJHNpZ25hdHVyZVsnaGVhZGVyJ107CiAgICAgICAgICAgICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gMCA9PT0gY291bnQoJHByb3RlY3RlZEhlYWRlcikgPyBudWxsIDogQmFzZTY0VXJsOjplbmNvZGUoSnNvbkNvbnZlcnRlcjo6ZW5jb2RlKCRwcm90ZWN0ZWRIZWFkZXIpKTsKICAgICAgICAgICAgJGlucHV0ID0gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJGVuY29kZWRQYXlsb2FkKTsKICAgICAgICAgICAgaWYgKCRhbGdvcml0aG0gaW5zdGFuY2VvZiBTaWduYXR1cmVBbGdvcml0aG0pIHsKICAgICAgICAgICAgICAgICRzID0gJGFsZ29yaXRobS0+c2lnbigkc2lnbmF0dXJlS2V5LCAkaW5wdXQpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgJHMgPSAkYWxnb3JpdGhtLT5oYXNoKCRzaWduYXR1cmVLZXksICRpbnB1dCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGp3cyA9ICRqd3MtPmFkZFNpZ25hdHVyZSgkcywgJHByb3RlY3RlZEhlYWRlciwgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIsICRoZWFkZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRqd3M7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0lmUGF5bG9hZElzRW5jb2RlZChhcnJheSAkcHJvdGVjdGVkSGVhZGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAhYXJyYXlfa2V5X2V4aXN0cygnYjY0JywgJHByb3RlY3RlZEhlYWRlcikgfHwgdHJ1ZSA9PT0gJHByb3RlY3RlZEhlYWRlclsnYjY0J107CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIExvZ2ljRXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgcGFyYW1ldGVyICJjcml0IiBpcyBtaXNzaW5nLCBpbnZhbGlkIG9yIGRvZXMgbm90IGNvbnRhaW4gImI2NCIgd2hlbiAiYjY0IiBpcyBzZXQKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjaGVja0I2NEFuZENyaXRpY2FsSGVhZGVyKGFycmF5ICRwcm90ZWN0ZWRIZWFkZXIpOiB2b2lkCiAgICB7CiAgICAgICAgaWYgKCFhcnJheV9rZXlfZXhpc3RzKCdiNjQnLCAkcHJvdGVjdGVkSGVhZGVyKSkgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygnY3JpdCcsICRwcm90ZWN0ZWRIZWFkZXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbignVGhlIHByb3RlY3RlZCBoZWFkZXIgcGFyYW1ldGVyICJjcml0IiBpcyBtYW5kYXRvcnkgd2hlbiBwcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlciAiYjY0IiBpcyBzZXQuJyk7CiAgICAgICAgfQogICAgICAgIGlmICghaXNfYXJyYXkoJHByb3RlY3RlZEhlYWRlclsnY3JpdCddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlciAiY3JpdCIgbXVzdCBiZSBhbiBhcnJheS4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpbl9hcnJheSgnYjY0JywgJHByb3RlY3RlZEhlYWRlclsnY3JpdCddLCB0cnVlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlciAiY3JpdCIgbXVzdCBjb250YWluICJiNjQiIHdoZW4gcHJvdGVjdGVkIGhlYWRlciBwYXJhbWV0ZXIgImI2NCIgaXMgc2V0LicpOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgcGFyYW1ldGVyICJhbGciIGlzIG1pc3Npbmcgb3IgdGhlIGFsZ29yaXRobSBpcyBub3QgYWxsb3dlZC9ub3Qgc3VwcG9ydGVkCiAgICAgKgogICAgICogQHJldHVybiBNYWNBbGdvcml0aG18U2lnbmF0dXJlQWxnb3JpdGhtCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZmluZFNpZ25hdHVyZUFsZ29yaXRobShKV0sgJGtleSwgYXJyYXkgJHByb3RlY3RlZEhlYWRlciwgYXJyYXkgJGhlYWRlcik6IEFsZ29yaXRobQogICAgewogICAgICAgICRjb21wbGV0ZUhlYWRlciA9IGFycmF5X21lcmdlKCRoZWFkZXIsICRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygnYWxnJywgJGNvbXBsZXRlSGVhZGVyKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdObyAiYWxnIiBwYXJhbWV0ZXIgc2V0IGluIHRoZSBoZWFkZXIuJyk7CiAgICAgICAgfQogICAgICAgIGlmICgka2V5LT5oYXMoJ2FsZycpICYmICRrZXktPmdldCgnYWxnJykgIT09ICRjb21wbGV0ZUhlYWRlclsnYWxnJ10pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgYWxnb3JpdGhtICIlcyIgaXMgbm90IGFsbG93ZWQgd2l0aCB0aGlzIGtleS4nLCAkY29tcGxldGVIZWFkZXJbJ2FsZyddKSk7CiAgICAgICAgfQoKICAgICAgICAkYWxnb3JpdGhtID0gJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXItPmdldCgkY29tcGxldGVIZWFkZXJbJ2FsZyddKTsKICAgICAgICBpZiAoISRhbGdvcml0aG0gaW5zdGFuY2VvZiBTaWduYXR1cmVBbGdvcml0aG0gJiYgISRhbGdvcml0aG0gaW5zdGFuY2VvZiBNYWNBbGdvcml0aG0pIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdUaGUgYWxnb3JpdGhtICIlcyIgaXMgbm90IHN1cHBvcnRlZC4nLCAkY29tcGxldGVIZWFkZXJbJ2FsZyddKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJGFsZ29yaXRobTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgY29udGFpbnMgZHVwbGljYXRlZCBlbnRyaWVzCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gY2hlY2tEdXBsaWNhdGVkSGVhZGVyUGFyYW1ldGVycyhhcnJheSAkaGVhZGVyMSwgYXJyYXkgJGhlYWRlcjIpOiB2b2lkCiAgICB7CiAgICAgICAgJGludGVyID0gYXJyYXlfaW50ZXJzZWN0X2tleSgkaGVhZGVyMSwgJGhlYWRlcjIpOwogICAgICAgIGlmICgwICE9PSBjb3VudCgkaW50ZXIpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGhlYWRlciBjb250YWlucyBkdXBsaWNhdGVkIGVudHJpZXM6ICVzLicsIGltcGxvZGUoJywgJywgYXJyYXlfa2V5cygkaW50ZXIpKSkpOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSBuilderFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwoKY2xhc3MgSldTQnVpbGRlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAdmFyIEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5CiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeSAkc2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlckZhY3RvcnkpCiAgICB7CiAgICAgICAgJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5ID0gJHNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2QgY3JlYXRlcyBhIEpXU0J1aWxkZXIgdXNpbmcgdGhlIGdpdmVuIGFsZ29yaXRobSBhbGlhc2VzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKGFycmF5ICRhbGdvcml0aG1zKTogSldTQnVpbGRlcgogICAgewogICAgICAgICRhbGdvcml0aG1NYW5hZ2VyID0gJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXJGYWN0b3J5LT5jcmVhdGUoJGFsZ29yaXRobXMpOwoKICAgICAgICByZXR1cm4gbmV3IEpXU0J1aWxkZXIoJGFsZ29yaXRobU1hbmFnZXIpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSLoader.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBFeGNlcHRpb247CnVzZSBKb3NlXENvbXBvbmVudFxDaGVja2VyXEhlYWRlckNoZWNrZXJNYW5hZ2VyOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxKV0s7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXS1NldDsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyXEpXU1NlcmlhbGl6ZXJNYW5hZ2VyOwp1c2UgVGhyb3dhYmxlOwoKY2xhc3MgSldTTG9hZGVyCnsKICAgIC8qKgogICAgICogQHZhciBKV1NWZXJpZmllcgogICAgICovCiAgICBwcml2YXRlICRqd3NWZXJpZmllcjsKCiAgICAvKioKICAgICAqIEB2YXIgbnVsbHxIZWFkZXJDaGVja2VyTWFuYWdlcgogICAgICovCiAgICBwcml2YXRlICRoZWFkZXJDaGVja2VyTWFuYWdlcjsKCiAgICAvKioKICAgICAqIEB2YXIgSldTU2VyaWFsaXplck1hbmFnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkc2VyaWFsaXplck1hbmFnZXI7CgogICAgLyoqCiAgICAgKiBKV1NMb2FkZXIgY29uc3RydWN0b3IuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChKV1NTZXJpYWxpemVyTWFuYWdlciAkc2VyaWFsaXplck1hbmFnZXIsIEpXU1ZlcmlmaWVyICRqd3NWZXJpZmllciwgP0hlYWRlckNoZWNrZXJNYW5hZ2VyICRoZWFkZXJDaGVja2VyTWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+c2VyaWFsaXplck1hbmFnZXIgPSAkc2VyaWFsaXplck1hbmFnZXI7CiAgICAgICAgJHRoaXMtPmp3c1ZlcmlmaWVyID0gJGp3c1ZlcmlmaWVyOwogICAgICAgICR0aGlzLT5oZWFkZXJDaGVja2VyTWFuYWdlciA9ICRoZWFkZXJDaGVja2VyTWFuYWdlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEpXU1ZlcmlmaWVyIGFzc29jaWF0ZWQgdG8gdGhlIEpXU0xvYWRlci4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEp3c1ZlcmlmaWVyKCk6IEpXU1ZlcmlmaWVyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5qd3NWZXJpZmllcjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEhlYWRlciBDaGVja2VyIE1hbmFnZXIgYXNzb2NpYXRlZCB0byB0aGUgSldTTG9hZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVyQ2hlY2tlck1hbmFnZXIoKTogP0hlYWRlckNoZWNrZXJNYW5hZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5oZWFkZXJDaGVja2VyTWFuYWdlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIEpXU1NlcmlhbGl6ZXIgYXNzb2NpYXRlZCB0byB0aGUgSldTTG9hZGVyLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VyaWFsaXplck1hbmFnZXIoKTogSldTU2VyaWFsaXplck1hbmFnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlcmlhbGl6ZXJNYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgdmVyaWZ5IHRoZSB0b2tlbiB1c2luZyB0aGUgZ2l2ZW4ga2V5LgogICAgICogSXQgcmV0dXJucyBhIEpXUyBhbmQgd2lsbCBwb3B1bGF0ZSB0aGUgJHNpZ25hdHVyZSB2YXJpYWJsZSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG90aGVyd2lzZSBhbiBleGNlcHRpb24gaXMgdGhyb3duLgogICAgICoKICAgICAqIEB0aHJvd3MgRXhjZXB0aW9uIGlmIHRoZSB0b2tlbiBjYW5ub3QgYmUgbG9hZGVkIG9yIHZlcmlmaWVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsb2FkQW5kVmVyaWZ5V2l0aEtleShzdHJpbmcgJHRva2VuLCBKV0sgJGtleSwgP2ludCAmJHNpZ25hdHVyZSwgP3N0cmluZyAkcGF5bG9hZCA9IG51bGwpOiBKV1MKICAgIHsKICAgICAgICAka2V5c2V0ID0gbmV3IEpXS1NldChbJGtleV0pOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmxvYWRBbmRWZXJpZnlXaXRoS2V5U2V0KCR0b2tlbiwgJGtleXNldCwgJHNpZ25hdHVyZSwgJHBheWxvYWQpOwogICAgfQoKICAgIC8qKgogICAgICogVGhpcyBtZXRob2Qgd2lsbCB0cnkgdG8gbG9hZCBhbmQgdmVyaWZ5IHRoZSB0b2tlbiB1c2luZyB0aGUgZ2l2ZW4ga2V5IHNldC4KICAgICAqIEl0IHJldHVybnMgYSBKV1MgYW5kIHdpbGwgcG9wdWxhdGUgdGhlICRzaWduYXR1cmUgdmFyaWFibGUgaW4gY2FzZSBvZiBzdWNjZXNzLCBvdGhlcndpc2UgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KICAgICAqCiAgICAgKiBAdGhyb3dzIEV4Y2VwdGlvbiBpZiB0aGUgdG9rZW4gY2Fubm90IGJlIGxvYWRlZCBvciB2ZXJpZmllZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9hZEFuZFZlcmlmeVdpdGhLZXlTZXQoc3RyaW5nICR0b2tlbiwgSldLU2V0ICRrZXlzZXQsID9pbnQgJiRzaWduYXR1cmUsID9zdHJpbmcgJHBheWxvYWQgPSBudWxsKTogSldTCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGp3cyA9ICR0aGlzLT5zZXJpYWxpemVyTWFuYWdlci0+dW5zZXJpYWxpemUoJHRva2VuKTsKICAgICAgICAgICAgJG5iU2lnbmF0dXJlcyA9ICRqd3MtPmNvdW50U2lnbmF0dXJlcygpOwogICAgICAgICAgICBmb3IgKCRpID0gMDsgJGkgPCAkbmJTaWduYXR1cmVzOyArKyRpKSB7CiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPnByb2Nlc3NTaWduYXR1cmUoJGp3cywgJGtleXNldCwgJGksICRwYXlsb2FkKSkgewogICAgICAgICAgICAgICAgICAgICRzaWduYXR1cmUgPSAkaTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRqd3M7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgLy8gTm90aGluZyB0byBkby4gRXhjZXB0aW9uIHRocm93biBqdXN0IGFmdGVyCiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmFibGUgdG8gbG9hZCBhbmQgdmVyaWZ5IHRoZSB0b2tlbi4nKTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIHByb2Nlc3NTaWduYXR1cmUoSldTICRqd3MsIEpXS1NldCAka2V5c2V0LCBpbnQgJHNpZ25hdHVyZSwgP3N0cmluZyAkcGF5bG9hZCk6IGJvb2wKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAobnVsbCAhPT0gJHRoaXMtPmhlYWRlckNoZWNrZXJNYW5hZ2VyKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+aGVhZGVyQ2hlY2tlck1hbmFnZXItPmNoZWNrKCRqd3MsICRzaWduYXR1cmUpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmp3c1ZlcmlmaWVyLT52ZXJpZnlXaXRoS2V5U2V0KCRqd3MsICRrZXlzZXQsICRzaWduYXR1cmUsICRwYXlsb2FkKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSLoaderFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBKb3NlXENvbXBvbmVudFxDaGVja2VyXEhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeTsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyXEpXU1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeTsKCmNsYXNzIEpXU0xvYWRlckZhY3RvcnkKewogICAgLyoqCiAgICAgKiBAdmFyIEpXU1ZlcmlmaWVyRmFjdG9yeQogICAgICovCiAgICBwcml2YXRlICRqd3NWZXJpZmllckZhY3Rvcnk7CgogICAgLyoqCiAgICAgKiBAdmFyIEpXU1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeQogICAgICovCiAgICBwcml2YXRlICRqd3NTZXJpYWxpemVyTWFuYWdlckZhY3Rvcnk7CgogICAgLyoqCiAgICAgKiBAdmFyIG51bGx8SGVhZGVyQ2hlY2tlck1hbmFnZXJGYWN0b3J5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoSldTU2VyaWFsaXplck1hbmFnZXJGYWN0b3J5ICRqd3NTZXJpYWxpemVyTWFuYWdlckZhY3RvcnksIEpXU1ZlcmlmaWVyRmFjdG9yeSAkandzVmVyaWZpZXJGYWN0b3J5LCA/SGVhZGVyQ2hlY2tlck1hbmFnZXJGYWN0b3J5ICRoZWFkZXJDaGVja2VyTWFuYWdlckZhY3RvcnkpCiAgICB7CiAgICAgICAgJHRoaXMtPmp3c1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeSA9ICRqd3NTZXJpYWxpemVyTWFuYWdlckZhY3Rvcnk7CiAgICAgICAgJHRoaXMtPmp3c1ZlcmlmaWVyRmFjdG9yeSA9ICRqd3NWZXJpZmllckZhY3Rvcnk7CiAgICAgICAgJHRoaXMtPmhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeSA9ICRoZWFkZXJDaGVja2VyTWFuYWdlckZhY3Rvcnk7CiAgICB9CgogICAgLyoqCiAgICAgKiBDcmVhdGVzIGEgSldTTG9hZGVyIHVzaW5nIHRoZSBnaXZlbiBzZXJpYWxpemVyIGFsaWFzZXMsIHNpZ25hdHVyZSBhbGdvcml0aG0gYWxpYXNlcyBhbmQgKG9wdGlvbmFsbHkpCiAgICAgKiB0aGUgaGVhZGVyIGNoZWNrZXIgYWxpYXNlcy4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGNyZWF0ZShhcnJheSAkc2VyaWFsaXplcnMsIGFycmF5ICRhbGdvcml0aG1zLCBhcnJheSAkaGVhZGVyQ2hlY2tlcnMgPSBbXSk6IEpXU0xvYWRlcgogICAgewogICAgICAgICRzZXJpYWxpemVyTWFuYWdlciA9ICR0aGlzLT5qd3NTZXJpYWxpemVyTWFuYWdlckZhY3RvcnktPmNyZWF0ZSgkc2VyaWFsaXplcnMpOwogICAgICAgICRqd3NWZXJpZmllciA9ICR0aGlzLT5qd3NWZXJpZmllckZhY3RvcnktPmNyZWF0ZSgkYWxnb3JpdGhtcyk7CiAgICAgICAgaWYgKG51bGwgIT09ICR0aGlzLT5oZWFkZXJDaGVja2VyTWFuYWdlckZhY3RvcnkpIHsKICAgICAgICAgICAgJGhlYWRlckNoZWNrZXJNYW5hZ2VyID0gJHRoaXMtPmhlYWRlckNoZWNrZXJNYW5hZ2VyRmFjdG9yeS0+Y3JlYXRlKCRoZWFkZXJDaGVja2Vycyk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGhlYWRlckNoZWNrZXJNYW5hZ2VyID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiBuZXcgSldTTG9hZGVyKCRzZXJpYWxpemVyTWFuYWdlciwgJGp3c1ZlcmlmaWVyLCAkaGVhZGVyQ2hlY2tlck1hbmFnZXIpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSTokenSupport.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBKb3NlXENvbXBvbmVudFxDaGVja2VyXFRva2VuVHlwZVN1cHBvcnQ7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXVDsKCmZpbmFsIGNsYXNzIEpXU1Rva2VuU3VwcG9ydCBpbXBsZW1lbnRzIFRva2VuVHlwZVN1cHBvcnQKewogICAgcHVibGljIGZ1bmN0aW9uIHN1cHBvcnRzKEpXVCAkand0KTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkand0IGluc3RhbmNlb2YgSldTOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNpZ25hdHVyZSBpbmRleCBkb2VzIG5vdCBleGlzdAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmV0cmlldmVUb2tlbkhlYWRlcnMoSldUICRqd3QsIGludCAkaW5kZXgsIGFycmF5ICYkcHJvdGVjdGVkSGVhZGVyLCBhcnJheSAmJHVucHJvdGVjdGVkSGVhZGVyKTogdm9pZAogICAgewogICAgICAgIGlmICghJGp3dCBpbnN0YW5jZW9mIEpXUykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoJGluZGV4ID4gJGp3dC0+Y291bnRTaWduYXR1cmVzKCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5rbm93biBzaWduYXR1cmUgaW5kZXguJyk7CiAgICAgICAgfQogICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSAkand0LT5nZXRTaWduYXR1cmUoJGluZGV4KS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCk7CiAgICAgICAgJHVucHJvdGVjdGVkSGVhZGVyID0gJGp3dC0+Z2V0U2lnbmF0dXJlKCRpbmRleCktPmdldEhlYWRlcigpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSVerifier.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxBbGdvcml0aG07CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEFsZ29yaXRobU1hbmFnZXI7CnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEpXSzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcSldLU2V0Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEtleUNoZWNrZXI7CnVzZSBKb3NlXENvbXBvbmVudFxTaWduYXR1cmVcQWxnb3JpdGhtXE1hY0FsZ29yaXRobTsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxBbGdvcml0aG1cU2lnbmF0dXJlQWxnb3JpdGhtOwp1c2UgVGhyb3dhYmxlOwoKY2xhc3MgSldTVmVyaWZpZXIKewogICAgLyoqCiAgICAgKiBAdmFyIEFsZ29yaXRobU1hbmFnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkc2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlcjsKCiAgICAvKioKICAgICAqIEpXU1ZlcmlmaWVyIGNvbnN0cnVjdG9yLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQWxnb3JpdGhtTWFuYWdlciAkc2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlcikKICAgIHsKICAgICAgICAkdGhpcy0+c2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlciA9ICRzaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgYWxnb3JpdGhtIG1hbmFnZXIgYXNzb2NpYXRlZCB0byB0aGUgSldTVmVyaWZpZXIuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmVBbGdvcml0aG1NYW5hZ2VyKCk6IEFsZ29yaXRobU1hbmFnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpZ25hdHVyZUFsZ29yaXRobU1hbmFnZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byB2ZXJpZnkgdGhlIEpXUyBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIGtleSBhbmQgZm9yIHRoZSBnaXZlbiBzaWduYXR1cmUuCiAgICAgKiBJdCByZXR1cm5zIHRydWUgaWYgdGhlIHNpZ25hdHVyZSBpcyB2ZXJpZmllZCwgb3RoZXJ3aXNlIGZhbHNlLgogICAgICoKICAgICAqIEByZXR1cm4gYm9vbCB0cnVlIGlmIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNpZ25hdHVyZSBzdWNjZWVkZWQsIGVsc2UgZmFsc2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHZlcmlmeVdpdGhLZXkoSldTICRqd3MsIEpXSyAkandrLCBpbnQgJHNpZ25hdHVyZSwgP3N0cmluZyAkZGV0YWNoZWRQYXlsb2FkID0gbnVsbCk6IGJvb2wKICAgIHsKICAgICAgICAkandrc2V0ID0gbmV3IEpXS1NldChbJGp3a10pOwoKICAgICAgICByZXR1cm4gJHRoaXMtPnZlcmlmeVdpdGhLZXlTZXQoJGp3cywgJGp3a3NldCwgJHNpZ25hdHVyZSwgJGRldGFjaGVkUGF5bG9hZCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyeSB0byB2ZXJpZnkgdGhlIEpXUyBvYmplY3QgdXNpbmcgdGhlIGdpdmVuIGtleSBzZXQgYW5kIGZvciB0aGUgZ2l2ZW4gc2lnbmF0dXJlLgogICAgICogSXQgcmV0dXJucyB0cnVlIGlmIHRoZSBzaWduYXR1cmUgaXMgdmVyaWZpZWQsIG90aGVyd2lzZSBmYWxzZS4KICAgICAqCiAgICAgKiBAcGFyYW0gSldTICAgICAgICAgJGp3cyAgICAgICAgICAgICBBIEpXUyBvYmplY3QKICAgICAqIEBwYXJhbSBKV0tTZXQgICAgICAkandrc2V0ICAgICAgICAgIFRoZSBzaWduYXR1cmUgd2lsbCBiZSB2ZXJpZmllZCB1c2luZyBrZXlzIGluIHRoZSBrZXkgc2V0CiAgICAgKiBAcGFyYW0gSldLICAgICAgICAgJGp3ayAgICAgICAgICAgICBUaGUga2V5IHVzZWQgdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmUgaW4gY2FzZSBvZiBzdWNjZXNzCiAgICAgKiBAcGFyYW0gbnVsbHxzdHJpbmcgJGRldGFjaGVkUGF5bG9hZCBJZiBub3QgbnVsbCwgdGhlIHZhbHVlIG11c3QgYmUgdGhlIGRldGFjaGVkIHBheWxvYWQgZW5jb2RlZCBpbiBCYXNlNjQgVVJMIHNhZmUuIElmIHRoZSBpbnB1dCBjb250YWlucyBhIHBheWxvYWQsIHRocm93cyBhbiBleGNlcHRpb24uCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlcmUgaXMgbm8ga2V5IGluIHRoZSBrZXlzZXQKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSB0b2tlbiBkb2VzIG5vdCBjb250YWluIGFueSBzaWduYXR1cmUKICAgICAqCiAgICAgKiBAcmV0dXJuIGJvb2wgdHJ1ZSBpZiB0aGUgdmVyaWZpY2F0aW9uIG9mIHRoZSBzaWduYXR1cmUgc3VjY2VlZGVkLCBlbHNlIGZhbHNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJpZnlXaXRoS2V5U2V0KEpXUyAkandzLCBKV0tTZXQgJGp3a3NldCwgaW50ICRzaWduYXR1cmVJbmRleCwgP3N0cmluZyAkZGV0YWNoZWRQYXlsb2FkID0gbnVsbCwgSldLICYkandrID0gbnVsbCk6IGJvb2wKICAgIHsKICAgICAgICBpZiAoMCA9PT0gJGp3a3NldC0+Y291bnQoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGVyZSBpcyBubyBrZXkgaW4gdGhlIGtleSBzZXQuJyk7CiAgICAgICAgfQogICAgICAgIGlmICgwID09PSAkandzLT5jb3VudFNpZ25hdHVyZXMoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdUaGUgSldTIGRvZXMgbm90IGNvbnRhaW4gYW55IHNpZ25hdHVyZS4nKTsKICAgICAgICB9CiAgICAgICAgJHRoaXMtPmNoZWNrUGF5bG9hZCgkandzLCAkZGV0YWNoZWRQYXlsb2FkKTsKICAgICAgICAkc2lnbmF0dXJlID0gJGp3cy0+Z2V0U2lnbmF0dXJlKCRzaWduYXR1cmVJbmRleCk7CgogICAgICAgIHJldHVybiAkdGhpcy0+dmVyaWZ5U2lnbmF0dXJlKCRqd3MsICRqd2tzZXQsICRzaWduYXR1cmUsICRkZXRhY2hlZFBheWxvYWQsICRqd2spOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gdmVyaWZ5U2lnbmF0dXJlKEpXUyAkandzLCBKV0tTZXQgJGp3a3NldCwgU2lnbmF0dXJlICRzaWduYXR1cmUsID9zdHJpbmcgJGRldGFjaGVkUGF5bG9hZCA9IG51bGwsIEpXSyAmJHN1Y2Nlc3NKd2sgPSBudWxsKTogYm9vbAogICAgewogICAgICAgICRpbnB1dCA9ICR0aGlzLT5nZXRJbnB1dFRvVmVyaWZ5KCRqd3MsICRzaWduYXR1cmUsICRkZXRhY2hlZFBheWxvYWQpOwogICAgICAgICRhbGdvcml0aG0gPSAkdGhpcy0+Z2V0QWxnb3JpdGhtKCRzaWduYXR1cmUpOwogICAgICAgIGZvcmVhY2ggKCRqd2tzZXQtPmFsbCgpIGFzICRqd2spIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIEtleUNoZWNrZXI6OmNoZWNrS2V5VXNhZ2UoJGp3aywgJ3ZlcmlmaWNhdGlvbicpOwogICAgICAgICAgICAgICAgS2V5Q2hlY2tlcjo6Y2hlY2tLZXlBbGdvcml0aG0oJGp3aywgJGFsZ29yaXRobS0+bmFtZSgpKTsKICAgICAgICAgICAgICAgIGlmICh0cnVlID09PSAkYWxnb3JpdGhtLT52ZXJpZnkoJGp3aywgJGlucHV0LCAkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAkc3VjY2Vzc0p3ayA9ICRqd2s7CgogICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgICAgIC8vV2UgZG8gbm90aGluZywgd2UgY29udGludWUgd2l0aCBvdGhlciBrZXlzCiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0SW5wdXRUb1ZlcmlmeShKV1MgJGp3cywgU2lnbmF0dXJlICRzaWduYXR1cmUsID9zdHJpbmcgJGRldGFjaGVkUGF5bG9hZCk6IHN0cmluZwogICAgewogICAgICAgICRpc1BheWxvYWRFbXB0eSA9ICR0aGlzLT5pc1BheWxvYWRFbXB0eSgkandzLT5nZXRQYXlsb2FkKCkpOwogICAgICAgICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpOwogICAgICAgIGlmICghJHNpZ25hdHVyZS0+aGFzUHJvdGVjdGVkSGVhZGVyUGFyYW1ldGVyKCdiNjQnKSB8fCB0cnVlID09PSAkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXJQYXJhbWV0ZXIoJ2I2NCcpKSB7CiAgICAgICAgICAgIGlmIChudWxsICE9PSAkandzLT5nZXRFbmNvZGVkUGF5bG9hZCgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJGp3cy0+Z2V0RW5jb2RlZFBheWxvYWQoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwYXlsb2FkID0gJGlzUGF5bG9hZEVtcHR5ID8gJGRldGFjaGVkUGF5bG9hZCA6ICRqd3MtPmdldFBheWxvYWQoKTsKCiAgICAgICAgICAgIHJldHVybiBzcHJpbnRmKCclcy4lcycsICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCBCYXNlNjRVcmw6OmVuY29kZSgkcGF5bG9hZCkpOwogICAgICAgIH0KCiAgICAgICAgJHBheWxvYWQgPSAkaXNQYXlsb2FkRW1wdHkgPyAkZGV0YWNoZWRQYXlsb2FkIDogJGp3cy0+Z2V0UGF5bG9hZCgpOwoKICAgICAgICByZXR1cm4gc3ByaW50ZignJXMuJXMnLCAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJHBheWxvYWQpOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBheWxvYWQgaXMgc2V0IHdoZW4gYSBkZXRhY2hlZCBwYXlsb2FkIGlzIHByb3ZpZGVkIG9yIG5vIHBheWxvYWQgaXMgZGVmaW5lZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUGF5bG9hZChKV1MgJGp3cywgP3N0cmluZyAkZGV0YWNoZWRQYXlsb2FkID0gbnVsbCk6IHZvaWQKICAgIHsKICAgICAgICAkaXNQYXlsb2FkRW1wdHkgPSAkdGhpcy0+aXNQYXlsb2FkRW1wdHkoJGp3cy0+Z2V0UGF5bG9hZCgpKTsKICAgICAgICBpZiAobnVsbCAhPT0gJGRldGFjaGVkUGF5bG9hZCAmJiAhJGlzUGF5bG9hZEVtcHR5KSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ0EgZGV0YWNoZWQgcGF5bG9hZCBpcyBzZXQsIGJ1dCB0aGUgSldTIGFscmVhZHkgaGFzIGEgcGF5bG9hZC4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRpc1BheWxvYWRFbXB0eSAmJiBudWxsID09PSAkZGV0YWNoZWRQYXlsb2FkKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1RoZSBKV1MgaGFzIGEgZGV0YWNoZWQgcGF5bG9hZCwgYnV0IG5vIHBheWxvYWQgaXMgcHJvdmlkZWQuJyk7CiAgICAgICAgfQogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGhlYWRlciBwYXJhbWV0ZXIgImFsZyIgaXMgbWlzc2luZyBvciBpbnZhbGlkCiAgICAgKgogICAgICogQHJldHVybiBNYWNBbGdvcml0aG18U2lnbmF0dXJlQWxnb3JpdGhtCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0QWxnb3JpdGhtKFNpZ25hdHVyZSAkc2lnbmF0dXJlKTogQWxnb3JpdGhtCiAgICB7CiAgICAgICAgJGNvbXBsZXRlSGVhZGVyID0gYXJyYXlfbWVyZ2UoJHNpZ25hdHVyZS0+Z2V0UHJvdGVjdGVkSGVhZGVyKCksICRzaWduYXR1cmUtPmdldEhlYWRlcigpKTsKICAgICAgICBpZiAoIWlzc2V0KCRjb21wbGV0ZUhlYWRlclsnYWxnJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ05vICJhbGciIHBhcmFtZXRlciBzZXQgaW4gdGhlIGhlYWRlci4nKTsKICAgICAgICB9CgogICAgICAgICRhbGdvcml0aG0gPSAkdGhpcy0+c2lnbmF0dXJlQWxnb3JpdGhtTWFuYWdlci0+Z2V0KCRjb21wbGV0ZUhlYWRlclsnYWxnJ10pOwogICAgICAgIGlmICghJGFsZ29yaXRobSBpbnN0YW5jZW9mIFNpZ25hdHVyZUFsZ29yaXRobSAmJiAhJGFsZ29yaXRobSBpbnN0YW5jZW9mIE1hY0FsZ29yaXRobSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBhbGdvcml0aG0gIiVzIiBpcyBub3Qgc3VwcG9ydGVkIG9yIGlzIG5vdCBhIHNpZ25hdHVyZSBvciBNQUMgYWxnb3JpdGhtLicsICRjb21wbGV0ZUhlYWRlclsnYWxnJ10pKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkYWxnb3JpdGhtOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaXNQYXlsb2FkRW1wdHkoP3N0cmluZyAkcGF5bG9hZCk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gbnVsbCA9PT0gJHBheWxvYWQgfHwgJycgPT09ICRwYXlsb2FkOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/JWSVerifierFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBKb3NlXENvbXBvbmVudFxDb3JlXEFsZ29yaXRobU1hbmFnZXJGYWN0b3J5OwoKY2xhc3MgSldTVmVyaWZpZXJGYWN0b3J5CnsKICAgIC8qKgogICAgICogQHZhciBBbGdvcml0aG1NYW5hZ2VyRmFjdG9yeQogICAgICovCiAgICBwcml2YXRlICRhbGdvcml0aG1NYW5hZ2VyRmFjdG9yeTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQWxnb3JpdGhtTWFuYWdlckZhY3RvcnkgJGFsZ29yaXRobU1hbmFnZXJGYWN0b3J5KQogICAgewogICAgICAgICR0aGlzLT5hbGdvcml0aG1NYW5hZ2VyRmFjdG9yeSA9ICRhbGdvcml0aG1NYW5hZ2VyRmFjdG9yeTsKICAgIH0KCiAgICAvKioKICAgICAqIENyZWF0ZXMgYSBKV1NWZXJpZmllciB1c2luZyB0aGUgZ2l2ZW4gc2lnbmF0dXJlIGFsZ29yaXRobSBhbGlhc2VzLgogICAgICoKICAgICAqIEBwYXJhbSBzdHJpbmdbXSAkYWxnb3JpdGhtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKGFycmF5ICRhbGdvcml0aG1zKTogSldTVmVyaWZpZXIKICAgIHsKICAgICAgICAkYWxnb3JpdGhtTWFuYWdlciA9ICR0aGlzLT5hbGdvcml0aG1NYW5hZ2VyRmFjdG9yeS0+Y3JlYXRlKCRhbGdvcml0aG1zKTsKCiAgICAgICAgcmV0dXJuIG5ldyBKV1NWZXJpZmllcigkYWxnb3JpdGhtTWFuYWdlcik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UEhQIEpXVCBTaWduYXR1cmUgQ29tcG9uZW50Cj09PT09PT09PT09PT09PT09PT09PT09PT09PQoKVGhpcyByZXBvc2l0b3J5IGlzIGEgc3ViIHJlcG9zaXRvcnkgb2YgW3RoZSBKV1QgRnJhbWV3b3JrXShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIHByb2plY3QgYW5kIGlzIFJFQUQgT05MWS4KCioqUGxlYXNlIGRvIG5vdCBzdWJtaXQgYW55IFB1bGwgUmVxdWVzdCBoZXJlLioqCllvdSBzaG91bGQgZ28gdG8gW3RoZSBtYWluIHJlcG9zaXRvcnldKGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4vand0LWZyYW1ld29yaykgaW5zdGVhZC4gCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vCgojIExpY2VuY2UKClRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZSB1bmRlciBbTUlUIGxpY2VuY2VdKExJQ0VOU0UpLgo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/CompactSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxKc29uQ29udmVydGVyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEpXUzsKdXNlIExvZ2ljRXhjZXB0aW9uOwp1c2UgVGhyb3dhYmxlOwoKZmluYWwgY2xhc3MgQ29tcGFjdFNlcmlhbGl6ZXIgZXh0ZW5kcyBTZXJpYWxpemVyCnsKICAgIHB1YmxpYyBjb25zdCBOQU1FID0gJ2p3c19jb21wYWN0JzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzcGxheU5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdKV1MgQ29tcGFjdCc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIHNlbGY6Ok5BTUU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIExvZ2ljRXhjZXB0aW9uIGlmIHRoZSBKV1MgaGFzIHVucHJvdGVjdGVkIGhlYWRlciAoaW52YWxpZCBmb3IgY29tcGFjdCBKU09OKQogICAgICogQHRocm93cyBMb2dpY0V4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBpcyBub3QgZW5jb2RlZCBidXQgY29udGFpbnMgdW5hdXRob3JpemVkIGNoYXJhY3RlcnMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZShKV1MgJGp3cywgP2ludCAkc2lnbmF0dXJlSW5kZXggPSBudWxsKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKG51bGwgPT09ICRzaWduYXR1cmVJbmRleCkgewogICAgICAgICAgICAkc2lnbmF0dXJlSW5kZXggPSAwOwogICAgICAgIH0KICAgICAgICAkc2lnbmF0dXJlID0gJGp3cy0+Z2V0U2lnbmF0dXJlKCRzaWduYXR1cmVJbmRleCk7CiAgICAgICAgaWYgKDAgIT09IGNvdW50KCRzaWduYXR1cmUtPmdldEhlYWRlcigpKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1RoZSBzaWduYXR1cmUgY29udGFpbnMgdW5wcm90ZWN0ZWQgaGVhZGVyIHBhcmFtZXRlcnMgYW5kIGNhbm5vdCBiZSBjb252ZXJ0ZWQgaW50byBjb21wYWN0IEpTT04uJyk7CiAgICAgICAgfQogICAgICAgICRpc0VtcHR5UGF5bG9hZCA9IG51bGwgPT09ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCkgfHwgJycgPT09ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCk7CiAgICAgICAgaWYgKCEkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoKSkgJiYgISRpc0VtcHR5UGF5bG9hZCkgewogICAgICAgICAgICBpZiAoMSAhPT0gcHJlZ19tYXRjaCgnL15bXHh7MjB9LVx4ezJkfXxceHsyZn0tXHh7N2V9XSokL3UnLCAkandzLT5nZXRQYXlsb2FkKCkpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ1VuYWJsZSB0byBjb252ZXJ0IHRoZSBKV1Mgd2l0aCBub24tZW5jb2RlZCBwYXlsb2FkLicpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gc3ByaW50ZigKICAgICAgICAgICAgJyVzLiVzLiVzJywKICAgICAgICAgICAgJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpLAogICAgICAgICAgICAkandzLT5nZXRFbmNvZGVkUGF5bG9hZCgpLAogICAgICAgICAgICBCYXNlNjRVcmw6OmVuY29kZSgkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSkKICAgICAgICApOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGlucHV0IGlzIGludmFsaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHVuc2VyaWFsaXplKHN0cmluZyAkaW5wdXQpOiBKV1MKICAgIHsKICAgICAgICAkcGFydHMgPSBleHBsb2RlKCcuJywgJGlucHV0KTsKICAgICAgICBpZiAoMyAhPT0gY291bnQoJHBhcnRzKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBpbnB1dCcpOwogICAgICAgIH0KCiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSAkcGFydHNbMF07CiAgICAgICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoQmFzZTY0VXJsOjpkZWNvZGUoJHBhcnRzWzBdKSk7CiAgICAgICAgICAgICRoYXNQYXlsb2FkID0gJycgIT09ICRwYXJ0c1sxXTsKICAgICAgICAgICAgaWYgKCEkaGFzUGF5bG9hZCkgewogICAgICAgICAgICAgICAgJHBheWxvYWQgPSBudWxsOwogICAgICAgICAgICAgICAgJGVuY29kZWRQYXlsb2FkID0gbnVsbDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRlbmNvZGVkUGF5bG9hZCA9ICRwYXJ0c1sxXTsKICAgICAgICAgICAgICAgICRwYXlsb2FkID0gJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQoJHByb3RlY3RlZEhlYWRlcikgPyBCYXNlNjRVcmw6OmRlY29kZSgkZW5jb2RlZFBheWxvYWQpIDogJGVuY29kZWRQYXlsb2FkOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRzaWduYXR1cmUgPSBCYXNlNjRVcmw6OmRlY29kZSgkcGFydHNbMl0pOwoKICAgICAgICAgICAgJGp3cyA9IG5ldyBKV1MoJHBheWxvYWQsICRlbmNvZGVkUGF5bG9hZCwgISRoYXNQYXlsb2FkKTsKCiAgICAgICAgICAgIHJldHVybiAkandzLT5hZGRTaWduYXR1cmUoJHNpZ25hdHVyZSwgJHByb3RlY3RlZEhlYWRlciwgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkdGhyb3dhYmxlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGlucHV0JywgJHRocm93YWJsZS0+Z2V0Q29kZSgpLCAkdGhyb3dhYmxlKTsKICAgICAgICB9CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JSONFlattenedSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEJhc2U2NFVybFxCYXNlNjRVcmw7CnVzZSBmdW5jdGlvbiBjb3VudDsKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIGZ1bmN0aW9uIGlzX2FycmF5Owp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEpzb25Db252ZXJ0ZXI7CnVzZSBKb3NlXENvbXBvbmVudFxTaWduYXR1cmVcSldTOwoKZmluYWwgY2xhc3MgSlNPTkZsYXR0ZW5lZFNlcmlhbGl6ZXIgZXh0ZW5kcyBTZXJpYWxpemVyCnsKICAgIHB1YmxpYyBjb25zdCBOQU1FID0gJ2p3c19qc29uX2ZsYXR0ZW5lZCc7CgogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlOYW1lKCk6IHN0cmluZwogICAgewogICAgICAgIHJldHVybiAnSldTIEpTT04gRmxhdHRlbmVkJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6TkFNRTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKEpXUyAkandzLCA/aW50ICRzaWduYXR1cmVJbmRleCA9IG51bGwpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHNpZ25hdHVyZUluZGV4KSB7CiAgICAgICAgICAgICRzaWduYXR1cmVJbmRleCA9IDA7CiAgICAgICAgfQogICAgICAgICRzaWduYXR1cmUgPSAkandzLT5nZXRTaWduYXR1cmUoJHNpZ25hdHVyZUluZGV4KTsKCiAgICAgICAgJGRhdGEgPSBbXTsKICAgICAgICAkdmFsdWVzID0gWwogICAgICAgICAgICAncGF5bG9hZCcgPT4gJGp3cy0+Z2V0RW5jb2RlZFBheWxvYWQoKSwKICAgICAgICAgICAgJ3Byb3RlY3RlZCcgPT4gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpLAogICAgICAgICAgICAnaGVhZGVyJyA9PiAkc2lnbmF0dXJlLT5nZXRIZWFkZXIoKSwKICAgICAgICBdOwogICAgICAgICRlbmNvZGVkUGF5bG9hZCA9ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCk7CiAgICAgICAgaWYgKG51bGwgIT09ICRlbmNvZGVkUGF5bG9hZCAmJiAnJyAhPT0gJGVuY29kZWRQYXlsb2FkKSB7CiAgICAgICAgICAgICRkYXRhWydwYXlsb2FkJ10gPSAkZW5jb2RlZFBheWxvYWQ7CiAgICAgICAgfQogICAgICAgICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpOwogICAgICAgIGlmIChudWxsICE9PSAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciAmJiAnJyAhPT0gJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIpIHsKICAgICAgICAgICAgJGRhdGFbJ3Byb3RlY3RlZCddID0gJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXI7CiAgICAgICAgfQogICAgICAgICRoZWFkZXIgPSAkc2lnbmF0dXJlLT5nZXRIZWFkZXIoKTsKICAgICAgICBpZiAoMCAhPT0gY291bnQoJGhlYWRlcikpIHsKICAgICAgICAgICAgJGRhdGFbJ2hlYWRlciddID0gJGhlYWRlcjsKICAgICAgICB9CiAgICAgICAgJGRhdGFbJ3NpZ25hdHVyZSddID0gQmFzZTY0VXJsOjplbmNvZGUoJHNpZ25hdHVyZS0+Z2V0U2lnbmF0dXJlKCkpOwoKICAgICAgICByZXR1cm4gSnNvbkNvbnZlcnRlcjo6ZW5jb2RlKCRkYXRhKTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgSldTIGhlYWRlciBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZShzdHJpbmcgJGlucHV0KTogSldTCiAgICB7CiAgICAgICAgJGRhdGEgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoJGlucHV0KTsKICAgICAgICBpZiAoIWlzX2FycmF5KCRkYXRhKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBpbnB1dC4nKTsKICAgICAgICB9CiAgICAgICAgaWYgKCFpc3NldCgkZGF0YVsnc2lnbmF0dXJlJ10pKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oJ1Vuc3VwcG9ydGVkIGlucHV0LicpOwogICAgICAgIH0KICAgICAgICAkc2lnbmF0dXJlID0gQmFzZTY0VXJsOjpkZWNvZGUoJGRhdGFbJ3NpZ25hdHVyZSddKTsKCiAgICAgICAgaWYgKGlzc2V0KCRkYXRhWydwcm90ZWN0ZWQnXSkpIHsKICAgICAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSAkZGF0YVsncHJvdGVjdGVkJ107CiAgICAgICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSBKc29uQ29udmVydGVyOjpkZWNvZGUoQmFzZTY0VXJsOjpkZWNvZGUoJGRhdGFbJ3Byb3RlY3RlZCddKSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSBudWxsOwogICAgICAgICAgICAkcHJvdGVjdGVkSGVhZGVyID0gW107CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkZGF0YVsnaGVhZGVyJ10pKSB7CiAgICAgICAgICAgIGlmICghaXNfYXJyYXkoJGRhdGFbJ2hlYWRlciddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignQmFkIGhlYWRlci4nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkaGVhZGVyID0gJGRhdGFbJ2hlYWRlciddOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRoZWFkZXIgPSBbXTsKICAgICAgICB9CgogICAgICAgIGlmIChpc3NldCgkZGF0YVsncGF5bG9hZCddKSkgewogICAgICAgICAgICAkZW5jb2RlZFBheWxvYWQgPSAkZGF0YVsncGF5bG9hZCddOwogICAgICAgICAgICAkcGF5bG9hZCA9ICR0aGlzLT5pc1BheWxvYWRFbmNvZGVkKCRwcm90ZWN0ZWRIZWFkZXIpID8gQmFzZTY0VXJsOjpkZWNvZGUoJGVuY29kZWRQYXlsb2FkKSA6ICRlbmNvZGVkUGF5bG9hZDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkcGF5bG9hZCA9IG51bGw7CiAgICAgICAgICAgICRlbmNvZGVkUGF5bG9hZCA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAkandzID0gbmV3IEpXUygkcGF5bG9hZCwgJGVuY29kZWRQYXlsb2FkLCBudWxsID09PSAkZW5jb2RlZFBheWxvYWQpOwoKICAgICAgICByZXR1cm4gJGp3cy0+YWRkU2lnbmF0dXJlKCRzaWduYXR1cmUsICRwcm90ZWN0ZWRIZWFkZXIsICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JSONGeneralSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CnVzZSBCYXNlNjRVcmxcQmFzZTY0VXJsOwp1c2UgZnVuY3Rpb24gY291bnQ7CnVzZSBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb247CnVzZSBmdW5jdGlvbiBpc19hcnJheTsKdXNlIGZ1bmN0aW9uIGlzX3N0cmluZzsKdXNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxKc29uQ29udmVydGVyOwp1c2UgSm9zZVxDb21wb25lbnRcU2lnbmF0dXJlXEpXUzsKdXNlIExvZ2ljRXhjZXB0aW9uOwoKZmluYWwgY2xhc3MgSlNPTkdlbmVyYWxTZXJpYWxpemVyIGV4dGVuZHMgU2VyaWFsaXplcgp7CiAgICBwdWJsaWMgY29uc3QgTkFNRSA9ICdqd3NfanNvbl9nZW5lcmFsJzsKCiAgICBwdWJsaWMgZnVuY3Rpb24gZGlzcGxheU5hbWUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICdKV1MgSlNPTiBHZW5lcmFsJzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gc2VsZjo6TkFNRTsKICAgIH0KCiAgICAvKioKICAgICAqIEB0aHJvd3MgTG9naWNFeGNlcHRpb24gaWYgbm8gc2lnbmF0dXJlIGlzIGF0dGFjaGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoSldTICRqd3MsID9pbnQgJHNpZ25hdHVyZUluZGV4ID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICgwID09PSAkandzLT5jb3VudFNpZ25hdHVyZXMoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oJ05vIHNpZ25hdHVyZS4nKTsKICAgICAgICB9CgogICAgICAgICRkYXRhID0gW107CiAgICAgICAgJHRoaXMtPmNoZWNrUGF5bG9hZEVuY29kaW5nKCRqd3MpOwoKICAgICAgICBpZiAoZmFsc2UgPT09ICRqd3MtPmlzUGF5bG9hZERldGFjaGVkKCkpIHsKICAgICAgICAgICAgJGRhdGFbJ3BheWxvYWQnXSA9ICRqd3MtPmdldEVuY29kZWRQYXlsb2FkKCk7CiAgICAgICAgfQoKICAgICAgICAkZGF0YVsnc2lnbmF0dXJlcyddID0gW107CiAgICAgICAgZm9yZWFjaCAoJGp3cy0+Z2V0U2lnbmF0dXJlcygpIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgJHRtcCA9IFsnc2lnbmF0dXJlJyA9PiBCYXNlNjRVcmw6OmVuY29kZSgkc2lnbmF0dXJlLT5nZXRTaWduYXR1cmUoKSldOwogICAgICAgICAgICAkdmFsdWVzID0gWwogICAgICAgICAgICAgICAgJ3Byb3RlY3RlZCcgPT4gJHNpZ25hdHVyZS0+Z2V0RW5jb2RlZFByb3RlY3RlZEhlYWRlcigpLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gJHNpZ25hdHVyZS0+Z2V0SGVhZGVyKCksCiAgICAgICAgICAgIF07CgogICAgICAgICAgICBmb3JlYWNoICgkdmFsdWVzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAoKGlzX3N0cmluZygkdmFsdWUpICYmICcnICE9PSAkdmFsdWUpIHx8IChpc19hcnJheSgkdmFsdWUpICYmIDAgIT09IGNvdW50KCR2YWx1ZSkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRtcFska2V5XSA9ICR2YWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkZGF0YVsnc2lnbmF0dXJlcyddW10gPSAkdG1wOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIEpzb25Db252ZXJ0ZXI6OmVuY29kZSgkZGF0YSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgaW5wdXQgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gdW5zZXJpYWxpemUoc3RyaW5nICRpbnB1dCk6IEpXUwogICAgewogICAgICAgICRkYXRhID0gSnNvbkNvbnZlcnRlcjo6ZGVjb2RlKCRpbnB1dCk7CiAgICAgICAgaWYgKCFpc3NldCgkZGF0YVsnc2lnbmF0dXJlcyddKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKCdVbnN1cHBvcnRlZCBpbnB1dC4nKTsKICAgICAgICB9CgogICAgICAgICRpc1BheWxvYWRFbmNvZGVkID0gbnVsbDsKICAgICAgICAkcmF3UGF5bG9hZCA9ICRkYXRhWydwYXlsb2FkJ10gPz8gbnVsbDsKICAgICAgICAkc2lnbmF0dXJlcyA9IFtdOwogICAgICAgIGZvcmVhY2ggKCRkYXRhWydzaWduYXR1cmVzJ10gYXMgJHNpZ25hdHVyZSkgewogICAgICAgICAgICBpZiAoIWlzc2V0KCRzaWduYXR1cmVbJ3NpZ25hdHVyZSddKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgWyRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLCAkcHJvdGVjdGVkSGVhZGVyLCAkaGVhZGVyXSA9ICR0aGlzLT5wcm9jZXNzSGVhZGVycygkc2lnbmF0dXJlKTsKICAgICAgICAgICAgJHNpZ25hdHVyZXNbXSA9IFsKICAgICAgICAgICAgICAgICdzaWduYXR1cmUnID0+IEJhc2U2NFVybDo6ZGVjb2RlKCRzaWduYXR1cmVbJ3NpZ25hdHVyZSddKSwKICAgICAgICAgICAgICAgICdwcm90ZWN0ZWQnID0+ICRwcm90ZWN0ZWRIZWFkZXIsCiAgICAgICAgICAgICAgICAnZW5jb2RlZF9wcm90ZWN0ZWQnID0+ICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gJGhlYWRlciwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgJGlzUGF5bG9hZEVuY29kZWQgPSAkdGhpcy0+cHJvY2Vzc0lzUGF5bG9hZEVuY29kZWQoJGlzUGF5bG9hZEVuY29kZWQsICRwcm90ZWN0ZWRIZWFkZXIpOwogICAgICAgIH0KCiAgICAgICAgJHBheWxvYWQgPSAkdGhpcy0+cHJvY2Vzc1BheWxvYWQoJHJhd1BheWxvYWQsICRpc1BheWxvYWRFbmNvZGVkKTsKICAgICAgICAkandzID0gbmV3IEpXUygkcGF5bG9hZCwgJHJhd1BheWxvYWQpOwogICAgICAgIGZvcmVhY2ggKCRzaWduYXR1cmVzIGFzICRzaWduYXR1cmUpIHsKICAgICAgICAgICAgJGp3cyA9ICRqd3MtPmFkZFNpZ25hdHVyZSgKICAgICAgICAgICAgICAgICRzaWduYXR1cmVbJ3NpZ25hdHVyZSddLAogICAgICAgICAgICAgICAgJHNpZ25hdHVyZVsncHJvdGVjdGVkJ10sCiAgICAgICAgICAgICAgICAkc2lnbmF0dXJlWydlbmNvZGVkX3Byb3RlY3RlZCddLAogICAgICAgICAgICAgICAgJHNpZ25hdHVyZVsnaGVhZGVyJ10KICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkandzOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBheWxvYWQgZW5jb2RpbmcgaXMgaW52YWxpZAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIHByb2Nlc3NJc1BheWxvYWRFbmNvZGVkKD9ib29sICRpc1BheWxvYWRFbmNvZGVkLCBhcnJheSAkcHJvdGVjdGVkSGVhZGVyKTogYm9vbAogICAgewogICAgICAgIGlmIChudWxsID09PSAkaXNQYXlsb2FkRW5jb2RlZCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmlzUGF5bG9hZEVuY29kZWQoJHByb3RlY3RlZEhlYWRlcik7CiAgICAgICAgfQogICAgICAgIGlmICgkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkcHJvdGVjdGVkSGVhZGVyKSAhPT0gJGlzUGF5bG9hZEVuY29kZWQpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignRm9yZWlnbiBwYXlsb2FkIGVuY29kaW5nIGRldGVjdGVkLicpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRpc1BheWxvYWRFbmNvZGVkOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcHJvY2Vzc0hlYWRlcnMoYXJyYXkgJHNpZ25hdHVyZSk6IGFycmF5CiAgICB7CiAgICAgICAgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIgPSAkc2lnbmF0dXJlWydwcm90ZWN0ZWQnXSA/PyBudWxsOwogICAgICAgICRwcm90ZWN0ZWRIZWFkZXIgPSBudWxsID09PSAkZW5jb2RlZFByb3RlY3RlZEhlYWRlciA/IFtdIDogSnNvbkNvbnZlcnRlcjo6ZGVjb2RlKEJhc2U2NFVybDo6ZGVjb2RlKCRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyKSk7CiAgICAgICAgJGhlYWRlciA9IGFycmF5X2tleV9leGlzdHMoJ2hlYWRlcicsICRzaWduYXR1cmUpID8gJHNpZ25hdHVyZVsnaGVhZGVyJ10gOiBbXTsKCiAgICAgICAgcmV0dXJuIFskZW5jb2RlZFByb3RlY3RlZEhlYWRlciwgJHByb3RlY3RlZEhlYWRlciwgJGhlYWRlcl07CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBwcm9jZXNzUGF5bG9hZCg/c3RyaW5nICRyYXdQYXlsb2FkLCA/Ym9vbCAkaXNQYXlsb2FkRW5jb2RlZCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAobnVsbCA9PT0gJHJhd1BheWxvYWQpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2UgPT09ICRpc1BheWxvYWRFbmNvZGVkID8gJHJhd1BheWxvYWQgOiBCYXNlNjRVcmw6OmRlY29kZSgkcmF3UGF5bG9hZCk7CiAgICB9CgogICAgLy8gQHRocm93cyBMb2dpY0V4Y2VwdGlvbiBpZiB0aGUgcGF5bG9hZCBlbmNvZGluZyBpcyBpbnZhbGlkCiAgICBwcml2YXRlIGZ1bmN0aW9uIGNoZWNrUGF5bG9hZEVuY29kaW5nKEpXUyAkandzKTogdm9pZAogICAgewogICAgICAgIGlmICgkandzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJGlzX2VuY29kZWQgPSBudWxsOwogICAgICAgIGZvcmVhY2ggKCRqd3MtPmdldFNpZ25hdHVyZXMoKSBhcyAkc2lnbmF0dXJlKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSAkaXNfZW5jb2RlZCkgewogICAgICAgICAgICAgICAgJGlzX2VuY29kZWQgPSAkdGhpcy0+aXNQYXlsb2FkRW5jb2RlZCgkc2lnbmF0dXJlLT5nZXRQcm90ZWN0ZWRIZWFkZXIoKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGZhbHNlID09PSAkandzLT5pc1BheWxvYWREZXRhY2hlZCgpKSB7CiAgICAgICAgICAgICAgICBpZiAoJGlzX2VuY29kZWQgIT09ICR0aGlzLT5pc1BheWxvYWRFbmNvZGVkKCRzaWduYXR1cmUtPmdldFByb3RlY3RlZEhlYWRlcigpKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbignRm9yZWlnbiBwYXlsb2FkIGVuY29kaW5nIGRldGVjdGVkLicpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JWSSerializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxKV1M7CgppbnRlcmZhY2UgSldTU2VyaWFsaXplcgp7CiAgICAvKioKICAgICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJpYWxpemF0aW9uLgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSgpOiBzdHJpbmc7CgogICAgcHVibGljIGZ1bmN0aW9uIGRpc3BsYXlOYW1lKCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgSldTIGludG8gYSBzdHJpbmcuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBzZXJpYWxpemUoSldTICRqd3MsID9pbnQgJHNpZ25hdHVyZUluZGV4ID0gbnVsbCk6IHN0cmluZzsKCiAgICAvKioKICAgICAqIExvYWRzIGRhdGEgYW5kIHJldHVybiBhIEpXUyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAkaW5wdXQgQSBzdHJpbmcgdGhhdCByZXByZXNlbnRzIGEgSldTCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZShzdHJpbmcgJGlucHV0KTogSldTOwp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JWSSerializerManager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKdXNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxKV1M7CgpjbGFzcyBKV1NTZXJpYWxpemVyTWFuYWdlcgp7CiAgICAvKioKICAgICAqIEB2YXIgSldTU2VyaWFsaXplcltdCiAgICAgKi8KICAgIHByaXZhdGUgJHNlcmlhbGl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAcGFyYW0gSldTU2VyaWFsaXplcltdICRzZXJpYWxpemVycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoYXJyYXkgJHNlcmlhbGl6ZXJzKQogICAgewogICAgICAgIGZvcmVhY2ggKCRzZXJpYWxpemVycyBhcyAkc2VyaWFsaXplcikgewogICAgICAgICAgICAkdGhpcy0+YWRkKCRzZXJpYWxpemVyKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIHN0cmluZ1tdCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBsaXN0KCk6IGFycmF5CiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5X2tleXMoJHRoaXMtPnNlcmlhbGl6ZXJzKTsKICAgIH0KCiAgICAvKioKICAgICAqIENvbnZlcnRzIGEgSldTIGludG8gYSBzdHJpbmcuCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNlcmlhbGl6ZXIgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VyaWFsaXplKHN0cmluZyAkbmFtZSwgSldTICRqd3MsID9pbnQgJHNpZ25hdHVyZUluZGV4ID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnNlcmlhbGl6ZXJzWyRuYW1lXSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbihzcHJpbnRmKCdVbnN1cHBvcnRlZCBzZXJpYWxpemVyICIlcyIuJywgJG5hbWUpKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkdGhpcy0+c2VyaWFsaXplcnNbJG5hbWVdLT5zZXJpYWxpemUoJGp3cywgJHNpZ25hdHVyZUluZGV4KTsKICAgIH0KCiAgICAvKioKICAgICAqIExvYWRzIGRhdGEgYW5kIHJldHVybiBhIEpXUyBvYmplY3QuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAgICAgICRpbnB1dCBBIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgYSBKV1MKICAgICAqIEBwYXJhbSBudWxsfHN0cmluZyAkbmFtZSAgdGhlIG5hbWUgb2YgdGhlIHNlcmlhbGl6ZXIgaWYgdGhlIGlucHV0IGlzIHVuc2VyaWFsaXplZAogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBpbnB1dCBpcyBub3Qgc3VwcG9ydGVkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1bnNlcmlhbGl6ZShzdHJpbmcgJGlucHV0LCA/c3RyaW5nICYkbmFtZSA9IG51bGwpOiBKV1MKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+c2VyaWFsaXplcnMgYXMgJHNlcmlhbGl6ZXIpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICRqd3MgPSAkc2VyaWFsaXplci0+dW5zZXJpYWxpemUoJGlucHV0KTsKICAgICAgICAgICAgICAgICRuYW1lID0gJHNlcmlhbGl6ZXItPm5hbWUoKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJGp3czsKICAgICAgICAgICAgfSBjYXRjaCAoSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbignVW5zdXBwb3J0ZWQgaW5wdXQuJyk7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBhZGQoSldTU2VyaWFsaXplciAkc2VyaWFsaXplcik6IHZvaWQKICAgIHsKICAgICAgICAkdGhpcy0+c2VyaWFsaXplcnNbJHNlcmlhbGl6ZXItPm5hbWUoKV0gPSAkc2VyaWFsaXplcjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/JWSSerializerManagerFactory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIEludmFsaWRBcmd1bWVudEV4Y2VwdGlvbjsKCmNsYXNzIEpXU1NlcmlhbGl6ZXJNYW5hZ2VyRmFjdG9yeQp7CiAgICAvKioKICAgICAqIEB2YXIgSldTU2VyaWFsaXplcltdCiAgICAgKi8KICAgIHByaXZhdGUgJHNlcmlhbGl6ZXJzID0gW107CgogICAgLyoqCiAgICAgKiBAcGFyYW0gc3RyaW5nW10gJG5hbWVzCiAgICAgKgogICAgICogQHRocm93cyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHNlcmlhbGl6ZXIgaXMgbm90IHN1cHBvcnRlZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKGFycmF5ICRuYW1lcyk6IEpXU1NlcmlhbGl6ZXJNYW5hZ2VyCiAgICB7CiAgICAgICAgJHNlcmlhbGl6ZXJzID0gW107CiAgICAgICAgZm9yZWFjaCAoJG5hbWVzIGFzICRuYW1lKSB7CiAgICAgICAgICAgIGlmICghaXNzZXQoJHRoaXMtPnNlcmlhbGl6ZXJzWyRuYW1lXSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVW5zdXBwb3J0ZWQgc2VyaWFsaXplciAiJXMiLicsICRuYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHNlcmlhbGl6ZXJzW10gPSAkdGhpcy0+c2VyaWFsaXplcnNbJG5hbWVdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIG5ldyBKV1NTZXJpYWxpemVyTWFuYWdlcigkc2VyaWFsaXplcnMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBzdHJpbmdbXQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZXMoKTogYXJyYXkKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5cygkdGhpcy0+c2VyaWFsaXplcnMpOwogICAgfQoKICAgIC8qKgogICAgICogQHJldHVybiBKV1NTZXJpYWxpemVyW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGFsbCgpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+c2VyaWFsaXplcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZChKV1NTZXJpYWxpemVyICRzZXJpYWxpemVyKTogdm9pZAogICAgewogICAgICAgICR0aGlzLT5zZXJpYWxpemVyc1skc2VyaWFsaXplci0+bmFtZSgpXSA9ICRzZXJpYWxpemVyOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Serializer/Serializer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZVxTZXJpYWxpemVyOwoKdXNlIGZ1bmN0aW9uIGFycmF5X2tleV9leGlzdHM7CgphYnN0cmFjdCBjbGFzcyBTZXJpYWxpemVyIGltcGxlbWVudHMgSldTU2VyaWFsaXplcgp7CiAgICBwcm90ZWN0ZWQgZnVuY3Rpb24gaXNQYXlsb2FkRW5jb2RlZChhcnJheSAkcHJvdGVjdGVkSGVhZGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAhYXJyYXlfa2V5X2V4aXN0cygnYjY0JywgJHByb3RlY3RlZEhlYWRlcikgfHwgdHJ1ZSA9PT0gJHByb3RlY3RlZEhlYWRlclsnYjY0J107CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-signature/Signature.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XFNpZ25hdHVyZTsKCnVzZSBmdW5jdGlvbiBhcnJheV9rZXlfZXhpc3RzOwp1c2UgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uOwoKY2xhc3MgU2lnbmF0dXJlCnsKICAgIC8qKgogICAgICogQHZhciBudWxsfHN0cmluZwogICAgICovCiAgICBwcml2YXRlICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyOwoKICAgIC8qKgogICAgICogQHZhciBhcnJheQogICAgICovCiAgICBwcml2YXRlICRwcm90ZWN0ZWRIZWFkZXI7CgogICAgLyoqCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByaXZhdGUgJGhlYWRlcjsKCiAgICAvKioKICAgICAqIEB2YXIgc3RyaW5nCiAgICAgKi8KICAgIHByaXZhdGUgJHNpZ25hdHVyZTsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3Qoc3RyaW5nICRzaWduYXR1cmUsIGFycmF5ICRwcm90ZWN0ZWRIZWFkZXIsID9zdHJpbmcgJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXIsIGFycmF5ICRoZWFkZXIpCiAgICB7CiAgICAgICAgJHRoaXMtPnByb3RlY3RlZEhlYWRlciA9IG51bGwgPT09ICRlbmNvZGVkUHJvdGVjdGVkSGVhZGVyID8gW10gOiAkcHJvdGVjdGVkSGVhZGVyOwogICAgICAgICR0aGlzLT5lbmNvZGVkUHJvdGVjdGVkSGVhZGVyID0gJGVuY29kZWRQcm90ZWN0ZWRIZWFkZXI7CiAgICAgICAgJHRoaXMtPnNpZ25hdHVyZSA9ICRzaWduYXR1cmU7CiAgICAgICAgJHRoaXMtPmhlYWRlciA9ICRoZWFkZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBUaGUgcHJvdGVjdGVkIGhlYWRlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFByb3RlY3RlZEhlYWRlcigpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cHJvdGVjdGVkSGVhZGVyOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHVucHJvdGVjdGVkIGhlYWRlciBhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZS4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlcigpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aGVhZGVyOwogICAgfQoKICAgIC8qKgogICAgICogVGhlIHByb3RlY3RlZCBoZWFkZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzaWduYXR1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbmNvZGVkUHJvdGVjdGVkSGVhZGVyKCk6ID9zdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVuY29kZWRQcm90ZWN0ZWRIZWFkZXI7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgcHJvdGVjdGVkIGhlYWRlciBvZiB0aGUgc3BlY2lmaWVkIGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEB0aHJvd3MgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBoZWFkZXIgcGFyYW1ldGVyIGRvZXMgbm90IGV4aXN0CiAgICAgKgogICAgICogQHJldHVybiBudWxsfG1peGVkIEhlYWRlciB2YWx1ZQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UHJvdGVjdGVkSGVhZGVyUGFyYW1ldGVyKHN0cmluZyAka2V5KQogICAgewogICAgICAgIGlmICgkdGhpcy0+aGFzUHJvdGVjdGVkSGVhZGVyUGFyYW1ldGVyKCRrZXkpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+Z2V0UHJvdGVjdGVkSGVhZGVyKClbJGtleV07CiAgICAgICAgfQoKICAgICAgICB0aHJvdyBuZXcgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uKHNwcmludGYoJ1RoZSBwcm90ZWN0ZWQgaGVhZGVyICIlcyIgZG9lcyBub3QgZXhpc3QnLCAka2V5KSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3RlY3RlZCBoZWFkZXIgaGFzIHRoZSBnaXZlbiBwYXJhbWV0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc1Byb3RlY3RlZEhlYWRlclBhcmFtZXRlcihzdHJpbmcgJGtleSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+Z2V0UHJvdGVjdGVkSGVhZGVyKCkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIHVucHJvdGVjdGVkIGhlYWRlciBvZiB0aGUgc3BlY2lmaWVkIGtleS4KICAgICAqCiAgICAgKiBAcGFyYW0gc3RyaW5nICRrZXkgVGhlIGtleQogICAgICoKICAgICAqIEByZXR1cm4gbnVsbHxtaXhlZCBIZWFkZXIgdmFsdWUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldEhlYWRlclBhcmFtZXRlcihzdHJpbmcgJGtleSkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmhhc0hlYWRlclBhcmFtZXRlcigka2V5KSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmhlYWRlclska2V5XTsKICAgICAgICB9CgogICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oc3ByaW50ZignVGhlIGhlYWRlciAiJXMiIGRvZXMgbm90IGV4aXN0JywgJGtleSkpOwogICAgfQoKICAgIC8qKgogICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1bnByb3RlY3RlZCBoZWFkZXIgaGFzIHRoZSBnaXZlbiBwYXJhbWV0ZXIuCiAgICAgKgogICAgICogQHBhcmFtIHN0cmluZyAka2V5IFRoZSBrZXkKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGhhc0hlYWRlclBhcmFtZXRlcihzdHJpbmcgJGtleSk6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkdGhpcy0+aGVhZGVyKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBzaWduYXR1cmUuCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduYXR1cmUoKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5zaWduYXR1cmU7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/composer.json</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ewogICAgIm5hbWUiOiAid2ViLXRva2VuL2p3dC11dGlsLWVjYyIsCiAgICAiZGVzY3JpcHRpb24iOiAiRUNDIFRvb2xzIGZvciB0aGUgSldUIEZyYW1ld29yay4iLAogICAgInR5cGUiOiAibGlicmFyeSIsCiAgICAibGljZW5zZSI6ICJNSVQiLAogICAgImtleXdvcmRzIjogWyJKV1MiLCAiSldUIiwgIkpXRSIsICJKV0EiLCAiSldLIiwgIkpXS1NldCIsICJKb3QiLCAiSm9zZSIsICJSRkM3NTE1IiwgIlJGQzc1MTYiLCAiUkZDNzUxNyIsICJSRkM3NTE4IiwgIlJGQzc1MTkiLCAiUkZDNzUyMCIsICJCdW5kbGUiLCAiU3ltZm9ueSJdLAogICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS93ZWItdG9rZW4iLAogICAgImF1dGhvcnMiOiBbCiAgICAgICAgewogICAgICAgICAgICAibmFtZSI6ICJGbG9yZW50IE1vcnNlbGxpIiwKICAgICAgICAgICAgImhvbWVwYWdlIjogImh0dHBzOi8vZ2l0aHViLmNvbS9TcG9ta3kiCiAgICAgICAgfSx7CiAgICAgICAgICAgICJuYW1lIjogIkFsbCBjb250cmlidXRvcnMiLAogICAgICAgICAgICAiaG9tZXBhZ2UiOiAiaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrL2NvbnRyaWJ1dG9ycyIKICAgICAgICB9CiAgICBdLAogICAgImF1dG9sb2FkIjogewogICAgICAgICJwc3ItNCI6IHsKICAgICAgICAgICAgIkpvc2VcXENvbXBvbmVudFxcQ29yZVxcVXRpbFxcRWNjXFwiOiAgIiIKICAgICAgICB9CiAgICB9LAogICAgInJlcXVpcmUiOiB7CiAgICAgICAgImJyaWNrL21hdGgiOiAiXjAuOC4xN3xeMC45IgogICAgfSwKICAgICJzdWdnZXN0IjogewogICAgICAgICJleHQtZ21wIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiLAogICAgICAgICJleHQtYmNtYXRoIjogIkdNUCBvciBCQ01hdGggaXMgaGlnaGx5IHJlY29tbWVuZGVkIHRvIGltcHJvdmUgdGhlIGxpYnJhcnkgcGVyZm9ybWFuY2UiCiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/Curve.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwp1c2UgZnVuY3Rpb24gaXNfbnVsbDsKdXNlIFJ1bnRpbWVFeGNlcHRpb247CgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBDdXJ2ZQp7CiAgICAvKioKICAgICAqIEVsbGlwdGljIGN1cnZlIG92ZXIgdGhlIGZpZWxkIG9mIGludGVnZXJzIG1vZHVsbyBhIHByaW1lLgogICAgICoKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICRhOwoKICAgIC8qKgogICAgICogQHZhciBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJGI7CgogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkcHJpbWU7CgogICAgLyoqCiAgICAgKiBCaW5hcnkgbGVuZ3RoIG9mIGtleXMgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIGN1cnZlIHBhcmFtZXRlcnMuCiAgICAgKgogICAgICogQHZhciBpbnQKICAgICAqLwogICAgcHJpdmF0ZSAkc2l6ZTsKCiAgICAvKioKICAgICAqIEB2YXIgUG9pbnQKICAgICAqLwogICAgcHJpdmF0ZSAkZ2VuZXJhdG9yOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChpbnQgJHNpemUsIEJpZ0ludGVnZXIgJHByaW1lLCBCaWdJbnRlZ2VyICRhLCBCaWdJbnRlZ2VyICRiLCBQb2ludCAkZ2VuZXJhdG9yKQogICAgewogICAgICAgICR0aGlzLT5zaXplID0gJHNpemU7CiAgICAgICAgJHRoaXMtPnByaW1lID0gJHByaW1lOwogICAgICAgICR0aGlzLT5hID0gJGE7CiAgICAgICAgJHRoaXMtPmIgPSAkYjsKICAgICAgICAkdGhpcy0+Z2VuZXJhdG9yID0gJGdlbmVyYXRvcjsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpOiBzdHJpbmcKICAgIHsKICAgICAgICByZXR1cm4gJ2N1cnZlKCcuTWF0aDo6dG9TdHJpbmcoJHRoaXMtPmdldEEoKSkuJywgJy5NYXRoOjp0b1N0cmluZygkdGhpcy0+Z2V0QigpKS4nLCAnLk1hdGg6OnRvU3RyaW5nKCR0aGlzLT5nZXRQcmltZSgpKS4nKSc7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEEoKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+YTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0QigpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5iOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQcmltZSgpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5wcmltZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2l6ZSgpOiBpbnQKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNpemU7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGN1cnZlIGRvZXMgbm90IGNvbnRhaW4gdGhlIHBvaW50CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb2ludChCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5LCA/QmlnSW50ZWdlciAkb3JkZXIgPSBudWxsKTogUG9pbnQKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jb250YWlucygkeCwgJHkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdDdXJ2ZSAnLiR0aGlzLT5fX3RvU3RyaW5nKCkuJyBkb2VzIG5vdCBjb250YWluIHBvaW50ICgnLk1hdGg6OnRvU3RyaW5nKCR4KS4nLCAnLk1hdGg6OnRvU3RyaW5nKCR5KS4nKScpOwogICAgICAgIH0KICAgICAgICAkcG9pbnQgPSBQb2ludDo6Y3JlYXRlKCR4LCAkeSwgJG9yZGVyKTsKICAgICAgICBpZiAoIWlzX251bGwoJG9yZGVyKSkgewogICAgICAgICAgICAkbXVsID0gJHRoaXMtPm11bCgkcG9pbnQsICRvcmRlcik7CiAgICAgICAgICAgIGlmICghJG11bC0+aXNJbmZpbml0eSgpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbignU0VMRiAqIE9SREVSIE1VU1QgRVFVQUwgSU5GSU5JVFkuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkcG9pbnQ7CiAgICB9CgogICAgLyoqCiAgICAgKiBAdGhyb3dzIFJ1bnRpbWVFeGNlcHRpb24gaWYgdGhlIGNvb3JkaW5hdGVzIGFyZSBvdXQgb2YgcmFuZ2UKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFB1YmxpY0tleUZyb20oQmlnSW50ZWdlciAkeCwgQmlnSW50ZWdlciAkeSk6IFB1YmxpY0tleQogICAgewogICAgICAgICR6ZXJvID0gQmlnSW50ZWdlcjo6emVybygpOwogICAgICAgIGlmICgkeC0+Y29tcGFyZVRvKCR6ZXJvKSA8IDAgfHwgJHktPmNvbXBhcmVUbygkemVybykgPCAwIHx8ICR0aGlzLT5nZW5lcmF0b3ItPmdldE9yZGVyKCktPmNvbXBhcmVUbygkeCkgPD0gMCB8fCAkdGhpcy0+Z2VuZXJhdG9yLT5nZXRPcmRlcigpLT5jb21wYXJlVG8oJHkpIDw9IDApIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oJ0dlbmVyYXRvciBwb2ludCBoYXMgeCBhbmQgeSBvdXQgb2YgcmFuZ2UuJyk7CiAgICAgICAgfQogICAgICAgICRwb2ludCA9ICR0aGlzLT5nZXRQb2ludCgkeCwgJHkpOwoKICAgICAgICByZXR1cm4gbmV3IFB1YmxpY0tleSgkcG9pbnQpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjb250YWlucyhCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5KTogYm9vbAogICAgewogICAgICAgIHJldHVybiBNYXRoOjplcXVhbHMoCiAgICAgICAgICAgIE1vZHVsYXJBcml0aG1ldGljOjpzdWIoCiAgICAgICAgICAgICAgICAkeS0+cG93ZXIoMiksCiAgICAgICAgICAgICAgICBNYXRoOjphZGQoCiAgICAgICAgICAgICAgICAgICAgTWF0aDo6YWRkKAogICAgICAgICAgICAgICAgICAgICAgICAkeC0+cG93ZXIoMyksCiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5nZXRBKCktPm11bHRpcGxpZWRCeSgkeCkKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5nZXRCKCkKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAkdGhpcy0+Z2V0UHJpbWUoKQogICAgICAgICAgICApLAogICAgICAgICAgICBCaWdJbnRlZ2VyOjp6ZXJvKCkKICAgICAgICApOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBhZGQoUG9pbnQgJG9uZSwgUG9pbnQgJHR3byk6IFBvaW50CiAgICB7CiAgICAgICAgaWYgKCR0d28tPmlzSW5maW5pdHkoKSkgewogICAgICAgICAgICByZXR1cm4gY2xvbmUgJG9uZTsKICAgICAgICB9CgogICAgICAgIGlmICgkb25lLT5pc0luZmluaXR5KCkpIHsKICAgICAgICAgICAgcmV0dXJuIGNsb25lICR0d287CiAgICAgICAgfQoKICAgICAgICBpZiAoJHR3by0+Z2V0WCgpLT5pc0VxdWFsVG8oJG9uZS0+Z2V0WCgpKSkgewogICAgICAgICAgICBpZiAoJHR3by0+Z2V0WSgpLT5pc0VxdWFsVG8oJG9uZS0+Z2V0WSgpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5nZXREb3VibGUoJG9uZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBQb2ludDo6aW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgICRzbG9wZSA9IE1vZHVsYXJBcml0aG1ldGljOjpkaXYoCiAgICAgICAgICAgICR0d28tPmdldFkoKS0+bWludXMoJG9uZS0+Z2V0WSgpKSwKICAgICAgICAgICAgJHR3by0+Z2V0WCgpLT5taW51cygkb25lLT5nZXRYKCkpLAogICAgICAgICAgICAkdGhpcy0+Z2V0UHJpbWUoKQogICAgICAgICk7CgogICAgICAgICR4UiA9IE1vZHVsYXJBcml0aG1ldGljOjpzdWIoCiAgICAgICAgICAgICRzbG9wZS0+cG93ZXIoMiktPm1pbnVzKCRvbmUtPmdldFgoKSksCiAgICAgICAgICAgICR0d28tPmdldFgoKSwKICAgICAgICAgICAgJHRoaXMtPmdldFByaW1lKCkKICAgICAgICApOwoKICAgICAgICAkeVIgPSBNb2R1bGFyQXJpdGhtZXRpYzo6c3ViKAogICAgICAgICAgICAkc2xvcGUtPm11bHRpcGxpZWRCeSgkb25lLT5nZXRYKCktPm1pbnVzKCR4UikpLAogICAgICAgICAgICAkb25lLT5nZXRZKCksCiAgICAgICAgICAgICR0aGlzLT5nZXRQcmltZSgpCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICR0aGlzLT5nZXRQb2ludCgkeFIsICR5UiwgJG9uZS0+Z2V0T3JkZXIoKSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIG11bChQb2ludCAkb25lLCBCaWdJbnRlZ2VyICRuKTogUG9pbnQKICAgIHsKICAgICAgICBpZiAoJG9uZS0+aXNJbmZpbml0eSgpKSB7CiAgICAgICAgICAgIHJldHVybiBQb2ludDo6aW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIEJpZ0ludGVnZXIgJHplcm8gKi8KICAgICAgICAkemVybyA9IEJpZ0ludGVnZXI6Onplcm8oKTsKICAgICAgICBpZiAoJG9uZS0+Z2V0T3JkZXIoKS0+Y29tcGFyZVRvKCR6ZXJvKSA+IDApIHsKICAgICAgICAgICAgJG4gPSAkbi0+bW9kKCRvbmUtPmdldE9yZGVyKCkpOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRuLT5pc0VxdWFsVG8oJHplcm8pKSB7CiAgICAgICAgICAgIHJldHVybiBQb2ludDo6aW5maW5pdHkoKTsKICAgICAgICB9CgogICAgICAgIC8qKiBAdmFyIFBvaW50W10gJHIgKi8KICAgICAgICAkciA9IFsKICAgICAgICAgICAgUG9pbnQ6OmluZmluaXR5KCksCiAgICAgICAgICAgIGNsb25lICRvbmUsCiAgICAgICAgXTsKCiAgICAgICAgJGsgPSAkdGhpcy0+Z2V0U2l6ZSgpOwogICAgICAgICRuMSA9IHN0cl9wYWQoTWF0aDo6YmFzZUNvbnZlcnQoTWF0aDo6dG9TdHJpbmcoJG4pLCAxMCwgMiksICRrLCAnMCcsIFNUUl9QQURfTEVGVCk7CgogICAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRrOyArKyRpKSB7CiAgICAgICAgICAgICRqID0gJG4xWyRpXTsKICAgICAgICAgICAgUG9pbnQ6OmNzd2FwKCRyWzBdLCAkclsxXSwgJGogXiAxKTsKICAgICAgICAgICAgJHJbMF0gPSAkdGhpcy0+YWRkKCRyWzBdLCAkclsxXSk7CiAgICAgICAgICAgICRyWzFdID0gJHRoaXMtPmdldERvdWJsZSgkclsxXSk7CiAgICAgICAgICAgIFBvaW50Ojpjc3dhcCgkclswXSwgJHJbMV0sICRqIF4gMSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+dmFsaWRhdGUoJHJbMF0pOwoKICAgICAgICByZXR1cm4gJHJbMF07CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gQ3VydmUgJG90aGVyCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBjbXAoc2VsZiAkb3RoZXIpOiBpbnQKICAgIHsKICAgICAgICAkZXF1YWwgPSAkdGhpcy0+Z2V0QSgpLT5pc0VxdWFsVG8oJG90aGVyLT5nZXRBKCkpCiAgICAgICAgICAgICAgICAgJiYgJHRoaXMtPmdldEIoKS0+aXNFcXVhbFRvKCRvdGhlci0+Z2V0QigpKQogICAgICAgICAgICAgICAgICYmICR0aGlzLT5nZXRQcmltZSgpLT5pc0VxdWFsVG8oJG90aGVyLT5nZXRQcmltZSgpKTsKCiAgICAgICAgcmV0dXJuICRlcXVhbCA/IDAgOiAxOwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIEN1cnZlICRvdGhlcgogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZXF1YWxzKHNlbGYgJG90aGVyKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAwID09PSAkdGhpcy0+Y21wKCRvdGhlcik7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldERvdWJsZShQb2ludCAkcG9pbnQpOiBQb2ludAogICAgewogICAgICAgIGlmICgkcG9pbnQtPmlzSW5maW5pdHkoKSkgewogICAgICAgICAgICByZXR1cm4gUG9pbnQ6OmluZmluaXR5KCk7CiAgICAgICAgfQoKICAgICAgICAkYSA9ICR0aGlzLT5nZXRBKCk7CiAgICAgICAgJHRocmVlWDIgPSBCaWdJbnRlZ2VyOjpvZigzKS0+bXVsdGlwbGllZEJ5KCRwb2ludC0+Z2V0WCgpLT5wb3dlcigyKSk7CgogICAgICAgICR0YW5nZW50ID0gTW9kdWxhckFyaXRobWV0aWM6OmRpdigKICAgICAgICAgICAgJHRocmVlWDItPnBsdXMoJGEpLAogICAgICAgICAgICBCaWdJbnRlZ2VyOjpvZigyKS0+bXVsdGlwbGllZEJ5KCRwb2ludC0+Z2V0WSgpKSwKICAgICAgICAgICAgJHRoaXMtPmdldFByaW1lKCkKICAgICAgICApOwoKICAgICAgICAkeDMgPSBNb2R1bGFyQXJpdGhtZXRpYzo6c3ViKAogICAgICAgICAgICAkdGFuZ2VudC0+cG93ZXIoMiksCiAgICAgICAgICAgIEJpZ0ludGVnZXI6Om9mKDIpLT5tdWx0aXBsaWVkQnkoJHBvaW50LT5nZXRYKCkpLAogICAgICAgICAgICAkdGhpcy0+Z2V0UHJpbWUoKQogICAgICAgICk7CgogICAgICAgICR5MyA9IE1vZHVsYXJBcml0aG1ldGljOjpzdWIoCiAgICAgICAgICAgICR0YW5nZW50LT5tdWx0aXBsaWVkQnkoJHBvaW50LT5nZXRYKCktPm1pbnVzKCR4MykpLAogICAgICAgICAgICAkcG9pbnQtPmdldFkoKSwKICAgICAgICAgICAgJHRoaXMtPmdldFByaW1lKCkKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJHRoaXMtPmdldFBvaW50KCR4MywgJHkzLCAkcG9pbnQtPmdldE9yZGVyKCkpOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBjcmVhdGVQcml2YXRlS2V5KCk6IFByaXZhdGVLZXkKICAgIHsKICAgICAgICByZXR1cm4gUHJpdmF0ZUtleTo6Y3JlYXRlKCR0aGlzLT5nZW5lcmF0ZSgpKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gY3JlYXRlUHVibGljS2V5KFByaXZhdGVLZXkgJHByaXZhdGVLZXkpOiBQdWJsaWNLZXkKICAgIHsKICAgICAgICAkcG9pbnQgPSAkdGhpcy0+bXVsKCR0aGlzLT5nZW5lcmF0b3IsICRwcml2YXRlS2V5LT5nZXRTZWNyZXQoKSk7CgogICAgICAgIHJldHVybiBuZXcgUHVibGljS2V5KCRwb2ludCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldEdlbmVyYXRvcigpOiBQb2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2VuZXJhdG9yOwogICAgfQoKICAgIC8qKgogICAgICogQHRocm93cyBSdW50aW1lRXhjZXB0aW9uIGlmIHRoZSBwb2ludCBpcyBpbnZhbGlkCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gdmFsaWRhdGUoUG9pbnQgJHBvaW50KTogdm9pZAogICAgewogICAgICAgIGlmICghJHBvaW50LT5pc0luZmluaXR5KCkgJiYgISR0aGlzLT5jb250YWlucygkcG9pbnQtPmdldFgoKSwgJHBvaW50LT5nZXRZKCkpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCdJbnZhbGlkIHBvaW50Jyk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2VuZXJhdGUoKTogQmlnSW50ZWdlcgogICAgewogICAgICAgICRtYXggPSAkdGhpcy0+Z2VuZXJhdG9yLT5nZXRPcmRlcigpOwogICAgICAgICRudW1CaXRzID0gJHRoaXMtPmJuTnVtQml0cygkbWF4KTsKICAgICAgICAkbnVtQnl0ZXMgPSAoaW50KSBjZWlsKCRudW1CaXRzIC8gOCk7CiAgICAgICAgLy8gR2VuZXJhdGUgYW4gaW50ZWdlciBvZiBzaXplID49ICRudW1CaXRzCiAgICAgICAgJGJ5dGVzID0gQmlnSW50ZWdlcjo6cmFuZG9tQml0cygkbnVtQnl0ZXMpOwogICAgICAgICRtYXNrID0gQmlnSW50ZWdlcjo6b2YoMiktPnBvd2VyKCRudW1CaXRzKS0+bWludXMoMSk7CgogICAgICAgIHJldHVybiAkYnl0ZXMtPmFuZCgkbWFzayk7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyB1c2VkIHRvIHN0b3JlIHRoaXMgbnVtYmVyLiBOb24tc2lnbmlmaWNhbnQgdXBwZXIgYml0cyBhcmUgbm90IGNvdW50ZWQuCiAgICAgKgogICAgICogQHNlZSBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2NyeXB0by9CTl9udW1fYnl0ZXMuaHRtbAogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGJuTnVtQml0cyhCaWdJbnRlZ2VyICR4KTogaW50CiAgICB7CiAgICAgICAgJHplcm8gPSBCaWdJbnRlZ2VyOjpvZigwKTsKICAgICAgICBpZiAoJHgtPmlzRXF1YWxUbygkemVybykpIHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgICRsb2cyID0gMDsKICAgICAgICB3aGlsZSAoISR4LT5pc0VxdWFsVG8oJHplcm8pKSB7CiAgICAgICAgICAgICR4ID0gJHgtPnNoaWZ0ZWRSaWdodCgxKTsKICAgICAgICAgICAgKyskbG9nMjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkbG9nMjsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/EcDH.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR5YXMgRGFudGVyCiAqCiAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwogKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCiAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQogKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgogKgogKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZAogKiBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KICoKICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MKICogT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCiAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMCiAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTCiAqIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAogKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IKICogT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKi8KCi8qKgogKiBAaW50ZXJuYWwKICovCmNsYXNzIEVjREgKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wdXRlU2hhcmVkS2V5KEN1cnZlICRjdXJ2ZSwgUHVibGljS2V5ICRwdWJsaWNLZXksIFByaXZhdGVLZXkgJHByaXZhdGVLZXkpOiBCaWdJbnRlZ2VyCiAgICB7CiAgICAgICAgcmV0dXJuICRjdXJ2ZS0+bXVsKCRwdWJsaWNLZXktPmdldFBvaW50KCksICRwcml2YXRlS2V5LT5nZXRTZWNyZXQoKSktPmdldFgoKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIE1JVCBMaWNlbnNlIChNSVQpCgpDb3B5cmlnaHQgKGMpIDIwMTQtMjAxOSBTcG9ta3ktTGFicwoKUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQpvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbAppbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwKY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzCmZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CgpUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwKY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCklNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLApGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgpMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLApPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQpTT0ZUV0FSRS4K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/Math.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwp1c2UgSm9zZVxDb21wb25lbnRcQ29yZVxVdGlsXEJpZ0ludGVnZXIgYXMgQ29yZUJpZ0ludGVnZXI7CgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBNYXRoCnsKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXF1YWxzKEJpZ0ludGVnZXIgJGZpcnN0LCBCaWdJbnRlZ2VyICRvdGhlcik6IGJvb2wKICAgIHsKICAgICAgICByZXR1cm4gJGZpcnN0LT5pc0VxdWFsVG8oJG90aGVyKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkZChCaWdJbnRlZ2VyICRhdWdlbmQsIEJpZ0ludGVnZXIgJGFkZGVuZCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJGF1Z2VuZC0+cGx1cygkYWRkZW5kKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRvU3RyaW5nKEJpZ0ludGVnZXIgJHZhbHVlKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuICR2YWx1ZS0+dG9CYXNlKDEwKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludmVyc2VNb2QoQmlnSW50ZWdlciAkYSwgQmlnSW50ZWdlciAkbSk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gQ29yZUJpZ0ludGVnZXI6OmNyZWF0ZUZyb21CaWdJbnRlZ2VyKCRhKS0+bW9kSW52ZXJzZShDb3JlQmlnSW50ZWdlcjo6Y3JlYXRlRnJvbUJpZ0ludGVnZXIoJG0pKS0+Z2V0KCk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBiYXNlQ29udmVydChzdHJpbmcgJG51bWJlciwgaW50ICRmcm9tLCBpbnQgJHRvKTogc3RyaW5nCiAgICB7CiAgICAgICAgcmV0dXJuIEJpZ0ludGVnZXI6OmZyb21CYXNlKCRudW1iZXIsICRmcm9tKS0+dG9CYXNlKCR0byk7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/ModularArithmetic.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgTW9kdWxhckFyaXRobWV0aWMKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdWIoQmlnSW50ZWdlciAkbWludWVuZCwgQmlnSW50ZWdlciAkc3VidHJhaGVuZCwgQmlnSW50ZWdlciAkbW9kdWx1cyk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJG1pbnVlbmQtPm1pbnVzKCRzdWJ0cmFoZW5kKS0+bW9kKCRtb2R1bHVzKTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG11bChCaWdJbnRlZ2VyICRtdWx0aXBsaWVyLCBCaWdJbnRlZ2VyICRtdWxpcGxpY2FuZCwgQmlnSW50ZWdlciAkbW9kdWx1cyk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJG11bHRpcGxpZXItPm11bHRpcGxpZWRCeSgkbXVsaXBsaWNhbmQpLT5tb2QoJG1vZHVsdXMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGl2KEJpZ0ludGVnZXIgJGRpdmlkZW5kLCBCaWdJbnRlZ2VyICRkaXZpc29yLCBCaWdJbnRlZ2VyICRtb2R1bHVzKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiBzZWxmOjptdWwoJGRpdmlkZW5kLCBNYXRoOjppbnZlcnNlTW9kKCRkaXZpc29yLCAkbW9kdWx1cyksICRtb2R1bHVzKTsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/NistCurve.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlci4KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgTmlzdEN1cnZlCnsKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBOSVNUIFAtMjU2IGN1cnZlLgogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGN1cnZlMjU2KCk6IEN1cnZlCiAgICB7CiAgICAgICAgJHAgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnZmZmZmZmZmYwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZicsIDE2KTsKICAgICAgICAkYSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCdmZmZmZmZmZjAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZjJywgMTYpOwogICAgICAgICRiID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJzVhYzYzNWQ4YWEzYTkzZTdiM2ViYmQ1NTc2OTg4NmJjNjUxZDA2YjBjYzUzYjBmNjNiY2UzYzNlMjdkMjYwNGInLCAxNik7CiAgICAgICAgJHggPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnNmIxN2QxZjJlMTJjNDI0N2Y4YmNlNmU1NjNhNDQwZjI3NzAzN2Q4MTJkZWIzM2EwZjRhMTM5NDVkODk4YzI5NicsIDE2KTsKICAgICAgICAkeSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCc0ZmUzNDJlMmZlMWE3ZjliOGVlN2ViNGE3YzBmOWUxNjJiY2UzMzU3NmIzMTVlY2VjYmI2NDA2ODM3YmY1MWY1JywgMTYpOwogICAgICAgICRuID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJ2ZmZmZmZmZmMDAwMDAwMDBmZmZmZmZmZmZmZmZmZmZmYmNlNmZhYWRhNzE3OWU4NGYzYjljYWMyZmM2MzI1NTEnLCAxNik7CiAgICAgICAgJGdlbmVyYXRvciA9IFBvaW50OjpjcmVhdGUoJHgsICR5LCAkbik7CgogICAgICAgIHJldHVybiBuZXcgQ3VydmUoMjU2LCAkcCwgJGEsICRiLCAkZ2VuZXJhdG9yKTsKICAgIH0KCiAgICAvKioKICAgICAqIFJldHVybnMgYW4gTklTVCBQLTM4NCBjdXJ2ZS4KICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjdXJ2ZTM4NCgpOiBDdXJ2ZQogICAgewogICAgICAgICRwID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJ2ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmVmZmZmZmZmZjAwMDAwMDAwMDAwMDAwMDBmZmZmZmZmZicsIDE2KTsKICAgICAgICAkYSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCdmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZlZmZmZmZmZmYwMDAwMDAwMDAwMDAwMDAwZmZmZmZmZmMnLCAxNik7CiAgICAgICAgJGIgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnYjMzMTJmYTdlMjNlZTdlNDk4OGUwNTZiZTNmODJkMTkxODFkOWM2ZWZlODE0MTEyMDMxNDA4OGY1MDEzODc1YWM2NTYzOThkOGEyZWQxOWQyYTg1YzhlZGQzZWMyYWVmJywgMTYpOwogICAgICAgICR4ID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJ2FhODdjYTIyYmU4YjA1Mzc4ZWIxYzcxZWYzMjBhZDc0NmUxZDNiNjI4YmE3OWI5ODU5Zjc0MWUwODI1NDJhMzg1NTAyZjI1ZGJmNTUyOTZjM2E1NDVlMzg3Mjc2MGFiNycsIDE2KTsKICAgICAgICAkeSA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCczNjE3ZGU0YTk2MjYyYzZmNWQ5ZTk4YmY5MjkyZGMyOWY4ZjQxZGJkMjg5YTE0N2NlOWRhMzExM2I1ZjBiOGMwMGE2MGIxY2UxZDdlODE5ZDdhNDMxZDdjOTBlYTBlNWYnLCAxNik7CiAgICAgICAgJG4gPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYzc2MzRkODFmNDM3MmRkZjU4MWEwZGIyNDhiMGE3N2FlY2VjMTk2YWNjYzUyOTczJywgMTYpOwogICAgICAgICRnZW5lcmF0b3IgPSBQb2ludDo6Y3JlYXRlKCR4LCAkeSwgJG4pOwoKICAgICAgICByZXR1cm4gbmV3IEN1cnZlKDM4NCwgJHAsICRhLCAkYiwgJGdlbmVyYXRvcik7CiAgICB9CgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIE5JU1QgUC01MjEgY3VydmUuCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3VydmU1MjEoKTogQ3VydmUKICAgIHsKICAgICAgICAkcCA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCcwMDAwMDFmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmJywgMTYpOwogICAgICAgICRhID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJzAwMDAwMWZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmMnLCAxNik7CiAgICAgICAgJGIgPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnMDAwMDAwNTE5NTNlYjk2MThlMWM5YTFmOTI5YTIxYTBiNjg1NDBlZWEyZGE3MjViOTliMzE1ZjNiOGI0ODk5MThlZjEwOWUxNTYxOTM5NTFlYzdlOTM3YjE2NTJjMGJkM2JiMWJmMDczNTczZGY4ODNkMmMzNGYxZWY0NTFmZDQ2YjUwM2YwMCcsIDE2KTsKICAgICAgICAkeCA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCcwMDAwMDBjNjg1OGUwNmI3MDQwNGU5Y2Q5ZTNlY2I2NjIzOTViNDQyOWM2NDgxMzkwNTNmYjUyMWY4MjhhZjYwNmI0ZDNkYmFhMTRiNWU3N2VmZTc1OTI4ZmUxZGMxMjdhMmZmYThkZTMzNDhiM2MxODU2YTQyOWJmOTdlN2UzMWMyZTViZDY2JywgMTYpOwogICAgICAgICR5ID0gQmlnSW50ZWdlcjo6ZnJvbUJhc2UoJzAwMDAwMTE4MzkyOTZhNzg5YTNiYzAwNDVjOGE1ZmI0MmM3ZDFiZDk5OGY1NDQ0OTU3OWI0NDY4MTdhZmJkMTcyNzNlNjYyYzk3ZWU3Mjk5NWVmNDI2NDBjNTUwYjkwMTNmYWQwNzYxMzUzYzcwODZhMjcyYzI0MDg4YmU5NDc2OWZkMTY2NTAnLCAxNik7CiAgICAgICAgJG4gPSBCaWdJbnRlZ2VyOjpmcm9tQmFzZSgnMDAwMDAxZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZhNTE4Njg3ODNiZjJmOTY2YjdmY2MwMTQ4ZjcwOWE1ZDAzYmI1YzliODg5OWM0N2FlYmI2ZmI3MWU5MTM4NjQwOScsIDE2KTsKICAgICAgICAkZ2VuZXJhdG9yID0gUG9pbnQ6OmNyZWF0ZSgkeCwgJHksICRuKTsKCiAgICAgICAgcmV0dXJuIG5ldyBDdXJ2ZSg1MjEsICRwLCAkYSwgJGIsICRnZW5lcmF0b3IpOwogICAgfQp9Cg==]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/Point.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlci4KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUG9pbnQKewogICAgLyoqCiAgICAgKiBAdmFyIEJpZ0ludGVnZXIKICAgICAqLwogICAgcHJpdmF0ZSAkeDsKCiAgICAvKioKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICR5OwoKICAgIC8qKgogICAgICogQHZhciBCaWdJbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJG9yZGVyOwoKICAgIC8qKgogICAgICogQHZhciBib29sCiAgICAgKi8KICAgIHByaXZhdGUgJGluZmluaXR5ID0gZmFsc2U7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5LCBCaWdJbnRlZ2VyICRvcmRlciwgYm9vbCAkaW5maW5pdHkgPSBmYWxzZSkKICAgIHsKICAgICAgICAkdGhpcy0+eCA9ICR4OwogICAgICAgICR0aGlzLT55ID0gJHk7CiAgICAgICAgJHRoaXMtPm9yZGVyID0gJG9yZGVyOwogICAgICAgICR0aGlzLT5pbmZpbml0eSA9ICRpbmZpbml0eTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZShCaWdJbnRlZ2VyICR4LCBCaWdJbnRlZ2VyICR5LCA/QmlnSW50ZWdlciAkb3JkZXIgPSBudWxsKTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkeCwgJHksICRvcmRlciA/PyBCaWdJbnRlZ2VyOjp6ZXJvKCkpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5maW5pdHkoKTogc2VsZgogICAgewogICAgICAgICR6ZXJvID0gQmlnSW50ZWdlcjo6emVybygpOwoKICAgICAgICByZXR1cm4gbmV3IHNlbGYoJHplcm8sICR6ZXJvLCAkemVybywgdHJ1ZSk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGlzSW5maW5pdHkoKTogYm9vbAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+aW5maW5pdHk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldE9yZGVyKCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm9yZGVyOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRYKCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPng7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFkoKTogQmlnSW50ZWdlcgogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+eTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNzd2FwKHNlbGYgJGEsIHNlbGYgJGIsIGludCAkY29uZCk6IHZvaWQKICAgIHsKICAgICAgICBzZWxmOjpjc3dhcEJpZ0ludGVnZXIoJGEtPngsICRiLT54LCAkY29uZCk7CiAgICAgICAgc2VsZjo6Y3N3YXBCaWdJbnRlZ2VyKCRhLT55LCAkYi0+eSwgJGNvbmQpOwogICAgICAgIHNlbGY6OmNzd2FwQmlnSW50ZWdlcigkYS0+b3JkZXIsICRiLT5vcmRlciwgJGNvbmQpOwogICAgICAgIHNlbGY6OmNzd2FwQm9vbGVhbigkYS0+aW5maW5pdHksICRiLT5pbmZpbml0eSwgJGNvbmQpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNzd2FwQm9vbGVhbihib29sICYkYSwgYm9vbCAmJGIsIGludCAkY29uZCk6IHZvaWQKICAgIHsKICAgICAgICAkc2EgPSBCaWdJbnRlZ2VyOjpvZigoaW50KSAkYSk7CiAgICAgICAgJHNiID0gQmlnSW50ZWdlcjo6b2YoKGludCkgJGIpOwoKICAgICAgICBzZWxmOjpjc3dhcEJpZ0ludGVnZXIoJHNhLCAkc2IsICRjb25kKTsKCiAgICAgICAgJGEgPSAoYm9vbCkgJHNhLT50b0Jhc2UoMTApOwogICAgICAgICRiID0gKGJvb2wpICRzYi0+dG9CYXNlKDEwKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBjc3dhcEJpZ0ludGVnZXIoQmlnSW50ZWdlciAmJHNhLCBCaWdJbnRlZ2VyICYkc2IsIGludCAkY29uZCk6IHZvaWQKICAgIHsKICAgICAgICAkc2l6ZSA9IG1heChtYl9zdHJsZW4oJHNhLT50b0Jhc2UoMiksICc4Yml0JyksIG1iX3N0cmxlbigkc2ItPnRvQmFzZSgyKSwgJzhiaXQnKSk7CiAgICAgICAgJG1hc2sgPSAoc3RyaW5nKSAoMSAtICRjb25kKTsKICAgICAgICAkbWFzayA9IHN0cl9wYWQoJycsICRzaXplLCAkbWFzaywgU1RSX1BBRF9MRUZUKTsKICAgICAgICAkbWFzayA9IEJpZ0ludGVnZXI6OmZyb21CYXNlKCRtYXNrLCAyKTsKICAgICAgICAkdGFBID0gJHNhLT5hbmQoJG1hc2spOwogICAgICAgICR0YUIgPSAkc2ItPmFuZCgkbWFzayk7CiAgICAgICAgJHNhID0gJHNhLT54b3IoJHNiKS0+eG9yKCR0YUIpOwogICAgICAgICRzYiA9ICRzYS0+eG9yKCRzYiktPnhvcigkdGFBKTsKICAgICAgICAkc2EgPSAkc2EtPnhvcigkc2IpLT54b3IoJHRhQik7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/PrivateKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7Cgp1c2UgQnJpY2tcTWF0aFxCaWdJbnRlZ2VyOwoKLyoqCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0eWFzIERhbnRlci4KICoKICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgogKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCiAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CiAqCiAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkCiAqIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgogKgogKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUwogKiBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwKICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMKICogT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCiAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgogKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqLwoKLyoqCiAqIEBpbnRlcm5hbAogKi8KY2xhc3MgUHJpdmF0ZUtleQp7CiAgICAvKioKICAgICAqIEB2YXIgQmlnSW50ZWdlcgogICAgICovCiAgICBwcml2YXRlICRzZWNyZXQ7CgogICAgcHJpdmF0ZSBmdW5jdGlvbiBfX2NvbnN0cnVjdChCaWdJbnRlZ2VyICRzZWNyZXQpCiAgICB7CiAgICAgICAgJHRoaXMtPnNlY3JldCA9ICRzZWNyZXQ7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoQmlnSW50ZWdlciAkc2VjcmV0KTogc2VsZgogICAgewogICAgICAgIHJldHVybiBuZXcgc2VsZigkc2VjcmV0KTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2VjcmV0KCk6IEJpZ0ludGVnZXIKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnNlY3JldDsKICAgIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/PublicKey.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmRlY2xhcmUoc3RyaWN0X3R5cGVzPTEpOwoKLyoKICogVGhlIE1JVCBMaWNlbnNlIChNSVQpCiAqCiAqIENvcHlyaWdodCAoYykgMjAxNC0yMDIwIFNwb21reS1MYWJzCiAqCiAqIFRoaXMgc29mdHdhcmUgbWF5IGJlIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMKICogb2YgdGhlIE1JVCBsaWNlbnNlLiAgU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIGRldGFpbHMuCiAqLwoKbmFtZXNwYWNlIEpvc2VcQ29tcG9uZW50XENvcmVcVXRpbFxFY2M7CgovKioKICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR5YXMgRGFudGVyLgogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKICogYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCiAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAogKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQKICogaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTCiAqIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTAogKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUwogKiBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKICogQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCiAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICovCgovKioKICogQGludGVybmFsCiAqLwpjbGFzcyBQdWJsaWNLZXkKewogICAgLyoqCiAgICAgKiBAdmFyIFBvaW50CiAgICAgKi8KICAgIHByaXZhdGUgJHBvaW50OwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChQb2ludCAkcG9pbnQpCiAgICB7CiAgICAgICAgJHRoaXMtPnBvaW50ID0gJHBvaW50OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb2ludCgpOiBQb2ludAogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9pbnQ7CiAgICB9Cn0K]]></data>
	</file>
	<file>
	  <filename>/vendor/web-token/jwt-util-ecc/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[RUNDIFRvb2xzIEZvciBKV1QtRnJhbWV3b3JrCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClRoaXMgcmVwb3NpdG9yeSBpcyBhIHN1YiByZXBvc2l0b3J5IG9mIFt0aGUgSldUIEZyYW1ld29ya10oaHR0cHM6Ly9naXRodWIuY29tL3dlYi10b2tlbi9qd3QtZnJhbWV3b3JrKSBwcm9qZWN0IGFuZCBpcyBSRUFEIE9OTFkuCgoqKlBsZWFzZSBkbyBub3Qgc3VibWl0IGFueSBQdWxsIFJlcXVlc3QgaGVyZS4qKgpZb3Ugc2hvdWxkIGdvIHRvIFt0aGUgbWFpbiByZXBvc2l0b3J5XShodHRwczovL2dpdGh1Yi5jb20vd2ViLXRva2VuL2p3dC1mcmFtZXdvcmspIGluc3RlYWQuCgojIERvY3VtZW50YXRpb24KClRoZSBvZmZpY2lhbCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhcyBodHRwczovL3dlYi10b2tlbi5zcG9ta3ktbGFicy5jb20vIAoKIyBMaWNlbmNlCgpUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2UgdW5kZXIgW01JVCBsaWNlbmNlXShMSUNFTlNFKS4K]]></data>
	</file>
</module>
