1778692662
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A36267629105eae0137d6af264a3b6874-fe6f140b441dbca753b3d1d22d9f0886
s:40372:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjIxOiJQaHBTdGFuVHlwZUhlbHBlci5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjM2OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWwiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozNjoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiVXRpbCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YToxOntzOjU0OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWxcUGhwU3RhblR5cGVIZWxwZXIiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfIjoxNTp7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGltcGxlbWVudHMiO2E6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBjb25zdGFudHMiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwcm9wZXJ0aWVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbWV0aG9kcyI7YTozOntzOjY2OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWxcUGhwU3RhblR5cGVIZWxwZXI6OmdldFR5cGVzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUxOiJcUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFBocERvY1xQaHBEb2NUYWdWYWx1ZU5vZGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxODoiUGhwRG9jVGFnVmFsdWVOb2RlIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NDoibm9kZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1MToiXFN5bWZvbnlcQ29tcG9uZW50XFR5cGVJbmZvXFR5cGVDb250ZXh0XFR5cGVDb250ZXh0IjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6IlR5cGVDb250ZXh0Ijt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTE6InR5cGVDb250ZXh0IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo0NjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNDQ3O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjUzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjE3OTI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NjoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocFN0YW5UeXBlSGVscGVyOjpnZXRUeXBlcygpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoiZ2V0VHlwZXMiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1MzoiQ3JlYXRlcyBhIHtAc2VlIFR5cGV9IGZyb20gYSBQaHBEb2NUYWdWYWx1ZU5vZGUgdHlwZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6MTp7aTowO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozNjoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xUeXBlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiVHlwZSI7fX1zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MzU6IlN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YToxNzp7czoxNzoiUGFyYW1UYWdWYWx1ZU5vZGUiO3M6NDk6IlBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxQaHBEb2NcUGFyYW1UYWdWYWx1ZU5vZGUiO3M6MTg6IlBocERvY1RhZ1ZhbHVlTm9kZSI7czo1MDoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFBocERvY1xQaHBEb2NUYWdWYWx1ZU5vZGUiO3M6MTg6IlJldHVyblRhZ1ZhbHVlTm9kZSI7czo1MDoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFBocERvY1xSZXR1cm5UYWdWYWx1ZU5vZGUiO3M6MTU6IlZhclRhZ1ZhbHVlTm9kZSI7czo0NzoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFBocERvY1xWYXJUYWdWYWx1ZU5vZGUiO3M6MTQ6IkFycmF5U2hhcGVOb2RlIjtzOjQ0OiJQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxBcnJheVNoYXBlTm9kZSI7czoxMzoiQXJyYXlUeXBlTm9kZSI7czo0MzoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcQXJyYXlUeXBlTm9kZSI7czoxNjoiQ2FsbGFibGVUeXBlTm9kZSI7czo0NjoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcQ2FsbGFibGVUeXBlTm9kZSI7czoyNToiQ2FsbGFibGVUeXBlUGFyYW1ldGVyTm9kZSI7czo1NToiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcQ2FsbGFibGVUeXBlUGFyYW1ldGVyTm9kZSI7czoxMzoiQ29uc3RUeXBlTm9kZSI7czo0MzoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcQ29uc3RUeXBlTm9kZSI7czoxNToiR2VuZXJpY1R5cGVOb2RlIjtzOjQ1OiJQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxHZW5lcmljVHlwZU5vZGUiO3M6MTg6IklkZW50aWZpZXJUeXBlTm9kZSI7czo0ODoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcSWRlbnRpZmllclR5cGVOb2RlIjtzOjE2OiJOdWxsYWJsZVR5cGVOb2RlIjtzOjQ2OiJQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxOdWxsYWJsZVR5cGVOb2RlIjtzOjEyOiJUaGlzVHlwZU5vZGUiO3M6NDI6IlBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxUeXBlXFRoaXNUeXBlTm9kZSI7czo4OiJUeXBlTm9kZSI7czozODoiUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcVHlwZU5vZGUiO3M6MTM6IlVuaW9uVHlwZU5vZGUiO3M6NDM6IlBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxUeXBlXFVuaW9uVHlwZU5vZGUiO3M6NDoiVHlwZSI7czozNToiU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFR5cGUiO3M6MTE6IlR5cGVDb250ZXh0IjtzOjUwOiJTeW1mb255XENvbXBvbmVudFxUeXBlSW5mb1xUeXBlQ29udGV4dFxUeXBlQ29udGV4dCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo3ODoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsXFBocFN0YW5UeXBlSGVscGVyOjpjb21wcmVzc051bGxhYmxlVHlwZSgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6MTp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToidHlwZXMiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjYzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjIwNTk7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6OTY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MzIzNzt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc4OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWxcUGhwU3RhblR5cGVIZWxwZXI6OmNvbXByZXNzTnVsbGFibGVUeXBlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyMDoiY29tcHJlc3NOdWxsYWJsZVR5cGUiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6MTY1OiJCZWNhdXNlIFBocFN0YW4gZXh0cmFjdCBudWxsIGFzIGEgc2VwYXJhdGVkIHR5cGUgd2hlbiBTeW1mb255IC8gUEhQIGNvbXByZXNzIGl0IGluIHRoZSBmaXJzdCBhdmFpbGFibGUgdHlwZSB3ZQpuZWVkIHRoaXMgbWV0aG9kIHRvIG1pbWljIGhvdyBTeW1mb255IHdhbnQgbnVsbCB0eXBlcy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mjp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozNjoiXFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xUeXBlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiVHlwZSI7fX1zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AdmFyaWFibGVOYW1lIjtzOjU6InR5cGVzIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO31pOjE7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjM2OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFR5cGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJUeXBlIjt9fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjc3O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjcwOiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFV0aWxcUGhwU3RhblR5cGVIZWxwZXI6OmV4dHJhY3RUeXBlcygpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozOToiXFBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxUeXBlXFR5cGVOb2RlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6ODoiVHlwZU5vZGUiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo0OiJub2RlIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUxOiJcU3ltZm9ueVxDb21wb25lbnRcVHlwZUluZm9cVHlwZUNvbnRleHRcVHlwZUNvbnRleHQiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMToiVHlwZUNvbnRleHQiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czoxMToidHlwZUNvbnRleHQiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEwMTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozMjgyO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIxMztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo5MTE5O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFycmF5XyI6Mzp7czoxMjoiACoAdmFsdWVUeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NzA6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBTdGFuVHlwZUhlbHBlcjo6ZXh0cmFjdFR5cGVzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMjoiZXh0cmFjdFR5cGVzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUmV0dXJuXyI6Mzp7czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjM2OiJcU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFR5cGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJUeXBlIjt9fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fX19czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBjb250ZXh0IjtyOjc3O3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHVzZWRUcmFpdHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mzk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMTQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTQ6IlxTeW1mb255XENvbXBvbmVudFxQcm9wZXJ0eUluZm9cVXRpbFxQaHBTdGFuVHlwZUhlbHBlciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJQaHBTdGFuVHlwZUhlbHBlciI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTg6IlRyYW5zZm9ybXMgYSBwaHAgZG9jIHRhZyB2YWx1ZSB0byBhIHtAbGluayBUeXBlfSBpbnN0YW5jZS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mjp7aTowO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czoxNDoiACoAZGVzY3JpcHRpb24iO047czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjE0OiJCYXB0aXN0ZSBMZWR1YyI7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JFbWFpbCI7czoyNDoiYmFwdGlzdGUubGVkdWNAZ21haWwuY29tIjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo4OiJpbnRlcm5hbCI7czoxNDoiACoAZGVzY3JpcHRpb24iO047fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6Nzc7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmaW5hbCI7YjoxO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwByZWFkT25seSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGF0dHJpYnV0ZXMiO2E6MDp7fX19czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJmZTZmMTQwYjQ0MWRiY2E3NTNiM2QxZDIyZDlmMDg4NiI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjU1OiJ2ZW5kb3Ivc3ltZm9ueS9wcm9wZXJ0eS1pbmZvL1V0aWwvUGhwU3RhblR5cGVIZWxwZXIucGhwIjtzOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHNvdXJjZSI7czo5MTIzOiI8P3BocAoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFN5bWZvbnkgcGFja2FnZS4KICoKICogKGMpIEZhYmllbiBQb3RlbmNpZXIgPGZhYmllbkBzeW1mb255LmNvbT4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIFN5bWZvbnlcQ29tcG9uZW50XFByb3BlcnR5SW5mb1xVdGlsOwoKdXNlIFBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxQaHBEb2NcUGFyYW1UYWdWYWx1ZU5vZGU7CnVzZSBQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcUGhwRG9jXFBocERvY1RhZ1ZhbHVlTm9kZTsKdXNlIFBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxQaHBEb2NcUmV0dXJuVGFnVmFsdWVOb2RlOwp1c2UgUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFBocERvY1xWYXJUYWdWYWx1ZU5vZGU7CnVzZSBQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxBcnJheVNoYXBlTm9kZTsKdXNlIFBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxUeXBlXEFycmF5VHlwZU5vZGU7CnVzZSBQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxDYWxsYWJsZVR5cGVOb2RlOwp1c2UgUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcQ2FsbGFibGVUeXBlUGFyYW1ldGVyTm9kZTsKdXNlIFBIUFN0YW5cUGhwRG9jUGFyc2VyXEFzdFxUeXBlXENvbnN0VHlwZU5vZGU7CnVzZSBQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxHZW5lcmljVHlwZU5vZGU7CnVzZSBQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxJZGVudGlmaWVyVHlwZU5vZGU7CnVzZSBQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxOdWxsYWJsZVR5cGVOb2RlOwp1c2UgUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcVGhpc1R5cGVOb2RlOwp1c2UgUEhQU3RhblxQaHBEb2NQYXJzZXJcQXN0XFR5cGVcVHlwZU5vZGU7CnVzZSBQSFBTdGFuXFBocERvY1BhcnNlclxBc3RcVHlwZVxVbmlvblR5cGVOb2RlOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcUHJvcGVydHlJbmZvXFR5cGU7CnVzZSBTeW1mb255XENvbXBvbmVudFxUeXBlSW5mb1xUeXBlQ29udGV4dFxUeXBlQ29udGV4dDsKCi8qKgogKiBUcmFuc2Zvcm1zIGEgcGhwIGRvYyB0YWcgdmFsdWUgdG8gYSB7QGxpbmsgVHlwZX0gaW5zdGFuY2UuCiAqCiAqIEBhdXRob3IgQmFwdGlzdGUgTGVkdWMgPGJhcHRpc3RlLmxlZHVjQGdtYWlsLmNvbT4KICoKICogQGludGVybmFsCiAqLwpmaW5hbCBjbGFzcyBQaHBTdGFuVHlwZUhlbHBlcgp7CiAgICAvKioKICAgICAqIENyZWF0ZXMgYSB7QHNlZSBUeXBlfSBmcm9tIGEgUGhwRG9jVGFnVmFsdWVOb2RlIHR5cGUuCiAgICAgKgogICAgICogQHJldHVybiBUeXBlW10KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGVzKFBocERvY1RhZ1ZhbHVlTm9kZSAkbm9kZSwgVHlwZUNvbnRleHQgJHR5cGVDb250ZXh0KTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoJG5vZGUgaW5zdGFuY2VvZiBQYXJhbVRhZ1ZhbHVlTm9kZSB8fCAkbm9kZSBpbnN0YW5jZW9mIFJldHVyblRhZ1ZhbHVlTm9kZSB8fCAkbm9kZSBpbnN0YW5jZW9mIFZhclRhZ1ZhbHVlTm9kZSkgewogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXByZXNzTnVsbGFibGVUeXBlKCR0aGlzLT5leHRyYWN0VHlwZXMoJG5vZGUtPnR5cGUsICR0eXBlQ29udGV4dCkpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFtdOwogICAgfQoKICAgIC8qKgogICAgICogQmVjYXVzZSBQaHBTdGFuIGV4dHJhY3QgbnVsbCBhcyBhIHNlcGFyYXRlZCB0eXBlIHdoZW4gU3ltZm9ueSAvIFBIUCBjb21wcmVzcyBpdCBpbiB0aGUgZmlyc3QgYXZhaWxhYmxlIHR5cGUgd2UKICAgICAqIG5lZWQgdGhpcyBtZXRob2QgdG8gbWltaWMgaG93IFN5bWZvbnkgd2FudCBudWxsIHR5cGVzLgogICAgICoKICAgICAqIEBwYXJhbSBUeXBlW10gJHR5cGVzCiAgICAgKgogICAgICogQHJldHVybiBUeXBlW10KICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBjb21wcmVzc051bGxhYmxlVHlwZShhcnJheSAkdHlwZXMpOiBhcnJheQogICAgewogICAgICAgICRmaXJzdFR5cGVJbmRleCA9IG51bGw7CiAgICAgICAgJG51bGxhYmxlVHlwZUluZGV4ID0gbnVsbDsKCiAgICAgICAgZm9yZWFjaCAoJHR5cGVzIGFzICRrID0+ICR0eXBlKSB7CiAgICAgICAgICAgIGlmIChudWxsID09PSAkZmlyc3RUeXBlSW5kZXggJiYgVHlwZTo6QlVJTFRJTl9UWVBFX05VTEwgIT09ICR0eXBlLT5nZXRCdWlsdGluVHlwZSgpICYmICEkdHlwZS0+aXNOdWxsYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAkZmlyc3RUeXBlSW5kZXggPSAkazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKG51bGwgPT09ICRudWxsYWJsZVR5cGVJbmRleCAmJiBUeXBlOjpCVUlMVElOX1RZUEVfTlVMTCA9PT0gJHR5cGUtPmdldEJ1aWx0aW5UeXBlKCkpIHsKICAgICAgICAgICAgICAgICRudWxsYWJsZVR5cGVJbmRleCA9ICRrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAobnVsbCAhPT0gJGZpcnN0VHlwZUluZGV4ICYmIG51bGwgIT09ICRudWxsYWJsZVR5cGVJbmRleCkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChudWxsICE9PSAkZmlyc3RUeXBlSW5kZXggJiYgbnVsbCAhPT0gJG51bGxhYmxlVHlwZUluZGV4KSB7CiAgICAgICAgICAgICRmaXJzdFR5cGUgPSAkdHlwZXNbJGZpcnN0VHlwZUluZGV4XTsKICAgICAgICAgICAgJHR5cGVzWyRmaXJzdFR5cGVJbmRleF0gPSBuZXcgVHlwZSgKICAgICAgICAgICAgICAgICRmaXJzdFR5cGUtPmdldEJ1aWx0aW5UeXBlKCksCiAgICAgICAgICAgICAgICB0cnVlLAogICAgICAgICAgICAgICAgJGZpcnN0VHlwZS0+Z2V0Q2xhc3NOYW1lKCksCiAgICAgICAgICAgICAgICAkZmlyc3RUeXBlLT5pc0NvbGxlY3Rpb24oKSwKICAgICAgICAgICAgICAgICRmaXJzdFR5cGUtPmdldENvbGxlY3Rpb25LZXlUeXBlcygpLAogICAgICAgICAgICAgICAgJGZpcnN0VHlwZS0+Z2V0Q29sbGVjdGlvblZhbHVlVHlwZXMoKQogICAgICAgICAgICApOwogICAgICAgICAgICB1bnNldCgkdHlwZXNbJG51bGxhYmxlVHlwZUluZGV4XSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gYXJyYXlfdmFsdWVzKCR0eXBlcyk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAcmV0dXJuIFR5cGVbXQogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIGV4dHJhY3RUeXBlcyhUeXBlTm9kZSAkbm9kZSwgVHlwZUNvbnRleHQgJHR5cGVDb250ZXh0KTogYXJyYXkKICAgIHsKICAgICAgICBpZiAoJG5vZGUgaW5zdGFuY2VvZiBVbmlvblR5cGVOb2RlKSB7CiAgICAgICAgICAgICR0eXBlcyA9IFtdOwogICAgICAgICAgICBmb3JlYWNoICgkbm9kZS0+dHlwZXMgYXMgJHR5cGUpIHsKICAgICAgICAgICAgICAgIGlmICgkdHlwZSBpbnN0YW5jZW9mIENvbnN0VHlwZU5vZGUpIHsKICAgICAgICAgICAgICAgICAgICAvLyBJdCdzIHNhZmVyIHRvIGZhbGwgYmFjayB0byBvdGhlciBleHRyYWN0b3JzIGhlcmUsIGFzIHJlc29sdmluZyBjb25zdCB0eXBlcyBjb3JyZWN0bHkgaXMgbm90IGVhc3kgYXQgdGhlIG1vbWVudAogICAgICAgICAgICAgICAgICAgIHJldHVybiBbXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5leHRyYWN0VHlwZXMoJHR5cGUsICR0eXBlQ29udGV4dCkgYXMgJHN1YlR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAkdHlwZXNbXSA9ICRzdWJUeXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJHRoaXMtPmNvbXByZXNzTnVsbGFibGVUeXBlKCR0eXBlcyk7CiAgICAgICAgfQogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIEdlbmVyaWNUeXBlTm9kZSkgewogICAgICAgICAgICBpZiAoJ2NsYXNzLXN0cmluZycgPT09ICRub2RlLT50eXBlLT5uYW1lKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBUeXBlKFR5cGU6OkJVSUxUSU5fVFlQRV9TVFJJTkcpXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgWyRtYWluVHlwZV0gPSAkdGhpcy0+ZXh0cmFjdFR5cGVzKCRub2RlLT50eXBlLCAkdHlwZUNvbnRleHQpOwoKICAgICAgICAgICAgaWYgKFR5cGU6OkJVSUxUSU5fVFlQRV9JTlQgPT09ICRtYWluVHlwZS0+Z2V0QnVpbHRpblR5cGUoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFskbWFpblR5cGVdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkY29sbGVjdGlvbiA9ICRtYWluVHlwZS0+aXNDb2xsZWN0aW9uKCkgfHwgaXNfYSgkbWFpblR5cGUtPmdldENsYXNzTmFtZSgpLCBcVHJhdmVyc2FibGU6OmNsYXNzLCB0cnVlKSB8fCBpc19hKCRtYWluVHlwZS0+Z2V0Q2xhc3NOYW1lKCksIFxBcnJheUFjY2Vzczo6Y2xhc3MsIHRydWUpOwoKICAgICAgICAgICAgLy8gaXQncyBzYWZlciB0byBmYWxsIGJhY2sgdG8gb3RoZXIgZXh0cmFjdG9ycyBpZiB0aGUgZ2VuZXJpYyB0eXBlIGlzIHRvbyBhYnN0cmFjdAogICAgICAgICAgICBpZiAoISRjb2xsZWN0aW9uICYmICFjbGFzc19leGlzdHMoJG1haW5UeXBlLT5nZXRDbGFzc05hbWUoKSkgJiYgIWludGVyZmFjZV9leGlzdHMoJG1haW5UeXBlLT5nZXRDbGFzc05hbWUoKSwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gW107CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRjb2xsZWN0aW9uS2V5VHlwZXMgPSAkbWFpblR5cGUtPmdldENvbGxlY3Rpb25LZXlUeXBlcygpOwogICAgICAgICAgICAkY29sbGVjdGlvbktleVZhbHVlcyA9IFtdOwogICAgICAgICAgICBpZiAoMSA9PT0gXGNvdW50KCRub2RlLT5nZW5lcmljVHlwZXMpKSB7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZXh0cmFjdFR5cGVzKCRub2RlLT5nZW5lcmljVHlwZXNbMF0sICR0eXBlQ29udGV4dCkgYXMgJHN1YlR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAkY29sbGVjdGlvbktleVZhbHVlc1tdID0gJHN1YlR5cGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZWlmICgyID09PSBcY291bnQoJG5vZGUtPmdlbmVyaWNUeXBlcykpIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKCR0aGlzLT5leHRyYWN0VHlwZXMoJG5vZGUtPmdlbmVyaWNUeXBlc1swXSwgJHR5cGVDb250ZXh0KSBhcyAka2V5U3ViVHlwZSkgewogICAgICAgICAgICAgICAgICAgICRjb2xsZWN0aW9uS2V5VHlwZXNbXSA9ICRrZXlTdWJUeXBlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmV4dHJhY3RUeXBlcygkbm9kZS0+Z2VuZXJpY1R5cGVzWzFdLCAkdHlwZUNvbnRleHQpIGFzICR2YWx1ZVN1YlR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAkY29sbGVjdGlvbktleVZhbHVlc1tdID0gJHZhbHVlU3ViVHlwZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFtuZXcgVHlwZSgkbWFpblR5cGUtPmdldEJ1aWx0aW5UeXBlKCksICRtYWluVHlwZS0+aXNOdWxsYWJsZSgpLCAkbWFpblR5cGUtPmdldENsYXNzTmFtZSgpLCAkY29sbGVjdGlvbiwgJGNvbGxlY3Rpb25LZXlUeXBlcywgJGNvbGxlY3Rpb25LZXlWYWx1ZXMpXTsKICAgICAgICB9CiAgICAgICAgaWYgKCRub2RlIGluc3RhbmNlb2YgQXJyYXlTaGFwZU5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuIFtuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfQVJSQVksIGZhbHNlLCBudWxsLCB0cnVlKV07CiAgICAgICAgfQogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIEFycmF5VHlwZU5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuIFtuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfQVJSQVksIGZhbHNlLCBudWxsLCB0cnVlLCBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX0lOVCldLCAkdGhpcy0+ZXh0cmFjdFR5cGVzKCRub2RlLT50eXBlLCAkdHlwZUNvbnRleHQpKV07CiAgICAgICAgfQogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIENhbGxhYmxlVHlwZU5vZGUgfHwgJG5vZGUgaW5zdGFuY2VvZiBDYWxsYWJsZVR5cGVQYXJhbWV0ZXJOb2RlKSB7CiAgICAgICAgICAgIHJldHVybiBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX0NBTExBQkxFKV07CiAgICAgICAgfQogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIE51bGxhYmxlVHlwZU5vZGUpIHsKICAgICAgICAgICAgJHN1YlR5cGVzID0gJHRoaXMtPmV4dHJhY3RUeXBlcygkbm9kZS0+dHlwZSwgJHR5cGVDb250ZXh0KTsKICAgICAgICAgICAgaWYgKFxjb3VudCgkc3ViVHlwZXMpID4gMSkgewogICAgICAgICAgICAgICAgJHN1YlR5cGVzW10gPSBuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfTlVMTCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRzdWJUeXBlczsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIFtuZXcgVHlwZSgkc3ViVHlwZXNbMF0tPmdldEJ1aWx0aW5UeXBlKCksIHRydWUsICRzdWJUeXBlc1swXS0+Z2V0Q2xhc3NOYW1lKCksICRzdWJUeXBlc1swXS0+aXNDb2xsZWN0aW9uKCksICRzdWJUeXBlc1swXS0+Z2V0Q29sbGVjdGlvbktleVR5cGVzKCksICRzdWJUeXBlc1swXS0+Z2V0Q29sbGVjdGlvblZhbHVlVHlwZXMoKSldOwogICAgICAgIH0KICAgICAgICBpZiAoJG5vZGUgaW5zdGFuY2VvZiBUaGlzVHlwZU5vZGUpIHsKICAgICAgICAgICAgcmV0dXJuIFtuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfT0JKRUNULCBmYWxzZSwgJHR5cGVDb250ZXh0LT5nZXRDYWxsZWRDbGFzcygpKV07CiAgICAgICAgfQogICAgICAgIGlmICgkbm9kZSBpbnN0YW5jZW9mIElkZW50aWZpZXJUeXBlTm9kZSkgewogICAgICAgICAgICBpZiAoXGluX2FycmF5KCRub2RlLT5uYW1lLCBUeXBlOjokYnVpbHRpblR5cGVzLCB0cnVlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgVHlwZSgkbm9kZS0+bmFtZSwgZmFsc2UsIG51bGwsIFxpbl9hcnJheSgkbm9kZS0+bmFtZSwgVHlwZTo6JGJ1aWx0aW5Db2xsZWN0aW9uVHlwZXMsIHRydWUpKV07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBtYXRjaCAoJG5vZGUtPm5hbWUpIHsKICAgICAgICAgICAgICAgICdpbnRlZ2VyJywKICAgICAgICAgICAgICAgICdwb3NpdGl2ZS1pbnQnLAogICAgICAgICAgICAgICAgJ25lZ2F0aXZlLWludCcsCiAgICAgICAgICAgICAgICAnbm9uLXBvc2l0aXZlLWludCcsCiAgICAgICAgICAgICAgICAnbm9uLW5lZ2F0aXZlLWludCcsCiAgICAgICAgICAgICAgICAnbm9uLXplcm8taW50JyA9PiBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX0lOVCldLAogICAgICAgICAgICAgICAgJ2RvdWJsZScgPT4gW25ldyBUeXBlKFR5cGU6OkJVSUxUSU5fVFlQRV9GTE9BVCldLAogICAgICAgICAgICAgICAgJ2xpc3QnLAogICAgICAgICAgICAgICAgJ25vbi1lbXB0eS1saXN0JyA9PiBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX0FSUkFZLCBmYWxzZSwgbnVsbCwgdHJ1ZSwgbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX0lOVCkpXSwKICAgICAgICAgICAgICAgICdub24tZW1wdHktYXJyYXknID0+IFtuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfQVJSQVksIGZhbHNlLCBudWxsLCB0cnVlKV0sCiAgICAgICAgICAgICAgICAnbWl4ZWQnID0+IFtdLCAvLyBtaXhlZCBzZWVtcyB0byBiZSBpZ25vcmVkIGluIGFsbCBvdGhlciBleHRyYWN0b3JzCiAgICAgICAgICAgICAgICAncGFyZW50JyA9PiBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX09CSkVDVCwgZmFsc2UsICRub2RlLT5uYW1lKV0sCiAgICAgICAgICAgICAgICAnc3RhdGljJywKICAgICAgICAgICAgICAgICdzZWxmJyA9PiBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX09CSkVDVCwgZmFsc2UsICR0eXBlQ29udGV4dC0+Z2V0Q2FsbGVkQ2xhc3MoKSldLAogICAgICAgICAgICAgICAgJ2NsYXNzLXN0cmluZycsCiAgICAgICAgICAgICAgICAnaHRtbC1lc2NhcGVkLXN0cmluZycsCiAgICAgICAgICAgICAgICAnbG93ZXJjYXNlLXN0cmluZycsCiAgICAgICAgICAgICAgICAnbm9uLWVtcHR5LWxvd2VyY2FzZS1zdHJpbmcnLAogICAgICAgICAgICAgICAgJ25vbi1lbXB0eS1zdHJpbmcnLAogICAgICAgICAgICAgICAgJ251bWVyaWMtc3RyaW5nJywKICAgICAgICAgICAgICAgICd0cmFpdC1zdHJpbmcnLAogICAgICAgICAgICAgICAgJ2ludGVyZmFjZS1zdHJpbmcnLAogICAgICAgICAgICAgICAgJ2xpdGVyYWwtc3RyaW5nJyA9PiBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX1NUUklORyldLAogICAgICAgICAgICAgICAgJ3ZvaWQnID0+IFtuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfTlVMTCldLAogICAgICAgICAgICAgICAgJ3NjYWxhcicgPT4gW25ldyBUeXBlKFR5cGU6OkJVSUxUSU5fVFlQRV9JTlQpLCBuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfRkxPQVQpLCBuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfU1RSSU5HKSwgbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX0JPT0wpXSwKICAgICAgICAgICAgICAgICdudW1iZXInID0+IFtuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfSU5UKSwgbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX0ZMT0FUKV0sCiAgICAgICAgICAgICAgICAnbnVtZXJpYycgPT4gW25ldyBUeXBlKFR5cGU6OkJVSUxUSU5fVFlQRV9JTlQpLCBuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfRkxPQVQpLCBuZXcgVHlwZShUeXBlOjpCVUlMVElOX1RZUEVfU1RSSU5HKV0sCiAgICAgICAgICAgICAgICAnYXJyYXkta2V5JyA9PiBbbmV3IFR5cGUoVHlwZTo6QlVJTFRJTl9UWVBFX1NUUklORyksIG5ldyBUeXBlKFR5cGU6OkJVSUxUSU5fVFlQRV9JTlQpXSwKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gW25ldyBUeXBlKFR5cGU6OkJVSUxUSU5fVFlQRV9PQkpFQ1QsIGZhbHNlLCAkdHlwZUNvbnRleHQtPm5vcm1hbGl6ZSgkbm9kZS0+bmFtZSkpXSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBbXTsKICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";