@tricoteuses/assemblee 1.5.7 → 1.6.0

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 (147) hide show
  1. package/README.md +15 -0
  2. package/lib/api.js +1 -1
  3. package/lib/api.mjs +1 -1
  4. package/lib/bugs/acteur-00010/plugin.test.js +1 -1
  5. package/lib/bugs/acteur-00010/plugin.test.mjs +1 -1
  6. package/lib/bugs/acteur-00010.js +1 -1
  7. package/lib/bugs/acteur-00010.mjs +1 -1
  8. package/lib/bugs/agenda-00002/plugin.test.js +1 -1
  9. package/lib/bugs/agenda-00002/plugin.test.mjs +1 -1
  10. package/lib/bugs/agenda-00002.js +1 -1
  11. package/lib/bugs/agenda-00002.mjs +1 -1
  12. package/lib/bugs/agenda-00008/plugin.test.js +1 -1
  13. package/lib/bugs/agenda-00008/plugin.test.mjs +1 -1
  14. package/lib/bugs/agenda-00008.js +1 -1
  15. package/lib/bugs/agenda-00008.mjs +1 -1
  16. package/lib/bugs/agenda-00011/plugin.test.js +1 -1
  17. package/lib/bugs/agenda-00011/plugin.test.mjs +1 -1
  18. package/lib/bugs/agenda-00011.js +1 -1
  19. package/lib/bugs/agenda-00011.mjs +1 -1
  20. package/lib/bugs.js +1 -1
  21. package/lib/bugs.mjs +1 -1
  22. package/lib/cleaners/actes_legislatifs.d.ts +1 -0
  23. package/lib/cleaners/actes_legislatifs.js +33 -15
  24. package/lib/cleaners/actes_legislatifs.mjs +32 -15
  25. package/lib/cleaners/acteurs.js +1 -1
  26. package/lib/cleaners/acteurs.mjs +1 -1
  27. package/lib/cleaners/amendements.js +1 -1
  28. package/lib/cleaners/amendements.mjs +1 -1
  29. package/lib/cleaners/debats.js +1 -1
  30. package/lib/cleaners/debats.mjs +1 -1
  31. package/lib/cleaners/documents.js +1 -1
  32. package/lib/cleaners/documents.mjs +1 -1
  33. package/lib/cleaners/dossiers_legislatifs.js +2 -27
  34. package/lib/cleaners/dossiers_legislatifs.mjs +3 -28
  35. package/lib/cleaners/index.js +1 -1
  36. package/lib/cleaners/index.mjs +1 -1
  37. package/lib/cleaners/organes.js +1 -1
  38. package/lib/cleaners/organes.mjs +1 -1
  39. package/lib/cleaners/questions.js +1 -1
  40. package/lib/cleaners/questions.mjs +1 -1
  41. package/lib/cleaners/reunions.js +1 -1
  42. package/lib/cleaners/reunions.mjs +1 -1
  43. package/lib/cleaners/scrutins.js +1 -1
  44. package/lib/cleaners/scrutins.mjs +1 -1
  45. package/lib/cleaners/xml.js +1 -1
  46. package/lib/cleaners/xml.mjs +1 -1
  47. package/lib/datasets.js +1 -1
  48. package/lib/datasets.mjs +1 -1
  49. package/lib/dates.js +1 -1
  50. package/lib/dates.mjs +1 -1
  51. package/lib/dossiers_legislatifs.js +1 -1
  52. package/lib/dossiers_legislatifs.mjs +1 -1
  53. package/lib/file_systems.js +1 -1
  54. package/lib/file_systems.mjs +1 -1
  55. package/lib/git.js +1 -1
  56. package/lib/git.mjs +1 -1
  57. package/lib/index.js +1 -1
  58. package/lib/index.mjs +1 -1
  59. package/lib/inserters.js +1 -1
  60. package/lib/inserters.mjs +1 -1
  61. package/lib/loaders.d.ts +18 -9
  62. package/lib/loaders.js +318 -253
  63. package/lib/loaders.mjs +64 -10
  64. package/lib/organes.js +1 -1
  65. package/lib/organes.mjs +1 -1
  66. package/lib/parsers/documents.js +1 -1
  67. package/lib/parsers/documents.mjs +1 -1
  68. package/lib/parsers/index.js +1 -1
  69. package/lib/parsers/index.mjs +1 -1
  70. package/lib/parsers/recherche_amendements.js +1 -1
  71. package/lib/parsers/recherche_amendements.mjs +1 -1
  72. package/lib/raw_types/acteurs_et_organes.js +1 -1
  73. package/lib/raw_types/acteurs_et_organes.mjs +1 -1
  74. package/lib/raw_types/agendas.js +1 -1
  75. package/lib/raw_types/agendas.mjs +1 -1
  76. package/lib/raw_types/amendements.js +1 -1
  77. package/lib/raw_types/amendements.mjs +1 -1
  78. package/lib/raw_types/debats.js +1 -1
  79. package/lib/raw_types/debats.mjs +1 -1
  80. package/lib/raw_types/dossiers_legislatifs.d.ts +17 -9
  81. package/lib/raw_types/dossiers_legislatifs.js +37 -16
  82. package/lib/raw_types/dossiers_legislatifs.mjs +37 -14
  83. package/lib/raw_types/questions.js +1 -1
  84. package/lib/raw_types/questions.mjs +1 -1
  85. package/lib/raw_types/scrutins.js +1 -1
  86. package/lib/raw_types/scrutins.mjs +1 -1
  87. package/lib/scripts/bugs_helper.js +1 -1
  88. package/lib/scripts/bugs_helper.mjs +1 -1
  89. package/lib/scripts/clean_reorganized_data.js +2 -2
  90. package/lib/scripts/clean_reorganized_data.mjs +2 -2
  91. package/lib/scripts/diff_amendements.js +1 -1
  92. package/lib/scripts/diff_amendements.mjs +1 -1
  93. package/lib/scripts/document_dossiers_legislatifs.js +1 -1
  94. package/lib/scripts/document_dossiers_legislatifs.mjs +1 -1
  95. package/lib/scripts/get_today_reunions.js +1 -1
  96. package/lib/scripts/get_today_reunions.mjs +1 -1
  97. package/lib/scripts/merge_scrutins.js +1 -1
  98. package/lib/scripts/merge_scrutins.mjs +1 -1
  99. package/lib/scripts/parse_textes_lois.js +1 -1
  100. package/lib/scripts/parse_textes_lois.mjs +1 -1
  101. package/lib/scripts/raw_types_from_amendements.js +1 -1
  102. package/lib/scripts/raw_types_from_amendements.mjs +1 -1
  103. package/lib/scripts/reorganize_data.js +68 -61
  104. package/lib/scripts/reorganize_data.mjs +68 -61
  105. package/lib/scripts/retrieve_deputes_photos.js +1 -1
  106. package/lib/scripts/retrieve_deputes_photos.mjs +1 -1
  107. package/lib/scripts/retrieve_documents.js +1 -1
  108. package/lib/scripts/retrieve_documents.mjs +1 -1
  109. package/lib/scripts/retrieve_open_data.js +1 -1
  110. package/lib/scripts/retrieve_open_data.mjs +1 -1
  111. package/lib/scripts/retrieve_pending_amendments.js +1 -1
  112. package/lib/scripts/retrieve_pending_amendments.mjs +1 -1
  113. package/lib/scripts/retrieve_senateurs_photos.js +1 -1
  114. package/lib/scripts/retrieve_senateurs_photos.mjs +1 -1
  115. package/lib/scripts/retrieve_textes_lois.js +1 -1
  116. package/lib/scripts/retrieve_textes_lois.mjs +1 -1
  117. package/lib/scripts/test_load.js +1 -1
  118. package/lib/scripts/test_load.mjs +1 -1
  119. package/lib/scripts/test_load_big_files.js +1 -1
  120. package/lib/scripts/test_load_big_files.mjs +1 -1
  121. package/lib/scripts/validate_json.js +1 -1
  122. package/lib/scripts/validate_json.mjs +1 -1
  123. package/lib/shared_types/codes_actes.d.ts +4 -0
  124. package/lib/shared_types/codes_actes.js +5 -1
  125. package/lib/shared_types/codes_actes.mjs +5 -1
  126. package/lib/strings.js +1 -1
  127. package/lib/strings.mjs +1 -1
  128. package/lib/types/acteurs_et_organes.js +1 -1
  129. package/lib/types/acteurs_et_organes.mjs +1 -1
  130. package/lib/types/agendas.js +1 -1
  131. package/lib/types/agendas.mjs +1 -1
  132. package/lib/types/amendements.js +1 -1
  133. package/lib/types/amendements.mjs +1 -1
  134. package/lib/types/debats.js +1 -1
  135. package/lib/types/debats.mjs +1 -1
  136. package/lib/types/dossiers_legislatifs.d.ts +11 -0
  137. package/lib/types/dossiers_legislatifs.js +30 -3
  138. package/lib/types/dossiers_legislatifs.mjs +29 -2
  139. package/lib/types/legislatures.js +1 -1
  140. package/lib/types/legislatures.mjs +1 -1
  141. package/lib/types/questions.js +1 -1
  142. package/lib/types/questions.mjs +1 -1
  143. package/lib/types/scrutins.js +1 -1
  144. package/lib/types/scrutins.mjs +1 -1
  145. package/lib/urls.js +1 -1
  146. package/lib/urls.mjs +1 -1
  147. package/package.json +4 -3
