appium 2.0.0-beta.30 → 2.0.0-beta.35

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 (69) hide show
  1. package/build/lib/appium.d.ts +1 -1
  2. package/build/lib/appium.d.ts.map +1 -1
  3. package/build/lib/appium.js +5 -2
  4. package/build/lib/cli/args.js +1 -1
  5. package/build/lib/cli/driver-command.d.ts +3 -3
  6. package/build/lib/cli/driver-command.d.ts.map +1 -1
  7. package/build/lib/cli/driver-command.js +8 -8
  8. package/build/lib/cli/extension-command.d.ts +22 -17
  9. package/build/lib/cli/extension-command.d.ts.map +1 -1
  10. package/build/lib/cli/extension-command.js +35 -36
  11. package/build/lib/cli/extension.js +1 -1
  12. package/build/lib/cli/parser.d.ts +3 -2
  13. package/build/lib/cli/parser.d.ts.map +1 -1
  14. package/build/lib/cli/parser.js +1 -1
  15. package/build/lib/cli/plugin-command.d.ts +9 -15
  16. package/build/lib/cli/plugin-command.d.ts.map +1 -1
  17. package/build/lib/cli/plugin-command.js +8 -8
  18. package/build/lib/cli/utils.js +1 -1
  19. package/build/lib/config-file.js +1 -1
  20. package/build/lib/config.d.ts +5 -4
  21. package/build/lib/config.d.ts.map +1 -1
  22. package/build/lib/config.js +1 -1
  23. package/build/lib/constants.js +1 -1
  24. package/build/lib/extension/driver-config.js +1 -1
  25. package/build/lib/extension/extension-config.js +1 -1
  26. package/build/lib/extension/index.js +1 -1
  27. package/build/lib/extension/manifest.d.ts.map +1 -1
  28. package/build/lib/extension/manifest.js +1 -1
  29. package/build/lib/extension/package-changed.js +1 -1
  30. package/build/lib/extension/plugin-config.js +1 -1
  31. package/build/lib/grid-register.js +1 -1
  32. package/build/lib/logger.js +1 -1
  33. package/build/lib/logsink.js +1 -1
  34. package/build/lib/main.d.ts +13 -10
  35. package/build/lib/main.d.ts.map +1 -1
  36. package/build/lib/main.js +57 -50
  37. package/build/lib/schema/arg-spec.js +1 -1
  38. package/build/lib/schema/cli-args.js +1 -1
  39. package/build/lib/schema/cli-transformers.js +1 -1
  40. package/build/lib/schema/index.js +1 -1
  41. package/build/lib/schema/keywords.js +1 -1
  42. package/build/lib/schema/schema.js +1 -1
  43. package/build/lib/utils.js +1 -1
  44. package/build/tsconfig.tsbuildinfo +1 -1
  45. package/build/types/appium-manifest.d.ts +40 -0
  46. package/build/types/appium-manifest.d.ts.map +1 -0
  47. package/build/types/cli.d.ts +112 -0
  48. package/build/types/cli.d.ts.map +1 -0
  49. package/build/types/extension.d.ts +43 -0
  50. package/build/types/extension.d.ts.map +1 -0
  51. package/build/types/external-manifest.d.ts +47 -0
  52. package/build/types/external-manifest.d.ts.map +1 -0
  53. package/build/types/index.d.ts +15 -0
  54. package/build/types/index.d.ts.map +1 -0
  55. package/lib/appium.js +7 -3
  56. package/lib/cli/driver-command.js +45 -20
  57. package/lib/cli/extension-command.js +229 -123
  58. package/lib/cli/parser.js +2 -1
  59. package/lib/cli/plugin-command.js +33 -18
  60. package/lib/config.js +6 -5
  61. package/lib/extension/manifest.js +0 -2
  62. package/lib/main.js +78 -63
  63. package/package.json +20 -14
  64. package/types/{appium-manifest.d.ts → appium-manifest.ts} +1 -1
  65. package/types/{cli.d.ts → cli.ts} +48 -29
  66. package/types/{extension.d.ts → extension.ts} +4 -4
  67. package/types/{external-manifest.d.ts → external-manifest.ts} +2 -2
  68. package/types/{index.d.ts → index.ts} +7 -0
  69. package/lib/appium-config.schema.json +0 -278
@@ -70,10 +70,11 @@ export class ArgParser {
70
70
  * If no subcommand is passed in, this method will inject the `server` subcommand.
71
71
  *
72
72
  * `ArgParser.prototype.parse_args` is an alias of this method.
73
+ * @template [T=import('../../types').WithServerSubcommand]
73
74
  * @param {string[]} [args] - Array of arguments, ostensibly from `process.argv`. Gathers args from `process.argv` if not provided.
74
- * @returns {import('../../types/cli').ParsedArgs} - The parsed arguments
75
+ * @returns {import('../../types').Args<T>} - The parsed arguments
75
76
  */
76
- parseArgs(args?: string[] | undefined): import('../../types/cli').ParsedArgs;
77
+ parseArgs<T = import("../../types").WithServerSubcommand>(args?: string[] | undefined): import("../../types").Args<T>;
77
78
  }
78
79
  import { ArgumentParser } from "argparse";
79
80
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../lib/cli/parser.js"],"names":[],"mappings":"AA6PA;;;;;;GAMG;AACH,wDAFa,SAAS,CAMrB;AAzOD;;;;;;GAMG;AACH;IA2FE;;;;;;;;OAQG;IACH,kCAHW,MAAM,GACJ,MAAM,CAiBlB;IAED;;;OAGG;IACH,0BAFW,cAAc,QASxB;IAED;;;;OAIG;IACH,qCAHW,OAAO,UAAU,EAAE,SAAS,GAC1B,OAAO,QAAQ,EAAE,mBAAmB,CAkBhD;IAED;;;OAGG;IACH,iDAFW,OAAO,UAAU,EAAE,SAAS,QAyDtC;IAnND;;OAEG;IACH,yCAmDC;IAxCC;;;OAGG;IACH,MAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,OAFU,OAAO,CAEC;IAElB;;;OAGG;IACH,QAFU,cAAc,CAEJ;IAcpB,8CAAyB;IAMzB;;OAEG;IACH,YAFU,SAAS,CAAC,WAAW,CAAC,CAEA;IAGlC;;;;;;;;OAQG;IACH,wCAFa,OAAO,iBAAiB,EAAE,UAAU,CAyBhD;CA4HF"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../lib/cli/parser.js"],"names":[],"mappings":"AA8PA;;;;;;GAMG;AACH,wDAFa,SAAS,CAMrB;AA1OD;;;;;;GAMG;AACH;IA4FE;;;;;;;;OAQG;IACH,kCAHW,MAAM,GACJ,MAAM,CAiBlB;IAED;;;OAGG;IACH,0BAFW,cAAc,QASxB;IAED;;;;OAIG;IACH,qCAHW,OAAO,UAAU,EAAE,SAAS,GAC1B,OAAO,QAAQ,EAAE,mBAAmB,CAkBhD;IAED;;;OAGG;IACH,iDAFW,OAAO,UAAU,EAAE,SAAS,QAyDtC;IApND;;OAEG;IACH,yCAmDC;IAxCC;;;OAGG;IACH,MAFU,MAAM,CAEA;IAEhB;;;OAGG;IACH,OAFU,OAAO,CAEC;IAElB;;;OAGG;IACH,QAFU,cAAc,CAEJ;IAcpB,8CAAyB;IAMzB;;OAEG;IACH,YAFU,SAAS,CAAC,WAAW,CAAC,CAEA;IAGlC;;;;;;;;;OASG;IACH,sHAuBC;CA4HF"}
@@ -188,4 +188,4 @@ function getParser(debug) {
188
188
  (0, _schema.finalizeSchema)();
189
189
  return new ArgParser(debug);
190
190
  }
191
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGFyc2VyLmpzIl0sIm5hbWVzIjpbIk5PTl9TRVJWRVJfQVJHUyIsIk9iamVjdCIsImZyZWV6ZSIsIlNldCIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJTRVJWRVJfU1VCQ09NTUFORCIsInZlcnNpb24iLCJmcyIsInJlYWRQYWNrYWdlSnNvbkZyb20iLCJyb290RGlyIiwiQXJnUGFyc2VyIiwiY29uc3RydWN0b3IiLCJkZWJ1ZyIsInByb2ciLCJwcm9jZXNzIiwiYXJndiIsInBhdGgiLCJiYXNlbmFtZSIsInBhcnNlciIsIkFyZ3VtZW50UGFyc2VyIiwiYWRkX2hlbHAiLCJkZXNjcmlwdGlvbiIsIl9wYXRjaEV4aXQiLCJhZGRfYXJndW1lbnQiLCJhY3Rpb24iLCJzdWJQYXJzZXJzIiwiYWRkX3N1YnBhcnNlcnMiLCJkZXN0Iiwic2VydmVyQXJncyIsIl9hZGRTZXJ2ZXJUb1BhcnNlciIsInJhd0FyZ3MiLCJfYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlciIsInBhcnNlX2FyZ3MiLCJwYXJzZUFyZ3MiLCJhcmdzIiwic2xpY2UiLCJoYXMiLCJ1bnNoaWZ0IiwicGFyc2VkIiwiX3RyYW5zZm9ybVBhcnNlZEFyZ3MiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJtZXNzYWdlIiwiZXhpdCIsIl8iLCJyZWR1Y2UiLCJ1bnBhY2tlZCIsInZhbHVlIiwia2V5IiwiaXNVbmRlZmluZWQiLCJzZXQiLCJjb2RlIiwibXNnIiwiRXJyb3IiLCJzdWJQYXJzZXIiLCJzZXJ2ZXJQYXJzZXIiLCJhZGRfcGFyc2VyIiwiaGVscCIsImZsYWdzT3JOYW1lcyIsIm9wdHMiLCJ0eXBlIiwiZXh0UGFyc2VyIiwiZXh0U3ViUGFyc2VycyIsImV4dGVuc2lvbkFyZ3MiLCJwYXJzZXJTcGVjcyIsImNvbW1hbmQiLCJsaXN0IiwiaW5zdGFsbCIsInVuaW5zdGFsbCIsInVwZGF0ZSIsInJ1biIsImdldFBhcnNlciJdLCJtYXBwaW5ncyI6Ijs7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QUFiLENBQW9CUyxNQUY1QjtBQUdFWixRQUFBQSxJQUFJLEVBQUcsb0JBQW1CRyxJQUFLO0FBSGpDLE9BaEJrQixFQXFCbEI7QUFDRUssUUFBQUEsT0FBTyxFQUFFLEtBRFg7QUFFRWhDLFFBQUFBLElBQUksRUFBRThCLGFBQWEsQ0FBQ0gsSUFBRCxDQUFiLENBQW9CVSxHQUY1QjtBQUdFYixRQUFBQSxJQUFJLEVBQ0Qsb0NBQW1DRyxJQUFLLDRCQUF6QyxHQUNDLGdFQUErREEsSUFBSztBQUx6RSxPQXJCa0IsQ0FBcEI7O0FBOEJBLFdBQUssTUFBTTtBQUFDSyxRQUFBQSxPQUFEO0FBQVVoQyxRQUFBQSxJQUFWO0FBQWdCd0IsUUFBQUE7QUFBaEIsT0FBWCxJQUFvQ08sV0FBcEMsRUFBaUQ7QUFDL0MsY0FBTS9DLE1BQU0sR0FBRzZDLGFBQWEsQ0FBQ04sVUFBZCxDQUF5QlMsT0FBekIsRUFBa0M7QUFBQ1IsVUFBQUE7QUFBRCxTQUFsQyxDQUFmOztBQUVBaEQsUUFBQUEsU0FBUyxDQUFDWSxVQUFWLENBQXFCSixNQUFyQjs7QUFFQSxhQUFLLE1BQU0sQ0FBQ3lDLFlBQUQsRUFBZUMsSUFBZixDQUFYLElBQW1DMUIsSUFBbkMsRUFBeUM7QUFHdkNoQixVQUFBQSxNQUFNLENBQUNLLFlBQVAsQ0FBb0IsR0FBR29DLFlBQXZCLEVBQXFDLEVBQUMsR0FBR0M7QUFBSixXQUFyQztBQUNEO0FBQ0Y7QUFDRjtBQUNGOztBQXBOYTs7OztBQThOaEIsU0FBU1ksU0FBVCxDQUFvQjVELEtBQXBCLEVBQTJCO0FBQ3pCO0FBRUEsU0FBTyxJQUFJRixTQUFKLENBQWNFLEtBQWQsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBBcmd1bWVudFBhcnNlciB9IGZyb20gJ2FyZ3BhcnNlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgU0VSVkVSX1NVQkNPTU1BTkQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZmluYWxpemVTY2hlbWEsIGdldEFyZ1NwZWMsIGhhc0FyZ1NwZWMgfSBmcm9tICcuLi9zY2hlbWEnO1xuaW1wb3J0IHsgcm9vdERpciB9IGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQge1xuICBnZXRFeHRlbnNpb25BcmdzLFxuICBnZXRTZXJ2ZXJBcmdzXG59IGZyb20gJy4vYXJncyc7XG5cbi8qKlxuICogSWYgdGhlIHBhcnNlZCBhcmdzIGRvIG5vdCBjb250YWluIGFueSBvZiB0aGVzZSB2YWx1ZXMsIHRoZW4gd2VcbiAqIHdpbGwgYXV0b21hdGlhbGx5IGluamVjdCB0aGUgYHNlcnZlcmAgc3ViY29tbWFuZC5cbiAqL1xuY29uc3QgTk9OX1NFUlZFUl9BUkdTID0gT2JqZWN0LmZyZWV6ZShcbiAgbmV3IFNldChbXG4gICAgRFJJVkVSX1RZUEUsXG4gICAgUExVR0lOX1RZUEUsXG4gICAgU0VSVkVSX1NVQkNPTU1BTkQsXG4gICAgJy1oJyxcbiAgICAnLS1oZWxwJyxcbiAgICAnLXYnLFxuICAgICctLXZlcnNpb24nXG4gIF0pXG4pO1xuXG5jb25zdCB2ZXJzaW9uID0gZnMucmVhZFBhY2thZ2VKc29uRnJvbShyb290RGlyKS52ZXJzaW9uO1xuXG4vKipcbiAqIEEgd3JhcHBlciBhcm91bmQgYGFyZ3BhcnNlYFxuICpcbiAqIC0gSGFuZGxlcyBpbnN0YW50aWF0aW9uLCBjb25maWd1cmF0aW9uLCBhbmQgbW9ua2V5cGF0Y2hpbmcgb2YgYW5cbiAqICAgIGBBcmd1bWVudFBhcnNlcmAgaW5zdGFuY2UgZm9yIEFwcGl1bSBzZXJ2ZXIgYW5kIGl0cyBleHRlbnNpb25zXG4gKiAtIEhhbmRsZXMgZXJyb3IgY29uZGl0aW9ucywgbWVzc2FnZXMsIGFuZCBleGl0IGJlaGF2aW9yXG4gKi9cbmNsYXNzIEFyZ1BhcnNlciB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtkZWJ1Z10gLSBJZiB0cnVlLCB0aHJvdyBpbnN0ZWFkIG9mIGV4aXQgb24gZXJyb3IuXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoZGVidWcgPSBmYWxzZSkge1xuICAgIGNvbnN0IHByb2cgPSBwcm9jZXNzLmFyZ3ZbMV0gPyBwYXRoLmJhc2VuYW1lKHByb2Nlc3MuYXJndlsxXSkgOiAnYXBwaXVtJztcbiAgICBjb25zdCBwYXJzZXIgPSBuZXcgQXJndW1lbnRQYXJzZXIoe1xuICAgICAgYWRkX2hlbHA6IHRydWUsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgJ0Egd2ViZHJpdmVyLWNvbXBhdGlibGUgc2VydmVyIHRoYXQgZmFjaWxpdGF0ZXMgYXV0b21hdGlvbiBvZiB3ZWIsIG1vYmlsZSwgYW5kIG90aGVyIHR5cGVzIG9mIGFwcHMgYWNyb3NzIHZhcmlvdXMgcGxhdGZvcm1zLicsXG4gICAgICBwcm9nLFxuICAgIH0pO1xuXG4gICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQocGFyc2VyKTtcblxuICAgIC8qKlxuICAgICAqIFByb2dyYW0gbmFtZSAodHlwaWNhbGx5IGBhcHBpdW1gKVxuICAgICAqIEB0eXBlIHtzdHJpbmd9XG4gICAgICovXG4gICAgdGhpcy5wcm9nID0gcHJvZztcblxuICAgIC8qKlxuICAgICAqIElmIGB0cnVlYCwgdGhyb3cgYW4gZXJyb3Igb24gcGFyc2UgZmFpbHVyZSBpbnN0ZWFkIG9mIHByaW50aW5nIGhlbHBcbiAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgKi9cbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG5cbiAgICAvKipcbiAgICAgKiBXcmFwcGVkIGBBcmd1bWVudFBhcnNlcmAgaW5zdGFuY2VcbiAgICAgKiBAdHlwZSB7QXJndW1lbnRQYXJzZXJ9XG4gICAgICovXG4gICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG5cbiAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdicsICctLXZlcnNpb24nLCB7XG4gICAgICBhY3Rpb246ICd2ZXJzaW9uJyxcbiAgICAgIHZlcnNpb24sXG4gICAgfSk7XG5cbiAgICBjb25zdCBzdWJQYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKHtkZXN0OiAnc3ViY29tbWFuZCd9KTtcblxuICAgIC8vIGFkZCB0aGUgJ3NlcnZlcicgc3ViY29tbWFuZCwgYW5kIHN0b3JlIHRoZSByYXcgYXJndW1lbnRzIG9uIHRoZSBwYXJzZXJcbiAgICAvLyBvYmplY3QgYXMgYSB3YXkgZm9yIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIHRvIHdvcmsgd2l0aCB0aGUgYXJndW1lbnRzXG4gICAgLy8gY29uY2VwdHVhbGx5IHJhdGhlciB0aGFuIGp1c3QgdGhyb3VnaCBhcmdwYXJzZVxuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBBcmdQYXJzZXIuX2FkZFNlcnZlclRvUGFyc2VyKHN1YlBhcnNlcnMpO1xuXG4gICAgdGhpcy5yYXdBcmdzID0gc2VydmVyQXJncztcblxuICAgIC8vIGFkZCB0aGUgJ2RyaXZlcicgYW5kICdwbHVnaW4nIHN1YmNvbW1hbmRzXG4gICAgQXJnUGFyc2VyLl9hZGRFeHRlbnNpb25Db21tYW5kc1RvUGFyc2VyKHN1YlBhcnNlcnMpO1xuXG4gICAgLy8gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgLyBkcm9wLWluIHdyYXBwZXJcbiAgICAvKipcbiAgICAgKiBAdHlwZSB7QXJnUGFyc2VyWydwYXJzZUFyZ3MnXX1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnNlX2FyZ3MgPSB0aGlzLnBhcnNlQXJncztcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhcmd1bWVudHMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLlxuICAgKlxuICAgKiBJZiBubyBzdWJjb21tYW5kIGlzIHBhc3NlZCBpbiwgdGhpcyBtZXRob2Qgd2lsbCBpbmplY3QgdGhlIGBzZXJ2ZXJgIHN1YmNvbW1hbmQuXG4gICAqXG4gICAqIGBBcmdQYXJzZXIucHJvdG90eXBlLnBhcnNlX2FyZ3NgIGlzIGFuIGFsaWFzIG9mIHRoaXMgbWV0aG9kLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBbYXJnc10gLSBBcnJheSBvZiBhcmd1bWVudHMsIG9zdGVuc2libHkgZnJvbSBgcHJvY2Vzcy5hcmd2YC4gR2F0aGVycyBhcmdzIGZyb20gYHByb2Nlc3MuYXJndmAgaWYgbm90IHByb3ZpZGVkLlxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuLi8uLi90eXBlcy9jbGknKS5QYXJzZWRBcmdzfSAtIFRoZSBwYXJzZWQgYXJndW1lbnRzXG4gICAqL1xuICBwYXJzZUFyZ3MgKGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpIHtcbiAgICBpZiAoIU5PTl9TRVJWRVJfQVJHUy5oYXMoYXJnc1swXSkpIHtcbiAgICAgIGFyZ3MudW5zaGlmdChTRVJWRVJfU1VCQ09NTUFORCk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VyLnBhcnNlX2FyZ3MoYXJncyk7XG4gICAgICByZXR1cm4gQXJnUGFyc2VyLl90cmFuc2Zvcm1QYXJzZWRBcmdzKHBhcnNlZCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICAvLyB0aGlzIGlzbid0IHRlc3RlZCB2aWEgdW5pdCB0ZXN0cyAod2UgdXNlIGBkZWJ1ZzogdHJ1ZWApIHNvIG1heSBlc2NhcGUgY292ZXJhZ2UuXG5cbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgICB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoKTsgLy8gbmVlZCBhbiBleHRyYSBzcGFjZSBzaW5jZSBhcmdwYXJzZSBwcmludHMgdXNhZ2UuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyLm1lc3NhZ2UpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdpdmVuIGFuIG9iamVjdCBmdWxsIG9mIGFyZ3VtZW50cyBhcyByZXR1cm5lZCBieSBgYXJncGFyc2VyLnBhcnNlX2FyZ3NgLFxuICAgKiBleHBhbmQgdGhlIG9uZXMgZm9yIGV4dGVuc2lvbnMgaW50byBhIG5lc3RlZCBvYmplY3Qgc3RydWN0dXJlIGFuZCByZW5hbWVcbiAgICoga2V5cyB0byBtYXRjaCB0aGUgaW50ZW5kZWQgZGVzdGluYXRpb24uXG4gICAqXG4gICAqIEUuZy4sIGB7J2RyaXZlci1mb28tYmFyJzogYmF6fWAgYmVjb21lcyBge2RyaXZlcjoge2Zvbzoge2JhcjogJ2Jheid9fX1gXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBhcmdzXG4gICAqIEByZXR1cm5zIHtvYmplY3R9XG4gICAqL1xuICBzdGF0aWMgX3RyYW5zZm9ybVBhcnNlZEFyZ3MgKGFyZ3MpIHtcbiAgICByZXR1cm4gXy5yZWR1Y2UoXG4gICAgICBhcmdzLFxuICAgICAgKHVucGFja2VkLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZCh2YWx1ZSkgJiYgaGFzQXJnU3BlYyhrZXkpKSB7XG4gICAgICAgICAgY29uc3Qge2Rlc3R9ID0gLyoqIEB0eXBlIHtpbXBvcnQoJy4uL3NjaGVtYS9hcmctc3BlYycpLkFyZ1NwZWN9ICovKGdldEFyZ1NwZWMoa2V5KSk7XG4gICAgICAgICAgXy5zZXQodW5wYWNrZWQsIGRlc3QsIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIGFueXRoaW5nIHRoYXQgX2lzbid0XyBhIHNlcnZlciBhcmdcbiAgICAgICAgICB1bnBhY2tlZFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVucGFja2VkO1xuICAgICAgfSxcbiAgICAgIHt9LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUGF0Y2hlcyB0aGUgYGV4aXQoKWAgbWV0aG9kIG9mIHRoZSBwYXJzZXIgdG8gdGhyb3cgYW4gZXJyb3IsIHNvIHdlIGNhbiBoYW5kbGUgaXQgbWFudWFsbHkuXG4gICAqIEBwYXJhbSB7QXJndW1lbnRQYXJzZXJ9IHBhcnNlclxuICAgKi9cbiAgc3RhdGljIF9wYXRjaEV4aXQgKHBhcnNlcikge1xuICAgIHBhcnNlci5leGl0ID0gKGNvZGUsIG1zZykgPT4ge1xuICAgICAgaWYgKGNvZGUpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICBwcm9jZXNzLmV4aXQoKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcmdwYXJzZScpLlN1YlBhcnNlcn0gc3ViUGFyc2VyXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJy4vYXJncycpLkFyZ3VtZW50RGVmaW5pdGlvbnN9XG4gICAqL1xuICBzdGF0aWMgX2FkZFNlcnZlclRvUGFyc2VyIChzdWJQYXJzZXIpIHtcbiAgICBjb25zdCBzZXJ2ZXJQYXJzZXIgPSBzdWJQYXJzZXIuYWRkX3BhcnNlcignc2VydmVyJywge1xuICAgICAgYWRkX2hlbHA6IHRydWUsXG4gICAgICBoZWxwOiAnUnVuIGFuIEFwcGl1bSBzZXJ2ZXInLFxuICAgIH0pO1xuXG4gICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQoc2VydmVyUGFyc2VyKTtcblxuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBnZXRTZXJ2ZXJBcmdzKCk7XG4gICAgZm9yIChjb25zdCBbZmxhZ3NPck5hbWVzLCBvcHRzXSBvZiBzZXJ2ZXJBcmdzKSB7XG4gICAgICAvLyBUUyBkb2Vzbid0IGxpa2UgdGhlIHNwcmVhZCBvcGVyYXRvciBoZXJlLlxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgc2VydmVyUGFyc2VyLmFkZF9hcmd1bWVudCguLi5mbGFnc09yTmFtZXMsIHsuLi5vcHRzfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlcnZlckFyZ3M7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBleHRlbnNpb24gc3ViLXN1Yi1jb21tYW5kcyB0byBgZHJpdmVyYC9gcGx1Z2luYCBzdWJjb21tYW5kc1xuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXJncGFyc2UnKS5TdWJQYXJzZXJ9IHN1YlBhcnNlcnNcbiAgICovXG4gIHN0YXRpYyBfYWRkRXh0ZW5zaW9uQ29tbWFuZHNUb1BhcnNlciAoc3ViUGFyc2Vycykge1xuICAgIGZvciAoY29uc3QgdHlwZSBvZiBbRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFXSkge1xuICAgICAgY29uc3QgZXh0UGFyc2VyID0gc3ViUGFyc2Vycy5hZGRfcGFyc2VyKHR5cGUsIHtcbiAgICAgICAgYWRkX2hlbHA6IHRydWUsXG4gICAgICAgIGhlbHA6IGBBY2Nlc3MgdGhlICR7dHlwZX0gbWFuYWdlbWVudCBDTEkgY29tbWFuZHNgLFxuICAgICAgfSk7XG5cbiAgICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KGV4dFBhcnNlcik7XG5cbiAgICAgIGNvbnN0IGV4dFN1YlBhcnNlcnMgPSBleHRQYXJzZXIuYWRkX3N1YnBhcnNlcnMoe1xuICAgICAgICBkZXN0OiBgJHt0eXBlfUNvbW1hbmRgLFxuICAgICAgfSk7XG4gICAgICBjb25zdCBleHRlbnNpb25BcmdzID0gZ2V0RXh0ZW5zaW9uQXJncygpO1xuICAgICAgY29uc3QgcGFyc2VyU3BlY3MgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAnbGlzdCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5saXN0LFxuICAgICAgICAgIGhlbHA6IGBMaXN0IGF2YWlsYWJsZSBhbmQgaW5zdGFsbGVkICR7dHlwZX1zYCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICdpbnN0YWxsJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLmluc3RhbGwsXG4gICAgICAgICAgaGVscDogYEluc3RhbGwgYSAke3R5cGV9YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICd1bmluc3RhbGwnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0udW5pbnN0YWxsLFxuICAgICAgICAgIGhlbHA6IGBVbmluc3RhbGwgYSAke3R5cGV9YCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNvbW1hbmQ6ICd1cGRhdGUnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0udXBkYXRlLFxuICAgICAgICAgIGhlbHA6IGBVcGRhdGUgaW5zdGFsbGVkICR7dHlwZX1zIHRvIHRoZSBsYXRlc3QgdmVyc2lvbmAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAncnVuJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnJ1bixcbiAgICAgICAgICBoZWxwOlxuICAgICAgICAgICAgYFJ1biBhIHNjcmlwdCAoZGVmaW5lZCBpbnNpZGUgdGhlICR7dHlwZX0ncyBwYWNrYWdlLmpzb24gdW5kZXIgdGhlIGAgK1xuICAgICAgICAgICAgYOKAnHNjcmlwdHPigJ0gZmllbGQgaW5zaWRlIHRoZSDigJxhcHBpdW3igJ0gZmllbGQpIGZyb20gYW4gaW5zdGFsbGVkICR7dHlwZX1gLFxuICAgICAgICB9LFxuICAgICAgXTtcblxuICAgICAgZm9yIChjb25zdCB7Y29tbWFuZCwgYXJncywgaGVscH0gb2YgcGFyc2VyU3BlY3MpIHtcbiAgICAgICAgY29uc3QgcGFyc2VyID0gZXh0U3ViUGFyc2Vycy5hZGRfcGFyc2VyKGNvbW1hbmQsIHtoZWxwfSk7XG5cbiAgICAgICAgQXJnUGFyc2VyLl9wYXRjaEV4aXQocGFyc2VyKTtcblxuICAgICAgICBmb3IgKGNvbnN0IFtmbGFnc09yTmFtZXMsIG9wdHNdIG9mIGFyZ3MpIHtcbiAgICAgICAgICAvLyBhZGRfYXJndW1lbnQgbXV0YXRlcyBwYXJhbXMgc28gbWFrZSBzdXJlIHRvIHNlbmQgaW4gY29waWVzIGluc3RlYWRcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCguLi5mbGFnc09yTmFtZXMsIHsuLi5vcHRzfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEge0BsaW5rIEFyZ1BhcnNlcn0gaW5zdGFuY2U7IGZpbmFsaXplcyB0aGUgY29uZmlnIHNjaGVtYS5cbiAqXG4gKiBAY29uc3RydWN0cyBBcmdQYXJzZXJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RlYnVnXSAtIElmIGB0cnVlYCwgdGhyb3cgaW5zdGVhZCBvZiBleGl0IHVwb24gcGFyc2luZyBlcnJvclxuICogQHJldHVybnMge0FyZ1BhcnNlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0UGFyc2VyIChkZWJ1Zykge1xuICBmaW5hbGl6ZVNjaGVtYSgpO1xuXG4gIHJldHVybiBuZXcgQXJnUGFyc2VyKGRlYnVnKTtcbn1cblxuZXhwb3J0IHsgZ2V0UGFyc2VyLCBBcmdQYXJzZXIgfTtcbiJdfQ==
191
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOT05fU0VSVkVSX0FSR1MiLCJPYmplY3QiLCJmcmVlemUiLCJTZXQiLCJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJ2ZXJzaW9uIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwicm9vdERpciIsIkFyZ1BhcnNlciIsImNvbnN0cnVjdG9yIiwiZGVidWciLCJwcm9nIiwicHJvY2VzcyIsImFyZ3YiLCJwYXRoIiwiYmFzZW5hbWUiLCJwYXJzZXIiLCJBcmd1bWVudFBhcnNlciIsImFkZF9oZWxwIiwiZGVzY3JpcHRpb24iLCJfcGF0Y2hFeGl0IiwiYWRkX2FyZ3VtZW50IiwiYWN0aW9uIiwic3ViUGFyc2VycyIsImFkZF9zdWJwYXJzZXJzIiwiZGVzdCIsInNlcnZlckFyZ3MiLCJfYWRkU2VydmVyVG9QYXJzZXIiLCJyYXdBcmdzIiwiX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIiLCJwYXJzZV9hcmdzIiwicGFyc2VBcmdzIiwiYXJncyIsInNsaWNlIiwiaGFzIiwidW5zaGlmdCIsInBhcnNlZCIsIl90cmFuc2Zvcm1QYXJzZWRBcmdzIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwibWVzc2FnZSIsImV4aXQiLCJfIiwicmVkdWNlIiwidW5wYWNrZWQiLCJ2YWx1ZSIsImtleSIsImlzVW5kZWZpbmVkIiwic2V0IiwiY29kZSIsIm1zZyIsIkVycm9yIiwic3ViUGFyc2VyIiwic2VydmVyUGFyc2VyIiwiYWRkX3BhcnNlciIsImhlbHAiLCJmbGFnc09yTmFtZXMiLCJvcHRzIiwidHlwZSIsImV4dFBhcnNlciIsImV4dFN1YlBhcnNlcnMiLCJleHRlbnNpb25BcmdzIiwicGFyc2VyU3BlY3MiLCJjb21tYW5kIiwibGlzdCIsImluc3RhbGwiLCJ1bmluc3RhbGwiLCJ1cGRhdGUiLCJydW4iLCJnZXRQYXJzZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY2xpL3BhcnNlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IEFyZ3VtZW50UGFyc2VyIH0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUsIFBMVUdJTl9UWVBFLCBTRVJWRVJfU1VCQ09NTUFORCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBmaW5hbGl6ZVNjaGVtYSwgZ2V0QXJnU3BlYywgaGFzQXJnU3BlYyB9IGZyb20gJy4uL3NjaGVtYSc7XG5pbXBvcnQgeyByb290RGlyIH0gZnJvbSAnLi4vY29uZmlnJztcbmltcG9ydCB7XG4gIGdldEV4dGVuc2lvbkFyZ3MsXG4gIGdldFNlcnZlckFyZ3Ncbn0gZnJvbSAnLi9hcmdzJztcblxuLyoqXG4gKiBJZiB0aGUgcGFyc2VkIGFyZ3MgZG8gbm90IGNvbnRhaW4gYW55IG9mIHRoZXNlIHZhbHVlcywgdGhlbiB3ZVxuICogd2lsbCBhdXRvbWF0aWFsbHkgaW5qZWN0IHRoZSBgc2VydmVyYCBzdWJjb21tYW5kLlxuICovXG5jb25zdCBOT05fU0VSVkVSX0FSR1MgPSBPYmplY3QuZnJlZXplKFxuICBuZXcgU2V0KFtcbiAgICBEUklWRVJfVFlQRSxcbiAgICBQTFVHSU5fVFlQRSxcbiAgICBTRVJWRVJfU1VCQ09NTUFORCxcbiAgICAnLWgnLFxuICAgICctLWhlbHAnLFxuICAgICctdicsXG4gICAgJy0tdmVyc2lvbidcbiAgXSlcbik7XG5cbmNvbnN0IHZlcnNpb24gPSBmcy5yZWFkUGFja2FnZUpzb25Gcm9tKHJvb3REaXIpLnZlcnNpb247XG5cbi8qKlxuICogQSB3cmFwcGVyIGFyb3VuZCBgYXJncGFyc2VgXG4gKlxuICogLSBIYW5kbGVzIGluc3RhbnRpYXRpb24sIGNvbmZpZ3VyYXRpb24sIGFuZCBtb25rZXlwYXRjaGluZyBvZiBhblxuICogICAgYEFyZ3VtZW50UGFyc2VyYCBpbnN0YW5jZSBmb3IgQXBwaXVtIHNlcnZlciBhbmQgaXRzIGV4dGVuc2lvbnNcbiAqIC0gSGFuZGxlcyBlcnJvciBjb25kaXRpb25zLCBtZXNzYWdlcywgYW5kIGV4aXQgYmVoYXZpb3JcbiAqL1xuY2xhc3MgQXJnUGFyc2VyIHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2RlYnVnXSAtIElmIHRydWUsIHRocm93IGluc3RlYWQgb2YgZXhpdCBvbiBlcnJvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yIChkZWJ1ZyA9IGZhbHNlKSB7XG4gICAgY29uc3QgcHJvZyA9IHByb2Nlc3MuYXJndlsxXSA/IHBhdGguYmFzZW5hbWUocHJvY2Vzcy5hcmd2WzFdKSA6ICdhcHBpdW0nO1xuICAgIGNvbnN0IHBhcnNlciA9IG5ldyBBcmd1bWVudFBhcnNlcih7XG4gICAgICBhZGRfaGVscDogdHJ1ZSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnQSB3ZWJkcml2ZXItY29tcGF0aWJsZSBzZXJ2ZXIgdGhhdCBmYWNpbGl0YXRlcyBhdXRvbWF0aW9uIG9mIHdlYiwgbW9iaWxlLCBhbmQgb3RoZXIgdHlwZXMgb2YgYXBwcyBhY3Jvc3MgdmFyaW91cyBwbGF0Zm9ybXMuJyxcbiAgICAgIHByb2csXG4gICAgfSk7XG5cbiAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChwYXJzZXIpO1xuXG4gICAgLyoqXG4gICAgICogUHJvZ3JhbSBuYW1lICh0eXBpY2FsbHkgYGFwcGl1bWApXG4gICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgKi9cbiAgICB0aGlzLnByb2cgPSBwcm9nO1xuXG4gICAgLyoqXG4gICAgICogSWYgYHRydWVgLCB0aHJvdyBhbiBlcnJvciBvbiBwYXJzZSBmYWlsdXJlIGluc3RlYWQgb2YgcHJpbnRpbmcgaGVscFxuICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAqL1xuICAgIHRoaXMuZGVidWcgPSBkZWJ1ZztcblxuICAgIC8qKlxuICAgICAqIFdyYXBwZWQgYEFyZ3VtZW50UGFyc2VyYCBpbnN0YW5jZVxuICAgICAqIEB0eXBlIHtBcmd1bWVudFBhcnNlcn1cbiAgICAgKi9cbiAgICB0aGlzLnBhcnNlciA9IHBhcnNlcjtcblxuICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyc2lvbicsIHtcbiAgICAgIGFjdGlvbjogJ3ZlcnNpb24nLFxuICAgICAgdmVyc2lvbixcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1YlBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBhcnNlcnMoe2Rlc3Q6ICdzdWJjb21tYW5kJ30pO1xuXG4gICAgLy8gYWRkIHRoZSAnc2VydmVyJyBzdWJjb21tYW5kLCBhbmQgc3RvcmUgdGhlIHJhdyBhcmd1bWVudHMgb24gdGhlIHBhcnNlclxuICAgIC8vIG9iamVjdCBhcyBhIHdheSBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgdG8gd29yayB3aXRoIHRoZSBhcmd1bWVudHNcbiAgICAvLyBjb25jZXB0dWFsbHkgcmF0aGVyIHRoYW4ganVzdCB0aHJvdWdoIGFyZ3BhcnNlXG4gICAgY29uc3Qgc2VydmVyQXJncyA9IEFyZ1BhcnNlci5fYWRkU2VydmVyVG9QYXJzZXIoc3ViUGFyc2Vycyk7XG5cbiAgICB0aGlzLnJhd0FyZ3MgPSBzZXJ2ZXJBcmdzO1xuXG4gICAgLy8gYWRkIHRoZSAnZHJpdmVyJyBhbmQgJ3BsdWdpbicgc3ViY29tbWFuZHNcbiAgICBBcmdQYXJzZXIuX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIoc3ViUGFyc2Vycyk7XG5cbiAgICAvLyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSAvIGRyb3AtaW4gd3JhcHBlclxuICAgIC8qKlxuICAgICAqIEB0eXBlIHtBcmdQYXJzZXJbJ3BhcnNlQXJncyddfVxuICAgICAqL1xuICAgIHRoaXMucGFyc2VfYXJncyA9IHRoaXMucGFyc2VBcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGFyZ3VtZW50cyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuXG4gICAqXG4gICAqIElmIG5vIHN1YmNvbW1hbmQgaXMgcGFzc2VkIGluLCB0aGlzIG1ldGhvZCB3aWxsIGluamVjdCB0aGUgYHNlcnZlcmAgc3ViY29tbWFuZC5cbiAgICpcbiAgICogYEFyZ1BhcnNlci5wcm90b3R5cGUucGFyc2VfYXJnc2AgaXMgYW4gYWxpYXMgb2YgdGhpcyBtZXRob2QuXG4gICAqIEB0ZW1wbGF0ZSBbVD1pbXBvcnQoJy4uLy4uL3R5cGVzJykuV2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IFthcmdzXSAtIEFycmF5IG9mIGFyZ3VtZW50cywgb3N0ZW5zaWJseSBmcm9tIGBwcm9jZXNzLmFyZ3ZgLiBHYXRoZXJzIGFyZ3MgZnJvbSBgcHJvY2Vzcy5hcmd2YCBpZiBub3QgcHJvdmlkZWQuXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuQXJnczxUPn0gLSBUaGUgcGFyc2VkIGFyZ3VtZW50c1xuICAgKi9cbiAgcGFyc2VBcmdzIChhcmdzID0gcHJvY2Vzcy5hcmd2LnNsaWNlKDIpKSB7XG4gICAgaWYgKCFOT05fU0VSVkVSX0FSR1MuaGFzKGFyZ3NbMF0pKSB7XG4gICAgICBhcmdzLnVuc2hpZnQoU0VSVkVSX1NVQkNPTU1BTkQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSB0aGlzLnBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpO1xuICAgICAgcmV0dXJuIEFyZ1BhcnNlci5fdHJhbnNmb3JtUGFyc2VkQXJncyhwYXJzZWQpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKHRoaXMuZGVidWcpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgLy8gdGhpcyBpc24ndCB0ZXN0ZWQgdmlhIHVuaXQgdGVzdHMgKHdlIHVzZSBgZGVidWc6IHRydWVgKSBzbyBtYXkgZXNjYXBlIGNvdmVyYWdlLlxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKCk7IC8vIG5lZWQgYW4gZXh0cmEgc3BhY2Ugc2luY2UgYXJncGFyc2UgcHJpbnRzIHVzYWdlLlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICBjb25zb2xlLmVycm9yKGVyci5tZXNzYWdlKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlbiBhbiBvYmplY3QgZnVsbCBvZiBhcmd1bWVudHMgYXMgcmV0dXJuZWQgYnkgYGFyZ3BhcnNlci5wYXJzZV9hcmdzYCxcbiAgICogZXhwYW5kIHRoZSBvbmVzIGZvciBleHRlbnNpb25zIGludG8gYSBuZXN0ZWQgb2JqZWN0IHN0cnVjdHVyZSBhbmQgcmVuYW1lXG4gICAqIGtleXMgdG8gbWF0Y2ggdGhlIGludGVuZGVkIGRlc3RpbmF0aW9uLlxuICAgKlxuICAgKiBFLmcuLCBgeydkcml2ZXItZm9vLWJhcic6IGJhen1gIGJlY29tZXMgYHtkcml2ZXI6IHtmb286IHtiYXI6ICdiYXonfX19YFxuICAgKiBAcGFyYW0ge29iamVjdH0gYXJnc1xuICAgKiBAcmV0dXJucyB7b2JqZWN0fVxuICAgKi9cbiAgc3RhdGljIF90cmFuc2Zvcm1QYXJzZWRBcmdzIChhcmdzKSB7XG4gICAgcmV0dXJuIF8ucmVkdWNlKFxuICAgICAgYXJncyxcbiAgICAgICh1bnBhY2tlZCwgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQodmFsdWUpICYmIGhhc0FyZ1NwZWMoa2V5KSkge1xuICAgICAgICAgIGNvbnN0IHtkZXN0fSA9IC8qKiBAdHlwZSB7aW1wb3J0KCcuLi9zY2hlbWEvYXJnLXNwZWMnKS5BcmdTcGVjfSAqLyhnZXRBcmdTcGVjKGtleSkpO1xuICAgICAgICAgIF8uc2V0KHVucGFja2VkLCBkZXN0LCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gdGhpcyBjb3VsZCBiZSBhbnl0aGluZyB0aGF0IF9pc24ndF8gYSBzZXJ2ZXIgYXJnXG4gICAgICAgICAgdW5wYWNrZWRba2V5XSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bnBhY2tlZDtcbiAgICAgIH0sXG4gICAgICB7fSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhdGNoZXMgdGhlIGBleGl0KClgIG1ldGhvZCBvZiB0aGUgcGFyc2VyIHRvIHRocm93IGFuIGVycm9yLCBzbyB3ZSBjYW4gaGFuZGxlIGl0IG1hbnVhbGx5LlxuICAgKiBAcGFyYW0ge0FyZ3VtZW50UGFyc2VyfSBwYXJzZXJcbiAgICovXG4gIHN0YXRpYyBfcGF0Y2hFeGl0IChwYXJzZXIpIHtcbiAgICBwYXJzZXIuZXhpdCA9IChjb2RlLCBtc2cpID0+IHtcbiAgICAgIGlmIChjb2RlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzcy5leGl0KCk7XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYXJncGFyc2UnKS5TdWJQYXJzZXJ9IHN1YlBhcnNlclxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuL2FyZ3MnKS5Bcmd1bWVudERlZmluaXRpb25zfVxuICAgKi9cbiAgc3RhdGljIF9hZGRTZXJ2ZXJUb1BhcnNlciAoc3ViUGFyc2VyKSB7XG4gICAgY29uc3Qgc2VydmVyUGFyc2VyID0gc3ViUGFyc2VyLmFkZF9wYXJzZXIoJ3NlcnZlcicsIHtcbiAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgaGVscDogJ1J1biBhbiBBcHBpdW0gc2VydmVyJyxcbiAgICB9KTtcblxuICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHNlcnZlclBhcnNlcik7XG5cbiAgICBjb25zdCBzZXJ2ZXJBcmdzID0gZ2V0U2VydmVyQXJncygpO1xuICAgIGZvciAoY29uc3QgW2ZsYWdzT3JOYW1lcywgb3B0c10gb2Ygc2VydmVyQXJncykge1xuICAgICAgLy8gVFMgZG9lc24ndCBsaWtlIHRoZSBzcHJlYWQgb3BlcmF0b3IgaGVyZS5cbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHNlcnZlclBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgIH1cblxuICAgIHJldHVybiBzZXJ2ZXJBcmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgZXh0ZW5zaW9uIHN1Yi1zdWItY29tbWFuZHMgdG8gYGRyaXZlcmAvYHBsdWdpbmAgc3ViY29tbWFuZHNcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2FyZ3BhcnNlJykuU3ViUGFyc2VyfSBzdWJQYXJzZXJzXG4gICAqL1xuICBzdGF0aWMgX2FkZEV4dGVuc2lvbkNvbW1hbmRzVG9QYXJzZXIgKHN1YlBhcnNlcnMpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgW0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRV0pIHtcbiAgICAgIGNvbnN0IGV4dFBhcnNlciA9IHN1YlBhcnNlcnMuYWRkX3BhcnNlcih0eXBlLCB7XG4gICAgICAgIGFkZF9oZWxwOiB0cnVlLFxuICAgICAgICBoZWxwOiBgQWNjZXNzIHRoZSAke3R5cGV9IG1hbmFnZW1lbnQgQ0xJIGNvbW1hbmRzYCxcbiAgICAgIH0pO1xuXG4gICAgICBBcmdQYXJzZXIuX3BhdGNoRXhpdChleHRQYXJzZXIpO1xuXG4gICAgICBjb25zdCBleHRTdWJQYXJzZXJzID0gZXh0UGFyc2VyLmFkZF9zdWJwYXJzZXJzKHtcbiAgICAgICAgZGVzdDogYCR7dHlwZX1Db21tYW5kYCxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZXh0ZW5zaW9uQXJncyA9IGdldEV4dGVuc2lvbkFyZ3MoKTtcbiAgICAgIGNvbnN0IHBhcnNlclNwZWNzID0gW1xuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ2xpc3QnLFxuICAgICAgICAgIGFyZ3M6IGV4dGVuc2lvbkFyZ3NbdHlwZV0ubGlzdCxcbiAgICAgICAgICBoZWxwOiBgTGlzdCBhdmFpbGFibGUgYW5kIGluc3RhbGxlZCAke3R5cGV9c2AsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAnaW5zdGFsbCcsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5pbnN0YWxsLFxuICAgICAgICAgIGhlbHA6IGBJbnN0YWxsIGEgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAndW5pbnN0YWxsJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVuaW5zdGFsbCxcbiAgICAgICAgICBoZWxwOiBgVW5pbnN0YWxsIGEgJHt0eXBlfWAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjb21tYW5kOiAndXBkYXRlJyxcbiAgICAgICAgICBhcmdzOiBleHRlbnNpb25BcmdzW3R5cGVdLnVwZGF0ZSxcbiAgICAgICAgICBoZWxwOiBgVXBkYXRlIGluc3RhbGxlZCAke3R5cGV9cyB0byB0aGUgbGF0ZXN0IHZlcnNpb25gLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgY29tbWFuZDogJ3J1bicsXG4gICAgICAgICAgYXJnczogZXh0ZW5zaW9uQXJnc1t0eXBlXS5ydW4sXG4gICAgICAgICAgaGVscDpcbiAgICAgICAgICAgIGBSdW4gYSBzY3JpcHQgKGRlZmluZWQgaW5zaWRlIHRoZSAke3R5cGV9J3MgcGFja2FnZS5qc29uIHVuZGVyIHRoZSBgICtcbiAgICAgICAgICAgIGDigJxzY3JpcHRz4oCdIGZpZWxkIGluc2lkZSB0aGUg4oCcYXBwaXVt4oCdIGZpZWxkKSBmcm9tIGFuIGluc3RhbGxlZCAke3R5cGV9YCxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGZvciAoY29uc3Qge2NvbW1hbmQsIGFyZ3MsIGhlbHB9IG9mIHBhcnNlclNwZWNzKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IGV4dFN1YlBhcnNlcnMuYWRkX3BhcnNlcihjb21tYW5kLCB7aGVscH0pO1xuXG4gICAgICAgIEFyZ1BhcnNlci5fcGF0Y2hFeGl0KHBhcnNlcik7XG5cbiAgICAgICAgZm9yIChjb25zdCBbZmxhZ3NPck5hbWVzLCBvcHRzXSBvZiBhcmdzKSB7XG4gICAgICAgICAgLy8gYWRkX2FyZ3VtZW50IG11dGF0ZXMgcGFyYW1zIHNvIG1ha2Ugc3VyZSB0byBzZW5kIGluIGNvcGllcyBpbnN0ZWFkXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoLi4uZmxhZ3NPck5hbWVzLCB7Li4ub3B0c30pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHtAbGluayBBcmdQYXJzZXJ9IGluc3RhbmNlOyBmaW5hbGl6ZXMgdGhlIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQGNvbnN0cnVjdHMgQXJnUGFyc2VyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtkZWJ1Z10gLSBJZiBgdHJ1ZWAsIHRocm93IGluc3RlYWQgb2YgZXhpdCB1cG9uIHBhcnNpbmcgZXJyb3JcbiAqIEByZXR1cm5zIHtBcmdQYXJzZXJ9XG4gKi9cbmZ1bmN0aW9uIGdldFBhcnNlciAoZGVidWcpIHtcbiAgZmluYWxpemVTY2hlbWEoKTtcblxuICByZXR1cm4gbmV3IEFyZ1BhcnNlcihkZWJ1Zyk7XG59XG5cbmV4cG9ydCB7IGdldFBhcnNlciwgQXJnUGFyc2VyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQVNBLE1BQU1BLGVBQWUsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQ3RCLElBQUlDLEdBQUosQ0FBUSxDQUNOQyxzQkFETSxFQUVOQyxzQkFGTSxFQUdOQyw0QkFITSxFQUlOLElBSk0sRUFLTixRQUxNLEVBTU4s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
@@ -1,22 +1,20 @@
1
- export default class PluginCommand extends ExtensionCommand<any> {
1
+ /**
2
+ * @extends {ExtensionCommand<PluginType>}
3
+ */
4
+ export default class PluginCommand extends ExtensionCommand<"plugin"> {
2
5
  /**
3
6
  *
4
- * @param {PluginCommandOptions} opts
7
+ * @param {import('./extension-command').ExtensionCommandOptions<PluginType>} opts
5
8
  */
6
- constructor({ config, json }: PluginCommandOptions);
7
- knownExtensions: Readonly<{
8
- readonly images: "@appium/images-plugin";
9
- readonly 'execute-driver': "@appium/execute-driver-plugin";
10
- readonly 'relaxed-caps': "@appium/relaxed-caps-plugin";
11
- }>;
9
+ constructor({ config, json }: import('./extension-command').ExtensionCommandOptions<PluginType>);
12
10
  install({ plugin, installType, packageName }: {
13
11
  plugin: any;
14
12
  installType: any;
15
13
  packageName: any;
16
- }): Promise<import("./extension-command").ExtRecord<any>>;
14
+ }): Promise<import("./extension-command").ExtRecord<"plugin">>;
17
15
  uninstall({ plugin }: {
18
16
  plugin: any;
19
- }): Promise<import("./extension-command").ExtRecord<any>>;
17
+ }): Promise<import("./extension-command").ExtRecord<"plugin">>;
20
18
  update({ plugin, unsafe }: {
21
19
  plugin: any;
22
20
  unsafe: any;
@@ -29,11 +27,7 @@ export default class PluginCommand extends ExtensionCommand<any> {
29
27
  extName: any;
30
28
  extData: any;
31
29
  }): string;
32
- validateExtensionFields(appiumPkgData: any): void;
33
30
  }
