1778692624
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A5d5471892951ccd88dcf981ed037e6f8-f75be61b50a7005800ce4f0b8f3d2c09
s:41364:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjEyOiJWZXJzaW9uMi5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjM5OiJccGhwRG9jdW1lbnRvclxDb25maWd1cmF0aW9uXERlZmluaXRpb24iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozOToiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTA6IkRlZmluaXRpb24iO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbmNsdWRlcyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBmdW5jdGlvbnMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY29uc3RhbnRzIjthOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNsYXNzZXMiO2E6MTp7czo0ODoiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uXFZlcnNpb24yIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTU6e3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjI6e3M6NTk6IlxTeW1mb255XENvbXBvbmVudFxDb25maWdcRGVmaW5pdGlvblxDb25maWd1cmF0aW9uSW50ZXJmYWNlIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTk6IlxTeW1mb255XENvbXBvbmVudFxDb25maWdcRGVmaW5pdGlvblxDb25maWd1cmF0aW9uSW50ZXJmYWNlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjI6IkNvbmZpZ3VyYXRpb25JbnRlcmZhY2UiO31zOjUwOiJccGhwRG9jdW1lbnRvclxDb25maWd1cmF0aW9uXERlZmluaXRpb25cVXBncmFkYWJsZSI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUwOiJccGhwRG9jdW1lbnRvclxDb25maWd1cmF0aW9uXERlZmluaXRpb25cVXBncmFkYWJsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEwOiJVcGdyYWRhYmxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjE6e3M6NzA6IlxwaHBEb2N1bWVudG9yXENvbmZpZ3VyYXRpb25cRGVmaW5pdGlvblxWZXJzaW9uMjo6JGRlZmF1bHRUZW1wbGF0ZU5hbWUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkiOjE0OntzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MzY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo3MDoiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uXFZlcnNpb24yOjokZGVmYXVsdFRlbXBsYXRlTmFtZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE5OiJkZWZhdWx0VGVtcGxhdGVOYW1lIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVmFyXyI6NDp7czo3OiIAKgBuYW1lIjtzOjM6InZhciI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6OTI6IlRoaXMgaXMgaW5qZWN0ZWQgc28gdGhhdCB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBjYW4gYmUgZGVmaW5lZCBnbG9iYWxseSBpbiB0aGUgYXBwIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czoxNToiACoAdmFyaWFibGVOYW1lIjtzOjA6IiI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjM4OiJwaHBEb2N1bWVudG9yXENvbmZpZ3VyYXRpb25cRGVmaW5pdGlvbiI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6Mzp7czoyMDoiU3ltZm9ueUNvbmZpZ0ZhY3RvcnkiO3M6NDg6InBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxTeW1mb255Q29uZmlnRmFjdG9yeSI7czoxMToiVHJlZUJ1aWxkZXIiO3M6NTU6IlN5bWZvbnlcQ29tcG9uZW50XENvbmZpZ1xEZWZpbml0aW9uXEJ1aWxkZXJcVHJlZUJ1aWxkZXIiO3M6MjI6IkNvbmZpZ3VyYXRpb25JbnRlcmZhY2UiO3M6NTg6IlN5bWZvbnlcQ29tcG9uZW50XENvbmZpZ1xEZWZpbml0aW9uXENvbmZpZ3VyYXRpb25JbnRlcmZhY2UiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBkZWZhdWx0IjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHN0YXRpYyI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAcmVhZE9ubHkiO2I6MTtzOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBob29rcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAdmlydHVhbCI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AG1ldGFkYXRhIjthOjA6e31zOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjQ6e3M6NjM6IlxwaHBEb2N1bWVudG9yXENvbmZpZ3VyYXRpb25cRGVmaW5pdGlvblxWZXJzaW9uMjo6X19jb25zdHJ1Y3QoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTk6ImRlZmF1bHRUZW1wbGF0ZU5hbWUiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjg1MTt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxMDY2O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjYzOiJccGhwRG9jdW1lbnRvclxDb25maWd1cmF0aW9uXERlZmluaXRpb25cVmVyc2lvbjI6Ol9fY29uc3RydWN0KCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMToiX19jb25zdHJ1Y3QiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3MjoiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uXFZlcnNpb24yOjpnZXRDb25maWdUcmVlQnVpbGRlcigpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTA3Mzt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxNTE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NjQzNzt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NjoiXFN5bWZvbnlcQ29tcG9uZW50XENvbmZpZ1xEZWZpbml0aW9uXEJ1aWxkZXJcVHJlZUJ1aWxkZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMToiVHJlZUJ1aWxkZXIiO319czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NzI6IlxwaHBEb2N1bWVudG9yXENvbmZpZ3VyYXRpb25cRGVmaW5pdGlvblxWZXJzaW9uMjo6Z2V0Q29uZmlnVHJlZUJ1aWxkZXIoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIwOiJnZXRDb25maWdUcmVlQnVpbGRlciI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjU5OiJccGhwRG9jdW1lbnRvclxDb25maWd1cmF0aW9uXERlZmluaXRpb25cVmVyc2lvbjI6OnVwZ3JhZGUoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjY6InZhbHVlcyI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTYwO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjY2NDE7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MjAzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjg2Nzk7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1OToiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uXFZlcnNpb24yOjp1cGdyYWRlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo3OiJ1cGdyYWRlIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6ODM6IlVwZ3JhZGVzIHRoZSB2ZXJzaW9uIDIgY29uZmlndXJhdGlvbiB0byB0aGUgdmVyc2lvbiAzIHByZS1ub3JtYWxpemVkIGNvbmZpZ3VyYXRpb24uIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjI6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU2OiJccGhwRG9jdW1lbnRvclxDb25maWd1cmF0aW9uXERlZmluaXRpb25cQ29uZmlndXJhdGlvbk1hcCI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJDb25maWd1cmF0aW9uTWFwIjt9fXM6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6NjoidmFsdWVzIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO31pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2MToiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uXFVwZ3JhZGVkQ29uZmlndXJhdGlvbiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjIxOiJVcGdyYWRlZENvbmZpZ3VyYXRpb24iO319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NDc7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6OTQ6IlxwaHBEb2N1bWVudG9yXENvbmZpZ3VyYXRpb25cRGVmaW5pdGlvblxWZXJzaW9uMjo6Y29udmVydFNpbmdsZVN0YXJQYXRoRW5kaW5nSW50b0dsb2JQYXR0ZXJuKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToxOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjQ6InBhdGgiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIxODtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo5MzkxO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIyNTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo5NjIwO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo5NDoiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uXFZlcnNpb24yOjpjb252ZXJ0U2luZ2xlU3RhclBhdGhFbmRpbmdJbnRvR2xvYlBhdHRlcm4oKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQyOiJjb252ZXJ0U2luZ2xlU3RhclBhdGhFbmRpbmdJbnRvR2xvYlBhdHRlcm4iO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NDc6Ik1ha2UgYSBgLypgIGVuZGluZyBiYWNrd2FyZHMgY29tcGF0aWJsZSBmb3IgdjIuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ4NToiSW4gcGhwRG9jdW1lbnRvciAzIHdlIHN0YXJ0ZWQgYWRvcHRpbmcgdGhlIGdsb2IgcGF0dGVybiB3aXRoIGdsb2JzdGFyIGV4dGVuc2lvbiB0byBwcm9wZXJseSBkZWZpbmUgcGF0dGVybnMKbWF0Y2hpbmcgZmlsZSBwYXRocy4gVGhpcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBwaHBEb2N1bWVudG9yIDIsIHRoYXQgaW50ZXJwcmV0ZWQgYSAqIHRvIG1lYW4gYW55IG51bWJlciBvZgpjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgdGhlIHBhdGggc2VwYXJhdG9yLgoKVG8gZW5zdXJlIHRoaXMgYmVoYXZpb3VyIGlzIHByb3Blcmx5IHRyYW5zbGF0ZWQsIHRoaXMgbWV0aG9kIHdpbGwgZGV0ZWN0IGlmIGEgcGF0aCBlbmRzIHdpdGggLyosIGFuZCBpZiBpdCBpcwpub3QgYSBnbG9ic3RhciBwYXR0ZXJuLCB3ZSBjb252ZXJ0IGl0IHRvIG9uZS4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvdXIgaW4gcGhwRG9jdW1lbnRvciAyIHdpdGhvdXQgdXNlcgppbnRlcmFjdGlvbi4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0MzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcTGluayI6Mzp7czo3OiIAKgBuYW1lIjtzOjQ6ImxpbmsiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtOO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xMaW5rAGxpbmsiO3M6NzI6Imh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmFzaC9tYW51YWwvaHRtbF9ub2RlL1BhdHRlcm4tTWF0Y2hpbmcuaHRtbCI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NDc7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AdXNlZFRyYWl0cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozMjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIyNjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo0ODoiXHBocERvY3VtZW50b3JcQ29uZmlndXJhdGlvblxEZWZpbml0aW9uXFZlcnNpb24yIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoiVmVyc2lvbjIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToyOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjEwOiJwc2FsbS10eXBlIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czozMToiQ29uZmlndXJhdGlvbk1hcCA9IGFycmF5PG1peGVkPiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MTtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6MTc6InBzYWxtLWltcG9ydC10eXBlIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo1NjoiQmFzZUNvbmZpZ3VyYXRpb24gZnJvbSBWZXJzaW9uMyBhcyBVcGdyYWRlZENvbmZpZ3VyYXRpb24iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjQ3O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHBhcmVudCI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MTtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcmVhZE9ubHkiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhdHRyaWJ1dGVzIjthOjA6e319fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiZjc1YmU2MWI1MGE3MDA1ODAwY2U0ZjBiOGYzZDJjMDkiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo5MDoidmVuZG9yL3BocGRvY3VtZW50b3IvcGhwZG9jdW1lbnRvci9zcmMvcGhwRG9jdW1lbnRvci9Db25maWd1cmF0aW9uL0RlZmluaXRpb24vVmVyc2lvbjIucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czo5NjI0OiI8P3BocAoKZGVjbGFyZShzdHJpY3RfdHlwZXM9MSk7CgovKioKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgcGhwRG9jdW1lbnRvci4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqCiAqIEBsaW5rIGh0dHBzOi8vcGhwZG9jLm9yZwogKi8KCm5hbWVzcGFjZSBwaHBEb2N1bWVudG9yXENvbmZpZ3VyYXRpb25cRGVmaW5pdGlvbjsKCnVzZSBwaHBEb2N1bWVudG9yXENvbmZpZ3VyYXRpb25cU3ltZm9ueUNvbmZpZ0ZhY3Rvcnk7CnVzZSBTeW1mb255XENvbXBvbmVudFxDb25maWdcRGVmaW5pdGlvblxCdWlsZGVyXFRyZWVCdWlsZGVyOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcQ29uZmlnXERlZmluaXRpb25cQ29uZmlndXJhdGlvbkludGVyZmFjZTsKCnVzZSBmdW5jdGlvbiBhcnJheV9tYXA7CnVzZSBmdW5jdGlvbiBhcnJheV9tZXJnZTsKdXNlIGZ1bmN0aW9uIGFycmF5X3ZhbHVlczsKdXNlIGZ1bmN0aW9uIGV4cGxvZGU7CnVzZSBmdW5jdGlvbiBnZXRjd2Q7CnVzZSBmdW5jdGlvbiBpbXBsb2RlOwp1c2UgZnVuY3Rpb24gc3RyX2VuZHNfd2l0aDsKCi8qKgogKiBAcHNhbG0tdHlwZSBDb25maWd1cmF0aW9uTWFwID0gYXJyYXk8bWl4ZWQ+CiAqIEBwc2FsbS1pbXBvcnQtdHlwZSBCYXNlQ29uZmlndXJhdGlvbiBmcm9tIFZlcnNpb24zIGFzIFVwZ3JhZGVkQ29uZmlndXJhdGlvbgogKi8KZmluYWwgY2xhc3MgVmVyc2lvbjIgaW1wbGVtZW50cyBDb25maWd1cmF0aW9uSW50ZXJmYWNlLCBVcGdyYWRhYmxlCnsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgKICAgICAgICAvKiogQHZhciBzdHJpbmcgVGhpcyBpcyBpbmplY3RlZCBzbyB0aGF0IHRoZSBuYW1lIG9mIHRoZSBkZWZhdWx0IHRlbXBsYXRlIGNhbiBiZSBkZWZpbmVkIGdsb2JhbGx5IGluIHRoZSBhcHAgKi8KICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmluZyAkZGVmYXVsdFRlbXBsYXRlTmFtZSwKICAgICkgewogICAgfQoKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25maWdUcmVlQnVpbGRlcigpOiBUcmVlQnVpbGRlcgogICAgewogICAgICAgICR0cmVlYnVpbGRlciA9IG5ldyBUcmVlQnVpbGRlcigncGhwZG9jdW1lbnRvcicpOwoKICAgICAgICAkdHJlZWJ1aWxkZXItPmdldFJvb3ROb2RlKCkKICAgICAgICAgICAgLT5hZGREZWZhdWx0c0lmTm90U2V0KCkKICAgICAgICAgICAgLT5jaGlsZHJlbigpCiAgICAgICAgICAgICAgICAtPnNjYWxhck5vZGUoU3ltZm9ueUNvbmZpZ0ZhY3Rvcnk6OkZJRUxEX0NPTkZJR19WRVJTSU9OKS0+ZGVmYXVsdFZhbHVlKCcyJyktPmVuZCgpCiAgICAgICAgICAgICAgICAtPnNjYWxhck5vZGUoJ3RpdGxlJyktPmRlZmF1bHRWYWx1ZSgnRG9jdW1lbnRhdGlvbicpLT5lbmQoKQogICAgICAgICAgICAgICAgLT5hcnJheU5vZGUoJ3BhcnNlcicpCiAgICAgICAgICAgICAgICAgICAgLT5hZGREZWZhdWx0c0lmTm90U2V0KCkKICAgICAgICAgICAgICAgICAgICAtPm5vcm1hbGl6ZUtleXMoZmFsc2UpCiAgICAgICAgICAgICAgICAgICAgLT5jaGlsZHJlbigpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+c2NhbGFyTm9kZSgnZGVmYXVsdC1wYWNrYWdlLW5hbWUnKS0+ZGVmYXVsdFZhbHVlKCdBcHBsaWNhdGlvbicpLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAtPnNjYWxhck5vZGUoJ3Zpc2liaWxpdHknKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5kZWZhdWx0VmFsdWUoaW1wbG9kZSgnLCcsIFsncHVibGljJywgJ3Byb3RlY3RlZCcsICdwcml2YXRlJ10pKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5pbmZvKCdXaGF0IGlzIHRoZSBkZWVwZXN0IGxldmVsIG9mIHZpc2liaWxpdHkgdG8gaW5jbHVkZSBpbiB0aGUgZG9jdW1lbnRhdGlvbj8nKQogICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+c2NhbGFyTm9kZSgndGFyZ2V0JyktPmRlZmF1bHRWYWx1ZSgnYnVpbGQvYXBpLWNhY2hlJyktPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+c2NhbGFyTm9kZSgnZW5jb2RpbmcnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5kZWZhdWx0VmFsdWUoJ3V0Zi04JykKICAgICAgICAgICAgICAgICAgICAgICAgLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgnZXh0ZW5zaW9ucycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmFkZERlZmF1bHRzSWZOb3RTZXQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5maXhYbWxDb25maWcoJ2V4dGVuc2lvbicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmNoaWxkcmVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgnZXh0ZW5zaW9ucycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZGVmYXVsdFZhbHVlKFsncGhwJywgJ3BocDMnLCAncGh0bWwnXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5iZWZvcmVOb3JtYWxpemF0aW9uKCktPmNhc3RUb0FycmF5KCktPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+cHJvdG90eXBlKCdzY2FsYXInKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgLT5hcnJheU5vZGUoJ21hcmtlcnMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5hZGREZWZhdWx0c0lmTm90U2V0KCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Zml4WG1sQ29uZmlnKCdpdGVtJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Y2hpbGRyZW4oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+YXJyYXlOb2RlKCdpdGVtcycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZGVmYXVsdFZhbHVlKFsnVE9ETycsICdGSVhNRSddKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmJlZm9yZU5vcm1hbGl6YXRpb24oKS0+Y2FzdFRvQXJyYXkoKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5wcm90b3R5cGUoJ3NjYWxhcicpLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgLT5lbmQoKQogICAgICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgIC0+YXJyYXlOb2RlKCd0cmFuc2Zvcm1lcicpCiAgICAgICAgICAgICAgICAgICAgLT5hZGREZWZhdWx0c0lmTm90U2V0KCkKICAgICAgICAgICAgICAgICAgICAtPmNoaWxkcmVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgLT5zY2FsYXJOb2RlKCd0YXJnZXQnKS0+ZGVmYXVsdFZhbHVlKCdidWlsZC9hcGknKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgnbG9nZ2luZycpCiAgICAgICAgICAgICAgICAgICAgLT5hZGREZWZhdWx0c0lmTm90U2V0KCkKICAgICAgICAgICAgICAgICAgICAtPmNoaWxkcmVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgLT5zY2FsYXJOb2RlKCdsZXZlbCcpLT5kZWZhdWx0VmFsdWUoJ2Vycm9yJyktPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgLT5lbmQoKQogICAgICAgICAgICAgICAgLT5lbmQoKQogICAgICAgICAgICAgICAgLT5hcnJheU5vZGUoJ3RyYW5zZm9ybWF0aW9ucycpCiAgICAgICAgICAgICAgICAgICAgLT5hZGREZWZhdWx0c0lmTm90U2V0KCkKICAgICAgICAgICAgICAgICAgICAtPmZpeFhtbENvbmZpZygndGVtcGxhdGUnKQogICAgICAgICAgICAgICAgICAgIC0+Y2hpbGRyZW4oKQogICAgICAgICAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgndGVtcGxhdGVzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+Zml4WG1sQ29uZmlnKCdwYXJhbWV0ZXInKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT51c2VBdHRyaWJ1dGVBc0tleSgnbmFtZScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmRlZmF1bHRWYWx1ZShbJHRoaXMtPmRlZmF1bHRUZW1wbGF0ZU5hbWUgPT4gWyduYW1lJyA9PiAkdGhpcy0+ZGVmYXVsdFRlbXBsYXRlTmFtZV1dKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5wcm90b3R5cGUoJ2FycmF5JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmNoaWxkcmVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5zY2FsYXJOb2RlKCdsb2NhdGlvbicpLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgncGFyYW1ldGVycycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmNoaWxkcmVuKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnNjYWxhck5vZGUoJ25hbWUnKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnNjYWxhck5vZGUoJ3ZhbHVlJyktPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgnZmlsZXMnKQogICAgICAgICAgICAgICAgICAgIC0+YWRkRGVmYXVsdHNJZk5vdFNldCgpCiAgICAgICAgICAgICAgICAgICAgLT5maXhYbWxDb25maWcoJ2ZpbGUnLCAnZmlsZXMnKQogICAgICAgICAgICAgICAgICAgIC0+Zml4WG1sQ29uZmlnKCdkaXJlY3RvcnknLCAnZGlyZWN0b3JpZXMnKQogICAgICAgICAgICAgICAgICAgIC0+Zml4WG1sQ29uZmlnKCdpZ25vcmUnLCAnaWdub3JlcycpCiAgICAgICAgICAgICAgICAgICAgLT5ub3JtYWxpemVLZXlzKGZhbHNlKQogICAgICAgICAgICAgICAgICAgIC0+Y2hpbGRyZW4oKQogICAgICAgICAgICAgICAgICAgICAgICAtPmJvb2xlYW5Ob2RlKCdpZ25vcmUtaGlkZGVuJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ZGVmYXVsdFRydWUoKQogICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+Ym9vbGVhbk5vZGUoJ2lnbm9yZS1zeW1saW5rcycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmRlZmF1bHRUcnVlKCkKICAgICAgICAgICAgICAgICAgICAgICAgLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgnZGlyZWN0b3JpZXMnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5kZWZhdWx0VmFsdWUoW2dldGN3ZCgpXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+YmVmb3JlTm9ybWFsaXphdGlvbigpLT5jYXN0VG9BcnJheSgpLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT5wcm90b3R5cGUoJ3NjYWxhcicpLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAtPmVuZCgpCiAgICAgICAgICAgICAgICAgICAgICAgIC0+YXJyYXlOb2RlKCdmaWxlcycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmJlZm9yZU5vcm1hbGl6YXRpb24oKS0+Y2FzdFRvQXJyYXkoKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+cHJvdG90eXBlKCdzY2FsYXInKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgLT5lbmQoKQogICAgICAgICAgICAgICAgICAgICAgICAtPmFycmF5Tm9kZSgnaWdub3JlcycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPmJlZm9yZU5vcm1hbGl6YXRpb24oKS0+Y2FzdFRvQXJyYXkoKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+cHJvdG90eXBlKCdzY2FsYXInKS0+ZW5kKCkKICAgICAgICAgICAgICAgICAgICAgICAgLT5lbmQoKQogICAgICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgICAgIC0+ZW5kKCkKICAgICAgICAgICAgLT5lbmQoKTsKCiAgICAgICAgcmV0dXJuICR0cmVlYnVpbGRlcjsKICAgIH0KCiAgICAvKioKICAgICAqIFVwZ3JhZGVzIHRoZSB2ZXJzaW9uIDIgY29uZmlndXJhdGlvbiB0byB0aGUgdmVyc2lvbiAzIHByZS1ub3JtYWxpemVkIGNvbmZpZ3VyYXRpb24uCiAgICAgKgogICAgICogQHBhcmFtIENvbmZpZ3VyYXRpb25NYXAgJHZhbHVlcwogICAgICoKICAgICAqIEByZXR1cm4gVXBncmFkZWRDb25maWd1cmF0aW9uCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiB1cGdyYWRlKGFycmF5ICR2YWx1ZXMpOiBhcnJheQogICAgewogICAgICAgIHJldHVybiBbCiAgICAgICAgICAgIFN5bWZvbnlDb25maWdGYWN0b3J5OjpGSUVMRF9DT05GSUdfVkVSU0lPTiA9PiAnMycsCiAgICAgICAgICAgICd0aXRsZScgPT4gJHZhbHVlc1sndGl0bGUnXSwKICAgICAgICAgICAgJ3BhdGhzJyA9PiBbCiAgICAgICAgICAgICAgICAnb3V0cHV0JyA9PiAkdmFsdWVzWyd0cmFuc2Zvcm1lciddWyd0YXJnZXQnXSwKICAgICAgICAgICAgICAgICdjYWNoZScgPT4gJHZhbHVlc1sncGFyc2VyJ11bJ3RhcmdldCddLAogICAgICAgICAgICBdLAogICAgICAgICAgICAndmVyc2lvbicgPT4gWwogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICdudW1iZXInID0+ICcxLjAuMCcsCiAgICAgICAgICAgICAgICAgICAgJ2FwaScgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVmYXVsdC1wYWNrYWdlLW5hbWUnID0+ICR2YWx1ZXNbJ3BhcnNlciddWydkZWZhdWx0LXBhY2thZ2UtbmFtZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZScgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRocycgPT4gYXJyYXlfbWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiAoJHZhbHVlKSA9PiAkdGhpcy0+Y29udmVydFNpbmdsZVN0YXJQYXRoRW5kaW5nSW50b0dsb2JQYXR0ZXJuKCR2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X21lcmdlKCR2YWx1ZXNbJ2ZpbGVzJ11bJ2ZpbGVzJ10sICR2YWx1ZXNbJ2ZpbGVzJ11bJ2RpcmVjdG9yaWVzJ10pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lnbm9yZScgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXRocycgPT4gYXJyYXlfbWFwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbiAoJHZhbHVlKSA9PiAkdGhpcy0+Y29udmVydFNpbmdsZVN0YXJQYXRoRW5kaW5nSW50b0dsb2JQYXR0ZXJuKCR2YWx1ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZXNbJ2ZpbGVzJ11bJ2lnbm9yZXMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHRlbnNpb25zJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4dGVuc2lvbnMnID0+ICR2YWx1ZXNbJ3BhcnNlciddWydleHRlbnNpb25zJ11bJ2V4dGVuc2lvbnMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlzaWJpbGl0aWVzJyA9PiAkdmFsdWVzWydwYXJzZXInXVsndmlzaWJpbGl0eSddID8gZXhwbG9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZykgJHZhbHVlc1sncGFyc2VyJ11bJ3Zpc2liaWxpdHknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21hcmtlcnMnID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFya2VycycgPT4gJHZhbHVlc1sncGFyc2VyJ11bJ21hcmtlcnMnXVsnaXRlbXMnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICd0ZW1wbGF0ZXMnID0+IGFycmF5X3ZhbHVlcygkdmFsdWVzWyd0cmFuc2Zvcm1hdGlvbnMnXVsndGVtcGxhdGVzJ10pLAogICAgICAgIF07CiAgICB9CgogICAgLyoqCiAgICAgKiBNYWtlIGEgYC8qYCBlbmRpbmcgYmFja3dhcmRzIGNvbXBhdGlibGUgZm9yIHYyLgogICAgICoKICAgICAqIEluIHBocERvY3VtZW50b3IgMyB3ZSBzdGFydGVkIGFkb3B0aW5nIHRoZSBnbG9iIHBhdHRlcm4gd2l0aCBnbG9ic3RhciBleHRlbnNpb24gdG8gcHJvcGVybHkgZGVmaW5lIHBhdHRlcm5zCiAgICAgKiBtYXRjaGluZyBmaWxlIHBhdGhzLiBUaGlzIGlzIGluY29tcGF0aWJsZSB3aXRoIHBocERvY3VtZW50b3IgMiwgdGhhdCBpbnRlcnByZXRlZCBhICogdG8gbWVhbiBhbnkgbnVtYmVyIG9mCiAgICAgKiBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgdGhlIHBhdGggc2VwYXJhdG9yLgogICAgICoKICAgICAqIFRvIGVuc3VyZSB0aGlzIGJlaGF2aW91ciBpcyBwcm9wZXJseSB0cmFuc2xhdGVkLCB0aGlzIG1ldGhvZCB3aWxsIGRldGVjdCBpZiBhIHBhdGggZW5kcyB3aXRoIC8qLCBhbmQgaWYgaXQgaXMKICAgICAqIG5vdCBhIGdsb2JzdGFyIHBhdHRlcm4sIHdlIGNvbnZlcnQgaXQgdG8gb25lLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW91ciBpbiBwaHBEb2N1bWVudG9yIDIgd2l0aG91dCB1c2VyCiAgICAgKiBpbnRlcmFjdGlvbi4KICAgICAqCiAgICAgKiBAbGluayBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jhc2gvbWFudWFsL2h0bWxfbm9kZS9QYXR0ZXJuLU1hdGNoaW5nLmh0bWwKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb252ZXJ0U2luZ2xlU3RhclBhdGhFbmRpbmdJbnRvR2xvYlBhdHRlcm4oc3RyaW5nICRwYXRoKTogc3RyaW5nCiAgICB7CiAgICAgICAgaWYgKHN0cl9lbmRzX3dpdGgoJHBhdGgsICcvKicpICYmICEgc3RyX2VuZHNfd2l0aCgkcGF0aCwgJyoqLyonKSkgewogICAgICAgICAgICAkcGF0aCAuPSAnKi8qJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkcGF0aDsKICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjM1OiJUaGlzIGZpbGUgaXMgcGFydCBvZiBwaHBEb2N1bWVudG9yLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoxMjA6IkZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFCmZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xMaW5rIjozOntzOjc6IgAqAG5hbWUiO3M6NDoibGluayI7czoxNDoiACoAZGVzY3JpcHRpb24iO047czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXExpbmsAbGluayI7czoxODoiaHR0cHM6Ly9waHBkb2Mub3JnIjt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";