appium 2.0.0-beta.26 → 2.0.0-beta.29

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 (118) hide show
  1. package/build/lib/appium.d.ts +215 -0
  2. package/build/lib/appium.d.ts.map +1 -0
  3. package/build/lib/appium.js +62 -54
  4. package/build/lib/cli/args.d.ts +20 -0
  5. package/build/lib/cli/args.d.ts.map +1 -0
  6. package/build/lib/cli/args.js +1 -1
  7. package/build/lib/cli/driver-command.d.ts +36 -0
  8. package/build/lib/cli/driver-command.d.ts.map +1 -0
  9. package/build/lib/cli/driver-command.js +8 -7
  10. package/build/lib/cli/extension-command.d.ts +345 -0
  11. package/build/lib/cli/extension-command.d.ts.map +1 -0
  12. package/build/lib/cli/extension-command.js +52 -38
  13. package/build/lib/cli/extension.d.ts +14 -0
  14. package/build/lib/cli/extension.d.ts.map +1 -0
  15. package/build/lib/cli/extension.js +7 -2
  16. package/build/lib/cli/parser.d.ts +79 -0
  17. package/build/lib/cli/parser.d.ts.map +1 -0
  18. package/build/lib/cli/parser.js +1 -1
  19. package/build/lib/cli/plugin-command.d.ts +39 -0
  20. package/build/lib/cli/plugin-command.d.ts.map +1 -0
  21. package/build/lib/cli/plugin-command.js +6 -7
  22. package/build/lib/cli/utils.d.ts +29 -0
  23. package/build/lib/cli/utils.d.ts.map +1 -0
  24. package/build/lib/cli/utils.js +1 -1
  25. package/build/lib/config-file.d.ts +100 -0
  26. package/build/lib/config-file.d.ts.map +1 -0
  27. package/build/lib/config-file.js +1 -1
  28. package/build/lib/config.d.ts +40 -0
  29. package/build/lib/config.d.ts.map +1 -0
  30. package/build/lib/config.js +2 -2
  31. package/build/lib/constants.d.ts +48 -0
  32. package/build/lib/constants.d.ts.map +1 -0
  33. package/build/lib/constants.js +1 -1
  34. package/build/lib/extension/driver-config.d.ts +84 -0
  35. package/build/lib/extension/driver-config.d.ts.map +1 -0
  36. package/build/lib/extension/driver-config.js +1 -1
  37. package/build/lib/extension/extension-config.d.ts +170 -0
  38. package/build/lib/extension/extension-config.d.ts.map +1 -0
  39. package/build/lib/extension/extension-config.js +2 -2
  40. package/build/lib/extension/index.d.ts +39 -0
  41. package/build/lib/extension/index.d.ts.map +1 -0
  42. package/build/lib/extension/index.js +1 -1
  43. package/build/lib/extension/manifest.d.ts +174 -0
  44. package/build/lib/extension/manifest.d.ts.map +1 -0
  45. package/build/lib/extension/manifest.js +1 -1
  46. package/build/lib/extension/package-changed.d.ts +11 -0
  47. package/build/lib/extension/package-changed.d.ts.map +1 -0
  48. package/build/lib/extension/package-changed.js +1 -1
  49. package/build/lib/extension/plugin-config.d.ts +62 -0
  50. package/build/lib/extension/plugin-config.d.ts.map +1 -0
  51. package/build/lib/extension/plugin-config.js +1 -1
  52. package/build/lib/grid-register.d.ts +10 -0
  53. package/build/lib/grid-register.d.ts.map +1 -0
  54. package/build/lib/logger.d.ts +3 -0
  55. package/build/lib/logger.d.ts.map +1 -0
  56. package/build/lib/logsink.d.ts +4 -0
  57. package/build/lib/logsink.d.ts.map +1 -0
  58. package/build/lib/logsink.js +1 -1
  59. package/build/lib/main.d.ts +51 -0
  60. package/build/lib/main.d.ts.map +1 -0
  61. package/build/lib/main.js +1 -1
  62. package/build/lib/schema/arg-spec.d.ts +143 -0
  63. package/build/lib/schema/arg-spec.d.ts.map +1 -0
  64. package/build/lib/schema/arg-spec.js +1 -1
  65. package/build/lib/schema/cli-args.d.ts +19 -0
  66. package/build/lib/schema/cli-args.d.ts.map +1 -0
  67. package/build/lib/schema/cli-args.js +1 -1
  68. package/build/lib/schema/cli-transformers.d.ts +5 -0
  69. package/build/lib/schema/cli-transformers.d.ts.map +1 -0
  70. package/build/lib/schema/cli-transformers.js +1 -1
  71. package/build/lib/schema/index.d.ts +3 -0
  72. package/build/lib/schema/index.d.ts.map +1 -0
  73. package/build/lib/schema/keywords.d.ts +24 -0
  74. package/build/lib/schema/keywords.d.ts.map +1 -0
  75. package/build/lib/schema/keywords.js +1 -1
  76. package/build/lib/schema/schema.d.ts +259 -0
  77. package/build/lib/schema/schema.d.ts.map +1 -0
  78. package/build/lib/schema/schema.js +3 -3
  79. package/build/lib/utils.d.ts +66 -0
  80. package/build/lib/utils.d.ts.map +1 -0
  81. package/build/lib/utils.js +6 -4
  82. package/build/tsconfig.tsbuildinfo +1 -0
  83. package/lib/appium.js +163 -81
  84. package/lib/cli/args.js +1 -2
  85. package/lib/cli/driver-command.js +11 -8
  86. package/lib/cli/extension-command.js +129 -80
  87. package/lib/cli/extension.js +13 -3
  88. package/lib/cli/parser.js +1 -2
  89. package/lib/cli/plugin-command.js +16 -6
  90. package/lib/cli/utils.js +1 -1
  91. package/lib/config-file.js +3 -4
  92. package/lib/config.js +12 -8
  93. package/lib/constants.js +0 -1
  94. package/lib/extension/driver-config.js +31 -12
  95. package/lib/extension/extension-config.js +21 -22
  96. package/lib/extension/index.js +1 -2
  97. package/lib/extension/manifest.js +23 -127
  98. package/lib/extension/package-changed.js +0 -1
  99. package/lib/extension/plugin-config.js +9 -7
  100. package/lib/logsink.js +4 -0
  101. package/lib/main.js +9 -10
  102. package/lib/schema/arg-spec.js +10 -6
  103. package/lib/schema/cli-args.js +0 -1
  104. package/lib/schema/cli-transformers.js +0 -1
  105. package/lib/schema/keywords.js +0 -1
  106. package/lib/schema/schema.js +2 -3
  107. package/lib/utils.js +49 -16
  108. package/package.json +12 -14
  109. package/types/appium-manifest.d.ts +61 -0
  110. package/types/cli.d.ts +134 -0
  111. package/types/extension.d.ts +56 -0
  112. package/types/external-manifest.d.ts +58 -0
  113. package/types/index.d.ts +7 -0
  114. package/build/lib/appium-config.schema.json +0 -278
  115. package/build/lib/schema/appium-config-schema.js +0 -251
  116. package/lib/schema/appium-config-schema.js +0 -287
  117. package/types/appium-config.d.ts +0 -197
  118. package/types/types.d.ts +0 -245