@@ -83,7 +83,7 @@ function parseArgs(argv) {
83
83
  function cleanReorganizedData(options) {
84
84
  const dataDir = options.dataDir;
85
85
  Date.prototype.toJSON = patchedDateToJson;
86
- let exitCode = 10; // Nothing to commit
86
+ let exitCode = options.commit ? 10 : 0;
87
87
  const gitGroupUrl = options.clone ? options.clone.trim().replace(/\/+$/, "") : undefined;
88
88
  options.categories.map(datasetName => assert.notStrictEqual(EnabledDatasets[datasetName], undefined, `Unknown name of dataset: ${datasetName}`));
89
89
  const enabledDatasets = options.categories.reduce((enabledDatasets, datasetName) => enabledDatasets | EnabledDatasets[datasetName], EnabledDatasets.None);
@@ -565,4 +565,4 @@ function main(argv) {
565
565
 
566
566
  /* istanbul ignore if */
567
567
  if (process.argv[1].endsWith("clean_reorganized_data.ts")) process.exit(main(process.argv));
568
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsImNsZWFuQWN0ZXVyIiwiY2xlYW5BbWVuZGVtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiY2xlYW5PcmdhbmUiLCJjbGVhblJldW5pb24iLCJjbGVhblNjcnV0aW4iLCJjbGVhblF1ZXN0aW9uIiwiY2xlYW5Db21wdGVSZW5kdSIsImRhdGFzZXRzIiwiRW5hYmxlZERhdGFzZXRzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInBhdGNoZWREYXRlVG9Kc29uIiwid2Fsa0RpciIsImdpdCIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJTY3J1dGluc0NvbnZlcnQiLCJRdWVzdGlvbnNDb252ZXJ0IiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJOdW1iZXIiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiZGF0YURpciIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJleGl0Q29kZSIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInVuZGVmaW5lZCIsImNhdGVnb3JpZXMiLCJtYXAiLCJkYXRhc2V0TmFtZSIsIm5vdFN0cmljdEVxdWFsIiwiZW5hYmxlZERhdGFzZXRzIiwicmVkdWNlIiwiTm9uZSIsImNob3NlbkRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJiYXNlbmFtZSIsImZpbGVuYW1lIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJkYXRhc2V0UmF3RGlyIiwiam9pbiIsImRhdGFzZXRDbGVhbkRpciIsInB1bGwiLCJhbmFseXplQW5kUmVtb3ZlIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJsZW5ndGgiLCJlbmRzV2l0aCIsImFjdGV1clJhd0ZpbGVQYXRoIiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJhY3RldXJSYXdKc29uIiwicmVhZEZpbGVTeW5jIiwiYWN0ZXVyIiwiSlNPTiIsInBhcnNlIiwiYWN0ZXVySnNvbiIsInN0cmluZ2lmeSIsImFjdGV1ckNsZWFuIiwidG9BY3RldXIiLCJhY3RldXJDbGVhbkpzb24iLCJhY3RldXJUb0pzb24iLCJhY3RldXJDbGVhbkZpbGVQYXRoIiwiZW5zdXJlRGlyU3luYyIsImRpcm5hbWUiLCJ3cml0ZUZpbGVTeW5jIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVSYXdGaWxlUGF0aCIsIm9yZ2FuZVJhd0pzb24iLCJvcmdhbmUiLCJvcmdhbmVKc29uIiwib3JnYW5lQ2xlYW4iLCJ0b09yZ2FuZSIsIm9yZ2FuZUNsZWFuSnNvbiIsIm9yZ2FuZVRvSnNvbiIsIm9yZ2FuZUNsZWFuRmlsZVBhdGgiLCJjb21taXQiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiY29tbWl0QW5kUHVzaFVpZCIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25SYXdGaWxlUGF0aCIsInJldW5pb25SYXdKc29uIiwicmV1bmlvbiIsInJldW5pb25Kc29uIiwicmV1bmlvbkNsZWFuIiwidG9SZXVuaW9uIiwicmV1bmlvbkNsZWFuSnNvbiIsInJldW5pb25Ub0pzb24iLCJyZXVuaW9uQ2xlYW5GaWxlUGF0aCIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudFJhd0ZpbGVQYXRoIiwiYW1lbmRlbWVudFJhd0pzb24iLCJhbWVuZGVtZW50IiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50Q2xlYW4iLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50Q2xlYW5Kc29uIiwiYW1lbmRlbWVudFRvSnNvbiIsImFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudFJhd0ZpbGVQYXRoIiwiZG9jdW1lbnRSYXdKc29uIiwiZG9jdW1lbnQiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudENsZWFuIiwidG9Eb2N1bWVudCIsImRvY3VtZW50Q2xlYW5Kc29uIiwiZG9jdW1lbnRUb0pzb24iLCJkb2N1bWVudENsZWFuRmlsZVBhdGgiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llclJhd0ZpbGVQYXRoIiwiZG9zc2llclJhd0pzb24iLCJkb3NzaWVyIiwiZG9zc2llckpzb24iLCJkb3NzaWVyQ2xlYW4iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckNsZWFuSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uIiwiZG9zc2llckNsZWFuRmlsZVBhdGgiLCJTY3J1dGlucyIsInNjcnV0aW5zIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5SYXdGaWxlUGF0aCIsInNjcnV0aW5SYXdKc29uIiwic2NydXRpbiIsInNjcnV0aW5Kc29uIiwic2NydXRpbkNsZWFuIiwidG9TY3J1dGluIiwic2NydXRpbkNsZWFuSnNvbiIsInNjcnV0aW5Ub0pzb24iLCJzY3J1dGluQ2xlYW5GaWxlUGF0aCIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsInF1ZXN0aW9uc1NwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvblJhd0ZpbGVQYXRoIiwicXVlc3Rpb25SYXdKc29uIiwicXVlc3Rpb24iLCJxdWVzdGlvbkpzb24iLCJxdWVzdGlvbkNsZWFuIiwidG9RdWVzdGlvbiIsInF1ZXN0aW9uQ2xlYW5Kc29uIiwicXVlc3Rpb25Ub0pzb24iLCJxdWVzdGlvbkNsZWFuRmlsZVBhdGgiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NwbGl0UGF0aCIsImNvbXB0ZVJlbmR1RmlsZW5hbWUiLCJjb21wdGVSZW5kdVJhd0ZpbGVQYXRoIiwiY29tcHRlUmVuZHVSYXdKc29uIiwiY29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdUpzb24iLCJjb21wdGVSZW5kdUNsZWFuIiwidG9Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1Q2xlYW5Kc29uIiwiY29tcHRlUmVuZHVUb0pzb24iLCJjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgiLCJzaWxlbnQiLCJyZWFkZGlyU3luYyIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJzdWJkaXJlY3RvcmllcyIsImVycm9yIiwidWlkQnJhbmNoVXBkYXRlIiwicnVuIiwiY2hpbGRQcm9jZXNzIiwibWFpbiIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9jbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cywgZmlsdGVyQnlMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuLi90eXBlcy9kZWJhdHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgYWxpYXM6IFwiQ1wiLFxuICAgICAgaGVscDogXCJjbG9uZSByZXBvc2l0b3JpZXMgZnJvbSBnaXZlbiBncm91cCAob3Igb3JnYW5pemF0aW9uKSBnaXQgVVJMXCIsXG4gICAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJjXCIsXG4gICAgICBoZWxwOiBcImNvbW1pdCBjbGVhbiBmaWxlc1wiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJkXCIsXG4gICAgICBoZWxwOiBcInNpbmdsZSBkYXRhc2V0IHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwia1wiLFxuICAgICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgICBoZWxwOiBcImNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImxcIixcbiAgICAgIGhlbHA6IFwibGVnaXNsYXR1cmVzIG9mIGNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmV0cmlldmU7IGxlYXZlIGVtcHR5IG9yIHVzZSAwIGZvciBhbGxcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgICAgdHlwZTogTnVtYmVyLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwicFwiLFxuICAgICAgaGVscDogXCJwdWxsIHJlcG9zaXRvcmllcyBiZWZvcmUgcHJvY2VlZGluZ1wiLFxuICAgICAgbmFtZTogXCJwdWxsXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInNcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZG8gbm90IHJlc2V0IC0taGFyZCBhZnRlciBjb21taXQgdG8gc2F2ZSBJL08gaWYgdGhlIHdvcmtpbmcgdHJlZSBpcyB0byBiZSBkaXNjYXJkZWRcIixcbiAgICAgIG5hbWU6IFwibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwidlwiLFxuICAgICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cblxuICBsZXQgZXhpdENvZGUgPSAxMCAvLyBOb3RoaW5nIHRvIGNvbW1pdFxuICBjb25zdCBnaXRHcm91cFVybCA9IG9wdGlvbnMuY2xvbmVcbiAgICA/IG9wdGlvbnMuY2xvbmUudHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgICA6IHVuZGVmaW5lZFxuXG4gIG9wdGlvbnMuY2F0ZWdvcmllcy5tYXAoKGRhdGFzZXROYW1lOiBzdHJpbmcpID0+XG4gICAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGBVbmtub3duIG5hbWUgb2YgZGF0YXNldDogJHtkYXRhc2V0TmFtZX1gLFxuICAgICksXG4gIClcbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gb3B0aW9ucy5jYXRlZ29yaWVzLnJlZHVjZShcbiAgICAoZW5hYmxlZERhdGFzZXRzOiBFbmFibGVkRGF0YXNldHMsIGRhdGFzZXROYW1lOiBzdHJpbmcpOiBFbmFibGVkRGF0YXNldHMgPT5cbiAgICAgIGVuYWJsZWREYXRhc2V0cyB8XG4gICAgICAoRW5hYmxlZERhdGFzZXRzIGFzIGFueSBhcyB7IFtuYW1lOiBzdHJpbmddOiBFbmFibGVkRGF0YXNldHMgfSlbXG4gICAgICAgIGRhdGFzZXROYW1lXG4gICAgICBdLFxuICAgIEVuYWJsZWREYXRhc2V0cy5Ob25lLFxuICApXG5cbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gZmlsdGVyQnlMZWdpc2xhdHVyZShkYXRhc2V0cywgb3B0aW9ucy5sZWdpc2xhdHVyZSlcblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWN0ZXVyc0V0T3JnYW5lcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCByZXNldCAtLWhhcmQgb3JpZ2luL21hc3RlcmAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcHVsbCAtLXJlYmFzZWAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImFjdGV1cnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFjdGV1clJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLmFjdGV1clNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7YWN0ZXVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoYWN0ZXVyUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGFjdGV1ciA9IEpTT04ucGFyc2UoYWN0ZXVyUmF3SnNvbilcbiAgICAgICAgY2xlYW5BY3RldXIoYWN0ZXVyKVxuICAgICAgICBjb25zdCBhY3RldXJKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuOiBBY3RldXIgPSBBY3RldXJzRXRPcmdhbmVzQ29udmVydC50b0FjdGV1cihhY3RldXJKc29uKVxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQuYWN0ZXVyVG9Kc29uKGFjdGV1ckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGFjdGV1ckNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uYWN0ZXVyU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGFjdGV1ckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGFjdGV1ckNsZWFuRmlsZVBhdGgsIGFjdGV1ckNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJvcmdhbmVzXCJdKSkge1xuICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmdhbmVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5vcmdhbmVTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke29yZ2FuZVJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKG9yZ2FuZVJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBvcmdhbmUgPSBKU09OLnBhcnNlKG9yZ2FuZVJhd0pzb24pXG4gICAgICAgIGNsZWFuT3JnYW5lKG9yZ2FuZSlcbiAgICAgICAgY29uc3Qgb3JnYW5lSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbjogT3JnYW5lID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9PcmdhbmUob3JnYW5lSnNvbilcbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0Lm9yZ2FuZVRvSnNvbihvcmdhbmVDbGVhbilcblxuICAgICAgICBjb25zdCBvcmdhbmVDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLm9yZ2FuZVNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShvcmdhbmVDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhvcmdhbmVDbGVhbkZpbGVQYXRoLCBvcmdhbmVDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcImFjdGV1cnNcIiwgXCJvcmdhbmVzXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHJldW5pb25GaWxlbmFtZSA9IHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZXVuaW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4ucmV1bmlvblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cmV1bmlvblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhyZXVuaW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHJldW5pb24gPSBKU09OLnBhcnNlKHJldW5pb25SYXdKc29uKVxuICAgICAgICBjbGVhblJldW5pb24ocmV1bmlvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHJldW5pb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbjogUmV1bmlvbiA9IEFnZW5kYXNDb252ZXJ0LnRvUmV1bmlvbihyZXVuaW9uSnNvbilcbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBZ2VuZGFzQ29udmVydC5yZXVuaW9uVG9Kc29uKHJldW5pb25DbGVhbilcblxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHJldW5pb25DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhyZXVuaW9uQ2xlYW5GaWxlUGF0aCwgcmV1bmlvbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmFtZW5kZW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7YW1lbmRlbWVudFJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudFJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICBhbWVuZGVtZW50UmF3RmlsZVBhdGgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudCA9IEpTT04ucGFyc2UoYW1lbmRlbWVudFJhd0pzb24pXG4gICAgICAgIGNsZWFuQW1lbmRlbWVudChhbWVuZGVtZW50KVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuOiBBbWVuZGVtZW50ID1cbiAgICAgICAgICBBbWVuZGVtZW50c0NvbnZlcnQudG9BbWVuZGVtZW50KGFtZW5kZW1lbnRKc29uKVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFtZW5kZW1lbnRzQ29udmVydC5hbWVuZGVtZW50VG9Kc29uKGFtZW5kZW1lbnRDbGVhbilcblxuICAgICAgICBjb25zdCBhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aCwgYW1lbmRlbWVudENsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiZG9jdW1lbnRzXCJdKSkge1xuICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID0gZG9jdW1lbnRTcGxpdFBhdGhbZG9jdW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFkb2N1bWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb2N1bWVudFJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9jdW1lbnRSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoZG9jdW1lbnRSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9jdW1lbnQgPSBKU09OLnBhcnNlKGRvY3VtZW50UmF3SnNvbilcbiAgICAgICAgY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24oZG9jdW1lbnQpXG4gICAgICAgIGNvbnN0IGRvY3VtZW50SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZG9jdW1lbnQsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW46IERvY3VtZW50ID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0RvY3VtZW50KGRvY3VtZW50SnNvbilcbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9jdW1lbnRUb0pzb24oZG9jdW1lbnRDbGVhbilcblxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9jdW1lbnRDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkb2N1bWVudENsZWFuRmlsZVBhdGgsIGRvY3VtZW50Q2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRvc3NpZXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJkb3NzaWVyc1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9zc2llckZpbGVuYW1lID0gZG9zc2llclNwbGl0UGF0aFtkb3NzaWVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9zc2llckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvc3NpZXJSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5kb3NzaWVyU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtkb3NzaWVyUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvc3NpZXJSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZG9zc2llciA9IEpTT04ucGFyc2UoZG9zc2llclJhd0pzb24pXG4gICAgICAgIGNsZWFuRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llcilcbiAgICAgICAgY29uc3QgZG9zc2llckpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRvc3NpZXIsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbjogRG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoZG9zc2llckpzb24pXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQuZG9zc2llclBhcmxlbWVudGFpcmVUb0pzb24oZG9zc2llckNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGRvc3NpZXJDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmRvc3NpZXJTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoZG9zc2llckNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGRvc3NpZXJDbGVhbkZpbGVQYXRoLCBkb3NzaWVyQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCJkb2N1bWVudHNcIiwgXCJkb3NzaWVyc1wiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlNjcnV0aW5zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoZGF0YXNldC5maWxlbmFtZSwgXCIuanNvblwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3Qgc2NydXRpblNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9IHNjcnV0aW5TcGxpdFBhdGhbc2NydXRpblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIXNjcnV0aW5GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzY3J1dGluUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uc2NydXRpblNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7c2NydXRpblJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhzY3J1dGluUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHNjcnV0aW4gPSBKU09OLnBhcnNlKHNjcnV0aW5SYXdKc29uKVxuICAgICAgICBjbGVhblNjcnV0aW4oc2NydXRpbilcbiAgICAgICAgY29uc3Qgc2NydXRpbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHNjcnV0aW4sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbjogU2NydXRpbiA9IFNjcnV0aW5zQ29udmVydC50b1NjcnV0aW4oc2NydXRpbkpzb24pXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgU2NydXRpbnNDb252ZXJ0LnNjcnV0aW5Ub0pzb24oc2NydXRpbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHNjcnV0aW5DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnNjcnV0aW5TcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUoc2NydXRpbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHNjcnV0aW5DbGVhbkZpbGVQYXRoLCBzY3J1dGluQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uc1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgIHF1ZXN0aW9uc1NwbGl0UGF0aFtxdWVzdGlvbnNTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFxdWVzdGlvbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5xdWVzdGlvbnNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7cXVlc3Rpb25SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKHF1ZXN0aW9uUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gSlNPTi5wYXJzZShxdWVzdGlvblJhd0pzb24pXG4gICAgICAgIGNsZWFuUXVlc3Rpb24ocXVlc3Rpb24pXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uSnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocXVlc3Rpb24sIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW46IFF1ZXN0aW9uID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnRvUXVlc3Rpb24ocXVlc3Rpb25Kc29uKVxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBRdWVzdGlvbnNDb252ZXJ0LnF1ZXN0aW9uVG9Kc29uKHF1ZXN0aW9uQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLnF1ZXN0aW9uc1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShxdWVzdGlvbkNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aCwgcXVlc3Rpb25DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLnhtbFwiKVxuICAgICAgaWYgKG9wdGlvbnMuZGF0YXNldCAmJiBkYXRhc2V0TmFtZSAhPT0gb3B0aW9ucy5kYXRhc2V0KSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChnaXRHcm91cFVybCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgY2xvbmUgJHtnaXRHcm91cFVybH0vJHtkYXRhc2V0TmFtZX1fbmV0dG95ZS5naXRgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhRGlyLFxuICAgICAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmLThcIixcbiAgICAgICAgICBzdGRpbzogW1wiaWdub3JlXCIsIFwiaWdub3JlXCIsIFwicGlwZVwiXSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWUsIG9wdGlvbnMpXG4gICAgICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgICAgIGZvciAoY29uc3QgY29tcHRlc1JlbmR1c1NwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIpKSB7XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1RmlsZW5hbWUgPVxuICAgICAgICAgIGNvbXB0ZXNSZW5kdXNTcGxpdFBhdGhbY29tcHRlc1JlbmR1c1NwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVSYXdGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0UmF3RGlyLFxuICAgICAgICAgIC4uLmNvbXB0ZXNSZW5kdXNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7Y29tcHRlUmVuZHVSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgIGNvbXB0ZVJlbmR1UmF3RmlsZVBhdGgsXG4gICAgICAgICAge1xuICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHUgPSBKU09OLnBhcnNlKGNvbXB0ZVJlbmR1UmF3SnNvbilcbiAgICAgICAgY2xlYW5Db21wdGVSZW5kdShjb21wdGVSZW5kdSlcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShjb21wdGVSZW5kdSwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbjogQ29tcHRlUmVuZHUgPVxuICAgICAgICAgIENvbXB0ZXNSZW5kdXNDb252ZXJ0LnRvQ29tcHRlUmVuZHUoY29tcHRlUmVuZHVKc29uKVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBDb21wdGVzUmVuZHVzQ29udmVydC5jb21wdGVSZW5kdVRvSnNvbihjb21wdGVSZW5kdUNsZWFuKVxuXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5jb21wdGVzUmVuZHVzU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoY29tcHRlUmVuZHVDbGVhbkZpbGVQYXRoLCBjb21wdGVSZW5kdUNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIGFuYWx5emVBbmRSZW1vdmUoZGF0YXNldE5hbWU6IHN0cmluZywgb3B0aW9uczogYW55KTogYW55IHtcbiAgY29uc3QgZGF0YURpciA9IG9wdGlvbnMuZGF0YURpclxuICBjb25zdCBkYXRhc2V0UmF3RGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgY29uc29sZS5sb2coYENsZWFuaW5nIGRpcmVjdG9yeTogJHtkYXRhc2V0Q2xlYW5EaXJ94oCmYClcbiAgfVxuICBmcy5lbnN1cmVEaXJTeW5jKGRhdGFzZXRDbGVhbkRpcilcbiAgZm9yIChjb25zdCBmaWxlbmFtZSBvZiBmcy5yZWFkZGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpKSB7XG4gICAgaWYgKGZpbGVuYW1lWzBdID09PSBcIi5cIikge1xuICAgICAgY29udGludWVcbiAgICB9XG4gICAgY29uc3QgcGF0aG5hbWUgPSBwYXRoLmpvaW4oZGF0YXNldENsZWFuRGlyLCBmaWxlbmFtZSlcbiAgICBmcy5yZW1vdmVTeW5jKHBhdGhuYW1lKVxuICB9XG59XG5cbmZ1bmN0aW9uIGNvbW1pdEFuZFB1c2hVaWQoXG4gIHJlcG9zaXRvcnlEaXI6IHN0cmluZyxcbiAgb3B0aW9uczogYW55LFxuICBzdWJkaXJlY3RvcmllczogYW55LFxuKTogYm9vbGVhbiB7XG4gIGxldCBlcnJvciA9IGZhbHNlXG4gIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgIGdpdC51aWRCcmFuY2hVcGRhdGUoXG4gICAgICByZXBvc2l0b3J5RGlyLFxuICAgICAgc3ViZGlyZWN0b3JpZXMsXG4gICAgICBvcHRpb25zW1wibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCJdLFxuICAgIClcbiAgICBmb3IgKGNvbnN0IHJlbW90ZSBvZiBvcHRpb25zLnJlbW90ZSB8fCBbXSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZ2l0LnJ1bihyZXBvc2l0b3J5RGlyLCBgcHVzaCAtLXF1aWV0ICR7cmVtb3RlfSB1aWQ6dWlkYClcbiAgICAgIH0gY2F0Y2ggKGNoaWxkUHJvY2Vzcykge1xuICAgICAgICBlcnJvciA9IHRydWVcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGVycm9yXG59XG5cbmZ1bmN0aW9uIG1haW4oYXJndjogYW55KTogbnVtYmVyIHtcbiAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlQXJncyhhcmd2KVxuICByZXR1cm4gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9ucylcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIGlmICovXG5pZiAocHJvY2Vzcy5hcmd2WzFdLmVuZHNXaXRoKFwiY2xlYW5fcmVvcmdhbml6ZWRfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsTUFBTSxNQUFNLFFBQVE7QUFDM0IsU0FBU0MsUUFBUSxRQUFRLGVBQWU7QUFDeEMsT0FBT0MsZUFBZSxNQUFNLG1CQUFtQjtBQUMvQyxPQUFPQyxFQUFFLE1BQU0sVUFBVTtBQUN6QixPQUFPQyxJQUFJLE1BQU0sTUFBTTtBQUFBLFNBR3JCQyxXQUFXLEVBQ1hDLGVBQWUsRUFDZkMsdUJBQXVCLEVBQ3ZCQyx5QkFBeUIsRUFDekJDLFdBQVcsRUFDWEMsWUFBWSxFQUNaQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsZ0JBQWdCO0FBQUEsU0FFVEMsUUFBUSxFQUFFQyxlQUFlLEVBQUVDLG1CQUFtQjtBQUFBLFNBQzlDQyxrQkFBa0IsRUFBRUMsaUJBQWlCO0FBQUEsU0FDckNDLE9BQU87QUFBQSxPQUNULEtBQUtDLEdBQUc7QUFBQSxTQUdiQyxPQUFPLElBQUlDLHVCQUF1QjtBQUFBLFNBRzNCRCxPQUFPLElBQUlFLGNBQWM7QUFBQSxTQUNiRixP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
568
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhc3NlcnQiLCJleGVjU3luYyIsImNvbW1hbmRMaW5lQXJncyIsImZzIiwicGF0aCIsImNsZWFuQWN0ZXVyIiwiY2xlYW5BbWVuZGVtZW50IiwiY2xlYW5Eb2N1bWVudE9yRGl2aXNpb24iLCJjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlIiwiY2xlYW5PcmdhbmUiLCJjbGVhblJldW5pb24iLCJjbGVhblNjcnV0aW4iLCJjbGVhblF1ZXN0aW9uIiwiY2xlYW5Db21wdGVSZW5kdSIsImRhdGFzZXRzIiwiRW5hYmxlZERhdGFzZXRzIiwiZmlsdGVyQnlMZWdpc2xhdHVyZSIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInBhdGNoZWREYXRlVG9Kc29uIiwid2Fsa0RpciIsImdpdCIsIkNvbnZlcnQiLCJBY3RldXJzRXRPcmdhbmVzQ29udmVydCIsIkFnZW5kYXNDb252ZXJ0IiwiQW1lbmRlbWVudHNDb252ZXJ0IiwiRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQiLCJTY3J1dGluc0NvbnZlcnQiLCJRdWVzdGlvbnNDb252ZXJ0IiwiQ29tcHRlc1JlbmR1c0NvbnZlcnQiLCJwYXJzZUFyZ3MiLCJhcmd2Iiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwibmFtZSIsInR5cGUiLCJTdHJpbmciLCJCb29sZWFuIiwiZGVmYXVsdFZhbHVlIiwibXVsdGlwbGUiLCJOdW1iZXIiLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNsZWFuUmVvcmdhbml6ZWREYXRhIiwiZGF0YURpciIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJleGl0Q29kZSIsImNvbW1pdCIsImdpdEdyb3VwVXJsIiwiY2xvbmUiLCJ0cmltIiwicmVwbGFjZSIsInVuZGVmaW5lZCIsImNhdGVnb3JpZXMiLCJtYXAiLCJkYXRhc2V0TmFtZSIsIm5vdFN0cmljdEVxdWFsIiwiZW5hYmxlZERhdGFzZXRzIiwicmVkdWNlIiwiTm9uZSIsImNob3NlbkRhdGFzZXRzIiwibGVnaXNsYXR1cmUiLCJBY3RldXJzRXRPcmdhbmVzIiwiZGF0YXNldCIsImFjdGV1cnNFdE9yZ2FuZXMiLCJiYXNlbmFtZSIsImZpbGVuYW1lIiwiY3dkIiwiZW52IiwicHJvY2VzcyIsImVuY29kaW5nIiwic3RkaW8iLCJkYXRhc2V0UmF3RGlyIiwiam9pbiIsImRhdGFzZXRDbGVhbkRpciIsInB1bGwiLCJhbmFseXplQW5kUmVtb3ZlIiwiYWN0ZXVyU3BsaXRQYXRoIiwiYWN0ZXVyRmlsZW5hbWUiLCJsZW5ndGgiLCJlbmRzV2l0aCIsImFjdGV1clJhd0ZpbGVQYXRoIiwidmVyYm9zZSIsImNvbnNvbGUiLCJsb2ciLCJhY3RldXJSYXdKc29uIiwicmVhZEZpbGVTeW5jIiwiYWN0ZXVyIiwiSlNPTiIsInBhcnNlIiwiYWN0ZXVySnNvbiIsInN0cmluZ2lmeSIsImFjdGV1ckNsZWFuIiwidG9BY3RldXIiLCJhY3RldXJDbGVhbkpzb24iLCJhY3RldXJUb0pzb24iLCJhY3RldXJDbGVhbkZpbGVQYXRoIiwiZW5zdXJlRGlyU3luYyIsImRpcm5hbWUiLCJ3cml0ZUZpbGVTeW5jIiwib3JnYW5lU3BsaXRQYXRoIiwib3JnYW5lRmlsZW5hbWUiLCJvcmdhbmVSYXdGaWxlUGF0aCIsIm9yZ2FuZVJhd0pzb24iLCJvcmdhbmUiLCJvcmdhbmVKc29uIiwib3JnYW5lQ2xlYW4iLCJ0b09yZ2FuZSIsIm9yZ2FuZUNsZWFuSnNvbiIsIm9yZ2FuZVRvSnNvbiIsIm9yZ2FuZUNsZWFuRmlsZVBhdGgiLCJlcnJvckNvZGUiLCJjb21taXRBbmRQdXNoIiwicmVtb3RlIiwiY29tbWl0QW5kUHVzaFVpZCIsIkFnZW5kYXMiLCJhZ2VuZGFzIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25SYXdGaWxlUGF0aCIsInJldW5pb25SYXdKc29uIiwicmV1bmlvbiIsInJldW5pb25Kc29uIiwicmV1bmlvbkNsZWFuIiwidG9SZXVuaW9uIiwicmV1bmlvbkNsZWFuSnNvbiIsInJldW5pb25Ub0pzb24iLCJyZXVuaW9uQ2xlYW5GaWxlUGF0aCIsIkFtZW5kZW1lbnRzIiwiYW1lbmRlbWVudHMiLCJhbWVuZGVtZW50U3BsaXRQYXRoIiwiYW1lbmRlbWVudEZpbGVuYW1lIiwiYW1lbmRlbWVudFJhd0ZpbGVQYXRoIiwiYW1lbmRlbWVudFJhd0pzb24iLCJhbWVuZGVtZW50IiwiYW1lbmRlbWVudEpzb24iLCJhbWVuZGVtZW50Q2xlYW4iLCJ0b0FtZW5kZW1lbnQiLCJhbWVuZGVtZW50Q2xlYW5Kc29uIiwiYW1lbmRlbWVudFRvSnNvbiIsImFtZW5kZW1lbnRDbGVhbkZpbGVQYXRoIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsImRvc3NpZXJzTGVnaXNsYXRpZnMiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudFJhd0ZpbGVQYXRoIiwiZG9jdW1lbnRSYXdKc29uIiwiZG9jdW1lbnQiLCJkb2N1bWVudEpzb24iLCJkb2N1bWVudENsZWFuIiwidG9Eb2N1bWVudCIsImRvY3VtZW50Q2xlYW5Kc29uIiwiZG9jdW1lbnRUb0pzb24iLCJkb2N1bWVudENsZWFuRmlsZVBhdGgiLCJkb3NzaWVyU3BsaXRQYXRoIiwiZG9zc2llckZpbGVuYW1lIiwiZG9zc2llclJhd0ZpbGVQYXRoIiwiZG9zc2llclJhd0pzb24iLCJkb3NzaWVyIiwiZG9zc2llckpzb24iLCJkb3NzaWVyQ2xlYW4iLCJ0b0Rvc3NpZXJQYXJsZW1lbnRhaXJlIiwiZG9zc2llckNsZWFuSnNvbiIsImRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uIiwiZG9zc2llckNsZWFuRmlsZVBhdGgiLCJTY3J1dGlucyIsInNjcnV0aW5zIiwic2NydXRpblNwbGl0UGF0aCIsInNjcnV0aW5GaWxlbmFtZSIsInNjcnV0aW5SYXdGaWxlUGF0aCIsInNjcnV0aW5SYXdKc29uIiwic2NydXRpbiIsInNjcnV0aW5Kc29uIiwic2NydXRpbkNsZWFuIiwidG9TY3J1dGluIiwic2NydXRpbkNsZWFuSnNvbiIsInNjcnV0aW5Ub0pzb24iLCJzY3J1dGluQ2xlYW5GaWxlUGF0aCIsIlF1ZXN0aW9ucyIsInF1ZXN0aW9ucyIsInF1ZXN0aW9uc1NwbGl0UGF0aCIsInF1ZXN0aW9uRmlsZW5hbWUiLCJxdWVzdGlvblJhd0ZpbGVQYXRoIiwicXVlc3Rpb25SYXdKc29uIiwicXVlc3Rpb24iLCJxdWVzdGlvbkpzb24iLCJxdWVzdGlvbkNsZWFuIiwidG9RdWVzdGlvbiIsInF1ZXN0aW9uQ2xlYW5Kc29uIiwicXVlc3Rpb25Ub0pzb24iLCJxdWVzdGlvbkNsZWFuRmlsZVBhdGgiLCJDb21wdGVzUmVuZHVzU2VhbmNlcyIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiY29tcHRlc1JlbmR1c1NwbGl0UGF0aCIsImNvbXB0ZVJlbmR1RmlsZW5hbWUiLCJjb21wdGVSZW5kdVJhd0ZpbGVQYXRoIiwiY29tcHRlUmVuZHVSYXdKc29uIiwiY29tcHRlUmVuZHUiLCJjb21wdGVSZW5kdUpzb24iLCJjb21wdGVSZW5kdUNsZWFuIiwidG9Db21wdGVSZW5kdSIsImNvbXB0ZVJlbmR1Q2xlYW5Kc29uIiwiY29tcHRlUmVuZHVUb0pzb24iLCJjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgiLCJzaWxlbnQiLCJyZWFkZGlyU3luYyIsInBhdGhuYW1lIiwicmVtb3ZlU3luYyIsInJlcG9zaXRvcnlEaXIiLCJzdWJkaXJlY3RvcmllcyIsImVycm9yIiwidWlkQnJhbmNoVXBkYXRlIiwicnVuIiwiY2hpbGRQcm9jZXNzIiwibWFpbiIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9jbGVhbl9yZW9yZ2FuaXplZF9kYXRhLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiXG5pbXBvcnQgeyBleGVjU3luYyB9IGZyb20gXCJjaGlsZF9wcm9jZXNzXCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuXG5pbXBvcnQge1xuICBjbGVhbkFjdGV1cixcbiAgY2xlYW5BbWVuZGVtZW50LFxuICBjbGVhbkRvY3VtZW50T3JEaXZpc2lvbixcbiAgY2xlYW5Eb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgY2xlYW5PcmdhbmUsXG4gIGNsZWFuUmV1bmlvbixcbiAgY2xlYW5TY3J1dGluLFxuICBjbGVhblF1ZXN0aW9uLFxuICBjbGVhbkNvbXB0ZVJlbmR1LFxufSBmcm9tIFwiLi4vY2xlYW5lcnNcIlxuaW1wb3J0IHsgZGF0YXNldHMsIEVuYWJsZWREYXRhc2V0cywgZmlsdGVyQnlMZWdpc2xhdHVyZSB9IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7XG4gIEFjdGV1cixcbiAgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzQ29udmVydCxcbiAgT3JnYW5lLFxufSBmcm9tIFwiLi4vdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc0NvbnZlcnQsIFJldW5pb24gfSBmcm9tIFwiLi4vdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBBbWVuZGVtZW50LCBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzQ29udmVydCB9IGZyb20gXCIuLi90eXBlcy9hbWVuZGVtZW50c1wiXG5pbXBvcnQge1xuICBDb252ZXJ0IGFzIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LFxuICBEb2N1bWVudCxcbiAgRG9zc2llclBhcmxlbWVudGFpcmUsXG59IGZyb20gXCIuLi90eXBlcy9kb3NzaWVyc19sZWdpc2xhdGlmc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFNjcnV0aW5zQ29udmVydCwgU2NydXRpbiB9IGZyb20gXCIuLi90eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc0NvbnZlcnQsIFF1ZXN0aW9uIH0gZnJvbSBcIi4uL3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNDb252ZXJ0LCBDb21wdGVSZW5kdSB9IGZyb20gXCIuLi90eXBlcy9kZWJhdHNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAge1xuICAgICAgYWxpYXM6IFwiQ1wiLFxuICAgICAgaGVscDogXCJjbG9uZSByZXBvc2l0b3JpZXMgZnJvbSBnaXZlbiBncm91cCAob3Igb3JnYW5pemF0aW9uKSBnaXQgVVJMXCIsXG4gICAgICBuYW1lOiBcImNsb25lXCIsXG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJjXCIsXG4gICAgICBoZWxwOiBcImNvbW1pdCBjbGVhbiBmaWxlc1wiLFxuICAgICAgbmFtZTogXCJjb21taXRcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgICB7XG4gICAgICBhbGlhczogXCJkXCIsXG4gICAgICBoZWxwOiBcInNpbmdsZSBkYXRhc2V0IHRvIHJlb3JnYW5pemVcIixcbiAgICAgIG5hbWU6IFwiZGF0YXNldFwiLFxuICAgICAgdHlwZTogU3RyaW5nLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwia1wiLFxuICAgICAgZGVmYXVsdFZhbHVlOiBbXCJBbGxcIl0sXG4gICAgICBoZWxwOiBcImNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmVvcmdhbml6ZVwiLFxuICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICBuYW1lOiBcImNhdGVnb3JpZXNcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcImxcIixcbiAgICAgIGhlbHA6IFwibGVnaXNsYXR1cmVzIG9mIGNhdGVnb3JpZXMgb2YgZGF0YXNldHMgdG8gcmV0cmlldmU7IGxlYXZlIGVtcHR5IG9yIHVzZSAwIGZvciBhbGxcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJsZWdpc2xhdHVyZVwiLFxuICAgICAgdHlwZTogTnVtYmVyLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwicFwiLFxuICAgICAgaGVscDogXCJwdWxsIHJlcG9zaXRvcmllcyBiZWZvcmUgcHJvY2VlZGluZ1wiLFxuICAgICAgbmFtZTogXCJwdWxsXCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgaGVscDogXCJwdXNoIGNvbW1pdCB0byBnaXZlbiByZW1vdGVcIixcbiAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgbmFtZTogXCJyZW1vdGVcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFsaWFzOiBcInNcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgbG9nIGFueXRoaW5nXCIsXG4gICAgICBuYW1lOiBcInNpbGVudFwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGhlbHA6IFwiZG8gbm90IHJlc2V0IC0taGFyZCBhZnRlciBjb21taXQgdG8gc2F2ZSBJL08gaWYgdGhlIHdvcmtpbmcgdHJlZSBpcyB0byBiZSBkaXNjYXJkZWRcIixcbiAgICAgIG5hbWU6IFwibm8tcmVzZXQtYWZ0ZXItY29tbWl0XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gICAge1xuICAgICAgYWxpYXM6IFwidlwiLFxuICAgICAgaGVscDogXCJ2ZXJib3NlIGxvZ3NcIixcbiAgICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICB9LFxuICAgIHtcbiAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICBoZWxwOiBcImRpcmVjdG9yeSBjb250YWluaW5nIEFzc2VtYmzDqWUgb3BlbiBkYXRhIGZpbGVzXCIsXG4gICAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICB9LFxuICBdXG4gIGNvbnN0IG9wdGlvbnMgPSBjb21tYW5kTGluZUFyZ3Mob3B0aW9uc0RlZmluaXRpb25zLCB7XG4gICAgYXJndjogYXJndixcbiAgfSlcbiAgcmV0dXJuIG9wdGlvbnNcbn1cblxuZnVuY3Rpb24gY2xlYW5SZW9yZ2FuaXplZERhdGEob3B0aW9uczogYW55KTogbnVtYmVyIHtcbiAgY29uc3QgZGF0YURpcjogc3RyaW5nID0gb3B0aW9ucy5kYXRhRGlyXG5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cblxuICBsZXQgZXhpdENvZGUgPSBvcHRpb25zLmNvbW1pdCA/IDEwIDogMDtcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lXG4gICAgPyBvcHRpb25zLmNsb25lLnRyaW0oKS5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpXG4gICAgOiB1bmRlZmluZWRcblxuICBvcHRpb25zLmNhdGVnb3JpZXMubWFwKChkYXRhc2V0TmFtZTogc3RyaW5nKSA9PlxuICAgIGFzc2VydC5ub3RTdHJpY3RFcXVhbChcbiAgICAgIChFbmFibGVkRGF0YXNldHMgYXMgYW55IGFzIHsgW25hbWU6IHN0cmluZ106IEVuYWJsZWREYXRhc2V0cyB9KVtcbiAgICAgICAgZGF0YXNldE5hbWVcbiAgICAgIF0sXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBgVW5rbm93biBuYW1lIG9mIGRhdGFzZXQ6ICR7ZGF0YXNldE5hbWV9YCxcbiAgICApLFxuICApXG4gIGNvbnN0IGVuYWJsZWREYXRhc2V0cyA9IG9wdGlvbnMuY2F0ZWdvcmllcy5yZWR1Y2UoXG4gICAgKGVuYWJsZWREYXRhc2V0czogRW5hYmxlZERhdGFzZXRzLCBkYXRhc2V0TmFtZTogc3RyaW5nKTogRW5hYmxlZERhdGFzZXRzID0+XG4gICAgICBlbmFibGVkRGF0YXNldHMgfFxuICAgICAgKEVuYWJsZWREYXRhc2V0cyBhcyBhbnkgYXMgeyBbbmFtZTogc3RyaW5nXTogRW5hYmxlZERhdGFzZXRzIH0pW1xuICAgICAgICBkYXRhc2V0TmFtZVxuICAgICAgXSxcbiAgICBFbmFibGVkRGF0YXNldHMuTm9uZSxcbiAgKVxuXG4gIGxldCBjaG9zZW5EYXRhc2V0cyA9IGZpbHRlckJ5TGVnaXNsYXR1cmUoZGF0YXNldHMsIG9wdGlvbnMubGVnaXNsYXR1cmUpXG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgICAgIGV4ZWNTeW5jKGBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi9tYXN0ZXJgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgICBleGVjU3luYyhgZ2l0IHB1bGwgLS1yZWJhc2VgLCB7XG4gICAgICAgICAgY3dkOiBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgZm9yIChjb25zdCBhY3RldXJTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyLCBbXCJhY3RldXJzXCJdKSkge1xuICAgICAgICBjb25zdCBhY3RldXJGaWxlbmFtZSA9IGFjdGV1clNwbGl0UGF0aFthY3RldXJTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFhY3RldXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhY3RldXJSYXdGaWxlUGF0aCA9IHBhdGguam9pbihkYXRhc2V0UmF3RGlyLCAuLi5hY3RldXJTcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2FjdGV1clJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWN0ZXVyUmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGFjdGV1clJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBhY3RldXIgPSBKU09OLnBhcnNlKGFjdGV1clJhd0pzb24pXG4gICAgICAgIGNsZWFuQWN0ZXVyKGFjdGV1cilcbiAgICAgICAgY29uc3QgYWN0ZXVySnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbjogQWN0ZXVyID0gQWN0ZXVyc0V0T3JnYW5lc0NvbnZlcnQudG9BY3RldXIoYWN0ZXVySnNvbilcbiAgICAgICAgY29uc3QgYWN0ZXVyQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LmFjdGV1clRvSnNvbihhY3RldXJDbGVhbilcblxuICAgICAgICBjb25zdCBhY3RldXJDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmFjdGV1clNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShhY3RldXJDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhhY3RldXJDbGVhbkZpbGVQYXRoLCBhY3RldXJDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGZvciAoY29uc3Qgb3JnYW5lU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wib3JnYW5lc1wiXSkpIHtcbiAgICAgICAgY29uc3Qgb3JnYW5lRmlsZW5hbWUgPSBvcmdhbmVTcGxpdFBhdGhbb3JnYW5lU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghb3JnYW5lRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3JnYW5lUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4ub3JnYW5lU3BsaXRQYXRoKVxuICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYCAgQ2xlYW5pbmcgZmlsZTogJHtvcmdhbmVSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9yZ2FuZVJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhvcmdhbmVSYXdGaWxlUGF0aCwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3Qgb3JnYW5lID0gSlNPTi5wYXJzZShvcmdhbmVSYXdKc29uKVxuICAgICAgICBjbGVhbk9yZ2FuZShvcmdhbmUpXG4gICAgICAgIGNvbnN0IG9yZ2FuZUpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMilcblxuICAgICAgICAvLyBWYWxpZGF0ZSBnZW5lcmF0ZWQgSlNPTi5cbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW46IE9yZ2FuZSA9IEFjdGV1cnNFdE9yZ2FuZXNDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZUpzb24pXG4gICAgICAgIGNvbnN0IG9yZ2FuZUNsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBY3RldXJzRXRPcmdhbmVzQ29udmVydC5vcmdhbmVUb0pzb24ob3JnYW5lQ2xlYW4pXG5cbiAgICAgICAgY29uc3Qgb3JnYW5lQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5vcmdhbmVTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUob3JnYW5lQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMob3JnYW5lQ2xlYW5GaWxlUGF0aCwgb3JnYW5lQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCJhY3RldXJzXCIsIFwib3JnYW5lc1wiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPSByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmV1bmlvblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLnJldW5pb25TcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3JldW5pb25SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJldW5pb25SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMocmV1bmlvblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCByZXVuaW9uID0gSlNPTi5wYXJzZShyZXVuaW9uUmF3SnNvbilcbiAgICAgICAgY2xlYW5SZXVuaW9uKHJldW5pb24pXG4gICAgICAgIGNvbnN0IHJldW5pb25Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShyZXVuaW9uLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCByZXVuaW9uQ2xlYW46IFJldW5pb24gPSBBZ2VuZGFzQ29udmVydC50b1JldW5pb24ocmV1bmlvbkpzb24pXG4gICAgICAgIGNvbnN0IHJldW5pb25DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQWdlbmRhc0NvbnZlcnQucmV1bmlvblRvSnNvbihyZXVuaW9uQ2xlYW4pXG5cbiAgICAgICAgY29uc3QgcmV1bmlvbkNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4ucmV1bmlvblNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShyZXVuaW9uQ2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocmV1bmlvbkNsZWFuRmlsZVBhdGgsIHJldW5pb25DbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BbWVuZGVtZW50cykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hbWVuZGVtZW50cykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBhbWVuZGVtZW50RmlsZW5hbWUgPVxuICAgICAgICAgIGFtZW5kZW1lbnRTcGxpdFBhdGhbYW1lbmRlbWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWFtZW5kZW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbWVuZGVtZW50UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2FtZW5kZW1lbnRSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRSYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgYW1lbmRlbWVudFJhd0ZpbGVQYXRoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBKU09OLnBhcnNlKGFtZW5kZW1lbnRSYXdKc29uKVxuICAgICAgICBjbGVhbkFtZW5kZW1lbnQoYW1lbmRlbWVudClcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudEpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGFtZW5kZW1lbnRDbGVhbjogQW1lbmRlbWVudCA9XG4gICAgICAgICAgQW1lbmRlbWVudHNDb252ZXJ0LnRvQW1lbmRlbWVudChhbWVuZGVtZW50SnNvbilcbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuSnNvbjogc3RyaW5nID1cbiAgICAgICAgICBBbWVuZGVtZW50c0NvbnZlcnQuYW1lbmRlbWVudFRvSnNvbihhbWVuZGVtZW50Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgYW1lbmRlbWVudENsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShhbWVuZGVtZW50Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoYW1lbmRlbWVudENsZWFuRmlsZVBhdGgsIGFtZW5kZW1lbnRDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Eb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBkb2N1bWVudFNwbGl0UGF0aCBvZiB3YWxrRGlyKGRhdGFzZXRSYXdEaXIsIFtcImRvY3VtZW50c1wiXSkpIHtcbiAgICAgICAgY29uc3QgZG9jdW1lbnRGaWxlbmFtZSA9IGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb2N1bWVudFJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7ZG9jdW1lbnRSYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRvY3VtZW50UmF3SnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGRvY3VtZW50UmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gSlNPTi5wYXJzZShkb2N1bWVudFJhd0pzb24pXG4gICAgICAgIGNsZWFuRG9jdW1lbnRPckRpdmlzaW9uKGRvY3VtZW50KVxuICAgICAgICBjb25zdCBkb2N1bWVudEpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRvY3VtZW50LCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBkb2N1bWVudENsZWFuOiBEb2N1bWVudCA9XG4gICAgICAgICAgRG9zc2llcnNMZWdpc2xhdGlmc0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudEpzb24pXG4gICAgICAgIGNvbnN0IGRvY3VtZW50Q2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvY3VtZW50VG9Kc29uKGRvY3VtZW50Q2xlYW4pXG5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRDbGVhbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIC4uLmRvY3VtZW50U3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGRvY3VtZW50Q2xlYW5GaWxlUGF0aCkpXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZG9jdW1lbnRDbGVhbkZpbGVQYXRoLCBkb2N1bWVudENsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkb3NzaWVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoZGF0YXNldFJhd0RpciwgW1wiZG9zc2llcnNcIl0pKSB7XG4gICAgICAgIGNvbnN0IGRvc3NpZXJGaWxlbmFtZSA9IGRvc3NpZXJTcGxpdFBhdGhbZG9zc2llclNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICBpZiAoIWRvc3NpZXJGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkb3NzaWVyUmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oZGF0YXNldFJhd0RpciwgLi4uZG9zc2llclNwbGl0UGF0aClcbiAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGAgIENsZWFuaW5nIGZpbGU6ICR7ZG9zc2llclJhd0ZpbGVQYXRofeKApmApXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZG9zc2llclJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhkb3NzaWVyUmF3RmlsZVBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRvc3NpZXIgPSBKU09OLnBhcnNlKGRvc3NpZXJSYXdKc29uKVxuICAgICAgICBjbGVhbkRvc3NpZXJQYXJsZW1lbnRhaXJlKGRvc3NpZXIpXG4gICAgICAgIGNvbnN0IGRvc3NpZXJKc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkb3NzaWVyLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBkb3NzaWVyQ2xlYW46IERvc3NpZXJQYXJsZW1lbnRhaXJlID1cbiAgICAgICAgICBEb3NzaWVyc0xlZ2lzbGF0aWZzQ29udmVydC50b0Rvc3NpZXJQYXJsZW1lbnRhaXJlKGRvc3NpZXJKc29uKVxuICAgICAgICBjb25zdCBkb3NzaWVyQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIERvc3NpZXJzTGVnaXNsYXRpZnNDb252ZXJ0LmRvc3NpZXJQYXJsZW1lbnRhaXJlVG9Kc29uKGRvc3NpZXJDbGVhbilcblxuICAgICAgICBjb25zdCBkb3NzaWVyQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5kb3NzaWVyU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKGRvc3NpZXJDbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhkb3NzaWVyQ2xlYW5GaWxlUGF0aCwgZG9zc2llckNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiZG9jdW1lbnRzXCIsIFwiZG9zc2llcnNcIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5zY3J1dGlucykge1xuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKGRhdGFzZXQuZmlsZW5hbWUsIFwiLmpzb25cIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBzY3J1dGluRmlsZW5hbWUgPSBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2NydXRpblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKGRhdGFzZXRSYXdEaXIsIC4uLnNjcnV0aW5TcGxpdFBhdGgpXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3NjcnV0aW5SYXdGaWxlUGF0aH3igKZgKVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNjcnV0aW5SYXdKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoc2NydXRpblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBzY3J1dGluID0gSlNPTi5wYXJzZShzY3J1dGluUmF3SnNvbilcbiAgICAgICAgY2xlYW5TY3J1dGluKHNjcnV0aW4pXG4gICAgICAgIGNvbnN0IHNjcnV0aW5Kc29uOiBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShzY3J1dGluLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW46IFNjcnV0aW4gPSBTY3J1dGluc0NvbnZlcnQudG9TY3J1dGluKHNjcnV0aW5Kc29uKVxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW5Kc29uOiBzdHJpbmcgPVxuICAgICAgICAgIFNjcnV0aW5zQ29udmVydC5zY3J1dGluVG9Kc29uKHNjcnV0aW5DbGVhbilcblxuICAgICAgICBjb25zdCBzY3J1dGluQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMocGF0aC5kaXJuYW1lKHNjcnV0aW5DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhzY3J1dGluQ2xlYW5GaWxlUGF0aCwgc2NydXRpbkNsZWFuSnNvbiwge1xuICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICAgIGNvbnN0IGVycm9yQ29kZSA9IGdpdC5jb21taXRBbmRQdXNoKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgICBvcHRpb25zLnJlbW90ZSxcbiAgICAgICAgKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGV4aXRDb2RlID09PSAxMCAmJiBlcnJvckNvZGUgIT09IDEwKSB8fFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICAgKSB7XG4gICAgICAgICAgZXhpdENvZGUgPSBlcnJvckNvZGVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBjb21taXRBbmRQdXNoVWlkKGRhdGFzZXRDbGVhbkRpciwgb3B0aW9ucywgW1wiLlwiXSkgJiZcbiAgICAgICAgKGV4aXRDb2RlID09PSAwIHx8IGV4aXRDb2RlID09PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IDFcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi5qc29uXCIpXG4gICAgICBpZiAob3B0aW9ucy5kYXRhc2V0ICYmIGRhdGFzZXROYW1lICE9PSBvcHRpb25zLmRhdGFzZXQpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZXhlY1N5bmMoYGdpdCBjbG9uZSAke2dpdEdyb3VwVXJsfS8ke2RhdGFzZXROYW1lfV9uZXR0b3llLmdpdGAsIHtcbiAgICAgICAgICBjd2Q6IGRhdGFEaXIsXG4gICAgICAgICAgZW52OiBwcm9jZXNzLmVudixcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgICAgIHN0ZGlvOiBbXCJpZ25vcmVcIiwgXCJpZ25vcmVcIiwgXCJwaXBlXCJdLFxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgYW5hbHl6ZUFuZFJlbW92ZShkYXRhc2V0TmFtZSwgb3B0aW9ucylcbiAgICAgIGNvbnN0IGRhdGFzZXRSYXdEaXI6IHN0cmluZyA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNvbnN0IGRhdGFzZXRDbGVhbkRpcjogc3RyaW5nID0gZGF0YXNldFJhd0RpciArIFwiX25ldHRveWVcIlxuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbnNTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVuYW1lID1cbiAgICAgICAgICBxdWVzdGlvbnNTcGxpdFBhdGhbcXVlc3Rpb25zU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvblJhd0ZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRSYXdEaXIsXG4gICAgICAgICAgLi4ucXVlc3Rpb25zU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke3F1ZXN0aW9uUmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBxdWVzdGlvblJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhxdWVzdGlvblJhd0ZpbGVQYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgICBjb25zdCBxdWVzdGlvbiA9IEpTT04ucGFyc2UocXVlc3Rpb25SYXdKc29uKVxuICAgICAgICBjbGVhblF1ZXN0aW9uKHF1ZXN0aW9uKVxuICAgICAgICBjb25zdCBxdWVzdGlvbkpzb246IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHF1ZXN0aW9uLCBudWxsLCAyKVxuXG4gICAgICAgIC8vIFZhbGlkYXRlIGdlbmVyYXRlZCBKU09OLlxuICAgICAgICBjb25zdCBxdWVzdGlvbkNsZWFuOiBRdWVzdGlvbiA9XG4gICAgICAgICAgUXVlc3Rpb25zQ29udmVydC50b1F1ZXN0aW9uKHF1ZXN0aW9uSnNvbilcbiAgICAgICAgY29uc3QgcXVlc3Rpb25DbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgUXVlc3Rpb25zQ29udmVydC5xdWVzdGlvblRvSnNvbihxdWVzdGlvbkNsZWFuKVxuXG4gICAgICAgIGNvbnN0IHF1ZXN0aW9uQ2xlYW5GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgIGRhdGFzZXRDbGVhbkRpcixcbiAgICAgICAgICAuLi5xdWVzdGlvbnNTcGxpdFBhdGgsXG4gICAgICAgIClcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhwYXRoLmRpcm5hbWUocXVlc3Rpb25DbGVhbkZpbGVQYXRoKSlcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhxdWVzdGlvbkNsZWFuRmlsZVBhdGgsIHF1ZXN0aW9uQ2xlYW5Kc29uLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgICAgZGF0YXNldENsZWFuRGlyLFxuICAgICAgICAgIFwiTm91dmVsbGUgbW9pc3NvblwiLFxuICAgICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgICApXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgICApIHtcbiAgICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGNvbW1pdEFuZFB1c2hVaWQoZGF0YXNldENsZWFuRGlyLCBvcHRpb25zLCBbXCIuXCJdKSAmJlxuICAgICAgICAoZXhpdENvZGUgPT09IDAgfHwgZXhpdENvZGUgPT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gMVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShkYXRhc2V0LmZpbGVuYW1lLCBcIi54bWxcIilcbiAgICAgIGlmIChvcHRpb25zLmRhdGFzZXQgJiYgZGF0YXNldE5hbWUgIT09IG9wdGlvbnMuZGF0YXNldCkge1xuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoZ2l0R3JvdXBVcmwgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9X25ldHRveWUuZ2l0YCwge1xuICAgICAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgICAgICBlbnY6IHByb2Nlc3MuZW52LFxuICAgICAgICAgIGVuY29kaW5nOiBcInV0Zi04XCIsXG4gICAgICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgICBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lLCBvcHRpb25zKVxuICAgICAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY29uc3QgZGF0YXNldENsZWFuRGlyOiBzdHJpbmcgPSBkYXRhc2V0UmF3RGlyICsgXCJfbmV0dG95ZVwiXG4gICAgICBmb3IgKGNvbnN0IGNvbXB0ZXNSZW5kdXNTcGxpdFBhdGggb2Ygd2Fsa0RpcihkYXRhc2V0UmF3RGlyKSkge1xuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUZpbGVuYW1lID1cbiAgICAgICAgICBjb21wdGVzUmVuZHVzU3BsaXRQYXRoW2NvbXB0ZXNSZW5kdXNTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgaWYgKCFjb21wdGVSZW5kdUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1UmF3RmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgZGF0YXNldFJhd0RpcixcbiAgICAgICAgICAuLi5jb21wdGVzUmVuZHVzU3BsaXRQYXRoLFxuICAgICAgICApXG4gICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgICBDbGVhbmluZyBmaWxlOiAke2NvbXB0ZVJlbmR1UmF3RmlsZVBhdGh94oCmYClcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdVJhd0pzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICBjb21wdGVSZW5kdVJhd0ZpbGVQYXRoLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1ID0gSlNPTi5wYXJzZShjb21wdGVSZW5kdVJhd0pzb24pXG4gICAgICAgIGNsZWFuQ29tcHRlUmVuZHUoY29tcHRlUmVuZHUpXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1SnNvbjogc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29tcHRlUmVuZHUsIG51bGwsIDIpXG5cbiAgICAgICAgLy8gVmFsaWRhdGUgZ2VuZXJhdGVkIEpTT04uXG4gICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1Q2xlYW46IENvbXB0ZVJlbmR1ID1cbiAgICAgICAgICBDb21wdGVzUmVuZHVzQ29udmVydC50b0NvbXB0ZVJlbmR1KGNvbXB0ZVJlbmR1SnNvbilcbiAgICAgICAgY29uc3QgY29tcHRlUmVuZHVDbGVhbkpzb246IHN0cmluZyA9XG4gICAgICAgICAgQ29tcHRlc1JlbmR1c0NvbnZlcnQuY29tcHRlUmVuZHVUb0pzb24oY29tcHRlUmVuZHVDbGVhbilcblxuICAgICAgICBjb25zdCBjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgLi4uY29tcHRlc1JlbmR1c1NwbGl0UGF0aCxcbiAgICAgICAgKVxuICAgICAgICBmcy5lbnN1cmVEaXJTeW5jKHBhdGguZGlybmFtZShjb21wdGVSZW5kdUNsZWFuRmlsZVBhdGgpKVxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKGNvbXB0ZVJlbmR1Q2xlYW5GaWxlUGF0aCwgY29tcHRlUmVuZHVDbGVhbkpzb24sIHtcbiAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgIH0pXG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgICBkYXRhc2V0Q2xlYW5EaXIsXG4gICAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICAgIClcbiAgICAgICAgaWYgKFxuICAgICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgICAoZXhpdENvZGUgPT09IDAgJiYgZXJyb3JDb2RlICE9PSAwICYmIGVycm9yQ29kZSAhPT0gMTApXG4gICAgICAgICkge1xuICAgICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgY29tbWl0QW5kUHVzaFVpZChkYXRhc2V0Q2xlYW5EaXIsIG9wdGlvbnMsIFtcIi5cIl0pICYmXG4gICAgICAgIChleGl0Q29kZSA9PT0gMCB8fCBleGl0Q29kZSA9PT0gMTApXG4gICAgICApIHtcbiAgICAgICAgZXhpdENvZGUgPSAxXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiBhbmFseXplQW5kUmVtb3ZlKGRhdGFzZXROYW1lOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IGFueSB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgY29uc3QgZGF0YXNldFJhd0Rpcjogc3RyaW5nID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICBjb25zdCBkYXRhc2V0Q2xlYW5EaXI6IHN0cmluZyA9IGRhdGFzZXRSYXdEaXIgKyBcIl9uZXR0b3llXCJcbiAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgIGNvbnNvbGUubG9nKGBDbGVhbmluZyBkaXJlY3Rvcnk6ICR7ZGF0YXNldENsZWFuRGlyfeKApmApXG4gIH1cbiAgZnMuZW5zdXJlRGlyU3luYyhkYXRhc2V0Q2xlYW5EaXIpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGF0YXNldENsZWFuRGlyKSkge1xuICAgIGlmIChmaWxlbmFtZVswXSA9PT0gXCIuXCIpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIGNvbnN0IHBhdGhuYW1lID0gcGF0aC5qb2luKGRhdGFzZXRDbGVhbkRpciwgZmlsZW5hbWUpXG4gICAgZnMucmVtb3ZlU3luYyhwYXRobmFtZSlcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21taXRBbmRQdXNoVWlkKFxuICByZXBvc2l0b3J5RGlyOiBzdHJpbmcsXG4gIG9wdGlvbnM6IGFueSxcbiAgc3ViZGlyZWN0b3JpZXM6IGFueSxcbik6IGJvb2xlYW4ge1xuICBsZXQgZXJyb3IgPSBmYWxzZVxuICBpZiAob3B0aW9ucy5jb21taXQpIHtcbiAgICBnaXQudWlkQnJhbmNoVXBkYXRlKFxuICAgICAgcmVwb3NpdG9yeURpcixcbiAgICAgIHN1YmRpcmVjdG9yaWVzLFxuICAgICAgb3B0aW9uc1tcIm5vLXJlc2V0LWFmdGVyLWNvbW1pdFwiXSxcbiAgICApXG4gICAgZm9yIChjb25zdCByZW1vdGUgb2Ygb3B0aW9ucy5yZW1vdGUgfHwgW10pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGdpdC5ydW4ocmVwb3NpdG9yeURpciwgYHB1c2ggLS1xdWlldCAke3JlbW90ZX0gdWlkOnVpZGApXG4gICAgICB9IGNhdGNoIChjaGlsZFByb2Nlc3MpIHtcbiAgICAgICAgZXJyb3IgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlcnJvclxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIGNsZWFuUmVvcmdhbml6ZWREYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcImNsZWFuX3Jlb3JnYW5pemVkX2RhdGEudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxRQUFRO0FBQzNCLFNBQVNDLFFBQVEsUUFBUSxlQUFlO0FBQ3hDLE9BQU9DLGVBQWUsTUFBTSxtQkFBbUI7QUFDL0MsT0FBT0MsRUFBRSxNQUFNLFVBQVU7QUFDekIsT0FBT0MsSUFBSSxNQUFNLE1BQU07QUFBQSxTQUdyQkMsV0FBVyxFQUNYQyxlQUFlLEVBQ2ZDLHVCQUF1QixFQUN2QkMseUJBQXlCLEVBQ3pCQyxXQUFXLEVBQ1hDLFlBQVksRUFDWkMsWUFBWSxFQUNaQyxhQUFhLEVBQ2JDLGdCQUFnQjtBQUFBLFNBRVRDLFFBQVEsRUFBRUMsZUFBZSxFQUFFQyxtQkFBbUI7QUFBQSxTQUM5Q0Msa0JBQWtCLEVBQUVDLGlCQUFpQjtBQUFBLFNBQ3JDQyxPQUFPO0FBQUEsT0FDVCxLQUFLQyxHQUFHO0FBQUEsU0FHYkMsT0FBTyxJQUFJQyx1QkFBdUI7QUFBQSxTQUczQkQsT0FBTyxJQUFJRSxjQUFjO0FBQUEsU0FDYkYs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
@@ -259,4 +259,4 @@ function generateSingleDiffedAmendment(diffedAmendment) {
259
259
  });
260
260
  }
261
261
  diffAmendements(options.dataDir);
262
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RlZXBPYmplY3REaWZmIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImRpZmZlZEFtZW5kbWVudHMiLCJuZXdBbWVuZG1lbnRzIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZnMiLCJleGlzdHNTeW5jIiwib3V0cHV0IiwiX2l0ZXJhdG9yIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsIl9zdGVwIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJsb2ciLCJjb25jYXQiLCJfaXRlcmF0b3IyIiwid2Fsa0RpciIsIl9zdGVwMiIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImRpZmYiLCJkZXRhaWxlZERpZmYiLCJrZXlzIiwiYWRkZWQiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFBeUMsU0FBQUQsdUJBQUFPLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEs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
262
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29tbWFuZExpbmVBcmdzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RlZXBPYmplY3REaWZmIiwiX2RhdGFzZXRzIiwiX2ZpbGVfc3lzdGVtcyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiaXRlciIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJmcm9tIiwiaXNBcnJheSIsIl9hcnJheUxpa2VUb0FycmF5IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJvIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsImxlbmd0aCIsImkiLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJlIiwiX2UiLCJmIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsImNhbGwiLCJzdGVwIiwibmV4dCIsIl9lMiIsIm1pbkxlbiIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwibGVuIiwiYXJyMiIsImRpZmZlZEFtZW5kbWVudHMiLCJuZXdBbWVuZG1lbnRzIiwib3B0aW9uc0RlZmluaXRpb25zIiwiYWxpYXMiLCJoZWxwIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZnMiLCJleGlzdHNTeW5jIiwib3V0cHV0IiwiX2l0ZXJhdG9yIiwiZGF0YXNldHMiLCJhbWVuZGVtZW50cyIsIl9zdGVwIiwiZGF0YXNldCIsInN0cnVjdHVyZSIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJTZWdtZW50ZWRGaWxlcyIsIm9yaWdpbmFsSnNvbkRpciIsInBhdGgiLCJqb2luIiwiZmlsZW5hbWUiLCJzaWxlbnQiLCJsb2ciLCJjb25jYXQiLCJfaXRlcmF0b3IyIiwid2Fsa0RpciIsIl9zdGVwMiIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJuZXdGaWxlUGF0aCIsIm5ld0ZpbGUiLCJKU09OIiwicGFyc2UiLCJyZWFkRmlsZVN5bmMiLCJ0b0xvY2FsZVN0cmluZyIsIm9sZEZpbGVQYXRoIiwib2xkRmlsZUV4aXN0cyIsImFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzIiwib2xkRmlsZSIsImRpZmYiLCJkZXRhaWxlZERpZmYiLCJrZXlzIiwiYWRkZWQiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLGdCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxLQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxlQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxTQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFBeUMsU0FBQUQsdUJBQUFPLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEs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
@@ -213,4 +213,4 @@ function generateSingleDiffedAmendment(diffedAmendment) {
213
213
  });
