1688054432
waR3U4bTeM%3A80aae9480a7001e20459e0f0d16aa07e-d076918db5e1285a1fbc8b91befbf75c
s:41944:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTI6IlZlcmlmaWVzIHRoYXQgYmxvY2sgY29tbWVudHMgYXJlIHVzZWQgYXBwcm9wcmlhdGVseS4iO3M6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX1zOjM5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHRhZ3MiO2E6Mzp7aTowO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvciI6NDp7czo3OiIAKgBuYW1lIjtzOjY6ImF1dGhvciI7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JOYW1lIjtzOjEzOiJHcmVnIFNoZXJ3b29kIjtzOjU4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcQXV0aG9yAGF1dGhvckVtYWlsIjtzOjE5OiJnc2hlcndvb2RAc3F1aXoubmV0IjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tjt9aToxO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEdlbmVyaWMiOjI6e3M6NzoiACoAbmFtZSI7czo5OiJjb3B5cmlnaHQiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjQ0OiIyMDA2LTIwMTUgU3F1aXogUHR5IEx0ZCAoQUJOIDc3IDA4NCA2NzAgNjAwKSI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fWk6MjtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6NzoibGljZW5zZSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6ODA6Imh0dHBzOi8vZ2l0aHViLmNvbS9zcXVpemxhYnMvUEhQX0NvZGVTbmlmZmVyL2Jsb2IvbWFzdGVyL2xpY2VuY2UudHh0IEJTRCBMaWNlbmNlIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6MDoiIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTowOnt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiJkMDc2OTE4ZGI1ZTEyODVhMWZiYzhiOTFiZWZiZjc1YyI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjIxOiJCbG9ja0NvbW1lbnRTbmlmZi5waHAiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czo5MjoidmVuZG9yL3NxdWl6bGFicy9waHBfY29kZXNuaWZmZXIvc3JjL1N0YW5kYXJkcy9TcXVpei9TbmlmZnMvQ29tbWVudGluZy9CbG9ja0NvbW1lbnRTbmlmZi5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjE1NjM2OiI8P3BocAovKioKICogVmVyaWZpZXMgdGhhdCBibG9jayBjb21tZW50cyBhcmUgdXNlZCBhcHByb3ByaWF0ZWx5LgogKgogKiBAYXV0aG9yICAgIEdyZWcgU2hlcndvb2QgPGdzaGVyd29vZEBzcXVpei5uZXQ+CiAqIEBjb3B5cmlnaHQgMjAwNi0yMDE1IFNxdWl6IFB0eSBMdGQgKEFCTiA3NyAwODQgNjcwIDYwMCkKICogQGxpY2Vuc2UgICBodHRwczovL2dpdGh1Yi5jb20vc3F1aXpsYWJzL1BIUF9Db2RlU25pZmZlci9ibG9iL21hc3Rlci9saWNlbmNlLnR4dCBCU0QgTGljZW5jZQogKi8KCm5hbWVzcGFjZSBQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nOwoKdXNlIFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlOwp1c2UgUEhQX0NvZGVTbmlmZmVyXFNuaWZmc1xTbmlmZjsKdXNlIFBIUF9Db2RlU25pZmZlclxVdGlsXFRva2VuczsKCmNsYXNzIEJsb2NrQ29tbWVudFNuaWZmIGltcGxlbWVudHMgU25pZmYKewoKICAgIC8qKgogICAgICogVGhlIC0tdGFiLXdpZHRoIENMSSB2YWx1ZSB0aGF0IGlzIGJlaW5nIHVzZWQuCiAgICAgKgogICAgICogQHZhciBpbnRlZ2VyCiAgICAgKi8KICAgIHByaXZhdGUgJHRhYldpZHRoID0gbnVsbDsKCgogICAgLyoqCiAgICAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHRva2VucyB0aGlzIHRlc3Qgd2FudHMgdG8gbGlzdGVuIGZvci4KICAgICAqCiAgICAgKiBAcmV0dXJuIGFycmF5CiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiByZWdpc3RlcigpCiAgICB7CiAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgVF9DT01NRU5ULAogICAgICAgICAgICBUX0RPQ19DT01NRU5UX09QRU5fVEFHLAogICAgICAgIF07CgogICAgfS8vZW5kIHJlZ2lzdGVyKCkKCgogICAgLyoqCiAgICAgKiBQcm9jZXNzZXMgdGhpcyB0ZXN0LCB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLgogICAgICoKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUgJHBocGNzRmlsZSBUaGUgY3VycmVudCBmaWxlIGJlaW5nIHNjYW5uZWQuCiAgICAgKiBAcGFyYW0gaW50ICAgICAgICAgICAgICAgICAgICAgICAgICRzdGFja1B0ciAgVGhlIHBvc2l0aW9uIG9mIHRoZSBjdXJyZW50IHRva2VuIGluIHRoZQogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrIHBhc3NlZCBpbiAkdG9rZW5zLgogICAgICoKICAgICAqIEByZXR1cm4gdm9pZAogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcHJvY2VzcyhGaWxlICRwaHBjc0ZpbGUsICRzdGFja1B0cikKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPnRhYldpZHRoID09PSBudWxsKSB7CiAgICAgICAgICAgIGlmIChpc3NldCgkcGhwY3NGaWxlLT5jb25maWctPnRhYldpZHRoKSA9PT0gZmFsc2UgfHwgJHBocGNzRmlsZS0+Y29uZmlnLT50YWJXaWR0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBubyBpZGVhIGhvdyB3aWRlIHRhYnMgYXJlLCBzbyBhc3N1bWUgNCBzcGFjZXMgZm9yIGZpeGluZy4KICAgICAgICAgICAgICAgICR0aGlzLT50YWJXaWR0aCA9IDQ7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+dGFiV2lkdGggPSAkcGhwY3NGaWxlLT5jb25maWctPnRhYldpZHRoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkdG9rZW5zID0gJHBocGNzRmlsZS0+Z2V0VG9rZW5zKCk7CgogICAgICAgIC8vIElmIGl0J3MgYW4gaW5saW5lIGNvbW1lbnQsIHJldHVybi4KICAgICAgICBpZiAoc3Vic3RyKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddLCAwLCAyKSAhPT0gJy8qJykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAvLyBJZiB0aGlzIGlzIGEgZnVuY3Rpb24vY2xhc3MvaW50ZXJmYWNlIGRvYyBibG9jayBjb21tZW50LCBza2lwIGl0LgogICAgICAgIC8vIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gaW5saW5lIGRvYyBibG9jayBjb21tZW50cy4KICAgICAgICBpZiAoJHRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfT1BFTl9UQUcpIHsKICAgICAgICAgICAgJG5leHRUb2tlbiA9ICRzdGFja1B0cjsKICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgJG5leHRUb2tlbiA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KFRva2Vuczo6JGVtcHR5VG9rZW5zLCAoJG5leHRUb2tlbiArIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRuZXh0VG9rZW5dWydjb2RlJ10gPT09IFRfQVRUUklCVVRFKSB7CiAgICAgICAgICAgICAgICAgICAgJG5leHRUb2tlbiA9ICR0b2tlbnNbJG5leHRUb2tlbl1bJ2F0dHJpYnV0ZV9jbG9zZXInXTsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7CgogICAgICAgICAgICAkaWdub3JlID0gWwogICAgICAgICAgICAgICAgVF9DTEFTUyAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfSU5URVJGQUNFID0+IHRydWUsCiAgICAgICAgICAgICAgICBUX1RSQUlUICAgICA9PiB0cnVlLAogICAgICAgICAgICAgICAgVF9FTlVNICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfRlVOQ1RJT04gID0+IHRydWUsCiAgICAgICAgICAgICAgICBUX1BVQkxJQyAgICA9PiB0cnVlLAogICAgICAgICAgICAgICAgVF9QUklWQVRFICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfRklOQUwgICAgID0+IHRydWUsCiAgICAgICAgICAgICAgICBUX1BST1RFQ1RFRCA9PiB0cnVlLAogICAgICAgICAgICAgICAgVF9TVEFUSUMgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfQUJTVFJBQ1QgID0+IHRydWUsCiAgICAgICAgICAgICAgICBUX0NPTlNUICAgICA9PiB0cnVlLAogICAgICAgICAgICAgICAgVF9WQVIgICAgICAgPT4gdHJ1ZSwKICAgICAgICAgICAgICAgIFRfUkVBRE9OTFkgID0+IHRydWUsCiAgICAgICAgICAgIF07CiAgICAgICAgICAgIGlmIChpc3NldCgkaWdub3JlWyR0b2tlbnNbJG5leHRUb2tlbl1bJ2NvZGUnXV0pID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRwcmV2VG9rZW4gPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoVG9rZW5zOjokZW1wdHlUb2tlbnMsICgkc3RhY2tQdHIgLSAxKSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRwcmV2VG9rZW5dWydjb2RlJ10gPT09IFRfT1BFTl9UQUcpIHsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGVycm9yID0gJ0Jsb2NrIGNvbW1lbnRzIG11c3QgYmUgc3RhcnRlZCB3aXRoIC8qJzsKICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJHN0YWNrUHRyLCAnV3JvbmdTdGFydCcpOwogICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigkc3RhY2tQdHIsICcvKicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkZW5kID0gJHRva2Vuc1skc3RhY2tQdHJdWydjb21tZW50X2Nsb3NlciddOwogICAgICAgICAgICBpZiAoJHRva2Vuc1skZW5kXVsnY29udGVudCddICE9PSAnKi8nKSB7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnQmxvY2sgY29tbWVudHMgbXVzdCBiZSBlbmRlZCB3aXRoICovJzsKICAgICAgICAgICAgICAgICRmaXggICA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRlbmQsICdXcm9uZ0VuZCcpOwogICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRlbmQsICcqLycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICRjb21tZW50TGluZXMgID0gWyRzdGFja1B0cl07CiAgICAgICAgJG5leHRDb21tZW50ICAgPSAkc3RhY2tQdHI7CiAgICAgICAgJGxhc3RMaW5lICAgICAgPSAkdG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXTsKICAgICAgICAkY29tbWVudFN0cmluZyA9ICR0b2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddOwoKICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIGNvbW1lbnQgaW50byBhbiBhcnJheS4KICAgICAgICB3aGlsZSAoKCRuZXh0Q29tbWVudCA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KFRfV0hJVEVTUEFDRSwgKCRuZXh0Q29tbWVudCArIDEpLCBudWxsLCB0cnVlKSkgIT09IGZhbHNlKSB7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRuZXh0Q29tbWVudF1bJ2NvZGUnXSAhPT0gJHRva2Vuc1skc3RhY2tQdHJdWydjb2RlJ10KICAgICAgICAgICAgICAgICYmIGlzc2V0KFRva2Vuczo6JHBocGNzQ29tbWVudFRva2Vuc1skdG9rZW5zWyRuZXh0Q29tbWVudF1bJ2NvZGUnXV0pID09PSBmYWxzZQogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIC8vIEZvdW5kIHRoZSBuZXh0IGJpdCBvZiBjb2RlLgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgoJHRva2Vuc1skbmV4dENvbW1lbnRdWydsaW5lJ10gLSAxKSAhPT0gJGxhc3RMaW5lKSB7CiAgICAgICAgICAgICAgICAvLyBOb3QgcGFydCBvZiB0aGUgYmxvY2suCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGxhc3RMaW5lICAgICAgID0gJHRva2Vuc1skbmV4dENvbW1lbnRdWydsaW5lJ107CiAgICAgICAgICAgICRjb21tZW50TGluZXNbXSA9ICRuZXh0Q29tbWVudDsKICAgICAgICAgICAgJGNvbW1lbnRTdHJpbmcgLj0gJHRva2Vuc1skbmV4dENvbW1lbnRdWydjb250ZW50J107CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRuZXh0Q29tbWVudF1bJ2NvZGUnXSA9PT0gVF9ET0NfQ09NTUVOVF9DTE9TRV9UQUcKICAgICAgICAgICAgICAgIHx8IHN1YnN0cigkdG9rZW5zWyRuZXh0Q29tbWVudF1bJ2NvbnRlbnQnXSwgLTIpID09PSAnKi8nCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9Ly9lbmQgd2hpbGUKCiAgICAgICAgJGNvbW1lbnRUZXh0ID0gc3RyX3JlcGxhY2UoJHBocGNzRmlsZS0+ZW9sQ2hhciwgJycsICRjb21tZW50U3RyaW5nKTsKICAgICAgICAkY29tbWVudFRleHQgPSB0cmltKCRjb21tZW50VGV4dCwgIi8qIFx0Iik7CiAgICAgICAgaWYgKCRjb21tZW50VGV4dCA9PT0gJycpIHsKICAgICAgICAgICAgJGVycm9yID0gJ0VtcHR5IGJsb2NrIGNvbW1lbnQgbm90IGFsbG93ZWQnOwogICAgICAgICAgICAkZml4ICAgPSAkcGhwY3NGaWxlLT5hZGRGaXhhYmxlRXJyb3IoJGVycm9yLCAkc3RhY2tQdHIsICdFbXB0eScpOwogICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmJlZ2luQ2hhbmdlc2V0KCk7CiAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRzdGFja1B0ciwgJycpOwogICAgICAgICAgICAgICAgJGxhc3RUb2tlbiA9IGFycmF5X3BvcCgkY29tbWVudExpbmVzKTsKICAgICAgICAgICAgICAgIGZvciAoJGkgPSAoJHN0YWNrUHRyICsgMSk7ICRpIDw9ICRsYXN0VG9rZW47ICRpKyspIHsKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRpLCAnJyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPmVuZENoYW5nZXNldCgpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBpZiAoY291bnQoJGNvbW1lbnRMaW5lcykgPT09IDEpIHsKICAgICAgICAgICAgJGVycm9yID0gJ1NpbmdsZSBsaW5lIGJsb2NrIGNvbW1lbnQgbm90IGFsbG93ZWQ7IHVzZSBpbmxpbmUgKCIvLyB0ZXh0IikgY29tbWVudCBpbnN0ZWFkJzsKCiAgICAgICAgICAgIC8vIE9ubHkgZml4IGNvbW1lbnRzIHdoZW4gdGhleSBhcmUgdGhlIGxhc3QgdG9rZW4gb24gYSBsaW5lLgogICAgICAgICAgICAkbmV4dE5vbkVtcHR5ID0gJHBocGNzRmlsZS0+ZmluZE5leHQoVG9rZW5zOjokZW1wdHlUb2tlbnMsICgkc3RhY2tQdHIgKyAxKSwgbnVsbCwgdHJ1ZSk7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXSAhPT0gJHRva2Vuc1skbmV4dE5vbkVtcHR5XVsnbGluZSddKSB7CiAgICAgICAgICAgICAgICAkZml4ID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJHN0YWNrUHRyLCAnU2luZ2xlTGluZScpOwogICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAkY29tbWVudCA9ICcvLyAnLiRjb21tZW50VGV4dC4kcGhwY3NGaWxlLT5lb2xDaGFyOwogICAgICAgICAgICAgICAgICAgICRwaHBjc0ZpbGUtPmZpeGVyLT5yZXBsYWNlVG9rZW4oJHN0YWNrUHRyLCAkY29tbWVudCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICRzdGFja1B0ciwgJ1NpbmdsZUxpbmUnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJGNvbnRlbnQgPSB0cmltKCR0b2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddKTsKICAgICAgICBpZiAoJGNvbnRlbnQgIT09ICcvKicgJiYgJGNvbnRlbnQgIT09ICcvKionKSB7CiAgICAgICAgICAgICRlcnJvciA9ICdCbG9jayBjb21tZW50IHRleHQgbXVzdCBzdGFydCBvbiBhIG5ldyBsaW5lJzsKICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJHN0YWNrUHRyLCAnTm9OZXdMaW5lJyk7CiAgICAgICAgICAgIGlmICgkZml4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAkaW5kZW50ID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1soJHN0YWNrUHRyIC0gMSldWydjb2RlJ10gPT09IFRfV0hJVEVTUEFDRSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdG9rZW5zWygkc3RhY2tQdHIgLSAxKV1bJ29yaWdfY29udGVudCddKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5kZW50ID0gJHRva2Vuc1soJHN0YWNrUHRyIC0gMSldWydvcmlnX2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5kZW50ID0gJHRva2Vuc1soJHN0YWNrUHRyIC0gMSldWydjb250ZW50J107CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRjb21tZW50ID0gcHJlZ19yZXBsYWNlKAogICAgICAgICAgICAgICAgICAgICcvXihccypcL1wqXCo/KS8nLAogICAgICAgICAgICAgICAgICAgICckMScuJHBocGNzRmlsZS0+ZW9sQ2hhci4kaW5kZW50LAogICAgICAgICAgICAgICAgICAgICR0b2tlbnNbJHN0YWNrUHRyXVsnY29udGVudCddLAogICAgICAgICAgICAgICAgICAgIDEKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRzdGFja1B0ciwgJGNvbW1lbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfS8vZW5kIGlmCgogICAgICAgICRzdGFyQ29sdW1uID0gJHRva2Vuc1skc3RhY2tQdHJdWydjb2x1bW4nXTsKICAgICAgICAkaGFzU3RhcnMgICA9IGZhbHNlOwoKICAgICAgICAvLyBNYWtlIHN1cmUgZmlyc3QgbGluZSBpc24ndCBibGFuay4KICAgICAgICBpZiAodHJpbSgkdG9rZW5zWyRjb21tZW50TGluZXNbMV1dWydjb250ZW50J10pID09PSAnJykgewogICAgICAgICAgICAkZXJyb3IgPSAnRW1wdHkgbGluZSBub3QgYWxsb3dlZCBhdCBzdGFydCBvZiBjb21tZW50JzsKICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJGNvbW1lbnRMaW5lc1sxXSwgJ0hhc0VtcHR5TGluZScpOwogICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigkY29tbWVudExpbmVzWzFdLCAnJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAvLyBDaGVjayBpbmRlbnRhdGlvbiBvZiBmaXJzdCBsaW5lLgogICAgICAgICAgICAkY29udGVudCAgICAgID0gJHRva2Vuc1skY29tbWVudExpbmVzWzFdXVsnY29udGVudCddOwogICAgICAgICAgICAkY29tbWVudFRleHQgID0gbHRyaW0oJGNvbnRlbnQpOwogICAgICAgICAgICAkbGVhZGluZ1NwYWNlID0gKHN0cmxlbigkY29udGVudCkgLSBzdHJsZW4oJGNvbW1lbnRUZXh0KSk7CgogICAgICAgICAgICAkZXhwZWN0ZWQgPSAoJHN0YXJDb2x1bW4gKyAzKTsKICAgICAgICAgICAgaWYgKCRjb21tZW50VGV4dFswXSA9PT0gJyonKSB7CiAgICAgICAgICAgICAgICAkZXhwZWN0ZWQgPSAkc3RhckNvbHVtbjsKICAgICAgICAgICAgICAgICRoYXNTdGFycyA9IHRydWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbGVhZGluZ1NwYWNlICE9PSAkZXhwZWN0ZWQpIHsKICAgICAgICAgICAgICAgICRleHBlY3RlZFR4dCA9ICRleHBlY3RlZC4nIHNwYWNlJzsKICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgIT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWRUeHQgLj0gJ3MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRkYXRhID0gWwogICAgICAgICAgICAgICAgICAgICRleHBlY3RlZFR4dCwKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ1NwYWNlLAogICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnRmlyc3QgbGluZSBvZiBjb21tZW50IG5vdCBhbGlnbmVkIGNvcnJlY3RseTsgZXhwZWN0ZWQgJXMgYnV0IGZvdW5kICVzJzsKICAgICAgICAgICAgICAgICRmaXggICA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRjb21tZW50TGluZXNbMV0sICdGaXJzdExpbmVJbmRlbnQnLCAkZGF0YSk7CiAgICAgICAgICAgICAgICBpZiAoJGZpeCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkdG9rZW5zWyRjb21tZW50TGluZXNbMV1dWydvcmlnX2NvbnRlbnQnXSkgPT09IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc1skY29tbWVudExpbmVzWzFdXVsnb3JpZ19jb250ZW50J11bMF0gPT09ICJcdCIKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGluZSBpcyBpbmRlbnRlZCB1c2luZyB0YWJzLgogICAgICAgICAgICAgICAgICAgICAgICAkcGFkZGluZyAgPSBzdHJfcmVwZWF0KCJcdCIsIGZsb29yKCRleHBlY3RlZCAvICR0aGlzLT50YWJXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAkcGFkZGluZyAuPSBzdHJfcmVwZWF0KCcgJywgKCRleHBlY3RlZCAlICR0aGlzLT50YWJXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWRkaW5nID0gc3RyX3JlcGVhdCgnICcsICRleHBlY3RlZCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRjb21tZW50TGluZXNbMV0sICRwYWRkaW5nLiRjb21tZW50VGV4dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0vL2VuZCBpZgoKICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHB7TGx9L3UnLCAkY29tbWVudFRleHQpID09PSAxKSB7CiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnQmxvY2sgY29tbWVudHMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkY29tbWVudExpbmVzWzFdLCAnTm9DYXBpdGFsJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgLy8gQ2hlY2sgdGhhdCBlYWNoIGxpbmUgb2YgdGhlIGNvbW1lbnQgaXMgaW5kZW50ZWQgcGFzdCB0aGUgc3Rhci4KICAgICAgICBmb3JlYWNoICgkY29tbWVudExpbmVzIGFzICRsaW5lKSB7CiAgICAgICAgICAgIC8vIEZpcnN0IGFuZCBsYXN0IGxpbmVzIChjb21tZW50IG9wZW5lciBhbmQgY2xvc2VyKSBhcmUgaGFuZGxlZCBzZXBhcmF0ZWx5LgogICAgICAgICAgICBpZiAoJGxpbmUgPT09ICRjb21tZW50TGluZXNbKGNvdW50KCRjb21tZW50TGluZXMpIC0gMSldIHx8ICRsaW5lID09PSAkY29tbWVudExpbmVzWzBdKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRmlyc3QgY29tbWVudCBsaW5lIHdhcyBoYW5kbGVkIGFib3ZlLgogICAgICAgICAgICBpZiAoJGxpbmUgPT09ICRjb21tZW50TGluZXNbMV0pIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiBpdCdzIGVtcHR5LCBjb250aW51ZS4KICAgICAgICAgICAgaWYgKHRyaW0oJHRva2Vuc1skbGluZV1bJ2NvbnRlbnQnXSkgPT09ICcnKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGNvbW1lbnRUZXh0ICA9IGx0cmltKCR0b2tlbnNbJGxpbmVdWydjb250ZW50J10pOwogICAgICAgICAgICAkbGVhZGluZ1NwYWNlID0gKHN0cmxlbigkdG9rZW5zWyRsaW5lXVsnY29udGVudCddKSAtIHN0cmxlbigkY29tbWVudFRleHQpKTsKCiAgICAgICAgICAgICRleHBlY3RlZCA9ICgkc3RhckNvbHVtbiArIDMpOwogICAgICAgICAgICBpZiAoJGNvbW1lbnRUZXh0WzBdID09PSAnKicpIHsKICAgICAgICAgICAgICAgICRleHBlY3RlZCA9ICRzdGFyQ29sdW1uOwogICAgICAgICAgICAgICAgJGhhc1N0YXJzID0gdHJ1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRsZWFkaW5nU3BhY2UgPCAkZXhwZWN0ZWQpIHsKICAgICAgICAgICAgICAgICRleHBlY3RlZFR4dCA9ICRleHBlY3RlZC4nIHNwYWNlJzsKICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgIT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWRUeHQgLj0gJ3MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRkYXRhID0gWwogICAgICAgICAgICAgICAgICAgICRleHBlY3RlZFR4dCwKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ1NwYWNlLAogICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnQ29tbWVudCBsaW5lIGluZGVudGVkIGluY29ycmVjdGx5OyBleHBlY3RlZCBhdCBsZWFzdCAlcyBidXQgZm91bmQgJXMnOwogICAgICAgICAgICAgICAgJGZpeCAgID0gJHBocGNzRmlsZS0+YWRkRml4YWJsZUVycm9yKCRlcnJvciwgJGxpbmUsICdMaW5lSW5kZW50JywgJGRhdGEpOwogICAgICAgICAgICAgICAgaWYgKCRmaXggPT09IHRydWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHRva2Vuc1skbGluZV1bJ29yaWdfY29udGVudCddKSA9PT0gdHJ1ZQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkdG9rZW5zWyRsaW5lXVsnb3JpZ19jb250ZW50J11bMF0gPT09ICJcdCIKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGluZSBpcyBpbmRlbnRlZCB1c2luZyB0YWJzLgogICAgICAgICAgICAgICAgICAgICAgICAkcGFkZGluZyAgPSBzdHJfcmVwZWF0KCJcdCIsIGZsb29yKCRleHBlY3RlZCAvICR0aGlzLT50YWJXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgICAgICAkcGFkZGluZyAuPSBzdHJfcmVwZWF0KCcgJywgKCRleHBlY3RlZCAlICR0aGlzLT50YWJXaWR0aCkpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRwYWRkaW5nID0gc3RyX3JlcGVhdCgnICcsICRleHBlY3RlZCk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5maXhlci0+cmVwbGFjZVRva2VuKCRsaW5lLCAkcGFkZGluZy4kY29tbWVudFRleHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICB9Ly9lbmQgZm9yZWFjaAoKICAgICAgICAvLyBGaW5hbGx5LCB0ZXN0IHRoZSBsYXN0IGxpbmUgaXMgY29ycmVjdC4KICAgICAgICAkbGFzdEluZGV4ICAgPSAoY291bnQoJGNvbW1lbnRMaW5lcykgLSAxKTsKICAgICAgICAkY29udGVudCAgICAgPSAkdG9rZW5zWyRjb21tZW50TGluZXNbJGxhc3RJbmRleF1dWydjb250ZW50J107CiAgICAgICAgJGNvbW1lbnRUZXh0ID0gbHRyaW0oJGNvbnRlbnQpOwogICAgICAgIGlmICgkY29tbWVudFRleHQgIT09ICcqLycgJiYgJGNvbW1lbnRUZXh0ICE9PSAnKiovJykgewogICAgICAgICAgICAkZXJyb3IgPSAnQ29tbWVudCBjbG9zZXIgbXVzdCBiZSBvbiBhIG5ldyBsaW5lJzsKICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkY29tbWVudExpbmVzWyRsYXN0SW5kZXhdLCAnQ2xvc2VyU2FtZUxpbmUnKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkbGVhZGluZ1NwYWNlID0gKHN0cmxlbigkY29udGVudCkgLSBzdHJsZW4oJGNvbW1lbnRUZXh0KSk7CgogICAgICAgICAgICAkZXhwZWN0ZWQgPSAoJHN0YXJDb2x1bW4gLSAxKTsKICAgICAgICAgICAgaWYgKCRoYXNTdGFycyA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgICAgJGV4cGVjdGVkID0gJHN0YXJDb2x1bW47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkbGVhZGluZ1NwYWNlICE9PSAkZXhwZWN0ZWQpIHsKICAgICAgICAgICAgICAgICRleHBlY3RlZFR4dCA9ICRleHBlY3RlZC4nIHNwYWNlJzsKICAgICAgICAgICAgICAgIGlmICgkZXhwZWN0ZWQgIT09IDEpIHsKICAgICAgICAgICAgICAgICAgICAkZXhwZWN0ZWRUeHQgLj0gJ3MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRkYXRhID0gWwogICAgICAgICAgICAgICAgICAgICRleHBlY3RlZFR4dCwKICAgICAgICAgICAgICAgICAgICAkbGVhZGluZ1NwYWNlLAogICAgICAgICAgICAgICAgXTsKCiAgICAgICAgICAgICAgICAkZXJyb3IgPSAnTGFzdCBsaW5lIG9mIGNvbW1lbnQgYWxpZ25lZCBpbmNvcnJlY3RseTsgZXhwZWN0ZWQgJXMgYnV0IGZvdW5kICVzJzsKICAgICAgICAgICAgICAgICRmaXggICA9ICRwaHBjc0ZpbGUtPmFkZEZpeGFibGVFcnJvcigkZXJyb3IsICRjb21tZW50TGluZXNbJGxhc3RJbmRleF0sICdMYXN0TGluZUluZGVudCcsICRkYXRhKTsKICAgICAgICAgICAgICAgIGlmICgkZml4ID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0b2tlbnNbJGxpbmVdWydvcmlnX2NvbnRlbnQnXSkgPT09IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJHRva2Vuc1skbGluZV1bJ29yaWdfY29udGVudCddWzBdID09PSAiXHQiCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIExpbmUgaXMgaW5kZW50ZWQgdXNpbmcgdGFicy4KICAgICAgICAgICAgICAgICAgICAgICAgJHBhZGRpbmcgID0gc3RyX3JlcGVhdCgiXHQiLCBmbG9vcigkZXhwZWN0ZWQgLyAkdGhpcy0+dGFiV2lkdGgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHBhZGRpbmcgLj0gc3RyX3JlcGVhdCgnICcsICgkZXhwZWN0ZWQgJSAkdGhpcy0+dGFiV2lkdGgpKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkcGFkZGluZyA9IHN0cl9yZXBlYXQoJyAnLCAkZXhwZWN0ZWQpOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+Zml4ZXItPnJlcGxhY2VUb2tlbigkY29tbWVudExpbmVzWyRsYXN0SW5kZXhdLCAkcGFkZGluZy4kY29tbWVudFRleHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICB9Ly9lbmQgaWYKCiAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgbGluZXMgYmVmb3JlIGFuZCBhZnRlciB0aGlzIGNvbW1lbnQgYXJlIGJsYW5rLgogICAgICAgICRjb250ZW50QmVmb3JlID0gJHBocGNzRmlsZS0+ZmluZFByZXZpb3VzKFRfV0hJVEVTUEFDRSwgKCRzdGFja1B0ciAtIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICBpZiAoKGlzc2V0KCR0b2tlbnNbJGNvbnRlbnRCZWZvcmVdWydzY29wZV9jbG9zZXInXSkgPT09IHRydWUKICAgICAgICAgICAgJiYgJHRva2Vuc1skY29udGVudEJlZm9yZV1bJ3Njb3BlX29wZW5lciddID09PSAkY29udGVudEJlZm9yZSkKICAgICAgICAgICAgfHwgJHRva2Vuc1skY29udGVudEJlZm9yZV1bJ2NvZGUnXSA9PT0gVF9PUEVOX1RBRwogICAgICAgICAgICB8fCAkdG9rZW5zWyRjb250ZW50QmVmb3JlXVsnY29kZSddID09PSBUX09QRU5fVEFHX1dJVEhfRUNITwogICAgICAgICkgewogICAgICAgICAgICBpZiAoKCR0b2tlbnNbJHN0YWNrUHRyXVsnbGluZSddIC0gJHRva2Vuc1skY29udGVudEJlZm9yZV1bJ2xpbmUnXSkgIT09IDEpIHsKICAgICAgICAgICAgICAgICRlcnJvciA9ICdFbXB0eSBsaW5lIG5vdCByZXF1aXJlZCBiZWZvcmUgYmxvY2sgY29tbWVudCc7CiAgICAgICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICRzdGFja1B0ciwgJ0hhc0VtcHR5TGluZUJlZm9yZScpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKCgkdG9rZW5zWyRzdGFja1B0cl1bJ2xpbmUnXSAtICR0b2tlbnNbJGNvbnRlbnRCZWZvcmVdWydsaW5lJ10pIDwgMikgewogICAgICAgICAgICAgICAgJGVycm9yID0gJ0VtcHR5IGxpbmUgcmVxdWlyZWQgYmVmb3JlIGJsb2NrIGNvbW1lbnQnOwogICAgICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkc3RhY2tQdHIsICdOb0VtcHR5TGluZUJlZm9yZScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkY29tbWVudENsb3NlciA9ICRjb21tZW50TGluZXNbJGxhc3RJbmRleF07CiAgICAgICAgJGNvbnRlbnRBZnRlciAgPSAkcGhwY3NGaWxlLT5maW5kTmV4dChUX1dISVRFU1BBQ0UsICgkY29tbWVudENsb3NlciArIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICBpZiAoJGNvbnRlbnRBZnRlciAhPT0gZmFsc2UgJiYgKCR0b2tlbnNbJGNvbnRlbnRBZnRlcl1bJ2xpbmUnXSAtICR0b2tlbnNbJGNvbW1lbnRDbG9zZXJdWydsaW5lJ10pIDwgMikgewogICAgICAgICAgICAkZXJyb3IgPSAnRW1wdHkgbGluZSByZXF1aXJlZCBhZnRlciBibG9jayBjb21tZW50JzsKICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkY29tbWVudENsb3NlciwgJ05vRW1wdHlMaW5lQWZ0ZXInKTsKICAgICAgICB9CgogICAgfS8vZW5kIHByb2Nlc3MoKQoKCn0vL2VuZCBjbGFzcwoiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjUwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZyI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEwOiJDb21tZW50aW5nIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6Njg6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEJsb2NrQ29tbWVudFNuaWZmIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXyI6MTM6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjY4OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZ1xCbG9ja0NvbW1lbnRTbmlmZiI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjE3OiJCbG9ja0NvbW1lbnRTbmlmZiI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjE6e3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NToiU25pZmYiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MTp7czo3OToiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcQmxvY2tDb21tZW50U25pZmY6OiR0YWJXaWR0aCI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eSI6MTE6e3M6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Nzk6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEJsb2NrQ29tbWVudFNuaWZmOjokdGFiV2lkdGgiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo4OiJ0YWJXaWR0aCI7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo0NToiVGhlIC0tdGFiLXdpZHRoIENMSSB2YWx1ZSB0aGF0IGlzIGJlaW5nIHVzZWQuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xWYXJfIjo0OntzOjE1OiIAKgB2YXJpYWJsZU5hbWUiO3M6MDoiIjtzOjc6IgAqAHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xJbnRlZ2VyIjowOnt9czo3OiIAKgBuYW1lIjtzOjM6InZhciI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQiOjI6e3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2UiO3M6NDk6IlBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmciO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcQ29udGV4dABuYW1lc3BhY2VBbGlhc2VzIjthOjM6e3M6NDoiRmlsZSI7czoyNjoiUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6NToiU25pZmYiO3M6Mjg6IlBIUF9Db2RlU25pZmZlclxTbmlmZnNcU25pZmYiO3M6NjoiVG9rZW5zIjtzOjI3OiJQSFBfQ29kZVNuaWZmZXJcVXRpbFxUb2tlbnMiO319czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlcyI7YTowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAZGVmYXVsdCI7czo0OiJudWxsIjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQBzdGF0aWMiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo3OiJwcml2YXRlIjt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI0O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxQcm9wZXJ0eQB0eXBlIjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFByb3BlcnR5AHJlYWRPbmx5IjtiOjA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcUHJvcGVydHkAbWV0YWRhdGEiO2E6MDp7fX19czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGhvZHMiO2E6Mjp7czo4MDoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcQmxvY2tDb21tZW50U25pZmY6OnJlZ2lzdGVyKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1NzoiUmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMgdGhpcyB0ZXN0IHdhbnRzIHRvIGxpc3RlbiBmb3IuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO3I6NzI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBsb2NhdGlvbiI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVTdGFydCI7YjowO3M6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZUVuZCI7YjowO31zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czo4MDoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcQmxvY2tDb21tZW50U25pZmY6OnJlZ2lzdGVyKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo4OiJyZWdpc3RlciI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aTozMjtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjM5O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319czo3OToiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcQmxvY2tDb21tZW50U25pZmY6OnByb2Nlc3MoKSI7TzozNToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QiOjEyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZG9jQmxvY2siO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jayI6Nzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBzdW1tYXJ5IjtzOjU5OiJQcm9jZXNzZXMgdGhpcyB0ZXN0LCB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLiI7czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czowOiIiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAdGFncyI7YTozOntpOjA7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6OToicGhwY3NGaWxlIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0AaXNWYXJpYWRpYyI7YjowO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1JlZmVyZW5jZSI7YjowO3M6NzoiACoAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MzE6IlRoZSBjdXJyZW50IGZpbGUgYmVpbmcgc2Nhbm5lZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NjU6IlRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbiBpbiB0aGUKc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3MjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjc5OiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZ1xCbG9ja0NvbW1lbnRTbmlmZjo6cHJvY2VzcygpIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NzoicHJvY2VzcyI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YToyOntpOjA7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AHR5cGUiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfIjoxOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8AZnFzZW4iO086MzA6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbiI6Mjp7czozNzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBmcXNlbiI7czoyNzoiXFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NDoiRmlsZSI7fX1zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABkZWZhdWx0IjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGJ5UmVmZXJlbmNlIjtiOjA7czo0OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAaXNWYXJpYWRpYyI7YjowO31pOjE7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudCI6NTp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAbmFtZSI7czo4OiJzdGFja1B0ciI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjUxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6Mzk4O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwB1c2VkVHJhaXRzIjthOjA6e31zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AbG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjE2O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBlbmRMb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDAxO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRhZGF0YSI7YTowOnt9fX1zOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGludGVyZmFjZXMiO2E6MDp7fXM6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAdHJhaXRzIjthOjA6e31zOjQwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGVudW1zIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAG1ldGFkYXRhIjthOjA6e319";