@@ -206,4 +206,4 @@ function clear() {
206
206
 
207
207
  var _default = init;
208
208
  exports.default = _default;
209
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2dzaW5rLmpzIl0sIm5hbWVzIjpbImxvZ2dlciIsInBhdGNoTG9nZ2VyIiwibnBtbG9nIiwiZ2xvYmFsIiwiX2dsb2JhbF9ucG1sb2ciLCJsZXZlbCIsImxldmVscyIsImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsImNvbG9ycyIsIm5wbVRvV2luc3RvbkxldmVscyIsInNpbGx5IiwidmVyYm9zZSIsImh0dHAiLCJsb2ciLCJ1c2VMb2NhbFRpbWVab25lIiwidGltZXN0YW1wRm9ybWF0IiwiZm9ybWF0IiwidGltZXN0YW1wIiwiZGF0ZSIsIkRhdGUiLCJ2YWx1ZU9mIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJ0b0lTT1N0cmluZyIsInJlcGxhY2UiLCJ0cmltIiwiY29sb3JpemVGb3JtYXQiLCJjb2xvcml6ZSIsInN0cmlwQ29sb3JGb3JtYXQiLCJzdHJpcENvbG9yIiwiY29kZSIsIm1lc3NhZ2UiLCJjcmVhdGVDb25zb2xlVHJhbnNwb3J0IiwiYXJncyIsImxvZ0x2bCIsInRyYW5zcG9ydHMiLCJDb25zb2xlIiwibmFtZSIsImhhbmRsZUV4Y2VwdGlvbnMiLCJleGl0T25FcnJvciIsImpzb24iLCJzdGRlcnJMZXZlbHMiLCJjb21iaW5lIiwiYWRqdXN0RGVidWciLCJsb2dOb0NvbG9ycyIsInByaW50ZiIsInByaW50SW5mbyIsImxvZ1RpbWVzdGFtcCIsImNyZWF0ZUZpbGVUcmFuc3BvcnQiLCJGaWxlIiwiZmlsZW5hbWUiLCJsb2dGaWxlIiwibWF4RmlsZXMiLCJjcmVhdGVIdHRwVHJhbnNwb3J0IiwiaG9zdCIsInBvcnQiLCJ3ZWJob29rIiwibWF0Y2giLCJob3N0QW5kUG9ydCIsInNwbGl0IiwicGFyc2VJbnQiLCJIdHRwIiwicGF0aCIsImNyZWF0ZVRyYW5zcG9ydHMiLCJjb25zb2xlTG9nTGV2ZWwiLCJmaWxlTG9nTGV2ZWwiLCJsb2dsZXZlbCIsImx2bFBhaXIiLCJwdXNoIiwiZnMiLCJleGlzdHMiLCJ1bmxpbmsiLCJlIiwiY29uc29sZSIsImluaXQiLCJsb2NhbFRpbWV6b25lIiwiY2xlYXIiLCJvbiIsImxvZ09iaiIsIndpbnN0b25MZXZlbCIsIm1zZyIsInByZWZpeCIsIm1hZ2VudGEiLCJsb2dIYW5kbGVyIiwiXyIsImlzRnVuY3Rpb24iLCJ0cmFuc3BvcnQiLCJrZXlzIiwicmVtb3ZlIiwicmVtb3ZlQWxsTGlzdGVuZXJzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUFBLGdCQUFPQyxXQUFQLENBQW1CQyxlQUFuQjs7QUFDQUMsTUFBTSxDQUFDQyxjQUFQLEdBQXdCRixlQUF4QjtBQUdBQSxnQkFBT0csS0FBUCxHQUFlLFFBQWY7QUFDQSxNQUFNQyxNQUFNLEdBQUc7QUFDYkMsRUFBQUEsS0FBSyxFQUFFLENBRE07QUFFYkMsRUFBQUEsSUFBSSxFQUFFLENBRk87QUFHYkMsRUFBQUEsSUFBSSxFQUFFLENBSE87QUFJYkMsRUFBQUEsS0FBSyxFQUFFO0FBSk0sQ0FBZjtBQU9BLE1BQU1DLE1BQU0sR0FBRztBQUNiSCxFQUFBQSxJQUFJLEVBQUUsTUFETztBQUViRCxFQUFBQSxLQUFLLEVBQUUsTUFGTTtBQUdiRSxFQUFBQSxJQUFJLEVBQUUsUUFITztBQUliQyxFQUFBQSxLQUFLLEVBQUU7QUFKTSxDQUFmO0FBT0EsTUFBTUUsa0JBQWtCLEdBQUc7QUFDekJDLEVBQUFBLEtBQUssRUFBRSxPQURrQjtBQUV6QkMsRUFBQUEsT0FBTyxFQUFFLE9BRmdCO0FBR3pCUCxFQUFBQSxLQUFLLEVBQUUsT0FIa0I7QUFJekJDLEVBQUFBLElBQUksRUFBRSxNQUptQjtBQUt6Qk8sRUFBQUEsSUFBSSxFQUFFLE1BTG1CO0FBTXpCTixFQUFBQSxJQUFJLEVBQUUsTUFObUI7QUFPekJDLEVBQUFBLEtBQUssRUFBRTtBQVBrQixDQUEzQjtBQVVBLElBQUlNLEdBQUcsR0FBRyxJQUFWO0FBQ0EsSUFBSUMsZ0JBQWdCLEdBQUcsS0FBdkI7O0FBR0EsTUFBTUMsZUFBZSxHQUFHQyxn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QyxNQUFuQixHQUE0QkEsTUFBTSxDQUFDQyxPQUFRLElBQUdGLEdBQUksRUFBM0Q7QUFDRDs7QUFDRGxFLElBQUFBLEdBQUcsQ0FBQ2lFLFlBQUQsQ0FBSCxDQUFrQkMsR0FBbEI7O0FBQ0EsUUFBSS9DLElBQUksQ0FBQ2tELFVBQUwsSUFBbUJDLGdCQUFFQyxVQUFGLENBQWFwRCxJQUFJLENBQUNrRCxVQUFsQixDQUF2QixFQUFzRDtBQUNwRGxELE1BQUFBLElBQUksQ0FBQ2tELFVBQUwsQ0FBZ0JMLE1BQU0sQ0FBQzNFLEtBQXZCLEVBQThCNkUsR0FBOUI7QUFDRDtBQUVGLEdBWkQ7QUFhRDs7QUFFRCxTQUFTSixLQUFULEdBQWtCO0FBQ2hCLE1BQUk5RCxHQUFKLEVBQVM7QUFDUCxTQUFLLElBQUl3RSxTQUFULElBQXNCRixnQkFBRUcsSUFBRixDQUFPekUsR0FBRyxDQUFDcUIsVUFBWCxDQUF0QixFQUE4QztBQUM1Q3JCLE1BQUFBLEdBQUcsQ0FBQzBFLE1BQUosQ0FBV0YsU0FBWDtBQUNEO0FBQ0Y7O0FBQ0R0RixrQkFBT3lGLGtCQUFQLENBQTBCLEtBQTFCO0FBQ0Q7O2VBSWNmLEkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbnBtbG9nIGZyb20gJ25wbWxvZyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGZvcm1hdCwgdHJhbnNwb3J0cyB9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHsgZnMsIGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8vIHNldCB1cCBkaXN0cmlidXRlZCBsb2dnaW5nIGJlZm9yZSBldmVyeXRoaW5nIGVsc2VcbmxvZ2dlci5wYXRjaExvZ2dlcihucG1sb2cpO1xuZ2xvYmFsLl9nbG9iYWxfbnBtbG9nID0gbnBtbG9nO1xuXG4vLyBucG1sb2cgaXMgdXNlZCBvbmx5IGZvciBlbWl0dGluZywgd2UgdXNlIHdpbnN0b24gZm9yIG91dHB1dFxubnBtbG9nLmxldmVsID0gJ3NpbGVudCc7XG5jb25zdCBsZXZlbHMgPSB7XG4gIGRlYnVnOiA0LFxuICBpbmZvOiAzLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMSxcbn07XG5cbmNvbnN0IGNvbG9ycyA9IHtcbiAgaW5mbzogJ2N5YW4nLFxuICBkZWJ1ZzogJ2dyZXknLFxuICB3YXJuOiAneWVsbG93JyxcbiAgZXJyb3I6ICdyZWQnLFxufTtcblxuY29uc3QgbnBtVG9XaW5zdG9uTGV2ZWxzID0ge1xuICBzaWxseTogJ2RlYnVnJyxcbiAgdmVyYm9zZTogJ2RlYnVnJyxcbiAgZGVidWc6ICdkZWJ1ZycsXG4gIGluZm86ICdpbmZvJyxcbiAgaHR0cDogJ2luZm8nLFxuICB3YXJuOiAnd2FybicsXG4gIGVycm9yOiAnZXJyb3InLFxufTtcblxubGV0IGxvZyA9IG51bGw7XG5sZXQgdXNlTG9jYWxUaW1lWm9uZSA9IGZhbHNlO1xuXG4vLyBhZGQgdGhlIHRpbWVzdGFtcCBpbiB0aGUgY29ycmVjdCBmb3JtYXQgdG8gdGhlIGxvZyBpbmZvIG9iamVjdFxuY29uc3QgdGltZXN0YW1wRm9ybWF0ID0gZm9ybWF0LnRpbWVzdGFtcCh7XG4gIGZvcm1hdCAoKSB7XG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGlmICh1c2VMb2NhbFRpbWVab25lKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMCk7XG4gICAgfVxuICAgIC8vICcyMDEyLTExLTA0VDE0OjUxOjA2LjE1N1onIC0+ICcyMDEyLTExLTA0IDE0OjUxOjA2OjE1NydcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpXG4gICAgICAucmVwbGFjZSgvW1RaXS9nLCAnICcpXG4gICAgICAucmVwbGFjZSgvXFwuL2csICc6JylcbiAgICAgIC50cmltKCk7XG4gIH0sXG59KTtcblxuLy8gc2V0IHRoZSBjdXN0b20gY29sb3JzXG5jb25zdCBjb2xvcml6ZUZvcm1hdCA9IGZvcm1hdC5jb2xvcml6ZSh7XG4gIGNvbG9ycyxcbn0pO1xuXG4vLyBTdHJpcCB0aGUgY29sb3IgbWFya2luZyB3aXRoaW4gbWVzc2FnZXNcbmNvbnN0IHN0cmlwQ29sb3JGb3JtYXQgPSBmb3JtYXQoZnVuY3Rpb24gc3RyaXBDb2xvciAoaW5mbykge1xuICBjb25zdCBjb2RlID0gL1xcdTAwMWJcXFsoXFxkKyg7XFxkKykqKT9tL2c7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuICBpbmZvLm1lc3NhZ2UgPSBpbmZvLm1lc3NhZ2UucmVwbGFjZShjb2RlLCAnJyk7XG4gIHJldHVybiBpbmZvO1xufSkoKTtcblxuZnVuY3Rpb24gY3JlYXRlQ29uc29sZVRyYW5zcG9ydCAoYXJncywgbG9nTHZsKSB7XG4gIHJldHVybiBuZXcgKHRyYW5zcG9ydHMuQ29uc29sZSkoe1xuICAgIG5hbWU6ICdjb25zb2xlJyxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIHN0ZGVyckxldmVsczogWydlcnJvciddLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBmb3JtYXQoZnVuY3Rpb24gYWRqdXN0RGVidWcgKGluZm8pIHtcbiAgICAgICAgLy8gcHJlcGVuZCBkZWJ1ZyBtYXJrZXIsIGFuZCBzaGlmdCB0byBgaW5mb2AgbG9nIGxldmVsXG4gICAgICAgIGlmIChpbmZvLmxldmVsID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgaW5mby5sZXZlbCA9ICdpbmZvJztcbiAgICAgICAgICBpbmZvLm1lc3NhZ2UgPSBgW2RlYnVnXSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSkoKSxcbiAgICAgIHRpbWVzdGFtcEZvcm1hdCxcbiAgICAgIGFyZ3MubG9nTm9Db2xvcnMgPyBzdHJpcENvbG9yRm9ybWF0IDogY29sb3JpemVGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyAoaW5mbykge1xuICAgICAgICByZXR1cm4gYCR7YXJncy5sb2dUaW1lc3RhbXAgPyBgJHtpbmZvLnRpbWVzdGFtcH0gLSBgIDogJyd9JHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVUcmFuc3BvcnQgKGFyZ3MsIGxvZ0x2bCkge1xuICByZXR1cm4gbmV3ICh0cmFuc3BvcnRzLkZpbGUpKHtcbiAgICBuYW1lOiAnZmlsZScsXG4gICAgZmlsZW5hbWU6IGFyZ3MubG9nRmlsZSxcbiAgICBtYXhGaWxlczogMSxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBzdHJpcENvbG9yRm9ybWF0LFxuICAgICAgdGltZXN0YW1wRm9ybWF0LFxuICAgICAgZm9ybWF0LnByaW50ZihmdW5jdGlvbiBwcmludEluZm8gKGluZm8pIHtcbiAgICAgICAgcmV0dXJuIGAke2luZm8udGltZXN0YW1wfSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIdHRwVHJhbnNwb3J0IChhcmdzLCBsb2dMdmwpIHtcbiAgbGV0IGhvc3QgPSAnMTI3LjAuMC4xJztcbiAgbGV0IHBvcnQgPSA5MDAzO1xuXG4gIGlmIChhcmdzLndlYmhvb2subWF0Y2goJzonKSkge1xuICAgIGNvbnN0IGhvc3RBbmRQb3J0ID0gYXJncy53ZWJob29rLnNwbGl0KCc6Jyk7XG4gICAgaG9zdCA9IGhvc3RBbmRQb3J0WzBdO1xuICAgIHBvcnQgPSBwYXJzZUludChob3N0QW5kUG9ydFsxXSwgMTApO1xuICB9XG5cbiAgcmV0dXJuIG5ldyAodHJhbnNwb3J0cy5IdHRwKSh7XG4gICAgbmFtZTogJ2h0dHAnLFxuICAgIGhvc3QsXG4gICAgcG9ydCxcbiAgICBwYXRoOiAnLycsXG4gICAgaGFuZGxlRXhjZXB0aW9uczogdHJ1ZSxcbiAgICBleGl0T25FcnJvcjogZmFsc2UsXG4gICAganNvbjogZmFsc2UsXG4gICAgbGV2ZWw6IGxvZ0x2bCxcbiAgICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKFxuICAgICAgc3RyaXBDb2xvckZvcm1hdCxcbiAgICAgIGZvcm1hdC5wcmludGYoZnVuY3Rpb24gcHJpbnRJbmZvIChpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHtpbmZvLnRpbWVzdGFtcH0gJHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcG9ydHMgKGFyZ3MpIHtcbiAgbGV0IHRyYW5zcG9ydHMgPSBbXTtcbiAgbGV0IGNvbnNvbGVMb2dMZXZlbCA9IG51bGw7XG4gIGxldCBmaWxlTG9nTGV2ZWwgPSBudWxsO1xuXG4gIGlmIChhcmdzLmxvZ2xldmVsICYmIGFyZ3MubG9nbGV2ZWwubWF0Y2goJzonKSkge1xuICAgIC8vIC0tbG9nLWxldmVsIGFyZyBjYW4gb3B0aW9uYWxseSBwcm92aWRlIGRpZmYgbG9nZ2luZyBsZXZlbHMgZm9yIGNvbnNvbGUgYW5kIGZpbGUsIHNlcGFyYXRlZCBieSBhIGNvbG9uXG4gICAgY29uc3QgbHZsUGFpciA9IGFyZ3MubG9nbGV2ZWwuc3BsaXQoJzonKTtcbiAgICBjb25zb2xlTG9nTGV2ZWwgPSBsdmxQYWlyWzBdIHx8IGNvbnNvbGVMb2dMZXZlbDtcbiAgICBmaWxlTG9nTGV2ZWwgPSBsdmxQYWlyWzFdIHx8IGZpbGVMb2dMZXZlbDtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlTG9nTGV2ZWwgPSBmaWxlTG9nTGV2ZWwgPSBhcmdzLmxvZ2xldmVsO1xuICB9XG5cbiAgdHJhbnNwb3J0cy5wdXNoKGNyZWF0ZUNvbnNvbGVUcmFuc3BvcnQoYXJncywgY29uc29sZUxvZ0xldmVsKSk7XG5cbiAgaWYgKGFyZ3MubG9nRmlsZSkge1xuICAgIHRyeSB7XG4gICAgICAvLyBpZiB3ZSBkb24ndCBkZWxldGUgdGhlIGxvZyBmaWxlLCB3aW5zdG9uIHdpbGwgYWx3YXlzIGFwcGVuZCBhbmQgaXQgd2lsbCBncm93IGluZmluaXRlbHkgbGFyZ2U7XG4gICAgICAvLyB3aW5zdG9uIGFsbG93cyBmb3IgbGltaXRpbmcgbG9nIGZpbGUgc2l6ZSwgYnV0IGFzIG9mIDkuMi4xNCB0aGVyZSdzIGEgc2VyaW91cyBidWcgd2hlbiB1c2luZ1xuICAgICAgLy8gbWF4RmlsZXMgYW5kIG1heFNpemUgdG9nZXRoZXIuIGh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi93aW5zdG9uL2lzc3Vlcy8zOTdcbiAgICAgIGlmIChhd2FpdCBmcy5leGlzdHMoYXJncy5sb2dGaWxlKSkge1xuICAgICAgICBhd2FpdCBmcy51bmxpbmsoYXJncy5sb2dGaWxlKTtcbiAgICAgIH1cblxuICAgICAgdHJhbnNwb3J0cy5wdXNoKGNyZWF0ZUZpbGVUcmFuc3BvcnQoYXJncywgZmlsZUxvZ0xldmVsKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKGBUcmllZCB0byBhdHRhY2ggbG9nZ2luZyB0byBmaWxlICcke2FyZ3MubG9nRmlsZX0nIGJ1dCBhbiBlcnJvciBgICtcbiAgICAgICAgICAgICAgICAgIGBvY2N1cnJlZDogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGFyZ3Mud2ViaG9vaykge1xuICAgIHRyeSB7XG4gICAgICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlSHR0cFRyYW5zcG9ydChhcmdzLCBmaWxlTG9nTGV2ZWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coYFRyaWVkIHRvIGF0dGFjaCBsb2dnaW5nIHRvIEh0dHAgYXQgJHthcmdzLndlYmhvb2t9IGJ1dCBgICtcbiAgICAgICAgICAgICAgICAgIGBhbiBlcnJvciBvY2N1cnJlZDogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRyYW5zcG9ydHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGluaXQgKGFyZ3MpIHtcbiAgLy8gc2V0IGRlIGZhY3RvIHBhcmFtIHBhc3NlZCB0byB0aW1lc3RhbXAgZnVuY3Rpb25cbiAgdXNlTG9jYWxUaW1lWm9uZSA9IGFyZ3MubG9jYWxUaW1lem9uZTtcblxuICAvLyBjbGVhbiB1cCBpbiBjYXNlIHdlIGhhdmUgaW5pdGlhdGVkIGJlZm9yZSBzaW5jZSBucG1sb2cgaXMgYSBnbG9iYWwgb2JqZWN0XG4gIGNsZWFyKCk7XG5cbiAgbG9nID0gY3JlYXRlTG9nZ2VyKHtcbiAgICB0cmFuc3BvcnRzOiBhd2FpdCBjcmVhdGVUcmFuc3BvcnRzKGFyZ3MpLFxuICAgIGxldmVscyxcbiAgfSk7XG5cbiAgLy8gQ2FwdHVyZSBsb2dzIGVtaXR0ZWQgdmlhIG5wbWxvZyBhbmQgcGFzcyB0aGVtIHRocm91Z2ggd2luc3RvblxuICBucG1sb2cub24oJ2xvZycsIChsb2dPYmopID0+IHtcbiAgICBjb25zdCB3aW5zdG9uTGV2ZWwgPSBucG1Ub1dpbnN0b25MZXZlbHNbbG9nT2JqLmxldmVsXSB8fCAnaW5mbyc7XG4gICAgbGV0IG1zZyA9IGxvZ09iai5tZXNzYWdlO1xuICAgIGlmIChsb2dPYmoucHJlZml4KSB7XG4gICAgICBjb25zdCBwcmVmaXggPSBgWyR7bG9nT2JqLnByZWZpeH1dYDtcbiAgICAgIG1zZyA9IGAke2FyZ3MubG9nTm9Db2xvcnMgPyBwcmVmaXggOiBwcmVmaXgubWFnZW50YX0gJHttc2d9YDtcbiAgICB9XG4gICAgbG9nW3dpbnN0b25MZXZlbF0obXNnKTtcbiAgICBpZiAoYXJncy5sb2dIYW5kbGVyICYmIF8uaXNGdW5jdGlvbihhcmdzLmxvZ0hhbmRsZXIpKSB7XG4gICAgICBhcmdzLmxvZ0hhbmRsZXIobG9nT2JqLmxldmVsLCBtc2cpO1xuICAgIH1cblxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xlYXIgKCkge1xuICBpZiAobG9nKSB7XG4gICAgZm9yIChsZXQgdHJhbnNwb3J0IG9mIF8ua2V5cyhsb2cudHJhbnNwb3J0cykpIHtcbiAgICAgIGxvZy5yZW1vdmUodHJhbnNwb3J0KTtcbiAgICB9XG4gIH1cbiAgbnBtbG9nLnJlbW92ZUFsbExpc3RlbmVycygnbG9nJyk7XG59XG5cblxuZXhwb3J0IHsgaW5pdCwgY2xlYXIgfTtcbmV4cG9ydCBkZWZhdWx0IGluaXQ7XG4iXX0=
209
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2dzaW5rLmpzIl0sIm5hbWVzIjpbImxvZ2dlciIsInBhdGNoTG9nZ2VyIiwibnBtbG9nIiwiZ2xvYmFsIiwiX2dsb2JhbF9ucG1sb2ciLCJsZXZlbCIsImxldmVscyIsImRlYnVnIiwiaW5mbyIsIndhcm4iLCJlcnJvciIsImNvbG9ycyIsIm5wbVRvV2luc3RvbkxldmVscyIsInNpbGx5IiwidmVyYm9zZSIsImh0dHAiLCJsb2ciLCJ1c2VMb2NhbFRpbWVab25lIiwidGltZXN0YW1wRm9ybWF0IiwiZm9ybWF0IiwidGltZXN0YW1wIiwiZGF0ZSIsIkRhdGUiLCJ2YWx1ZU9mIiwiZ2V0VGltZXpvbmVPZmZzZXQiLCJ0b0lTT1N0cmluZyIsInJlcGxhY2UiLCJ0cmltIiwiY29sb3JpemVGb3JtYXQiLCJjb2xvcml6ZSIsInN0cmlwQ29sb3JGb3JtYXQiLCJzdHJpcENvbG9yIiwiY29kZSIsIm1lc3NhZ2UiLCJjcmVhdGVDb25zb2xlVHJhbnNwb3J0IiwiYXJncyIsImxvZ0x2bCIsInRyYW5zcG9ydHMiLCJDb25zb2xlIiwibmFtZSIsImhhbmRsZUV4Y2VwdGlvbnMiLCJleGl0T25FcnJvciIsImpzb24iLCJzdGRlcnJMZXZlbHMiLCJjb21iaW5lIiwiYWRqdXN0RGVidWciLCJsb2dOb0NvbG9ycyIsInByaW50ZiIsInByaW50SW5mbyIsImxvZ1RpbWVzdGFtcCIsImNyZWF0ZUZpbGVUcmFuc3BvcnQiLCJGaWxlIiwiZmlsZW5hbWUiLCJsb2dGaWxlIiwibWF4RmlsZXMiLCJjcmVhdGVIdHRwVHJhbnNwb3J0IiwiaG9zdCIsInBvcnQiLCJ3ZWJob29rIiwibWF0Y2giLCJob3N0QW5kUG9ydCIsInNwbGl0IiwicGFyc2VJbnQiLCJIdHRwIiwicGF0aCIsImNyZWF0ZVRyYW5zcG9ydHMiLCJjb25zb2xlTG9nTGV2ZWwiLCJmaWxlTG9nTGV2ZWwiLCJsb2dsZXZlbCIsImx2bFBhaXIiLCJwdXNoIiwiZnMiLCJleGlzdHMiLCJ1bmxpbmsiLCJlIiwiY29uc29sZSIsImluaXQiLCJsb2NhbFRpbWV6b25lIiwiY2xlYXIiLCJvbiIsImxvZ09iaiIsIndpbnN0b25MZXZlbCIsIm1zZyIsInByZWZpeCIsIm1hZ2VudGEiLCJsb2dIYW5kbGVyIiwiXyIsImlzRnVuY3Rpb24iLCJ0cmFuc3BvcnQiLCJrZXlzIiwicmVtb3ZlIiwicmVtb3ZlQWxsTGlzdGVuZXJzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUFBLGdCQUFPQyxXQUFQLENBQW1CQyxlQUFuQjs7QUFDQUMsTUFBTSxDQUFDQyxjQUFQLEdBQXdCRixlQUF4QjtBQUdBQSxnQkFBT0csS0FBUCxHQUFlLFFBQWY7QUFDQSxNQUFNQyxNQUFNLEdBQUc7QUFDYkMsRUFBQUEsS0FBSyxFQUFFLENBRE07QUFFYkMsRUFBQUEsSUFBSSxFQUFFLENBRk87QUFHYkMsRUFBQUEsSUFBSSxFQUFFLENBSE87QUFJYkMsRUFBQUEsS0FBSyxFQUFFO0FBSk0sQ0FBZjtBQU9BLE1BQU1DLE1BQU0sR0FBRztBQUNiSCxFQUFBQSxJQUFJLEVBQUUsTUFETztBQUViRCxFQUFBQSxLQUFLLEVBQUUsTUFGTTtBQUdiRSxFQUFBQSxJQUFJLEVBQUUsUUFITztBQUliQyxFQUFBQSxLQUFLLEVBQUU7QUFKTSxDQUFmO0FBT0EsTUFBTUUsa0JBQWtCLEdBQUc7QUFDekJDLEVBQUFBLEtBQUssRUFBRSxPQURrQjtBQUV6QkMsRUFBQUEsT0FBTyxFQUFFLE9BRmdCO0FBR3pCUCxFQUFBQSxLQUFLLEVBQUUsT0FIa0I7QUFJekJDLEVBQUFBLElBQUksRUFBRSxNQUptQjtBQUt6Qk8sRUFBQUEsSUFBSSxFQUFFLE1BTG1CO0FBTXpCTixFQUFBQSxJQUFJLEVBQUUsTUFObUI7QUFPekJDLEVBQUFBLEtBQUssRUFBRTtBQVBrQixDQUEzQjtBQVVBLElBQUlNLEdBQUcsR0FBRyxJQUFWO0FBQ0EsSUFBSUMsZ0JBQWdCLEdBQUcsS0FBdkI7O0FBR0EsTUFBTUMsZUFBZSxHQUFHQyxn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QyxNQUFuQixHQUE0QkEsTUFBTSxDQUFDQyxPQUFRLElBQUdGLEdBQUksRUFBM0Q7QUFDRDs7QUFDRGxFLElBQUFBLEdBQUcsQ0FBQ2lFLFlBQUQsQ0FBSCxDQUFrQkMsR0FBbEI7O0FBQ0EsUUFBSS9DLElBQUksQ0FBQ2tELFVBQUwsSUFBbUJDLGdCQUFFQyxVQUFGLENBQWFwRCxJQUFJLENBQUNrRCxVQUFsQixDQUF2QixFQUFzRDtBQUNwRGxELE1BQUFBLElBQUksQ0FBQ2tELFVBQUwsQ0FBZ0JMLE1BQU0sQ0FBQzNFLEtBQXZCLEVBQThCNkUsR0FBOUI7QUFDRDtBQUVGLEdBWkQ7QUFhRDs7QUFFRCxTQUFTSixLQUFULEdBQWtCO0FBQ2hCLE1BQUk5RCxHQUFKLEVBQVM7QUFDUCxTQUFLLElBQUl3RSxTQUFULElBQXNCRixnQkFBRUcsSUFBRixDQUFPekUsR0FBRyxDQUFDcUIsVUFBWCxDQUF0QixFQUE4QztBQUM1Q3JCLE1BQUFBLEdBQUcsQ0FBQzBFLE1BQUosQ0FBV0YsU0FBWDtBQUNEO0FBQ0Y7O0FBQ0R0RixrQkFBT3lGLGtCQUFQLENBQTBCLEtBQTFCO0FBQ0Q7O2VBSWNmLEkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbnBtbG9nIGZyb20gJ25wbWxvZyc7XG5pbXBvcnQgeyBjcmVhdGVMb2dnZXIsIGZvcm1hdCwgdHJhbnNwb3J0cyB9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHsgZnMsIGxvZ2dlciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8vIHNldCB1cCBkaXN0cmlidXRlZCBsb2dnaW5nIGJlZm9yZSBldmVyeXRoaW5nIGVsc2VcbmxvZ2dlci5wYXRjaExvZ2dlcihucG1sb2cpO1xuZ2xvYmFsLl9nbG9iYWxfbnBtbG9nID0gbnBtbG9nO1xuXG4vLyBucG1sb2cgaXMgdXNlZCBvbmx5IGZvciBlbWl0dGluZywgd2UgdXNlIHdpbnN0b24gZm9yIG91dHB1dFxubnBtbG9nLmxldmVsID0gJ3NpbGVudCc7XG5jb25zdCBsZXZlbHMgPSB7XG4gIGRlYnVnOiA0LFxuICBpbmZvOiAzLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMSxcbn07XG5cbmNvbnN0IGNvbG9ycyA9IHtcbiAgaW5mbzogJ2N5YW4nLFxuICBkZWJ1ZzogJ2dyZXknLFxuICB3YXJuOiAneWVsbG93JyxcbiAgZXJyb3I6ICdyZWQnLFxufTtcblxuY29uc3QgbnBtVG9XaW5zdG9uTGV2ZWxzID0ge1xuICBzaWxseTogJ2RlYnVnJyxcbiAgdmVyYm9zZTogJ2RlYnVnJyxcbiAgZGVidWc6ICdkZWJ1ZycsXG4gIGluZm86ICdpbmZvJyxcbiAgaHR0cDogJ2luZm8nLFxuICB3YXJuOiAnd2FybicsXG4gIGVycm9yOiAnZXJyb3InLFxufTtcblxubGV0IGxvZyA9IG51bGw7XG5sZXQgdXNlTG9jYWxUaW1lWm9uZSA9IGZhbHNlO1xuXG4vLyBhZGQgdGhlIHRpbWVzdGFtcCBpbiB0aGUgY29ycmVjdCBmb3JtYXQgdG8gdGhlIGxvZyBpbmZvIG9iamVjdFxuY29uc3QgdGltZXN0YW1wRm9ybWF0ID0gZm9ybWF0LnRpbWVzdGFtcCh7XG4gIGZvcm1hdCAoKSB7XG4gICAgbGV0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGlmICh1c2VMb2NhbFRpbWVab25lKSB7XG4gICAgICBkYXRlID0gbmV3IERhdGUoZGF0ZS52YWx1ZU9mKCkgLSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMCk7XG4gICAgfVxuICAgIC8vICcyMDEyLTExLTA0VDE0OjUxOjA2LjE1N1onIC0+ICcyMDEyLTExLTA0IDE0OjUxOjA2OjE1NydcbiAgICByZXR1cm4gZGF0ZS50b0lTT1N0cmluZygpXG4gICAgICAucmVwbGFjZSgvW1RaXS9nLCAnICcpXG4gICAgICAucmVwbGFjZSgvXFwuL2csICc6JylcbiAgICAgIC50cmltKCk7XG4gIH0sXG59KTtcblxuLy8gc2V0IHRoZSBjdXN0b20gY29sb3JzXG5jb25zdCBjb2xvcml6ZUZvcm1hdCA9IGZvcm1hdC5jb2xvcml6ZSh7XG4gIGNvbG9ycyxcbn0pO1xuXG4vLyBTdHJpcCB0aGUgY29sb3IgbWFya2luZyB3aXRoaW4gbWVzc2FnZXNcbmNvbnN0IHN0cmlwQ29sb3JGb3JtYXQgPSBmb3JtYXQoZnVuY3Rpb24gc3RyaXBDb2xvciAoaW5mbykge1xuICBjb25zdCBjb2RlID0gL1xcdTAwMWJcXFsoXFxkKyg7XFxkKykqKT9tL2c7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29udHJvbC1yZWdleFxuICBpbmZvLm1lc3NhZ2UgPSBpbmZvLm1lc3NhZ2UucmVwbGFjZShjb2RlLCAnJyk7XG4gIHJldHVybiBpbmZvO1xufSkoKTtcblxuZnVuY3Rpb24gY3JlYXRlQ29uc29sZVRyYW5zcG9ydCAoYXJncywgbG9nTHZsKSB7XG4gIHJldHVybiBuZXcgKHRyYW5zcG9ydHMuQ29uc29sZSkoe1xuICAgIC8vIGBuYW1lYCBpcyB1bnN1cHBvcnRlZCBwZXIgd2luc3RvbidzIHR5cGUgZGVjbGFyYXRpb25zXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIG5hbWU6ICdjb25zb2xlJyxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIHN0ZGVyckxldmVsczogWydlcnJvciddLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBmb3JtYXQoZnVuY3Rpb24gYWRqdXN0RGVidWcgKGluZm8pIHtcbiAgICAgICAgLy8gcHJlcGVuZCBkZWJ1ZyBtYXJrZXIsIGFuZCBzaGlmdCB0byBgaW5mb2AgbG9nIGxldmVsXG4gICAgICAgIGlmIChpbmZvLmxldmVsID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgaW5mby5sZXZlbCA9ICdpbmZvJztcbiAgICAgICAgICBpbmZvLm1lc3NhZ2UgPSBgW2RlYnVnXSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSkoKSxcbiAgICAgIHRpbWVzdGFtcEZvcm1hdCxcbiAgICAgIGFyZ3MubG9nTm9Db2xvcnMgPyBzdHJpcENvbG9yRm9ybWF0IDogY29sb3JpemVGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyAoaW5mbykge1xuICAgICAgICByZXR1cm4gYCR7YXJncy5sb2dUaW1lc3RhbXAgPyBgJHtpbmZvLnRpbWVzdGFtcH0gLSBgIDogJyd9JHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVUcmFuc3BvcnQgKGFyZ3MsIGxvZ0x2bCkge1xuICByZXR1cm4gbmV3ICh0cmFuc3BvcnRzLkZpbGUpKHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgbmFtZTogJ2ZpbGUnLFxuICAgIGZpbGVuYW1lOiBhcmdzLmxvZ0ZpbGUsXG4gICAgbWF4RmlsZXM6IDEsXG4gICAgaGFuZGxlRXhjZXB0aW9uczogdHJ1ZSxcbiAgICBleGl0T25FcnJvcjogZmFsc2UsXG4gICAganNvbjogZmFsc2UsXG4gICAgbGV2ZWw6IGxvZ0x2bCxcbiAgICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKFxuICAgICAgc3RyaXBDb2xvckZvcm1hdCxcbiAgICAgIHRpbWVzdGFtcEZvcm1hdCxcbiAgICAgIGZvcm1hdC5wcmludGYoZnVuY3Rpb24gcHJpbnRJbmZvIChpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHtpbmZvLnRpbWVzdGFtcH0gJHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKVxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSHR0cFRyYW5zcG9ydCAoYXJncywgbG9nTHZsKSB7XG4gIGxldCBob3N0ID0gJzEyNy4wLjAuMSc7XG4gIGxldCBwb3J0ID0gOTAwMztcblxuICBpZiAoYXJncy53ZWJob29rLm1hdGNoKCc6JykpIHtcbiAgICBjb25zdCBob3N0QW5kUG9ydCA9IGFyZ3Mud2ViaG9vay5zcGxpdCgnOicpO1xuICAgIGhvc3QgPSBob3N0QW5kUG9ydFswXTtcbiAgICBwb3J0ID0gcGFyc2VJbnQoaG9zdEFuZFBvcnRbMV0sIDEwKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgKHRyYW5zcG9ydHMuSHR0cCkoe1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnaHR0cCcsXG4gICAgaG9zdCxcbiAgICBwb3J0LFxuICAgIHBhdGg6ICcvJyxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBzdHJpcENvbG9yRm9ybWF0LFxuICAgICAgZm9ybWF0LnByaW50ZihmdW5jdGlvbiBwcmludEluZm8gKGluZm8pIHtcbiAgICAgICAgcmV0dXJuIGAke2luZm8udGltZXN0YW1wfSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlVHJhbnNwb3J0cyAoYXJncykge1xuICBsZXQgdHJhbnNwb3J0cyA9IFtdO1xuICBsZXQgY29uc29sZUxvZ0xldmVsID0gbnVsbDtcbiAgbGV0IGZpbGVMb2dMZXZlbCA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubG9nbGV2ZWwgJiYgYXJncy5sb2dsZXZlbC5tYXRjaCgnOicpKSB7XG4gICAgLy8gLS1sb2ctbGV2ZWwgYXJnIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgZGlmZiBsb2dnaW5nIGxldmVscyBmb3IgY29uc29sZSBhbmQgZmlsZSwgc2VwYXJhdGVkIGJ5IGEgY29sb25cbiAgICBjb25zdCBsdmxQYWlyID0gYXJncy5sb2dsZXZlbC5zcGxpdCgnOicpO1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGx2bFBhaXJbMF0gfHwgY29uc29sZUxvZ0xldmVsO1xuICAgIGZpbGVMb2dMZXZlbCA9IGx2bFBhaXJbMV0gfHwgZmlsZUxvZ0xldmVsO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGZpbGVMb2dMZXZlbCA9IGFyZ3MubG9nbGV2ZWw7XG4gIH1cblxuICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlQ29uc29sZVRyYW5zcG9ydChhcmdzLCBjb25zb2xlTG9nTGV2ZWwpKTtcblxuICBpZiAoYXJncy5sb2dGaWxlKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGlmIHdlIGRvbid0IGRlbGV0ZSB0aGUgbG9nIGZpbGUsIHdpbnN0b24gd2lsbCBhbHdheXMgYXBwZW5kIGFuZCBpdCB3aWxsIGdyb3cgaW5maW5pdGVseSBsYXJnZTtcbiAgICAgIC8vIHdpbnN0b24gYWxsb3dzIGZvciBsaW1pdGluZyBsb2cgZmlsZSBzaXplLCBidXQgYXMgb2YgOS4yLjE0IHRoZXJlJ3MgYSBzZXJpb3VzIGJ1ZyB3aGVuIHVzaW5nXG4gICAgICAvLyBtYXhGaWxlcyBhbmQgbWF4U2l6ZSB0b2dldGhlci4gaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3dpbnN0b24vaXNzdWVzLzM5N1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhcmdzLmxvZ0ZpbGUpKSB7XG4gICAgICAgIGF3YWl0IGZzLnVubGluayhhcmdzLmxvZ0ZpbGUpO1xuICAgICAgfVxuXG4gICAgICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBmaWxlTG9nTGV2ZWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coYFRyaWVkIHRvIGF0dGFjaCBsb2dnaW5nIHRvIGZpbGUgJyR7YXJncy5sb2dGaWxlfScgYnV0IGFuIGVycm9yIGAgK1xuICAgICAgICAgICAgICAgICAgYG9jY3VycmVkOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBpZiAoYXJncy53ZWJob29rKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRyYW5zcG9ydHMucHVzaChjcmVhdGVIdHRwVHJhbnNwb3J0KGFyZ3MsIGZpbGVMb2dMZXZlbCkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZyhgVHJpZWQgdG8gYXR0YWNoIGxvZ2dpbmcgdG8gSHR0cCBhdCAke2FyZ3Mud2ViaG9va30gYnV0IGAgK1xuICAgICAgICAgICAgICAgICAgYGFuIGVycm9yIG9jY3VycmVkOiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJhbnNwb3J0cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdCAoYXJncykge1xuICAvLyBzZXQgZGUgZmFjdG8gcGFyYW0gcGFzc2VkIHRvIHRpbWVzdGFtcCBmdW5jdGlvblxuICB1c2VMb2NhbFRpbWVab25lID0gYXJncy5sb2NhbFRpbWV6b25lO1xuXG4gIC8vIGNsZWFuIHVwIGluIGNhc2Ugd2UgaGF2ZSBpbml0aWF0ZWQgYmVmb3JlIHNpbmNlIG5wbWxvZyBpcyBhIGdsb2JhbCBvYmplY3RcbiAgY2xlYXIoKTtcblxuICBsb2cgPSBjcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydHMoYXJncyksXG4gICAgbGV2ZWxzLFxuICB9KTtcblxuICAvLyBDYXB0dXJlIGxvZ3MgZW1pdHRlZCB2aWEgbnBtbG9nIGFuZCBwYXNzIHRoZW0gdGhyb3VnaCB3aW5zdG9uXG4gIG5wbWxvZy5vbignbG9nJywgKGxvZ09iaikgPT4ge1xuICAgIGNvbnN0IHdpbnN0b25MZXZlbCA9IG5wbVRvV2luc3RvbkxldmVsc1tsb2dPYmoubGV2ZWxdIHx8ICdpbmZvJztcbiAgICBsZXQgbXNnID0gbG9nT2JqLm1lc3NhZ2U7XG4gICAgaWYgKGxvZ09iai5wcmVmaXgpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGBbJHtsb2dPYmoucHJlZml4fV1gO1xuICAgICAgbXNnID0gYCR7YXJncy5sb2dOb0NvbG9ycyA/IHByZWZpeCA6IHByZWZpeC5tYWdlbnRhfSAke21zZ31gO1xuICAgIH1cbiAgICBsb2dbd2luc3RvbkxldmVsXShtc2cpO1xuICAgIGlmIChhcmdzLmxvZ0hhbmRsZXIgJiYgXy5pc0Z1bmN0aW9uKGFyZ3MubG9nSGFuZGxlcikpIHtcbiAgICAgIGFyZ3MubG9nSGFuZGxlcihsb2dPYmoubGV2ZWwsIG1zZyk7XG4gICAgfVxuXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjbGVhciAoKSB7XG4gIGlmIChsb2cpIHtcbiAgICBmb3IgKGxldCB0cmFuc3BvcnQgb2YgXy5rZXlzKGxvZy50cmFuc3BvcnRzKSkge1xuICAgICAgbG9nLnJlbW92ZSh0cmFuc3BvcnQpO1xuICAgIH1cbiAgfVxuICBucG1sb2cucmVtb3ZlQWxsTGlzdGVuZXJzKCdsb2cnKTtcbn1cblxuXG5leHBvcnQgeyBpbml0LCBjbGVhciB9O1xuZXhwb3J0IGRlZmF1bHQgaW5pdDtcbiJdfQ==
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env node
2
+ export { readConfigFile } from "./config-file";
3
+ export type ParsedArgs = import('../types/cli').ParsedArgs;
4
+ export type PartialArgs = import('../types/cli').PartialArgs;
5
+ export type DriverType = import('../types').DriverType;
6
+ export type PluginType = import('../types').PluginType;
7
+ export type DriverClass = import('../types/extension').DriverClass;
8
+ export type PluginClass = import('../types/extension').PluginClass;
9
+ /**
10
+ * Literally an empty object
11
+ */
12
+ export type ExtCommandInitResult = {};
13
+ export type ServerInitData = {
14
+ /**
15
+ * - The Appium driver
16
+ */
17
+ appiumDriver: AppiumDriver;
18
+ /**
19
+ * - The parsed arguments
20
+ */
21
+ parsedArgs: ParsedArgs;
22
+ };
23
+ export type ServerInitResult = ServerInitData & import('./extension').ExtensionConfigs;
24
+ /**
25
+ * Initializes Appium's config. Starts server if appropriate and resolves the
26
+ * server instance if so; otherwise resolves w/ `undefined`.
27
+ * @param {PartialArgs} [args] - Arguments from CLI or otherwise
28
+ * @returns {Promise<import('http').Server|undefined>}
29
+ */
30
+ export function main(args?: import("../types").PartialArgs | undefined): Promise<import('http').Server | undefined>;
31
+ /**
32
+ * Initializes Appium, but does not start the server.
33
+ *
34
+ * Use this to get at the configuration schema.
35
+ *
36
+ * If `args` contains a non-empty `subcommand` which is not `server`, this function will return an empty object.
37
+ *
38
+ * @param {PartialArgs} [args] - Partial args (progammatic usage only)
39
+ * @returns {Promise<ServerInitResult | ExtCommandInitResult>}
40
+ * @example
41
+ * import {init, getSchema} from 'appium';
42
+ * const options = {}; // config object
43
+ * await init(options);
44
+ * const schema = getSchema(); // entire config schema including plugins and drivers
45
+ */
46
+ export function init(args?: import("../types").PartialArgs | undefined): Promise<ServerInitResult | ExtCommandInitResult>;
47
+ export const resolveAppiumHome: ((cwd?: string | undefined) => Promise<string>) & _.MemoizedFunction;
48
+ import { AppiumDriver } from "./appium";
49
+ import _ from "lodash";
50
+ export { finalizeSchema, getSchema, validate } from "./schema/schema";
51
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../lib/main.js"],"names":[],"mappings":";;yBAqVa,OAAO,cAAc,EAAE,UAAU;0BAIjC,OAAO,cAAc,EAAE,WAAW;yBAClC,OAAO,UAAU,EAAE,UAAU;yBAC7B,OAAO,UAAU,EAAE,UAAU;0BAC7B,OAAO,oBAAoB,EAAE,WAAW;0BACxC,OAAO,oBAAoB,EAAE,WAAW;;;;mCAKvC,EAAE;;;;;kBAKF,YAAY;;;;gBACZ,UAAU;;+BAIX,cAAc,GAAG,OAAO,aAAa,EAAE,gBAAgB;AA7HpE;;;;;GAKG;AACH,yEAFa,QAAQ,OAAO,MAAM,EAAE,MAAM,GAAC,SAAS,CAAC,CAmFpD;AArMD;;;;;;;;;;;;;;GAcG;AACH,yEAPa,QAAQ,gBAAgB,GAAG,oBAAoB,CAAC,CAoG5D"}
package/build/lib/main.js CHANGED
@@ -331,4 +331,4 @@ async function main(args) {
331
331
  if (require.main === module) {
332
332
  (0, _asyncbox.asyncify)(main);
333
333
  }
334
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9tYWluLmpzIl0sIm5hbWVzIjpbInJlc29sdmVBcHBpdW1Ib21lIiwiZW52IiwicHJlZmxpZ2h0Q2hlY2tzIiwiYXJncyIsInRocm93SW5zdGVhZE9mRXhpdCIsImxvbmdTdGFja3RyYWNlIiwicmVxdWlyZSIsImFzeW5jX3RyYWNlX2xpbWl0Iiwic2hvd0J1aWxkSW5mbyIsInByb2Nlc3MiLCJleGl0IiwidG1wRGlyIiwiZXJyIiwibG9nZ2VyIiwiZXJyb3IiLCJtZXNzYWdlIiwicmVkIiwibG9nTm9uRGVmYXVsdEFyZ3NXYXJuaW5nIiwiaW5mbyIsImxvZ0RlZmF1bHRDYXBhYmlsaXRpZXNXYXJuaW5nIiwiY2FwcyIsImxvZ1N0YXJ0dXBJbmZvIiwid2VsY29tZSIsIkFQUElVTV9WRVIiLCJhcHBpdW1SZXYiLCJzaG93QXJncyIsIl8iLCJzaXplIiwiaXNFbXB0eSIsImRlZmF1bHRDYXBhYmlsaXRpZXMiLCJsb2dTZXJ2ZXJQb3J0IiwiYWRkcmVzcyIsInBvcnQiLCJsb2dNZXNzYWdlIiwiZ2V0U2VydmVyVXBkYXRlcnMiLCJkcml2ZXJDbGFzc2VzIiwicGx1Z2luQ2xhc3NlcyIsImNvbXBhY3QiLCJtYXAiLCJnZXRFeHRyYU1ldGhvZE1hcCIsInJlZHVjZSIsImtsYXNzIiwibmV3TWV0aG9kTWFwIiwiaW5pdCIsImFwcGl1bUhvbWUiLCJkcml2ZXJDb25maWciLCJwbHVnaW5Db25maWciLCJwYXJzZXIiLCJwcmVDb25maWdQYXJzZWRBcmdzIiwicGFyc2VkQXJncyIsImRlZmF1bHRzIiwic3ViY29tbWFuZCIsIlNFUlZFUl9TVUJDT01NQU5EIiwicGFyc2VBcmdzIiwiY29uZmlnUmVzdWx0IiwiY29uZmlnRmlsZSIsImVycm9ycyIsIkVycm9yIiwiZmlsZXBhdGgiLCJyZWFzb24iLCJkZWZhdWx0c0RlZXAiLCJjb25maWciLCJzZXJ2ZXIiLCJzaG93Q29uZmlnIiwiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsImxvZ0ZpbHRlcnMiLCJpc3N1ZXMiLCJydWxlcyIsImxvZ0ZhY3RvcnkiLCJsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzIiwiSlNPTiIsInN0cmluZ2lmeSIsIndhcm4iLCJ1dGlsIiwicGx1cmFsaXplIiwibGVuZ3RoIiwiYXBwaXVtRHJpdmVyIiwiQXBwaXVtRHJpdmVyIiwibWFpbiIsInVzZVBsdWdpbnMiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJ1c2VEcml2ZXJzIiwic2VydmVyVXBkYXRlcnMiLCJleHRyYU1ldGhvZE1hcCIsInNlcnZlck9wdHMiLCJob3N0bmFtZSIsImFsbG93Q29ycyIsImJhc2VQYXRoIiwia2VlcEFsaXZlVGltZW91dCIsImRlYnVnIiwic3RhY2siLCJub2RlY29uZmlnIiwiY2xvc2UiLCJzaWduYWwiLCJvbmNlIiwib25TaWduYWwiLCJkZWxldGVBbGxTZXNzaW9ucyIsImZvcmNlIiwiZSIsInByaW50IiwicCIsInBsdWdpbk5hbWUiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUtBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU07QUFBQ0EsRUFBQUE7QUFBRCxJQUFzQkMsWUFBNUI7OztBQU9BLGVBQWVDLGVBQWYsQ0FBZ0NDLElBQWhDLEVBQXNDQyxrQkFBa0IsR0FBRyxLQUEzRCxFQUFrRTtBQUNoRSxNQUFJO0FBQ0Y7O0FBQ0EsUUFBSUQsSUFBSSxDQUFDRSxjQUFULEVBQXlCO0FBQ3ZCQyxNQUFBQSxPQUFPLENBQUMsVUFBRCxDQUFQLENBQW9CQyxpQkFBcEIsR0FBd0MsQ0FBQyxDQUF6QztBQUNEOztBQUNELFFBQUlKLElBQUksQ0FBQ0ssYUFBVCxFQUF3QjtBQUN0QixZQUFNLDRCQUFOO0FBQ0FDLE1BQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENB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bi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgeyBpbml0IGFzIGxvZ3NpbmtJbml0IH0gZnJvbSAnLi9sb2dzaW5rJzsgLy8gdGhpcyBpbXBvcnQgbmVlZHMgdG8gY29tZSBmaXJzdCBzaW5jZSBpdCBzZXRzIHVwIGdsb2JhbCBucG1sb2dcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInOyAvLyBsb2dnZXIgbmVlZHMgdG8gcmVtYWluIHNlY29uZFxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIsIHNlcnZlciBhcyBiYXNlU2VydmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBsb2dnZXIgYXMgbG9nRmFjdG9yeSwgdXRpbCwgZW52IH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGFzeW5jaWZ5IH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEFwcGl1bURyaXZlciB9IGZyb20gJy4vYXBwaXVtJztcbmltcG9ydCB7IHJ1bkV4dGVuc2lvbkNvbW1hbmQgfSBmcm9tICcuL2NsaS9leHRlbnNpb24nO1xuaW1wb3J0IHsgZ2V0UGFyc2VyIH0gZnJvbSAnLi9jbGkvcGFyc2VyJztcbmltcG9ydCB7IEFQUElVTV9WRVIsIGNoZWNrTm9kZU9rLCBnZXRHaXRSZXYsIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzLCBzaG93Q29uZmlnLCBzaG93QnVpbGRJbmZvLCB2YWxpZGF0ZVRtcERpciwgd2Fybk5vZGVEZXByZWNhdGlvbnMgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnRmlsZSB9IGZyb20gJy4vY29uZmlnLWZpbGUnO1xuaW1wb3J0IHsgbG9hZEV4dGVuc2lvbnMsIGdldEFjdGl2ZVBsdWdpbnMsIGdldEFjdGl2ZURyaXZlcnMgfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUsIFNFUlZFUl9TVUJDT01NQU5EIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHJlZ2lzdGVyTm9kZSBmcm9tICcuL2dyaWQtcmVnaXN0ZXInO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdHNGb3JTY2hlbWEsIHZhbGlkYXRlIH0gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3Qge3Jlc29sdmVBcHBpdW1Ib21lfSA9IGVudjtcblxuLyoqXG4gKlxuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBhcmdzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt0aHJvd0luc3RlYWRPZkV4aXRdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZWZsaWdodENoZWNrcyAoYXJncywgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2UpIHtcbiAgdHJ5IHtcbiAgICBjaGVja05vZGVPaygpO1xuICAgIGlmIChhcmdzLmxvbmdTdGFja3RyYWNlKSB7XG4gICAgICByZXF1aXJlKCdsb25nam9obicpLmFzeW5jX3RyYWNlX2xpbWl0ID0gLTE7XG4gICAgfVxuICAgIGlmIChhcmdzLnNob3dCdWlsZEluZm8pIHtcbiAgICAgIGF3YWl0IHNob3dCdWlsZEluZm8oKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gICAgd2Fybk5vZGVEZXByZWNhdGlvbnMoKTtcblxuICAgIHZhbGlkYXRlKGFyZ3MpO1xuXG4gICAgaWYgKGFyZ3MudG1wRGlyKSB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZVRtcERpcihhcmdzLnRtcERpcik7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyLm1lc3NhZ2UucmVkKTtcbiAgICBpZiAodGhyb3dJbnN0ZWFkT2ZFeGl0KSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBhcmdzXG4gKi9cbmZ1bmN0aW9uIGxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyAoYXJncykge1xuICBsb2dnZXIuaW5mbygnTm9uLWRlZmF1bHQgc2VydmVyIGFyZ3M6Jyk7XG4gIGluc3BlY3QoYXJncyk7XG59XG5cbmZ1bmN0aW9uIGxvZ0RlZmF1bHRDYXBhYmlsaXRpZXNXYXJuaW5nIChjYXBzKSB7XG4gIGxvZ2dlci5pbmZvKCdEZWZhdWx0IGNhcGFiaWxpdGllcywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byBlYWNoIHJlcXVlc3QgJyArXG4gICAgICAgICAgICAgICd1bmxlc3Mgb3ZlcnJpZGRlbiBieSBkZXNpcmVkIGNhcGFiaWxpdGllczonKTtcbiAgaW5zcGVjdChjYXBzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9nU3RhcnR1cEluZm8gKGFyZ3MpIHtcbiAgbGV0IHdlbGNvbWUgPSBgV2VsY29tZSB0byBBcHBpdW0gdiR7QVBQSVVNX1ZFUn1gO1xuICBsZXQgYXBwaXVtUmV2ID0gYXdhaXQgZ2V0R2l0UmV2KCk7XG4gIGlmIChhcHBpdW1SZXYpIHtcbiAgICB3ZWxjb21lICs9IGAgKFJFViAke2FwcGl1bVJldn0pYDtcbiAgfVxuICBsb2dnZXIuaW5mbyh3ZWxjb21lKTtcblxuICBsZXQgc2hvd0FyZ3MgPSBnZXROb25EZWZhdWx0U2VydmVyQXJncyhhcmdzKTtcbiAgaWYgKF8uc2l6ZShzaG93QXJncykpIHtcbiAgICBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoc2hvd0FyZ3MpO1xuICB9XG4gIGlmICghXy5pc0VtcHR5KGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcykpIHtcbiAgICBsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyhhcmdzLmRlZmF1bHRDYXBhYmlsaXRpZXMpO1xuICB9XG4gIC8vIFRPRE86IGJyaW5nIGJhY2sgbG9nbGV2ZWwgcmVwb3J0aW5nIGJlbG93IG9uY2UgbG9nZ2VyIGlzIGZsdXNoZWQgb3V0XG4gIC8vIGxvZ2dlci5pbmZvKCdDb25zb2xlIExvZ0xldmVsOiAnICsgbG9nZ2VyLnRyYW5zcG9ydHMuY29uc29sZS5sZXZlbCk7XG4gIC8vIGlmIChsb2dnZXIudHJhbnNwb3J0cy5maWxlKSB7XG4gIC8vICAgbG9nZ2VyLmluZm8oJ0ZpbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5maWxlLmxldmVsKTtcbiAgLy8gfVxufVxuXG4vKipcbiAqIExvZ3MgdGhlIGFkZHJlc3MgYW5kIHBvcnQgdGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcgb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQWRkcmVzc1xuICogQHBhcmFtIHtudW1iZXJ9IHBvcnQgLSBQb3J0XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gbG9nU2VydmVyUG9ydCAoYWRkcmVzcywgcG9ydCkge1xuICBsZXQgbG9nTWVzc2FnZSA9IGBBcHBpdW0gUkVTVCBodHRwIGludGVyZmFjZSBsaXN0ZW5lciBzdGFydGVkIG9uIGAgK1xuICAgICAgICAgICAgICAgICAgIGAke2FkZHJlc3N9OiR7cG9ydH1gO1xuICBsb2dnZXIuaW5mbyhsb2dNZXNzYWdlKTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgbGlzdCBvZiBgdXBkYXRlU2VydmVyYCBmdW5jdGlvbnMgZnJvbSBhbGwgZXh0ZW5zaW9uc1xuICogQHBhcmFtIHtEcml2ZXJDbGFzc1tdfSBkcml2ZXJDbGFzc2VzXG4gKiBAcGFyYW0ge1BsdWdpbkNsYXNzW119IHBsdWdpbkNsYXNzZXNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4vZXh0ZW5zaW9uL21hbmlmZXN0JykuVXBkYXRlU2VydmVyRm5bXX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2VydmVyVXBkYXRlcnMgKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChfLm1hcChbLi4uZHJpdmVyQ2xhc3NlcywgLi4ucGx1Z2luQ2xhc3Nlc10sICd1cGRhdGVTZXJ2ZXInKSk7XG59XG5cbi8qKlxuICogTWFrZXMgYSBiaWcgYE1ldGhvZE1hcGAgZnJvbSBhbGwgdGhlIGxpdHRsZSBgTWV0aG9kTWFwYHMgaW4gdGhlIGV4dGVuc2lvbnNcbiAqIEBwYXJhbSB7RHJpdmVyQ2xhc3NbXX0gZHJpdmVyQ2xhc3Nlc1xuICogQHBhcmFtIHtQbHVnaW5DbGFzc1tdfSBwbHVnaW5DbGFzc2VzXG4gKiBAcmV0dXJucyB7aW1wb3J0KCdAYXBwaXVtL2Jhc2UtZHJpdmVyJykuTWV0aG9kTWFwfVxuICovXG5mdW5jdGlvbiBnZXRFeHRyYU1ldGhvZE1hcCAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gWy4uLmRyaXZlckNsYXNzZXMsIC4uLnBsdWdpbkNsYXNzZXNdLnJlZHVjZShcbiAgICAobWFwLCBrbGFzcykgPT4gKHsuLi5tYXAsIC4uLmtsYXNzLm5ld01ldGhvZE1hcH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgQXBwaXVtLCBidXQgZG9lcyBub3Qgc3RhcnQgdGhlIHNlcnZlci5cbiAqXG4gKiBVc2UgdGhpcyB0byBnZXQgYXQgdGhlIGNvbmZpZ3VyYXRpb24gc2NoZW1hLlxuICpcbiAqIElmIGBhcmdzYCBjb250YWlucyBhIG5vbi1lbXB0eSBgc3ViY29tbWFuZGAgd2hpY2ggaXMgbm90IGBzZXJ2ZXJgLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGVtcHR5IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge1BhcnRpYWxBcmdzfSBbYXJnc10gLSBQYXJ0aWFsIGFyZ3MgKHByb2dhbW1hdGljIHVzYWdlIG9ubHkpXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTZXJ2ZXJJbml0UmVzdWx0IHwgRXh0Q29tbWFuZEluaXRSZXN1bHQ+fVxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7aW5pdCwgZ2V0U2NoZW1hfSBmcm9tICdhcHBpdW0nO1xuICogY29uc3Qgb3B0aW9ucyA9IHt9OyAvLyBjb25maWcgb2JqZWN0XG4gKiBhd2FpdCBpbml0KG9wdGlvbnMpO1xuICogY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKCk7IC8vIGVudGlyZSBjb25maWcgc2NoZW1hIGluY2x1ZGluZyBwbHVnaW5zIGFuZCBkcml2ZXJzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXQgKGFyZ3MpIHtcbiAgY29uc3QgYXBwaXVtSG9tZSA9IGFyZ3M/LmFwcGl1bUhvbWUgPz8gYXdhaXQgcmVzb2x2ZUFwcGl1bUhvbWUoKTtcblxuICBjb25zdCB7ZHJpdmVyQ29uZmlnLCBwbHVnaW5Db25maWd9ID0gYXdhaXQgbG9hZEV4dGVuc2lvbnMoYXBwaXVtSG9tZSk7XG5cbiAgY29uc3QgcGFyc2VyID0gZ2V0UGFyc2VyKCk7XG4gIGxldCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZTtcbiAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICBsZXQgcHJlQ29uZmlnUGFyc2VkQXJncztcbiAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICBsZXQgcGFyc2VkQXJncztcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBkZWZpbml0aW9uIChpbnN0ZWFkIG9mIGRlY2xhcmF0aW9uKSBiZWNhdXNlIFRTIGNhbid0IGZpZ3VyZSBvdXRcbiAgICogdGhlIHZhbHVlIHdpbGwgYmUgZGVmaW5lZCB3aGVuIGl0J3MgdXNlZC5cbiAgICogQHR5cGUge1JldHVyblR5cGU8Z2V0RGVmYXVsdHNGb3JTY2hlbWE+fVxuICAgKi9cbiAgbGV0IGRlZmF1bHRzID0ge307XG4gIGlmIChhcmdzKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIGNvbnRhaW5pbmcgcGFja2FnZSBpbnN0ZWFkIG9mIHJ1bm5pbmcgYXMgYSBDTEkgcHJvY2VzcyxcbiAgICAvLyB0aGF0IHBhY2thZ2UgbWlnaHQgbm90IGFwcHJlY2lhdGUgdXMgY2FsbGluZyAncHJvY2Vzcy5leGl0JyB3aWxseS1cbiAgICAvLyBuaWxseSwgc28gZ2l2ZSBpdCB0aGUgb3B0aW9uIHRvIGhhdmUgdXMgdGhyb3cgaW5zdGVhZCBvZiBleGl0XG4gICAgaWYgKGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0KSB7XG4gICAgICB0aHJvd0luc3RlYWRPZkV4aXQgPSB0cnVlO1xuICAgICAgLy8gYnV0IHJlbW92ZSBpdCBzaW5jZSBpdCdzIG5vdCBhIHJlYWwgc2VydmVyIGFyZyBwZXIgc2VcbiAgICAgIGRlbGV0ZSBhcmdzLnRocm93SW5zdGVhZE9mRXhpdDtcbiAgICB9XG4gICAgcHJlQ29uZmlnUGFyc2VkQXJncyA9IC8qKiBAdHlwZSB7UGFyc2VkQXJnc30gKi8oey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSBwYXJzZSBmcm9tIENMSVxuICAgIHByZUNvbmZpZ1BhcnNlZEFyZ3MgPSBwYXJzZXIucGFyc2VBcmdzKCk7XG4gIH1cblxuICBjb25zdCBjb25maWdSZXN1bHQgPSBhd2FpdCByZWFkQ29uZmlnRmlsZShwcmVDb25maWdQYXJzZWRBcmdzLmNvbmZpZ0ZpbGUpO1xuXG4gIGlmICghXy5pc0VtcHR5KGNvbmZpZ1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcnMgaW4gY29uZmlnIGZpbGUgJHtjb25maWdSZXN1bHQuZmlsZXBhdGh9OlxcbiAke2NvbmZpZ1Jlc3VsdC5yZWFzb24gPz8gY29uZmlnUmVzdWx0LmVycm9yc31gKTtcbiAgfVxuXG4gIC8vIG1lcmdlIGNvbmZpZyBhbmQgYXBwbHkgZGVmYXVsdHMuXG4gIC8vIHRoZSBvcmRlciBvZiBwcmVjZW5kZWNlIGlzOlxuICAvLyAxLiBjb21tYW5kIGxpbmUgYXJnc1xuICAvLyAyLiBjb25maWcgZmlsZVxuICAvLyAzLiBkZWZhdWx0cyBmcm9tIGNvbmZpZyBmaWxlLlxuICBpZiAocHJlQ29uZmlnUGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBTRVJWRVJfU1VCQ09NTUFORCkge1xuICAgIGRlZmF1bHRzID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEoZmFsc2UpO1xuXG4gICAgcGFyc2VkQXJncyA9IF8uZGVmYXVsdHNEZWVwKFxuICAgICAgcHJlQ29uZmlnUGFyc2VkQXJncyxcbiAgICAgIGNvbmZpZ1Jlc3VsdC5jb25maWc/LnNlcnZlcixcbiAgICAgIGRlZmF1bHRzXG4gICAgKTtcblxuICAgIGlmIChwcmVDb25maWdQYXJzZWRBcmdzLnNob3dDb25maWcpIHtcbiAgICAgIHNob3dDb25maWcoZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocHJlQ29uZmlnUGFyc2VkQXJncyksIGNvbmZpZ1Jlc3VsdCwgZGVmYXVsdHMsIHBhcnNlZEFyZ3MpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHBhcnNlZEFyZ3MgPSBwcmVDb25maWdQYXJzZWRBcmdzO1xuICB9XG5cbiAgYXdhaXQgbG9nc2lua0luaXQocGFyc2VkQXJncyk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCB0aGUgJ2RyaXZlcicgQ0xJLCBkb24ndCBydW4gdGhlIG5vcm1hbCBzZXJ2ZXIsXG4gIC8vIGJ1dCBpbnN0ZWFkIHBhc3MgY29udHJvbCB0byB0aGUgZHJpdmVyIENMSVxuICBpZiAocGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBEUklWRVJfVFlQRSkge1xuICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQocGFyc2VkQXJncywgZHJpdmVyQ29uZmlnKTtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgaWYgKHBhcnNlZEFyZ3Muc3ViY29tbWFuZCA9PT0gUExVR0lOX1RZUEUpIHtcbiAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKHBhcnNlZEFyZ3MsIHBsdWdpbkNvbmZpZyk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaWYgKHBhcnNlZEFyZ3MubG9nRmlsdGVycykge1xuICAgIGNvbnN0IHtpc3N1ZXMsIHJ1bGVzfSA9IGF3YWl0IGxvZ0ZhY3RvcnkubG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyhwYXJzZWRBcmdzLmxvZ0ZpbHRlcnMpO1xuICAgIGlmICghXy5pc0VtcHR5KGlzc3VlcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGxvZyBmaWx0ZXJpbmcgcnVsZXMgY29uZmlnICcke3BhcnNlZEFyZ3MubG9nRmlsdGVyc30nIGhhcyBpc3N1ZXM6IGAgK1xuICAgICAgICBKU09OLnN0cmluZ2lmeShpc3N1ZXMsIG51bGwsIDIpKTtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eShydWxlcykpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBGb3VuZCBubyBsb2cgZmlsdGVyaW5nIHJ1bGVzIGluICcke3BhcnNlZEFyZ3MubG9nRmlsdGVyc30nLiBJcyB0aGF0IGV4cGVjdGVkP2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuaW5mbyhgTG9hZGVkICR7dXRpbC5wbHVyYWxpemUoJ2ZpbHRlcmluZyBydWxlJywgcnVsZXMubGVuZ3RoLCB0cnVlKX0gZnJvbSAnJHtwYXJzZWRBcmdzLmxvZ0ZpbHRlcnN9J2ApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFwcGl1bURyaXZlciA9IG5ldyBBcHBpdW1Ecml2ZXIocGFyc2VkQXJncyk7XG4gIC8vIHNldCB0aGUgY29uZmlnIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIG1hdGNoIGRyaXZlcnMgdG8gY2Fwc1xuICBhcHBpdW1Ecml2ZXIuZHJpdmVyQ29uZmlnID0gZHJpdmVyQ29uZmlnO1xuICBhd2FpdCBwcmVmbGlnaHRDaGVja3MocGFyc2VkQXJncywgdGhyb3dJbnN0ZWFkT2ZFeGl0KTtcblxuICByZXR1cm4gLyoqIEB0eXBlIHtTZXJ2ZXJJbml0UmVzdWx0fSAqLyh7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzLCBkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZ30pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIEFwcGl1bSdzIGNvbmZpZy4gIFN0YXJ0cyBzZXJ2ZXIgaWYgYXBwcm9wcmlhdGUgYW5kIHJlc29sdmVzIHRoZVxuICogc2VydmVyIGluc3RhbmNlIGlmIHNvOyBvdGhlcndpc2UgcmVzb2x2ZXMgdy8gYHVuZGVmaW5lZGAuXG4gKiBAcGFyYW0ge1BhcnRpYWxBcmdzfSBbYXJnc10gLSBBcmd1bWVudHMgZnJvbSBDTEkgb3Igb3RoZXJ3aXNlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoJ2h0dHAnKS5TZXJ2ZXJ8dW5kZWZpbmVkPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWFpbiAoYXJncykge1xuICBjb25zdCB7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzLCBwbHVnaW5Db25maWcsIGRyaXZlckNvbmZpZ30gPSAvKiogQHR5cGUge1NlcnZlckluaXRSZXN1bHR9ICovKGF3YWl0IGluaXQoYXJncykpO1xuXG4gIGlmICghYXBwaXVtRHJpdmVyIHx8ICFwYXJzZWRBcmdzIHx8ICFwbHVnaW5Db25maWcgfHwgIWRyaXZlckNvbmZpZykge1xuICAgIC8vIGlmIHRoaXMgYnJhbmNoIGlzIHRha2VuLCB3ZSd2ZSBydW4gYSBkaWZmZXJlbnQgc3ViY29tbWFuZCwgc28gdGhlcmUncyBub3RoaW5nXG4gICAgLy8gbGVmdCB0byBkbyBoZXJlLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpbkNsYXNzZXMgPSBnZXRBY3RpdmVQbHVnaW5zKHBsdWdpbkNvbmZpZywgcGFyc2VkQXJncy51c2VQbHVnaW5zKTtcbiAgLy8gc2V0IHRoZSBhY3RpdmUgcGx1Z2lucyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbSBmb3IgY29tbWFuZHNcbiAgYXBwaXVtRHJpdmVyLnBsdWdpbkNsYXNzZXMgPSBwbHVnaW5DbGFzc2VzO1xuXG4gIGF3YWl0IGxvZ1N0YXJ0dXBJbmZvKHBhcnNlZEFyZ3MpO1xuICBsZXQgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uID0gbWFrZVJvdXRlcihhcHBpdW1Ecml2ZXIpO1xuXG4gIGNvbnN0IGRyaXZlckNsYXNzZXMgPSBnZXRBY3RpdmVEcml2ZXJzKGRyaXZlckNvbmZpZywgcGFyc2VkQXJncy51c2VEcml2ZXJzKTtcbiAgY29uc3Qgc2VydmVyVXBkYXRlcnMgPSBnZXRTZXJ2ZXJVcGRhdGVycyhkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcbiAgY29uc3QgZXh0cmFNZXRob2RNYXAgPSBnZXRFeHRyYU1ldGhvZE1hcChkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcblxuICBjb25zdCBzZXJ2ZXJPcHRzID0ge1xuICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICBwb3J0OiBwYXJzZWRBcmdzLnBvcnQsXG4gICAgaG9zdG5hbWU6IHBhcnNlZEFyZ3MuYWRkcmVzcyxcbiAgICBhbGxvd0NvcnM6IHBhcnNlZEFyZ3MuYWxsb3dDb3JzLFxuICAgIGJhc2VQYXRoOiBwYXJzZWRBcmdzLmJhc2VQYXRoLFxuICAgIHNlcnZlclVwZGF0ZXJzLFxuICAgIGV4dHJhTWV0aG9kTWFwLFxuICB9O1xuICBpZiAocGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0KSB7XG4gICAgc2VydmVyT3B0cy5rZWVwQWxpdmVUaW1lb3V0ID0gcGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgfVxuICBsZXQgc2VydmVyO1xuICB0cnkge1xuICAgIHNlcnZlciA9IGF3YWl0IGJhc2VTZXJ2ZXIoc2VydmVyT3B0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgQ291bGQgbm90IGNvbmZpZ3VyZSBBcHBpdW0gc2VydmVyLiBJdCdzIHBvc3NpYmxlIHRoYXQgYSBkcml2ZXIgb3IgcGx1Z2luIHRyaWVkIGAgK1xuICAgICAgICAgICAgICAgICBgdG8gdXBkYXRlIHRoZSBzZXJ2ZXIgYW5kIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgbG9nZ2VyLmRlYnVnKGVyci5zdGFjayk7XG4gICAgcmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGlmIChwYXJzZWRBcmdzLmFsbG93Q29ycykge1xuICAgIGxvZ2dlci53YXJuKCdZb3UgaGF2ZSBlbmFibGVkIENPUlMgcmVxdWVzdHMgZnJvbSBhbnkgaG9zdC4gQmUgY2FyZWZ1bCBub3QgJyArXG4gICAgICAgICAgICAgICAgJ3RvIHZpc2l0IHNpdGVzIHdoaWNoIGNvdWxkIG1hbGljaW91c2x5IHRyeSB0byBzdGFydCBBcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgJ3Nlc3Npb25zIG9uIHlvdXIgbWFjaGluZScpO1xuICB9XG4gIGFwcGl1bURyaXZlci5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIHRyeSB7XG4gICAgLy8gY29uZmlndXJlIGFzIG5vZGUgb24gZ3JpZCwgaWYgbmVjZXNzYXJ5XG4gICAgLy8gZmFsc3kgdmFsdWVzIHNob3VsZCBub3QgY2F1c2UgdGhpcyB0byBydW5cbiAgICBpZiAocGFyc2VkQXJncy5ub2RlY29uZmlnKSB7XG4gICAgICBhd2FpdCByZWdpc3Rlck5vZGUocGFyc2VkQXJncy5ub2RlY29uZmlnLCBwYXJzZWRBcmdzLmFkZHJlc3MsIHBhcnNlZEFyZ3MucG9ydCwgcGFyc2VkQXJncy5iYXNlUGF0aCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbJ1NJR0lOVCcsICdTSUdURVJNJ10pIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCBhc3luYyBmdW5jdGlvbiBvblNpZ25hbCAoKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgUmVjZWl2ZWQgJHtzaWduYWx9IC0gc2h1dHRpbmcgZG93bmApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXBwaXVtRHJpdmVyLmRlbGV0ZUFsbFNlc3Npb25zKHtcbiAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgICByZWFzb246IGBUaGUgcHJvY2VzcyBoYXMgcmVjZWl2ZWQgJHtzaWduYWx9IHNpZ25hbGAsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIud2FybihlKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbG9nU2VydmVyUG9ydChwYXJzZWRBcmdzLmFkZHJlc3MsIHBhcnNlZEFyZ3MucG9ydCk7XG4gIGRyaXZlckNvbmZpZy5wcmludCgpO1xuICBwbHVnaW5Db25maWcucHJpbnQocGx1Z2luQ2xhc3Nlcy5tYXAoKHApID0+IHAucGx1Z2luTmFtZSkpO1xuXG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbi8vIE5PVEU6IHRoaXMgaXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdCBmb3IgYW55IHNjcmlwdHMgcmVmZXJlbmNpbmcgYG1haW4uanNgIGRpcmVjdGx5XG4vLyAobW9yZSBzcGVjaWZpY2FsbHksIGBidWlsZC9saWIvbWFpbi5qc2ApXG4vLyB0aGUgZXhlY3V0YWJsZSBpcyBub3cgYC4uL2luZGV4LmpzYCwgc28gdGhhdCBtb2R1bGUgd2lsbCB0eXBpY2FsbHkgYmUgYHJlcXVpcmUubWFpbmAuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBpbnRlbmRlZCB0byBiZSBhIHB1YmxpYyBBUEkuXG5leHBvcnQgeyByZWFkQ29uZmlnRmlsZSB9IGZyb20gJy4vY29uZmlnLWZpbGUnO1xuZXhwb3J0IHsgZmluYWxpemVTY2hlbWEsIGdldFNjaGVtYSwgdmFsaWRhdGUgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuZXhwb3J0IHsgbWFpbiwgaW5pdCwgcmVzb2x2ZUFwcGl1bUhvbWUgfTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcy90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3R5cGVzL3R5cGVzJykuUGFydGlhbEFyZ3N9IFBhcnRpYWxBcmdzXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2V4dGVuc2lvbi9tYW5pZmVzdCcpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vZXh0ZW5zaW9uL21hbmlmZXN0JykuUGx1Z2luVHlwZX0gUGx1Z2luVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9leHRlbnNpb24vbWFuaWZlc3QnKS5Ecml2ZXJDbGFzc30gRHJpdmVyQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vZXh0ZW5zaW9uL21hbmlmZXN0JykuUGx1Z2luQ2xhc3N9IFBsdWdpbkNsYXNzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7IHt9IH0gRXh0Q29tbWFuZEluaXRSZXN1bHRcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIFNlcnZlckluaXREYXRhXG4gKiBAcHJvcGVydHkge0FwcGl1bURyaXZlcn0gYXBwaXVtRHJpdmVyIC0gVGhlIEFwcGl1bSBkcml2ZXJcbiAqIEBwcm9wZXJ0eSB7UGFyc2VkQXJnc30gcGFyc2VkQXJncyAtIFRoZSBwYXJzZWQgYXJndW1lbnRzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7U2VydmVySW5pdERhdGEgJiBpbXBvcnQoJy4vZXh0ZW5zaW9uJykuRXh0ZW5zaW9uQ29uZmlnc30gU2VydmVySW5pdFJlc3VsdFxuICovXG4iXX0=
334
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9tYWluLmpzIl0sIm5hbWVzIjpbInJlc29sdmVBcHBpdW1Ib21lIiwiZW52IiwicHJlZmxpZ2h0Q2hlY2tzIiwiYXJncyIsInRocm93SW5zdGVhZE9mRXhpdCIsImxvbmdTdGFja3RyYWNlIiwicmVxdWlyZSIsImFzeW5jX3RyYWNlX2xpbWl0Iiwic2hvd0J1aWxkSW5mbyIsInByb2Nlc3MiLCJleGl0IiwidG1wRGlyIiwiZXJyIiwibG9nZ2VyIiwiZXJyb3IiLCJtZXNzYWdlIiwicmVkIiwibG9nTm9uRGVmYXVsdEFyZ3NXYXJuaW5nIiwiaW5mbyIsImxvZ0RlZmF1bHRDYXBhYmlsaXRpZXNXYXJuaW5nIiwiY2FwcyIsImxvZ1N0YXJ0dXBJbmZvIiwid2VsY29tZSIsIkFQUElVTV9WRVIiLCJhcHBpdW1SZXYiLCJzaG93QXJncyIsIl8iLCJzaXplIiwiaXNFbXB0eSIsImRlZmF1bHRDYXBhYmlsaXRpZXMiLCJsb2dTZXJ2ZXJQb3J0IiwiYWRkcmVzcyIsInBvcnQiLCJsb2dNZXNzYWdlIiwiZ2V0U2VydmVyVXBkYXRlcnMiLCJkcml2ZXJDbGFzc2VzIiwicGx1Z2luQ2xhc3NlcyIsImNvbXBhY3QiLCJtYXAiLCJnZXRFeHRyYU1ldGhvZE1hcCIsInJlZHVjZSIsImtsYXNzIiwibmV3TWV0aG9kTWFwIiwiaW5pdCIsImFwcGl1bUhvbWUiLCJkcml2ZXJDb25maWciLCJwbHVnaW5Db25maWciLCJwYXJzZXIiLCJwcmVDb25maWdQYXJzZWRBcmdzIiwicGFyc2VkQXJncyIsImRlZmF1bHRzIiwic3ViY29tbWFuZCIsIlNFUlZFUl9TVUJDT01NQU5EIiwicGFyc2VBcmdzIiwiY29uZmlnUmVzdWx0IiwiY29uZmlnRmlsZSIsImVycm9ycyIsIkVycm9yIiwiZmlsZXBhdGgiLCJyZWFzb24iLCJkZWZhdWx0c0RlZXAiLCJjb25maWciLCJzZXJ2ZXIiLCJzaG93Q29uZmlnIiwiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsImxvZ0ZpbHRlcnMiLCJpc3N1ZXMiLCJydWxlcyIsImxvZ0ZhY3RvcnkiLCJsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzIiwiSlNPTiIsInN0cmluZ2lmeSIsIndhcm4iLCJ1dGlsIiwicGx1cmFsaXplIiwibGVuZ3RoIiwiYXBwaXVtRHJpdmVyIiwiQXBwaXVtRHJpdmVyIiwibWFpbiIsInVzZVBsdWdpbnMiLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJ1c2VEcml2ZXJzIiwic2VydmVyVXBkYXRlcnMiLCJleHRyYU1ldGhvZE1hcCIsInNlcnZlck9wdHMiLCJob3N0bmFtZSIsImFsbG93Q29ycyIsImJhc2VQYXRoIiwia2VlcEFsaXZlVGltZW91dCIsImRlYnVnIiwic3RhY2siLCJub2RlY29uZmlnIiwiY2xvc2UiLCJzaWduYWwiLCJvbmNlIiwib25TaWduYWwiLCJkZWxldGVBbGxTZXNzaW9ucyIsImZvcmNlIiwiZSIsInByaW50IiwicCIsInBsdWdpbk5hbWUiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU07QUFBQ0EsRUFBQUE7QUFBRCxJQUFzQkMsWUFBNUI7OztBQU9BLGVBQWVDLGVBQWYsQ0FBZ0NDLElBQWhDLEVBQXNDQyxrQkFBa0IsR0FBRyxLQUEzRCxFQUFrRTtBQUNoRSxNQUFJO0FBQ0Y7O0FBQ0EsUUFBSUQsSUFBSSxDQUFDRSxjQUFULEVBQXlCO0FBQ3ZCQyxNQUFBQSxPQUFPLENBQUMsVUFBRCxDQUFQLENBQW9CQyxpQkFBcEIsR0FBd0MsQ0FBQyxDQUF6QztBQUNEOztBQUNELFFBQUlKLElBQUksQ0FBQ0ssYUFBVCxFQUF3QjtBQUN0QixZQUFNLDRCQUFOO0FBQ0FDLE1BQUFBLE9BQU8sQ0FBQ0MsSUFBUixDQUFhLENB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IGxvZ3NpbmtJbml0IH0gZnJvbSAnLi9sb2dzaW5rJzsgLy8gdGhpcyBpbXBvcnQgbmVlZHMgdG8gY29tZSBmaXJzdCBzaW5jZSBpdCBzZXRzIHVwIGdsb2JhbCBucG1sb2dcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInOyAvLyBsb2dnZXIgbmVlZHMgdG8gcmVtYWluIHNlY29uZFxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIsIHNlcnZlciBhcyBiYXNlU2VydmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBsb2dnZXIgYXMgbG9nRmFjdG9yeSwgdXRpbCwgZW52IH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGFzeW5jaWZ5IH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEFwcGl1bURyaXZlciB9IGZyb20gJy4vYXBwaXVtJztcbmltcG9ydCB7IHJ1bkV4dGVuc2lvbkNvbW1hbmQgfSBmcm9tICcuL2NsaS9leHRlbnNpb24nO1xuaW1wb3J0IHsgZ2V0UGFyc2VyIH0gZnJvbSAnLi9jbGkvcGFyc2VyJztcbmltcG9ydCB7IEFQUElVTV9WRVIsIGNoZWNrTm9kZU9rLCBnZXRHaXRSZXYsIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzLCBzaG93Q29uZmlnLCBzaG93QnVpbGRJbmZvLCB2YWxpZGF0ZVRtcERpciwgd2Fybk5vZGVEZXByZWNhdGlvbnMgfSBmcm9tICcuL2NvbmZpZyc7XG5pbXBvcnQgeyByZWFkQ29uZmlnRmlsZSB9IGZyb20gJy4vY29uZmlnLWZpbGUnO1xuaW1wb3J0IHsgbG9hZEV4dGVuc2lvbnMsIGdldEFjdGl2ZVBsdWdpbnMsIGdldEFjdGl2ZURyaXZlcnMgfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSwgUExVR0lOX1RZUEUsIFNFUlZFUl9TVUJDT01NQU5EIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHJlZ2lzdGVyTm9kZSBmcm9tICcuL2dyaWQtcmVnaXN0ZXInO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdHNGb3JTY2hlbWEsIHZhbGlkYXRlIH0gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3Qge3Jlc29sdmVBcHBpdW1Ib21lfSA9IGVudjtcblxuLyoqXG4gKlxuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBhcmdzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt0aHJvd0luc3RlYWRPZkV4aXRdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZWZsaWdodENoZWNrcyAoYXJncywgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2UpIHtcbiAgdHJ5IHtcbiAgICBjaGVja05vZGVPaygpO1xuICAgIGlmIChhcmdzLmxvbmdTdGFja3RyYWNlKSB7XG4gICAgICByZXF1aXJlKCdsb25nam9obicpLmFzeW5jX3RyYWNlX2xpbWl0ID0gLTE7XG4gICAgfVxuICAgIGlmIChhcmdzLnNob3dCdWlsZEluZm8pIHtcbiAgICAgIGF3YWl0IHNob3dCdWlsZEluZm8oKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gICAgd2Fybk5vZGVEZXByZWNhdGlvbnMoKTtcblxuICAgIHZhbGlkYXRlKGFyZ3MpO1xuXG4gICAgaWYgKGFyZ3MudG1wRGlyKSB7XG4gICAgICBhd2FpdCB2YWxpZGF0ZVRtcERpcihhcmdzLnRtcERpcik7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3IoZXJyLm1lc3NhZ2UucmVkKTtcbiAgICBpZiAodGhyb3dJbnN0ZWFkT2ZFeGl0KSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuXG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBhcmdzXG4gKi9cbmZ1bmN0aW9uIGxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyAoYXJncykge1xuICBsb2dnZXIuaW5mbygnTm9uLWRlZmF1bHQgc2VydmVyIGFyZ3M6Jyk7XG4gIGluc3BlY3QoYXJncyk7XG59XG5cbmZ1bmN0aW9uIGxvZ0RlZmF1bHRDYXBhYmlsaXRpZXNXYXJuaW5nIChjYXBzKSB7XG4gIGxvZ2dlci5pbmZvKCdEZWZhdWx0IGNhcGFiaWxpdGllcywgd2hpY2ggd2lsbCBiZSBhZGRlZCB0byBlYWNoIHJlcXVlc3QgJyArXG4gICAgICAgICAgICAgICd1bmxlc3Mgb3ZlcnJpZGRlbiBieSBkZXNpcmVkIGNhcGFiaWxpdGllczonKTtcbiAgaW5zcGVjdChjYXBzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9nU3RhcnR1cEluZm8gKGFyZ3MpIHtcbiAgbGV0IHdlbGNvbWUgPSBgV2VsY29tZSB0byBBcHBpdW0gdiR7QVBQSVVNX1ZFUn1gO1xuICBsZXQgYXBwaXVtUmV2ID0gYXdhaXQgZ2V0R2l0UmV2KCk7XG4gIGlmIChhcHBpdW1SZXYpIHtcbiAgICB3ZWxjb21lICs9IGAgKFJFViAke2FwcGl1bVJldn0pYDtcbiAgfVxuICBsb2dnZXIuaW5mbyh3ZWxjb21lKTtcblxuICBsZXQgc2hvd0FyZ3MgPSBnZXROb25EZWZhdWx0U2VydmVyQXJncyhhcmdzKTtcbiAgaWYgKF8uc2l6ZShzaG93QXJncykpIHtcbiAgICBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoc2hvd0FyZ3MpO1xuICB9XG4gIGlmICghXy5pc0VtcHR5KGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcykpIHtcbiAgICBsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyhhcmdzLmRlZmF1bHRDYXBhYmlsaXRpZXMpO1xuICB9XG4gIC8vIFRPRE86IGJyaW5nIGJhY2sgbG9nbGV2ZWwgcmVwb3J0aW5nIGJlbG93IG9uY2UgbG9nZ2VyIGlzIGZsdXNoZWQgb3V0XG4gIC8vIGxvZ2dlci5pbmZvKCdDb25zb2xlIExvZ0xldmVsOiAnICsgbG9nZ2VyLnRyYW5zcG9ydHMuY29uc29sZS5sZXZlbCk7XG4gIC8vIGlmIChsb2dnZXIudHJhbnNwb3J0cy5maWxlKSB7XG4gIC8vICAgbG9nZ2VyLmluZm8oJ0ZpbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5maWxlLmxldmVsKTtcbiAgLy8gfVxufVxuXG4vKipcbiAqIExvZ3MgdGhlIGFkZHJlc3MgYW5kIHBvcnQgdGhlIHNlcnZlciBpcyBsaXN0ZW5pbmcgb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQWRkcmVzc1xuICogQHBhcmFtIHtudW1iZXJ9IHBvcnQgLSBQb3J0XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gbG9nU2VydmVyUG9ydCAoYWRkcmVzcywgcG9ydCkge1xuICBsZXQgbG9nTWVzc2FnZSA9IGBBcHBpdW0gUkVTVCBodHRwIGludGVyZmFjZSBsaXN0ZW5lciBzdGFydGVkIG9uIGAgK1xuICAgICAgICAgICAgICAgICAgIGAke2FkZHJlc3N9OiR7cG9ydH1gO1xuICBsb2dnZXIuaW5mbyhsb2dNZXNzYWdlKTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgbGlzdCBvZiBgdXBkYXRlU2VydmVyYCBmdW5jdGlvbnMgZnJvbSBhbGwgZXh0ZW5zaW9uc1xuICogQHBhcmFtIHtEcml2ZXJDbGFzc1tdfSBkcml2ZXJDbGFzc2VzXG4gKiBAcGFyYW0ge1BsdWdpbkNsYXNzW119IHBsdWdpbkNsYXNzZXNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJ0BhcHBpdW0vYmFzZS1kcml2ZXIvbGliL2Jhc2Vkcml2ZXIvZHJpdmVyJykuVXBkYXRlU2VydmVyQ2FsbGJhY2tbXX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2VydmVyVXBkYXRlcnMgKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChfLm1hcChbLi4uZHJpdmVyQ2xhc3NlcywgLi4ucGx1Z2luQ2xhc3Nlc10sICd1cGRhdGVTZXJ2ZXInKSk7XG59XG5cbi8qKlxuICogTWFrZXMgYSBiaWcgYE1ldGhvZE1hcGAgZnJvbSBhbGwgdGhlIGxpdHRsZSBgTWV0aG9kTWFwYHMgaW4gdGhlIGV4dGVuc2lvbnNcbiAqIEBwYXJhbSB7RHJpdmVyQ2xhc3NbXX0gZHJpdmVyQ2xhc3Nlc1xuICogQHBhcmFtIHtQbHVnaW5DbGFzc1tdfSBwbHVnaW5DbGFzc2VzXG4gKiBAcmV0dXJucyB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuTWV0aG9kTWFwfVxuICovXG5mdW5jdGlvbiBnZXRFeHRyYU1ldGhvZE1hcCAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gWy4uLmRyaXZlckNsYXNzZXMsIC4uLnBsdWdpbkNsYXNzZXNdLnJlZHVjZShcbiAgICAobWFwLCBrbGFzcykgPT4gKHsuLi5tYXAsIC4uLmtsYXNzLm5ld01ldGhvZE1hcH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgQXBwaXVtLCBidXQgZG9lcyBub3Qgc3RhcnQgdGhlIHNlcnZlci5cbiAqXG4gKiBVc2UgdGhpcyB0byBnZXQgYXQgdGhlIGNvbmZpZ3VyYXRpb24gc2NoZW1hLlxuICpcbiAqIElmIGBhcmdzYCBjb250YWlucyBhIG5vbi1lbXB0eSBgc3ViY29tbWFuZGAgd2hpY2ggaXMgbm90IGBzZXJ2ZXJgLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGVtcHR5IG9iamVjdC5cbiAqXG4gKiBAcGFyYW0ge1BhcnRpYWxBcmdzfSBbYXJnc10gLSBQYXJ0aWFsIGFyZ3MgKHByb2dhbW1hdGljIHVzYWdlIG9ubHkpXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxTZXJ2ZXJJbml0UmVzdWx0IHwgRXh0Q29tbWFuZEluaXRSZXN1bHQ+fVxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7aW5pdCwgZ2V0U2NoZW1hfSBmcm9tICdhcHBpdW0nO1xuICogY29uc3Qgb3B0aW9ucyA9IHt9OyAvLyBjb25maWcgb2JqZWN0XG4gKiBhd2FpdCBpbml0KG9wdGlvbnMpO1xuICogY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKCk7IC8vIGVudGlyZSBjb25maWcgc2NoZW1hIGluY2x1ZGluZyBwbHVnaW5zIGFuZCBkcml2ZXJzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXQgKGFyZ3MpIHtcbiAgY29uc3QgYXBwaXVtSG9tZSA9IGFyZ3M/LmFwcGl1bUhvbWUgPz8gYXdhaXQgcmVzb2x2ZUFwcGl1bUhvbWUoKTtcblxuICBjb25zdCB7ZHJpdmVyQ29uZmlnLCBwbHVnaW5Db25maWd9ID0gYXdhaXQgbG9hZEV4dGVuc2lvbnMoYXBwaXVtSG9tZSk7XG5cbiAgY29uc3QgcGFyc2VyID0gZ2V0UGFyc2VyKCk7XG4gIGxldCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZTtcbiAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICBsZXQgcHJlQ29uZmlnUGFyc2VkQXJncztcbiAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICBsZXQgcGFyc2VkQXJncztcbiAgLyoqXG4gICAqIFRoaXMgaXMgYSBkZWZpbml0aW9uIChpbnN0ZWFkIG9mIGRlY2xhcmF0aW9uKSBiZWNhdXNlIFRTIGNhbid0IGZpZ3VyZSBvdXRcbiAgICogdGhlIHZhbHVlIHdpbGwgYmUgZGVmaW5lZCB3aGVuIGl0J3MgdXNlZC5cbiAgICogQHR5cGUge1JldHVyblR5cGU8Z2V0RGVmYXVsdHNGb3JTY2hlbWE+fVxuICAgKi9cbiAgbGV0IGRlZmF1bHRzID0ge307XG4gIGlmIChhcmdzKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIGNvbnRhaW5pbmcgcGFja2FnZSBpbnN0ZWFkIG9mIHJ1bm5pbmcgYXMgYSBDTEkgcHJvY2VzcyxcbiAgICAvLyB0aGF0IHBhY2thZ2UgbWlnaHQgbm90IGFwcHJlY2lhdGUgdXMgY2FsbGluZyAncHJvY2Vzcy5leGl0JyB3aWxseS1cbiAgICAvLyBuaWxseSwgc28gZ2l2ZSBpdCB0aGUgb3B0aW9uIHRvIGhhdmUgdXMgdGhyb3cgaW5zdGVhZCBvZiBleGl0XG4gICAgaWYgKGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0KSB7XG4gICAgICB0aHJvd0luc3RlYWRPZkV4aXQgPSB0cnVlO1xuICAgICAgLy8gYnV0IHJlbW92ZSBpdCBzaW5jZSBpdCdzIG5vdCBhIHJlYWwgc2VydmVyIGFyZyBwZXIgc2VcbiAgICAgIGRlbGV0ZSBhcmdzLnRocm93SW5zdGVhZE9mRXhpdDtcbiAgICB9XG4gICAgcHJlQ29uZmlnUGFyc2VkQXJncyA9IC8qKiBAdHlwZSB7UGFyc2VkQXJnc30gKi8oey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSBwYXJzZSBmcm9tIENMSVxuICAgIHByZUNvbmZpZ1BhcnNlZEFyZ3MgPSBwYXJzZXIucGFyc2VBcmdzKCk7XG4gIH1cblxuICBjb25zdCBjb25maWdSZXN1bHQgPSBhd2FpdCByZWFkQ29uZmlnRmlsZShwcmVDb25maWdQYXJzZWRBcmdzLmNvbmZpZ0ZpbGUpO1xuXG4gIGlmICghXy5pc0VtcHR5KGNvbmZpZ1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvcnMgaW4gY29uZmlnIGZpbGUgJHtjb25maWdSZXN1bHQuZmlsZXBhdGh9OlxcbiAke2NvbmZpZ1Jlc3VsdC5yZWFzb24gPz8gY29uZmlnUmVzdWx0LmVycm9yc31gKTtcbiAgfVxuXG4gIC8vIG1lcmdlIGNvbmZpZyBhbmQgYXBwbHkgZGVmYXVsdHMuXG4gIC8vIHRoZSBvcmRlciBvZiBwcmVjZW5kZWNlIGlzOlxuICAvLyAxLiBjb21tYW5kIGxpbmUgYXJnc1xuICAvLyAyLiBjb25maWcgZmlsZVxuICAvLyAzLiBkZWZhdWx0cyBmcm9tIGNvbmZpZyBmaWxlLlxuICBpZiAocHJlQ29uZmlnUGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBTRVJWRVJfU1VCQ09NTUFORCkge1xuICAgIGRlZmF1bHRzID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEoZmFsc2UpO1xuXG4gICAgcGFyc2VkQXJncyA9IF8uZGVmYXVsdHNEZWVwKFxuICAgICAgcHJlQ29uZmlnUGFyc2VkQXJncyxcbiAgICAgIGNvbmZpZ1Jlc3VsdC5jb25maWc/LnNlcnZlcixcbiAgICAgIGRlZmF1bHRzXG4gICAgKTtcblxuICAgIGlmIChwcmVDb25maWdQYXJzZWRBcmdzLnNob3dDb25maWcpIHtcbiAgICAgIHNob3dDb25maWcoZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocHJlQ29uZmlnUGFyc2VkQXJncyksIGNvbmZpZ1Jlc3VsdCwgZGVmYXVsdHMsIHBhcnNlZEFyZ3MpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICB9IGVsc2Uge1xuICAgIHBhcnNlZEFyZ3MgPSBwcmVDb25maWdQYXJzZWRBcmdzO1xuICB9XG5cbiAgYXdhaXQgbG9nc2lua0luaXQocGFyc2VkQXJncyk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCB0aGUgJ2RyaXZlcicgQ0xJLCBkb24ndCBydW4gdGhlIG5vcm1hbCBzZXJ2ZXIsXG4gIC8vIGJ1dCBpbnN0ZWFkIHBhc3MgY29udHJvbCB0byB0aGUgZHJpdmVyIENMSVxuICBpZiAocGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBEUklWRVJfVFlQRSkge1xuICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQocGFyc2VkQXJncywgZHJpdmVyQ29uZmlnKTtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgaWYgKHBhcnNlZEFyZ3Muc3ViY29tbWFuZCA9PT0gUExVR0lOX1RZUEUpIHtcbiAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKHBhcnNlZEFyZ3MsIHBsdWdpbkNvbmZpZyk7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgaWYgKHBhcnNlZEFyZ3MubG9nRmlsdGVycykge1xuICAgIGNvbnN0IHtpc3N1ZXMsIHJ1bGVzfSA9IGF3YWl0IGxvZ0ZhY3RvcnkubG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyhwYXJzZWRBcmdzLmxvZ0ZpbHRlcnMpO1xuICAgIGlmICghXy5pc0VtcHR5KGlzc3VlcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGxvZyBmaWx0ZXJpbmcgcnVsZXMgY29uZmlnICcke3BhcnNlZEFyZ3MubG9nRmlsdGVyc30nIGhhcyBpc3N1ZXM6IGAgK1xuICAgICAgICBKU09OLnN0cmluZ2lmeShpc3N1ZXMsIG51bGwsIDIpKTtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eShydWxlcykpIHtcbiAgICAgIGxvZ2dlci53YXJuKGBGb3VuZCBubyBsb2cgZmlsdGVyaW5nIHJ1bGVzIGluICcke3BhcnNlZEFyZ3MubG9nRmlsdGVyc30nLiBJcyB0aGF0IGV4cGVjdGVkP2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2dnZXIuaW5mbyhgTG9hZGVkICR7dXRpbC5wbHVyYWxpemUoJ2ZpbHRlcmluZyBydWxlJywgcnVsZXMubGVuZ3RoLCB0cnVlKX0gZnJvbSAnJHtwYXJzZWRBcmdzLmxvZ0ZpbHRlcnN9J2ApO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGFwcGl1bURyaXZlciA9IG5ldyBBcHBpdW1Ecml2ZXIocGFyc2VkQXJncyk7XG4gIC8vIHNldCB0aGUgY29uZmlnIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIG1hdGNoIGRyaXZlcnMgdG8gY2Fwc1xuICBhcHBpdW1Ecml2ZXIuZHJpdmVyQ29uZmlnID0gZHJpdmVyQ29uZmlnO1xuICBhd2FpdCBwcmVmbGlnaHRDaGVja3MocGFyc2VkQXJncywgdGhyb3dJbnN0ZWFkT2ZFeGl0KTtcblxuICByZXR1cm4gLyoqIEB0eXBlIHtTZXJ2ZXJJbml0UmVzdWx0fSAqLyh7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzLCBkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZ30pO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIEFwcGl1bSdzIGNvbmZpZy4gIFN0YXJ0cyBzZXJ2ZXIgaWYgYXBwcm9wcmlhdGUgYW5kIHJlc29sdmVzIHRoZVxuICogc2VydmVyIGluc3RhbmNlIGlmIHNvOyBvdGhlcndpc2UgcmVzb2x2ZXMgdy8gYHVuZGVmaW5lZGAuXG4gKiBAcGFyYW0ge1BhcnRpYWxBcmdzfSBbYXJnc10gLSBBcmd1bWVudHMgZnJvbSBDTEkgb3Igb3RoZXJ3aXNlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoJ2h0dHAnKS5TZXJ2ZXJ8dW5kZWZpbmVkPn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbWFpbiAoYXJncykge1xuICBjb25zdCB7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzLCBwbHVnaW5Db25maWcsIGRyaXZlckNvbmZpZ30gPSAvKiogQHR5cGUge1NlcnZlckluaXRSZXN1bHR9ICovKGF3YWl0IGluaXQoYXJncykpO1xuXG4gIGlmICghYXBwaXVtRHJpdmVyIHx8ICFwYXJzZWRBcmdzIHx8ICFwbHVnaW5Db25maWcgfHwgIWRyaXZlckNvbmZpZykge1xuICAgIC8vIGlmIHRoaXMgYnJhbmNoIGlzIHRha2VuLCB3ZSd2ZSBydW4gYSBkaWZmZXJlbnQgc3ViY29tbWFuZCwgc28gdGhlcmUncyBub3RoaW5nXG4gICAgLy8gbGVmdCB0byBkbyBoZXJlLlxuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHBsdWdpbkNsYXNzZXMgPSBnZXRBY3RpdmVQbHVnaW5zKHBsdWdpbkNvbmZpZywgcGFyc2VkQXJncy51c2VQbHVnaW5zKTtcbiAgLy8gc2V0IHRoZSBhY3RpdmUgcGx1Z2lucyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbSBmb3IgY29tbWFuZHNcbiAgYXBwaXVtRHJpdmVyLnBsdWdpbkNsYXNzZXMgPSBwbHVnaW5DbGFzc2VzO1xuXG4gIGF3YWl0IGxvZ1N0YXJ0dXBJbmZvKHBhcnNlZEFyZ3MpO1xuICBsZXQgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uID0gbWFrZVJvdXRlcihhcHBpdW1Ecml2ZXIpO1xuXG4gIGNvbnN0IGRyaXZlckNsYXNzZXMgPSBnZXRBY3RpdmVEcml2ZXJzKGRyaXZlckNvbmZpZywgcGFyc2VkQXJncy51c2VEcml2ZXJzKTtcbiAgY29uc3Qgc2VydmVyVXBkYXRlcnMgPSBnZXRTZXJ2ZXJVcGRhdGVycyhkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcbiAgY29uc3QgZXh0cmFNZXRob2RNYXAgPSBnZXRFeHRyYU1ldGhvZE1hcChkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcblxuICBjb25zdCBzZXJ2ZXJPcHRzID0ge1xuICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICBwb3J0OiBwYXJzZWRBcmdzLnBvcnQsXG4gICAgaG9zdG5hbWU6IHBhcnNlZEFyZ3MuYWRkcmVzcyxcbiAgICBhbGxvd0NvcnM6IHBhcnNlZEFyZ3MuYWxsb3dDb3JzLFxuICAgIGJhc2VQYXRoOiBwYXJzZWRBcmdzLmJhc2VQYXRoLFxuICAgIHNlcnZlclVwZGF0ZXJzLFxuICAgIGV4dHJhTWV0aG9kTWFwLFxuICB9O1xuICBpZiAocGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0KSB7XG4gICAgc2VydmVyT3B0cy5rZWVwQWxpdmVUaW1lb3V0ID0gcGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgfVxuICBsZXQgc2VydmVyO1xuICB0cnkge1xuICAgIHNlcnZlciA9IGF3YWl0IGJhc2VTZXJ2ZXIoc2VydmVyT3B0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgQ291bGQgbm90IGNvbmZpZ3VyZSBBcHBpdW0gc2VydmVyLiBJdCdzIHBvc3NpYmxlIHRoYXQgYSBkcml2ZXIgb3IgcGx1Z2luIHRyaWVkIGAgK1xuICAgICAgICAgICAgICAgICBgdG8gdXBkYXRlIHRoZSBzZXJ2ZXIgYW5kIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgbG9nZ2VyLmRlYnVnKGVyci5zdGFjayk7XG4gICAgcmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGlmIChwYXJzZWRBcmdzLmFsbG93Q29ycykge1xuICAgIGxvZ2dlci53YXJuKCdZb3UgaGF2ZSBlbmFibGVkIENPUlMgcmVxdWVzdHMgZnJvbSBhbnkgaG9zdC4gQmUgY2FyZWZ1bCBub3QgJyArXG4gICAgICAgICAgICAgICAgJ3RvIHZpc2l0IHNpdGVzIHdoaWNoIGNvdWxkIG1hbGljaW91c2x5IHRyeSB0byBzdGFydCBBcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgJ3Nlc3Npb25zIG9uIHlvdXIgbWFjaGluZScpO1xuICB9XG4gIGFwcGl1bURyaXZlci5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIHRyeSB7XG4gICAgLy8gY29uZmlndXJlIGFzIG5vZGUgb24gZ3JpZCwgaWYgbmVjZXNzYXJ5XG4gICAgLy8gZmFsc3kgdmFsdWVzIHNob3VsZCBub3QgY2F1c2UgdGhpcyB0byBydW5cbiAgICBpZiAocGFyc2VkQXJncy5ub2RlY29uZmlnKSB7XG4gICAgICBhd2FpdCByZWdpc3Rlck5vZGUocGFyc2VkQXJncy5ub2RlY29uZmlnLCBwYXJzZWRBcmdzLmFkZHJlc3MsIHBhcnNlZEFyZ3MucG9ydCwgcGFyc2VkQXJncy5iYXNlUGF0aCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbJ1NJR0lOVCcsICdTSUdURVJNJ10pIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCBhc3luYyBmdW5jdGlvbiBvblNpZ25hbCAoKSB7XG4gICAgICBsb2dnZXIuaW5mbyhgUmVjZWl2ZWQgJHtzaWduYWx9IC0gc2h1dHRpbmcgZG93bmApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgYXBwaXVtRHJpdmVyLmRlbGV0ZUFsbFNlc3Npb25zKHtcbiAgICAgICAgICBmb3JjZTogdHJ1ZSxcbiAgICAgICAgICByZWFzb246IGBUaGUgcHJvY2VzcyBoYXMgcmVjZWl2ZWQgJHtzaWduYWx9IHNpZ25hbGAsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIud2FybihlKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbG9nU2VydmVyUG9ydChwYXJzZWRBcmdzLmFkZHJlc3MsIHBhcnNlZEFyZ3MucG9ydCk7XG4gIGRyaXZlckNvbmZpZy5wcmludCgpO1xuICBwbHVnaW5Db25maWcucHJpbnQocGx1Z2luQ2xhc3Nlcy5tYXAoKHApID0+IHAucGx1Z2luTmFtZSkpO1xuXG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbi8vIE5PVEU6IHRoaXMgaXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdCBmb3IgYW55IHNjcmlwdHMgcmVmZXJlbmNpbmcgYG1haW4uanNgIGRpcmVjdGx5XG4vLyAobW9yZSBzcGVjaWZpY2FsbHksIGBidWlsZC9saWIvbWFpbi5qc2ApXG4vLyB0aGUgZXhlY3V0YWJsZSBpcyBub3cgYC4uL2luZGV4LmpzYCwgc28gdGhhdCBtb2R1bGUgd2lsbCB0eXBpY2FsbHkgYmUgYHJlcXVpcmUubWFpbmAuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBpbnRlbmRlZCB0byBiZSBhIHB1YmxpYyBBUEkuXG5leHBvcnQgeyByZWFkQ29uZmlnRmlsZSB9IGZyb20gJy4vY29uZmlnLWZpbGUnO1xuZXhwb3J0IHsgZmluYWxpemVTY2hlbWEsIGdldFNjaGVtYSwgdmFsaWRhdGUgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuZXhwb3J0IHsgbWFpbiwgaW5pdCwgcmVzb2x2ZUFwcGl1bUhvbWUgfTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcy9jbGknKS5QYXJzZWRBcmdzfSBQYXJzZWRBcmdzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcy9jbGknKS5QYXJ0aWFsQXJnc30gUGFydGlhbEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3R5cGVzJykuRHJpdmVyVHlwZX0gRHJpdmVyVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vdHlwZXMnKS5QbHVnaW5UeXBlfSBQbHVnaW5UeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcy9leHRlbnNpb24nKS5Ecml2ZXJDbGFzc30gRHJpdmVyQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3R5cGVzL2V4dGVuc2lvbicpLlBsdWdpbkNsYXNzfSBQbHVnaW5DbGFzc1xuICovXG5cbi8qKlxuICogTGl0ZXJhbGx5IGFuIGVtcHR5IG9iamVjdFxuICogQHR5cGVkZWYgeyB7fSB9IEV4dENvbW1hbmRJbml0UmVzdWx0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBTZXJ2ZXJJbml0RGF0YVxuICogQHByb3BlcnR5IHtBcHBpdW1Ecml2ZXJ9IGFwcGl1bURyaXZlciAtIFRoZSBBcHBpdW0gZHJpdmVyXG4gKiBAcHJvcGVydHkge1BhcnNlZEFyZ3N9IHBhcnNlZEFyZ3MgLSBUaGUgcGFyc2VkIGFyZ3VtZW50c1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge1NlcnZlckluaXREYXRhICYgaW1wb3J0KCcuL2V4dGVuc2lvbicpLkV4dGVuc2lvbkNvbmZpZ3N9IFNlcnZlckluaXRSZXN1bHRcbiAqL1xuIl19
@@ -0,0 +1,143 @@
1
+ /**
2
+ * The original ID of the Appium config schema.
3
+ * We use this in the CLI to convert it to `argparse` options.
4
+ */
5
+ export const APPIUM_CONFIG_SCHEMA_ID: "appium.json";
6
+ /**
7
+ * The schema prop containing server-related options. Everything in here
8
+ * is "native" to Appium.
9
+ * Used by {@link flattenSchema} for transforming the schema into CLI args.
10
+ */
11
+ export const SERVER_PROP_NAME: "server";
12
+ /**
13
+ * An `ArgSpec` is a class representing metadata about an argument (or config
14
+ * option) used for cross-referencing.
15
+ *
16
+ * This class has no instance methods, and is basically just a read-only "struct".
17
+ * @template D
18
+ */
19
+ export class ArgSpec<D> {
20
+ /**
21
+ * Return the schema ID (`$id`) for the **argument** given the parameters.
22
+ *
23
+ * If you need the "root" or "base" schema ID, use {@link ArgSpec.toSchemaBaseRef} instead.
24
+ * @param {string} name - Argument name
25
+ * @param {ExtensionType} [extType] - Extension type
26
+ * @param {string} [extName] - Extension name
27
+ * @returns {string} Schema ID
28
+ */
29
+ static toSchemaRef(name: string, extType?: import("../../types").ExtensionType | undefined, extName?: string | undefined): string;
30
+ /**
31
+ * Return the schema ID for an extension or the base schema ID.
32
+ * @param {ExtensionType} [extType] - Extension type
33
+ * @param {string} [extName] - Extension name
34
+ */
35
+ static toSchemaBaseRef(extType?: import("../../types").ExtensionType | undefined, extName?: string | undefined): string;
36
+ /**
37
+ * Return the unique ID for the argument given the parameters.
38
+ * @param {string} name - Argument name
39
+ * @param {ExtensionType} [extType] - Extension type
40
+ * @param {string} [extName] - Extension name
41
+ * @returns {string} Unique ID
42
+ */
43
+ static toArg(name: string, extType?: import("../../types").ExtensionType | undefined, extName?: string | undefined): string;
44
+ /**
45
+ * Normalizes a raw extension name (not including the type).
46
+ * @param {string} extName - Extension name
47
+ * @returns {string} Normalized extension name
48
+ */
49
+ static toNormalizedExtName(extName: string): string;
50
+ /**
51
+ * When given the root ID of a schema for an extension (`<extType>-<normalizedExtName>.json`) Returns an object containing the extension type and the _normalized_ extension name.
52
+ * @param {string} schemaId - Root schema ID
53
+ * @returns { {extType?: ExtensionType, normalizedExtName?: string} }
54
+ */
55
+ static extensionInfoFromRootSchemaId(schemaId: string): {
56
+ extType?: ExtensionType;
57
+ normalizedExtName?: string;
58
+ };
59
+ /**
60
+ * Creates an `ArgSpec`
61
+ *
62
+ * @param {string} name - The canonical name of the argument. Corresponds to a key in a schema's
63
+ * `properties` property.
64
+ * @template D
65
+ * @param {ArgSpecOptions<D>} [opts] - Options
66
+ * @returns {Readonly<ArgSpec>}
67
+ */
68
+ static create<D_1>(name: string, opts?: ArgSpecOptions<D_1> | undefined): Readonly<ArgSpec<any>>;
69
+ /**
70
+ * Builds some computed fields and assigns them to the instance.
71
+ *
72
+ * Undefined properties are not assigned.
73
+ *
74
+ * The _constructor_ is private. Use {@link ArgSpec.create} instead.
75
+ * @private
76
+ * @param {string} name
77
+ * @param {ArgSpecOptions<D>} [opts]
78
+ */
79
+ private constructor();
80
+ /**
81
+ * The canonical name of the argument. Corresponds to key in schema's `properties` prop.
82
+ * @type {string}
83
+ */
84
+ name: string;
85
+ /**
86
+ * The `ExtensionType` of the argument. This will be set if the arg came from an extension;
87
+ * otherwise it will be `undefined`.
88
+ * @type {ExtensionType|undefined}
89
+ */
90
+ extType: ExtensionType | undefined;
91
+ /**
92
+ * The name of the extension, if this argument came from an extension.
93
+ *
94
+ * Otherwise `undefined`.
95
+ * @type {string|undefined}
96
+ */
97
+ extName: string | undefined;
98
+ /**
99
+ * The schema ID (`$id`) for the argument. This is automatically determined, and any user-provided `$id`s will be overwritten.
100
+ *
101
+ * @type {string}
102
+ */
103
+ ref: string;
104
+ /**
105
+ * The CLI argument, sans leading dashes.
106
+ * @type {string}
107
+ */
108
+ arg: string;
109
+ /**
110
+ * The desired keypath for the argument after arguments have been parsed.
111
+ *
112
+ * Typically this is camelCased. If the arg came from an extension, it will be prefixed with
113
+ * `<extType>.<extName>.`
114
+ * @type {string}
115
+ */
116
+ dest: string;
117
+ /**
118
+ * The same as {@link ArgSpec.dest} but without the leading `<extType>.<extName>.` prefix.
119
+ */
120
+ rawDest: string;
121
+ /**
122
+ * Whatever the default value of this argument is, as specified by the
123
+ * `default` property of the schema.
124
+ * @type {D|undefined}
125
+ */
126
+ defaultValue: D | undefined;
127
+ /**
128
+ * String representation, useful for debugging
129
+ * @returns {string}
130
+ */
131
+ toString(): string;
132
+ }
133
+ /**
134
+ * Options for {@link ArgSpec.create }
135
+ */
136
+ export type ArgSpecOptions<D> = {
137
+ extName?: string | undefined;
138
+ extType?: import("../../types").ExtensionType | undefined;
139
+ dest?: string | undefined;
140
+ defaultValue?: D | undefined;
141
+ };
142
+ export type ExtensionType = import('../extension/manifest').ExtensionType;
143
+ //# sourceMappingURL=arg-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arg-spec.d.ts","sourceRoot":"","sources":["../../../lib/schema/arg-spec.js"],"names":[],"mappings":"AAEA;;;GAGG;AACH,oDAAqD;AAErD;;;;GAIG;AACH,wCAAyC;AAYzC;;;;;;GAMG;AACH;IA0FE;;;;;;;;OAQG;IACH,yBALW,MAAM,4FAGJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,wHAKC;IAED;;;;;;OAMG;IACH,mBALW,MAAM,4FAGJ,MAAM,CAQlB;IAED;;;;OAIG;IACH,oCAHW,MAAM,GACJ,MAAM,CAIlB;IAED;;;;OAIG;IACH,+CAHW,MAAM,GACH;QAAC,OAAO,CAAC,EAAE,aAAa,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAC,CAYlE;IAED;;;;;;;;OAQG;IACH,yBANW,MAAM,2CAIJ,sBAAiB,CAI7B;IAnHD;;;;;;;;;OASG;IACH,sBAsBC;IAvFD;;;OAGG;IACH,MAFU,MAAM,CAEX;IAEL;;;;OAIG;IACH,SAFU,aAAa,GAAC,SAAS,CAEzB;IAER;;;;;OAKG;IACH,SAFU,MAAM,GAAC,SAAS,CAElB;IAER;;;;OAIG;IACH,KAFU,MAAM,CAEZ;IAEJ;;;OAGG;IACH,KAFU,MAAM,CAEZ;IAEJ;;;;;;OAMG;IACH,MAFU,MAAM,CAEX;IAEL;;OAEG;IACH,gBAAQ;IAER;;;;OAIG;IACH,cAFU,CAAC,GAAC,SAAS,CAER;IAuHb;;;OAGG;IAEH,YAHa,MAAM,CASlB;CACF;;;;;;;;;;4BAaY,OAAO,uBAAuB,EAAE,aAAa"}
@@ -116,4 +116,4 @@ class ArgSpec {
116
116
  }
117
117
 
118
118
  exports.ArgSpec = ArgSpec;
119
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEvYXJnLXNwZWMuanMiXSwibmFtZXMiOlsiQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQiLCJTRVJWRVJfUFJPUF9OQU1FIiwiU0NIRU1BX0lEX1JFR0VYUCIsIlBST1BFUlRJRVMiLCJBcmdTcGVjIiwibmFtZSIsImV4dFR5cGUiLCJleHROYW1lIiwicmVmIiwiYXJnIiwiZGVzdCIsInJhd0Rlc3QiLCJkZWZhdWx0VmFsdWUiLCJjb25zdHJ1Y3RvciIsInRvQXJnIiwidG9TY2hlbWFSZWYiLCJfIiwiY2FtZWxDYXNlIiwiZGVzdEtleXBhdGgiLCJqb2luIiwiYmFzZVJlZiIsInRvU2NoZW1hQmFzZVJlZiIsInRvTm9ybWFsaXplZEV4dE5hbWUiLCJwcm9wZXJOYW1lIiwia2ViYWJDYXNlIiwicmVwbGFjZSIsImV4dGVuc2lvbkluZm9Gcm9tUm9vdFNjaGVtYUlkIiwic2NoZW1hSWQiLCJtYXRjaGVzIiwibWF0Y2giLCJncm91cHMiLCJub3JtYWxpemVkRXh0TmFtZSIsImNyZWF0ZSIsIm9wdHMiLCJPYmplY3QiLCJmcmVlemUiLCJ0b1N0cmluZyIsInN0ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFNTyxNQUFNQSx1QkFBdUIsR0FBRyxhQUFoQzs7QUFPQSxNQUFNQyxnQkFBZ0IsR0FBRyxRQUF6Qjs7QUFLUCxNQUFNQyxnQkFBZ0IsR0FBRyxrREFBekI7QUFLQSxNQUFNQyxVQUFVLEdBQUcsWUFBbkI7O0FBUU8sTUFBTUMsT0FBTixDQUFjO0FBS25CQyxFQUFBQSxJQUFJO0FBT0pDLEVBQUFBLE9BQU87QUFRUEMsRUFBQUEsT0FBTztBQU9QQyxFQUFBQSxHQUFHO0FBTUhDLEVBQUFBLEdBQUc7QUFTSEMsRUFBQUEsSUFBSTtBQUtKQyxFQUFBQSxPQUFPO0FBT1BDLEVBQUFBLFlBQVk7O0FBYVpDLEVBQUFBLFdBQVcsQ0FBRVIsSUFBRixFQUFRO0FBQUNDLElBQUFBLE9BQUQ7QUFBVUMsSUFBQUEsT0FBVjtB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QUFBO0FBQVYsVUFBK0JILE9BQU8sQ0FBQ0UsTUFBN0M7QUFDQSxhQUFPO0FBQUN4QixRQUFBQSxPQUFEO0FBQVV5QixRQUFBQTtBQUFWLE9BQVA7QUFDRDs7QUFDRCxXQUFPLEVBQVA7QUFDRDs7QUFVWSxTQUFOQyxNQUFNLENBQUUzQixJQUFGLEVBQVE0QixJQUFSLEVBQWM7QUFDekIsV0FBT0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsSUFBSS9CLE9BQUosQ0FBWUMsSUFBWixFQUFrQjRCLElBQWxCLENBQWQsQ0FBUDtBQUNEOztBQU9ERyxFQUFBQSxRQUFRLEdBQUk7QUFDVixRQUFJQyxHQUFHLEdBQUksYUFBWSxLQUFLaEMsSUFBSyxLQUFJLEtBQUtHLEdBQUksR0FBOUM7O0FBQ0EsUUFBSSxLQUFLRixPQUFMLElBQWdCLEtBQUtDLE9BQXpCLEVBQWtDO0FBQ2hDOEIsTUFBQUEsR0FBRyxJQUFLLFVBQVMsS0FBSy9CLE9BQVEsSUFBRyxLQUFLQyxPQUFRLEdBQTlDO0FBQ0Q7O0FBQ0QsV0FBTzhCLEdBQVA7QUFDRDs7QUFyTGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBUaGUgb3JpZ2luYWwgSUQgb2YgdGhlIEFwcGl1bSBjb25maWcgc2NoZW1hLlxuICogV2UgdXNlIHRoaXMgaW4gdGhlIENMSSB0byBjb252ZXJ0IGl0IHRvIGBhcmdwYXJzZWAgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQUElVTV9DT05GSUdfU0NIRU1BX0lEID0gJ2FwcGl1bS5qc29uJztcblxuLyoqXG4gKiBUaGUgc2NoZW1hIHByb3AgY29udGFpbmluZyBzZXJ2ZXItcmVsYXRlZCBvcHRpb25zLiBFdmVyeXRoaW5nIGluIGhlcmVcbiAqIGlzIFwibmF0aXZlXCIgdG8gQXBwaXVtLlxuICogVXNlZCBieSB7QGxpbmsgZmxhdHRlblNjaGVtYX0gZm9yIHRyYW5zZm9ybWluZyB0aGUgc2NoZW1hIGludG8gQ0xJIGFyZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBTRVJWRVJfUFJPUF9OQU1FID0gJ3NlcnZlcic7XG5cbi8qKlxuICogVXNlZCB0byBwYXJzZSBleHRlbnNpb24gaW5mbyBmcm9tIGEgc2NoZW1hIElELlxuICovXG5jb25zdCBTQ0hFTUFfSURfUkVHRVhQID0gL14oPzxleHRUeXBlPi4rPyktKD88bm9ybWFsaXplZEV4dE5hbWU+LispXFwuanNvbiQvO1xuXG4vKipcbiAqIEF2b2lkIHR5cG9zIGJ5IHVzaW5nIGNvbnN0YW50cyFcbiAqL1xuY29uc3QgUFJPUEVSVElFUyA9ICdwcm9wZXJ0aWVzJztcblxuLyoqXG4gKiBBbiBgQXJnU3BlY2AgaXMgYSBjbGFzcyByZXByZXNlbnRpbmcgbWV0YWRhdGEgYWJvdXQgYW4gYXJndW1lbnQgKG9yIGNvbmZpZ1xuICogb3B0aW9uKSB1c2VkIGZvciBjcm9zcy1yZWZlcmVuY2luZy5cbiAqXG4gKiBUaGlzIGNsYXNzIGhhcyBubyBpbnN0YW5jZSBtZXRob2RzLCBhbmQgaXMgYmFzaWNhbGx5IGp1c3QgYSByZWFkLW9ubHkgXCJzdHJ1Y3RcIi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFyZ1NwZWMge1xuICAvKipcbiAgICogVGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBhcmd1bWVudC4gQ29ycmVzcG9uZHMgdG8ga2V5IGluIHNjaGVtYSdzIGBwcm9wZXJ0aWVzYCBwcm9wLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogVGhlIGBFeHRlbnNpb25UeXBlYCBvZiB0aGUgYXJndW1lbnQuIFRoaXMgd2lsbCBiZSBzZXQgaWYgdGhlIGFyZyBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uO1xuICAgKiBvdGhlcndpc2UgaXQgd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICogQHR5cGUge0V4dGVuc2lvblR5cGV8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0VHlwZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiwgaWYgdGhpcyBhcmd1bWVudCBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uLlxuICAgKlxuICAgKiBPdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gICAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0TmFtZTtcblxuICAvKipcbiAgICogVGhlIHNjaGVtYSBJRCAoYCRpZGApIGZvciB0aGUgYXJndW1lbnQuICBUaGlzIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZCwgYW5kIGFueSB1c2VyLXByb3ZpZGVkIGAkaWRgcyB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgcmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0xJIGFyZ3VtZW50LCBzYW5zIGxlYWRpbmcgZGFzaGVzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgYXJnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBrZXlwYXRoIGZvciB0aGUgYXJndW1lbnQgYWZ0ZXIgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXJzZWQuXG4gICAqXG4gICAqIFR5cGljYWxseSB0aGlzIGlzIGNhbWVsQ2FzZWQuICBJZiB0aGUgYXJnIGNhbWUgZnJvbSBhbiBleHRlbnNpb24sIGl0IHdpbGwgYmUgcHJlZml4ZWQgd2l0aFxuICAgKiBgPGV4dFR5cGU+LjxleHROYW1lPi5gXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBkZXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgQXJnU3BlYy5kZXN0fSBidXQgd2l0aG91dCB0aGUgbGVhZGluZyBgPGV4dFR5cGU+LjxleHROYW1lPi5gIHByZWZpeC5cbiAgICovXG4gIHJhd0Rlc3Q7XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgYXJndW1lbnQgaXMsIGFzIHNwZWNpZmllZCBieSB0aGVcbiAgICogYGRlZmF1bHRgIHByb3BlcnR5IG9mIHRoZSBzY2hlbWEuXG4gICAqIEB0eXBlIHtEfVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlO1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgc29tZSBjb21wdXRlZCBmaWVsZHMgYW5kIGFzc2lnbnMgdGhlbSB0byB0aGUgaW5zdGFuY2UuXG4gICAqXG4gICAqIFVuZGVmaW5lZCBwcm9wZXJ0aWVzIGFyZSBub3QgYXNzaWduZWQuXG4gICAqXG4gICAqIFRoZSBfY29uc3RydWN0b3JfIGlzIHByaXZhdGUuIFVzZSB7QGxpbmsgQXJnU3BlYy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0ZW1wbGF0ZSBEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7QXJnU3BlY09wdGlvbnM8RD59IFtvcHRzXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKG5hbWUsIHtleHRUeXBlLCBleHROYW1lLCBkZXN0LCBkZWZhdWx0VmFsdWV9ID0ge30pIHtcbiAgICAvLyB3ZSBtdXN0IG5vcm1hbGl6ZSB0aGUgZXh0ZW5zaW9uIG5hbWUgdG8gZml0IGludG8gb3VyIGNvbnZlbnRpb24gZm9yIENMSVxuICAgIC8vIGFyZ3MuXG4gICAgY29uc3QgYXJnID0gQXJnU3BlYy50b0FyZyhuYW1lLCBleHRUeXBlLCBleHROYW1lKTtcblxuICAgIGNvbnN0IHJlZiA9IEFyZ1NwZWMudG9TY2hlbWFSZWYobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSk7XG5cbiAgICAvLyBpZiBubyBleHBsaWNpdCBgZGVzdGAgcHJvdmlkZWQsIGp1c3QgY2FtZWxDYXNlIHRoZSBuYW1lIHRvIGF2b2lkIG5lZWRpbmdcbiAgICAvLyB0byB1c2UgYnJhY2tldCBzeW50YXggd2hlbiBhY2Nlc3NpbmcgcHJvcHMgb24gdGhlIHBhcnNlZCBhcmdzIG9iamVjdC5cbiAgICBjb25zdCByYXdEZXN0ID0gXy5jYW1lbENhc2UoZGVzdCA/PyBuYW1lKTtcblxuICAgIGNvbnN0IGRlc3RLZXlwYXRoID1cbiAgICAgIGV4dFR5cGUgJiYgZXh0TmFtZSA/IFtleHRUeXBlLCBleHROYW1lLCByYXdEZXN0XS5qb2luKCcuJykgOiByYXdEZXN0O1xuXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmV4dFR5cGUgPSBleHRUeXBlO1xuICAgIHRoaXMuZXh0TmFtZSA9IGV4dE5hbWU7XG4gICAgdGhpcy5hcmcgPSBhcmc7XG4gICAgdGhpcy5kZXN0ID0gZGVzdEtleXBhdGg7XG4gICAgdGhpcy5yZWYgPSByZWY7XG4gICAgdGhpcy5yYXdEZXN0ID0gcmF3RGVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBJRCAoYCRpZGApIGZvciB0aGUgKiphcmd1bWVudCoqIGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBJZiB5b3UgbmVlZCB0aGUgXCJyb290XCIgb3IgXCJiYXNlXCIgc2NoZW1hIElELCB1c2Uge0BsaW5rIEFyZ1NwZWMudG9TY2hlbWFCYXNlUmVmfSBpbnN0ZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gU2NoZW1hIElEXG4gICAqL1xuICBzdGF0aWMgdG9TY2hlbWFSZWYgKG5hbWUsIGV4dFR5cGUsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBiYXNlUmVmID0gQXJnU3BlYy50b1NjaGVtYUJhc2VSZWYoZXh0VHlwZSwgZXh0TmFtZSk7XG4gICAgaWYgKGV4dFR5cGUgJiYgZXh0TmFtZSkge1xuICAgICAgcmV0dXJuIFtgJHtiYXNlUmVmfSNgLCBQUk9QRVJUSUVTLCBuYW1lXS5qb2luKCcvJyk7XG4gICAgfVxuICAgIHJldHVybiBbYCR7YmFzZVJlZn0jYCwgUFJPUEVSVElFUywgU0VSVkVSX1BST1BfTkFNRSwgUFJPUEVSVElFUywgbmFtZV0uam9pbignLycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2NoZW1hIElEIGZvciBhbiBleHRlbnNpb24gb3IgdGhlIGJhc2Ugc2NoZW1hIElELlxuICAgKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IFtleHRUeXBlXSAtIEV4dGVuc2lvbiB0eXBlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXh0TmFtZV0gLSBFeHRlbnNpb24gbmFtZVxuICAgKi9cbiAgc3RhdGljIHRvU2NoZW1hQmFzZVJlZiAoZXh0VHlwZSwgZXh0TmFtZSkge1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtleHRUeXBlfS0ke0FyZ1NwZWMudG9Ob3JtYWxpemVkRXh0TmFtZShleHROYW1lKX0uanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBBUFBJVU1fQ09ORklHX1NDSEVNQV9JRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHVuaXF1ZSBJRCBmb3IgdGhlIGFyZ3VtZW50IGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gVW5pcXVlIElEXG4gICAqL1xuICBzdGF0aWMgdG9BcmcgKG5hbWUsIGV4dFR5cGUsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBwcm9wZXJOYW1lID0gXy5rZWJhYkNhc2UobmFtZS5yZXBsYWNlKC9eLS0/LywgJycpKTtcbiAgICBpZiAoZXh0VHlwZSAmJiBleHROYW1lKSB7XG4gICAgICByZXR1cm4gW2V4dFR5cGUsIF8ua2ViYWJDYXNlKGV4dE5hbWUpLCBwcm9wZXJOYW1lXS5qb2luKCctJyk7XG4gICAgfVxuICAgIHJldHVybiBwcm9wZXJOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgYSByYXcgZXh0ZW5zaW9uIG5hbWUgKG5vdCBpbmNsdWRpbmcgdGhlIHR5cGUpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZSAtIEV4dGVuc2lvbiBuYW1lXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IE5vcm1hbGl6ZWQgZXh0ZW5zaW9uIG5hbWVcbiAgICovXG4gIHN0YXRpYyB0b05vcm1hbGl6ZWRFeHROYW1lIChleHROYW1lKSB7XG4gICAgcmV0dXJuIF8ua2ViYWJDYXNlKGV4dE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gZ2l2ZW4gdGhlIHJvb3QgSUQgb2YgYSBzY2hlbWEgZm9yIGFuIGV4dGVuc2lvbiAoYDxleHRUeXBlPi08bm9ybWFsaXplZEV4dE5hbWU+Lmpzb25gKSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRlbnNpb24gdHlwZSBhbmQgdGhlIF9ub3JtYWxpemVkXyBleHRlbnNpb24gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYUlkIC0gUm9vdCBzY2hlbWEgSURcbiAgICogQHJldHVybnMgeyB7ZXh0VHlwZTogRXh0ZW5zaW9uVHlwZXx1bmRlZmluZWQsIG5vcm1hbGl6ZWRFeHROYW1lOiBzdHJpbmd8dW5kZWZpbmVkfSB9XG4gICAqL1xuICBzdGF0aWMgZXh0ZW5zaW9uSW5mb0Zyb21Sb290U2NoZW1hSWQgKHNjaGVtYUlkKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHNjaGVtYUlkLm1hdGNoKFNDSEVNQV9JRF9SRUdFWFApO1xuICAgIGlmIChtYXRjaGVzPy5ncm91cHMpIHtcbiAgICAgIGNvbnN0IHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX0gPSBtYXRjaGVzLmdyb3VwcztcbiAgICAgIHJldHVybiB7ZXh0VHlwZSwgbm9ybWFsaXplZEV4dE5hbWV9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBgQXJnU3BlY2BcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgY2Fub25pY2FsIG5hbWUgb2YgdGhlIGFyZ3VtZW50LiBDb3JyZXNwb25kcyB0byBhIGtleSBpbiBhIHNjaGVtYSdzXG4gICAqIGBwcm9wZXJ0aWVzYCBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHtBcmdTcGVjT3B0aW9uc30gW29wdHNdIC0gT3B0aW9uc1xuICAgKiBAcmV0dXJucyB7UmVhZG9ubHk8QXJnU3BlYz59XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlIChuYW1lLCBvcHRzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUobmV3IEFyZ1NwZWMobmFtZSwgb3B0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZyByZXByZXNlbnRhdGlvbiwgdXNlZnVsIGZvciBkZWJ1Z2dpbmdcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICBsZXQgc3RyID0gYFtBcmdTcGVjXSAke3RoaXMubmFtZX0gKCR7dGhpcy5yZWZ9KWA7XG4gICAgaWYgKHRoaXMuZXh0VHlwZSAmJiB0aGlzLmV4dE5hbWUpIHtcbiAgICAgIHN0ciArPSBgIChleHQ6ICR7dGhpcy5leHRUeXBlfS8ke3RoaXMuZXh0TmFtZX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBBcmdTcGVjLmNyZWF0ZX1cbiAqIEB0ZW1wbGF0ZSBEXG4gKiBAdHlwZWRlZiBBcmdTcGVjT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtleHROYW1lXVxuICogQHByb3BlcnR5IHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVzdF1cbiAqIEBwcm9wZXJ0eSB7RH0gW2RlZmF1bHRWYWx1ZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL21hbmlmZXN0JykuRXh0ZW5zaW9uVHlwZX0gRXh0ZW5zaW9uVHlwZVxuICovXG4iXX0=
119
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEvYXJnLXNwZWMuanMiXSwibmFtZXMiOlsiQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQiLCJTRVJWRVJfUFJPUF9OQU1FIiwiU0NIRU1BX0lEX1JFR0VYUCIsIlBST1BFUlRJRVMiLCJBcmdTcGVjIiwibmFtZSIsImV4dFR5cGUiLCJleHROYW1lIiwicmVmIiwiYXJnIiwiZGVzdCIsInJhd0Rlc3QiLCJkZWZhdWx0VmFsdWUiLCJjb25zdHJ1Y3RvciIsInRvQXJnIiwidG9TY2hlbWFSZWYiLCJfIiwiY2FtZWxDYXNlIiwiZGVzdEtleXBhdGgiLCJqb2luIiwiYmFzZVJlZiIsInRvU2NoZW1hQmFzZVJlZiIsInRvTm9ybWFsaXplZEV4dE5hbWUiLCJwcm9wZXJOYW1lIiwia2ViYWJDYXNlIiwicmVwbGFjZSIsImV4dGVuc2lvbkluZm9Gcm9tUm9vdFNjaGVtYUlkIiwic2NoZW1hSWQiLCJtYXRjaGVzIiwibWF0Y2giLCJncm91cHMiLCJub3JtYWxpemVkRXh0TmFtZSIsImNyZWF0ZSIsIm9wdHMiLCJPYmplY3QiLCJmcmVlemUiLCJ0b1N0cmluZyIsInN0ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFNTyxNQUFNQSx1QkFBdUIsR0FBRyxhQUFoQzs7QUFPQSxNQUFNQyxnQkFBZ0IsR0FBRyxRQUF6Qjs7QUFLUCxNQUFNQyxnQkFBZ0IsR0FBRyxrREFBekI7QUFLQSxNQUFNQyxVQUFVLEdBQUcsWUFBbkI7O0FBU08sTUFBTUMsT0FBTixDQUFjO0FBS25CQyxFQUFBQSxJQUFJO0FBT0pDLEVBQUFBLE9BQU87QUFRUEMsRUFBQUEsT0FBTztBQU9QQyxFQUFBQSxHQUFHO0FBTUhDLEVBQUFBLEdBQUc7QUFTSEMsRUFBQUEsSUFBSTtBQUtKQyxFQUFBQSxPQUFPO0FBT1BDLEVBQUFBLFlBQVk7O0FBWVpDLEVBQUFBLFdBQVcsQ0FBRVIsSUFBRixFQUFRO0FBQUNDLElBQUFBLE9BQUQ7QUFBVUMsSUFBQUEsT0FBVjtB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QUFBO0FBQVYsVUFFRkgsT0FBTyxDQUFDRSxNQUZaO0FBSUEsYUFBTztBQUFDeEIsUUFBQUEsT0FBRDtBQUFVeUIsUUFBQUE7QUFBVixPQUFQO0FBQ0Q7O0FBQ0QsV0FBTyxFQUFQO0FBQ0Q7O0FBV1ksU0FBTkMsTUFBTSxDQUFFM0IsSUFBRixFQUFRNEIsSUFBUixFQUFjO0FBQ3pCLFdBQU9DLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjLElBQUkvQixPQUFKLENBQVlDLElBQVosRUFBa0I0QixJQUFsQixDQUFkLENBQVA7QUFDRDs7QUFPREcsRUFBQUEsUUFBUSxHQUFJO0FBQ1YsUUFBSUMsR0FBRyxHQUFJLGFBQVksS0FBS2hDLElBQUssS0FBSSxLQUFLRyxHQUFJLEdBQTlDOztBQUNBLFFBQUksS0FBS0YsT0FBTCxJQUFnQixLQUFLQyxPQUF6QixFQUFrQztBQUNoQzhCLE1BQUFBLEdBQUcsSUFBSyxVQUFTLEtBQUsvQixPQUFRLElBQUcsS0FBS0MsT0FBUSxHQUE5QztBQUNEOztBQUNELFdBQU84QixHQUFQO0FBQ0Q7O0FBeExrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbi8qKlxuICogVGhlIG9yaWdpbmFsIElEIG9mIHRoZSBBcHBpdW0gY29uZmlnIHNjaGVtYS5cbiAqIFdlIHVzZSB0aGlzIGluIHRoZSBDTEkgdG8gY29udmVydCBpdCB0byBgYXJncGFyc2VgIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBjb25zdCBBUFBJVU1fQ09ORklHX1NDSEVNQV9JRCA9ICdhcHBpdW0uanNvbic7XG5cbi8qKlxuICogVGhlIHNjaGVtYSBwcm9wIGNvbnRhaW5pbmcgc2VydmVyLXJlbGF0ZWQgb3B0aW9ucy4gRXZlcnl0aGluZyBpbiBoZXJlXG4gKiBpcyBcIm5hdGl2ZVwiIHRvIEFwcGl1bS5cbiAqIFVzZWQgYnkge0BsaW5rIGZsYXR0ZW5TY2hlbWF9IGZvciB0cmFuc2Zvcm1pbmcgdGhlIHNjaGVtYSBpbnRvIENMSSBhcmdzLlxuICovXG5leHBvcnQgY29uc3QgU0VSVkVSX1BST1BfTkFNRSA9ICdzZXJ2ZXInO1xuXG4vKipcbiAqIFVzZWQgdG8gcGFyc2UgZXh0ZW5zaW9uIGluZm8gZnJvbSBhIHNjaGVtYSBJRC5cbiAqL1xuY29uc3QgU0NIRU1BX0lEX1JFR0VYUCA9IC9eKD88ZXh0VHlwZT4uKz8pLSg/PG5vcm1hbGl6ZWRFeHROYW1lPi4rKVxcLmpzb24kLztcblxuLyoqXG4gKiBBdm9pZCB0eXBvcyBieSB1c2luZyBjb25zdGFudHMhXG4gKi9cbmNvbnN0IFBST1BFUlRJRVMgPSAncHJvcGVydGllcyc7XG5cbi8qKlxuICogQW4gYEFyZ1NwZWNgIGlzIGEgY2xhc3MgcmVwcmVzZW50aW5nIG1ldGFkYXRhIGFib3V0IGFuIGFyZ3VtZW50IChvciBjb25maWdcbiAqIG9wdGlvbikgdXNlZCBmb3IgY3Jvc3MtcmVmZXJlbmNpbmcuXG4gKlxuICogVGhpcyBjbGFzcyBoYXMgbm8gaW5zdGFuY2UgbWV0aG9kcywgYW5kIGlzIGJhc2ljYWxseSBqdXN0IGEgcmVhZC1vbmx5IFwic3RydWN0XCIuXG4gKiBAdGVtcGxhdGUgRFxuICovXG5leHBvcnQgY2xhc3MgQXJnU3BlYyB7XG4gIC8qKlxuICAgKiBUaGUgY2Fub25pY2FsIG5hbWUgb2YgdGhlIGFyZ3VtZW50LiBDb3JyZXNwb25kcyB0byBrZXkgaW4gc2NoZW1hJ3MgYHByb3BlcnRpZXNgIHByb3AuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgYEV4dGVuc2lvblR5cGVgIG9mIHRoZSBhcmd1bWVudC4gVGhpcyB3aWxsIGJlIHNldCBpZiB0aGUgYXJnIGNhbWUgZnJvbSBhbiBleHRlbnNpb247XG4gICAqIG90aGVyd2lzZSBpdCB3aWxsIGJlIGB1bmRlZmluZWRgLlxuICAgKiBAdHlwZSB7RXh0ZW5zaW9uVHlwZXx1bmRlZmluZWR9XG4gICAqL1xuICBleHRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uLCBpZiB0aGlzIGFyZ3VtZW50IGNhbWUgZnJvbSBhbiBleHRlbnNpb24uXG4gICAqXG4gICAqIE90aGVyd2lzZSBgdW5kZWZpbmVkYC5cbiAgICogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9XG4gICAqL1xuICBleHROYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIElEIChgJGlkYCkgZm9yIHRoZSBhcmd1bWVudC4gIFRoaXMgaXMgYXV0b21hdGljYWxseSBkZXRlcm1pbmVkLCBhbmQgYW55IHVzZXItcHJvdmlkZWQgYCRpZGBzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICByZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBDTEkgYXJndW1lbnQsIHNhbnMgbGVhZGluZyBkYXNoZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBhcmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNpcmVkIGtleXBhdGggZm9yIHRoZSBhcmd1bWVudCBhZnRlciBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhcnNlZC5cbiAgICpcbiAgICogVHlwaWNhbGx5IHRoaXMgaXMgY2FtZWxDYXNlZC4gIElmIHRoZSBhcmcgY2FtZSBmcm9tIGFuIGV4dGVuc2lvbiwgaXQgd2lsbCBiZSBwcmVmaXhlZCB3aXRoXG4gICAqIGA8ZXh0VHlwZT4uPGV4dE5hbWU+LmBcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGRlc3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBzYW1lIGFzIHtAbGluayBBcmdTcGVjLmRlc3R9IGJ1dCB3aXRob3V0IHRoZSBsZWFkaW5nIGA8ZXh0VHlwZT4uPGV4dE5hbWU+LmAgcHJlZml4LlxuICAgKi9cbiAgcmF3RGVzdDtcblxuICAvKipcbiAgICogV2hhdGV2ZXIgdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBhcmd1bWVudCBpcywgYXMgc3BlY2lmaWVkIGJ5IHRoZVxuICAgKiBgZGVmYXVsdGAgcHJvcGVydHkgb2YgdGhlIHNjaGVtYS5cbiAgICogQHR5cGUge0R8dW5kZWZpbmVkfVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlO1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgc29tZSBjb21wdXRlZCBmaWVsZHMgYW5kIGFzc2lnbnMgdGhlbSB0byB0aGUgaW5zdGFuY2UuXG4gICAqXG4gICAqIFVuZGVmaW5lZCBwcm9wZXJ0aWVzIGFyZSBub3QgYXNzaWduZWQuXG4gICAqXG4gICAqIFRoZSBfY29uc3RydWN0b3JfIGlzIHByaXZhdGUuIFVzZSB7QGxpbmsgQXJnU3BlYy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7QXJnU3BlY09wdGlvbnM8RD59IFtvcHRzXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKG5hbWUsIHtleHRUeXBlLCBleHROYW1lLCBkZXN0LCBkZWZhdWx0VmFsdWV9ID0ge30pIHtcbiAgICAvLyB3ZSBtdXN0IG5vcm1hbGl6ZSB0aGUgZXh0ZW5zaW9uIG5hbWUgdG8gZml0IGludG8gb3VyIGNvbnZlbnRpb24gZm9yIENMSVxuICAgIC8vIGFyZ3MuXG4gICAgY29uc3QgYXJnID0gQXJnU3BlYy50b0FyZyhuYW1lLCBleHRUeXBlLCBleHROYW1lKTtcblxuICAgIGNvbnN0IHJlZiA9IEFyZ1NwZWMudG9TY2hlbWFSZWYobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSk7XG5cbiAgICAvLyBpZiBubyBleHBsaWNpdCBgZGVzdGAgcHJvdmlkZWQsIGp1c3QgY2FtZWxDYXNlIHRoZSBuYW1lIHRvIGF2b2lkIG5lZWRpbmdcbiAgICAvLyB0byB1c2UgYnJhY2tldCBzeW50YXggd2hlbiBhY2Nlc3NpbmcgcHJvcHMgb24gdGhlIHBhcnNlZCBhcmdzIG9iamVjdC5cbiAgICBjb25zdCByYXdEZXN0ID0gXy5jYW1lbENhc2UoZGVzdCA/PyBuYW1lKTtcblxuICAgIGNvbnN0IGRlc3RLZXlwYXRoID1cbiAgICAgIGV4dFR5cGUgJiYgZXh0TmFtZSA/IFtleHRUeXBlLCBleHROYW1lLCByYXdEZXN0XS5qb2luKCcuJykgOiByYXdEZXN0O1xuXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmV4dFR5cGUgPSBleHRUeXBlO1xuICAgIHRoaXMuZXh0TmFtZSA9IGV4dE5hbWU7XG4gICAgdGhpcy5hcmcgPSBhcmc7XG4gICAgdGhpcy5kZXN0ID0gZGVzdEtleXBhdGg7XG4gICAgdGhpcy5yZWYgPSByZWY7XG4gICAgdGhpcy5yYXdEZXN0ID0gcmF3RGVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBJRCAoYCRpZGApIGZvciB0aGUgKiphcmd1bWVudCoqIGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBJZiB5b3UgbmVlZCB0aGUgXCJyb290XCIgb3IgXCJiYXNlXCIgc2NoZW1hIElELCB1c2Uge0BsaW5rIEFyZ1NwZWMudG9TY2hlbWFCYXNlUmVmfSBpbnN0ZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gU2NoZW1hIElEXG4gICAqL1xuICBzdGF0aWMgdG9TY2hlbWFSZWYgKG5hbWUsIGV4dFR5cGUsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBiYXNlUmVmID0gQXJnU3BlYy50b1NjaGVtYUJhc2VSZWYoZXh0VHlwZSwgZXh0TmFtZSk7XG4gICAgaWYgKGV4dFR5cGUgJiYgZXh0TmFtZSkge1xuICAgICAgcmV0dXJuIFtgJHtiYXNlUmVmfSNgLCBQUk9QRVJUSUVTLCBuYW1lXS5qb2luKCcvJyk7XG4gICAgfVxuICAgIHJldHVybiBbYCR7YmFzZVJlZn0jYCwgUFJPUEVSVElFUywgU0VSVkVSX1BST1BfTkFNRSwgUFJPUEVSVElFUywgbmFtZV0uam9pbignLycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2NoZW1hIElEIGZvciBhbiBleHRlbnNpb24gb3IgdGhlIGJhc2Ugc2NoZW1hIElELlxuICAgKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IFtleHRUeXBlXSAtIEV4dGVuc2lvbiB0eXBlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXh0TmFtZV0gLSBFeHRlbnNpb24gbmFtZVxuICAgKi9cbiAgc3RhdGljIHRvU2NoZW1hQmFzZVJlZiAoZXh0VHlwZSwgZXh0TmFtZSkge1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtleHRUeXBlfS0ke0FyZ1NwZWMudG9Ob3JtYWxpemVkRXh0TmFtZShleHROYW1lKX0uanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBBUFBJVU1fQ09ORklHX1NDSEVNQV9JRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHVuaXF1ZSBJRCBmb3IgdGhlIGFyZ3VtZW50IGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gVW5pcXVlIElEXG4gICAqL1xuICBzdGF0aWMgdG9BcmcgKG5hbWUsIGV4dFR5cGUsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBwcm9wZXJOYW1lID0gXy5rZWJhYkNhc2UobmFtZS5yZXBsYWNlKC9eLS0/LywgJycpKTtcbiAgICBpZiAoZXh0VHlwZSAmJiBleHROYW1lKSB7XG4gICAgICByZXR1cm4gW2V4dFR5cGUsIF8ua2ViYWJDYXNlKGV4dE5hbWUpLCBwcm9wZXJOYW1lXS5qb2luKCctJyk7XG4gICAgfVxuICAgIHJldHVybiBwcm9wZXJOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgYSByYXcgZXh0ZW5zaW9uIG5hbWUgKG5vdCBpbmNsdWRpbmcgdGhlIHR5cGUpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZSAtIEV4dGVuc2lvbiBuYW1lXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IE5vcm1hbGl6ZWQgZXh0ZW5zaW9uIG5hbWVcbiAgICovXG4gIHN0YXRpYyB0b05vcm1hbGl6ZWRFeHROYW1lIChleHROYW1lKSB7XG4gICAgcmV0dXJuIF8ua2ViYWJDYXNlKGV4dE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gZ2l2ZW4gdGhlIHJvb3QgSUQgb2YgYSBzY2hlbWEgZm9yIGFuIGV4dGVuc2lvbiAoYDxleHRUeXBlPi08bm9ybWFsaXplZEV4dE5hbWU+Lmpzb25gKSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRlbnNpb24gdHlwZSBhbmQgdGhlIF9ub3JtYWxpemVkXyBleHRlbnNpb24gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYUlkIC0gUm9vdCBzY2hlbWEgSURcbiAgICogQHJldHVybnMgeyB7ZXh0VHlwZT86IEV4dGVuc2lvblR5cGUsIG5vcm1hbGl6ZWRFeHROYW1lPzogc3RyaW5nfSB9XG4gICAqL1xuICBzdGF0aWMgZXh0ZW5zaW9uSW5mb0Zyb21Sb290U2NoZW1hSWQgKHNjaGVtYUlkKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHNjaGVtYUlkLm1hdGNoKFNDSEVNQV9JRF9SRUdFWFApO1xuICAgIGlmIChtYXRjaGVzPy5ncm91cHMpIHtcbiAgICAgIGNvbnN0IHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX0gPVxuICAgICAgICAvKiogQHR5cGUgeyB7ZXh0VHlwZTogRXh0ZW5zaW9uVHlwZSwgbm9ybWFsaXplZEV4dE5hbWU6IHN0cmluZ30gfSAqLyAoXG4gICAgICAgICAgbWF0Y2hlcy5ncm91cHNcbiAgICAgICAgKTtcbiAgICAgIHJldHVybiB7ZXh0VHlwZSwgbm9ybWFsaXplZEV4dE5hbWV9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBgQXJnU3BlY2BcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgY2Fub25pY2FsIG5hbWUgb2YgdGhlIGFyZ3VtZW50LiBDb3JyZXNwb25kcyB0byBhIGtleSBpbiBhIHNjaGVtYSdzXG4gICAqIGBwcm9wZXJ0aWVzYCBwcm9wZXJ0eS5cbiAgICogQHRlbXBsYXRlIERcbiAgICogQHBhcmFtIHtBcmdTcGVjT3B0aW9uczxEPn0gW29wdHNdIC0gT3B0aW9uc1xuICAgKiBAcmV0dXJucyB7UmVhZG9ubHk8QXJnU3BlYz59XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlIChuYW1lLCBvcHRzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUobmV3IEFyZ1NwZWMobmFtZSwgb3B0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZyByZXByZXNlbnRhdGlvbiwgdXNlZnVsIGZvciBkZWJ1Z2dpbmdcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICBsZXQgc3RyID0gYFtBcmdTcGVjXSAke3RoaXMubmFtZX0gKCR7dGhpcy5yZWZ9KWA7XG4gICAgaWYgKHRoaXMuZXh0VHlwZSAmJiB0aGlzLmV4dE5hbWUpIHtcbiAgICAgIHN0ciArPSBgIChleHQ6ICR7dGhpcy5leHRUeXBlfS8ke3RoaXMuZXh0TmFtZX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBBcmdTcGVjLmNyZWF0ZX1cbiAqIEB0ZW1wbGF0ZSBEXG4gKiBAdHlwZWRlZiBBcmdTcGVjT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtleHROYW1lXVxuICogQHByb3BlcnR5IHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVzdF1cbiAqIEBwcm9wZXJ0eSB7RH0gW2RlZmF1bHRWYWx1ZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2V4dGVuc2lvbi9tYW5pZmVzdCcpLkV4dGVuc2lvblR5cGV9IEV4dGVuc2lvblR5cGVcbiAqL1xuIl19
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Converts the finalized, flattened schema representation into
3
+ * ArgumentDefinitions for handoff to `argparse`.
4
+ *
5
+ * @throws If schema has not been added to ajv (via `finalizeSchema()`)
6
+ * @returns {import('../cli/args').ArgumentDefinitions} A map of arryas of
7
+ * aliases to `argparse` arguments; empty if no schema found
8
+ */
9
+ export function toParserArgs(): import('../cli/args').ArgumentDefinitions;
10
+ /**
11
+ * <T>
12
+ */
13
+ export type FormatValidator<T> = import('ajv/dist/types').FormatValidator<T>;
14
+ /**
15
+ * A JSON 7 schema with our custom keywords.
16
+ */
17
+ export type AppiumJSONSchema = import('./keywords').AppiumJSONSchemaKeywords & import('json-schema').JSONSchema7;
18
+ export type ArgSpec = import("./arg-spec").ArgSpec<any>;
19
+ //# sourceMappingURL=cli-args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../../../lib/schema/cli-args.js"],"names":[],"mappings":"AAuOA;;;;;;;GAOG;AACH,gCAHa,OAAO,aAAa,EAAE,mBAAmB,CAUrD;;;;iCAIY,OAAO,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC;;;;+BAK3C,OAAO,YAAY,EAAE,wBAAwB,GAAG,OAAO,aAAa,EAAE,WAAW"}
@@ -177,4 +177,4 @@ function toParserArgs() {
177
177
  argSpec
178
178
  }) => subSchemaToArgDef(schema, argSpec)));
