expand-my-type 0.4.0 → 0.5.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/README.md CHANGED
@@ -8,25 +8,14 @@
8
8
 
9
9
  In TypeScript, expanding a type (also known as computing, resolving,
10
10
  simplifying, unpacking, or unwrapping) refers to converting a type expression
11
- into a flattened type that doesn't reference other types. That can be achieved
12
- by defining [a utility type][compute-type]:
11
+ into a flattened type that doesn't reference other types. This is mostly done
12
+ to improve the readability of type hints shown in editors/IDEs.
13
13
 
14
- ```typescript
15
- type Compute<A> = { [K in keyof A]: Compute<A[K]> } & {};
16
- ```
17
-
18
- And wrapping the type expression with it:
19
-
20
- ```typescript
21
- type ExpandedType = Compute<SomeType>;
22
- ```
23
-
24
- This is mostly done to improve the readability of type hints shown in editors/IDEs.
25
-
26
- **Expand My Type** provides a programmatic way to do the same
27
- (see [limitations](#limitations)). It gets the source code as input, along with
28
- a type expression and returns the expanded form as a string. That can be useful
29
- for code-generation, testing, and debugging complex type errors.
14
+ **Expand My Type** provides a programmatic way to expand type expressions in
15
+ TypeScript (see [How It Works](#how-it-works) section for more information). It
16
+ gets the source code as input, along with a type expression and returns the
17
+ expanded form as a string. That can be useful for code-generation, testing, and
18
+ debugging complex type errors.
30
19
 
31
20
  Under the hood, it uses the [TypeScript Compiler API][ts-compiler-api] to expand
32
21
  the type expression and optionally formats the output using
@@ -148,43 +137,29 @@ the following ways:
148
137
  /* { a: string; b: number } */
149
138
  ```
150
139
 
151
- ## Limitations
140
+ ## How It Works
152
141
 
153
- Expand My Type uses the following utility type to expand the type expression:
142
+ Expand My Type uses the following utility types to expand the type expression:
154
143
 
155
144
  ```typescript
145
+ // Expands a type expression
156
146
  type Expand<T> = T extends (...args: infer A) => infer R
157
147
  ? (...args: Expand<A>) => Expand<R>
158
- : { [K in keyof T]: Expand<T[K]> } & {};
159
- ```
160
-
161
- As a result, the output it generates is what the TypeScript compiler would
162
- infer from wrapping the type expression with the `Expand` utility type.
163
- This approach comes with some limitations.
164
-
165
- ### Type References to Union String Literal Types
166
-
167
- Type references to union string literal types are not expanded. For example,
168
- expanding T in the following snippet:
169
-
170
- ```typescript
171
- type T = { s: S };
172
- type S = "a" | "b";
148
+ : {
149
+ [K in keyof T]: T[K] extends string ? ExpandString<T[K]> : Expand<T[K]>;
150
+ } & {};
151
+
152
+ // Forces a union of string literal types to be expanded
153
+ type ExpandString<T extends string> = RemoveUnderscore<AppendUnderscore<T>>;
154
+ type AppendUnderscore<T extends string> = `${T}_` extends string
155
+ ? `${T}_`
156
+ : never;
157
+ type RemoveUnderscore<T extends string> = T extends `${infer U}_` ? U : never;
173
158
  ```
174
159
 
175
- outputs `{ s: S }` instead of `{ s: "a" | "b" }`.
176
-
177
- ### Recursive Type References
178
-
179
- Expanding recursive type references can lead to infinite loops. When an infinite
180
- loop occurs, the generated output gets truncated. Therefore, prettifying the
181
- truncated output will throw an error.
182
-
183
- ## Contributions
184
-
185
- Considering the limitations above, contributions to improve the expansion
186
- utility type are more than welcome.
160
+ This approach comes with some limitations. Most notably, expanding a type that
161
+ leads to an infinite recursion might throw an error (when prettify option is
162
+ enabled), return a truncated output, or return any.
187
163
 
188
- [compute-type]: https://github.com/microsoft/TypeScript/blob/main/tests/cases/compiler/computedTypesKeyofNoIndexSignatureType.ts
189
164
  [prettier]: https://prettier.io
190
165
  [ts-compiler-api]: https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API
package/dist/cli.js CHANGED
@@ -31,7 +31,12 @@ var createExpandCodeBlock = (typeExpression2) => {
31
31
 
32
32
  type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
33
33
  ? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
34
- : { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {};`;
34
+ : { [K in keyof T]: T[K] extends string ? ${identifierPrefix}ExpandString<T[K]> : ${identifierPrefix}Expand<T[K]>; } & {};
35
+
36
+ // Forces a union of string literal types to be expanded
37
+ type ${identifierPrefix}ExpandString<T extends string> = ${identifierPrefix}RemoveUnderscore<${identifierPrefix}AppendUnderscore<T>>;
38
+ type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
39
+ type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
35
40
  };
36
41
  var formatTypeExpression = async (code, prettierOptions) => {
37
42
  return (await format(
@@ -46,14 +51,14 @@ var formatTypeExpression = async (code, prettierOptions) => {
46
51
  // src/index.ts
47
52
  import path from "node:path";
48
53
  import ts2 from "typescript";
49
- var findTypeExpanderResultNode = (node) => {
54
+ var findResultIdentifierNode = (node) => {
50
55
  if (node.getChildCount() == 0) {
51
56
  if (!ts2.isIdentifier(node)) {
52
57
  return void 0;
53
58
  }
54
59
  return node;
55
60
  }
56
- return ts2.forEachChild(node, findTypeExpanderResultNode);
61
+ return ts2.forEachChild(node, findResultIdentifierNode);
57
62
  };
58
63
  async function expandMyType(options) {
59
64
  if (options.typeExpression.trim() === "") {
@@ -94,13 +99,13 @@ async function expandMyType(options) {
94
99
  if (!sourceFile) {
95
100
  throw new Error("Source file not found!");
96
101
  }
97
- const firstIdentifier = findTypeExpanderResultNode(sourceFile);
98
- if (!firstIdentifier) {
102
+ const resultIdentifierNode = findResultIdentifierNode(sourceFile);
103
+ if (!resultIdentifierNode) {
99
104
  throw new Error("No node found!");
100
105
  }
101
106
  const typeChecker = program.getTypeChecker();
102
107
  const expandedTypeString = typeChecker.typeToString(
103
- typeChecker.getTypeAtLocation(firstIdentifier),
108
+ typeChecker.getTypeAtLocation(resultIdentifierNode),
104
109
  void 0,
105
110
  ts2.TypeFormatFlags.NodeBuilderFlagsMask
106
111
  );
@@ -209,4 +214,4 @@ var result = await expandMyType({
209
214
  tsCompilerOptions: tsParsedCommandLine?.options
210
215
  });
211
216
  console.log(result);
212
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogVFtQXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gVFtQXSA6IG5ldmVyO1xufTtcbmV4cG9ydCB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID0gUGFydGlhbDxcbiAgRXh0cmFjdEZ1bmN0aW9uczx0cy5Db21waWxlckhvc3Q+XG4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IGF1Z21lbnRzIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUgZm9yIGV4cGFuZGluZyBhIHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZU5hbWUgTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gYXVnbWVudC5cbiAqIEBwYXJhbSBjb2RlVG9BZGQgVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gcmVhZEZpbGVGdW5jdGlvblxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIGNvZGVUb0FkZDogc3RyaW5nLFxuICBjb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnMsXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4pID0+IHtcbiAgY29uc3QgY3VzdG9tQ29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID8/IHt9KSkge1xuICAgIGN1c3RvbUNvbXBpbGVySG9zdFtrZXldID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMhW2tleV07XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19FWFBBTkRfTVlfVFlQRV9fXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRDb2RlQmxvY2sgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDwke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSXG4gICAgICA/ICguLi5hcmdzOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPEE+KSA9PiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFI+XG4gICAgICA6IHsgW0sgaW4ga2V5b2YgVF06ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpbXBsZVR5cGVBbGlhcyA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHt0eXBlRXhwcmVzc2lvbn07YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWAsXG4gICAgICBwcmV0dGllck9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0IH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrLFxuICBmb3JtYXRUeXBlRXhwcmVzc2lvbixcbn0gZnJvbSBcIi4vY29kZS1nZW5lcmF0b3IudHNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHRoZSBUWVBFX0VYUEFOREVSX1JFU1VMVCB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZS5cbiAqL1xuY29uc3QgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX188SURFTlRJRklFUj5fXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nXG4gICAqL1xuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBzb3VyY2UgdGV4dCB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZE15VHlwZU9wdGlvbnMgPVxuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnNcbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcblxuLyoqXG4gKiBFeHBhbmRzIGEgVHlwZVNjcmlwdCB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBleHBhbmRlZCB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUob3B0aW9uczogRXhwYW5kTXlUeXBlT3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlRXhwcmVzc2lvbi50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gXCJuZXZlclwiO1xuICB9XG5cbiAgaWYgKFwic291cmNlVGV4dFwiIGluIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBcImR1bW15LnRzXCIsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKCkge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuc291cmNlRmlsZU5hbWUpO1xuXG4gIGNvbnN0IHRzQ29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyA/PyB7XG4gICAgbm9FbWl0OiB0cnVlLFxuXG4gICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dKczogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBjb21waWxlckhvc3QgPSBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QoXG4gICAgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSxcbiAgICBjcmVhdGVFeHBhbmRDb2RlQmxvY2sob3B0aW9ucy50eXBlRXhwcmVzc2lvbiksXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgb3B0aW9ucy5jb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCBmaXJzdElkZW50aWZpZXIgPSBmaW5kVHlwZUV4cGFuZGVyUmVzdWx0Tm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFmaXJzdElkZW50aWZpZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24oZmlyc3RJZGVudGlmaWVyKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5ICYmIG9wdGlvbnMucHJldHRpZnkuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZXhwYW5kZWRUeXBlU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdFR5cGVFeHByZXNzaW9uKGV4cGFuZGVkVHlwZVN0cmluZywgb3B0aW9ucy5wcmV0dGlmeT8ub3B0aW9ucyk7XG59XG4iLCAiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuaW1wb3J0IHsgZXhwYW5kTXlUeXBlIH0gZnJvbSBcIi4vaW5kZXgudHNcIjtcbmltcG9ydCB7IHBhcnNlQXJncywgdHlwZSBQYXJzZUFyZ3NDb25maWcgfSBmcm9tIFwibm9kZTp1dGlsXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxudHlwZSBWYWx1ZXMgPSB7XG4gIGhlbHA/OiBib29sZWFuO1xuICBwcmV0dGlmeTogYm9vbGVhbjtcbiAgdHNjb25maWc/OiBzdHJpbmc7XG59O1xuXG5jb25zdCB0cnlQYXJzZSA9IDxcbiAgVmFsdWVzIGV4dGVuZHMgUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICBzdHJpbmcgfCBib29sZWFuIHwgQXJyYXk8c3RyaW5nIHwgYm9vbGVhbj4gfCB1bmRlZmluZWRcbiAgPixcbiAgT3B0aW9ucyBleHRlbmRzIFBhcnNlQXJnc0NvbmZpZ1tcIm9wdGlvbnNcIl0gPSBQYXJzZUFyZ3NDb25maWdbXCJvcHRpb25zXCJdLFxuPihcbiAgb3B0aW9uczogT3B0aW9ucyxcbik6IHsgZXJyb3I/OiBFcnJvcjsgdmFsdWVzOiBWYWx1ZXM7IHBvc2l0aW9uYWxzOiBzdHJpbmdbXSB9ID0+IHtcbiAgbGV0IHJlc3VsdDogUmV0dXJuVHlwZTx0eXBlb2YgcGFyc2VBcmdzPjtcbiAgdHJ5IHtcbiAgICByZXN1bHQgPSBwYXJzZUFyZ3Moe1xuICAgICAgb3B0aW9ucyxcbiAgICAgIHRva2VuczogdHJ1ZSxcbiAgICAgIGFsbG93UG9zaXRpb25hbHM6IHRydWUsXG4gICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVycm9yLFxuICAgICAgdmFsdWVzOiB7fSBhcyBWYWx1ZXMsXG4gICAgICBwb3NpdGlvbmFsczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHsgdG9rZW5zLCB2YWx1ZXMsIHBvc2l0aW9uYWxzIH0gPSByZXN1bHQ7XG5cbiAgLy8gUmVwcm9jZXNzIHRoZSBvcHRpb24gdG9rZW5zIGFuZCBvdmVyd3JpdGUgdGhlIHJldHVybmVkIHZhbHVlcy5cbiAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbnMgPz8gW10pIHtcbiAgICBpZiAodG9rZW4ua2luZCA9PT0gXCJvcHRpb24tdGVybWluYXRvclwiIHx8IHRva2VuLmtpbmQgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4ubmFtZS5zdGFydHNXaXRoKFwibm8tXCIpKSB7XG4gICAgICAvLyBTdG9yZSBmb286ZmFsc2UgZm9yIC0tbm8tZm9vXG4gICAgICBjb25zdCBwb3NpdGl2ZU5hbWUgPSB0b2tlbi5uYW1lLnNsaWNlKFwibm8tXCIubGVuZ3RoKTtcbiAgICAgIHZhbHVlc1twb3NpdGl2ZU5hbWVdID0gZmFsc2U7XG4gICAgICBkZWxldGUgdmFsdWVzW3Rva2VuLm5hbWVdO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZXNhdmUgdmFsdWUgc28gbGFzdCBvbmUgd2lucyBpZiBib3RoIC0tZm9vIGFuZCAtLW5vLWZvby5cbiAgICAgIHZhbHVlc1t0b2tlbi5uYW1lXSA9IHRva2VuLnZhbHVlID8/IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlcnJvcjogdW5kZWZpbmVkLFxuICAgIHZhbHVlczogdmFsdWVzIGFzIFZhbHVlcyxcbiAgICBwb3NpdGlvbmFscyxcbiAgfTtcbn07XG5cbmNvbnN0IHsgZXJyb3IsIHZhbHVlcywgcG9zaXRpb25hbHMgfSA9IHRyeVBhcnNlPFZhbHVlcz4oe1xuICBoZWxwOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwiaFwiLFxuICB9LFxuICBwcmV0dGlmeToge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcInBcIixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBcIm5vLXByZXR0aWZ5XCI6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJQXCIsXG4gIH0sXG4gIHRzY29uZmlnOiB7XG4gICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICBzaG9ydDogXCJjXCIsXG4gIH0sXG59KTtcblxuaWYgKGVycm9yKSB7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgdXNhZ2VQcm9tcHQgPSBbXG4gIFwiVXNhZ2U6XCIsXG4gIFwiICBleHBhbmQtbXktdHlwZSBbb3B0aW9uc10gPHNvdXJjZS1maWxlPiA8ZXhwcmVzc2lvbj5cIixcbiAgXCJcIixcbiAgXCJPcHRpb25zOlwiLFxuICBcIiAgLWgsIC0taGVscFxcdFxcdFxcdFNob3cgdGhpcyBoZWxwIG1lc3NhZ2VcIixcbiAgXCIgIC1wLCAtLXByZXR0aWZ5XFx0XFx0UHJldHRpZnkgdGhlIG91dHB1dCAoZGVmYXVsdClcIixcbiAgXCIgIC1QLCAtLW5vLXByZXR0aWZ5XFx0XFx0RG8gbm90IHByZXR0aWZ5IHRoZSBvdXRwdXRcIixcbiAgXCIgIC1jLCAtLXRzY29uZmlnIDxmaWxlPlxcdFxcdFVzZSB0aGUgc3BlY2lmaWVkIHRzY29uZmlnLmpzb24gZmlsZVwiLFxuXS5qb2luKFwiXFxuXCIpO1xuXG5pZiAocG9zaXRpb25hbHMubGVuZ3RoICE9PSAyKSB7XG4gIGNvbnNvbGUuZXJyb3IodXNhZ2VQcm9tcHQpO1xuICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmlmICh2YWx1ZXMuaGVscCkge1xuICBjb25zb2xlLmVycm9yKHVzYWdlUHJvbXB0KTtcbiAgcHJvY2Vzcy5leGl0KDApO1xufVxuXG5jb25zdCBbc291cmNlRmlsZU5hbWUsIHR5cGVFeHByZXNzaW9uXSA9IHBvc2l0aW9uYWxzO1xuY29uc3QgeyBwcmV0dGlmeSwgdHNjb25maWc6IHRzQ29uZmlnRmlsZU5hbWUgfSA9IHZhbHVlcztcblxubGV0IHRzUGFyc2VkQ29tbWFuZExpbmU6IHRzLlBhcnNlZENvbW1hbmRMaW5lIHwgdW5kZWZpbmVkO1xuXG5pZiAodHNDb25maWdGaWxlTmFtZSkge1xuICBjb25zdCBjb25maWdGaWxlID0gdHMucmVhZENvbmZpZ0ZpbGUodHNDb25maWdGaWxlTmFtZSwgdHMuc3lzLnJlYWRGaWxlKTtcbiAgY29uc3QgY29tcGlsZXJPcHRpb25zID0gdHMucGFyc2VKc29uQ29uZmlnRmlsZUNvbnRlbnQoXG4gICAgY29uZmlnRmlsZS5jb25maWcsXG4gICAgdHMuc3lzLFxuICAgIFwiLi9cIixcbiAgKTtcblxuICB0c1BhcnNlZENvbW1hbmRMaW5lID0gY29tcGlsZXJPcHRpb25zO1xufVxuXG5jb25zdCByZXN1bHQgPSBhd2FpdCBleHBhbmRNeVR5cGUoe1xuICBzb3VyY2VGaWxlTmFtZSxcbiAgdHlwZUV4cHJlc3Npb24sXG4gIHByZXR0aWZ5OiB7XG4gICAgZW5hYmxlZDogcHJldHRpZnksXG4gIH0sXG4gIHRzQ29tcGlsZXJPcHRpb25zOiB0c1BhcnNlZENvbW1hbmRMaW5lPy5vcHRpb25zLFxufSk7XG5cbmNvbnNvbGUubG9nKHJlc3VsdCk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7QUFBQSxPQUFPLFFBQVE7QUFrQlIsSUFBTSw4QkFBOEIsQ0FDekNBLGlCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFDSCxRQUFNLHFCQUFxQixHQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFDNUUsYUFBVyxPQUFPLE9BQU8sS0FBSyxpQ0FBaUMsQ0FBQyxDQUFDLEdBQUc7QUFDbEUsdUJBQW1CLEdBQUcsSUFBSSw4QkFBK0IsR0FBRztBQUFBLEVBQzlEO0FBRUEsUUFBTSxtQkFBbUIsbUJBQW1CO0FBRTVDLHFCQUFtQixXQUFXLENBQUMsYUFBYTtBQUMxQyxVQUFNLFdB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QSxJQUNOLE9BQU87QUFBQSxFQUNUO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixNQUFNO0FBQUEsSUFDTixPQUFPO0FBQUEsRUFDVDtBQUNGLENBQUM7QUFFRCxJQUFJLE9BQU87QUFDVCxVQUFRLE1BQU0sTUFBTSxPQUFPO0FBQzNCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBRUEsSUFBTSxjQUFjO0FBQUEsRUFDbEI7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQ0YsRUFBRSxLQUFLLElBQUk7QUFFWCxJQUFJLFlBQVksV0FBVyxHQUFHO0FBQzVCLFVBQVEsTUFBTSxXQUFXO0FBQ3pCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBRUEsSUFBSSxPQUFPLE1BQU07QUFDZixVQUFRLE1BQU0sV0FBVztBQUN6QixVQUFRLEtBQUssQ0FBQztBQUNoQjtBQUVBLElBQU0sQ0FBQyxnQkFBZ0IsY0FBYyxJQUFJO0FBQ3pDLElBQU0sRUFBRSxVQUFVLFVBQVUsaUJBQWlCLElBQUk7QUFFakQsSUFBSTtBQUVKLElBQUksa0JBQWtCO0FBQ3BCLFFBQU0sYUFBYUosSUFBRyxlQUFlLGtCQUFrQkEsSUFBRyxJQUFJLFFBQVE7QUFDdEUsUUFBTSxrQkFBa0JBLElBQUc7QUFBQSxJQUN6QixXQUFXO0FBQUEsSUFDWEEsSUFBRztBQUFBLElBQ0g7QUFBQSxFQUNGO0FBRUEsd0JBQXNCO0FBQ3hCO0FBRUEsSUFBTSxTQUFTLE1BQU0sYUFBYTtBQUFBLEVBQ2hDO0FBQUEsRUFDQTtBQUFBLEVBQ0EsVUFBVTtBQUFBLElBQ1IsU0FBUztBQUFBLEVBQ1g7QUFBQSxFQUNBLG1CQUFtQixxQkFBcUI7QUFDMUMsQ0FBQztBQUVELFFBQVEsSUFBSSxNQUFNOyIsCiAgIm5hbWVzIjogWyJzb3VyY2VGaWxlTmFtZSIsICJ0eXBlRXhwcmVzc2lvbiIsICJ0cyIsICJ0cyIsICJyZXN1bHQiLCAiZXJyb3IiLCAidmFsdWVzIiwgInBvc2l0aW9uYWxzIl0KfQo=
217
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiLCAiLi4vc3JjL2NsaS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbnR5cGUgRXh0cmFjdEZ1bmN0aW9uczxULCBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQ+ID0ge1xuICBbUCBpbiBLXTogVFtQXSBleHRlbmRzICguLi5hcmdzOiBhbnlbXSkgPT4gYW55ID8gVFtQXSA6IG5ldmVyO1xufTtcbmV4cG9ydCB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID0gUGFydGlhbDxcbiAgRXh0cmFjdEZ1bmN0aW9uczx0cy5Db21waWxlckhvc3Q+XG4+O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IGF1Z21lbnRzIHRoZSBzcGVjaWZpZWQgc291cmNlIGZpbGUgZm9yIGV4cGFuZGluZyBhIHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gc291cmNlRmlsZU5hbWUgTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gYXVnbWVudC5cbiAqIEBwYXJhbSBjb2RlVG9BZGQgVHlwZSBleHByZXNzaW9uLlxuICogQHBhcmFtIGNvbXBpbGVyT3B0aW9ucyBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gKiBAcGFyYW0gcmVhZEZpbGVGdW5jdGlvblxuICogQHJldHVybnMgQSBjdXN0b20gY29tcGlsZXIgaG9zdCB0aGF0IHJldHVybnMgYW4gYXVnbWVudGVkIHNvdXJjZSBmaWxlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZXhwYW5kIHRoZSB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgPSAoXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmcsXG4gIGNvZGVUb0FkZDogc3RyaW5nLFxuICBjb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnMsXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4pID0+IHtcbiAgY29uc3QgY3VzdG9tQ29tcGlsZXJIb3N0ID0gdHMuY3JlYXRlQ29tcGlsZXJIb3N0KGNvbXBpbGVyT3B0aW9ucyA/PyB7fSwgdHJ1ZSk7XG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzID8/IHt9KSkge1xuICAgIGN1c3RvbUNvbXBpbGVySG9zdFtrZXldID0gY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMhW2tleV07XG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFJlYWRGaWxlID0gY3VzdG9tQ29tcGlsZXJIb3N0LnJlYWRGaWxlO1xuXG4gIGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZSA9IChmaWxlTmFtZSkgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRzID0gb3JpZ2luYWxSZWFkRmlsZShmaWxlTmFtZSk7XG5cbiAgICBpZiAoY29udGVudHMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGNvbnRlbnRzO1xuICAgIH1cblxuICAgIGlmIChmaWxlTmFtZSAhPT0gc291cmNlRmlsZU5hbWUpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7Y29kZVRvQWRkfVxcbiR7Y29udGVudHN9YDtcbiAgfTtcblxuICByZXR1cm4gY3VzdG9tQ29tcGlsZXJIb3N0O1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgeyBmb3JtYXQgfSBmcm9tIFwicHJldHRpZXJcIjtcblxuY29uc3QgaWRlbnRpZmllclByZWZpeCA9IFwiX19FWFBBTkRfTVlfVFlQRV9fXCI7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVFeHBhbmRDb2RlQmxvY2sgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvYmxvYi9tYWluL3Rlc3RzL2Nhc2VzL2NvbXBpbGVyL2NvbXB1dGVkVHlwZXNLZXlvZk5vSW5kZXhTaWduYXR1cmVUeXBlLnRzXG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDwke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwcmVzc2lvbiA9ICR7dHlwZUV4cHJlc3Npb259O1xuXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFQ+ID0gVCBleHRlbmRzICguLi5hcmdzOiBpbmZlciBBKSA9PiBpbmZlciBSXG4gICAgICA/ICguLi5hcmdzOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPEE+KSA9PiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFI+XG4gICAgICA6IHsgW0sgaW4ga2V5b2YgVF06IFRbS10gZXh0ZW5kcyBzdHJpbmcgPyAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFRbS10+IDogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUW0tdPjsgfSAmIHt9O1xuXG4gICAgLy8gRm9yY2VzIGEgdW5pb24gb2Ygc3RyaW5nIGxpdGVyYWwgdHlwZXMgdG8gYmUgZXhwYW5kZWRcbiAgICB0eXBlICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmRTdHJpbmc8VCBleHRlbmRzIHN0cmluZz4gPSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTwke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUPj47XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9QXBwZW5kVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFxcYFxcJHtUfV9cXGAgZXh0ZW5kcyBzdHJpbmcgPyBcXGBcXCR7VH1fXFxgIDogbmV2ZXI7XG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVtb3ZlVW5kZXJzY29yZTxUIGV4dGVuZHMgc3RyaW5nPiA9IFQgZXh0ZW5kcyBcXGBcXCR7aW5mZXIgVX1fXFxgID8gVSA6IG5ldmVyO2A7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlU2ltcGxlVHlwZUFsaWFzID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH1SZXN1bHQgPSAke3R5cGVFeHByZXNzaW9ufTtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFR5cGVFeHByZXNzaW9uID0gYXN5bmMgKFxuICBjb2RlOiBzdHJpbmcsXG4gIHByZXR0aWVyT3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucyxcbikgPT4ge1xuICByZXR1cm4gKFxuICAgIGF3YWl0IGZvcm1hdChcbiAgICAgIGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSAke2NvZGV9YCxcbiAgICAgIHByZXR0aWVyT3B0aW9ucyA/PyB7XG4gICAgICAgIHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsXG4gICAgICAgIHNlbWk6IGZhbHNlLFxuICAgICAgfSxcbiAgICApXG4gIClcbiAgICAudHJpbSgpXG4gICAgLnN1YnN0cmluZyhgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gYC5sZW5ndGgpO1xufTtcbiIsICJpbXBvcnQgeyBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHsgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQge1xuICBjcmVhdGVFeHBhbmRDb2RlQmxvY2ssXG4gIGZvcm1hdFR5cGVFeHByZXNzaW9uLFxufSBmcm9tIFwiLi9jb2RlLWdlbmVyYXRvci50c1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbi8qKlxuICogRmluZHMgdGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIGluIHdoaWNoIHR5cGUgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICovXG5jb25zdCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUgPSAobm9kZTogdHMuTm9kZSk6IHRzLk5vZGUgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAobm9kZS5nZXRDaGlsZENvdW50KCkgPT0gMCkge1xuICAgIGlmICghdHMuaXNJZGVudGlmaWVyKG5vZGUpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIFNpbmNlIHdlIHB1dCB0aGUgX188SURFTlRJRklFUj5fXyB0eXBlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gICAgLy8gZmlsZSwgd2UgY2FuIHJldHVybiB0aGUgZmlyc3QgaWRlbnRpZmllciB3ZSBmaW5kLlxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJkdW1teS50c1wiLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZSgpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0SWRlbnRpZmllck5vZGUgPSBmaW5kUmVzdWx0SWRlbnRpZmllck5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghcmVzdWx0SWRlbnRpZmllck5vZGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBub2RlIGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHR5cGVDaGVja2VyID0gcHJvZ3JhbS5nZXRUeXBlQ2hlY2tlcigpO1xuICBjb25zdCBleHBhbmRlZFR5cGVTdHJpbmcgPSB0eXBlQ2hlY2tlci50eXBlVG9TdHJpbmcoXG4gICAgdHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24ocmVzdWx0SWRlbnRpZmllck5vZGUpLFxuICAgIHVuZGVmaW5lZCxcbiAgICB0cy5UeXBlRm9ybWF0RmxhZ3MuTm9kZUJ1aWxkZXJGbGFnc01hc2ssXG4gICk7XG5cbiAgaWYgKG9wdGlvbnMucHJldHRpZnkgJiYgb3B0aW9ucy5wcmV0dGlmeS5lbmFibGVkID09PSBmYWxzZSkge1xuICAgIHJldHVybiBleHBhbmRlZFR5cGVTdHJpbmc7XG4gIH1cblxuICByZXR1cm4gZm9ybWF0VHlwZUV4cHJlc3Npb24oZXhwYW5kZWRUeXBlU3RyaW5nLCBvcHRpb25zLnByZXR0aWZ5Py5vcHRpb25zKTtcbn1cbiIsICIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgeyBleHBhbmRNeVR5cGUgfSBmcm9tIFwiLi9pbmRleC50c1wiO1xuaW1wb3J0IHsgcGFyc2VBcmdzLCB0eXBlIFBhcnNlQXJnc0NvbmZpZyB9IGZyb20gXCJub2RlOnV0aWxcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIFZhbHVlcyA9IHtcbiAgaGVscD86IGJvb2xlYW47XG4gIHByZXR0aWZ5OiBib29sZWFuO1xuICB0c2NvbmZpZz86IHN0cmluZztcbn07XG5cbmNvbnN0IHRyeVBhcnNlID0gPFxuICBWYWx1ZXMgZXh0ZW5kcyBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyB8IGJvb2xlYW4gfCBBcnJheTxzdHJpbmcgfCBib29sZWFuPiB8IHVuZGVmaW5lZFxuICA+LFxuICBPcHRpb25zIGV4dGVuZHMgUGFyc2VBcmdzQ29uZmlnW1wib3B0aW9uc1wiXSA9IFBhcnNlQXJnc0NvbmZpZ1tcIm9wdGlvbnNcIl0sXG4+KFxuICBvcHRpb25zOiBPcHRpb25zLFxuKTogeyBlcnJvcj86IEVycm9yOyB2YWx1ZXM6IFZhbHVlczsgcG9zaXRpb25hbHM6IHN0cmluZ1tdIH0gPT4ge1xuICBsZXQgcmVzdWx0OiBSZXR1cm5UeXBlPHR5cGVvZiBwYXJzZUFyZ3M+O1xuICB0cnkge1xuICAgIHJlc3VsdCA9IHBhcnNlQXJncyh7XG4gICAgICBvcHRpb25zLFxuICAgICAgdG9rZW5zOiB0cnVlLFxuICAgICAgYWxsb3dQb3NpdGlvbmFsczogdHJ1ZSxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZXJyb3IsXG4gICAgICB2YWx1ZXM6IHt9IGFzIFZhbHVlcyxcbiAgICAgIHBvc2l0aW9uYWxzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgeyB0b2tlbnMsIHZhbHVlcywgcG9zaXRpb25hbHMgfSA9IHJlc3VsdDtcblxuICAvLyBSZXByb2Nlc3MgdGhlIG9wdGlvbiB0b2tlbnMgYW5kIG92ZXJ3cml0ZSB0aGUgcmV0dXJuZWQgdmFsdWVzLlxuICBmb3IgKGNvbnN0IHRva2VuIG9mIHRva2VucyA/PyBbXSkge1xuICAgIGlmICh0b2tlbi5raW5kID09PSBcIm9wdGlvbi10ZXJtaW5hdG9yXCIgfHwgdG9rZW4ua2luZCA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh0b2tlbi5uYW1lLnN0YXJ0c1dpdGgoXCJuby1cIikpIHtcbiAgICAgIC8vIFN0b3JlIGZvbzpmYWxzZSBmb3IgLS1uby1mb29cbiAgICAgIGNvbnN0IHBvc2l0aXZlTmFtZSA9IHRva2VuLm5hbWUuc2xpY2UoXCJuby1cIi5sZW5ndGgpO1xuICAgICAgdmFsdWVzW3Bvc2l0aXZlTmFtZV0gPSBmYWxzZTtcbiAgICAgIGRlbGV0ZSB2YWx1ZXNbdG9rZW4ubmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlc2F2ZSB2YWx1ZSBzbyBsYXN0IG9uZSB3aW5zIGlmIGJvdGggLS1mb28gYW5kIC0tbm8tZm9vLlxuICAgICAgdmFsdWVzW3Rva2VuLm5hbWVdID0gdG9rZW4udmFsdWUgPz8gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVycm9yOiB1bmRlZmluZWQsXG4gICAgdmFsdWVzOiB2YWx1ZXMgYXMgVmFsdWVzLFxuICAgIHBvc2l0aW9uYWxzLFxuICB9O1xufTtcblxuY29uc3QgeyBlcnJvciwgdmFsdWVzLCBwb3NpdGlvbmFscyB9ID0gdHJ5UGFyc2U8VmFsdWVzPih7XG4gIGhlbHA6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBzaG9ydDogXCJoXCIsXG4gIH0sXG4gIHByZXR0aWZ5OiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgc2hvcnQ6IFwicFwiLFxuICAgIGRlZmF1bHQ6IHRydWUsXG4gIH0sXG4gIFwibm8tcHJldHRpZnlcIjoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIHNob3J0OiBcIlBcIixcbiAgfSxcbiAgdHNjb25maWc6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIHNob3J0OiBcImNcIixcbiAgfSxcbn0pO1xuXG5pZiAoZXJyb3IpIHtcbiAgY29uc29sZS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuXG5jb25zdCB1c2FnZVByb21wdCA9IFtcbiAgXCJVc2FnZTpcIixcbiAgXCIgIGV4cGFuZC1teS10eXBlIFtvcHRpb25zXSA8c291cmNlLWZpbGU+IDxleHByZXNzaW9uPlwiLFxuICBcIlwiLFxuICBcIk9wdGlvbnM6XCIsXG4gIFwiICAtaCwgLS1oZWxwXFx0XFx0XFx0U2hvdyB0aGlzIGhlbHAgbWVzc2FnZVwiLFxuICBcIiAgLXAsIC0tcHJldHRpZnlcXHRcXHRQcmV0dGlmeSB0aGUgb3V0cHV0IChkZWZhdWx0KVwiLFxuICBcIiAgLVAsIC0tbm8tcHJldHRpZnlcXHRcXHREbyBub3QgcHJldHRpZnkgdGhlIG91dHB1dFwiLFxuICBcIiAgLWMsIC0tdHNjb25maWcgPGZpbGU+XFx0XFx0VXNlIHRoZSBzcGVjaWZpZWQgdHNjb25maWcuanNvbiBmaWxlXCIsXG5dLmpvaW4oXCJcXG5cIik7XG5cbmlmIChwb3NpdGlvbmFscy5sZW5ndGggIT09IDIpIHtcbiAgY29uc29sZS5lcnJvcih1c2FnZVByb21wdCk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuaWYgKHZhbHVlcy5oZWxwKSB7XG4gIGNvbnNvbGUuZXJyb3IodXNhZ2VQcm9tcHQpO1xuICBwcm9jZXNzLmV4aXQoMCk7XG59XG5cbmNvbnN0IFtzb3VyY2VGaWxlTmFtZSwgdHlwZUV4cHJlc3Npb25dID0gcG9zaXRpb25hbHM7XG5jb25zdCB7IHByZXR0aWZ5LCB0c2NvbmZpZzogdHNDb25maWdGaWxlTmFtZSB9ID0gdmFsdWVzO1xuXG5sZXQgdHNQYXJzZWRDb21tYW5kTGluZTogdHMuUGFyc2VkQ29tbWFuZExpbmUgfCB1bmRlZmluZWQ7XG5cbmlmICh0c0NvbmZpZ0ZpbGVOYW1lKSB7XG4gIGNvbnN0IGNvbmZpZ0ZpbGUgPSB0cy5yZWFkQ29uZmlnRmlsZSh0c0NvbmZpZ0ZpbGVOYW1lLCB0cy5zeXMucmVhZEZpbGUpO1xuICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChcbiAgICBjb25maWdGaWxlLmNvbmZpZyxcbiAgICB0cy5zeXMsXG4gICAgXCIuL1wiLFxuICApO1xuXG4gIHRzUGFyc2VkQ29tbWFuZExpbmUgPSBjb21waWxlck9wdGlvbnM7XG59XG5cbmNvbnN0IHJlc3VsdCA9IGF3YWl0IGV4cGFuZE15VHlwZSh7XG4gIHNvdXJjZUZpbGVOYW1lLFxuICB0eXBlRXhwcmVzc2lvbixcbiAgcHJldHRpZnk6IHtcbiAgICBlbmFibGVkOiBwcmV0dGlmeSxcbiAgfSxcbiAgdHNDb21waWxlck9wdGlvbnM6IHRzUGFyc2VkQ29tbWFuZExpbmU/Lm9wdGlvbnMsXG59KTtcblxuY29uc29sZS5sb2cocmVzdWx0KTtcbiJdLAogICJtYXBwaW5ncyI6ICI7OztBQUFBLE9BQU8sUUFBUTtBQWtCUixJQUFNLDhCQUE4QixDQUN6Q0EsaUJBQ0EsV0FDQSxpQkFDQSxrQ0FDRztBQUNILFFBQU0scUJBQXFCLEdBQUcsbUJBQW1CLG1CQUFtQixDQUFDLEdBQUcsSUFBSTtBQUM1RSxhQUFXLE9BQU8sT0FBTyxLQUFLLGlDQUFpQyxDQUFDLENBQUMsR0FBRztBQUNsRSx1QkFBbUIsR0FBRyxJQUFJLDhCQUErQixHQUFHO0FBQUEsRUFDOUQ7QUFFQSxRQUFNLG1CQUFtQixtQkFBbUI7QUFFNUMscUJBQW1CLFdBQVcsQ0FBQyxhQUFhO0FBQzFDLFVBQU0sV0FBVyxpQkFBaUIsUUFBUTtBQUUxQyxRQUFJLGFBQWEsUUFBVztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksYUFBYUEsaUJBQWdCO0FBQy9CLGFBQU87QUFBQSxJQUNUO0FBRUEsV0FBTyxHQUFHLFNBQVM7QUFBQSxFQUFLLFFBQVE7QUFBQSxFQUNsQztBQUVBLFNBQU87QUFDVDs7O0FDN0NBLFNBQVMsY0FBYztBQUV2QixJQUFNLG1CQUFtQjtBQUVsQixJQUFNLHdCQUF3QixDQUFDQyxvQkFBMkI7QUFFL0QsU0FBTyxRQUFRLGdCQUFnQixZQUFZLGdCQUFnQixVQUFVLGdCQUFnQjtBQUFBLFdBQzVFLGdCQUFnQixnQkFBZ0JBLGVBQWM7QUFBQTtBQUFBLFdBRTlDLGdCQUFnQjtBQUFBLG9CQUNQLGdCQUFnQixpQkFBaUIsZ0JBQWdCO0FBQUEsa0RBQ25CLGdCQUFnQix3QkFBd0IsZ0JBQWdCO0FBQUE7QUFBQTtBQUFBLFdBRy9GLGdCQUFnQixvQ0FBb0MsZ0JBQWdCLG9CQUFvQixnQkFBZ0I7QUFBQSxXQUN4Ryxn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QU8sTUFBTTtBQUNmLFVBQVEsTUFBTSxXQUFXO0FBQ3pCLFVBQVEsS0FBSyxDQUFDO0FBQ2hCO0FBRUEsSUFBTSxDQUFDLGdCQUFnQixjQUFjLElBQUk7QUFDekMsSUFBTSxFQUFFLFVBQVUsVUFBVSxpQkFBaUIsSUFBSTtBQUVqRCxJQUFJO0FBRUosSUFBSSxrQkFBa0I7QUFDcEIsUUFBTSxhQUFhSixJQUFHLGVBQWUsa0JBQWtCQSxJQUFHLElBQUksUUFBUTtBQUN0RSxRQUFNLGtCQUFrQkEsSUFBRztBQUFBLElBQ3pCLFdBQVc7QUFBQSxJQUNYQSxJQUFHO0FBQUEsSUFDSDtBQUFBLEVBQ0Y7QUFFQSx3QkFBc0I7QUFDeEI7QUFFQSxJQUFNLFNBQVMsTUFBTSxhQUFhO0FBQUEsRUFDaEM7QUFBQSxFQUNBO0FBQUEsRUFDQSxVQUFVO0FBQUEsSUFDUixTQUFTO0FBQUEsRUFDWDtBQUFBLEVBQ0EsbUJBQW1CLHFCQUFxQjtBQUMxQyxDQUFDO0FBRUQsUUFBUSxJQUFJLE1BQU07IiwKICAibmFtZXMiOiBbInNvdXJjZUZpbGVOYW1lIiwgInR5cGVFeHByZXNzaW9uIiwgInRzIiwgInRzIiwgInJlc3VsdCIsICJlcnJvciIsICJ2YWx1ZXMiLCAicG9zaXRpb25hbHMiXQp9Cg==
package/dist/index.cjs CHANGED
@@ -64,7 +64,12 @@ var createExpandCodeBlock = (typeExpression) => {
64
64
 
65
65
  type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
66
66
  ? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
67
- : { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {};`;
67
+ : { [K in keyof T]: T[K] extends string ? ${identifierPrefix}ExpandString<T[K]> : ${identifierPrefix}Expand<T[K]>; } & {};
68
+
69
+ // Forces a union of string literal types to be expanded
70
+ type ${identifierPrefix}ExpandString<T extends string> = ${identifierPrefix}RemoveUnderscore<${identifierPrefix}AppendUnderscore<T>>;
71
+ type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
72
+ type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
68
73
  };
69
74
  var formatTypeExpression = async (code, prettierOptions) => {
70
75
  return (await (0, import_prettier.format)(
@@ -79,14 +84,14 @@ var formatTypeExpression = async (code, prettierOptions) => {
79
84
  // src/index.ts
80
85
  var import_node_path = __toESM(require("path"), 1);
81
86
  var import_typescript2 = __toESM(require("typescript"), 1);
82
- var findTypeExpanderResultNode = (node) => {
87
+ var findResultIdentifierNode = (node) => {
83
88
  if (node.getChildCount() == 0) {
84
89
  if (!import_typescript2.default.isIdentifier(node)) {
85
90
  return void 0;
86
91
  }
87
92
  return node;
88
93
  }
89
- return import_typescript2.default.forEachChild(node, findTypeExpanderResultNode);
94
+ return import_typescript2.default.forEachChild(node, findResultIdentifierNode);
90
95
  };
91
96
  async function expandMyType(options) {
92
97
  if (options.typeExpression.trim() === "") {
@@ -127,13 +132,13 @@ async function expandMyType(options) {
127
132
  if (!sourceFile) {
128
133
  throw new Error("Source file not found!");
129
134
  }
130
- const firstIdentifier = findTypeExpanderResultNode(sourceFile);
131
- if (!firstIdentifier) {
135
+ const resultIdentifierNode = findResultIdentifierNode(sourceFile);
136
+ if (!resultIdentifierNode) {
132
137
  throw new Error("No node found!");
133
138
  }
134
139
  const typeChecker = program.getTypeChecker();
135
140
  const expandedTypeString = typeChecker.typeToString(
136
- typeChecker.getTypeAtLocation(firstIdentifier),
141
+ typeChecker.getTypeAtLocation(resultIdentifierNode),
137
142
  void 0,
138
143
  import_typescript2.default.TypeFormatFlags.NodeBuilderFlagsMask
139
144
  );
@@ -146,4 +151,4 @@ async function expandMyType(options) {
146
151
  0 && (module.exports = {
147
152
  expandMyType
148
153
  });
149
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICIuLi9zcmMvY29kZS1nZW5lcmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKi9cbmNvbnN0IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fPElERU5USUZJRVI+X18gdHlwZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgIC8vIGZpbGUsIHdlIGNhbiByZXR1cm4gdGhlIGZpcnN0IGlkZW50aWZpZXIgd2UgZmluZC5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJkdW1teS50c1wiLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZSgpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgZmlyc3RJZGVudGlmaWVyID0gZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghZmlyc3RJZGVudGlmaWVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGZpcnN0SWRlbnRpZmllciksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIiwgImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFRbS10+OyB9ICYge307YDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTaW1wbGVUeXBlQWxpYXMgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7dHlwZUV4cHJlc3Npb259O2A7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VHlwZUV4cHJlc3Npb24gPSBhc3luYyAoXG4gIGNvZGU6IHN0cmluZyxcbiAgcHJldHRpZXJPcHRpb25zPzogUHJldHRpZXJPcHRpb25zLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgZm9ybWF0KFxuICAgICAgYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9ICR7Y29kZX1gLFxuICAgICAgcHJldHRpZXJPcHRpb25zID8/IHtcbiAgICAgICAgcGFyc2VyOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgc2VtaTogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgKVxuICAgIC50cmltKClcbiAgICAuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSx3QkFBZTtBQWtCUixJQUFNLDhCQUE4QixDQUN6QyxnQkFDQSxXQUNBLGlCQUNBLGtDQUNHO0FBQ0gsUUFBTSxxQkFBcUIsa0JBQUFBLFFBQUcsbUJBQW1CLG1CQUFtQixDQUFDLEdBQUcsSUFBSTtBQUM1RSxhQUFXLE9BQU8sT0FBTyxLQUFLLGlDQUFpQyxDQUFDLENBQUMsR0FBRztBQUNsRSx1QkFBbUIsR0FBRyxJQUFJLDhCQUErQixHQUFHO0FBQUEsRUFDOUQ7QUFFQSxRQUFNLG1CQUFtQixtQkFBbUI7QUFFNUMscUJBQW1CLFdBQVcsQ0FBQyxhQUFhO0FBQzFDLFVBQU0sV0FBVyxpQkFBaUIsUUFBUTtBQUUxQyxRQUFJLGFBQWEsUUFBVztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUVBLFFBQUksYUFBYSxnQkFBZ0I7QUFDL0IsYUFBTztBQUFBLElBQ1Q7QUFFQSxXQUFPLEdBQUcsU0FBUztBQUFBLEVBQUssUUFBUTtBQUFBLEVBQ2xDO0FBRUEsU0FBTztBQUNUOzs7QUM3Q0Esc0JBQXVCO0FBRXZCLElBQU0sbUJBQW1CO0FBRWxCLElBQU0sd0JBQXdCLENBQUMsbUJBQTJCO0FBRS9ELFNBQU8sUUFBUSxnQkFBZ0IsWUFBWSxnQkFBZ0IsVUFBVSxnQkFBZ0I7QUFBQSxXQUM1RSxnQkFBZ0IsZ0JBQWdCLGNBQWM7QUFBQTtBQUFBLFdBRTlDLGdCQUFnQjtBQUFBLG9CQUNQLGdCQUFnQixpQkFBaUIsZ0JBQWdCO0FBQUEsNEJBQ3pDLGdCQUFnQjtBQUM1QztBQU1PLElBQU0sdUJBQXVCLE9BQ2xDLE1BQ0Esb0JBQ0c7QUFDSCxVQUNFLFVBQU07QUFBQSxJQUNKLFFBQVEsZ0JBQWdCLE1BQU0sSUFBSTtBQUFBLElBQ2xDLG1CQUFtQjtBQUFBLE1BQ2pCLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRixHQUVDLEtBQUssRUFDTCxVQUFVLFFBQVEsZ0JBQWdCLE1BQU0sTUFBTTtBQUNuRDs7O0FGNUJBLHVCQUFpQjtBQUVqQixJQUFBQyxxQkFBZTtBQVFmLElBQU0sNkJBQTZCLENBQUMsU0FBdUM7QUFDekUsTUFBSSxLQUFLLGNBQWMsS0FBSyxHQUFHO0FBQzdCLFFBQUksQ0FBQyxtQkFBQUMsUUFBRyxhQUFhLElBQUksR0FBRztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUlBLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxtQkFBQUEsUUFBRyxhQUFhLE1BQU0sMEJBQTBCO0FBQ3pEO0FBZ0VBLGVBQXNCLGFBQWEsU0FBOEI7QUFDL0QsTUFBSSxRQUFRLGVBQWUsS0FBSyxNQUFNLElBQUk7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGdCQUFnQixTQUFTO0FBQzNCLFdBQU8sYUFBYTtBQUFBLE1BQ2xCLGdCQUFnQjtBQUFBLE1BQ2hCLGdCQUFnQixRQUFRO0FBQUEsTUFDeEIsK0JBQStCO0FBQUEsUUFDN0IsV0FBVztBQUNULGlCQUFPLFFBQVE7QUFBQSxRQUNqQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLG1CQUFtQixRQUFRO0FBQUEsSUFDN0IsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLHlCQUF5QixpQkFBQUMsUUFBSyxRQUFRLFFBQVEsY0FBYztBQUVsRSxRQUFNLG9CQUFvQixRQUFRLHFCQUFxQjtBQUFBLElBQ3JELFFBQVE7QUFBQSxJQUVSLDhCQUE4QjtBQUFBLElBQzlCLDBCQUEwQjtBQUFBLElBQzFCLDRCQUE0QjtBQUFBLElBQzVCLFNBQVM7QUFBQSxFQUNYO0FBRUEsUUFBTSxlQUFlO0FBQUEsSUFDbkI7QUFBQSxJQUNBLHNCQUFzQixRQUFRLGNBQWM7QUFBQSxJQUM1QztBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Y7QUFFQSxRQUFNLFVBQVUsbUJBQUFELFFBQUc7QUFBQSxJQUNqQixDQUFDLHNCQUFzQjtBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUMvRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBRUEsUUFBTSxrQkFBa0IsMkJBQTJCLFVBQVU7QUFDN0QsTUFBSSxDQUFDLGlCQUFpQjtBQUNwQixVQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUNsQztBQUVBLFFBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsUUFBTSxxQkFBcUIsWUFBWTtBQUFBLElBQ3JDLFlBQVksa0JBQWtCLGVBQWU7QUFBQSxJQUM3QztBQUFBLElBQ0EsbUJBQUFBLFFBQUcsZ0JBQWdCO0FBQUEsRUFDckI7QUFFQSxNQUFJLFFBQVEsWUFBWSxRQUFRLFNBQVMsWUFBWSxPQUFPO0FBQzFELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxxQkFBcUIsb0JBQW9CLFFBQVEsVUFBVSxPQUFPO0FBQzNFOyIsCiAgIm5hbWVzIjogWyJ0cyIsICJpbXBvcnRfdHlwZXNjcmlwdCIsICJ0cyIsICJwYXRoIl0KfQo=
154
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIiwgIi4uL3NyYy9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50cyIsICIuLi9zcmMvY29kZS1nZW5lcmF0b3IudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgcmVzdWx0IHR5cGUgaWRlbnRpZmllciBub2RlLlxuICpcbiAqIEBwYXJhbSBub2RlIE5vZGUgaW4gd2hpY2ggdHlwZSB0eXBlIHNob3VsZCBiZSBzZWFyY2hlZC5cbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKi9cbmNvbnN0IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSA9IChub2RlOiB0cy5Ob2RlKTogdHMuTm9kZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChub2RlLmdldENoaWxkQ291bnQoKSA9PSAwKSB7XG4gICAgaWYgKCF0cy5pc0lkZW50aWZpZXIobm9kZSkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gU2luY2Ugd2UgcHV0IHRoZSBfXzxJREVOVElGSUVSPl9fIHR5cGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGVcbiAgICAvLyBmaWxlLCB3ZSBjYW4gcmV0dXJuIHRoZSBmaXJzdCBpZGVudGlmaWVyIHdlIGZpbmQuXG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZSk7XG59O1xuXG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgPSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBleHByZXNzaW9uIHRvIGV4cGFuZC5cbiAgICogQGV4YW1wbGUgXCJSZXR1cm5UeXBlPHR5cGVvZiBteUZ1bmN0aW9uPlwiXG4gICAqL1xuICB0eXBlRXhwcmVzc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IGNvbXBpbGVyIG9wdGlvbnMuXG4gICAqL1xuICB0c0NvbXBpbGVyT3B0aW9ucz86IHRzLkNvbXBpbGVyT3B0aW9ucztcblxuICAvKipcbiAgICogUHJldHRpZXIgb3B0aW9ucy5cbiAgICovXG4gIHByZXR0aWZ5Pzoge1xuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gcHJldHRpZnkgdGhlIG91dHB1dC5cbiAgICAgKiBAZGVmYXVsdCB0cnVlXG4gICAgICovXG4gICAgZW5hYmxlZD86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICogUHJldHRpZXIgb3B0aW9ucy4gRG9uJ3QgZm9yZ2V0IHRvIHNldCB0aGUgcGFyc2VyIHRvIFwidHlwZXNjcmlwdFwiLlxuICAgICAqIEBkZWZhdWx0IHsgcGFyc2VyOiBcInR5cGVzY3JpcHRcIiwgc2VtaTogZmFsc2UgfVxuICAgICAqL1xuICAgIG9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnM7XG4gIH07XG5cbiAgLyoqXG4gICAqIEEgcmVjb3JkIG9mIGZ1bmN0aW9ucyB0byBvdmVycmlkZSBpbiB0aGUgY29tcGlsZXIgaG9zdC4gVXNlZnVsIGZvciBtb2NraW5nXG4gICAqL1xuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBzb3VyY2UgZmlsZSB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlRmlsZU5hbWU6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogVHlwZVNjcmlwdCBzb3VyY2UgdGV4dCB0byBldmFsdWF0ZSB0aGUgdHlwZSBleHByZXNzaW9uIGluLlxuICAgKi9cbiAgc291cmNlVGV4dDogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZE15VHlwZU9wdGlvbnMgPVxuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnNcbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZVRleHRPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcblxuLyoqXG4gKiBFeHBhbmRzIGEgVHlwZVNjcmlwdCB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnNcbiAqIEByZXR1cm5zIFRoZSBleHBhbmRlZCB0eXBlIGV4cHJlc3Npb24uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUob3B0aW9uczogRXhwYW5kTXlUeXBlT3B0aW9ucykge1xuICBpZiAob3B0aW9ucy50eXBlRXhwcmVzc2lvbi50cmltKCkgPT09IFwiXCIpIHtcbiAgICByZXR1cm4gXCJuZXZlclwiO1xuICB9XG5cbiAgaWYgKFwic291cmNlVGV4dFwiIGluIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gZXhwYW5kTXlUeXBlKHtcbiAgICAgIHNvdXJjZUZpbGVOYW1lOiBcImR1bW15LnRzXCIsXG4gICAgICB0eXBlRXhwcmVzc2lvbjogb3B0aW9ucy50eXBlRXhwcmVzc2lvbixcbiAgICAgIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJlYWRGaWxlKCkge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLnNvdXJjZVRleHQ7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgdHNDb21waWxlck9wdGlvbnM6IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCByZXNvbHZlZFNvdXJjZUZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKG9wdGlvbnMuc291cmNlRmlsZU5hbWUpO1xuXG4gIGNvbnN0IHRzQ29tcGlsZXJPcHRpb25zID0gb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyA/PyB7XG4gICAgbm9FbWl0OiB0cnVlLFxuXG4gICAgYWxsb3dTeW50aGV0aWNEZWZhdWx0SW1wb3J0czogdHJ1ZSxcbiAgICBhbGxvd0FyYml0cmFyeUV4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dJbXBvcnRpbmdUc0V4dGVuc2lvbnM6IHRydWUsXG4gICAgYWxsb3dKczogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBjb21waWxlckhvc3QgPSBjcmVhdGVBdWdtZW50ZXJDb21waWxlckhvc3QoXG4gICAgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSxcbiAgICBjcmVhdGVFeHBhbmRDb2RlQmxvY2sob3B0aW9ucy50eXBlRXhwcmVzc2lvbiksXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgb3B0aW9ucy5jb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyxcbiAgKTtcblxuICBjb25zdCBwcm9ncmFtID0gdHMuY3JlYXRlUHJvZ3JhbShcbiAgICBbcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZV0sXG4gICAgdHNDb21waWxlck9wdGlvbnMsXG4gICAgY29tcGlsZXJIb3N0LFxuICApO1xuXG4gIGNvbnN0IHNvdXJjZUZpbGUgPSBwcm9ncmFtLmdldFNvdXJjZUZpbGUocmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSk7XG4gIGlmICghc291cmNlRmlsZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlNvdXJjZSBmaWxlIG5vdCBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCByZXN1bHRJZGVudGlmaWVyTm9kZSA9IGZpbmRSZXN1bHRJZGVudGlmaWVyTm9kZShzb3VyY2VGaWxlKTtcbiAgaWYgKCFyZXN1bHRJZGVudGlmaWVyTm9kZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIk5vIG5vZGUgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgdHlwZUNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IGV4cGFuZGVkVHlwZVN0cmluZyA9IHR5cGVDaGVja2VyLnR5cGVUb1N0cmluZyhcbiAgICB0eXBlQ2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihyZXN1bHRJZGVudGlmaWVyTm9kZSksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIiwgImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUW0tdPiA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcblxuICAgIC8vIEZvcmNlcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsIHR5cGVzIHRvIGJlIGV4cGFuZGVkXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFQgZXh0ZW5kcyBzdHJpbmc+ID0gJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8JHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VD4+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBcXGBcXCR7VH1fXFxgIGV4dGVuZHMgc3RyaW5nID8gXFxgXFwke1R9X1xcYCA6IG5ldmVyO1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgXFxgXFwke2luZmVyIFV9X1xcYCA/IFUgOiBuZXZlcjtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpbXBsZVR5cGVBbGlhcyA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHt0eXBlRXhwcmVzc2lvbn07YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWAsXG4gICAgICBwcmV0dGllck9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLHdCQUFlO0FBa0JSLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFDSCxRQUFNLHFCQUFxQixrQkFBQUEsUUFBRyxtQkFBbUIsbUJBQW1CLENBQUMsR0FBRyxJQUFJO0FBQzVFLGFBQVcsT0FBTyxPQUFPLEtBQUssaUNBQWlDLENBQUMsQ0FBQyxHQUFHO0FBQ2xFLHVCQUFtQixHQUFHLElBQUksOEJBQStCLEdBQUc7QUFBQSxFQUM5RDtBQUVBLFFBQU0sbUJBQW1CLG1CQUFtQjtBQUU1QyxxQkFBbUIsV0FBVyxDQUFDLGFBQWE7QUFDMUMsVUFBTSxXQUFXLGlCQUFpQixRQUFRO0FBRTFDLFFBQUksYUFBYSxRQUFXO0FBQzFCLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxhQUFhLGdCQUFnQjtBQUMvQixhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU8sR0FBRyxTQUFTO0FBQUEsRUFBSyxRQUFRO0FBQUEsRUFDbEM7QUFFQSxTQUFPO0FBQ1Q7OztBQzdDQSxzQkFBdUI7QUFFdkIsSUFBTSxtQkFBbUI7QUFFbEIsSUFBTSx3QkFBd0IsQ0FBQyxtQkFBMkI7QUFFL0QsU0FBTyxRQUFRLGdCQUFnQixZQUFZLGdCQUFnQixVQUFVLGdCQUFnQjtBQUFBLFdBQzVFLGdCQUFnQixnQkFBZ0IsY0FBYztBQUFBO0FBQUEsV0FFOUMsZ0JBQWdCO0FBQUEsb0JBQ1AsZ0JBQWdCLGlCQUFpQixnQkFBZ0I7QUFBQSxrREFDbkIsZ0JBQWdCLHdCQUF3QixnQkFBZ0I7QUFBQTtBQUFBO0FBQUEsV0FHL0YsZ0JBQWdCLG9DQUFvQyxnQkFBZ0Isb0JBQW9CLGdCQUFnQjtBQUFBLFdBQ3hHLGdCQUFnQjtBQUFBLFdBQ2hCLGdCQUFnQjtBQUMzQjtBQU1PLElBQU0sdUJBQXVCLE9BQ2xDLE1BQ0Esb0JBQ0c7QUFDSCxVQUNFLFVBQU07QUFBQSxJQUNKLFFBQVEsZ0JBQWdCLE1BQU0sSUFBSTtBQUFBLElBQ2xDLG1CQUFtQjtBQUFBLE1BQ2pCLFFBQVE7QUFBQSxNQUNSLE1BQU07QUFBQSxJQUNSO0FBQUEsRUFDRixHQUVDLEtBQUssRUFDTCxVQUFVLFFBQVEsZ0JBQWdCLE1BQU0sTUFBTTtBQUNuRDs7O0FGakNBLHVCQUFpQjtBQUVqQixJQUFBQyxxQkFBZTtBQVFmLElBQU0sMkJBQTJCLENBQUMsU0FBdUM7QUFDdkUsTUFBSSxLQUFLLGNBQWMsS0FBSyxHQUFHO0FBQzdCLFFBQUksQ0FBQyxtQkFBQUMsUUFBRyxhQUFhLElBQUksR0FBRztBQUMxQixhQUFPO0FBQUEsSUFDVDtBQUlBLFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxtQkFBQUEsUUFBRyxhQUFhLE1BQU0sd0JBQXdCO0FBQ3ZEO0FBZ0VBLGVBQXNCLGFBQWEsU0FBOEI7QUFDL0QsTUFBSSxRQUFRLGVBQWUsS0FBSyxNQUFNLElBQUk7QUFDeEMsV0FBTztBQUFBLEVBQ1Q7QUFFQSxNQUFJLGdCQUFnQixTQUFTO0FBQzNCLFdBQU8sYUFBYTtBQUFBLE1BQ2xCLGdCQUFnQjtBQUFBLE1BQ2hCLGdCQUFnQixRQUFRO0FBQUEsTUFDeEIsK0JBQStCO0FBQUEsUUFDN0IsV0FBVztBQUNULGlCQUFPLFFBQVE7QUFBQSxRQUNqQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLG1CQUFtQixRQUFRO0FBQUEsSUFDN0IsQ0FBQztBQUFBLEVBQ0g7QUFFQSxRQUFNLHlCQUF5QixpQkFBQUMsUUFBSyxRQUFRLFFBQVEsY0FBYztBQUVsRSxRQUFNLG9CQUFvQixRQUFRLHFCQUFxQjtBQUFBLElBQ3JELFFBQVE7QUFBQSxJQUVSLDhCQUE4QjtBQUFBLElBQzlCLDBCQUEwQjtBQUFBLElBQzFCLDRCQUE0QjtBQUFBLElBQzVCLFNBQVM7QUFBQSxFQUNYO0FBRUEsUUFBTSxlQUFlO0FBQUEsSUFDbkI7QUFBQSxJQUNBLHNCQUFzQixRQUFRLGNBQWM7QUFBQSxJQUM1QztBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Y7QUFFQSxRQUFNLFVBQVUsbUJBQUFELFFBQUc7QUFBQSxJQUNqQixDQUFDLHNCQUFzQjtBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUMvRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBRUEsUUFBTSx1QkFBdUIseUJBQXlCLFVBQVU7QUFDaEUsTUFBSSxDQUFDLHNCQUFzQjtBQUN6QixVQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUNsQztBQUVBLFFBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsUUFBTSxxQkFBcUIsWUFBWTtBQUFBLElBQ3JDLFlBQVksa0JBQWtCLG9CQUFvQjtBQUFBLElBQ2xEO0FBQUEsSUFDQSxtQkFBQUEsUUFBRyxnQkFBZ0I7QUFBQSxFQUNyQjtBQUVBLE1BQUksUUFBUSxZQUFZLFFBQVEsU0FBUyxZQUFZLE9BQU87QUFDMUQsV0FBTztBQUFBLEVBQ1Q7QUFFQSxTQUFPLHFCQUFxQixvQkFBb0IsUUFBUSxVQUFVLE9BQU87QUFDM0U7IiwKICAibmFtZXMiOiBbInRzIiwgImltcG9ydF90eXBlc2NyaXB0IiwgInRzIiwgInBhdGgiXQp9Cg==
package/dist/index.js CHANGED
@@ -29,7 +29,12 @@ var createExpandCodeBlock = (typeExpression) => {
29
29
 
30
30
  type ${identifierPrefix}Expand<T> = T extends (...args: infer A) => infer R
31
31
  ? (...args: ${identifierPrefix}Expand<A>) => ${identifierPrefix}Expand<R>
32
- : { [K in keyof T]: ${identifierPrefix}Expand<T[K]>; } & {};`;
32
+ : { [K in keyof T]: T[K] extends string ? ${identifierPrefix}ExpandString<T[K]> : ${identifierPrefix}Expand<T[K]>; } & {};
33
+
34
+ // Forces a union of string literal types to be expanded
35
+ type ${identifierPrefix}ExpandString<T extends string> = ${identifierPrefix}RemoveUnderscore<${identifierPrefix}AppendUnderscore<T>>;
36
+ type ${identifierPrefix}AppendUnderscore<T extends string> = \`\${T}_\` extends string ? \`\${T}_\` : never;
37
+ type ${identifierPrefix}RemoveUnderscore<T extends string> = T extends \`\${infer U}_\` ? U : never;`;
33
38
  };
34
39
  var formatTypeExpression = async (code, prettierOptions) => {
35
40
  return (await format(
@@ -44,14 +49,14 @@ var formatTypeExpression = async (code, prettierOptions) => {
44
49
  // src/index.ts
45
50
  import path from "node:path";
46
51
  import ts2 from "typescript";
47
- var findTypeExpanderResultNode = (node) => {
52
+ var findResultIdentifierNode = (node) => {
48
53
  if (node.getChildCount() == 0) {
49
54
  if (!ts2.isIdentifier(node)) {
50
55
  return void 0;
51
56
  }
52
57
  return node;
53
58
  }
54
- return ts2.forEachChild(node, findTypeExpanderResultNode);
59
+ return ts2.forEachChild(node, findResultIdentifierNode);
55
60
  };
56
61
  async function expandMyType(options) {
57
62
  if (options.typeExpression.trim() === "") {
@@ -92,13 +97,13 @@ async function expandMyType(options) {
92
97
  if (!sourceFile) {
93
98
  throw new Error("Source file not found!");
94
99
  }
95
- const firstIdentifier = findTypeExpanderResultNode(sourceFile);
96
- if (!firstIdentifier) {
100
+ const resultIdentifierNode = findResultIdentifierNode(sourceFile);
101
+ if (!resultIdentifierNode) {
97
102
  throw new Error("No node found!");
98
103
  }
99
104
  const typeChecker = program.getTypeChecker();
100
105
  const expandedTypeString = typeChecker.typeToString(
101
- typeChecker.getTypeAtLocation(firstIdentifier),
106
+ typeChecker.getTypeAtLocation(resultIdentifierNode),
102
107
  void 0,
103
108
  ts2.TypeFormatFlags.NodeBuilderFlagsMask
104
109
  );
@@ -110,4 +115,4 @@ async function expandMyType(options) {
110
115
  export {
111
116
  expandMyType
112
117
  };
113
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kPFRbS10+OyB9ICYge307YDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVTaW1wbGVUeXBlQWxpYXMgPSAodHlwZUV4cHJlc3Npb246IHN0cmluZykgPT4ge1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7dHlwZUV4cHJlc3Npb259O2A7XG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0VHlwZUV4cHJlc3Npb24gPSBhc3luYyAoXG4gIGNvZGU6IHN0cmluZyxcbiAgcHJldHRpZXJPcHRpb25zPzogUHJldHRpZXJPcHRpb25zLFxuKSA9PiB7XG4gIHJldHVybiAoXG4gICAgYXdhaXQgZm9ybWF0KFxuICAgICAgYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9ICR7Y29kZX1gLFxuICAgICAgcHJldHRpZXJPcHRpb25zID8/IHtcbiAgICAgICAgcGFyc2VyOiBcInR5cGVzY3JpcHRcIixcbiAgICAgICAgc2VtaTogZmFsc2UsXG4gICAgICB9LFxuICAgIClcbiAgKVxuICAgIC50cmltKClcbiAgICAuc3Vic3RyaW5nKGB0eXBlICR7aWRlbnRpZmllclByZWZpeH0gPSBgLmxlbmd0aCk7XG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdCB9IGZyb20gXCIuL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzXCI7XG5pbXBvcnQgeyB0eXBlIENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7XG4gIGNyZWF0ZUV4cGFuZENvZGVCbG9jayxcbiAgZm9ybWF0VHlwZUV4cHJlc3Npb24sXG59IGZyb20gXCIuL2NvZGUtZ2VuZXJhdG9yLnRzXCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgdHlwZSB7IE9wdGlvbnMgYXMgUHJldHRpZXJPcHRpb25zIH0gZnJvbSBcInByZXR0aWVyXCI7XG5pbXBvcnQgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuLyoqXG4gKiBGaW5kcyB0aGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0aGUgVFlQRV9FWFBBTkRFUl9SRVNVTFQgdHlwZSBzaG91bGQgYmUgc2VhcmNoZWQuXG4gKiBAcmV0dXJucyBUaGUgbm9kZSB0aGF0IHJlcHJlc2VudHMgdGhlIFRZUEVfRVhQQU5ERVJfUkVTVUxUIHR5cGUuXG4gKi9cbmNvbnN0IGZpbmRUeXBlRXhwYW5kZXJSZXN1bHROb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fPElERU5USUZJRVI+X18gdHlwZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgIC8vIGZpbGUsIHdlIGNhbiByZXR1cm4gdGhlIGZpcnN0IGlkZW50aWZpZXIgd2UgZmluZC5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUpO1xufTtcblxuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZU9wdGlvbnNCYXNlID0ge1xuICAvKipcbiAgICogVGhlIHR5cGUgZXhwcmVzc2lvbiB0byBleHBhbmQuXG4gICAqIEBleGFtcGxlIFwiUmV0dXJuVHlwZTx0eXBlb2YgbXlGdW5jdGlvbj5cIlxuICAgKi9cbiAgdHlwZUV4cHJlc3Npb246IHN0cmluZztcblxuICAvKipcbiAgICogVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICAgKi9cbiAgdHNDb21waWxlck9wdGlvbnM/OiB0cy5Db21waWxlck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFByZXR0aWVyIG9wdGlvbnMuXG4gICAqL1xuICBwcmV0dGlmeT86IHtcbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIHRvIHByZXR0aWZ5IHRoZSBvdXRwdXQuXG4gICAgICogQGRlZmF1bHQgdHJ1ZVxuICAgICAqL1xuICAgIGVuYWJsZWQ/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFByZXR0aWVyIG9wdGlvbnMuIERvbid0IGZvcmdldCB0byBzZXQgdGhlIHBhcnNlciB0byBcInR5cGVzY3JpcHRcIi5cbiAgICAgKiBAZGVmYXVsdCB7IHBhcnNlcjogXCJ0eXBlc2NyaXB0XCIsIHNlbWk6IGZhbHNlIH1cbiAgICAgKi9cbiAgICBvcHRpb25zPzogUHJldHRpZXJPcHRpb25zO1xuICB9O1xuXG4gIC8qKlxuICAgKiBBIHJlY29yZCBvZiBmdW5jdGlvbnMgdG8gb3ZlcnJpZGUgaW4gdGhlIGNvbXBpbGVyIGhvc3QuIFVzZWZ1bCBmb3IgbW9ja2luZ1xuICAgKi9cbiAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM/OiBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zID0gRXhwYW5kVHlwZU9wdGlvbnNCYXNlICYge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc291cmNlIGZpbGUgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZUZpbGVOYW1lOiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgc291cmNlIHRleHQgdG8gZXZhbHVhdGUgdGhlIHR5cGUgZXhwcmVzc2lvbiBpbi5cbiAgICovXG4gIHNvdXJjZVRleHQ6IHN0cmluZztcbn07XG5leHBvcnQgdHlwZSBFeHBhbmRNeVR5cGVPcHRpb25zID1cbiAgfCBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zXG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShcbiAgb3B0aW9uczogRXhwYW5kVHlwZUZyb21Tb3VyY2VUZXh0T3B0aW9ucyxcbik6IFByb21pc2U8c3RyaW5nPjtcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlRmlsZU9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5cbi8qKlxuICogRXhwYW5kcyBhIFR5cGVTY3JpcHQgdHlwZSBleHByZXNzaW9uLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zXG4gKiBAcmV0dXJucyBUaGUgZXhwYW5kZWQgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKG9wdGlvbnM6IEV4cGFuZE15VHlwZU9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMudHlwZUV4cHJlc3Npb24udHJpbSgpID09PSBcIlwiKSB7XG4gICAgcmV0dXJuIFwibmV2ZXJcIjtcbiAgfVxuXG4gIGlmIChcInNvdXJjZVRleHRcIiBpbiBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGV4cGFuZE15VHlwZSh7XG4gICAgICBzb3VyY2VGaWxlTmFtZTogXCJkdW1teS50c1wiLFxuICAgICAgdHlwZUV4cHJlc3Npb246IG9wdGlvbnMudHlwZUV4cHJlc3Npb24sXG4gICAgICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlczoge1xuICAgICAgICByZWFkRmlsZSgpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9ucy5zb3VyY2VUZXh0O1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHRzQ29tcGlsZXJPcHRpb25zOiBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgcmVzb2x2ZWRTb3VyY2VGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShvcHRpb25zLnNvdXJjZUZpbGVOYW1lKTtcblxuICBjb25zdCB0c0NvbXBpbGVyT3B0aW9ucyA9IG9wdGlvbnMudHNDb21waWxlck9wdGlvbnMgPz8ge1xuICAgIG5vRW1pdDogdHJ1ZSxcblxuICAgIGFsbG93U3ludGhldGljRGVmYXVsdEltcG9ydHM6IHRydWUsXG4gICAgYWxsb3dBcmJpdHJhcnlFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SW1wb3J0aW5nVHNFeHRlbnNpb25zOiB0cnVlLFxuICAgIGFsbG93SnM6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJIb3N0ID0gY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0KFxuICAgIHJlc29sdmVkU291cmNlRmlsZU5hbWUsXG4gICAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrKG9wdGlvbnMudHlwZUV4cHJlc3Npb24pLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIG9wdGlvbnMuY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMsXG4gICk7XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0oXG4gICAgW3Jlc29sdmVkU291cmNlRmlsZU5hbWVdLFxuICAgIHRzQ29tcGlsZXJPcHRpb25zLFxuICAgIGNvbXBpbGVySG9zdCxcbiAgKTtcblxuICBjb25zdCBzb3VyY2VGaWxlID0gcHJvZ3JhbS5nZXRTb3VyY2VGaWxlKHJlc29sdmVkU291cmNlRmlsZU5hbWUpO1xuICBpZiAoIXNvdXJjZUZpbGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJTb3VyY2UgZmlsZSBub3QgZm91bmQhXCIpO1xuICB9XG5cbiAgY29uc3QgZmlyc3RJZGVudGlmaWVyID0gZmluZFR5cGVFeHBhbmRlclJlc3VsdE5vZGUoc291cmNlRmlsZSk7XG4gIGlmICghZmlyc3RJZGVudGlmaWVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGZpcnN0SWRlbnRpZmllciksXG4gICAgdW5kZWZpbmVkLFxuICAgIHRzLlR5cGVGb3JtYXRGbGFncy5Ob2RlQnVpbGRlckZsYWdzTWFzayxcbiAgKTtcblxuICBpZiAob3B0aW9ucy5wcmV0dGlmeSAmJiBvcHRpb25zLnByZXR0aWZ5LmVuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIGV4cGFuZGVkVHlwZVN0cmluZztcbiAgfVxuXG4gIHJldHVybiBmb3JtYXRUeXBlRXhwcmVzc2lvbihleHBhbmRlZFR5cGVTdHJpbmcsIG9wdGlvbnMucHJldHRpZnk/Lm9wdGlvbnMpO1xufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUFBLE9BQU8sUUFBUTtBQWtCUixJQUFNLDhCQUE4QixDQUN6QyxnQkFDQSxXQUNBLGlCQUNBLGtDQUNHO0FBQ0gsUUFBTSxxQkFBcUIsR0FBRyxtQkFBbUIsbUJBQW1CLENBQUMsR0FBRyxJQUFJO0FBQzVFLGFBQVcsT0FBTyxPQUFPLEtBQUssaUNBQWlDLENBQUMsQ0FBQyxHQUFHO0FBQ2xFLHVCQUFtQixHQUFHLElBQUksOEJBQStCLEdBQUc7QUFBQSxFQUM5RDtBQUVBLFFBQU0sbUJBQW1CLG1CQUFtQjtBQUU1QyxxQkFBbUIsV0FBVyxDQUFDLGFBQWE7QUFDMUMsVUFBTSxXQUFXLGlCQUFpQixRQUFRO0FBRTFDLFFBQUksYUFBYSxRQUFXO0FBQzFCLGFBQU87QUFBQSxJQUNUO0FBRUEsUUFBSSxhQUFhLGdCQUFnQjtBQUMvQixhQUFPO0FBQUEsSUFDVDtBQUVBLFdBQU8sR0FBRyxTQUFTO0FBQUEsRUFBSyxRQUFRO0FBQUEsRUFDbEM7QUFFQSxTQUFPO0FBQ1Q7OztBQzdDQSxTQUFTLGNBQWM7QUFFdkIsSUFBTSxtQkFBbUI7QUFFbEIsSUFBTSx3QkFBd0IsQ0FBQyxtQkFBMkI7QUFFL0QsU0FBTyxRQUFRLGdCQUFnQixZQUFZLGdCQUFnQixVQUFVLGdCQUFnQjtBQUFBLFdBQzVFLGdCQUFnQixnQkFBZ0IsY0FBYztBQUFBO0FBQUEsV0FFOUMsZ0JBQWdCO0FBQUEsb0JBQ1AsZ0JBQWdCLGlCQUFpQixnQkFBZ0I7QUFBQSw0QkFDekMsZ0JBQWdCO0FBQzVDO0FBTU8sSUFBTSx1QkFBdUIsT0FDbEMsTUFDQSxvQkFDRztBQUNILFVBQ0UsTUFBTTtBQUFBLElBQ0osUUFBUSxnQkFBZ0IsTUFBTSxJQUFJO0FBQUEsSUFDbEMsbUJBQW1CO0FBQUEsTUFDakIsUUFBUTtBQUFBLE1BQ1IsTUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGLEdBRUMsS0FBSyxFQUNMLFVBQVUsUUFBUSxnQkFBZ0IsTUFBTSxNQUFNO0FBQ25EOzs7QUM1QkEsT0FBTyxVQUFVO0FBRWpCLE9BQU9BLFNBQVE7QUFRZixJQUFNLDZCQUE2QixDQUFDLFNBQXVDO0FBQ3pFLE1BQUksS0FBSyxjQUFjLEtBQUssR0FBRztBQUM3QixRQUFJLENBQUNBLElBQUcsYUFBYSxJQUFJLEdBQUc7QUFDMUIsYUFBTztBQUFBLElBQ1Q7QUFJQSxXQUFPO0FBQUEsRUFDVDtBQUVBLFNBQU9BLElBQUcsYUFBYSxNQUFNLDBCQUEwQjtBQUN6RDtBQWdFQSxlQUFzQixhQUFhLFNBQThCO0FBQy9ELE1BQUksUUFBUSxlQUFlLEtBQUssTUFBTSxJQUFJO0FBQ3hDLFdBQU87QUFBQSxFQUNUO0FBRUEsTUFBSSxnQkFBZ0IsU0FBUztBQUMzQixXQUFPLGFBQWE7QUFBQSxNQUNsQixnQkFBZ0I7QUFBQSxNQUNoQixnQkFBZ0IsUUFBUTtBQUFBLE1BQ3hCLCtCQUErQjtBQUFBLFFBQzdCLFdBQVc7QUFDVCxpQkFBTyxRQUFRO0FBQUEsUUFDakI7QUFBQSxNQUNGO0FBQUEsTUFDQSxtQkFBbUIsUUFBUTtBQUFBLElBQzdCLENBQUM7QUFBQSxFQUNIO0FBRUEsUUFBTSx5QkFBeUIsS0FBSyxRQUFRLFFBQVEsY0FBYztBQUVsRSxRQUFNLG9CQUFvQixRQUFRLHFCQUFxQjtBQUFBLElBQ3JELFFBQVE7QUFBQSxJQUVSLDhCQUE4QjtBQUFBLElBQzlCLDBCQUEwQjtBQUFBLElBQzFCLDRCQUE0QjtBQUFBLElBQzVCLFNBQVM7QUFBQSxFQUNYO0FBRUEsUUFBTSxlQUFlO0FBQUEsSUFDbkI7QUFBQSxJQUNBLHNCQUFzQixRQUFRLGNBQWM7QUFBQSxJQUM1QztBQUFBLElBQ0EsUUFBUTtBQUFBLEVBQ1Y7QUFFQSxRQUFNLFVBQVVBLElBQUc7QUFBQSxJQUNqQixDQUFDLHNCQUFzQjtBQUFBLElBQ3ZCO0FBQUEsSUFDQTtBQUFBLEVBQ0Y7QUFFQSxRQUFNLGFBQWEsUUFBUSxjQUFjLHNCQUFzQjtBQUMvRCxNQUFJLENBQUMsWUFBWTtBQUNmLFVBQU0sSUFBSSxNQUFNLHdCQUF3QjtBQUFBLEVBQzFDO0FBRUEsUUFBTSxrQkFBa0IsMkJBQTJCLFVBQVU7QUFDN0QsTUFBSSxDQUFDLGlCQUFpQjtBQUNwQixVQUFNLElBQUksTUFBTSxnQkFBZ0I7QUFBQSxFQUNsQztBQUVBLFFBQU0sY0FBYyxRQUFRLGVBQWU7QUFDM0MsUUFBTSxxQkFBcUIsWUFBWTtBQUFBLElBQ3JDLFlBQVksa0JBQWtCLGVBQWU7QUFBQSxJQUM3QztBQUFBLElBQ0FBLElBQUcsZ0JBQWdCO0FBQUEsRUFDckI7QUFFQSxNQUFJLFFBQVEsWUFBWSxRQUFRLFNBQVMsWUFBWSxPQUFPO0FBQzFELFdBQU87QUFBQSxFQUNUO0FBRUEsU0FBTyxxQkFBcUIsb0JBQW9CLFFBQVEsVUFBVSxPQUFPO0FBQzNFOyIsCiAgIm5hbWVzIjogWyJ0cyJdCn0K
118
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2F1Z21lbnRlci1jb21waWxlci1ob3N0LnRzIiwgIi4uL3NyYy9jb2RlLWdlbmVyYXRvci50cyIsICIuLi9zcmMvaW5kZXgudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG50eXBlIEV4dHJhY3RGdW5jdGlvbnM8VCwgSyBleHRlbmRzIGtleW9mIFQgPSBrZXlvZiBUPiA9IHtcbiAgW1AgaW4gS106IFRbUF0gZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IGFueSA/IFRbUF0gOiBuZXZlcjtcbn07XG5leHBvcnQgdHlwZSBDb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA9IFBhcnRpYWw8XG4gIEV4dHJhY3RGdW5jdGlvbnM8dHMuQ29tcGlsZXJIb3N0PlxuPjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCBhdWdtZW50cyB0aGUgc3BlY2lmaWVkIHNvdXJjZSBmaWxlIGZvciBleHBhbmRpbmcgYSB0eXBlIGV4cHJlc3Npb24uXG4gKlxuICogQHBhcmFtIHNvdXJjZUZpbGVOYW1lIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGF1Z21lbnQuXG4gKiBAcGFyYW0gY29kZVRvQWRkIFR5cGUgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSBjb21waWxlck9wdGlvbnMgVHlwZVNjcmlwdCBjb21waWxlciBvcHRpb25zLlxuICogQHBhcmFtIHJlYWRGaWxlRnVuY3Rpb25cbiAqIEByZXR1cm5zIEEgY3VzdG9tIGNvbXBpbGVyIGhvc3QgdGhhdCByZXR1cm5zIGFuIGF1Z21lbnRlZCBzb3VyY2UgZmlsZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGV4cGFuZCB0aGUgdHlwZSBleHByZXNzaW9uLlxuICovXG5leHBvcnQgY29uc3QgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0ID0gKFxuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nLFxuICBjb2RlVG9BZGQ6IHN0cmluZyxcbiAgY29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zLFxuICBjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcz86IENvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuKSA9PiB7XG4gIGNvbnN0IGN1c3RvbUNvbXBpbGVySG9zdCA9IHRzLmNyZWF0ZUNvbXBpbGVySG9zdChjb21waWxlck9wdGlvbnMgPz8ge30sIHRydWUpO1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb21waWxlckhvc3RGdW5jdGlvbk92ZXJyaWRlcyA/PyB7fSkpIHtcbiAgICBjdXN0b21Db21waWxlckhvc3Rba2V5XSA9IGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzIVtrZXldO1xuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxSZWFkRmlsZSA9IGN1c3RvbUNvbXBpbGVySG9zdC5yZWFkRmlsZTtcblxuICBjdXN0b21Db21waWxlckhvc3QucmVhZEZpbGUgPSAoZmlsZU5hbWUpID0+IHtcbiAgICBjb25zdCBjb250ZW50cyA9IG9yaWdpbmFsUmVhZEZpbGUoZmlsZU5hbWUpO1xuXG4gICAgaWYgKGNvbnRlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBjb250ZW50cztcbiAgICB9XG5cbiAgICBpZiAoZmlsZU5hbWUgIT09IHNvdXJjZUZpbGVOYW1lKSB7XG4gICAgICByZXR1cm4gY29udGVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke2NvZGVUb0FkZH1cXG4ke2NvbnRlbnRzfWA7XG4gIH07XG5cbiAgcmV0dXJuIGN1c3RvbUNvbXBpbGVySG9zdDtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFByZXR0aWVyT3B0aW9ucyB9IGZyb20gXCJwcmV0dGllclwiO1xuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSBcInByZXR0aWVyXCI7XG5cbmNvbnN0IGlkZW50aWZpZXJQcmVmaXggPSBcIl9fRVhQQU5EX01ZX1RZUEVfX1wiO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRXhwYW5kQ29kZUJsb2NrID0gKHR5cGVFeHByZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFpbi90ZXN0cy9jYXNlcy9jb21waWxlci9jb21wdXRlZFR5cGVzS2V5b2ZOb0luZGV4U2lnbmF0dXJlVHlwZS50c1xuICByZXR1cm4gYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlc3VsdCA9ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8JHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cHJlc3Npb24gPSAke3R5cGVFeHByZXNzaW9ufTtcblxuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxUPiA9IFQgZXh0ZW5kcyAoLi4uYXJnczogaW5mZXIgQSkgPT4gaW5mZXIgUlxuICAgICAgPyAoLi4uYXJnczogJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxBPikgPT4gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZDxSPlxuICAgICAgOiB7IFtLIGluIGtleW9mIFRdOiBUW0tdIGV4dGVuZHMgc3RyaW5nID8gJHtpZGVudGlmaWVyUHJlZml4fUV4cGFuZFN0cmluZzxUW0tdPiA6ICR7aWRlbnRpZmllclByZWZpeH1FeHBhbmQ8VFtLXT47IH0gJiB7fTtcblxuICAgIC8vIEZvcmNlcyBhIHVuaW9uIG9mIHN0cmluZyBsaXRlcmFsIHR5cGVzIHRvIGJlIGV4cGFuZGVkXG4gICAgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9RXhwYW5kU3RyaW5nPFQgZXh0ZW5kcyBzdHJpbmc+ID0gJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8JHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VD4+O1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fUFwcGVuZFVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBcXGBcXCR7VH1fXFxgIGV4dGVuZHMgc3RyaW5nID8gXFxgXFwke1R9X1xcYCA6IG5ldmVyO1xuICAgIHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fVJlbW92ZVVuZGVyc2NvcmU8VCBleHRlbmRzIHN0cmluZz4gPSBUIGV4dGVuZHMgXFxgXFwke2luZmVyIFV9X1xcYCA/IFUgOiBuZXZlcjtgO1xufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVNpbXBsZVR5cGVBbGlhcyA9ICh0eXBlRXhwcmVzc2lvbjogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9UmVzdWx0ID0gJHt0eXBlRXhwcmVzc2lvbn07YDtcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRUeXBlRXhwcmVzc2lvbiA9IGFzeW5jIChcbiAgY29kZTogc3RyaW5nLFxuICBwcmV0dGllck9wdGlvbnM/OiBQcmV0dGllck9wdGlvbnMsXG4pID0+IHtcbiAgcmV0dXJuIChcbiAgICBhd2FpdCBmb3JtYXQoXG4gICAgICBgdHlwZSAke2lkZW50aWZpZXJQcmVmaXh9ID0gJHtjb2RlfWAsXG4gICAgICBwcmV0dGllck9wdGlvbnMgPz8ge1xuICAgICAgICBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBzZW1pOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgKVxuICApXG4gICAgLnRyaW0oKVxuICAgIC5zdWJzdHJpbmcoYHR5cGUgJHtpZGVudGlmaWVyUHJlZml4fSA9IGAubGVuZ3RoKTtcbn07XG4iLCAiaW1wb3J0IHsgY3JlYXRlQXVnbWVudGVyQ29tcGlsZXJIb3N0IH0gZnJvbSBcIi4vYXVnbWVudGVyLWNvbXBpbGVyLWhvc3QudHNcIjtcbmltcG9ydCB7IHR5cGUgQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXMgfSBmcm9tIFwiLi9hdWdtZW50ZXItY29tcGlsZXItaG9zdC50c1wiO1xuaW1wb3J0IHtcbiAgY3JlYXRlRXhwYW5kQ29kZUJsb2NrLFxuICBmb3JtYXRUeXBlRXhwcmVzc2lvbixcbn0gZnJvbSBcIi4vY29kZS1nZW5lcmF0b3IudHNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB0eXBlIHsgT3B0aW9ucyBhcyBQcmV0dGllck9wdGlvbnMgfSBmcm9tIFwicHJldHRpZXJcIjtcbmltcG9ydCB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG4vKipcbiAqIEZpbmRzIHRoZSByZXN1bHQgdHlwZSBpZGVudGlmaWVyIG5vZGUuXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSBpbiB3aGljaCB0eXBlIHR5cGUgc2hvdWxkIGJlIHNlYXJjaGVkLlxuICogQHJldHVybnMgVGhlIHJlc3VsdCB0eXBlIGlkZW50aWZpZXIgbm9kZS5cbiAqL1xuY29uc3QgZmluZFJlc3VsdElkZW50aWZpZXJOb2RlID0gKG5vZGU6IHRzLk5vZGUpOiB0cy5Ob2RlIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vZGUuZ2V0Q2hpbGRDb3VudCgpID09IDApIHtcbiAgICBpZiAoIXRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBTaW5jZSB3ZSBwdXQgdGhlIF9fPElERU5USUZJRVI+X18gdHlwZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZVxuICAgIC8vIGZpbGUsIHdlIGNhbiByZXR1cm4gdGhlIGZpcnN0IGlkZW50aWZpZXIgd2UgZmluZC5cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFJlc3VsdElkZW50aWZpZXJOb2RlKTtcbn07XG5cbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVPcHRpb25zQmFzZSA9IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIGV4cHJlc3Npb24gdG8gZXhwYW5kLlxuICAgKiBAZXhhbXBsZSBcIlJldHVyblR5cGU8dHlwZW9mIG15RnVuY3Rpb24+XCJcbiAgICovXG4gIHR5cGVFeHByZXNzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGVTY3JpcHQgY29tcGlsZXIgb3B0aW9ucy5cbiAgICovXG4gIHRzQ29tcGlsZXJPcHRpb25zPzogdHMuQ29tcGlsZXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQcmV0dGllciBvcHRpb25zLlxuICAgKi9cbiAgcHJldHRpZnk/OiB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0byBwcmV0dGlmeSB0aGUgb3V0cHV0LlxuICAgICAqIEBkZWZhdWx0IHRydWVcbiAgICAgKi9cbiAgICBlbmFibGVkPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBQcmV0dGllciBvcHRpb25zLiBEb24ndCBmb3JnZXQgdG8gc2V0IHRoZSBwYXJzZXIgdG8gXCJ0eXBlc2NyaXB0XCIuXG4gICAgICogQGRlZmF1bHQgeyBwYXJzZXI6IFwidHlwZXNjcmlwdFwiLCBzZW1pOiBmYWxzZSB9XG4gICAgICovXG4gICAgb3B0aW9ucz86IFByZXR0aWVyT3B0aW9ucztcbiAgfTtcblxuICAvKipcbiAgICogQSByZWNvcmQgb2YgZnVuY3Rpb25zIHRvIG92ZXJyaWRlIGluIHRoZSBjb21waWxlciBob3N0LiBVc2VmdWwgZm9yIG1vY2tpbmdcbiAgICovXG4gIGNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzPzogQ29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9ucyA9IEV4cGFuZFR5cGVPcHRpb25zQmFzZSAmIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHNvdXJjZSBmaWxlIHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VGaWxlTmFtZTogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMgPSBFeHBhbmRUeXBlT3B0aW9uc0Jhc2UgJiB7XG4gIC8qKlxuICAgKiBUeXBlU2NyaXB0IHNvdXJjZSB0ZXh0IHRvIGV2YWx1YXRlIHRoZSB0eXBlIGV4cHJlc3Npb24gaW4uXG4gICAqL1xuICBzb3VyY2VUZXh0OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgRXhwYW5kTXlUeXBlT3B0aW9ucyA9XG4gIHwgRXhwYW5kVHlwZUZyb21Tb3VyY2VGaWxlT3B0aW9uc1xuICB8IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnM7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBleHBhbmRNeVR5cGUoXG4gIG9wdGlvbnM6IEV4cGFuZFR5cGVGcm9tU291cmNlVGV4dE9wdGlvbnMsXG4pOiBQcm9taXNlPHN0cmluZz47XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZXhwYW5kTXlUeXBlKFxuICBvcHRpb25zOiBFeHBhbmRUeXBlRnJvbVNvdXJjZUZpbGVPcHRpb25zLFxuKTogUHJvbWlzZTxzdHJpbmc+O1xuXG4vKipcbiAqIEV4cGFuZHMgYSBUeXBlU2NyaXB0IHR5cGUgZXhwcmVzc2lvbi5cbiAqXG4gKiBAcGFyYW0gb3B0aW9uc1xuICogQHJldHVybnMgVGhlIGV4cGFuZGVkIHR5cGUgZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGV4cGFuZE15VHlwZShvcHRpb25zOiBFeHBhbmRNeVR5cGVPcHRpb25zKSB7XG4gIGlmIChvcHRpb25zLnR5cGVFeHByZXNzaW9uLnRyaW0oKSA9PT0gXCJcIikge1xuICAgIHJldHVybiBcIm5ldmVyXCI7XG4gIH1cblxuICBpZiAoXCJzb3VyY2VUZXh0XCIgaW4gb3B0aW9ucykge1xuICAgIHJldHVybiBleHBhbmRNeVR5cGUoe1xuICAgICAgc291cmNlRmlsZU5hbWU6IFwiZHVtbXkudHNcIixcbiAgICAgIHR5cGVFeHByZXNzaW9uOiBvcHRpb25zLnR5cGVFeHByZXNzaW9uLFxuICAgICAgY29tcGlsZXJIb3N0RnVuY3Rpb25PdmVycmlkZXM6IHtcbiAgICAgICAgcmVhZEZpbGUoKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbnMuc291cmNlVGV4dDtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0c0NvbXBpbGVyT3B0aW9uczogb3B0aW9ucy50c0NvbXBpbGVyT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkU291cmNlRmlsZU5hbWUgPSBwYXRoLnJlc29sdmUob3B0aW9ucy5zb3VyY2VGaWxlTmFtZSk7XG5cbiAgY29uc3QgdHNDb21waWxlck9wdGlvbnMgPSBvcHRpb25zLnRzQ29tcGlsZXJPcHRpb25zID8/IHtcbiAgICBub0VtaXQ6IHRydWUsXG5cbiAgICBhbGxvd1N5bnRoZXRpY0RlZmF1bHRJbXBvcnRzOiB0cnVlLFxuICAgIGFsbG93QXJiaXRyYXJ5RXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0ltcG9ydGluZ1RzRXh0ZW5zaW9uczogdHJ1ZSxcbiAgICBhbGxvd0pzOiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IGNvbXBpbGVySG9zdCA9IGNyZWF0ZUF1Z21lbnRlckNvbXBpbGVySG9zdChcbiAgICByZXNvbHZlZFNvdXJjZUZpbGVOYW1lLFxuICAgIGNyZWF0ZUV4cGFuZENvZGVCbG9jayhvcHRpb25zLnR5cGVFeHByZXNzaW9uKSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBvcHRpb25zLmNvbXBpbGVySG9zdEZ1bmN0aW9uT3ZlcnJpZGVzLFxuICApO1xuXG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKFxuICAgIFtyZXNvbHZlZFNvdXJjZUZpbGVOYW1lXSxcbiAgICB0c0NvbXBpbGVyT3B0aW9ucyxcbiAgICBjb21waWxlckhvc3QsXG4gICk7XG5cbiAgY29uc3Qgc291cmNlRmlsZSA9IHByb2dyYW0uZ2V0U291cmNlRmlsZShyZXNvbHZlZFNvdXJjZUZpbGVOYW1lKTtcbiAgaWYgKCFzb3VyY2VGaWxlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiU291cmNlIGZpbGUgbm90IGZvdW5kIVwiKTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdElkZW50aWZpZXJOb2RlID0gZmluZFJlc3VsdElkZW50aWZpZXJOb2RlKHNvdXJjZUZpbGUpO1xuICBpZiAoIXJlc3VsdElkZW50aWZpZXJOb2RlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTm8gbm9kZSBmb3VuZCFcIik7XG4gIH1cblxuICBjb25zdCB0eXBlQ2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcbiAgY29uc3QgZXhwYW5kZWRUeXBlU3RyaW5nID0gdHlwZUNoZWNrZXIudHlwZVRvU3RyaW5nKFxuICAgIHR5cGVDaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKHJlc3VsdElkZW50aWZpZXJOb2RlKSxcbiAgICB1bmRlZmluZWQsXG4gICAgdHMuVHlwZUZvcm1hdEZsYWdzLk5vZGVCdWlsZGVyRmxhZ3NNYXNrLFxuICApO1xuXG4gIGlmIChvcHRpb25zLnByZXR0aWZ5ICYmIG9wdGlvbnMucHJldHRpZnkuZW5hYmxlZCA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gZXhwYW5kZWRUeXBlU3RyaW5nO1xuICB9XG5cbiAgcmV0dXJuIGZvcm1hdFR5cGVFeHByZXNzaW9uKGV4cGFuZGVkVHlwZVN0cmluZywgb3B0aW9ucy5wcmV0dGlmeT8ub3B0aW9ucyk7XG59XG4iXSwKICAibWFwcGluZ3MiOiAiO0FBQUEsT0FBTyxRQUFRO0FBa0JSLElBQU0sOEJBQThCLENBQ3pDLGdCQUNBLFdBQ0EsaUJBQ0Esa0NBQ0c7QUFDSCxRQUFNLHFCQUFxQixHQUFHLG1CQUFtQixtQkFBbUIsQ0FBQyxHQUFHLElBQUk7QUFDNUUsYUFBVyxPQUFPLE9BQU8sS0FBSyxpQ0FBaUMsQ0FBQyxDQUFDLEdBQUc7QUFDbEUsdUJBQW1CLEdBQUcsSUFBSSw4QkFBK0IsR0FBRztBQUFBLEVBQzlEO0FBRUEsUUFBTSxtQkFBbUIsbUJBQW1CO0FBRTVDLHFCQUFtQixXQUFXLENBQUMsYUFBYTtBQUMxQyxVQUFNLFdBQVcsaUJBQWlCLFFBQVE7QUFFMUMsUUFBSSxhQUFhLFFBQVc7QUFDMUIsYUFBTztB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expand-my-type",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Expand TypeScript type expressions programmatically",
5
5
  "keywords": [
6
6
  "expand",
@@ -57,9 +57,9 @@
57
57
  "devDependencies": {
58
58
  "@trivago/prettier-plugin-sort-imports": "^4.3.0",
59
59
  "@types/node": "^20.12.12",
60
- "npm-check-updates": "^16.14.18",
61
- "prettier-plugin-packagejson": "^2.4.14",
60
+ "npm-check-updates": "^16.14.20",
61
+ "prettier-plugin-packagejson": "^2.5.0",
62
62
  "tsup": "^8.0.2",
63
- "tsx": "^4.10.5"
63
+ "tsx": "^4.11.0"
64
64
  }
65
65
  }