@mnaoumov/typescript-dev-toolkit 3.13.1 → 5.0.0
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/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.cjs +3 -3
- package/dist/lib/cjs/bundlers/esbuild-impl/preprocess-plugin.d.cts +1 -1
- package/dist/lib/cjs/docs-site/api-doc-link-rendering.cjs +1 -1
- package/dist/lib/cjs/docs-site/api-doc-settings.cjs +1 -1
- package/dist/lib/cjs/docs-site/api-doc-types.cjs +1 -1
- package/dist/lib/cjs/docs-site/api-doc-types.d.cts +57 -57
- package/dist/lib/cjs/docs-site/link-check.cjs +1 -1
- package/dist/lib/cjs/docs-site/link-check.d.cts +8 -8
- package/dist/lib/cjs/docs-site/og-images.cjs +1 -1
- package/dist/lib/cjs/docs-site/satteri-github-alerts.cjs +1 -1
- package/dist/lib/cjs/docs-site/unrendered-alerts.cjs +1 -1
- package/dist/lib/cjs/docs-site/unrendered-alerts.d.cts +2 -2
- package/dist/lib/cjs/library-build.cjs +8 -8
- package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-agnostic-core-boundary.d.cts +2 -2
- package/dist/lib/cjs/linters/eslint-config.cjs +8 -6
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-no-restricted-syntax.d.cts +2 -2
- package/dist/lib/cjs/linters/eslint-rules/in-house-plugin.cjs +5 -3
- package/dist/lib/cjs/linters/eslint-rules/index.cjs +7 -4
- package/dist/lib/cjs/linters/eslint-rules/index.d.cts +2 -1
- package/dist/lib/cjs/linters/eslint-rules/no-keyword-identifiers.cjs +144 -0
- package/dist/lib/cjs/linters/eslint-rules/no-keyword-identifiers.d.cts +11 -0
- package/dist/lib/cjs/linters/eslint-rules/no-unresolved-jsdoc-link.cjs +5 -5
- package/dist/lib/cjs/linters/eslint-rules/no-unused-params-members.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-rules/no-used-underscore-variables.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-rules/readonly-interface-members.cjs +68 -0
- package/dist/lib/cjs/linters/eslint-rules/readonly-interface-members.d.cts +18 -0
- package/dist/lib/cjs/linters/eslint-rules/require-method-template.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-rules/require-super-call.cjs +1 -1
- package/dist/lib/cjs/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.cts +1 -1
- package/dist/lib/cjs/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.cts +279 -279
- package/dist/lib/cjs/linters/over-exposure.cjs +1 -1
- package/dist/lib/cjs/linters/over-exposure.d.cts +6 -6
- package/dist/lib/cjs/npm.cjs +1 -1
- package/dist/lib/cjs/npm.d.cts +1 -1
- package/dist/lib/cjs/released-issues.cjs +4 -4
- package/dist/lib/cjs/upstream-sync.cjs +3 -3
- package/dist/lib/cjs/upstream-sync.d.cts +31 -31
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.d.mts +1 -1
- package/dist/lib/esm/bundlers/esbuild-impl/preprocess-plugin.mjs +3 -3
- package/dist/lib/esm/docs-site/api-doc-link-rendering.mjs +1 -1
- package/dist/lib/esm/docs-site/api-doc-settings.mjs +1 -1
- package/dist/lib/esm/docs-site/api-doc-types.d.mts +57 -57
- package/dist/lib/esm/docs-site/link-check.d.mts +8 -8
- package/dist/lib/esm/docs-site/link-check.mjs +1 -1
- package/dist/lib/esm/docs-site/og-images.mjs +1 -1
- package/dist/lib/esm/docs-site/satteri-github-alerts.mjs +1 -1
- package/dist/lib/esm/docs-site/unrendered-alerts.d.mts +2 -2
- package/dist/lib/esm/docs-site/unrendered-alerts.mjs +1 -1
- package/dist/lib/esm/library-build.mjs +8 -8
- package/dist/lib/esm/linters/eslint-agnostic-core-boundary.d.mts +2 -2
- package/dist/lib/esm/linters/eslint-agnostic-core-boundary.mjs +1 -1
- package/dist/lib/esm/linters/eslint-config.mjs +8 -6
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.d.mts +2 -2
- package/dist/lib/esm/linters/eslint-no-restricted-syntax.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/in-house-plugin.mjs +5 -3
- package/dist/lib/esm/linters/eslint-rules/index.d.mts +2 -1
- package/dist/lib/esm/linters/eslint-rules/index.mjs +5 -3
- package/dist/lib/esm/linters/eslint-rules/no-keyword-identifiers.d.mts +11 -0
- package/dist/lib/esm/linters/eslint-rules/no-keyword-identifiers.mjs +120 -0
- package/dist/lib/esm/linters/eslint-rules/no-unresolved-jsdoc-link.mjs +5 -5
- package/dist/lib/esm/linters/eslint-rules/no-unused-params-members.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/no-used-underscore-variables.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/readonly-interface-members.d.mts +18 -0
- package/dist/lib/esm/linters/eslint-rules/readonly-interface-members.mjs +43 -0
- package/dist/lib/esm/linters/eslint-rules/require-method-template.mjs +1 -1
- package/dist/lib/esm/linters/eslint-rules/require-super-call.mjs +1 -1
- package/dist/lib/esm/linters/eslint-types/@types/@eslint-community__eslint-plugin-eslint-comments__configs.d.mts +1 -1
- package/dist/lib/esm/linters/markdownlint-types/@types/markdownlint-cli2-config-schema.d.mts +279 -279
- package/dist/lib/esm/linters/over-exposure.d.mts +6 -6
- package/dist/lib/esm/linters/over-exposure.mjs +1 -1
- package/dist/lib/esm/npm.d.mts +1 -1
- package/dist/lib/esm/npm.mjs +1 -1
- package/dist/lib/esm/released-issues.mjs +4 -4
- package/dist/lib/esm/upstream-sync.d.mts +31 -31
- package/dist/lib/esm/upstream-sync.mjs +3 -3
- package/linters/eslint-rules/no-keyword-identifiers/package.json +6 -0
- package/linters/eslint-rules/readonly-interface-members/package.json +6 -0
- package/package.json +1 -1
- package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.cjs +0 -103
- package/dist/lib/cjs/linters/eslint-rules/readonly-params-options-result-members.d.cts +0 -20
- package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.d.mts +0 -20
- package/dist/lib/esm/linters/eslint-rules/readonly-params-options-result-members.mjs +0 -78
- package/linters/eslint-rules/readonly-params-options-result-members/package.json +0 -6
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/// <reference path="../../library-references.d.cts" />
|
|
2
2
|
export * as 'in-house-plugin' from './in-house-plugin.cjs';
|
|
3
3
|
export * as 'no-async-callback-to-unsafe-return' from './no-async-callback-to-unsafe-return.cjs';
|
|
4
|
+
export * as 'no-keyword-identifiers' from './no-keyword-identifiers.cjs';
|
|
4
5
|
export * as 'no-unresolved-jsdoc-link' from './no-unresolved-jsdoc-link.cjs';
|
|
5
6
|
export * as 'no-unused-params-members' from './no-unused-params-members.cjs';
|
|
6
7
|
export * as 'no-used-underscore-variables' from './no-used-underscore-variables.cjs';
|
|
7
8
|
export * as 'params-options-name-match' from './params-options-name-match.cjs';
|
|
8
9
|
export * as 'prefer-logical-operator-over-ternary' from './prefer-logical-operator-over-ternary.cjs';
|
|
9
10
|
export * as 'prefer-noop-async' from './prefer-noop-async.cjs';
|
|
10
|
-
export * as 'readonly-
|
|
11
|
+
export * as 'readonly-interface-members' from './readonly-interface-members.cjs';
|
|
11
12
|
export * as 'require-method-template' from './require-method-template.cjs';
|
|
12
13
|
export * as 'require-super-call' from './require-super-call.cjs';
|
|
13
14
|
export * as 'rule-tester-helper' from './rule-tester-helper.cjs';
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
(function () {
|
|
6
|
+
function ensureBrowserProcess() {
|
|
7
|
+
const browserProcess = {
|
|
8
|
+
browser: true,
|
|
9
|
+
cwd() {
|
|
10
|
+
return '/';
|
|
11
|
+
},
|
|
12
|
+
env: {},
|
|
13
|
+
platform: 'android'
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const existingProcess = globalThis.process;
|
|
17
|
+
|
|
18
|
+
if (!existingProcess) {
|
|
19
|
+
globalThis.process = browserProcess;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (existingProcess.versions?.node) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const existingProcessRecord = existingProcess;
|
|
28
|
+
|
|
29
|
+
for (const [key, value] of Object.entries(browserProcess)) {
|
|
30
|
+
existingProcessRecord[key] ??= value;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
existingProcessRecord['browser'] = true;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
ensureBrowserProcess();
|
|
37
|
+
})();
|
|
38
|
+
|
|
39
|
+
"use strict";
|
|
40
|
+
var __defProp = Object.defineProperty;
|
|
41
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
42
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
43
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
44
|
+
var __export = (target, all) => {
|
|
45
|
+
for (var name in all)
|
|
46
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
47
|
+
};
|
|
48
|
+
var __copyProps = (to, from, except, desc) => {
|
|
49
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
50
|
+
for (let key of __getOwnPropNames(from))
|
|
51
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
52
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
53
|
+
}
|
|
54
|
+
return to;
|
|
55
|
+
};
|
|
56
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
57
|
+
var no_keyword_identifiers_exports = {};
|
|
58
|
+
__export(no_keyword_identifiers_exports, {
|
|
59
|
+
noKeywordIdentifiers: () => noKeywordIdentifiers
|
|
60
|
+
});
|
|
61
|
+
module.exports = __toCommonJS(no_keyword_identifiers_exports);
|
|
62
|
+
var import_type_guards = require('@mnaoumov/typescript-lib/type-guards');
|
|
63
|
+
const RESTRICTED_NAMES = /* @__PURE__ */ new Set([
|
|
64
|
+
"arguments",
|
|
65
|
+
"bigint",
|
|
66
|
+
"boolean",
|
|
67
|
+
"event",
|
|
68
|
+
"function",
|
|
69
|
+
"module",
|
|
70
|
+
"number",
|
|
71
|
+
"object",
|
|
72
|
+
"string",
|
|
73
|
+
"symbol",
|
|
74
|
+
"undefined"
|
|
75
|
+
]);
|
|
76
|
+
const noKeywordIdentifiers = {
|
|
77
|
+
create(context) {
|
|
78
|
+
const sourceCode = context.sourceCode;
|
|
79
|
+
return {
|
|
80
|
+
"Program:exit"() {
|
|
81
|
+
const scopes = sourceCode.scopeManager.scopes;
|
|
82
|
+
const reported = /* @__PURE__ */ new Set();
|
|
83
|
+
for (const scope of scopes) {
|
|
84
|
+
for (const variable of scope.variables) {
|
|
85
|
+
if (!RESTRICTED_NAMES.has(variable.name)) {
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const replacement = `$${variable.name}`;
|
|
89
|
+
const nodes = [.../* @__PURE__ */ new Set([...variable.identifiers, ...variable.references.map((reference) => reference.identifier)])];
|
|
90
|
+
const canRename = variable.defs.every((definition) => definition.type !== "ClassName") && scopes.every(
|
|
91
|
+
(candidate) => candidate.variables.every((binding) => binding.name !== replacement) && candidate.through.every((reference) => reference.identifier.name !== replacement)
|
|
92
|
+
) && nodes.every(
|
|
93
|
+
(node) => sourceCode.getAncestors(node).every(
|
|
94
|
+
(ancestor) => ![
|
|
95
|
+
"ExportDefaultDeclaration",
|
|
96
|
+
"ExportNamedDeclaration",
|
|
97
|
+
"ExportSpecifier",
|
|
98
|
+
"ImportSpecifier",
|
|
99
|
+
"Property",
|
|
100
|
+
"TSParameterProperty"
|
|
101
|
+
].includes(ancestor.type)
|
|
102
|
+
)
|
|
103
|
+
);
|
|
104
|
+
for (const identifier of variable.identifiers) {
|
|
105
|
+
if (reported.has(identifier)) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
reported.add(identifier);
|
|
109
|
+
context.report({
|
|
110
|
+
data: { name: variable.name, replacement },
|
|
111
|
+
messageId: "restricted",
|
|
112
|
+
node: identifier,
|
|
113
|
+
suggest: canRename ? [{
|
|
114
|
+
data: { replacement },
|
|
115
|
+
fix: (fixer) => nodes.map((node) => {
|
|
116
|
+
const token = sourceCode.getFirstToken(node);
|
|
117
|
+
(0, import_type_guards.assertNonNullable)(token, "A binding identifier always has a token");
|
|
118
|
+
return fixer.replaceText(token, replacement);
|
|
119
|
+
}),
|
|
120
|
+
messageId: "rename"
|
|
121
|
+
}] : []
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
},
|
|
129
|
+
meta: {
|
|
130
|
+
docs: { description: "Require a $ prefix on bare keyword and colliding global binding names" },
|
|
131
|
+
hasSuggestions: true,
|
|
132
|
+
messages: {
|
|
133
|
+
rename: 'Rename this binding and its references to "{{ replacement }}".',
|
|
134
|
+
restricted: 'Rename "{{ name }}" to "{{ replacement }}". Preserve any public contract when renaming.'
|
|
135
|
+
},
|
|
136
|
+
schema: [],
|
|
137
|
+
type: "suggestion"
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
141
|
+
0 && (module.exports = {
|
|
142
|
+
noKeywordIdentifiers
|
|
143
|
+
});
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby1rZXl3b3JkLWlkZW50aWZpZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBSZWplY3QgYmFyZSBrZXl3b3JkIGFuZCBjb2xsaWRpbmcgZ2xvYmFsIG5hbWVzIGluIGRlY2xhcmVkIGJpbmRpbmdzLlxuICovXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG5pbXBvcnQgeyBhc3NlcnROb25OdWxsYWJsZSB9IGZyb20gJ0BtbmFvdW1vdi90eXBlc2NyaXB0LWxpYi90eXBlLWd1YXJkcyc7XG5cbmNvbnN0IFJFU1RSSUNURURfTkFNRVMgPSBuZXcgU2V0KFtcbiAgJ2FyZ3VtZW50cycsXG4gICdiaWdpbnQnLFxuICAnYm9vbGVhbicsXG4gICdldmVudCcsXG4gICdmdW5jdGlvbicsXG4gICdtb2R1bGUnLFxuICAnbnVtYmVyJyxcbiAgJ29iamVjdCcsXG4gICdzdHJpbmcnLFxuICAnc3ltYm9sJyxcbiAgJ3VuZGVmaW5lZCdcbl0pO1xuXG4vKipcbiAqIERpc2FsbG93cyBiYXJlIGtleXdvcmQgbmFtZXMsIHdpdGggY29uc2VydmF0aXZlLCBzY29wZS1hd2FyZSByZW5hbWUgc3VnZ2VzdGlvbnMgZm9yIGxvY2FsIGJpbmRpbmdzLlxuICovXG5leHBvcnQgY29uc3Qgbm9LZXl3b3JkSWRlbnRpZmllcnM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBzb3VyY2VDb2RlID0gY29udGV4dC5zb3VyY2VDb2RlO1xuICAgIHJldHVybiB7XG4gICAgICAnUHJvZ3JhbTpleGl0JygpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc2NvcGVzID0gc291cmNlQ29kZS5zY29wZU1hbmFnZXIuc2NvcGVzO1xuICAgICAgICBjb25zdCByZXBvcnRlZCA9IG5ldyBTZXQ8dW5rbm93bj4oKTtcbiAgICAgICAgZm9yIChjb25zdCBzY29wZSBvZiBzY29wZXMpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IHZhcmlhYmxlIG9mIHNjb3BlLnZhcmlhYmxlcykge1xuICAgICAgICAgICAgaWYgKCFSRVNUUklDVEVEX05BTUVTLmhhcyh2YXJpYWJsZS5uYW1lKSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gYCQke3ZhcmlhYmxlLm5hbWV9YDtcbiAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gWy4uLm5ldyBTZXQoWy4uLnZhcmlhYmxlLmlkZW50aWZpZXJzLCAuLi52YXJpYWJsZS5yZWZlcmVuY2VzLm1hcCgocmVmZXJlbmNlKSA9PiByZWZlcmVuY2UuaWRlbnRpZmllcildKV07XG4gICAgICAgICAgICBjb25zdCBjYW5SZW5hbWUgPSB2YXJpYWJsZS5kZWZzLmV2ZXJ5KChkZWZpbml0aW9uKSA9PiBkZWZpbml0aW9uLnR5cGUgIT09ICdDbGFzc05hbWUnKVxuICAgICAgICAgICAgICAmJiBzY29wZXMuZXZlcnkoKGNhbmRpZGF0ZSkgPT5cbiAgICAgICAgICAgICAgICBjYW5kaWRhdGUudmFyaWFibGVzLmV2ZXJ5KChiaW5kaW5nKSA9PiBiaW5kaW5nLm5hbWUgIT09IHJlcGxhY2VtZW50KVxuICAgICAgICAgICAgICAgICYmIGNhbmRpZGF0ZS50aHJvdWdoLmV2ZXJ5KChyZWZlcmVuY2UpID0+IHJlZmVyZW5jZS5pZGVudGlmaWVyLm5hbWUgIT09IHJlcGxhY2VtZW50KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICYmIG5vZGVzLmV2ZXJ5KChub2RlKSA9PlxuICAgICAgICAgICAgICAgIHNvdXJjZUNvZGUuZ2V0QW5jZXN0b3JzKG5vZGUpLmV2ZXJ5KChhbmNlc3RvcikgPT5cbiAgICAgICAgICAgICAgICAgICFbXG4gICAgICAgICAgICAgICAgICAgICdFeHBvcnREZWZhdWx0RGVjbGFyYXRpb24nLFxuICAgICAgICAgICAgICAgICAgICAnRXhwb3J0TmFtZWREZWNsYXJhdGlvbicsXG4gICAgICAgICAgICAgICAgICAgICdFeHBvcnRTcGVjaWZpZXInLFxuICAgICAgICAgICAgICAgICAgICAnSW1wb3J0U3BlY2lmaWVyJyxcbiAgICAgICAgICAgICAgICAgICAgJ1Byb3BlcnR5JyxcbiAgICAgICAgICAgICAgICAgICAgJ1RTUGFyYW1ldGVyUHJvcGVydHknXG4gICAgICAgICAgICAgICAgICBdLmluY2x1ZGVzKGFuY2VzdG9yLnR5cGUpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgZm9yIChjb25zdCBpZGVudGlmaWVyIG9mIHZhcmlhYmxlLmlkZW50aWZpZXJzKSB7XG4gICAgICAgICAgICAgIGlmIChyZXBvcnRlZC5oYXMoaWRlbnRpZmllcikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXBvcnRlZC5hZGQoaWRlbnRpZmllcik7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7IG5hbWU6IHZhcmlhYmxlLm5hbWUsIHJlcGxhY2VtZW50IH0sXG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiAncmVzdHJpY3RlZCcsXG4gICAgICAgICAgICAgICAgbm9kZTogaWRlbnRpZmllcixcbiAgICAgICAgICAgICAgICBzdWdnZXN0OiBjYW5SZW5hbWVcbiAgICAgICAgICAgICAgICAgID8gW3tcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogeyByZXBsYWNlbWVudCB9LFxuICAgICAgICAgICAgICAgICAgICBmaXg6IChmaXhlcik6IFJ1bGUuRml4W10gPT5cbiAgICAgICAgICAgICAgICAgICAgICBub2Rlcy5tYXAoKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gc291cmNlQ29kZS5nZXRGaXJzdFRva2VuKG5vZGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0Tm9uTnVsbGFibGUodG9rZW4sICdBIGJpbmRpbmcgaWRlbnRpZmllciBhbHdheXMgaGFzIGEgdG9rZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmaXhlci5yZXBsYWNlVGV4dCh0b2tlbiwgcmVwbGFjZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlSWQ6ICdyZW5hbWUnXG4gICAgICAgICAgICAgICAgICB9XVxuICAgICAgICAgICAgICAgICAgOiBbXVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczogeyBkZXNjcmlwdGlvbjogJ1JlcXVpcmUgYSAkIHByZWZpeCBvbiBiYXJlIGtleXdvcmQgYW5kIGNvbGxpZGluZyBnbG9iYWwgYmluZGluZyBuYW1lcycgfSxcbiAgICBoYXNTdWdnZXN0aW9uczogdHJ1ZSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgcmVuYW1lOiAnUmVuYW1lIHRoaXMgYmluZGluZyBhbmQgaXRzIHJlZmVyZW5jZXMgdG8gXCJ7eyByZXBsYWNlbWVudCB9fVwiLicsXG4gICAgICByZXN0cmljdGVkOiAnUmVuYW1lIFwie3sgbmFtZSB9fVwiIHRvIFwie3sgcmVwbGFjZW1lbnQgfX1cIi4gUHJlc2VydmUgYW55IHB1YmxpYyBjb250cmFjdCB3aGVuIHJlbmFtaW5nLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nXG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQU9BLHlCQUFr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
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* Reject bare keyword and colliding global names in declared bindings.
|
|
6
|
+
*/
|
|
7
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
8
|
+
/**
|
|
9
|
+
* Disallows bare keyword names, with conservative, scope-aware rename suggestions for local bindings.
|
|
10
|
+
*/
|
|
11
|
+
export declare const noKeywordIdentifiers: Rule.RuleModule;
|
|
@@ -185,9 +185,9 @@ function findModuleByPathSuffix(program, checker, modulePath) {
|
|
|
185
185
|
function flattenName(name) {
|
|
186
186
|
return (0, import_typescript.isIdentifier)(name) ? [name.text] : [...flattenName(name.left), name.right.text];
|
|
187
187
|
}
|
|
188
|
-
function getMember(checker, symbol, memberName) {
|
|
188
|
+
function getMember(checker, $symbol, memberName) {
|
|
189
189
|
const escapedName = (0, import_typescript.escapeLeadingUnderscores)(memberName);
|
|
190
|
-
const target = resolveAlias(checker, symbol);
|
|
190
|
+
const target = resolveAlias(checker, $symbol);
|
|
191
191
|
const moduleExport = (target.flags & import_typescript.SymbolFlags.Module) === 0 ? void 0 : checker.tryGetMemberInModuleExports(memberName, target);
|
|
192
192
|
return moduleExport ?? target.exports?.get(escapedName) ?? target.members?.get(escapedName) ?? checker.getPropertyOfType(checker.getDeclaredTypeOfSymbol(target), memberName) ?? checker.getPropertyOfType(checker.getTypeOfSymbol(target), memberName);
|
|
193
193
|
}
|
|
@@ -247,8 +247,8 @@ function isResolvedName(params) {
|
|
|
247
247
|
const roots = [...localRoots, ...index.exportsByName.get(rootName) ?? [], findModule(program, checker, rootName, containingFileName)];
|
|
248
248
|
return roots.some((root) => !!resolveMemberPath(checker, root, memberNames));
|
|
249
249
|
}
|
|
250
|
-
function resolveAlias(checker, symbol) {
|
|
251
|
-
return (symbol.flags & import_typescript.SymbolFlags.Alias) === 0 ? symbol : checker.getAliasedSymbol(symbol);
|
|
250
|
+
function resolveAlias(checker, $symbol) {
|
|
251
|
+
return ($symbol.flags & import_typescript.SymbolFlags.Alias) === 0 ? $symbol : checker.getAliasedSymbol($symbol);
|
|
252
252
|
}
|
|
253
253
|
function resolveMemberPath(checker, root, memberNames) {
|
|
254
254
|
let current = root;
|
|
@@ -265,4 +265,4 @@ function resolveMemberPath(checker, root, memberNames) {
|
|
|
265
265
|
MESSAGE_ID,
|
|
266
266
|
noUnresolvedJsdocLink
|
|
267
267
|
});
|
|
268
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11bnJlc29sdmVkLWpzZG9jLWxpbmsudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby11bnJlc29sdmVkLWpzZG9jLWxpbmtcbiAqXG4gKiBSZXBvcnRzIGEgSlNEb2MgYGxpbmtgLCBgbGlua2NvZGVgIG9yIGBsaW5rcGxhaW5gIGlubGluZSB0YWcgd2hvc2UgdGFyZ2V0IG5vIGxvbmdlciByZXNvbHZlcyB0byBhIHN5bWJvbC5cbiAqXG4gKiBBIHJlbmFtZSBsZWF2ZXMgYHtAbGluayBPbGROYW1lfWAgYmVoaW5kIGFuZCBub3RoaW5nIGVsc2UgcmVwb3J0cyBpdDogYGpzZG9jL25vLXVuZGVmaW5lZC10eXBlc2AgZG9lcyBub3QgcmVzb2x2ZVxuICogbGluayB0YXJnZXRzLCBUU0RvYyBjaGVja3Mgb25seSB0aGUgdGFnIHN5bnRheCwgYW5kIGB0c2NgIHBhcnNlcyBKU0RvYyBsaW5rcyB3aXRob3V0IGV2ZXIgZGlhZ25vc2luZyB0aGVtLiBTbyBhIGRlYWRcbiAqIGxpbmsgc3Vydml2ZXMgdW50aWwgc29tZWJvZHkgaGFwcGVucyB0byBjbGljayBpdC5cbiAqXG4gKiBBIHRhcmdldCByZXNvbHZlcyB3aGVuIGFueSBvZiB0aGVzZSBmaW5kcyBpdCwgdHJpZWQgaW4gb3JkZXI6XG4gKlxuICogMS4gVGhlIHR5cGUgY2hlY2tlciwgYXQgdGhlIGNvbW1lbnQncyBvd24gbG9jYXRpb24sIGV4YWN0bHkgYXMgZWRpdG9yIGdvLXRvLWRlZmluaXRpb24gZG9lcyDigJQgc28gZXZlcnl0aGluZyBpblxuICogICAgc2NvcGUgdGhlcmUgcmVzb2x2ZXM6IHR5cGUgcGFyYW1ldGVycywgcGFyYW1ldGVycywgaW1wb3J0cywgYW5kIHRoZSBET00gLyBFUyBnbG9iYWxzLlxuICogMi4gQSBkZWNsYXJhdGlvbiBhbnl3aGVyZSBpbiB0aGUgc2FtZSBmaWxlIOKAlCBhIGZ1bmN0aW9uIG5lc3RlZCBpbiBhbm90aGVyLCBhIHByaXZhdGUgbWV0aG9kIOKAlCB3aGljaCBpcyBvdXQgb2ZcbiAqICAgIHNjb3BlIGF0IGEgYCpQYXJhbXNgIGludGVyZmFjZSBuYW1pbmcgaXQsIHlldCBpcyBleGFjdGx5IHdoYXQgYSByZW5hbWUgb2YgaXQgd291bGQgYnJlYWsuXG4gKiAzLiBUaGUgZXhwb3J0cyBvZiBhbnkgbW9kdWxlIGluIHRoZSBwcm9ncmFtLCBieSBuYW1lLiBBIGNvbW1lbnQgcm91dGluZWx5IG5hbWVzIGEgdHlwZSBpdHMgZmlsZSBuZXZlciBpbXBvcnRzIChhblxuICogICAgaW50ZWdyYXRpb24gdGVzdCBuYW1pbmcgdGhlIGNsYXNzIGl0IGRyaXZlcyB0aHJvdWdoIGBldmFsSW5PYnNpZGlhbmAsIGEgcmVtYXJrIG5hbWluZyBhbiBPYnNpZGlhbiBBUEkpLCBhbmQgdGhlXG4gKiAgICBBUEkgZG9jcyBnZW5lcmF0b3IgcmVzb2x2ZXMgc3VjaCBhIG5hbWUgbGlicmFyeS13aWRlIHRvby4gVGhpcyBrZWVwcyB0aGUgcnVsZSBhYm91dCBERUFEIGxpbmtzIHJhdGhlciB0aGFuXG4gKiAgICBhYm91dCBpbXBvcnRzOiBhIHJlbmFtZWQgb3IgcmVtb3ZlZCBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZCBieSBubyBtb2R1bGUsIHNvIGl0IGlzIHN0aWxsIHJlcG9ydGVkLlxuICogNC4gQSBtb2R1bGUgbmFtZWQgYnkgaXRzIHNwZWNpZmllciBvciBpdHMgcGF0aCwgaW4gYm90aCBUU0RvYyBmb3JtczogYG9ic2lkaWFuI0V2ZW50cyNvbmAgKHRoZSBwYWNrYWdlIGFzIHRoZSBmaXJzdFxuICogICAgc2VnbWVudCkgYW5kIGBlcnJvciFlcnJvclRvU3RyaW5nYCAvIGBvYnNpZGlhbi9jb21wb25lbnRzL3BsdWdpbi1nYXRlLWNvbXBvbmVudCFQbHVnaW5Db25mbGljdFNldmVyaXR5Lldhcm5gXG4gKiAgICAoYSBtb2R1bGUgcGF0aCwgZW5kaW5nIHdpdGggYCFgKSDigJQgcGx1cyBUeXBlU2NyaXB0J3Mgb3duIGBpbXBvcnQoJy4vbW9kdWxlLnRzJykuTWVtYmVyYC4gQSBwYXRoIG1hdGNoZXMgYW55XG4gKiAgICBzb3VyY2UgZmlsZSBpbiB0aGUgcHJvZ3JhbSB3aG9zZSBwYXRoIGVuZHMgd2l0aCBpdC5cbiAqXG4gKiBBZnRlciB0aGUgZmlyc3Qgc2VnbWVudCwgZWFjaCBmdXJ0aGVyIGAuYCAvIGAjYCBzZWdtZW50IGlzIGxvb2tlZCB1cCBhcyBhIG1lbWJlcjogYSBuYW1lc3BhY2Ugb3IgbW9kdWxlIGV4cG9ydCwgYVxuICogc3RhdGljIG9yIGluc3RhbmNlIG1lbWJlciwgb3IgYSBwcm9wZXJ0eSBvZiB0aGUgcHJldmlvdXMgbWVtYmVyJ3MgdHlwZSDigJQgc28gYEFwcC52YXVsdC5hZGFwdGVyYCByZXNvbHZlcy5cbiAqXG4gKiBBIGxpbmsgdGhhdCBpcyBub3QgYSBjb2RlIHJlZmVyZW5jZSBpcyBza2lwcGVkOiBhIFVSTCAoYHtAbGluayBodHRwczovL2V4YW1wbGUuY29tfWApIGFuZCBhIEpTRG9jIG5hbWVwYXRoXG4gKiAoYHtAbGluayBtb2R1bGU6Zm9vfWApIGJvdGggcGFyc2UgYXMgYSBuYW1lIGZvbGxvd2VkIGJ5IHRleHQgc3RhcnRpbmcgd2l0aCBgOmAsIGFuZCBhIGxpbmsgd2l0aCBubyBuYW1lIGhhc1xuICogbm90aGluZyB0byByZXNvbHZlLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7XG4gIENsYXNzRGVjbGFyYXRpb24sXG4gIEVudGl0eU5hbWUsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgSWRlbnRpZmllcixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIEpTRG9jTGluayxcbiAgSlNEb2NMaW5rQ29kZSxcbiAgSlNEb2NMaW5rUGxhaW4sXG4gIEpTRG9jTWVtYmVyTmFtZSxcbiAgTWV0aG9kRGVjbGFyYXRpb24sXG4gIE1ldGhvZFNpZ25hdHVyZSxcbiAgTW9kdWxlRGVjbGFyYXRpb24sXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIFByb3BlcnR5U2lnbmF0dXJlLFxuICBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBTeW1ib2wgYXMgVHNTeW1ib2wsXG4gIFR5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBUeXBlQ2hlY2tlcixcbiAgVmFyaWFibGVEZWNsYXJhdGlvblxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtcbiAgZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzLFxuICBmb3JFYWNoQ2hpbGQsXG4gIGdldEpTRG9jQ29tbWVudHNBbmRUYWdzLFxuICBpc0NsYXNzRGVjbGFyYXRpb24sXG4gIGlzRW51bURlY2xhcmF0aW9uLFxuICBpc0Z1bmN0aW9uRGVjbGFyYXRpb24sXG4gIGlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgaXNJZGVudGlmaWVyLFxuICBpc0ludGVyZmFjZURlY2xhcmF0aW9uLFxuICBpc0pTRG9jTGluayxcbiAgaXNKU0RvY0xpbmtDb2RlLFxuICBpc0pTRG9jTGlua1BsYWluLFxuICBpc0pTRG9jTWVtYmVyTmFtZSxcbiAgaXNNZXRob2REZWNsYXJhdGlvbixcbiAgaXNNZXRob2RTaWduYXR1cmUsXG4gIGlzTW9kdWxlRGVjbGFyYXRpb24sXG4gIGlzUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgaXNQcm9wZXJ0eVNpZ25hdHVyZSxcbiAgaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBpc1R5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBpc1ZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIHJlc29sdmVNb2R1bGVOYW1lLFxuICBTeW1ib2xGbGFncyxcbiAgc3lzXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJy4vdHMtZXN0cmVlLW5vZGUudHMnO1xuXG4vKipcbiAqIE1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIEpTRG9jIGxpbmsgdGFyZ2V0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBzeW1ib2wuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ25vVW5yZXNvbHZlZEpzZG9jTGluayc7XG5cbmludGVyZmFjZSBJc1Jlc29sdmVkTmFtZVBhcmFtcyB7XG4gIHJlYWRvbmx5IGNoZWNrZXI6IFR5cGVDaGVja2VyO1xuICByZWFkb25seSBjb250YWluaW5nRmlsZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lOiBSZWFkb25seU1hcDxzdHJpbmcsIHJlYWRvbmx5IElkZW50aWZpZXJbXT47XG4gIHJlYWRvbmx5IG5hbWU6IEVudGl0eU5hbWUgfCBKU0RvY01lbWJlck5hbWU7XG4gIHJlYWRvbmx5IHByb2dyYW06IFByb2dyYW07XG59XG5cbnR5cGUgSlNEb2NMaW5rTGlrZSA9IEpTRG9jTGluayB8IEpTRG9jTGlua0NvZGUgfCBKU0RvY0xpbmtQbGFpbjtcblxudHlwZSBMb2NhbERlY2xhcmF0aW9uID1cbiAgfCBDbGFzc0RlY2xhcmF0aW9uXG4gIHwgRW51bURlY2xhcmF0aW9uXG4gIHwgRnVuY3Rpb25EZWNsYXJhdGlvblxuICB8IEdldEFjY2Vzc29yRGVjbGFyYXRpb25cbiAgfCBJbnRlcmZhY2VEZWNsYXJhdGlvblxuICB8IE1ldGhvZERlY2xhcmF0aW9uXG4gIHwgTWV0aG9kU2lnbmF0dXJlXG4gIHwgTW9kdWxlRGVjbGFyYXRpb25cbiAgfCBQcm9wZXJ0eURlY2xhcmF0aW9uXG4gIHwgUHJvcGVydHlTaWduYXR1cmVcbiAgfCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uXG4gIHwgVHlwZUFsaWFzRGVjbGFyYXRpb25cbiAgfCBWYXJpYWJsZURlY2xhcmF0aW9uO1xuXG50eXBlIE1vZHVsZVBhdGhNYXRjaEdyb3VwcyA9IFJlYWRvbmx5PFJlY29yZDwnbWVtYmVyUGF0aCcgfCAnbW9kdWxlUGF0aCcsIHN0cmluZz4+O1xuXG5pbnRlcmZhY2UgUHJvZ3JhbUluZGV4IHtcbiAgcmVhZG9ubHkgZXhwb3J0c0J5TmFtZTogTWFwPHN0cmluZywgVHNTeW1ib2xbXT47XG4gIHJlYWRvbmx5IG1vZHVsZXNCeVBhdGg6IE1hcDxzdHJpbmcsIFRzU3ltYm9sPjtcbn1cblxuY29uc3QgTU9EVUxFX1BBVEhfUkVHX0VYUCA9IC9eKD88bW9kdWxlUGF0aD5bXlxccyF8fV0qKSEoPzxtZW1iZXJQYXRoPltcXHckLiNdKykvO1xuY29uc3QgSU1QT1JUX1RZUEVfUkVHX0VYUCA9IC9eaW1wb3J0XFwoXFxzKig/PHF1b3RlPlsnXCJdKSg/PG1vZHVsZVBhdGg+W14nXCJdKylcXGs8cXVvdGU+XFxzKlxcKVxcLig/PG1lbWJlclBhdGg+W1xcdyQuI10rKS87XG5jb25zdCBSRUxBVElWRV9QQVRIX1BSRUZJWF9SRUdfRVhQID0gL14oPzpcXC5cXC4/XFwvKSsvO1xuY29uc3QgTUVNQkVSX1NFUEFSQVRPUl9SRUdfRVhQID0gL1suI10vO1xuY29uc3QgU09VUkNFX0ZJTEVfRVhURU5TSU9OX1JFR19FWFAgPSAvKD86XFwuZCk/XFwuW2NtXT90c3g/JC87XG5jb25zdCBJTkRFWF9TVUZGSVggPSAnL2luZGV4JztcblxuY29uc3QgcHJvZ3JhbUluZGV4Q2FjaGUgPSBuZXcgV2Vha01hcDxQcm9ncmFtLCBQcm9ncmFtSW5kZXg+KCk7XG5cbi8qKlxuICogVGhlIEVTTGludCBydWxlIHRoYXQgcmVwb3J0cyBKU0RvYyBsaW5rcyB3aG9zZSB0YXJnZXQgZG9lcyBub3QgcmVzb2x2ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVW5yZXNvbHZlZEpzZG9jTGluazogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gY29udGV4dC5zb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICBQcm9ncmFtKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHNlcnZpY2VzLnByb2dyYW07XG4gICAgICAgIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gICAgICAgIGNvbnN0IHRzU291cmNlRmlsZSA9IHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuUHJvZ3JhbSk7XG5cbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHNhbWUgbGluayBpcyByZWFjaGFibGUgbW9yZSB0aGFuIG9uY2U6IGEgcGFyYW1ldGVyIHJldHVybnMgaXRzIG93biBgQHBhcmFtYCB0YWcsIHdoaWNoIGl0cyBmdW5jdGlvbidzXG4gICAgICAgICAqIEpTRG9jIGJsb2NrIGFsc28gY29udGFpbnMuIFNvIGRlZHVwbGljYXRlIG9uIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiBvbiB0aGUgSlNEb2Mgbm9kZS5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxpbmtzID0gbmV3IFNldDxKU0RvY0xpbmtMaWtlPigpO1xuXG4gICAgICAgIC8qXG4gICAgICAgICAqIEEgbGluayBtYXkgbmFtZSBhIGRlY2xhcmF0aW9uIGZ1cnRoZXIgZG93biB0aGUgZmlsZSwgc28gdGhlIHdob2xlIGZpbGUgaXMgd2Fsa2VkIGJlZm9yZSBhbnkgbGluayBpc1xuICAgICAgICAgKiByZXNvbHZlZC5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBJZGVudGlmaWVyW10+KCk7XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlOiBOb2RlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGlzSlNEb2NMaW5rTGlrZShqc0RvY05vZGUpKSB7XG4gICAgICAgICAgICBsaW5rcy5hZGQoanNEb2NOb2RlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKGpzRG9jTm9kZSwgdmlzaXRKc0RvY05vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXROb2RlKHRzTm9kZTogTm9kZSk6IHZvaWQge1xuICAgICAgICAgIGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZSh0c05vZGUsIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSk7XG4gICAgICAgICAgZm9yIChjb25zdCBqc0RvY05vZGUgb2YgZ2V0SlNEb2NDb21tZW50c0FuZFRhZ3ModHNOb2RlKSkge1xuICAgICAgICAgICAgdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKHRzTm9kZSwgdmlzaXROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlcG9ydElmVW5yZXNvbHZlZChsaW5rOiBKU0RvY0xpbmtMaWtlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKCFsaW5rLm5hbWUgfHwgbGluay50ZXh0LnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5hbWVUZXh0ID0gbGluay5uYW1lLmdldFRleHQoKTtcbiAgICAgICAgICBjb25zdCBmdWxsVGFyZ2V0ID0gbmFtZVRleHQgKyBsaW5rLnRleHQ7XG4gICAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBJTVBPUlRfVFlQRV9SRUdfRVhQLmV4ZWMoZnVsbFRhcmdldCkgPz8gTU9EVUxFX1BBVEhfUkVHX0VYUC5leGVjKGZ1bGxUYXJnZXQpO1xuICAgICAgICAgIGxldCByZXBvcnRlZE5hbWUgPSBuYW1lVGV4dDtcbiAgICAgICAgICBsZXQgaXNSZXNvbHZlZDogYm9vbGVhbjtcblxuICAgICAgICAgIGlmIChtb2R1bGVNYXRjaD8uZ3JvdXBzKSB7XG4gICAgICAgICAgICBjb25zdCB7IG1lbWJlclBhdGgsIG1vZHVsZVBhdGggfSA9IG1vZHVsZU1hdGNoLmdyb3VwcyBhcyBNb2R1bGVQYXRoTWF0Y2hHcm91cHM7XG4gICAgICAgICAgICByZXBvcnRlZE5hbWUgPSBtb2R1bGVNYXRjaFswXTtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZVN5bWJvbCA9IGZpbmRNb2R1bGUocHJvZ3JhbSwgY2hlY2tlciwgbW9kdWxlUGF0aCwgdHNTb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgICAgICAgIGlzUmVzb2x2ZWQgPSAhIXJlc29sdmVNZW1iZXJQYXRoKGNoZWNrZXIsIG1vZHVsZVN5bWJvbCwgbWVtYmVyUGF0aC5zcGxpdChNRU1CRVJfU0VQQVJBVE9SX1JFR19FWFApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNSZXNvbHZlZCA9IGlzUmVzb2x2ZWROYW1lKHtcbiAgICAgICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICAgICAgY29udGFpbmluZ0ZpbGVOYW1lOiB0c1NvdXJjZUZpbGUuZmlsZU5hbWUsXG4gICAgICAgICAgICAgIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSxcbiAgICAgICAgICAgICAgbmFtZTogbGluay5uYW1lLFxuICAgICAgICAgICAgICBwcm9ncmFtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNSZXNvbHZlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgbmFtZTogcmVwb3J0ZWROYW1lXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jOiB7XG4gICAgICAgICAgICAgIGVuZDogY29udGV4dC5zb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChsaW5rLm5hbWUuZ2V0RW5kKCkpLFxuICAgICAgICAgICAgICBzdGFydDogY29udGV4dC5zb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChsaW5rLm5hbWUuZ2V0U3RhcnQoKSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZpc2l0Tm9kZSh0c1NvdXJjZUZpbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICByZXBvcnRJZlVucmVzb2x2ZWQobGluayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdEaXNhbGxvdyBKU0RvYyBsaW5rIHRhZ3Mgd2hvc2UgdGFyZ2V0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBzeW1ib2wnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnSlNEb2MgbGluayB0YXJnZXQgYHt7bmFtZX19YCBkb2VzIG5vdCByZXNvbHZlLiBXYXMgaXQgcmVuYW1lZCBvciByZW1vdmVkPydcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZShub2RlOiBOb2RlLCBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWU6IE1hcDxzdHJpbmcsIElkZW50aWZpZXJbXT4pOiB2b2lkIHtcbiAgaWYgKCFpc0xvY2FsRGVjbGFyYXRpb24obm9kZSkgfHwgIW5vZGUubmFtZSB8fCAhaXNJZGVudGlmaWVyKG5vZGUubmFtZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgbmFtZXMgPSBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuZ2V0KG5vZGUubmFtZS50ZXh0KSA/PyBbXTtcbiAgbmFtZXMucHVzaChub2RlLm5hbWUpO1xuICBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuc2V0KG5vZGUubmFtZS50ZXh0LCBuYW1lcyk7XG59XG5cbmZ1bmN0aW9uIGZpbmRNb2R1bGUocHJvZ3JhbTogUHJvZ3JhbSwgY2hlY2tlcjogVHlwZUNoZWNrZXIsIHNwZWNpZmllcjogc3RyaW5nLCBjb250YWluaW5nRmlsZU5hbWU6IHN0cmluZyk6IFRzU3ltYm9sIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYW1iaWVudE1vZHVsZSA9IGdldFByb2dyYW1JbmRleChwcm9ncmFtLCBjaGVja2VyKS5tb2R1bGVzQnlQYXRoLmdldChzcGVjaWZpZXIpO1xuICBpZiAoYW1iaWVudE1vZHVsZSkge1xuICAgIHJldHVybiBhbWJpZW50TW9kdWxlO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRGaWxlTmFtZSA9IHJlc29sdmVNb2R1bGVOYW1lKHNwZWNpZmllciwgY29udGFpbmluZ0ZpbGVOYW1lLCBwcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpLCBzeXMpLnJlc29sdmVkTW9kdWxlPy5yZXNvbHZlZEZpbGVOYW1lO1xuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGUgPSByZXNvbHZlZEZpbGVOYW1lID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRGaWxlTmFtZSk7XG4gIGNvbnN0IHJlc29sdmVkTW9kdWxlID0gcmVzb2x2ZWRTb3VyY2VGaWxlICYmIGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihyZXNvbHZlZFNvdXJjZUZpbGUpO1xuICByZXR1cm4gcmVzb2x2ZWRNb2R1bGUgPz8gZmluZE1vZHVsZUJ5UGF0aFN1ZmZpeChwcm9ncmFtLCBjaGVja2VyLCBzcGVjaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBmaW5kTW9kdWxlQnlQYXRoU3VmZml4KHByb2dyYW06IFByb2dyYW0sIGNoZWNrZXI6IFR5cGVDaGVja2VyLCBtb2R1bGVQYXRoOiBzdHJpbmcpOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gbW9kdWxlUGF0aC5yZXBsYWNlKFJFTEFUSVZFX1BBVEhfUFJFRklYX1JFR19FWFAsICcnKS5yZXBsYWNlKFNPVVJDRV9GSUxFX0VYVEVOU0lPTl9SRUdfRVhQLCAnJyk7XG4gIGNvbnN0IHN1ZmZpeGVzID0gW2AvJHtub3JtYWxpemVkUGF0aH1gLCBgLyR7bm9ybWFsaXplZFBhdGh9JHtJTkRFWF9TVUZGSVh9YF07XG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBwYXRoV2l0aG91dEV4dGVuc2lvbiA9IHNvdXJjZUZpbGUuZmlsZU5hbWUucmVwbGFjZShTT1VSQ0VfRklMRV9FWFRFTlNJT05fUkVHX0VYUCwgJycpO1xuICAgIGlmIChzdWZmaXhlcy5ldmVyeSgoc3VmZml4KSA9PiAhcGF0aFdpdGhvdXRFeHRlbnNpb24uZW5kc1dpdGgoc3VmZml4KSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBtb2R1bGVTeW1ib2wgPSBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oc291cmNlRmlsZSk7XG4gICAgaWYgKG1vZHVsZVN5bWJvbCkge1xuICAgICAgcmV0dXJuIG1vZHVsZVN5bWJvbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbk5hbWUobmFtZTogRW50aXR5TmFtZSB8IEpTRG9jTWVtYmVyTmFtZSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGlzSWRlbnRpZmllcihuYW1lKSA/IFtuYW1lLnRleHRdIDogWy4uLmZsYXR0ZW5OYW1lKG5hbWUubGVmdCksIG5hbWUucmlnaHQudGV4dF07XG59XG5cbmZ1bmN0aW9uIGdldE1lbWJlcihjaGVja2VyOiBUeXBlQ2hlY2tlciwgc3ltYm9sOiBUc1N5bWJvbCwgbWVtYmVyTmFtZTogc3RyaW5nKTogVHNTeW1ib2wgfCB1bmRlZmluZWQge1xuICBjb25zdCBlc2NhcGVkTmFtZSA9IGVzY2FwZUxlYWRpbmdVbmRlcnNjb3JlcyhtZW1iZXJOYW1lKTtcbiAgY29uc3QgdGFyZ2V0ID0gcmVzb2x2ZUFsaWFzKGNoZWNrZXIsIHN5bWJvbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlIC0tIEJpdHdpc2UgZmxhZyB0ZXN0IGlzIGlkaW9tYXRpYyBmb3IgdGhlIFR5cGVTY3JpcHQgY29tcGlsZXIgQVBJLlxuICBjb25zdCBtb2R1bGVFeHBvcnQgPSAodGFyZ2V0LmZsYWdzICYgU3ltYm9sRmxhZ3MuTW9kdWxlKSA9PT0gMCA/IHVuZGVmaW5lZCA6IGNoZWNrZXIudHJ5R2V0TWVtYmVySW5Nb2R1bGVFeHBvcnRzKG1lbWJlck5hbWUsIHRhcmdldCk7XG4gIHJldHVybiBtb2R1bGVFeHBvcnRcbiAgICA/PyB0YXJnZXQuZXhwb3J0cz8uZ2V0KGVzY2FwZWROYW1lKVxuICAgID8/IHRhcmdldC5tZW1iZXJzPy5nZXQoZXNjYXBlZE5hbWUpXG4gICAgPz8gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShjaGVja2VyLmdldERlY2xhcmVkVHlwZU9mU3ltYm9sKHRhcmdldCksIG1lbWJlck5hbWUpXG4gICAgPz8gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShjaGVja2VyLmdldFR5cGVPZlN5bWJvbCh0YXJnZXQpLCBtZW1iZXJOYW1lKTtcbn1cblxuZnVuY3Rpb24gZ2V0UHJvZ3JhbUluZGV4KHByb2dyYW06IFByb2dyYW0sIGNoZWNrZXI6IFR5cGVDaGVja2VyKTogUHJvZ3JhbUluZGV4IHtcbiAgbGV0IGluZGV4ID0gcHJvZ3JhbUluZGV4Q2FjaGUuZ2V0KHByb2dyYW0pO1xuICBpZiAoaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBpbmRleCA9IHtcbiAgICBleHBvcnRzQnlOYW1lOiBuZXcgTWFwPHN0cmluZywgVHNTeW1ib2xbXT4oKSxcbiAgICBtb2R1bGVzQnlQYXRoOiBuZXcgTWFwPHN0cmluZywgVHNTeW1ib2w+KClcbiAgfTtcblxuICBjb25zdCBtb2R1bGVTeW1ib2xzOiBUc1N5bWJvbFtdID0gW107XG4gIGZvciAoY29uc3QgYW1iaWVudE1vZHVsZSBvZiBjaGVja2VyLmdldEFtYmllbnRNb2R1bGVzKCkpIHtcbiAgICBpbmRleC5tb2R1bGVzQnlQYXRoLnNldChhbWJpZW50TW9kdWxlLm5hbWUucmVwbGFjZUFsbCgnXCInLCAnJyksIGFtYmllbnRNb2R1bGUpO1xuICAgIG1vZHVsZVN5bWJvbHMucHVzaChhbWJpZW50TW9kdWxlKTtcbiAgfVxuICBmb3IgKGNvbnN0IHNvdXJjZUZpbGUgb2YgcHJvZ3JhbS5nZXRTb3VyY2VGaWxlcygpKSB7XG4gICAgY29uc3QgbW9kdWxlU3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKHNvdXJjZUZpbGUpO1xuICAgIGlmIChtb2R1bGVTeW1ib2wpIHtcbiAgICAgIG1vZHVsZVN5bWJvbHMucHVzaChtb2R1bGVTeW1ib2wpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgbW9kdWxlU3ltYm9sIG9mIG1vZHVsZVN5bWJvbHMpIHtcbiAgICBmb3IgKGNvbnN0IGV4cG9ydFN5bWJvbCBvZiBjaGVja2VyLmdldEV4cG9ydHNPZk1vZHVsZShtb2R1bGVTeW1ib2wpKSB7XG4gICAgICBjb25zdCBzeW1ib2xzID0gaW5kZXguZXhwb3J0c0J5TmFtZS5nZXQoZXhwb3J0U3ltYm9sLm5hbWUpID8/IFtdO1xuICAgICAgc3ltYm9scy5wdXNoKGV4cG9ydFN5bWJvbCk7XG4gICAgICBpbmRleC5leHBvcnRzQnlOYW1lLnNldChleHBvcnRTeW1ib2wubmFtZSwgc3ltYm9scyk7XG4gICAgfVxuICB9XG5cbiAgcHJvZ3JhbUluZGV4Q2FjaGUuc2V0KHByb2dyYW0sIGluZGV4KTtcbiAgcmV0dXJuIGluZGV4O1xufVxuXG5mdW5jdGlvbiBpc0pTRG9jTGlua0xpa2Uobm9kZTogTm9kZSk6IG5vZGUgaXMgSlNEb2NMaW5rTGlrZSB7XG4gIHJldHVybiBpc0pTRG9jTGluayhub2RlKSB8fCBpc0pTRG9jTGlua0NvZGUobm9kZSkgfHwgaXNKU0RvY0xpbmtQbGFpbihub2RlKTtcbn1cblxuZnVuY3Rpb24gaXNMb2NhbERlY2xhcmF0aW9uKG5vZGU6IE5vZGUpOiBub2RlIGlzIExvY2FsRGVjbGFyYXRpb24ge1xuICByZXR1cm4gaXNDbGFzc0RlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNFbnVtRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0Z1bmN0aW9uRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0dldEFjY2Vzc29yRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0ludGVyZmFjZURlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNNZXRob2REZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzTWV0aG9kU2lnbmF0dXJlKG5vZGUpXG4gICAgfHwgaXNNb2R1bGVEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzUHJvcGVydHlEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzUHJvcGVydHlTaWduYXR1cmUobm9kZSlcbiAgICB8fCBpc1NldEFjY2Vzc29yRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc1R5cGVBbGlhc0RlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpO1xufVxuXG5mdW5jdGlvbiBpc1Jlc29sdmVkTmFtZShwYXJhbXM6IElzUmVzb2x2ZWROYW1lUGFyYW1zKTogYm9vbGVhbiB7XG4gIGNvbnN0IHtcbiAgICBjaGVja2VyLFxuICAgIGNvbnRhaW5pbmdGaWxlTmFtZSxcbiAgICBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUsXG4gICAgbmFtZSxcbiAgICBwcm9ncmFtXG4gIH0gPSBwYXJhbXM7XG5cbiAgaWYgKGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gYEZvbyNiYXJgIGlzIGEgYEpTRG9jTWVtYmVyTmFtZWAsIHdoaWNoIHRoZSBjaGVja2VyIHJlc29sdmVzIG9ubHkgdGhyb3VnaCBpdHMgcmlnaHQtaGFuZCBtZW1iZXIuXG4gIGlmIChpc0pTRG9jTWVtYmVyTmFtZShuYW1lKSAmJiBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obmFtZS5yaWdodCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IFtyb290TmFtZSA9ICcnLCAuLi5tZW1iZXJOYW1lc10gPSBmbGF0dGVuTmFtZShuYW1lKTtcbiAgY29uc3QgaW5kZXggPSBnZXRQcm9ncmFtSW5kZXgocHJvZ3JhbSwgY2hlY2tlcik7XG4gIGNvbnN0IGxvY2FsUm9vdHMgPSAobG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lLmdldChyb290TmFtZSkgPz8gW10pLm1hcCgoZGVjbGFyYXRpb25OYW1lKSA9PiBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oZGVjbGFyYXRpb25OYW1lKSk7XG4gIGNvbnN0IHJvb3RzID0gWy4uLmxvY2FsUm9vdHMsIC4uLmluZGV4LmV4cG9ydHNCeU5hbWUuZ2V0KHJvb3ROYW1lKSA/PyBbXSwgZmluZE1vZHVsZShwcm9ncmFtLCBjaGVja2VyLCByb290TmFtZSwgY29udGFpbmluZ0ZpbGVOYW1lKV07XG5cbiAgcmV0dXJuIHJvb3RzLnNvbWUoKHJvb3QpID0+ICEhcmVzb2x2ZU1lbWJlclBhdGgoY2hlY2tlciwgcm9vdCwgbWVtYmVyTmFtZXMpKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZUFsaWFzKGNoZWNrZXI6IFR5cGVDaGVja2VyLCBzeW1ib2w6IFRzU3ltYm9sKTogVHNTeW1ib2wge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZSAtLSBCaXR3aXNlIGZsYWcgdGVzdCBpcyBpZGlvbWF0aWMgZm9yIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIEFQSS5cbiAgcmV0dXJuIChzeW1ib2wuZmxhZ3MgJiBTeW1ib2xGbGFncy5BbGlhcykgPT09IDAgPyBzeW1ib2wgOiBjaGVja2VyLmdldEFsaWFzZWRTeW1ib2woc3ltYm9sKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU1lbWJlclBhdGgoY2hlY2tlcjogVHlwZUNoZWNrZXIsIHJvb3Q6IFRzU3ltYm9sIHwgdW5kZWZpbmVkLCBtZW1iZXJOYW1lczogcmVhZG9ubHkgc3RyaW5nW10pOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGxldCBjdXJyZW50OiBUc1N5bWJvbCB8IHVuZGVmaW5lZCA9IHJvb3Q7XG4gIGZvciAoY29uc3QgbWVtYmVyTmFtZSBvZiBtZW1iZXJOYW1lcykge1xuICAgIGlmICghY3VycmVudCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IGdldE1lbWJlcihjaGVja2VyLCBjdXJyZW50LCBtZW1iZXJOYW1lKTtcbiAgfVxuICByZXR1cm4gY3VycmVudDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnRUEsd0JBeUJPO0FBRVAsNEJBQStCO0FBS3hCLE1BQU0sYUFBYTtBQWtDMUIsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSwrQkFBK0I7QUFDckMsTUFBTSwyQkFBMkI7QUFDakMsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSxlQUFlO0FBRXJCLE1BQU0sb0JBQW9CLG9CQUFJLFFBQStCO0FBS3RELE1BQU0sd0JBQXlDO0FBQUEsRUFDcEQsT0FBTyxTQUFTO0FBQ2QsVUFBTSxXQUFXLFFBQVEsV0FBVztBQUVwQyxXQUFPO0FBQUEsTUFDTCxRQUFRLE1BQVk7QUFDbEIsY0FBTSxVQUFVLFNB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
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11bnJlc29sdmVkLWpzZG9jLWxpbmsudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby11bnJlc29sdmVkLWpzZG9jLWxpbmtcbiAqXG4gKiBSZXBvcnRzIGEgSlNEb2MgYGxpbmtgLCBgbGlua2NvZGVgIG9yIGBsaW5rcGxhaW5gIGlubGluZSB0YWcgd2hvc2UgdGFyZ2V0IG5vIGxvbmdlciByZXNvbHZlcyB0byBhIHN5bWJvbC5cbiAqXG4gKiBBIHJlbmFtZSBsZWF2ZXMgYHtAbGluayBPbGROYW1lfWAgYmVoaW5kIGFuZCBub3RoaW5nIGVsc2UgcmVwb3J0cyBpdDogYGpzZG9jL25vLXVuZGVmaW5lZC10eXBlc2AgZG9lcyBub3QgcmVzb2x2ZVxuICogbGluayB0YXJnZXRzLCBUU0RvYyBjaGVja3Mgb25seSB0aGUgdGFnIHN5bnRheCwgYW5kIGB0c2NgIHBhcnNlcyBKU0RvYyBsaW5rcyB3aXRob3V0IGV2ZXIgZGlhZ25vc2luZyB0aGVtLiBTbyBhIGRlYWRcbiAqIGxpbmsgc3Vydml2ZXMgdW50aWwgc29tZWJvZHkgaGFwcGVucyB0byBjbGljayBpdC5cbiAqXG4gKiBBIHRhcmdldCByZXNvbHZlcyB3aGVuIGFueSBvZiB0aGVzZSBmaW5kcyBpdCwgdHJpZWQgaW4gb3JkZXI6XG4gKlxuICogMS4gVGhlIHR5cGUgY2hlY2tlciwgYXQgdGhlIGNvbW1lbnQncyBvd24gbG9jYXRpb24sIGV4YWN0bHkgYXMgZWRpdG9yIGdvLXRvLWRlZmluaXRpb24gZG9lcyDigJQgc28gZXZlcnl0aGluZyBpblxuICogICAgc2NvcGUgdGhlcmUgcmVzb2x2ZXM6IHR5cGUgcGFyYW1ldGVycywgcGFyYW1ldGVycywgaW1wb3J0cywgYW5kIHRoZSBET00gLyBFUyBnbG9iYWxzLlxuICogMi4gQSBkZWNsYXJhdGlvbiBhbnl3aGVyZSBpbiB0aGUgc2FtZSBmaWxlIOKAlCBhIGZ1bmN0aW9uIG5lc3RlZCBpbiBhbm90aGVyLCBhIHByaXZhdGUgbWV0aG9kIOKAlCB3aGljaCBpcyBvdXQgb2ZcbiAqICAgIHNjb3BlIGF0IGEgYCpQYXJhbXNgIGludGVyZmFjZSBuYW1pbmcgaXQsIHlldCBpcyBleGFjdGx5IHdoYXQgYSByZW5hbWUgb2YgaXQgd291bGQgYnJlYWsuXG4gKiAzLiBUaGUgZXhwb3J0cyBvZiBhbnkgbW9kdWxlIGluIHRoZSBwcm9ncmFtLCBieSBuYW1lLiBBIGNvbW1lbnQgcm91dGluZWx5IG5hbWVzIGEgdHlwZSBpdHMgZmlsZSBuZXZlciBpbXBvcnRzIChhblxuICogICAgaW50ZWdyYXRpb24gdGVzdCBuYW1pbmcgdGhlIGNsYXNzIGl0IGRyaXZlcyB0aHJvdWdoIGBldmFsSW5PYnNpZGlhbmAsIGEgcmVtYXJrIG5hbWluZyBhbiBPYnNpZGlhbiBBUEkpLCBhbmQgdGhlXG4gKiAgICBBUEkgZG9jcyBnZW5lcmF0b3IgcmVzb2x2ZXMgc3VjaCBhIG5hbWUgbGlicmFyeS13aWRlIHRvby4gVGhpcyBrZWVwcyB0aGUgcnVsZSBhYm91dCBERUFEIGxpbmtzIHJhdGhlciB0aGFuXG4gKiAgICBhYm91dCBpbXBvcnRzOiBhIHJlbmFtZWQgb3IgcmVtb3ZlZCBkZWNsYXJhdGlvbiBpcyBleHBvcnRlZCBieSBubyBtb2R1bGUsIHNvIGl0IGlzIHN0aWxsIHJlcG9ydGVkLlxuICogNC4gQSBtb2R1bGUgbmFtZWQgYnkgaXRzIHNwZWNpZmllciBvciBpdHMgcGF0aCwgaW4gYm90aCBUU0RvYyBmb3JtczogYG9ic2lkaWFuI0V2ZW50cyNvbmAgKHRoZSBwYWNrYWdlIGFzIHRoZSBmaXJzdFxuICogICAgc2VnbWVudCkgYW5kIGBlcnJvciFlcnJvclRvU3RyaW5nYCAvIGBvYnNpZGlhbi9jb21wb25lbnRzL3BsdWdpbi1nYXRlLWNvbXBvbmVudCFQbHVnaW5Db25mbGljdFNldmVyaXR5Lldhcm5gXG4gKiAgICAoYSBtb2R1bGUgcGF0aCwgZW5kaW5nIHdpdGggYCFgKSDigJQgcGx1cyBUeXBlU2NyaXB0J3Mgb3duIGBpbXBvcnQoJy4vbW9kdWxlLnRzJykuTWVtYmVyYC4gQSBwYXRoIG1hdGNoZXMgYW55XG4gKiAgICBzb3VyY2UgZmlsZSBpbiB0aGUgcHJvZ3JhbSB3aG9zZSBwYXRoIGVuZHMgd2l0aCBpdC5cbiAqXG4gKiBBZnRlciB0aGUgZmlyc3Qgc2VnbWVudCwgZWFjaCBmdXJ0aGVyIGAuYCAvIGAjYCBzZWdtZW50IGlzIGxvb2tlZCB1cCBhcyBhIG1lbWJlcjogYSBuYW1lc3BhY2Ugb3IgbW9kdWxlIGV4cG9ydCwgYVxuICogc3RhdGljIG9yIGluc3RhbmNlIG1lbWJlciwgb3IgYSBwcm9wZXJ0eSBvZiB0aGUgcHJldmlvdXMgbWVtYmVyJ3MgdHlwZSDigJQgc28gYEFwcC52YXVsdC5hZGFwdGVyYCByZXNvbHZlcy5cbiAqXG4gKiBBIGxpbmsgdGhhdCBpcyBub3QgYSBjb2RlIHJlZmVyZW5jZSBpcyBza2lwcGVkOiBhIFVSTCAoYHtAbGluayBodHRwczovL2V4YW1wbGUuY29tfWApIGFuZCBhIEpTRG9jIG5hbWVwYXRoXG4gKiAoYHtAbGluayBtb2R1bGU6Zm9vfWApIGJvdGggcGFyc2UgYXMgYSBuYW1lIGZvbGxvd2VkIGJ5IHRleHQgc3RhcnRpbmcgd2l0aCBgOmAsIGFuZCBhIGxpbmsgd2l0aCBubyBuYW1lIGhhc1xuICogbm90aGluZyB0byByZXNvbHZlLlxuICovXG5pbXBvcnQgdHlwZSB7XG4gIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbixcbiAgVFNFU1RyZWVcbn0gZnJvbSAnQHR5cGVzY3JpcHQtZXNsaW50L3V0aWxzJztcbmltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7XG4gIENsYXNzRGVjbGFyYXRpb24sXG4gIEVudGl0eU5hbWUsXG4gIEVudW1EZWNsYXJhdGlvbixcbiAgRnVuY3Rpb25EZWNsYXJhdGlvbixcbiAgR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgSWRlbnRpZmllcixcbiAgSW50ZXJmYWNlRGVjbGFyYXRpb24sXG4gIEpTRG9jTGluayxcbiAgSlNEb2NMaW5rQ29kZSxcbiAgSlNEb2NMaW5rUGxhaW4sXG4gIEpTRG9jTWVtYmVyTmFtZSxcbiAgTWV0aG9kRGVjbGFyYXRpb24sXG4gIE1ldGhvZFNpZ25hdHVyZSxcbiAgTW9kdWxlRGVjbGFyYXRpb24sXG4gIE5vZGUsXG4gIFByb2dyYW0sXG4gIFByb3BlcnR5RGVjbGFyYXRpb24sXG4gIFByb3BlcnR5U2lnbmF0dXJlLFxuICBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBTeW1ib2wgYXMgVHNTeW1ib2wsXG4gIFR5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBUeXBlQ2hlY2tlcixcbiAgVmFyaWFibGVEZWNsYXJhdGlvblxufSBmcm9tICd0eXBlc2NyaXB0JztcblxuaW1wb3J0IHtcbiAgZXNjYXBlTGVhZGluZ1VuZGVyc2NvcmVzLFxuICBmb3JFYWNoQ2hpbGQsXG4gIGdldEpTRG9jQ29tbWVudHNBbmRUYWdzLFxuICBpc0NsYXNzRGVjbGFyYXRpb24sXG4gIGlzRW51bURlY2xhcmF0aW9uLFxuICBpc0Z1bmN0aW9uRGVjbGFyYXRpb24sXG4gIGlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbixcbiAgaXNJZGVudGlmaWVyLFxuICBpc0ludGVyZmFjZURlY2xhcmF0aW9uLFxuICBpc0pTRG9jTGluayxcbiAgaXNKU0RvY0xpbmtDb2RlLFxuICBpc0pTRG9jTGlua1BsYWluLFxuICBpc0pTRG9jTWVtYmVyTmFtZSxcbiAgaXNNZXRob2REZWNsYXJhdGlvbixcbiAgaXNNZXRob2RTaWduYXR1cmUsXG4gIGlzTW9kdWxlRGVjbGFyYXRpb24sXG4gIGlzUHJvcGVydHlEZWNsYXJhdGlvbixcbiAgaXNQcm9wZXJ0eVNpZ25hdHVyZSxcbiAgaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLFxuICBpc1R5cGVBbGlhc0RlY2xhcmF0aW9uLFxuICBpc1ZhcmlhYmxlRGVjbGFyYXRpb24sXG4gIHJlc29sdmVNb2R1bGVOYW1lLFxuICBTeW1ib2xGbGFncyxcbiAgc3lzXG59IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgeyB0b1RTRVNUcmVlTm9kZSB9IGZyb20gJy4vdHMtZXN0cmVlLW5vZGUudHMnO1xuXG4vKipcbiAqIE1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIEpTRG9jIGxpbmsgdGFyZ2V0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBzeW1ib2wuXG4gKi9cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0lEID0gJ25vVW5yZXNvbHZlZEpzZG9jTGluayc7XG5cbmludGVyZmFjZSBJc1Jlc29sdmVkTmFtZVBhcmFtcyB7XG4gIHJlYWRvbmx5IGNoZWNrZXI6IFR5cGVDaGVja2VyO1xuICByZWFkb25seSBjb250YWluaW5nRmlsZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgbG9jYWxEZWNsYXJhdGlvbk5hbWVzQnlOYW1lOiBSZWFkb25seU1hcDxzdHJpbmcsIHJlYWRvbmx5IElkZW50aWZpZXJbXT47XG4gIHJlYWRvbmx5IG5hbWU6IEVudGl0eU5hbWUgfCBKU0RvY01lbWJlck5hbWU7XG4gIHJlYWRvbmx5IHByb2dyYW06IFByb2dyYW07XG59XG5cbnR5cGUgSlNEb2NMaW5rTGlrZSA9IEpTRG9jTGluayB8IEpTRG9jTGlua0NvZGUgfCBKU0RvY0xpbmtQbGFpbjtcblxudHlwZSBMb2NhbERlY2xhcmF0aW9uID1cbiAgfCBDbGFzc0RlY2xhcmF0aW9uXG4gIHwgRW51bURlY2xhcmF0aW9uXG4gIHwgRnVuY3Rpb25EZWNsYXJhdGlvblxuICB8IEdldEFjY2Vzc29yRGVjbGFyYXRpb25cbiAgfCBJbnRlcmZhY2VEZWNsYXJhdGlvblxuICB8IE1ldGhvZERlY2xhcmF0aW9uXG4gIHwgTWV0aG9kU2lnbmF0dXJlXG4gIHwgTW9kdWxlRGVjbGFyYXRpb25cbiAgfCBQcm9wZXJ0eURlY2xhcmF0aW9uXG4gIHwgUHJvcGVydHlTaWduYXR1cmVcbiAgfCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uXG4gIHwgVHlwZUFsaWFzRGVjbGFyYXRpb25cbiAgfCBWYXJpYWJsZURlY2xhcmF0aW9uO1xuXG50eXBlIE1vZHVsZVBhdGhNYXRjaEdyb3VwcyA9IFJlYWRvbmx5PFJlY29yZDwnbWVtYmVyUGF0aCcgfCAnbW9kdWxlUGF0aCcsIHN0cmluZz4+O1xuXG5pbnRlcmZhY2UgUHJvZ3JhbUluZGV4IHtcbiAgcmVhZG9ubHkgZXhwb3J0c0J5TmFtZTogTWFwPHN0cmluZywgVHNTeW1ib2xbXT47XG4gIHJlYWRvbmx5IG1vZHVsZXNCeVBhdGg6IE1hcDxzdHJpbmcsIFRzU3ltYm9sPjtcbn1cblxuY29uc3QgTU9EVUxFX1BBVEhfUkVHX0VYUCA9IC9eKD88bW9kdWxlUGF0aD5bXlxccyF8fV0qKSEoPzxtZW1iZXJQYXRoPltcXHckLiNdKykvO1xuY29uc3QgSU1QT1JUX1RZUEVfUkVHX0VYUCA9IC9eaW1wb3J0XFwoXFxzKig/PHF1b3RlPlsnXCJdKSg/PG1vZHVsZVBhdGg+W14nXCJdKylcXGs8cXVvdGU+XFxzKlxcKVxcLig/PG1lbWJlclBhdGg+W1xcdyQuI10rKS87XG5jb25zdCBSRUxBVElWRV9QQVRIX1BSRUZJWF9SRUdfRVhQID0gL14oPzpcXC5cXC4/XFwvKSsvO1xuY29uc3QgTUVNQkVSX1NFUEFSQVRPUl9SRUdfRVhQID0gL1suI10vO1xuY29uc3QgU09VUkNFX0ZJTEVfRVhURU5TSU9OX1JFR19FWFAgPSAvKD86XFwuZCk/XFwuW2NtXT90c3g/JC87XG5jb25zdCBJTkRFWF9TVUZGSVggPSAnL2luZGV4JztcblxuY29uc3QgcHJvZ3JhbUluZGV4Q2FjaGUgPSBuZXcgV2Vha01hcDxQcm9ncmFtLCBQcm9ncmFtSW5kZXg+KCk7XG5cbi8qKlxuICogVGhlIEVTTGludCBydWxlIHRoYXQgcmVwb3J0cyBKU0RvYyBsaW5rcyB3aG9zZSB0YXJnZXQgZG9lcyBub3QgcmVzb2x2ZS5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVW5yZXNvbHZlZEpzZG9jTGluazogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gY29udGV4dC5zb3VyY2VDb2RlLnBhcnNlclNlcnZpY2VzIGFzIFBhcnNlclNlcnZpY2VzV2l0aFR5cGVJbmZvcm1hdGlvbjtcblxuICAgIHJldHVybiB7XG4gICAgICBQcm9ncmFtKG5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJvZ3JhbSA9IHNlcnZpY2VzLnByb2dyYW07XG4gICAgICAgIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gICAgICAgIGNvbnN0IHRzU291cmNlRmlsZSA9IHNlcnZpY2VzLmVzVHJlZU5vZGVUb1RTTm9kZU1hcC5nZXQodG9UU0VTVHJlZU5vZGUobm9kZSkgYXMgVFNFU1RyZWUuUHJvZ3JhbSk7XG5cbiAgICAgICAgLypcbiAgICAgICAgICogVGhlIHNhbWUgbGluayBpcyByZWFjaGFibGUgbW9yZSB0aGFuIG9uY2U6IGEgcGFyYW1ldGVyIHJldHVybnMgaXRzIG93biBgQHBhcmFtYCB0YWcsIHdoaWNoIGl0cyBmdW5jdGlvbidzXG4gICAgICAgICAqIEpTRG9jIGJsb2NrIGFsc28gY29udGFpbnMuIFNvIGRlZHVwbGljYXRlIG9uIHRoZSBsaW5rIGl0c2VsZiByYXRoZXIgdGhhbiBvbiB0aGUgSlNEb2Mgbm9kZS5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxpbmtzID0gbmV3IFNldDxKU0RvY0xpbmtMaWtlPigpO1xuXG4gICAgICAgIC8qXG4gICAgICAgICAqIEEgbGluayBtYXkgbmFtZSBhIGRlY2xhcmF0aW9uIGZ1cnRoZXIgZG93biB0aGUgZmlsZSwgc28gdGhlIHdob2xlIGZpbGUgaXMgd2Fsa2VkIGJlZm9yZSBhbnkgbGluayBpc1xuICAgICAgICAgKiByZXNvbHZlZC5cbiAgICAgICAgICovXG4gICAgICAgIGNvbnN0IGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSA9IG5ldyBNYXA8c3RyaW5nLCBJZGVudGlmaWVyW10+KCk7XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlOiBOb2RlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKGlzSlNEb2NMaW5rTGlrZShqc0RvY05vZGUpKSB7XG4gICAgICAgICAgICBsaW5rcy5hZGQoanNEb2NOb2RlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKGpzRG9jTm9kZSwgdmlzaXRKc0RvY05vZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gdmlzaXROb2RlKHRzTm9kZTogTm9kZSk6IHZvaWQge1xuICAgICAgICAgIGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZSh0c05vZGUsIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSk7XG4gICAgICAgICAgZm9yIChjb25zdCBqc0RvY05vZGUgb2YgZ2V0SlNEb2NDb21tZW50c0FuZFRhZ3ModHNOb2RlKSkge1xuICAgICAgICAgICAgdmlzaXRKc0RvY05vZGUoanNEb2NOb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yRWFjaENoaWxkKHRzTm9kZSwgdmlzaXROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlcG9ydElmVW5yZXNvbHZlZChsaW5rOiBKU0RvY0xpbmtMaWtlKTogdm9pZCB7XG4gICAgICAgICAgaWYgKCFsaW5rLm5hbWUgfHwgbGluay50ZXh0LnN0YXJ0c1dpdGgoJzonKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5hbWVUZXh0ID0gbGluay5uYW1lLmdldFRleHQoKTtcbiAgICAgICAgICBjb25zdCBmdWxsVGFyZ2V0ID0gbmFtZVRleHQgKyBsaW5rLnRleHQ7XG4gICAgICAgICAgY29uc3QgbW9kdWxlTWF0Y2ggPSBJTVBPUlRfVFlQRV9SRUdfRVhQLmV4ZWMoZnVsbFRhcmdldCkgPz8gTU9EVUxFX1BBVEhfUkVHX0VYUC5leGVjKGZ1bGxUYXJnZXQpO1xuICAgICAgICAgIGxldCByZXBvcnRlZE5hbWUgPSBuYW1lVGV4dDtcbiAgICAgICAgICBsZXQgaXNSZXNvbHZlZDogYm9vbGVhbjtcblxuICAgICAgICAgIGlmIChtb2R1bGVNYXRjaD8uZ3JvdXBzKSB7XG4gICAgICAgICAgICBjb25zdCB7IG1lbWJlclBhdGgsIG1vZHVsZVBhdGggfSA9IG1vZHVsZU1hdGNoLmdyb3VwcyBhcyBNb2R1bGVQYXRoTWF0Y2hHcm91cHM7XG4gICAgICAgICAgICByZXBvcnRlZE5hbWUgPSBtb2R1bGVNYXRjaFswXTtcbiAgICAgICAgICAgIGNvbnN0IG1vZHVsZVN5bWJvbCA9IGZpbmRNb2R1bGUocHJvZ3JhbSwgY2hlY2tlciwgbW9kdWxlUGF0aCwgdHNTb3VyY2VGaWxlLmZpbGVOYW1lKTtcbiAgICAgICAgICAgIGlzUmVzb2x2ZWQgPSAhIXJlc29sdmVNZW1iZXJQYXRoKGNoZWNrZXIsIG1vZHVsZVN5bWJvbCwgbWVtYmVyUGF0aC5zcGxpdChNRU1CRVJfU0VQQVJBVE9SX1JFR19FWFApKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNSZXNvbHZlZCA9IGlzUmVzb2x2ZWROYW1lKHtcbiAgICAgICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICAgICAgY29udGFpbmluZ0ZpbGVOYW1lOiB0c1NvdXJjZUZpbGUuZmlsZU5hbWUsXG4gICAgICAgICAgICAgIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSxcbiAgICAgICAgICAgICAgbmFtZTogbGluay5uYW1lLFxuICAgICAgICAgICAgICBwcm9ncmFtXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaXNSZXNvbHZlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgbmFtZTogcmVwb3J0ZWROYW1lXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9jOiB7XG4gICAgICAgICAgICAgIGVuZDogY29udGV4dC5zb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChsaW5rLm5hbWUuZ2V0RW5kKCkpLFxuICAgICAgICAgICAgICBzdGFydDogY29udGV4dC5zb3VyY2VDb2RlLmdldExvY0Zyb21JbmRleChsaW5rLm5hbWUuZ2V0U3RhcnQoKSlcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IE1FU1NBR0VfSURcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZpc2l0Tm9kZSh0c1NvdXJjZUZpbGUpO1xuICAgICAgICBmb3IgKGNvbnN0IGxpbmsgb2YgbGlua3MpIHtcbiAgICAgICAgICByZXBvcnRJZlVucmVzb2x2ZWQobGluayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdEaXNhbGxvdyBKU0RvYyBsaW5rIHRhZ3Mgd2hvc2UgdGFyZ2V0IGRvZXMgbm90IHJlc29sdmUgdG8gYSBzeW1ib2wnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnSlNEb2MgbGluayB0YXJnZXQgYHt7bmFtZX19YCBkb2VzIG5vdCByZXNvbHZlLiBXYXMgaXQgcmVuYW1lZCBvciByZW1vdmVkPydcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3Byb2JsZW0nXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNvbGxlY3RMb2NhbERlY2xhcmF0aW9uTmFtZShub2RlOiBOb2RlLCBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWU6IE1hcDxzdHJpbmcsIElkZW50aWZpZXJbXT4pOiB2b2lkIHtcbiAgaWYgKCFpc0xvY2FsRGVjbGFyYXRpb24obm9kZSkgfHwgIW5vZGUubmFtZSB8fCAhaXNJZGVudGlmaWVyKG5vZGUubmFtZSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgbmFtZXMgPSBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuZ2V0KG5vZGUubmFtZS50ZXh0KSA/PyBbXTtcbiAgbmFtZXMucHVzaChub2RlLm5hbWUpO1xuICBsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuc2V0KG5vZGUubmFtZS50ZXh0LCBuYW1lcyk7XG59XG5cbmZ1bmN0aW9uIGZpbmRNb2R1bGUocHJvZ3JhbTogUHJvZ3JhbSwgY2hlY2tlcjogVHlwZUNoZWNrZXIsIHNwZWNpZmllcjogc3RyaW5nLCBjb250YWluaW5nRmlsZU5hbWU6IHN0cmluZyk6IFRzU3ltYm9sIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYW1iaWVudE1vZHVsZSA9IGdldFByb2dyYW1JbmRleChwcm9ncmFtLCBjaGVja2VyKS5tb2R1bGVzQnlQYXRoLmdldChzcGVjaWZpZXIpO1xuICBpZiAoYW1iaWVudE1vZHVsZSkge1xuICAgIHJldHVybiBhbWJpZW50TW9kdWxlO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRGaWxlTmFtZSA9IHJlc29sdmVNb2R1bGVOYW1lKHNwZWNpZmllciwgY29udGFpbmluZ0ZpbGVOYW1lLCBwcm9ncmFtLmdldENvbXBpbGVyT3B0aW9ucygpLCBzeXMpLnJlc29sdmVkTW9kdWxlPy5yZXNvbHZlZEZpbGVOYW1lO1xuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGUgPSByZXNvbHZlZEZpbGVOYW1lID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRGaWxlTmFtZSk7XG4gIGNvbnN0IHJlc29sdmVkTW9kdWxlID0gcmVzb2x2ZWRTb3VyY2VGaWxlICYmIGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihyZXNvbHZlZFNvdXJjZUZpbGUpO1xuICByZXR1cm4gcmVzb2x2ZWRNb2R1bGUgPz8gZmluZE1vZHVsZUJ5UGF0aFN1ZmZpeChwcm9ncmFtLCBjaGVja2VyLCBzcGVjaWZpZXIpO1xufVxuXG5mdW5jdGlvbiBmaW5kTW9kdWxlQnlQYXRoU3VmZml4KHByb2dyYW06IFByb2dyYW0sIGNoZWNrZXI6IFR5cGVDaGVja2VyLCBtb2R1bGVQYXRoOiBzdHJpbmcpOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gbW9kdWxlUGF0aC5yZXBsYWNlKFJFTEFUSVZFX1BBVEhfUFJFRklYX1JFR19FWFAsICcnKS5yZXBsYWNlKFNPVVJDRV9GSUxFX0VYVEVOU0lPTl9SRUdfRVhQLCAnJyk7XG4gIGNvbnN0IHN1ZmZpeGVzID0gW2AvJHtub3JtYWxpemVkUGF0aH1gLCBgLyR7bm9ybWFsaXplZFBhdGh9JHtJTkRFWF9TVUZGSVh9YF07XG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBwYXRoV2l0aG91dEV4dGVuc2lvbiA9IHNvdXJjZUZpbGUuZmlsZU5hbWUucmVwbGFjZShTT1VSQ0VfRklMRV9FWFRFTlNJT05fUkVHX0VYUCwgJycpO1xuICAgIGlmIChzdWZmaXhlcy5ldmVyeSgoc3VmZml4KSA9PiAhcGF0aFdpdGhvdXRFeHRlbnNpb24uZW5kc1dpdGgoc3VmZml4KSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBtb2R1bGVTeW1ib2wgPSBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oc291cmNlRmlsZSk7XG4gICAgaWYgKG1vZHVsZVN5bWJvbCkge1xuICAgICAgcmV0dXJuIG1vZHVsZVN5bWJvbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZmxhdHRlbk5hbWUobmFtZTogRW50aXR5TmFtZSB8IEpTRG9jTWVtYmVyTmFtZSk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGlzSWRlbnRpZmllcihuYW1lKSA/IFtuYW1lLnRleHRdIDogWy4uLmZsYXR0ZW5OYW1lKG5hbWUubGVmdCksIG5hbWUucmlnaHQudGV4dF07XG59XG5cbmZ1bmN0aW9uIGdldE1lbWJlcihjaGVja2VyOiBUeXBlQ2hlY2tlciwgJHN5bWJvbDogVHNTeW1ib2wsIG1lbWJlck5hbWU6IHN0cmluZyk6IFRzU3ltYm9sIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZXNjYXBlZE5hbWUgPSBlc2NhcGVMZWFkaW5nVW5kZXJzY29yZXMobWVtYmVyTmFtZSk7XG4gIGNvbnN0IHRhcmdldCA9IHJlc29sdmVBbGlhcyhjaGVja2VyLCAkc3ltYm9sKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWJpdHdpc2UgLS0gQml0d2lzZSBmbGFnIHRlc3QgaXMgaWRpb21hdGljIGZvciB0aGUgVHlwZVNjcmlwdCBjb21waWxlciBBUEkuXG4gIGNvbnN0IG1vZHVsZUV4cG9ydCA9ICh0YXJnZXQuZmxhZ3MgJiBTeW1ib2xGbGFncy5Nb2R1bGUpID09PSAwID8gdW5kZWZpbmVkIDogY2hlY2tlci50cnlHZXRNZW1iZXJJbk1vZHVsZUV4cG9ydHMobWVtYmVyTmFtZSwgdGFyZ2V0KTtcbiAgcmV0dXJuIG1vZHVsZUV4cG9ydFxuICAgID8/IHRhcmdldC5leHBvcnRzPy5nZXQoZXNjYXBlZE5hbWUpXG4gICAgPz8gdGFyZ2V0Lm1lbWJlcnM/LmdldChlc2NhcGVkTmFtZSlcbiAgICA/PyBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKGNoZWNrZXIuZ2V0RGVjbGFyZWRUeXBlT2ZTeW1ib2wodGFyZ2V0KSwgbWVtYmVyTmFtZSlcbiAgICA/PyBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKGNoZWNrZXIuZ2V0VHlwZU9mU3ltYm9sKHRhcmdldCksIG1lbWJlck5hbWUpO1xufVxuXG5mdW5jdGlvbiBnZXRQcm9ncmFtSW5kZXgocHJvZ3JhbTogUHJvZ3JhbSwgY2hlY2tlcjogVHlwZUNoZWNrZXIpOiBQcm9ncmFtSW5kZXgge1xuICBsZXQgaW5kZXggPSBwcm9ncmFtSW5kZXhDYWNoZS5nZXQocHJvZ3JhbSk7XG4gIGlmIChpbmRleCkge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIGluZGV4ID0ge1xuICAgIGV4cG9ydHNCeU5hbWU6IG5ldyBNYXA8c3RyaW5nLCBUc1N5bWJvbFtdPigpLFxuICAgIG1vZHVsZXNCeVBhdGg6IG5ldyBNYXA8c3RyaW5nLCBUc1N5bWJvbD4oKVxuICB9O1xuXG4gIGNvbnN0IG1vZHVsZVN5bWJvbHM6IFRzU3ltYm9sW10gPSBbXTtcbiAgZm9yIChjb25zdCBhbWJpZW50TW9kdWxlIG9mIGNoZWNrZXIuZ2V0QW1iaWVudE1vZHVsZXMoKSkge1xuICAgIGluZGV4Lm1vZHVsZXNCeVBhdGguc2V0KGFtYmllbnRNb2R1bGUubmFtZS5yZXBsYWNlQWxsKCdcIicsICcnKSwgYW1iaWVudE1vZHVsZSk7XG4gICAgbW9kdWxlU3ltYm9scy5wdXNoKGFtYmllbnRNb2R1bGUpO1xuICB9XG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBtb2R1bGVTeW1ib2wgPSBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oc291cmNlRmlsZSk7XG4gICAgaWYgKG1vZHVsZVN5bWJvbCkge1xuICAgICAgbW9kdWxlU3ltYm9scy5wdXNoKG1vZHVsZVN5bWJvbCk7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCBtb2R1bGVTeW1ib2wgb2YgbW9kdWxlU3ltYm9scykge1xuICAgIGZvciAoY29uc3QgZXhwb3J0U3ltYm9sIG9mIGNoZWNrZXIuZ2V0RXhwb3J0c09mTW9kdWxlKG1vZHVsZVN5bWJvbCkpIHtcbiAgICAgIGNvbnN0IHN5bWJvbHMgPSBpbmRleC5leHBvcnRzQnlOYW1lLmdldChleHBvcnRTeW1ib2wubmFtZSkgPz8gW107XG4gICAgICBzeW1ib2xzLnB1c2goZXhwb3J0U3ltYm9sKTtcbiAgICAgIGluZGV4LmV4cG9ydHNCeU5hbWUuc2V0KGV4cG9ydFN5bWJvbC5uYW1lLCBzeW1ib2xzKTtcbiAgICB9XG4gIH1cblxuICBwcm9ncmFtSW5kZXhDYWNoZS5zZXQocHJvZ3JhbSwgaW5kZXgpO1xuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGlzSlNEb2NMaW5rTGlrZShub2RlOiBOb2RlKTogbm9kZSBpcyBKU0RvY0xpbmtMaWtlIHtcbiAgcmV0dXJuIGlzSlNEb2NMaW5rKG5vZGUpIHx8IGlzSlNEb2NMaW5rQ29kZShub2RlKSB8fCBpc0pTRG9jTGlua1BsYWluKG5vZGUpO1xufVxuXG5mdW5jdGlvbiBpc0xvY2FsRGVjbGFyYXRpb24obm9kZTogTm9kZSk6IG5vZGUgaXMgTG9jYWxEZWNsYXJhdGlvbiB7XG4gIHJldHVybiBpc0NsYXNzRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc0VudW1EZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzSW50ZXJmYWNlRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc01ldGhvZERlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNNZXRob2RTaWduYXR1cmUobm9kZSlcbiAgICB8fCBpc01vZHVsZURlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNQcm9wZXJ0eURlY2xhcmF0aW9uKG5vZGUpXG4gICAgfHwgaXNQcm9wZXJ0eVNpZ25hdHVyZShub2RlKVxuICAgIHx8IGlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihub2RlKVxuICAgIHx8IGlzVHlwZUFsaWFzRGVjbGFyYXRpb24obm9kZSlcbiAgICB8fCBpc1ZhcmlhYmxlRGVjbGFyYXRpb24obm9kZSk7XG59XG5cbmZ1bmN0aW9uIGlzUmVzb2x2ZWROYW1lKHBhcmFtczogSXNSZXNvbHZlZE5hbWVQYXJhbXMpOiBib29sZWFuIHtcbiAgY29uc3Qge1xuICAgIGNoZWNrZXIsXG4gICAgY29udGFpbmluZ0ZpbGVOYW1lLFxuICAgIGxvY2FsRGVjbGFyYXRpb25OYW1lc0J5TmFtZSxcbiAgICBuYW1lLFxuICAgIHByb2dyYW1cbiAgfSA9IHBhcmFtcztcblxuICBpZiAoY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5hbWUpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvLyBgRm9vI2JhcmAgaXMgYSBgSlNEb2NNZW1iZXJOYW1lYCwgd2hpY2ggdGhlIGNoZWNrZXIgcmVzb2x2ZXMgb25seSB0aHJvdWdoIGl0cyByaWdodC1oYW5kIG1lbWJlci5cbiAgaWYgKGlzSlNEb2NNZW1iZXJOYW1lKG5hbWUpICYmIGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihuYW1lLnJpZ2h0KSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgW3Jvb3ROYW1lID0gJycsIC4uLm1lbWJlck5hbWVzXSA9IGZsYXR0ZW5OYW1lKG5hbWUpO1xuICBjb25zdCBpbmRleCA9IGdldFByb2dyYW1JbmRleChwcm9ncmFtLCBjaGVja2VyKTtcbiAgY29uc3QgbG9jYWxSb290cyA9IChsb2NhbERlY2xhcmF0aW9uTmFtZXNCeU5hbWUuZ2V0KHJvb3ROYW1lKSA/PyBbXSkubWFwKChkZWNsYXJhdGlvbk5hbWUpID0+IGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihkZWNsYXJhdGlvbk5hbWUpKTtcbiAgY29uc3Qgcm9vdHMgPSBbLi4ubG9jYWxSb290cywgLi4uaW5kZXguZXhwb3J0c0J5TmFtZS5nZXQocm9vdE5hbWUpID8/IFtdLCBmaW5kTW9kdWxlKHByb2dyYW0sIGNoZWNrZXIsIHJvb3ROYW1lLCBjb250YWluaW5nRmlsZU5hbWUpXTtcblxuICByZXR1cm4gcm9vdHMuc29tZSgocm9vdCkgPT4gISFyZXNvbHZlTWVtYmVyUGF0aChjaGVja2VyLCByb290LCBtZW1iZXJOYW1lcykpO1xufVxuXG5mdW5jdGlvbiByZXNvbHZlQWxpYXMoY2hlY2tlcjogVHlwZUNoZWNrZXIsICRzeW1ib2w6IFRzU3ltYm9sKTogVHNTeW1ib2wge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYml0d2lzZSAtLSBCaXR3aXNlIGZsYWcgdGVzdCBpcyBpZGlvbWF0aWMgZm9yIHRoZSBUeXBlU2NyaXB0IGNvbXBpbGVyIEFQSS5cbiAgcmV0dXJuICgkc3ltYm9sLmZsYWdzICYgU3ltYm9sRmxhZ3MuQWxpYXMpID09PSAwID8gJHN5bWJvbCA6IGNoZWNrZXIuZ2V0QWxpYXNlZFN5bWJvbCgkc3ltYm9sKTtcbn1cblxuZnVuY3Rpb24gcmVzb2x2ZU1lbWJlclBhdGgoY2hlY2tlcjogVHlwZUNoZWNrZXIsIHJvb3Q6IFRzU3ltYm9sIHwgdW5kZWZpbmVkLCBtZW1iZXJOYW1lczogcmVhZG9ubHkgc3RyaW5nW10pOiBUc1N5bWJvbCB8IHVuZGVmaW5lZCB7XG4gIGxldCBjdXJyZW50OiBUc1N5bWJvbCB8IHVuZGVmaW5lZCA9IHJvb3Q7XG4gIGZvciAoY29uc3QgbWVtYmVyTmFtZSBvZiBtZW1iZXJOYW1lcykge1xuICAgIGlmICghY3VycmVudCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY3VycmVudCA9IGdldE1lbWJlcihjaGVja2VyLCBjdXJyZW50LCBtZW1iZXJOYW1lKTtcbiAgfVxuICByZXR1cm4gY3VycmVudDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFnRUEsd0JBeUJPO0FBRVAsNEJBQStCO0FBS3hCLE1BQU0sYUFBYTtBQWtDMUIsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSxzQkFBc0I7QUFDNUIsTUFBTSwrQkFBK0I7QUFDckMsTUFBTSwyQkFBMkI7QUFDakMsTUFBTSxnQ0FBZ0M7QUFDdEMsTUFBTSxlQUFlO0FBRXJCLE1BQU0sb0JBQW9CLG9CQUFJLFFBQStCO0FBS3RELE1BQU0sd0JBQXlDO0FBQUEsRUFDcEQsT0FBTyxTQUFTO0FBQ2QsVUFBTSxXQUFXLFFBQVEsV0FBVztBQUVwQyxXQUFPO0FBQUEsTUFDTCxRQUFRLE1BQVk7QUFDbEIsY0FBTSxV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
|
|
@@ -240,4 +240,4 @@ function record(node) {
|
|
|
240
240
|
MESSAGE_ID,
|
|
241
241
|
noUnusedParamsMembers
|
|
242
242
|
});
|
|
243
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11bnVzZWQtcGFyYW1zLW1lbWJlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby11bnVzZWQtcGFyYW1zLW1lbWJlcnNcbiAqXG4gKiBGbGFncyBtZW1iZXJzIG9mIGEgYCpQYXJhbXNgIC8gYCpPcHRpb25zYCBwYXJhbWV0ZXItYmFnIGludGVyZmFjZSB0aGF0IGFyZVxuICogbmV2ZXIgYWNjZXNzZWQgd2l0aGluIHRoZSBmdW5jdGlvbi9tZXRob2QvY29uc3RydWN0b3IgdGhhdCByZWNlaXZlcyB0aGVcbiAqIGludGVyZmFjZSBhcyBhIHBhcmFtZXRlci5cbiAqXG4gKiBEZXRlY3Rpb24gaXMgcGVyLWZ1bmN0aW9uLCB1c2luZyBzY29wZSBhbmFseXNpcyB0byBmaW5kIHRoZSByZWFsIHJlZmVyZW5jZXNcbiAqIHRvIHRoZSBwYXJhbWV0ZXIgKG5vdCB1bnJlbGF0ZWQgc2FtZS1uYW1lZCBpZGVudGlmaWVycykuIEEgbWVtYmVyIGNvdW50cyBhc1xuICogdXNlZCB3aGVuIGl0IGlzIHJlZmVyZW5jZWQgYnkgbmFtZSDigJQgYHBhcmFtcy5tZW1iZXJgLCBgcGFyYW1zWydtZW1iZXInXWAsIG9yXG4gKiBgY29uc3QgeyBtZW1iZXIgfSA9IHBhcmFtc2AgKHBsdXMgYSBkZXN0cnVjdHVyZWQgc2lnbmF0dXJlXG4gKiBgZm4oeyBtZW1iZXIgfTogRm9vUGFyYW1zKWApLlxuICpcbiAqIENydWNpYWxseSwgaWYgdGhlIG9iamVjdCBldmVyIEVTQ0FQRVMgd2hvbGUg4oCUIHNwcmVhZCAoYHsgLi4ucGFyYW1zIH1gKSwgcmVzdFxuICogKGBjb25zdCB7IC4uLnJlc3QgfSA9IHBhcmFtc2ApLCBwYXNzZWQgYXMgYW4gYXJndW1lbnQgKGBmKHBhcmFtcylgKSwgcmV0dXJuZWQsXG4gKiBvciBzdG9yZWQgKGB0aGlzLnBhcmFtcyA9IHBhcmFtc2ApIOKAlCBldmVyeSBtZW1iZXIgaXMgdHJlYXRlZCBhcyB1c2VkIGFuZFxuICogbm90aGluZyBpcyByZXBvcnRlZCBmb3IgdGhhdCBpbnRlcmZhY2UuIFN1Y2ggYW4gZXNjYXBlIGVpdGhlciByZWFkcyBldmVyeVxuICogbWVtYmVyIChzcHJlYWQvcmVzdCkgb3IgaGFuZHMgdGhlIG9iamVjdCB0byBjb2RlIHRoaXMgcnVsZSBjYW5ub3Qgc2VlLCBzb1xuICogbWVtYmVyIGRlYWRuZXNzIGNhbm5vdCBiZSBkZWNpZGVkIGxvY2FsbHkuXG4gKlxuICogQSBtZW1iZXIgaXMgdGhlcmVmb3JlIGZsYWdnZWQgb25seSB3aGVuIGl0IGlzIG5ldmVyIHJlZmVyZW5jZWQgYnkgbmFtZSBBTkRcbiAqIHRoZSBvYmplY3QgbmV2ZXIgZXNjYXBlcyDigJQgaS5lLiB0aGUgXCJhIGBwYXJhbXMueGAgdXNhZ2Ugd2FzIGRlbGV0ZWQgYnV0IGB4YFxuICogd2FzIGxlZnQgb24gdGhlIGludGVyZmFjZVwiIGNhc2UuIEEgbWVtYmVyIHRoYXQgaXMgYWN0dWFsbHkgc3RpbGwgbmVlZGVkIChyZWFkXG4gKiB2aWEgYW4gZXNjYXBlKSBpcyBuZXZlciB3cm9uZ2x5IGZsYWdnZWQ7IGEgbWVtYmVyIHRoYXQgaXMgZXNjYXBlZCBidXQgZGVhZFxuICogZG93bnN0cmVhbSBpcyBhIHRvbGVyYXRlZCBmYWxzZSBuZWdhdGl2ZSAoaXRzIGRlYWRuZXNzIGlzIG5vdCBsb2NhbCkuXG4gKlxuICogT25seSBpbnRlcmZhY2VzIGRlY2xhcmVkIGluIHRoZSBzYW1lIGZpbGUgYXJlIGNoZWNrZWQ7IGFuIGltcG9ydGVkIHBhcmFtZXRlclxuICogdHlwZSBpcyBza2lwcGVkLiBPbmx5IGlkZW50aWZpZXItbmFtZWQgbWVtYmVycyBhcmUgdHJhY2tlZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJ1bGUsXG4gIFNjb3BlXG59IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuY29uc3QgUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4gPSAvKD86UGFyYW1zfE9wdGlvbnMpJC87XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgYCpQYXJhbXNgL2AqT3B0aW9uc2AgaW50ZXJmYWNlIG1lbWJlciBpcyBuZXZlciBhY2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAndW51c2VkUGFyYW1zTWVtYmVyJztcblxuaW50ZXJmYWNlIElkZW50aWZpZXJCaW5kaW5nIHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiAnaWRlbnRpZmllcic7XG59XG5cbmludGVyZmFjZSBJbnRlcmZhY2VVc2FnZSB7XG4gIHJlYWRvbmx5IHVzZWQ6IFNldDxzdHJpbmc+O1xuICB1c2VzQWxsOiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgTWF5YmVUeXBlZE5vZGUge1xuICB0eXBlPzogdW5rbm93bjtcbn1cblxudHlwZSBQYXJhbWV0ZXJCaW5kaW5nID0gSWRlbnRpZmllckJpbmRpbmcgfCBQYXR0ZXJuQmluZGluZztcblxuaW50ZXJmYWNlIFBhcmFtZXRlckluZm8ge1xuICByZWFkb25seSBiaW5kaW5nOiBQYXJhbWV0ZXJCaW5kaW5nO1xuICByZWFkb25seSB0eXBlTmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgUGF0dGVybkJpbmRpbmcge1xuICBwYXR0ZXJuOiBSdWxlLk5vZGU7XG4gIHR5cGU6ICdwYXR0ZXJuJztcbn1cblxuLyoqXG4gKiBFU0xpbnQgcnVsZSBmbGFnZ2luZyBgKlBhcmFtc2AvYCpPcHRpb25zYCBpbnRlcmZhY2UgbWVtYmVycyB0aGF0IHRoZSBmdW5jdGlvbiByZWNlaXZpbmcgdGhlbSBuZXZlciBhY2Nlc3Nlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVW51c2VkUGFyYW1zTWVtYmVyczogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IGludGVyZmFjZUtleU5vZGVzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFJ1bGUuTm9kZT4+KCk7XG4gICAgY29uc3QgdXNhZ2VCeUludGVyZmFjZSA9IG5ldyBNYXA8c3RyaW5nLCBJbnRlcmZhY2VVc2FnZT4oKTtcblxuICAgIHJldHVybiB7XG4gICAgICAnOmZ1bmN0aW9uJyhub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgb2YgcmVjb3JkKG5vZGUpWydwYXJhbXMnXSBhcyBSdWxlLk5vZGVbXSkge1xuICAgICAgICAgIGNvbnN0IGluZm8gPSBnZXRQYXJhbWV0ZXJJbmZvKHBhcmFtZXRlcik7XG4gICAgICAgICAgaWYgKCFpbmZvKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB1c2FnZSA9IGdldE9yQ3JlYXRlVXNhZ2UoaW5mby50eXBlTmFtZSk7XG4gICAgICAgICAgaWYgKGluZm8uYmluZGluZy50eXBlID09PSAncGF0dGVybicpIHtcbiAgICAgICAgICAgIGNvbGxlY3RQYXR0ZXJuTWVtYmVycyhpbmZvLmJpbmRpbmcucGF0dGVybiwgdXNhZ2UpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2xsZWN0UmVmZXJlbmNlTWVtYmVycyh7XG4gICAgICAgICAgICAgIHBhcmFtZXRlck5hbWU6IGluZm8uYmluZGluZy5uYW1lLFxuICAgICAgICAgICAgICBzY29wZTogY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlKG5vZGUpLFxuICAgICAgICAgICAgICB1c2FnZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgJ1Byb2dyYW06ZXhpdCcoKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgW3R5cGVOYW1lLCBrZXlOb2Rlc10gb2YgaW50ZXJmYWNlS2V5Tm9kZXMpIHtcbiAgICAgICAgICBjb25zdCB1c2FnZSA9IHVzYWdlQnlJbnRlcmZhY2UuZ2V0KHR5cGVOYW1lKTtcbiAgICAgICAgICBpZiAoIXVzYWdlIHx8IHVzYWdlLnVzZXNBbGwpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgW21lbWJlck5hbWUsIGtleU5vZGVdIG9mIGtleU5vZGVzKSB7XG4gICAgICAgICAgICBpZiAoIXVzYWdlLnVzZWQuaGFzKG1lbWJlck5hbWUpKSB7XG4gICAgICAgICAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICBpbnRlcmZhY2VOYW1lOiB0eXBlTmFtZSxcbiAgICAgICAgICAgICAgICAgIG1lbWJlcjogbWVtYmVyTmFtZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lELFxuICAgICAgICAgICAgICAgIG5vZGU6IGtleU5vZGVcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgVFNJbnRlcmZhY2VEZWNsYXJhdGlvbihub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IGdldEludGVyZmFjZU5hbWUobm9kZSk7XG4gICAgICAgIGlmICghUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4udGVzdChuYW1lKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpbnRlcmZhY2VLZXlOb2Rlcy5zZXQobmFtZSwgZ2V0SW50ZXJmYWNlTWVtYmVycyhub2RlKSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIGdldE9yQ3JlYXRlVXNhZ2UodHlwZU5hbWU6IHN0cmluZyk6IEludGVyZmFjZVVzYWdlIHtcbiAgICAgIGxldCB1c2FnZSA9IHVzYWdlQnlJbnRlcmZhY2UuZ2V0KHR5cGVOYW1lKTtcbiAgICAgIGlmICghdXNhZ2UpIHtcbiAgICAgICAgdXNhZ2UgPSB7IHVzZWQ6IG5ldyBTZXQ8c3RyaW5nPigpLCB1c2VzQWxsOiBmYWxzZSB9O1xuICAgICAgICB1c2FnZUJ5SW50ZXJmYWNlLnNldCh0eXBlTmFtZSwgdXNhZ2UpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVzYWdlO1xuICAgIH1cbiAgfSxcbiAgbWV0YToge1xuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOiAnRmxhZyBgKlBhcmFtc2AvYCpPcHRpb25zYCBpbnRlcmZhY2UgbWVtYmVycyBuZXZlciBhY2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyB0aGVtJ1xuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIFtNRVNTQUdFX0lEXTogJ01lbWJlciBcInt7IG1lbWJlciB9fVwiIG9mIFwie3sgaW50ZXJmYWNlTmFtZSB9fVwiIGlzIG5ldmVyIGFjY2Vzc2VkIGJ5IHRoZSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGl0LiBSZW1vdmUgaXQgKHRoZSBjb21waWxlciB3aWxsIGNhdGNoIGl0IGlmIGl0IGlzIHN0aWxsIG5lZWRlZCBlbHNld2hlcmUpLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nXG4gIH1cbn07XG5cbi8qKlxuICogUGFyYW1ldGVycyBmb3Ige0BsaW5rIGNvbGxlY3RSZWZlcmVuY2VNZW1iZXJzfS5cbiAqL1xuaW50ZXJmYWNlIENvbGxlY3RSZWZlcmVuY2VNZW1iZXJzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXJhbWV0ZXIgd2hvc2UgcmVmZXJlbmNlcyBhcmUgaW5zcGVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NvcGUgaW4gd2hpY2ggdGhlIHBhcmFtZXRlciBpcyBib3VuZC5cbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBTY29wZS5TY29wZTtcblxuICAvKipcbiAgICogVGhlIHVzYWdlIGFjY3VtdWxhdG9yIHRvIHJlY29yZCBhY2Nlc3NlZCBtZW1iZXJzIGludG8uXG4gICAqL1xuICByZWFkb25seSB1c2FnZTogSW50ZXJmYWNlVXNhZ2U7XG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5UmVmZXJlbmNlKHJlZmVyZW5jZTogb2JqZWN0LCB1c2FnZTogSW50ZXJmYWNlVXNhZ2UpOiB2b2lkIHtcbiAgY29uc3QgcGFyZW50ID0gcmVjb3JkKHJlZmVyZW5jZSlbJ3BhcmVudCddIGFzIFJ1bGUuTm9kZTtcbiAgaWYgKHBhcmVudC50eXBlID09PSAnTWVtYmVyRXhwcmVzc2lvbicgJiYgcmVjb3JkKHBhcmVudClbJ29iamVjdCddID09PSByZWZlcmVuY2UpIHtcbiAgICBjb2xsZWN0TWVtYmVyQWNjZXNzKHBhcmVudCwgdXNhZ2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChwYXJlbnQudHlwZSA9PT0gJ1ZhcmlhYmxlRGVjbGFyYXRvcicgJiYgcmVjb3JkKHBhcmVudClbJ2luaXQnXSA9PT0gcmVmZXJlbmNlICYmIChyZWNvcmQocGFyZW50KVsnaWQnXSBhcyBSdWxlLk5vZGUpLnR5cGUgPT09ICdPYmplY3RQYXR0ZXJuJykge1xuICAgIGNvbGxlY3RQYXR0ZXJuTWVtYmVycyhyZWNvcmQocGFyZW50KVsnaWQnXSBhcyBSdWxlLk5vZGUsIHVzYWdlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBUaGUgb2JqZWN0IGVzY2FwZXMgd2hvbGUgKHBhc3NlZCBhcyBhbiBhcmd1bWVudCwgcmV0dXJuZWQsIHN0b3JlZCwgc3ByZWFkLCAuLi4pOiBldmVyeSBtZW1iZXIgbWF5IGJlIHJlYWQgZWxzZXdoZXJlLlxuICB1c2FnZS51c2VzQWxsID0gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY29sbGVjdE1lbWJlckFjY2Vzcyhub2RlOiBSdWxlLk5vZGUsIHVzYWdlOiBJbnRlcmZhY2VVc2FnZSk6IHZvaWQge1xuICBjb25zdCBpc0NvbXB1dGVkID0gcmVjb3JkKG5vZGUpWydjb21wdXRlZCddID09PSB0cnVlO1xuICBjb25zdCBwcm9wZXJ0eSA9IHJlY29yZChub2RlKVsncHJvcGVydHknXSBhcyBSdWxlLk5vZGU7XG4gIGlmIChwcm9wZXJ0eS50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICBpZiAoIWlzQ29tcHV0ZWQpIHtcbiAgICAgIHVzYWdlLnVzZWQuYWRkKHJlY29yZChwcm9wZXJ0eSlbJ25hbWUnXSBhcyBzdHJpbmcpO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocHJvcGVydHkudHlwZSAhPT0gJ0xpdGVyYWwnKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdmFsdWUgPSByZWNvcmQocHJvcGVydHkpWyd2YWx1ZSddO1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHVzYWdlLnVzZWQuYWRkKHZhbHVlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0UGF0dGVybk1lbWJlcnMocGF0dGVybjogUnVsZS5Ob2RlLCB1c2FnZTogSW50ZXJmYWNlVXNhZ2UpOiB2b2lkIHtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiByZWNvcmQocGF0dGVybilbJ3Byb3BlcnRpZXMnXSBhcyBSdWxlLk5vZGVbXSkge1xuICAgIGlmIChwcm9wZXJ0eS50eXBlICE9PSAnUHJvcGVydHknKSB7XG4gICAgICAvLyBgY29uc3QgeyAuLi5yZXN0IH0gPSBwYXJhbXNgIHJlYWRzIGV2ZXJ5IHJlbWFpbmluZyBtZW1iZXIuXG4gICAgICB1c2FnZS51c2VzQWxsID0gdHJ1ZTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAocmVjb3JkKHByb3BlcnR5KVsnY29tcHV0ZWQnXSA9PT0gdHJ1ZSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGtleSA9IHJlY29yZChwcm9wZXJ0eSlbJ2tleSddIGFzIFJ1bGUuTm9kZTtcbiAgICBpZiAoa2V5LnR5cGUgPT09ICdJZGVudGlmaWVyJykge1xuICAgICAgdXNhZ2UudXNlZC5hZGQocmVjb3JkKGtleSlbJ25hbWUnXSBhcyBzdHJpbmcpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjb2xsZWN0UmVmZXJlbmNlTWVtYmVycyhwYXJhbXM6IENvbGxlY3RSZWZlcmVuY2VNZW1iZXJzUGFyYW1zKTogdm9pZCB7XG4gIGNvbnN0IHsgcGFyYW1ldGVyTmFtZSwgc2NvcGUsIHVzYWdlIH0gPSBwYXJhbXM7XG4gIGNvbnN0IHZhcmlhYmxlID0gZW5zdXJlTm9uTnVsbGFibGUoc2NvcGUuc2V0LmdldChwYXJhbWV0ZXJOYW1lKSk7XG4gIGZvciAoY29uc3QgcmVmZXJlbmNlIG9mIHZhcmlhYmxlLnJlZmVyZW5jZXMpIHtcbiAgICBjbGFzc2lmeVJlZmVyZW5jZShyZWZlcmVuY2UuaWRlbnRpZmllciwgdXNhZ2UpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEludGVyZmFjZU1lbWJlcnMobm9kZTogUnVsZS5Ob2RlKTogTWFwPHN0cmluZywgUnVsZS5Ob2RlPiB7XG4gIGNvbnN0IG1lbWJlcnMgPSBuZXcgTWFwPHN0cmluZywgUnVsZS5Ob2RlPigpO1xuICBjb25zdCBpbnRlcmZhY2VCb2R5ID0gcmVjb3JkKG5vZGUpWydib2R5J10gYXMgUnVsZS5Ob2RlO1xuICBmb3IgKGNvbnN0IHNpZ25hdHVyZSBvZiByZWNvcmQoaW50ZXJmYWNlQm9keSlbJ2JvZHknXSBhcyBSdWxlLk5vZGVbXSkge1xuICAgIGlmICgobm9kZVR5cGUoc2lnbmF0dXJlKSAhPT0gJ1RTUHJvcGVydHlTaWduYXR1cmUnICYmIG5vZGVUeXBlKHNpZ25hdHVyZSkgIT09ICdUU01ldGhvZFNpZ25hdHVyZScpIHx8IChyZWNvcmQoc2lnbmF0dXJlKVsnY29tcHV0ZWQnXSA9PT0gdHJ1ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSByZWNvcmQoc2lnbmF0dXJlKVsna2V5J10gYXMgUnVsZS5Ob2RlO1xuICAgIGlmIChrZXkudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgICBtZW1iZXJzLnNldChyZWNvcmQoa2V5KVsnbmFtZSddIGFzIHN0cmluZywga2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lbWJlcnM7XG59XG5cbmZ1bmN0aW9uIGdldEludGVyZmFjZU5hbWUobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHtcbiAgY29uc3QgaWQgPSByZWNvcmQobm9kZSlbJ2lkJ10gYXMgUnVsZS5Ob2RlO1xuICByZXR1cm4gcmVjb3JkKGlkKVsnbmFtZSddIGFzIHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXI6IFJ1bGUuTm9kZSk6IFBhcmFtZXRlckluZm8gfCB1bmRlZmluZWQge1xuICBjb25zdCBhY3R1YWxQYXJhbWV0ZXIgPSBub2RlVHlwZShwYXJhbWV0ZXIpID09PSAnVFNQYXJhbWV0ZXJQcm9wZXJ0eScgPyByZWNvcmQocGFyYW1ldGVyKVsncGFyYW1ldGVyJ10gYXMgUnVsZS5Ob2RlIDogcGFyYW1ldGVyO1xuXG4gIGNvbnN0IHR5cGVOYW1lID0gZ2V0VHlwZVJlZmVyZW5jZU5hbWUoYWN0dWFsUGFyYW1ldGVyKTtcbiAgaWYgKCF0eXBlTmFtZSB8fCAhUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4udGVzdCh0eXBlTmFtZSkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGFjdHVhbFBhcmFtZXRlci50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICByZXR1cm4geyBiaW5kaW5nOiB7IG5hbWU6IHJlY29yZChhY3R1YWxQYXJhbWV0ZXIpWyduYW1lJ10gYXMgc3RyaW5nLCB0eXBlOiAnaWRlbnRpZmllcicgfSwgdHlwZU5hbWUgfTtcbiAgfVxuXG4gIHJldHVybiBhY3R1YWxQYXJhbWV0ZXIudHlwZSA9PT0gJ09iamVjdFBhdHRlcm4nID8geyBiaW5kaW5nOiB7IHBhdHRlcm46IGFjdHVhbFBhcmFtZXRlciwgdHlwZTogJ3BhdHRlcm4nIH0sIHR5cGVOYW1lIH0gOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGdldFR5cGVSZWZlcmVuY2VOYW1lKHBhcmFtZXRlcjogUnVsZS5Ob2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYW5ub3RhdGlvbiA9IHJlY29yZChwYXJhbWV0ZXIpWyd0eXBlQW5ub3RhdGlvbiddO1xuICBpZiAoIWlzTm9kZShhbm5vdGF0aW9uKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCB0eXBlTm9kZSA9IHJlY29yZChhbm5vdGF0aW9uKVsndHlwZUFubm90YXRpb24nXSBhcyBSdWxlLk5vZGU7XG4gIGlmIChub2RlVHlwZSh0eXBlTm9kZSkgIT09ICdUU1R5cGVSZWZlcmVuY2UnKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHR5cGVOYW1lID0gcmVjb3JkKHR5cGVOb2RlKVsndHlwZU5hbWUnXSBhcyBSdWxlLk5vZGU7XG4gIHJldHVybiB0eXBlTmFtZS50eXBlID09PSAnSWRlbnRpZmllcicgPyAocmVjb3JkKHR5cGVOYW1lKVsnbmFtZSddIGFzIHN0cmluZykgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFJ1bGUuTm9kZSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiAodmFsdWUgYXMgTWF5YmVUeXBlZE5vZGUpLnR5cGUgPT09ICdzdHJpbmcnO1xufVxuXG5mdW5jdGlvbiBub2RlVHlwZShub2RlOiBSdWxlLk5vZGUpOiBzdHJpbmcge1xuICByZXR1cm4gcmVjb3JkKG5vZGUpWyd0eXBlJ10gYXMgc3RyaW5nO1xufVxuXG5mdW5jdGlvbiByZWNvcmQobm9kZTogb2JqZWN0KTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gbm9kZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFxQ0EseUJBQWtDO0FBRWxDLE1BQU0sZ0NBQWdDO0FBSy9CLE1BQU0sYUFBYTtBQStCbkIsTUFBTSx3QkFBeUM7QUFBQSxFQUNwRCxPQUFPLFNBQVM7QUFDZCxVQUFNLG9CQUFvQixvQkFBSSxJQUFvQztBQUNsRSxVQUFNLG1CQUFtQixvQkFBSSxJQUE0QjtBQUV6RCxXQUFPO0FBQUEsTUFDTCxZQUFZLE1BQXVCO0FBQ2pDLG1CQUFXLGFBQWEsT0FBTyxJQUFJLEVBQUUsUUFBUSxHQUFrQjtBQUM3RCxnQkFBTSxPQUFPLGlCQUFpQixTQUFTO0FBQ3ZDLGNBQUksQ0FBQyxNQUFNO0FBQ1Q7QUFBQSxVQUNGO0FBRUEsZ0JBQU0sUUFBUSxpQkFBaUIsS0FBSyxRQUFRO0FBQzVDLGNBQUksS0FBSyxRQUFRLFNBQVMsV0FBVztBQUNuQyxrQ0FBc0IsS0FBSyxRQUFRLFNBQVMsS0FBSztBQUFBLFVBQ25ELE9BQU87QUFDTCxvQ0FBd0I7QUFBQSxjQUN0QixlQUFlLEtBQUssUUFBUTtBQUFBLGNBQzVCLE9BQU8sUUFBUSxXQUFXLFNBQVMsSUFBSTtBQUFBLGNBQ3ZDO0FBQUEsWUFDRixDQUFDO0FBQUEsVUFDSDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsTUFDQSxpQkFBdUI7QUFDckIsbUJBQVcsQ0FBQyxVQUFVLFFBQVEsS0FBSyxtQkFBbUI7QUFDcEQsZ0JBQU0sUUFBUSxpQkFBaUIsSUFBSSxRQUFRO0FBQzNDLGNBQUksQ0FBQyxTQUFTLE1BQU0sU0FBUztBQUMzQjtBQUFBLFVBQ0Y7QUFFQSxxQkFBVyxDQUFDLFlBQVksT0FBTyxLQUFLLFVBQVU7QUFDNUMsZ0JBQUks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
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11bnVzZWQtcGFyYW1zLW1lbWJlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZmlsZVxuICpcbiAqIEVTTGludCBydWxlOiBuby11bnVzZWQtcGFyYW1zLW1lbWJlcnNcbiAqXG4gKiBGbGFncyBtZW1iZXJzIG9mIGEgYCpQYXJhbXNgIC8gYCpPcHRpb25zYCBwYXJhbWV0ZXItYmFnIGludGVyZmFjZSB0aGF0IGFyZVxuICogbmV2ZXIgYWNjZXNzZWQgd2l0aGluIHRoZSBmdW5jdGlvbi9tZXRob2QvY29uc3RydWN0b3IgdGhhdCByZWNlaXZlcyB0aGVcbiAqIGludGVyZmFjZSBhcyBhIHBhcmFtZXRlci5cbiAqXG4gKiBEZXRlY3Rpb24gaXMgcGVyLWZ1bmN0aW9uLCB1c2luZyBzY29wZSBhbmFseXNpcyB0byBmaW5kIHRoZSByZWFsIHJlZmVyZW5jZXNcbiAqIHRvIHRoZSBwYXJhbWV0ZXIgKG5vdCB1bnJlbGF0ZWQgc2FtZS1uYW1lZCBpZGVudGlmaWVycykuIEEgbWVtYmVyIGNvdW50cyBhc1xuICogdXNlZCB3aGVuIGl0IGlzIHJlZmVyZW5jZWQgYnkgbmFtZSDigJQgYHBhcmFtcy5tZW1iZXJgLCBgcGFyYW1zWydtZW1iZXInXWAsIG9yXG4gKiBgY29uc3QgeyBtZW1iZXIgfSA9IHBhcmFtc2AgKHBsdXMgYSBkZXN0cnVjdHVyZWQgc2lnbmF0dXJlXG4gKiBgZm4oeyBtZW1iZXIgfTogRm9vUGFyYW1zKWApLlxuICpcbiAqIENydWNpYWxseSwgaWYgdGhlIG9iamVjdCBldmVyIEVTQ0FQRVMgd2hvbGUg4oCUIHNwcmVhZCAoYHsgLi4ucGFyYW1zIH1gKSwgcmVzdFxuICogKGBjb25zdCB7IC4uLnJlc3QgfSA9IHBhcmFtc2ApLCBwYXNzZWQgYXMgYW4gYXJndW1lbnQgKGBmKHBhcmFtcylgKSwgcmV0dXJuZWQsXG4gKiBvciBzdG9yZWQgKGB0aGlzLnBhcmFtcyA9IHBhcmFtc2ApIOKAlCBldmVyeSBtZW1iZXIgaXMgdHJlYXRlZCBhcyB1c2VkIGFuZFxuICogbm90aGluZyBpcyByZXBvcnRlZCBmb3IgdGhhdCBpbnRlcmZhY2UuIFN1Y2ggYW4gZXNjYXBlIGVpdGhlciByZWFkcyBldmVyeVxuICogbWVtYmVyIChzcHJlYWQvcmVzdCkgb3IgaGFuZHMgdGhlIG9iamVjdCB0byBjb2RlIHRoaXMgcnVsZSBjYW5ub3Qgc2VlLCBzb1xuICogbWVtYmVyIGRlYWRuZXNzIGNhbm5vdCBiZSBkZWNpZGVkIGxvY2FsbHkuXG4gKlxuICogQSBtZW1iZXIgaXMgdGhlcmVmb3JlIGZsYWdnZWQgb25seSB3aGVuIGl0IGlzIG5ldmVyIHJlZmVyZW5jZWQgYnkgbmFtZSBBTkRcbiAqIHRoZSBvYmplY3QgbmV2ZXIgZXNjYXBlcyDigJQgaS5lLiB0aGUgXCJhIGBwYXJhbXMueGAgdXNhZ2Ugd2FzIGRlbGV0ZWQgYnV0IGB4YFxuICogd2FzIGxlZnQgb24gdGhlIGludGVyZmFjZVwiIGNhc2UuIEEgbWVtYmVyIHRoYXQgaXMgYWN0dWFsbHkgc3RpbGwgbmVlZGVkIChyZWFkXG4gKiB2aWEgYW4gZXNjYXBlKSBpcyBuZXZlciB3cm9uZ2x5IGZsYWdnZWQ7IGEgbWVtYmVyIHRoYXQgaXMgZXNjYXBlZCBidXQgZGVhZFxuICogZG93bnN0cmVhbSBpcyBhIHRvbGVyYXRlZCBmYWxzZSBuZWdhdGl2ZSAoaXRzIGRlYWRuZXNzIGlzIG5vdCBsb2NhbCkuXG4gKlxuICogT25seSBpbnRlcmZhY2VzIGRlY2xhcmVkIGluIHRoZSBzYW1lIGZpbGUgYXJlIGNoZWNrZWQ7IGFuIGltcG9ydGVkIHBhcmFtZXRlclxuICogdHlwZSBpcyBza2lwcGVkLiBPbmx5IGlkZW50aWZpZXItbmFtZWQgbWVtYmVycyBhcmUgdHJhY2tlZC5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJ1bGUsXG4gIFNjb3BlXG59IGZyb20gJ2VzbGludCc7XG5cbmltcG9ydCB7IGVuc3VyZU5vbk51bGxhYmxlIH0gZnJvbSAnQG1uYW91bW92L3R5cGVzY3JpcHQtbGliL3R5cGUtZ3VhcmRzJztcblxuY29uc3QgUEFSQU1TX09QVElPTlNfU1VGRklYX1BBVFRFUk4gPSAvKD86UGFyYW1zfE9wdGlvbnMpJC87XG5cbi8qKlxuTWVzc2FnZSBJRCByZXBvcnRlZCB3aGVuIGEgYCpQYXJhbXNgL2AqT3B0aW9uc2AgaW50ZXJmYWNlIG1lbWJlciBpcyBuZXZlciBhY2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBpdC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAndW51c2VkUGFyYW1zTWVtYmVyJztcblxuaW50ZXJmYWNlIElkZW50aWZpZXJCaW5kaW5nIHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSB0eXBlOiAnaWRlbnRpZmllcic7XG59XG5cbmludGVyZmFjZSBJbnRlcmZhY2VVc2FnZSB7XG4gIHJlYWRvbmx5IHVzZWQ6IFNldDxzdHJpbmc+O1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdHlwZXNjcmlwdC1kZXYtdG9vbGtpdC9yZWFkb25seS1pbnRlcmZhY2UtbWVtYmVycyAtLSBUcmF2ZXJzYWwgbWFya3MgYW4gaW50ZXJmYWNlIGFzIGVzY2FwZWQgd2hlbiB0aGUgb2JqZWN0IGlzIHBhc3NlZCB3aG9sZS5cbiAgdXNlc0FsbDogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE1heWJlVHlwZWROb2RlIHtcbiAgcmVhZG9ubHkgdHlwZT86IHVua25vd247XG59XG5cbnR5cGUgUGFyYW1ldGVyQmluZGluZyA9IElkZW50aWZpZXJCaW5kaW5nIHwgUGF0dGVybkJpbmRpbmc7XG5cbmludGVyZmFjZSBQYXJhbWV0ZXJJbmZvIHtcbiAgcmVhZG9ubHkgYmluZGluZzogUGFyYW1ldGVyQmluZGluZztcbiAgcmVhZG9ubHkgdHlwZU5hbWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBhdHRlcm5CaW5kaW5nIHtcbiAgcmVhZG9ubHkgcGF0dGVybjogUnVsZS5Ob2RlO1xuICByZWFkb25seSB0eXBlOiAncGF0dGVybic7XG59XG5cbi8qKlxuICogRVNMaW50IHJ1bGUgZmxhZ2dpbmcgYCpQYXJhbXNgL2AqT3B0aW9uc2AgaW50ZXJmYWNlIG1lbWJlcnMgdGhhdCB0aGUgZnVuY3Rpb24gcmVjZWl2aW5nIHRoZW0gbmV2ZXIgYWNjZXNzZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBub1VudXNlZFBhcmFtc01lbWJlcnM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICBjb25zdCBpbnRlcmZhY2VLZXlOb2RlcyA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBSdWxlLk5vZGU+PigpO1xuICAgIGNvbnN0IHVzYWdlQnlJbnRlcmZhY2UgPSBuZXcgTWFwPHN0cmluZywgSW50ZXJmYWNlVXNhZ2U+KCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIG9mIHJlY29yZChub2RlKVsncGFyYW1zJ10gYXMgUnVsZS5Ob2RlW10pIHtcbiAgICAgICAgICBjb25zdCBpbmZvID0gZ2V0UGFyYW1ldGVySW5mbyhwYXJhbWV0ZXIpO1xuICAgICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgdXNhZ2UgPSBnZXRPckNyZWF0ZVVzYWdlKGluZm8udHlwZU5hbWUpO1xuICAgICAgICAgIGlmIChpbmZvLmJpbmRpbmcudHlwZSA9PT0gJ3BhdHRlcm4nKSB7XG4gICAgICAgICAgICBjb2xsZWN0UGF0dGVybk1lbWJlcnMoaW5mby5iaW5kaW5nLnBhdHRlcm4sIHVzYWdlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sbGVjdFJlZmVyZW5jZU1lbWJlcnMoe1xuICAgICAgICAgICAgICBwYXJhbWV0ZXJOYW1lOiBpbmZvLmJpbmRpbmcubmFtZSxcbiAgICAgICAgICAgICAgc2NvcGU6IGNvbnRleHQuc291cmNlQ29kZS5nZXRTY29wZShub2RlKSxcbiAgICAgICAgICAgICAgdXNhZ2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdQcm9ncmFtOmV4aXQnKCk6IHZvaWQge1xuICAgICAgICBmb3IgKGNvbnN0IFt0eXBlTmFtZSwga2V5Tm9kZXNdIG9mIGludGVyZmFjZUtleU5vZGVzKSB7XG4gICAgICAgICAgY29uc3QgdXNhZ2UgPSB1c2FnZUJ5SW50ZXJmYWNlLmdldCh0eXBlTmFtZSk7XG4gICAgICAgICAgaWYgKCF1c2FnZSB8fCB1c2FnZS51c2VzQWxsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IFttZW1iZXJOYW1lLCBrZXlOb2RlXSBvZiBrZXlOb2Rlcykge1xuICAgICAgICAgICAgaWYgKCF1c2FnZS51c2VkLmhhcyhtZW1iZXJOYW1lKSkge1xuICAgICAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlTmFtZTogdHlwZU5hbWUsXG4gICAgICAgICAgICAgICAgICBtZW1iZXI6IG1lbWJlck5hbWVcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICAgICAgICAgICAgICBub2RlOiBrZXlOb2RlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIFRTSW50ZXJmYWNlRGVjbGFyYXRpb24obm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBnZXRJbnRlcmZhY2VOYW1lKG5vZGUpO1xuICAgICAgICBpZiAoIVBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLnRlc3QobmFtZSkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaW50ZXJmYWNlS2V5Tm9kZXMuc2V0KG5hbWUsIGdldEludGVyZmFjZU1lbWJlcnMobm9kZSkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBnZXRPckNyZWF0ZVVzYWdlKHR5cGVOYW1lOiBzdHJpbmcpOiBJbnRlcmZhY2VVc2FnZSB7XG4gICAgICBsZXQgdXNhZ2UgPSB1c2FnZUJ5SW50ZXJmYWNlLmdldCh0eXBlTmFtZSk7XG4gICAgICBpZiAoIXVzYWdlKSB7XG4gICAgICAgIHVzYWdlID0geyB1c2VkOiBuZXcgU2V0PHN0cmluZz4oKSwgdXNlc0FsbDogZmFsc2UgfTtcbiAgICAgICAgdXNhZ2VCeUludGVyZmFjZS5zZXQodHlwZU5hbWUsIHVzYWdlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1c2FnZTtcbiAgICB9XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ0ZsYWcgYCpQYXJhbXNgL2AqT3B0aW9uc2AgaW50ZXJmYWNlIG1lbWJlcnMgbmV2ZXIgYWNjZXNzZWQgYnkgdGhlIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgdGhlbSdcbiAgICB9LFxuICAgIG1lc3NhZ2VzOiB7XG4gICAgICBbTUVTU0FHRV9JRF06ICdNZW1iZXIgXCJ7eyBtZW1iZXIgfX1cIiBvZiBcInt7IGludGVyZmFjZU5hbWUgfX1cIiBpcyBuZXZlciBhY2Nlc3NlZCBieSB0aGUgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBpdC4gUmVtb3ZlIGl0ICh0aGUgY29tcGlsZXIgd2lsbCBjYXRjaCBpdCBpZiBpdCBpcyBzdGlsbCBuZWVkZWQgZWxzZXdoZXJlKS4nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG4vKipcbiAqIFBhcmFtZXRlcnMgZm9yIHtAbGluayBjb2xsZWN0UmVmZXJlbmNlTWVtYmVyc30uXG4gKi9cbmludGVyZmFjZSBDb2xsZWN0UmVmZXJlbmNlTWVtYmVyc1BhcmFtcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHdob3NlIHJlZmVyZW5jZXMgYXJlIGluc3BlY3RlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNjb3BlIGluIHdoaWNoIHRoZSBwYXJhbWV0ZXIgaXMgYm91bmQuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogU2NvcGUuU2NvcGU7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2FnZSBhY2N1bXVsYXRvciB0byByZWNvcmQgYWNjZXNzZWQgbWVtYmVycyBpbnRvLlxuICAgKi9cbiAgcmVhZG9ubHkgdXNhZ2U6IEludGVyZmFjZVVzYWdlO1xufVxuXG5mdW5jdGlvbiBjbGFzc2lmeVJlZmVyZW5jZShyZWZlcmVuY2U6IG9iamVjdCwgdXNhZ2U6IEludGVyZmFjZVVzYWdlKTogdm9pZCB7XG4gIGNvbnN0IHBhcmVudCA9IHJlY29yZChyZWZlcmVuY2UpWydwYXJlbnQnXSBhcyBSdWxlLk5vZGU7XG4gIGlmIChwYXJlbnQudHlwZSA9PT0gJ01lbWJlckV4cHJlc3Npb24nICYmIHJlY29yZChwYXJlbnQpWydvYmplY3QnXSA9PT0gcmVmZXJlbmNlKSB7XG4gICAgY29sbGVjdE1lbWJlckFjY2VzcyhwYXJlbnQsIHVzYWdlKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAocGFyZW50LnR5cGUgPT09ICdWYXJpYWJsZURlY2xhcmF0b3InICYmIHJlY29yZChwYXJlbnQpWydpbml0J10gPT09IHJlZmVyZW5jZSAmJiAocmVjb3JkKHBhcmVudClbJ2lkJ10gYXMgUnVsZS5Ob2RlKS50eXBlID09PSAnT2JqZWN0UGF0dGVybicpIHtcbiAgICBjb2xsZWN0UGF0dGVybk1lbWJlcnMocmVjb3JkKHBhcmVudClbJ2lkJ10gYXMgUnVsZS5Ob2RlLCB1c2FnZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gVGhlIG9iamVjdCBlc2NhcGVzIHdob2xlIChwYXNzZWQgYXMgYW4gYXJndW1lbnQsIHJldHVybmVkLCBzdG9yZWQsIHNwcmVhZCwgLi4uKTogZXZlcnkgbWVtYmVyIG1heSBiZSByZWFkIGVsc2V3aGVyZS5cbiAgdXNhZ2UudXNlc0FsbCA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RNZW1iZXJBY2Nlc3Mobm9kZTogUnVsZS5Ob2RlLCB1c2FnZTogSW50ZXJmYWNlVXNhZ2UpOiB2b2lkIHtcbiAgY29uc3QgaXNDb21wdXRlZCA9IHJlY29yZChub2RlKVsnY29tcHV0ZWQnXSA9PT0gdHJ1ZTtcbiAgY29uc3QgcHJvcGVydHkgPSByZWNvcmQobm9kZSlbJ3Byb3BlcnR5J10gYXMgUnVsZS5Ob2RlO1xuICBpZiAocHJvcGVydHkudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgaWYgKCFpc0NvbXB1dGVkKSB7XG4gICAgICB1c2FnZS51c2VkLmFkZChyZWNvcmQocHJvcGVydHkpWyduYW1lJ10gYXMgc3RyaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKHByb3BlcnR5LnR5cGUgIT09ICdMaXRlcmFsJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHZhbHVlID0gcmVjb3JkKHByb3BlcnR5KVsndmFsdWUnXTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICB1c2FnZS51c2VkLmFkZCh2YWx1ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdFBhdHRlcm5NZW1iZXJzKHBhdHRlcm46IFJ1bGUuTm9kZSwgdXNhZ2U6IEludGVyZmFjZVVzYWdlKTogdm9pZCB7XG4gIGZvciAoY29uc3QgcHJvcGVydHkgb2YgcmVjb3JkKHBhdHRlcm4pWydwcm9wZXJ0aWVzJ10gYXMgUnVsZS5Ob2RlW10pIHtcbiAgICBpZiAocHJvcGVydHkudHlwZSAhPT0gJ1Byb3BlcnR5Jykge1xuICAgICAgLy8gYGNvbnN0IHsgLi4ucmVzdCB9ID0gcGFyYW1zYCByZWFkcyBldmVyeSByZW1haW5pbmcgbWVtYmVyLlxuICAgICAgdXNhZ2UudXNlc0FsbCA9IHRydWU7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHJlY29yZChwcm9wZXJ0eSlbJ2NvbXB1dGVkJ10gPT09IHRydWUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBrZXkgPSByZWNvcmQocHJvcGVydHkpWydrZXknXSBhcyBSdWxlLk5vZGU7XG4gICAgaWYgKGtleS50eXBlID09PSAnSWRlbnRpZmllcicpIHtcbiAgICAgIHVzYWdlLnVzZWQuYWRkKHJlY29yZChrZXkpWyduYW1lJ10gYXMgc3RyaW5nKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdFJlZmVyZW5jZU1lbWJlcnMocGFyYW1zOiBDb2xsZWN0UmVmZXJlbmNlTWVtYmVyc1BhcmFtcyk6IHZvaWQge1xuICBjb25zdCB7IHBhcmFtZXRlck5hbWUsIHNjb3BlLCB1c2FnZSB9ID0gcGFyYW1zO1xuICBjb25zdCB2YXJpYWJsZSA9IGVuc3VyZU5vbk51bGxhYmxlKHNjb3BlLnNldC5nZXQocGFyYW1ldGVyTmFtZSkpO1xuICBmb3IgKGNvbnN0IHJlZmVyZW5jZSBvZiB2YXJpYWJsZS5yZWZlcmVuY2VzKSB7XG4gICAgY2xhc3NpZnlSZWZlcmVuY2UocmVmZXJlbmNlLmlkZW50aWZpZXIsIHVzYWdlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRJbnRlcmZhY2VNZW1iZXJzKG5vZGU6IFJ1bGUuTm9kZSk6IE1hcDxzdHJpbmcsIFJ1bGUuTm9kZT4ge1xuICBjb25zdCBtZW1iZXJzID0gbmV3IE1hcDxzdHJpbmcsIFJ1bGUuTm9kZT4oKTtcbiAgY29uc3QgaW50ZXJmYWNlQm9keSA9IHJlY29yZChub2RlKVsnYm9keSddIGFzIFJ1bGUuTm9kZTtcbiAgZm9yIChjb25zdCBzaWduYXR1cmUgb2YgcmVjb3JkKGludGVyZmFjZUJvZHkpWydib2R5J10gYXMgUnVsZS5Ob2RlW10pIHtcbiAgICBpZiAoKG5vZGVUeXBlKHNpZ25hdHVyZSkgIT09ICdUU1Byb3BlcnR5U2lnbmF0dXJlJyAmJiBub2RlVHlwZShzaWduYXR1cmUpICE9PSAnVFNNZXRob2RTaWduYXR1cmUnKSB8fCAocmVjb3JkKHNpZ25hdHVyZSlbJ2NvbXB1dGVkJ10gPT09IHRydWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3Qga2V5ID0gcmVjb3JkKHNpZ25hdHVyZSlbJ2tleSddIGFzIFJ1bGUuTm9kZTtcbiAgICBpZiAoa2V5LnR5cGUgPT09ICdJZGVudGlmaWVyJykge1xuICAgICAgbWVtYmVycy5zZXQocmVjb3JkKGtleSlbJ25hbWUnXSBhcyBzdHJpbmcsIGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBtZW1iZXJzO1xufVxuXG5mdW5jdGlvbiBnZXRJbnRlcmZhY2VOYW1lKG5vZGU6IFJ1bGUuTm9kZSk6IHN0cmluZyB7XG4gIGNvbnN0IGlkID0gcmVjb3JkKG5vZGUpWydpZCddIGFzIFJ1bGUuTm9kZTtcbiAgcmV0dXJuIHJlY29yZChpZClbJ25hbWUnXSBhcyBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmFtZXRlckluZm8ocGFyYW1ldGVyOiBSdWxlLk5vZGUpOiBQYXJhbWV0ZXJJbmZvIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYWN0dWFsUGFyYW1ldGVyID0gbm9kZVR5cGUocGFyYW1ldGVyKSA9PT0gJ1RTUGFyYW1ldGVyUHJvcGVydHknID8gcmVjb3JkKHBhcmFtZXRlcilbJ3BhcmFtZXRlciddIGFzIFJ1bGUuTm9kZSA6IHBhcmFtZXRlcjtcblxuICBjb25zdCB0eXBlTmFtZSA9IGdldFR5cGVSZWZlcmVuY2VOYW1lKGFjdHVhbFBhcmFtZXRlcik7XG4gIGlmICghdHlwZU5hbWUgfHwgIVBBUkFNU19PUFRJT05TX1NVRkZJWF9QQVRURVJOLnRlc3QodHlwZU5hbWUpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChhY3R1YWxQYXJhbWV0ZXIudHlwZSA9PT0gJ0lkZW50aWZpZXInKSB7XG4gICAgcmV0dXJuIHsgYmluZGluZzogeyBuYW1lOiByZWNvcmQoYWN0dWFsUGFyYW1ldGVyKVsnbmFtZSddIGFzIHN0cmluZywgdHlwZTogJ2lkZW50aWZpZXInIH0sIHR5cGVOYW1lIH07XG4gIH1cblxuICByZXR1cm4gYWN0dWFsUGFyYW1ldGVyLnR5cGUgPT09ICdPYmplY3RQYXR0ZXJuJyA/IHsgYmluZGluZzogeyBwYXR0ZXJuOiBhY3R1YWxQYXJhbWV0ZXIsIHR5cGU6ICdwYXR0ZXJuJyB9LCB0eXBlTmFtZSB9IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXRUeXBlUmVmZXJlbmNlTmFtZShwYXJhbWV0ZXI6IFJ1bGUuTm9kZSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGFubm90YXRpb24gPSByZWNvcmQocGFyYW1ldGVyKVsndHlwZUFubm90YXRpb24nXTtcbiAgaWYgKCFpc05vZGUoYW5ub3RhdGlvbikpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgdHlwZU5vZGUgPSByZWNvcmQoYW5ub3RhdGlvbilbJ3R5cGVBbm5vdGF0aW9uJ10gYXMgUnVsZS5Ob2RlO1xuICBpZiAobm9kZVR5cGUodHlwZU5vZGUpICE9PSAnVFNUeXBlUmVmZXJlbmNlJykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBjb25zdCB0eXBlTmFtZSA9IHJlY29yZCh0eXBlTm9kZSlbJ3R5cGVOYW1lJ10gYXMgUnVsZS5Ob2RlO1xuICByZXR1cm4gdHlwZU5hbWUudHlwZSA9PT0gJ0lkZW50aWZpZXInID8gKHJlY29yZCh0eXBlTmFtZSlbJ25hbWUnXSBhcyBzdHJpbmcpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc05vZGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSdWxlLk5vZGUge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgKHZhbHVlIGFzIE1heWJlVHlwZWROb2RlKS50eXBlID09PSAnc3RyaW5nJztcbn1cblxuZnVuY3Rpb24gbm9kZVR5cGUobm9kZTogUnVsZS5Ob2RlKTogc3RyaW5nIHtcbiAgcmV0dXJuIHJlY29yZChub2RlKVsndHlwZSddIGFzIHN0cmluZztcbn1cblxuZnVuY3Rpb24gcmVjb3JkKG5vZGU6IG9iamVjdCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIG5vZGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBcUNBLHlCQUFrQztBQUVsQyxNQUFNLGdDQUFnQztBQUsvQixNQUFNLGFBQWE7QUFnQ25CLE1BQU0sd0JBQXlDO0FBQUEsRUFDcEQsT0FBTyxTQUFTO0FBQ2QsVUFBTSxvQkFBb0Isb0JBQUksSUFBb0M7QUFDbEUsVUFBTSxtQkFBbUIsb0JBQUksSUFBNEI7QUFFekQsV0FBTztBQUFBLE1BQ0wsWUFBWSxNQUF1QjtBQUNqQyxtQkFBVyxhQUFhLE9BQU8sSUFBSSxFQUFFLFFBQVEsR0FBa0I7QUFDN0QsZ0JBQU0sT0FBTyxpQkFBaUIsU0FBUztBQUN2QyxjQUFJLENBQUMsTUFBTTtBQUNUO0FBQUEsVUFDRjtBQUVBLGdCQUFNLFFBQVEsaUJBQWlCLEtBQUssUUFBUTtBQUM1QyxjQUFJLEtBQUssUUFBUSxTQUFTLFdBQVc7QUFDbkMsa0NBQXNCLEtBQUssUUFBUSxTQUFTLEtBQUs7QUFBQSxVQUNuRCxPQUFPO0FBQ0wsb0NBQXdCO0FBQUEsY0FDdEIsZUFBZSxLQUFLLFFBQVE7QUFBQSxjQUM1QixPQUFPLFFBQVEsV0FBVyxTQUFTLElBQUk7QUFBQSxjQUN2QztBQUFBLFlBQ0YsQ0FBQztBQUFBLFVBQ0g7QUFB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
|
|
@@ -109,4 +109,4 @@ const noUsedUnderscoreVariables = {
|
|
|
109
109
|
MESSAGE_ID,
|
|
110
110
|
noUsedUnderscoreVariables
|
|
111
111
|
});
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
112
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9uby11c2VkLXVuZGVyc2NvcmUtdmFyaWFibGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGZpbGVcbiAqXG4gKiBFU0xpbnQgcnVsZTogbm8tdXNlZC11bmRlcnNjb3JlLXZhcmlhYmxlc1xuICpcbiAqIFJlcG9ydHMgYW4gZXJyb3Igd2hlbiBhIHBhcmFtZXRlciBvciBsb2NhbCB2YXJpYWJsZSB3aXRoIGEgYF9gIHByZWZpeCBpc1xuICogYWN0dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgZnVuY3Rpb24gYm9keS4gVGhlIGBfYCBwcmVmaXggY29udmVudGlvbiBzaWduYWxzXG4gKiBcInRoaXMgaWRlbnRpZmllciBpcyBpbnRlbnRpb25hbGx5IHVudXNlZFwiIOKAlCBpZiBpdCBJUyB1c2VkLCB0aGUgcHJlZml4IGlzXG4gKiBtaXNsZWFkaW5nIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC5cbiAqL1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcblxuaW1wb3J0IHsgYXNzZXJ0Tm9uTnVsbGFibGUgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvdHlwZS1ndWFyZHMnO1xuXG5pbnRlcmZhY2UgTm9kZVdpdGhCb2R5IHtcbiAgcmVhZG9ubHkgYm9keT86IFJ1bGUuTm9kZTtcbn1cblxuLyoqXG5NZXNzYWdlIElEIHJlcG9ydGVkIHdoZW4gYSB2YXJpYWJsZSBjYXJyaWVzIGEgYF9gIHByZWZpeCAoc2lnbmFsbGluZyB1bnVzZWQpIGJ1dCBpcyBhY3R1YWxseSB1c2VkLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRCA9ICdub1VzZWRVbmRlcnNjb3JlVmFyaWFibGVzJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSBkaXNhbGxvd2luZyBgX2AtcHJlZml4ZWQgcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQsIHNpbmNlIHRoZSBwcmVmaXggYWR2ZXJ0aXNlcyB0aGVtIGFzIHVudXNlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IG5vVXNlZFVuZGVyc2NvcmVWYXJpYWJsZXM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJzpmdW5jdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNjb3BlID0gY29udGV4dC5zb3VyY2VDb2RlLmdldFNjb3BlKG5vZGUpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdmFyaWFibGUgb2Ygc2NvcGUudmFyaWFibGVzKSB7XG4gICAgICAgICAgaWYgKCF2YXJpYWJsZS5uYW1lLnN0YXJ0c1dpdGgoJ18nKSkge1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZGVmaW5pdGlvbk5vZGUgPSB2YXJpYWJsZS5kZWZzWzBdO1xuICAgICAgICAgIGFzc2VydE5vbk51bGxhYmxlKGRlZmluaXRpb25Ob2RlLCAnVXNlci1kZWNsYXJlZCBfLXByZWZpeGVkIHZhcmlhYmxlcyBhbHdheXMgaGF2ZSBhdCBsZWFzdCBvbmUgZGVmaW5pdGlvbicpO1xuXG4gICAgICAgICAgLy8gRm9yIHBhcmFtZXRlcnMsIG9ubHkgY291bnQgcmVmZXJlbmNlcyBpbnNpZGUgdGhlIGZ1bmN0aW9uIGJvZHlcbiAgICAgICAgICAvLyAobm90IGluIHR5cGUgYW5ub3RhdGlvbnMgbGlrZSBgYXNzZXJ0cyBfb2JqIGlzIFRgKS5cbiAgICAgICAgICAvLyBGb3IgbG9jYWwgdmFyaWFibGVzLCBhbnkgcmVhZCByZWZlcmVuY2UgY291bnRzLlxuICAgICAgICAgIGNvbnN0IGZ1bmN0aW9uQm9keSA9IChub2RlIGFzIE5vZGVXaXRoQm9keSkuYm9keTtcbiAgICAgICAgICBjb25zdCBib2R5UmFuZ2UgPSBmdW5jdGlvbkJvZHk/LnJhbmdlO1xuICAgICAgICAgIGNvbnN0IGlzUGFyYW1ldGVyID0gZGVmaW5pdGlvbk5vZGUudHlwZSA9PT0gJ1BhcmFtZXRlcic7XG4gICAgICAgICAgY29uc3QgaGFzQm9keVJlZmVyZW5jZXMgPSB2YXJpYWJsZS5yZWZlcmVuY2VzLnNvbWUoKHJlZmVyZW5jZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2UuaXNSZWFkKCkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTG9jYWwgdmFyaWFibGVzIG9yIGZhbGxiYWNrOiBjb3VudCBhbGwgcmVhZHNcbiAgICAgICAgICAgIHJldHVybiAhaXNQYXJhbWV0ZXIgfHwgIWJvZHlSYW5nZSB8fCAhcmVmZXJlbmNlLmlkZW50aWZpZXIucmFuZ2VcbiAgICAgICAgICAgICAgfHwgKHJlZmVyZW5jZS5pZGVudGlmaWVyLnJhbmdlWzBdID49IGJvZHlSYW5nZVswXSAmJiByZWZlcmVuY2UuaWRlbnRpZmllci5yYW5nZVsxXSA8PSBib2R5UmFuZ2VbMV0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChoYXNCb2R5UmVmZXJlbmNlcykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7IG5hbWU6IHZhcmlhYmxlLm5hbWUgfSxcbiAgICAgICAgICAgICAgbWVzc2FnZUlkOiBNRVNTQUdFX0lELFxuICAgICAgICAgICAgICBub2RlOiBkZWZpbml0aW9uTm9kZS5uYW1lXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdEaXNhbGxvdyBgX2AtcHJlZml4ZWQgcGFyYW1ldGVycyBhbmQgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnXCJ7eyBuYW1lIH19XCIgaGFzIGEgYF9gIHByZWZpeCBidXQgaXMgdXNlZC4gUmVtb3ZlIHRoZSBgX2AgcHJlZml4IHNpbmNlIGl0IGlzIG5vdCB1bnVzZWQuJ1xuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiAncHJvYmxlbSdcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFZQSx5QkFBa0M7QUFTM0IsTUFBTSxhQUFhO0FBS25CLE1BQU0sNEJBQTZDO0FBQUEsRUFDeEQsT0FBTyxTQUFTO0FBQ2QsV0FBTztBQUFBLE1BQ0wsWUFBWSxNQUF1QjtBQUNqQyxjQUFNLFFBQVEsUUFBUSxXQUFXLFNBQVMsSUFBSTtBQUU5QyxtQkFBVyxZQUFZLE1BQU0sV0FBVztBQUN0QyxjQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsR0FBRyxHQUFHO0FBQ2xDO0FBQUEsVUFDRjtBQUVBLGdCQUFNLGlCQUFpQixTQUFTLEtBQUssQ0FBQztBQUN0QyxvREFBa0IsZ0JBQWdCLHdFQUF3RTtBQUsxRyxnQkFBTSxlQUFnQixLQUFzQjtBQUM1QyxnQkFBTSxZQUFZLGNBQWM7QUFDaEMsZ0JBQU0sY0FBYyxlQUFlLFNBQVM7QUFDNUMsZ0JBQU0sb0JBQW9CLFNBQVMsV0FBVyxLQUFLLENBQUMsY0FBYztBQUNoRSxnQkFBSSxDQUFDLFVBQVUsT0FBTyxHQUFHO0FBQ3ZCLHFCQUFPO0FBQUEsWUFDVDtBQUVBLG1CQUFPLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxVQUFVLFdBQVcsU0FDckQsVUFBVSxXQUFXLE1BQU0sQ0FBQyxLQUFLLFVBQVUsQ0FBQyxLQUFLLFVBQVUsV0FBVyxNQUFNLENBQUMsS0FBSyxVQUFVLENBQUM7QUFBQSxVQUNyRyxDQUFDO0FBQ0QsY0FBSSxtQkFBbUI7QUFDckIsb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTSxFQUFFLE1BQU0sU0FBUyxLQUFLO0FBQUEsY0FDNUIsV0FBVztBQUFBLGNBQ1gsTUFBTSxlQUFlO0FBQUEsWUFDdkIsQ0FBQztBQUFBLFVBQ0g7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQyxVQUFVLEdBQUc7QUFBQSxJQUNoQjtBQUFBLElBQ0EsUUFBUSxDQUFDO0FBQUEsSUFDVCxNQUFNO0FBQUEsRUFDUjtBQUNGOyIsIm5hbWVzIjpbXX0=
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/*
|
|
2
|
+
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
|
3
|
+
if you want to view the source, please visit the github repository of this plugin
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __export = (target, all) => {
|
|
12
|
+
for (var name in all)
|
|
13
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
14
|
+
};
|
|
15
|
+
var __copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
17
|
+
for (let key of __getOwnPropNames(from))
|
|
18
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
19
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
20
|
+
}
|
|
21
|
+
return to;
|
|
22
|
+
};
|
|
23
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
24
|
+
var readonly_interface_members_exports = {};
|
|
25
|
+
__export(readonly_interface_members_exports, {
|
|
26
|
+
MESSAGE_ID: () => MESSAGE_ID,
|
|
27
|
+
readonlyInterfaceMembers: () => readonlyInterfaceMembers
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(readonly_interface_members_exports);
|
|
30
|
+
const MESSAGE_ID = "readonlyInterfaceMembers";
|
|
31
|
+
const readonlyInterfaceMembers = {
|
|
32
|
+
create(context) {
|
|
33
|
+
return {
|
|
34
|
+
"TSInterfaceDeclaration TSPropertySignature[readonly=false]"(node) {
|
|
35
|
+
reportNonReadonly(context, node);
|
|
36
|
+
},
|
|
37
|
+
"TSTypeAliasDeclaration TSPropertySignature[readonly=false]"(node) {
|
|
38
|
+
reportNonReadonly(context, node);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
meta: {
|
|
43
|
+
docs: {
|
|
44
|
+
description: "Require readonly properties in all interfaces and object type aliases"
|
|
45
|
+
},
|
|
46
|
+
fixable: "code",
|
|
47
|
+
messages: {
|
|
48
|
+
[MESSAGE_ID]: "Property must be `readonly`. Disable this rule with a reason for mutable state."
|
|
49
|
+
},
|
|
50
|
+
schema: [],
|
|
51
|
+
type: "suggestion"
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
function reportNonReadonly($context, node) {
|
|
55
|
+
$context.report({
|
|
56
|
+
fix(fixer) {
|
|
57
|
+
return fixer.insertTextBefore(node, "readonly ");
|
|
58
|
+
},
|
|
59
|
+
messageId: MESSAGE_ID,
|
|
60
|
+
node
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
64
|
+
0 && (module.exports = {
|
|
65
|
+
MESSAGE_ID,
|
|
66
|
+
readonlyInterfaceMembers
|
|
67
|
+
});
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpbnRlcnMvZXNsaW50LXJ1bGVzL3JlYWRvbmx5LWludGVyZmFjZS1tZW1iZXJzLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlYWRvbmx5LWludGVyZmFjZS1tZW1iZXJzXG4gKlxuICogUmVxdWlyZXMgcmVhZG9ubHkgcHJvcGVydHkgc2lnbmF0dXJlcyBpbiBpbnRlcmZhY2VzIGFuZCBvYmplY3QgdHlwZSBhbGlhc2VzLFxuICogaW5jbHVkaW5nIG5lc3RlZCBvYmplY3QgdHlwZXMuIE11dGFibGUgc3RhdGUgcmVxdWlyZXMgYW4gZXhwbGljaXQgZXhjZXB0aW9uLlxuICovXG5pbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tICdlc2xpbnQnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIHByb3BlcnR5IHNpZ25hdHVyZSBpcyBub3QgZGVjbGFyZWQgYHJlYWRvbmx5YC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSUQgPSAncmVhZG9ubHlJbnRlcmZhY2VNZW1iZXJzJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgZXZlcnkgcHJvcGVydHkgb2YgYW4gaW50ZXJmYWNlIG9yIG9iamVjdCB0eXBlIGFsaWFzIHRvIGJlIGByZWFkb25seWAuXG4gKi9cbmV4cG9ydCBjb25zdCByZWFkb25seUludGVyZmFjZU1lbWJlcnM6IFJ1bGUuUnVsZU1vZHVsZSA9IHtcbiAgY3JlYXRlKGNvbnRleHQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJ1RTSW50ZXJmYWNlRGVjbGFyYXRpb24gVFNQcm9wZXJ0eVNpZ25hdHVyZVtyZWFkb25seT1mYWxzZV0nKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQge1xuICAgICAgICByZXBvcnROb25SZWFkb25seShjb250ZXh0LCBub2RlKTtcbiAgICAgIH0sXG4gICAgICAnVFNUeXBlQWxpYXNEZWNsYXJhdGlvbiBUU1Byb3BlcnR5U2lnbmF0dXJlW3JlYWRvbmx5PWZhbHNlXScobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIHJlcG9ydE5vblJlYWRvbmx5KGNvbnRleHQsIG5vZGUpO1xuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjogJ1JlcXVpcmUgcmVhZG9ubHkgcHJvcGVydGllcyBpbiBhbGwgaW50ZXJmYWNlcyBhbmQgb2JqZWN0IHR5cGUgYWxpYXNlcydcbiAgICB9LFxuICAgIGZpeGFibGU6ICdjb2RlJyxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURdOiAnUHJvcGVydHkgbXVzdCBiZSBgcmVhZG9ubHlgLiBEaXNhYmxlIHRoaXMgcnVsZSB3aXRoIGEgcmVhc29uIGZvciBtdXRhYmxlIHN0YXRlLidcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogJ3N1Z2dlc3Rpb24nXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHJlcG9ydE5vblJlYWRvbmx5KCRjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LCBub2RlOiBSdWxlLk5vZGUpOiB2b2lkIHtcbiAgJGNvbnRleHQucmVwb3J0KHtcbiAgICBmaXgoZml4ZXIpIHtcbiAgICAgIHJldHVybiBmaXhlci5pbnNlcnRUZXh0QmVmb3JlKG5vZGUsICdyZWFkb25seSAnKTtcbiAgICB9LFxuICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRCxcbiAgICBub2RlXG4gIH0pO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFhTyxNQUFNLGFBQWE7QUFLbkIsTUFBTSwyQkFBNEM7QUFBQSxFQUN2RCxPQUFPLFNBQVM7QUFDZCxXQUFPO0FBQUEsTUFDTCw2REFBNkQsTUFBdUI7QUFDbEYsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsTUFDQSw2REFBNkQsTUFBdUI7QUFDbEYsMEJBQWtCLFNBQVMsSUFBSTtBQUFBLE1BQ2pDO0FBQUEsSUFDRjtBQUFBLEVBQ0Y7QUFBQSxFQUNBLE1BQU07QUFBQSxJQUNKLE1BQU07QUFBQSxNQUNKLGFBQWE7QUFBQSxJQUNmO0FBQUEsSUFDQSxTQUFTO0FBQUEsSUFDVCxVQUFVO0FBQUEsTUFDUixDQUFDLFVBQVUsR0FBRztBQUFBLElBQ2hCO0FBQUEsSUFDQSxRQUFRLENBQUM7QUFBQSxJQUNULE1BQU07QUFBQSxFQUNSO0FBQ0Y7QUFFQSxTQUFTLGtCQUFrQixVQUE0QixNQUF1QjtBQUM1RSxXQUFTLE9BQU87QUFBQSxJQUNkLElBQUksT0FBTztBQUNULGFBQU8sTUFBTSxpQkFBaUIsTUFBTSxXQUFXO0FBQUEsSUFDakQ7QUFBQSxJQUNBLFdBQVc7QUFBQSxJQUNYO0FBQUEsRUFDRixDQUFDO0FBQ0g7IiwKICAibmFtZXMiOiBbXQp9Cg==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/// <reference path="../../library-references.d.cts" />
|
|
2
|
+
/**
|
|
3
|
+
* @file
|
|
4
|
+
*
|
|
5
|
+
* ESLint rule: readonly-interface-members
|
|
6
|
+
*
|
|
7
|
+
* Requires readonly property signatures in interfaces and object type aliases,
|
|
8
|
+
* including nested object types. Mutable state requires an explicit exception.
|
|
9
|
+
*/
|
|
10
|
+
import type { Rule } from 'eslint' with { 'resolution-mode': 'import' };
|
|
11
|
+
/**
|
|
12
|
+
Message ID reported when a property signature is not declared `readonly`.
|
|
13
|
+
*/
|
|
14
|
+
export declare const MESSAGE_ID = "readonlyInterfaceMembers";
|
|
15
|
+
/**
|
|
16
|
+
* ESLint rule requiring every property of an interface or object type alias to be `readonly`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const readonlyInterfaceMembers: Rule.RuleModule;
|
|
@@ -156,4 +156,4 @@ function parseTypeParameterTags(params) {
|
|
|
156
156
|
MESSAGE_ID_MISSING_TEMPLATE_DESCRIPTION,
|
|
157
157
|
requireMethodTemplate
|
|
158
158
|
});
|
|
159
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlcXVpcmUtbWV0aG9kLXRlbXBsYXRlXG4gKlxuICogUmVxdWlyZXMgdGhhdCBnZW5lcmljIG1ldGhvZHMgKG1ldGhvZHMgd2l0aCB0eXBlIHBhcmFtZXRlcnMpIGhhdmVcbiAqIGNvcnJlc3BvbmRpbmcgYEB0eXBlUGFyYW1gIChvciBgQHRlbXBsYXRlYCkgSlNEb2MgdGFncyBmb3IgZWFjaCB0eXBlIHBhcmFtZXRlci5cbiAqXG4gKiBUaGlzIGZpbGxzIGEgZ2FwIGluIGBlc2xpbnQtcGx1Z2luLWpzZG9jYCdzIGByZXF1aXJlLXRlbXBsYXRlYCBydWxlLCB3aGljaFxuICogb25seSBjaGVja3MgdG9wLWxldmVsIGRlY2xhcmF0aW9ucyAoZnVuY3Rpb25zLCBjbGFzc2VzLCBpbnRlcmZhY2VzLCB0eXBlIGFsaWFzZXMpXG4gKiBidXQgbm90IG1ldGhvZHMgd2l0aGluIGNsYXNzZXMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2dhanVzL2VzbGludC1wbHVnaW4tanNkb2MvaXNzdWVzLzEzODZ9XG4gKi9cbmltcG9ydCB0eXBlIHsgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHsgQ29tbWVudCB9IGZyb20gJ2VzdHJlZSc7XG5cbmltcG9ydCB7IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5cbmltcG9ydCB7IHRvVFNFU1RyZWVOb2RlIH0gZnJvbSAnLi90cy1lc3RyZWUtbm9kZS50cyc7XG5cbmludGVyZmFjZSBKc2RvY1NldHRpbmdzIHtcbiAgdGFnTmFtZVByZWZlcmVuY2U/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5jb25zdCBUQUdfTkFNRSA9ICd0eXBlUGFyYW0nO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIG1ldGhvZCB0eXBlIHBhcmFtZXRlciBoYXMgbm8gbWF0Y2hpbmcgYEB0eXBlUGFyYW1gIHRhZy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfTUlTU0lOR19URU1QTEFURSA9ICdtaXNzaW5nVGVtcGxhdGUnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIG1ldGhvZCdzIGBAdHlwZVBhcmFtYCB0YWcgaXMgbWlzc2luZyBhIGRlc2NyaXB0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OID0gJ21pc3NpbmdUZW1wbGF0ZURlc2NyaXB0aW9uJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgZXZlcnkgZ2VuZXJpYyBtZXRob2QgdHlwZSBwYXJhbWV0ZXIgdG8gY2FycnkgYSBgQHR5cGVQYXJhbWAgdGFnIHdpdGggYSBkZXNjcmlwdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVpcmVNZXRob2RUZW1wbGF0ZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNldHRpbmdzID0gY29udGV4dC5zZXR0aW5nc1snanNkb2MnXSBhcyBKc2RvY1NldHRpbmdzIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHByZWZlcnJlZFRhZ05hbWUgPSBzZXR0aW5ncz8udGFnTmFtZVByZWZlcmVuY2U/LlsndGVtcGxhdGUnXSA/PyBUQUdfTkFNRTtcblxuICAgIHJldHVybiB7XG4gICAgICAnTWV0aG9kRGVmaW5pdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1ldGhvZE5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuICAgICAgICBjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSBtZXRob2ROb2RlLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVQYXJhbXMgPSBmdW5jdGlvbkV4cHJlc3Npb24udHlwZVBhcmFtZXRlcnM/LnBhcmFtcztcbiAgICAgICAgaWYgKCF0eXBlUGFyYW1zIHx8IHR5cGVQYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc291cmNlQ29kZSA9IGNvbnRleHQuc291cmNlQ29kZTtcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSBzb3VyY2VDb2RlLmdldENvbW1lbnRzQmVmb3JlKG5vZGUpO1xuICAgICAgICBjb25zdCBqc2RvY0NvbW1lbnQgPSBmaW5kSnNkb2NDb21tZW50KGNvbW1lbnRzKTtcblxuICAgICAgICBpZiAoIWpzZG9jQ29tbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZFRhZ3MgPSBwYXJzZVR5cGVQYXJhbWV0ZXJUYWdzKHtcbiAgICAgICAgICBjb21tZW50Qm9keToganNkb2NDb21tZW50LnZhbHVlLFxuICAgICAgICAgIHRhZ05hbWU6IHByZWZlcnJlZFRhZ05hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlUGFyYW1ldGVyIG9mIHR5cGVQYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gdHlwZVBhcmFtZXRlci5uYW1lLm5hbWU7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdUYWcgPSBwYXJzZWRUYWdzLmZpbmQoKHRhZykgPT4gdGFnLm5hbWUgPT09IHBhcmFtZXRlck5hbWUpO1xuXG4gICAgICAgICAgaWYgKCFtYXRjaGluZ1RhZykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHBhcmFtTmFtZWAgaXMgdGhlIHBsYWNlaG9sZGVyIHRoaXMgcnVsZSdzIG93biBtZXNzYWdlIHRlbXBsYXRlIHJlYWRzLlxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiBwcmVmZXJyZWRUYWdOYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFLFxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFtYXRjaGluZ1RhZy5oYXNEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHBhcmFtTmFtZWAgaXMgdGhlIHBsYWNlaG9sZGVyIHRoaXMgcnVsZSdzIG93biBtZXNzYWdlIHRlbXBsYXRlIHJlYWRzLlxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiBwcmVmZXJyZWRUYWdOYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OLFxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGBAdHlwZVBhcmFtYCB0YWdzIHdpdGggZGVzY3JpcHRpb25zIGZvciBnZW5lcmljIG1ldGhvZCB0eXBlIHBhcmFtZXRlcnMnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURfTUlTU0lOR19URU1QTEFURV06ICdNaXNzaW5nIEB7eyB0YWdOYW1lIH19IHt7IHBhcmFtTmFtZSB9fScsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OXTogJ0B7eyB0YWdOYW1lIH19IHt7IHBhcmFtTmFtZSB9fSBpcyBtaXNzaW5nIGEgZGVzY3JpcHRpb24nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG5pbnRlcmZhY2UgUGFyc2VkVGFnIHtcbiAgaGFzRGVzY3JpcHRpb246IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcGFyc2VUeXBlUGFyYW1ldGVyVGFnc30uXG4gKi9cbmludGVyZmFjZSBQYXJzZVR5cGVQYXJhbWV0ZXJUYWdzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSByYXcgY29tbWVudCBib2R5ICh3aXRob3V0IHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBjb21tZW50IGRlbGltaXRlcnMpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudEJvZHk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZlcnJlZCB0YWcgbmFtZSAoYHR5cGVQYXJhbWAgb3IgYHRlbXBsYXRlYCkuXG4gICAqL1xuICByZWFkb25seSB0YWdOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIEpTRG9jIGJsb2NrIGNvbW1lbnQgZnJvbSBhIGxpc3Qgb2YgY29tbWVudHMuXG4gKlxuICogQHBhcmFtIGNvbW1lbnRzIC0gVGhlIGNvbW1lbnRzIGJlZm9yZSB0aGUgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBKU0RvYyBibG9jayBjb21tZW50LCBvciBgdW5kZWZpbmVkYCBpZiBub25lIGZvdW5kLlxuICovXG5mdW5jdGlvbiBmaW5kSnNkb2NDb21tZW50KGNvbW1lbnRzOiByZWFkb25seSBDb21tZW50W10pOiBDb21tZW50IHwgdW5kZWZpbmVkIHtcbiAgZm9yIChsZXQgaW5kZXggPSBjb21tZW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgY29tbWVudCA9IGNvbW1lbnRzW2luZGV4XTtcbiAgICBpZiAoY29tbWVudD8udHlwZSA9PT0gJ0Jsb2NrJyAmJiBjb21tZW50LnZhbHVlLnN0YXJ0c1dpdGgoJyonKSkge1xuICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYEB0eXBlUGFyYW1gIC8gYEB0ZW1wbGF0ZWAgdGFncyBmcm9tIGEgSlNEb2MgY29tbWVudCBib2R5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGFyc2VkIHRhZyBlbnRyaWVzLlxuICovXG5mdW5jdGlvbiBwYXJzZVR5cGVQYXJhbWV0ZXJUYWdzKHBhcmFtczogUGFyc2VUeXBlUGFyYW1ldGVyVGFnc1BhcmFtcyk6IFBhcnNlZFRhZ1tdIHtcbiAgY29uc3QgeyBjb21tZW50Qm9keSwgdGFnTmFtZSB9ID0gcGFyYW1zO1xuICBjb25zdCB0YWdzOiBQYXJzZWRUYWdbXSA9IFtdO1xuICAvKlxuICAgKiBUaGUgYCRgIGNoYXJhY3RlciBpcyBhIGxlZ2FsIGlkZW50aWZpZXIgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZXhjbHVkZXMsIHNvIGEgdGFnIGxpa2UgYEB0eXBlUGFyYW0gJE9iamVjdGBcbiAgICogd291bGQgZmFpbCB0byBtYXRjaCBhdCBhbGwgYW5kIHRoZSB0eXBlIHBhcmFtZXRlciB3b3VsZCBiZSByZXBvcnRlZCBhcyB1bmRvY3VtZW50ZWQgZGVzcGl0ZSBoYXZpbmcgYSB0YWcuXG4gICAqL1xuICBjb25zdCB0YWdQYXR0ZXJuID0gbmV3IFJlZ0V4cChTdHJpbmcucmF3YEAoPzoke3RhZ05hbWV9fHRlbXBsYXRlfHR5cGVQYXJhbSlcXHMrKD88dHlwZU5hbWU+W1xcdyRdKykoPzxyZXN0Pi4qKWAsICdnJyk7XG5cbiAgbGV0IG1hdGNoO1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUGF0dGVybi5leGVjKGNvbW1lbnRCb2R5KSkgIT09IG51bGwpIHtcbiAgICBjb25zdCBuYW1lID0gZ2V0TWFuZGF0b3J5TmFtZWRHcm91cChtYXRjaCwgJ3R5cGVOYW1lJyk7XG4gICAgY29uc3QgcmVzdCA9IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAobWF0Y2gsICdyZXN0JykudHJpbSgpO1xuICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gcmVzdC5sZW5ndGggPiAwICYmIHJlc3QgIT09ICctJztcbiAgICB0YWdzLnB1c2goeyBoYXNEZXNjcmlwdGlvbiwgbmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiB0YWdzO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBLHFCQUF1QztBQUV2Qyw0QkFBK0I7QUFNL0IsTUFBTSxXQUFXO0FBS1YsTUFBTSw4QkFBOEI7QUFLcEMsTUFBTSwwQ0FBMEM7QUFLaEQsTUFBTSx3QkFBeUM7QUFBQSxFQUNwRCxPQUFPLFNBQVM7QUFDZCxVQUFNLFdBQVcsUUFBUSxTQUFTLE9BQU87QUFDekMsVUFBTSxtQkFBbUIsVUFBVSxvQkFBb0IsVUFBVSxLQUFLO0FBRXRFLFdBQU87QUFBQSxNQUNMLG1CQUFtQixNQUF1QjtBQUN4QyxjQUFNLGlCQUFhLHNDQUFlLElBQUk7QUFDdEMsY0FBTSxxQkFBcUIsV0FBVztBQUV0QyxjQUFNLGFBQWEsbUJBQW1CLGdCQUFnQjtBQUN0RCxZQUFJLENBQUMsY0FBYyxXQUFXLFdBQVcsR0FBRztBQUMxQztBQUFBLFFBQ0Y7QUFFQSxjQUFNLGFBQWEsUUFBUTtBQUMzQixjQUFNLFdBQVcsV0FBVyxrQkFBa0IsSUFBSTtBQUNsRCxjQUFNLGVBQWUsaUJBQWlCLFFBQVE7QUFFOUMsWUFBSSxDQUFDLGNBQWM7QUFDakI7QUFBQSxRQUNGO0FBRUEsY0FBTSxhQUFhLHVCQUF1QjtBQUFBLFVBQ3hDLGFBQWEsYUFBYTtBQUFBLFVBQzFCLFNBQVM7QUFBQSxRQUNYLENBQUM7QUFFRCxtQkFBVyxpQkFBaUIsWUFBWTtBQUN0QyxnQkFBTSxnQkFBZ0IsY0FBYyxLQUFLO0FBQ3pDLGdCQUFNLGNBQWMsV0FBVyxLQUFLLENBQUMsUUFBUSxJQUFJLFNBQVMsYUFBYTtBQUV2RSxjQUFJLENBQUMsYUFBYTtBQUNoQixvQkFBUSxPQUFPO0FBQUEsY0FDYixNQUFNO0FBQUE7QUFBQSxnQkFFSixXQUFXO0FBQUEsZ0JBQ1gsU0FBUztBQUFBLGNBQ1g7QUFBQSxjQUNBLFdBQVc7QUFBQSxjQUNYO0FBQUEsWUFDRixDQUFDO0FBQUEsVUFDSCxXQUFXLENBQUMsWUFBWSxnQkFBZ0I7QUFDdEMsb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTTtBQUFBO0FBQUEsZ0JBRUosV0FBVztBQUFBLGdCQUNYLFNBQVM7QUFBQSxjQUNYO0FBQUEsY0FDQSxXQUFXO0FBQUEsY0FDWDtBQUFBLFlBQ0YsQ0FBQztBQUFBLFVBQ0g7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQywyQkFBMkIsR0FBRztBQUFBLE1BQy9CLENBQUMsdUNBQXVDLEdBQUc7QUFBQSxJQUM3QztBQUFBLElBQ0EsUUFBUSxDQUFDO0FBQUEsSUFDVCxNQUFNO0FBQUEsRUFDUjtBQUNGO0FBNEJBLFNBQVMsaUJBQWlCLFVBQW1EO0FBQzNFLFdBQVMsUUFBUSxTQUFTLFNBQVMsR0FBRyxTQUFTLEdBQUcsU0FBUztBQUN6RCxVQUFNLFVBQVUsU0FBUyxLQUFLO0FBQzlCLFFBQUksU0FBUyxTQUFTLFdBQVcsUUFBUSxNQUFNLFdBQVcsR0FBRyxHQUFHO0FBQzlELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVFBLFNBQVMsdUJBQXVCLFFBQW1EO0FBQ2pGLFFBQU0sRUFBRSxhQUFhLFFBQVEsSUFBSTtBQUNqQyxRQUFNLE9BQW9CLENBQUM7QUFLM0IsUUFBTSxhQUFhLElBQUksT0FBTyxPQUFPLFVBQVUsT0FBTyx5REFBeUQsR0FBRztBQUVsSCxNQUFJO0FBQ0osVUFBUSxRQUFRLFdBQVcsS0FBSyxXQUFXLE9BQU8sTUFBTTtBQUN0RCxVQUFNLFdBQU8sdUNBQXVCLE9BQU8sVUFBVTtBQUNyRCxVQUFNLFdBQU8sdUNBQXVCLE9BQU8sTUFBTSxFQUFFLEtBQUs7QUFDeEQsVUFBTSxpQkFBaUIsS0FBSyxTQUFTLEtBQUssU0FBUztBQUNuRCxTQUFLLEtBQUssRUFBRSxnQkFBZ0IsS0FBSyxDQUFDO0FBQUEsRUFDcEM7QUFFQSxTQUFPO0FBQ1Q7IiwibmFtZXMiOltdfQ==
|
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saW50ZXJzL2VzbGludC1ydWxlcy9yZXF1aXJlLW1ldGhvZC10ZW1wbGF0ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBmaWxlXG4gKlxuICogRVNMaW50IHJ1bGU6IHJlcXVpcmUtbWV0aG9kLXRlbXBsYXRlXG4gKlxuICogUmVxdWlyZXMgdGhhdCBnZW5lcmljIG1ldGhvZHMgKG1ldGhvZHMgd2l0aCB0eXBlIHBhcmFtZXRlcnMpIGhhdmVcbiAqIGNvcnJlc3BvbmRpbmcgYEB0eXBlUGFyYW1gIChvciBgQHRlbXBsYXRlYCkgSlNEb2MgdGFncyBmb3IgZWFjaCB0eXBlIHBhcmFtZXRlci5cbiAqXG4gKiBUaGlzIGZpbGxzIGEgZ2FwIGluIGBlc2xpbnQtcGx1Z2luLWpzZG9jYCdzIGByZXF1aXJlLXRlbXBsYXRlYCBydWxlLCB3aGljaFxuICogb25seSBjaGVja3MgdG9wLWxldmVsIGRlY2xhcmF0aW9ucyAoZnVuY3Rpb25zLCBjbGFzc2VzLCBpbnRlcmZhY2VzLCB0eXBlIGFsaWFzZXMpXG4gKiBidXQgbm90IG1ldGhvZHMgd2l0aGluIGNsYXNzZXMuXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2dhanVzL2VzbGludC1wbHVnaW4tanNkb2MvaXNzdWVzLzEzODZ9XG4gKi9cbmltcG9ydCB0eXBlIHsgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuaW1wb3J0IHR5cGUgeyBSdWxlIH0gZnJvbSAnZXNsaW50JztcbmltcG9ydCB0eXBlIHsgQ29tbWVudCB9IGZyb20gJ2VzdHJlZSc7XG5cbmltcG9ydCB7IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAgfSBmcm9tICdAbW5hb3Vtb3YvdHlwZXNjcmlwdC1saWIvcmVnLWV4cCc7XG5cbmltcG9ydCB7IHRvVFNFU1RyZWVOb2RlIH0gZnJvbSAnLi90cy1lc3RyZWUtbm9kZS50cyc7XG5cbmludGVyZmFjZSBKc2RvY1NldHRpbmdzIHtcbiAgcmVhZG9ubHkgdGFnTmFtZVByZWZlcmVuY2U/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG5jb25zdCBUQUdfTkFNRSA9ICd0eXBlUGFyYW0nO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIG1ldGhvZCB0eXBlIHBhcmFtZXRlciBoYXMgbm8gbWF0Y2hpbmcgYEB0eXBlUGFyYW1gIHRhZy5cbiAqL1xuZXhwb3J0IGNvbnN0IE1FU1NBR0VfSURfTUlTU0lOR19URU1QTEFURSA9ICdtaXNzaW5nVGVtcGxhdGUnO1xuXG4vKipcbk1lc3NhZ2UgSUQgcmVwb3J0ZWQgd2hlbiBhIG1ldGhvZCdzIGBAdHlwZVBhcmFtYCB0YWcgaXMgbWlzc2luZyBhIGRlc2NyaXB0aW9uLlxuICovXG5leHBvcnQgY29uc3QgTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OID0gJ21pc3NpbmdUZW1wbGF0ZURlc2NyaXB0aW9uJztcblxuLyoqXG4gKiBFU0xpbnQgcnVsZSByZXF1aXJpbmcgZXZlcnkgZ2VuZXJpYyBtZXRob2QgdHlwZSBwYXJhbWV0ZXIgdG8gY2FycnkgYSBgQHR5cGVQYXJhbWAgdGFnIHdpdGggYSBkZXNjcmlwdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlcXVpcmVNZXRob2RUZW1wbGF0ZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dCkge1xuICAgIGNvbnN0IHNldHRpbmdzID0gY29udGV4dC5zZXR0aW5nc1snanNkb2MnXSBhcyBKc2RvY1NldHRpbmdzIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHByZWZlcnJlZFRhZ05hbWUgPSBzZXR0aW5ncz8udGFnTmFtZVByZWZlcmVuY2U/LlsndGVtcGxhdGUnXSA/PyBUQUdfTkFNRTtcblxuICAgIHJldHVybiB7XG4gICAgICAnTWV0aG9kRGVmaW5pdGlvbicobm9kZTogUnVsZS5Ob2RlKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1ldGhvZE5vZGUgPSB0b1RTRVNUcmVlTm9kZShub2RlKSBhcyBUU0VTVHJlZS5NZXRob2REZWZpbml0aW9uO1xuICAgICAgICBjb25zdCBmdW5jdGlvbkV4cHJlc3Npb24gPSBtZXRob2ROb2RlLnZhbHVlO1xuXG4gICAgICAgIGNvbnN0IHR5cGVQYXJhbXMgPSBmdW5jdGlvbkV4cHJlc3Npb24udHlwZVBhcmFtZXRlcnM/LnBhcmFtcztcbiAgICAgICAgaWYgKCF0eXBlUGFyYW1zIHx8IHR5cGVQYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc291cmNlQ29kZSA9IGNvbnRleHQuc291cmNlQ29kZTtcbiAgICAgICAgY29uc3QgY29tbWVudHMgPSBzb3VyY2VDb2RlLmdldENvbW1lbnRzQmVmb3JlKG5vZGUpO1xuICAgICAgICBjb25zdCBqc2RvY0NvbW1lbnQgPSBmaW5kSnNkb2NDb21tZW50KGNvbW1lbnRzKTtcblxuICAgICAgICBpZiAoIWpzZG9jQ29tbWVudCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHBhcnNlZFRhZ3MgPSBwYXJzZVR5cGVQYXJhbWV0ZXJUYWdzKHtcbiAgICAgICAgICBjb21tZW50Qm9keToganNkb2NDb21tZW50LnZhbHVlLFxuICAgICAgICAgIHRhZ05hbWU6IHByZWZlcnJlZFRhZ05hbWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB0eXBlUGFyYW1ldGVyIG9mIHR5cGVQYXJhbXMpIHtcbiAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gdHlwZVBhcmFtZXRlci5uYW1lLm5hbWU7XG4gICAgICAgICAgY29uc3QgbWF0Y2hpbmdUYWcgPSBwYXJzZWRUYWdzLmZpbmQoKHRhZykgPT4gdGFnLm5hbWUgPT09IHBhcmFtZXRlck5hbWUpO1xuXG4gICAgICAgICAgaWYgKCFtYXRjaGluZ1RhZykge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHBhcmFtTmFtZWAgaXMgdGhlIHBsYWNlaG9sZGVyIHRoaXMgcnVsZSdzIG93biBtZXNzYWdlIHRlbXBsYXRlIHJlYWRzLlxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiBwcmVmZXJyZWRUYWdOYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFLFxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2UgaWYgKCFtYXRjaGluZ1RhZy5oYXNEZXNjcmlwdGlvbikge1xuICAgICAgICAgICAgY29udGV4dC5yZXBvcnQoe1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbmFtZS1yZXBsYWNlbWVudHMgLS0gYHBhcmFtTmFtZWAgaXMgdGhlIHBsYWNlaG9sZGVyIHRoaXMgcnVsZSdzIG93biBtZXNzYWdlIHRlbXBsYXRlIHJlYWRzLlxuICAgICAgICAgICAgICAgIHBhcmFtTmFtZTogcGFyYW1ldGVyTmFtZSxcbiAgICAgICAgICAgICAgICB0YWdOYW1lOiBwcmVmZXJyZWRUYWdOYW1lXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG1lc3NhZ2VJZDogTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OLFxuICAgICAgICAgICAgICBub2RlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246ICdSZXF1aXJlIGBAdHlwZVBhcmFtYCB0YWdzIHdpdGggZGVzY3JpcHRpb25zIGZvciBnZW5lcmljIG1ldGhvZCB0eXBlIHBhcmFtZXRlcnMnXG4gICAgfSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgW01FU1NBR0VfSURfTUlTU0lOR19URU1QTEFURV06ICdNaXNzaW5nIEB7eyB0YWdOYW1lIH19IHt7IHBhcmFtTmFtZSB9fScsXG4gICAgICBbTUVTU0FHRV9JRF9NSVNTSU5HX1RFTVBMQVRFX0RFU0NSSVBUSU9OXTogJ0B7eyB0YWdOYW1lIH19IHt7IHBhcmFtTmFtZSB9fSBpcyBtaXNzaW5nIGEgZGVzY3JpcHRpb24nXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6ICdzdWdnZXN0aW9uJ1xuICB9XG59O1xuXG5pbnRlcmZhY2UgUGFyc2VkVGFnIHtcbiAgcmVhZG9ubHkgaGFzRGVzY3JpcHRpb246IGJvb2xlYW47XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQYXJhbWV0ZXJzIGZvciB7QGxpbmsgcGFyc2VUeXBlUGFyYW1ldGVyVGFnc30uXG4gKi9cbmludGVyZmFjZSBQYXJzZVR5cGVQYXJhbWV0ZXJUYWdzUGFyYW1zIHtcbiAgLyoqXG4gICAqIFRoZSByYXcgY29tbWVudCBib2R5ICh3aXRob3V0IHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBjb21tZW50IGRlbGltaXRlcnMpLlxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudEJvZHk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByZWZlcnJlZCB0YWcgbmFtZSAoYHR5cGVQYXJhbWAgb3IgYHRlbXBsYXRlYCkuXG4gICAqL1xuICByZWFkb25seSB0YWdOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIEpTRG9jIGJsb2NrIGNvbW1lbnQgZnJvbSBhIGxpc3Qgb2YgY29tbWVudHMuXG4gKlxuICogQHBhcmFtIGNvbW1lbnRzIC0gVGhlIGNvbW1lbnRzIGJlZm9yZSB0aGUgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBKU0RvYyBibG9jayBjb21tZW50LCBvciBgdW5kZWZpbmVkYCBpZiBub25lIGZvdW5kLlxuICovXG5mdW5jdGlvbiBmaW5kSnNkb2NDb21tZW50KGNvbW1lbnRzOiByZWFkb25seSBDb21tZW50W10pOiBDb21tZW50IHwgdW5kZWZpbmVkIHtcbiAgZm9yIChsZXQgaW5kZXggPSBjb21tZW50cy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7XG4gICAgY29uc3QgY29tbWVudCA9IGNvbW1lbnRzW2luZGV4XTtcbiAgICBpZiAoY29tbWVudD8udHlwZSA9PT0gJ0Jsb2NrJyAmJiBjb21tZW50LnZhbHVlLnN0YXJ0c1dpdGgoJyonKSkge1xuICAgICAgcmV0dXJuIGNvbW1lbnQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYEB0eXBlUGFyYW1gIC8gYEB0ZW1wbGF0ZWAgdGFncyBmcm9tIGEgSlNEb2MgY29tbWVudCBib2R5LlxuICpcbiAqIEBwYXJhbSBwYXJhbXMgLSBUaGUgcGFyYW1ldGVycyBmb3IgdGhlIHBhcnNlLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgcGFyc2VkIHRhZyBlbnRyaWVzLlxuICovXG5mdW5jdGlvbiBwYXJzZVR5cGVQYXJhbWV0ZXJUYWdzKHBhcmFtczogUGFyc2VUeXBlUGFyYW1ldGVyVGFnc1BhcmFtcyk6IFBhcnNlZFRhZ1tdIHtcbiAgY29uc3QgeyBjb21tZW50Qm9keSwgdGFnTmFtZSB9ID0gcGFyYW1zO1xuICBjb25zdCB0YWdzOiBQYXJzZWRUYWdbXSA9IFtdO1xuICAvKlxuICAgKiBUaGUgYCRgIGNoYXJhY3RlciBpcyBhIGxlZ2FsIGlkZW50aWZpZXIgY2hhcmFjdGVyIHRoYXQgYFxcd2AgZXhjbHVkZXMsIHNvIGEgdGFnIGxpa2UgYEB0eXBlUGFyYW0gJE9iamVjdGBcbiAgICogd291bGQgZmFpbCB0byBtYXRjaCBhdCBhbGwgYW5kIHRoZSB0eXBlIHBhcmFtZXRlciB3b3VsZCBiZSByZXBvcnRlZCBhcyB1bmRvY3VtZW50ZWQgZGVzcGl0ZSBoYXZpbmcgYSB0YWcuXG4gICAqL1xuICBjb25zdCB0YWdQYXR0ZXJuID0gbmV3IFJlZ0V4cChTdHJpbmcucmF3YEAoPzoke3RhZ05hbWV9fHRlbXBsYXRlfHR5cGVQYXJhbSlcXHMrKD88dHlwZU5hbWU+W1xcdyRdKykoPzxyZXN0Pi4qKWAsICdnJyk7XG5cbiAgbGV0IG1hdGNoO1xuICB3aGlsZSAoKG1hdGNoID0gdGFnUGF0dGVybi5leGVjKGNvbW1lbnRCb2R5KSkgIT09IG51bGwpIHtcbiAgICBjb25zdCBuYW1lID0gZ2V0TWFuZGF0b3J5TmFtZWRHcm91cChtYXRjaCwgJ3R5cGVOYW1lJyk7XG4gICAgY29uc3QgcmVzdCA9IGdldE1hbmRhdG9yeU5hbWVkR3JvdXAobWF0Y2gsICdyZXN0JykudHJpbSgpO1xuICAgIGNvbnN0IGhhc0Rlc2NyaXB0aW9uID0gcmVzdC5sZW5ndGggPiAwICYmIHJlc3QgIT09ICctJztcbiAgICB0YWdzLnB1c2goeyBoYXNEZXNjcmlwdGlvbiwgbmFtZSB9KTtcbiAgfVxuXG4gIHJldHVybiB0YWdzO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBa0JBLHFCQUF1QztBQUV2Qyw0QkFBK0I7QUFNL0IsTUFBTSxXQUFXO0FBS1YsTUFBTSw4QkFBOEI7QUFLcEMsTUFBTSwwQ0FBMEM7QUFLaEQsTUFBTSx3QkFBeUM7QUFBQSxFQUNwRCxPQUFPLFNBQVM7QUFDZCxVQUFNLFdBQVcsUUFBUSxTQUFTLE9BQU87QUFDekMsVUFBTSxtQkFBbUIsVUFBVSxvQkFBb0IsVUFBVSxLQUFLO0FBRXRFLFdBQU87QUFBQSxNQUNMLG1CQUFtQixNQUF1QjtBQUN4QyxjQUFNLGlCQUFhLHNDQUFlLElBQUk7QUFDdEMsY0FBTSxxQkFBcUIsV0FBVztBQUV0QyxjQUFNLGFBQWEsbUJBQW1CLGdCQUFnQjtBQUN0RCxZQUFJLENBQUMsY0FBYyxXQUFXLFdBQVcsR0FBRztBQUMxQztBQUFBLFFBQ0Y7QUFFQSxjQUFNLGFBQWEsUUFBUTtBQUMzQixjQUFNLFdBQVcsV0FBVyxrQkFBa0IsSUFBSTtBQUNsRCxjQUFNLGVBQWUsaUJBQWlCLFFBQVE7QUFFOUMsWUFBSSxDQUFDLGNBQWM7QUFDakI7QUFBQSxRQUNGO0FBRUEsY0FBTSxhQUFhLHVCQUF1QjtBQUFBLFVBQ3hDLGFBQWEsYUFBYTtBQUFBLFVBQzFCLFNBQVM7QUFBQSxRQUNYLENBQUM7QUFFRCxtQkFBVyxpQkFBaUIsWUFBWTtBQUN0QyxnQkFBTSxnQkFBZ0IsY0FBYyxLQUFLO0FBQ3pDLGdCQUFNLGNBQWMsV0FBVyxLQUFLLENBQUMsUUFBUSxJQUFJLFNBQVMsYUFBYTtBQUV2RSxjQUFJLENBQUMsYUFBYTtBQUNoQixvQkFBUSxPQUFPO0FBQUEsY0FDYixNQUFNO0FBQUE7QUFBQSxnQkFFSixXQUFXO0FBQUEsZ0JBQ1gsU0FBUztBQUFBLGNBQ1g7QUFBQSxjQUNBLFdBQVc7QUFBQSxjQUNYO0FBQUEsWUFDRixDQUFDO0FBQUEsVUFDSCxXQUFXLENBQUMsWUFBWSxnQkFBZ0I7QUFDdEMsb0JBQVEsT0FBTztBQUFBLGNBQ2IsTUFBTTtBQUFBO0FBQUEsZ0JBRUosV0FBVztBQUFBLGdCQUNYLFNBQVM7QUFBQSxjQUNYO0FBQUEsY0FDQSxXQUFXO0FBQUEsY0FDWDtBQUFBLFlBQ0YsQ0FBQztBQUFBLFVBQ0g7QUFBQSxRQUNGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQSxFQUNGO0FBQUEsRUFDQSxNQUFNO0FBQUEsSUFDSixNQUFNO0FBQUEsTUFDSixhQUFhO0FBQUEsSUFDZjtBQUFBLElBQ0EsVUFBVTtBQUFBLE1BQ1IsQ0FBQywyQkFBMkIsR0FBRztBQUFBLE1BQy9CLENBQUMsdUNBQXVDLEdBQUc7QUFBQSxJQUM3QztBQUFBLElBQ0EsUUFBUSxDQUFDO0FBQUEsSUFDVCxNQUFNO0FBQUEsRUFDUjtBQUNGO0FBNEJBLFNBQVMsaUJBQWlCLFVBQW1EO0FBQzNFLFdBQVMsUUFBUSxTQUFTLFNBQVMsR0FBRyxTQUFTLEdBQUcsU0FBUztBQUN6RCxVQUFNLFVBQVUsU0FBUyxLQUFLO0FBQzlCLFFBQUksU0FBUyxTQUFTLFdBQVcsUUFBUSxNQUFNLFdBQVcsR0FBRyxHQUFHO0FBQzlELGFBQU87QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFNBQU87QUFDVDtBQVFBLFNBQVMsdUJBQXVCLFFBQW1EO0FBQ2pGLFFBQU0sRUFBRSxhQUFhLFFBQVEsSUFBSTtBQUNqQyxRQUFNLE9BQW9CLENBQUM7QUFLM0IsUUFBTSxhQUFhLElBQUksT0FBTyxPQUFPLFVBQVUsT0FBTyx5REFBeUQsR0FBRztBQUVsSCxNQUFJO0FBQ0osVUFBUSxRQUFRLFdBQVcsS0FBSyxXQUFXLE9BQU8sTUFBTTtBQUN0RCxVQUFNLFdBQU8sdUNBQXVCLE9BQU8sVUFBVTtBQUNyRCxVQUFNLFdBQU8sdUNBQXVCLE9BQU8sTUFBTSxFQUFFLEtBQUs7QUFDeEQsVUFBTSxpQkFBaUIsS0FBSyxTQUFTLEtBQUssU0FBUztBQUNuRCxTQUFLLEtBQUssRUFBRSxnQkFBZ0IsS0FBSyxDQUFDO0FBQUEsRUFDcEM7QUFFQSxTQUFPO0FBQ1Q7IiwibmFtZXMiOltdfQ==
|