@tricoteuses/assemblee 0.28.0 → 0.28.1

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 (132) hide show
  1. package/lib/api.js +1 -1
  2. package/lib/api.mjs +1 -1
  3. package/lib/bugs/acteur-00010/plugin.test.js +1 -1
  4. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  5. package/lib/bugs/acteur-00010.js +1 -1
  6. package/lib/bugs/acteur-00010.mjs +1 -1
  7. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  8. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  9. package/lib/bugs/agenda-00002.js +1 -1
  10. package/lib/bugs/agenda-00002.mjs +1 -1
  11. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  12. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  13. package/lib/bugs/agenda-00008.js +1 -1
  14. package/lib/bugs/agenda-00008.mjs +1 -1
  15. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  16. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  17. package/lib/bugs/agenda-00011.js +1 -1
  18. package/lib/bugs/agenda-00011.mjs +1 -1
  19. package/lib/bugs.js +1 -1
  20. package/lib/bugs.mjs +1 -1
  21. package/lib/cleaners/actes_legislatifs.js +1 -1
  22. package/lib/cleaners/actes_legislatifs.mjs +1 -1
  23. package/lib/cleaners/acteurs.js +1 -1
  24. package/lib/cleaners/acteurs.mjs +1 -1
  25. package/lib/cleaners/amendements.js +1 -1
  26. package/lib/cleaners/amendements.mjs +1 -1
  27. package/lib/cleaners/documents.js +1 -1
  28. package/lib/cleaners/documents.mjs +1 -1
  29. package/lib/cleaners/dossiers_legislatifs.js +1 -1
  30. package/lib/cleaners/dossiers_legislatifs.mjs +1 -1
  31. package/lib/cleaners/index.js +1 -1
  32. package/lib/cleaners/index.mjs +1 -1
  33. package/lib/cleaners/organes.js +1 -1
  34. package/lib/cleaners/organes.mjs +1 -1
  35. package/lib/cleaners/reunions.js +1 -1
  36. package/lib/cleaners/reunions.mjs +1 -1
  37. package/lib/cleaners/scrutins.js +1 -1
  38. package/lib/cleaners/scrutins.mjs +1 -1
  39. package/lib/cleaners/xml.js +1 -1
  40. package/lib/cleaners/xml.mjs +1 -1
  41. package/lib/datasets.js +1 -1
  42. package/lib/datasets.mjs +1 -1
  43. package/lib/dates.js +1 -1
  44. package/lib/dates.mjs +1 -1
  45. package/lib/dossiers_legislatifs.js +1 -1
  46. package/lib/dossiers_legislatifs.mjs +1 -1
  47. package/lib/file_systems.js +1 -1
  48. package/lib/file_systems.mjs +1 -1
  49. package/lib/git.js +1 -1
  50. package/lib/git.mjs +1 -1
  51. package/lib/index.js +1 -1
  52. package/lib/index.mjs +1 -1
  53. package/lib/inserters.js +1 -1
  54. package/lib/inserters.mjs +1 -1
  55. package/lib/loaders.js +1 -1
  56. package/lib/loaders.mjs +1 -1
  57. package/lib/organes.js +1 -1
  58. package/lib/organes.mjs +1 -1
  59. package/lib/parsers/documents.js +1 -1
  60. package/lib/parsers/documents.mjs +1 -1
  61. package/lib/parsers/index.js +1 -1
  62. package/lib/parsers/index.mjs +1 -1
  63. package/lib/parsers/recherche_amendements.js +1 -1
  64. package/lib/parsers/recherche_amendements.mjs +1 -1
  65. package/lib/raw_types/acteurs_et_organes.d.ts +2 -1
  66. package/lib/raw_types/acteurs_et_organes.js +3 -2
  67. package/lib/raw_types/acteurs_et_organes.mjs +3 -2
  68. package/lib/raw_types/agendas.js +1 -1
  69. package/lib/raw_types/agendas.mjs +1 -1
  70. package/lib/raw_types/amendements.js +1 -1
  71. package/lib/raw_types/amendements.mjs +1 -1
  72. package/lib/raw_types/dossiers_legislatifs.js +1 -1
  73. package/lib/raw_types/dossiers_legislatifs.mjs +1 -1
  74. package/lib/raw_types/scrutins.js +1 -1
  75. package/lib/raw_types/scrutins.mjs +1 -1
  76. package/lib/scripts/bugs_helper.js +1 -1
  77. package/lib/scripts/bugs_helper.mjs +1 -1
  78. package/lib/scripts/clean_data.js +1 -1
  79. package/lib/scripts/clean_data.mjs +1 -1
  80. package/lib/scripts/clean_reorganized_data.js +1 -1
  81. package/lib/scripts/clean_reorganized_data.mjs +1 -1
  82. package/lib/scripts/diff_amendements.js +1 -1
  83. package/lib/scripts/diff_amendements.mjs +1 -1
  84. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  85. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  86. package/lib/scripts/get_today_reunions.js +1 -1
  87. package/lib/scripts/get_today_reunions.mjs +1 -1
  88. package/lib/scripts/merge_scrutins.js +1 -1
  89. package/lib/scripts/merge_scrutins.mjs +1 -1
  90. package/lib/scripts/parse_textes_lois.js +1 -1
  91. package/lib/scripts/parse_textes_lois.mjs +1 -1
  92. package/lib/scripts/raw_types_from_amendements.js +1 -1
  93. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  94. package/lib/scripts/reorganize_data.js +1 -1
  95. package/lib/scripts/reorganize_data.mjs +1 -1
  96. package/lib/scripts/retrieve_deputes_photos.js +1 -1
  97. package/lib/scripts/retrieve_deputes_photos.mjs +1 -1
  98. package/lib/scripts/retrieve_documents.js +1 -1
  99. package/lib/scripts/retrieve_documents.mjs +1 -1
  100. package/lib/scripts/retrieve_open_data.js +1 -1
  101. package/lib/scripts/retrieve_open_data.mjs +1 -1
  102. package/lib/scripts/retrieve_pending_amendments.js +1 -1
  103. package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
  104. package/lib/scripts/retrieve_senateurs_photos.js +1 -1
  105. package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
  106. package/lib/scripts/retrieve_textes_lois.js +1 -1
  107. package/lib/scripts/retrieve_textes_lois.mjs +1 -1
  108. package/lib/scripts/test_load.js +1 -1
  109. package/lib/scripts/test_load.mjs +1 -1
  110. package/lib/scripts/test_load_big_files.js +1 -1
  111. package/lib/scripts/test_load_big_files.mjs +1 -1
  112. package/lib/scripts/validate_json.js +1 -1
  113. package/lib/scripts/validate_json.mjs +1 -1
  114. package/lib/shared_types/codes_actes.js +1 -1
  115. package/lib/shared_types/codes_actes.mjs +1 -1
  116. package/lib/strings.js +1 -1
  117. package/lib/strings.mjs +1 -1
  118. package/lib/types/acteurs_et_organes.js +1 -1
  119. package/lib/types/acteurs_et_organes.mjs +1 -1
  120. package/lib/types/agendas.js +1 -1
  121. package/lib/types/agendas.mjs +1 -1
  122. package/lib/types/amendements.js +1 -1
  123. package/lib/types/amendements.mjs +1 -1
  124. package/lib/types/dossiers_legislatifs.js +1 -1
  125. package/lib/types/dossiers_legislatifs.mjs +1 -1
  126. package/lib/types/legislatures.js +1 -1
  127. package/lib/types/legislatures.mjs +1 -1
  128. package/lib/types/scrutins.js +1 -1
  129. package/lib/types/scrutins.mjs +1 -1
  130. package/lib/urls.js +1 -1
  131. package/lib/urls.mjs +1 -1
  132. package/package.json +6 -6
@@ -231,4 +231,4 @@ function generateSingleDiffedAmendment(diffedAmendment) {
231
231
  }
232
232
 
233
233
  diffAmendements(options.dataDir);
