@tricoteuses/assemblee 1.1.5 → 1.1.6

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.
Files changed (119) hide show
  1. package/lib/api.js +1 -1
  2. package/lib/bugs/acteur-00010/plugin.test.js +1 -1
  3. package/lib/bugs/acteur-00010.js +1 -1
  4. package/lib/bugs/acteur-00010.mjs +1 -1
  5. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  6. package/lib/bugs/agenda-00002.js +2 -2
  7. package/lib/bugs/agenda-00002.mjs +2 -2
  8. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  9. package/lib/bugs/agenda-00008.js +1 -1
  10. package/lib/bugs/agenda-00008.mjs +1 -1
  11. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  12. package/lib/bugs/agenda-00011.js +1 -1
  13. package/lib/bugs/agenda-00011.mjs +1 -1
  14. package/lib/bugs.js +1 -1
  15. package/lib/bugs.mjs +1 -1
  16. package/lib/cleaners/actes_legislatifs.js +1 -1
  17. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  18. package/lib/cleaners/acteurs.js +1 -1
  19. package/lib/cleaners/acteurs.mjs +1 -1
  20. package/lib/cleaners/amendements.js +1 -1
  21. package/lib/cleaners/amendements.mjs +1 -1
  22. package/lib/cleaners/documents.js +1 -1
  23. package/lib/cleaners/documents.mjs +1 -1
  24. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  25. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  26. package/lib/cleaners/index.js +1 -1
  27. package/lib/cleaners/organes.js +1 -1
  28. package/lib/cleaners/organes.mjs +1 -1
  29. package/lib/cleaners/reunions.js +1 -1
  30. package/lib/cleaners/reunions.mjs +1 -1
  31. package/lib/cleaners/scrutins.js +1 -1
  32. package/lib/cleaners/scrutins.mjs +1 -1
  33. package/lib/cleaners/xml.js +1 -1
  34. package/lib/cleaners/xml.mjs +1 -1
  35. package/lib/datasets.js +1 -1
  36. package/lib/datasets.mjs +1 -1
  37. package/lib/dates.js +16 -7
  38. package/lib/dates.mjs +15 -6
  39. package/lib/dossiers_legislatifs.js +1 -1
  40. package/lib/dossiers_legislatifs.mjs +1 -1
  41. package/lib/file_systems.js +2 -2
  42. package/lib/file_systems.mjs +2 -2
  43. package/lib/git.d.ts +2 -1
  44. package/lib/git.js +77 -44
  45. package/lib/git.mjs +48 -25
  46. package/lib/index.js +1 -1
  47. package/lib/inserters.js +1 -1
  48. package/lib/inserters.mjs +1 -1
  49. package/lib/loaders.js +1 -1
  50. package/lib/loaders.mjs +1 -1
  51. package/lib/organes.js +1 -1
  52. package/lib/organes.mjs +1 -1
  53. package/lib/parsers/documents.js +1 -1
  54. package/lib/parsers/documents.mjs +1 -1
  55. package/lib/parsers/index.js +1 -1
  56. package/lib/parsers/recherche_amendements.js +39 -32
  57. package/lib/parsers/recherche_amendements.mjs +5 -1
  58. package/lib/raw_types/acteurs_et_organes.js +1 -1
  59. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  60. package/lib/raw_types/agendas.js +1 -1
  61. package/lib/raw_types/agendas.mjs +1 -1
  62. package/lib/raw_types/amendements.js +1 -1
  63. package/lib/raw_types/amendements.mjs +1 -1
  64. package/lib/raw_types/dossiers_legislatifs.js +1 -1
  65. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  66. package/lib/raw_types/scrutins.js +1 -1
  67. package/lib/raw_types/scrutins.mjs +1 -1
  68. package/lib/scripts/bugs_helper.js +3 -3
  69. package/lib/scripts/bugs_helper.mjs +3 -3
  70. package/lib/scripts/clean_data.js +1 -1
  71. package/lib/scripts/clean_data.mjs +1 -1
  72. package/lib/scripts/clean_reorganized_data.js +63 -61
  73. package/lib/scripts/clean_reorganized_data.mjs +55 -48
  74. package/lib/scripts/diff_amendements.js +1 -1
  75. package/lib/scripts/diff_amendements.mjs +1 -1
  76. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  77. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  78. package/lib/scripts/get_today_reunions.js +1 -1
  79. package/lib/scripts/merge_scrutins.js +1 -1
  80. package/lib/scripts/merge_scrutins.mjs +1 -1
  81. package/lib/scripts/parse_textes_lois.js +5 -48
  82. package/lib/scripts/parse_textes_lois.mjs +5 -49
  83. package/lib/scripts/raw_types_from_amendements.js +1 -1
  84. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  85. package/lib/scripts/reorganize_data.js +231 -239
  86. package/lib/scripts/reorganize_data.mjs +50 -59
  87. package/lib/scripts/retrieve_deputes_photos.js +86 -107
  88. package/lib/scripts/retrieve_deputes_photos.mjs +21 -42
  89. package/lib/scripts/retrieve_documents.js +3 -3
  90. package/lib/scripts/retrieve_documents.mjs +3 -3
  91. package/lib/scripts/retrieve_open_data.js +29 -22
  92. package/lib/scripts/retrieve_open_data.mjs +9 -4
  93. package/lib/scripts/retrieve_pending_amendments.js +73 -81
  94. package/lib/scripts/retrieve_pending_amendments.mjs +19 -26
  95. package/lib/scripts/retrieve_senateurs_photos.js +65 -87
  96. package/lib/scripts/retrieve_senateurs_photos.mjs +21 -42
  97. package/lib/scripts/retrieve_textes_lois.js +32 -71
  98. package/lib/scripts/retrieve_textes_lois.mjs +6 -44
  99. package/lib/scripts/test_load.js +1 -1
  100. package/lib/scripts/test_load_big_files.js +1 -1
  101. package/lib/scripts/validate_json.js +3 -3
  102. package/lib/scripts/validate_json.mjs +3 -3
  103. package/lib/shared_types/codes_actes.js +1 -1
  104. package/lib/strings.js +1 -1
  105. package/lib/strings.mjs +1 -1
  106. package/lib/types/acteurs_et_organes.js +1 -1
  107. package/lib/types/acteurs_et_organes.mjs +1 -1
  108. package/lib/types/agendas.js +1 -1
  109. package/lib/types/agendas.mjs +1 -1
  110. package/lib/types/amendements.js +1 -1
  111. package/lib/types/amendements.mjs +1 -1
  112. package/lib/types/dossiers_legislatifs.js +1 -1
  113. package/lib/types/dossiers_legislatifs.mjs +1 -1
  114. package/lib/types/legislatures.js +1 -1
  115. package/lib/types/scrutins.js +1 -1
  116. package/lib/types/scrutins.mjs +1 -1
  117. package/lib/urls.js +1 -1
  118. package/lib/urls.mjs +1 -1
  119. package/package.json +6 -5
package/lib/inserters.mjs CHANGED
@@ -329,4 +329,4 @@ export function insertScrutinReferences(scrutin, _data, visitedUids) {
329
329
 
330
330
  return scrutin;
331
331
  }
