appium 2.0.0-beta.21 → 2.0.0-beta.25
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/LICENSE +201 -0
- package/README.md +1 -2
- package/build/check-npm-pack-files.js +23 -0
- package/build/commands-yml/parse.js +319 -0
- package/build/commands-yml/validator.js +130 -0
- package/build/index.js +19 -0
- package/build/lib/appium.js +22 -7
- package/build/lib/cli/args.js +13 -15
- package/build/lib/cli/npm.js +27 -16
- package/build/lib/cli/parser.js +7 -3
- package/build/lib/config-file.js +4 -7
- package/build/lib/config.js +57 -48
- package/build/lib/extension-config.js +1 -1
- package/build/lib/main.js +28 -28
- package/build/lib/plugin-config.js +2 -2
- package/build/lib/plugins.js +4 -2
- package/build/lib/schema/appium-config-schema.js +3 -2
- package/build/lib/schema/arg-spec.js +5 -3
- package/build/lib/schema/cli-args.js +25 -16
- package/build/lib/schema/keywords.js +14 -4
- package/build/lib/schema/schema.js +86 -9
- package/build/lib/utils.js +16 -36
- package/build/postinstall.js +90 -0
- package/build/test/cli/cli-e2e-specs.js +221 -0
- package/build/test/cli/cli-helpers.js +86 -0
- package/build/test/cli/cli-specs.js +71 -0
- package/build/test/cli/fixtures/test-driver/package.json +27 -0
- package/build/test/cli/schema-args-specs.js +48 -0
- package/build/test/cli/schema-e2e-specs.js +47 -0
- package/build/test/config-e2e-specs.js +112 -0
- package/build/test/config-file-e2e-specs.js +191 -0
- package/build/test/config-file-specs.js +281 -0
- package/build/test/config-specs.js +258 -0
- package/build/test/driver-e2e-specs.js +435 -0
- package/build/test/driver-specs.js +386 -0
- package/build/test/ext-config-io-specs.js +181 -0
- package/build/test/extension-config-specs.js +365 -0
- package/build/test/fixtures/allow-feat.txt +5 -0
- package/build/test/fixtures/caps.json +3 -0
- package/build/test/fixtures/config/allow-insecure.txt +3 -0
- package/build/test/fixtures/config/appium.config.bad-nodeconfig.json +5 -0
- package/build/test/fixtures/config/appium.config.bad.json +32 -0
- package/build/test/fixtures/config/appium.config.ext-good.json +9 -0
- package/build/test/fixtures/config/appium.config.ext-unknown-props.json +10 -0
- package/build/test/fixtures/config/appium.config.good.js +40 -0
- package/build/test/fixtures/config/appium.config.good.json +33 -0
- package/build/test/fixtures/config/appium.config.good.yaml +30 -0
- package/build/test/fixtures/config/appium.config.invalid.json +31 -0
- package/build/test/fixtures/config/appium.config.security-array.json +5 -0
- package/build/test/fixtures/config/appium.config.security-delimited.json +5 -0
- package/build/test/fixtures/config/appium.config.security-path.json +5 -0
- package/build/test/fixtures/config/driver-fake.config.json +8 -0
- package/build/test/fixtures/config/nodeconfig.json +3 -0
- package/build/test/fixtures/config/plugin-fake.config.json +0 -0
- package/build/test/fixtures/default-args.js +35 -0
- package/build/test/fixtures/deny-feat.txt +5 -0
- package/build/test/fixtures/driver.schema.js +20 -0
- package/build/test/fixtures/extensions.yaml +27 -0
- package/build/test/fixtures/flattened-schema.js +532 -0
- package/build/test/fixtures/plugin.schema.js +20 -0
- package/build/test/fixtures/schema-with-extensions.js +28 -0
- package/build/test/grid-register-specs.js +74 -0
- package/build/test/helpers.js +75 -0
- package/build/test/logger-specs.js +76 -0
- package/build/test/npm-specs.js +20 -0
- package/build/test/parser-specs.js +319 -0
- package/build/test/plugin-e2e-specs.js +316 -0
- package/build/test/schema/arg-spec-specs.js +70 -0
- package/build/test/schema/cli-args-specs.js +408 -0
- package/build/test/schema/schema-specs.js +407 -0
- package/build/test/utils-specs.js +288 -0
- package/index.js +11 -0
- package/lib/appium-config.schema.json +2 -1
- package/lib/appium.js +51 -8
- package/lib/cli/args.js +17 -14
- package/lib/cli/npm.js +68 -6
- package/lib/cli/parser.js +5 -2
- package/lib/config-file.js +9 -12
- package/lib/config.js +104 -56
- package/lib/extension-config.js +1 -1
- package/lib/main.js +94 -40
- package/lib/plugin-config.js +1 -1
- package/lib/plugins.js +2 -0
- package/lib/schema/appium-config-schema.js +1 -0
- package/lib/schema/arg-spec.js +13 -3
- package/lib/schema/cli-args.js +22 -34
- package/lib/schema/keywords.js +20 -4
- package/lib/schema/schema.js +150 -24
- package/lib/utils.js +28 -29
- package/package.json +9 -14
- package/types/types.d.ts +5 -0
- package/build/lib/cli/argparse-actions.js +0 -104
- package/lib/cli/argparse-actions.js +0 -77
package/build/lib/main.js
CHANGED
|
@@ -41,6 +41,8 @@ Object.defineProperty(exports, "validate", {
|
|
|
41
41
|
|
|
42
42
|
require("source-map-support/register");
|
|
43
43
|
|
|
44
|
+
var _logger = _interopRequireDefault(require("./logger"));
|
|
45
|
+
|
|
44
46
|
var _baseDriver = require("@appium/base-driver");
|
|
45
47
|
|
|
46
48
|
var _support = require("@appium/support");
|
|
@@ -65,8 +67,6 @@ var _extensionConfig = require("./extension-config");
|
|
|
65
67
|
|
|
66
68
|
var _gridRegister = _interopRequireDefault(require("./grid-register"));
|
|
67
69
|
|
|
68
|
-
var _logger = _interopRequireDefault(require("./logger"));
|
|
69
|
-
|
|
70
70
|
var _logsink = require("./logsink");
|
|
71
71
|
|
|
72
72
|
var _schema = require("./schema/schema");
|
|
@@ -85,13 +85,12 @@ async function preflightChecks(args, throwInsteadOfExit = false) {
|
|
|
85
85
|
require('longjohn').async_trace_limit = -1;
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
if (args.
|
|
89
|
-
await (0, _config.
|
|
88
|
+
if (args.showBuildInfo) {
|
|
89
|
+
await (0, _config.showBuildInfo)();
|
|
90
90
|
process.exit(0);
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
(0, _config.warnNodeDeprecations)();
|
|
94
|
-
(0, _schema.validate)(args);
|
|
95
94
|
|
|
96
95
|
if (args.tmpDir) {
|
|
97
96
|
await (0, _config.validateTmpDir)(args.tmpDir);
|
|
@@ -110,16 +109,16 @@ async function preflightChecks(args, throwInsteadOfExit = false) {
|
|
|
110
109
|
function logNonDefaultArgsWarning(args) {
|
|
111
110
|
_logger.default.info('Non-default server args:');
|
|
112
111
|
|
|
113
|
-
(0, _utils.
|
|
112
|
+
(0, _utils.inspect)(args);
|
|
114
113
|
}
|
|
115
114
|
|
|
116
115
|
function logDefaultCapabilitiesWarning(caps) {
|
|
117
116
|
_logger.default.info('Default capabilities, which will be added to each request ' + 'unless overridden by desired capabilities:');
|
|
118
117
|
|
|
119
|
-
(0, _utils.
|
|
118
|
+
(0, _utils.inspect)(caps);
|
|
120
119
|
}
|
|
121
120
|
|
|
122
|
-
async function logStartupInfo(
|
|
121
|
+
async function logStartupInfo(args) {
|
|
123
122
|
let welcome = `Welcome to Appium v${_config.APPIUM_VER}`;
|
|
124
123
|
let appiumRev = await (0, _config.getGitRev)();
|
|
125
124
|
|
|
@@ -129,7 +128,7 @@ async function logStartupInfo(parser, args) {
|
|
|
129
128
|
|
|
130
129
|
_logger.default.info(welcome);
|
|
131
130
|
|
|
132
|
-
let showArgs = (0, _config.getNonDefaultServerArgs)(
|
|
131
|
+
let showArgs = (0, _config.getNonDefaultServerArgs)(args);
|
|
133
132
|
|
|
134
133
|
if (_lodash.default.size(showArgs)) {
|
|
135
134
|
logNonDefaultArgsWarning(showArgs);
|
|
@@ -178,7 +177,7 @@ function getActiveDrivers(args, driverConfig) {
|
|
|
178
177
|
}
|
|
179
178
|
|
|
180
179
|
function getServerUpdaters(driverClasses, pluginClasses) {
|
|
181
|
-
return [...driverClasses, ...pluginClasses]
|
|
180
|
+
return _lodash.default.compact(_lodash.default.map([...driverClasses, ...pluginClasses], 'updateServer'));
|
|
182
181
|
}
|
|
183
182
|
|
|
184
183
|
function getExtraMethodMap(driverClasses, pluginClasses) {
|
|
@@ -188,11 +187,11 @@ function getExtraMethodMap(driverClasses, pluginClasses) {
|
|
|
188
187
|
}
|
|
189
188
|
|
|
190
189
|
async function init(args) {
|
|
191
|
-
var _configResult$config2;
|
|
192
|
-
|
|
193
190
|
const parser = await (0, _parser.default)();
|
|
194
191
|
let throwInsteadOfExit = false;
|
|
192
|
+
let preConfigParsedArgs;
|
|
195
193
|
let parsedArgs;
|
|
194
|
+
let defaults = {};
|
|
196
195
|
|
|
197
196
|
if (args) {
|
|
198
197
|
var _args$subcommand;
|
|
@@ -202,14 +201,14 @@ async function init(args) {
|
|
|
202
201
|
delete args.throwInsteadOfExit;
|
|
203
202
|
}
|
|
204
203
|
|
|
205
|
-
|
|
204
|
+
preConfigParsedArgs = { ...args,
|
|
206
205
|
subcommand: (_args$subcommand = args.subcommand) !== null && _args$subcommand !== void 0 ? _args$subcommand : _parser.SERVER_SUBCOMMAND
|
|
207
206
|
};
|
|
208
207
|
} else {
|
|
209
|
-
|
|
208
|
+
preConfigParsedArgs = parser.parseArgs();
|
|
210
209
|
}
|
|
211
210
|
|
|
212
|
-
const configResult = await (0, _configFile.readConfigFile)(
|
|
211
|
+
const configResult = await (0, _configFile.readConfigFile)(preConfigParsedArgs.configFile);
|
|
213
212
|
|
|
214
213
|
if (!_lodash.default.isEmpty(configResult.errors)) {
|
|
215
214
|
var _configResult$reason;
|
|
@@ -217,27 +216,30 @@ async function init(args) {
|
|
|
217
216
|
throw new Error(`Errors in config file ${configResult.filepath}:\n ${(_configResult$reason = configResult.reason) !== null && _configResult$reason !== void 0 ? _configResult$reason : configResult.errors}`);
|
|
218
217
|
}
|
|
219
218
|
|
|
220
|
-
if (
|
|
219
|
+
if (preConfigParsedArgs.subcommand === _parser.SERVER_SUBCOMMAND) {
|
|
221
220
|
var _configResult$config;
|
|
222
221
|
|
|
223
|
-
|
|
222
|
+
defaults = (0, _schema.getDefaultsForSchema)(false);
|
|
223
|
+
parsedArgs = _lodash.default.defaultsDeep(preConfigParsedArgs, (_configResult$config = configResult.config) === null || _configResult$config === void 0 ? void 0 : _configResult$config.server, defaults);
|
|
224
|
+
|
|
225
|
+
if (preConfigParsedArgs.showConfig) {
|
|
226
|
+
(0, _config.showConfig)((0, _config.getNonDefaultServerArgs)(preConfigParsedArgs), configResult, defaults, parsedArgs);
|
|
227
|
+
return {};
|
|
228
|
+
}
|
|
229
|
+
} else {
|
|
230
|
+
parsedArgs = preConfigParsedArgs;
|
|
224
231
|
}
|
|
225
232
|
|
|
226
|
-
parsedArgs = _lodash.default.defaultsDeep(parsedArgs, (_configResult$config2 = configResult.config) !== null && _configResult$config2 !== void 0 ? _configResult$config2 : {});
|
|
227
233
|
await (0, _logsink.init)(parsedArgs);
|
|
228
234
|
|
|
229
235
|
if (parsedArgs.subcommand === _extensionConfig.DRIVER_TYPE) {
|
|
230
236
|
await (0, _extension.runExtensionCommand)(parsedArgs, parsedArgs.subcommand, _args.driverConfig);
|
|
231
|
-
return {
|
|
232
|
-
parser
|
|
233
|
-
};
|
|
237
|
+
return {};
|
|
234
238
|
}
|
|
235
239
|
|
|
236
240
|
if (parsedArgs.subcommand === _extensionConfig.PLUGIN_TYPE) {
|
|
237
241
|
await (0, _extension.runExtensionCommand)(parsedArgs, parsedArgs.subcommand, _args.pluginConfig);
|
|
238
|
-
return {
|
|
239
|
-
parser
|
|
240
|
-
};
|
|
242
|
+
return {};
|
|
241
243
|
}
|
|
242
244
|
|
|
243
245
|
if (parsedArgs.logFilters) {
|
|
@@ -261,7 +263,6 @@ async function init(args) {
|
|
|
261
263
|
appiumDriver.driverConfig = _args.driverConfig;
|
|
262
264
|
await preflightChecks(parsedArgs, throwInsteadOfExit);
|
|
263
265
|
return {
|
|
264
|
-
parser,
|
|
265
266
|
appiumDriver,
|
|
266
267
|
parsedArgs
|
|
267
268
|
};
|
|
@@ -269,7 +270,6 @@ async function init(args) {
|
|
|
269
270
|
|
|
270
271
|
async function main(args) {
|
|
271
272
|
const {
|
|
272
|
-
parser,
|
|
273
273
|
appiumDriver,
|
|
274
274
|
parsedArgs
|
|
275
275
|
} = await init(args);
|
|
@@ -280,7 +280,7 @@ async function main(args) {
|
|
|
280
280
|
|
|
281
281
|
const pluginClasses = getActivePlugins(parsedArgs, _args.pluginConfig);
|
|
282
282
|
appiumDriver.pluginClasses = pluginClasses;
|
|
283
|
-
await logStartupInfo(
|
|
283
|
+
await logStartupInfo(parsedArgs);
|
|
284
284
|
let routeConfiguringFunction = (0, _baseDriver.routeConfiguringFunction)(appiumDriver);
|
|
285
285
|
const driverClasses = getActiveDrivers(parsedArgs, _args.driverConfig);
|
|
286
286
|
const serverUpdaters = getServerUpdaters(driverClasses, pluginClasses);
|
|
@@ -359,4 +359,4 @@ if (require.main === module) {
|
|
|
359
359
|
}require('source-map-support').install();
|
|
360
360
|
|
|
361
361
|
|
|
362
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9tYWluLmpzIl0sIm5hbWVzIjpbInByZWZsaWdodENoZWNrcyIsImFyZ3MiLCJ0aHJvd0luc3RlYWRPZkV4aXQiLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dDb25maWciLCJwcm9jZXNzIiwiZXhpdCIsInRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyIsImNhcHMiLCJsb2dTdGFydHVwSW5mbyIsInBhcnNlciIsIndlbGNvbWUiLCJBUFBJVU1fVkVSIiwiYXBwaXVtUmV2Iiwic2hvd0FyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldEFjdGl2ZVBsdWdpbnMiLCJwbHVnaW5Db25maWciLCJjb21wYWN0IiwiT2JqZWN0Iiwia2V5cyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJmaWx0ZXIiLCJwbHVnaW5OYW1lIiwiaW5jbHVkZXMiLCJ1c2VQbHVnaW5zIiwibGVuZ3RoIiwiVVNFX0FMTF9QTFVHSU5TIiwibWFwIiwiUGx1Z2luQ2xhc3MiLCJkZWJ1ZyIsInN0YWNrIiwiZ2V0QWN0aXZlRHJpdmVycyIsImRyaXZlckNvbmZpZyIsImRyaXZlck5hbWUiLCJ1c2VEcml2ZXJzIiwiZ2V0U2VydmVyVXBkYXRlcnMiLCJkcml2ZXJDbGFzc2VzIiwicGx1Z2luQ2xhc3NlcyIsImtsYXNzIiwidXBkYXRlU2VydmVyIiwiQm9vbGVhbiIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwibmV3TWV0aG9kTWFwIiwiaW5pdCIsInBhcnNlZEFyZ3MiLCJzdWJjb21tYW5kIiwiU0VSVkVSX1NVQkNPTU1BTkQiLCJwYXJzZUFyZ3MiLCJjb25maWdSZXN1bHQiLCJjb25maWdGaWxlIiwiZXJyb3JzIiwiRXJyb3IiLCJmaWxlcGF0aCIsInJlYXNvbiIsImRlZmF1bHRzRGVlcCIsImNvbmZpZyIsInNlcnZlciIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJsb2dGaWx0ZXJzIiwiaXNzdWVzIiwicnVsZXMiLCJsb2dGYWN0b3J5IiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3YXJuIiwidXRpbCIsInBsdXJhbGl6ZSIsImFwcGl1bURyaXZlciIsIkFwcGl1bURyaXZlciIsIm1haW4iLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXJVcGRhdGVycyIsImV4dHJhTWV0aG9kTWFwIiwic2VydmVyT3B0cyIsImhvc3RuYW1lIiwiYWxsb3dDb3JzIiwiYmFzZVBhdGgiLCJrZWVwQWxpdmVUaW1lb3V0Iiwibm9kZWNvbmZpZyIsImNsb3NlIiwic2lnbmFsIiwib25jZSIsIm9uU2lnbmFsIiwiZGVsZXRlQWxsU2Vzc2lvbnMiLCJmb3JjZSIsImUiLCJwcmludCIsInAiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQU9BLGVBQWVBLGVBQWYsQ0FBZ0NDLElBQWhDLEVBQXNDQyxrQkFBa0IsR0FBRyxLQUEzRCxFQUFrRTtBQUNoRSxNQUFJO0FBQ0Y7O0FBQ0EsUUFBSUQsSUFBSSxDQUFDRSxjQUFULEVBQXlCO0FBQ3ZCQyxNQUFBQSxPQUFPLENBQUMsVUFBRCxDQUFQLENBQW9CQyxpQkFBcEIsR0FBd0MsQ0FBQyxDQUF6QztBQUNEOztBQUNELFFBQUlKLElBQUksQ0FBQ0ssVUFBVCxFQUFxQjtBQUNuQixZQUFNLHlC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RixJQUFSLEtBQWlCbUIsTUFBckIsRUFBNkI7QUFDM0IsMEJBQVNuQixJQUFUO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8vIHRyYW5zcGlsZTptYWluXG4vLyBAdHMtY2hlY2tcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIsIHNlcnZlciBhcyBiYXNlU2VydmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBsb2dnZXIgYXMgbG9nRmFjdG9yeSwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBhc3luY2lmeSB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBBcHBpdW1Ecml2ZXIgfSBmcm9tICcuL2FwcGl1bSc7XG5pbXBvcnQgeyBkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZywgVVNFX0FMTF9QTFVHSU5TIH0gZnJvbSAnLi9jbGkvYXJncyc7XG5pbXBvcnQgeyBydW5FeHRlbnNpb25Db21tYW5kIH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgZ2V0UGFyc2VyLCBTRVJWRVJfU1VCQ09NTUFORCB9IGZyb20gJy4vY2xpL3BhcnNlcic7XG5pbXBvcnQgeyBBUFBJVU1fVkVSLCBjaGVja05vZGVPaywgZ2V0R2l0UmV2LCBnZXROb25EZWZhdWx0U2VydmVyQXJncywgc2hvd0NvbmZpZywgdmFsaWRhdGVUbXBEaXIsIHdhcm5Ob2RlRGVwcmVjYXRpb25zIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgcmVhZENvbmZpZ0ZpbGUgfSBmcm9tICcuL2NvbmZpZy1maWxlJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgcmVnaXN0ZXJOb2RlIGZyb20gJy4vZ3JpZC1yZWdpc3Rlcic7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJzsgLy8gbG9nZ2VyIG5lZWRzIHRvIHJlbWFpbiBmaXJzdCBvZiBpbXBvcnRzXG5pbXBvcnQgeyBpbml0IGFzIGxvZ3NpbmtJbml0IH0gZnJvbSAnLi9sb2dzaW5rJztcbmltcG9ydCB7IGdldERlZmF1bHRzRnJvbVNjaGVtYSwgdmFsaWRhdGUgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuaW1wb3J0IHsgaW5zcGVjdE9iamVjdCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqXG4gKiBAcGFyYW0ge1BhcnNlZEFyZ3N9IGFyZ3NcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW3Rocm93SW5zdGVhZE9mRXhpdF1cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlZmxpZ2h0Q2hlY2tzIChhcmdzLCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZSkge1xuICB0cnkge1xuICAgIGNoZWNrTm9kZU9rKCk7XG4gICAgaWYgKGFyZ3MubG9uZ1N0YWNrdHJhY2UpIHtcbiAgICAgIHJlcXVpcmUoJ2xvbmdqb2huJykuYXN5bmNfdHJhY2VfbGltaXQgPSAtMTtcbiAgICB9XG4gICAgaWYgKGFyZ3Muc2hvd0NvbmZpZykge1xuICAgICAgYXdhaXQgc2hvd0NvbmZpZygpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH1cbiAgICB3YXJuTm9kZURlcHJlY2F0aW9ucygpO1xuXG4gICAgdmFsaWRhdGUoYXJncyk7XG5cbiAgICBpZiAoYXJncy50bXBEaXIpIHtcbiAgICAgIGF3YWl0IHZhbGlkYXRlVG1wRGlyKGFyZ3MudG1wRGlyKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihlcnIubWVzc2FnZS5yZWQpO1xuICAgIGlmICh0aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9nTm9uRGVmYXVsdEFyZ3NXYXJuaW5nIChhcmdzKSB7XG4gIGxvZ2dlci5pbmZvKCdOb24tZGVmYXVsdCBzZXJ2ZXIgYXJnczonKTtcbiAgaW5zcGVjdE9iamVjdChhcmdzKTtcbn1cblxuZnVuY3Rpb24gbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcgKGNhcHMpIHtcbiAgbG9nZ2VyLmluZm8oJ0RlZmF1bHQgY2FwYWJpbGl0aWVzLCB3aGljaCB3aWxsIGJlIGFkZGVkIHRvIGVhY2ggcmVxdWVzdCAnICtcbiAgICAgICAgICAgICAgJ3VubGVzcyBvdmVycmlkZGVuIGJ5IGRlc2lyZWQgY2FwYWJpbGl0aWVzOicpO1xuICBpbnNwZWN0T2JqZWN0KGNhcHMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2dTdGFydHVwSW5mbyAocGFyc2VyLCBhcmdzKSB7XG4gIGxldCB3ZWxjb21lID0gYFdlbGNvbWUgdG8gQXBwaXVtIHYke0FQUElVTV9WRVJ9YDtcbiAgbGV0IGFwcGl1bVJldiA9IGF3YWl0IGdldEdpdFJldigpO1xuICBpZiAoYXBwaXVtUmV2KSB7XG4gICAgd2VsY29tZSArPSBgIChSRVYgJHthcHBpdW1SZXZ9KWA7XG4gIH1cbiAgbG9nZ2VyLmluZm8od2VsY29tZSk7XG5cbiAgbGV0IHNob3dBcmdzID0gZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MocGFyc2VyLCBhcmdzKTtcbiAgaWYgKF8uc2l6ZShzaG93QXJncykpIHtcbiAgICBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcoc2hvd0FyZ3MpO1xuICB9XG4gIGlmICghXy5pc0VtcHR5KGFyZ3MuZGVmYXVsdENhcGFiaWxpdGllcykpIHtcbiAgICBsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyhhcmdzLmRlZmF1bHRDYXBhYmlsaXRpZXMpO1xuICB9XG4gIC8vIFRPRE86IGJyaW5nIGJhY2sgbG9nbGV2ZWwgcmVwb3J0aW5nIGJlbG93IG9uY2UgbG9nZ2VyIGlzIGZsdXNoZWQgb3V0XG4gIC8vIGxvZ2dlci5pbmZvKCdDb25zb2xlIExvZ0xldmVsOiAnICsgbG9nZ2VyLnRyYW5zcG9ydHMuY29uc29sZS5sZXZlbCk7XG4gIC8vIGlmIChsb2dnZXIudHJhbnNwb3J0cy5maWxlKSB7XG4gIC8vICAgbG9nZ2VyLmluZm8oJ0ZpbGUgTG9nTGV2ZWw6ICcgKyBsb2dnZXIudHJhbnNwb3J0cy5maWxlLmxldmVsKTtcbiAgLy8gfVxufVxuXG5mdW5jdGlvbiBsb2dTZXJ2ZXJQb3J0IChhZGRyZXNzLCBwb3J0KSB7XG4gIGxldCBsb2dNZXNzYWdlID0gYEFwcGl1bSBSRVNUIGh0dHAgaW50ZXJmYWNlIGxpc3RlbmVyIHN0YXJ0ZWQgb24gYCArXG4gICAgICAgICAgICAgICAgICAgYCR7YWRkcmVzc306JHtwb3J0fWA7XG4gIGxvZ2dlci5pbmZvKGxvZ01lc3NhZ2UpO1xufVxuXG4vKipcbiAqIEZpbmQgYW55IHBsdWdpbiBuYW1lIHdoaWNoIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHdoaWNoIGhhcyBiZWVuIHJlcXVlc3RlZCBmb3IgYWN0aXZhdGlvbiBieVxuICogdXNpbmcgdGhlIC0tcGx1Z2lucyBmbGFnLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmQgdGhlbSBhcyBvYmplY3RzIHRvXG4gKiB0aGUgc2VydmVyIGluaXQuIFdlIGFsc28gd2FudCB0byBzZW5kL2Fzc2lnbiB0aGVtIHRvIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtIHRvXG4gKiB3cmFwIGNvbW1hbmQgZXhlY3V0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGFyZ3MgLSBhcmdwYXJzZXIgcGFyc2VkIGRpY3RcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3BsdWdpbi1jb25maWcnKS5kZWZhdWx0fSBwbHVnaW5Db25maWcgLSBhIHBsdWdpbiBleHRlbnNpb24gY29uZmlnXG4gKiBAcmV0dXJucyB7KHtwbHVnaW5OYW1lOiBzdHJpbmd9ICYgKCguLi5hcmdzOiBhbnlbXSkgPT4gdW5rbm93bikpW119XG4gKi9cbmZ1bmN0aW9uIGdldEFjdGl2ZVBsdWdpbnMgKGFyZ3MsIHBsdWdpbkNvbmZpZykge1xuICByZXR1cm4gXy5jb21wYWN0KE9iamVjdC5rZXlzKHBsdWdpbkNvbmZpZy5pbnN0YWxsZWRFeHRlbnNpb25zKS5maWx0ZXIoKHBsdWdpbk5hbWUpID0+XG4gICAgXy5pbmNsdWRlcyhhcmdzLnVzZVBsdWdpbnMsIHBsdWdpbk5hbWUpIHx8XG4gICAgKGFyZ3MudXNlUGx1Z2lucy5sZW5ndGggPT09IDEgJiYgYXJncy51c2VQbHVnaW5zWzBdID09PSBVU0VfQUxMX1BMVUdJTlMpXG4gICkubWFwKChwbHVnaW5OYW1lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgcGx1Z2luICR7cGx1Z2luTmFtZX0uLi5gKTtcbiAgICAgIGNvbnN0IFBsdWdpbkNsYXNzID0gLyoqIEB0eXBlIHt7cGx1Z2luTmFtZTogc3RyaW5nfSAmICgoLi4uYXJnczogYW55W10pID0+IHVua25vd24pfSAqLyhwbHVnaW5Db25maWcucmVxdWlyZShwbHVnaW5OYW1lKSk7XG5cbiAgICAgIFBsdWdpbkNsYXNzLnBsdWdpbk5hbWUgPSBwbHVnaW5OYW1lOyAvLyBzdG9yZSB0aGUgcGx1Z2luIG5hbWUgb24gdGhlIGNsYXNzIHNvIGl0IGNhbiBiZSB1c2VkIGxhdGVyXG4gICAgICByZXR1cm4gUGx1Z2luQ2xhc3M7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYENvdWxkIG5vdCBsb2FkIHBsdWdpbiAnJHtwbHVnaW5OYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgICAgICAgYGluIGxvYWRpbmcgdGhlIHBsdWdpbiB3YXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICBsb2dnZXIuZGVidWcoZXJyLnN0YWNrKTtcbiAgICB9XG4gIH0pKTtcbn1cblxuLyoqXG4gKiBGaW5kIGFueSBkcml2ZXIgbmFtZSB3aGljaCBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB0dXJuIGVhY2ggb25lIGludG8gaXRzIGNsYXNzLCBzbyB3ZSBjYW4gc2VuZFxuICogdGhlbSBhcyBvYmplY3RzIHRvIHRoZSBzZXJ2ZXIgaW5pdCBpbiBjYXNlIHRoZXkgbmVlZCB0byBhZGQgbWV0aG9kcy9yb3V0ZXMgb3IgdXBkYXRlIHRoZSBzZXJ2ZXIuXG4gKiBJZiB0aGUgLS1kcml2ZXJzIGZsYWcgd2FzIGdpdmVuLCB0aGlzIG1ldGhvZCBvbmx5IGxvYWRzIHRoZSBnaXZlbiBkcml2ZXJzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcmdzIC0gYXJncGFyc2VyIHBhcnNlZCBkaWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9kcml2ZXItY29uZmlnJykuZGVmYXVsdH0gZHJpdmVyQ29uZmlnIC0gYSBkcml2ZXIgZXh0ZW5zaW9uIGNvbmZpZ1xuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVEcml2ZXJzIChhcmdzLCBkcml2ZXJDb25maWcpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChPYmplY3Qua2V5cyhkcml2ZXJDb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucykuZmlsdGVyKChkcml2ZXJOYW1lKSA9PlxuICAgIF8uaW5jbHVkZXMoYXJncy51c2VEcml2ZXJzLCBkcml2ZXJOYW1lKSB8fCBhcmdzLnVzZURyaXZlcnMubGVuZ3RoID09PSAwXG4gICkubWFwKChkcml2ZXJOYW1lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgZHJpdmVyICR7ZHJpdmVyTmFtZX0uLi5gKTtcbiAgICAgIHJldHVybiBkcml2ZXJDb25maWcucmVxdWlyZShkcml2ZXJOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgQ291bGQgbm90IGxvYWQgZHJpdmVyICcke2RyaXZlck5hbWV9Jywgc28gaXQgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBFcnJvciBgICtcbiAgICAgICAgICAgICAgICAgICBgaW4gbG9hZGluZyB0aGUgZHJpdmVyIHdhczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhlcnIuc3RhY2spO1xuICAgIH1cbiAgfSkpO1xufVxuXG5mdW5jdGlvbiBnZXRTZXJ2ZXJVcGRhdGVycyAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gWy4uLmRyaXZlckNsYXNzZXMsIC4uLnBsdWdpbkNsYXNzZXNdLm1hcCgoa2xhc3MpID0+IGtsYXNzLnVwZGF0ZVNlcnZlcikuZmlsdGVyKEJvb2xlYW4pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYU1ldGhvZE1hcCAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcykge1xuICByZXR1cm4gWy4uLmRyaXZlckNsYXNzZXMsIC4uLnBsdWdpbkNsYXNzZXNdLnJlZHVjZShcbiAgICAobWFwLCBrbGFzcykgPT4gKHsuLi5tYXAsIC4uLmtsYXNzLm5ld01ldGhvZE1hcH0pLFxuICAgIHt9XG4gICk7XG59XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgQXBwaXVtLCBidXQgZG9lcyBub3Qgc3RhcnQgdGhlIHNlcnZlci5cbiAqXG4gKiBVc2UgdGhpcyB0byBnZXQgYXQgdGhlIGNvbmZpZ3VyYXRpb24gc2NoZW1hLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQge2luaXQsIGdldFNjaGVtYX0gZnJvbSAnYXBwaXVtJztcbiAqIGNvbnN0IG9wdGlvbnMgPSB7fTsgLy8gY29uZmlnIG9iamVjdFxuICogYXdhaXQgaW5pdChvcHRpb25zKTtcbiAqIGNvbnN0IHNjaGVtYSA9IGdldFNjaGVtYSgpOyAvLyBlbnRpcmUgY29uZmlnIHNjaGVtYSBpbmNsdWRpbmcgcGx1Z2lucyBhbmQgZHJpdmVyc1xuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBbYXJnc10gLSBQYXJzZWQgYXJnc1xuICogQHJldHVybnMge1Byb21pc2U8e3BhcnNlcjogaW1wb3J0KCcuL2NsaS9wYXJzZXInKS5BcmdQYXJzZXJ9ICYgUGFydGlhbDx7YXBwaXVtRHJpdmVyOiBBcHBpdW1Ecml2ZXIsIHBhcnNlZEFyZ3M6IFBhcnNlZEFyZ3N9Pj59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXQgKGFyZ3MpIHtcbiAgY29uc3QgcGFyc2VyID0gYXdhaXQgZ2V0UGFyc2VyKCk7XG4gIGxldCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZTtcbiAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICBsZXQgcGFyc2VkQXJncztcbiAgaWYgKGFyZ3MpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgY29udGFpbmluZyBwYWNrYWdlIGluc3RlYWQgb2YgcnVubmluZyBhcyBhIENMSSBwcm9jZXNzLFxuICAgIC8vIHRoYXQgcGFja2FnZSBtaWdodCBub3QgYXBwcmVjaWF0ZSB1cyBjYWxsaW5nICdwcm9jZXNzLmV4aXQnIHdpbGx5LVxuICAgIC8vIG5pbGx5LCBzbyBnaXZlIGl0IHRoZSBvcHRpb24gdG8gaGF2ZSB1cyB0aHJvdyBpbnN0ZWFkIG9mIGV4aXRcbiAgICBpZiAoYXJncy50aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93SW5zdGVhZE9mRXhpdCA9IHRydWU7XG4gICAgICAvLyBidXQgcmVtb3ZlIGl0IHNpbmNlIGl0J3Mgbm90IGEgcmVhbCBzZXJ2ZXIgYXJnIHBlciBzZVxuICAgICAgZGVsZXRlIGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0O1xuICAgIH1cbiAgICBwYXJzZWRBcmdzID0gey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH07XG4gIH0gZWxzZSB7XG4gICAgLy8gb3RoZXJ3aXNlIHBhcnNlIGZyb20gQ0xJXG4gICAgcGFyc2VkQXJncyA9IHBhcnNlci5wYXJzZUFyZ3MoKTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1Jlc3VsdCA9IGF3YWl0IHJlYWRDb25maWdGaWxlKHBhcnNlZEFyZ3MuY29uZmlnRmlsZSk7XG5cbiAgaWYgKCFfLmlzRW1wdHkoY29uZmlnUmVzdWx0LmVycm9ycykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9ycyBpbiBjb25maWcgZmlsZSAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuICR7Y29uZmlnUmVzdWx0LnJlYXNvbiA/PyBjb25maWdSZXN1bHQuZXJyb3JzfWApO1xuICB9XG5cbiAgLy8gbWVyZ2UgY29uZmlnIGFuZCBhcHBseSBkZWZhdWx0cy5cbiAgLy8gdGhlIG9yZGVyIG9mIHByZWNlbmRlY2UgaXM6XG4gIC8vIDEuIGNvbW1hbmQgbGluZSBhcmdzXG4gIC8vIDIuIGNvbmZpZyBmaWxlXG4gIC8vIDMuIGRlZmF1bHRzIGZyb20gY29uZmlnIGZpbGUuXG4gIGlmIChwYXJzZWRBcmdzLnN1YmNvbW1hbmQgPT09IFNFUlZFUl9TVUJDT01NQU5EKSB7XG4gICAgcGFyc2VkQXJncyA9IF8uZGVmYXVsdHNEZWVwKFxuICAgICAgcGFyc2VkQXJncyxcbiAgICAgIGNvbmZpZ1Jlc3VsdC5jb25maWc/LnNlcnZlcixcbiAgICAgIGdldERlZmF1bHRzRnJvbVNjaGVtYSgpXG4gICAgKTtcbiAgfVxuXG4gIHBhcnNlZEFyZ3MgPSBfLmRlZmF1bHRzRGVlcChcbiAgICBwYXJzZWRBcmdzLFxuICAgIGNvbmZpZ1Jlc3VsdC5jb25maWcgPz8ge30sXG4gICk7XG5cbiAgYXdhaXQgbG9nc2lua0luaXQocGFyc2VkQXJncyk7XG5cbiAgLy8gaWYgdGhlIHVzZXIgaGFzIHJlcXVlc3RlZCB0aGUgJ2RyaXZlcicgQ0xJLCBkb24ndCBydW4gdGhlIG5vcm1hbCBzZXJ2ZXIsXG4gIC8vIGJ1dCBpbnN0ZWFkIHBhc3MgY29udHJvbCB0byB0aGUgZHJpdmVyIENMSVxuICBpZiAocGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBEUklWRVJfVFlQRSkge1xuICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQocGFyc2VkQXJncywgcGFyc2VkQXJncy5zdWJjb21tYW5kLCBkcml2ZXJDb25maWcpO1xuICAgIHJldHVybiB7cGFyc2VyfTtcbiAgfVxuICBpZiAocGFyc2VkQXJncy5zdWJjb21tYW5kID09PSBQTFVHSU5fVFlQRSkge1xuICAgIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQocGFyc2VkQXJncywgcGFyc2VkQXJncy5zdWJjb21tYW5kLCBwbHVnaW5Db25maWcpO1xuICAgIHJldHVybiB7cGFyc2VyfTtcbiAgfVxuXG4gIGlmIChwYXJzZWRBcmdzLmxvZ0ZpbHRlcnMpIHtcbiAgICBjb25zdCB7aXNzdWVzLCBydWxlc30gPSBhd2FpdCBsb2dGYWN0b3J5LmxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMocGFyc2VkQXJncy5sb2dGaWx0ZXJzKTtcbiAgICBpZiAoIV8uaXNFbXB0eShpc3N1ZXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBsb2cgZmlsdGVyaW5nIHJ1bGVzIGNvbmZpZyAnJHtwYXJzZWRBcmdzLmxvZ0ZpbHRlcnN9JyBoYXMgaXNzdWVzOiBgICtcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoaXNzdWVzLCBudWxsLCAyKSk7XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkocnVsZXMpKSB7XG4gICAgICBsb2dnZXIud2FybihgRm91bmQgbm8gbG9nIGZpbHRlcmluZyBydWxlcyBpbiAnJHtwYXJzZWRBcmdzLmxvZ0ZpbHRlcnN9Jy4gSXMgdGhhdCBleHBlY3RlZD9gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nZ2VyLmluZm8oYExvYWRlZCAke3V0aWwucGx1cmFsaXplKCdmaWx0ZXJpbmcgcnVsZScsIHJ1bGVzLmxlbmd0aCwgdHJ1ZSl9IGZyb20gJyR7cGFyc2VkQXJncy5sb2dGaWx0ZXJzfSdgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBhcHBpdW1Ecml2ZXIgPSBuZXcgQXBwaXVtRHJpdmVyKHBhcnNlZEFyZ3MpO1xuICAvLyBzZXQgdGhlIGNvbmZpZyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiBtYXRjaCBkcml2ZXJzIHRvIGNhcHNcbiAgYXBwaXVtRHJpdmVyLmRyaXZlckNvbmZpZyA9IGRyaXZlckNvbmZpZztcbiAgYXdhaXQgcHJlZmxpZ2h0Q2hlY2tzKHBhcnNlZEFyZ3MsIHRocm93SW5zdGVhZE9mRXhpdCk7XG5cbiAgcmV0dXJuIHtwYXJzZXIsIGFwcGl1bURyaXZlciwgcGFyc2VkQXJnc307XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7UGFyc2VkQXJnc30gW2FyZ3NdXG4gKiBAcmV0dXJuc1xuICovXG5hc3luYyBmdW5jdGlvbiBtYWluIChhcmdzKSB7XG4gIGNvbnN0IHtwYXJzZXIsIGFwcGl1bURyaXZlciwgcGFyc2VkQXJnc30gPSBhd2FpdCBpbml0KGFyZ3MpO1xuXG4gIGlmICghYXBwaXVtRHJpdmVyIHx8ICFwYXJzZWRBcmdzKSB7XG4gICAgLy8gaWYgdGhpcyBicmFuY2ggaXMgdGFrZW4sIHdlJ3ZlIHJ1biBhIGRpZmZlcmVudCBzdWJjb21tYW5kLCBzbyB0aGVyZSdzIG5vdGhpbmdcbiAgICAvLyBsZWZ0IHRvIGRvIGhlcmUuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGx1Z2luQ2xhc3NlcyA9IGdldEFjdGl2ZVBsdWdpbnMocGFyc2VkQXJncywgcGx1Z2luQ29uZmlnKTtcbiAgLy8gc2V0IHRoZSBhY3RpdmUgcGx1Z2lucyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbSBmb3IgY29tbWFuZHNcbiAgYXBwaXVtRHJpdmVyLnBsdWdpbkNsYXNzZXMgPSBwbHVnaW5DbGFzc2VzO1xuXG4gIGF3YWl0IGxvZ1N0YXJ0dXBJbmZvKHBhcnNlciwgcGFyc2VkQXJncyk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGFwcGl1bURyaXZlcik7XG5cbiAgY29uc3QgZHJpdmVyQ2xhc3NlcyA9IGdldEFjdGl2ZURyaXZlcnMocGFyc2VkQXJncywgZHJpdmVyQ29uZmlnKTtcbiAgY29uc3Qgc2VydmVyVXBkYXRlcnMgPSBnZXRTZXJ2ZXJVcGRhdGVycyhkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcbiAgY29uc3QgZXh0cmFNZXRob2RNYXAgPSBnZXRFeHRyYU1ldGhvZE1hcChkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKTtcblxuICBjb25zdCBzZXJ2ZXJPcHRzID0ge1xuICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbixcbiAgICBwb3J0OiBwYXJzZWRBcmdzLnBvcnQsXG4gICAgaG9zdG5hbWU6IHBhcnNlZEFyZ3MuYWRkcmVzcyxcbiAgICBhbGxvd0NvcnM6IHBhcnNlZEFyZ3MuYWxsb3dDb3JzLFxuICAgIGJhc2VQYXRoOiBwYXJzZWRBcmdzLmJhc2VQYXRoLFxuICAgIHNlcnZlclVwZGF0ZXJzLFxuICAgIGV4dHJhTWV0aG9kTWFwLFxuICB9O1xuICBpZiAocGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0KSB7XG4gICAgc2VydmVyT3B0cy5rZWVwQWxpdmVUaW1lb3V0ID0gcGFyc2VkQXJncy5rZWVwQWxpdmVUaW1lb3V0ICogMTAwMDtcbiAgfVxuICBsZXQgc2VydmVyO1xuICB0cnkge1xuICAgIHNlcnZlciA9IGF3YWl0IGJhc2VTZXJ2ZXIoc2VydmVyT3B0cyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5lcnJvcihgQ291bGQgbm90IGNvbmZpZ3VyZSBBcHBpdW0gc2VydmVyLiBJdCdzIHBvc3NpYmxlIHRoYXQgYSBkcml2ZXIgb3IgcGx1Z2luIHRyaWVkIGAgK1xuICAgICAgICAgICAgICAgICBgdG8gdXBkYXRlIHRoZSBzZXJ2ZXIgYW5kIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgbG9nZ2VyLmRlYnVnKGVyci5zdGFjayk7XG4gICAgcmV0dXJuIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxuXG4gIGlmIChwYXJzZWRBcmdzLmFsbG93Q29ycykge1xuICAgIGxvZ2dlci53YXJuKCdZb3UgaGF2ZSBlbmFibGVkIENPUlMgcmVxdWVzdHMgZnJvbSBhbnkgaG9zdC4gQmUgY2FyZWZ1bCBub3QgJyArXG4gICAgICAgICAgICAgICAgJ3RvIHZpc2l0IHNpdGVzIHdoaWNoIGNvdWxkIG1hbGljaW91c2x5IHRyeSB0byBzdGFydCBBcHBpdW0gJyArXG4gICAgICAgICAgICAgICAgJ3Nlc3Npb25zIG9uIHlvdXIgbWFjaGluZScpO1xuICB9XG4gIC8vIEB0cy1pZ25vcmVcbiAgYXBwaXVtRHJpdmVyLnNlcnZlciA9IHNlcnZlcjtcbiAgdHJ5IHtcbiAgICAvLyBjb25maWd1cmUgYXMgbm9kZSBvbiBncmlkLCBpZiBuZWNlc3NhcnlcbiAgICAvLyBmYWxzeSB2YWx1ZXMgc2hvdWxkIG5vdCBjYXVzZSB0aGlzIHRvIHJ1blxuICAgIGlmIChwYXJzZWRBcmdzLm5vZGVjb25maWcpIHtcbiAgICAgIGF3YWl0IHJlZ2lzdGVyTm9kZShwYXJzZWRBcmdzLm5vZGVjb25maWcsIHBhcnNlZEFyZ3MuYWRkcmVzcywgcGFyc2VkQXJncy5wb3J0LCBwYXJzZWRBcmdzLmJhc2VQYXRoKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgIHRocm93IGVycjtcbiAgfVxuXG4gIGZvciAoY29uc3Qgc2lnbmFsIG9mIFsnU0lHSU5UJywgJ1NJR1RFUk0nXSkge1xuICAgIHByb2Nlc3Mub25jZShzaWduYWwsIGFzeW5jIGZ1bmN0aW9uIG9uU2lnbmFsICgpIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBSZWNlaXZlZCAke3NpZ25hbH0gLSBzaHV0dGluZyBkb3duYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBhcHBpdW1Ecml2ZXIuZGVsZXRlQWxsU2Vzc2lvbnMoe1xuICAgICAgICAgIGZvcmNlOiB0cnVlLFxuICAgICAgICAgIHJlYXNvbjogYFRoZSBwcm9jZXNzIGhhcyByZWNlaXZlZCAke3NpZ25hbH0gc2lnbmFsYCxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHNlcnZlci5jbG9zZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGUpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2dTZXJ2ZXJQb3J0KHBhcnNlZEFyZ3MuYWRkcmVzcywgcGFyc2VkQXJncy5wb3J0KTtcbiAgZHJpdmVyQ29uZmlnLnByaW50KCk7XG4gIHBsdWdpbkNvbmZpZy5wcmludChwbHVnaW5DbGFzc2VzLm1hcCgocCkgPT4gcC5wbHVnaW5OYW1lKSk7XG5cbiAgcmV0dXJuIHNlcnZlcjtcbn1cblxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGFzeW5jaWZ5KG1haW4pO1xufVxuXG4vLyBldmVyeXRoaW5nIGJlbG93IGhlcmUgaXMgaW50ZW5kZWQgdG8gYmUgYSBwdWJsaWMgQVBJLlxuZXhwb3J0IHsgbWFpbiwgaW5pdCB9O1xuZXhwb3J0IHsgQVBQSVVNX0hPTUUgfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuZXhwb3J0IHsgZ2V0U2NoZW1hLCB2YWxpZGF0ZSwgZmluYWxpemVTY2hlbWEgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuZXhwb3J0IHsgcmVhZENvbmZpZ0ZpbGUgfSBmcm9tICcuL2NvbmZpZy1maWxlJztcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcy90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqL1xuIl0sImZpbGUiOiJsaWIvbWFpbi5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
|
|
362
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9tYWluLmpzIl0sIm5hbWVzIjpbInByZWZsaWdodENoZWNrcyIsImFyZ3MiLCJ0aHJvd0luc3RlYWRPZkV4aXQiLCJsb25nU3RhY2t0cmFjZSIsInJlcXVpcmUiLCJhc3luY190cmFjZV9saW1pdCIsInNob3dCdWlsZEluZm8iLCJwcm9jZXNzIiwiZXhpdCIsInRtcERpciIsImVyciIsImxvZ2dlciIsImVycm9yIiwibWVzc2FnZSIsInJlZCIsImxvZ05vbkRlZmF1bHRBcmdzV2FybmluZyIsImluZm8iLCJsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyIsImNhcHMiLCJsb2dTdGFydHVwSW5mbyIsIndlbGNvbWUiLCJBUFBJVU1fVkVSIiwiYXBwaXVtUmV2Iiwic2hvd0FyZ3MiLCJfIiwic2l6ZSIsImlzRW1wdHkiLCJkZWZhdWx0Q2FwYWJpbGl0aWVzIiwibG9nU2VydmVyUG9ydCIsImFkZHJlc3MiLCJwb3J0IiwibG9nTWVzc2FnZSIsImdldEFjdGl2ZVBsdWdpbnMiLCJwbHVnaW5Db25maWciLCJjb21wYWN0IiwiT2JqZWN0Iiwia2V5cyIsImluc3RhbGxlZEV4dGVuc2lvbnMiLCJmaWx0ZXIiLCJwbHVnaW5OYW1lIiwiaW5jbHVkZXMiLCJ1c2VQbHVnaW5zIiwibGVuZ3RoIiwiVVNFX0FMTF9QTFVHSU5TIiwibWFwIiwiUGx1Z2luQ2xhc3MiLCJkZWJ1ZyIsInN0YWNrIiwiZ2V0QWN0aXZlRHJpdmVycyIsImRyaXZlckNvbmZpZyIsImRyaXZlck5hbWUiLCJ1c2VEcml2ZXJzIiwiZ2V0U2VydmVyVXBkYXRlcnMiLCJkcml2ZXJDbGFzc2VzIiwicGx1Z2luQ2xhc3NlcyIsImdldEV4dHJhTWV0aG9kTWFwIiwicmVkdWNlIiwia2xhc3MiLCJuZXdNZXRob2RNYXAiLCJpbml0IiwicGFyc2VyIiwicHJlQ29uZmlnUGFyc2VkQXJncyIsInBhcnNlZEFyZ3MiLCJkZWZhdWx0cyIsInN1YmNvbW1hbmQiLCJTRVJWRVJfU1VCQ09NTUFORCIsInBhcnNlQXJncyIsImNvbmZpZ1Jlc3VsdCIsImNvbmZpZ0ZpbGUiLCJlcnJvcnMiLCJFcnJvciIsImZpbGVwYXRoIiwicmVhc29uIiwiZGVmYXVsdHNEZWVwIiwiY29uZmlnIiwic2VydmVyIiwic2hvd0NvbmZpZyIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJsb2dGaWx0ZXJzIiwiaXNzdWVzIiwicnVsZXMiLCJsb2dGYWN0b3J5IiwibG9hZFNlY3VyZVZhbHVlc1ByZXByb2Nlc3NpbmdSdWxlcyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ3YXJuIiwidXRpbCIsInBsdXJhbGl6ZSIsImFwcGl1bURyaXZlciIsIkFwcGl1bURyaXZlciIsIm1haW4iLCJyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24iLCJzZXJ2ZXJVcGRhdGVycyIsImV4dHJhTWV0aG9kTWFwIiwic2VydmVyT3B0cyIsImhvc3RuYW1lIiwiYWxsb3dDb3JzIiwiYmFzZVBhdGgiLCJrZWVwQWxpdmVUaW1lb3V0Iiwibm9kZWNvbmZpZyIsImNsb3NlIiwic2lnbmFsIiwib25jZSIsIm9uU2lnbmFsIiwiZGVsZXRlQWxsU2Vzc2lvbnMiLCJmb3JjZSIsImUiLCJwcmludCIsInAiLCJtb2R1bGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7OztBQU9BLGVBQWVBLGVBQWYsQ0FBZ0NDLElBQWhDLEVBQXNDQyxrQkFBa0IsR0FBRyxLQUEzRCxFQUFrRTtBQUNoRSxNQUFJO0FBQ0Y7O0FBQ0EsUUFBSUQsSUFBSSxDQUFDRSxjQUFULEVBQXlCO0FBQ3ZCQyxNQUFBQSxPQUFPLENBQUMsVUFBRCxDQUFQLENBQW9CQyxpQkFBcEIsR0FBd0MsQ0FBQyxDQUF6QztBQUNEOztBQUNELFFBQUlKLElBQUksQ0FBQ0ss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QixDQUFuQjs7QUFFQSxTQUFPb0MsTUFBUDtBQUNEOztBQUtELElBQUl2RSxPQUFPLENBQUN1RixJQUFSLEtBQWlCbUIsTUFBckIsRUFBNkI7QUFDM0IsMEJBQVNuQixJQUFUO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbi8vIHRyYW5zcGlsZTptYWluXG4vLyBAdHMtY2hlY2tcblxuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7IC8vIGxvZ2dlciBuZWVkcyB0byByZW1haW4gZmlyc3Qgb2YgaW1wb3J0c1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIsIHNlcnZlciBhcyBiYXNlU2VydmVyIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyBsb2dnZXIgYXMgbG9nRmFjdG9yeSwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBhc3luY2lmeSB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBBcHBpdW1Ecml2ZXIgfSBmcm9tICcuL2FwcGl1bSc7XG5pbXBvcnQgeyBkcml2ZXJDb25maWcsIHBsdWdpbkNvbmZpZywgVVNFX0FMTF9QTFVHSU5TIH0gZnJvbSAnLi9jbGkvYXJncyc7XG5pbXBvcnQgeyBydW5FeHRlbnNpb25Db21tYW5kIH0gZnJvbSAnLi9jbGkvZXh0ZW5zaW9uJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgZ2V0UGFyc2VyLCBTRVJWRVJfU1VCQ09NTUFORCB9IGZyb20gJy4vY2xpL3BhcnNlcic7XG5pbXBvcnQgeyBBUFBJVU1fVkVSLCBjaGVja05vZGVPaywgZ2V0R2l0UmV2LCBnZXROb25EZWZhdWx0U2VydmVyQXJncywgc2hvd0J1aWxkSW5mbywgdmFsaWRhdGVUbXBEaXIsIHdhcm5Ob2RlRGVwcmVjYXRpb25zLCBzaG93Q29uZmlnIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgcmVhZENvbmZpZ0ZpbGUgfSBmcm9tICcuL2NvbmZpZy1maWxlJztcbmltcG9ydCB7IERSSVZFUl9UWVBFLCBQTFVHSU5fVFlQRSB9IGZyb20gJy4vZXh0ZW5zaW9uLWNvbmZpZyc7XG5pbXBvcnQgcmVnaXN0ZXJOb2RlIGZyb20gJy4vZ3JpZC1yZWdpc3Rlcic7XG5pbXBvcnQgeyBpbml0IGFzIGxvZ3NpbmtJbml0IH0gZnJvbSAnLi9sb2dzaW5rJztcbmltcG9ydCB7IGdldERlZmF1bHRzRm9yU2NoZW1hIH0gZnJvbSAnLi9zY2hlbWEvc2NoZW1hJztcbmltcG9ydCB7IGluc3BlY3QgfSBmcm9tICcuL3V0aWxzJztcblxuLyoqXG4gKlxuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBhcmdzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFt0aHJvd0luc3RlYWRPZkV4aXRdXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZWZsaWdodENoZWNrcyAoYXJncywgdGhyb3dJbnN0ZWFkT2ZFeGl0ID0gZmFsc2UpIHtcbiAgdHJ5IHtcbiAgICBjaGVja05vZGVPaygpO1xuICAgIGlmIChhcmdzLmxvbmdTdGFja3RyYWNlKSB7XG4gICAgICByZXF1aXJlKCdsb25nam9obicpLmFzeW5jX3RyYWNlX2xpbWl0ID0gLTE7XG4gICAgfVxuICAgIGlmIChhcmdzLnNob3dCdWlsZEluZm8pIHtcbiAgICAgIGF3YWl0IHNob3dCdWlsZEluZm8oKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gICAgd2Fybk5vZGVEZXByZWNhdGlvbnMoKTtcblxuICAgIGlmIChhcmdzLnRtcERpcikge1xuICAgICAgYXdhaXQgdmFsaWRhdGVUbXBEaXIoYXJncy50bXBEaXIpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmVycm9yKGVyci5tZXNzYWdlLnJlZCk7XG4gICAgaWYgKHRocm93SW5zdGVhZE9mRXhpdCkge1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UGFydGlhbDxQYXJzZWRBcmdzPn0gYXJnc1xuICovXG5mdW5jdGlvbiBsb2dOb25EZWZhdWx0QXJnc1dhcm5pbmcgKGFyZ3MpIHtcbiAgbG9nZ2VyLmluZm8oJ05vbi1kZWZhdWx0IHNlcnZlciBhcmdzOicpO1xuICBpbnNwZWN0KGFyZ3MpO1xufVxuXG5mdW5jdGlvbiBsb2dEZWZhdWx0Q2FwYWJpbGl0aWVzV2FybmluZyAoY2Fwcykge1xuICBsb2dnZXIuaW5mbygnRGVmYXVsdCBjYXBhYmlsaXRpZXMsIHdoaWNoIHdpbGwgYmUgYWRkZWQgdG8gZWFjaCByZXF1ZXN0ICcgK1xuICAgICAgICAgICAgICAndW5sZXNzIG92ZXJyaWRkZW4gYnkgZGVzaXJlZCBjYXBhYmlsaXRpZXM6Jyk7XG4gIGluc3BlY3QoY2Fwcyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBhcmdzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvZ1N0YXJ0dXBJbmZvIChhcmdzKSB7XG4gIGxldCB3ZWxjb21lID0gYFdlbGNvbWUgdG8gQXBwaXVtIHYke0FQUElVTV9WRVJ9YDtcbiAgbGV0IGFwcGl1bVJldiA9IGF3YWl0IGdldEdpdFJldigpO1xuICBpZiAoYXBwaXVtUmV2KSB7XG4gICAgd2VsY29tZSArPSBgIChSRVYgJHthcHBpdW1SZXZ9KWA7XG4gIH1cbiAgbG9nZ2VyLmluZm8od2VsY29tZSk7XG5cbiAgbGV0IHNob3dBcmdzID0gZ2V0Tm9uRGVmYXVsdFNlcnZlckFyZ3MoYXJncyk7XG4gIGlmIChfLnNpemUoc2hvd0FyZ3MpKSB7XG4gICAgbG9nTm9uRGVmYXVsdEFyZ3NXYXJuaW5nKHNob3dBcmdzKTtcbiAgfVxuICBpZiAoIV8uaXNFbXB0eShhcmdzLmRlZmF1bHRDYXBhYmlsaXRpZXMpKSB7XG4gICAgbG9nRGVmYXVsdENhcGFiaWxpdGllc1dhcm5pbmcoYXJncy5kZWZhdWx0Q2FwYWJpbGl0aWVzKTtcbiAgfVxuICAvLyBUT0RPOiBicmluZyBiYWNrIGxvZ2xldmVsIHJlcG9ydGluZyBiZWxvdyBvbmNlIGxvZ2dlciBpcyBmbHVzaGVkIG91dFxuICAvLyBsb2dnZXIuaW5mbygnQ29uc29sZSBMb2dMZXZlbDogJyArIGxvZ2dlci50cmFuc3BvcnRzLmNvbnNvbGUubGV2ZWwpO1xuICAvLyBpZiAobG9nZ2VyLnRyYW5zcG9ydHMuZmlsZSkge1xuICAvLyAgIGxvZ2dlci5pbmZvKCdGaWxlIExvZ0xldmVsOiAnICsgbG9nZ2VyLnRyYW5zcG9ydHMuZmlsZS5sZXZlbCk7XG4gIC8vIH1cbn1cblxuLyoqXG4gKiBMb2dzIHRoZSBhZGRyZXNzIGFuZCBwb3J0IHRoZSBzZXJ2ZXIgaXMgbGlzdGVuaW5nIG9uXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIEFkZHJlc3NcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0IC0gUG9ydFxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIGxvZ1NlcnZlclBvcnQgKGFkZHJlc3MsIHBvcnQpIHtcbiAgbGV0IGxvZ01lc3NhZ2UgPSBgQXBwaXVtIFJFU1QgaHR0cCBpbnRlcmZhY2UgbGlzdGVuZXIgc3RhcnRlZCBvbiBgICtcbiAgICAgICAgICAgICAgICAgICBgJHthZGRyZXNzfToke3BvcnR9YDtcbiAgbG9nZ2VyLmluZm8obG9nTWVzc2FnZSk7XG59XG5cbi8qKlxuICogRmluZCBhbnkgcGx1Z2luIG5hbWUgd2hpY2ggaGFzIGJlZW4gaW5zdGFsbGVkLCBhbmQgd2hpY2ggaGFzIGJlZW4gcmVxdWVzdGVkIGZvciBhY3RpdmF0aW9uIGJ5XG4gKiB1c2luZyB0aGUgLS11c2UtcGx1Z2lucyBmbGFnLCBhbmQgdHVybiBlYWNoIG9uZSBpbnRvIGl0cyBjbGFzcywgc28gd2UgY2FuIHNlbmQgdGhlbSBhcyBvYmplY3RzXG4gKiB0byB0aGUgc2VydmVyIGluaXQuIFdlIGFsc28gd2FudCB0byBzZW5kL2Fzc2lnbiB0aGVtIHRvIHRoZSB1bWJyZWxsYSBkcml2ZXIgc28gaXQgY2FuIHVzZSB0aGVtXG4gKiB0byB3cmFwIGNvbW1hbmQgZXhlY3V0aW9uXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGFyZ3MgLSBhcmdwYXJzZXIgcGFyc2VkIGRpY3RcbiAqIEBwYXJhbSB7aW1wb3J0KCcuL3BsdWdpbi1jb25maWcnKS5kZWZhdWx0fSBwbHVnaW5Db25maWcgLSBhIHBsdWdpbiBleHRlbnNpb24gY29uZmlnXG4gKiBAcmV0dXJucyB7UGx1Z2luRXh0ZW5zaW9uQ2xhc3NbXX1cbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlUGx1Z2lucyAoYXJncywgcGx1Z2luQ29uZmlnKSB7XG4gIHJldHVybiBfLmNvbXBhY3QoT2JqZWN0LmtleXMocGx1Z2luQ29uZmlnLmluc3RhbGxlZEV4dGVuc2lvbnMpLmZpbHRlcigocGx1Z2luTmFtZSkgPT5cbiAgICBfLmluY2x1ZGVzKGFyZ3MudXNlUGx1Z2lucywgcGx1Z2luTmFtZSkgfHxcbiAgICAoYXJncy51c2VQbHVnaW5zLmxlbmd0aCA9PT0gMSAmJiBhcmdzLnVzZVBsdWdpbnNbMF0gPT09IFVTRV9BTExfUExVR0lOUylcbiAgKS5tYXAoKHBsdWdpbk5hbWUpID0+IHtcbiAgICB0cnkge1xuICAgICAgbG9nZ2VyLmluZm8oYEF0dGVtcHRpbmcgdG8gbG9hZCBwbHVnaW4gJHtwbHVnaW5OYW1lfS4uLmApO1xuICAgICAgY29uc3QgUGx1Z2luQ2xhc3MgPSAvKiogQHR5cGUge1BsdWdpbkV4dGVuc2lvbkNsYXNzfSAqLyhwbHVnaW5Db25maWcucmVxdWlyZShwbHVnaW5OYW1lKSk7XG5cbiAgICAgIFBsdWdpbkNsYXNzLnBsdWdpbk5hbWUgPSBwbHVnaW5OYW1lOyAvLyBzdG9yZSB0aGUgcGx1Z2luIG5hbWUgb24gdGhlIGNsYXNzIHNvIGl0IGNhbiBiZSB1c2VkIGxhdGVyXG4gICAgICByZXR1cm4gUGx1Z2luQ2xhc3M7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYENvdWxkIG5vdCBsb2FkIHBsdWdpbiAnJHtwbHVnaW5OYW1lfScsIHNvIGl0IHdpbGwgbm90IGJlIGF2YWlsYWJsZS4gRXJyb3IgYCArXG4gICAgICAgICAgICAgICAgICAgYGluIGxvYWRpbmcgdGhlIHBsdWdpbiB3YXM6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICBsb2dnZXIuZGVidWcoZXJyLnN0YWNrKTtcbiAgICB9XG4gIH0pKTtcbn1cblxuLyoqXG4gKiBGaW5kIGFueSBkcml2ZXIgbmFtZSB3aGljaCBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB0dXJuIGVhY2ggb25lIGludG8gaXRzIGNsYXNzLCBzbyB3ZSBjYW4gc2VuZFxuICogdGhlbSBhcyBvYmplY3RzIHRvIHRoZSBzZXJ2ZXIgaW5pdCBpbiBjYXNlIHRoZXkgbmVlZCB0byBhZGQgbWV0aG9kcy9yb3V0ZXMgb3IgdXBkYXRlIHRoZSBzZXJ2ZXIuXG4gKiBJZiB0aGUgLS1kcml2ZXJzIGZsYWcgd2FzIGdpdmVuLCB0aGlzIG1ldGhvZCBvbmx5IGxvYWRzIHRoZSBnaXZlbiBkcml2ZXJzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBhcmdzIC0gYXJncGFyc2VyIHBhcnNlZCBkaWN0XG4gKiBAcGFyYW0ge2ltcG9ydCgnLi9kcml2ZXItY29uZmlnJykuZGVmYXVsdH0gZHJpdmVyQ29uZmlnIC0gYSBkcml2ZXIgZXh0ZW5zaW9uIGNvbmZpZ1xuICovXG5mdW5jdGlvbiBnZXRBY3RpdmVEcml2ZXJzIChhcmdzLCBkcml2ZXJDb25maWcpIHtcbiAgcmV0dXJuIF8uY29tcGFjdChPYmplY3Qua2V5cyhkcml2ZXJDb25maWcuaW5zdGFsbGVkRXh0ZW5zaW9ucykuZmlsdGVyKChkcml2ZXJOYW1lKSA9PlxuICAgIF8uaW5jbHVkZXMoYXJncy51c2VEcml2ZXJzLCBkcml2ZXJOYW1lKSB8fCBhcmdzLnVzZURyaXZlcnMubGVuZ3RoID09PSAwXG4gICkubWFwKChkcml2ZXJOYW1lKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci5pbmZvKGBBdHRlbXB0aW5nIHRvIGxvYWQgZHJpdmVyICR7ZHJpdmVyTmFtZX0uLi5gKTtcbiAgICAgIHJldHVybiBkcml2ZXJDb25maWcucmVxdWlyZShkcml2ZXJOYW1lKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5lcnJvcihgQ291bGQgbm90IGxvYWQgZHJpdmVyICcke2RyaXZlck5hbWV9Jywgc28gaXQgd2lsbCBub3QgYmUgYXZhaWxhYmxlLiBFcnJvciBgICtcbiAgICAgICAgICAgICAgICAgICBgaW4gbG9hZGluZyB0aGUgZHJpdmVyIHdhczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhlcnIuc3RhY2spO1xuICAgIH1cbiAgfSkpO1xufVxuXG4vKipcbiAqIEdldHMgYSBsaXN0IG9mIGB1cGRhdGVTZXJ2ZXJgIGZ1bmN0aW9ucyBmcm9tIGFsbCBleHRlbnNpb25zXG4gKiBAcGFyYW0ge0RyaXZlckV4dGVuc2lvbkNsYXNzW119IGRyaXZlckNsYXNzZXNcbiAqIEBwYXJhbSB7UGx1Z2luRXh0ZW5zaW9uQ2xhc3NbXX0gcGx1Z2luQ2xhc3Nlc1xuICogQHJldHVybnMge1N0YXRpY0V4dE1lbWJlcnNbJ3VwZGF0ZVNlcnZlciddW119XG4gKi9cbmZ1bmN0aW9uIGdldFNlcnZlclVwZGF0ZXJzIChkcml2ZXJDbGFzc2VzLCBwbHVnaW5DbGFzc2VzKSB7XG4gIHJldHVybiBfLmNvbXBhY3QoXy5tYXAoWy4uLmRyaXZlckNsYXNzZXMsIC4uLnBsdWdpbkNsYXNzZXNdLCAndXBkYXRlU2VydmVyJykpO1xufVxuXG4vKipcbiAqIE1ha2VzIGEgYmlnIGBNZXRob2RNYXBgIGZyb20gYWxsIHRoZSBsaXR0bGUgYE1ldGhvZE1hcGBzIGluIHRoZSBleHRlbnNpb25zXG4gKiBAcGFyYW0ge0RyaXZlckV4dGVuc2lvbkNsYXNzW119IGRyaXZlckNsYXNzZXNcbiAqIEBwYXJhbSB7UGx1Z2luRXh0ZW5zaW9uQ2xhc3NbXX0gcGx1Z2luQ2xhc3Nlc1xuICogQHJldHVybnMge2ltcG9ydCgnQGFwcGl1bS9iYXNlLWRyaXZlcicpLk1ldGhvZE1hcH1cbiAqL1xuZnVuY3Rpb24gZ2V0RXh0cmFNZXRob2RNYXAgKGRyaXZlckNsYXNzZXMsIHBsdWdpbkNsYXNzZXMpIHtcbiAgcmV0dXJuIFsuLi5kcml2ZXJDbGFzc2VzLCAuLi5wbHVnaW5DbGFzc2VzXS5yZWR1Y2UoXG4gICAgKG1hcCwga2xhc3MpID0+ICh7Li4ubWFwLCAuLi5rbGFzcy5uZXdNZXRob2RNYXB9KSxcbiAgICB7fVxuICApO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIEFwcGl1bSwgYnV0IGRvZXMgbm90IHN0YXJ0IHRoZSBzZXJ2ZXIuXG4gKlxuICogVXNlIHRoaXMgdG8gZ2V0IGF0IHRoZSBjb25maWd1cmF0aW9uIHNjaGVtYS5cbiAqXG4gKiBJZiBgYXJnc2AgY29udGFpbnMgYSBub24tZW1wdHkgYHN1YmNvbW1hbmRgIHdoaWNoIGlzIG5vdCBgc2VydmVyYCwgdGhpcyBmdW5jdGlvblxuICogd2lsbCByZXNvbHZlIHdpdGggYW4gZW1wdHkgb2JqZWN0LlxuICpcbiAqIEBwYXJhbSB7UGFyc2VkQXJnc30gW2FyZ3NdIC0gUGFyc2VkIGFyZ3NcbiAqIEByZXR1cm5zIHtQcm9taXNlPFBhcnRpYWw8e2FwcGl1bURyaXZlcjogQXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzOiBQYXJzZWRBcmdzfT4+fVxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7aW5pdCwgZ2V0U2NoZW1hfSBmcm9tICdhcHBpdW0nO1xuICogY29uc3Qgb3B0aW9ucyA9IHt9OyAvLyBjb25maWcgb2JqZWN0XG4gKiBhd2FpdCBpbml0KG9wdGlvbnMpO1xuICogY29uc3Qgc2NoZW1hID0gZ2V0U2NoZW1hKCk7IC8vIGVudGlyZSBjb25maWcgc2NoZW1hIGluY2x1ZGluZyBwbHVnaW5zIGFuZCBkcml2ZXJzXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGluaXQgKGFyZ3MpIHtcbiAgY29uc3QgcGFyc2VyID0gYXdhaXQgZ2V0UGFyc2VyKCk7XG4gIGxldCB0aHJvd0luc3RlYWRPZkV4aXQgPSBmYWxzZTtcbiAgLyoqIEB0eXBlIHtQYXJzZWRBcmdzfSAqL1xuICBsZXQgcHJlQ29uZmlnUGFyc2VkQXJncztcbiAgLyoqIEB0eXBlIHt0eXBlb2YgcHJlQ29uZmlnUGFyc2VkQXJncyAmIGltcG9ydCgndHlwZS1mZXN0JykuQXN5bmNSZXR1cm5UeXBlPHJlYWRDb25maWdGaWxlPlsnY29uZmlnJ119ICovXG4gIGxldCBwYXJzZWRBcmdzO1xuICAvKipcbiAgICogVGhpcyBpcyBhIGRlZmluaXRpb24gKGluc3RlYWQgb2YgZGVjbGFyYXRpb24pIGJlY2F1c2UgVFMgY2FuJ3QgZmlndXJlIG91dFxuICAgKiB0aGUgdmFsdWUgd2lsbCBiZSBkZWZpbmVkIHdoZW4gaXQncyB1c2VkLlxuICAgKiBAdHlwZSB7UmV0dXJuVHlwZTxnZXREZWZhdWx0c0ZvclNjaGVtYT59XG4gICAqL1xuICBsZXQgZGVmYXVsdHMgPSB7fTtcbiAgaWYgKGFyZ3MpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgY29udGFpbmluZyBwYWNrYWdlIGluc3RlYWQgb2YgcnVubmluZyBhcyBhIENMSSBwcm9jZXNzLFxuICAgIC8vIHRoYXQgcGFja2FnZSBtaWdodCBub3QgYXBwcmVjaWF0ZSB1cyBjYWxsaW5nICdwcm9jZXNzLmV4aXQnIHdpbGx5LVxuICAgIC8vIG5pbGx5LCBzbyBnaXZlIGl0IHRoZSBvcHRpb24gdG8gaGF2ZSB1cyB0aHJvdyBpbnN0ZWFkIG9mIGV4aXRcbiAgICBpZiAoYXJncy50aHJvd0luc3RlYWRPZkV4aXQpIHtcbiAgICAgIHRocm93SW5zdGVhZE9mRXhpdCA9IHRydWU7XG4gICAgICAvLyBidXQgcmVtb3ZlIGl0IHNpbmNlIGl0J3Mgbm90IGEgcmVhbCBzZXJ2ZXIgYXJnIHBlciBzZVxuICAgICAgZGVsZXRlIGFyZ3MudGhyb3dJbnN0ZWFkT2ZFeGl0O1xuICAgIH1cbiAgICBwcmVDb25maWdQYXJzZWRBcmdzID0gey4uLmFyZ3MsIHN1YmNvbW1hbmQ6IGFyZ3Muc3ViY29tbWFuZCA/PyBTRVJWRVJfU1VCQ09NTUFORH07XG4gIH0gZWxzZSB7XG4gICAgLy8gb3RoZXJ3aXNlIHBhcnNlIGZyb20gQ0xJXG4gICAgcHJlQ29uZmlnUGFyc2VkQXJncyA9IHBhcnNlci5wYXJzZUFyZ3MoKTtcbiAgfVxuXG4gIGNvbnN0IGNvbmZpZ1Jlc3VsdCA9IGF3YWl0IHJlYWRDb25maWdGaWxlKHByZUNvbmZpZ1BhcnNlZEFyZ3MuY29uZmlnRmlsZSk7XG5cbiAgaWYgKCFfLmlzRW1wdHkoY29uZmlnUmVzdWx0LmVycm9ycykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9ycyBpbiBjb25maWcgZmlsZSAke2NvbmZpZ1Jlc3VsdC5maWxlcGF0aH06XFxuICR7Y29uZmlnUmVzdWx0LnJlYXNvbiA/PyBjb25maWdSZXN1bHQuZXJyb3JzfWApO1xuICB9XG5cblxuICAvLyBtZXJnZSBjb25maWcgYW5kIGFwcGx5IGRlZmF1bHRzLlxuICAvLyB0aGUgb3JkZXIgb2YgcHJlY2VuZGVjZSBpczpcbiAgLy8gMS4gY29tbWFuZCBsaW5lIGFyZ3NcbiAgLy8gMi4gY29uZmlnIGZpbGVcbiAgLy8gMy4gZGVmYXVsdHMgZnJvbSBjb25maWcgZmlsZS5cbiAgaWYgKHByZUNvbmZpZ1BhcnNlZEFyZ3Muc3ViY29tbWFuZCA9PT0gU0VSVkVSX1NVQkNPTU1BTkQpIHtcbiAgICBkZWZhdWx0cyA9IGdldERlZmF1bHRzRm9yU2NoZW1hKGZhbHNlKTtcblxuICAgIHBhcnNlZEFyZ3MgPSBfLmRlZmF1bHRzRGVlcChcbiAgICAgIHByZUNvbmZpZ1BhcnNlZEFyZ3MsXG4gICAgICBjb25maWdSZXN1bHQuY29uZmlnPy5zZXJ2ZXIsXG4gICAgICBkZWZhdWx0c1xuICAgICk7XG5cbiAgICBpZiAocHJlQ29uZmlnUGFyc2VkQXJncy5zaG93Q29uZmlnKSB7XG4gICAgICBzaG93Q29uZmlnKGdldE5vbkRlZmF1bHRTZXJ2ZXJBcmdzKHByZUNvbmZpZ1BhcnNlZEFyZ3MpLCBjb25maWdSZXN1bHQsIGRlZmF1bHRzLCBwYXJzZWRBcmdzKTtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICBwYXJzZWRBcmdzID0gcHJlQ29uZmlnUGFyc2VkQXJncztcbiAgfVxuXG4gIGF3YWl0IGxvZ3NpbmtJbml0KHBhcnNlZEFyZ3MpO1xuXG4gIC8vIGlmIHRoZSB1c2VyIGhhcyByZXF1ZXN0ZWQgdGhlICdkcml2ZXInIENMSSwgZG9uJ3QgcnVuIHRoZSBub3JtYWwgc2VydmVyLFxuICAvLyBidXQgaW5zdGVhZCBwYXNzIGNvbnRyb2wgdG8gdGhlIGRyaXZlciBDTElcbiAgaWYgKHBhcnNlZEFyZ3Muc3ViY29tbWFuZCA9PT0gRFJJVkVSX1RZUEUpIHtcbiAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKHBhcnNlZEFyZ3MsIHBhcnNlZEFyZ3Muc3ViY29tbWFuZCwgZHJpdmVyQ29uZmlnKTtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgaWYgKHBhcnNlZEFyZ3Muc3ViY29tbWFuZCA9PT0gUExVR0lOX1RZUEUpIHtcbiAgICBhd2FpdCBydW5FeHRlbnNpb25Db21tYW5kKHBhcnNlZEFyZ3MsIHBhcnNlZEFyZ3Muc3ViY29tbWFuZCwgcGx1Z2luQ29uZmlnKTtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBpZiAocGFyc2VkQXJncy5sb2dGaWx0ZXJzKSB7XG4gICAgY29uc3Qge2lzc3VlcywgcnVsZXN9ID0gYXdhaXQgbG9nRmFjdG9yeS5sb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKHBhcnNlZEFyZ3MubG9nRmlsdGVycyk7XG4gICAgaWYgKCFfLmlzRW1wdHkoaXNzdWVzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgbG9nIGZpbHRlcmluZyBydWxlcyBjb25maWcgJyR7cGFyc2VkQXJncy5sb2dGaWx0ZXJzfScgaGFzIGlzc3VlczogYCArXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KGlzc3VlcywgbnVsbCwgMikpO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHJ1bGVzKSkge1xuICAgICAgbG9nZ2VyLndhcm4oYEZvdW5kIG5vIGxvZyBmaWx0ZXJpbmcgcnVsZXMgaW4gJyR7cGFyc2VkQXJncy5sb2dGaWx0ZXJzfScuIElzIHRoYXQgZXhwZWN0ZWQ/YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBMb2FkZWQgJHt1dGlsLnBsdXJhbGl6ZSgnZmlsdGVyaW5nIHJ1bGUnLCBydWxlcy5sZW5ndGgsIHRydWUpfSBmcm9tICcke3BhcnNlZEFyZ3MubG9nRmlsdGVyc30nYCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3QgYXBwaXVtRHJpdmVyID0gbmV3IEFwcGl1bURyaXZlcihwYXJzZWRBcmdzKTtcbiAgLy8gc2V0IHRoZSBjb25maWcgb24gdGhlIHVtYnJlbGxhIGRyaXZlciBzbyBpdCBjYW4gbWF0Y2ggZHJpdmVycyB0byBjYXBzXG4gIGFwcGl1bURyaXZlci5kcml2ZXJDb25maWcgPSBkcml2ZXJDb25maWc7XG4gIGF3YWl0IHByZWZsaWdodENoZWNrcyhwYXJzZWRBcmdzLCB0aHJvd0luc3RlYWRPZkV4aXQpO1xuXG4gIHJldHVybiB7YXBwaXVtRHJpdmVyLCBwYXJzZWRBcmdzfTtcbn1cblxuLyoqXG4gKiBJbml0aWFsaXplcyBBcHBpdW0ncyBjb25maWcuICBTdGFydHMgc2VydmVyIGlmIGFwcHJvcHJpYXRlIGFuZCByZXNvbHZlcyB0aGVcbiAqIHNlcnZlciBpbnN0YW5jZSBpZiBzbzsgb3RoZXJ3aXNlIHJlc29sdmVzIHcvIGB1bmRlZmluZWRgLlxuICogQHBhcmFtIHtQYXJzZWRBcmdzfSBbYXJnc10gLSBBcmd1bWVudHMgZnJvbSBDTEkgb3Igb3RoZXJ3aXNlXG4gKiBAcmV0dXJucyB7UHJvbWlzZTxpbXBvcnQoJ2V4cHJlc3MnKS5FeHByZXNzfHVuZGVmaW5lZD59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIG1haW4gKGFyZ3MpIHtcbiAgY29uc3Qge2FwcGl1bURyaXZlciwgcGFyc2VkQXJnc30gPSBhd2FpdCBpbml0KGFyZ3MpO1xuXG4gIGlmICghYXBwaXVtRHJpdmVyIHx8ICFwYXJzZWRBcmdzKSB7XG4gICAgLy8gaWYgdGhpcyBicmFuY2ggaXMgdGFrZW4sIHdlJ3ZlIHJ1biBhIGRpZmZlcmVudCBzdWJjb21tYW5kLCBzbyB0aGVyZSdzIG5vdGhpbmdcbiAgICAvLyBsZWZ0IHRvIGRvIGhlcmUuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgcGx1Z2luQ2xhc3NlcyA9IGdldEFjdGl2ZVBsdWdpbnMocGFyc2VkQXJncywgcGx1Z2luQ29uZmlnKTtcbiAgLy8gc2V0IHRoZSBhY3RpdmUgcGx1Z2lucyBvbiB0aGUgdW1icmVsbGEgZHJpdmVyIHNvIGl0IGNhbiB1c2UgdGhlbSBmb3IgY29tbWFuZHNcbiAgYXBwaXVtRHJpdmVyLnBsdWdpbkNsYXNzZXMgPSBwbHVnaW5DbGFzc2VzO1xuXG4gIGF3YWl0IGxvZ1N0YXJ0dXBJbmZvKHBhcnNlZEFyZ3MpO1xuICBsZXQgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uID0gbWFrZVJvdXRlcihhcHBpdW1Ecml2ZXIpO1xuXG4gIGNvbnN0IGRyaXZlckNsYXNzZXMgPSBnZXRBY3RpdmVEcml2ZXJzKHBhcnNlZEFyZ3MsIGRyaXZlckNvbmZpZyk7XG4gIGNvbnN0IHNlcnZlclVwZGF0ZXJzID0gZ2V0U2VydmVyVXBkYXRlcnMoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcyk7XG4gIGNvbnN0IGV4dHJhTWV0aG9kTWFwID0gZ2V0RXh0cmFNZXRob2RNYXAoZHJpdmVyQ2xhc3NlcywgcGx1Z2luQ2xhc3Nlcyk7XG5cbiAgY29uc3Qgc2VydmVyT3B0cyA9IHtcbiAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sXG4gICAgcG9ydDogcGFyc2VkQXJncy5wb3J0LFxuICAgIGhvc3RuYW1lOiBwYXJzZWRBcmdzLmFkZHJlc3MsXG4gICAgYWxsb3dDb3JzOiBwYXJzZWRBcmdzLmFsbG93Q29ycyxcbiAgICBiYXNlUGF0aDogcGFyc2VkQXJncy5iYXNlUGF0aCxcbiAgICBzZXJ2ZXJVcGRhdGVycyxcbiAgICBleHRyYU1ldGhvZE1hcCxcbiAgfTtcbiAgaWYgKHBhcnNlZEFyZ3Mua2VlcEFsaXZlVGltZW91dCkge1xuICAgIHNlcnZlck9wdHMua2VlcEFsaXZlVGltZW91dCA9IHBhcnNlZEFyZ3Mua2VlcEFsaXZlVGltZW91dCAqIDEwMDA7XG4gIH1cbiAgbGV0IHNlcnZlcjtcbiAgdHJ5IHtcbiAgICBzZXJ2ZXIgPSBhd2FpdCBiYXNlU2VydmVyKHNlcnZlck9wdHMpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2dnZXIuZXJyb3IoYENvdWxkIG5vdCBjb25maWd1cmUgQXBwaXVtIHNlcnZlci4gSXQncyBwb3NzaWJsZSB0aGF0IGEgZHJpdmVyIG9yIHBsdWdpbiB0cmllZCBgICtcbiAgICAgICAgICAgICAgICAgYHRvIHVwZGF0ZSB0aGUgc2VydmVyIGFuZCBmYWlsZWQuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIGxvZ2dlci5kZWJ1ZyhlcnIuc3RhY2spO1xuICAgIHJldHVybiBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICBpZiAocGFyc2VkQXJncy5hbGxvd0NvcnMpIHtcbiAgICBsb2dnZXIud2FybignWW91IGhhdmUgZW5hYmxlZCBDT1JTIHJlcXVlc3RzIGZyb20gYW55IGhvc3QuIEJlIGNhcmVmdWwgbm90ICcgK1xuICAgICAgICAgICAgICAgICd0byB2aXNpdCBzaXRlcyB3aGljaCBjb3VsZCBtYWxpY2lvdXNseSB0cnkgdG8gc3RhcnQgQXBwaXVtICcgK1xuICAgICAgICAgICAgICAgICdzZXNzaW9ucyBvbiB5b3VyIG1hY2hpbmUnKTtcbiAgfVxuICBhcHBpdW1Ecml2ZXIuc2VydmVyID0gc2VydmVyO1xuICB0cnkge1xuICAgIC8vIGNvbmZpZ3VyZSBhcyBub2RlIG9uIGdyaWQsIGlmIG5lY2Vzc2FyeVxuICAgIC8vIGZhbHN5IHZhbHVlcyBzaG91bGQgbm90IGNhdXNlIHRoaXMgdG8gcnVuXG4gICAgaWYgKHBhcnNlZEFyZ3Mubm9kZWNvbmZpZykge1xuICAgICAgYXdhaXQgcmVnaXN0ZXJOb2RlKHBhcnNlZEFyZ3Mubm9kZWNvbmZpZywgcGFyc2VkQXJncy5hZGRyZXNzLCBwYXJzZWRBcmdzLnBvcnQsIHBhcnNlZEFyZ3MuYmFzZVBhdGgpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgdGhyb3cgZXJyO1xuICB9XG5cbiAgZm9yIChjb25zdCBzaWduYWwgb2YgWydTSUdJTlQnLCAnU0lHVEVSTSddKSB7XG4gICAgcHJvY2Vzcy5vbmNlKHNpZ25hbCwgYXN5bmMgZnVuY3Rpb24gb25TaWduYWwgKCkge1xuICAgICAgbG9nZ2VyLmluZm8oYFJlY2VpdmVkICR7c2lnbmFsfSAtIHNodXR0aW5nIGRvd25gKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGFwcGl1bURyaXZlci5kZWxldGVBbGxTZXNzaW9ucyh7XG4gICAgICAgICAgZm9yY2U6IHRydWUsXG4gICAgICAgICAgcmVhc29uOiBgVGhlIHByb2Nlc3MgaGFzIHJlY2VpdmVkICR7c2lnbmFsfSBzaWduYWxgLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgc2VydmVyLmNsb3NlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nZ2VyLndhcm4oZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGxvZ1NlcnZlclBvcnQocGFyc2VkQXJncy5hZGRyZXNzLCBwYXJzZWRBcmdzLnBvcnQpO1xuICBkcml2ZXJDb25maWcucHJpbnQoKTtcbiAgcGx1Z2luQ29uZmlnLnByaW50KHBsdWdpbkNsYXNzZXMubWFwKChwKSA9PiBwLnBsdWdpbk5hbWUpKTtcblxuICByZXR1cm4gc2VydmVyO1xufVxuXG4vLyBOT1RFOiB0aGlzIGlzIGhlcmUgZm9yIGJhY2t3YXJkcyBjb21wYXQgZm9yIGFueSBzY3JpcHRzIHJlZmVyZW5jaW5nIGBtYWluLmpzYCBkaXJlY3RseVxuLy8gKG1vcmUgc3BlY2lmaWNhbGx5LCBgYnVpbGQvbGliL21haW4uanNgKVxuLy8gdGhlIGV4ZWN1dGFibGUgaXMgbm93IGAuLi9pbmRleC5qc2AsIHNvIHRoYXQgbW9kdWxlIHdpbGwgdHlwaWNhbGx5IGJlIGByZXF1aXJlLm1haW5gLlxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGFzeW5jaWZ5KG1haW4pO1xufVxuXG4vLyBldmVyeXRoaW5nIGJlbG93IGhlcmUgaXMgaW50ZW5kZWQgdG8gYmUgYSBwdWJsaWMgQVBJLlxuZXhwb3J0IHsgbWFpbiwgaW5pdCB9O1xuZXhwb3J0IHsgQVBQSVVNX0hPTUUgfSBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuZXhwb3J0IHsgZ2V0U2NoZW1hLCB2YWxpZGF0ZSwgZmluYWxpemVTY2hlbWEgfSBmcm9tICcuL3NjaGVtYS9zY2hlbWEnO1xuZXhwb3J0IHsgcmVhZENvbmZpZ0ZpbGUgfSBmcm9tICcuL2NvbmZpZy1maWxlJztcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuLi90eXBlcy90eXBlcycpLlBhcnNlZEFyZ3N9IFBhcnNlZEFyZ3NcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4vYXBwaXVtJykuUGx1Z2luRXh0ZW5zaW9uQ2xhc3N9IFBsdWdpbkV4dGVuc2lvbkNsYXNzXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCcuL2FwcGl1bScpLkRyaXZlckV4dGVuc2lvbkNsYXNzfSBEcml2ZXJFeHRlbnNpb25DbGFzc1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnLi9hcHBpdW0nKS5TdGF0aWNFeHRNZW1iZXJzfSBTdGF0aWNFeHRNZW1iZXJzXG4gKi9cbiJdLCJmaWxlIjoibGliL21haW4uanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
@@ -56,7 +56,7 @@ class PluginConfig extends _extensionConfig.default {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
if (_lodash.default.isEmpty(activeNames)) {
|
|
59
|
-
_logger.default.info('No plugins activated. Use the --plugins flag with names of plugins to activate');
|
|
59
|
+
_logger.default.info('No plugins activated. Use the --use-plugins flag with names of plugins to activate');
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
@@ -66,4 +66,4 @@ exports.default = PluginConfig;
|
|
|
66
66
|
(0, _defineProperty2.default)(PluginConfig, "_instances", {});require('source-map-support').install();
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wbHVnaW4tY29uZmlnLmpzIl0sIm5hbWVzIjpbIlBsdWdpbkNvbmZpZyIsIkV4dGVuc2lvbkNvbmZpZyIsImNvbnN0cnVjdG9yIiwiYXBwaXVtSG9tZSIsImxvZ0ZuIiwiUExVR0lOX1RZUEUiLCJnZXRJbnN0YW5jZSIsImluc3RhbmNlIiwiX2luc3RhbmNlcyIsImV4dGVuc2lvbkRlc2MiLCJwbHVnaW5OYW1lIiwidmVyc2lvbiIsInByaW50IiwiYWN0aXZlTmFtZXMiLCJwbHVnaW5OYW1lcyIsIk9iamVjdCIsImtleXMiLCJpbnN0YWxsZWRFeHRlbnNpb25zIiwiXyIsImlzRW1wdHkiLCJsb2ciLCJpbmZvIiwicGx1Z2luRGF0YSIsInRvUGFpcnMiLCJhY3RpdmVUeHQiLCJpbmNsdWRlcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVlLE1BQU1BLFlBQU4sU0FBMkJDLHdCQUEzQixDQUEyQztBQWtCeERDLEVBQUFBLFdBQVcsQ0FBRUMsVUFBRixFQUFjQyxLQUFkLEVBQXFCO0FBQzlCLFVBQU1ELFVBQU4sRUFBa0JFLHdCQUFsQixFQUErQkQsS0FBL0I7QUFDRDs7QUFRaUIsU0FBWEUsV0FBVyxDQUFFSCxVQUFGLEVBQWNDLEtBQWQsRUFBcUI7QUFBQTs7QUFDckMsVUFBTUcsUUFBUSw0QkFBR1AsWUFBWSxDQUFDUSxVQUFiLENBQXdCTCxVQUF4QixDQUFILHlFQUEwQyxJQUFJSCxZQUFKLENBQWlCRyxVQUFqQixFQUE2QkMsS0FBN0IsQ0FBeEQ7QUFDQUosSUFBQUEsWUFBWSxDQUFDUSxVQUFiLENBQXdCTCxVQUF4QixJQUFzQ0ksUUFBdEM7QUFDQSxXQUFPQSxRQUFQO0FBQ0Q7O0FBRURFLEVBQUFBLGFBQWEsQ0FBRUMsVUFBRixFQUFjO0FBQUNDLElBQUFBO0FBQUQsR0FBZCxFQUF5QjtBQUNwQyxXQUFRLEdBQUVELFVBQVcsSUFBR0MsT0FBUSxFQUFoQztBQUNEOztBQUVEQyxFQUFBQSxLQUFLLENBQUVDLFdBQUYsRUFBZTtBQUNsQixVQUFNQyxXQUFXLEdBQUdDLE1BQU0sQ0FBQ0MsSUFBUCxDQUFZLEtBQUtDLG1CQUFqQixDQUFwQjs7QUFFQSxRQUFJQyxnQkFBRUMsT0FBRixDQUFVTCxXQUFWLENBQUosRUFBNEI7QUFDMUJNLHNCQUFJQyxJQUFKLENBQVUsMERBQUQsR0FDQSxnREFEVDs7QUFFQTtBQUNEOztBQUVERCxvQkFBSUMsSUFBSixDQUFVLG9CQUFWOztBQUNBLFNBQUssTUFBTSxDQUFDWCxVQUFELEVBQWFZLFVBQWIsQ0FBWCxJQUF1Q0osZ0JBQUVLLE9BQUYsQ0FBVSxLQUFLTixtQkFBZixDQUF2QyxFQUE0RTtBQUMxRSxZQUFNTyxTQUFTLEdBQUdOLGdCQUFFTyxRQUFGLENBQVdaLFdBQVgsRUFBd0JILFVBQXhCLElBQXNDLFdBQXRDLEdBQW9ELEVBQXRFOztBQUNBVSxzQkFBSUMsSUFBSixDQUFVLE9BQU0sS0FBS1osYUFBTCxDQUFtQkMsVUFBbkIsRUFBK0JZLFVBQS9CLENBQTJDLEdBQUVFLFNBQVUsRUFBdkU7QUFDRDs7QUFFRCxRQUFJTixnQkFBRUMsT0FBRixDQUFVTixXQUFWLENBQUosRUFBNEI7QUFDMUJPLHNCQUFJQyxJQUFKLENBQVMsb0ZBQVQ7QUFDRDtBQUNGOztBQXhEdUQ7Ozs4QkFBckNyQixZLGdCQVFDLEUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEV4dGVuc2lvbkNvbmZpZyBmcm9tICcuL2V4dGVuc2lvbi1jb25maWcnO1xuaW1wb3J0IHsgUExVR0lOX1RZUEUgfSBmcm9tICcuL2V4dC1jb25maWctaW8nO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBsdWdpbkNvbmZpZyBleHRlbmRzIEV4dGVuc2lvbkNvbmZpZyB7XG5cbiAgLyoqXG4gICAqIEEgbWFwcGluZyBvZiBgQVBQSVVNX0hPTUVgIHZhbHVlcyB0byB7QGxpbmsgUGx1Z2luQ29uZmlnfSBpbnN0YW5jZXMuXG4gICAqIEVhY2ggYEFQUElVTV9IT01FYCBzaG91bGQgb25seSBoYXZlIG9uZSBhc3NvY2lhdGVkIGBQbHVnaW5Db25maWdgIGluc3RhbmNlLlxuICAgKiBAdHlwZSB7UmVjb3JkPHN0cmluZyxQbHVnaW5Db25maWc+fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhdGljIF9pbnN0YW5jZXMgPSB7fTtcblxuICAvKipcbiAgICogQ2FsbCB7QGxpbmsgUGx1Z2luQ29uZmlnLmdldEluc3RhbmNlfSBpbnN0ZWFkLlxuICAgKlxuICAgKiBKdXN0IGNhbGxzIHRoZSBzdXBlcmNsYXNzJyBjb25zdHJ1Y3RvciB3aXRoIHRoZSBjb3JyZWN0IGV4dGVuc2lvbiB0eXBlXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhcHBpdW1Ib21lIC0gYEFQUElVTV9IT01FYCBwYXRoXG4gICAqIEBwYXJhbSB7KC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkKX0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAgICovXG4gIGNvbnN0cnVjdG9yIChhcHBpdW1Ib21lLCBsb2dGbikge1xuICAgIHN1cGVyKGFwcGl1bUhvbWUsIFBMVUdJTl9UWVBFLCBsb2dGbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBvciBnZXRzIGFuIGluc3RhbmNlIG9mIHtAbGluayBQbHVnaW5Db25maWd9IGJhc2VkIHZhbHVlIG9mIGBhcHBpdW1Ib21lYFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYXBwaXVtSG9tZSAtIGBBUFBJVU1fSE9NRWAgcGF0aFxuICAgKiBAcGFyYW0geyguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZH0gW2xvZ0ZuXSAtIE9wdGlvbmFsIGxvZ2dpbmcgZnVuY3Rpb25cbiAgICogQHJldHVybnMge1BsdWdpbkNvbmZpZ31cbiAgICovXG4gIHN0YXRpYyBnZXRJbnN0YW5jZSAoYXBwaXVtSG9tZSwgbG9nRm4pIHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzW2FwcGl1bUhvbWVdID8/IG5ldyBQbHVnaW5Db25maWcoYXBwaXVtSG9tZSwgbG9nRm4pO1xuICAgIFBsdWdpbkNvbmZpZy5faW5zdGFuY2VzW2FwcGl1bUhvbWVdID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG5cbiAgZXh0ZW5zaW9uRGVzYyAocGx1Z2luTmFtZSwge3ZlcnNpb259KSB7XG4gICAgcmV0dXJuIGAke3BsdWdpbk5hbWV9QCR7dmVyc2lvbn1gO1xuICB9XG5cbiAgcHJpbnQgKGFjdGl2ZU5hbWVzKSB7XG4gICAgY29uc3QgcGx1Z2luTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmluc3RhbGxlZEV4dGVuc2lvbnMpO1xuXG4gICAgaWYgKF8uaXNFbXB0eShwbHVnaW5OYW1lcykpIHtcbiAgICAgIGxvZy5pbmZvKGBObyBwbHVnaW5zIGhhdmUgYmVlbiBpbnN0YWxsZWQuIFVzZSB0aGUgXCJhcHBpdW0gcGx1Z2luXCIgYCArXG4gICAgICAgICAgICAgICAnY29tbWFuZCB0byBpbnN0YWxsIHRoZSBvbmUocykgeW91IHdhbnQgdG8gdXNlLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBBdmFpbGFibGUgcGx1Z2luczpgKTtcbiAgICBmb3IgKGNvbnN0IFtwbHVnaW5OYW1lLCBwbHVnaW5EYXRhXSBvZiBfLnRvUGFpcnModGhpcy5pbnN0YWxsZWRFeHRlbnNpb25zKSkge1xuICAgICAgY29uc3QgYWN0aXZlVHh0ID0gXy5pbmNsdWRlcyhhY3RpdmVOYW1lcywgcGx1Z2luTmFtZSkgPyAnIChBQ1RJVkUpJyA6ICcnO1xuICAgICAgbG9nLmluZm8oYCAgLSAke3RoaXMuZXh0ZW5zaW9uRGVzYyhwbHVnaW5OYW1lLCBwbHVnaW5EYXRhKX0ke2FjdGl2ZVR4dH1gKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc0VtcHR5KGFjdGl2ZU5hbWVzKSkge1xuICAgICAgbG9nLmluZm8oJ05vIHBsdWdpbnMgYWN0aXZhdGVkLiBVc2UgdGhlIC0tdXNlLXBsdWdpbnMgZmxhZyB3aXRoIG5hbWVzIG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUnKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJmaWxlIjoibGliL3BsdWdpbi1jb25maWcuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
package/build/lib/plugins.js
CHANGED
|
@@ -8,9 +8,11 @@ exports.KNOWN_PLUGINS = void 0;
|
|
|
8
8
|
require("source-map-support/register");
|
|
9
9
|
|
|
10
10
|
const KNOWN_PLUGINS = {
|
|
11
|
-
images: '@appium/images-plugin'
|
|
11
|
+
images: '@appium/images-plugin',
|
|
12
|
+
'execute-driver': '@appium/execute-driver-plugin',
|
|
13
|
+
'relaxed-caps': '@appium/relaxed-caps-plugin'
|
|
12
14
|
};
|
|
13
15
|
exports.KNOWN_PLUGINS = KNOWN_PLUGINS;require('source-map-support').install();
|
|
14
16
|
|
|
15
17
|
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9wbHVnaW5zLmpzIl0sIm5hbWVzIjpbIktOT1dOX1BMVUdJTlMiLCJpbWFnZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlBLE1BQU1BLGFBQWEsR0FBRztBQUNwQkMsRUFBQUEsTUFBTSxFQUFFLHVCQURZO0FBRXBCLG9CQUFrQiwrQkFGRTtBQUdwQixrQkFBZ0I7QUFISSxDQUF0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoaXMgaXMgYSBtYXAgb2YgcGx1Z2luIG5hbWVzIHRvIG5wbSBwYWNrYWdlcyByZXByZXNlbnRpbmcgdGhvc2UgcGx1Z2lucy5cbi8vIFRoZSBwbHVnaW5zIGluIHRoaXMgbGlzdCB3aWxsIGJlIGF2YWlsYWJsZSB0byB0aGUgQ0xJIHNvIHVzZXJzIGNhbiBqdXN0XG4vLyB0eXBlICdhcHBpdW0gcGx1Z2luIGluc3RhbGwgJ25hbWUnJywgcmF0aGVyIHRoYW4gaGF2aW5nIHRvIHNwZWNpZnkgdGhlIGZ1bGxcbi8vIG5wbSBwYWNrYWdlLiBJLmUuLCB0aGVzZSBhcmUgdGhlIG9mZmljaWFsbHkgcmVjb2duaXplZCBwbHVnaW5zLlxuY29uc3QgS05PV05fUExVR0lOUyA9IHtcbiAgaW1hZ2VzOiAnQGFwcGl1bS9pbWFnZXMtcGx1Z2luJyxcbiAgJ2V4ZWN1dGUtZHJpdmVyJzogJ0BhcHBpdW0vZXhlY3V0ZS1kcml2ZXItcGx1Z2luJyxcbiAgJ3JlbGF4ZWQtY2Fwcyc6ICdAYXBwaXVtL3JlbGF4ZWQtY2Fwcy1wbHVnaW4nLFxufTtcblxuZXhwb3J0IHtcbiAgS05PV05fUExVR0lOUyxcbn07XG4iXSwiZmlsZSI6ImxpYi9wbHVnaW5zLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
|
@@ -182,7 +182,8 @@ const schema = {
|
|
|
182
182
|
default: false,
|
|
183
183
|
description: 'Disable additional security checks, so it is possible to use some advanced features, provided by drivers supporting this option. Only enable it if all the clients are in the trusted network and it\'s not the case if a client could potentially break out of the session sandbox. Specific features can be overridden by using "deny-insecure"',
|
|
184
184
|
title: 'relaxed-security config',
|
|
185
|
-
type: 'boolean'
|
|
185
|
+
type: 'boolean',
|
|
186
|
+
appiumCliDest: 'relaxedSecurityEnabled'
|
|
186
187
|
},
|
|
187
188
|
'session-override': {
|
|
188
189
|
default: false,
|
|
@@ -249,4 +250,4 @@ var _default = schema;
|
|
|
249
250
|
exports.default = _default;require('source-map-support').install();
|
|
250
251
|
|
|
251
252
|
|
|
252
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvYXBwaXVtLWNvbmZpZy1zY2hlbWEuanMiXSwibmFtZXMiOlsic2NoZW1hIiwiJHNjaGVtYSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiZGVzY3JpcHRpb24iLCJwcm9wZXJ0aWVzIiwic2VydmVyIiwiYWRkcmVzcyIsIiRjb21tZW50IiwiYXBwaXVtQ2xpQWxpYXNlcyIsImRlZmF1bHQiLCJmb3JtYXQiLCJ0aXRsZSIsInR5cGUiLCJhcHBpdW1DbGlUcmFuc2Zvcm1lciIsIml0ZW1zIiwidW5pcXVlSXRlbXMiLCJtYXhpbXVtIiwibWluaW11bSIsImRyaXZlciIsImxvZyIsImFwcGl1bUNsaURlc3QiLCJlbnVtIiwibm9kZWNvbmZpZyIsInBsdWdpbiIsInBvcnQiLCJ0bXAiLCJhcHBpdW1DbGlEZXNjcmlwdGlvbiIsIndlYmhvb2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLE1BQU1BLE1BQU0sR0FBeUI7QUFDbkNDLEVBQUFBLE9BQU8sRUFBRSx3Q0FEMEI7QUFFbkNDLEVBQUFBLG9CQUFvQixFQUFFLEtBRmE7QUFHbkNDLEVBQUFBLFdBQVcsRUFBRSx5Q0FIc0I7QUFJbkNDLEVBQUFBLFVBQVUsRUFBRTtBQUNWQyxJQUFBQSxNQUFNLEVBQUU7QUFDTkgsTUFBQUEsb0JBQW9CLEVBQUUsS0FEaEI7QUFFTkMsTUFBQUEsV0FBVyxFQUFFLCtDQUZQO0FBR05DLE1BQUFBLFVBQVUsRUFBRTtBQUNWRSxRQUFBQSxPQUFPLEVBQUU7QUFDUEMsVUFBQUEsUUFBUSxFQUNOLDREQUZLO0FBR1BDLFVBQUFBLGdCQUFnQixFQUFFLENBQUMsR0FBRCxDQUhYO0FBSVBDLFVBQUFBLE9BQU8sRUFBRSxTQUpGO0FBS1BOLFVBQUFBLFdBQVcsRUFBRSx5QkFMTjtBQU1QTyxVQUFBQSxNQUFNLEVBQUUsVUFORDtBQU9QQyxVQUFBQSxLQUFLLEVBQUUsZ0JBUEE7QUFRUEMsVUFBQUEsSUFBSSxFQUFFO0FBUkMsU0FEQztBQVdWLHNCQUFjO0FBQ1pULFVBQUFBLFdBQVcsRUFDVCw4RUFGVTtBQUdaUSxVQUFBQSxLQUFLLEVBQUUsbUJBSEs7QUFJWkMsVUFBQUEsSUFBSSxFQUFFLFNBSk07QUFLWkgsVUFBQUEsT0FBTyxFQUFFO0FBTEcsU0FYSjtBQWtCViwwQkFBa0I7QUFDaEJJLFVBQUFBLG9CQUFvQixFQUFFLEtBRE47QUFFaEJKLFVBQUFBLE9BQU8sRUFBRSxFQUZPO0FBR2hCTixVQUFBQSxXQUFXLEVBQ1QsaVVBSmM7QUFLaEJXLFVBQUFBLEtBQUssRUFBRTtBQUNMRixZQUFBQSxJQUFJLEVBQUU7QUFERCxXQUxTO0FBUWhCRCxVQUFBQSxLQUFLLEVBQUUsdUJBUlM7QUFTaEJDLFVBQUFBLElBQUksRUFBRSxPQVRVO0FBVWhCRyxVQUFBQSxXQUFXLEVBQUU7QUFWRyxTQWxCUjtBQThCVixxQkFBYTtBQUNYUCxVQUFBQSxnQkFBZ0IsRUFBRSxDQUFDLElBQUQsQ0FEUDtBQUVYQyxVQUFBQSxPQUFPLEVBQUUsRUFGRTtBQUdYTixVQUFBQSxXQUFXLEVBQ1QsK0VBSlM7QUFLWFEsVUFBQUEsS0FBSyxFQUFFLGtCQUxJO0FBTVhDLFVBQUFBLElBQUksRUFBRTtBQU5LLFNBOUJIO0FBc0NWLDRCQUFvQjtBQUNsQkosVUFBQUEsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFELENBREE7QUFFbEJMLFVBQUFBLFdBQVcsRUFBRSxrREFGSztBQUdsQlEsVUFBQUEsS0FBSyxFQUFFLHlCQUhXO0FBSWxCQyxVQUFBQSxJQUFJLEVBQUU7QUFKWSxTQXRDVjtBQTRDVix5QkFBaUI7QUFDZkosVUFBQUEsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFELENBREg7QUFFZkMsVUFBQUEsT0FBTyxFQUFFLElBRk07QUFHZk4sVUFBQUEsV0FBVyxFQUFFLHlDQUhFO0FBSWZhLFVBQUFBLE9BQU8sRUFBRSxLQUpNO0FBS2ZDLFVBQUFBLE9BQU8sRUFBRSxDQUxNO0FBTWZOLFVBQUFBLEtBQUssRUFBRSxzQkFOUTtBQU9mQyxVQUFBQSxJQUFJLEVBQUU7QUFQUyxTQTVDUDtBQXFEViw2QkFBcUI7QUFDbkJILFVBQUFBLE9BQU8sRUFBRSxLQURVO0FBRW5CTixVQUFBQSxXQUFXLEVBQ1QsZ0VBSGlCO0FBSW5CUSxVQUFBQSxLQUFLLEVBQUUsMEJBSlk7QUFLbkJDLFVBQUFBLElBQUksRUFBRTtBQUxhLFNBckRYO0FBNERWLGdDQUF3QjtBQUN0QkwsVUFBQUEsUUFBUSxFQUFFLE1BRFk7QUFFdEJDLFVBQUFBLGdCQUFnQixFQUFFLENBQUMsSUFBRCxDQUZJO0FBR3RCTCxVQUFBQSxXQUFXLEVBQ1Qsa01BSm9CO0FBS3RCUSxVQUFBQSxLQUFLLEVBQUUsNkJBTGU7QUFNdEJDLFVBQUFBLElBQUksRUFBRTtBQU5nQixTQTVEZDtBQW9FVix5QkFBaUI7QUFDZkwsVUFBQUEsUUFBUSxFQUFFLHVDQURLO0FBRWZNLFVBQUFBLG9CQUFvQixFQUFFLEtBRlA7QUFHZkosVUFBQUEsT0FBTyxFQUFFLEVBSE07QUFJZk4sVUFBQUEsV0FBVyxFQUNULHVXQUxhO0FBTWZXLFVBQUFBLEtBQUssRUFBRTtBQUNMRixZQUFBQSxJQUFJLEVBQUU7QUFERCxXQU5RO0FBU2ZELFVBQUFBLEtBQUssRUFBRSxzQkFUUTtBQVVmQyxVQUFBQSxJQUFJLEVBQUUsT0FWUztBQVdmRyxVQUFBQSxXQUFXLEVBQUU7QUFYRSxTQXBFUDtBQWlGVkcsUUFBQUEsTUFBTSxFQUFFO0FBQ05mLFVBQUFBLFdBQVcsRUFDVCwrRUFGSTtBQUdOQyxVQUFBQSxVQUFVLEVBQUUsRUFITjtBQUlOTyxVQUFBQSxLQUFLLEVBQUUsZUFKRDtBQUtOQyxVQUFBQSxJQUFJLEVBQUU7QUFMQSxTQWpGRTtBQXdGViw4QkFBc0I7QUFDcEJKLFVBQUFBLGdCQUFnQixFQUFFLENBQUMsSUFBRCxDQURFO0FBRXBCQyxVQUFBQSxPQUFPLEVBQUUsR0FGVztBQUdwQk4sVUFBQUEsV0FBVyxFQUNULGlLQUprQjtBQUtwQmMsVUFBQUEsT0FBTyxFQUFFLENBTFc7QUFNcEJOLFVBQUFBLEtBQUssRUFBRSwyQkFOYTtBQU9wQkMsVUFBQUEsSUFBSSxFQUFFO0FBUGMsU0F4Rlo7QUFpR1YsMEJBQWtCO0FBQ2hCSCxVQUFBQSxPQUFPLEVBQUUsS0FETztBQUVoQk4sVUFBQUEsV0FBVyxFQUFFLG1DQUZHO0FBR2hCUSxVQUFBQSxLQUFLLEVBQUUsdUJBSFM7QUFJaEJDLFVBQUFBLElBQUksRUFBRTtBQUpVLFNBakdSO0FBdUdWTyxRQUFBQSxHQUFHLEVBQUU7QUFDSFgsVUFBQUEsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFELENBRGY7QUFFSFksVUFBQUEsYUFBYSxFQUFFLFNBRlo7QUFHSGpCLFVBQUFBLFdBQVcsRUFBRSxtQ0FIVjtBQUlIUSxVQUFBQSxLQUFLLEVBQUUsWUFKSjtBQUtIQyxVQUFBQSxJQUFJLEVBQUU7QUFMSCxTQXZHSztBQThHVix1QkFBZTtBQUNiTCxVQUFBQSxRQUFRLEVBQUUsTUFERztBQUViSixVQUFBQSxXQUFXLEVBQUUsaUNBRkE7QUFHYlcsVUFBQUEsS0FBSyxFQUFFO0FBQ0xGLFlBQUFBLElBQUksRUFBRTtBQURELFdBSE07QUFNYkQsVUFBQUEsS0FBSyxFQUFFLG9CQU5NO0FBT2JDLFVBQUFBLElBQUksRUFBRTtBQVBPLFNBOUdMO0FBdUhWLHFCQUFhO0FBQ1hRLFVBQUFBLGFBQWEsRUFBRSxVQURKO0FBRVhYLFVBQUFBLE9BQU8sRUFBRSxPQUZFO0FBR1hOLFVBQUFBLFdBQVcsRUFBRSw0QkFIRjtBQUlYa0IsVUFBQUEsSUFBSSxFQUFFLENBQ0osTUFESSxFQUVKLFlBRkksRUFHSixXQUhJLEVBSUosV0FKSSxFQUtKLFlBTEksRUFNSixNQU5JLEVBT0osWUFQSSxFQVFKLFdBUkksRUFTSixXQVRJLEVBVUosWUFWSSxFQVdKLE9BWEksRUFZSixhQVpJLEVBYUosWUFiSSxFQWNKLFlBZEksRUFlSixhQWZJLEVBZ0JKLE9BaEJJLEVBaUJKLGFBakJJLEVBa0JKLFlBbEJJLEVBbUJKLFlBbkJJLEVBb0JKLGFBcEJJLENBSks7QUEwQlhWLFVBQUFBLEtBQUssRUFBRSxrQkExQkk7QUEyQlhDLFVBQUFBLElBQUksRUFBRTtBQTNCSyxTQXZISDtBQW9KVix5QkFBaUI7QUFDZkgsVUFBQUEsT0FBTyxFQUFFLEtBRE07QUFFZk4sVUFBQUEsV0FBVyxFQUFFLG9DQUZFO0FBR2ZRLFVBQUFBLEtBQUssRUFBRSxzQkFIUTtBQUlmQyxVQUFBQSxJQUFJLEVBQUU7QUFKUyxTQXBKUDtBQTBKVix5QkFBaUI7QUFDZkgsVUFBQUEsT0FBTyxFQUFFLEtBRE07QUFFZk4sVUFBQUEsV0FBVyxFQUFFLG1DQUZFO0FBR2ZRLFVBQUFBLEtBQUssRUFBRSxzQkFIUTtBQUlmQyxVQUFBQSxJQUFJLEVBQUU7QUFKUyxTQTFKUDtBQWdLViwyQkFBbUI7QUFDakJILFVBQUFBLE9BQU8sRUFBRSxLQURRO0FBRWpCTixVQUFBQSxXQUFXLEVBQ1QsdUVBSGU7QUFJakJRLFVBQUFBLEtBQUssRUFBRSx3QkFKVTtBQUtqQkMsVUFBQUEsSUFBSSxFQUFFO0FBTFcsU0FoS1Q7QUF1S1YsMEJBQWtCO0FBQ2hCSCxVQUFBQSxPQUFPLEVBQUUsS0FETztBQUVoQk4sVUFBQUEsV0FBVyxFQUNULDZEQUhjO0FBSWhCUSxVQUFBQSxLQUFLLEVBQUUsdUJBSlM7QUFLaEJDLFVBQUFBLElBQUksRUFBRTtBQUxVLFNBdktSO0FBOEtWVSxRQUFBQSxVQUFVLEVBQUU7QUFDVmYsVUFBQUEsUUFBUSxFQUNOLG1GQUZRO0FBR1ZKLFVBQUFBLFdBQVcsRUFDVCx1SEFKUTtBQUtWUSxVQUFBQSxLQUFLLEVBQUUsbUJBTEc7QUFNVkMsVUFBQUEsSUFBSSxFQUFFO0FBTkksU0E5S0Y7QUFzTFZXLFFBQUFBLE1BQU0sRUFBRTtBQUNOcEIsVUFBQUEsV0FBVyxFQUNULCtFQUZJO0FBR05DLFVBQUFBLFVBQVUsRUFBRSxFQUhOO0FBSU5PLFVBQUFBLEtBQUssRUFBRSxlQUpEO0FBS05DLFVBQUFBLElBQUksRUFBRTtBQUxBLFNBdExFO0FBNkxWWSxRQUFBQSxJQUFJLEVBQUU7QUFDSmhCLFVBQUFBLGdCQUFnQixFQUFFLENBQUMsR0FBRCxDQURkO0FBRUpDLFVBQUFBLE9BQU8sRUFBRSxJQUZMO0FBR0pOLFVBQUFBLFdBQVcsRUFBRSxtQkFIVDtBQUlKYSxVQUFBQSxPQUFPLEVBQUUsS0FKTDtBQUtKQyxVQUFBQSxPQUFPLEVBQUUsQ0FMTDtBQU1KTixVQUFBQSxLQUFLLEVBQUUsYUFOSDtBQU9KQyxVQUFBQSxJQUFJLEVBQUU7QUFQRixTQTdMSTtBQXNNViw0QkFBb0I7QUFDbEJILFVBQUFBLE9BQU8sRUFBRSxLQURTO0FBRWxCTixVQUFBQSxXQUFXLEVBQ1QsbVZBSGdCO0FBSWxCUSxVQUFBQSxLQUFLLEVBQUUseUJBSlc7QUFLbEJDLFVBQUFBLElBQUksRUFBRTtBQUxZLFNBdE1WO0FBNk1WLDRCQUFvQjtBQUNsQkgsVUFBQUEsT0FBTyxFQUFFLEtBRFM7QUFFbEJOLFVBQUFBLFdBQVcsRUFBRSx1Q0FGSztBQUdsQlEsVUFBQUEsS0FBSyxFQUFFLHlCQUhXO0FBSWxCQyxVQUFBQSxJQUFJLEVBQUU7QUFKWSxTQTdNVjtBQW1OVix1QkFBZTtBQUNiSCxVQUFBQSxPQUFPLEVBQUUsS0FESTtBQUViTixVQUFBQSxXQUFXLEVBQ1Qsb0hBSFc7QUFJYlEsVUFBQUEsS0FBSyxFQUFFLG9CQUpNO0FBS2JDLFVBQUFBLElBQUksRUFBRTtBQUxPLFNBbk5MO0FBME5WYSxRQUFBQSxHQUFHLEVBQUU7QUFDSEwsVUFBQUEsYUFBYSxFQUFFLFFBRFo7QUFFSGpCLFVBQUFBLFdBQVcsRUFDVCw4SEFIQztBQUlIUSxVQUFBQSxLQUFLLEVBQUUsWUFKSjtBQUtIQyxVQUFBQSxJQUFJLEVBQUU7QUFMSCxTQTFOSztBQWlPVixxQkFBYTtBQUNYVCxVQUFBQSxXQUFXLEVBQ1QsK0dBRlM7QUFHWFEsVUFBQUEsS0FBSyxFQUFFLGtCQUhJO0FBSVhDLFVBQUFBLElBQUksRUFBRTtBQUpLLFNBak9IO0FBdU9WLHVCQUFlO0FBQ2JjLFVBQUFBLG9CQUFvQixFQUNsQiwwSUFGVztBQUdiakIsVUFBQUEsT0FBTyxFQUFFLEVBSEk7QUFJYk4sVUFBQUEsV0FBVyxFQUNULHFGQUxXO0FBTWJXLFVBQUFBLEtBQUssRUFBRTtBQUNMRixZQUFBQSxJQUFJLEVBQUU7QUFERCxXQU5NO0FBU2JELFVBQUFBLEtBQUssRUFBRSxvQkFUTTtBQVViQyxVQUFBQSxJQUFJLEVBQUUsT0FWTztBQVdiRyxVQUFBQSxXQUFXLEVBQUU7QUFYQSxTQXZPTDtBQW9QVix1QkFBZTtBQUNiVyxVQUFBQSxvQkFBb0IsRUFDbEIscUlBRlc7QUFHYmpCLFVBQUFBLE9BQU8sRUFBRSxFQUhJO0FBSWJOLFVBQUFBLFdBQVcsRUFDVCxnSEFMVztBQU1iVyxVQUFBQSxLQUFLLEVBQUU7QUFDTEYsWUFBQUEsSUFBSSxFQUFFO0FBREQsV0FOTTtBQVNiRCxVQUFBQSxLQUFLLEVBQUUsb0JBVE07QUFVYkMsVUFBQUEsSUFBSSxFQUFFLE9BVk87QUFXYkcsVUFBQUEsV0FBVyxFQUFFO0FBWEEsU0FwUEw7QUFpUVZZLFFBQUFBLE9BQU8sRUFBRTtBQUNQcEIsVUFBQUEsUUFBUSxFQUNOLHVGQUZLO0FBR1BDLFVBQUFBLGdCQUFnQixFQUFFLENBQUMsR0FBRCxDQUhYO0FBSVBMLFVBQUFBLFdBQVcsRUFBRSw0Q0FKTjtBQUtQTyxVQUFBQSxNQUFNLEVBQUUsS0FMRDtBQU1QQyxVQUFBQSxLQUFLLEVBQUUsZ0JBTkE7QUFPUEMsVUFBQUEsSUFBSSxFQUFFO0FBUEM7QUFqUUMsT0FITjtBQThRTkQsTUFBQUEsS0FBSyxFQUFFLGVBOVFEO0FBK1FOQyxNQUFBQSxJQUFJLEVBQUU7QUEvUUE7QUFERSxHQUp1QjtBQXVSbkNELEVBQUFBLEtBQUssRUFBRSxzQkF2UjRCO0FBd1JuQ0MsRUFBQUEsSUFBSSxFQUFFO0FBeFI2QixDQUFyQztlQTJSZVosTSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5jb25zdCBzY2hlbWEgPSAvKiogQHR5cGUge2NvbnN0fSAqLyAoe1xuICAkc2NoZW1hOiAnaHR0cDovL2pzb24tc2NoZW1hLm9yZy9kcmFmdC0wNy9zY2hlbWEnLFxuICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gIGRlc2NyaXB0aW9uOiAnQSBzY2hlbWEgZm9yIEFwcGl1bSBjb25maWd1cmF0aW9uIGZpbGVzJyxcbiAgcHJvcGVydGllczoge1xuICAgIHNlcnZlcjoge1xuICAgICAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICAgICAgZGVzY3JpcHRpb246ICdDb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBBcHBpdW0gYXMgYSBzZXJ2ZXInLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBhZGRyZXNzOiB7XG4gICAgICAgICAgJGNvbW1lbnQ6XG4gICAgICAgICAgICAnSSB0aGluayBob3N0bmFtZSBjb3ZlcnMgYm90aCBETlMgYW5kIElQdjQuLi5jb3VsZCBiZSB3cm9uZycsXG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydhJ10sXG4gICAgICAgICAgZGVmYXVsdDogJzAuMC4wLjAnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnSVAgYWRkcmVzcyB0byBsaXN0ZW4gb24nLFxuICAgICAgICAgIGZvcm1hdDogJ2hvc3RuYW1lJyxcbiAgICAgICAgICB0aXRsZTogJ2FkZHJlc3MgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2FsbG93LWNvcnMnOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnV2hldGhlciB0aGUgQXBwaXVtIHNlcnZlciBzaG91bGQgYWxsb3cgd2ViIGJyb3dzZXIgY29ubmVjdGlvbnMgZnJvbSBhbnkgaG9zdCcsXG4gICAgICAgICAgdGl0bGU6ICdhbGxvdy1jb3JzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICAnYWxsb3ctaW5zZWN1cmUnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpVHJhbnNmb3JtZXI6ICdjc3YnLFxuICAgICAgICAgIGRlZmF1bHQ6IFtdLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ1NldCB3aGljaCBpbnNlY3VyZSBmZWF0dXJlcyBhcmUgYWxsb3dlZCB0byBydW4gaW4gdGhpcyBzZXJ2ZXJcXCdzIHNlc3Npb25zLiBGZWF0dXJlcyBhcmUgZGVmaW5lZCBvbiBhIGRyaXZlciBsZXZlbDsgc2VlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4gTm90ZSB0aGF0IGZlYXR1cmVzIGRlZmluZWQgdmlhIFwiZGVueS1pbnNlY3VyZVwiIHdpbGwgYmUgZGlzYWJsZWQsIGV2ZW4gaWYgYWxzbyBsaXN0ZWQgaGVyZS4gSWYgc3RyaW5nLCBhIHBhdGggdG8gYSB0ZXh0IGZpbGUgY29udGFpbmluZyBwb2xpY3kgb3IgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdC4nLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpdGxlOiAnYWxsb3ctaW5zZWN1cmUgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAnYmFzZS1wYXRoJzoge1xuICAgICAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsncGEnXSxcbiAgICAgICAgICBkZWZhdWx0OiAnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdCYXNlIHBhdGggdG8gdXNlIGFzIHRoZSBwcmVmaXggZm9yIGFsbCB3ZWJkcml2ZXIgcm91dGVzIHJ1bm5pbmcgb24gdGhlIHNlcnZlcicsXG4gICAgICAgICAgdGl0bGU6ICdiYXNlLXBhdGggY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2NhbGxiYWNrLWFkZHJlc3MnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydjYSddLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQ2FsbGJhY2sgSVAgYWRkcmVzcyAoZGVmYXVsdDogc2FtZSBhcyBcImFkZHJlc3NcIiknLFxuICAgICAgICAgIHRpdGxlOiAnY2FsbGJhY2stYWRkcmVzcyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICAnY2FsbGJhY2stcG9ydCc6IHtcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ2NwJ10sXG4gICAgICAgICAgZGVmYXVsdDogNDcyMyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0NhbGxiYWNrIHBvcnQgKGRlZmF1bHQ6IHNhbWUgYXMgXCJwb3J0XCIpJyxcbiAgICAgICAgICBtYXhpbXVtOiA2NTUzNSxcbiAgICAgICAgICBtaW5pbXVtOiAxLFxuICAgICAgICAgIHRpdGxlOiAnY2FsbGJhY2stcG9ydCBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2RlYnVnLWxvZy1zcGFjaW5nJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0FkZCBleGFnZ2VyYXRlZCBzcGFjaW5nIGluIGxvZ3MgdG8gaGVscCB3aXRoIHZpc3VhbCBpbnNwZWN0aW9uJyxcbiAgICAgICAgICB0aXRsZTogJ2RlYnVnLWxvZy1zcGFjaW5nIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICAnZGVmYXVsdC1jYXBhYmlsaXRpZXMnOiB7XG4gICAgICAgICAgJGNvbW1lbnQ6ICdUT0RPJyxcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ2RjJ10sXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnU2V0IHRoZSBkZWZhdWx0IGRlc2lyZWQgY2FwYWJpbGl0aWVzLCB3aGljaCB3aWxsIGJlIHNldCBvbiBlYWNoIHNlc3Npb24gdW5sZXNzIG92ZXJyaWRkZW4gYnkgcmVjZWl2ZWQgY2FwYWJpbGl0aWVzLiBJZiBhIHN0cmluZywgYSBwYXRoIHRvIGEgSlNPTiBmaWxlIGNvbnRhaW5pbmcgdGhlIGNhcGFiaWxpdGllcywgb3IgcmF3IEpTT04uJyxcbiAgICAgICAgICB0aXRsZTogJ2RlZmF1bHQtY2FwYWJpbGl0aWVzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIH0sXG4gICAgICAgICdkZW55LWluc2VjdXJlJzoge1xuICAgICAgICAgICRjb21tZW50OiAnQWxsb3dlZCB2YWx1ZXMgYXJlIGRlZmluZWQgYnkgZHJpdmVycycsXG4gICAgICAgICAgYXBwaXVtQ2xpVHJhbnNmb3JtZXI6ICdjc3YnLFxuICAgICAgICAgIGRlZmF1bHQ6IFtdLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ1NldCB3aGljaCBpbnNlY3VyZSBmZWF0dXJlcyBhcmUgbm90IGFsbG93ZWQgdG8gcnVuIGluIHRoaXMgc2VydmVyXFwncyBzZXNzaW9ucy4gRmVhdHVyZXMgYXJlIGRlZmluZWQgb24gYSBkcml2ZXIgbGV2ZWw7IHNlZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuIEZlYXR1cmVzIGxpc3RlZCBoZXJlIHdpbGwgbm90IGJlIGVuYWJsZWQgZXZlbiBpZiBhbHNvIGxpc3RlZCBpbiBcImFsbG93LWluc2VjdXJlXCIsIGFuZCBldmVuIGlmIFwicmVsYXhlZC1zZWN1cml0eVwiIGlzIGVuYWJsZWQuIElmIHN0cmluZywgYSBwYXRoIHRvIGEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgcG9saWN5IG9yIGEgY29tbWEtZGVsaW1pdGVkIGxpc3QuJyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aXRsZTogJ2RlbnktaW5zZWN1cmUgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBkcml2ZXI6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdEcml2ZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gS2V5cyBzaG91bGQgY29ycmVzcG9uZCB0byBkcml2ZXIgcGFja2FnZSBuYW1lcycsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgdGl0bGU6ICdkcml2ZXIgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2tlZXAtYWxpdmUtdGltZW91dCc6IHtcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ2thJ10sXG4gICAgICAgICAgZGVmYXVsdDogNjAwLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ051bWJlciBvZiBzZWNvbmRzIHRoZSBBcHBpdW0gc2VydmVyIHNob3VsZCBhcHBseSBhcyBib3RoIHRoZSBrZWVwLWFsaXZlIHRpbWVvdXQgYW5kIHRoZSBjb25uZWN0aW9uIHRpbWVvdXQgZm9yIGFsbCByZXF1ZXN0cy4gQSB2YWx1ZSBvZiAwIGRpc2FibGVzIHRoZSB0aW1lb3V0LicsXG4gICAgICAgICAgbWluaW11bTogMCxcbiAgICAgICAgICB0aXRsZTogJ2tlZXAtYWxpdmUtdGltZW91dCBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2xvY2FsLXRpbWV6b25lJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVXNlIGxvY2FsIHRpbWV6b25lIGZvciB0aW1lc3RhbXBzJyxcbiAgICAgICAgICB0aXRsZTogJ2xvY2FsLXRpbWV6b25lIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICBsb2c6IHtcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ2cnXSxcbiAgICAgICAgICBhcHBpdW1DbGlEZXN0OiAnbG9nRmlsZScsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdBbHNvIHNlbmQgbG9nIG91dHB1dCB0byB0aGlzIGZpbGUnLFxuICAgICAgICAgIHRpdGxlOiAnbG9nIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICdsb2ctZmlsdGVycyc6IHtcbiAgICAgICAgICAkY29tbWVudDogJ1RPRE8nLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT25lIG9yIG1vcmUgbG9nIGZpbHRlcmluZyBydWxlcycsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6ICdsb2ctZmlsdGVycyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgIH0sXG4gICAgICAgICdsb2ctbGV2ZWwnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpRGVzdDogJ2xvZ2xldmVsJyxcbiAgICAgICAgICBkZWZhdWx0OiAnZGVidWcnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTG9nIGxldmVsIChjb25zb2xlWzpmaWxlXSknLFxuICAgICAgICAgIGVudW06IFtcbiAgICAgICAgICAgICdpbmZvJyxcbiAgICAgICAgICAgICdpbmZvOmRlYnVnJyxcbiAgICAgICAgICAgICdpbmZvOmluZm8nLFxuICAgICAgICAgICAgJ2luZm86d2FybicsXG4gICAgICAgICAgICAnaW5mbzplcnJvcicsXG4gICAgICAgICAgICAnd2FybicsXG4gICAgICAgICAgICAnd2FybjpkZWJ1ZycsXG4gICAgICAgICAgICAnd2FybjppbmZvJyxcbiAgICAgICAgICAgICd3YXJuOndhcm4nLFxuICAgICAgICAgICAgJ3dhcm46ZXJyb3InLFxuICAgICAgICAgICAgJ2Vycm9yJyxcbiAgICAgICAgICAgICdlcnJvcjpkZWJ1ZycsXG4gICAgICAgICAgICAnZXJyb3I6aW5mbycsXG4gICAgICAgICAgICAnZXJyb3I6d2FybicsXG4gICAgICAgICAgICAnZXJyb3I6ZXJyb3InLFxuICAgICAgICAgICAgJ2RlYnVnJyxcbiAgICAgICAgICAgICdkZWJ1ZzpkZWJ1ZycsXG4gICAgICAgICAgICAnZGVidWc6aW5mbycsXG4gICAgICAgICAgICAnZGVidWc6d2FybicsXG4gICAgICAgICAgICAnZGVidWc6ZXJyb3InLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgdGl0bGU6ICdsb2ctbGV2ZWwgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2xvZy1uby1jb2xvcnMnOiB7XG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdEbyBub3QgdXNlIGNvbG9yIGluIGNvbnNvbGUgb3V0cHV0JyxcbiAgICAgICAgICB0aXRsZTogJ2xvZy1uby1jb2xvcnMgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIH0sXG4gICAgICAgICdsb2ctdGltZXN0YW1wJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2hvdyB0aW1lc3RhbXBzIGluIGNvbnNvbGUgb3V0cHV0JyxcbiAgICAgICAgICB0aXRsZTogJ2xvZy10aW1lc3RhbXAgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIH0sXG4gICAgICAgICdsb25nLXN0YWNrdHJhY2UnOiB7XG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQWRkIGxvbmcgc3RhY2sgdHJhY2VzIHRvIGxvZyBlbnRyaWVzLiBSZWNvbW1lbmRlZCBmb3IgZGVidWdnaW5nIG9ubHkuJyxcbiAgICAgICAgICB0aXRsZTogJ2xvbmctc3RhY2t0cmFjZSBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ25vLXBlcm1zLWNoZWNrJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0RvIG5vdCBjaGVjayB0aGF0IG5lZWRlZCBmaWxlcyBhcmUgcmVhZGFibGUgYW5kL29yIHdyaXRhYmxlJyxcbiAgICAgICAgICB0aXRsZTogJ25vLXBlcm1zLWNoZWNrIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICBub2RlY29uZmlnOiB7XG4gICAgICAgICAgJGNvbW1lbnQ6XG4gICAgICAgICAgICAnU2VsZW5pdW0gR3JpZCAzIGlzIHVubWFpbnRhaW5lZCBhbmQgU2VsZW5pdW0gR3JpZCA0IG5vIGxvbmdlciBzdXBwb3J0cyB0aGlzIGZpbGUuJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdQYXRoIHRvIGNvbmZpZ3VyYXRpb24gSlNPTiBmaWxlIHRvIHJlZ2lzdGVyIEFwcGl1bSBhcyBhIG5vZGUgd2l0aCBTZWxlbml1bSBHcmlkIDM7IG90aGVyd2lzZSB0aGUgY29uZmlndXJhdGlvbiBpdHNlbGYnLFxuICAgICAgICAgIHRpdGxlOiAnbm9kZWNvbmZpZyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICB9LFxuICAgICAgICBwbHVnaW46IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdQbHVnaW4tc3BlY2lmaWMgY29uZmlndXJhdGlvbi4gS2V5cyBzaG91bGQgY29ycmVzcG9uZCB0byBwbHVnaW4gcGFja2FnZSBuYW1lcycsXG4gICAgICAgICAgcHJvcGVydGllczoge30sXG4gICAgICAgICAgdGl0bGU6ICdwbHVnaW4gY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcG9ydDoge1xuICAgICAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsncCddLFxuICAgICAgICAgIGRlZmF1bHQ6IDQ3MjMsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdQb3J0IHRvIGxpc3RlbiBvbicsXG4gICAgICAgICAgbWF4aW11bTogNjU1MzUsXG4gICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICB0aXRsZTogJ3BvcnQgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgIH0sXG4gICAgICAgICdyZWxheGVkLXNlY3VyaXR5Jzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0Rpc2FibGUgYWRkaXRpb25hbCBzZWN1cml0eSBjaGVja3MsIHNvIGl0IGlzIHBvc3NpYmxlIHRvIHVzZSBzb21lIGFkdmFuY2VkIGZlYXR1cmVzLCBwcm92aWRlZCBieSBkcml2ZXJzIHN1cHBvcnRpbmcgdGhpcyBvcHRpb24uIE9ubHkgZW5hYmxlIGl0IGlmIGFsbCB0aGUgY2xpZW50cyBhcmUgaW4gdGhlIHRydXN0ZWQgbmV0d29yayBhbmQgaXRcXCdzIG5vdCB0aGUgY2FzZSBpZiBhIGNsaWVudCBjb3VsZCBwb3RlbnRpYWxseSBicmVhayBvdXQgb2YgdGhlIHNlc3Npb24gc2FuZGJveC4gU3BlY2lmaWMgZmVhdHVyZXMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdXNpbmcgXCJkZW55LWluc2VjdXJlXCInLFxuICAgICAgICAgIHRpdGxlOiAncmVsYXhlZC1zZWN1cml0eSBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ3Nlc3Npb24tb3ZlcnJpZGUnOiB7XG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdFbmFibGVzIHNlc3Npb24gb3ZlcnJpZGUgKGNsb2JiZXJpbmcpJyxcbiAgICAgICAgICB0aXRsZTogJ3Nlc3Npb24tb3ZlcnJpZGUgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIH0sXG4gICAgICAgICdzdHJpY3QtY2Fwcyc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdDYXVzZSBzZXNzaW9ucyB0byBmYWlsIGlmIGRlc2lyZWQgY2FwcyBhcmUgc2VudCBpbiB0aGF0IEFwcGl1bSBkb2VzIG5vdCByZWNvZ25pemUgYXMgdmFsaWQgZm9yIHRoZSBzZWxlY3RlZCBkZXZpY2UnLFxuICAgICAgICAgIHRpdGxlOiAnc3RyaWN0LWNhcHMgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIH0sXG4gICAgICAgIHRtcDoge1xuICAgICAgICAgIGFwcGl1bUNsaURlc3Q6ICd0bXBEaXInLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0Fic29sdXRlIHBhdGggdG8gZGlyZWN0b3J5IEFwcGl1bSBjYW4gdXNlIHRvIG1hbmFnZSB0ZW1wIGZpbGVzLiBEZWZhdWx0cyB0byBDOlxcXFxXaW5kb3dzXFxcXFRlbXAgb24gV2luZG93cyBhbmQgL3RtcCBvdGhlcndpc2UuJyxcbiAgICAgICAgICB0aXRsZTogJ3RtcCBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICAndHJhY2UtZGlyJzoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0Fic29sdXRlIHBhdGggdG8gZGlyZWN0b3J5IEFwcGl1bSBjYW4gdXNlIHRvIHNhdmUgaU9TIGluc3RydW1lbnQgdHJhY2VzOyBkZWZhdWx0cyB0byA8dG1wPi9hcHBpdW0taW5zdHJ1bWVudHMnLFxuICAgICAgICAgIHRpdGxlOiAndHJhY2UtZGlyIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICd1c2UtZHJpdmVycyc6IHtcbiAgICAgICAgICBhcHBpdW1DbGlEZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBIGxpc3Qgb2YgZHJpdmVycyB0byBhY3RpdmF0ZS4gQ2FuIGJlIGEgY29tbWEtZGVsaW1pdGVkIHN0cmluZyBvciBwYXRoIHRvIENTViBmaWxlLiBCeSBkZWZhdWx0LCBhbGwgaW5zdGFsbGVkIGRyaXZlcnMgd2lsbCBiZSBhY3RpdmF0ZWQuJyxcbiAgICAgICAgICBkZWZhdWx0OiBbXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBIGxpc3Qgb2YgZHJpdmVycyB0byBhY3RpdmF0ZS4gQnkgZGVmYXVsdCwgYWxsIGluc3RhbGxlZCBkcml2ZXJzIHdpbGwgYmUgYWN0aXZhdGVkLicsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6ICd1c2UtZHJpdmVycyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgICd1c2UtcGx1Z2lucyc6IHtcbiAgICAgICAgICBhcHBpdW1DbGlEZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBIGxpc3Qgb2YgcGx1Z2lucyB0byBhY3RpdmF0ZS4gQ2FuIGJlIGEgY29tbWEtZGVsaW1pdGVkIHN0cmluZywgcGF0aCB0byBDU1YgZmlsZSwgb3IgdGhlIHN0cmluZyBcImFsbFwiIHRvIHVzZSBhbGwgaW5zdGFsbGVkIHBsdWdpbnMuJyxcbiAgICAgICAgICBkZWZhdWx0OiBbXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBIGxpc3Qgb2YgcGx1Z2lucyB0byBhY3RpdmF0ZS4gVG8gYWN0aXZhdGUgYWxsIHBsdWdpbnMsIHRoZSB2YWx1ZSBzaG91bGQgYmUgYW4gYXJyYXkgd2l0aCBhIHNpbmdsZSBpdGVtIFwiYWxsXCIuJyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aXRsZTogJ3VzZS1wbHVnaW5zIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgd2ViaG9vazoge1xuICAgICAgICAgICRjb21tZW50OlxuICAgICAgICAgICAgJ1RoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBhIHVyaS10ZW1wbGF0ZSBmb3JtYXQgdG8gcmVzdHJpY3QgdGhlIHByb3RvY29sIHRvIGh0dHAvaHR0cHMnLFxuICAgICAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsnRyddLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQWxzbyBzZW5kIGxvZyBvdXRwdXQgdG8gdGhpcyBodHRwIGxpc3RlbmVyJyxcbiAgICAgICAgICBmb3JtYXQ6ICd1cmknLFxuICAgICAgICAgIHRpdGxlOiAnd2ViaG9vayBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRpdGxlOiAnc2VydmVyIGNvbmZpZycsXG4gICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICB9LFxuICB9LFxuICB0aXRsZTogJ0FwcGl1bSBDb25maWd1cmF0aW9uJyxcbiAgdHlwZTogJ29iamVjdCcsXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgc2NoZW1hO1xuIl0sImZpbGUiOiJsaWIvc2NoZW1hL2FwcGl1bS1jb25maWctc2NoZW1hLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
|
|
253
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvYXBwaXVtLWNvbmZpZy1zY2hlbWEuanMiXSwibmFtZXMiOlsic2NoZW1hIiwiJHNjaGVtYSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiZGVzY3JpcHRpb24iLCJwcm9wZXJ0aWVzIiwic2VydmVyIiwiYWRkcmVzcyIsIiRjb21tZW50IiwiYXBwaXVtQ2xpQWxpYXNlcyIsImRlZmF1bHQiLCJmb3JtYXQiLCJ0aXRsZSIsInR5cGUiLCJhcHBpdW1DbGlUcmFuc2Zvcm1lciIsIml0ZW1zIiwidW5pcXVlSXRlbXMiLCJtYXhpbXVtIiwibWluaW11bSIsImRyaXZlciIsImxvZyIsImFwcGl1bUNsaURlc3QiLCJlbnVtIiwibm9kZWNvbmZpZyIsInBsdWdpbiIsInBvcnQiLCJ0bXAiLCJhcHBpdW1DbGlEZXNjcmlwdGlvbiIsIndlYmhvb2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLE1BQU1BLE1BQU0sR0FBeUI7QUFDbkNDLEVBQUFBLE9BQU8sRUFBRSx3Q0FEMEI7QUFFbkNDLEVBQUFBLG9CQUFvQixFQUFFLEtBRmE7QUFHbkNDLEVBQUFBLFdBQVcsRUFBRSx5Q0FIc0I7QUFJbkNDLEVBQUFBLFVBQVUsRUFBRTtBQUNWQyxJQUFBQSxNQUFNLEVBQUU7QUFDTkgsTUFBQUEsb0JBQW9CLEVBQUUsS0FEaEI7QUFFTkMsTUFBQUEsV0FBVyxFQUFFLCtDQUZQO0FBR05DLE1BQUFBLFVBQVUsRUFBRTtBQUNWRSxRQUFBQSxPQUFPLEVBQUU7QUFDUEMsVUFBQUEsUUFBUSxFQUNOLDREQUZLO0FBR1BDLFVBQUFBLGdCQUFnQixFQUFFLENBQUMsR0FBRCxDQUhYO0FBSVBDLFVBQUFBLE9BQU8sRUFBRSxTQUpGO0FBS1BOLFVBQUFBLFdBQVcsRUFBRSx5QkFMTjtBQU1QTyxVQUFBQSxNQUFNLEVBQUUsVUFORDtBQU9QQyxVQUFBQSxLQUFLLEVBQUUsZ0JBUEE7QUFRUEMsVUFBQUEsSUFBSSxFQUFFO0FBUkMsU0FEQztBQVdWLHNCQUFjO0FBQ1pU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QUFBQSxLQUFLLEVBQUU7QUFDTEYsWUFBQUEsSUFBSSxFQUFFO0FBREQsV0FOTTtBQVNiRCxVQUFBQSxLQUFLLEVBQUUsb0JBVE07QUFVYkMsVUFBQUEsSUFBSSxFQUFFLE9BVk87QUFXYkcsVUFBQUEsV0FBVyxFQUFFO0FBWEEsU0F4T0w7QUFxUFYsdUJBQWU7QUFDYlcsVUFBQUEsb0JBQW9CLEVBQ2xCLHFJQUZXO0FBR2JqQixVQUFBQSxPQUFPLEVBQUUsRUFISTtBQUliTixVQUFBQSxXQUFXLEVBQ1QsZ0hBTFc7QUFNYlcsVUFBQUEsS0FBSyxFQUFFO0FBQ0xGLFlBQUFBLElBQUksRUFBRTtBQURELFdBTk07QUFTYkQsVUFBQUEsS0FBSyxFQUFFLG9CQVRNO0FBVWJDLFVBQUFBLElBQUksRUFBRSxPQVZPO0FBV2JHLFVBQUFBLFdBQVcsRUFBRTtBQVhBLFNBclBMO0FBa1FWWSxRQUFBQSxPQUFPLEVBQUU7QUFDUHBCLFVBQUFBLFFBQVEsRUFDTix1RkFGSztBQUdQQyxVQUFBQSxnQkFBZ0IsRUFBRSxDQUFDLEdBQUQsQ0FIWDtBQUlQTCxVQUFBQSxXQUFXLEVBQUUsNENBSk47QUFLUE8sVUFBQUEsTUFBTSxFQUFFLEtBTEQ7QUFNUEMsVUFBQUEsS0FBSyxFQUFFLGdCQU5BO0FBT1BDLFVBQUFBLElBQUksRUFBRTtBQVBDO0FBbFFDLE9BSE47QUErUU5ELE1BQUFBLEtBQUssRUFBRSxlQS9RRDtBQWdSTkMsTUFBQUEsSUFBSSxFQUFFO0FBaFJBO0FBREUsR0FKdUI7QUF3Um5DRCxFQUFBQSxLQUFLLEVBQUUsc0JBeFI0QjtBQXlSbkNDLEVBQUFBLElBQUksRUFBRTtBQXpSNkIsQ0FBckM7ZUE0UmVaLE0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuY29uc3Qgc2NoZW1hID0gLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgJHNjaGVtYTogJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hJyxcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICBkZXNjcmlwdGlvbjogJ0Egc2NoZW1hIGZvciBBcHBpdW0gY29uZmlndXJhdGlvbiBmaWxlcycsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgQXBwaXVtIGFzIGEgc2VydmVyJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICRjb21tZW50OlxuICAgICAgICAgICAgJ0kgdGhpbmsgaG9zdG5hbWUgY292ZXJzIGJvdGggRE5TIGFuZCBJUHY0Li4uY291bGQgYmUgd3JvbmcnLFxuICAgICAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsnYSddLFxuICAgICAgICAgIGRlZmF1bHQ6ICcwLjAuMC4wJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lQIGFkZHJlc3MgdG8gbGlzdGVuIG9uJyxcbiAgICAgICAgICBmb3JtYXQ6ICdob3N0bmFtZScsXG4gICAgICAgICAgdGl0bGU6ICdhZGRyZXNzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICdhbGxvdy1jb3JzJzoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ1doZXRoZXIgdGhlIEFwcGl1bSBzZXJ2ZXIgc2hvdWxkIGFsbG93IHdlYiBicm93c2VyIGNvbm5lY3Rpb25zIGZyb20gYW55IGhvc3QnLFxuICAgICAgICAgIHRpdGxlOiAnYWxsb3ctY29ycyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgJ2FsbG93LWluc2VjdXJlJzoge1xuICAgICAgICAgIGFwcGl1bUNsaVRyYW5zZm9ybWVyOiAnY3N2JyxcbiAgICAgICAgICBkZWZhdWx0OiBbXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdTZXQgd2hpY2ggaW5zZWN1cmUgZmVhdHVyZXMgYXJlIGFsbG93ZWQgdG8gcnVuIGluIHRoaXMgc2VydmVyXFwncyBzZXNzaW9ucy4gRmVhdHVyZXMgYXJlIGRlZmluZWQgb24gYSBkcml2ZXIgbGV2ZWw7IHNlZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuIE5vdGUgdGhhdCBmZWF0dXJlcyBkZWZpbmVkIHZpYSBcImRlbnktaW5zZWN1cmVcIiB3aWxsIGJlIGRpc2FibGVkLCBldmVuIGlmIGFsc28gbGlzdGVkIGhlcmUuIElmIHN0cmluZywgYSBwYXRoIHRvIGEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgcG9saWN5IG9yIGEgY29tbWEtZGVsaW1pdGVkIGxpc3QuJyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aXRsZTogJ2FsbG93LWluc2VjdXJlIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgJ2Jhc2UtcGF0aCc6IHtcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ3BhJ10sXG4gICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQmFzZSBwYXRoIHRvIHVzZSBhcyB0aGUgcHJlZml4IGZvciBhbGwgd2ViZHJpdmVyIHJvdXRlcyBydW5uaW5nIG9uIHRoZSBzZXJ2ZXInLFxuICAgICAgICAgIHRpdGxlOiAnYmFzZS1wYXRoIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICdjYWxsYmFjay1hZGRyZXNzJzoge1xuICAgICAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsnY2EnXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0NhbGxiYWNrIElQIGFkZHJlc3MgKGRlZmF1bHQ6IHNhbWUgYXMgXCJhZGRyZXNzXCIpJyxcbiAgICAgICAgICB0aXRsZTogJ2NhbGxiYWNrLWFkZHJlc3MgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2NhbGxiYWNrLXBvcnQnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydjcCddLFxuICAgICAgICAgIGRlZmF1bHQ6IDQ3MjMsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdDYWxsYmFjayBwb3J0IChkZWZhdWx0OiBzYW1lIGFzIFwicG9ydFwiKScsXG4gICAgICAgICAgbWF4aW11bTogNjU1MzUsXG4gICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICB0aXRsZTogJ2NhbGxiYWNrLXBvcnQgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgIH0sXG4gICAgICAgICdkZWJ1Zy1sb2ctc3BhY2luZyc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBZGQgZXhhZ2dlcmF0ZWQgc3BhY2luZyBpbiBsb2dzIHRvIGhlbHAgd2l0aCB2aXN1YWwgaW5zcGVjdGlvbicsXG4gICAgICAgICAgdGl0bGU6ICdkZWJ1Zy1sb2ctc3BhY2luZyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2RlZmF1bHQtY2FwYWJpbGl0aWVzJzoge1xuICAgICAgICAgICRjb21tZW50OiAnVE9ETycsXG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydkYyddLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ1NldCB0aGUgZGVmYXVsdCBkZXNpcmVkIGNhcGFiaWxpdGllcywgd2hpY2ggd2lsbCBiZSBzZXQgb24gZWFjaCBzZXNzaW9uIHVubGVzcyBvdmVycmlkZGVuIGJ5IHJlY2VpdmVkIGNhcGFiaWxpdGllcy4gSWYgYSBzdHJpbmcsIGEgcGF0aCB0byBhIEpTT04gZmlsZSBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMsIG9yIHJhdyBKU09OLicsXG4gICAgICAgICAgdGl0bGU6ICdkZWZhdWx0LWNhcGFiaWxpdGllcyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICB9LFxuICAgICAgICAnZGVueS1pbnNlY3VyZSc6IHtcbiAgICAgICAgICAkY29tbWVudDogJ0FsbG93ZWQgdmFsdWVzIGFyZSBkZWZpbmVkIGJ5IGRyaXZlcnMnLFxuICAgICAgICAgIGFwcGl1bUNsaVRyYW5zZm9ybWVyOiAnY3N2JyxcbiAgICAgICAgICBkZWZhdWx0OiBbXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdTZXQgd2hpY2ggaW5zZWN1cmUgZmVhdHVyZXMgYXJlIG5vdCBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzIHNlcnZlclxcJ3Mgc2Vzc2lvbnMuIEZlYXR1cmVzIGFyZSBkZWZpbmVkIG9uIGEgZHJpdmVyIGxldmVsOyBzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLiBGZWF0dXJlcyBsaXN0ZWQgaGVyZSB3aWxsIG5vdCBiZSBlbmFibGVkIGV2ZW4gaWYgYWxzbyBsaXN0ZWQgaW4gXCJhbGxvdy1pbnNlY3VyZVwiLCBhbmQgZXZlbiBpZiBcInJlbGF4ZWQtc2VjdXJpdHlcIiBpcyBlbmFibGVkLiBJZiBzdHJpbmcsIGEgcGF0aCB0byBhIHRleHQgZmlsZSBjb250YWluaW5nIHBvbGljeSBvciBhIGNvbW1hLWRlbGltaXRlZCBsaXN0LicsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6ICdkZW55LWluc2VjdXJlIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZHJpdmVyOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnRHJpdmVyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEtleXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gZHJpdmVyIHBhY2thZ2UgbmFtZXMnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgIHRpdGxlOiAnZHJpdmVyIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIH0sXG4gICAgICAgICdrZWVwLWFsaXZlLXRpbWVvdXQnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydrYSddLFxuICAgICAgICAgIGRlZmF1bHQ6IDYwMCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdOdW1iZXIgb2Ygc2Vjb25kcyB0aGUgQXBwaXVtIHNlcnZlciBzaG91bGQgYXBwbHkgYXMgYm90aCB0aGUga2VlcC1hbGl2ZSB0aW1lb3V0IGFuZCB0aGUgY29ubmVjdGlvbiB0aW1lb3V0IGZvciBhbGwgcmVxdWVzdHMuIEEgdmFsdWUgb2YgMCBkaXNhYmxlcyB0aGUgdGltZW91dC4nLFxuICAgICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgICAgdGl0bGU6ICdrZWVwLWFsaXZlLXRpbWVvdXQgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgIH0sXG4gICAgICAgICdsb2NhbC10aW1lem9uZSc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZSBsb2NhbCB0aW1lem9uZSBmb3IgdGltZXN0YW1wcycsXG4gICAgICAgICAgdGl0bGU6ICdsb2NhbC10aW1lem9uZSBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgbG9nOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydnJ10sXG4gICAgICAgICAgYXBwaXVtQ2xpRGVzdDogJ2xvZ0ZpbGUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQWxzbyBzZW5kIGxvZyBvdXRwdXQgdG8gdGhpcyBmaWxlJyxcbiAgICAgICAgICB0aXRsZTogJ2xvZyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICAnbG9nLWZpbHRlcnMnOiB7XG4gICAgICAgICAgJGNvbW1lbnQ6ICdUT0RPJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ09uZSBvciBtb3JlIGxvZyBmaWx0ZXJpbmcgcnVsZXMnLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpdGxlOiAnbG9nLWZpbHRlcnMgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB9LFxuICAgICAgICAnbG9nLWxldmVsJzoge1xuICAgICAgICAgIGFwcGl1bUNsaURlc3Q6ICdsb2dsZXZlbCcsXG4gICAgICAgICAgZGVmYXVsdDogJ2RlYnVnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0xvZyBsZXZlbCAoY29uc29sZVs6ZmlsZV0pJyxcbiAgICAgICAgICBlbnVtOiBbXG4gICAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgICAnaW5mbzpkZWJ1ZycsXG4gICAgICAgICAgICAnaW5mbzppbmZvJyxcbiAgICAgICAgICAgICdpbmZvOndhcm4nLFxuICAgICAgICAgICAgJ2luZm86ZXJyb3InLFxuICAgICAgICAgICAgJ3dhcm4nLFxuICAgICAgICAgICAgJ3dhcm46ZGVidWcnLFxuICAgICAgICAgICAgJ3dhcm46aW5mbycsXG4gICAgICAgICAgICAnd2Fybjp3YXJuJyxcbiAgICAgICAgICAgICd3YXJuOmVycm9yJyxcbiAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAnZXJyb3I6ZGVidWcnLFxuICAgICAgICAgICAgJ2Vycm9yOmluZm8nLFxuICAgICAgICAgICAgJ2Vycm9yOndhcm4nLFxuICAgICAgICAgICAgJ2Vycm9yOmVycm9yJyxcbiAgICAgICAgICAgICdkZWJ1ZycsXG4gICAgICAgICAgICAnZGVidWc6ZGVidWcnLFxuICAgICAgICAgICAgJ2RlYnVnOmluZm8nLFxuICAgICAgICAgICAgJ2RlYnVnOndhcm4nLFxuICAgICAgICAgICAgJ2RlYnVnOmVycm9yJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHRpdGxlOiAnbG9nLWxldmVsIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICdsb2ctbm8tY29sb3JzJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRG8gbm90IHVzZSBjb2xvciBpbiBjb25zb2xlIG91dHB1dCcsXG4gICAgICAgICAgdGl0bGU6ICdsb2ctbm8tY29sb3JzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICAnbG9nLXRpbWVzdGFtcCc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Nob3cgdGltZXN0YW1wcyBpbiBjb25zb2xlIG91dHB1dCcsXG4gICAgICAgICAgdGl0bGU6ICdsb2ctdGltZXN0YW1wIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICAnbG9uZy1zdGFja3RyYWNlJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0FkZCBsb25nIHN0YWNrIHRyYWNlcyB0byBsb2cgZW50cmllcy4gUmVjb21tZW5kZWQgZm9yIGRlYnVnZ2luZyBvbmx5LicsXG4gICAgICAgICAgdGl0bGU6ICdsb25nLXN0YWNrdHJhY2UgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIH0sXG4gICAgICAgICduby1wZXJtcy1jaGVjayc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdEbyBub3QgY2hlY2sgdGhhdCBuZWVkZWQgZmlsZXMgYXJlIHJlYWRhYmxlIGFuZC9vciB3cml0YWJsZScsXG4gICAgICAgICAgdGl0bGU6ICduby1wZXJtcy1jaGVjayBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgbm9kZWNvbmZpZzoge1xuICAgICAgICAgICRjb21tZW50OlxuICAgICAgICAgICAgJ1NlbGVuaXVtIEdyaWQgMyBpcyB1bm1haW50YWluZWQgYW5kIFNlbGVuaXVtIEdyaWQgNCBubyBsb25nZXIgc3VwcG9ydHMgdGhpcyBmaWxlLicsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnUGF0aCB0byBjb25maWd1cmF0aW9uIEpTT04gZmlsZSB0byByZWdpc3RlciBBcHBpdW0gYXMgYSBub2RlIHdpdGggU2VsZW5pdW0gR3JpZCAzOyBvdGhlcndpc2UgdGhlIGNvbmZpZ3VyYXRpb24gaXRzZWxmJyxcbiAgICAgICAgICB0aXRsZTogJ25vZGVjb25maWcgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1Z2luOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnUGx1Z2luLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEtleXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gcGx1Z2luIHBhY2thZ2UgbmFtZXMnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgIHRpdGxlOiAncGx1Z2luIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIH0sXG4gICAgICAgIHBvcnQ6IHtcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ3AnXSxcbiAgICAgICAgICBkZWZhdWx0OiA0NzIzLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUG9ydCB0byBsaXN0ZW4gb24nLFxuICAgICAgICAgIG1heGltdW06IDY1NTM1LFxuICAgICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgICAgdGl0bGU6ICdwb3J0IGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2ludGVnZXInLFxuICAgICAgICB9LFxuICAgICAgICAncmVsYXhlZC1zZWN1cml0eSc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdEaXNhYmxlIGFkZGl0aW9uYWwgc2VjdXJpdHkgY2hlY2tzLCBzbyBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugc29tZSBhZHZhbmNlZCBmZWF0dXJlcywgcHJvdmlkZWQgYnkgZHJpdmVycyBzdXBwb3J0aW5nIHRoaXMgb3B0aW9uLiBPbmx5IGVuYWJsZSBpdCBpZiBhbGwgdGhlIGNsaWVudHMgYXJlIGluIHRoZSB0cnVzdGVkIG5ldHdvcmsgYW5kIGl0XFwncyBub3QgdGhlIGNhc2UgaWYgYSBjbGllbnQgY291bGQgcG90ZW50aWFsbHkgYnJlYWsgb3V0IG9mIHRoZSBzZXNzaW9uIHNhbmRib3guIFNwZWNpZmljIGZlYXR1cmVzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzaW5nIFwiZGVueS1pbnNlY3VyZVwiJyxcbiAgICAgICAgICB0aXRsZTogJ3JlbGF4ZWQtc2VjdXJpdHkgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgYXBwaXVtQ2xpRGVzdDogJ3JlbGF4ZWRTZWN1cml0eUVuYWJsZWQnXG4gICAgICAgIH0sXG4gICAgICAgICdzZXNzaW9uLW92ZXJyaWRlJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlcyBzZXNzaW9uIG92ZXJyaWRlIChjbG9iYmVyaW5nKScsXG4gICAgICAgICAgdGl0bGU6ICdzZXNzaW9uLW92ZXJyaWRlIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICAnc3RyaWN0LWNhcHMnOiB7XG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQ2F1c2Ugc2Vzc2lvbnMgdG8gZmFpbCBpZiBkZXNpcmVkIGNhcHMgYXJlIHNlbnQgaW4gdGhhdCBBcHBpdW0gZG9lcyBub3QgcmVjb2duaXplIGFzIHZhbGlkIGZvciB0aGUgc2VsZWN0ZWQgZGV2aWNlJyxcbiAgICAgICAgICB0aXRsZTogJ3N0cmljdC1jYXBzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICB0bXA6IHtcbiAgICAgICAgICBhcHBpdW1DbGlEZXN0OiAndG1wRGlyJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBYnNvbHV0ZSBwYXRoIHRvIGRpcmVjdG9yeSBBcHBpdW0gY2FuIHVzZSB0byBtYW5hZ2UgdGVtcCBmaWxlcy4gRGVmYXVsdHMgdG8gQzpcXFxcV2luZG93c1xcXFxUZW1wIG9uIFdpbmRvd3MgYW5kIC90bXAgb3RoZXJ3aXNlLicsXG4gICAgICAgICAgdGl0bGU6ICd0bXAgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ3RyYWNlLWRpcic6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBYnNvbHV0ZSBwYXRoIHRvIGRpcmVjdG9yeSBBcHBpdW0gY2FuIHVzZSB0byBzYXZlIGlPUyBpbnN0cnVtZW50IHRyYWNlczsgZGVmYXVsdHMgdG8gPHRtcD4vYXBwaXVtLWluc3RydW1lbnRzJyxcbiAgICAgICAgICB0aXRsZTogJ3RyYWNlLWRpciBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICAndXNlLWRyaXZlcnMnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpRGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIGRyaXZlcnMgdG8gYWN0aXZhdGUuIENhbiBiZSBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcgb3IgcGF0aCB0byBDU1YgZmlsZS4gQnkgZGVmYXVsdCwgYWxsIGluc3RhbGxlZCBkcml2ZXJzIHdpbGwgYmUgYWN0aXZhdGVkLicsXG4gICAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIGRyaXZlcnMgdG8gYWN0aXZhdGUuIEJ5IGRlZmF1bHQsIGFsbCBpbnN0YWxsZWQgZHJpdmVycyB3aWxsIGJlIGFjdGl2YXRlZC4nLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpdGxlOiAndXNlLWRyaXZlcnMgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAndXNlLXBsdWdpbnMnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpRGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUuIENhbiBiZSBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcsIHBhdGggdG8gQ1NWIGZpbGUsIG9yIHRoZSBzdHJpbmcgXCJhbGxcIiB0byB1c2UgYWxsIGluc3RhbGxlZCBwbHVnaW5zLicsXG4gICAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUuIFRvIGFjdGl2YXRlIGFsbCBwbHVnaW5zLCB0aGUgdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5IHdpdGggYSBzaW5nbGUgaXRlbSBcImFsbFwiLicsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6ICd1c2UtcGx1Z2lucyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdlYmhvb2s6IHtcbiAgICAgICAgICAkY29tbWVudDpcbiAgICAgICAgICAgICdUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgYSB1cmktdGVtcGxhdGUgZm9ybWF0IHRvIHJlc3RyaWN0IHRoZSBwcm90b2NvbCB0byBodHRwL2h0dHBzJyxcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ0cnXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Fsc28gc2VuZCBsb2cgb3V0cHV0IHRvIHRoaXMgaHR0cCBsaXN0ZW5lcicsXG4gICAgICAgICAgZm9ybWF0OiAndXJpJyxcbiAgICAgICAgICB0aXRsZTogJ3dlYmhvb2sgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aXRsZTogJ3NlcnZlciBjb25maWcnLFxuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgfSxcbiAgfSxcbiAgdGl0bGU6ICdBcHBpdW0gQ29uZmlndXJhdGlvbicsXG4gIHR5cGU6ICdvYmplY3QnLFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHNjaGVtYTtcbiJdLCJmaWxlIjoibGliL3NjaGVtYS9hcHBpdW0tY29uZmlnLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
@@ -33,13 +33,14 @@ class ArgSpec {
|
|
|
33
33
|
(0, _defineProperty2.default)(this, "ref", void 0);
|
|
34
34
|
(0, _defineProperty2.default)(this, "arg", void 0);
|
|
35
35
|
(0, _defineProperty2.default)(this, "dest", void 0);
|
|
36
|
+
(0, _defineProperty2.default)(this, "rawDest", void 0);
|
|
36
37
|
(0, _defineProperty2.default)(this, "defaultValue", void 0);
|
|
37
38
|
const arg = ArgSpec.toArg(name, extType, extName);
|
|
38
39
|
const ref = ArgSpec.toSchemaRef(name, extType, extName);
|
|
39
40
|
|
|
40
|
-
const
|
|
41
|
+
const rawDest = _lodash.default.camelCase(dest !== null && dest !== void 0 ? dest : name);
|
|
41
42
|
|
|
42
|
-
const destKeypath = extType && extName ? [extType, extName,
|
|
43
|
+
const destKeypath = extType && extName ? [extType, extName, rawDest].join('.') : rawDest;
|
|
43
44
|
this.defaultValue = defaultValue;
|
|
44
45
|
this.name = name;
|
|
45
46
|
this.extType = extType;
|
|
@@ -47,6 +48,7 @@ class ArgSpec {
|
|
|
47
48
|
this.arg = arg;
|
|
48
49
|
this.dest = destKeypath;
|
|
49
50
|
this.ref = ref;
|
|
51
|
+
this.rawDest = rawDest;
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
static toSchemaRef(name, extType, extName) {
|
|
@@ -117,4 +119,4 @@ class ArgSpec {
|
|
|
117
119
|
exports.ArgSpec = ArgSpec;require('source-map-support').install();
|
|
118
120
|
|
|
119
121
|
|
|
120
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvYXJnLXNwZWMuanMiXSwibmFtZXMiOlsiQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQiLCJTRVJWRVJfUFJPUF9OQU1FIiwiU0NIRU1BX0lEX1JFR0VYUCIsIlBST1BFUlRJRVMiLCJBcmdTcGVjIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZXh0VHlwZSIsImV4dE5hbWUiLCJkZXN0IiwiZGVmYXVsdFZhbHVlIiwiYXJnIiwidG9BcmciLCJyZWYiLCJ0b1NjaGVtYVJlZiIsImJhc2VEZXN0IiwiXyIsImNhbWVsQ2FzZSIsImRlc3RLZXlwYXRoIiwiam9pbiIsImJhc2VSZWYiLCJ0b1NjaGVtYUJhc2VSZWYiLCJ0b05vcm1hbGl6ZWRFeHROYW1lIiwicHJvcGVyTmFtZSIsImtlYmFiQ2FzZSIsInJlcGxhY2UiLCJleHRlbnNpb25JbmZvRnJvbVJvb3RTY2hlbWFJZCIsInNjaGVtYUlkIiwibWF0Y2hlcyIsIm1hdGNoIiwiZ3JvdXBzIiwibm9ybWFsaXplZEV4dE5hbWUiLCJjcmVhdGUiLCJvcHRzIiwiT2JqZWN0IiwiZnJlZXplIiwidG9TdHJpbmciLCJzdHIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFNTyxNQUFNQSx1QkFBdUIsR0FBRyxhQUFoQzs7QUFPQSxNQUFNQyxnQkFBZ0IsR0FBRyxRQUF6Qjs7QUFLUCxNQUFNQyxnQkFBZ0IsR0FBRyxrREFBekI7QUFLQSxNQUFNQyxVQUFVLEdBQUcsWUFBbkI7O0FBUU8sTUFBTUMsT0FBTixDQUFjO0FBOERuQkMsRUFBQUEsV0FBVyxDQUFFQyxJQUFGLEVBQVE7QUFBQ0MsSUFBQUEsT0FBRDtBQUFVQyxJQUFBQSxPQUFWO0FBQW1CQyxJQUFBQSxJQUFuQjtBQUF5QkMsSUFBQUE7QUFBekIsTUFBeUMsRUFBakQsRUFBcUQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUc5RCxVQUFNQyxHQUFHLEdBQUdQLE9BQU8sQ0FBQ1EsS0FBUixDQUFjTixJQUFkLEVB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QUYsRUFBUTJCLElBQVIsRUFBYztBQUN6QixXQUFPQyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxJQUFJL0IsT0FBSixDQUFZRSxJQUFaLEVBQWtCMkIsSUFBbEIsQ0FBZCxDQUFQO0FBQ0Q7O0FBT0RHLEVBQUFBLFFBQVEsR0FBSTtBQUNWLFFBQUlDLEdBQUcsR0FBSSxhQUFZLEtBQUsvQixJQUFLLEtBQUksS0FBS08sR0FBSSxHQUE5Qzs7QUFDQSxRQUFJLEtBQUtOLE9BQUwsSUFBZ0IsS0FBS0MsT0FBekIsRUFBa0M7QUFDaEM2QixNQUFBQSxHQUFHLElBQUssVUFBUyxLQUFLOUIsT0FBUSxJQUFHLEtBQUtDLE9BQVEsR0FBOUM7QUFDRDs7QUFDRCxXQUFPNkIsR0FBUDtBQUNEOztBQS9La0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG4vKipcbiAqIFRoZSBvcmlnaW5hbCBJRCBvZiB0aGUgQXBwaXVtIGNvbmZpZyBzY2hlbWEuXG4gKiBXZSB1c2UgdGhpcyBpbiB0aGUgQ0xJIHRvIGNvbnZlcnQgaXQgdG8gYGFyZ3BhcnNlYCBvcHRpb25zLlxuICovXG5leHBvcnQgY29uc3QgQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQgPSAnYXBwaXVtLmpzb24nO1xuXG4vKipcbiAqIFRoZSBzY2hlbWEgcHJvcCBjb250YWluaW5nIHNlcnZlci1yZWxhdGVkIG9wdGlvbnMuIEV2ZXJ5dGhpbmcgaW4gaGVyZVxuICogaXMgXCJuYXRpdmVcIiB0byBBcHBpdW0uXG4gKiBVc2VkIGJ5IHtAbGluayBmbGF0dGVuU2NoZW1hfSBmb3IgdHJhbnNmb3JtaW5nIHRoZSBzY2hlbWEgaW50byBDTEkgYXJncy5cbiAqL1xuZXhwb3J0IGNvbnN0IFNFUlZFUl9QUk9QX05BTUUgPSAnc2VydmVyJztcblxuLyoqXG4gKiBVc2VkIHRvIHBhcnNlIGV4dGVuc2lvbiBpbmZvIGZyb20gYSBzY2hlbWEgSUQuXG4gKi9cbmNvbnN0IFNDSEVNQV9JRF9SRUdFWFAgPSAvXig/PGV4dFR5cGU+Lis/KS0oPzxub3JtYWxpemVkRXh0TmFtZT4uKylcXC5qc29uJC87XG5cbi8qKlxuICogQXZvaWQgdHlwb3MgYnkgdXNpbmcgY29uc3RhbnRzIVxuICovXG5jb25zdCBQUk9QRVJUSUVTID0gJ3Byb3BlcnRpZXMnO1xuXG4vKipcbiAqIEFuIGBBcmdTcGVjYCBpcyBhIGNsYXNzIHJlcHJlc2VudGluZyBtZXRhZGF0YSBhYm91dCBhbiBhcmd1bWVudCAob3IgY29uZmlnXG4gKiBvcHRpb24pIHVzZWQgZm9yIGNyb3NzLXJlZmVyZW5jaW5nLlxuICpcbiAqIFRoaXMgY2xhc3MgaGFzIG5vIGluc3RhbmNlIG1ldGhvZHMsIGFuZCBpcyBiYXNpY2FsbHkganVzdCBhIHJlYWQtb25seSBcInN0cnVjdFwiLlxuICovXG5leHBvcnQgY2xhc3MgQXJnU3BlYyB7XG4gIC8qKlxuICAgKiBUaGUgY2Fub25pY2FsIG5hbWUgb2YgdGhlIGFyZ3VtZW50LiBDb3JyZXNwb25kcyB0byBrZXkgaW4gc2NoZW1hJ3MgYHByb3BlcnRpZXNgIHByb3AuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBuYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgYEV4dGVuc2lvblR5cGVgIG9mIHRoZSBhcmd1bWVudC4gVGhpcyB3aWxsIGJlIHNldCBpZiB0aGUgYXJnIGNhbWUgZnJvbSBhbiBleHRlbnNpb247XG4gICAqIG90aGVyd2lzZSBpdCB3aWxsIGJlIGB1bmRlZmluZWRgLlxuICAgKiBAdHlwZSB7RXh0ZW5zaW9uVHlwZXx1bmRlZmluZWR9XG4gICAqL1xuICBleHRUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uLCBpZiB0aGlzIGFyZ3VtZW50IGNhbWUgZnJvbSBhbiBleHRlbnNpb24uXG4gICAqXG4gICAqIE90aGVyd2lzZSBgdW5kZWZpbmVkYC5cbiAgICogQHR5cGUge3N0cmluZ3x1bmRlZmluZWR9XG4gICAqL1xuICBleHROYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZW1hIElEIChgJGlkYCkgZm9yIHRoZSBhcmd1bWVudC4gIFRoaXMgaXMgYXV0b21hdGljYWxseSBkZXRlcm1pbmVkLCBhbmQgYW55IHVzZXItcHJvdmlkZWQgYCRpZGBzIHdpbGwgYmUgb3ZlcndyaXR0ZW4uXG4gICAqXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICByZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBDTEkgYXJndW1lbnQsIHNhbnMgbGVhZGluZyBkYXNoZXMuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBhcmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNpcmVkIGtleXBhdGggZm9yIHRoZSBhcmd1bWVudCBhZnRlciBhcmd1bWVudHMgaGF2ZSBiZWVuIHBhcnNlZC5cbiAgICpcbiAgICogVHlwaWNhbGx5IHRoaXMgaXMgY2FtZWxDYXNlZC4gIElmIHRoZSBhcmcgY2FtZSBmcm9tIGFuIGV4dGVuc2lvbiwgaXQgd2lsbCBiZSBwcmVmaXhlZCB3aXRoXG4gICAqIGA8ZXh0VHlwZT4uPGV4dE5hbWU+LmBcbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGRlc3Q7XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgYXJndW1lbnQgaXMsIGFzIHNwZWNpZmllZCBieSB0aGVcbiAgICogYGRlZmF1bHRgIHByb3BlcnR5IG9mIHRoZSBzY2hlbWEuXG4gICAqIEB0eXBlIHtEfVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlO1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgc29tZSBjb21wdXRlZCBmaWVsZHMgYW5kIGFzc2lnbnMgdGhlbSB0byB0aGUgaW5zdGFuY2UuXG4gICAqXG4gICAqIFVuZGVmaW5lZCBwcm9wZXJ0aWVzIGFyZSBub3QgYXNzaWduZWQuXG4gICAqXG4gICAqIFRoZSBfY29uc3RydWN0b3JfIGlzIHByaXZhdGUuIFVzZSB7QGxpbmsgQXJnU3BlYy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0ZW1wbGF0ZSBEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7QXJnU3BlY09wdGlvbnM8RD59IFtvcHRzXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKG5hbWUsIHtleHRUeXBlLCBleHROYW1lLCBkZXN0LCBkZWZhdWx0VmFsdWV9ID0ge30pIHtcbiAgICAvLyB3ZSBtdXN0IG5vcm1hbGl6ZSB0aGUgZXh0ZW5zaW9uIG5hbWUgdG8gZml0IGludG8gb3VyIGNvbnZlbnRpb24gZm9yIENMSVxuICAgIC8vIGFyZ3MuXG4gICAgY29uc3QgYXJnID0gQXJnU3BlYy50b0FyZyhuYW1lLCBleHRUeXBlLCBleHROYW1lKTtcblxuICAgIGNvbnN0IHJlZiA9IEFyZ1NwZWMudG9TY2hlbWFSZWYobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSk7XG5cbiAgICAvLyBpZiBubyBleHBsaWNpdCBgZGVzdGAgcHJvdmlkZWQsIGp1c3QgY2FtZWxDYXNlIHRoZSBuYW1lIHRvIGF2b2lkIG5lZWRpbmdcbiAgICAvLyB0byB1c2UgYnJhY2tldCBzeW50YXggd2hlbiBhY2Nlc3NpbmcgcHJvcHMgb24gdGhlIHBhcnNlZCBhcmdzIG9iamVjdC5cbiAgICBjb25zdCBiYXNlRGVzdCA9IF8uY2FtZWxDYXNlKGRlc3QgPz8gbmFtZSk7XG5cbiAgICBjb25zdCBkZXN0S2V5cGF0aCA9XG4gICAgICBleHRUeXBlICYmIGV4dE5hbWUgPyBbZXh0VHlwZSwgZXh0TmFtZSwgYmFzZURlc3RdLmpvaW4oJy4nKSA6IGJhc2VEZXN0O1xuXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmV4dFR5cGUgPSBleHRUeXBlO1xuICAgIHRoaXMuZXh0TmFtZSA9IGV4dE5hbWU7XG4gICAgdGhpcy5hcmcgPSBhcmc7XG4gICAgdGhpcy5kZXN0ID0gZGVzdEtleXBhdGg7XG4gICAgdGhpcy5yZWYgPSByZWY7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzY2hlbWEgSUQgKGAkaWRgKSBmb3IgdGhlICoqYXJndW1lbnQqKiBnaXZlbiB0aGUgcGFyYW1ldGVycy5cbiAgICpcbiAgICogSWYgeW91IG5lZWQgdGhlIFwicm9vdFwiIG9yIFwiYmFzZVwiIHNjaGVtYSBJRCwgdXNlIHtAbGluayBBcmdTcGVjLnRvU2NoZW1hQmFzZVJlZn0gaW5zdGVhZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBBcmd1bWVudCBuYW1lXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gW2V4dFR5cGVdIC0gRXh0ZW5zaW9uIHR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtleHROYW1lXSAtIEV4dGVuc2lvbiBuYW1lXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFNjaGVtYSBJRFxuICAgKi9cbiAgc3RhdGljIHRvU2NoZW1hUmVmIChuYW1lLCBleHRUeXBlLCBleHROYW1lKSB7XG4gICAgY29uc3QgYmFzZVJlZiA9IEFyZ1NwZWMudG9TY2hlbWFCYXNlUmVmKGV4dFR5cGUsIGV4dE5hbWUpO1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBbYCR7YmFzZVJlZn0jYCwgUFJPUEVSVElFUywgbmFtZV0uam9pbignLycpO1xuICAgIH1cbiAgICByZXR1cm4gW2Ake2Jhc2VSZWZ9I2AsIFBST1BFUlRJRVMsIFNFUlZFUl9QUk9QX05BTUUsIFBST1BFUlRJRVMsIG5hbWVdLmpvaW4oJy8nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBJRCBmb3IgYW4gZXh0ZW5zaW9uIG9yIHRoZSBiYXNlIHNjaGVtYSBJRC5cbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICovXG4gIHN0YXRpYyB0b1NjaGVtYUJhc2VSZWYgKGV4dFR5cGUsIGV4dE5hbWUpIHtcbiAgICBpZiAoZXh0VHlwZSAmJiBleHROYW1lKSB7XG4gICAgICByZXR1cm4gYCR7ZXh0VHlwZX0tJHtBcmdTcGVjLnRvTm9ybWFsaXplZEV4dE5hbWUoZXh0TmFtZSl9Lmpzb25gO1xuICAgIH1cbiAgICByZXR1cm4gQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSB1bmlxdWUgSUQgZm9yIHRoZSBhcmd1bWVudCBnaXZlbiB0aGUgcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBBcmd1bWVudCBuYW1lXG4gICAqIEBwYXJhbSB7RXh0ZW5zaW9uVHlwZX0gW2V4dFR5cGVdIC0gRXh0ZW5zaW9uIHR5cGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtleHROYW1lXSAtIEV4dGVuc2lvbiBuYW1lXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFVuaXF1ZSBJRFxuICAgKi9cbiAgc3RhdGljIHRvQXJnIChuYW1lLCBleHRUeXBlLCBleHROYW1lKSB7XG4gICAgY29uc3QgcHJvcGVyTmFtZSA9IF8ua2ViYWJDYXNlKG5hbWUucmVwbGFjZSgvXi0tPy8sICcnKSk7XG4gICAgaWYgKGV4dFR5cGUgJiYgZXh0TmFtZSkge1xuICAgICAgcmV0dXJuIFtleHRUeXBlLCBfLmtlYmFiQ2FzZShleHROYW1lKSwgcHJvcGVyTmFtZV0uam9pbignLScpO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcGVyTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3JtYWxpemVzIGEgcmF3IGV4dGVuc2lvbiBuYW1lIChub3QgaW5jbHVkaW5nIHRoZSB0eXBlKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dE5hbWUgLSBFeHRlbnNpb24gbmFtZVxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBOb3JtYWxpemVkIGV4dGVuc2lvbiBuYW1lXG4gICAqL1xuICBzdGF0aWMgdG9Ob3JtYWxpemVkRXh0TmFtZSAoZXh0TmFtZSkge1xuICAgIHJldHVybiBfLmtlYmFiQ2FzZShleHROYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVuIGdpdmVuIHRoZSByb290IElEIG9mIGEgc2NoZW1hIGZvciBhbiBleHRlbnNpb24gKGA8ZXh0VHlwZT4tPG5vcm1hbGl6ZWRFeHROYW1lPi5qc29uYCkgUmV0dXJucyBhbiBvYmplY3QgY29udGFpbmluZyB0aGUgZXh0ZW5zaW9uIHR5cGUgYW5kIHRoZSBfbm9ybWFsaXplZF8gZXh0ZW5zaW9uIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzY2hlbWFJZCAtIFJvb3Qgc2NoZW1hIElEXG4gICAqIEByZXR1cm5zIHt7ZXh0VHlwZTogRXh0ZW5zaW9uVHlwZXx1bmRlZmluZWQsIG5vcm1hbGl6ZWRFeHROYW1lOiBzdHJpbmd8dW5kZWZpbmVkfX1cbiAgICovXG4gIHN0YXRpYyBleHRlbnNpb25JbmZvRnJvbVJvb3RTY2hlbWFJZCAoc2NoZW1hSWQpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gc2NoZW1hSWQubWF0Y2goU0NIRU1BX0lEX1JFR0VYUCk7XG4gICAgaWYgKG1hdGNoZXM/Lmdyb3Vwcykge1xuICAgICAgY29uc3Qge2V4dFR5cGUsIG5vcm1hbGl6ZWRFeHROYW1lfSA9IG1hdGNoZXMuZ3JvdXBzO1xuICAgICAgcmV0dXJuIHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX07XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIGBBcmdTcGVjYFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIFRoZSBjYW5vbmljYWwgbmFtZSBvZiB0aGUgYXJndW1lbnQuIENvcnJlc3BvbmRzIHRvIGEga2V5IGluIGEgc2NoZW1hJ3NcbiAgICogYHByb3BlcnRpZXNgIHByb3BlcnR5LlxuICAgKiBAcGFyYW0ge0FyZ1NwZWNPcHRpb25zfSBbb3B0c10gLSBPcHRpb25zXG4gICAqIEByZXR1cm5zIHtSZWFkb25seTxBcmdTcGVjPn1cbiAgICovXG4gIHN0YXRpYyBjcmVhdGUgKG5hbWUsIG9wdHMpIHtcbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShuZXcgQXJnU3BlYyhuYW1lLCBvcHRzKSk7XG4gIH1cblxuICAvKipcbiAgICogU3RyaW5nIHJlcHJlc2VudGF0aW9uLCB1c2VmdWwgZm9yIGRlYnVnZ2luZ1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgdG9TdHJpbmcgKCkge1xuICAgIGxldCBzdHIgPSBgW0FyZ1NwZWNdICR7dGhpcy5uYW1lfSAoJHt0aGlzLnJlZn0pYDtcbiAgICBpZiAodGhpcy5leHRUeXBlICYmIHRoaXMuZXh0TmFtZSkge1xuICAgICAgc3RyICs9IGAgKGV4dDogJHt0aGlzLmV4dFR5cGV9LyR7dGhpcy5leHROYW1lfSlgO1xuICAgIH1cbiAgICByZXR1cm4gc3RyO1xuICB9XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3Ige0BsaW5rIEFyZ1NwZWMuY3JlYXRlfVxuICogQHRlbXBsYXRlIERcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFyZ1NwZWNPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gW2V4dE5hbWVdXG4gKiBAcHJvcGVydHkge0V4dGVuc2lvblR5cGV9IFtleHRUeXBlXVxuICogQHByb3BlcnR5IHtzdHJpbmd9IFtkZXN0XVxuICogQHByb3BlcnR5IHtEfSBbZGVmYXVsdFZhbHVlXVxuICovXG4iXSwiZmlsZSI6ImxpYi9zY2hlbWEvYXJnLXNwZWMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
|
|
122
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvYXJnLXNwZWMuanMiXSwibmFtZXMiOlsiQVBQSVVNX0NPTkZJR19TQ0hFTUFfSUQiLCJTRVJWRVJfUFJPUF9OQU1FIiwiU0NIRU1BX0lEX1JFR0VYUCIsIlBST1BFUlRJRVMiLCJBcmdTcGVjIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZXh0VHlwZSIsImV4dE5hbWUiLCJkZXN0IiwiZGVmYXVsdFZhbHVlIiwiYXJnIiwidG9BcmciLCJyZWYiLCJ0b1NjaGVtYVJlZiIsInJhd0Rlc3QiLCJfIiwiY2FtZWxDYXNlIiwiZGVzdEtleXBhdGgiLCJqb2luIiwiYmFzZVJlZiIsInRvU2NoZW1hQmFzZVJlZiIsInRvTm9ybWFsaXplZEV4dE5hbWUiLCJwcm9wZXJOYW1lIiwia2ViYWJDYXNlIiwicmVwbGFjZSIsImV4dGVuc2lvbkluZm9Gcm9tUm9vdFNjaGVtYUlkIiwic2NoZW1hSWQiLCJtYXRjaGVzIiwibWF0Y2giLCJncm91cHMiLCJub3JtYWxpemVkRXh0TmFtZSIsImNyZWF0ZSIsIm9wdHMiLCJPYmplY3QiLCJmcmVlemUiLCJ0b1N0cmluZyIsInN0ciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQU1PLE1BQU1BLHVCQUF1QixHQUFHLGFBQWhDOztBQU9BLE1BQU1DLGdCQUFnQixHQUFHLFFBQXpCOztBQUtQLE1BQU1DLGdCQUFnQixHQUFHLGtEQUF6QjtBQUtBLE1BQU1DLFVBQVUsR0FBRyxZQUFuQjs7QUFRTyxNQUFNQyxPQUFOLENBQWM7QUFtRW5CQyxFQUFBQSxXQUFXLENBQUVDLElBQUYsRUFBUTtBQUFDQyxJQUFBQSxPQUFEO0FBQVVDLElBQUFBLE9BQVY7QUFBbUJDLElBQUFBLElBQW5CO0FBQXlCQyxJQUFBQTtBQUF6QixNQUF5QyxFQUFqRCxFQUFxRDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHOUQsVUFBTUMsR0FBRyxHQUFHUCxPQUFPLENBQUNRLEtBQVIsQ0FBY04sSUFB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QUFDRDs7QUFVWSxTQUFOQyxNQUFNLENBQUUxQixJQUFGLEVBQVEyQixJQUFSLEVBQWM7QUFDekIsV0FBT0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsSUFBSS9CLE9BQUosQ0FBWUUsSUFBWixFQUFrQjJCLElBQWxCLENBQWQsQ0FBUDtBQUNEOztBQU9ERyxFQUFBQSxRQUFRLEdBQUk7QUFDVixRQUFJQyxHQUFHLEdBQUksYUFBWSxLQUFLL0IsSUFBSyxLQUFJLEtBQUtPLEdBQUksR0FBOUM7O0FBQ0EsUUFBSSxLQUFLTixPQUFMLElBQWdCLEtBQUtDLE9BQXpCLEVBQWtDO0FBQ2hDNkIsTUFBQUEsR0FBRyxJQUFLLFVBQVMsS0FBSzlCLE9BQVEsSUFBRyxLQUFLQyxPQUFRLEdBQTlDO0FBQ0Q7O0FBQ0QsV0FBTzZCLEdBQVA7QUFDRDs7QUFyTGtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLyoqXG4gKiBUaGUgb3JpZ2luYWwgSUQgb2YgdGhlIEFwcGl1bSBjb25maWcgc2NoZW1hLlxuICogV2UgdXNlIHRoaXMgaW4gdGhlIENMSSB0byBjb252ZXJ0IGl0IHRvIGBhcmdwYXJzZWAgb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGNvbnN0IEFQUElVTV9DT05GSUdfU0NIRU1BX0lEID0gJ2FwcGl1bS5qc29uJztcblxuLyoqXG4gKiBUaGUgc2NoZW1hIHByb3AgY29udGFpbmluZyBzZXJ2ZXItcmVsYXRlZCBvcHRpb25zLiBFdmVyeXRoaW5nIGluIGhlcmVcbiAqIGlzIFwibmF0aXZlXCIgdG8gQXBwaXVtLlxuICogVXNlZCBieSB7QGxpbmsgZmxhdHRlblNjaGVtYX0gZm9yIHRyYW5zZm9ybWluZyB0aGUgc2NoZW1hIGludG8gQ0xJIGFyZ3MuXG4gKi9cbmV4cG9ydCBjb25zdCBTRVJWRVJfUFJPUF9OQU1FID0gJ3NlcnZlcic7XG5cbi8qKlxuICogVXNlZCB0byBwYXJzZSBleHRlbnNpb24gaW5mbyBmcm9tIGEgc2NoZW1hIElELlxuICovXG5jb25zdCBTQ0hFTUFfSURfUkVHRVhQID0gL14oPzxleHRUeXBlPi4rPyktKD88bm9ybWFsaXplZEV4dE5hbWU+LispXFwuanNvbiQvO1xuXG4vKipcbiAqIEF2b2lkIHR5cG9zIGJ5IHVzaW5nIGNvbnN0YW50cyFcbiAqL1xuY29uc3QgUFJPUEVSVElFUyA9ICdwcm9wZXJ0aWVzJztcblxuLyoqXG4gKiBBbiBgQXJnU3BlY2AgaXMgYSBjbGFzcyByZXByZXNlbnRpbmcgbWV0YWRhdGEgYWJvdXQgYW4gYXJndW1lbnQgKG9yIGNvbmZpZ1xuICogb3B0aW9uKSB1c2VkIGZvciBjcm9zcy1yZWZlcmVuY2luZy5cbiAqXG4gKiBUaGlzIGNsYXNzIGhhcyBubyBpbnN0YW5jZSBtZXRob2RzLCBhbmQgaXMgYmFzaWNhbGx5IGp1c3QgYSByZWFkLW9ubHkgXCJzdHJ1Y3RcIi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFyZ1NwZWMge1xuICAvKipcbiAgICogVGhlIGNhbm9uaWNhbCBuYW1lIG9mIHRoZSBhcmd1bWVudC4gQ29ycmVzcG9uZHMgdG8ga2V5IGluIHNjaGVtYSdzIGBwcm9wZXJ0aWVzYCBwcm9wLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgbmFtZTtcblxuICAvKipcbiAgICogVGhlIGBFeHRlbnNpb25UeXBlYCBvZiB0aGUgYXJndW1lbnQuIFRoaXMgd2lsbCBiZSBzZXQgaWYgdGhlIGFyZyBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uO1xuICAgKiBvdGhlcndpc2UgaXQgd2lsbCBiZSBgdW5kZWZpbmVkYC5cbiAgICogQHR5cGUge0V4dGVuc2lvblR5cGV8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0VHlwZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiwgaWYgdGhpcyBhcmd1bWVudCBjYW1lIGZyb20gYW4gZXh0ZW5zaW9uLlxuICAgKlxuICAgKiBPdGhlcndpc2UgYHVuZGVmaW5lZGAuXG4gICAqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfVxuICAgKi9cbiAgZXh0TmFtZTtcblxuICAvKipcbiAgICogVGhlIHNjaGVtYSBJRCAoYCRpZGApIGZvciB0aGUgYXJndW1lbnQuICBUaGlzIGlzIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lZCwgYW5kIGFueSB1c2VyLXByb3ZpZGVkIGAkaWRgcyB3aWxsIGJlIG92ZXJ3cml0dGVuLlxuICAgKlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgcmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0xJIGFyZ3VtZW50LCBzYW5zIGxlYWRpbmcgZGFzaGVzLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgYXJnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzaXJlZCBrZXlwYXRoIGZvciB0aGUgYXJndW1lbnQgYWZ0ZXIgYXJndW1lbnRzIGhhdmUgYmVlbiBwYXJzZWQuXG4gICAqXG4gICAqIFR5cGljYWxseSB0aGlzIGlzIGNhbWVsQ2FzZWQuICBJZiB0aGUgYXJnIGNhbWUgZnJvbSBhbiBleHRlbnNpb24sIGl0IHdpbGwgYmUgcHJlZml4ZWQgd2l0aFxuICAgKiBgPGV4dFR5cGU+LjxleHROYW1lPi5gXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBkZXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgQXJnU3BlYy5kZXN0fSBidXQgd2l0aG91dCB0aGUgbGVhZGluZyBgPGV4dFR5cGU+LjxleHROYW1lPi5gIHByZWZpeC5cbiAgICovXG4gIHJhd0Rlc3Q7XG5cbiAgLyoqXG4gICAqIFdoYXRldmVyIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoaXMgYXJndW1lbnQgaXMsIGFzIHNwZWNpZmllZCBieSB0aGVcbiAgICogYGRlZmF1bHRgIHByb3BlcnR5IG9mIHRoZSBzY2hlbWEuXG4gICAqIEB0eXBlIHtEfVxuICAgKi9cbiAgZGVmYXVsdFZhbHVlO1xuXG4gIC8qKlxuICAgKiBCdWlsZHMgc29tZSBjb21wdXRlZCBmaWVsZHMgYW5kIGFzc2lnbnMgdGhlbSB0byB0aGUgaW5zdGFuY2UuXG4gICAqXG4gICAqIFVuZGVmaW5lZCBwcm9wZXJ0aWVzIGFyZSBub3QgYXNzaWduZWQuXG4gICAqXG4gICAqIFRoZSBfY29uc3RydWN0b3JfIGlzIHByaXZhdGUuIFVzZSB7QGxpbmsgQXJnU3BlYy5jcmVhdGV9IGluc3RlYWQuXG4gICAqIEBwcml2YXRlXG4gICAqIEB0ZW1wbGF0ZSBEXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7QXJnU3BlY09wdGlvbnM8RD59IFtvcHRzXVxuICAgKi9cbiAgY29uc3RydWN0b3IgKG5hbWUsIHtleHRUeXBlLCBleHROYW1lLCBkZXN0LCBkZWZhdWx0VmFsdWV9ID0ge30pIHtcbiAgICAvLyB3ZSBtdXN0IG5vcm1hbGl6ZSB0aGUgZXh0ZW5zaW9uIG5hbWUgdG8gZml0IGludG8gb3VyIGNvbnZlbnRpb24gZm9yIENMSVxuICAgIC8vIGFyZ3MuXG4gICAgY29uc3QgYXJnID0gQXJnU3BlYy50b0FyZyhuYW1lLCBleHRUeXBlLCBleHROYW1lKTtcblxuICAgIGNvbnN0IHJlZiA9IEFyZ1NwZWMudG9TY2hlbWFSZWYobmFtZSwgZXh0VHlwZSwgZXh0TmFtZSk7XG5cbiAgICAvLyBpZiBubyBleHBsaWNpdCBgZGVzdGAgcHJvdmlkZWQsIGp1c3QgY2FtZWxDYXNlIHRoZSBuYW1lIHRvIGF2b2lkIG5lZWRpbmdcbiAgICAvLyB0byB1c2UgYnJhY2tldCBzeW50YXggd2hlbiBhY2Nlc3NpbmcgcHJvcHMgb24gdGhlIHBhcnNlZCBhcmdzIG9iamVjdC5cbiAgICBjb25zdCByYXdEZXN0ID0gXy5jYW1lbENhc2UoZGVzdCA/PyBuYW1lKTtcblxuICAgIGNvbnN0IGRlc3RLZXlwYXRoID1cbiAgICAgIGV4dFR5cGUgJiYgZXh0TmFtZSA/IFtleHRUeXBlLCBleHROYW1lLCByYXdEZXN0XS5qb2luKCcuJykgOiByYXdEZXN0O1xuXG4gICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB0aGlzLmV4dFR5cGUgPSBleHRUeXBlO1xuICAgIHRoaXMuZXh0TmFtZSA9IGV4dE5hbWU7XG4gICAgdGhpcy5hcmcgPSBhcmc7XG4gICAgdGhpcy5kZXN0ID0gZGVzdEtleXBhdGg7XG4gICAgdGhpcy5yZWYgPSByZWY7XG4gICAgdGhpcy5yYXdEZXN0ID0gcmF3RGVzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHNjaGVtYSBJRCAoYCRpZGApIGZvciB0aGUgKiphcmd1bWVudCoqIGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKlxuICAgKiBJZiB5b3UgbmVlZCB0aGUgXCJyb290XCIgb3IgXCJiYXNlXCIgc2NoZW1hIElELCB1c2Uge0BsaW5rIEFyZ1NwZWMudG9TY2hlbWFCYXNlUmVmfSBpbnN0ZWFkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gU2NoZW1hIElEXG4gICAqL1xuICBzdGF0aWMgdG9TY2hlbWFSZWYgKG5hbWUsIGV4dFR5cGUsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBiYXNlUmVmID0gQXJnU3BlYy50b1NjaGVtYUJhc2VSZWYoZXh0VHlwZSwgZXh0TmFtZSk7XG4gICAgaWYgKGV4dFR5cGUgJiYgZXh0TmFtZSkge1xuICAgICAgcmV0dXJuIFtgJHtiYXNlUmVmfSNgLCBQUk9QRVJUSUVTLCBuYW1lXS5qb2luKCcvJyk7XG4gICAgfVxuICAgIHJldHVybiBbYCR7YmFzZVJlZn0jYCwgUFJPUEVSVElFUywgU0VSVkVSX1BST1BfTkFNRSwgUFJPUEVSVElFUywgbmFtZV0uam9pbignLycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc2NoZW1hIElEIGZvciBhbiBleHRlbnNpb24gb3IgdGhlIGJhc2Ugc2NoZW1hIElELlxuICAgKiBAcGFyYW0ge0V4dGVuc2lvblR5cGV9IFtleHRUeXBlXSAtIEV4dGVuc2lvbiB0eXBlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbZXh0TmFtZV0gLSBFeHRlbnNpb24gbmFtZVxuICAgKi9cbiAgc3RhdGljIHRvU2NoZW1hQmFzZVJlZiAoZXh0VHlwZSwgZXh0TmFtZSkge1xuICAgIGlmIChleHRUeXBlICYmIGV4dE5hbWUpIHtcbiAgICAgIHJldHVybiBgJHtleHRUeXBlfS0ke0FyZ1NwZWMudG9Ob3JtYWxpemVkRXh0TmFtZShleHROYW1lKX0uanNvbmA7XG4gICAgfVxuICAgIHJldHVybiBBUFBJVU1fQ09ORklHX1NDSEVNQV9JRDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHVuaXF1ZSBJRCBmb3IgdGhlIGFyZ3VtZW50IGdpdmVuIHRoZSBwYXJhbWV0ZXJzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAtIEFyZ3VtZW50IG5hbWVcbiAgICogQHBhcmFtIHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV0gLSBFeHRlbnNpb24gdHlwZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2V4dE5hbWVdIC0gRXh0ZW5zaW9uIG5hbWVcbiAgICogQHJldHVybnMge3N0cmluZ30gVW5pcXVlIElEXG4gICAqL1xuICBzdGF0aWMgdG9BcmcgKG5hbWUsIGV4dFR5cGUsIGV4dE5hbWUpIHtcbiAgICBjb25zdCBwcm9wZXJOYW1lID0gXy5rZWJhYkNhc2UobmFtZS5yZXBsYWNlKC9eLS0/LywgJycpKTtcbiAgICBpZiAoZXh0VHlwZSAmJiBleHROYW1lKSB7XG4gICAgICByZXR1cm4gW2V4dFR5cGUsIF8ua2ViYWJDYXNlKGV4dE5hbWUpLCBwcm9wZXJOYW1lXS5qb2luKCctJyk7XG4gICAgfVxuICAgIHJldHVybiBwcm9wZXJOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vcm1hbGl6ZXMgYSByYXcgZXh0ZW5zaW9uIG5hbWUgKG5vdCBpbmNsdWRpbmcgdGhlIHR5cGUpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0TmFtZSAtIEV4dGVuc2lvbiBuYW1lXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IE5vcm1hbGl6ZWQgZXh0ZW5zaW9uIG5hbWVcbiAgICovXG4gIHN0YXRpYyB0b05vcm1hbGl6ZWRFeHROYW1lIChleHROYW1lKSB7XG4gICAgcmV0dXJuIF8ua2ViYWJDYXNlKGV4dE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZW4gZ2l2ZW4gdGhlIHJvb3QgSUQgb2YgYSBzY2hlbWEgZm9yIGFuIGV4dGVuc2lvbiAoYDxleHRUeXBlPi08bm9ybWFsaXplZEV4dE5hbWU+Lmpzb25gKSBSZXR1cm5zIGFuIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRlbnNpb24gdHlwZSBhbmQgdGhlIF9ub3JtYWxpemVkXyBleHRlbnNpb24gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNjaGVtYUlkIC0gUm9vdCBzY2hlbWEgSURcbiAgICogQHJldHVybnMgeyB7ZXh0VHlwZTogRXh0ZW5zaW9uVHlwZXx1bmRlZmluZWQsIG5vcm1hbGl6ZWRFeHROYW1lOiBzdHJpbmd8dW5kZWZpbmVkfSB9XG4gICAqL1xuICBzdGF0aWMgZXh0ZW5zaW9uSW5mb0Zyb21Sb290U2NoZW1hSWQgKHNjaGVtYUlkKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9IHNjaGVtYUlkLm1hdGNoKFNDSEVNQV9JRF9SRUdFWFApO1xuICAgIGlmIChtYXRjaGVzPy5ncm91cHMpIHtcbiAgICAgIGNvbnN0IHtleHRUeXBlLCBub3JtYWxpemVkRXh0TmFtZX0gPSBtYXRjaGVzLmdyb3VwcztcbiAgICAgIHJldHVybiB7ZXh0VHlwZSwgbm9ybWFsaXplZEV4dE5hbWV9O1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBgQXJnU3BlY2BcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgLSBUaGUgY2Fub25pY2FsIG5hbWUgb2YgdGhlIGFyZ3VtZW50LiBDb3JyZXNwb25kcyB0byBhIGtleSBpbiBhIHNjaGVtYSdzXG4gICAqIGBwcm9wZXJ0aWVzYCBwcm9wZXJ0eS5cbiAgICogQHBhcmFtIHtBcmdTcGVjT3B0aW9uc30gW29wdHNdIC0gT3B0aW9uc1xuICAgKiBAcmV0dXJucyB7UmVhZG9ubHk8QXJnU3BlYz59XG4gICAqL1xuICBzdGF0aWMgY3JlYXRlIChuYW1lLCBvcHRzKSB7XG4gICAgcmV0dXJuIE9iamVjdC5mcmVlemUobmV3IEFyZ1NwZWMobmFtZSwgb3B0cykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmluZyByZXByZXNlbnRhdGlvbiwgdXNlZnVsIGZvciBkZWJ1Z2dpbmdcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHRvU3RyaW5nICgpIHtcbiAgICBsZXQgc3RyID0gYFtBcmdTcGVjXSAke3RoaXMubmFtZX0gKCR7dGhpcy5yZWZ9KWA7XG4gICAgaWYgKHRoaXMuZXh0VHlwZSAmJiB0aGlzLmV4dE5hbWUpIHtcbiAgICAgIHN0ciArPSBgIChleHQ6ICR7dGhpcy5leHRUeXBlfS8ke3RoaXMuZXh0TmFtZX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBBcmdTcGVjLmNyZWF0ZX1cbiAqIEB0ZW1wbGF0ZSBEXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBcmdTcGVjT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFtleHROYW1lXVxuICogQHByb3BlcnR5IHtFeHRlbnNpb25UeXBlfSBbZXh0VHlwZV1cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbZGVzdF1cbiAqIEBwcm9wZXJ0eSB7RH0gW2RlZmF1bHRWYWx1ZV1cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJy4uL2V4dC1jb25maWctaW8nKS5FeHRlbnNpb25UeXBlfSBFeHRlbnNpb25UeXBlXG4gKi9cbiJdLCJmaWxlIjoibGliL3NjaGVtYS9hcmctc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|