@tricoteuses/assemblee 1.1.4 → 1.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/git.js +2 -2
- package/lib/git.mjs +2 -2
- package/lib/parsers/recherche_amendements.js +1 -1
- package/lib/parsers/recherche_amendements.mjs +1 -1
- package/lib/scripts/clean_reorganized_data.js +1 -1
- package/lib/scripts/clean_reorganized_data.mjs +1 -1
- package/lib/scripts/parse_textes_lois.js +2 -2
- package/lib/scripts/parse_textes_lois.mjs +2 -2
- package/lib/scripts/reorganize_data.js +2 -2
- package/lib/scripts/reorganize_data.mjs +2 -2
- package/lib/scripts/retrieve_deputes_photos.js +2 -2
- package/lib/scripts/retrieve_deputes_photos.mjs +2 -2
- package/lib/scripts/retrieve_open_data.js +1 -1
- package/lib/scripts/retrieve_open_data.mjs +1 -1
- package/lib/scripts/retrieve_senateurs_photos.js +2 -2
- package/lib/scripts/retrieve_senateurs_photos.mjs +2 -2
- package/lib/scripts/retrieve_textes_lois.js +2 -2
- package/lib/scripts/retrieve_textes_lois.mjs +2 -2
- package/lib/types/dossiers_legislatifs.js +1 -1
- package/lib/types/dossiers_legislatifs.mjs +1 -1
- package/package.json +1 -1
|
@@ -57,7 +57,7 @@ const options = commandLineArgs(optionsDefinitions);
|
|
|
57
57
|
// stdio: ["ignore", "ignore", "pipe"],
|
|
58
58
|
// })
|
|
59
59
|
// try {
|
|
60
|
-
// execSync('git commit -m "Nouvelle moisson"', {
|
|
60
|
+
// execSync('git commit -m "Nouvelle moisson" --quiet', {
|
|
61
61
|
// cwd: repositoryDir,
|
|
62
62
|
// env: process.env,
|
|
63
63
|
// encoding: "utf-8",
|
|
@@ -211,4 +211,4 @@ function parseTextesLois() {
|
|
|
211
211
|
}
|
|
212
212
|
|
|
213
213
|
parseTextesLois();
|
|
214
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJwYXJzZVRleHRlTG9pIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiU3RyaW5nIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsInBhcnNlVGV4dGVzTG9pcyIsImNvbW1pdCIsImZpbGVuYW1lIiwiZGF0YURpciIsInRleHRlc0xvaXNEaXIiLCJqb2luIiwibGVnaXNsYXR1cmUiLCJyZWFkZGlyU3luYyIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsInRleHRlTG9pUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJ0ZXh0ZUxvaVBhZ2UiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInRleHRlTG9pVXJsIiwidGV4dGVMb2lQYXJzZWQiLCJ2ZXJib3NlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN1YmRpdmlzaW9ucyIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcGFyc2VfdGV4dGVzX2xvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbi8vIGltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbi8vIGltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG4vLyBpbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IHBhcnNlVGV4dGVMb2kgfSBmcm9tIFwiLi4vcGFyc2Vycy9kb2N1bWVudHNcIlxuLy8gaW1wb3J0IHsgRG9jdW1lbnQsIFR5cGVEb2N1bWVudCB9IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG4vLyBpbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJmXCIsXG4gICAgaGVscDogXCJGaWxlbmFtZSBvZiBBc3NlbWJsw6llJ3MgZG9jdW1lbnQgdG8gcGFyc2VcIixcbiAgICBuYW1lOiBcImZpbGVuYW1lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNlwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuLy8gZnVuY3Rpb24gY29tbWl0QW5kUHVzaChyZXBvc2l0b3J5RGlyOiBzdHJpbmcsIGNvbW1pdDogYm9vbGVhbiwgcmVtb3Rlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4vLyAgIGxldCBlcnJvciA9IGZhbHNlXG4vLyAgIGlmIChjb21taXQpIHtcbi8vICAgICBleGVjU3luYyhgZ2l0IGFkZCAuYCwge1xuLy8gICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgZW52OiBwcm9jZXNzLmVudixcbi8vICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4vLyAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbi8vICAgICB9KVxuLy8gICAgIHRyeSB7XG4vLyAgICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIicsIHtcbi8vICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuLy8gICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuLy8gICAgICAgfSlcbi8vICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbi8vICAgICAgIGlmIChcbi8vICAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuLy8gICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4vLyAgICAgICApIHtcbi8vICAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuLy8gICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3Ncbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuLy8gICAgICAgdHJ5IHtcbi8vICAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4vLyAgICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4vLyAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbi8vICAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbi8vICAgICAgICAgfSlcbi8vICAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuLy8gICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbi8vICAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuLy8gICAgICAgICBlcnJvciA9IHRydWVcbi8vICAgICAgIH1cbi8vICAgICB9XG4vLyAgIH1cbi8vICAgcmV0dXJuIGVycm9yXG4vLyB9XG5cbmZ1bmN0aW9uIHBhcnNlVGV4dGVzTG9pcygpOiB2b2lkIHtcbiAgYXNzZXJ0KFxuICAgICFvcHRpb25zLmNvbW1pdCB8fCBvcHRpb25zLmZpbGVuYW1lLFxuICAgICdPcHRpb25zIFwiY29tbWl0XCIgJiBcImZpbGVuYW1lXCIgYXJlIGluY29tcGF0aWJsZScsXG4gIClcblxuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIC8vIGNvbnN0IHsgZG9jdW1lbnRCeVVpZCB9ID0gbG9hZEFzc2VtYmxlZURhdGEoXG4gIC8vICAgZGF0YURpcixcbiAgLy8gICBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcyxcbiAgLy8gICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAvLyApXG5cbiAgY29uc3QgdGV4dGVzTG9pc0RpciA9IHBhdGguam9pbihcbiAgICBkYXRhRGlyLFxuICAgIFwid3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnJcIixcbiAgICBvcHRpb25zLmxlZ2lzbGF0dXJlLFxuICAgIFwidGV4dGVzXCIsXG4gIClcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyh0ZXh0ZXNMb2lzRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoXCIuYXNwXCIpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5maWxlbmFtZSAmJiAhZmlsZW5hbWUuc3RhcnRzV2l0aChvcHRpb25zLmZpbGVuYW1lKSkge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgdGV4dGVMb2lQYXRoID0gcGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBQYXJzaW5nIFwidGV4dGUgZGUgbG9pXCIgJHt0ZXh0ZUxvaVBhdGh94oCmYClcbiAgICB9XG4gICAgY29uc3QgdGV4dGVMb2lQYWdlID0gZnMucmVhZEZpbGVTeW5jKHRleHRlTG9pUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pXG4gICAgY29uc3QgdGV4dGVMb2lVcmwgPSBgaHR0cDovL3d3dy5hc3NlbWJsZWUtbmF0aW9uYWxlLmZyLyR7b3B0aW9ucy5sZWdpc2xhdHVyZX0vdGV4dGVzLyR7ZmlsZW5hbWV9YFxuICAgIGNvbnN0IHRleHRlTG9pUGFyc2VkID0gcGFyc2VUZXh0ZUxvaSh0ZXh0ZUxvaVVybCwgdGV4dGVMb2lQYWdlKVxuICAgIGlmIChvcHRpb25zLmZpbGVuYW1lICYmIG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkodGV4dGVMb2lQYXJzZWQuc3ViZGl2aXNpb25zLCBudWxsLCAyKSlcbiAgICB9XG4gICAgY29uc3QgeyBlcnJvciB9ID0gdGV4dGVMb2lQYXJzZWRcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGAgIEVycm9yIHdoaWxlIHBhcnNpbmcgcGFnZSBcIiR7dGV4dGVMb2lQYXRofVwiOlxcblxcbkVycm9yOlxcbiR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgZXJyb3IsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICAyLFxuICAgICAgICApfWAsXG4gICAgICApXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgfVxuXG4gIC8vIGZzLmVuc3VyZURpclN5bmModGV4dGVzTG9pc0RpcilcbiAgLy8gaWYgKCFvcHRpb25zLnVpZCkge1xuICAvLyAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmModGV4dGVzTG9pc0RpcikpIHtcbiAgLy8gICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKHRleHRlc0xvaXNEaXIsIGZpbGVuYW1lKSlcbiAgLy8gICB9XG4gIC8vIH1cblxuICAvLyBjb25zdCB0ZXh0ZXNMb2lzID0gT2JqZWN0LnZhbHVlcyhkb2N1bWVudEJ5VWlkKVxuICAvLyAgIC5maWx0ZXIoZG9jdW1lbnQgPT4gZG9jdW1lbnQueHNpVHlwZSA9PT0gVHlwZURvY3VtZW50LlRleHRlTG9pVHlwZSlcbiAgLy8gICAuZmlsdGVyKFxuICAvLyAgICAgZG9jdW1lbnQgPT4gZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQSU9OQU5cIikgfHwgZG9jdW1lbnQudWlkLnN0YXJ0c1dpdGgoXCJQUkpMQU5cIiksXG4gIC8vICAgKVxuICAvLyAgIC5tYXAoZG9jdW1lbnQgPT4ge1xuICAvLyAgICAgcmV0dXJuIHtcbiAgLy8gICAgICAgLi4uZG9jdW1lbnQsXG4gIC8vICAgICAgIHJhd0RvY3VtZW50QXNzZW1ibGVlVXJsOiB1cmxGcm9tRG9jdW1lbnQoZG9jdW1lbnQsIERvY3VtZW50VXJsRm9ybWF0LlJhd0h0bWwpLFxuICAvLyAgICAgfVxuICAvLyAgIH0pXG4gIC8vICAgLnNvcnQoKGEsIGIpID0+XG4gIC8vICAgICBhLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gIC8vICAgICAgID8gLTFcbiAgLy8gICAgICAgOiBiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsXG4gIC8vICAgICAgID8gMVxuICAvLyAgICAgICA6IGEucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwubG9jYWxlQ29tcGFyZShiLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKSxcbiAgLy8gICApXG5cbiAgLy8gY29uc3QgZmlyc3RVaWQgPSBvcHRpb25zLnVpZFxuICAvLyBsZXQgc2tpcCA9ICEhZmlyc3RVaWRcbiAgLy8gZm9yIChjb25zdCB0ZXh0ZUxvaSBvZiB0ZXh0ZXNMb2lzKSB7XG4gIC8vICAgaWYgKHNraXApIHtcbiAgLy8gICAgIGlmICh0ZXh0ZUxvaS51aWQgPT09IGZpcnN0VWlkKSB7XG4gIC8vICAgICAgIHNraXAgPSBmYWxzZVxuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAvLyAgICAgY29uc29sZS5sb2coXG4gIC8vICAgICAgIGBSZXRyaWV2aW5nIGJpbGwgJHt0ZXh0ZUxvaS51aWR9IGF0ICR7dGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmx9YCxcbiAgLy8gICAgIClcbiAgLy8gICB9XG4gIC8vICAgaWYgKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsID09PSBudWxsKSB7XG4gIC8vICAgICBjb250aW51ZVxuICAvLyAgIH1cbiAgLy8gICBjb25zdCB1cmwgPSBuZXcgVVJMKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsKVxuICAvLyAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFEaXIsIHVybC5ob3N0bmFtZSwgLi4udXJsLnBhdGhuYW1lLnNwbGl0KFwiL1wiKSlcbiAgLy8gICBhc3NlcnQuc3RyaWN0RXF1YWwodGV4dGVzTG9pc0RpciwgcGF0aC5kaXJuYW1lKGZpbGVQYXRoKSlcblxuICAvLyAgIGxldCBwYWdlID0gdW5kZWZpbmVkXG4gIC8vICAgdHJ5IHtcbiAgLy8gICAgIHBhZ2UgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmLThcIiB9KVxuICAvLyAgIH0gY2F0Y2ggKGUpIHtcbiAgLy8gICAgIGlmIChlLmNvZGUgPT09IFwiRU5PRU5UXCIpIHtcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICAgIHRocm93IGVcbiAgLy8gICB9XG5cbiAgLy8gICBpZiAob3B0aW9ucy5wYXJzZSkge1xuICAvLyAgICAgY29uc3QgdGV4dGVMb2lQYXJzZWQgPSBwYXJzZVRleHRlTG9pKHRleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsLCBwYWdlKVxuICAvLyAgICAgY29uc3QgeyBlcnJvciB9ID0gdGV4dGVMb2lQYXJzZWRcbiAgLy8gICAgIGlmIChlcnJvcikge1xuICAvLyAgICAgICBjb25zb2xlLmVycm9yKFxuICAvLyAgICAgICAgIGBFcnJvciB3aGlsZSBwYXJzaW5nIHBhZ2UgXCIke3RleHRlTG9pLnJhd0RvY3VtZW50QXNzZW1ibGVlVXJsfVwiICh1aWQ6ICR7XG4gIC8vICAgICAgICAgICB0ZXh0ZUxvaS51aWRcbiAgLy8gICAgICAgICB9KTpcXG5cXG5FcnJvcjpcXG4ke0pTT04uc3RyaW5naWZ5KGVycm9yLCBudWxsLCAyKX1gLFxuICAvLyAgICAgICApXG4gIC8vICAgICAgIGNvbnRpbnVlXG4gIC8vICAgICB9XG4gIC8vICAgfVxuICAvLyB9XG4gIC8vIGlmIGNvbW1pdEFuZFB1c2godGV4dGVzTG9pc0Rpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKSB7XG4gIC8vICAgcHJvY2Vzcy5leGl0KDEpXG4gIC8vIH1cbiAgLy8gcmV0dXJuIHRleHRlc0xvaXNcbn1cblxucGFyc2VUZXh0ZXNMb2lzKClcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFFBQVE7QUFDM0I7QUFDQSxPQUFPQyxlQUFlLE1BQU0sbUJBQW1CO0FBQy9DLE9BQU9DLEVBQUUsTUFBTSxVQUFVO0FBQ3pCLE9BQU9DLElBQUksTUFBTSxNQUFNOztBQUV2QjtBQUNBO0FBQUEsU0FDU0MsYUFBYSxvQ0FDdEI7QUFDQTtBQUVBLE1BQU1DLGtCQUFrQixHQUFHLENBQ3pCO0VBQ0VDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxvQkFBb0I7RUFDMUJDLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUM7QUFDUixDQUFDLEVBQ0Q7RUFDRUosS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLDJDQUEyQztFQUNqREMsSUFBSSxFQUFFLFVBQVU7RUFDaEJDLElBQUksRUFBRUU7QUFDUixDQUFDLEVBQ0Q7RUFDRUwsS0FBSyxFQUFFLEdBQUc7RUFDVk0sWUFBWSxFQUFFLElBQUk7RUFDbEJKLElBQUksRUFBRSxhQUFhO0VBQ25CQyxJQUFJLEVBQUVFO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VMLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSw2QkFBNkI7RUFDbkNNLFFBQVEsRUFBRSxJQUFJO0VBQ2RMLElBQUksRUFBRSxRQUFRO0VBQ2RDLElBQUksRUFBRUU7QUFDUixDQUFDLEVBQ0Q7RUFDRUwsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLG9CQUFvQjtFQUMxQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsY0FBYztFQUNwQkMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSSxhQUFhLEVBQUUsSUFBSTtFQUNuQlAsSUFBSSxFQUFFLGdEQUFnRDtFQUN0REMsSUFBSSxFQUFFLFNBQVM7RUFDZkMsSUFBSSxFQUFFRTtBQUNSLENBQUMsQ0FDRjtBQUNELE1BQU1JLE9BQU8sR0FBR2QsZUFBZSxDQUFDSSxrQkFBa0IsQ0FBQzs7QUFFbkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTVyxlQUFlLEdBQVM7RUFDL0JoQixNQUFNLENBQ0osQ0FBQ2UsT0FBTyxDQUFDRSxNQUFNLElBQUlGLE9BQU8sQ0FBQ0csUUFBUSxFQUNuQyxnREFBZ0QsQ0FDakQ7RUFFRCxNQUFNQyxPQUFPLEdBQUdKLE9BQU8sQ0FBQ0ksT0FBTztFQUMvQjtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBLE1BQU1DLGFBQWEsR0FBR2pCLElBQUksQ0FBQ2tCLElBQUksQ0FDN0JGLE9BQU8sRUFDUCw0QkFBNEIsRUFDNUJKLE9BQU8sQ0FBQ08sV0FBVyxFQUNuQixRQUFRLENBQ1Q7RUFDRCxLQUFLLE1BQU1KLFFBQVEsSUFBSWhCLEVBQUUsQ0FBQ3FCLFdBQVcsQ0FBQ0gsYUFBYSxDQUFDLEVBQUU7SUFDcEQsSUFBSUYsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtNQUN2QjtJQUNGO0lBQ0EsSUFBSSxDQUFDQSxRQUFRLENBQUNNLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRTtNQUM5QjtJQUNGO0lBQ0EsSUFBSVQsT0FBTyxDQUFDRyxRQUFRLElBQUksQ0FBQ0EsUUFBUSxDQUFDTyxVQUFVLENBQUNWLE9BQU8sQ0FBQ0csUUFBUSxDQUFDLEVBQUU7TUFDOUQ7SUFDRjtJQUNBLE1BQU1RLFlBQVksR0FBR3ZCLElBQUksQ0FBQ2tCLElBQUksQ0FBQ0QsYUFBYSxFQUFFRixRQUFRLENBQUM7SUFDdkQsSUFBSSxDQUFDSCxPQUFPLENBQUNZLE1BQU0sRUFBRTtNQUNuQkMsT0FBTyxDQUFDQyxHQUFHLENBQUUsMEJBQXlCSCxZQUFhLEdBQUUsQ0FBQztJQUN4RDtJQUNBLE1BQU1JLFlBQVksR0FBRzVCLEVBQUUsQ0FBQzZCLFlBQVksQ0FBQ0wsWUFBWSxFQUFFO01BQUVNLFFBQVEsRUFBRTtJQUFRLENBQUMsQ0FBQztJQUN6RSxNQUFNQyxXQUFXLEdBQUkscUNBQW9DbEIsT0FBTyxDQUFDTyxXQUFZLFdBQVVKLFFBQVMsRUFBQztJQUNqRyxNQUFNZ0IsY0FBYyxHQUFHOUIsYUFBYSxDQUFDNkIsV0FBVyxFQUFFSCxZQUFZLENBQUM7SUFDL0QsSUFBSWYsT0FBTyxDQUFDRyxRQUFRLElBQUlILE9BQU8sQ0FBQ29CLE9BQU8sRUFBRTtNQUN2Q1AsT0FBTyxDQUFDQyxHQUFHLENBQUNPLElBQUksQ0FBQ0MsU0FBUyxDQUFDSCxjQUFjLENBQUNJLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkU7SUFDQSxNQUFNO01BQUVDO0lBQU0sQ0FBQyxHQUFHTCxjQUFjO0lBQ2hDLElBQUlLLEtBQUssRUFBRTtNQUNUWCxPQUFPLENBQUNXLEtBQUssQ0FDViwrQkFBOEJiLFlBQWEsaUJBQWdCVSxJQUFJLENBQUNDLFNBQVMsQ0FDeEVFLEtBQUssRUFDTCxJQUFJLEVBQ0osQ0FBQyxDQUNELEVBQUMsQ0FDSjtNQUNEO0lBQ0Y7RUFDRjs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNGOztBQUVBdkIsZUFBZSxFQUFFIn0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJwYXJzZVRleHRlTG9pIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiU3RyaW5nIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsInBhcnNlVGV4dGVzTG9pcyIsImNvbW1pdCIsImZpbGVuYW1lIiwiZGF0YURpciIsInRleHRlc0xvaXNEaXIiLCJqb2luIiwibGVnaXNsYXR1cmUiLCJyZWFkZGlyU3luYyIsImVuZHNXaXRoIiwic3RhcnRzV2l0aCIsInRleHRlTG9pUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJ0ZXh0ZUxvaVBhZ2UiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsInRleHRlTG9pVXJsIiwidGV4dGVMb2lQYXJzZWQiLCJ2ZXJib3NlIiwiSlNPTiIsInN0cmluZ2lmeSIsInN1YmRpdmlzaW9ucyIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvcGFyc2VfdGV4dGVzX2xvaXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbi8vIGltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5cbi8vIGltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG4vLyBpbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IHBhcnNlVGV4dGVMb2kgfSBmcm9tIFwiLi4vcGFyc2Vycy9kb2N1bWVudHNcIlxuLy8gaW1wb3J0IHsgRG9jdW1lbnQsIFR5cGVEb2N1bWVudCB9IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG4vLyBpbXBvcnQgeyBEb2N1bWVudFVybEZvcm1hdCwgdXJsRnJvbURvY3VtZW50IH0gZnJvbSBcIi4uL3VybHNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJmXCIsXG4gICAgaGVscDogXCJGaWxlbmFtZSBvZiBBc3NlbWJsw6llJ3MgZG9jdW1lbnQgdG8gcGFyc2VcIixcbiAgICBuYW1lOiBcImZpbGVuYW1lXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwibFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIxNlwiLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuLy8gZnVuY3Rpb24gY29tbWl0QW5kUHVzaChyZXBvc2l0b3J5RGlyOiBzdHJpbmcsIGNvbW1pdDogYm9vbGVhbiwgcmVtb3Rlcz86IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4vLyAgIGxldCBlcnJvciA9IGZhbHNlXG4vLyAgIGlmIChjb21taXQpIHtcbi8vICAgICBleGVjU3luYyhgZ2l0IGFkZCAuYCwge1xuLy8gICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuLy8gICAgICAgZW52OiBwcm9jZXNzLmVudixcbi8vICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4vLyAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbi8vICAgICB9KVxuLy8gICAgIHRyeSB7XG4vLyAgICAgICBleGVjU3luYygnZ2l0IGNvbW1pdCAtbSBcIk5vdXZlbGxlIG1vaXNzb25cIiAtLXF1aWV0Jywge1xuLy8gICAgICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4vLyAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4vLyAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4vLyAgICAgICB9KVxuLy8gICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuLy8gICAgICAgaWYgKFxuLy8gICAgICAgICAoY2hpbGRQcm9jZXNzIGFzIENoaWxkUHJvY2Vzcykuc3RkZXJyID09PSBudWxsIHx8XG4vLyAgICAgICAgICEvbm90aGluZyB0byBjb21taXQvLnRlc3QoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLnN0ZG91dClcbi8vICAgICAgICkge1xuLy8gICAgICAgICBjb25zb2xlLmVycm9yKChjaGlsZFByb2Nlc3MgYXMgYW55KS5vdXRwdXQpXG4vLyAgICAgICAgIHRocm93IGNoaWxkUHJvY2Vzc1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vICAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiByZW1vdGVzIHx8IFtdKSB7XG4vLyAgICAgICB0cnkge1xuLy8gICAgICAgICBleGVjU3luYyhgZ2l0IHB1c2ggJHtyZW1vdGV9IG1hc3RlcmAsIHtcbi8vICAgICAgICAgICBjd2Q6IHJlcG9zaXRvcnlEaXIsXG4vLyAgICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbi8vICAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuLy8gICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuLy8gICAgICAgICB9KVxuLy8gICAgICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4vLyAgICAgICAgIC8vIERvbid0IHN0b3Agd2hlbiBwdXNoIGZhaWxzLlxuLy8gICAgICAgICBjb25zb2xlLmVycm9yKChjaGlsZFByb2Nlc3MgYXMgYW55KS5vdXRwdXQpXG4vLyAgICAgICAgIGVycm9yID0gdHJ1ZVxuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vICAgfVxuLy8gICByZXR1cm4gZXJyb3Jcbi8vIH1cblxuZnVuY3Rpb24gcGFyc2VUZXh0ZXNMb2lzKCk6IHZvaWQge1xuICBhc3NlcnQoXG4gICAgIW9wdGlvbnMuY29tbWl0IHx8IG9wdGlvbnMuZmlsZW5hbWUsXG4gICAgJ09wdGlvbnMgXCJjb21taXRcIiAmIFwiZmlsZW5hbWVcIiBhcmUgaW5jb21wYXRpYmxlJyxcbiAgKVxuXG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgLy8gY29uc3QgeyBkb2N1bWVudEJ5VWlkIH0gPSBsb2FkQXNzZW1ibGVlRGF0YShcbiAgLy8gICBkYXRhRGlyLFxuICAvLyAgIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzLFxuICAvLyAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gIC8vIClcblxuICBjb25zdCB0ZXh0ZXNMb2lzRGlyID0gcGF0aC5qb2luKFxuICAgIGRhdGFEaXIsXG4gICAgXCJ3d3cuYXNzZW1ibGVlLW5hdGlvbmFsZS5mclwiLFxuICAgIG9wdGlvbnMubGVnaXNsYXR1cmUsXG4gICAgXCJ0ZXh0ZXNcIixcbiAgKVxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKHRleHRlc0xvaXNEaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aChcIi5hc3BcIikpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGlmIChvcHRpb25zLmZpbGVuYW1lICYmICFmaWxlbmFtZS5zdGFydHNXaXRoKG9wdGlvbnMuZmlsZW5hbWUpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBjb25zdCB0ZXh0ZUxvaVBhdGggPSBwYXRoLmpvaW4odGV4dGVzTG9pc0RpciwgZmlsZW5hbWUpXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coYFBhcnNpbmcgXCJ0ZXh0ZSBkZSBsb2lcIiAke3RleHRlTG9pUGF0aH3igKZgKVxuICAgIH1cbiAgICBjb25zdCB0ZXh0ZUxvaVBhZ2UgPSBmcy5yZWFkRmlsZVN5bmModGV4dGVMb2lQYXRoLCB7IGVuY29kaW5nOiBcInV0Zi04XCIgfSlcbiAgICBjb25zdCB0ZXh0ZUxvaVVybCA9IGBodHRwOi8vd3d3LmFzc2VtYmxlZS1uYXRpb25hbGUuZnIvJHtvcHRpb25zLmxlZ2lzbGF0dXJlfS90ZXh0ZXMvJHtmaWxlbmFtZX1gXG4gICAgY29uc3QgdGV4dGVMb2lQYXJzZWQgPSBwYXJzZVRleHRlTG9pKHRleHRlTG9pVXJsLCB0ZXh0ZUxvaVBhZ2UpXG4gICAgaWYgKG9wdGlvbnMuZmlsZW5hbWUgJiYgb3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh0ZXh0ZUxvaVBhcnNlZC5zdWJkaXZpc2lvbnMsIG51bGwsIDIpKVxuICAgIH1cbiAgICBjb25zdCB7IGVycm9yIH0gPSB0ZXh0ZUxvaVBhcnNlZFxuICAgIGlmIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYCAgRXJyb3Igd2hpbGUgcGFyc2luZyBwYWdlIFwiJHt0ZXh0ZUxvaVBhdGh9XCI6XFxuXFxuRXJyb3I6XFxuJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICBlcnJvcixcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIDIsXG4gICAgICAgICl9YCxcbiAgICAgIClcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICB9XG5cbiAgLy8gZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZXNMb2lzRGlyKVxuICAvLyBpZiAoIW9wdGlvbnMudWlkKSB7XG4gIC8vICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyh0ZXh0ZXNMb2lzRGlyKSkge1xuICAvLyAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAvLyAgICAgICBjb250aW51ZVxuICAvLyAgICAgfVxuICAvLyAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4odGV4dGVzTG9pc0RpciwgZmlsZW5hbWUpKVxuICAvLyAgIH1cbiAgLy8gfVxuXG4gIC8vIGNvbnN0IHRleHRlc0xvaXMgPSBPYmplY3QudmFsdWVzKGRvY3VtZW50QnlVaWQpXG4gIC8vICAgLmZpbHRlcihkb2N1bWVudCA9PiBkb2N1bWVudC54c2lUeXBlID09PSBUeXBlRG9jdW1lbnQuVGV4dGVMb2lUeXBlKVxuICAvLyAgIC5maWx0ZXIoXG4gIC8vICAgICBkb2N1bWVudCA9PiBkb2N1bWVudC51aWQuc3RhcnRzV2l0aChcIlBJT05BTlwiKSB8fCBkb2N1bWVudC51aWQuc3RhcnRzV2l0aChcIlBSSkxBTlwiKSxcbiAgLy8gICApXG4gIC8vICAgLm1hcChkb2N1bWVudCA9PiB7XG4gIC8vICAgICByZXR1cm4ge1xuICAvLyAgICAgICAuLi5kb2N1bWVudCxcbiAgLy8gICAgICAgcmF3RG9jdW1lbnRBc3NlbWJsZWVVcmw6IHVybEZyb21Eb2N1bWVudChkb2N1bWVudCwgRG9jdW1lbnRVcmxGb3JtYXQuUmF3SHRtbCksXG4gIC8vICAgICB9XG4gIC8vICAgfSlcbiAgLy8gICAuc29ydCgoYSwgYikgPT5cbiAgLy8gICAgIGEucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwgPT09IG51bGxcbiAgLy8gICAgICAgPyAtMVxuICAvLyAgICAgICA6IGIucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwgPT09IG51bGxcbiAgLy8gICAgICAgPyAxXG4gIC8vICAgICAgIDogYS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybC5sb2NhbGVDb21wYXJlKGIucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwpLFxuICAvLyAgIClcblxuICAvLyBjb25zdCBmaXJzdFVpZCA9IG9wdGlvbnMudWlkXG4gIC8vIGxldCBza2lwID0gISFmaXJzdFVpZFxuICAvLyBmb3IgKGNvbnN0IHRleHRlTG9pIG9mIHRleHRlc0xvaXMpIHtcbiAgLy8gICBpZiAoc2tpcCkge1xuICAvLyAgICAgaWYgKHRleHRlTG9pLnVpZCA9PT0gZmlyc3RVaWQpIHtcbiAgLy8gICAgICAgc2tpcCA9IGZhbHNlXG4gIC8vICAgICB9IGVsc2Uge1xuICAvLyAgICAgICBjb250aW51ZVxuICAvLyAgICAgfVxuICAvLyAgIH1cbiAgLy8gICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gIC8vICAgICBjb25zb2xlLmxvZyhcbiAgLy8gICAgICAgYFJldHJpZXZpbmcgYmlsbCAke3RleHRlTG9pLnVpZH0gYXQgJHt0ZXh0ZUxvaS5yYXdEb2N1bWVudEFzc2VtYmxlZVVybH1gLFxuICAvLyAgICAgKVxuICAvLyAgIH1cbiAgLy8gICBpZiAodGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwgPT09IG51bGwpIHtcbiAgLy8gICAgIGNvbnRpbnVlXG4gIC8vICAgfVxuICAvLyAgIGNvbnN0IHVybCA9IG5ldyBVUkwodGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwpXG4gIC8vICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YURpciwgdXJsLmhvc3RuYW1lLCAuLi51cmwucGF0aG5hbWUuc3BsaXQoXCIvXCIpKVxuICAvLyAgIGFzc2VydC5zdHJpY3RFcXVhbCh0ZXh0ZXNMb2lzRGlyLCBwYXRoLmRpcm5hbWUoZmlsZVBhdGgpKVxuXG4gIC8vICAgbGV0IHBhZ2UgPSB1bmRlZmluZWRcbiAgLy8gICB0cnkge1xuICAvLyAgICAgcGFnZSA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGYtOFwiIH0pXG4gIC8vICAgfSBjYXRjaCAoZSkge1xuICAvLyAgICAgaWYgKGUuY29kZSA9PT0gXCJFTk9FTlRcIikge1xuICAvLyAgICAgICBjb250aW51ZVxuICAvLyAgICAgfVxuICAvLyAgICAgdGhyb3cgZVxuICAvLyAgIH1cblxuICAvLyAgIGlmIChvcHRpb25zLnBhcnNlKSB7XG4gIC8vICAgICBjb25zdCB0ZXh0ZUxvaVBhcnNlZCA9IHBhcnNlVGV4dGVMb2kodGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmwsIHBhZ2UpXG4gIC8vICAgICBjb25zdCB7IGVycm9yIH0gPSB0ZXh0ZUxvaVBhcnNlZFxuICAvLyAgICAgaWYgKGVycm9yKSB7XG4gIC8vICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gIC8vICAgICAgICAgYEVycm9yIHdoaWxlIHBhcnNpbmcgcGFnZSBcIiR7dGV4dGVMb2kucmF3RG9jdW1lbnRBc3NlbWJsZWVVcmx9XCIgKHVpZDogJHtcbiAgLy8gICAgICAgICAgIHRleHRlTG9pLnVpZFxuICAvLyAgICAgICAgIH0pOlxcblxcbkVycm9yOlxcbiR7SlNPTi5zdHJpbmdpZnkoZXJyb3IsIG51bGwsIDIpfWAsXG4gIC8vICAgICAgIClcbiAgLy8gICAgICAgY29udGludWVcbiAgLy8gICAgIH1cbiAgLy8gICB9XG4gIC8vIH1cbiAgLy8gaWYgY29tbWl0QW5kUHVzaCh0ZXh0ZXNMb2lzRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpIHtcbiAgLy8gICBwcm9jZXNzLmV4aXQoMSlcbiAgLy8gfVxuICAvLyByZXR1cm4gdGV4dGVzTG9pc1xufVxuXG5wYXJzZVRleHRlc0xvaXMoKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxNQUFNLE1BQU0sUUFBUTtBQUMzQjtBQUNBLE9BQU9DLGVBQWUsTUFBTSxtQkFBbUI7QUFDL0MsT0FBT0MsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsSUFBSSxNQUFNLE1BQU07O0FBRXZCO0FBQ0E7QUFBQSxTQUNTQyxhQUFhLG9DQUN0QjtBQUNBO0FBRUEsTUFBTUMsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLG9CQUFvQjtFQUMxQkMsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsMkNBQTJDO0VBQ2pEQyxJQUFJLEVBQUUsVUFBVTtFQUNoQkMsSUFBSSxFQUFFRTtBQUNSLENBQUMsRUFDRDtFQUNFTCxLQUFLLEVBQUUsR0FBRztFQUNWTSxZQUFZLEVBQUUsSUFBSTtFQUNsQkosSUFBSSxFQUFFLGFBQWE7RUFDbkJDLElBQUksRUFBRUU7QUFDUixDQUFDLEVBQ0Q7RUFDRUwsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLDZCQUE2QjtFQUNuQ00sUUFBUSxFQUFFLElBQUk7RUFDZEwsSUFBSSxFQUFFLFFBQVE7RUFDZEMsSUFBSSxFQUFFRTtBQUNSLENBQUMsRUFDRDtFQUNFTCxLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsb0JBQW9CO0VBQzFCQyxJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFJLEVBQUVDO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VKLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSxjQUFjO0VBQ3BCQyxJQUFJLEVBQUUsU0FBUztFQUNmQyxJQUFJLEVBQUVDO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VJLGFBQWEsRUFBRSxJQUFJO0VBQ25CUCxJQUFJLEVBQUUsZ0RBQWdEO0VBQ3REQyxJQUFJLEVBQUUsU0FBUztFQUNmQyxJQUFJLEVBQUVFO0FBQ1IsQ0FBQyxDQUNGO0FBQ0QsTUFBTUksT0FBTyxHQUFHZCxlQUFlLENBQUNJLGtCQUFrQixDQUFDOztBQUVuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVNXLGVBQWUsR0FBUztFQUMvQmhCLE1BQU0sQ0FDSixDQUFDZSxPQUFPLENBQUNFLE1BQU0sSUFBSUYsT0FBTyxDQUFDRyxRQUFRLEVBQ25DLGdEQUFnRCxDQUNqRDtFQUVELE1BQU1DLE9BQU8sR0FBR0osT0FBTyxDQUFDSSxPQUFPO0VBQy9CO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUEsTUFBTUMsYUFBYSxHQUFHakIsSUFBSSxDQUFDa0IsSUFBSSxDQUM3QkYsT0FBTyxFQUNQLDRCQUE0QixFQUM1QkosT0FBTyxDQUFDTyxXQUFXLEVBQ25CLFFBQVEsQ0FDVDtFQUNELEtBQUssTUFBTUosUUFBUSxJQUFJaEIsRUFBRSxDQUFDcUIsV0FBVyxDQUFDSCxhQUFhLENBQUMsRUFBRTtJQUNwRCxJQUFJRixRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO01BQ3ZCO0lBQ0Y7SUFDQSxJQUFJLENBQUNBLFFBQVEsQ0FBQ00sUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFO01BQzlCO0lBQ0Y7SUFDQSxJQUFJVCxPQUFPLENBQUNHLFFBQVEsSUFBSSxDQUFDQSxRQUFRLENBQUNPLFVBQVUsQ0FBQ1YsT0FBTyxDQUFDRyxRQUFRLENBQUMsRUFBRTtNQUM5RDtJQUNGO0lBQ0EsTUFBTVEsWUFBWSxHQUFHdkIsSUFBSSxDQUFDa0IsSUFBSSxDQUFDRCxhQUFhLEVBQUVGLFFBQVEsQ0FBQztJQUN2RCxJQUFJLENBQUNILE9BQU8sQ0FBQ1ksTUFBTSxFQUFFO01BQ25CQyxPQUFPLENBQUNDLEdBQUcsQ0FBRSwwQkFBeUJILFlBQWEsR0FBRSxDQUFDO0lBQ3hEO0lBQ0EsTUFBTUksWUFBWSxHQUFHNUIsRUFBRSxDQUFDNkIsWUFBWSxDQUFDTCxZQUFZLEVBQUU7TUFBRU0sUUFBUSxFQUFFO0lBQVEsQ0FBQyxDQUFDO0lBQ3pFLE1BQU1DLFdBQVcsR0FBSSxxQ0FBb0NsQixPQUFPLENBQUNPLFdBQVksV0FBVUosUUFBUyxFQUFDO0lBQ2pHLE1BQU1nQixjQUFjLEdBQUc5QixhQUFhLENBQUM2QixXQUFXLEVBQUVILFlBQVksQ0FBQztJQUMvRCxJQUFJZixPQUFPLENBQUNHLFFBQVEsSUFBSUgsT0FBTyxDQUFDb0IsT0FBTyxFQUFFO01BQ3ZDUCxPQUFPLENBQUNDLEdBQUcsQ0FBQ08sSUFBSSxDQUFDQyxTQUFTLENBQUNILGNBQWMsQ0FBQ0ksWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNuRTtJQUNBLE1BQU07TUFBRUM7SUFBTSxDQUFDLEdBQUdMLGNBQWM7SUFDaEMsSUFBSUssS0FBSyxFQUFFO01BQ1RYLE9BQU8sQ0FBQ1csS0FBSyxDQUNWLCtCQUE4QmIsWUFBYSxpQkFBZ0JVLElBQUksQ0FBQ0MsU0FBUyxDQUN4RUUsS0FBSyxFQUNMLElBQUksRUFDSixDQUFDLENBQ0QsRUFBQyxDQUNKO01BQ0Q7SUFDRjtFQUNGOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0Y7O0FBRUF2QixlQUFlLEVBQUUifQ==
|
|
@@ -115,7 +115,7 @@ function commitAndPush(repositoryDir, commit, remotes) {
|
|
|
115
115
|
stdio: ["ignore", "ignore", "pipe"]
|
|
116
116
|
});
|
|
117
117
|
try {
|
|
118
|
-
(0, _child_process.execSync)('git commit -m "Nouvelle moisson"', {
|
|
118
|
+
(0, _child_process.execSync)('git commit -m "Nouvelle moisson" --quiet', {
|
|
119
119
|
cwd: repositoryDir,
|
|
120
120
|
env: process.env,
|
|
121
121
|
encoding: "utf-8"
|
|
@@ -908,4 +908,4 @@ if (process.argv[1].endsWith("reorganize_data.ts")) {
|
|
|
908
908
|
process.exit(0);
|
|
909
909
|
}
|
|
910
910
|
}
|
|
911
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJtdWx0aXBsZSIsIk51bWJlciIsImRlZmF1bHRPcHRpb24iLCJjb21taXRBbmRQdXNoIiwicmVwb3NpdG9yeURpciIsImNvbW1pdCIsInJlbW90ZXMiLCJlcnJvciIsImV4ZWNTeW5jIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJjaGlsZFByb2Nlc3MiLCJzdGRlcnIiLCJ0ZXN0Iiwic3Rkb3V0IiwiY29uc29sZSIsIm91dHB1dCIsInJlbW90ZSIsInJlb3JnYW5pemVEYXRhIiwib3B0aW9ucyIsImRhdGFEaXIiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJnaXRHcm91cFVybCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJ1bmRlZmluZWQiLCJ2YWxpZGF0ZVJhd0RhdGEiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsIkVuYWJsZWREYXRhc2V0cyIsImVuYWJsZWREYXRhc2V0cyIsInJlZHVjZSIsIk5vbmUiLCJjaG9vc2VuRGF0YXNldHMiLCJkYXRhc2V0cyIsImxlZ2lzbGF0dXJlIiwiZW5hYmxlZExlZ2lzbGF0dXJlcyIsInRvU3RyaW5nIiwiT2JqZWN0IiwiZW50cmllcyIsImtleSIsInZhbHVlIiwiZmlsdGVyIiwiZGF0YXNldCIsImluY2x1ZGVzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImFjdGV1cnNFdE9yZ2FuZXMiLCJvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImJhc2VuYW1lIiwiZGF0YXNldFJlb3JnYW5pemVkRGlyIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwicmVhZGRpclN5bmMiLCJyZW1vdmVTeW5jIiwiYWN0ZXVyc1Jlb3JnYW5pemVkRGlyIiwibWtkaXJTeW5jIiwib3JnYW5lc1Jlb3JnYW5pemVkRGlyIiwic3RydWN0dXJlIiwiRGF0YXNldFN0cnVjdHVyZSIsIlNpbmdsZUZpbGUiLCJvcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJvcmlnaW5hbERhdGEiLCJBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCIsInRvQWN0ZXVyc0V0T3JnYW5lcyIsIkpTT04iLCJwYXJzZSIsImFjdGV1cnMiLCJhY3RldXIiLCJyZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsInVpZCIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJvcmdhbmVzIiwib3JnYW5lIiwiU2VnbWVudGVkRmlsZXMiLCJkZXBvcnRzQnlBY3RldXJVaWQiLCJleGlzdHNTeW5jIiwid2Fsa0RpciIsImRlcG9ydFNwbGl0UGF0aCIsImRlcG9ydEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJkZXBvcnRPcmlnaW5hbEZpbGVQYXRoIiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwicHVzaCIsInZhbHVlcyIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJtYW5kYXRTcGxpdFBhdGgiLCJtYW5kYXRGaWxlbmFtZSIsIm1hbmRhdE9yaWdpbmFsRmlsZVBhdGgiLCJtYW5kYXRPcmlnaW5hbEpzb24iLCJtYW5kYXRPcmlnaW5hbCIsInRvTWFuZGF0V3JhcHBlciIsIm1hbmRhdCIsIm1hbmRhdHMiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImFjdGV1ck9yaWdpbmFsRmlsZVBhdGgiLCJhY3RldXJPcmlnaW5hbEpzb24iLCJhY3RldXJPcmlnaW5hbCIsInRvQWN0ZXVyIiwiYWN0ZXVyVWlkIiwic3RyaWN0RXF1YWwiLCJhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lT3JpZ2luYWxGaWxlUGF0aCIsIm9yZ2FuZU9yaWdpbmFsSnNvbiIsIm9yZ2FuZU9yaWdpbmFsIiwidG9PcmdhbmUiLCJvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwiQWdlbmRhc1Jhd0NvbnZlcnQiLCJ0b0FnZW5kYXMiLCJyZXVuaW9ucyIsInJldW5pb24iLCJ3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24iLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsIkFtZW5kZW1lbnRzUmF3Q29udmVydCIsInRvQW1lbmRlbWVudHMiLCJ0ZXh0ZXNFdEFtZW5kZW1lbnRzIiwidGV4dGVsZWciLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwiRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsImRvY3VtZW50Iiwid3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbiIsImRvc3NpZXIiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsIndyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24iLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgiLCJkb2N1bWVudE9yaWdpbmFsSnNvbiIsImRvY3VtZW50T3JpZ2luYWwiLCJ0b0RvY3VtZW50IiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJTY3J1dGluc1Jhd0NvbnZlcnQiLCJ0b1NjcnV0aW5zIiwic2NydXRpbiIsIndyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbiIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJzY3J1dGluT3JpZ2luYWwiLCJ0b1NjcnV0aW5XcmFwcGVyIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwidWlkVGV4dGVMZWdpc2xhdGlmIiwidGV4dGVMZWdpc2xhdGlmUmVmIiwidGV4dGVMZWdpc2xhdGlmRGlyIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJyZXVuaW9uc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInNjcnV0aW5zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwiYXJndiIsImNvbW1hbmRMaW5lQXJncyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIHBhdGhGcm9tRG9jdW1lbnRVaWQsXG4gIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgcGF0aEZyb21TY3J1dGluVWlkLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3NjcnV0aW5zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiQ1wiLFxuICAgIGhlbHA6IFwiY2xvbmUgcmVwb3NpdG9yaWVzIGZyb20gZ2l2ZW4gZ3JvdXAgKG9yIG9yZ2FuaXphdGlvbikgZ2l0IFVSTFwiLFxuICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJrXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgaGVscDogXCJjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJlb3JnYW5pemVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJsXCIsXG4gICAgaGVscDogXCJsZWdpc2xhdHVyZXMgb2YgY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBOdW1iZXIsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIlZcIixcbiAgICBoZWxwOiBcImRvbid0IHZhbGlkYXRlIHJhdyBkYXRhXCIsXG4gICAgbmFtZTogXCJuby12YWxpZGF0ZS1yYXdcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoYGdpdCBhZGQgLmAsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCInLCB7XG4gICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoY2hpbGRQcm9jZXNzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIChjaGlsZFByb2Nlc3MgYXMgQ2hpbGRQcm9jZXNzKS5zdGRlcnIgPT09IG51bGwgfHxcbiAgICAgICAgIS9ub3RoaW5nIHRvIGNvbW1pdC8udGVzdCgoY2hpbGRQcm9jZXNzIGFzIGFueSkuc3Rkb3V0KVxuICAgICAgKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgdGhyb3cgY2hpbGRQcm9jZXNzXG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVtb3RlIG9mIHJlbW90ZXMgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVzaCAke3JlbW90ZX0gbWFzdGVyYCwge1xuICAgICAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgLy8gRG9uJ3Qgc3RvcCB3aGVuIHB1c2ggZmFpbHMuXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKGNoaWxkUHJvY2VzcyBhcyBhbnkpLm91dHB1dClcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiByZW9yZ2FuaXplRGF0YShvcHRpb25zOiBhbnkpOiBib29sZWFuIHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBwYXRjaGVkRGF0ZVRvSnNvblxuXG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZVxuICAgID8gb3B0aW9ucy5jbG9uZS50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICAgIDogdW5kZWZpbmVkXG4gIGNvbnN0IHZhbGlkYXRlUmF3RGF0YSA9ICFvcHRpb25zW1wibm8tdmFsaWRhdGUtcmF3XCJdXG5cbiAgb3B0aW9ucy5jYXRlZ29yaWVzLm1hcCgoZGF0YXNldE5hbWU6IHN0cmluZykgPT5cbiAgICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYFVua25vd24gbmFtZSBvZiBkYXRhc2V0OiAke2RhdGFzZXROYW1lfWAsXG4gICAgKSxcbiAgKVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBvcHRpb25zLmNhdGVnb3JpZXMucmVkdWNlKFxuICAgIChlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cywgZGF0YXNldE5hbWU6IHN0cmluZyk6IEVuYWJsZWREYXRhc2V0cyA9PlxuICAgICAgZW5hYmxlZERhdGFzZXRzIHxcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgRW5hYmxlZERhdGFzZXRzLk5vbmUsXG4gIClcblxuICBsZXQgY2hvb3NlbkRhdGFzZXRzID0gZGF0YXNldHNcbiAgaWYob3B0aW9ucy5sZWdpc2xhdHVyZSkge1xuICAgIGNvbnN0IGVuYWJsZWRMZWdpc2xhdHVyZXMgPSBvcHRpb25zLmxlZ2lzbGF0dXJlLm1hcCgobGVnaXNsYXR1cmU6IG51bWJlcikgPT4gbGVnaXNsYXR1cmUudG9TdHJpbmcoKSlcbiAgICBmb3IgKGxldCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoY2hvb3NlbkRhdGFzZXRzKSkge1xuICAgICAgY2hvb3NlbkRhdGFzZXRzW2tleSBhcyBrZXlvZiB0eXBlb2YgY2hvb3NlbkRhdGFzZXRzXSA9IHZhbHVlLmZpbHRlcigoZGF0YXNldDogeyBsZWdpc2xhdHVyZTogYW55IH0pID0+IGVuYWJsZWRMZWdpc2xhdHVyZXMuaW5jbHVkZXMoZGF0YXNldC5sZWdpc2xhdHVyZSkpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBhY3RldXJzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImFjdGV1cnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhhY3RldXJzUmVvcmdhbml6ZWREaXIpXG4gICAgICBjb25zdCBvcmdhbmVzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcIm9yZ2FuZXNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhvcmdhbmVzUmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQuYWN0ZXVycy5hY3RldXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0Lm9yZ2FuZXMub3JnYW5lKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBkZXBvcnRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcImRlcG9ydFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJkZXBvcnRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBkZXBvcnRTcGxpdFBhdGhbZGVwb3J0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFkZXBvcnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLmRlcG9ydFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJkZXBvcnRcIiBmaWxlOiAke2RlcG9ydE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvRGVwb3J0KGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0ID0gZGVwb3J0T3JpZ2luYWwuZGVwb3J0XG4gICAgICAgICAgICAgICAgbGV0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAoZGVwb3J0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5wdXNoKGRlcG9ydClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0cyBvZiBPYmplY3QudmFsdWVzKGRlcG9ydHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBkZXBvcnRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYW5kYXRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJtYW5kYXRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBtYW5kYXRTcGxpdFBhdGhbbWFuZGF0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFtYW5kYXRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLm1hbmRhdFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJtYW5kYXRcIiBmaWxlOiAke21hbmRhdE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvTWFuZGF0V3JhcHBlcihtYW5kYXRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UobWFuZGF0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdCA9IG1hbmRhdE9yaWdpbmFsLm1hbmRhdFxuICAgICAgICAgICAgICAgIGxldCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdXG4gICAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXSA9IFtdXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hbmRhdHMucHVzaChtYW5kYXQpXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBmb3IgKGNvbnN0IG1hbmRhdHMgb2YgT2JqZWN0LnZhbHVlcyhtYW5kYXRzQnlBY3RldXJVaWQpKSB7XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5zb3J0KChhLCBiKSA9PlxuICAgICAgICAgICAgICAgICAgYS51aWQubGVuZ3RoID09PSBiLnVpZC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgPyBhLnVpZC5sb2NhbGVDb21wYXJlKGIudWlkKVxuICAgICAgICAgICAgICAgICAgICA6IGEudWlkLmxlbmd0aCAtIGIudWlkLmxlbmd0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiYWN0ZXVyXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFjdGV1clwiIGZpbGU6ICR7YWN0ZXVyT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXIgPSBhY3RldXJPcmlnaW5hbC5hY3RldXJcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyVWlkID0gYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdXG4gICAgICAgICAgICAgIGNvbnN0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAoZGVwb3J0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5kZXBvcnRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLmRlcG9ydHMgPSB7IGRlcG9ydDogZGVwb3J0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChtYW5kYXRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLm1hbmRhdHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIubWFuZGF0cyA9IHsgbWFuZGF0OiBtYW5kYXRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXJVaWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcIm9yZ2FuZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJvcmdhbmVcIiBmaWxlOiAke29yZ2FuZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b09yZ2FuZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lID0gb3JnYW5lT3JpZ2luYWwub3JnYW5lXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMuY29tbWl0LCBvcHRpb25zLnJlbW90ZSlcbiAgICAgICkge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9BZ2VuZGFzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIG9yaWdpbmFsRGF0YS5yZXVuaW9ucy5yZXVuaW9uKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmV1bmlvblJlb3JnYW5pemVkSnNvbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wicmV1bmlvblwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInJldW5pb25cIiBmaWxlOiAke3JldW5pb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb24gPSByZXVuaW9uT3JpZ2luYWwucmV1bmlvblxuICAgICAgICAgICAgICB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCByZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2goZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2goZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG4gICAgICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvY3VtZW50c1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvY3VtZW50c0RpcilcbiAgICAgIGNvbnN0IGRvc3NpZXJzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb3NzaWVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvc3NpZXJzRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIG9yaWdpbmFsRGF0YS5leHBvcnQudGV4dGVzTGVnaXNsYXRpZnNcbiAgICAgICAgICAgICAgLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlIH0gb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydFxuICAgICAgICAgICAgICAuZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyKSB7XG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9jdW1lbnRcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb2N1bWVudFwiIGZpbGU6ICR7ZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRPcmlnaW5hbC5kb2N1bWVudFxuICAgICAgICAgICAgICB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9zc2llclBhcmxlbWVudGFpcmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoW1xuICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgubGVuZ3RoIC0gMVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgaWYgKCFkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCIgZmlsZTogJHtkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKFxuICAgICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsLmRvc3NpZXJQYXJsZW1lbnRhaXJlXG4gICAgICAgICAgICAgIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGxldCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBTY3J1dGluc1Jhd0NvbnZlcnQudG9TY3J1dGlucyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpbiBvZiBvcmlnaW5hbERhdGEuc2NydXRpbnMuc2NydXRpbikge1xuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJzY3J1dGluXCIgZmlsZTogJHtzY3J1dGluT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5XcmFwcGVyKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW4gPSBzY3J1dGluT3JpZ2luYWwuc2NydXRpblxuICAgICAgICAgICAgICB3cml0ZVNjcnV0aW5SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBzY3J1dGluKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2goZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRhdGFzZXRSZW9yZ2FuaXplZERpcjogc3RyaW5nLFxuICBhbWVuZGVtZW50OiB7XG4gICAgdWlkOiBzdHJpbmdcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZSZWY6IHN0cmluZ1xuICB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiA9IGFtZW5kZW1lbnQudGV4dGVMZWdpc2xhdGlmUmVmXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbCh1aWRUZXh0ZUxlZ2lzbGF0aWYsIHVuZGVmaW5lZClcbiAgY29uc3QgdGV4dGVMZWdpc2xhdGlmRGlyID0gcGF0aC5qb2luKFxuICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICB1aWRUZXh0ZUxlZ2lzbGF0aWYsXG4gIClcbiAgZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZUxlZ2lzbGF0aWZEaXIpXG4gIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgIHRleHRlTGVnaXNsYXRpZkRpcixcbiAgICBhbWVuZGVtZW50LnVpZCArIFwiLmpzb25cIixcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpLFxuICAgIHtcbiAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICB9LFxuICApXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG9jdW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRvY3VtZW50c0Rpcjogc3RyaW5nLFxuICBkb2N1bWVudDogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21Eb2N1bWVudFVpZChkb2N1bWVudHNEaXIsIGRvY3VtZW50LnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KGRvY3VtZW50LCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVEb3NzaWVyUGFybGVtZW50YWlyZVJlb3JnYW5pemVkSnNvbihcbiAgZG9zc2llcnNEaXI6IHN0cmluZyxcbiAgZG9zc2llclBhcmxlbWVudGFpcmU6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQoXG4gICAgZG9zc2llcnNEaXIsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmUudWlkLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgYCR7YmFzZW5hbWV9Lmpzb25gLFxuICAgIEpTT04uc3RyaW5naWZ5KGRvc3NpZXJQYXJsZW1lbnRhaXJlLCBudWxsLCAyKSxcbiAgICB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSxcbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oXG4gIHJldW5pb25zRGlyOiBzdHJpbmcsXG4gIHJldW5pb246IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tUmV1bmlvblVpZChyZXVuaW9uc0RpciwgcmV1bmlvbi51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKFxuICBzY3J1dGluc0Rpcjogc3RyaW5nLFxuICBzY3J1dGluOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVNjcnV0aW5VaWQoc2NydXRpbnNEaXIsIHNjcnV0aW4udWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkoc2NydXRpbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJlb3JnYW5pemVfZGF0YS50c1wiKSkge1xuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuICBpZiAocmVvcmdhbml6ZURhdGEob3B0aW9ucykpIHtcbiAgICBwcm9jZXNzLmV4aXQoMSlcbiAgfSBlbHNlIHtcbiAgICBwcm9jZXNzLmV4aXQoMClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBTUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFxRTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFckUsSUFBTUEsa0JBQWtCLEdBQUcsQ0FDekI7RUFDRUMsS0FBSyxFQUFFLEdBQUc7RUFDVkMsSUFBSSxFQUFFLCtEQUErRDtFQUNyRUMsSUFBSSxFQUFFLE9BQU87RUFDYkMsSUFBSSxFQUFFQztBQUNSLENBQUMsRUFDRDtFQUNFSixLQUFLLEVBQUUsR0FBRztFQUNWQyxJQUFJLEVBQUUsb0JBQW9CO0VBQzFCQyxJQUFJLEVBQUUsUUFBUTtFQUNkQyxJQUFJLEVBQUVFO0FBQ1IsQ0FBQyxFQUNEO0VBQ0VMLEtBQUssRUFBRSxHQUFHO0VBQ1ZN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
|
|
911
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJtdWx0aXBsZSIsIk51bWJlciIsImRlZmF1bHRPcHRpb24iLCJjb21taXRBbmRQdXNoIiwicmVwb3NpdG9yeURpciIsImNvbW1pdCIsInJlbW90ZXMiLCJlcnJvciIsImV4ZWNTeW5jIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJjaGlsZFByb2Nlc3MiLCJzdGRlcnIiLCJ0ZXN0Iiwic3Rkb3V0IiwiY29uc29sZSIsIm91dHB1dCIsInJlbW90ZSIsInJlb3JnYW5pemVEYXRhIiwib3B0aW9ucyIsImRhdGFEaXIiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJnaXRHcm91cFVybCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJ1bmRlZmluZWQiLCJ2YWxpZGF0ZVJhd0RhdGEiLCJjYXRlZ29yaWVzIiwibWFwIiwiZGF0YXNldE5hbWUiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsIkVuYWJsZWREYXRhc2V0cyIsImVuYWJsZWREYXRhc2V0cyIsInJlZHVjZSIsIk5vbmUiLCJjaG9vc2VuRGF0YXNldHMiLCJkYXRhc2V0cyIsImxlZ2lzbGF0dXJlIiwiZW5hYmxlZExlZ2lzbGF0dXJlcyIsInRvU3RyaW5nIiwiT2JqZWN0IiwiZW50cmllcyIsImtleSIsInZhbHVlIiwiZmlsdGVyIiwiZGF0YXNldCIsImluY2x1ZGVzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImFjdGV1cnNFdE9yZ2FuZXMiLCJvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoIiwicGF0aCIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImJhc2VuYW1lIiwiZGF0YXNldFJlb3JnYW5pemVkRGlyIiwiZnMiLCJlbnN1cmVEaXJTeW5jIiwicmVhZGRpclN5bmMiLCJyZW1vdmVTeW5jIiwiYWN0ZXVyc1Jlb3JnYW5pemVkRGlyIiwibWtkaXJTeW5jIiwib3JnYW5lc1Jlb3JnYW5pemVkRGlyIiwic3RydWN0dXJlIiwiRGF0YXNldFN0cnVjdHVyZSIsIlNpbmdsZUZpbGUiLCJvcmlnaW5hbEpzb24iLCJyZWFkRmlsZVN5bmMiLCJvcmlnaW5hbERhdGEiLCJBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCIsInRvQWN0ZXVyc0V0T3JnYW5lcyIsIkpTT04iLCJwYXJzZSIsImFjdGV1cnMiLCJhY3RldXIiLCJyZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsInVpZCIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJvcmdhbmVzIiwib3JnYW5lIiwiU2VnbWVudGVkRmlsZXMiLCJkZXBvcnRzQnlBY3RldXJVaWQiLCJleGlzdHNTeW5jIiwid2Fsa0RpciIsImRlcG9ydFNwbGl0UGF0aCIsImRlcG9ydEZpbGVuYW1lIiwibGVuZ3RoIiwiZW5kc1dpdGgiLCJkZXBvcnRPcmlnaW5hbEZpbGVQYXRoIiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwicHVzaCIsInZhbHVlcyIsInNvcnQiLCJhIiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJtYW5kYXRTcGxpdFBhdGgiLCJtYW5kYXRGaWxlbmFtZSIsIm1hbmRhdE9yaWdpbmFsRmlsZVBhdGgiLCJtYW5kYXRPcmlnaW5hbEpzb24iLCJtYW5kYXRPcmlnaW5hbCIsInRvTWFuZGF0V3JhcHBlciIsIm1hbmRhdCIsIm1hbmRhdHMiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImFjdGV1ck9yaWdpbmFsRmlsZVBhdGgiLCJhY3RldXJPcmlnaW5hbEpzb24iLCJhY3RldXJPcmlnaW5hbCIsInRvQWN0ZXVyIiwiYWN0ZXVyVWlkIiwic3RyaWN0RXF1YWwiLCJhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lT3JpZ2luYWxGaWxlUGF0aCIsIm9yZ2FuZU9yaWdpbmFsSnNvbiIsIm9yZ2FuZU9yaWdpbmFsIiwidG9PcmdhbmUiLCJvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwiQWdlbmRhc1Jhd0NvbnZlcnQiLCJ0b0FnZW5kYXMiLCJyZXVuaW9ucyIsInJldW5pb24iLCJ3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24iLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJhbWVuZGVtZW50cyIsIkFtZW5kZW1lbnRzUmF3Q29udmVydCIsInRvQW1lbmRlbWVudHMiLCJ0ZXh0ZXNFdEFtZW5kZW1lbnRzIiwidGV4dGVsZWciLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwiRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsImRvY3VtZW50Iiwid3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbiIsImRvc3NpZXIiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsIndyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24iLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgiLCJkb2N1bWVudE9yaWdpbmFsSnNvbiIsImRvY3VtZW50T3JpZ2luYWwiLCJ0b0RvY3VtZW50IiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIlNjcnV0aW5zIiwic2NydXRpbnMiLCJTY3J1dGluc1Jhd0NvbnZlcnQiLCJ0b1NjcnV0aW5zIiwic2NydXRpbiIsIndyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbiIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJzY3J1dGluT3JpZ2luYWwiLCJ0b1NjcnV0aW5XcmFwcGVyIiwiZXhpc3RpbmdEYXRlVG9Kc29uIiwidWlkVGV4dGVMZWdpc2xhdGlmIiwidGV4dGVMZWdpc2xhdGlmUmVmIiwidGV4dGVMZWdpc2xhdGlmRGlyIiwicGF0aEZyb21Eb2N1bWVudFVpZCIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJyZXVuaW9uc0RpciIsInBhdGhGcm9tUmV1bmlvblVpZCIsInNjcnV0aW5zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwiYXJndiIsImNvbW1hbmRMaW5lQXJncyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IENoaWxkUHJvY2VzcywgZXhlY1N5bmMgfSBmcm9tIFwiY2hpbGRfcHJvY2Vzc1wiXG5pbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIHBhdGhGcm9tRG9jdW1lbnRVaWQsXG4gIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgcGF0aEZyb21TY3J1dGluVWlkLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3NjcnV0aW5zXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwiQ1wiLFxuICAgIGhlbHA6IFwiY2xvbmUgcmVwb3NpdG9yaWVzIGZyb20gZ2l2ZW4gZ3JvdXAgKG9yIG9yZ2FuaXphdGlvbikgZ2l0IFVSTFwiLFxuICAgIG5hbWU6IFwiY2xvbmVcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJjXCIsXG4gICAgaGVscDogXCJjb21taXQgc3BsaXQgZmlsZXNcIixcbiAgICBuYW1lOiBcImNvbW1pdFwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJrXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgaGVscDogXCJjYXRlZ29yaWVzIG9mIGRhdGFzZXRzIHRvIHJlb3JnYW5pemVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJsXCIsXG4gICAgaGVscDogXCJsZWdpc2xhdHVyZXMgb2YgY2F0ZWdvcmllcyBvZiBkYXRhc2V0cyB0byByZXRyaWV2ZVwiLFxuICAgIG11bHRpcGxlOiB0cnVlLFxuICAgIG5hbWU6IFwibGVnaXNsYXR1cmVcIixcbiAgICB0eXBlOiBOdW1iZXIsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJyXCIsXG4gICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICBuYW1lOiBcInJlbW90ZVwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIlZcIixcbiAgICBoZWxwOiBcImRvbid0IHZhbGlkYXRlIHJhdyBkYXRhXCIsXG4gICAgbmFtZTogXCJuby12YWxpZGF0ZS1yYXdcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cblxuZnVuY3Rpb24gY29tbWl0QW5kUHVzaChcbiAgcmVwb3NpdG9yeURpcjogc3RyaW5nLFxuICBjb21taXQ6IGJvb2xlYW4sXG4gIHJlbW90ZXM/OiBzdHJpbmdbXSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAoY29tbWl0KSB7XG4gICAgZXhlY1N5bmMoYGdpdCBhZGQgLmAsIHtcbiAgICAgIGN3ZDogcmVwb3NpdG9yeURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgICB0cnkge1xuICAgICAgZXhlY1N5bmMoJ2dpdCBjb21taXQgLW0gXCJOb3V2ZWxsZSBtb2lzc29uXCIgLS1xdWlldCcsIHtcbiAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgfSlcbiAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgIGlmIChcbiAgICAgICAgKGNoaWxkUHJvY2VzcyBhcyBDaGlsZFByb2Nlc3MpLnN0ZGVyciA9PT0gbnVsbCB8fFxuICAgICAgICAhL25vdGhpbmcgdG8gY29tbWl0Ly50ZXN0KChjaGlsZFByb2Nlc3MgYXMgYW55KS5zdGRvdXQpXG4gICAgICApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICB0aHJvdyBjaGlsZFByb2Nlc3NcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCByZW1vdGUgb2YgcmVtb3RlcyB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBwdXNoICR7cmVtb3RlfSBtYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiByZXBvc2l0b3J5RGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICAvLyBEb24ndCBzdG9wIHdoZW4gcHVzaCBmYWlscy5cbiAgICAgICAgY29uc29sZS5lcnJvcigoY2hpbGRQcm9jZXNzIGFzIGFueSkub3V0cHV0KVxuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IGJvb2xlYW4ge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG5cbiAgbGV0IGVycm9yID0gZmFsc2VcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcbiAgY29uc3QgdmFsaWRhdGVSYXdEYXRhID0gIW9wdGlvbnNbXCJuby12YWxpZGF0ZS1yYXdcIl1cblxuICBvcHRpb25zLmNhdGVnb3JpZXMubWFwKChkYXRhc2V0TmFtZTogc3RyaW5nKSA9PlxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBgVW5rbm93biBuYW1lIG9mIGRhdGFzZXQ6ICR7ZGF0YXNldE5hbWV9YCxcbiAgICApLFxuICApXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IG9wdGlvbnMuY2F0ZWdvcmllcy5yZWR1Y2UoXG4gICAgKGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLCBkYXRhc2V0TmFtZTogc3RyaW5nKTogRW5hYmxlZERhdGFzZXRzID0+XG4gICAgICBlbmFibGVkRGF0YXNldHMgfFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICBFbmFibGVkRGF0YXNldHMuTm9uZSxcbiAgKVxuXG4gIGxldCBjaG9vc2VuRGF0YXNldHMgPSBkYXRhc2V0c1xuICBpZiAob3B0aW9ucy5sZWdpc2xhdHVyZSkge1xuICAgIGNvbnN0IGVuYWJsZWRMZWdpc2xhdHVyZXMgPSBvcHRpb25zLmxlZ2lzbGF0dXJlLm1hcCgobGVnaXNsYXR1cmU6IG51bWJlcikgPT5cbiAgICAgIGxlZ2lzbGF0dXJlLnRvU3RyaW5nKCksXG4gICAgKVxuICAgIGZvciAobGV0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhjaG9vc2VuRGF0YXNldHMpKSB7XG4gICAgICBjaG9vc2VuRGF0YXNldHNba2V5IGFzIGtleW9mIHR5cGVvZiBjaG9vc2VuRGF0YXNldHNdID0gdmFsdWUuZmlsdGVyKFxuICAgICAgICAoZGF0YXNldDogeyBsZWdpc2xhdHVyZTogYW55IH0pID0+XG4gICAgICAgICAgZW5hYmxlZExlZ2lzbGF0dXJlcy5pbmNsdWRlcyhkYXRhc2V0LmxlZ2lzbGF0dXJlKSxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFjdGV1cnNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiYWN0ZXVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGFjdGV1cnNSZW9yZ2FuaXplZERpcilcbiAgICAgIGNvbnN0IG9yZ2FuZXNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwib3JnYW5lc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKG9yZ2FuZXNSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXIgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5hY3RldXJzLmFjdGV1cikge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXIudWlkW1wiI3RleHRcIl0gKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQub3JnYW5lcy5vcmdhbmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGRlcG9ydHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiZGVwb3J0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcImRlcG9ydFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIGRlcG9ydFNwbGl0UGF0aFtkZXBvcnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIWRlcG9ydEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4uZGVwb3J0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcImRlcG9ydFwiIGZpbGU6ICR7ZGVwb3J0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIGRlcG9ydE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9EZXBvcnQoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnQgPSBkZXBvcnRPcmlnaW5hbC5kZXBvcnRcbiAgICAgICAgICAgICAgICBsZXQgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChkZXBvcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZXBvcnRzLnB1c2goZGVwb3J0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRzIG9mIE9iamVjdC52YWx1ZXMoZGVwb3J0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIGRlcG9ydHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hbmRhdHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwibWFuZGF0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcIm1hbmRhdFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIG1hbmRhdFNwbGl0UGF0aFttYW5kYXRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIW1hbmRhdEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4ubWFuZGF0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcIm1hbmRhdFwiIGZpbGU6ICR7bWFuZGF0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9NYW5kYXRXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG1hbmRhdE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXQgPSBtYW5kYXRPcmlnaW5hbC5tYW5kYXRcbiAgICAgICAgICAgICAgICBsZXQgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChtYW5kYXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYW5kYXRzLnB1c2gobWFuZGF0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRzIG9mIE9iamVjdC52YWx1ZXMobWFuZGF0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIG1hbmRhdHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImFjdGV1clwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmFjdGV1clNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJhY3RldXJcIiBmaWxlOiAke2FjdGV1ck9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cihhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyID0gYWN0ZXVyT3JpZ2luYWwuYWN0ZXVyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clVpZCA9IGFjdGV1ci51aWRbXCIjdGV4dFwiXVxuICAgICAgICAgICAgICBjb25zdCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIuZGVwb3J0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5kZXBvcnRzID0geyBkZXBvcnQ6IGRlcG9ydHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAobWFuZGF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5tYW5kYXRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLm1hbmRhdHMgPSB7IG1hbmRhdDogbWFuZGF0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyVWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJvcmdhbmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5vcmdhbmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwib3JnYW5lXCIgZmlsZTogJHtvcmdhbmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9PcmdhbmUob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IG9yZ2FuZU9yaWdpbmFsLm9yZ2FuZVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2goZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zLmNvbW1pdCwgb3B0aW9ucy5yZW1vdGUpXG4gICAgICApIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob29zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvQWdlbmRhcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBvcmlnaW5hbERhdGEucmV1bmlvbnMucmV1bmlvbikge1xuICAgICAgICAgICAgICB3cml0ZVJldW5pb25SZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCByZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcInJldW5pb25cIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJyZXVuaW9uXCIgZmlsZTogJHtyZXVuaW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShyZXVuaW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uID0gcmV1bmlvbk9yaWdpbmFsLnJldW5pb25cbiAgICAgICAgICAgICAgd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgcmV1bmlvbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvb3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcikpIHtcbiAgICAgICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBmaWxlbmFtZSkpXG4gICAgICB9XG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFtZW5kZW1lbnRzUmF3Q29udmVydC50b0FtZW5kZW1lbnRzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2Ygb3JpZ2luYWxEYXRhLnRleHRlc0V0QW1lbmRlbWVudHNcbiAgICAgICAgICAgICAgLnRleHRlbGVnKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgICBhbWVuZGVtZW50LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJhbWVuZGVtZW50XCIgZmlsZTogJHthbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFtZW5kZW1lbnRzUmF3Q29udmVydC50b0FtZW5kZW1lbnRXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShhbWVuZGVtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gYW1lbmRlbWVudE9yaWdpbmFsLmFtZW5kZW1lbnRcbiAgICAgICAgICAgICAgd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgYW1lbmRlbWVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX0uZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGZzLmVuc3VyZURpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0UmVvcmdhbml6ZWREaXIpKSB7XG4gICAgICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGZzLnJlbW92ZVN5bmMocGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgZmlsZW5hbWUpKVxuICAgICAgfVxuICAgICAgY29uc3QgZG9jdW1lbnRzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb2N1bWVudHNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhkb2N1bWVudHNEaXIpXG4gICAgICBjb25zdCBkb3NzaWVyc0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9zc2llcnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhkb3NzaWVyc0RpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb3NzaWVyc0xlZ2lzbGF0aWZzKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBvcmlnaW5hbERhdGEuZXhwb3J0LnRleHRlc0xlZ2lzbGF0aWZzXG4gICAgICAgICAgICAgIC5kb2N1bWVudCkge1xuICAgICAgICAgICAgICB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBkb3NzaWVyUGFybGVtZW50YWlyZSB9IG9mIG9yaWdpbmFsRGF0YS5leHBvcnRcbiAgICAgICAgICAgICAgLmRvc3NpZXJzTGVnaXNsYXRpZnMuZG9zc2llcikge1xuICAgICAgICAgICAgICB3cml0ZURvc3NpZXJQYXJsZW1lbnRhaXJlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJzRGlyLFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImRvY3VtZW50XCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiZG9jdW1lbnRcIiBmaWxlOiAke2RvY3VtZW50T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRvY3VtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRvY3VtZW50T3JpZ2luYWwuZG9jdW1lbnRcbiAgICAgICAgICAgICAgd3JpdGVEb2N1bWVudFJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50KVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiIGZpbGU6ICR7ZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShcbiAgICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbC5kb3NzaWVyUGFybGVtZW50YWlyZVxuICAgICAgICAgICAgICB3cml0ZURvc3NpZXJQYXJsZW1lbnRhaXJlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJzRGlyLFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMuY29tbWl0LCBvcHRpb25zLnJlbW90ZSlcbiAgICAgICkge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChsZXQgZGF0YXNldCBvZiBjaG9vc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRSZW9yZ2FuaXplZERpcilcbiAgICAgIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldFJlb3JnYW5pemVkRGlyKSkge1xuICAgICAgICBpZiAoZmlsZW5hbWVbMF0gPT09IFwiLlwiKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIGZpbGVuYW1lKSlcbiAgICAgIH1cblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbnMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygb3JpZ2luYWxEYXRhLnNjcnV0aW5zLnNjcnV0aW4pIHtcbiAgICAgICAgICAgICAgd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgc2NydXRpbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwic2NydXRpblwiIGZpbGU6ICR7c2NydXRpbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBTY3J1dGluc1Jhd0NvbnZlcnQudG9TY3J1dGluV3JhcHBlcihzY3J1dGluT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShzY3J1dGluT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluID0gc2NydXRpbk9yaWdpbmFsLnNjcnV0aW5cbiAgICAgICAgICAgICAgd3JpdGVTY3J1dGluUmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgc2NydXRpbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucy5jb21taXQsIG9wdGlvbnMucmVtb3RlKVxuICAgICAgKSB7XG4gICAgICAgIGVycm9yID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3RvcmUgc3RhbmRhcmQgY29udmVyc2lvbiBvZiBkYXRlcyB0byBKU09OLlxuICBEYXRlLnByb3RvdHlwZS50b0pTT04gPSBleGlzdGluZ0RhdGVUb0pzb25cblxuICByZXR1cm4gZXJyb3Jcbn1cblxuZnVuY3Rpb24gd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkYXRhc2V0UmVvcmdhbml6ZWREaXI6IHN0cmluZyxcbiAgYW1lbmRlbWVudDoge1xuICAgIHVpZDogc3RyaW5nXG4gICAgdGV4dGVMZWdpc2xhdGlmUmVmOiBzdHJpbmdcbiAgfSxcbik6IHZvaWQge1xuICBjb25zdCB1aWRUZXh0ZUxlZ2lzbGF0aWYgPSBhbWVuZGVtZW50LnRleHRlTGVnaXNsYXRpZlJlZlxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwodWlkVGV4dGVMZWdpc2xhdGlmLCB1bmRlZmluZWQpXG4gIGNvbnN0IHRleHRlTGVnaXNsYXRpZkRpciA9IHBhdGguam9pbihcbiAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgdWlkVGV4dGVMZWdpc2xhdGlmLFxuICApXG4gIGZzLmVuc3VyZURpclN5bmModGV4dGVMZWdpc2xhdGlmRGlyKVxuICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZEaXIsXG4gICAgYW1lbmRlbWVudC51aWQgKyBcIi5qc29uXCIsXG4gIClcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICBKU09OLnN0cmluZ2lmeShhbWVuZGVtZW50LCBudWxsLCAyKSxcbiAgICB7XG4gICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgfSxcbiAgKVxufVxuXG5mdW5jdGlvbiB3cml0ZURvY3VtZW50UmVvcmdhbml6ZWRKc29uKFxuICBkb2N1bWVudHNEaXI6IHN0cmluZyxcbiAgZG9jdW1lbnQ6IHsgdWlkOiBzdHJpbmcgfSxcbik6IHZvaWQge1xuICBjb25zdCBiYXNlbmFtZSA9IHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyLCBkb2N1bWVudC51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShkb2N1bWVudCwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG9zc2llclBhcmxlbWVudGFpcmVSZW9yZ2FuaXplZEpzb24oXG4gIGRvc3NpZXJzRGlyOiBzdHJpbmcsXG4gIGRvc3NpZXJQYXJsZW1lbnRhaXJlOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkKFxuICAgIGRvc3NpZXJzRGlyLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLnVpZCxcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIGAke2Jhc2VuYW1lfS5qc29uYCxcbiAgICBKU09OLnN0cmluZ2lmeShkb3NzaWVyUGFybGVtZW50YWlyZSwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZXVuaW9uUmVvcmdhbml6ZWRKc29uKFxuICByZXVuaW9uc0Rpcjogc3RyaW5nLFxuICByZXVuaW9uOiB7IHVpZDogc3RyaW5nIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVJldW5pb25VaWQocmV1bmlvbnNEaXIsIHJldW5pb24udWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMiksIHtcbiAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gIH0pXG59XG5cbmZ1bmN0aW9uIHdyaXRlU2NydXRpblJlb3JnYW5pemVkSnNvbihcbiAgc2NydXRpbnNEaXI6IHN0cmluZyxcbiAgc2NydXRpbjogeyB1aWQ6IHN0cmluZyB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyLCBzY3J1dGluLnVpZClcbiAgZnMud3JpdGVGaWxlU3luYyhgJHtiYXNlbmFtZX0uanNvbmAsIEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZW9yZ2FuaXplX2RhdGEudHNcIikpIHtcbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbiAgaWYgKHJlb3JnYW5pemVEYXRhKG9wdGlvbnMpKSB7XG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH0gZWxzZSB7XG4gICAgcHJvY2Vzcy5leGl0KDApXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBcUU7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRXJFLElBQU1BLGtCQUFrQixHQUFHLENBQ3pCO0VBQ0VDLEtBQUssRUFBRSxHQUFHO0VBQ1ZDLElBQUksRUFBRSwrREFBK0Q7RUFDckVDLElBQUksRUFBRSxPQUFPO0VBQ2JDLElBQUksRUFBRUM7QUFDUixDQUFDLEVBQ0Q7RUFDRUosS0FBSyxFQUFFLEdBQUc7RUFD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
|