34
- export type PluginCommandOptions = {
35
- config: import('../extension/extension-config').ExtensionConfig<import('../extension/manifest').PluginType>;
36
- json: boolean;
37
- };
31
+ export type PluginType = import('appium/types').PluginType;
38
32
  import ExtensionCommand from "./extension-command";
39
33
  //# sourceMappingURL=plugin-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/plugin-command.js"],"names":[],"mappings":"AAMA;IAEE;;;OAGG;IACH,8BAFW,oBAAoB,EAK9B;IADC;;;;OAAoC;IAGtC;;;;8DAEC;IAED;;8DAEC;IAED;;;qEAEC;IAED;;;yDAEC;IAED;;;eAEC;IAED,kDAUC;CAEF;;YAIa,OAAO,+BAA+B,EAAE,eAAe,CAAC,OAAO,uBAAuB,EAAE,UAAU,CAAC;UACnG,OAAO"}
1
+ {"version":3,"file":"plugin-command.d.ts","sourceRoot":"","sources":["../../../lib/cli/plugin-command.js"],"names":[],"mappings":"AAMA;;GAEG;AACH;IACE;;;OAGG;IACH,8BAFW,OAAO,qBAAqB,EAAE,uBAAuB,CAAC,UAAU,CAAC,EAK3E;IAED;;;;mEAMC;IAED;;mEAEC;IAED;;;qEAEC;IAED;;;yDAEC;IAED;;;eAEC;CAyBF;yBAGY,OAAO,cAAc,EAAE,UAAU"}
@@ -35,7 +35,7 @@ class PluginCommand extends _extensionCommand.default {
35
35
  packageName
36
36
  }) {
37
37
  return await super._install({
38
- ext: plugin,
38
+ installSpec: plugin,
39
39
  installType,
40
40
  packageName
41
41
  });
@@ -45,7 +45,7 @@ class PluginCommand extends _extensionCommand.default {
45
45
  plugin
46
46
  }) {
47
47
  return await super._uninstall({
48
- ext: plugin
48
+ installSpec: plugin
49
49
  });
50
50
  }
51
51
 
@@ -54,7 +54,7 @@ class PluginCommand extends _extensionCommand.default {
54
54
  unsafe
55
55
  }) {
56
56
  return await super._update({
57
- ext: plugin,
57
+ installSpec: plugin,
58
58
  unsafe
59
59
  });
60
60
  }
@@ -64,7 +64,7 @@ class PluginCommand extends _extensionCommand.default {
64
64
  scriptName
65
65
  }) {
66
66
  return await super._run({
67
- ext: plugin,
67
+ installSpec: plugin,
68
68
  scriptName
69
69
  });
70
70
  }
@@ -76,15 +76,15 @@ class PluginCommand extends _extensionCommand.default {
76
76
  return `Plugin ${extName}@${extData.version} successfully installed`.green;
77
77
  }
78
78
 
79
- validateExtensionFields(appiumPkgData) {
80
- const missingFields = REQ_PLUGIN_FIELDS.reduce((acc, field) => appiumPkgData[field] ? acc : [...acc, field], []);
79
+ validateExtensionFields(pluginMetadata, installSpec) {
80
+ const missingFields = REQ_PLUGIN_FIELDS.reduce((acc, field) => pluginMetadata[field] ? acc : [...acc, field], []);
81
81
 
82
82
  if (!_lodash.default.isEmpty(missingFields)) {
83
- throw new Error(`Installed plugin did not expose correct fields for compability ` + `with Appium. Missing fields: ${JSON.stringify(missingFields)}`);
83
+ throw new Error(`Installed plugin "${installSpec}" did not expose correct fields for compability ` + `with Appium. Missing fields: ${JSON.stringify(missingFields)}`);
84
84
  }
85
85
  }
86
86
 
87
87
  }
88
88
 
89
89
  exports.default = PluginCommand;
90
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwibmFtZXMiOlsiUkVRX1BMVUdJTl9GSUVMRFMiLCJQbHVnaW5Db21tYW5kIiwiRXh0ZW5zaW9uQ29tbWFuZCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwianNvbiIsImtub3duRXh0ZW5zaW9ucyIsIktOT1dOX1BMVUdJTlMiLCJpbnN0YWxsIiwicGx1Z2luIiwiaW5zdGFsbFR5cGUiLCJwYWNrYWdlTmFtZSIsIl9pbnN0YWxsIiwiZXh0IiwidW5pbnN0YWxsIiwiX3VuaW5zdGFsbCIsInVwZGF0ZSIsInVuc2FmZSIsIl91cGRhdGUiLCJydW4iLCJzY3JpcHROYW1lIiwiX3J1biIsImdldFBvc3RJbnN0YWxsVGV4dCIsImV4dE5hbWUiLCJleHREYXRhIiwidmVyc2lvbiIsImdyZWVuIiwidmFsaWRhdGVFeHRlbnNpb25GaWVsZHMiLCJhcHBpdW1Qa2dEYXRhIiwibWlzc2luZ0ZpZWxkcyIsInJlZHVjZSIsImFjYyIsImZpZWxkIiwiXyIsImlzRW1wdHkiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsaUJBQWlCLEdBQUcsQ0FBQyxZQUFELEVBQWUsV0FBZixDQUExQjs7QUFFZSxNQUFNQyxhQUFOLFNBQTRCQyx5QkFBNUIsQ0FBNkM7QUFNMURDLEVBQUFBLFdBQVcsQ0FBRTtBQUFDQyxJQUFBQSxNQUFEO0FBQVNDLElBQUFBO0FBQVQsR0FBRixFQUFrQjtBQUMzQixVQUFNO0FBQUNELE1BQUFBLE1BQUQ7QUFBU0MsTUFBQUE7QUFBVCxLQUFOO0FBQ0EsU0FBS0MsZUFBTCxHQUF1QkMsd0JBQXZCO0FBQ0Q7O0FBRVksUUFBUEMsT0FBTyxDQUFFO0FBQUNDLElBQUFBLE1BQUQ7QUFBU0MsSUFBQUEsV0FBVDtBQUFzQkMsSUFBQUE7QUFBdEIsR0FBRixFQUFzQztBQUNqRCxXQUFPLE1BQU0sTUFBTUMsUUFBTixDQUFlO0FBQUNDLE1BQUFBLEdBQUcsRUFBRUosTUFBTjtBQUFjQyxNQUFBQSxXQUFkO0FBQTJCQyxNQUFBQTtBQUEzQixLQUFmLENBQWI7QUFDRDs7QUFFYyxRQUFURyxTQUFTLENBQUU7QUFBQ0wsSUFBQUE7QUFBRCxHQUFGLEVBQVk7QUFDekIsV0FBTyxNQUFNLE1BQU1NLFVBQU4sQ0FBaUI7QUFBQ0YsTUFBQUEsR0FBRyxFQUFFSjtBQUFOLEtBQWpCLENBQWI7QUFDRDs7QUFFVyxRQUFOTyxNQUFNLENBQUU7QUFBQ1AsSUFBQUEsTUFBRDtBQUFTUSxJQUFBQTtBQUFULEdBQUYsRUFBb0I7QUFDOUIsV0FBTyxNQUFNLE1BQU1DLE9BQU4sQ0FBYztBQUFDTCxNQUFBQSxHQUFHLEVBQUVKLE1BQU47QUFBY1EsTUFBQUE7QUFBZCxLQUFkLENBQWI7QUFDRDs7QUFFUSxRQUFIRSxHQUFHLENBQUU7QUFBQ1YsSUFBQUEsTUFBRDtBQUFTVyxJQUFBQTtBQUFULEdBQUYsRUFBd0I7QUFDL0IsV0FBTyxNQUFNLE1BQU1DLElBQU4sQ0FBVztBQUFDUixNQUFBQSxHQUFHLEVBQUVKLE1BQU47QUFBY1csTUFBQUE7QUFBZCxLQUFYLENBQWI7QUFDRDs7QUFFREUsRUFBQUEsa0JBQWtCLENBQUU7QUFBQ0MsSUFBQUEsT0FBRDtBQUFVQyxJQUFBQTtBQUFWLEdBQUYsRUFBc0I7QUFDdEMsV0FBUSxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSx5QkFBckMsQ0FBOERDLEtBQXJFO0FBQ0Q7O0FBRURDLEVBQUFBLHVCQUF1QixDQUFFQyxhQUFGLEVBQWlCO0FBQ3RDLFVBQU1DLGFBQWEsR0FBRzdCLGlCQUFpQixDQUFDOEIsTUFBbEIsQ0FBeUIsQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLEtBQzdDSixhQUFhLENBQUNJLEtBQUQsQ0FBYixHQUF1QkQsR0FBdkIsR0FBNkIsQ0FBQyxHQUFHQSxHQUFKLEVBQVNDLEtBQVQsQ0FEVCxFQUVuQixFQUZtQixDQUF0Qjs7QUFJQSxRQUFJLENBQUNDLGdCQUFFQyxPQUFGLENBQVVMLGFBQVYsQ0FBTCxFQUErQjtBQUM3QixZQUFNLElBQUlNLEtBQUosQ0FBVyxpRUFBRCxHQUNDLGdDQUErQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVSLGFBQWYsQ0FBOEIsRUFEeEUsQ0FBTjtBQUVEO0FBRUY7O0FBekN5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgRXh0ZW5zaW9uQ29tbWFuZCBmcm9tICcuL2V4dGVuc2lvbi1jb21tYW5kJztcbmltcG9ydCB7IEtOT1dOX1BMVUdJTlMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRVFfUExVR0lOX0ZJRUxEUyA9IFsncGx1Z2luTmFtZScsICdtYWluQ2xhc3MnXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ29tbWFuZCBleHRlbmRzIEV4dGVuc2lvbkNvbW1hbmQge1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge1BsdWdpbkNvbW1hbmRPcHRpb25zfSBvcHRzXG4gICAqL1xuICBjb25zdHJ1Y3RvciAoe2NvbmZpZywganNvbn0pIHtcbiAgICBzdXBlcih7Y29uZmlnLCBqc29ufSk7XG4gICAgdGhpcy5rbm93bkV4dGVuc2lvbnMgPSBLTk9XTl9QTFVHSU5TO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbCAoe3BsdWdpbiwgaW5zdGFsbFR5cGUsIHBhY2thZ2VOYW1lfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5faW5zdGFsbCh7ZXh0OiBwbHVnaW4sIGluc3RhbGxUeXBlLCBwYWNrYWdlTmFtZX0pO1xuICB9XG5cbiAgYXN5bmMgdW5pbnN0YWxsICh7cGx1Z2lufSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdW5pbnN0YWxsKHtleHQ6IHBsdWdpbn0pO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlICh7cGx1Z2luLCB1bnNhZmV9KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91cGRhdGUoe2V4dDogcGx1Z2luLCB1bnNhZmV9KTtcbiAgfVxuXG4gIGFzeW5jIHJ1biAoe3BsdWdpbiwgc2NyaXB0TmFtZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX3J1bih7ZXh0OiBwbHVnaW4sIHNjcmlwdE5hbWV9KTtcbiAgfVxuXG4gIGdldFBvc3RJbnN0YWxsVGV4dCAoe2V4dE5hbWUsIGV4dERhdGF9KSB7XG4gICAgcmV0dXJuIGBQbHVnaW4gJHtleHROYW1lfUAke2V4dERhdGEudmVyc2lvbn0gc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZGAuZ3JlZW47XG4gIH1cblxuICB2YWxpZGF0ZUV4dGVuc2lvbkZpZWxkcyAoYXBwaXVtUGtnRGF0YSkge1xuICAgIGNvbnN0IG1pc3NpbmdGaWVsZHMgPSBSRVFfUExVR0lOX0ZJRUxEUy5yZWR1Y2UoKGFjYywgZmllbGQpID0+IChcbiAgICAgIGFwcGl1bVBrZ0RhdGFbZmllbGRdID8gYWNjIDogWy4uLmFjYywgZmllbGRdXG4gICAgKSwgW10pO1xuXG4gICAgaWYgKCFfLmlzRW1wdHkobWlzc2luZ0ZpZWxkcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW5zdGFsbGVkIHBsdWdpbiBkaWQgbm90IGV4cG9zZSBjb3JyZWN0IGZpZWxkcyBmb3IgY29tcGFiaWxpdHkgYCArXG4gICAgICAgICAgICAgICAgICAgICAgYHdpdGggQXBwaXVtLiBNaXNzaW5nIGZpZWxkczogJHtKU09OLnN0cmluZ2lmeShtaXNzaW5nRmllbGRzKX1gKTtcbiAgICB9XG5cbiAgfVxuXG59XG5cbi8qKlxuICogQHR5cGVkZWYgUGx1Z2luQ29tbWFuZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuLi9leHRlbnNpb24vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkNvbmZpZzxpbXBvcnQoJy4uL2V4dGVuc2lvbi9tYW5pZmVzdCcpLlBsdWdpblR5cGU+fSBjb25maWdcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0ganNvblxuICovXG4iXX0=
90
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVFfUExVR0lOX0ZJRUxEUyIsIlBsdWdpbkNvbW1hbmQiLCJFeHRlbnNpb25Db21tYW5kIiwiY29uc3RydWN0b3IiLCJjb25maWciLCJqc29uIiwia25vd25FeHRlbnNpb25zIiwiS05PV05fUExVR0lOUyIsImluc3RhbGwiLCJwbHVnaW4iLCJpbnN0YWxsVHlwZSIsInBhY2thZ2VOYW1lIiwiX2luc3RhbGwiLCJpbnN0YWxsU3BlYyIsInVuaW5zdGFsbCIsIl91bmluc3RhbGwiLCJ1cGRhdGUiLCJ1bnNhZmUiLCJfdXBkYXRlIiwicnVuIiwic2NyaXB0TmFtZSIsIl9ydW4iLCJnZXRQb3N0SW5zdGFsbFRleHQiLCJleHROYW1lIiwiZXh0RGF0YSIsInZlcnNpb24iLCJncmVlbiIsInZhbGlkYXRlRXh0ZW5zaW9uRmllbGRzIiwicGx1Z2luTWV0YWRhdGEiLCJtaXNzaW5nRmllbGRzIiwicmVkdWNlIiwiYWNjIiwiZmllbGQiLCJfIiwiaXNFbXB0eSIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvcGx1Z2luLWNvbW1hbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBFeHRlbnNpb25Db21tYW5kIGZyb20gJy4vZXh0ZW5zaW9uLWNvbW1hbmQnO1xuaW1wb3J0IHtLTk9XTl9QTFVHSU5TfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5jb25zdCBSRVFfUExVR0lOX0ZJRUxEUyA9IFsncGx1Z2luTmFtZScsICdtYWluQ2xhc3MnXTtcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29tbWFuZDxQbHVnaW5UeXBlPn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luQ29tbWFuZCBleHRlbmRzIEV4dGVuc2lvbkNvbW1hbmQge1xuICAvKipcbiAgICpcbiAgICogQHBhcmFtIHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbW1hbmQnKS5FeHRlbnNpb25Db21tYW5kT3B0aW9uczxQbHVnaW5UeXBlPn0gb3B0c1xuICAgKi9cbiAgY29uc3RydWN0b3IgKHtjb25maWcsIGpzb259KSB7XG4gICAgc3VwZXIoe2NvbmZpZywganNvbn0pO1xuICAgIHRoaXMua25vd25FeHRlbnNpb25zID0gS05PV05fUExVR0lOUztcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGwgKHtwbHVnaW4sIGluc3RhbGxUeXBlLCBwYWNrYWdlTmFtZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX2luc3RhbGwoe1xuICAgICAgaW5zdGFsbFNwZWM6IHBsdWdpbixcbiAgICAgIGluc3RhbGxUeXBlLFxuICAgICAgcGFja2FnZU5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyB1bmluc3RhbGwgKHtwbHVnaW59KSB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLl91bmluc3RhbGwoe2luc3RhbGxTcGVjOiBwbHVnaW59KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZSAoe3BsdWdpbiwgdW5zYWZlfSkge1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5fdXBkYXRlKHtpbnN0YWxsU3BlYzogcGx1Z2luLCB1bnNhZmV9KTtcbiAgfVxuXG4gIGFzeW5jIHJ1biAoe3BsdWdpbiwgc2NyaXB0TmFtZX0pIHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuX3J1bih7aW5zdGFsbFNwZWM6IHBsdWdpbiwgc2NyaXB0TmFtZX0pO1xuICB9XG5cbiAgZ2V0UG9zdEluc3RhbGxUZXh0ICh7ZXh0TmFtZSwgZXh0RGF0YX0pIHtcbiAgICByZXR1cm4gYFBsdWdpbiAke2V4dE5hbWV9QCR7ZXh0RGF0YS52ZXJzaW9ufSBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkYC5ncmVlbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgZmllbGRzIGluIGBhcHBpdW1gIGZpZWxkIG9mIGBkcml2ZXJNZXRhZGF0YWBcbiAgICpcbiAgICogRm9yIGFueSBgcGFja2FnZS5qc29uYCBmaWVsZHMgd2hpY2ggYSBkcml2ZXIgcmVxdWlyZXMsIHZhbGlkYXRlIHRoZSB0eXBlIG9mXG4gICAqIHRob3NlIGZpZWxkcyBvbiB0aGUgYHBhY2thZ2UuanNvbmAgZGF0YSwgdGhyb3dpbmcgYW4gZXJyb3IgaWYgYW55dGhpbmcgaXNcbiAgICogYW1pc3MuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5FeHRNZXRhZGF0YTxQbHVnaW5UeXBlPn0gcGx1Z2luTWV0YWRhdGFcbiAgICogQHBhcmFtIHtzdHJpbmd9IGluc3RhbGxTcGVjXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgdmFsaWRhdGVFeHRlbnNpb25GaWVsZHMgKHBsdWdpbk1ldGFkYXRhLCBpbnN0YWxsU3BlYykge1xuICAgIGNvbnN0IG1pc3NpbmdGaWVsZHMgPSBSRVFfUExVR0lOX0ZJRUxEUy5yZWR1Y2UoXG4gICAgICAoYWNjLCBmaWVsZCkgPT4gKHBsdWdpbk1ldGFkYXRhW2ZpZWxkXSA/IGFjYyA6IFsuLi5hY2MsIGZpZWxkXSksXG4gICAgICBbXVxuICAgICk7XG5cbiAgICBpZiAoIV8uaXNFbXB0eShtaXNzaW5nRmllbGRzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgSW5zdGFsbGVkIHBsdWdpbiBcIiR7aW5zdGFsbFNwZWN9XCIgZGlkIG5vdCBleHBvc2UgY29ycmVjdCBmaWVsZHMgZm9yIGNvbXBhYmlsaXR5IGAgK1xuICAgICAgICAgIGB3aXRoIEFwcGl1bS4gTWlzc2luZyBmaWVsZHM6ICR7SlNPTi5zdHJpbmdpZnkobWlzc2luZ0ZpZWxkcyl9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QbHVnaW5UeXBlfSBQbHVnaW5UeXBlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxDQUFDLFlBQUQsRUFBZSxXQUFmLENBQTFCOztBQUtlLE1BQU1DLGFBQU4sU0FBNEJDLHlCQUE1QixDQUE2QztFQUsxREMsV0FBVyxDQUFFO0lBQUNDLE1BQUQ7SUFBU0M7RUFBVCxDQUFGLEVBQWtCO0lBQzNCLE1BQU07TUFBQ0QsTUFBRDtNQUFTQztJQUFULENBQU47SUFDQSxLQUFLQyxlQUFMLEdBQXVCQyx3QkFBdkI7RUFDRDs7RUFFWSxNQUFQQyxPQUFPLENBQUU7SUFBQ0MsTUFBRDtJQUFTQyxXQUFUO0lBQXNCQztFQUF0QixDQUFGLEVBQXNDO0lBQ2pELE9BQU8sTUFBTSxNQUFNQyxRQUFOLENBQWU7TUFDMUJDLFdBQVcsRUFBRUosTUFEYTtNQUUxQkMsV0FGMEI7TUFHMUJDO0lBSDBCLENBQWYsQ0FBYjtFQUtEOztFQUVjLE1BQVRHLFNBQVMsQ0FBRTtJQUFDTDtFQUFELENBQUYsRUFBWTtJQUN6QixPQUFPLE1BQU0sTUFBTU0sVUFBTixDQUFpQjtNQUFDRixXQUFXLEVBQUVKO0lBQWQsQ0FBakIsQ0FBYjtFQUNEOztFQUVXLE1BQU5PLE1BQU0sQ0FBRTtJQUFDUCxNQUFEO0lBQVNRO0VBQVQsQ0FBRixFQUFvQjtJQUM5QixPQUFPLE1BQU0sTUFBTUMsT0FBTixDQUFjO01BQUNMLFdBQVcsRUFBRUosTUFBZDtNQUFzQlE7SUFBdEIsQ0FBZCxDQUFiO0VBQ0Q7O0VBRVEsTUFBSEUsR0FBRyxDQUFFO0lBQUNWLE1BQUQ7SUFBU1c7RUFBVCxDQUFGLEVBQXdCO0lBQy9CLE9BQU8sTUFBTSxNQUFNQyxJQUFOLENBQVc7TUFBQ1IsV0FBVyxFQUFFSixNQUFkO01BQXNCVztJQUF0QixDQUFYLENBQWI7RUFDRDs7RUFFREUsa0JBQWtCLENBQUU7SUFBQ0MsT0FBRDtJQUFVQztFQUFWLENBQUYsRUFBc0I7SUFDdEMsT0FBUSxVQUFTRCxPQUFRLElBQUdDLE9BQU8sQ0FBQ0MsT0FBUSx5QkFBckMsQ0FBOERDLEtBQXJFO0VBQ0Q7O0VBWURDLHVCQUF1QixDQUFFQyxjQUFGLEVBQWtCZixXQUFsQixFQUErQjtJQUNwRCxNQUFNZ0IsYUFBYSxHQUFHN0IsaUJBQWlCLENBQUM4QixNQUFsQixDQUNwQixDQUFDQyxHQUFELEVBQU1DLEtBQU4sS0FBaUJKLGNBQWMsQ0FBQ0ksS0FBRCxDQUFkLEdBQXdCRCxHQUF4QixHQUE4QixDQUFDLEdBQUdBLEdBQUosRUFBU0MsS0FBVCxDQUQzQixFQUVwQixFQUZvQixDQUF0Qjs7SUFLQSxJQUFJLENBQUNDLGdCQUFFQyxPQUFGLENBQVVMLGFBQVYsQ0FBTCxFQUErQjtNQUM3QixNQUFNLElBQUlNLEtBQUosQ0FDSCxxQkFBb0J0QixXQUFZLGtEQUFqQyxHQUNHLGdDQUErQnVCLElBQUksQ0FBQ0MsU0FBTCxDQUFlUixhQUFmLENBQThCLEVBRjVELENBQU47SUFJRDtFQUNGOztBQXhEeUQifQ==
@@ -80,4 +80,4 @@ class RingBuffer {
80
80
  }