332
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsInJhcHBvcnRldXIiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvblJlZiIsInJldW5pb24iLCJpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyIsIm9kalJlZiIsIm9kaiIsInBvaW50c09kaiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwic2NydXRpbkJ5VWlkIiwidm90ZVJlZnMiLCJzY3J1dGlucyIsInZvdGVSZWYiLCJzY3J1dGluIiwicHVzaCIsImluc2VydFNjcnV0aW5SZWZlcmVuY2VzIiwidm90ZXMiLCJjaGlsZEFjdGUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwibWFuZGF0IiwibWFuZGF0cyIsIm9yZ2FuZXMiLCJvcmdhbmVzUmVmcyIsImluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzIiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiIsImF1dGV1clJhcHBvcnRldXJPcmdhbmUiLCJnb3V2ZXJuZW1lbnRSZWYiLCJnb3V2ZXJuZW1lbnQiLCJncm91cGVQb2xpdGlxdWVSZWYiLCJncm91cGVQb2xpdGlxdWUiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImNvc2lnbmF0YWlyZXMiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsImF1dGV1cnMiLCJhY3RldXJTdW1tYXJ5IiwiZG9zc2llckJ5VWlkIiwiZG9zc2llciIsImRvc3NpZXJSZWYiLCJpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyIsImNoaWxkRGl2aXNpb24iLCJkaXZpc2lvbnMiLCJpbml0aWF0ZXVyIiwiYWN0ZXVycyIsIm1hbmRhdFJlZiIsIm9yZ2FuZVBhcmVudFJlZiIsIm9yZ2FuZVBhcmVudCIsImRlbWFuZGV1cnMiLCJvcmdhbmVTdW1tYXJ5Iiwib3JnYW5lUmV1bmlSZWYiLCJvcmdhbmVSZXVuaSIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50SW50ZXJuZSIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX2RhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvaW5zZXJ0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdLCJtYXBwaW5ncyI6IkFBcUJBLFNBQVNBLDhCQUE4QixDQUNyQ0MsSUFBb0IsRUFDcEJDLElBQWdCLEVBQ2hCQyxXQUF3QixFQUN4QjtFQUNBLElBQUksQ0FBQ0EsV0FBVyxDQUFDQyxHQUFHLENBQUNILElBQUksQ0FBQ0ksR0FBRyxDQUFDLEVBQUU7SUFDOUJGLFdBQVcsQ0FBQ0csR0FBRyxDQUFDTCxJQUFJLENBQUNJLEdBQUcsQ0FBQztJQUV6QixJQUNFSCxJQUFJLENBQUNLLGFBQWEsS0FBS0MsU0FBUyxJQUNoQ1AsSUFBSSxDQUFDUSxnQ0FBZ0MsS0FBS0QsU0FBUyxFQUNuRDtNQUNBLE1BQU1FLFFBQVEsR0FBR1IsSUFBSSxDQUFDSyxhQUFhLENBQUNOLElBQUksQ0FBQ1EsZ0NBQWdDLENBQUM7TUFDMUUsSUFBSUMsUUFBUSxLQUFLRixTQUFTLEVBQUU7UUFDMUJQLElBQUksQ0FBQ1UsNkJBQTZCLEdBQUdELFFBQVE7UUFDN0NFLHdCQUF3QixDQUFDRixRQUFRLEVBQUVSLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ3ZEO0lBQ0Y7SUFDQSxJQUFJRCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUFJUCxJQUFJLENBQUNhLFNBQVMsS0FBS04sU0FBUyxFQUFFO01BQ2xFLE1BQU1PLE1BQU0sR0FBR2IsSUFBSSxDQUFDVyxXQUFXLENBQUNaLElBQUksQ0FBQ2EsU0FBUyxDQUFDO01BQy9DLElBQUlDLE1BQU0sS0FBS1AsU0FBUyxFQUFFO1FBQ3hCUCxJQUFJLENBQUNjLE1BQU0sR0FBR0EsTUFBTTtRQUNwQkMsc0JBQXNCLENBQUNELE1BQU0sRUFBRWIsSUFBSSxFQUFFQyxXQUFXLENBQUM7TUFDbkQ7SUFDRjtJQUNBLElBQUlELElBQUksQ0FBQ1csV0FBVyxLQUFLTCxTQUFTLElBQUlQ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
332
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMiLCJhY3RlIiwiZGF0YSIsInZpc2l0ZWRVaWRzIiwiaGFzIiwidWlkIiwiYWRkIiwiZG9jdW1lbnRCeVVpZCIsInVuZGVmaW5lZCIsImRlcG90SW5pdGlhbExlY3R1cmVEZWZpbml0aXZlUmVmIiwiZG9jdW1lbnQiLCJkZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZSIsImluc2VydERvY3VtZW50UmVmZXJlbmNlcyIsIm9yZ2FuZUJ5VWlkIiwib3JnYW5lUmVmIiwib3JnYW5lIiwiaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyIsInByb3ZlbmFuY2VSZWYiLCJwcm92ZW5hbmNlIiwiYWN0ZXVyQnlVaWQiLCJyYXBwb3J0ZXVycyIsInJhcHBvcnRldXIiLCJhY3RldXIiLCJhY3RldXJSZWYiLCJpbnNlcnRBY3RldXJSZWZlcmVuY2VzIiwicmV1bmlvbkJ5VWlkIiwicmV1bmlvblJlZiIsInJldW5pb24iLCJpbnNlcnRSZXVuaW9uUmVmZXJlbmNlcyIsIm9kalJlZiIsIm9kaiIsInBvaW50c09kaiIsInBvaW50T2RqIiwidGV4dGVBZG9wdGVSZWYiLCJ0ZXh0ZUFkb3B0ZSIsInRleHRlQXNzb2NpZVJlZiIsInRleHRlQXNzb2NpZSIsInRleHRlc0Fzc29jaWVzIiwic2NydXRpbkJ5VWlkIiwidm90ZVJlZnMiLCJzY3J1dGlucyIsInZvdGVSZWYiLCJzY3J1dGluIiwicHVzaCIsImluc2VydFNjcnV0aW5SZWZlcmVuY2VzIiwidm90ZXMiLCJjaGlsZEFjdGUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwibWFuZGF0IiwibWFuZGF0cyIsIm9yZ2FuZXMiLCJvcmdhbmVzUmVmcyIsImluc2VydEFtZW5kZW1lbnRSZWZlcmVuY2VzIiwiYW1lbmRlbWVudCIsInNpZ25hdGFpcmVzIiwiYXV0ZXVyIiwiYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZVJlZiIsImF1dGV1clJhcHBvcnRldXJPcmdhbmUiLCJnb3V2ZXJuZW1lbnRSZWYiLCJnb3V2ZXJuZW1lbnQiLCJncm91cGVQb2xpdGlxdWVSZWYiLCJncm91cGVQb2xpdGlxdWUiLCJjb3NpZ25hdGFpcmVzUmVmcyIsImNvc2lnbmF0YWlyZXMiLCJjb3NpZ25hdGFpcmVSZWYiLCJjb3NpZ25hdGFpcmUiLCJpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMiLCJkaXZpc2lvbiIsImF1dGV1cnMiLCJhY3RldXJTdW1tYXJ5IiwiZG9zc2llckJ5VWlkIiwiZG9zc2llciIsImRvc3NpZXJSZWYiLCJpbnNlcnREb3NzaWVyUmVmZXJlbmNlcyIsImNoaWxkRGl2aXNpb24iLCJkaXZpc2lvbnMiLCJpbml0aWF0ZXVyIiwiYWN0ZXVycyIsIm1hbmRhdFJlZiIsIm9yZ2FuZVBhcmVudFJlZiIsIm9yZ2FuZVBhcmVudCIsImRlbWFuZGV1cnMiLCJvcmdhbmVTdW1tYXJ5Iiwib3JnYW5lUmV1bmlSZWYiLCJvcmdhbmVSZXVuaSIsInBhcnRpY2lwYW50cyIsInBhcnRpY2lwYW50SW50ZXJuZSIsInBhcnRpY2lwYW50c0ludGVybmVzIiwiX2RhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvaW5zZXJ0ZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGV1ciwgT3JnYW5lIH0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQgfSBmcm9tIFwiLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBBY3RlTGVnaXNsYXRpZixcbiAgRGl2aXNpb24sXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZD86IHsgW3VpZDogc3RyaW5nXTogQW1lbmRlbWVudCB9XG4gIHJlYWRvbmx5IGRvY3VtZW50QnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llckJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZSB9XG4gIHJlYWRvbmx5IG9yZ2FuZUJ5VWlkPzogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSByZXVuaW9uQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ/OiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5mdW5jdGlvbiBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoXG4gIGFjdGU6IEFjdGVMZWdpc2xhdGlmLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoYWN0ZS51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGFjdGUudWlkKVxuXG4gICAgaWYgKFxuICAgICAgZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY29uc3QgZG9jdW1lbnQgPSBkYXRhLmRvY3VtZW50QnlVaWRbYWN0ZS5kZXBvdEluaXRpYWxMZWN0dXJlRGVmaW5pdGl2ZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUuZGVwb3RJbml0aWFsTGVjdHVyZURlZmluaXRpdmUgPSBkb2N1bWVudFxuICAgICAgICBpbnNlcnREb2N1bWVudFJlZmVyZW5jZXMoZG9jdW1lbnQsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUub3JnYW5lUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYWN0ZS5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucHJvdmVuYW5jZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2FjdGUucHJvdmVuYW5jZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhY3RlLnByb3ZlbmFuY2UgPSBvcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUucmFwcG9ydGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCByYXBwb3J0ZXVyIG9mIGFjdGUucmFwcG9ydGV1cnMpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFtyYXBwb3J0ZXVyLmFjdGV1clJlZl1cbiAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmFwcG9ydGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEucmV1bmlvbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS5yZXVuaW9uUmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IHJldW5pb24gPSBkYXRhLnJldW5pb25CeVVpZFthY3RlLnJldW5pb25SZWZdXG4gICAgICBpZiAocmV1bmlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUucmV1bmlvbiA9IHJldW5pb25cbiAgICAgICAgaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMocmV1bmlvbiwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIGlmIChhY3RlLm9kalJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQgJiYgb2RqLnBvaW50c09kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGopIHtcbiAgICAgICAgICAgICAgaWYgKHBvaW50T2RqLnVpZCA9PT0gYWN0ZS5vZGpSZWYpIHtcbiAgICAgICAgICAgICAgICBhY3RlLm9kaiA9IHBvaW50T2RqXG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGF0YS5kb2N1bWVudEJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS50ZXh0ZUFkb3B0ZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQWRvcHRlUmVmXVxuICAgICAgaWYgKGRvY3VtZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZS50ZXh0ZUFkb3B0ZSA9IGRvY3VtZW50XG4gICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhY3RlLnRleHRlQXNzb2NpZVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFthY3RlLnRleHRlQXNzb2NpZVJlZl1cbiAgICAgIGlmIChkb2N1bWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGFjdGUudGV4dGVBc3NvY2llID0gZG9jdW1lbnRcbiAgICAgICAgaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKGRvY3VtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuZG9jdW1lbnRCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGUudGV4dGVzQXNzb2NpZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCB0ZXh0ZUFzc29jaWUgb2YgYWN0ZS50ZXh0ZXNBc3NvY2llcykge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRhdGEuZG9jdW1lbnRCeVVpZFt0ZXh0ZUFzc29jaWUudGV4dGVBc3NvY2llUmVmXVxuICAgICAgICBpZiAoZG9jdW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRleHRlQXNzb2NpZS50ZXh0ZUFzc29jaWUgPSBkb2N1bWVudFxuICAgICAgICAgIGluc2VydERvY3VtZW50UmVmZXJlbmNlcyhkb2N1bWVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuc2NydXRpbkJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYWN0ZS52b3RlUmVmcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBzY3J1dGlucyA9IFtdXG4gICAgICBmb3IgKGNvbnN0IHZvdGVSZWYgb2YgYWN0ZS52b3RlUmVmcykge1xuICAgICAgICBjb25zdCBzY3J1dGluID0gZGF0YS5zY3J1dGluQnlVaWRbdm90ZVJlZl1cbiAgICAgICAgaWYgKHNjcnV0aW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5zLnB1c2goc2NydXRpbilcbiAgICAgICAgICBpbnNlcnRTY3J1dGluUmVmZXJlbmNlcyhzY3J1dGluLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYWN0ZS52b3RlcyA9IHNjcnV0aW5zXG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBjaGlsZEFjdGUgb2YgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzIHx8IFtdKSB7XG4gICAgICBpbnNlcnRBY3RlTGVnaXNsYXRpZlJlZmVyZW5jZXMoY2hpbGRBY3RlLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYWN0ZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhcbiAgYWN0ZXVyOiBBY3RldXIsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhY3RldXIudWlkKSkge1xuICAgIHZpc2l0ZWRVaWRzLmFkZChhY3RldXIudWlkKVxuXG4gICAgaWYgKGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgZm9yIChjb25zdCBtYW5kYXQgb2YgYWN0ZXVyLm1hbmRhdHMgfHwgW10pIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3Qgb3JnYW5lUmVmIG9mIG1hbmRhdC5vcmdhbmVzUmVmcykge1xuICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbb3JnYW5lUmVmXVxuICAgICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgb3JnYW5lcy5wdXNoKG9yZ2FuZSlcbiAgICAgICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbWFuZGF0Lm9yZ2FuZXMgPSBvcmdhbmVzXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFjdGV1clxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0QW1lbmRlbWVudFJlZmVyZW5jZXMoXG4gIGFtZW5kZW1lbnQ6IEFtZW5kZW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhhbWVuZGVtZW50LnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQoYW1lbmRlbWVudC51aWQpXG5cbiAgICBjb25zdCBzaWduYXRhaXJlcyA9IGFtZW5kZW1lbnQuc2lnbmF0YWlyZXNcbiAgICBjb25zdCBhdXRldXIgPSBzaWduYXRhaXJlcy5hdXRldXJcbiAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5hY3RldXJSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthdXRldXIuYWN0ZXVyUmVmXVxuICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGF1dGV1ci5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIGF1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGF1dGV1clJhcHBvcnRldXJPcmdhbmUgPVxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5hdXRldXJSYXBwb3J0ZXVyT3JnYW5lUmVmXVxuICAgICAgaWYgKGF1dGV1clJhcHBvcnRldXJPcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuYXV0ZXVyUmFwcG9ydGV1ck9yZ2FuZSA9IGF1dGV1clJhcHBvcnRldXJPcmdhbmVcbiAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhhdXRldXJSYXBwb3J0ZXVyT3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ291dmVybmVtZW50UmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IGdvdXZlcm5lbWVudCA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdvdXZlcm5lbWVudFJlZl1cbiAgICAgIGlmIChnb3V2ZXJuZW1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ291dmVybmVtZW50ID0gZ291dmVybmVtZW50XG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoZ291dmVybmVtZW50LCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlUmVmICE9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbYXV0ZXVyLmdyb3VwZVBvbGl0aXF1ZVJlZl1cbiAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBhdXRldXIuZ3JvdXBlUG9saXRpcXVlID0gb3JnYW5lXG4gICAgICAgIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMob3JnYW5lLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgY29zaWduYXRhaXJlc1JlZnMgPSBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzUmVmc1xuICAgICAgaWYgKGNvc2lnbmF0YWlyZXNSZWZzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY29uc3QgY29zaWduYXRhaXJlcyA9IFtdXG4gICAgICAgIGZvciAoY29uc3QgY29zaWduYXRhaXJlUmVmIG9mIHNpZ25hdGFpcmVzLmNvc2lnbmF0YWlyZXNSZWZzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgY29zaWduYXRhaXJlID0gZGF0YS5hY3RldXJCeVVpZFtjb3NpZ25hdGFpcmVSZWZdXG4gICAgICAgICAgaWYgKGNvc2lnbmF0YWlyZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb3NpZ25hdGFpcmVzLnB1c2goY29zaWduYXRhaXJlKVxuICAgICAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhjb3NpZ25hdGFpcmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBzaWduYXRhaXJlcy5jb3NpZ25hdGFpcmVzID0gY29zaWduYXRhaXJlc1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhbWVuZGVtZW50XG59XG5cbmZ1bmN0aW9uIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhcbiAgZGl2aXNpb246IERpdmlzaW9uLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgZm9yIChjb25zdCBhdXRldXIgb2YgZGl2aXNpb24uYXV0ZXVycykge1xuICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCAmJiBhY3RldXJTdW1tYXJ5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbYWN0ZXVyU3VtbWFyeS5hY3RldXJSZWZdXG4gICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgaW5zZXJ0QWN0ZXVyUmVmZXJlbmNlcyhhY3RldXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiYgYXV0ZXVyLm9yZ2FuZVJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgYXV0ZXVyLm9yZ2FuZSA9IG9yZ2FuZVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGRhdGEuZG9zc2llckJ5VWlkICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCBkb3NzaWVyID0gZGF0YS5kb3NzaWVyQnlVaWRbZGl2aXNpb24uZG9zc2llclJlZl1cbiAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBkaXZpc2lvbi5kb3NzaWVyID0gZG9zc2llclxuICAgICAgaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoZG9zc2llciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBjaGlsZERpdmlzaW9uIG9mIGRpdmlzaW9uLmRpdmlzaW9ucyB8fCBbXSkge1xuICAgIGluc2VydERpdmlzaW9uUmVmZXJlbmNlcyhjaGlsZERpdmlzaW9uLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgfVxuXG4gIHJldHVybiBkaXZpc2lvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9jdW1lbnRSZWZlcmVuY2VzKFxuICBkb2N1bWVudDogRG9jdW1lbnQsXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhkb2N1bWVudC51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvY3VtZW50LnVpZClcblxuICAgIGZvciAoY29uc3QgYXV0ZXVyIG9mIGRvY3VtZW50LmF1dGV1cnMpIHtcbiAgICAgIGNvbnN0IGFjdGV1clN1bW1hcnkgPSBhdXRldXIuYWN0ZXVyXG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJTdW1tYXJ5LmFjdGV1ciA9IGFjdGV1clxuICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkICYmIGF1dGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjb25zdCBvcmdhbmUgPSBkYXRhLm9yZ2FuZUJ5VWlkW2F1dGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGF1dGV1ci5vcmdhbmUgPSBvcmdhbmVcbiAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kb3NzaWVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGRhdGEuZG9zc2llckJ5VWlkW2RvY3VtZW50LmRvc3NpZXJSZWZdXG4gICAgICBpZiAoZG9zc2llciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRvY3VtZW50LmRvc3NpZXIgPSBkb3NzaWVyXG4gICAgICAgIGluc2VydERvc3NpZXJSZWZlcmVuY2VzKGRvc3NpZXIsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAoY29uc3QgZGl2aXNpb24gb2YgZG9jdW1lbnQuZGl2aXNpb25zIHx8IFtdKSB7XG4gICAgICBpbnNlcnREaXZpc2lvblJlZmVyZW5jZXMoZGl2aXNpb24sIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkb2N1bWVudFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0RG9zc2llclJlZmVyZW5jZXMoXG4gIGRvc3NpZXI6IERvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoZG9zc2llci51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKGRvc3NpZXIudWlkKVxuXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyA/PyBbXSkge1xuICAgICAgaW5zZXJ0QWN0ZUxlZ2lzbGF0aWZSZWZlcmVuY2VzKGFjdGUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgIH1cblxuICAgIGNvbnN0IGluaXRpYXRldXIgPSBkb3NzaWVyLmluaXRpYXRldXJcbiAgICBpZiAoaW5pdGlhdGV1ciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoZGF0YS5hY3RldXJCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3VtbWFyeSBvZiBpbml0aWF0ZXVyLmFjdGV1cnMgfHwgW10pIHtcbiAgICAgICAgICBjb25zdCBhY3RldXIgPSBkYXRhLmFjdGV1ckJ5VWlkW2FjdGV1clN1bW1hcnkuYWN0ZXVyUmVmXVxuICAgICAgICAgIGlmIChhY3RldXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYWN0ZXVyU3VtbWFyeS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGFjdGV1ciAhPT0gdW5kZWZpbmVkICYmIGFjdGV1clN1bW1hcnkubWFuZGF0UmVmICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0IG9mIGFjdGV1ci5tYW5kYXRzIHx8IFtdKSB7XG4gICAgICAgICAgICAgIGlmIChtYW5kYXQudWlkID09PSBhY3RldXJTdW1tYXJ5Lm1hbmRhdFJlZikge1xuICAgICAgICAgICAgICAgIGFjdGV1clN1bW1hcnkubWFuZGF0ID0gbWFuZGF0XG4gICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBkYXRhLm9yZ2FuZUJ5VWlkICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgaW5pdGlhdGV1ci5vcmdhbmVSZWYgIT09IHVuZGVmaW5lZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IGRhdGEub3JnYW5lQnlVaWRbaW5pdGlhdGV1ci5vcmdhbmVSZWZdXG4gICAgICAgIGlmIChvcmdhbmUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGluaXRpYXRldXIub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgaW5zZXJ0T3JnYW5lUmVmZXJlbmNlcyhvcmdhbmUsIGRhdGEsIHZpc2l0ZWRVaWRzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGRvc3NpZXJcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydE9yZ2FuZVJlZmVyZW5jZXMoXG4gIG9yZ2FuZTogT3JnYW5lLFxuICBkYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMob3JnYW5lLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQob3JnYW5lLnVpZClcblxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudFJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVQYXJlbnQgPSBkYXRhLm9yZ2FuZUJ5VWlkW29yZ2FuZS5vcmdhbmVQYXJlbnRSZWZdXG4gICAgICBpZiAob3JnYW5lUGFyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgb3JnYW5lLm9yZ2FuZVBhcmVudCA9IG9yZ2FuZVBhcmVudFxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVBhcmVudCwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIG9yZ2FuZVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0UmV1bmlvblJlZmVyZW5jZXMoXG4gIHJldW5pb246IFJldW5pb24sXG4gIGRhdGE6IE91dHB1dERhdGEsXG4gIHZpc2l0ZWRVaWRzOiBTZXQ8c3RyaW5nPixcbikge1xuICBpZiAoIXZpc2l0ZWRVaWRzLmhhcyhyZXVuaW9uLnVpZCkpIHtcbiAgICB2aXNpdGVkVWlkcy5hZGQocmV1bmlvbi51aWQpXG5cbiAgICBjb25zdCBkZW1hbmRldXJzID0gcmV1bmlvbi5kZW1hbmRldXJzXG4gICAgaWYgKGRlbWFuZGV1cnMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clN1bW1hcnkgb2YgZGVtYW5kZXVycy5hY3RldXJzIHx8IFtdKSB7XG4gICAgICAgICAgY29uc3QgYWN0ZXVyID0gZGF0YS5hY3RldXJCeVVpZFthY3RldXJTdW1tYXJ5LmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFjdGV1clN1bW1hcnkuYWN0ZXVyID0gYWN0ZXVyXG4gICAgICAgICAgICBpbnNlcnRBY3RldXJSZWZlcmVuY2VzKGFjdGV1ciwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5vcmdhbmVCeVVpZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZVN1bW1hcnkgPSBkZW1hbmRldXJzLm9yZ2FuZVxuICAgICAgICBpZiAob3JnYW5lU3VtbWFyeSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgb3JnYW5lID0gZGF0YS5vcmdhbmVCeVVpZFtvcmdhbmVTdW1tYXJ5Lm9yZ2FuZVJlZl1cbiAgICAgICAgICBpZiAob3JnYW5lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIG9yZ2FuZVN1bW1hcnkub3JnYW5lID0gb3JnYW5lXG4gICAgICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZSwgZGF0YSwgdmlzaXRlZFVpZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIGRhdGEub3JnYW5lQnlVaWQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmV1bmlvbi5vcmdhbmVSZXVuaVJlZiAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjb25zdCBvcmdhbmVSZXVuaSA9IGRhdGEub3JnYW5lQnlVaWRbcmV1bmlvbi5vcmdhbmVSZXVuaVJlZl1cbiAgICAgIGlmIChvcmdhbmVSZXVuaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldW5pb24ub3JnYW5lUmV1bmkgPSBvcmdhbmVSZXVuaVxuICAgICAgICBpbnNlcnRPcmdhbmVSZWZlcmVuY2VzKG9yZ2FuZVJldW5pLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRhdGEuYWN0ZXVyQnlVaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgY29uc3QgcGFydGljaXBhbnRzID0gcmV1bmlvbi5wYXJ0aWNpcGFudHNcbiAgICAgIGlmIChwYXJ0aWNpcGFudHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBmb3IgKGNvbnN0IHBhcnRpY2lwYW50SW50ZXJuZSBvZiBwYXJ0aWNpcGFudHMucGFydGljaXBhbnRzSW50ZXJuZXMgfHxcbiAgICAgICAgICBbXSkge1xuICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGRhdGEuYWN0ZXVyQnlVaWRbcGFydGljaXBhbnRJbnRlcm5lLmFjdGV1clJlZl1cbiAgICAgICAgICBpZiAoYWN0ZXVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHBhcnRpY2lwYW50SW50ZXJuZS5hY3RldXIgPSBhY3RldXJcbiAgICAgICAgICAgIGluc2VydEFjdGV1clJlZmVyZW5jZXMoYWN0ZXVyLCBkYXRhLCB2aXNpdGVkVWlkcylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV1bmlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U2NydXRpblJlZmVyZW5jZXMoXG4gIHNjcnV0aW46IFNjcnV0aW4sXG4gIF9kYXRhOiBPdXRwdXREYXRhLFxuICB2aXNpdGVkVWlkczogU2V0PHN0cmluZz4sXG4pIHtcbiAgaWYgKCF2aXNpdGVkVWlkcy5oYXMoc2NydXRpbi51aWQpKSB7XG4gICAgdmlzaXRlZFVpZHMuYWRkKHNjcnV0aW4udWlkKVxuXG4gICAgLy8gVE9ET1xuICB9XG5cbiAgcmV0dXJuIHNjcnV0aW5cbn1cbiJdLCJtYXBwaW5ncyI6IkFBcUJBLFNBQVNBLDhCQUE4QkEsQ0FDckNDLElBQW9CLEVBQ3BCQyxJQUFnQixFQUNoQkMsV0FBd0IsRUFDeEI7RUFDQSxJQUFJLENBQUNBLFdBQVcsQ0FBQ0MsR0FBRyxDQUFDSCxJQUFJLENBQUNJLEdBQUcsQ0FBQyxFQUFFO0lBQzlCRixXQUFXLENBQUNHLEdBQUcsQ0FBQ0wsSUFBSSxDQUFDSSxHQUFHLENBQUM7SUFFekIsSUFDRUgsSUFBSSxDQUFDSyxhQUFhLEtBQUtDLFNBQVMsSUFDaENQLElBQUksQ0FBQ1EsZ0NBQWdDLEtBQUtELFNBQVMsRUFDbkQ7TUFDQSxNQUFNRSxRQUFRLEdBQUdSLElBQUksQ0FBQ0ssYUFBYSxDQUFDTixJQUFJLENBQUNRLGdDQUFnQyxDQUFDO01BQzFFLElBQUlDLFFBQVEsS0FBS0YsU0FBUyxFQUFFO1FBQzFCUCxJQUFJLENBQUNVLDZCQUE2QixHQUFHRCxRQUFRO1FBQzdDRSx3QkFBd0IsQ0FBQ0YsUUFBUSxFQUFFUixJQUFJLEVBQUVDLFdBQVcsQ0FBQztNQUN2RDtJQUNGO0lBQ0EsSUFBSUQsSUFBSSxDQUFDVyxXQUFXLEtBQUtMLFNBQVMsSUFBSVAsSUFBSSxDQUFDYSxTQUFTLEtBQUtOLFNBQVMsRUFBRTtNQUNsRSxNQUFNTyxNQUFNLEdBQUdiLElBQUksQ0FBQ1csV0FBVyxDQUFDWixJQUFJLENBQUNhLFNBQVMsQ0FBQztNQUMvQyxJQUFJQyxNQUFNLEtBQUtQLFNBQVMsRUFBRTtRQUN4QlAsSUFBSSxDQUFDYyxNQUFNLEdBQUdBLE1BQU07UUFDcEJDLHNCQUFzQixDQUFDRCxNQUFNLEVBQUViLElBQUksRUFBRUMsV0FBVyxDQUFDO01BQ25EO0lBQ0Y7SUFDQSxJQUFJRCxJQUFJLENBQUNXLFdBQVcsS0FBS0wsU0FBUyxJQUFJ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
package/lib/loaders.js CHANGED
@@ -861,4 +861,4 @@ function pathFromScrutinUid(scrutinsDir, uid) {
861
861
  _fsExtra["default"].ensureDirSync(numeroMilliersDir);
862
862
  return _path["default"].join(numeroMilliersDir, uid);
863
863
  }
