@tricoteuses/assemblee 1.7.2 → 1.7.4

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 (33) hide show
  1. package/README.md +9 -55
  2. package/lib/file_systems.js +1 -1
  3. package/lib/file_systems.mjs +1 -1
  4. package/lib/git.d.ts +1 -0
  5. package/lib/git.js +12 -1
  6. package/lib/git.mjs +11 -1
  7. package/lib/parsers/textes_lois.d.ts +1 -0
  8. package/lib/parsers/textes_lois.js +86 -0
  9. package/lib/parsers/textes_lois.mjs +43 -0
  10. package/lib/scripts/clean_reorganized_data.js +2 -10
  11. package/lib/scripts/clean_reorganized_data.mjs +2 -10
  12. package/lib/scripts/reorganize_data.js +2 -10
  13. package/lib/scripts/reorganize_data.mjs +2 -10
  14. package/lib/scripts/retrieve_deputes_photos.d.ts +3 -1
  15. package/lib/scripts/retrieve_deputes_photos.js +169 -164
  16. package/lib/scripts/retrieve_deputes_photos.mjs +76 -91
  17. package/lib/scripts/retrieve_pending_amendments.js +2 -10
  18. package/lib/scripts/retrieve_pending_amendments.mjs +2 -10
  19. package/lib/scripts/retrieve_senateurs_photos.js +120 -175
  20. package/lib/scripts/retrieve_senateurs_photos.mjs +42 -107
  21. package/lib/scripts/retrieve_textes_lois_llm.d.ts +1 -0
  22. package/lib/scripts/retrieve_textes_lois_llm.js +188 -0
  23. package/lib/scripts/retrieve_textes_lois_llm.mjs +85 -0
  24. package/lib/scripts/shared/cli_helpers.d.ts +0 -2
  25. package/lib/scripts/shared/cli_helpers.js +2 -19
  26. package/lib/scripts/shared/cli_helpers.mjs +1 -8
  27. package/lib/shared_types/codes_actes.d.ts +2 -0
  28. package/lib/shared_types/codes_actes.js +3 -1
  29. package/lib/shared_types/codes_actes.mjs +3 -1
  30. package/lib/types/scrutins.d.ts +4 -4
  31. package/lib/types/scrutins.js +5 -5
  32. package/lib/types/scrutins.mjs +5 -5
  33. package/package.json +4 -1
@@ -29,7 +29,6 @@ require("core-js/modules/es.string.replace.js");
29
29
  require("core-js/modules/es.string.starts-with.js");
30
30
  require("core-js/modules/es.string.trim.js");
31
31
  var _assert = _interopRequireDefault(require("assert"));
32
- var _child_process = require("child_process");
33
32
  var _commandLineArgs = _interopRequireDefault(require("command-line-args"));
34
33
  var _fsExtra = _interopRequireDefault(require("fs-extra"));
35
34
  var _path = _interopRequireDefault(require("path"));
@@ -86,14 +85,7 @@ function clearDirectory(dirPath) {
86
85
  }
87
86
  }
88
87
  function cloneGit(gitGroupUrl, datasetName, dataDir) {
89
- if (gitGroupUrl !== undefined) {
90
- (0, _child_process.execSync)("git clone ".concat(gitGroupUrl, "/").concat(datasetName, ".git"), {
91
- cwd: dataDir,
92
- env: process.env,
93
- encoding: "utf-8",
94
- stdio: ["ignore", "ignore", "pipe"]
95
- });
96
- }
88
+ git.clone(gitGroupUrl, datasetName, dataDir);
97
89
  }
