@psync/patch-package 1.0.0 → 1.0.2
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/dist/detectPackageManager.js +55 -21
- package/dist/getPackageResolution.js +50 -25
- package/dist/index.js +127 -113
- package/dist/makePatch.js +80 -52
- package/dist/parseBunLockfile.js +88 -3
- package/dist/strictMode.js +299 -0
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -29,6 +29,7 @@ const argv = (0, minimist_1.default)(process_1.default.argv.slice(2), {
|
|
|
29
29
|
"error-on-warn",
|
|
30
30
|
"create-issue",
|
|
31
31
|
"partial",
|
|
32
|
+
"strict",
|
|
32
33
|
"",
|
|
33
34
|
],
|
|
34
35
|
string: ["patch-dir", "append", "rebase"],
|
|
@@ -69,20 +70,23 @@ else {
|
|
|
69
70
|
const excludePaths = (0, makeRegExp_1.makeRegExp)(argv.exclude, "exclude", /^package\.json$/, argv["case-sensitive-path-filtering"]);
|
|
70
71
|
const packageManager = (0, detectPackageManager_1.detectPackageManager)(appPath, argv["use-yarn"] ? "yarn" : argv["use-bun"] ? "bun" : null);
|
|
71
72
|
const createIssue = argv["create-issue"];
|
|
72
|
-
|
|
73
|
-
(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
73
|
+
(async () => {
|
|
74
|
+
for (const packagePathSpecifier of packageNames) {
|
|
75
|
+
await (0, makePatch_1.makePatch)({
|
|
76
|
+
packagePathSpecifier,
|
|
77
|
+
appPath,
|
|
78
|
+
packageManager,
|
|
79
|
+
includePaths,
|
|
80
|
+
excludePaths,
|
|
81
|
+
patchDir,
|
|
82
|
+
createIssue,
|
|
83
|
+
mode: "append" in argv
|
|
84
|
+
? { type: "append", name: argv.append || undefined }
|
|
85
|
+
: { type: "overwrite_last" },
|
|
86
|
+
strict: !!argv.strict,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
})();
|
|
86
90
|
}
|
|
87
91
|
else {
|
|
88
92
|
console.log("Applying patches...");
|
|
@@ -105,104 +109,114 @@ else {
|
|
|
105
109
|
}
|
|
106
110
|
}
|
|
107
111
|
function printHelp() {
|
|
108
|
-
console.log(`
|
|
109
|
-
Usage:
|
|
110
|
-
|
|
111
|
-
1. Patching packages
|
|
112
|
-
====================
|
|
113
|
-
|
|
114
|
-
${chalk_1.default.bold("patch-package")}
|
|
115
|
-
|
|
116
|
-
Without arguments, the ${chalk_1.default.bold("patch-package")} command will attempt to find and apply
|
|
117
|
-
patch files to your project. It looks for files named like
|
|
118
|
-
|
|
119
|
-
./patches/<package-name>+<version>.patch
|
|
120
|
-
|
|
121
|
-
Options:
|
|
122
|
-
|
|
123
|
-
${chalk_1.default.bold("--patch-dir <dirname>")}
|
|
124
|
-
|
|
125
|
-
Specify the name for the directory in which the patch files are located.
|
|
126
|
-
|
|
127
|
-
${chalk_1.default.bold("--error-on-fail")}
|
|
128
|
-
|
|
129
|
-
Forces patch-package to exit with code 1 after failing.
|
|
130
|
-
|
|
131
|
-
When running locally patch-package always exits with 0 by default.
|
|
132
|
-
This happens even after failing to apply patches because otherwise
|
|
133
|
-
yarn.lock and package.json might get out of sync with node_modules,
|
|
134
|
-
which can be very confusing.
|
|
135
|
-
|
|
136
|
-
--error-on-fail is ${chalk_1.default.bold("switched on")} by default on CI.
|
|
137
|
-
|
|
138
|
-
See https://github.com/ds300/patch-package/issues/86 for background.
|
|
139
|
-
|
|
140
|
-
${chalk_1.default.bold("--error-on-warn")}
|
|
141
|
-
|
|
142
|
-
Forces patch-package to exit with code 1 after warning.
|
|
143
|
-
|
|
144
|
-
See https://github.com/ds300/patch-package/issues/314 for background.
|
|
145
|
-
|
|
146
|
-
${chalk_1.default.bold("--reverse")}
|
|
147
|
-
|
|
148
|
-
Un-applies all patches.
|
|
149
|
-
|
|
150
|
-
Note that this will fail if the patched files have changed since being
|
|
151
|
-
patched. In that case, you'll probably need to re-install 'node_modules'.
|
|
152
|
-
|
|
153
|
-
This option was added to help people using CircleCI avoid an issue around caching
|
|
154
|
-
and patch file updates (https://github.com/ds300/patch-package/issues/37),
|
|
155
|
-
but might be useful in other contexts too.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
2. Creating patch files
|
|
159
|
-
=======================
|
|
160
|
-
|
|
161
|
-
${chalk_1.default.bold("patch-package")} <package-name>${chalk_1.default.italic("[ <package-name>]")}
|
|
162
|
-
|
|
163
|
-
When given package names as arguments, patch-package will create patch files
|
|
164
|
-
based on any changes you've made to the versions installed by yarn/npm.
|
|
165
|
-
|
|
166
|
-
Options:
|
|
167
|
-
|
|
168
|
-
${chalk_1.default.bold("--create-issue")}
|
|
169
|
-
|
|
170
|
-
For packages whose source is hosted on GitHub this option opens a web
|
|
171
|
-
browser with a draft issue based on your diff.
|
|
172
|
-
|
|
173
|
-
${chalk_1.default.bold("--use-yarn")}
|
|
174
|
-
|
|
175
|
-
By default, patch-package checks whether you use npm, yarn or bun based on
|
|
176
|
-
which lockfile you have. If you have multiple lockfiles, it uses npm by
|
|
177
|
-
default (in cases where npm is not available, it will resort to yarn). Set
|
|
178
|
-
this option to override that default and always use yarn.
|
|
179
|
-
|
|
180
|
-
${chalk_1.default.bold("--use-bun")}
|
|
181
|
-
|
|
182
|
-
Similar to --use-yarn, but for bun. If both --use-yarn and --use-bun are
|
|
183
|
-
specified, --use-yarn takes precedence.
|
|
184
|
-
|
|
185
|
-
${chalk_1.default.bold("--exclude <regexp>")}
|
|
186
|
-
|
|
187
|
-
Ignore paths matching the regexp when creating patch files.
|
|
188
|
-
Paths are relative to the root dir of the package to be patched.
|
|
189
|
-
|
|
190
|
-
Default: 'package\\.json$'
|
|
191
|
-
|
|
192
|
-
${chalk_1.default.bold("--
|
|
193
|
-
|
|
194
|
-
Only
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
112
|
+
console.log(`
|
|
113
|
+
Usage:
|
|
114
|
+
|
|
115
|
+
1. Patching packages
|
|
116
|
+
====================
|
|
117
|
+
|
|
118
|
+
${chalk_1.default.bold("patch-package")}
|
|
119
|
+
|
|
120
|
+
Without arguments, the ${chalk_1.default.bold("patch-package")} command will attempt to find and apply
|
|
121
|
+
patch files to your project. It looks for files named like
|
|
122
|
+
|
|
123
|
+
./patches/<package-name>+<version>.patch
|
|
124
|
+
|
|
125
|
+
Options:
|
|
126
|
+
|
|
127
|
+
${chalk_1.default.bold("--patch-dir <dirname>")}
|
|
128
|
+
|
|
129
|
+
Specify the name for the directory in which the patch files are located.
|
|
130
|
+
|
|
131
|
+
${chalk_1.default.bold("--error-on-fail")}
|
|
132
|
+
|
|
133
|
+
Forces patch-package to exit with code 1 after failing.
|
|
134
|
+
|
|
135
|
+
When running locally patch-package always exits with 0 by default.
|
|
136
|
+
This happens even after failing to apply patches because otherwise
|
|
137
|
+
yarn.lock and package.json might get out of sync with node_modules,
|
|
138
|
+
which can be very confusing.
|
|
139
|
+
|
|
140
|
+
--error-on-fail is ${chalk_1.default.bold("switched on")} by default on CI.
|
|
141
|
+
|
|
142
|
+
See https://github.com/ds300/patch-package/issues/86 for background.
|
|
143
|
+
|
|
144
|
+
${chalk_1.default.bold("--error-on-warn")}
|
|
145
|
+
|
|
146
|
+
Forces patch-package to exit with code 1 after warning.
|
|
147
|
+
|
|
148
|
+
See https://github.com/ds300/patch-package/issues/314 for background.
|
|
149
|
+
|
|
150
|
+
${chalk_1.default.bold("--reverse")}
|
|
151
|
+
|
|
152
|
+
Un-applies all patches.
|
|
153
|
+
|
|
154
|
+
Note that this will fail if the patched files have changed since being
|
|
155
|
+
patched. In that case, you'll probably need to re-install 'node_modules'.
|
|
156
|
+
|
|
157
|
+
This option was added to help people using CircleCI avoid an issue around caching
|
|
158
|
+
and patch file updates (https://github.com/ds300/patch-package/issues/37),
|
|
159
|
+
but might be useful in other contexts too.
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
2. Creating patch files
|
|
163
|
+
=======================
|
|
164
|
+
|
|
165
|
+
${chalk_1.default.bold("patch-package")} <package-name>${chalk_1.default.italic("[ <package-name>]")}
|
|
166
|
+
|
|
167
|
+
When given package names as arguments, patch-package will create patch files
|
|
168
|
+
based on any changes you've made to the versions installed by yarn/npm.
|
|
169
|
+
|
|
170
|
+
Options:
|
|
171
|
+
|
|
172
|
+
${chalk_1.default.bold("--create-issue")}
|
|
173
|
+
|
|
174
|
+
For packages whose source is hosted on GitHub this option opens a web
|
|
175
|
+
browser with a draft issue based on your diff.
|
|
176
|
+
|
|
177
|
+
${chalk_1.default.bold("--use-yarn")}
|
|
178
|
+
|
|
179
|
+
By default, patch-package checks whether you use npm, yarn or bun based on
|
|
180
|
+
which lockfile you have. If you have multiple lockfiles, it uses npm by
|
|
181
|
+
default (in cases where npm is not available, it will resort to yarn). Set
|
|
182
|
+
this option to override that default and always use yarn.
|
|
183
|
+
|
|
184
|
+
${chalk_1.default.bold("--use-bun")}
|
|
185
|
+
|
|
186
|
+
Similar to --use-yarn, but for bun. If both --use-yarn and --use-bun are
|
|
187
|
+
specified, --use-yarn takes precedence.
|
|
188
|
+
|
|
189
|
+
${chalk_1.default.bold("--exclude <regexp>")}
|
|
190
|
+
|
|
191
|
+
Ignore paths matching the regexp when creating patch files.
|
|
192
|
+
Paths are relative to the root dir of the package to be patched.
|
|
193
|
+
|
|
194
|
+
Default: 'package\\.json$'
|
|
195
|
+
|
|
196
|
+
${chalk_1.default.bold("--strict")}
|
|
197
|
+
|
|
198
|
+
Only include files that were part of the original published package
|
|
199
|
+
in the resulting patch. New files that appeared in your node_modules
|
|
200
|
+
but were not in the upstream tarball are excluded. This prevents
|
|
201
|
+
'--- /dev/null' ("new file") entries caused by install-time file
|
|
202
|
+
drift. Requires network access to fetch the original tarball (or
|
|
203
|
+
a file:// resolution in the lockfile). Falls back to a warning if
|
|
204
|
+
the baseline cannot be determined.
|
|
205
|
+
|
|
206
|
+
${chalk_1.default.bold("--include <regexp>")}
|
|
207
|
+
|
|
208
|
+
Only consider paths matching the regexp when creating patch files.
|
|
209
|
+
Paths are relative to the root dir of the package to be patched.
|
|
210
|
+
|
|
211
|
+
Default '.*'
|
|
212
|
+
|
|
213
|
+
${chalk_1.default.bold("--case-sensitive-path-filtering")}
|
|
214
|
+
|
|
215
|
+
Make regexps used in --include or --exclude filters case-sensitive.
|
|
216
|
+
|
|
217
|
+
${chalk_1.default.bold("--patch-dir")}
|
|
218
|
+
|
|
219
|
+
Specify the name for the directory in which to put the patch files.
|
|
206
220
|
`);
|
|
207
221
|
}
|
|
208
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBeUI7QUFDekIsc0RBQTZCO0FBQzdCLHdEQUErQjtBQUUvQixpREFBbUQ7QUFDbkQscURBQWlEO0FBQ2pELDJDQUF1QztBQUN2Qyw2Q0FBeUM7QUFDekMsaUVBQTZEO0FBQzdELGlDQUE2QjtBQUM3QiwrQkFBcUM7QUFDckMsK0JBQStCO0FBQy9CLHFDQUE4QjtBQUM5QixxQ0FBaUM7QUFFakMsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBYyxHQUFFLENBQUE7QUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBUSxFQUFDLGlCQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQyxPQUFPLEVBQUU7UUFDUCxVQUFVO1FBQ1YsU0FBUztRQUNULCtCQUErQjtRQUMvQixTQUFTO1FBQ1QsTUFBTTtRQUNOLFNBQVM7UUFDVCxlQUFlO1FBQ2YsZUFBZTtRQUNmLGNBQWM7UUFDZCxTQUFTO1FBQ1QsRUFBRTtLQUNIO0lBQ0QsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7Q0FDMUMsQ0FBQyxDQUFBO0FBQ0YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtBQUUzQixPQUFPLENBQUMsR0FBRyxDQUNULGVBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQzNCLDJDQUEyQztBQUMzQyxPQUFPLENBQUMsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQ3BELENBQUE7QUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNCLE9BQU87QUFDVCxDQUFDO0tBQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FB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VyxDQUFDOzs7OztNQUt2QixlQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDOzs7Ozs7O01BT2hDLGVBQUssQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUM7Ozs7Ozs7TUFPaEMsZUFBSyxDQUFDLElBQUksQ0FBQyxpQ0FBaUMsQ0FBQzs7OztNQUk3QyxlQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQzs7O0NBRzlCLENBQUMsQ0FBQTtBQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCJcclxuaW1wb3J0IHByb2Nlc3MgZnJvbSBcInByb2Nlc3NcIlxyXG5pbXBvcnQgbWluaW1pc3QgZnJvbSBcIm1pbmltaXN0XCJcclxuXHJcbmltcG9ydCB7IGFwcGx5UGF0Y2hlc0ZvckFwcCB9IGZyb20gXCIuL2FwcGx5UGF0Y2hlc1wiXHJcbmltcG9ydCB7IGdldEFwcFJvb3RQYXRoIH0gZnJvbSBcIi4vZ2V0QXBwUm9vdFBhdGhcIlxyXG5pbXBvcnQgeyBtYWtlUGF0Y2ggfSBmcm9tIFwiLi9tYWtlUGF0Y2hcIlxyXG5pbXBvcnQgeyBtYWtlUmVnRXhwIH0gZnJvbSBcIi4vbWFrZVJlZ0V4cFwiXHJcbmltcG9ydCB7IGRldGVjdFBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIi4vZGV0ZWN0UGFja2FnZU1hbmFnZXJcIlxyXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIi4vcGF0aFwiXHJcbmltcG9ydCB7IG5vcm1hbGl6ZSwgc2VwIH0gZnJvbSBcInBhdGhcIlxyXG5pbXBvcnQgc2xhc2ggPSByZXF1aXJlKFwic2xhc2hcIilcclxuaW1wb3J0IHsgaXNDSSB9IGZyb20gXCJjaS1pbmZvXCJcclxuaW1wb3J0IHsgcmViYXNlIH0gZnJvbSBcIi4vcmViYXNlXCJcclxuXHJcbmNvbnN0IGFwcFBhdGggPSBnZXRBcHBSb290UGF0aCgpXHJcbmNvbnN0IGFyZ3YgPSBtaW5pbWlzdChwcm9jZXNzLmFyZ3Yuc2xpY2UoMiksIHtcclxuICBib29sZWFuOiBbXHJcbiAgICBcInVzZS15YXJuXCIsXHJcbiAgICBcInVzZS1idW5cIixcclxuICAgIFwiY2FzZS1zZW5zaXRpdmUtcGF0aC1maWx0ZXJpbmdcIixcclxuICAgIFwicmV2ZXJzZVwiLFxyXG4gICAgXCJoZWxwXCIsXHJcbiAgICBcInZlcnNpb25cIixcclxuICAgIFwiZXJyb3Itb24tZmFpbFwiLFxyXG4gICAgXCJlcnJvci1vbi13YXJuXCIsXHJcbiAgICBcImNyZWF0ZS1pc3N1ZVwiLFxyXG4gICAgXCJwYXJ0aWFsXCIsXHJcbiAgICBcIlwiLFxyXG4gIF0sXHJcbiAgc3RyaW5nOiBbXCJwYXRjaC1kaXJcIiwgXCJhcHBlbmRcIiwgXCJyZWJhc2VcIl0sXHJcbn0pXHJcbmNvbnN0IHBhY2thZ2VOYW1lcyA9IGFyZ3YuX1xyXG5cclxuY29uc29sZS5sb2coXHJcbiAgY2hhbGsuYm9sZChcInBhdGNoLXBhY2thZ2VcIiksXHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXZhci1yZXF1aXJlc1xyXG4gIHJlcXVpcmUoam9pbihfX2Rpcm5hbWUsIFwiLi4vcGFja2FnZS5qc29uXCIpKS52ZXJzaW9uLFxyXG4pXHJcblxyXG5pZiAoYXJndi52ZXJzaW9uIHx8IGFyZ3Yudikge1xyXG4gIC8vIG5vb3BcclxufSBlbHNlIGlmIChhcmd2LmhlbHAgfHwgYXJndi5oKSB7XHJcbiAgcHJpbnRIZWxwKClcclxufSBlbHNlIHtcclxuICBjb25zdCBwYXRjaERpciA9IHNsYXNoKG5vcm1hbGl6ZSgoYXJndltcInBhdGNoLWRpclwiXSB8fCBcInBhdGNoZXNcIikgKyBzZXApKVxyXG4gIGlmIChwYXRjaERpci5zdGFydHNXaXRoKFwiL1wiKSkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiLS1wYXRjaC1kaXIgbXVzdCBiZSBhIHJlbGF0aXZlIHBhdGhcIilcclxuICB9XHJcbiAgaWYgKFwicmViYXNlXCIgaW4gYXJndikge1xyXG4gICAgaWYgKCFhcmd2LnJlYmFzZSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBjaGFsay5yZWQoXHJcbiAgICAgICAgICBcIllvdSBtdXN0IHNwZWNpZnkgYSBwYXRjaCBmaWxlIG5hbWUgb3IgbnVtYmVyIHdoZW4gcmViYXNpbmcgcGF0Y2hlc1wiLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgcHJvY2Vzcy5leGl0KDEpXHJcbiAgICB9XHJcbiAgICBpZiAocGFja2FnZU5hbWVzLmxlbmd0aCAhPT0gMSkge1xyXG4gICAgICBjb25zb2xlLmxvZyhcclxuICAgICAgICBjaGFsay5yZWQoXHJcbiAgICAgICAgICBcIllvdSBtdXN0IHNwZWNpZnkgZXhhY3RseSBvbmUgcGFja2FnZSBuYW1lIHdoZW4gcmViYXNpbmcgcGF0Y2hlc1wiLFxyXG4gICAgICAgICksXHJcbiAgICAgIClcclxuICAgICAgcHJvY2Vzcy5leGl0KDEpXHJcbiAgICB9XHJcbiAgICByZWJhc2Uoe1xyXG4gICAgICBhcHBQYXRoLFxyXG4gICAgICBwYWNrYWdlUGF0aFNwZWNpZmllcjogcGFja2FnZU5hbWVzWzBdLFxyXG4gICAgICBwYXRjaERpcixcclxuICAgICAgdGFyZ2V0UGF0Y2g6IGFyZ3YucmViYXNlLFxyXG4gICAgfSlcclxuICB9IGVsc2UgaWYgKHBhY2thZ2VOYW1lcy5sZW5ndGgpIHtcclxuICAgIGNvbnN0IGluY2x1ZGVQYXRocyA9IG1ha2VSZWdFeHAoXHJcbiAgICAgIGFyZ3YuaW5jbHVkZSxcclxuICAgICAgXCJpbmNsdWRlXCIsXHJcbiAgICAgIC8uKi8sXHJcbiAgICAgIGFyZ3ZbXCJjYXNlLXNlbnNpdGl2ZS1wYXRoLWZpbHRlcmluZ1wiXSxcclxuICAgIClcclxuICAgIGNvbnN0IGV4Y2x1ZGVQYXRocyA9IG1ha2VSZWdFeHAoXHJcbiAgICAgIGFyZ3YuZXhjbHVkZSxcclxuICAgICAgXCJleGNsdWRlXCIsXHJcbiAgICAgIC9ecGFja2FnZVxcLmpzb24kLyxcclxuICAgICAgYXJndltcImNhc2Utc2Vuc2l0aXZlLXBhdGgtZmlsdGVyaW5nXCJdLFxyXG4gICAgKVxyXG4gICAgY29uc3QgcGFja2FnZU1hbmFnZXIgPSBkZXRlY3RQYWNrYWdlTWFuYWdlcihcclxuICAgICAgYXBwUGF0aCxcclxuICAgICAgYXJndltcInVzZS15YXJuXCJdID8gXCJ5YXJuXCIgOiBhcmd2W1widXNlLWJ1blwiXSA/IFwiYnVuXCIgOiBudWxsLFxyXG4gICAgKVxyXG4gICAgY29uc3QgY3JlYXRlSXNzdWUgPSBhcmd2W1wiY3JlYXRlLWlzc3VlXCJdXHJcbiAgICBwYWNrYWdlTmFtZXMuZm9yRWFjaCgocGFja2FnZVBhdGhTcGVjaWZpZXI6IHN0cmluZykgPT4ge1xyXG4gICAgICBtYWtlUGF0Y2goe1xyXG4gICAgICAgIHBhY2thZ2VQYXRoU3BlY2lmaWVyLFxyXG4gICAgICAgIGFwcFBhdGgsXHJcbiAgICAgICAgcGFja2FnZU1hbmFnZXIsXHJcbiAgICAgICAgaW5jbHVkZVBhdGhzLFxyXG4gICAgICAgIGV4Y2x1ZGVQYXRocyxcclxuICAgICAgICBwYXRjaERpcixcclxuICAgICAgICBjcmVhdGVJc3N1ZSxcclxuICAgICAgICBtb2RlOlxyXG4gICAgICAgICAgXCJhcHBlbmRcIiBpbiBhcmd2XHJcbiAgICAgICAgICAgID8geyB0eXBlOiBcImFwcGVuZFwiLCBuYW1lOiBhcmd2LmFwcGVuZCB8fCB1bmRlZmluZWQgfVxyXG4gICAgICAgICAgICA6IHsgdHlwZTogXCJvdmVyd3JpdGVfbGFzdFwiIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH0gZWxzZSB7XHJcbiAgICBjb25zb2xlLmxvZyhcIkFwcGx5aW5nIHBhdGNoZXMuLi5cIilcclxuICAgIGNvbnN0IHJldmVyc2UgPSAhIWFyZ3ZbXCJyZXZlcnNlXCJdXHJcbiAgICAvLyBkb24ndCB3YW50IHRvIGV4aXQoMSkgb24gcG9zdGluc3RhbGwgbG9jYWxseS5cclxuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZHMzMDAvcGF0Y2gtcGFja2FnZS9pc3N1ZXMvODZcclxuICAgIGNvbnN0IHNob3VsZEV4aXRXaXRoRXJyb3IgPVxyXG4gICAgICAhIWFyZ3ZbXCJlcnJvci1vbi1mYWlsXCJdIHx8XHJcbiAgICAgIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJwcm9kdWN0aW9uXCIgJiYgaXNDSSkgfHxcclxuICAgICAgKGlzQ0kgJiYgIXByb2Nlc3MuZW52LlBBVENIX1BBQ0tBR0VfSU5URUdSQVRJT05fVEVTVCkgfHxcclxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiXHJcblxyXG4gICAgY29uc3Qgc2hvdWxkRXhpdFdpdGhXYXJuaW5nID0gISFhcmd2W1wiZXJyb3Itb24td2FyblwiXVxyXG5cclxuICAgIGFwcGx5UGF0Y2hlc0ZvckFwcCh7XHJcbiAgICAgIGFwcFBhdGgsXHJcbiAgICAgIHJldmVyc2UsXHJcbiAgICAgIHBhdGNoRGlyLFxyXG4gICAgICBzaG91bGRFeGl0V2l0aEVycm9yLFxyXG4gICAgICBzaG91bGRFeGl0V2l0aFdhcm5pbmcsXHJcbiAgICAgIGJlc3RFZmZvcnQ6IGFyZ3YucGFydGlhbCxcclxuICAgIH0pXHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBwcmludEhlbHAoKSB7XHJcbiAgY29uc29sZS5sb2coYFxyXG5Vc2FnZTpcclxuXHJcbiAgMS4gUGF0Y2hpbmcgcGFja2FnZXNcclxuICA9PT09PT09PT09PT09PT09PT09PVxyXG5cclxuICAgICR7Y2hhbGsuYm9sZChcInBhdGNoLXBhY2thZ2VcIil9XHJcblxyXG4gIFdpdGhvdXQgYXJndW1lbnRzLCB0aGUgJHtjaGFsay5ib2xkKFxyXG4gICAgXCJwYXRjaC1wYWNrYWdlXCIsXHJcbiAgKX0gY29tbWFuZCB3aWxsIGF0dGVtcHQgdG8gZmluZCBhbmQgYXBwbHlcclxuICBwYXRjaCBmaWxlcyB0byB5b3VyIHByb2plY3QuIEl0IGxvb2tzIGZvciBmaWxlcyBuYW1lZCBsaWtlXHJcblxyXG4gICAgIC4vcGF0Y2hlcy88cGFja2FnZS1uYW1lPis8dmVyc2lvbj4ucGF0Y2hcclxuXHJcbiAgT3B0aW9uczpcclxuXHJcbiAgICAke2NoYWxrLmJvbGQoXCItLXBhdGNoLWRpciA8ZGlybmFtZT5cIil9XHJcblxyXG4gICAgICBTcGVjaWZ5IHRoZSBuYW1lIGZvciB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIHRoZSBwYXRjaCBmaWxlcyBhcmUgbG9jYXRlZC5cclxuXHJcbiAgICAke2NoYWxrLmJvbGQoXCItLWVycm9yLW9uLWZhaWxcIil9XHJcblxyXG4gICAgICBGb3JjZXMgcGF0Y2gtcGFja2FnZSB0byBleGl0IHdpdGggY29kZSAxIGFmdGVyIGZhaWxpbmcuXHJcblxyXG4gICAgICBXaGVuIHJ1bm5pbmcgbG9jYWxseSBwYXRjaC1wYWNrYWdlIGFsd2F5cyBleGl0cyB3aXRoIDAgYnkgZGVmYXVsdC5cclxuICAgICAgVGhpcyBoYXBwZW5zIGV2ZW4gYWZ0ZXIgZmFpbGluZyB0byBhcHBseSBwYXRjaGVzIGJlY2F1c2Ugb3RoZXJ3aXNlXHJcbiAgICAgIHlhcm4ubG9jayBhbmQgcGFja2FnZS5qc29uIG1pZ2h0IGdldCBvdXQgb2Ygc3luYyB3aXRoIG5vZGVfbW9kdWxlcyxcclxuICAgICAgd2hpY2ggY2FuIGJlIHZlcnkgY29uZnVzaW5nLlxyXG5cclxuICAgICAgLS1lcnJvci1vbi1mYWlsIGlzICR7Y2hhbGsuYm9sZChcInN3aXRjaGVkIG9uXCIpfSBieSBkZWZhdWx0IG9uIENJLlxyXG5cclxuICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kczMwMC9wYXRjaC1wYWNrYWdlL2lzc3Vlcy84NiBmb3IgYmFja2dyb3VuZC5cclxuXHJcbiAgICAke2NoYWxrLmJvbGQoXCItLWVycm9yLW9uLXdhcm5cIil9XHJcblxyXG4gICAgICBGb3JjZXMgcGF0Y2gtcGFja2FnZSB0byBleGl0IHdpdGggY29kZSAxIGFmdGVyIHdhcm5pbmcuXHJcblxyXG4gICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2RzMzAwL3BhdGNoLXBhY2thZ2UvaXNzdWVzLzMxNCBmb3IgYmFja2dyb3VuZC5cclxuXHJcbiAgICAke2NoYWxrLmJvbGQoXCItLXJldmVyc2VcIil9XHJcblxyXG4gICAgICBVbi1hcHBsaWVzIGFsbCBwYXRjaGVzLlxyXG5cclxuICAgICAgTm90ZSB0aGF0IHRoaXMgd2lsbCBmYWlsIGlmIHRoZSBwYXRjaGVkIGZpbGVzIGhhdmUgY2hhbmdlZCBzaW5jZSBiZWluZ1xyXG4gICAgICBwYXRjaGVkLiBJbiB0aGF0IGNhc2UsIHlvdSdsbCBwcm9iYWJseSBuZWVkIHRvIHJlLWluc3RhbGwgJ25vZGVfbW9kdWxlcycuXHJcblxyXG4gICAgICBUaGlzIG9wdGlvbiB3YXMgYWRkZWQgdG8gaGVscCBwZW9wbGUgdXNpbmcgQ2lyY2xlQ0kgYXZvaWQgYW4gaXNzdWUgYXJvdW5kIGNhY2hpbmdcclxuICAgICAgYW5kIHBhdGNoIGZpbGUgdXBkYXRlcyAoaHR0cHM6Ly9naXRodWIuY29tL2RzMzAwL3BhdGNoLXBhY2thZ2UvaXNzdWVzLzM3KSxcclxuICAgICAgYnV0IG1pZ2h0IGJlIHVzZWZ1bCBpbiBvdGhlciBjb250ZXh0cyB0b28uXHJcblxyXG5cclxuICAyLiBDcmVhdGluZyBwYXRjaCBmaWxlc1xyXG4gID09PT09PT09PT09PT09PT09PT09PT09XHJcblxyXG4gICAgJHtjaGFsay5ib2xkKFwicGF0Y2gtcGFja2FnZVwiKX0gPHBhY2thZ2UtbmFtZT4ke2NoYWxrLml0YWxpYyhcclxuICAgICAgXCJbIDxwYWNrYWdlLW5hbWU+XVwiLFxyXG4gICAgKX1cclxuXHJcbiAgV2hlbiBnaXZlbiBwYWNrYWdlIG5hbWVzIGFzIGFyZ3VtZW50cywgcGF0Y2gtcGFja2FnZSB3aWxsIGNyZWF0ZSBwYXRjaCBmaWxlc1xyXG4gIGJhc2VkIG9uIGFueSBjaGFuZ2VzIHlvdSd2ZSBtYWRlIHRvIHRoZSB2ZXJzaW9ucyBpbnN0YWxsZWQgYnkgeWFybi9ucG0uXHJcblxyXG4gIE9wdGlvbnM6XHJcblxyXG4gICAgJHtjaGFsay5ib2xkKFwiLS1jcmVhdGUtaXNzdWVcIil9XHJcblxyXG4gICAgICAgRm9yIHBhY2thZ2VzIHdob3NlIHNvdXJjZSBpcyBob3N0ZWQgb24gR2l0SHViIHRoaXMgb3B0aW9uIG9wZW5zIGEgd2ViXHJcbiAgICAgICBicm93c2VyIHdpdGggYSBkcmFmdCBpc3N1ZSBiYXNlZCBvbiB5b3VyIGRpZmYuXHJcblxyXG4gICAgJHtjaGFsay5ib2xkKFwiLS11c2UteWFyblwiKX1cclxuXHJcbiAgICAgICAgQnkgZGVmYXVsdCwgcGF0Y2gtcGFja2FnZSBjaGVja3Mgd2hldGhlciB5b3UgdXNlIG5wbSwgeWFybiBvciBidW4gYmFzZWQgb25cclxuICAgICAgICB3aGljaCBsb2NrZmlsZSB5b3UgaGF2ZS4gSWYgeW91IGhhdmUgbXVsdGlwbGUgbG9ja2ZpbGVzLCBpdCB1c2VzIG5wbSBieVxyXG4gICAgICAgIGRlZmF1bHQgKGluIGNhc2VzIHdoZXJlIG5wbSBpcyBub3QgYXZhaWxhYmxlLCBpdCB3aWxsIHJlc29ydCB0byB5YXJuKS4gU2V0XHJcbiAgICAgICAgdGhpcyBvcHRpb24gdG8gb3ZlcnJpZGUgdGhhdCBkZWZhdWx0IGFuZCBhbHdheXMgdXNlIHlhcm4uXHJcblxyXG4gICAgJHtjaGFsay5ib2xkKFwiLS11c2UtYnVuXCIpfVxyXG5cclxuICAgICAgICBTaW1pbGFyIHRvIC0tdXNlLXlhcm4sIGJ1dCBmb3IgYnVuLiBJZiBib3RoIC0tdXNlLXlhcm4gYW5kIC0tdXNlLWJ1biBhcmVcclxuICAgICAgICBzcGVjaWZpZWQsIC0tdXNlLXlhcm4gdGFrZXMgcHJlY2VkZW5jZS5cclxuXHJcbiAgICAke2NoYWxrLmJvbGQoXCItLWV4Y2x1ZGUgPHJlZ2V4cD5cIil9XHJcblxyXG4gICAgICAgIElnbm9yZSBwYXRocyBtYXRjaGluZyB0aGUgcmVnZXhwIHdoZW4gY3JlYXRpbmcgcGF0Y2ggZmlsZXMuXHJcbiAgICAgICAgUGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSByb290IGRpciBvZiB0aGUgcGFja2FnZSB0byBiZSBwYXRjaGVkLlxyXG5cclxuICAgICAgICBEZWZhdWx0OiAncGFja2FnZVxcXFwuanNvbiQnXHJcblxyXG4gICAgJHtjaGFsay5ib2xkKFwiLS1pbmNsdWRlIDxyZWdleHA+XCIpfVxyXG5cclxuICAgICAgICBPbmx5IGNvbnNpZGVyIHBhdGhzIG1hdGNoaW5nIHRoZSByZWdleHAgd2hlbiBjcmVhdGluZyBwYXRjaCBmaWxlcy5cclxuICAgICAgICBQYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZGlyIG9mIHRoZSBwYWNrYWdlIHRvIGJlIHBhdGNoZWQuXHJcblxyXG4gICAgICAgIERlZmF1bHQgJy4qJ1xyXG5cclxuICAgICR7Y2hhbGsuYm9sZChcIi0tY2FzZS1zZW5zaXRpdmUtcGF0aC1maWx0ZXJpbmdcIil9XHJcblxyXG4gICAgICAgIE1ha2UgcmVnZXhwcyB1c2VkIGluIC0taW5jbHVkZSBvciAtLWV4Y2x1ZGUgZmlsdGVycyBjYXNlLXNlbnNpdGl2ZS5cclxuXHJcbiAgICAke2NoYWxrLmJvbGQoXCItLXBhdGNoLWRpclwiKX1cclxuXHJcbiAgICAgICAgU3BlY2lmeSB0aGUgbmFtZSBmb3IgdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0byBwdXQgdGhlIHBhdGNoIGZpbGVzLlxyXG5gKVxyXG59XHJcbiJdfQ==
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrREFBeUI7QUFDekIsc0RBQTZCO0FBQzdCLHdEQUErQjtBQUUvQixpREFBbUQ7QUFDbkQscURBQWlEO0FBQ2pELDJDQUF1QztBQUN2Qyw2Q0FBeUM7QUFDekMsaUVBQTZEO0FBQzdELGlDQUE2QjtBQUM3QiwrQkFBcUM7QUFDckMsK0JBQStCO0FBQy9CLHFDQUE4QjtBQUM5QixxQ0FBaUM7QUFFakMsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBYyxHQUFFLENBQUE7QUFDaEMsTUFBTSxJQUFJLEdBQUcsSUFBQSxrQkFBUSxFQUFDLGlCQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUMzQyxPQUFPLEVBQUU7UUFDUCxVQUFVO1FBQ1YsU0FBUztRQUNULCtCQUErQjtRQUMvQixTQUFTO1FBQ1QsTUFBTTtRQUNOLFNBQVM7UUFDVCxlQUFlO1FBQ2YsZUFBZTtRQUNmLGNBQWM7UUFDZCxTQUFTO1FBQ1QsUUFBUTtRQUNSLEVBQUU7S0FDSDtJQUNELE1BQU0sRUFBRSxDQUFDLFdBQVcsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDO0NBQzFDLENBQUMsQ0FBQTtBQUNGLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7QUFFM0IsT0FBTyxDQUFDLEdBQUcsQ0FDVCxlQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztBQUMzQiwyQ0FBMkM7QUFDM0MsT0FBTyxDQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUNwRCxDQUFBO0FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUMzQixPQUFPO0FBQ1QsQ0FBQztLQUFNLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDL0IsU0FBUyxFQUFFLENBQUE7QUFDYixDQUFDO0tBQU0sQ0FBQztJQUNOLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFBLGdCQUFTLEVBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsVUFBRyxDQUFDLENBQUMsQ0FBQTtJQUN6RSxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7SUFDeEQsQ0FBQztJQUNELElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxlQUFLLENBQUMsR0FBRyxDQUNQLG9FQUFvRSxDQUNyRSxDQUNGLENBQUE7WUFDRCxpQkFBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNqQixDQUFDO1FBQ0QsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQ1QsZUFBSyxDQUFDLEdBQUcsQ0FDUCxpRUFBaUUsQ0FDbEUsQ0FDRixDQUFBO1lBQ0QsaUJBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakIsQ0FBQztRQUNELElBQUEsZUFBTSxFQUFDO1lBQ0wsT0FBTztZQUNQLG9CQUFvQixFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDckMsUUFBUTtZQUNSLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTTtTQUN6QixDQUFDLENBQUE7SUFDSixDQUFDO1NBQU0sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0IsTUFBTSxZQUFZLEdBQUcsSUFBQSx1QkFBVSxFQUM3QixJQUFJLENBQUMsT0FBTyxFQUNaLFNBQVMsRUFDVCxJQUFJLEVBQ0osSUFBSSxDQUFDLCtCQUErQixDQUFDLENBQ3RDLENBQUE7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFBLHVCQUFVLEVBQzdCLElBQUksQ0FBQyxPQUFPLEVBQ1osU0FBUyxFQUNULGlCQUFpQixFQUNqQixJQUFJLENBQUMsK0JBQStCLENBQUMsQ0FDdEMsQ0FBQTtRQUNELE1BQU0sY0FBYyxHQUFHLElBQUEsMkNBQW9CLEVBQ3pDLE9BQU8sRUFDUCxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDM0QsQ0FBQTtRQUNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FHdkM7UUFBQSxDQUFDLEtBQUssSUFBSSxFQUFFO1lBQ1gsS0FBSyxNQUFNLG9CQUFvQixJQUFJLFlBQVksRUFBRSxDQUFDO2dCQUNoRCxNQUFNLElBQUEscUJBQVMsRUFBQztvQkFDZCxvQkFBb0I7b0JBQ3BCLE9BQU87b0JBQ1AsY0FBYztvQkFDZCxZQUFZO29CQUNaLFlBQVk7b0JBQ1osUUFBUTtvQkFDUixXQUFXO29CQUNYLElBQUksRUFDRixRQUFRLElBQUksSUFBSTt3QkFDZCxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTt3QkFDcEQsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO29CQUNoQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNO2lCQUN0QixDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakMsZ0RBQWdEO1FBQ2hELHVEQUF1RDtRQUN2RCxNQUFNLG1CQUFtQixHQUN2QixDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUN2QixDQUFDLGlCQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxZQUFZLElBQUksY0FBSSxDQUFDO1lBQy9DLENBQUMsY0FBSSxJQUFJLENBQUMsaUJBQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUM7WUFDckQsaUJBQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQTtRQUVqQyxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7UUFFckQsSUFBQSxpQ0FBa0IsRUFBQztZQUNqQixPQUFPO1lBQ1AsT0FBTztZQUNQLFFBQVE7WUFDUixtQkFBbUI7WUFDbkIscUJBQXFCO1lBQ3JCLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTztTQUN6QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsU0FBUztJQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDOzs7Ozs7TUFNUixlQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQzs7MkJBRU4sZUFBSyxDQUFDLElBQUksQ0FDakMsZUFBZSxDQUNoQjs7Ozs7OztNQU9HLGVBQUssQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUM7Ozs7TUFJbkMsZUFBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzs7Ozs7Ozs7OzJCQVNSLGVBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDOzs7O01BSTlDLGVBQUssQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Ozs7OztNQU03QixlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O01BZXZCLGVBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGtCQUFrQixlQUFLLENBQUMsTUFBTSxDQUN6RCxtQkFBbUIsQ0FDcEI7Ozs7Ozs7TUFPQyxlQUFLLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDOzs7OztNQUs1QixlQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQzs7Ozs7OztNQU94QixlQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQzs7Ozs7TUFLdkIsZUFBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQzs7Ozs7OztNQU9oQyxlQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7Ozs7Ozs7OztNQVV0QixlQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDOzs7Ozs7O01BT2hDLGVBQUssQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUM7Ozs7TUFJN0MsZUFBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7OztDQUc5QixDQUFDLENBQUE7QUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiXG5pbXBvcnQgcHJvY2VzcyBmcm9tIFwicHJvY2Vzc1wiXG5pbXBvcnQgbWluaW1pc3QgZnJvbSBcIm1pbmltaXN0XCJcblxuaW1wb3J0IHsgYXBwbHlQYXRjaGVzRm9yQXBwIH0gZnJvbSBcIi4vYXBwbHlQYXRjaGVzXCJcbmltcG9ydCB7IGdldEFwcFJvb3RQYXRoIH0gZnJvbSBcIi4vZ2V0QXBwUm9vdFBhdGhcIlxuaW1wb3J0IHsgbWFrZVBhdGNoIH0gZnJvbSBcIi4vbWFrZVBhdGNoXCJcbmltcG9ydCB7IG1ha2VSZWdFeHAgfSBmcm9tIFwiLi9tYWtlUmVnRXhwXCJcbmltcG9ydCB7IGRldGVjdFBhY2thZ2VNYW5hZ2VyIH0gZnJvbSBcIi4vZGV0ZWN0UGFja2FnZU1hbmFnZXJcIlxuaW1wb3J0IHsgam9pbiB9IGZyb20gXCIuL3BhdGhcIlxuaW1wb3J0IHsgbm9ybWFsaXplLCBzZXAgfSBmcm9tIFwicGF0aFwiXG5pbXBvcnQgc2xhc2ggPSByZXF1aXJlKFwic2xhc2hcIilcbmltcG9ydCB7IGlzQ0kgfSBmcm9tIFwiY2ktaW5mb1wiXG5pbXBvcnQgeyByZWJhc2UgfSBmcm9tIFwiLi9yZWJhc2VcIlxuXG5jb25zdCBhcHBQYXRoID0gZ2V0QXBwUm9vdFBhdGgoKVxuY29uc3QgYXJndiA9IG1pbmltaXN0KHByb2Nlc3MuYXJndi5zbGljZSgyKSwge1xuICBib29sZWFuOiBbXG4gICAgXCJ1c2UteWFyblwiLFxuICAgIFwidXNlLWJ1blwiLFxuICAgIFwiY2FzZS1zZW5zaXRpdmUtcGF0aC1maWx0ZXJpbmdcIixcbiAgICBcInJldmVyc2VcIixcbiAgICBcImhlbHBcIixcbiAgICBcInZlcnNpb25cIixcbiAgICBcImVycm9yLW9uLWZhaWxcIixcbiAgICBcImVycm9yLW9uLXdhcm5cIixcbiAgICBcImNyZWF0ZS1pc3N1ZVwiLFxuICAgIFwicGFydGlhbFwiLFxuICAgIFwic3RyaWN0XCIsXG4gICAgXCJcIixcbiAgXSxcbiAgc3RyaW5nOiBbXCJwYXRjaC1kaXJcIiwgXCJhcHBlbmRcIiwgXCJyZWJhc2VcIl0sXG59KVxuY29uc3QgcGFja2FnZU5hbWVzID0gYXJndi5fXG5cbmNvbnNvbGUubG9nKFxuICBjaGFsay5ib2xkKFwicGF0Y2gtcGFja2FnZVwiKSxcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLXZhci1yZXF1aXJlc1xuICByZXF1aXJlKGpvaW4oX19kaXJuYW1lLCBcIi4uL3BhY2thZ2UuanNvblwiKSkudmVyc2lvbixcbilcblxuaWYgKGFyZ3YudmVyc2lvbiB8fCBhcmd2LnYpIHtcbiAgLy8gbm9vcFxufSBlbHNlIGlmIChhcmd2LmhlbHAgfHwgYXJndi5oKSB7XG4gIHByaW50SGVscCgpXG59IGVsc2Uge1xuICBjb25zdCBwYXRjaERpciA9IHNsYXNoKG5vcm1hbGl6ZSgoYXJndltcInBhdGNoLWRpclwiXSB8fCBcInBhdGNoZXNcIikgKyBzZXApKVxuICBpZiAocGF0Y2hEaXIuc3RhcnRzV2l0aChcIi9cIikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCItLXBhdGNoLWRpciBtdXN0IGJlIGEgcmVsYXRpdmUgcGF0aFwiKVxuICB9XG4gIGlmIChcInJlYmFzZVwiIGluIGFyZ3YpIHtcbiAgICBpZiAoIWFyZ3YucmViYXNlKSB7XG4gICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgY2hhbGsucmVkKFxuICAgICAgICAgIFwiWW91IG11c3Qgc3BlY2lmeSBhIHBhdGNoIGZpbGUgbmFtZSBvciBudW1iZXIgd2hlbiByZWJhc2luZyBwYXRjaGVzXCIsXG4gICAgICAgICksXG4gICAgICApXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gICAgaWYgKHBhY2thZ2VOYW1lcy5sZW5ndGggIT09IDEpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjaGFsay5yZWQoXG4gICAgICAgICAgXCJZb3UgbXVzdCBzcGVjaWZ5IGV4YWN0bHkgb25lIHBhY2thZ2UgbmFtZSB3aGVuIHJlYmFzaW5nIHBhdGNoZXNcIixcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICAgIHByb2Nlc3MuZXhpdCgxKVxuICAgIH1cbiAgICByZWJhc2Uoe1xuICAgICAgYXBwUGF0aCxcbiAgICAgIHBhY2thZ2VQYXRoU3BlY2lmaWVyOiBwYWNrYWdlTmFtZXNbMF0sXG4gICAgICBwYXRjaERpcixcbiAgICAgIHRhcmdldFBhdGNoOiBhcmd2LnJlYmFzZSxcbiAgICB9KVxuICB9IGVsc2UgaWYgKHBhY2thZ2VOYW1lcy5sZW5ndGgpIHtcbiAgICBjb25zdCBpbmNsdWRlUGF0aHMgPSBtYWtlUmVnRXhwKFxuICAgICAgYXJndi5pbmNsdWRlLFxuICAgICAgXCJpbmNsdWRlXCIsXG4gICAgICAvLiovLFxuICAgICAgYXJndltcImNhc2Utc2Vuc2l0aXZlLXBhdGgtZmlsdGVyaW5nXCJdLFxuICAgIClcbiAgICBjb25zdCBleGNsdWRlUGF0aHMgPSBtYWtlUmVnRXhwKFxuICAgICAgYXJndi5leGNsdWRlLFxuICAgICAgXCJleGNsdWRlXCIsXG4gICAgICAvXnBhY2thZ2VcXC5qc29uJC8sXG4gICAgICBhcmd2W1wiY2FzZS1zZW5zaXRpdmUtcGF0aC1maWx0ZXJpbmdcIl0sXG4gICAgKVxuICAgIGNvbnN0IHBhY2thZ2VNYW5hZ2VyID0gZGV0ZWN0UGFja2FnZU1hbmFnZXIoXG4gICAgICBhcHBQYXRoLFxuICAgICAgYXJndltcInVzZS15YXJuXCJdID8gXCJ5YXJuXCIgOiBhcmd2W1widXNlLWJ1blwiXSA/IFwiYnVuXCIgOiBudWxsLFxuICAgIClcbiAgICBjb25zdCBjcmVhdGVJc3N1ZSA9IGFyZ3ZbXCJjcmVhdGUtaXNzdWVcIl1cbiAgICAvLyBSdW4gc2VxdWVudGlhbGx5IHNvIG11bHRpcGxlIHBhY2thZ2VzIHByb2R1Y2UgZGV0ZXJtaW5pc3RpYyBvdXRwdXRcbiAgICAvLyAocGFyYWxsZWwgYXN5bmMgbWFrZXMgYHByb2Nlc3MuZXhpdCgxKWAgZXhpdHMgZHVyaW5nIGVycm9yIHBhdGhzIHJhY3kpLlxuICAgIDsoYXN5bmMgKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBwYWNrYWdlUGF0aFNwZWNpZmllciBvZiBwYWNrYWdlTmFtZXMpIHtcbiAgICAgICAgYXdhaXQgbWFrZVBhdGNoKHtcbiAgICAgICAgICBwYWNrYWdlUGF0aFNwZWNpZmllcixcbiAgICAgICAgICBhcHBQYXRoLFxuICAgICAgICAgIHBhY2thZ2VNYW5hZ2VyLFxuICAgICAgICAgIGluY2x1ZGVQYXRocyxcbiAgICAgICAgICBleGNsdWRlUGF0aHMsXG4gICAgICAgICAgcGF0Y2hEaXIsXG4gICAgICAgICAgY3JlYXRlSXNzdWUsXG4gICAgICAgICAgbW9kZTpcbiAgICAgICAgICAgIFwiYXBwZW5kXCIgaW4gYXJndlxuICAgICAgICAgICAgICA/IHsgdHlwZTogXCJhcHBlbmRcIiwgbmFtZTogYXJndi5hcHBlbmQgfHwgdW5kZWZpbmVkIH1cbiAgICAgICAgICAgICAgOiB7IHR5cGU6IFwib3ZlcndyaXRlX2xhc3RcIiB9LFxuICAgICAgICAgIHN0cmljdDogISFhcmd2LnN0cmljdCxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KSgpXG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coXCJBcHBseWluZyBwYXRjaGVzLi4uXCIpXG4gICAgY29uc3QgcmV2ZXJzZSA9ICEhYXJndltcInJldmVyc2VcIl1cbiAgICAvLyBkb24ndCB3YW50IHRvIGV4aXQoMSkgb24gcG9zdGluc3RhbGwgbG9jYWxseS5cbiAgICAvLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2RzMzAwL3BhdGNoLXBhY2thZ2UvaXNzdWVzLzg2XG4gICAgY29uc3Qgc2hvdWxkRXhpdFdpdGhFcnJvciA9XG4gICAgICAhIWFyZ3ZbXCJlcnJvci1vbi1mYWlsXCJdIHx8XG4gICAgICAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiICYmIGlzQ0kpIHx8XG4gICAgICAoaXNDSSAmJiAhcHJvY2Vzcy5lbnYuUEFUQ0hfUEFDS0FHRV9JTlRFR1JBVElPTl9URVNUKSB8fFxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiXG5cbiAgICBjb25zdCBzaG91bGRFeGl0V2l0aFdhcm5pbmcgPSAhIWFyZ3ZbXCJlcnJvci1vbi13YXJuXCJdXG5cbiAgICBhcHBseVBhdGNoZXNGb3JBcHAoe1xuICAgICAgYXBwUGF0aCxcbiAgICAgIHJldmVyc2UsXG4gICAgICBwYXRjaERpcixcbiAgICAgIHNob3VsZEV4aXRXaXRoRXJyb3IsXG4gICAgICBzaG91bGRFeGl0V2l0aFdhcm5pbmcsXG4gICAgICBiZXN0RWZmb3J0OiBhcmd2LnBhcnRpYWwsXG4gICAgfSlcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmludEhlbHAoKSB7XG4gIGNvbnNvbGUubG9nKGBcblVzYWdlOlxuXG4gIDEuIFBhdGNoaW5nIHBhY2thZ2VzXG4gID09PT09PT09PT09PT09PT09PT09XG5cbiAgICAke2NoYWxrLmJvbGQoXCJwYXRjaC1wYWNrYWdlXCIpfVxuXG4gIFdpdGhvdXQgYXJndW1lbnRzLCB0aGUgJHtjaGFsay5ib2xkKFxuICAgIFwicGF0Y2gtcGFja2FnZVwiLFxuICApfSBjb21tYW5kIHdpbGwgYXR0ZW1wdCB0byBmaW5kIGFuZCBhcHBseVxuICBwYXRjaCBmaWxlcyB0byB5b3VyIHByb2plY3QuIEl0IGxvb2tzIGZvciBmaWxlcyBuYW1lZCBsaWtlXG5cbiAgICAgLi9wYXRjaGVzLzxwYWNrYWdlLW5hbWU+Kzx2ZXJzaW9uPi5wYXRjaFxuXG4gIE9wdGlvbnM6XG5cbiAgICAke2NoYWxrLmJvbGQoXCItLXBhdGNoLWRpciA8ZGlybmFtZT5cIil9XG5cbiAgICAgIFNwZWNpZnkgdGhlIG5hbWUgZm9yIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIHBhdGNoIGZpbGVzIGFyZSBsb2NhdGVkLlxuXG4gICAgJHtjaGFsay5ib2xkKFwiLS1lcnJvci1vbi1mYWlsXCIpfVxuXG4gICAgICBGb3JjZXMgcGF0Y2gtcGFja2FnZSB0byBleGl0IHdpdGggY29kZSAxIGFmdGVyIGZhaWxpbmcuXG5cbiAgICAgIFdoZW4gcnVubmluZyBsb2NhbGx5IHBhdGNoLXBhY2thZ2UgYWx3YXlzIGV4aXRzIHdpdGggMCBieSBkZWZhdWx0LlxuICAgICAgVGhpcyBoYXBwZW5zIGV2ZW4gYWZ0ZXIgZmFpbGluZyB0byBhcHBseSBwYXRjaGVzIGJlY2F1c2Ugb3RoZXJ3aXNlXG4gICAgICB5YXJuLmxvY2sgYW5kIHBhY2thZ2UuanNvbiBtaWdodCBnZXQgb3V0IG9mIHN5bmMgd2l0aCBub2RlX21vZHVsZXMsXG4gICAgICB3aGljaCBjYW4gYmUgdmVyeSBjb25mdXNpbmcuXG5cbiAgICAgIC0tZXJyb3Itb24tZmFpbCBpcyAke2NoYWxrLmJvbGQoXCJzd2l0Y2hlZCBvblwiKX0gYnkgZGVmYXVsdCBvbiBDSS5cblxuICAgICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kczMwMC9wYXRjaC1wYWNrYWdlL2lzc3Vlcy84NiBmb3IgYmFja2dyb3VuZC5cblxuICAgICR7Y2hhbGsuYm9sZChcIi0tZXJyb3Itb24td2FyblwiKX1cblxuICAgICAgRm9yY2VzIHBhdGNoLXBhY2thZ2UgdG8gZXhpdCB3aXRoIGNvZGUgMSBhZnRlciB3YXJuaW5nLlxuXG4gICAgICBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2RzMzAwL3BhdGNoLXBhY2thZ2UvaXNzdWVzLzMxNCBmb3IgYmFja2dyb3VuZC5cblxuICAgICR7Y2hhbGsuYm9sZChcIi0tcmV2ZXJzZVwiKX1cblxuICAgICAgVW4tYXBwbGllcyBhbGwgcGF0Y2hlcy5cblxuICAgICAgTm90ZSB0aGF0IHRoaXMgd2lsbCBmYWlsIGlmIHRoZSBwYXRjaGVkIGZpbGVzIGhhdmUgY2hhbmdlZCBzaW5jZSBiZWluZ1xuICAgICAgcGF0Y2hlZC4gSW4gdGhhdCBjYXNlLCB5b3UnbGwgcHJvYmFibHkgbmVlZCB0byByZS1pbnN0YWxsICdub2RlX21vZHVsZXMnLlxuXG4gICAgICBUaGlzIG9wdGlvbiB3YXMgYWRkZWQgdG8gaGVscCBwZW9wbGUgdXNpbmcgQ2lyY2xlQ0kgYXZvaWQgYW4gaXNzdWUgYXJvdW5kIGNhY2hpbmdcbiAgICAgIGFuZCBwYXRjaCBmaWxlIHVwZGF0ZXMgKGh0dHBzOi8vZ2l0aHViLmNvbS9kczMwMC9wYXRjaC1wYWNrYWdlL2lzc3Vlcy8zNyksXG4gICAgICBidXQgbWlnaHQgYmUgdXNlZnVsIGluIG90aGVyIGNvbnRleHRzIHRvby5cblxuXG4gIDIuIENyZWF0aW5nIHBhdGNoIGZpbGVzXG4gID09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgICAke2NoYWxrLmJvbGQoXCJwYXRjaC1wYWNrYWdlXCIpfSA8cGFja2FnZS1uYW1lPiR7Y2hhbGsuaXRhbGljKFxuICAgICAgXCJbIDxwYWNrYWdlLW5hbWU+XVwiLFxuICAgICl9XG5cbiAgV2hlbiBnaXZlbiBwYWNrYWdlIG5hbWVzIGFzIGFyZ3VtZW50cywgcGF0Y2gtcGFja2FnZSB3aWxsIGNyZWF0ZSBwYXRjaCBmaWxlc1xuICBiYXNlZCBvbiBhbnkgY2hhbmdlcyB5b3UndmUgbWFkZSB0byB0aGUgdmVyc2lvbnMgaW5zdGFsbGVkIGJ5IHlhcm4vbnBtLlxuXG4gIE9wdGlvbnM6XG5cbiAgICAke2NoYWxrLmJvbGQoXCItLWNyZWF0ZS1pc3N1ZVwiKX1cblxuICAgICAgIEZvciBwYWNrYWdlcyB3aG9zZSBzb3VyY2UgaXMgaG9zdGVkIG9uIEdpdEh1YiB0aGlzIG9wdGlvbiBvcGVucyBhIHdlYlxuICAgICAgIGJyb3dzZXIgd2l0aCBhIGRyYWZ0IGlzc3VlIGJhc2VkIG9uIHlvdXIgZGlmZi5cblxuICAgICR7Y2hhbGsuYm9sZChcIi0tdXNlLXlhcm5cIil9XG5cbiAgICAgICAgQnkgZGVmYXVsdCwgcGF0Y2gtcGFja2FnZSBjaGVja3Mgd2hldGhlciB5b3UgdXNlIG5wbSwgeWFybiBvciBidW4gYmFzZWQgb25cbiAgICAgICAgd2hpY2ggbG9ja2ZpbGUgeW91IGhhdmUuIElmIHlvdSBoYXZlIG11bHRpcGxlIGxvY2tmaWxlcywgaXQgdXNlcyBucG0gYnlcbiAgICAgICAgZGVmYXVsdCAoaW4gY2FzZXMgd2hlcmUgbnBtIGlzIG5vdCBhdmFpbGFibGUsIGl0IHdpbGwgcmVzb3J0IHRvIHlhcm4pLiBTZXRcbiAgICAgICAgdGhpcyBvcHRpb24gdG8gb3ZlcnJpZGUgdGhhdCBkZWZhdWx0IGFuZCBhbHdheXMgdXNlIHlhcm4uXG5cbiAgICAke2NoYWxrLmJvbGQoXCItLXVzZS1idW5cIil9XG5cbiAgICAgICAgU2ltaWxhciB0byAtLXVzZS15YXJuLCBidXQgZm9yIGJ1bi4gSWYgYm90aCAtLXVzZS15YXJuIGFuZCAtLXVzZS1idW4gYXJlXG4gICAgICAgIHNwZWNpZmllZCwgLS11c2UteWFybiB0YWtlcyBwcmVjZWRlbmNlLlxuXG4gICAgJHtjaGFsay5ib2xkKFwiLS1leGNsdWRlIDxyZWdleHA+XCIpfVxuXG4gICAgICAgIElnbm9yZSBwYXRocyBtYXRjaGluZyB0aGUgcmVnZXhwIHdoZW4gY3JlYXRpbmcgcGF0Y2ggZmlsZXMuXG4gICAgICAgIFBhdGhzIGFyZSByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXIgb2YgdGhlIHBhY2thZ2UgdG8gYmUgcGF0Y2hlZC5cblxuICAgICAgICBEZWZhdWx0OiAncGFja2FnZVxcXFwuanNvbiQnXG5cbiAgICAke2NoYWxrLmJvbGQoXCItLXN0cmljdFwiKX1cblxuICAgICAgICBPbmx5IGluY2x1ZGUgZmlsZXMgdGhhdCB3ZXJlIHBhcnQgb2YgdGhlIG9yaWdpbmFsIHB1Ymxpc2hlZCBwYWNrYWdlXG4gICAgICAgIGluIHRoZSByZXN1bHRpbmcgcGF0Y2guIE5ldyBmaWxlcyB0aGF0IGFwcGVhcmVkIGluIHlvdXIgbm9kZV9tb2R1bGVzXG4gICAgICAgIGJ1dCB3ZXJlIG5vdCBpbiB0aGUgdXBzdHJlYW0gdGFyYmFsbCBhcmUgZXhjbHVkZWQuIFRoaXMgcHJldmVudHNcbiAgICAgICAgJy0tLSAvZGV2L251bGwnIChcIm5ldyBmaWxlXCIpIGVudHJpZXMgY2F1c2VkIGJ5IGluc3RhbGwtdGltZSBmaWxlXG4gICAgICAgIGRyaWZ0LiBSZXF1aXJlcyBuZXR3b3JrIGFjY2VzcyB0byBmZXRjaCB0aGUgb3JpZ2luYWwgdGFyYmFsbCAob3JcbiAgICAgICAgYSBmaWxlOi8vIHJlc29sdXRpb24gaW4gdGhlIGxvY2tmaWxlKS4gRmFsbHMgYmFjayB0byBhIHdhcm5pbmcgaWZcbiAgICAgICAgdGhlIGJhc2VsaW5lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLlxuXG4gICAgJHtjaGFsay5ib2xkKFwiLS1pbmNsdWRlIDxyZWdleHA+XCIpfVxuXG4gICAgICAgIE9ubHkgY29uc2lkZXIgcGF0aHMgbWF0Y2hpbmcgdGhlIHJlZ2V4cCB3aGVuIGNyZWF0aW5nIHBhdGNoIGZpbGVzLlxuICAgICAgICBQYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIHJvb3QgZGlyIG9mIHRoZSBwYWNrYWdlIHRvIGJlIHBhdGNoZWQuXG5cbiAgICAgICAgRGVmYXVsdCAnLionXG5cbiAgICAke2NoYWxrLmJvbGQoXCItLWNhc2Utc2Vuc2l0aXZlLXBhdGgtZmlsdGVyaW5nXCIpfVxuXG4gICAgICAgIE1ha2UgcmVnZXhwcyB1c2VkIGluIC0taW5jbHVkZSBvciAtLWV4Y2x1ZGUgZmlsdGVycyBjYXNlLXNlbnNpdGl2ZS5cblxuICAgICR7Y2hhbGsuYm9sZChcIi0tcGF0Y2gtZGlyXCIpfVxuXG4gICAgICAgIFNwZWNpZnkgdGhlIG5hbWUgZm9yIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gcHV0IHRoZSBwYXRjaCBmaWxlcy5cbmApXG59XG4iXX0=
|