appium 2.0.0-beta.25 → 2.0.0-beta.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/appium.d.ts +215 -0
- package/build/lib/appium.d.ts.map +1 -0
- package/build/lib/appium.js +94 -101
- package/build/lib/cli/args.d.ts +20 -0
- package/build/lib/cli/args.d.ts.map +1 -0
- package/build/lib/cli/args.js +19 -39
- package/build/lib/cli/driver-command.d.ts +36 -0
- package/build/lib/cli/driver-command.d.ts.map +1 -0
- package/build/lib/cli/driver-command.js +10 -13
- package/build/lib/cli/extension-command.d.ts +345 -0
- package/build/lib/cli/extension-command.d.ts.map +1 -0
- package/build/lib/cli/extension-command.js +117 -94
- package/build/lib/cli/extension.d.ts +14 -0
- package/build/lib/cli/extension.d.ts.map +1 -0
- package/build/lib/cli/extension.js +14 -22
- package/build/lib/cli/parser.d.ts +79 -0
- package/build/lib/cli/parser.d.ts.map +1 -0
- package/build/lib/cli/parser.js +9 -19
- package/build/lib/cli/plugin-command.d.ts +39 -0
- package/build/lib/cli/plugin-command.d.ts.map +1 -0
- package/build/lib/cli/plugin-command.js +9 -14
- package/build/lib/cli/utils.d.ts +29 -0
- package/build/lib/cli/utils.d.ts.map +1 -0
- package/build/lib/cli/utils.js +2 -4
- package/build/lib/config-file.d.ts +100 -0
- package/build/lib/config-file.d.ts.map +1 -0
- package/build/lib/config-file.js +2 -4
- package/build/lib/config.d.ts +40 -0
- package/build/lib/config.d.ts.map +1 -0
- package/build/lib/config.js +8 -7
- package/build/lib/constants.d.ts +48 -0
- package/build/lib/constants.d.ts.map +1 -0
- package/build/lib/constants.js +60 -0
- package/build/lib/extension/driver-config.d.ts +84 -0
- package/build/lib/extension/driver-config.d.ts.map +1 -0
- package/build/lib/extension/driver-config.js +190 -0
- package/build/lib/extension/extension-config.d.ts +170 -0
- package/build/lib/extension/extension-config.d.ts.map +1 -0
- package/build/lib/extension/extension-config.js +297 -0
- package/build/lib/extension/index.d.ts +39 -0
- package/build/lib/extension/index.d.ts.map +1 -0
- package/build/lib/extension/index.js +77 -0
- package/build/lib/extension/manifest.d.ts +174 -0
- package/build/lib/extension/manifest.d.ts.map +1 -0
- package/build/lib/extension/manifest.js +246 -0
- package/build/lib/extension/package-changed.d.ts +11 -0
- package/build/lib/extension/package-changed.d.ts.map +1 -0
- package/build/lib/extension/package-changed.js +68 -0
- package/build/lib/extension/plugin-config.d.ts +62 -0
- package/build/lib/extension/plugin-config.d.ts.map +1 -0
- package/build/lib/extension/plugin-config.js +87 -0
- package/build/lib/grid-register.d.ts +10 -0
- package/build/lib/grid-register.d.ts.map +1 -0
- package/build/lib/grid-register.js +2 -4
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logger.js +2 -4
- package/build/lib/logsink.d.ts +4 -0
- package/build/lib/logsink.d.ts.map +1 -0
- package/build/lib/logsink.js +2 -4
- package/build/lib/main.d.ts +51 -0
- package/build/lib/main.d.ts.map +1 -0
- package/build/lib/main.js +40 -68
- package/build/lib/schema/arg-spec.d.ts +143 -0
- package/build/lib/schema/arg-spec.d.ts.map +1 -0
- package/build/lib/schema/arg-spec.js +11 -14
- package/build/lib/schema/cli-args.d.ts +19 -0
- package/build/lib/schema/cli-args.d.ts.map +1 -0
- package/build/lib/schema/cli-args.js +2 -4
- package/build/lib/schema/cli-transformers.d.ts +5 -0
- package/build/lib/schema/cli-transformers.d.ts.map +1 -0
- package/build/lib/schema/cli-transformers.js +2 -4
- package/build/lib/schema/index.d.ts +3 -0
- package/build/lib/schema/index.d.ts.map +1 -0
- package/build/lib/schema/index.js +2 -4
- package/build/lib/schema/keywords.d.ts +24 -0
- package/build/lib/schema/keywords.d.ts.map +1 -0
- package/build/lib/schema/keywords.js +2 -4
- package/build/lib/schema/schema.d.ts +259 -0
- package/build/lib/schema/schema.d.ts.map +1 -0
- package/build/lib/schema/schema.js +57 -39
- package/build/lib/utils.d.ts +66 -0
- package/build/lib/utils.d.ts.map +1 -0
- package/build/lib/utils.js +6 -35
- package/build/tsconfig.tsbuildinfo +1 -0
- package/lib/appium.js +188 -117
- package/lib/cli/args.js +19 -24
- package/lib/cli/driver-command.js +19 -8
- package/lib/cli/extension-command.js +314 -184
- package/lib/cli/extension.js +18 -16
- package/lib/cli/parser.js +7 -16
- package/lib/cli/plugin-command.js +16 -7
- package/lib/cli/utils.js +1 -1
- package/lib/config-file.js +6 -7
- package/lib/config.js +17 -12
- package/lib/constants.js +78 -0
- package/lib/extension/driver-config.js +249 -0
- package/lib/extension/extension-config.js +458 -0
- package/lib/extension/index.js +102 -0
- package/lib/extension/manifest.js +486 -0
- package/lib/extension/package-changed.js +63 -0
- package/lib/extension/plugin-config.js +113 -0
- package/lib/grid-register.js +4 -4
- package/lib/logsink.js +4 -0
- package/lib/main.js +54 -92
- package/lib/schema/arg-spec.js +11 -7
- package/lib/schema/cli-args.js +1 -1
- package/lib/schema/cli-transformers.js +0 -1
- package/lib/schema/keywords.js +1 -2
- package/lib/schema/schema.js +62 -31
- package/lib/utils.js +48 -45
- package/package.json +30 -24
- package/{postinstall.js → scripts/postinstall.js} +1 -1
- package/types/appium-manifest.d.ts +61 -0
- package/types/cli.d.ts +134 -0
- package/types/extension.d.ts +56 -0
- package/types/external-manifest.d.ts +58 -0
- package/types/index.d.ts +7 -0
- package/bin/ios-webkit-debug-proxy-launcher.js +0 -71
- package/build/check-npm-pack-files.js +0 -23
- package/build/commands-yml/parse.js +0 -319
- package/build/commands-yml/validator.js +0 -130
- package/build/index.js +0 -19
- package/build/lib/appium-config.schema.json +0 -0
- package/build/lib/cli/npm.js +0 -220
- package/build/lib/driver-config.js +0 -100
- package/build/lib/drivers.js +0 -100
- package/build/lib/ext-config-io.js +0 -165
- package/build/lib/extension-config.js +0 -320
- package/build/lib/plugin-config.js +0 -69
- package/build/lib/plugins.js +0 -18
- package/build/lib/schema/appium-config-schema.js +0 -253
- package/build/postinstall.js +0 -90
- package/build/test/cli/cli-e2e-specs.js +0 -221
- package/build/test/cli/cli-helpers.js +0 -86
- package/build/test/cli/cli-specs.js +0 -71
- package/build/test/cli/fixtures/test-driver/package.json +0 -27
- package/build/test/cli/schema-args-specs.js +0 -48
- package/build/test/cli/schema-e2e-specs.js +0 -47
- package/build/test/config-e2e-specs.js +0 -112
- package/build/test/config-file-e2e-specs.js +0 -191
- package/build/test/config-file-specs.js +0 -281
- package/build/test/config-specs.js +0 -258
- package/build/test/driver-e2e-specs.js +0 -435
- package/build/test/driver-specs.js +0 -386
- package/build/test/ext-config-io-specs.js +0 -181
- package/build/test/extension-config-specs.js +0 -365
- package/build/test/fixtures/allow-feat.txt +0 -5
- package/build/test/fixtures/caps.json +0 -3
- package/build/test/fixtures/config/allow-insecure.txt +0 -3
- package/build/test/fixtures/config/appium.config.bad-nodeconfig.json +0 -5
- package/build/test/fixtures/config/appium.config.bad.json +0 -32
- package/build/test/fixtures/config/appium.config.ext-good.json +0 -9
- package/build/test/fixtures/config/appium.config.ext-unknown-props.json +0 -10
- package/build/test/fixtures/config/appium.config.good.js +0 -40
- package/build/test/fixtures/config/appium.config.good.json +0 -33
- package/build/test/fixtures/config/appium.config.good.yaml +0 -30
- package/build/test/fixtures/config/appium.config.invalid.json +0 -31
- package/build/test/fixtures/config/appium.config.security-array.json +0 -5
- package/build/test/fixtures/config/appium.config.security-delimited.json +0 -5
- package/build/test/fixtures/config/appium.config.security-path.json +0 -5
- package/build/test/fixtures/config/driver-fake.config.json +0 -8
- package/build/test/fixtures/config/nodeconfig.json +0 -3
- package/build/test/fixtures/config/plugin-fake.config.json +0 -0
- package/build/test/fixtures/default-args.js +0 -35
- package/build/test/fixtures/deny-feat.txt +0 -5
- package/build/test/fixtures/driver.schema.js +0 -20
- package/build/test/fixtures/extensions.yaml +0 -27
- package/build/test/fixtures/flattened-schema.js +0 -532
- package/build/test/fixtures/plugin.schema.js +0 -20
- package/build/test/fixtures/schema-with-extensions.js +0 -28
- package/build/test/grid-register-specs.js +0 -74
- package/build/test/helpers.js +0 -75
- package/build/test/logger-specs.js +0 -76
- package/build/test/npm-specs.js +0 -20
- package/build/test/parser-specs.js +0 -319
- package/build/test/plugin-e2e-specs.js +0 -316
- package/build/test/schema/arg-spec-specs.js +0 -70
- package/build/test/schema/cli-args-specs.js +0 -408
- package/build/test/schema/schema-specs.js +0 -407
- package/build/test/utils-specs.js +0 -288
- package/lib/cli/npm.js +0 -251
- package/lib/driver-config.js +0 -101
- package/lib/drivers.js +0 -84
- package/lib/ext-config-io.js +0 -287
- package/lib/extension-config.js +0 -366
- package/lib/plugin-config.js +0 -63
- package/lib/plugins.js +0 -13
- package/lib/schema/appium-config-schema.js +0 -287
- package/types/appium-config.d.ts +0 -197
- package/types/types.d.ts +0 -206
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
|
|
8
|
-
require("source-map-support/register");
|
|
9
|
-
|
|
10
|
-
const schema = {
|
|
11
|
-
$schema: 'http://json-schema.org/draft-07/schema',
|
|
12
|
-
additionalProperties: false,
|
|
13
|
-
description: 'A schema for Appium configuration files',
|
|
14
|
-
properties: {
|
|
15
|
-
server: {
|
|
16
|
-
additionalProperties: false,
|
|
17
|
-
description: 'Configuration when running Appium as a server',
|
|
18
|
-
properties: {
|
|
19
|
-
address: {
|
|
20
|
-
$comment: 'I think hostname covers both DNS and IPv4...could be wrong',
|
|
21
|
-
appiumCliAliases: ['a'],
|
|
22
|
-
default: '0.0.0.0',
|
|
23
|
-
description: 'IP address to listen on',
|
|
24
|
-
format: 'hostname',
|
|
25
|
-
title: 'address config',
|
|
26
|
-
type: 'string'
|
|
27
|
-
},
|
|
28
|
-
'allow-cors': {
|
|
29
|
-
description: 'Whether the Appium server should allow web browser connections from any host',
|
|
30
|
-
title: 'allow-cors config',
|
|
31
|
-
type: 'boolean',
|
|
32
|
-
default: false
|
|
33
|
-
},
|
|
34
|
-
'allow-insecure': {
|
|
35
|
-
appiumCliTransformer: 'csv',
|
|
36
|
-
default: [],
|
|
37
|
-
description: 'Set which insecure features are allowed to run in this server\'s sessions. Features are defined on a driver level; see documentation for more details. Note that features defined via "deny-insecure" will be disabled, even if also listed here. If string, a path to a text file containing policy or a comma-delimited list.',
|
|
38
|
-
items: {
|
|
39
|
-
type: 'string'
|
|
40
|
-
},
|
|
41
|
-
title: 'allow-insecure config',
|
|
42
|
-
type: 'array',
|
|
43
|
-
uniqueItems: true
|
|
44
|
-
},
|
|
45
|
-
'base-path': {
|
|
46
|
-
appiumCliAliases: ['pa'],
|
|
47
|
-
default: '',
|
|
48
|
-
description: 'Base path to use as the prefix for all webdriver routes running on the server',
|
|
49
|
-
title: 'base-path config',
|
|
50
|
-
type: 'string'
|
|
51
|
-
},
|
|
52
|
-
'callback-address': {
|
|
53
|
-
appiumCliAliases: ['ca'],
|
|
54
|
-
description: 'Callback IP address (default: same as "address")',
|
|
55
|
-
title: 'callback-address config',
|
|
56
|
-
type: 'string'
|
|
57
|
-
},
|
|
58
|
-
'callback-port': {
|
|
59
|
-
appiumCliAliases: ['cp'],
|
|
60
|
-
default: 4723,
|
|
61
|
-
description: 'Callback port (default: same as "port")',
|
|
62
|
-
maximum: 65535,
|
|
63
|
-
minimum: 1,
|
|
64
|
-
title: 'callback-port config',
|
|
65
|
-
type: 'integer'
|
|
66
|
-
},
|
|
67
|
-
'debug-log-spacing': {
|
|
68
|
-
default: false,
|
|
69
|
-
description: 'Add exaggerated spacing in logs to help with visual inspection',
|
|
70
|
-
title: 'debug-log-spacing config',
|
|
71
|
-
type: 'boolean'
|
|
72
|
-
},
|
|
73
|
-
'default-capabilities': {
|
|
74
|
-
$comment: 'TODO',
|
|
75
|
-
appiumCliAliases: ['dc'],
|
|
76
|
-
description: 'Set the default desired capabilities, which will be set on each session unless overridden by received capabilities. If a string, a path to a JSON file containing the capabilities, or raw JSON.',
|
|
77
|
-
title: 'default-capabilities config',
|
|
78
|
-
type: 'object'
|
|
79
|
-
},
|
|
80
|
-
'deny-insecure': {
|
|
81
|
-
$comment: 'Allowed values are defined by drivers',
|
|
82
|
-
appiumCliTransformer: 'csv',
|
|
83
|
-
default: [],
|
|
84
|
-
description: 'Set which insecure features are not allowed to run in this server\'s sessions. Features are defined on a driver level; see documentation for more details. Features listed here will not be enabled even if also listed in "allow-insecure", and even if "relaxed-security" is enabled. If string, a path to a text file containing policy or a comma-delimited list.',
|
|
85
|
-
items: {
|
|
86
|
-
type: 'string'
|
|
87
|
-
},
|
|
88
|
-
title: 'deny-insecure config',
|
|
89
|
-
type: 'array',
|
|
90
|
-
uniqueItems: true
|
|
91
|
-
},
|
|
92
|
-
driver: {
|
|
93
|
-
description: 'Driver-specific configuration. Keys should correspond to driver package names',
|
|
94
|
-
properties: {},
|
|
95
|
-
title: 'driver config',
|
|
96
|
-
type: 'object'
|
|
97
|
-
},
|
|
98
|
-
'keep-alive-timeout': {
|
|
99
|
-
appiumCliAliases: ['ka'],
|
|
100
|
-
default: 600,
|
|
101
|
-
description: 'Number of seconds the Appium server should apply as both the keep-alive timeout and the connection timeout for all requests. A value of 0 disables the timeout.',
|
|
102
|
-
minimum: 0,
|
|
103
|
-
title: 'keep-alive-timeout config',
|
|
104
|
-
type: 'integer'
|
|
105
|
-
},
|
|
106
|
-
'local-timezone': {
|
|
107
|
-
default: false,
|
|
108
|
-
description: 'Use local timezone for timestamps',
|
|
109
|
-
title: 'local-timezone config',
|
|
110
|
-
type: 'boolean'
|
|
111
|
-
},
|
|
112
|
-
log: {
|
|
113
|
-
appiumCliAliases: ['g'],
|
|
114
|
-
appiumCliDest: 'logFile',
|
|
115
|
-
description: 'Also send log output to this file',
|
|
116
|
-
title: 'log config',
|
|
117
|
-
type: 'string'
|
|
118
|
-
},
|
|
119
|
-
'log-filters': {
|
|
120
|
-
$comment: 'TODO',
|
|
121
|
-
description: 'One or more log filtering rules',
|
|
122
|
-
items: {
|
|
123
|
-
type: 'string'
|
|
124
|
-
},
|
|
125
|
-
title: 'log-filters config',
|
|
126
|
-
type: 'array'
|
|
127
|
-
},
|
|
128
|
-
'log-level': {
|
|
129
|
-
appiumCliDest: 'loglevel',
|
|
130
|
-
default: 'debug',
|
|
131
|
-
description: 'Log level (console[:file])',
|
|
132
|
-
enum: ['info', 'info:debug', 'info:info', 'info:warn', 'info:error', 'warn', 'warn:debug', 'warn:info', 'warn:warn', 'warn:error', 'error', 'error:debug', 'error:info', 'error:warn', 'error:error', 'debug', 'debug:debug', 'debug:info', 'debug:warn', 'debug:error'],
|
|
133
|
-
title: 'log-level config',
|
|
134
|
-
type: 'string'
|
|
135
|
-
},
|
|
136
|
-
'log-no-colors': {
|
|
137
|
-
default: false,
|
|
138
|
-
description: 'Do not use color in console output',
|
|
139
|
-
title: 'log-no-colors config',
|
|
140
|
-
type: 'boolean'
|
|
141
|
-
},
|
|
142
|
-
'log-timestamp': {
|
|
143
|
-
default: false,
|
|
144
|
-
description: 'Show timestamps in console output',
|
|
145
|
-
title: 'log-timestamp config',
|
|
146
|
-
type: 'boolean'
|
|
147
|
-
},
|
|
148
|
-
'long-stacktrace': {
|
|
149
|
-
default: false,
|
|
150
|
-
description: 'Add long stack traces to log entries. Recommended for debugging only.',
|
|
151
|
-
title: 'long-stacktrace config',
|
|
152
|
-
type: 'boolean'
|
|
153
|
-
},
|
|
154
|
-
'no-perms-check': {
|
|
155
|
-
default: false,
|
|
156
|
-
description: 'Do not check that needed files are readable and/or writable',
|
|
157
|
-
title: 'no-perms-check config',
|
|
158
|
-
type: 'boolean'
|
|
159
|
-
},
|
|
160
|
-
nodeconfig: {
|
|
161
|
-
$comment: 'Selenium Grid 3 is unmaintained and Selenium Grid 4 no longer supports this file.',
|
|
162
|
-
description: 'Path to configuration JSON file to register Appium as a node with Selenium Grid 3; otherwise the configuration itself',
|
|
163
|
-
title: 'nodeconfig config',
|
|
164
|
-
type: 'object'
|
|
165
|
-
},
|
|
166
|
-
plugin: {
|
|
167
|
-
description: 'Plugin-specific configuration. Keys should correspond to plugin package names',
|
|
168
|
-
properties: {},
|
|
169
|
-
title: 'plugin config',
|
|
170
|
-
type: 'object'
|
|
171
|
-
},
|
|
172
|
-
port: {
|
|
173
|
-
appiumCliAliases: ['p'],
|
|
174
|
-
default: 4723,
|
|
175
|
-
description: 'Port to listen on',
|
|
176
|
-
maximum: 65535,
|
|
177
|
-
minimum: 1,
|
|
178
|
-
title: 'port config',
|
|
179
|
-
type: 'integer'
|
|
180
|
-
},
|
|
181
|
-
'relaxed-security': {
|
|
182
|
-
default: false,
|
|
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
|
-
title: 'relaxed-security config',
|
|
185
|
-
type: 'boolean',
|
|
186
|
-
appiumCliDest: 'relaxedSecurityEnabled'
|
|
187
|
-
},
|
|
188
|
-
'session-override': {
|
|
189
|
-
default: false,
|
|
190
|
-
description: 'Enables session override (clobbering)',
|
|
191
|
-
title: 'session-override config',
|
|
192
|
-
type: 'boolean'
|
|
193
|
-
},
|
|
194
|
-
'strict-caps': {
|
|
195
|
-
default: false,
|
|
196
|
-
description: 'Cause sessions to fail if desired caps are sent in that Appium does not recognize as valid for the selected device',
|
|
197
|
-
title: 'strict-caps config',
|
|
198
|
-
type: 'boolean'
|
|
199
|
-
},
|
|
200
|
-
tmp: {
|
|
201
|
-
appiumCliDest: 'tmpDir',
|
|
202
|
-
description: 'Absolute path to directory Appium can use to manage temp files. Defaults to C:\\Windows\\Temp on Windows and /tmp otherwise.',
|
|
203
|
-
title: 'tmp config',
|
|
204
|
-
type: 'string'
|
|
205
|
-
},
|
|
206
|
-
'trace-dir': {
|
|
207
|
-
description: 'Absolute path to directory Appium can use to save iOS instrument traces; defaults to <tmp>/appium-instruments',
|
|
208
|
-
title: 'trace-dir config',
|
|
209
|
-
type: 'string'
|
|
210
|
-
},
|
|
211
|
-
'use-drivers': {
|
|
212
|
-
appiumCliDescription: 'A list of drivers to activate. Can be a comma-delimited string or path to CSV file. By default, all installed drivers will be activated.',
|
|
213
|
-
default: [],
|
|
214
|
-
description: 'A list of drivers to activate. By default, all installed drivers will be activated.',
|
|
215
|
-
items: {
|
|
216
|
-
type: 'string'
|
|
217
|
-
},
|
|
218
|
-
title: 'use-drivers config',
|
|
219
|
-
type: 'array',
|
|
220
|
-
uniqueItems: true
|
|
221
|
-
},
|
|
222
|
-
'use-plugins': {
|
|
223
|
-
appiumCliDescription: 'A list of plugins to activate. Can be a comma-delimited string, path to CSV file, or the string "all" to use all installed plugins.',
|
|
224
|
-
default: [],
|
|
225
|
-
description: 'A list of plugins to activate. To activate all plugins, the value should be an array with a single item "all".',
|
|
226
|
-
items: {
|
|
227
|
-
type: 'string'
|
|
228
|
-
},
|
|
229
|
-
title: 'use-plugins config',
|
|
230
|
-
type: 'array',
|
|
231
|
-
uniqueItems: true
|
|
232
|
-
},
|
|
233
|
-
webhook: {
|
|
234
|
-
$comment: 'This should probably use a uri-template format to restrict the protocol to http/https',
|
|
235
|
-
appiumCliAliases: ['G'],
|
|
236
|
-
description: 'Also send log output to this http listener',
|
|
237
|
-
format: 'uri',
|
|
238
|
-
title: 'webhook config',
|
|
239
|
-
type: 'string'
|
|
240
|
-
}
|
|
241
|
-
},
|
|
242
|
-
title: 'server config',
|
|
243
|
-
type: 'object'
|
|
244
|
-
}
|
|
245
|
-
},
|
|
246
|
-
title: 'Appium Configuration',
|
|
247
|
-
type: 'object'
|
|
248
|
-
};
|
|
249
|
-
var _default = schema;
|
|
250
|
-
exports.default = _default;require('source-map-support').install();
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zY2hlbWEvYXBwaXVtLWNvbmZpZy1zY2hlbWEuanMiXSwibmFtZXMiOlsic2NoZW1hIiwiJHNjaGVtYSIsImFkZGl0aW9uYWxQcm9wZXJ0aWVzIiwiZGVzY3JpcHRpb24iLCJwcm9wZXJ0aWVzIiwic2VydmVyIiwiYWRkcmVzcyIsIiRjb21tZW50IiwiYXBwaXVtQ2xpQWxpYXNlcyIsImRlZmF1bHQiLCJmb3JtYXQiLCJ0aXRsZSIsInR5cGUiLCJhcHBpdW1DbGlUcmFuc2Zvcm1lciIsIml0ZW1zIiwidW5pcXVlSXRlbXMiLCJtYXhpbXVtIiwibWluaW11bSIsImRyaXZlciIsImxvZyIsImFwcGl1bUNsaURlc3QiLCJlbnVtIiwibm9kZWNvbmZpZyIsInBsdWdpbiIsInBvcnQiLCJ0bXAiLCJhcHBpdW1DbGlEZXNjcmlwdGlvbiIsIndlYmhvb2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUVBLE1BQU1BLE1BQU0sR0FBeUI7QUFDbkNDLEVBQUFBLE9BQU8sRUFBRSx3Q0FEMEI7QUFFbkNDLEVBQUFBLG9CQUFvQixFQUFFLEtBRmE7QUFHbkNDLEVBQUFBLFdBQVcsRUFBRSx5Q0FIc0I7QUFJbkNDLEVBQUFBLFVBQVUsRUFBRTtBQUNWQyxJQUFBQSxNQUFNLEVBQUU7QUFDTkgsTUFBQUEsb0JBQW9CLEVBQUUsS0FEaEI7QUFFTkMsTUFBQUEsV0FBVyxFQUFFLCtDQUZQO0FBR05DLE1BQUFBLFVBQVUsRUFBRTtBQUNWRSxRQUFBQSxPQUFPLEVBQUU7QUFDUEMsVUFBQUEsUUFBUSxFQUNOLDREQUZLO0FBR1BDLFVBQUFBLGdCQUFnQixFQUFFLENBQUMsR0FBRCxDQUhYO0FBSVBDLFVBQUFBLE9BQU8sRUFBRSxTQUpGO0FBS1BOLFVBQUFBLFdBQVcsRUFBRSx5QkFMTjtBQU1QTyxVQUFBQSxNQUFNLEVBQUUsVUFORDtBQU9QQyxVQUFBQSxLQUFLLEVBQUUsZ0JBUEE7QUFRUEMsVUFBQUEsSUFBSSxFQUFFO0FBUkMsU0FEQztBQVdWLHNCQUFjO0FBQ1pU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QUFBQSxLQUFLLEVBQUU7QUFDTEYsWUFBQUEsSUFBSSxFQUFFO0FBREQsV0FOTTtBQVNiRCxVQUFBQSxLQUFLLEVBQUUsb0JBVE07QUFVYkMsVUFBQUEsSUFBSSxFQUFFLE9BVk87QUFXYkcsVUFBQUEsV0FBVyxFQUFFO0FBWEEsU0F4T0w7QUFxUFYsdUJBQWU7QUFDYlcsVUFBQUEsb0JBQW9CLEVBQ2xCLHFJQUZXO0FBR2JqQixVQUFBQSxPQUFPLEVBQUUsRUFISTtBQUliTixVQUFBQSxXQUFXLEVBQ1QsZ0hBTFc7QUFNYlcsVUFBQUEsS0FBSyxFQUFFO0FBQ0xGLFlBQUFBLElBQUksRUFBRTtBQURELFdBTk07QUFTYkQsVUFBQUEsS0FBSyxFQUFFLG9CQVRNO0FBVWJDLFVBQUFBLElBQUksRUFBRSxPQVZPO0FBV2JHLFVBQUFBLFdBQVcsRUFBRTtBQVhBLFNBclBMO0FBa1FWWSxRQUFBQSxPQUFPLEVBQUU7QUFDUHBCLFVBQUFBLFFBQVEsRUFDTix1RkFGSztBQUdQQyxVQUFBQSxnQkFBZ0IsRUFBRSxDQUFDLEdBQUQsQ0FIWDtBQUlQTCxVQUFBQSxXQUFXLEVBQUUsNENBSk47QUFLUE8sVUFBQUEsTUFBTSxFQUFFLEtBTEQ7QUFNUEMsVUFBQUEsS0FBSyxFQUFFLGdCQU5BO0FBT1BDLFVBQUFBLElBQUksRUFBRTtBQVBDO0FBbFFDLE9BSE47QUErUU5ELE1BQUFBLEtBQUssRUFBRSxlQS9RRDtBQWdSTkMsTUFBQUEsSUFBSSxFQUFFO0FBaFJBO0FBREUsR0FKdUI7QUF3Um5DRCxFQUFBQSxLQUFLLEVBQUUsc0JBeFI0QjtBQXlSbkNDLEVBQUFBLElBQUksRUFBRTtBQXpSNkIsQ0FBckM7ZUE0UmVaLE0iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuY29uc3Qgc2NoZW1hID0gLyoqIEB0eXBlIHtjb25zdH0gKi8gKHtcbiAgJHNjaGVtYTogJ2h0dHA6Ly9qc29uLXNjaGVtYS5vcmcvZHJhZnQtMDcvc2NoZW1hJyxcbiAgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlLFxuICBkZXNjcmlwdGlvbjogJ0Egc2NoZW1hIGZvciBBcHBpdW0gY29uZmlndXJhdGlvbiBmaWxlcycsXG4gIHByb3BlcnRpZXM6IHtcbiAgICBzZXJ2ZXI6IHtcbiAgICAgIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnQ29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgQXBwaXVtIGFzIGEgc2VydmVyJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYWRkcmVzczoge1xuICAgICAgICAgICRjb21tZW50OlxuICAgICAgICAgICAgJ0kgdGhpbmsgaG9zdG5hbWUgY292ZXJzIGJvdGggRE5TIGFuZCBJUHY0Li4uY291bGQgYmUgd3JvbmcnLFxuICAgICAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsnYSddLFxuICAgICAgICAgIGRlZmF1bHQ6ICcwLjAuMC4wJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0lQIGFkZHJlc3MgdG8gbGlzdGVuIG9uJyxcbiAgICAgICAgICBmb3JtYXQ6ICdob3N0bmFtZScsXG4gICAgICAgICAgdGl0bGU6ICdhZGRyZXNzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICdhbGxvdy1jb3JzJzoge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ1doZXRoZXIgdGhlIEFwcGl1bSBzZXJ2ZXIgc2hvdWxkIGFsbG93IHdlYiBicm93c2VyIGNvbm5lY3Rpb25zIGZyb20gYW55IGhvc3QnLFxuICAgICAgICAgIHRpdGxlOiAnYWxsb3ctY29ycyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAgJ2FsbG93LWluc2VjdXJlJzoge1xuICAgICAgICAgIGFwcGl1bUNsaVRyYW5zZm9ybWVyOiAnY3N2JyxcbiAgICAgICAgICBkZWZhdWx0OiBbXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdTZXQgd2hpY2ggaW5zZWN1cmUgZmVhdHVyZXMgYXJlIGFsbG93ZWQgdG8gcnVuIGluIHRoaXMgc2VydmVyXFwncyBzZXNzaW9ucy4gRmVhdHVyZXMgYXJlIGRlZmluZWQgb24gYSBkcml2ZXIgbGV2ZWw7IHNlZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuIE5vdGUgdGhhdCBmZWF0dXJlcyBkZWZpbmVkIHZpYSBcImRlbnktaW5zZWN1cmVcIiB3aWxsIGJlIGRpc2FibGVkLCBldmVuIGlmIGFsc28gbGlzdGVkIGhlcmUuIElmIHN0cmluZywgYSBwYXRoIHRvIGEgdGV4dCBmaWxlIGNvbnRhaW5pbmcgcG9saWN5IG9yIGEgY29tbWEtZGVsaW1pdGVkIGxpc3QuJyxcbiAgICAgICAgICBpdGVtczoge1xuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0aXRsZTogJ2FsbG93LWluc2VjdXJlIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgJ2Jhc2UtcGF0aCc6IHtcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ3BhJ10sXG4gICAgICAgICAgZGVmYXVsdDogJycsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQmFzZSBwYXRoIHRvIHVzZSBhcyB0aGUgcHJlZml4IGZvciBhbGwgd2ViZHJpdmVyIHJvdXRlcyBydW5uaW5nIG9uIHRoZSBzZXJ2ZXInLFxuICAgICAgICAgIHRpdGxlOiAnYmFzZS1wYXRoIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICdjYWxsYmFjay1hZGRyZXNzJzoge1xuICAgICAgICAgIGFwcGl1bUNsaUFsaWFzZXM6IFsnY2EnXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0NhbGxiYWNrIElQIGFkZHJlc3MgKGRlZmF1bHQ6IHNhbWUgYXMgXCJhZGRyZXNzXCIpJyxcbiAgICAgICAgICB0aXRsZTogJ2NhbGxiYWNrLWFkZHJlc3MgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2NhbGxiYWNrLXBvcnQnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydjcCddLFxuICAgICAgICAgIGRlZmF1bHQ6IDQ3MjMsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdDYWxsYmFjayBwb3J0IChkZWZhdWx0OiBzYW1lIGFzIFwicG9ydFwiKScsXG4gICAgICAgICAgbWF4aW11bTogNjU1MzUsXG4gICAgICAgICAgbWluaW11bTogMSxcbiAgICAgICAgICB0aXRsZTogJ2NhbGxiYWNrLXBvcnQgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgIH0sXG4gICAgICAgICdkZWJ1Zy1sb2ctc3BhY2luZyc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBZGQgZXhhZ2dlcmF0ZWQgc3BhY2luZyBpbiBsb2dzIHRvIGhlbHAgd2l0aCB2aXN1YWwgaW5zcGVjdGlvbicsXG4gICAgICAgICAgdGl0bGU6ICdkZWJ1Zy1sb2ctc3BhY2luZyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2RlZmF1bHQtY2FwYWJpbGl0aWVzJzoge1xuICAgICAgICAgICRjb21tZW50OiAnVE9ETycsXG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydkYyddLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ1NldCB0aGUgZGVmYXVsdCBkZXNpcmVkIGNhcGFiaWxpdGllcywgd2hpY2ggd2lsbCBiZSBzZXQgb24gZWFjaCBzZXNzaW9uIHVubGVzcyBvdmVycmlkZGVuIGJ5IHJlY2VpdmVkIGNhcGFiaWxpdGllcy4gSWYgYSBzdHJpbmcsIGEgcGF0aCB0byBhIEpTT04gZmlsZSBjb250YWluaW5nIHRoZSBjYXBhYmlsaXRpZXMsIG9yIHJhdyBKU09OLicsXG4gICAgICAgICAgdGl0bGU6ICdkZWZhdWx0LWNhcGFiaWxpdGllcyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdvYmplY3QnLFxuICAgICAgICB9LFxuICAgICAgICAnZGVueS1pbnNlY3VyZSc6IHtcbiAgICAgICAgICAkY29tbWVudDogJ0FsbG93ZWQgdmFsdWVzIGFyZSBkZWZpbmVkIGJ5IGRyaXZlcnMnLFxuICAgICAgICAgIGFwcGl1bUNsaVRyYW5zZm9ybWVyOiAnY3N2JyxcbiAgICAgICAgICBkZWZhdWx0OiBbXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdTZXQgd2hpY2ggaW5zZWN1cmUgZmVhdHVyZXMgYXJlIG5vdCBhbGxvd2VkIHRvIHJ1biBpbiB0aGlzIHNlcnZlclxcJ3Mgc2Vzc2lvbnMuIEZlYXR1cmVzIGFyZSBkZWZpbmVkIG9uIGEgZHJpdmVyIGxldmVsOyBzZWUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLiBGZWF0dXJlcyBsaXN0ZWQgaGVyZSB3aWxsIG5vdCBiZSBlbmFibGVkIGV2ZW4gaWYgYWxzbyBsaXN0ZWQgaW4gXCJhbGxvdy1pbnNlY3VyZVwiLCBhbmQgZXZlbiBpZiBcInJlbGF4ZWQtc2VjdXJpdHlcIiBpcyBlbmFibGVkLiBJZiBzdHJpbmcsIGEgcGF0aCB0byBhIHRleHQgZmlsZSBjb250YWluaW5nIHBvbGljeSBvciBhIGNvbW1hLWRlbGltaXRlZCBsaXN0LicsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6ICdkZW55LWluc2VjdXJlIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2FycmF5JyxcbiAgICAgICAgICB1bmlxdWVJdGVtczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgZHJpdmVyOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnRHJpdmVyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEtleXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gZHJpdmVyIHBhY2thZ2UgbmFtZXMnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgIHRpdGxlOiAnZHJpdmVyIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIH0sXG4gICAgICAgICdrZWVwLWFsaXZlLXRpbWVvdXQnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydrYSddLFxuICAgICAgICAgIGRlZmF1bHQ6IDYwMCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdOdW1iZXIgb2Ygc2Vjb25kcyB0aGUgQXBwaXVtIHNlcnZlciBzaG91bGQgYXBwbHkgYXMgYm90aCB0aGUga2VlcC1hbGl2ZSB0aW1lb3V0IGFuZCB0aGUgY29ubmVjdGlvbiB0aW1lb3V0IGZvciBhbGwgcmVxdWVzdHMuIEEgdmFsdWUgb2YgMCBkaXNhYmxlcyB0aGUgdGltZW91dC4nLFxuICAgICAgICAgIG1pbmltdW06IDAsXG4gICAgICAgICAgdGl0bGU6ICdrZWVwLWFsaXZlLXRpbWVvdXQgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgIH0sXG4gICAgICAgICdsb2NhbC10aW1lem9uZSc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1VzZSBsb2NhbCB0aW1lem9uZSBmb3IgdGltZXN0YW1wcycsXG4gICAgICAgICAgdGl0bGU6ICdsb2NhbC10aW1lem9uZSBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgbG9nOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpQWxpYXNlczogWydnJ10sXG4gICAgICAgICAgYXBwaXVtQ2xpRGVzdDogJ2xvZ0ZpbGUnLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnQWxzbyBzZW5kIGxvZyBvdXRwdXQgdG8gdGhpcyBmaWxlJyxcbiAgICAgICAgICB0aXRsZTogJ2xvZyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICAnbG9nLWZpbHRlcnMnOiB7XG4gICAgICAgICAgJGNvbW1lbnQ6ICdUT0RPJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ09uZSBvciBtb3JlIGxvZyBmaWx0ZXJpbmcgcnVsZXMnLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpdGxlOiAnbG9nLWZpbHRlcnMgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICB9LFxuICAgICAgICAnbG9nLWxldmVsJzoge1xuICAgICAgICAgIGFwcGl1bUNsaURlc3Q6ICdsb2dsZXZlbCcsXG4gICAgICAgICAgZGVmYXVsdDogJ2RlYnVnJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0xvZyBsZXZlbCAoY29uc29sZVs6ZmlsZV0pJyxcbiAgICAgICAgICBlbnVtOiBbXG4gICAgICAgICAgICAnaW5mbycsXG4gICAgICAgICAgICAnaW5mbzpkZWJ1ZycsXG4gICAgICAgICAgICAnaW5mbzppbmZvJyxcbiAgICAgICAgICAgICdpbmZvOndhcm4nLFxuICAgICAgICAgICAgJ2luZm86ZXJyb3InLFxuICAgICAgICAgICAgJ3dhcm4nLFxuICAgICAgICAgICAgJ3dhcm46ZGVidWcnLFxuICAgICAgICAgICAgJ3dhcm46aW5mbycsXG4gICAgICAgICAgICAnd2Fybjp3YXJuJyxcbiAgICAgICAgICAgICd3YXJuOmVycm9yJyxcbiAgICAgICAgICAgICdlcnJvcicsXG4gICAgICAgICAgICAnZXJyb3I6ZGVidWcnLFxuICAgICAgICAgICAgJ2Vycm9yOmluZm8nLFxuICAgICAgICAgICAgJ2Vycm9yOndhcm4nLFxuICAgICAgICAgICAgJ2Vycm9yOmVycm9yJyxcbiAgICAgICAgICAgICdkZWJ1ZycsXG4gICAgICAgICAgICAnZGVidWc6ZGVidWcnLFxuICAgICAgICAgICAgJ2RlYnVnOmluZm8nLFxuICAgICAgICAgICAgJ2RlYnVnOndhcm4nLFxuICAgICAgICAgICAgJ2RlYnVnOmVycm9yJyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHRpdGxlOiAnbG9nLWxldmVsIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIH0sXG4gICAgICAgICdsb2ctbm8tY29sb3JzJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRG8gbm90IHVzZSBjb2xvciBpbiBjb25zb2xlIG91dHB1dCcsXG4gICAgICAgICAgdGl0bGU6ICdsb2ctbm8tY29sb3JzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICAnbG9nLXRpbWVzdGFtcCc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1Nob3cgdGltZXN0YW1wcyBpbiBjb25zb2xlIG91dHB1dCcsXG4gICAgICAgICAgdGl0bGU6ICdsb2ctdGltZXN0YW1wIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICAnbG9uZy1zdGFja3RyYWNlJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgJ0FkZCBsb25nIHN0YWNrIHRyYWNlcyB0byBsb2cgZW50cmllcy4gUmVjb21tZW5kZWQgZm9yIGRlYnVnZ2luZyBvbmx5LicsXG4gICAgICAgICAgdGl0bGU6ICdsb25nLXN0YWNrdHJhY2UgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgIH0sXG4gICAgICAgICduby1wZXJtcy1jaGVjayc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdEbyBub3QgY2hlY2sgdGhhdCBuZWVkZWQgZmlsZXMgYXJlIHJlYWRhYmxlIGFuZC9vciB3cml0YWJsZScsXG4gICAgICAgICAgdGl0bGU6ICduby1wZXJtcy1jaGVjayBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICAgICAgfSxcbiAgICAgICAgbm9kZWNvbmZpZzoge1xuICAgICAgICAgICRjb21tZW50OlxuICAgICAgICAgICAgJ1NlbGVuaXVtIEdyaWQgMyBpcyB1bm1haW50YWluZWQgYW5kIFNlbGVuaXVtIEdyaWQgNCBubyBsb25nZXIgc3VwcG9ydHMgdGhpcyBmaWxlLicsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnUGF0aCB0byBjb25maWd1cmF0aW9uIEpTT04gZmlsZSB0byByZWdpc3RlciBBcHBpdW0gYXMgYSBub2RlIHdpdGggU2VsZW5pdW0gR3JpZCAzOyBvdGhlcndpc2UgdGhlIGNvbmZpZ3VyYXRpb24gaXRzZWxmJyxcbiAgICAgICAgICB0aXRsZTogJ25vZGVjb25maWcgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnb2JqZWN0JyxcbiAgICAgICAgfSxcbiAgICAgICAgcGx1Z2luOiB7XG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnUGx1Z2luLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24uIEtleXMgc2hvdWxkIGNvcnJlc3BvbmQgdG8gcGx1Z2luIHBhY2thZ2UgbmFtZXMnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgIHRpdGxlOiAncGx1Z2luIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgICAgIH0sXG4gICAgICAgIHBvcnQ6IHtcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ3AnXSxcbiAgICAgICAgICBkZWZhdWx0OiA0NzIzLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnUG9ydCB0byBsaXN0ZW4gb24nLFxuICAgICAgICAgIG1heGltdW06IDY1NTM1LFxuICAgICAgICAgIG1pbmltdW06IDEsXG4gICAgICAgICAgdGl0bGU6ICdwb3J0IGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2ludGVnZXInLFxuICAgICAgICB9LFxuICAgICAgICAncmVsYXhlZC1zZWN1cml0eSc6IHtcbiAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdEaXNhYmxlIGFkZGl0aW9uYWwgc2VjdXJpdHkgY2hlY2tzLCBzbyBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugc29tZSBhZHZhbmNlZCBmZWF0dXJlcywgcHJvdmlkZWQgYnkgZHJpdmVycyBzdXBwb3J0aW5nIHRoaXMgb3B0aW9uLiBPbmx5IGVuYWJsZSBpdCBpZiBhbGwgdGhlIGNsaWVudHMgYXJlIGluIHRoZSB0cnVzdGVkIG5ldHdvcmsgYW5kIGl0XFwncyBub3QgdGhlIGNhc2UgaWYgYSBjbGllbnQgY291bGQgcG90ZW50aWFsbHkgYnJlYWsgb3V0IG9mIHRoZSBzZXNzaW9uIHNhbmRib3guIFNwZWNpZmljIGZlYXR1cmVzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHVzaW5nIFwiZGVueS1pbnNlY3VyZVwiJyxcbiAgICAgICAgICB0aXRsZTogJ3JlbGF4ZWQtc2VjdXJpdHkgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgICAgICAgYXBwaXVtQ2xpRGVzdDogJ3JlbGF4ZWRTZWN1cml0eUVuYWJsZWQnXG4gICAgICAgIH0sXG4gICAgICAgICdzZXNzaW9uLW92ZXJyaWRlJzoge1xuICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRW5hYmxlcyBzZXNzaW9uIG92ZXJyaWRlIChjbG9iYmVyaW5nKScsXG4gICAgICAgICAgdGl0bGU6ICdzZXNzaW9uLW92ZXJyaWRlIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICAnc3RyaWN0LWNhcHMnOiB7XG4gICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQ2F1c2Ugc2Vzc2lvbnMgdG8gZmFpbCBpZiBkZXNpcmVkIGNhcHMgYXJlIHNlbnQgaW4gdGhhdCBBcHBpdW0gZG9lcyBub3QgcmVjb2duaXplIGFzIHZhbGlkIGZvciB0aGUgc2VsZWN0ZWQgZGV2aWNlJyxcbiAgICAgICAgICB0aXRsZTogJ3N0cmljdC1jYXBzIGNvbmZpZycsXG4gICAgICAgICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgICAgICB9LFxuICAgICAgICB0bXA6IHtcbiAgICAgICAgICBhcHBpdW1DbGlEZXN0OiAndG1wRGlyJyxcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBYnNvbHV0ZSBwYXRoIHRvIGRpcmVjdG9yeSBBcHBpdW0gY2FuIHVzZSB0byBtYW5hZ2UgdGVtcCBmaWxlcy4gRGVmYXVsdHMgdG8gQzpcXFxcV2luZG93c1xcXFxUZW1wIG9uIFdpbmRvd3MgYW5kIC90bXAgb3RoZXJ3aXNlLicsXG4gICAgICAgICAgdGl0bGU6ICd0bXAgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ3RyYWNlLWRpcic6IHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICdBYnNvbHV0ZSBwYXRoIHRvIGRpcmVjdG9yeSBBcHBpdW0gY2FuIHVzZSB0byBzYXZlIGlPUyBpbnN0cnVtZW50IHRyYWNlczsgZGVmYXVsdHMgdG8gPHRtcD4vYXBwaXVtLWluc3RydW1lbnRzJyxcbiAgICAgICAgICB0aXRsZTogJ3RyYWNlLWRpciBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICB9LFxuICAgICAgICAndXNlLWRyaXZlcnMnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpRGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIGRyaXZlcnMgdG8gYWN0aXZhdGUuIENhbiBiZSBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcgb3IgcGF0aCB0byBDU1YgZmlsZS4gQnkgZGVmYXVsdCwgYWxsIGluc3RhbGxlZCBkcml2ZXJzIHdpbGwgYmUgYWN0aXZhdGVkLicsXG4gICAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIGRyaXZlcnMgdG8gYWN0aXZhdGUuIEJ5IGRlZmF1bHQsIGFsbCBpbnN0YWxsZWQgZHJpdmVycyB3aWxsIGJlIGFjdGl2YXRlZC4nLFxuICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpdGxlOiAndXNlLWRyaXZlcnMgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnYXJyYXknLFxuICAgICAgICAgIHVuaXF1ZUl0ZW1zOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICAndXNlLXBsdWdpbnMnOiB7XG4gICAgICAgICAgYXBwaXVtQ2xpRGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUuIENhbiBiZSBhIGNvbW1hLWRlbGltaXRlZCBzdHJpbmcsIHBhdGggdG8gQ1NWIGZpbGUsIG9yIHRoZSBzdHJpbmcgXCJhbGxcIiB0byB1c2UgYWxsIGluc3RhbGxlZCBwbHVnaW5zLicsXG4gICAgICAgICAgZGVmYXVsdDogW10sXG4gICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAnQSBsaXN0IG9mIHBsdWdpbnMgdG8gYWN0aXZhdGUuIFRvIGFjdGl2YXRlIGFsbCBwbHVnaW5zLCB0aGUgdmFsdWUgc2hvdWxkIGJlIGFuIGFycmF5IHdpdGggYSBzaW5nbGUgaXRlbSBcImFsbFwiLicsXG4gICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGl0bGU6ICd1c2UtcGx1Z2lucyBjb25maWcnLFxuICAgICAgICAgIHR5cGU6ICdhcnJheScsXG4gICAgICAgICAgdW5pcXVlSXRlbXM6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIHdlYmhvb2s6IHtcbiAgICAgICAgICAkY29tbWVudDpcbiAgICAgICAgICAgICdUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgYSB1cmktdGVtcGxhdGUgZm9ybWF0IHRvIHJlc3RyaWN0IHRoZSBwcm90b2NvbCB0byBodHRwL2h0dHBzJyxcbiAgICAgICAgICBhcHBpdW1DbGlBbGlhc2VzOiBbJ0cnXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ0Fsc28gc2VuZCBsb2cgb3V0cHV0IHRvIHRoaXMgaHR0cCBsaXN0ZW5lcicsXG4gICAgICAgICAgZm9ybWF0OiAndXJpJyxcbiAgICAgICAgICB0aXRsZTogJ3dlYmhvb2sgY29uZmlnJyxcbiAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0aXRsZTogJ3NlcnZlciBjb25maWcnLFxuICAgICAgdHlwZTogJ29iamVjdCcsXG4gICAgfSxcbiAgfSxcbiAgdGl0bGU6ICdBcHBpdW0gQ29uZmlndXJhdGlvbicsXG4gIHR5cGU6ICdvYmplY3QnLFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IHNjaGVtYTtcbiJdLCJmaWxlIjoibGliL3NjaGVtYS9hcHBpdW0tY29uZmlnLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
package/build/postinstall.js
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
|
-
|
|
4
|
-
require("source-map-support/register");
|
|
5
|
-
|
|
6
|
-
async function main() {
|
|
7
|
-
const driverEnv = process.env.npm_config_drivers;
|
|
8
|
-
const pluginEnv = process.env.npm_config_plugins;
|
|
9
|
-
|
|
10
|
-
if (!driverEnv && !pluginEnv) {
|
|
11
|
-
console.log('Not auto-installing any drivers or plugins');
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
let extension;
|
|
16
|
-
|
|
17
|
-
try {
|
|
18
|
-
extension = require('./build/lib/cli/extension');
|
|
19
|
-
} catch (e) {
|
|
20
|
-
throw new Error(`Could not load extension CLI file; has the project been transpiled? ` + `(${e.message})`);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const {
|
|
24
|
-
DEFAULT_APPIUM_HOME,
|
|
25
|
-
DRIVER_TYPE,
|
|
26
|
-
PLUGIN_TYPE
|
|
27
|
-
} = require('./build/lib/extension-config');
|
|
28
|
-
|
|
29
|
-
const {
|
|
30
|
-
runExtensionCommand
|
|
31
|
-
} = extension;
|
|
32
|
-
const appiumHome = process.env.npm_config_appium_home || DEFAULT_APPIUM_HOME;
|
|
33
|
-
const specs = [[DRIVER_TYPE, driverEnv], [PLUGIN_TYPE, pluginEnv]];
|
|
34
|
-
|
|
35
|
-
for (const [type, extEnv] of specs) {
|
|
36
|
-
if (extEnv) {
|
|
37
|
-
for (const ext of extEnv.split(',')) {
|
|
38
|
-
try {
|
|
39
|
-
await checkAndInstallExtension({
|
|
40
|
-
runExtensionCommand,
|
|
41
|
-
appiumHome,
|
|
42
|
-
type,
|
|
43
|
-
ext
|
|
44
|
-
});
|
|
45
|
-
} catch (e) {
|
|
46
|
-
console.log(`There was an error checking and installing ${type} ${ext}: ${e.message}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async function checkAndInstallExtension({
|
|
54
|
-
runExtensionCommand,
|
|
55
|
-
appiumHome,
|
|
56
|
-
type,
|
|
57
|
-
ext
|
|
58
|
-
}) {
|
|
59
|
-
const extList = await runExtensionCommand({
|
|
60
|
-
appiumHome,
|
|
61
|
-
[`${type}Command`]: 'list',
|
|
62
|
-
showInstalled: true,
|
|
63
|
-
suppressOutput: true
|
|
64
|
-
}, type);
|
|
65
|
-
|
|
66
|
-
if (extList[ext]) {
|
|
67
|
-
console.log(`The ${type} ${ext} was already installed, skipping...`);
|
|
68
|
-
return;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
console.log(`Installing the ${type} ${ext}...`);
|
|
72
|
-
await runExtensionCommand({
|
|
73
|
-
appiumHome,
|
|
74
|
-
[`${type}Command`]: 'install',
|
|
75
|
-
[type]: ext,
|
|
76
|
-
suppressOutput: true
|
|
77
|
-
}, type);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (require.main === module) {
|
|
81
|
-
main().then(() => {
|
|
82
|
-
process.exit(0);
|
|
83
|
-
}).catch(e => {
|
|
84
|
-
console.error(e);
|
|
85
|
-
process.exit(1);
|
|
86
|
-
});
|
|
87
|
-
}require('source-map-support').install();
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBvc3RpbnN0YWxsLmpzIl0sIm5hbWVzIjpbIm1haW4iLCJkcml2ZXJFbnYiLCJwcm9jZXNzIiwiZW52IiwibnBtX2NvbmZpZ19kcml2ZXJzIiwicGx1Z2luRW52IiwibnBtX2NvbmZpZ19wbHVnaW5zIiwiY29uc29sZSIsImxvZyIsImV4dGVuc2lvbiIsInJlcXVpcmUiLCJlIiwiRXJyb3IiLCJtZXNzYWdlIiwiREVGQVVMVF9BUFBJVU1fSE9NRSIsIkRSSVZFUl9UWVBFIiwiUExVR0lOX1RZUEUiLCJydW5FeHRlbnNpb25Db21tYW5kIiwiYXBwaXVtSG9tZSIsIm5wbV9jb25maWdfYXBwaXVtX2hvbWUiLCJzcGVjcyIsInR5cGUiLCJleHRFbnYiLCJleHQiLCJzcGxpdCIsImNoZWNrQW5kSW5zdGFsbEV4dGVuc2lvbiIsImV4dExpc3QiLCJzaG93SW5zdGFsbGVkIiwic3VwcHJlc3NPdXRwdXQiLCJtb2R1bGUiLCJ0aGVuIiwiZXhpdCIsImNhdGNoIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUdBLGVBQWVBLElBQWYsR0FBdUI7QUFDckIsUUFBTUMsU0FBUyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsa0JBQTlCO0FBQ0EsUUFBTUMsU0FBUyxHQUFHSCxPQUFPLENBQUNDLEdBQVIsQ0FBWUcsa0JBQTlCOztBQUVBLE1BQUksQ0FBQ0wsU0FBRCxJQUFjLENBQUNJLFNBQW5CLEVBQThCO0FBQzVCRSxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSw0Q0FBWjtBQUNBO0FBQ0Q7O0FBRUQsTUFBSUMsU0FBSjs7QUFDQSxNQUFJO0FBQ0ZBLElBQUFBLFNBQVMsR0FBR0MsT0FBTyxDQUFDLDJCQUFELENBQW5CO0FBQ0QsR0FGRCxDQUVFLE9BQU9DLENBQVAsRUFBVTtBQUNWLFVBQU0sSUFBSUMsS0FBSixDQUFXLHNFQUFELEdBQ0MsSUFBR0QsQ0FBQyxDQUFDRSxPQUFRLEdBRHhCLENBQU47QUFFRDs7QUFFRCxRQUFNO0FBQUNDLElBQUFBLG1CQUFEO0FBQXNCQyxJQUFBQSxXQUF0QjtBQUFtQ0MsSUFBQUE7QUFBbkMsTUFBa0ROLE9BQU8sQ0FBQyw4QkFBRCxDQUEvRDs7QUFDQSxRQUFNO0FBQUNPLElBQUFBO0FBQUQsTUFBd0JSLFNBQTlCO0FBQ0EsUUFBTVMsVUFBVSxHQUFHaEIsT0FBTyxDQUFDQyxHQUFSLENBQVlnQixzQkFBWixJQUFzQ0wsbUJBQXpEO0FBQ0EsUUFBTU0sS0FBSyxHQUFHLENBQUMsQ0FBQ0wsV0FBRCxFQUFjZCxTQUFkLENBQUQsRUFBMkIsQ0FBQ2UsV0FBRCxFQUFjWCxTQUFkLENBQTNCLENBQWQ7O0FBRUEsT0FBSyxNQUFNLENBQUNnQixJQUFELEVBQU9DLE1BQVAsQ0FBWCxJQUE2QkYsS0FBN0IsRUFBb0M7QUFDbEMsUUFBSUUsTUFBSixFQUFZO0FBQ1YsV0FBSyxNQUFNQyxHQUFYLElBQWtCRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSxHQUFiLENBQWxCLEVBQXFDO0FBQ25DLFlBQUk7QUFDRixnQkFBTUMsd0JBQXdCLENBQUM7QUFBQ1IsWUFBQUEsbUJBQUQ7QUFBc0JDLFlBQUFBLFVBQXRCO0FBQWtDRyxZQUFBQSxJQUFsQztBQUF3Q0UsWUFBQUE7QUFBeEMsV0FBRCxDQUE5QjtBQUNELFNBRkQsQ0FFRSxPQUFPWixDQUFQLEVBQVU7QUFDVkosVUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQWEsOENBQTZDYSxJQUFLLElBQUdFLEdBQUksS0FBSVosQ0FBQyxDQUFDRSxPQUFRLEVBQXBGO0FBQ0Q7QUFDRjtBQUNGO0FBQ0Y7QUFDRjs7QUFFRCxlQUFlWSx3QkFBZixDQUF5QztBQUN2Q1IsRUFBQUEsbUJBRHVDO0FBRXZDQyxFQUFBQSxVQUZ1QztBQUd2Q0csRUFBQUEsSUFIdUM7QUFJdkNFLEVBQUFBO0FBSnVDLENBQXpDLEVBS0c7QUFDRCxRQUFNRyxPQUFPLEdBQUcsTUFBTVQsbUJBQW1CLENBQUM7QUFDeENDLElBQUFBLFVBRHdDO0FBRXhDLEtBQUUsR0FBRUcsSUFBSyxTQUFULEdBQW9CLE1BRm9CO0FBR3hDTSxJQUFBQSxhQUFhLEVBQUUsSUFIeUI7QUFJeENDLElBQUFBLGNBQWMsRUFBRTtBQUp3QixHQUFELEVBS3RDUCxJQUxzQyxDQUF6Qzs7QUFNQSxNQUFJSyxPQUFPLENBQUNILEdBQUQsQ0FBWCxFQUFrQjtBQUNoQmhCLElBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFhLE9BQU1hLElBQUssSUFBR0UsR0FBSSxxQ0FBL0I7QUFDQTtBQUNEOztBQUNEaEIsRUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQWEsa0JBQWlCYSxJQUFLLElBQUdFLEdBQUksS0FBMUM7QUFDQSxRQUFNTixtQkFBbUIsQ0FBQztBQUN4QkMsSUFBQUEsVUFEd0I7QUFFeEIsS0FBRSxHQUFFRyxJQUFLLFNBQVQsR0FBb0IsU0FGSTtBQUd4QixLQUFDQSxJQUFELEdBQVFFLEdBSGdCO0FBSXhCSyxJQUFBQSxjQUFjLEVBQUU7QUFKUSxHQUFELEVBS3RCUCxJQUxzQixDQUF6QjtBQU1EOztBQUVELElBQUlYLE9BQU8sQ0FBQ1YsSUFBUixLQUFpQjZCLE1BQXJCLEVBQTZCO0FBQzNCN0IsRUFBQUEsSUFBSSxHQUFHOEIsSUFBUCxDQUFZLE1BQU07QUFDaEI1QixJQUFBQSxPQUFPLENBQUM2QixJQUFSLENBQWEsQ0FBYjtBQUNELEdBRkQsRUFFR0MsS0FGSCxDQUVVckIsQ0FBRCxJQUFPO0FBQ2RKLElBQUFBLE9BQU8sQ0FBQzBCLEtBQVIsQ0FBY3RCLENBQWQ7QUFDQVQsSUFBQUEsT0FBTyxDQUFDNkIsSUFBUixDQUFhLENBQWI7QUFDRCxHQUxEO0FBTUQiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlLCBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuICovXG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4gKCkge1xuICBjb25zdCBkcml2ZXJFbnYgPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX2RyaXZlcnM7XG4gIGNvbnN0IHBsdWdpbkVudiA9IHByb2Nlc3MuZW52Lm5wbV9jb25maWdfcGx1Z2lucztcblxuICBpZiAoIWRyaXZlckVudiAmJiAhcGx1Z2luRW52KSB7XG4gICAgY29uc29sZS5sb2coJ05vdCBhdXRvLWluc3RhbGxpbmcgYW55IGRyaXZlcnMgb3IgcGx1Z2lucycpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGxldCBleHRlbnNpb247XG4gIHRyeSB7XG4gICAgZXh0ZW5zaW9uID0gcmVxdWlyZSgnLi9idWlsZC9saWIvY2xpL2V4dGVuc2lvbicpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgbG9hZCBleHRlbnNpb24gQ0xJIGZpbGU7IGhhcyB0aGUgcHJvamVjdCBiZWVuIHRyYW5zcGlsZWQ/IGAgK1xuICAgICAgICAgICAgICAgICAgICBgKCR7ZS5tZXNzYWdlfSlgKTtcbiAgfVxuXG4gIGNvbnN0IHtERUZBVUxUX0FQUElVTV9IT01FLCBEUklWRVJfVFlQRSwgUExVR0lOX1RZUEV9ID0gcmVxdWlyZSgnLi9idWlsZC9saWIvZXh0ZW5zaW9uLWNvbmZpZycpO1xuICBjb25zdCB7cnVuRXh0ZW5zaW9uQ29tbWFuZH0gPSBleHRlbnNpb247XG4gIGNvbnN0IGFwcGl1bUhvbWUgPSBwcm9jZXNzLmVudi5ucG1fY29uZmlnX2FwcGl1bV9ob21lIHx8IERFRkFVTFRfQVBQSVVNX0hPTUU7XG4gIGNvbnN0IHNwZWNzID0gW1tEUklWRVJfVFlQRSwgZHJpdmVyRW52XSwgW1BMVUdJTl9UWVBFLCBwbHVnaW5FbnZdXTtcblxuICBmb3IgKGNvbnN0IFt0eXBlLCBleHRFbnZdIG9mIHNwZWNzKSB7XG4gICAgaWYgKGV4dEVudikge1xuICAgICAgZm9yIChjb25zdCBleHQgb2YgZXh0RW52LnNwbGl0KCcsJykpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBjaGVja0FuZEluc3RhbGxFeHRlbnNpb24oe3J1bkV4dGVuc2lvbkNvbW1hbmQsIGFwcGl1bUhvbWUsIHR5cGUsIGV4dH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYFRoZXJlIHdhcyBhbiBlcnJvciBjaGVja2luZyBhbmQgaW5zdGFsbGluZyAke3R5cGV9ICR7ZXh0fTogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2hlY2tBbmRJbnN0YWxsRXh0ZW5zaW9uICh7XG4gIHJ1bkV4dGVuc2lvbkNvbW1hbmQsXG4gIGFwcGl1bUhvbWUsXG4gIHR5cGUsXG4gIGV4dCxcbn0pIHtcbiAgY29uc3QgZXh0TGlzdCA9IGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQoe1xuICAgIGFwcGl1bUhvbWUsXG4gICAgW2Ake3R5cGV9Q29tbWFuZGBdOiAnbGlzdCcsXG4gICAgc2hvd0luc3RhbGxlZDogdHJ1ZSxcbiAgICBzdXBwcmVzc091dHB1dDogdHJ1ZSxcbiAgfSwgdHlwZSk7XG4gIGlmIChleHRMaXN0W2V4dF0pIHtcbiAgICBjb25zb2xlLmxvZyhgVGhlICR7dHlwZX0gJHtleHR9IHdhcyBhbHJlYWR5IGluc3RhbGxlZCwgc2tpcHBpbmcuLi5gKTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc29sZS5sb2coYEluc3RhbGxpbmcgdGhlICR7dHlwZX0gJHtleHR9Li4uYCk7XG4gIGF3YWl0IHJ1bkV4dGVuc2lvbkNvbW1hbmQoe1xuICAgIGFwcGl1bUhvbWUsXG4gICAgW2Ake3R5cGV9Q29tbWFuZGBdOiAnaW5zdGFsbCcsXG4gICAgW3R5cGVdOiBleHQsXG4gICAgc3VwcHJlc3NPdXRwdXQ6IHRydWUsXG4gIH0sIHR5cGUpO1xufVxuXG5pZiAocmVxdWlyZS5tYWluID09PSBtb2R1bGUpIHtcbiAgbWFpbigpLnRoZW4oKCkgPT4ge1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfSkuY2F0Y2goKGUpID0+IHtcbiAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfSk7XG59XG4iXSwiZmlsZSI6InBvc3RpbnN0YWxsLmpzIiwic291cmNlUm9vdCI6Ii4uIn0=
|