98
90
  function reorganizeData(options) {
99
91
  var _options$clone;
@@ -810,4 +802,4 @@ function main(argv) {
810
802
 
811
803
  /* istanbul ignore if */
812
804
  if (process.argv[1].endsWith("reorganize_data.ts")) process.exit(main(process.argv));
813
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY2hpbGRfcHJvY2VzcyIsIl9jb21tYW5kTGluZUFyZ3MiLCJfZnNFeHRyYSIsIl9wYXRoIiwiX2RhdGFzZXRzIiwiX2RhdGVzIiwiZ2l0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfZmlsZV9zeXN0ZW1zIiwiX2xvYWRlcnMiLCJfYWN0ZXVyc19ldF9vcmdhbmVzIiwiX2FnZW5kYXMiLCJfYW1lbmRlbWVudHMiLCJfZG9zc2llcnNfbGVnaXNsYXRpZnMiLCJfc2NydXRpbnMiLCJfcXVlc3Rpb25zIiwiX2RlYmF0cyIsIl9jbGlfaGVscGVycyIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl90b0NvbnN1bWFibGVBcnJheSIsIl9hcnJheVdpdGhvdXRIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJfbm9uSXRlcmFibGVTcHJlYWQiLCJUeXBlRXJyb3IiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiZnJvbSIsImlzQXJyYXkiLCJfYXJyYXlMaWtlVG9BcnJheSIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwibGVuZ3RoIiwiX24iLCJGIiwicyIsImRvbmUiLCJ2YWx1ZSIsImYiLCJvIiwibmV4dCIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJ0ZXN0IiwicGFyc2VBcmdzIiwiYXJndiIsIm9wdGlvbnNEZWZpbml0aW9ucyIsImNsb25lT3B0aW9uIiwiY29tbWl0T3B0aW9uIiwiY2F0ZWdvcmllc09wdGlvbiIsImxlZ2lzbGF0dXJlT3B0aW9uIiwicmVtb3RlT3B0aW9uIiwic2lsZW50T3B0aW9uIiwidmVyYm9zZU9wdGlvbiIsImRhdGFEaXJEZWZhdWx0T3B0aW9uIiwicHVsbE9wdGlvbiIsImFsaWFzIiwiaGVscCIsInR5cGUiLCJCb29sZWFuIiwib3B0aW9ucyIsImNvbW1hbmRMaW5lQXJncyIsImNsZWFyRGlyZWN0b3J5IiwiZGlyUGF0aCIsImZzIiwiZW5zdXJlRGlyU3luYyIsIl9pdGVyYXRvciIsInJlYWRkaXJTeW5jIiwiX3N0ZXAiLCJmaWxlbmFtZSIsInN0YXJ0c1dpdGgiLCJyZW1vdmVTeW5jIiwicGF0aCIsImpvaW4iLCJlcnIiLCJjbG9uZUdpdCIsImdpdEdyb3VwVXJsIiwiZGF0YXNldE5hbWUiLCJkYXRhRGlyIiwidW5kZWZpbmVkIiwiZXhlY1N5bmMiLCJjb25jYXQiLCJjd2QiLCJlbnYiLCJwcm9jZXNzIiwiZW5jb2RpbmciLCJzdGRpbyIsInJlb3JnYW5pemVEYXRhIiwiX29wdGlvbnMkY2xvbmUiLCJEYXRlIiwicHJvdG90eXBlIiwidG9KU09OIiwicGF0Y2hlZERhdGVUb0pzb24iLCJleGl0Q29kZSIsImNvbW1pdCIsImNsb25lIiwidHJpbSIsInJlcGxhY2UiLCJ2YWxpZGF0ZVJhd0RhdGEiLCJlbmFibGVkRGF0YXNldHMiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiY2hvc2VuRGF0YXNldHMiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImNvbW1pdEdpdCIsImRhdGFzZXRSZW9yZ2FuaXplZERpciIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMiIsImFjdGV1cnNFdE9yZ2FuZXMiLCJfc3RlcDIiLCJkYXRhc2V0Iiwib3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJiYXNlbmFtZSIsInB1bGwiLCJyZXNldEFuZFB1bGwiLCJhY3RldXJzUmVvcmdhbml6ZWREaXIiLCJta2RpclN5bmMiLCJvcmdhbmVzUmVvcmdhbml6ZWREaXIiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2luZ2xlRmlsZSIsIm9yaWdpbmFsSnNvbiIsInJlYWRGaWxlU3luYyIsIm9yaWdpbmFsRGF0YSIsIkFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IiwidG9BY3RldXJzRXRPcmdhbmVzIiwiSlNPTiIsInBhcnNlIiwiX2l0ZXJhdG9yMyIsImFjdGV1cnMiLCJhY3RldXIiLCJfc3RlcDMiLCJyZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsInVpZCIsIndyaXRlRmlsZVN5bmMiLCJzdHJpbmdpZnkiLCJfaXRlcmF0b3I0Iiwib3JnYW5lcyIsIm9yZ2FuZSIsIl9zdGVwNCIsIlNlZ21lbnRlZEZpbGVzIiwiZGVwb3J0c0J5QWN0ZXVyVWlkIiwiZXhpc3RzU3luYyIsIl9pdGVyYXRvcjUiLCJ3YWxrRGlyIiwiX3N0ZXA1IiwiZGVwb3J0U3BsaXRQYXRoIiwiZGVwb3J0RmlsZW5hbWUiLCJlbmRzV2l0aCIsImRlcG9ydE9yaWdpbmFsRmlsZVBhdGgiLCJhcHBseSIsInZlcmJvc2UiLCJkZXBvcnRPcmlnaW5hbEpzb24iLCJkZXBvcnRPcmlnaW5hbCIsInRvRGVwb3J0IiwiZGVwb3J0IiwiZGVwb3J0cyIsImFjdGV1clJlZiIsInB1c2giLCJfaSIsIl9PYmplY3QkdmFsdWVzIiwidmFsdWVzIiwic29ydCIsImIiLCJsb2NhbGVDb21wYXJlIiwibWFuZGF0c0J5QWN0ZXVyVWlkIiwiX2l0ZXJhdG9yNiIsIl9zdGVwNiIsIm1hbmRhdFNwbGl0UGF0aCIsIm1hbmRhdEZpbGVuYW1lIiwibWFuZGF0T3JpZ2luYWxGaWxlUGF0aCIsIm1hbmRhdE9yaWdpbmFsSnNvbiIsIm1hbmRhdE9yaWdpbmFsIiwidG9NYW5kYXRXcmFwcGVyIiwibWFuZGF0IiwibWFuZGF0cyIsIl9pMiIsIl9PYmplY3QkdmFsdWVzMiIsIl9pdGVyYXRvcjciLCJfc3RlcDciLCJhY3RldXJTcGxpdFBhdGgiLCJhY3RldXJGaWxlbmFtZSIsImFjdGV1ck9yaWdpbmFsRmlsZVBhdGgiLCJhY3RldXJPcmlnaW5hbEpzb24iLCJhY3RldXJPcmlnaW5hbCIsInRvQWN0ZXVyIiwiYWN0ZXVyVWlkIiwiYXNzZXJ0Iiwic3RyaWN0RXF1YWwiLCJhY3RldXJSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIl9pdGVyYXRvcjgiLCJfc3RlcDgiLCJvcmdhbmVTcGxpdFBhdGgiLCJvcmdhbmVGaWxlbmFtZSIsIm9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgiLCJvcmdhbmVPcmlnaW5hbEpzb24iLCJvcmdhbmVPcmlnaW5hbCIsInRvT3JnYW5lIiwib3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgiLCJBZ2VuZGFzIiwiX2l0ZXJhdG9yOSIsImFnZW5kYXMiLCJfc3RlcDkiLCJBZ2VuZGFzUmF3Q29udmVydCIsInRvQWdlbmRhcyIsIl9pdGVyYXRvcjEwIiwicmV1bmlvbnMiLCJyZXVuaW9uIiwiX3N0ZXAxMCIsIndyaXRlUmVvcmdhbml6ZWRKc29uIiwicGF0aEZyb21SZXVuaW9uVWlkIiwiX2l0ZXJhdG9yMTEiLCJfc3RlcDExIiwicmV1bmlvblNwbGl0UGF0aCIsInJldW5pb25GaWxlbmFtZSIsInJldW5pb25PcmlnaW5hbEZpbGVQYXRoIiwicmV1bmlvbk9yaWdpbmFsSnNvbiIsInJldW5pb25PcmlnaW5hbCIsInRvUmV1bmlvbiIsIkFtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMTIiLCJhbWVuZGVtZW50cyIsIl9zdGVwMTIiLCJBbWVuZGVtZW50c1Jhd0NvbnZlcnQiLCJ0b0FtZW5kZW1lbnRzIiwiX2l0ZXJhdG9yMTMiLCJ0ZXh0ZXNFdEFtZW5kZW1lbnRzIiwidGV4dGVsZWciLCJfc3RlcDEzIiwidGV4dGVMZWdpc2xhdGlmIiwiX2l0ZXJhdG9yMTQiLCJfc3RlcDE0IiwiYW1lbmRlbWVudCIsIndyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbiIsIl9pdGVyYXRvcjE1IiwiX3N0ZXAxNSIsImFtZW5kZW1lbnRTcGxpdFBhdGgiLCJhbWVuZGVtZW50RmlsZW5hbWUiLCJhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCIsImFtZW5kZW1lbnRPcmlnaW5hbEpzb24iLCJhbWVuZGVtZW50T3JpZ2luYWwiLCJ0b0FtZW5kZW1lbnRXcmFwcGVyIiwiRG9zc2llcnNMZWdpc2xhdGlmcyIsIl9pdGVyYXRvcjE2IiwiZG9zc2llcnNMZWdpc2xhdGlmcyIsIl9zdGVwMTYiLCJkb2N1bWVudHNEaXIiLCJkb3NzaWVyc0RpciIsIkRvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0IiwidG9Eb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTciLCJ0ZXh0ZXNMZWdpc2xhdGlmcyIsImRvY3VtZW50IiwiX3N0ZXAxNyIsInBhdGhGcm9tRG9jdW1lbnRVaWQiLCJfaXRlcmF0b3IxOCIsImRvc3NpZXIiLCJfc3RlcDE4IiwiZG9zc2llclBhcmxlbWVudGFpcmUiLCJwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkIiwiX2l0ZXJhdG9yMTkiLCJfc3RlcDE5IiwiZG9jdW1lbnRTcGxpdFBhdGgiLCJkb2N1bWVudEZpbGVuYW1lIiwiZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiZG9jdW1lbnRPcmlnaW5hbEpzb24iLCJkb2N1bWVudE9yaWdpbmFsIiwidG9Eb2N1bWVudCIsIl9pdGVyYXRvcjIwIiwiX3N0ZXAyMCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCIsImRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbCIsInRvRG9zc2llclBhcmxlbWVudGFpcmUiLCJTY3J1dGlucyIsIl9pdGVyYXRvcjIxIiwic2NydXRpbnMiLCJfc3RlcDIxIiwiU2NydXRpbnNSYXdDb252ZXJ0IiwidG9TY3J1dGlucyIsIl9pdGVyYXRvcjIyIiwic2NydXRpbiIsIl9zdGVwMjIiLCJwYXRoRnJvbVNjcnV0aW5VaWQiLCJfaXRlcmF0b3IyMyIsIl9zdGVwMjMiLCJzY3J1dGluU3BsaXRQYXRoIiwic2NydXRpbkZpbGVuYW1lIiwic2NydXRpbk9yaWdpbmFsRmlsZVBhdGgiLCJzY3J1dGluT3JpZ2luYWxKc29uIiwic2NydXRpbk9yaWdpbmFsIiwidG9TY3J1dGluV3JhcHBlciIsIlF1ZXN0aW9ucyIsIl9pdGVyYXRvcjI0IiwicXVlc3Rpb25zIiwiX3N0ZXAyNCIsIl9pdGVyYXRvcjI1IiwiX3N0ZXAyNSIsInF1ZXN0aW9uU3BsaXRQYXRoIiwicXVlc3Rpb25GaWxlbmFtZSIsInF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCIsInF1ZXN0aW9uT3JpZ2luYWxKc29uIiwicXVlc3Rpb25PcmlnaW5hbCIsIlF1ZXN0aW9uc1Jhd0NvbnZlcnQiLCJ0b1F1ZXN0aW9uV3JhcHBlciIsInF1ZXN0aW9uIiwicGF0aEZyb21RdWVzdGlvblVpZCIsIkNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX2l0ZXJhdG9yMjYiLCJjb21wdGVzUmVuZHVzU2VhbmNlcyIsIl9zdGVwMjYiLCJfaXRlcmF0b3IyNyIsIl9zdGVwMjciLCJjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGgiLCJjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbiIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwiLCJDb21wdGVzUmVuZHVzUmF3Q29udmVydCIsInRvQ29tcHRlUmVuZHVXcmFwcGVyIiwiY29tcHRlUmVuZHVTZWFuY2UiLCJjb21wdGVSZW5kdSIsInBhdGhGcm9tQ29tcHRlUmVuZHVVaWQiLCJleGlzdGluZ0RhdGVUb0pzb24iLCJ1aWRUZXh0ZUxlZ2lzbGF0aWYiLCJ0ZXh0ZUxlZ2lzbGF0aWZSZWYiLCJub3RTdHJpY3RFcXVhbCIsInRleHRlTGVnaXNsYXRpZkRpciIsImRpciIsIm9iaiIsInBhdGhGcm9tVWlkIiwibWFpbiIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCB7IGV4ZWNTeW5jIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIlxuaW1wb3J0IGNvbW1hbmRMaW5lQXJncyBmcm9tIFwiY29tbWFuZC1saW5lLWFyZ3NcIlxuaW1wb3J0IGZzIGZyb20gXCJmcy1leHRyYVwiXG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiXG5pbXBvcnQge1xuICBkYXRhc2V0cyxcbiAgRGF0YXNldFN0cnVjdHVyZSxcbiAgRW5hYmxlZERhdGFzZXRzLFxuICBnZXRFbmFibGVkRGF0YXNldHMsXG4gIGZpbHRlckJ5TGVnaXNsYXR1cmUsXG59IGZyb20gXCIuLi9kYXRhc2V0c1wiXG5pbXBvcnQgeyBleGlzdGluZ0RhdGVUb0pzb24sIHBhdGNoZWREYXRlVG9Kc29uIH0gZnJvbSBcIi4uL2RhdGVzXCJcbmltcG9ydCAqIGFzIGdpdCBmcm9tIFwiLi4vZ2l0XCJcbmltcG9ydCB7IHdhbGtEaXIgfSBmcm9tIFwiLi4vZmlsZV9zeXN0ZW1zXCJcbmltcG9ydCB7XG4gIHBhdGhGcm9tQ29tcHRlUmVuZHVVaWQsXG4gIHBhdGhGcm9tRG9jdW1lbnRVaWQsXG4gIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gIHBhdGhGcm9tUXVlc3Rpb25VaWQsXG4gIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgcGF0aEZyb21TY3J1dGluVWlkLFxufSBmcm9tIFwiLi4vbG9hZGVyc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9hY3RldXJzX2V0X29yZ2FuZXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBZ2VuZGFzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWdlbmRhc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIEFtZW5kZW1lbnRzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYW1lbmRlbWVudHNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvZG9zc2llcnNfbGVnaXNsYXRpZnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBTY3J1dGluc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3NjcnV0aW5zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgUXVlc3Rpb25zUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvcXVlc3Rpb25zXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2RlYmF0c1wiXG5pbXBvcnQge1xuICBjbG9uZU9wdGlvbixcbiAgY29tbWl0T3B0aW9uLFxuICBjYXRlZ29yaWVzT3B0aW9uLFxuICBsZWdpc2xhdHVyZU9wdGlvbixcbiAgcmVtb3RlT3B0aW9uLFxuICBzaWxlbnRPcHRpb24sXG4gIHZlcmJvc2VPcHRpb24sXG4gIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICBwdWxsT3B0aW9uLFxufSBmcm9tIFwiLi9zaGFyZWQvY2xpX2hlbHBlcnNcIlxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJndjogc3RyaW5nW10pOiBhbnkge1xuICBjb25zdCBvcHRpb25zRGVmaW5pdGlvbnMgPSBbXG4gICAgY2xvbmVPcHRpb24sXG4gICAgY29tbWl0T3B0aW9uLFxuICAgIGNhdGVnb3JpZXNPcHRpb24sXG4gICAgbGVnaXNsYXR1cmVPcHRpb24sXG4gICAgcmVtb3RlT3B0aW9uLFxuICAgIHNpbGVudE9wdGlvbixcbiAgICB2ZXJib3NlT3B0aW9uLFxuICAgIGRhdGFEaXJEZWZhdWx0T3B0aW9uLFxuICAgIHB1bGxPcHRpb24sXG4gICAge1xuICAgICAgYWxpYXM6IFwiVlwiLFxuICAgICAgaGVscDogXCJkb24ndCB2YWxpZGF0ZSByYXcgZGF0YVwiLFxuICAgICAgbmFtZTogXCJuby12YWxpZGF0ZS1yYXdcIixcbiAgICAgIHR5cGU6IEJvb2xlYW4sXG4gICAgfSxcbiAgXVxuICBjb25zdCBvcHRpb25zID0gY29tbWFuZExpbmVBcmdzKG9wdGlvbnNEZWZpbml0aW9ucywge1xuICAgIGFyZ3Y6IGFyZ3YsXG4gIH0pXG4gIHJldHVybiBvcHRpb25zXG59XG5cbmZ1bmN0aW9uIGNsZWFyRGlyZWN0b3J5KGRpclBhdGg6IHN0cmluZyk6IHZvaWQge1xuICBmcy5lbnN1cmVEaXJTeW5jKGRpclBhdGgpXG4gIGZvciAoY29uc3QgZmlsZW5hbWUgb2YgZnMucmVhZGRpclN5bmMoZGlyUGF0aCkpIHtcbiAgICBpZiAoIWZpbGVuYW1lLnN0YXJ0c1dpdGgoXCIuXCIpKSB7XG4gICAgICBmcy5yZW1vdmVTeW5jKHBhdGguam9pbihkaXJQYXRoLCBmaWxlbmFtZSkpXG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNsb25lR2l0KFxuICBnaXRHcm91cFVybDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBkYXRhc2V0TmFtZTogc3RyaW5nLFxuICBkYXRhRGlyOiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgaWYgKGdpdEdyb3VwVXJsICE9PSB1bmRlZmluZWQpIHtcbiAgICBleGVjU3luYyhgZ2l0IGNsb25lICR7Z2l0R3JvdXBVcmx9LyR7ZGF0YXNldE5hbWV9LmdpdGAsIHtcbiAgICAgIGN3ZDogZGF0YURpcixcbiAgICAgIGVudjogcHJvY2Vzcy5lbnYsXG4gICAgICBlbmNvZGluZzogXCJ1dGYtOFwiLFxuICAgICAgc3RkaW86IFtcImlnbm9yZVwiLCBcImlnbm9yZVwiLCBcInBpcGVcIl0sXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiByZW9yZ2FuaXplRGF0YShvcHRpb25zOiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBkYXRhRGlyID0gb3B0aW9ucy5kYXRhRGlyXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IHBhdGNoZWREYXRlVG9Kc29uXG4gIGxldCBleGl0Q29kZSA9IG9wdGlvbnMuY29tbWl0ID8gMTAgOiAwXG4gIGNvbnN0IGdpdEdyb3VwVXJsID0gb3B0aW9ucy5jbG9uZT8udHJpbSgpLnJlcGxhY2UoL1xcLyskLywgXCJcIilcbiAgY29uc3QgdmFsaWRhdGVSYXdEYXRhID0gIW9wdGlvbnNbXCJuby12YWxpZGF0ZS1yYXdcIl1cbiAgY29uc3QgZW5hYmxlZERhdGFzZXRzID0gZ2V0RW5hYmxlZERhdGFzZXRzKG9wdGlvbnMuY2F0ZWdvcmllcylcbiAgbGV0IGNob3NlbkRhdGFzZXRzID0gZmlsdGVyQnlMZWdpc2xhdHVyZShkYXRhc2V0cywgb3B0aW9ucy5sZWdpc2xhdHVyZSlcblxuICBmdW5jdGlvbiBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyOiBzdHJpbmcsIG9wdGlvbnM6IGFueSk6IHZvaWQge1xuICAgIGlmIChvcHRpb25zLmNvbW1pdCkge1xuICAgICAgY29uc3QgZXJyb3JDb2RlID0gZ2l0LmNvbW1pdEFuZFB1c2goXG4gICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgXCJOb3V2ZWxsZSBtb2lzc29uXCIsXG4gICAgICAgIG9wdGlvbnMucmVtb3RlLFxuICAgICAgKVxuICAgICAgaWYgKFxuICAgICAgICAoZXhpdENvZGUgPT09IDEwICYmIGVycm9yQ29kZSAhPT0gMTApIHx8XG4gICAgICAgIChleGl0Q29kZSA9PT0gMCAmJiBlcnJvckNvZGUgIT09IDAgJiYgZXJyb3JDb2RlICE9PSAxMClcbiAgICAgICkge1xuICAgICAgICBleGl0Q29kZSA9IGVycm9yQ29kZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWN0ZXVyc0V0T3JnYW5lcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBpZiAob3B0aW9ucy5wdWxsKSB7XG4gICAgICAgIGdpdC5yZXNldEFuZFB1bGwoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuICAgICAgfVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBjb25zdCBhY3RldXJzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImFjdGV1cnNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhhY3RldXJzUmVvcmdhbml6ZWREaXIpXG4gICAgICBjb25zdCBvcmdhbmVzUmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcIm9yZ2FuZXNcIilcbiAgICAgIGZzLm1rZGlyU3luYyhvcmdhbmVzUmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvQWN0ZXVyc0V0T3JnYW5lcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQuYWN0ZXVycy5hY3RldXIpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyLnVpZFtcIiN0ZXh0XCJdICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZSBvZiBvcmlnaW5hbERhdGEuZXhwb3J0Lm9yZ2FuZXMub3JnYW5lKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JnYW5lc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIG9yZ2FuZS51aWQgKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShvcmdhbmUsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBkZXBvcnRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcImRlcG9ydFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJkZXBvcnRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBkZXBvcnRTcGxpdFBhdGhbZGVwb3J0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFkZXBvcnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLmRlcG9ydFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJkZXBvcnRcIiBmaWxlOiAke2RlcG9ydE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBkZXBvcnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvRGVwb3J0KGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkZXBvcnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgZGVwb3J0ID0gZGVwb3J0T3JpZ2luYWwuZGVwb3J0XG4gICAgICAgICAgICAgICAgbGV0IGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAoZGVwb3J0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2RlcG9ydC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVwb3J0cy5wdXNoKGRlcG9ydClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZGVwb3J0cyBvZiBPYmplY3QudmFsdWVzKGRlcG9ydHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBkZXBvcnRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBtYW5kYXRzQnlBY3RldXJVaWQ6IHtcbiAgICAgICAgICAgICAgW2FjdGV1clVpZDogc3RyaW5nXTogeyB1aWQ6IHN0cmluZyB9W11cbiAgICAgICAgICAgIH0gPSB7fVxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBmcy5leGlzdHNTeW5jKFxuICAgICAgICAgICAgICAgIHBhdGguam9pbihvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLCBcIm1hbmRhdFwiKSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBbXCJtYW5kYXRcIl0sXG4gICAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBtYW5kYXRTcGxpdFBhdGhbbWFuZGF0U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgICAgaWYgKCFtYW5kYXRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAgIC4uLm1hbmRhdFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICAgIGAgIExvYWRpbmcgXCJtYW5kYXRcIiBmaWxlOiAke21hbmRhdE9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvTWFuZGF0V3JhcHBlcihcbiAgICAgICAgICAgICAgICAgICAgICBtYW5kYXRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShtYW5kYXRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgY29uc3QgbWFuZGF0ID0gbWFuZGF0T3JpZ2luYWwubWFuZGF0XG4gICAgICAgICAgICAgICAgbGV0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl1cbiAgICAgICAgICAgICAgICBpZiAobWFuZGF0cyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW21hbmRhdC5hY3RldXJSZWZdID0gW11cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbWFuZGF0cy5wdXNoKG1hbmRhdClcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGZvciAoY29uc3QgbWFuZGF0cyBvZiBPYmplY3QudmFsdWVzKG1hbmRhdHNCeUFjdGV1clVpZCkpIHtcbiAgICAgICAgICAgICAgICBtYW5kYXRzLnNvcnQoKGEsIGIpID0+XG4gICAgICAgICAgICAgICAgICBhLnVpZC5sZW5ndGggPT09IGIudWlkLmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICA/IGEudWlkLmxvY2FsZUNvbXBhcmUoYi51aWQpXG4gICAgICAgICAgICAgICAgICAgIDogYS51aWQubGVuZ3RoIC0gYi51aWQubGVuZ3RoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFjdGV1clNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJhY3RldXJcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ckZpbGVuYW1lID0gYWN0ZXVyU3BsaXRQYXRoW2FjdGV1clNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWFjdGV1ckZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hY3RldXJTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiYWN0ZXVyXCIgZmlsZTogJHthY3RldXJPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ck9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1ck9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXIoYWN0ZXVyT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1ciA9IGFjdGV1ck9yaWdpbmFsLmFjdGV1clxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJVaWQgPSBhY3RldXIudWlkW1wiI3RleHRcIl1cbiAgICAgICAgICAgICAgY29uc3QgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFthY3RldXJVaWRdXG4gICAgICAgICAgICAgIGlmIChkZXBvcnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0ZXVyLmRlcG9ydHMsIHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBhY3RldXIuZGVwb3J0cyA9IHsgZGVwb3J0OiBkZXBvcnRzIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBtYW5kYXRzID0gbWFuZGF0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKG1hbmRhdHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIubWFuZGF0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5tYW5kYXRzID0geyBtYW5kYXQ6IG1hbmRhdHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgYWN0ZXVyc1Jlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGFjdGV1clVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGFjdGV1ciwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBvcmdhbmVTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wib3JnYW5lXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVGaWxlbmFtZSA9IG9yZ2FuZVNwbGl0UGF0aFtvcmdhbmVTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFvcmdhbmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ub3JnYW5lU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcIm9yZ2FuZVwiIGZpbGU6ICR7b3JnYW5lT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBvcmdhbmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFjdGV1cnNFdE9yZ2FuZXNSYXdDb252ZXJ0LnRvT3JnYW5lKG9yZ2FuZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmUgPSBvcmdhbmVPcmlnaW5hbC5vcmdhbmVcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZVJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFnZW5kYXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYWdlbmRhcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b0FnZW5kYXMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJldW5pb24gb2Ygb3JpZ2luYWxEYXRhLnJldW5pb25zLnJldW5pb24pIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIHJldW5pb24sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21SZXVuaW9uVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJldW5pb25TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wicmV1bmlvblwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICByZXVuaW9uU3BsaXRQYXRoW3JldW5pb25TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFyZXVuaW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5yZXVuaW9uU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInJldW5pb25cIiBmaWxlOiAke3JldW5pb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWdlbmRhc1Jhd0NvbnZlcnQudG9SZXVuaW9uKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHJldW5pb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb24gPSByZXVuaW9uT3JpZ2luYWwucmV1bmlvblxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgcmV1bmlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVJldW5pb25VaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkFtZW5kZW1lbnRzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFtZW5kZW1lbnRzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFtZW5kZW1lbnRzUmF3Q29udmVydC50b0FtZW5kZW1lbnRzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCB0ZXh0ZUxlZ2lzbGF0aWYgb2Ygb3JpZ2luYWxEYXRhLnRleHRlc0V0QW1lbmRlbWVudHNcbiAgICAgICAgICAgICAgLnRleHRlbGVnKSB7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgYW1lbmRlbWVudCBvZiB0ZXh0ZUxlZ2lzbGF0aWYuYW1lbmRlbWVudHMpIHtcbiAgICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgICBhbWVuZGVtZW50LFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudFNwbGl0UGF0aFthbWVuZGVtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghYW1lbmRlbWVudEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uYW1lbmRlbWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJhbWVuZGVtZW50XCIgZmlsZTogJHthbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IEFtZW5kZW1lbnRzUmF3Q29udmVydC50b0FtZW5kZW1lbnRXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShhbWVuZGVtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50ID0gYW1lbmRlbWVudE9yaWdpbmFsLmFtZW5kZW1lbnRcbiAgICAgICAgICAgICAgd3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgYW1lbmRlbWVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLkRvc3NpZXJzTGVnaXNsYXRpZnMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuZG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBjb25zdCBkb2N1bWVudHNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvY3VtZW50c1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvY3VtZW50c0RpcilcbiAgICAgIGNvbnN0IGRvc3NpZXJzRGlyID0gcGF0aC5qb2luKGRhdGFzZXRSZW9yZ2FuaXplZERpciwgXCJkb3NzaWVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGRvc3NpZXJzRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TaW5nbGVGaWxlOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRhOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgPyBEb3NzaWVyc0xlZ2lzbGF0aWZzUmF3Q29udmVydC50b0Rvc3NpZXJzTGVnaXNsYXRpZnMoXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50IG9mIG9yaWdpbmFsRGF0YS5leHBvcnQudGV4dGVzTGVnaXNsYXRpZnNcbiAgICAgICAgICAgICAgLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKGRvY3VtZW50c0RpciwgZG9jdW1lbnQsIHBhdGhGcm9tRG9jdW1lbnRVaWQpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgeyBkb3NzaWVyUGFybGVtZW50YWlyZSB9IG9mIG9yaWdpbmFsRGF0YS5leHBvcnRcbiAgICAgICAgICAgICAgLmRvc3NpZXJzTGVnaXNsYXRpZnMuZG9zc2llcikge1xuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvY3VtZW50U3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImRvY3VtZW50XCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBkb2N1bWVudFNwbGl0UGF0aFtkb2N1bWVudFNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uZG9jdW1lbnRTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiZG9jdW1lbnRcIiBmaWxlOiAke2RvY3VtZW50T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGRvY3VtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9jdW1lbnQoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRvY3VtZW50T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudCA9IGRvY3VtZW50T3JpZ2luYWwuZG9jdW1lbnRcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudCwgcGF0aEZyb21Eb2N1bWVudFVpZClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWRvc3NpZXJQYXJsZW1lbnRhaXJlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiZG9zc2llclBhcmxlbWVudGFpcmVcIiBmaWxlOiAke2Rvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llclBhcmxlbWVudGFpcmUoXG4gICAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgZG9zc2llclBhcmxlbWVudGFpcmUgPVxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWwuZG9zc2llclBhcmxlbWVudGFpcmVcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZG9zc2llcnNEaXIsXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmUsXG4gICAgICAgICAgICAgICAgcGF0aEZyb21Eb3NzaWVyUGFybGVtZW50YWlyZVVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuU2NydXRpbnMpIHtcbiAgICBmb3IgKGxldCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLnNjcnV0aW5zKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5zKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluIG9mIG9yaWdpbmFsRGF0YS5zY3J1dGlucy5zY3J1dGluKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBzY3J1dGluLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBzY3J1dGluU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5GaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgc2NydXRpblNwbGl0UGF0aFtzY3J1dGluU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghc2NydXRpbkZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uc2NydXRpblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJzY3J1dGluXCIgZmlsZTogJHtzY3J1dGluT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IFNjcnV0aW5zUmF3Q29udmVydC50b1NjcnV0aW5XcmFwcGVyKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKHNjcnV0aW5PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW4gPSBzY3J1dGluT3JpZ2luYWwuc2NydXRpblxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgc2NydXRpbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVNjcnV0aW5VaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICBpZiAoZW5hYmxlZERhdGFzZXRzICYgRW5hYmxlZERhdGFzZXRzLlF1ZXN0aW9ucykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5xdWVzdGlvbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBxdWVzdGlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBxdWVzdGlvblNwbGl0UGF0aFtxdWVzdGlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXF1ZXN0aW9uRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4ucXVlc3Rpb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicXVlc3Rpb25cIiBmaWxlOiAke3F1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gUXVlc3Rpb25zUmF3Q29udmVydC50b1F1ZXN0aW9uV3JhcHBlcihxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocXVlc3Rpb25PcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uID0gcXVlc3Rpb25PcmlnaW5hbC5xdWVzdGlvblxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgcXVlc3Rpb24sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21RdWVzdGlvblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQ29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgZGF0YXNldHMuY29tcHRlc1JlbmR1c1NlYW5jZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiLnhtbFwiKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGhbXG4gICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aC5sZW5ndGggLSAxXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpZiAoIWNvbXB0ZVJlbmR1U2VhbmNlRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgLi4uY29tcHRlUmVuZHVTZWFuY2VTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwiY29tcHRlUmVuZHVTZWFuY2VcIiBmaWxlOiAke2NvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICA/IENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0LnRvQ29tcHRlUmVuZHVXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgICAgY29uc3QgY29tcHRlUmVuZHVTZWFuY2UgPSBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsLmNvbXB0ZVJlbmR1XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZSxcbiAgICAgICAgICAgICAgICBwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgLy8gUmVzdG9yZSBzdGFuZGFyZCBjb252ZXJzaW9uIG9mIGRhdGVzIHRvIEpTT04uXG4gIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGV4aXN0aW5nRGF0ZVRvSnNvblxuXG4gIHJldHVybiBleGl0Q29kZVxufVxuXG5mdW5jdGlvbiB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oXG4gIGRhdGFzZXRSZW9yZ2FuaXplZERpcjogc3RyaW5nLFxuICBhbWVuZGVtZW50OiB7XG4gICAgdWlkOiBzdHJpbmdcbiAgICB0ZXh0ZUxlZ2lzbGF0aWZSZWY6IHN0cmluZ1xuICB9LFxuKTogdm9pZCB7XG4gIGNvbnN0IHVpZFRleHRlTGVnaXNsYXRpZiA9IGFtZW5kZW1lbnQudGV4dGVMZWdpc2xhdGlmUmVmXG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbCh1aWRUZXh0ZUxlZ2lzbGF0aWYsIHVuZGVmaW5lZClcbiAgY29uc3QgdGV4dGVMZWdpc2xhdGlmRGlyID0gcGF0aC5qb2luKFxuICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICB1aWRUZXh0ZUxlZ2lzbGF0aWYsXG4gIClcbiAgZnMuZW5zdXJlRGlyU3luYyh0ZXh0ZUxlZ2lzbGF0aWZEaXIpXG4gIGNvbnN0IHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoID0gcGF0aC5qb2luKFxuICAgIHRleHRlTGVnaXNsYXRpZkRpcixcbiAgICBhbWVuZGVtZW50LnVpZCArIFwiLmpzb25cIixcbiAgKVxuICBmcy53cml0ZUZpbGVTeW5jKFxuICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgIEpTT04uc3RyaW5naWZ5KGFtZW5kZW1lbnQsIG51bGwsIDIpLFxuICAgIHtcbiAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICB9LFxuICApXG59XG5cbmZ1bmN0aW9uIHdyaXRlUmVvcmdhbml6ZWRKc29uPFQgZXh0ZW5kcyB7IHVpZDogc3RyaW5nIH0+KFxuICBkaXI6IHN0cmluZyxcbiAgb2JqOiBULFxuICBwYXRoRnJvbVVpZDogKGRpcjogc3RyaW5nLCB1aWQ6IHN0cmluZykgPT4gc3RyaW5nLFxuKTogdm9pZCB7XG4gIGNvbnN0IGJhc2VuYW1lID0gcGF0aEZyb21VaWQoZGlyLCBvYmoudWlkKVxuICBmcy53cml0ZUZpbGVTeW5jKGAke2Jhc2VuYW1lfS5qc29uYCwgSlNPTi5zdHJpbmdpZnkob2JqLCBudWxsLCAyKSwge1xuICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgfSlcbn1cblxuZnVuY3Rpb24gbWFpbihhcmd2OiBhbnkpOiBudW1iZXIge1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VBcmdzKGFyZ3YpXG4gIHJldHVybiByZW9yZ2FuaXplRGF0YShvcHRpb25zKVxufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbmlmIChwcm9jZXNzLmFyZ3ZbMV0uZW5kc1dpdGgoXCJyZW9yZ2FuaXplX2RhdGEudHNcIikpXG4gIHByb2Nlc3MuZXhpdChtYWluKHByb2Nlc3MuYXJndikpXG4iXSwi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
805
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXNzZXJ0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29tbWFuZExpbmVBcmdzIiwiX2ZzRXh0cmEiLCJfcGF0aCIsIl9kYXRhc2V0cyIsIl9kYXRlcyIsImdpdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2ZpbGVfc3lzdGVtcyIsIl9sb2FkZXJzIiwiX2FjdGV1cnNfZXRfb3JnYW5lcyIsIl9hZ2VuZGFzIiwiX2FtZW5kZW1lbnRzIiwiX2Rvc3NpZXJzX2xlZ2lzbGF0aWZzIiwiX3NjcnV0aW5zIiwiX3F1ZXN0aW9ucyIsIl9kZWJhdHMiLCJfY2xpX2hlbHBlcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJfYXJyYXlXaXRob3V0SG9sZXMiLCJfaXRlcmFibGVUb0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlU3ByZWFkIiwiVHlwZUVycm9yIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImZyb20iLCJpc0FycmF5IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwibyIsIm5leHQiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwidGVzdCIsInBhcnNlQXJncyIsImFyZ3YiLCJvcHRpb25zRGVmaW5pdGlvbnMiLCJjbG9uZU9wdGlvbiIsImNvbW1pdE9wdGlvbiIsImNhdGVnb3JpZXNPcHRpb24iLCJsZWdpc2xhdHVyZU9wdGlvbiIsInJlbW90ZU9wdGlvbiIsInNpbGVudE9wdGlvbiIsInZlcmJvc2VPcHRpb24iLCJkYXRhRGlyRGVmYXVsdE9wdGlvbiIsInB1bGxPcHRpb24iLCJhbGlhcyIsImhlbHAiLCJ0eXBlIiwiQm9vbGVhbiIsIm9wdGlvbnMiLCJjb21tYW5kTGluZUFyZ3MiLCJjbGVhckRpcmVjdG9yeSIsImRpclBhdGgiLCJmcyIsImVuc3VyZURpclN5bmMiLCJfaXRlcmF0b3IiLCJyZWFkZGlyU3luYyIsIl9zdGVwIiwiZmlsZW5hbWUiLCJzdGFydHNXaXRoIiwicmVtb3ZlU3luYyIsInBhdGgiLCJqb2luIiwiZXJyIiwiY2xvbmVHaXQiLCJnaXRHcm91cFVybCIsImRhdGFzZXROYW1lIiwiZGF0YURpciIsImNsb25lIiwicmVvcmdhbml6ZURhdGEiLCJfb3B0aW9ucyRjbG9uZSIsIkRhdGUiLCJwcm90b3R5cGUiLCJ0b0pTT04iLCJwYXRjaGVkRGF0ZVRvSnNvbiIsImV4aXRDb2RlIiwiY29tbWl0IiwidHJpbSIsInJlcGxhY2UiLCJ2YWxpZGF0ZVJhd0RhdGEiLCJlbmFibGVkRGF0YXNldHMiLCJnZXRFbmFibGVkRGF0YXNldHMiLCJjYXRlZ29yaWVzIiwiY2hvc2VuRGF0YXNldHMiLCJmaWx0ZXJCeUxlZ2lzbGF0dXJlIiwiZGF0YXNldHMiLCJsZWdpc2xhdHVyZSIsImNvbW1pdEdpdCIsImRhdGFzZXRSZW9yZ2FuaXplZERpciIsImVycm9yQ29kZSIsImNvbW1pdEFuZFB1c2giLCJyZW1vdGUiLCJFbmFibGVkRGF0YXNldHMiLCJBY3RldXJzRXRPcmdhbmVzIiwiX2l0ZXJhdG9yMiIsImFjdGV1cnNFdE9yZ2FuZXMiLCJfc3RlcDIiLCJkYXRhc2V0Iiwib3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCIsInNpbGVudCIsImNvbnNvbGUiLCJsb2ciLCJjb25jYXQiLCJiYXNlbmFtZSIsInB1bGwiLCJyZXNldEFuZFB1bGwiLCJhY3RldXJzUmVvcmdhbml6ZWREaXIiLCJta2RpclN5bmMiLCJvcmdhbmVzUmVvcmdhbml6ZWREaXIiLCJzdHJ1Y3R1cmUiLCJEYXRhc2V0U3RydWN0dXJlIiwiU2luZ2xlRmlsZSIsIm9yaWdpbmFsSnNvbiIsInJlYWRGaWxlU3luYyIsImVuY29kaW5nIiwib3JpZ2luYWxEYXRhIiwiQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQiLCJ0b0FjdGV1cnNFdE9yZ2FuZXMiLCJKU09OIiwicGFyc2UiLCJfaXRlcmF0b3IzIiwiYWN0ZXVycyIsImFjdGV1ciIsIl9zdGVwMyIsInJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwidWlkIiwid3JpdGVGaWxlU3luYyIsInN0cmluZ2lmeSIsIl9pdGVyYXRvcjQiLCJvcmdhbmVzIiwib3JnYW5lIiwiX3N0ZXA0IiwiU2VnbWVudGVkRmlsZXMiLCJkZXBvcnRzQnlBY3RldXJVaWQiLCJleGlzdHNTeW5jIiwiX2l0ZXJhdG9yNSIsIndhbGtEaXIiLCJfc3RlcDUiLCJkZXBvcnRTcGxpdFBhdGgiLCJkZXBvcnRGaWxlbmFtZSIsImVuZHNXaXRoIiwiZGVwb3J0T3JpZ2luYWxGaWxlUGF0aCIsImFwcGx5IiwidmVyYm9zZSIsImRlcG9ydE9yaWdpbmFsSnNvbiIsImRlcG9ydE9yaWdpbmFsIiwidG9EZXBvcnQiLCJkZXBvcnQiLCJkZXBvcnRzIiwiYWN0ZXVyUmVmIiwidW5kZWZpbmVkIiwicHVzaCIsIl9pIiwiX09iamVjdCR2YWx1ZXMiLCJ2YWx1ZXMiLCJzb3J0IiwiYiIsImxvY2FsZUNvbXBhcmUiLCJtYW5kYXRzQnlBY3RldXJVaWQiLCJfaXRlcmF0b3I2IiwiX3N0ZXA2IiwibWFuZGF0U3BsaXRQYXRoIiwibWFuZGF0RmlsZW5hbWUiLCJtYW5kYXRPcmlnaW5hbEZpbGVQYXRoIiwibWFuZGF0T3JpZ2luYWxKc29uIiwibWFuZGF0T3JpZ2luYWwiLCJ0b01hbmRhdFdyYXBwZXIiLCJtYW5kYXQiLCJtYW5kYXRzIiwiX2kyIiwiX09iamVjdCR2YWx1ZXMyIiwiX2l0ZXJhdG9yNyIsIl9zdGVwNyIsImFjdGV1clNwbGl0UGF0aCIsImFjdGV1ckZpbGVuYW1lIiwiYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCIsImFjdGV1ck9yaWdpbmFsSnNvbiIsImFjdGV1ck9yaWdpbmFsIiwidG9BY3RldXIiLCJhY3RldXJVaWQiLCJhc3NlcnQiLCJzdHJpY3RFcXVhbCIsImFjdGV1clJlb3JnYW5pemVkSnNvbkZpbGVQYXRoIiwiX2l0ZXJhdG9yOCIsIl9zdGVwOCIsIm9yZ2FuZVNwbGl0UGF0aCIsIm9yZ2FuZUZpbGVuYW1lIiwib3JnYW5lT3JpZ2luYWxGaWxlUGF0aCIsIm9yZ2FuZU9yaWdpbmFsSnNvbiIsIm9yZ2FuZU9yaWdpbmFsIiwidG9PcmdhbmUiLCJvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aCIsIkFnZW5kYXMiLCJfaXRlcmF0b3I5IiwiYWdlbmRhcyIsIl9zdGVwOSIsIkFnZW5kYXNSYXdDb252ZXJ0IiwidG9BZ2VuZGFzIiwiX2l0ZXJhdG9yMTAiLCJyZXVuaW9ucyIsInJldW5pb24iLCJfc3RlcDEwIiwid3JpdGVSZW9yZ2FuaXplZEpzb24iLCJwYXRoRnJvbVJldW5pb25VaWQiLCJfaXRlcmF0b3IxMSIsIl9zdGVwMTEiLCJyZXVuaW9uU3BsaXRQYXRoIiwicmV1bmlvbkZpbGVuYW1lIiwicmV1bmlvbk9yaWdpbmFsRmlsZVBhdGgiLCJyZXVuaW9uT3JpZ2luYWxKc29uIiwicmV1bmlvbk9yaWdpbmFsIiwidG9SZXVuaW9uIiwiQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMiIsImFtZW5kZW1lbnRzIiwiX3N0ZXAxMiIsIkFtZW5kZW1lbnRzUmF3Q29udmVydCIsInRvQW1lbmRlbWVudHMiLCJfaXRlcmF0b3IxMyIsInRleHRlc0V0QW1lbmRlbWVudHMiLCJ0ZXh0ZWxlZyIsIl9zdGVwMTMiLCJ0ZXh0ZUxlZ2lzbGF0aWYiLCJfaXRlcmF0b3IxNCIsIl9zdGVwMTQiLCJhbWVuZGVtZW50Iiwid3JpdGVBbWVuZGVtZW50UmVvcmdhbml6ZWRKc29uIiwiX2l0ZXJhdG9yMTUiLCJfc3RlcDE1IiwiYW1lbmRlbWVudFNwbGl0UGF0aCIsImFtZW5kZW1lbnRGaWxlbmFtZSIsImFtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRoIiwiYW1lbmRlbWVudE9yaWdpbmFsSnNvbiIsImFtZW5kZW1lbnRPcmlnaW5hbCIsInRvQW1lbmRlbWVudFdyYXBwZXIiLCJEb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX2l0ZXJhdG9yMTYiLCJkb3NzaWVyc0xlZ2lzbGF0aWZzIiwiX3N0ZXAxNiIsImRvY3VtZW50c0RpciIsImRvc3NpZXJzRGlyIiwiRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQiLCJ0b0Rvc3NpZXJzTGVnaXNsYXRpZnMiLCJfaXRlcmF0b3IxNyIsInRleHRlc0xlZ2lzbGF0aWZzIiwiZG9jdW1lbnQiLCJfc3RlcDE3IiwicGF0aEZyb21Eb2N1bWVudFVpZCIsIl9pdGVyYXRvcjE4IiwiZG9zc2llciIsIl9zdGVwMTgiLCJkb3NzaWVyUGFybGVtZW50YWlyZSIsInBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQiLCJfaXRlcmF0b3IxOSIsIl9zdGVwMTkiLCJkb2N1bWVudFNwbGl0UGF0aCIsImRvY3VtZW50RmlsZW5hbWUiLCJkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGgiLCJkb2N1bWVudE9yaWdpbmFsSnNvbiIsImRvY3VtZW50T3JpZ2luYWwiLCJ0b0RvY3VtZW50IiwiX2l0ZXJhdG9yMjAiLCJfc3RlcDIwIiwiZG9zc2llclBhcmxlbWVudGFpcmVTcGxpdFBhdGgiLCJkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoIiwiZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24iLCJkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsIiwidG9Eb3NzaWVyUGFybGVtZW50YWlyZSIsIlNjcnV0aW5zIiwiX2l0ZXJhdG9yMjEiLCJzY3J1dGlucyIsIl9zdGVwMjEiLCJTY3J1dGluc1Jhd0NvbnZlcnQiLCJ0b1NjcnV0aW5zIiwiX2l0ZXJhdG9yMjIiLCJzY3J1dGluIiwiX3N0ZXAyMiIsInBhdGhGcm9tU2NydXRpblVpZCIsIl9pdGVyYXRvcjIzIiwiX3N0ZXAyMyIsInNjcnV0aW5TcGxpdFBhdGgiLCJzY3J1dGluRmlsZW5hbWUiLCJzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCIsInNjcnV0aW5PcmlnaW5hbEpzb24iLCJzY3J1dGluT3JpZ2luYWwiLCJ0b1NjcnV0aW5XcmFwcGVyIiwiUXVlc3Rpb25zIiwiX2l0ZXJhdG9yMjQiLCJxdWVzdGlvbnMiLCJfc3RlcDI0IiwiX2l0ZXJhdG9yMjUiLCJfc3RlcDI1IiwicXVlc3Rpb25TcGxpdFBhdGgiLCJxdWVzdGlvbkZpbGVuYW1lIiwicXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoIiwicXVlc3Rpb25PcmlnaW5hbEpzb24iLCJxdWVzdGlvbk9yaWdpbmFsIiwiUXVlc3Rpb25zUmF3Q29udmVydCIsInRvUXVlc3Rpb25XcmFwcGVyIiwicXVlc3Rpb24iLCJwYXRoRnJvbVF1ZXN0aW9uVWlkIiwiQ29tcHRlc1JlbmR1c1NlYW5jZXMiLCJfaXRlcmF0b3IyNiIsImNvbXB0ZXNSZW5kdXNTZWFuY2VzIiwiX3N0ZXAyNiIsIl9pdGVyYXRvcjI3IiwiX3N0ZXAyNyIsImNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoIiwiY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZSIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxGaWxlUGF0aCIsImNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uIiwiY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbCIsIkNvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IiwidG9Db21wdGVSZW5kdVdyYXBwZXIiLCJjb21wdGVSZW5kdVNlYW5jZSIsImNvbXB0ZVJlbmR1IiwicGF0aEZyb21Db21wdGVSZW5kdVVpZCIsImV4aXN0aW5nRGF0ZVRvSnNvbiIsInVpZFRleHRlTGVnaXNsYXRpZiIsInRleHRlTGVnaXNsYXRpZlJlZiIsIm5vdFN0cmljdEVxdWFsIiwidGV4dGVMZWdpc2xhdGlmRGlyIiwiZGlyIiwib2JqIiwicGF0aEZyb21VaWQiLCJtYWluIiwicHJvY2VzcyIsImV4aXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9yZW9yZ2FuaXplX2RhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tIFwiYXNzZXJ0XCJcbmltcG9ydCBjb21tYW5kTGluZUFyZ3MgZnJvbSBcImNvbW1hbmQtbGluZS1hcmdzXCJcbmltcG9ydCBmcyBmcm9tIFwiZnMtZXh0cmFcIlxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIlxuaW1wb3J0IHtcbiAgZGF0YXNldHMsXG4gIERhdGFzZXRTdHJ1Y3R1cmUsXG4gIEVuYWJsZWREYXRhc2V0cyxcbiAgZ2V0RW5hYmxlZERhdGFzZXRzLFxuICBmaWx0ZXJCeUxlZ2lzbGF0dXJlLFxufSBmcm9tIFwiLi4vZGF0YXNldHNcIlxuaW1wb3J0IHsgZXhpc3RpbmdEYXRlVG9Kc29uLCBwYXRjaGVkRGF0ZVRvSnNvbiB9IGZyb20gXCIuLi9kYXRlc1wiXG5pbXBvcnQgKiBhcyBnaXQgZnJvbSBcIi4uL2dpdFwiXG5pbXBvcnQgeyB3YWxrRGlyIH0gZnJvbSBcIi4uL2ZpbGVfc3lzdGVtc1wiXG5pbXBvcnQge1xuICBwYXRoRnJvbUNvbXB0ZVJlbmR1VWlkLFxuICBwYXRoRnJvbURvY3VtZW50VWlkLFxuICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICBwYXRoRnJvbVF1ZXN0aW9uVWlkLFxuICBwYXRoRnJvbVJldW5pb25VaWQsXG4gIHBhdGhGcm9tU2NydXRpblVpZCxcbn0gZnJvbSBcIi4uL2xvYWRlcnNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydCB9IGZyb20gXCIuLi9yYXdfdHlwZXMvYWN0ZXVyc19ldF9vcmdhbmVzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgQWdlbmRhc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FnZW5kYXNcIlxuaW1wb3J0IHsgQ29udmVydCBhcyBBbWVuZGVtZW50c1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2FtZW5kZW1lbnRzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL2Rvc3NpZXJzX2xlZ2lzbGF0aWZzXCJcbmltcG9ydCB7IENvbnZlcnQgYXMgU2NydXRpbnNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9zY3J1dGluc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIFF1ZXN0aW9uc1Jhd0NvbnZlcnQgfSBmcm9tIFwiLi4vcmF3X3R5cGVzL3F1ZXN0aW9uc1wiXG5pbXBvcnQgeyBDb252ZXJ0IGFzIENvbXB0ZXNSZW5kdXNSYXdDb252ZXJ0IH0gZnJvbSBcIi4uL3Jhd190eXBlcy9kZWJhdHNcIlxuaW1wb3J0IHtcbiAgY2xvbmVPcHRpb24sXG4gIGNvbW1pdE9wdGlvbixcbiAgY2F0ZWdvcmllc09wdGlvbixcbiAgbGVnaXNsYXR1cmVPcHRpb24sXG4gIHJlbW90ZU9wdGlvbixcbiAgc2lsZW50T3B0aW9uLFxuICB2ZXJib3NlT3B0aW9uLFxuICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgcHVsbE9wdGlvbixcbn0gZnJvbSBcIi4vc2hhcmVkL2NsaV9oZWxwZXJzXCJcblxuZnVuY3Rpb24gcGFyc2VBcmdzKGFyZ3Y6IHN0cmluZ1tdKTogYW55IHtcbiAgY29uc3Qgb3B0aW9uc0RlZmluaXRpb25zID0gW1xuICAgIGNsb25lT3B0aW9uLFxuICAgIGNvbW1pdE9wdGlvbixcbiAgICBjYXRlZ29yaWVzT3B0aW9uLFxuICAgIGxlZ2lzbGF0dXJlT3B0aW9uLFxuICAgIHJlbW90ZU9wdGlvbixcbiAgICBzaWxlbnRPcHRpb24sXG4gICAgdmVyYm9zZU9wdGlvbixcbiAgICBkYXRhRGlyRGVmYXVsdE9wdGlvbixcbiAgICBwdWxsT3B0aW9uLFxuICAgIHtcbiAgICAgIGFsaWFzOiBcIlZcIixcbiAgICAgIGhlbHA6IFwiZG9uJ3QgdmFsaWRhdGUgcmF3IGRhdGFcIixcbiAgICAgIG5hbWU6IFwibm8tdmFsaWRhdGUtcmF3XCIsXG4gICAgICB0eXBlOiBCb29sZWFuLFxuICAgIH0sXG4gIF1cbiAgY29uc3Qgb3B0aW9ucyA9IGNvbW1hbmRMaW5lQXJncyhvcHRpb25zRGVmaW5pdGlvbnMsIHtcbiAgICBhcmd2OiBhcmd2LFxuICB9KVxuICByZXR1cm4gb3B0aW9uc1xufVxuXG5mdW5jdGlvbiBjbGVhckRpcmVjdG9yeShkaXJQYXRoOiBzdHJpbmcpOiB2b2lkIHtcbiAgZnMuZW5zdXJlRGlyU3luYyhkaXJQYXRoKVxuICBmb3IgKGNvbnN0IGZpbGVuYW1lIG9mIGZzLnJlYWRkaXJTeW5jKGRpclBhdGgpKSB7XG4gICAgaWYgKCFmaWxlbmFtZS5zdGFydHNXaXRoKFwiLlwiKSkge1xuICAgICAgZnMucmVtb3ZlU3luYyhwYXRoLmpvaW4oZGlyUGF0aCwgZmlsZW5hbWUpKVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjbG9uZUdpdChcbiAgZ2l0R3JvdXBVcmw6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgZGF0YXNldE5hbWU6IHN0cmluZyxcbiAgZGF0YURpcjogc3RyaW5nLFxuKTogdm9pZCB7XG4gIGdpdC5jbG9uZShnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG59XG5cbmZ1bmN0aW9uIHJlb3JnYW5pemVEYXRhKG9wdGlvbnM6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IGRhdGFEaXIgPSBvcHRpb25zLmRhdGFEaXJcbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gcGF0Y2hlZERhdGVUb0pzb25cbiAgbGV0IGV4aXRDb2RlID0gb3B0aW9ucy5jb21taXQgPyAxMCA6IDBcbiAgY29uc3QgZ2l0R3JvdXBVcmwgPSBvcHRpb25zLmNsb25lPy50cmltKCkucmVwbGFjZSgvXFwvKyQvLCBcIlwiKVxuICBjb25zdCB2YWxpZGF0ZVJhd0RhdGEgPSAhb3B0aW9uc1tcIm5vLXZhbGlkYXRlLXJhd1wiXVxuICBjb25zdCBlbmFibGVkRGF0YXNldHMgPSBnZXRFbmFibGVkRGF0YXNldHMob3B0aW9ucy5jYXRlZ29yaWVzKVxuICBsZXQgY2hvc2VuRGF0YXNldHMgPSBmaWx0ZXJCeUxlZ2lzbGF0dXJlKGRhdGFzZXRzLCBvcHRpb25zLmxlZ2lzbGF0dXJlKVxuXG4gIGZ1bmN0aW9uIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXI6IHN0cmluZywgb3B0aW9uczogYW55KTogdm9pZCB7XG4gICAgaWYgKG9wdGlvbnMuY29tbWl0KSB7XG4gICAgICBjb25zdCBlcnJvckNvZGUgPSBnaXQuY29tbWl0QW5kUHVzaChcbiAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICBcIk5vdXZlbGxlIG1vaXNzb25cIixcbiAgICAgICAgb3B0aW9ucy5yZW1vdGUsXG4gICAgICApXG4gICAgICBpZiAoXG4gICAgICAgIChleGl0Q29kZSA9PT0gMTAgJiYgZXJyb3JDb2RlICE9PSAxMCkgfHxcbiAgICAgICAgKGV4aXRDb2RlID09PSAwICYmIGVycm9yQ29kZSAhPT0gMCAmJiBlcnJvckNvZGUgIT09IDEwKVxuICAgICAgKSB7XG4gICAgICAgIGV4aXRDb2RlID0gZXJyb3JDb2RlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5BY3RldXJzRXRPcmdhbmVzKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGNob3NlbkRhdGFzZXRzLmFjdGV1cnNFdE9yZ2FuZXMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGlmIChvcHRpb25zLnB1bGwpIHtcbiAgICAgICAgZ2l0LnJlc2V0QW5kUHVsbChkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG4gICAgICB9XG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIGNvbnN0IGFjdGV1cnNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiYWN0ZXVyc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKGFjdGV1cnNSZW9yZ2FuaXplZERpcilcbiAgICAgIGNvbnN0IG9yZ2FuZXNSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwib3JnYW5lc1wiKVxuICAgICAgZnMubWtkaXJTeW5jKG9yZ2FuZXNSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9BY3RldXJzRXRPcmdhbmVzKG9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgZm9yIChjb25zdCBhY3RldXIgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC5hY3RldXJzLmFjdGV1cikge1xuICAgICAgICAgICAgICBjb25zdCByZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIGFjdGV1cnNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBhY3RldXIudWlkW1wiI3RleHRcIl0gKyBcIi5qc29uXCIsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZnMud3JpdGVGaWxlU3luYyhcbiAgICAgICAgICAgICAgICByZW9yZ2FuaXplZEpzb25GaWxlUGF0aCxcbiAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShhY3RldXIsIG51bGwsIDIpLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3JnYW5lIG9mIG9yaWdpbmFsRGF0YS5leHBvcnQub3JnYW5lcy5vcmdhbmUpIHtcbiAgICAgICAgICAgICAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmdhbmVzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgb3JnYW5lLnVpZCArIFwiLmpzb25cIixcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJlb3JnYW5pemVkSnNvbkZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG9yZ2FuZSwgbnVsbCwgMiksXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnN0IGRlcG9ydHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwiZGVwb3J0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcImRlcG9ydFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIGRlcG9ydFNwbGl0UGF0aFtkZXBvcnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIWRlcG9ydEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4uZGVwb3J0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcImRlcG9ydFwiIGZpbGU6ICR7ZGVwb3J0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIGRlcG9ydE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IGRlcG9ydE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9EZXBvcnQoZGVwb3J0T3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRlcG9ydE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBkZXBvcnQgPSBkZXBvcnRPcmlnaW5hbC5kZXBvcnRcbiAgICAgICAgICAgICAgICBsZXQgZGVwb3J0cyA9IGRlcG9ydHNCeUFjdGV1clVpZFtkZXBvcnQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChkZXBvcnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIGRlcG9ydHMgPSBkZXBvcnRzQnlBY3RldXJVaWRbZGVwb3J0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZXBvcnRzLnB1c2goZGVwb3J0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkZXBvcnRzIG9mIE9iamVjdC52YWx1ZXMoZGVwb3J0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIGRlcG9ydHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IG1hbmRhdHNCeUFjdGV1clVpZDoge1xuICAgICAgICAgICAgICBbYWN0ZXVyVWlkOiBzdHJpbmddOiB7IHVpZDogc3RyaW5nIH1bXVxuICAgICAgICAgICAgfSA9IHt9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZzLmV4aXN0c1N5bmMoXG4gICAgICAgICAgICAgICAgcGF0aC5qb2luKG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsIFwibWFuZGF0XCIpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIFtcIm1hbmRhdFwiXSxcbiAgICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICAgIG1hbmRhdFNwbGl0UGF0aFttYW5kYXRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgICBpZiAoIW1hbmRhdEZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgICAgLi4ubWFuZGF0U3BsaXRQYXRoLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgICAgYCAgTG9hZGluZyBcIm1hbmRhdFwiIGZpbGU6ICR7bWFuZGF0T3JpZ2luYWxGaWxlUGF0aH3igKZgLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGNvbnN0IG1hbmRhdE9yaWdpbmFsOiBhbnkgPSB2YWxpZGF0ZVJhd0RhdGFcbiAgICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9NYW5kYXRXcmFwcGVyKFxuICAgICAgICAgICAgICAgICAgICAgIG1hbmRhdE9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKG1hbmRhdE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICBjb25zdCBtYW5kYXQgPSBtYW5kYXRPcmlnaW5hbC5tYW5kYXRcbiAgICAgICAgICAgICAgICBsZXQgbWFuZGF0cyA9IG1hbmRhdHNCeUFjdGV1clVpZFttYW5kYXQuYWN0ZXVyUmVmXVxuICAgICAgICAgICAgICAgIGlmIChtYW5kYXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgIG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbbWFuZGF0LmFjdGV1clJlZl0gPSBbXVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtYW5kYXRzLnB1c2gobWFuZGF0KVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgZm9yIChjb25zdCBtYW5kYXRzIG9mIE9iamVjdC52YWx1ZXMobWFuZGF0c0J5QWN0ZXVyVWlkKSkge1xuICAgICAgICAgICAgICAgIG1hbmRhdHMuc29ydCgoYSwgYikgPT5cbiAgICAgICAgICAgICAgICAgIGEudWlkLmxlbmd0aCA9PT0gYi51aWQubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYS51aWQubG9jYWxlQ29tcGFyZShiLnVpZClcbiAgICAgICAgICAgICAgICAgICAgOiBhLnVpZC5sZW5ndGggLSBiLnVpZC5sZW5ndGgsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgYWN0ZXVyU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImFjdGV1clwiXSxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyRmlsZW5hbWUgPSBhY3RldXJTcGxpdFBhdGhbYWN0ZXVyU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghYWN0ZXVyRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLmFjdGV1clNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJhY3RldXJcIiBmaWxlOiAke2FjdGV1ck9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhY3RldXJPcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBY3RldXJzRXRPcmdhbmVzUmF3Q29udmVydC50b0FjdGV1cihhY3RldXJPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFjdGV1ck9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyID0gYWN0ZXVyT3JpZ2luYWwuYWN0ZXVyXG4gICAgICAgICAgICAgIGNvbnN0IGFjdGV1clVpZCA9IGFjdGV1ci51aWRbXCIjdGV4dFwiXVxuICAgICAgICAgICAgICBjb25zdCBkZXBvcnRzID0gZGVwb3J0c0J5QWN0ZXVyVWlkW2FjdGV1clVpZF1cbiAgICAgICAgICAgICAgaWYgKGRlcG9ydHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChhY3RldXIuZGVwb3J0cywgdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIGFjdGV1ci5kZXBvcnRzID0geyBkZXBvcnQ6IGRlcG9ydHMgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG1hbmRhdHMgPSBtYW5kYXRzQnlBY3RldXJVaWRbYWN0ZXVyVWlkXVxuICAgICAgICAgICAgICBpZiAobWFuZGF0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYXNzZXJ0LnN0cmljdEVxdWFsKGFjdGV1ci5tYW5kYXRzLCB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgYWN0ZXVyLm1hbmRhdHMgPSB7IG1hbmRhdDogbWFuZGF0cyB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBhY3RldXJzUmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgYWN0ZXVyVWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgYWN0ZXVyUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoYWN0ZXVyLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9yZ2FuZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJvcmdhbmVcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZUZpbGVuYW1lID0gb3JnYW5lU3BsaXRQYXRoW29yZ2FuZVNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIW9yZ2FuZUZpbGVuYW1lLmVuZHNXaXRoKFwiLmpzb25cIikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5vcmdhbmVTcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwib3JnYW5lXCIgZmlsZTogJHtvcmdhbmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZU9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIG9yZ2FuZU9yaWdpbmFsRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgY29uc3Qgb3JnYW5lT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQWN0ZXVyc0V0T3JnYW5lc1Jhd0NvbnZlcnQudG9PcmdhbmUob3JnYW5lT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmdhbmVPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IG9yZ2FuZSA9IG9yZ2FuZU9yaWdpbmFsLm9yZ2FuZVxuICAgICAgICAgICAgICBjb25zdCBvcmdhbmVSZW9yZ2FuaXplZEpzb25GaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICAgICAgICAgIG9yZ2FuZXNSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBvcmdhbmUudWlkICsgXCIuanNvblwiLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgb3JnYW5lUmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkob3JnYW5lLCBudWxsLCAyKSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQWdlbmRhcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5hZ2VuZGFzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IEFnZW5kYXNSYXdDb252ZXJ0LnRvQWdlbmRhcyhvcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvbiBvZiBvcmlnaW5hbERhdGEucmV1bmlvbnMucmV1bmlvbikge1xuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkYXRhc2V0UmVvcmdhbml6ZWREaXIsXG4gICAgICAgICAgICAgICAgcmV1bmlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVJldW5pb25VaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmV1bmlvblNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICBbXCJyZXVuaW9uXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHJldW5pb25TcGxpdFBhdGhbcmV1bmlvblNwbGl0UGF0aC5sZW5ndGggLSAxXVxuICAgICAgICAgICAgICBpZiAoIXJldW5pb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCByZXVuaW9uT3JpZ2luYWxGaWxlUGF0aCA9IHBhdGguam9pbihcbiAgICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIC4uLnJldW5pb25TcGxpdFBhdGgsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbnMudmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgICAgYCAgUmVvcmdhbml6aW5nIFwicmV1bmlvblwiIGZpbGU6ICR7cmV1bmlvbk9yaWdpbmFsRmlsZVBhdGh94oCmYCxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbk9yaWdpbmFsSnNvbjogc3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIHJldW5pb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IHJldW5pb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBBZ2VuZGFzUmF3Q29udmVydC50b1JldW5pb24ocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UocmV1bmlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcmV1bmlvbiA9IHJldW5pb25PcmlnaW5hbC5yZXVuaW9uXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICByZXVuaW9uLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tUmV1bmlvblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuQW1lbmRlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuYW1lbmRlbWVudHMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudHMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHRleHRlTGVnaXNsYXRpZiBvZiBvcmlnaW5hbERhdGEudGV4dGVzRXRBbWVuZGVtZW50c1xuICAgICAgICAgICAgICAudGV4dGVsZWcpIHtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBhbWVuZGVtZW50IG9mIHRleHRlTGVnaXNsYXRpZi5hbWVuZGVtZW50cykge1xuICAgICAgICAgICAgICAgIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnQsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGFtZW5kZW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudEZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50U3BsaXRQYXRoW2FtZW5kZW1lbnRTcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFhbWVuZGVtZW50RmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgYW1lbmRlbWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5hbWVuZGVtZW50U3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcImFtZW5kZW1lbnRcIiBmaWxlOiAke2FtZW5kZW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnRPcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBhbWVuZGVtZW50T3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBhbWVuZGVtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQW1lbmRlbWVudHNSYXdDb252ZXJ0LnRvQW1lbmRlbWVudFdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGFtZW5kZW1lbnRPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGFtZW5kZW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGFtZW5kZW1lbnQgPSBhbWVuZGVtZW50T3JpZ2luYWwuYW1lbmRlbWVudFxuICAgICAgICAgICAgICB3cml0ZUFtZW5kZW1lbnRSZW9yZ2FuaXplZEpzb24oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBhbWVuZGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuRG9zc2llcnNMZWdpc2xhdGlmcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBjaG9zZW5EYXRhc2V0cy5kb3NzaWVyc0xlZ2lzbGF0aWZzKSB7XG4gICAgICBjb25zdCBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoOiBzdHJpbmcgPSBwYXRoLmpvaW4oXG4gICAgICAgIGRhdGFEaXIsXG4gICAgICAgIGRhdGFzZXQuZmlsZW5hbWUsXG4gICAgICApXG4gICAgICBpZiAoIW9wdGlvbnMuc2lsZW50KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBSZW9yZ2FuaXppbmcgJHtvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRofWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGFzZXROYW1lID0gcGF0aC5iYXNlbmFtZShcbiAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgXCIuanNvblwiLFxuICAgICAgKVxuICAgICAgY2xvbmVHaXQoZ2l0R3JvdXBVcmwsIGRhdGFzZXROYW1lLCBkYXRhRGlyKVxuXG4gICAgICBjb25zdCBkYXRhc2V0UmVvcmdhbml6ZWREaXIgPSBwYXRoLmpvaW4oZGF0YURpciwgZGF0YXNldE5hbWUpXG4gICAgICBjbGVhckRpcmVjdG9yeShkYXRhc2V0UmVvcmdhbml6ZWREaXIpXG5cbiAgICAgIGNvbnN0IGRvY3VtZW50c0RpciA9IHBhdGguam9pbihkYXRhc2V0UmVvcmdhbml6ZWREaXIsIFwiZG9jdW1lbnRzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9jdW1lbnRzRGlyKVxuICAgICAgY29uc3QgZG9zc2llcnNEaXIgPSBwYXRoLmpvaW4oZGF0YXNldFJlb3JnYW5pemVkRGlyLCBcImRvc3NpZXJzXCIpXG4gICAgICBmcy5ta2RpclN5bmMoZG9zc2llcnNEaXIpXG5cbiAgICAgIHN3aXRjaCAoZGF0YXNldC5zdHJ1Y3R1cmUpIHtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNpbmdsZUZpbGU6XG4gICAgICAgICAge1xuICAgICAgICAgICAgY29uc3Qgb3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbERhdGE6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICA/IERvc3NpZXJzTGVnaXNsYXRpZnNSYXdDb252ZXJ0LnRvRG9zc2llcnNMZWdpc2xhdGlmcyhcbiAgICAgICAgICAgICAgICAgIG9yaWdpbmFsSnNvbixcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogSlNPTi5wYXJzZShvcmlnaW5hbEpzb24pXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydC50ZXh0ZXNMZWdpc2xhdGlmc1xuICAgICAgICAgICAgICAuZG9jdW1lbnQpIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oZG9jdW1lbnRzRGlyLCBkb2N1bWVudCwgcGF0aEZyb21Eb2N1bWVudFVpZClcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGRvc3NpZXJQYXJsZW1lbnRhaXJlIH0gb2Ygb3JpZ2luYWxEYXRhLmV4cG9ydFxuICAgICAgICAgICAgICAuZG9zc2llcnNMZWdpc2xhdGlmcy5kb3NzaWVyKSB7XG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRvc3NpZXJzRGlyLFxuICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tRG9zc2llclBhcmxlbWVudGFpcmVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSBEYXRhc2V0U3RydWN0dXJlLlNlZ21lbnRlZEZpbGVzOlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZG9jdW1lbnRTcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgW1wiZG9jdW1lbnRcIl0sXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50RmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIGRvY3VtZW50U3BsaXRQYXRoW2RvY3VtZW50U3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghZG9jdW1lbnRGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb2N1bWVudE9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb2N1bWVudFNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb2N1bWVudFwiIGZpbGU6ICR7ZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50T3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb2N1bWVudChkb2N1bWVudE9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2UoZG9jdW1lbnRPcmlnaW5hbEpzb24pXG4gICAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50ID0gZG9jdW1lbnRPcmlnaW5hbC5kb2N1bWVudFxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihkb2N1bWVudHNEaXIsIGRvY3VtZW50LCBwYXRoRnJvbURvY3VtZW50VWlkKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICAgIFtcImRvc3NpZXJQYXJsZW1lbnRhaXJlXCJdLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGRvc3NpZXJQYXJsZW1lbnRhaXJlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghZG9zc2llclBhcmxlbWVudGFpcmVGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5kb3NzaWVyUGFybGVtZW50YWlyZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJkb3NzaWVyUGFybGVtZW50YWlyZVwiIGZpbGU6ICR7ZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gRG9zc2llcnNMZWdpc2xhdGlmc1Jhd0NvbnZlcnQudG9Eb3NzaWVyUGFybGVtZW50YWlyZShcbiAgICAgICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbEpzb24sXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgOiBKU09OLnBhcnNlKGRvc3NpZXJQYXJsZW1lbnRhaXJlT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICBjb25zdCBkb3NzaWVyUGFybGVtZW50YWlyZSA9XG4gICAgICAgICAgICAgICAgZG9zc2llclBhcmxlbWVudGFpcmVPcmlnaW5hbC5kb3NzaWVyUGFybGVtZW50YWlyZVxuICAgICAgICAgICAgICB3cml0ZVJlb3JnYW5pemVkSnNvbihcbiAgICAgICAgICAgICAgICBkb3NzaWVyc0RpcixcbiAgICAgICAgICAgICAgICBkb3NzaWVyUGFybGVtZW50YWlyZSxcbiAgICAgICAgICAgICAgICBwYXRoRnJvbURvc3NpZXJQYXJsZW1lbnRhaXJlVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5TY3J1dGlucykge1xuICAgIGZvciAobGV0IGRhdGFzZXQgb2YgY2hvc2VuRGF0YXNldHMuc2NydXRpbnMpIHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGg6IHN0cmluZyA9IHBhdGguam9pbihcbiAgICAgICAgZGF0YURpcixcbiAgICAgICAgZGF0YXNldC5maWxlbmFtZSxcbiAgICAgIClcbiAgICAgIGlmICghb3B0aW9ucy5zaWxlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFJlb3JnYW5pemluZyAke29yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGh9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YXNldE5hbWUgPSBwYXRoLmJhc2VuYW1lKFxuICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICBcIi5qc29uXCIsXG4gICAgICApXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2luZ2xlRmlsZTpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsRGF0YTogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbnMob3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uob3JpZ2luYWxKc29uKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW4gb2Ygb3JpZ2luYWxEYXRhLnNjcnV0aW5zLnNjcnV0aW4pIHtcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIHNjcnV0aW4sXG4gICAgICAgICAgICAgICAgcGF0aEZyb21TY3J1dGluVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHNjcnV0aW5TcGxpdFBhdGggb2Ygd2Fsa0RpcihcbiAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICkpIHtcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbkZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBzY3J1dGluU3BsaXRQYXRoW3NjcnV0aW5TcGxpdFBhdGgubGVuZ3RoIC0gMV1cbiAgICAgICAgICAgICAgaWYgKCFzY3J1dGluRmlsZW5hbWUuZW5kc1dpdGgoXCIuanNvblwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5zY3J1dGluU3BsaXRQYXRoLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGlmIChvcHRpb25zLnZlcmJvc2UpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgICAgIGAgIFJlb3JnYW5pemluZyBcInNjcnV0aW5cIiBmaWxlOiAke3NjcnV0aW5PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNjcnV0aW5PcmlnaW5hbEpzb246IHN0cmluZyA9IGZzLnJlYWRGaWxlU3luYyhcbiAgICAgICAgICAgICAgICBzY3J1dGluT3JpZ2luYWxGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBlbmNvZGluZzogXCJ1dGY4XCIsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBjb25zdCBzY3J1dGluT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gU2NydXRpbnNSYXdDb252ZXJ0LnRvU2NydXRpbldyYXBwZXIoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgICA6IEpTT04ucGFyc2Uoc2NydXRpbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3Qgc2NydXRpbiA9IHNjcnV0aW5PcmlnaW5hbC5zY3J1dGluXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBzY3J1dGluLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tU2NydXRpblVpZCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgfVxuXG4gICAgICBjb21taXRHaXQoZGF0YXNldFJlb3JnYW5pemVkRGlyLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIGlmIChlbmFibGVkRGF0YXNldHMgJiBFbmFibGVkRGF0YXNldHMuUXVlc3Rpb25zKSB7XG4gICAgZm9yIChjb25zdCBkYXRhc2V0IG9mIGRhdGFzZXRzLnF1ZXN0aW9ucykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUoXG4gICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgIFwiLmpzb25cIixcbiAgICAgIClcbiAgICAgIGNsb25lR2l0KGdpdEdyb3VwVXJsLCBkYXRhc2V0TmFtZSwgZGF0YURpcilcblxuICAgICAgY29uc3QgZGF0YXNldFJlb3JnYW5pemVkRGlyID0gcGF0aC5qb2luKGRhdGFEaXIsIGRhdGFzZXROYW1lKVxuICAgICAgY2xlYXJEaXJlY3RvcnkoZGF0YXNldFJlb3JnYW5pemVkRGlyKVxuXG4gICAgICBzd2l0Y2ggKGRhdGFzZXQuc3RydWN0dXJlKSB7XG4gICAgICAgIGNhc2UgRGF0YXNldFN0cnVjdHVyZS5TZWdtZW50ZWRGaWxlczpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uU3BsaXRQYXRoIG9mIHdhbGtEaXIoXG4gICAgICAgICAgICAgIG9yaWdpbmFsSnNvbkRpcmVjdG9yeU9yRmlsZVBhdGgsXG4gICAgICAgICAgICApKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uRmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgIHF1ZXN0aW9uU3BsaXRQYXRoW3F1ZXN0aW9uU3BsaXRQYXRoLmxlbmd0aCAtIDFdXG4gICAgICAgICAgICAgIGlmICghcXVlc3Rpb25GaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbk9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5xdWVzdGlvblNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJxdWVzdGlvblwiIGZpbGU6ICR7cXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgcXVlc3Rpb25PcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25PcmlnaW5hbDogYW55ID0gdmFsaWRhdGVSYXdEYXRhXG4gICAgICAgICAgICAgICAgPyBRdWVzdGlvbnNSYXdDb252ZXJ0LnRvUXVlc3Rpb25XcmFwcGVyKHF1ZXN0aW9uT3JpZ2luYWxKc29uKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShxdWVzdGlvbk9yaWdpbmFsSnNvbilcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb24gPSBxdWVzdGlvbk9yaWdpbmFsLnF1ZXN0aW9uXG4gICAgICAgICAgICAgIHdyaXRlUmVvcmdhbml6ZWRKc29uKFxuICAgICAgICAgICAgICAgIGRhdGFzZXRSZW9yZ2FuaXplZERpcixcbiAgICAgICAgICAgICAgICBxdWVzdGlvbixcbiAgICAgICAgICAgICAgICBwYXRoRnJvbVF1ZXN0aW9uVWlkLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIGNvbW1pdEdpdChkYXRhc2V0UmVvcmdhbml6ZWREaXIsIG9wdGlvbnMpXG4gICAgfVxuICB9XG5cbiAgaWYgKGVuYWJsZWREYXRhc2V0cyAmIEVuYWJsZWREYXRhc2V0cy5Db21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgIGZvciAoY29uc3QgZGF0YXNldCBvZiBkYXRhc2V0cy5jb21wdGVzUmVuZHVzU2VhbmNlcykge1xuICAgICAgY29uc3Qgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKFxuICAgICAgICBkYXRhRGlyLFxuICAgICAgICBkYXRhc2V0LmZpbGVuYW1lLFxuICAgICAgKVxuICAgICAgaWYgKCFvcHRpb25zLnNpbGVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgUmVvcmdhbml6aW5nICR7b3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aH1gKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkYXRhc2V0TmFtZSA9IHBhdGguYmFzZW5hbWUob3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCwgXCIueG1sXCIpXG4gICAgICBjbG9uZUdpdChnaXRHcm91cFVybCwgZGF0YXNldE5hbWUsIGRhdGFEaXIpXG5cbiAgICAgIGNvbnN0IGRhdGFzZXRSZW9yZ2FuaXplZERpciA9IHBhdGguam9pbihkYXRhRGlyLCBkYXRhc2V0TmFtZSlcbiAgICAgIGNsZWFyRGlyZWN0b3J5KGRhdGFzZXRSZW9yZ2FuaXplZERpcilcblxuICAgICAgc3dpdGNoIChkYXRhc2V0LnN0cnVjdHVyZSkge1xuICAgICAgICBjYXNlIERhdGFzZXRTdHJ1Y3R1cmUuU2VnbWVudGVkRmlsZXM6XG4gICAgICAgICAge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCBvZiB3YWxrRGlyKFxuICAgICAgICAgICAgICBvcmlnaW5hbEpzb25EaXJlY3RvcnlPckZpbGVQYXRoLFxuICAgICAgICAgICAgKSkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZUZpbGVuYW1lID1cbiAgICAgICAgICAgICAgICBjb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aFtcbiAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlU3BsaXRQYXRoLmxlbmd0aCAtIDFcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGlmICghY29tcHRlUmVuZHVTZWFuY2VGaWxlbmFtZS5lbmRzV2l0aChcIi5qc29uXCIpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgICAgICAgICAgICAgb3JpZ2luYWxKc29uRGlyZWN0b3J5T3JGaWxlUGF0aCxcbiAgICAgICAgICAgICAgICAuLi5jb21wdGVSZW5kdVNlYW5jZVNwbGl0UGF0aCxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICBpZiAob3B0aW9ucy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICAgICAgICBgICBSZW9yZ2FuaXppbmcgXCJjb21wdGVSZW5kdVNlYW5jZVwiIGZpbGU6ICR7Y29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRofeKApmAsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uOiBzdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoXG4gICAgICAgICAgICAgICAgY29tcHRlUmVuZHVTZWFuY2VPcmlnaW5hbEZpbGVQYXRoLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGVuY29kaW5nOiBcInV0ZjhcIixcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGNvbnN0IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWw6IGFueSA9IHZhbGlkYXRlUmF3RGF0YVxuICAgICAgICAgICAgICAgID8gQ29tcHRlc1JlbmR1c1Jhd0NvbnZlcnQudG9Db21wdGVSZW5kdVdyYXBwZXIoXG4gICAgICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWxKc29uLFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIDogSlNPTi5wYXJzZShjb21wdGVSZW5kdVNlYW5jZU9yaWdpbmFsSnNvbilcblxuICAgICAgICAgICAgICBjb25zdCBjb21wdGVSZW5kdVNlYW5jZSA9IGNvbXB0ZVJlbmR1U2VhbmNlT3JpZ2luYWwuY29tcHRlUmVuZHVcbiAgICAgICAgICAgICAgd3JpdGVSZW9yZ2FuaXplZEpzb24oXG4gICAgICAgICAgICAgICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgICAgICAgICAgICAgIGNvbXB0ZVJlbmR1U2VhbmNlLFxuICAgICAgICAgICAgICAgIHBhdGhGcm9tQ29tcHRlUmVuZHVVaWQsXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgY29tbWl0R2l0KGRhdGFzZXRSZW9yZ2FuaXplZERpciwgb3B0aW9ucylcbiAgICB9XG4gIH1cblxuICAvLyBSZXN0b3JlIHN0YW5kYXJkIGNvbnZlcnNpb24gb2YgZGF0ZXMgdG8gSlNPTi5cbiAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZXhpc3RpbmdEYXRlVG9Kc29uXG5cbiAgcmV0dXJuIGV4aXRDb2RlXG59XG5cbmZ1bmN0aW9uIHdyaXRlQW1lbmRlbWVudFJlb3JnYW5pemVkSnNvbihcbiAgZGF0YXNldFJlb3JnYW5pemVkRGlyOiBzdHJpbmcsXG4gIGFtZW5kZW1lbnQ6IHtcbiAgICB1aWQ6IHN0cmluZ1xuICAgIHRleHRlTGVnaXNsYXRpZlJlZjogc3RyaW5nXG4gIH0sXG4pOiB2b2lkIHtcbiAgY29uc3QgdWlkVGV4dGVMZWdpc2xhdGlmID0gYW1lbmRlbWVudC50ZXh0ZUxlZ2lzbGF0aWZSZWZcbiAgYXNzZXJ0Lm5vdFN0cmljdEVxdWFsKHVpZFRleHRlTGVnaXNsYXRpZiwgdW5kZWZpbmVkKVxuICBjb25zdCB0ZXh0ZUxlZ2lzbGF0aWZEaXIgPSBwYXRoLmpvaW4oXG4gICAgZGF0YXNldFJlb3JnYW5pemVkRGlyLFxuICAgIHVpZFRleHRlTGVnaXNsYXRpZixcbiAgKVxuICBmcy5lbnN1cmVEaXJTeW5jKHRleHRlTGVnaXNsYXRpZkRpcilcbiAgY29uc3QgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGggPSBwYXRoLmpvaW4oXG4gICAgdGV4dGVMZWdpc2xhdGlmRGlyLFxuICAgIGFtZW5kZW1lbnQudWlkICsgXCIuanNvblwiLFxuICApXG4gIGZzLndyaXRlRmlsZVN5bmMoXG4gICAgcmVvcmdhbml6ZWRKc29uRmlsZVBhdGgsXG4gICAgSlNPTi5zdHJpbmdpZnkoYW1lbmRlbWVudCwgbnVsbCwgMiksXG4gICAge1xuICAgICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICAgIH0sXG4gIClcbn1cblxuZnVuY3Rpb24gd3JpdGVSZW9yZ2FuaXplZEpzb248VCBleHRlbmRzIHsgdWlkOiBzdHJpbmcgfT4oXG4gIGRpcjogc3RyaW5nLFxuICBvYmo6IFQsXG4gIHBhdGhGcm9tVWlkOiAoZGlyOiBzdHJpbmcsIHVpZDogc3RyaW5nKSA9PiBzdHJpbmcsXG4pOiB2b2lkIHtcbiAgY29uc3QgYmFzZW5hbWUgPSBwYXRoRnJvbVVpZChkaXIsIG9iai51aWQpXG4gIGZzLndyaXRlRmlsZVN5bmMoYCR7YmFzZW5hbWV9Lmpzb25gLCBKU09OLnN0cmluZ2lmeShvYmosIG51bGwsIDIpLCB7XG4gICAgZW5jb2Rpbmc6IFwidXRmOFwiLFxuICB9KVxufVxuXG5mdW5jdGlvbiBtYWluKGFyZ3Y6IGFueSk6IG51bWJlciB7XG4gIGNvbnN0IG9wdGlvbnMgPSBwYXJzZUFyZ3MoYXJndilcbiAgcmV0dXJuIHJlb3JnYW5pemVEYXRhKG9wdGlvbnMpXG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuaWYgKHByb2Nlc3MuYXJndlsxXS5lbmRzV2l0aChcInJlb3JnYW5pemVfZGF0YS50c1wiKSlcbiAgcHJvY2Vzcy5leGl0KG1haW4ocHJvY2Vzcy5hcmd2KSlcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZ0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLEtBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUosT0FBQTtBQU9BLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLEdBQUEsR0FBQUMsdUJBQUEs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Siw4QkFBOEJBLENBQ3JDMUkscUJBQTZCLEVBQzdCeUksVUFHQyxFQUNLO0VBQ04sSUFBTThGLGtCQUFrQixHQUFHOUYsVUFBVSxDQUFDK0Ysa0JBQWtCO0VBQ3hENUksa0JBQU0sQ0FBQzZJLGNBQWMsQ0FBQ0Ysa0JBQWtCLEVBQUV6SyxTQUFTLENBQUM7RUFDcEQsSUFBTTRLLGtCQUFrQixHQUFHclEsZ0JBQUksQ0FBQ0MsSUFBSSxDQUNsQzBCLHFCQUFxQixFQUNyQnVPLGtCQUNGLENBQUM7RUFDRDFRLG1CQUFFLENBQUNDLGFBQWEsQ0FBQzRRLGtCQUFrQixDQUFDO0VBQ3BDLElBQU10TSx1QkFBdUIsR0FBRy9ELGdCQUFJLENBQUNDLElBQUksQ0FDdkNvUSxrQkFBa0IsRUFDbEJqRyxVQUFVLENBQUNwRyxHQUFHLEdBQUcsT0FDbkIsQ0FBQztFQUNEeEUsbUJBQUUsQ0FBQ3lFLGFBQWEsQ0FDZEYsdUJBQXVCLEVBQ3ZCTixJQUFJLENBQUNTLFNBQVMsQ0FBQ2tHLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQ25DO0lBQ0UvRyxRQUFRLEVBQUU7RUFDWixDQUNGLENBQUM7QUFDSDtBQUVBLFNBQVN3RixvQkFBb0JBLENBQzNCeUgsR0FBVyxFQUNYQyxHQUFNLEVBQ05DLFdBQWlELEVBQzNDO0VBQ04sSUFBTTlOLFFBQVEsR0FBRzhOLFdBQVcsQ0FBQ0YsR0FBRyxFQUFFQyxHQUFHLENBQUN2TSxHQUFHLENBQUM7RUFDMUN4RSxtQkFBRSxDQUFDeUUsYUFBYSxJQUFBeEIsTUFBQSxDQUFJQyxRQUFRLFlBQVNlLElBQUksQ0FBQ1MsU0FBUyxDQUFDcU0sR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNqRWxOLFFBQVEsRUFBRTtFQUNaLENBQUMsQ0FBQztBQUNKO0FBRUEsU0FBU29OLElBQUlBLENBQUNwUyxJQUFTLEVBQVU7RUFDL0IsSUFBTWUsT0FBTyxHQUFHaEIsU0FBUyxDQUFDQyxJQUFJLENBQUM7RUFDL0IsT0FBT21DLGNBQWMsQ0FBQ3BCLE9BQU8sQ0FBQztBQUNoQzs7QUFFQTtBQUNBLElBQUlzUixPQUFPLENBQUNyUyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMwRyxRQUFRLENBQUMsb0JBQW9CLENBQUMsRUFDaEQyTCxPQUFPLENBQUNDLElBQUksQ0FBQ0YsSUFBSSxDQUFDQyxPQUFPLENBQUNyUyxJQUFJLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==