864
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwibG9hZEFzc2VtYmxlZURhdGEiLCJkYXRhRGlyIiwiZW5hYmxlZERhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJsb2ciLCJhY3RldXJCeVVpZCIsIm9yZ2FuZUJ5VWlkIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsImRhdGFzZXQiLCJpZ25vcmVGb3JXZWIiLCJMZWdpc2xhdHVyZSIsIkFsbCIsImRhdGFzZXREaXIiLCJwYXRoIiwiam9pbiIsImZpbGVuYW1lIiwicmVwbGFjZSIsIndhbGtEaXIiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImxlbmd0aCIsImVuZHNXaXRoIiwiYWN0ZXVyRmlsZVBhdGgiLCJjb25zb2xlIiwiYWN0ZXVySnNvbiIsImZzIiwicmVhZEZpbGVTeW5jIiwiZW5jb2RpbmciLCJhY3RldXIiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsInRvQWN0ZXVyIiwidWlkIiwidW5kZWZpbmVkIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVGaWxlUGF0aCIsIm9yZ2FuZUpzb24iLCJvcmdhbmUiLCJ0b09yZ2FuZSIsInJldW5pb25CeVVpZCIsInJldW5pb25zQnlEYXkiLCJyZXVuaW9uc0J5RG9zc2llclVpZCIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25GaWxlUGF0aCIsInJldW5pb25Kc29uIiwicmV1bmlvbiIsIkFnZW5kYXNDb252ZXJ0IiwidG9SZXVuaW9uIiwiZGF5IiwidGltZXN0YW1wRGVidXQiLCJ0b0lTT1N0cmluZyIsInNwbGl0IiwicmV1bmlvbnNBdERheSIsInB1c2giLCJvZGoiLCJwb2ludHNPZGoiLCJwb2ludE9kaiIsImRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIiwiZG9zc2llckxlZ2lzbGF0aWZSZWYiLCJyZXVuaW9uc0F0RG9zc2llclVpZCIsImFtZW5kZW1lbnRCeVVpZCIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwiZG9jdW1lbnRCeVVpZCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwidG9Eb2N1bWVudCIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJTZWl6ZSIsImV4aXN0c1N5bmMiLCJqc29uIiwiT2JqZWN0IiwiYXNzaWduIiwiSlNPTiIsInBhcnNlIiwic2NydXRpbkJ5VWlkIiwiU2NydXRpbnMiLCJzY3J1dGlucyIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluRmlsZVBhdGgiLCJzY3J1dGluSnNvbiIsInNjcnV0aW4iLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyIsInRvQWN0ZXVyc0V0T3JnYW5lcyIsImFjdGV1cnMiLCJvcmdhbmVzIiwidG9BZ2VuZGFzIiwicmV1bmlvbnMiLCJ0b0FtZW5kZW1lbnRzIiwidGV4dGVzTGVnaXNsYXRpZnMiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb3NzaWVyc1BhcmxlbWVudGFpcmVzIiwidG9TY3J1dGlucyIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJkb2N1bWVudHNEaXIiLCJtYXRjaCIsImV4ZWMiLCJhc3NlcnQiLCJub3RTdHJpY3RFcXVhbCIsImRvY3VtZW50VHlwZSIsImNoYW1icmVEaXIiLCJyZXB1YmxpcXVlRGlyIiwibGVnaXNsYXR1cmVEaXIiLCJldGF0RGlyIiwibnVtZXJvIiwic3Vic3RyIiwibnVtZXJvTWlsbGllcnNEaXIiLCJlbnN1cmVEaXJTeW5jIiwicGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCIsImRvc3NpZXJzRGlyIiwicGF0aEZyb21SZXVuaW9uVWlkIiwicmV1bmlvbnNEaXIiLCJzZXNzaW9uRGlyIiwiaWREaXIiLCJudW1lcm9NaWxsaW9uc0RpciIsInBhdGhGcm9tU2NydXRpblVpZCIsInNjcnV0aW5zRGlyIl0sInNvdXJjZXMiOlsiLi4vc3JjL2xvYWRlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIExvYWQgZGF0YSBmcm9tIGZpbGVzXG5cbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcblxuZXhwb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuL2RhdGFzZXRzXCJcbmV4cG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi9maWxlX3N5c3RlbXNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBBY3RldXIsXG4gIENvbnZlcnQgYXMgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQsXG4gIE9yZ2FuZSxcbiAgUGhvdG8sXG59IGZyb20gXCIuL3R5cGVzL2FjdGV1cnNfZXRfb3JnYW5lc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFnZW5kYXNDb252ZXJ0LCBSZXVuaW9uIH0gZnJvbSBcIi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuL3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7XG4gIENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQsXG4gIERvY3VtZW50LFxuICBEb3NzaWVyUGFybGVtZW50YWlyZSxcbn0gZnJvbSBcIi4vdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc0NvbnZlcnQsIFNjcnV0aW4gfSBmcm9tIFwiLi90eXBlcy9zY3J1dGluc1wiXG5cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YSB7XG4gIHJlYWRvbmx5IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9XG4gIHJlYWRvbmx5IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH1cbiAgcmVhZG9ubHkgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH1cbiAgcmVhZG9ubHkgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH1cbiAgcmVhZG9ubHkgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9XG4gIHJlYWRvbmx5IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH1cbiAgcmVhZG9ubHkgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH1cbiAgcmVhZG9ubHkgc2NydXRpbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFNjcnV0aW4gfVxufVxuXG5jb25zdCBkb2N1bWVudFVpZFJlZ2V4ID1cbiAgL14oQUNJTnxBTENOfEFWQ0V8QVZJU3xERUNMfEVUREl8TEVUVHxNRVNTfFBJT058UE5SRXxQUkpMfFJBUFB8UklORnxSSU9OKShBTnxTTikoUlxcZCspW0xTXShcXGQrKShCfEJUQXxCVEN8VEFQKShcXGQrKSgtLiopPyQvXG5jb25zdCBkb3NzaWVyVWlkUmVnZXggPSAvXkRMKFJcXGQrKShMXFxkKylOKFxcZCspJC9cbmNvbnN0IHJldW5pb25VaWRSZWdleCA9XG4gIC9eUlUoQU58Q0d8U04pKFJcXGQrKShMXFxkKykoW0FTXVxcZHs0fSkoSURDfElERkw/fElEUykoXFxkKykkL1xuY29uc3Qgc2NydXRpblVpZFJlZ2V4ID0gL15WVEFOKFJcXGQrKShMXFxkKylWKFxcZCspJC9cblxuLyoqIExvYWQgZGF0YSBmcm9tIHNwbGl0IGZpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFjdGV1clNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7YWN0ZXVyRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvQWN0ZXVyKGFjdGV1ckpzb24pXG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwiYWN0ZXVyXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChhY3RldXJCeVVpZFthY3RldXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPSBhY3RldXJcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcIm9yZ2FuZXNcIl0pKSB7XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLm9yZ2FuZVNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7b3JnYW5lRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMob3JnYW5lRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IG9yZ2FuZSA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZUpzb24pXG4gICAgICAgIC8vIEtlZXAgdGhlIGZpcnN0IGV4aXN0aW5nIFwib3JnYW5lXCIsIGJlY2F1c2UgdGhlIGZpcnN0IHdyYXBwZXIgaXMgdGhlIG1vc3QgY29tcGxldGUuXG4gICAgICAgIGlmIChvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPSBvcmdhbmVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJldW5pb25CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBSZXVuaW9uIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURvc3NpZXJVaWQ6IHsgW2Rvc3NpZXJVaWQ6IHN0cmluZ106IFJldW5pb25bXSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFnZW5kYXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ucmV1bmlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7cmV1bmlvbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5hbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthbWVuZGVtZW50RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFtZW5kZW1lbnRGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnQoYW1lbmRlbWVudEpzb24pXG4gICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID0gYW1lbmRlbWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9jdW1lbnRzXCJdKSkge1xuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID0gZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9jdW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2RvY3VtZW50RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb2N1bWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb2N1bWVudCA9IERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRKc29uKVxuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3QgZG9zc2llclNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIsIFtcImRvc3NpZXJzXCJdKSkge1xuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZW5hbWUgPSBkb3NzaWVyU3BsaXRQYXRoW2Rvc3NpZXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb3NzaWVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmRvc3NpZXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2Rvc3NpZXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9zc2llckZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBkb3NzaWVyID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKGRvc3NpZXJKc29uKVxuICAgICAgICBjb25zdCB0aXRyZURvc3NpZXIgPSBkb3NzaWVyLnRpdHJlRG9zc2llclxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluW3RpdHJlRG9zc2llci5zZW5hdENoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci50aXRyZUNoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pblt0aXRyZURvc3NpZXIudGl0cmVDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuU2VpemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke3NjcnV0aW5GaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpbkZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbihzY3J1dGluSnNvbilcbiAgICAgICAgaWYgKHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHNjcnV0aW5CeVVpZFtzY3J1dGluLnVpZF0gPSBzY3J1dGluXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGV1ckJ5VWlkLFxuICAgIGFtZW5kZW1lbnRCeVVpZCxcbiAgICBkb2N1bWVudEJ5VWlkLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZCxcbiAgICBvcmdhbmVCeVVpZCxcbiAgICBwaG90b0J5VWlkLFxuICAgIHJldW5pb25CeVVpZCxcbiAgICByZXVuaW9uc0J5RGF5LFxuICAgIHJldW5pb25zQnlEb3NzaWVyVWlkLFxuICAgIHNjcnV0aW5CeVVpZCxcbiAgfVxufVxuXG4vKiogTG9hZCBkYXRhIGZyb20gYmlnIG1vbm9seXRpYyBmaWxlcy4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyhcbiAgZGF0YURpcjogc3RyaW5nLFxuICBlbmFibGVkRGF0YXNldHM6IEVuYWJsZWREYXRhc2V0cyxcbiAgbGVnaXNsYXR1cmU6IExlZ2lzbGF0dXJlLFxuICB7IGxvZyA9IGZhbHNlIH0gPSB7fSxcbik6IERhdGEge1xuICBjb25zdCBhY3RldXJCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBY3RldXIgfSA9IHt9XG4gIGNvbnN0IG9yZ2FuZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IE9yZ2FuZSB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhY3RldXJzRXRPcmdhbmVzID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1ciBvZiBhY3RldXJzRXRPcmdhbmVzLmFjdGV1cnMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBhY3RldXJzRXRPcmdhbmVzLm9yZ2FuZXMpIHtcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFnZW5kYXMgPSBBZ2VuZGFzQ29udmVydC50b0FnZW5kYXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBhZ2VuZGFzLnJldW5pb25zKSB7XG4gICAgICAgIGlmIChyZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uQnlVaWRbcmV1bmlvbi51aWRdID0gcmV1bmlvblxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF5ID0gcmV1bmlvbi50aW1lc3RhbXBEZWJ1dC50b0lTT1N0cmluZygpLnNwbGl0KFwiVFwiKVswXVxuICAgICAgICBsZXQgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XVxuICAgICAgICBpZiAocmV1bmlvbnNBdERheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV1bmlvbnNBdERheSA9IHJldW5pb25zQnlEYXlbZGF5XSA9IFtdXG4gICAgICAgIH1cbiAgICAgICAgcmV1bmlvbnNBdERheS5wdXNoKHJldW5pb24pXG5cbiAgICAgICAgY29uc3Qgb2RqID0gcmV1bmlvbi5vZGpcbiAgICAgICAgaWYgKG9kaiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBwb2ludE9kaiBvZiBvZGoucG9pbnRzT2RqIHx8IFtdKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJMZWdpc2xhdGlmUmVmIG9mIHBvaW50T2RqLmRvc3NpZXJzTGVnaXNsYXRpZnNSZWZzIHx8XG4gICAgICAgICAgICAgIFtdKSB7XG4gICAgICAgICAgICAgIGxldCByZXVuaW9uc0F0RG9zc2llclVpZCA9XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNCeURvc3NpZXJVaWRbZG9zc2llckxlZ2lzbGF0aWZSZWZdXG4gICAgICAgICAgICAgIGlmIChyZXVuaW9uc0F0RG9zc2llclVpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQgPSByZXVuaW9uc0J5RG9zc2llclVpZFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJMZWdpc2xhdGlmUmVmXG4gICAgICAgICAgICAgICAgXSA9IFtdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV1bmlvbnNBdERvc3NpZXJVaWQucHVzaChyZXVuaW9uKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFtZW5kZW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBBbWVuZGVtZW50IH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYW1lbmRlbWVudHMgPSBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50cyhqc29uKVxuICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2YgYW1lbmRlbWVudHMudGV4dGVzTGVnaXNsYXRpZnMpIHtcbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgIGlmIChhbWVuZGVtZW50QnlVaWRbYW1lbmRlbWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgZG9jdW1lbnRCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBEb2N1bWVudCB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbjoge1xuICAgIFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlXG4gIH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvc3NpZXJQYXJsZW1lbnRhaXJlIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGRvc3NpZXJzTGVnaXNsYXRpZnMgPVxuICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoanNvbilcbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBpZiAoZG9jdW1lbnRCeVVpZFtkb2N1bWVudC51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPSBkb2N1bWVudFxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXIgb2YgZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyc1BhcmxlbWVudGFpcmVzKSB7XG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBob3RvQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUGhvdG8gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUGhvdG9zKSB7XG4gICAgY29uc3QgcGhvdG9CeVVpZCA9IHt9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgYHBob3Rvc19kZXB1dGVzXyR7XG4gICAgICAgICAgLy8gVE9ETzogSGFuZGxlIExlZ2lzbGF0dXJlLkFsbC5cbiAgICAgICAgICBsZWdpc2xhdHVyZSA9PT0gTGVnaXNsYXR1cmUuQWxsID8gTGVnaXNsYXR1cmUuU2VpemUgOiBsZWdpc2xhdHVyZVxuICAgICAgICB9YCxcbiAgICAgICAgXCJkZXB1dGVzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgXCJwaG90b3Nfc2VuYXRldXJzXCIsXG4gICAgICAgIFwic2VuYXRldXJzLmpzb25cIixcbiAgICAgIClcbiAgICAgIGlmIChmcy5leGlzdHNTeW5jKGpzb25GaWxlUGF0aCkpIHtcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgICAgT2JqZWN0LmFzc2lnbihwaG90b0J5VWlkLCBKU09OLnBhcnNlKGpzb24pKVxuICAgICAgfSBlbHNlIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYElnbm9yaW5nIG1pc3NpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IHNjcnV0aW5zID0gU2NydXRpbnNDb252ZXJ0LnRvU2NydXRpbnMoanNvbilcbiAgICAgIGZvciAoY29uc3Qgc2NydXRpbiBvZiBzY3J1dGlucy5zY3J1dGlucykge1xuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbURvY3VtZW50VWlkKGRvY3VtZW50c0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gZG9jdW1lbnRVaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBkb2N1bWVudCBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgZG9jdW1lbnRUeXBlID0gcGF0aC5qb2luKGRvY3VtZW50c0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBjaGFtYnJlRGlyID0gcGF0aC5qb2luKGRvY3VtZW50VHlwZSwgbWF0Y2ghWzJdKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGNoYW1icmVEaXIsIG1hdGNoIVszXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzRdKVxuICBjb25zdCBldGF0RGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBtYXRjaCFbNV0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzZdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGV0YXREaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQoXG4gIGRvc3NpZXJzRGlyOiBzdHJpbmcsXG4gIHVpZDogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkb3NzaWVyVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgZG9zc2llciBwYXJsZW1lbnRhaXJlIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGRvc3NpZXJzRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tUmV1bmlvblVpZChyZXVuaW9uc0Rpcjogc3RyaW5nLCB1aWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IG1hdGNoID0gcmV1bmlvblVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIHJldW5pb24gVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4ocmV1bmlvbnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihjaGFtYnJlRGlyLCBtYXRjaCFbMl0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVszXSlcbiAgY29uc3Qgc2Vzc2lvbkRpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbWF0Y2ghWzRdKVxuICBjb25zdCBpZERpciA9IHBhdGguam9pbihzZXNzaW9uRGlyLCBtYXRjaCFbNV0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMDAwMFwiICsgbWF0Y2ghWzZdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDkpXG4gIGNvbnN0IG51bWVyb01pbGxpb25zRGlyID0gcGF0aC5qb2luKGlkRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihudW1lcm9NaWxsaW9uc0RpciwgbnVtZXJvLnN1YnN0cigzLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21TY3J1dGluVWlkKHNjcnV0aW5zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBzY3J1dGluVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3Igc2NydXRpbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgcmVwdWJsaXF1ZURpciA9IHBhdGguam9pbihzY3J1dGluc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbMl0pXG4gIGxldCBudW1lcm8gPSBcIjAwMDAwMFwiICsgbWF0Y2ghWzNdXG4gIG51bWVybyA9IG51bWVyby5zdWJzdHIobnVtZXJvLmxlbmd0aCAtIDYpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBudW1lcm8uc3Vic3RyKDAsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFFQTtBQU1BO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFBc0U7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQXFCdEUsSUFBTUEsZ0JBQWdCLEdBQ3BCLDJIQUEySDtBQUM3SCxJQUFNQyxlQUFlLEdBQUcsd0JBQXdCO0FBQ2hELElBQU1DLGVBQWUsR0FDbkIsMkRBQTJEO0FBQzdELElBQU1DLGVBQWUsR0FBRywwQkFBMEI7O0FBRWxEO0FBQ08sU0FBU0MsaUJBQWlCLENBQy9CQyxPQUFlLEVBQ2ZDLGVBQWdDLEVBQ2hDQyxXQUF3QixFQUVsQjtFQUFBLCtFQURZLENBQUMsQ0FBQztJQUFBLGdCQUFsQkMsR0FBRztJQUFIQSxHQUFHLHlCQUFHLEtB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
864
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIl9hY3RldXJzX2V0X29yZ2FuZXMiLCJfYWdlbmRhcyIsIl9hbWVuZGVtZW50cyIsIl9kb3NzaWVyc19sZWdpc2xhdGlmcyIsIl9sZWdpc2xhdHVyZXMiLCJfc2NydXRpbnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIml0ZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibyIsImFsbG93QXJyYXlMaWtlIiwiaXQiLCJsZW5ndGgiLCJpIiwiRiIsInMiLCJuIiwiZG9uZSIsInZhbHVlIiwiZSIsIl9lIiwiZiIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJlcnIiLCJjYWxsIiwic3RlcCIsIm5leHQiLCJfZTIiLCJtaW5MZW4iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsImxlbiIsImFycjIiLCJkb2N1bWVudFVpZFJlZ2V4IiwiZG9zc2llclVpZFJlZ2V4IiwicmV1bmlvblVpZFJlZ2V4Iiwic2NydXRpblVpZFJlZ2V4IiwibG9hZEFzc2VtYmxlZURhdGEiLCJkYXRhRGlyIiwiZW5hYmxlZERhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJfcmVmIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZiRsb2ciLCJsb2ciLCJhY3RldXJCeVVpZCIsIm9yZ2FuZUJ5VWlkIiwiRW5hYmxlZERhdGFzZXRzIiwiQWN0ZXVyc0V0T3JnYW5lcyIsIl9pdGVyYXRvciIsImRhdGFzZXRzIiwiYWN0ZXVyc0V0T3JnYW5lcyIsIl9zdGVwIiwiZGF0YXNldCIsImlnbm9yZUZvcldlYiIsIkxlZ2lzbGF0dXJlIiwiQWxsIiwiZGF0YXNldERpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJyZXBsYWNlIiwiX2l0ZXJhdG9yMiIsIndhbGtEaXIiLCJfc3RlcDIiLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImVuZHNXaXRoIiwiYWN0ZXVyRmlsZVBhdGgiLCJhcHBseSIsImNvbmNhdCIsImNvbnNvbGUiLCJhY3RldXJKc29uIiwiZnMiLCJyZWFkRmlsZVN5bmMiLCJlbmNvZGluZyIsImFjdGV1ciIsIkFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0IiwidG9BY3RldXIiLCJ1aWQiLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVGaWxlUGF0aCIsIm9yZ2FuZUpzb24iLCJvcmdhbmUiLCJ0b09yZ2FuZSIsInJldW5pb25CeVVpZCIsInJldW5pb25zQnlEYXkiLCJyZXVuaW9uc0J5RG9zc2llclVpZCIsIkFnZW5kYXMiLCJfaXRlcmF0b3I0IiwiYWdlbmRhcyIsIl9zdGVwNCIsIl9pdGVyYXRvcjUiLCJfc3RlcDUiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbkZpbGVQYXRoIiwicmV1bmlvbkpzb24iLCJyZXVuaW9uIiwiQWdlbmRhc0NvbnZlcnQiLCJ0b1JldW5pb24iLCJkYXkiLCJ0aW1lc3RhbXBEZWJ1dCIsInRvSVNPU3RyaW5nIiwic3BsaXQiLCJyZXVuaW9uc0F0RGF5IiwicHVzaCIsIm9kaiIsIl9pdGVyYXRvcjYiLCJwb2ludHNPZGoiLCJfc3RlcDYiLCJwb2ludE9kaiIsIl9pdGVyYXRvcjciLCJkb3NzaWVyc0xlZ2lzbGF0aWZzUmVmcyIsIl9zdGVwNyIsImRvc3NpZXJMZWdpc2xhdGlmUmVmIiwicmV1bmlvbnNBdERvc3NpZXJVaWQiLCJhbWVuZGVtZW50QnlVaWQiLCJBbWVuZGVtZW50cyIsIl9pdGVyYXRvcjgiLCJhbWVuZGVtZW50cyIsIl9zdGVwOCIsIl9pdGVyYXRvcjkiLCJfc3RlcDkiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudEZpbGVQYXRoIiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwidG9BbWVuZGVtZW50IiwiZG9jdW1lbnRCeVVpZCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTAiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXAxMCIsIl9pdGVyYXRvcjExIiwiX3N0ZXAxMSIsImRvY3VtZW50U3BsaXRQYXRoIiwiZG9jdW1lbnRGaWxlbmFtZSIsImRvY3VtZW50RmlsZVBhdGgiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudCIsIkRvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0IiwidG9Eb2N1bWVudCIsIl9pdGVyYXRvcjEyIiwiX3N0ZXAxMiIsImRvc3NpZXJTcGxpdFBhdGgiLCJkb3NzaWVyRmlsZW5hbWUiLCJkb3NzaWVyRmlsZVBhdGgiLCJkb3NzaWVySnNvbiIsImRvc3NpZXIiLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwidGl0cmVEb3NzaWVyIiwic2VuYXRDaGVtaW4iLCJ0aXRyZUNoZW1pbiIsInBob3RvQnlVaWQiLCJQaG90b3MiLCJqc29uRmlsZVBhdGgiLCJTZWl6ZSIsImV4aXN0c1N5bmMiLCJqc29uIiwiYXNzaWduIiwiSlNPTiIsInBhcnNlIiwic2NydXRpbkJ5VWlkIiwiU2NydXRpbnMiLCJfaXRlcmF0b3IxMyIsInNjcnV0aW5zIiwiX3N0ZXAxMyIsIl9pdGVyYXRvcjE0IiwiX3N0ZXAxNCIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluRmlsZVBhdGgiLCJzY3J1dGluSnNvbiIsInNjcnV0aW4iLCJTY3J1dGluc0NvbnZlcnQiLCJ0b1NjcnV0aW4iLCJsb2FkQXNzZW1ibGVlRGF0YUZyb21CaWdGaWxlcyIsIl9yZWYyIiwiX3JlZjIkbG9nIiwiX2l0ZXJhdG9yMTUiLCJfc3RlcDE1IiwidG9BY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMTYiLCJhY3RldXJzIiwiX3N0ZXAxNiIsIl9pdGVyYXRvcjE3Iiwib3JnYW5lcyIsIl9zdGVwMTciLCJfaXRlcmF0b3IxOCIsIl9zdGVwMTgiLCJ0b0FnZW5kYXMiLCJfaXRlcmF0b3IxOSIsInJldW5pb25zIiwiX3N0ZXAxOSIsIl9pdGVyYXRvcjIwIiwiX3N0ZXAyMCIsIl9pdGVyYXRvcjIxIiwiX3N0ZXAyMSIsIl9pdGVyYXRvcjIyIiwiX3N0ZXAyMiIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IyMyIsInRleHRlc0xlZ2lzbGF0aWZzIiwiX3N0ZXAyMyIsInRleHRlTGVnaXNsYXRpZiIsIl9pdGVyYXRvcjI0IiwiX3N0ZXAyNCIsIl9pdGVyYXRvcjI1IiwiX3N0ZXAyNSIsInRvRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjI2IiwiX3N0ZXAyNiIsIl9pdGVyYXRvcjI3IiwiZG9zc2llcnNQYXJsZW1lbnRhaXJlcyIsIl9zdGVwMjciLCJfaXRlcmF0b3IyOCIsIl9zdGVwMjgiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yMjkiLCJfc3RlcDI5IiwicGF0aEZyb21Eb2N1bWVudFVpZCIsImRvY3VtZW50c0RpciIsIm1hdGNoIiwiZXhlYyIsImFzc2VydCIsIm5vdFN0cmljdEVxdWFsIiwiZG9jdW1lbnRUeXBlIiwiY2hhbWJyZURpciIsInJlcHVibGlxdWVEaXIiLCJsZWdpc2xhdHVyZURpciIsImV0YXREaXIiLCJudW1lcm8iLCJzdWJzdHIiLCJudW1lcm9NaWxsaWVyc0RpciIsImVuc3VyZURpclN5bmMiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiZG9zc2llcnNEaXIiLCJwYXRoRnJvbVJldW5pb25VaWQiLCJyZXVuaW9uc0RpciIsInNlc3Npb25EaXIiLCJpZERpciIsIm51bWVyb01pbGxpb25zRGlyIiwicGF0aEZyb21TY3J1dGluVWlkIiwic2NydXRpbnNEaXIiXSwic291cmNlcyI6WyIuLi9zcmMvbG9hZGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gTG9hZCBkYXRhIGZyb20gZmlsZXNcblxuaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5leHBvcnQgeyBFbmFibGVkRGF0YXNldHMgfSBmcm9tIFwiLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBkYXRhc2V0cywgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4vZGF0YXNldHNcIlxuZXhwb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxuICBQaG90byxcbn0gZnJvbSBcIi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi90eXBlcy9hZ2VuZGFzXCJcbmltcG9ydCB7IEFtZW5kZW1lbnQsIENvbnZlcnQgYXMgQW1lbmRlbWVudHNDb252ZXJ0IH0gZnJvbSBcIi4vdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHtcbiAgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydCxcbiAgRG9jdW1lbnQsXG4gIERvc3NpZXJQYXJsZW1lbnRhaXJlLFxufSBmcm9tIFwiLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuL3R5cGVzL2xlZ2lzbGF0dXJlc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuL3R5cGVzL3NjcnV0aW5zXCJcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhIHtcbiAgcmVhZG9ubHkgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH1cbiAgcmVhZG9ubHkgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfVxuICByZWFkb25seSBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH1cbiAgcmVhZG9ubHkgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfVxuICByZWFkb25seSBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9XG4gIHJlYWRvbmx5IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfVxuICByZWFkb25seSBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfVxuICByZWFkb25seSBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH1cbiAgcmVhZG9ubHkgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfVxuICByZWFkb25seSByZXVuaW9uc0J5RGF5OiB7IFtkYXk6IHN0cmluZ106IFJldW5pb25bXSB9XG4gIHJlYWRvbmx5IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfVxuICByZWFkb25seSBzY3J1dGluQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogU2NydXRpbiB9XG59XG5cbmNvbnN0IGRvY3VtZW50VWlkUmVnZXggPVxuICAvXihBQ0lOfEFMQ058QVZDRXxBVklTfERFQ0x8RVRESXxMRVRUfE1FU1N8UElPTnxQTlJFfFBSSkx8UkFQUHxSSU5GfFJJT04pKEFOfFNOKShSXFxkKylbTFNdKFxcZCspKEJ8QlRBfEJUQ3xUQVApKFxcZCspKC0uKik/JC9cbmNvbnN0IGRvc3NpZXJVaWRSZWdleCA9IC9eREwoUlxcZCspKExcXGQrKU4oXFxkKykkL1xuY29uc3QgcmV1bmlvblVpZFJlZ2V4ID1cbiAgL15SVShBTnxDR3xTTikoUlxcZCspKExcXGQrKShbQVNdXFxkezR9KShJREN8SURGTD98SURTKShcXGQrKSQvXG5jb25zdCBzY3J1dGluVWlkUmVnZXggPSAvXlZUQU4oUlxcZCspKExcXGQrKVYoXFxkKykkL1xuXG4vKiogTG9hZCBkYXRhIGZyb20gc3BsaXQgZmlsZXMuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZEFzc2VtYmxlZURhdGEoXG4gIGRhdGFEaXI6IHN0cmluZyxcbiAgZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsXG4gIGxlZ2lzbGF0dXJlOiBMZWdpc2xhdHVyZSxcbiAgeyBsb2cgPSBmYWxzZSB9ID0ge30sXG4pOiBEYXRhIHtcbiAgY29uc3QgYWN0ZXVyQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogQWN0ZXVyIH0gPSB7fVxuICBjb25zdCBvcmdhbmVCeVVpZDogeyBbdWlkOiBzdHJpbmddOiBPcmdhbmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiYWN0ZXVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uYWN0ZXVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHthY3RldXJGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1ckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhhY3RldXJGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgYWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJhY3RldXJcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBhY3RldXJCeVVpZFthY3RldXIudWlkXSA9IGFjdGV1clxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtvcmdhbmVGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgLy8gS2VlcCB0aGUgZmlyc3QgZXhpc3RpbmcgXCJvcmdhbmVcIiwgYmVjYXVzZSB0aGUgZmlyc3Qgd3JhcHBlciBpcyB0aGUgbW9zdCBjb21wbGV0ZS5cbiAgICAgICAgaWYgKG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBvcmdhbmVCeVVpZFtvcmdhbmUudWlkXSA9IG9yZ2FuZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmV1bmlvbkJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFJldW5pb24gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEYXk6IHsgW2RheTogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBjb25zdCByZXVuaW9uc0J5RG9zc2llclVpZDogeyBbZG9zc2llclVpZDogc3RyaW5nXTogUmV1bmlvbltdIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRhdGFzZXREaXIgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llXCIpLFxuICAgICAgKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID0gcmV1bmlvblNwbGl0UGF0aFtyZXVuaW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcmV1bmlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5yZXVuaW9uU3BsaXRQYXRoKVxuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtyZXVuaW9uRmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHJldW5pb25GaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgcmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0RGlyID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZVwiKSxcbiAgICAgIClcblxuICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpcikpIHtcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXREaXIsIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2FtZW5kZW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYW1lbmRlbWVudEZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPSBhbWVuZGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0RGlyLCBbXCJkb2N1bWVudHNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPSBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0RGlyLCAuLi5kb2N1bWVudFNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9jdW1lbnRGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldERpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7ZG9zc2llckZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IHRpdHJlRG9zc2llciA9IGRvc3NpZXIudGl0cmVEb3NzaWVyXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW5bdGl0cmVEb3NzaWVyLnNlbmF0Q2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoXG4gICAgICAgICAgdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluICYmXG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPT09XG4gICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgKSB7XG4gICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluW3RpdHJlRG9zc2llci50aXRyZUNoZW1pbl0gPSBkb3NzaWVyXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkW2Rvc3NpZXIudWlkXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCBwaG90b0J5VWlkOiB7IFt1aWQ6IHN0cmluZ106IFBob3RvIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlBob3Rvcykge1xuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldERpciA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWVcIiksXG4gICAgICApXG5cbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXREaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluRmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldERpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKGxvZykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7c2NydXRpbkZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluRmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBpZiAoc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgc2NydXRpbkJ5VWlkW3NjcnV0aW4udWlkXSA9IHNjcnV0aW5cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0ZXVyQnlVaWQsXG4gICAgYW1lbmRlbWVudEJ5VWlkLFxuICAgIGRvY3VtZW50QnlVaWQsXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVNlbmF0Q2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlUaXRyZUNoZW1pbixcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VWlkLFxuICAgIG9yZ2FuZUJ5VWlkLFxuICAgIHBob3RvQnlVaWQsXG4gICAgcmV1bmlvbkJ5VWlkLFxuICAgIHJldW5pb25zQnlEYXksXG4gICAgcmV1bmlvbnNCeURvc3NpZXJVaWQsXG4gICAgc2NydXRpbkJ5VWlkLFxuICB9XG59XG5cbi8qKiBMb2FkIGRhdGEgZnJvbSBiaWcgbW9ub2x5dGljIGZpbGVzLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRBc3NlbWJsZWVEYXRhRnJvbUJpZ0ZpbGVzKFxuICBkYXRhRGlyOiBzdHJpbmcsXG4gIGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLFxuICBsZWdpc2xhdHVyZTogTGVnaXNsYXR1cmUsXG4gIHsgbG9nID0gZmFsc2UgfSA9IHt9LFxuKTogRGF0YSB7XG4gIGNvbnN0IGFjdGV1ckJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFjdGV1ciB9ID0ge31cbiAgY29uc3Qgb3JnYW5lQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogT3JnYW5lIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgaWYgKGRhdGFzZXQuaWdub3JlRm9yV2ViKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgZGF0YXNldC5sZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGxlZ2lzbGF0dXJlICE9PSBkYXRhc2V0LmxlZ2lzbGF0dXJlXG4gICAgICApIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLnJlcGxhY2UoL1xcLmpzb24kLywgXCJfbmV0dG95ZS5qc29uXCIpLFxuICAgICAgKVxuICAgICAgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgTG9hZGluZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgICAgY29uc3QganNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGpzb25GaWxlUGF0aCwgeyBlbmNvZGluZzogXCJ1dGY4XCIgfSlcbiAgICAgIGNvbnN0IGFjdGV1cnNFdE9yZ2FuZXMgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cnNFdE9yZ2FuZXMoanNvbilcbiAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIGFjdGV1cnNFdE9yZ2FuZXMuYWN0ZXVycykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcImFjdGV1clwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAoYWN0ZXVyQnlVaWRbYWN0ZXVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGFjdGV1ckJ5VWlkW2FjdGV1ci51aWRdID0gYWN0ZXVyXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIGFjdGV1cnNFdE9yZ2FuZXMub3JnYW5lcykge1xuICAgICAgICAvLyBLZWVwIHRoZSBmaXJzdCBleGlzdGluZyBcIm9yZ2FuZVwiLCBiZWNhdXNlIHRoZSBmaXJzdCB3cmFwcGVyIGlzIHRoZSBtb3N0IGNvbXBsZXRlLlxuICAgICAgICBpZiAob3JnYW5lQnlVaWRbb3JnYW5lLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIG9yZ2FuZUJ5VWlkW29yZ2FuZS51aWRdID0gb3JnYW5lXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCByZXVuaW9uQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogUmV1bmlvbiB9ID0ge31cbiAgY29uc3QgcmV1bmlvbnNCeURheTogeyBbZGF5OiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGNvbnN0IHJldW5pb25zQnlEb3NzaWVyVWlkOiB7IFtkb3NzaWVyVWlkOiBzdHJpbmddOiBSZXVuaW9uW10gfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgYWdlbmRhcyA9IEFnZW5kYXNDb252ZXJ0LnRvQWdlbmRhcyhqc29uKVxuICAgICAgZm9yIChjb25zdCByZXVuaW9uIG9mIGFnZW5kYXMucmV1bmlvbnMpIHtcbiAgICAgICAgaWYgKHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldW5pb25CeVVpZFtyZXVuaW9uLnVpZF0gPSByZXVuaW9uXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXkgPSByZXVuaW9uLnRpbWVzdGFtcERlYnV0LnRvSVNPU3RyaW5nKCkuc3BsaXQoXCJUXCIpWzBdXG4gICAgICAgIGxldCByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldXG4gICAgICAgIGlmIChyZXVuaW9uc0F0RGF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICByZXVuaW9uc0F0RGF5ID0gcmV1bmlvbnNCeURheVtkYXldID0gW11cbiAgICAgICAgfVxuICAgICAgICByZXVuaW9uc0F0RGF5LnB1c2gocmV1bmlvbilcblxuICAgICAgICBjb25zdCBvZGogPSByZXVuaW9uLm9kalxuICAgICAgICBpZiAob2RqICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHBvaW50T2RqIG9mIG9kai5wb2ludHNPZGogfHwgW10pIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9zc2llckxlZ2lzbGF0aWZSZWYgb2YgcG9pbnRPZGouZG9zc2llcnNMZWdpc2xhdGlmc1JlZnMgfHxcbiAgICAgICAgICAgICAgW10pIHtcbiAgICAgICAgICAgICAgbGV0IHJldW5pb25zQXREb3NzaWVyVWlkID1cbiAgICAgICAgICAgICAgICByZXVuaW9uc0J5RG9zc2llclVpZFtkb3NzaWVyTGVnaXNsYXRpZlJlZl1cbiAgICAgICAgICAgICAgaWYgKHJldW5pb25zQXREb3NzaWVyVWlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZCA9IHJldW5pb25zQnlEb3NzaWVyVWlkW1xuICAgICAgICAgICAgICAgICAgZG9zc2llckxlZ2lzbGF0aWZSZWZcbiAgICAgICAgICAgICAgICBdID0gW11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXVuaW9uc0F0RG9zc2llclVpZC5wdXNoKHJldW5pb24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYW1lbmRlbWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IEFtZW5kZW1lbnQgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGlmIChkYXRhc2V0Lmlnbm9yZUZvcldlYikge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gTGVnaXNsYXR1cmUuQWxsICYmXG4gICAgICAgIGRhdGFzZXQubGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBsZWdpc2xhdHVyZSAhPT0gZGF0YXNldC5sZWdpc2xhdHVyZVxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZS5yZXBsYWNlKC9cXC5qc29uJC8sIFwiX25ldHRveWUuanNvblwiKSxcbiAgICAgIClcbiAgICAgIGlmIChsb2cpIHtcbiAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgIH1cbiAgICAgIGNvbnN0IGpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhqc29uRmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pXG4gICAgICBjb25zdCBhbWVuZGVtZW50cyA9IEFtZW5kZW1lbnRzQ29udmVydC50b0FtZW5kZW1lbnRzKGpzb24pXG4gICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBhbWVuZGVtZW50cy50ZXh0ZXNMZWdpc2xhdGlmcykge1xuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnQgb2YgdGV4dGVMZWdpc2xhdGlmLmFtZW5kZW1lbnRzKSB7XG4gICAgICAgICAgaWYgKGFtZW5kZW1lbnRCeVVpZFthbWVuZGVtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYW1lbmRlbWVudEJ5VWlkW2FtZW5kZW1lbnQudWlkXSA9IGFtZW5kZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkb2N1bWVudEJ5VWlkOiB7IFt1aWQ6IHN0cmluZ106IERvY3VtZW50IH0gPSB7fVxuICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW46IHtcbiAgICBbdWlkOiBzdHJpbmddOiBEb3NzaWVyUGFybGVtZW50YWlyZVxuICB9ID0ge31cbiAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluOiB7XG4gICAgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmVcbiAgfSA9IHt9XG4gIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQ6IHsgW3VpZDogc3RyaW5nXTogRG9zc2llclBhcmxlbWVudGFpcmUgfSA9IHt9XG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3QgZG9zc2llcnNMZWdpc2xhdGlmcyA9XG4gICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhqc29uKVxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudCBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLnRleHRlc0xlZ2lzbGF0aWZzKSB7XG4gICAgICAgIGlmIChkb2N1bWVudEJ5VWlkW2RvY3VtZW50LnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvY3VtZW50QnlVaWRbZG9jdW1lbnQudWlkXSA9IGRvY3VtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgZG9zc2llciBvZiBkb3NzaWVyc0xlZ2lzbGF0aWZzLmRvc3NpZXJzUGFybGVtZW50YWlyZXMpIHtcbiAgICAgICAgY29uc3QgdGl0cmVEb3NzaWVyID0gZG9zc2llci50aXRyZURvc3NpZXJcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHRpdHJlRG9zc2llci5zZW5hdENoZW1pbiAmJlxuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID09PVxuICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlTZW5hdENoZW1pblt0aXRyZURvc3NpZXIuc2VuYXRDaGVtaW5dID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICAgIGlmIChcbiAgICAgICAgICB0aXRyZURvc3NpZXIudGl0cmVDaGVtaW4gJiZcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9PT1cbiAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICApIHtcbiAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5VGl0cmVDaGVtaW5bdGl0cmVEb3NzaWVyLnRpdHJlQ2hlbWluXSA9IGRvc3NpZXJcbiAgICAgICAgfVxuICAgICAgICBpZiAoZG9zc2llclBhcmxlbWVudGFpcmVCeVVpZFtkb3NzaWVyLnVpZF0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWRbZG9zc2llci51aWRdID0gZG9zc2llclxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGhvdG9CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBQaG90byB9ID0ge31cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5QaG90b3MpIHtcbiAgICBjb25zdCBwaG90b0J5VWlkID0ge31cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBgcGhvdG9zX2RlcHV0ZXNfJHtcbiAgICAgICAgICAvLyBUT0RPOiBIYW5kbGUgTGVnaXNsYXR1cmUuQWxsLlxuICAgICAgICAgIGxlZ2lzbGF0dXJlID09PSBMZWdpc2xhdHVyZS5BbGwgPyBMZWdpc2xhdHVyZS5TZWl6ZSA6IGxlZ2lzbGF0dXJlXG4gICAgICAgIH1gLFxuICAgICAgICBcImRlcHV0ZXMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIHtcbiAgICAgIGNvbnN0IGpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBcInBob3Rvc19zZW5hdGV1cnNcIixcbiAgICAgICAgXCJzZW5hdGV1cnMuanNvblwiLFxuICAgICAgKVxuICAgICAgaWYgKGZzLmV4aXN0c1N5bmMoanNvbkZpbGVQYXRoKSkge1xuICAgICAgICBpZiAobG9nKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYExvYWRpbmcgZmlsZTogJHtqc29uRmlsZVBhdGh9YClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgICBPYmplY3QuYXNzaWduKHBob3RvQnlVaWQsIEpTT04ucGFyc2UoanNvbikpXG4gICAgICB9IGVsc2UgaWYgKGxvZykge1xuICAgICAgICBjb25zb2xlLmxvZyhgSWdub3JpbmcgbWlzc2luZyBmaWxlOiAke2pzb25GaWxlUGF0aH1gKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHNjcnV0aW5CeVVpZDogeyBbdWlkOiBzdHJpbmddOiBTY3J1dGluIH0gPSB7fVxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBpZiAoZGF0YXNldC5pZ25vcmVGb3JXZWIpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IExlZ2lzbGF0dXJlLkFsbCAmJlxuICAgICAgICBkYXRhc2V0LmxlZ2lzbGF0dXJlICE9PSBMZWdpc2xhdHVyZS5BbGwgJiZcbiAgICAgICAgbGVnaXNsYXR1cmUgIT09IGRhdGFzZXQubGVnaXNsYXR1cmVcbiAgICAgICkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgICAgY29uc3QganNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUucmVwbGFjZSgvXFwuanNvbiQvLCBcIl9uZXR0b3llLmpzb25cIiksXG4gICAgICApXG4gICAgICBpZiAobG9nKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBMb2FkaW5nIGZpbGU6ICR7anNvbkZpbGVQYXRofWApXG4gICAgICB9XG4gICAgICBjb25zdCBqc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVQYXRoLCB7IGVuY29kaW5nOiBcInV0ZjhcIiB9KVxuICAgICAgY29uc3Qgc2NydXRpbnMgPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGlucyhqc29uKVxuICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIHNjcnV0aW5zLnNjcnV0aW5zKSB7XG4gICAgICAgIGlmIChzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBzY3J1dGluQnlVaWRbc2NydXRpbi51aWRdID0gc2NydXRpblxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3RldXJCeVVpZCxcbiAgICBhbWVuZGVtZW50QnlVaWQsXG4gICAgZG9jdW1lbnRCeVVpZCxcbiAgICBkb3NzaWVyUGFybGVtZW50YWlyZUJ5U2VuYXRDaGVtaW4sXG4gICAgZG9zc2llclBhcmxlbWVudGFpcmVCeVRpdHJlQ2hlbWluLFxuICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlQnlVaWQsXG4gICAgb3JnYW5lQnlVaWQsXG4gICAgcGhvdG9CeVVpZCxcbiAgICByZXVuaW9uQnlVaWQsXG4gICAgcmV1bmlvbnNCeURheSxcbiAgICByZXVuaW9uc0J5RG9zc2llclVpZCxcbiAgICBzY3J1dGluQnlVaWQsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhdGhGcm9tRG9jdW1lbnRVaWQoZG9jdW1lbnRzRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSBkb2N1bWVudFVpZFJlZ2V4LmV4ZWModWlkKVxuICBhc3NlcnQubm90U3RyaWN0RXF1YWwoXG4gICAgbWF0Y2gsXG4gICAgbnVsbCxcbiAgICBgVW5leHBlY3RlZCBzdHJ1Y3R1cmUgZm9yIGRvY3VtZW50IFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCBkb2N1bWVudFR5cGUgPSBwYXRoLmpvaW4oZG9jdW1lbnRzRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGNoYW1icmVEaXIgPSBwYXRoLmpvaW4oZG9jdW1lbnRUeXBlLCBtYXRjaCFbMl0pXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oY2hhbWJyZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBsZWdpc2xhdHVyZURpciA9IHBhdGguam9pbihyZXB1YmxpcXVlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGV0YXREaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4oZXRhdERpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZChcbiAgZG9zc2llcnNEaXI6IHN0cmluZyxcbiAgdWlkOiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IGRvc3NpZXJVaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBkb3NzaWVyIHBhcmxlbWVudGFpcmUgVUlEOiAke3VpZH1gLFxuICApXG4gIGNvbnN0IHJlcHVibGlxdWVEaXIgPSBwYXRoLmpvaW4oZG9zc2llcnNEaXIsIG1hdGNoIVsxXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzJdKVxuICBsZXQgbnVtZXJvID0gXCIwMDAwMDBcIiArIG1hdGNoIVszXVxuICBudW1lcm8gPSBudW1lcm8uc3Vic3RyKG51bWVyby5sZW5ndGggLSA2KVxuICBjb25zdCBudW1lcm9NaWxsaWVyc0RpciA9IHBhdGguam9pbihsZWdpc2xhdHVyZURpciwgbnVtZXJvLnN1YnN0cigwLCAzKSlcbiAgZnMuZW5zdXJlRGlyU3luYyhudW1lcm9NaWxsaWVyc0RpcilcbiAgcmV0dXJuIHBhdGguam9pbihudW1lcm9NaWxsaWVyc0RpciwgdWlkKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGF0aEZyb21SZXVuaW9uVWlkKHJldW5pb25zRGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgbWF0Y2ggPSByZXVuaW9uVWlkUmVnZXguZXhlYyh1aWQpXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICBtYXRjaCxcbiAgICBudWxsLFxuICAgIGBVbmV4cGVjdGVkIHN0cnVjdHVyZSBmb3IgcmV1bmlvbiBVSUQ6ICR7dWlkfWAsXG4gIClcbiAgY29uc3QgY2hhbWJyZURpciA9IHBhdGguam9pbihyZXVuaW9uc0RpciwgbWF0Y2ghWzFdKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKGNoYW1icmVEaXIsIG1hdGNoIVsyXSlcbiAgY29uc3QgbGVnaXNsYXR1cmVEaXIgPSBwYXRoLmpvaW4ocmVwdWJsaXF1ZURpciwgbWF0Y2ghWzNdKVxuICBjb25zdCBzZXNzaW9uRGlyID0gcGF0aC5qb2luKGxlZ2lzbGF0dXJlRGlyLCBtYXRjaCFbNF0pXG4gIGNvbnN0IGlkRGlyID0gcGF0aC5qb2luKHNlc3Npb25EaXIsIG1hdGNoIVs1XSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwMDAwXCIgKyBtYXRjaCFbNl1cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gOSlcbiAgY29uc3QgbnVtZXJvTWlsbGlvbnNEaXIgPSBwYXRoLmpvaW4oaWREaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGNvbnN0IG51bWVyb01pbGxpZXJzRGlyID0gcGF0aC5qb2luKG51bWVyb01pbGxpb25zRGlyLCBudW1lcm8uc3Vic3RyKDMsIDMpKVxuICBmcy5lbnN1cmVEaXJTeW5jKG51bWVyb01pbGxpZXJzRGlyKVxuICByZXR1cm4gcGF0aC5qb2luKG51bWVyb01pbGxpZXJzRGlyLCB1aWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRoRnJvbVNjcnV0aW5VaWQoc2NydXRpbnNEaXI6IHN0cmluZywgdWlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRjaCA9IHNjcnV0aW5VaWRSZWdleC5leGVjKHVpZClcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgIG1hdGNoLFxuICAgIG51bGwsXG4gICAgYFVuZXhwZWN0ZWQgc3RydWN0dXJlIGZvciBzY3J1dGluIFVJRDogJHt1aWR9YCxcbiAgKVxuICBjb25zdCByZXB1YmxpcXVlRGlyID0gcGF0aC5qb2luKHNjcnV0aW5zRGlyLCBtYXRjaCFbMV0pXG4gIGNvbnN0IGxlZ2lzbGF0dXJlRGlyID0gcGF0aC5qb2luKHJlcHVibGlxdWVEaXIsIG1hdGNoIVsyXSlcbiAgbGV0IG51bWVybyA9IFwiMDAwMDAwXCIgKyBtYXRjaCFbM11cbiAgbnVtZXJvID0gbnVtZXJvLnN1YnN0cihudW1lcm8ubGVuZ3RoIC0gNilcbiAgY29uc3QgbnVtZXJvTWlsbGllcnNEaXIgPSBwYXRoLmpvaW4obGVnaXNsYXR1cmVEaXIsIG51bWVyby5zdWJzdHIoMCwgMykpXG4gIGZzLmVuc3VyZURpclN5bmMobnVtZXJvTWlsbGllcnNEaXIpXG4gIHJldHVybiBwYXRoLmpvaW4obnVtZXJvTWlsbGllcnNEaXIsIHVpZClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsS0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsU0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksYUFBQSxHQUFBSixPQUFBO0FBRUEsSUFBQUssbUJBQUEsR0FBQUwsT0FBQTtBQU1BLElBQUFNLFFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFlBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLHFCQUFBLEdBQUFSLE9BQUE7QUFLQSxJQUFBUyxhQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxTQUFBLEdBQUFWLE9BQUE7QUFBc0UsU0FBQUQsdUJBQUFZLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxnQkFBQUEsR0FBQTtBQUFBLFNBQUFFLG1CQUFBQyxHQUFBLFdBQUFDLGtCQUFBLENBQUFELEdBQUEsS0FBQUUsZ0JBQUEsQ0FBQUYsR0FBQSxLQUFBRywyQkFBQSxDQUFBSCxHQUFBLEtBQUFJLGtCQUFBO0FBQUEsU0FBQUEsbUJBQUEsY0FBQUMsU0FBQTtBQUFBLFNBQUFILGlCQUFBSSxJQUFBLGVBQUFDLE1BQUEsb0JBQUFELElBQUEsQ0FBQUMsTUFBQSxDQUFBQyxRQUFBLGFBQUFGLElBQUEsK0JBQUFHLEtBQUEsQ0FBQUMsSUFBQSxDQUFBSixJQUFBO0FBQUEsU0FBQUwsbUJBQUFELEdBQUEsUUFBQVMsS0FBQSxDQUFBRSxPQUFBLENBQUFYLEdBQUEsVUFBQVksaUJBQUEsQ0FBQVosR0FBQTtBQUFBLFNB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