81
81
 
82
82
  exports.RingBuffer = RingBuffer;
83
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9jbGkvdXRpbHMuanMiXSwibmFtZXMiOlsiSlNPTl9TUEFDRVMiLCJlcnJBbmRRdWl0IiwianNvbiIsIm1zZyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZXJyb3IiLCJyZWQiLCJzdGRlcnIiLCJwcm9jZXNzIiwiZXhpdCIsInNwaW5XaXRoIiwiZm4iLCJzcGlubmVyIiwic3RhcnQiLCJyZXMiLCJzdWNjZWVkIiwiZXJyIiwiZmFpbCIsIlJpbmdCdWZmZXIiLCJjb25zdHJ1Y3RvciIsInNpemUiLCJidWZmZXIiLCJnZXRCdWZmIiwiZGVxdWV1ZSIsInNoaWZ0IiwiZW5xdWV1ZSIsIml0ZW0iLCJsZW5ndGgiLCJwdXNoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUVBOztBQUVBLE1BQU1BLFdBQVcsR0FBRyxDQUFwQjs7O0FBT0EsU0FBU0MsVUFBVCxDQUFxQkMsSUFBckIsRUFBMkJDLEdBQTNCLEVBQWdDO0FBQzlCLE1BQUlELElBQUosRUFBVTtBQUNSRSxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsSUFBSSxDQUFDQyxTQUFMLENBQWU7QUFBQ0MsTUFBQUEsS0FBSyxFQUFHLEdBQUVMLEdBQUk7QUFBZixLQUFmLEVBQWtDLElBQWxDLEVBQXdDSCxXQUF4QyxDQUFaO0FBQ0QsR0FGRCxNQUVPO0FBQ0xJLElBQUFBLE9BQU8sQ0FBQ0ksS0FBUixDQUFlLEdBQUVMLEdBQUksRUFBUCxDQUFTTSxHQUF2Qjs7QUFDQSxRQUFJTixHQUFHLENBQUNPLE1BQVIsRUFBZ0I7QUFDZE4sTUFBQUEsT0FBTyxDQUFDSSxLQUFSLENBQWUsR0FBRUwsR0FBRyxDQUFDTyxNQUFPLEVBQWQsQ0FBZ0JELEdBQTlCO0FBQ0Q7QUFDRjs7QUFDREUsRUFBQUEsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYjtBQUNEOztBQU9ELFNBQVNQLEdBQVQsQ0FBY0gsSUFBZCxFQUFvQkMsR0FBcEIsRUFBeUI7QUFDdkIsR0FBQ0QsSUFBRCxJQUFTRSxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsR0FBWixDQUFUO0FBQ0Q7O0FBUUQsZUFBZVUsUUFBZixDQUF5QlgsSUFBekIsRUFBK0JDLEdBQS9CLEVBQW9DVyxFQUFwQyxFQUF3QztBQUN0QyxNQUFJWixJQUFKLEVBQVU7QUFDUixXQUFPLE1BQU1ZLEVBQUUsRUFBZjtBQUNEOztBQUNELFFBQU1DLE9BQU8sR0FBRyxrQkFBSVosR0FBSixFQUFTYSxLQUFULEVBQWhCO0FBQ0EsTUFBSUMsR0FBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFBLEdBQUcsR0FBRyxNQUFNSCxFQUFFLEVBQWQ7QUFDQUMsSUFBQUEsT0FBTyxDQUFDRyxPQUFSO0FBQ0EsV0FBT0QsR0FBUDtBQUNELEdBSkQsQ0FJRSxPQUFPRSxHQUFQLEVBQVk7QUFDWkosSUFBQUEsT0FBTyxDQUFDSyxJQUFSO0FBQ0EsVUFBTUQsR0FBTjtBQUNEO0FBQ0Y7O0FBRUQsTUFBTUUsVUFBTixDQUFpQjtBQUNmQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsU0FBS0EsSUFBTCxHQUFZQSxJQUFaO0FBQ0EsU0FBS0MsTUFBTCxHQUFjLEVBQWQ7QUFDRDs7QUFDREMsRUFBQUEsT0FBTyxHQUFJO0FBQ1QsV0FBTyxLQUFLRCxNQUFaO0FBQ0Q7O0FBQ0RFLEVBQUFBLE9BQU8sR0FBSTtBQUNULFNBQUtGLE1BQUwsQ0FBWUcsS0FBWjtBQUNEOztBQUNEQyxFQUFBQSxPQUFPLENBQUVDLElBQUYsRUFBUTtBQUNiLFFBQUksS0FBS0wsTUFBTCxDQUFZTSxNQUFaLElBQXNCLEtBQUtQLElBQS9CLEVBQXFDO0FBQ25DLFdBQUtHLE9BQUw7QUFDRDs7QUFDRCxTQUFLRixNQUFMLENBQVlPLElBQVosQ0FBaUJGLElBQWpCO0FBQ0Q7O0FBaEJjIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5cbmNvbnN0IEpTT05fU1BBQ0VTID0gNDtcblxuLyoqKlxuICogTG9nIGFuIGVycm9yIHRvIHRoZSBjb25zb2xlIGFuZCBleGl0IHRoZSBwcm9jZXNzLlxuICogQHBhcmFtIHtib29sZWFufSBqc29uIC0gd2hldGhlciB3ZSBzaG91bGQgbG9nIGpzb24gb3IgdGV4dFxuICogQHBhcmFtIHthbnl9IG1zZyAtIGVycm9yIG1lc3NhZ2UsIG9iamVjdCwgRXJyb3IgaW5zdGFuY2UsIGV0Yy5cbiAqL1xuZnVuY3Rpb24gZXJyQW5kUXVpdCAoanNvbiwgbXNnKSB7XG4gIGlmIChqc29uKSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe2Vycm9yOiBgJHttc2d9YH0sIG51bGwsIEpTT05fU1BBQ0VTKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5lcnJvcihgJHttc2d9YC5yZWQpO1xuICAgIGlmIChtc2cuc3RkZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke21zZy5zdGRlcnJ9YC5yZWQpO1xuICAgIH1cbiAgfVxuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbi8qKlxuICogQ29uZGl0aW9uYWxseSBsb2cgc29tZXRoaW5nIHRvIHRoZSBjb25zb2xlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGpzb24gLSB3aGV0aGVyIHdlIGFyZSBpbiBqc29uIG1vZGUgKGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBsb2cpXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnIC0gc3RyaW5nIHRvIGxvZ1xuICovXG5mdW5jdGlvbiBsb2cgKGpzb24sIG1zZykge1xuICAhanNvbiAmJiBjb25zb2xlLmxvZyhtc2cpO1xufVxuXG4vKipcbiAqIFN0YXJ0IGEgc3Bpbm5lciwgZXhlY3V0ZSBhbiBhc3luYyBmdW5jdGlvbiwgYW5kIHRoZW4gc3RvcCB0aGUgc3Bpbm5lclxuICogQHBhcmFtIHtib29sZWFufSBqc29uIC0gd2hldGhlciB3ZSBhcmUgaW4ganNvbiBtb2RlIChhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgbG9nKVxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyAtIHN0cmluZyB0byBsb2dcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGZuIC0gZnVuY3Rpb24gdG8gd3JhcCB3aXRoIHNwaW5uaW5nXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHNwaW5XaXRoIChqc29uLCBtc2csIGZuKSB7XG4gIGlmIChqc29uKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZuKCk7XG4gIH1cbiAgY29uc3Qgc3Bpbm5lciA9IG9yYShtc2cpLnN0YXJ0KCk7XG4gIGxldCByZXM7XG4gIHRyeSB7XG4gICAgcmVzID0gYXdhaXQgZm4oKTtcbiAgICBzcGlubmVyLnN1Y2NlZWQoKTtcbiAgICByZXR1cm4gcmVzO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBzcGlubmVyLmZhaWwoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuY2xhc3MgUmluZ0J1ZmZlciB7XG4gIGNvbnN0cnVjdG9yIChzaXplID0gNTApIHtcbiAgICB0aGlzLnNpemUgPSBzaXplO1xuICAgIHRoaXMuYnVmZmVyID0gW107XG4gIH1cbiAgZ2V0QnVmZiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVmZmVyO1xuICB9XG4gIGRlcXVldWUgKCkge1xuICAgIHRoaXMuYnVmZmVyLnNoaWZ0KCk7XG4gIH1cbiAgZW5xdWV1ZSAoaXRlbSkge1xuICAgIGlmICh0aGlzLmJ1ZmZlci5sZW5ndGggPj0gdGhpcy5zaXplKSB7XG4gICAgICB0aGlzLmRlcXVldWUoKTtcbiAgICB9XG4gICAgdGhpcy5idWZmZXIucHVzaChpdGVtKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBlcnJBbmRRdWl0LFxuICBsb2csXG4gIHNwaW5XaXRoLFxuICBKU09OX1NQQUNFUyxcbiAgUmluZ0J1ZmZlclxufTtcbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJKU09OX1NQQUNFUyIsImVyckFuZFF1aXQiLCJqc29uIiwibXNnIiwiY29uc29sZSIsImxvZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcnJvciIsInJlZCIsInN0ZGVyciIsInByb2Nlc3MiLCJleGl0Iiwic3BpbldpdGgiLCJmbiIsInNwaW5uZXIiLCJzdGFydCIsInJlcyIsInN1Y2NlZWQiLCJlcnIiLCJmYWlsIiwiUmluZ0J1ZmZlciIsImNvbnN0cnVjdG9yIiwic2l6ZSIsImJ1ZmZlciIsImdldEJ1ZmYiLCJkZXF1ZXVlIiwic2hpZnQiLCJlbnF1ZXVlIiwiaXRlbSIsImxlbmd0aCIsInB1c2giXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY2xpL3V0aWxzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cblxuaW1wb3J0IG9yYSBmcm9tICdvcmEnO1xuXG5jb25zdCBKU09OX1NQQUNFUyA9IDQ7XG5cbi8qKipcbiAqIExvZyBhbiBlcnJvciB0byB0aGUgY29uc29sZSBhbmQgZXhpdCB0aGUgcHJvY2Vzcy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0ganNvbiAtIHdoZXRoZXIgd2Ugc2hvdWxkIGxvZyBqc29uIG9yIHRleHRcbiAqIEBwYXJhbSB7YW55fSBtc2cgLSBlcnJvciBtZXNzYWdlLCBvYmplY3QsIEVycm9yIGluc3RhbmNlLCBldGMuXG4gKi9cbmZ1bmN0aW9uIGVyckFuZFF1aXQgKGpzb24sIG1zZykge1xuICBpZiAoanNvbikge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHtlcnJvcjogYCR7bXNnfWB9LCBudWxsLCBKU09OX1NQQUNFUykpO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUuZXJyb3IoYCR7bXNnfWAucmVkKTtcbiAgICBpZiAobXNnLnN0ZGVycikge1xuICAgICAgY29uc29sZS5lcnJvcihgJHttc2cuc3RkZXJyfWAucmVkKTtcbiAgICB9XG4gIH1cbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG4vKipcbiAqIENvbmRpdGlvbmFsbHkgbG9nIHNvbWV0aGluZyB0byB0aGUgY29uc29sZVxuICogQHBhcmFtIHtib29sZWFufSBqc29uIC0gd2hldGhlciB3ZSBhcmUgaW4ganNvbiBtb2RlIChhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgbG9nKVxuICogQHBhcmFtIHtzdHJpbmd9IG1zZyAtIHN0cmluZyB0byBsb2dcbiAqL1xuZnVuY3Rpb24gbG9nIChqc29uLCBtc2cpIHtcbiAgIWpzb24gJiYgY29uc29sZS5sb2cobXNnKTtcbn1cblxuLyoqXG4gKiBTdGFydCBhIHNwaW5uZXIsIGV4ZWN1dGUgYW4gYXN5bmMgZnVuY3Rpb24sIGFuZCB0aGVuIHN0b3AgdGhlIHNwaW5uZXJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0ganNvbiAtIHdoZXRoZXIgd2UgYXJlIGluIGpzb24gbW9kZSAoYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGxvZylcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2cgLSBzdHJpbmcgdG8gbG9nXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmbiAtIGZ1bmN0aW9uIHRvIHdyYXAgd2l0aCBzcGlubmluZ1xuICovXG5hc3luYyBmdW5jdGlvbiBzcGluV2l0aCAoanNvbiwgbXNnLCBmbikge1xuICBpZiAoanNvbikge1xuICAgIHJldHVybiBhd2FpdCBmbigpO1xuICB9XG4gIGNvbnN0IHNwaW5uZXIgPSBvcmEobXNnKS5zdGFydCgpO1xuICBsZXQgcmVzO1xuICB0cnkge1xuICAgIHJlcyA9IGF3YWl0IGZuKCk7XG4gICAgc3Bpbm5lci5zdWNjZWVkKCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3Bpbm5lci5mYWlsKCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmNsYXNzIFJpbmdCdWZmZXIge1xuICBjb25zdHJ1Y3RvciAoc2l6ZSA9IDUwKSB7XG4gICAgdGhpcy5zaXplID0gc2l6ZTtcbiAgICB0aGlzLmJ1ZmZlciA9IFtdO1xuICB9XG4gIGdldEJ1ZmYgKCkge1xuICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgfVxuICBkZXF1ZXVlICgpIHtcbiAgICB0aGlzLmJ1ZmZlci5zaGlmdCgpO1xuICB9XG4gIGVucXVldWUgKGl0ZW0pIHtcbiAgICBpZiAodGhpcy5idWZmZXIubGVuZ3RoID49IHRoaXMuc2l6ZSkge1xuICAgICAgdGhpcy5kZXF1ZXVlKCk7XG4gICAgfVxuICAgIHRoaXMuYnVmZmVyLnB1c2goaXRlbSk7XG4gIH1cbn1cblxuZXhwb3J0IHtcbiAgZXJyQW5kUXVpdCxcbiAgbG9nLFxuICBzcGluV2l0aCxcbiAgSlNPTl9TUEFDRVMsXG4gIFJpbmdCdWZmZXJcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBRUEsTUFBTUEsV0FBVyxHQUFHLENBQXBCOzs7QUFPQSxTQUFTQyxVQUFULENBQXFCQyxJQUFyQixFQUEyQkMsR0FBM0IsRUFBZ0M7RUFDOUIsSUFBSUQsSUFBSixFQUFVO0lBQ1JFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxJQUFJLENBQUNDLFNBQUwsQ0FBZTtNQUFDQyxLQUFLLEVBQUcsR0FBRUwsR0FBSTtJQUFmLENBQWYsRUFBa0MsSUFBbEMsRUFBd0NILFdBQXhDLENBQVo7RUFDRCxDQUZELE1BRU87SUFDTEksT0FBTyxDQUFDSSxLQUFSLENBQWUsR0FBRUwsR0FBSSxFQUFQLENBQVNNLEdBQXZCOztJQUNBLElBQUlOLEdBQUcsQ0FBQ08sTUFBUixFQUFnQjtNQUNkTixPQUFPLENBQUNJLEtBQVIsQ0FBZSxHQUFFTCxHQUFHLENBQUNPLE1BQU8sRUFBZCxDQUFnQkQsR0FBOUI7SUFDRDtFQUNGOztFQUNERSxPQUFPLENBQUNDLElBQVIsQ0FBYSxDQUFiO0FBQ0Q7O0FBT0QsU0FBU1AsR0FBVCxDQUFjSCxJQUFkLEVBQW9CQyxHQUFwQixFQUF5QjtFQUN2QixDQUFDRCxJQUFELElBQVNFLE9BQU8sQ0FBQ0MsR0FBUixDQUFZRixHQUFaLENBQVQ7QUFDRDs7QUFRRCxlQUFlVSxRQUFmLENBQXlCWCxJQUF6QixFQUErQkMsR0FBL0IsRUFBb0NXLEVBQXBDLEVBQXdDO0VBQ3RDLElBQUlaLElBQUosRUFBVTtJQUNSLE9BQU8sTUFBTVksRUFBRSxFQUFmO0VBQ0Q7O0VBQ0QsTUFBTUMsT0FBTyxHQUFHLGtCQUFJWixHQUFKLEVBQVNhLEtBQVQsRUFBaEI7RUFDQSxJQUFJQyxHQUFKOztFQUNBLElBQUk7SUFDRkEsR0FBRyxHQUFHLE1BQU1ILEVBQUUsRUFBZDtJQUNBQyxPQUFPLENBQUNHLE9BQVI7SUFDQSxPQUFPRCxHQUFQO0VBQ0QsQ0FKRCxDQUlFLE9BQU9FLEdBQVAsRUFBWTtJQUNaSixPQUFPLENBQUNLLElBQVI7SUFDQSxNQUFNRCxHQUFOO0VBQ0Q7QUFDRjs7QUFFRCxNQUFNRSxVQUFOLENBQWlCO0VBQ2ZDLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtJQUN0QixLQUFLQSxJQUFMLEdBQVlBLElBQVo7SUFDQSxLQUFLQyxNQUFMLEdBQWMsRUFBZDtFQUNEOztFQUNEQyxPQUFPLEdBQUk7SUFDVCxPQUFPLEtBQUtELE1BQVo7RUFDRDs7RUFDREUsT0FBTyxHQUFJO0lBQ1QsS0FBS0YsTUFBTCxDQUFZRyxLQUFaO0VBQ0Q7O0VBQ0RDLE9BQU8sQ0FBRUMsSUFBRixFQUFRO0lBQ2IsSUFBSSxLQUFLTCxNQUFMLENBQVlNLE1BQVosSUFBc0IsS0FBS1AsSUFBL0IsRUFBcUM7TUFDbkMsS0FBS0csT0FBTDtJQUNEOztJQUNELEtBQUtGLE1BQUwsQ0FBWU8sSUFBWixDQUFpQkYsSUFBakI7RUFDRDs7QUFoQmMifQ==
@@ -133,4 +133,4 @@ function normalizeConfig(config) {
133
133
 
134
134
  return normalize(config);
135
135
  }
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWctZmlsZS5qcyJdLCJuYW1lcyI6WyJ5YW1sTG9hZGVyIiwiZmlsZXBhdGgiLCJjb250ZW50IiwieWFtbCIsInBhcnNlIiwicmF3Q29uZmlnIiwiTWFwIiwianNvbkxvYWRlciIsInNldCIsIkpTT04iLCJsb2FkQ29uZmlnRmlsZSIsImxjIiwibG9hZCIsImVyciIsImNvZGUiLCJtZXNzYWdlIiwiU3ludGF4RXJyb3IiLCJzZWFyY2hDb25maWdGaWxlIiwic2VhcmNoIiwiZm9ybWF0RXJyb3JzIiwiZXJyb3JzIiwiY29uZmlnIiwib3B0cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsInNjaGVtYUlkIiwianNvbiIsImZvcm1hdCIsInJlYWRDb25maWdGaWxlIiwibG9hZGVycyIsIm5vRXh0IiwicGFja2FnZVByb3AiLCJyZXN1bHQiLCJpc0VtcHR5IiwicHJldHR5IiwiY29uZmlnUmVzdWx0IiwiXyIsInJlYXNvbiIsImdldCIsIm5vcm1hbGl6ZUNvbmZpZyIsImRlbGV0ZSIsInNjaGVtYSIsIm5vcm1hbGl6ZSIsInNlY3Rpb24iLCJvYmoiLCJpc1VuZGVmaW5lZCIsIm1hcHBlZE9iaiIsIm1hcEtleXMiLCJfXyIsInByb3AiLCJwcm9wZXJ0aWVzIiwiYXBwaXVtQ2xpRGVzdCIsImNhbWVsQ2FzZSIsIm1hcFZhbHVlcyIsInZhbHVlIiwicHJvcGVydHkiLCJuZXh0U2VjdGlvbiIsImlzU2NoZW1hVHlwZU9iamVjdCIsIkJvb2xlYW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFNQSxTQUFTQSxVQUFULENBQXFCQyxRQUFyQixFQUErQkMsT0FBL0IsRUFBd0M7QUFDdEMsU0FBT0MsY0FBS0MsS0FBTCxDQUFXRixPQUFYLENBQVA7QUFDRDs7QUFRRCxNQUFNRyxTQUFTLEdBQUcsSUFBSUMsR0FBSixFQUFsQjs7QUFPQSxTQUFTQyxVQUFULENBQXFCTixRQUFyQixFQUErQkMs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Z0JBQUVpQixTQUFGLENBQVlQLFNBQVosRUFBdUIsQ0FBQ1EsS0FBRCxFQUFRQyxRQUFSLEtBQXFCO0FBQ2pELFlBQU1DLFdBQVcsR0FBR2IsT0FBTyxHQUFJLEdBQUVBLE9BQVEsSUFBR1ksUUFBUyxFQUExQixHQUE4QkEsUUFBekQ7QUFDQSxhQUFPRSxrQkFBa0IsQ0FBQ0gsS0FBRCxDQUFsQixHQUE0QlosU0FBUyxDQUFDckIsTUFBRCxFQUFTbUMsV0FBVCxDQUFyQyxHQUE2REYsS0FBcEU7QUFDRCxLQUhNLENBQVA7QUFJRCxHQVhEOztBQWlCQSxRQUFNRyxrQkFBa0IsR0FBSWhCLE1BQUQsSUFBWWlCLE9BQU8sQ0FBQ2pCLE1BQU0sQ0FBQ1MsVUFBUixDQUE5Qzs7QUFFQSxTQUFPUixTQUFTLENBQUNyQixNQUFELENBQWhCO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBiZXR0ZXJBanZFcnJvcnMgZnJvbSAnQHNpZHZpbmQvYmV0dGVyLWFqdi1lcnJvcnMnO1xuaW1wb3J0IHsgbGlsY29uZmlnIH0gZnJvbSAnbGlsY29uZmlnJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeWFtbCBmcm9tICd5YW1sJztcbmltcG9ydCB7IGdldFNjaGVtYSwgdmFsaWRhdGUgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG4vKipcbiAqIGxpbGNvbmZpZyBsb2FkZXIgdG8gaGFuZGxlIGAueWFtbGAgZmlsZXNcbiAqIEB0eXBlIHtpbXBvcnQoJ2xpbGNvbmZpZycpLkxvYWRlclN5bmN9XG4gKi9cbmZ1bmN0aW9uIHlhbWxMb2FkZXIgKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gIHJldHVybiB5YW1sLnBhcnNlKGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIEEgY2FjaGUgb2YgdGhlIHJhdyBjb25maWcgZmlsZSAoYSBKU09OIHN0cmluZykgYXQgYSBmaWxlcGF0aC5cbiAqIFRoaXMgaXMgdXNlZCBmb3IgYmV0dGVyIGVycm9yIHJlcG9ydGluZy5cbiAqIE5vdGUgdGhhdCBjb25maWcgZmlsZXMgbmVlZG4ndCBiZSBKU09OLCBidXQgaXQgaGVscHMgaWYgdGhleSBhcmUuXG4gKiBAdHlwZSB7TWFwPHN0cmluZyxSYXdKc29uPn1cbiAqL1xuY29uc3QgcmF3Q29uZmlnID0gbmV3IE1hcCgpO1xuXG4vKipcbiAqIEN1c3RvbSBKU09OIGxvYWRlciB0aGF0IGNhY2hlcyB0aGUgcmF3IGNvbmZpZyBmaWxlIChmb3IgdXNlIHdpdGggYGJldHRlci1hanYtZXJyb3JzYCkuXG4gKiBJZiBpdCB3ZXJlbid0IGZvciB0aGlzIGNhY2hlLCB0aGlzIHdvdWxkIGJlIHVubmVjZXNzYXJ5LlxuICogQHR5cGUge2ltcG9ydCgnbGlsY29uZmlnJykuTG9hZGVyU3luY31cbiAqL1xuZnVuY3Rpb24ganNvbkxvYWRlciAoZmlsZXBhdGgsIGNvbnRlbnQpIHtcbiAgcmF3Q29uZmlnLnNldChmaWxlcGF0aCwgY29udGVudCk7XG4gIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnQpO1xufVxuXG4vKipcbiAqIExvYWRzIGEgY29uZmlnIGZpbGUgZnJvbSBhbiBleHBsaWNpdCBwYXRoXG4gKiBAcGFyYW0ge0xpbGNvbmZpZ0FzeW5jU2VhcmNoZXJ9IGxjIC0gbGlsY29uZmlnIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZXBhdGggLSBQYXRoIHRvIGNvbmZpZyBmaWxlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoJ2xpbGNvbmZpZycpLkxpbGNvbmZpZ1Jlc3VsdD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRDb25maWdGaWxlIChsYywgZmlsZXBhdGgpIHtcbiAgdHJ5IHtcbiAgICAvLyByZW1vdmluZyBcImF3YWl0XCIgd2lsbCBjYXVzZSBhbnkgcmVqZWN0aW9uIHRvIF9ub3RfIGJlIGNhdWdodCBpbiB0aGlzIGJsb2NrIVxuICAgIHJldHVybiBhd2FpdCBsYy5sb2FkKGZpbGVwYXRoKTtcbiAgfSBjYXRjaCAoLyoqIEB0eXBlIHt1bmtub3dufSAqL2Vycikge1xuICAgIGlmICgvKiogQHR5cGUge05vZGVKUy5FcnJub0V4Y2VwdGlvbn0gKi8oZXJyKS5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovKGVycikubWVzc2FnZSA9IGBDb25maWcgZmlsZSBub3QgZm91bmQgYXQgdXNlci1wcm92aWRlZCBwYXRoOiAke2ZpbGVwYXRofWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBlbHNlIGlmIChlcnIgaW5zdGFuY2VvZiBTeW50YXhFcnJvcikge1xuICAgICAgLy8gZ2VuZXJhbGx5IGludmFsaWQgSlNPTlxuICAgICAgZXJyLm1lc3NhZ2UgPSBgQ29uZmlnIGZpbGUgYXQgdXNlci1wcm92aWRlZCBwYXRoICR7ZmlsZXBhdGh9IGlzIGludmFsaWQ6XFxuJHtlcnIubWVzc2FnZX1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuLyoqXG4gKiBTZWFyY2hlcyBmb3IgYSBjb25maWcgZmlsZVxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBzZWFyY2hDb25maWdGaWxlIChsYykge1xuICByZXR1cm4gYXdhaXQgbGMuc2VhcmNoKCk7XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gYXJyYXkgb2YgZXJyb3JzIGFuZCB0aGUgcmVzdWx0IG9mIGxvYWRpbmcgYSBjb25maWcgZmlsZSwgZ2VuZXJhdGUgYVxuICogaGVscGZ1bCBzdHJpbmcgZm9yIHRoZSB1c2VyLlxuICpcbiAqIC0gSWYgYG9wdHNgIGNvbnRhaW5zIGEgYGpzb25gIHByb3BlcnR5LCB0aGlzIHNob3VsZCBiZSB0aGUgb3JpZ2luYWwgSlNPTlxuICogICBfc3RyaW5nXyBvZiB0aGUgY29uZmlnIGZpbGUuICBUaGlzIGlzIG9ubHkgYXBwbGljYWJsZSBpZiB0aGUgY29uZmlnIGZpbGVcbiAqICAgd2FzIGluIEpTT04gZm9ybWF0LiBJZiBwcmVzZW50LCBpdCB3aWxsIGFzc29jaWF0ZSBsaW5lIG51bWJlcnMgd2l0aCBlcnJvcnMuXG4gKiAtIElmIGBlcnJvcnNgIGhhcHBlbnMgdG8gYmUgZW1wdHksIHRoaXMgd2lsbCB0aHJvdy5cbiAqIEBwYXJhbSB7aW1wb3J0KCdhanYnKS5FcnJvck9iamVjdFtdfSBlcnJvcnMgLSBOb24tZW1wdHkgYXJyYXkgb2YgZXJyb3JzLiBSZXF1aXJlZC5cbiAqIEBwYXJhbSB7UmVhZENvbmZpZ0ZpbGVSZXN1bHRbJ2NvbmZpZyddfGFueX0gW2NvbmZpZ10gLVxuICogQ29uZmlndXJhdGlvbiAmIG1ldGFkYXRhXG4gKiBAcGFyYW0ge0Zvcm1hdENvbmZpZ0Vycm9yc09wdGlvbnN9IFtvcHRzXVxuICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgZXJyb3JzYCBpcyBlbXB0eVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEVycm9ycyAoZXJyb3JzID0gW10sIGNvbmZpZyA9IHt9LCBvcHRzID0ge30pIHtcbiAgaWYgKGVycm9ycyAmJiAhZXJyb3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FycmF5IG9mIGVycm9ycyBtdXN0IGJlIG5vbi1lbXB0eScpO1xuICB9XG4gIHJldHVybiBiZXR0ZXJBanZFcnJvcnMoZ2V0U2NoZW1hKG9wdHMuc2NoZW1hSWQpLCBjb25maWcsIGVycm9ycywge1xuICAgIGpzb246IG9wdHMuanNvbixcbiAgICBmb3JtYXQ6ICdjbGknLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHaXZlbiBhbiBvcHRpb25hbCBwYXRoLCByZWFkIGEgY29uZmlnIGZpbGUuIFZhbGlkYXRlcyB0aGUgY29uZmlnIGZpbGUuXG4gKlxuICogQ2FsbCB7QGxpbmsgdmFsaWRhdGV9IGlmIHlvdSBhbHJlYWR5IGhhdmUgYSBjb25maWcgb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IFtmaWxlcGF0aF0gLSBQYXRoIHRvIGNvbmZpZyBmaWxlLCBpZiB3ZSBoYXZlIG9uZVxuICogQHBhcmFtIHtSZWFkQ29uZmlnRmlsZU9wdGlvbnN9IFtvcHRzXSAtIE9wdGlvbnNcbiAqIEBwdWJsaWNcbiAqIEByZXR1cm5zIHtQcm9taXNlPFJlYWRDb25maWdGaWxlUmVzdWx0Pn0gQ29udGFpbnMgY29uZmlnIGFuZCBmaWxlcGF0aCwgaWYgZm91bmQsIGFuZCBhbnkgZXJyb3JzXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZWFkQ29uZmlnRmlsZSAoZmlsZXBhdGgsIG9wdHMgPSB7fSkge1xuICBjb25zdCBsYyA9IGxpbGNvbmZpZygnYXBwaXVtJywge1xuICAgIGxvYWRlcnM6IHtcbiAgICAgICcueWFtbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLnltbCc6IHlhbWxMb2FkZXIsXG4gICAgICAnLmpzb24nOiBqc29uTG9hZGVyLFxuICAgICAgbm9FeHQ6IGpzb25Mb2FkZXIsXG4gICAgfSxcbiAgICBwYWNrYWdlUHJvcDogJ2FwcGl1bUNvbmZpZydcbiAgfSk7XG5cbiAgY29uc3QgcmVzdWx0ID0gZmlsZXBhdGhcbiAgICA/IGF3YWl0IGxvYWRDb25maWdGaWxlKGxjLCBmaWxlcGF0aClcbiAgICA6IGF3YWl0IHNlYXJjaENvbmZpZ0ZpbGUobGMpO1xuXG4gIGlmIChyZXN1bHQ/LmZpbGVwYXRoICYmICFyZXN1bHQ/LmlzRW1wdHkpIHtcbiAgICBjb25zdCB7cHJldHR5ID0gdHJ1ZX0gPSBvcHRzO1xuICAgIHRyeSB7XG4gICAgICBsZXQgY29uZmlnUmVzdWx0O1xuICAgICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGUocmVzdWx0LmNvbmZpZyk7XG4gICAgICBpZiAoXy5pc0VtcHR5KGVycm9ycykpIHtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gey4uLnJlc3VsdCwgZXJyb3JzfTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHJlYXNvbiA9IGZvcm1hdEVycm9ycyhlcnJvcnMsIHJlc3VsdC5jb25maWcsIHtcbiAgICAgICAgICBqc29uOiByYXdDb25maWcuZ2V0KHJlc3VsdC5maWxlcGF0aCksXG4gICAgICAgICAgcHJldHR5LFxuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlnUmVzdWx0ID0gcmVhc29uXG4gICAgICAgICAgPyB7Li4ucmVzdWx0LCBlcnJvcnMsIHJlYXNvbn1cbiAgICAgICAgICA6IHsuLi5yZXN1bHQsIGVycm9yc307XG4gICAgICB9XG5cbiAgICAgIC8vIG5vcm1hbGl6ZSAodG8gY2FtZWwgY2FzZSkgYWxsIHRvcC1sZXZlbCBwcm9wZXJ0eSBuYW1lcyBvZiB0aGUgY29uZmlnIGZpbGVcbiAgICAgIGNvbmZpZ1Jlc3VsdC5jb25maWcgPSBub3JtYWxpemVDb25maWcoXG4gICAgICAgIC8qKiBAdHlwZSB7QXBwaXVtQ29uZmlnfSAqLyAoY29uZmlnUmVzdWx0LmNvbmZpZyksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gY29uZmlnUmVzdWx0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBjbGVhbiB1cCB0aGUgcmF3IGNvbmZpZyBmaWxlIGNhY2hlLCB3aGljaCBpcyBvbmx5IGtlcHQgdG8gYmV0dGVyIHJlcG9ydCBlcnJvcnMuXG4gICAgICByYXdDb25maWcuZGVsZXRlKHJlc3VsdC5maWxlcGF0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQgPz8ge307XG59XG5cbi8qKlxuICogQ29udmVydCBzY2hlbWEgcHJvcGVydHkgbmFtZXMgdG8gZWl0aGVyIGEpIHRoZSB2YWx1ZSBvZiB0aGUgYGFwcGl1bUNsaURlc3RgIHByb3BlcnR5LCBpZiBhbnk7IG9yIGIpIGNhbWVsLWNhc2VcbiAqIEBwYXJhbSB7QXBwaXVtQ29uZmlnfSBjb25maWcgLSBDb25maWd1cmF0aW9uIG9iamVjdFxuICogQHJldHVybnMge05vcm1hbGl6ZWRBcHBpdW1Db25maWd9IE5ldyBvYmplY3Qgd2l0aCBjYW1lbC1jYXNlZCBrZXlzIChvciBgZGVzdGAga2V5cykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVDb25maWcgKGNvbmZpZykge1xuICBjb25zdCBzY2hlbWEgPSBnZXRTY2hlbWEoKTtcbiAgLyoqXG4gICAqIEBwYXJhbSB7QXBwaXVtQ29uZmlnfSBjb25maWdcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtzZWN0aW9uXSAtIEtleXBhdGggKGxvZGFzaCBgXy5nZXQoKWAgc3R5bGUpIHRvIHNlY3Rpb24gb2YgY29uZmlnLiBJZiBvbWl0dGVkLCBhc3N1bWUgcm9vdCBBcHBpdW0gY29uZmlnIHNjaGVtYVxuICAgKiBAdG9kbyBSZXdyaXRlIGFzIGEgbG9vcFxuICAgKiBAcmV0dXJucyBOb3JtYWxpemVkIHNlY3Rpb24gb2YgY29uZmlnXG4gICAqL1xuICBjb25zdCBub3JtYWxpemUgPSAoY29uZmlnLCBzZWN0aW9uKSA9PiB7XG4gICAgY29uc3Qgb2JqID0gXy5pc1VuZGVmaW5lZChzZWN0aW9uKSA/IGNvbmZpZyA6IF8uZ2V0KGNvbmZpZywgc2VjdGlvbiwgY29uZmlnKTtcblxuICAgIGNvbnN0IG1hcHBlZE9iaiA9IF8ubWFwS2V5cyhvYmosIChfXywgcHJvcCkgPT5cbiAgICAgIHNjaGVtYS5wcm9wZXJ0aWVzW3Byb3BdPy5hcHBpdW1DbGlEZXN0ID8/IF8uY2FtZWxDYXNlKHByb3ApLFxuICAgICk7XG5cbiAgICByZXR1cm4gXy5tYXBWYWx1ZXMobWFwcGVkT2JqLCAodmFsdWUsIHByb3BlcnR5KSA9PiB7XG4gICAgICBjb25zdCBuZXh0U2VjdGlvbiA9IHNlY3Rpb24gPyBgJHtzZWN0aW9ufS4ke3Byb3BlcnR5fWAgOiBwcm9wZXJ0eTtcbiAgICAgIHJldHVybiBpc1NjaGVtYVR5cGVPYmplY3QodmFsdWUpID8gbm9ybWFsaXplKGNvbmZpZywgbmV4dFNlY3Rpb24pIDogdmFsdWU7XG4gICAgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYHRydWVgIGlmIHRoZSBzY2hlbWEgcHJvcCByZWZlcmVuY2VzIGFuIG9iamVjdCwgb3IgaWYgaXQncyBhbiBvYmplY3QgaXRzZWxmXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdhanYnKS5TY2hlbWFPYmplY3R8b2JqZWN0fSBzY2hlbWEgLSBSZWZlcmVuY2luZyBzY2hlbWEgb2JqZWN0XG4gICAqL1xuICBjb25zdCBpc1NjaGVtYVR5cGVPYmplY3QgPSAoc2NoZW1hKSA9PiBCb29sZWFuKHNjaGVtYS5wcm9wZXJ0aWVzKTtcblxuICByZXR1cm4gbm9ybWFsaXplKGNvbmZpZyk7XG59XG5cbi8qKlxuICogUmVzdWx0IG9mIGNhbGxpbmcge0BsaW5rIHJlYWRDb25maWdGaWxlfS5cbiAqIEB0eXBlZGVmIFJlYWRDb25maWdGaWxlUmVzdWx0XG4gKiBAcHJvcGVydHkge2ltcG9ydCgnYWp2JykuRXJyb3JPYmplY3RbXX0gW2Vycm9yc10gLSBWYWxpZGF0aW9uIGVycm9yc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtmaWxlcGF0aF0gLSBUaGUgcGF0aCB0byB0aGUgY29uZmlnIGZpbGUsIGlmIGZvdW5kXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtpc0VtcHR5XSAtIElmIGB0cnVlYCwgdGhlIGNvbmZpZyBmaWxlIGV4aXN0cyBidXQgaXMgZW1wdHlcbiAqIEBwcm9wZXJ0eSB7Tm9ybWFsaXplZEFwcGl1bUNvbmZpZ30gW2NvbmZpZ10gLSBUaGUgcGFyc2VkIGNvbmZpZ3VyYXRpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfGltcG9ydCgnQHNpZHZpbmQvYmV0dGVyLWFqdi1lcnJvcnMnKS5JT3V0cHV0RXJyb3JbXX0gW3JlYXNvbl0gLSBIdW1hbi1yZWFkYWJsZSBlcnJvciBtZXNzYWdlcyBhbmQgc3VnZ2VzdGlvbnMuIElmIHRoZSBgcHJldHR5YCBvcHRpb24gaXMgYHRydWVgLCB0aGlzIHdpbGwgYmUgYSBuaWNlIHN0cmluZyB0byBwcmludC5cbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayByZWFkQ29uZmlnRmlsZX0uXG4gKiBAdHlwZWRlZiBSZWFkQ29uZmlnRmlsZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3ByZXR0eT10cnVlXSBJZiBgZmFsc2VgLCBkbyBub3QgdXNlIGNvbG9yIGFuZCBmYW5jeSBmb3JtYXR0aW5nIGluIHRoZSBgcmVhc29uYCBwcm9wZXJ0eSBvZiB0aGUge0BsaW5rIFJlYWRDb25maWdGaWxlUmVzdWx0fS4gVGhlIHZhbHVlIG9mIGByZWFzb25gIGlzIHRoZW4gc3VpdGFibGUgZm9yIG1hY2hpbmUtcmVhZGluZy5cbiAqL1xuXG4vKipcbiAqIFRoaXMgaXMgYW4gYEFzeW5jU2VhcmNoZXJgIHdoaWNoIGlzIGluZXhwbGljYWJseSBfbm90XyBleHBvcnRlZCBieSB0aGUgYGxpbGNvbmZpZ2AgdHlwZSBkZWZpbml0aW9uLlxuICogQHR5cGVkZWYge1JldHVyblR5cGU8aW1wb3J0KCdsaWxjb25maWcnKVtcImxpbGNvbmZpZ1wiXT59IExpbGNvbmZpZ0FzeW5jU2VhcmNoZXJcbiAqL1xuXG4vKipcbiAqIFRoZSBjb250ZW50cyBvZiBhbiBBcHBpdW0gY29uZmlnIGZpbGUuIEdlbmVyYXRlZCBmcm9tIHNjaGVtYVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bUNvbmZpZ30gQXBwaXVtQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgYW4gQXBwaXVtIGNvbmZpZyBmaWxlIHdpdGggY2FtZWxjYXNlZCBwcm9wZXJ0eSBuYW1lcyAoYW5kIHVzaW5nIGBhcHBpdW1DbGlEZXN0YCB2YWx1ZSBpZiBwcmVzZW50KS4gR2VuZXJhdGVkIGZyb20ge0BsaW5rIEFwcGl1bUNvbmZpZ31cbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ob3JtYWxpemVkQXBwaXVtQ29uZmlnfSBOb3JtYWxpemVkQXBwaXVtQ29uZmlnXG4gKi9cblxuLyoqXG4gKiBUaGUgc3RyaW5nIHNob3VsZCBiZSBhIHJhdyBKU09OIHN0cmluZy5cbiAqIEB0eXBlZGVmIHtzdHJpbmd9IFJhd0pzb25cbiAqL1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBmb3JtYXRFcnJvcnN9LlxuICogQHR5cGVkZWYgRm9ybWF0Q29uZmlnRXJyb3JzT3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vY29uZmlnLWZpbGUnKS5SYXdKc29ufSBbanNvbl0gLSBSYXcgSlNPTiBjb25maWcgKGFzIHN0cmluZylcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gW3ByZXR0eT10cnVlXSAtIFdoZXRoZXIgdG8gZm9ybWF0IGVycm9ycyBhcyBhIENMSS1mcmllbmRseSBzdHJpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSAgW3NjaGVtYUlkXSAtIFNwZWNpZmljIElEIG9mIGEgcHJvcDsgb3RoZXJ3aXNlIGVudGlyZSBzY2hlbWFcbiAqL1xuIl19
136
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ5YW1sTG9hZGVyIiwiZmlsZXBhdGgiLCJjb250ZW50IiwieWFtbCIsInBhcnNlIiwicmF3Q29uZmlnIiwiTWFwIiwianNvbkxvYWRlciIsInNldCIsIkpTT04iLCJsb2FkQ29uZmlnRmlsZSIsImxjIiwibG9hZCIsImVyciIsImNvZGUiLCJtZXNzYWdlIiwiU3ludGF4RXJyb3IiLCJzZWFyY2hDb25maWdGaWxlIiwic2VhcmNoIiwiZm9ybWF0RXJyb3JzIiwiZXJyb3JzIiwiY29uZmlnIiwib3B0cyIsImxlbmd0aCIsIlR5cGVFcnJvciIsInNjaGVtYUlkIiwianNvbiIsImZvcm1hdCIsInJlYWRDb25maWdGaWxlIiwibG9hZGVycyIsIm5vRXh0IiwicGFja2FnZVByb3AiLCJyZXN1bHQiLCJpc0VtcHR5IiwicHJldHR5IiwiY29uZmlnUmVzdWx0IiwiXyIsInJlYXNvbiIsImdldCIsIm5vcm1hbGl6ZUNvbmZpZyIsImRlbGV0ZSIsInNjaGVtYSIsIm5vcm1hbGl6ZSIsInNlY3Rpb24iLCJvYmoiLCJpc1VuZGVmaW5lZCIsIm1hcHBlZE9iaiIsIm1hcEtleXMiLCJfXyIsInByb3AiLCJwcm9wZXJ0aWVzIiwiYXBwaXVtQ2xpRGVzdCIsImNhbWVsQ2FzZSIsIm1hcFZhbHVlcyIsInZhbHVlIiwicHJvcGVydHkiLCJuZXh0U2VjdGlvbiIsImlzU2NoZW1hVHlwZU9iamVjdCIsIkJvb2xlYW4iXSwic291cmNlcyI6WyIuLi8uLi9saWIvY29uZmlnLWZpbGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgYmV0dGVyQWp2RXJyb3JzIGZyb20gJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJztcbmltcG9ydCB7IGxpbGNvbmZpZyB9IGZyb20gJ2xpbGNvbmZpZyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgeyBnZXRTY2hlbWEsIHZhbGlkYXRlIH0gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcblxuLyoqXG4gKiBsaWxjb25maWcgbG9hZGVyIHRvIGhhbmRsZSBgLnlhbWxgIGZpbGVzXG4gKiBAdHlwZSB7aW1wb3J0KCdsaWxjb25maWcnKS5Mb2FkZXJTeW5jfVxuICovXG5mdW5jdGlvbiB5YW1sTG9hZGVyIChmaWxlcGF0aCwgY29udGVudCkge1xuICByZXR1cm4geWFtbC5wYXJzZShjb250ZW50KTtcbn1cblxuLyoqXG4gKiBBIGNhY2hlIG9mIHRoZSByYXcgY29uZmlnIGZpbGUgKGEgSlNPTiBzdHJpbmcpIGF0IGEgZmlsZXBhdGguXG4gKiBUaGlzIGlzIHVzZWQgZm9yIGJldHRlciBlcnJvciByZXBvcnRpbmcuXG4gKiBOb3RlIHRoYXQgY29uZmlnIGZpbGVzIG5lZWRuJ3QgYmUgSlNPTiwgYnV0IGl0IGhlbHBzIGlmIHRoZXkgYXJlLlxuICogQHR5cGUge01hcDxzdHJpbmcsUmF3SnNvbj59XG4gKi9cbmNvbnN0IHJhd0NvbmZpZyA9IG5ldyBNYXAoKTtcblxuLyoqXG4gKiBDdXN0b20gSlNPTiBsb2FkZXIgdGhhdCBjYWNoZXMgdGhlIHJhdyBjb25maWcgZmlsZSAoZm9yIHVzZSB3aXRoIGBiZXR0ZXItYWp2LWVycm9yc2ApLlxuICogSWYgaXQgd2VyZW4ndCBmb3IgdGhpcyBjYWNoZSwgdGhpcyB3b3VsZCBiZSB1bm5lY2Vzc2FyeS5cbiAqIEB0eXBlIHtpbXBvcnQoJ2xpbGNvbmZpZycpLkxvYWRlclN5bmN9XG4gKi9cbmZ1bmN0aW9uIGpzb25Mb2FkZXIgKGZpbGVwYXRoLCBjb250ZW50KSB7XG4gIHJhd0NvbmZpZy5zZXQoZmlsZXBhdGgsIGNvbnRlbnQpO1xuICByZXR1cm4gSlNPTi5wYXJzZShjb250ZW50KTtcbn1cblxuLyoqXG4gKiBMb2FkcyBhIGNvbmZpZyBmaWxlIGZyb20gYW4gZXhwbGljaXQgcGF0aFxuICogQHBhcmFtIHtMaWxjb25maWdBc3luY1NlYXJjaGVyfSBsYyAtIGxpbGNvbmZpZyBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVwYXRoIC0gUGF0aCB0byBjb25maWcgZmlsZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdsaWxjb25maWcnKS5MaWxjb25maWdSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnRmlsZSAobGMsIGZpbGVwYXRoKSB7XG4gIHRyeSB7XG4gICAgLy8gcmVtb3ZpbmcgXCJhd2FpdFwiIHdpbGwgY2F1c2UgYW55IHJlamVjdGlvbiB0byBfbm90XyBiZSBjYXVnaHQgaW4gdGhpcyBibG9jayFcbiAgICByZXR1cm4gYXdhaXQgbGMubG9hZChmaWxlcGF0aCk7XG4gIH0gY2F0Y2ggKC8qKiBAdHlwZSB7dW5rbm93bn0gKi9lcnIpIHtcbiAgICBpZiAoLyoqIEB0eXBlIHtOb2RlSlMuRXJybm9FeGNlcHRpb259ICovKGVycikuY29kZSA9PT0gJ0VOT0VOVCcpIHtcbiAgICAgIC8qKiBAdHlwZSB7Tm9kZUpTLkVycm5vRXhjZXB0aW9ufSAqLyhlcnIpLm1lc3NhZ2UgPSBgQ29uZmlnIGZpbGUgbm90IGZvdW5kIGF0IHVzZXItcHJvdmlkZWQgcGF0aDogJHtmaWxlcGF0aH1gO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0gZWxzZSBpZiAoZXJyIGluc3RhbmNlb2YgU3ludGF4RXJyb3IpIHtcbiAgICAgIC8vIGdlbmVyYWxseSBpbnZhbGlkIEpTT05cbiAgICAgIGVyci5tZXNzYWdlID0gYENvbmZpZyBmaWxlIGF0IHVzZXItcHJvdmlkZWQgcGF0aCAke2ZpbGVwYXRofSBpcyBpbnZhbGlkOlxcbiR7ZXJyLm1lc3NhZ2V9YDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbi8qKlxuICogU2VhcmNoZXMgZm9yIGEgY29uZmlnIGZpbGVcbiAqIEBwYXJhbSB7TGlsY29uZmlnQXN5bmNTZWFyY2hlcn0gbGMgLSBsaWxjb25maWcgaW5zdGFuY2VcbiAqIEByZXR1cm5zIHtQcm9taXNlPGltcG9ydCgnbGlsY29uZmlnJykuTGlsY29uZmlnUmVzdWx0Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gc2VhcmNoQ29uZmlnRmlsZSAobGMpIHtcbiAgcmV0dXJuIGF3YWl0IGxjLnNlYXJjaCgpO1xufVxuXG4vKipcbiAqIEdpdmVuIGFuIGFycmF5IG9mIGVycm9ycyBhbmQgdGhlIHJlc3VsdCBvZiBsb2FkaW5nIGEgY29uZmlnIGZpbGUsIGdlbmVyYXRlIGFcbiAqIGhlbHBmdWwgc3RyaW5nIGZvciB0aGUgdXNlci5cbiAqXG4gKiAtIElmIGBvcHRzYCBjb250YWlucyBhIGBqc29uYCBwcm9wZXJ0eSwgdGhpcyBzaG91bGQgYmUgdGhlIG9yaWdpbmFsIEpTT05cbiAqICAgX3N0cmluZ18gb2YgdGhlIGNvbmZpZyBmaWxlLiAgVGhpcyBpcyBvbmx5IGFwcGxpY2FibGUgaWYgdGhlIGNvbmZpZyBmaWxlXG4gKiAgIHdhcyBpbiBKU09OIGZvcm1hdC4gSWYgcHJlc2VudCwgaXQgd2lsbCBhc3NvY2lhdGUgbGluZSBudW1iZXJzIHdpdGggZXJyb3JzLlxuICogLSBJZiBgZXJyb3JzYCBoYXBwZW5zIHRvIGJlIGVtcHR5LCB0aGlzIHdpbGwgdGhyb3cuXG4gKiBAcGFyYW0ge2ltcG9ydCgnYWp2JykuRXJyb3JPYmplY3RbXX0gZXJyb3JzIC0gTm9uLWVtcHR5IGFycmF5IG9mIGVycm9ycy4gUmVxdWlyZWQuXG4gKiBAcGFyYW0ge1JlYWRDb25maWdGaWxlUmVzdWx0Wydjb25maWcnXXxhbnl9IFtjb25maWddIC1cbiAqIENvbmZpZ3VyYXRpb24gJiBtZXRhZGF0YVxuICogQHBhcmFtIHtGb3JtYXRDb25maWdFcnJvcnNPcHRpb25zfSBbb3B0c11cbiAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYGVycm9yc2AgaXMgZW1wdHlcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRFcnJvcnMgKGVycm9ycyA9IFtdLCBjb25maWcgPSB7fSwgb3B0cyA9IHt9KSB7XG4gIGlmIChlcnJvcnMgJiYgIWVycm9ycy5sZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcnJheSBvZiBlcnJvcnMgbXVzdCBiZSBub24tZW1wdHknKTtcbiAgfVxuICByZXR1cm4gYmV0dGVyQWp2RXJyb3JzKGdldFNjaGVtYShvcHRzLnNjaGVtYUlkKSwgY29uZmlnLCBlcnJvcnMsIHtcbiAgICBqc29uOiBvcHRzLmpzb24sXG4gICAgZm9ybWF0OiAnY2xpJyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gb3B0aW9uYWwgcGF0aCwgcmVhZCBhIGNvbmZpZyBmaWxlLiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBmaWxlLlxuICpcbiAqIENhbGwge0BsaW5rIHZhbGlkYXRlfSBpZiB5b3UgYWxyZWFkeSBoYXZlIGEgY29uZmlnIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gUGF0aCB0byBjb25maWcgZmlsZSwgaWYgd2UgaGF2ZSBvbmVcbiAqIEBwYXJhbSB7UmVhZENvbmZpZ0ZpbGVPcHRpb25zfSBbb3B0c10gLSBPcHRpb25zXG4gKiBAcHVibGljXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxSZWFkQ29uZmlnRmlsZVJlc3VsdD59IENvbnRhaW5zIGNvbmZpZyBhbmQgZmlsZXBhdGgsIGlmIGZvdW5kLCBhbmQgYW55IGVycm9yc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmVhZENvbmZpZ0ZpbGUgKGZpbGVwYXRoLCBvcHRzID0ge30pIHtcbiAgY29uc3QgbGMgPSBsaWxjb25maWcoJ2FwcGl1bScsIHtcbiAgICBsb2FkZXJzOiB7XG4gICAgICAnLnlhbWwnOiB5YW1sTG9hZGVyLFxuICAgICAgJy55bWwnOiB5YW1sTG9hZGVyLFxuICAgICAgJy5qc29uJzoganNvbkxvYWRlcixcbiAgICAgIG5vRXh0OiBqc29uTG9hZGVyLFxuICAgIH0sXG4gICAgcGFja2FnZVByb3A6ICdhcHBpdW1Db25maWcnXG4gIH0pO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGZpbGVwYXRoXG4gICAgPyBhd2FpdCBsb2FkQ29uZmlnRmlsZShsYywgZmlsZXBhdGgpXG4gICAgOiBhd2FpdCBzZWFyY2hDb25maWdGaWxlKGxjKTtcblxuICBpZiAocmVzdWx0Py5maWxlcGF0aCAmJiAhcmVzdWx0Py5pc0VtcHR5KSB7XG4gICAgY29uc3Qge3ByZXR0eSA9IHRydWV9ID0gb3B0cztcbiAgICB0cnkge1xuICAgICAgbGV0IGNvbmZpZ1Jlc3VsdDtcbiAgICAgIGNvbnN0IGVycm9ycyA9IHZhbGlkYXRlKHJlc3VsdC5jb25maWcpO1xuICAgICAgaWYgKF8uaXNFbXB0eShlcnJvcnMpKSB7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdCA9IHsuLi5yZXN1bHQsIGVycm9yc307XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZWFzb24gPSBmb3JtYXRFcnJvcnMoZXJyb3JzLCByZXN1bHQuY29uZmlnLCB7XG4gICAgICAgICAganNvbjogcmF3Q29uZmlnLmdldChyZXN1bHQuZmlsZXBhdGgpLFxuICAgICAgICAgIHByZXR0eSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdCA9IHJlYXNvblxuICAgICAgICAgID8gey4uLnJlc3VsdCwgZXJyb3JzLCByZWFzb259XG4gICAgICAgICAgOiB7Li4ucmVzdWx0LCBlcnJvcnN9O1xuICAgICAgfVxuXG4gICAgICAvLyBub3JtYWxpemUgKHRvIGNhbWVsIGNhc2UpIGFsbCB0b3AtbGV2ZWwgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGNvbmZpZyBmaWxlXG4gICAgICBjb25maWdSZXN1bHQuY29uZmlnID0gbm9ybWFsaXplQ29uZmlnKFxuICAgICAgICAvKiogQHR5cGUge0FwcGl1bUNvbmZpZ30gKi8gKGNvbmZpZ1Jlc3VsdC5jb25maWcpLFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIGNvbmZpZ1Jlc3VsdDtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gY2xlYW4gdXAgdGhlIHJhdyBjb25maWcgZmlsZSBjYWNoZSwgd2hpY2ggaXMgb25seSBrZXB0IHRvIGJldHRlciByZXBvcnQgZXJyb3JzLlxuICAgICAgcmF3Q29uZmlnLmRlbGV0ZShyZXN1bHQuZmlsZXBhdGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0ID8/IHt9O1xufVxuXG4vKipcbiAqIENvbnZlcnQgc2NoZW1hIHByb3BlcnR5IG5hbWVzIHRvIGVpdGhlciBhKSB0aGUgdmFsdWUgb2YgdGhlIGBhcHBpdW1DbGlEZXN0YCBwcm9wZXJ0eSwgaWYgYW55OyBvciBiKSBjYW1lbC1jYXNlXG4gKiBAcGFyYW0ge0FwcGl1bUNvbmZpZ30gY29uZmlnIC0gQ29uZmlndXJhdGlvbiBvYmplY3RcbiAqIEByZXR1cm5zIHtOb3JtYWxpemVkQXBwaXVtQ29uZmlnfSBOZXcgb2JqZWN0IHdpdGggY2FtZWwtY2FzZWQga2V5cyAob3IgYGRlc3RgIGtleXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplQ29uZmlnIChjb25maWcpIHtcbiAgY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKCk7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0FwcGl1bUNvbmZpZ30gY29uZmlnXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbc2VjdGlvbl0gLSBLZXlwYXRoIChsb2Rhc2ggYF8uZ2V0KClgIHN0eWxlKSB0byBzZWN0aW9uIG9mIGNvbmZpZy4gSWYgb21pdHRlZCwgYXNzdW1lIHJvb3QgQXBwaXVtIGNvbmZpZyBzY2hlbWFcbiAgICogQHRvZG8gUmV3cml0ZSBhcyBhIGxvb3BcbiAgICogQHJldHVybnMgTm9ybWFsaXplZCBzZWN0aW9uIG9mIGNvbmZpZ1xuICAgKi9cbiAgY29uc3Qgbm9ybWFsaXplID0gKGNvbmZpZywgc2VjdGlvbikgPT4ge1xuICAgIGNvbnN0IG9iaiA9IF8uaXNVbmRlZmluZWQoc2VjdGlvbikgPyBjb25maWcgOiBfLmdldChjb25maWcsIHNlY3Rpb24sIGNvbmZpZyk7XG5cbiAgICBjb25zdCBtYXBwZWRPYmogPSBfLm1hcEtleXMob2JqLCAoX18sIHByb3ApID0+XG4gICAgICBzY2hlbWEucHJvcGVydGllc1twcm9wXT8uYXBwaXVtQ2xpRGVzdCA/PyBfLmNhbWVsQ2FzZShwcm9wKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIF8ubWFwVmFsdWVzKG1hcHBlZE9iaiwgKHZhbHVlLCBwcm9wZXJ0eSkgPT4ge1xuICAgICAgY29uc3QgbmV4dFNlY3Rpb24gPSBzZWN0aW9uID8gYCR7c2VjdGlvbn0uJHtwcm9wZXJ0eX1gIDogcHJvcGVydHk7XG4gICAgICByZXR1cm4gaXNTY2hlbWFUeXBlT2JqZWN0KHZhbHVlKSA/IG5vcm1hbGl6ZShjb25maWcsIG5leHRTZWN0aW9uKSA6IHZhbHVlO1xuICAgIH0pO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2NoZW1hIHByb3AgcmVmZXJlbmNlcyBhbiBvYmplY3QsIG9yIGlmIGl0J3MgYW4gb2JqZWN0IGl0c2VsZlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnYWp2JykuU2NoZW1hT2JqZWN0fG9iamVjdH0gc2NoZW1hIC0gUmVmZXJlbmNpbmcgc2NoZW1hIG9iamVjdFxuICAgKi9cbiAgY29uc3QgaXNTY2hlbWFUeXBlT2JqZWN0ID0gKHNjaGVtYSkgPT4gQm9vbGVhbihzY2hlbWEucHJvcGVydGllcyk7XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZShjb25maWcpO1xufVxuXG4vKipcbiAqIFJlc3VsdCBvZiBjYWxsaW5nIHtAbGluayByZWFkQ29uZmlnRmlsZX0uXG4gKiBAdHlwZWRlZiBSZWFkQ29uZmlnRmlsZVJlc3VsdFxuICogQHByb3BlcnR5IHtpbXBvcnQoJ2FqdicpLkVycm9yT2JqZWN0W119IFtlcnJvcnNdIC0gVmFsaWRhdGlvbiBlcnJvcnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZmlsZXBhdGhdIC0gVGhlIHBhdGggdG8gdGhlIGNvbmZpZyBmaWxlLCBpZiBmb3VuZFxuICogQHByb3BlcnR5IHtib29sZWFufSBbaXNFbXB0eV0gLSBJZiBgdHJ1ZWAsIHRoZSBjb25maWcgZmlsZSBleGlzdHMgYnV0IGlzIGVtcHR5XG4gKiBAcHJvcGVydHkge05vcm1hbGl6ZWRBcHBpdW1Db25maWd9IFtjb25maWddIC0gVGhlIHBhcnNlZCBjb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ3xpbXBvcnQoJ0BzaWR2aW5kL2JldHRlci1hanYtZXJyb3JzJykuSU91dHB1dEVycm9yW119IFtyZWFzb25dIC0gSHVtYW4tcmVhZGFibGUgZXJyb3IgbWVzc2FnZXMgYW5kIHN1Z2dlc3Rpb25zLiBJZiB0aGUgYHByZXR0eWAgb3B0aW9uIGlzIGB0cnVlYCwgdGhpcyB3aWxsIGJlIGEgbmljZSBzdHJpbmcgdG8gcHJpbnQuXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgcmVhZENvbmZpZ0ZpbGV9LlxuICogQHR5cGVkZWYgUmVhZENvbmZpZ0ZpbGVPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gSWYgYGZhbHNlYCwgZG8gbm90IHVzZSBjb2xvciBhbmQgZmFuY3kgZm9ybWF0dGluZyBpbiB0aGUgYHJlYXNvbmAgcHJvcGVydHkgb2YgdGhlIHtAbGluayBSZWFkQ29uZmlnRmlsZVJlc3VsdH0uIFRoZSB2YWx1ZSBvZiBgcmVhc29uYCBpcyB0aGVuIHN1aXRhYmxlIGZvciBtYWNoaW5lLXJlYWRpbmcuXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGFuIGBBc3luY1NlYXJjaGVyYCB3aGljaCBpcyBpbmV4cGxpY2FibHkgX25vdF8gZXhwb3J0ZWQgYnkgdGhlIGBsaWxjb25maWdgIHR5cGUgZGVmaW5pdGlvbi5cbiAqIEB0eXBlZGVmIHtSZXR1cm5UeXBlPGltcG9ydCgnbGlsY29uZmlnJylbXCJsaWxjb25maWdcIl0+fSBMaWxjb25maWdBc3luY1NlYXJjaGVyXG4gKi9cblxuLyoqXG4gKiBUaGUgY29udGVudHMgb2YgYW4gQXBwaXVtIGNvbmZpZyBmaWxlLiBHZW5lcmF0ZWQgZnJvbSBzY2hlbWFcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Db25maWd9IEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIGNvbnRlbnRzIG9mIGFuIEFwcGl1bSBjb25maWcgZmlsZSB3aXRoIGNhbWVsY2FzZWQgcHJvcGVydHkgbmFtZXMgKGFuZCB1c2luZyBgYXBwaXVtQ2xpRGVzdGAgdmFsdWUgaWYgcHJlc2VudCkuIEdlbmVyYXRlZCBmcm9tIHtAbGluayBBcHBpdW1Db25maWd9XG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuTm9ybWFsaXplZEFwcGl1bUNvbmZpZ30gTm9ybWFsaXplZEFwcGl1bUNvbmZpZ1xuICovXG5cbi8qKlxuICogVGhlIHN0cmluZyBzaG91bGQgYmUgYSByYXcgSlNPTiBzdHJpbmcuXG4gKiBAdHlwZWRlZiB7c3RyaW5nfSBSYXdKc29uXG4gKi9cblxuLyoqXG4gKiBPcHRpb25zIGZvciB7QGxpbmsgZm9ybWF0RXJyb3JzfS5cbiAqIEB0eXBlZGVmIEZvcm1hdENvbmZpZ0Vycm9yc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2NvbmZpZy1maWxlJykuUmF3SnNvbn0gW2pzb25dIC0gUmF3IEpTT04gY29uZmlnIChhcyBzdHJpbmcpXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IFtwcmV0dHk9dHJ1ZV0gLSBXaGV0aGVyIHRvIGZvcm1hdCBlcnJvcnMgYXMgYSBDTEktZnJpZW5kbHkgc3RyaW5nXG4gKiBAcHJvcGVydHkge3N0cmluZ30gIFtzY2hlbWFJZF0gLSBTcGVjaWZpYyBJRCBvZiBhIHByb3A7IG90aGVyd2lzZSBlbnRpcmUgc2NoZW1hXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQU1BLFNBQVNBLFVBQVQsQ0FBcUJDLFFBQXJCLEVBQStCQyxPQUEvQixFQUF3QztFQUN0QyxPQUFPQyxjQUFLQyxLQUFMLENBQVdGLE9BQVgsQ0FBUDtBQUNEOztBQVFELE1BQU1HLFNBQVMsR0FBRyxJQUFJQyxHQUFKLEVBQWxCOztBQU9BLFNBQVND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
@@ -1,4 +1,5 @@
1
- export type ParsedArgs = import('../types/cli').ParsedArgs;
1
+ export type ParsedArgs = import('../types').ParsedArgs;
2
+ export type Args = import('../types').Args;
2
3
  export type ArgSpec = import("./schema/arg-spec").ArgSpec<any>;
