1778692667
441d63ebbc39eba359c9061ece8482bd-phpdoc%3A5c8bb77aed1851b85f26e66308514e2f-871bbdb32098cf40da90b14afab642ee
s:93588:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjE1OiJQcm94eUhlbHBlci5waHAiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjMwOiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXIiO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czozMDoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTE6IlZhckV4cG9ydGVyIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6NDI6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlciI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18iOjE1OntzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AaW1wbGVtZW50cyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjk6e3M6NjM6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjo6Z2VuZXJhdGVMYXp5R2hvc3QoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjE6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MTY6IlxSZWZsZWN0aW9uQ2xhc3MiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNToiUmVmbGVjdGlvbkNsYXNzIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToiY2xhc3MiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjMxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjgzMDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToxMjQ7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6NTc5OTt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NjM6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjo6Z2VuZXJhdGVMYXp5R2hvc3QoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJnZW5lcmF0ZUxhenlHaG9zdCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjQyOiJIZWxwcyBnZW5lcmF0ZSBsYXp5LWxvYWRpbmcgZ2hvc3Qgb2JqZWN0cy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mjp7aTowO086NDk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXERlcHJlY2F0ZWQiOjM6e3M6NzoiACoAbmFtZSI7czoxMDoiZGVwcmVjYXRlZCI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NTA6InNpbmNlIFN5bWZvbnkgNy4zLCB1c2UgbmF0aXZlIGxhenkgb2JqZWN0cyBpbnN0ZWFkIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcRGVwcmVjYXRlZAB2ZXJzaW9uIjtOO31pOjE7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcVGhyb3dzIjozOntzOjc6IgAqAG5hbWUiO3M6NjoidGhyb3dzIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0OToiV2hlbiB0aGUgY2xhc3MgaXMgaW5jb21wYXRpYmxlIHdpdGggZ2hvc3Qgb2JqZWN0cyI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTU6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxFeGNlcHRpb25cTG9naWNFeGNlcHRpb24iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiTG9naWNFeGNlcHRpb24iO319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjI5OiJTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlciI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6NDp7czoxNDoiTG9naWNFeGNlcHRpb24iO3M6NTQ6IlN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEV4Y2VwdGlvblxMb2dpY0V4Y2VwdGlvbiI7czo4OiJIeWRyYXRvciI7czo0NzoiU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcSHlkcmF0b3IiO3M6MTg6IkxhenlEZWNvcmF0b3JUcmFpdCI7czo1NzoiU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcTGF6eURlY29yYXRvclRyYWl0IjtzOjE4OiJMYXp5T2JqZWN0UmVnaXN0cnkiO3M6NTc6IlN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXExhenlPYmplY3RSZWdpc3RyeSI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MTtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo2MzoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXFByb3h5SGVscGVyOjpnZW5lcmF0ZUxhenlQcm94eSgpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTM6e3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhcmd1bWVudHMiO2E6Mjp7aTowO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsYWJsZSI6MTp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsYWJsZQByZWFsVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjE2OiJcUmVmbGVjdGlvbkNsYXNzIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTU6IlJlZmxlY3Rpb25DbGFzcyI7fX19czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo1OiJjbGFzcyI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTA6ImludGVyZmFjZXMiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbiI6Mjp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbgBleHByZXNzaW9uIjtzOjI6IltdIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjA6e319czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjEzMztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTo2MDEwO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM3NztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToxNzE1NDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NjM6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjo6Z2VuZXJhdGVMYXp5UHJveHkoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJnZW5lcmF0ZUxhenlQcm94eSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjM5OiJIZWxwcyBnZW5lcmF0ZSBsYXp5LWxvYWRpbmcgZGVjb3JhdG9ycy4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mjp7aTowO086NDQ6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtIjo2OntzOjc6IgAqAG5hbWUiO3M6NToicGFyYW0iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czo3OiIAKgB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxNjoiXFJlZmxlY3Rpb25DbGFzcyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE1OiJSZWZsZWN0aW9uQ2xhc3MiO319czoxMDoiACoAa2V5VHlwZSI7TjtzOjE3OiIAKgBkZWZhdWx0S2V5VHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjI6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fWk6MTtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO319czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czoxMDoiaW50ZXJmYWNlcyI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzVmFyaWFkaWMiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNSZWZlcmVuY2UiO2I6MDt9aToxO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFRocm93cyI6Mzp7czo3OiIAKgBuYW1lIjtzOjY6InRocm93cyI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NTE6IldoZW4gdGhlIGNsYXNzIGlzIGluY29tcGF0aWJsZSB3aXRoIHZpcnR1YWwgcHJveGllcyI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTU6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxFeGNlcHRpb25cTG9naWNFeGNlcHRpb24iO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiTG9naWNFeGNlcHRpb24iO319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjE7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6Njk6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjo6Z2VuZXJhdGVMZWdhY3lMYXp5UHJveHkoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUiOjE6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUAcmVhbFR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoxNjoiXFJlZmxlY3Rpb25DbGFzcyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE1OiJSZWZsZWN0aW9uQ2xhc3MiO319fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NToiY2xhc3MiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQXJyYXlfIjozOntzOjEyOiIAKgB2YWx1ZVR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjEwOiIAKgBrZXlUeXBlIjtOO3M6MTc6IgAqAGRlZmF1bHRLZXlUeXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29tcG91bmQiOjI6e3M6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdHlwZXMiO2E6Mjp7aTowO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9aToxO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9fXM6NTI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQWdncmVnYXRlZFR5cGUAdG9rZW4iO3M6MToifCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjEwOiJpbnRlcmZhY2VzIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozNzk7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MTcxNjE7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTI3O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjI0MzkzO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2OToiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXFByb3h5SGVscGVyOjpnZW5lcmF0ZUxlZ2FjeUxhenlQcm94eSgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjM6ImdlbmVyYXRlTGVnYWN5TGF6eVByb3h5Ijt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjoxO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjYyOiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcUHJveHlIZWxwZXI6OmV4cG9ydFBhcmFtZXRlcnMoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjM6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxSZWZsZWN0aW9uRnVuY3Rpb25BYnN0cmFjdCI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI2OiJSZWZsZWN0aW9uRnVuY3Rpb25BYnN0cmFjdCI7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6ImZ1bmN0aW9uIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjE4OiJ3aXRoUGFyYW1ldGVyVHlwZXMiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbiI6Mjp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbgBleHByZXNzaW9uIjtzOjQ0OiJ7eyBQSFBET0NiMzI2YjUwNjJiMmYwZTY5MDQ2ODEwNzE3NTM0Y2IwOSB9fSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRXhwcmVzc2lvbgBwYXJ0cyI7YToxOntzOjQ0OiJ7eyBQSFBET0NiMzI2YjUwNjJiMmYwZTY5MDQ2ODEwNzE3NTM0Y2IwOSB9fSI7Tzo0MjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBzZXVkb1R5cGVzXFRydWVfIjowOnt9fX1zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsYWJsZSI6MTp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsYWJsZQByZWFsVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo0OiJhcmdzIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24iOjI6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AZXhwcmVzc2lvbiI7czo0NDoie3sgUEhQRE9DMzdhNjI1OWNjMGMxZGFlMjk5YTc4NjY0ODlkZmYwYmQgfX0iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AcGFydHMiO2E6MTp7czo0NDoie3sgUEhQRE9DMzdhNjI1OWNjMGMxZGFlMjk5YTc4NjY0ODlkZmYwYmQgfX0iO086MzY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsXyI6MDp7fX19czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MTtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjUyOTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aToyNDQwMDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1NjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MjU5OTk7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjYyOiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcUHJveHlIZWxwZXI6OmV4cG9ydFBhcmFtZXRlcnMoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE2OiJleHBvcnRQYXJhbWV0ZXJzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjY6InB1YmxpYyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjE7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6NjE6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjo6ZXhwb3J0U2lnbmF0dXJlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUmVmbGVjdGlvbkZ1bmN0aW9uQWJzdHJhY3QiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyNjoiUmVmbGVjdGlvbkZ1bmN0aW9uQWJzdHJhY3QiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJmdW5jdGlvbiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xCb29sZWFuIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czoxODoid2l0aFBhcmFtZXRlclR5cGVzIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24iOjI6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AZXhwcmVzc2lvbiI7czo0NDoie3sgUEhQRE9DYjMyNmI1MDYyYjJmMGU2OTA0NjgxMDcxNzUzNGNiMDkgfX0iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEV4cHJlc3Npb24AcGFydHMiO2E6MTp7czo0NDoie3sgUEhQRE9DYjMyNmI1MDYyYjJmMGU2OTA0NjgxMDcxNzUzNGNiMDkgfX0iO086NDI6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQc2V1ZG9UeXBlc1xUcnVlXyI6MDp7fX19czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUiOjE6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbGFibGUAcmVhbFR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NDoiYXJncyI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uIjoyOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAGV4cHJlc3Npb24iO3M6NDQ6Int7IFBIUERPQzM3YTYyNTljYzBjMWRhZTI5OWE3ODY2NDg5ZGZmMGJkIH19IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjE6e3M6NDQ6Int7IFBIUERPQzM3YTYyNTljYzBjMWRhZTI5OWE3ODY2NDg5ZGZmMGJkIH19IjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbF8iOjA6e319fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjE7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1NjI7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MjYwMDY7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NTkzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjI3MzM0O31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2MToiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXFByb3h5SGVscGVyOjpleHBvcnRTaWduYXR1cmUoKSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE1OiJleHBvcnRTaWduYXR1cmUiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MTtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319czo1NjoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXFByb3h5SGVscGVyOjpleHBvcnRUeXBlKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbXBvdW5kIjoyOntzOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHR5cGVzIjthOjM6e2k6MDtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxSZWZsZWN0aW9uRnVuY3Rpb25BYnN0cmFjdCI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjI2OiJSZWZsZWN0aW9uRnVuY3Rpb25BYnN0cmFjdCI7fX1pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjE5OiJcUmVmbGVjdGlvblByb3BlcnR5IjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTg6IlJlZmxlY3Rpb25Qcm9wZXJ0eSI7fX1pOjI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjIwOiJcUmVmbGVjdGlvblBhcmFtZXRlciI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE5OiJSZWZsZWN0aW9uUGFyYW1ldGVyIjt9fX1zOjUyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEFnZ3JlZ2F0ZWRUeXBlAHRva2VuIjtzOjE6InwiO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjU6Im93bmVyIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEJvb2xlYW4iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6Im5vQnVpbHRpbiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uIjoyOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAGV4cHJlc3Npb24iO3M6NDQ6Int7IFBIUERPQzY4OTM0YTNlOTQ1NWZhNzI0MjAyMzdlYjA1OTAyMzI3IH19IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjE6e3M6NDQ6Int7IFBIUERPQzY4OTM0YTNlOTQ1NWZhNzI0MjAyMzdlYjA1OTAyMzI3IH19IjtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUHNldWRvVHlwZXNcRmFsc2VfIjowOnt9fX1zOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsYWJsZSI6MTp7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xOdWxsYWJsZQByZWFsVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjE1OiJcUmVmbGVjdGlvblR5cGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxNDoiUmVmbGVjdGlvblR5cGUiO319fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6NDoidHlwZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uIjoyOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAGV4cHJlc3Npb24iO3M6NDQ6Int7IFBIUERPQzM3YTYyNTljYzBjMWRhZTI5OWE3ODY2NDg5ZGZmMGJkIH19IjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxFeHByZXNzaW9uAHBhcnRzIjthOjE6e3M6NDQ6Int7IFBIUERPQzM3YTYyNTljYzBjMWRhZTI5OWE3ODY2NDg5ZGZmMGJkIH19IjtPOjM2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTnVsbF8iOjA6e319fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo1OTU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MjczNDE7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjQzO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjI5MzIzO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE51bGxhYmxlIjoxOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE51bGxhYmxlAHJlYWxUeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo1NjoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXFByb3h5SGVscGVyOjpleHBvcnRUeXBlKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMDoiZXhwb3J0VHlwZSI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjoxO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjY2OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcUHJveHlIZWxwZXI6OmV4cG9ydFByb3BlcnR5U2NvcGVzKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjY6InBhcmVudCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AG5hbWUiO3M6MTQ6InByb3BlcnR5U2NvcGVzIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO319czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo2NDU7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MjkzMzA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjU2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjI5OTIxO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAcmV0dXJuVHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo2NjoiXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXFByb3h5SGVscGVyOjpleHBvcnRQcm9wZXJ0eVNjb3BlcygpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MjA6ImV4cG9ydFByb3BlcnR5U2NvcGVzIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHZpc2liaWxpdHkiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eSI6MTp7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcVmlzaWJpbGl0eQB2aXNpYmlsaXR5IjtzOjc6InByaXZhdGUiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjoxO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABoYXNSZXR1cm5CeVJlZmVyZW5jZSI7YjowO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABtZXRhZGF0YSI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGF0dHJpYnV0ZXMiO2E6MDp7fX1zOjU5OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcUHJveHlIZWxwZXI6OmV4cG9ydERlZmF1bHQoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEzOntzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6MjA6IlxSZWZsZWN0aW9uUGFyYW1ldGVyIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTk6IlJlZmxlY3Rpb25QYXJhbWV0ZXIiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo1OiJwYXJhbSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6Im5hbWVzcGFjZSI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NjU4O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjI5OTI4O31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjY5MztzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozMTg4NTt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6NTk6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjo6ZXhwb3J0RGVmYXVsdCgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTM6ImV4cG9ydERlZmF1bHQiO31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NzoicHJpdmF0ZSI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYWJzdHJhY3QiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAc3RhdGljIjtiOjE7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXR0cmlidXRlcyI7YTowOnt9fXM6NTg6IlxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxQcm94eUhlbHBlcjo6ZXhwb3J0U3ltYm9sKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMzp7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTozOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjY6InN5bWJvbCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToxO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xCb29sZWFuIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czoxNjoibWlnaHRCZVJvb3RDb25zdCI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9aToyO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQiOjU6e3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xTdHJpbmdfIjowOnt9czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo5OiJuYW1lc3BhY2UiO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjY5NTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTozMTg5Mjt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTo3MDc7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MzIzMzM7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcU3RyaW5nXyI6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjU4OiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcUHJveHlIZWxwZXI6OmV4cG9ydFN5bWJvbCgpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6MTI6ImV4cG9ydFN5bWJvbCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtOO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MTtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZmluYWwiO2I6MDtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhdHRyaWJ1dGVzIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjIyO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NzA4O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjQyOiJcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcUHJveHlIZWxwZXIiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoxMToiUHJveHlIZWxwZXIiO31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjA6IiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YToxOntpOjA7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yIjo0OntzOjc6IgAqAG5hbWUiO3M6NjoiYXV0aG9yIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7TjtzOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvck5hbWUiO3M6MTQ6Ik5pY29sYXMgR3Jla2FzIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjEzOiJwQHRjaHdvcmsuY29tIjt9fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo2MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBwYXJlbnQiO047czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZpbmFsIjtiOjE7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHJlYWRPbmx5IjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGFkYXRhIjthOjA6e31zOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYXR0cmlidXRlcyI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGhhc2giO3M6MzI6Ijg3MWJiZGIzMjA5OGNmNDBkYTkwYjE0YWZhYjY0MmVlIjtzOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHBhdGgiO3M6NDM6InZlbmRvci9zeW1mb255L3Zhci1leHBvcnRlci9Qcm94eUhlbHBlci5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjMyMzM3OiI8P3BocAoKLyoKICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFN5bWZvbnkgcGFja2FnZS4KICoKICogKGMpIEZhYmllbiBQb3RlbmNpZXIgPGZhYmllbkBzeW1mb255LmNvbT4KICoKICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0UKICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuCiAqLwoKbmFtZXNwYWNlIFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyOwoKdXNlIFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEV4Y2VwdGlvblxMb2dpY0V4Y2VwdGlvbjsKdXNlIFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXEh5ZHJhdG9yOwp1c2UgU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcTGF6eURlY29yYXRvclRyYWl0Owp1c2UgU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcTGF6eU9iamVjdFJlZ2lzdHJ5OwoKLyoqCiAqIEBhdXRob3IgTmljb2xhcyBHcmVrYXMgPHBAdGNod29yay5jb20+CiAqLwpmaW5hbCBjbGFzcyBQcm94eUhlbHBlcgp7CiAgICAvKioKICAgICAqIEhlbHBzIGdlbmVyYXRlIGxhenktbG9hZGluZyBnaG9zdCBvYmplY3RzLgogICAgICoKICAgICAqIEBkZXByZWNhdGVkIHNpbmNlIFN5bWZvbnkgNy4zLCB1c2UgbmF0aXZlIGxhenkgb2JqZWN0cyBpbnN0ZWFkCiAgICAgKgogICAgICogQHRocm93cyBMb2dpY0V4Y2VwdGlvbiBXaGVuIHRoZSBjbGFzcyBpcyBpbmNvbXBhdGlibGUgd2l0aCBnaG9zdCBvYmplY3RzCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGVMYXp5R2hvc3QoXFJlZmxlY3Rpb25DbGFzcyAkY2xhc3MpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEID49IDgwNDAwKSB7CiAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ3N5bWZvbnkvdmFyLWV4cG9ydGVyJywgJzcuMycsICdVc2luZyBQcm94eUhlbHBlcjo6Z2VuZXJhdGVMYXp5R2hvc3QoKSBpcyBkZXByZWNhdGVkLCB1c2UgbmF0aXZlIGxhenkgb2JqZWN0cyBpbnN0ZWFkLicpOwogICAgICAgIH0KICAgICAgICBpZiAoXFBIUF9WRVJTSU9OX0lEIDwgODAzMDAgJiYgJGNsYXNzLT5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgZ2VuZXJhdGUgbGF6eSBnaG9zdCB3aXRoIFBIUCA8IDguMzogY2xhc3MgIiVzIiBpcyByZWFkb25seS4nLCAkY2xhc3MtPm5hbWUpKTsKICAgICAgICB9CiAgICAgICAgaWYgKCRjbGFzcy0+aXNGaW5hbCgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IGdlbmVyYXRlIGxhenkgZ2hvc3Q6IGNsYXNzICIlcyIgaXMgZmluYWwuJywgJGNsYXNzLT5uYW1lKSk7CiAgICAgICAgfQogICAgICAgIGlmICgkY2xhc3MtPmlzSW50ZXJmYWNlKCkgfHwgJGNsYXNzLT5pc0Fic3RyYWN0KCkgfHwgJGNsYXNzLT5pc1RyYWl0KCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgZ2VuZXJhdGUgbGF6eSBnaG9zdDogIiVzIiBpcyBub3QgYSBjb25jcmV0ZSBjbGFzcy4nLCAkY2xhc3MtPm5hbWUpKTsKICAgICAgICB9CiAgICAgICAgaWYgKFxzdGRDbGFzczo6Y2xhc3MgIT09ICRjbGFzcy0+bmFtZSAmJiAkY2xhc3MtPmlzSW50ZXJuYWwoKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oXHNwcmludGYoJ0Nhbm5vdCBnZW5lcmF0ZSBsYXp5IGdob3N0OiBjbGFzcyAiJXMiIGlzIGludGVybmFsLicsICRjbGFzcy0+bmFtZSkpOwogICAgICAgIH0KICAgICAgICBpZiAoJGNsYXNzLT5oYXNNZXRob2QoJ19fZ2V0JykgJiYgJ21peGVkJyAhPT0gKHNlbGY6OmV4cG9ydFR5cGUoJGNsYXNzLT5nZXRNZXRob2QoJ19fZ2V0JykpID8/ICdtaXhlZCcpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IGdlbmVyYXRlIGxhenkgZ2hvc3Q6IHJldHVybiB0eXBlIG9mIG1ldGhvZCAiJXM6Ol9fZ2V0KCkiIHNob3VsZCBiZSAibWl4ZWQiLicsICRjbGFzcy0+bmFtZSkpOwogICAgICAgIH0KCiAgICAgICAgc3RhdGljICR0cmFpdE1ldGhvZHM7CiAgICAgICAgJHRyYWl0TWV0aG9kcyA/Pz0gKG5ldyBcUmVmbGVjdGlvbkNsYXNzKExhenlHaG9zdFRyYWl0OjpjbGFzcykpLT5nZXRNZXRob2RzKCk7CgogICAgICAgIGZvcmVhY2ggKCR0cmFpdE1ldGhvZHMgYXMgJG1ldGhvZCkgewogICAgICAgICAgICBpZiAoJGNsYXNzLT5oYXNNZXRob2QoJG1ldGhvZC0+bmFtZSkgJiYgJGNsYXNzLT5nZXRNZXRob2QoJG1ldGhvZC0+bmFtZSktPmlzRmluYWwoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgZ2VuZXJhdGUgbGF6eSBnaG9zdDogbWV0aG9kICIlczo6JXMoKSIgaXMgZmluYWwuJywgJGNsYXNzLT5uYW1lLCAkbWV0aG9kLT5uYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRwYXJlbnQgPSAkY2xhc3M7CiAgICAgICAgd2hpbGUgKCRwYXJlbnQgPSAkcGFyZW50LT5nZXRQYXJlbnRDbGFzcygpKSB7CiAgICAgICAgICAgIGlmIChcc3RkQ2xhc3M6OmNsYXNzICE9PSAkcGFyZW50LT5uYW1lICYmICRwYXJlbnQtPmlzSW50ZXJuYWwoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgZ2VuZXJhdGUgbGF6eSBnaG9zdDogY2xhc3MgIiVzIiBleHRlbmRzICIlcyIgd2hpY2ggaXMgaW50ZXJuYWwuJywgJGNsYXNzLT5uYW1lLCAkcGFyZW50LT5uYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRob29rcyA9ICcnOwogICAgICAgICRwcm9wZXJ0eVNjb3BlcyA9IEh5ZHJhdG9yOjokcHJvcGVydHlTY29wZXNbJGNsYXNzLT5uYW1lXSA/Pz0gSHlkcmF0b3I6OmdldFByb3BlcnR5U2NvcGVzKCRjbGFzcy0+bmFtZSk7CiAgICAgICAgZm9yZWFjaCAoJHByb3BlcnR5U2NvcGVzIGFzICRrZXkgPT4gWyRzY29wZSwgJG5hbWUsICwgJGFjY2Vzc10pIHsKICAgICAgICAgICAgJHByb3BlcnR5U2NvcGVzWyRrID0gIlwwJHNjb3BlXDAkbmFtZSJdID8/ICRwcm9wZXJ0eVNjb3Blc1skayA9ICJcMCpcMCRuYW1lIl0gPz8gJGsgPSAkbmFtZTsKICAgICAgICAgICAgJGZsYWdzID0gJGFjY2VzcyA+PiAyOwoKICAgICAgICAgICAgaWYgKCRrICE9PSAka2V5IHx8ICEoJGFjY2VzcyAmIEh5ZHJhdG9yOjpQUk9QRVJUWV9IQVNfSE9PS1MpIHx8ICRmbGFncyAmIFxSZWZsZWN0aW9uUHJvcGVydHk6OklTX1ZJUlRVQUwpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGZsYWdzICYgKFxSZWZsZWN0aW9uUHJvcGVydHk6OklTX0ZJTkFMIHwgXFJlZmxlY3Rpb25Qcm9wZXJ0eTo6SVNfUFJJVkFURSkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IGdlbmVyYXRlIGxhenkgZ2hvc3Q6IHByb3BlcnR5ICIlczo6JCVzIiBpcyBmaW5hbCBvciBwcml2YXRlKHNldCkuJywgJGNsYXNzLT5uYW1lLCAkbmFtZSkpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkcCA9ICRwcm9wZXJ0eVNjb3Blc1ska11bNF0gPz8gSHlkcmF0b3I6OiRwcm9wZXJ0eVNjb3Blc1skY2xhc3MtPm5hbWVdWyRrXVs0XSA9IG5ldyBcUmVmbGVjdGlvblByb3BlcnR5KCRzY29wZSwgJG5hbWUpOwoKICAgICAgICAgICAgJHR5cGUgPSBzZWxmOjpleHBvcnRUeXBlKCRwKTsKICAgICAgICAgICAgJGhvb2tzIC49ICJcbiAgICAiCiAgICAgICAgICAgICAgICAuKCRwLT5pc1Byb3RlY3RlZCgpID8gJ3Byb3RlY3RlZCcgOiAncHVibGljJykKICAgICAgICAgICAgICAgIC4oJHAtPmlzUHJvdGVjdGVkU2V0KCkgPyAnIHByb3RlY3RlZChzZXQpJyA6ICcnKQogICAgICAgICAgICAgICAgLiIgeyR0eXBlfSBcJHskbmFtZX0iCiAgICAgICAgICAgICAgICAuKCRwLT5oYXNEZWZhdWx0VmFsdWUoKSA/ICcgPSAnLlZhckV4cG9ydGVyOjpleHBvcnQoJHAtPmdldERlZmF1bHRWYWx1ZSgpKSA6ICcnKQogICAgICAgICAgICAgICAgLiIge1xuIjsKCiAgICAgICAgICAgIGZvcmVhY2ggKCRwLT5nZXRIb29rcygpIGFzICRob29rID0+ICRtZXRob2QpIHsKICAgICAgICAgICAgICAgIGlmICgnZ2V0JyA9PT0gJGhvb2spIHsKICAgICAgICAgICAgICAgICAgICAkcmVmID0gKCRtZXRob2QtPnJldHVybnNSZWZlcmVuY2UoKSA/ICcmJyA6ICcnKTsKICAgICAgICAgICAgICAgICAgICAkaG9va3MgLj0gIiAgICAgICAgeyRyZWZ9Z2V0IHsgXCR0aGlzLT5pbml0aWFsaXplTGF6eU9iamVjdCgpOyByZXR1cm4gcGFyZW50OjpcJHskbmFtZX06OmdldCgpOyB9XG4iOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCdzZXQnID09PSAkaG9vaykgewogICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJzID0gc2VsZjo6ZXhwb3J0UGFyYW1ldGVycygkbWV0aG9kLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAkYXJnID0gJyQnLiRtZXRob2QtPmdldFBhcmFtZXRlcnMoKVswXS0+bmFtZTsKICAgICAgICAgICAgICAgICAgICAkaG9va3MgLj0gIiAgICAgICAgc2V0KHskcGFyYW1ldGVyc30pIHsgXCR0aGlzLT5pbml0aWFsaXplTGF6eU9iamVjdCgpOyBwYXJlbnQ6OlwkeyRuYW1lfTo6c2V0KHskYXJnfSk7IH1cbiI7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IGdlbmVyYXRlIGxhenkgZ2hvc3Q6IGhvb2sgIiVzOjolcygpIiBpcyBub3Qgc3VwcG9ydGVkLicsICRjbGFzcy0+bmFtZSwgJG1ldGhvZC0+bmFtZSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkaG9va3MgLj0gIiAgICB9XG4iOwogICAgICAgIH0KCiAgICAgICAgJHByb3BlcnR5U2NvcGVzID0gc2VsZjo6ZXhwb3J0UHJvcGVydHlTY29wZXMoJGNsYXNzLT5uYW1lLCAkcHJvcGVydHlTY29wZXMpOwoKICAgICAgICByZXR1cm4gPDw8RU9QSFAKICAgICAgICAgICAgIGV4dGVuZHMgXFx7JGNsYXNzLT5uYW1lfSBpbXBsZW1lbnRzIFxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxMYXp5T2JqZWN0SW50ZXJmYWNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHVzZSBcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcTGF6eUdob3N0VHJhaXQ7CgogICAgICAgICAgICAgICAgcHJpdmF0ZSBjb25zdCBMQVpZX09CSkVDVF9QUk9QRVJUWV9TQ09QRVMgPSB7JHByb3BlcnR5U2NvcGVzfTsKICAgICAgICAgICAgeyRob29rc319CgogICAgICAgICAgICAvLyBIZWxwIG9wY2FjaGUucHJlbG9hZCBkaXNjb3ZlciBhbHdheXMtbmVlZGVkIHN5bWJvbHMKICAgICAgICAgICAgY2xhc3NfZXhpc3RzKFxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxJbnRlcm5hbFxIeWRyYXRvcjo6Y2xhc3MpOwogICAgICAgICAgICBjbGFzc19leGlzdHMoXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXExhenlPYmplY3RSZWdpc3RyeTo6Y2xhc3MpOwogICAgICAgICAgICBjbGFzc19leGlzdHMoXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXExhenlPYmplY3RTdGF0ZTo6Y2xhc3MpOwoKICAgICAgICAgICAgRU9QSFA7CiAgICB9CgogICAgLyoqCiAgICAgKiBIZWxwcyBnZW5lcmF0ZSBsYXp5LWxvYWRpbmcgZGVjb3JhdG9ycy4KICAgICAqCiAgICAgKiBAcGFyYW0gXFJlZmxlY3Rpb25DbGFzc1tdICRpbnRlcmZhY2VzCiAgICAgKgogICAgICogQHRocm93cyBMb2dpY0V4Y2VwdGlvbiBXaGVuIHRoZSBjbGFzcyBpcyBpbmNvbXBhdGlibGUgd2l0aCB2aXJ0dWFsIHByb3hpZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZUxhenlQcm94eSg/XFJlZmxlY3Rpb25DbGFzcyAkY2xhc3MsIGFycmF5ICRpbnRlcmZhY2VzID0gW10pOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoIWNsYXNzX2V4aXN0cygkY2xhc3M/LT5uYW1lID8/IFxzdGRDbGFzczo6Y2xhc3MsIGZhbHNlKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oXHNwcmludGYoJ0Nhbm5vdCBnZW5lcmF0ZSBsYXp5IHByb3h5OiAiJXMiIGlzIG5vdCBhIGNsYXNzLicsICRjbGFzcy0+bmFtZSkpOwogICAgICAgIH0KICAgICAgICBpZiAoJGNsYXNzPy0+aXNGaW5hbCgpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IGdlbmVyYXRlIGxhenkgcHJveHk6IGNsYXNzICIlcyIgaXMgZmluYWwuJywgJGNsYXNzLT5uYW1lKSk7CiAgICAgICAgfQogICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDQwMCkgewogICAgICAgICAgICByZXR1cm4gc2VsZjo6Z2VuZXJhdGVMZWdhY3lMYXp5UHJveHkoJGNsYXNzLCAkaW50ZXJmYWNlcyk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJGNsYXNzICYmICEkY2xhc3MtPmlzQWJzdHJhY3QoKSkgewogICAgICAgICAgICAkcGFyZW50ID0gJGNsYXNzOwogICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAkZXh0ZW5kc0ludGVybmFsQ2xhc3MgPSAkcGFyZW50LT5pc0ludGVybmFsKCk7CiAgICAgICAgICAgIH0gd2hpbGUgKCEkZXh0ZW5kc0ludGVybmFsQ2xhc3MgJiYgJHBhcmVudCA9ICRwYXJlbnQtPmdldFBhcmVudENsYXNzKCkpOwoKICAgICAgICAgICAgaWYgKCEkZXh0ZW5kc0ludGVybmFsQ2xhc3MpIHsKICAgICAgICAgICAgICAgIHRyaWdnZXJfZGVwcmVjYXRpb24oJ3N5bWZvbnkvdmFyLWV4cG9ydGVyJywgJzcuMycsICdHZW5lcmF0aW5nIGxhenkgcHJveHkgZm9yIGNsYXNzICIlcyIgaXMgZGVwcmVjYXRlZDsgbGV2ZXJhZ2UgbmF0aXZlIGxhenkgb2JqZWN0cyBpbnN0ZWFkLicsICRjbGFzcy0+bmFtZSk7CiAgICAgICAgICAgICAgICAvLyB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oXHNwcmludGYoJ0Nhbm5vdCBnZW5lcmF0ZSBsYXp5IHByb3h5OiBsZXZlcmFnZSBuYXRpdmUgbGF6eSBvYmplY3RzIGluc3RlYWQgZm9yIGNsYXNzICIlcyIuJywgJGNsYXNzLT5uYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRwcm9wZXJ0eVNjb3BlcyA9ICRjbGFzcyA/IEh5ZHJhdG9yOjokcHJvcGVydHlTY29wZXNbJGNsYXNzLT5uYW1lXSA/Pz0gSHlkcmF0b3I6OmdldFByb3BlcnR5U2NvcGVzKCRjbGFzcy0+bmFtZSkgOiBbXTsKICAgICAgICAkYWJzdHJhY3RQcm9wZXJ0aWVzID0gW107CiAgICAgICAgJGhvb2tlZFByb3BlcnRpZXMgPSBbXTsKICAgICAgICBmb3JlYWNoICgkcHJvcGVydHlTY29wZXMgYXMgJGtleSA9PiBbJHNjb3BlLCAkbmFtZSwgLCAkYWNjZXNzXSkgewogICAgICAgICAgICAkcHJvcGVydHlTY29wZXNbJGsgPSAiXDAkc2NvcGVcMCRuYW1lIl0gPz8gJHByb3BlcnR5U2NvcGVzWyRrID0gIlwwKlwwJG5hbWUiXSA/PyAkayA9ICRuYW1lOwogICAgICAgICAgICAkZmxhZ3MgPSAkYWNjZXNzID4+IDI7CgogICAgICAgICAgICBpZiAoJGsgIT09ICRrZXkgfHwgJGZsYWdzICYgXFJlZmxlY3Rpb25Qcm9wZXJ0eTo6SVNfUFJJVkFURSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkZmxhZ3MgJiBcUmVmbGVjdGlvblByb3BlcnR5OjpJU19BQlNUUkFDVCkgewogICAgICAgICAgICAgICAgJGFic3RyYWN0UHJvcGVydGllc1skbmFtZV0gPSAkcHJvcGVydHlTY29wZXNbJGtdWzRdID8/IEh5ZHJhdG9yOjokcHJvcGVydHlTY29wZXNbJGNsYXNzLT5uYW1lXVska11bNF0gPSBuZXcgXFJlZmxlY3Rpb25Qcm9wZXJ0eSgkc2NvcGUsICRuYW1lKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRhYnN0cmFjdFByb3BlcnRpZXNbJG5hbWVdID0gZmFsc2U7CgogICAgICAgICAgICBpZiAoISgkYWNjZXNzICYgSHlkcmF0b3I6OlBST1BFUlRZX0hBU19IT09LUykpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJGZsYWdzICYgXFJlZmxlY3Rpb25Qcm9wZXJ0eTo6SVNfRklOQUwpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IGdlbmVyYXRlIGxhenkgcHJveHk6IHByb3BlcnR5ICIlczo6JCVzIiBpcyBmaW5hbC4nLCAkY2xhc3MtPm5hbWUsICRuYW1lKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwID0gJHByb3BlcnR5U2NvcGVzWyRrXVs0XSA/PyBIeWRyYXRvcjo6JHByb3BlcnR5U2NvcGVzWyRjbGFzcy0+bmFtZV1bJGtdWzRdID0gbmV3IFxSZWZsZWN0aW9uUHJvcGVydHkoJHNjb3BlLCAkbmFtZSk7CiAgICAgICAgICAgICRob29rZWRQcm9wZXJ0aWVzWyRuYW1lXSA9IFskcCwgJHAtPmdldEhvb2tzKCldOwogICAgICAgIH0KCiAgICAgICAgJG1ldGhvZFJlZmxlY3RvcnMgPSBbJGNsYXNzPy0+Z2V0TWV0aG9kcyhcUmVmbGVjdGlvbk1ldGhvZDo6SVNfUFVCTElDIHwgXFJlZmxlY3Rpb25NZXRob2Q6OklTX1BST1RFQ1RFRCkgPz8gW11dOwogICAgICAgIGZvcmVhY2ggKCRpbnRlcmZhY2VzIGFzICRpbnRlcmZhY2UpIHsKICAgICAgICAgICAgaWYgKCEkaW50ZXJmYWNlLT5pc0ludGVyZmFjZSgpKSB7CiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oXHNwcmludGYoJ0Nhbm5vdCBnZW5lcmF0ZSBsYXp5IHByb3h5OiAiJXMiIGlzIG5vdCBhbiBpbnRlcmZhY2UuJywgJGludGVyZmFjZS0+bmFtZSkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRtZXRob2RSZWZsZWN0b3JzW10gPSAkaW50ZXJmYWNlLT5nZXRNZXRob2RzKCk7CgogICAgICAgICAgICBmb3JlYWNoICgkaW50ZXJmYWNlLT5nZXRQcm9wZXJ0aWVzKCkgYXMgJHApIHsKICAgICAgICAgICAgICAgICRhYnN0cmFjdFByb3BlcnRpZXNbJHAtPm5hbWVdID8/PSAkcDsKICAgICAgICAgICAgICAgICRob29rZWRQcm9wZXJ0aWVzWyRwLT5uYW1lXSA/Pz0gWyRwLCBbXV07CiAgICAgICAgICAgICAgICAkaG9va2VkUHJvcGVydGllc1skcC0+bmFtZV1bMV0gKz0gJHAtPmdldEhvb2tzKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRob29rcyA9ICcnOwoKICAgICAgICBmb3JlYWNoIChhcnJheV9maWx0ZXIoJGFic3RyYWN0UHJvcGVydGllcykgYXMgJG5hbWUgPT4gJHApIHsKICAgICAgICAgICAgJHR5cGUgPSBzZWxmOjpleHBvcnRUeXBlKCRwKTsKICAgICAgICAgICAgJGhvb2tzIC49ICJcbiAgICAiCiAgICAgICAgICAgICAgICAuKCRwLT5pc1Byb3RlY3RlZCgpID8gJ3Byb3RlY3RlZCcgOiAncHVibGljJykKICAgICAgICAgICAgICAgIC4oJHAtPmlzUHJvdGVjdGVkU2V0KCkgPyAnIHByb3RlY3RlZChzZXQpJyA6ICcnKQogICAgICAgICAgICAgICAgLiIgeyR0eXBlfSBcJHskbmFtZX07XG4iOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJGhvb2tlZFByb3BlcnRpZXMgYXMgJG5hbWUgPT4gWyRwLCAkbWV0aG9kc10pIHsKICAgICAgICAgICAgaWYgKCRhYnN0cmFjdFByb3BlcnRpZXNbJHAtPm5hbWVdID8/IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkdHlwZSA9IHNlbGY6OmV4cG9ydFR5cGUoJHApOwogICAgICAgICAgICAkaG9va3MgLj0gIlxuICAgICIKICAgICAgICAgICAgICAgIC4oJHAtPmlzUHJvdGVjdGVkKCkgPyAncHJvdGVjdGVkJyA6ICdwdWJsaWMnKQogICAgICAgICAgICAgICAgLigkcC0+aXNQcm90ZWN0ZWRTZXQoKSA/ICcgcHJvdGVjdGVkKHNldCknIDogJycpCiAgICAgICAgICAgICAgICAuIiB7JHR5cGV9IFwkeyRuYW1lfSB7XG4iOwoKICAgICAgICAgICAgZm9yZWFjaCAoJG1ldGhvZHMgYXMgJGhvb2sgPT4gJG1ldGhvZCkgewogICAgICAgICAgICAgICAgaWYgKCdnZXQnID09PSAkaG9vaykgewogICAgICAgICAgICAgICAgICAgICRyZWYgPSAoJG1ldGhvZC0+cmV0dXJuc1JlZmVyZW5jZSgpID8gJyYnIDogJycpOwogICAgICAgICAgICAgICAgICAgICRob29rcyAuPSA8PDxFT1BIUAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHskcmVmfWdldCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcJHRoaXMtPmxhenlPYmplY3RTdGF0ZS0+cmVhbEluc3RhbmNlLT57JHAtPm5hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIEVPUEhQOwogICAgICAgICAgICAgICAgfSBlbHNlaWYgKCdzZXQnID09PSAkaG9vaykgewogICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJzID0gc2VsZjo6ZXhwb3J0UGFyYW1ldGVycygkbWV0aG9kLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAkYXJnID0gJyQnLiRtZXRob2QtPmdldFBhcmFtZXRlcnMoKVswXS0+bmFtZTsKICAgICAgICAgICAgICAgICAgICAkaG9va3MgLj0gPDw8RU9QSFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoeyRwYXJhbWV0ZXJzfSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcJHRoaXMtPmxhenlPYmplY3RTdGF0ZS0+cmVhbEluc3RhbmNlLT57JHAtPm5hbWV9ID0geyRhcmd9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIEVPUEhQOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oXHNwcmludGYoJ0Nhbm5vdCBnZW5lcmF0ZSBsYXp5IHByb3h5OiBob29rICIlczo6JXMoKSIgaXMgbm90IHN1cHBvcnRlZC4nLCAkY2xhc3MtPm5hbWUsICRtZXRob2QtPm5hbWUpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGhvb2tzIC49ICIgICAgfVxuIjsKICAgICAgICB9CgogICAgICAgICRtZXRob2RzID0gW107CiAgICAgICAgJG1ldGhvZFJlZmxlY3RvcnMgPSBhcnJheV9tZXJnZSguLi4kbWV0aG9kUmVmbGVjdG9ycyk7CgogICAgICAgIGZvcmVhY2ggKCRtZXRob2RSZWZsZWN0b3JzIGFzICRtZXRob2QpIHsKICAgICAgICAgICAgaWYgKCdfX2dldCcgIT09IHN0cnRvbG93ZXIoJG1ldGhvZC0+bmFtZSkgfHwgJ21peGVkJyA9PT0gKCR0eXBlID0gc2VsZjo6ZXhwb3J0VHlwZSgkbWV0aG9kKSA/PyAnbWl4ZWQnKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJHRyYWl0ID0gbmV3IFxSZWZsZWN0aW9uTWV0aG9kKExhenlEZWNvcmF0b3JUcmFpdDo6Y2xhc3MsICdfX2dldCcpOwogICAgICAgICAgICAkYm9keSA9IFxhcnJheV9zbGljZShmaWxlKCR0cmFpdC0+Z2V0RmlsZU5hbWUoKSksICR0cmFpdC0+Z2V0U3RhcnRMaW5lKCkgLSAxLCAkdHJhaXQtPmdldEVuZExpbmUoKSAtICR0cmFpdC0+Z2V0U3RhcnRMaW5lKCkpOwogICAgICAgICAgICAkYm9keVswXSA9IHN0cl9yZXBsYWNlKCcpOiBtaXhlZCcsICcpOiAnLiR0eXBlLCAkYm9keVswXSk7CiAgICAgICAgICAgICRtZXRob2RzWydfX2dldCddID0gc3RydHIoaW1wbG9kZSgnJywgJGJvZHkpLicgICAgfScsIFsKICAgICAgICAgICAgICAgICdIeWRyYXRvcicgPT4gJ1xcJy5IeWRyYXRvcjo6Y2xhc3MsCiAgICAgICAgICAgICAgICAnUmVnaXN0cnknID0+ICdcXCcuTGF6eU9iamVjdFJlZ2lzdHJ5OjpjbGFzcywKICAgICAgICAgICAgXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJG1ldGhvZFJlZmxlY3RvcnMgYXMgJG1ldGhvZCkgewogICAgICAgICAgICBpZiAoKCRtZXRob2QtPmlzU3RhdGljKCkgJiYgISRtZXRob2QtPmlzQWJzdHJhY3QoKSkgfHwgaXNzZXQoJG1ldGhvZHNbJGxjTmFtZSA9IHN0cnRvbG93ZXIoJG1ldGhvZC0+bmFtZSldKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRtZXRob2QtPmlzRmluYWwoKSkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgZ2VuZXJhdGUgbGF6eSBwcm94eTogbWV0aG9kICIlczo6JXMoKSIgaXMgZmluYWwuJywgJGNsYXNzLT5uYW1lLCAkbWV0aG9kLT5uYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKG1ldGhvZF9leGlzdHMoTGF6eURlY29yYXRvclRyYWl0OjpjbGFzcywgJG1ldGhvZC0+bmFtZSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2lnbmF0dXJlID0gc2VsZjo6ZXhwb3J0U2lnbmF0dXJlKCRtZXRob2QsIHRydWUsICRhcmdzKTsKCiAgICAgICAgICAgIGlmICgkbWV0aG9kLT5pc1N0YXRpYygpKSB7CiAgICAgICAgICAgICAgICAkYm9keSA9ICIgICAgICAgIHRocm93IG5ldyBcQmFkTWV0aG9kQ2FsbEV4Y2VwdGlvbignQ2Fubm90IGZvcndhcmQgYWJzdHJhY3QgbWV0aG9kIFwieyRtZXRob2QtPmNsYXNzfTo6eyRtZXRob2QtPm5hbWV9KClcIi4nKTsiOwogICAgICAgICAgICB9IGVsc2VpZiAoc3RyX2VuZHNfd2l0aCgkc2lnbmF0dXJlLCAnKTogbmV2ZXInKSB8fCBzdHJfZW5kc193aXRoKCRzaWduYXR1cmUsICcpOiB2b2lkJykpIHsKICAgICAgICAgICAgICAgICRib2R5ID0gPDw8RU9QSFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwkdGhpcy0+bGF6eU9iamVjdFN0YXRlLT5yZWFsSW5zdGFuY2UtPnskbWV0aG9kLT5uYW1lfSh7JGFyZ3N9KTsKICAgICAgICAgICAgICAgICAgICBFT1BIUDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICRtYXlSZXR1cm5UaGlzID0gZmFsc2U7CiAgICAgICAgICAgICAgICBmb3JlYWNoIChwcmVnX3NwbGl0KCcvWygpfCZdKysvJywgc2VsZjo6ZXhwb3J0VHlwZSgkbWV0aG9kKSA/PyAnc3RhdGljJykgYXMgJHR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoXGluX2FycmF5KCR0eXBlID0gbHRyaW0oJHR5cGUsICc/JyksIFsnc3RhdGljJywgJ29iamVjdCddLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAkbWF5UmV0dXJuVGhpcyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChbJGNsYXNzLCAuLi4kaW50ZXJmYWNlc10gYXMgJHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRyICYmIGlzX2EoJHItPm5hbWUsICR0eXBlLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1heVJldHVyblRoaXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJG1ldGhvZC0+cmV0dXJuc1JlZmVyZW5jZSgpIHx8ICEkbWF5UmV0dXJuVGhpcykgewogICAgICAgICAgICAgICAgICAgICRib2R5ID0gPDw8RU9QSFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCR0aGlzLT5sYXp5T2JqZWN0U3RhdGUtPnJlYWxJbnN0YW5jZS0+eyRtZXRob2QtPm5hbWV9KHskYXJnc30pOwogICAgICAgICAgICAgICAgICAgICAgICBFT1BIUDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJGJvZHkgPSA8PDxFT1BIUAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwkezB9ID0gXCR0aGlzLT5sYXp5T2JqZWN0U3RhdGUtPnJlYWxJbnN0YW5jZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcJHsxfSA9IFwkezB9LT57JG1ldGhvZC0+bmFtZX0oeyRhcmdzfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaCAodHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcJHsxfSA9PT0gXCR7MH0gPT4gXCR0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhXCR7MX0gaW5zdGFuY2VvZiBcJHswfSB8fCAhXCR7MH0gaW5zdGFuY2VvZiBcJHsxfSA9PiBcJHsxfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gXCR0aGlzLT5sYXp5T2JqZWN0U3RhdGUtPmNsb25lSW5zdGFuY2UgPSYgXCR7MX0gPT4gY2xvbmUgXCR0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIEVPUEhQOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRtZXRob2RzWyRsY05hbWVdID0gIiAgICB7JHNpZ25hdHVyZX1cbiAgICB7XG57JGJvZHl9XG4gICAgfSI7CiAgICAgICAgfQoKICAgICAgICAkdHlwZXMgPSAkaW50ZXJmYWNlcyA9IGFycmF5X3VuaXF1ZShhcnJheV9jb2x1bW4oJGludGVyZmFjZXMsICduYW1lJykpOwogICAgICAgICRpbnRlcmZhY2VzW10gPSBMYXp5T2JqZWN0SW50ZXJmYWNlOjpjbGFzczsKICAgICAgICAkaW50ZXJmYWNlcyA9IGltcGxvZGUoJywgXFwnLCAkaW50ZXJmYWNlcyk7CiAgICAgICAgJHBhcmVudCA9ICRjbGFzcyA/ICcgZXh0ZW5kcyBcXCcuJGNsYXNzLT5uYW1lIDogJyc7CiAgICAgICAgYXJyYXlfdW5zaGlmdCgkdHlwZXMsICRjbGFzcyA/ICdwYXJlbnQnIDogJycpOwogICAgICAgICR0eXBlID0gbHRyaW0oaW1wbG9kZSgnJlxcJywgJHR5cGVzKSwgJyYnKTsKCiAgICAgICAgaWYgKCEkY2xhc3MpIHsKICAgICAgICAgICAgJHRyYWl0ID0gbmV3IFxSZWZsZWN0aW9uTWV0aG9kKExhenlEZWNvcmF0b3JUcmFpdDo6Y2xhc3MsICdpbml0aWFsaXplTGF6eU9iamVjdCcpOwogICAgICAgICAgICAkYm9keSA9IFxhcnJheV9zbGljZShmaWxlKCR0cmFpdC0+Z2V0RmlsZU5hbWUoKSksICR0cmFpdC0+Z2V0U3RhcnRMaW5lKCkgLSAxLCAkdHJhaXQtPmdldEVuZExpbmUoKSAtICR0cmFpdC0+Z2V0U3RhcnRMaW5lKCkpOwogICAgICAgICAgICAkYm9keVswXSA9IHN0cl9yZXBsYWNlKCcpOiBwYXJlbnQnLCAnKTogJy4kdHlwZSwgJGJvZHlbMF0pOwogICAgICAgICAgICAkbWV0aG9kcyA9IFsnaW5pdGlhbGl6ZUxhenlPYmplY3QnID0+IGltcGxvZGUoJycsICRib2R5KS4nICAgIH0nXSArICRtZXRob2RzOwogICAgICAgIH0KICAgICAgICAkYm9keSA9ICRtZXRob2RzID8gIlxuIi5pbXBsb2RlKCJcblxuIiwgJG1ldGhvZHMpLiJcbiIgOiAnJzsKICAgICAgICAkcHJvcGVydHlTY29wZXMgPSAkY2xhc3MgPyBzZWxmOjpleHBvcnRQcm9wZXJ0eVNjb3BlcygkY2xhc3MtPm5hbWUsICRwcm9wZXJ0eVNjb3BlcykgOiAnW10nOwogICAgICAgICRsYXp5UHJveHlUcmFpdFN0YXRlbWVudCA9IFtdOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICRjbGFzcz8tPmhhc01ldGhvZCgnX191bnNlcmlhbGl6ZScpCiAgICAgICAgICAgICYmICEkY2xhc3MtPmdldE1ldGhvZCgnX191bnNlcmlhbGl6ZScpLT5nZXRQYXJhbWV0ZXJzKClbMF0tPmdldFR5cGUoKQogICAgICAgICkgewogICAgICAgICAgICAvLyBmaXggY29udHJhdmFyaWFuY2UgdHlwZSBwcm9ibGVtIHdoZW4gJGNsYXNzIGRlY2xhcmVzIGEgYF9fdW5zZXJpYWxpemUoKWAgbWV0aG9kIHdpdGhvdXQgdHlwZWhpbnQuCiAgICAgICAgICAgICRsYXp5UHJveHlUcmFpdFN0YXRlbWVudFtdID0gJ19fdW5zZXJpYWxpemUgYXMgcHJpdmF0ZSBfX2RvVW5zZXJpYWxpemU7JzsKCiAgICAgICAgICAgICRib2R5IC49IDw8PEVPUEhQCgogICAgICAgICAgICAgICAgICAgIHB1YmxpYyBmdW5jdGlvbiBfX3Vuc2VyaWFsaXplKFwkZGF0YSk6IHZvaWQKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFwkdGhpcy0+X19kb1Vuc2VyaWFsaXplKFwkZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIEVPUEhQOwogICAgICAgIH0KCiAgICAgICAgaWYgKCRsYXp5UHJveHlUcmFpdFN0YXRlbWVudCkgewogICAgICAgICAgICAkbGF6eVByb3h5VHJhaXRTdGF0ZW1lbnQgPSBpbXBsb2RlKCJcbiAgICAgICAgIiwgJGxhenlQcm94eVRyYWl0U3RhdGVtZW50KTsKICAgICAgICAgICAgJGxhenlQcm94eVRyYWl0U3RhdGVtZW50ID0gPDw8RU9QSFAKICAgICAgICAgICAgICAgIHVzZSBcU3ltZm9ueVxDb21wb25lbnRcVmFyRXhwb3J0ZXJcSW50ZXJuYWxcTGF6eURlY29yYXRvclRyYWl0IHsKICAgICAgICAgICAgICAgICAgICAgICAgeyRsYXp5UHJveHlUcmFpdFN0YXRlbWVudH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBFT1BIUDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGF6eVByb3h5VHJhaXRTdGF0ZW1lbnQgPSA8PDxFT1BIUAogICAgICAgICAgICAgICAgdXNlIFxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxJbnRlcm5hbFxMYXp5RGVjb3JhdG9yVHJhaXQ7CiAgICAgICAgICAgICAgICBFT1BIUDsKICAgICAgICB9CgogICAgICAgIHJldHVybiA8PDxFT1BIUAogICAgICAgICAgICB7JHBhcmVudH0gaW1wbGVtZW50cyBcXHskaW50ZXJmYWNlc30KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgeyRsYXp5UHJveHlUcmFpdFN0YXRlbWVudH0KCiAgICAgICAgICAgICAgICBwcml2YXRlIGNvbnN0IExBWllfT0JKRUNUX1BST1BFUlRZX1NDT1BFUyA9IHskcHJvcGVydHlTY29wZXN9OwogICAgICAgICAgICB7JGhvb2tzfXskYm9keX19CgogICAgICAgICAgICAvLyBIZWxwIG9wY2FjaGUucHJlbG9hZCBkaXNjb3ZlciBhbHdheXMtbmVlZGVkIHN5bWJvbHMKICAgICAgICAgICAgY2xhc3NfZXhpc3RzKFxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxJbnRlcm5hbFxIeWRyYXRvcjo6Y2xhc3MpOwogICAgICAgICAgICBjbGFzc19leGlzdHMoXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXExhenlPYmplY3RSZWdpc3RyeTo6Y2xhc3MpOwoKICAgICAgICAgICAgRU9QSFA7CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gZ2VuZXJhdGVMZWdhY3lMYXp5UHJveHkoP1xSZWZsZWN0aW9uQ2xhc3MgJGNsYXNzLCBhcnJheSAkaW50ZXJmYWNlcyk6IHN0cmluZwogICAgewogICAgICAgIGlmIChcUEhQX1ZFUlNJT05fSUQgPCA4MDMwMCAmJiAkY2xhc3M/LT5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IExvZ2ljRXhjZXB0aW9uKFxzcHJpbnRmKCdDYW5ub3QgZ2VuZXJhdGUgbGF6eSBwcm94eSB3aXRoIFBIUCA8IDguMzogY2xhc3MgIiVzIiBpcyByZWFkb25seS4nLCAkY2xhc3MtPm5hbWUpKTsKICAgICAgICB9CgogICAgICAgICRwcm9wZXJ0eVNjb3BlcyA9ICRjbGFzcyA/IEh5ZHJhdG9yOjokcHJvcGVydHlTY29wZXNbJGNsYXNzLT5uYW1lXSA/Pz0gSHlkcmF0b3I6OmdldFByb3BlcnR5U2NvcGVzKCRjbGFzcy0+bmFtZSkgOiBbXTsKICAgICAgICAkbWV0aG9kUmVmbGVjdG9ycyA9IFskY2xhc3M/LT5nZXRNZXRob2RzKFxSZWZsZWN0aW9uTWV0aG9kOjpJU19QVUJMSUMgfCBcUmVmbGVjdGlvbk1ldGhvZDo6SVNfUFJPVEVDVEVEKSA/PyBbXV07CiAgICAgICAgZm9yZWFjaCAoJGludGVyZmFjZXMgYXMgJGludGVyZmFjZSkgewogICAgICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmlzSW50ZXJmYWNlKCkpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBMb2dpY0V4Y2VwdGlvbihcc3ByaW50ZignQ2Fubm90IGdlbmVyYXRlIGxhenkgcHJveHk6ICIlcyIgaXMgbm90IGFuIGludGVyZmFjZS4nLCAkaW50ZXJmYWNlLT5uYW1lKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1ldGhvZFJlZmxlY3RvcnNbXSA9ICRpbnRlcmZhY2UtPmdldE1ldGhvZHMoKTsKICAgICAgICB9CgogICAgICAgICRleHRlbmRzSW50ZXJuYWxDbGFzcyA9IGZhbHNlOwogICAgICAgIGlmICgkcGFyZW50ID0gJGNsYXNzKSB7CiAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICRleHRlbmRzSW50ZXJuYWxDbGFzcyA9IFxzdGRDbGFzczo6Y2xhc3MgIT09ICRwYXJlbnQtPm5hbWUgJiYgJHBhcmVudC0+aXNJbnRlcm5hbCgpOwogICAgICAgICAgICB9IHdoaWxlICghJGV4dGVuZHNJbnRlcm5hbENsYXNzICYmICRwYXJlbnQgPSAkcGFyZW50LT5nZXRQYXJlbnRDbGFzcygpKTsKICAgICAgICB9CiAgICAgICAgJG1ldGhvZHNIYXZlVG9CZVByb3hpZWQgPSAkZXh0ZW5kc0ludGVybmFsQ2xhc3M7CiAgICAgICAgJG1ldGhvZHMgPSBbXTsKICAgICAgICAkbWV0aG9kUmVmbGVjdG9ycyA9IGFycmF5X21lcmdlKC4uLiRtZXRob2RSZWZsZWN0b3JzKTsKCiAgICAgICAgZm9yZWFjaCAoJG1ldGhvZFJlZmxlY3RvcnMgYXMgJG1ldGhvZCkgewogICAgICAgICAgICBpZiAoJ19fZ2V0JyAhPT0gc3RydG9sb3dlcigkbWV0aG9kLT5uYW1lKSB8fCAnbWl4ZWQnID09PSAoJHR5cGUgPSBzZWxmOjpleHBvcnRUeXBlKCRtZXRob2QpID8/ICdtaXhlZCcpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkbWV0aG9kc0hhdmVUb0JlUHJveGllZCA9IHRydWU7CiAgICAgICAgICAgICR0cmFpdCA9IG5ldyBcUmVmbGVjdGlvbk1ldGhvZChMYXp5UHJveHlUcmFpdDo6Y2xhc3MsICdfX2dldCcpOwogICAgICAgICAgICAkYm9keSA9IFxhcnJheV9zbGljZShmaWxlKCR0cmFpdC0+Z2V0RmlsZU5hbWUoKSksICR0cmFpdC0+Z2V0U3RhcnRMaW5lKCkgLSAxLCAkdHJhaXQtPmdldEVuZExpbmUoKSAtICR0cmFpdC0+Z2V0U3RhcnRMaW5lKCkpOwogICAgICAgICAgICAkYm9keVswXSA9IHN0cl9yZXBsYWNlKCcpOiBtaXhlZCcsICcpOiAnLiR0eXBlLCAkYm9keVswXSk7CiAgICAgICAgICAgICRtZXRob2RzWydfX2dldCddID0gc3RydHIoaW1wbG9kZSgnJywgJGJvZHkpLicgICAgfScsIFsKICAgICAgICAgICAgICAgICdIeWRyYXRvcicgPT4gJ1xcJy5IeWRyYXRvcjo6Y2xhc3MsCiAgICAgICAgICAgICAgICAnUmVnaXN0cnknID0+ICdcXCcuTGF6eU9iamVjdFJlZ2lzdHJ5OjpjbGFzcywKICAgICAgICAgICAgXSk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgZm9yZWFjaCAoJG1ldGhvZFJlZmxlY3RvcnMgYXMgJG1ldGhvZCkgewogICAgICAgICAgICBpZiAoKCRtZXRob2QtPmlzU3RhdGljKCkgJiYgISRtZXRob2QtPmlzQWJzdHJhY3QoKSkgfHwgaXNzZXQoJG1ldGhvZHNbJGxjTmFtZSA9IHN0cnRvbG93ZXIoJG1ldGhvZC0+bmFtZSldKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCRtZXRob2QtPmlzRmluYWwoKSkgewogICAgICAgICAgICAgICAgaWYgKCRleHRlbmRzSW50ZXJuYWxDbGFzcyB8fCAkbWV0aG9kc0hhdmVUb0JlUHJveGllZCB8fCBtZXRob2RfZXhpc3RzKExhenlQcm94eVRyYWl0OjpjbGFzcywgJG1ldGhvZC0+bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTG9naWNFeGNlcHRpb24oXHNwcmludGYoJ0Nhbm5vdCBnZW5lcmF0ZSBsYXp5IHByb3h5OiBtZXRob2QgIiVzOjolcygpIiBpcyBmaW5hbC4nLCAkY2xhc3MtPm5hbWUsICRtZXRob2QtPm5hbWUpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChtZXRob2RfZXhpc3RzKExhenlQcm94eVRyYWl0OjpjbGFzcywgJG1ldGhvZC0+bmFtZSkgfHwgKCRtZXRob2QtPmlzUHJvdGVjdGVkKCkgJiYgISRtZXRob2QtPmlzQWJzdHJhY3QoKSkpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkc2lnbmF0dXJlID0gc2VsZjo6ZXhwb3J0U2lnbmF0dXJlKCRtZXRob2QsIHRydWUsICRhcmdzKTsKICAgICAgICAgICAgJHBhcmVudENhbGwgPSAkbWV0aG9kLT5pc0Fic3RyYWN0KCkgPyAidGhyb3cgbmV3IFxCYWRNZXRob2RDYWxsRXhjZXB0aW9uKCdDYW5ub3QgZm9yd2FyZCBhYnN0cmFjdCBtZXRob2QgXCJ7JG1ldGhvZC0+Y2xhc3N9Ojp7JG1ldGhvZC0+bmFtZX0oKVwiLicpIiA6ICJwYXJlbnQ6OnskbWV0aG9kLT5uYW1lfSh7JGFyZ3N9KSI7CgogICAgICAgICAgICBpZiAoJG1ldGhvZC0+aXNTdGF0aWMoKSkgewogICAgICAgICAgICAgICAgJGJvZHkgPSAiICAgICAgICAkcGFyZW50Q2FsbDsiOwogICAgICAgICAgICB9IGVsc2VpZiAoc3RyX2VuZHNfd2l0aCgkc2lnbmF0dXJlLCAnKTogbmV2ZXInKSB8fCBzdHJfZW5kc193aXRoKCRzaWduYXR1cmUsICcpOiB2b2lkJykpIHsKICAgICAgICAgICAgICAgICRib2R5ID0gPDw8RU9QSFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldChcJHRoaXMtPmxhenlPYmplY3RTdGF0ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXCR0aGlzLT5sYXp5T2JqZWN0U3RhdGUtPnJlYWxJbnN0YW5jZSA/Pz0gKFwkdGhpcy0+bGF6eU9iamVjdFN0YXRlLT5pbml0aWFsaXplcikoKSktPnskbWV0aG9kLT5uYW1lfSh7JGFyZ3N9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyRwYXJlbnRDYWxsfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBFT1BIUDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghJG1ldGhvZHNIYXZlVG9CZVByb3hpZWQgJiYgISRtZXRob2QtPmlzQWJzdHJhY3QoKSkgewogICAgICAgICAgICAgICAgICAgIC8vIFNraXAgcHJveHlpbmcgbWV0aG9kcyB0aGF0IG1pZ2h0IHJldHVybiAkdGhpcwogICAgICAgICAgICAgICAgICAgIGZvcmVhY2ggKHByZWdfc3BsaXQoJy9bKCl8Jl0rKy8nLCBzZWxmOjpleHBvcnRUeXBlKCRtZXRob2QpID8/ICdzdGF0aWMnKSBhcyAkdHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoXGluX2FycmF5KCR0eXBlID0gbHRyaW0oJHR5cGUsICc/JyksIFsnc3RhdGljJywgJ29iamVjdCddLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIChbJGNsYXNzLCAuLi4kaW50ZXJmYWNlc10gYXMgJHIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkciAmJiBpc19hKCRyLT5uYW1lLCAkdHlwZSwgdHJ1ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRib2R5ID0gPDw8RU9QSFAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc3NldChcJHRoaXMtPmxhenlPYmplY3RTdGF0ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFwkdGhpcy0+bGF6eU9iamVjdFN0YXRlLT5yZWFsSW5zdGFuY2UgPz89IChcJHRoaXMtPmxhenlPYmplY3RTdGF0ZS0+aW5pdGlhbGl6ZXIpKCkpLT57JG1ldGhvZC0+bmFtZX0oeyRhcmdzfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHskcGFyZW50Q2FsbH07CiAgICAgICAgICAgICAgICAgICAgRU9QSFA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG1ldGhvZHNbJGxjTmFtZV0gPSAiICAgIHskc2lnbmF0dXJlfVxuICAgIHtcbnskYm9keX1cbiAgICB9IjsKICAgICAgICB9CgogICAgICAgICR0eXBlcyA9ICRpbnRlcmZhY2VzID0gYXJyYXlfdW5pcXVlKGFycmF5X2NvbHVtbigkaW50ZXJmYWNlcywgJ25hbWUnKSk7CiAgICAgICAgJGludGVyZmFjZXNbXSA9IExhenlPYmplY3RJbnRlcmZhY2U6OmNsYXNzOwogICAgICAgICRpbnRlcmZhY2VzID0gaW1wbG9kZSgnLCBcXCcsICRpbnRlcmZhY2VzKTsKICAgICAgICAkcGFyZW50ID0gJGNsYXNzID8gJyBleHRlbmRzIFxcJy4kY2xhc3MtPm5hbWUgOiAnJzsKICAgICAgICBhcnJheV91bnNoaWZ0KCR0eXBlcywgJGNsYXNzID8gJ3BhcmVudCcgOiAnJyk7CiAgICAgICAgJHR5cGUgPSBsdHJpbShpbXBsb2RlKCcmXFwnLCAkdHlwZXMpLCAnJicpOwoKICAgICAgICBpZiAoISRjbGFzcykgewogICAgICAgICAgICAkdHJhaXQgPSBuZXcgXFJlZmxlY3Rpb25NZXRob2QoTGF6eVByb3h5VHJhaXQ6OmNsYXNzLCAnaW5pdGlhbGl6ZUxhenlPYmplY3QnKTsKICAgICAgICAgICAgJGJvZHkgPSBcYXJyYXlfc2xpY2UoZmlsZSgkdHJhaXQtPmdldEZpbGVOYW1lKCkpLCAkdHJhaXQtPmdldFN0YXJ0TGluZSgpIC0gMSwgJHRyYWl0LT5nZXRFbmRMaW5lKCkgLSAkdHJhaXQtPmdldFN0YXJ0TGluZSgpKTsKICAgICAgICAgICAgJGJvZHlbMF0gPSBzdHJfcmVwbGFjZSgnKTogcGFyZW50JywgJyk6ICcuJHR5cGUsICRib2R5WzBdKTsKICAgICAgICAgICAgJG1ldGhvZHMgPSBbJ2luaXRpYWxpemVMYXp5T2JqZWN0JyA9PiBpbXBsb2RlKCcnLCAkYm9keSkuJyAgICB9J10gKyAkbWV0aG9kczsKICAgICAgICB9CiAgICAgICAgJGJvZHkgPSAkbWV0aG9kcyA/ICJcbiIuaW1wbG9kZSgiXG5cbiIsICRtZXRob2RzKS4iXG4iIDogJyc7CiAgICAgICAgJHByb3BlcnR5U2NvcGVzID0gJGNsYXNzID8gc2VsZjo6ZXhwb3J0UHJvcGVydHlTY29wZXMoJGNsYXNzLT5uYW1lLCAkcHJvcGVydHlTY29wZXMpIDogJ1tdJzsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkY2xhc3M/LT5oYXNNZXRob2QoJ19fdW5zZXJpYWxpemUnKQogICAgICAgICAgICAmJiAhJGNsYXNzLT5nZXRNZXRob2QoJ19fdW5zZXJpYWxpemUnKS0+Z2V0UGFyYW1ldGVycygpWzBdLT5nZXRUeXBlKCkKICAgICAgICApIHsKICAgICAgICAgICAgLy8gZml4IGNvbnRyYXZhcmlhbmNlIHR5cGUgcHJvYmxlbSB3aGVuICRjbGFzcyBkZWNsYXJlcyBhIGBfX3Vuc2VyaWFsaXplKClgIG1ldGhvZCB3aXRob3V0IHR5cGVoaW50LgogICAgICAgICAgICAkbGF6eVByb3h5VHJhaXRTdGF0ZW1lbnQgPSA8PDxFT1BIUAogICAgICAgICAgICAgICAgdXNlIFxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxMYXp5UHJveHlUcmFpdCB7CiAgICAgICAgICAgICAgICAgICAgICAgIF9fdW5zZXJpYWxpemUgYXMgcHJpdmF0ZSBfX2RvVW5zZXJpYWxpemU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgRU9QSFA7CgogICAgICAgICAgICAkYm9keSAuPSA8PDxFT1BIUAoKICAgICAgICAgICAgICAgICAgICBwdWJsaWMgZnVuY3Rpb24gX191bnNlcmlhbGl6ZShcJGRhdGEpOiB2b2lkCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBcJHRoaXMtPl9fZG9VbnNlcmlhbGl6ZShcJGRhdGEpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBFT1BIUDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGF6eVByb3h5VHJhaXRTdGF0ZW1lbnQgPSA8PDxFT1BIUAogICAgICAgICAgICAgICAgdXNlIFxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxMYXp5UHJveHlUcmFpdDsKICAgICAgICAgICAgICAgIEVPUEhQOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIDw8PEVPUEhQCiAgICAgICAgICAgIHskcGFyZW50fSBpbXBsZW1lbnRzIFxceyRpbnRlcmZhY2VzfQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB7JGxhenlQcm94eVRyYWl0U3RhdGVtZW50fQoKICAgICAgICAgICAgICAgIHByaXZhdGUgY29uc3QgTEFaWV9PQkpFQ1RfUFJPUEVSVFlfU0NPUEVTID0geyRwcm9wZXJ0eVNjb3Blc307CiAgICAgICAgICAgIHskYm9keX19CgogICAgICAgICAgICAvLyBIZWxwIG9wY2FjaGUucHJlbG9hZCBkaXNjb3ZlciBhbHdheXMtbmVlZGVkIHN5bWJvbHMKICAgICAgICAgICAgY2xhc3NfZXhpc3RzKFxTeW1mb255XENvbXBvbmVudFxWYXJFeHBvcnRlclxJbnRlcm5hbFxIeWRyYXRvcjo6Y2xhc3MpOwogICAgICAgICAgICBjbGFzc19leGlzdHMoXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXExhenlPYmplY3RSZWdpc3RyeTo6Y2xhc3MpOwogICAgICAgICAgICBjbGFzc19leGlzdHMoXFN5bWZvbnlcQ29tcG9uZW50XFZhckV4cG9ydGVyXEludGVybmFsXExhenlPYmplY3RTdGF0ZTo6Y2xhc3MpOwoKICAgICAgICAgICAgRU9QSFA7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBleHBvcnRQYXJhbWV0ZXJzKFxSZWZsZWN0aW9uRnVuY3Rpb25BYnN0cmFjdCAkZnVuY3Rpb24sIGJvb2wgJHdpdGhQYXJhbWV0ZXJUeXBlcyA9IHRydWUsID9zdHJpbmcgJiRhcmdzID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgICRieVJlZkluZGV4ID0gMDsKICAgICAgICAkYXJncyA9ICcnOwogICAgICAgICRwYXJhbSA9IG51bGw7CiAgICAgICAgJHBhcmFtZXRlcnMgPSBbXTsKICAgICAgICAkbmFtZXNwYWNlID0gJGZ1bmN0aW9uIGluc3RhbmNlb2YgXFJlZmxlY3Rpb25NZXRob2QgPyAkZnVuY3Rpb24tPmNsYXNzIDogJGZ1bmN0aW9uLT5nZXROYW1lc3BhY2VOYW1lKCkuJ1xcJzsKICAgICAgICAkbmFtZXNwYWNlID0gc3Vic3RyKCRuYW1lc3BhY2UsIDAsIHN0cnJwb3MoJG5hbWVzcGFjZSwgJ1xcJykgPzogMCk7CiAgICAgICAgZm9yZWFjaCAoJGZ1bmN0aW9uLT5nZXRQYXJhbWV0ZXJzKCkgYXMgJHBhcmFtKSB7CiAgICAgICAgICAgICRwYXJhbWV0ZXJzW10gPSAoJHBhcmFtLT5nZXRBdHRyaWJ1dGVzKFxTZW5zaXRpdmVQYXJhbWV0ZXI6OmNsYXNzKSA/ICcjW1xTZW5zaXRpdmVQYXJhbWV0ZXJdICcgOiAnJykKICAgICAgICAgICAgICAgIC4oJHdpdGhQYXJhbWV0ZXJUeXBlcyAmJiAkcGFyYW0tPmhhc1R5cGUoKSA/IHNlbGY6OmV4cG9ydFR5cGUoJHBhcmFtKS4nICcgOiAnJykKICAgICAgICAgICAgICAgIC4oJHBhcmFtLT5pc1Bhc3NlZEJ5UmVmZXJlbmNlKCkgPyAnJicgOiAnJykKICAgICAgICAgICAgICAgIC4oJHBhcmFtLT5pc1ZhcmlhZGljKCkgPyAnLi4uJyA6ICcnKS4nJCcuJHBhcmFtLT5uYW1lCiAgICAgICAgICAgICAgICAuKCRwYXJhbS0+aXNPcHRpb25hbCgpICYmICEkcGFyYW0tPmlzVmFyaWFkaWMoKSA/ICcgPSAnLnNlbGY6OmV4cG9ydERlZmF1bHQoJHBhcmFtLCAkbmFtZXNwYWNlKSA6ICcnKTsKICAgICAgICAgICAgaWYgKCRwYXJhbS0+aXNQYXNzZWRCeVJlZmVyZW5jZSgpKSB7CiAgICAgICAgICAgICAgICAkYnlSZWZJbmRleCA9IDEgKyAkcGFyYW0tPmdldFBvc2l0aW9uKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJGFyZ3MgLj0gKCRwYXJhbS0+aXNWYXJpYWRpYygpID8gJy4uLiQnIDogJyQnKS4kcGFyYW0tPm5hbWUuJywgJzsKICAgICAgICB9CgogICAgICAgIGlmICghJHBhcmFtIHx8ICEkYnlSZWZJbmRleCkgewogICAgICAgICAgICAkYXJncyA9ICcuLi5cZnVuY19nZXRfYXJncygpJzsKICAgICAgICB9IGVsc2VpZiAoJHBhcmFtLT5pc1ZhcmlhZGljKCkpIHsKICAgICAgICAgICAgJGFyZ3MgPSBzdWJzdHIoJGFyZ3MsIDAsIC0yKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkYXJncyA9IGV4cGxvZGUoJywgJywgJGFyZ3MsIDEgKyAkYnlSZWZJbmRleCk7CiAgICAgICAgICAgICRhcmdzWyRieVJlZkluZGV4XSA9IFxzcHJpbnRmKCcuLi5cYXJyYXlfc2xpY2UoXGZ1bmNfZ2V0X2FyZ3MoKSwgJWQpJywgJGJ5UmVmSW5kZXgpOwogICAgICAgICAgICAkYXJncyA9IGltcGxvZGUoJywgJywgJGFyZ3MpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJywgJywgJHBhcmFtZXRlcnMpOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhwb3J0U2lnbmF0dXJlKFxSZWZsZWN0aW9uRnVuY3Rpb25BYnN0cmFjdCAkZnVuY3Rpb24sIGJvb2wgJHdpdGhQYXJhbWV0ZXJUeXBlcyA9IHRydWUsID9zdHJpbmcgJiRhcmdzID0gbnVsbCk6IHN0cmluZwogICAgewogICAgICAgICRwYXJhbWV0ZXJzID0gc2VsZjo6ZXhwb3J0UGFyYW1ldGVycygkZnVuY3Rpb24sICR3aXRoUGFyYW1ldGVyVHlwZXMsICRhcmdzKTsKCiAgICAgICAgJHNpZ25hdHVyZSA9ICdmdW5jdGlvbiAnLigkZnVuY3Rpb24tPnJldHVybnNSZWZlcmVuY2UoKSA/ICcmJyA6ICcnKQogICAgICAgICAgICAuKCRmdW5jdGlvbi0+aXNDbG9zdXJlKCkgPyAnJyA6ICRmdW5jdGlvbi0+bmFtZSkuJygnLiRwYXJhbWV0ZXJzLicpJzsKCiAgICAgICAgaWYgKCRmdW5jdGlvbiBpbnN0YW5jZW9mIFxSZWZsZWN0aW9uTWV0aG9kKSB7CiAgICAgICAgICAgICRzaWduYXR1cmUgPSAoJGZ1bmN0aW9uLT5pc1B1YmxpYygpID8gJ3B1YmxpYyAnIDogKCRmdW5jdGlvbi0+aXNQcm90ZWN0ZWQoKSA/ICdwcm90ZWN0ZWQgJyA6ICdwcml2YXRlICcpKQogICAgICAgICAgICAgICAgLigkZnVuY3Rpb24tPmlzU3RhdGljKCkgPyAnc3RhdGljICcgOiAnJykuJHNpZ25hdHVyZTsKICAgICAgICB9CiAgICAgICAgaWYgKCRmdW5jdGlvbi0+aGFzUmV0dXJuVHlwZSgpKSB7CiAgICAgICAgICAgICRzaWduYXR1cmUgLj0gJzogJy5zZWxmOjpleHBvcnRUeXBlKCRmdW5jdGlvbik7CiAgICAgICAgfQoKICAgICAgICBzdGF0aWMgJGdldFByb3RvdHlwZTsKICAgICAgICAkZ2V0UHJvdG90eXBlID8/PSAobmV3IFxSZWZsZWN0aW9uTWV0aG9kKFxSZWZsZWN0aW9uTWV0aG9kOjpjbGFzcywgJ2dldFByb3RvdHlwZScpKS0+aW52b2tlKC4uLik7CgogICAgICAgIHdoaWxlICgkZnVuY3Rpb24pIHsKICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aGFzVGVudGF0aXZlUmV0dXJuVHlwZSgpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyNbXFJldHVyblR5cGVXaWxsQ2hhbmdlXSAnLiRzaWduYXR1cmU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAkZnVuY3Rpb24gPSAkZnVuY3Rpb24gaW5zdGFuY2VvZiBcUmVmbGVjdGlvbk1ldGhvZCAmJiAkZnVuY3Rpb24tPmlzQWJzdHJhY3QoKSA/IGZhbHNlIDogJGdldFByb3RvdHlwZSgkZnVuY3Rpb24pOwogICAgICAgICAgICB9IGNhdGNoIChcUmVmbGVjdGlvbkV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiAkc2lnbmF0dXJlOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXhwb3J0VHlwZShcUmVmbGVjdGlvbkZ1bmN0aW9uQWJzdHJhY3R8XFJlZmxlY3Rpb25Qcm9wZXJ0eXxcUmVmbGVjdGlvblBhcmFtZXRlciAkb3duZXIsIGJvb2wgJG5vQnVpbHRpbiA9IGZhbHNlLCA/XFJlZmxlY3Rpb25UeXBlICR0eXBlID0gbnVsbCk6ID9zdHJpbmcKICAgIHsKICAgICAgICBpZiAoISR0eXBlID8/PSAkb3duZXIgaW5zdGFuY2VvZiBcUmVmbGVjdGlvbkZ1bmN0aW9uQWJzdHJhY3QgPyAkb3duZXItPmdldFJldHVyblR5cGUoKSA6ICRvd25lci0+Z2V0VHlwZSgpKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgICAkY2xhc3MgPSBudWxsOwogICAgICAgICR0eXBlcyA9IFtdOwogICAgICAgIGlmICgkdHlwZSBpbnN0YW5jZW9mIFxSZWZsZWN0aW9uVW5pb25UeXBlKSB7CiAgICAgICAgICAgICRyZWZsZWN0aW9uVHlwZXMgPSAkdHlwZS0+Z2V0VHlwZXMoKTsKICAgICAgICAgICAgJGdsdWUgPSAnfCc7CiAgICAgICAgfSBlbHNlaWYgKCR0eXBlIGluc3RhbmNlb2YgXFJlZmxlY3Rpb25JbnRlcnNlY3Rpb25UeXBlKSB7CiAgICAgICAgICAgICRyZWZsZWN0aW9uVHlwZXMgPSAkdHlwZS0+Z2V0VHlwZXMoKTsKICAgICAgICAgICAgJGdsdWUgPSAnJic7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJHJlZmxlY3Rpb25UeXBlcyA9IFskdHlwZV07CiAgICAgICAgICAgICRnbHVlID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGZvcmVhY2ggKCRyZWZsZWN0aW9uVHlwZXMgYXMgJHR5cGUpIHsKICAgICAgICAgICAgaWYgKCR0eXBlIGluc3RhbmNlb2YgXFJlZmxlY3Rpb25JbnRlcnNlY3Rpb25UeXBlKSB7CiAgICAgICAgICAgICAgICBpZiAoJycgIT09ICRuYW1lID0gJygnLnNlbGY6OmV4cG9ydFR5cGUoJG93bmVyLCAkbm9CdWlsdGluLCAkdHlwZSkuJyknKSB7CiAgICAgICAgICAgICAgICAgICAgJHR5cGVzW10gPSAkbmFtZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRuYW1lID0gJHR5cGUtPmdldE5hbWUoKTsKCiAgICAgICAgICAgIGlmICgkbm9CdWlsdGluICYmICR0eXBlLT5pc0J1aWx0aW4oKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKFxpbl9hcnJheSgkbmFtZSwgWydwYXJlbnQnLCAnc2VsZiddLCB0cnVlKSAmJiAkY2xhc3MgPz89ICRvd25lci0+Z2V0RGVjbGFyaW5nQ2xhc3MoKSkgewogICAgICAgICAgICAgICAgJG5hbWUgPSAncGFyZW50JyA9PT0gJG5hbWUgPyAoJGNsYXNzLT5nZXRQYXJlbnRDbGFzcygpID86IG51bGwpPy0+bmFtZSA/PyAncGFyZW50JyA6ICRjbGFzcy0+bmFtZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHR5cGVzW10gPSAoJG5vQnVpbHRpbiB8fCAkdHlwZS0+aXNCdWlsdGluKCkgfHwgJ3N0YXRpYycgPT09ICRuYW1lID8gJycgOiAnXFwnKS4kbmFtZTsKICAgICAgICB9CgogICAgICAgIGlmICghJHR5cGVzKSB7CiAgICAgICAgICAgIHJldHVybiAnJzsKICAgICAgICB9CiAgICAgICAgaWYgKG51bGwgPT09ICRnbHVlKSB7CiAgICAgICAgICAgICRkZWZhdWx0TnVsbCA9ICRvd25lciBpbnN0YW5jZW9mIFxSZWZsZWN0aW9uUGFyYW1ldGVyICYmICdOVUxMJyA9PT0gcnRyaW0oc3Vic3RyKGV4cGxvZGUoJyQnLiRvd25lci0+bmFtZS4nID0gJywgKHN0cmluZykgJG93bmVyLCAyKVsxXSA/PyAnJywgMCwgLTIpKTsKCiAgICAgICAgICAgIHJldHVybiAoISRub0J1aWx0aW4gJiYgKCR0eXBlLT5hbGxvd3NOdWxsKCkgfHwgJGRlZmF1bHROdWxsKSAmJiAhXGluX2FycmF5KCRuYW1lLCBbJ21peGVkJywgJ251bGwnXSwgdHJ1ZSkgPyAnPycgOiAnJykuJHR5cGVzWzBdOwogICAgICAgIH0KICAgICAgICBzb3J0KCR0eXBlcyk7CgogICAgICAgIHJldHVybiBpbXBsb2RlKCRnbHVlLCAkdHlwZXMpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGV4cG9ydFByb3BlcnR5U2NvcGVzKHN0cmluZyAkcGFyZW50LCBhcnJheSAkcHJvcGVydHlTY29wZXMpOiBzdHJpbmcKICAgIHsKICAgICAgICB1a3NvcnQoJHByb3BlcnR5U2NvcGVzLCAnc3RybmF0Y21wJyk7CiAgICAgICAgZm9yZWFjaCAoJHByb3BlcnR5U2NvcGVzIGFzICRrID0+ICR2KSB7CiAgICAgICAgICAgIHVuc2V0KCRwcm9wZXJ0eVNjb3Blc1ska11bNF0pOwogICAgICAgIH0KICAgICAgICAkcHJvcGVydHlTY29wZXMgPSBWYXJFeHBvcnRlcjo6ZXhwb3J0KCRwcm9wZXJ0eVNjb3Blcyk7CiAgICAgICAgJHByb3BlcnR5U2NvcGVzID0gc3RyX3JlcGxhY2UoVmFyRXhwb3J0ZXI6OmV4cG9ydCgkcGFyZW50KSwgJ3BhcmVudDo6Y2xhc3MnLCAkcHJvcGVydHlTY29wZXMpOwogICAgICAgICRwcm9wZXJ0eVNjb3BlcyA9IHByZWdfcmVwbGFjZSgiLyg/fCgsKVxuKCApICAgICAgIHxcbiAgICAgICAgfCxcbiAgICAoXF0pKS8iLCAnJDEkMicsICRwcm9wZXJ0eVNjb3Blcyk7CgogICAgICAgIHJldHVybiBzdHJfcmVwbGFjZSgiXG4iLCAiXG4gICAgIiwgJHByb3BlcnR5U2NvcGVzKTsKICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBleHBvcnREZWZhdWx0KFxSZWZsZWN0aW9uUGFyYW1ldGVyICRwYXJhbSwgJG5hbWVzcGFjZSk6IHN0cmluZwogICAgewogICAgICAgICRkZWZhdWx0ID0gcnRyaW0oc3Vic3RyKGV4cGxvZGUoJyQnLiRwYXJhbS0+bmFtZS4nID0gJywgKHN0cmluZykgJHBhcmFtLCAyKVsxXSA/PyAnJywgMCwgLTIpKTsKCiAgICAgICAgaWYgKFxpbl9hcnJheSgkZGVmYXVsdCwgWyc8ZGVmYXVsdD4nLCAnTlVMTCddLCB0cnVlKSkgewogICAgICAgICAgICByZXR1cm4gJ251bGwnOwogICAgICAgIH0KICAgICAgICBpZiAoc3RyX2VuZHNfd2l0aCgkZGVmYXVsdCwgIi4uLiciKSAmJiBwcmVnX21hdGNoKCIvXicoPzpbXidcXFxcXSorKD86XFxcXC4pKispKisnJC8iLCAkZGVmYXVsdCkpIHsKICAgICAgICAgICAgcmV0dXJuIFZhckV4cG9ydGVyOjpleHBvcnQoJHBhcmFtLT5nZXREZWZhdWx0VmFsdWUoKSk7CiAgICAgICAgfQoKICAgICAgICAkcmVnZXhwID0gIi8oXCIoPzpbXlwiXFxcXF0qKyg/OlxcXFwuKSorKSorXCJ8Jyg/OlteJ1xcXFxdKisoPzpcXFxcLikqKykqKycpLyI7CiAgICAgICAgJHBhcnRzID0gcHJlZ19zcGxpdCgkcmVnZXhwLCAkZGVmYXVsdCwgLTEsIFxQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUgfCBcUFJFR19TUExJVF9OT19FTVBUWSk7CgogICAgICAgICRyZWdleHAgPSAnLyhbXFtcKCBdfF4pKFthLXpBLVpfXHg3Zi1ceGZmXVthLXpBLVowLTlfXHg3Zi1ceGZmXSorKD86XFxcXFthLXpBLVowLTlfXHg3Zi1ceGZmXSsrKSorKShcKD8pKD8hOiApLyc7CiAgICAgICAgJGNhbGxiYWNrID0gKGZhbHNlICE9PSBzdHJwYnJrKCRkZWZhdWx0LCAiXFw6KCciKSAmJiAkY2xhc3MgPSAkcGFyYW0tPmdldERlY2xhcmluZ0NsYXNzKCkpCiAgICAgICAgICAgID8gZm4gKCRtKSA9PiAkbVsxXS5tYXRjaCAoJG1bMl0pIHsKICAgICAgICAgICAgICAgICduZXcnLCAnZmFsc2UnLCAndHJ1ZScsICdudWxsJyA9PiAkbVsyXSwKICAgICAgICAgICAgICAgICdOVUxMJyA9PiAnbnVsbCcsCiAgICAgICAgICAgICAgICAnc2VsZicgPT4gJ1xcJy4kY2xhc3MtPm5hbWUsCiAgICAgICAgICAgICAgICAnbmFtZXNwYWNlXFxwYXJlbnQnLAogICAgICAgICAgICAgICAgJ3BhcmVudCcgPT4gKCRwYXJlbnQgPSAkY2xhc3MtPmdldFBhcmVudENsYXNzKCkpID8gJ1xcJy4kcGFyZW50LT5uYW1lIDogJ3BhcmVudCcsCiAgICAgICAgICAgICAgICBkZWZhdWx0ID0+IHNlbGY6OmV4cG9ydFN5bWJvbCgkbVsyXSwgJygnICE9PSAkbVszXSwgJG5hbWVzcGFjZSksCiAgICAgICAgICAgIH0uJG1bM10KICAgICAgICAgICAgOiBmbiAoJG0pID0+ICRtWzFdLm1hdGNoICgkbVsyXSkgewogICAgICAgICAgICAgICAgJ25ldycsICdmYWxzZScsICd0cnVlJywgJ251bGwnLCAnc2VsZicsICdwYXJlbnQnID0+ICRtWzJdLAogICAgICAgICAgICAgICAgJ05VTEwnID0+ICdudWxsJywKICAgICAgICAgICAgICAgIGRlZmF1bHQgPT4gc2VsZjo6ZXhwb3J0U3ltYm9sKCRtWzJdLCAnKCcgIT09ICRtWzNdLCAkbmFtZXNwYWNlKSwKICAgICAgICAgICAgfS4kbVszXTsKCiAgICAgICAgcmV0dXJuIGltcGxvZGUoJycsIGFycmF5X21hcChmbiAoJHBhcnQpID0+IG1hdGNoICgkcGFydFswXSkgewogICAgICAgICAgICAnIicgPT4gJHBhcnQsIC8vIGZvciBpbnRlcm5hbCBjbGFzc2VzIG9ubHkKICAgICAgICAgICAgIiciID0+IGZhbHNlICE9PSBzdHJwYnJrKCRwYXJ0LCAiXFxcMFxyXG4iKSA/ICciJy5zdWJzdHIoc3RyX3JlcGxhY2UoWyckJywgIlwwIiwgIlxyIiwgIlxuIl0sIFsnXCQnLCAnXDAnLCAnXHInLCAnXG4nXSwgJHBhcnQpLCAxLCAtMSkuJyInIDogJHBhcnQsCiAgICAgICAgICAgIGRlZmF1bHQgPT4gcHJlZ19yZXBsYWNlX2NhbGxiYWNrKCRyZWdleHAsICRjYWxsYmFjaywgJHBhcnQpLAogICAgICAgIH0sICRwYXJ0cykpOwogICAgfQoKICAgIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGV4cG9ydFN5bWJvbChzdHJpbmcgJHN5bWJvbCwgYm9vbCAkbWlnaHRCZVJvb3RDb25zdCwgc3RyaW5nICRuYW1lc3BhY2UpOiBzdHJpbmcKICAgIHsKICAgICAgICBpZiAoISRtaWdodEJlUm9vdENvbnN0CiAgICAgICAgICAgIHx8IGZhbHNlID09PSAoJG5zID0gc3RycnBvcygkc3ltYm9sLCAnXFwnKSkKICAgICAgICAgICAgfHwgc3Vic3RyKCRzeW1ib2wsIDAsICRucykgIT09ICRuYW1lc3BhY2UKICAgICAgICAgICAgfHwgXGRlZmluZWQoJHN5bWJvbCkKICAgICAgICAgICAgfHwgIVxkZWZpbmVkKHN1YnN0cigkc3ltYm9sLCAkbnMgKyAxKSkKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuICdcXCcuJHN5bWJvbDsKICAgICAgICB9CgogICAgICAgIHJldHVybiAnXFwnLnN1YnN0cigkc3ltYm9sLCAkbnMgKyAxKTsKICAgIH0KfQoiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";