234
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RpZmZfYW1lbmRlbWVudHMudHMiXSwibmFtZXMiOlsiY29tbWFuZExpbmVBcmdzIiwiZnMiLCJwYXRoIiwiZGV0YWlsZWREaWZmIiwiZGF0YXNldHMiLCJEYXRhc2V0U3RydWN0dXJlIiwid2Fsa0RpciIsImRpZmZlZEFtZW5kbWVudHMiLCJuZXdBbWVuZG1lbnRzIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwiU3RyaW5nIiwiZGVmYXVsdE9wdGlvbiIsIm9wdGlvbnMiLCJkaWZmQW1lbmRlbWVudHMiLCJkYXRhRGlyIiwicHJldmlvdXMiLCJjb25zb2xlIiwiZXJyb3IiLCJwcm9jZXNzIiwiZXhpdCIsImV4aXN0c1N5bmMiLCJvdXRwdXQiLCJkYXRhc2V0IiwiYW1lbmRlbWVudHMiLCJzdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsImpvaW4iLCJmaWxlbmFtZSIsInNpbGVudCIsImxvZyIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImUiLCJkaWZmIiwiT2JqZWN0Iiwia2V5cyIsImFkZGVkIiwibGVuZ3RoIiwidXBkYXRlZCIsImRlbGV0ZWQiLCJhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyIsImdlbmVyYXRlRGlmZkZpbGVzIiwibW9kZSIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJlbmNvZGluZyIsImZsYWciLCJmb3JFYWNoIiwiZGlmZmVkQW1lbmRtZW50IiwiZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQiLCJuZXdBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudCIsImZpbGUiLCJhbWVuZG1lbnQiLCJkYXRhIiwicHVzaCIsImRpZmZlZERhdGEiLCJzaGlmdCIsInNob3J0RGlyIiwicG9wIiwibWtkaXJTeW5jIiwicmVjdXJzaXZlIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZUFBUCxNQUE0QixtQkFBNUI7QUFDQSxPQUFPQyxFQUFQLE1BQWUsVUFBZjtBQUNBLE9BQU9DLElBQVAsTUFBaUIsTUFBakI7QUFDQSxTQUFTQyxZQUFULFFBQTZCLGtCQUE3QjtTQUNTQyxRLEVBQVVDLGdCO1NBQ1ZDLE87QUFDVCxNQUFNQyxnQkFBNEIsR0FBRyxFQUFyQztBQUNBLE1BQU1DLGFBQXlCLEdBQUcsRUFBbEM7QUFFQSxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtBQUNFQyxFQUFBQSxLQUFLLEVBQUUsR0FEVDtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsb0JBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFFBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFQztBQUpSLENBRHlCLEVBT3pCO0FBQ0VKLEVBQUFBLEtBQUssRUFBRSxHQURUO0FBRUVDLEVBQUFBLElBQUksRUFBRSxjQUZSO0FBR0VDLEVBQUFBLElBQUksRUFBRSxTQUhSO0FBSUVDLEVBQUFBLElBQUksRUFBRUM7QUFKUixDQVB5QixFQWF6QjtBQUNFSixFQUFBQSxLQUFLLEVBQUUsR0FEVDtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsYUFGUjtBQUdFQyxFQUFBQSxJQUFJLEVBQUUsTUFIUjtBQUlFRyxFQUFBQSxZQUFZLEVBQUUsUUFKaEI7QUFLRUYsRUFBQUEsSUFBSSxFQUFFRztBQUxSLENBYnlCLEVBb0J6QjtBQUNFQyxFQUFBQSxhQUFhLEVBQUUsSUFEakI7QUFFRU4sRUFBQUEsSUFBSSxFQUFFLGdEQUZSO0FBR0VDLEVBQUFBLElBQUksRUFBRSxTQUhSO0FBSUVDLEVBQUFBLElBQUksRUFBRUc7QUFKUixDQXBCeUIsRUEwQnpCO0FB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QUFMLENBQWVJLGVBQWUsQ0FBQ00sSUFBL0IsQ0FIRixFQUlFO0FBQUVULElBQUFBLFFBQVEsRUFBRSxNQUFaO0FBQW9CQyxJQUFBQSxJQUFJLEVBQUU7QUFBMUIsR0FKRjtBQU1EOztBQUVEM0MsZUFBZSxDQUFDRCxPQUFPLENBQUNFLE9BQVQsQ0FBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHsgZGV0YWlsZWREaWZmIH0gZnJvbSBcImRlZXAtb2JqZWN0LWRpZmZcIlxuaW1wb3J0IHsgZGF0YXNldHMsIERhdGFzZXRTdHJ1Y3R1cmUgfSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgd2Fsa0RpciB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuY29uc3QgZGlmZmVkQW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5jb25zdCBuZXdBbWVuZG1lbnRzOiBBcnJheTxhbnk+ID0gW11cblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgYWxpYXM6IFwic1wiLFxuICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgbmFtZTogXCJzaWxlbnRcIixcbiAgICB0eXBlOiBCb29sZWFuLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwidlwiLFxuICAgIGhlbHA6IFwidmVyYm9zZSBsb2dzXCIsXG4gICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm1cIixcbiAgICBoZWxwOiBcIkRpZmYgbW9kZXMuXCIsXG4gICAgbmFtZTogXCJtb2RlXCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIm1lcmdlZFwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgaGVscDogXCJkaXJlY3RvcnkgY29udGFpbmluZyBBc3NlbWJsw6llIG9wZW4gZGF0YSBmaWxlc1wiLFxuICAgIG5hbWU6IFwiZGF0YURpclwiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInBcIixcbiAgICBoZWxwOiBcIkRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBwcmV2aW91cyBkdW1wIG9mIGFtZW5kbWVudHNcIixcbiAgICBuYW1lOiBcInByZXZpb3VzXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuICB7XG4gICAgYWxpYXM6IFwib1wiLFxuICAgIGhlbHA6IFwiT3V0cHV0IGRpcmVjdG9yeSBmb3IgZGlmZiBmaWxlc1wiLFxuICAgIG5hbWU6IFwib3V0cHV0XCIsXG4gICAgZGVmYXVsdFZhbHVlOiBcIi4vZGlmZl9vdXRwdXRzL1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbl1cbmNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zKVxuXG5mdW5jdGlvbiBkaWZmQW1lbmRlbWVudHMoZGF0YURpcjogc3RyaW5nKSB7XG4gIGlmICghb3B0aW9ucy5wcmV2aW91cykge1xuICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICBcIk5vIHByZXZpb3VzIGRhdGEgZm9sZGVyIHNwZWNpZmllZC4gWW91IG11c3QgcHJvdmlkZSBvbmUgd2l0aCB0aGUgLXAgb3IgLS1wcmV2aW91cyBvcHRpb24uIEV4aXRpbmcuLi5cIixcbiAgICApXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxuXG4gIGlmICghZnMuZXhpc3RzU3luYyhvcHRpb25zLm91dHB1dCkpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJUaGUgb3V0cHV0IGRpciBkb2VzIG5vdCBleGlzdHMuIFlvdSBtdXN0IHByb3ZpZGUgYW4gZXhpc3RpbmcgZGlyZWN0b3J5LiBEZWZhdWx0IGRpcmVjdG9yeSBpcyAuL2RpZmZfb3V0cHV0cy9cIixcbiAgICApXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxuXG4gIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczoge1xuICAgICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0LmZpbGVuYW1lKVxuICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYERpZmZpbmcgJHtvcmlnaW5hbEpzb25EaXJ9IGZvbGRlci4uLmApXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihvcmlnaW5hbEpzb25EaXIpKSB7XG4gICAgICAgICAgY29uc3QgbmV3RmlsZVBhdGggPVxuICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyICsgXCIvXCIgKyBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3QgbmV3RmlsZSA9IEpTT04ucGFyc2UoXG4gICAgICAgICAgICBmcy5yZWFkRmlsZVN5bmMobmV3RmlsZVBhdGgpLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZVBhdGggPVxuICAgICAgICAgICAgb3B0aW9ucy5wcmV2aW91cyArXG4gICAgICAgICAgICBkYXRhc2V0LmZpbGVuYW1lICtcbiAgICAgICAgICAgIFwiL1wiICtcbiAgICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGguam9pbihcIi9cIilcbiAgICAgICAgICBjb25zdCBvbGRGaWxlRXhpc3RzID0gZnMuZXhpc3RzU3luYyhvbGRGaWxlUGF0aClcbiAgICAgICAgICBpZiAoIW9sZEZpbGVFeGlzdHMpIHtcbiAgICAgICAgICAgIC8vIElmIGZpbGUgZm91bmQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgXCJGaWxlIGRpZCBub3QgZXhpc3RzIHByZXZpb3VzbHkuIEd1ZXNzaW5nIGl0J3MgYSBuZXcgYW1lbmRtZW50LiBBZGRpbmcgdG8gdGhlIGRpZmYgbGlzdCBmb3IgbmV3IG9iamVjdHNcIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMobmV3RmlsZSwgYW1lbmRlbWVudFNwbGl0UGF0aClcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gRmlsZSBhbHJlYWR5IGV4aXN0ZWQgaW4gcHJldmlvdXMgZHVtcFxuICAgICAgICAgIGxldCBvbGRGaWxlOiBKU09OID0gSlNPTi5wYXJzZShcInt9XCIpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIEdhdGhlciBkYXRhIG9mIHRoZSBmaWxlIGFuZCByZXRyYW5zY3JpcHQgYXMgYSBKc29uIG9iamVjdFxuICAgICAgICAgICAgb2xkRmlsZSA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKG9sZEZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpKVxuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIC8vIFNraXAgdGhlIHByb2Nlc3MgdG8gdGhlIG5leHQgaXRlcmF0aW9uIGluIGNhc2Ugb2YgY29ycnVwdCBKU09OIGRhdGFcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gR2VuZXJhdGUgdGhlIGRpZmYgYmVldHdlZW4gdGhlIHR3byBKU09OIG9iamVjdHMgKG9sZCAmIG5ldyBkdW1wKVxuICAgICAgICAgIGNvbnN0IGRpZmY6IGFueSA9IGRldGFpbGVkRGlmZihvbGRGaWxlLCBuZXdGaWxlKVxuXG4gICAgICAgICAgLy8gSWYgbm8gY2hhbmdlcyBiZWV0d2VlbiB0aGUgdHdvIGR1bXBzXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi5hZGRlZCkubGVuZ3RoID09PSAwICYmXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhkaWZmLnVwZGF0ZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi5kZWxldGVkKS5sZW5ndGggPT09IDBcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIC8vIFNraXAgdG8gbmV4dCBpdGVyYXRpb24gYXMgdGhlcmUgaXMgbm8gbmVlZCB0byBnZW5lcmF0ZSBhIGZpbGVcbiAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJDaGFuZ2VzIGZvdW5kICFcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzKGRpZmYsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgb3V0cHV0KHMpXCIpXG4gICAgfVxuXG4gICAgZ2VuZXJhdGVEaWZmRmlsZXMoKVxuICB9XG59XG5cbi8qKlxuICogR2VuZXJhbCBwcm9jZXNzIGZvciBvdXRwdXQgb2YgZGlmZnMuXG4gKiBUaGUgc2NyaXB0IGhhbmRsZXMgdHdvIGRpZmZlcmVudCBtb2RlcyA6XG4gKiAtIG1lcmdlZCA6IFdpbGwgb3V0cHV0IGEgc2luZ2xlIGZpbGUgZm9yIG5ldyBhbWVuZGVtZW50cyBhbmQgYSBzaW5nbGUgZmlsZVxuICogICAgICAgICAgICBmb3IgdXBkYXRlZCBhbWVuZGVtZW50c1xuICogLSBzcGxpdHRlZCA6IFdpbGwgb3V0cHV0IGEgc2luZ2xlIGZpbGUgZm9yIGVhY2ggYW1lbmRtZW50cywgZWl0aGVyIGl0cyBuZXcgb3IgdXBkYXRlZC5cbiAqXG4gKi9cbmZ1bmN0aW9uIGdlbmVyYXRlRGlmZkZpbGVzKCkge1xuICAvLyBIYW5kbGVzIG1lcmdlZCBtb2RlXG4gIGlmIChvcHRpb25zLm1vZGUgPT09IFwibWVyZ2VkXCIpIHtcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbWVyZ2VkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgaWYgKGRpZmZlZEFtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgZGlmZmVkIGFtZW5kbWVudHMgZmlsZXNcIilcbiAgICAgIH1cbiAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgIG9wdGlvbnMub3V0cHV0ICsgXCJhbWVuZGVtZW50c19YVl9kaWZmZWQuanNvblwiLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShkaWZmZWRBbWVuZG1lbnRzKSxcbiAgICAgICAgeyBlbmNvZGluZzogXCJ1dGY4XCIsIGZsYWc6IFwid1wiIH0sXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJObyBkaWZmIGluIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGFtZW5kbWVudHNcIilcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobmV3QW1lbmRtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBuZXcgYW1lbmRtZW50cyBmaWxlXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfbmV3Lmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkobmV3QW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gbmV3IGFtZW5kZW1lbnQuIFNraXBwaW5nIGZpbGUgZ2VuZXJhdGlvblwiKVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChvcHRpb25zLm1vZGUgPT09IFwic3BsaXR0ZWRcIikge1xuICAgIC8vIEhhbmRsZXMgc3BsaXR0ZWQgbW9kZVxuICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiR2VuZXJhdGluZyBzZXBhcmF0ZWQgZmlsZXNcIilcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9jZXNzIHRoZSBjb3B5IGFjdGlvbiBvZiB0aGUgbmV3IGFuZCBkaWZmZWQgYW1lbmRtZW50c1xuICAgICAqL1xuXG4gICAgZGlmZmVkQW1lbmRtZW50cy5mb3JFYWNoKChkaWZmZWRBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQoZGlmZmVkQW1lbmRtZW50KVxuICAgIH0pXG5cbiAgICBuZXdBbWVuZG1lbnRzLmZvckVhY2goKG5ld0FtZW5kbWVudDogYW55KSA9PiB7XG4gICAgICBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQpXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmVycm9yKFwiVW5rbm93biBvdXRwdXQgbW9kZS4gQWJvcnRpbmcuLi5cIilcbiAgICBwcm9jZXNzLmV4aXQoKVxuICB9XG59XG5cbi8vIFB1c2hlcyBhbiBhbWVuZG1lbnQgdG8gdGhlIHF1ZXVlIHRoYXQgd2lsbCBiZSBwcm9jZXNzZWQgdG8gY29weSBuZXcgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMoZmlsZTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBmaWxlLFxuICB9XG4gIG5ld0FtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgdXBkYXRlZCBhbWVuZG1lbnRzIGZpbGVzXG5mdW5jdGlvbiBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmZWREYXRhOiBhbnksIHBhdGg6IGFueSk6IHZvaWQge1xuICBjb25zdCBhbWVuZG1lbnQ6IGFueSA9IHtcbiAgICBwYXRoOiBwYXRoLFxuICAgIGRhdGE6IGRpZmZlZERhdGEsXG4gIH1cbiAgZGlmZmVkQW1lbmRtZW50cy5wdXNoKGFtZW5kbWVudClcbn1cblxuLy8gZ2VuZXJhdGVzIGEgZmlsZSB3aXRoIGEgY29weSBvZiB0aGUgbmV3IGFtZW5kZW1lbnRcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50KG5ld0FtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBuZXdBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4ubmV3QW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGNvbnNvbGUubG9nKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIikpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIG9wdGlvbnMub3V0cHV0ICsgbmV3QW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIubmV3JDFcIiksXG4gICAgSlNPTi5zdHJpbmdpZnkobmV3QW1lbmRtZW50LmRhdGEpLFxuICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICApXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG1vZGlmaWVkIGRhdGEgb2YgdGhlIHByZXZpb3VzbHkgZXhpc3RpbmcgYW1lbmRtZW50O1xuZnVuY3Rpb24gZ2VuZXJhdGVTaW5nbGVEaWZmZWRBbWVuZG1lbnQoZGlmZmVkQW1lbmRtZW50OiB7XG4gIHBhdGg6IEFycmF5PHN0cmluZz5cbiAgZGF0YTogYW55XG59KSB7XG4gIGRpZmZlZEFtZW5kbWVudC5wYXRoLnNoaWZ0KClcblxuICBjb25zdCBzaG9ydERpcjogQXJyYXk8YW55PiA9IFsuLi5kaWZmZWRBbWVuZG1lbnQucGF0aF1cbiAgc2hvcnREaXIucG9wKClcbiAgZnMubWtkaXJTeW5jKG9wdGlvbnMub3V0cHV0ICsgc2hvcnREaXIuam9pbihcIi9cIiksIHtcbiAgICByZWN1cnNpdmU6IHRydWUsXG4gIH0pXG5cbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArXG4gICAgICBkaWZmZWRBbWVuZG1lbnQucGF0aC5qb2luKFwiL1wiKS5yZXBsYWNlKC8oXFwuanNvbikvLCBcIi5kaWZmJDFcIiksXG4gICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50LmRhdGEpLFxuICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICApXG59XG5cbmRpZmZBbWVuZGVtZW50cyhvcHRpb25zLmRhdGFEaXIpXG4iXX0=
234
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZXhpc3RzU3luYyIsIm91dHB1dCIsImRhdGFzZXQiLCJhbWVuZGVtZW50cyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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
@@ -789,4 +789,4 @@ function main(argv) {
789
789
 
790
790
 
791
791
  if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
792
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sIm5hbWVzIjpbInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZXNjcmlwdGlvbiIsImRlZmF1bHRPcHRpb24iLCJtdWx0aXBsZSIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwiQm9vbGVhbiIsInNlY3Rpb25zIiwiaGVhZGVyIiwiY29udGVudCIsIm9wdGlvbkxpc3QiLCJvcHRpb25zIiwiY29uc29sZSIsImVycm9yIiwiaGVscCIsInVzYWdlIiwid2FybiIsImVxU2V0IiwiYXMiLCJicyIsInNpemUiLCJhIiwiaGFzIiwiQ29kZTJQYXR0ZXJuIiwicGF0dGVybiIsImNoaWxkcmVuIiwiX3BhdHRlcm5fIiwiX21hdGNoX2NvdW50XyIsIk9iamVjdCIsImFzc2lnbiIsIkNvZGUyUGF0dGVybkNvbUZvbmQiLCJMZWN0dXJlTWFwcGluZyIsIlNldCIsImFjdGUiLCJjb2RlcyIsImFkZCIsImNvZGVBY3RlIiwiZ2V0VHlwZSIsImxpYmVsbGVBY3RlIiwibm9tQ2Fub25pcXVlIiwibGliZWxsZSIsInR5cGVzIiwiQXJyYXkiLCJmcm9tIiwiYyIsImNvZGUiLCJsb2ciLCJqb2luIiwibWF0Y2giLCJjb2Rlc19sZWN0dXJlX3JlZ2V4cCIsIkVycm9yIiwicmVwbGFjZSIsImlzTGVjdHVyZSIsIm1hcCIsIlJlZ0V4cCIsImNvZGVzX2xlY3R1cmUiLCJMZWN0dXJlTWFwcGVyIiwibWFwcGluZyIsImdldENvZGVBY3RlIiwidW5kZWZpbmVkIiwibGVjdHVyZXMiLCJyZW1hcCIsIm1lcmdlQ29kZXMiLCJwcmludEFuY2hvcnMiLCJnZXRDb2RlcyIsIkFjdGVzRG9jdW1lbnRhdGlvbiIsInNhbml0eUNoZWNrcyIsInZlcmJvc2UiLCJsZWN0dXJlIiwiQ01QIiwiQ0MiLCJQUk9NIiwiQU4yMSIsIkFOTFVOSSIsIlLDqXNvbHV0aW9uIiwiQU4yMCIsIkVVIiwiSW1tdW5pdMOpIiwicHJvY2VkdXJlcyIsImNvZGUycGF0dGVybiIsImRhdGEiLCJhY3Rpb24iLCJmaWxlIiwiZG9zc2llciIsInByb2NlZHVyZSIsInJlbWFwUHJvY2VkdXJlIiwicHJvY2VkdXJlUGFybGVtZW50YWlyZSIsImFjdGVzTGVnaXNsYXRpZnMiLCJ3YWxrRmlsZXMiLCJfYWN0ZXMiLCJfYzJwIiwiX3BhcmVudCIsImNvbGxlY3QiLCJhY3RlcyIsImMycCIsInBhcmVudCIsIm1lcmdlIiwidmFsaWRhdGUiLCJyZXN1bHRzIiwibGVjdHVyZU1hcHBlciIsInB1c2giLCJtZXJnZV9wcm9jZWR1cmVzIiwiTWFwIiwicmVtYXBwZWRQcm9jZWR1cmVzIiwiZ2V0Iiwib3JkZXJlZCIsIngiLCJzZXF1ZW5jZSIsInNob3J0Q29kZSIsInhzaVR5cGUiLCJsIiwicmVtYXBBY3RlcyIsInZhbGlkYXRlQ2hyb25vbG9neSIsIm1lcmdlQWN0ZSIsImNvbGxlY3RBY3RlcyIsInBhdGgiLCJlbnRyaWVzIiwia2V5IiwidmFsdWUiLCJjb25zdHJ1Y3RvciIsInZhbGlkYXRlTGV2ZWwiLCJjb25jYXQiLCJlbnRyeSIsInRpdGxlIiwidW5kZXJsaW5lIiwibGVuZ3RoIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwia2V5cyIsIm9yZGVyZWRDb2RlcyIsInJlbmFtZUNNUCIsImFkZEFuY2hvcnMiLCJwcmludEVudHJ5IiwicHJpbnRMZXZlbCIsInN1YnN0cmluZyIsInJlbWFwcGVkIiwiYWdncmVnYXRlZCIsImdldEFnZ3JlZ2F0ZWQiLCJwcmludENvZGVzIiwicHJpbnRBbmNob3JzSW5kZXgiLCJtYWluIiwiZG9jIiwiY29sbGVjdEZpbGVzIiwicHJvY2Vzc0ZpbGVzIiwicHJpbnQiLCJwcm9jZXNzIiwiZXhpdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FB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QTRCOUUsSUFBNUIsQ0FBaUMsR0FBakMsQ0FBbEI7QUFDQW5DLFVBQUFBLE9BQU8sQ0FBQ2tDLEdBQVIsQ0FBWThFLFNBQVo7QUFDQSxlQUFLVyxVQUFMLENBQWdCMUMsS0FBaEIsRUFBdUIsTUFBdkIsRUFBK0IsS0FBS2QsWUFBTCxDQUFrQnNDLEdBQWxCLENBQS9CLEVBQXVELElBQXZEO0FBQ0Q7QUFkVztBQUFBO0FBQUE7QUFBQTtBQUFBOztBQWVaLFdBQUt1QixVQUFMO0FBQ0EsV0FBS0MsaUJBQUw7QUFDRDs7Ozs7O0FBR0gsU0FBU0MsSUFBVCxDQUFjaEosSUFBZCxFQUFpQztBQUMvQixNQUFNYSxPQUFPLEdBQUdkLFNBQVMsQ0FBQ0MsSUFBRCxDQUF6QjtBQUNBLE1BQUlhLE9BQU8sS0FBSyxJQUFoQixFQUFzQixPQUFPLENBQVA7QUFDdEIsTUFBSW9JLEdBQUcsR0FBRyxJQUFJOUUsa0JBQUosQ0FDUixDQUFDdEQsT0FBTyxDQUFDLGtCQUFELENBREEsRUFFUkEsT0FBTyxDQUFDd0QsT0FGQSxDQUFWO0FBSUE0RSxFQUFBQSxHQUFHLENBQUNDLFlBQUosQ0FBaUJySSxPQUFPLENBQUNxRSxJQUF6QjtBQUNBK0QsRUFBQUEsR0FBRyxDQUFDRSxZQUFKLENBQWlCdEksT0FBTyxDQUFDcUUsSUFBekI7QUFDQStELEVBQUFBLEdBQUcsQ0FBQ0csS0FBSjtBQUNBLFNBQU8sQ0FBUDtBQUNEO0FBRUQ7OztBQUNBLElBQUlDLE9BQU8sQ0FBQ3JKLElBQVIsQ0FBYSxDQUFiLEVBQWdCbUksUUFBaEIsQ0FBeUIsa0NBQXpCLENBQUosRUFDRWtCLE9BQU8sQ0FBQ0MsSUFBUixDQUFhTixJQUFJLENBQUNLLE9BQU8sQ0FBQ3JKLElBQVQsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gYSBKU09OIGZpbGUgb3IgYSBnbG9iIHBhdHRlcm4gdG8gSlNPTiBmaWxlc1wiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcIm5vLXNhbml0eS1jaGVja3NcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJEbyBub3QgcGVyZm9ybSBzYW5pdHkgY2hlY2tzLlwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiaW5jcmVhc2UgdmVyYm9zaXR5XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImhlbHBcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IHRoaXMgdXNhZ2UgZ3VpZGUuXCIsXG4gICAgfSxcbiAgXVxuICBjb25zdCBzZWN0aW9ucyA9IFtcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiQWlkZSDDoCBsYSBkb2N1bWVudGF0aW9uIGR1IGRvc3NpZXIgbMOpZ2lzbGF0aWZcIixcbiAgICAgIGNvbnRlbnQ6IFwiR8OpbsOocmUgdW5lIGhpw6lyYXJjaGllIGRlcyBhY3RlcyBsw6lnaXNsYXRpZnNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIGlmICghKFwiaGVscFwiIGluIG9wdGlvbnMpICYmICEoXCJkYXRhXCIgaW4gb3B0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiLS1kYXRhIGlzIG1hbmRhdG9yeVwiKVxuICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgfVxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBlcVNldChhczogU2V0PHN0cmluZz4sIGJzOiBTZXQ8c3RyaW5nPik6IGJvb2xlYW4ge1xuICBpZiAoYXMuc2l6ZSAhPT0gYnMuc2l6ZSkgcmV0dXJuIGZhbHNlXG4gIGZvciAodmFyIGEgb2YgYXMpIGlmICghYnMuaGFzKGEpKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuIHtcbiAgX3BhdHRlcm5fOiBhbnlcbiAgX21hdGNoX2NvdW50XzogbnVtYmVyXG4gIGNvbnN0cnVjdG9yKHBhdHRlcm46IGFueSwgY2hpbGRyZW46IGFueSkge1xuICAgIHRoaXMuX3BhdHRlcm5fID0gcGF0dGVyblxuICAgIHRoaXMuX21hdGNoX2NvdW50XyA9IDBcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNoaWxkcmVuKVxuICB9XG59XG5cbmNsYXNzIENvZGUyUGF0dGVybkNvbUZvbmQgZXh0ZW5kcyBDb2RlMlBhdHRlcm4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIl4vU0FJU0lFLygvTk9NSU4vKSooL1JFVU5JT04vKSooL1JBUFBPUlQvKSokXCIsIHt9KVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwaW5nIHtcbiAgbGliZWxsZTogYW55ID0ge31cbiAgY29kZXM6IGFueSA9IG5ldyBTZXQoKVxuXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlOiBzdHJpbmdbXSA9IFtcbiAgICBcIkFOMVwiLFxuICAgIFwiU04xXCIsXG4gICAgXCJBTk5MRUNcIixcbiAgICBcIlNOTkxFQ1wiLFxuICAgIFwiQU5MREVGXCIsXG4gICAgXCJBTjJcIixcbiAgICBcIlNOMlwiLFxuICAgIFwiU04zXCIsXG4gIF1cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmVfcmVnZXhwOiBhbnkgPSBuZXcgUmVnRXhwKFxuICAgIFwiXig/OlwiICsgTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZS5qb2luKFwifFwiKSArIFwiKSgtLiopPyRcIixcbiAgKVxuXG4gIHN0YXRpYyBpc0xlY3R1cmUoYWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGFjdGUuY29kZUFjdGUubWF0Y2goTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHApXG4gIH1cblxuICBzdGF0aWMgZ2V0VHlwZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXkFOLykpIHJldHVybiBcIkFOXCJcbiAgICBlbHNlIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eU04vKSkgcmV0dXJuIFwiU05cIlxuICAgIGVsc2UgdGhyb3cgRXJyb3IoYCR7YWN0ZS5jb2RlQWN0ZX0gZG9lcyBub3Qgc3RhcnQgd2l0aCBBTiBvciBTTmApXG4gIH1cblxuICBzdGF0aWMgbWFwKGNvZGVBY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gY29kZUFjdGUucmVwbGFjZShMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cCwgYGxlY3R1cmUkMWApXG4gIH1cblxuICBzdGF0aWMgZ2V0Q29kZUFjdGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKCFMZWN0dXJlTWFwcGluZy5pc0xlY3R1cmUoYWN0ZSkpIHJldHVyblxuXG4gICAgcmV0dXJuIExlY3R1cmVNYXBwaW5nLm1hcChhY3RlLmNvZGVBY3RlKVxuICB9XG5cbiAgYWRkKGFjdGU6IGFueSkge1xuICAgIHRoaXMuY29kZXMuYWRkKGFjdGUuY29kZUFjdGUpXG5cbiAgICBjb25zdCB0eXBlID0gTGVjdHVyZU1hcHBpbmcuZ2V0VHlwZShhY3RlKVxuXG4gICAgaWYgKCEoYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgaW4gdGhpcy5saWJlbGxlKSlcbiAgICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0gPSBuZXcgU2V0KClcbiAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdLmFkZCh0eXBlKVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgYWN0ZS5jb2RlQWN0ZSA9IGNvZGVBY3RlXG5cbiAgICBsZXQgdHlwZXMgPSB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdXG4gICAgaWYgKCEodHlwZXMuaGFzKFwiU05cIikgJiYgdHlwZXMuaGFzKFwiQU5cIikpKSB7XG4gICAgICBpZiAodHlwZXMuaGFzKFwiU05cIikpIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChTw6luYXQpXCJcbiAgICAgIGVsc2UgaWYgKHR5cGVzLmhhcyhcIkFOXCIpKVxuICAgICAgICBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoQXNzZW1ibMOpZSBOYXRpb25hbGUpXCJcbiAgICB9XG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29kZXMuYWRkKGMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvbnNvbGUubG9nKGAuLiBfJHtjb2RlfTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jb2Rlcykuam9pbihcIixcIilcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGVyIHtcbiAgbWFwcGluZzogYW55ID0ge31cblxuICBoYXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiBjb2RlQWN0ZSBpbiB0aGlzLm1hcHBpbmdcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBsZWN0dXJlcyA9IHRoaXMubWFwcGluZ1xuICAgICAgaWYgKCEoY29kZUFjdGUgaW4gbGVjdHVyZXMpKSBsZWN0dXJlc1tjb2RlQWN0ZV0gPSBuZXcgTGVjdHVyZU1hcHBpbmcoKVxuICAgICAgbGVjdHVyZXNbY29kZUFjdGVdLmFkZChhY3RlKVxuICAgIH1cbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnJlbWFwKGFjdGUsIGNvZGVBY3RlKVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5tZXJnZUNvZGVzKGNvZGVzKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnByaW50QW5jaG9ycygpXG4gIH1cblxuICBnZXRDb2Rlcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0uZ2V0Q29kZXMoKVxuICB9XG59XG5cbmNsYXNzIEFjdGVzRG9jdW1lbnRhdGlvbiB7XG4gIHZlcmJvc2U6IGJvb2xlYW5cbiAgc2FuaXR5Q2hlY2tzOiBib29sZWFuXG4gIGxlY3R1cmVNYXBwZXI6IGFueSA9IG5ldyBMZWN0dXJlTWFwcGVyKClcbiAgcmVtYXBwZWRQcm9jZWR1cmVzOiBhbnkgPSB7fVxuICBhbmNob3JzUHJpbnRlZDogYW55ID0ge31cbiAgYW5jaG9yczogYW55ID0gbmV3IFNldCgpXG4gIGNvZGVzOiBhbnkgPSB7fVxuICBwcm9jZWR1cmVzOiBhbnkgPSBudWxsXG4gIGNvZGUycGF0dGVybjogYW55ID0gbmV3IENvZGUyUGF0dGVybihudWxsLCB7XG4gICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKCgoL2xlY3R1cmUvKSspfCgoL2xlY3R1cmUvKSsvQ01QLygvbGVjdHVyZS8pKikpKC9DQy8pPygvUFJPTS8pPygvQU4tQVBQTEkvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC8pPygvRFBUTEVUVFJFQ1QvKT8oL0VUSS8pPygvQVZDRS8pPygvREdWVC8pPygvQUNJTi8pPygvTU9USU9OLykqKC9QUk9DQUNDLyk/KC9DT00vKT8oKC9ERUJBVFMvKSspPygvUlRSSU5JLyk/JFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvfC9BVklTLykrJFwiLCB7XG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUFWSVNcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL1NFQU5DRS8pKigoL01PVElPTi8pPygvTU9USU9OLVZPVEUvKSspPygvREVDLyk/JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ01QOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvfC9TQUlTSUUvKXsxLDJ9KC9DT00vKT8oL0RFQy8pPygvREVCQVRTLUFOLy9ERUJBVFMtU04vKT9cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkNNUC1DT01cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9OT01JTi8pPygvUkFQUE9SVC1BTi98L1JBUFBPUlQtU04vKXsyfSRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLUFOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLVNOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLykrKC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgICAgIFBST006IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9QVUIvKT8kXCIsIHt9KSxcbiAgICAgICAgXCJBTi1BUFBMSVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiQWxsb2N1dGlvbiBkdSBQcsOpc2lkZW50IGRlIGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FQQU4vKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlLDqXNvbHV0aW9uIEFydGljbGUgMzQtMVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSsoL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgUsOpc29sdXRpb246IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8oL0NDLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvfC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DQUUvKT8oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgIFwiQU5MVU5JLUNPTS1DQUVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pPygvUkVVTklPTi8pPygvUkFQUE9SVC8pPygvREVDLyk/JFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKT8oL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICB9KSxcbiAgICBcIlJhcHBvcnQgZCdpbmZvcm1hdGlvbiBzYW5zIG1pc3Npb25cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigvQU4yMC8pPygvRVUvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICAgIEVVOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLykrJFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNaXNzaW9uIGQnaW5mb3JtYXRpb25cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9NSVNJTkYvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLU1JU0lORlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkNvbW1pc3Npb24gZCdlbnF1w6p0ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL0NPTUVOUS8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtQ09NRU5RXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiRW5nYWdlbWVudCBkZSBsYSByZXNwb25zYWJpbGl0w6kgZ291dmVybmVtZW50YWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKCgoL01PVElPTi8pKi9ERUJBVFMvKXwoL0RHVlQvKSl7MSwyfSRcIiwge1xuICAgICAgICAgIFwiQU4yMS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvTU9USU9OLVZPVEUvKSokXCIsIHt9KSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNb3Rpb24gcsOpZsOpcmVuZGFpcmVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL2xlY3R1cmUvKSskXCIsIHtcbiAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8kXCIsIHtcbiAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgSW1tdW5pdMOpOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLykrJFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLyk/KC9ERUMvKSRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJSZXNwb25zYWJpbGl0w6kgcMOpbmFsZSBkdSBwcsOpc2lkZW50IGRlIGxhIHLDqXB1YmxpcXVlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vbGVjdHVyZS8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvUkVDQlVSRUFVLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJQcm9wb3NpdGlvbiBkZSBsb2kgcHLDqXNlbnTDqWUgZW4gYXBwbGljYXRpb24gZGUgbCdhcnRpY2xlIDExIGRlIGxhIENvbnN0aXR1dGlvblwiOlxuICAgICAgbmV3IENvZGUyUGF0dGVybihcIl4vbGVjdHVyZS8kXCIsIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgfSlcblxuICBjb25zdHJ1Y3RvcihzYW5pdHlDaGVja3M6IGJvb2xlYW4sIHZlcmJvc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2VcbiAgICB0aGlzLnNhbml0eUNoZWNrcyA9IHNhbml0eUNoZWNrc1xuICAgIHRoaXMucHJvY2VkdXJlcyA9IHt9XG4gICAgdGhpcy5jb2RlMnBhdHRlcm4uX21hdGNoX2NvdW50XysrXG4gIH1cblxuICB3YWxrRmlsZXMoZGF0YTogc3RyaW5nW10sIGFjdGlvbjogYW55KSB7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKGRhdGEpKSB7XG4gICAgICBjb25zdCBkb3NzaWVyID0gbG9hZChmaWxlKVxuICAgICAgbGV0IHByb2NlZHVyZTogc3RyaW5nID0gdGhpcy5yZW1hcFByb2NlZHVyZShcbiAgICAgICAgZG9zc2llci5wcm9jZWR1cmVQYXJsZW1lbnRhaXJlLmxpYmVsbGUsXG4gICAgICApXG4gICAgICBpZiAoIShwcm9jZWR1cmUgaW4gdGhpcy5wcm9jZWR1cmVzKSkgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSB7fVxuICAgICAgYWN0aW9uKFxuICAgICAgICB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSxcbiAgICAgICAgZG9zc2llci5hY3Rlc0xlZ2lzbGF0aWZzLFxuICAgICAgICB0aGlzLmNvZGUycGF0dGVybltwcm9jZWR1cmVdLFxuICAgICAgICBudWxsLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbGxlY3RGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChfYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBfYzJwOiBhbnksIF9wYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgcHJvY2Vzc0ZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMubWVyZ2UoYWN0ZXMsIGFjdGVzTGVnaXNsYXRpZnMsIGMycCwgcGFyZW50KVxuICAgICAgfSxcbiAgICApXG4gICAgaWYgKHRoaXMuc2FuaXR5Q2hlY2tzKSB0aGlzLnZhbGlkYXRlKClcbiAgfVxuXG4gIHJlbWFwQWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLnJlbWFwKGFjdGUpXG5cbiAgICAgIC8vIENDLVNBSVNJRS0gc3VmZml4IGRvZXMgbm90IGltcGx5IGEgaGllcmFyY2h5XG4gICAgICBhY3RlLmNvZGVBY3RlID0gYWN0ZS5jb2RlQWN0ZS5yZXBsYWNlKC9eQ0MtU0FJU0lFLiovLCBcIkNDLVNBSVNJRVwiKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIGNvbGxlY3RBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIuY29sbGVjdChhY3RlKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIHJlbWFwUHJvY2VkdXJlKHByb2NlZHVyZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXJnZV9wcm9jZWR1cmVzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcChbXG4gICAgICBbXCJQcm9wb3NpdGlvbiBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSByYXRpZmljYXRpb24gZGVzIHRyYWl0w6lzIGV0IGNvbnZlbnRpb25zXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIG9yZ2FuaXF1ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgY29uc3RpdHV0aW9ubmVsbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgZGUgbCdhbm7DqWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgcmVjdGlmaWNhdGl2ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZW1lbnQgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgXSlcbiAgICBpZiAobWVyZ2VfcHJvY2VkdXJlcy5oYXMocHJvY2VkdXJlKSkge1xuICAgICAgdGhpcy5yZW1hcHBlZFByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IG51bGxcbiAgICAgIHJldHVybiBtZXJnZV9wcm9jZWR1cmVzLmdldChwcm9jZWR1cmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcm9jZWR1cmVcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGNvZGVBY3RlcyBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgcmVnZXhwXG4gIG9yZGVyZWRDb2Rlcyhjb2RlczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29kZXMgPSBuZXcgU2V0KGNvZGVzKVxuICAgIGlmICghdGhpcy5zYW5pdHlDaGVja3MpIHJldHVybiBjb2Rlc1xuICAgIGxldCBvcmRlcmVkID0gYzJwW1wiX3BhdHRlcm5fXCJdLm1hdGNoKG5ldyBSZWdFeHAoXCIvLio/L1wiLCBcImdcIikpXG4gICAgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IHgucmVwbGFjZShuZXcgUmVnRXhwKFwiLyguKikvXCIpLCBcIiQxXCIpKVxuICAgIGlmIChwYXJlbnQgIT0gbnVsbCkgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IGAke3BhcmVudH0tJHt4fWApXG4gICAgb3JkZXJlZCA9IG5ldyBTZXQob3JkZXJlZClcbiAgICBhc3NlcnQoZXFTZXQob3JkZXJlZCwgY29kZXMpLCBgJHtbLi4ub3JkZXJlZF19ICE9ICR7Wy4uLmNvZGVzXX1gKVxuICAgIHJldHVybiBvcmRlcmVkXG4gIH1cblxuICB2YWxpZGF0ZUNocm9ub2xvZ3koYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gYzJwW1wiX3BhdHRlcm5fXCJdXG4gICAgY29uc3Qgc2VxdWVuY2UgPSBhY3Rlc0xlZ2lzbGF0aWZzXG4gICAgICAubWFwKCh4OiBhbnkpID0+IGAvJHt4LmNvZGVBY3RlfS9gLnJlcGxhY2UoYC8ke3BhcmVudH0tYCwgXCIvXCIpKVxuICAgICAgLmpvaW4oXCJcIilcbiAgICBhc3NlcnQoXG4gICAgICBzZXF1ZW5jZS5tYXRjaChuZXcgUmVnRXhwKHBhdHRlcm4pKSxcbiAgICAgIGAke3BhdHRlcm59IGRvZXMgbm90IG1hdGNoICR7c2VxdWVuY2V9YCxcbiAgICApXG4gICAgYzJwLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgbWVyZ2VBY3RlKGFjdGVzOiBhbnksIGFjdGU6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGNvZGU6IHN0cmluZyA9IGFjdGUuY29kZUFjdGVcbiAgICBsZXQgc2hvcnRDb2RlOiBzdHJpbmcgPSBjb2RlLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7cGFyZW50fS1gKSwgXCJcIilcbiAgICBzaG9ydENvZGUgPSBzaG9ydENvZGUucmVwbGFjZSgvLShBTnxTTikkLywgXCJcIilcbiAgICB0aGlzLmNvZGVzW3Nob3J0Q29kZV0gPSBudWxsXG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXG4gICAgaWYgKCEoY29kZSBpbiBhY3RlcykpIHtcbiAgICAgIGFjdGVzW2NvZGVdID0ge1xuICAgICAgICB0eXBlOiBhY3RlLnhzaVR5cGUsXG4gICAgICAgIG5hbWU6IG5ldyBTZXQoW25hbWVdKSxcbiAgICAgICAgc2hvcnRDb2RlOiBzaG9ydENvZGUsXG4gICAgICAgIGFjdGVzOiB7fSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYWN0ZXNbY29kZV0ubmFtZS5hZGQobmFtZSlcbiAgICB9XG4gICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpXG4gICAgICB0aGlzLm1lcmdlKGFjdGVzW2NvZGVdLmFjdGVzLCBhY3RlLmFjdGVzTGVnaXNsYXRpZnMsIGMycFtjb2RlXSwgY29kZSlcbiAgfVxuXG4gIG1lcmdlKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgbCA9IHRoaXMucmVtYXBBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgIHRoaXMudmFsaWRhdGVDaHJvbm9sb2d5KGwsIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBsKSB0aGlzLm1lcmdlQWN0ZShhY3RlcywgYWN0ZSwgYzJwLCBwYXJlbnQpXG4gIH1cblxuICBjb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnM6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYWN0ZSBvZiB0aGlzLmNvbGxlY3RBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKSlcbiAgICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKSB0aGlzLmNvbGxlY3QoYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzKVxuICB9XG5cbiAgdmFsaWRhdGVMZXZlbChjMnA6IGFueSwgcGF0aDogYW55KSB7XG4gICAgYXNzZXJ0KGMycC5fbWF0Y2hfY291bnRfID4gMCwgYCR7cGF0aH0gaXMgbmV2ZXIgdXNlZGApXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYzJwKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJDb2RlMlBhdHRlcm5cIilcbiAgICAgICAgdGhpcy52YWxpZGF0ZUxldmVsKHZhbHVlLCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy52YWxpZGF0ZUxldmVsKHRoaXMuY29kZTJwYXR0ZXJuLCBbXSlcbiAgfVxuXG4gIHByaW50RW50cnkoc2VjdGlvbnM6IHN0cmluZywgZW50cnk6IHN0cmluZywgY29kZXM6IHN0cmluZykge1xuICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7ZW50cnl9XFxgX19gXG4gICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oc2VjdGlvbnNbMF0pXG4gICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgIGNvbnNvbGUubG9nKGNvZGVzKVxuICB9XG5cbiAgYWRkQW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSlcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5tZXJnZUNvZGVzKHRoaXMuYW5jaG9ycywga2V5KVxuICAgIGVsc2UgdGhpcy5hbmNob3JzLmFkZChrZXkpXG4gIH1cblxuICBwcmludEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWRba2V5XSA9IG51bGxcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSB0aGlzLmxlY3R1cmVNYXBwZXIucHJpbnRBbmNob3JzKGtleSlcbiAgICBlbHNlIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9OmApXG4gIH1cblxuICBnZXRDb2RlcyhrZXk6IHN0cmluZywgc2hvcnRDb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVybiBgY2YgXFxcXCoke3Nob3J0Q29kZX1cXFxcKmBcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSByZXR1cm4gdGhpcy5sZWN0dXJlTWFwcGVyLmdldENvZGVzKGtleSlcbiAgICBlbHNlIHJldHVybiBrZXlcbiAgfVxuXG4gIHJlbmFtZUNNUChrZXk6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKFwiQ01QXCIpKSB7XG4gICAgICBpZiAoa2V5LmVuZHNXaXRoKFwiLVNOXCIpKSByZXR1cm4gYCR7bmFtZX0gKFPDqW5hdClgXG4gICAgICBlbHNlIGlmIChrZXkuZW5kc1dpdGgoXCItQU5cIikpIHJldHVybiBgJHtuYW1lfSAoQXNzZW1ibMOpZSBOYXRpb25hbGUpYFxuICAgICAgZWxzZSByZXR1cm4gbmFtZVxuICAgIH0gZWxzZSByZXR1cm4gbmFtZVxuICB9XG5cbiAgcHJpbnRMZXZlbChhY3RlczogYW55LCBzZWN0aW9uczogc3RyaW5nLCBjMnA6IGFueSwgcGFyZW50OiBhbnkpIHtcbiAgICBjb25zdCBrZXlzOiBTZXQ8c3RyaW5nPiA9IHRoaXMub3JkZXJlZENvZGVzKE9iamVjdC5rZXlzKGFjdGVzKSwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3QgdmFsdWUgPSBhY3Rlc1trZXldXG4gICAgICBsZXQgbmFtZSA9IEFycmF5LmZyb20odmFsdWUubmFtZSkuam9pbihcIiwgXCIpXG4gICAgICBuYW1lID0gdGhpcy5yZW5hbWVDTVAoa2V5LCBuYW1lKVxuICAgICAgY29uc3QgY29kZXMgPSB0aGlzLmdldENvZGVzKGtleSwgdmFsdWUuc2hvcnRDb2RlKVxuICAgICAgdGhpcy5hZGRBbmNob3JzKGtleSlcbiAgICAgIHRoaXMucHJpbnRBbmNob3JzKGtleSlcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICB0aGlzLnByaW50RW50cnkoc2VjdGlvbnMsIGAke25hbWV9IDwke3ZhbHVlLnNob3J0Q29kZX1UT0NfPmAsIGNvZGVzKVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIGlmIChPYmplY3Qua2V5cyh2YWx1ZS5hY3RlcykubGVuZ3RoID4gMClcbiAgICAgICAgdGhpcy5wcmludExldmVsKHZhbHVlLmFjdGVzLCBzZWN0aW9ucy5zdWJzdHJpbmcoMSksIGMycFtrZXldLCBrZXkpXG4gICAgfVxuICB9XG5cbiAgcHJpbnRDb2RlcygpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmNvZGVzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9VE9DOiBodHRwOi8vYClcbiAgfVxuXG4gIHByaW50QW5jaG9yc0luZGV4KCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuYW5jaG9ycykpXG4gICAgICBjb25zb2xlLmxvZyhgKiA6cmVmOlxcYCR7Y29kZX0gPCR7Y29kZX0+XFxgYClcbiAgfVxuXG4gIGdldEFnZ3JlZ2F0ZWQocHJvY2VkdXJlOiBzdHJpbmcpIHtcbiAgICBpZiAocHJvY2VkdXJlID09IFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIikge1xuICAgICAgY29uc3QgcmVtYXBwZWQgPSBPYmplY3Qua2V5cyh0aGlzLnJlbWFwcGVkUHJvY2VkdXJlcykuam9pbihcIiwgXCIpXG4gICAgICByZXR1cm4gYCAoYWdyw6lnYXRpb24gZGUgJHtyZW1hcHBlZH0pYFxuICAgIH0gZWxzZSByZXR1cm4gXCJcIlxuICB9XG5cbiAgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZCA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCBhY3Rlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wcm9jZWR1cmVzKSBhcyBbXG4gICAgICBzdHJpbmcsXG4gICAgICBhbnksXG4gICAgXVtdKSB7XG4gICAgICBjb25zdCBjb2RlID0ga2V5LnJlcGxhY2UoLyArL2csIFwiX1wiKVxuICAgICAgdGhpcy5jb2Rlc1tjb2RlXSA9IG51bGxcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSB0aGlzLmdldEFnZ3JlZ2F0ZWQoa2V5KVxuICAgICAgY29uc3QgdGl0bGUgPSBgXFxgJHtrZXl9IDwke2NvZGV9VE9DXz5cXGBfXyR7YWdncmVnYXRlZH1gXG4gICAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKFwiPVwiKVxuICAgICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgICAgdGhpcy5wcmludExldmVsKGFjdGVzLCBcIi1+LidcIiwgdGhpcy5jb2RlMnBhdHRlcm5ba2V5XSwgbnVsbClcbiAgICB9XG4gICAgdGhpcy5wcmludENvZGVzKClcbiAgICB0aGlzLnByaW50QW5jaG9yc0luZGV4KClcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHJldHVybiAxXG4gIGxldCBkb2MgPSBuZXcgQWN0ZXNEb2N1bWVudGF0aW9uKFxuICAgICFvcHRpb25zW1wibm8tc2FuaXR5LWNoZWNrc1wiXSxcbiAgICBvcHRpb25zLnZlcmJvc2UsXG4gIClcbiAgZG9jLmNvbGxlY3RGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcm9jZXNzRmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJpbnQoKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJkb2N1bWVudF9kb3NzaWVyc19sZWdpc2xhdGlmcy50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdfQ==
792
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsImNvbW1hbmRMaW5lVXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsImEiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJwYXR0ZXJuIiwiY2hpbGRyZW4iLCJfcGF0dGVybl8iLCJfbWF0Y2hfY291bnRfIiwiT2JqZWN0IiwiYXNzaWduIiwiQ29kZTJQYXR0ZXJuQ29tRm9uZCIsIkxlY3R1cmVNYXBwaW5nIiwiU2V0IiwiYWN0ZSIsImNvZGVzIiwiYWRkIiwiY29kZUFjdGUiLCJnZXRUeXBlIiwibGliZWxsZUFjdGUiLCJub21DYW5vbmlxdWUiLCJsaWJlbGxlIiwidHlwZXMiLCJBcnJheSIsImZyb20iLCJjIiwiY29kZSIsImxvZyIsImpvaW4iLCJtYXRjaCIsImNvZGVzX2xlY3R1cmVfcmVnZXhwIiwiRXJyb3IiLCJyZXBsYWNlIiwiaXNMZWN0dXJlIiwibWFwIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiZ2V0Q29kZUFjdGUiLCJ1bmRlZmluZWQiLCJsZWN0dXJlcyIsInJlbWFwIiwibWVyZ2VDb2RlcyIsInByaW50QW5jaG9ycyIsImdldENvZGVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwiZGF0YSIsImFjdGlvbiIsImdldEZpbGVzIiwiZmlsZSIsImRvc3NpZXIiLCJsb2FkIiwicHJvY2VkdXJlIiwicmVtYXBQcm9jZWR1cmUiLCJwcm9jZWR1cmVQYXJsZW1lbnRhaXJlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsIndhbGtGaWxlcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwiY29sbGVjdCIsImFjdGVzIiwiYzJwIiwicGFyZW50IiwibWVyZ2UiLCJ2YWxpZGF0ZSIsInJlc3VsdHMiLCJsZWN0dXJlTWFwcGVyIiwicHVzaCIsIm1lcmdlX3Byb2NlZHVyZXMiLCJNYXAiLCJyZW1hcHBlZFByb2NlZHVyZXMiLCJnZXQiLCJvcmRlcmVkIiwieCIsImFzc2VydCIsInNlcXVlbmNlIiwic2hvcnRDb2RlIiwieHNpVHlwZSIsImwiLCJyZW1hcEFjdGVzIiwidmFsaWRhdGVDaHJvbm9sb2d5IiwibWVyZ2VBY3RlIiwiY29sbGVjdEFjdGVzIiwicGF0aCIsImVudHJpZXMiLCJrZXkiLCJ2YWx1ZSIsImNvbnN0cnVjdG9yIiwidmFsaWRhdGVMZXZlbCIsImNvbmNhdCIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhbmNob3JzUHJpbnRlZCIsImFuY2hvcnMiLCJzdGFydHNXaXRoIiwiZW5kc1dpdGgiLCJrZXlzIiwib3JkZXJlZENvZGVzIiwicmVuYW1lQ01QIiwiYWRkQW5jaG9ycyIsInByaW50RW50cnkiLCJwcmludExldmVsIiwic3Vic3RyaW5nIiwicmVtYXBwZWQiLCJhZ2dyZWdhdGVkIiwiZ2V0QWdncmVnYXRlZCIsInByaW50Q29kZXMiLCJwcmludEFuY2hvcnNJbmRleCIsIm1haW4iLCJkb2MiLCJjb2xsZWN0RmlsZXMiLCJwcm9jZXNzRmlsZXMiLCJwcmludCIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIGEgSlNPTiBmaWxlIG9yIGEgZ2xvYiBwYXR0ZXJuIHRvIEpTT04gZmlsZXNcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJuby1zYW5pdHktY2hlY2tzXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiRG8gbm90IHBlcmZvcm0gc2FuaXR5IGNoZWNrcy5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImluY3JlYXNlIHZlcmJvc2l0eVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkFpZGUgw6AgbGEgZG9jdW1lbnRhdGlvbiBkdSBkb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICBjb250ZW50OiBcIkfDqW7DqHJlIHVuZSBoacOpcmFyY2hpZSBkZXMgYWN0ZXMgbMOpZ2lzbGF0aWZzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICBpZiAoIShcImhlbHBcIiBpbiBvcHRpb25zKSAmJiAhKFwiZGF0YVwiIGluIG9wdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi0tZGF0YSBpcyBtYW5kYXRvcnlcIilcbiAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gIH1cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gZXFTZXQoYXM6IFNldDxzdHJpbmc+LCBiczogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgaWYgKGFzLnNpemUgIT09IGJzLnNpemUpIHJldHVybiBmYWxzZVxuICBmb3IgKHZhciBhIG9mIGFzKSBpZiAoIWJzLmhhcyhhKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmNsYXNzIENvZGUyUGF0dGVybiB7XG4gIF9wYXR0ZXJuXzogYW55XG4gIF9tYXRjaF9jb3VudF86IG51bWJlclxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuOiBhbnksIGNoaWxkcmVuOiBhbnkpIHtcbiAgICB0aGlzLl9wYXR0ZXJuXyA9IHBhdHRlcm5cbiAgICB0aGlzLl9tYXRjaF9jb3VudF8gPSAwXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjaGlsZHJlbilcbiAgfVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm5Db21Gb25kIGV4dGVuZHMgQ29kZTJQYXR0ZXJuIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJeL1NBSVNJRS8oL05PTUlOLykqKC9SRVVOSU9OLykqKC9SQVBQT1JULykqJFwiLCB7fSlcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGluZyB7XG4gIGxpYmVsbGU6IGFueSA9IHt9XG4gIGNvZGVzOiBhbnkgPSBuZXcgU2V0KClcblxuICBzdGF0aWMgY29kZXNfbGVjdHVyZTogc3RyaW5nW10gPSBbXG4gICAgXCJBTjFcIixcbiAgICBcIlNOMVwiLFxuICAgIFwiQU5OTEVDXCIsXG4gICAgXCJTTk5MRUNcIixcbiAgICBcIkFOTERFRlwiLFxuICAgIFwiQU4yXCIsXG4gICAgXCJTTjJcIixcbiAgICBcIlNOM1wiLFxuICBdXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlX3JlZ2V4cDogYW55ID0gbmV3IFJlZ0V4cChcbiAgICBcIl4oPzpcIiArIExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmUuam9pbihcInxcIikgKyBcIikoLS4qKT8kXCIsXG4gIClcblxuICBzdGF0aWMgaXNMZWN0dXJlKGFjdGU6IGFueSkge1xuICAgIHJldHVybiBhY3RlLmNvZGVBY3RlLm1hdGNoKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwKVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15BTi8pKSByZXR1cm4gXCJBTlwiXG4gICAgZWxzZSBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXlNOLykpIHJldHVybiBcIlNOXCJcbiAgICBlbHNlIHRocm93IEVycm9yKGAke2FjdGUuY29kZUFjdGV9IGRvZXMgbm90IHN0YXJ0IHdpdGggQU4gb3IgU05gKVxuICB9XG5cbiAgc3RhdGljIG1hcChjb2RlQWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlLnJlcGxhY2UoTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHAsIGBsZWN0dXJlJDFgKVxuICB9XG5cbiAgc3RhdGljIGdldENvZGVBY3RlKGFjdGU6IGFueSkge1xuICAgIGlmICghTGVjdHVyZU1hcHBpbmcuaXNMZWN0dXJlKGFjdGUpKSByZXR1cm5cblxuICAgIHJldHVybiBMZWN0dXJlTWFwcGluZy5tYXAoYWN0ZS5jb2RlQWN0ZSlcbiAgfVxuXG4gIGFkZChhY3RlOiBhbnkpIHtcbiAgICB0aGlzLmNvZGVzLmFkZChhY3RlLmNvZGVBY3RlKVxuXG4gICAgY29uc3QgdHlwZSA9IExlY3R1cmVNYXBwaW5nLmdldFR5cGUoYWN0ZSlcblxuICAgIGlmICghKGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlIGluIHRoaXMubGliZWxsZSkpXG4gICAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdID0gbmV3IFNldCgpXG4gICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXS5hZGQodHlwZSlcbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIGFjdGUuY29kZUFjdGUgPSBjb2RlQWN0ZVxuXG4gICAgbGV0IHR5cGVzID0gdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXVxuICAgIGlmICghKHR5cGVzLmhhcyhcIlNOXCIpICYmIHR5cGVzLmhhcyhcIkFOXCIpKSkge1xuICAgICAgaWYgKHR5cGVzLmhhcyhcIlNOXCIpKSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoU8OpbmF0KVwiXG4gICAgICBlbHNlIGlmICh0eXBlcy5oYXMoXCJBTlwiKSlcbiAgICAgICAgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKEFzc2VtYmzDqWUgTmF0aW9uYWxlKVwiXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55KSB7XG4gICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvZGVzLmFkZChjKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb25zb2xlLmxvZyhgLi4gXyR7Y29kZX06YClcbiAgfVxuXG4gIGdldENvZGVzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29kZXMpLmpvaW4oXCIsXCIpXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBlciB7XG4gIG1hcHBpbmc6IGFueSA9IHt9XG5cbiAgaGFzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29kZUFjdGUgaW4gdGhpcy5tYXBwaW5nXG4gIH1cblxuICBjb2xsZWN0KGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbGVjdHVyZXMgPSB0aGlzLm1hcHBpbmdcbiAgICAgIGlmICghKGNvZGVBY3RlIGluIGxlY3R1cmVzKSkgbGVjdHVyZXNbY29kZUFjdGVdID0gbmV3IExlY3R1cmVNYXBwaW5nKClcbiAgICAgIGxlY3R1cmVzW2NvZGVBY3RlXS5hZGQoYWN0ZSlcbiAgICB9XG4gIH1cblxuICByZW1hcChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5yZW1hcChhY3RlLCBjb2RlQWN0ZSlcbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ubWVyZ2VDb2Rlcyhjb2RlcylcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5wcmludEFuY2hvcnMoKVxuICB9XG5cbiAgZ2V0Q29kZXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLmdldENvZGVzKClcbiAgfVxufVxuXG5jbGFzcyBBY3Rlc0RvY3VtZW50YXRpb24ge1xuICB2ZXJib3NlOiBib29sZWFuXG4gIHNhbml0eUNoZWNrczogYm9vbGVhblxuICBsZWN0dXJlTWFwcGVyOiBhbnkgPSBuZXcgTGVjdHVyZU1hcHBlcigpXG4gIHJlbWFwcGVkUHJvY2VkdXJlczogYW55ID0ge31cbiAgYW5jaG9yc1ByaW50ZWQ6IGFueSA9IHt9XG4gIGFuY2hvcnM6IGFueSA9IG5ldyBTZXQoKVxuICBjb2RlczogYW55ID0ge31cbiAgcHJvY2VkdXJlczogYW55ID0gbnVsbFxuICBjb2RlMnBhdHRlcm46IGFueSA9IG5ldyBDb2RlMlBhdHRlcm4obnVsbCwge1xuICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigoKC9sZWN0dXJlLykrKXwoKC9sZWN0dXJlLykrL0NNUC8oL2xlY3R1cmUvKSopKSgvQ0MvKT8oL1BST00vKT8oL0FOLUFQUExJLyk/JFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvKT8oL0RQVExFVFRSRUNULyk/KC9FVEkvKT8oL0FWQ0UvKT8oL0RHVlQvKT8oL0FDSU4vKT8oL01PVElPTi8pKigvUFJPQ0FDQy8pPygvQ09NLyk/KCgvREVCQVRTLykrKT8oL1JUUklOSS8pPyRcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05EL3wvQVZJUy8pKyRcIiwge1xuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1BVklTXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9TRUFOQ0UvKSooKC9NT1RJT04vKT8oL01PVElPTi1WT1RFLykrKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENNUDogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9UL3wvU0FJU0lFLyl7MSwyfSgvQ09NLyk/KC9ERUMvKT8oL0RFQkFUUy1BTi8vREVCQVRTLVNOLyk/XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJDTVAtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvTk9NSU4vKT8oL1JBUFBPUlQtQU4vfC9SQVBQT1JULVNOLyl7Mn0kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1BTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1TTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pKygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgICAgICBQUk9NOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUFVCLyk/JFwiLCB7fSksXG4gICAgICAgIFwiQU4tQVBQTElcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIkFsbG9jdXRpb24gZHUgUHLDqXNpZGVudCBkZSBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BUEFOLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJSw6lzb2x1dGlvbiBBcnRpY2xlIDM0LTFcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykrKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFLDqXNvbHV0aW9uOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/KC9DQy8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTL3wvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ0FFLyk/KC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICBcIkFOTFVOSS1DT00tQ0FFXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKT8oL1JFVU5JT04vKT8oL1JBUFBPUlQvKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLyk/KC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgfSksXG4gICAgXCJSYXBwb3J0IGQnaW5mb3JtYXRpb24gc2FucyBtaXNzaW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oL0FOMjAvKT8oL0VVLyk/JFwiLFxuICAgICAge1xuICAgICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgICBFVTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pKyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTWlzc2lvbiBkJ2luZm9ybWF0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvTUlTSU5GLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1NSVNJTkZcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJDb21taXNzaW9uIGQnZW5xdcOqdGVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DT01FTlEvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLUNPTUVOUVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkVuZ2FnZW1lbnQgZGUgbGEgcmVzcG9uc2FiaWxpdMOpIGdvdXZlcm5lbWVudGFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigoKC9NT1RJT04vKSovREVCQVRTLyl8KC9ER1ZULykpezEsMn0kXCIsIHtcbiAgICAgICAgICBcIkFOMjEtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL01PVElPTi1WT1RFLykqJFwiLCB7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTW90aW9uIHLDqWbDqXJlbmRhaXJlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9sZWN0dXJlLykrJFwiLCB7XG4gICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/JFwiLCB7XG4gICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIEltbXVuaXTDqTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pKyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pPygvREVDLykkXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiUmVzcG9uc2FiaWxpdMOpIHDDqW5hbGUgZHUgcHLDqXNpZGVudCBkZSBsYSByw6lwdWJsaXF1ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL2xlY3R1cmUvJFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL1JFQ0JVUkVBVS8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUHJvcG9zaXRpb24gZGUgbG9pIHByw6lzZW50w6llIGVuIGFwcGxpY2F0aW9uIGRlIGwnYXJ0aWNsZSAxMSBkZSBsYSBDb25zdGl0dXRpb25cIjpcbiAgICAgIG5ldyBDb2RlMlBhdHRlcm4oXCJeL2xlY3R1cmUvJFwiLCB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSksXG4gIH0pXG5cbiAgY29uc3RydWN0b3Ioc2FuaXR5Q2hlY2tzOiBib29sZWFuLCB2ZXJib3NlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlXG4gICAgdGhpcy5zYW5pdHlDaGVja3MgPSBzYW5pdHlDaGVja3NcbiAgICB0aGlzLnByb2NlZHVyZXMgPSB7fVxuICAgIHRoaXMuY29kZTJwYXR0ZXJuLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgd2Fsa0ZpbGVzKGRhdGE6IHN0cmluZ1tdLCBhY3Rpb246IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhkYXRhKSkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGxvYWQoZmlsZSlcbiAgICAgIGxldCBwcm9jZWR1cmU6IHN0cmluZyA9IHRoaXMucmVtYXBQcm9jZWR1cmUoXG4gICAgICAgIGRvc3NpZXIucHJvY2VkdXJlUGFybGVtZW50YWlyZS5saWJlbGxlLFxuICAgICAgKVxuICAgICAgaWYgKCEocHJvY2VkdXJlIGluIHRoaXMucHJvY2VkdXJlcykpIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdID0ge31cbiAgICAgIGFjdGlvbihcbiAgICAgICAgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0sXG4gICAgICAgIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyxcbiAgICAgICAgdGhpcy5jb2RlMnBhdHRlcm5bcHJvY2VkdXJlXSxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0RmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoX2FjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgX2MycDogYW55LCBfcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIHByb2Nlc3NGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1lcmdlKGFjdGVzLCBhY3Rlc0xlZ2lzbGF0aWZzLCBjMnAsIHBhcmVudClcbiAgICAgIH0sXG4gICAgKVxuICAgIGlmICh0aGlzLnNhbml0eUNoZWNrcykgdGhpcy52YWxpZGF0ZSgpXG4gIH1cblxuICByZW1hcEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5yZW1hcChhY3RlKVxuXG4gICAgICAvLyBDQy1TQUlTSUUtIHN1ZmZpeCBkb2VzIG5vdCBpbXBseSBhIGhpZXJhcmNoeVxuICAgICAgYWN0ZS5jb2RlQWN0ZSA9IGFjdGUuY29kZUFjdGUucmVwbGFjZSgvXkNDLVNBSVNJRS4qLywgXCJDQy1TQUlTSUVcIilcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBjb2xsZWN0QWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLmNvbGxlY3QoYWN0ZSlcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1hcFByb2NlZHVyZShwcm9jZWR1cmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVyZ2VfcHJvY2VkdXJlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgICAgW1wiUHJvcG9zaXRpb24gZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgcmF0aWZpY2F0aW9uIGRlcyB0cmFpdMOpcyBldCBjb252ZW50aW9uc1wiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBvcmdhbmlxdWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIGNvbnN0aXR1dGlvbm5lbGxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIGRlIGwnYW5uw6llXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIHJlY3RpZmljYXRpdmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VtZW50IGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgIF0pXG4gICAgaWYgKG1lcmdlX3Byb2NlZHVyZXMuaGFzKHByb2NlZHVyZSkpIHtcbiAgICAgIHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSBudWxsXG4gICAgICByZXR1cm4gbWVyZ2VfcHJvY2VkdXJlcy5nZXQocHJvY2VkdXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvY2VkdXJlXG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBjb2RlQWN0ZXMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHJlZ2V4cFxuICBvcmRlcmVkQ29kZXMoY29kZXM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvZGVzID0gbmV3IFNldChjb2RlcylcbiAgICBpZiAoIXRoaXMuc2FuaXR5Q2hlY2tzKSByZXR1cm4gY29kZXNcbiAgICBsZXQgb3JkZXJlZCA9IGMycFtcIl9wYXR0ZXJuX1wiXS5tYXRjaChuZXcgUmVnRXhwKFwiLy4qPy9cIiwgXCJnXCIpKVxuICAgIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiB4LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8oLiopL1wiKSwgXCIkMVwiKSlcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiBgJHtwYXJlbnR9LSR7eH1gKVxuICAgIG9yZGVyZWQgPSBuZXcgU2V0KG9yZGVyZWQpXG4gICAgYXNzZXJ0KGVxU2V0KG9yZGVyZWQsIGNvZGVzKSwgYCR7Wy4uLm9yZGVyZWRdfSAhPSAke1suLi5jb2Rlc119YClcbiAgICByZXR1cm4gb3JkZXJlZFxuICB9XG5cbiAgdmFsaWRhdGVDaHJvbm9sb2d5KGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0dGVybiA9IGMycFtcIl9wYXR0ZXJuX1wiXVxuICAgIGNvbnN0IHNlcXVlbmNlID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgICAgLm1hcCgoeDogYW55KSA9PiBgLyR7eC5jb2RlQWN0ZX0vYC5yZXBsYWNlKGAvJHtwYXJlbnR9LWAsIFwiL1wiKSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgYXNzZXJ0KFxuICAgICAgc2VxdWVuY2UubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSksXG4gICAgICBgJHtwYXR0ZXJufSBkb2VzIG5vdCBtYXRjaCAke3NlcXVlbmNlfWAsXG4gICAgKVxuICAgIGMycC5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIG1lcmdlQWN0ZShhY3RlczogYW55LCBhY3RlOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBhY3RlLmNvZGVBY3RlXG4gICAgbGV0IHNob3J0Q29kZTogc3RyaW5nID0gY29kZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3BhcmVudH0tYCksIFwiXCIpXG4gICAgc2hvcnRDb2RlID0gc2hvcnRDb2RlLnJlcGxhY2UoLy0oQU58U04pJC8sIFwiXCIpXG4gICAgdGhpcy5jb2Rlc1tzaG9ydENvZGVdID0gbnVsbFxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZVxuICAgIGlmICghKGNvZGUgaW4gYWN0ZXMpKSB7XG4gICAgICBhY3Rlc1tjb2RlXSA9IHtcbiAgICAgICAgdHlwZTogYWN0ZS54c2lUeXBlLFxuICAgICAgICBuYW1lOiBuZXcgU2V0KFtuYW1lXSksXG4gICAgICAgIHNob3J0Q29kZTogc2hvcnRDb2RlLFxuICAgICAgICBhY3Rlczoge30sXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGVzW2NvZGVdLm5hbWUuYWRkKG5hbWUpXG4gICAgfVxuICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKVxuICAgICAgdGhpcy5tZXJnZShhY3Rlc1tjb2RlXS5hY3RlcywgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzLCBjMnBbY29kZV0sIGNvZGUpXG4gIH1cblxuICBtZXJnZShhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGwgPSB0aGlzLnJlbWFwQWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICB0aGlzLnZhbGlkYXRlQ2hyb25vbG9neShsLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgbCkgdGhpcy5tZXJnZUFjdGUoYWN0ZXMsIGFjdGUsIGMycCwgcGFyZW50KVxuICB9XG5cbiAgY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgdGhpcy5jb2xsZWN0QWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcykpXG4gICAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSkgdGhpcy5jb2xsZWN0KGFjdGUuYWN0ZXNMZWdpc2xhdGlmcylcbiAgfVxuXG4gIHZhbGlkYXRlTGV2ZWwoYzJwOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGFzc2VydChjMnAuX21hdGNoX2NvdW50XyA+IDAsIGAke3BhdGh9IGlzIG5ldmVyIHVzZWRgKVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGMycCkgYXMgW3N0cmluZywgYW55XVtdKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiQ29kZTJQYXR0ZXJuXCIpXG4gICAgICAgIHRoaXMudmFsaWRhdGVMZXZlbCh2YWx1ZSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMudmFsaWRhdGVMZXZlbCh0aGlzLmNvZGUycGF0dGVybiwgW10pXG4gIH1cblxuICBwcmludEVudHJ5KHNlY3Rpb25zOiBzdHJpbmcsIGVudHJ5OiBzdHJpbmcsIGNvZGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBcXGAke2VudHJ5fVxcYF9fYFxuICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKHNlY3Rpb25zWzBdKVxuICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICBjb25zb2xlLmxvZyhjb2RlcylcbiAgfVxuXG4gIGFkZEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpXG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIubWVyZ2VDb2Rlcyh0aGlzLmFuY2hvcnMsIGtleSlcbiAgICBlbHNlIHRoaXMuYW5jaG9ycy5hZGQoa2V5KVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICB0aGlzLmFuY2hvcnNQcmludGVkW2tleV0gPSBudWxsXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgdGhpcy5sZWN0dXJlTWFwcGVyLnByaW50QW5jaG9ycyhrZXkpXG4gICAgZWxzZSBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoa2V5OiBzdHJpbmcsIHNob3J0Q29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm4gYGNmIFxcXFwqJHtzaG9ydENvZGV9XFxcXCpgXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgcmV0dXJuIHRoaXMubGVjdHVyZU1hcHBlci5nZXRDb2RlcyhrZXkpXG4gICAgZWxzZSByZXR1cm4ga2V5XG4gIH1cblxuICByZW5hbWVDTVAoa2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIkNNUFwiKSkge1xuICAgICAgaWYgKGtleS5lbmRzV2l0aChcIi1TTlwiKSkgcmV0dXJuIGAke25hbWV9IChTw6luYXQpYFxuICAgICAgZWxzZSBpZiAoa2V5LmVuZHNXaXRoKFwiLUFOXCIpKSByZXR1cm4gYCR7bmFtZX0gKEFzc2VtYmzDqWUgTmF0aW9uYWxlKWBcbiAgICAgIGVsc2UgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2UgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaW50TGV2ZWwoYWN0ZXM6IGFueSwgc2VjdGlvbnM6IHN0cmluZywgYzJwOiBhbnksIHBhcmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSB0aGlzLm9yZGVyZWRDb2RlcyhPYmplY3Qua2V5cyhhY3RlcyksIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWN0ZXNba2V5XVxuICAgICAgbGV0IG5hbWUgPSBBcnJheS5mcm9tKHZhbHVlLm5hbWUpLmpvaW4oXCIsIFwiKVxuICAgICAgbmFtZSA9IHRoaXMucmVuYW1lQ01QKGtleSwgbmFtZSlcbiAgICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRDb2RlcyhrZXksIHZhbHVlLnNob3J0Q29kZSlcbiAgICAgIHRoaXMuYWRkQW5jaG9ycyhrZXkpXG4gICAgICB0aGlzLnByaW50QW5jaG9ycyhrZXkpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgdGhpcy5wcmludEVudHJ5KHNlY3Rpb25zLCBgJHtuYW1lfSA8JHt2YWx1ZS5zaG9ydENvZGV9VE9DXz5gLCBjb2RlcylcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUuYWN0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMucHJpbnRMZXZlbCh2YWx1ZS5hY3Rlcywgc2VjdGlvbnMuc3Vic3RyaW5nKDEpLCBjMnBba2V5XSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByaW50Q29kZXMoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5jb2RlcykpXG4gICAgICBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fVRPQzogaHR0cDovL2ApXG4gIH1cblxuICBwcmludEFuY2hvcnNJbmRleCgpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmFuY2hvcnMpKVxuICAgICAgY29uc29sZS5sb2coYCogOnJlZjpcXGAke2NvZGV9IDwke2NvZGV9PlxcYGApXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVkKHByb2NlZHVyZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2NlZHVyZSA9PSBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIpIHtcbiAgICAgIGNvbnN0IHJlbWFwcGVkID0gT2JqZWN0LmtleXModGhpcy5yZW1hcHBlZFByb2NlZHVyZXMpLmpvaW4oXCIsIFwiKVxuICAgICAgcmV0dXJuIGAgKGFncsOpZ2F0aW9uIGRlICR7cmVtYXBwZWR9KWBcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCJcbiAgfVxuXG4gIHByaW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWQgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgYWN0ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJvY2VkdXJlcykgYXMgW1xuICAgICAgc3RyaW5nLFxuICAgICAgYW55LFxuICAgIF1bXSkge1xuICAgICAgY29uc3QgY29kZSA9IGtleS5yZXBsYWNlKC8gKy9nLCBcIl9cIilcbiAgICAgIHRoaXMuY29kZXNbY29kZV0gPSBudWxsXG4gICAgICBjb25zdCBhZ2dyZWdhdGVkID0gdGhpcy5nZXRBZ2dyZWdhdGVkKGtleSlcbiAgICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7a2V5fSA8JHtjb2RlfVRPQ18+XFxgX18ke2FnZ3JlZ2F0ZWR9YFxuICAgICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihcIj1cIilcbiAgICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICAgIHRoaXMucHJpbnRMZXZlbChhY3RlcywgXCItfi4nXCIsIHRoaXMuY29kZTJwYXR0ZXJuW2tleV0sIG51bGwpXG4gICAgfVxuICAgIHRoaXMucHJpbnRDb2RlcygpXG4gICAgdGhpcy5wcmludEFuY2hvcnNJbmRleCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZG9jID0gbmV3IEFjdGVzRG9jdW1lbnRhdGlvbihcbiAgICAhb3B0aW9uc1tcIm5vLXNhbml0eS1jaGVja3NcIl0sXG4gICAgb3B0aW9ucy52ZXJib3NlLFxuICApXG4gIGRvYy5jb2xsZWN0RmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJvY2Vzc0ZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByaW50KClcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFQSxTQUFTQSxTQUFULENBQW1CQyxJQUFuQixFQUF3QztFQUN0QyxJQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxXQUFXLEVBQUUseURBRGY7SUFFRUMsYUFBYSxFQUFFLElBRmpCO0lBR0VDLFFBQVEsRUFBRSxJQUhaO0lBSUVDLElBQUksRUFBRSxNQUpSO0lBS0VDLElBQUksRUFBRUM7RUFMUixDQUR5QixFQVF6QjtJQUNFRixJQUFJLEVBQUUsa0JBRFI7SUFFRUMsSUFBSSxFQUFFRSxPQUZSO0lBR0VOLFdBQVcsRUFBRTtFQUhmLENBUnlCLEVBYXpCO0lBQ0VHLElBQUksRUFBRSxTQURSO0lBRUVDLElBQUksRUFBRUUsT0FGUjtJQUdFTixXQUFXLEVBQUU7RUFIZixDQWJ5QixFQWtCekI7SUFDRUcsSUFBSSxFQUFFLE1BRFI7SUFFRUgsV0FBVyxFQUFFO0VBRmYsQ0FsQnlCLENBQTNCO0VBdUJBLElBQU1PLFFBQVEsR0FBRyxD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
@@ -491,4 +491,4 @@ function main(argv) {
491
491
 
492
492
 
493
493
  if (process.argv[1].endsWith("document_dossiers_legislatifs.ts")) process.exit(main(process.argv));
494
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2RvY3VtZW50X2Rvc3NpZXJzX2xlZ2lzbGF0aWZzLnRzIl0sIm5hbWVzIjpbImNvbW1hbmRMaW5lQXJncyIsImNvbW1hbmRMaW5lVXNhZ2UiLCJhc3NlcnQiLCJsb2FkIiwiZ2V0RmlsZXMiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJuYW1lIiwidHlwZSIsIlN0cmluZyIsIkJvb2xlYW4iLCJzZWN0aW9ucyIsImhlYWRlciIsImNvbnRlbnQiLCJvcHRpb25MaXN0Iiwib3B0aW9ucyIsImNvbnNvbGUiLCJlcnJvciIsImhlbHAiLCJ1c2FnZSIsIndhcm4iLCJlcVNldCIsImFzIiwiYnMiLCJzaXplIiwiYSIsImhhcyIsIkNvZGUyUGF0dGVybiIsImNvbnN0cnVjdG9yIiwicGF0dGVybiIsImNoaWxkcmVuIiwiX3BhdHRlcm5fIiwiX21hdGNoX2NvdW50XyIsIk9iamVjdCIsImFzc2lnbiIsIkNvZGUyUGF0dGVybkNvbUZvbmQiLCJMZWN0dXJlTWFwcGluZyIsIlNldCIsImlzTGVjdHVyZSIsImFjdGUiLCJjb2RlQWN0ZSIsIm1hdGNoIiwiY29kZXNfbGVjdHVyZV9yZWdleHAiLCJnZXRUeXBlIiwiRXJyb3IiLCJtYXAiLCJyZXBsYWNlIiwiZ2V0Q29kZUFjdGUiLCJhZGQiLCJjb2RlcyIsImxpYmVsbGVBY3RlIiwibm9tQ2Fub25pcXVlIiwibGliZWxsZSIsInJlbWFwIiwidHlwZXMiLCJtZXJnZUNvZGVzIiwiYyIsIkFycmF5IiwiZnJvbSIsInByaW50QW5jaG9ycyIsImNvZGUiLCJsb2ciLCJnZXRDb2RlcyIsImpvaW4iLCJSZWdFeHAiLCJjb2Rlc19sZWN0dXJlIiwiTGVjdHVyZU1hcHBlciIsIm1hcHBpbmciLCJjb2xsZWN0IiwidW5kZWZpbmVkIiwibGVjdHVyZXMiLCJBY3Rlc0RvY3VtZW50YXRpb24iLCJzYW5pdHlDaGVja3MiLCJ2ZXJib3NlIiwibGVjdHVyZSIsIkNNUCIsIkNDIiwiUFJPTSIsIkFOMjEiLCJBTkxVTkkiLCJSw6lzb2x1dGlvbiIsIkFOMjAiLCJFVSIsIkltbXVuaXTDqSIsInByb2NlZHVyZXMiLCJjb2RlMnBhdHRlcm4iLCJ3YWxrRmlsZXMiLCJkYXRhIiwiYWN0aW9uIiwiZmlsZSIsImRvc3NpZXIiLCJwcm9jZWR1cmUiLCJyZW1hcFByb2NlZHVyZSIsInByb2NlZHVyZVBhcmxlbWVudGFpcmUiLCJhY3Rlc0xlZ2lzbGF0aWZzIiwiY29sbGVjdEZpbGVzIiwiX2FjdGVzIiwiX2MycCIsIl9wYXJlbnQiLCJwcm9jZXNzRmlsZXMiLCJhY3RlcyIsImMycCIsInBhcmVudCIsIm1lcmdlIiwidmFsaWRhdGUiLCJyZW1hcEFjdGVzIiwicmVzdWx0cyIsImxlY3R1cmVNYXBwZXIiLCJwdXNoIiwiY29sbGVjdEFjdGVzIiwibWVyZ2VfcHJvY2VkdXJlcyIsIk1hcCIsInJlbWFwcGVkUHJvY2VkdXJlcyIsImdldCIsIm9yZGVyZWRDb2RlcyIsIm9yZGVyZWQiLCJ4IiwidmFsaWRhdGVDaHJvbm9sb2d5Iiwic2VxdWVuY2UiLCJtZXJnZUFjdGUiLCJzaG9ydENvZGUiLCJ4c2lUeXBlIiwibCIsInZhbGlkYXRlTGV2ZWwiLCJwYXRoIiwia2V5IiwidmFsdWUiLCJlbnRyaWVzIiwiY29uY2F0IiwicHJpbnRFbnRyeSIsImVudHJ5IiwidGl0bGUiLCJ1bmRlcmxpbmUiLCJsZW5ndGgiLCJhZGRBbmNob3JzIiwiYW5jaG9yc1ByaW50ZWQiLCJhbmNob3JzIiwicmVuYW1lQ01QIiwic3RhcnRzV2l0aCIsImVuZHNXaXRoIiwicHJpbnRMZXZlbCIsImtleXMiLCJzdWJzdHJpbmciLCJwcmludENvZGVzIiwicHJpbnRBbmNob3JzSW5kZXgiLCJnZXRBZ2dyZWdhdGVkIiwicmVtYXBwZWQiLCJwcmludCIsImFnZ3JlZ2F0ZWQiLCJtYWluIiwiZG9jIiwicHJvY2VzcyIsImV4aXQiXSwibWFwcGluZ3MiOiI7O0FB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QXlCLGtDQUF6QixDQUFKLEVBQ0VZLE9BQU8sQ0FBQ0MsSUFBUixDQUFhSCxJQUFJLENBQUNFLE9BQU8sQ0FBQ3JKLElBQVQsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgY29tbWFuZExpbmVVc2FnZSBmcm9tIFwiY29tbWFuZC1saW5lLXVzYWdlXCJcbmltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBsb2FkLCBnZXRGaWxlcyB9IGZyb20gXCIuLi9maWxlX3N5c3RlbXNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgZGVzY3JpcHRpb246IFwicGF0aG5hbWUgdG8gYSBKU09OIGZpbGUgb3IgYSBnbG9iIHBhdHRlcm4gdG8gSlNPTiBmaWxlc1wiLFxuICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJkYXRhXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcIm5vLXNhbml0eS1jaGVja3NcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgICBkZXNjcmlwdGlvbjogXCJEbyBub3QgcGVyZm9ybSBzYW5pdHkgY2hlY2tzLlwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJ2ZXJib3NlXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiaW5jcmVhc2UgdmVyYm9zaXR5XCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBuYW1lOiBcImhlbHBcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcIlByaW50IHRoaXMgdXNhZ2UgZ3VpZGUuXCIsXG4gICAgfSxcbiAgXVxuICBjb25zdCBzZWN0aW9ucyA9IFtcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiQWlkZSDDoCBsYSBkb2N1bWVudGF0aW9uIGR1IGRvc3NpZXIgbMOpZ2lzbGF0aWZcIixcbiAgICAgIGNvbnRlbnQ6IFwiR8OpbsOocmUgdW5lIGhpw6lyYXJjaGllIGRlcyBhY3RlcyBsw6lnaXNsYXRpZnNcIixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlYWRlcjogXCJPcHRpb25zXCIsXG4gICAgICBvcHRpb25MaXN0OiBvcHRpb25zRGVmaW5pdGlvbnMsXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIGlmICghKFwiaGVscFwiIGluIG9wdGlvbnMpICYmICEoXCJkYXRhXCIgaW4gb3B0aW9ucykpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiLS1kYXRhIGlzIG1hbmRhdG9yeVwiKVxuICAgIG9wdGlvbnMuaGVscCA9IHRydWVcbiAgfVxuICBpZiAoXCJoZWxwXCIgaW4gb3B0aW9ucykge1xuICAgIGNvbnN0IHVzYWdlID0gY29tbWFuZExpbmVVc2FnZShzZWN0aW9ucylcbiAgICBjb25zb2xlLndhcm4odXNhZ2UpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBlcVNldChhczogU2V0PHN0cmluZz4sIGJzOiBTZXQ8c3RyaW5nPik6IGJvb2xlYW4ge1xuICBpZiAoYXMuc2l6ZSAhPT0gYnMuc2l6ZSkgcmV0dXJuIGZhbHNlXG4gIGZvciAodmFyIGEgb2YgYXMpIGlmICghYnMuaGFzKGEpKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuY2xhc3MgQ29kZTJQYXR0ZXJuIHtcbiAgX3BhdHRlcm5fOiBhbnlcbiAgX21hdGNoX2NvdW50XzogbnVtYmVyXG4gIGNvbnN0cnVjdG9yKHBhdHRlcm46IGFueSwgY2hpbGRyZW46IGFueSkge1xuICAgIHRoaXMuX3BhdHRlcm5fID0gcGF0dGVyblxuICAgIHRoaXMuX21hdGNoX2NvdW50XyA9IDBcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIGNoaWxkcmVuKVxuICB9XG59XG5cbmNsYXNzIENvZGUyUGF0dGVybkNvbUZvbmQgZXh0ZW5kcyBDb2RlMlBhdHRlcm4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIl4vU0FJU0lFLygvTk9NSU4vKSooL1JFVU5JT04vKSooL1JBUFBPUlQvKSokXCIsIHt9KVxuICB9XG59XG5cbmNsYXNzIExlY3R1cmVNYXBwaW5nIHtcbiAgbGliZWxsZTogYW55ID0ge31cbiAgY29kZXM6IGFueSA9IG5ldyBTZXQoKVxuXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlOiBzdHJpbmdbXSA9IFtcbiAgICBcIkFOMVwiLFxuICAgIFwiU04xXCIsXG4gICAgXCJBTk5MRUNcIixcbiAgICBcIlNOTkxFQ1wiLFxuICAgIFwiQU5MREVGXCIsXG4gICAgXCJBTjJcIixcbiAgICBcIlNOMlwiLFxuICAgIFwiU04zXCIsXG4gIF1cbiAgc3RhdGljIGNvZGVzX2xlY3R1cmVfcmVnZXhwOiBhbnkgPSBuZXcgUmVnRXhwKFxuICAgIFwiXig/OlwiICsgTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZS5qb2luKFwifFwiKSArIFwiKSgtLiopPyRcIixcbiAgKVxuXG4gIHN0YXRpYyBpc0xlY3R1cmUoYWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGFjdGUuY29kZUFjdGUubWF0Y2goTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHApXG4gIH1cblxuICBzdGF0aWMgZ2V0VHlwZShhY3RlOiBhbnkpIHtcbiAgICBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXkFOLykpIHJldHVybiBcIkFOXCJcbiAgICBlbHNlIGlmIChhY3RlLmNvZGVBY3RlLm1hdGNoKC9eU04vKSkgcmV0dXJuIFwiU05cIlxuICAgIGVsc2UgdGhyb3cgRXJyb3IoYCR7YWN0ZS5jb2RlQWN0ZX0gZG9lcyBub3Qgc3RhcnQgd2l0aCBBTiBvciBTTmApXG4gIH1cblxuICBzdGF0aWMgbWFwKGNvZGVBY3RlOiBhbnkpIHtcbiAgICByZXR1cm4gY29kZUFjdGUucmVwbGFjZShMZWN0dXJlTWFwcGluZy5jb2Rlc19sZWN0dXJlX3JlZ2V4cCwgYGxlY3R1cmUkMWApXG4gIH1cblxuICBzdGF0aWMgZ2V0Q29kZUFjdGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKCFMZWN0dXJlTWFwcGluZy5pc0xlY3R1cmUoYWN0ZSkpIHJldHVyblxuXG4gICAgcmV0dXJuIExlY3R1cmVNYXBwaW5nLm1hcChhY3RlLmNvZGVBY3RlKVxuICB9XG5cbiAgYWRkKGFjdGU6IGFueSkge1xuICAgIHRoaXMuY29kZXMuYWRkKGFjdGUuY29kZUFjdGUpXG5cbiAgICBjb25zdCB0eXBlID0gTGVjdHVyZU1hcHBpbmcuZ2V0VHlwZShhY3RlKVxuXG4gICAgaWYgKCEoYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgaW4gdGhpcy5saWJlbGxlKSlcbiAgICAgIHRoaXMubGliZWxsZVthY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZV0gPSBuZXcgU2V0KClcbiAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdLmFkZCh0eXBlKVxuICB9XG5cbiAgcmVtYXAoYWN0ZTogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgYWN0ZS5jb2RlQWN0ZSA9IGNvZGVBY3RlXG5cbiAgICBsZXQgdHlwZXMgPSB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdXG4gICAgaWYgKCEodHlwZXMuaGFzKFwiU05cIikgJiYgdHlwZXMuaGFzKFwiQU5cIikpKSB7XG4gICAgICBpZiAodHlwZXMuaGFzKFwiU05cIikpIGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlICs9IFwiIChTw6luYXQpXCJcbiAgICAgIGVsc2UgaWYgKHR5cGVzLmhhcyhcIkFOXCIpKVxuICAgICAgICBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoQXNzZW1ibMOpZSBOYXRpb25hbGUpXCJcbiAgICB9XG4gIH1cblxuICBtZXJnZUNvZGVzKGNvZGVzOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IGMgb2YgQXJyYXkuZnJvbSh0aGlzLmNvZGVzKSkgY29kZXMuYWRkKGMpXG4gIH1cblxuICBwcmludEFuY2hvcnMoKSB7XG4gICAgZm9yIChjb25zdCBjb2RlIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvbnNvbGUubG9nKGAuLiBfJHtjb2RlfTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5jb2Rlcykuam9pbihcIixcIilcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGVyIHtcbiAgbWFwcGluZzogYW55ID0ge31cblxuICBoYXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiBjb2RlQWN0ZSBpbiB0aGlzLm1hcHBpbmdcbiAgfVxuXG4gIGNvbGxlY3QoYWN0ZTogYW55KSB7XG4gICAgY29uc3QgY29kZUFjdGUgPSBMZWN0dXJlTWFwcGluZy5nZXRDb2RlQWN0ZShhY3RlKVxuICAgIGlmIChjb2RlQWN0ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgIGxldCBsZWN0dXJlcyA9IHRoaXMubWFwcGluZ1xuICAgICAgaWYgKCEoY29kZUFjdGUgaW4gbGVjdHVyZXMpKSBsZWN0dXJlc1tjb2RlQWN0ZV0gPSBuZXcgTGVjdHVyZU1hcHBpbmcoKVxuICAgICAgbGVjdHVyZXNbY29kZUFjdGVdLmFkZChhY3RlKVxuICAgIH1cbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnJlbWFwKGFjdGUsIGNvZGVBY3RlKVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55LCBjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5tZXJnZUNvZGVzKGNvZGVzKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLnByaW50QW5jaG9ycygpXG4gIH1cblxuICBnZXRDb2Rlcyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0uZ2V0Q29kZXMoKVxuICB9XG59XG5cbmNsYXNzIEFjdGVzRG9jdW1lbnRhdGlvbiB7XG4gIHZlcmJvc2U6IGJvb2xlYW5cbiAgc2FuaXR5Q2hlY2tzOiBib29sZWFuXG4gIGxlY3R1cmVNYXBwZXI6IGFueSA9IG5ldyBMZWN0dXJlTWFwcGVyKClcbiAgcmVtYXBwZWRQcm9jZWR1cmVzOiBhbnkgPSB7fVxuICBhbmNob3JzUHJpbnRlZDogYW55ID0ge31cbiAgYW5jaG9yczogYW55ID0gbmV3IFNldCgpXG4gIGNvZGVzOiBhbnkgPSB7fVxuICBwcm9jZWR1cmVzOiBhbnkgPSBudWxsXG4gIGNvZGUycGF0dGVybjogYW55ID0gbmV3IENvZGUyUGF0dGVybihudWxsLCB7XG4gICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeKCgoL2xlY3R1cmUvKSspfCgoL2xlY3R1cmUvKSsvQ01QLygvbGVjdHVyZS8pKikpKC9DQy8pPygvUFJPTS8pPygvQU4tQVBQTEkvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9ERVBPVC8pPygvRFBUTEVUVFJFQ1QvKT8oL0VUSS8pPygvQVZDRS8pPygvREdWVC8pPygvQUNJTi8pPygvTU9USU9OLykqKC9QUk9DQUNDLyk/KC9DT00vKT8oKC9ERUJBVFMvKSspPygvUlRSSU5JLyk/JFwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvfC9BVklTLykrJFwiLCB7XG4gICAgICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUFWSVNcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgXCJsZWN0dXJlLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgICBcIl4oL1NFQU5DRS8pKigoL01PVElPTi8pPygvTU9USU9OLVZPVEUvKSspPygvREVDLyk/JFwiLFxuICAgICAgICAgICAgICB7fSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgQ01QOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvfC9TQUlTSUUvKXsxLDJ9KC9DT00vKT8oL0RFQy8pPygvREVCQVRTLUFOLy9ERUJBVFMtU04vKT9cIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcIkNNUC1DT01cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9OT01JTi8pPygvUkFQUE9SVC1BTi98L1JBUFBPUlQtU04vKXsyfSRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLUFOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgICAgXCJDTVAtREVCQVRTLVNOXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL0RFQy8pPyRcIiwge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLykrKC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgICAgIFBST006IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9QVUIvKT8kXCIsIHt9KSxcbiAgICAgICAgXCJBTi1BUFBMSVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiQWxsb2N1dGlvbiBkdSBQcsOpc2lkZW50IGRlIGwnQXNzZW1ibMOpZSBuYXRpb25hbGVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXi9BTjIxLyRcIixcbiAgICAgIHtcbiAgICAgICAgQU4yMTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FQQU4vKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIlLDqXNvbHV0aW9uIEFydGljbGUgMzQtMVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSsoL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgUsOpc29sdXRpb246IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTkxVTkkvKT8oL0NDLyk/JFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvfC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DQUUvKT8oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuQ29tRm9uZCgpLFxuICAgICAgICAgIFwiQU5MVU5JLUNPTS1DQUVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pPygvUkVVTklPTi8pPygvUkFQUE9SVC8pPygvREVDLyk/JFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgICAgQ0M6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TQUlTSUUvKT8oL0NPTkNMVVNJT04vKT8kXCIsIHt9KSxcbiAgICB9KSxcbiAgICBcIlJhcHBvcnQgZCdpbmZvcm1hdGlvbiBzYW5zIG1pc3Npb25cIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigvQU4yMC8pPygvRVUvKT8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9SQVBQT1JULyk/JFwiLCB7fSksXG4gICAgICAgIEVVOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVDLykrJFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNaXNzaW9uIGQnaW5mb3JtYXRpb25cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9NSVNJTkYvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLU1JU0lORlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkNvbW1pc3Npb24gZCdlbnF1w6p0ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU4yMC8pPyRcIiwge1xuICAgICAgQU4yMDogbmV3IENvZGUyUGF0dGVybihcIl4oL0NPTUVOUS8pPyRcIiwge1xuICAgICAgICBcIkFOMjAtQ09NRU5RXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgXCJeKC9DUkVBLyk/KC9OT01JTi8pPygvUkFQUE9SVC8pPyRcIixcbiAgICAgICAgICB7fSxcbiAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiRW5nYWdlbWVudCBkZSBsYSByZXNwb25zYWJpbGl0w6kgZ291dmVybmVtZW50YWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKCgoL01PVElPTi8pKi9ERUJBVFMvKXwoL0RHVlQvKSl7MSwyfSRcIiwge1xuICAgICAgICAgIFwiQU4yMS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvTU9USU9OLVZPVEUvKSokXCIsIHt9KSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJNb3Rpb24gcsOpZsOpcmVuZGFpcmVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL2xlY3R1cmUvKSskXCIsIHtcbiAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8kXCIsIHtcbiAgICAgICAgXCJsZWN0dXJlLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvRk9ORC8pPyRcIiwge1xuICAgICAgICAgIFwibGVjdHVyZS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pPyRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgSW1tdW5pdMOpOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLykrJFwiLCB7XG4gICAgICBBTkxVTkk6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvQ09NLyk/KC9ERUJBVFMvKT8oL1JUUklOSS8pPyRcIiwge1xuICAgICAgICBcIkFOTFVOSS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcIkFOTFVOSS1DT00tRk9ORFwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgICAgXCJeKC9TQUlTSUUvKT8oL05PTUlOLykqKC9SQVBQT1JULykqJFwiLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLyk/KC9ERUMvKSRcIiwge30pLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJSZXNwb25zYWJpbGl0w6kgcMOpbmFsZSBkdSBwcsOpc2lkZW50IGRlIGxhIHLDqXB1YmxpcXVlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vbGVjdHVyZS8kXCIsXG4gICAgICB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPygvUkVDQlVSRUFVLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJQcm9wb3NpdGlvbiBkZSBsb2kgcHLDqXNlbnTDqWUgZW4gYXBwbGljYXRpb24gZGUgbCdhcnRpY2xlIDExIGRlIGxhIENvbnN0aXR1dGlvblwiOlxuICAgICAgbmV3IENvZGUyUGF0dGVybihcIl4vbGVjdHVyZS8kXCIsIHtcbiAgICAgICAgbGVjdHVyZTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFUE9ULyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgfSlcblxuICBjb25zdHJ1Y3RvcihzYW5pdHlDaGVja3M6IGJvb2xlYW4sIHZlcmJvc2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHRoaXMudmVyYm9zZSA9IHZlcmJvc2VcbiAgICB0aGlzLnNhbml0eUNoZWNrcyA9IHNhbml0eUNoZWNrc1xuICAgIHRoaXMucHJvY2VkdXJlcyA9IHt9XG4gICAgdGhpcy5jb2RlMnBhdHRlcm4uX21hdGNoX2NvdW50XysrXG4gIH1cblxuICB3YWxrRmlsZXMoZGF0YTogc3RyaW5nW10sIGFjdGlvbjogYW55KSB7XG4gICAgZm9yIChjb25zdCBmaWxlIG9mIGdldEZpbGVzKGRhdGEpKSB7XG4gICAgICBjb25zdCBkb3NzaWVyID0gbG9hZChmaWxlKVxuICAgICAgbGV0IHByb2NlZHVyZTogc3RyaW5nID0gdGhpcy5yZW1hcFByb2NlZHVyZShcbiAgICAgICAgZG9zc2llci5wcm9jZWR1cmVQYXJsZW1lbnRhaXJlLmxpYmVsbGUsXG4gICAgICApXG4gICAgICBpZiAoIShwcm9jZWR1cmUgaW4gdGhpcy5wcm9jZWR1cmVzKSkgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSB7fVxuICAgICAgYWN0aW9uKFxuICAgICAgICB0aGlzLnByb2NlZHVyZXNbcHJvY2VkdXJlXSxcbiAgICAgICAgZG9zc2llci5hY3Rlc0xlZ2lzbGF0aWZzLFxuICAgICAgICB0aGlzLmNvZGUycGF0dGVybltwcm9jZWR1cmVdLFxuICAgICAgICBudWxsLFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGNvbGxlY3RGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChfYWN0ZXM6IGFueSwgYWN0ZXNMZWdpc2xhdGlmczogYW55LCBfYzJwOiBhbnksIF9wYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmNvbGxlY3QoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICAgIH0sXG4gICAgKVxuICB9XG5cbiAgcHJvY2Vzc0ZpbGVzKGRhdGE6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWxrRmlsZXMoXG4gICAgICBkYXRhLFxuICAgICAgKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgIHRoaXMubWVyZ2UoYWN0ZXMsIGFjdGVzTGVnaXNsYXRpZnMsIGMycCwgcGFyZW50KVxuICAgICAgfSxcbiAgICApXG4gICAgaWYgKHRoaXMuc2FuaXR5Q2hlY2tzKSB0aGlzLnZhbGlkYXRlKClcbiAgfVxuXG4gIHJlbWFwQWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLnJlbWFwKGFjdGUpXG5cbiAgICAgIC8vIENDLVNBSVNJRS0gc3VmZml4IGRvZXMgbm90IGltcGx5IGEgaGllcmFyY2h5XG4gICAgICBhY3RlLmNvZGVBY3RlID0gYWN0ZS5jb2RlQWN0ZS5yZXBsYWNlKC9eQ0MtU0FJU0lFLiovLCBcIkNDLVNBSVNJRVwiKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIGNvbGxlY3RBY3RlcyhhY3RlczogYW55KTogYW55IHtcbiAgICBsZXQgcmVzdWx0cyA9IFtdXG4gICAgZm9yIChjb25zdCBhY3RlIG9mIGFjdGVzKSB7XG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIuY29sbGVjdChhY3RlKVxuXG4gICAgICByZXN1bHRzLnB1c2goYWN0ZSlcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdHNcbiAgfVxuXG4gIHJlbWFwUHJvY2VkdXJlKHByb2NlZHVyZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBtZXJnZV9wcm9jZWR1cmVzOiBNYXA8c3RyaW5nLCBhbnk+ID0gbmV3IE1hcChbXG4gICAgICBbXCJQcm9wb3NpdGlvbiBkZSBsb2kgb3JkaW5haXJlXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSByYXRpZmljYXRpb24gZGVzIHRyYWl0w6lzIGV0IGNvbnZlbnRpb25zXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIG9yZ2FuaXF1ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBvdSBwcm9wb3NpdGlvbiBkZSBsb2kgY29uc3RpdHV0aW9ubmVsbGVcIixcbiAgICAgICAgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiLFxuICAgICAgXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgZGUgbCdhbm7DqWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZXMgcmVjdGlmaWNhdGl2ZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1xuICAgICAgICBcIlByb2pldCBkZSBsb2kgZGUgZmluYW5jZW1lbnQgZGUgbGEgc8OpY3VyaXTDqSBzb2NpYWxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgXSlcbiAgICBpZiAobWVyZ2VfcHJvY2VkdXJlcy5oYXMocHJvY2VkdXJlKSkge1xuICAgICAgdGhpcy5yZW1hcHBlZFByb2NlZHVyZXNbcHJvY2VkdXJlXSA9IG51bGxcbiAgICAgIHJldHVybiBtZXJnZV9wcm9jZWR1cmVzLmdldChwcm9jZWR1cmUpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwcm9jZWR1cmVcbiAgICB9XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGNvZGVBY3RlcyBpbiB0aGUgc2FtZSBvcmRlciB0aGV5IGFwcGVhciBpbiB0aGUgcmVnZXhwXG4gIG9yZGVyZWRDb2Rlcyhjb2RlczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiBTZXQ8c3RyaW5nPiB7XG4gICAgY29kZXMgPSBuZXcgU2V0KGNvZGVzKVxuICAgIGlmICghdGhpcy5zYW5pdHlDaGVja3MpIHJldHVybiBjb2Rlc1xuICAgIGxldCBvcmRlcmVkID0gYzJwW1wiX3BhdHRlcm5fXCJdLm1hdGNoKG5ldyBSZWdFeHAoXCIvLio/L1wiLCBcImdcIikpXG4gICAgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IHgucmVwbGFjZShuZXcgUmVnRXhwKFwiLyguKikvXCIpLCBcIiQxXCIpKVxuICAgIGlmIChwYXJlbnQgIT0gbnVsbCkgb3JkZXJlZCA9IG9yZGVyZWQubWFwKCh4OiBzdHJpbmcpID0+IGAke3BhcmVudH0tJHt4fWApXG4gICAgb3JkZXJlZCA9IG5ldyBTZXQob3JkZXJlZClcbiAgICBhc3NlcnQoZXFTZXQob3JkZXJlZCwgY29kZXMpLCBgJHtbLi4ub3JkZXJlZF19ICE9ICR7Wy4uLmNvZGVzXX1gKVxuICAgIHJldHVybiBvcmRlcmVkXG4gIH1cblxuICB2YWxpZGF0ZUNocm9ub2xvZ3koYWN0ZXNMZWdpc2xhdGlmczogYW55LCBjMnA6IGFueSwgcGFyZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwYXR0ZXJuID0gYzJwW1wiX3BhdHRlcm5fXCJdXG4gICAgY29uc3Qgc2VxdWVuY2UgPSBhY3Rlc0xlZ2lzbGF0aWZzXG4gICAgICAubWFwKCh4OiBhbnkpID0+IGAvJHt4LmNvZGVBY3RlfS9gLnJlcGxhY2UoYC8ke3BhcmVudH0tYCwgXCIvXCIpKVxuICAgICAgLmpvaW4oXCJcIilcbiAgICBhc3NlcnQoXG4gICAgICBzZXF1ZW5jZS5tYXRjaChuZXcgUmVnRXhwKHBhdHRlcm4pKSxcbiAgICAgIGAke3BhdHRlcm59IGRvZXMgbm90IG1hdGNoICR7c2VxdWVuY2V9YCxcbiAgICApXG4gICAgYzJwLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgbWVyZ2VBY3RlKGFjdGVzOiBhbnksIGFjdGU6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGNvZGU6IHN0cmluZyA9IGFjdGUuY29kZUFjdGVcbiAgICBsZXQgc2hvcnRDb2RlOiBzdHJpbmcgPSBjb2RlLnJlcGxhY2UobmV3IFJlZ0V4cChgXiR7cGFyZW50fS1gKSwgXCJcIilcbiAgICBzaG9ydENvZGUgPSBzaG9ydENvZGUucmVwbGFjZSgvLShBTnxTTikkLywgXCJcIilcbiAgICB0aGlzLmNvZGVzW3Nob3J0Q29kZV0gPSBudWxsXG4gICAgbGV0IG5hbWU6IHN0cmluZyA9IGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXG4gICAgaWYgKCEoY29kZSBpbiBhY3RlcykpIHtcbiAgICAgIGFjdGVzW2NvZGVdID0ge1xuICAgICAgICB0eXBlOiBhY3RlLnhzaVR5cGUsXG4gICAgICAgIG5hbWU6IG5ldyBTZXQoW25hbWVdKSxcbiAgICAgICAgc2hvcnRDb2RlOiBzaG9ydENvZGUsXG4gICAgICAgIGFjdGVzOiB7fSxcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgYWN0ZXNbY29kZV0ubmFtZS5hZGQobmFtZSlcbiAgICB9XG4gICAgaWYgKFwiYWN0ZXNMZWdpc2xhdGlmc1wiIGluIGFjdGUpXG4gICAgICB0aGlzLm1lcmdlKGFjdGVzW2NvZGVdLmFjdGVzLCBhY3RlLmFjdGVzTGVnaXNsYXRpZnMsIGMycFtjb2RlXSwgY29kZSlcbiAgfVxuXG4gIG1lcmdlKGFjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgbCA9IHRoaXMucmVtYXBBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKVxuICAgIHRoaXMudmFsaWRhdGVDaHJvbm9sb2d5KGwsIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBsKSB0aGlzLm1lcmdlQWN0ZShhY3RlcywgYWN0ZSwgYzJwLCBwYXJlbnQpXG4gIH1cblxuICBjb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnM6IGFueSk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgYWN0ZSBvZiB0aGlzLmNvbGxlY3RBY3RlcyhhY3Rlc0xlZ2lzbGF0aWZzKSlcbiAgICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKSB0aGlzLmNvbGxlY3QoYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzKVxuICB9XG5cbiAgdmFsaWRhdGVMZXZlbChjMnA6IGFueSwgcGF0aDogYW55KSB7XG4gICAgYXNzZXJ0KGMycC5fbWF0Y2hfY291bnRfID4gMCwgYCR7cGF0aH0gaXMgbmV2ZXIgdXNlZGApXG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYzJwKSBhcyBbc3RyaW5nLCBhbnldW10pIHtcbiAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJDb2RlMlBhdHRlcm5cIilcbiAgICAgICAgdGhpcy52YWxpZGF0ZUxldmVsKHZhbHVlLCBwYXRoLmNvbmNhdChba2V5XSkpXG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoKSB7XG4gICAgdGhpcy52YWxpZGF0ZUxldmVsKHRoaXMuY29kZTJwYXR0ZXJuLCBbXSlcbiAgfVxuXG4gIHByaW50RW50cnkoc2VjdGlvbnM6IHN0cmluZywgZW50cnk6IHN0cmluZywgY29kZXM6IHN0cmluZykge1xuICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7ZW50cnl9XFxgX19gXG4gICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgY29uc3QgdW5kZXJsaW5lID0gbmV3IEFycmF5KHRpdGxlLmxlbmd0aCArIDEpLmpvaW4oc2VjdGlvbnNbMF0pXG4gICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgIGNvbnNvbGUubG9nKGNvZGVzKVxuICB9XG5cbiAgYWRkQW5jaG9ycyhrZXk6IHN0cmluZykge1xuICAgIGlmIChrZXkgaW4gdGhpcy5hbmNob3JzUHJpbnRlZCkgcmV0dXJuXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSlcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5tZXJnZUNvZGVzKHRoaXMuYW5jaG9ycywga2V5KVxuICAgIGVsc2UgdGhpcy5hbmNob3JzLmFkZChrZXkpXG4gIH1cblxuICBwcmludEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWRba2V5XSA9IG51bGxcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSB0aGlzLmxlY3R1cmVNYXBwZXIucHJpbnRBbmNob3JzKGtleSlcbiAgICBlbHNlIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9OmApXG4gIH1cblxuICBnZXRDb2RlcyhrZXk6IHN0cmluZywgc2hvcnRDb2RlOiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVybiBgY2YgXFxcXCoke3Nob3J0Q29kZX1cXFxcKmBcbiAgICBpZiAodGhpcy5sZWN0dXJlTWFwcGVyLmhhcyhrZXkpKSByZXR1cm4gdGhpcy5sZWN0dXJlTWFwcGVyLmdldENvZGVzKGtleSlcbiAgICBlbHNlIHJldHVybiBrZXlcbiAgfVxuXG4gIHJlbmFtZUNNUChrZXk6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleS5zdGFydHNXaXRoKFwiQ01QXCIpKSB7XG4gICAgICBpZiAoa2V5LmVuZHNXaXRoKFwiLVNOXCIpKSByZXR1cm4gYCR7bmFtZX0gKFPDqW5hdClgXG4gICAgICBlbHNlIGlmIChrZXkuZW5kc1dpdGgoXCItQU5cIikpIHJldHVybiBgJHtuYW1lfSAoQXNzZW1ibMOpZSBOYXRpb25hbGUpYFxuICAgICAgZWxzZSByZXR1cm4gbmFtZVxuICAgIH0gZWxzZSByZXR1cm4gbmFtZVxuICB9XG5cbiAgcHJpbnRMZXZlbChhY3RlczogYW55LCBzZWN0aW9uczogc3RyaW5nLCBjMnA6IGFueSwgcGFyZW50OiBhbnkpIHtcbiAgICBjb25zdCBrZXlzOiBTZXQ8c3RyaW5nPiA9IHRoaXMub3JkZXJlZENvZGVzKE9iamVjdC5rZXlzKGFjdGVzKSwgYzJwLCBwYXJlbnQpXG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3QgdmFsdWUgPSBhY3Rlc1trZXldXG4gICAgICBsZXQgbmFtZSA9IEFycmF5LmZyb20odmFsdWUubmFtZSkuam9pbihcIiwgXCIpXG4gICAgICBuYW1lID0gdGhpcy5yZW5hbWVDTVAoa2V5LCBuYW1lKVxuICAgICAgY29uc3QgY29kZXMgPSB0aGlzLmdldENvZGVzKGtleSwgdmFsdWUuc2hvcnRDb2RlKVxuICAgICAgdGhpcy5hZGRBbmNob3JzKGtleSlcbiAgICAgIHRoaXMucHJpbnRBbmNob3JzKGtleSlcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICB0aGlzLnByaW50RW50cnkoc2VjdGlvbnMsIGAke25hbWV9IDwke3ZhbHVlLnNob3J0Q29kZX1UT0NfPmAsIGNvZGVzKVxuICAgICAgY29uc29sZS5sb2coXCJcIilcbiAgICAgIGlmIChPYmplY3Qua2V5cyh2YWx1ZS5hY3RlcykubGVuZ3RoID4gMClcbiAgICAgICAgdGhpcy5wcmludExldmVsKHZhbHVlLmFjdGVzLCBzZWN0aW9ucy5zdWJzdHJpbmcoMSksIGMycFtrZXldLCBrZXkpXG4gICAgfVxuICB9XG5cbiAgcHJpbnRDb2RlcygpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLmNvZGVzKSlcbiAgICAgIGNvbnNvbGUubG9nKGAuLiBfJHtrZXl9VE9DOiBodHRwOi8vYClcbiAgfVxuXG4gIHByaW50QW5jaG9yc0luZGV4KCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuYW5jaG9ycykpXG4gICAgICBjb25zb2xlLmxvZyhgKiA6cmVmOlxcYCR7Y29kZX0gPCR7Y29kZX0+XFxgYClcbiAgfVxuXG4gIGdldEFnZ3JlZ2F0ZWQocHJvY2VkdXJlOiBzdHJpbmcpIHtcbiAgICBpZiAocHJvY2VkdXJlID09IFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIikge1xuICAgICAgY29uc3QgcmVtYXBwZWQgPSBPYmplY3Qua2V5cyh0aGlzLnJlbWFwcGVkUHJvY2VkdXJlcykuam9pbihcIiwgXCIpXG4gICAgICByZXR1cm4gYCAoYWdyw6lnYXRpb24gZGUgJHtyZW1hcHBlZH0pYFxuICAgIH0gZWxzZSByZXR1cm4gXCJcIlxuICB9XG5cbiAgcHJpbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmNob3JzUHJpbnRlZCA9IHt9XG4gICAgZm9yIChjb25zdCBba2V5LCBhY3Rlc10gb2YgT2JqZWN0LmVudHJpZXModGhpcy5wcm9jZWR1cmVzKSBhcyBbXG4gICAgICBzdHJpbmcsXG4gICAgICBhbnksXG4gICAgXVtdKSB7XG4gICAgICBjb25zdCBjb2RlID0ga2V5LnJlcGxhY2UoLyArL2csIFwiX1wiKVxuICAgICAgdGhpcy5jb2Rlc1tjb2RlXSA9IG51bGxcbiAgICAgIGNvbnN0IGFnZ3JlZ2F0ZWQgPSB0aGlzLmdldEFnZ3JlZ2F0ZWQoa2V5KVxuICAgICAgY29uc3QgdGl0bGUgPSBgXFxgJHtrZXl9IDwke2NvZGV9VE9DXz5cXGBfXyR7YWdncmVnYXRlZH1gXG4gICAgICBjb25zb2xlLmxvZyh0aXRsZSlcbiAgICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKFwiPVwiKVxuICAgICAgY29uc29sZS5sb2codW5kZXJsaW5lKVxuICAgICAgdGhpcy5wcmludExldmVsKGFjdGVzLCBcIi1+LidcIiwgdGhpcy5jb2RlMnBhdHRlcm5ba2V5XSwgbnVsbClcbiAgICB9XG4gICAgdGhpcy5wcmludENvZGVzKClcbiAgICB0aGlzLnByaW50QW5jaG9yc0luZGV4KClcbiAgfVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHJldHVybiAxXG4gIGxldCBkb2MgPSBuZXcgQWN0ZXNEb2N1bWVudGF0aW9uKFxuICAgICFvcHRpb25zW1wibm8tc2FuaXR5LWNoZWNrc1wiXSxcbiAgICBvcHRpb25zLnZlcmJvc2UsXG4gIClcbiAgZG9jLmNvbGxlY3RGaWxlcyhvcHRpb25zLmRhdGEpXG4gIGRvYy5wcm9jZXNzRmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJpbnQoKVxuICByZXR1cm4gMFxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJkb2N1bWVudF9kb3NzaWVyc19sZWdpc2xhdGlmcy50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdfQ==
494
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJjb21tYW5kTGluZVVzYWdlIiwiYXNzZXJ0IiwibG9hZCIsImdldEZpbGVzIiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImRlc2NyaXB0aW9uIiwiZGVmYXVsdE9wdGlvbiIsIm11bHRpcGxlIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwic2VjdGlvbnMiLCJoZWFkZXIiLCJjb250ZW50Iiwib3B0aW9uTGlzdCIsIm9wdGlvbnMiLCJjb25zb2xlIiwiZXJyb3IiLCJoZWxwIiwidXNhZ2UiLCJ3YXJuIiwiZXFTZXQiLCJhcyIsImJzIiwic2l6ZSIsImEiLCJoYXMiLCJDb2RlMlBhdHRlcm4iLCJjb25zdHJ1Y3RvciIsInBhdHRlcm4iLCJjaGlsZHJlbiIsIl9wYXR0ZXJuXyIsIl9tYXRjaF9jb3VudF8iLCJPYmplY3QiLCJhc3NpZ24iLCJDb2RlMlBhdHRlcm5Db21Gb25kIiwiTGVjdHVyZU1hcHBpbmciLCJTZXQiLCJpc0xlY3R1cmUiLCJhY3RlIiwiY29kZUFjdGUiLCJtYXRjaCIsImNvZGVzX2xlY3R1cmVfcmVnZXhwIiwiZ2V0VHlwZSIsIkVycm9yIiwibWFwIiwicmVwbGFjZSIsImdldENvZGVBY3RlIiwiYWRkIiwiY29kZXMiLCJsaWJlbGxlQWN0ZSIsIm5vbUNhbm9uaXF1ZSIsImxpYmVsbGUiLCJyZW1hcCIsInR5cGVzIiwibWVyZ2VDb2RlcyIsImMiLCJBcnJheSIsImZyb20iLCJwcmludEFuY2hvcnMiLCJjb2RlIiwibG9nIiwiZ2V0Q29kZXMiLCJqb2luIiwiUmVnRXhwIiwiY29kZXNfbGVjdHVyZSIsIkxlY3R1cmVNYXBwZXIiLCJtYXBwaW5nIiwiY29sbGVjdCIsInVuZGVmaW5lZCIsImxlY3R1cmVzIiwiQWN0ZXNEb2N1bWVudGF0aW9uIiwic2FuaXR5Q2hlY2tzIiwidmVyYm9zZSIsImxlY3R1cmUiLCJDTVAiLCJDQyIsIlBST00iLCJBTjIxIiwiQU5MVU5JIiwiUsOpc29sdXRpb24iLCJBTjIwIiwiRVUiLCJJbW11bml0w6kiLCJwcm9jZWR1cmVzIiwiY29kZTJwYXR0ZXJuIiwid2Fsa0ZpbGVzIiwiZGF0YSIsImFjdGlvbiIsImZpbGUiLCJkb3NzaWVyIiwicHJvY2VkdXJlIiwicmVtYXBQcm9jZWR1cmUiLCJwcm9jZWR1cmVQYXJsZW1lbnRhaXJlIiwiYWN0ZXNMZWdpc2xhdGlmcyIsImNvbGxlY3RGaWxlcyIsIl9hY3RlcyIsIl9jMnAiLCJfcGFyZW50IiwicHJvY2Vzc0ZpbGVzIiwiYWN0ZXMiLCJjMnAiLCJwYXJlbnQiLCJtZXJnZSIsInZhbGlkYXRlIiwicmVtYXBBY3RlcyIsInJlc3VsdHMiLCJsZWN0dXJlTWFwcGVyIiwicHVzaCIsImNvbGxlY3RBY3RlcyIsIm1lcmdlX3Byb2NlZHVyZXMiLCJNYXAiLCJyZW1hcHBlZFByb2NlZHVyZXMiLCJnZXQiLCJvcmRlcmVkQ29kZXMiLCJvcmRlcmVkIiwieCIsInZhbGlkYXRlQ2hyb25vbG9neSIsInNlcXVlbmNlIiwibWVyZ2VBY3RlIiwic2hvcnRDb2RlIiwieHNpVHlwZSIsImwiLCJ2YWxpZGF0ZUxldmVsIiwicGF0aCIsImtleSIsInZhbHVlIiwiZW50cmllcyIsImNvbmNhdCIsInByaW50RW50cnkiLCJlbnRyeSIsInRpdGxlIiwidW5kZXJsaW5lIiwibGVuZ3RoIiwiYWRkQW5jaG9ycyIsImFuY2hvcnNQcmludGVkIiwiYW5jaG9ycyIsInJlbmFtZUNNUCIsInN0YXJ0c1dpdGgiLCJlbmRzV2l0aCIsInByaW50TGV2ZWwiLCJrZXlzIiwic3Vic3RyaW5nIiwicHJpbnRDb2RlcyIsInByaW50QW5jaG9yc0luZGV4IiwiZ2V0QWdncmVnYXRlZCIsInJlbWFwcGVkIiwicHJpbnQiLCJhZ2dyZWdhdGVkIiwibWFpbiIsImRvYyIsInByb2Nlc3MiLCJleGl0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lVXNhZ2UgZnJvbSBcImNvbW1hbmQtbGluZS11c2FnZVwiXG5pbXBvcnQgYXNzZXJ0IGZyb20gXCJhc3NlcnRcIlxuaW1wb3J0IHsgbG9hZCwgZ2V0RmlsZXMgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBcInBhdGhuYW1lIHRvIGEgSlNPTiBmaWxlIG9yIGEgZ2xvYiBwYXR0ZXJuIHRvIEpTT04gZmlsZXNcIixcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgIG5hbWU6IFwiZGF0YVwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJuby1zYW5pdHktY2hlY2tzXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgICAgZGVzY3JpcHRpb246IFwiRG8gbm90IHBlcmZvcm0gc2FuaXR5IGNoZWNrcy5cIixcbiAgICB9LFxuICAgIHtcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImluY3JlYXNlIHZlcmJvc2l0eVwiLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJoZWxwXCIsXG4gICAgICBkZXNjcmlwdGlvbjogXCJQcmludCB0aGlzIHVzYWdlIGd1aWRlLlwiLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgc2VjdGlvbnMgPSBbXG4gICAge1xuICAgICAgaGVhZGVyOiBcIkFpZGUgw6AgbGEgZG9jdW1lbnRhdGlvbiBkdSBkb3NzaWVyIGzDqWdpc2xhdGlmXCIsXG4gICAgICBjb250ZW50OiBcIkfDqW7DqHJlIHVuZSBoacOpcmFyY2hpZSBkZXMgYWN0ZXMgbMOpZ2lzbGF0aWZzXCIsXG4gICAgfSxcbiAgICB7XG4gICAgICBoZWFkZXI6IFwiT3B0aW9uc1wiLFxuICAgICAgb3B0aW9uTGlzdDogb3B0aW9uc0RlZmluaXRpb25zLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICBpZiAoIShcImhlbHBcIiBpbiBvcHRpb25zKSAmJiAhKFwiZGF0YVwiIGluIG9wdGlvbnMpKSB7XG4gICAgY29uc29sZS5lcnJvcihcIi0tZGF0YSBpcyBtYW5kYXRvcnlcIilcbiAgICBvcHRpb25zLmhlbHAgPSB0cnVlXG4gIH1cbiAgaWYgKFwiaGVscFwiIGluIG9wdGlvbnMpIHtcbiAgICBjb25zdCB1c2FnZSA9IGNvbW1hbmRMaW5lVXNhZ2Uoc2VjdGlvbnMpXG4gICAgY29uc29sZS53YXJuKHVzYWdlKVxuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gZXFTZXQoYXM6IFNldDxzdHJpbmc+LCBiczogU2V0PHN0cmluZz4pOiBib29sZWFuIHtcbiAgaWYgKGFzLnNpemUgIT09IGJzLnNpemUpIHJldHVybiBmYWxzZVxuICBmb3IgKHZhciBhIG9mIGFzKSBpZiAoIWJzLmhhcyhhKSkgcmV0dXJuIGZhbHNlXG4gIHJldHVybiB0cnVlXG59XG5cbmNsYXNzIENvZGUyUGF0dGVybiB7XG4gIF9wYXR0ZXJuXzogYW55XG4gIF9tYXRjaF9jb3VudF86IG51bWJlclxuICBjb25zdHJ1Y3RvcihwYXR0ZXJuOiBhbnksIGNoaWxkcmVuOiBhbnkpIHtcbiAgICB0aGlzLl9wYXR0ZXJuXyA9IHBhdHRlcm5cbiAgICB0aGlzLl9tYXRjaF9jb3VudF8gPSAwXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBjaGlsZHJlbilcbiAgfVxufVxuXG5jbGFzcyBDb2RlMlBhdHRlcm5Db21Gb25kIGV4dGVuZHMgQ29kZTJQYXR0ZXJuIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJeL1NBSVNJRS8oL05PTUlOLykqKC9SRVVOSU9OLykqKC9SQVBQT1JULykqJFwiLCB7fSlcbiAgfVxufVxuXG5jbGFzcyBMZWN0dXJlTWFwcGluZyB7XG4gIGxpYmVsbGU6IGFueSA9IHt9XG4gIGNvZGVzOiBhbnkgPSBuZXcgU2V0KClcblxuICBzdGF0aWMgY29kZXNfbGVjdHVyZTogc3RyaW5nW10gPSBbXG4gICAgXCJBTjFcIixcbiAgICBcIlNOMVwiLFxuICAgIFwiQU5OTEVDXCIsXG4gICAgXCJTTk5MRUNcIixcbiAgICBcIkFOTERFRlwiLFxuICAgIFwiQU4yXCIsXG4gICAgXCJTTjJcIixcbiAgICBcIlNOM1wiLFxuICBdXG4gIHN0YXRpYyBjb2Rlc19sZWN0dXJlX3JlZ2V4cDogYW55ID0gbmV3IFJlZ0V4cChcbiAgICBcIl4oPzpcIiArIExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmUuam9pbihcInxcIikgKyBcIikoLS4qKT8kXCIsXG4gIClcblxuICBzdGF0aWMgaXNMZWN0dXJlKGFjdGU6IGFueSkge1xuICAgIHJldHVybiBhY3RlLmNvZGVBY3RlLm1hdGNoKExlY3R1cmVNYXBwaW5nLmNvZGVzX2xlY3R1cmVfcmVnZXhwKVxuICB9XG5cbiAgc3RhdGljIGdldFR5cGUoYWN0ZTogYW55KSB7XG4gICAgaWYgKGFjdGUuY29kZUFjdGUubWF0Y2goL15BTi8pKSByZXR1cm4gXCJBTlwiXG4gICAgZWxzZSBpZiAoYWN0ZS5jb2RlQWN0ZS5tYXRjaCgvXlNOLykpIHJldHVybiBcIlNOXCJcbiAgICBlbHNlIHRocm93IEVycm9yKGAke2FjdGUuY29kZUFjdGV9IGRvZXMgbm90IHN0YXJ0IHdpdGggQU4gb3IgU05gKVxuICB9XG5cbiAgc3RhdGljIG1hcChjb2RlQWN0ZTogYW55KSB7XG4gICAgcmV0dXJuIGNvZGVBY3RlLnJlcGxhY2UoTGVjdHVyZU1hcHBpbmcuY29kZXNfbGVjdHVyZV9yZWdleHAsIGBsZWN0dXJlJDFgKVxuICB9XG5cbiAgc3RhdGljIGdldENvZGVBY3RlKGFjdGU6IGFueSkge1xuICAgIGlmICghTGVjdHVyZU1hcHBpbmcuaXNMZWN0dXJlKGFjdGUpKSByZXR1cm5cblxuICAgIHJldHVybiBMZWN0dXJlTWFwcGluZy5tYXAoYWN0ZS5jb2RlQWN0ZSlcbiAgfVxuXG4gIGFkZChhY3RlOiBhbnkpIHtcbiAgICB0aGlzLmNvZGVzLmFkZChhY3RlLmNvZGVBY3RlKVxuXG4gICAgY29uc3QgdHlwZSA9IExlY3R1cmVNYXBwaW5nLmdldFR5cGUoYWN0ZSlcblxuICAgIGlmICghKGFjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlIGluIHRoaXMubGliZWxsZSkpXG4gICAgICB0aGlzLmxpYmVsbGVbYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWVdID0gbmV3IFNldCgpXG4gICAgdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXS5hZGQodHlwZSlcbiAgfVxuXG4gIHJlbWFwKGFjdGU6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIGFjdGUuY29kZUFjdGUgPSBjb2RlQWN0ZVxuXG4gICAgbGV0IHR5cGVzID0gdGhpcy5saWJlbGxlW2FjdGUubGliZWxsZUFjdGUubm9tQ2Fub25pcXVlXVxuICAgIGlmICghKHR5cGVzLmhhcyhcIlNOXCIpICYmIHR5cGVzLmhhcyhcIkFOXCIpKSkge1xuICAgICAgaWYgKHR5cGVzLmhhcyhcIlNOXCIpKSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZSArPSBcIiAoU8OpbmF0KVwiXG4gICAgICBlbHNlIGlmICh0eXBlcy5oYXMoXCJBTlwiKSlcbiAgICAgICAgYWN0ZS5saWJlbGxlQWN0ZS5ub21DYW5vbmlxdWUgKz0gXCIgKEFzc2VtYmzDqWUgTmF0aW9uYWxlKVwiXG4gICAgfVxuICB9XG5cbiAgbWVyZ2VDb2Rlcyhjb2RlczogYW55KSB7XG4gICAgZm9yIChjb25zdCBjIG9mIEFycmF5LmZyb20odGhpcy5jb2RlcykpIGNvZGVzLmFkZChjKVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKCkge1xuICAgIGZvciAoY29uc3QgY29kZSBvZiBBcnJheS5mcm9tKHRoaXMuY29kZXMpKSBjb25zb2xlLmxvZyhgLi4gXyR7Y29kZX06YClcbiAgfVxuXG4gIGdldENvZGVzKCkge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuY29kZXMpLmpvaW4oXCIsXCIpXG4gIH1cbn1cblxuY2xhc3MgTGVjdHVyZU1hcHBlciB7XG4gIG1hcHBpbmc6IGFueSA9IHt9XG5cbiAgaGFzKGNvZGVBY3RlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gY29kZUFjdGUgaW4gdGhpcy5tYXBwaW5nXG4gIH1cblxuICBjb2xsZWN0KGFjdGU6IGFueSkge1xuICAgIGNvbnN0IGNvZGVBY3RlID0gTGVjdHVyZU1hcHBpbmcuZ2V0Q29kZUFjdGUoYWN0ZSlcbiAgICBpZiAoY29kZUFjdGUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICBsZXQgbGVjdHVyZXMgPSB0aGlzLm1hcHBpbmdcbiAgICAgIGlmICghKGNvZGVBY3RlIGluIGxlY3R1cmVzKSkgbGVjdHVyZXNbY29kZUFjdGVdID0gbmV3IExlY3R1cmVNYXBwaW5nKClcbiAgICAgIGxlY3R1cmVzW2NvZGVBY3RlXS5hZGQoYWN0ZSlcbiAgICB9XG4gIH1cblxuICByZW1hcChhY3RlOiBhbnkpIHtcbiAgICBjb25zdCBjb2RlQWN0ZSA9IExlY3R1cmVNYXBwaW5nLmdldENvZGVBY3RlKGFjdGUpXG4gICAgaWYgKGNvZGVBY3RlICE9IHVuZGVmaW5lZCkgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5yZW1hcChhY3RlLCBjb2RlQWN0ZSlcbiAgfVxuXG4gIG1lcmdlQ29kZXMoY29kZXM6IGFueSwgY29kZUFjdGU6IHN0cmluZykge1xuICAgIHRoaXMubWFwcGluZ1tjb2RlQWN0ZV0ubWVyZ2VDb2Rlcyhjb2RlcylcbiAgfVxuXG4gIHByaW50QW5jaG9ycyhjb2RlQWN0ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tYXBwaW5nW2NvZGVBY3RlXS5wcmludEFuY2hvcnMoKVxuICB9XG5cbiAgZ2V0Q29kZXMoY29kZUFjdGU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLm1hcHBpbmdbY29kZUFjdGVdLmdldENvZGVzKClcbiAgfVxufVxuXG5jbGFzcyBBY3Rlc0RvY3VtZW50YXRpb24ge1xuICB2ZXJib3NlOiBib29sZWFuXG4gIHNhbml0eUNoZWNrczogYm9vbGVhblxuICBsZWN0dXJlTWFwcGVyOiBhbnkgPSBuZXcgTGVjdHVyZU1hcHBlcigpXG4gIHJlbWFwcGVkUHJvY2VkdXJlczogYW55ID0ge31cbiAgYW5jaG9yc1ByaW50ZWQ6IGFueSA9IHt9XG4gIGFuY2hvcnM6IGFueSA9IG5ldyBTZXQoKVxuICBjb2RlczogYW55ID0ge31cbiAgcHJvY2VkdXJlczogYW55ID0gbnVsbFxuICBjb2RlMnBhdHRlcm46IGFueSA9IG5ldyBDb2RlMlBhdHRlcm4obnVsbCwge1xuICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgIFwiXigoKC9sZWN0dXJlLykrKXwoKC9sZWN0dXJlLykrL0NNUC8oL2xlY3R1cmUvKSopKSgvQ0MvKT8oL1BST00vKT8oL0FOLUFQUExJLyk/JFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvREVQT1QvKT8oL0RQVExFVFRSRUNULyk/KC9FVEkvKT8oL0FWQ0UvKT8oL0RHVlQvKT8oL0FDSU4vKT8oL01PVElPTi8pKigvUFJPQ0FDQy8pPygvQ09NLyk/KCgvREVCQVRTLykrKT8oL1JUUklOSS8pPyRcIixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBcImxlY3R1cmUtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05EL3wvQVZJUy8pKyRcIiwge1xuICAgICAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICAgICAgXCJsZWN0dXJlLUNPTS1BVklTXCI6IG5ldyBDb2RlMlBhdHRlcm5Db21Gb25kKCksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIFwibGVjdHVyZS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgICAgXCJeKC9TRUFOQ0UvKSooKC9NT1RJT04vKT8oL01PVElPTi1WT1RFLykrKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICksXG4gICAgICAgIENNUDogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0RFUE9UL3wvU0FJU0lFLyl7MSwyfSgvQ09NLyk/KC9ERUMvKT8oL0RFQkFUUy1BTi8vREVCQVRTLVNOLyk/XCIsXG4gICAgICAgICAge1xuICAgICAgICAgICAgXCJDTVAtQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICAgIFwiXigvTk9NSU4vKT8oL1JBUFBPUlQtQU4vfC9SQVBQT1JULVNOLyl7Mn0kXCIsXG4gICAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1BTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICAgIFwiQ01QLURFQkFUUy1TTlwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykqKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICApLFxuICAgICAgICBDQzogbmV3IENvZGUyUGF0dGVybihcIl4oL1NBSVNJRS8pKygvQ09OQ0xVU0lPTi8pPyRcIiwge30pLFxuICAgICAgICBQUk9NOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUFVCLyk/JFwiLCB7fSksXG4gICAgICAgIFwiQU4tQVBQTElcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1JBUFBPUlQvKT8kXCIsIHt9KSxcbiAgICAgIH0sXG4gICAgKSxcbiAgICBcIkFsbG9jdXRpb24gZHUgUHLDqXNpZGVudCBkZSBsJ0Fzc2VtYmzDqWUgbmF0aW9uYWxlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4vQU4yMS8kXCIsXG4gICAgICB7XG4gICAgICAgIEFOMjE6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BUEFOLyk/JFwiLCB7fSksXG4gICAgICB9LFxuICAgICksXG4gICAgXCJSw6lzb2x1dGlvbiBBcnRpY2xlIDM0LTFcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0RFQkFUUy8pPygvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLURFQkFUU1wiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0VBTkNFLykrKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFLDqXNvbHV0aW9uOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQU5MVU5JLyk/KC9DQy8pPyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTL3wvUlRSSU5JLyk/JFwiLCB7XG4gICAgICAgIFwiQU5MVU5JLUNPTVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvQ0FFLyk/KC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybkNvbUZvbmQoKSxcbiAgICAgICAgICBcIkFOTFVOSS1DT00tQ0FFXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICAgICAgICBcIl4oL1NBSVNJRS8pPygvTk9NSU4vKT8oL1JFVU5JT04vKT8oL1JBUFBPUlQvKT8oL0RFQy8pPyRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pKigvREVDLyk/JFwiLCB7fSksXG4gICAgICB9KSxcbiAgICAgIENDOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvU0FJU0lFLyk/KC9DT05DTFVTSU9OLyk/JFwiLCB7fSksXG4gICAgfSksXG4gICAgXCJSYXBwb3J0IGQnaW5mb3JtYXRpb24gc2FucyBtaXNzaW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXG4gICAgICBcIl4oL0FOMjAvKT8oL0VVLyk/JFwiLFxuICAgICAge1xuICAgICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvUkFQUE9SVC8pPyRcIiwge30pLFxuICAgICAgICBFVTogbmV3IENvZGUyUGF0dGVybihcIl4oL0RFQy8pKyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTWlzc2lvbiBkJ2luZm9ybWF0aW9uXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9BTjIwLyk/JFwiLCB7XG4gICAgICBBTjIwOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvTUlTSU5GLyk/JFwiLCB7XG4gICAgICAgIFwiQU4yMC1NSVNJTkZcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICBcIl4oL0NSRUEvKT8oL05PTUlOLyk/KC9SQVBQT1JULyk/JFwiLFxuICAgICAgICAgIHt9LFxuICAgICAgICApLFxuICAgICAgfSksXG4gICAgfSksXG4gICAgXCJDb21taXNzaW9uIGQnZW5xdcOqdGVcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOMjAvKT8kXCIsIHtcbiAgICAgIEFOMjA6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9DT01FTlEvKT8kXCIsIHtcbiAgICAgICAgXCJBTjIwLUNPTUVOUVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgICAgIFwiXigvQ1JFQS8pPygvTk9NSU4vKT8oL1JBUFBPUlQvKT8kXCIsXG4gICAgICAgICAge30sXG4gICAgICAgICksXG4gICAgICB9KSxcbiAgICB9KSxcbiAgICBcIkVuZ2FnZW1lbnQgZGUgbGEgcmVzcG9uc2FiaWxpdMOpIGdvdXZlcm5lbWVudGFsZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL0FOMjEvJFwiLFxuICAgICAge1xuICAgICAgICBBTjIxOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigoKC9NT1RJT04vKSovREVCQVRTLyl8KC9ER1ZULykpezEsMn0kXCIsIHtcbiAgICAgICAgICBcIkFOMjEtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9TRUFOQ0UvKSooL01PVElPTi1WT1RFLykqJFwiLCB7fSksXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiTW90aW9uIHLDqWbDqXJlbmRhaXJlXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9sZWN0dXJlLykrJFwiLCB7XG4gICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/JFwiLCB7XG4gICAgICAgIFwibGVjdHVyZS1DT01cIjogbmV3IENvZGUyUGF0dGVybihcIl4oL0ZPTkQvKT8kXCIsIHtcbiAgICAgICAgICBcImxlY3R1cmUtQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcImxlY3R1cmUtREVCQVRTXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERUMvKT8kXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIEltbXVuaXTDqTogbmV3IENvZGUyUGF0dGVybihcIl4oL0FOTFVOSS8pKyRcIiwge1xuICAgICAgQU5MVU5JOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL0NPTS8pPygvREVCQVRTLyk/KC9SVFJJTkkvKT8kXCIsIHtcbiAgICAgICAgXCJBTkxVTkktQ09NXCI6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9GT05ELyk/JFwiLCB7XG4gICAgICAgICAgXCJBTkxVTkktQ09NLUZPTkRcIjogbmV3IENvZGUyUGF0dGVybihcbiAgICAgICAgICAgIFwiXigvU0FJU0lFLyk/KC9OT01JTi8pKigvUkFQUE9SVC8pKiRcIixcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgICBcIkFOTFVOSS1ERUJBVFNcIjogbmV3IENvZGUyUGF0dGVybihcIl4oL1NFQU5DRS8pPygvREVDLykkXCIsIHt9KSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICAgIFwiUmVzcG9uc2FiaWxpdMOpIHDDqW5hbGUgZHUgcHLDqXNpZGVudCBkZSBsYSByw6lwdWJsaXF1ZVwiOiBuZXcgQ29kZTJQYXR0ZXJuKFxuICAgICAgXCJeL2xlY3R1cmUvJFwiLFxuICAgICAge1xuICAgICAgICBsZWN0dXJlOiBuZXcgQ29kZTJQYXR0ZXJuKFwiXigvREVQT1QvKT8oL1JFQ0JVUkVBVS8pPyRcIiwge30pLFxuICAgICAgfSxcbiAgICApLFxuICAgIFwiUHJvcG9zaXRpb24gZGUgbG9pIHByw6lzZW50w6llIGVuIGFwcGxpY2F0aW9uIGRlIGwnYXJ0aWNsZSAxMSBkZSBsYSBDb25zdGl0dXRpb25cIjpcbiAgICAgIG5ldyBDb2RlMlBhdHRlcm4oXCJeL2xlY3R1cmUvJFwiLCB7XG4gICAgICAgIGxlY3R1cmU6IG5ldyBDb2RlMlBhdHRlcm4oXCJeKC9ERVBPVC8pPyRcIiwge30pLFxuICAgICAgfSksXG4gIH0pXG5cbiAgY29uc3RydWN0b3Ioc2FuaXR5Q2hlY2tzOiBib29sZWFuLCB2ZXJib3NlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnZlcmJvc2UgPSB2ZXJib3NlXG4gICAgdGhpcy5zYW5pdHlDaGVja3MgPSBzYW5pdHlDaGVja3NcbiAgICB0aGlzLnByb2NlZHVyZXMgPSB7fVxuICAgIHRoaXMuY29kZTJwYXR0ZXJuLl9tYXRjaF9jb3VudF8rK1xuICB9XG5cbiAgd2Fsa0ZpbGVzKGRhdGE6IHN0cmluZ1tdLCBhY3Rpb246IGFueSkge1xuICAgIGZvciAoY29uc3QgZmlsZSBvZiBnZXRGaWxlcyhkYXRhKSkge1xuICAgICAgY29uc3QgZG9zc2llciA9IGxvYWQoZmlsZSlcbiAgICAgIGxldCBwcm9jZWR1cmU6IHN0cmluZyA9IHRoaXMucmVtYXBQcm9jZWR1cmUoXG4gICAgICAgIGRvc3NpZXIucHJvY2VkdXJlUGFybGVtZW50YWlyZS5saWJlbGxlLFxuICAgICAgKVxuICAgICAgaWYgKCEocHJvY2VkdXJlIGluIHRoaXMucHJvY2VkdXJlcykpIHRoaXMucHJvY2VkdXJlc1twcm9jZWR1cmVdID0ge31cbiAgICAgIGFjdGlvbihcbiAgICAgICAgdGhpcy5wcm9jZWR1cmVzW3Byb2NlZHVyZV0sXG4gICAgICAgIGRvc3NpZXIuYWN0ZXNMZWdpc2xhdGlmcyxcbiAgICAgICAgdGhpcy5jb2RlMnBhdHRlcm5bcHJvY2VkdXJlXSxcbiAgICAgICAgbnVsbCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBjb2xsZWN0RmlsZXMoZGF0YTogc3RyaW5nW10pIHtcbiAgICB0aGlzLndhbGtGaWxlcyhcbiAgICAgIGRhdGEsXG4gICAgICAoX2FjdGVzOiBhbnksIGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgX2MycDogYW55LCBfcGFyZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5jb2xsZWN0KGFjdGVzTGVnaXNsYXRpZnMpXG4gICAgICB9LFxuICAgIClcbiAgfVxuXG4gIHByb2Nlc3NGaWxlcyhkYXRhOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2Fsa0ZpbGVzKFxuICAgICAgZGF0YSxcbiAgICAgIChhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLm1lcmdlKGFjdGVzLCBhY3Rlc0xlZ2lzbGF0aWZzLCBjMnAsIHBhcmVudClcbiAgICAgIH0sXG4gICAgKVxuICAgIGlmICh0aGlzLnNhbml0eUNoZWNrcykgdGhpcy52YWxpZGF0ZSgpXG4gIH1cblxuICByZW1hcEFjdGVzKGFjdGVzOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHRzID0gW11cbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgYWN0ZXMpIHtcbiAgICAgIHRoaXMubGVjdHVyZU1hcHBlci5yZW1hcChhY3RlKVxuXG4gICAgICAvLyBDQy1TQUlTSUUtIHN1ZmZpeCBkb2VzIG5vdCBpbXBseSBhIGhpZXJhcmNoeVxuICAgICAgYWN0ZS5jb2RlQWN0ZSA9IGFjdGUuY29kZUFjdGUucmVwbGFjZSgvXkNDLVNBSVNJRS4qLywgXCJDQy1TQUlTSUVcIilcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICBjb2xsZWN0QWN0ZXMoYWN0ZXM6IGFueSk6IGFueSB7XG4gICAgbGV0IHJlc3VsdHMgPSBbXVxuICAgIGZvciAoY29uc3QgYWN0ZSBvZiBhY3Rlcykge1xuICAgICAgdGhpcy5sZWN0dXJlTWFwcGVyLmNvbGxlY3QoYWN0ZSlcblxuICAgICAgcmVzdWx0cy5wdXNoKGFjdGUpXG4gICAgfVxuICAgIHJldHVybiByZXN1bHRzXG4gIH1cblxuICByZW1hcFByb2NlZHVyZShwcm9jZWR1cmU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbWVyZ2VfcHJvY2VkdXJlczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoW1xuICAgICAgW1wiUHJvcG9zaXRpb24gZGUgbG9pIG9yZGluYWlyZVwiLCBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCJdLFxuICAgICAgW1wiUHJvamV0IGRlIGxvaSBvcmRpbmFpcmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgcmF0aWZpY2F0aW9uIGRlcyB0cmFpdMOpcyBldCBjb252ZW50aW9uc1wiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgICAgW1wiUHJvamV0IG91IHByb3Bvc2l0aW9uIGRlIGxvaSBvcmdhbmlxdWVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgb3UgcHJvcG9zaXRpb24gZGUgbG9pIGNvbnN0aXR1dGlvbm5lbGxlXCIsXG4gICAgICAgIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIixcbiAgICAgIF0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIGRlIGwnYW5uw6llXCIsIFwiUHJvY8OpZHVyZSBsw6lnaXNsYXRpdmVcIl0sXG4gICAgICBbXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VzIHJlY3RpZmljYXRpdmVcIiwgXCJQcm9jw6lkdXJlIGzDqWdpc2xhdGl2ZVwiXSxcbiAgICAgIFtcbiAgICAgICAgXCJQcm9qZXQgZGUgbG9pIGRlIGZpbmFuY2VtZW50IGRlIGxhIHPDqWN1cml0w6kgc29jaWFsZVwiLFxuICAgICAgICBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIsXG4gICAgICBdLFxuICAgIF0pXG4gICAgaWYgKG1lcmdlX3Byb2NlZHVyZXMuaGFzKHByb2NlZHVyZSkpIHtcbiAgICAgIHRoaXMucmVtYXBwZWRQcm9jZWR1cmVzW3Byb2NlZHVyZV0gPSBudWxsXG4gICAgICByZXR1cm4gbWVyZ2VfcHJvY2VkdXJlcy5nZXQocHJvY2VkdXJlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvY2VkdXJlXG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIHRoZSBjb2RlQWN0ZXMgaW4gdGhlIHNhbWUgb3JkZXIgdGhleSBhcHBlYXIgaW4gdGhlIHJlZ2V4cFxuICBvcmRlcmVkQ29kZXMoY29kZXM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgIGNvZGVzID0gbmV3IFNldChjb2RlcylcbiAgICBpZiAoIXRoaXMuc2FuaXR5Q2hlY2tzKSByZXR1cm4gY29kZXNcbiAgICBsZXQgb3JkZXJlZCA9IGMycFtcIl9wYXR0ZXJuX1wiXS5tYXRjaChuZXcgUmVnRXhwKFwiLy4qPy9cIiwgXCJnXCIpKVxuICAgIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiB4LnJlcGxhY2UobmV3IFJlZ0V4cChcIi8oLiopL1wiKSwgXCIkMVwiKSlcbiAgICBpZiAocGFyZW50ICE9IG51bGwpIG9yZGVyZWQgPSBvcmRlcmVkLm1hcCgoeDogc3RyaW5nKSA9PiBgJHtwYXJlbnR9LSR7eH1gKVxuICAgIG9yZGVyZWQgPSBuZXcgU2V0KG9yZGVyZWQpXG4gICAgYXNzZXJ0KGVxU2V0KG9yZGVyZWQsIGNvZGVzKSwgYCR7Wy4uLm9yZGVyZWRdfSAhPSAke1suLi5jb2Rlc119YClcbiAgICByZXR1cm4gb3JkZXJlZFxuICB9XG5cbiAgdmFsaWRhdGVDaHJvbm9sb2d5KGFjdGVzTGVnaXNsYXRpZnM6IGFueSwgYzJwOiBhbnksIHBhcmVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcGF0dGVybiA9IGMycFtcIl9wYXR0ZXJuX1wiXVxuICAgIGNvbnN0IHNlcXVlbmNlID0gYWN0ZXNMZWdpc2xhdGlmc1xuICAgICAgLm1hcCgoeDogYW55KSA9PiBgLyR7eC5jb2RlQWN0ZX0vYC5yZXBsYWNlKGAvJHtwYXJlbnR9LWAsIFwiL1wiKSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgYXNzZXJ0KFxuICAgICAgc2VxdWVuY2UubWF0Y2gobmV3IFJlZ0V4cChwYXR0ZXJuKSksXG4gICAgICBgJHtwYXR0ZXJufSBkb2VzIG5vdCBtYXRjaCAke3NlcXVlbmNlfWAsXG4gICAgKVxuICAgIGMycC5fbWF0Y2hfY291bnRfKytcbiAgfVxuXG4gIG1lcmdlQWN0ZShhY3RlczogYW55LCBhY3RlOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGxldCBjb2RlOiBzdHJpbmcgPSBhY3RlLmNvZGVBY3RlXG4gICAgbGV0IHNob3J0Q29kZTogc3RyaW5nID0gY29kZS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke3BhcmVudH0tYCksIFwiXCIpXG4gICAgc2hvcnRDb2RlID0gc2hvcnRDb2RlLnJlcGxhY2UoLy0oQU58U04pJC8sIFwiXCIpXG4gICAgdGhpcy5jb2Rlc1tzaG9ydENvZGVdID0gbnVsbFxuICAgIGxldCBuYW1lOiBzdHJpbmcgPSBhY3RlLmxpYmVsbGVBY3RlLm5vbUNhbm9uaXF1ZVxuICAgIGlmICghKGNvZGUgaW4gYWN0ZXMpKSB7XG4gICAgICBhY3Rlc1tjb2RlXSA9IHtcbiAgICAgICAgdHlwZTogYWN0ZS54c2lUeXBlLFxuICAgICAgICBuYW1lOiBuZXcgU2V0KFtuYW1lXSksXG4gICAgICAgIHNob3J0Q29kZTogc2hvcnRDb2RlLFxuICAgICAgICBhY3Rlczoge30sXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGVzW2NvZGVdLm5hbWUuYWRkKG5hbWUpXG4gICAgfVxuICAgIGlmIChcImFjdGVzTGVnaXNsYXRpZnNcIiBpbiBhY3RlKVxuICAgICAgdGhpcy5tZXJnZShhY3Rlc1tjb2RlXS5hY3RlcywgYWN0ZS5hY3Rlc0xlZ2lzbGF0aWZzLCBjMnBbY29kZV0sIGNvZGUpXG4gIH1cblxuICBtZXJnZShhY3RlczogYW55LCBhY3Rlc0xlZ2lzbGF0aWZzOiBhbnksIGMycDogYW55LCBwYXJlbnQ6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IGwgPSB0aGlzLnJlbWFwQWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcylcbiAgICB0aGlzLnZhbGlkYXRlQ2hyb25vbG9neShsLCBjMnAsIHBhcmVudClcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgbCkgdGhpcy5tZXJnZUFjdGUoYWN0ZXMsIGFjdGUsIGMycCwgcGFyZW50KVxuICB9XG5cbiAgY29sbGVjdChhY3Rlc0xlZ2lzbGF0aWZzOiBhbnkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGFjdGUgb2YgdGhpcy5jb2xsZWN0QWN0ZXMoYWN0ZXNMZWdpc2xhdGlmcykpXG4gICAgICBpZiAoXCJhY3Rlc0xlZ2lzbGF0aWZzXCIgaW4gYWN0ZSkgdGhpcy5jb2xsZWN0KGFjdGUuYWN0ZXNMZWdpc2xhdGlmcylcbiAgfVxuXG4gIHZhbGlkYXRlTGV2ZWwoYzJwOiBhbnksIHBhdGg6IGFueSkge1xuICAgIGFzc2VydChjMnAuX21hdGNoX2NvdW50XyA+IDAsIGAke3BhdGh9IGlzIG5ldmVyIHVzZWRgKVxuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGMycCkgYXMgW3N0cmluZywgYW55XVtdKSB7XG4gICAgICBpZiAodmFsdWUgIT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiQ29kZTJQYXR0ZXJuXCIpXG4gICAgICAgIHRoaXMudmFsaWRhdGVMZXZlbCh2YWx1ZSwgcGF0aC5jb25jYXQoW2tleV0pKVxuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKCkge1xuICAgIHRoaXMudmFsaWRhdGVMZXZlbCh0aGlzLmNvZGUycGF0dGVybiwgW10pXG4gIH1cblxuICBwcmludEVudHJ5KHNlY3Rpb25zOiBzdHJpbmcsIGVudHJ5OiBzdHJpbmcsIGNvZGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aXRsZSA9IGBcXGAke2VudHJ5fVxcYF9fYFxuICAgIGNvbnNvbGUubG9nKHRpdGxlKVxuICAgIGNvbnN0IHVuZGVybGluZSA9IG5ldyBBcnJheSh0aXRsZS5sZW5ndGggKyAxKS5qb2luKHNlY3Rpb25zWzBdKVxuICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICBjb25zb2xlLmxvZyhjb2RlcylcbiAgfVxuXG4gIGFkZEFuY2hvcnMoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5IGluIHRoaXMuYW5jaG9yc1ByaW50ZWQpIHJldHVyblxuICAgIGlmICh0aGlzLmxlY3R1cmVNYXBwZXIuaGFzKGtleSkpXG4gICAgICB0aGlzLmxlY3R1cmVNYXBwZXIubWVyZ2VDb2Rlcyh0aGlzLmFuY2hvcnMsIGtleSlcbiAgICBlbHNlIHRoaXMuYW5jaG9ycy5hZGQoa2V5KVxuICB9XG5cbiAgcHJpbnRBbmNob3JzKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm5cbiAgICB0aGlzLmFuY2hvcnNQcmludGVkW2tleV0gPSBudWxsXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgdGhpcy5sZWN0dXJlTWFwcGVyLnByaW50QW5jaG9ycyhrZXkpXG4gICAgZWxzZSBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fTpgKVxuICB9XG5cbiAgZ2V0Q29kZXMoa2V5OiBzdHJpbmcsIHNob3J0Q29kZTogc3RyaW5nKSB7XG4gICAgaWYgKGtleSBpbiB0aGlzLmFuY2hvcnNQcmludGVkKSByZXR1cm4gYGNmIFxcXFwqJHtzaG9ydENvZGV9XFxcXCpgXG4gICAgaWYgKHRoaXMubGVjdHVyZU1hcHBlci5oYXMoa2V5KSkgcmV0dXJuIHRoaXMubGVjdHVyZU1hcHBlci5nZXRDb2RlcyhrZXkpXG4gICAgZWxzZSByZXR1cm4ga2V5XG4gIH1cblxuICByZW5hbWVDTVAoa2V5OiBzdHJpbmcsIG5hbWU6IHN0cmluZykge1xuICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIkNNUFwiKSkge1xuICAgICAgaWYgKGtleS5lbmRzV2l0aChcIi1TTlwiKSkgcmV0dXJuIGAke25hbWV9IChTw6luYXQpYFxuICAgICAgZWxzZSBpZiAoa2V5LmVuZHNXaXRoKFwiLUFOXCIpKSByZXR1cm4gYCR7bmFtZX0gKEFzc2VtYmzDqWUgTmF0aW9uYWxlKWBcbiAgICAgIGVsc2UgcmV0dXJuIG5hbWVcbiAgICB9IGVsc2UgcmV0dXJuIG5hbWVcbiAgfVxuXG4gIHByaW50TGV2ZWwoYWN0ZXM6IGFueSwgc2VjdGlvbnM6IHN0cmluZywgYzJwOiBhbnksIHBhcmVudDogYW55KSB7XG4gICAgY29uc3Qga2V5czogU2V0PHN0cmluZz4gPSB0aGlzLm9yZGVyZWRDb2RlcyhPYmplY3Qua2V5cyhhY3RlcyksIGMycCwgcGFyZW50KVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gYWN0ZXNba2V5XVxuICAgICAgbGV0IG5hbWUgPSBBcnJheS5mcm9tKHZhbHVlLm5hbWUpLmpvaW4oXCIsIFwiKVxuICAgICAgbmFtZSA9IHRoaXMucmVuYW1lQ01QKGtleSwgbmFtZSlcbiAgICAgIGNvbnN0IGNvZGVzID0gdGhpcy5nZXRDb2RlcyhrZXksIHZhbHVlLnNob3J0Q29kZSlcbiAgICAgIHRoaXMuYWRkQW5jaG9ycyhrZXkpXG4gICAgICB0aGlzLnByaW50QW5jaG9ycyhrZXkpXG4gICAgICBjb25zb2xlLmxvZyhcIlwiKVxuICAgICAgdGhpcy5wcmludEVudHJ5KHNlY3Rpb25zLCBgJHtuYW1lfSA8JHt2YWx1ZS5zaG9ydENvZGV9VE9DXz5gLCBjb2RlcylcbiAgICAgIGNvbnNvbGUubG9nKFwiXCIpXG4gICAgICBpZiAoT2JqZWN0LmtleXModmFsdWUuYWN0ZXMpLmxlbmd0aCA+IDApXG4gICAgICAgIHRoaXMucHJpbnRMZXZlbCh2YWx1ZS5hY3Rlcywgc2VjdGlvbnMuc3Vic3RyaW5nKDEpLCBjMnBba2V5XSwga2V5KVxuICAgIH1cbiAgfVxuXG4gIHByaW50Q29kZXMoKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5jb2RlcykpXG4gICAgICBjb25zb2xlLmxvZyhgLi4gXyR7a2V5fVRPQzogaHR0cDovL2ApXG4gIH1cblxuICBwcmludEFuY2hvcnNJbmRleCgpIHtcbiAgICBmb3IgKGNvbnN0IGNvZGUgb2YgQXJyYXkuZnJvbSh0aGlzLmFuY2hvcnMpKVxuICAgICAgY29uc29sZS5sb2coYCogOnJlZjpcXGAke2NvZGV9IDwke2NvZGV9PlxcYGApXG4gIH1cblxuICBnZXRBZ2dyZWdhdGVkKHByb2NlZHVyZTogc3RyaW5nKSB7XG4gICAgaWYgKHByb2NlZHVyZSA9PSBcIlByb2PDqWR1cmUgbMOpZ2lzbGF0aXZlXCIpIHtcbiAgICAgIGNvbnN0IHJlbWFwcGVkID0gT2JqZWN0LmtleXModGhpcy5yZW1hcHBlZFByb2NlZHVyZXMpLmpvaW4oXCIsIFwiKVxuICAgICAgcmV0dXJuIGAgKGFncsOpZ2F0aW9uIGRlICR7cmVtYXBwZWR9KWBcbiAgICB9IGVsc2UgcmV0dXJuIFwiXCJcbiAgfVxuXG4gIHByaW50KCk6IHZvaWQge1xuICAgIHRoaXMuYW5jaG9yc1ByaW50ZWQgPSB7fVxuICAgIGZvciAoY29uc3QgW2tleSwgYWN0ZXNdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMucHJvY2VkdXJlcykgYXMgW1xuICAgICAgc3RyaW5nLFxuICAgICAgYW55LFxuICAgIF1bXSkge1xuICAgICAgY29uc3QgY29kZSA9IGtleS5yZXBsYWNlKC8gKy9nLCBcIl9cIilcbiAgICAgIHRoaXMuY29kZXNbY29kZV0gPSBudWxsXG4gICAgICBjb25zdCBhZ2dyZWdhdGVkID0gdGhpcy5nZXRBZ2dyZWdhdGVkKGtleSlcbiAgICAgIGNvbnN0IHRpdGxlID0gYFxcYCR7a2V5fSA8JHtjb2RlfVRPQ18+XFxgX18ke2FnZ3JlZ2F0ZWR9YFxuICAgICAgY29uc29sZS5sb2codGl0bGUpXG4gICAgICBjb25zdCB1bmRlcmxpbmUgPSBuZXcgQXJyYXkodGl0bGUubGVuZ3RoICsgMSkuam9pbihcIj1cIilcbiAgICAgIGNvbnNvbGUubG9nKHVuZGVybGluZSlcbiAgICAgIHRoaXMucHJpbnRMZXZlbChhY3RlcywgXCItfi4nXCIsIHRoaXMuY29kZTJwYXR0ZXJuW2tleV0sIG51bGwpXG4gICAgfVxuICAgIHRoaXMucHJpbnRDb2RlcygpXG4gICAgdGhpcy5wcmludEFuY2hvcnNJbmRleCgpXG4gIH1cbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIGlmIChvcHRpb25zID09PSBudWxsKSByZXR1cm4gMVxuICBsZXQgZG9jID0gbmV3IEFjdGVzRG9jdW1lbnRhdGlvbihcbiAgICAhb3B0aW9uc1tcIm5vLXNhbml0eS1jaGVja3NcIl0sXG4gICAgb3B0aW9ucy52ZXJib3NlLFxuICApXG4gIGRvYy5jb2xsZWN0RmlsZXMob3B0aW9ucy5kYXRhKVxuICBkb2MucHJvY2Vzc0ZpbGVzKG9wdGlvbnMuZGF0YSlcbiAgZG9jLnByaW50KClcbiAgcmV0dXJuIDBcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiZG9jdW1lbnRfZG9zc2llcnNfbGVnaXNsYXRpZnMudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBT0EsZUFBUCxNQUE0QixtQkFBNUI7QUFDQSxPQUFPQyxnQkFBUCxNQUE2QixvQkFBN0I7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLFFBQW5CO1NBQ1NDLEksRUFBTUMsUTs7QUFFZixTQUFTQyxTQUFULENBQW1CQyxJQUFuQixFQUF3QztFQUN0QyxNQUFNQyxrQkFBa0IsR0FBRyxDQUN6QjtJQUNFQyxXQUFXLEVBQUUseURBRGY7SUFFRUMsYUFBYSxFQUFFLElBRmpCO0lBR0VDLFFBQVEsRUFBRSxJQUhaO0lBSUVDLElBQUksRUFBRSxNQUpSO0lBS0VDLElBQUksRUFBRUM7RUFMUixDQUR5QixFQVF6QjtJQUNFRixJQUFJLEVBQUUsa0JBRFI7SUFFRUMsSUFBSSxFQUFFRSxPQUZSO0lBR0VOLFdBQVcsRUFBRTtFQUhmLENBUnlCLEVBYXpCO0lBQ0VHLElBQUksRUFBRSxTQURSO0lBRUVDLElBQUksRUFBRUUsT0FGUjtJQUdFTixXQUFXLEVBQUU7RUFIZixDQWJ5QixFQWtCekI7SUFDRUcsSUFBSSxFQUFFLE1BRFI7SUFFRUgsV0FBVyxFQUFFO0VBRmYsQ0FsQnlCLENBQTNCO0VBdUJBLE1BQU1PLFFBQVEsR0FBRyxDQUNmO0lBQ0VDLE1BQU0sRUFBRSwrQ0FEVjtJQUVF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
@@ -55,4 +55,4 @@ for (var _i = 0, _Object$values = Object.values(reunionByUid); _i < _Object$valu
55
55
  }
56
56
 
57
57
  console.log(now);
58
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2dldF90b2RheV9yZXVuaW9ucy50cyJdLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZWZhdWx0T3B0aW9uIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwib3B0aW9ucyIsIm5vdyIsIkRhdGUiLCJkYXRhRGlyIiwiRW5hYmxlZERhdGFzZXRzIiwiQWdlbmRhcyIsIkxlZ2lzbGF0dXJlIiwiUXVpbnplIiwicmV1bmlvbkJ5VWlkIiwiT2JqZWN0IiwidmFsdWVzIiwicmV1bmlvbiIsIkV0YXRDeWNsZURlVmllIiwiQ29uZmlybcOpIiwiRXZlbnR1ZWwiLCJpbmNsdWRlcyIsImN5Y2xlRGVWaWUiLCJldGF0IiwidGltZXN0YW1wRGVidXQiLCJ0eXBlUmV1bmlvbiIsInVpZCIsImdldEZ1bGxZZWFyIiwiZ2V0TW9udGgiLCJnZXREYXRlIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLElBQU1BLGtCQUFrQixHQUFHLENBQ3pCO0FBQ0VDLEVBQUFBLGFBQWEsRUFBRSxJQURqQjtBQUVFQyxFQUFBQSxJQUFJLEVBQUUsZ0RBRlI7QUFHRUMsRUFBQUEsSUFBSSxFQUFFLFNBSFI7QUFJRUMsRUFBQUEsSUFBSSxFQUFFQztBQUpSLENBRHlCLENBQTNCO0FBUUEsSUFBTUMsT0FBTyxHQUFHLGlDQUFnQk4sa0JBQWhCLENBQWhCO0FBRUEsSUFBTU8sR0FBRyxHQUFHLElBQUlDLElBQUosRUFBWjs7QUFDQSx5QkFBeUIsZ0NBQ3ZCRixPQUFPLENBQUNHLE9BRGUsRUFFdkJDLDBCQUFnQkMsT0FGTyxFQUd2QkMsMEJBQVlDLE1BSFcsQ0FBekI7QUFBQSxJQUFRQyxZQUFSLHNCQUFRQSxZQUFSOztBQUtBLGtDQUFzQkMsTUFBTSxDQUFDQyxNQUFQLENBQWNGLFlBQWQsQ0FBdEIsb0NBQW1EO0FBQTlDLE1BQU1HLE9BQU8scUJBQWI7O0FBQ0gsTUFDRSxDQUFDLENBQUNDLHdCQUFlQyxRQUFoQixFQUEwQkQsd0JBQWVFLFFBQXpDLEVBQW1EQyxRQUFuRCxDQUNDSixPQUFPLENBQUNLLFVBQVIsQ0FBbUJDLElBRHBCLENBREgsRUFJRTtBQUNBO0FBQ0Q7O0FBQ0QsTUFBUUMsY0FBUixHQUE2Q1AsT0FBN0MsQ0FBUU8sY0FBUjtBQUFBLE1BQXdCQyxXQUF4QixHQUE2Q1IsT0FBN0MsQ0FBd0JRLFdBQXhCO0FBQUEsTUFBcUNDLEdBQXJDLEdBQTZDVCxPQUE3QyxDQUFxQ1MsR0FBckM7O0FBQ0EsTUFBSUQsV0FBVyxLQUFLLElBQXBCLEVBQTBCO0FBQ3hCO0FBQ0Q7O0FBQ0QsTUFDRUQsY0FBYyxDQUFDRyxXQUFmLE9BQWlDcEIsR0FBRyxDQUFDb0IsV0FBSixFQUFqQyxJQUNBSCxjQUFjLENBQUNJLFFBQWYsT0FBOEJyQixHQUFHLENBQUNxQixRQUFKLEVBRDlCLElBRUFKLGNBQWMsQ0FBQ0ssT0FBZixPQUE2QnRCLEdBQUcsQ0FBQ3NCLE9BQUosRUFIL0IsRUFJRTtBQUNBO0FBQ0Q7O0FBQ0RDLEVBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxHQUFaLEVBQWlCRixjQUFqQixFQUFpQ1EsSUFBSSxDQUFDQyxTQUFMLENBQWVoQixPQUFmLEVBQXdCLElBQXhCLEVBQThCLENBQTlCLENBQWpDO0FBQ0Q7O0FBQ0RhLE9BQU8sQ0FBQ0MsR0FBUixDQUFZeEIsR0FBWiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcblxuaW1wb3J0IHsgRW5hYmxlZERhdGFzZXRzIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IGxvYWRBc3NlbWJsZWVEYXRhIH0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgRXRhdEN5Y2xlRGVWaWUgfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi90eXBlcy9sZWdpc2xhdHVyZXNcIlxuXG5jb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuY29uc3Qgbm93ID0gbmV3IERhdGUoKVxuY29uc3QgeyByZXVuaW9uQnlVaWQgfSA9IGxvYWRBc3NlbWJsZWVEYXRhKFxuICBvcHRpb25zLmRhdGFEaXIsXG4gIEVuYWJsZWREYXRhc2V0cy5BZ2VuZGFzLFxuICBMZWdpc2xhdHVyZS5RdWluemUsXG4pXG5mb3IgKGNvbnN0IHJldW5pb24gb2YgT2JqZWN0LnZhbHVlcyhyZXVuaW9uQnlVaWQpKSB7XG4gIGlmIChcbiAgICAhW0V0YXRDeWNsZURlVmllLkNvbmZpcm3DqSwgRXRhdEN5Y2xlRGVWaWUuRXZlbnR1ZWxdLmluY2x1ZGVzKFxuICAgICAgcmV1bmlvbi5jeWNsZURlVmllLmV0YXQsXG4gICAgKVxuICApIHtcbiAgICBjb250aW51ZVxuICB9XG4gIGNvbnN0IHsgdGltZXN0YW1wRGVidXQsIHR5cGVSZXVuaW9uLCB1aWQgfSA9IHJldW5pb25cbiAgaWYgKHR5cGVSZXVuaW9uICE9PSBcIkdQXCIpIHtcbiAgICBjb250aW51ZVxuICB9XG4gIGlmIChcbiAgICB0aW1lc3RhbXBEZWJ1dC5nZXRGdWxsWWVhcigpICE9PSBub3cuZ2V0RnVsbFllYXIoKSB8fFxuICAgIHRpbWVzdGFtcERlYnV0LmdldE1vbnRoKCkgIT09IG5vdy5nZXRNb250aCgpIHx8XG4gICAgdGltZXN0YW1wRGVidXQuZ2V0RGF0ZSgpICE9PSBub3cuZ2V0RGF0ZSgpXG4gICkge1xuICAgIGNvbnRpbnVlXG4gIH1cbiAgY29uc29sZS5sb2codWlkLCB0aW1lc3RhbXBEZWJ1dCwgSlNPTi5zdHJpbmdpZnkocmV1bmlvbiwgbnVsbCwgMikpXG59XG5jb25zb2xlLmxvZyhub3cpXG4iXX0=
58
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvcHRpb25zRGVmaW5pdGlvbnMiLCJkZWZhdWx0T3B0aW9uIiwiaGVscCIsIm5hbWUiLCJ0eXBlIiwiU3RyaW5nIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsIm5vdyIsIkRhdGUiLCJsb2FkQXNzZW1ibGVlRGF0YSIsImRhdGFEaXIiLCJFbmFibGVkRGF0YXNldHMiLCJBZ2VuZGFzIiwiTGVnaXNsYXR1cmUiLCJRdWluemUiLCJyZXVuaW9uQnlVaWQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJyZXVuaW9uIiwiRXRhdEN5Y2xlRGVWaWUiLCJDb25maXJtw6kiLCJFdmVudHVlbCIsImluY2x1ZGVzIiwiY3ljbGVEZVZpZSIsImV0YXQiLCJ0aW1lc3RhbXBEZWJ1dCIsInR5cGVSZXVuaW9uIiwidWlkIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL2dldF90b2RheV9yZXVuaW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5cbmltcG9ydCB7IEVuYWJsZWREYXRhc2V0cyB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBsb2FkQXNzZW1ibGVlRGF0YSB9IGZyb20gXCIuLi9sb2FkZXJzXCJcbmltcG9ydCB7IEV0YXRDeWNsZURlVmllIH0gZnJvbSBcIi4uL3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgTGVnaXNsYXR1cmUgfSBmcm9tIFwiLi4vdHlwZXMvbGVnaXNsYXR1cmVzXCJcblxuY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICB7XG4gICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgbmFtZTogXCJkYXRhRGlyXCIsXG4gICAgdHlwZTogU3RyaW5nLFxuICB9LFxuXVxuY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMpXG5cbmNvbnN0IG5vdyA9IG5ldyBEYXRlKClcbmNvbnN0IHsgcmV1bmlvbkJ5VWlkIH0gPSBsb2FkQXNzZW1ibGVlRGF0YShcbiAgb3B0aW9ucy5kYXRhRGlyLFxuICBFbmFibGVkRGF0YXNldHMuQWdlbmRhcyxcbiAgTGVnaXNsYXR1cmUuUXVpbnplLFxuKVxuZm9yIChjb25zdCByZXVuaW9uIG9mIE9iamVjdC52YWx1ZXMocmV1bmlvbkJ5VWlkKSkge1xuICBpZiAoXG4gICAgIVtFdGF0Q3ljbGVEZVZpZS5Db25maXJtw6ksIEV0YXRDeWNsZURlVmllLkV2ZW50dWVsXS5pbmNsdWRlcyhcbiAgICAgIHJldW5pb24uY3ljbGVEZVZpZS5ldGF0LFxuICAgIClcbiAgKSB7XG4gICAgY29udGludWVcbiAgfVxuICBjb25zdCB7IHRpbWVzdGFtcERlYnV0LCB0eXBlUmV1bmlvbiwgdWlkIH0gPSByZXVuaW9uXG4gIGlmICh0eXBlUmV1bmlvbiAhPT0gXCJHUFwiKSB7XG4gICAgY29udGludWVcbiAgfVxuICBpZiAoXG4gICAgdGltZXN0YW1wRGVidXQuZ2V0RnVsbFllYXIoKSAhPT0gbm93LmdldEZ1bGxZZWFyKCkgfHxcbiAgICB0aW1lc3RhbXBEZWJ1dC5nZXRNb250aCgpICE9PSBub3cuZ2V0TW9udGgoKSB8fFxuICAgIHRpbWVzdGFtcERlYnV0LmdldERhdGUoKSAhPT0gbm93LmdldERhdGUoKVxuICApIHtcbiAgICBjb250aW51ZVxuICB9XG4gIGNvbnNvbGUubG9nKHVpZCwgdGltZXN0YW1wRGVidXQsIEpTT04uc3RyaW5naWZ5KHJldW5pb24sIG51bGwsIDIpKVxufVxuY29uc29sZS5sb2cobm93KVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxJQUFNQSxrQkFBa0IsR0FBRyxDQUN6QjtFQUNFQyxhQUFhLEVBQUUsSUFEakI7RUFFRUMsSUFBSSxFQUFFLGdEQUZSO0VBR0VDLElBQUksRUFBRSxTQUhSO0VBSUVDLElBQUksRUFBRUM7QUFKUixDQUR5QixDQUEzQjtBQVFBLElBQU1DLE9BQU8sR0FBRyxJQUFBQywyQkFBQSxFQUFnQlAsa0JBQWhCLENBQWhCO0FBRUEsSUFBTVEsR0FBRyxHQUFHLElBQUlDLElBQUosRUFBWjs7QUFDQSx5QkFBeUIsSUFBQUMsMEJBQUEsRUFDdkJKLE9BQU8sQ0FBQ0ssT0FEZSxFQUV2QkMseUJBQUEsQ0FBZ0JDLE9BRk8sRUFHdkJDLHlCQUFBLENBQVlDLE1BSFcsQ0FBekI7QUFBQSxJQUFRQyxZQUFSLHNCQUFRQSxZQUFSOztBQUtBLGtDQUFzQkMsTUFBTSxDQUFDQyxNQUFQLENBQWNGLFlBQWQsQ0FBdEIsb0NBQW1EO0VBQTlDLElBQU1HLE9BQU8scUJBQWI7O0VBQ0gsSUFDRSxDQUFDLENBQUNDLHVCQUFBLENBQWVDLFFBQWhCLEVBQTBCRCx1QkFBQSxDQUFlRSxRQUF6QyxFQUFtREMsUUFBbkQsQ0FDQ0osT0FBTyxDQUFDSyxVQUFSLENBQW1CQyxJQURwQixDQURILEVBSUU7SUFDQTtFQUNEOztFQUNELElBQVFDLGNBQVIsR0FBNkNQLE9BQTdDLENBQVFPLGNBQVI7RUFBQSxJQUF3QkMsV0FBeEIsR0FBNkNSLE9BQTdDLENBQXdCUSxXQUF4QjtFQUFBLElBQXFDQyxHQUFyQyxHQUE2Q1QsT0FBN0MsQ0FBcUNTLEdBQXJDOztFQUNBLElBQUlELFdBQVcsS0FBSyxJQUFwQixFQUEwQjtJQUN4QjtFQUNEOztFQUNELElBQ0VELGNBQWMsQ0FBQ0csV0FBZixPQUFpQ3JCLEdBQUcsQ0FBQ3FCLFdBQUosRUFBakMsSUFDQUgsY0FBYyxDQUFDSSxRQUFmLE9BQThCdEIsR0FBRyxDQUFDc0IsUUFBSixFQUQ5QixJQUVBSixjQUFjLENBQUNLLE9BQWYsT0FBNkJ2QixHQUFHLENBQUN1QixPQUFKLEVBSC9CLEVBSUU7SUFDQTtFQUNEOztFQUNEQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUwsR0FBWixFQUFpQkYsY0FBakIsRUFBaUNRLElBQUksQ0FBQ0MsU0FBTCxDQUFlaEIsT0FBZixFQUF3QixJQUF4QixFQUE4QixDQUE5QixDQUFqQztBQUNEOztBQUNEYSxPQUFPLENBQUNDLEdBQVIsQ0FBWXpCLEdBQVoifQ==