<?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>MCFramework</name>
	<version>0.0.6</version>
  <mincmsversion>1.11.10</mincmsversion>
	<help><![CDATA[PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2pjY0Btb3JyaXMtY2hhcG1hbi5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMC4wLjY8YnIgLz4=]]></about>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/.name</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[TUNGcmFtZXdvcms=]]></data>
	</file>
	<file>
	  <filename>/.idea/encodings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJFbmNvZGluZyIgdXNlVVRGR3Vlc3Npbmc9InRydWUiIG5hdGl2ZTJBc2NpaUZvclByb3BlcnRpZXNGaWxlcz0iZmFsc2UiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/MCFramework.iml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPG1vZHVsZSB0eXBlPSJXRUJfTU9EVUxFIiB2ZXJzaW9uPSI0Ij4KICA8Y29tcG9uZW50IG5hbWU9Ik5ld01vZHVsZVJvb3RNYW5hZ2VyIj4KICAgIDxjb250ZW50IHVybD0iZmlsZTovLyRNT0RVTEVfRElSJCIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9ImluaGVyaXRlZEpkayIgLz4KICAgIDxvcmRlckVudHJ5IHR5cGU9InNvdXJjZUZvbGRlciIgZm9yVGVzdHM9ImZhbHNlIiAvPgogICAgPG9yZGVyRW50cnkgdHlwZT0ibW9kdWxlLWxpYnJhcnkiPgogICAgICA8bGlicmFyeSBuYW1lPSJQSFAiPgogICAgICAgIDxDTEFTU0VTPgogICAgICAgICAgPHJvb3QgdXJsPSJmaWxlOi8vJE1PRFVMRV9ESVIkLy4uLy4uL2xpYiIgLz4KICAgICAgICA8L0NMQVNTRVM+CiAgICAgICAgPFNPVVJDRVM+CiAgICAgICAgICA8cm9vdCB1cmw9ImZpbGU6Ly8kTU9EVUxFX0RJUiQvLi4vLi4vbGliIiAvPgogICAgICAgIDwvU09VUkNFUz4KICAgICAgPC9saWJyYXJ5PgogICAgPC9vcmRlckVudHJ5PgogIDwvY29tcG9uZW50Pgo8L21vZHVsZT4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/misc.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0Um9vdE1hbmFnZXIiIHZlcnNpb249IjIiIC8+CjwvcHJvamVjdD4KCg==]]></data>
	</file>
	<file>
	  <filename>/.idea/modules.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TW9kdWxlTWFuYWdlciI+CiAgICA8bW9kdWxlcz4KICAgICAgPG1vZHVsZSBmaWxldXJsPSJmaWxlOi8vJFBST0pFQ1RfRElSJC8uaWRlYS9NQ0ZyYW1ld29yay5pbWwiIGZpbGVwYXRoPSIkUFJPSkVDVF9ESVIkLy5pZGVhL01DRnJhbWV3b3JrLmltbCIgLz4KICAgIDwvbW9kdWxlcz4KICA8L2NvbXBvbmVudD4KPC9wcm9qZWN0PgoK]]></data>
	</file>
	<file>
	  <filename>/.idea/scopes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.idea/scopes/scope_settings.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGNvbXBvbmVudCBuYW1lPSJEZXBlbmRlbmN5VmFsaWRhdGlvbk1hbmFnZXIiPgogIDxzdGF0ZT4KICAgIDxvcHRpb24gbmFtZT0iU0tJUF9JTVBPUlRfU1RBVEVNRU5UUyIgdmFsdWU9ImZhbHNlIiAvPgogIDwvc3RhdGU+CjwvY29tcG9uZW50Pg==]]></data>
	</file>
	<file>
	  <filename>/.idea/vcs.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3NEaXJlY3RvcnlNYXBwaW5ncyI+CiAgICA8bWFwcGluZyBkaXJlY3Rvcnk9IiRQUk9KRUNUX0RJUiQiIHZjcz0iR2l0IiAvPgogIDwvY29tcG9uZW50Pgo8L3Byb2plY3Q+Cgo=]]></data>
	</file>
	<file>
	  <filename>/.idea/workspace.xml</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHByb2plY3QgdmVyc2lvbj0iNCI+CiAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VMaXN0TWFuYWdlciI+CiAgICA8bGlzdCBkZWZhdWx0PSJ0cnVlIiBpZD0iMGNjNmU4MGYtYTdhOS00NmQyLTllYjEtNDhmNDkzYmFjNzI2IiBuYW1lPSJEZWZhdWx0IiBjb21tZW50PSIiPgogICAgICA8Y2hhbmdlIHR5cGU9Ik1PRElGSUNBVElPTiIgYmVmb3JlUGF0aD0iJFBST0pFQ1RfRElSJC9NQ0ZyYW1ld29yay5tb2R1bGUucGhwIiBhZnRlclBhdGg9IiRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCIgLz4KICAgIDwvbGlzdD4KICAgIDxpZ25vcmVkIHBhdGg9Ik1DRnJhbWV3b3JrLml3cyIgLz4KICAgIDxpZ25vcmVkIHBhdGg9Ii5pZGVhL3dvcmtzcGFjZS54bWwiIC8+CiAgICA8b3B0aW9uIG5hbWU9IlRSQUNLSU5HX0VOQUJMRUQiIHZhbHVlPSJ0cnVlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJTSE9XX0RJQUxPRyIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJISUdITElHSFRfQ09ORkxJQ1RTIiB2YWx1ZT0idHJ1ZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iSElHSExJR0hUX05PTl9BQ1RJVkVfQ0hBTkdFTElTVCIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJMQVNUX1JFU09MVVRJT04iIHZhbHVlPSJJR05PUkUiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJDaGFuZ2VzVmlld01hbmFnZXIiIGZsYXR0ZW5lZF92aWV3PSJ0cnVlIiBzaG93X2lnbm9yZWQ9ImZhbHNlIiAvPgogIDxjb21wb25lbnQgbmFtZT0iQ3JlYXRlUGF0Y2hDb21taXRFeGVjdXRvciI+CiAgICA8b3B0aW9uIG5hbWU9IlBBVENIX1BBVEgiIHZhbHVlPSIiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJEYWVtb25Db2RlQW5hbHl6ZXIiPgogICAgPGRpc2FibGVfaGludHMgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkV4ZWN1dGlvblRhcmdldE1hbmFnZXIiIFNFTEVDVEVEX1RBUkdFVD0iZGVmYXVsdF90YXJnZXQiIC8+CiAgPGNvbXBvbmVudCBuYW1lPSJGYXZvcml0ZXNNYW5hZ2VyIj4KICAgIDxmYXZvcml0ZXNfbGlzdCBuYW1lPSJNQ0ZyYW1ld29yayIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IkZpbGVFZGl0b3JNYW5hZ2VyIj4KICAgIDxsZWFmPgogICAgICA8ZmlsZSBsZWFmLWZpbGUtbmFtZT0iTUNGcmFtZXdvcmsubW9kdWxlLnBocCIgcGlubmVkPSJmYWxzZSIgY3VycmVudD0idHJ1ZSIgY3VycmVudC1pbi10YWI9InRydWUiPgogICAgICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9NQ0ZyYW1ld29yay5tb2R1bGUucGhwIj4KICAgICAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICAgICAgPHN0YXRlIGxpbmU9IjE2IiBjb2x1bW49IjIxIiBzZWxlY3Rpb24tc3RhcnQ9IjI5MSIgc2VsZWN0aW9uLWVuZD0iMjkxIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4xMzQyMjgxOCIgdmVydGljYWwtb2Zmc2V0PSIwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSIxMzQxIj4KICAgICAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgICAgICA8L3N0YXRlPgogICAgICAgICAgPC9wcm92aWRlcj4KICAgICAgICA8L2VudHJ5PgogICAgICA8L2ZpbGU+CiAgICAgIDxmaWxlIGxlYWYtZmlsZS1uYW1lPSJjbGFzcy5NQ0ZBZG1pblRhYnMucGhwIiBwaW5uZWQ9ImZhbHNlIiBjdXJyZW50PSJmYWxzZSIgY3VycmVudC1pbi10YWI9ImZhbHNlIj4KICAgICAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLk1DRkFkbWluVGFicy5waHAiPgogICAgICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgICAgICA8c3RhdGUgbGluZT0iNDgiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIxMDI4IiBzZWxlY3Rpb24tZW5kPSIxMDI4IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iLTI3LjUiIHZlcnRpY2FsLW9mZnNldD0iMCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iMTI3NSI+CiAgICAgICAgICAgICAgPGZvbGRpbmc+CiAgICAgICAgICAgICAgICA8ZWxlbWVudCBzaWduYXR1cmU9ImUjNyMxMDgjMCIgZXhwYW5kZWQ9ImZhbHNlIiAvPgogICAgICAgICAgICAgIDwvZm9sZGluZz4KICAgICAgICAgICAgPC9zdGF0ZT4KICAgICAgICAgIDwvcHJvdmlkZXI+CiAgICAgICAgPC9lbnRyeT4KICAgICAgPC9maWxlPgogICAgPC9sZWFmPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iRmluZE1hbmFnZXIiPgogICAgPEZpbmRVc2FnZXNNYW5hZ2VyPgogICAgICA8c2V0dGluZyBuYW1lPSJPUEVOX05FV19UQUIiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDwvRmluZFVzYWdlc01hbmFnZXI+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJHaXQuU2V0dGluZ3MiPgogICAgPG9wdGlvbiBuYW1lPSJSRUNFTlRfR0lUX1JPT1RfUEFUSCIgdmFsdWU9IiRQUk9KRUNUX0RJUiQiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJJZGVEb2N1bWVudEhpc3RvcnkiPgogICAgPG9wdGlvbiBuYW1lPSJjaGFuZ2VkRmlsZXMiPgogICAgICA8bGlzdD4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZPYmplY3QucGhwIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLk1DRlBhZ2VyLnBocCIgLz4KICAgICAgICA8b3B0aW9uIHZhbHVlPSIkUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZBZG1pblRhYnMucGhwIiAvPgogICAgICAgIDxvcHRpb24gdmFsdWU9IiRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCIgLz4KICAgICAgPC9saXN0PgogICAgPC9vcHRpb24+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQaHBXb3Jrc3BhY2VQcm9qZWN0Q29uZmlndXJhdGlvbiIgYmFja3dhcmRfY29tcGF0aWJpbGl0eV9wZXJmb3JtZWQ9InRydWUiPgogICAgPGluY2x1ZGVfcGF0aD4KICAgICAgPHBhdGggdmFsdWU9IiRQUk9KRUNUX0RJUiQvLi4vLi4vbGliIiAvPgogICAgPC9pbmNsdWRlX3BhdGg+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0RnJhbWVCb3VuZHMiPgogICAgPG9wdGlvbiBuYW1lPSJ3aWR0aCIgdmFsdWU9IjI1NjAiIC8+CiAgICA8b3B0aW9uIG5hbWU9ImhlaWdodCIgdmFsdWU9IjE0NDAiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0TGV2ZWxWY3NNYW5hZ2VyIiBzZXR0aW5nc0VkaXRlZE1hbnVhbGx5PSJmYWxzZSI+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJBZGQiIC8+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJSZW1vdmUiIC8+CiAgICA8T3B0aW9uc1NldHRpbmcgdmFsdWU9InRydWUiIGlkPSJDaGVja291dCIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlVwZGF0ZSIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IlN0YXR1cyIgLz4KICAgIDxPcHRpb25zU2V0dGluZyB2YWx1ZT0idHJ1ZSIgaWQ9IkVkaXQiIC8+CiAgICA8Q29uZmlybWF0aW9uc1NldHRpbmcgdmFsdWU9IjAiIGlkPSJBZGQiIC8+CiAgICA8Q29uZmlybWF0aW9uc1NldHRpbmcgdmFsdWU9IjAiIGlkPSJSZW1vdmUiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0UmVsb2FkU3RhdGUiPgogICAgPG9wdGlvbiBuYW1lPSJTVEFURSIgdmFsdWU9IjAiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9qZWN0VmlldyI+CiAgICA8bmF2aWdhdG9yIGN1cnJlbnRWaWV3PSJQcm9qZWN0UGFuZSIgcHJvcG9ydGlvbnM9IiIgdmVyc2lvbj0iMSIgc3BsaXR0ZXJQcm9wb3J0aW9uPSIwLjUiPgogICAgICA8ZmxhdHRlblBhY2thZ2VzIC8+CiAgICAgIDxzaG93TWVtYmVycyAvPgogICAgICA8c2hvd01vZHVsZXMgLz4KICAgICAgPHNob3dMaWJyYXJ5Q29udGVudHMgLz4KICAgICAgPGhpZGVFbXB0eVBhY2thZ2VzIC8+CiAgICAgIDxhYmJyZXZpYXRlUGFja2FnZU5hbWVzIC8+CiAgICAgIDxhdXRvc2Nyb2xsVG9Tb3VyY2UgLz4KICAgICAgPGF1dG9zY3JvbGxGcm9tU291cmNlIC8+CiAgICAgIDxzb3J0QnlUeXBlIC8+CiAgICA8L25hdmlnYXRvcj4KICAgIDxwYW5lcz4KICAgICAgPHBhbmUgaWQ9IlNjb3BlIiAvPgogICAgICA8cGFuZSBpZD0iUHJvamVjdFBhbmUiPgogICAgICAgIDxzdWJQYW5lPgogICAgICAgICAgPFBBVEg+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9Ik1DRnJhbWV3b3JrIiAvPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qcm9qZWN0Vmlld1Byb2plY3ROb2RlIiAvPgogICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KICAgICAgICAgIDwvUEFUSD4KICAgICAgICAgIDxQQVRIPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJNQ0ZyYW1ld29yayIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9Ik1DRnJhbWV3b3JrIiAvPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qc2lEaXJlY3RvcnlOb2RlIiAvPgogICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KICAgICAgICAgIDwvUEFUSD4KICAgICAgICAgIDxQQVRIPgogICAgICAgICAgICA8UEFUSF9FTEVNRU5UPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtSWQiIHZhbHVlPSJNQ0ZyYW1ld29yayIgLz4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbVR5cGUiIHZhbHVlPSJjb20uaW50ZWxsaWouaWRlLnByb2plY3RWaWV3LmltcGwubm9kZXMuUHJvamVjdFZpZXdQcm9qZWN0Tm9kZSIgLz4KICAgICAgICAgICAgPC9QQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgIDxQQVRIX0VMRU1FTlQ+CiAgICAgICAgICAgICAgPG9wdGlvbiBuYW1lPSJteUl0ZW1JZCIgdmFsdWU9Ik1DRnJhbWV3b3JrIiAvPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qc2lEaXJlY3RvcnlOb2RlIiAvPgogICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KICAgICAgICAgICAgPFBBVEhfRUxFTUVOVD4KICAgICAgICAgICAgICA8b3B0aW9uIG5hbWU9Im15SXRlbUlkIiB2YWx1ZT0ibGliIiAvPgogICAgICAgICAgICAgIDxvcHRpb24gbmFtZT0ibXlJdGVtVHlwZSIgdmFsdWU9ImNvbS5pbnRlbGxpai5pZGUucHJvamVjdFZpZXcuaW1wbC5ub2Rlcy5Qc2lEaXJlY3RvcnlOb2RlIiAvPgogICAgICAgICAgICA8L1BBVEhfRUxFTUVOVD4KICAgICAgICAgIDwvUEFUSD4KICAgICAgICA8L3N1YlBhbmU+CiAgICAgIDwvcGFuZT4KICAgIDwvcGFuZXM+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJQcm9wZXJ0aWVzQ29tcG9uZW50Ij4KICAgIDxwcm9wZXJ0eSBuYW1lPSJXZWJTZXJ2ZXJUb29sV2luZG93RmFjdG9yeVN0YXRlIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8cHJvcGVydHkgbmFtZT0ibGFzdF9vcGVuZWRfZmlsZV9wYXRoIiB2YWx1ZT0iJFBST0pFQ1RfRElSJC8uLi8uLi9saWIiIC8+CiAgICA8cHJvcGVydHkgbmFtZT0iRnVsbFNjcmVlbiIgdmFsdWU9InRydWUiIC8+CiAgICA8cHJvcGVydHkgbmFtZT0iTGF5b3V0Q29kZS5yZWFycmFuZ2VFbnRyaWVzUEhQIiB2YWx1ZT0iZmFsc2UiIC8+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJSZWNlbnRzTWFuYWdlciI+CiAgICA8a2V5IG5hbWU9Ik1vdmVGaWxlLlJFQ0VOVF9LRVlTIj4KICAgICAgPHJlY2VudCBuYW1lPSIkUFJPSkVDVF9ESVIkL2xpYiIgLz4KICAgIDwva2V5PgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iUnVuTWFuYWdlciI+CiAgICA8Y29uZmlndXJhdGlvbiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSJQSFBVbml0UnVuQ29uZmlndXJhdGlvblR5cGUiIGZhY3RvcnlOYW1lPSJQSFBVbml0Ij4KICAgICAgPFRlc3RSdW5uZXIgLz4KICAgICAgPG1ldGhvZCAvPgogICAgPC9jb25maWd1cmF0aW9uPgogICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iUGhwTG9jYWxSdW5Db25maWd1cmF0aW9uVHlwZSIgZmFjdG9yeU5hbWU9IlBIUCBDb25zb2xlIj4KICAgICAgPG1ldGhvZCAvPgogICAgPC9jb25maWd1cmF0aW9uPgogICAgPGNvbmZpZ3VyYXRpb24gZGVmYXVsdD0idHJ1ZSIgdHlwZT0iSmF2YXNjcmlwdERlYnVnVHlwZSIgZmFjdG9yeU5hbWU9IkphdmFTY3JpcHQgRGVidWciIHNpbmdsZXRvbj0idHJ1ZSI+CiAgICAgIDxtZXRob2QgLz4KICAgIDwvY29uZmlndXJhdGlvbj4KICAgIDxjb25maWd1cmF0aW9uIGRlZmF1bHQ9InRydWUiIHR5cGU9IlBocFVuaXRSZW1vdGVSdW5Db25maWd1cmF0aW9uVHlwZSIgZmFjdG9yeU5hbWU9IlBIUFVuaXQgb24gU2VydmVyIj4KICAgICAgPG1ldGhvZCAvPgogICAgPC9jb25maWd1cmF0aW9uPgogICAgPGxpc3Qgc2l6ZT0iMCIgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlNoZWx2ZUNoYW5nZXNNYW5hZ2VyIiBzaG93X3JlY3ljbGVkPSJmYWxzZSIgLz4KICA8Y29tcG9uZW50IG5hbWU9IlN2bkNvbmZpZ3VyYXRpb24iIG1heEFubm90YXRlUmV2aXNpb25zPSI1MDAiIG15VXNlQWNjZWxlcmF0aW9uPSJub3RoaW5nIiBteUF1dG9VcGRhdGVBZnRlckNvbW1pdD0iZmFsc2UiIGNsZWFudXBPblN0YXJ0UnVuPSJmYWxzZSIgU1NMX1BST1RPQ09MUz0ic3NsdjMiPgogICAgPG9wdGlvbiBuYW1lPSJVU0VSIiB2YWx1ZT0iIiAvPgogICAgPG9wdGlvbiBuYW1lPSJQQVNTV09SRCIgdmFsdWU9IiIgLz4KICAgIDxvcHRpb24gbmFtZT0ibXlTU0hDb25uZWN0aW9uVGltZW91dCIgdmFsdWU9IjMwMDAwIiAvPgogICAgPG9wdGlvbiBuYW1lPSJteVNTSFJlYWRUaW1lb3V0IiB2YWx1ZT0iMzAwMDAiIC8+CiAgICA8b3B0aW9uIG5hbWU9IkxBU1RfTUVSR0VEX1JFVklTSU9OIiAvPgogICAgPG9wdGlvbiBuYW1lPSJNRVJHRV9EUllfUlVOIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8b3B0aW9uIG5hbWU9Ik1FUkdFX0RJRkZfVVNFX0FOQ0VTVFJZIiB2YWx1ZT0idHJ1ZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iVVBEQVRFX0xPQ0tfT05fREVNQU5EIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8b3B0aW9uIG5hbWU9IklHTk9SRV9TUEFDRVNfSU5fTUVSR0UiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iQ0hFQ0tfTkVTVEVEX0ZPUl9RVUlDS19NRVJHRSIgdmFsdWU9ImZhbHNlIiAvPgogICAgPG9wdGlvbiBuYW1lPSJJR05PUkVfU1BBQ0VTX0lOX0FOTk9UQVRFIiB2YWx1ZT0idHJ1ZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iU0hPV19NRVJHRV9TT1VSQ0VTX0lOX0FOTk9UQVRFIiB2YWx1ZT0idHJ1ZSIgLz4KICAgIDxvcHRpb24gbmFtZT0iRk9SQ0VfVVBEQVRFIiB2YWx1ZT0iZmFsc2UiIC8+CiAgICA8b3B0aW9uIG5hbWU9IklHTk9SRV9FWFRFUk5BTFMiIHZhbHVlPSJmYWxzZSIgLz4KICAgIDxteUlzVXNlRGVmYXVsdFByb3h5PmZhbHNlPC9teUlzVXNlRGVmYXVsdFByb3h5PgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iVGFza01hbmFnZXIiPgogICAgPHRhc2sgYWN0aXZlPSJ0cnVlIiBpZD0iRGVmYXVsdCIgc3VtbWFyeT0iRGVmYXVsdCB0YXNrIj4KICAgICAgPGNoYW5nZWxpc3QgaWQ9IjBjYzZlODBmLWE3YTktNDZkMi05ZWIxLTQ4ZjQ5M2JhYzcyNiIgbmFtZT0iRGVmYXVsdCIgY29tbWVudD0iIiAvPgogICAgICA8Y3JlYXRlZD4xMzkxNTI4ODc2NTA4PC9jcmVhdGVkPgogICAgICA8dXBkYXRlZD4xMzkxNTI4ODc2NTA4PC91cGRhdGVkPgogICAgPC90YXNrPgogICAgPHNlcnZlcnMgLz4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlRvb2xXaW5kb3dNYW5hZ2VyIj4KICAgIDxmcmFtZSB4PSIwIiB5PSIwIiB3aWR0aD0iMjU2MCIgaGVpZ2h0PSIxNDQwIiBleHRlbmRlZC1zdGF0ZT0iMCIgLz4KICAgIDxlZGl0b3IgYWN0aXZlPSJ0cnVlIiAvPgogICAgPGxheW91dD4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJDaGFuZ2VzIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iVGVybWluYWwiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJUT0RPIiBhY3RpdmU9ImZhbHNlIiBhbmNob3I9ImJvdHRvbSIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0iZmFsc2UiIGNvbnRlbnRfdWk9InRhYnMiIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRGF0YWJhc2UiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0icmlnaHQiIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlN0cnVjdHVyZSIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJsZWZ0IiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlByb2plY3QiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9InRydWUiIHdlaWdodD0iMC4zNzUzOTA2MiIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0iY29tYm8iIC8+CiAgICAgIDx3aW5kb3dfaW5mbyBpZD0iRGVidWciIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJmYWxzZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJGYXZvcml0ZXMiIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0ibGVmdCIgYXV0b19oaWRlPSJmYWxzZSIgaW50ZXJuYWxfdHlwZT0iRE9DS0VEIiB0eXBlPSJET0NLRUQiIHZpc2libGU9ImZhbHNlIiB3ZWlnaHQ9IjAuMzMiIHNpZGVXZWlnaHQ9IjAuNSIgb3JkZXI9IjAiIHNpZGVfdG9vbD0idHJ1ZSIgY29udGVudF91aT0idGFicyIgLz4KICAgICAgPHdpbmRvd19pbmZvIGlkPSJFdmVudCBMb2ciIGFjdGl2ZT0iZmFsc2UiIGFuY2hvcj0iYm90dG9tIiBhdXRvX2hpZGU9ImZhbHNlIiBpbnRlcm5hbF90eXBlPSJET0NLRUQiIHR5cGU9IkRPQ0tFRCIgdmlzaWJsZT0iZmFsc2UiIHdlaWdodD0iMC4zMyIgc2lkZVdlaWdodD0iMC41IiBvcmRlcj0iMCIgc2lkZV90b29sPSJ0cnVlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlJ1biIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgICA8d2luZG93X2luZm8gaWQ9IlZlcnNpb24gQ29udHJvbCIgYWN0aXZlPSJmYWxzZSIgYW5jaG9yPSJib3R0b20iIGF1dG9faGlkZT0iZmFsc2UiIGludGVybmFsX3R5cGU9IkRPQ0tFRCIgdHlwZT0iRE9DS0VEIiB2aXNpYmxlPSJmYWxzZSIgd2VpZ2h0PSIwLjMzIiBzaWRlV2VpZ2h0PSIwLjUiIG9yZGVyPSIwIiBzaWRlX3Rvb2w9ImZhbHNlIiBjb250ZW50X3VpPSJ0YWJzIiAvPgogICAgPC9sYXlvdXQ+CiAgPC9jb21wb25lbnQ+CiAgPGNvbXBvbmVudCBuYW1lPSJWY3MuTG9nLlVpUHJvcGVydGllcyI+CiAgICA8b3B0aW9uIG5hbWU9IlJFQ0VOVExZX0ZJTFRFUkVEX1VTRVJfR1JPVVBTIj4KICAgICAgPGNvbGxlY3Rpb24gLz4KICAgIDwvb3B0aW9uPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iVmNzQ29udGVudEFubm90YXRpb25TZXR0aW5ncyI+CiAgICA8b3B0aW9uIG5hbWU9Im15TGltaXQiIHZhbHVlPSIyNjc4NDAwMDAwIiAvPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iVmNzTWFuYWdlckNvbmZpZ3VyYXRpb24iPgogICAgPG9wdGlvbiBuYW1lPSJteVRvZG9QYW5lbFNldHRpbmdzIj4KICAgICAgPFRvZG9QYW5lbFNldHRpbmdzIC8+CiAgICA8L29wdGlvbj4KICA8L2NvbXBvbmVudD4KICA8Y29tcG9uZW50IG5hbWU9IlhEZWJ1Z2dlck1hbmFnZXIiPgogICAgPGJyZWFrcG9pbnQtbWFuYWdlcj4KICAgICAgPG9wdGlvbiBuYW1lPSJ0aW1lIiB2YWx1ZT0iMSIgLz4KICAgIDwvYnJlYWtwb2ludC1tYW5hZ2VyPgogIDwvY29tcG9uZW50PgogIDxjb21wb25lbnQgbmFtZT0iZWRpdG9ySGlzdG9yeU1hbmFnZXIiPgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL01DRnJhbWV3b3JrLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjE2IiBjb2x1bW49IjIxIiBzZWxlY3Rpb24tc3RhcnQ9IjI5MSIgc2VsZWN0aW9uLWVuZD0iMjkxIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjI0MCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTEwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLk1DRkFkbWluVGFicy5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjQ4IiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMTAyOCIgc2VsZWN0aW9uLWVuZD0iMTAyOCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSI3MjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjEyNzUiPgogICAgICAgICAgPGZvbGRpbmc+CiAgICAgICAgICAgIDxlbGVtZW50IHNpZ25hdHVyZT0iZSM3IzEwOCMwIiBleHBhbmRlZD0iZmFsc2UiIC8+CiAgICAgICAgICA8L2ZvbGRpbmc+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTYiIGNvbHVtbj0iMjEiIHNlbGVjdGlvbi1zdGFydD0iMjkxIiBzZWxlY3Rpb24tZW5kPSIyOTEiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMTgwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI0NTAiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGT2JqZWN0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMjY5IiBjb2x1bW49IjI4IiBzZWxlY3Rpb24tc3RhcnQ9IjY0MDQiIHNlbGVjdGlvbi1lbmQ9IjY0MDQiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iNDAzNSIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTI4MCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTYiIGNvbHVtbj0iMjEiIHNlbGVjdGlvbi1zdGFydD0iMjkxIiBzZWxlY3Rpb24tZW5kPSIyOTEiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMjQwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1MTAiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGT2JqZWN0LnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMjY5IiBjb2x1bW49IjI4IiBzZWxlY3Rpb24tc3RhcnQ9IjY0MDQiIHNlbGVjdGlvbi1lbmQ9IjY0MDQiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMjMzOCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTI4MCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTYiIGNvbHVtbj0iMjEiIHNlbGVjdGlvbi1zdGFydD0iMjkxIiBzZWxlY3Rpb24tZW5kPSIyOTEiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMTgwIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI0NTAiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9NQ0ZyYW1ld29yay5tb2R1bGUucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIxNiIgY29sdW1uPSIyMSIgc2VsZWN0aW9uLXN0YXJ0PSIyOTEiIHNlbGVjdGlvbi1lbmQ9IjI5MSIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIxODAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjQ1MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL01DRnJhbWV3b3JrLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjE2IiBjb2x1bW49IjIxIiBzZWxlY3Rpb24tc3RhcnQ9IjI5MSIgc2VsZWN0aW9uLWVuZD0iMjkxIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjE4MCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNDUwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTMiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIyMzAiIHNlbGVjdGlvbi1lbmQ9IjIzMCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIxOTUiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjUxMCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZPYmplY3QucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSI1OCIgY29sdW1uPSIzNyIgc2VsZWN0aW9uLXN0YXJ0PSIxMDE5IiBzZWxlY3Rpb24tZW5kPSIxMDM1IiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjQ0MiIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTI4MCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLk1DRkNyaXRlcmlhLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMCIgY29sdW1uPSIwIiBzZWxlY3Rpb24tc3RhcnQ9IjAiIHNlbGVjdGlvbi1lbmQ9IjAiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjAiIHZlcnRpY2FsLW9mZnNldD0iMjMzIiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1NjcwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9NQ0ZyYW1ld29yay5tb2R1bGUucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIxMyIgY29sdW1uPSIwIiBzZWxlY3Rpb24tc3RhcnQ9IjIzMCIgc2VsZWN0aW9uLWVuZD0iMjMwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjQ1MCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZPYmplY3QucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIyNzAiIGNvbHVtbj0iMTgiIHNlbGVjdGlvbi1zdGFydD0iNjQyMyIgc2VsZWN0aW9uLWVuZD0iNjQyMyIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIzNzE4IiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1MjgwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGQ3JpdGVyaWEucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIwIiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMCIgc2VsZWN0aW9uLWVuZD0iMCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIyMzMiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjU2NzAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL01DRnJhbWV3b3JrLm1vZHVsZS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjE2IiBjb2x1bW49IjIxIiBzZWxlY3Rpb24tc3RhcnQ9IjI5MSIgc2VsZWN0aW9uLWVuZD0iMjkxIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjE4MCIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNDUwIj4KICAgICAgICAgIDxmb2xkaW5nIC8+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLk1DRk9iamVjdC5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjI3MCIgY29sdW1uPSIxOCIgc2VsZWN0aW9uLXN0YXJ0PSI2NDIzIiBzZWxlY3Rpb24tZW5kPSI2NDIzIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjM3MTgiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjUyODAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZDcml0ZXJpYS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjIzMyIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTY3MCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMjciIGNvbHVtbj0iNSIgc2VsZWN0aW9uLXN0YXJ0PSI0NzgiIHNlbGVjdGlvbi1lbmQ9IjQ3OCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSI0MDUiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjUxMCI+CiAgICAgICAgICA8Zm9sZGluZyAvPgogICAgICAgIDwvc3RhdGU+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZPYmplY3QucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIyNzAiIGNvbHVtbj0iMTgiIHNlbGVjdGlvbi1zdGFydD0iNjQyMyIgc2VsZWN0aW9uLWVuZD0iNjQyMyIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIzNzE4IiBtYXgtdmVydGljYWwtb2Zmc2V0PSI1MjgwIiAvPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICAgIDxlbnRyeSBmaWxlPSJmaWxlOi8vJFBST0pFQ1RfRElSJC9saWIvY2xhc3MuTUNGQ3JpdGVyaWEucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIwIiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMCIgc2VsZWN0aW9uLWVuZD0iMCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMCIgdmVydGljYWwtb2Zmc2V0PSIyMzMiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjU2NzAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZDcml0ZXJpYS5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjAiIGNvbHVtbj0iMCIgc2VsZWN0aW9uLXN0YXJ0PSIwIiBzZWxlY3Rpb24tZW5kPSIwIiB2ZXJ0aWNhbC1zY3JvbGwtcHJvcG9ydGlvbj0iMC4wIiB2ZXJ0aWNhbC1vZmZzZXQ9IjIzMyIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTY3MCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLk1DRlBhZ2VyLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTUiIGNvbHVtbj0iMTciIHNlbGVjdGlvbi1zdGFydD0iMjQzIiBzZWxlY3Rpb24tZW5kPSIyNDMiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjI2NjU1ODk3IiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjI3OTAiIC8+CiAgICAgIDwvcHJvdmlkZXI+CiAgICA8L2VudHJ5PgogICAgPGVudHJ5IGZpbGU9ImZpbGU6Ly8kUFJPSkVDVF9ESVIkL2xpYi9jbGFzcy5NQ0ZPYmplY3QucGhwIj4KICAgICAgPHByb3ZpZGVyIHNlbGVjdGVkPSJ0cnVlIiBlZGl0b3ItdHlwZS1pZD0idGV4dC1lZGl0b3IiPgogICAgICAgIDxzdGF0ZSBsaW5lPSIyNjkiIGNvbHVtbj0iMjgiIHNlbGVjdGlvbi1zdGFydD0iNjQwNCIgc2VsZWN0aW9uLWVuZD0iNjQwNCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249IjAuMDcxNTg4MzciIHZlcnRpY2FsLW9mZnNldD0iMzkzOSIgbWF4LXZlcnRpY2FsLW9mZnNldD0iNTI4MCIgLz4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvbGliL2NsYXNzLk1DRkFkbWluVGFicy5waHAiPgogICAgICA8cHJvdmlkZXIgc2VsZWN0ZWQ9InRydWUiIGVkaXRvci10eXBlLWlkPSJ0ZXh0LWVkaXRvciI+CiAgICAgICAgPHN0YXRlIGxpbmU9IjQ4IiBjb2x1bW49IjAiIHNlbGVjdGlvbi1zdGFydD0iMTAyOCIgc2VsZWN0aW9uLWVuZD0iMTAyOCIgdmVydGljYWwtc2Nyb2xsLXByb3BvcnRpb249Ii0yNy41IiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjEyNzUiPgogICAgICAgICAgPGZvbGRpbmc+CiAgICAgICAgICAgIDxlbGVtZW50IHNpZ25hdHVyZT0iZSM3IzEwOCMwIiBleHBhbmRlZD0iZmFsc2UiIC8+CiAgICAgICAgICA8L2ZvbGRpbmc+CiAgICAgICAgPC9zdGF0ZT4KICAgICAgPC9wcm92aWRlcj4KICAgIDwvZW50cnk+CiAgICA8ZW50cnkgZmlsZT0iZmlsZTovLyRQUk9KRUNUX0RJUiQvTUNGcmFtZXdvcmsubW9kdWxlLnBocCI+CiAgICAgIDxwcm92aWRlciBzZWxlY3RlZD0idHJ1ZSIgZWRpdG9yLXR5cGUtaWQ9InRleHQtZWRpdG9yIj4KICAgICAgICA8c3RhdGUgbGluZT0iMTYiIGNvbHVtbj0iMjEiIHNlbGVjdGlvbi1zdGFydD0iMjkxIiBzZWxlY3Rpb24tZW5kPSIyOTEiIHZlcnRpY2FsLXNjcm9sbC1wcm9wb3J0aW9uPSIwLjEzNDIyODE4IiB2ZXJ0aWNhbC1vZmZzZXQ9IjAiIG1heC12ZXJ0aWNhbC1vZmZzZXQ9IjEzNDEiPgogICAgICAgICAgPGZvbGRpbmcgLz4KICAgICAgICA8L3N0YXRlPgogICAgICA8L3Byb3ZpZGVyPgogICAgPC9lbnRyeT4KICA8L2NvbXBvbmVudD4KPC9wcm9qZWN0PgoK]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.MCFAdminTabs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBEYXRlOiAyOS8wNC8xNAogKiBUaW1lOiAxODo0MgogKiBBdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllciA8amNjQG1vcnJpcy1jaGFwbWFuLmNvbT4KICovCmNsYXNzIE1DRkFkbWluVGFicwp7CgogICAgdmFyICR0YWJzID0gYXJyYXkoKTsKICAgIHZhciAkY29udGVudHMgPSBhcnJheSgpOwogICAgdmFyICRzZWxlY3RlZF90YWI7CgogICAgLyoqIEB2YXIgQ01TTW9kdWxlICRtb2R1bGUgKi8KICAgIHZhciAkbW9kdWxlOwoKICAgIC8qKgogICAgICogQHBhcmFtIENNU01vZHVsZSAkbW9kdWxlCiAgICAgKiBAcGFyYW0gYXJyYXkgJHBhcmFtcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJiRtb2R1bGUsIGFycmF5ICRwYXJhbXMpCiAgICB7CiAgICAgICAgJHRoaXMtPnNlbGVjdGVkID0gaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSA/ICRwYXJhbXNbJ2FjdGl2ZV90YWInXSA6IG51bGw7CiAgICAgICAgJHRoaXMtPm1vZHVsZSA9ICRtb2R1bGU7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGFkZFRhYigkbmFtZSwgJHRpdGxlKQogICAgewogICAgICAgICR0aGlzLT50YWJzW3RyaW0oJG5hbWUpXSA9ICR0aXRsZTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gYWRkVGFicyhhcnJheSAkdGFicykKICAgIHsKICAgICAgICBmb3JlYWNoICgkdGFicyBhcyAkbmFtZSA9PiAkdGl0bGUpIHsKICAgICAgICAgICAgJHRoaXMtPmFkZFRhYigkbmFtZSwgJHRpdGxlKTsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHNldFRhYkNvbnRlbnQoJG5hbWUsICRjb250ZW50KQogICAgewogICAgICAgICR0aGlzLT5jb250ZW50c1t0cmltKCRuYW1lKV0gPSAkY29udGVudDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VGFiQ29udGVudCgkbmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gaXNzZXQoJHRoaXMtPmNvbnRlbnRzW3RyaW0oJG5hbWUpXSk/JHRoaXMtPmNvbnRlbnRzW3RyaW0oJG5hbWUpXTpudWxsOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBoZWFkZXJzKCkKICAgIHsKICAgICAgICAkaGVhZGVycyA9ICR0aGlzLT5tb2R1bGUtPlN0YXJ0VGFiSGVhZGVycygpOwoKICAgICAgICBmb3JlYWNoKCR0aGlzLT50YWJzIGFzICRuYW1lID0+ICR0aXRsZSkKICAgICAgICB7CiAgICAgICAgICAgICRoZWFkZXJzIC49ICR0aGlzLT5tb2R1bGUtPlNldFRhYkhlYWRlcigkbmFtZSwgJHRpdGxlLCAoJG5hbWUgPT09ICR0aGlzLT5zZWxlY3RlZCkpOwogICAgICAgIH0KCiAgICAgICAgJGhlYWRlcnMgLj0gJHRoaXMtPm1vZHVsZS0+RW5kVGFiSGVhZGVycygpOwoKICAgICAgICByZXR1cm4gJGhlYWRlcnM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGdldFRhYigkbmFtZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPm1vZHVsZS0+U3RhcnRUYWIoJG5hbWUpIC4gJHRoaXMtPmdldFRhYkNvbnRlbnQoJG5hbWUpIC4gJHRoaXMtPm1vZHVsZS0+RW5kVGFiKCk7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIHRhYnMoKQogICAgewogICAgICAgICR0YWJzID0gJHRoaXMtPm1vZHVsZS0+U3RhcnRUYWJDb250ZW50KCk7CgogICAgICAgIGZvcmVhY2goJHRoaXMtPnRhYnMgYXMgJG5hbWUgPT4gJHRpdGxlKQogICAgICAgIHsKICAgICAgICAgICAgJHRhYnMgLj0gJHRoaXMtPmdldFRhYigkbmFtZSk7CiAgICAgICAgfQoKICAgICAgICAkdGFicyAuPSAkdGhpcy0+bW9kdWxlLT5FbmRUYWJDb250ZW50KCk7CgogICAgICAgIHJldHVybiAkdGFiczsKICAgIH0KCgp9IA==]]></data>
	</file>
	<file>
	  <filename>/lib/class.MCFCriteria.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIE1DRkNyaXRlcmlhIHsKCgl2YXIgJG9yZGVyX2J5ID0gYXJyYXkoKTsKCXZhciAkY29uZGl0aW9ucyA9IGFycmF5KCk7Cgl2YXIgJGNvbmRpdGlvbnNfb3IgPSBhcnJheSgpOwoJdmFyICRmaWx0ZXJzID0gYXJyYXkoKTsKCXZhciAkZ3JvdXBfYnkgPSBhcnJheSgpOwoJdmFyICRzZWxlY3RlZF9jb2x1bW5zID0gYXJyYXkoKTsKCQoJdmFyICRsaW1pdDsKCXZhciAkb2Zmc2V0OwoJCgl2YXIgJHZhbHVlcyA9IGFycmF5KCk7CgkKCS8vIENPTlNUCgkKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IEVRVUFMID0gIj0iOwogIGNvbnN0IE5PVF9FUVVBTCA9ICI8PiI7CiAgY29uc3QgQUxUX05PVF9FUVVBTCA9ICIhPSI7CiAgY29uc3QgR1JFQVRFUl9USEFOID0gIj4iOwogIGNvbnN0IExFU1NfVEhBTiA9ICI8IjsKICBjb25zdCBHUkVBVEVSX0VRVUFMID0gIj49IjsKICBjb25zdCBMRVNTX0VRVUFMID0gIjw9IjsKICBjb25zdCBMSUtFID0gIiBMSUtFICI7CiAgY29uc3QgTVVMVElMSUtFID0gIiBNVUxUSUxJS0UgIjsKICBjb25zdCBNVUxUSU5PVExJS0UgPSAiIE1VTFRJTk9UTElLRSAiOwogIGNvbnN0IE5PVF9MSUtFID0gIiBOT1QgTElLRSAiOwogIGNvbnN0IFVQQ09NSU5HID0gIiBVUENPTUlORyAiOwogIGNvbnN0IERBVEVfVVBDT01JTkcgPSAiIERBVEVfVVBDT01JTkcgIjsKICBjb25zdCBQQVNUID0gIiBQQVNUICI7CiAgY29uc3QgUEFTVF9PUl9OT1cgPSAiIFBBU1RfT1JfTk9XICI7CiAgY29uc3QgREFURV9QQVNUX09SX05PVyA9ICIgREFURV9QQVNUX09SX05PVyAiOwoKICAvKiogUG9zdGdyZVNRTCBjb21wYXJpc29uIHR5cGUgKi8KICBjb25zdCBJTElLRSA9ICIgSUxJS0UgIjsKCiAgLyoqIFBvc3RncmVTUUwgY29tcGFyaXNvbiB0eXBlICovCiAgY29uc3QgTk9UX0lMSUtFID0gIiBOT1QgSUxJS0UgIjsKCiAgLyoqIENvbXBhcmlzb24gdHlwZS4gKi8KICBjb25zdCBDVVNUT00gPSAiQ1VTVE9NIjsKCiAgLyoqIENvbXBhcmlzb24gdHlwZS4gKi8KICBjb25zdCBESVNUSU5DVCA9ICJESVNUSU5DVCAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IElOID0gIiBJTiAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IE5PVF9JTiA9ICIgTk9UIElOICI7CgogIC8qKiBDb21wYXJpc29uIHR5cGUuICovCiAgY29uc3QgQUxMID0gIkFMTCAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IEpPSU4gPSAiSk9JTiI7CgogIC8qKiBCaW5hcnkgbWF0aCBvcGVyYXRvcjogQU5EICovCiAgY29uc3QgQklOQVJZX0FORCA9ICImIjsKCiAgLyoqIEJpbmFyeSBtYXRoIG9wZXJhdG9yOiBPUiAqLwogIGNvbnN0IEJJTkFSWV9PUiA9ICJ8IjsKCiAgLyoqICJPcmRlciBieSIgcXVhbGlmaWVyIC0gYXNjZW5kaW5nICovCiAgY29uc3QgQVNDID0gIkFTQyI7CgogIC8qKiAiT3JkZXIgYnkiIHF1YWxpZmllciAtIGRlc2NlbmRpbmcgKi8KICBjb25zdCBERVNDID0gIkRFU0MiOwoKICAvKiogIklTIE5VTEwiIG51bGwgY29tcGFyaXNvbiAqLwogIGNvbnN0IElTTlVMTCA9ICIgSVMgTlVMTCAiOwoKICAvKiogIklTIE5PVCBOVUxMIiBudWxsIGNvbXBhcmlzb24gKi8KICBjb25zdCBJU05PVE5VTEwgPSAiIElTIE5PVCBOVUxMICI7CgogIGNvbnN0IElTTk9URU1QVFkgPSAnIElTIE5PVCBFTVBUWSAnOwogIGNvbnN0IElTRU1QVFkgPSAnIElTIEVNUFRZICc7CgogIC8qKiAiQ1VSUkVOVF9EQVRFIiBBTlNJIFNRTCBmdW5jdGlvbiAqLwogIGNvbnN0IENVUlJFTlRfREFURSA9ICJDVVJSRU5UX0RBVEUiOwoKICAvKiogIkNVUlJFTlRfVElNRSIgQU5TSSBTUUwgZnVuY3Rpb24gKi8KICBjb25zdCBDVVJSRU5UX1RJTUUgPSAiQ1VSUkVOVF9USU1FIjsKCiAgLyoqICJDVVJSRU5UX1RJTUVTVEFNUCIgQU5TSSBTUUwgZnVuY3Rpb24gKi8KICBjb25zdCBDVVJSRU5UX1RJTUVTVEFNUCA9ICJDVVJSRU5UX1RJTUVTVEFNUCI7CgogIC8qKiAiTEVGVCBKT0lOIiBTUUwgc3RhdGVtZW50ICovCiAgY29uc3QgTEVGVF9KT0lOID0gIkxFRlQgSk9JTiI7CgogIC8qKiAiUklHSFQgSk9JTiIgU1FMIHN0YXRlbWVudCAqLwogIGNvbnN0IFJJR0hUX0pPSU4gPSAiUklHSFQgSk9JTiI7CgogIC8qKiAiSU5ORVIgSk9JTiIgU1FMIHN0YXRlbWVudCAqLwogIGNvbnN0IElOTkVSX0pPSU4gPSAiSU5ORVIgSk9JTiI7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKCXsKCSAgcmV0dXJuICR0aGlzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhZGRBc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCRjb2x1bW4pCgl7CgkJJHRoaXMtPm9yZGVyX2J5W10gPSBhcnJheSAoJ2NvbHVtbicgPT4gJGNvbHVtbiwgJ29yZGVyJyA9PiBzZWxmOjpBU0MpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYWRkRGVzY2VuZGluZ09yZGVyQnlDb2x1bW4oJGNvbHVtbikKCXsKCQkkdGhpcy0+b3JkZXJfYnlbXSA9IGFycmF5ICgnY29sdW1uJyA9PiAkY29sdW1uLCAnb3JkZXInID0+IHNlbGY6OkRFU0MpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYWRkU2VsZWN0Q29sdW1uKCRjb2x1bW5fbmFtZSkKCXsKCQkkdGhpcy0+c2VsZWN0ZWRfY29sdW1uc1tdID0gJGNvbHVtbl9uYW1lOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYWRkR3JvdXBCeUNvbHVtbigkY29sdW1uX25hbWUpCgl7CgkJJHRoaXMtPmdyb3VwX2J5W10gPSAkY29sdW1uX25hbWU7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBhZGQoJGNvbHVtbiwgJHZhbHVlLCAkY29uZGl0aW9uID0gc2VsZjo6RVFVQUwsICRleHRyYV9xdWVyeSA9ICcnKQoJewoJCWlmICgkY29uZGl0aW9uID09IHNlbGY6OklOKSB7CgkJCWlmIChlbXB0eSgkdmFsdWUpKSB7CgkJCQkkY29sdW1uID0gMTsKCQkJCSR2YWx1ZSA9IC0xOwoJCQkJJGNvbmRpdGlvbiA9IHNlbGY6OkVRVUFMOwoJCQl9CgkJfQoJCSR0aGlzLT5jb25kaXRpb25zW10gPSBhcnJheSAoJ2NvbHVtbicgPT4gJGNvbHVtbiwgJ3ZhbHVlJyA9PiAkdmFsdWUsICdjb25kaXRpb24nID0+ICRjb25kaXRpb24sICdleHRyYV9xdWVyeScgPT4gJGV4dHJhX3F1ZXJ5KTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFkZE9yKCRjb2x1bW4sICR2YWx1ZSwgJGNvbmRpdGlvbiA9IHNlbGY6OkVRVUFMLCAkZXh0cmFfcXVlcnkgPSAnJykKCXsKCSAgaWYgKCRjb25kaXRpb24gPT0gc2VsZjo6SU4pIHsKCQkJaWYgKGVtcHR5KCR2YWx1ZSkpIHsKCQkJCSRjb2x1bW4gPSAxOwoJCQkJJHZhbHVlID0gLTE7CgkJCQkkY29uZGl0aW9uID0gc2VsZjo6RVFVQUw7CgkJCX0KCQl9CgkJJHRoaXMtPmNvbmRpdGlvbnNfb3JbXSA9IGFycmF5ICgnY29sdW1uJyA9PiAkY29sdW1uLCAndmFsdWUnID0+ICR2YWx1ZSwgJ2NvbmRpdGlvbicgPT4gJGNvbmRpdGlvbiwgJ2V4dHJhX3F1ZXJ5JyA9PiAkZXh0cmFfcXVlcnkpOwoJfQoJCgkKCXB1YmxpYyBmdW5jdGlvbiBzZXRMaW1pdCgkbGltaXQpCgl7CgkJJHRoaXMtPmxpbWl0ID0gJGxpbWl0OwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0T2Zmc2V0KCRvZmZzZXQpIHsKCQkkdGhpcy0+b2Zmc2V0ID0gJG9mZnNldDsKCX0KCQoJLy8gUkVRVUVTVCBCVUlMRElORwogIAogIHB1YmxpYyBmdW5jdGlvbiBidWlsZENvbmRpdGlvbigkY29uZGl0aW9uKQogIHsKICAgIHN3aXRjaCAoJGNvbmRpdGlvblsnY29uZGl0aW9uJ10pIHsKICAgICAgY2FzZSAnIElOICc6CiAgICAgICAgJGRiID0gY21zX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICBmb3JlYWNoICgkY29uZGl0aW9uWyd2YWx1ZSddIGFzICYkdmFsdWUpIHsKICAgICAgICAgIC8vICR2YWx1ZSA9ICInIiAuIG15c3FsaV9yZWFsX2VzY2FwZV9zdHJpbmcoJHZhbHVlKSAuICInIjsKICAgICAgICAgICR2YWx1ZSA9ICRkYi0+cXN0cigkdmFsdWUpOwogICAgICAgIH0KICAgICAgICB1bnNldCgkdmFsdWUpOwogICAgICAgICRxdWVyeSA9ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJTiAoJyAuIGltcGxvZGUoJywnLCAkY29uZGl0aW9uWyd2YWx1ZSddKSAuICcpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIE1VTFRJTElLRSAnOgogICAgICAgICR2YWx1ZXMgPSBleHBsb2RlKCcsJywkY29uZGl0aW9uWyd2YWx1ZSddKTsKICAgICAgICAkcXVlcmllcyA9IGFycmF5KCk7CiAgICAgICAgZm9yZWFjaCgkdmFsdWVzIGFzICR2YWx1ZSkKICAgICAgICB7CiAgICAgICAgICAkcXVlcmllc1tdID0gJHRoaXMtPmJ1aWxkTXVsdGlMaWtlKCRjb25kaXRpb25bJ2NvbHVtbiddLCAkdmFsdWUpOwogICAgICAgIH0gICAgICAgIAogICAgICAgICRxdWVyeSA9ICcoJyAuIGltcGxvZGUoJyBPUiAnLCAkcXVlcmllcykgLiAnKSc7CgogICAgICAgIGJyZWFrOwogICAgICBjYXNlICcgTVVMVElOT1RMSUtFICc6CiAgICAgICAgJHZhbHVlcyA9IGV4cGxvZGUoJywnLCRjb25kaXRpb25bJ3ZhbHVlJ10pOwogICAgICAgICRxdWVyaWVzID0gYXJyYXkoKTsKICAgICAgICBmb3JlYWNoKCR2YWx1ZXMgYXMgJHZhbHVlKQogICAgICAgIHsKICAgICAgICAgICRxdWVyaWVzW10gPSAkdGhpcy0+YnVpbGRNdWx0aUxpa2UoJGNvbmRpdGlvblsnY29sdW1uJ10sICR2YWx1ZSwgJyBBTkQgJywgJ05PVCcpOwogICAgICAgIH0gICAgICAgIAogICAgICAgICRxdWVyeSA9ICcoJyAuIGltcGxvZGUoJyBBTkQgJywgJHF1ZXJpZXMpIC4gJyknOwoKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIElTIEVNUFRZICc6CiAgICAgICAgJHF1ZXJ5ID0gICcoJyAuICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJUyBOVUxMIE9SICcgLiAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPSA/ICknOwogICAgICAgICR0aGlzLT52YWx1ZXNbXSA9ICcnOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICcgSVMgTk9UIEVNUFRZICc6CiAgICAgICAgJHF1ZXJ5ID0gICcoJyAuICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJUyBOT1QgTlVMTCBBTkQgJyAuICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyAhPSA/ICknIDsKICAgICAgICAkdGhpcy0+dmFsdWVzW10gPSAnJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIElTIE5VTEwgJzoKICAgICAgY2FzZSAnIElTIE5PVCBOVUxMICc6CiAgICAgICAgJHF1ZXJ5ID0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAkY29uZGl0aW9uWydjb25kaXRpb24nXTsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIFVQQ09NSU5HICc6CiAgICAgICAgJHF1ZXJ5ID0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnID49IE5PVygpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIERBVEVfVVBDT01JTkcgJzoKICAgICAgICAkcXVlcnkgPSAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPj0gREFURShOT1coKSknOwogICAgICAgIGJyZWFrOwogICAgICBjYXNlICcgUEFTVCAnOgogICAgICAgICRxdWVyeSA9ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyA8IE5PVygpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIFBBU1RfT1JfTk9XICc6CiAgICAgICAgJHF1ZXJ5ID0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIDw9IE5PVygpJzsKICAgICAgICBicmVhazsKICAgICAgY2FzZSAnIERBVEVfUEFTVF9PUl9OT1cgJzoKICAgICAgICAkcXVlcnkgPSAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPD0gREFURShOT1coKSknOwogICAgICAgIGJyZWFrOwogICAgICBkZWZhdWx0OgogICAgICAgICRxdWVyeSA9ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyAnIC4gJGNvbmRpdGlvblsnY29uZGl0aW9uJ10gLiAnID8nOwogICAgICAgICR0aGlzLT52YWx1ZXNbXSA9ICRjb25kaXRpb25bJ3ZhbHVlJ107CiAgICAgICAgYnJlYWs7CiAgICB9CgogICAgaWYoaXNzZXQoJGNvbmRpdGlvblsnZXh0cmFfcXVlcnknXSkpCiAgICB7CiAgICAgICRxdWVyeSA9ICcoJyAuICRxdWVyeSAuICcgJyAuICRjb25kaXRpb25bJ2V4dHJhX3F1ZXJ5J10gLiAnKSc7CiAgICB9CgogICAgcmV0dXJuICRxdWVyeTsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBidWlsZE11bHRpTGlrZSgkY29sdW1uLCAkdmFsdWUsICRhbmRvciA9ICcgT1IgJywgJG5vdCA9ICcnKQogIHsKICAgICRjb25kaXRpb25zID0gYXJyYXkoKTsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICR2YWx1ZTsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICR2YWx1ZSAuICd8fHwlJzsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICclfHx8JyAuICR2YWx1ZTsKICAgICRjb25kaXRpb25zW10gPSAkY29sdW1uIC4gJyAnIC4gJG5vdCAuICcgTElLRSA/JzsKICAgICR0aGlzLT52YWx1ZXNbXSA9ICclfHx8JyAuICR2YWx1ZSAuICd8fHwlJzsKCiAgICByZXR1cm4gJygnLiBpbXBsb2RlKCRhbmRvciwgJGNvbmRpdGlvbnMpIC4gJyknOwogICAgCiAgICAvLyAkcXVlcnkgPSAnICgnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAkdmFsdWU7CiAgICAvLyAkcXVlcnkgLj0gKCRub3QpPycgQU5EICc6JyBPUiAnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAkdmFsdWUgLiAnfHx8JSc7CiAgICAvLyAkcXVlcnkgLj0gKCRub3QpPycgQU5EICc6JyBPUiAnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAnJXx8fCcgLiAkdmFsdWU7CiAgICAvLyAkcXVlcnkgLj0gKCRub3QpPycgQU5EICc6JyBPUiAnOwogICAgLy8gJHF1ZXJ5IC49ICRjb2x1bW4gLiAoJG5vdCk/JyBOT1QgTElLRSA/JzonIExJS0UgPyc7CiAgICAvLyAkdGhpcy0+dmFsdWVzW10gPSAnJXx8fCcgLiAkdmFsdWUgLiAnfHx8JSc7CiAgICAvLyAkcXVlcnkgLj0gJykgJzsKICAgIC8vIAogICAgLy8gcmV0dXJuICRxdWVyeTsKICB9CgogIHB1YmxpYyAgZnVuY3Rpb24gYnVpbGRDb25kaXRpb25zKCR0YWJsZV9uYW1lID0gbnVsbCkKICB7CiAgICAvKiBGSVhNRTogUHJvY2VlZCB3aXRoIGFsbCB0aGUgcG9zc2libGUgY29uZGl0aW9ucyAqLwoKICAgICRxdWVyeSA9IG51bGw7CiAgICAvLyBXSEVSRQoKICAgIGlmIChjb3VudCgkdGhpcy0+Y29uZGl0aW9ucykgPiAwKQogICAgewogICAgICAkcXVlcnkgLj0gJyBXSEVSRSAnOwogICAgICAKICAgICAgJGNvbmRpdGlvbnMgPSBhcnJheSgpOwoKICAgICAgZm9yZWFjaCAoJHRoaXMtPmNvbmRpdGlvbnMgYXMgJGNvbmRpdGlvbikKICAgICAgewogICAgICAgICRjb25kaXRpb25zW10gPSAkdGhpcy0+YnVpbGRDb25kaXRpb24oJGNvbmRpdGlvbik7CiAgICAgIH0KICAgICAgCiAgICAgICRxdWVyeSAuPSBpbXBsb2RlKCcgQU5EICcsICRjb25kaXRpb25zKTsKICAgIH0KICAgIAogICAgLy8gT1IgQ09ORElUSU9OUwogICAgaWYgKGNvdW50KCR0aGlzLT5jb25kaXRpb25zX29yKSA+IDApCiAgICB7CiAgICAgIGlmIChjb3VudCgkdGhpcy0+Y29uZGl0aW9ucykgPiAwKQogICAgICB7CiAgICAgICAgJHF1ZXJ5IC49ICcgQU5EICc7CiAgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJHF1ZXJ5IC49ICcgV0hFUkUgJzsKICAgICAgfSAKICAgICAgICAkY29uZGl0aW9uc19vciA9IGFycmF5KCk7CgogICAgICAgIGZvcmVhY2ggKCR0aGlzLT5jb25kaXRpb25zX29yIGFzICRjb25kaXRpb24pCiAgICAgICAgewogICAgICAgICAgJGNvbmRpdGlvbnNfb3JbXSA9ICR0aGlzLT5idWlsZENvbmRpdGlvbigkY29uZGl0aW9uKTsKICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSAnKCcgLiBpbXBsb2RlKCcgT1IgJywgJGNvbmRpdGlvbnNfb3IpIC4gJyknOwogICAgfQogICAgCiAgICAKICAgIC8vIEdST1VQIEJZCgogICAgaWYoY291bnQoJHRoaXMtPmdyb3VwX2J5KSA+IDApCiAgICB7CiAgICAgICRxdWVyeSAuPSAnIEdST1VQIEJZICcgLiBpbXBsb2RlICgnLCAnLCAkdGhpcy0+Z3JvdXBfYnkpOwogICAgfQogICAgCiAgICAvLyBPUkRFUiBCWQogICAgCiAgICBpZiAoY291bnQoJHRoaXMtPm9yZGVyX2J5KSA+IDApCiAgICB7CiAgICAgICRxdWVyeSAuPSAnIE9SREVSIEJZICc7CiAgICAgIAogICAgICAkb3JkZXJzID0gYXJyYXkoKTsKICAgICAgCiAgICAgIGZvcmVhY2ggKCR0aGlzLT5vcmRlcl9ieSBhcyAkb3JkZXJfYnkpCiAgICAgIHsKICAgICAgICAkb3JkZXJzW10gPSAkb3JkZXJfYnlbJ2NvbHVtbiddIC4gJyAnIC4gJG9yZGVyX2J5WydvcmRlciddOwogICAgICB9CiAgICAgIAogICAgICAkcXVlcnkgLj0gaW1wbG9kZSgnICwnLCAkb3JkZXJzKTsKICAgIH0KCgogICAgJG9mZnNldCA9ICR0aGlzLT5vZmZzZXQgPyAkdGhpcy0+b2Zmc2V0IDogMDsKICAgICRsaW1pdCA9ICR0aGlzLT5saW1pdCA/ICR0aGlzLT5saW1pdCA6IFBIUF9JTlRfTUFYOwogICAgJHF1ZXJ5IC49ICcgTElNSVQgJyAuJG9mZnNldC4nLCcuJGxpbWl0OwogICAgcmV0dXJuICRxdWVyeTsKICB9CgoJcHVibGljIGZ1bmN0aW9uIGJ1aWxkUXVlcnkoJHRhYmxlX25hbWUsICRjb2x1bW5fd2l0aF9kYiA9IGZhbHNlKQoJewoJCSRxdWVyeSA9ICdTRUxFQ1QgJzsKCQkKCQlpZiAoY291bnQoJHRoaXMtPnNlbGVjdGVkX2NvbHVtbnMpID4gMCkKCQl7CgkJCWZvcmVhY2ggKCR0aGlzLT5zZWxlY3RlZF9jb2x1bW5zIGFzICRjb2x1bW4pIAoJCQl7CgkJCQkkcXVlcnkgLj0gJGNvbHVtbiAuICcgJzsKCQkJfQoJCX0KCQllbHNlIAoJCXsKCQkgIGlmKCRjb2x1bW5fd2l0aF9kYikKCQkgIHsKCQkgICAkcXVlcnkgLj0gJyAnIC4gJHRhYmxlX25hbWUgLiAnLiogJzsgCgkJICB9CgkJICBlbHNlCgkJICB7CQkgICAKICAJCQkkcXVlcnkgLj0gJyAqICc7IAoJCSAgfQoJCX0KCQkKCQkkcXVlcnkgLj0gJ0ZST00gJyAuICR0YWJsZV9uYW1lOwoJCQkJCgkJJHF1ZXJ5IC49ICR0aGlzLT5idWlsZENvbmRpdGlvbnMoJHRhYmxlX25hbWUpOwoJCXJldHVybiAkcXVlcnk7CQkKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0VmFsdWVzKCkgewoJCXJldHVybiAkdGhpcy0+dmFsdWVzOwoJfQoKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MCFObject.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmFic3RyYWN0IGNsYXNzIE1DRk9iamVjdAp7CgogICAgLyoqCiAgICAgKiBAdmFyCiAgICAgKi8KICAgIHByb3RlY3RlZCAkaWQ7CiAgICAvKioKICAgICAqIEB2YXIKICAgICAqLwogICAgcHJvdGVjdGVkICRjcmVhdGVkX2F0OwogICAgLyoqCiAgICAgKiBAdmFyCiAgICAgKi8KICAgIHByb3RlY3RlZCAkY3JlYXRlZF9ieTsKICAgIC8qKgogICAgICogQHZhcgogICAgICovCiAgICBwcm90ZWN0ZWQgJHVwZGF0ZWRfYXQ7CiAgICAvKioKICAgICAqIEB2YXIKICAgICAqLwogICAgcHJvdGVjdGVkICR1cGRhdGVkX2J5OwoKICAgIC8qKgogICAgICogRGF0YWJhc2UgZmllbGRzIG1hcHBpbmcKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkdGFibGVfZmllbGRzID0gYXJyYXkoCiAgICAgICAgJ2lkJyA9PiAnSSBLRVkgQVVUTycsCiAgICAgICAgJ2NyZWF0ZWRfYXQnID0+ICdEVCcsCiAgICAgICAgJ2NyZWF0ZWRfYnknID0+ICdJJywKICAgICAgICAndXBkYXRlZF9hdCcgPT4gJ0RUJywKICAgICAgICAndXBkYXRlZF9ieScgPT4gJ0knLAogICAgKTsKCiAgICAvKioKICAgICAqIERhdGFiYXNlIGluZGV4ZWQgZmllbGRzCiAgICAgKiBAdmFyIGFycmF5CiAgICAgKi8KICAgIHByb3RlY3RlZCBzdGF0aWMgJHRhYmxlX2ZpZWxkc19pbmRleGVzID0gYXJyYXkoJ2lkJyk7CgogICAgY29uc3QgVEFCTEVfTkFNRSA9ICcnOwoKICAgIC8qKgogICAgICogVGFibGUgcmVsYXRpb25zCiAgICAgKiBFeGFtcGxlOgogICAgICogIGFycmF5KAogICAgICogICAgICAncmVsYXRpb25fbmFtZScgPT4gYXJyYXkoCiAgICAgKiAgICAgICAgICAnbG9jYWwnID0+ICdsb2NhbCBmaWVsZCcsCiAgICAgKiAgICAgICAgICAncmVtb3RlJyA9PiAncmVtb3RlIGZpZWxkJywKICAgICAqICAgICAgICAgICdjbGFzcycgPT4gJ1JlbW90ZSBjbGFzcycKICAgICAqICAgICAgKQogICAgICogKTsKICAgICAqIEB2YXIgYXJyYXkKICAgICAqLwogICAgcHJvdGVjdGVkIHN0YXRpYyAkdGFibGVfcmVsYXRpb25zID0gYXJyYXkoKTsKICAgIC8vIFRPRE8KICAgIC8vICRjYXNjYWRlID0+IExpc3Qgb2YgY2hpbGQgb2JqZWN0cyAvLyBQb3NzaWJseSBkYiBjb25zdHJhaW50ID8KICAgIC8vICRmb3JlaW5fa2V5cwoKICAgIHB1YmxpYyBzdGF0aWMgJGJsYWNrbGlzdCA9IGFycmF5KAogICAgICAgICd0YWJsZWZpZWxkcycKICAgICk7CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRUYWJsZUZpZWxkcygpCiAgICB7CiAgICAgICAgaWYgKCRwYXJlbnQgPSBnZXRfcGFyZW50X2NsYXNzKGdldF9jYWxsZWRfY2xhc3MoKSkpIHsKICAgICAgICAgICAgcmV0dXJuICRwYXJlbnQ6OmdldFRhYmxlRmllbGRzKCkgKyBzdGF0aWM6OiR0YWJsZV9maWVsZHM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JHRhYmxlX2ZpZWxkczsKICAgICAgICB9CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZVRhYmxlRmllbGRzKCkKICAgIHsKICAgICAgICAkZmllbGRzID0gYXJyYXkoKTsKCiAgICAgICAgZm9yZWFjaCAoc3RhdGljOjpnZXRUYWJsZUZpZWxkcygpIGFzICRmaWVsZF9uYW1lID0+ICRmaWVsZF90eXBlKSB7CiAgICAgICAgICAgICRmaWVsZHNbXSA9ICRmaWVsZF9uYW1lIC4gJyAnIC4gJGZpZWxkX3R5cGU7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZmllbGRzOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0VGFibGVGaWVsZEluZGV4ZXMoKQogICAgewogICAgICAgIGlmICgkcGFyZW50ID0gZ2V0X3BhcmVudF9jbGFzcyhnZXRfY2FsbGVkX2NsYXNzKCkpKSB7CiAgICAgICAgICAgIHJldHVybiAkcGFyZW50OjpnZXRUYWJsZUZpZWxkSW5kZXhlcygpICsgc3RhdGljOjokdGFibGVfZmllbGRzX2luZGV4ZXM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHN0YXRpYzo6JHRhYmxlX2ZpZWxkc19pbmRleGVzOwogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEByZXR1cm4KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldElkKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmlkOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX3NldCgkbmFtZSwgJHZhbHVlKQogICAgewogICAgICAgICR0aGlzLT4kbmFtZSA9ICR2YWx1ZTsKICAgIH0KCgogICAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRuYW1lKQogICAgewogICAgICAgICRtZXRob2QgPSAnZ2V0JyAuIHNlbGY6OkNhbWVsaXNlKCRuYW1lKTsKCiAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoJHRoaXMsICRtZXRob2QpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG1ldGhvZCgpOwogICAgICAgIH0KICAgICAgICBpZiAobWV0aG9kX2V4aXN0cygkdGhpcywgJG5hbWUpKSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG5hbWUoKTsKICAgICAgICB9IGVsc2VpZiAocHJvcGVydHlfZXhpc3RzKCR0aGlzLCAkbmFtZSkpIHsKCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+JG5hbWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignUHJvcGVydHkgJyAuICRuYW1lIC4gJyBkbyBub3QgZXhpc3RzIGluICcgLiBfX0NMQVNTX18pOwogICAgICAgIH0KICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENhbWVsaXNlKCRuYW1lLCAkZ2x1ZSA9ICcnKQogICAgewogICAgICAgICR3b3JkcyA9IGV4cGxvZGUoJ18nLCAkbmFtZSk7CiAgICAgICAgZm9yZWFjaCAoJHdvcmRzIGFzICYkd29yZCkgewogICAgICAgICAgICAkd29yZCA9IHVjZmlyc3QoJHdvcmQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gaW1wbG9kZSgkZ2x1ZSwgJHdvcmRzKTsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gc2F2ZSgkaW5zZXJ0ID0gZmFsc2UpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5pZCkgfHwgJGluc2VydCkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmluc2VydCgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+dXBkYXRlKCk7CiAgICAgICAgfQogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaW5zZXJ0KCkKICAgIHsKICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FOwoKICAgICAgICAkZmllbGRzID0gYXJyYXkoKTsKICAgICAgICAkZXhjbHVkZSA9IGFycmF5KCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5KCk7CgogICAgICAgIGlmICghZW1wdHkoJHRoaXMtPmlkKSkgewogICAgICAgICAgICAkZmllbGRzW10gPSAnaWQgPSA/JzsKICAgICAgICAgICAgJHZhbHVlc1tdID0gJHRoaXMtPmdldElkKCk7CiAgICAgICAgICAgICRleGNsdWRlW10gPSAnaWQnOwogICAgICAgIH0KCiAgICAgICAgJGZpZWxkc1tdID0gJ2NyZWF0ZWRfYXQgPSBOT1coKSc7CiAgICAgICAgJGV4Y2x1ZGVbXSA9ICdjcmVhdGVkX2F0JzsKCiAgICAgICAgJGZpZWxkc1tdID0gJ2NyZWF0ZWRfYnkgPSA/JzsKICAgICAgICAkdmFsdWVzW10gPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgICAgICAkZXhjbHVkZVtdID0gJ2NyZWF0ZWRfYnknOwoKICAgICAgICAkZmllbGRzW10gPSAndXBkYXRlZF9hdCA9IE5PVygpJzsKICAgICAgICAkZXhjbHVkZVtdID0gJ3VwZGF0ZWRfYXQnOwoKICAgICAgICAkZmllbGRzW10gPSAndXBkYXRlZF9ieSA9ID8nOwogICAgICAgICR2YWx1ZXNbXSA9IGdldF91c2VyaWQoZmFsc2UpOwogICAgICAgICRleGNsdWRlW10gPSAndXBkYXRlZF9ieSc7CgoKICAgICAgICBmb3JlYWNoIChzdGF0aWM6OmdldFRhYmxlRmllbGRzKCkgYXMgJGZpZWxkX25hbWUgPT4gJGZpZWxkX3R5cGUpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkZmllbGRfbmFtZSwgJGV4Y2x1ZGUpKSB7CiAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGRfbmFtZSAuICcgPSA/JzsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR0aGlzLT5fX2dldCgkZmllbGRfbmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSAnIFNFVCAnIC4gaW1wbG9kZSgnLCAnLCAkZmllbGRzKTsKCiAgICAgICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOwoKICAgICAgICBpZiAoJHJlc3VsdCA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignSW1wb3NzaWJsZSB0byBleGVjdXRlIHF1ZXJ5OiAnIC4gJHF1ZXJ5KTsKICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkdGhpcy0+aWQpKSB7CiAgICAgICAgICAgICR0aGlzLT5pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHJpdmF0ZSBmdW5jdGlvbiB1cGRhdGUoKQogICAgewogICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FOwoKICAgICAgICAkZmllbGRzID0gYXJyYXkoKTsKICAgICAgICAkZXhjbHVkZSA9IGFycmF5KCk7CiAgICAgICAgJHZhbHVlcyA9IGFycmF5KCk7CgogICAgICAgICRleGNsdWRlW10gPSAnaWQnOwogICAgICAgICRleGNsdWRlW10gPSAnY3JlYXRlZF9hdCc7CiAgICAgICAgJGV4Y2x1ZGVbXSA9ICdjcmVhdGVkX2J5JzsKCiAgICAgICAgJGZpZWxkc1tdID0gJ3VwZGF0ZWRfYXQgPSBOT1coKSc7CiAgICAgICAgJGV4Y2x1ZGVbXSA9ICd1cGRhdGVkX2F0JzsKCiAgICAgICAgJGZpZWxkc1tdID0gJ3VwZGF0ZWRfYnkgPSA/JzsKICAgICAgICAkdmFsdWVzW10gPSBnZXRfdXNlcmlkKGZhbHNlKTsKICAgICAgICAkZXhjbHVkZVtdID0gJ3VwZGF0ZWRfYnknOwoKICAgICAgICBmb3JlYWNoIChzdGF0aWM6OmdldFRhYmxlRmllbGRzKCkgYXMgJGZpZWxkX25hbWUgPT4gJGZpZWxkX3R5cGUpIHsKICAgICAgICAgICAgaWYgKCFpbl9hcnJheSgkZmllbGRfbmFtZSwgJGV4Y2x1ZGUpKSB7CiAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkZmllbGRfbmFtZSAuICcgPSA/JzsKICAgICAgICAgICAgICAgICR2YWx1ZXNbXSA9ICR0aGlzLT5fX2dldCgkZmllbGRfbmFtZSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRxdWVyeSAuPSAnIFNFVCAnIC4gaW1wbG9kZSgnLCAnLCAkZmllbGRzKSAuICcgV0hFUkUgaWQgPSA/JzsKCiAgICAgICAgJHZhbHVlc1tdID0gJHRoaXMtPmdldElkKCk7CgogICAgICAgICRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsKCiAgICAgICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0ltcG9zc2libGUgdG8gZXhlY3V0ZSBxdWVyeTogJyAuICRxdWVyeSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJHRoaXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGRlbGV0ZSgpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5nZXRJZCgpKSB7CiAgICAgICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgICAgICRxdWVyeSA9ICdERUxFVEUgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FIC4gJyBXSEVSRSBpZCA9ID8nOwogICAgICAgICAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHRoaXMtPmdldElkKCkpKTsKICAgICAgICAgICAgaWYgKCRyZXN1bHQgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTUNGQ3JpdGVyaWEgJGMKICAgICAqIEByZXR1cm4gYXJyYXkKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdChNQ0ZDcml0ZXJpYSAkYykKICAgIHsKICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICRjLT5idWlsZFF1ZXJ5KGNtc19kYl9wcmVmaXgoKSAuIHN0YXRpYzo6VEFCTEVfTkFNRSk7CiAgICAgICAgJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgkcXVlcnksICRjLT52YWx1ZXMpOwoKICAgICAgICAkZW50aXRpZXMgPSBhcnJheSgpOwoKICAgICAgICB3aGlsZSAoJHJlc3VsdCAmJiAoJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpKSB7CgogICAgICAgICAgICAkZW50aXRpZXNbXSA9IHN0YXRpYzo6cG9wdWxhdGUoJHJvdyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZW50aXRpZXM7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcGFyYW0gTUNGQ3JpdGVyaWEgJGMKICAgICAqIEByZXR1cm4gaW50CiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9Db3VudChNQ0ZDcml0ZXJpYSAkYykKICAgIHsKICAgICAgICAkZGIgPSBjbXNfdXRpbHM6OmdldF9kYigpOwogICAgICAgICRxdWVyeSA9ICRjLT5idWlsZFF1ZXJ5KGNtc19kYl9wcmVmaXgoKSAuIHN0YXRpYzo6VEFCTEVfTkFNRSk7CiAgICAgICAgJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgkcXVlcnksICRjLT52YWx1ZXMpOwoKICAgICAgICBpZigkcmVzdWx0KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIChpbnQpICRyZXN1bHQtPk51bVJvd3MoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBwb3B1bGF0ZSgkcm93LCAkZW50aXR5ID0gbnVsbCkKICAgIHsKICAgICAgICBpZihpc19udWxsKCRlbnRpdHkpKQogICAgICAgIHsKICAgICAgICAgICAgJGVudGl0eSA9IG5ldyBzdGF0aWMoKTsKICAgICAgICB9CiAgICAgICAgZm9yZWFjaCAoc3RhdGljOjpnZXRUYWJsZUZpZWxkcygpIGFzICRuYW1lID0+ICR0eXBlKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkcm93WyRuYW1lXSkpICRlbnRpdHktPl9fc2V0KCRuYW1lLCAkcm93WyRuYW1lXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkZW50aXR5OwogICAgfQoKICAgIC8qKgogICAgICogQHBhcmFtIE1DRkNyaXRlcmlhICRjCiAgICAgKiBAcmV0dXJuIG1peGVkfG51bGwKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdE9uZShNQ0ZDcml0ZXJpYSAkYykKICAgIHsKCiAgICAgICAgJGMtPnNldExpbWl0KDEpOwogICAgICAgICRyZXN1bHQgPSBzdGF0aWM6OmRvU2VsZWN0KCRjKTsKCiAgICAgICAgaWYgKGNvdW50KCRyZXN1bHQpID4gMCkgewogICAgICAgICAgICByZXNldCgkcmVzdWx0KTsKICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQoJHJlc3VsdCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmV0cmlldmVCeVBrKCRwaykKICAgIHsKICAgICAgICAkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwogICAgICAgICRjLT5hZGQoJ2lkJywgJHBrKTsKICAgICAgICByZXR1cm4gc3RhdGljOjpkb1NlbGVjdE9uZSgkYyk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZUJ5SWQoJGlkKQogICAgewogICAgICAgIHJldHVybiBzdGF0aWM6OnJldHJpZXZlQnlQaygkaWQpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlVGFibGUoKQogICAgewogICAgICAgICRkYiA9IGNtc191dGlsczo6Z2V0X2RiKCk7CiAgICAgICAgJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwogICAgICAgICRzcWwgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FLCBpbXBsb2RlKCcsJywgc3RhdGljOjpyZXRyaWV2ZVRhYmxlRmllbGRzKCkpKTsKICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwoKICAgICAgICAkaWR4bmFtZSA9IHN0cnRvbG93ZXIoc3RhdGljOjpUQUJMRV9OQU1FKSAuICdfaW5kZXhlcyc7CiAgICAgICAgJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKCRpZHhuYW1lLCBjbXNfZGJfcHJlZml4KCkgLiBzdGF0aWM6OlRBQkxFX05BTUUsIGltcGxvZGUoJywnLCBzdGF0aWM6OmdldFRhYmxlRmllbGRJbmRleGVzKCkpKTsKICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVUYWJsZSgpCiAgICB7CiAgICAgICAgJGRiID0gY21zX3V0aWxzOjpnZXRfZGIoKTsKICAgICAgICAkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiAgICAgICAgJHNxbCA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gc3RhdGljOjpUQUJMRV9OQU1FKTsKICAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwogICAgfQp9]]></data>
	</file>
	<file>
	  <filename>/lib/class.MCFPager.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERhdGU6IDEwLzAzLzE0CiAqIFRpbWU6IDEzOjA1CiAqIEF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyIDxqY2NAbW9ycmlzLWNoYXBtYW4uY29tPgogKi8KCmNsYXNzIE1DRlBhZ2VyIHsKCiAgICB2YXIgJGxpbWl0ID0gMDsKICAgIHZhciAkb2Zmc2V0ID0gMDsKCiAgICB2YXIgJHBhZ2UgPSAxOwogICAgdmFyICRwYWdlczsKICAgIHZhciAkdG90YWxfaXRlbXM7CiAgICB2YXIgJHNpemUgPSA1OwoKICAgIC8qKiBAdmFyIENNU01vZHVsZSAkbW9kdWxlICovCiAgICB2YXIgJGNtc21vZHVsZTsKICAgIHZhciAkcGFyYW1ldGVyczsKICAgIHZhciAkaWQ7CiAgICB2YXIgJHJldHVybmlkOwogICAgLyoqIEB2YXIgTUNGQ3JpdGVyaWEgJGNyaXRlcmlhICovCiAgICB2YXIgJGNyaXRlcmlhOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkY21zbW9kdWxlLCBNQ0ZDcml0ZXJpYSAkY3JpdGVyaWEsICRwYXJhbXMsICRpZCwgJHJldHVybmlkKQogICAgewogICAgICAgICR0aGlzLT5jbXNtb2R1bGUgPSAkY21zbW9kdWxlOwogICAgICAgICR0aGlzLT5jcml0ZXJpYSA9ICRjcml0ZXJpYTsKICAgICAgICAkdGhpcy0+aWQgPSAkaWQ7CiAgICAgICAgJHRoaXMtPnJldHVybmlkID0gJHJldHVybmlkOwoKICAgICAgICAkdGhpcy0+cGFyc2VQYXJhbWV0ZXJzKCRwYXJhbXMpOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gcGFyc2VQYXJhbWV0ZXJzKCRwYXJhbXMpCiAgICB7CiAgICAgICAgaWYoaXNzZXQoJHBhcmFtc1snbGltaXQnXSkpCiAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+bGltaXQgPSAkcGFyYW1zWydsaW1pdCddOwogICAgICAgICAgICB1bnNldCgkcGFyYW1zWydsaW1pdCddKTsKICAgICAgICB9CgogICAgICAgIGlmKGlzc2V0KCRwYXJhbXNbJ3BhZ2VyX2xpbWl0J10pKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPmxpbWl0ID0gJHBhcmFtc1sncGFnZXJfbGltaXQnXTsKICAgICAgICAgICAgdW5zZXQoJHBhcmFtc1sncGFnZXJfbGltaXQnXSk7CiAgICAgICAgfQoKICAgICAgICBpZihpc3NldCgkcGFyYW1zWydwYWdlcl9wYWdlJ10pKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPnBhZ2UgPSAkcGFyYW1zWydwYWdlcl9wYWdlJ107CiAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ3BhZ2VyX3BhZ2UnXSk7CiAgICAgICAgfQoKICAgICAgICBpZihpc3NldCgkcGFyYW1zWydwYWdlcl9zaXplJ10pKQogICAgICAgIHsKICAgICAgICAgICAgJHRoaXMtPnNpemUgPSAkcGFyYW1zWydwYWdlcl9zaXplJ107CiAgICAgICAgICAgIHVuc2V0KCRwYXJhbXNbJ3BhZ2VyX3NpemUnXSk7CiAgICAgICAgfQoKICAgICAgICAkdGhpcy0+cGFyYW1ldGVycyA9ICRwYXJhbXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50SXRlbXMoKQogICAgewogICAgICAgIGlmKGVtcHR5KCR0aGlzLT50b3RhbF9pdGVtcykpCiAgICAgICAgewogICAgICAgICAgICAkYyA9IGNsb25lKCR0aGlzLT5jcml0ZXJpYSk7CiAgICAgICAgICAgICRjLT5zZXRMaW1pdCgwKTsKICAgICAgICAgICAgJGMtPnNldE9mZnNldCgwKTsKCiAgICAgICAgICAgICR0aGlzLT50b3RhbF9pdGVtcyA9IGNhbGxfdXNlcl9mdW5jKCR0aGlzLT5jbXNtb2R1bGUtPkdldE9iamVjdE5hbWUoKSAuICc6OmRvQ291bnQnLCAkYyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkdGhpcy0+dG90YWxfaXRlbXM7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIGNvdW50UGFnZXMoKQogICAgewogICAgICAgIGlmKGVtcHR5KCR0aGlzLT5wYWdlcykpCiAgICAgICAgewogICAgICAgICAgICAkdGhpcy0+cGFnZXMgPSBjZWlsKCR0aGlzLT5jb3VudEl0ZW1zKCkgLyAkdGhpcy0+bGltaXQpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPnBhZ2VzOwogICAgfQoKICAgIHByaXZhdGUgZnVuY3Rpb24gaGFzVG9QYWdpbmF0ZSgpCiAgICB7CiAgICAgICAgcmV0dXJuICR0aGlzLT5jb3VudFBhZ2VzKCkgPiAxOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiB0b0FycmF5KCkKICAgIHsKICAgICAgICAkcGFnZXJfYXJyYXkgPSBhcnJheSgpOwogICAgICAgICRwYWdlcl9hcnJheVsnaGFzX3RvX3BhZ2luYXRlJ10gPSAkdGhpcy0+aGFzVG9QYWdpbmF0ZSgpOwogICAgICAgICRwYWdlcl9hcnJheVsnY3VycmVudCddID0gJHRoaXMtPnBhZ2U7CiAgICAgICAgJHBhZ2VyX2FycmF5Wyd0b3RhbF9wYWdlcyddID0gJHRoaXMtPmNvdW50UGFnZXMoKTsKICAgICAgICAkcGFnZXJfYXJyYXlbJ3RvdGFsX3Jlc3VsdHMnXSA9ICR0aGlzLT5jb3VudEl0ZW1zKCk7CgovLyAgICAgICAgJHBhZ2VyX2FycmF5WydwYWdlcyddID0gJHRoaXMtPmJ1aWxkUGFnZXNMaW5rcygkcGFnZXJfYXJyYXkpOwogICAgICAgICR0aGlzLT5idWlsZFBhZ2VzTGlua3MoJHBhZ2VyX2FycmF5KTsKCiAgICAgICAgcmV0dXJuICRwYWdlcl9hcnJheTsKICAgIH0KCiAgICBwcml2YXRlIGZ1bmN0aW9uIGJ1aWxkUGFnZXNMaW5rcygmJHBhZ2VyX2FycmF5KQogICAgewogICAgICAgICRwYWdlcyA9IGFycmF5KCk7CgogICAgICAgICRzdGFydCA9ICR0aGlzLT5wYWdlIC0gZmxvb3IoJHRoaXMtPnNpemUgLyAyKTsKICAgICAgICBpZigkc3RhcnQgPCAxKSAkc3RhcnQgPSAxOwoKICAgICAgICBpZigkc3RhcnQgPiAxKQogICAgICAgIHsKICAgICAgICAgICAgJHBhZ2VyX2FycmF5WydsZXNzJ10gPSAnLi4uJzsKICAgICAgICB9CgogICAgICAgICRlbmQgPSAkc3RhcnQgKyAkdGhpcy0+c2l6ZSAtIDE7CiAgICAgICAgaWYoJGVuZCA+ICR0aGlzLT5jb3VudFBhZ2VzKCkpCiAgICAgICAgewogICAgICAgICAgICAkZW5kID0gJHRoaXMtPmNvdW50UGFnZXMoKTsKICAgICAgICB9CgogICAgICAgIGZvcigkaSA9ICRzdGFydDsgJGkgPD0gJGVuZDsgJGkrKykKICAgICAgICB7CiAgICAgICAgICAgICRwYWdlcl9hcnJheVsncGFnZXMnXVtdID0gKCRpID09ICR0aGlzLT5wYWdlKSA/ICRpIDogJHRoaXMtPmNtc21vZHVsZS0+Y3JlYXRlTGluaygkdGhpcy0+aWQsICdkZWZhdWx0JywgJHRoaXMtPnJldHVybmlkLCAkaSwKICAgICAgICAgICAgICAgICR0aGlzLT5jbXNtb2R1bGUtPlBhcmFtc0ZvckxpbmsoJHRoaXMtPnBhcmFtZXRlcnMsIGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAncGFnZXJfbGltaXQnID0+ICR0aGlzLT5saW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZ2VyX3NpemUnID0+ICR0aGlzLT5zaXplLAogICAgICAgICAgICAgICAgICAgICAgICAncGFnZXJfcGFnZScgPT4gJGkKICAgICAgICAgICAgICAgICAgICApKQogICAgICAgICAgICAgICAgLCAnJyk7CiAgICAgICAgfQoKICAgICAgICBpZigkZW5kIDwgJHRoaXMtPmNvdW50UGFnZXMoKSkKICAgICAgICB7CiAgICAgICAgICAgICRwYWdlcl9hcnJheVsnbW9yZSddID0gJy4uLic7CiAgICAgICAgfQoKCgogICAgICAgICRwYWdlcl9hcnJheVsnZmlyc3RfcGFnZSddID0gKCR0aGlzLT5wYWdlID4gMSkgPyAkdGhpcy0+Y21zbW9kdWxlLT5jcmVhdGVMaW5rKCR0aGlzLT5pZCwgJ2RlZmF1bHQnLCAkdGhpcy0+cmV0dXJuaWQsICcnLAogICAgICAgICAgICAkdGhpcy0+Y21zbW9kdWxlLT5QYXJhbXNGb3JMaW5rKCR0aGlzLT5wYXJhbWV0ZXJzLCBhcnJheSgKCiAgICAgICAgICAgICAgICAgICAgJ3BhZ2VyX2xpbWl0JyA9PiAkdGhpcy0+bGltaXQsCiAgICAgICAgICAgICAgICAgICAgJ3BhZ2VyX3NpemUnID0+ICR0aGlzLT5zaXplLAogICAgICAgICAgICAgICAgICAgICdwYWdlcl9wYWdlJyA9PiAxKSkKICAgICAgICAgICAgLCAnJywgdHJ1ZSwgdHJ1ZSkgOiBmYWxzZTsKCiAgICAgICAgJHBhZ2VyX2FycmF5WydwcmV2aW91c19wYWdlJ10gPSAoJHRoaXMtPnBhZ2UgPiAxKSA/ICR0aGlzLT5jbXNtb2R1bGUtPmNyZWF0ZUxpbmsoJHRoaXMtPmlkLCAnZGVmYXVsdCcsICR0aGlzLT5yZXR1cm5pZCwgJycsCiAgICAgICAgICAgICR0aGlzLT5jbXNtb2R1bGUtPlBhcmFtc0ZvckxpbmsoJHRoaXMtPnBhcmFtZXRlcnMsIGFycmF5KAoKICAgICAgICAgICAgICAgICAgICAncGFnZXJfbGltaXQnID0+ICR0aGlzLT5saW1pdCwKICAgICAgICAgICAgICAgICAgICAncGFnZXJfc2l6ZScgPT4gJHRoaXMtPnNpemUsCiAgICAgICAgICAgICAgICAgICAgJ3BhZ2VyX3BhZ2UnID0+ICR0aGlzLT5wYWdlIC0gMSkpCiAgICAgICAgICAgICwgJycsIHRydWUsIHRydWUpIDogZmFsc2U7CgogICAgICAgICRwYWdlcl9hcnJheVsnbmV4dF9wYWdlJ10gPSAoJHRoaXMtPnBhZ2UgPCAkdGhpcy0+Y291bnRQYWdlcygpKSA/ICR0aGlzLT5jbXNtb2R1bGUtPmNyZWF0ZUxpbmsoJHRoaXMtPmlkLCdkZWZhdWx0JywgJHRoaXMtPnJldHVybmlkLCAnJywKICAgICAgICAgICAgJHRoaXMtPmNtc21vZHVsZS0+UGFyYW1zRm9yTGluaygkdGhpcy0+cGFyYW1ldGVycywgYXJyYXkoCgogICAgICAgICAgICAgICAgICAgICdwYWdlcl9saW1pdCcgPT4gJHRoaXMtPmxpbWl0LAogICAgICAgICAgICAgICAgICAgICdwYWdlcl9zaXplJyA9PiAkdGhpcy0+c2l6ZSwKICAgICAgICAgICAgICAgICAgICAncGFnZXJfcGFnZScgPT4gJHRoaXMtPnBhZ2UgKyAxKSkKICAgICAgICAgICAgLCAnJywgdHJ1ZSwgdHJ1ZSkgOiBmYWxzZTsKCiAgICAgICAgJHBhZ2VyX2FycmF5WydsYXN0X3BhZ2UnXSA9ICgkdGhpcy0+cGFnZSA8ICR0aGlzLT5jb3VudFBhZ2VzKCkpID8gJHRoaXMtPmNtc21vZHVsZS0+Y3JlYXRlTGluaygkdGhpcy0+aWQsJ2RlZmF1bHQnLCAkdGhpcy0+cmV0dXJuaWQsICcnLAogICAgICAgICAgICAkdGhpcy0+Y21zbW9kdWxlLT5QYXJhbXNGb3JMaW5rKCR0aGlzLT5wYXJhbWV0ZXJzLCBhcnJheSgKICAgICAgICAgICAgICAgICAgICAncGFnZXJfbGltaXQnID0+ICR0aGlzLT5saW1pdCwKICAgICAgICAgICAgICAgICAgICAncGFnZXJfc2l6ZScgPT4gJHRoaXMtPnNpemUsCiAgICAgICAgICAgICAgICAgICAgJ3BhZ2VyX3BhZ2UnID0+ICR0aGlzLT5jb3VudFBhZ2VzKCkpKQogICAgICAgICAgICAsICcnLCB0cnVlLCB0cnVlKSA6IGZhbHNlOwoKICAgICAgICByZXR1cm4gJHBhZ2VyX2FycmF5OwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPZmZzZXQoKQogICAgewogICAgICAgIHJldHVybiAoJHRoaXMtPnBhZ2UgLSAxKSAqICR0aGlzLT5saW1pdDsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0TGltaXQoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+bGltaXQ7CiAgICB9Cn0=]]></data>
	</file>
	<file>
	  <filename>/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIsIEp1bmUgMTk5MQoKIENvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDxodHRwOi8vZnNmLm9yZy8+CiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCiBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMKIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZWFtYmxlCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXIKZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZQpzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiAgVGhpcwpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uJ3Mgc29mdHdhcmUgYW5kIHRvIGFueSBvdGhlciBwcm9ncmFtIHdob3NlIGF1dGhvcnMgY29tbWl0IHRvCnVzaW5nIGl0LiAgKFNvbWUgb3RoZXIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIHNvZnR3YXJlIGlzIGNvdmVyZWQgYnkKdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbnN0ZWFkLikgIFlvdSBjYW4gYXBwbHkgaXQgdG8KeW91ciBwcm9ncmFtcywgdG9vLgoKICBXaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQKaWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQKaW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkCmFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4KVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UKZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdAp5b3UgaGF2ZS4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZSBvciBjYW4gZ2V0IHRoZQpzb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleSBrbm93IHRoZWlyCnJpZ2h0cy4KCiAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczogKDEpIGNvcHlyaWdodCB0aGUgc29mdHdhcmUsIGFuZAooMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LApkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvZnR3YXJlLgoKICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbgp0aGF0IGV2ZXJ5b25lIHVuZGVyc3RhbmRzIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZQpzb2Z0d2FyZS4gIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2UKd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28KdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwKYXV0aG9ycycgcmVwdXRhdGlvbnMuCgogIEZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlCnBhdGVudHMuICBXZSB3aXNoIHRvIGF2b2lkIHRoZSBkYW5nZXIgdGhhdCByZWRpc3RyaWJ1dG9ycyBvZiBhIGZyZWUKcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQpwcm9ncmFtIHByb3ByaWV0YXJ5LiAgVG8gcHJldmVudCB0aGlzLCB3ZSBoYXZlIG1hZGUgaXQgY2xlYXIgdGhhdCBhbnkKcGF0ZW50IG11c3QgYmUgbGljZW5zZWQgZm9yIGV2ZXJ5b25lJ3MgZnJlZSB1c2Ugb3Igbm90IGxpY2Vuc2VkIGF0IGFsbC4KCiAgVGhlIHByZWNpc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQKbW9kaWZpY2F0aW9uIGZvbGxvdy4KCiAgICAgICAgICAgICAgICAgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LApyZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoKdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwKZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIKbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbgp0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KCkFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQppcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtIChpbmRlcGVuZGVudCBvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgpXaGV0aGVyIHRoYXQgaXMgdHJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCnNvdXJjZSBjb2RlIGFzIHlvdSByZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQpjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCmNvcHlyaWdodCBub3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKbm90aWNlcyB0aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OwphbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlCmFsb25nIHdpdGggdGhlIFByb2dyYW0uCgpZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KCiAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgpvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQphYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcwogICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9yIHB1Ymxpc2gsIHRoYXQgaW4KICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQogICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIHdob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5CiAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3RhcnRlZCBydW5uaW5nIGZvciBzdWNoCiAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCiAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQogICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgogICAgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKICAgIExpY2Vuc2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CiAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uCiAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKClRoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKaWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwKYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluCnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgoKVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0CnlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0bwpleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IKY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KCkluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0Kd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mCmEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyCnRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuCgogIDMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LAp1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YKU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUKICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucwogICAgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsCgogICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUKICAgIHllYXJzLCB0byBnaXZlIGFueSB0aGlyZCBwYXJ0eSwgZm9yIGEgY2hhcmdlIG5vIG1vcmUgdGhhbiB5b3VyCiAgICBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlCiAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlCiAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAoKICAgIGMpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgcmVjZWl2ZWQgYXMgdG8gdGhlIG9mZmVyCiAgICB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuICAoVGhpcyBhbHRlcm5hdGl2ZSBpcwogICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UKICAgIHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2gKICAgIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQoKVGhlIHNvdXJjZSBjb2RlIGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrIGZvcgptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZQpjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQphc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8KY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiAgSG93ZXZlciwgYXMgYQpzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUKYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkKZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUKb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQKaXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLgoKSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZwphY2Nlc3MgdG8gY29weSBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50CmFjY2VzcyB0byBjb3B5IHRoZSBzb3VyY2UgY29kZSBmcm9tIHRoZSBzYW1lIHBsYWNlIGNvdW50cyBhcwpkaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QKY29tcGVsbGVkIHRvIGNvcHkgdGhlIHNvdXJjZSBhbG9uZyB3aXRoIHRoZSBvYmplY3QgY29kZS4KCiAgNC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtCmV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQKb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzCnZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4KSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIKdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2gKcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgoKICA1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3QKc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IKZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlCnByb2hpYml0ZWQgYnkgbGF3IGlmIHlvdSBkbyBub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkKbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlClByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kCmFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcKdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCgogIDYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUKb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bwp0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlcgpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uCllvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvCnRoaXMgTGljZW5zZS4KCiAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudAppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLApjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QKZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QKZGlzdHJpYnV0ZSBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91Cm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQKbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieQphbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bwpyZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgoKSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyCmFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8KYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIKY2lyY3Vtc3RhbmNlcy4KCkl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkKcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkKc3VjaCBjbGFpbXM7IHRoaXMgc2VjdGlvbiBoYXMgdGhlIHNvbGUgcHVycG9zZSBvZiBwcm90ZWN0aW5nIHRoZQppbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMKaW1wbGVtZW50ZWQgYnkgcHVibGljIGxpY2Vuc2UgcHJhY3RpY2VzLiAgTWFueSBwZW9wbGUgaGF2ZSBtYWRlCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQKdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQKc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZwp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QKaW1wb3NlIHRoYXQgY2hvaWNlLgoKVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvCmJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLgoKICA4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbgpjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUKb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQptYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcKdGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZwpjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKdGhlIGxpbWl0YXRpb24gYXMgaWYgd3JpdHRlbiBpbiB0aGUgYm9keSBvZiB0aGlzIExpY2Vuc2UuCgogIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zCm9mIHRoZSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbApiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCgpFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBQcm9ncmFtCnNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55CmxhdGVyIHZlcnNpb24iLCB5b3UgaGF2ZSB0aGUgb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMKZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZgp0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24uCgogIDEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUKcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvcgp0byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUKU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzCm1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gIE91ciBkZWNpc2lvbiB3aWxsIGJlIGd1aWRlZCBieSB0aGUgdHdvIGdvYWxzCm9mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQKb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nIGFuZCByZXVzZSBvZiBzb2Z0d2FyZSBnZW5lcmFsbHkuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgTk8gV0FSUkFOVFkKCiAgMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZCkZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTgpPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUiBPVEhFUiBQQVJUSUVTClBST1ZJREUgVEhFIFBST0dSQU0gIkFTIElTIiBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VECk9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCk1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBUSEUgRU5USVJFIFJJU0sgQVMKVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiAgU0hPVUxEIFRIRQpQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywKUkVQQUlSIE9SIENPUlJFQ1RJT04uCgogIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUgpSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLApJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcKT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRApUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkKWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIKUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFClBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4KCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUwoKICAgICAgICAgICAgSG93IHRvIEFwcGx5IFRoZXNlIFRlcm1zIHRvIFlvdXIgTmV3IFByb2dyYW1zCgogIElmIHlvdSBkZXZlbG9wIGEgbmV3IHByb2dyYW0sIGFuZCB5b3Ugd2FudCBpdCB0byBiZSBvZiB0aGUgZ3JlYXRlc3QKcG9zc2libGUgdXNlIHRvIHRoZSBwdWJsaWMsIHRoZSBiZXN0IHdheSB0byBhY2hpZXZlIHRoaXMgaXMgdG8gbWFrZSBpdApmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4KCiAgVG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpjb252ZXkgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICB7ZGVzY3JpcHRpb259CiAgICBDb3B5cmlnaHQgKEMpIHt5ZWFyfSAge2Z1bGxuYW1lfQoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwogICAgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKICAgIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCgpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4KCklmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMKd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKCiAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3IKICAgIEdub21vdmlzaW9uIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQpwYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5CmJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZQptb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgoKWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXIKc2Nob29sLCBpZiBhbnksIHRvIHNpZ24gYSAiY29weXJpZ2h0IGRpc2NsYWltZXIiIGZvciB0aGUgcHJvZ3JhbSwgaWYKbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOgoKICBZb3lvZHluZSwgSW5jLiwgaGVyZWJ5IGRpc2NsYWltcyBhbGwgY29weXJpZ2h0IGludGVyZXN0IGluIHRoZSBwcm9ncmFtCiAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuCgogIHtzaWduYXR1cmUgb2YgVHkgQ29vbn0sIDEgQXByaWwgMTk4OQogIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlCgpUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtIGludG8KcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkKY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlCmxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgo=]]></data>
	</file>
	<file>
	  <filename>/MCFramework.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERhdGU6IDA0LzAyLzE0CiAqIFRpbWU6IDE2OjQ4CiAqIEF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyIDxqY2NAbW9ycmlzLWNoYXBtYW4uY29tPgogKi8KCmNsYXNzIE1DRnJhbWV3b3JrIGV4dGVuZHMgQ01TTW9kdWxlIHsKCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICAgIHsKICAgICAgICByZXR1cm4gJ00mQyBGcmFtZXdvcmsnOwogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKICAgIHsKICAgICAgICByZXR1cm4gJzAuMC42JzsKICAgIH0KCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkKICAgIHsKICAgICAgICByZXR1cm4gJ0plYW4tQ2hyaXN0b3BoZSBDdXZlbGllcic7CiAgICB9CgogICAgcHVibGljIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICAgIHsKICAgICAgICByZXR1cm4gJ2pjY0Btb3JyaXMtY2hhcG1hbi5jb20nOwogICAgfQp9IA==]]></data>
	</file>
	<file>
	  <filename>/README.md</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Y21zbXMtbWNmcmFtZXdvcmsKPT09PT09PT09PT09PT09PT0KCk1DRnJhbWV3b3JrIGlzIGEgcmVwb3NpdG9yeSBvZiBvYmplY3RzIGFuZCB0b29scyB1c2VkIGluIHZhcmlvdXMgTSZhbXA7QyBNb2R1bGVzIGZvciBDTVMgTWFkZSBTaW1wbGUK]]></data>
	</file>
</module>