3
4
  /**
4
5
  * Mutable object containing Appium build information. By default it
@@ -17,10 +18,10 @@ export function warnNodeDeprecations(): void;
17
18
  export function validateTmpDir(tmpDir: string): Promise<void>;
18
19
  /**
19
20
  * Returns k/v pairs of server arguments which are _not_ the defaults.
20
- * @param {ParsedArgs} parsedArgs
21
- * @returns {Partial<ParsedArgs>}
21
+ * @param {Args} parsedArgs
22
+ * @returns {Args}
22
23
  */
23
- export function getNonDefaultServerArgs(parsedArgs: ParsedArgs): Partial<ParsedArgs>;
24
+ export function getNonDefaultServerArgs(parsedArgs: Args): Args;
24
25
  export function getGitRev(useGithubApiFallback?: boolean): Promise<any>;
25
26
  export const APPIUM_VER: any;
26
27
  export function updateBuildInfo(useGithubApiFallback?: boolean): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"yBAoTa,OAAO,cAAc,EAAE,UAAU;;AAzL9C;;;;;;GAMG;AACH,gCAFa,OAAO,cAAc,EAAE,SAAS,CAI5C;AAED,oCAKC;AAgBD,+CAGC;AAjBD,6CAYC;AAsID;;GAEG;AACH,uCAFW,MAAM,iBAShB;AAzID;;;;GAIG;AACH,oDAHW,UAAU,GACR,QAAQ,UAAU,CAAC,CA8E/B;AA5LD,wEA8BC;AAvED,6BAAsC;AAkBtC,+EAUC;AAwND;;;;;;;;;;GAUG;AACH,0DALW,QAAQ,UAAU,CAAC,gBACnB,OAAO,eAAe,EAAE,oBAAoB,YAC5C,QAAQ,UAAU,CAAC,cACnB,UAAU,QAoBpB;AAcD,6BAAuC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../lib/config.js"],"names":[],"mappings":"yBAoTa,OAAO,UAAU,EAAE,UAAU;mBAC7B,OAAO,UAAU,EAAE,IAAI;;AA1LpC;;;;;;GAMG;AACH,gCAFa,OAAO,cAAc,EAAE,SAAS,CAI5C;AAED,oCAKC;AAgBD,+CAGC;AAjBD,6CAYC;AAsID;;GAEG;AACH,uCAFW,MAAM,iBAShB;AAzID;;;;GAIG;AACH,oDAHW,IAAI,GACF,IAAI,CA8EhB;AA5LD,wEA8BC;AAvED,6BAAsC;AAkBtC,+EAUC;AAwND;;;;;;;;;;GAUG;AACH,0DALW,QAAQ,UAAU,CAAC,gBACnB,OAAO,eAAe,EAAE,oBAAoB,YAC5C,QAAQ,UAAU,CAAC,cACnB,UAAU,QAoBpB;AAcD,6BAAuC"}