179
179
  }
180
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEvY2xpLWFyZ3MuanMiXSwibmFtZXMiOlsiVFlQRU5BTUVTIiwiT2JqZWN0IiwiZnJlZXplIiwiQVJSQVkiLCJPQkpFQ1QiLCJCT09MRUFOIiwiSU5URUdFUiIsIk5VTUJFUiIsIk5VTEwiLCJTVFJJTkciLCJTSE9SVF9BUkdfQ1VUT0ZGIiwiYWxpYXNUb0ZsYWciLCJhcmdTcGVjIiwiYWxpYXMiLCJleHRUeXBlIiwiZXh0TmFtZSIsIm5hbWUiLCJhcmciLCJpc1Nob3J0IiwibGVuZ3RoIiwiXyIsImtlYmFiQ2FzZSIsInNjcmVhbWluZ1NuYWtlQ2FzZSIsImZsb3ciLCJzbmFrZUNhc2UiLCJ0b1VwcGVyIiwiZ2V0U2NoZW1hVmFsaWRhdG9yIiwicmVmIiwic2NoZW1hSWQiLCJjb2VyY2UiLCJpZGVudGl0eSIsInZhbHVlIiwiY29lcmNlZCIsImVycm9ycyIsImlzRW1wdHkiLCJBcmd1bWVudFR5cGVFcnJvciIsIm1ha2VEZXNjcmlwdGlvbiIsInNjaGVtYSIsImFwcGl1bUNsaURlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJhcHBpdW1EZXByZWNhdGVkIiwiZGVzYyIsInN1YlNjaGVtYVRvQXJnRGVmIiwic3ViU2NoZW1hIiwidHlwZSIsImFwcGl1bUNsaUFsaWFzZXMiLCJhcHBpdW1DbGlUcmFuc2Zvcm1lciIsImVudW0iLCJlbnVtVmFsdWVzIiwiYWxpYXNlcyIsIm1hcCIsImFyZ09wdHMiLCJyZXF1aXJlZCIsImhlbHAiLCJhcmdUeXBlRnVuY3Rpb24iLCJhY3Rpb24iLCJjb25zdCIsInRyYW5zZm9ybWVycyIsImpzb24iLCJjc3YiLCJwYXJzZUZsb2F0IiwicGFyc2VJbnQiLCJUeXBlRXJyb3IiLCJtZXRhdmFyIiwiY2hvaWNlcyIsIlN0cmluZyIsInRvUGFyc2VyQXJncyIsImZsYXR0ZW5lZCIsImZpbHRlciIsImFwcGl1bUNsaUlnbm9yZWQiLCJNYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBWUEsTUFBTUEsU0FBUyxHQUFHQyxNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUM5QkMsRUFBQUEsS0FBSyxFQUFFLE9BRHVCO0FBRTlCQyxFQUFBQSxNQUFNLEVBQUUsUUFGc0I7QUFHOUJDLEVBQUFBLE9BQU8sRUFBRSxTQUhxQjtBQUk5QkMsRUFBQUEsT0FBTyxFQUFFLFNBSnFCO0FBSzlCQyxFQUFBQSxNQUFNLEVBQUUsUUFMc0I7QUFNOUJDLEVBQUFBLElBQUksRUFBRSxNQU53QjtBQU85QkMsRUFBQUEsTUFBTSxFQUFFO0FBUHNCLENBQWQsQ0FBbEI7QUFhQSxNQUFNQyxnQkFBZ0IsR0FBRyxDQUF6Qjs7QUFRQSxTQUFTQyxXQUFULENBQXNCQyxPQUF0QixFQUErQkMsS0FBL0IsRUFBc0M7QUFDcEMsUUFBTTtBQUFDQyxJQUFBQSxPQUFEO0FBQVVDLElBQUFBLE9BQVY7QUFBbUJDLElBQUFBO0FBQW5CLE1BQTJCSixPQUFqQztBQUNBLFFBQU1LLEdBQUcsR0FBR0osS0FBSCxhQUFHQSxLQUFILGNBQUdBLEtBQUgsR0FBWUcsSUFBckI7QUFDQSxRQUFNRSxPQUFPLEdBQUdELEdBQUcsQ0FBQ0UsTUFBSixHQUFhVCxnQkFBN0I7O0FBQ0EsTUFBSUksT0FBTyxJQUFJQyxPQUFmLEVBQXdCO0FBQ3RCLFdBQU9HLE9BQU8sR0FDVCxLQUFJSixPQUFRLElBQUdNLGdCQUFFQyxTQUFGLENBQVlOLE9BQVosQ0FBcUIsSUFBR0UsR0FBSSxFQURsQyxHQUVULEtBQUlILE9BQVEsSUFBR00sZ0JBQUVDLFNBQUYsQ0FBWU4sT0FBWixDQUFxQixJQUFHSyxnQkFBRUMsU0FBRixDQUFZSixHQUFaLENBQWlCLEVBRjdEO0FBR0Q7O0FBQ0QsU0FBT0MsT0FBTyxHQUFJLElBQUdELEdBQUksRUFBWCxHQUFnQixLQUFJRyxnQkFBRUMsU0FBRixDQUFZSixHQUFaLENBQWlCLEVBQW5EO0FBQ0Q7O0FBS0QsTUFBTUssa0JBQWtCLEdBQUdGLGdCQUFFRyxJQUFGLENBQU9ILGdCQUFFSSxTQUFULEVBQW9CSixnQkFBRUssT0FBdEIsQ0FBM0I7O0FBYUEsU0FBU0Msa0JBQVQsQ0FBNkI7QUFBQ0MsRUFBQUEsR0FBRyxFQUFFQztBQUFOLENBQTdCLEVBQThDQyxNQUFNLEdBQUdULGdCQUFFVSxRQUF6RCxFQUFtRTtBQUVqRSxTQUFRQyxLQUFELElBQVc7QUFDaEIsVUFBTUMsT0FBTyxHQUFHSCxNQUFNLENBQUNFLEtBQUQsQ0FBdEI7QUFDQSxVQUFNRSxNQUFNLEdBQUcsc0JBQVNELE9BQVQsRUFBa0JKLFFBQWxCLENBQWY7O0FBQ0EsUUFBSVIsZ0JBQUVjLE9BQUYsQ0FBVUQsTUFBVixDQUFKLEVBQXVCO0FBQ3JCLGFBQU9ELE9BQVA7QUFDRDs7QUFDRCxVQUFNLElBQUlHLDJCQUFKLENBQ0osU0FBUyw4QkFBYUYsTUFBYixFQUFxQkYsS0FBckIsRUFBNEI7QUFBQ0gsTUFBQUE7QUFBRCxLQUE1QixDQURMLENBQU47QUFHRCxHQVREO0FBVUQ7O0FBT0QsU0FBU1EsZUFBVCxDQUEwQkMsTUFBMUIsRUFBa0M7QUFDaEMsUUFBTTtBQUFDQyxJQUFBQSxvQkFBRDtBQUF1QkMsSUFBQUEsV0FBVyxHQUFHLEVBQXJDO0FBQXlDQyxJQUFBQTtBQUF6QyxNQUE2REgsTUFBbkU7QUFDQSxNQUFJSSxJQUFJLEdBQUdILG9CQUFILGFBQUdBLG9CQUFILGNBQUdBLG9CQUFILEdBQTJCQyxXQUFuQzs7QUFDQSxNQUFJQyxnQkFBSixFQUFzQjtBQUNwQkMsSUFBQUEsSUFBSSxHQUFJLGdCQUFlQSxJQUFLLEVBQTVCO0FBQ0Q7O0FBQ0QsU0FBT0EsSUFBUDtBQUNEOztBQVNELFNBQVNDLGlCQUFULENBQTRCQyxTQUE1QixFQUF1Qy9CLE9BQXZDLEVBQWdEO0FBQzlDLE1BQUk7QUFDRmdDLElBQUFBLElBREU7QUFFRkMsSUFBQUEsZ0JBRkU7QUFHRkMsSUFBQUEsb0JBSEU7QUFJRkMsSUFBQUEsSUFBSSxFQUFFQztBQUpKLE1BS0FMLFNBTEo7QUFPQSxRQUFNO0FBQUMzQixJQUFBQSxJQUFEO0FBQU9DLElBQUFBO0FBQVAsTUFBY0wsT0FBcEI7QUFFQSxRQUFNcUMsT0FBTyxHQUFHLENBQ2R0QyxXQUFXLENBQUNDLE9BQUQsQ0FERyxFQUVkLEdBQTJCLENBQUNpQyxnQkFBRCxhQUFDQSxnQkFBRCxjQUFDQSxnQkFBRCxHQUFxQixFQUFyQixFQUF5QkssR0FBekIsQ0FBOEJyQyxLQUFELElBQ3RERixXQUFXLENBQUNDLE9BQUQsRUFBVUMsS0FBVixDQURjLENBRmIsQ0FBaEI7QUFRQSxNQUFJc0MsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFFBQVEsRUFBRSxLQURFO0FBRVpDLElBQUFBLElBQUksRUFBRWpCLGVBQWUsQ0FBQ08sU0FBRDtBQUZULEdBQWQ7QUFnQkEsTUFBSVcsZUFBSjs7QUFHQSxVQUFRVixJQUFSO0FBR0UsU0FBSzVDLFNBQVMsQ0FBQ0ssT0FBZjtBQUF3QjtBQUN0QjhDLFFBQUFBLE9BQU8sQ0FBQ0ksTUFBUixHQUFpQixhQUFqQjtBQUNBSixRQUFBQSxPQUFPLENBQUNLLEtBQVIsR0FBZ0IsSUFBaEI7QUFDQTtBQUNEOztBQUVELFNBQUt4RCxTQUFTLENBQUNJLE1BQWY7QUFBdUI7QUFDckJrRCxRQUFBQSxlQUFlLEdBQUdHLDhCQUFhQyxJQUEvQjtBQUNBO0FBQ0Q7O0FBR0QsU0FBSzFELFNBQVMsQ0FBQ0csS0FBZjtBQUFzQjtBQUNwQm1ELFFBQUFBLGVBQWUsR0FBR0csOEJBQWFFLEdBQS9CO0FBQ0E7QUFDRDs7QUFJRCxTQUFLM0QsU0FBUyxDQUFDTyxNQUFmO0FBQXVCO0FBQ3JCK0MsUUFBQUEsZUFBZSxHQUFHNUIsa0JBQWtCLENBQUNkLE9BQUQsRUFBVWdELFVBQVYsQ0FBcEM7QUFDQTtBQUNEOztBQUdELFNBQUs1RCxTQUFTLENBQUNNLE9BQWY7QUFBd0I7QUFDdEJnRCxRQUFBQSxlQUFlLEdBQUc1QixrQkFBa0IsQ0FBQ2QsT0FBRCxFQUFVUSxnQkFBRXlDLFFBQVosQ0FBcEM7QUFDQTtBQUNEOztBQUtELFNBQUs3RCxTQUFTLENBQUNTLE1BQWY7QUFBdUI7QUFDckI2QyxRQUFBQSxlQUFlLEdBQUc1QixrQkFBa0IsQ0FBQ2QsT0FBRCxDQUFwQztBQUNBO0FBQ0Q7O0FBSUQsU0FBS1osU0FBUyxDQUFDUSxJQUFmO0FBRUE7QUFBUztBQUNQLGNBQU0sSUFBSXNELFNBQUosQ0FDSCxvQkFBbUI3QyxHQUFJLFFBQU8yQixJQUFLLCtCQURoQyxDQUFOO0FBR0Q7QUFqREg7O0FBc0RBLE1BQUlBLElBQUksS0FBSzVDLFNBQVMsQ0FBQ0ssT0FBdkIsRUFBZ0M7QUFDOUI4QyxJQUFBQSxPQUFPLENBQUNZLE9BQVIsR0FBa0J6QyxrQkFBa0IsQ0FBQ04sSUFBRCxDQUFwQztBQUNEOztBQU1ELE1BQ0U0QixJQUFJLEtBQUs1QyxTQUFTLENBQUNHLEtBQW5CLElBQ0F5QyxJQUFJLEtBQUs1QyxTQUFTLENBQUNJLE1BRG5CLElBRUEwQyxvQkFIRixFQUlFO0FBQUE7O0FBQ0FRLElBQUFBLGVBQWUsR0FBR2xDLGdCQUFFRyxJQUFGLHFCQUNoQitCLGVBRGdCLCtEQUNHbEMsZ0JBQUVVLFFBREwsRUFFaEIyQiw4QkFBYVgsb0JBQWIsQ0FGZ0IsQ0FBbEI7QUFJRDs7QUFFRCxNQUFJUSxlQUFKLEVBQXFCO0FBQ25CSCxJQUFBQSxPQUFPLENBQUNQLElBQVIsR0FBZVUsZUFBZjtBQUNEOztBQUtELE1BQUlOLFVBQVUsSUFBSSxDQUFDNUIsZ0JBQUVjLE9BQUYsQ0FBVWMsVUFBVixDQUFuQixFQUEwQztBQUN4QyxRQUFJSixJQUFJLEtBQUs1QyxTQUFTLENBQUNTLE1BQXZCLEVBQStCO0FBQzdCMEMsTUFBQUEsT0FBTyxDQUFDYSxPQUFSLEdBQWtCaEIsVUFBVSxDQUFDRSxHQUFYLENBQWVlLE1BQWYsQ0FBbEI7QUFDRCxLQUZELE1BRU87QUFDTCxZQUFNLElBQUlILFNBQUosQ0FDSCwyQkFBMEI3QyxHQUFJLHFEQUQzQixDQUFOO0FBR0Q7QUFDRjs7QUFFRCxTQUFPLENBQUNnQyxPQUFELEVBQVVFLE9BQVYsQ0FBUDtBQUNEOztBQVVNLFNBQVNlLFlBQVQsR0FBeUI7QUFDOUIsUUFBTUMsU0FBUyxHQUFHLDZCQUFnQkMsTUFBaEIsQ0FBdUIsQ0FBQztBQUFDL0IsSUFBQUE7QUFBRCxHQUFELEtBQWMsQ0FBQ0EsTUFBTSxDQUFDZ0MsZ0JBQTdDLENBQWxCO0FBQ0EsU0FBTyxJQUFJQyxHQUFKLENBQ0xsRCxnQkFBRThCLEdBQUYsQ0FBTWlCLFNBQU4sRUFBaUIsQ0FBQztBQUFDOUIsSUFBQUEsTUFBRDtBQUFTekIsSUFBQUE7QUFBVCxHQUFELEtBQ2Y4QixpQkFBaUIsQ0FBQ0wsTUFBRCxFQUFTekIsT0FBVCxDQURuQixDQURLLENBQVA7QUFLRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQge0FyZ3VtZW50VHlwZUVycm9yfSBmcm9tICdhcmdwYXJzZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtmb3JtYXRFcnJvcnMgYXMgZm9ybWF0RXJyb3JzfSBmcm9tICcuLi9jb25maWctZmlsZSc7XG5pbXBvcnQge2ZsYXR0ZW5TY2hlbWEsIHZhbGlkYXRlfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQge3RyYW5zZm9ybWVyc30gZnJvbSAnLi9jbGktdHJhbnNmb3JtZXJzJztcblxuLyoqXG4gKiBUaGlzIG1vZHVsZSBjb25jZXJucyBmdW5jdGlvbnMgd2hpY2ggY29udmVydCBzY2hlbWEgZGVmaW5pdGlvbnMgdG9cbiAqIGBhcmdwYXJzZWAtY29tcGF0aWJsZSBkYXRhIHN0cnVjdHVyZXMsIGZvciBkZXJpdmluZyBDTEkgYXJndW1lbnRzIGZyb20gYVxuICogc2NoZW1hLlxuICovXG5cbi8qKlxuICogTG9va3VwIG9mIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhlIGB0eXBlYCBmaWVsZCBpbiBhIEpTT04gc2NoZW1hLlxuICogQHR5cGUge1JlYWRvbmx5PFJlY29yZDxzdHJpbmcsIGltcG9ydCgnanNvbi1zY2hlbWEnKS5KU09OU2NoZW1hN1R5cGVOYW1lPj59XG4gKi9cbmNvbnN0IFRZUEVOQU1FUyA9IE9iamVjdC5mcmVlemUoe1xuICBBUlJBWTogJ2FycmF5JyxcbiAgT0JKRUNUOiAnb2JqZWN0JyxcbiAgQk9PTEVBTjogJ2Jvb2xlYW4nLFxuICBJTlRFR0VSOiAnaW50ZWdlcicsXG4gIE5VTUJFUjogJ251bWJlcicsXG4gIE5VTEw6ICdudWxsJyxcbiAgU1RSSU5HOiAnc3RyaW5nJyxcbn0pO1xuXG4vKipcbiAqIE9wdGlvbnMgd2l0aCBhbGlhcyBsZW5ndGhzIGxlc3MgdGhhbiB0aGlzIHdpbGwgYmUgY29uc2lkZXJlZCBcInNob3J0XCIgZmxhZ3MuXG4gKi9cbmNvbnN0IFNIT1JUX0FSR19DVVRPRkYgPSAzO1xuXG4vKipcbiAqIENvbnZlcnQgYW4gYWxpYXMgKGBmb29gKSB0byBhIGZsYWcgKGAtLWZvb2ApIG9yIGEgc2hvcnQgZmxhZyAoYC1mYCkuXG4gKiBAcGFyYW0ge0FyZ1NwZWN9IGFyZ1NwZWMgLSB0aGUgYXJndW1lbnQgc3BlY2lmaWNhdGlvblxuICogQHBhcmFtIHtzdHJpbmd9IFthbGlhc10gLSB0aGUgYWxpYXMgdG8gY29udmVydCB0byBhIGZsYWdcbiAqIEByZXR1cm5zIHtzdHJpbmd9IHRoZSBmbGFnXG4gKi9cbmZ1bmN0aW9uIGFsaWFzVG9GbGFnIChhcmdTcGVjLCBhbGlhcykge1xuICBjb25zdCB7ZXh0VHlwZSwgZXh0TmFtZSwgbmFtZX0gPSBhcmdTcGVjO1xuICBjb25zdCBhcmcgPSBhbGlhcyA/PyBuYW1lO1xuICBjb25zdCBpc1Nob3J0ID0gYXJnLmxlbmd0aCA8IFNIT1JUX0FSR19DVVRPRkY7XG4gIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICByZXR1cm4gaXNTaG9ydFxuICAgICAgPyBgLS0ke2V4dFR5cGV9LSR7Xy5rZWJhYkNhc2UoZXh0TmFtZSl9LSR7YXJnfWBcbiAgICAgIDogYC0tJHtleHRUeXBlfS0ke18ua2ViYWJDYXNlKGV4dE5hbWUpfS0ke18ua2ViYWJDYXNlKGFyZyl9YDtcbiAgfVxuICByZXR1cm4gaXNTaG9ydCA/IGAtJHthcmd9YCA6IGAtLSR7Xy5rZWJhYkNhc2UoYXJnKX1gO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIFNDUkVBTUlOR19TTkFLRV9DQVNFXG4gKi9cbmNvbnN0IHNjcmVhbWluZ1NuYWtlQ2FzZSA9IF8uZmxvdyhfLnNuYWtlQ2FzZSwgXy50b1VwcGVyKTtcblxuLyoqXG4gKiBHaXZlbiB1bmlxdWUgcHJvcGVydHkgbmFtZSBgbmFtZWAsIHJldHVybiBhIGZ1bmN0aW9uIHdoaWNoIHZhbGlkYXRlcyBhIHZhbHVlXG4gKiBhZ2FpbnN0IGEgcHJvcGVydHkgd2l0aGluIHRoZSBzY2hlbWEuXG4gKiBAdGVtcGxhdGUgQ29lcmNlZFxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHsodmFsdWU6IHN0cmluZykgPT4gQ29lcmNlZH0gW2NvZXJjZV0gLSBGdW5jdGlvbiB0byBjb2VyY2UgdG8gYSBkaWZmZXJlbnRcbiAqIHByaW1pdGl2ZVxuICogQHRvZG8gU2VlIGlmIHdlIGNhbiByZW1vdmUgYGNvZXJjZWAgYnkgYWxsb3dpbmcgQWp2IHRvIGNvZXJjZSBpbiBpdHNcbiAqIGNvbnN0cnVjdG9yIG9wdGlvbnNcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGdldFNjaGVtYVZhbGlkYXRvciAoe3JlZjogc2NoZW1hSWR9LCBjb2VyY2UgPSBfLmlkZW50aXR5KSB7XG4gIC8qKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgKi9cbiAgcmV0dXJuICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IGNvZXJjZWQgPSBjb2VyY2UodmFsdWUpO1xuICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlKGNvZXJjZWQsIHNjaGVtYUlkKTtcbiAgICBpZiAoXy5pc0VtcHR5KGVycm9ycykpIHtcbiAgICAgIHJldHVybiBjb2VyY2VkO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgQXJndW1lbnRUeXBlRXJyb3IoXG4gICAgICAnXFxuXFxuJyArIGZvcm1hdEVycm9ycyhlcnJvcnMsIHZhbHVlLCB7c2NoZW1hSWR9KSxcbiAgICApO1xuICB9O1xufVxuXG4vKipcbiAqIERldGVybWluZSB0aGUgZGVzY3JpcHRpb24gZm9yIGRpc3BsYXkgb24gdGhlIENMSSwgZ2l2ZW4gdGhlIHNjaGVtYS5cbiAqIEBwYXJhbSB7QXBwaXVtSlNPTlNjaGVtYX0gc2NoZW1hXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBtYWtlRGVzY3JpcHRpb24gKHNjaGVtYSkge1xuICBjb25zdCB7YXBwaXVtQ2xpRGVzY3JpcHRpb24sIGRlc2NyaXB0aW9uID0gJycsIGFwcGl1bURlcHJlY2F0ZWR9ID0gc2NoZW1hO1xuICBsZXQgZGVzYyA9IGFwcGl1bUNsaURlc2NyaXB0aW9uID8/IGRlc2NyaXB0aW9uO1xuICBpZiAoYXBwaXVtRGVwcmVjYXRlZCkge1xuICAgIGRlc2MgPSBgW0RFUFJFQ0FURURdICR7ZGVzY31gO1xuICB9XG4gIHJldHVybiBkZXNjO1xufVxuXG4vKipcbiAqIEdpdmVuIGFyZyBgbmFtZWAsIGEgSlNPTiBzY2hlbWEgYHN1YlNjaGVtYWAsIGFuZCBvcHRpb25zLCByZXR1cm4gYW4gYXJndW1lbnQgZGVmaW5pdGlvblxuICogYXMgdW5kZXJzdG9vZCBieSBgYXJncGFyc2VgLlxuICogQHBhcmFtIHtBcHBpdW1KU09OU2NoZW1hfSBzdWJTY2hlbWEgLSBKU09OIHNjaGVtYSBmb3IgdGhlIG9wdGlvblxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gQXJndW1lbnQgc3BlYyB0dXBsZVxuICogQHJldHVybnMge1tzdHJpbmdbXSwgaW1wb3J0KCdhcmdwYXJzZScpLkFyZ3VtZW50T3B0aW9uc119IFR1cGxlIG9mIGZsYWcgYW5kIG9wdGlvbnNcbiAqL1xuZnVuY3Rpb24gc3ViU2NoZW1hVG9BcmdEZWYgKHN1YlNjaGVtYSwgYXJnU3BlYykge1xuICBsZXQge1xuICAgIHR5cGUsXG4gICAgYXBwaXVtQ2xpQWxpYXNlcyxcbiAgICBhcHBpdW1DbGlUcmFuc2Zvcm1lcixcbiAgICBlbnVtOiBlbnVtVmFsdWVzLFxuICB9ID0gc3ViU2NoZW1hO1xuXG4gIGNvbnN0IHtuYW1lLCBhcmd9ID0gYXJnU3BlYztcblxuICBjb25zdCBhbGlhc2VzID0gW1xuICAgIGFsaWFzVG9GbGFnKGFyZ1NwZWMpLFxuICAgIC4uLi8qKiBAdHlwZSB7c3RyaW5nW119ICovIChhcHBpdW1DbGlBbGlhc2VzID8/IFtdKS5tYXAoKGFsaWFzKSA9PlxuICAgICAgYWxpYXNUb0ZsYWcoYXJnU3BlYywgYWxpYXMpLFxuICAgICksXG4gIF07XG5cbiAgLyoqIEB0eXBlIHtpbXBvcnQoJ2FyZ3BhcnNlJykuQXJndW1lbnRPcHRpb25zfSAqL1xuICBsZXQgYXJnT3B0cyA9IHtcbiAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgaGVscDogbWFrZURlc2NyaXB0aW9uKHN1YlNjaGVtYSlcbiAgfTtcblxuICAvKipcbiAgICogR2VuZXJhbGx5IHdlIHdpbGwgcHJvdmlkZSBhIGB0eXBlYCB0byBgYXJncGFyc2VgIGFzIGEgZnVuY3Rpb24gd2hpY2hcbiAgICogdmFsaWRhdGVzIHVzaW5nIGFqdiAod2hpY2ggaXMgbXVjaCBtb3JlIGZ1bGwtZmVhdHVyZWQgdGhhbiB3aGF0IGBhcmdwYXJzZWBcbiAgICogY2FuIG9mZmVyKS4gVGhlIGV4Y2VwdGlvbiBpcyBgYm9vbGVhbmAtdHlwZSBvcHRpb25zLCB3aGljaCBoYXZlIG5vXG4gICAqIGBhcmdUeXBlYC5cbiAgICpcbiAgICogTm90IHN1cmUgaWYgdGhpcyB0eXBlIGlzIGNvcnJlY3QsIGJ1dCBpdCdzIG5vdCBkb2luZyB3aGF0IEkgd2FudC4gIEkgd2FudFxuICAgKiB0byBzYXkgXCJ0aGlzIGlzIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBzb21ldGhpbmcgb2YgdHlwZSBgVGAgd2hlcmUgYFRgIGlzXG4gICAqIG5ldmVyIGEgYFByb21pc2VgXCIuICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgc3luYy5cbiAgICogQHR5cGUgeygodmFsdWU6IHN0cmluZykgPT4gdW5rbm93bil8dW5kZWZpbmVkfVxuICAgKi9cbiAgbGV0IGFyZ1R5cGVGdW5jdGlvbjtcblxuICAvLyBoYW5kbGUgc3BlY2lhbCBjYXNlcyBmb3IgdmFyaW91cyB0eXBlc1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAvLyBib29sZWFucyBkbyBub3QgaGF2ZSBhIHR5cGUgcGVyIGBBcmd1bWVudE9wdGlvbnNgLCBqdXN0IGFuIFwiYWN0aW9uXCJcbiAgICAvLyBOT1RFOiBkdWUgdG8gbGltaXRhdGlvbnMgb2YgYGFyZ3BhcnNlYCwgd2UgY2Fubm90IHByb3ZpZGUgZmFuY3kgaGVscCB0ZXh0LCBhbmQgbXVzdCByZWx5IG9uIGl0cyBpbnRlcm5hbCBlcnJvciBtZXNzYWdpbmcuXG4gICAgY2FzZSBUWVBFTkFNRVMuQk9PTEVBTjoge1xuICAgICAgYXJnT3B0cy5hY3Rpb24gPSAnc3RvcmVfY29uc3QnO1xuICAgICAgYXJnT3B0cy5jb25zdCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRZUEVOQU1FUy5PQkpFQ1Q6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IHRyYW5zZm9ybWVycy5qc29uO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gYXJyYXlzIGFyZSB0cmVhdGVkIGFzIENTVnMsIGJlY2F1c2UgYGFyZ3BhcnNlYCBkb2Vzbid0IGhhbmRsZSBhcnJheSBkYXRhLlxuICAgIGNhc2UgVFlQRU5BTUVTLkFSUkFZOiB7XG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPSB0cmFuc2Zvcm1lcnMuY3N2O1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gXCJudW1iZXJcIiB0eXBlIGlzIGNvZXJjZWQgdG8gZmxvYXQuIGBhcmdwYXJzZWAgZG9lcyB0aGlzIGZvciB1cyBpZiB3ZSB1c2UgYGZsb2F0YCB0eXBlLCBidXRcbiAgICAvLyB3ZSBkb24ndC5cbiAgICBjYXNlIFRZUEVOQU1FUy5OVU1CRVI6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IGdldFNjaGVtYVZhbGlkYXRvcihhcmdTcGVjLCBwYXJzZUZsb2F0KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFwiaW50ZWdlclwiIGlzIGNvZXJjZWQgdG8gYW4gLi4gaW50ZWdlci4gIGFnYWluLCBgYXJncGFyc2VgIHdvdWxkIGRvIHRoaXMgZm9yIHVzIGlmIHdlIHVzZWQgYGludGAuXG4gICAgY2FzZSBUWVBFTkFNRVMuSU5URUdFUjoge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gZ2V0U2NoZW1hVmFsaWRhdG9yKGFyZ1NwZWMsIF8ucGFyc2VJbnQpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gc3RyaW5ncyAobGlrZSBudW1iZXIgYW5kIGludGVnZXIpIGFyZSBzdWJqZWN0IHRvIGZ1cnRoZXIgdmFsaWRhdGlvblxuICAgIC8vIChlLmcuLCBtdXN0IHNhdGlzZnkgYSBtYXNrIG9yIHJlZ2V4IG9yIGV2ZW4gc29tZSBjdXN0b20gdmFsaWRhdGlvblxuICAgIC8vIGZ1bmN0aW9uKVxuICAgIGNhc2UgVFlQRU5BTUVTLlNUUklORzoge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gZ2V0U2NoZW1hVmFsaWRhdG9yKGFyZ1NwZWMpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogdGhlcmUgbWF5IGJlIHNvbWUgd2F5IHRvIHJlc3RyaWN0IHRoaXMgYXQgdGhlIEFqdiBsZXZlbCAtLVxuICAgIC8vIHRoYXQgbWF5IGludm9sdmUgcGF0Y2hpbmcgdGhlIG1ldGFzY2hlbWEuXG4gICAgY2FzZSBUWVBFTkFNRVMuTlVMTDpcbiAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFNjaGVtYSBwcm9wZXJ0eSBcIiR7YXJnfVwiOiBcXGAke3R5cGV9XFxgIHR5cGUgdW5rbm93biBvciBkaXNhbGxvd2VkYCxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gbWV0YXZhciBpcyB1c2VkIGluIGhlbHAgdGV4dC4gYGJvb2xlYW5gIGNhbm5vdCBoYXZlIGEgbWV0YXZhci0taXQgaXMgbm90XG4gIC8vIGRpc3BsYXllZC0tYW5kIGBhcmdwYXJzZWAgdGhyb3dzIGlmIHlvdSBnaXZlIGl0IG9uZS5cbiAgaWYgKHR5cGUgIT09IFRZUEVOQU1FUy5CT09MRUFOKSB7XG4gICAgYXJnT3B0cy5tZXRhdmFyID0gc2NyZWFtaW5nU25ha2VDYXNlKG5hbWUpO1xuICB9XG5cbiAgLy8gdGhlIHZhbGlkaXR5IG9mIFwiYXBwaXVtQ2xpVHJhbnNmb3JtZXJcIiBzaG91bGQgYWxyZWFkeSBoYXZlIGJlZW4gZGV0ZXJtaW5lZFxuICAvLyBieSBhanYgZHVyaW5nIHNjaGVtYSB2YWxpZGF0aW9uIGluIGBmaW5hbGl6ZVNjaGVtYSgpYC4gdGhlIGBhcnJheWAgJlxuICAvLyBgb2JqZWN0YCB0eXBlcyBoYXZlIGFscmVhZHkgYWRkZWQgYSBmb3JtYXR0ZXIgKHNlZSBhYm92ZSwgc28gd2UgZG9uJ3QgZG8gaXRcbiAgLy8gdHdpY2UpLlxuICBpZiAoXG4gICAgdHlwZSAhPT0gVFlQRU5BTUVTLkFSUkFZICYmXG4gICAgdHlwZSAhPT0gVFlQRU5BTUVTLk9CSkVDVCAmJlxuICAgIGFwcGl1bUNsaVRyYW5zZm9ybWVyXG4gICkge1xuICAgIGFyZ1R5cGVGdW5jdGlvbiA9IF8uZmxvdyhcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA/PyBfLmlkZW50aXR5LFxuICAgICAgdHJhbnNmb3JtZXJzW2FwcGl1bUNsaVRyYW5zZm9ybWVyXSxcbiAgICApO1xuICB9XG5cbiAgaWYgKGFyZ1R5cGVGdW5jdGlvbikge1xuICAgIGFyZ09wdHMudHlwZSA9IGFyZ1R5cGVGdW5jdGlvbjtcbiAgfVxuXG4gIC8vIGNvbnZlcnQgSlNPTiBzY2hlbWEgYGVudW1gIHRvIGBjaG9pY2VzYC4gYGVudW1gIGNhbiBjb250YWluIGFueSBKU09OIHR5cGUsIGJ1dCBgYXJncGFyc2VgXG4gIC8vIGlzIGxpbWl0ZWQgdG8gYSBzaW5nbGUgdHlwZSBwZXIgYXJnIChJIHRoaW5rKS4gIHNvIGxldCdzIG1ha2UgZXZlcnl0aGluZyBhIHN0cmluZy5cbiAgLy8gYW5kIG1pZ2h0IGFzIHdlbGwgX3JlcXVpcmVfIHRoZSBgdHlwZTogc3RyaW5nYCB3aGlsZSB3ZSdyZSBhdCBpdC5cbiAgaWYgKGVudW1WYWx1ZXMgJiYgIV8uaXNFbXB0eShlbnVtVmFsdWVzKSkge1xuICAgIGlmICh0eXBlID09PSBUWVBFTkFNRVMuU1RSSU5HKSB7XG4gICAgICBhcmdPcHRzLmNob2ljZXMgPSBlbnVtVmFsdWVzLm1hcChTdHJpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBgUHJvYmxlbSB3aXRoIHNjaGVtYSBmb3IgJHthcmd9OyBcXGBlbnVtXFxgIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBcXGB0eXBlOiAnc3RyaW5nJ1xcYGAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBbYWxpYXNlcywgYXJnT3B0c107XG59XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGZpbmFsaXplZCwgZmxhdHRlbmVkIHNjaGVtYSByZXByZXNlbnRhdGlvbiBpbnRvXG4gKiBBcmd1bWVudERlZmluaXRpb25zIGZvciBoYW5kb2ZmIHRvIGBhcmdwYXJzZWAuXG4gKlxuICogQHRocm93cyBJZiBzY2hlbWEgaGFzIG5vdCBiZWVuIGFkZGVkIHRvIGFqdiAodmlhIGBmaW5hbGl6ZVNjaGVtYSgpYClcbiAqIEByZXR1cm5zIHtpbXBvcnQoJy4uL2NsaS9hcmdzJykuQXJndW1lbnREZWZpbml0aW9uc30gQSBtYXAgb2YgYXJyeWFzIG9mXG4gKiBhbGlhc2VzIHRvIGBhcmdwYXJzZWAgYXJndW1lbnRzOyBlbXB0eSBpZiBubyBzY2hlbWEgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUGFyc2VyQXJncyAoKSB7XG4gIGNvbnN0IGZsYXR0ZW5lZCA9IGZsYXR0ZW5TY2hlbWEoKS5maWx0ZXIoKHtzY2hlbWF9KSA9PiAhc2NoZW1hLmFwcGl1bUNsaUlnbm9yZWQpO1xuICByZXR1cm4gbmV3IE1hcChcbiAgICBfLm1hcChmbGF0dGVuZWQsICh7c2NoZW1hLCBhcmdTcGVjfSkgPT5cbiAgICAgIHN1YlNjaGVtYVRvQXJnRGVmKHNjaGVtYSwgYXJnU3BlYyksXG4gICAgKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnYWp2L2Rpc3QvdHlwZXMnKS5Gb3JtYXRWYWxpZGF0b3I8VD59IEZvcm1hdFZhbGlkYXRvcjxUPlxuICovXG5cbi8qKlxuICogQSBKU09OIDcgc2NoZW1hIHdpdGggb3VyIGN1c3RvbSBrZXl3b3Jkcy5cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4va2V5d29yZHMnKS5BcHBpdW1KU09OU2NoZW1hS2V5d29yZHMgJiBpbXBvcnQoJ2pzb24tc2NoZW1hJykuSlNPTlNjaGVtYTd9IEFwcGl1bUpTT05TY2hlbWFcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vYXJnLXNwZWMnKS5BcmdTcGVjfSBBcmdTcGVjXG4gKi9cbiJdfQ==
180
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEvY2xpLWFyZ3MuanMiXSwibmFtZXMiOlsiVFlQRU5BTUVTIiwiT2JqZWN0IiwiZnJlZXplIiwiQVJSQVkiLCJPQkpFQ1QiLCJCT09MRUFOIiwiSU5URUdFUiIsIk5VTUJFUiIsIk5VTEwiLCJTVFJJTkciLCJTSE9SVF9BUkdfQ1VUT0ZGIiwiYWxpYXNUb0ZsYWciLCJhcmdTcGVjIiwiYWxpYXMiLCJleHRUeXBlIiwiZXh0TmFtZSIsIm5hbWUiLCJhcmciLCJpc1Nob3J0IiwibGVuZ3RoIiwiXyIsImtlYmFiQ2FzZSIsInNjcmVhbWluZ1NuYWtlQ2FzZSIsImZsb3ciLCJzbmFrZUNhc2UiLCJ0b1VwcGVyIiwiZ2V0U2NoZW1hVmFsaWRhdG9yIiwicmVmIiwic2NoZW1hSWQiLCJjb2VyY2UiLCJpZGVudGl0eSIsInZhbHVlIiwiY29lcmNlZCIsImVycm9ycyIsImlzRW1wdHkiLCJBcmd1bWVudFR5cGVFcnJvciIsIm1ha2VEZXNjcmlwdGlvbiIsInNjaGVtYSIsImFwcGl1bUNsaURlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJhcHBpdW1EZXByZWNhdGVkIiwiZGVzYyIsInN1YlNjaGVtYVRvQXJnRGVmIiwic3ViU2NoZW1hIiwidHlwZSIsImFwcGl1bUNsaUFsaWFzZXMiLCJhcHBpdW1DbGlUcmFuc2Zvcm1lciIsImVudW0iLCJlbnVtVmFsdWVzIiwiYWxpYXNlcyIsIm1hcCIsImFyZ09wdHMiLCJyZXF1aXJlZCIsImhlbHAiLCJhcmdUeXBlRnVuY3Rpb24iLCJhY3Rpb24iLCJjb25zdCIsInRyYW5zZm9ybWVycyIsImpzb24iLCJjc3YiLCJwYXJzZUZsb2F0IiwicGFyc2VJbnQiLCJUeXBlRXJyb3IiLCJtZXRhdmFyIiwiY2hvaWNlcyIsIlN0cmluZyIsInRvUGFyc2VyQXJncyIsImZsYXR0ZW5lZCIsImZpbHRlciIsImFwcGl1bUNsaUlnbm9yZWQiLCJNYXAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQ0E7O0FB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QUFHLDZCQUFnQkMsTUFBaEIsQ0FBdUIsQ0FBQztBQUFDL0IsSUFBQUE7QUFBRCxHQUFELEtBQWMsQ0FBQ0EsTUFBTSxDQUFDZ0MsZ0JBQTdDLENBQWxCO0FBQ0EsU0FBTyxJQUFJQyxHQUFKLENBQ0xsRCxnQkFBRThCLEdBQUYsQ0FBTWlCLFNBQU4sRUFBaUIsQ0FBQztBQUFDOUIsSUFBQUEsTUFBRDtBQUFTekIsSUFBQUE7QUFBVCxHQUFELEtBQ2Y4QixpQkFBaUIsQ0FBQ0wsTUFBRCxFQUFTekIsT0FBVCxDQURuQixDQURLLENBQVA7QUFLRCIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHtBcmd1bWVudFR5cGVFcnJvcn0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Zm9ybWF0RXJyb3JzIGFzIGZvcm1hdEVycm9yc30gZnJvbSAnLi4vY29uZmlnLWZpbGUnO1xuaW1wb3J0IHtmbGF0dGVuU2NoZW1hLCB2YWxpZGF0ZX0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHt0cmFuc2Zvcm1lcnN9IGZyb20gJy4vY2xpLXRyYW5zZm9ybWVycyc7XG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29uY2VybnMgZnVuY3Rpb25zIHdoaWNoIGNvbnZlcnQgc2NoZW1hIGRlZmluaXRpb25zIHRvXG4gKiBgYXJncGFyc2VgLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzLCBmb3IgZGVyaXZpbmcgQ0xJIGFyZ3VtZW50cyBmcm9tIGFcbiAqIHNjaGVtYS5cbiAqL1xuXG4vKipcbiAqIExvb2t1cCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBgdHlwZWAgZmllbGQgaW4gYSBKU09OIHNjaGVtYS5cbiAqIEB0eXBlIHtSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoJ2pzb24tc2NoZW1hJykuSlNPTlNjaGVtYTdUeXBlTmFtZT4+fVxuICovXG5jb25zdCBUWVBFTkFNRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgQVJSQVk6ICdhcnJheScsXG4gIE9CSkVDVDogJ29iamVjdCcsXG4gIEJPT0xFQU46ICdib29sZWFuJyxcbiAgSU5URUdFUjogJ2ludGVnZXInLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBOVUxMOiAnbnVsbCcsXG4gIFNUUklORzogJ3N0cmluZycsXG59KTtcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggYWxpYXMgbGVuZ3RocyBsZXNzIHRoYW4gdGhpcyB3aWxsIGJlIGNvbnNpZGVyZWQgXCJzaG9ydFwiIGZsYWdzLlxuICovXG5jb25zdCBTSE9SVF9BUkdfQ1VUT0ZGID0gMztcblxuLyoqXG4gKiBDb252ZXJ0IGFuIGFsaWFzIChgZm9vYCkgdG8gYSBmbGFnIChgLS1mb29gKSBvciBhIHNob3J0IGZsYWcgKGAtZmApLlxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gdGhlIGFyZ3VtZW50IHNwZWNpZmljYXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYWxpYXNdIC0gdGhlIGFsaWFzIHRvIGNvbnZlcnQgdG8gYSBmbGFnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZmxhZ1xuICovXG5mdW5jdGlvbiBhbGlhc1RvRmxhZyAoYXJnU3BlYywgYWxpYXMpIHtcbiAgY29uc3Qge2V4dFR5cGUsIGV4dE5hbWUsIG5hbWV9ID0gYXJnU3BlYztcbiAgY29uc3QgYXJnID0gYWxpYXMgPz8gbmFtZTtcbiAgY29uc3QgaXNTaG9ydCA9IGFyZy5sZW5ndGggPCBTSE9SVF9BUkdfQ1VUT0ZGO1xuICBpZiAoZXh0VHlwZSAmJiBleHROYW1lKSB7XG4gICAgcmV0dXJuIGlzU2hvcnRcbiAgICAgID8gYC0tJHtleHRUeXBlfS0ke18ua2ViYWJDYXNlKGV4dE5hbWUpfS0ke2FyZ31gXG4gICAgICA6IGAtLSR7ZXh0VHlwZX0tJHtfLmtlYmFiQ2FzZShleHROYW1lKX0tJHtfLmtlYmFiQ2FzZShhcmcpfWA7XG4gIH1cbiAgcmV0dXJuIGlzU2hvcnQgPyBgLSR7YXJnfWAgOiBgLS0ke18ua2ViYWJDYXNlKGFyZyl9YDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyB0byBTQ1JFQU1JTkdfU05BS0VfQ0FTRVxuICovXG5jb25zdCBzY3JlYW1pbmdTbmFrZUNhc2UgPSBfLmZsb3coXy5zbmFrZUNhc2UsIF8udG9VcHBlcik7XG5cbi8qKlxuICogR2l2ZW4gdW5pcXVlIHByb3BlcnR5IG5hbWUgYG5hbWVgLCByZXR1cm4gYSBmdW5jdGlvbiB3aGljaCB2YWxpZGF0ZXMgYSB2YWx1ZVxuICogYWdhaW5zdCBhIHByb3BlcnR5IHdpdGhpbiB0aGUgc2NoZW1hLlxuICogQHRlbXBsYXRlIENvZXJjZWRcbiAqIEBwYXJhbSB7QXJnU3BlY30gYXJnU3BlYyAtIEFyZ3VtZW50IG5hbWVcbiAqIEBwYXJhbSB7KHZhbHVlOiBzdHJpbmcpID0+IENvZXJjZWR9IFtjb2VyY2VdIC0gRnVuY3Rpb24gdG8gY29lcmNlIHRvIGEgZGlmZmVyZW50XG4gKiBwcmltaXRpdmVcbiAqIEB0b2RvIFNlZSBpZiB3ZSBjYW4gcmVtb3ZlIGBjb2VyY2VgIGJ5IGFsbG93aW5nIEFqdiB0byBjb2VyY2UgaW4gaXRzXG4gKiBjb25zdHJ1Y3RvciBvcHRpb25zXG4gKiBAcmV0dXJuc1xuICovXG5mdW5jdGlvbiBnZXRTY2hlbWFWYWxpZGF0b3IgKHtyZWY6IHNjaGVtYUlkfSwgY29lcmNlID0gXy5pZGVudGl0eSkge1xuICAvKiogQHBhcmFtIHtzdHJpbmd9IHZhbHVlICovXG4gIHJldHVybiAodmFsdWUpID0+IHtcbiAgICBjb25zdCBjb2VyY2VkID0gY29lcmNlKHZhbHVlKTtcbiAgICBjb25zdCBlcnJvcnMgPSB2YWxpZGF0ZShjb2VyY2VkLCBzY2hlbWFJZCk7XG4gICAgaWYgKF8uaXNFbXB0eShlcnJvcnMpKSB7XG4gICAgICByZXR1cm4gY29lcmNlZDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEFyZ3VtZW50VHlwZUVycm9yKFxuICAgICAgJ1xcblxcbicgKyBmb3JtYXRFcnJvcnMoZXJyb3JzLCB2YWx1ZSwge3NjaGVtYUlkfSksXG4gICAgKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmUgdGhlIGRlc2NyaXB0aW9uIGZvciBkaXNwbGF5IG9uIHRoZSBDTEksIGdpdmVuIHRoZSBzY2hlbWEuXG4gKiBAcGFyYW0ge0FwcGl1bUpTT05TY2hlbWF9IHNjaGVtYVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gbWFrZURlc2NyaXB0aW9uIChzY2hlbWEpIHtcbiAgY29uc3Qge2FwcGl1bUNsaURlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbiA9ICcnLCBhcHBpdW1EZXByZWNhdGVkfSA9IHNjaGVtYTtcbiAgbGV0IGRlc2MgPSBhcHBpdW1DbGlEZXNjcmlwdGlvbiA/PyBkZXNjcmlwdGlvbjtcbiAgaWYgKGFwcGl1bURlcHJlY2F0ZWQpIHtcbiAgICBkZXNjID0gYFtERVBSRUNBVEVEXSAke2Rlc2N9YDtcbiAgfVxuICByZXR1cm4gZGVzYztcbn1cblxuLyoqXG4gKiBHaXZlbiBhcmcgYG5hbWVgLCBhIEpTT04gc2NoZW1hIGBzdWJTY2hlbWFgLCBhbmQgb3B0aW9ucywgcmV0dXJuIGFuIGFyZ3VtZW50IGRlZmluaXRpb25cbiAqIGFzIHVuZGVyc3Rvb2QgYnkgYGFyZ3BhcnNlYC5cbiAqIEBwYXJhbSB7QXBwaXVtSlNPTlNjaGVtYX0gc3ViU2NoZW1hIC0gSlNPTiBzY2hlbWEgZm9yIHRoZSBvcHRpb25cbiAqIEBwYXJhbSB7QXJnU3BlY30gYXJnU3BlYyAtIEFyZ3VtZW50IHNwZWMgdHVwbGVcbiAqIEByZXR1cm5zIHtbc3RyaW5nW10sIGltcG9ydCgnYXJncGFyc2UnKS5Bcmd1bWVudE9wdGlvbnNdfSBUdXBsZSBvZiBmbGFnIGFuZCBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIHN1YlNjaGVtYVRvQXJnRGVmIChzdWJTY2hlbWEsIGFyZ1NwZWMpIHtcbiAgbGV0IHtcbiAgICB0eXBlLFxuICAgIGFwcGl1bUNsaUFsaWFzZXMsXG4gICAgYXBwaXVtQ2xpVHJhbnNmb3JtZXIsXG4gICAgZW51bTogZW51bVZhbHVlcyxcbiAgfSA9IHN1YlNjaGVtYTtcblxuICBjb25zdCB7bmFtZSwgYXJnfSA9IGFyZ1NwZWM7XG5cbiAgY29uc3QgYWxpYXNlcyA9IFtcbiAgICBhbGlhc1RvRmxhZyhhcmdTcGVjKSxcbiAgICAuLi4vKiogQHR5cGUge3N0cmluZ1tdfSAqLyAoYXBwaXVtQ2xpQWxpYXNlcyA/PyBbXSkubWFwKChhbGlhcykgPT5cbiAgICAgIGFsaWFzVG9GbGFnKGFyZ1NwZWMsIGFsaWFzKSxcbiAgICApLFxuICBdO1xuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KCdhcmdwYXJzZScpLkFyZ3VtZW50T3B0aW9uc30gKi9cbiAgbGV0IGFyZ09wdHMgPSB7XG4gICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgIGhlbHA6IG1ha2VEZXNjcmlwdGlvbihzdWJTY2hlbWEpXG4gIH07XG5cbiAgLyoqXG4gICAqIEdlbmVyYWxseSB3ZSB3aWxsIHByb3ZpZGUgYSBgdHlwZWAgdG8gYGFyZ3BhcnNlYCBhcyBhIGZ1bmN0aW9uIHdoaWNoXG4gICAqIHZhbGlkYXRlcyB1c2luZyBhanYgKHdoaWNoIGlzIG11Y2ggbW9yZSBmdWxsLWZlYXR1cmVkIHRoYW4gd2hhdCBgYXJncGFyc2VgXG4gICAqIGNhbiBvZmZlcikuIFRoZSBleGNlcHRpb24gaXMgYGJvb2xlYW5gLXR5cGUgb3B0aW9ucywgd2hpY2ggaGF2ZSBub1xuICAgKiBgYXJnVHlwZWAuXG4gICAqXG4gICAqIE5vdCBzdXJlIGlmIHRoaXMgdHlwZSBpcyBjb3JyZWN0LCBidXQgaXQncyBub3QgZG9pbmcgd2hhdCBJIHdhbnQuICBJIHdhbnRcbiAgICogdG8gc2F5IFwidGhpcyBpcyBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgc29tZXRoaW5nIG9mIHR5cGUgYFRgIHdoZXJlIGBUYCBpc1xuICAgKiBuZXZlciBhIGBQcm9taXNlYFwiLiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIHN5bmMuXG4gICAqIEB0eXBlIHsoKHZhbHVlOiBzdHJpbmcpID0+IHVua25vd24pfHVuZGVmaW5lZH1cbiAgICovXG4gIGxldCBhcmdUeXBlRnVuY3Rpb247XG5cbiAgLy8gaGFuZGxlIHNwZWNpYWwgY2FzZXMgZm9yIHZhcmlvdXMgdHlwZXNcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgLy8gYm9vbGVhbnMgZG8gbm90IGhhdmUgYSB0eXBlIHBlciBgQXJndW1lbnRPcHRpb25zYCwganVzdCBhbiBcImFjdGlvblwiXG4gICAgLy8gTk9URTogZHVlIHRvIGxpbWl0YXRpb25zIG9mIGBhcmdwYXJzZWAsIHdlIGNhbm5vdCBwcm92aWRlIGZhbmN5IGhlbHAgdGV4dCwgYW5kIG11c3QgcmVseSBvbiBpdHMgaW50ZXJuYWwgZXJyb3IgbWVzc2FnaW5nLlxuICAgIGNhc2UgVFlQRU5BTUVTLkJPT0xFQU46IHtcbiAgICAgIGFyZ09wdHMuYWN0aW9uID0gJ3N0b3JlX2NvbnN0JztcbiAgICAgIGFyZ09wdHMuY29uc3QgPSB0cnVlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSBUWVBFTkFNRVMuT0JKRUNUOiB7XG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPSB0cmFuc2Zvcm1lcnMuanNvbjtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIGFycmF5cyBhcmUgdHJlYXRlZCBhcyBDU1ZzLCBiZWNhdXNlIGBhcmdwYXJzZWAgZG9lc24ndCBoYW5kbGUgYXJyYXkgZGF0YS5cbiAgICBjYXNlIFRZUEVOQU1FUy5BUlJBWToge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gdHJhbnNmb3JtZXJzLmNzdjtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFwibnVtYmVyXCIgdHlwZSBpcyBjb2VyY2VkIHRvIGZsb2F0LiBgYXJncGFyc2VgIGRvZXMgdGhpcyBmb3IgdXMgaWYgd2UgdXNlIGBmbG9hdGAgdHlwZSwgYnV0XG4gICAgLy8gd2UgZG9uJ3QuXG4gICAgY2FzZSBUWVBFTkFNRVMuTlVNQkVSOiB7XG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPSBnZXRTY2hlbWFWYWxpZGF0b3IoYXJnU3BlYywgcGFyc2VGbG9hdCk7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvLyBcImludGVnZXJcIiBpcyBjb2VyY2VkIHRvIGFuIC4uIGludGVnZXIuICBhZ2FpbiwgYGFyZ3BhcnNlYCB3b3VsZCBkbyB0aGlzIGZvciB1cyBpZiB3ZSB1c2VkIGBpbnRgLlxuICAgIGNhc2UgVFlQRU5BTUVTLklOVEVHRVI6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IGdldFNjaGVtYVZhbGlkYXRvcihhcmdTcGVjLCBfLnBhcnNlSW50KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIHN0cmluZ3MgKGxpa2UgbnVtYmVyIGFuZCBpbnRlZ2VyKSBhcmUgc3ViamVjdCB0byBmdXJ0aGVyIHZhbGlkYXRpb25cbiAgICAvLyAoZS5nLiwgbXVzdCBzYXRpc2Z5IGEgbWFzayBvciByZWdleCBvciBldmVuIHNvbWUgY3VzdG9tIHZhbGlkYXRpb25cbiAgICAvLyBmdW5jdGlvbilcbiAgICBjYXNlIFRZUEVOQU1FUy5TVFJJTkc6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IGdldFNjaGVtYVZhbGlkYXRvcihhcmdTcGVjKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRPRE86IHRoZXJlIG1heSBiZSBzb21lIHdheSB0byByZXN0cmljdCB0aGlzIGF0IHRoZSBBanYgbGV2ZWwgLS1cbiAgICAvLyB0aGF0IG1heSBpbnZvbHZlIHBhdGNoaW5nIHRoZSBtZXRhc2NoZW1hLlxuICAgIGNhc2UgVFlQRU5BTUVTLk5VTEw6XG4gICAgLy8gZmFsbHMgdGhyb3VnaFxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBTY2hlbWEgcHJvcGVydHkgXCIke2FyZ31cIjogXFxgJHt0eXBlfVxcYCB0eXBlIHVua25vd24gb3IgZGlzYWxsb3dlZGAsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIG1ldGF2YXIgaXMgdXNlZCBpbiBoZWxwIHRleHQuIGBib29sZWFuYCBjYW5ub3QgaGF2ZSBhIG1ldGF2YXItLWl0IGlzIG5vdFxuICAvLyBkaXNwbGF5ZWQtLWFuZCBgYXJncGFyc2VgIHRocm93cyBpZiB5b3UgZ2l2ZSBpdCBvbmUuXG4gIGlmICh0eXBlICE9PSBUWVBFTkFNRVMuQk9PTEVBTikge1xuICAgIGFyZ09wdHMubWV0YXZhciA9IHNjcmVhbWluZ1NuYWtlQ2FzZShuYW1lKTtcbiAgfVxuXG4gIC8vIHRoZSB2YWxpZGl0eSBvZiBcImFwcGl1bUNsaVRyYW5zZm9ybWVyXCIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIGRldGVybWluZWRcbiAgLy8gYnkgYWp2IGR1cmluZyBzY2hlbWEgdmFsaWRhdGlvbiBpbiBgZmluYWxpemVTY2hlbWEoKWAuIHRoZSBgYXJyYXlgICZcbiAgLy8gYG9iamVjdGAgdHlwZXMgaGF2ZSBhbHJlYWR5IGFkZGVkIGEgZm9ybWF0dGVyIChzZWUgYWJvdmUsIHNvIHdlIGRvbid0IGRvIGl0XG4gIC8vIHR3aWNlKS5cbiAgaWYgKFxuICAgIHR5cGUgIT09IFRZUEVOQU1FUy5BUlJBWSAmJlxuICAgIHR5cGUgIT09IFRZUEVOQU1FUy5PQkpFQ1QgJiZcbiAgICBhcHBpdW1DbGlUcmFuc2Zvcm1lclxuICApIHtcbiAgICBhcmdUeXBlRnVuY3Rpb24gPSBfLmZsb3coXG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPz8gXy5pZGVudGl0eSxcbiAgICAgIHRyYW5zZm9ybWVyc1thcHBpdW1DbGlUcmFuc2Zvcm1lcl0sXG4gICAgKTtcbiAgfVxuXG4gIGlmIChhcmdUeXBlRnVuY3Rpb24pIHtcbiAgICBhcmdPcHRzLnR5cGUgPSBhcmdUeXBlRnVuY3Rpb247XG4gIH1cblxuICAvLyBjb252ZXJ0IEpTT04gc2NoZW1hIGBlbnVtYCB0byBgY2hvaWNlc2AuIGBlbnVtYCBjYW4gY29udGFpbiBhbnkgSlNPTiB0eXBlLCBidXQgYGFyZ3BhcnNlYFxuICAvLyBpcyBsaW1pdGVkIHRvIGEgc2luZ2xlIHR5cGUgcGVyIGFyZyAoSSB0aGluaykuICBzbyBsZXQncyBtYWtlIGV2ZXJ5dGhpbmcgYSBzdHJpbmcuXG4gIC8vIGFuZCBtaWdodCBhcyB3ZWxsIF9yZXF1aXJlXyB0aGUgYHR5cGU6IHN0cmluZ2Agd2hpbGUgd2UncmUgYXQgaXQuXG4gIGlmIChlbnVtVmFsdWVzICYmICFfLmlzRW1wdHkoZW51bVZhbHVlcykpIHtcbiAgICBpZiAodHlwZSA9PT0gVFlQRU5BTUVTLlNUUklORykge1xuICAgICAgYXJnT3B0cy5jaG9pY2VzID0gZW51bVZhbHVlcy5tYXAoU3RyaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgYFByb2JsZW0gd2l0aCBzY2hlbWEgZm9yICR7YXJnfTsgXFxgZW51bVxcYCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgXFxgdHlwZTogJ3N0cmluZydcXGBgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2FsaWFzZXMsIGFyZ09wdHNdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBmaW5hbGl6ZWQsIGZsYXR0ZW5lZCBzY2hlbWEgcmVwcmVzZW50YXRpb24gaW50b1xuICogQXJndW1lbnREZWZpbml0aW9ucyBmb3IgaGFuZG9mZiB0byBgYXJncGFyc2VgLlxuICpcbiAqIEB0aHJvd3MgSWYgc2NoZW1hIGhhcyBub3QgYmVlbiBhZGRlZCB0byBhanYgKHZpYSBgZmluYWxpemVTY2hlbWEoKWApXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi9jbGkvYXJncycpLkFyZ3VtZW50RGVmaW5pdGlvbnN9IEEgbWFwIG9mIGFycnlhcyBvZlxuICogYWxpYXNlcyB0byBgYXJncGFyc2VgIGFyZ3VtZW50czsgZW1wdHkgaWYgbm8gc2NoZW1hIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BhcnNlckFyZ3MgKCkge1xuICBjb25zdCBmbGF0dGVuZWQgPSBmbGF0dGVuU2NoZW1hKCkuZmlsdGVyKCh7c2NoZW1hfSkgPT4gIXNjaGVtYS5hcHBpdW1DbGlJZ25vcmVkKTtcbiAgcmV0dXJuIG5ldyBNYXAoXG4gICAgXy5tYXAoZmxhdHRlbmVkLCAoe3NjaGVtYSwgYXJnU3BlY30pID0+XG4gICAgICBzdWJTY2hlbWFUb0FyZ0RlZihzY2hlbWEsIGFyZ1NwZWMpLFxuICAgICksXG4gICk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2Fqdi9kaXN0L3R5cGVzJykuRm9ybWF0VmFsaWRhdG9yPFQ+fSBGb3JtYXRWYWxpZGF0b3I8VD5cbiAqL1xuXG4vKipcbiAqIEEgSlNPTiA3IHNjaGVtYSB3aXRoIG91ciBjdXN0b20ga2V5d29yZHMuXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2tleXdvcmRzJykuQXBwaXVtSlNPTlNjaGVtYUtleXdvcmRzICYgaW1wb3J0KCdqc29uLXNjaGVtYScpLkpTT05TY2hlbWE3fSBBcHBpdW1KU09OU2NoZW1hXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2FyZy1zcGVjJykuQXJnU3BlY30gQXJnU3BlY1xuICovXG4iXX0=
@@ -0,0 +1,5 @@
1
+ export namespace transformers {
2
+ function csv(value: string): string[];
3
+ function json(jsonOrPath: string): any;
4
+ }
5
+ //# sourceMappingURL=cli-transformers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-transformers.d.ts","sourceRoot":"","sources":["../../../lib/schema/cli-transformers.js"],"names":[],"mappings":";IA6DO,sCAqBJ;IAOK,uCA+BL"}