1688054432
waR3U4bTeM%3Abb4da8b97117b6649c4afe3eb8deed92-375eb00bb973f90937ce1167a6c830e8
s:29148:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6Nzc6IlZlcmlmaWVzIHRoYXQgYSBAdGhyb3dzIHRhZyBleGlzdHMgZm9yIGVhY2ggZXhjZXB0aW9uIHR5cGUgYSBmdW5jdGlvbiB0aHJvd3MuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjM6e2k6MDtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IiOjQ6e3M6NzoiACoAbmFtZSI7czo2OiJhdXRob3IiO3M6NTc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xBdXRob3IAYXV0aG9yTmFtZSI7czoxMzoiR3JlZyBTaGVyd29vZCI7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXEF1dGhvcgBhdXRob3JFbWFpbCI7czoxOToiZ3NoZXJ3b29kQHNxdWl6Lm5ldCI7czoxNDoiACoAZGVzY3JpcHRpb24iO047fWk6MTtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xHZW5lcmljIjoyOntzOjc6IgAqAG5hbWUiO3M6OToiY29weXJpZ2h0IjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czo0NDoiMjAwNi0yMDE1IFNxdWl6IFB0eSBMdGQgKEFCTiA3NyAwODQgNjcwIDYwMCkiO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjI7Tzo0NjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcR2VuZXJpYyI6Mjp7czo3OiIAKgBuYW1lIjtzOjc6ImxpY2Vuc2UiO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjgwOiJodHRwczovL2dpdGh1Yi5jb20vc3F1aXpsYWJzL1BIUF9Db2RlU25pZmZlci9ibG9iL21hc3Rlci9saWNlbmNlLnR4dCBCU0QgTGljZW5jZSI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjA6IiI7czo1NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0AG5hbWVzcGFjZUFsaWFzZXMiO2E6MDp7fX1zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaGFzaCI7czozMjoiMzc1ZWIwMGJiOTczZjkwOTM3Y2UxMTY3YTZjODMwZTgiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZSI7czozMjoiRnVuY3Rpb25Db21tZW50VGhyb3dUYWdTbmlmZi5waHAiO3M6Mzk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAcGF0aCI7czoxMDM6InZlbmRvci9zcXVpemxhYnMvcGhwX2NvZGVzbmlmZmVyL3NyYy9TdGFuZGFyZHMvU3F1aXovU25pZmZzL0NvbW1lbnRpbmcvRnVuY3Rpb25Db21tZW50VGhyb3dUYWdTbmlmZi5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjg0NDY6Ijw/cGhwCi8qKgogKiBWZXJpZmllcyB0aGF0IGEgQHRocm93cyB0YWcgZXhpc3RzIGZvciBlYWNoIGV4Y2VwdGlvbiB0eXBlIGEgZnVuY3Rpb24gdGhyb3dzLgogKgogKiBAYXV0aG9yICAgIEdyZWcgU2hlcndvb2QgPGdzaGVyd29vZEBzcXVpei5uZXQ+CiAqIEBjb3B5cmlnaHQgMjAwNi0yMDE1IFNxdWl6IFB0eSBMdGQgKEFCTiA3NyAwODQgNjcwIDYwMCkKICogQGxpY2Vuc2UgICBodHRwczovL2dpdGh1Yi5jb20vc3F1aXpsYWJzL1BIUF9Db2RlU25pZmZlci9ibG9iL21hc3Rlci9saWNlbmNlLnR4dCBCU0QgTGljZW5jZQogKi8KCm5hbWVzcGFjZSBQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nOwoKdXNlIFBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlOwp1c2UgUEhQX0NvZGVTbmlmZmVyXFNuaWZmc1xTbmlmZjsKdXNlIFBIUF9Db2RlU25pZmZlclxVdGlsXFRva2VuczsKCmNsYXNzIEZ1bmN0aW9uQ29tbWVudFRocm93VGFnU25pZmYgaW1wbGVtZW50cyBTbmlmZgp7CgoKICAgIC8qKgogICAgICogUmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMgdGhpcyB0ZXN0IHdhbnRzIHRvIGxpc3RlbiBmb3IuCiAgICAgKgogICAgICogQHJldHVybiBhcnJheQogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXIoKQogICAgewogICAgICAgIHJldHVybiBbVF9GVU5DVElPTl07CgogICAgfS8vZW5kIHJlZ2lzdGVyKCkKCgogICAgLyoqCiAgICAgKiBQcm9jZXNzZXMgdGhpcyB0ZXN0LCB3aGVuIG9uZSBvZiBpdHMgdG9rZW5zIGlzIGVuY291bnRlcmVkLgogICAgICoKICAgICAqIEBwYXJhbSBcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUgJHBocGNzRmlsZSBUaGUgZmlsZSBiZWluZyBzY2FubmVkLgogICAgICogQHBhcmFtIGludCAgICAgICAgICAgICAgICAgICAgICAgICAkc3RhY2tQdHIgIFRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbgogICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBzdGFjayBwYXNzZWQgaW4gJHRva2Vucy4KICAgICAqCiAgICAgKiBAcmV0dXJuIHZvaWQKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoRmlsZSAkcGhwY3NGaWxlLCAkc3RhY2tQdHIpCiAgICB7CiAgICAgICAgJHRva2VucyA9ICRwaHBjc0ZpbGUtPmdldFRva2VucygpOwoKICAgICAgICBpZiAoaXNzZXQoJHRva2Vuc1skc3RhY2tQdHJdWydzY29wZV9jbG9zZXInXSkgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIC8vIEFic3RyYWN0IG9yIGluY29tcGxldGUuCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRmaW5kICAgPSBUb2tlbnM6OiRtZXRob2RQcmVmaXhlczsKICAgICAgICAkZmluZFtdID0gVF9XSElURVNQQUNFOwoKICAgICAgICAkY29tbWVudEVuZCA9ICRwaHBjc0ZpbGUtPmZpbmRQcmV2aW91cygkZmluZCwgKCRzdGFja1B0ciAtIDEpLCBudWxsLCB0cnVlKTsKICAgICAgICBpZiAoJHRva2Vuc1skY29tbWVudEVuZF1bJ2NvZGUnXSAhPT0gVF9ET0NfQ09NTUVOVF9DTE9TRV9UQUcpIHsKICAgICAgICAgICAgLy8gRnVuY3Rpb24gZG9lc24ndCBoYXZlIGEgZG9jIGNvbW1lbnQgb3IgaXMgdXNpbmcgdGhlIHdyb25nIHR5cGUgb2YgY29tbWVudC4KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgJHN0YWNrUHRyRW5kID0gJHRva2Vuc1skc3RhY2tQdHJdWydzY29wZV9jbG9zZXInXTsKCiAgICAgICAgLy8gRmluZCBhbGwgdGhlIGV4Y2VwdGlvbiB0eXBlIHRva2VucyB3aXRoaW4gdGhlIGN1cnJlbnQgc2NvcGUuCiAgICAgICAgJHRocm93bkV4Y2VwdGlvbnMgPSBbXTsKICAgICAgICAkY3VyclBvcyAgICAgICAgICA9ICRzdGFja1B0cjsKICAgICAgICAkZm91bmRUaHJvd3MgICAgICA9IGZhbHNlOwogICAgICAgICR1bmtub3duQ291bnQgICAgID0gMDsKICAgICAgICBkbyB7CiAgICAgICAgICAgICRjdXJyUG9zID0gJHBocGNzRmlsZS0+ZmluZE5leHQoW1RfVEhST1csIFRfQU5PTl9DTEFTUywgVF9DTE9TVVJFXSwgKCRjdXJyUG9zICsgMSksICRzdGFja1B0ckVuZCk7CiAgICAgICAgICAgIGlmICgkY3VyclBvcyA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJHRva2Vuc1skY3VyclBvc11bJ2NvZGUnXSAhPT0gVF9USFJPVykgewogICAgICAgICAgICAgICAgJGN1cnJQb3MgPSAkdG9rZW5zWyRjdXJyUG9zXVsnc2NvcGVfY2xvc2VyJ107CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJGZvdW5kVGhyb3dzID0gdHJ1ZTsKCiAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICBJZiB3ZSBjYW4ndCBmaW5kIGEgTkVXLCB3ZSBhcmUgcHJvYmFibHkgdGhyb3dpbmcKICAgICAgICAgICAgICAgIGEgdmFyaWFibGUgb3IgY2FsbGluZyBhIG1ldGhvZC4KCiAgICAgICAgICAgICAgICBJZiB3ZSdyZSB0aHJvd2luZyBhIHZhcmlhYmxlLCBhbmQgaXQncyB0aGUgc2FtZSB2YXJpYWJsZSBhcyB0aGUKICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBjb250YWluZXIgZnJvbSB0aGUgbmVhcmVzdCAnY2F0Y2gnIGJsb2NrLCB3ZSB0YWtlIHRoYXQgZXhjZXB0aW9uCiAgICAgICAgICAgICAgICBhcyBpdCBpcyBsaWtlbHkgdG8gYmUgYSByZS10aHJvdy4KCiAgICAgICAgICAgICAgICBJZiB3ZSBjYW4ndCBmaW5kIGEgbWF0Y2hpbmcgY2F0Y2ggYmxvY2ssIG9yIHRoZSB2YXJpYWJsZSBuYW1lCiAgICAgICAgICAgICAgICBpcyBkaWZmZXJlbnQsIGl0J3MgcHJvYmFibHkgYSBkaWZmZXJlbnQgdmFyaWFibGUsIHNvIHdlIGlnbm9yZSBpdCwKICAgICAgICAgICAgICAgIGJ1dCB0aGV5IHN0aWxsIG5lZWQgdG8gcHJvdmlkZSBhdCBsZWFzdCBvbmUgQHRocm93cyB0YWcsIGV2ZW4gdGhyb3VnaCB3ZQogICAgICAgICAgICAgICAgZG9uJ3Qga25vdyB0aGUgZXhjZXB0aW9uIGNsYXNzLgogICAgICAgICAgICAqLwoKICAgICAgICAgICAgJG5leHRUb2tlbiA9ICRwaHBjc0ZpbGUtPmZpbmROZXh0KFRfV0hJVEVTUEFDRSwgKCRjdXJyUG9zICsgMSksIG51bGwsIHRydWUpOwogICAgICAgICAgICBpZiAoJHRva2Vuc1skbmV4dFRva2VuXVsnY29kZSddID09PSBUX05FVwogICAgICAgICAgICAgICAgfHwgJHRva2Vuc1skbmV4dFRva2VuXVsnY29kZSddID09PSBUX05TX1NFUEFSQVRPUgogICAgICAgICAgICAgICAgfHwgJHRva2Vuc1skbmV4dFRva2VuXVsnY29kZSddID09PSBUX1NUUklORwogICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgIGlmICgkdG9rZW5zWyRuZXh0VG9rZW5dWydjb2RlJ10gPT09IFRfTkVXKSB7CiAgICAgICAgICAgICAgICAgICAgJGN1cnJFeGNlcHRpb24gPSAkcGhwY3NGaWxlLT5maW5kTmV4dCgKICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9OU19TRVBBUkFUT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUX1NUUklORywKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgJGN1cnJQb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFja1B0ckVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY3VyckV4Y2VwdGlvbiA9ICRuZXh0VG9rZW47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCRjdXJyRXhjZXB0aW9uICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICRlbmRFeGNlcHRpb24gPSAkcGhwY3NGaWxlLT5maW5kTmV4dCgKICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgVF9OU19TRVBBUkFUT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUX1NUUklORywKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgKCRjdXJyRXhjZXB0aW9uICsgMSksCiAgICAgICAgICAgICAgICAgICAgICAgICRzdGFja1B0ckVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkZW5kRXhjZXB0aW9uID09PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhyb3duRXhjZXB0aW9uc1tdID0gJHRva2Vuc1skY3VyckV4Y2VwdGlvbl1bJ2NvbnRlbnQnXTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhyb3duRXhjZXB0aW9uc1tdID0gJHBocGNzRmlsZS0+Z2V0VG9rZW5zQXNTdHJpbmcoJGN1cnJFeGNlcHRpb24sICgkZW5kRXhjZXB0aW9uIC0gJGN1cnJFeGNlcHRpb24pKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9Ly9lbmQgaWYKICAgICAgICAgICAgfSBlbHNlIGlmICgkdG9rZW5zWyRuZXh0VG9rZW5dWydjb2RlJ10gPT09IFRfVkFSSUFCTEUpIHsKICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIG5lYXJlc3QgY2F0Y2ggYmxvY2sgaW4gdGhpcyBzY29wZSBhbmQsIGlmIHRoZSBjYXVnaHQgdmFyCiAgICAgICAgICAgICAgICAvLyBtYXRjaGVzIG91ciByZS10aHJvd24gdmFyLCB1c2UgdGhlIGV4Y2VwdGlvbiB0eXBlcyBiZWluZyBjYXVnaHQgYXMKICAgICAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiB0eXBlcyB0aGF0IGFyZSBiZWluZyB0aHJvd24gYXMgd2VsbC4KICAgICAgICAgICAgICAgICRjYXRjaCA9ICRwaHBjc0ZpbGUtPmZpbmRQcmV2aW91cygKICAgICAgICAgICAgICAgICAgICBUX0NBVENILAogICAgICAgICAgICAgICAgICAgICRjdXJyUG9zLAogICAgICAgICAgICAgICAgICAgICR0b2tlbnNbJHN0YWNrUHRyXVsnc2NvcGVfb3BlbmVyJ10sCiAgICAgICAgICAgICAgICAgICAgZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgbnVsbCwKICAgICAgICAgICAgICAgICAgICBmYWxzZQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJGNhdGNoICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgICAgICR0aHJvd25WYXIgPSAkcGhwY3NGaWxlLT5maW5kUHJldmlvdXMoCiAgICAgICAgICAgICAgICAgICAgICAgIFRfVkFSSUFCTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICgkdG9rZW5zWyRjYXRjaF1bJ3BhcmVudGhlc2lzX2Nsb3NlciddIC0gMSksCiAgICAgICAgICAgICAgICAgICAgICAgICR0b2tlbnNbJGNhdGNoXVsncGFyZW50aGVzaXNfb3BlbmVyJ10KICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRva2Vuc1skdGhyb3duVmFyXVsnY29udGVudCddID09PSAkdG9rZW5zWyRuZXh0VG9rZW5dWydjb250ZW50J10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGV4Y2VwdGlvbnMgPSBleHBsb2RlKCd8JywgJHBocGNzRmlsZS0+Z2V0VG9rZW5zQXNTdHJpbmcoKCR0b2tlbnNbJGNhdGNoXVsncGFyZW50aGVzaXNfb3BlbmVyJ10gKyAxKSwgKCR0aHJvd25WYXIgLSAkdG9rZW5zWyRjYXRjaF1bJ3BhcmVudGhlc2lzX29wZW5lciddIC0gMSkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGV4Y2VwdGlvbnMgYXMgJGV4Y2VwdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRocm93bkV4Y2VwdGlvbnNbXSA9IHRyaW0oJGV4Y2VwdGlvbik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICArKyR1bmtub3duQ291bnQ7CiAgICAgICAgICAgIH0vL2VuZCBpZgogICAgICAgIH0gd2hpbGUgKCRjdXJyUG9zIDwgJHN0YWNrUHRyRW5kICYmICRjdXJyUG9zICE9PSBmYWxzZSk7CgogICAgICAgIGlmICgkZm91bmRUaHJvd3MgPT09IGZhbHNlKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIE9ubHkgbmVlZCBvbmUgQHRocm93cyB0YWcgZm9yIGVhY2ggdHlwZSBvZiBleGNlcHRpb24gdGhyb3duLgogICAgICAgICR0aHJvd25FeGNlcHRpb25zID0gYXJyYXlfdW5pcXVlKCR0aHJvd25FeGNlcHRpb25zKTsKCiAgICAgICAgJHRocm93VGFncyAgICA9IFtdOwogICAgICAgICRjb21tZW50U3RhcnQgPSAkdG9rZW5zWyRjb21tZW50RW5kXVsnY29tbWVudF9vcGVuZXInXTsKICAgICAgICBmb3JlYWNoICgkdG9rZW5zWyRjb21tZW50U3RhcnRdWydjb21tZW50X3RhZ3MnXSBhcyAkdGFnKSB7CiAgICAgICAgICAgIGlmICgkdG9rZW5zWyR0YWddWydjb250ZW50J10gIT09ICdAdGhyb3dzJykgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkdG9rZW5zWygkdGFnICsgMildWydjb2RlJ10gPT09IFRfRE9DX0NPTU1FTlRfU1RSSU5HKSB7CiAgICAgICAgICAgICAgICAkZXhjZXB0aW9uID0gJHRva2Vuc1soJHRhZyArIDIpXVsnY29udGVudCddOwogICAgICAgICAgICAgICAgJHNwYWNlICAgICA9IHN0cnBvcygkZXhjZXB0aW9uLCAnICcpOwogICAgICAgICAgICAgICAgaWYgKCRzcGFjZSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICAgICAkZXhjZXB0aW9uID0gc3Vic3RyKCRleGNlcHRpb24sIDAsICRzcGFjZSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJHRocm93VGFnc1skZXhjZXB0aW9uXSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChlbXB0eSgkdGhyb3dUYWdzKSA9PT0gdHJ1ZSkgewogICAgICAgICAgICAkZXJyb3IgPSAnTWlzc2luZyBAdGhyb3dzIHRhZyBpbiBmdW5jdGlvbiBjb21tZW50JzsKICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkY29tbWVudEVuZCwgJ01pc3NpbmcnKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSBpZiAoZW1wdHkoJHRocm93bkV4Y2VwdGlvbnMpID09PSB0cnVlKSB7CiAgICAgICAgICAgIC8vIElmIHRva2VuIGNvdW50IGlzIHplcm8sIGl0IG1lYW5zIHRoYXQgb25seSB2YXJpYWJsZXMgYXJlIGJlaW5nCiAgICAgICAgICAgIC8vIHRocm93biwgc28gd2UgbmVlZCBhdCBsZWFzdCBvbmUgQHRocm93cyB0YWcgKGNoZWNrZWQgYWJvdmUpLgogICAgICAgICAgICAvLyBOb3RoaW5nIG1vcmUgdG8gZG8uCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIC8vIE1ha2Ugc3VyZSBAdGhyb3dzIHRhZyBjb3VudCBtYXRjaGVzIHRocm93biBjb3VudC4KICAgICAgICAkdGhyb3duQ291bnQgPSAoY291bnQoJHRocm93bkV4Y2VwdGlvbnMpICsgJHVua25vd25Db3VudCk7CiAgICAgICAgJHRhZ0NvdW50ICAgID0gY291bnQoJHRocm93VGFncyk7CiAgICAgICAgaWYgKCR0aHJvd25Db3VudCAhPT0gJHRhZ0NvdW50KSB7CiAgICAgICAgICAgICRlcnJvciA9ICdFeHBlY3RlZCAlcyBAdGhyb3dzIHRhZyhzKSBpbiBmdW5jdGlvbiBjb21tZW50OyAlcyBmb3VuZCc7CiAgICAgICAgICAgICRkYXRhICA9IFsKICAgICAgICAgICAgICAgICR0aHJvd25Db3VudCwKICAgICAgICAgICAgICAgICR0YWdDb3VudCwKICAgICAgICAgICAgXTsKICAgICAgICAgICAgJHBocGNzRmlsZS0+YWRkRXJyb3IoJGVycm9yLCAkY29tbWVudEVuZCwgJ1dyb25nTnVtYmVyJywgJGRhdGEpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBmb3JlYWNoICgkdGhyb3duRXhjZXB0aW9ucyBhcyAkdGhyb3cpIHsKICAgICAgICAgICAgaWYgKGlzc2V0KCR0aHJvd1RhZ3NbJHRocm93XSkgPT09IHRydWUpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3JlYWNoICgkdGhyb3dUYWdzIGFzICR0YWcgPT4gJGlnbm9yZSkgewogICAgICAgICAgICAgICAgaWYgKHN0cnJwb3MoJHRhZywgJHRocm93KSA9PT0gKHN0cmxlbigkdGFnKSAtIHN0cmxlbigkdGhyb3cpKSkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIDI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRlcnJvciA9ICdNaXNzaW5nIEB0aHJvd3MgdGFnIGZvciAiJXMiIGV4Y2VwdGlvbic7CiAgICAgICAgICAgICRkYXRhICA9IFskdGhyb3ddOwogICAgICAgICAgICAkcGhwY3NGaWxlLT5hZGRFcnJvcigkZXJyb3IsICRjb21tZW50RW5kLCAnTWlzc2luZycsICRkYXRhKTsKICAgICAgICB9CgogICAgfS8vZW5kIHByb2Nlc3MoKQoKCn0vL2VuZCBjbGFzcwoiO3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbmFtZXNwYWNlcyI7YToxOntzOjUwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZyI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjUwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZyI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjEwOiJDb21tZW50aW5nIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW5jbHVkZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZnVuY3Rpb25zIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGNvbnN0YW50cyI7YTowOnt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjbGFzc2VzIjthOjE6e3M6Nzk6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFRocm93VGFnU25pZmYiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfIjoxMzp7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Nzk6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFRocm93VGFnU25pZmYiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czoyODoiRnVuY3Rpb25Db21tZW50VGhyb3dUYWdTbmlmZiI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBkb2NCbG9jayI7TjtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AYWJzdHJhY3QiO2I6MDtzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AZmluYWwiO2I6MDtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxDbGFzc18AcGFyZW50IjtOO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBpbXBsZW1lbnRzIjthOjE6e3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjk6IlxQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtzOjM2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAG5hbWUiO3M6NToiU25pZmYiO319czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGNvbnN0YW50cyI7YTowOnt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHByb3BlcnRpZXMiO2E6MDp7fXM6NDQ6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBtZXRob2RzIjthOjI6e3M6OTE6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFRocm93VGFnU25pZmY6OnJlZ2lzdGVyKCkiO086MzU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kIjoxMjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGRvY0Jsb2NrIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2siOjc6e3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAc3VtbWFyeSI7czo1NzoiUmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMgdGhpcyB0ZXN0IHdhbnRzIHRvIGxpc3RlbiBmb3IuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjE6e2k6MDtPOjQ2OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xSZXR1cm5fIjozOntzOjc6IgAqAHR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBcnJheV8iOjM6e3M6MTI6IgAqAHZhbHVlVHlwZSI7TzozNzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE1peGVkXyI6MDp7fXM6MTA6IgAqAGtleVR5cGUiO047czoxNzoiACoAZGVmYXVsdEtleVR5cGUiO086Mzk6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb21wb3VuZCI6Mjp7czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0eXBlcyI7YToyOntpOjA7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFN0cmluZ18iOjA6e31pOjE7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXEludGVnZXIiOjA6e319czo1MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xBZ2dyZWdhdGVkVHlwZQB0b2tlbiI7czoxOiJ8Ijt9fXM6NzoiACoAbmFtZSI7czo2OiJyZXR1cm4iO3M6MTQ6IgAqAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319fX1zOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGNvbnRleHQiO086Mzg6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xDb250ZXh0IjoyOntzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlIjtzOjQ5OiJQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nIjtzOjU2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXENvbnRleHQAbmFtZXNwYWNlQWxpYXNlcyI7YTozOntzOjQ6IkZpbGUiO3M6MjY6IlBIUF9Db2RlU25pZmZlclxGaWxlc1xGaWxlIjtzOjU6IlNuaWZmIjtzOjI4OiJQSFBfQ29kZVNuaWZmZXJcU25pZmZzXFNuaWZmIjtzOjY6IlRva2VucyI7czoyNzoiUEhQX0NvZGVTbmlmZmVyXFV0aWxcVG9rZW5zIjt9fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAbG9jYXRpb24iO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlU3RhcnQiO2I6MDtzOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGlzVGVtcGxhdGVFbmQiO2I6MDt9czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6OTE6IlxQSFBfQ29kZVNuaWZmZXJcU3RhbmRhcmRzXFNxdWl6XFNuaWZmc1xDb21tZW50aW5nXEZ1bmN0aW9uQ29tbWVudFRocm93VGFnU25pZmY6OnJlZ2lzdGVyKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo4OiJyZWdpc3RlciI7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABhYnN0cmFjdCI7YjowO3M6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmaW5hbCI7YjowO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABzdGF0aWMiO2I6MDtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAdmlzaWJpbGl0eSI7TzozOToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5IjoxOntzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxWaXNpYmlsaXR5AHZpc2liaWxpdHkiO3M6NjoicHVibGljIjt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFyZ3VtZW50cyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGxvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyNTtzOjQ3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGNvbHVtbk51bWJlciI7aTowO31zOjQ4OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAZW5kTG9jYXRpb24iO086MzM6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbiI6Mjp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBsaW5lTnVtYmVyIjtpOjI5O3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AY29sdW1uTnVtYmVyIjtpOjA7fXM6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAByZXR1cm5UeXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGhhc1JldHVybkJ5UmVmZXJlbmNlIjtiOjA7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAG1ldGFkYXRhIjthOjA6e319czo5MDoiXFBIUF9Db2RlU25pZmZlclxTdGFuZGFyZHNcU3F1aXpcU25pZmZzXENvbW1lbnRpbmdcRnVuY3Rpb25Db21tZW50VGhyb3dUYWdTbmlmZjo6cHJvY2VzcygpIjtPOjM1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZCI6MTI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABkb2NCbG9jayI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrIjo3OntzOjQyOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAHN1bW1hcnkiO3M6NTk6IlByb2Nlc3NlcyB0aGlzIHRlc3QsIHdoZW4gb25lIG9mIGl0cyB0b2tlbnMgaXMgZW5jb3VudGVyZWQuIjtzOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGRlc2NyaXB0aW9uIjtPOjQ1OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24iOjI6e3M6NTk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AYm9keVRlbXBsYXRlIjtzOjA6IiI7czo1MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgB0YWdzIjthOjA6e319czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawB0YWdzIjthOjM6e2k6MDtPOjQ0OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbSI6Njp7czo1ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAHZhcmlhYmxlTmFtZSI7czo5OiJwaHBjc0ZpbGUiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XyI6MTp7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xPYmplY3RfAGZxc2VuIjtPOjMwOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4iOjI6e3M6Mzc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AZnFzZW4iO3M6Mjc6IlxQSFBfQ29kZVNuaWZmZXJcRmlsZXNcRmlsZSI7czozNjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxGcXNlbgBuYW1lIjtzOjQ6IkZpbGUiO319czo3OiIAKgBuYW1lIjtzOjU6InBhcmFtIjtzOjE0OiIAKgBkZXNjcmlwdGlvbiI7Tzo0NToicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uIjoyOntzOjU5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAGJvZHlUZW1wbGF0ZSI7czoyMzoiVGhlIGZpbGUgYmVpbmcgc2Nhbm5lZC4iO3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcRGVzY3JpcHRpb24AdGFncyI7YTowOnt9fX1pOjE7Tzo0NDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXFRhZ3NcUGFyYW0iOjY6e3M6NTg6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQB2YXJpYWJsZU5hbWUiO3M6ODoic3RhY2tQdHIiO3M6NTY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2tcVGFnc1xQYXJhbQBpc1ZhcmlhZGljIjtiOjA7czo1NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFBhcmFtAGlzUmVmZXJlbmNlIjtiOjA7czo3OiIAKgB0eXBlIjtPOjM4OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcSW50ZWdlciI6MDp7fXM6NzoiACoAbmFtZSI7czo1OiJwYXJhbSI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6NjU6IlRoZSBwb3NpdGlvbiBvZiB0aGUgY3VycmVudCB0b2tlbgppbiB0aGUgc3RhY2sgcGFzc2VkIGluICR0b2tlbnMuIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19aToyO086NDY6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xUYWdzXFJldHVybl8iOjM6e3M6NzoiACoAdHlwZSI7TzozNjoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXFZvaWRfIjowOnt9czo3OiIAKgBuYW1lIjtzOjY6InJldHVybiI7czoxNDoiACoAZGVzY3JpcHRpb24iO086NDU6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbiI6Mjp7czo1OToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9ja1xEZXNjcmlwdGlvbgBib2R5VGVtcGxhdGUiO3M6MDoiIjtzOjUxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrXERlc2NyaXB0aW9uAHRhZ3MiO2E6MDp7fX19fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAY29udGV4dCI7cjo3NjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXERvY0Jsb2NrAGxvY2F0aW9uIjtOO3M6NTA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRG9jQmxvY2sAaXNUZW1wbGF0ZVN0YXJ0IjtiOjA7czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxEb2NCbG9jawBpc1RlbXBsYXRlRW5kIjtiOjA7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjkwOiJcUEhQX0NvZGVTbmlmZmVyXFN0YW5kYXJkc1xTcXVpelxTbmlmZnNcQ29tbWVudGluZ1xGdW5jdGlvbkNvbW1lbnRUaHJvd1RhZ1NuaWZmOjpwcm9jZXNzKCkiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo3OiJwcm9jZXNzIjt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGFic3RyYWN0IjtiOjA7czo0MjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGZpbmFsIjtiOjA7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHN0YXRpYyI7YjowO3M6NDc6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZAB2aXNpYmlsaXR5IjtPOjM5OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkiOjE6e3M6NTE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXFZpc2liaWxpdHkAdmlzaWJpbGl0eSI7czo2OiJwdWJsaWMiO31zOjQ2OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAYXJndW1lbnRzIjthOjI6e2k6MDtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjk6InBocGNzRmlsZSI7czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAdHlwZSI7TzozODoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFR5cGVzXE9iamVjdF8iOjE6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcT2JqZWN0XwBmcXNlbiI7TzozMDoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuIjoyOntzOjM3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXEZxc2VuAGZxc2VuIjtzOjI3OiJcUEhQX0NvZGVTbmlmZmVyXEZpbGVzXEZpbGUiO3M6MzY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cRnFzZW4AbmFtZSI7czo0OiJGaWxlIjt9fXM6NDY6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGRlZmF1bHQiO047czo1MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAYnlSZWZlcmVuY2UiO2I6MDtzOjQ5OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABpc1ZhcmlhZGljIjtiOjA7fWk6MTtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50Ijo1OntzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABuYW1lIjtzOjg6InN0YWNrUHRyIjtzOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudAB0eXBlIjtPOjM3OiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cVHlwZXNcTWl4ZWRfIjowOnt9czo0NjoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQXJndW1lbnQAZGVmYXVsdCI7TjtzOjUwOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxBcmd1bWVudABieVJlZmVyZW5jZSI7YjowO3M6NDk6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEFyZ3VtZW50AGlzVmFyaWFkaWMiO2I6MDt9fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXE1ldGhvZABsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6NDE7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMzA7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcTWV0aG9kAHJldHVyblR5cGUiO086Mzc6InBocERvY3VtZW50b3JcUmVmbGVjdGlvblxUeXBlc1xNaXhlZF8iOjA6e31zOjU3OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAaGFzUmV0dXJuQnlSZWZlcmVuY2UiO2I6MDtzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxNZXRob2QAbWV0YWRhdGEiO2E6MDp7fX19czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAHVzZWRUcmFpdHMiO2E6MDp7fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXENsYXNzXwBsb2NhdGlvbiI7TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uIjoyOntzOjQ1OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXExvY2F0aW9uAGxpbmVOdW1iZXIiO2k6MTY7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0ODoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAGVuZExvY2F0aW9uIjtPOjMzOiJwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24iOjI6e3M6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cTG9jYXRpb24AbGluZU51bWJlciI7aToyMzM7czo0NzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxMb2NhdGlvbgBjb2x1bW5OdW1iZXIiO2k6MDt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcQ2xhc3NfAG1ldGFkYXRhIjthOjA6e319fXM6NDU6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAaW50ZXJmYWNlcyI7YTowOnt9czo0MToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQB0cmFpdHMiO2E6MDp7fXM6NDA6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZW51bXMiO2E6MDp7fXM6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAbWV0YWRhdGEiO2E6MDp7fX0=";