@@ -252,4 +252,4 @@ async function validateTmpDir(tmpDir) {
252
252
  const rootDir = _support.fs.findRoot(__dirname);
253
253
 
254
254
  exports.rootDir = rootDir;
255
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25maWcuanMiXSwibmFtZXMiOlsibnBtUGFja2FnZSIsImZzIiwicmVhZFBhY2thZ2VKc29uRnJvbSIsIl9fZGlybmFtZSIsIkFQUElVTV9WRVIiLCJ2ZXJzaW9uIiwiTUlOX05PREVfVkVSU0lPTiIsImVuZ2luZXMiLCJub2RlIiwiR0lUX01FVEFfUk9PVCIsIkdJVF9CSU5BUlkiLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJHSVRIVUJfQVBJIiwiQlVJTERfSU5GTyIsImdldE5vZGVWZXJzaW9uIiwic2VtdmVyIiwiY29lcmNlIiwicHJvY2VzcyIsInVwZGF0ZUJ1aWxkSW5mbyIsInVzZUdpdGh1YkFwaUZhbGxiYWNrIiwic2hhIiwiZ2V0R2l0UmV2IiwiYnVpbHQiLCJnZXRHaXRUaW1lc3RhbXAiLCJmaW5kR2l0Um9vdCIsImN3ZCIsInJvb3REaXIiLCJ0eXBlIiwiZ2l0Um9vdCIsInN0ZG91dCIsInRyaW0iLCJpZ24iLCJyZXNCb2R5T2JqIiwiYXhpb3MiLCJnZXQiLCJoZWFkZXJzIiwiZGF0YSIsIl8iLCJpc0FycmF5IiwibmFtZSIsImNvbW1pdCIsImNvbW1pdFNoYSIsImNvbW1pdHRlciIsImRhdGUiLCJhdXRob3IiLCJnZXRCdWlsZEluZm8iLCJjaGVja05vZGVPayIsInNhdGlzZmllcyIsImxvZ2dlciIsImVycm9yQW5kVGhyb3ciLCJ3YXJuTm9kZURlcHJlY2F0aW9ucyIsInNob3dCdWlsZEluZm8iLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzIiwicGFyc2VkQXJncyIsImZsYXR0ZW4iLCJhcmdzIiwiYXJnU3BlY3MiLCJmbGF0dGVuZWQiLCJyZWR1Y2UiLCJ2YWx1ZXMiLCJhY2MiLCJhcmdTcGVjIiwiaGFzIiwiZGVzdCIsInZhbHVlIiwidHlwZXNEaWZmZXIiLCJkZWZhdWx0c0Zyb21TY2hlbWEiLCJkZWZhdWx0VmFsdWVJc0FycmF5IiwiYXJnc1ZhbHVlSXNBcnJheSIsImFycmF5c0RpZmZlciIsImd0Iiwic2l6ZSIsImRpZmZlcmVuY2UiLCJ2YWx1ZXNEaWZmZXIiLCJkZWZhdWx0SXNEZWZpbmVkIiwiaXNVbmRlZmluZWQiLCJhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXIiLCJvdmVyU29tZSIsIm5lZ2F0ZSIsImRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyIiwib3ZlckV2ZXJ5IiwiaXNOb3REZWZhdWx0IiwicGlja0J5IiwiX18iLCJrZXkiLCJzZXQiLCJjb21wYWN0Q29uZmlnIiwicGFydGlhbCIsIm9taXRCeSIsImlzT2JqZWN0IiwiaXNFbXB0eSIsInNob3dDb25maWciLCJub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncyIsImNvbmZpZ1Jlc3VsdCIsImRlZmF1bHRzIiwiZGlyIiwiY29uZmlnIiwiZmlsZXBhdGgiLCJ2YWxpZGF0ZVRtcERpciIsInRtcERpciIsIm1rZGlycCIsImUiLCJFcnJvciIsImZpbmRSb290Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxVQUFVLEdBQUdDLFlBQUdDLG1CQUFILENBQXVCQyxTQUF2QixDQUFuQjs7QUFFQSxNQUFNQyxVQUFVLEdBQUdKLFVBQVUsQ0FBQ0ssT0FBOUI7O0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUdOLFVBQVUsQ0FBQ08sT0FBWCxDQUFtQkMsSUFBNUM7QUFFQSxNQUFNQyxhQUFhLEdBQUcsTUFBdEI7QUFDQSxNQUFNQyxVQUFVLEdBQUksTUFBS0MsZ0JBQU9DLFNBQVAsS0FBcUIsTUFBckIsR0FBOEIsRUFBRyxFQUExRDtBQUNBLE1BQU1DLFVBQVUsR0FBRyw0Q0FBbkI7QUFLQSxNQUFNQyxVQUFVLEdBQUc7QUFDakJULEVBQUFBLE9BQU8sRUFBRUQ7QUFEUSxDQUFuQjs7QUFJQSxTQUFTVyxjQUFULEdBQTJCO0FBQ3pCLFNBQThDQyxnQkFBT0Ms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Q0QsTUFBSWhCLGdCQUFFeUQsT0FBRixDQUFVRSw2QkFBVixDQUFKLEVBQThDO0FBQzVDNUMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQWEsZ0NBQWI7QUFDRCxHQUZELE1BRU87QUFDTEQsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVksK0JBQVo7QUFDQUQsSUFBQUEsT0FBTyxDQUFDK0MsR0FBUixDQUFZVCxhQUFhLENBQUNNLDZCQUFELENBQXpCO0FBQ0Q7O0FBQ0Q1QyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSwwQkFBWjtBQUNBRCxFQUFBQSxPQUFPLENBQUMrQyxHQUFSLENBQVlULGFBQWEsQ0FBQ2pDLFVBQUQsQ0FBekI7QUFDRDs7QUFLRCxlQUFlNkMsY0FBZixDQUErQkMsTUFBL0IsRUFBdUM7QUFDckMsTUFBSTtBQUNGLFVBQU12RyxZQUFHd0csTUFBSCxDQUFVRCxNQUFWLENBQU47QUFDRCxHQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFVO0FBQ1YsVUFBTSxJQUFJQyxLQUFKLENBQVcsc0RBQUQsR0FDQyxJQUFHSCxNQUFPLDRDQURyQixDQUFOO0FBRUQ7QUFDRjs7QUFFRCxNQUFNN0UsT0FBTyxHQUFHMUIsWUFBRzJHLFFBQUgsQ0FBWXpHLFNBQVosQ0FBaEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgc3lzdGVtLCBmcyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbmltcG9ydCBmaW5kVXAgZnJvbSAnZmluZC11cCc7XG5pbXBvcnQgeyBnZXREZWZhdWx0c0ZvclNjaGVtYSwgZ2V0QWxsQXJnU3BlY3MgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuXG5jb25zdCBucG1QYWNrYWdlID0gZnMucmVhZFBhY2thZ2VKc29uRnJvbShfX2Rpcm5hbWUpO1xuXG5jb25zdCBBUFBJVU1fVkVSID0gbnBtUGFja2FnZS52ZXJzaW9uO1xuY29uc3QgTUlOX05PREVfVkVSU0lPTiA9IG5wbVBhY2thZ2UuZW5naW5lcy5ub2RlO1xuXG5jb25zdCBHSVRfTUVUQV9ST09UID0gJy5naXQnO1xuY29uc3QgR0lUX0JJTkFSWSA9IGBnaXQke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWA7XG5jb25zdCBHSVRIVUJfQVBJID0gJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3MvYXBwaXVtL2FwcGl1bSc7XG5cbi8qKlxuICogQHR5cGUge2ltcG9ydCgnLi4vdHlwZXMvY2xpJykuQnVpbGRJbmZvfVxuICovXG5jb25zdCBCVUlMRF9JTkZPID0ge1xuICB2ZXJzaW9uOiBBUFBJVU1fVkVSLFxufTtcblxuZnVuY3Rpb24gZ2V0Tm9kZVZlcnNpb24gKCkge1xuICByZXR1cm4gLyoqIEB0eXBlIHtpbXBvcnQoJ3NlbXZlcicpLlNlbVZlcn0gKi8oc2VtdmVyLmNvZXJjZShwcm9jZXNzLnZlcnNpb24pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQnVpbGRJbmZvICh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IHNoYSA9IGF3YWl0IGdldEdpdFJldih1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmICghc2hhKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIEJVSUxEX0lORk9bJ2dpdC1zaGEnXSA9IHNoYTtcbiAgY29uc3QgYnVpbHQgPSBhd2FpdCBnZXRHaXRUaW1lc3RhbXAoc2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayk7XG4gIGlmIChidWlsdCkge1xuICAgIEJVSUxEX0lORk8uYnVpbHQgPSBidWlsdDtcbiAgfVxufVxuXG4vKipcbiAqIEZpbmRzIHRoZSBHaXQgbWV0YWRhdGEgZGlyIChzZWUgYEdJVF9NRVRBX1JPT1RgKVxuICpcbiAqIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgQXBwaXVtIGNhbm5vdCBhc3N1bWUgYHBhY2thZ2UuanNvbmAgYW5kIGAuZ2l0YCBhcmUgaW4gdGhlIHNhbWVcbiAqIGRpcmVjdG9yeS4gIE1vbm9yZXBvcywgc2VlP1xuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59IFBhdGggdG8gZGlyIG9yIGB1bmRlZmluZWRgIGlmIG5vdCBmb3VuZFxuICovXG5hc3luYyBmdW5jdGlvbiBmaW5kR2l0Um9vdCAoKSB7XG4gIHJldHVybiBhd2FpdCBmaW5kVXAoR0lUX01FVEFfUk9PVCwge2N3ZDogcm9vdERpciwgdHlwZTogJ2RpcmVjdG9yeSd9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0UmV2ICh1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydyZXYtcGFyc2UnLCAnSEVBRCddLCB7XG4gICAgICAgIGN3ZDogZ2l0Um9vdFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gIH1cblxuICBpZiAoIXVzZUdpdGh1YkFwaUZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB0cnkge1xuICAgIGNvbnN0IHJlc0JvZHlPYmogPSAoYXdhaXQgYXhpb3MuZ2V0KGAke0dJVEhVQl9BUEl9L3RhZ3NgLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChfLmlzQXJyYXkocmVzQm9keU9iaikpIHtcbiAgICAgIGZvciAoY29uc3Qge25hbWUsIGNvbW1pdH0gb2YgcmVzQm9keU9iaikge1xuICAgICAgICBpZiAobmFtZSA9PT0gYHYke0FQUElVTV9WRVJ9YCAmJiBjb21taXQgJiYgY29tbWl0LnNoYSkge1xuICAgICAgICAgIHJldHVybiBjb21taXQuc2hhO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21taXRTaGFcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3VzZUdpdGh1YkFwaUZhbGxiYWNrXVxuICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEdpdFRpbWVzdGFtcCAoY29tbWl0U2hhLCB1c2VHaXRodWJBcGlGYWxsYmFjayA9IGZhbHNlKSB7XG4gIGNvbnN0IGdpdFJvb3QgPSBhd2FpdCBmaW5kR2l0Um9vdCgpO1xuICBpZiAoZ2l0Um9vdCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoR0lUX0JJTkFSWSwgWydzaG93JywgJy1zJywgJy0tZm9ybWF0PSVjaScsIGNvbW1pdFNoYV0sIHtcbiAgICAgICAgY3dkOiBnaXRSb290XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGlmICghdXNlR2l0aHViQXBpRmFsbGJhY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzQm9keU9iaiA9IChhd2FpdCBheGlvcy5nZXQoYCR7R0lUSFVCX0FQSX0vY29tbWl0cy8ke2NvbW1pdFNoYX1gLCB7XG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdVc2VyLUFnZW50JzogYEFwcGl1bSAke0FQUElVTV9WRVJ9YFxuICAgICAgfVxuICAgIH0pKS5kYXRhO1xuICAgIGlmIChyZXNCb2R5T2JqICYmIHJlc0JvZHlPYmouY29tbWl0KSB7XG4gICAgICBpZiAocmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyICYmIHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlci5kYXRlKSB7XG4gICAgICAgIHJldHVybiByZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIuZGF0ZTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IgJiYgcmVzQm9keU9iai5jb21taXQuYXV0aG9yLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmouY29tbWl0LmF1dGhvci5kYXRlO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoaWduKSB7fVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBNdXRhYmxlIG9iamVjdCBjb250YWluaW5nIEFwcGl1bSBidWlsZCBpbmZvcm1hdGlvbi4gQnkgZGVmYXVsdCBpdFxuICogb25seSBjb250YWlucyB0aGUgQXBwaXVtIHZlcnNpb24sIGJ1dCBpcyB1cGRhdGVkIHdpdGggdGhlIGJ1aWxkIHRpbWVzdGFtcFxuICogYW5kIGdpdCBjb21taXQgaGFzaCBhc3luY2hyb25vdXNseSBhcyBzb29uIGFzIGB1cGRhdGVCdWlsZEluZm9gIGlzIGNhbGxlZFxuICogYW5kIHN1Y2NlZWRzLlxuICogQHJldHVybnMge2ltcG9ydCgnLi4vdHlwZXMvY2xpJykuQnVpbGRJbmZvfVxuICovXG5mdW5jdGlvbiBnZXRCdWlsZEluZm8gKCkge1xuICByZXR1cm4gQlVJTERfSU5GTztcbn1cblxuZnVuY3Rpb24gY2hlY2tOb2RlT2sgKCkge1xuICBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgaWYgKCFzZW12ZXIuc2F0aXNmaWVzKHZlcnNpb24sIE1JTl9OT0RFX1ZFUlNJT04pKSB7XG4gICAgbG9nZ2VyLmVycm9yQW5kVGhyb3coYE5vZGUgdmVyc2lvbiBtdXN0IGJlICR7TUlOX05PREVfVkVSU0lPTn0uIEN1cnJlbnRseSAke3ZlcnNpb24udmVyc2lvbn1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB3YXJuTm9kZURlcHJlY2F0aW9ucyAoKSB7XG4gIC8qKlxuICAgKiBVbmNvbW1lbnQgdGhpcyBzZWN0aW9uIHRvIGdldCBub2RlIHZlcnNpb24gZGVwcmVjYXRpb24gd2FybmluZ3NcbiAgICogQWxzbyBhZGQgdGVzdCBjYXNlcyB0byBjb25maWctc3BlY3MuanMgdG8gY292ZXIgdGhlIGNhc2VzIGFkZGVkXG4gICAqKi9cblxuICAvLyBjb25zdCB2ZXJzaW9uID0gZ2V0Tm9kZVZlcnNpb24oKTtcbiAgLy8gaWYgKHZlcnNpb24ubWFqb3IgPCA4KSB7XG4gIC8vICAgbG9nZ2VyLndhcm4oYEFwcGl1bSBzdXBwb3J0IGZvciB2ZXJzaW9ucyBvZiBub2RlIDwgJHt2ZXJzaW9uLm1ham9yfSBoYXMgYmVlbiBgICtcbiAgLy8gICAgICAgICAgICAgICAnZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24uIFBsZWFzZSAnICtcbiAgLy8gICAgICAgICAgICAgICAndXBncmFkZSEnKTtcbiAgLy8gfVxufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93QnVpbGRJbmZvICgpIHtcbiAgYXdhaXQgdXBkYXRlQnVpbGRJbmZvKHRydWUpO1xuICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShnZXRCdWlsZEluZm8oKSkpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGsvdiBwYWlycyBvZiBzZXJ2ZXIgYXJndW1lbnRzIHdoaWNoIGFyZSBfbm90XyB0aGUgZGVmYXVsdHMuXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IHBhcnNlZEFyZ3NcbiAqIEByZXR1cm5zIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fVxuICovXG5mdW5jdGlvbiBnZXROb25EZWZhdWx0U2VydmVyQXJncyAocGFyc2VkQXJncykge1xuICAvKipcbiAgICogRmxhdHRlbnMgcGFyc2VkIGFyZ3MgaW50byBhIHNpbmdsZSBsZXZlbCBvYmplY3QgZm9yIGNvbXBhcmlzb24gd2l0aFxuICAgKiBmbGF0dGVuZWQgZGVmYXVsdHMgYWNyb3NzIHNlcnZlciBhcmdzIGFuZCBleHRlbnNpb24gYXJncy5cbiAgICogQHBhcmFtIHtQYXJzZWRBcmdzfSBhcmdzXG4gICAqIEByZXR1cm5zIHtSZWNvcmQ8c3RyaW5nLCB7IHZhbHVlOiBhbnksIGFyZ1NwZWM6IEFyZ1NwZWMgfT59XG4gICAqL1xuICBjb25zdCBmbGF0dGVuID0gKGFyZ3MpID0+IHtcbiAgICBjb25zdCBhcmdTcGVjcyA9IGdldEFsbEFyZ1NwZWNzKCk7XG4gICAgY29uc3QgZmxhdHRlbmVkID0gXy5yZWR1Y2UoWy4uLmFyZ1NwZWNzLnZhbHVlcygpXSwgKGFjYywgYXJnU3BlYykgPT4ge1xuICAgICAgaWYgKF8uaGFzKGFyZ3MsIGFyZ1NwZWMuZGVzdCkpIHtcbiAgICAgICAgYWNjW2FyZ1NwZWMuZGVzdF0gPSB7dmFsdWU6IF8uZ2V0KGFyZ3MsIGFyZ1NwZWMuZGVzdCksIGFyZ1NwZWN9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCAvKiogQHR5cGUge1JlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueSwgYXJnU3BlYzogQXJnU3BlYyB9Pn0gKi8oe30pKTtcblxuICAgIHJldHVybiBmbGF0dGVuZWQ7XG4gIH07XG5cbiAgY29uc3QgYXJncyA9IGZsYXR0ZW4ocGFyc2VkQXJncyk7XG5cbiAgLy8gaG9wZWZ1bGx5IHRoZXNlIGZ1bmN0aW9uIG5hbWVzIGFyZSBkZXNjcmlwdGl2ZSBlbm91Z2hcbiAgY29uc3QgdHlwZXNEaWZmZXIgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gdHlwZW9mIGFyZ3NbZGVzdF0udmFsdWUgIT09IHR5cGVvZiBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdFZhbHVlSXNBcnJheSA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiBfLmlzQXJyYXkoZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKTtcblxuICBjb25zdCBhcmdzVmFsdWVJc0FycmF5ID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovKGRlc3QpID0+IF8uaXNBcnJheShhcmdzW2Rlc3RdLnZhbHVlKTtcblxuICBjb25zdCBhcnJheXNEaWZmZXIgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gXy5ndChfLnNpemUoXy5kaWZmZXJlbmNlKGFyZ3NbZGVzdF0udmFsdWUsIGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XSkpLCAwKTtcblxuICBjb25zdCB2YWx1ZXNEaWZmZXIgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gYXJnc1tkZXN0XS52YWx1ZSAhPT0gZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdO1xuXG4gIGNvbnN0IGRlZmF1bHRJc0RlZmluZWQgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gIV8uaXNVbmRlZmluZWQoZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKTtcblxuICAvLyBub3RlIHRoYXQgYF8ub3ZlckV2ZXJ5YCBpcyBsaWtlIGFuIFwiQU5EXCIsIGFuZCBgXy5vdmVyU29tZWAgaXMgbGlrZSBhbiBcIk9SXCJcblxuICBjb25zdCBhcmdWYWx1ZU5vdEFycmF5T3JBcnJheXNEaWZmZXIgPSBfLm92ZXJTb21lKFtcbiAgICBfLm5lZ2F0ZShhcmdzVmFsdWVJc0FycmF5KSxcbiAgICBhcnJheXNEaWZmZXJcbiAgXSk7XG5cbiAgY29uc3QgZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNEaWZmZXIgPSBfLm92ZXJFdmVyeShbXG4gICAgXy5uZWdhdGUoZGVmYXVsdFZhbHVlSXNBcnJheSksIHZhbHVlc0RpZmZlclxuICBdKTtcblxuICAvKipcbiAgICogVGhpcyB1c2VkIHRvIGJlIGEgaGlkZW91cyBjb25kaXRpb25hbCwgYnV0IGl0J3MgYnJva2VuIHVwIGludG8gYSBoaWRlb3VzIGZ1bmN0aW9uIGluc3RlYWQuXG4gICAqIGhvcGVmdWxseSB0aGlzIG1ha2VzIHRoaW5ncyBhIGxpdHRsZSBtb3JlIHVuZGVyc3RhbmRhYmxlLlxuICAgKiAtIGNoZWNrcyBpZiB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBkZWZpbmVkXG4gICAqIC0gaWYgc28sIGFuZCB0aGUgZGVmYXVsdCBpcyBub3QgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSB0eXBlcyBhcmUgdGhlIHNhbWVcbiAgICogICAtIGVuc3VyZXMgdGhlIHZhbHVlcyBhcmUgZXF1YWxcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIGFuIGFycmF5OlxuICAgKiAgIC0gZW5zdXJlcyB0aGUgYXJncyB2YWx1ZSBpcyBhbiBhcnJheVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgYXJncyB2YWx1ZXMgZG8gbm90IGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0IHZhbHVlc1xuICAgKiBAdHlwZSB7KGRlc3Q6IHN0cmluZykgPT4gYm9vbGVhbn1cbiAgICovXG4gIGNvbnN0IGlzTm90RGVmYXVsdCA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBkZWZhdWx0SXNEZWZpbmVkLFxuICAgIF8ub3ZlclNvbWUoW1xuICAgICAgdHlwZXNEaWZmZXIsXG4gICAgICBfLm92ZXJFdmVyeShbXG4gICAgICAgIGRlZmF1bHRWYWx1ZUlzQXJyYXksXG4gICAgICAgIGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlclxuICAgICAgXSksXG4gICAgICBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc0RpZmZlclxuICAgIF0pXG4gIF0pO1xuXG4gIGNvbnN0IGRlZmF1bHRzRnJvbVNjaGVtYSA9IGdldERlZmF1bHRzRm9yU2NoZW1hKHRydWUpO1xuXG4gIHJldHVybiBfLnJlZHVjZShcbiAgICBfLnBpY2tCeShhcmdzLCAoX18sIGtleSkgPT4gaXNOb3REZWZhdWx0KGtleSkpLFxuICAgIC8vIGV4cGxvZGVzIHRoZSBmbGF0dGVuZWQgb2JqZWN0IGJhY2sgaW50byBuZXN0ZWQgb25lXG4gICAgKGFjYywge3ZhbHVlLCBhcmdTcGVjfSkgPT4gXy5zZXQoYWNjLCBhcmdTcGVjLmRlc3QsIHZhbHVlKSwgLyoqIEB0eXBlIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSAqLyh7fSlcbiAgKTtcbn1cblxuLyoqXG4gKiBDb21wYWN0cyBhbiBvYmplY3QgZm9yIHtAbGluayBzaG93Q29uZmlnfTpcbiAqIDEuIFJlbW92ZXMgYHN1YmNvbW1hbmRgIGtleS92YWx1ZVxuICogMi4gUmVtb3ZlcyBgdW5kZWZpbmVkYCB2YWx1ZXNcbiAqIDMuIFJlbW92ZXMgZW1wdHkgb2JqZWN0cyAoYnV0IG5vdCBgZmFsc2VgIHZhbHVlcylcbiAqIERvZXMgbm90IG9wZXJhdGUgcmVjdXJzaXZlbHkuXG4gKi9cbmNvbnN0IGNvbXBhY3RDb25maWcgPSBfLnBhcnRpYWwoXG4gIF8ub21pdEJ5LFxuICBfLFxuICAodmFsdWUsIGtleSkgPT4ga2V5ID09PSAnc3ViY29tbWFuZCcgfHwgXy5pc1VuZGVmaW5lZCh2YWx1ZSkgfHwgKF8uaXNPYmplY3QodmFsdWUpICYmIF8uaXNFbXB0eSh2YWx1ZSkpXG4pO1xuXG4vKipcbiAqIFNob3dzIGEgYnJlYWtkb3duIG9mIHRoZSBjdXJyZW50IGNvbmZpZyBhZnRlciBDTEkgcGFyYW1zLCBjb25maWcgZmlsZSBsb2FkZWQgJiBkZWZhdWx0cyBhcHBsaWVkLlxuICpcbiAqIFRoZSBhY3R1YWwgc2hhcGUgb2YgYHByZUNvbmZpZ1BhcnNlZEFyZ3NgIGFuZCBgZGVmYXVsdHNgIGRvZXMgbm90IG1hdHRlciBmb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZnVuY3Rpb24sXG4gKiBidXQgaXQncyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgd2l0aCB2YWx1ZXMgb2YgdHlwZSB7QGxpbmsgUGFyc2VkQXJnc30gYW5kIGBEZWZhdWx0VmFsdWVzPHRydWU+YCwgcmVzcGVjdGl2ZWx5LlxuICpcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gbm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MgLSBQYXJzZWQgQ0xJIGFyZ3MgKG9yIHBhcmFtIHRvIGBpbml0KClgKSBiZWZvcmUgY29uZmlnICYgZGVmYXVsdHMgYXBwbGllZFxuICogQHBhcmFtIHtpbXBvcnQoJy4vY29uZmlnLWZpbGUnKS5SZWFkQ29uZmlnRmlsZVJlc3VsdH0gY29uZmlnUmVzdWx0IC0gUmVzdWx0IG9mIGF0dGVtcHRpbmcgdG8gbG9hZCBhIGNvbmZpZyBmaWxlLiAgX011c3RfIGJlIG5vcm1hbGl6ZWRcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gZGVmYXVsdHMgLSBDb25maWd1cmF0aW9uIGRlZmF1bHRzIGZyb20gc2NoZW1hc1xuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gRW50aXJlIHBhcnNlZCBhcmdzIG9iamVjdFxuICovXG5mdW5jdGlvbiBzaG93Q29uZmlnIChub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncywgY29uZmlnUmVzdWx0LCBkZWZhdWx0cywgcGFyc2VkQXJncykge1xuICBjb25zb2xlLmxvZygnQXBwaXVtIENvbmZpZ3VyYXRpb25cXG4nKTtcbiAgY29uc29sZS5sb2coJ2Zyb20gZGVmYXVsdHM6XFxuJyk7XG4gIGNvbnNvbGUuZGlyKGNvbXBhY3RDb25maWcoZGVmYXVsdHMpKTtcbiAgaWYgKGNvbmZpZ1Jlc3VsdC5jb25maWcpIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuZnJvbSBjb25maWcgZmlsZSBhdCAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuYCk7XG4gICAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhjb25maWdSZXN1bHQuY29uZmlnKSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coYFxcbihubyBjb25maWd1cmF0aW9uIGZpbGUgbG9hZGVkKWApO1xuICB9XG4gIGlmIChfLmlzRW1wdHkobm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MpKSB7XG4gICAgY29uc29sZS5sb2coYFxcbihubyBDTEkgcGFyYW1ldGVycyBwcm92aWRlZClgKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZygnXFxudmlhIENMSSBvciBmdW5jdGlvbiBjYWxsOlxcbicpO1xuICAgIGNvbnNvbGUuZGlyKGNvbXBhY3RDb25maWcobm9uRGVmYXVsdFByZUNvbmZpZ1BhcnNlZEFyZ3MpKTtcbiAgfVxuICBjb25zb2xlLmxvZygnXFxuZmluYWwgY29uZmlndXJhdGlvbjpcXG4nKTtcbiAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhwYXJzZWRBcmdzKSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRtcERpclxuICovXG5hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRtcERpciAodG1wRGlyKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMubWtkaXJwKHRtcERpcik7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFdlIGNvdWxkIG5vdCBlbnN1cmUgdGhhdCB0aGUgdGVtcCBkaXIgeW91IHNwZWNpZmllZCBgICtcbiAgICAgICAgICAgICAgICAgICAgYCgke3RtcERpcn0pIGV4aXN0cy4gUGxlYXNlIG1ha2Ugc3VyZSBpdCdzIHdyaXRlYWJsZS5gKTtcbiAgfVxufVxuXG5jb25zdCByb290RGlyID0gZnMuZmluZFJvb3QoX19kaXJuYW1lKTtcblxuZXhwb3J0IHtcbiAgZ2V0QnVpbGRJbmZvLCBjaGVja05vZGVPaywgc2hvd0J1aWxkSW5mbyxcbiAgd2Fybk5vZGVEZXByZWNhdGlvbnMsIHZhbGlkYXRlVG1wRGlyLCBnZXROb25EZWZhdWx0U2VydmVyQXJncyxcbiAgZ2V0R2l0UmV2LCBBUFBJVU1fVkVSLCB1cGRhdGVCdWlsZEluZm8sIHNob3dDb25maWcsIHJvb3REaXJcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vdHlwZXMvY2xpJykuUGFyc2VkQXJnc30gUGFyc2VkQXJnc1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi9zY2hlbWEvYXJnLXNwZWMnKS5BcmdTcGVjfSBBcmdTcGVjXG4gKi9cblxuIl19
255
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJucG1QYWNrYWdlIiwiZnMiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiX19kaXJuYW1lIiwiQVBQSVVNX1ZFUiIsInZlcnNpb24iLCJNSU5fTk9ERV9WRVJTSU9OIiwiZW5naW5lcyIsIm5vZGUiLCJHSVRfTUVUQV9ST09UIiwiR0lUX0JJTkFSWSIsInN5c3RlbSIsImlzV2luZG93cyIsIkdJVEhVQl9BUEkiLCJCVUlMRF9JTkZPIiwiZ2V0Tm9kZVZlcnNpb24iLCJzZW12ZXIiLCJjb2VyY2UiLCJwcm9jZXNzIiwidXBkYXRlQnVpbGRJbmZvIiwidXNlR2l0aHViQXBpRmFsbGJhY2siLCJzaGEiLCJnZXRHaXRSZXYiLCJidWlsdCIsImdldEdpdFRpbWVzdGFtcCIsImZpbmRHaXRSb290IiwiY3dkIiwicm9vdERpciIsInR5cGUiLCJnaXRSb290Iiwic3Rkb3V0IiwidHJpbSIsImlnbiIsInJlc0JvZHlPYmoiLCJheGlvcyIsImdldCIsImhlYWRlcnMiLCJkYXRhIiwiXyIsImlzQXJyYXkiLCJuYW1lIiwiY29tbWl0IiwiY29tbWl0U2hhIiwiY29tbWl0dGVyIiwiZGF0ZSIsImF1dGhvciIsImdldEJ1aWxkSW5mbyIsImNoZWNrTm9kZU9rIiwic2F0aXNmaWVzIiwibG9nZ2VyIiwiZXJyb3JBbmRUaHJvdyIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwic2hvd0J1aWxkSW5mbyIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJwYXJzZWRBcmdzIiwiZmxhdHRlbiIsImFyZ3MiLCJhcmdTcGVjcyIsImZsYXR0ZW5lZCIsInJlZHVjZSIsInZhbHVlcyIsImFjYyIsImFyZ1NwZWMiLCJoYXMiLCJkZXN0IiwidmFsdWUiLCJ0eXBlc0RpZmZlciIsImRlZmF1bHRzRnJvbVNjaGVtYSIsImRlZmF1bHRWYWx1ZUlzQXJyYXkiLCJhcmdzVmFsdWVJc0FycmF5IiwiYXJyYXlzRGlmZmVyIiwiZ3QiLCJzaXplIiwiZGlmZmVyZW5jZSIsInZhbHVlc0RpZmZlciIsImRlZmF1bHRJc0RlZmluZWQiLCJpc1VuZGVmaW5lZCIsImFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciIsIm92ZXJTb21lIiwibmVnYXRlIiwiZGVmYXVsdFZhbHVlTm90QXJyYXlBbmRWYWx1ZXNEaWZmZXIiLCJvdmVyRXZlcnkiLCJpc05vdERlZmF1bHQiLCJwaWNrQnkiLCJfXyIsImtleSIsInNldCIsImNvbXBhY3RDb25maWciLCJwYXJ0aWFsIiwib21pdEJ5IiwiaXNPYmplY3QiLCJpc0VtcHR5Iiwic2hvd0NvbmZpZyIsIm5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzIiwiY29uZmlnUmVzdWx0IiwiZGVmYXVsdHMiLCJkaXIiLCJjb25maWciLCJmaWxlcGF0aCIsInZhbGlkYXRlVG1wRGlyIiwidG1wRGlyIiwibWtkaXJwIiwiZSIsIkVycm9yIiwiZmluZFJvb3QiXSwic291cmNlcyI6WyIuLi8uLi9saWIvY29uZmlnLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBzeXN0ZW0sIGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0IGZpbmRVcCBmcm9tICdmaW5kLXVwJztcbmltcG9ydCB7IGdldERlZmF1bHRzRm9yU2NoZW1hLCBnZXRBbGxBcmdTcGVjcyB9IGZyb20gJy4vc2NoZW1hL3NjaGVtYSc7XG5cbmNvbnN0IG5wbVBhY2thZ2UgPSBmcy5yZWFkUGFja2FnZUpzb25Gcm9tKF9fZGlybmFtZSk7XG5cbmNvbnN0IEFQUElVTV9WRVIgPSBucG1QYWNrYWdlLnZlcnNpb247XG5jb25zdCBNSU5fTk9ERV9WRVJTSU9OID0gbnBtUGFja2FnZS5lbmdpbmVzLm5vZGU7XG5cbmNvbnN0IEdJVF9NRVRBX1JPT1QgPSAnLmdpdCc7XG5jb25zdCBHSVRfQklOQVJZID0gYGdpdCR7c3lzdGVtLmlzV2luZG93cygpID8gJy5leGUnIDogJyd9YDtcbmNvbnN0IEdJVEhVQl9BUEkgPSAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9hcHBpdW0vYXBwaXVtJztcblxuLyoqXG4gKiBAdHlwZSB7aW1wb3J0KCcuLi90eXBlcy9jbGknKS5CdWlsZEluZm99XG4gKi9cbmNvbnN0IEJVSUxEX0lORk8gPSB7XG4gIHZlcnNpb246IEFQUElVTV9WRVIsXG59O1xuXG5mdW5jdGlvbiBnZXROb2RlVmVyc2lvbiAoKSB7XG4gIHJldHVybiAvKiogQHR5cGUge2ltcG9ydCgnc2VtdmVyJykuU2VtVmVyfSAqLyhzZW12ZXIuY29lcmNlKHByb2Nlc3MudmVyc2lvbikpO1xufVxuXG5hc3luYyBmdW5jdGlvbiB1cGRhdGVCdWlsZEluZm8gKHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3Qgc2hhID0gYXdhaXQgZ2V0R2l0UmV2KHVzZUdpdGh1YkFwaUZhbGxiYWNrKTtcbiAgaWYgKCFzaGEpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgQlVJTERfSU5GT1snZ2l0LXNoYSddID0gc2hhO1xuICBjb25zdCBidWlsdCA9IGF3YWl0IGdldEdpdFRpbWVzdGFtcChzaGEsIHVzZUdpdGh1YkFwaUZhbGxiYWNrKTtcbiAgaWYgKGJ1aWx0KSB7XG4gICAgQlVJTERfSU5GTy5idWlsdCA9IGJ1aWx0O1xuICB9XG59XG5cbi8qKlxuICogRmluZHMgdGhlIEdpdCBtZXRhZGF0YSBkaXIgKHNlZSBgR0lUX01FVEFfUk9PVGApXG4gKlxuICogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBBcHBpdW0gY2Fubm90IGFzc3VtZSBgcGFja2FnZS5qc29uYCBhbmQgYC5naXRgIGFyZSBpbiB0aGUgc2FtZVxuICogZGlyZWN0b3J5LiAgTW9ub3JlcG9zLCBzZWU/XG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmd8dW5kZWZpbmVkPn0gUGF0aCB0byBkaXIgb3IgYHVuZGVmaW5lZGAgaWYgbm90IGZvdW5kXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGZpbmRHaXRSb290ICgpIHtcbiAgcmV0dXJuIGF3YWl0IGZpbmRVcChHSVRfTUVUQV9ST09ULCB7Y3dkOiByb290RGlyLCB0eXBlOiAnZGlyZWN0b3J5J30pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRHaXRSZXYgKHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3QgZ2l0Um9vdCA9IGF3YWl0IGZpbmRHaXRSb290KCk7XG4gIGlmIChnaXRSb290KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYyhHSVRfQklOQVJZLCBbJ3Jldi1wYXJzZScsICdIRUFEJ10sIHtcbiAgICAgICAgY3dkOiBnaXRSb290XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBzdGRvdXQudHJpbSgpO1xuICAgIH0gY2F0Y2ggKGlnbikge31cbiAgfVxuXG4gIGlmICghdXNlR2l0aHViQXBpRmFsbGJhY2spIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzQm9keU9iaiA9IChhd2FpdCBheGlvcy5nZXQoYCR7R0lUSFVCX0FQSX0vdGFnc2AsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1VzZXItQWdlbnQnOiBgQXBwaXVtICR7QVBQSVVNX1ZFUn1gXG4gICAgICB9XG4gICAgfSkpLmRhdGE7XG4gICAgaWYgKF8uaXNBcnJheShyZXNCb2R5T2JqKSkge1xuICAgICAgZm9yIChjb25zdCB7bmFtZSwgY29tbWl0fSBvZiByZXNCb2R5T2JqKSB7XG4gICAgICAgIGlmIChuYW1lID09PSBgdiR7QVBQSVVNX1ZFUn1gICYmIGNvbW1pdCAmJiBjb21taXQuc2hhKSB7XG4gICAgICAgICAgcmV0dXJuIGNvbW1pdC5zaGE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGlnbikge31cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbW1pdFNoYVxuICogQHBhcmFtIHtib29sZWFufSBbdXNlR2l0aHViQXBpRmFsbGJhY2tdXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0R2l0VGltZXN0YW1wIChjb21taXRTaGEsIHVzZUdpdGh1YkFwaUZhbGxiYWNrID0gZmFsc2UpIHtcbiAgY29uc3QgZ2l0Um9vdCA9IGF3YWl0IGZpbmRHaXRSb290KCk7XG4gIGlmIChnaXRSb290KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYyhHSVRfQklOQVJZLCBbJ3Nob3cnLCAnLXMnLCAnLS1mb3JtYXQ9JWNpJywgY29tbWl0U2hhXSwge1xuICAgICAgICBjd2Q6IGdpdFJvb3RcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICB9XG5cbiAgaWYgKCF1c2VHaXRodWJBcGlGYWxsYmFjaykge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXNCb2R5T2JqID0gKGF3YWl0IGF4aW9zLmdldChgJHtHSVRIVUJfQVBJfS9jb21taXRzLyR7Y29tbWl0U2hhfWAsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ1VzZXItQWdlbnQnOiBgQXBwaXVtICR7QVBQSVVNX1ZFUn1gXG4gICAgICB9XG4gICAgfSkpLmRhdGE7XG4gICAgaWYgKHJlc0JvZHlPYmogJiYgcmVzQm9keU9iai5jb21taXQpIHtcbiAgICAgIGlmIChyZXNCb2R5T2JqLmNvbW1pdC5jb21taXR0ZXIgJiYgcmVzQm9keU9iai5jb21taXQuY29tbWl0dGVyLmRhdGUpIHtcbiAgICAgICAgcmV0dXJuIHJlc0JvZHlPYmouY29tbWl0LmNvbW1pdHRlci5kYXRlO1xuICAgICAgfVxuICAgICAgaWYgKHJlc0JvZHlPYmouY29tbWl0LmF1dGhvciAmJiByZXNCb2R5T2JqLmNvbW1pdC5hdXRob3IuZGF0ZSkge1xuICAgICAgICByZXR1cm4gcmVzQm9keU9iai5jb21taXQuYXV0aG9yLmRhdGU7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChpZ24pIHt9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIE11dGFibGUgb2JqZWN0IGNvbnRhaW5pbmcgQXBwaXVtIGJ1aWxkIGluZm9ybWF0aW9uLiBCeSBkZWZhdWx0IGl0XG4gKiBvbmx5IGNvbnRhaW5zIHRoZSBBcHBpdW0gdmVyc2lvbiwgYnV0IGlzIHVwZGF0ZWQgd2l0aCB0aGUgYnVpbGQgdGltZXN0YW1wXG4gKiBhbmQgZ2l0IGNvbW1pdCBoYXNoIGFzeW5jaHJvbm91c2x5IGFzIHNvb24gYXMgYHVwZGF0ZUJ1aWxkSW5mb2AgaXMgY2FsbGVkXG4gKiBhbmQgc3VjY2VlZHMuXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi90eXBlcy9jbGknKS5CdWlsZEluZm99XG4gKi9cbmZ1bmN0aW9uIGdldEJ1aWxkSW5mbyAoKSB7XG4gIHJldHVybiBCVUlMRF9JTkZPO1xufVxuXG5mdW5jdGlvbiBjaGVja05vZGVPayAoKSB7XG4gIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICBpZiAoIXNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgTUlOX05PREVfVkVSU0lPTikpIHtcbiAgICBsb2dnZXIuZXJyb3JBbmRUaHJvdyhgTm9kZSB2ZXJzaW9uIG11c3QgYmUgJHtNSU5fTk9ERV9WRVJTSU9OfS4gQ3VycmVudGx5ICR7dmVyc2lvbi52ZXJzaW9ufWApO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdhcm5Ob2RlRGVwcmVjYXRpb25zICgpIHtcbiAgLyoqXG4gICAqIFVuY29tbWVudCB0aGlzIHNlY3Rpb24gdG8gZ2V0IG5vZGUgdmVyc2lvbiBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgKiBBbHNvIGFkZCB0ZXN0IGNhc2VzIHRvIGNvbmZpZy1zcGVjcy5qcyB0byBjb3ZlciB0aGUgY2FzZXMgYWRkZWRcbiAgICoqL1xuXG4gIC8vIGNvbnN0IHZlcnNpb24gPSBnZXROb2RlVmVyc2lvbigpO1xuICAvLyBpZiAodmVyc2lvbi5tYWpvciA8IDgpIHtcbiAgLy8gICBsb2dnZXIud2FybihgQXBwaXVtIHN1cHBvcnQgZm9yIHZlcnNpb25zIG9mIG5vZGUgPCAke3ZlcnNpb24ubWFqb3J9IGhhcyBiZWVuIGAgK1xuICAvLyAgICAgICAgICAgICAgICdkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gUGxlYXNlICcgK1xuICAvLyAgICAgICAgICAgICAgICd1cGdyYWRlIScpO1xuICAvLyB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3dCdWlsZEluZm8gKCkge1xuICBhd2FpdCB1cGRhdGVCdWlsZEluZm8odHJ1ZSk7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGdldEJ1aWxkSW5mbygpKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxufVxuXG4vKipcbiAqIFJldHVybnMgay92IHBhaXJzIG9mIHNlcnZlciBhcmd1bWVudHMgd2hpY2ggYXJlIF9ub3RfIHRoZSBkZWZhdWx0cy5cbiAqIEBwYXJhbSB7QXJnc30gcGFyc2VkQXJnc1xuICogQHJldHVybnMge0FyZ3N9XG4gKi9cbmZ1bmN0aW9uIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzIChwYXJzZWRBcmdzKSB7XG4gIC8qKlxuICAgKiBGbGF0dGVucyBwYXJzZWQgYXJncyBpbnRvIGEgc2luZ2xlIGxldmVsIG9iamVjdCBmb3IgY29tcGFyaXNvbiB3aXRoXG4gICAqIGZsYXR0ZW5lZCBkZWZhdWx0cyBhY3Jvc3Mgc2VydmVyIGFyZ3MgYW5kIGV4dGVuc2lvbiBhcmdzLlxuICAgKiBAcGFyYW0ge0FyZ3N9IGFyZ3NcbiAgICogQHJldHVybnMge1JlY29yZDxzdHJpbmcsIHsgdmFsdWU6IGFueSwgYXJnU3BlYzogQXJnU3BlYyB9Pn1cbiAgICovXG4gIGNvbnN0IGZsYXR0ZW4gPSAoYXJncykgPT4ge1xuICAgIGNvbnN0IGFyZ1NwZWNzID0gZ2V0QWxsQXJnU3BlY3MoKTtcbiAgICBjb25zdCBmbGF0dGVuZWQgPSBfLnJlZHVjZShbLi4uYXJnU3BlY3MudmFsdWVzKCldLCAoYWNjLCBhcmdTcGVjKSA9PiB7XG4gICAgICBpZiAoXy5oYXMoYXJncywgYXJnU3BlYy5kZXN0KSkge1xuICAgICAgICBhY2NbYXJnU3BlYy5kZXN0XSA9IHt2YWx1ZTogXy5nZXQoYXJncywgYXJnU3BlYy5kZXN0KSwgYXJnU3BlY307XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIC8qKiBAdHlwZSB7UmVjb3JkPHN0cmluZywgeyB2YWx1ZTogYW55LCBhcmdTcGVjOiBBcmdTcGVjIH0+fSAqLyh7fSkpO1xuXG4gICAgcmV0dXJuIGZsYXR0ZW5lZDtcbiAgfTtcblxuICBjb25zdCBhcmdzID0gZmxhdHRlbihwYXJzZWRBcmdzKTtcblxuICAvLyBob3BlZnVsbHkgdGhlc2UgZnVuY3Rpb24gbmFtZXMgYXJlIGRlc2NyaXB0aXZlIGVub3VnaFxuICBjb25zdCB0eXBlc0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiB0eXBlb2YgYXJnc1tkZXN0XS52YWx1ZSAhPT0gdHlwZW9mIGRlZmF1bHRzRnJvbVNjaGVtYVtkZXN0XTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVJc0FycmF5ID0gLyoqIEBwYXJhbSB7c3RyaW5nfSBkZXN0ICovKGRlc3QpID0+IF8uaXNBcnJheShkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuXG4gIGNvbnN0IGFyZ3NWYWx1ZUlzQXJyYXkgPSAvKiogQHBhcmFtIHtzdHJpbmd9IGRlc3QgKi8oZGVzdCkgPT4gXy5pc0FycmF5KGFyZ3NbZGVzdF0udmFsdWUpO1xuXG4gIGNvbnN0IGFycmF5c0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiBfLmd0KF8uc2l6ZShfLmRpZmZlcmVuY2UoYXJnc1tkZXN0XS52YWx1ZSwgZGVmYXVsdHNGcm9tU2NoZW1hW2Rlc3RdKSksIDApO1xuXG4gIGNvbnN0IHZhbHVlc0RpZmZlciA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiBhcmdzW2Rlc3RdLnZhbHVlICE9PSBkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF07XG5cbiAgY29uc3QgZGVmYXVsdElzRGVmaW5lZCA9IC8qKiBAcGFyYW0ge3N0cmluZ30gZGVzdCAqLyhkZXN0KSA9PiAhXy5pc1VuZGVmaW5lZChkZWZhdWx0c0Zyb21TY2hlbWFbZGVzdF0pO1xuXG4gIC8vIG5vdGUgdGhhdCBgXy5vdmVyRXZlcnlgIGlzIGxpa2UgYW4gXCJBTkRcIiwgYW5kIGBfLm92ZXJTb21lYCBpcyBsaWtlIGFuIFwiT1JcIlxuXG4gIGNvbnN0IGFyZ1ZhbHVlTm90QXJyYXlPckFycmF5c0RpZmZlciA9IF8ub3ZlclNvbWUoW1xuICAgIF8ubmVnYXRlKGFyZ3NWYWx1ZUlzQXJyYXkpLFxuICAgIGFycmF5c0RpZmZlclxuICBdKTtcblxuICBjb25zdCBkZWZhdWx0VmFsdWVOb3RBcnJheUFuZFZhbHVlc0RpZmZlciA9IF8ub3ZlckV2ZXJ5KFtcbiAgICBfLm5lZ2F0ZShkZWZhdWx0VmFsdWVJc0FycmF5KSwgdmFsdWVzRGlmZmVyXG4gIF0pO1xuXG4gIC8qKlxuICAgKiBUaGlzIHVzZWQgdG8gYmUgYSBoaWRlb3VzIGNvbmRpdGlvbmFsLCBidXQgaXQncyBicm9rZW4gdXAgaW50byBhIGhpZGVvdXMgZnVuY3Rpb24gaW5zdGVhZC5cbiAgICogaG9wZWZ1bGx5IHRoaXMgbWFrZXMgdGhpbmdzIGEgbGl0dGxlIG1vcmUgdW5kZXJzdGFuZGFibGUuXG4gICAqIC0gY2hlY2tzIGlmIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGRlZmluZWRcbiAgICogLSBpZiBzbywgYW5kIHRoZSBkZWZhdWx0IGlzIG5vdCBhbiBhcnJheTpcbiAgICogICAtIGVuc3VyZXMgdGhlIHR5cGVzIGFyZSB0aGUgc2FtZVxuICAgKiAgIC0gZW5zdXJlcyB0aGUgdmFsdWVzIGFyZSBlcXVhbFxuICAgKiAtIGlmIHNvLCBhbmQgdGhlIGRlZmF1bHQgaXMgYW4gYXJyYXk6XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlIGlzIGFuIGFycmF5XG4gICAqICAgLSBlbnN1cmVzIHRoZSBhcmdzIHZhbHVlcyBkbyBub3QgZGlmZmVyIGZyb20gdGhlIGRlZmF1bHQgdmFsdWVzXG4gICAqIEB0eXBlIHsoZGVzdDogc3RyaW5nKSA9PiBib29sZWFufVxuICAgKi9cbiAgY29uc3QgaXNOb3REZWZhdWx0ID0gXy5vdmVyRXZlcnkoW1xuICAgIGRlZmF1bHRJc0RlZmluZWQsXG4gICAgXy5vdmVyU29tZShbXG4gICAgICB0eXBlc0RpZmZlcixcbiAgICAgIF8ub3ZlckV2ZXJ5KFtcbiAgICAgICAgZGVmYXVsdFZhbHVlSXNBcnJheSxcbiAgICAgICAgYXJnVmFsdWVOb3RBcnJheU9yQXJyYXlzRGlmZmVyXG4gICAgICBdKSxcbiAgICAgIGRlZmF1bHRWYWx1ZU5vdEFycmF5QW5kVmFsdWVzRGlmZmVyXG4gICAgXSlcbiAgXSk7XG5cbiAgY29uc3QgZGVmYXVsdHNGcm9tU2NoZW1hID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEodHJ1ZSk7XG5cbiAgcmV0dXJuIF8ucmVkdWNlKFxuICAgIF8ucGlja0J5KGFyZ3MsIChfXywga2V5KSA9PiBpc05vdERlZmF1bHQoa2V5KSksXG4gICAgLy8gZXhwbG9kZXMgdGhlIGZsYXR0ZW5lZCBvYmplY3QgYmFjayBpbnRvIG5lc3RlZCBvbmVcbiAgICAoYWNjLCB7dmFsdWUsIGFyZ1NwZWN9KSA9PiBfLnNldChhY2MsIGFyZ1NwZWMuZGVzdCwgdmFsdWUpLCAvKiogQHR5cGUge0FyZ3N9ICovKHt9KVxuICApO1xufVxuXG4vKipcbiAqIENvbXBhY3RzIGFuIG9iamVjdCBmb3Ige0BsaW5rIHNob3dDb25maWd9OlxuICogMS4gUmVtb3ZlcyBgc3ViY29tbWFuZGAga2V5L3ZhbHVlXG4gKiAyLiBSZW1vdmVzIGB1bmRlZmluZWRgIHZhbHVlc1xuICogMy4gUmVtb3ZlcyBlbXB0eSBvYmplY3RzIChidXQgbm90IGBmYWxzZWAgdmFsdWVzKVxuICogRG9lcyBub3Qgb3BlcmF0ZSByZWN1cnNpdmVseS5cbiAqL1xuY29uc3QgY29tcGFjdENvbmZpZyA9IF8ucGFydGlhbChcbiAgXy5vbWl0QnksXG4gIF8sXG4gICh2YWx1ZSwga2V5KSA9PiBrZXkgPT09ICdzdWJjb21tYW5kJyB8fCBfLmlzVW5kZWZpbmVkKHZhbHVlKSB8fCAoXy5pc09iamVjdCh2YWx1ZSkgJiYgXy5pc0VtcHR5KHZhbHVlKSlcbik7XG5cbi8qKlxuICogU2hvd3MgYSBicmVha2Rvd24gb2YgdGhlIGN1cnJlbnQgY29uZmlnIGFmdGVyIENMSSBwYXJhbXMsIGNvbmZpZyBmaWxlIGxvYWRlZCAmIGRlZmF1bHRzIGFwcGxpZWQuXG4gKlxuICogVGhlIGFjdHVhbCBzaGFwZSBvZiBgcHJlQ29uZmlnUGFyc2VkQXJnc2AgYW5kIGBkZWZhdWx0c2AgZG9lcyBub3QgbWF0dGVyIGZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBmdW5jdGlvbixcbiAqIGJ1dCBpdCdzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB3aXRoIHZhbHVlcyBvZiB0eXBlIHtAbGluayBQYXJzZWRBcmdzfSBhbmQgYERlZmF1bHRWYWx1ZXM8dHJ1ZT5gLCByZXNwZWN0aXZlbHkuXG4gKlxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncyAtIFBhcnNlZCBDTEkgYXJncyAob3IgcGFyYW0gdG8gYGluaXQoKWApIGJlZm9yZSBjb25maWcgJiBkZWZhdWx0cyBhcHBsaWVkXG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9jb25maWctZmlsZScpLlJlYWRDb25maWdGaWxlUmVzdWx0fSBjb25maWdSZXN1bHQgLSBSZXN1bHQgb2YgYXR0ZW1wdGluZyB0byBsb2FkIGEgY29uZmlnIGZpbGUuICBfTXVzdF8gYmUgbm9ybWFsaXplZFxuICogQHBhcmFtIHtQYXJ0aWFsPFBhcnNlZEFyZ3M+fSBkZWZhdWx0cyAtIENvbmZpZ3VyYXRpb24gZGVmYXVsdHMgZnJvbSBzY2hlbWFzXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IHBhcnNlZEFyZ3MgLSBFbnRpcmUgcGFyc2VkIGFyZ3Mgb2JqZWN0XG4gKi9cbmZ1bmN0aW9uIHNob3dDb25maWcgKG5vbkRlZmF1bHRQcmVDb25maWdQYXJzZWRBcmdzLCBjb25maWdSZXN1bHQsIGRlZmF1bHRzLCBwYXJzZWRBcmdzKSB7XG4gIGNvbnNvbGUubG9nKCdBcHBpdW0gQ29uZmlndXJhdGlvblxcbicpO1xuICBjb25zb2xlLmxvZygnZnJvbSBkZWZhdWx0czpcXG4nKTtcbiAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhkZWZhdWx0cykpO1xuICBpZiAoY29uZmlnUmVzdWx0LmNvbmZpZykge1xuICAgIGNvbnNvbGUubG9nKGBcXG5mcm9tIGNvbmZpZyBmaWxlIGF0ICR7Y29uZmlnUmVzdWx0LmZpbGVwYXRofTpcXG5gKTtcbiAgICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKGNvbmZpZ1Jlc3VsdC5jb25maWcpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIGNvbmZpZ3VyYXRpb24gZmlsZSBsb2FkZWQpYCk7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpIHtcbiAgICBjb25zb2xlLmxvZyhgXFxuKG5vIENMSSBwYXJhbWV0ZXJzIHByb3ZpZGVkKWApO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGUubG9nKCdcXG52aWEgQ0xJIG9yIGZ1bmN0aW9uIGNhbGw6XFxuJyk7XG4gICAgY29uc29sZS5kaXIoY29tcGFjdENvbmZpZyhub25EZWZhdWx0UHJlQ29uZmlnUGFyc2VkQXJncykpO1xuICB9XG4gIGNvbnNvbGUubG9nKCdcXG5maW5hbCBjb25maWd1cmF0aW9uOlxcbicpO1xuICBjb25zb2xlLmRpcihjb21wYWN0Q29uZmlnKHBhcnNlZEFyZ3MpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG1wRGlyXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHZhbGlkYXRlVG1wRGlyICh0bXBEaXIpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5ta2RpcnAodG1wRGlyKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgV2UgY291bGQgbm90IGVuc3VyZSB0aGF0IHRoZSB0ZW1wIGRpciB5b3Ugc3BlY2lmaWVkIGAgK1xuICAgICAgICAgICAgICAgICAgICBgKCR7dG1wRGlyfSkgZXhpc3RzLiBQbGVhc2UgbWFrZSBzdXJlIGl0J3Mgd3JpdGVhYmxlLmApO1xuICB9XG59XG5cbmNvbnN0IHJvb3REaXIgPSBmcy5maW5kUm9vdChfX2Rpcm5hbWUpO1xuXG5leHBvcnQge1xuICBnZXRCdWlsZEluZm8sIGNoZWNrTm9kZU9rLCBzaG93QnVpbGRJbmZvLFxuICB3YXJuTm9kZURlcHJlY2F0aW9ucywgdmFsaWRhdGVUbXBEaXIsIGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzLFxuICBnZXRHaXRSZXYsIEFQUElVTV9WRVIsIHVwZGF0ZUJ1aWxkSW5mbywgc2hvd0NvbmZpZywgcm9vdERpclxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL3R5cGVzJykuQXJnc30gQXJnc1xuICogQHR5cGVkZWYge2ltcG9ydCgnLi9zY2hlbWEvYXJnLXNwZWMnKS5BcmdTcGVjfSBBcmdTcGVjXG4gKi9cblxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFN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
@@ -57,4 +57,4 @@ const EXT_SUBCOMMAND_UPDATE = 'update';
57
57
  exports.EXT_SUBCOMMAND_UPDATE = EXT_SUBCOMMAND_UPDATE;
58
58
  const EXT_SUBCOMMAND_RUN = 'run';
59
59
  exports.EXT_SUBCOMMAND_RUN = EXT_SUBCOMMAND_RUN;
60
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9jb25zdGFudHMuanMiXSwibmFtZXMiOlsiRFJJVkVSX1RZUEUiLCJQTFVHSU5fVFlQRSIsIlNFUlZFUl9TVUJDT01NQU5EIiwiVVNFX0FMTF9QTFVHSU5TIiwiS05PV05fUExVR0lOUyIsIk9iamVjdCIsImZyZWV6ZSIsImltYWdlcyIsIktOT1dOX0RSSVZFUlMiLCJ1aWF1dG9tYXRvcjIiLCJ4Y3VpdGVzdCIsInlvdWllbmdpbmUiLCJ3aW5kb3dzIiwibWFjIiwibWFjMiIsImVzcHJlc3NvIiwidGl6ZW4iLCJmbHV0dGVyIiwic2FmYXJpIiwiZ2Vja28iLCJDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCIsInBhdGgiLCJqb2luIiwiUEtHX0hBU0hGSUxFX1JFTEFUSVZFX1BBVEgiLCJFWFRfU1VCQ09NTUFORF9MSVNUIiwiRVhUX1NVQkNPTU1BTkRfSU5TVEFMTCIsIkVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCIsIkVYVF9TVUJDT01NQU5EX1VQREFURSIsIkVYVF9TVUJDT01NQU5EX1JVTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFLTyxNQUFNQSxXQUFXLEdBQUcsUUFBcEI7O0FBS0EsTUFBTUMsV0FBVyxHQUFHLFFBQXBCOztBQUtBLE1BQU1DLGlCQUFpQixHQUFHLFFBQTFCOztBQUtBLE1BQU1DLGVBQWUsR0FBRyxLQUF4Qjs7QUFNQSxNQUFNQyxhQUFhLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBUCxDQUNMO0FBQ3BCQyxFQUFBQSxNQUFNLEVBQUUsdUJBRFk7QUFFcEIsb0JBQWtCLCtCQUZFO0FBR3BCLGtCQUFnQjtBQUhJLENBREssQ0FBdEI7O0FBWUEsTUFBTUMsYUFBYSxHQUFHSCxNQUFNLENBQUNDLE1BQVAsQ0FDTDtBQUNwQkcsRUFBQUEsWUFBWSxFQUFFLDRCQURNO0FBRXBCQyxFQUFBQSxRQUFRLEVBQUUsd0JBRlU7QUFHcEJDLEVBQUFBLFVBQVUsRUFBRSwwQkFIUTtBQUlwQkMsRUFBQUEsT0FBTyxFQUFFLHVCQUpXO0FBS3BCQyxFQUFBQSxHQUFHLEVBQUUsbUJBTGU7QUFNcEJDLEVBQUFBLElBQUksRUFBRSxvQkFOYztBQU9wQkMsRUFBQUEsUUFBUSxFQUFFLHdCQVBVO0FBUXBCQyxFQUFBQSxLQUFLLEVBQUUscUJBUmE7QUFTcEJDLEVBQUFBLE9BQU8sRUFBRSx1QkFUVztBQVVwQkMsRUFBQUEsTUFBTSxFQUFFLHNCQVZZO0FBV3BCQyxFQUFBQSxLQUFLLEVBQUU7QUFYYSxDQURLLENBQXRCOzs7QUFtQkEsTUFBTUMsdUJBQXVCLEdBQUdDLGNBQUtDLElBQUwsQ0FDckMsY0FEcUMsRUFFckMsUUFGcUMsRUFHckMsUUFIcUMsQ0FBaEM7Ozs7QUFTQSxNQUFNQywwQkFBMEIsR0FBR0YsY0FBS0MsSUFBTCxDQUN4Q0YsdUJBRHdDLEVBRXhDLGNBRndDLENBQW5DOzs7QUFNQSxNQUFNSSxtQkFBbUIsR0FBRyxNQUE1Qjs7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxTQUEvQjs7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxXQUFqQzs7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxRQUE5Qjs7QUFDQSxNQUFNQyxrQkFBa0IsR0FBRyxLQUEzQiIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbi8qKlxuICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiB0eXBlIGZvciBkcml2ZXJzXG4gKi9cbmV4cG9ydCBjb25zdCBEUklWRVJfVFlQRSA9ICdkcml2ZXInO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdHlwZSBmb3IgcGx1Z2luc1xuICovXG5leHBvcnQgY29uc3QgUExVR0lOX1RZUEUgPSAncGx1Z2luJztcblxuLyoqXG4gKiBUaGUgYHNlcnZlcmAgY29tbWFuZCBvZiB0aGUgYGFwcGl1bWAgQ0xJXG4gKi9cbmV4cG9ydCBjb25zdCBTRVJWRVJfU1VCQ09NTUFORCA9ICdzZXJ2ZXInO1xuXG4vKipcbiAqIFRoZSB2YWx1ZSBvZiBgLS11c2UtcGx1Z2luc2AgaWYgX2FsbF8gcGx1Z2lucyBzaG91bGQgYmUgbG9hZGVkXG4gKi9cbmV4cG9ydCBjb25zdCBVU0VfQUxMX1BMVUdJTlMgPSAnYWxsJztcblxuLy8gVGhpcyBpcyBhIG1hcCBvZiBwbHVnaW4gbmFtZXMgdG8gbnBtIHBhY2thZ2VzIHJlcHJlc2VudGluZyB0aG9zZSBwbHVnaW5zLlxuLy8gVGhlIHBsdWdpbnMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBDTEkgc28gdXNlcnMgY2FuIGp1c3Rcbi8vIHR5cGUgJ2FwcGl1bSBwbHVnaW4gaW5zdGFsbCAnbmFtZScnLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgZnVsbFxuLy8gbnBtIHBhY2thZ2UuIEkuZS4sIHRoZXNlIGFyZSB0aGUgb2ZmaWNpYWxseSByZWNvZ25pemVkIHBsdWdpbnMuXG5leHBvcnQgY29uc3QgS05PV05fUExVR0lOUyA9IE9iamVjdC5mcmVlemUoXG4gIC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gICAgaW1hZ2VzOiAnQGFwcGl1bS9pbWFnZXMtcGx1Z2luJyxcbiAgICAnZXhlY3V0ZS1kcml2ZXInOiAnQGFwcGl1bS9leGVjdXRlLWRyaXZlci1wbHVnaW4nLFxuICAgICdyZWxheGVkLWNhcHMnOiAnQGFwcGl1bS9yZWxheGVkLWNhcHMtcGx1Z2luJyxcbiAgfSksXG4pO1xuXG4vLyBUaGlzIGlzIGEgbWFwIG9mIGRyaXZlciBuYW1lcyB0byBucG0gcGFja2FnZXMgcmVwcmVzZW50aW5nIHRob3NlIGRyaXZlcnMuXG4vLyBUaGUgZHJpdmVycyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBhdmFpbGFibGUgdG8gdGhlIENMSSBzbyB1c2VycyBjYW4ganVzdFxuLy8gdHlwZSAnYXBwaXVtIGRyaXZlciBpbnN0YWxsICduYW1lJycsIHJhdGhlciB0aGFuIGhhdmluZyB0byBzcGVjaWZ5IHRoZSBmdWxsXG4vLyBucG0gcGFja2FnZS4gSS5lLiwgdGhlc2UgYXJlIHRoZSBvZmZpY2lhbGx5IHJlY29nbml6ZWQgZHJpdmVycy5cbmV4cG9ydCBjb25zdCBLTk9XTl9EUklWRVJTID0gT2JqZWN0LmZyZWV6ZShcbiAgLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgICB1aWF1dG9tYXRvcjI6ICdhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcicsXG4gICAgeGN1aXRlc3Q6ICdhcHBpdW0teGN1aXRlc3QtZHJpdmVyJyxcbiAgICB5b3VpZW5naW5lOiAnYXBwaXVtLXlvdWllbmdpbmUtZHJpdmVyJyxcbiAgICB3aW5kb3dzOiAnYXBwaXVtLXdpbmRvd3MtZHJpdmVyJyxcbiAgICBtYWM6ICdhcHBpdW0tbWFjLWRyaXZlcicsXG4gICAgbWFjMjogJ2FwcGl1bS1tYWMyLWRyaXZlcicsXG4gICAgZXNwcmVzc286ICdhcHBpdW0tZXNwcmVzc28tZHJpdmVyJyxcbiAgICB0aXplbjogJ2FwcGl1bS10aXplbi1kcml2ZXInLFxuICAgIGZsdXR0ZXI6ICdhcHBpdW0tZmx1dHRlci1kcml2ZXInLFxuICAgIHNhZmFyaTogJ2FwcGl1bS1zYWZhcmktZHJpdmVyJyxcbiAgICBnZWNrbzogJ2FwcGl1bS1nZWNrb2RyaXZlcicsXG4gIH0pLFxuKTtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIGFueSBBcHBpdW0gaW50ZXJuYWwgZmlsZXNcbiAqL1xuZXhwb3J0IGNvbnN0IENBQ0hFX0RJUl9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKFxuICAnbm9kZV9tb2R1bGVzJyxcbiAgJy5jYWNoZScsXG4gICdhcHBpdW0nLFxuKTtcblxuLyoqXG4gKiBSZWxhdGl2ZSBwYXRoIHRvIGhhc2hmaWxlIChmcm9tIGBBUFBJVU1fSE9NRWApIG9mIGNvbnN1bWluZyBwcm9qZWN0J3MgYHBhY2thZ2UuanNvbmAgKGlmIGl0IGV4aXN0cylcbiAqL1xuZXhwb3J0IGNvbnN0IFBLR19IQVNIRklMRV9SRUxBVElWRV9QQVRIID0gcGF0aC5qb2luKFxuICBDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCxcbiAgJ3BhY2thZ2UuaGFzaCcsXG4pO1xuXG5cbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9MSVNUID0gJ2xpc3QnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX0lOU1RBTEwgPSAnaW5zdGFsbCc7XG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfVU5JTlNUQUxMID0gJ3VuaW5zdGFsbCc7XG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfVVBEQVRFID0gJ3VwZGF0ZSc7XG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfUlVOID0gJ3J1bic7XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEUklWRVJfVFlQRSIsIlBMVUdJTl9UWVBFIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJVU0VfQUxMX1BMVUdJTlMiLCJLTk9XTl9QTFVHSU5TIiwiT2JqZWN0IiwiZnJlZXplIiwiaW1hZ2VzIiwiS05PV05fRFJJVkVSUyIsInVpYXV0b21hdG9yMiIsInhjdWl0ZXN0IiwieW91aWVuZ2luZSIsIndpbmRvd3MiLCJtYWMiLCJtYWMyIiwiZXNwcmVzc28iLCJ0aXplbiIsImZsdXR0ZXIiLCJzYWZhcmkiLCJnZWNrbyIsIkNBQ0hFX0RJUl9SRUxBVElWRV9QQVRIIiwicGF0aCIsImpvaW4iLCJQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCIsIkVYVF9TVUJDT01NQU5EX0xJU1QiLCJFWFRfU1VCQ09NTUFORF9JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVU5JTlNUQUxMIiwiRVhUX1NVQkNPTU1BTkRfVVBEQVRFIiwiRVhUX1NVQkNPTU1BTkRfUlVOIl0sInNvdXJjZXMiOlsiLi4vLi4vbGliL2NvbnN0YW50cy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gdHlwZSBmb3IgZHJpdmVyc1xuICovXG5leHBvcnQgY29uc3QgRFJJVkVSX1RZUEUgPSAnZHJpdmVyJztcblxuLyoqXG4gKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHR5cGUgZm9yIHBsdWdpbnNcbiAqL1xuZXhwb3J0IGNvbnN0IFBMVUdJTl9UWVBFID0gJ3BsdWdpbic7XG5cbi8qKlxuICogVGhlIGBzZXJ2ZXJgIGNvbW1hbmQgb2YgdGhlIGBhcHBpdW1gIENMSVxuICovXG5leHBvcnQgY29uc3QgU0VSVkVSX1NVQkNPTU1BTkQgPSAnc2VydmVyJztcblxuLyoqXG4gKiBUaGUgdmFsdWUgb2YgYC0tdXNlLXBsdWdpbnNgIGlmIF9hbGxfIHBsdWdpbnMgc2hvdWxkIGJlIGxvYWRlZFxuICovXG5leHBvcnQgY29uc3QgVVNFX0FMTF9QTFVHSU5TID0gJ2FsbCc7XG5cbi8vIFRoaXMgaXMgYSBtYXAgb2YgcGx1Z2luIG5hbWVzIHRvIG5wbSBwYWNrYWdlcyByZXByZXNlbnRpbmcgdGhvc2UgcGx1Z2lucy5cbi8vIFRoZSBwbHVnaW5zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGF2YWlsYWJsZSB0byB0aGUgQ0xJIHNvIHVzZXJzIGNhbiBqdXN0XG4vLyB0eXBlICdhcHBpdW0gcGx1Z2luIGluc3RhbGwgJ25hbWUnJywgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHNwZWNpZnkgdGhlIGZ1bGxcbi8vIG5wbSBwYWNrYWdlLiBJLmUuLCB0aGVzZSBhcmUgdGhlIG9mZmljaWFsbHkgcmVjb2duaXplZCBwbHVnaW5zLlxuZXhwb3J0IGNvbnN0IEtOT1dOX1BMVUdJTlMgPSBPYmplY3QuZnJlZXplKFxuICAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAgIGltYWdlczogJ0BhcHBpdW0vaW1hZ2VzLXBsdWdpbicsXG4gICAgJ2V4ZWN1dGUtZHJpdmVyJzogJ0BhcHBpdW0vZXhlY3V0ZS1kcml2ZXItcGx1Z2luJyxcbiAgICAncmVsYXhlZC1jYXBzJzogJ0BhcHBpdW0vcmVsYXhlZC1jYXBzLXBsdWdpbicsXG4gIH0pLFxuKTtcblxuLy8gVGhpcyBpcyBhIG1hcCBvZiBkcml2ZXIgbmFtZXMgdG8gbnBtIHBhY2thZ2VzIHJlcHJlc2VudGluZyB0aG9zZSBkcml2ZXJzLlxuLy8gVGhlIGRyaXZlcnMgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBDTEkgc28gdXNlcnMgY2FuIGp1c3Rcbi8vIHR5cGUgJ2FwcGl1bSBkcml2ZXIgaW5zdGFsbCAnbmFtZScnLCByYXRoZXIgdGhhbiBoYXZpbmcgdG8gc3BlY2lmeSB0aGUgZnVsbFxuLy8gbnBtIHBhY2thZ2UuIEkuZS4sIHRoZXNlIGFyZSB0aGUgb2ZmaWNpYWxseSByZWNvZ25pemVkIGRyaXZlcnMuXG5leHBvcnQgY29uc3QgS05PV05fRFJJVkVSUyA9IE9iamVjdC5mcmVlemUoXG4gIC8qKiBAdHlwZSB7Y29uc3R9ICovICh7XG4gICAgdWlhdXRvbWF0b3IyOiAnYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXInLFxuICAgIHhjdWl0ZXN0OiAnYXBwaXVtLXhjdWl0ZXN0LWRyaXZlcicsXG4gICAgeW91aWVuZ2luZTogJ2FwcGl1bS15b3VpZW5naW5lLWRyaXZlcicsXG4gICAgd2luZG93czogJ2FwcGl1bS13aW5kb3dzLWRyaXZlcicsXG4gICAgbWFjOiAnYXBwaXVtLW1hYy1kcml2ZXInLFxuICAgIG1hYzI6ICdhcHBpdW0tbWFjMi1kcml2ZXInLFxuICAgIGVzcHJlc3NvOiAnYXBwaXVtLWVzcHJlc3NvLWRyaXZlcicsXG4gICAgdGl6ZW46ICdhcHBpdW0tdGl6ZW4tZHJpdmVyJyxcbiAgICBmbHV0dGVyOiAnYXBwaXVtLWZsdXR0ZXItZHJpdmVyJyxcbiAgICBzYWZhcmk6ICdhcHBpdW0tc2FmYXJpLWRyaXZlcicsXG4gICAgZ2Vja286ICdhcHBpdW0tZ2Vja29kcml2ZXInLFxuICB9KSxcbik7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyBhbnkgQXBwaXVtIGludGVybmFsIGZpbGVzXG4gKi9cbmV4cG9ydCBjb25zdCBDQUNIRV9ESVJfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgJ25vZGVfbW9kdWxlcycsXG4gICcuY2FjaGUnLFxuICAnYXBwaXVtJyxcbik7XG5cbi8qKlxuICogUmVsYXRpdmUgcGF0aCB0byBoYXNoZmlsZSAoZnJvbSBgQVBQSVVNX0hPTUVgKSBvZiBjb25zdW1pbmcgcHJvamVjdCdzIGBwYWNrYWdlLmpzb25gIChpZiBpdCBleGlzdHMpXG4gKi9cbmV4cG9ydCBjb25zdCBQS0dfSEFTSEZJTEVfUkVMQVRJVkVfUEFUSCA9IHBhdGguam9pbihcbiAgQ0FDSEVfRElSX1JFTEFUSVZFX1BBVEgsXG4gICdwYWNrYWdlLmhhc2gnLFxuKTtcblxuXG5leHBvcnQgY29uc3QgRVhUX1NVQkNPTU1BTkRfTElTVCA9ICdsaXN0JztcbmV4cG9ydCBjb25zdCBFWFRfU1VCQ09NTUFORF9JTlNUQUxMID0gJ2luc3RhbGwnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1VOSU5TVEFMTCA9ICd1bmluc3RhbGwnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1VQREFURSA9ICd1cGRhdGUnO1xuZXhwb3J0IGNvbnN0IEVYVF9TVUJDT01NQU5EX1JVTiA9ICdydW4nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUNBOztBQUtPLE1BQU1BLFdBQVcsR0FBRyxRQUFwQjs7QUFLQSxNQUFNQyxXQUFXLEdBQUcsUUFBcEI7O0FBS0EsTUFBTUMsaUJBQWlCLEdBQUcsUUFBMUI7O0FBS0EsTUFBTUMsZUFBZSxHQUFHLEtBQXhCOztBQU1BLE1BQU1DLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQ0w7RUFDcEJDLE1BQU0sRUFBRSx1QkFEWTtFQUVwQixrQkFBa0IsK0JBRkU7RUFHcEIsZ0JBQWdCO0FBSEksQ0FESyxDQUF0Qjs7QUFZQSxNQUFNQyxhQUFhLEdBQUdILE1BQU0sQ0FBQ0MsTUFBUCxDQUNMO0VBQ3BCRyxZQUFZLEVBQUUsNEJBRE07RUFFcEJDLFFBQVEsRUFBRSx3QkFGVTtFQUdwQkMsVUFBVSxFQUFFLDBCQUhRO0VBSXBCQyxPQUFPLEVBQUUsdUJBSlc7RUFLcEJDLEdBQUcsRUFBRSxtQkFMZTtFQU1wQkMsSUFBSSxFQUFFLG9CQU5jO0VBT3BCQyxRQUFRLEVBQUUsd0JBUFU7RUFRcEJDLEtBQUssRUFBRSxxQkFSYTtFQVNwQkMsT0FBTyxFQUFFLHVCQVRXO0VBVXBCQyxNQUFNLEVBQUUsc0JBVlk7RUFXcEJDLEtBQUssRUFBRTtBQVhhLENBREssQ0FBdEI7OztBQW1CQSxNQUFNQyx1QkFBdUIsR0FBR0MsY0FBS0MsSUFBTCxDQUNyQyxjQURxQyxFQUVyQyxRQUZxQyxFQUdyQyxRQUhxQyxDQUFoQzs7OztBQVNBLE1BQU1DLDBCQUEwQixHQUFHRixjQUFLQyxJQUFMLENBQ3hDRix1QkFEd0MsRUFFeEMsY0FGd0MsQ0FBbkM7OztBQU1BLE1BQU1JLG1CQUFtQixHQUFHLE1BQTVCOztBQUNBLE1BQU1DLHNCQUFzQixHQUFHLFNBQS9COztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLFdBQWpDOztBQUNBLE1BQU1DLHFCQUFxQixHQUFHLFFBQTlCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLEtBQTNCIn0=
@@ -187,4 +187,4 @@ class DriverConfig extends _extensionConfig.ExtensionConfig {
187
187
  }
188
188
 
189
189
  exports.DriverConfig = DriverConfig;
190
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vZHJpdmVyLWNvbmZpZy5qcyJdLCJuYW1lcyI6WyJEcml2ZXJDb25maWciLCJFeHRlbnNpb25Db25maWciLCJrbm93bkF1dG9tYXRpb25OYW1lcyIsIl9pbnN0YW5jZXMiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJtYW5pZmVzdCIsImxvZ0ZuIiwiZXh0RGF0YSIsIkRSSVZFUl9UWVBFIiwiU2V0IiwidmFsaWRhdGUiLCJjcmVhdGUiLCJpbnN0YW5jZSIsImdldEluc3RhbmNlIiwiRXJyb3IiLCJhcHBpdW1Ib21lIiwic2V0IiwiZ2V0IiwiZXh0cyIsImNsZWFyIiwiZ2V0Q29uZmlnUHJvYmxlbXMiLCJwcm9ibGVtcyIsInBsYXRmb3JtTmFtZXMiLCJhdXRvbWF0aW9uTmFtZSIsIl8iLCJpc0FycmF5IiwicHVzaCIsImVyciIsInZhbCIsImlzRW1wdHkiLCJwTmFtZSIsImlzU3RyaW5nIiwiaGFzIiwiYWRkIiwiZXh0ZW5zaW9uRGVzYyIsImRyaXZlck5hbWUiLCJ2ZXJzaW9uIiwiZmluZE1hdGNoaW5nRHJpdmVyIiwicGxhdGZvcm1OYW1lIiwibG9nIiwiaW5mbyIsIm1haW5DbGFzcyIsIl9nZXREcml2ZXJCeVN1cHBvcnQiLCJnZXRJbnN0YWxsUGF0aCIsImRyaXZlciIsInJlcXVpcmUiLCJtc2ciLCJtZXNzYWdlIiwibWF0Y2hBdXRvbWF0aW9uTmFtZSIsIm1hdGNoUGxhdGZvcm1OYW1lIiwiZHJpdmVycyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJkcml2ZXJEYXRhIiwidG9QYWlycyIsImFOYW1lTWF0Y2hlcyIsInRvTG93ZXJDYXNlIiwicE5hbWVNYXRjaGVzIiwiaW5jbHVkZXMiLCJtYXAiLCJ0b0xvd2VyIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLTyxNQUFNQSxZQUFOLFNBQTJCQyxnQ0FBM0IsQ0FBMkM7QUFNaERD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QUFVcUIsVUFBVyw0QkFBdEIsR0FDQSxJQUFHWixjQUFlLCtCQURsQixHQUVBLDZCQUE0QjBCLGlCQUFrQixlQUY5QyxHQUdBLHFCQUhBLEdBSURXLElBQUksQ0FBQ0MsU0FBTCxDQUFldkMsYUFBZixDQUpULENBQU47QUFLRDtBQUNGOztBQUVELFVBQU0sSUFBSVIsS0FBSixDQUFXLHVEQUFYLENBQU47QUFDRDs7QUFqTThDIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgRFJJVkVSX1RZUEUgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHsgRXh0ZW5zaW9uQ29uZmlnIH0gZnJvbSAnLi9leHRlbnNpb24tY29uZmlnJztcblxuLyoqXG4gKiBAZXh0ZW5kcyB7RXh0ZW5zaW9uQ29uZmlnPERyaXZlclR5cGU+fVxuICovXG5leHBvcnQgY2xhc3MgRHJpdmVyQ29uZmlnIGV4dGVuZHMgRXh0ZW5zaW9uQ29uZmlnIHtcblxuICAvKipcbiAgICogQSBzZXQgb2YgdW5pcXVlIGF1dG9tYXRpb24gbmFtZXMgdXNlZCBieSBkcml2ZXJzLlxuICAgKiBAdHlwZSB7U2V0PHN0cmluZz59XG4gICAqL1xuICBrbm93bkF1dG9tYXRpb25OYW1lcztcblxuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2VzIHRvIHtAbGluayBEcml2ZXJDb25maWd9IGluc3RhbmNlcy5cbiAgICpcbiAgICogYE1hbmlmZXN0YCBhbmQgYEV4dGVuc2lvbkNvbmZpZ2AgaGF2ZSBhIG9uZS10by1tYW55IHJlbGF0aW9uc2hpcDsgZWFjaCBgTWFuaWZlc3RgIHNob3VsZCBiZSBhc3NvY2lhdGVkIHdpdGggYSBgRHJpdmVyQ29uZmlnYCBhbmQgYSBgUGx1Z2luQ29uZmlnYDsgbm8gbW9yZSwgbm8gbGVzcy5cbiAgICpcbiAgICogVGhpcyB2YXJpYWJsZSB0cmFja3MgdGhlIGBNYW5pZmVzdGAtdG8tYERyaXZlckNvbmZpZ2AgcG9ydGlvbi5cbiAgICpcbiAgICogQHR5cGUge1dlYWtNYXA8TWFuaWZlc3QsRHJpdmVyQ29uZmlnPn1cbiAgICogQHByaXZhdGVcbiAgICovXG4gICBzdGF0aWMgX2luc3RhbmNlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgIC8qKlxuICAgKiBDYWxsIHtAbGluayBEcml2ZXJDb25maWcuY3JlYXRlfSBpbnN0ZWFkLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge2ltcG9ydCgnLi9tYW5pZmVzdCcpLk1hbmlmZXN0fSBtYW5pZmVzdCAtIE1hbmlmZXN0IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7RHJpdmVyQ29uZmlnT3B0aW9uc30gW29wdHNdXG4gICAqL1xuICAgY29uc3RydWN0b3IgKG1hbmlmZXN0LCB7bG9nRm4sIGV4dERhdGF9ID0ge30pIHtcbiAgICAgc3VwZXIoRFJJVkVSX1RZUEUsIG1hbmlmZXN0LCBsb2dGbik7XG5cbiAgICAgdGhpcy5rbm93bkF1dG9tYXRpb25OYW1lcyA9IG5ldyBTZXQoKTtcblxuICAgICBpZiAoZXh0RGF0YSkge1xuICAgICAgIHRoaXMudmFsaWRhdGUoZXh0RGF0YSk7XG4gICAgIH1cbiAgIH1cblxuICAgLyoqXG4gICAgKiBDcmVhdGVzIGEgbmV3IHtAbGluayBEcml2ZXJDb25maWd9IGluc3RhbmNlIGZvciBhIHtAbGluayBNYW5pZmVzdH0gaW5zdGFuY2UuXG4gICAgKlxuICAgICogQHBhcmFtIHtNYW5pZmVzdH0gbWFuaWZlc3RcbiAgICAqIEBwYXJhbSB7RHJpdmVyQ29uZmlnT3B0aW9uc30gW29wdHNdXG4gICAgKiBAdGhyb3dzIElmIGBtYW5pZmVzdGAgYWxyZWFkeSBhc3NvY2lhdGVkIHdpdGggYSBgRHJpdmVyQ29uZmlnYFxuICAgICogQHJldHVybnMge0RyaXZlckNvbmZpZ31cbiAgICAqL1xuICAgc3RhdGljIGNyZWF0ZSAobWFuaWZlc3QsIHtleHREYXRhLCBsb2dGbn0gPSB7fSkge1xuICAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBEcml2ZXJDb25maWcobWFuaWZlc3QsIHtsb2dGbiwgZXh0RGF0YX0pO1xuICAgICBpZiAoRHJpdmVyQ29uZmlnLmdldEluc3RhbmNlKG1hbmlmZXN0KSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcihgTWFuaWZlc3Qgd2l0aCBBUFBJVU1fSE9NRSAke21hbmlmZXN0LmFwcGl1bUhvbWV9IGFscmVhZHkgaGFzIGEgRHJpdmVyQ29uZmlnOyB1c2UgRHJpdmVyQ29uZmlnLmdldEluc3RhbmNlKCkgdG8gcmV0cmlldmUgaXQuYCk7XG4gICAgIH1cbiAgICAgRHJpdmVyQ29uZmlnLl9pbnN0YW5jZXMuc2V0KG1hbmlmZXN0LCBpbnN0YW5jZSk7XG4gICAgIHJldHVybiBpbnN0YW5jZTtcbiAgIH1cblxuICAgLyoqXG4gICAgKiBSZXR1cm5zIGEgRHJpdmVyQ29uZmlnIGFzc29jaWF0ZWQgd2l0aCBhIE1hbmlmZXN0XG4gICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgICogQHJldHVybnMge0RyaXZlckNvbmZpZ3x1bmRlZmluZWR9XG4gICAgKi9cbiAgIHN0YXRpYyBnZXRJbnN0YW5jZSAobWFuaWZlc3QpIHtcbiAgICAgcmV0dXJuIERyaXZlckNvbmZpZy5faW5zdGFuY2VzLmdldChtYW5pZmVzdCk7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBDaGVja3MgZXh0ZW5zaW9ucyBmb3IgcHJvYmxlbXNcbiAgICogQHBhcmFtIHtFeHRSZWNvcmQ8RHJpdmVyVHlwZT59IGV4dHNcbiAgICovXG4gICB2YWxpZGF0ZSAoZXh0cykge1xuICAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmNsZWFyKCk7XG4gICAgIHJldHVybiBzdXBlci52YWxpZGF0ZShleHRzKTtcbiAgIH1cblxuICAgLyoqXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RHJpdmVyVHlwZT59IGV4dERhdGFcbiAgICogQHJldHVybnMge2ltcG9ydCgnLi9leHRlbnNpb24tY29uZmlnJykuUHJvYmxlbVtdfVxuICAgKi9cbiAgIGdldENvbmZpZ1Byb2JsZW1zIChleHREYXRhKSB7XG4gICAgIGNvbnN0IHByb2JsZW1zID0gW107XG4gICAgIGNvbnN0IHtwbGF0Zm9ybU5hbWVzLCBhdXRvbWF0aW9uTmFtZX0gPSBleHREYXRhO1xuXG4gICAgIGlmICghXy5pc0FycmF5KHBsYXRmb3JtTmFtZXMpKSB7XG4gICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICBlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBzdXBwb3J0ZWQgcGxhdGZvcm1OYW1lcyBsaXN0LicsXG4gICAgICAgICB2YWw6IHBsYXRmb3JtTmFtZXNcbiAgICAgICB9KTtcbiAgICAgfSBlbHNlIHtcbiAgICAgICBpZiAoXy5pc0VtcHR5KHBsYXRmb3JtTmFtZXMpKSB7XG4gICAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgICAgZXJyOiAnRW1wdHkgcGxhdGZvcm1OYW1lcyBsaXN0LicsXG4gICAgICAgICAgIHZhbDogcGxhdGZvcm1OYW1lc1xuICAgICAgICAgfSk7XG4gICAgICAgfSBlbHNlIHtcbiAgICAgICAgIGZvciAoY29uc3QgcE5hbWUgb2YgcGxhdGZvcm1OYW1lcykge1xuICAgICAgICAgICBpZiAoIV8uaXNTdHJpbmcocE5hbWUpKSB7XG4gICAgICAgICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnSW5jb3JyZWN0bHkgZm9ybWF0dGVkIHBsYXRmb3JtTmFtZS4nLCB2YWw6IHBOYW1lfSk7XG4gICAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgICB9XG4gICAgIH1cblxuICAgICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICAgcHJvYmxlbXMucHVzaCh7ZXJyOiAnTWlzc2luZyBvciBpbmNvcnJlY3QgYXV0b21hdGlvbk5hbWUnLCB2YWw6IGF1dG9tYXRpb25OYW1lfSk7XG4gICAgIH1cblxuICAgICBpZiAodGhpcy5rbm93bkF1dG9tYXRpb25OYW1lcy5oYXMoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICAgcHJvYmxlbXMucHVzaCh7XG4gICAgICAgICBlcnI6ICdNdWx0aXBsZSBkcml2ZXJzIGNsYWltIHN1cHBvcnQgZm9yIHRoZSBzYW1lIGF1dG9tYXRpb25OYW1lJyxcbiAgICAgICAgIHZhbDogYXV0b21hdGlvbk5hbWVcbiAgICAgICB9KTtcbiAgICAgfVxuXG4gICAgIC8vIHNob3VsZCB3ZSByZXRhaW4gdGhlIG5hbWUgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLCBvbmNlIHdlJ3ZlIGNoZWNrZWQgdGhlcmUgYXJlIG5vIHByb2JsZW1zP1xuICAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmFkZChhdXRvbWF0aW9uTmFtZSk7XG5cbiAgICAgcmV0dXJuIHByb2JsZW1zO1xuICAgfVxuXG4gICAvKipcbiAgICogQHBhcmFtIHtFeHROYW1lPERyaXZlclR5cGU+fSBkcml2ZXJOYW1lXG4gICAqIEBwYXJhbSB7RXh0TWFuaWZlc3Q8RHJpdmVyVHlwZT59IGV4dERhdGFcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gICBleHRlbnNpb25EZXNjIChkcml2ZXJOYW1lLCB7dmVyc2lvbiwgYXV0b21hdGlvbk5hbWV9KSB7XG4gICAgIHJldHVybiBgJHtkcml2ZXJOYW1lfUAke3ZlcnNpb259IChhdXRvbWF0aW9uTmFtZSAnJHthdXRvbWF0aW9uTmFtZX0nKWA7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBHaXZlbiBjYXBhYmlsaXRpZXMsIGZpbmQgYSBtYXRjaGluZyBkcml2ZXIgd2l0aGluIHRoZSBjb25maWcuIExvYWQgaXRzIGNsYXNzIGFuZCByZXR1cm4gaXQgYWxvbmcgd2l0aCB2ZXJzaW9uIGFuZCBkcml2ZXIgbmFtZS5cbiAgICogQHBhcmFtIHtDYXBhYmlsaXRpZXN9IGNhcHNcbiAgICogQHJldHVybnMge01hdGNoZWREcml2ZXJ9XG4gICAqL1xuICAgZmluZE1hdGNoaW5nRHJpdmVyICh7YXV0b21hdGlvbk5hbWUsIHBsYXRmb3JtTmFtZX0pIHtcbiAgICAgaWYgKCFfLmlzU3RyaW5nKHBsYXRmb3JtTmFtZSkpIHtcbiAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1lvdSBtdXN0IGluY2x1ZGUgYSBwbGF0Zm9ybU5hbWUgY2FwYWJpbGl0eScpO1xuICAgICB9XG5cbiAgICAgaWYgKCFfLmlzU3RyaW5nKGF1dG9tYXRpb25OYW1lKSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgaW5jbHVkZSBhbiBhdXRvbWF0aW9uTmFtZSBjYXBhYmlsaXR5Jyk7XG4gICAgIH1cblxuICAgICBsb2cuaW5mbyhgQXR0ZW1wdGluZyB0byBmaW5kIG1hdGNoaW5nIGRyaXZlciBmb3IgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgYCcke2F1dG9tYXRpb25OYW1lfScgYW5kIHBsYXRmb3JtTmFtZSAnJHtwbGF0Zm9ybU5hbWV9J2ApO1xuXG4gICAgIHRyeSB7XG4gICAgICAgY29uc3Qge1xuICAgICAgICAgZHJpdmVyTmFtZSxcbiAgICAgICAgIG1haW5DbGFzcyxcbiAgICAgICAgIHZlcnNpb24sXG4gICAgICAgfSA9IHRoaXMuX2dldERyaXZlckJ5U3VwcG9ydChhdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lKTtcbiAgICAgICBsb2cuaW5mbyhgVGhlICcke2RyaXZlck5hbWV9JyBkcml2ZXIgd2FzIGluc3RhbGxlZCBhbmQgbWF0Y2hlZCBjYXBzLmApO1xuICAgICAgIGxvZy5pbmZvKGBXaWxsIHJlcXVpcmUgaXQgYXQgJHt0aGlzLmdldEluc3RhbGxQYXRoKGRyaXZlck5hbWUpfWApO1xuICAgICAgIGNvbnN0IGRyaXZlciA9IHRoaXMucmVxdWlyZShkcml2ZXJOYW1lKTtcbiAgICAgICBpZiAoIWRyaXZlcikge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEcml2ZXIgJyR7ZHJpdmVyTmFtZX0nIGRpZCBub3QgZXhwb3J0IGEgY2xhc3Mgd2l0aCBuYW1lICcke21haW5DbGFzc30nLiBDb250YWN0IHRoZSBhdXRob3Igb2YgdGhlIGRyaXZlciFgKTtcbiAgICAgICB9XG4gICAgICAgcmV0dXJuIHtkcml2ZXIsIHZlcnNpb24sIGRyaXZlck5hbWV9O1xuICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICBjb25zdCBtc2cgPSBgQ291bGQgbm90IGZpbmQgYSBkcml2ZXIgZm9yIGF1dG9tYXRpb25OYW1lIGAgK1xuICAgICAgICAgICAgICAgICAgYCcke2F1dG9tYXRpb25OYW1lfScgYW5kIHBsYXRmb3JtTmFtZSAke3BsYXRmb3JtTmFtZX0nLiBgICtcbiAgICAgICAgICAgICAgICAgIGBIYXZlIHlvdSBpbnN0YWxsZWQgYSBkcml2ZXIgdGhhdCBzdXBwb3J0cyB0aG9zZSBgICtcbiAgICAgICAgICAgICAgICAgIGBjYXBhYmlsaXRpZXM/IFJ1biAnYXBwaXVtIGRyaXZlciBsaXN0IC0taW5zdGFsbGVkJyB0byBzZWUuIGAgK1xuICAgICAgICAgICAgICAgICAgYChMb3dlci1sZXZlbCBlcnJvcjogJHtlcnIubWVzc2FnZX0pYDtcbiAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICAgfVxuICAgfVxuXG4gICAvKipcbiAgICogR2l2ZW4gYW4gYXV0b21hdGlvbiBuYW1lIGFuZCBwbGF0Zm9ybSBuYW1lLCBmaW5kIGEgc3VpdGFibGUgZHJpdmVyIGFuZCByZXR1cm4gaXRzIGV4dGVuc2lvbiBkYXRhLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hBdXRvbWF0aW9uTmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2hQbGF0Zm9ybU5hbWVcbiAgICogQHJldHVybnMge0V4dE1ldGFkYXRhPERyaXZlclR5cGU+ICYgaW1wb3J0KCcuLi8uLi90eXBlcy9hcHBpdW0tbWFuaWZlc3QnKS5JbnRlcm5hbE1ldGFkYXRhICYgaW1wb3J0KCcuLi8uLi90eXBlcy9leHRlcm5hbC1tYW5pZmVzdCcpLkNvbW1vbk1ldGFkYXRhfVxuICAgKi9cbiAgIF9nZXREcml2ZXJCeVN1cHBvcnQgKG1hdGNoQXV0b21hdGlvbk5hbWUsIG1hdGNoUGxhdGZvcm1OYW1lKSB7XG4gICAgIGNvbnN0IGRyaXZlcnMgPSB0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnM7XG4gICAgIGZvciAoY29uc3QgW2RyaXZlck5hbWUsIGRyaXZlckRhdGFdIG9mIF8udG9QYWlycyhkcml2ZXJzKSkge1xuICAgICAgIGNvbnN0IHthdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lc30gPSBkcml2ZXJEYXRhO1xuICAgICAgIGNvbnN0IGFOYW1lTWF0Y2hlcyA9IGF1dG9tYXRpb25OYW1lLnRvTG93ZXJDYXNlKCkgPT09IG1hdGNoQXV0b21hdGlvbk5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICBjb25zdCBwTmFtZU1hdGNoZXMgPSBfLmluY2x1ZGVzKHBsYXRmb3JtTmFtZXMubWFwKF8udG9Mb3dlciksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoUGxhdGZvcm1OYW1lLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgICAgaWYgKGFOYW1lTWF0Y2hlcyAmJiBwTmFtZU1hdGNoZXMpIHtcbiAgICAgICAgIHJldHVybiB7ZHJpdmVyTmFtZSwgLi4uZHJpdmVyRGF0YX07XG4gICAgICAgfVxuXG4gICAgICAgaWYgKGFOYW1lTWF0Y2hlcykge1xuICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBEcml2ZXIgJyR7ZHJpdmVyTmFtZX0nIHN1cHBvcnRzIGF1dG9tYXRpb25OYW1lIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYCcke2F1dG9tYXRpb25OYW1lfScsIGJ1dCBBcHBpdW0gY291bGQgbm90IGZpbmQgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgc3VwcG9ydCBmb3IgcGxhdGZvcm1OYW1lICcke21hdGNoUGxhdGZvcm1OYW1lfScuIFN1cHBvcnRlZCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBwbGF0Zm9ybU5hbWVzIGFyZTogYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShwbGF0Zm9ybU5hbWVzKSk7XG4gICAgICAgfVxuICAgICB9XG5cbiAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBpbnN0YWxsZWQgZHJpdmVyIHRvIHN1cHBvcnQgZ2l2ZW4gY2Fwc2ApO1xuICAgfVxufVxuXG4vKipcbiAqIEB0eXBlZGVmIERyaXZlckNvbmZpZ09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2V4dGVuc2lvbi1jb25maWcnKS5FeHRlbnNpb25Mb2dGbn0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAqIEBwcm9wZXJ0eSB7TWFuaWZlc3REYXRhWydkcml2ZXJzJ119IFtleHREYXRhXSAtIEV4dGVuc2lvbiBkYXRhXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRNZXRhZGF0YTxUPn0gRXh0TWV0YWRhdGFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dE1hbmlmZXN0PFQ+fSBFeHRNYW5pZmVzdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5NYW5pZmVzdERhdGF9IE1hbmlmZXN0RGF0YVxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5Ecml2ZXJUeXBlfSBEcml2ZXJUeXBlXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHRSZWNvcmQ8VD59IEV4dFJlY29yZFxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0TmFtZTxUPn0gRXh0TmFtZVxuICovXG5cblxuLyoqXG4gKiBSZXR1cm4gdmFsdWUgb2Yge0BsaW5rY29kZSBEcml2ZXJDb25maWcuZmluZE1hdGNoaW5nRHJpdmVyfVxuICogQHR5cGVkZWYgTWF0Y2hlZERyaXZlclxuICogQHByb3BlcnR5IHtpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVuc2lvbicpLkRyaXZlckNsYXNzfSBkcml2ZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB2ZXJzaW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gZHJpdmVyTmFtZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkNhcGFiaWxpdGllc30gQ2FwYWJpbGl0aWVzXG4gKi9cbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEcml2ZXJDb25maWciLCJFeHRlbnNpb25Db25maWciLCJrbm93bkF1dG9tYXRpb25OYW1lcyIsIl9pbnN0YW5jZXMiLCJXZWFrTWFwIiwiY29uc3RydWN0b3IiLCJtYW5pZmVzdCIsImxvZ0ZuIiwiZXh0RGF0YSIsIkRSSVZFUl9UWVBFIiwiU2V0IiwidmFsaWRhdGUiLCJjcmVhdGUiLCJpbnN0YW5jZSIsImdldEluc3RhbmNlIiwiRXJyb3IiLCJhcHBpdW1Ib21lIiwic2V0IiwiZ2V0IiwiZXh0cyIsImNsZWFyIiwiZ2V0Q29uZmlnUHJvYmxlbXMiLCJwcm9ibGVtcyIsInBsYXRmb3JtTmFtZXMiLCJhdXRvbWF0aW9uTmFtZSIsIl8iLCJpc0FycmF5IiwicHVzaCIsImVyciIsInZhbCIsImlzRW1wdHkiLCJwTmFtZSIsImlzU3RyaW5nIiwiaGFzIiwiYWRkIiwiZXh0ZW5zaW9uRGVzYyIsImRyaXZlck5hbWUiLCJ2ZXJzaW9uIiwiZmluZE1hdGNoaW5nRHJpdmVyIiwicGxhdGZvcm1OYW1lIiwibG9nIiwiaW5mbyIsIm1haW5DbGFzcyIsIl9nZXREcml2ZXJCeVN1cHBvcnQiLCJnZXRJbnN0YWxsUGF0aCIsImRyaXZlciIsInJlcXVpcmUiLCJtc2ciLCJtZXNzYWdlIiwibWF0Y2hBdXRvbWF0aW9uTmFtZSIsIm1hdGNoUGxhdGZvcm1OYW1lIiwiZHJpdmVycyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJkcml2ZXJEYXRhIiwidG9QYWlycyIsImFOYW1lTWF0Y2hlcyIsInRvTG93ZXJDYXNlIiwicE5hbWVNYXRjaGVzIiwiaW5jbHVkZXMiLCJtYXAiLCJ0b0xvd2VyIiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9leHRlbnNpb24vZHJpdmVyLWNvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBEUklWRVJfVFlQRSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5pbXBvcnQgeyBFeHRlbnNpb25Db25maWcgfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuXG4vKipcbiAqIEBleHRlbmRzIHtFeHRlbnNpb25Db25maWc8RHJpdmVyVHlwZT59XG4gKi9cbmV4cG9ydCBjbGFzcyBEcml2ZXJDb25maWcgZXh0ZW5kcyBFeHRlbnNpb25Db25maWcge1xuXG4gIC8qKlxuICAgKiBBIHNldCBvZiB1bmlxdWUgYXV0b21hdGlvbiBuYW1lcyB1c2VkIGJ5IGRyaXZlcnMuXG4gICAqIEB0eXBlIHtTZXQ8c3RyaW5nPn1cbiAgICovXG4gIGtub3duQXV0b21hdGlvbk5hbWVzO1xuXG4gIC8qKlxuICAgKiBBIG1hcHBpbmcgb2Yge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZXMgdG8ge0BsaW5rIERyaXZlckNvbmZpZ30gaW5zdGFuY2VzLlxuICAgKlxuICAgKiBgTWFuaWZlc3RgIGFuZCBgRXh0ZW5zaW9uQ29uZmlnYCBoYXZlIGEgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwOyBlYWNoIGBNYW5pZmVzdGAgc2hvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGBEcml2ZXJDb25maWdgIGFuZCBhIGBQbHVnaW5Db25maWdgOyBubyBtb3JlLCBubyBsZXNzLlxuICAgKlxuICAgKiBUaGlzIHZhcmlhYmxlIHRyYWNrcyB0aGUgYE1hbmlmZXN0YC10by1gRHJpdmVyQ29uZmlnYCBwb3J0aW9uLlxuICAgKlxuICAgKiBAdHlwZSB7V2Vha01hcDxNYW5pZmVzdCxEcml2ZXJDb25maWc+fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgIHN0YXRpYyBfaW5zdGFuY2VzID0gbmV3IFdlYWtNYXAoKTtcblxuICAgLyoqXG4gICAqIENhbGwge0BsaW5rIERyaXZlckNvbmZpZy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7aW1wb3J0KCcuL21hbmlmZXN0JykuTWFuaWZlc3R9IG1hbmlmZXN0IC0gTWFuaWZlc3QgaW5zdGFuY2VcbiAgICogQHBhcmFtIHtEcml2ZXJDb25maWdPcHRpb25zfSBbb3B0c11cbiAgICovXG4gICBjb25zdHJ1Y3RvciAobWFuaWZlc3QsIHtsb2dGbiwgZXh0RGF0YX0gPSB7fSkge1xuICAgICBzdXBlcihEUklWRVJfVFlQRSwgbWFuaWZlc3QsIGxvZ0ZuKTtcblxuICAgICB0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzID0gbmV3IFNldCgpO1xuXG4gICAgIGlmIChleHREYXRhKSB7XG4gICAgICAgdGhpcy52YWxpZGF0ZShleHREYXRhKTtcbiAgICAgfVxuICAgfVxuXG4gICAvKipcbiAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIERyaXZlckNvbmZpZ30gaW5zdGFuY2UgZm9yIGEge0BsaW5rIE1hbmlmZXN0fSBpbnN0YW5jZS5cbiAgICAqXG4gICAgKiBAcGFyYW0ge01hbmlmZXN0fSBtYW5pZmVzdFxuICAgICogQHBhcmFtIHtEcml2ZXJDb25maWdPcHRpb25zfSBbb3B0c11cbiAgICAqIEB0aHJvd3MgSWYgYG1hbmlmZXN0YCBhbHJlYWR5IGFzc29jaWF0ZWQgd2l0aCBhIGBEcml2ZXJDb25maWdgXG4gICAgKiBAcmV0dXJucyB7RHJpdmVyQ29uZmlnfVxuICAgICovXG4gICBzdGF0aWMgY3JlYXRlIChtYW5pZmVzdCwge2V4dERhdGEsIGxvZ0ZufSA9IHt9KSB7XG4gICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IERyaXZlckNvbmZpZyhtYW5pZmVzdCwge2xvZ0ZuLCBleHREYXRhfSk7XG4gICAgIGlmIChEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UobWFuaWZlc3QpKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYW5pZmVzdCB3aXRoIEFQUElVTV9IT01FICR7bWFuaWZlc3QuYXBwaXVtSG9tZX0gYWxyZWFkeSBoYXMgYSBEcml2ZXJDb25maWc7IHVzZSBEcml2ZXJDb25maWcuZ2V0SW5zdGFuY2UoKSB0byByZXRyaWV2ZSBpdC5gKTtcbiAgICAgfVxuICAgICBEcml2ZXJDb25maWcuX2luc3RhbmNlcy5zZXQobWFuaWZlc3QsIGluc3RhbmNlKTtcbiAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgfVxuXG4gICAvKipcbiAgICAqIFJldHVybnMgYSBEcml2ZXJDb25maWcgYXNzb2NpYXRlZCB3aXRoIGEgTWFuaWZlc3RcbiAgICAqIEBwYXJhbSB7TWFuaWZlc3R9IG1hbmlmZXN0XG4gICAgKiBAcmV0dXJucyB7RHJpdmVyQ29uZmlnfHVuZGVmaW5lZH1cbiAgICAqL1xuICAgc3RhdGljIGdldEluc3RhbmNlIChtYW5pZmVzdCkge1xuICAgICByZXR1cm4gRHJpdmVyQ29uZmlnLl9pbnN0YW5jZXMuZ2V0KG1hbmlmZXN0KTtcbiAgIH1cblxuICAgLyoqXG4gICAqIENoZWNrcyBleHRlbnNpb25zIGZvciBwcm9ibGVtc1xuICAgKiBAcGFyYW0ge0V4dFJlY29yZDxEcml2ZXJUeXBlPn0gZXh0c1xuICAgKi9cbiAgIHZhbGlkYXRlIChleHRzKSB7XG4gICAgIHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMuY2xlYXIoKTtcbiAgICAgcmV0dXJuIHN1cGVyLnZhbGlkYXRlKGV4dHMpO1xuICAgfVxuXG4gICAvKipcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxEcml2ZXJUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCcuL2V4dGVuc2lvbi1jb25maWcnKS5Qcm9ibGVtW119XG4gICAqL1xuICAgZ2V0Q29uZmlnUHJvYmxlbXMgKGV4dERhdGEpIHtcbiAgICAgY29uc3QgcHJvYmxlbXMgPSBbXTtcbiAgICAgY29uc3Qge3BsYXRmb3JtTmFtZXMsIGF1dG9tYXRpb25OYW1lfSA9IGV4dERhdGE7XG5cbiAgICAgaWYgKCFfLmlzQXJyYXkocGxhdGZvcm1OYW1lcykpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgIGVycjogJ01pc3Npbmcgb3IgaW5jb3JyZWN0IHN1cHBvcnRlZCBwbGF0Zm9ybU5hbWVzIGxpc3QuJyxcbiAgICAgICAgIHZhbDogcGxhdGZvcm1OYW1lc1xuICAgICAgIH0pO1xuICAgICB9IGVsc2Uge1xuICAgICAgIGlmIChfLmlzRW1wdHkocGxhdGZvcm1OYW1lcykpIHtcbiAgICAgICAgIHByb2JsZW1zLnB1c2goe1xuICAgICAgICAgICBlcnI6ICdFbXB0eSBwbGF0Zm9ybU5hbWVzIGxpc3QuJyxcbiAgICAgICAgICAgdmFsOiBwbGF0Zm9ybU5hbWVzXG4gICAgICAgICB9KTtcbiAgICAgICB9IGVsc2Uge1xuICAgICAgICAgZm9yIChjb25zdCBwTmFtZSBvZiBwbGF0Zm9ybU5hbWVzKSB7XG4gICAgICAgICAgIGlmICghXy5pc1N0cmluZyhwTmFtZSkpIHtcbiAgICAgICAgICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdJbmNvcnJlY3RseSBmb3JtYXR0ZWQgcGxhdGZvcm1OYW1lLicsIHZhbDogcE5hbWV9KTtcbiAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICAgIH1cbiAgICAgfVxuXG4gICAgIGlmICghXy5pc1N0cmluZyhhdXRvbWF0aW9uTmFtZSkpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtlcnI6ICdNaXNzaW5nIG9yIGluY29ycmVjdCBhdXRvbWF0aW9uTmFtZScsIHZhbDogYXV0b21hdGlvbk5hbWV9KTtcbiAgICAgfVxuXG4gICAgIGlmICh0aGlzLmtub3duQXV0b21hdGlvbk5hbWVzLmhhcyhhdXRvbWF0aW9uTmFtZSkpIHtcbiAgICAgICBwcm9ibGVtcy5wdXNoKHtcbiAgICAgICAgIGVycjogJ011bHRpcGxlIGRyaXZlcnMgY2xhaW0gc3VwcG9ydCBmb3IgdGhlIHNhbWUgYXV0b21hdGlvbk5hbWUnLFxuICAgICAgICAgdmFsOiBhdXRvbWF0aW9uTmFtZVxuICAgICAgIH0pO1xuICAgICB9XG5cbiAgICAgLy8gc2hvdWxkIHdlIHJldGFpbiB0aGUgbmFtZSBhdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24sIG9uY2Ugd2UndmUgY2hlY2tlZCB0aGVyZSBhcmUgbm8gcHJvYmxlbXM/XG4gICAgIHRoaXMua25vd25BdXRvbWF0aW9uTmFtZXMuYWRkKGF1dG9tYXRpb25OYW1lKTtcblxuICAgICByZXR1cm4gcHJvYmxlbXM7XG4gICB9XG5cbiAgIC8qKlxuICAgKiBAcGFyYW0ge0V4dE5hbWU8RHJpdmVyVHlwZT59IGRyaXZlck5hbWVcbiAgICogQHBhcmFtIHtFeHRNYW5pZmVzdDxEcml2ZXJUeXBlPn0gZXh0RGF0YVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgIGV4dGVuc2lvbkRlc2MgKGRyaXZlck5hbWUsIHt2ZXJzaW9uLCBhdXRvbWF0aW9uTmFtZX0pIHtcbiAgICAgcmV0dXJuIGAke2RyaXZlck5hbWV9QCR7dmVyc2lvbn0gKGF1dG9tYXRpb25OYW1lICcke2F1dG9tYXRpb25OYW1lfScpYDtcbiAgIH1cblxuICAgLyoqXG4gICAqIEdpdmVuIGNhcGFiaWxpdGllcywgZmluZCBhIG1hdGNoaW5nIGRyaXZlciB3aXRoaW4gdGhlIGNvbmZpZy4gTG9hZCBpdHMgY2xhc3MgYW5kIHJldHVybiBpdCBhbG9uZyB3aXRoIHZlcnNpb24gYW5kIGRyaXZlciBuYW1lLlxuICAgKiBAcGFyYW0ge0NhcGFiaWxpdGllc30gY2Fwc1xuICAgKiBAcmV0dXJucyB7TWF0Y2hlZERyaXZlcn1cbiAgICovXG4gICBmaW5kTWF0Y2hpbmdEcml2ZXIgKHthdXRvbWF0aW9uTmFtZSwgcGxhdGZvcm1OYW1lfSkge1xuICAgICBpZiAoIV8uaXNTdHJpbmcocGxhdGZvcm1OYW1lKSkge1xuICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3QgaW5jbHVkZSBhIHBsYXRmb3JtTmFtZSBjYXBhYmlsaXR5Jyk7XG4gICAgIH1cblxuICAgICBpZiAoIV8uaXNTdHJpbmcoYXV0b21hdGlvbk5hbWUpKSB7XG4gICAgICAgdGhyb3cgbmV3IEVycm9yKCdZb3UgbXVzdCBpbmNsdWRlIGFuIGF1dG9tYXRpb25OYW1lIGNhcGFiaWxpdHknKTtcbiAgICAgfVxuXG4gICAgIGxvZy5pbmZvKGBBdHRlbXB0aW5nIHRvIGZpbmQgbWF0Y2hpbmcgZHJpdmVyIGZvciBhdXRvbWF0aW9uTmFtZSBgICtcbiAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICcke3BsYXRmb3JtTmFtZX0nYCk7XG5cbiAgICAgdHJ5IHtcbiAgICAgICBjb25zdCB7XG4gICAgICAgICBkcml2ZXJOYW1lLFxuICAgICAgICAgbWFpbkNsYXNzLFxuICAgICAgICAgdmVyc2lvbixcbiAgICAgICB9ID0gdGhpcy5fZ2V0RHJpdmVyQnlTdXBwb3J0KGF1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWUpO1xuICAgICAgIGxvZy5pbmZvKGBUaGUgJyR7ZHJpdmVyTmFtZX0nIGRyaXZlciB3YXMgaW5zdGFsbGVkIGFuZCBtYXRjaGVkIGNhcHMuYCk7XG4gICAgICAgbG9nLmluZm8oYFdpbGwgcmVxdWlyZSBpdCBhdCAke3RoaXMuZ2V0SW5zdGFsbFBhdGgoZHJpdmVyTmFtZSl9YCk7XG4gICAgICAgY29uc3QgZHJpdmVyID0gdGhpcy5yZXF1aXJlKGRyaXZlck5hbWUpO1xuICAgICAgIGlmICghZHJpdmVyKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERyaXZlciAnJHtkcml2ZXJOYW1lfScgZGlkIG5vdCBleHBvcnQgYSBjbGFzcyB3aXRoIG5hbWUgJyR7bWFpbkNsYXNzfScuIENvbnRhY3QgdGhlIGF1dGhvciBvZiB0aGUgZHJpdmVyIWApO1xuICAgICAgIH1cbiAgICAgICByZXR1cm4ge2RyaXZlciwgdmVyc2lvbiwgZHJpdmVyTmFtZX07XG4gICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgIGNvbnN0IG1zZyA9IGBDb3VsZCBub3QgZmluZCBhIGRyaXZlciBmb3IgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JyBhbmQgcGxhdGZvcm1OYW1lICR7cGxhdGZvcm1OYW1lfScuIGAgK1xuICAgICAgICAgICAgICAgICAgYEhhdmUgeW91IGluc3RhbGxlZCBhIGRyaXZlciB0aGF0IHN1cHBvcnRzIHRob3NlIGAgK1xuICAgICAgICAgICAgICAgICAgYGNhcGFiaWxpdGllcz8gUnVuICdhcHBpdW0gZHJpdmVyIGxpc3QgLS1pbnN0YWxsZWQnIHRvIHNlZS4gYCArXG4gICAgICAgICAgICAgICAgICBgKExvd2VyLWxldmVsIGVycm9yOiAke2Vyci5tZXNzYWdlfSlgO1xuICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICB9XG4gICB9XG5cbiAgIC8qKlxuICAgKiBHaXZlbiBhbiBhdXRvbWF0aW9uIG5hbWUgYW5kIHBsYXRmb3JtIG5hbWUsIGZpbmQgYSBzdWl0YWJsZSBkcml2ZXIgYW5kIHJldHVybiBpdHMgZXh0ZW5zaW9uIGRhdGEuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaEF1dG9tYXRpb25OYW1lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRjaFBsYXRmb3JtTmFtZVxuICAgKiBAcmV0dXJucyB7RXh0TWV0YWRhdGE8RHJpdmVyVHlwZT4gJiBpbXBvcnQoJy4uLy4uL3R5cGVzL2FwcGl1bS1tYW5pZmVzdCcpLkludGVybmFsTWV0YWRhdGEgJiBpbXBvcnQoJy4uLy4uL3R5cGVzL2V4dGVybmFsLW1hbmlmZXN0JykuQ29tbW9uTWV0YWRhdGF9XG4gICAqL1xuICAgX2dldERyaXZlckJ5U3VwcG9ydCAobWF0Y2hBdXRvbWF0aW9uTmFtZSwgbWF0Y2hQbGF0Zm9ybU5hbWUpIHtcbiAgICAgY29uc3QgZHJpdmVycyA9IHRoaXMuaW5zdGFsbGVkRXh0ZW5zaW9ucztcbiAgICAgZm9yIChjb25zdCBbZHJpdmVyTmFtZSwgZHJpdmVyRGF0YV0gb2YgXy50b1BhaXJzKGRyaXZlcnMpKSB7XG4gICAgICAgY29uc3Qge2F1dG9tYXRpb25OYW1lLCBwbGF0Zm9ybU5hbWVzfSA9IGRyaXZlckRhdGE7XG4gICAgICAgY29uc3QgYU5hbWVNYXRjaGVzID0gYXV0b21hdGlvbk5hbWUudG9Mb3dlckNhc2UoKSA9PT0gbWF0Y2hBdXRvbWF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgIGNvbnN0IHBOYW1lTWF0Y2hlcyA9IF8uaW5jbHVkZXMocGxhdGZvcm1OYW1lcy5tYXAoXy50b0xvd2VyKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hQbGF0Zm9ybU5hbWUudG9Mb3dlckNhc2UoKSk7XG5cbiAgICAgICBpZiAoYU5hbWVNYXRjaGVzICYmIHBOYW1lTWF0Y2hlcykge1xuICAgICAgICAgcmV0dXJuIHtkcml2ZXJOYW1lLCAuLi5kcml2ZXJEYXRhfTtcbiAgICAgICB9XG5cbiAgICAgICBpZiAoYU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYERyaXZlciAnJHtkcml2ZXJOYW1lfScgc3VwcG9ydHMgYXV0b21hdGlvbk5hbWUgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgJyR7YXV0b21hdGlvbk5hbWV9JywgYnV0IEFwcGl1bSBjb3VsZCBub3QgZmluZCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBzdXBwb3J0IGZvciBwbGF0Zm9ybU5hbWUgJyR7bWF0Y2hQbGF0Zm9ybU5hbWV9Jy4gU3VwcG9ydGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYHBsYXRmb3JtTmFtZXMgYXJlOiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHBsYXRmb3JtTmFtZXMpKTtcbiAgICAgICB9XG4gICAgIH1cblxuICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIGluc3RhbGxlZCBkcml2ZXIgdG8gc3VwcG9ydCBnaXZlbiBjYXBzYCk7XG4gICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYgRHJpdmVyQ29uZmlnT3B0aW9uc1xuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vZXh0ZW5zaW9uLWNvbmZpZycpLkV4dGVuc2lvbkxvZ0ZufSBbbG9nRm5dIC0gT3B0aW9uYWwgbG9nZ2luZyBmdW5jdGlvblxuICogQHByb3BlcnR5IHtNYW5pZmVzdERhdGFbJ2RyaXZlcnMnXX0gW2V4dERhdGFdIC0gRXh0ZW5zaW9uIGRhdGFcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dE1ldGFkYXRhPFQ+fSBFeHRNZXRhZGF0YVxuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIFRcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uLy4uL3R5cGVzJykuRXh0TWFuaWZlc3Q8VD59IEV4dE1hbmlmZXN0XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLk1hbmlmZXN0RGF0YX0gTWFuaWZlc3REYXRhXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkRyaXZlclR5cGV9IERyaXZlclR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vbWFuaWZlc3QnKS5NYW5pZmVzdH0gTWFuaWZlc3RcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi8uLi90eXBlcycpLkV4dFJlY29yZDxUPn0gRXh0UmVjb3JkXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgVFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi4vLi4vdHlwZXMnKS5FeHROYW1lPFQ+fSBFeHROYW1lXG4gKi9cblxuXG4vKipcbiAqIFJldHVybiB2YWx1ZSBvZiB7QGxpbmtjb2RlIERyaXZlckNvbmZpZy5maW5kTWF0Y2hpbmdEcml2ZXJ9XG4gKiBAdHlwZWRlZiBNYXRjaGVkRHJpdmVyXG4gKiBAcHJvcGVydHkge2ltcG9ydCgnLi4vLi4vdHlwZXMvZXh0ZW5zaW9uJykuRHJpdmVyQ2xhc3N9IGRyaXZlclxuICogQHByb3BlcnR5IHtzdHJpbmd9IHZlcnNpb25cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBkcml2ZXJOYW1lXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQ2Fw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