214
214
  }
215
215
  diffAmendements(options.dataDir);
216
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZXhpc3RzU3luYyIsIm91dHB1dCIsImRhdGFzZXQiLCJhbWVuZGVtZW50cyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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
216
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21tYW5kTGluZUFyZ3MiLCJmcyIsInBhdGgiLCJkZXRhaWxlZERpZmYiLCJkYXRhc2V0cyIsIkRhdGFzZXRTdHJ1Y3R1cmUiLCJ3YWxrRGlyIiwiZGlmZmVkQW1lbmRtZW50cyIsIm5ld0FtZW5kbWVudHMiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJhbGlhcyIsImhlbHAiLCJuYW1lIiwidHlwZSIsIkJvb2xlYW4iLCJkZWZhdWx0VmFsdWUiLCJTdHJpbmciLCJkZWZhdWx0T3B0aW9uIiwib3B0aW9ucyIsImRpZmZBbWVuZGVtZW50cyIsImRhdGFEaXIiLCJwcmV2aW91cyIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3MiLCJleGl0IiwiZXhpc3RzU3luYyIsIm91dHB1dCIsImRhdGFzZXQiLCJhbWVuZGVtZW50cyIsInN0cnVjdHVyZSIsIlNlZ21lbnRlZEZpbGVzIiwib3JpZ2luYWxKc29uRGlyIiwiam9pbiIsImZpbGVuYW1lIiwic2lsZW50IiwibG9nIiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsIm5ld0ZpbGVQYXRoIiwibmV3RmlsZSIsIkpTT04iLCJwYXJzZSIsInJlYWRGaWxlU3luYyIsInRvTG9jYWxlU3RyaW5nIiwib2xkRmlsZVBhdGgiLCJvbGRGaWxlRXhpc3RzIiwiYWRkVG9RdWV1ZUZvck5ld0FtZW5kbWVudHMiLCJvbGRGaWxlIiwiZSIsImRpZmYiLCJPYmplY3QiLCJrZXlzIiwiYWRkZWQiLCJsZW5ndGgiLCJ1cGRhdGVkIiwiZGVsZXRlZCIsImFkZFRvUXVldWVGb3JEaWZmZWRBbWVuZG1lbnRzIiwiZ2VuZXJhdGVEaWZmRmlsZXMiLCJtb2RlIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsImVuY29kaW5nIiwiZmxhZyIsImZvckVhY2giLCJkaWZmZWRBbWVuZG1lbnQiLCJnZW5lcmF0ZVNpbmdsZURpZmZlZEFtZW5kbWVudCIsIm5ld0FtZW5kbWVudCIsImdlbmVyYXRlU2luZ2xlTmV3QW1lbmRtZW50IiwiZmlsZSIsImFtZW5kbWVudCIsImRhdGEiLCJwdXNoIiwiZGlmZmVkRGF0YSIsInNoaWZ0Iiwic2hvcnREaXIiLCJwb3AiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJyZXBsYWNlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvZGlmZl9hbWVuZGVtZW50cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29tbWFuZExpbmVBcmdzIGZyb20gXCJjb21tYW5kLWxpbmUtYXJnc1wiXG5pbXBvcnQgZnMgZnJvbSBcImZzLWV4dHJhXCJcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCJcbmltcG9ydCB7IGRldGFpbGVkRGlmZiB9IGZyb20gXCJkZWVwLW9iamVjdC1kaWZmXCJcbmltcG9ydCB7IGRhdGFzZXRzLCBEYXRhc2V0U3RydWN0dXJlIH0gZnJvbSBcIi4uL2RhdGFzZXRzXCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmNvbnN0IGRpZmZlZEFtZW5kbWVudHM6IEFycmF5PGFueT4gPSBbXVxuY29uc3QgbmV3QW1lbmRtZW50czogQXJyYXk8YW55PiA9IFtdXG5cbmNvbnN0IG9wdGlvbnNEZWZpbml0aW9ucyA9IFtcbiAge1xuICAgIGFsaWFzOiBcInNcIixcbiAgICBoZWxwOiBcImRvbid0IGxvZyBhbnl0aGluZ1wiLFxuICAgIG5hbWU6IFwic2lsZW50XCIsXG4gICAgdHlwZTogQm9vbGVhbixcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcInZcIixcbiAgICBoZWxwOiBcInZlcmJvc2UgbG9nc1wiLFxuICAgIG5hbWU6IFwidmVyYm9zZVwiLFxuICAgIHR5cGU6IEJvb2xlYW4sXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJtXCIsXG4gICAgaGVscDogXCJEaWZmIG1vZGVzLlwiLFxuICAgIG5hbWU6IFwibW9kZVwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCJtZXJnZWRcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgIGhlbHA6IFwiZGlyZWN0b3J5IGNvbnRhaW5pbmcgQXNzZW1ibMOpZSBvcGVuIGRhdGEgZmlsZXNcIixcbiAgICBuYW1lOiBcImRhdGFEaXJcIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG4gIHtcbiAgICBhbGlhczogXCJwXCIsXG4gICAgaGVscDogXCJEaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcHJldmlvdXMgZHVtcCBvZiBhbWVuZG1lbnRzXCIsXG4gICAgbmFtZTogXCJwcmV2aW91c1wiLFxuICAgIHR5cGU6IFN0cmluZyxcbiAgfSxcbiAge1xuICAgIGFsaWFzOiBcIm9cIixcbiAgICBoZWxwOiBcIk91dHB1dCBkaXJlY3RvcnkgZm9yIGRpZmYgZmlsZXNcIixcbiAgICBuYW1lOiBcIm91dHB1dFwiLFxuICAgIGRlZmF1bHRWYWx1ZTogXCIuL2RpZmZfb3V0cHV0cy9cIixcbiAgICB0eXBlOiBTdHJpbmcsXG4gIH0sXG5dXG5jb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucylcblxuZnVuY3Rpb24gZGlmZkFtZW5kZW1lbnRzKGRhdGFEaXI6IHN0cmluZykge1xuICBpZiAoIW9wdGlvbnMucHJldmlvdXMpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgXCJObyBwcmV2aW91cyBkYXRhIGZvbGRlciBzcGVjaWZpZWQuIFlvdSBtdXN0IHByb3ZpZGUgb25lIHdpdGggdGhlIC1wIG9yIC0tcHJldmlvdXMgb3B0aW9uLiBFeGl0aW5nLi4uXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBpZiAoIWZzLmV4aXN0c1N5bmMob3B0aW9ucy5vdXRwdXQpKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIFwiVGhlIG91dHB1dCBkaXIgZG9lcyBub3QgZXhpc3RzLiBZb3UgbXVzdCBwcm92aWRlIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVmYXVsdCBkaXJlY3RvcnkgaXMgLi9kaWZmX291dHB1dHMvXCIsXG4gICAgKVxuICAgIHByb2Nlc3MuZXhpdCgpXG4gIH1cblxuICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6IHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyOiBzdHJpbmcgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldC5maWxlbmFtZSlcbiAgICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBEaWZmaW5nICR7b3JpZ2luYWxKc29uRGlyfSBmb2xkZXIuLi5gKVxuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIob3JpZ2luYWxKc29uRGlyKSkge1xuICAgICAgICAgIGNvbnN0IG5ld0ZpbGVQYXRoID1cbiAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpciArIFwiL1wiICsgYW1lbmRlbWVudFNwbGl0UGF0aC5qb2luKFwiL1wiKVxuICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBKU09OLnBhcnNlKFxuICAgICAgICAgICAgZnMucmVhZEZpbGVTeW5jKG5ld0ZpbGVQYXRoKS50b0xvY2FsZVN0cmluZygpLFxuICAgICAgICAgIClcblxuICAgICAgICAgIGNvbnN0IG9sZEZpbGVQYXRoID1cbiAgICAgICAgICAgIG9wdGlvbnMucHJldmlvdXMgK1xuICAgICAgICAgICAgZGF0YXNldC5maWxlbmFtZSArXG4gICAgICAgICAgICBcIi9cIiArXG4gICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoLmpvaW4oXCIvXCIpXG4gICAgICAgICAgY29uc3Qgb2xkRmlsZUV4aXN0cyA9IGZzLmV4aXN0c1N5bmMob2xkRmlsZVBhdGgpXG4gICAgICAgICAgaWYgKCFvbGRGaWxlRXhpc3RzKSB7XG4gICAgICAgICAgICAvLyBJZiBmaWxlIGZvdW5kIGRvZXMgbm90IGV4aXN0IGluIHRoZSBwcmV2aW91cyBkdW1wXG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIFwiRmlsZSBkaWQgbm90IGV4aXN0cyBwcmV2aW91c2x5LiBHdWVzc2luZyBpdCdzIGEgbmV3IGFtZW5kbWVudC4gQWRkaW5nIHRvIHRoZSBkaWZmIGxpc3QgZm9yIG5ldyBvYmplY3RzXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKG5ld0ZpbGUsIGFtZW5kZW1lbnRTcGxpdFBhdGgpXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEZpbGUgYWxyZWFkeSBleGlzdGVkIGluIHByZXZpb3VzIGR1bXBcbiAgICAgICAgICBsZXQgb2xkRmlsZTogSlNPTiA9IEpTT04ucGFyc2UoXCJ7fVwiKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBHYXRoZXIgZGF0YSBvZiB0aGUgZmlsZSBhbmQgcmV0cmFuc2NyaXB0IGFzIGEgSnNvbiBvYmplY3RcbiAgICAgICAgICAgIG9sZEZpbGUgPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyhvbGRGaWxlUGF0aCkudG9Mb2NhbGVTdHJpbmcoKSlcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRoZSBwcm9jZXNzIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbiBpbiBjYXNlIG9mIGNvcnJ1cHQgSlNPTiBkYXRhXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBkaWZmIGJlZXR3ZWVuIHRoZSB0d28gSlNPTiBvYmplY3RzIChvbGQgJiBuZXcgZHVtcClcbiAgICAgICAgICBjb25zdCBkaWZmOiBhbnkgPSBkZXRhaWxlZERpZmYob2xkRmlsZSwgbmV3RmlsZSlcblxuICAgICAgICAgIC8vIElmIG5vIGNoYW5nZXMgYmVldHdlZW4gdGhlIHR3byBkdW1wc1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuYWRkZWQpLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgICAgICAgT2JqZWN0LmtleXMoZGlmZi51cGRhdGVkKS5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKGRpZmYuZGVsZXRlZCkubGVuZ3RoID09PSAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICAvLyBTa2lwIHRvIG5leHQgaXRlcmF0aW9uIGFzIHRoZXJlIGlzIG5vIG5lZWQgdG8gZ2VuZXJhdGUgYSBmaWxlXG4gICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiQ2hhbmdlcyBmb3VuZCAhXCIpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhZGRUb1F1ZXVlRm9yRGlmZmVkQW1lbmRtZW50cyhkaWZmLCBhbWVuZGVtZW50U3BsaXRQYXRoKVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG91dHB1dChzKVwiKVxuICAgIH1cblxuICAgIGdlbmVyYXRlRGlmZkZpbGVzKClcbiAgfVxufVxuXG4vKipcbiAqIEdlbmVyYWwgcHJvY2VzcyBmb3Igb3V0cHV0IG9mIGRpZmZzLlxuICogVGhlIHNjcmlwdCBoYW5kbGVzIHR3byBkaWZmZXJlbnQgbW9kZXMgOlxuICogLSBtZXJnZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBuZXcgYW1lbmRlbWVudHMgYW5kIGEgc2luZ2xlIGZpbGVcbiAqICAgICAgICAgICAgZm9yIHVwZGF0ZWQgYW1lbmRlbWVudHNcbiAqIC0gc3BsaXR0ZWQgOiBXaWxsIG91dHB1dCBhIHNpbmdsZSBmaWxlIGZvciBlYWNoIGFtZW5kbWVudHMsIGVpdGhlciBpdHMgbmV3IG9yIHVwZGF0ZWQuXG4gKlxuICovXG5mdW5jdGlvbiBnZW5lcmF0ZURpZmZGaWxlcygpIHtcbiAgLy8gSGFuZGxlcyBtZXJnZWQgbW9kZVxuICBpZiAob3B0aW9ucy5tb2RlID09PSBcIm1lcmdlZFwiKSB7XG4gICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIG1lcmdlZCBmaWxlc1wiKVxuICAgIH1cblxuICAgIGlmIChkaWZmZWRBbWVuZG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJHZW5lcmF0aW5nIGRpZmZlZCBhbWVuZG1lbnRzIGZpbGVzXCIpXG4gICAgICB9XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICBvcHRpb25zLm91dHB1dCArIFwiYW1lbmRlbWVudHNfWFZfZGlmZmVkLmpzb25cIixcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoZGlmZmVkQW1lbmRtZW50cyksXG4gICAgICAgIHsgZW5jb2Rpbmc6IFwidXRmOFwiLCBmbGFnOiBcIndcIiB9LFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTm8gZGlmZiBpbiB0aGUgYWxyZWFkeSBleGlzdGluZyBhbWVuZG1lbnRzXCIpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5ld0FtZW5kbWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgbmV3IGFtZW5kbWVudHMgZmlsZVwiKVxuICAgICAgfVxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgb3B0aW9ucy5vdXRwdXQgKyBcImFtZW5kZW1lbnRzX1hWX25ldy5qc29uXCIsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudHMpLFxuICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIk5vIG5ldyBhbWVuZGVtZW50LiBTa2lwcGluZyBmaWxlIGdlbmVyYXRpb25cIilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy5tb2RlID09PSBcInNwbGl0dGVkXCIpIHtcbiAgICAvLyBIYW5kbGVzIHNwbGl0dGVkIG1vZGVcbiAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICBjb25zb2xlLmxvZyhcIkdlbmVyYXRpbmcgc2VwYXJhdGVkIGZpbGVzXCIpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvY2VzcyB0aGUgY29weSBhY3Rpb24gb2YgdGhlIG5ldyBhbmQgZGlmZmVkIGFtZW5kbWVudHNcbiAgICAgKi9cblxuICAgIGRpZmZlZEFtZW5kbWVudHMuZm9yRWFjaCgoZGlmZmVkQW1lbmRtZW50OiBhbnkpID0+IHtcbiAgICAgIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudClcbiAgICB9KVxuXG4gICAgbmV3QW1lbmRtZW50cy5mb3JFYWNoKChuZXdBbWVuZG1lbnQ6IGFueSkgPT4ge1xuICAgICAgZ2VuZXJhdGVTaW5nbGVOZXdBbWVuZG1lbnQobmV3QW1lbmRtZW50KVxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihcIlVua25vd24gb3V0cHV0IG1vZGUuIEFib3J0aW5nLi4uXCIpXG4gICAgcHJvY2Vzcy5leGl0KClcbiAgfVxufVxuXG4vLyBQdXNoZXMgYW4gYW1lbmRtZW50IHRvIHRoZSBxdWV1ZSB0aGF0IHdpbGwgYmUgcHJvY2Vzc2VkIHRvIGNvcHkgbmV3IGFtZW5kbWVudHMgZmlsZXNcbmZ1bmN0aW9uIGFkZFRvUXVldWVGb3JOZXdBbWVuZG1lbnRzKGZpbGU6IGFueSwgcGF0aDogYW55KTogdm9pZCB7XG4gIGNvbnN0IGFtZW5kbWVudDogYW55ID0ge1xuICAgIHBhdGg6IHBhdGgsXG4gICAgZGF0YTogZmlsZSxcbiAgfVxuICBuZXdBbWVuZG1lbnRzLnB1c2goYW1lbmRtZW50KVxufVxuLy8gUHVzaGVzIGFuIGFtZW5kbWVudCB0byB0aGUgcXVldWUgdGhhdCB3aWxsIGJlIHByb2Nlc3NlZCB0byBjb3B5IHVwZGF0ZWQgYW1lbmRtZW50cyBmaWxlc1xuZnVuY3Rpb24gYWRkVG9RdWV1ZUZvckRpZmZlZEFtZW5kbWVudHMoZGlmZmVkRGF0YTogYW55LCBwYXRoOiBhbnkpOiB2b2lkIHtcbiAgY29uc3QgYW1lbmRtZW50OiBhbnkgPSB7XG4gICAgcGF0aDogcGF0aCxcbiAgICBkYXRhOiBkaWZmZWREYXRhLFxuICB9XG4gIGRpZmZlZEFtZW5kbWVudHMucHVzaChhbWVuZG1lbnQpXG59XG5cbi8vIGdlbmVyYXRlcyBhIGZpbGUgd2l0aCBhIGNvcHkgb2YgdGhlIG5ldyBhbWVuZGVtZW50XG5mdW5jdGlvbiBnZW5lcmF0ZVNpbmdsZU5ld0FtZW5kbWVudChuZXdBbWVuZG1lbnQ6IHtcbiAgcGF0aDogQXJyYXk8c3RyaW5nPlxuICBkYXRhOiBhbnlcbn0pIHtcbiAgbmV3QW1lbmRtZW50LnBhdGguc2hpZnQoKVxuXG4gIGNvbnN0IHNob3J0RGlyOiBBcnJheTxhbnk+ID0gWy4uLm5ld0FtZW5kbWVudC5wYXRoXVxuICBzaG9ydERpci5wb3AoKVxuICBjb25zb2xlLmxvZyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpKVxuICBmcy5ta2RpclN5bmMob3B0aW9ucy5vdXRwdXQgKyBzaG9ydERpci5qb2luKFwiL1wiKSwge1xuICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgfSlcbiAgZnMud3JpdGVGaWxlU3luYyhcbiAgICBvcHRpb25zLm91dHB1dCArIG5ld0FtZW5kbWVudC5wYXRoLmpvaW4oXCIvXCIpLnJlcGxhY2UoLyhcXC5qc29uKS8sIFwiLm5ldyQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KG5ld0FtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG4vLyBnZW5lcmF0ZXMgYSBmaWxlIHdpdGggYSBjb3B5IG9mIHRoZSBtb2RpZmllZCBkYXRhIG9mIHRoZSBwcmV2aW91c2x5IGV4aXN0aW5nIGFtZW5kbWVudDtcbmZ1bmN0aW9uIGdlbmVyYXRlU2luZ2xlRGlmZmVkQW1lbmRtZW50KGRpZmZlZEFtZW5kbWVudDoge1xuICBwYXRoOiBBcnJheTxzdHJpbmc+XG4gIGRhdGE6IGFueVxufSkge1xuICBkaWZmZWRBbWVuZG1lbnQucGF0aC5zaGlmdCgpXG5cbiAgY29uc3Qgc2hvcnREaXI6IEFycmF5PGFueT4gPSBbLi4uZGlmZmVkQW1lbmRtZW50LnBhdGhdXG4gIHNob3J0RGlyLnBvcCgpXG4gIGZzLm1rZGlyU3luYyhvcHRpb25zLm91dHB1dCArIHNob3J0RGlyLmpvaW4oXCIvXCIpLCB7XG4gICAgcmVjdXJzaXZlOiB0cnVlLFxuICB9KVxuXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgb3B0aW9ucy5vdXRwdXQgK1xuICAgICAgZGlmZmVkQW1lbmRtZW50LnBhdGguam9pbihcIi9cIikucmVwbGFjZSgvKFxcLmpzb24pLywgXCIuZGlmZiQxXCIpLFxuICAgIEpTT04uc3RyaW5naWZ5KGRpZmZlZEFtZW5kbWVudC5kYXRhKSxcbiAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiwgZmxhZzogXCJ3XCIgfSxcbiAgKVxufVxuXG5kaWZmQW1lbmRlbWVudHMob3B0aW9ucy5kYXRhRGlyKVxuIl0sIm1hcHBpbmdz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