appium 2.0.0-beta.44 → 2.0.0-beta.45
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.
- package/build/lib/appium.d.ts +137 -14
- package/build/lib/appium.d.ts.map +1 -1
- package/build/lib/appium.js +5 -5
- package/build/lib/appium.js.map +1 -0
- package/build/lib/cli/args.js +3 -3
- package/build/lib/cli/args.js.map +1 -0
- package/build/lib/cli/driver-command.js +3 -3
- package/build/lib/cli/driver-command.js.map +1 -0
- package/build/lib/cli/extension-command.js +3 -3
- package/build/lib/cli/extension-command.js.map +1 -0
- package/build/lib/cli/extension.js +3 -3
- package/build/lib/cli/extension.js.map +1 -0
- package/build/lib/cli/parser.js +3 -3
- package/build/lib/cli/parser.js.map +1 -0
- package/build/lib/cli/plugin-command.js +3 -3
- package/build/lib/cli/plugin-command.js.map +1 -0
- package/build/lib/cli/utils.js +3 -3
- package/build/lib/cli/utils.js.map +1 -0
- package/build/lib/config-file.js +3 -3
- package/build/lib/config-file.js.map +1 -0
- package/build/lib/config.js +3 -3
- package/build/lib/config.js.map +1 -0
- package/build/lib/constants.js +3 -3
- package/build/lib/constants.js.map +1 -0
- package/build/lib/extension/driver-config.d.ts +3 -2
- package/build/lib/extension/driver-config.d.ts.map +1 -1
- package/build/lib/extension/driver-config.js +3 -3
- package/build/lib/extension/driver-config.js.map +1 -0
- package/build/lib/extension/extension-config.js +3 -3
- package/build/lib/extension/extension-config.js.map +1 -0
- package/build/lib/extension/index.js +3 -3
- package/build/lib/extension/index.js.map +1 -0
- package/build/lib/extension/manifest.d.ts +1 -2
- package/build/lib/extension/manifest.d.ts.map +1 -1
- package/build/lib/extension/manifest.js +35 -30
- package/build/lib/extension/manifest.js.map +1 -0
- package/build/lib/extension/package-changed.js +3 -3
- package/build/lib/extension/package-changed.js.map +1 -0
- package/build/lib/extension/plugin-config.js +3 -3
- package/build/lib/extension/plugin-config.js.map +1 -0
- package/build/lib/grid-register.js +3 -3
- package/build/lib/grid-register.js.map +1 -0
- package/build/lib/logger.js.map +1 -0
- package/build/lib/logsink.js +3 -3
- package/build/lib/logsink.js.map +1 -0
- package/build/lib/main.js +3 -3
- package/build/lib/main.js.map +1 -0
- package/build/lib/schema/arg-spec.js +3 -3
- package/build/lib/schema/arg-spec.js.map +1 -0
- package/build/lib/schema/cli-args.js +3 -3
- package/build/lib/schema/cli-args.js.map +1 -0
- package/build/lib/schema/cli-transformers.d.ts +1 -1
- package/build/lib/schema/cli-transformers.d.ts.map +1 -1
- package/build/lib/schema/cli-transformers.js +23 -18
- package/build/lib/schema/cli-transformers.js.map +1 -0
- package/build/lib/schema/index.js.map +1 -0
- package/build/lib/schema/keywords.js.map +1 -0
- package/build/lib/schema/schema.js +3 -3
- package/build/lib/schema/schema.js.map +1 -0
- package/build/lib/utils.d.ts +288 -27
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +7 -35
- package/build/lib/utils.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/appium.js +27 -18
- package/lib/extension/driver-config.js +2 -1
- package/lib/extension/manifest.js +49 -32
- package/lib/schema/cli-transformers.js +27 -24
- package/lib/utils.js +87 -66
- package/package.json +16 -15
package/build/lib/logsink.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -19,6 +17,8 @@ var _support = require("@appium/support");
|
|
|
19
17
|
|
|
20
18
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
21
19
|
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
22
|
_support.logger.patchLogger(_npmlog.default);
|
|
23
23
|
|
|
24
24
|
global._global_npmlog = _npmlog.default;
|
|
@@ -207,4 +207,4 @@ function clear() {
|
|
|
207
207
|
|
|
208
208
|
var _default = init;
|
|
209
209
|
exports.default = _default;
|
|
210
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dnZXIiLCJwYXRjaExvZ2dlciIsIm5wbWxvZyIsImdsb2JhbCIsIl9nbG9iYWxfbnBtbG9nIiwibGV2ZWwiLCJsZXZlbHMiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJjb2xvcnMiLCJucG1Ub1dpbnN0b25MZXZlbHMiLCJzaWxseSIsInZlcmJvc2UiLCJodHRwIiwibG9nIiwidXNlTG9jYWxUaW1lWm9uZSIsInRpbWVzdGFtcEZvcm1hdCIsImZvcm1hdCIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwidmFsdWVPZiIsImdldFRpbWV6b25lT2Zmc2V0IiwidG9JU09TdHJpbmciLCJyZXBsYWNlIiwidHJpbSIsImNvbG9yaXplRm9ybWF0IiwiY29sb3JpemUiLCJzdHJpcENvbG9yRm9ybWF0Iiwic3RyaXBDb2xvciIsImNvZGUiLCJtZXNzYWdlIiwiY3JlYXRlQ29uc29sZVRyYW5zcG9ydCIsImFyZ3MiLCJsb2dMdmwiLCJ0cmFuc3BvcnRzIiwiQ29uc29sZSIsIm5hbWUiLCJoYW5kbGVFeGNlcHRpb25zIiwiZXhpdE9uRXJyb3IiLCJqc29uIiwic3RkZXJyTGV2ZWxzIiwiY29tYmluZSIsImFkanVzdERlYnVnIiwibG9nTm9Db2xvcnMiLCJwcmludGYiLCJwcmludEluZm8iLCJsb2dUaW1lc3RhbXAiLCJjcmVhdGVGaWxlVHJhbnNwb3J0IiwiRmlsZSIsImZpbGVuYW1lIiwibG9nRmlsZSIsIm1heEZpbGVzIiwiY3JlYXRlSHR0cFRyYW5zcG9ydCIsImhvc3QiLCJwb3J0Iiwid2ViaG9vayIsIm1hdGNoIiwiaG9zdEFuZFBvcnQiLCJzcGxpdCIsInBhcnNlSW50IiwiSHR0cCIsInBhdGgiLCJjcmVhdGVUcmFuc3BvcnRzIiwiY29uc29sZUxvZ0xldmVsIiwiZmlsZUxvZ0xldmVsIiwibG9nbGV2ZWwiLCJsdmxQYWlyIiwicHVzaCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwiZSIsImNvbnNvbGUiLCJpbml0IiwibG9jYWxUaW1lem9uZSIsImNsZWFyIiwiY3JlYXRlTG9nZ2VyIiwib24iLCJsb2dPYmoiLCJ3aW5zdG9uTGV2ZWwiLCJtc2ciLCJwcmVmaXgiLCJtYWdlbnRhIiwibG9nSGFuZGxlciIsIl8iLCJpc0Z1bmN0aW9uIiwidHJhbnNwb3J0Iiwia2V5cyIsInJlbW92ZSIsInJlbW92ZUFsbExpc3RlbmVycyJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2dzaW5rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBucG1sb2cgZnJvbSAnbnBtbG9nJztcbmltcG9ydCB7Y3JlYXRlTG9nZ2VyLCBmb3JtYXQsIHRyYW5zcG9ydHN9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHtmcywgbG9nZ2VyfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLy8gc2V0IHVwIGRpc3RyaWJ1dGVkIGxvZ2dpbmcgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZVxubG9nZ2VyLnBhdGNoTG9nZ2VyKG5wbWxvZyk7XG5nbG9iYWwuX2dsb2JhbF9ucG1sb2cgPSBucG1sb2c7XG5cbi8vIG5wbWxvZyBpcyB1c2VkIG9ubHkgZm9yIGVtaXR0aW5nLCB3ZSB1c2Ugd2luc3RvbiBmb3Igb3V0cHV0XG5ucG1sb2cubGV2ZWwgPSAnaW5mbyc7XG5jb25zdCBsZXZlbHMgPSB7XG4gIGRlYnVnOiA0LFxuICBpbmZvOiAzLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMSxcbn07XG5cbmNvbnN0IGNvbG9ycyA9IHtcbiAgaW5mbzogJ2N5YW4nLFxuICBkZWJ1ZzogJ2dyZXknLFxuICB3YXJuOiAneWVsbG93JyxcbiAgZXJyb3I6ICdyZWQnLFxufTtcblxuY29uc3QgbnBtVG9XaW5zdG9uTGV2ZWxzID0ge1xuICBzaWxseTogJ2RlYnVnJyxcbiAgdmVyYm9zZTogJ2RlYnVnJyxcbiAgZGVidWc6ICdkZWJ1ZycsXG4gIGluZm86ICdpbmZvJyxcbiAgaHR0cDogJ2luZm8nLFxuICB3YXJuOiAnd2FybicsXG4gIGVycm9yOiAnZXJyb3InLFxufTtcblxubGV0IGxvZyA9IG51bGw7XG5sZXQgdXNlTG9jYWxUaW1lWm9uZSA9IGZhbHNlO1xuXG4vLyBhZGQgdGhlIHRpbWVzdGFtcCBpbiB0aGUgY29ycmVjdCBmb3JtYXQgdG8gdGhlIGxvZyBpbmZvIG9iamVjdFxuY29uc3QgdGltZXN0YW1wRm9ybWF0ID0gZm9ybWF0LnRpbWVzdGFtcCh7XG4gIGZvcm1hdCgpIHtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKHVzZUxvY2FsVGltZVpvbmUpIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKTtcbiAgICB9XG4gICAgLy8gJzIwMTItMTEtMDRUMTQ6NTE6MDYuMTU3WicgLT4gJzIwMTItMTEtMDQgMTQ6NTE6MDY6MTU3J1xuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvW1RaXS9nLCAnICcpLnJlcGxhY2UoL1xcLi9nLCAnOicpLnRyaW0oKTtcbiAgfSxcbn0pO1xuXG4vLyBzZXQgdGhlIGN1c3RvbSBjb2xvcnNcbmNvbnN0IGNvbG9yaXplRm9ybWF0ID0gZm9ybWF0LmNvbG9yaXplKHtcbiAgY29sb3JzLFxufSk7XG5cbi8vIFN0cmlwIHRoZSBjb2xvciBtYXJraW5nIHdpdGhpbiBtZXNzYWdlc1xuY29uc3Qgc3RyaXBDb2xvckZvcm1hdCA9IGZvcm1hdChmdW5jdGlvbiBzdHJpcENvbG9yKGluZm8pIHtcbiAgY29uc3QgY29kZSA9IC9cXHUwMDFiXFxbKFxcZCsoO1xcZCspKik/bS9nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbiAgaW5mby5tZXNzYWdlID0gaW5mby5tZXNzYWdlLnJlcGxhY2UoY29kZSwgJycpO1xuICByZXR1cm4gaW5mbztcbn0pKCk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGVUcmFuc3BvcnQoYXJncywgbG9nTHZsKSB7XG4gIHJldHVybiBuZXcgdHJhbnNwb3J0cy5Db25zb2xlKHtcbiAgICAvLyBgbmFtZWAgaXMgdW5zdXBwb3J0ZWQgcGVyIHdpbnN0b24ncyB0eXBlIGRlY2xhcmF0aW9uc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnY29uc29sZScsXG4gICAgaGFuZGxlRXhjZXB0aW9uczogdHJ1ZSxcbiAgICBleGl0T25FcnJvcjogZmFsc2UsXG4gICAganNvbjogZmFsc2UsXG4gICAgbGV2ZWw6IGxvZ0x2bCxcbiAgICBzdGRlcnJMZXZlbHM6IFsnZXJyb3InXSxcbiAgICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKFxuICAgICAgZm9ybWF0KGZ1bmN0aW9uIGFkanVzdERlYnVnKGluZm8pIHtcbiAgICAgICAgLy8gcHJlcGVuZCBkZWJ1ZyBtYXJrZXIsIGFuZCBzaGlmdCB0byBgaW5mb2AgbG9nIGxldmVsXG4gICAgICAgIGlmIChpbmZvLmxldmVsID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgaW5mby5sZXZlbCA9ICdpbmZvJztcbiAgICAgICAgICBpbmZvLm1lc3NhZ2UgPSBgW2RlYnVnXSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSkoKSxcbiAgICAgIHRpbWVzdGFtcEZvcm1hdCxcbiAgICAgIGFyZ3MubG9nTm9Db2xvcnMgPyBzdHJpcENvbG9yRm9ybWF0IDogY29sb3JpemVGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHthcmdzLmxvZ1RpbWVzdGFtcCA/IGAke2luZm8udGltZXN0YW1wfSAtIGAgOiAnJ30ke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBsb2dMdmwpIHtcbiAgcmV0dXJuIG5ldyB0cmFuc3BvcnRzLkZpbGUoe1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnZmlsZScsXG4gICAgZmlsZW5hbWU6IGFyZ3MubG9nRmlsZSxcbiAgICBtYXhGaWxlczogMSxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBzdHJpcENvbG9yRm9ybWF0LFxuICAgICAgdGltZXN0YW1wRm9ybWF0LFxuICAgICAgZm9ybWF0LnByaW50ZihmdW5jdGlvbiBwcmludEluZm8oaW5mbykge1xuICAgICAgICByZXR1cm4gYCR7aW5mby50aW1lc3RhbXB9ICR7aW5mby5tZXNzYWdlfWA7XG4gICAgICB9KVxuICAgICksXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIdHRwVHJhbnNwb3J0KGFyZ3MsIGxvZ0x2bCkge1xuICBsZXQgaG9zdCA9ICcxMjcuMC4wLjEnO1xuICBsZXQgcG9ydCA9IDkwMDM7XG5cbiAgaWYgKGFyZ3Mud2ViaG9vay5tYXRjaCgnOicpKSB7XG4gICAgY29uc3QgaG9zdEFuZFBvcnQgPSBhcmdzLndlYmhvb2suc3BsaXQoJzonKTtcbiAgICBob3N0ID0gaG9zdEFuZFBvcnRbMF07XG4gICAgcG9ydCA9IHBhcnNlSW50KGhvc3RBbmRQb3J0WzFdLCAxMCk7XG4gIH1cblxuICByZXR1cm4gbmV3IHRyYW5zcG9ydHMuSHR0cCh7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIG5hbWU6ICdodHRwJyxcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gICAgcGF0aDogJy8nLFxuICAgIGhhbmRsZUV4Y2VwdGlvbnM6IHRydWUsXG4gICAgZXhpdE9uRXJyb3I6IGZhbHNlLFxuICAgIGpzb246IGZhbHNlLFxuICAgIGxldmVsOiBsb2dMdmwsXG4gICAgZm9ybWF0OiBmb3JtYXQuY29tYmluZShcbiAgICAgIHN0cmlwQ29sb3JGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHtpbmZvLnRpbWVzdGFtcH0gJHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcG9ydHMoYXJncykge1xuICBsZXQgdHJhbnNwb3J0cyA9IFtdO1xuICBsZXQgY29uc29sZUxvZ0xldmVsID0gbnVsbDtcbiAgbGV0IGZpbGVMb2dMZXZlbCA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubG9nbGV2ZWwgJiYgYXJncy5sb2dsZXZlbC5tYXRjaCgnOicpKSB7XG4gICAgLy8gLS1sb2ctbGV2ZWwgYXJnIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgZGlmZiBsb2dnaW5nIGxldmVscyBmb3IgY29uc29sZSBhbmQgZmlsZSwgc2VwYXJhdGVkIGJ5IGEgY29sb25cbiAgICBjb25zdCBsdmxQYWlyID0gYXJncy5sb2dsZXZlbC5zcGxpdCgnOicpO1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGx2bFBhaXJbMF0gfHwgY29uc29sZUxvZ0xldmVsO1xuICAgIGZpbGVMb2dMZXZlbCA9IGx2bFBhaXJbMV0gfHwgZmlsZUxvZ0xldmVsO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGZpbGVMb2dMZXZlbCA9IGFyZ3MubG9nbGV2ZWw7XG4gIH1cblxuICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlQ29uc29sZVRyYW5zcG9ydChhcmdzLCBjb25zb2xlTG9nTGV2ZWwpKTtcblxuICBpZiAoYXJncy5sb2dGaWxlKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGlmIHdlIGRvbid0IGRlbGV0ZSB0aGUgbG9nIGZpbGUsIHdpbnN0b24gd2lsbCBhbHdheXMgYXBwZW5kIGFuZCBpdCB3aWxsIGdyb3cgaW5maW5pdGVseSBsYXJnZTtcbiAgICAgIC8vIHdpbnN0b24gYWxsb3dzIGZvciBsaW1pdGluZyBsb2cgZmlsZSBzaXplLCBidXQgYXMgb2YgOS4yLjE0IHRoZXJlJ3MgYSBzZXJpb3VzIGJ1ZyB3aGVuIHVzaW5nXG4gICAgICAvLyBtYXhGaWxlcyBhbmQgbWF4U2l6ZSB0b2dldGhlci4gaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3dpbnN0b24vaXNzdWVzLzM5N1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhcmdzLmxvZ0ZpbGUpKSB7XG4gICAgICAgIGF3YWl0IGZzLnVubGluayhhcmdzLmxvZ0ZpbGUpO1xuICAgICAgfVxuXG4gICAgICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBmaWxlTG9nTGV2ZWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUcmllZCB0byBhdHRhY2ggbG9nZ2luZyB0byBmaWxlICcke2FyZ3MubG9nRmlsZX0nIGJ1dCBhbiBlcnJvciBgICsgYG9jY3VycmVkOiAke2UubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhcmdzLndlYmhvb2spIHtcbiAgICB0cnkge1xuICAgICAgdHJhbnNwb3J0cy5wdXNoKGNyZWF0ZUh0dHBUcmFuc3BvcnQoYXJncywgZmlsZUxvZ0xldmVsKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgVHJpZWQgdG8gYXR0YWNoIGxvZ2dpbmcgdG8gSHR0cCBhdCAke2FyZ3Mud2ViaG9va30gYnV0IGAgK1xuICAgICAgICAgIGBhbiBlcnJvciBvY2N1cnJlZDogJHtlLm1lc3NhZ2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJhbnNwb3J0cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdChhcmdzKSB7XG4gIG5wbWxvZy5sZXZlbCA9ICdzaWxlbnQnO1xuICAvLyBzZXQgZGUgZmFjdG8gcGFyYW0gcGFzc2VkIHRvIHRpbWVzdGFtcCBmdW5jdGlvblxuICB1c2VMb2NhbFRpbWVab25lID0gYXJncy5sb2NhbFRpbWV6b25lO1xuXG4gIC8vIGNsZWFuIHVwIGluIGNhc2Ugd2UgaGF2ZSBpbml0aWF0ZWQgYmVmb3JlIHNpbmNlIG5wbWxvZyBpcyBhIGdsb2JhbCBvYmplY3RcbiAgY2xlYXIoKTtcblxuICBsb2cgPSBjcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydHMoYXJncyksXG4gICAgbGV2ZWxzLFxuICB9KTtcblxuICAvLyBDYXB0dXJlIGxvZ3MgZW1pdHRlZCB2aWEgbnBtbG9nIGFuZCBwYXNzIHRoZW0gdGhyb3VnaCB3aW5zdG9uXG4gIG5wbWxvZy5vbignbG9nJywgKGxvZ09iaikgPT4ge1xuICAgIGNvbnN0IHdpbnN0b25MZXZlbCA9IG5wbVRvV2luc3RvbkxldmVsc1tsb2dPYmoubGV2ZWxdIHx8ICdpbmZvJztcbiAgICBsZXQgbXNnID0gbG9nT2JqLm1lc3NhZ2U7XG4gICAgaWYgKGxvZ09iai5wcmVmaXgpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGBbJHtsb2dPYmoucHJlZml4fV1gO1xuICAgICAgbXNnID0gYCR7YXJncy5sb2dOb0NvbG9ycyA/IHByZWZpeCA6IHByZWZpeC5tYWdlbnRhfSAke21zZ31gO1xuICAgIH1cbiAgICBsb2dbd2luc3RvbkxldmVsXShtc2cpO1xuICAgIGlmIChhcmdzLmxvZ0hhbmRsZXIgJiYgXy5pc0Z1bmN0aW9uKGFyZ3MubG9nSGFuZGxlcikpIHtcbiAgICAgIGFyZ3MubG9nSGFuZGxlcihsb2dPYmoubGV2ZWwsIG1zZyk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xlYXIoKSB7XG4gIGlmIChsb2cpIHtcbiAgICBmb3IgKGxldCB0cmFuc3BvcnQgb2YgXy5rZXlzKGxvZy50cmFuc3BvcnRzKSkge1xuICAgICAgbG9nLnJlbW92ZSh0cmFuc3BvcnQpO1xuICAgIH1cbiAgfVxuICBucG1sb2cucmVtb3ZlQWxsTGlzdGVuZXJzKCdsb2cnKTtcbn1cblxuZXhwb3J0IHtpbml0LCBjbGVhcn07XG5leHBvcnQgZGVmYXVsdCBpbml0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0FBLGVBQUEsQ0FBT0MsV0FBUCxDQUFtQkMsZUFBbkI7O0FBQ0FDLE1BQU0sQ0FBQ0MsY0FBUCxHQUF3QkYsZUFBeEI7QUFHQUEsZUFBQSxDQUFPRyxLQUFQLEdBQWUsTUFBZjtBQUNBLE1BQU1DLE1BQU0sR0FBRztFQUNiQyxLQUFLLEVBQUUsQ0FETTtFQUViQyxJQUFJLEVBQUUsQ0FGTztFQUdiQyxJQUFJLEVBQUUsQ0FITztFQUliQyxLQUFLLEVBQUU7QUFKTSxDQUFmO0FBT0EsTUFBTUMsTUFBTSxHQUFHO0VBQ2JILElBQUksRUFBRSxNQURPO0VBRWJELEtBQUssRUFBRSxNQUZNO0VBR2JFLElBQUksRUFBRSxRQUhPO0VBSWJDLEtBQUssRUFBRTtBQUpNLENBQWY7QUFPQSxNQUFNRSxrQkFBa0IsR0FBRztFQUN6QkMsS0FBSyxFQUFFLE9BRGtCO0VBRXpCQyxPQUFPLEVBQUUsT0FGZ0I7RUFHekJQLEtBQUssRUFBRSxPQUhrQjtFQUl6QkMsSUFBSSxFQUFFLE1BSm1CO0VBS3pCTyxJQUFJLEVBQUUsTUFMbUI7RUFNekJOLElBQUksRUFBRSxNQU5tQjtFQU96QkMsS0FBSyxFQUFFO0FBUGtCLENBQTNCO0FBVUEsSUFBSU0sR0FBRyxHQUFHLElBQVY7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxLQUF2Qjs7QUFHQSxNQUFNQyxlQUFlLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQjtFQUN2Q0QsTUFBTSxHQUFHO0lBQ1AsSUFBSUUsSUFBSSxHQUFHLElBQUlDLElBQUosRUFBWDs7SUFDQSxJQUFJTCxnQkFBSixFQUFzQjtNQUNwQkksSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBU0QsSUFBSSxDQUFDRSxP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
|
|
210
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dnZXIiLCJwYXRjaExvZ2dlciIsIm5wbWxvZyIsImdsb2JhbCIsIl9nbG9iYWxfbnBtbG9nIiwibGV2ZWwiLCJsZXZlbHMiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJjb2xvcnMiLCJucG1Ub1dpbnN0b25MZXZlbHMiLCJzaWxseSIsInZlcmJvc2UiLCJodHRwIiwibG9nIiwidXNlTG9jYWxUaW1lWm9uZSIsInRpbWVzdGFtcEZvcm1hdCIsImZvcm1hdCIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwidmFsdWVPZiIsImdldFRpbWV6b25lT2Zmc2V0IiwidG9JU09TdHJpbmciLCJyZXBsYWNlIiwidHJpbSIsImNvbG9yaXplRm9ybWF0IiwiY29sb3JpemUiLCJzdHJpcENvbG9yRm9ybWF0Iiwic3RyaXBDb2xvciIsImNvZGUiLCJtZXNzYWdlIiwiY3JlYXRlQ29uc29sZVRyYW5zcG9ydCIsImFyZ3MiLCJsb2dMdmwiLCJ0cmFuc3BvcnRzIiwiQ29uc29sZSIsIm5hbWUiLCJoYW5kbGVFeGNlcHRpb25zIiwiZXhpdE9uRXJyb3IiLCJqc29uIiwic3RkZXJyTGV2ZWxzIiwiY29tYmluZSIsImFkanVzdERlYnVnIiwibG9nTm9Db2xvcnMiLCJwcmludGYiLCJwcmludEluZm8iLCJsb2dUaW1lc3RhbXAiLCJjcmVhdGVGaWxlVHJhbnNwb3J0IiwiRmlsZSIsImZpbGVuYW1lIiwibG9nRmlsZSIsIm1heEZpbGVzIiwiY3JlYXRlSHR0cFRyYW5zcG9ydCIsImhvc3QiLCJwb3J0Iiwid2ViaG9vayIsIm1hdGNoIiwiaG9zdEFuZFBvcnQiLCJzcGxpdCIsInBhcnNlSW50IiwiSHR0cCIsInBhdGgiLCJjcmVhdGVUcmFuc3BvcnRzIiwiY29uc29sZUxvZ0xldmVsIiwiZmlsZUxvZ0xldmVsIiwibG9nbGV2ZWwiLCJsdmxQYWlyIiwicHVzaCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwiZSIsImNvbnNvbGUiLCJpbml0IiwibG9jYWxUaW1lem9uZSIsImNsZWFyIiwiY3JlYXRlTG9nZ2VyIiwib24iLCJsb2dPYmoiLCJ3aW5zdG9uTGV2ZWwiLCJtc2ciLCJwcmVmaXgiLCJtYWdlbnRhIiwibG9nSGFuZGxlciIsIl8iLCJpc0Z1bmN0aW9uIiwidHJhbnNwb3J0Iiwia2V5cyIsInJlbW92ZSIsInJlbW92ZUFsbExpc3RlbmVycyJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2dzaW5rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBucG1sb2cgZnJvbSAnbnBtbG9nJztcbmltcG9ydCB7Y3JlYXRlTG9nZ2VyLCBmb3JtYXQsIHRyYW5zcG9ydHN9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHtmcywgbG9nZ2VyfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLy8gc2V0IHVwIGRpc3RyaWJ1dGVkIGxvZ2dpbmcgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZVxubG9nZ2VyLnBhdGNoTG9nZ2VyKG5wbWxvZyk7XG5nbG9iYWwuX2dsb2JhbF9ucG1sb2cgPSBucG1sb2c7XG5cbi8vIG5wbWxvZyBpcyB1c2VkIG9ubHkgZm9yIGVtaXR0aW5nLCB3ZSB1c2Ugd2luc3RvbiBmb3Igb3V0cHV0XG5ucG1sb2cubGV2ZWwgPSAnaW5mbyc7XG5jb25zdCBsZXZlbHMgPSB7XG4gIGRlYnVnOiA0LFxuICBpbmZvOiAzLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMSxcbn07XG5cbmNvbnN0IGNvbG9ycyA9IHtcbiAgaW5mbzogJ2N5YW4nLFxuICBkZWJ1ZzogJ2dyZXknLFxuICB3YXJuOiAneWVsbG93JyxcbiAgZXJyb3I6ICdyZWQnLFxufTtcblxuY29uc3QgbnBtVG9XaW5zdG9uTGV2ZWxzID0ge1xuICBzaWxseTogJ2RlYnVnJyxcbiAgdmVyYm9zZTogJ2RlYnVnJyxcbiAgZGVidWc6ICdkZWJ1ZycsXG4gIGluZm86ICdpbmZvJyxcbiAgaHR0cDogJ2luZm8nLFxuICB3YXJuOiAnd2FybicsXG4gIGVycm9yOiAnZXJyb3InLFxufTtcblxubGV0IGxvZyA9IG51bGw7XG5sZXQgdXNlTG9jYWxUaW1lWm9uZSA9IGZhbHNlO1xuXG4vLyBhZGQgdGhlIHRpbWVzdGFtcCBpbiB0aGUgY29ycmVjdCBmb3JtYXQgdG8gdGhlIGxvZyBpbmZvIG9iamVjdFxuY29uc3QgdGltZXN0YW1wRm9ybWF0ID0gZm9ybWF0LnRpbWVzdGFtcCh7XG4gIGZvcm1hdCgpIHtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKHVzZUxvY2FsVGltZVpvbmUpIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKTtcbiAgICB9XG4gICAgLy8gJzIwMTItMTEtMDRUMTQ6NTE6MDYuMTU3WicgLT4gJzIwMTItMTEtMDQgMTQ6NTE6MDY6MTU3J1xuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvW1RaXS9nLCAnICcpLnJlcGxhY2UoL1xcLi9nLCAnOicpLnRyaW0oKTtcbiAgfSxcbn0pO1xuXG4vLyBzZXQgdGhlIGN1c3RvbSBjb2xvcnNcbmNvbnN0IGNvbG9yaXplRm9ybWF0ID0gZm9ybWF0LmNvbG9yaXplKHtcbiAgY29sb3JzLFxufSk7XG5cbi8vIFN0cmlwIHRoZSBjb2xvciBtYXJraW5nIHdpdGhpbiBtZXNzYWdlc1xuY29uc3Qgc3RyaXBDb2xvckZvcm1hdCA9IGZvcm1hdChmdW5jdGlvbiBzdHJpcENvbG9yKGluZm8pIHtcbiAgY29uc3QgY29kZSA9IC9cXHUwMDFiXFxbKFxcZCsoO1xcZCspKik/bS9nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbiAgaW5mby5tZXNzYWdlID0gaW5mby5tZXNzYWdlLnJlcGxhY2UoY29kZSwgJycpO1xuICByZXR1cm4gaW5mbztcbn0pKCk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGVUcmFuc3BvcnQoYXJncywgbG9nTHZsKSB7XG4gIHJldHVybiBuZXcgdHJhbnNwb3J0cy5Db25zb2xlKHtcbiAgICAvLyBgbmFtZWAgaXMgdW5zdXBwb3J0ZWQgcGVyIHdpbnN0b24ncyB0eXBlIGRlY2xhcmF0aW9uc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnY29uc29sZScsXG4gICAgaGFuZGxlRXhjZXB0aW9uczogdHJ1ZSxcbiAgICBleGl0T25FcnJvcjogZmFsc2UsXG4gICAganNvbjogZmFsc2UsXG4gICAgbGV2ZWw6IGxvZ0x2bCxcbiAgICBzdGRlcnJMZXZlbHM6IFsnZXJyb3InXSxcbiAgICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKFxuICAgICAgZm9ybWF0KGZ1bmN0aW9uIGFkanVzdERlYnVnKGluZm8pIHtcbiAgICAgICAgLy8gcHJlcGVuZCBkZWJ1ZyBtYXJrZXIsIGFuZCBzaGlmdCB0byBgaW5mb2AgbG9nIGxldmVsXG4gICAgICAgIGlmIChpbmZvLmxldmVsID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgaW5mby5sZXZlbCA9ICdpbmZvJztcbiAgICAgICAgICBpbmZvLm1lc3NhZ2UgPSBgW2RlYnVnXSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSkoKSxcbiAgICAgIHRpbWVzdGFtcEZvcm1hdCxcbiAgICAgIGFyZ3MubG9nTm9Db2xvcnMgPyBzdHJpcENvbG9yRm9ybWF0IDogY29sb3JpemVGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHthcmdzLmxvZ1RpbWVzdGFtcCA/IGAke2luZm8udGltZXN0YW1wfSAtIGAgOiAnJ30ke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBsb2dMdmwpIHtcbiAgcmV0dXJuIG5ldyB0cmFuc3BvcnRzLkZpbGUoe1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnZmlsZScsXG4gICAgZmlsZW5hbWU6IGFyZ3MubG9nRmlsZSxcbiAgICBtYXhGaWxlczogMSxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBzdHJpcENvbG9yRm9ybWF0LFxuICAgICAgdGltZXN0YW1wRm9ybWF0LFxuICAgICAgZm9ybWF0LnByaW50ZihmdW5jdGlvbiBwcmludEluZm8oaW5mbykge1xuICAgICAgICByZXR1cm4gYCR7aW5mby50aW1lc3RhbXB9ICR7aW5mby5tZXNzYWdlfWA7XG4gICAgICB9KVxuICAgICksXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIdHRwVHJhbnNwb3J0KGFyZ3MsIGxvZ0x2bCkge1xuICBsZXQgaG9zdCA9ICcxMjcuMC4wLjEnO1xuICBsZXQgcG9ydCA9IDkwMDM7XG5cbiAgaWYgKGFyZ3Mud2ViaG9vay5tYXRjaCgnOicpKSB7XG4gICAgY29uc3QgaG9zdEFuZFBvcnQgPSBhcmdzLndlYmhvb2suc3BsaXQoJzonKTtcbiAgICBob3N0ID0gaG9zdEFuZFBvcnRbMF07XG4gICAgcG9ydCA9IHBhcnNlSW50KGhvc3RBbmRQb3J0WzFdLCAxMCk7XG4gIH1cblxuICByZXR1cm4gbmV3IHRyYW5zcG9ydHMuSHR0cCh7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIG5hbWU6ICdodHRwJyxcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gICAgcGF0aDogJy8nLFxuICAgIGhhbmRsZUV4Y2VwdGlvbnM6IHRydWUsXG4gICAgZXhpdE9uRXJyb3I6IGZhbHNlLFxuICAgIGpzb246IGZhbHNlLFxuICAgIGxldmVsOiBsb2dMdmwsXG4gICAgZm9ybWF0OiBmb3JtYXQuY29tYmluZShcbiAgICAgIHN0cmlwQ29sb3JGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHtpbmZvLnRpbWVzdGFtcH0gJHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcG9ydHMoYXJncykge1xuICBsZXQgdHJhbnNwb3J0cyA9IFtdO1xuICBsZXQgY29uc29sZUxvZ0xldmVsID0gbnVsbDtcbiAgbGV0IGZpbGVMb2dMZXZlbCA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubG9nbGV2ZWwgJiYgYXJncy5sb2dsZXZlbC5tYXRjaCgnOicpKSB7XG4gICAgLy8gLS1sb2ctbGV2ZWwgYXJnIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgZGlmZiBsb2dnaW5nIGxldmVscyBmb3IgY29uc29sZSBhbmQgZmlsZSwgc2VwYXJhdGVkIGJ5IGEgY29sb25cbiAgICBjb25zdCBsdmxQYWlyID0gYXJncy5sb2dsZXZlbC5zcGxpdCgnOicpO1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGx2bFBhaXJbMF0gfHwgY29uc29sZUxvZ0xldmVsO1xuICAgIGZpbGVMb2dMZXZlbCA9IGx2bFBhaXJbMV0gfHwgZmlsZUxvZ0xldmVsO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGZpbGVMb2dMZXZlbCA9IGFyZ3MubG9nbGV2ZWw7XG4gIH1cblxuICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlQ29uc29sZVRyYW5zcG9ydChhcmdzLCBjb25zb2xlTG9nTGV2ZWwpKTtcblxuICBpZiAoYXJncy5sb2dGaWxlKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGlmIHdlIGRvbid0IGRlbGV0ZSB0aGUgbG9nIGZpbGUsIHdpbnN0b24gd2lsbCBhbHdheXMgYXBwZW5kIGFuZCBpdCB3aWxsIGdyb3cgaW5maW5pdGVseSBsYXJnZTtcbiAgICAgIC8vIHdpbnN0b24gYWxsb3dzIGZvciBsaW1pdGluZyBsb2cgZmlsZSBzaXplLCBidXQgYXMgb2YgOS4yLjE0IHRoZXJlJ3MgYSBzZXJpb3VzIGJ1ZyB3aGVuIHVzaW5nXG4gICAgICAvLyBtYXhGaWxlcyBhbmQgbWF4U2l6ZSB0b2dldGhlci4gaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3dpbnN0b24vaXNzdWVzLzM5N1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhcmdzLmxvZ0ZpbGUpKSB7XG4gICAgICAgIGF3YWl0IGZzLnVubGluayhhcmdzLmxvZ0ZpbGUpO1xuICAgICAgfVxuXG4gICAgICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBmaWxlTG9nTGV2ZWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUcmllZCB0byBhdHRhY2ggbG9nZ2luZyB0byBmaWxlICcke2FyZ3MubG9nRmlsZX0nIGJ1dCBhbiBlcnJvciBgICsgYG9jY3VycmVkOiAke2UubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhcmdzLndlYmhvb2spIHtcbiAgICB0cnkge1xuICAgICAgdHJhbnNwb3J0cy5wdXNoKGNyZWF0ZUh0dHBUcmFuc3BvcnQoYXJncywgZmlsZUxvZ0xldmVsKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgVHJpZWQgdG8gYXR0YWNoIGxvZ2dpbmcgdG8gSHR0cCBhdCAke2FyZ3Mud2ViaG9va30gYnV0IGAgK1xuICAgICAgICAgIGBhbiBlcnJvciBvY2N1cnJlZDogJHtlLm1lc3NhZ2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJhbnNwb3J0cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdChhcmdzKSB7XG4gIG5wbWxvZy5sZXZlbCA9ICdzaWxlbnQnO1xuICAvLyBzZXQgZGUgZmFjdG8gcGFyYW0gcGFzc2VkIHRvIHRpbWVzdGFtcCBmdW5jdGlvblxuICB1c2VMb2NhbFRpbWVab25lID0gYXJncy5sb2NhbFRpbWV6b25lO1xuXG4gIC8vIGNsZWFuIHVwIGluIGNhc2Ugd2UgaGF2ZSBpbml0aWF0ZWQgYmVmb3JlIHNpbmNlIG5wbWxvZyBpcyBhIGdsb2JhbCBvYmplY3RcbiAgY2xlYXIoKTtcblxuICBsb2cgPSBjcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydHMoYXJncyksXG4gICAgbGV2ZWxzLFxuICB9KTtcblxuICAvLyBDYXB0dXJlIGxvZ3MgZW1pdHRlZCB2aWEgbnBtbG9nIGFuZCBwYXNzIHRoZW0gdGhyb3VnaCB3aW5zdG9uXG4gIG5wbWxvZy5vbignbG9nJywgKGxvZ09iaikgPT4ge1xuICAgIGNvbnN0IHdpbnN0b25MZXZlbCA9IG5wbVRvV2luc3RvbkxldmVsc1tsb2dPYmoubGV2ZWxdIHx8ICdpbmZvJztcbiAgICBsZXQgbXNnID0gbG9nT2JqLm1lc3NhZ2U7XG4gICAgaWYgKGxvZ09iai5wcmVmaXgpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGBbJHtsb2dPYmoucHJlZml4fV1gO1xuICAgICAgbXNnID0gYCR7YXJncy5sb2dOb0NvbG9ycyA/IHByZWZpeCA6IHByZWZpeC5tYWdlbnRhfSAke21zZ31gO1xuICAgIH1cbiAgICBsb2dbd2luc3RvbkxldmVsXShtc2cpO1xuICAgIGlmIChhcmdzLmxvZ0hhbmRsZXIgJiYgXy5pc0Z1bmN0aW9uKGFyZ3MubG9nSGFuZGxlcikpIHtcbiAgICAgIGFyZ3MubG9nSGFuZGxlcihsb2dPYmoubGV2ZWwsIG1zZyk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xlYXIoKSB7XG4gIGlmIChsb2cpIHtcbiAgICBmb3IgKGxldCB0cmFuc3BvcnQgb2YgXy5rZXlzKGxvZy50cmFuc3BvcnRzKSkge1xuICAgICAgbG9nLnJlbW92ZSh0cmFuc3BvcnQpO1xuICAgIH1cbiAgfVxuICBucG1sb2cucmVtb3ZlQWxsTGlzdGVuZXJzKCdsb2cnKTtcbn1cblxuZXhwb3J0IHtpbml0LCBjbGVhcn07XG5leHBvcnQgZGVmYXVsdCBpbml0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBR0FBLGVBQUEsQ0FBT0MsV0FBUCxDQUFtQkMsZUFBbkI7O0FBQ0FDLE1BQU0sQ0FBQ0MsY0FBUCxHQUF3QkYsZUFBeEI7QUFHQUEsZUFBQSxDQUFPRyxLQUFQLEdBQWUsTUFBZjtBQUNBLE1BQU1DLE1BQU0sR0FBRztFQUNiQyxLQUFLLEVBQUUsQ0FETTtFQUViQyxJQUFJLEVBQUUsQ0FGTztFQUdiQyxJQUFJLEVBQUUsQ0FITztFQUliQyxLQUFLLEVBQUU7QUFKTSxDQUFmO0FBT0EsTUFBTUMsTUFBTSxHQUFHO0VBQ2JILElBQUksRUFBRSxNQURPO0VBRWJELEtBQUssRUFBRSxNQUZNO0VBR2JFLElBQUksRUFBRSxRQUhPO0VBSWJDLEtBQUssRUFBRTtBQUpNLENBQWY7QUFPQSxNQUFNRSxrQkFBa0IsR0FBRztFQUN6QkMsS0FBSyxFQUFFLE9BRGtCO0VBRXpCQyxPQUFPLEVBQUUsT0FGZ0I7RUFHekJQLEtBQUssRUFBRSxPQUhrQjtFQUl6QkMsSUFBSSxFQUFFLE1BSm1CO0VBS3pCTyxJQUFJLEVBQUUsTUFMbUI7RUFNekJOLElBQUksRUFBRSxNQU5tQjtFQU96QkMsS0FBSyxFQUFFO0FBUGtCLENBQTNCO0FBVUEsSUFBSU0sR0FBRyxHQUFHLElBQVY7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxLQUF2Qjs7QUFHQSxNQUFNQyxlQUFlLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQjtFQUN2Q0QsTUFBTSxHQUFHO0lBQ1AsSUFBSUUsSUFBSSxHQUFHLElBQUlDLElBQUosRUFBWDs7SUFDQSxJQUFJTCxnQkFBSixFQUFzQjtNQUNwQkksSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBU0QsSUFBSSxDQUFDRSxP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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logsink.js","names":["logger","patchLogger","npmlog","global","_global_npmlog","level","levels","debug","info","warn","error","colors","npmToWinstonLevels","silly","verbose","http","log","useLocalTimeZone","timestampFormat","format","timestamp","date","Date","valueOf","getTimezoneOffset","toISOString","replace","trim","colorizeFormat","colorize","stripColorFormat","stripColor","code","message","createConsoleTransport","args","logLvl","transports","Console","name","handleExceptions","exitOnError","json","stderrLevels","combine","adjustDebug","logNoColors","printf","printInfo","logTimestamp","createFileTransport","File","filename","logFile","maxFiles","createHttpTransport","host","port","webhook","match","hostAndPort","split","parseInt","Http","path","createTransports","consoleLogLevel","fileLogLevel","loglevel","lvlPair","push","fs","exists","unlink","e","console","init","localTimezone","clear","createLogger","on","logObj","winstonLevel","msg","prefix","magenta","logHandler","_","isFunction","transport","keys","remove","removeAllListeners"],"sources":["../../lib/logsink.js"],"sourcesContent":["import npmlog from 'npmlog';\nimport {createLogger, format, transports} from 'winston';\nimport {fs, logger} from '@appium/support';\nimport _ from 'lodash';\n\n// set up distributed logging before everything else\nlogger.patchLogger(npmlog);\nglobal._global_npmlog = npmlog;\n\n// npmlog is used only for emitting, we use winston for output\nnpmlog.level = 'info';\nconst levels = {\n debug: 4,\n info: 3,\n warn: 2,\n error: 1,\n};\n\nconst colors = {\n info: 'cyan',\n debug: 'grey',\n warn: 'yellow',\n error: 'red',\n};\n\nconst npmToWinstonLevels = {\n silly: 'debug',\n verbose: 'debug',\n debug: 'debug',\n info: 'info',\n http: 'info',\n warn: 'warn',\n error: 'error',\n};\n\nlet log = null;\nlet useLocalTimeZone = false;\n\n// add the timestamp in the correct format to the log info object\nconst timestampFormat = format.timestamp({\n format() {\n let date = new Date();\n if (useLocalTimeZone) {\n date = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);\n }\n // '2012-11-04T14:51:06.157Z' -> '2012-11-04 14:51:06:157'\n return date.toISOString().replace(/[TZ]/g, ' ').replace(/\\./g, ':').trim();\n },\n});\n\n// set the custom colors\nconst colorizeFormat = format.colorize({\n colors,\n});\n\n// Strip the color marking within messages\nconst stripColorFormat = format(function stripColor(info) {\n const code = /\\u001b\\[(\\d+(;\\d+)*)?m/g; // eslint-disable-line no-control-regex\n info.message = info.message.replace(code, '');\n return info;\n})();\n\nfunction createConsoleTransport(args, logLvl) {\n return new transports.Console({\n // `name` is unsupported per winston's type declarations\n // @ts-expect-error\n name: 'console',\n handleExceptions: true,\n exitOnError: false,\n json: false,\n level: logLvl,\n stderrLevels: ['error'],\n format: format.combine(\n format(function adjustDebug(info) {\n // prepend debug marker, and shift to `info` log level\n if (info.level === 'debug') {\n info.level = 'info';\n info.message = `[debug] ${info.message}`;\n }\n return info;\n })(),\n timestampFormat,\n args.logNoColors ? stripColorFormat : colorizeFormat,\n format.printf(function printInfo(info) {\n return `${args.logTimestamp ? `${info.timestamp} - ` : ''}${info.message}`;\n })\n ),\n });\n}\n\nfunction createFileTransport(args, logLvl) {\n return new transports.File({\n // @ts-expect-error\n name: 'file',\n filename: args.logFile,\n maxFiles: 1,\n handleExceptions: true,\n exitOnError: false,\n json: false,\n level: logLvl,\n format: format.combine(\n stripColorFormat,\n timestampFormat,\n format.printf(function printInfo(info) {\n return `${info.timestamp} ${info.message}`;\n })\n ),\n });\n}\n\nfunction createHttpTransport(args, logLvl) {\n let host = '127.0.0.1';\n let port = 9003;\n\n if (args.webhook.match(':')) {\n const hostAndPort = args.webhook.split(':');\n host = hostAndPort[0];\n port = parseInt(hostAndPort[1], 10);\n }\n\n return new transports.Http({\n // @ts-expect-error\n name: 'http',\n host,\n port,\n path: '/',\n handleExceptions: true,\n exitOnError: false,\n json: false,\n level: logLvl,\n format: format.combine(\n stripColorFormat,\n format.printf(function printInfo(info) {\n return `${info.timestamp} ${info.message}`;\n })\n ),\n });\n}\n\nasync function createTransports(args) {\n let transports = [];\n let consoleLogLevel = null;\n let fileLogLevel = null;\n\n if (args.loglevel && args.loglevel.match(':')) {\n // --log-level arg can optionally provide diff logging levels for console and file, separated by a colon\n const lvlPair = args.loglevel.split(':');\n consoleLogLevel = lvlPair[0] || consoleLogLevel;\n fileLogLevel = lvlPair[1] || fileLogLevel;\n } else {\n consoleLogLevel = fileLogLevel = args.loglevel;\n }\n\n transports.push(createConsoleTransport(args, consoleLogLevel));\n\n if (args.logFile) {\n try {\n // if we don't delete the log file, winston will always append and it will grow infinitely large;\n // winston allows for limiting log file size, but as of 9.2.14 there's a serious bug when using\n // maxFiles and maxSize together. https://github.com/flatiron/winston/issues/397\n if (await fs.exists(args.logFile)) {\n await fs.unlink(args.logFile);\n }\n\n transports.push(createFileTransport(args, fileLogLevel));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\n `Tried to attach logging to file '${args.logFile}' but an error ` + `occurred: ${e.message}`\n );\n }\n }\n\n if (args.webhook) {\n try {\n transports.push(createHttpTransport(args, fileLogLevel));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\n `Tried to attach logging to Http at ${args.webhook} but ` +\n `an error occurred: ${e.message}`\n );\n }\n }\n\n return transports;\n}\n\nasync function init(args) {\n npmlog.level = 'silent';\n // set de facto param passed to timestamp function\n useLocalTimeZone = args.localTimezone;\n\n // clean up in case we have initiated before since npmlog is a global object\n clear();\n\n log = createLogger({\n transports: await createTransports(args),\n levels,\n });\n\n // Capture logs emitted via npmlog and pass them through winston\n npmlog.on('log', (logObj) => {\n const winstonLevel = npmToWinstonLevels[logObj.level] || 'info';\n let msg = logObj.message;\n if (logObj.prefix) {\n const prefix = `[${logObj.prefix}]`;\n msg = `${args.logNoColors ? prefix : prefix.magenta} ${msg}`;\n }\n log[winstonLevel](msg);\n if (args.logHandler && _.isFunction(args.logHandler)) {\n args.logHandler(logObj.level, msg);\n }\n });\n}\n\nfunction clear() {\n if (log) {\n for (let transport of _.keys(log.transports)) {\n log.remove(transport);\n }\n }\n npmlog.removeAllListeners('log');\n}\n\nexport {init, clear};\nexport default init;\n"],"mappings":"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"}
|
package/build/lib/main.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
-
|
|
6
4
|
Object.defineProperty(exports, "__esModule", {
|
|
7
5
|
value: true
|
|
8
6
|
});
|
|
@@ -68,6 +66,8 @@ var _schema = require("./schema/schema");
|
|
|
68
66
|
|
|
69
67
|
var _utils = require("./utils");
|
|
70
68
|
|
|
69
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
70
|
+
|
|
71
71
|
const {
|
|
72
72
|
resolveAppiumHome
|
|
73
73
|
} = _support.env;
|
|
@@ -333,4 +333,4 @@ async function main(args) {
|
|
|
333
333
|
if (require.main === module) {
|
|
334
334
|
(0, _asyncbox.asyncify)(main);
|
|
335
335
|
}
|
|
336
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlQXBwaXVtSG9tZSIsImVudiIsInByZWZsaWdodENoZWNrcyIsImFyZ3MiLCJ0aHJvd0luc3RlYWRPZkV4aXQiLCJjaGVja05vZGVPayIsImNoZWNrTnBtT2siLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dCdWlsZEluZm8iLCJwcm9jZXNzIiwiZXhpdCIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwidmFsaWRhdGUiLCJ0bXBEaXIiLCJ2YWxpZGF0ZVRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJpbnNwZWN0IiwibG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmciLCJjYXBzIiwibG9nU3RhcnR1cEluZm8iLCJ3ZWxjb21lIiwiQVBQSVVNX1ZFUiIsImFwcGl1bVJldiIsImdldEdpdFJldiIsInNob3dBcmdzIiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldFNlcnZlclVwZGF0ZXJzIiwiZHJpdmVyQ2xhc3NlcyIsInBsdWdpbkNsYXNzZXMiLCJjb21wYWN0IiwibWFwIiwia2V5cyIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwia2xhc3MiLCJuZXdNZXRob2RNYXAiLCJhcmVTZXJ2ZXJDb21tYW5kQXJncyIsInN1YmNvbW1hbmQiLCJTRVJWRVJfU1VCQ09NTUFORCIsImluaXQiLCJhcHBpdW1Ib21lIiwiYWRqdXN0Tm9kZVBhdGgiLCJkcml2ZXJDb25maWciLCJwbHVnaW5Db25maWciLCJsb2FkRXh0ZW5zaW9ucyIsInBhcnNlciIsImdldFBhcnNlciIsInByZUNvbmZpZ0FyZ3MiLCJwYXJzZUFyZ3MiLCJjb25maWdSZXN1bHQiLCJyZWFkQ29uZmlnRmlsZSIsImNvbmZpZ0ZpbGUiLCJlcnJvcnMiLCJFcnJvciIsImZpbGVwYXRoIiwicmVhc29uIiwiZGVmYXVsdHMiLCJnZXREZWZhdWx0c0ZvclNjaGVtYSIsInNlcnZlckFyZ3MiLCJkZWZhdWx0c0RlZXAiLCJjb25maWciLCJzZXJ2ZXIiLCJzaG93Q29uZmlnIiwibG9nc2lua0luaXQiLCJsb2dGaWx0ZXJzIiwiaXNzdWVzIiwicnVsZXMiLCJsb2dGYWN0b3J5IiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3YXJuIiwidXRpbCIsInBsdXJhbGl6ZSIsImxlbmd0aCIsImFwcGl1bURyaXZlciIsIkFwcGl1bURyaXZlciIsInBhcnNlZEFyZ3MiLCJleHRlbnNpb25Db21tYW5kQXJncyIsIkRSSVZFUl9UWVBFIiwicnVuRXh0ZW5zaW9uQ29tbWFuZCIsIlBMVUdJTl9UWVBFIiwibWFpbiIsImdldEFjdGl2ZVBsdWdpbnMiLCJ1c2VQbHVnaW5zIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwibWFrZVJvdXRlciIsImdldEFjdGl2ZURyaXZlcnMiLCJ1c2VEcml2ZXJzIiwic2VydmVyVXBkYXRlcnMiLCJleHRyYU1ldGhvZE1hcCIsInNlcnZlck9wdHMiLCJob3N0bmFtZSIsImFsbG93Q29ycyIsImJhc2VQYXRoIiwiY2xpQXJncyIsImtlZXBBbGl2ZVRpbWVvdXQiLCJiYXNlU2VydmVyIiwiZGVidWciLCJzdGFjayIsIm5vZGVjb25maWciLCJyZWdpc3Rlck5vZGUiLCJjbG9zZSIsInNpZ25hbCIsIm9uY2UiLCJvblNpZ25hbCIsImRlbGV0ZUFsbFNlc3Npb25zIiwiZm9yY2UiLCJlIiwicHJpbnQiLCJ2YWx1ZXMiLCJtb2R1bGUiLCJhc3luY2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHtpbml0IGFzIGxvZ3NpbmtJbml0fSBmcm9tICcuL2xvZ3NpbmsnOyAvLyB0aGlzIGltcG9ydCBuZWVkcyB0byBjb21lIGZpcnN0IHNpbmNlIGl0IHNldHMgdXAgZ2xvYmFsIG5wbWxvZ1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7IC8vIGxvZ2dlciBuZWVkcyB0byByZW1haW4gc2Vjb25kXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQge3JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiBhcyBtYWtlUm91dGVyLCBzZXJ2ZXIgYXMgYmFzZVNlcnZlcn0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge2xvZ2dlciBhcyBsb2dGYWN0b3J5LCB1dGlsLCBlbnZ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge2FzeW5jaWZ5fSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtBcHBpdW1Ecml2ZXJ9IGZyb20gJy4vYXBwaXVtJztcbmltcG9ydCB7cnVuRXh0ZW5zaW9uQ29tbWFuZH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7Z2V0UGFyc2VyfSBmcm9tICcuL2NsaS9wYXJzZXInO1xuaW1wb3J0IHtcbiAgQVBQSVVNX1ZFUixcbiAgY2hlY2tOb2RlT2ssXG4gIGdldEdpdFJldixcbiAgZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MsXG4gIHNob3dDb25maWcsXG4gIHNob3dCdWlsZEluZm8sXG4gIHZhbGlkYXRlVG1wRGlyLFxuICB3YXJuTm9kZURlcHJlY2F0aW9ucyxcbiAgY2hlY2tOcG1Payxcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtyZWFkQ29uZmlnRmlsZX0gZnJvbSAnLi9jb25maWctZmlsZSc7XG5pbXBvcnQge2xvYWRFeHRlbnNpb25zLCBnZXRBY3RpdmVQbHVnaW5zLCBnZXRBY3RpdmVEcml2ZXJzfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQge0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgU0VSVkVSX1NVQkNPTU1BTkR9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCByZWdpc3Rlck5vZGUgZnJvbSAnLi9ncmlkLXJlZ2lzdGVyJztcbmltcG9ydCB7Z2V0RGVmYXVsdHNGb3JTY2hlbWEsIHZhbGlkYXRlfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHtpbnNwZWN0LCBhZGp1c3ROb2RlUGF0aH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHtyZXNvbHZlQXBwaXVtSG9tZX0gPSBlbnY7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7UGFyc2VkQXJnc30gYXJnc1xuICogQHBhcmFtIHtib29sZWFufSBbdGhyb3dJbnN0ZWFkT2ZFeGl0XVxuICovXG5hc3luYyBmdW5jdGlvbiBwcmVmbGlnaHRDaGVja3MoYXJncywgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2UpIHtcbiAgdHJ5IHtcbiAgICBjaGVja05vZGVPaygpO1xuICAgIGF3YWl0IGNoZWNrTnBtT2soKTtcbiAgICBpZiAoYXJncy5sb25nU3RhY2t0cmFjZSkge1xuICAgICAgcmVxdWlyZSgnbG9uZ2pvaG4nKS5hc3luY190cmFjZV9saW1pdCA9IC0xO1xuICAgIH1cbiAgICBpZiAoYXJncy5zaG93QnVpbGRJbmZvKSB7XG4gICAgICBhd2FpdCBzaG93QnVpbGRJbmZvKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICAgIHdhcm5Ob2RlRGVwcmVjYXRpb25zKCk7XG5cbiAgICB2YWxpZGF0ZShhcmdzKTtcblxuICAgIGlmIChhcmdzLnRtcERpcikge1xuICAgICAgYXdhaXQgdmFsaWRhdGVUbXBEaXIoYXJncy50bXBEaXIpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlLnJlZCk7XG4gICAgaWYgKHRocm93SW5zdGVhZE9mRXhpdCkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJnc30gYXJnc1xuICovXG5mdW5jdGlvbiBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoYXJncykge1xuICBsb2dnZXIuaW5mbygnTm9uLWRlZmF1bHQgc2VydmVyIGFyZ3M6Jyk7XG4gIGluc3BlY3QoYXJncyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcmdzWydkZWZhdWx0Q2FwYWJpbGl0aWVzJ119IGNhcHNcbiAqL1xuZnVuY3Rpb24gbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcoY2Fwcykge1xuICBsb2dnZXIuaW5mbyhcbiAgICAnRGVmYXVsdCBjYXBhYmlsaXRpZXMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gZWFjaCByZXF1ZXN0ICcgK1xuICAgICAgJ3VubGVzcyBvdmVycmlkZGVuIGJ5IGRlc2lyZWQgY2FwYWJpbGl0aWVzOidcbiAgKTtcbiAgaW5zcGVjdChjYXBzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9nU3RhcnR1cEluZm8oYXJncykge1xuICBsZXQgd2VsY29tZSA9IGBXZWxjb21lIHRvIEFwcGl1bSB2JHtBUFBJVU1fVkVSfWA7XG4gIGxldCBhcHBpdW1SZXYgPSBhd2FpdCBnZXRHaXRSZXYoKTtcbiAgaWYgKGFwcGl1bVJldikge1xuICAgIHdlbGNvbWUgKz0gYCAoUkVWICR7YXBwaXVtUmV2fSlgO1xuICB9XG4gIGxvZ2dlci5pbmZvKHdlbGNvbWUpO1xuXG4gIGxldCBzaG93QXJncyA9IGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzKGFyZ3MpO1xuICBpZiAoXy5zaXplKHNob3dBcmdzKSkge1xuICAgIGxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyhzaG93QXJncyk7XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkoYXJncy5kZWZhdWx0Q2FwYWJpbGl0aWVzKSkge1xuICAgIGxvZ0RlZmF1bHRDYXBhYmlsaXRpZXNXYXJuaW5nKGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcyk7XG4gIH1cbiAgLy8gVE9ETzogYnJpbmcgYmFjayBsb2dsZXZlbCByZXBvcnRpbmcgYmVsb3cgb25jZSBsb2dnZXIgaXMgZmx1c2hlZCBvdXRcbiAgLy8gbG9nZ2VyLmluZm8oJ0NvbnNvbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5jb25zb2xlLmxldmVsKTtcbiAgLy8gaWYgKGxvZ2dlci50cmFuc3BvcnRzLmZpbGUpIHtcbiAgLy8gICBsb2dnZXIuaW5mbygnRmlsZSBMb2dMZXZlbDogJyArIGxvZ2dlci50cmFuc3BvcnRzLmZpbGUubGV2ZWwpO1xuICAvLyB9XG59XG5cbi8qKlxuICogTG9ncyB0aGUgYWRkcmVzcyBhbmQgcG9ydCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZyBvblxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBZGRyZXNzXG4gKiBAcGFyYW0ge251bWJlcn0gcG9ydCAtIFBvcnRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBsb2dTZXJ2ZXJQb3J0KGFkZHJlc3MsIHBvcnQpIHtcbiAgbGV0IGxvZ01lc3NhZ2UgPSBgQXBwaXVtIFJFU1QgaHR0cCBpbnRlcmZhY2UgbGlzdGVuZXIgc3RhcnRlZCBvbiBgICsgYCR7YWRkcmVzc306JHtwb3J0fWA7XG4gIGxvZ2dlci5pbmZvKGxvZ01lc3NhZ2UpO1xufVxuXG4vKipcbiAqIEdldHMgYSBsaXN0IG9mIGB1cGRhdGVTZXJ2ZXJgIGZ1bmN0aW9ucyBmcm9tIGFsbCBleHRlbnNpb25zXG4gKiBAcGFyYW0ge0RyaXZlck5hbWVNYXB9IGRyaXZlckNsYXNzZXNcbiAqIEBwYXJhbSB7UGx1Z2luTmFtZU1hcH0gcGx1Z2luQ2xhc3Nlc1xuICogQHJldHVybnMge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlVwZGF0ZVNlcnZlckNhbGxiYWNrW119XG4gKi9cbmZ1bmN0aW9uIGdldFNlcnZlclVwZGF0ZXJzKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChfLm1hcChbLi4uZHJpdmVyQ2xhc3Nlcy5rZXlzKCksIC4uLnBsdWdpbkNsYXNzZXMua2V5cygpXSwgJ3VwZGF0ZVNlcnZlcicpKTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIGJpZyBgTWV0aG9kTWFwYCBmcm9tIGFsbCB0aGUgbGl0dGxlIGBNZXRob2RNYXBgcyBpbiB0aGUgZXh0ZW5zaW9uc1xuICogQHBhcmFtIHtEcml2ZXJOYW1lTWFwfSBkcml2ZXJDbGFzc2VzXG4gKiBAcGFyYW0ge1BsdWdpbk5hbWVNYXB9IHBsdWdpbkNsYXNzZXNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5NZXRob2RNYXB9XG4gKi9cbmZ1bmN0aW9uIGdldEV4dHJhTWV0aG9kTWFwKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIFsuLi5kcml2ZXJDbGFzc2VzLmtleXMoKSwgLi4ucGx1Z2luQ2xhc3Nlcy5rZXlzKCldLnJlZHVjZShcbiAgICAobWFwLCBrbGFzcykgPT4gKHtcbiAgICAgIC4uLm1hcCxcbiAgICAgIC4uLihrbGFzcy5uZXdNZXRob2RNYXAgPz8ge30pLFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIFtUPVdpdGhTZXJ2ZXJTdWJjb21tYW5kXVxuICogQHBhcmFtIHtBcmdzPFQ+fSBhcmdzXG4gKiBAcmV0dXJucyB7YXJncyBpcyBBcmdzPFdpdGhTZXJ2ZXJTdWJjb21tYW5kPn1cbiAqL1xuZnVuY3Rpb24gYXJlU2VydmVyQ29tbWFuZEFyZ3MoYXJncykge1xuICByZXR1cm4gYXJncy5zdWJjb21tYW5kID09PSBTRVJWRVJfU1VCQ09NTUFORDtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyBBcHBpdW0sIGJ1dCBkb2VzIG5vdCBzdGFydCB0aGUgc2VydmVyLlxuICpcbiAqIFVzZSB0aGlzIHRvIGdldCBhdCB0aGUgY29uZmlndXJhdGlvbiBzY2hlbWEuXG4gKlxuICogSWYgYGFyZ3NgIGNvbnRhaW5zIGEgbm9uLWVtcHR5IGBzdWJjb21tYW5kYCB3aGljaCBpcyBub3QgYHNlcnZlcmAsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEBwYXJhbSB7QXJnczxUPn0gW2FyZ3NdIC0gUGFydGlhbCBhcmdzIChwcm9nYW1tYXRpYyB1c2FnZSBvbmx5KVxuICogQHJldHVybnMge1Byb21pc2U8U2VydmVySW5pdFJlc3VsdCB8IEV4dENvbW1hbmRJbml0UmVzdWx0Pn1cbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge2luaXQsIGdldFNjaGVtYX0gZnJvbSAnYXBwaXVtJztcbiAqIGNvbnN0IG9wdGlvbnMgPSB7fTsgLy8gY29uZmlnIG9iamVjdFxuICogYXdhaXQgaW5pdChvcHRpb25zKTtcbiAqIGNvbnN0IHNjaGVtYSA9IGdldFNjaGVtYSgpOyAvLyBlbnRpcmUgY29uZmlnIHNjaGVtYSBpbmNsdWRpbmcgcGx1Z2lucyBhbmQgZHJpdmVyc1xuICovXG5hc3luYyBmdW5jdGlvbiBpbml0KGFyZ3MpIHtcbiAgY29uc3QgYXBwaXVtSG9tZSA9IGFyZ3M/LmFwcGl1bUhvbWUgPz8gKGF3YWl0IHJlc29sdmVBcHBpdW1Ib21lKCkpO1xuXG4gIGFkanVzdE5vZGVQYXRoKCk7XG5cbiAgY29uc3Qge2RyaXZlckNvbmZpZywgcGx1Z2luQ29uZmlnfSA9IGF3YWl0IGxvYWRFeHRlbnNpb25zKGFwcGl1bUhvbWUpO1xuXG4gIGNvbnN0IHBhcnNlciA9IGdldFBhcnNlcigpO1xuICBsZXQgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2U7XG4gIC8qKiBAdHlwZSB7QXJnczxUPn0gKi9cbiAgbGV0IHByZUNvbmZpZ0FyZ3M7XG5cbiAgaWYgKGFyZ3MpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgY29udGFpbmluZyBwYWNrYWdlIGluc3RlYWQgb2YgcnVubmluZyBhcyBhIENMSSBwcm9jZXNzLFxuICAgIC8vIHRoYXQgcGFja2FnZSBtaWdodCBub3QgYXBwcmVjaWF0ZSB1cyBjYWxsaW5nICdwcm9jZXNzLmV4aXQnIHdpbGx5LVxuICAgIC8vIG5pbGx5LCBzbyBnaXZlIGl0IHRoZSBvcHRpb24gdG8gaGF2ZSB1cyB0aHJvdyBpbnN0ZWFkIG9mIGV4aXRcbiAgICBpZiAoYXJncy50aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93SW5zdGVhZE9mRXhpdCA9IHRydWU7XG4gICAgICAvLyBidXQgcmVtb3ZlIGl0IHNpbmNlIGl0J3Mgbm90IGEgcmVhbCBzZXJ2ZXIgYXJnIHBlciBzZVxuICAgICAgZGVsZXRlIGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0O1xuICAgIH1cbiAgICBwcmVDb25maWdBcmdzID0gey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH07XG4gIH0gZWxzZSB7XG4gICAgLy8gb3RoZXJ3aXNlIHBhcnNlIGZyb20gQ0xJXG4gICAgcHJlQ29uZmlnQXJncyA9IC8qKiBAdHlwZSB7QXJnczxUPn0gKi8gKHBhcnNlci5wYXJzZUFyZ3MoKSk7XG4gIH1cblxuICBjb25zdCBjb25maWdSZXN1bHQgPSBhd2FpdCByZWFkQ29uZmlnRmlsZShwcmVDb25maWdBcmdzLmNvbmZpZ0ZpbGUpO1xuXG4gIGlmICghXy5pc0VtcHR5KGNvbmZpZ1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9ycyBpbiBjb25maWcgZmlsZSAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuICR7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdC5yZWFzb24gPz8gY29uZmlnUmVzdWx0LmVycm9yc1xuICAgICAgfWBcbiAgICApO1xuICB9XG5cbiAgLy8gbWVyZ2UgY29uZmlnIGFuZCBhcHBseSBkZWZhdWx0cy5cbiAgLy8gdGhlIG9yZGVyIG9mIHByZWNlbmRlY2UgaXM6XG4gIC8vIDEuIGNvbW1hbmQgbGluZSBhcmdzXG4gIC8vIDIuIGNvbmZpZyBmaWxlXG4gIC8vIDMuIGRlZmF1bHRzIGZyb20gY29uZmlnIGZpbGUuXG4gIGlmIChhcmVTZXJ2ZXJDb21tYW5kQXJncyhwcmVDb25maWdBcmdzKSkge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEoZmFsc2UpO1xuXG4gICAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBfLmRlZmF1bHRzRGVlcChwcmVDb25maWdBcmdzLCBjb25maWdSZXN1bHQuY29uZmlnPy5zZXJ2ZXIsIGRlZmF1bHRzKTtcblxuICAgIGlmIChwcmVDb25maWdBcmdzLnNob3dDb25maWcpIHtcbiAgICAgIHNob3dDb25maWcoZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocHJlQ29uZmlnQXJncyksIGNvbmZpZ1Jlc3VsdCwgZGVmYXVsdHMsIHNlcnZlckFyZ3MpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGF3YWl0IGxvZ3NpbmtJbml0KHNlcnZlckFyZ3MpO1xuXG4gICAgaWYgKHNlcnZlckFyZ3MubG9nRmlsdGVycykge1xuICAgICAgY29uc3Qge2lzc3VlcywgcnVsZXN9ID0gYXdhaXQgbG9nRmFjdG9yeS5sb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKFxuICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICk7XG4gICAgICBpZiAoIV8uaXNFbXB0eShpc3N1ZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIGxvZyBmaWx0ZXJpbmcgcnVsZXMgY29uZmlnICcke3NlcnZlckFyZ3MubG9nRmlsdGVyc30nIGhhcyBpc3N1ZXM6IGAgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXNzdWVzLCBudWxsLCAyKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNFbXB0eShydWxlcykpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgYEZvdW5kIG5vIGxvZyBmaWx0ZXJpbmcgcnVsZXMgaW4gJyR7c2VydmVyQXJncy5sb2dGaWx0ZXJzfScuIElzIHRoYXQgZXhwZWN0ZWQ/YFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgYExvYWRlZCAke3V0aWwucGx1cmFsaXplKCdmaWx0ZXJpbmcgcnVsZScsIHJ1bGVzLmxlbmd0aCwgdHJ1ZSl9IGZyb20gJyR7XG4gICAgICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICAgICB9J2BcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhcHBpdW1Ecml2ZXIgPSBuZXcgQXBwaXVtRHJpdmVyKHNlcnZlckFyZ3MpO1xuICAgIC8vIHNldCB0aGUgY29uZmlnIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIG1hdGNoIGRyaXZlcnMgdG8gY2Fwc1xuICAgIGFwcGl1bURyaXZlci5kcml2ZXJDb25maWcgPSBkcml2ZXJDb25maWc7XG4gICAgYXdhaXQgcHJlZmxpZ2h0Q2hlY2tzKHNlcnZlckFyZ3MsIHRocm93SW5zdGVhZE9mRXhpdCk7XG5cbiAgICByZXR1cm4gLyoqIEB0eXBlIHtTZXJ2ZXJJbml0UmVzdWx0fSAqLyAoe1xuICAgICAgYXBwaXVtRHJpdmVyLFxuICAgICAgcGFyc2VkQXJnczogc2VydmVyQXJncyxcbiAgICAgIGRyaXZlckNvbmZpZyxcbiAgICAgIHBsdWdpbkNvbmZpZyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleHRlbnNpb25Db21tYW5kQXJncyA9IC8qKiBAdHlwZSB7QXJnczxpbXBvcnQoJ2FwcGl1bS90eXBlcycpLldpdGhFeHRTdWJjb21tYW5kPn0gKi8gKFxuICAgICAgcHJlQ29uZmlnQXJnc1xuICAgICk7XG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCB0aGUgJ2RyaXZlcicgQ0xJLCBkb24ndCBydW4gdGhlIG5vcm1hbCBzZXJ2ZXIsXG4gICAgLy8gYnV0IGluc3RlYWQgcGFzcyBjb250cm9sIHRvIHRoZSBkcml2ZXIgQ0xJXG4gICAgaWYgKHByZUNvbmZpZ0FyZ3Muc3ViY29tbWFuZCA9PT0gRFJJVkVSX1RZUEUpIHtcbiAgICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQoZXh0ZW5zaW9uQ29tbWFuZEFyZ3MsIGRyaXZlckNvbmZpZyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChwcmVDb25maWdBcmdzLnN1YmNvbW1hbmQgPT09IFBMVUdJTl9UWVBFKSB7XG4gICAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKGV4dGVuc2lvbkNvbW1hbmRBcmdzLCBwbHVnaW5Db25maWcpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB7fTsgLy8gc2hvdWxkIG5ldmVyIGhhcHBlblxuICB9XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgQXBwaXVtJ3MgY29uZmlnLiAgU3RhcnRzIHNlcnZlciBpZiBhcHByb3ByaWF0ZSBhbmQgcmVzb2x2ZXMgdGhlXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgaWYgc287IG90aGVyd2lzZSByZXNvbHZlcyB3LyBgdW5kZWZpbmVkYC5cbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEBwYXJhbSB7QXJnczxUPn0gW2FyZ3NdIC0gQXJndW1lbnRzIGZyb20gQ0xJIG9yIG90aGVyd2lzZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtU2VydmVyfHVuZGVmaW5lZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJncykge1xuICBjb25zdCB7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzLCBwbHVnaW5Db25maWcsIGRyaXZlckNvbmZpZ30gPSAvKiogQHR5cGUge1NlcnZlckluaXRSZXN1bHR9ICovIChcbiAgICBhd2FpdCBpbml0KGFyZ3MpXG4gICk7XG5cbiAgaWYgKCFhcHBpdW1Ecml2ZXIgfHwgIXBhcnNlZEFyZ3MgfHwgIXBsdWdpbkNvbmZpZyB8fCAhZHJpdmVyQ29uZmlnKSB7XG4gICAgLy8gaWYgdGhpcyBicmFuY2ggaXMgdGFrZW4sIHdlJ3ZlIHJ1biBhIGRpZmZlcmVudCBzdWJjb21tYW5kLCBzbyB0aGVyZSdzIG5vdGhpbmdcbiAgICAvLyBsZWZ0IHRvIGRvIGhlcmUuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGx1Z2luQ2xhc3NlcyA9IGdldEFjdGl2ZVBsdWdpbnMocGx1Z2luQ29uZmlnLCBwYXJzZWRBcmdzLnVzZVBsdWdpbnMpO1xuICAvLyBzZXQgdGhlIGFjdGl2ZSBwbHVnaW5zIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtIGZvciBjb21tYW5kc1xuICBhcHBpdW1Ecml2ZXIucGx1Z2luQ2xhc3NlcyA9IHBsdWdpbkNsYXNzZXM7XG5cbiAgYXdhaXQgbG9nU3RhcnR1cEluZm8ocGFyc2VkQXJncyk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGFwcGl1bURyaXZlcik7XG5cbiAgY29uc3QgZHJpdmVyQ2xhc3NlcyA9IGdldEFjdGl2ZURyaXZlcnMoZHJpdmVyQ29uZmlnLCBwYXJzZWRBcmdzLnVzZURyaXZlcnMpO1xuICBjb25zdCBzZXJ2ZXJVcGRhdGVycyA9IGdldFNlcnZlclVwZGF0ZXJzKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpO1xuICBjb25zdCBleHRyYU1ldGhvZE1hcCA9IGdldEV4dHJhTWV0aG9kTWFwKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpO1xuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KCdAYXBwaXVtL2Jhc2UtZHJpdmVyJykuU2VydmVyT3B0c30gKi9cbiAgY29uc3Qgc2VydmVyT3B0cyA9IHtcbiAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sXG4gICAgcG9ydDogcGFyc2VkQXJncy5wb3J0LFxuICAgIGhvc3RuYW1lOiBwYXJzZWRBcmdzLmFkZHJlc3MsXG4gICAgYWxsb3dDb3JzOiBwYXJzZWRBcmdzLmFsbG93Q29ycyxcbiAgICBiYXNlUGF0aDogcGFyc2VkQXJncy5iYXNlUGF0aCxcbiAgICBzZXJ2ZXJVcGRhdGVycyxcbiAgICBleHRyYU1ldGhvZE1hcCxcbiAgICBjbGlBcmdzOiBwYXJzZWRBcmdzLFxuICB9O1xuICBpZiAocGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0KSB7XG4gICAgc2VydmVyT3B0cy5rZWVwQWxpdmVUaW1lb3V0ID0gcGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgfVxuICBsZXQgc2VydmVyO1xuICB0cnkge1xuICAgIHNlcnZlciA9IGF3YWl0IGJhc2VTZXJ2ZXIoc2VydmVyT3B0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihcbiAgICAgIGBDb3VsZCBub3QgY29uZmlndXJlIEFwcGl1bSBzZXJ2ZXIuIEl0J3MgcG9zc2libGUgdGhhdCBhIGRyaXZlciBvciBwbHVnaW4gdHJpZWQgYCArXG4gICAgICAgIGB0byB1cGRhdGUgdGhlIHNlcnZlciBhbmQgZmFpbGVkLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gXG4gICAgKTtcbiAgICBsb2dnZXIuZGVidWcoZXJyLnN0YWNrKTtcbiAgICByZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgaWYgKHBhcnNlZEFyZ3MuYWxsb3dDb3JzKSB7XG4gICAgbG9nZ2VyLndhcm4oXG4gICAgICAnWW91IGhhdmUgZW5hYmxlZCBDT1JTIHJlcXVlc3RzIGZyb20gYW55IGhvc3QuIEJlIGNhcmVmdWwgbm90ICcgK1xuICAgICAgICAndG8gdmlzaXQgc2l0ZXMgd2hpY2ggY291bGQgbWFsaWNpb3VzbHkgdHJ5IHRvIHN0YXJ0IEFwcGl1bSAnICtcbiAgICAgICAgJ3Nlc3Npb25zIG9uIHlvdXIgbWFjaGluZSdcbiAgICApO1xuICB9XG4gIGFwcGl1bURyaXZlci5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIHRyeSB7XG4gICAgLy8gY29uZmlndXJlIGFzIG5vZGUgb24gZ3JpZCwgaWYgbmVjZXNzYXJ5XG4gICAgLy8gZmFsc3kgdmFsdWVzIHNob3VsZCBub3QgY2F1c2UgdGhpcyB0byBydW5cbiAgICBpZiAocGFyc2VkQXJncy5ub2RlY29uZmlnKSB7XG4gICAgICBhd2FpdCByZWdpc3Rlck5vZGUoXG4gICAgICAgIHBhcnNlZEFyZ3Mubm9kZWNvbmZpZyxcbiAgICAgICAgcGFyc2VkQXJncy5hZGRyZXNzLFxuICAgICAgICBwYXJzZWRBcmdzLnBvcnQsXG4gICAgICAgIHBhcnNlZEFyZ3MuYmFzZVBhdGhcbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbJ1NJR0lOVCcsICdTSUdURVJNJ10pIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCBhc3luYyBmdW5jdGlvbiBvblNpZ25hbCgpIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBSZWNlaXZlZCAke3NpZ25hbH0gLSBzaHV0dGluZyBkb3duYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhcHBpdW1Ecml2ZXIuZGVsZXRlQWxsU2Vzc2lvbnMoe1xuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgIHJlYXNvbjogYFRoZSBwcm9jZXNzIGhhcyByZWNlaXZlZCAke3NpZ25hbH0gc2lnbmFsYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGUpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2dTZXJ2ZXJQb3J0KHBhcnNlZEFyZ3MuYWRkcmVzcywgcGFyc2VkQXJncy5wb3J0KTtcbiAgZHJpdmVyQ29uZmlnLnByaW50KCk7XG4gIHBsdWdpbkNvbmZpZy5wcmludChbLi4ucGx1Z2luQ2xhc3Nlcy52YWx1ZXMoKV0pO1xuXG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbi8vIE5PVEU6IHRoaXMgaXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdCBmb3IgYW55IHNjcmlwdHMgcmVmZXJlbmNpbmcgYG1haW4uanNgIGRpcmVjdGx5XG4vLyAobW9yZSBzcGVjaWZpY2FsbHksIGBidWlsZC9saWIvbWFpbi5qc2ApXG4vLyB0aGUgZXhlY3V0YWJsZSBpcyBub3cgYC4uL2luZGV4LmpzYCwgc28gdGhhdCBtb2R1bGUgd2lsbCB0eXBpY2FsbHkgYmUgYHJlcXVpcmUubWFpbmAuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBpbnRlbmRlZCB0byBiZSBhIHB1YmxpYyBBUEkuXG5leHBvcnQge3JlYWRDb25maWdGaWxlfSBmcm9tICcuL2NvbmZpZy1maWxlJztcbmV4cG9ydCB7ZmluYWxpemVTY2hlbWEsIGdldFNjaGVtYSwgdmFsaWRhdGV9IGZyb20gJy4vc2NoZW1hL3NjaGVtYSc7XG5leHBvcnQge21haW4sIGluaXQsIHJlc29sdmVBcHBpdW1Ib21lfTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVyVHlwZX0gRHJpdmVyVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJDbGFzc30gRHJpdmVyQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5QbHVnaW5DbGFzc30gUGx1Z2luQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLldpdGhTZXJ2ZXJTdWJjb21tYW5kfSBXaXRoU2VydmVyU3ViY29tbWFuZFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9leHRlbnNpb24nKS5Ecml2ZXJOYW1lTWFwfSBEcml2ZXJOYW1lTWFwXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2V4dGVuc2lvbicpLlBsdWdpbk5hbWVNYXB9IFBsdWdpbk5hbWVNYXBcbiAqL1xuXG4vKipcbiAqIExpdGVyYWxseSBhbiBlbXB0eSBvYmplY3RcbiAqIEB0eXBlZGVmIHsge30gfSBFeHRDb21tYW5kSW5pdFJlc3VsdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgU2VydmVySW5pdERhdGFcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2FwcGl1bScpLkFwcGl1bURyaXZlcn0gYXBwaXVtRHJpdmVyIC0gVGhlIEFwcGl1bSBkcml2ZXJcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gVGhlIHBhcnNlZCBhcmd1bWVudHNcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtTZXJ2ZXJJbml0RGF0YSAmIGltcG9ydCgnLi9leHRlbnNpb24nKS5FeHRlbnNpb25Db25maWdzfSBTZXJ2ZXJJbml0UmVzdWx0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5BcmdzPFQ+fSBBcmdzXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QYXJzZWRBcmdzPFQ+fSBQYXJzZWRBcmdzXG4gKi9cbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FB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
|
|
336
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvbHZlQXBwaXVtSG9tZSIsImVudiIsInByZWZsaWdodENoZWNrcyIsImFyZ3MiLCJ0aHJvd0luc3RlYWRPZkV4aXQiLCJjaGVja05vZGVPayIsImNoZWNrTnBtT2siLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dCdWlsZEluZm8iLCJwcm9jZXNzIiwiZXhpdCIsIndhcm5Ob2RlRGVwcmVjYXRpb25zIiwidmFsaWRhdGUiLCJ0bXBEaXIiLCJ2YWxpZGF0ZVRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJpbnNwZWN0IiwibG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmciLCJjYXBzIiwibG9nU3RhcnR1cEluZm8iLCJ3ZWxjb21lIiwiQVBQSVVNX1ZFUiIsImFwcGl1bVJldiIsImdldEdpdFJldiIsInNob3dBcmdzIiwiZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldFNlcnZlclVwZGF0ZXJzIiwiZHJpdmVyQ2xhc3NlcyIsInBsdWdpbkNsYXNzZXMiLCJjb21wYWN0IiwibWFwIiwia2V5cyIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwia2xhc3MiLCJuZXdNZXRob2RNYXAiLCJhcmVTZXJ2ZXJDb21tYW5kQXJncyIsInN1YmNvbW1hbmQiLCJTRVJWRVJfU1VCQ09NTUFORCIsImluaXQiLCJhcHBpdW1Ib21lIiwiYWRqdXN0Tm9kZVBhdGgiLCJkcml2ZXJDb25maWciLCJwbHVnaW5Db25maWciLCJsb2FkRXh0ZW5zaW9ucyIsInBhcnNlciIsImdldFBhcnNlciIsInByZUNvbmZpZ0FyZ3MiLCJwYXJzZUFyZ3MiLCJjb25maWdSZXN1bHQiLCJyZWFkQ29uZmlnRmlsZSIsImNvbmZpZ0ZpbGUiLCJlcnJvcnMiLCJFcnJvciIsImZpbGVwYXRoIiwicmVhc29uIiwiZGVmYXVsdHMiLCJnZXREZWZhdWx0c0ZvclNjaGVtYSIsInNlcnZlckFyZ3MiLCJkZWZhdWx0c0RlZXAiLCJjb25maWciLCJzZXJ2ZXIiLCJzaG93Q29uZmlnIiwibG9nc2lua0luaXQiLCJsb2dGaWx0ZXJzIiwiaXNzdWVzIiwicnVsZXMiLCJsb2dGYWN0b3J5IiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3YXJuIiwidXRpbCIsInBsdXJhbGl6ZSIsImxlbmd0aCIsImFwcGl1bURyaXZlciIsIkFwcGl1bURyaXZlciIsInBhcnNlZEFyZ3MiLCJleHRlbnNpb25Db21tYW5kQXJncyIsIkRSSVZFUl9UWVBFIiwicnVuRXh0ZW5zaW9uQ29tbWFuZCIsIlBMVUdJTl9UWVBFIiwibWFpbiIsImdldEFjdGl2ZVBsdWdpbnMiLCJ1c2VQbHVnaW5zIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwibWFrZVJvdXRlciIsImdldEFjdGl2ZURyaXZlcnMiLCJ1c2VEcml2ZXJzIiwic2VydmVyVXBkYXRlcnMiLCJleHRyYU1ldGhvZE1hcCIsInNlcnZlck9wdHMiLCJob3N0bmFtZSIsImFsbG93Q29ycyIsImJhc2VQYXRoIiwiY2xpQXJncyIsImtlZXBBbGl2ZVRpbWVvdXQiLCJiYXNlU2VydmVyIiwiZGVidWciLCJzdGFjayIsIm5vZGVjb25maWciLCJyZWdpc3Rlck5vZGUiLCJjbG9zZSIsInNpZ25hbCIsIm9uY2UiLCJvblNpZ25hbCIsImRlbGV0ZUFsbFNlc3Npb25zIiwiZm9yY2UiLCJlIiwicHJpbnQiLCJ2YWx1ZXMiLCJtb2R1bGUiLCJhc3luY2lmeSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHtpbml0IGFzIGxvZ3NpbmtJbml0fSBmcm9tICcuL2xvZ3NpbmsnOyAvLyB0aGlzIGltcG9ydCBuZWVkcyB0byBjb21lIGZpcnN0IHNpbmNlIGl0IHNldHMgdXAgZ2xvYmFsIG5wbWxvZ1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7IC8vIGxvZ2dlciBuZWVkcyB0byByZW1haW4gc2Vjb25kXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQge3JvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiBhcyBtYWtlUm91dGVyLCBzZXJ2ZXIgYXMgYmFzZVNlcnZlcn0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge2xvZ2dlciBhcyBsb2dGYWN0b3J5LCB1dGlsLCBlbnZ9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQge2FzeW5jaWZ5fSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHtBcHBpdW1Ecml2ZXJ9IGZyb20gJy4vYXBwaXVtJztcbmltcG9ydCB7cnVuRXh0ZW5zaW9uQ29tbWFuZH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7Z2V0UGFyc2VyfSBmcm9tICcuL2NsaS9wYXJzZXInO1xuaW1wb3J0IHtcbiAgQVBQSVVNX1ZFUixcbiAgY2hlY2tOb2RlT2ssXG4gIGdldEdpdFJldixcbiAgZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MsXG4gIHNob3dDb25maWcsXG4gIHNob3dCdWlsZEluZm8sXG4gIHZhbGlkYXRlVG1wRGlyLFxuICB3YXJuTm9kZURlcHJlY2F0aW9ucyxcbiAgY2hlY2tOcG1Payxcbn0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHtyZWFkQ29uZmlnRmlsZX0gZnJvbSAnLi9jb25maWctZmlsZSc7XG5pbXBvcnQge2xvYWRFeHRlbnNpb25zLCBnZXRBY3RpdmVQbHVnaW5zLCBnZXRBY3RpdmVEcml2ZXJzfSBmcm9tICcuL2V4dGVuc2lvbic7XG5pbXBvcnQge0RSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSwgU0VSVkVSX1NVQkNPTU1BTkR9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCByZWdpc3Rlck5vZGUgZnJvbSAnLi9ncmlkLXJlZ2lzdGVyJztcbmltcG9ydCB7Z2V0RGVmYXVsdHNGb3JTY2hlbWEsIHZhbGlkYXRlfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHtpbnNwZWN0LCBhZGp1c3ROb2RlUGF0aH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IHtyZXNvbHZlQXBwaXVtSG9tZX0gPSBlbnY7XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7UGFyc2VkQXJnc30gYXJnc1xuICogQHBhcmFtIHtib29sZWFufSBbdGhyb3dJbnN0ZWFkT2ZFeGl0XVxuICovXG5hc3luYyBmdW5jdGlvbiBwcmVmbGlnaHRDaGVja3MoYXJncywgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2UpIHtcbiAgdHJ5IHtcbiAgICBjaGVja05vZGVPaygpO1xuICAgIGF3YWl0IGNoZWNrTnBtT2soKTtcbiAgICBpZiAoYXJncy5sb25nU3RhY2t0cmFjZSkge1xuICAgICAgcmVxdWlyZSgnbG9uZ2pvaG4nKS5hc3luY190cmFjZV9saW1pdCA9IC0xO1xuICAgIH1cbiAgICBpZiAoYXJncy5zaG93QnVpbGRJbmZvKSB7XG4gICAgICBhd2FpdCBzaG93QnVpbGRJbmZvKCk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfVxuICAgIHdhcm5Ob2RlRGVwcmVjYXRpb25zKCk7XG5cbiAgICB2YWxpZGF0ZShhcmdzKTtcblxuICAgIGlmIChhcmdzLnRtcERpcikge1xuICAgICAgYXdhaXQgdmFsaWRhdGVUbXBEaXIoYXJncy50bXBEaXIpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlLnJlZCk7XG4gICAgaWYgKHRocm93SW5zdGVhZE9mRXhpdCkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJnc30gYXJnc1xuICovXG5mdW5jdGlvbiBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoYXJncykge1xuICBsb2dnZXIuaW5mbygnTm9uLWRlZmF1bHQgc2VydmVyIGFyZ3M6Jyk7XG4gIGluc3BlY3QoYXJncyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcmdzWydkZWZhdWx0Q2FwYWJpbGl0aWVzJ119IGNhcHNcbiAqL1xuZnVuY3Rpb24gbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcoY2Fwcykge1xuICBsb2dnZXIuaW5mbyhcbiAgICAnRGVmYXVsdCBjYXBhYmlsaXRpZXMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gZWFjaCByZXF1ZXN0ICcgK1xuICAgICAgJ3VubGVzcyBvdmVycmlkZGVuIGJ5IGRlc2lyZWQgY2FwYWJpbGl0aWVzOidcbiAgKTtcbiAgaW5zcGVjdChjYXBzKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9nU3RhcnR1cEluZm8oYXJncykge1xuICBsZXQgd2VsY29tZSA9IGBXZWxjb21lIHRvIEFwcGl1bSB2JHtBUFBJVU1fVkVSfWA7XG4gIGxldCBhcHBpdW1SZXYgPSBhd2FpdCBnZXRHaXRSZXYoKTtcbiAgaWYgKGFwcGl1bVJldikge1xuICAgIHdlbGNvbWUgKz0gYCAoUkVWICR7YXBwaXVtUmV2fSlgO1xuICB9XG4gIGxvZ2dlci5pbmZvKHdlbGNvbWUpO1xuXG4gIGxldCBzaG93QXJncyA9IGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzKGFyZ3MpO1xuICBpZiAoXy5zaXplKHNob3dBcmdzKSkge1xuICAgIGxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyhzaG93QXJncyk7XG4gIH1cbiAgaWYgKCFfLmlzRW1wdHkoYXJncy5kZWZhdWx0Q2FwYWJpbGl0aWVzKSkge1xuICAgIGxvZ0RlZmF1bHRDYXBhYmlsaXRpZXNXYXJuaW5nKGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcyk7XG4gIH1cbiAgLy8gVE9ETzogYnJpbmcgYmFjayBsb2dsZXZlbCByZXBvcnRpbmcgYmVsb3cgb25jZSBsb2dnZXIgaXMgZmx1c2hlZCBvdXRcbiAgLy8gbG9nZ2VyLmluZm8oJ0NvbnNvbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5jb25zb2xlLmxldmVsKTtcbiAgLy8gaWYgKGxvZ2dlci50cmFuc3BvcnRzLmZpbGUpIHtcbiAgLy8gICBsb2dnZXIuaW5mbygnRmlsZSBMb2dMZXZlbDogJyArIGxvZ2dlci50cmFuc3BvcnRzLmZpbGUubGV2ZWwpO1xuICAvLyB9XG59XG5cbi8qKlxuICogTG9ncyB0aGUgYWRkcmVzcyBhbmQgcG9ydCB0aGUgc2VydmVyIGlzIGxpc3RlbmluZyBvblxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBZGRyZXNzXG4gKiBAcGFyYW0ge251bWJlcn0gcG9ydCAtIFBvcnRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiBsb2dTZXJ2ZXJQb3J0KGFkZHJlc3MsIHBvcnQpIHtcbiAgbGV0IGxvZ01lc3NhZ2UgPSBgQXBwaXVtIFJFU1QgaHR0cCBpbnRlcmZhY2UgbGlzdGVuZXIgc3RhcnRlZCBvbiBgICsgYCR7YWRkcmVzc306JHtwb3J0fWA7XG4gIGxvZ2dlci5pbmZvKGxvZ01lc3NhZ2UpO1xufVxuXG4vKipcbiAqIEdldHMgYSBsaXN0IG9mIGB1cGRhdGVTZXJ2ZXJgIGZ1bmN0aW9ucyBmcm9tIGFsbCBleHRlbnNpb25zXG4gKiBAcGFyYW0ge0RyaXZlck5hbWVNYXB9IGRyaXZlckNsYXNzZXNcbiAqIEBwYXJhbSB7UGx1Z2luTmFtZU1hcH0gcGx1Z2luQ2xhc3Nlc1xuICogQHJldHVybnMge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlVwZGF0ZVNlcnZlckNhbGxiYWNrW119XG4gKi9cbmZ1bmN0aW9uIGdldFNlcnZlclVwZGF0ZXJzKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChfLm1hcChbLi4uZHJpdmVyQ2xhc3Nlcy5rZXlzKCksIC4uLnBsdWdpbkNsYXNzZXMua2V5cygpXSwgJ3VwZGF0ZVNlcnZlcicpKTtcbn1cblxuLyoqXG4gKiBNYWtlcyBhIGJpZyBgTWV0aG9kTWFwYCBmcm9tIGFsbCB0aGUgbGl0dGxlIGBNZXRob2RNYXBgcyBpbiB0aGUgZXh0ZW5zaW9uc1xuICogQHBhcmFtIHtEcml2ZXJOYW1lTWFwfSBkcml2ZXJDbGFzc2VzXG4gKiBAcGFyYW0ge1BsdWdpbk5hbWVNYXB9IHBsdWdpbkNsYXNzZXNcbiAqIEByZXR1cm5zIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5NZXRob2RNYXB9XG4gKi9cbmZ1bmN0aW9uIGdldEV4dHJhTWV0aG9kTWFwKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIFsuLi5kcml2ZXJDbGFzc2VzLmtleXMoKSwgLi4ucGx1Z2luQ2xhc3Nlcy5rZXlzKCldLnJlZHVjZShcbiAgICAobWFwLCBrbGFzcykgPT4gKHtcbiAgICAgIC4uLm1hcCxcbiAgICAgIC4uLihrbGFzcy5uZXdNZXRob2RNYXAgPz8ge30pLFxuICAgIH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIFtUPVdpdGhTZXJ2ZXJTdWJjb21tYW5kXVxuICogQHBhcmFtIHtBcmdzPFQ+fSBhcmdzXG4gKiBAcmV0dXJucyB7YXJncyBpcyBBcmdzPFdpdGhTZXJ2ZXJTdWJjb21tYW5kPn1cbiAqL1xuZnVuY3Rpb24gYXJlU2VydmVyQ29tbWFuZEFyZ3MoYXJncykge1xuICByZXR1cm4gYXJncy5zdWJjb21tYW5kID09PSBTRVJWRVJfU1VCQ09NTUFORDtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyBBcHBpdW0sIGJ1dCBkb2VzIG5vdCBzdGFydCB0aGUgc2VydmVyLlxuICpcbiAqIFVzZSB0aGlzIHRvIGdldCBhdCB0aGUgY29uZmlndXJhdGlvbiBzY2hlbWEuXG4gKlxuICogSWYgYGFyZ3NgIGNvbnRhaW5zIGEgbm9uLWVtcHR5IGBzdWJjb21tYW5kYCB3aGljaCBpcyBub3QgYHNlcnZlcmAsIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEBwYXJhbSB7QXJnczxUPn0gW2FyZ3NdIC0gUGFydGlhbCBhcmdzIChwcm9nYW1tYXRpYyB1c2FnZSBvbmx5KVxuICogQHJldHVybnMge1Byb21pc2U8U2VydmVySW5pdFJlc3VsdCB8IEV4dENvbW1hbmRJbml0UmVzdWx0Pn1cbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge2luaXQsIGdldFNjaGVtYX0gZnJvbSAnYXBwaXVtJztcbiAqIGNvbnN0IG9wdGlvbnMgPSB7fTsgLy8gY29uZmlnIG9iamVjdFxuICogYXdhaXQgaW5pdChvcHRpb25zKTtcbiAqIGNvbnN0IHNjaGVtYSA9IGdldFNjaGVtYSgpOyAvLyBlbnRpcmUgY29uZmlnIHNjaGVtYSBpbmNsdWRpbmcgcGx1Z2lucyBhbmQgZHJpdmVyc1xuICovXG5hc3luYyBmdW5jdGlvbiBpbml0KGFyZ3MpIHtcbiAgY29uc3QgYXBwaXVtSG9tZSA9IGFyZ3M/LmFwcGl1bUhvbWUgPz8gKGF3YWl0IHJlc29sdmVBcHBpdW1Ib21lKCkpO1xuXG4gIGFkanVzdE5vZGVQYXRoKCk7XG5cbiAgY29uc3Qge2RyaXZlckNvbmZpZywgcGx1Z2luQ29uZmlnfSA9IGF3YWl0IGxvYWRFeHRlbnNpb25zKGFwcGl1bUhvbWUpO1xuXG4gIGNvbnN0IHBhcnNlciA9IGdldFBhcnNlcigpO1xuICBsZXQgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2U7XG4gIC8qKiBAdHlwZSB7QXJnczxUPn0gKi9cbiAgbGV0IHByZUNvbmZpZ0FyZ3M7XG5cbiAgaWYgKGFyZ3MpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgY29udGFpbmluZyBwYWNrYWdlIGluc3RlYWQgb2YgcnVubmluZyBhcyBhIENMSSBwcm9jZXNzLFxuICAgIC8vIHRoYXQgcGFja2FnZSBtaWdodCBub3QgYXBwcmVjaWF0ZSB1cyBjYWxsaW5nICdwcm9jZXNzLmV4aXQnIHdpbGx5LVxuICAgIC8vIG5pbGx5LCBzbyBnaXZlIGl0IHRoZSBvcHRpb24gdG8gaGF2ZSB1cyB0aHJvdyBpbnN0ZWFkIG9mIGV4aXRcbiAgICBpZiAoYXJncy50aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93SW5zdGVhZE9mRXhpdCA9IHRydWU7XG4gICAgICAvLyBidXQgcmVtb3ZlIGl0IHNpbmNlIGl0J3Mgbm90IGEgcmVhbCBzZXJ2ZXIgYXJnIHBlciBzZVxuICAgICAgZGVsZXRlIGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0O1xuICAgIH1cbiAgICBwcmVDb25maWdBcmdzID0gey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH07XG4gIH0gZWxzZSB7XG4gICAgLy8gb3RoZXJ3aXNlIHBhcnNlIGZyb20gQ0xJXG4gICAgcHJlQ29uZmlnQXJncyA9IC8qKiBAdHlwZSB7QXJnczxUPn0gKi8gKHBhcnNlci5wYXJzZUFyZ3MoKSk7XG4gIH1cblxuICBjb25zdCBjb25maWdSZXN1bHQgPSBhd2FpdCByZWFkQ29uZmlnRmlsZShwcmVDb25maWdBcmdzLmNvbmZpZ0ZpbGUpO1xuXG4gIGlmICghXy5pc0VtcHR5KGNvbmZpZ1Jlc3VsdC5lcnJvcnMpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEVycm9ycyBpbiBjb25maWcgZmlsZSAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuICR7XG4gICAgICAgIGNvbmZpZ1Jlc3VsdC5yZWFzb24gPz8gY29uZmlnUmVzdWx0LmVycm9yc1xuICAgICAgfWBcbiAgICApO1xuICB9XG5cbiAgLy8gbWVyZ2UgY29uZmlnIGFuZCBhcHBseSBkZWZhdWx0cy5cbiAgLy8gdGhlIG9yZGVyIG9mIHByZWNlbmRlY2UgaXM6XG4gIC8vIDEuIGNvbW1hbmQgbGluZSBhcmdzXG4gIC8vIDIuIGNvbmZpZyBmaWxlXG4gIC8vIDMuIGRlZmF1bHRzIGZyb20gY29uZmlnIGZpbGUuXG4gIGlmIChhcmVTZXJ2ZXJDb21tYW5kQXJncyhwcmVDb25maWdBcmdzKSkge1xuICAgIGNvbnN0IGRlZmF1bHRzID0gZ2V0RGVmYXVsdHNGb3JTY2hlbWEoZmFsc2UpO1xuXG4gICAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICAgIGNvbnN0IHNlcnZlckFyZ3MgPSBfLmRlZmF1bHRzRGVlcChwcmVDb25maWdBcmdzLCBjb25maWdSZXN1bHQuY29uZmlnPy5zZXJ2ZXIsIGRlZmF1bHRzKTtcblxuICAgIGlmIChwcmVDb25maWdBcmdzLnNob3dDb25maWcpIHtcbiAgICAgIHNob3dDb25maWcoZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocHJlQ29uZmlnQXJncyksIGNvbmZpZ1Jlc3VsdCwgZGVmYXVsdHMsIHNlcnZlckFyZ3MpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGF3YWl0IGxvZ3NpbmtJbml0KHNlcnZlckFyZ3MpO1xuXG4gICAgaWYgKHNlcnZlckFyZ3MubG9nRmlsdGVycykge1xuICAgICAgY29uc3Qge2lzc3VlcywgcnVsZXN9ID0gYXdhaXQgbG9nRmFjdG9yeS5sb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKFxuICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICk7XG4gICAgICBpZiAoIV8uaXNFbXB0eShpc3N1ZXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgVGhlIGxvZyBmaWx0ZXJpbmcgcnVsZXMgY29uZmlnICcke3NlcnZlckFyZ3MubG9nRmlsdGVyc30nIGhhcyBpc3N1ZXM6IGAgK1xuICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXNzdWVzLCBudWxsLCAyKVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNFbXB0eShydWxlcykpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oXG4gICAgICAgICAgYEZvdW5kIG5vIGxvZyBmaWx0ZXJpbmcgcnVsZXMgaW4gJyR7c2VydmVyQXJncy5sb2dGaWx0ZXJzfScuIElzIHRoYXQgZXhwZWN0ZWQ/YFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nZ2VyLmluZm8oXG4gICAgICAgICAgYExvYWRlZCAke3V0aWwucGx1cmFsaXplKCdmaWx0ZXJpbmcgcnVsZScsIHJ1bGVzLmxlbmd0aCwgdHJ1ZSl9IGZyb20gJyR7XG4gICAgICAgICAgICBzZXJ2ZXJBcmdzLmxvZ0ZpbHRlcnNcbiAgICAgICAgICB9J2BcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBhcHBpdW1Ecml2ZXIgPSBuZXcgQXBwaXVtRHJpdmVyKHNlcnZlckFyZ3MpO1xuICAgIC8vIHNldCB0aGUgY29uZmlnIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIG1hdGNoIGRyaXZlcnMgdG8gY2Fwc1xuICAgIGFwcGl1bURyaXZlci5kcml2ZXJDb25maWcgPSBkcml2ZXJDb25maWc7XG4gICAgYXdhaXQgcHJlZmxpZ2h0Q2hlY2tzKHNlcnZlckFyZ3MsIHRocm93SW5zdGVhZE9mRXhpdCk7XG5cbiAgICByZXR1cm4gLyoqIEB0eXBlIHtTZXJ2ZXJJbml0UmVzdWx0fSAqLyAoe1xuICAgICAgYXBwaXVtRHJpdmVyLFxuICAgICAgcGFyc2VkQXJnczogc2VydmVyQXJncyxcbiAgICAgIGRyaXZlckNvbmZpZyxcbiAgICAgIHBsdWdpbkNvbmZpZyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBleHRlbnNpb25Db21tYW5kQXJncyA9IC8qKiBAdHlwZSB7QXJnczxpbXBvcnQoJ2FwcGl1bS90eXBlcycpLldpdGhFeHRTdWJjb21tYW5kPn0gKi8gKFxuICAgICAgcHJlQ29uZmlnQXJnc1xuICAgICk7XG4gICAgLy8gaWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCB0aGUgJ2RyaXZlcicgQ0xJLCBkb24ndCBydW4gdGhlIG5vcm1hbCBzZXJ2ZXIsXG4gICAgLy8gYnV0IGluc3RlYWQgcGFzcyBjb250cm9sIHRvIHRoZSBkcml2ZXIgQ0xJXG4gICAgaWYgKHByZUNvbmZpZ0FyZ3Muc3ViY29tbWFuZCA9PT0gRFJJVkVSX1RZUEUpIHtcbiAgICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQoZXh0ZW5zaW9uQ29tbWFuZEFyZ3MsIGRyaXZlckNvbmZpZyk7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChwcmVDb25maWdBcmdzLnN1YmNvbW1hbmQgPT09IFBMVUdJTl9UWVBFKSB7XG4gICAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKGV4dGVuc2lvbkNvbW1hbmRBcmdzLCBwbHVnaW5Db25maWcpO1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiB7fTsgLy8gc2hvdWxkIG5ldmVyIGhhcHBlblxuICB9XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgQXBwaXVtJ3MgY29uZmlnLiAgU3RhcnRzIHNlcnZlciBpZiBhcHByb3ByaWF0ZSBhbmQgcmVzb2x2ZXMgdGhlXG4gKiBzZXJ2ZXIgaW5zdGFuY2UgaWYgc287IG90aGVyd2lzZSByZXNvbHZlcyB3LyBgdW5kZWZpbmVkYC5cbiAqIEB0ZW1wbGF0ZSBbVD1XaXRoU2VydmVyU3ViY29tbWFuZF1cbiAqIEBwYXJhbSB7QXJnczxUPn0gW2FyZ3NdIC0gQXJndW1lbnRzIGZyb20gQ0xJIG9yIG90aGVyd2lzZVxuICogQHJldHVybnMge1Byb21pc2U8aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtU2VydmVyfHVuZGVmaW5lZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1haW4oYXJncykge1xuICBjb25zdCB7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzLCBwbHVnaW5Db25maWcsIGRyaXZlckNvbmZpZ30gPSAvKiogQHR5cGUge1NlcnZlckluaXRSZXN1bHR9ICovIChcbiAgICBhd2FpdCBpbml0KGFyZ3MpXG4gICk7XG5cbiAgaWYgKCFhcHBpdW1Ecml2ZXIgfHwgIXBhcnNlZEFyZ3MgfHwgIXBsdWdpbkNvbmZpZyB8fCAhZHJpdmVyQ29uZmlnKSB7XG4gICAgLy8gaWYgdGhpcyBicmFuY2ggaXMgdGFrZW4sIHdlJ3ZlIHJ1biBhIGRpZmZlcmVudCBzdWJjb21tYW5kLCBzbyB0aGVyZSdzIG5vdGhpbmdcbiAgICAvLyBsZWZ0IHRvIGRvIGhlcmUuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGx1Z2luQ2xhc3NlcyA9IGdldEFjdGl2ZVBsdWdpbnMocGx1Z2luQ29uZmlnLCBwYXJzZWRBcmdzLnVzZVBsdWdpbnMpO1xuICAvLyBzZXQgdGhlIGFjdGl2ZSBwbHVnaW5zIG9uIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtIGZvciBjb21tYW5kc1xuICBhcHBpdW1Ecml2ZXIucGx1Z2luQ2xhc3NlcyA9IHBsdWdpbkNsYXNzZXM7XG5cbiAgYXdhaXQgbG9nU3RhcnR1cEluZm8ocGFyc2VkQXJncyk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGFwcGl1bURyaXZlcik7XG5cbiAgY29uc3QgZHJpdmVyQ2xhc3NlcyA9IGdldEFjdGl2ZURyaXZlcnMoZHJpdmVyQ29uZmlnLCBwYXJzZWRBcmdzLnVzZURyaXZlcnMpO1xuICBjb25zdCBzZXJ2ZXJVcGRhdGVycyA9IGdldFNlcnZlclVwZGF0ZXJzKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpO1xuICBjb25zdCBleHRyYU1ldGhvZE1hcCA9IGdldEV4dHJhTWV0aG9kTWFwKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpO1xuXG4gIC8qKiBAdHlwZSB7aW1wb3J0KCdAYXBwaXVtL2Jhc2UtZHJpdmVyJykuU2VydmVyT3B0c30gKi9cbiAgY29uc3Qgc2VydmVyT3B0cyA9IHtcbiAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sXG4gICAgcG9ydDogcGFyc2VkQXJncy5wb3J0LFxuICAgIGhvc3RuYW1lOiBwYXJzZWRBcmdzLmFkZHJlc3MsXG4gICAgYWxsb3dDb3JzOiBwYXJzZWRBcmdzLmFsbG93Q29ycyxcbiAgICBiYXNlUGF0aDogcGFyc2VkQXJncy5iYXNlUGF0aCxcbiAgICBzZXJ2ZXJVcGRhdGVycyxcbiAgICBleHRyYU1ldGhvZE1hcCxcbiAgICBjbGlBcmdzOiBwYXJzZWRBcmdzLFxuICB9O1xuICBpZiAocGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0KSB7XG4gICAgc2VydmVyT3B0cy5rZWVwQWxpdmVUaW1lb3V0ID0gcGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgfVxuICBsZXQgc2VydmVyO1xuICB0cnkge1xuICAgIHNlcnZlciA9IGF3YWl0IGJhc2VTZXJ2ZXIoc2VydmVyT3B0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihcbiAgICAgIGBDb3VsZCBub3QgY29uZmlndXJlIEFwcGl1bSBzZXJ2ZXIuIEl0J3MgcG9zc2libGUgdGhhdCBhIGRyaXZlciBvciBwbHVnaW4gdHJpZWQgYCArXG4gICAgICAgIGB0byB1cGRhdGUgdGhlIHNlcnZlciBhbmQgZmFpbGVkLiBPcmlnaW5hbCBlcnJvcjogJHtlcnIubWVzc2FnZX1gXG4gICAgKTtcbiAgICBsb2dnZXIuZGVidWcoZXJyLnN0YWNrKTtcbiAgICByZXR1cm4gcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgaWYgKHBhcnNlZEFyZ3MuYWxsb3dDb3JzKSB7XG4gICAgbG9nZ2VyLndhcm4oXG4gICAgICAnWW91IGhhdmUgZW5hYmxlZCBDT1JTIHJlcXVlc3RzIGZyb20gYW55IGhvc3QuIEJlIGNhcmVmdWwgbm90ICcgK1xuICAgICAgICAndG8gdmlzaXQgc2l0ZXMgd2hpY2ggY291bGQgbWFsaWNpb3VzbHkgdHJ5IHRvIHN0YXJ0IEFwcGl1bSAnICtcbiAgICAgICAgJ3Nlc3Npb25zIG9uIHlvdXIgbWFjaGluZSdcbiAgICApO1xuICB9XG4gIGFwcGl1bURyaXZlci5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIHRyeSB7XG4gICAgLy8gY29uZmlndXJlIGFzIG5vZGUgb24gZ3JpZCwgaWYgbmVjZXNzYXJ5XG4gICAgLy8gZmFsc3kgdmFsdWVzIHNob3VsZCBub3QgY2F1c2UgdGhpcyB0byBydW5cbiAgICBpZiAocGFyc2VkQXJncy5ub2RlY29uZmlnKSB7XG4gICAgICBhd2FpdCByZWdpc3Rlck5vZGUoXG4gICAgICAgIHBhcnNlZEFyZ3Mubm9kZWNvbmZpZyxcbiAgICAgICAgcGFyc2VkQXJncy5hZGRyZXNzLFxuICAgICAgICBwYXJzZWRBcmdzLnBvcnQsXG4gICAgICAgIHBhcnNlZEFyZ3MuYmFzZVBhdGhcbiAgICAgICk7XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBhd2FpdCBzZXJ2ZXIuY2xvc2UoKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cblxuICBmb3IgKGNvbnN0IHNpZ25hbCBvZiBbJ1NJR0lOVCcsICdTSUdURVJNJ10pIHtcbiAgICBwcm9jZXNzLm9uY2Uoc2lnbmFsLCBhc3luYyBmdW5jdGlvbiBvblNpZ25hbCgpIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBSZWNlaXZlZCAke3NpZ25hbH0gLSBzaHV0dGluZyBkb3duYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhcHBpdW1Ecml2ZXIuZGVsZXRlQWxsU2Vzc2lvbnMoe1xuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgIHJlYXNvbjogYFRoZSBwcm9jZXNzIGhhcyByZWNlaXZlZCAke3NpZ25hbH0gc2lnbmFsYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGUpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2dTZXJ2ZXJQb3J0KHBhcnNlZEFyZ3MuYWRkcmVzcywgcGFyc2VkQXJncy5wb3J0KTtcbiAgZHJpdmVyQ29uZmlnLnByaW50KCk7XG4gIHBsdWdpbkNvbmZpZy5wcmludChbLi4ucGx1Z2luQ2xhc3Nlcy52YWx1ZXMoKV0pO1xuXG4gIHJldHVybiBzZXJ2ZXI7XG59XG5cbi8vIE5PVEU6IHRoaXMgaXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdCBmb3IgYW55IHNjcmlwdHMgcmVmZXJlbmNpbmcgYG1haW4uanNgIGRpcmVjdGx5XG4vLyAobW9yZSBzcGVjaWZpY2FsbHksIGBidWlsZC9saWIvbWFpbi5qc2ApXG4vLyB0aGUgZXhlY3V0YWJsZSBpcyBub3cgYC4uL2luZGV4LmpzYCwgc28gdGhhdCBtb2R1bGUgd2lsbCB0eXBpY2FsbHkgYmUgYHJlcXVpcmUubWFpbmAuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgYXN5bmNpZnkobWFpbik7XG59XG5cbi8vIGV2ZXJ5dGhpbmcgYmVsb3cgaGVyZSBpcyBpbnRlbmRlZCB0byBiZSBhIHB1YmxpYyBBUEkuXG5leHBvcnQge3JlYWRDb25maWdGaWxlfSBmcm9tICcuL2NvbmZpZy1maWxlJztcbmV4cG9ydCB7ZmluYWxpemVTY2hlbWEsIGdldFNjaGVtYSwgdmFsaWRhdGV9IGZyb20gJy4vc2NoZW1hL3NjaGVtYSc7XG5leHBvcnQge21haW4sIGluaXQsIHJlc29sdmVBcHBpdW1Ib21lfTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuRHJpdmVyVHlwZX0gRHJpdmVyVHlwZVxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLlBsdWdpblR5cGV9IFBsdWdpblR5cGVcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5Ecml2ZXJDbGFzc30gRHJpdmVyQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5QbHVnaW5DbGFzc30gUGx1Z2luQ2xhc3NcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ2FwcGl1bS90eXBlcycpLldpdGhTZXJ2ZXJTdWJjb21tYW5kfSBXaXRoU2VydmVyU3ViY29tbWFuZFxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9leHRlbnNpb24nKS5Ecml2ZXJOYW1lTWFwfSBEcml2ZXJOYW1lTWFwXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2V4dGVuc2lvbicpLlBsdWdpbk5hbWVNYXB9IFBsdWdpbk5hbWVNYXBcbiAqL1xuXG4vKipcbiAqIExpdGVyYWxseSBhbiBlbXB0eSBvYmplY3RcbiAqIEB0eXBlZGVmIHsge30gfSBFeHRDb21tYW5kSW5pdFJlc3VsdFxuICovXG5cbi8qKlxuICogQHR5cGVkZWYgU2VydmVySW5pdERhdGFcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCcuL2FwcGl1bScpLkFwcGl1bURyaXZlcn0gYXBwaXVtRHJpdmVyIC0gVGhlIEFwcGl1bSBkcml2ZXJcbiAqIEBwcm9wZXJ0eSB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QYXJzZWRBcmdzfSBwYXJzZWRBcmdzIC0gVGhlIHBhcnNlZCBhcmd1bWVudHNcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtTZXJ2ZXJJbml0RGF0YSAmIGltcG9ydCgnLi9leHRlbnNpb24nKS5FeHRlbnNpb25Db25maWdzfSBTZXJ2ZXJJbml0UmVzdWx0XG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5BcmdzPFQ+fSBBcmdzXG4gKi9cblxuLyoqXG4gKiBAdGVtcGxhdGUgW1Q9V2l0aFNlcnZlclN1YmNvbW1hbmRdXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhcHBpdW0vdHlwZXMnKS5QYXJzZWRBcmdzPFQ+fSBQYXJzZWRBcmdzXG4gKi9cbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","names":["resolveAppiumHome","env","preflightChecks","args","throwInsteadOfExit","checkNodeOk","checkNpmOk","longStacktrace","require","async_trace_limit","showBuildInfo","process","exit","warnNodeDeprecations","validate","tmpDir","validateTmpDir","err","logger","error","message","red","logNonDefaultArgsWarning","info","inspect","logDefaultCapabilitiesWarning","caps","logStartupInfo","welcome","APPIUM_VER","appiumRev","getGitRev","showArgs","getNonDefaultServerArgs","_","size","isEmpty","defaultCapabilities","logServerPort","address","port","logMessage","getServerUpdaters","driverClasses","pluginClasses","compact","map","keys","getExtraMethodMap","reduce","klass","newMethodMap","areServerCommandArgs","subcommand","SERVER_SUBCOMMAND","init","appiumHome","adjustNodePath","driverConfig","pluginConfig","loadExtensions","parser","getParser","preConfigArgs","parseArgs","configResult","readConfigFile","configFile","errors","Error","filepath","reason","defaults","getDefaultsForSchema","serverArgs","defaultsDeep","config","server","showConfig","logsinkInit","logFilters","issues","rules","logFactory","loadSecureValuesPreprocessingRules","JSON","stringify","warn","util","pluralize","length","appiumDriver","AppiumDriver","parsedArgs","extensionCommandArgs","DRIVER_TYPE","runExtensionCommand","PLUGIN_TYPE","main","getActivePlugins","usePlugins","routeConfiguringFunction","makeRouter","getActiveDrivers","useDrivers","serverUpdaters","extraMethodMap","serverOpts","hostname","allowCors","basePath","cliArgs","keepAliveTimeout","baseServer","debug","stack","nodeconfig","registerNode","close","signal","once","onSignal","deleteAllSessions","force","e","print","values","module","asyncify"],"sources":["../../lib/main.js"],"sourcesContent":["#!/usr/bin/env node\n\nimport {init as logsinkInit} from './logsink'; // this import needs to come first since it sets up global npmlog\nimport logger from './logger'; // logger needs to remain second\n// @ts-ignore\nimport {routeConfiguringFunction as makeRouter, server as baseServer} from '@appium/base-driver';\nimport {logger as logFactory, util, env} from '@appium/support';\nimport {asyncify} from 'asyncbox';\nimport _ from 'lodash';\nimport {AppiumDriver} from './appium';\nimport {runExtensionCommand} from './cli/extension';\nimport {getParser} from './cli/parser';\nimport {\n APPIUM_VER,\n checkNodeOk,\n getGitRev,\n getNonDefaultServerArgs,\n showConfig,\n showBuildInfo,\n validateTmpDir,\n warnNodeDeprecations,\n checkNpmOk,\n} from './config';\nimport {readConfigFile} from './config-file';\nimport {loadExtensions, getActivePlugins, getActiveDrivers} from './extension';\nimport {DRIVER_TYPE, PLUGIN_TYPE, SERVER_SUBCOMMAND} from './constants';\nimport registerNode from './grid-register';\nimport {getDefaultsForSchema, validate} from './schema/schema';\nimport {inspect, adjustNodePath} from './utils';\n\nconst {resolveAppiumHome} = env;\n\n/**\n *\n * @param {ParsedArgs} args\n * @param {boolean} [throwInsteadOfExit]\n */\nasync function preflightChecks(args, throwInsteadOfExit = false) {\n try {\n checkNodeOk();\n await checkNpmOk();\n if (args.longStacktrace) {\n require('longjohn').async_trace_limit = -1;\n }\n if (args.showBuildInfo) {\n await showBuildInfo();\n process.exit(0);\n }\n warnNodeDeprecations();\n\n validate(args);\n\n if (args.tmpDir) {\n await validateTmpDir(args.tmpDir);\n }\n } catch (err) {\n logger.error(err.message.red);\n if (throwInsteadOfExit) {\n throw err;\n }\n\n process.exit(1);\n }\n}\n\n/**\n * @param {Args} args\n */\nfunction logNonDefaultArgsWarning(args) {\n logger.info('Non-default server args:');\n inspect(args);\n}\n\n/**\n * @param {Args['defaultCapabilities']} caps\n */\nfunction logDefaultCapabilitiesWarning(caps) {\n logger.info(\n 'Default capabilities, which will be added to each request ' +\n 'unless overridden by desired capabilities:'\n );\n inspect(caps);\n}\n\n/**\n * @param {ParsedArgs} args\n */\nasync function logStartupInfo(args) {\n let welcome = `Welcome to Appium v${APPIUM_VER}`;\n let appiumRev = await getGitRev();\n if (appiumRev) {\n welcome += ` (REV ${appiumRev})`;\n }\n logger.info(welcome);\n\n let showArgs = getNonDefaultServerArgs(args);\n if (_.size(showArgs)) {\n logNonDefaultArgsWarning(showArgs);\n }\n if (!_.isEmpty(args.defaultCapabilities)) {\n logDefaultCapabilitiesWarning(args.defaultCapabilities);\n }\n // TODO: bring back loglevel reporting below once logger is flushed out\n // logger.info('Console LogLevel: ' + logger.transports.console.level);\n // if (logger.transports.file) {\n // logger.info('File LogLevel: ' + logger.transports.file.level);\n // }\n}\n\n/**\n * Logs the address and port the server is listening on\n * @param {string} address - Address\n * @param {number} port - Port\n * @returns {void}\n */\nfunction logServerPort(address, port) {\n let logMessage = `Appium REST http interface listener started on ` + `${address}:${port}`;\n logger.info(logMessage);\n}\n\n/**\n * Gets a list of `updateServer` functions from all extensions\n * @param {DriverNameMap} driverClasses\n * @param {PluginNameMap} pluginClasses\n * @returns {import('@appium/types').UpdateServerCallback[]}\n */\nfunction getServerUpdaters(driverClasses, pluginClasses) {\n return _.compact(_.map([...driverClasses.keys(), ...pluginClasses.keys()], 'updateServer'));\n}\n\n/**\n * Makes a big `MethodMap` from all the little `MethodMap`s in the extensions\n * @param {DriverNameMap} driverClasses\n * @param {PluginNameMap} pluginClasses\n * @returns {import('@appium/types').MethodMap}\n */\nfunction getExtraMethodMap(driverClasses, pluginClasses) {\n return [...driverClasses.keys(), ...pluginClasses.keys()].reduce(\n (map, klass) => ({\n ...map,\n ...(klass.newMethodMap ?? {}),\n }),\n {}\n );\n}\n\n/**\n * @template [T=WithServerSubcommand]\n * @param {Args<T>} args\n * @returns {args is Args<WithServerSubcommand>}\n */\nfunction areServerCommandArgs(args) {\n return args.subcommand === SERVER_SUBCOMMAND;\n}\n\n/**\n * Initializes Appium, but does not start the server.\n *\n * Use this to get at the configuration schema.\n *\n * If `args` contains a non-empty `subcommand` which is not `server`, this function will return an empty object.\n *\n * @template [T=WithServerSubcommand]\n * @param {Args<T>} [args] - Partial args (progammatic usage only)\n * @returns {Promise<ServerInitResult | ExtCommandInitResult>}\n * @example\n * import {init, getSchema} from 'appium';\n * const options = {}; // config object\n * await init(options);\n * const schema = getSchema(); // entire config schema including plugins and drivers\n */\nasync function init(args) {\n const appiumHome = args?.appiumHome ?? (await resolveAppiumHome());\n\n adjustNodePath();\n\n const {driverConfig, pluginConfig} = await loadExtensions(appiumHome);\n\n const parser = getParser();\n let throwInsteadOfExit = false;\n /** @type {Args<T>} */\n let preConfigArgs;\n\n if (args) {\n // if we have a containing package instead of running as a CLI process,\n // that package might not appreciate us calling 'process.exit' willy-\n // nilly, so give it the option to have us throw instead of exit\n if (args.throwInsteadOfExit) {\n throwInsteadOfExit = true;\n // but remove it since it's not a real server arg per se\n delete args.throwInsteadOfExit;\n }\n preConfigArgs = {...args, subcommand: args.subcommand ?? SERVER_SUBCOMMAND};\n } else {\n // otherwise parse from CLI\n preConfigArgs = /** @type {Args<T>} */ (parser.parseArgs());\n }\n\n const configResult = await readConfigFile(preConfigArgs.configFile);\n\n if (!_.isEmpty(configResult.errors)) {\n throw new Error(\n `Errors in config file ${configResult.filepath}:\\n ${\n configResult.reason ?? configResult.errors\n }`\n );\n }\n\n // merge config and apply defaults.\n // the order of precendece is:\n // 1. command line args\n // 2. config file\n // 3. defaults from config file.\n if (areServerCommandArgs(preConfigArgs)) {\n const defaults = getDefaultsForSchema(false);\n\n /** @type {ParsedArgs} */\n const serverArgs = _.defaultsDeep(preConfigArgs, configResult.config?.server, defaults);\n\n if (preConfigArgs.showConfig) {\n showConfig(getNonDefaultServerArgs(preConfigArgs), configResult, defaults, serverArgs);\n return {};\n }\n\n await logsinkInit(serverArgs);\n\n if (serverArgs.logFilters) {\n const {issues, rules} = await logFactory.loadSecureValuesPreprocessingRules(\n serverArgs.logFilters\n );\n if (!_.isEmpty(issues)) {\n throw new Error(\n `The log filtering rules config '${serverArgs.logFilters}' has issues: ` +\n JSON.stringify(issues, null, 2)\n );\n }\n if (_.isEmpty(rules)) {\n logger.warn(\n `Found no log filtering rules in '${serverArgs.logFilters}'. Is that expected?`\n );\n } else {\n logger.info(\n `Loaded ${util.pluralize('filtering rule', rules.length, true)} from '${\n serverArgs.logFilters\n }'`\n );\n }\n }\n\n const appiumDriver = new AppiumDriver(serverArgs);\n // set the config on the umbrella driver so it can match drivers to caps\n appiumDriver.driverConfig = driverConfig;\n await preflightChecks(serverArgs, throwInsteadOfExit);\n\n return /** @type {ServerInitResult} */ ({\n appiumDriver,\n parsedArgs: serverArgs,\n driverConfig,\n pluginConfig,\n });\n } else {\n const extensionCommandArgs = /** @type {Args<import('appium/types').WithExtSubcommand>} */ (\n preConfigArgs\n );\n // if the user has requested the 'driver' CLI, don't run the normal server,\n // but instead pass control to the driver CLI\n if (preConfigArgs.subcommand === DRIVER_TYPE) {\n await runExtensionCommand(extensionCommandArgs, driverConfig);\n return {};\n }\n if (preConfigArgs.subcommand === PLUGIN_TYPE) {\n await runExtensionCommand(extensionCommandArgs, pluginConfig);\n return {};\n }\n /* istanbul ignore next */\n return {}; // should never happen\n }\n}\n\n/**\n * Initializes Appium's config. Starts server if appropriate and resolves the\n * server instance if so; otherwise resolves w/ `undefined`.\n * @template [T=WithServerSubcommand]\n * @param {Args<T>} [args] - Arguments from CLI or otherwise\n * @returns {Promise<import('@appium/types').AppiumServer|undefined>}\n */\nasync function main(args) {\n const {appiumDriver, parsedArgs, pluginConfig, driverConfig} = /** @type {ServerInitResult} */ (\n await init(args)\n );\n\n if (!appiumDriver || !parsedArgs || !pluginConfig || !driverConfig) {\n // if this branch is taken, we've run a different subcommand, so there's nothing\n // left to do here.\n return;\n }\n\n const pluginClasses = getActivePlugins(pluginConfig, parsedArgs.usePlugins);\n // set the active plugins on the umbrella driver so it can use them for commands\n appiumDriver.pluginClasses = pluginClasses;\n\n await logStartupInfo(parsedArgs);\n let routeConfiguringFunction = makeRouter(appiumDriver);\n\n const driverClasses = getActiveDrivers(driverConfig, parsedArgs.useDrivers);\n const serverUpdaters = getServerUpdaters(driverClasses, pluginClasses);\n const extraMethodMap = getExtraMethodMap(driverClasses, pluginClasses);\n\n /** @type {import('@appium/base-driver').ServerOpts} */\n const serverOpts = {\n routeConfiguringFunction,\n port: parsedArgs.port,\n hostname: parsedArgs.address,\n allowCors: parsedArgs.allowCors,\n basePath: parsedArgs.basePath,\n serverUpdaters,\n extraMethodMap,\n cliArgs: parsedArgs,\n };\n if (parsedArgs.keepAliveTimeout) {\n serverOpts.keepAliveTimeout = parsedArgs.keepAliveTimeout * 1000;\n }\n let server;\n try {\n server = await baseServer(serverOpts);\n } catch (err) {\n logger.error(\n `Could not configure Appium server. It's possible that a driver or plugin tried ` +\n `to update the server and failed. Original error: ${err.message}`\n );\n logger.debug(err.stack);\n return process.exit(1);\n }\n\n if (parsedArgs.allowCors) {\n logger.warn(\n 'You have enabled CORS requests from any host. Be careful not ' +\n 'to visit sites which could maliciously try to start Appium ' +\n 'sessions on your machine'\n );\n }\n appiumDriver.server = server;\n try {\n // configure as node on grid, if necessary\n // falsy values should not cause this to run\n if (parsedArgs.nodeconfig) {\n await registerNode(\n parsedArgs.nodeconfig,\n parsedArgs.address,\n parsedArgs.port,\n parsedArgs.basePath\n );\n }\n } catch (err) {\n await server.close();\n throw err;\n }\n\n for (const signal of ['SIGINT', 'SIGTERM']) {\n process.once(signal, async function onSignal() {\n logger.info(`Received ${signal} - shutting down`);\n try {\n await appiumDriver.deleteAllSessions({\n force: true,\n reason: `The process has received ${signal} signal`,\n });\n await server.close();\n process.exit(0);\n } catch (e) {\n logger.warn(e);\n process.exit(1);\n }\n });\n }\n\n logServerPort(parsedArgs.address, parsedArgs.port);\n driverConfig.print();\n pluginConfig.print([...pluginClasses.values()]);\n\n return server;\n}\n\n// NOTE: this is here for backwards compat for any scripts referencing `main.js` directly\n// (more specifically, `build/lib/main.js`)\n// the executable is now `../index.js`, so that module will typically be `require.main`.\nif (require.main === module) {\n asyncify(main);\n}\n\n// everything below here is intended to be a public API.\nexport {readConfigFile} from './config-file';\nexport {finalizeSchema, getSchema, validate} from './schema/schema';\nexport {main, init, resolveAppiumHome};\n\n/**\n * @typedef {import('@appium/types').DriverType} DriverType\n * @typedef {import('@appium/types').PluginType} PluginType\n * @typedef {import('@appium/types').DriverClass} DriverClass\n * @typedef {import('@appium/types').PluginClass} PluginClass\n * @typedef {import('appium/types').WithServerSubcommand} WithServerSubcommand\n * @typedef {import('./extension').DriverNameMap} DriverNameMap\n * @typedef {import('./extension').PluginNameMap} PluginNameMap\n */\n\n/**\n * Literally an empty object\n * @typedef { {} } ExtCommandInitResult\n */\n\n/**\n * @typedef ServerInitData\n * @property {import('./appium').AppiumDriver} appiumDriver - The Appium driver\n * @property {import('appium/types').ParsedArgs} parsedArgs - The parsed arguments\n */\n\n/**\n * @typedef {ServerInitData & import('./extension').ExtensionConfigs} ServerInitResult\n */\n\n/**\n * @template [T=WithServerSubcommand]\n * @typedef {import('appium/types').Args<T>} Args\n */\n\n/**\n * @template [T=WithServerSubcommand]\n * @typedef {import('appium/types').ParsedArgs<T>} ParsedArgs\n */\n"],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -11,6 +9,8 @@ require("source-map-support/register");
|
|
|
11
9
|
|
|
12
10
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
11
|
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
14
|
const APPIUM_CONFIG_SCHEMA_ID = 'appium.json';
|
|
15
15
|
exports.APPIUM_CONFIG_SCHEMA_ID = APPIUM_CONFIG_SCHEMA_ID;
|
|
16
16
|
const SERVER_PROP_NAME = 'server';
|
|
@@ -116,4 +116,4 @@ class ArgSpec {
|
|
|
116
116
|
}
|
|
117
117
|
|
|
118
118
|
exports.ArgSpec = ArgSpec;
|
|
119
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBUFBJVU1fQ09ORklHX1NDSEVNQV9JRCIsIlNFUlZFUl9QUk9QX05BTUUiLCJTQ0hFTUFfSURfUkVHRVhQIiwiUFJPUEVSVElFUyIsIkFyZ1NwZWMiLCJuYW1lIiwiZXh0VHlwZSIsImV4dE5hbWUiLCJyZWYiLCJhcmciLCJkZXN0IiwicmF3RGVzdCIsImRlZmF1bHRWYWx1ZSIsImNvbnN0cnVjdG9yIiwidG9BcmciLCJ0b1NjaGVtYVJlZiIsIl8iLCJjYW1lbENhc2UiLCJkZXN0S2V5cGF0aCIsImpvaW4iLCJiYXNlUmVmIiwidG9TY2hlbWFCYXNlUmVmIiwidG9Ob3JtYWxpemVkRXh0TmFtZSIsInByb3Blck5hbWUiLCJrZWJhYkNhc2UiLCJyZXBsYWNlIiwiZXh0ZW5zaW9uSW5mb0Zyb21Sb290U2NoZW1hSWQiLCJzY2hlbWFJZCIsIm1hdGNoZXMiLCJtYXRjaCIsImdyb3VwcyIsIm5vcm1hbGl6ZWRFeHROYW1lIiwiY3JlYXRlIiwib3B0cyIsIk9iamVjdCIsImZyZWV6ZSIsInRvU3RyaW5nIiwic3RyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3NjaGVtYS9hcmctc3BlYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIFRoZSBvcmlnaW5hbCBJRCBvZiB0aGUgQXBwaXVtIGNvbmZpZyBzY2hlbWEuXG4gKiBXZSB1c2UgdGhpcyBpbiB0aGUgQ0xJIHRvIGNvbnZlcnQgaXQgdG8gYGFyZ3BhcnNlYCBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQgPSAnYXBwaXVtLmpzb24nO1xuXG4vKipcbiAqIFRoZSBzY2hlbWEgcHJvcCBjb250YWluaW5nIHNlcnZlci1yZWxhdGVkIG9wdGlvbnMuIEV2ZXJ5dGhpbmcgaW4gaGVyZVxuICogaXMgXCJuYXRpdmVcIiB0byBBcHBpdW0uXG4gKiBVc2VkIGJ5IHtAbGluayBmbGF0dGVuU2NoZW1hfSBmb3IgdHJhbnNmb3JtaW5nIHRoZSBzY2hlbWEgaW50byBDTEkgYXJncy5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9QUk9QX05BTUUgPSAnc2VydmVyJztcblxuLyoqXG4gKiBVc2VkIHRvIHBhcnNlIGV4dGVuc2lvbiBpbmZvIGZyb20gYSBzY2hlbWEgSUQuXG4gKi9cbmNvbnN0IFNDSEVNQV9JRF9SRUdFWFAgPSAvXig/PGV4dFR5cGU+Lis/KS0oPzxub3JtYWxpemVkRXh0TmFtZT4uKylcXC5qc29uJC87XG5cbi8qKlxuICogQXZvaWQgdHlwb3MgYnkgdXNpbmcgY29uc3RhbnRzIVxuICovXG5jb25zdCBQUk9QRVJUSUVTID0gJ3Byb3BlcnRpZXMnO1xuXG4vKipcbiAqIEFuIGBBcmdTcGVjYCBpcyBhIGNsYXNzIHJlcHJlc2VudGluZyBtZXRhZGF0YSBhYm91dCBhbiBhcmd1bWVudCAob3IgY29uZmlnXG4gKiBvcHRpb24pIHVzZWQgZm9yIGNyb3NzLXJlZmVyZW5jaW5nLlxuICpcbiAqIFRoaXMgY2xhc3MgaGFzIG5vIGluc3RhbmNlIG1ldGhvZHMsIGFuZCBpcyBiYXNpY2FsbHkganVzdCBhIHJlYWQtb25seSBcInN0cnVjdFwiLlxuICogQHRlbXBsYXRlIERcbiAqL1xuZXhwb3J0IGNsYXNzIEFyZ1NwZWMge1xuICAvKipcbiAgICogVGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBhcmd1bWVudC4gQ29ycmVzcG9uZHMgdG8ga2V5IGluIHNjaGVtYSdzIGBwcm9wZXJ0aWVzYCBwcm9wLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogVGhlIGBFeHRlbnNpb25UeXBlYCBvZiB0aGUgYXJndW1lbnQuIFRoaXMgd2lsbCBiZSBzZXQgaWYgdGhlIGFyZyBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uO1xuICAgKiBvdGhlcndpc2UgaXQgd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICogQHR5cGUge0V4dGVuc2lvblR5cGV8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0VHlwZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiwgaWYgdGhpcyBhcmd1bWVudCBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uLlxuICAgKlxuICAgKiBPdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gICAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0TmFtZTtcblxuICAvKipcbiAgICogVGhlIHNjaGVtYSBJRCAoYCRpZGApIGZvciB0aGUgYXJndW1lbnQuICBUaGlzIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZCwgYW5kIGFueSB1c2VyLXByb3ZpZGVkIGAkaWRgcyB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgcmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0xJIGFyZ3VtZW50LCBzYW5zIGxlYWRpbmcgZGFzaGVzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgYXJnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBrZXlwYXRoIGZvciB0aGUgYXJndW1lbnQgYWZ0ZXIgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXJzZWQuXG4gICAqXG4gICAqIFR5cGljYWxseSB0aGlzIGlzIGNhbWVsQ2FzZWQuICBJZiB0aGUgYXJnIGNhbWUgZnJvbSBhbiBleHRlbnNpb24sIGl0IHdpbGwgYmUgcHJlZml4ZWQgd2l0aFxuICAgKiBgPGV4dFR5cGU+LjxleHROYW1lPi5gXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBkZXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgQXJnU3BlYy5kZXN0fSBidXQgd2l0aG91dCB0aGUgbGVhZGluZyBgPGV4dFR5cGU+LjxleHROYW1lPi5gIHByZWZpeC5cbiAgICovXG4gIHJhd0Rlc3Q7XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgYXJndW1lbnQgaXMsIGFzIHNwZWNpZmllZCBieSB0aGVcbiAgICogYGRlZmF1bHRgIHByb3BlcnR5IG9mIHRoZSBzY2hlbWEuXG4gICAqIEB0eXBlIHtEfHVuZGVmaW5lZH1cbiAgICovXG4gIGRlZmF1bHRWYWx1ZTtcblxuICAvKipcbiAgICogQnVpbGRzIHNvbWUgY29tcHV0ZWQgZmllbGRzIGFuZCBhc3NpZ25zIHRoZW0gdG8gdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBVbmRlZmluZWQgcHJvcGVydGllcyBhcmUgbm90IGFzc2lnbmVkLlxuICAgKlxuICAgKiBUaGUgX2NvbnN0cnVjdG9yXyBpcyBwcml2YXRlLiBVc2Uge0BsaW5rIEFyZ1NwZWMuY3JlYXRlfSBpbnN0ZWFkLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge0FyZ1NwZWNPcHRpb25zPEQ+fSBbb3B0c11cbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWUsIHtleHRUeXBlLCBleHROYW1lLCBkZXN0LCBkZWZhdWx0VmFsdWV9ID0ge30pIHtcbiAgICAvLyB3ZSBtdXN0IG5vcm1hbGl6ZSB0aGUgZXh0ZW5zaW9uIG5hbWUgdG8gZml0IGludG8gb3VyIGNvbnZlbnRpb24gZm9yIENMSVxuICAgIC8vIGFyZ3MuXG4gICAgY29uc3QgYXJnID0gQXJnU3BlYy50b0FyZyhuYW1lLCBleHRUeXBlLCBleHROYW1lKTtcblxuICAgIGNvbnN0IHJlZiA9IEFyZ1NwZWMudG9TY2hlbWFSZWYobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSk7XG5cbiAgICAvLyBpZiBubyBleHBsaWNpdCBgZGVzdGAgcHJvdmlkZWQsIGp1c3QgY2FtZWxDYXNlIHRoZSBuYW1lIHRvIGF2b2lkIG5lZWRpbmdcbiAgICAvLyB0byB1c2UgYnJhY2tldCBzeW50YXggd2hlbiBhY2Nlc3NpbmcgcHJvcHMgb24gdGhlIHBhcnNlZCBhcmdzIG9iamVjdC5cbiAgICBjb25zdCByYXdEZXN0ID0gXy5jYW1lbENhc2UoZGVzdCA/PyBuYW1lKTtcblxuICAgIGNvbnN0IGRlc3RLZXlwYXRoID0gZXh0VHlwZSAmJiBleHROYW1lID8gW2V4dFR5cGUsIGV4dE5hbWUsIHJhd0Rlc3RdLmpvaW4oJy4nKSA6IHJhd0Rlc3Q7XG5cbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuZXh0VHlwZSA9IGV4dFR5cGU7XG4gICAgdGhpcy5leHROYW1lID0gZXh0TmFtZTtcbiAgICB0aGlzLmFyZyA9IGFyZztcbiAgICB0aGlzLmRlc3QgPSBkZXN0S2V5cGF0aDtcbiAgICB0aGlzLnJlZiA9IHJlZjtcbiAgICB0aGlzLnJhd0Rlc3QgPSByYXdEZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2NoZW1hIElEIChgJGlkYCkgZm9yIHRoZSAqKmFyZ3VtZW50KiogZ2l2ZW4gdGhlIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIElmIHlvdSBuZWVkIHRoZSBcInJvb3RcIiBvciBcImJhc2VcIiBzY2hlbWEgSUQsIHVzZSB7QGxpbmsgQXJnU3BlYy50b1NjaGVtYUJhc2VSZWZ9IGluc3RlYWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQXJndW1lbnQgbmFtZVxuICAgKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IFtleHRUeXBlXSAtIEV4dGVuc2lvbiB0eXBlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXh0TmFtZV0gLSBFeHRlbnNpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBTY2hlbWEgSURcbiAgICovXG4gIHN0YXRpYyB0b1NjaGVtYVJlZihuYW1lLCBleHRUeXBlLCBleHROYW1lKSB7XG4gICAgY29uc3QgYmFzZVJlZiA9IEFyZ1NwZWMudG9TY2hlbWFCYXNlUmVmKGV4dFR5cGUsIGV4dE5hbWUpO1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBbYCR7YmFzZVJlZn0jYCwgUFJPUEVSVElFUywgbmFtZV0uam9pbignLycpO1xuICAgIH1cbiAgICByZXR1cm4gW2Ake2Jhc2VSZWZ9I2AsIFBST1BFUlRJRVMsIFNFUlZFUl9QUk9QX05BTUUsIFBST1BFUlRJRVMsIG5hbWVdLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBJRCBmb3IgYW4gZXh0ZW5zaW9uIG9yIHRoZSBiYXNlIHNjaGVtYSBJRC5cbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICovXG4gIHN0YXRpYyB0b1NjaGVtYUJhc2VSZWYoZXh0VHlwZSwgZXh0TmFtZSkge1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtleHRUeXBlfS0ke0FyZ1NwZWMudG9Ob3JtYWxpemVkRXh0TmFtZShleHROYW1lKX0uanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBBUFBJVU1fQ09ORklHX1NDSEVNQV9JRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHVuaXF1ZSBJRCBmb3IgdGhlIGFyZ3VtZW50IGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gVW5pcXVlIElEXG4gICAqL1xuICBzdGF0aWMgdG9BcmcobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSkge1xuICAgIGNvbnN0IHByb3Blck5hbWUgPSBfLmtlYmFiQ2FzZShuYW1lLnJlcGxhY2UoL14tLT8vLCAnJykpO1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBbZXh0VHlwZSwgXy5rZWJhYkNhc2UoZXh0TmFtZSksIHByb3Blck5hbWVdLmpvaW4oJy0nKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3Blck5hbWU7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBhIHJhdyBleHRlbnNpb24gbmFtZSAobm90IGluY2x1ZGluZyB0aGUgdHlwZSkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gTm9ybWFsaXplZCBleHRlbnNpb24gbmFtZVxuICAgKi9cbiAgc3RhdGljIHRvTm9ybWFsaXplZEV4dE5hbWUoZXh0TmFtZSkge1xuICAgIHJldHVybiBfLmtlYmFiQ2FzZShleHROYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGdpdmVuIHRoZSByb290IElEIG9mIGEgc2NoZW1hIGZvciBhbiBleHRlbnNpb24gKGA8ZXh0VHlwZT4tPG5vcm1hbGl6ZWRFeHROYW1lPi5qc29uYCkgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgZXh0ZW5zaW9uIHR5cGUgYW5kIHRoZSBfbm9ybWFsaXplZF8gZXh0ZW5zaW9uIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFJZCAtIFJvb3Qgc2NoZW1hIElEXG4gICAqIEByZXR1cm5zIHsge2V4dFR5cGU/OiBFeHRlbnNpb25UeXBlLCBub3JtYWxpemVkRXh0TmFtZT86IHN0cmluZ30gfVxuICAgKi9cbiAgc3RhdGljIGV4dGVuc2lvbkluZm9Gcm9tUm9vdFNjaGVtYUlkKHNjaGVtYUlkKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHNjaGVtYUlkLm1hdGNoKFNDSEVNQV9JRF9SRUdFWFApO1xuICAgIGlmIChtYXRjaGVzPy5ncm91cHMpIHtcbiAgICAgIGNvbnN0IHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX0gPVxuICAgICAgICAvKiogQHR5cGUgeyB7ZXh0VHlwZTogRXh0ZW5zaW9uVHlwZSwgbm9ybWFsaXplZEV4dE5hbWU6IHN0cmluZ30gfSAqLyAobWF0Y2hlcy5ncm91cHMpO1xuICAgICAgcmV0dXJuIHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGBBcmdTcGVjYFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBjYW5vbmljYWwgbmFtZSBvZiB0aGUgYXJndW1lbnQuIENvcnJlc3BvbmRzIHRvIGEga2V5IGluIGEgc2NoZW1hJ3NcbiAgICogYHByb3BlcnRpZXNgIHByb3BlcnR5LlxuICAgKiBAdGVtcGxhdGUgRFxuICAgKiBAcGFyYW0ge0FyZ1NwZWNPcHRpb25zPEQ+fSBbb3B0c10gLSBPcHRpb25zXG4gICAqIEByZXR1cm5zIHtSZWFkb25seTxBcmdTcGVjPn1cbiAgICovXG4gIHN0YXRpYyBjcmVhdGUobmFtZSwgb3B0cykge1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKG5ldyBBcmdTcGVjKG5hbWUsIG9wdHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpbmcgcmVwcmVzZW50YXRpb24sIHVzZWZ1bCBmb3IgZGVidWdnaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0b1N0cmluZygpIHtcbiAgICBsZXQgc3RyID0gYFtBcmdTcGVjXSAke3RoaXMubmFtZX0gKCR7dGhpcy5yZWZ9KWA7XG4gICAgaWYgKHRoaXMuZXh0VHlwZSAmJiB0aGlzLmV4dE5hbWUpIHtcbiAgICAgIHN0ciArPSBgIChleHQ6ICR7dGhpcy5leHRUeXBlfS8ke3RoaXMuZXh0TmFtZX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBBcmdTcGVjLmNyZWF0ZX1cbiAqIEB0ZW1wbGF0ZSBEXG4gKiBAdHlwZWRlZiBBcmdTcGVjT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtleHROYW1lXVxuICogQHByb3BlcnR5IHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVzdF1cbiAqIEBwcm9wZXJ0eSB7RH0gW2RlZmF1bHRWYWx1ZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFNTyxNQUFNQSx1QkFBdUIsR0FBRyxhQUFoQzs7QUFPQSxNQUFNQyxnQkFBZ0IsR0FBRyxRQUF6Qjs7QUFLUCxNQUFNQyxnQkFBZ0IsR0FBRyxrREFBekI7QUFLQSxNQUFNQyxVQUFVLEdBQUcsWUFBbkI7O0FBU08sTUFBTUMsT0FBTixDQUFjO0VBS25CQyxJQUFJO0VBT0pDLE9BQU87RUFRUEMsT0FBTztFQU9QQyxHQUFHO0VBTUhDLEdBQUc7RUFTSEMsSUFBSTtFQUtKQyxPQUFPO0VBT1BDLFlBQVk7O0VBWVpDLFdBQVcsQ0FBQ1IsSUFBRCxFQUFPO0lBQUNDLE9BQUQ7SUFBVUMsT0FBVjtJQUFtQkcsSUFBbkI7SUFBeUJFO0VBQXpCLElBQXlDLEVBQWhELEVBQW9EO0lBRzdELE1BQU1ILEdBQUcsR0FBR0wsT0FBTyxDQUFDVSxLQUFSLENBQWNULElBQWQsRUFBb0JDLE9BQXBCLEVBQTZCQyxPQUE3QixDQUFaO0lBRUEsTUFBTUMsR0FBRyxHQUFHSixPQUFPLENBQUNXLFdBQVIsQ0FBb0JWLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQ0MsT0FBbkMsQ0FBWjs7SUFJQSxNQUFNSSxPQUFPLEdBQUdLLGVBQUEsQ0FBRUMsU0FBRixDQUFZUCxJQUFJLElBQUlMLElBQXBCLENBQWhCOztJQUVBLE1BQU1hLFdBQVcsR0FBR1osT0FBTyxJQUFJQyxPQUFYLEdBQXFCLENBQUNELE9BQUQsRUFBVUMsT0FBVixFQUFtQkksT0FBbkIsRUFBNEJRLElBQTVCLENBQWlDLEdBQWpDLENBQXJC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
|
|
119
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBUFBJVU1fQ09ORklHX1NDSEVNQV9JRCIsIlNFUlZFUl9QUk9QX05BTUUiLCJTQ0hFTUFfSURfUkVHRVhQIiwiUFJPUEVSVElFUyIsIkFyZ1NwZWMiLCJuYW1lIiwiZXh0VHlwZSIsImV4dE5hbWUiLCJyZWYiLCJhcmciLCJkZXN0IiwicmF3RGVzdCIsImRlZmF1bHRWYWx1ZSIsImNvbnN0cnVjdG9yIiwidG9BcmciLCJ0b1NjaGVtYVJlZiIsIl8iLCJjYW1lbENhc2UiLCJkZXN0S2V5cGF0aCIsImpvaW4iLCJiYXNlUmVmIiwidG9TY2hlbWFCYXNlUmVmIiwidG9Ob3JtYWxpemVkRXh0TmFtZSIsInByb3Blck5hbWUiLCJrZWJhYkNhc2UiLCJyZXBsYWNlIiwiZXh0ZW5zaW9uSW5mb0Zyb21Sb290U2NoZW1hSWQiLCJzY2hlbWFJZCIsIm1hdGNoZXMiLCJtYXRjaCIsImdyb3VwcyIsIm5vcm1hbGl6ZWRFeHROYW1lIiwiY3JlYXRlIiwib3B0cyIsIk9iamVjdCIsImZyZWV6ZSIsInRvU3RyaW5nIiwic3RyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL3NjaGVtYS9hcmctc3BlYy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIFRoZSBvcmlnaW5hbCBJRCBvZiB0aGUgQXBwaXVtIGNvbmZpZyBzY2hlbWEuXG4gKiBXZSB1c2UgdGhpcyBpbiB0aGUgQ0xJIHRvIGNvbnZlcnQgaXQgdG8gYGFyZ3BhcnNlYCBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQgPSAnYXBwaXVtLmpzb24nO1xuXG4vKipcbiAqIFRoZSBzY2hlbWEgcHJvcCBjb250YWluaW5nIHNlcnZlci1yZWxhdGVkIG9wdGlvbnMuIEV2ZXJ5dGhpbmcgaW4gaGVyZVxuICogaXMgXCJuYXRpdmVcIiB0byBBcHBpdW0uXG4gKiBVc2VkIGJ5IHtAbGluayBmbGF0dGVuU2NoZW1hfSBmb3IgdHJhbnNmb3JtaW5nIHRoZSBzY2hlbWEgaW50byBDTEkgYXJncy5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9QUk9QX05BTUUgPSAnc2VydmVyJztcblxuLyoqXG4gKiBVc2VkIHRvIHBhcnNlIGV4dGVuc2lvbiBpbmZvIGZyb20gYSBzY2hlbWEgSUQuXG4gKi9cbmNvbnN0IFNDSEVNQV9JRF9SRUdFWFAgPSAvXig/PGV4dFR5cGU+Lis/KS0oPzxub3JtYWxpemVkRXh0TmFtZT4uKylcXC5qc29uJC87XG5cbi8qKlxuICogQXZvaWQgdHlwb3MgYnkgdXNpbmcgY29uc3RhbnRzIVxuICovXG5jb25zdCBQUk9QRVJUSUVTID0gJ3Byb3BlcnRpZXMnO1xuXG4vKipcbiAqIEFuIGBBcmdTcGVjYCBpcyBhIGNsYXNzIHJlcHJlc2VudGluZyBtZXRhZGF0YSBhYm91dCBhbiBhcmd1bWVudCAob3IgY29uZmlnXG4gKiBvcHRpb24pIHVzZWQgZm9yIGNyb3NzLXJlZmVyZW5jaW5nLlxuICpcbiAqIFRoaXMgY2xhc3MgaGFzIG5vIGluc3RhbmNlIG1ldGhvZHMsIGFuZCBpcyBiYXNpY2FsbHkganVzdCBhIHJlYWQtb25seSBcInN0cnVjdFwiLlxuICogQHRlbXBsYXRlIERcbiAqL1xuZXhwb3J0IGNsYXNzIEFyZ1NwZWMge1xuICAvKipcbiAgICogVGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBhcmd1bWVudC4gQ29ycmVzcG9uZHMgdG8ga2V5IGluIHNjaGVtYSdzIGBwcm9wZXJ0aWVzYCBwcm9wLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogVGhlIGBFeHRlbnNpb25UeXBlYCBvZiB0aGUgYXJndW1lbnQuIFRoaXMgd2lsbCBiZSBzZXQgaWYgdGhlIGFyZyBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uO1xuICAgKiBvdGhlcndpc2UgaXQgd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICogQHR5cGUge0V4dGVuc2lvblR5cGV8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0VHlwZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiwgaWYgdGhpcyBhcmd1bWVudCBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uLlxuICAgKlxuICAgKiBPdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gICAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0TmFtZTtcblxuICAvKipcbiAgICogVGhlIHNjaGVtYSBJRCAoYCRpZGApIGZvciB0aGUgYXJndW1lbnQuICBUaGlzIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZCwgYW5kIGFueSB1c2VyLXByb3ZpZGVkIGAkaWRgcyB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgcmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0xJIGFyZ3VtZW50LCBzYW5zIGxlYWRpbmcgZGFzaGVzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgYXJnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBrZXlwYXRoIGZvciB0aGUgYXJndW1lbnQgYWZ0ZXIgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXJzZWQuXG4gICAqXG4gICAqIFR5cGljYWxseSB0aGlzIGlzIGNhbWVsQ2FzZWQuICBJZiB0aGUgYXJnIGNhbWUgZnJvbSBhbiBleHRlbnNpb24sIGl0IHdpbGwgYmUgcHJlZml4ZWQgd2l0aFxuICAgKiBgPGV4dFR5cGU+LjxleHROYW1lPi5gXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBkZXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgQXJnU3BlYy5kZXN0fSBidXQgd2l0aG91dCB0aGUgbGVhZGluZyBgPGV4dFR5cGU+LjxleHROYW1lPi5gIHByZWZpeC5cbiAgICovXG4gIHJhd0Rlc3Q7XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgYXJndW1lbnQgaXMsIGFzIHNwZWNpZmllZCBieSB0aGVcbiAgICogYGRlZmF1bHRgIHByb3BlcnR5IG9mIHRoZSBzY2hlbWEuXG4gICAqIEB0eXBlIHtEfHVuZGVmaW5lZH1cbiAgICovXG4gIGRlZmF1bHRWYWx1ZTtcblxuICAvKipcbiAgICogQnVpbGRzIHNvbWUgY29tcHV0ZWQgZmllbGRzIGFuZCBhc3NpZ25zIHRoZW0gdG8gdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBVbmRlZmluZWQgcHJvcGVydGllcyBhcmUgbm90IGFzc2lnbmVkLlxuICAgKlxuICAgKiBUaGUgX2NvbnN0cnVjdG9yXyBpcyBwcml2YXRlLiBVc2Uge0BsaW5rIEFyZ1NwZWMuY3JlYXRlfSBpbnN0ZWFkLlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0ge0FyZ1NwZWNPcHRpb25zPEQ+fSBbb3B0c11cbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWUsIHtleHRUeXBlLCBleHROYW1lLCBkZXN0LCBkZWZhdWx0VmFsdWV9ID0ge30pIHtcbiAgICAvLyB3ZSBtdXN0IG5vcm1hbGl6ZSB0aGUgZXh0ZW5zaW9uIG5hbWUgdG8gZml0IGludG8gb3VyIGNvbnZlbnRpb24gZm9yIENMSVxuICAgIC8vIGFyZ3MuXG4gICAgY29uc3QgYXJnID0gQXJnU3BlYy50b0FyZyhuYW1lLCBleHRUeXBlLCBleHROYW1lKTtcblxuICAgIGNvbnN0IHJlZiA9IEFyZ1NwZWMudG9TY2hlbWFSZWYobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSk7XG5cbiAgICAvLyBpZiBubyBleHBsaWNpdCBgZGVzdGAgcHJvdmlkZWQsIGp1c3QgY2FtZWxDYXNlIHRoZSBuYW1lIHRvIGF2b2lkIG5lZWRpbmdcbiAgICAvLyB0byB1c2UgYnJhY2tldCBzeW50YXggd2hlbiBhY2Nlc3NpbmcgcHJvcHMgb24gdGhlIHBhcnNlZCBhcmdzIG9iamVjdC5cbiAgICBjb25zdCByYXdEZXN0ID0gXy5jYW1lbENhc2UoZGVzdCA/PyBuYW1lKTtcblxuICAgIGNvbnN0IGRlc3RLZXlwYXRoID0gZXh0VHlwZSAmJiBleHROYW1lID8gW2V4dFR5cGUsIGV4dE5hbWUsIHJhd0Rlc3RdLmpvaW4oJy4nKSA6IHJhd0Rlc3Q7XG5cbiAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuZXh0VHlwZSA9IGV4dFR5cGU7XG4gICAgdGhpcy5leHROYW1lID0gZXh0TmFtZTtcbiAgICB0aGlzLmFyZyA9IGFyZztcbiAgICB0aGlzLmRlc3QgPSBkZXN0S2V5cGF0aDtcbiAgICB0aGlzLnJlZiA9IHJlZjtcbiAgICB0aGlzLnJhd0Rlc3QgPSByYXdEZXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2NoZW1hIElEIChgJGlkYCkgZm9yIHRoZSAqKmFyZ3VtZW50KiogZ2l2ZW4gdGhlIHBhcmFtZXRlcnMuXG4gICAqXG4gICAqIElmIHlvdSBuZWVkIHRoZSBcInJvb3RcIiBvciBcImJhc2VcIiBzY2hlbWEgSUQsIHVzZSB7QGxpbmsgQXJnU3BlYy50b1NjaGVtYUJhc2VSZWZ9IGluc3RlYWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIC0gQXJndW1lbnQgbmFtZVxuICAgKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IFtleHRUeXBlXSAtIEV4dGVuc2lvbiB0eXBlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXh0TmFtZV0gLSBFeHRlbnNpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBTY2hlbWEgSURcbiAgICovXG4gIHN0YXRpYyB0b1NjaGVtYVJlZihuYW1lLCBleHRUeXBlLCBleHROYW1lKSB7XG4gICAgY29uc3QgYmFzZVJlZiA9IEFyZ1NwZWMudG9TY2hlbWFCYXNlUmVmKGV4dFR5cGUsIGV4dE5hbWUpO1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBbYCR7YmFzZVJlZn0jYCwgUFJPUEVSVElFUywgbmFtZV0uam9pbignLycpO1xuICAgIH1cbiAgICByZXR1cm4gW2Ake2Jhc2VSZWZ9I2AsIFBST1BFUlRJRVMsIFNFUlZFUl9QUk9QX05BTUUsIFBST1BFUlRJRVMsIG5hbWVdLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBJRCBmb3IgYW4gZXh0ZW5zaW9uIG9yIHRoZSBiYXNlIHNjaGVtYSBJRC5cbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICovXG4gIHN0YXRpYyB0b1NjaGVtYUJhc2VSZWYoZXh0VHlwZSwgZXh0TmFtZSkge1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtleHRUeXBlfS0ke0FyZ1NwZWMudG9Ob3JtYWxpemVkRXh0TmFtZShleHROYW1lKX0uanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBBUFBJVU1fQ09ORklHX1NDSEVNQV9JRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHVuaXF1ZSBJRCBmb3IgdGhlIGFyZ3VtZW50IGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gVW5pcXVlIElEXG4gICAqL1xuICBzdGF0aWMgdG9BcmcobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSkge1xuICAgIGNvbnN0IHByb3Blck5hbWUgPSBfLmtlYmFiQ2FzZShuYW1lLnJlcGxhY2UoL14tLT8vLCAnJykpO1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBbZXh0VHlwZSwgXy5rZWJhYkNhc2UoZXh0TmFtZSksIHByb3Blck5hbWVdLmpvaW4oJy0nKTtcbiAgICB9XG4gICAgcmV0dXJuIHByb3Blck5hbWU7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBhIHJhdyBleHRlbnNpb24gbmFtZSAobm90IGluY2x1ZGluZyB0aGUgdHlwZSkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBleHROYW1lIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gTm9ybWFsaXplZCBleHRlbnNpb24gbmFtZVxuICAgKi9cbiAgc3RhdGljIHRvTm9ybWFsaXplZEV4dE5hbWUoZXh0TmFtZSkge1xuICAgIHJldHVybiBfLmtlYmFiQ2FzZShleHROYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGdpdmVuIHRoZSByb290IElEIG9mIGEgc2NoZW1hIGZvciBhbiBleHRlbnNpb24gKGA8ZXh0VHlwZT4tPG5vcm1hbGl6ZWRFeHROYW1lPi5qc29uYCkgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgZXh0ZW5zaW9uIHR5cGUgYW5kIHRoZSBfbm9ybWFsaXplZF8gZXh0ZW5zaW9uIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFJZCAtIFJvb3Qgc2NoZW1hIElEXG4gICAqIEByZXR1cm5zIHsge2V4dFR5cGU/OiBFeHRlbnNpb25UeXBlLCBub3JtYWxpemVkRXh0TmFtZT86IHN0cmluZ30gfVxuICAgKi9cbiAgc3RhdGljIGV4dGVuc2lvbkluZm9Gcm9tUm9vdFNjaGVtYUlkKHNjaGVtYUlkKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHNjaGVtYUlkLm1hdGNoKFNDSEVNQV9JRF9SRUdFWFApO1xuICAgIGlmIChtYXRjaGVzPy5ncm91cHMpIHtcbiAgICAgIGNvbnN0IHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX0gPVxuICAgICAgICAvKiogQHR5cGUgeyB7ZXh0VHlwZTogRXh0ZW5zaW9uVHlwZSwgbm9ybWFsaXplZEV4dE5hbWU6IHN0cmluZ30gfSAqLyAobWF0Y2hlcy5ncm91cHMpO1xuICAgICAgcmV0dXJuIHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGBBcmdTcGVjYFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBjYW5vbmljYWwgbmFtZSBvZiB0aGUgYXJndW1lbnQuIENvcnJlc3BvbmRzIHRvIGEga2V5IGluIGEgc2NoZW1hJ3NcbiAgICogYHByb3BlcnRpZXNgIHByb3BlcnR5LlxuICAgKiBAdGVtcGxhdGUgRFxuICAgKiBAcGFyYW0ge0FyZ1NwZWNPcHRpb25zPEQ+fSBbb3B0c10gLSBPcHRpb25zXG4gICAqIEByZXR1cm5zIHtSZWFkb25seTxBcmdTcGVjPn1cbiAgICovXG4gIHN0YXRpYyBjcmVhdGUobmFtZSwgb3B0cykge1xuICAgIHJldHVybiBPYmplY3QuZnJlZXplKG5ldyBBcmdTcGVjKG5hbWUsIG9wdHMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpbmcgcmVwcmVzZW50YXRpb24sIHVzZWZ1bCBmb3IgZGVidWdnaW5nXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICB0b1N0cmluZygpIHtcbiAgICBsZXQgc3RyID0gYFtBcmdTcGVjXSAke3RoaXMubmFtZX0gKCR7dGhpcy5yZWZ9KWA7XG4gICAgaWYgKHRoaXMuZXh0VHlwZSAmJiB0aGlzLmV4dE5hbWUpIHtcbiAgICAgIHN0ciArPSBgIChleHQ6ICR7dGhpcy5leHRUeXBlfS8ke3RoaXMuZXh0TmFtZX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBBcmdTcGVjLmNyZWF0ZX1cbiAqIEB0ZW1wbGF0ZSBEXG4gKiBAdHlwZWRlZiBBcmdTcGVjT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtleHROYW1lXVxuICogQHByb3BlcnR5IHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVzdF1cbiAqIEBwcm9wZXJ0eSB7RH0gW2RlZmF1bHRWYWx1ZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7QUFNTyxNQUFNQSx1QkFBdUIsR0FBRyxhQUFoQzs7QUFPQSxNQUFNQyxnQkFBZ0IsR0FBRyxRQUF6Qjs7QUFLUCxNQUFNQyxnQkFBZ0IsR0FBRyxrREFBekI7QUFLQSxNQUFNQyxVQUFVLEdBQUcsWUFBbkI7O0FBU08sTUFBTUMsT0FBTixDQUFjO0VBS25CQyxJQUFJO0VBT0pDLE9BQU87RUFRUEMsT0FBTztFQU9QQyxHQUFHO0VBTUhDLEdBQUc7RUFTSEMsSUFBSTtFQUtKQyxPQUFPO0VBT1BDLFlBQVk7O0VBWVpDLFdBQVcsQ0FBQ1IsSUFBRCxFQUFPO0lBQUNDLE9BQUQ7SUFBVUMsT0FBVjtJQUFtQkcsSUFBbkI7SUFBeUJFO0VBQXpCLElBQXlDLEVBQWhELEVBQW9EO0lBRzdELE1BQU1ILEdBQUcsR0FBR0wsT0FBTyxDQUFDVSxLQUFSLENBQWNULElBQWQsRUFBb0JDLE9BQXBCLEVBQTZCQyxPQUE3QixDQUFaO0lBRUEsTUFBTUMsR0FBRyxHQUFHSixPQUFPLENBQUNXLFdBQVIsQ0FBb0JWLElBQXBCLEVBQTBCQyxPQUExQixFQUFtQ0MsT0FBbkMsQ0FBWjs7SUFJQSxNQUFNSSxPQUFPLEdBQUdLLGVBQUEsQ0FBRUMsU0FBRixDQUFZUCxJQUFJLElBQUlMLElBQXBCLENBQWhCOztJQUVBLE1BQU1hLFdBQVcsR0FBR1osT0FBTyxJQUFJQyxPQUFYLEdBQXFCLENBQUNELE9BQUQsRUFBVUMsT0FBVixFQUFtQkksT0FBbkIsRUFBNEJRLElBQTVCLENBQWlDLEdBQWpDLENBQXJC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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arg-spec.js","names":["APPIUM_CONFIG_SCHEMA_ID","SERVER_PROP_NAME","SCHEMA_ID_REGEXP","PROPERTIES","ArgSpec","name","extType","extName","ref","arg","dest","rawDest","defaultValue","constructor","toArg","toSchemaRef","_","camelCase","destKeypath","join","baseRef","toSchemaBaseRef","toNormalizedExtName","properName","kebabCase","replace","extensionInfoFromRootSchemaId","schemaId","matches","match","groups","normalizedExtName","create","opts","Object","freeze","toString","str"],"sources":["../../../lib/schema/arg-spec.js"],"sourcesContent":["import _ from 'lodash';\n\n/**\n * The original ID of the Appium config schema.\n * We use this in the CLI to convert it to `argparse` options.\n */\nexport const APPIUM_CONFIG_SCHEMA_ID = 'appium.json';\n\n/**\n * The schema prop containing server-related options. Everything in here\n * is \"native\" to Appium.\n * Used by {@link flattenSchema} for transforming the schema into CLI args.\n */\nexport const SERVER_PROP_NAME = 'server';\n\n/**\n * Used to parse extension info from a schema ID.\n */\nconst SCHEMA_ID_REGEXP = /^(?<extType>.+?)-(?<normalizedExtName>.+)\\.json$/;\n\n/**\n * Avoid typos by using constants!\n */\nconst PROPERTIES = 'properties';\n\n/**\n * An `ArgSpec` is a class representing metadata about an argument (or config\n * option) used for cross-referencing.\n *\n * This class has no instance methods, and is basically just a read-only \"struct\".\n * @template D\n */\nexport class ArgSpec {\n /**\n * The canonical name of the argument. Corresponds to key in schema's `properties` prop.\n * @type {string}\n */\n name;\n\n /**\n * The `ExtensionType` of the argument. This will be set if the arg came from an extension;\n * otherwise it will be `undefined`.\n * @type {ExtensionType|undefined}\n */\n extType;\n\n /**\n * The name of the extension, if this argument came from an extension.\n *\n * Otherwise `undefined`.\n * @type {string|undefined}\n */\n extName;\n\n /**\n * The schema ID (`$id`) for the argument. This is automatically determined, and any user-provided `$id`s will be overwritten.\n *\n * @type {string}\n */\n ref;\n\n /**\n * The CLI argument, sans leading dashes.\n * @type {string}\n */\n arg;\n\n /**\n * The desired keypath for the argument after arguments have been parsed.\n *\n * Typically this is camelCased. If the arg came from an extension, it will be prefixed with\n * `<extType>.<extName>.`\n * @type {string}\n */\n dest;\n\n /**\n * The same as {@link ArgSpec.dest} but without the leading `<extType>.<extName>.` prefix.\n */\n rawDest;\n\n /**\n * Whatever the default value of this argument is, as specified by the\n * `default` property of the schema.\n * @type {D|undefined}\n */\n defaultValue;\n\n /**\n * Builds some computed fields and assigns them to the instance.\n *\n * Undefined properties are not assigned.\n *\n * The _constructor_ is private. Use {@link ArgSpec.create} instead.\n * @private\n * @param {string} name\n * @param {ArgSpecOptions<D>} [opts]\n */\n constructor(name, {extType, extName, dest, defaultValue} = {}) {\n // we must normalize the extension name to fit into our convention for CLI\n // args.\n const arg = ArgSpec.toArg(name, extType, extName);\n\n const ref = ArgSpec.toSchemaRef(name, extType, extName);\n\n // if no explicit `dest` provided, just camelCase the name to avoid needing\n // to use bracket syntax when accessing props on the parsed args object.\n const rawDest = _.camelCase(dest ?? name);\n\n const destKeypath = extType && extName ? [extType, extName, rawDest].join('.') : rawDest;\n\n this.defaultValue = defaultValue;\n this.name = name;\n this.extType = extType;\n this.extName = extName;\n this.arg = arg;\n this.dest = destKeypath;\n this.ref = ref;\n this.rawDest = rawDest;\n }\n\n /**\n * Return the schema ID (`$id`) for the **argument** given the parameters.\n *\n * If you need the \"root\" or \"base\" schema ID, use {@link ArgSpec.toSchemaBaseRef} instead.\n * @param {string} name - Argument name\n * @param {ExtensionType} [extType] - Extension type\n * @param {string} [extName] - Extension name\n * @returns {string} Schema ID\n */\n static toSchemaRef(name, extType, extName) {\n const baseRef = ArgSpec.toSchemaBaseRef(extType, extName);\n if (extType && extName) {\n return [`${baseRef}#`, PROPERTIES, name].join('/');\n }\n return [`${baseRef}#`, PROPERTIES, SERVER_PROP_NAME, PROPERTIES, name].join('/');\n }\n\n /**\n * Return the schema ID for an extension or the base schema ID.\n * @param {ExtensionType} [extType] - Extension type\n * @param {string} [extName] - Extension name\n */\n static toSchemaBaseRef(extType, extName) {\n if (extType && extName) {\n return `${extType}-${ArgSpec.toNormalizedExtName(extName)}.json`;\n }\n return APPIUM_CONFIG_SCHEMA_ID;\n }\n\n /**\n * Return the unique ID for the argument given the parameters.\n * @param {string} name - Argument name\n * @param {ExtensionType} [extType] - Extension type\n * @param {string} [extName] - Extension name\n * @returns {string} Unique ID\n */\n static toArg(name, extType, extName) {\n const properName = _.kebabCase(name.replace(/^--?/, ''));\n if (extType && extName) {\n return [extType, _.kebabCase(extName), properName].join('-');\n }\n return properName;\n }\n\n /**\n * Normalizes a raw extension name (not including the type).\n * @param {string} extName - Extension name\n * @returns {string} Normalized extension name\n */\n static toNormalizedExtName(extName) {\n return _.kebabCase(extName);\n }\n\n /**\n * When given the root ID of a schema for an extension (`<extType>-<normalizedExtName>.json`) Returns an object containing the extension type and the _normalized_ extension name.\n * @param {string} schemaId - Root schema ID\n * @returns { {extType?: ExtensionType, normalizedExtName?: string} }\n */\n static extensionInfoFromRootSchemaId(schemaId) {\n const matches = schemaId.match(SCHEMA_ID_REGEXP);\n if (matches?.groups) {\n const {extType, normalizedExtName} =\n /** @type { {extType: ExtensionType, normalizedExtName: string} } */ (matches.groups);\n return {extType, normalizedExtName};\n }\n return {};\n }\n\n /**\n * Creates an `ArgSpec`\n *\n * @param {string} name - The canonical name of the argument. Corresponds to a key in a schema's\n * `properties` property.\n * @template D\n * @param {ArgSpecOptions<D>} [opts] - Options\n * @returns {Readonly<ArgSpec>}\n */\n static create(name, opts) {\n return Object.freeze(new ArgSpec(name, opts));\n }\n\n /**\n * String representation, useful for debugging\n * @returns {string}\n */\n /* istanbul ignore next */\n toString() {\n let str = `[ArgSpec] ${this.name} (${this.ref})`;\n if (this.extType && this.extName) {\n str += ` (ext: ${this.extType}/${this.extName})`;\n }\n return str;\n }\n}\n\n/**\n * Options for {@link ArgSpec.create}\n * @template D\n * @typedef ArgSpecOptions\n * @property {string} [extName]\n * @property {ExtensionType} [extType]\n * @property {string} [dest]\n * @property {D} [defaultValue]\n */\n\n/**\n * @typedef {import('@appium/types').ExtensionType} ExtensionType\n */\n"],"mappings":"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"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
Object.defineProperty(exports, "__esModule", {
|
|
6
4
|
value: true
|
|
7
5
|
});
|
|
@@ -19,6 +17,8 @@ var _schema = require("./schema");
|
|
|
19
17
|
|
|
20
18
|
var _cliTransformers = require("./cli-transformers");
|
|
21
19
|
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
22
|
const TYPENAMES = Object.freeze({
|
|
23
23
|
ARRAY: 'array',
|
|
24
24
|
OBJECT: 'object',
|
|
@@ -175,4 +175,4 @@ function toParserArgs() {
|
|
|
175
175
|
argSpec
|
|
176
176
|
}) => subSchemaToArgDef(schema, argSpec)));
|
|
177
177
|
}
|
|
178
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFTkFNRVMiLCJPYmplY3QiLCJmcmVlemUiLCJBUlJBWSIsIk9CSkVDVCIsIkJPT0xFQU4iLCJJTlRFR0VSIiwiTlVNQkVSIiwiTlVMTCIsIlNUUklORyIsIlNIT1JUX0FSR19DVVRPRkYiLCJhbGlhc1RvRmxhZyIsImFyZ1NwZWMiLCJhbGlhcyIsImV4dFR5cGUiLCJleHROYW1lIiwibmFtZSIsImFyZyIsImlzU2hvcnQiLCJsZW5ndGgiLCJfIiwia2ViYWJDYXNlIiwic2NyZWFtaW5nU25ha2VDYXNlIiwiZmxvdyIsInNuYWtlQ2FzZSIsInRvVXBwZXIiLCJnZXRTY2hlbWFWYWxpZGF0b3IiLCJyZWYiLCJzY2hlbWFJZCIsImNvZXJjZSIsImlkZW50aXR5IiwidmFsdWUiLCJjb2VyY2VkIiwiZXJyb3JzIiwidmFsaWRhdGUiLCJpc0VtcHR5IiwiQXJndW1lbnRUeXBlRXJyb3IiLCJmb3JtYXRFcnJvcnMiLCJtYWtlRGVzY3JpcHRpb24iLCJzY2hlbWEiLCJhcHBpdW1DbGlEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiYXBwaXVtRGVwcmVjYXRlZCIsImRlc2MiLCJzdWJTY2hlbWFUb0FyZ0RlZiIsInN1YlNjaGVtYSIsInR5cGUiLCJhcHBpdW1DbGlBbGlhc2VzIiwiYXBwaXVtQ2xpVHJhbnNmb3JtZXIiLCJlbnVtIiwiZW51bVZhbHVlcyIsImFsaWFzZXMiLCJtYXAiLCJhcmdPcHRzIiwicmVxdWlyZWQiLCJoZWxwIiwiYXJnVHlwZUZ1bmN0aW9uIiwiYWN0aW9uIiwiY29uc3QiLCJ0cmFuc2Zvcm1lcnMiLCJqc29uIiwiY3N2IiwicGFyc2VGbG9hdCIsInBhcnNlSW50IiwiVHlwZUVycm9yIiwibWV0YXZhciIsImNob2ljZXMiLCJTdHJpbmciLCJ0b1BhcnNlckFyZ3MiLCJmbGF0dGVuZWQiLCJmbGF0dGVuU2NoZW1hIiwiZmlsdGVyIiwiYXBwaXVtQ2xpSWdub3JlZCIsIk1hcCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEvY2xpLWFyZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcmd1bWVudFR5cGVFcnJvcn0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Zm9ybWF0RXJyb3JzIGFzIGZvcm1hdEVycm9yc30gZnJvbSAnLi4vY29uZmlnLWZpbGUnO1xuaW1wb3J0IHtmbGF0dGVuU2NoZW1hLCB2YWxpZGF0ZX0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHt0cmFuc2Zvcm1lcnN9IGZyb20gJy4vY2xpLXRyYW5zZm9ybWVycyc7XG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29uY2VybnMgZnVuY3Rpb25zIHdoaWNoIGNvbnZlcnQgc2NoZW1hIGRlZmluaXRpb25zIHRvXG4gKiBgYXJncGFyc2VgLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzLCBmb3IgZGVyaXZpbmcgQ0xJIGFyZ3VtZW50cyBmcm9tIGFcbiAqIHNjaGVtYS5cbiAqL1xuXG4vKipcbiAqIExvb2t1cCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBgdHlwZWAgZmllbGQgaW4gYSBKU09OIHNjaGVtYS5cbiAqIEB0eXBlIHtSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoJ2pzb24tc2NoZW1hJykuSlNPTlNjaGVtYTdUeXBlTmFtZT4+fVxuICovXG5jb25zdCBUWVBFTkFNRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgQVJSQVk6ICdhcnJheScsXG4gIE9CSkVDVDogJ29iamVjdCcsXG4gIEJPT0xFQU46ICdib29sZWFuJyxcbiAgSU5URUdFUjogJ2ludGVnZXInLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBOVUxMOiAnbnVsbCcsXG4gIFNUUklORzogJ3N0cmluZycsXG59KTtcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggYWxpYXMgbGVuZ3RocyBsZXNzIHRoYW4gdGhpcyB3aWxsIGJlIGNvbnNpZGVyZWQgXCJzaG9ydFwiIGZsYWdzLlxuICovXG5jb25zdCBTSE9SVF9BUkdfQ1VUT0ZGID0gMztcblxuLyoqXG4gKiBDb252ZXJ0IGFuIGFsaWFzIChgZm9vYCkgdG8gYSBmbGFnIChgLS1mb29gKSBvciBhIHNob3J0IGZsYWcgKGAtZmApLlxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gdGhlIGFyZ3VtZW50IHNwZWNpZmljYXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYWxpYXNdIC0gdGhlIGFsaWFzIHRvIGNvbnZlcnQgdG8gYSBmbGFnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZmxhZ1xuICovXG5mdW5jdGlvbiBhbGlhc1RvRmxhZyhhcmdTcGVjLCBhbGlhcykge1xuICBjb25zdCB7ZXh0VHlwZSwgZXh0TmFtZSwgbmFtZX0gPSBhcmdTcGVjO1xuICBjb25zdCBhcmcgPSBhbGlhcyA/PyBuYW1lO1xuICBjb25zdCBpc1Nob3J0ID0gYXJnLmxlbmd0aCA8IFNIT1JUX0FSR19DVVRPRkY7XG4gIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICByZXR1cm4gaXNTaG9ydFxuICAgICAgPyBgLS0ke2V4dFR5cGV9LSR7Xy5rZWJhYkNhc2UoZXh0TmFtZSl9LSR7YXJnfWBcbiAgICAgIDogYC0tJHtleHRUeXBlfS0ke18ua2ViYWJDYXNlKGV4dE5hbWUpfS0ke18ua2ViYWJDYXNlKGFyZyl9YDtcbiAgfVxuICByZXR1cm4gaXNTaG9ydCA/IGAtJHthcmd9YCA6IGAtLSR7Xy5rZWJhYkNhc2UoYXJnKX1gO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIFNDUkVBTUlOR19TTkFLRV9DQVNFXG4gKi9cbmNvbnN0IHNjcmVhbWluZ1NuYWtlQ2FzZSA9IF8uZmxvdyhfLnNuYWtlQ2FzZSwgXy50b1VwcGVyKTtcblxuLyoqXG4gKiBHaXZlbiB1bmlxdWUgcHJvcGVydHkgbmFtZSBgbmFtZWAsIHJldHVybiBhIGZ1bmN0aW9uIHdoaWNoIHZhbGlkYXRlcyBhIHZhbHVlXG4gKiBhZ2FpbnN0IGEgcHJvcGVydHkgd2l0aGluIHRoZSBzY2hlbWEuXG4gKiBAdGVtcGxhdGUgQ29lcmNlZFxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHsodmFsdWU6IHN0cmluZykgPT4gQ29lcmNlZH0gW2NvZXJjZV0gLSBGdW5jdGlvbiB0byBjb2VyY2UgdG8gYSBkaWZmZXJlbnRcbiAqIHByaW1pdGl2ZVxuICogQHRvZG8gU2VlIGlmIHdlIGNhbiByZW1vdmUgYGNvZXJjZWAgYnkgYWxsb3dpbmcgQWp2IHRvIGNvZXJjZSBpbiBpdHNcbiAqIGNvbnN0cnVjdG9yIG9wdGlvbnNcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGdldFNjaGVtYVZhbGlkYXRvcih7cmVmOiBzY2hlbWFJZH0sIGNvZXJjZSA9IF8uaWRlbnRpdHkpIHtcbiAgLyoqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAqL1xuICByZXR1cm4gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgY29lcmNlZCA9IGNvZXJjZSh2YWx1ZSk7XG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGUoY29lcmNlZCwgc2NoZW1hSWQpO1xuICAgIGlmIChfLmlzRW1wdHkoZXJyb3JzKSkge1xuICAgICAgcmV0dXJuIGNvZXJjZWQ7XG4gICAgfVxuICAgIHRocm93IG5ldyBBcmd1bWVudFR5cGVFcnJvcignXFxuXFxuJyArIGZvcm1hdEVycm9ycyhlcnJvcnMsIHZhbHVlLCB7c2NoZW1hSWR9KSk7XG4gIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSBkZXNjcmlwdGlvbiBmb3IgZGlzcGxheSBvbiB0aGUgQ0xJLCBnaXZlbiB0aGUgc2NoZW1hLlxuICogQHBhcmFtIHtBcHBpdW1KU09OU2NoZW1hfSBzY2hlbWFcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG1ha2VEZXNjcmlwdGlvbihzY2hlbWEpIHtcbiAgY29uc3Qge2FwcGl1bUNsaURlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbiA9ICcnLCBhcHBpdW1EZXByZWNhdGVkfSA9IHNjaGVtYTtcbiAgbGV0IGRlc2MgPSBhcHBpdW1DbGlEZXNjcmlwdGlvbiA/PyBkZXNjcmlwdGlvbjtcbiAgaWYgKGFwcGl1bURlcHJlY2F0ZWQpIHtcbiAgICBkZXNjID0gYFtERVBSRUNBVEVEXSAke2Rlc2N9YDtcbiAgfVxuICByZXR1cm4gZGVzYztcbn1cblxuLyoqXG4gKiBHaXZlbiBhcmcgYG5hbWVgLCBhIEpTT04gc2NoZW1hIGBzdWJTY2hlbWFgLCBhbmQgb3B0aW9ucywgcmV0dXJuIGFuIGFyZ3VtZW50IGRlZmluaXRpb25cbiAqIGFzIHVuZGVyc3Rvb2QgYnkgYGFyZ3BhcnNlYC5cbiAqIEBwYXJhbSB7QXBwaXVtSlNPTlNjaGVtYX0gc3ViU2NoZW1hIC0gSlNPTiBzY2hlbWEgZm9yIHRoZSBvcHRpb25cbiAqIEBwYXJhbSB7QXJnU3BlY30gYXJnU3BlYyAtIEFyZ3VtZW50IHNwZWMgdHVwbGVcbiAqIEByZXR1cm5zIHtbc3RyaW5nW10sIGltcG9ydCgnYXJncGFyc2UnKS5Bcmd1bWVudE9wdGlvbnNdfSBUdXBsZSBvZiBmbGFnIGFuZCBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIHN1YlNjaGVtYVRvQXJnRGVmKHN1YlNjaGVtYSwgYXJnU3BlYykge1xuICBsZXQge3R5cGUsIGFwcGl1bUNsaUFsaWFzZXMsIGFwcGl1bUNsaVRyYW5zZm9ybWVyLCBlbnVtOiBlbnVtVmFsdWVzfSA9IHN1YlNjaGVtYTtcblxuICBjb25zdCB7bmFtZSwgYXJnfSA9IGFyZ1NwZWM7XG5cbiAgY29uc3QgYWxpYXNlcyA9IFtcbiAgICBhbGlhc1RvRmxhZyhhcmdTcGVjKSxcbiAgICAuLi4vKiogQHR5cGUge3N0cmluZ1tdfSAqLyAoYXBwaXVtQ2xpQWxpYXNlcyA/PyBbXSkubWFwKChhbGlhcykgPT4gYWxpYXNUb0ZsYWcoYXJnU3BlYywgYWxpYXMpKSxcbiAgXTtcblxuICAvKiogQHR5cGUge2ltcG9ydCgnYXJncGFyc2UnKS5Bcmd1bWVudE9wdGlvbnN9ICovXG4gIGxldCBhcmdPcHRzID0ge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiBtYWtlRGVzY3JpcHRpb24oc3ViU2NoZW1hKSxcbiAgfTtcblxuICAvKipcbiAgICogR2VuZXJhbGx5IHdlIHdpbGwgcHJvdmlkZSBhIGB0eXBlYCB0byBgYXJncGFyc2VgIGFzIGEgZnVuY3Rpb24gd2hpY2hcbiAgICogdmFsaWRhdGVzIHVzaW5nIGFqdiAod2hpY2ggaXMgbXVjaCBtb3JlIGZ1bGwtZmVhdHVyZWQgdGhhbiB3aGF0IGBhcmdwYXJzZWBcbiAgICogY2FuIG9mZmVyKS4gVGhlIGV4Y2VwdGlvbiBpcyBgYm9vbGVhbmAtdHlwZSBvcHRpb25zLCB3aGljaCBoYXZlIG5vXG4gICAqIGBhcmdUeXBlYC5cbiAgICpcbiAgICogTm90IHN1cmUgaWYgdGhpcyB0eXBlIGlzIGNvcnJlY3QsIGJ1dCBpdCdzIG5vdCBkb2luZyB3aGF0IEkgd2FudC4gIEkgd2FudFxuICAgKiB0byBzYXkgXCJ0aGlzIGlzIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBzb21ldGhpbmcgb2YgdHlwZSBgVGAgd2hlcmUgYFRgIGlzXG4gICAqIG5ldmVyIGEgYFByb21pc2VgXCIuICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgc3luYy5cbiAgICogQHR5cGUgeygodmFsdWU6IHN0cmluZykgPT4gdW5rbm93bil8dW5kZWZpbmVkfVxuICAgKi9cbiAgbGV0IGFyZ1R5cGVGdW5jdGlvbjtcblxuICAvLyBoYW5kbGUgc3BlY2lhbCBjYXNlcyBmb3IgdmFyaW91cyB0eXBlc1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAvLyBib29sZWFucyBkbyBub3QgaGF2ZSBhIHR5cGUgcGVyIGBBcmd1bWVudE9wdGlvbnNgLCBqdXN0IGFuIFwiYWN0aW9uXCJcbiAgICAvLyBOT1RFOiBkdWUgdG8gbGltaXRhdGlvbnMgb2YgYGFyZ3BhcnNlYCwgd2UgY2Fubm90IHByb3ZpZGUgZmFuY3kgaGVscCB0ZXh0LCBhbmQgbXVzdCByZWx5IG9uIGl0cyBpbnRlcm5hbCBlcnJvciBtZXNzYWdpbmcuXG4gICAgY2FzZSBUWVBFTkFNRVMuQk9PTEVBTjoge1xuICAgICAgYXJnT3B0cy5hY3Rpb24gPSAnc3RvcmVfY29uc3QnO1xuICAgICAgYXJnT3B0cy5jb25zdCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRZUEVOQU1FUy5PQkpFQ1Q6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IHRyYW5zZm9ybWVycy5qc29uO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gYXJyYXlzIGFyZSB0cmVhdGVkIGFzIENTVnMsIGJlY2F1c2UgYGFyZ3BhcnNlYCBkb2Vzbid0IGhhbmRsZSBhcnJheSBkYXRhLlxuICAgIGNhc2UgVFlQRU5BTUVTLkFSUkFZOiB7XG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPSB0cmFuc2Zvcm1lcnMuY3N2O1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gXCJudW1iZXJcIiB0eXBlIGlzIGNvZXJjZWQgdG8gZmxvYXQuIGBhcmdwYXJzZWAgZG9lcyB0aGlzIGZvciB1cyBpZiB3ZSB1c2UgYGZsb2F0YCB0eXBlLCBidXRcbiAgICAvLyB3ZSBkb24ndC5cbiAgICBjYXNlIFRZUEVOQU1FUy5OVU1CRVI6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IGdldFNjaGVtYVZhbGlkYXRvcihhcmdTcGVjLCBwYXJzZUZsb2F0KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFwiaW50ZWdlclwiIGlzIGNvZXJjZWQgdG8gYW4gLi4gaW50ZWdlci4gIGFnYWluLCBgYXJncGFyc2VgIHdvdWxkIGRvIHRoaXMgZm9yIHVzIGlmIHdlIHVzZWQgYGludGAuXG4gICAgY2FzZSBUWVBFTkFNRVMuSU5URUdFUjoge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gZ2V0U2NoZW1hVmFsaWRhdG9yKGFyZ1NwZWMsIF8ucGFyc2VJbnQpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gc3RyaW5ncyAobGlrZSBudW1iZXIgYW5kIGludGVnZXIpIGFyZSBzdWJqZWN0IHRvIGZ1cnRoZXIgdmFsaWRhdGlvblxuICAgIC8vIChlLmcuLCBtdXN0IHNhdGlzZnkgYSBtYXNrIG9yIHJlZ2V4IG9yIGV2ZW4gc29tZSBjdXN0b20gdmFsaWRhdGlvblxuICAgIC8vIGZ1bmN0aW9uKVxuICAgIGNhc2UgVFlQRU5BTUVTLlNUUklORzoge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gZ2V0U2NoZW1hVmFsaWRhdG9yKGFyZ1NwZWMpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogdGhlcmUgbWF5IGJlIHNvbWUgd2F5IHRvIHJlc3RyaWN0IHRoaXMgYXQgdGhlIEFqdiBsZXZlbCAtLVxuICAgIC8vIHRoYXQgbWF5IGludm9sdmUgcGF0Y2hpbmcgdGhlIG1ldGFzY2hlbWEuXG4gICAgY2FzZSBUWVBFTkFNRVMuTlVMTDpcbiAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgU2NoZW1hIHByb3BlcnR5IFwiJHthcmd9XCI6IFxcYCR7dHlwZX1cXGAgdHlwZSB1bmtub3duIG9yIGRpc2FsbG93ZWRgKTtcbiAgICB9XG4gIH1cblxuICAvLyBtZXRhdmFyIGlzIHVzZWQgaW4gaGVscCB0ZXh0LiBgYm9vbGVhbmAgY2Fubm90IGhhdmUgYSBtZXRhdmFyLS1pdCBpcyBub3RcbiAgLy8gZGlzcGxheWVkLS1hbmQgYGFyZ3BhcnNlYCB0aHJvd3MgaWYgeW91IGdpdmUgaXQgb25lLlxuICBpZiAodHlwZSAhPT0gVFlQRU5BTUVTLkJPT0xFQU4pIHtcbiAgICBhcmdPcHRzLm1ldGF2YXIgPSBzY3JlYW1pbmdTbmFrZUNhc2UobmFtZSk7XG4gIH1cblxuICAvLyB0aGUgdmFsaWRpdHkgb2YgXCJhcHBpdW1DbGlUcmFuc2Zvcm1lclwiIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBkZXRlcm1pbmVkXG4gIC8vIGJ5IGFqdiBkdXJpbmcgc2NoZW1hIHZhbGlkYXRpb24gaW4gYGZpbmFsaXplU2NoZW1hKClgLiB0aGUgYGFycmF5YCAmXG4gIC8vIGBvYmplY3RgIHR5cGVzIGhhdmUgYWxyZWFkeSBhZGRlZCBhIGZvcm1hdHRlciAoc2VlIGFib3ZlLCBzbyB3ZSBkb24ndCBkbyBpdFxuICAvLyB0d2ljZSkuXG4gIGlmICh0eXBlICE9PSBUWVBFTkFNRVMuQVJSQVkgJiYgdHlwZSAhPT0gVFlQRU5BTUVTLk9CSkVDVCAmJiBhcHBpdW1DbGlUcmFuc2Zvcm1lcikge1xuICAgIGFyZ1R5cGVGdW5jdGlvbiA9IF8uZmxvdyhhcmdUeXBlRnVuY3Rpb24gPz8gXy5pZGVudGl0eSwgdHJhbnNmb3JtZXJzW2FwcGl1bUNsaVRyYW5zZm9ybWVyXSk7XG4gIH1cblxuICBpZiAoYXJnVHlwZUZ1bmN0aW9uKSB7XG4gICAgYXJnT3B0cy50eXBlID0gYXJnVHlwZUZ1bmN0aW9uO1xuICB9XG5cbiAgLy8gY29udmVydCBKU09OIHNjaGVtYSBgZW51bWAgdG8gYGNob2ljZXNgLiBgZW51bWAgY2FuIGNvbnRhaW4gYW55IEpTT04gdHlwZSwgYnV0IGBhcmdwYXJzZWBcbiAgLy8gaXMgbGltaXRlZCB0byBhIHNpbmdsZSB0eXBlIHBlciBhcmcgKEkgdGhpbmspLiAgc28gbGV0J3MgbWFrZSBldmVyeXRoaW5nIGEgc3RyaW5nLlxuICAvLyBhbmQgbWlnaHQgYXMgd2VsbCBfcmVxdWlyZV8gdGhlIGB0eXBlOiBzdHJpbmdgIHdoaWxlIHdlJ3JlIGF0IGl0LlxuICBpZiAoZW51bVZhbHVlcyAmJiAhXy5pc0VtcHR5KGVudW1WYWx1ZXMpKSB7XG4gICAgaWYgKHR5cGUgPT09IFRZUEVOQU1FUy5TVFJJTkcpIHtcbiAgICAgIGFyZ09wdHMuY2hvaWNlcyA9IGVudW1WYWx1ZXMubWFwKFN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBQcm9ibGVtIHdpdGggc2NoZW1hIGZvciAke2FyZ307IFxcYGVudW1cXGAgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFxcYHR5cGU6ICdzdHJpbmcnXFxgYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2FsaWFzZXMsIGFyZ09wdHNdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBmaW5hbGl6ZWQsIGZsYXR0ZW5lZCBzY2hlbWEgcmVwcmVzZW50YXRpb24gaW50b1xuICogQXJndW1lbnREZWZpbml0aW9ucyBmb3IgaGFuZG9mZiB0byBgYXJncGFyc2VgLlxuICpcbiAqIEB0aHJvd3MgSWYgc2NoZW1hIGhhcyBub3QgYmVlbiBhZGRlZCB0byBhanYgKHZpYSBgZmluYWxpemVTY2hlbWEoKWApXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi9jbGkvYXJncycpLkFyZ3VtZW50RGVmaW5pdGlvbnN9IEEgbWFwIG9mIGFycnlhcyBvZlxuICogYWxpYXNlcyB0byBgYXJncGFyc2VgIGFyZ3VtZW50czsgZW1wdHkgaWYgbm8gc2NoZW1hIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BhcnNlckFyZ3MoKSB7XG4gIGNvbnN0IGZsYXR0ZW5lZCA9IGZsYXR0ZW5TY2hlbWEoKS5maWx0ZXIoKHtzY2hlbWF9KSA9PiAhc2NoZW1hLmFwcGl1bUNsaUlnbm9yZWQpO1xuICByZXR1cm4gbmV3IE1hcChfLm1hcChmbGF0dGVuZWQsICh7c2NoZW1hLCBhcmdTcGVjfSkgPT4gc3ViU2NoZW1hVG9BcmdEZWYoc2NoZW1hLCBhcmdTcGVjKSkpO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhanYvZGlzdC90eXBlcycpLkZvcm1hdFZhbGlkYXRvcjxUPn0gRm9ybWF0VmFsaWRhdG9yPFQ+XG4gKi9cblxuLyoqXG4gKiBBIEpTT04gNyBzY2hlbWEgd2l0aCBvdXIgY3VzdG9tIGtleXdvcmRzLlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9rZXl3b3JkcycpLkFwcGl1bUpTT05TY2hlbWFLZXl3b3JkcyAmIGltcG9ydCgnanNvbi1zY2hlbWEnKS5KU09OU2NoZW1hN30gQXBwaXVtSlNPTlNjaGVtYVxuICovXG5cbi8qKlxu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
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUWVBFTkFNRVMiLCJPYmplY3QiLCJmcmVlemUiLCJBUlJBWSIsIk9CSkVDVCIsIkJPT0xFQU4iLCJJTlRFR0VSIiwiTlVNQkVSIiwiTlVMTCIsIlNUUklORyIsIlNIT1JUX0FSR19DVVRPRkYiLCJhbGlhc1RvRmxhZyIsImFyZ1NwZWMiLCJhbGlhcyIsImV4dFR5cGUiLCJleHROYW1lIiwibmFtZSIsImFyZyIsImlzU2hvcnQiLCJsZW5ndGgiLCJfIiwia2ViYWJDYXNlIiwic2NyZWFtaW5nU25ha2VDYXNlIiwiZmxvdyIsInNuYWtlQ2FzZSIsInRvVXBwZXIiLCJnZXRTY2hlbWFWYWxpZGF0b3IiLCJyZWYiLCJzY2hlbWFJZCIsImNvZXJjZSIsImlkZW50aXR5IiwidmFsdWUiLCJjb2VyY2VkIiwiZXJyb3JzIiwidmFsaWRhdGUiLCJpc0VtcHR5IiwiQXJndW1lbnRUeXBlRXJyb3IiLCJmb3JtYXRFcnJvcnMiLCJtYWtlRGVzY3JpcHRpb24iLCJzY2hlbWEiLCJhcHBpdW1DbGlEZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uIiwiYXBwaXVtRGVwcmVjYXRlZCIsImRlc2MiLCJzdWJTY2hlbWFUb0FyZ0RlZiIsInN1YlNjaGVtYSIsInR5cGUiLCJhcHBpdW1DbGlBbGlhc2VzIiwiYXBwaXVtQ2xpVHJhbnNmb3JtZXIiLCJlbnVtIiwiZW51bVZhbHVlcyIsImFsaWFzZXMiLCJtYXAiLCJhcmdPcHRzIiwicmVxdWlyZWQiLCJoZWxwIiwiYXJnVHlwZUZ1bmN0aW9uIiwiYWN0aW9uIiwiY29uc3QiLCJ0cmFuc2Zvcm1lcnMiLCJqc29uIiwiY3N2IiwicGFyc2VGbG9hdCIsInBhcnNlSW50IiwiVHlwZUVycm9yIiwibWV0YXZhciIsImNob2ljZXMiLCJTdHJpbmciLCJ0b1BhcnNlckFyZ3MiLCJmbGF0dGVuZWQiLCJmbGF0dGVuU2NoZW1hIiwiZmlsdGVyIiwiYXBwaXVtQ2xpSWdub3JlZCIsIk1hcCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9zY2hlbWEvY2xpLWFyZ3MuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcmd1bWVudFR5cGVFcnJvcn0gZnJvbSAnYXJncGFyc2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Zm9ybWF0RXJyb3JzIGFzIGZvcm1hdEVycm9yc30gZnJvbSAnLi4vY29uZmlnLWZpbGUnO1xuaW1wb3J0IHtmbGF0dGVuU2NoZW1hLCB2YWxpZGF0ZX0gZnJvbSAnLi9zY2hlbWEnO1xuaW1wb3J0IHt0cmFuc2Zvcm1lcnN9IGZyb20gJy4vY2xpLXRyYW5zZm9ybWVycyc7XG5cbi8qKlxuICogVGhpcyBtb2R1bGUgY29uY2VybnMgZnVuY3Rpb25zIHdoaWNoIGNvbnZlcnQgc2NoZW1hIGRlZmluaXRpb25zIHRvXG4gKiBgYXJncGFyc2VgLWNvbXBhdGlibGUgZGF0YSBzdHJ1Y3R1cmVzLCBmb3IgZGVyaXZpbmcgQ0xJIGFyZ3VtZW50cyBmcm9tIGFcbiAqIHNjaGVtYS5cbiAqL1xuXG4vKipcbiAqIExvb2t1cCBvZiBwb3NzaWJsZSB2YWx1ZXMgZm9yIHRoZSBgdHlwZWAgZmllbGQgaW4gYSBKU09OIHNjaGVtYS5cbiAqIEB0eXBlIHtSZWFkb25seTxSZWNvcmQ8c3RyaW5nLCBpbXBvcnQoJ2pzb24tc2NoZW1hJykuSlNPTlNjaGVtYTdUeXBlTmFtZT4+fVxuICovXG5jb25zdCBUWVBFTkFNRVMgPSBPYmplY3QuZnJlZXplKHtcbiAgQVJSQVk6ICdhcnJheScsXG4gIE9CSkVDVDogJ29iamVjdCcsXG4gIEJPT0xFQU46ICdib29sZWFuJyxcbiAgSU5URUdFUjogJ2ludGVnZXInLFxuICBOVU1CRVI6ICdudW1iZXInLFxuICBOVUxMOiAnbnVsbCcsXG4gIFNUUklORzogJ3N0cmluZycsXG59KTtcblxuLyoqXG4gKiBPcHRpb25zIHdpdGggYWxpYXMgbGVuZ3RocyBsZXNzIHRoYW4gdGhpcyB3aWxsIGJlIGNvbnNpZGVyZWQgXCJzaG9ydFwiIGZsYWdzLlxuICovXG5jb25zdCBTSE9SVF9BUkdfQ1VUT0ZGID0gMztcblxuLyoqXG4gKiBDb252ZXJ0IGFuIGFsaWFzIChgZm9vYCkgdG8gYSBmbGFnIChgLS1mb29gKSBvciBhIHNob3J0IGZsYWcgKGAtZmApLlxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gdGhlIGFyZ3VtZW50IHNwZWNpZmljYXRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBbYWxpYXNdIC0gdGhlIGFsaWFzIHRvIGNvbnZlcnQgdG8gYSBmbGFnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgZmxhZ1xuICovXG5mdW5jdGlvbiBhbGlhc1RvRmxhZyhhcmdTcGVjLCBhbGlhcykge1xuICBjb25zdCB7ZXh0VHlwZSwgZXh0TmFtZSwgbmFtZX0gPSBhcmdTcGVjO1xuICBjb25zdCBhcmcgPSBhbGlhcyA/PyBuYW1lO1xuICBjb25zdCBpc1Nob3J0ID0gYXJnLmxlbmd0aCA8IFNIT1JUX0FSR19DVVRPRkY7XG4gIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICByZXR1cm4gaXNTaG9ydFxuICAgICAgPyBgLS0ke2V4dFR5cGV9LSR7Xy5rZWJhYkNhc2UoZXh0TmFtZSl9LSR7YXJnfWBcbiAgICAgIDogYC0tJHtleHRUeXBlfS0ke18ua2ViYWJDYXNlKGV4dE5hbWUpfS0ke18ua2ViYWJDYXNlKGFyZyl9YDtcbiAgfVxuICByZXR1cm4gaXNTaG9ydCA/IGAtJHthcmd9YCA6IGAtLSR7Xy5rZWJhYkNhc2UoYXJnKX1gO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIFNDUkVBTUlOR19TTkFLRV9DQVNFXG4gKi9cbmNvbnN0IHNjcmVhbWluZ1NuYWtlQ2FzZSA9IF8uZmxvdyhfLnNuYWtlQ2FzZSwgXy50b1VwcGVyKTtcblxuLyoqXG4gKiBHaXZlbiB1bmlxdWUgcHJvcGVydHkgbmFtZSBgbmFtZWAsIHJldHVybiBhIGZ1bmN0aW9uIHdoaWNoIHZhbGlkYXRlcyBhIHZhbHVlXG4gKiBhZ2FpbnN0IGEgcHJvcGVydHkgd2l0aGluIHRoZSBzY2hlbWEuXG4gKiBAdGVtcGxhdGUgQ29lcmNlZFxuICogQHBhcmFtIHtBcmdTcGVjfSBhcmdTcGVjIC0gQXJndW1lbnQgbmFtZVxuICogQHBhcmFtIHsodmFsdWU6IHN0cmluZykgPT4gQ29lcmNlZH0gW2NvZXJjZV0gLSBGdW5jdGlvbiB0byBjb2VyY2UgdG8gYSBkaWZmZXJlbnRcbiAqIHByaW1pdGl2ZVxuICogQHRvZG8gU2VlIGlmIHdlIGNhbiByZW1vdmUgYGNvZXJjZWAgYnkgYWxsb3dpbmcgQWp2IHRvIGNvZXJjZSBpbiBpdHNcbiAqIGNvbnN0cnVjdG9yIG9wdGlvbnNcbiAqIEByZXR1cm5zXG4gKi9cbmZ1bmN0aW9uIGdldFNjaGVtYVZhbGlkYXRvcih7cmVmOiBzY2hlbWFJZH0sIGNvZXJjZSA9IF8uaWRlbnRpdHkpIHtcbiAgLyoqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSAqL1xuICByZXR1cm4gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgY29lcmNlZCA9IGNvZXJjZSh2YWx1ZSk7XG4gICAgY29uc3QgZXJyb3JzID0gdmFsaWRhdGUoY29lcmNlZCwgc2NoZW1hSWQpO1xuICAgIGlmIChfLmlzRW1wdHkoZXJyb3JzKSkge1xuICAgICAgcmV0dXJuIGNvZXJjZWQ7XG4gICAgfVxuICAgIHRocm93IG5ldyBBcmd1bWVudFR5cGVFcnJvcignXFxuXFxuJyArIGZvcm1hdEVycm9ycyhlcnJvcnMsIHZhbHVlLCB7c2NoZW1hSWR9KSk7XG4gIH07XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lIHRoZSBkZXNjcmlwdGlvbiBmb3IgZGlzcGxheSBvbiB0aGUgQ0xJLCBnaXZlbiB0aGUgc2NoZW1hLlxuICogQHBhcmFtIHtBcHBpdW1KU09OU2NoZW1hfSBzY2hlbWFcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIG1ha2VEZXNjcmlwdGlvbihzY2hlbWEpIHtcbiAgY29uc3Qge2FwcGl1bUNsaURlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbiA9ICcnLCBhcHBpdW1EZXByZWNhdGVkfSA9IHNjaGVtYTtcbiAgbGV0IGRlc2MgPSBhcHBpdW1DbGlEZXNjcmlwdGlvbiA/PyBkZXNjcmlwdGlvbjtcbiAgaWYgKGFwcGl1bURlcHJlY2F0ZWQpIHtcbiAgICBkZXNjID0gYFtERVBSRUNBVEVEXSAke2Rlc2N9YDtcbiAgfVxuICByZXR1cm4gZGVzYztcbn1cblxuLyoqXG4gKiBHaXZlbiBhcmcgYG5hbWVgLCBhIEpTT04gc2NoZW1hIGBzdWJTY2hlbWFgLCBhbmQgb3B0aW9ucywgcmV0dXJuIGFuIGFyZ3VtZW50IGRlZmluaXRpb25cbiAqIGFzIHVuZGVyc3Rvb2QgYnkgYGFyZ3BhcnNlYC5cbiAqIEBwYXJhbSB7QXBwaXVtSlNPTlNjaGVtYX0gc3ViU2NoZW1hIC0gSlNPTiBzY2hlbWEgZm9yIHRoZSBvcHRpb25cbiAqIEBwYXJhbSB7QXJnU3BlY30gYXJnU3BlYyAtIEFyZ3VtZW50IHNwZWMgdHVwbGVcbiAqIEByZXR1cm5zIHtbc3RyaW5nW10sIGltcG9ydCgnYXJncGFyc2UnKS5Bcmd1bWVudE9wdGlvbnNdfSBUdXBsZSBvZiBmbGFnIGFuZCBvcHRpb25zXG4gKi9cbmZ1bmN0aW9uIHN1YlNjaGVtYVRvQXJnRGVmKHN1YlNjaGVtYSwgYXJnU3BlYykge1xuICBsZXQge3R5cGUsIGFwcGl1bUNsaUFsaWFzZXMsIGFwcGl1bUNsaVRyYW5zZm9ybWVyLCBlbnVtOiBlbnVtVmFsdWVzfSA9IHN1YlNjaGVtYTtcblxuICBjb25zdCB7bmFtZSwgYXJnfSA9IGFyZ1NwZWM7XG5cbiAgY29uc3QgYWxpYXNlcyA9IFtcbiAgICBhbGlhc1RvRmxhZyhhcmdTcGVjKSxcbiAgICAuLi4vKiogQHR5cGUge3N0cmluZ1tdfSAqLyAoYXBwaXVtQ2xpQWxpYXNlcyA/PyBbXSkubWFwKChhbGlhcykgPT4gYWxpYXNUb0ZsYWcoYXJnU3BlYywgYWxpYXMpKSxcbiAgXTtcblxuICAvKiogQHR5cGUge2ltcG9ydCgnYXJncGFyc2UnKS5Bcmd1bWVudE9wdGlvbnN9ICovXG4gIGxldCBhcmdPcHRzID0ge1xuICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICBoZWxwOiBtYWtlRGVzY3JpcHRpb24oc3ViU2NoZW1hKSxcbiAgfTtcblxuICAvKipcbiAgICogR2VuZXJhbGx5IHdlIHdpbGwgcHJvdmlkZSBhIGB0eXBlYCB0byBgYXJncGFyc2VgIGFzIGEgZnVuY3Rpb24gd2hpY2hcbiAgICogdmFsaWRhdGVzIHVzaW5nIGFqdiAod2hpY2ggaXMgbXVjaCBtb3JlIGZ1bGwtZmVhdHVyZWQgdGhhbiB3aGF0IGBhcmdwYXJzZWBcbiAgICogY2FuIG9mZmVyKS4gVGhlIGV4Y2VwdGlvbiBpcyBgYm9vbGVhbmAtdHlwZSBvcHRpb25zLCB3aGljaCBoYXZlIG5vXG4gICAqIGBhcmdUeXBlYC5cbiAgICpcbiAgICogTm90IHN1cmUgaWYgdGhpcyB0eXBlIGlzIGNvcnJlY3QsIGJ1dCBpdCdzIG5vdCBkb2luZyB3aGF0IEkgd2FudC4gIEkgd2FudFxuICAgKiB0byBzYXkgXCJ0aGlzIGlzIGEgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBzb21ldGhpbmcgb2YgdHlwZSBgVGAgd2hlcmUgYFRgIGlzXG4gICAqIG5ldmVyIGEgYFByb21pc2VgXCIuICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgc3luYy5cbiAgICogQHR5cGUgeygodmFsdWU6IHN0cmluZykgPT4gdW5rbm93bil8dW5kZWZpbmVkfVxuICAgKi9cbiAgbGV0IGFyZ1R5cGVGdW5jdGlvbjtcblxuICAvLyBoYW5kbGUgc3BlY2lhbCBjYXNlcyBmb3IgdmFyaW91cyB0eXBlc1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAvLyBib29sZWFucyBkbyBub3QgaGF2ZSBhIHR5cGUgcGVyIGBBcmd1bWVudE9wdGlvbnNgLCBqdXN0IGFuIFwiYWN0aW9uXCJcbiAgICAvLyBOT1RFOiBkdWUgdG8gbGltaXRhdGlvbnMgb2YgYGFyZ3BhcnNlYCwgd2UgY2Fubm90IHByb3ZpZGUgZmFuY3kgaGVscCB0ZXh0LCBhbmQgbXVzdCByZWx5IG9uIGl0cyBpbnRlcm5hbCBlcnJvciBtZXNzYWdpbmcuXG4gICAgY2FzZSBUWVBFTkFNRVMuQk9PTEVBTjoge1xuICAgICAgYXJnT3B0cy5hY3Rpb24gPSAnc3RvcmVfY29uc3QnO1xuICAgICAgYXJnT3B0cy5jb25zdCA9IHRydWU7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjYXNlIFRZUEVOQU1FUy5PQkpFQ1Q6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IHRyYW5zZm9ybWVycy5qc29uO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gYXJyYXlzIGFyZSB0cmVhdGVkIGFzIENTVnMsIGJlY2F1c2UgYGFyZ3BhcnNlYCBkb2Vzbid0IGhhbmRsZSBhcnJheSBkYXRhLlxuICAgIGNhc2UgVFlQRU5BTUVTLkFSUkFZOiB7XG4gICAgICBhcmdUeXBlRnVuY3Rpb24gPSB0cmFuc2Zvcm1lcnMuY3N2O1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gXCJudW1iZXJcIiB0eXBlIGlzIGNvZXJjZWQgdG8gZmxvYXQuIGBhcmdwYXJzZWAgZG9lcyB0aGlzIGZvciB1cyBpZiB3ZSB1c2UgYGZsb2F0YCB0eXBlLCBidXRcbiAgICAvLyB3ZSBkb24ndC5cbiAgICBjYXNlIFRZUEVOQU1FUy5OVU1CRVI6IHtcbiAgICAgIGFyZ1R5cGVGdW5jdGlvbiA9IGdldFNjaGVtYVZhbGlkYXRvcihhcmdTcGVjLCBwYXJzZUZsb2F0KTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFwiaW50ZWdlclwiIGlzIGNvZXJjZWQgdG8gYW4gLi4gaW50ZWdlci4gIGFnYWluLCBgYXJncGFyc2VgIHdvdWxkIGRvIHRoaXMgZm9yIHVzIGlmIHdlIHVzZWQgYGludGAuXG4gICAgY2FzZSBUWVBFTkFNRVMuSU5URUdFUjoge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gZ2V0U2NoZW1hVmFsaWRhdG9yKGFyZ1NwZWMsIF8ucGFyc2VJbnQpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gc3RyaW5ncyAobGlrZSBudW1iZXIgYW5kIGludGVnZXIpIGFyZSBzdWJqZWN0IHRvIGZ1cnRoZXIgdmFsaWRhdGlvblxuICAgIC8vIChlLmcuLCBtdXN0IHNhdGlzZnkgYSBtYXNrIG9yIHJlZ2V4IG9yIGV2ZW4gc29tZSBjdXN0b20gdmFsaWRhdGlvblxuICAgIC8vIGZ1bmN0aW9uKVxuICAgIGNhc2UgVFlQRU5BTUVTLlNUUklORzoge1xuICAgICAgYXJnVHlwZUZ1bmN0aW9uID0gZ2V0U2NoZW1hVmFsaWRhdG9yKGFyZ1NwZWMpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogdGhlcmUgbWF5IGJlIHNvbWUgd2F5IHRvIHJlc3RyaWN0IHRoaXMgYXQgdGhlIEFqdiBsZXZlbCAtLVxuICAgIC8vIHRoYXQgbWF5IGludm9sdmUgcGF0Y2hpbmcgdGhlIG1ldGFzY2hlbWEuXG4gICAgY2FzZSBUWVBFTkFNRVMuTlVMTDpcbiAgICAvLyBmYWxscyB0aHJvdWdoXG4gICAgZGVmYXVsdDoge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgU2NoZW1hIHByb3BlcnR5IFwiJHthcmd9XCI6IFxcYCR7dHlwZX1cXGAgdHlwZSB1bmtub3duIG9yIGRpc2FsbG93ZWRgKTtcbiAgICB9XG4gIH1cblxuICAvLyBtZXRhdmFyIGlzIHVzZWQgaW4gaGVscCB0ZXh0LiBgYm9vbGVhbmAgY2Fubm90IGhhdmUgYSBtZXRhdmFyLS1pdCBpcyBub3RcbiAgLy8gZGlzcGxheWVkLS1hbmQgYGFyZ3BhcnNlYCB0aHJvd3MgaWYgeW91IGdpdmUgaXQgb25lLlxuICBpZiAodHlwZSAhPT0gVFlQRU5BTUVTLkJPT0xFQU4pIHtcbiAgICBhcmdPcHRzLm1ldGF2YXIgPSBzY3JlYW1pbmdTbmFrZUNhc2UobmFtZSk7XG4gIH1cblxuICAvLyB0aGUgdmFsaWRpdHkgb2YgXCJhcHBpdW1DbGlUcmFuc2Zvcm1lclwiIHNob3VsZCBhbHJlYWR5IGhhdmUgYmVlbiBkZXRlcm1pbmVkXG4gIC8vIGJ5IGFqdiBkdXJpbmcgc2NoZW1hIHZhbGlkYXRpb24gaW4gYGZpbmFsaXplU2NoZW1hKClgLiB0aGUgYGFycmF5YCAmXG4gIC8vIGBvYmplY3RgIHR5cGVzIGhhdmUgYWxyZWFkeSBhZGRlZCBhIGZvcm1hdHRlciAoc2VlIGFib3ZlLCBzbyB3ZSBkb24ndCBkbyBpdFxuICAvLyB0d2ljZSkuXG4gIGlmICh0eXBlICE9PSBUWVBFTkFNRVMuQVJSQVkgJiYgdHlwZSAhPT0gVFlQRU5BTUVTLk9CSkVDVCAmJiBhcHBpdW1DbGlUcmFuc2Zvcm1lcikge1xuICAgIGFyZ1R5cGVGdW5jdGlvbiA9IF8uZmxvdyhhcmdUeXBlRnVuY3Rpb24gPz8gXy5pZGVudGl0eSwgdHJhbnNmb3JtZXJzW2FwcGl1bUNsaVRyYW5zZm9ybWVyXSk7XG4gIH1cblxuICBpZiAoYXJnVHlwZUZ1bmN0aW9uKSB7XG4gICAgYXJnT3B0cy50eXBlID0gYXJnVHlwZUZ1bmN0aW9uO1xuICB9XG5cbiAgLy8gY29udmVydCBKU09OIHNjaGVtYSBgZW51bWAgdG8gYGNob2ljZXNgLiBgZW51bWAgY2FuIGNvbnRhaW4gYW55IEpTT04gdHlwZSwgYnV0IGBhcmdwYXJzZWBcbiAgLy8gaXMgbGltaXRlZCB0byBhIHNpbmdsZSB0eXBlIHBlciBhcmcgKEkgdGhpbmspLiAgc28gbGV0J3MgbWFrZSBldmVyeXRoaW5nIGEgc3RyaW5nLlxuICAvLyBhbmQgbWlnaHQgYXMgd2VsbCBfcmVxdWlyZV8gdGhlIGB0eXBlOiBzdHJpbmdgIHdoaWxlIHdlJ3JlIGF0IGl0LlxuICBpZiAoZW51bVZhbHVlcyAmJiAhXy5pc0VtcHR5KGVudW1WYWx1ZXMpKSB7XG4gICAgaWYgKHR5cGUgPT09IFRZUEVOQU1FUy5TVFJJTkcpIHtcbiAgICAgIGFyZ09wdHMuY2hvaWNlcyA9IGVudW1WYWx1ZXMubWFwKFN0cmluZyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgIGBQcm9ibGVtIHdpdGggc2NoZW1hIGZvciAke2FyZ307IFxcYGVudW1cXGAgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFxcYHR5cGU6ICdzdHJpbmcnXFxgYFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW2FsaWFzZXMsIGFyZ09wdHNdO1xufVxuXG4vKipcbiAqIENvbnZlcnRzIHRoZSBmaW5hbGl6ZWQsIGZsYXR0ZW5lZCBzY2hlbWEgcmVwcmVzZW50YXRpb24gaW50b1xuICogQXJndW1lbnREZWZpbml0aW9ucyBmb3IgaGFuZG9mZiB0byBgYXJncGFyc2VgLlxuICpcbiAqIEB0aHJvd3MgSWYgc2NoZW1hIGhhcyBub3QgYmVlbiBhZGRlZCB0byBhanYgKHZpYSBgZmluYWxpemVTY2hlbWEoKWApXG4gKiBAcmV0dXJucyB7aW1wb3J0KCcuLi9jbGkvYXJncycpLkFyZ3VtZW50RGVmaW5pdGlvbnN9IEEgbWFwIG9mIGFycnlhcyBvZlxuICogYWxpYXNlcyB0byBgYXJncGFyc2VgIGFyZ3VtZW50czsgZW1wdHkgaWYgbm8gc2NoZW1hIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1BhcnNlckFyZ3MoKSB7XG4gIGNvbnN0IGZsYXR0ZW5lZCA9IGZsYXR0ZW5TY2hlbWEoKS5maWx0ZXIoKHtzY2hlbWF9KSA9PiAhc2NoZW1hLmFwcGl1bUNsaUlnbm9yZWQpO1xuICByZXR1cm4gbmV3IE1hcChfLm1hcChmbGF0dGVuZWQsICh7c2NoZW1hLCBhcmdTcGVjfSkgPT4gc3ViU2NoZW1hVG9BcmdEZWYoc2NoZW1hLCBhcmdTcGVjKSkpO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdhanYvZGlzdC90eXBlcycpLkZvcm1hdFZhbGlkYXRvcjxUPn0gRm9ybWF0VmFsaWRhdG9yPFQ+XG4gKi9cblxuLyoqXG4gKiBBIEpTT04gNyBzY2hlbWEgd2l0aCBvdXIgY3VzdG9tIGtleXdvcmRzLlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9rZXl3b3JkcycpLkFwcGl1bUpTT05TY2hlbWFLZXl3b3JkcyAmIGltcG9ydCgnanNvbi1zY2hlbWEnKS5KU09OU2NoZW1hN30gQXBwaXVtSlNPTlNjaGVtYVxuICovXG5cbi8qKlxu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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.js","names":["TYPENAMES","Object","freeze","ARRAY","OBJECT","BOOLEAN","INTEGER","NUMBER","NULL","STRING","SHORT_ARG_CUTOFF","aliasToFlag","argSpec","alias","extType","extName","name","arg","isShort","length","_","kebabCase","screamingSnakeCase","flow","snakeCase","toUpper","getSchemaValidator","ref","schemaId","coerce","identity","value","coerced","errors","validate","isEmpty","ArgumentTypeError","formatErrors","makeDescription","schema","appiumCliDescription","description","appiumDeprecated","desc","subSchemaToArgDef","subSchema","type","appiumCliAliases","appiumCliTransformer","enum","enumValues","aliases","map","argOpts","required","help","argTypeFunction","action","const","transformers","json","csv","parseFloat","parseInt","TypeError","metavar","choices","String","toParserArgs","flattened","flattenSchema","filter","appiumCliIgnored","Map"],"sources":["../../../lib/schema/cli-args.js"],"sourcesContent":["import {ArgumentTypeError} from 'argparse';\nimport _ from 'lodash';\nimport {formatErrors as formatErrors} from '../config-file';\nimport {flattenSchema, validate} from './schema';\nimport {transformers} from './cli-transformers';\n\n/**\n * This module concerns functions which convert schema definitions to\n * `argparse`-compatible data structures, for deriving CLI arguments from a\n * schema.\n */\n\n/**\n * Lookup of possible values for the `type` field in a JSON schema.\n * @type {Readonly<Record<string, import('json-schema').JSONSchema7TypeName>>}\n */\nconst TYPENAMES = Object.freeze({\n ARRAY: 'array',\n OBJECT: 'object',\n BOOLEAN: 'boolean',\n INTEGER: 'integer',\n NUMBER: 'number',\n NULL: 'null',\n STRING: 'string',\n});\n\n/**\n * Options with alias lengths less than this will be considered \"short\" flags.\n */\nconst SHORT_ARG_CUTOFF = 3;\n\n/**\n * Convert an alias (`foo`) to a flag (`--foo`) or a short flag (`-f`).\n * @param {ArgSpec} argSpec - the argument specification\n * @param {string} [alias] - the alias to convert to a flag\n * @returns {string} the flag\n */\nfunction aliasToFlag(argSpec, alias) {\n const {extType, extName, name} = argSpec;\n const arg = alias ?? name;\n const isShort = arg.length < SHORT_ARG_CUTOFF;\n if (extType && extName) {\n return isShort\n ? `--${extType}-${_.kebabCase(extName)}-${arg}`\n : `--${extType}-${_.kebabCase(extName)}-${_.kebabCase(arg)}`;\n }\n return isShort ? `-${arg}` : `--${_.kebabCase(arg)}`;\n}\n\n/**\n * Converts a string to SCREAMING_SNAKE_CASE\n */\nconst screamingSnakeCase = _.flow(_.snakeCase, _.toUpper);\n\n/**\n * Given unique property name `name`, return a function which validates a value\n * against a property within the schema.\n * @template Coerced\n * @param {ArgSpec} argSpec - Argument name\n * @param {(value: string) => Coerced} [coerce] - Function to coerce to a different\n * primitive\n * @todo See if we can remove `coerce` by allowing Ajv to coerce in its\n * constructor options\n * @returns\n */\nfunction getSchemaValidator({ref: schemaId}, coerce = _.identity) {\n /** @param {string} value */\n return (value) => {\n const coerced = coerce(value);\n const errors = validate(coerced, schemaId);\n if (_.isEmpty(errors)) {\n return coerced;\n }\n throw new ArgumentTypeError('\\n\\n' + formatErrors(errors, value, {schemaId}));\n };\n}\n\n/**\n * Determine the description for display on the CLI, given the schema.\n * @param {AppiumJSONSchema} schema\n * @returns {string}\n */\nfunction makeDescription(schema) {\n const {appiumCliDescription, description = '', appiumDeprecated} = schema;\n let desc = appiumCliDescription ?? description;\n if (appiumDeprecated) {\n desc = `[DEPRECATED] ${desc}`;\n }\n return desc;\n}\n\n/**\n * Given arg `name`, a JSON schema `subSchema`, and options, return an argument definition\n * as understood by `argparse`.\n * @param {AppiumJSONSchema} subSchema - JSON schema for the option\n * @param {ArgSpec} argSpec - Argument spec tuple\n * @returns {[string[], import('argparse').ArgumentOptions]} Tuple of flag and options\n */\nfunction subSchemaToArgDef(subSchema, argSpec) {\n let {type, appiumCliAliases, appiumCliTransformer, enum: enumValues} = subSchema;\n\n const {name, arg} = argSpec;\n\n const aliases = [\n aliasToFlag(argSpec),\n .../** @type {string[]} */ (appiumCliAliases ?? []).map((alias) => aliasToFlag(argSpec, alias)),\n ];\n\n /** @type {import('argparse').ArgumentOptions} */\n let argOpts = {\n required: false,\n help: makeDescription(subSchema),\n };\n\n /**\n * Generally we will provide a `type` to `argparse` as a function which\n * validates using ajv (which is much more full-featured than what `argparse`\n * can offer). The exception is `boolean`-type options, which have no\n * `argType`.\n *\n * Not sure if this type is correct, but it's not doing what I want. I want\n * to say \"this is a function which returns something of type `T` where `T` is\n * never a `Promise`\". This function must be sync.\n * @type {((value: string) => unknown)|undefined}\n */\n let argTypeFunction;\n\n // handle special cases for various types\n switch (type) {\n // booleans do not have a type per `ArgumentOptions`, just an \"action\"\n // NOTE: due to limitations of `argparse`, we cannot provide fancy help text, and must rely on its internal error messaging.\n case TYPENAMES.BOOLEAN: {\n argOpts.action = 'store_const';\n argOpts.const = true;\n break;\n }\n\n case TYPENAMES.OBJECT: {\n argTypeFunction = transformers.json;\n break;\n }\n\n // arrays are treated as CSVs, because `argparse` doesn't handle array data.\n case TYPENAMES.ARRAY: {\n argTypeFunction = transformers.csv;\n break;\n }\n\n // \"number\" type is coerced to float. `argparse` does this for us if we use `float` type, but\n // we don't.\n case TYPENAMES.NUMBER: {\n argTypeFunction = getSchemaValidator(argSpec, parseFloat);\n break;\n }\n\n // \"integer\" is coerced to an .. integer. again, `argparse` would do this for us if we used `int`.\n case TYPENAMES.INTEGER: {\n argTypeFunction = getSchemaValidator(argSpec, _.parseInt);\n break;\n }\n\n // strings (like number and integer) are subject to further validation\n // (e.g., must satisfy a mask or regex or even some custom validation\n // function)\n case TYPENAMES.STRING: {\n argTypeFunction = getSchemaValidator(argSpec);\n break;\n }\n\n // TODO: there may be some way to restrict this at the Ajv level --\n // that may involve patching the metaschema.\n case TYPENAMES.NULL:\n // falls through\n default: {\n throw new TypeError(`Schema property \"${arg}\": \\`${type}\\` type unknown or disallowed`);\n }\n }\n\n // metavar is used in help text. `boolean` cannot have a metavar--it is not\n // displayed--and `argparse` throws if you give it one.\n if (type !== TYPENAMES.BOOLEAN) {\n argOpts.metavar = screamingSnakeCase(name);\n }\n\n // the validity of \"appiumCliTransformer\" should already have been determined\n // by ajv during schema validation in `finalizeSchema()`. the `array` &\n // `object` types have already added a formatter (see above, so we don't do it\n // twice).\n if (type !== TYPENAMES.ARRAY && type !== TYPENAMES.OBJECT && appiumCliTransformer) {\n argTypeFunction = _.flow(argTypeFunction ?? _.identity, transformers[appiumCliTransformer]);\n }\n\n if (argTypeFunction) {\n argOpts.type = argTypeFunction;\n }\n\n // convert JSON schema `enum` to `choices`. `enum` can contain any JSON type, but `argparse`\n // is limited to a single type per arg (I think). so let's make everything a string.\n // and might as well _require_ the `type: string` while we're at it.\n if (enumValues && !_.isEmpty(enumValues)) {\n if (type === TYPENAMES.STRING) {\n argOpts.choices = enumValues.map(String);\n } else {\n throw new TypeError(\n `Problem with schema for ${arg}; \\`enum\\` is only supported for \\`type: 'string'\\``\n );\n }\n }\n\n return [aliases, argOpts];\n}\n\n/**\n * Converts the finalized, flattened schema representation into\n * ArgumentDefinitions for handoff to `argparse`.\n *\n * @throws If schema has not been added to ajv (via `finalizeSchema()`)\n * @returns {import('../cli/args').ArgumentDefinitions} A map of arryas of\n * aliases to `argparse` arguments; empty if no schema found\n */\nexport function toParserArgs() {\n const flattened = flattenSchema().filter(({schema}) => !schema.appiumCliIgnored);\n return new Map(_.map(flattened, ({schema, argSpec}) => subSchemaToArgDef(schema, argSpec)));\n}\n\n/**\n * @template T\n * @typedef {import('ajv/dist/types').FormatValidator<T>} FormatValidator<T>\n */\n\n/**\n * A JSON 7 schema with our custom keywords.\n * @typedef {import('./keywords').AppiumJSONSchemaKeywords & import('json-schema').JSONSchema7} AppiumJSONSchema\n */\n\n/**\n * @typedef {import('./arg-spec').ArgSpec} ArgSpec\n */\n"],"mappings":"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"}
|